hibernate 入門

SessionFactory bean 負責建立,維護,關閉和重新整理 TransactionManager 要求建立的所有資料庫會話。這就是為什麼我們將 SessionFactory 自動裝入 DAO 並通過它執行所有查詢。

新 Hibernate 使用者提出的最大問題之一是“我的更改何時會被提交?” 當你想到 TransactionManager 如何與 SesisonFactory 一起工作時,答案才有意義。退出使用 @Transactional 註釋的服務方法時,將重新整理並提交你的資料庫更改。這樣做的原因是,交易應該代表一個不間斷工作的單一單位。如果裝置出現問題,則假設裝置發生故障並且所有更改都應該回滾。因此,當你退出最初呼叫的服務方法時,SessionFactory 將重新整理並清除會話。

這並不是說在交易進行時它也不會重新整理和清除會話。例如,如果我呼叫一個服務方法來新增一個包含 5 個物件的集合並返回資料庫中物件的總數,則 SessionFactory 會意識到查詢(SELECT COUNT(*))要求更新狀態是準確的,因此會重新整理在執行計數查詢之前新增 5 個物件。執行可能看起來像這樣: