hibernate一级缓存、二级缓存
2016-04-24 17:53
363 查看
hibernate缓存是指为了降低应用程序对物理数据源访问的次数,从而提高应用程序的运行性能的一种策略。并不是指计算机内存或者cpu的一二级缓存。 ORM框架访问数据库的效率直接影响应用程序的运行速度,提升和优化orm框架的执行效率至关重要。hibernate缓存是提升和优化hibernate执行效率的重要手段。
一级缓存代码总结:
1,同一个session两次查询同一个对象,只输出一个sql语句,证明默认使用缓存了;
2,在不同的session中多次查询同一个对象,会执行多次数据库查询;
3,在一级缓存中,每一个相同的对象都具有唯一的OID;一级缓存又叫session级缓存,或者会话级的缓存。生命周期等同session;
4,一级缓存是默认开启的,并且无法取消。管理一级缓存可以通过session.evict(obj),session.clear()方法清除一个或全部对象;
5,query.list()方法和query.iterator()方法不会使用一级缓存,但是iterator方法得到对象ID后,得到对象的其他属性会首先使用一级缓存,得到对象ID不使用一级缓存,是向数据库发送的sql语句。
二级缓存配置总结:
1,二级缓存要用到commons-logging-1**.jar和ehcache.jar,ehcache.xml配置文件放在项目路径下;
2,hibernate.cfg.xml中,指定二级缓存的外部实现类,要配置
3,哪个实体类要用到二级缓存,就在它的配置文件的class标签中添加<cache usage="read-only"/>,使该类的二级缓存生效,注解需再查找,cache标签还有另外的2个属性include等;
4,二级缓存又称为全局缓存,应用级缓存。适用范围是当前应用的所有会话。二级缓存是可插播式缓存,默认是EHChache,还支持其他二级缓存组件,如Hashtable、OSChache等;
5,二级缓存存放很少被修改的数据,不是很重要,允许偶尔并发,不会频繁并发的参考数据。
总结对比:(使用慕课网的一张图片,可参考慕课网相关视频)
一级缓存代码总结:
1,同一个session两次查询同一个对象,只输出一个sql语句,证明默认使用缓存了;
2,在不同的session中多次查询同一个对象,会执行多次数据库查询;
3,在一级缓存中,每一个相同的对象都具有唯一的OID;一级缓存又叫session级缓存,或者会话级的缓存。生命周期等同session;
4,一级缓存是默认开启的,并且无法取消。管理一级缓存可以通过session.evict(obj),session.clear()方法清除一个或全部对象;
5,query.list()方法和query.iterator()方法不会使用一级缓存,但是iterator方法得到对象ID后,得到对象的其他属性会首先使用一级缓存,得到对象ID不使用一级缓存,是向数据库发送的sql语句。
二级缓存配置总结:
1,二级缓存要用到commons-logging-1**.jar和ehcache.jar,ehcache.xml配置文件放在项目路径下;
2,hibernate.cfg.xml中,指定二级缓存的外部实现类,要配置
<property name="cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property>
3,哪个实体类要用到二级缓存,就在它的配置文件的class标签中添加<cache usage="read-only"/>,使该类的二级缓存生效,注解需再查找,cache标签还有另外的2个属性include等;
4,二级缓存又称为全局缓存,应用级缓存。适用范围是当前应用的所有会话。二级缓存是可插播式缓存,默认是EHChache,还支持其他二级缓存组件,如Hashtable、OSChache等;
5,二级缓存存放很少被修改的数据,不是很重要,允许偶尔并发,不会频繁并发的参考数据。
总结对比:(使用慕课网的一张图片,可参考慕课网相关视频)
相关文章推荐
- G.易彰彪的一张表
- 记编程过程中遇到的问题
- 数据可视化:dc.js的使用
- pip安装模块警告InsecurePlatformWarning: A true SSLContext object is not available.
- Elasticsearch 学习~
- 《Java程序设计》第8周学习总结
- 关于Java的散列桶, 以及附上一个案例-重写map集合
- list.extend()
- stm32自学篇——(1)驱动安装
- NSURLSession(二)POST请求
- DayDayUP_Python自学记录[3]_Python条件判断语句(if while for)
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)(转)
- 通过手动创建统计信息优化sql查询性能案例
- hdu2444The Accomodation of Students(二分图判断+最大匹配)
- react与jsx语法介绍--先行篇
- 简单开发相机
- 稀疏编码(Sparse Coding)的前世今生(一) 转自http://blog.csdn.net/marvin521/article/details/8980853
- 20145311王亦徐 实验三 "敏捷开发与XP实践"
- LeetCode 344. Reverse String
- python 常用 语法 库函数