私はいつも、アドレスデータは不変であり、その等価性はすべてのフィールドの同じデータによって定義されるため、値オブジェクトであると考えています。たとえば、支払いの一部の請求先住所と配送先住所は、注文または履行の一部です。誰かが住所を変更すると、新しい住所データが必要になります。しかし、私が実行したサンプルコード/アプリケーションはすべて、エンティティとしてアドレスデータを持っています。そのDBテーブルには独自のIDがあります。システムがすべてのビジネス活動/イベントが発生するすべてのアドレスを把握したい場合は、意味をなさないでしょう。しかし、私はこれらのサンプルコード/アプリケーションでこのような意図は見られません。私は何かを見逃していますか?アドレスデータがエンティティである理由
答えて
一般化することはできません。
例は実際の問題とは別のものです。あなたはすべてのプロジェクトに対して、それがすべてのものに合っているとは言えません。
私は、集計根を保存しているプロジェクトの例を挙げます。論理的および法的に子会社は、その会社の拡張です。ウォルマートは、実際のものが販売されている税番号のないHQ、税金番号のないすべてと子会社を持っています。論理的には、政府の資金調達などに適用するために、HQはその子会社に依頼します。ここでは、ウォルマートHQは総額のルートであり、その子会社は資金調達手続きの集合体の一部です。 これは論理的な例です。
私が持っていたことは、子会社がHQの知識なしに州の資金調達を法的に申請できることです!そのため、HQはもはや集約ルートではありませんが、子会社があります。それは非常に非論理的でしたが、それはビジネス要件でした。
ポイントは、値オブジェクトの質問と同じです。 Addressはエンティティまたは値オブジェクトであることを例として使用できますが、アドレスが何であるかを指定するのはビジネスの要件であり、論理的なものは必要としません。
あなたの経験を共有してくれてありがとう。あなたが言ったことで、請求先住所と配送先住所には、それぞれ、支払いと発送が集計されています。したがって、それらは価値オブジェクトでなければならない。 – vic
プレノート:アドレスがメールサービスのようなエンティティであるべきドメインがあります。私たちはそれらのドメインについては話しません
私の経験から、永続性のためにアドレスをサブエンティティとしてリレーショナルデータベースに保持する方が簡単です。ストレージテーブルの主キーとして機能するエンティティIDのため
しかし、値オブジェクトをデータベースエンティティとして保存することはできますが、そのまま値オブジェクトとして使用することができます。 Vaughn Vernonは、彼の方法でこれを行う方法を示します。book、第6章、サブチャプター持続値オブジェクト。
ありがとう。私は主題を調べます。 http://thepaulrayner.com/persisting-value-objects/ – vic
- 1. ロケーションがエンティティである理由
- 2. HibernateのsessionFactoryがスレッドセーフである理由
- 3. HttpWebRequest.ClientCertificatesがコレクションである理由
- 4. Grailsサービスクラスがシングルトンである理由
- 5. .NETがフレームワークであり、Javaが言語である理由
- 6. jpa/hibernateで削除する前にエンティティをマージする理由
- 7. ルビープロセスブロックが100%CPUである理由を理解する方法
- 8. 変換前のエンティティをEF 4.0で変換する理由
- 9. 結果が1である理由を理解しない
- 10. Goに「goto」ステートメントがある理由
- 11. iFrameにGmailがある理由
- 12. Android 7.1にroundedIconプロパティがある理由
- 13. driver_executeに空の値がある理由
- 14. setOnItemClickListenerにエラーがある理由
- 15. LinqよりエンティティSQLを使用する理由はありますか?
- 16. remove()が自分のエンティティを配列とみなす理由
- 17. JavaScriptでヌル+ヌル= 0である理由
- 18. エンティティをロードするためにJPAでトランザクションが必要な理由
- 19. 私のcodepush cliがアクティブで、合計が0である理由
- 20. アンドロイドデバイスでバイナリファイルが破損する可能性がある理由
- 21. グレードのチェックループが無効である理由は何ですか?
- 22. セマフォでロックを使用する必要がある理由
- 23. Zend Frameworkをinclude_pathで設定する必要がある理由
- 24. MMUをハードウェアで構築する必要がある理由
- 25. 複数のCore DataエンティティにNSManagedObjectサブクラスを使用する理由がありますか?
- 26. 無線プロトコルの名前が802.11である理由
- 27. 最終的な出力がゼロである理由:OOPSサンプル
- 28. Python3 - このコードがインデックス外のリストである理由
- 29. ソートの最初の行がすべて0である理由
- 30. アップロードされたMultipartFileのfileNameが空である理由
Constantin GALBENUの回答:データベースIDは必ずしも対応するドメインオブジェクトが「エンティティ」であるとは限りません。純粋に永続性を促進します:) –