Hibernate学习笔记----二级缓存

使用二级缓存的步骤:

1.加入二级缓存所需要的jar包和配置文件

1).加入hibernate-release-4.3.11.Final/lib/optional/ehcache下的jar包

2).加入hibernate-release-4.3.11.Final/project/etc/ehcache.xml到类目录下

2.配置hibernate.cfg.xml

1).配置启用二级缓存

<propertyname="cache.use_second_level_cache">trueproperty>

2).配置使用二级缓存的产品

<propertyname="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactoryproperty>

(注意:如果在hibernate.properties里面直接拷这个路径是有问题的,建议在引用包里面直接找)

3).配置哪些类使用了二级缓存

实际上也可以在hbm.xml文件中配置对哪些类使用二级缓存,以及二级缓存的策略是什么。

例子:

hibernate.cfg.xml




    
    		  
        root  
        123456  
        com.mysql.jdbc.Driver  
        jdbc:mysql:///hibernate  
  
          
          
        org.hibernate.dialect.MySQLInnoDBDialect  
          
        true  
          
        true  
          
        update  
        
          
         
       10  
         
       5  
         
       2  
  
         
       2000  
         
       2000  
  
         
       10  
  
  
         
         
       100  
  
         
       30  

       
        	true
        	
        	org.hibernate.cache.ehcache.EhCacheRegionFactory
        
        
        
        
        
        
    
hbm.xml





    
    	
        
            
            
        
        
            
        
        
            
        
        
            
        
        
        
    
     :minSal AND e.salary < :maxSal]]>

2.对集合使用二级缓存

1.在cfg.xml中配置




 

2.在hbm.xml


        		
            
                
            
            
        
注意:还需要配置集合中的元素对应的持久化类也使用二级缓存

3.ehcache.xml配置详解



    
         
    


    
        
          
    

    

    
        
    

    
     -->

    


4.查询缓存

默认情况下,设置的缓存对HQL及QBC查询时无效,但是可以通过以下方式时期有效
1).在hibernate配置文件中声明开启查询缓存

<property name="cache.use_query_cache">trueproperty>


2).再调用Query或者Criteria中的setCacheable(true)

@Test
	public void testQuerySecondLevelCache()
	{
		Query query = session.createQuery("FROM Employee");
		query.setCacheable(true);
		
		List employees = query.list();
		System.out.println(employees.size());
		employees = query.list();
		System.out.println(employees.size());
		
	}


3).查询缓存依赖于二级缓存



你可能感兴趣的:(Hibernate)