<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,  comments - 11,  trackbacks - 0

    二級緩存

    ?????? 與Session相對的是,SessionFactory也提供了相應(yīng)的緩存機(jī)制。SessionFactory緩存可以依據(jù)功能和目的的不同而劃分為內(nèi)置緩存和外置緩存。

    ?????? SessionFactory的內(nèi)置緩存中存放了映射元數(shù)據(jù)和預(yù)定義SQL語句,映射元數(shù)據(jù)是映射文件中數(shù)據(jù)的副本,而預(yù)定義SQL語句是在Hibernate初始化階段根據(jù)映射元數(shù)據(jù)推導(dǎo)出來的。SessionFactory的內(nèi)置緩存是只讀的,應(yīng)用程序不能修改緩存中的映射元數(shù)據(jù)和預(yù)定義SQL語句,因此SessionFactory不需要進(jìn)行內(nèi)置緩存與映射文件的同步。

    ?????? SessionFactory的外置緩存是一個可配置的插件。在默認(rèn)情況下,SessionFactory不會啟用這個插件。外置緩存的數(shù)據(jù)是數(shù)據(jù)庫數(shù)據(jù)的副本,外置緩存的介質(zhì)可以是內(nèi)存或者硬盤。SessionFactory的外置緩存也被稱為Hibernate的二級緩存。

    ?????? Hibernate的二級緩存的實現(xiàn)原理與一級緩存是一樣的,也是通過以ID為key的Map來實現(xiàn)對對象的緩存。

    ?????? 由于Hibernate的二級緩存是作用在SessionFactory范圍內(nèi)的,因而它比一級緩存的范圍更廣,可以被所有的Session對象所共享。

    二級緩存的工作內(nèi)容

    ?????? Hibernate的二級緩存同一級緩存一樣,也是針對對象ID來進(jìn)行緩存。所以說,二級緩存的作用范圍是針對根據(jù)ID獲得對象的查詢。

    ?????? 二級緩存的工作可以概括為以下幾個部分:

    ●?? 在執(zhí)行各種條件查詢時,如果所獲得的結(jié)果集為實體對象的集合,那么就會把所有的數(shù)據(jù)對象根據(jù)ID放入到二級緩存中。

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

    ●?? 刪除、更新、增加數(shù)據(jù)的時候,同時更新緩存。

    二級緩存的適用范圍

    ?????? Hibernate的二級緩存作為一個可插入的組件在使用的時候也是可以進(jìn)行配置的,但并不是所有的對象都適合放在二級緩存中。

    ?????? 在通常情況下會將具有以下特征的數(shù)據(jù)放入到二級緩存中:

    ●?? 很少被修改的數(shù)據(jù)。

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

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

    ●?? 參考數(shù)據(jù)。

    ?????? 而對于具有以下特征的數(shù)據(jù)則不適合放在二級緩存中:

    ●?? 經(jīng)常被修改的數(shù)據(jù)。

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

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

    ?????? 在這里特別要注意的是對放入緩存中的數(shù)據(jù)不能有第三方的應(yīng)用對數(shù)據(jù)進(jìn)行更改(其中也包括在自己程序中使用其他方式進(jìn)行數(shù)據(jù)的修改,例如,JDBC),因為那樣Hibernate將不會知道數(shù)據(jù)已經(jīng)被修改,也就無法保證緩存中的數(shù)據(jù)與數(shù)據(jù)庫中數(shù)據(jù)的一致性。

    二級緩存組件

    ?????? 在默認(rèn)情況下,Hibernate會使用EHCache作為二級緩存組件。但是,可以通過設(shè)置hibernate.cache.provider_class屬性,指定其他的緩存策略,該緩存策略必須實現(xiàn)org.hibernate.cache.CacheProvider接口。

    ?????? 通過實現(xiàn)org.hibernate.cache.CacheProvider接口可以提供對不同二級緩存組件的支持。

    ?????? Hibernate內(nèi)置支持的二級緩存組件如表14.1所示。

    表14.1??? Hibernate所支持的二級緩存組件

    posted on 2009-07-19 21:23 jadmin 閱讀(49) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 麻豆最新国产剧情AV原创免费 | 国产免费怕怕免费视频观看| 亚洲精品在线网站| 无码精品人妻一区二区三区免费看| 亚洲AV无码一区二区三区系列 | ww4545四虎永久免费地址| 亚洲小说图片视频| 97在线观免费视频观看| 国内精品久久久久影院亚洲 | 国产亚洲精aa成人网站| 手机看片国产免费永久| 亚洲欧洲日产国码久在线观看| 一区二区三区观看免费中文视频在线播放 | 麻豆精品成人免费国产片| 亚洲精品成人av在线| 精品国产免费人成电影在线观看| 亚洲午夜久久久精品电影院| 最近中文字幕免费mv视频8| 国产AV无码专区亚洲AV麻豆丫| 日韩亚洲变态另类中文| 亚洲AV成人精品日韩一区| 国产在线ts人妖免费视频| 全部一级一级毛片免费看| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 午夜影视在线免费观看| 成年网站免费入口在线观看| 亚洲色欲久久久综合网| 成人免费的性色视频| 亚洲国产成人AV网站| 久久九九亚洲精品| 国产精品色拉拉免费看| 国产综合成人亚洲区| 亚洲成av人片在线观看无码不卡| 69国产精品视频免费| 久久水蜜桃亚洲AV无码精品| 国产成人无码综合亚洲日韩| 成人毛片免费播放| a级毛片100部免费观看| 亚洲精品无码高潮喷水A片软| 亚洲综合日韩久久成人AV| 最新中文字幕免费视频|