1. 程式人生 > >hibernate中一級快取和二級快取的具體區別

hibernate中一級快取和二級快取的具體區別

一、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)不是很重要的資料,允許出現偶爾併發的資料。 




這樣的資料非常適合放到二級快取中的。




使用者的許可權:使用者的數量不大,許可權不多,不會經常被改動,經常被訪問。