Hibernate Session一级缓存理解

Hibernate框架中有2级缓存:

1.其中一级缓存主要为Session缓存,透过session查询到数据库的内容会被存到session缓存中

   后续如果访问就不会从数据库拿数据,而是直接从session缓存中(也就是内存)取数据。减少了数据库访问次数。

   一级缓存的生命周期比较短,和session生命周期一致,生命周期比较短暂。

   在session接口中包含了一系列JAVA集合,这些集合构成了Session缓存,只要Session存在,这些数据也就会存在。

   一级缓存中持续化的对象被更新后会同步更新到数据库



2.二级缓存为sessionFactory缓存,他的生命周期和sessionFactory一致,目前了解不多,后续再来补充


另外session有缓存区和快照区,当缓存区数据发生变化时,快照区和缓存区数据会做比较,如果不一致则会把数据持久化到数据库。

快照机制可以保证数据及时更新(commit或flush等操作时),因此持久化对象拥有自动更新数据库的能力!


持久化类和持久化对象理解:

持久化类:一个类如果通过配置和数据库发生对应关系则成为持久化类,即此类进行了映射关系配置

持久化对象分为三个状态:  a 顺时状态  b 持久化状态 c脱管状态(即被在session中清除或者session销毁)

顺时状态即有对象无ID,脱管状态为有ID但没有存储在Session中。我们通常操作持久化状态。

hibernate主要透过OID(对象标识符)来识别管理对象.


OID对象标识符配置通常使用两种方式:a  native(本地策略,可以根据数据库类型自动选择自增长方式)

b  UUID(当OID为String类型时使用,生成随机数)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值