2009-04-24 12 views
9

PersonRepositoryなどの特定のエンティティのパーシステンスロジックをすべてカプセル化したリポジトリクラスを作成した場合、そのリポジトリクラスは作業単位パターンまたはアイデンティティマップパターンを実装していませんが、それでもリポジトリと見なされますか?つまり、リポジトリの実装には作業単位とアイデンティティマップが必要ですか、または永続性ロジックをカプセル化するクラスをリポジトリとして呼び出すことはできますか?リポジトリは依然として作業ユニットのないリポジトリですか?

1つのものを追加する必要があります。リポジトリがこれらのパターンを必要とせず、永続化メソッドのコンテナである場合、リポジトリとDAO(データアクセスオブジェクト)の違いは何ですか?同じオブジェクトに対して複数の名前を作成しているだけなのでしょうか、リポジトリにあると思われるものの一部が欠落していますか?

答えて

3

はい、まだリポジトリです。

Repository == DAOの場合、リポジトリはビジネスロジックレイヤーにする必要があり、DAOはデータアクセスレイヤーにする必要があります。つまり、それらは異なるレイヤーにあると思います。私が理解するように、リポジトリはDAOメソッドを呼び出してデータをロードして保持します。

3

私はリポジトリと作業単位のパターンが直交していると言います。

非常に頻繁に、単一の作業単位が複数のリポジトリにまたがる作業を望んでいるため、その実装は上位レイヤに属します。

1

Siiが言ったことに基づいてビルドしました - それはリポジトリと作業ユニットが関連していない場合はと私にはと思われます。懸念の分離?

1

懸念の分離を検討するときは、リポジトリにデータストレージの実装方法があり、メインコードから除外できるようにしてください。これは単体テストに役立つだけでなく、最終的にデータストレージの実装を完全に交換します(データストレージの実装例はASP.NETのLINQ-SQLになります)。

関連する問題