hibernate中存的一级缓存
缓存的作用:优化数据库操作的性能,对于相同的内容,可以直接在缓存中直接取,不用再次访问数据库
hibernate中的一级缓存:属于session级别(本质是session中的一系列集合),生命周期和session一致
一级缓存在hibernate中的应用:当调用数据库操作的时候,如果session缓存中没有相应的对象,就会在缓存中保存一份。再次查询的时候如果缓存中有相应的对象就直接从缓存中取,不会查询数据库。调用sesion.close()的时候,缓存会被清空。
hibernate中的快照
快照是一级缓存中的一块区域。
在使用id查询数据库的时候,会保存一份数据到一级缓存中,同时还会复制一份保存到快照中,在结束事务的时候会清理一级缓存,这个时候hibernate会对比一级缓存的数据和快照区的数据是否相同,如果不同,会自动发送更新语句,保持数据的一致性(这就是说为什么持久型对象能自动更新数据库的原因)