可以在一个JDBC连接中有两个并发事务吗?

时间:2013-09-18 16:20:20

标签: java database oracle jdbc transactions

现在我有两个对象在自动提交模式下共享与Oracle数据库的数据库连接。但现在两个对象都需要启动自己的事务才能完成工作。

结果是什么?

是否有必要为每个对象提供自己的连接以便进行并发事务,或者是否可以保持代码不变并对两个并发事务使用相同的连接?

如果我有10000个对象而不是2个,那么最佳实践是什么?如果每个对象都可以启动事务,我需要多少个数据库连接。我需要10000个数据库连接吗?

1 个答案:

答案 0 :(得分:8)

一个连接上不可能有两个事务。除了Connection中任何潜在的线程问题之外,只有一个commit()方法,它提交自上次提交/回滚以来的所有活动,无论它们来自哪个对象。

如果您需要两笔交易,请使用两个连接。

如果你有1000个对象,那么使用connection pool来合理化数据库的活动连接数。