SPRING4.X HIBERNATE4.X 整合 EHCACHE 注解 ANNOTATE

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

PS: 如果按照原来方式配置,可能会出现以下异常:
Caused by: java.lang.NoClassDefFoundError: org/hibernate/cache/TimestampsRegion

Caused by: java.lang.ClassNotFoundException: org.hibernate.cache.EntityRegion

导入就报错 :说找不到

org.springframework.cache.ehcache.EhCacheManagerFactoryBean这个  

原因是少了spring-context-support.jar 这个包



  org.springframework
  spring-context-support
 


spring4.x hibernate4.x 整合 ehcache 基于 注解 annotate

废话不说 直接贴源码链接 :  https://git.oschina.net/alexgaoyh/alexgaoyh.git

使用ehcache来提高系统的性能,现在用的非常多, 也支持分布式的缓存,在hibernate当中作为二级缓存的实现产品,可以提高查询性能。

pom.xml


    org.hibernate
    hibernate-ehcache
    4.1.6.Final
    

在项目的src下面添加ehcache的配置文件ehcache.xml


	
    

    
    
    
    
		
	
	    
      
	    

spring 集成hibernate 的配置文件中,添加如下配置


true

true
 


     org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory

Spring也使用ehcache, 所以也需要在spring配置文件中添加ehcache的配置

 
	
		
        	classpath:ehcache.xml
        
        
        
    

在类中定义:

@Entity  
@Table(name = "t_user")  
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region="javaClassName")  
public class User implements Serializable {  

}

默认情况下二级缓存只会对load get 之类的方法缓存, 想list iterator 之类的方法也使用缓存 必须跟查询缓存一起使用, 重写查询方法 

.setCacheable(true)

criteria.setCacheable(true).list();

之后进行验证


你可能感兴趣的:(hibernate)