【发布时间】:2017-03-23 16:44:56
【问题描述】:
我有一个关于领域驱动设计的问题。在我的应用程序的用户帐户/个人资料有界上下文中,有一个用户实体,其中包含帐户信息(id、用户名、密码、电子邮件、盐等)和个人资料信息(全名、头像、生日、性别等)。我还有另一个工作职位/申请的有界上下文,其中每个工作职位都有一个雇主用户,每个工作申请都有一个申请人用户。
问题是,工作有界上下文中的雇主/申请人用户是否应该与我用于用户帐户有界上下文的用户实体相同?或者我应该为雇主和申请人设计不同的用户类型实体?
如您所见,只有帐户有界上下文中的 id、全名、电子邮件和头像等信息与工作有界上下文相关。如果雇主/申请人与帐户/用户配置文件中的用户实体相同,它将加载更多无用的数据(不需要知道雇主/申请人的用户密码)。但是如果我为它们创建不同的实体类,这将使数据持久化更加棘手,因为在不同实体类中所做的更改可能会更改同一个数据库表中的相同数据。
你怎么看?我应该为所有用户实体使用一个用户实体,还是为不同的有界上下文/聚合使用不同的用户实体?如果后者是可取的,我该如何处理数据/实体持久性?
【问题讨论】:
-
您的有界上下文共享同一个数据库?理想情况下,他们不应该。如果他们这样做,那么您需要明确哪个 BC 拥有哪条数据,并且只允许拥有 BC 更改该数据。
-
我不明白你在说什么。它是相同的应用程序,只是不同的有界上下文。我总是使用相同的数据库,除非它是不同的应用程序。
-
BC 通常部署为微服务并拥有自己的数据库。
-
很抱歉,我读了两本 DDD 书籍和网上很多关于 DDD 的文章,都没有说有界上下文必须有自己的数据库。我需要为您的声明提供一些引用。
标签: entity domain-driven-design persistence aggregate bounded-contexts