亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

hibernate 一級緩存和二級緩存

2019-11-14 22:18:53
字體:
來源:轉載
供稿:網友
hibernate 一級緩存和二級緩存

緩存是介于應用程序和物理數據源之間,其作用是為了降低應用程序對物理數據源訪問的頻次,從而提高了應用的運行性能。緩存內的數據是對物理數據源中的數據的復制,應用程序在運行時從緩存讀寫數據,在特定的時刻或事件會同步緩存和物理數據源的數據。

  緩存的介質一般是內存,所以讀寫速度很快。但如果緩存中存放的數據量非常大時,也會用硬盤作為緩存介質。緩存的實現不僅僅要考慮存儲的介質,還要考慮到管理緩存的并發訪問和緩存數據的生命周期。

   Hibernate的緩存包括session的緩存和SessionFactory的緩存,其中SessionFactory的緩存又可以分為兩類:內 置緩存和外置緩存。Session的緩存是內置的,不能被卸載,也被稱為Hibernate的第一級緩存。SessionFactory的內置緩存和 Session的緩存在實現方式上比較相似,前者是SessionFactory對象的一些集合屬性包含的數據,后者是指Session的一些集合屬性包 含的數據。SessionFactory的內置緩存中存放了映射元數據和預定義SQL語句,映射元數據是映射文件中數據的拷貝,而預定義SQL語句是在 Hibernate初始化階段根據映射元數據推導出來,SessionFactory的內置緩存是只讀的,應用程序不能修改緩存中的映射元數據和預定義 SQL語句,因此SessionFactory不需要進行內置緩存與映射文件的同步。SessionFactory的外置緩存是一個可配置的插件。在默認 情況下,SessionFactory不會啟用這個插件。外置緩存的數據是數據庫數據的拷貝,外置緩存的介質可以是內存或者硬盤。 SessionFactory的外置緩存也被稱為Hibernate的第二級緩存。

  Hibernate的這兩級緩存都位于持久化層,存放的都是數據庫數據的拷貝,那么它們之間的區別是什么呢?為了理解二者的區別,需要深入理解持久化層的緩存的兩個特性:緩存的范圍和緩存的并發訪問策略。

  持久化層的緩存的范圍

  緩存的范圍決定了緩存的生命周期以及可以被誰訪問。緩存的范圍分為三類。

  1 事務范圍:緩存只能被當前事務訪問。緩存的生命周期依賴于事務的生命周期,當事務結束時,緩存也就結束生命周期。在此范圍下,緩存的介質是內存。事務可以是數據庫事務或者應用事務,每個事務都有獨自的緩存,緩存內的數據通常采用相互關聯的的對象形式。

   2 進程范圍:緩存被進程內的所有事務共享。這些事務有可能是并發訪問緩存,因此必須對緩存采取必要的事務隔離機制。緩存的生命周期依賴于進程的生命周期,進 程結束時,緩存也就結束了生命周期。進程范圍的緩存可能會存放大量的數據,所以存放的介質可以是內存或硬盤。緩存內的數據既可以是相互關聯的對象形式也可 以是對象的松散數據形式。松散的對象數據形式有點類似于對象的序列化數據,但是對象分解為松散的算法比對象序列化的算法要求更快。

  3 集群范圍:在集群環境中,緩存被一個機器或者多個機器的進程共享。緩存中的數據被復制到集群環境中的每個進程節點,進程間通過遠程通信來保證緩存中的數據的一致性,緩存中的數據通常采用對象的松散數據形式。

  對大多數應用來說,應該慎重地考慮是否需要使用集群范圍的緩存,因為訪問的速度不一定會比直接訪問數據庫數據的速度快多少。

   持久化層可以提供多種范圍的緩存。如果在事務范圍的緩存中沒有查到相應的數據,還可以到進程范圍或集群范圍的緩存內查詢,如果還是沒有查到,那么只有到 數據庫中查詢。事務范圍的緩存是持久化層的第一級緩存,通常它是必需的;進程范圍或集群范圍的緩存是持久化層的第二級緩存,通常是可選的。

  持久化層的緩存的并發訪問策略

  當多個并發的事務同時訪問持久化層的緩存的相同數據時,會引起并發問題,必須采用必要的事務隔離措施。

  在進程范圍或集群范圍的緩存,即第二級緩存,會出現并發問題。因此可以設定以下四種類型的并發訪問策略,每一種策略對應一種事務隔離級別。

  事務型:僅僅在受管理環境中適用。它提供了Repeatable Read事務隔離級別。對于經常被讀但很少修改的數據,可以采用這種隔離類型,因為它可以防止臟讀和不可重復讀這類的并發問題。

  讀寫型:提供了Read Committed事務隔離級別。僅僅在非集群的環境中適用。對于經常被讀但很少修改的數據,可以采用這種隔離類型,因為它可以防止臟讀這類的并發問題。

   非嚴格讀寫型:不保證緩存與數據庫中數據的一致性。如果存在兩個事務同時訪問緩存中相同數據的可能,必須為該數據配置一個很短的數據過期時間,從而盡量 避免臟讀。對于極少被修改,并且允許偶爾臟讀的數據,可以采用這種并發訪問策略。   只讀型:對于從來不會修改的數據,如參考數據,可以使用這種并發訪問策略。

  事務型并發訪問策略是事務隔離級別最高,只讀型的隔離級別最低。事務隔離級別越高,并發性能就越低。

  什么樣的數據適合存放到第二級緩存中?

  1、很少被修改的數據

  2、不是很重要的數據,允許出現偶爾并發的數據

  3、不會被并發訪問的數據

  4、參考數據

  不適合存放到第二級緩存的數據?

  1、經常被修改的數據

  2、財務數據,絕對不允許出現并發

  3、與其他應用共享的數據。

  Hibernate的二級緩存

   如前所述,Hibernate提供了兩級緩存,第一級是Session的緩存。由于Session對象的生命周期通常對應一個數據庫事務或者一個應用事 務,因此它的緩存是事務范圍的緩存。第一級緩存是必需的,不允許而且事實上也無法比卸除。在第一級緩存中,持久化類的每個實例都具有唯一的OID。

   第二級緩存是一個可插拔的的緩存插件,它是由SessionFactory負責管理。由于SessionFactory對象的生命周期和應用程序的整個 過程對應,因此第二級緩存是進程范圍或者集群范圍的緩存。這個緩存中存放的對象的松散數據。第二級對象有可能出現并發問題,因此需要采用適當的并發訪問策 略,該策略為被緩存的數據提供了事務隔離級別。緩存適配器用于把具體的緩存實現軟件與Hibernate集成。第二級緩存是可選的,可以在每個類或每個集 合的粒度上配置第二級緩存。

  Hibernate的二級緩存策略的一般過程如下:

  1) 條件查詢的時候,總是發出一條select * from table_name where …. (選擇所有字段)這樣的SQL語句查詢數據庫,一次獲得所有的數據對象。

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

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

  4) 刪除、更新、增加數據的時候,同時更新緩存。

  Hibernate的二級緩存策略,是針對于ID查詢的緩存策略,對于條件查詢則毫無作用。為此,Hibernate提供了針對條件查詢的Query緩存。

  Hibernate的Query緩存策略的過程如下:

  1) Hibernate首先根據這些信息組成一個Query Key,Query Key包括條件查詢的請求一般信息:SQL, SQL需要的參數,記錄范圍(起始位置rowStart,最大記錄個數maxRows),等。

  2) Hibernate根據這個Query Key到Query緩存中查找對應的結果列表。如果存在,那么返回這個結果列表;如果不存在,查詢數據庫,獲取結果列表,把整個結果列表根據Query Key放入到Query緩存中。

  3) Query Key中的SQL涉及到一些表名,如果這些表的任何數據發生修改、刪除、增加等操作,這些相關的Query Key都要從緩存中清空。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产日韩中文字幕| 亚洲精品中文字| 国产成人高潮免费观看精品| 日韩中文字幕在线视频播放| 成人a级免费视频| 国产精品劲爆视频| 97超碰国产精品女人人人爽| 欧美在线视频一二三| 中文字幕亚洲欧美日韩高清| 亚洲自拍偷拍视频| 国产成人精品视频| 亚洲一区制服诱惑| 懂色av影视一区二区三区| 日本高清+成人网在线观看| 久久夜色精品亚洲噜噜国产mv| 成人国产精品色哟哟| 九色精品免费永久在线| 成人免费视频xnxx.com| 久久精品国产久精国产一老狼| 欧美一级电影在线| 在线播放国产一区中文字幕剧情欧美| 在线亚洲国产精品网| 亚洲欧美国产精品专区久久| 奇米影视亚洲狠狠色| 亚洲**2019国产| 亚洲激情国产精品| 在线观看日韩www视频免费| 国产精品成人播放| 久久色在线播放| 国产精品高清免费在线观看| 91社区国产高清| 成人欧美一区二区三区在线| 88国产精品欧美一区二区三区| 日韩精品免费综合视频在线播放| 欧美二区在线播放| 国产日韩在线观看av| 国产精品成人一区二区| 久久av.com| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲天堂男人的天堂| 国产日韩精品在线播放| 亲爱的老师9免费观看全集电视剧| 亚洲第一级黄色片| 午夜精品一区二区三区在线| 欧美性在线视频| 亚洲欧美精品一区二区| 亚洲少妇激情视频| 久久99久久久久久久噜噜| 久久深夜福利免费观看| 国产精品久久久999| 国产精品久久久久一区二区| 欧美性色xo影院| 久99久在线视频| 91国产视频在线| 日本伊人精品一区二区三区介绍| 美日韩精品视频免费看| 欧美精品激情视频| 欧美激情视频免费观看| 国产伊人精品在线| 成人有码视频在线播放| 尤物精品国产第一福利三区| 久久久国产在线视频| 久久精品视频在线| 欧美一级片免费在线| 亚洲精品日产aⅴ| 亚洲国内精品视频| 国产97色在线| 欧美激情综合色| 久久免费高清视频| 精品亚洲男同gayvideo网站| 欧美综合第一页| 久久久免费精品视频| 精品偷拍各种wc美女嘘嘘| 国产91在线播放九色快色| 欧美日韩精品二区| 国产精品美女无圣光视频| 国产91精品不卡视频| 91成品人片a无限观看| 亚洲国产高清高潮精品美女| 亚洲精品黄网在线观看| 成人信息集中地欧美| 欧美性xxxx极品hd欧美风情| 精品成人乱色一区二区| 按摩亚洲人久久| 97视频人免费观看| 欧美亚洲另类制服自拍| 日韩av网址在线观看| 日韩欧美福利视频| 日韩精品福利网站| 亚洲美女动态图120秒| 成人疯狂猛交xxx| 欧美另类高清videos| 欧美日韩成人黄色| 国产日韩欧美夫妻视频在线观看| 欧美成人四级hd版| 欧美性猛交xxxx富婆| 深夜精品寂寞黄网站在线观看| 日本一区二区在线免费播放| 亚洲v日韩v综合v精品v| 国产欧美在线播放| 亚洲人成亚洲人成在线观看| 日韩精品视频中文在线观看| 亚洲欧美精品一区| 国产精品入口夜色视频大尺度| 欧美午夜影院在线视频| 久久久久久国产三级电影| 亚洲第一男人天堂| 中文字幕视频一区二区在线有码| 久久国产精品久久久久久久久久| 国产精品自产拍在线观看| 欧美一级视频一区二区| 中文在线不卡视频| 日本不卡视频在线播放| 日韩欧美亚洲综合| 欧美精品福利在线| 国产精品夜间视频香蕉| 亚洲人永久免费| 亚洲国产精品人人爽夜夜爽| 久久精品国产电影| 91夜夜揉人人捏人人添红杏| 欧美激情亚洲一区| 久久精品国产免费观看| 精品亚洲永久免费精品| 亚洲国产天堂久久国产91| 欧美国产欧美亚洲国产日韩mv天天看完整| 在线播放日韩专区| 欧美性猛交xxxx黑人猛交| 亚洲欧美综合区自拍另类| 国产一区二区三区在线观看视频| 久久久精品网站| 91九色蝌蚪国产| 日韩中文在线视频| 久久久久久久久久久人体| 国产精品久久久久久久久久久不卡| 久久九九亚洲综合| 日韩在线观看免费av| 国产一区二区三区中文| 最近2019年好看中文字幕视频| 欧美一级淫片丝袜脚交| 成人有码在线播放| 日韩精品极品在线观看播放免费视频| 国产精品久久久久高潮| 欧美日韩亚洲一区二区| 日韩在线观看网址| 91精品国产乱码久久久久久蜜臀| 国产九九精品视频| 国产精品一区二区三区成人| 国产狼人综合免费视频| 久久精品这里热有精品| 亚洲精品国产精品久久清纯直播| 色一情一乱一区二区| 美乳少妇欧美精品| 韩国三级电影久久久久久| 日韩av在线播放资源| 成人激情视频小说免费下载| 欧亚精品中文字幕| 国产精品免费视频xxxx| 亚洲男人av电影| 日韩免费电影在线观看| 在线播放日韩av| 国产香蕉一区二区三区在线视频| 麻豆国产精品va在线观看不卡| 日韩精品中文在线观看| 欧美国产日韩中文字幕在线|