域驱动设计 - 每个实体应该有guid吗?

问题描述 投票:0回答:1

我在订单表中将ID作为Guid,在OrderItem中也将ID作为Guid。那么OrderStatus(New / Confirmed / Payed / Sent)应该还有ID作为Guid吗?

java domain-driven-design guid
1个回答
0
投票

在DDD中,您的域主要由两类类组成(它们是其他类,但我将专注于这两类以保持简单):

  1. 实体:实体始终具有ID,因为实体的同等性基于其ID(如果两个实体具有相同类型并且它们的ID相等,则这些实体相等)。一个实体的一个很好的例子是一个人,一个人是独一无二的,并且不能通过其属性等同于一个人拥有一个ID并且它是一个实体。
  2. 值对象:值对象没有ID,因为值对象的相等性基于其属性。一个很好的例子是电子邮件地址。当域和前缀相等时,两个电子邮件地址相等,则电子邮件地址是值对象。

因此,您必须确定OrderStatus是实体还是值对象。如果它是一个实体,那么它有一个ID。

提示:根据您的描述,它看起来像是一个值对象。

© www.soinside.com 2019 - 2024. All rights reserved.