3

ドメインモデルを設計していますが、うまくいかないことがあります。

私は主な骨材から始めます。他のアグリゲートへの参照があり、それらの他のアグリゲートはより多くのアグリゲートも参照します。メインアグリゲートから開始して、ホールドメインモデルを移動できます。

私が目にする問題は、アグリゲートのすべてのインスタンスをメモリに保持することです。

それは良いデザインですか?遅延読み込みでメモリの問題を解決することはできますが、もっと深刻な問題があると思います。

集約参照に関して別の質問があります。他のアグリゲートへの参照を遅延ロードする必要がありますか?その場合、私は彼らのリポジトリを使用することはほとんどありません。それは大丈夫ですか?

4

1 に答える 1

4

集約ルート (AR) 間で直接参照すると、遅延読み込みでは解決できない問題が発生する可能性があります。さらに、接続されているすべての AR を同じデータベースに配置することを強制し、そもそも AR の主な目的である不変条件を推論して強制することをより困難にします。AR 間の直接参照を制限または排除することをお勧めします。集計設計について学ぶための優れたリソースは、Vaughn Vernonによる一連の記事です。. 基本的な考え方は、AR の機能を念頭に置きながら、AR を無駄なく集中させることです。つまり、ビジネス上の制約を課し、ルート エンティティの周囲に境界を作ります。AR がその作業を実行するために別の AR からのデータを必要とする場合、このデータはリポジトリを介してアプリケーション サービスによって提供されます。また、UI 要件を満たすためだけに参照が必要な場合は、読み取りモデル パターンの使用を検討してください。

于 2012-07-24T18:58:38.340 に答える