Sobes.tech
Junior — Middle

Как да инициираме нова транзакция в рамките на метод, анотиран като @Service?

sobes.tech AI

Отговор от AI

В Spring за иницииране на нова транзакция в рамките на метод, означен като @Service, се използва анотацията @Transactional с параметър propagation = Propagation.REQUIRES_NEW. Това означава, че при извикване на такъв метод ще бъде създадена нова транзакция, дори ако вече съществува активна транзакция.

Пример:

@Service
public class MyService {

    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void newTransactionMethod() {
        // код, изпълняван в нова транзакция
    }
}

Ако методът се извика от друг метод, който вече е в транзакция, текущата транзакция ще бъде спряна, а ще бъде започната нова. Това е полезно, когато трябва да се изпълни независима операция с отделна транзакция.