DDD建模,聚合根之间的交互

2024-04-02

alt text Marked my aggregate roots with 1;2;3. Looks quite nice - almost like grapes.

我不喜欢的是一个标有红色箭头的实体。

让我们想象一下:

  • AR #1 是公司
  • AR #2 是办公室
  • AR #3 是员工
  • Entity marked with red arrow is named Country
    • 公司制定从哪些国家雇用员工的规则(关于雇用、company.Countries.Contains(employee.Country)一定是真的)

我以某种方式看到域的这个非常不重​​要的部分(也许听起来不像这个示例中的那样),并且我想避免将 Country 提升为聚合根。

Glossary http://domaindrivendesign.org/node/88关于聚合根 说道:

对内部成员的临时引用只能传递出去以供在单个操作中使用。

那么,引入“员工国家/地区”之类的内容、删除对公司国家/地区的引用并检查员工国家/地区是否与招聘操作中的任何公司国家/地区相匹配,听起来合理吗?

还有其他想法吗?

我怎样才能让我的葡萄看起来像应有的样子?


在此背景下Country只是一个值对象,而不是一个实体 - 更不用说聚合根 - 因此没有理由更改您的设计的任何内容(没有更多信息)。

此外,请注意,您引用的警告涉及聚合根的内部成员,而不是聚合本身。在多个地方维护对聚合的引用并没有什么问题。聚合根应该封装子对象,以便有一个地方可以为相关对象强制执行业务规则。

