zl程序教程

您现在的位置是:首页 >  后端

当前栏目

hibernate中一级缓存和二级缓存

hibernate缓存 一级 二级缓存
2023-09-14 09:00:23 时间
    一级与二级缓存的作用:一级缓存是Session级别的,也就是说在一个事务中才会启作用。比如在一个事务中同时查询同一个对象,则不会两次去数据库中查询。 而二级缓存是sessionFactory级别的,不同的事务之间是可以共享的,有些权限,当用户首次登陆后便将关联的权限放到二级缓存中,这样每次需要权限时就无需再查询数据库了。 最后再说明为什么这样设计:一般情况下,我们查询的数据一般是实时的


    一级与二级缓存的作用:一级缓存是Session级别的,也就是说在一个事务中才会启作用。比如在一个事务中同时查询同一个对象,则不会两次去数据库中查询。
而二级缓存是sessionFactory级别的,不同的事务之间是可以共享的,有些权限,当用户首次登陆后便将关联的权限放到二级缓存中,这样每次需要权限时就无需再查询数据库了。
最后再说明为什么这样设计:一般情况下,我们查询的数据一般是实时的,使用二级缓存肯定不行,使用一级缓存既利用了缓存又不会影响实时。


 使用二级缓存是为了存储一些比较稳定的数据,如权限,只有在用户修改了权限且重新登录时才能生效。


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

二级缓存:SessionFactory级别的缓存
   跟Session同理,level2 cache会随着sessionFactory的打开而打开,关闭而关闭。
   但是在一般的应用程序中,sessionfactory会以单例的形式存在,所以在整个应用程序的生命周期里,sessionfactory会一直存在。既二级缓存也一直存在直到关闭应用程序。
   

本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1665116


Hibernate的一级缓存 缓存将数据库/硬盘上文件中数据,放入到缓存中(就是内存中一块空间).当再次使用的使用,可以直接从内存中获取.
一级缓存,二级缓存 一级缓存:                  是在SqlSession事务中产生缓存机制                  缓存查询中的数据、select、还可以对参数不同进行缓存机制                  commit或者rollback就会清楚缓存                  clearCache()  清除缓存                  update,insert,delete 缓存都会清理,重新积累      缓存的目的:                  降低数据库的访问量,数据库压力不会那么大。