![](/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.