Sobes.tech
Назад к вопросам
Junior — Middle
105

Можешь рассказать о различных видах Propagation, которые можно задать в аннотации @Transactional?

Ответ от нейросети

sobes.tech AI

В аннотации @Transactional в Spring можно задать различные виды Propagation, которые определяют поведение транзакций при вызове методов:

  • REQUIRED (по умолчанию): если транзакция уже есть, использовать её, иначе создать новую.
  • REQUIRES_NEW: всегда создать новую транзакцию, при этом существующая (если есть) приостанавливается.
  • SUPPORTS: если транзакция есть, использовать её, иначе выполнять без транзакции.
  • NOT_SUPPORTED: выполнять без транзакции, при этом существующая транзакция приостанавливается.
  • MANDATORY: должен быть существующая транзакция, иначе выбрасывается исключение.
  • NEVER: выполнять без транзакции, если транзакция есть — выбрасывается исключение.
  • NESTED: если транзакция есть, создать вложенную транзакцию (savepoint), иначе создать новую.

Пример:

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void someMethod() {
    // код
}