深入學習Hibernate4_04通過 Session 操縱對象

  • Session是什麼?
    • Session 接口是 Hibernate 嚮應用程序提供的操縱數據庫的最主要的接口, 它提供了基本的保存, 更新, 刪除和加載 Java 對象的方法.
    • Session 具有一個緩存, 位於緩存中的對象稱爲持久化對象, 它和數據庫中的相關記錄對應. Session 能夠在某些時間點, 按照緩存中對象的變化來執行相關的 SQL 語句, 來同步更新數據庫, 這一過程被稱爲刷新緩存(flush)
    • 站在持久化的角度, Hibernate 把對象分爲 4 種狀態: 持久化狀態, 臨時狀態, 遊離狀態, 刪除狀態. Session 的特定方法能使對象從一個狀態轉換到另一個狀態. 
  • Session緩存
    • Session接口對於Hibernate  開發人員來說是一個最重要的接口。然而在Hibernate中,實例化的Session是一個輕量級的類,創建和銷燬它都不會佔用很多資源。這在實際項目中確實很重要,因爲在客戶程序中,可能會不斷地創建以及銷燬Session對象,如果Session的開銷太大,會給系統帶來不良影響。但值得注意的是Session對象是非線程安全的,因此在你的設計中,最好是一個線程只創建一個Session對象
    • 在Hibernate的設計者的頭腦中,他們將session看作介於數據連接與事務管理一種中間接口。我們可以將session想象成一個持久對象的緩衝區,Hibernate能檢測到這些持久對象的改變,並及時刷新數據庫。我們有時也稱Session是一個持久層管理器,因爲它包含這一些持久層相關的操作,諸如存儲持久對象至數據庫,以及從數據庫從獲得它們。請注意,Hibernate  的session不同於JSP應用中的HttpSession。當我們使用session這個術語時,我們指的是Hibernate中的session,而我們以後會將HttpSesion對象稱爲用戶session。
    • Session 緩存可減少 Hibernate 應用程序訪問數據庫的頻率。
  • 操作Session緩存的三個方法:flush() , refesh() , clear()
    • flush 緩存
    • refesh
      • refresh():會強制發送select語句,以使session緩存中對象的狀態和數據表中對應的記錄保持一致。
      • 該方法的有效性需要配置事務的隔離級別爲read commited(讀已提交),在hibernate.cfg.xml文件中配置<property name="connection.isolation">2</property>
    • clear
      • clear():清理緩存。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章