隨筆-57  評(píng)論-202  文章-17  trackbacks-0
                一般而言,ORM的數(shù)據(jù)緩存應(yīng)包含如下幾個(gè)層次:
                1. 事務(wù)級(jí)緩存(Transcation Layer Cache)
                2. 應(yīng)用級(jí)/進(jìn)程級(jí)緩存(Application/Process Layer Cache)
                3. 分布式緩存(Cluster Layer Cache)

                Hibernate數(shù)據(jù)緩存(Cache)分為兩個(gè)層次,以Hibernate語(yǔ)義加以區(qū)分,可分為:
                1. 內(nèi)部緩存(Session Level,也稱(chēng)為一級(jí)緩存)
                2. 二級(jí)緩存(SessionFactory Level,也稱(chēng)為二級(jí)緩存)

                Hibernate中,緩存將在以下情況中發(fā)揮作用:
                1. 通過(guò)id[主鍵]加載數(shù)據(jù)時(shí)
                2. 延遲加載

                內(nèi)部緩存正常情況下由Hibernate自動(dòng)維護(hù),如果需要手動(dòng)干預(yù),可以通過(guò)以下方法完成:
                1. Session.evict
                   將某個(gè)特定對(duì)象從內(nèi)部緩存清除。
                2. Session.clear
                   清空內(nèi)部緩存。

                在Hibernate中,二級(jí)緩存涵蓋了應(yīng)用級(jí)緩存和分布式緩存領(lǐng)域。如果數(shù)據(jù)滿(mǎn)足以下條件,則可將其納入緩存管理。
                1. 數(shù)據(jù)不會(huì)被第三方應(yīng)用修改;
                2. 數(shù)據(jù)大小(Data Size)在可接收的范圍之內(nèi);
                3. 數(shù)據(jù)更新頻率較低;
                4. 同一數(shù)據(jù)可能會(huì)被系統(tǒng)頻繁引用;
                5. 非關(guān)鍵數(shù)據(jù)(關(guān)鍵數(shù)據(jù),如金融帳戶(hù)數(shù)據(jù))。
                Hibernate本身并未提供二級(jí)緩存的產(chǎn)品化實(shí)現(xiàn),而是為眾多的第三方緩存組件提供了接入接口,較常用的第三方組件有:
                1. JCS
                2. EHCache
                3. OSCache
                4. JBossCache
                5. SwarmCache
                Hibernate中啟用二級(jí)緩存,需要在hibernate.cfg.xml配置hibernate.cache.provider_class參數(shù),之后,需要在映射文件中指定各個(gè)映射實(shí)體(以及collection)的緩存同步策略。Hibernate提供了一下4種內(nèi)置的緩存同步策略:
                1. read-only
                   只讀。對(duì)于不會(huì)發(fā)生改變的數(shù)據(jù),可使用只讀型緩存。
                2. nonstrict-read-write
                   如果程序?qū)Σl(fā)訪(fǎng)問(wèn)下的數(shù)據(jù)同步要求不是非常嚴(yán)格,且數(shù)據(jù)更新操作頻率較低,可以采用本選項(xiàng),獲得較好的性能。
                3. read-write
                   嚴(yán)格可讀寫(xiě)緩存。基于時(shí)間戳判定機(jī)制,實(shí)現(xiàn)了“read committed”事務(wù)隔離等級(jí)。可用于對(duì)數(shù)據(jù)同步要求嚴(yán)格的情況,但不支持分布式緩存。這也是實(shí)際應(yīng)用中使用最多的同步策略。
                4. transactional
                   事務(wù)型緩存,必須運(yùn)行在JTA事務(wù)環(huán)境中。
          posted on 2005-06-22 18:15 小米 閱讀(6119) 評(píng)論(5)  編輯  收藏 所屬分類(lèi): Hibernate

          評(píng)論:
          # re: 《深入淺出Hibernate》讀書(shū)筆記(3)——數(shù)據(jù)緩存 2005-11-18 09:06 | outersky
          請(qǐng)教一下,我現(xiàn)在不想用它的cache,該怎么弄。
          因?yàn)槲椰F(xiàn)在是兩臺(tái)服務(wù)器做錯(cuò)誤恢復(fù)的(通過(guò)客戶(hù)端類(lèi)庫(kù)實(shí)現(xiàn)負(fù)載均衡和錯(cuò)誤檢測(cè)),所以如果每個(gè)服務(wù)器都有自己cache的話(huà),如果在一個(gè)hibernate里面剛剛修改過(guò),第二個(gè)hibernate還沒(méi)從數(shù)據(jù)庫(kù)里面load過(guò)來(lái),所以可能會(huì)出現(xiàn)混亂,想把兩邊的cache(應(yīng)該是二級(jí)cache吧)都禁止掉。

          請(qǐng)教一下該如何處理?網(wǎng)上到處都是打開(kāi)cache的,不知道如何禁止。用的是hibernate3,好像默認(rèn)就有二級(jí)cache了。  回復(fù)  更多評(píng)論
            
          # re: 《深入淺出Hibernate》讀書(shū)筆記(3)——數(shù)據(jù)緩存 2005-11-27 16:48 | yumi301
          no,二級(jí)緩存默認(rèn)是沒(méi)有的,
          緩存是對(duì)class和set的而言的,每個(gè)class和set標(biāo)記都有<cache子標(biāo)記來(lái)設(shè)置是否該class放緩存中。  回復(fù)  更多評(píng)論
            
          # re: 《深入淺出Hibernate》讀書(shū)筆記(3)——數(shù)據(jù)緩存 2006-02-28 23:04 | s
          象OSCache都是支持cluster的.不需要關(guān)掉cache.你解決問(wèn)題的方向錯(cuò)了.  回復(fù)  更多評(píng)論
            
          # re: 《深入淺出Hibernate》讀書(shū)筆記(3)——數(shù)據(jù)緩存 2006-05-22 14:55 | jackyhuang
          照本宣科,沒(méi)有一點(diǎn)實(shí)際意義。  回復(fù)  更多評(píng)論
            
          # re: 《深入淺出Hibernate》讀書(shū)筆記(3)——數(shù)據(jù)緩存 2009-05-06 11:02 | ww
          大型的項(xiàng)目,對(duì)系統(tǒng)性能要求比較高的,還是自己控制緩存吧。  回復(fù)  更多評(píng)論
            
          小米,生活在深圳,專(zhuān)注于Java,主要從事數(shù)據(jù)庫(kù)和網(wǎng)頁(yè)編程。現(xiàn)在在學(xué)習(xí)著Hibernate和Spring。喜歡游戲、音樂(lè)和臺(tái)球。聯(lián)系方式:georgehill@21cn.com
          <2005年6月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          常用鏈接

          留言簿(27)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          我的朋友們

          我的鏈接

          搜索

          •  

          積分與排名

          • 積分 - 233982
          • 排名 - 247

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 勃利县| 宝丰县| 灯塔市| 大足县| 临朐县| 孟津县| 军事| 肇源县| 郯城县| 洪江市| 海晏县| 砚山县| 广元市| 衡阳县| 北海市| 钟祥市| 莱芜市| 和林格尔县| 南川市| 宝丰县| 盐山县| 盐边县| 贵溪市| 策勒县| 新余市| 乌拉特前旗| 凤城市| 都江堰市| 杨浦区| 十堰市| 黔西县| 保德县| 兰考县| 琼结县| 抚宁县| 尚义县| 安乡县| 濮阳县| 应城市| 周口市| 长沙县|