2017-10-17 4 views

Antwort

0

Frühling Transaktion ist

@Transactional(propagation = Propagation.REQUIRED) 

So brauchen Sie nicht über die Ausbreitungseigenschaft angeben.

Also, Was bedeutet es von @Transactional Annotation für eine Federkomponente?

  • Spring-Framework wird eine neue Transaktion starten und führt alle Verfahren und schließlich die Transaktion begehen.

  • Wenn jedoch in der application context keine Transaktion vorhanden ist, startet der Spring Container eine neue Transaktion.

  • Wenn mehr als eine Methode als Propagation.REQUIRED konfiguriert ist, dann wird das Transaktionsverhalten verschachtelt für jede Methode logisch zugeordnet, aber alle befinden sich unter derselben physischen Transaktion.

Also, was ist das Ergebnis?
Das Ergebnis ist, wenn eine verschachtelte Transaktion fehlschlägt, dann wird die gesamte Transaktion fehlschlagen und zurückrollen (fügen Sie keinen Wert in db), anstatt zu committen.

Beispiel:

@Service 
public class ServiceA{ 

    @Transactional(propagation = Propagation.REQUIRED) 
    public void foo(){ 
     fooB(); 
    } 

    @Transactional(propagation = Propagation.REQUIRED) 
    public void fooB(){ 
     //some operation 
    } 

} 

Erläuterung: In diesem Beispiel foo() Verfahren zur Herstellung einer Transaktionsverhalten zugeordnet und innen foo() anderen Methode fooB() genannt, die auch transaktional ist. Hier agieren die fooB() als verschachtelte Transaktion in Bezug auf foo(). Wenn fooB() aus irgendeinem Grund fehlschlägt, ist auch foo() fehlgeschlagen zu committen. Eher rollt es zurück.

0

Diese Anmerkung dient nur dazu, das Spring-Framework zu helfen, Ihre Datenbanktransaktion zu verwalten.

Lassen Sie uns sagen Sie einen Service-Bean, die auf Ihre Datenbank schreibt und Sie wollen sicherstellen, dass das Schreiben innerhalb einer Transaktion durchgeführt wird Sie dann hier

@Transactional(propagation = Propagation.REQUIRED) 

verwenden ist ein kleines Beispiel für eine Frühlings-Service Bohne .

@Service 
class MyService { 

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

     // write something to your database 
    } 
} 

Die Transactional Anmerkung sagt Frühling, dass:

  • Dieser Service Methode erfordert innerhalb einer Transaktion ausgeführt werden.
  • Wenn während der Ausführung der Servicemethode eine Ausnahme ausgelöst wird, führt Spring einen Rollback der Transaktion aus, und es werden keine Daten in die Datenbank geschrieben. Standard
Verwandte Themen