【问题标题】:Managing Transactions either in service layer or repository layer?在服务层或存储库层管理事务?
【发布时间】:2010-02-15 12:07:32
【问题描述】:
我有一个特定的场景,其中插入和更新是基于一些约束在多个表上完成的。所以在这些场景中使用事务范围是很自然的。现在,我有一个存储层和一个服务层。服务层调解存储库和 UI,并且是持久无知的。
现在我很困惑在服务层或存储库层中使用事务的位置。我没有使用任何 ORM。我还看到有人提倡这种情况下的工作单元模式。有没有适合我当前场景的工作单元模式的例子,我看到的所有例子都是使用 ORMS。
谢谢,
【问题讨论】:
标签:
repository-pattern
transactions
unit-of-work
【解决方案1】:
这当然取决于您的系统,但通常我会在服务层执行此操作。特别是如果您的服务层方法调用多个细粒度存储库方法并期望它们全部提交或全部回滚。
【解决方案2】:
一些问题可能有助于回答这个问题。
哪一层理解交易需求?
您的存储库界面的粒度是多少?
在我的世界里,我们倾向于使用细粒度的持久化操作,插入、更新、删除。然后将它们组合在服务层中。因此,在这种环境中,对我来说很明显是服务层理解了事务范围。