知识卡片

聚合的领域纯粹性靠聚合根访问且不见持久化影子

普通读书笔记卡 · 1977.ah

内容

领域设计模型以聚合为单位,持久化须遵循”一个聚合对应一个资源库”:访问聚合边界内除根实体外的实体或值对象必须通过聚合根,持久化这些对象也必须交由聚合对应的资源库。如访问HourlyEmployee内部的TimeCard只能经HourlyEmployee聚合根,持久化TimeCard只能经HourlyEmployeeRepository,不需要也不应该为TimeCard定义专有资源库。资源库虽负责TimeCard的持久化,但不直接持久化它,而是通过管理HourlyEmployee聚合的生命周期完成。钟点工提交工作时间卡的领域行为应分配给聚合根而非资源库,实现时不考虑持久化,而是自然的对象操作(如submit()仅调用List.add()把时间卡加入列表,看不到任何持久化影子,不会在库中插入记录),以保证领域纯粹性——聚合不操作数据库,与数据库打交道的只能是资源库适配器。发散:”领域方法里看不到SQL/持久化影子”是检验聚合是否纯粹的直观标尺。

参考来源

- 位置:《解构领域驱动设计》第19章 19.3.3(源文件:_epub-src/OEBPS/032.xhtml) - 结论依据:原文强调一聚合一资源库、经聚合根访问、领域行为不含持久化以保纯粹性。 - 原始内容:聚合不操作数据库,与数据库打交道的只能是资源库适配器,这是明确规定的资源库角色构造型的职责。