Frontier: Mit einer eingehenderen Untersuchung des Spring Transaction Managements wird dieser Artikel keine Beispiele erstellen, sondern bestimmte Klassen und Konfigurationsdateien zur Erläuterung angeben.
Inhalt dieses Artikels:
1. Verstehen Sie, was eine deklarative Transaktion ist?
2. Was ist das deklarative Transaktionsmanagement?
3. Was ist der Unterschied zwischen diesen Arten des Transaktionsmanagements?
1. Was ist eine deklarative Transaktion?
Das Deklarative Transaktionsmanagement ist eine Möglichkeit, Programmtransaktionen von Spring zu verwalten. Deklarative Transaktionen von Spring verwenden die deklarative Methode, um Transaktionen zu verarbeiten und die deklarative Verarbeitung von Transaktionen in Federkonfigurationsdateien zu ersetzen, um die codebasierte Verarbeitung von Transaktionen zu ersetzen. Der Vorteil davon ist, dass das Transaktionsmanagement nicht in die Entwicklungskomponenten eindringt. Insbesondere wird das Geschäftslogikobjekt nicht erkennen, dass es sich im Transaktionsmanagement befindet. Tatsächlich sollte das gleiche zutreffen, da das Transaktionsmanagement ein Service auf Systemebene ist und nicht Teil der Geschäftslogik. Wenn Sie die Transaktionsverwaltung ändern möchten, müssen Sie die Konfiguration nur in der definierten Konfigurationsdatei ändern. Wenn kein Transaktionsmanagement erforderlich ist, ändern Sie sie einfach in der Konfigurationsdatei und entfernen Sie den Transaktionsverwaltungsdienst, ohne den Code zu ändern und ihn neu zu kompilieren, was äußerst bequem zu verwalten ist.
2. Methode für die Deklarative Transaktionsmanagement.
Schauen wir uns zunächst das ursprüngliche Transaktionsmanagement an, bevor wir über die methode deklarative Transaktionsmanagement sprechen können.
Wie aus der obigen Abbildung ersichtlich ist, müssen wir zunächst eine neue Sitzung erstellen. OpenSession (), zweitens müssen wir Transaktionen durch die GetTransaction () -Methode () () und GetTransaction () (). Comment () erstellen und begehen. Auf diese Weise werden wir jedes Mal, wenn wir diese Methode nennen, eine neue Sitzung neu erstellen und das Gleiche wiederholt durchführen, was unserer Idee der Software -Engineering -Design nicht entspricht. Als nächstes verwenden wir ein deklaratives Transaktionsmanagement, um den Code zu vereinfachen und anzupassen.
1. Verwenden Sie Springaop Deklaratives Transaktionsmanagement.
1.1. Wir müssen mehrere Pakete von AOP importieren:
1.2. Führen Sie dann die Transaktionskonfiguration in der Konfigurationsdatei application.xml durch:
1.3. Ändern Sie die Methode zur Abfrage aller Daten:
Nach der obigen Erklärung können wir die Änderung der ShowAllNews () -Methode sehen. Zunächst ändern wir die ursprüngliche OpenSession () -Methode in GetCurrentSession () -Methode (Hinweis: Der Screenshot enthält Kommentare, um ihre Unterschiede zu veranschaulichen, sodass ich sie nicht wiederholen werde). Es besteht keine Notwendigkeit, Transaktionen manuell zu erstellen und zu begehen. Unser Springaop verwaltet automatisch die Transaktionen und schließt die Sitzung automatisch.
2. Verwenden Sie @Transactional Annotation -Methode.
2.1. Zunächst müssen wir die Transaktionskonfiguration in der Konfigurationsdatei application.xml durchführen (Federcontainer benachrichtigen, um die Bean -Verarbeitung von Annotation @Transactional zu verarbeiten):
2.2. Dann müssen keine Operationen oder Änderungen in NewsDaoImpl vorgenommen werden:
2.3. Fügen Sie NewsserviceImpl Anmerkungen hinzu.
Hier können wir der Klasse @Transactional Annotation hinzufügen (was bedeutet, dass alle Methoden zum Transaktionsmanagement hinzugefügt werden) oder der spezifischen Methode Annotation @Transactional hinzufügen. Wenn es sich um eine Methode handelt, für die die Daten nicht geändert werden müssen, fügen Sie ein Attribut hinzu.
Zum Beispiel: Methode zur Abfrage aller Daten @Transactional (readonly = true)
3. Die Differenz zwischen deklarativem Transaktionsmanagement, der mit Springaop und @Transactional Annotation konfiguriert ist:
1) Deklarative Transaktionsmanagement der Springaop -Konfiguration weist eine geringe Kopplung, eine geringe Lesbarkeit, einen detaillierten Ausdruck und eine hohe Flexibilität auf.
2) @Transactional Annotation hat eine hohe Lesbarkeit, und der Inhalt ist verteilt und für einheitliche Verwaltung und Wartung nicht förderlich und hat eine hohe Kopplung.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.