程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Hibernate <一級緩存>,hibernate一級緩存

Hibernate <一級緩存>,hibernate一級緩存

編輯:Oracle教程

Hibernate <一級緩存>,hibernate一級緩存


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();  

          }  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved