如何在JDBC中开始交易?

2022-08-31 13:08:32

Connection.setTransactionIsolation(int) warns:

注意:如果在事务期间调用此方法,则结果是实现定义的。

这就提出了一个问题:如何在JDBC中开始交易?很明显,如何结束交易,但不知道如何开始交易。

如果在事务中启动内部,我们应该如何调用事务外部以避免特定于实现的行为?ConnectionConnection.setTransactionIsolation(int)


答案 1

回答我自己的问题:

请参阅 Oracle 的 JDBC Tutorial


答案 2

JDBC 隐式地划分了您对与事务的连接执行的每个查询/更新。您可以通过调用 setAutoCommit(false) 关闭自动提交模式并调用 commit()/rollback() 以指示事务的结束来自定义此行为。佩苏多代码

try
{
  con.setAutoCommit(false);

   //1 or more queries or updates

   con.commit();
}
catch(Exception e)
{
   con.rollback();
}
finally
{
   con.close();
}

现在,您显示的方法中有一个类型。它应该设置为TransactionIsolation(int level),而不是事务划分的api。它管理如何/当一个操作所做的更改对其他并发操作可见时,ACID中的“I”(http://en.wikipedia.org/wiki/Isolation_(database_systems))


推荐