我使用方法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
答案 0 :(得分:1)
使用两个不同的连接对象,一个用于事务 管理和其他语句执行有效吗?如果是,那么 事务的工作方式与单个对象的工作方式相同吗?
不,它无效。事务的工作方式与单个对象的工作方式不同。
两者都是两个不同的Connections
,为一个Connection
设置的设置不会影响其他Connection
的设置 - 这两个只是指向同一数据库的两个不相关的Connection
对象。
答案 1 :(得分:0)
conn1
和conn2
是两个不同的连接,有两个不同的交易,然后:
代表conn2
:
没有任何变化,因为您发送的唯一命令是commit
,但数据中没有任何更改
代表conn1
:
如果conn1
有autocommit =true
,所有命令sents都由dmbs
提交,否则没有任何事情发生,因为没有人提交您的更改。