Repository — паттерн из Domain-Driven Design (Evans, 2003) и PoEAA (Fowler, 2002).

Evans: repository = «иллюзия in-memory коллекции» aggregate-корней. Скрывает persistence — клиент не знает, откуда данные (БД, кэш, файл).

Ключевые правила:

  • Один Repository = один Aggregate Root.
  • Возвращает Aggregate, не DTO.
  • Методы называются бизнесовыми запросами, не CRUD.
  • Не пропускает наружу query builders (IQueryable, Select).

Разница с DAO: DAO ориентирован на таблицу и CRUD; Repository — на aggregate и бизнес-операции.

Vernon выделяет два стиля:

  • Collection-oriented — add/remove, изменения сохраняются автоматически (identity map).
  • Persistence-oriented — save/delete, изменения фиксируются явно.

Второй лучше для async и явного контроля транзакций.

Синонимы

Репозиторий

Не путать с

← ко всему глоссарию