Hibernate緩存分為三級:
一級緩存:基於事務級別(內存)的緩存,也可以成為session級別緩存
二級緩存:依賴於第三方,當請求一個對象時,先在緩存裡面查找,如果沒有就執行查詢語句
查詢緩存:基於二級緩存原理如上,將查詢條件作為key,查詢結果作為value放入緩存
因為之前聽課時,老師是三種緩存半天就講完了,加上沒有預習,所以聽的雲裡霧裡,
現在來分別 總結一下,整理思路!
一級緩存:
一級緩存是存放實體類對象的緩存,且他只允許當前線程的用戶使用!
生命周期:session關閉,一級緩存關閉
支持一級緩存的方法:
get,load,itetator,save
這三種方法之間細微的區別:
1.同一session:
兩個get查詢數據時:會執行一級緩存
兩個load查詢數據時:會執行一級緩存
兩個itetartor查詢對象時,n+1查詢一次,第二次查詢時,查詢id,會執行一級緩存
(注意)兩個itetartor查詢普通屬性時,不會執行以及緩存,因為一級緩存只會緩存實體類對象
當對對象保存時,save然後執行查詢,會執行以及緩存
2.不同session:
save,itetator,get,load都不會執行一級緩存,因為 不同session之間不能夠共享,這裡可以測試得出結論
補充:大數據操作:
當執行大數據操作時,應該考略緩存是否溢出的問題
解決辦法,添加代碼
假如我是要添加一萬條數據
我使用for循環進行添加
這時我判斷if(i % 20 ==0)
{
session.flush();
//清空緩存
session.clear();
}