尝试在JDBC

时间:2016-06-30 12:22:22

标签: java jdbc oracle10g

我使用方法ConnectionManager创建了一个类getConnection。 每次调用此getConnection方法时,都会为同一个DB创建一个新的DB连接。它使用DriverManager.getConnection()。 现在,我使用ConnectionManager创建了两个不同的连接对象。

conn1 = ConnectionManager.getConnection()
conn2 = ConnectionManager.getConnection()

现在如果我这样做

conn2.setAutoCommit(false);
conn1.prepareStatment(somequery);
// ....Excute a set of prepared statments using conn1
conn2.commit(); // or conn2.rollback()

使用两个不同的连接对象,一个用于事务管理,另一个用于语句执行有效吗? 如果是,那么交易的工作方式是否与单个对象相同?

另外,我正在使用OracleDB

2 个答案:

答案 0 :(得分:1)

  

使用两个不同的连接对象,一个用于事务   管理和其他语句执行有效吗?如果是,那么   事务的工作方式与单个对象的工作方式相同吗?

不,它无效。事务的工作方式与单个对象的工作方式不同。

两者都是两个不同的Connections,为一个Connection设置的设置不会影响其他Connection的设置 - 这两个只是指向同一数据库的两个不相关的Connection对象。

答案 1 :(得分:0)

conn1conn2是两个不同的连接,有两个不同的交易,然后:

代表conn2

没有任何变化,因为您发送的唯一命令是commit,但数据中没有任何更改

代表conn1

如果conn1autocommit =true,所有命令sents都由dmbs提交,否则没有任何事情发生,因为没有人提交您的更改。