【发布时间】:2015-07-25 02:41:50
【问题描述】:
我对 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 属性)。 有什么帮助吗?
【问题讨论】:
-
提交事务不会改变隔离级别。你想完成什么?
-
我想他想知道为什么事务隔离级别在提交(终止事务)之后不会恢复为读取提交。我想问题是,隔离级别的设置是事务级别的属性吗?显然,这是连接的属性,而不是特定的事务。这似乎与 SQL*Plus 中的工作方式不同,其中隔离级别是事务本身的一个属性。
-
确实如此。在 SQL 开发人员中,当提交 SERIALIZABLE 事务时,新事务是 READ_COMMITED。我想知道为什么在 JDBC 中 SERILIZABLE 特性似乎是一个连接属性,而不是 SQL Developer 中的事务属性。
标签: oracle jdbc commit serializable