![](/img/trans.png)
[英]How to manage two method calls to a DAO from a service layer in single transaction in Spring MVC and Hibernate
[英]How to manage 2 DAO methods in a single transaction in Java Spring and Hibernate?
我正在构建一个新的动态网站,我在Spring MVC中创建了2个DAO类来管理2个不同表中的查询。 我需要知道如何使用Hibernate在单个事务中管理2个DAO方法...实际上,我创建了2个DAO Java类和相关的实现类:
第一个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()
的事务成功执行而不回滚!
如何在单个事务中管理这两种方法? 我会分开这两个操作......
谢谢! :)
您需要使用@Transactional
从另一个方法调用DAO方法。
然后,事务将在DAO方法之外创建,它们将使用现有事务(由于默认传播)而不是创建自己的新事务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.