Oracle JDBC自动提交

时间:2013-03-15 07:50:05

标签: java sql oracle jdbc

让我们说我的代码大致类似于:(使用oracle 10G jdbc)。交易是否会在此特定情况下提交?

    public void someMethod(){
    try {
    OracleConnection connection = getConnectionFromPool();
    connection.setAutoCommit(false);

    // Do some transaction here - complete transaction, no errors occurred

    ...

    //Throw my own exception here
    throw new Exception("Custom Exception");


    } catch (Exception e}
    {
      ...
    }
    finally {
      connection.setAutoCommit(true);
    }
    }

2 个答案:

答案 0 :(得分:5)

According to the JavaDocs应该提交:

  

注意:如果在事务期间调用此方法并且更改了自动提交模式,则提交事务。如果调用setAutoCommit并且未更改自动提交模式,则调用是无操作。

但是:如果您依赖于此,则意味着您依赖于驱动程序来遵守此要求 - 这是我不会做的事情(我绝不会依赖于隐含的唠叨)< / p>

如果您想确保您的交易已提交,请致电commit()

答案 1 :(得分:0)

没有。删除connection.setAutoCommit(false);

finally {
      connection.commit();
    }