7 tipos de comportamientos de propagación de transacciones de bases de datos SpringBoot
Si una transacción ya está abierta en el contexto de ejecución del método actual, entonces se utiliza la transacción actual.
Si no hay ninguna transacción actual, crea una nueva.
Si varios métodos se declaran REQUIRED y se llaman anidados, compartirán la misma transacción física. Si el interior se revierte, el exterior se revertirá en consecuencia.
Bean externo
Bean interno
interno declara REQUIRED y arroja una excepción. La transacción externa también se revertirá porque son la misma transacción.
Declarar REQUIRES_NEW creará una nueva transacción física. La confirmación y la reversión de la transacción interna son independientes de la transacción externa. Las transacciones externas no se ven afectadas por los resultados de las transacciones internas; se ejecutan en transacciones físicas independientes.
Bean externo
Bean interno
La reversión del interno no afecta la transacción del externo. Cuando se inicia la transacción interna, la transacción externa se suspenderá. Cuando finalice la transacción interna, se reanudará la transacción externa.
NESTED hace que las transacciones anidadas utilicen la misma transacción física, pero establece puntos de guardado en las llamadas anidadas para que la transacción interna pueda revertirse independientemente de la transacción externa.
Admite transacciones. Si existe una transacción actualmente, se utilizará la transacción actual. Si no existe, continuará ejecutándose sin una transacción.
Se deben utilizar transacciones. Si no hay una transacción actual, se lanzará una excepción. Si hay una transacción actual, se utilizará la transacción actual.
No se admiten transacciones. Cuando existe una transacción actualmente, la transacción se suspenderá y se ejecutará el método.
No se admiten transacciones. Si existe una transacción para el método actual, se generará una excepción. De lo contrario, continuará ejecutándose utilizando el mecanismo sin transacciones.
Referencia:
/tutorials/spring-transaction-propagation-tutorial