Différence entre UserTransaction et EntityTransaction
Titre dit tout: Quelle est la différence entre un UserTransaction
et un EntityTransaction
?
Ma compréhension rudimentaire est que UserTransaction
est utilisé lors de la JTA est nécessaire (par exemple, de faire des requêtes sur plusieurs choses), et que EntityTransaction
est utilisé lors de la JPA est requise (par exemple, lorsque la requête est atomique).
Est que la seule différence entre les deux ou est-il plus que cela?
source d'informationauteur bguiz
Vous devez vous connecter pour publier un commentaire.
Que de raison sur le fond, mais votre description de "plusieurs choses" et "atomique" est un peu étrange. JTA permet au développeur d'utiliser distributed transaction à effectuer des modifications sur les multiples ressources (base de données, JMS courtier, etc.) atomiquement (tout ou rien). Si une seule ressource est accessible (par exemple, une base de données unique), vous n'avez pas besoin de JTA, mais la transaction est encore atomique (tout ou rien). C'est par exemple le cas lorsque vous utilisez un régulier JDBC transaction sur une base de données.
Considérant
UserTransaction
vsEntityTransaction
:EntityTransaction
pour délimiter l'opération vous-même.UserTransaction
. LeEntityManager
crochets de lui-même dans le JTA distributed transaction manager. La seule subtilité, je suis conscient de l'estime de la chasse d'eau des changements. LorsqueEntityTransaction
est utilisé, JPA sais qu'il doit vider les changements. Si des transactions sont contrôlées à l'aide deUserTransaction
il doit enregistrer un rappel à l'aide JTAregisterSynchronization
de sorte que les changements sont vidées à la base de données avant la fin de la transaction. Si vous utilisez des EJB avec CMT (gérée par le conteneur de la transaction), vous n'avez même pas besoin d'utiliserUserTransaction
: le serveur d'application démarre et arrête les transactions pour vous.Questions connexes: