事務只是一個工作單位(單元)。 在這種情況下,如果一個步驟失敗,則整個事務失敗(稱為原子性)。 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();}