Hibernate框架
一、Hibernate:
是一种持久层框架,轻量级,没有侵入性。
二、三种状态:
Transient:持久状态,没有被session管理,在数据库中没有与之匹配的记录
Persistent:纳入session管理,在数据库中有与之匹配的记录,当属性发生改变,在清理缓存时会自动和数据库同步
Detached:没哟被session管理,在数据库中存在与之匹配的记录
三、关系模型放到对象模型:
1.查询
查询存在的数据使用get,查询不存在的数据采用load
两者区别:
get不支持lazy,load默认支持延迟加载
get加载数据,不存在返回null;load返回ObjectNotFoundException异常
2.删除
先加载,再删除delete
3.更新
先加载,后更新
四、映射:
1、一对一:
单向:
双向:
property-ref属性为关系字段的名称
2、一对多:
双向关联的映射方式:
(1)在一的一端的集合上采用标签,多的一端加入一个外键;
(2)在多的一端采用标签。
inverse属性可以用在一对多和多对多双向关联上,inverse默认为false,为false表示可以维护关系,为true,则本端不能维护关系,会交给另一端维护关系,本端失效。
3、多对一
再设置cascade=”all”,表示支持级联操作。
4、多对多
单向:
双向:
5、复合主键映射:
composite-id标签,type为date,只存年月日。
通常做法是将主键相关字段放到一个单独的类中,这样类是有要求的:
(1)必须实现序列化接口;
(2)覆盖equals和hashcode方法。
6、Component映射:
Component是某个实体的逻辑组成部分,它与实体类的主要差别在于,它没有oid;
采用Component的好处,实现对象模型的细粒度划分,复用率高,含义名义明确,层次分明,对象模型与关系模型的而设计恰恰相反,对象模型一般是细粒度的,关系模型一般是粗粒度的。
7、集合映射:
总结:
该篇博客我们对Hibernate简单了解,另外支持hibernate的查询语言HQL同样重要,我们下篇继续,感谢您的阅读!