Я создаю систему, в которой каждый запрос со стороны клиента порождает несколько потоков на стороне сервера. Тогда каждый поток использует один или несколько DAO (некоторые DAO могут одновременно использоваться более чем одним потоком). Spring вводит все DAO (@Autowired
) в классы потоков. Каждый DAO также получает SessionFactory
.
Каким будет правильный способ управления сеансами Hibernate для этих нескольких DAO, чтобы у меня не возникали проблемы из-за многопоточной среды (например, несколько DAO из разных потоков пытаются использовать один и тот же сеанс одновременно)?
Будет ли достаточно указать hibernate.current_session_context_class=thread
в конфигурации Hibernate, а затем каждый раз в DAO просто использовать SessionFactory.getCurrentSession()
для выполнения работы? Будет ли он правильно обнаруживать и создавать сеансы для каждого потока по мере необходимости?