spring中物理和逻辑事务的区别

abi*_*rai 5 java spring transactions spring-transactions

在这个 spring 文档 http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/transaction.html 中。它谈到了物理和逻辑事务。我写了一个非常简单的程序来理解

TransactionObject.java

class TransactionObject {

    private static Connection conn;

    TransactionObject() {
        try {
            conn = DriverManager.getConnection("DB_URL", "USER", "PASS");
        } catch (SQLException e) {}
    }

    void rollBack() {
        try {
            conn.rollback();
        } catch (SQLException e) { }
    }

    void Commit() {
        try {
            conn.commit();
        } catch (SQLException e) { }
    }
}
Run Code Online (Sandbox Code Playgroud)

ClassMethodUnderTransactionObject.java

public class ClassMethodUnderTransactionObject {
    // start fresh TransactionObject
    TransactionObject  logical= new TransactionObject();

    M2(); // call M2 use same logical object
    M3(); // call M3 use same logical object
    // For M2 and M3 it is logical transaction because both using same transaction object

    if(error){
        logical.rollBack();  
    } else {
        logical.Commit(); 
    }

    // create another instance of TransactionObject
    TransactionObject  physical=new TransactionObject();

    M4(); // call M4 use different TransactionObject object
    if(error){
        physical.rollBack();  
    } else {
        physical.Commit(); 
    }
Run Code Online (Sandbox Code Playgroud)

因此 M4 相对于 M2 和 M3 使用物理交易,因为 M4 使用不同的 trasnactionObject

那是我们应该理解的方式吗?还有更多要理解的吗?请帮助我理解它。

Mar*_*szS 3

我是这样理解的

  • physical transaction来自外部世界
  • logical transaction是你的内在。

这会产生文档中描述的许多后果。

我不明白你的例子。