您可以在埃文斯的“领域驱动设计”(又名“蓝皮书 http://domaindrivendesign.org/books”)。例如,请参阅第 127 页上的图表(在聚合根的介绍中),该图显示了具有对 Engine 聚合的引用的 Car 聚合。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DDD建模,聚合根之间的交互 的相关文章

  • DDD - 使用 Doctrine 2 的有界上下文之间的关联映射

    我正在努力理解使用 Doctrine 2 实现来自不同有界上下文的两个实体之间的关联映射的正确方法 假设有两个 User 和 Post 实体分别属于 User 和 Content 有界上下文 内容 上下文中还有一个 用户 概念 它通过多对一
  • CQRS 事件溯源:验证用户名唯一性

    我们以一个简单的 账户注册 为例 流程如下 用户访问网站 点击 注册 按钮并填写表格 点击 保存 按钮 MVC 控制器 通过读取 ReadModel 来验证用户名的唯一性 RegisterCommand 再次验证用户名唯一性 这是问题 当然
  • 值对象应该保存对实体的引用吗?

    值对象是否应该引用 DDD 方法中的实体 EDIT Dmitry 这大概就是我的情况 这里我附上类图 其中Account保留对集合的引用IInvoiceable项目 我治疗与Tenant作为实体 但它只拥有 1 个帐户 我不认为Accoun
  • DDD:我真的需要加载聚合中的所有对象吗? (性能问题)

    在 DDD 中 存储库加载整个聚合 我们要么加载全部 要么不加载 这也意味着应该避免延迟加载 我关心的是性能方面的问题 如果这导致将数千个对象加载到内存中怎么办 例如 聚合Customer一万回来Orders 在这种情况下 是否意味着我需要
  • 领域驱动设计和安全

    这与此相关question https stackoverflow com questions 3006808 security implementation in domain driven design这似乎是不久前问过的 项目中的安全
  • 有界上下文共享相同的聚合

    DDD 公开了有界上下文 领域模型 聚合 但我经常错过业务规则的关键点 我想知道业务规则如何集成到这种方法中 这是一个例子 假设您在一家信贷公司中有 2 个有界上下文 一项用于追偿债务 另一项用于提前退款 这些背景嵌入了真正的业务特性 从概
  • 导入数据和事件溯源

    我目前正在开发一个整体系统 我希望将其引入现代并结合 DDD 和 CQRS 我收到了重新编写解决方案的导入机制的请求 并认为这可能是开始此重新架构过程的好机会 目前流程是 用户上传 CSV 系统解析 CSV 并在屏幕上显示每一行 对每一行以
  • DDD和应用层

    我在DDD中添加 Stateful Stateless WebService等是应用层 应用服务 吗 从下面的链接来看 这似乎是正确的 第二个问题 我创建了一个存储库类 所有涉及存储库的方法调用都应该包装在应用程序服务中吗 或者我可以直接在
  • 涵盖 .NET 中的 TDD、DDD 和设计模式的书籍

    我想要一本能够真正让我全面了解使用 C TDD ASP NET MVC DDD 和设计模式 例如存储库模式 的现代 ASP NET 开发的书 我非常擅长 C 和 ASP NET MVC 但想填补空白 如果您对涵盖这些主题的一两本书有很好的体
  • 实体框架:获取存储库中的子类对象

    我有与下面列出的数据库表对应的以下模型 经理就是雇员 会计师也是雇员 让所有管理器都进入存储库的最佳方法是什么 如何实现GetAllManagers 方法 这是正确的TPT吗 CODE MyRepository MyEmployeeRepo
  • 有界上下文、子域和通用语言

    a 对于包含两个或多个子域的 BC 存在概念重叠的可能性 甚至更糟糕的是 相同的概念 由其中几个子域使用 可能会被每个子域以不同的方式解释 理解 无论如何 如果 BC 确实包含许多子域 它是否应该提供几种通用语言 每个子域一种 或者所有子域
  • 使用 JPA 实体作为域模型是一个好习惯吗?

    或者创建一个由域模型组成的域层并与 JPA 实体对话以进行数据库访问 两种方法的优缺点是什么 谢谢 这确实取决于您对域进行编码的方式 一般来说 在 Java 中 我更喜欢创建一组单独的 JPA 注释的 DTO 来处理持久性 此类 DTO 将
  • 实体框架中的聚合根支持

    我们如何告诉实体框架骨料 http domaindrivendesign org node 88 保存聚合时 保存聚合内的实体 删除聚合时 删除聚合内的实体 当两个不同的用户尝试修改同一聚合中的两个不同实体时引发并发错误 加载聚合时 即使在
  • 存储库本身通常不经过测试?

    抱歉 我对存储库模式 单元测试和 orm 工具还不熟悉 我一直在研究单元测试和存储库模式 并得出一些结论 我想知道我是否正确 存储库模式有助于在使用它的控制器中替换单元测试 例如 对吧 因为创建上下文 在 EF 中 或会话 在 NH 中 的
  • 使用流程管理器(又名 saga)在同一有界上下文中跨聚合根实现最终一致性

    假设您的有界上下文中有两个聚合 它们之间存在一些约束 使用 DDD 这些内部聚合约束不能在同一事务中强制执行 即聚合边界是事务边界 您是否会考虑使用 Microsoft CQRS 旅程中所谓的 流程管理器 来协调同一有界上下文中的两个聚合
  • 除了“真实”对象之外,DDD 存储库还可以使用摘要对象吗?

    假设我正在创建一个存储库来存储数字电子书 如下面的界面所示 该存储库将存储书籍的实际文本以及标识书籍的元数据 标题 作者 出版商 ISBN 等 public interface IBookRepository void AddBook Bo
  • CQRS - 读取端的事件重播

    我读过几篇关于 CQRS 的博客 它们都解释说 在写入端 事件会持久保存在事件存储中 并且根据请求 事件将被检索并聚合重播 我的问题是为什么读取端不需要聚合事件重播 因为您的读取端不使用聚合 读取端实现为投影 它根据聚合发出的事件流计算当前
  • DDD:持久聚合

    让我们考虑一下典型的Order and 订单项目例子 假如说订单项目是的一部分Order聚合 只能通过订单添加 所以 要添加一个新的订单项目 to an Order 我们必须通过存储库加载整个聚合 将新项目添加到Order对象并再次保留整个
  • 身份验证和用户任务

    我正在考虑开发一个具有明确定义域的系统 主要基于网络 域的一部分包括像这样的实体Diary Booking Customer etc 不过我创建了另一个名为User其目的仅用于身份验证和授权 污染Customer具有特定于身份验证的数据的实
  • 如何在数据库中对 (Java) 枚举进行建模(使用 SQL92)

    您好 我正在使用名为 性别 的列对实体进行建模 在应用程序代码中 性别应该是一个 Java 枚举类型 有 2 个值 男性和女性 知道作为数据类型的枚举不是通用 SQL 语言 92 的一部分 您将如何建模它 数据模型必须是可移植的 以便由多个

随机推荐

  • 如何让车把布局在 node/hapi.js 中工作

    我无法在 hapi js 应用程序中渲染车把布局 布局渲染得很好 但部分根本不渲染 只有空白 我这样声明 var handlebars require handlebars layouts require handlebars layout
  • 最好有数百列或分成多个表?

    我正在设计一个有关机械设备运行的统计数据库 每批数据将包含数百个统计信息 因此我试图决定是创建一个包含数百列的单个表还是将其拆分为多个表 每个表都包含相关的统计信息 例如 我可以有一个表包含与故障相关的统计信息 另一张表包含与堵塞相关的统计
  • 包反向依赖检查(尤其是在 Windows 上)

    我想听听人们现在如何在 Windows 上进行反向依赖检查 使用 官方 但仍处于实验阶段的功能时tools check packages in dir 正如 Windows 上的 CRAN 存储库策略 1 所建议的那样 根据来源检查反向依赖
  • 在div内滚动大图像

    我在一个小 div 内有一个大图像 该 div 内有 4 个箭头来控制移动 右 下 左 上 箭头用于在较小的 div 内移动图像 这是JS代码 slide right click function inner img animate rig
  • 张量流中的权重和偏差初始化

    我正在做一些电力负荷预测 其中我想初始化权重和偏差 我使用不同的算法计算了权重和偏差并将其保存在文件中 我想使用该文件并使用这些重量和偏差开始训练 这是我要更新的代码 RNN designning tf reset default grap
  • jQuery 点击事件多次触发

    我正在尝试用 Javascript 编写一个视频扑克游戏 作为了解其基础知识的一种方式 但我遇到了 jQuery 单击事件处理程序多次触发的问题 它们附在用于下注的按钮上 并且在游戏过程中第一手牌下注时效果很好 仅触发一次 但在第二手牌的投
  • 一个列表框的许多元素到另一个列表框

    这是我第一次使用这种媒介寻求帮助 我想知道如何在我的代码中包含两个列表框 一个查询数据库 然后通过一个按钮将其发送到另一个 并使用多个选项来执行此操作 然后如 php 代码中所示 将第二个列表框中的数据放入表数据库中 谢谢
  • 使用 IPython 嵌入 Python:WindowsError:[错误 193] %1 不是有效的 Win32 应用程序

    尝试运行 include
  • EmberJS/HandlebarsJS 的自定义 for 循环助手

    两个小时前我开始 嵌套 HandlebarsJS each 助手与 EmberJS 不起作用 https stackoverflow com questions 10306063 nested handlebarsjs each helpe
  • 在 jQuery 中执行 ajax 请求时延迟加载微调器

    我在 jQuery 代码中执行 AJAX 请求时使用以下模型来显示加载微调器 jQuery ajaxSetup beforeSend function loader show complete function loader hide su
  • 在 Angular 2 组件中使用 jquery/jqueryui 等库的正确方法

    我对这个主题进行了一些研究 并发现了需要用于打字稿的库的类型 我努力寻找的是用法示例 比如说 Angular 2 应用程序中的 jquery 这里有一些问题 1 人们会在哪里编写 jQuery 代码 是在类内部还是在该类的构造函数内部 2
  • 如何仅将背景颜色设置为 UILabel 文本

    我正在使用应用程序 我需要设置标签 如附加图像 如果有人有任何想法 请告诉我 你可以这样做 NSString yourString1 What Does your friends really NSString yourString2 Th
  • 在 Thread 中使用 asyncio 的问题

    如下使用asyncio没有问题 import asyncio async def main await asyncio sleep 1 aaa 1 print aaa loop asyncio get event loop loop run
  • 如何更改toolstripmenuitem边框颜色?

    我制作了这样的表单 语言 c VisualStudio2012 https i stack imgur com 5GEY1 jpg https i stack imgur com 5GEY1 jpg如何将toolstripmenuitem
  • Typo3:如何上传文件并创建文件引用?

    我将尝试在 FE 中上传一个文件 或稍后的多个文件 这有效 就像我当前的代码一样 但是我现在如何获取该文件的文件引用呢 var array fileData var integer feUserId return TYPO3 CMS Ext
  • 降低滑动视图灵敏度 .Net Maui

    我不想死old post https stackoverflow com questions 62732570 reduce sensitivity in swipeview所以我正在为此创建一个新的 我有一个集合视图 两侧都有两个按钮来增
  • OpenCV putText() 换行符

    我正在使用 cv2 putText 在图像上绘制文本字符串 当我写的时候 cv2 putText img This is n some text 50 50 cv2 FONT HERSHEY SIMPLEX 1 2 图像上绘制的文字是 Th
  • Maven jaxb2:xjc 无法生成代码

    我已将以下插件添加到 pom xml 中的 Maven 构建中
  • 与非加密连接相比,TLS 会增加多少网络开销?

    与未加密连接相比 在加密连接期间必须通过网络传输 大约 多少位数据 IIUC 一旦 TLS 握手完成 传输的位数等于未加密连接期间传输的位数 这准确吗 接下来 考虑到快速处理器和相同 理想 的网络条件 通过 https 传输大文件是否比通过
  • DDD建模,聚合根之间的交互

    Marked my aggregate roots with 1 2 3 Looks quite nice almost like grapes 我不喜欢的是一个标有红色箭头的实体 让我们想象一下 AR 1 是公司 AR 2 是办公室 AR