Как управлять двумя методами DAO в одной транзакции в Java Spring и Hibernate?

Я создаю новый динамический веб-сайт и создал 2 класса DAO в Spring MVC для управления запросом в 2 разных таблицах. Мне нужно знать, как я могу управлять 2 методами DAO в одной транзакции, используя Hibernate ... Практически я создаю 2 Java-класса DAO и связанный класс реализации:

Первый класс DAO (FirstDAOImpl.java):

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

Второй класс DAO (SecondDAOImpl.java):

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

В моем контроллере Spring мне нужно вызвать оба метода DAO в одной транзакции ...

На самом деле, у меня есть новый транзакционный метод для любого метода 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
    }

Когда методinsertUserRole() вставить новую запись не удалось, транзакция для предыдущего методаinsertUser() выполнен успешно без отката!

Как я могу управлять этими двумя методами в одной транзакции? Я бы держал отдельно эти 2 операции ...

Спасибо! :)

Ответы на вопрос(1)

Ваш ответ на вопрос