hibernate中的对象状态
首先需要明确hibernate中的对象状态,Hibernate的缓存机制与对象状态密切相关。
Hibernate中对象分为三种状态:
1、瞬时状态:对象没有id,没有在session缓存中
2、游离|托管状态:对象有id,但没有在session缓存中
3、持久化状态:对象有id,并且在session缓存中
三种状态的转换图:
结论:将我们希望同步到数据库中的对象转换成持久化状态。
Hibernate一级缓存
Hibernate的一级缓存属于session级缓存,所以生命周期与Session相同。
在Hibernate中不同Session不能共享一级缓存,即一个Session不能访问其他Session在一级缓存中的对象实例。
缓存:提高效率.hibernate中的一级缓存也是为了提高操作数据库的效率.
提高效率手段1:提高查询效率
提高效率手段2:减少不必要的修改语句发送
Hibernate二级缓存
Hibernate的二级缓存由从属于一个SessionFactory的所有Session所共享。当程序使用Session加载持久化对象时,Session首先会根据加载的数据类和唯一性标识在一级缓存中查找是否存在对象的缓存实例,如果存在,则作为结果返回,不存在,继续在二级缓存中查找,如果存在,则作为结果返回,不存在,访问数据库。
Hibernate本身未提供二级缓存的实现,需要引入第三方插件实现二级缓存策略。
第三方插件如 EHCache,配置略。
二级缓存常用于数据数据更新频率低且系统频繁访问的非关键数据,以防止用户频繁访问数据库而过度消耗资源。
在此处添加。。。。