Hibernate中的Session缓存机制

一级缓存:Session级别的缓存
   当Session被open时,缓存即被open
   当Session被close时,缓存即被close
   在缓存open到close这段时间,多次加载同一个持久化对象,只有第一次向数据库发送SQL语句加载,之后的加载都是基于缓存的
   不过Session从打开到关闭的时间很短暂,一般在项目中都是在业务方法开始时打开Session,调用结束后即关闭Session,在如此短暂的瞬间时刻内,多次加载同一个对象的可能性不大,换言之,一级缓存的可用之处也并不大

二级缓存:SessionFactory级别的缓存
   跟Session同理,level2 cache会随着sessionFactory的打开而打开,关闭而关闭。
   但是在一般的应用程序中,sessionfactory会以单例的形式存在,所以在整个应用程序的生命周期里,sessionfactory会一直存在。既二级缓存也一直存在直到关闭应用程序。
   
   二级缓存分为好几种,简单来讲就是类级别的缓存class-cache和查询缓存
query-cache.
   前者是以id作为缓存的key。
   后者是以查询条件作为缓存的key。
   具体配制方法这里不便细述
在Session中delete(a)时,如果a是持久化对象(已经在Session的缓存中),Session就执行delete语句,删除数据库中对应的记录。如果a是游离对象,先使游离对象a和Session关联(其实就是加载到Session的缓存中),使它变成一个持久化对象,然后再执行delete语句。Session的增删改查是面相对象的。
另外补充一点:在项目中,一般不太实用hibernate原生的缓存机制,原因是不好管理。更多时候,我们在业务层使用自己写的cache

欢迎评论彼此学习

Hibernate中的Session缓存机制,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。