verwenden JTA-Transaktion oder nicht?
Ich bin die Entwicklung einer J2EE-Anwendung, die Bereitstellung auf JBoss application server.
Die Anwendung besteht aus einer EJB-2.x-Komponente und eine web-Komponente und läuft auf dem lokalen computer oder einem remote-server. Die Datenbank ist entweder Oracle oder SQL-Server und ist nicht in einer verteilten fern.
Ich bin mit Hibernate 3.6 (JPA 2.0 Implementierung) für die Transaktionen. Sollte ich die JTA-die container-verwaltete Transaktion oder ist es overkilled es zu benutzen?
Derzeit bin ich mit JTA und es stellt sich heraus, es läuft gut, aber einige kleine Fragen, die ich weiß nicht, ob es im Zusammenhang mit der Transaktion-management-oder nicht. Wird es leichter oder zuverlässiger verwenden Sie die lokale Transaktions-management?
- mögliche Duplikate von JTA oder LOKALE Transaktionen in JPA2+Hibernate 3.6.0?
- Vielen Dank für Ihren Kommentar. Also, was den Transaktions-manager sollte ich verwenden, wenn ich beide EJB-2.x und JPA? Für das Spring-Roo-Anwendung standardmäßig ist die org.springframework.orm.jpa.JpaTransactionManager aber ich denke, ich sollte über etwas anderes.
Du musst angemeldet sein, um einen Kommentar abzugeben.
JTA Transaktionen sind immer empfehlenswert, vor anderen Arten von transaction APIs, vor allem, wenn Sie unter Bezugnahme auf die native Transaktionen, sind immer noch Teil der JPA-API. Beachten Sie, dass Sie nicht sagen können, 'JTA-vs-resource-local transactions", wie JTA schafft es tatsächlich Ressource lokale Transaktionen unter anderem.
Gavin King (Autor Ruhezustand) einmal angedeutet in einem interview, dass das JPA-spezifischen API ein Fehler war und dass die viel flexibler JTA API sollte bevorzugt werden. Insbesondere bei der Verwendung von deklarativen Transaktionen JTA ist sehr leicht. Das Wort
overkill
würde wirklich mehr über die JPA nativen Transaktions-API, dann mit JTA.Gibt es etwas zu sagen über die Wahl zwischen der Verwendung von XA-oder resource-local transactions mit JTA. Siehe meine Antwort hier für einige mehr details: JTA oder LOKALE Transaktionen in JPA2+Hibernate 3.6.0?
Frage ich mich, warum Sie mit EJB-2 in Kombination mit JPA 2.0. EJB 3.1 wäre eine viel logischere Wahl. EJB 2 ist völlig veraltet (beschnitten wird in Java EE 7).
Ich würde empfehlen die Verwendung von XA-Transaktionen, selbst wenn die Anwendung derzeit greift nur auf eine Ressource (Datenbank). Gewährleistung:
1) In Zukunft, wenn die Anwendung entscheidet, um einige andere transaktionale Ressource-abgesehen von der aktuellen Datenbank, Sie werden es einfacher finden, als der XA-Transaktions-management ist bereits vorhanden, und die mehreren transaktionalen Ressourcen können dann kombiniert werden, in einer einzigen Transaktion.
2) Als Sie haben eine transaktionale Ressource, die derzeit, ich glaube nicht, dass die performance leiden würde, die mit der Nutzung von XA im Vergleich zu der lokalen Transaktion. Der Grund dafür ist, dass XA/JTA-Transaktions-Manager bereits eine Art der Optimierung für die Fälle von single-transaktionale Ressource (Sie nennen es one-phase-Optimierung).
Hoffe, das hilft.
Nitin