常言笑的家

          Spring, Hibernate, Struts, Ajax, RoR

          Hibernate的數(shù)據(jù)緩存

          一般而言,ORM的數(shù)據(jù)緩存應(yīng)包含如下幾個層次:
                1. 事務(wù)級緩存(Transcation Layer Cache)
                2. 應(yīng)用級/進(jìn)程級緩存(Application/Process Layer Cache)
                3. 分布式緩存(Cluster Layer Cache)

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

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

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

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

          posted on 2006-12-16 22:35 常言笑 閱讀(310) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫

          My Links

          Blog Stats

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 武城县| 惠来县| 五指山市| 达拉特旗| 阳江市| 宜君县| 塘沽区| 平泉县| 黄大仙区| 会同县| 禹城市| 贵南县| 莱阳市| 信宜市| 繁峙县| 弋阳县| 旬邑县| 清原| 榆社县| 漠河县| 辉县市| 盐边县| 察雅县| 筠连县| 长宁县| 宜春市| 天镇县| 克什克腾旗| 临夏县| 乌兰县| 黔西县| 仙桃市| 延寿县| 尼木县| 竹溪县| 肥西县| 巴青县| 南涧| 那坡县| 寿阳县| 赣州市|