hibernate的核心類和接口(2)

在實際的Hibernate應用中,使用到的Hibernate核心接口與類並不多。要更深入地使用Hibernate,還需要學習Hibernate的延遲加載緩存處理等高級的內容。下面附上Hibernate核心類和接口的層次圖:
這裏寫圖片描述

  • 最底層的配置文件,在上一講有詳細講解配置。

Configuration 類

    org.hibernate.cfg.Configuration 實例代表了一個應用程序中 Java 類型到SQL數據庫映射的完整集合。作用如下:
  • 負責管理hibernate的配置信息。
  • 讀取hibernate.cfg.xml中的配置信息。
  • 加載hibernate.cfg.xml配置文件中配置的驅動,url,用戶名,密碼,連接池。
  • 管理對象映射文件*.hbm.xml(例:<mapping resource=”com/cmj/domain/Employee.hbm.xml”>)

SessionFactory

當所有映射定義被 org.hibernate.cfg.Configuration 解析後,應用程序必須獲得一個用於構造 org.hibernate.Session 實例的工廠。這個工廠將被應用程序的所有線程共享:

  • 可以緩存sql語句和數據(稱爲session級緩存)
  • 是一個重量級的類,因此我們需要保證一個數據庫,有一個SessionFactroy
  • 通過SessionFactory藉口可以獲得session實例(getCurrentSession(),openSession())

注:openSession()區別getCurrentSession()

1.openSession() 是獲取一個新的session.
2. getCurrentSession () 獲取和當前線程綁定的session,換言之,在同一個線程中,我們獲取的session是同一session,這樣可以利於事務控制
如果希望使用 getCurrentSession 需要配置 hibernate.cfg.xml中配置.
配置:thread將session與線程綁定。
3. 如何選擇
原則:
①如果需要在同一線程中,保證使用同一個Session則,使用getCurrentSession()
②如果在一個線程中,需要使用不同的Session,則使用opentSession()
4. 通過 getCurrentSession() 獲取的session在事務提交後,會自動關閉,通過openSession()獲取的session則必須手動關閉
5. 如果是通過getCurrentSession() 獲取 sesssion ,進行查詢需要事務提交.


session(會話)

  1. Session一個實例代表與數據庫的一次操作(當然一次操作可以是crud組合)
  2. Session實例通過SessionFactory獲取,用完需要關閉。
  3. Session是線程不同步的(不安全),因此要保證在同一線程中使用,可以用getCurrentSession()。
  4. Session可以看做是持久化管理器,它是與持久化操作相關的接口

幾個重要的方法

  • 保存一個對象(記錄)—-save方法
  • 刪除一個對象(記錄)—-delete方法
  • 查詢一個對象(記錄)—-get/load方法
  • 修改一個對象(記錄)—-update方法
發佈了40 篇原創文章 · 獲贊 13 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章