ator.next();
System.out.print(a2.getId() + "/");
}
HibernateSessionFactory.closeSession();
}
hibernate annoation(十一 缓存Ehcache 采用annoation)(3)
时间:2009-10-10 javaeye ericjoe
控制台信息:
Java代码
Hibernate: select b0_.id as id1_, b0_.bname as bname1_ from B b0_ where b0_.id>?
11/14/18/25/26/27/28/29/Hibernate: select b0_.id as id1_, b0_.bname as bname1_ from B b0_ where b0_.id>?
11/14/18/25/26/27/28/29/
只发出了一次sql 第二次从缓存中取
我们配置我们自己的缓存文件:
Java代码
<cache name="cache_a"
maxElementsInMemory="5"
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
overflowToDisk="true"
/>
我们将maxElementsInMemory设置小一点 我们就可以看见磁盘的缓存文件:
首先说明:我们在ehcache.xml <diskStore path="java.io.tmpdir"/>配置了缓存溢出到的磁盘路径
可以通过:
Java代码
System.out.println(System.getProperty("java.io.tmpdir"));
查询。
测试代码:
Java代码
public static void main(String[] args) throws Exception {
Java代码
System.out.println(System.getProperty("java.io.tmpdir"));
getTest();
getTest();
Thread.sleep(10000);
Java代码
}
我们在最后暂停10秒来查看磁盘文件
Java代码
public static void getTest() throws Exception {
Session session = HibernateSessionFactory.getSession();
Query q = session.createQuery("from B where id>?");
q.setParameter(0, 10);
q.setCacheable(true);
q.setCacheRegion("cache_a");//使用我们自己配置的缓存
List list = q.list();
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
B a2 = (B) iterator.next();
System.out.print(a2.getId() + "/");
}
HibernateSessionFactory.closeSession();
}
控制台信息:
Java代码
C:\DOCUME~1\eric\LOCALS~1\Temp\ //我的java.io.tmpdir
Hibernate: select b0_.id as id1_, b0_.bname as bname1_ from B b0_ where b0_.id>?
11/14/18/25/26/27/28/29/Hibernate: select b0_.id as id1_, b0_.bname as bname1_ from B b0_ where b0_.id>?
11/14/18/25/26/27/28/29/
查看磁盘信息:
Java代码
在文件按目录下有一下文件:
com.eric.po.B.data--------0kb
cache_a.data ------------4 kb
org.hibernate.cache.StandardQueryCache.data ---0kb
org.hibernate.cache.UpdateTimestampsCache.data -----0kb
其中cache_a中保存了我们的缓存文件
StandardQueryCache.data 则是 设置默认的查询缓存的数据过期策略 产生的文件,
org.hibernate.cache.UpdateTimestampsCache.data则是 设置时间戳缓存的数据过期策略
如果不适用我们自己的缓存配置就会使用类类的全路径路径文件(com.eric.po.B.data)来缓存我们的数据。 |