2011-07-16 9 views
2

DDDに関して次の2つの点を明確にしたいと考えています。ドメインドリブンデザイン

1.ドメインエンティティはリポジトリを呼び出しますか?

2.ドメインサービスでリポジトリを呼び出すことはできますか?

おかげ

編集

は、詳細の多くにDDD層の詳細な書類一式を発見し、これはそれが言ったことです。

さらに、リポジトリはアプリケーション層からのみ使用されますが、例外を作成し、必要に応じてドメインサービスからリポジトリを呼び出すクエリを作成することもできます。しかし、これは開発の同質性を達成するためにできるだけ避けるべきです。

答えて

2

リポジトリを参照するドメインエンティティを設計しません。 「リポジトリ」はドメインの一部であることはめったになく、ドメインモデルに技術的懸案事項を導入することになります。私は、アプリケーションサービス層に最適なリポジトリを見つけました。

+0

ご回答いただきありがとうございます。ドメインサービスはどうですか? – David

+0

David、私は、リポジトリが必要なサービスはおそらくアプリケーションサービスだと思う傾向があります。 –

2

私はこのような厳しくて速い規則を知らない。 何でもできます。

しかし、ここで私はそれをやっています。

  1. 通常、ドメインオブジェクトはリポジトリを呼び出しません。彼らはそれが永続的であるかどうかを意識する必要はありません。
  2. サービスは、ユースケースを満たすためにドメインオブジェクトとリポジトリを調整します。彼らは作業単位を所有し、トランザクションを管理します。
+0

あなたのポイント1は、ドメインオブジェクトを表示する方法ですが、あなたのポイント2では、アプリケーションサービスについて具体的に話していますか?もしそうならドメインサービスはどうですか? – David

+1

違いは何ですか? – duffymo

+1

Eric Evans DDDアーキテクチャでは、DDD内で次のレイヤースキーム、UI、アプリケーション、ドメイン、インフラストラクチャのそれぞれが独自の責任を負うことが示唆されています。さまざまな理由により、これらのレイヤーにサービスが存在する可能性があります。あなたが示唆したことは、Ericがアプリケーションレイヤーとして説明しているようです。ドメイン層はドメインオブジェクトとサービスがどこに住んでいるかを示していますが、ドメインサービスが実際にリポジトリインタフェースを利用するかどうかはわかりませんが、私の頭の中では、ドメインの懸念をアプリケーション層に反映させます。 – David