WEB开发网
开发学院软件开发Java hibernate annoation(十一 缓存Ehcache 采用annoa... 阅读

hibernate annoation(十一 缓存Ehcache 采用annoation)

 2009-09-18 00:00:00 来源:WEB开发网   
核心提示: 控制台信息:Java代码Hibernate:selectb0_.idasid1_,b0_.bnameasbname1_fromBb0_whereb0_.id>?11/14/18/25/26/27/28/29/Hibernate:selectb0_.idasid1_,b0_.bnameasb

控制台信息:

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)来缓存我们的数据。

上一页  1 2 3 

Tags:hibernate annoation 十一

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接