ページ一覧を開く

Aggregate Root

Aggregate Rootとは

Aggregate Rootは、Aggregate全体を代表し、外部からの操作を受け付ける唯一のEntityです。内部のEntityやValue Objectを調整し、Aggregate全体の不変条件を守ります。

Aggregate Rootにする基準は?

推奨

Aggregateの不変条件を守る唯一の入口となるEntityをAggregate Rootにする。

なぜ

外部からの変更経路を一つに絞ることで、内部の複数オブジェクトにまたがるルールを常に検証できます。

判断基準

  • 外部からIDで参照される
  • 内部Entityの生成・変更を調整する
  • トランザクション整合性の境界になる

BAD

呼び出し側がorder.linesへ直接pushし、検証を迂回できる。

GOOD

Order.addLine()が重複商品や数量上限を検証してOrderLineを追加する。

図:AGGREGATEの変更経路

外部のユースケース

変更を依頼する

AGGREGATE BOUNDARY

Aggregate Root

不変条件を守る入口

Entity

同一性で追跡する

Value Object

値で等価性を決める

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