Wann wird @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) zu Begehen?
Einer EJB-Methode mit dem Namen Aby
ruft einen anderen EJB-Methode mit dem Namen Bob
Bob
ist gekennzeichnet mit @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
Wenn nicht bob
Transaktion ein commit?:
a) wenn bob
Aufruf endet
b) wenn aby
Aufruf endet
c) andere. Wann?
InformationsquelleAutor der Frage SDReyes | 2012-07-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke A ist richtig. Wenn die Bob Methode aufgerufen wird, erstellt es neue Transaktion für Sie und Methode Aby wird ausgesetzt, bis die Bob Transaktion ein commit ausgeführt wird.
Beachten Sie auch, dass es zu Methode von einer anderen bean zu machen, Transaktions -, Methoden genannt, aus dem gleichen bean fungieren nicht als ein business-Methoden.
Sehen diesem großen Artikel für weitere Erklärung.
InformationsquelleAutor der Antwort Petr Mensik
Tatsächlich denke ich, dass eine alternative richtig ist. Siehe:
EJB 3.0 - Geschachtelte Transaktion!!! = Erfordert Neue?
Ich habe auch einige der Forschung getan und sah in die db (Hyper Sonic) - Protokolle, um wirklich sehen, wenn es engagiert sich in der db und es ist verpflichtet, wenn die REQUIRES_NEW Methode beendet ist. Aber da es bis auf die container zu handhaben, die Transaktionen vielleicht könnte sich ändern, je nach container. Ich habe JBoss während des Debuggens. Und Hibernate (erwähnenswert, da ich getestet habe dies durch überprüfen der db-logs).
Ich nehme an, dass eine Datenbank schreiben beteiligt ist, seit Sie bitten, über Transaktionen.
Meine Gedanken unterscheidet sich von der vorherigen Antwort, so würde es Spaß machen, sich überzeugen zu lassen.
InformationsquelleAutor der Antwort Mike