- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hibernate(冬眠)
Hibernate的价值在于,对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
Hibernate 是一个优秀的Java持久层解决方案,是当今主流的对象——关系映射工具
什么是持久解决方案,什么又是对象——关系映射?
程序在运行的时候,有些数据保存在内存中,当程序退出后,这些数据就不复存在了,我们称这些数据的状态为瞬时(Transient)的。有些数据,在程序退出后,还以文件的形式保存在存储设备中,我们称这些数据的状态是持久的(Persistent)
持久化是将程序中的数据在瞬时状态和持久状态间转换的机制。
在三层架构中DAO层(数据访问层)有时候也称为持久化层,这一层承担的主要工作就是将数据保存到数据库中或把数据从数据库中读取出来。
我们持久化的工作主要在O(Object,对象)和R(Relation Database,关系型数据)之间完成。
我们在编写程序的时候,以面向对象的方式处理数据;保存数据的时候,却以关系型数据库的方式存储,所以,客观上我们需要一种能在两者间进行转换的机制,这样的机制称为对象——关系映射机制(O/R Mapping,ORM),这个机制保存对象和关系数据库表的映射信息,当数据在对象和关系数据库中转化的时候,协助正确地完成转换
综上所述,Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他能很大程度的简化DAO层的编码工作
Hibernate执行持久化操作的步骤
步骤
操作
代码
与JDBC类比
1
读取并解析配置文件
Configuration conf = new Configuration().configutration()
相当于使用DataSource获取连接前读取DataSource的配置文件
2
读取并解析映射信息,创建SessionFactory
SessionFactory sf = conf.buildSessionFactory();
相当于创建DataSouce对象
3
打开Session
Session session = sf.openSession()
相当于获得连接
4
开始一个事务(增删改必须,查询可选)
Transaction tx = session.beginTransaction()
开始事务
5
持久化操作
Session.save(user);
持久化操作
6
提交事务
mit()
提交事务
7
关闭Session
Session.close()
关闭连接
关联关系的映射配置
1、 单向多对一关联的映射
2、 单向一对多关联的映射
3、 双向一对多关联的映射
配置关联时,我们需要考虑两点:程序执行效率和实际业务的需求
Hibernate查询
支持两种主要的查询方式:HQL (Hibernate Query Languag,Hibernate查询语言)查询和Criteria查询。
HQL是一种面向对象的查询语言,其中没有字段和表的概念,只有类、对象和属性的概念。
Criteria查询又称为“对象查询”,他用面向对象的方式将构造查询的过程做了封装。
HQL是Hibernate提供的一种面向对象的查询语言,使用HQL可以避免使用JDBC查询的一些弊端。首先,不需要编写繁复的SQL语句,我们将针对实体类及其属性进行查询,其次查询结果是直接放在List中的对象,不需要再次封装。
如何使用HQL:
(1) 得到Session;(2)编写HQL语句;(3)创建Query对象;(4)执行查询,得到结果
Session session = this.getSession();//得到Session
String hql = “FROM TblFwxx”;//编写HQL
Query q = session.createQuery(hql);//创建Query对象
List list = query.list();//执行查询,得到结果
HQL支持的查询方式:
1、 属性查询
2、 参数查询、命名参数查询
String hql = “FROM TblFwxx fw WHERE fw.zj:zj1 AND fw.zj=:zj2”;
Query query = session.createQuery(hql);
query.setInteger(“zj1”,zj1)
query.setInteger(“zj2”,zj2);
query.list();
命名参数采用“:参数名”的格式定义参数,然后通过名称逐个设置参数的值。这样程序的可读性和可维护性都增强了。
3、 关联查询
4、 分页查询
5、 统计函数
为什么使用Criteria查询
Criteria查询(对象查询)采用面向对象的方式(主要是Crit
文档评论(0)