什么属于聚合根

2024-03-23

这是一个实用的领域驱动设计问题:

从概念上讲,我认为我得到了聚合根,直到我去定义一个聚合根。

我有一个 Employee 实体,它已作为聚合根出现。在商业领域,some员工可以记录与工作相关的违规行为:

员工-----*违规行为

由于并非所有员工都受到此限制,我认为违规行为不会成为员工总数的一部分,对吗?

因此,当我想要处理员工及其相关违规行为时,这是某些服务的两个单独的存储库交互吗?

最后,当我添加违规时,该方法是在员工实体上吗? 谢谢您的帮助!


经过更多研究后,我想我已经找到了问题的答案。

保罗·斯托维尔(Paul Stovell)对类似问题的回答略有编辑国内直拨留言板 http://tech.groups.yahoo.com/group/domaindrivendesign/message/9836。将“客户”替换为“员工”,将“订单”替换为“违规”,您就明白了。

只是因为客户参考订单 并不一定意味着订单下降 在客户聚合根内。 客户的地址可能是,但是 订单可以是独立的(对于 例如,您可能有一项服务 处理所有新订单,无论是谁 客户是。不得不走 客户->订单没有任何意义 这种情况)。

从域的角度来看,您可以 甚至质疑这些的有效性 参考文献(客户参考 订单列表)。你多久会 实际上需要all订单 顾客?在某些系统中它使 从某种意义上说,但在其他情况下,一个客户 可能会下很多订单。机会是 您希望在以下时间为客户下订单 日期范围或客户的订单 尚未处理的订单或订单 尚未支付的费用等等。 您需要全部的场景 其中可能相对不常见。 然而,更有可能的是 处理订单时,您将 想要客户信息。所以在 代码,Order.Customer.Name很有用, 但Customer.Orders[0].LineItem.SKU- 可能没那么有用。当然, 这完全取决于您的业务 领域。

换句话说,更新客户与更新订单无关。可以想象,订单或我的案例中的违规行为可以独立于客户/员工进行处理。

如果违规有详细信息行,则违规和违规行将成为同一聚合的一部分,因为更改违规行可能会影响违规。

编辑** 我的领域中的问题是违规行为没有行为。它们基本上是发生的事件的记录。尚不确定其影响。

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

