Ich würde gerne den Nutzen einer Spring-Transaktion mit Propagation Supports verstehen. Die Java-Dokumente erwähnen, dass wenn die Methode, die hat @Transactional(propagation = Propagation.SUPPORTS)
aus einer Transaktion heraus aufgerufen wird, wird die Transaktion unterstützt, aber wenn keine Transaktion existiert, wird die Methode nicht-transaktional ausgeführt.
Ist dies nicht bereits das Verhalten von Frühjahrstransaktionen, unabhängig von der Propagation.SUPPORTS
?
public class ServiceBean {
@Transactional(propagation = Propagation.SUPPORTS)
public void methodWithSupportsTx() {
//perform some database operations
}
}
public class OtherServiceBean {
@Transactional(propagation = Propagation.REQUIRED)
public void methodWithRequiredTx() {
//perform some database operations
serviceBean.methodWithSupportsTx();
}
}
In dem obigen Codebeispiel ist es egal, ob methodWithSupportsTx()
hat @Transactional(propagation = Propagation.SUPPORTS)
Annotation würde sie in einer Transaktion ausgeführt werden, je nachdem, ob methodWithRequiredTx()
hat @Transactional
Bemerkung, richtig?
Wozu braucht man also eine Ausbreitungsebene SUPPORTS?