尝试在 JDBC 中使用两个连接对象

Trying to use two connection objects in JDBC

我用方法 getConnection 创建了一个 class ConnectionManager。 此 getConnection 方法每次调用时都会创建一个到同一数据库的新数据库连接。它使用 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

conn1conn2是两个不同的连接,有两个不同的事务,那么:

对于 conn2:

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

对于 conn1:

如果 conn1autocommit =true ,所有发送的命令都由 dmbs 提交,否则什么也不会发生,因为没有人提交您的更改。

Is using two different connection object, one for transaction management and other for statement execution valid? If yes, will the transaction work the same way as it would work for a single object?

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

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