Думайте о Contextual Session
Hibernate как о сопоставлении текущего сеанса с контекстом пользователя.
Например: одна транзакция может быть таким контекстом, следовательно, если жизненный цикл сеанса Hibernate соответствует жизненному циклу этой транзакции, сеанс можно назвать контекстным, где одна транзакция определяет такой context
. Иногда этот конкретный случай обозначается как session-per-request
модель.
Интерфейс Hibernate CurrentSessionContext предназначен для сопоставления текущего сеанса (например, SessionFactory.getCurrentSession()
) с различными контекстами. Этот интерфейс имеет 3 реализации:
JTASessionContext : текущие сеансы отслеживаются и ограничиваются транзакцией JTA. Обработка здесь точно такая же, как в более старом подходе только для JTA. См. Javadocs для деталей.
ThreadLocalSessionContext : текущие сеансы отслеживаются потоком выполнения. См. Javadocs для деталей.
ManagedSessionContext : текущие сеансы отслеживаются потоком выполнения. Однако вы обязаны связать и отменить привязку экземпляра Session со статическими методами для этого класса: он не открывает, не очищает и не закрывает Session
Взгляните на текущую сессию Architecture в документации Hibernate для более "официальных" подробностей.