Puis-je utiliser deux gestionnaires d'entités différents qui pointent vers la même source de données dans une seule transaction?
-
14-11-2019 - |
Question
J'utilise le printemps avec JPA. Et j'ai deux EntityManagers qui contiennent différentes entités (différents modules d'une application), et les deux indiquent la même source de données.
Puis-je les utiliser tous les deux dans une seule transaction (en utilisant une seule transactionManager)? Dois-je utiliser JTA pour cela? Si oui, quelle est la meilleure option pour l'utiliser sous Tomcat?
Comment le configurer au printemps?
La solution
Les transactions JPA standard et Spring JpaTransactionManager
sont liés à un seul EntityManager
. Ils ne peuvent pas parler à plusieurs gestionnaires, et ne peuvent donc pas coordonner une transaction à travers eux.
Si vous avez besoin de le faire, vous devez soit fusionner les configurations de votre gestionnaire d'entité afin que vous n'en ayez un EntityManager
, ou utilisez des transactions JTA (via JTAransActionManager de Spring).
Si vous utilisez TomCat (qui n'a pas de support JTA à l'emploi), vous devrez trouver une implémentation de JTA tierce.