Репозиторий — это слой абстракции, инкапсулирующий в себе всё, что относится к способу хранения данных.
Назначение: Разделение бизнес-логики от деталей реализации слоя доступа к данным.
Путаница с паттерном DataMapper
DataMapper — это то, что традиционно неправильно называют моделью. Мостик между БД и объектом: считать данные из БД и записать в объект, сохранить объект в БД. Фактически CRUD. Способ автоматизировать рутинные операции. Моделью являться не может в силу изначальной ограниченности.
Другими словами, это универсальный код, подходящий для работы с любыми объектами. Инструмент для работы с БД. Все его методы одинаковы для любых объектов.
Репозиторий — это то, что на самом деле является моделью — набор методов, реализующих бизнес-логику приложения. Метод в репозитории может включать в себя десяток разных запросов к БД для получения набора данных, необходимого в приложении, плюс их обработку.
В отличие от DM, репозиторий содержит также уникальные методы, которые отражают конкртеные нужды конкретного модуля приложения.