首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDBC中的SERIALIZABLE事务在提交后仍保持SERIALIZABLE

JDBC中的SERIALIZABLE事务在提交后仍保持SERIALIZABLE
EN

Stack Overflow用户
提问于 2015-05-14 01:03:06
回答 1查看 817关注 0票数 1

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

代码语言:javascript
复制
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属性)。有什么帮助吗?

EN

回答 1

Stack Overflow用户

发布于 2015-05-14 02:36:08

您可以将commit()调用看作是一个事务边界。因此,在提交之后,您将处于新的事务中,并且仍然处于相同的隔离级别(在本例中为SERIALIZABLE)。

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30221118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档