Detaillierte Erklärung von Spring Things (Transaktion)

1. Überblick über die Frühlingstransaktionen

Transaktion: Eine Programmausführungseinheit (Einheit), die auf verschiedene Datenelemente in der Datenbank zugreift und diese möglicherweise aktualisiert. Sie wird normalerweise von einem Benutzerprogramm geschrieben, das in einer fortgeschrittenen Datenbankmanipulationssprache oder Programmiersprache (wie SQL, C++ oder Java) geschrieben ist und durch die Ausführung verursacht wird . Wenn die Daten in der Datenbank erfolgreich geändert wurden, werden die in der Transaktion geänderten Daten übermittelt und nicht geändert. Andernfalls wird die Transaktion abgebrochen oder rückgängig gemacht und die Änderungen haben keine Auswirkungen.

Transaktionen sind ein wichtiger Bestandteil von Unternehmensanwendungen, die auf relationalen Datenbanken (RDBMS) basieren. Im Bereich der Softwareentwicklung spielen Transaktionsakteure eine sehr wichtige Rolle, um die Integrität und Konsistenz von Anwendungsdaten sicherzustellen.

Wenn Zhang San beispielsweise 1.000 Yuan an Li Si überweist, werden beim Betrieb der Datenbank zunächst 1.000 Yuan vom Konto von Zhang San abgezogen und dann 1.000 Yuan zum Konto von Li Si hinzugefügt. Dies ist ein zweiteiliger Vorgang. Das Zusammenfügen ist ein vollständiger Übertragungsprozess , was auch als Transaktion bezeichnet werden kann.

Einfach ausgedrückt soll sichergestellt werden, dass eine Reihe von Datenbankvorgängen auf der Datenebene erfolgreich sind und fehlschlagen (Festschreibung und Rollback).

Zweitens die Merkmale der Transaktion

Transaktionen weisen vier Merkmale auf: Atomizität, Konsistenz, Isolation und Dauerhaftigkeit, die als ACID-Merkmale bezeichnet werden.

  • Atomarität : Alle Vorgänge in einer Transaktion sind entweder alle abgeschlossen oder nicht abgeschlossen und enden nicht an einem bestimmten Link in der Mitte. Wenn während der Ausführung der Transaktion ein Fehler auftritt, wird sie auf den Zustand vor Beginn der Transaktion zurückgesetzt (Rollback), als ob die Transaktion nie ausgeführt worden wäre.
  • Konsistenz : Die Integrität der Datenbank wird vor Beginn und nach Ende der Transaktion nicht beeinträchtigt.
  • Transaktionsisolation (Isolation) : Die Datenbank ermöglicht mehreren gleichzeitigen Transaktionen das gleichzeitige Lesen, Schreiben und Ändern ihrer Daten. Durch die Isolierung können Dateninkonsistenzen verhindert werden, die durch kreuzweise Ausführung verursacht werden, wenn mehrere Transaktionen gleichzeitig ausgeführt werden.
  • Haltbarkeit : Nach Abschluss der Transaktionsverarbeitung sind die Änderungen an den Daten dauerhaft und gehen auch bei einem Systemausfall nicht verloren.

3. Transaktionsisolationsstufe:

1. Dirty Reading
Unter Dirty Reading versteht man das Lesen von Daten in einer anderen nicht festgeschriebenen Transaktion während einer Transaktionsverarbeitung.

2. Nicht wiederholbares Lesen
Nicht wiederholbares Lesen bedeutet, dass für bestimmte Daten in der Datenbank mehrere Abfragen im Rahmen einer Transaktion unterschiedliche Datenwerte zurückgeben. Dies liegt daran, dass sie während des Abfrageintervalls von einer anderen Transaktion geändert und übermittelt wurden.

3. Phantomlesung: Wenn eine Transaktion denselben Bereich zweimal abfragt, sieht die letztere Abfrage Zeilen, die in der vorherigen Abfrage nicht gesehen wurden. Wenn in allen Transaktionen Snapshot-Lesevorgänge verwendet werden, treten keine Phantom-Lesevorgänge auf, aber eine Mischung aus Snapshot-Lesevorgängen und aktuellen Lesevorgängen führt zu Phantom-Lesevorgängen.

