工作单元对于清洁架构(DDD)有意义还是仅仅存储库就足够了?

Muh*_*ssa 2 domain-driven-design unit-of-work specification-pattern clean-architecture

我想问在遵循领域驱动设计理念和干净架构的项目中使用存储库工作单元是否有意义,或者它没有更有意义并且通用存储库模式就足够了?

Ren*_*ink 8

Martin Fowler 将工作单元描述为

维护受业务事务影响的对象列表,并协调更改的写出和并发问题的解决。

工作单元模式列在他的书中的“第 11 章:对象关系行为模式”中。因此它适用于存储库的实现。

在 DDD 中,您定义聚合,并且通常将聚合根传递到存储库来保存它。现在,如果使用工作单元,则取决于存储库实现,因为它必须协调发送到数据库的多个语句的执行,或者不协调。也许您正在使用面向文档的 NoSQL 数据库,并且只需发布序列化聚合。在这种情况下,您不必协调操作,因为只有一个更新操作 - 放置请求。

我认为工作单元模式在干净的架构中仍然有意义,但仅限于存储库实现。