日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Hibernate中二級緩存的配置和使用

(一)Hibernate的二級緩存策略的一般過程如下:
 
1) 條件查詢的時候,總是發(fā)出一條select * from table_name where …. (選擇所有字段)這樣的SQL語句查詢數(shù)據(jù)庫,一次獲得所有的數(shù)據(jù)對象。

2) 把獲得的所有數(shù)據(jù)對象根據(jù)ID放入到第二級緩存中。

3) 當(dāng)Hibernate根據(jù)ID訪問數(shù)據(jù)對象的時候,首先從Session一級緩存中查;查不到,如果配置了二級緩存,那么從二級緩存中查;查不到,再查詢數(shù)據(jù)庫,把結(jié)果按照ID放入到緩存。

4) 刪除、更新、增加數(shù)據(jù)的時候,同時更新緩存。
 
Hibernate的二級緩存策略,是針對于ID查詢的緩存策略,對于條件查詢則毫無作用。為此,Hibernate提供了針對條件查詢的Query Cache。

(二)什么樣的數(shù)據(jù)適合存放到第二級緩存中?

1 很少被修改的數(shù)據(jù)

2 不是很重要的數(shù)據(jù),允許出現(xiàn)偶爾并發(fā)的數(shù)據(jù)

3 不會被并發(fā)訪問的數(shù)據(jù)

4 參考數(shù)據(jù),指的是供應(yīng)用參考的常量數(shù)據(jù),它的實例數(shù)目有限,它的實例會被許多其他類的實例引用,實例極少或者從來不會被修改。

(三)不適合存放到第二級緩存的數(shù)據(jù)?

1 經(jīng)常被修改的數(shù)據(jù)

2 財務(wù)數(shù)據(jù),絕對不允許出現(xiàn)并發(fā)

3 與其他應(yīng)用共享的數(shù)據(jù)。

實踐部分:

使用EhCache配置二級緩存
 
配置準備:
 
1)把ehcache-1.2.3.jar加入到當(dāng)前應(yīng)用的classpath中。

2)在hibernate.cfg.xml文件中加入EhCache緩存插件的提供類。

 
 
 
  1.    
  2.    
  3.     org.hibernate.cache.EhCacheProvider   
  4.   

3)挎貝ehcache.xml文件到類路徑(項目工程的src目錄下),這個文件在Hibernate安裝目錄的etc下。
 
配置步驟:
 
Hibernate允許在類和集合的粒度上設(shè)置第二級緩存。在映射文件中,元素都有一個子元素,這個子元素用來配置二級緩存。
示例:以category(產(chǎn)品類別)和product(產(chǎn)品)的映射為例:

1) 修改要配置緩存的那個持久化類的對象關(guān)系映射文件:

Category.hbm.xml

 
 
 
  1.    
  2. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">   
  3.    
  4.        
  5.        
  6.              配置緩存,必須緊跟在class元素后面   
  7.             對緩存中的Category對象采用讀寫型的并發(fā)訪問策略   
  8.         -->   
  9.           
  10.          
  11.           
  12.               
  13.               
  14.           
  15.           
  16.           
  17.          
  18.           
  19.               
  20.           
  21.          
  22.           
  23.               
  24.           
  25.          
  26.           
  27.               
  28.               
  29.              
  30.               
  31.               
  32.           
  33.          
  34.        
  35.    
  36.  

Product.hbm.xml

 
 
 
  1.    
  2. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">   
  3.    
  4.        
  5.          
  6.           
  7.          
  8.           
  9.               
  10.               
  11.           
  12.           
  13.           
  14.          
  15.           
  16.               
  17.           
  18.          
  19.           
  20.               
  21.           
  22.          
  23.           
  24.               
  25.           
  26.          
  27.           
  28.               
  29.           
  30.          
  31.        
  32.                 column="categoryId"   
  33.                class="org.qiujy.domain.cachedemo.Category"   
  34.                cascade="save-update"   
  35.                 not-null="true">   
  36.            
  37.          
  38.        
  39.    

2)編輯ehcache.xml文件:

 
 
 
  1.    
  2.        
  3.     
  4.         maxElementsInMemory="10000"   
  5.         eternal="false"   
  6.         timeToIdleSeconds="120"   
  7.         timeToLiveSeconds="120"   
  8.         overflowToDisk="true"     
  9.         />   
  10.           
  11.        
  12.     
  13.         maxElementsInMemory="100"   
  14.         eternal="true"   
  15.         timeToIdleSeconds="0"   
  16.         timeToLiveSeconds="0"   
  17.         overflowToDisk="false"   
  18.         />   
  19.           
  20.         
  21.      
  22.         maxElementsInMemory="500"   
  23.         eternal="false"   
  24.         timeToIdleSeconds="300"   
  25.         timeToLiveSeconds="600"   
  26.         overflowToDisk="true"   
  27.         />   
  28.           
  29.     
  30.         maxElementsInMemory="500"   
  31.         eternal="false"   
  32.         timeToIdleSeconds="300"   
  33.         timeToLiveSeconds="600"   
  34.         overflowToDisk="true"   
  35.         />   
  36.       
  37.    

在Spring托管的Hibernate中使用二級緩存 1.在spring的配置文件中,hibernate部分加入 xml 代碼 org.hibernate.cache.EhCacheProvider true 2.為HBM表設(shè)置cache策略 xml 代碼 3.在DAO中,調(diào)用find方法查詢之前,設(shè)置使用緩存 Java代碼 getHibernateTemplate().setCacheQueries(true); 補充: 如果不設(shè)置“查詢緩存”,那么hibernate只會緩存使用load()方法獲得的單個持久化對象,如果想緩存使用findall()、list()、Iterator()、createCriteria()、createQuery()等方法獲得的數(shù)據(jù)結(jié)果集的話,就需要設(shè)置 hibernate.cache.use_query_cache true 才行。

【編輯推薦】

  1. Hibernate查詢方法之探析
  2. Hibernate的性能優(yōu)化
  3. 淺談HibernateTemplate類的使用
  4. Hibernate一對多,多對一,多對多,一對一關(guān)系匯總
  5. 關(guān)于Struts+Hibernate分頁的問題

新聞標題:Hibernate中二級緩存的配置和使用
網(wǎng)址分享:http://www.dlmjj.cn/article/coddehp.html