Propagation.NESTED в Spring — это тип поведения транзакций, при котором новая транзакция создаётся внутри существующей как вложенная. В отличие от REQUIRESNEW, вложенная транзакция использует тот же физический коннекшн, но имеет свою точку сохранения (savepoint).
Имел ли опыт работы с Propagation.NESTED в Spring?
Propagation.NESTED в Spring — это тип поведения транзакций, при котором новая транзакция создаётся внутри существующей как вложенная.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Propagation.NESTED в Spring — это тип поведения транзакций, при котором новая транзакция создаётся внутри существующей как вложенная. В отличие от REQUIRES_NEW, вложенная транзакция использует тот же физический коннекшн, но имеет свою точку сохранения (savepoint).
Если вложенная транзакция откатывается, откатывается только её часть до savepoint, а внешняя транзакция может продолжить работу и быть зафиксирована.
Пример:
@Transactional(propagation = Propagation.NESTED)
public void nestedMethod() {
// операции, которые можно откатить отдельно
}
Это полезно, когда нужно частично откатывать операции внутри большой транзакции без полного отката всей транзакции.