Hibernate事務管理


事務只是一個工作單位(單元)。 在這種情況下,如果一個步驟失敗,則整個事務失敗(稱為原子性)。 ACID屬性(原子性,一致性,隔離性和永續性)可以描述事務。

Hibernate中的事務介面

在hibernate框架中,我們有Transaction介面來定義工作單元。 它維護了事務實現(JTA,JDBC)的抽象。

事務與Session相關聯,並通過呼叫session.beginTransaction()範例化。

Transaction介面的方法如下:

  1. void begin() 開始一個新的事務。
  2. void commit() 結束工作單位,在FlushMode.NEVER中除外。
  3. void rollback() 強制此事務回滾。
  4. void setTimeout(int seconds) 它為由此範例開始的後續呼叫啟動的任何事務設定事務超時。
  5. boolean isAlive() 檢查交易是否仍然存在。
  6. void registerSynchronization(Synchronization s) 為此事務註冊使用者同步回撥。
  7. boolean wasCommited() 檢查事務是否成功提交。
  8. boolean wasRolledBack() 檢查事務是否成功回滾。

Hibernate中的事務管理範例

在hibernate中,如果發生任何異常,最好回滾事務,以便資源可以釋放自由。 我們來看看hibernate中事務管理的例子。

Session session = null;  
Transaction tx = null;  

try {  
    session = sessionFactory.openSession();  
    tx = session.beginTransaction();  
    //some action  

    tx.commit();  

}catch (Exception ex) {  
    ex.printStackTrace();  
    tx.rollback();  
}  
finally {session.close();}