典型的なOrderとOrderItemの例を考えてみましょう。OrderItemがOrder Aggregateの一部であると仮定すると、Orderを介してのみ追加できます。したがって、新しいOrderItemをOrder に追加するには、Repository を介して Aggregate 全体をロードし、新しいアイテムをOrderオブジェクトに追加して、Aggregate 全体を再度永続化する必要があります。
これには多くのオーバーヘッドがあるようです。Orderに 10 個のOrderItemsがある場合はどうなるでしょうか。このように、新しいOrderItemを追加するだけで、 10 個のOrderItemを読み取る必要があるだけでなく、これら 10 個のOrderItemをすべて再度挿入する必要があります。(これは、Jimmy Nillson が彼の DDD の本で採用したアプローチです。Aggregate を永続化するたびに、彼はすべての子オブジェクトをクリアしてから、再度挿入します。これにより、子の ID が変更されるため、他の問題が発生する可能性があります。データベースの IDENTITY 列のために毎回変更されます。)
Unit of Work パターンを Aggregate Root に適用して、何が変更されたかを追跡し、それらの変更のみをコミットすることを提案する人もいると思います。しかし、永続化ロジックがドメイン モデルに漏れているため、これは永続化無視 (PI) の原則に違反しています。
誰もこれについて前に考えたことがありますか?
モッシュ