Hibernate事務管理

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

Hibernate事務管理

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();}