Sobes.tech
Middle+

Quantas transações serão abertas se numa classe com dois métodos, cada um com @Transactional propagation REQUIRES_NEW, e do primeiro método chama-se o segundo?

sobes.tech IA

Resposta da IA

Ao usar a anotação @Transactional com propagation = REQUIRES_NEW, cada método será executado na sua própria transação separada. Quando o primeiro método é chamado, a primeira transação é aberta. Ao chamar o segundo método a partir do primeiro, a transação atual é suspensa e uma nova transação é aberta para o segundo método. Após a conclusão do segundo método, essa transação é fechada e a primeira é retomada.

No total, serão abertas 2 transações: uma para o primeiro método e outra para o segundo.

Exemplo:

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodOne() {
    // transação 1
    methodTwo(); // chamada do segundo método
}

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodTwo() {
    // transação 2
}