仓储设计实现问题之不应该把diff逻辑写在领域服务中,而是应该写在仓储中如何解决

简介: 仓储设计实现问题之不应该把diff逻辑写在领域服务中,而是应该写在仓储中如何解决

问题一:为什么不应该把diff逻辑写在领域服务中,而是应该写在仓储中?


为什么不应该把diff逻辑写在领域服务中,而是应该写在仓储中?


参考回答:

因为领域服务应该保持其纯粹性,不关注技术上的逻辑,如数据比较(diff)等。增加领域服务逻辑的复杂性可能会破坏其领域模型的清晰性和可维护性。而仓储本身就是负责封装数据存储和访问的,因此将diff逻辑放在仓储中是更合适的,这样可以让领域服务感觉到聚合实体一直在内存中一样。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/654288


问题二:为什么聚合根不能直接从ORM框架中返回,而需要进行“重建”操作?


为什么聚合根不能直接从ORM框架中返回,而需要进行“重建”操作?


参考回答:

因为聚合根是由多个数据对象(DO)组成的,而持久化中间件(如ORM框架)通常只能返回单个数据对象。因此,仓储需要负责将这些从ORM框架中获取到的DO组装为聚合根中的实体(Entity)和值对象(Value Object),并确保这些实体与原来的实体保持一致。这个过程被称为“重建”实体的操作。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/654289


问题三:Convertor在仓储中的作用是什么?


Convertor在仓储中的作用是什么?


参考回答:

Convertor是仓储中用于维护拆解和重建规则的一种工具。仓储应当知道怎么拆解(从持久化存储中读取数据并转换为内存中的对象)就应该怎么复原(将内存中的对象转换回持久化存储的格式)。Convertor封装了这些拆建规则,使得仓储能够准确地执行这些操作。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/654290


问题四:事件溯源是如何用于重建聚合实体的?


事件溯源是如何用于重建聚合实体的?


参考回答:

事件溯源是一种通过实体的快照和领域事件集合回放来恢复聚合实体的方法。在事件溯源中,每次聚合实体的状态变化都会生成一个领域事件,这些事件被持久化存储。当需要重建聚合实体时,可以从最近的快照开始,然后按照时间顺序回放这些领域事件,逐步将聚合实体恢复到所需的状态。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/654293


问题五:在仓储实现中,关联单例(如监听器)应该如何处理?


在仓储实现中,关联单例(如监听器)应该如何处理?


参考回答:

关联单例(如监听器)也应该由仓储负责拆解和恢复。在持久化时,仓储需要知道如何将这些单例与聚合根实体一起保存;在恢复时,仓储需要知道如何将这些单例与重建后的聚合根实体关联起来。这样可以确保聚合根实体与其关联的单例在持久化和恢复过程中保持一致。


关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/654303

相关文章
|
3月前
|
安全
仓储设计实现问题之在taskOf()方法中仓储实现对实体的跟踪的如何解决
仓储设计实现问题之在taskOf()方法中仓储实现对实体的跟踪的如何解决
|
3月前
|
索引 容器
仓储设计实现问题之仓储设计时考虑放置实体的问题如何解决
仓储设计实现问题之仓储设计时考虑放置实体的问题如何解决
28 0
仓储设计实现问题之仓储设计时考虑放置实体的问题如何解决
|
3月前
仓储设计实现问题之仓储应该是一个集合实例,并且无法对仓储进行重复的放置如何解决
仓储设计实现问题之仓储应该是一个集合实例,并且无法对仓储进行重复的放置如何解决
25 0
|
3月前
|
数据库
仓储设计实现问题之采用仓储实体转移模式可以被视为非阻塞悲观锁如何解决
仓储设计实现问题之采用仓储实体转移模式可以被视为非阻塞悲观锁如何解决
33 0
|
3月前
|
调度
仓储设计实现问题之这种仓储下的聚合实体看起来更加像资源Resource如何解决
仓储设计实现问题之这种仓储下的聚合实体看起来更加像资源Resource如何解决
28 0
|
3月前
|
存储 测试技术 数据库
仓储设计实现问题之聚合实体在DDD中定义如何解决
仓储设计实现问题之聚合实体在DDD中定义如何解决
51 0
|
3月前
|
测试技术 数据库连接 数据库
仓储设计实现问题之仓储生成聚合实体的唯一标识如何解决
仓储设计实现问题之仓储生成聚合实体的唯一标识如何解决
39 0
|
3月前
|
缓存 前端开发 数据格式
构建前端防腐策略问题之保证组件层的代码不受到接口版本变化的问题如何解决
构建前端防腐策略问题之保证组件层的代码不受到接口版本变化的问题如何解决
|
3月前
|
存储
仓储设计实现问题之仓储层需要与领域模型保持解耦如何解决
仓储设计实现问题之仓储层需要与领域模型保持解耦如何解决
|
3月前
|
存储 SQL NoSQL
仓储设计实现问题之在仓储实体转移模式下处理聚合实体的删除如何解决
仓储设计实现问题之在仓储实体转移模式下处理聚合实体的删除如何解决