データ アクセス オブジェクト (DAO) とリポジトリ パターンの違いは何ですか? インフラストラクチャとして Enterprise Java Beans (EJB3)、Hibernate ORM、設計手法としてドメイン駆動設計 (DDD) とテスト駆動開発 (TDD) を使用してアプリケーションを開発しています。
ベストアンサー1
DAO
データの永続性の抽象化です。オブジェクトのコレクション
Repository
の抽象化です。
DAO
データベースに近いと考えられ、多くの場合テーブル中心です。
Repository
ドメインに近いと考えられ、集約ルートのみを扱います。
Repository
'sを使用して実装することもできますDAO
が、その逆は行いません。
また、 は一般的に、より狭いインターフェースです。 、、をRepository
含む、単純なオブジェクトのコレクションである必要があります。Get(id)
Find(ISpecification)
Add(Entity)
のようなメソッドUpdate
は には適していますDAO
が、 には適していませんRepository
。 を使用する場合Repository
、エンティティへの変更は通常、別の UnitOfWork によって追跡されます。
Repository
実際には に近い実装が と呼ばれているのをよく見かけますDAO
が、そのため、それらの違いについて混乱が生じているように思います。