@Transactional - propagation (Области применения)

В системах транзакции являются гарантом целостности данных. Они обеспечивают согласованность и надежность наших операций. Что соответствует принципам ACID. Чтобы воспользоваться этой возможностью в Spring, мы используем аннотацию @Transactional.

@Transactional(propagation = Propagation.NESTED)

public void processTransaction() {
    // code to process a transaction
}

Область применения — опция propagation REQUIRED - Настройка по умолчанию. Если существует существующая транзакция, она присоединяется к ней. Если нет, создается новая. Это полезно для большинства стандартных операций.

REQUIRES_NEW - Всегда создает новую транзакцию, приостанавливая действие существующей. Это полезно для операций, которые должны быть независимы от текущей транзакции, таких как ведение журнала — записи в журнал должны записываться даже в случае сбоя основной транзакции или ее отката.

NESTED - Создает вложенную транзакцию. Это полезно для дополнительных транзакций, которые должны откатываться независимо от основной транзакции.

MANDATORY - Генерирует исключение, если существующая транзакция отсутствует. Это полезно для методов, которые должны выполняться в рамках существующей транзакции.

NEVER - Генерирует исключение, если транзакция существует. Это полезно для методов, которые не должны выполняться в рамках транзакции.

SUPPORTS - Участвует в транзакции, если она существует, в противном случае выполняется нетранзакционно. Это полезно для методов, которые могут работать как с транзакцией, так и без нее.

NOT_SUPPORTED - Выполняется без участия транзакций, приостанавливая любую существующую транзакцию. Это полезно для методов, которые не должны выполняться в рамках транзакции.

#java #programming #transactional #propagation #spring #jpa

@Transactional - propagation (Области применения) | Сетка — социальная сеть от hh.ru