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

时间:2015-07-01 13:06:53

标签: sql database connection database-connection connection-pooling

让我先谈谈我的“一个工作单位”的例子:

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

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

  • 每个数据库交互应该从池中获得自己的连接,在每个步骤后立即提交并关闭它
  • 应检索单个连接并用于4个步骤中的每个步骤,然后在结束时提交一次并关闭连接

1 个答案:

答案 0 :(得分:0)

我曾经使用过' Akka'框架'帮助我完成多线程部分。

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

维持一个“身份证”。这将确保这项工作再次开始。只有在工作中的所有交易完成时才会更新ID。

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