ページ一覧を開く

Entity

Entityとは

Entityは、属性や状態が変わっても、識別子によって同じ対象として追跡するドメインモデルの要素です。値そのものではなく、「どの対象か」が重要になります。

Entityはいつ作る?

推奨

属性ではなく同一性で追跡し、時間とともに状態が変わる対象をEntityにする。

なぜ

値が変わっても同じ対象として扱う必要がある場合、識別子とライフサイクルをドメインモデルに明示する必要があります。

判断基準

  • 履歴や状態遷移を追う
  • 同じ属性でも別物として区別する
  • 業務上の識別子が会話に現れる

BAD

表示用の都道府県一覧の各項目に、将来使うかもしれないという理由だけでEntity IDを付ける。

GOOD

注文は配送先が変わっても同じ注文IDの注文として追跡する。

図:AGGREGATEの変更経路

外部のユースケース

変更を依頼する

AGGREGATE BOUNDARY

Aggregate Root

不変条件を守る入口

Entity

同一性で追跡する

Value Object

値で等価性を決める

外部は内部オブジェクトを直接変更せず、Aggregate Rootへ意図のある操作を依頼します。Rootが全体のルールを確認してから変更します。