1 个工作单元的 1 个数据库连接?

1 database connection for 1 unit of work?

让我从我的例子开始 "one unit of work":

我需要向数据库中插入一个事务。与该交易一起,几个唯一代码被存储在一个单独的 table 中,外键是交易 ID。我有 4 个数据库交互:1)从序列中获取下一个事务 ID; 2)插入交易; 3 & 4) 使用交易 ID 插入 2 个唯一代码。

这是一个多线程 Java 应用程序。哪条路线最好?

我曾在一段时间前使用 'Akka' 框架'actors'来帮助我处理多线程部分。

我们采用了您的第二种方法。使用单一连接来完成工作。 1)从一个序列中获取下一个事务id; 2)插入交易; 3 & 4) 使用交易 ID 插入 2 个唯一代码。 让我们把这项工作变成原子的。如果四个步骤中的任何一个连接失败,则回滚完成工作。

维持 'id' 以确保重新开始这项工作。仅当工作中的所有交易完成时才更新 ID。

如果交易是不同类型的,那么您可以使用新的数据库连接让不同的线程对它们进行操作(每个交易类型对应于单独的工作)。