ドメインモデルとクエリ


8

私はDDDに不慣れで、貧弱なモデルのトランザクションスクリプトアプリ、または単にBig Balls of Mudでのみ働いていたので、私が乱用した用語を許してください。

ドメインモデルとリポジトリの適切な分離を理解しようとしています。(信じられないほど単純化された)オブジェクトをステータス(戻り値enumerable)またはIDでクエリする必要があると仮定して、データベースからのドメインオブジェクトを構築する適切な方法は何ですか。

  • ファクトリはオブジェクトを構築し、DIedリポジトリを使用してメソッドを公開する必要がGetByStatus()ありGetByID()ますか?
  • DTOからドメインモデルを構築する方法を知っていて、リポジトリを直接呼び出す必要がありますか?
  • ドメインモデルには、IDによる取得用のコンストラクターがあり、DIedリポジトリを使用して初期状態をロードし、リストに他の(?)メソッドを使用する必要がありますか?

私は最善の方法が何であるか本当にわかりません、そしてこの質問はそれぞれを擁護する答えを持っています(これらは確かに相互に排他的です)。

回答:


6

リポジトリはドメインモデルのサービスであり、ドメインとデータストアの間のレイヤーとして機能します。エンティティをクエリするメソッドと、エンティティを保存および更新するメソッドが必要です。

あなたの質問に答えるには:

  • 私はノーと言うでしょう。ファクトリを使用してドメインオブジェクトを作成する場合、ドメインオブジェクトはデータストアから取得され、新しく作成されないことは明らかだと思います。
  • はい、必要に応じて。これは実装の詳細にかなり近いと思います。
  • 絶対にありません。私が言ったように、エンティティがどこから来ているのかは明らかです。

また、ORMフレームワークを使用している場合、このフレームワークはすでにリポジトリの形式になっています。それを最大限に活用し、ホイールを再発明したり、不必要な複雑なレイヤーを追加したりしないでください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.