2013-03-21 3 views
0

Tapestry에서 HibernateSessionManager에서 얻은 세션을 닫아야합니까?Tapestry의 HibernateSessionManager에서 얻은 세션을 닫아야합니까?

일부 코드.

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

첫 번째 경우 : HibernateSessionManager 객체를 다루는 몇 가지 방법을 생각해 세션은 DB에서 데이터를 가져 오는에 사용되는 :

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

내가 session (session.close();)를 수동으로 종료해야합니까?


두 번째 경우 : hsm.commit();, 또는 나는 또한 session.close();을 수행해야합니다

session.saveOrUpdate(obj); 

그것은 단지 commithsm 객체에 충분한가 : 세션/업데이트 결과를 저장하기 위해 또한 사용된다?

답변

1

이미 답변했습니다. here입니다.

다른 부분에 대답하려면 HibernateSessionManager을 사용하는 동안 태피스 트리를 사용하여 세션을 종료하는 것에 대해 걱정할 필요가 없습니다.

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

아니요. 나는 또한 당신의 이전 포스트에있는 당신의 응답을 논평했다. – Andremoniy

+0

또한 질문에 답변하지 않았습니다. 내 첫번째 사건은 어쩌고? 결과를 가져온 후에 커밋해야합니까? – Andremoniy

+0

커밋되지 않은 모든 트랜잭션은 태피스 트리로 세션을 닫기 전에 롤백됩니다. – Tawus