hibernate annoation(十一 缓存Ehcache 采用annoation)
2009-09-18 00:00:00 来源:WEB开发网控制台信息:
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)来缓存我们的数据。
- ››Hibernate高级应用:性能优化策略
- ››hibernate 多对多关系详解(包括中间表,一对多字表...
- ››Hibernate实现mysql数据库limit查询方法
- ››Hibernate 之父:是时候升级到Java EE 6了
- ››Hibernate查询
- ››Hibernate和iBATIS比较(摘自网络)
- ››Hibernate使用Projections进行聚合操作
- ››hibernate中java.util.Date类型映射
- ››hibernate中update与saveOrUpdate的区别
- ››Hibernate各种映射关系总结
- ››十一归来 可牛教你快速美化照片
- ››十一假期,乐鱼陪你度过闲暇时光
更多精彩
赞助商链接