Hibernate缓存策略
Hibernate的一级缓存又称为Session缓存,其适用范围是在当前的会话之中,其生命周期和Session相同,随着Session的销毁,一级缓存也会随之销毁。一级缓存是不能取消的,Hibernate默认会采取一级缓存。
工作原理:通过Session冲数据库查询的实体会被存储在程序的内存当中,下次查询同一实体的时候不再从数据库中获取,而是直接从应用程序内存获取。
Hibernate一级缓存API:
evict()清除一级缓存的指定对象
clear()清除一级缓存的所有对象 query().list与query().iterator的区别:
query().list无法使用一级缓存。
query().iterator是查询主键id,使用query.iterator()会在执行完查找id的sql查询后,分别向数据库再次执行查询(缓存找不到id记录),如果前面使用了query.list()再调用query.iterator()则会在缓存中查找id并返回查询的值。
二级缓存开启步骤
1.导入相对应的ehcache.JAR包
2.导入ehcache.xml文件到src路径下
3.在 hibernate.cfg.xml中配置<property name="cache.provider_class">外部实现类</property>
4.在实体类的配置文件中(.hbm.xml) ,配置<cache usage="read-only"></cache>
usage:表示事务模式 region:可以为指定region属性名的所有表进行统一缓存策略配置
二级缓存的并发访问策略
管理 Hibernate的二级缓存
二级缓存的介绍:
1.二级缓存又称为“全局缓存”,“应用级缓存”
2.二级缓存中的数据可适用方位是当前应用的所有会话,不会虽然某一个session会话的关闭而关闭,而是随着整个sessionFactory的关闭而关闭
3.二级缓存是可插拔式缓存,默认是EHCache,还支持其他二级缓存组件 二级缓存的适用场景:
1.很少被修改的数据
2.不是很重要的数据,允许出现偶尔并发的数据
3.不会被并发访问的数据
4.参考数据 一二级缓存的对比:
如图 http://www.imooc.com/video/9018
总结:
1.Hibernate的缓存能提高检索效率
2.Hibernate的缓存分为一级缓存和二级缓存,一级缓存是会话级缓存,二级缓存是应用级缓存
3.Hibernate的缓存在提高检索的同时,也会增加服务器的消耗,所以要注意缓存的使用策略。 http://blog.csdn.net/ochangwen/article/details/52601527
Hibernate缓存策略的更多相关文章
- Hibernate学习笔记二:Hibernate缓存策略详解
一:为什么使用Hibernate缓存: Hibernate是一个持久层框架,经常访问物理数据库. 为了降低应用程序访问物理数据库的频次,从而提高应用程序的性能. 缓存内的数据是对物理数据源的复制,应用 ...
- Hibernate缓存策略(一级缓存和EHcache二级缓存)
如何配置二级缓存: 第一步:导入EHcache依赖 1)Maven项目: <!--此处使用hibernate4--> <dependency> <groupId>o ...
- Hibernate:Hibernate缓存策略详解
一:为什么使用Hibernate缓存: Hibernate是一个持久层框架,经常访问物理数据库. 为了降低应用程序访问物理数据库的频次,从而提高应用程序的性能. 缓存内的数据是对物理数据源的复制,应用 ...
- Hibernate缓存原理与策略
Hibernate缓存原理: 对于Hibernate这类ORM而言,缓存显的尤为重要,它是持久层性能提升的关键.简单来讲Hibernate就是对JDBC进行封装,以实现内部状态的管理,OR关系的映射等 ...
- [原创]java WEB学习笔记93:Hibernate学习之路---Hibernate 缓存介绍,缓存级别,使用二级缓存的情况,二级缓存的架构集合缓存,二级缓存的并发策略,实现步骤,集合缓存,查询缓存,时间戳缓存
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Hibernate缓存原理与策略 Hibernate缓存原理:
Hibernate缓存原理: 对于Hibernate这类ORM而言,缓存显的尤为重要,它是持久层性能提升的关键.简单来讲Hibernate就是对JDBC进行封装,以实现内部状态的管理,OR关系的映射等 ...
- Hibernate(四)——缓存策略+lazy
Hibernate作为和数据库数据打交道的框架,自然会设计到操作数据的效率问题,而对于一些频繁操作的数据,缓存策略就是提高其性能一种重要手段,而Hibernate框架是支持缓存的,而且支持一级和二级两 ...
- Hibernate第十二篇【二级缓存介绍、缓存策略、查询缓存、集合缓存】
Hibernate二级缓存介绍 前面我们已经讲解过了一级缓存,一级缓存也就是Session缓存,只在Session的范围内有效-作用时间就在Session的作用域中,范围比较小 Hibernate为我 ...
- Hibernate的二级缓存策略
Hibernate的二级缓存策略的一般过程如下: 1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的SQL语句查询数据库,一次 ...
随机推荐
- 我的Python升级打怪之路【六】:面向对象(二)
面向对象的一些相关知识点 一.isinstance(obj,cls) 检查实例obj是否是类cls的对象 class Foo(object): pass obj = Foo() isinstance( ...
- 快速部署简单私有云CloudStack(下)
微信公众号:wsy535068621 继续上边的 会给出具体配置
- Spring Session解决分布式Session问题的实现原理
使用Spring Session和Redis解决分布式Session跨域共享问题 上一篇介绍了如何使用spring Session和Redis解决分布式Session跨域共享问题,介绍了一个简单的案例 ...
- Program, Process and Thread
A program is an executable file store. A process is a running program. A thread is a single sequence ...
- [转]js和jquery获取窗体高度
JQuery获取浏览器窗口宽高,文档宽高 2010-01-20 08:59<script type="text/javascript">$(document).read ...
- 基于URL权限拦截的实现
一.实现原理 1.实现原理 本示例采用SpringMVC的拦截器来实现一个基于URL的权限拦截. 2.权限管理流程 二.数据库搭建 1.用户表(sys_user) (1)表结构 (2)表字段说明 ...
- Linux下ffmpeg添加Facebook/transform代码块实现将全景视频的球模型转换成立方体模型
Facebook事实上已开始在平台中支持360度全景视频的流播,但公司对此并不满足.其工程师更是基于锥体几何学设计出了一套全新的视频编码,号称最高能将全景视频的文件大小减少80%.(VR最新突破:全景 ...
- maven配置编译器的版本
发现每次启动idea时,项目里很多红色错误,都是的编译器版本不对,每次都要手动修改. 其实在pom里把默认编译器版本加进去就好了. <build> <plugins> < ...
- 编译器错误消息: CS0012: 类型“System.Object”在未被引用的程序集中定义。必须添加对程序集“System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的引用。
编译器错误消息: CS0012: 类型“System.Object”在未被引用的程序集中定义.必须添加对程序集“System.Runtime, Version=4.0.0.0, Culture=neu ...
- 跨平台 GUI可视化 网络调试工具
mNetAssisthttp://blog.chinaunix.net/uid-21977056-id-4310527.htmlhttps://github.com/busyluo/mNetAssis ...