SSH ehcache二级缓存配置

来源:互联网 发布:虎头牌猎枪淘宝网 编辑:程序博客网 时间:2024/05/15 14:31

<span style="font-family: Arial; font-size: 14px; background-color: rgb(255, 255, 255);">1、首先设置EhCache,导入ehcache.jar,建立配置文件ehcache.xml,默认的位置在class-path,可以放到你的src目录下:</span>

<?xml version="1.0" encoding="UTF-8"?><ehcache> <diskStore path="java.io.tmpdir"/>  <defaultCache   maxElementsInMemory="10000" <!-- 缓存最大数目 -->   eternal="false" <!-- 缓存是否持久 -->   overflowToDisk="true" <!-- 是否保存到磁盘,当系统当机时-->   timeToIdleSeconds="300" <!-- 当缓存闲置n秒后销毁 -->   timeToLiveSeconds="180" <!-- 当缓存存活n秒后销毁-->   diskPersistent="false"   diskExpiryThreadIntervalSeconds= "120"/></ehcache>


2、使用spring调用Hibernate的sessionFactory的话,这样设置:

<!--HibernateSession工厂管理 -->   <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">   <property name="dataSource">    <ref bean="datasource" />   </property>   <property name="hibernateProperties">   <props>    <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>    <prop key="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</prop>    <prop key="hibernate.show_sql">true</prop>    <prop key="hibernate.cache.use_query_cache">true</prop>    <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>   </props> </property> <property name="mappingDirectoryLocations">  <list>   <value>/WEB-INF/classes/cn/rmic/manager/hibernate/</value>  </list> </property></bean>

说明一下:如果不设置“查询缓存”,那么hibernate只会缓存使用load()方法获得的单个持久化对象,如果想缓存使用findall()、 list()、Iterator()、createCriteria()、createQuery()等方法获得的数据结果集的话,就需要设置 
hibernate.cache.use_query_cache true 才行

3、在Hbm文件中添加<cache usage="read-only"/>

4、如果需要“查询缓存”,还需要在使用Query或Criteria()时设置其setCacheable(true);属性

public List selectHql(String hql) {          getHibernateTemplate().setCacheQueries(true);           return getHibernateTemplate().find(hql);   }  


5、Ehcache 中ehcache.xml 配置详解和示例

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">    <diskStore path="java.io.tmpdir"/>    <!--    Mandatory Default Cache configuration. These settings will be applied to caches    created programmtically using CacheManager.add(String cacheName)    -->    <!--       name:缓存名称。       maxElementsInMemory:缓存最大个数。       eternal:对象是否永久有效,一但设置了,timeout将不起作用。       timeToIdleSeconds:设置对象在失效前的允许闲置时间(单位:秒)。仅当eternal=false对象不是永久有效时使用,可选属性,默认值是0,也就是可闲置时间无穷大。       timeToLiveSeconds:设置对象在失效前允许存活时间(单位:秒)。最大时间介于创建时间和失效时间之间。仅当eternal=false对象不是永久有效时使用,默认是0.,也就是对象存活时间无穷大。       overflowToDisk:当内存中对象数量达到maxElementsInMemory时,Ehcache将会对象写到磁盘中。       diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区。       maxElementsOnDisk:硬盘最大缓存个数。       diskPersistent:是否缓存虚拟机重启期数据 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.       diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒。       memoryStoreEvictionPolicy:当达到maxElementsInMemory限制时,Ehcache将会根据指定的策略去清理内存。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用)。       clearOnFlush:内存数量最大时是否清除。    -->    <defaultCache            maxElementsInMemory="10000"            eternal="false"            timeToIdleSeconds="120"            timeToLiveSeconds="120"            overflowToDisk="true"            maxElementsOnDisk="10000000"            diskPersistent="false"            diskExpiryThreadIntervalSeconds="120"            memoryStoreEvictionPolicy="LRU"            /></ehcache>




0 0
原创粉丝点击