Чем паттерн Repository отличается от DataMapper?

Разбираюсь с паттернами ... Есть паттерн DataMapper который выполняет запросы к базе данных и преобразовывает данные в объекты, есть паттерн Repository который делает вроде тоже самое (по крайней мере по тем материалам что я смотрел очень похоже). В чем разница между этими паттернами?
  • Вопрос задан
  • 5510 просмотров
Решения вопроса 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Это два абсолютно разных паттерна.

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

Репозиторий - это то, что на самом деле является моделью - набор методов, реализующих бизнес-логику приложения. Метод в репозитории может включать в себя десяток разных запросов к БД для получения набора данных, необходимого в приложении, плюс их обработку.
В отличие от DM, репозиторий содержит также уникальные методы, которые отражают конкртеные нужды конкретного модуля приложения.
Ответ написан
DarkRaven
@DarkRaven
разработка программного обеспечения
Паттерн репозиторий дает унифицированный набор общих операций над сущностью в БД.
Внутри репозитория может быть использован DataMapper. Назначение последнего именно в маппинге сущности из БД на доменную сущность (или модель).

Информация:

design-pattern.ru/patterns/repository.html
design-pattern.ru/patterns/repository.html
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
trevoga_su
@trevoga_su
правильно было бы сформулировать вопрос так - чем ActiveRecord от DM отличается
DM:
data-mapper.gif
AR:
active-record.gif
Registry:
registry.gif
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы