繁体   English   中英

提交后JDBC中的SERIALIZABLE事务保持SERIALIZABLE

[英]SERIALIZABLE Transaction in JDBC remains SERIALIZABLE after the commit

我在JDBC和Oracle中的事务有问题。 我有以下代码:

con.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
con.setAutoCommit(true);
System.out.println(con.getTransactionIsolation());
con.commit();
System.out.println(con.getTransactionIsolation());

问题是两个打印都显示:8(对应于Connection.TRANSACTION_SERIALIZABLE属性),但我认为它必须打印8和2 Connection.TRANSACTION_READ_COMMITTED属性)。 有什么帮助吗?

您可以将commit()调用视为事务边界。 因此,在提交之后,您将处于新事务中,并且仍将处于相同的隔离级别(在这种情况下为SERIALIZABLE)。

通过JDBC规范规定,当auto-commit为true时调用commit()是非法的。 JavaDoc中的commit()提到了这一点,如果启用了自动提交,则会抛出异常: http : //docs.oracle.com/javase/8/docs/api/java/sql/Connection.html#commit- -

使用12.1 Oracle JDBC驱动程序将获得该行为。 以前的版本没有引发异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM