[FIXED] Unterschiede zwischen require_new und verschachtelter Weitergabe in Spring-Transaktionen

Ausgabe

Ich kann den Verhaltensunterschied zwischen den PROPAGATION_REQUIRES_NEWund PROPAGATION_NESTED-Propagationsrichtlinien nicht verstehen. Es scheint mir, dass in beiden Fällen der aktuelle Prozess zurückgesetzt wird, aber nicht die gesamte Transaktion. Irgendeine Ahnung?

Lösung

Siehe diesen Link: PROPAGATION_NESTED oder PROPAGATION_REQUIRES_NEW? Jürgen Höller erklärt es sehr gut. das Spring Source Forum ist seit dem 28. Februar 2019 komplett offline, aber Sie können den relevanten Teil des Artikels im Zitat unten lesen

PROPAGATION_REQUIRES_NEW startet eine neue, unabhängige “innere” Transaktion für den angegebenen Bereich. Diese Transaktion wird vollständig unabhängig von der äußeren Transaktion festgeschrieben oder rückgängig gemacht, da sie ihren eigenen Isolationsbereich, ihre eigenen Sperren usw. hat. Die äußere Transaktion wird zu Beginn der inneren Transaktion ausgesetzt und wieder aufgenommen, sobald die innere Transaktion abgeschlossen ist abgeschlossen.

PROPAGATION_NESTED hingegen startet eine “verschachtelte” Transaktion, die eine echte Untertransaktion der bestehenden ist. Was passieren wird, ist, dass am Anfang der verschachtelten Transaktion ein Sicherungspunkt genommen wird. Wenn die verschachtelte Transaktion fehlschlägt, werden wir zu diesem Sicherungspunkt zurückkehren. Die verschachtelte Transaktion ist Teil der äußeren Transaktion und wird daher nur am Ende der äußeren Transaktion festgeschrieben.


Beantwortet von –
Ralph


Antwort geprüft von –
Marilyn (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like