如何在Java,Spring JDBC和MySQL中实现嵌套事务

时间:2016-06-10 19:34:08

标签: java mysql spring jdbc transactions

在我的应用程序中,每当调用服务类函数时,我都会在数据库中创建跟踪记录。以下是伪代码。

public Class A {
    Tracer tracer;
    B b;
    void functionA () {
        tracer.addTrace(input);
        TransactionManger.getTransaction(); // Transaction starts.
        result = b.functionB();
        if(result == 0) {
            // rollback
        } else {
            // commit
        }
    }
}

public Class B {
    Tracer tracer;
    int functionB () {
        tracer.addTrace(input);
        TransactionManger.getTransaction(); // Transaction starts.
        // Do whatever. Return.
    }
}

假设addTrace函数将记录写入数据库,在上述情况下如果functionB返回0,则添加到数据库中的跟踪将被回滚?如何避免这种情况?看起来MySQL不支持嵌套事务。因此,我无法在addTrace中获取新事务并将其关闭,因此functionA中的更改将不会在计算functionB的结果之前提交。

0 个答案:

没有答案