spring + hibernate +ehcache配置

百度了半天,给hibernate配置二级缓存,发现网上好多的资料都是错的。成功之后现总结如下:

1.去官网下载hibernate,其中有两个我们需要的jar包(hibernate的版本要和你项目中的spring版本匹配),本人下载的是hibernate-release-5.0.11.Final

2.在目录hibernate-release-5.0.11.Final\lib\optional\ehcache下,把ehcache-core-2.4.3.jar和hibernate-ehcache-5.0.11.Final.jar添加到项目中

3.因为spring和hibernate整合过了,所以在application.xml中配置ehcache,代码如下:

到这里不得不提一句,hibernate中的坑,在官方hibernate-release-5.0.11.Final\project\etc目录下有个hibernate.properties文件,搜索ehcache可以看到他提供的官方配置

## choose a cache implementation

#hibernate.cache.region.factory_class org.hibernate.cache.infinispan.InfinispanRegionFactory
#hibernate.cache.region.factory_class org.hibernate.cache.infinispan.JndiInfinispanRegionFactory
#hibernate.cache.region.factory_class org.hibernate.cache.internal.EhCacheRegionFactory
#hibernate.cache.region.factory_class org.hibernate.cache.internal.SingletonEhCacheRegionFactory
hibernate.cache.region.factory_class org.hibernate.cache.internal.NoCachingRegionFactory

你会发现其中EhcacheRegionFactory的目录是错误的,所有你配置好之后启动,会报错。下面是正确的配置:

<!-- 开启二级缓存 -->  
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<!-- 启用查询缓存 -->  
<prop key="hibernate.cache.use_query_cache">true</prop>  
<!-- 启用ehcache缓存框架 --> 
<prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>
<!-- 缓存文件的位置 -->

<prop key="hibernate.net.sf.ehcache.configurationResourceName">classpath:ehcache.xml</prop>

4.从下载的hibernate文件中复制一份ehcache.xml配置文件到项目中,ehcache.xml文件的目录为hibernate-release-5.0.11.Final\project\etc。

5.在你需要缓存的类上加 标签代码如下:

@SuppressWarnings("serial")
@Entity
@Table(name = "JCD", catalog = "dc")
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
public class Jcd implements java.io.Serializable {}
6.在查询方法上启用缓存,代码如下:

Query query = session.createQuery(hql).setCacheable(true);
这样二级缓存就完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值