2012-02-22 10 views
0

私はStudentDriverを集合ルートとして持っています。各StudentDriverは複数のDrivingLogを持つことができ、各DrivingLogは複数のDrivingRecordを保持することができます。DDDでエンティティをネストする方法

彼らはお互いにつながっているので、私はそれが正しいと思います。しかし、もし私が、例えば、新しい運転記録を加えるつもりなら、どうすればいいのか理解できません。私はstudentdriver.addNewDrivingRecordToDrivingLog(...)を呼び出すか、最初にユーザーから運転記録を取得して、これにdrivingrecordを追加しますか?つまり、メソッド名が長くなりすぎて、要素へのアクセス方法がわからないということです。

誰かがあなたがStudentDriverのメンバーとやりとりすることになっていることを説明することができますか、この集計が正しい場合でも、

答えて

1

私はstudentdriver.addNewDrivingRecordToDrivingLog(...)を呼び出すか、最初にユーザーから運転記録を取得してから、これにdrivingrecordを追加しますか?つまり、メソッド名が長くなりすぎて、要素へのアクセス方法がわからないということです。

DrivingLogのインスタンスを取得してからレコードを追加するほうがいいと思われますが、実際にはあなたのドメインについて十分に分かっていないため、これは実際に自分で把握する必要があります。どちらのアプローチもDDDルールに違反していません。試してみてください(コードの匂いやテストが難しいなど)。 DDDコードは、ドメインの理解に沿って継続的に改善する必要があります。この状況では、実際には正当であるか悪いですか。

+0

したがって、他の集約ルーツにそれらがない限り、集計ルート内にエンティティなどを保持するのに間違ったことはありませんか?同様に、集合ルートの外側にエンタイトを一緒に置くことは悪くないですか? – LuckyLuke

+0

私は、StudentDriverが集約ルートであるため、studentdriverの外にあるdrivinglogを構成し、drivinglogをドライブログに直接追加し、リポジトリを介して永続化される前にdriverlogsをユーザーに添付するのは悪くないと思いますか?集約すると、その中にあるものにまだアクセスできないということではありませんか? – LuckyLuke

+0

もう一つ最後のこと:運転手に運転記録を追加する場合は、リポジトリ内の学生ドライバーを更新する必要がありますか?あなたは集計にentitesのための独自のリポジトリを持っていないのですか?だから、学生ドライバーの何かが変更を集めるたびに、学生ドライバーを「更新」しなければなりませんか? – LuckyLuke