Two things about Spring's @Transactional that everyone gets wrong: propagation (what happens when a transactional method calls another) and isolation (which read anomalies a level allows). Poke both and watch exactly what commits, rolls back, or leaks.
| Isolation level | Dirty read | Non-repeatable read | Phantom read |
|---|