事務(wù)只是一個工作單位(單元)。 在這種情況下,如果一個步驟失敗,則整個事務(wù)失敗(稱為原子性)。 ACID屬性(原子性,一致性,隔離性和持久性)可以描述事務(wù)。
在hibernate框架中,我們有Transaction
接口來定義工作單元。 它維護(hù)了事務(wù)實現(xiàn)(JTA,JDBC)的抽象。
事務(wù)與Session
相關(guān)聯(lián),并通過調(diào)用session.beginTransaction()
實例化。
Transaction
接口的方法如下:
void begin()
開始一個新的事務(wù)。void commit()
結(jié)束工作單位,在FlushMode.NEVER
中除外。void rollback()
強(qiáng)制此事務(wù)回滾。void setTimeout(int seconds)
它為由此實例開始的后續(xù)調(diào)用啟動的任何事務(wù)設(shè)置事務(wù)超時。boolean isAlive()
檢查交易是否仍然存在。void registerSynchronization(Synchronization s)
為此事務(wù)注冊用戶同步回調(diào)。boolean wasCommited()
檢查事務(wù)是否成功提交。boolean wasRolledBack()
檢查事務(wù)是否成功回滾。在hibernate中,如果發(fā)生任何異常,最好回滾事務(wù),以便資源可以釋放自由。 我們來看看hibernate中事務(wù)管理的例子。
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();}