hibernate 二级缓存配置

阅读更多
1.配置hbm.xml

在class节点下面添加 (读写) 或者  (只读)

如:

 
 
     
     
 

 
     
 

  .....
      


2.配置spring文件
//打开hibernate二级缓存
hibernate.cache.use_sencond_levl_cache=true
//设置缓存加载类
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
//设置查询缓存
hibernate.cache.use_query_cache=true

具体配置:

  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
 
 
 
  
  
     

   hibernate.hbm2ddl.auto
   hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
   hibernate.query.substitutions=true 1, false 0
   hibernate.jdbc.batch_size=20
   hibernate.hbm2ddl.auto=update
   hibernate.show_sql=true
   
   hibernate.cache.use_sencond_levl_cache=true
   hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
   hibernate.cache.use_query_cache=true
   
   
  
  
  
  
    
     classpath:/com/hxy/portal/hibernate
    
    
 



3.编写ehcache.xml 配置文件

 
 
 
              
 
 
     
           
           
  

4.使用查询方法
  /****
   * 根据hql查询List
   */
  public List findCacheListByHql(final String hql) {
   // TODO Auto-generated method stub
   return this.getHibernateTemplate().executeFind(new HibernateCallback(){    
    public Object doInHibernate(Session session)
      throws HibernateException, SQLException {
     // TODO Auto-generated method stub
     Query queryObject = session.createQuery(hql);
     //设置是否启用缓存
     queryObject.setCacheable(true);
     if(getHibernateTemplate().getQueryCacheRegion() != null){
      queryObject.setCacheRegion(getHibernateTemplate().getQueryCacheRegion());
     }
     return queryObject.list();
    }
   });
  }

5.缓存仅仅对hql查询生效,如果使用sql更变数据库数据,缓存数据将不会修改,只用使用hql操作数据库才能同步修改缓存数据。

如有疑问,欢迎加入群:283948248 找群主

你可能感兴趣的:(cache,hibernate,java,jdbc)