hibernate中一級快取和二級快取的具體區別
阿新 • • 發佈:2019-02-17
一、Session快取(又稱作事務快取):Hibernate內建的,不能卸除。
快取範圍:快取只能被當前Session物件訪問。快取的生命週期依賴於Session的生命週期,當Session被關閉後,快取也就結束生命週期。
Hibernate一些與一級快取相關的操作(時間點):
資料放入快取:
1. save()。當session物件呼叫save()方法儲存一個物件後,該物件會被放入到session的快取中。
2. get()和load()。當session物件呼叫get()或load()方法從資料庫取出一個物件後,該物件也會被放入到session的快取中。
3. 使用HQL和QBC等從資料庫中查詢資料。
二、SessionFactory快取(又稱作應用快取):使用第三方外掛,可插拔。
快取範圍:快取被應用範圍內的所有session共享,不同的Session可以共享。這些session有可能是併發訪問快取,因此必須對快取進行更新。快取的生命週期依賴於應用的生命週期,應用結束時,快取也就結束了生命週期,二級快取存在於應用程式範圍。
適合放到二級快取中:
(1)經常被訪問
(2)改動不大
(3)數量有限
(4)不是很重要的資料,允許出現偶爾併發的資料。
這樣的資料非常適合放到二級快取中的。
使用者的許可權:使用者的數量不大,許可權不多,不會經常被改動,經常被訪問。
快取範圍:快取只能被當前Session物件訪問。快取的生命週期依賴於Session的生命週期,當Session被關閉後,快取也就結束生命週期。
Hibernate一些與一級快取相關的操作(時間點):
資料放入快取:
1. save()。當session物件呼叫save()方法儲存一個物件後,該物件會被放入到session的快取中。
2. get()和load()。當session物件呼叫get()或load()方法從資料庫取出一個物件後,該物件也會被放入到session的快取中。
3. 使用HQL和QBC等從資料庫中查詢資料。
二、SessionFactory快取(又稱作應用快取):使用第三方外掛,可插拔。
快取範圍:快取被應用範圍內的所有session共享,不同的Session可以共享。這些session有可能是併發訪問快取,因此必須對快取進行更新。快取的生命週期依賴於應用的生命週期,應用結束時,快取也就結束了生命週期,二級快取存在於應用程式範圍。
適合放到二級快取中:
(1)經常被訪問
(2)改動不大
(3)數量有限
(4)不是很重要的資料,允許出現偶爾併發的資料。
這樣的資料非常適合放到二級快取中的。
使用者的許可權:使用者的數量不大,許可權不多,不會經常被改動,經常被訪問。