域驱动设计中的CRUD

时间:2010-12-22 10:29:13

标签: domain-driven-design

要在域驱动设计中执行CRUD操作,我是否需要创建一个域服务/根聚合哪个将具有存储方法,此方法将调用存储库接口,该接口具有具体实现基础设施层。这是正确的方法吗? 如果我错了,请纠正我

2 个答案:

答案 0 :(得分:1)

我大多同意:

存储库接口是模型层的一部分,并在基础架构层中实现。但请记住,存储库就像收集和存储完整对象一样。它们不像持久层那样建模,因此不能存储聚合根的部分。为了构建复杂的聚合根,可以使用工厂。

还要记住,有效的设计必须依赖于所使用的(持久性)技术。

答案 1 :(得分:0)

CRUD与域驱动设计不兼容。在域驱动设计中,您使用域的动词和名词。而不是“创建新订单”,您有一个“下订单”的用户聚合根。如果你的系统充满了CRUD操作,你就不会使用域驱动设计,因为它应该被利用,而只是增加了一个简单问题的复杂性。

管理屏幕是CRUD的理想选择。您有一些项目列表,其中添加或修改没有需要强制执行的业务(域)规则。它只是简单的“插入新行,修改该行,删除该行”。

订单处理系统更复杂,并将开始受益于域驱动设计。 “下订单”。 “付款单”。 “当下订单并付款完成后,开始发货流程”。这些规则需要在域中建模,因此,域驱动设计是一个很好的选择。