Con Spring 3 para que un método sea transaccional basta con:
· Configurar mi TransactionManager
· Usar la configuración: <tx:annotation-driven mode="aspectj" transaction-manager="transactionManager"/>
· Anotar mi método con @Transactional
La anotación @Transactional también soporta los atributos de propagación
Soportando estos atributos:
· MANDATORY: soporta la transacción actual, lanza excepción si no hay
· NESTED : se ejecuta en una transacción anidada si existe transacción, si no hay transacción actúa como PROPAGATION_.REQUIRED.
· NEVER: se ejecuta de forma no transaccional, lanzando una excepción si existe transacción
· NOT_SUPPORTED: se ejecuta no transaccionalmente, suspende la transacción actual si hay
· REQUIRED: soporta la transacción actual y crea una nueva si no existe
· REQUIRES_NEW: crea una nueva transacción , suspende la transacción actual si hay
· SUPPORTS: soporta la transacción actual, si no hay se ejecuta de forma no transaccional
Spring también nos permite definir condiciones de Rollback,
En el ejemplo haré un rollback si se produce una IOException pero no lo haré si hay una ArithmeticException.




Deja un comentario