Hibernate--一级缓存
Posted 耍流氓的兔兔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate--一级缓存相关的知识,希望对你有一定的参考价值。
一级缓存:
Hibernate的一级缓存是指Session(属于事务范围的缓存,由Hibernate管理,无需干预),它是一块内存空间,用来存放从数据库查询出的java对象,有了一级缓存,应用程序可以减少访问数据库的次数,提高了性能。
在使用Hibernate查询对象的时候,首先会使用对象属性的OID值(对应表中的主键)在Hibernate的一级缓存进行查找,如果找到,则取出返回,不会再查询数据库,如果没有找到,再到数据库中进行查询操作。然后将查询结果存放到Session一级缓存中
一级缓存管理:
如果对象不在一级缓存中,数据库不能自动更新
将对象从session中移除(持久态-->游离态):
evict()
clear()
快照机制:
当执行commit()时,Hibernate同时会清理session的一级缓存(flush),也就是将堆内存中的数据与快照中的数据进行对比,如果不一致,会执行同步操作(update)操作,如果一致,则不执行update
对象必须是持久化对象,才会走快照机制
快照是数据的副本
快照属于一级缓存
快照是在堆内存中的
快照的作用:保证数据的一致性
以上是关于Hibernate--一级缓存的主要内容,如果未能解决你的问题,请参考以下文章