So verbinden Sie die übergeordnete Transaktion im Frühjahr mithilfe der Annotation @Transactional


Satish Kumar

Ich bin sehr neu in Transaktionen im Frühjahr. Aufgrund einiger von meiner Organisation verwendeter Codestandards habe ich beim Aufrufen einer Methode darum gebeten, der übergeordneten Transaktion beizutreten, falls vorhanden.

Meine Anwendung ist eine Spring MVC-Anwendung mit drei Ebenen

  1. Web Layer (Controller-Klassen)
  2. Service Layer (Serviceklasse mit Geschäftslogik)
  3. DAO-Schicht (DAO-Klassen (Data Access Layer) für DB-bezogene Abfragen)

In einer Methode auf der Serviceschicht werden jetzt drei verschiedene Methoden der Dao-Schicht verwendet. Ich habe diese Servicemethode mithilfe von @Transactional als transaktional kommentiert. Jetzt möchte ich, dass alle drei Dao-Methoden, die von diesen Service-Layer-Methoden aufgerufen werden, auch transaktionaler Natur sind und der übergeordneten Transaktion beitreten müssen, die von der Service-Layer-Methode gestartet wurde, die darauf besteht, für jede Dao-Methode andere neue Übersetzungen zu starten.

ritesh.garg

Sie müssen Ihre Servicemethode mit einer REQUIRES_NEWWeitergabe versehen. Dies würde den Beginn der Transaktion markieren. Standardmäßig erben die dao-Methoden, wenn sie von dieser Methode aufgerufen werden, das Transaktionsverhalten und verwenden die vorhandene Transaktion.

Wenn Sie jedoch die Transaktionsgrenzen in Ihrem Code darstellen möchten, können Sie sie mit einem Kommentar versehen REQUIRED(an Transaktion teilnehmen, falls vorhanden, oder eine neue erstellen, falls nicht vorhanden) oder MANDATORY(an Transaktion teilnehmen, falls vorhanden, andernfalls eine Ausnahme auslösen).

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void serviceMethod() {}

@Transactional(propagation = Propagation.REQUIRED)
public void daoMethod1() {}

@Transactional(propagation = Propagation.REQUIRED)
public void daoMethod2() {}

Verwandte Artikel


So iterieren Sie die Liste der Objekte im Frühjahr

Bhanu Krishnan: public class Members { private String fname; private String lname; public String getFname() { return fname; } public void setFname(String fname) { this.fname = fname; } public String getLn

So verbinden Sie Redis und Couchbase im Frühjahr

Bewunderer Halilovic Wie kann ich Redis und Couchbase mit meiner Frühlingsanwendung verbinden? Ich erhalte diesen Fehler. Parameter 0 of method couchbaseMappingContext in org.springframework.data.couchbase.config.AbstractCouchbaseConfiguration required a singl

Die Funktionalität der @ Service-Annotation im Frühjahr

Weil Mertce Dies ist eine Art "Was ist eine @ Service-Annotation?" Frage, aber mit einem anderen Ansatz. Weil ich nicht sicher bin, was hier los ist: Ich habe eine Controller-Klasse: @Controller public class GreetingController { @Autowired SomeBean som