Как управлять двумя методами 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 операции ...
Спасибо! :)