【问题标题】:DDD change aggregate root idDDD 更改聚合根 id
【发布时间】:2017-11-16 00:38:11
【问题描述】:

在一次讨论中,我得到了以下问题。在银行域中有一个聚合根,Account,由 Account Number 标识。假设在某个时间点,由于某些原因,银行决定将所有帐户从 8 位数字更改为 12 位数字,并且该帐户可以使用两个号码访问一年,之后将只使用新号码,这应该如何以 DDD 方式处理,我想知道它是否会创建一个新的有界上下文

【问题讨论】:

  • 限界上下文通常有自己的通用语言,自己的词汇。更改标识符中的位数几乎不需要新语言。

标签: domain-driven-design aggregateroot


【解决方案1】:

对于一个实体,您总是希望拥有一个技术 ID,即一个不可变且由您的应用控制的 Id (UUID) 属性。自然 id AccountNumber 只是一个值对象。基本上,在您的应用程序中出于技术原因仅使用 Id,AccountNumber 只是聚合的另一个 VO/详细信息。

更改帐号格式不应创建新的有界上下文,这只是值对象内部的更改。但是您因更改而遇到的所有问题都源于实施,而不是来自域建模(除非它是错误的模型:D)。如果您使用的是事件溯源和 CQRS,相对而言,事情应该很简单。如果你使用的是恢复状态的 ORM,事情会更复杂。

DDD方式意味着你必须了​​解概念的本质,实际的实现取决于很多东西。

【讨论】:

  • 在哪些方面使用事件溯源比使用当前持久状态更容易?
猜你喜欢
  • 1970-01-01
  • 2016-03-21
  • 2012-02-19
  • 1970-01-01
  • 2010-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多