熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

hibernate的二級緩存介紹

2013-11-23 20:18:56  來源: Java開源技術 

  hibernate二級緩存是由SessionFactory管理所以又叫SessionFactory級緩存它是通過不同的類庫來實現的比如ehcacheoscache等和一級緩存一樣二級緩存也是用來緩存實體對象的對普通屬性不緩存

  hibernate二級緩存的使用需要進行必要的配置主要是四個地方(這裡以ehcache為例)

  > 配置echcachexml文件

  >開啟二級緩存修改hibernatecfgxml文件

  

  true

  >指定緩存產品提供商修改hibernatecfgxml文件

  

  orghibernatecacheEhCacheProvider

  >指定那些實體類使用二級緩存(兩種方法)

  )在映射文件中采用標簽

  )在hibernatecfgxml文件中采用標簽

  hibernate二級緩存配置上之後就成了客觀存在hibernate在使用某些方法的時候默認就使用和維護了二級緩存(哪怕你出於某種原因希望使用也不行)因此在使用二級緩存時進行一定的控制還是必要的Session就提供了設置使用二級緩存的模式的方法(setCacheMode)來實現當session調用某個方法時對二級緩存的存取改變

  實體類

  
 Studentjava
  public class Student {
  private Integer id;
  private String name;
  //一系列的settergetter方法
  }

  映射文件

  Studenthbmxml

  
  <class name=comsxthibernatecacheentityStudent table=sxt_hibernate_student
         
    <! 指定本類的對象使用二級緩存(這也可以放在hibernatecfgxml中統一指定) 
    <! 
    <cache usage=readonly/> 
     
    <id name=id length=
      <generator class=native></generator> 
    </id> 
    <property name=name length=></property> 
  </class>

   二級緩存配置文件

  ehcachexml

  
  <ehcache> 
  <! 當二級緩存溢出時對象保存的臨時磁盤路徑 
        <diskStore path=javaiotmpdir/> 

        <!name=sampleCache 緩存名字 
                maxElementsInMemory= 緩存裡可存放的最大對象數 
                eternal=true 緩存對象是否永久有效(true表示是) 
                timeToIdleSeconds= 對象在緩存中存活的空閒時間即空閒多久它就失效單位是秒 
                timeToLiveSeconds= 對象在緩存中存活的時間單位是秒 
                overflowToDisk=true    當緩存溢出時對象是否保存到磁盤上保存的磁盤路徑由<diskStore>中的path指定 
        
        <defaultCache 
                maxElementsInMemory= 
                eternal=false 
                timeToIdleSeconds= 
                timeToLiveSeconds= 
                overflowToDisk=true 
                /> 
</ehcache>

  hibernate配置文件

  hibernatecfgxml

  
<hibernateconfiguration> 
  <sessionfactory> 
    <property name=nnectionurl>jdbc:oracle:thin:@localhost::ORCL</property> 
    <property name=nnectiondriver_class>oraclejdbcdriverOracleDriver</property> 
    <property name=nnectionusername>scott</property> 
    <property name=nnectionpassword>yf</property> 
    <property name=hibernatedialect>orghibernatedialectOracleDialect</property> 
    <property name=hibernateshow_sql>true</property> 
     
    <! 開啟二級緩存其實hibernate默認就是開啟的這裡顯示的指定一下 
    <property name=hibernatecacheuse_second_level_cache>true</property> 
    <! 指定二級緩存產品的提供商 
    <property name=hibernatecacheprovider_class>orghibernatecacheEhCacheProvider</property> 
     
    <mapping resource=com/sxt/hibernate/cache/entity/Studenthbmxml/> 
     
    <! 指定那些類使用二級緩存 
    <classcache usage=readonly class=comsxthibernatecacheentityStudent/> 
  </sessionfactory> 
</hibernateconfiguration>

  


From:http://tw.wingwit.com/Article/program/Java/ky/201311/28276.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.