java - 我们如何使用 jdbi 在 Dropwizard 中强制执行资源( Controller )级事务?

标签 java transactions dao dropwizard jdbi

在 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/

相关文章:

java - JDBC 准备好的语句与 Hibernate session 事务只读操作

java - JPA和JTA模式下的事务(开始和提交)

ms-access - 如何纠正无法在 Windows 7 上的 Access 2003 中加载 DAO DLL 的问题?

java - 在 fragment 中使用 onActivityResult

java - 使用 JFileChooser 选择文件夹

powershell - 使用Powershell进行交易?

java - DAO 方法的标准命名约定

java - 具有空对象模式的 DAO

java - 多线程矩阵乘法

java - 使用另一个 java 文件中的变量