聚合根(Aggregate Root)是DDD中的一个概念,是一种更大范围的封装,会把一组有相同生命周期,在业务上不可分割的实体和值对象放在一起,只有根实体可以对外暴露引用,这也是一种内聚性的表现。
确定聚合边界要满足固定规则(Invariant),是指在数据变化时必须保持的一致性规则,具体规则如下。
- 根实体具有全局标识,最终负责检查规定规则。
- 聚合内的实体具有本地标识,这些标识在Aggrate内部才是唯一的。
- 外部对象不能引用除Entity之外的任何内部对象。
- 只有Aggregate的根Entity才能直接通过数据库查询获取,其他对象必须通过遍历关联来发现。
- Aggregate边界内的任何对象在修改时,整个Aggregate的所有固定规则都必须满足。