Puis-je utiliser deux gestionnaires d'entités différents qui pointent vers la même source de données dans une seule transaction?

StackOverflow https://stackoverflow.com/questions/9005759

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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top