Встречается на собеседованиях • сегодня

Что произойдет при ошибке во время выполнения @Transactional метода

Если в методе с аннотацией @Transactional возникает необработанное исключение, транзакция будет откачена (rollback). По умолчанию это происходит для RuntimeException и Error. Для проверяемых исключений (checked exceptions) транзакция не откатывается автоматически.

Можно настроить поведение через параметры аннотации:

java
@Transactional(rollbackFor = Exception.class) // откат для всех исключений
@Transactional(noRollbackFor = NullPointerException.class) // не откатывать для NPE

Пример:

java
@Transactional
public void transferMoney(Account from, Account to, BigDecimal amount) {
    from.withdraw(amount); // если здесь RuntimeException - транзакция откатится
    to.deposit(amount);
}

Важно: если исключение перехватывается внутри метода, транзакция не откатится. Для явного отката можно использовать TransactionAspectSupport.currentTransactionStatus().setRollbackOnly().

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы