Hibernate 性能优化之二级缓存

时间:2024-10-06 12:08:02

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

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

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

 配置二级缓存

Hibernate 性能优化之二级缓存

Hibernate 性能优化之二级缓存

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

 <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../config/ehcache.xsd"> <diskStore path="C:\\TEMP1"/>
<defaultCache
maxElementsInMemory="12"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="false"
maxElementsOnDisk="10000000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/> <Cache
name="cn.test.Classes"
maxElementsInMemory="5"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
maxElementsOnDisk="10000000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
</ehcache>

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

Hibernate 性能优化之二级缓存

Hibernate 性能优化之二级缓存