Да. Этого достаточно.
При установке hibernate.current_session_context_class
на thread
сеанс, возвращаемый с SessionFactory.getCurrentSession()
, происходит из экземпляра ThreadLocal
.
Каждый поток будет иметь свой собственный, независимо ThreadLocal
экземпляр, поэтому разные потоки не будут иметь доступа к одному и тому же сеансу гибернации.
Поведение SessionFactory.getCurrentSession()
таково: если он вызывается впервые в текущем потоке, новый сеанс открывается и возвращается. Если он вызывается снова в том же потоке, будет возвращен тот же сеанс.
В результате вы можете получить один и тот же сеанс для использования в разных методах DAO в одном и том же коде транзакции, просто вызвав SessionFactory.getCurrentSession()
. Он не позволяет передавать сеанс Hibernate через входные параметры метода DAO в случае, если вам нужно вызывать много разных методов DAO в одном и том же коде транзакции.