日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Hibernate緩存分類,范圍及管理配置

緩存是位于應(yīng)用程序與物理數(shù)據(jù)源之間,用于臨時(shí)存放復(fù)制數(shù)據(jù)的內(nèi)存區(qū)域,目的是為了減少應(yīng)用程序?qū)ξ锢頂?shù)據(jù)源訪問(wèn)的次數(shù),從而提高應(yīng)用程序的運(yùn)行性能.

我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、太平ssl等。為近1000家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的太平網(wǎng)站制作公司

Hibernate在查詢數(shù)據(jù)時(shí),首先到緩存中去查找,如果找到就直接使用,找不到的時(shí)候就會(huì)從物理數(shù)據(jù)源中檢索,所以,把頻繁使用的數(shù)據(jù)加載到緩存區(qū)后,就可以大大減少應(yīng)用程序?qū)ξ锢頂?shù)據(jù)源的訪問(wèn),使得程序的運(yùn)行性能明顯的提升.

Hibernate緩存分類:

Session緩存,一級(jí)緩存.

SessionFactory的緩存分為內(nèi)置緩存和外置緩存.內(nèi)置緩存中存放的是SessionFactory對(duì)象的一些集合屬性包含的數(shù)據(jù)(映射元素?fù)?jù)及預(yù)定義SQL語(yǔ)句等),對(duì)于應(yīng)用程序來(lái)說(shuō),它是只讀的.外置緩存中存放的是數(shù)據(jù)庫(kù)數(shù)據(jù)的副本,其作用和一級(jí)緩存類似.二級(jí)緩存除了以內(nèi)存作為存儲(chǔ)介質(zhì)外,還可以選用硬盤等外部存儲(chǔ)設(shè)備.

Hibernate的緩存范圍

Hibernate的一級(jí)緩存和二級(jí)緩存都位于均位于持久層,且均用于存放數(shù)據(jù)庫(kù)數(shù)據(jù)的副本,最大的區(qū)別就是緩存的范圍各不一樣.

緩存的范圍分為3類:

1.事務(wù)范圍

   事務(wù)范圍的緩存只能被當(dāng)前事務(wù)訪問(wèn),每個(gè)事務(wù)都有各自的緩存,緩存內(nèi)的數(shù)據(jù)通常采用相互關(guān)聯(lián)的對(duì)象形式.緩存的生命周期依賴于事務(wù)的生命周期,只有當(dāng)事務(wù)結(jié)束時(shí),緩存的生命周期才會(huì)結(jié)束.事務(wù)范圍的緩存使用內(nèi)存作為存儲(chǔ)介質(zhì),一級(jí)緩存就屬于事務(wù)范圍.

2.應(yīng)用范圍

   應(yīng)用程序的緩存可以被應(yīng)用范圍內(nèi)的所有事務(wù)共享訪問(wèn).緩存的生命周期依賴于應(yīng)用的生命周期,只有當(dāng)應(yīng)用結(jié)束時(shí),緩存的生命周期才會(huì)結(jié)束.應(yīng)用范圍的緩存可以使用內(nèi)存或硬盤作為存儲(chǔ)介質(zhì),二級(jí)緩存就屬于應(yīng)用范圍.

3.集群范圍

在集群環(huán)境中,緩存被一個(gè)機(jī)器或多個(gè)機(jī)器的進(jìn)程共享,緩存中的數(shù)據(jù)被復(fù)制到集群環(huán)境中的每個(gè)進(jìn)程節(jié)點(diǎn),進(jìn)程間通過(guò)遠(yuǎn)程通信來(lái)保證緩存中的數(shù)據(jù)的一致,緩存中的數(shù)據(jù)通常采用對(duì)象的松散數(shù)據(jù)形式.

Hibernate緩存管理

一級(jí)緩存的管理:

  evit(Object obj)  將指定的持久化對(duì)象從一級(jí)緩存中清除,釋放對(duì)象所占用的內(nèi)存資源,指定對(duì)象從持久化狀態(tài)變?yōu)槊摴軤顟B(tài),從而成為游離對(duì)象.

  clear()  將一級(jí)緩存中的所有持久化對(duì)象清除,釋放其占用的內(nèi)存資源

  contains(Object obj) 判斷指定的對(duì)象是否存在于一級(jí)緩存中.

  flush() 刷新一級(jí)緩存區(qū)的內(nèi)容,使之與數(shù)據(jù)庫(kù)數(shù)據(jù)保持同步.

二級(jí)緩存的管理:

evict(Class arg0, Serializable arg1)  將某個(gè)類的指定ID的持久化對(duì)象從二級(jí)緩存中清除,釋放對(duì)象所占用的資源.

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

   evict(Class arg0)  將指定類的所有持久化對(duì)象從二級(jí)緩存中清除,釋放其占用的內(nèi)存資源.

 
 
 
  1. sessionFactory.evict(Customer.class);   
  2. sessionFactory.evict(Customer.class);

   evictCollection(String arg0)  將指定類的所有持久化對(duì)象的指定集合從二級(jí)緩存中清除,釋放其占用的內(nèi)存資源.

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