什么属于聚合根 的相关文章

  • 使用 JPA 实体作为域模型是一个好习惯吗?

    或者创建一个由域模型组成的域层并与 JPA 实体对话以进行数据库访问 两种方法的优缺点是什么 谢谢 这确实取决于您对域进行编码的方式 一般来说 在 Java 中 我更喜欢创建一组单独的 JPA 注释的 DTO 来处理持久性 此类 DTO 将
  • 分面搜索的后过滤器和全局聚合之间有什么区别?

    搜索界面中的一个常见问题是您想要返回结果的选择 但可能想返回有关所有文档的信息 例如 我想查看所有红色衬衫 但想知道什么 其他颜色可供选择 这有时被称为 多面结果 或者 多面导航 这Elasticsearch 参考中的示例 https ww
  • 放弃root权限

    我有一个以 root 身份启动的守护进程 因此它可以绑定到低端口 出于安全原因 初始化后我非常希望它放弃 root 权限 谁能指点我已知正确C 中的一段代码可以做到这一点 我阅读了手册页 研究了不同应用程序中的各种实现 它们都是不同的 其中
  • 有丰富的领域模型示例吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个简单的示例来说明使用富域模型的好处 理想情况下 我想要一个之前和之后的代码列表 应该尽可能
  • 如何在 android studio 中监听 shell 命令的响应?

    在 Android 终端模拟器中 我可以输入以下命令 gt su gt echo class power supply battery charge rate 根据手机的充电方式 输出将为 无 正常 或 涡轮 我希望能够检索此输出并存储它作
  • ClientDataset 索引更改时不计算 TAggregateField

    我正在使用连接到 DBGrid 的 TClientDataset 和几个聚合字段 用于计算其他几个浮点字段的总和 所有字段均已在设计时创建 一切都按预期工作 直到 ClientDataset 的 IndexName 使用自定义索引更改 以便
  • DDD 聚合和值对象

    我想问一下关于DDD功能的问题 假设我们有两个聚合 每个聚合都包含值对象地址 根据 Eric Evans DDD 我们应该将聚合彼此隔离 因此第一个聚合的聚合根不能有指向 Address 的链接 坦白说 这对我来说似乎没有意义 所以问题是如
  • 具有持久性无知对象的持久性和领域事件

    我一直在研究领域驱动设计领域事件 http www udidahan com 2009 06 14 domain events salvation 我真的很喜欢这些事件提供的关注点分离 我遇到了保留域对象和引发域事件的顺序问题 我想在域对象
  • Android 屏幕共享编程(Root)

    在 Android gt 5 中 是否可以从 root adb shell 进行屏幕共享 而无需通过 miracast 或 chromecast 进行用户交互 我正在寻找启用 禁用此功能的命令https support google com
  • 获取mongodb中单个查询的最小值和最大值

    考虑 Words 中的以下文档 id 1 usages 2 word Name id 2 usages 1 word Street id 3 usages 1 word House id 4 usages 3 word Table id 5
  • pyspark:聚合列中最常见的值

    aggregrated table df input groupBy city income bracket agg count suburb alias suburb sum population alias population sum
  • 禁用 com.android.systemui 是否安全?

    我发现 Android 最近的应用程序对话框可以通过禁用来禁用 包裹com android systemui 我想在信息亭模式下运行我的 已取得 root 权限的 设备 因此长按时不要显示最近的应用程序对话框至关重要 现在 到底是什么com
  • 越狱后,iOS应用程序会以root权限运行吗?

    一旦 iOS 设备越狱 我们就可以构建越狱应用程序 使用 theos 并将其安装在 Applications预加载应用程序以 root 权限运行的目录 如果应用程序是使用 Xcode 构建的 一旦安装 它就会进入 private var m
  • CQRS - 何时发送确认消息?

    Example 业务规则规定 客户下订单后应收到确认消息 电子邮件或类似消息 可以说 一个NewOrderRegisteredEvent从域调度并由发送确认消息的事件侦听器拾取 完成此操作后 其他一些事件处理程序会引发异常或出现其他问题 并
  • 领域驱动设计和工厂类的作用

    我不清楚工厂类的角色和职责是什么 我知道工厂类应该负责创建域对象 聚合根 及其关联的实体和值对象 但我不清楚 DDD 架构的工厂 层 在哪里 工厂应该直接调用存储库来获取其数据还是服务库 工厂在以下框架中的位置 UI gt 应用程序 gt
  • 删除 Python 中某些操作的 root 权限

    在我的 Python 脚本中 我执行了一些需要 root 权限的操作 我还创建并写入文件 我不想由 root 独占所有 而是由运行我的脚本的用户独占所有 通常 我使用以下命令运行脚本sudo 有办法做到上述吗 您可以使用以下方式在 uid
  • aggregate() 将多个输出列放入矩阵中

    我要计算某个变量的多个分位数 gt res1 lt aggregate airquality Wind list airquality Month function x quantile x c 0 9 0 95 0 975 gt head
  • EF 6:映射复杂类型集合?

    EF 6 代码优先 是否支持复杂类型集合 值对象集合 映射 我知道它支持复杂类型 但还没有找到我们拥有复杂类型集合的示例 例如 假设您有一个名为 Student 的实体 其中包含联系人集合 对于 NH 我可以简单地说 Student 有一个
  • 丰富的领域模型和 ORM

    Martin Fowler 认为贫血领域模型是一种反模式 将持久性模型作为域模型进行滚动似乎也严重偏离 因为对象关系阻抗不匹配 http en wikipedia org wiki Object Relational impedance m
  • Sql Server:如何在 WHERE 子句中使用 MAX 等聚合函数

    我想获得该记录的最大值 请帮我 SELECT rest field1 FROM mastertable AS m INNER JOIN SELECT t1 field1 field1 t2 field2 FROM table1 AS T1

