2014-05-24 13 views
6

Vào mùa xuân, chúng tôi có chú thích @Transactional có thể được chỉ định tại Bộ điều khiển, vì vậy mọi thứ xảy ra bên trong một phương thức điều khiển được coi là một giao dịch. Tuy nhiên trong dropwizard, chúng ta có thể có giao dịch ở mức DAO bằng cách thực hiện Transactional<DAOclass>. Nhưng nếu tôi sử dụng hai DAO trong một phương thức tài nguyên, nó được coi là hai giao dịch khác nhau.Làm cách nào để chúng tôi buộc giao dịch cấp tài nguyên (bộ điều khiển) trong Dropwizard với jdbi?

Nói rằng tôi có hai DAO

Dao1.java

public abstract class Dao1 implements Transactional<Dao1>{ 
    @sqlQuery(//somequery) 
    public abstract void insertIntoArticles(); 
    } 

Dao2.java

public abstract class Dao2 implements Transactional<Dao2>{ 
    @sqlQuery(//somequery) 
    public abstract void insertIntoArticlesChildren(); 
    } 

ArticleResource.java

@POST 
    @PATH("/articles") 
    public void insertArticleAndItsChildren(Integer articleId){ 
    try{ 
     dao1.begin(); 
     dao2.begin(); 
     dao1.insertIntoArticles(); 
     dao2.insertIntoArticlesChildren(); 
     dao1.commit(); 
     dao2.commit(); 
    }catch(Exception e){ 
    dao1.rollback(); 
    dao2.rollback(); 
    } 
} 

Trong ví dụ trên, dao1 và dao2 có hai giao dịch khác nhau. Nhưng tôi cần mọi thứ dưới một giao dịch duy nhất Vậy có cách nào để chỉ định ranh giới giao dịch ở cấp Tài nguyên không?

Trả lời

Các vấn đề liên quan