Hibernate的二級(jí)緩存的配置

首先,不是所有的數(shù)據(jù)都適合放在二級(jí)緩存中,看一下,什么樣的數(shù)據(jù)適合放在二級(jí)緩存中來(lái)?什么樣的數(shù)據(jù)不適合放在二級(jí)緩存中來(lái)?

  下面這幾種情況就不適合加載到二級(jí)緩存中:

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

  2.絕對(duì)不允許出現(xiàn)并發(fā)訪問(wèn)的數(shù)據(jù)

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

下面這己種情況合適加載到二級(jí)緩存中:

  1.數(shù)據(jù)更新頻率低

  2.允許偶爾出現(xiàn)并發(fā)問(wèn)題的非重要數(shù)據(jù)

  3.不會(huì)被并發(fā)訪問(wèn)的數(shù)據(jù)

  4.常量數(shù)據(jù)

  5.不會(huì)被第三方修改的數(shù)據(jù)

Hibernate的二級(jí)緩存功能是靠配置二級(jí)緩存插件來(lái)實(shí)現(xiàn)的,Hibernate為了集成這些插件,Hibernate提供了org.hibernate.cache.CacheProvider借口,它充當(dāng)緩存插件與Hibernate之間的適配器 .

常用的二級(jí)緩存插件

EHCache  org.hibernate.cache.EhCacheProvider

OSCache  org.hibernate.cache.OSCacheProvider

SwarmCahe  org.hibernate.cache.SwarmCacheProvider

JBossCache  org.hibernate.cache.TreeCacheProvider

簡(jiǎn)單介紹一下EHCache的配置

hibernate.cfg.xml

 
 
 
  1. < hibernate-configuration>   
  2.    < session-factory>   
  3.       < !-- 設(shè)置二級(jí)緩存插件EHCache的Provider類-->   
  4.       < property name="hibernate.cache.provider_class">   
  5.          org.hibernate.cache.EhCacheProvider    
  6.       < /property>   
  7.       < !-- 啟動(dòng)"查詢緩存" -->   
  8.       < property name="hibernate.cache.use_query_cache">   
  9.          true    
  10.       < /property>   
  11.    < /session-factory>   
  12.  < /hibernate-configuration>   
  13.  < hibernate-configuration>
  14.     < session-factory>
  15.        < !-- 設(shè)置二級(jí)緩存插件EHCache的Provider類-->
  16.        < property name="hibernate.cache.provider_class">
  17.           org.hibernate.cache.EhCacheProvider
  18.        < /property>
  19.        < !-- 啟動(dòng)"查詢緩存" -->
  20.        < property name="hibernate.cache.use_query_cache">
  21.           true
  22.        < /property>
  23.     < /session-factory>
  24.   < /hibernate-configuration>

ehcache.xml

 
 
 
  1. < ehcache>   
  2.   < !-- maxElementsInMemory為緩存對(duì)象的最大數(shù)目, eternal設(shè)置是否永遠(yuǎn)不過(guò)期,timeToIdleSeconds對(duì)象處于空閑狀態(tài)的最多秒數(shù),timeToLiveSeconds對(duì)象處于緩存狀態(tài)的最多秒數(shù) -->   
  3.   < diskStore path="java.io.tmpdir"/>   
  4.     < defaultCache maxElementsInMemory="10000" eternal="false"  timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true"/>   
  5. < /ehcache>   
  6. < ehcache>
  7.   < !-- maxElementsInMemory為緩存對(duì)象的最大數(shù)目, eternal設(shè)置是否永遠(yuǎn)不過(guò)期,timeToIdleSeconds對(duì)象處于空閑狀態(tài)的最多秒數(shù),timeToLiveSeconds對(duì)象處于緩存狀態(tài)的最多秒數(shù) -->
  8.   < diskStore path="java.io.tmpdir"/>
  9.     < defaultCache maxElementsInMemory="10000" eternal="false"  timeToIdleSeconds="300" timeToLiveSeconds="600" overflowToDisk="true"/>
  10. < /ehcache>

****.hbm.xml

 
 
 
  1. < ?xml version="1.0" encoding='UTF-8'?>   
  2. < !DOCTYPE hibernate-mapping PUBLIC    
  3.                             "-//Hibernate/Hibernate Mapping DTD 3.0//EN"    
  4.                             "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >   
  5.    
  6. < hibernate-mapping>   
  7.          
  8.    < class>   
  9.        < !-- 設(shè)置該持久化類的二級(jí)緩存并發(fā)訪問(wèn)策略 read-only read-write nonstrict-read-write transactional-->   
  10.        < cache usage="read-write"/>        
  11.    < /class>   
  12.    
  13. < /hibernate-mapping>

新聞名稱:Hibernate緩存分類,范圍及管理配置
網(wǎng)站路徑:http://www.5511xx.com/article/dphgijc.html