目的是為了減少應用程式對物理資料來源訪問的次數,從而提高應用程式的執行效能
. hibernate
如果使用了快取,在查詢資料時,首先到快取中去查詢,如果找到就直接使用,找不到的時候就會從物理資料來源中檢索,所以,把頻繁使用的資料載入到快取區後,就可以大大減少應用程式對物理資料來源的訪問,使得程式的執行效能明顯的提公升.
查詢時使用快取的實現過程為:首先查詢一級快取中是否具有需要的資料,如果沒有,查詢二級快取,如果二級快取中也沒有,此時再執行查詢資料庫的工作。要注意的是:此
3種方式的查詢速度是依次降低的。
hibernate
快取分為二級,第一級存放於
session
中稱為一級快取,預設帶有且不能解除安裝。
第二級是由
sessionfactory
控制的程序級快取
,稱為二級快取也稱為程序級的快取或
sessionfactory
級的快取,二級快取可以被所以的
session
共享。生命週期和
sessionfactory
生命週期一致,
sessionfactory
可以管理二級快取。
一級快取是快取實體物件,
load/get/iterate
查詢實體物件支援一級快取。
evit(object obj) 將指定的持久化物件從一級快取中清除
,釋放物件所占用的記憶體資源,指定物件從持久化狀態變為脫管狀態,從而成為游離物件.
clear() 將一級快取中的所有持久化物件清除
,釋放其占用的記憶體資源
contains(object obj) 判斷指定的物件是否存在於一級快取中.
flush() 重新整理一級快取區的內容
,使之與資料庫資料保持同步. 因為
session
的生命期往往很短,存在於
session
內部的第一級最快快取的生命期當然也很短,所以第一級快取的命中率是很低的。其對系統效能的改善也是很有限的。
二級快取的實現原理與一級快取是一樣的,二級快取也是快取實體物件的。evict(classarg0, serializable arg1) 將某個類的指定
id的持久化物件從二級快取中清除,釋放物件所占用的資源.
1.資料更新頻率低
2.允許偶爾出現併發問題的非重要資料
3.不會被併發訪問的資料
4.常量資料
5.不會被第三方修改的資料
反之,下面情況就不適合使用二級快取
1.經常被修改的資料
2.絕對不允許出現併發訪問的資料
3.與其他應用共享的資料
一級快取和二級快取的互動,如可以禁止將一級快取放到二級快取裡。
查詢快取預設是關閉的,不啟用的。查詢快取是快取普通屬性結果集的,對實體物件的結果集會快取
id。生命週期是,當關聯的表發生修改時,查詢快取的生命週期結束。不緊要在配置檔案裡開啟查詢快取,在程式裡也必須要啟用。
Hibernate中的快取技術
根據我學習的框架的經驗,在shh整合框架中,hibernate是最難學習的了。hibernate中有許多要點,還得掌握一下啊,像懶載入lazy 級聯cascade 事物控制 還有快取和二級快取哦。首先我們先來了解一下快取 所謂快取就是介於應用程式和物理資料來源之間的資料。能夠降低應用程式對物理資料訪...
Hibernate框架中的快取
1.快取的作用 降低程式訪問資料庫頻率,提高程式執行的效能。2.hibernate中的快取有如下幾種 1 一級快取 session 是一直存在的 不能被禁止 2 二級快取 sessionfactory 不是必然的,必須手動配置。二級快取中的資料面向所有session共享 session能獲取到二級快...
hibernate初步認識
堅持每天寫博文,積累下開發中的點點滴滴 jdbc的本質 處理物件和關係模型之間的轉換 1.優點 最底層,效能最高 開發者控制程度最高 2.缺點 使用複雜 重複 太多 需要注意很多細節 如型別需要對應 移植資料庫很麻煩 效能優化需要自己處理 如快取 hibernate的本質 處理物件和關係模型之間的轉...