2013-05-31 57 views
0

以下代碼是否可以正常工作,或者是否需要在開始工作之前先開始事務。可以在提交/回滾時調用hibernate中的事務開始

Session session = SessionFactory.openSession(); 

//do some work like session.save/Update 

finally{ 
    session.beginTransaction().commit(); 
} 
+0

session.save/session.update需要在完成之後完成r開始交易。 –

+0

但是,當我測試上面的代碼,它工作正常,我的意思是數據被提交。但我不明白的是在開始任何會話之前開始交易的真正目的。 – Surat

回答

4

編號當然,作爲交易一部分的代碼必須在交易的開始和提交之間。

這裏(正是the documentation說:

會話/事務處理方式如下所示:

// Non-managed environment idiom 
Session sess = factory.openSession(); 
Transaction tx = null; 
try { 
    tx = sess.beginTransaction(); 

    // do some work 
    ... 

    tx.commit(); 
} 
catch (RuntimeException e) { 
    if (tx != null) tx.rollback(); 
    throw e; // or display error message 
} 
finally { 
    sess.close(); 
} 
0

不,你需要管理的事務,致力於爲獲得立竿見影的效果和任何Hibernate拋出的異常是FATAL,你必須回滾事務並關閉當前會話。

相關問題