Spring middle

В какой момент происходит коммит @Transactional?

Ответ

После успешного завершения метода (без исключений). Прокси: try { beginTransaction; target.method(); commit; } catch { rollback; }. Rollback по умолчанию: только RuntimeException и Error (unchecked); на checked-исключения отката нет — нужен явный rollbackFor.

Разбор: Транзакционный прокси фиксирует транзакцию ПОСЛЕ нормального возврата из метода и откатывает при выбросе исключения; по умолчанию откат срабатывает только на unchecked-исключения (RuntimeException и Error), а на checked — нет. Главная ловушка — считать, что rollback происходит на любом исключении: для checked нужно явно указать rollbackFor.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться