web-dev-qa-db-fra.com

quel gestionnaire de transactions dois-je utiliser (JTA vs JPA)?

J'ai l'application du printemps 4. Pour le moment, j'utilise JpatransactionManager.

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

Pourriez-vous me dire comment choisir les gestionnaires de transactions?

Par exemple, quand dois-je utiliser jta transaction manager et quand jpa, et quels avantages et inconvénients présentent-ils?

Et est-ce que je sais que j'ai 2 façons de travailler au printemps. La première est la voie JPA et la deuxième voie Hibernate. le premier comprend Java annotations standard et api standard et le second est l'implémentation hibenrate. Si j'ai besoin d'utiliser JTA, je dois utiliser hibernate et non JPA, n'est-ce pas?

21
grep

Si vous souhaitez déléguer des transactions gérées à votre serveur d'applications et gérer des transactions complexes sur plusieurs ressources, vous devez utiliser JtaTransactionManager, mais je pense qu'il n'est pas nécessaire dans la plupart des cas. Lisez ceci pour plus d'informations http://docs.spring.io/spring-framework/docs/4.0.x/spring-framework-reference/html/transaction.html

Avez-vous besoin d'un serveur d'applications pour la gestion des transactions?

La prise en charge de la gestion des transactions de Spring Framework modifie les règles traditionnelles quant au moment où une application d'entreprise Java nécessite un serveur d'applications).

En particulier, vous n'avez pas besoin d'un serveur d'applications simplement pour les transactions déclaratives via les EJB. En fait, même si votre serveur d'applications dispose de puissantes capacités JTA, vous pouvez décider que les transactions déclaratives de Spring Framework offrent plus de puissance et un modèle de programmation plus productif que EJB CMT.

En règle générale, vous n'avez besoin de la capacité JTA d'un serveur d'applications que si votre application doit gérer des transactions sur plusieurs ressources, ce qui n'est pas une exigence pour de nombreuses applications. De nombreuses applications haut de gamme utilisent à la place une seule base de données hautement évolutive (comme Oracle RAC). Les gestionnaires de transactions autonomes tels que Atomikos Transactions et JOTM sont d'autres options. Bien sûr, vous pouvez avoir besoin d'autres capacités de serveur d'applications telles que Java Message Service (JMS) et Java EE Connector Architecture (JCA)).

Spring Framework vous donne le choix du moment de mise à l'échelle de votre application vers un serveur d'applications entièrement chargé. Il est révolu le temps où la seule alternative à l'utilisation d'EJB CMT ou JTA était d'écrire du code avec des transactions locales telles que celles sur les connexions JDBC, et de faire face à une lourde retouche si vous avez besoin que ce code s'exécute dans des transactions globales gérées par conteneur. Avec Spring Framework, seules certaines définitions de bean dans votre fichier de configuration, plutôt que votre code, doivent être modifiées.

26
Georgy Gobozov