1. ホーム
  2. design-patterns

[解決済み] アグリゲート・ルートって何?

2022-03-19 11:34:14

質問

リポジトリパターンの正しい使い方を理解しようとしています。Aggregate Rootという中心的なコンセプトが常に出てきます。WebとStack Overflowの両方でAggregate Rootが何であるかを検索すると、それらについての議論や、基本的な定義を含むと思われるページへのデッドリンクが見つかり続けています。

リポジトリパターンの文脈で 集約ルートとは何ですか?

どのように解決するのですか?

リポジトリパターンのコンテキストでは、アグリゲートルートは、クライアントコードがリポジトリから読み込む唯一のオブジェクトです。

リポジトリは子オブジェクトへのアクセスをカプセル化します。呼び出し側から見ると、ルートがロードされるのと同時に、あるいは実際に必要になったときに(遅延ロードと同様に)自動的に子オブジェクトがロードされます。

例えば Order オブジェクトの操作をカプセル化したもので、複数の LineItem オブジェクトを作成します。クライアントコードは、決して LineItem オブジェクトを直接使用します。 Order があり、これがドメインのその部分のアグリゲートルートとなります。