La différence entre un “jta-source de données” et de “ ressources locales ” datasource?
Les termes "jta-source de données" et "ressources locales de la source de données sont un peu vague pour moi. Je suis en train de mettre à plat ce que je suis la compréhension ( ou prennent ) et je voudrais vous dire où je suis bon /mauvais.
- La même base de données peut être considéré comme un jta-source de données ou comme une ressource locale de la source de données
- Si mentionné comme jta-source de données, puis les haricots /autres classes peuvent utiliser JTA. Par conséquent, un usertransaction interface
- Ne peut pas utiliser CMT /BMT si la source de données est la ressource locale
- S'il est mentionné que les ressources locales de la source de données, les transactions ne sont pas JTA conscient. Code pouvez utiliser EntityTransaction interface mais pas un usertransaction interface
Merci!
Vous devez vous connecter pour publier un commentaire.
Je suppose que vous avez fait référence à l'
jta-datasource
etnon-jta-datasource
éléments. En bref:jta-datasource
élément est utilisé pour déclarer le nom JNDI de la source de données JTA qui sera utilisé pour obtenir des connexions. C'est le cas le plus courant.non-jta-data-source
doit être utilisé pour déclarer le nom JNDI de non-source de données JTA.C'est correct. Et je n'ai pas mentionné juste au-dessus, mais certains fournisseurs permettent même de déclarer à la fois un
jta-datasource
et unnon-jta-datasource
et de les utiliser plus tard pour une lecture optimisée grâce à la non-JTA connexions (c'est à dire qui ne seront pas associés à une transaction JTA).La première partie est correcte, la dernière partie pas tout à fait. À partir de l'EJB 3.0, section 13.3.4 Haricots d'Entreprise à l'Aide de contenants Géré la Démarcation des Transactions:
Et de l'article 16.12 un usertransaction Interface:
En d'autres termes, la
UserTransaction
interface n'est pas disponible pour CMT haricots d'entreprise.La formulation est un peu déroutant ici, mais je dirais que ce n'est pas strictement exact. À partir de la JPA 1.0 de la spécification, de la section § 5.5 Contrôle des Transactions:
Et section 6.2.1.2 transaction de type
De sorte que vous POUVEZ utiliser un géré par l'application gestionnaire d'entité qui peut être un de ressources locales entité gestionnaire de (vous devez injecter un
EntityManagerFactory
pour obtenir de l'EM dans ce cas) et il ne sera pas partie d'une transaction JTA. Voir cette (très intéressant) discussion.Encore une fois, la formulation est un peu confus, mais je dirais que c'est correct.