Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Transaktionen | Arbeiten mit Datenbanken
Spring Boot Backend
course content

Kursinhalt

Spring Boot Backend

Spring Boot Backend

1. Grundlagen der Backend-Entwicklung
2. Spring Boot Grundlagen
3. RESTful API
4. Arbeiten mit Datenbanken
5. Testen von Backend-Anwendungen

book
Transaktionen

Eine Transaktion gibt uns im Wesentlichen eine Wahl: Entweder werden alle Operationen innerhalb der Transaktion erfolgreich abgeschlossen, oder keine von ihnen wird überhaupt ausgeführt.

Stellen Sie sich eine Banküberweisung vor, bei der Geld von einem Konto auf ein anderes übertragen wird. Dieser Prozess umfasst zwei Schritte:

  1. Abzug von Geld von einem Konto;
  2. Einzahlung von Geld auf ein anderes Konto.

Wenn die Transaktion nach dem Abzug von Geld fehlschlägt, aber bevor es eingezahlt wird, könnten die Mittel "verloren" gehen. Eine Transaktion stellt sicher, dass beide Operationen entweder vollständig abgeschlossen oder vollständig rückgängig gemacht werden.

Grundlagen des Transaktionsmanagements

Die @Transactional Annotation: Diese wird verwendet, um Methoden oder Klassen zu deklarieren, die innerhalb des Kontexts einer Transaktion ausgeführt werden sollen.

Wenn eine Methode mit dieser Annotation aufgerufen wird, startet Spring eine neue Transaktion. Wenn die Methode erfolgreich abgeschlossen wird, wird die Transaktion committed; andernfalls wird sie zurückgesetzt.

Lassen Sie uns ein Beispiel basierend auf dem früher erwähnten realen Szenario bereitstellen.

java

BankService

copy
1234567891011121314151617
@Service public class BankService { private AccountRepository accountRepository; @Transactional public void transferMoney(Long fromAccountId, Long toAccountId, double amount) { Account fromAccount = accountRepository.findById(fromAccountId); Account toAccount = accountRepository.findById(toAccountId); fromAccount.withdraw(amount); toAccount.deposit(amount); accountRepository.save(fromAccount); accountRepository.save(toAccount); } }

Wenn die transferMoney Methode mit der @Transactional Annotation markiert ist, bedeutet dies, dass alle Änderungen, die innerhalb dieser Methode stattfinden, innerhalb einer einzigen Transaktion ausgeführt werden.

Wenn wir fromAccount.withdraw(amount) gefolgt von toAccount.deposit(amount) aufrufen, müssen beide dieser Aktionen erfolgreich abgeschlossen werden. Wenn zum Beispiel ein Fehler auftritt während der toAccount.deposit(amount) Operation, wird die Transaktion automatisch die während des fromAccount.withdraw(amount) Schritts vorgenommenen Änderungen zurücksetzen.

Dies gewährleistet, dass entweder beide Operationen ausgeführt werden und das Geld übertragen wird, oder im Falle eines Fehlers keine der Operationen durchgeführt wird, was Verluste von Geldern verhindert. Die Transaktion garantiert, dass die Datenbank niemals in einem inkonsistenten Zustand verbleibt.

Praktische Anwendung von Transaktionen

Zusammenfassung

Eine Transaktion ist eine Reihe von Datenbank-Operationen, die als einzelne Einheit behandelt werden, um sicherzustellen, dass alle Operationen zusammen erfolgreich sind oder im Falle eines Fehlers vollständig zurückgesetzt werden. Sie können mehr über Transaktionen erfahren hier.

Was ist eine `transaction` im Kontext einer Datenbank?

Was ist eine transaction im Kontext einer Datenbank?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 4. Kapitel 6
We're sorry to hear that something went wrong. What happened?
some-alt