¿Cómo gestionar 2 métodos DAO en una sola transacción en Java Spring e Hibernate?
Estoy construyendo un nuevo sitio web dinámico y creé 2 clases DAO en Spring MVC para administrar la consulta en 2 tablas diferentes. Necesito saber cómo puedo administrar 2 métodos DAO en una sola transacción, usando Hibernate ... Prácticamente, creo 2 clases DAO Java y clases de implementación relacionadas:
Primera clase DAO (FirstDAOImpl.java):
@Transactional(readOnly = false, rollbackFor=Exception.class)
public void insertUser(User user)
{
//do insert an user using hibernate...
}
Segunda clase DAO (SecondDAOImpl.java):
@Transactional(rollbackFor=Exception.class)
public void insertUserRole(UserRole register)
{
//do insert user role using hibernate...
}
En mi controlador Spring, necesito llamar a ambos métodos DAO en una sola transacción ...
En realidad, tengo un nuevo método transaccional para cualquier método DAO:
@RequestMapping(value = "/new-user", method = RequestMethod.POST)
public String insertNewUser(Model model)
{
//Other code
try
{
firstDAO.insertUser(myUserObject);
secondDAO.insertUserRole(myUserRoleObject);
}
catch(Exception e)
{
logger.info("exception!");
}
//Other code
}
Cuando el métodoinsertUserRole()
para insertar un nuevo registro falla, la transacción para el método anteriorinsertUser()
se ejecuta con éxito sin reversión!
¿Cómo puedo administrar estos 2 métodos en una sola transacción? Seguiría separando estas 2 operaciones ...
¡Gracias! :)