witskeeper / geektime

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于仓储设计的一些疑问

xdqsgit opened this issue · comments

先说下我目前对仓储的理解
仓储目的是隔离业务和 持久化操作的部分,减少因为ORM组件的变换导致的一些修改
ddd的理论建议 聚合根 才能使用仓储
问题来了
如果是只有聚合根才能使用仓储,
我需要操作根上的实体的时候怎么实现呢?
这一点我比较疑惑,一直也没找到可以参考的实现,请老师指点下🙂

通过聚合根的id获取到聚合对象,然后操作聚合根的实体

聚合根设计的指导原则是设计得尽可能小,即引用的对象(无论是实体还是值对象)要少,以完成业务要求的不变条件为基准。聚合根里的对象,外部是不能直接引用操作的,更别说随意从数据库加载了,要加载也必须通过聚合根加载,并调用聚合根提供的方法完成业务逻辑,聚合根会调用内部的对象完成处理,以继续保持业务上的不变条件。