Hibernate 性能优化之二级缓存

二级缓存是一个共享缓存,在二级缓存中存放的数据是共享数据
特性
     修改不能特别频繁
     数据可以公开
二级缓存在sessionFactory中,因为sessionFactory本身是线程安全,所以二级缓存的数据线程也是安全的,二级缓存的生命周期和sessionFactory一样


怎么样把数据放入到二级缓存中?
         通过session.get,session.load,session.update方法都可以把对象放入到二级缓存中(同时也存入了一级缓存中)

   session.save  该方法只把对象放入到了一级缓存中,没有放入到二级缓存中,如果执行session.flush()时,会把数据放到二级缓存中
怎么样把数据从二级缓存中提取?
         通过session.get和session.load方法都可以提取二级缓存中的数据


 配置二级缓存

 把二级缓存中的数据放到磁盘上
              在classpath下存放一个文件ehcache.xml

 1 <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 2          xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
 3          
 4     <diskStore path="C:\\TEMP1"/>
 5     <defaultCache
 6             maxElementsInMemory="12"
 7             eternal="false"
 8             timeToIdleSeconds="120"
 9             timeToLiveSeconds="120"
10             overflowToDisk="false"
11             maxElementsOnDisk="10000000"
12             diskPersistent="false"
13             diskExpiryThreadIntervalSeconds="120"
14             memoryStoreEvictionPolicy="LRU"
15             />
16             
17        <Cache
18             name="cn.test.Classes"
19             maxElementsInMemory="5" 
20             eternal="false"
21             timeToIdleSeconds="120"
22             timeToLiveSeconds="120"
23             overflowToDisk="true"
24             maxElementsOnDisk="10000000"
25             diskPersistent="false"
26             diskExpiryThreadIntervalSeconds="120"
27             memoryStoreEvictionPolicy="LRU"
28             />
29 </ehcache>

 

当内存中的二级缓存存放够5个对象时,剩余的对象就放入到磁盘上


             

posted @ 2015-01-14 10:35  liuwt365  阅读(364)  评论(0编辑  收藏  举报