电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOC文档下载
分享到微信 分享到微博 分享到QQ空间

hibernate缓存笔记04055

  • 资源ID:459024020       资源大小:176.50KB        全文页数:8页
  • 资源格式: DOC        下载积分:15金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要15金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

hibernate缓存笔记04055

缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域, 目的是为了减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能.   Hibernate在查询数据时,首先到缓存中去查找,如果找到就直接使用,找不到的时候 就会从物理数据源中检索,所以,把频繁使用的数据加载到缓存区后,就可以大大减少应 用程序对物理数据源的访问,使得程序的运行性能明显的提升. 缓存分两级,一级session缓存,就是常说的一级缓存;二级应用缓存(二级缓存); 一级缓存,一级缓存依赖于session,在一个session中就是一个缓存,当session失效时,缓存消失。 /*两个session两次加载*/ Java代码  1.  public void loadBookAgain()   2.   Session session = HibernateSessionFactory.getSession();   3.   Book book1 = (Book) session.get(Book.class, 6);   4.   Book book2 = (Book) session.get(Book.class, 6);   5.   session.close();   6.      7. /  Session session1 = HibernateSessionFactory.getSession();   8. /  Book book2 = (Book) session1.get(Book.class, 6);   9. /  session1.close();   10.     public void loadBookAgain() Session session = HibernateSessionFactory.getSession(); Book book1 = (Book) session.get(Book.class, 6); Book book2 = (Book) session.get(Book.class, 6); session.close(); / Session session1 = HibernateSessionFactory.getSession();/ Book book2 = (Book) session1.get(Book.class, 6);/ session1.close(); 在一个session里面查询两次相同的book,只会执行一次sql。 但若放在不同的session中,将会执行两次数据库查询。 解决问题的办法就是用二级缓存。 二级缓存是SessionFactory级别的全局缓存,它底下可以使用不同的缓存类库,比如ehcache、oscache等。   参考http:/www.javaeye.com/topic/249465   不是所有的数据都适合放在二级缓存中   下面这几种情况就不适合加载到二级缓存中:   1.经常被修改的数据   2.绝对不允许出现并发访问的数据   3.与其他应用共享的数据   下面这己种情况合适加载到二级缓存中:   1.数据更新频率低   2.允许偶尔出现并发问题的非重要数据   3.不会被并发访问的数据   4.常量数据   5.不会被第三方修改的数据 配置二级缓存比较简单,以ehcache为例: 添加缓存文件ehcache-hibernate-local.xml Java代码  1. <?xml version="1.0" encoding="UTF-8"?>   2. <ehcache>   3.   4.  <diskStore path="java.io.tmpdir/hibernate/book" />   5.  <defaultCache maxElementsInMemory="10000" overflowToDisk="true" eternal="false"  6.   memoryStoreEvictionPolicy="LRU" maxElementsOnDisk="10000000"  7.   diskExpiryThreadIntervalSeconds="600"  8.   timeToIdleSeconds="3600" timeToLiveSeconds="100000" diskPersistent="false" />   9.  <!- Special objects setting. ->   10.  <cache name="bean.entity.Book" maxElementsInMemory="500" overflowToDisk="true"  11.   eternal="true">   12.  </cache>   13. </ehcache>  <?xml version="1.0" encoding="UTF-8"?><ehcache> <diskStore path="java.io.tmpdir/hibernate/book" /> <defaultCache maxElementsInMemory="10000" overflowToDisk="true" eternal="false" memoryStoreEvictionPolicy="LRU" maxElementsOnDisk="10000000" diskExpiryThreadIntervalSeconds="600" timeToIdleSeconds="3600" timeToLiveSeconds="100000" diskPersistent="false" /> <!- Special objects setting. -> <cache name="bean.entity.Book" maxElementsInMemory="500" overflowToDisk="true" eternal="true"> </cache></ehcache>  maxElementsInMemory为缓存对象的最大数目,   eternal设置是否永远不过期,   timeToIdleSeconds对象处于空闲状态的最多秒数,   timeToLiveSeconds对象处于缓存状态的最多秒数 。   在实体bean的hbm.xml文件中加上缓存配置: Java代码  1. <!- 设置该持久化类的二级缓存并发访问策略 read-only read-write   2.  nonstrict-read-write transactional->   3.  <cache usage="read-write" />   <!- 设置该持久化类的二级缓存并发访问策略 read-only read-write nonstrict-read-write transactional-> <cache usage="read-write" />    现在大部分的hibernate应用不再写实体映射配置文件,那么就在实体bean中加上   /默认的缓存策略. Java代码  1. Cache(usage = CacheConcurrencyStrategy.READ_WRITE)   Cache(usage = CacheConcurrencyStrategy.READ_WRITE)    在hibernate定义sessionFactory中加上查询缓存配置:     <!- 设置二级缓存插件EHCache的Provider类->   Java代码  1. <property name="hibernate.cache.provider_class">   2.    org.hibernate.cache.EhCacheProvider   3.   </property>  <property name="hibernate.cache.provider_class"> org.hibernate.cache.EhCacheProvider </property>  <!- 启动"查询缓存" ->   Java代码  1. <property name="hibernate.cache.use_query_cache">true</property>   2.   <property   3.    name="hibernate.cache.provider_configuration_file_resource_path">   4.    /ehcache-hibernate-local.xml   5.   </property>  <property name="hibernate.cache.use_query_cache">true</property> <property name="hibernate.cache.provider_configuration_file_resource_path"> /ehcache-hibernate-local.xml </property>  如果项目试用了spring,那么相应配置为:   Java代码  1. <property name="hibernateProperties">   2.    <props>   3.     <prop key="hibernate.dialect">$hibernate.dialect</prop>   4.     <prop key="hibernate.show_sql">$hibernate.show_sql</prop>   5.     <prop key="hibernate.format_sql">$hibernate.format_sql</prop>   6.     <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>   7.     <prop key="hibernate.cache.provider_configuration_file_resource_path">/ehcache-hibernate-local.xml</prop>   8.    </props>   9.   </property>  <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">$hibernate.dialect</prop> <prop key="hibernate.show_sql">$hibernate.show_sql</prop> <prop key="hibernate.format_sql">$hibernate.format_sql</prop> <prop key="hibernate.cache.provider

注意事项

本文(hibernate缓存笔记04055)为本站会员(cl****1)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.