仮定しましょう:
- 集約ルートとしての
User
エンティティ。( login、passwordを含む) - の
UserProfile
内部部分としてのエンティティUser
。( lastName、firstNameなどを含む)
この分離の理由の 1 つは、SRP (関心の分離) を維持することです。
User
=> 認証データを処理し、UserProfile
=> ユーザーの連絡先情報を処理します。
リンクされた個別の集約ルートを作成することは選択しませんでした。これUserProfile
は、論理的にはUserProfile
、リンクされていない aUser
はまったく意味をなさないためです。composition
したがって、 UML の意味でa について話します。
ルールでは、どのクライアントも集約ルートの内部エンティティに直接アクセスしてはならないと規定されています。UserProfile
したがって、クライアントがタスクを実行するために ID を知る必要はありません。重要なのはUser
1つだけです。誰かが関連付けられた を更新したい場合は、この目的のためにUserProfile
内のメソッドが存在する必要があります。User
もちろん、私の User エンティティには UUID が必要です ( Vaughn Vernon のIDDD本のアドバイスに従って生成されたもの)。そこで、専用ライブラリ (JVM を使用しているため Apache) を使用して生成しました。
私の質問は、関連するUserProfile
アイデンティティに焦点を当てています。外部に到達できることを期待するのは意味がないため。Evansが推奨したように、関連する集約内でのみ一意の「単純な」ローカル ID を設定する必要があります。
一見すると、1-N の関係 ( User
MULTIPLE を含むもの) として興味深いでしょうUserProfile
。UserProfile
これらのローカル ID により、ユース ケースに応じて権利を取得できます。
しかし、 1対1の関係(1つは1つUser
しかないUserProfile
)の場合、「アイデンティティ」の必要性についてさえ疑問に思います。
このシナリオにどのように取り組むべきですか?