Como gerenciar 2 métodos DAO em uma única transação no Java Spring e Hibernate?

Estou criando um novo site dinâmico e criei 2 classes DAO no Spring MVC para gerenciar a consulta em 2 tabelas diferentes. Preciso saber como posso gerenciar 2 métodos DAO em uma única transação, usando o Hibernate ... Na prática, crio 2 classes Java DAO e a classe de implementação relacionada:

Primeira classe DAO (FirstDAOImpl.java):

@Transactional(readOnly = false, rollbackFor=Exception.class)
public void insertUser(User user) 
{
    //do insert an user using hibernate...
}   

Segunda classe DAO (SecondDAOImpl.java):

@Transactional(rollbackFor=Exception.class)
public void insertUserRole(UserRole register) 
{
    //do insert user role using hibernate...
}

No meu controlador Spring, preciso chamar o método DAO em uma única transação ...

Na verdade, eu tenho um novo método transacional para qualquer 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
    }

Quando o métodoinsertUserRole() para inserir um novo registro falha, a transação para o método anteriorinsertUser() é executado com sucesso sem reversão!

Como posso gerenciar esses 2 métodos em uma única transação? Eu manteria separa essas 2 operações ...

Obrigado! :)

questionAnswers(1)

yourAnswerToTheQuestion