Wie verwalte ich zwei DAO-Methoden in einer einzigen Transaktion in Java Spring und Hibernate?

Ich erstelle eine neue dynamische Website und habe in Spring MVC zwei DAO-Klassen erstellt, um die Abfrage in zwei verschiedenen Tabellen zu verwalten. Ich muss wissen, wie ich mit Hibernate 2 DAO-Methoden in einer einzigen Transaktion verwalten kann ... In der Praxis erstelle ich 2 DAO-Java-Klassen und die zugehörige Implementierungsklasse:

Erste DAO-Klasse (FirstDAOImpl.java):

@Transactional(readOnly = false, rollbackFor=Exception.class)
public void insertUser(User user) 
{
    //do insert an user using hibernate...
}   

Zweite DAO-Klasse (SecondDAOImpl.java):

@Transactional(rollbackFor=Exception.class)
public void insertUserRole(UserRole register) 
{
    //do insert user role using hibernate...
}

In meinem Spring-Controller muss ich beide DAO-Methoden in einer einzigen Transaktion aufrufen ...

igentlich habe ich eine neue Transaktionsmethode für jede DAO-Methode:

@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
    }

Wenn die MethodeinsertUserRole() zum Einfügen eines neuen Datensatzes schlägt fehl, die Transaktion für die vorherige MethodeinsertUser() wird ohne Rollback erfolgreich ausgeführt!

Wie kann ich diese beiden Methoden in einer einzigen Transaktion verwalten? Ich würde diese 2 Operationen getrennt halten ...

Vielen Dank! :)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage