Встречается на собеседованиях • сегодня
Что произойдет при вызове одного метода c @Transactional другим c @Transactional
Если метод с @Transactional вызывает другой метод с @Transactional, поведение зависит от параметра propagation:
- По умолчанию (REQUIRED) – второй метод будет выполняться в той же транзакции, что и первый. Если произойдет исключение – откат затронет оба метода.
- REQUIRES_NEW – создается новая транзакция, независимая от первой. Если вторая транзакция завершится неудачно, первая может продолжиться (если нет исключения).
Пример:
java
@Transactional
public void methodA() {
// Работа в транзакции 1
methodB(); // Зависит от propagation
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodB() {
// Работает в новой транзакции 2
}Важно: если methodB вызывается из того же класса, что и methodA, аннотация @Transactional может игнорироваться из-за особенностей Spring AOP (проксирование). Для обхода можно использовать self-injection или вынести methodB в отдельный сервис.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы