2

仮定しましょう:

  • 集約ルートとしてのUserエンティティ。( loginpasswordを含む)
  • UserProfile内部部分としてのエンティティUser。( lastNamefirstNameなどを含む)

この分離の理由の 1 つは、SRP (関心の分離) を維持することです。
User=> 認証データを処理し、UserProfile=> ユーザーの連絡先情報を処理します。

リンクされた個別の集約ルートを作成することは選択しませんでした。これUserProfileは、論理的にはUserProfile、リンクされていない aUserはまったく意味をなさないためです。compositionしたがって、 UML の意味でa について話します。

ルールでは、どのクライアントも集約ルートの内部エンティティに直接アクセスしてはならないと規定されています。UserProfileしたがって、クライアントがタスクを実行するために ID を知る必要はありません。重要なのはUser1つだけです。誰かが関連付けられた を更新したい場合は、この目的のためにUserProfile内のメソッドが存在する必要があります。User

もちろん、私の User エンティティには UUID が必要です ( Vaughn Vernon のIDDD本のアドバイスに従って生成されたもの)。そこで、専用ライブラリ (JVM を使用しているため Apache) を使用して生成しました。

私の質問は、関連するUserProfileアイデンティティに焦点を当てています。外部に到達できることを期待するのは意味がないため。Evansが推奨したように、関連する集約内でのみ一意の「単純な」ローカル ID を設定する必要があります

一見すると、1-N の関係 ( UserMULTIPLE を含むもの) として興味深いでしょうUserProfileUserProfileこれらのローカル ID により、ユース ケースに応じて権利を取得できます。

しかし、 1対1の関係(1つは1つUserしかないUserProfile)の場合、「アイデンティティ」の必要性についてさえ疑問に思います。

このシナリオにどのように取り組むべきですか?

4

1 に答える 1

1

あなたが言ったように、UserProfileperUserが 1 つしかない場合は、明示的なローカル ID を持つ必要はありません。UserProfileたとえば、複数の値オブジェクトを使用するシナリオでは、User特定のプロファイルを更新する場合、それらを参照する方法が必要になります。

于 2013-07-09T18:46:32.177 に答える