Как система управляет ситуациями, когда внутри метода с аннотацией @Transactional происходит исключение?

В Spring при использовании аннотации @Transactional управление транзакцией происходит автоматически.

Короткий ответ

Что ответить на собеседовании

В Spring при использовании аннотации @Transactional управление транзакцией происходит автоматически. Если внутри метода с этой аннотацией возникает непроверяемое исключение (unchecked exception, например, RuntimeException), то транзакция будет автоматически откатана.

Подробный разбор

Ответ с пояснениями

В Spring при использовании аннотации @Transactional управление транзакцией происходит автоматически. Если внутри метода с этой аннотацией возникает непроверяемое исключение (unchecked exception, например, RuntimeException), то транзакция будет автоматически откатана.

Если же возникает проверяемое исключение (checked exception), по умолчанию транзакция не откатывается, но это поведение можно настроить через параметры аннотации, например, rollbackFor.

Пример:

@Transactional(rollbackFor = Exception.class)
public void someMethod() throws Exception {
    // код
    if (someCondition) {
        throw new Exception("Ошибка");
    }
}

Таким образом, при возникновении исключения транзакция либо коммитится, либо откатывается в зависимости от типа исключения и настроек аннотации.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее