DDD之聚合的修改要点

202 阅读1分钟

在并发环境下,业务规则仍然可能被破坏。本次课用事务来解决这一问题。 对于聚合的修改,有以下三个要点:

第一,在修改之前,要把聚合从数据库里取出来。为了这个目的,仓库要把聚合的数据整体装入内存,并重建聚合。这里我们还用了一个技巧,在仓库包里建立了聚合根的一个子类,从而绕过校验规则,避免不必要的性能损耗。

第二,要在领域层的聚合根里增加对技能、工作经验和岗位的更改和删除代码,并为这些对象设置合适的修改状态,从而把非聚合根对象的修改逻辑封装起来。

第三,在应用层把当前聚合与请求参数进行对比,确定对聚合里的各个对象应该进行增、删、改,还是保持不变。然后,调用聚合根来进行相应的操作。

最后,为了把聚合存入数据库,仓库要遍历聚合中的各个对象,根据对象的更改状态进行合适的数据库操作。

完成了聚合的修改以后,展示了怎样用乐观锁保护聚合的事务边界,避免并发操作对不变规则的破坏。

极客时间《手把手教你落地DDD》第17课学习笔记 Day17