¿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! :)

Respuestas a la pregunta(1)

Su respuesta a la pregunta