openSession: Коли ви телефонуєте SessionFactory.openSession, він завжди створює новий Sessionоб'єкт і передає його вам.
Вам потрібно чітко очистити та закрити ці об’єкти сеансу.
Оскільки об'єкти сеансу не є безпечними для потоків, вам потрібно створити один об’єкт сеансу на запит у багатопотоковому середовищі та один сеанс на запит у веб-додатках.
getCurrentSession: Коли ви телефонуєте SessionFactory.getCurrentSession, він надасть вам об’єкт сеансу, який знаходиться в сплячому режимі та керується внутрішньою сплячкою. Він пов'язаний з обсягом транзакцій.
Коли ви телефонуєте SessionFactory.getCurrentSession, він створює новий, Sessionякщо його не існує, інакше використовуйте той самий сеанс, який знаходиться в поточному сплячому контексті. Після закінчення транзакції він автоматично проходить і закриває сеанс, тому не потрібно робити це зовні.
Якщо ви перебуваєте в сплячому режимі в однопотоковому середовищі, ви можете використовувати його getCurrentSession, оскільки він швидше в роботі, порівняно зі створенням нового сеансу кожного разу.
Для використання методу потрібно додати наступне властивість до hibernate.cfg.xmlgetCurrentSession :
<session-factory>
<!-- Put other elements here -->
<property name="hibernate.current_session_context_class">
thread
</property>
</session-factory>
openSession()абоclose(). Він лише дзвонитьgetCurrentSession(). Я думаю, він налаштованийcurrent_session_contextнаthread. Тепер я думаю, що розуміюgetCurrentSession(). Однак я не знаю, коли я повинен використовуватиopenSession().