utilisation transaction JTA ou pas?
Je développe une application J2EE qui est déployé sur le serveur d'applications JBoss.
L'application est composée d'un EJB 2.la composante x et un composant web et est en cours d'exécution sur l'ordinateur local ou sur serveur distant. La base de données est Oracle ou SQL Serveur et n'est pas dans un environnement distribué.
Je suis de l'utilisation d'Hibernate 3.6 (JPA 2.0 mise en œuvre) pour les transactions. Dois-je utiliser JTA qui est gérée par le conteneur de transaction ou est-il overkilled à utiliser?
Actuellement, je suis en utilisant JTA et il s'avère qu'il est en cours d'exécution fine, mais avec quelques petits problèmes que je ne sais pas si c'est lié à la gestion de la transaction ou pas. Sera-ce plus facile ou plus fiables à l'usage local, la gestion des transactions?
Je vous remercie pour votre commentaire. Donc, ce gestionnaire de transactions dois-je utiliser si je utiliser à la fois les EJB 2.x et JPA? Pour le Printemps-Roo application de la valeur par défaut est org.springframework.orm.jpa.JpaTransactionManager mais je suppose que je devrais être en utilisant quelque chose d'autre.
OriginalL'auteur newguy | 2011-01-17
Vous devez vous connecter pour publier un commentaire.
JTA transactions sont toujours recommandées ci-dessus, d'autres types de transaction Api, surtout si vous faites référence à la maternelle les transactions qui font encore partie de l'API JPA. Notez que vous ne pouvez pas dire "JTA vs ressources locales transactions", comme JTA gère des ressources locales transactions entre autres.
Gavin King (le créateur de la mise en veille) une fois a déclaré dans une interview que ce JPA API spécifique a été une erreur et que le beaucoup plus souple JTA l'API doivent être privilégiées. En particulier lors de l'utilisation déclarative des transactions JTA est très léger. Le mot
overkill
serait effectivement appliquer davantage à l'aide de l'APP native API transaction, puis à l'aide de JTA.Il y a quelque chose à dire sur le choix entre l'utilisation de XA ou de ressources locales transactions avec JTA. Voir ma réponse ici pour plus de détails à ce sujet: JTA ou les transactions LOCALES dans JPA2+Hibernate 3.6.0?
Je me demande pourquoi vous utilisez EJB 2 en combinaison avec JPA 2.0. EJB 3.1 serait beaucoup plus logique de choix ici. EJB 2 est complètement obsolète (seront taillés en Java EE 7).
Vous êtes les bienvenus. Notez que le plus puissant des combinaisons est EJB 3.1 + JPA 2. Ces deux se complètent grandement.
OriginalL'auteur Arjan Tijms
Je vous recommande d'utiliser des transactions XA, même si l'application accède à une seule ressource (base de données). Resons:
1) Dans l'avenir, si l'application décide d'inclure certaines autres ressources de transaction en dehors de la base de données actuelle, il lui sera plus facile, car les transactions XA gestion est déjà en place et les multiples transactionnels ressources peuvent alors être combinées en une seule opération.
2) Que vous avez un seul de ressources transactionnelles actuellement, je ne pense pas que la performance ne souffrent avec l'utilisation de XA par rapport à des transactions locales. La raison en est que XA/transaction JTA gestionnaires de déjà faire une sorte d'optimisation pour les cas de unique de ressources transactionnelles (ils appellent ça une phase d'optimisation).
Espère que ça aide.
Nitin
OriginalL'auteur Nitin Verma