0
私はUserEntityを持っていますが、それは最終的にはDBにそれがid
というプロパティに従って保持されています。この場合、id
プロパティは明らかに敏感です。これを変更すると、後で永続化するとUserEntityが別のUserEntityに保存されるためです。ドメインエンティティに必要なプロパティを処理する方法は?
...
オプション1. Doが、私はid
FORCEことにより、セッターを削除、コンストラクタに渡されますか?
- これは(それが
id
の最低限の要件を持っているので)リポジトリが持続するように与えられているすべてのUserEntityが有効であろうことを意味します。 - 欠点は、私のコントローラがそれを与えるために
id
を持たないため、新しいUserEntity()を作成できないことです。持続されたもの、とするものその:
オプション2は、これは基本的に2つのUserEntityオブジェクトの種類を作成しますセッターに
- を提供ヌルであることを、コンストラクタ内のIDを許可ではなく、していない。
- 私は新しいUserEntity()をどこにでも置くことができ、それを値で埋めてリポジトリに渡し、それを保存し、新しいUserEntityを新しい
id
で作成して戻します。 - これはクールですが、保存エンティティであることを確認するために、エンティティが永続化/ドメインロジック/ etcに使用する任意の場所に
id
があることを再確認する必要があることを意味します。
オプション3.私はそれほど心配することはありませんか?
- これはUserEntityの
id
の変更、DB内の異なるUserEntityを上書きする危険性を公開します。 - 先ほど
id
を知らずに新しいUserEntity()を作成することができます。これは保存のためにリポジトリに渡すことができます。
ありがとうございます!この例では、明らかに、 'id'を正しいものに変更する方法はないでしょうか? – johnnietheblack
@ johnnietheblack - 'id'の通常のコンテキストから、はい。あなたは突然変異を起こすが検証される必要があるプロパティのためのメソッドを提供するでしょう。 – Oded
ありがとう:)意味があり、うまく気密です。 – johnnietheblack