use*_*882 1 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);
}
}
Run Code Online (Sandbox Code Playgroud)
根据JavaDocs,它应该提交:
注意:如果在事务期间调用此方法并且更改了自动提交模式,则提交事务.如果调用setAutoCommit并且未更改自动提交模式,则调用是无操作.
但是:如果你依赖于此,那就意味着你依赖于驱动程序来遵守这个要求 - 这是我不会做的事情(我绝不会依赖于那些暗示的事情)
如果您想确保您的交易已提交,请致电commit()
.