LU10c - Transaktionen

Bei Fehler innerhalb von gesammelten Änderungen macht es in der Regel Sinn die bereits gemachten Änderungen wieder rückgängig zu machen. Dies geschieht bei SQL mittels Transactions.

BEGIN TRANSACTION;
 
UPDATE Persons
SET Balance = Balance - 100
WHERE PersonId = 'A';
 
UPDATE Persons
SET Balance = Balance + 100
WHERE PersonId = 'B';
 
COMMIT;

Bei COMMIT; werden die gemachten Änderungen tatsächlich auf die Datenbank geschrieben, bei ROLLBACK; werden die Änderungen zurückgesetzt.

Bei SpringBoot gibt es dazu die Annotation org.springframework.transaction.annotation.Transactional. Hat eine Methode diese Annotation und es passiert eine java.lang.RuntimeException während der Ausführung, wird automatisch ein Rollback aller SQL-Statements seit Beginn der Methode gemacht.

Achten Sie bei Ihrem Logging darauf, dass die Logeinträge auch im Fall eines Rollbacks Sinn ergeben.

for (AccountUpdate update : accounts) {
    ...
    log.debug("Prepared account update: number={} project={}", accountNumber, projectName);
}
log.info("All accounts updates processed successfully for project {}", projectName);
  • de/modul/ffit/3-jahr/java/learningunits/lu10/c.txt
  • Zuletzt geändert: 2025/11/11 02:26
  • von apeter