2013-04-06 17 views

回答

4

ASAIK,這兩個是完全不同的操作。

sessionFactory.openSession():它打開一個session

:它從一個transaction,事務是工作的一個基本單位,其應該會成功或失敗的全部。

session.getTransaction().commit():它提交事務,意味着所有的事情發生在beginTransaction之間,並且這個調用將被持久化到數據庫。如果您沒有提交交易,那麼交易中發生的所有更改都將丟失。提交交易沒有關閉會話

session.close():關閉會話並釋放獲取的資源。

這意味着您需要撥打commit()session.close()

public static void deleteYear(Years year) 
{ 
    Session session = sessionFactory.openSession(); 
    session.beginTransaction(); 
    session.delete(year); 
    session.getTransaction().commit(); 
    session.close(); 
} 
0

更好的方式做會議記錄

Session sess=getSession(); 
Transcration tx=sess.beginTranscration(); 
//do something with session 
sess.save(obj); 
tx.commit(); 
sess.close; 

,我推薦this

0

這些是完全不同的兩件事。

COMMIT進行到目前爲止發生在transaction內的更改。
CLOSE關閉會話,並且不再有權訪問該會話。

所以你可以在一起。

要記住的注意事項:關閉會話是不必要的;然而,最後一個會話應該是DISCONNECT