Transaktionen
Eine Transaktion bietet im Wesentlichen eine Wahlmöglichkeit: Entweder werden alle darin enthaltenen Operationen erfolgreich abgeschlossen, oder keine von ihnen wird ausgeführt.
Stellen Sie sich eine Banküberweisung vor, bei der Geld von einem Konto auf ein anderes übertragen wird. Dieser Vorgang umfasst zwei Schritte:
- Abbuchung des Geldes von einem Konto;
- Einzahlung des Geldes auf ein anderes Konto.
Scheitert die Transaktion nach der Abbuchung, aber vor der Einzahlung, könnten die Gelder "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 im Kontext 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.
Ein Beispiel basierend auf dem zuvor erwähnten Praxisfall.
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 Methode transferMoney mit der Annotation @Transactional versehen ist, bedeutet dies, dass alle Änderungen innerhalb dieser Methode im Rahmen einer einzigen Transaktion ausgeführt werden.
Wenn fromAccount.withdraw(amount) gefolgt von toAccount.deposit(amount) aufgerufen wird, müssen beide Aktionen erfolgreich abgeschlossen werden. Tritt beispielsweise während der Operation toAccount.deposit(amount) ein Fehler auf, wird die Transaktion automatisch die während des Schritts fromAccount.withdraw(amount) vorgenommenen Änderungen zurücksetzen (Rollback).
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, wodurch ein Verlust von Geldmitteln verhindert wird. Die Transaktion garantiert, dass die Datenbank niemals in einem inkonsistenten Zustand verbleibt.
Praktische Anwendung von Transaktionen
Zusammenfassung
Eine Transaktion ist eine Gruppe von Datenbankoperationen, die als eine Einheit behandelt werden. Sie stellt sicher, dass alle Operationen gemeinsam erfolgreich sind oder im Fehlerfall vollständig zurückgesetzt werden. Weitere Informationen zu Transaktionen finden Sie 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
What are the main benefits of using transactions in database operations?
Can you explain how the @Transactional annotation works in more detail?
Are there any common pitfalls or mistakes to avoid when working with transactions in Spring?
Awesome!
Completion rate improved to 3.45
Transaktionen
Swipe um das Menü anzuzeigen
Eine Transaktion bietet im Wesentlichen eine Wahlmöglichkeit: Entweder werden alle darin enthaltenen Operationen erfolgreich abgeschlossen, oder keine von ihnen wird ausgeführt.
Stellen Sie sich eine Banküberweisung vor, bei der Geld von einem Konto auf ein anderes übertragen wird. Dieser Vorgang umfasst zwei Schritte:
- Abbuchung des Geldes von einem Konto;
- Einzahlung des Geldes auf ein anderes Konto.
Scheitert die Transaktion nach der Abbuchung, aber vor der Einzahlung, könnten die Gelder "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 im Kontext 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.
Ein Beispiel basierend auf dem zuvor erwähnten Praxisfall.
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 Methode transferMoney mit der Annotation @Transactional versehen ist, bedeutet dies, dass alle Änderungen innerhalb dieser Methode im Rahmen einer einzigen Transaktion ausgeführt werden.
Wenn fromAccount.withdraw(amount) gefolgt von toAccount.deposit(amount) aufgerufen wird, müssen beide Aktionen erfolgreich abgeschlossen werden. Tritt beispielsweise während der Operation toAccount.deposit(amount) ein Fehler auf, wird die Transaktion automatisch die während des Schritts fromAccount.withdraw(amount) vorgenommenen Änderungen zurücksetzen (Rollback).
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, wodurch ein Verlust von Geldmitteln verhindert wird. Die Transaktion garantiert, dass die Datenbank niemals in einem inkonsistenten Zustand verbleibt.
Praktische Anwendung von Transaktionen
Zusammenfassung
Eine Transaktion ist eine Gruppe von Datenbankoperationen, die als eine Einheit behandelt werden. Sie stellt sicher, dass alle Operationen gemeinsam erfolgreich sind oder im Fehlerfall vollständig zurückgesetzt werden. Weitere Informationen zu Transaktionen finden Sie hier.
Danke für Ihr Feedback!