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.