仓储设计实现问题之不应该把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

相关文章
|
SQL 缓存 大数据
【秋招面试】分享一则大数据面经:货拉拉大数据平台实习岗
【秋招面试】分享一则大数据面经:货拉拉大数据平台实习岗
246 0
|
5月前
|
机器学习/深度学习 自然语言处理 物联网
Prot2Chat:融合蛋白质序列与结构的新型问答框架
Prot2Chat:融合蛋白质序列与结构的新型问答框架
110 1
|
SQL 存储 缓存
高基数 GroupBy 在 SLS SQL 中的查询加速
本文详细介绍了SLS中的高基数GroupBy查询加速技术。
270 94
|
9月前
|
存储 安全 网络安全
云计算与网络安全:技术融合下的挑战与机遇
随着云计算技术的飞速发展,网络安全问题也日益凸显。本文将探讨云计算环境下的网络安全挑战,以及如何通过技术创新来应对这些挑战。我们将分析云服务的安全特性,讨论信息安全的最佳实践,并展望未来云计算与网络安全的发展趋势。
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的校园综合服务平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的校园综合服务平台的详细设计和实现(源码+lw+部署文档+讲解等)
198 5
|
机器学习/深度学习 编解码 计算机视觉
【OctaveConv】下降一个八度:用八度卷积减少卷积神经网络中的空间冗余
【OctaveConv】下降一个八度:用八度卷积减少卷积神经网络中的空间冗余
342 0
【OctaveConv】下降一个八度:用八度卷积减少卷积神经网络中的空间冗余
|
人工智能 安全 Anolis
Intel 技术总监:同心共行,共建龙蜥 | 2023 龙蜥操作系统大会
Intel 发布新的至强芯片,都会第一时间支持龙蜥,甚至一些芯片特性的支持,在国际上都处于领先地位。
|
Ubuntu 应用服务中间件 nginx
Docker入门指南:从基础到实践
在当今软件开发领域,Docker已经成为一种不可或缺的工具。通过将应用程序及其依赖项打包成轻量级的容器,Docker实现了开发、测试和部署的高度一致性。本文将深入研究Docker的基本概念,并通过详细的示例代码演示如何应用这些概念于实际场景中。
|
测试技术 Go PHP
01 测试框架之接口diff的用途
01 测试框架之接口diff的用途
|
存储 机器学习/深度学习 分布式计算
HDFS教程(03)- HDFS高可用与容错
HDFS教程(03)- HDFS高可用与容错
491 0