Transaktionen (Atomicity Eigenschaft) in EJB 3 gelten nur für Datenbankoperationen - Bin ich richtig?

StackOverflow https://stackoverflow.com/questions/3158861

Frage

Ich weiß, dass Transaktionen zu bringen über die Unteilbarkeit verwendet werden könnten.

Wie, wenn methodOne() methodTwo() methodThree() in eine Transaktion geprügelt, wenn eine der Methode fehlschlägt, wird der gesamte Vorgang zurückgesetzt. Ein Rollback in einem Datenbank-Level-Rollback führen würde, und als Ergebnis würde die Datenbank in einen Zustand gebracht werden, wie es vor der Transaktion war.

Was aber, wenn die Methoden Änderungen an Zustandsvariablen oder statisch-Variablen oder schrieben an einige Dateien im Dateisystem? Mein Verständnis ist, dass ein „Rollback“ gilt nicht für solche Nicht-Datenbankänderungen und dass diese Änderungen nicht mehr rückgängig gemacht werden. Ist mein Verständnis richtig?

War es hilfreich?

Lösung

Transaktionen (Atomicity Eigenschaft) in EJB 3 gelten nur für Datenbankoperationen - Bin ich richtig

?

Nein, bist du nicht. Transaktionen gelten für Transaktionsressourcen , die Java EE-Spezifikation drei Typen von Transaktionsressourcen zu erkennen. JDBC-Datenbanken, JMS-Ziele, und „andere Transaktionsdienste zugegriffen durch JCA“

Was aber, wenn die Methoden Änderungen an Zustandsvariablen oder statisch-Variablen oder schrieben an einige Dateien im Dateisystem?

Das sind keine Transaktionsressourcen (es sei denn, Sie schreiben in das Dateisystem über einen JCA-Anschluss für das später).

Andere Tipps

Dateisystemressourcen sind nicht transaktional. So würden Sie Ihre Änderungen zurück rollen müssen. Oder würden Sie bei Dateisystemressourcenadapter von Containern zur Verfügung gestellt suchen.

Transaktionen in diesem Zusammenhang beziehen sich auf Datenbank-Transaktionen. Wenn Sie Java-Code zu platzieren, welche alte Variablen oder produzieren Ausgabe-Dateisystem verwenden Sie es nicht gut. Sie sollten eine Transaktion starten und Operationen nur auf die Datenbank machen.

Obwohl, wenn Ihr DBMS Änderungen an Ihrem Dateisystem machen (durch einen Speichervorgang, zum Beispiel), dann müssen Sie die Dokumentation, dass DBMS überprüfen.

Also, Ihren Code lesen, wenn Sie Code nach dem „START TRANSACTION“ Befehl haben, müssen Sie es überprüfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top