作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在构建一个新的动态网站,我在 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 Controller 中,我需要在单个事务中调用两个 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 方法之外创建,他们将使用现有交易(由于默认传播)而不是创建自己的新交易。
关于java - 如何在 Java Spring 和 Hibernate 的单个事务中管理 2 个 DAO 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33321156/
我是一名优秀的程序员,十分优秀!