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的目录是错误的,所有你配置好之后启动,会报错。下面是正确的配置:

 
true
 
true  
 
org.hibernate.cache.ehcache.EhCacheRegionFactory

classpath:ehcache.xml

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);
这样二级缓存就完成了。

你可能感兴趣的:(hibernate,缓存,ehcache,二级缓存)