2011-07-09 20 views
13

¿Es posible anidar @Transactional métodos anotados en la primavera? Considerar algo como esto:Anidado @Transactional

@Transactional 
public void a() { 
    obj.b(); 
} 

@Transactional 
public void b() { 
    // ... 
} 

Lo que sucede en este caso, si Rollback en b() y rollback en un()?

Respuesta

24

El segundo @Transactional anotación en el método b() no se requiere porque por defecto @Transactional tiene una propagación de REQUIRED, por lo tanto métodos llamados por el método a() serán transaccional. Si está buscando iniciar una nueva transacción dentro de un método llamado por el método a(), deberá modificar las reglas de propagación. Lea sobre Transaction Propagation.

Cuestiones relacionadas