Встречается на собеседованиях • сегодня
Что возникает, если в сервисе есть два метода, каждый из которых помечен @Transactional, и один метод вызывается внутри другого
При вызове одного @Transactional-метода внутри другого поведение зависит от propagation (распространения транзакции). По умолчанию (REQUIRED), если транзакция уже существует, внутренний метод использует её, а не создаёт новую. Это может привести к неожиданным последствиям, например, если внутренний метод выбрасывает исключение, откатывается вся транзакция.
Пример:
java
@Service
public class UserService {
@Transactional
public void outerMethod() {
innerMethod(); // Вызов внутри транзакции
}
@Transactional
public void innerMethod() {
// Работает в той же транзакции, что и outerMethod
}
}Если нужно независимое поведение, используйте REQUIRES_NEW:
java
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void innerMethod() { ... }Важно учитывать изоляцию и deadlock-риски при вложенных транзакциях.

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