@Transactional задаёт границу и параметры транзакции: propagation, isolation, timeout и правила rollback. Spring применяет их через настроенный transaction manager и механизм перехвата вызова.
Зачем нужна аннотация @Transactional?
@Transactional задаёт границу и параметры транзакции: propagation, isolation, timeout и правила rollback. Spring применяет их через настроенный transaction manager и механизм перехвата вызова.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
@Transactional задаёт границу и параметры транзакции: propagation, isolation, timeout и правила rollback. Spring применяет их через настроенный transaction manager и механизм перехвата вызова.
По умолчанию обычно используется REQUIRED: присоединиться к существующей транзакции либо открыть новую. Стандартные правила предусматривают rollback для RuntimeException и Error, но не для любого checked exception без настройки. Аннотация не объединяет автоматически запись в БД с HTTP-вызовом в одну атомарную операцию. В proxy-режиме важен вызов через прокси: внутренний this-вызов не создаёт отдельного перехвата.
Источник: docs.spring.io.