Hibernate统计和查询二级缓存
2014-05-07 22:22
387 查看
示例:假如在数据库中插入数据title=ee若ehcacha.xml配置文件,java类,和类配置文件以及中配置文件配好的情况下:hibernate.cfg.xml中添加:<!-- 开启二级缓存的统计功能 --><property name="hibernate.generate_statistics">true</property><!-- 设置使用结构化方式来维护缓存项 --><property name="hibernate.cache.use_structured_entries">true</property>测试代码:
package com.pengsuen.test; import java.util.Iterator; import java.util.List; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import com.pengsuen.bean.News; public class Test { static Configuration conf = new Configuration().configure(); static SessionFactory sf = conf.buildSessionFactory(); public static void main(String[] args) { Test t=new Test(); t.noCacheQuery(); t.cacheQuery(); t.cacheQueryIterator(); t.stat(); sf.close(); } private void noCacheQuery(){ Session session=sf.openSession(); session.beginTransaction(); System.out.println("*************nocacheQuery开始*************************"); List titles=session.createQuery("select news.title from News news").setCacheable(false).list(); for(Object title:titles) { System.out.println(title); } System.out.println("--------------------------"); titles=session.createQuery("select news.title from News news").setCacheable(false).list(); for(Object title:titles) { System.out.println(title); } session.getTransaction().commit(); session.close(); System.out.println("*************nocacheQuery结束*************************"); } private void cacheQuery(){ Session session=sf.openSession(); session.beginTransaction(); System.out.println("***************cacheQuery开始*************************"); List titles=session.createQuery("select news.title from News news").setCacheable(true).list(); for(Object title:titles) { System.out.println(title); } session.getTransaction().commit(); System.out.println("-------------------------------"); Session sess2=sf.openSession(); sess2.beginTransaction(); titles=sess2.createQuery("select news.title from News news").setCacheable(true).list(); for(Object title:titles) { System.out.println(title); } sess2.getTransaction().commit(); session.close(); sess2.close(); System.out.println("*************cacheQuery结束*************************"); } public static void cacheQueryIterator(){ Session session=sf.openSession(); session.beginTransaction(); System.out.println("************cacheQueryIterator开始*************************"); Iterator it=session.createQuery("select news.title from News news").setCacheable(true).iterate(); while(it.hasNext()){ System.out.println(it.next()); } session.getTransaction().commit(); System.out.println("------------------------------"); Session sess2=sf.openSession(); sess2.beginTransaction(); it=sess2.createQuery("select news.title from News news").setCacheable(true).iterate(); while(it.hasNext()){ System.out.println(it.next()); } sess2.getTransaction().commit(); session.close(); sess2.close(); System.out.println("***************cacheQueryIterator结束*************************"); } private void stat(){ long hitCount=sf.getStatistics().getQueryStatistics("select news.title from News news").getCacheHitCount(); System.out.println("查询缓存命中次数:"+hitCount); } }执行结果:
**************************nocacheQuery开始************************* Hibernate: select news0_.title as col_0_0_ from NEWS news0_ hello -------------------------- Hibernate: select news0_.title as col_0_0_ from NEWS news0_ hello **************************nocacheQuery结束************************* **************************cacheQuery开始************************* Hibernate: select news0_.title as col_0_0_ from NEWS news0_ hello ------------------------------- hello **************************cacheQuery结束************************* **************************cacheQueryIterator开始************************* Hibernate: select news0_.title as col_0_0_ from NEWS news0_ hello ------------------------------ Hibernate: select news0_.title as col_0_0_ from NEWS news0_ hello **************************cacheQueryIterator结束************************* 查询缓存命中次数:1
相关文章推荐
- Hibernate的查询,二级缓存,连接池
- Hibernate第十二篇【二级缓存介绍、缓存策略、查询缓存、集合缓存】
- hibernate查询缓存和二级缓存详解
- hibernate笔记--缓存机制之 二级缓存(sessionFactory)和查询缓存
- Hibernate一级缓存、二级缓存以及查询缓存的关系
- Hibernate 性能优化笔记!(遍历、一级/二级/查询/缓存、乐观悲观锁等优化算法)
- Hibernate查询、连接池、二级缓存
- Hibernate中 一 二级缓存及查询缓存
- Java Hibernate 二级缓存配置及缓存的统计策略
- Hibernate的二级缓存之查询缓存
- hibernate04 懒加载、抓取策略、二者结合、session详解、一级缓存、二级缓存、查询缓存
- 对于Hibernate二级缓存和查询缓存的总结
- hibernate的查询缓存和二级缓存的配合使用
- hibernate--一级和二级缓存(使用Ehcache)以及查询缓存
- hibernate:真正理解二级缓存和查询缓存
- 二级缓存和查询缓存---6.9.2: 管理缓存和统计缓存
- Hibernate的一级缓存、二级缓存和查询缓存
- hibernate的一级、二级和查询缓存问题
- Hibernate中一级缓存、二级缓存及查询缓存的总结
- hibernate的二级缓存和查询缓存