Spring middle
В какой момент происходит коммит @Transactional?
Ответ
После успешного завершения метода (без исключений). Прокси: try { beginTransaction; target.method(); commit; } catch { rollback; }. Rollback по умолчанию: только RuntimeException и Error (unchecked); на checked-исключения отката нет — нужен явный rollbackFor.
Разбор: Транзакционный прокси фиксирует транзакцию ПОСЛЕ нормального возврата из метода и откатывает при выбросе исключения; по умолчанию откат срабатывает только на unchecked-исключения (RuntimeException и Error), а на checked — нет. Главная ловушка — считать, что rollback происходит на любом исключении: для checked нужно явно указать rollbackFor.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.