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

С чем нужно быть аккуратным при использовании @Transactional

Основные моменты при работе с @Transactional:

  1. Проксирование - аннотация работает через AOP, поэтому вызовы внутри одного класса не будут проксироваться. Метод должен быть public.

  2. Исключения - по умолчанию откатывает только при RuntimeException. Для checked исключений нужно явно указывать @Transactional(rollbackFor = Exception.class).

  1. Изоляция и распространение - важно правильно выбирать уровни изоляции (Isolation) и поведение при вложенных транзакциях (Propagation).

  2. Долгие транзакции - могут блокировать ресурсы и снижать производительность.

Пример:

java
// Не сработает, так как вызов внутри класса
public void process() {
    saveData(); // транзакция не начнется
}

@Transactional
private void saveData() {
    // ...
}

// Правильный вариант
@Transactional
public void process() {
    saveData();
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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