我认为AccountType是从Person聚合根引用的另一个聚合根.

有许多简单的聚合根是绝对正常的,见

Vaughn Vernon articles,见

part 1,p. 5:

On one project for the financial derivatives sector using

[Qi4j],Niclas [Hedhman] reported that his team was able to

design approximately 70% of all aggregates with just a

root entity containing some value-typed properties. The remaining 30% had just two to three total entities. This doesn’t indicate that all domain models will have a 70/30 split. It

does indicate that a high percentage of aggregates can be

limited to a single entity,the root.

在您的问题中,它还不太清楚,访问存储库以初始化聚合根的属性有什么问题:

However when I create a new person I need to set the account type,so it would seem I need a repository to access the account type to assign to the user,but the repository code I have only allows aggregate roots to be accessed.

Person类的初始化应该由PersonFactory处理.

PersonFactory是一个服务,因此它可以引用AccountTypeRepository来查找合适的AccountType实例并返回该类型的完全构造的Person实例.

更新:另外我想补充说明referencing your AccountType by id同样有效.这是方便的问题,如果您使用具有丰富数据绑定功能的GUI框架(如WPF或Spring MVC),有时更方便(仅用于显示,而不是用于修改)直接访问引用,因此您可以直接访问此属性在视图中显示.如果您使用id方法,这可能会迫使您创建viewmodels(FormBeans),即使对于简单的实体也是如此.

关于lookup-based solution,它适用于非常简单的类似enum的字段,我认为AccountType比这更复杂,属于知识级别(参见问题的讨论).

回到聚合和值对象之间的选择(也见this),它取决于信息系统的抽象级别和配置功能.从Account类的角度来看,它可能看起来像一个值对象,您可以将一个AccountType替换为另一个:它就像在Color值对象之间切换一样,但是从用户可能想要定制的知识级别的角度来看系统对所选AccountType的行为,例如更改特定“Premium”帐户的折扣.因此,如果您具有知识级别,则AccountType将具有标识,可以引导您创建单独的存储库.

java ddd聚合_DDD聚合根/存储库结构相关推荐

  1. java跨库调用存储_存储库仅在第二个调用数据时发送回ViewModel

    问题: My Fragment仅在第二次调用时获取数据(例如,当我旋转屏幕时) . 在我看来,这些代码行是repo类中的问题: public class UserRepository { privat ...

  2. AxonFramework,存储库

    2019独角兽企业重金招聘Python工程师标准>>> 存储库是提供对聚合访问的机制.存储库充当了用于保存数据的实际存储机制的网关.在CQRS中,存储库只需要能够根据他们的惟一标识符 ...

  3. 另一个git进程似乎在这个存储库中运行

    我正在尝试学习如何使用Git,并创建了一个包含HTML,CSS和Javascript文件的小项目. 我从我的基本空项目中创建了一个分支,然后对我的代码进行了一些更改. 我尝试暂存更改,但我收到以下错误 ...

  4. maven的中央存储库_部署到Maven中央存储库

    maven的中央存储库 您需要使您的Java库可公开访问吗? 您的项目托管在GitHub上吗? 您是否喜欢"将所有功能都部署到Maven Central Repository"按钮 ...

  5. 部署到Maven中央存储库

    您需要使您的Java库公开访问吗? 您的项目托管在GitHub上吗? 您是否喜欢"将所有功能都部署到Maven Central Repository"按钮的想法? 我将展示如何使用 ...

  6. CodeGen准备存储库

    CodeGen准备存储库 CodeGen几乎总是与提供用于生成源文件的元数据的存储库结构一起使用,并且许多令牌需要使用存储库结构. 基本要求是有一个结构定义,并且该结构定义包含一个或多个字段定义.有些 ...

  7. DDD - 聚合与聚合根_如何理解 Respository与DAO

    文章目录 Pre Question 如何理解 聚合和聚合根 利用聚合解决业务上的原子性操作 如何确定聚合和聚合根 Respository VS DAO Pre 通常情况,我们都会面临这样的一个问题: ...

  8. DDD中聚合、聚合根的含义以及作用

    一. 聚合与聚合根的含义 1. 聚合 聚合往往是一些实体为了某项业务而聚类在一起形成的集合 ,举个例子,社会是由一个个的个体组成的,象征着我们每一个人.随着社会的发展,慢慢出现了社团.机构.部门等组织 ...

  9. 基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则

    前言 上一篇 基于ABP落地领域驱动设计-01.全景图 概述了DDD理论和对应的解决方案.项目组成.项目引用关系,以及基于ABP落地DDD的通用原则.从这本篇开始,会更加深入地介绍在基于 ABP Fr ...

最新文章

  1. 又是华为!名校的差距太扎心!清华 2020 年毕业生就业质量报告出炉
  2. 2017年含金量最高的机器学习技能或知识有哪些? 翻译 2017年10月20日 14:22:44 标签: 机器学习 / quora 7504 原文:As of 2017, what set of
  3. CakePHP之Model
  4. 塑壳断路器用考虑启动电流么_塑壳式断路器知识
  5. bootstrap内容部分API解读(2)
  6. iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
  7. (需求实战_03)_shell脚本 sftp协议下载文件
  8. HDU2017新生赛 找方块
  9. 学习vb6.0视频教程网址
  10. 【学习与理解】:CTPN算法
  11. C 语言中MDI有什么作用,Qt MDI及其使用方法(详解版)
  12. MHZ是计算机的什么单位,电脑mhz是什么意思
  13. python文字游戏攻防_一个简单的孙悟空斗牛魔王的文字游戏
  14. 微信java tools_微信开发工具包(weixin-java-tools)
  15. 威联通文件传输服务器,QNAP NAS方案-------文件共享
  16. java long 运算_Java Long类型,阶乘计算
  17. 机器学习基础:概率和熵
  18. 安卓逆向学习资料推荐
  19. 采集绿盾网的10个经典方法
  20. MySQL基础 练习题2

热门文章

  1. 合肥工业大学 网络程序设计 实验三
  2. 黑客攻防技术宝典Web实战篇 第2版 pdf
  3. 7-7 计算个人所得税(10 分)
  4. 【solidworks】此文档 templates\gba0.drwdot 使用字体长仿宋体,而该字体不可用
  5. 【技巧】让UI能跟随屏幕分辨率缩放
  6. cpp map 获取所有 key_R语言中强大的map函数——铁哥小故事版
  7. android 函数返回string,Android应用开发之android 对话框对于返回值的处理方法
  8. android-Fragment横竖屏翻转对重新加载的要求
  9. 一文总结Spring 注解及作用详解
  10. IDEA的Maven插件介绍