2015-05-22 16 views
5

Jestem nowy w stanie hibernacji.Czy przeprowadzanie sesji zamknięcia transakcji?

Czy session.getTransaction().commit(), zamyka sesję? Ponieważ w dokumentacji api nie wspomniano, że zamyka sesję.

W moim kodu mam

session.getTransaction().commit(); 
session.close(); 

ale pojawia się następujący wyjątek

org.hibernate.SessionException: Sesja została już zamknięta

Jeśli usunąć session.close(), potem nie otrzymuj tego wyjątku.

Odpowiedz

2

Możesz znaleźć więcej informacji na ten temat here. Zasadniczo zależy to od tego, w jaki sposób uzyskano sesję i od tego, co jest wykonywane w session.getTransaction().commit(); (detektory cyklu życia transakcji mogą zamykać sesję tutaj, na przykład, jeśli niektóre ramy, z których korzystasz, je zarejestrowały).

Aby sprawdzić, kiedy jest naprawdę zamknięty, można spróbować ustawić punkt przerwania w metodzie AbstractSessionImpl.setClosed.