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() {
// код, изпълняван в нова транзакция
}
}
Ако методът се извика от друг метод, който вече е в транзакция, текущата транзакция ще бъде спряна, а ще бъде започната нова. Това е полезно, когато трябва да се изпълни независима операция с отделна транзакция.