hibernate中快取的初步認識

2021-06-22 06:23:38 字數 1479 閱讀 2248

目的是為了減少應用程式對物理資料來源訪問的次數,從而提高應用程式的執行效能

. 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的本質 處理物件和關係模型之間的轉...