JDBC - 在单个事务中处理不同对象的通用方法?

JDBC - Generic way of dealing with different objects in single transaction?

所以我有对象 AB,我想在单个事务中提交给数据库。这看起来很简单,因为它只是 setAutoCommit(false) 的问题。然而,由于它们是不同的对象,它们来自不同的 类 数据库层(因此,不同的方法)。

我可以试试:

  1. 创建一个实例化数据库的新方法类并通过 围绕连接参数(灵感来自 this 对问题 "How to manage 2 DAO methods in a single transaction?" 的回答)。虽然我喜欢它的通用方法,但如果 dataLayerForObjectA.class 处理与 Object A 有关的查询 而 dataLayerForObjectB.class 处理 Object B,哪里会 这个处理两者的方法属于 then?
  2. 采用工作单元模式,我什至不确定我是否应该这样做 首先要看这个,因为每个例子我都可以 发现都是.NET框架。我试图跟随,但意识到了 当数据到达时最终导致与上述相同的问题 数据库层。我发现的所有例子都只是在处理 同一对象的交易。
  3. 将任何一个中的所有内容分块,违反了设计原则 类,或为不同的组合创建新的 类 对象。我不想求助于这些。

我可能忽略了某些事情,因为大多数概念对我来说都是新的,但简而言之,这与我看到的各种方法所面临的问题相同——代码不属于现有的类 当牢记 单一职责原则 时,为不同类型的组合创建新的 类 似乎是错误的。

更新: 在 Aseem Bansal 的回答之后(目前)一切似乎都很好。如果我以后在他的方法中遇到任何问题,我会再次更新。同时,我愿意接受任何其他类型的答案。

假设您有 SalesPersonCustomer 作为您的 AB。现在,如果你想向系统添加一个 SalesPerson,你可以使用 salesPersonService 之类的东西,如果你想添加一个新的 customer,那么你可以使用 customerService 这样的东西。从你的问题到这里你已经很清楚了。

现在如果要向系统添加 Order,则需要添加两个数据库对象。

我假设您有一个单独的映射 table 来映射三个 table。可以有一个 table,但让我们用一个单独的 table 作为示例。

现在问问自己,如果您想这样做,向系统添加订单的逻辑是什么 xxxServiceordersService。如果那需要像

create connection
create order and order mapping
do stuff
commit/rollback

那么这是合乎逻辑的事情,所以答案是 3,但这并不违反设计原则。这是问题陈述的合理解决方案,因此不是问题。