码迷,mamicode.com
首页 > 编程语言 > 详细

Spring控制Hibernate的缓存机制ehcache

时间:2015-04-18 21:46:53      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

首先在spring.xml中进入bean

<prop key="hibernate.cache.use_second_level_cache">true</prop>   <!--设置缓存机制为二级缓存 -->
<prop key="hibernate.cache.use_query_cache">true</prop>          <!--启动查询缓存 -->
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>  <!--设置二级缓存的Provider类 -->
<prop key="hibernate.cache.provider_configuration_file_resource_path">WEB-INF/classes/ehcache.xml</prop>   <!--设置缓存的配置文件路径 -->

 

使用hibernate的缓存插件

 将ehcache.xml文件放到src下面,并配置ehcache.xml文件如下:

<ehcache>
    <diskStore path="D:\cache" />

    <defaultCache maxElementsInMemory="10000" eternal="false"
        timeToIdleSeconds="3600" timeToLiveSeconds="3600"
        overflowToDisk="true" diskPersistent="false"
        diskExpiryThreadIntervalSeconds="120"
        memoryStoreEvictionPolicy="LRU" />
    <cache name="net.nk.entity.DataAttr"  
        maxElementsInMemory="800" eternal="false" overflowToDisk="false"  
        timeToIdleSeconds="3600" timeToLiveSeconds="3600"   /> 
    <cache name="net.nk.entity.SmContentCategory"  
        maxElementsInMemory="800" eternal="false" overflowToDisk="false"  
        timeToIdleSeconds="3600" timeToLiveSeconds="3600"   /> 
</ehcache>

在hibernate的entity.hbm.xml中启动缓存机制

<hibernate-mapping>
    <!--SM_PRODUCT表的hibernate映射描述文件 -->
    <class name="net.nk.entity.SmProduct" table="SM_PRODUCT" >
        <cache usage="read-write" region="net.nk.entity.SmProduct"/>
         <!-- ID -->
        <id name="id" type="string">
            <column name="ID" />
            <generator class="assigned" />
        </id>
        ...
  </class>
        ...
</hibernate-mapping>    

其中类的xml文件中的region设置要和ehcache.xml文件中的保持一致,此处是通过包名+类名的方式。

在调用数据库数据方法时,可采取以下设置:

protected List<POJO> getAll(Class<T> entityClass,boolean iscache) throws SSHException {
        HibernateTemplate ht = getHibernateTemplate();
        if(iscache){
            ht.setCacheQueries(true);
        }
        return ht.find("from "+entityClass.getName());//getHibernateTemplate().loadAll(entityClass);
    }

至此,可以通过放开hibernate的show_sql来查看是否缓存机制生效了

 

Spring控制Hibernate的缓存机制ehcache

标签:

原文地址:http://www.cnblogs.com/hwaggLee/p/4438007.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!