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:
- Abzug von Geld von einem Konto;
- 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.
BankService.java
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.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 3.45
Transaktionen
Swipe um das Menü anzuzeigen
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:
- Abzug von Geld von einem Konto;
- 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.
BankService.java
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.
Danke für Ihr Feedback!