Чем шаблон ActiveRecord отличается от шаблона Domain Object или Data Mapper?

StackOverflow https://stackoverflow.com/questions/93773

Вопрос

Я смотрел на Преобразователь данных, который, как показалось на первый взгляд, использует шаблон ActiveRecord ORM.Другие люди говорили, что он использует DataMapper и / или шаблон объекта домена.

В чем разница между этими шаблонами?

Это было полезно?

Решение

Основное различие между этими двумя паттернами заключается в следующем:

  • В ActiveRecord у вас есть один доменный объект, который знает всю бизнес-логику и как сохранять / обновлять себя в базе данных, user.getLinkToProfile() и User::find(1), User::save(пользователь)

  • В шаблоне DataMapper у вас есть один доменный объект, который содержит всю бизнес-логику, например, user.getLinkToProfile() (или что-то подобное), но знает ничего что касается базы данных, о которой идет речь, то в дополнение к этому у вас есть mapper-object, который отвечает за сохранение, обновление, выбор и т.д.пользовательские объекты из базы данных, которые будут иметь UserMapper::find(1), UserMapper.save(пользователь)

DataMapper потенциально более сложный, чем ActiveRecord, но намного проще разработать вашу доменную модель и асинхронную базу данных, чем с ActiveRecord.

Другие советы

Активная запись очень тяжелая, средство сопоставления данных и доменный объект разделяют эти проблемы, поэтому у вас есть более определенный набор кода, выполняющий различные аспекты для ваших объектов "домена" или "сущности".

Я лично предпочитаю, хотя вы и не спрашивали, использовать разделение на domain object, data mapper, вероятно, использовать шаблон сборки и даже шаблон передачи данных, чтобы обеспечить четкое разделение того, что происходит с данными между базой данных и верхними уровнями приложения.

..элегантное и простое разделение всегда помогает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top