Transactions and Isolation
A transaction groups database operations into an atomic unit. Isolation controls how concurrent transactions observe each other's changes.
connection.setAutoCommit(false);
try {
debitAccount(connection, fromId, amount);
creditAccount(connection, toId, amount);
connection.commit();
} catch (Exception e) {
connection.rollback();
throw e;
}
Transaction boundaries should usually live at a service/use-case layer rather than being scattered across repository methods.
Key Takeaways
- Transactions define atomicity boundaries.
- Isolation is a concurrency trade-off.
- Keep transaction boundaries aligned with business operations.