事務只是一個工作單位(單元)。 在這種情況下,如果一個步驟失敗,則整個事務失敗(稱為原子性)。 ACID屬性(原子性,一致性,隔離性和永續性)可以描述事務。
在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中事務管理的例子。
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();}