Встречается на собеседованиях • сегодня
С чем нужно быть аккуратным при использовании @Transactional
Основные моменты при работе с @Transactional:
-
Проксирование - аннотация работает через AOP, поэтому вызовы внутри одного класса не будут проксироваться. Метод должен быть public.
-
Исключения - по умолчанию откатывает только при RuntimeException. Для checked исключений нужно явно указывать
@Transactional(rollbackFor = Exception.class).
-
Изоляция и распространение - важно правильно выбирать уровни изоляции (
Isolation) и поведение при вложенных транзакциях (Propagation). -
Долгие транзакции - могут блокировать ресурсы и снижать производительность.
Пример:
java
// Не сработает, так как вызов внутри класса
public void process() {
saveData(); // транзакция не начнется
}
@Transactional
private void saveData() {
// ...
}
// Правильный вариант
@Transactional
public void process() {
saveData();
}
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы