Hibernate4 + ehcache

来源:互联网 发布:淘宝商城黄金首饰 编辑:程序博客网 时间:2024/06/09 23:49

转载自http://suene.iteye.com/blog/1753372


Hibernate4 + ehcache.

    博客分类: 
  • java
hibernate企业应用 
开篇先写结论: 
Hibernate4 想使用 ehcache 时做二级缓存时,不使用 EHCache 提供的:hibernate.cache.region.factory_class 
请无视 EHcache 网站上的 document , 那是针对 Hibernate 3.X 的. 
Hibernate 4.X 有自己对其他 Cache 框架的支持. 


具体修改的地方: 
1.Hibernate Properties 配置. 
Java代码  收藏代码
  1. hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory  


2. Maven pom 文件. 
* 去掉 ehcache-core 依赖. 
* 添加 cglib 依赖. 
* 添加 hibernate-ehcache 依赖. 
    (这个会获取它所依赖的 ehcache 版本,同样有其他 cache 缓存框架的支持, oscach jbossCache等 ) 

3. your_ehcache.xml 
e.g: 
Java代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <ehcache>  
  3.     <defaultCache maxElementsInMemory="1000" eternal="false" timeToIdleSeconds="3600" timeToLiveSeconds="3600"  
  4.         overflowToDisk="false">  
  5.     </defaultCache>  
  6.     <cache name="org.hibernate.cache.internal.StandardQueryCache" maxElementsInMemory="5" eternal="false" timeToLiveSeconds="120">  
  7.     </cache>  
  8.     <cache name="org.hibernate.cache.spi.UpdateTimestampsCache" maxElementsInMemory="5000" eternal="true">  
  9.     </cache>  
  10. </ehcache>  


4. Java Class 
e.g. 
Java代码  收藏代码
  1. @Entity  
  2. @Table(name = "t_user")  
  3. @Cacheable  
  4. @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)  
  5. public class User{...}  


PS: 如果按照原来方式配置,可能会出现以下异常: 

Caused by: java.lang.NoClassDefFoundError: org/hibernate/cache/TimestampsRegion 
Caused by: java.lang.ClassNotFoundException: org.hibernate.cache.EntityRegion 

0 0