2013-03-21 83 views
0

當我應該關閉會話,從掛毯的HibernateSessionManager獲得?當我應該關閉會話時,從Tapestry的HibernateSessionManager獲取?

某段代碼。考慮一些方法,這與HibernateSessionManager對象涉及:

public void foo(final HibernateSessionManager hsm) { 
    Session session = hsm.getSession(); 

第一種情況:會話僅用於從數據庫提取數據:

session.createQuery("from SomeTable ... blablabla").list(); 

我必須sessionsession.close();)手動關閉?


第二種情況:會話也用於保存/更新結果:

session.saveOrUpdate(obj); 

它是不夠的,只是commithsm對象:hsm.commit();,或者我也應該做session.close();

回答

1

我已經回答了它here

要回答其他部分,只要您使用HibernateSessionManager,您不必擔心會因爲掛毯掛鉤而關閉會話。

try { 
    do_stuff(hibernateSessionManager.getSession()); 
    hibernateSessionManager.commit(); 
}catch(Exception ex){ 
    hibernateSessionManager.abort(); 
} 
+0

都沒有。我也在你以前的帖子中評論過你的答案。 – Andremoniy 2013-03-21 15:14:21

+0

此外,你沒有回答這個問題。我的第一個案子呢?我應該在提取結果後提交嗎? – Andremoniy 2013-03-21 15:29:27

+0

所有未落實的交易都會在掛毯會議結束前回滾 – Tawus 2013-03-21 15:42:56