Frage

die frühling docs tun afantastischer Job, um Transaktionsausbreitungseigenschaften zu beschreiben.

Ich habe mich jedoch gefragt, ob es bekannte, reale Beispiele gibt, die jedes dieser Eigenschaften in den Begriffenen von Laien gründlicher beschreiben?

War es hilfreich?

Lösung

propagation_required

generasacodicetagpre.

Wenn dosomething () aufgerufen wird, startet er eine neue Transaktion , wenn der Anrufer keine Transaktion gestartet hat.

Wenn der Anrufer dieser Methode bereits eine Transaktion gestartet hat, wird die Transaktion der Anrufer verwendet und es wird keine neue Transaktion erstellt (d. H. Es gibt eine Transaktion im Spiel).

Wenn eine Ausnahme in das Dosomething ausgelöst wird () wird es zurückgerollt, was bedeutet, dass der Anrufer auch die zurückgelegte Transaktion ergibt.

Wenn Dosomething () zurückgibt, wurde die Transaktion noch nicht eingekunden. Es ist der Anrufer, der die Transaktion (oder möglicherweise gerollt) begehen wird.

propagation_requires_new

generasacodicetagpre.

Wenn Dosomething () aufgerufen wird, wird immer eine neue Transaktion beginnen.

Wenn der Anrufer dieser Methode bereits eine Transaktion (TXNouter) gestartet hat, ist die Anrufertransaktion suspended und eine neue Transaktion (TXNINNER) erstellt (dh es gibt zwei Transaktionen im Spiel).

Wenn eine Ausnahme in das Dosomething ausgelöst wird (), wird Txninner zurückgerollt, aber die "suspendierte" Transaktion des Anrufers (TXNOUTER) ist nicht betroffen.

Wenn Dosomething () ohne Ausnahme zurückkehrt, wird er die Transaktion (TXNINNER) begehen. Die Transaktion des Anrufers (TXNouter) wird wieder aufgenommen und nicht bewusst sein, dass eine andere Transaktion erneut gestellt wurde. Der Anrufer kann dann txNouter ein- oder zurückkehren, da es fit sieht.

Der wichtige Punkt, um zu notieren, ist, dass die Datenbank TXNOUTER und TXNINNER als völlig unabhängige Transaktionen ansichelt, und daher sind zwei unabhängige Commits.

propagation_nested

generasacodicetagpre.

verschachtelte können nur verwendet werden, wenn Ihr JDBC-Treiber und / oder die Datenbank JDBC-Safepoints .

Wenn dosomething () aufgerufen wird, startet er eine neue Transaktion , wenn der Anrufer keine Transaktion gestartet hat.

Wenn der Anrufer dieser Methode bereits eine Transaktion gestartet hat, wird die Transaktion der Anrufer verwendet und es wird keine neue Transaktion erstellt (d. H. Es gibt eine Transaktion im Spiel). Ein "SavePoint" ist jedoch auf der Transaktion markiert, wenn Dosomething () eingegeben wird.

Wenn eine Ausnahme in das Dosomething () ausgelöst wird, kann die Transaktion die Transaktion teilweise auf den "SAVEPOINT" zurückgerollt werden. Der Anrufer wird mit der Transaktion fortgesetzt.

Wenn Dosomething () ohne Ausnahme zurückkehrt, ist der Anrufer, der die gesamte Transaktion begehen (oder Rollrücken).

Der wichtige Punkt auf Anmerkung ist, dass die Datenbank nur eine Transaktion anzeigt, und es gibt nur ein Commit.

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