Die Transaktionsisolation ist in vier verschiedene Ebenen unterteilt, darunter:

  • Nicht festgeschriebenes Lesen (Read uncommitted), die niedrigste Isolationsstufe, ermöglicht „schmutzige Lesevorgänge“ (Dirty Reads), und Transaktionen können die „noch nicht festgeschriebenen“ Änderungen anderer Transaktionen sehen. Wenn eine andere Transaktion zurückgesetzt wird, sind die von der aktuellen Transaktion gelesenen Daten fehlerhaft.
  • Beim Festschreiben zum Lesen (Lesen festgeschrieben) kann bei einer Transaktion das Problem des nicht wiederholbaren Lesens (nicht wiederholbares Lesen) auftreten. Nicht wiederholbares Lesen bezieht sich auf das mehrmalige Lesen derselben Daten innerhalb einer Transaktion. Wenn eine andere Transaktion die Daten ändert, bevor die Transaktion endet, werden die Daten in der ersten Transaktion zweimal gelesen. Möglicherweise sind sie nicht konsistent.
  • Wiederholbares Lesen (wiederholbares Lesen): Bei einer Transaktion kann das Problem des Phantom-Lesens (Phantom-Lesen) auftreten. Phantomlesen bedeutet, dass in einer Transaktion bei der ersten Abfrage eines Datensatzes festgestellt wird, dass kein Datensatz vorhanden ist. Wenn jedoch versucht wird, diesen nicht vorhandenen Datensatz zu aktualisieren, kann dies erfolgreich sein und derselbe Datensatz wird erneut gelesen , es ist magisch erschienen.
  • Serialisierbar, die strengste Isolationsstufe. Alle Transaktionen werden nacheinander ausgeführt, sodass keine schmutzigen Lesevorgänge, nicht wiederholbaren Lesevorgänge und Phantom-Lesevorgänge auftreten. Obwohl Transaktionen unter der Isolationsstufe Serializable die höchste Sicherheit aufweisen, wird die Effizienz aufgrund der seriellen Ausführung der Transaktionen erheblich verringert und die Leistung der Anwendung wird drastisch verringert. Wenn keine besonders wichtige Situation vorliegt, wird die Isolationsstufe Serializable im Allgemeinen nicht verwendet.

 

Es ist wichtig zu beachten, dass die Wirksamkeit einer Transaktion davon abhängt, ob die Datenbank-Engine Transaktionen unterstützt. Die InnoDB-Engine von MySQL unterstützt Transaktionen, MyISAM jedoch nicht.

Das wohl häufigste transaktionsbezogene Beispiel in der realen Welt sind Banküberweisungen. Angenommen, wir müssen 100 Yuan von Konto A auf Konto B überweisen. Dieser Überweisungsvorgang umfasst die folgenden zwei Vorgänge.
Ziehen Sie 100 Yuan von Konto A ab und
zahlen Sie 100 Yuan auf Konto B ein.

Wenn Konto A erfolgreich 100 Yuan abbucht, aber keine Einzahlung auf Konto B durchführt, verlieren wir 100 Yuan aus dem Nichts. Wenn Konto A kein Geld abbucht, aber erfolgreich 100 Yuan auf Konto B einzahlt, werden wir dies tun Bei weiteren 100 Yuan auf dem Konto erleidet die Bank Verluste. Daher müssen wir sicherstellen, dass alle Vorgänge in der Transaktion entweder alle erfolgreich sind oder alle fehlschlagen. Mit diesem Verständnis haben wir den Kern der Transaktion verstanden.

Als hervorragendes Open-Source-Framework und Anwendungsplattform bietet Spring auch eine gute Unterstützung für Transaktionen. Mithilfe der leistungsstarken Konfigurationsmöglichkeiten des IOC-Containers bietet Spring umfassende funktionale Unterstützung für Transaktionen.

