In diesem Artikel werden hauptsächlich relevante Informationen zur detaillierten Einführung von Java-Basistransaktionen vorgestellt. Freunde, die diese benötigen, können sich auf
Ausführliche Erklärung von Java-Transaktionen
1 , Was ist eine Transaktion
Eine Transaktion ist eine Abfolge von Vorgängen für den Zugriff auf die Datenbank. Das Datenbankanwendungssystem vervollständigt den Zugriff auf die Datenbank über Transaktionssätze. Die korrekte Ausführung einer Transaktion führt dazu, dass die Datenbank von einem Zustand in einen anderen übergeht.
Atomar. Das heißt, Unteilbarkeit, entweder werden alle Transaktionen ausgeführt oder keine. Wenn alle Untertransaktionen der Transaktion erfolgreich übermittelt wurden, werden alle Datenbankoperationen übermittelt, und wenn eine Untertransaktion fehlschlägt, werden die Datenbankoperationen anderer Untertransaktionen zurückgesetzt. Das heißt, die Datenbank kehrt in den Zustand vor der Transaktionsausführung zurück, es findet kein Zustandsübergang statt.
Konsistenz bzw. Stringability. Die Ausführung einer Transaktion wandelt die Datenbank von einem korrekten Zustand in einen anderen um. Isolation. Bevor die Transaktion korrekt festgeschrieben wurde, dürfen durch die Transaktion vorgenommene Änderungen an den Daten keiner anderen Transaktion zur Verfügung gestellt werden. Das heißt, bis die Transaktion korrekt festgeschrieben wurde, sollten ihre möglichen Ergebnisse keiner anderen Transaktion angezeigt werden.
Beharrlichkeit. Nachdem eine Transaktion korrekt übermittelt wurde, werden ihre Ergebnisse dauerhaft in der Datenbank gespeichert. Auch wenn nach der Übermittlung der Transaktion weitere Fehler auftreten, werden die Verarbeitungsergebnisse der Transaktion gespeichert.
2. Das Datenbanksystem unterstützt zwei Transaktionsmodi :
Auto-Commit-Modus: Jede SQL-Anweisung ist eine unabhängige Transaktion nach der Datenbank Wenn das System eine SQL-Anweisung ausführt, wird die Transaktion automatisch übermittelt.Manueller Commit-Modus: Die Start- und Endgrenze der Transaktion muss explizit vom Datenbank-Client-Programm angegeben werden.
4. Isolationsstufe
Wenn das Datenbanksystem die festgeschriebene Isolationsstufe übernimmt, führt dies zum zweiten Typ von Nicht wiederholbares Lesen Das Parallelitätsproblem verlorener Aktualisierungen kann durch die Verwendung pessimistischer oder optimistischer Sperren in der Anwendung vermieden werden. Aus Anwendungssicht lassen sich Sperren in folgende Kategorien einteilen:Serialisierbar: Eine Transaktion kann die von anderen Transaktionen während der Ausführung an der Datenbank vorgenommenen Aktualisierungen nicht sehen.
Wiederholbares Lesen: Während der Ausführung einer Transaktion können Sie neu eingefügte Datensätze sehen, die von anderen Transaktionen übermittelt wurden, aber Sie können keine Änderungen an vorhandenen Datensätzen durch die Erneuerung anderer Transaktionen sehen.
Festgeschrieben lesen (festgeschriebene Daten lesen): Während der Ausführung einer Transaktion können Sie die neu eingefügten Datensätze sehen, die von anderen Transaktionen festgeschrieben wurden, und Sie können auch die Paare sehen, die festgeschrieben wurden wurden von anderen Transaktionen festgeschrieben
Nicht festgeschriebene Daten lesen: Während der Ausführung kann eine Transaktion neu eingefügte Datensätze kopieren, die nicht von anderen Transaktionen festgeschrieben wurden. und kann andere Transaktionen sehen. Es gibt keine festgeschriebenen Aktualisierungen vorhandener Datensätze.
Je höher die Isolationsstufe, desto vollständiger und konsistenter können die Daten garantiert werden, aber desto größer ist auch die Auswirkung auf die Parallelitätsleistung. Bei den meisten Anwendungen können Sie der Isolationsstufe des Datenbanksystems Priorität auf „Read Commited“ geben, wodurch Dirty Reads vermieden werden können und eine bessere Parallelitätsleistung erzielt wird. Obwohl dies zu Parallelitätsproblemen wie nicht wiederholbaren Lesevorgängen, virtuellen Lesevorgängen und verlorenen Aktualisierungen zweiten Typs führt, können solche Probleme in einzelnen Situationen, in denen solche Probleme auftreten können, von der Anwendung mithilfe pessimistischer Sperren oder optimistischer Sperren gesteuert werden.
Wenn das Datenbanksystem die Leseisolationsstufe „Commited“ verwendet, führt dies zu nicht wiederholbaren Lesevorgängen und der zweiten Art von Problemen mit der Parallelität verlorener Updates. Sie können pessimistische Sperren oder optimistische Sperren in der Anwendung verwenden, um solche Probleme zu vermeiden . Aus Sicht der Anwendung können Sperren in die folgenden Kategorien unterteilt werden:
A. Pessimistische Sperre: bezieht sich auf die Sperrung von in der Anwendung angezeigten Datenressourcen. Obwohl es Parallelitätsprobleme wie verlorene Aktualisierungen und nicht wiederholbare Lesevorgänge verhindert, beeinträchtigt es die Parallelitätsleistung und sollte mit Vorsicht verwendet werden.
B. Optimistisches Sperren: Optimistisches Sperren geht davon aus, dass, wenn die aktuelle -Transaktion die -Datenressource betreibt, keine anderen Transaktionen gleichzeitig auf die Datenressource zugreifen Es ist vollständig auf die Isolation der Datenbankebenen angewiesen, um Sperren automatisch zu verwalten. Anwendungen nutzen die Versionskontrolle, um mögliche Parallelitätsprobleme zu vermeiden.
5. Es gibt zwei Möglichkeiten, pessimistische Sperren zu implementieren.
A. Im Anwendungsprogramm anzeigen und die ausschließliche Verwendung des Datenbanksystems zum Sperren von Datenressourcen festlegen. SQL-Anweisung: Wählen Sie... füraktuellesDatum aus, verwenden Sie beim Laden get im Ruhezustand, z. B. session.get(Account .class,new Long(1),LockMode,UPGRADE)
B. Fügen Sie ein LOCK-Feld hinzu, das den Datensatzstatus in der Datenbanktabelle angibt, wenn es den Wert „Y“ annimmt. Zeigt an, dass der Datensatz durch eine Transaktion gesperrt wurde. Wenn er „N“ ist, bedeutet dies, dass der Datensatz inaktiv ist und die Transaktion darauf zugreifen kann. Dies kann durch Hinzufügen eines Sperr-Tag-Felds erreicht werden.
Nutzen Sie die Hibernate-Versionskontrolle, um optimistisches Sperren zu implementieren.
Optimistisches Sperren ist ein vom Programm bereitgestellter Mechanismus. Dieser Mechanismus kann nicht nur sicherstellen, dass mehrere Transaktionen gleichzeitig auf Daten zugreifen, sondern auch verhindern, dass die zweite Klasse fehlt Update-Problem.
In der Anwendung können Sie die von Hibernate bereitgestellte Versionskontrollfunktion verwenden, um das Element <time in der OR-Zuordnungsdatei anzuzeigen Versionskontrolle. Es wird generell empfohlen,
Das obige ist der detaillierte Inhalt vonEine ausführliche Einführung in die grundlegenden Java-Transaktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!