Hibernate4 + Ehcache 配置问题

阅读更多

1、遇到的问题:

 

Caused by: org.hibernate.cache.NoCacheRegionFactoryAvailableException: Second-level cache is used in the application, but property hibernate.cache.region.factory_class is not given, please either disable second level cache or set correct region factory class name to property hibernate.cache.region.factory_class (and make sure the second level cache provider, hibernate-infinispan, for example, is available in the classpath).
	at org.hibernate.cache.internal.NoCachingRegionFactory.buildTimestampsRegion(NoCachingRegionFactory.java:87)
	at org.hibernate.cache.spi.UpdateTimestampsCache.(UpdateTimestampsCache.java:63)
	at org.hibernate.internal.CacheImpl.(CacheImpl.java:72)
	at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:40)
	at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:35)
	at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:91)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:176)
	... 25 more

 

 解决办法:

 

在网上查了资料,了解hibernate4.0在hibernate.cfg.xml配置二级缓存和hibernate3.3有所不同,本例子用的是 Hibernate-core.4.1.7.Final+ ehcache-core.2.6.0,用query的话就要配置查询缓存喽

 

4.0配置如下:

true
hibernate.cache.region.factory_class
">org.hibernate.cache.ehcache.EhCacheRegionFactory

3.3配置如下:

true

name="cache.provider_class ">org.hibernate.cache.EhCacheProvider


完整的二级缓存配置:配置之前先拷贝一个ehcache.xml文件到src文件下

 

  1. hibernate.cfg.xml 设定: true
    org.hibernate.cache.ehcache.EhCacheRegionFactory
  2. @Cache注解(由hibernate扩展提供)     @Cache(usage=CacheConcurrencyStrategy.READ_WRITE)
  3. 用load测试(二级缓存是SessionFactory级别的缓存)

需要在pom.xml中添加


  org.hibernate
  hibernate-ehcache
  4.1.7.Final

 否则会报错:

Unable to load class [org.hibernate.cache.ehcache.EhCacheRegionFactory]

 

你可能感兴趣的:(Hibernate4 + Ehcache 配置问题)