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
}