1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ちょっとずつ読むドメイン駆動設計 第ニ部 モデル駆動設計の構成要素 第六章 ドメインオブジェクトのライフサイクル2(集約)

Posted at

集約(Aggregates)

文章がわかりずらいですね。。。何度読んでも・・・

簡単に言えば、データベース・トランザクションの範囲だが、データベースのみを基準にすると混乱するし、うまくいかない。モデルにも目がいかなくなってしまう。

実際、この種の問題に対するバランスの取れた解決策を見つけるのには、ドメインに対する深い理解が必要である。(第二部 第六章 より)

トランザクションの範囲の問題ではなく、モデルの境界を定義する。モデルから解決策を導くということですね。

  • 集約とは関連するオブジェクトの集まり
  • データを変更するための単位
  • 各集約にはルートと境界がある
  • ルートは集約に含まれている特定の1エンティティ
  • 集約の外部のオブジェクトが参照を保持してよいのはルートだけ
  • ルート以外のエンティティは集約の内部で一意であればいい
  • ルートのエンティティはグローバルに一意でなければならない

クラス図3.png

このドメインでGoodsがドメインのルートとすると、外部のOrderはGoodsしか参照しません。
GoodsColorSizeは内部のEntityなので、そのなかだけで一意になればいいということですね。

明日も集約の続きを読みます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?