Hibernate整合EHCache插件实现二级缓存

Hibernate整合EHCache实现二级缓存的步骤如下:

1. 导入EHCache和Hibernate EHCache依赖包。在Maven项目中添加:

<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>2.10.4</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-ehcache</artifactId>
    <version>5.2.17.Final</version>
</dependency>

2. 配置EHCache。在src目录下添加ehcache.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
         updateCheck="false">
    <!-- 默认缓存区 --> 
    <defaultCache eternal="false" memoryStoreEvictionPolicy="LFU"
                  timeToLiveSeconds="1000" timeToIdleSeconds="1000" overflowToDisk="false"
                  diskPersistent="false" diskExpiryThreadIntervalSeconds="120" />

    <!-- 实体缓存区 -->
    <cache name="com.itranswarp.learnjava.hibernate.Customer"
           eternal="false" memoryStoreEvictionPolicy="LFU"
           timeToLiveSeconds="100000" timeToIdleSeconds="100000"
           overflowToDisk="false" diskPersistent="false" diskExpiryThreadIntervalSeconds="120"
           />
</ehcache>

3. 配置Hibernate使用EHCache。在hibernate.cfg.xml中添加:

<property name="hibernate.cache.region.factory_class"> 
    org.hibernate.cache.ehcache.EhCacheRegionFactory 
</property>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="net.sf.ehcache.configurationResourceName">
    ehcache.xml 
</property>

4. 实体类添加@Cacheable注解。在实体类Customer上添加:

@Cacheable
@Entity
public class Customer {
} 

5. Session执行查询。当Session执行查询后,结果将被添加到二级缓存中;再次执行相同查询时将直接从缓存中获取结果,提高效率。

List<Customer> list = session.createQuery("from Customer").list(); 
List<Customer> list2 = session.createQuery("from Customer").list(); 

第二次查询results2将直接从EHCache缓存中获取。

以上步骤实现了Hibernate框架与EHCache的整合,实现了查询结果的二级缓存,可以很大程度提高数据库访问效率。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论