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类型时使用,生成随机数)

猜你喜欢

转载自blog.csdn.net/java_raylu/article/details/73723519
今日推荐