Hibernate+Spring整合使用二级缓存

1.选择缓存的实现 我们一般选择轻量级的EHCache,在hibernate.cft.xml里面的<session-factory>里面配置如下

 

  
  
  1. <!--选择缓存实现-->  
  2. <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>  
  3. <!--开启使用二级缓存-->  
  4.  <property name="hibernate.cache.use_second_level_cache">true</property>  
  5.  
  6.  

 或者已经把hibernate整合到spring中去的,在spring的配置文件applicatioContext.xml中配置如下

 

  
  
  1. <property name="hibernateProperties"> 
  2.             <props> 
  3.                 <!--此处用来定义hibernate的SessionFactory的属性:     
  4.                     不同数据库连接,启动时选择create,update,create-drop--> 
  5.                 <prop key="hibernate.dialect"> 
  6.                     org.hibernate.dialect.MySQL5Dialect 
  7.                 </prop> 
  8.                 <prop key="hibernate.hbm2ddl.auto">update</prop> 
  9.                 <prop key="hibernate.cache.provider_class"> 
  10.                     org.hibernate.cache.EhCacheProvider 
  11.                 </prop> 
  12.                 <!-- 开启使用二级缓存 --> 
  13.                 <prop key="hibernate.cache.use_second_level_cache">true</prop> 
  14.                 <!-- 使用查询缓存 --> 
  15.                 <prop key="hibernate.cache.use_query_cache">true</prop> 
  16.             </props> 
  17.         </property> 

2,选择在相应的映射文件中或者说在对相应的表进行操作时使用二级缓存并指定缓存的策略,例如指定缓存策略为   read-write;

 

  
  
  1. <?xml version="1.0"?> 
  2. <!DOCTYPE hibernate-mapping PUBLIC  
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
  5. <hibernate-mapping package="com.bbs.entity"> 
  6.   <class name="User"> 
  7.       <cache usage="read-write"/> 
  8.    
  9.      <id name="user_id"> 
  10.         <generator class="identity"></generator> 
  11.      </id> 
  12.      <property name="user_name"></property> 
  13.      <property name="user_password"></property> 
  14.      <property name="user_mailbox"></property> 
  15.      <property name="user_image"></property> 
  16.      <property name="user_register_date"></property> 
  17.      <property name="user_articles"></property> 
  18.   </class> 
  19. </hibernate-mapping> 
3,在类路径下面进行EHCache的配置,建立ehchache.xml配置缓存的参数。
   
  
  
  1. <ehcache> 
  2.     <diskStore path="java.io.tmpdir" /> 
  3.     <defaultCache maxElementsInMemory="10000" eternal="false" 
  4.         timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" 
  5.         diskPersistent="false" diskExpiryThreadIntervalSeconds="120" 
  6.         memoryStoreEvictionPolicy="LRU" /> 
  7. </ehcache> 

4.别忘了加相应的包:spring-framework-2.5.6\lib\ehcache\ehcache-1.5.0.jar 还有依赖包spring-framework-2.5.6\lib\concurrent\backport-util-concurrent.jar。

配置完成了,不过我的数据库没设计好,昨天晚上一直是“too many connections”或者直接“out of memory”,现在考虑是用二级缓存,这种情况很少出现,不过提升的不是很高。

 

猜你喜欢

转载自1278051243-qq-com.iteye.com/blog/1095041