私は DDD で小さなプロジェクトに取り組んでいます。値オブジェクトは immutableであるため、変更できません。エンティティのみ。
誰もが使っている例を使用します。住所。Address がCustomer エンティティの VO であるとしましょう(これはルート集約でもあります)。ユーザーが自分の Address を更新した場合、これはショッピング カートのどのシナリオでも有効ですが、どうすればよいでしょうか? データベースに保存するには、VO アドレスを変更する必要があります。つまり、データベースで識別できるようにするには、この VO に ID が必要です。NHibernate がマッピングを使用して処理しない限り、そうです。LinqToSql の場合はそうではありません。または、代わりに Address がエンティティである新しい Aggregate を作成する必要があると思いますか? 次に、集計でアドレスが必要な場所にアドレスのコピーがほとんどありますか?
でも。私はまだエンティティ/VO の概念全体をラップすることはできません。DB に表現を持つものはすべて、モデルで VO として使用する場合でも、何らかの形でエンティティであるように思えます。それを永続化するには、データベースでそれを識別するために何らかのキーが必要だからです。 .
結局のところ、すべての値オブジェクトのデータは (ほとんどの場合) データベースから取得されます。そのため、そのデータが更新された場合にそれらを不変にする方法をまだ理解できません。
2 か月間熱心に読んだ後、DDD 全体が巨大な矛盾の問題であることがわかりました。これらのブログをすべて読むと、私が話していることがわかります。残念ながら、ロールモデルやガイダンスとして使用できるデモアプリケーションはゼロです. それらはすべて、開発者の好みに大きく影響されます。その後、彼らはお互いのブログを攻撃することになります。Overnight-DDD-Guru のブログは、コミュニティ全体の混乱を助長しています。
お立ち寄りいただきありがとうございます。建設的な議論を期待しています。