所以我想要在单个事务中提交数据库的对象A
和B
。这似乎很容易,因为它只是setAutoCommit(false)
的问题。但是,由于它们是不同的对象,因此它们来自数据库层的不同类(因此,不同的方法)。
我可以试试:
dataLayerForObjectA.class
处理与Object A
相关的查询
虽然dataLayerForObjectB.class
处理Object B
,但会在哪里处理/Content/kendo/2015.2.902/kendo.silver.min.css
处理这两者的方法属于那个?我可能忽略了某些事情,因为大多数概念对我来说都是新的,但简而言之,这与我所看到的各种方法面临同样的问题 - 代码不属于现有的类牢记单一责任原则,并且为不同类型的组合创建新类似乎是错误的。
更新:在Aseem Bansal的回答之后,事情似乎很好(现在)。如果我将来遇到任何问题,他会再次更新。与此同时,我对任何其他类型的答案持开放态度。
答案 0 :(得分:0)
假设您有SalesPerson
,Customer
作为A
和B
。现在,如果您想在系统中添加SalesPerson
,可以使用salesPersonService
之类的内容,如果您想添加新的customer
,则可以使用customerService
之类的内容。从你的问题来看,你一直很清楚。
现在,如果要向系统添加Order
,则需要添加两个数据库对象。
我假设你有一个单独的映射表来映射三个表。可以有一个表,但我们的例子就是单独的表。
现在问问自己是否要这样做,为系统添加订单的逻辑xxxService
是什么? ordersService
。如果需要像
create connection
create order and order mapping
do stuff
commit/rollback
然后这是合乎逻辑的事情,所以答案是3,但这并不违反设计原则。它是问题陈述的合理解决方案,因此不是问题。