NOTE
Using Spring Transactions
Declarative transaction boundaries, rollback rules, proxy limitations, isolation, timeouts, and external side effects.
This is a historical learning note and may contain outdated or incomplete understanding.
@Transactional should mark a meaningful business/data consistency boundary, not every repository call mechanically.
Configure propagation, isolation, timeout/read-only hints, and rollback rules deliberately. The common proxy model means interception is applied only to calls entering through the proxy; self-invocation is a frequent surprise.
Do not perform long remote calls inside a database transaction without understanding lock/connection duration. For DB + message/service consistency, use an outbox/saga/other explicit distributed consistency pattern rather than assuming one annotation makes everything atomic.