Einfache Verwendung von Java -Transaktionen
Java -Angelegenheiten werden in einigen Interviews gefragt.
Während des Interviews müssen wir zunächst beantworten: Transaktionen können die Integrität und Konsistenz von Daten sicherstellen.
Wenn die Fähigkeiten tiefer sind: Sprechen Sie einfach über einige Prinzipien (setzen Sie keine Aufgaben vor, bevor die Aufgabe beginnt, und senden Sie Aufgaben, nachdem alle Aufgaben erledigt sind.
Wenn die Aufgabe in der Mitte getrennt ist, wird Rollback ausgeführt und die vorherige Aufgabe wird abgesagt) und ein einfaches Beispiel wird angegeben (z. B. das Problem des Sparen und Abhebens von Geld.
Zum Beispiel: Die Bank überträgt Geld zwischen zwei Konten, überträgt von Konto A auf Konto B für 1.000 Yuan. Das System reduziert das Konto A zuerst A um 1.000 Yuan und fügt dann 1.000 Yuan in Rechnung B hinzu. Wenn alle Ausführungen erfolgreich sind, ist die Datenbank konsistent. Wenn nur die Änderung des Kontos A ohne Erhöhung des Kontos B abgeschlossen ist, befindet sich die Datenbank in einem inkonsistenten Zustand und der vorherige Vorgang muss storniert werden. )
In diesem Artikel werden Java -Transaktionen kurz erörtert. Wenn wir nach Java -Transaktionen fragen, müssen wir wissen, dass dies mit Datenbanken zusammenhängt.
eins. Schauen wir uns zuerst einen einfachen Code an
Verwenden Sie JDBC, um die Transaktionsverarbeitung durchzuführen
public int delete (int sid) {// Klasse, die Datenbankverbindungsdatenbank implementiert dbc = new DatabaseConnection (); // das Verbindungsobjektverbindungsanschluss con = dbc.getConnection () abrufen; try {con.setAutocommit (false); // Ändern Sie die Standard -Commit -Methode von JDBC -Transaktionen dbc.executeUpdate ("von xiao löschen wobei id =" + sid); dbc.executeUpdate ("aus xiao_content löschen wobei id =" + sid); dbc.executeUpdate ("aus xiao_affix delete wobei bylawid =" + sid); con.commit (); // begehen jdbc Transaktionskon. Rückkehr 1; } catch (Exception exc) {con.rollback (); // rolle Back JDBC Transaction DBC.CLOSE (); Return -1; }} Der obige Code ist eine einfache Ausführung einer Java -Transaktion.
Die oben genannten Dreifachen der Löschvorgänge werden durchgeführt. Solange man fehlschlägt, wird die Aufgabe zurückgerollt, was entweder zusammen dem Erfolg zusammen ist oder nichts erledigt wird.
Wenn es keine Transaktionsverwaltung gibt, wird die vorherige Ausführung sofort in der Datenbank aktualisiert.
Beenden Sie die nachfolgenden Aufgaben, wo immer die Ausführung fehlschlägt, und die Konsistenz der Daten kann nicht garantiert werden.
zwei. Das Grundkonzept von Java -Transaktionen
Atomizität: Eine Transaktion ist ein vollständiger Betrieb. Die Operationen der Transaktion sind untrennbar (Atomic);
Entweder ausführen oder keine von ihnen
Konsistenz: Wenn eine Transaktion abgeschlossen ist, müssen die Daten in einem konsistenten Zustand liegen.
Isolierung: Alle gleichzeitigen Transaktionen, die Daten ändern, werden voneinander isoliert, was bedeutet, dass die Transaktion unabhängig sein muss.
Es sollte nicht von anderen Transaktionen abhängen oder in irgendeiner Weise beeinflussen (Haltbarkeit): Nach Abschluss einer Transaktion werden ihre Änderungen an der Datenbank dauerhaft gewartet, und das Transaktionsprotokoll kann die Dauergröße der Transaktion beibehalten.
Java -Transaktionsverarbeitung Beschreibung: Wenn Sie mehrere Vorgänge in der Datenbank ausführen, ist jede Ausführung oder jeder Schritt eine Transaktion.
Wenn der Datenbankvorgang nicht in einem bestimmten Schritt ausgeführt wird oder eine Ausnahme auftritt, was zum Transaktionsfehler führt, werden einige Transaktionen ausgeführt und einige nicht ausgeführt.
Dies führt zu Transaktionsrollback und storniert frühere Operationen ...
In einer Datenbankoperation bezieht sich eine Transaktion auf eine untrennbare Arbeitseinheit, die aus einer oder mehreren SQL -Anweisungen besteht, die die Datenbank aktualisieren.
Nur wenn alle Vorgänge in der Transaktion normalerweise abgeschlossen sind, können die gesamte Transaktion in der Datenbank übermittelt werden. Wenn eine Operation nicht abgeschlossen ist,
Die gesamte Transaktion muss widerrufen werden.
Nehmen wir beispielsweise bei Bankübertragungstransaktionen an, dass Zhang San 1.000 Yuan von seinem Konto auf das Konto von Li Si überträgt, die relevanten SQL -Aussagen wie folgt:
Update Account Set Money = Monery-1000 wobei Name = 'Zhangsan' '
Aktualisieren Sie das Konto ein
Diese beiden Aussagen müssen als abgeschlossene Transaktion verarbeitet werden. Diese Transaktion kann nur eingereicht werden, wenn beide erfolgreich ausgeführt werden.
Wenn ein Satz fehlschlägt, muss die gesamte Transaktion widerrufen werden.
Es gibt 3 Methoden zur Steuerung von Transaktionen in der Verbindungsklasse:
(1) setAutocommit (boolean AutoCommit): Stellen Sie fest, ob Transaktionen automatisch übermittelt werden sollen;
(2) Commit (); begehen(); Transaktion begehen;
(3) Rollback (); die Transaktion rückgängig machen;
In der JDBC -API besteht der Standardfall darin, Transaktionen automatisch zu begehen, dh jede Aktualisierung der Datenbank repräsentiert eine Transaktion.
Nach dem Erfolg des Vorgangs ruft das System automatisch Commit () an, um zu begehen, ansonsten wird Rollback () aufgerufen, um die Transaktion rückgängig zu machen.
In der JDBC -API kann die Einreichung der automatischen Transaktion durch Aufrufen von SetAutocommit (False) verboten werden.
Anschließend können Sie mehrere SQL -Anweisungen verwenden, die die Datenbank als Transaktion aktualisieren. Nach Abschluss aller Operationen ist Commit () aufgerufen, um die Gesamteingabe vorzunehmen.
Wenn einer der SQL -Operationen fehlschlägt, wird die Commit () -Methode nicht ausgeführt, die entsprechende SQLEXception wird jedoch erzeugt.
Zu diesem Zeitpunkt können Sie die Ausnahme im Codeblock aufnehmen und die Rollback () -Methode aufrufen, um die Transaktion rückgängig zu machen.
Im Allgemeinen müssen Entwickler, die sich auf die Entwicklung von Datenbanken spezialisiert haben, ein tiefes Verständnis von Transaktionen haben.
Aber der durchschnittliche Programmierer muss in dieser Hinsicht nicht viel Zeit verbringen. Habe nur ein Verständnis für die allgemeine Wirkung.
Danke fürs Lesen, ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Seite!