0
点赞
收藏
分享

微信扫一扫

Hibernate缓存机制


 
 
Hibernate缓存分类:





Hibernate的缓存范围






  事务范围的缓存只能被当前事务访问,每个事务都有各自的缓存,缓存内的数据通常采用相互关联的对象形式.缓存的生命周期依赖于事务的生命周期,只有当事务结束时,缓存的生命周期才会结束.事务范围的缓存使用内存作为存储介质,一级缓存就属于事务范围. 

  应用程序的缓存可以被应用范围内的所有事务共享访问.缓存的生命周期依赖于应用的生命周期,只有当应用结束时,缓存的生命周期才会结束.应用范围的缓存可以使用内存或硬盘作为存储介质,二级缓存就属于应用范围. 

  在集群环境中,缓存被一个机器或多个机器的进程共享,缓存中的数据被复制到集群环境中的每个进程节点,进程间通过远程通信来保证缓存中的数据的一致,缓存中的数据通常采用对象的松散数据形式. 



一级缓存的管理:

  evit(Object obj) 将指定的持久化对象从一级缓存中清除,释放对象所占用的内存资源,指定对象从持久化状态变为脱管状态,从而成为游离对象. 
  clear() 将一级缓存中的所有持久化对象清除,释放其占用的内存资源 
  contains(Object obj)  判断指定的对象是否存在于一级缓存中. 
  flush()  刷新一级缓存区的内容,使之与数据库数据保持同步. 

  二级缓存的管理:
  
   evict(Class arg0, Serializable arg1) 将某个类的指定ID的持久化对象从二级缓存中清除,释放对象所占用的资源. 
 

 


1. sessionFactory.evict(Customer.class, new Integer(1));



  

evict(Class arg0) 将指定类的所有持久化对象从二级缓存中清除,释放其占用的内存资源. 

 

    1. sessionFactory.evict(Customer.class);



      

    evictCollection(String arg0) 将指定类的所有持久化对象的指定集合从二级缓存中清除,释放其占用的内存资源. 

     

    1. sessionFactory.evictCollection("Customer.orders");




    Hibernate的二级缓存的配置




    不适合 加载到二级缓存中: 

    1.经常被修改的数据 


    2.绝对不允许出现并发访问的数据 


    3.与其他应用共享的数据 


    合适 加载到二级缓存中: 

    1.数据更新频率低 


    2.允许偶尔出现并发问题的非重要数据 


    3.不会被并发访问的数据 


    4.常量数据 


    5.不会被第三方修改的数据 

    org.hibernate.cache.EhCacheProvider 
     
     org.hibernate.cache.OSCacheProvider 
     
     org.hibernate.cache.SwarmCacheProvider 
     
     org.hibernate.cache.TreeCacheProvider



    org.hibernate.cache.EhCacheProvider true " quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> 
        

    Hibernate缓存机制_缓存


    1. <</span>hibernate-configuration>  
    2.   <</span>session-factory>  
    3.        
    4.      <</span>property name="hibernate.cache.provider_class">  
    5.         org.hibernate.cache.EhCacheProvider  
    6.      </</span>property>  
    7.        
    8.      <</span>property name="hibernate.cache.use_query_cache">  
    9.         true  
    10.      </</span>property>  
    11.   </</span>session-factory>  
    12. </</span>hibernate-configuration>





    " quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">

    Hibernate缓存机制_缓存

    1. <</span>ehcache>  
    2.    
    3.  <</span>diskStore path="java.io.tmpdir"/>  
    4.    <</span>defaultCache maxElementsInMemory="10000" eternal="false"  timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true"/>  
    5. </</span>ehcache>





    " quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> 
        
    
    


    举报

    相关推荐

    0 条评论