簡體   English   中英

如何在Java Spring和Hibernate中的單個事務中管理2個DAO方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM