Middle+
¿Cuántas transacciones se abrirán si en una clase con dos métodos, cada uno con @Transactional propagation REQUIRES_NEW, y desde el primer método se llama al segundo?
sobes.tech AI
Respuesta de la IA
Al usar la anotación @Transactional con propagation = REQUIRES_NEW, cada método se ejecutará en su propia transacción separada. Cuando se llama al primer método, se abre la primera transacción. Al llamar al segundo método desde el primero, la transacción actual se suspende y se abre una nueva transacción para el segundo método. Después de que el segundo método termina, la segunda transacción se cierra y la primera se reanuda.
En total, se abrirán 2 transacciones: una para el primer método y otra para el segundo.
Ejemplo:
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodOne() {
// transacción 1
methodTwo(); // llamada al segundo método
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodTwo() {
// transacción 2
}