1. ホーム
  2. hibernate

[解決済み] DAOパターンとRepositoryパターンの違いは何ですか?

2022-03-19 07:24:15

質問

データアクセスオブジェクト(DAO)パターンとリポジトリパターンの違いは何ですか?Enterprise Java Beans(EJB3)、インフラストラクチャとしてHibernate ORM、設計手法としてドメイン駆動設計(DDD)およびテスト駆動開発(TDD)を使用して、アプリケーションを開発しています。

解決するには?

DAO を抽象化したものです。 データ永続化 .
Repository を抽象化したものです。 オブジェクトの集合体 .

DAO は、よりデータベースに近いと考えられ、テーブル中心であることが多い。
Repository はドメインに近いと考えられ、Aggregate Rootsのみを扱います。

Repository を使用して実装することができます。 DAO のように、その逆はしないでしょう。

また Repository は一般に狭いインターフェイスです。 単純にオブジェクトの集合体であるべきで、その中に Get(id) , Find(ISpecification) , Add(Entity) .

のようなメソッドは Update が適切です。 DAO を使用することはできませんが Repository - を使用する場合 Repository エンティティへの変更は、通常、別のUnitOfWorkによって追跡されるでしょう。

という実装はよく見かけるようです。 Repository であり、実際には DAO そのため、両者の違いについて混乱があるように思います。