Могу ли я использовать два разных менеджера сущностей, которые указывают на один и тот же источник данных в одной транзакции?
-
14-11-2019 - |
Вопрос
Я использую Spring с JPA.И у меня есть два EntityManager, которые содержат разные сущности (разные модули одного приложения), и оба указывают на один и тот же источник данных.
Могу ли я использовать их оба в одной транзакции (используя один TransactionManager)?Должен ли я использовать для этого JTA?Если да, то какой вариант лучше всего использовать под tomcat?
Как мне настроить его весной?
Решение
Как стандартные транзакции JPA, так и Spring JpaTransactionManager
привязаны к одному EntityManager
.Они не могут общаться с несколькими менеджерами и поэтому не могут координировать транзакции между ними.
Если вам нужно это сделать, вам нужно либо объединить конфигурации вашего менеджера объектов, чтобы у вас был только один EntityManager
, или используйте транзакции JTA (через Spring JtaTransactionManager).
Если вы используете Tomcat (который не имеет встроенной поддержки JTA), вам потребуется найти стороннюю реализацию JTA.