J'ai des questions comme ci-dessous:
- Quelle est la différence entre ces deux?
- Ces deux éléments sont-ils pris en charge par toutes les bases de données?
- JPA TransactionManager et JTA TransactionManager sont-ils différents?
Les implémentations JPA ont le choix de gérer elles-mêmes les transactions ( RESOURCE_LOCAL
) ou de les faire gérer par l'implémentation JTA du serveur d'applications.
Dans la plupart des cas, RESOURCE_LOCAL convient. Cela utiliserait des transactions de base au niveau JDBC. L'inconvénient est que la transaction est locale à l'unité de persistance JPA, donc si vous voulez une transaction qui couvre plusieurs unités de persistance (ou d'autres bases de données), alors RESOURCE_LOCAL peut ne pas être assez bon.
JTA est également utilisé pour gérer les transactions sur des systèmes tels que JMS et JCA, mais c'est un usage assez exotique pour la plupart d'entre nous.
Pour utiliser JTA, vous devez le prendre en charge dans votre serveur d'applications, ainsi que le support du pilote JDBC.
En complément d'autres réponses
Voici un extrait de l'article extrêmement utile (publié sur le site Apache TomEE ), qui peut également aider à répondre à la première question de l'OP (le lien vers l'article est ci-dessous).
Toute personne intéressée par l'API Java Persistence - rendez-vous service et lisez l'article complet ici: Concepts JPA: JPA 101 .
la source
transaction-type=RESOURCE_LOCAL
et@PersistenceContext
et@Transactional
géré par SpringResource_Local et JTA sont des gestionnaires de transactions (méthodes de transactions). Ce n'est pas la propriété de la base de données mais le composant chargé de coordonner les transactions. Les gestionnaires de transactions JPA et JTA sont différents. Le gestionnaire de transactions JPA est responsable des transactions JPA et vous souhaitez en utiliser une si vous ne faites que des transactions JPA. Le gestionnaire de transactions JTA est un gestionnaire de transactions à usage général et peut enrôler d'autres ressources telles que les files d'attente JMS dans la transaction. Généralement, les conteneurs Java EE utilisent un gestionnaire de transactions JTA pour les EJB, les entités JPA, etc.
la source
resource_local vs JTA il s'agit de transaction locale vs transaction globale. Il s'agit de gérer plusieurs ressources en une seule transaction.
CMT vs BMT, il s'agit de savoir qui ouvre et clôture la transaction - développeur d'applications ou serveur d'applications.
la source