Hibernate事務管理
事務只是一個工作單位(單元)。 在這種情況下,如果一個步驟失敗,則整個事務失敗(稱爲原子性)。 ACID屬性(原子性,一致性,隔離性和持久性)可以描述事務。
Hibernate中的事務接口
在hibernate框架中,我們有Transaction
接口來定義工作單元。 它維護了事務實現(JTA,JDBC)的抽象。
事務與Session
相關聯,並通過調用session.beginTransaction()
實例化。
Transaction
接口的方法如下:
-
void begin()
開始一個新的事務。 -
void commit()
結束工作單位,在FlushMode.NEVER
中除外。 -
void rollback()
強制此事務回滾。 -
void setTimeout(int seconds)
它爲由此實例開始的後續調用啓動的任何事務設置事務超時。 -
boolean isAlive()
檢查交易是否仍然存在。 -
void registerSynchronization(Synchronization s)
爲此事務註冊用戶同步回調。 -
boolean wasCommited()
檢查事務是否成功提交。 -
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();}