在 Spring ,我们有@Transactional
可以在 Controller 中指定的注解,因此在 Controller 方法内发生的所有事情都被视为一个事务。
但是在 dropwizard 中,我们可以通过实现 Transactional<DAOclass>
在 DAO 级别进行事务处理。 .但是如果我在单个资源方法中使用两个 DAO,它会被视为两个不同的事务。
假设我有两个 DAO
道1.java
public abstract class Dao1 implements Transactional<Dao1>{
@sqlQuery(//somequery)
public abstract void insertIntoArticles();
}
道2.java
public abstract class Dao2 implements Transactional<Dao2>{
@sqlQuery(//somequery)
public abstract void insertIntoArticlesChildren();
}
文章资源.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();
}
}
在上面的例子中,dao1和dao2有两个不同的事务。但我需要一次交易下的一切 那么有什么方法可以在资源级别指定事务边界吗?
最佳答案
看看这篇文章https://groups.google.com/forum/#!topic/jdbi/O5rxzwmlwjM
@CreateSqlObject 似乎是答案。
关于java - 我们如何使用 jdbi 在 Dropwizard 中强制执行资源( Controller )级事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23846458/