Как работает @Transactional в Spring?

Middle
468 просмотров
AFK Offer AI

@Transactional на методе/классе оборачивает выполнение в транзакцию. Spring создаёт прокси — перед вызовом открывает транзакцию, после успеха — commit, при RuntimeException — rollback. Важно: работает только через прокси, вызов @Transactional метода из того же класса (this.method()) не проходит через прокси и транзакция не создаётся! Решение: вынести в другой бин или использовать self-injection. По умолчанию rollback только на unchecked exceptions, для checked — rollbackFor = Exception.class.

Следующий вопрос

Как работает HashMap под капотом?