Может ли один EntityManager (Hibernate) участвовать в нескольких одновременных транзакциях?
-
21-09-2019 - |
Вопрос
Есть ли способ, чтобы один EntityManager мог беспрепятственно участвовать в нескольких одновременных транзакциях?
Ну, не то чтобы одновременно.Что-то вроде:
- Начать передачу 1
- Делайте что-нибудь в tx 1
- Начать передачу 2
- Делайте что-нибудь в tx 2
- Зафиксировать передачу 2
- Присоединяйтесь к отправке 1 назад
- Делайте что-нибудь в tx 1
- Зафиксировать передачу 1
с шагами, которые следуют один за другим, не перекрываясь.
Решение
Отдельный транзакции?Нет, не может.
Попытка позвонить EntityTransaction.begin() в текущей активной транзакции (что вам и придется сделать, прямо или косвенно) приведет к IllegalStateException
будучи брошенным.
Концепции единиц работы/объема транзакции подробно описаны в Руководство по Hibernate EntityManager.
Не связан с StackOverflow