0

私はかなり単純なドメインを持っています。約 7 ~ 8 個の主要なエンティティが識別されており、これらは独自の集約ルートである可能性があります。しかし、システム内のすべてのオブジェクトの結合をリストする UI 画面が表示される予定です。これは、すべての集計の結合を意味します。

私が念頭に置いている 1 つの方法は、合成を使用することです。つまり、他のすべての集約ルートが参照するメタデータ集約です。これは独立したエンティティになります。この画面では、この集計をクエリできます。この新しい集計に移動するフィールドは、「すべてのオブジェクト」グリッドに表示する必要がある共通のフィールドです。

もう 1 つのアプローチは、他のリポジトリにクエリを実行し、アプリケーション層でリストをマージし、ページングなどを処理することによって、「すべてのオブジェクト」画面に必要なリストを作成するアプリケーション サービス メソッドを使用することです。

UI のユースケースがドメインの設計に影響を与えていることがわかるので、最初のソリューションには不安がありますが、データベースはページングの処理、リストのマージなどの面倒な作業を行い、単一の単純なクエリによって収集されたこれらすべての情報を結合することはありません。 .

2 番目の解決策は、見た目はすっきりしていますが、使いやすさとパフォーマンスが低下します。

お知らせ下さい。

4

1 に答える 1

1

この場合、基本的に値オブジェクトである読み取りモデルまたは読み取りシナリオ専用の DTO の使用を提案します。読み取りモデルの使用は、エンティティと AR をクリーンに保つためのパターンです。読み取りモデルの作成方法に関しては、基本的に説明したように 2 つのオプションがあります。1 つは、特定のビューの要件を満たす単一の読み取りモデルを 1 つのリポジトリで返すようにすることです。これにより、パフォーマンスのためにデータベースを活用できます。もう 1 つのオプションは、アプリケーション サービス レベルまたはプレゼンテーション層のイベントで、複数のリポジトリまたはサービスから読み取りモデルを構成することです。このアプローチは、データが同じデータ ソースから取得される必要がないという点で、より拡張性があります。

于 2012-06-12T19:12:39.033 に答える