文档介绍:北京传智播客教育
Hibernate原理与应用
讲师:李勇
北京传智播客教育
主要内容
引入
安装配置
基本概念和CURD
HQL和Criteria
关联映射
继承映射
集合映射
懒加载
缓存
事务
其他
Hibernate不适合的场景
与JPA的集成(annotation方式)
最佳实践
北京传智播客教育
引入
模型不匹配(阻抗不匹配)
Java面向对象语言,对象模型,其主要概念有:继承、关联、多态等;数据库是关系模型,其主要概念有:表、主键、外键等。
解决办法
1使用JDBC手工转换。
2使用ORM(Object Relation Mapping对象关系映射)框架来解决,主流的ORM框架有Hibernate、TopLink、OJB。
北京传智播客教育
安装配置
。
将下载目录/:
,,--,,
北京传智播客教育
安装配置
,XML和properties两种,这两个文件的作用一样,提供一个即可,推荐XML格式,下载目录/etc下是示例配置文件。
可以在配置文件指定:
数据库的URL、用户名、密码、JDBC驱动类、方言等。
启动时Hibernate会在CLASSPATH里找这个配置文件。
映射文件(,对象模型和关系模型的映射)。在/eg目录下有完整的hibernate示例。
快速开始小例子
北京传智播客教育
基本概念和CURD
开发流程
1由Domain object -> mapping->db。(官方推荐)
2由DB开始,用工具生成mapping和Domain object。(使用较多)
3由映射文件开始。
北京传智播客教育
基本概念和CURD
Domain Object限制
(必须的)。
2有无意义的标示符id(主键)(可选)
3非final的,对懒加载有影响(可选)
Domain Java Object(User)
public class User {
private int id;
private String name;
private Date birthDay;
//getter setter…
}
北京传智播客教育
基本概念和CURD
<?xml version=""?>
<hibernate-mapping package=“">
<class name="User" table="user">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<property name="birthday”/>
</class>
</hibernate-mapping>
主键生成器,参考文档P65
北京传智播客教育
基本概念和CURD
Java代码
(只做一次)
Configuration cfg = new Configuration();
(“”);
。
SessionFactory sessionFactory = ();
Session session = null;Transaction tx = null;
try{
session = ();
tx = ();
//…你的代码save,delete,update,get…
mit();
}catch(Exception e){
if(tx !=null)();throw e;
}finally{
if(session != null)();
}
北京传智播客教育
基本概念和CURD
Session的几个主要方法
,persist保存数据,persist在事务外不会产生insert语句。
,删除对象