随机推荐

  • 为接口赋值是否会复制任何内容?

    我一直在尝试理解 Go 中的接口概念 阅读this https stackoverflow com questions 13511203 why cant i assign a struct to an interface and this
  • 如何检测访问者的国家/地区? [复制]

    这个问题在这里已经有答案了 可能的重复 IP地址的位置检测技术 https stackoverflow com questions 2574542 location detecting techniques for ip addresses
  • 不开发动态生成 aspx 文件的“博客系统”的 3 大原因

    In this question https stackoverflow com questions 2417865 asp net problems with error access to the path path is denied
  • Android:隐藏 ActionBar,保留选项卡

    为了简单起见 我的操作栏中有选项卡 但操作栏占用了太多空间 我想要那个额外的空间 我需要一种方法来隐藏操作栏 同时保留我的选项卡 有办法做到这一点吗 或者有什么方法可以让选项卡内置到操作栏中 就像在横向模式下一样 谢谢 你可以有一个空的操作
  • Nginx 位置 try_files 与 add_header 重定向和 cors

    我想将请求重定向到index php以启用漂亮的链接 使用try files可以实现此目的 但是我似乎无法让try files和add headers同时工作 我当前的位置块如下所示 location api v1 try files ur
  • 使用 Jquery 动态生成时 Facebook 标签不会呈现

    给您一个简单的用例 在我的网站上 我显示 Facebook 用户发布的评论 对于每条评论 我都会使用 fb profile pic 标签和类似 fb 的按钮来显示 facebook 用户的照片 该页面渲染正确 所有内容都显示良好 现在 当用
  • RSpec 匹配器,用于检查集合以包含满足 lambda 的项目

    我对如何编写 RSpec 3 2 x 规范来检查列表是否包含至少一个满足条件的项目有点不知所措 这是一个例子 model Invoice new model name test changes model changes expect ch
  • 如何删除“clip-path”的不可见部分?

    我想剪切尺寸各不相同 高度各为 50 的图像 所以我想到使用 inset 方法clip path财产 但是 在这个属性中 切出的空间仍然保持高度 container display flex align items start img fl
  • 打开弹窗,让外人依然可以触摸

    如何在Android上打开PopupWindow并让所有其他组件可触摸而不关闭PopupWindow 它是这样创建的 public class DynamicPopup private final PopupWindow window pr
  • 线程“main”中的异常 java.lang.IllegalMonitorStateException

    我正在与Thread in Java我收到以下错误 我不明白为什么 Code import java util Random public class Test public static void main String args thr
  • 代码优先:仅在执行某些代码后才创建数据库?

    我想先使用代码创建一个数据库 我的数据库始终处于 DropCreateDatabaseAlways 模式 我注意到 如果我不尝试对数据库执行一些查询 例如 using var db new Models TnHContext var que
  • CodeIgniter - 获取最后一个 URI 段

    我试图获取 CI 中的最后一个 URI 段 但我不知道它的编号是多少 因为当用户单击页面内的链接时 将附加参数 整数 然后在控制器中使用它们通过 ajax 将相关数据库记录拉入页面 我如何告诉 CI 获取最后一段 就像是 record nu
  • 使用javascript在数组中组合单词

    假设我有一个数组 Alex Sam Robert 我想将它们组合起来 例如 获取第一个数组 0 并附加数组 2 这将是 AlexRobert array 0 的第一个字母是 A 并附加 array 2 的第一个字母 即 Robert 这将是
  • 使用 Extendscript 编写二进制文件。文件大小不正确

    进一步我的问题here https stackoverflow com questions 63022178 read binary file with extendscript我正在使用 Extendscript 将十六进制颜色列表从 P
  • 使用 OrbitControls 时锁定 x 轴旋转 - Three.js

    使用 OrbitControls 时锁定 x 轴旋转是否可行 目前我有一个挂在绳子上的圣诞星的对象模型 我希望它仅水平旋转 对于您的 OrbitControls 实例集 controls minPolarAngle Math PI 2 co
  • Twitter Bootstrap Datepicker 不会更新输入值

    我有这段代码 但现在我陷入困境
  • Unicode 联盟是否打算让 UTF-16 字符耗尽?

    当前版本的 UTF 16 只能编码 1 112 064 个不同的数字 码点 0x0 0x10FFFF Unicode 联盟是否打算让 UTF 16 字符耗尽 即创建一个代码点 gt 0x10FFFF 如果不是 为什么有人要编写 utf 8
  • Go中for循环中的多个变量

    我正在尝试在 Go 中编写一个带有多个变量的 for 循环 来自 javascript 世界 我想实现这样的目标 var i 10 var b 2 for var a b i i 2 b b some code 我尝试过这样的 原始翻译 i
  • laravel 5 在运行时更改数据库名称

    有没有办法更改连接的数据库名称而不是添加另一个连接 如果我在 Config database connections 中添加 3 或 5 个数据库是可以的 但是如果我正在使用 100 个或更多数据库怎么办 由于所有人都使用相同的主机 用户名
  • 什么属于聚合根

    这是一个实用的领域驱动设计问题 从概念上讲 我认为我得到了聚合根 直到我去定义一个聚合根 我有一个 Employee 实体 它已作为聚合根出现 在商业领域 some员工可以记录与工作相关的违规行为 员工 违规行为 由于并非所有员工都受到此限