PHP « Разница между Active Record и Data Mapper

Собственно вопрос, какая разница между этими двумя паттернами?

1 ответов


Важно понять, что сходство между этими шаблонами лишь в том, что оба они скрывают источник данных. Основное же отличие - в том, что Active Record описывает модель предметной области, объект пользователя, например, или какой то другой объект домена, а Data Mapper просто является подобием "моста" между клиентами данных и источником этих данных. Основная задача Active Record - инкапсулировать объект бизнесс-логики, а Data Mapper - скрыть источник данных и работу с ним. Конечно же Active Record управляет получением данных, сохранением, их проверкой, какими то операциями над данными, она знает куда сохраняет данные, но она может и не знать об этом, используя в принципе тот же Data Mapper. Ну дальше нужны примеры...


Кратко говоря, объекты в шаблоне Data Mapper никак не связаны со схемой БД, в то время как Active Record на этой связи построена. Вся работа с БД осуществляется через дополнительный слой. Более подробное объяснение укладывается в два абзаца.