【hibernate】Session快取

00潤物無聲00發表於2017-07-02
  Session 介面是 Hibernate 嚮應用程式提供的操縱資料庫的最主要的介面, 它提供了基本的儲存, 更新, 刪除和載入 Java 物件的方法.

  Session 具有一個快取, 位於快取中的物件稱為持久化物件, 它和資料庫中的相關記錄對應. Session 能夠在某些時間點, 按照快取中物件的變化來執行相關的 SQL 語句, 來同步更新資料庫, 這一過程被稱為重新整理快取(flush)

  理解快取就要先理解物件在JVM中的宣告週期,當應用程式通過new建立一個物件時,jvm會給物件分配一塊記憶體,只要這個物件被引用變數引用,就一直存在記憶體中。

  Java集合中存放的是Java物件的引用,當向集合中新增一個物件時,其實是把物件的引用新增到了集合中。在 Session 介面的實現中包含一系列的 Java 集合, 這些 Java 集合構成了 Session 快取. 只要 Session 例項沒有結束生命週期, 且沒有清理快取,則存放在它快取中的物件也不會結束生命週期


Session的快取的作用

  1.Session 快取可減少 Hibernate 應用程式訪問資料庫的頻率

  2.當快取中持久化物件存在迴圈關聯關係時,Session保證不出現訪問物件圖的死迴圈

  3.資料庫中記錄與快取中物件同步

相關文章