====== 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. ==== Logging ==== 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);