hibernate缓存笔记04055

上传人:cl****1 文档编号:459024020 上传时间:2023-05-19 格式:DOC 页数:8 大小:176.50KB
返回 下载 相关 举报
hibernate缓存笔记04055_第1页
第1页 / 共8页
hibernate缓存笔记04055_第2页
第2页 / 共8页
hibernate缓存笔记04055_第3页
第3页 / 共8页
hibernate缓存笔记04055_第4页
第4页 / 共8页
hibernate缓存笔记04055_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《hibernate缓存笔记04055》由会员分享,可在线阅读,更多相关《hibernate缓存笔记04055(8页珍藏版)》请在金锄头文库上搜索。

1、缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域, 目的是为了减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能. Hibernate在查询数据时,首先到缓存中去查找,如果找到就直接使用,找不到的时候 就会从物理数据源中检索,所以,把频繁使用的数据加载到缓存区后,就可以大大减少应 用程序对物理数据源的访问,使得程序的运行性能明显的提升. 缓存分两级,一级session缓存,就是常说的一级缓存;二级应用缓存(二级缓存); 一级缓存,一级缓存依赖于session,在一个session中就是一个缓存,当session失效时,缓存消失。 /*两个session两次加载*/

2、 Java代码 1. publicvoidloadBookAgain() 2. Sessionsession=HibernateSessionFactory.getSession(); 3. Bookbook1=(Book)session.get(Book.class,6); 4. Bookbook2=(Book)session.get(Book.class,6); 5. session.close(); 6. 7. /Sessionsession1=HibernateSessionFactory.getSession(); 8. /Bookbook2=(Book)session1.get(B

3、ook.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();/ Boo

4、k book2 = (Book) session1.get(Book.class, 6);/ session1.close(); 在一个session里面查询两次相同的book,只会执行一次sql。 但若放在不同的session中,将会执行两次数据库查询。 解决问题的办法就是用二级缓存。 二级缓存是SessionFactory级别的全局缓存,它底下可以使用不同的缓存类库,比如ehcache、oscache等。 参考http:/ 不是所有的数据都适合放在二级缓存中 下面这几种情况就不适合加载到二级缓存中: 1.经常被修改的数据 2.绝对不允许出现并发访问的数据 3.与其他应用共享的数据 下面这己

5、种情况合适加载到二级缓存中: 1.数据更新频率低 2.允许偶尔出现并发问题的非重要数据 3.不会被并发访问的数据 4.常量数据 5.不会被第三方修改的数据 配置二级缓存比较简单,以ehcache为例: 添加缓存文件ehcache-hibernate-local.xml Java代码 1. 2. 3. 4. 5. 9. 10. 12. 13. maxElementsInMemory为缓存对象的最大数目, eternal设置是否永远不过期, timeToIdleSeconds对象处于空闲状态的最多秒数, timeToLiveSeconds对象处于缓存状态的最多秒数 。 在实体bean的hbm.xm

6、l文件中加上缓存配置: Java代码 1. 3. 现在大部分的hibernate应用不再写实体映射配置文件,那么就在实体bean中加上 /默认的缓存策略. Java代码 1. Cache(usage=CacheConcurrencyStrategy.READ_WRITE) Cache(usage = CacheConcurrencyStrategy.READ_WRITE) 在hibernate定义sessionFactory中加上查询缓存配置: Java代码 1. 2. org.hibernate.cache.EhCacheProvider 3. org.hibernate.cache.EhC

7、acheProvider Java代码 1. true 2. 4. /ehcache-hibernate-local.xml 5. true /ehcache-hibernate-local.xml 如果项目试用了spring,那么相应配置为: Java代码 1. 2. 3. $hibernate.dialect 4. $hibernate.show_sql 5. $hibernate.format_sql 6. org.hibernate.cache.EhCacheProvider 7. /ehcache-hibernate-local.xml 8. 9. $hibernate.dialect $hibernate.show_sql $hibernate.format_sql prop key=hibernate.cache.provider

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号