码迷,mamicode.com
首页 > Web开发 > 详细

hibernate一级缓存、二级缓存

时间:2016-04-24 18:50:35      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

     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中,指定二级缓存的外部实现类,要配置

<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,二级缓存存放很少被修改的数据,不是很重要,允许偶尔并发,不会频繁并发的参考数据。

    总结对比:(使用慕课网的一张图片,可参考慕课网相关视频)

    技术分享

 

hibernate一级缓存、二级缓存

标签:

原文地址:http://www.cnblogs.com/sunqian/p/5427589.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!