博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate中一级缓存和二级缓存
阅读量:7246 次
发布时间:2019-06-29

本文共 705 字,大约阅读时间需要 2 分钟。

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

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

    一级缓存:Session级别的缓存

   当Session被open时,缓存即被open
   当Session被close时,缓存即被close
   在缓存open到close这段时间,多次加载同一个持久化对象,只有第一次向数据库发送SQL语句加载,之后的加载都是基于缓存的
   不过Session从打开到关闭的时间很短暂,一般在项目中都是在业务方法开始时打开Session,调用结束后即关闭Session,在如此短暂的瞬间时刻内,多次加载同一个对象的可能性不大,换言之,一级缓存的可用之处也并不大
二级缓存:SessionFactory级别的缓存
   跟Session同理,level2 cache会随着sessionFactory的打开而打开,关闭而关闭。
   但是在一般的应用程序中,sessionfactory会以单例的形式存在,所以在整个应用程序的生命周期里,sessionfactory会一直存在。既二级缓存也一直存在直到关闭应用程序。
   

本文出自 “” 博客,请务必保留此出处

转载地址:http://fbbbm.baihongyu.com/

你可能感兴趣的文章
分析模型和设计模型
查看>>
希尔排序
查看>>
浅谈SQL Server数据库分页
查看>>
[Java Web整合开发王者归来·刘京华] 2、 Java Web开发概述
查看>>
37.6. slb
查看>>
【逻辑思考】拥有我的知识库是怎样一种感受?
查看>>
Android开发之旅:应用程序基础及组件
查看>>
[蓝牙] 4、Heart Rate Service module
查看>>
[ACM_水题] ZOJ 3714 [Java Beans 环中连续m个数最大值]
查看>>
在ie8下ext显示的问题
查看>>
Android Studio 没有assets目录的问题
查看>>
EReference的containment和container属性
查看>>
OceanBase 互联网时代的关系数据库实践
查看>>
【微信公众号发红包转账】微信公众号上手机网页接收请求,通过公众号给用户发红包 开发流程...
查看>>
[LeetCode] Rectangle Area
查看>>
[Erlang 0029] Erlang Inline编译
查看>>
MongoDB学习笔记~自己封装的Curd操作(按需更新的先决条件)
查看>>
【趣事】一根网线发起的攻击
查看>>
百度地图 判断marker是否在多边形内
查看>>
23.6. 路由配置
查看>>