Viertens: Unterstützung für Frühlingstransaktionen

Spring unterstützt zwei Arten von Transaktionen, nämlich programmatische Transaktionen und deklarative Transaktionen.

programmatische Transaktion

Programmatische Transaktionen beziehen sich auf die Einbettung von Transaktionsverwaltungscodes in Geschäftscodes, um das Festschreiben und Zurücksetzen von Transaktionen zu steuern.

deklarative Transaktion

Deklarative Transaktionen trennen den Transaktionsverwaltungscode von Geschäftsmethoden und implementieren die Transaktionsverwaltung auf deklarative Weise. Für Entwickler sind deklarative Transaktionen offensichtlich einfacher und besser zu verwenden als programmatische Transaktionen.
Um die Trennung von Transaktionsverwaltung und Geschäftscode zu erreichen, müssen Sie AOP im Frühjahr verwenden. Sein Kern besteht darin, die Methode vorher und nachher abzufangen und dann eine Transaktion zu erstellen oder beizutreten, bevor die Zielmethode startet. Nachdem die Zielmethode ausgeführt wurde , je nach Ausführungs-Commit oder Rollback.

Obwohl deklarative Transaktionen besser sind als programmatische Transaktionen, weisen sie auch Mängel auf: Die Granularität der deklarativen Transaktionsverwaltung liegt auf Methodenebene, während programmatische Transaktionen bis auf Codeblockebene genau sein können.

Verwenden Sie JDBC für den Zugriff auf die Datenbank und mybatis für den Zugriff auf die Datenbank.

(1) JDBC greift auf Daten zu und verarbeitet Transaktionen. Verbindung conn; conn.commit();conn.rollback();
(2) mybatis greift auf die Datenbank zu und verarbeitet Transaktionen. SqlSession.commit() ;SqlSession.rollback();

5. Frühlingstransaktionsmanager

Für das Transaktionsmanagement werden im Spring-Framework verschiedene Transaktionsmanager bereitgestellt. Der Transaktionsmanager von Spring basiert auf AOP. Im Transaktionsmanager von Spring umfasst es die Konfiguration des Transaktionsausbreitungsverhaltens, der Isolationsstufe, schreibgeschützter Attribute und Timeout-Attribute, die Methoden und Beschreibungsstrategien für Transaktionsanwendungen bereitstellen.
Bei der Entwicklung von Java EE-Projekten werden häufig Schichtmuster verwendet. Die Transaktionsverarbeitung von Spring befindet sich in der Geschäftslogikschicht, die eine Lösung für Transaktionen bietet.
Die Transaktionsverwaltungsschnittstelle von Spring

Drei Kernschnittstellen des Transaktionsmanagements sind im Transaktionsmodul von Spring (spring-tx-5.2.7.RELEASE.jar) enthalten.

(1) PlatformTransactionManager-Schnittstelle

Die PlatformTransactionManager-Schnittstelle ist eine von Spring bereitgestellte Transaktionsmanagerschnittstelle zum Verwalten von Transaktionen. Spring kapselt die Konfigurationsdetails der Transaktion in das TransactionDefinition-Objekt, ruft dann den Transaktionsstatus (TransactionStatus) über die getTransaction()-Methode des Transaktionsmanagers ab und führt den nächsten Vorgang für die Transaktion aus.

Diese Schnittstelle bietet drei Transaktionsbetriebsmethoden wie folgt:

(2) TransactionDefinition-Schnittstelle

Die TransactionDefinition-Schnittstelle ist ein Objekt der Transaktionsdefinition (Beschreibung), das Methoden zum Abrufen transaktionsbezogener Informationen bereitstellt, einschließlich fünf Operationen:

(3).TransactionStatus-Schnittstelle

Die TransactionStatus-Schnittstelle ist der Status der Transaktion, der die Statusinformationen der Transaktion zu einem bestimmten Zeitpunkt beschreibt. Es umfasst sechs Operationen wie folgt:

Supongo que te gusta

Origin blog.csdn.net/weixin_67224308/article/details/130074519
Recomendado
Clasificación