Spring @Transactional: die Propagation Angabe

DarthShader

Erfahrenes Mitglied
Hallo zusammen,

ich bin z.Z. etwas verwirrt vom Propagation-Typ bei der @Transactional Annotation. Erstmal habe ich Schwierigkeiten zu entscheiden, welcher der Typen in welcher Situation der richtige ist.

Zum Beispiel: propagation = Propagation.REQUIRES_NEW

Wenn eine vorhandene Transaktion benutzt wird von einem anderen Thread, und dort geht was schief und es wird ein Rollback durchgeführt, werden dann die anderen Aktionen anderer Threads auch zurück gerollt, weil es dieselbe Transaktion ist? Das wäre dann ja für Multithreaded nicht sinnvoll?


Über Eure Hilfe würde ich mich sehr freuen


Vielen Dank!
 
Also REQUIRES_NEW bedeutet ja das eine neue Transaction erstellt wird für die Methode die diese annotation hat. Die vorhergehende Transaction wird unterbrochen, solange diese Transaction nicht abgearbeitet ist. Ein Rollback in der neuen Transaction hat somit keinen Einfluss auf die neue Transaction.
REQUIRES bedeutet das wenn eine Transaction schon vorhanden ist, diese auch verwendet wird, dies hat dann auch auswirkungen auf die RollBacks.
 
Hallo Peregrin,

vielen Dank für Deinen Beitrag und sorry für meine recht späte Antwort darauf.

REQUIRES bedeutet das wenn eine Transaction schon vorhanden ist, diese auch verwendet wird, dies hat dann auch auswirkungen auf die RollBacks.

Und wie sieht es mit meiner Schlussfolgerung von oben aus - ist also REQUIRED ungeeignet in einer multithreaded Umgebung, damit, falls in einem Thread eine Exception auftritt, nicht die Aktionen eines anderen Threads zurück gerollt werden?
 

Neue Beiträge

Zurück