Рефакторинг с ActiveRecord на DataMapper

Вы провели рефакторинг с ActiveRecord на DataMapper? Какие условия побудили к переходу? Меня в первую очередь интересуют веб-приложения, но я хотел бы знать проблемы, которые сопровождают такой шаг в любой среде.

Повышение качества Laravel с помощью принципов SOLID: Лучшие практики и примеры
Повышение качества Laravel с помощью принципов SOLID: Лучшие практики и примеры
Когда мы говорим о том, как сделать следующий шаг в качестве разработчика, мы должны понимать, что качество кода всегда является основным фокусом на...
Принципы SOLID - лучшие практики
Принципы SOLID - лучшие практики
SOLID - это аббревиатура, обозначающая пять ключевых принципов проектирования: принцип единой ответственности, принцип "открыто-закрыто", принцип...
4
0
2 275
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Мне очень нравится шаблон ActiveRecord из-за его простоты. Однако я отхожу от этого для более крупных веб-приложений. Я обнаружил, что по мере того, как проект на основе ActiveRecord становится более сложным, объекты ActiveRecord становятся большими и перегруженными слишком большим количеством кода.

Благодаря введению шаблона репозитория (по сути, Data Mapper) классы модели предметной области становятся проще, а логика сопоставления данных / доступа к данным сохраняется отдельно.

Кроме того, довольно сложно (невозможно?) Издеваться над объектами ActiveRecord из-за того, что они используют статические методы.

Интересная идея! Спасибо Майк

Nikita Fedyashev 28.11.2009 00:31

Я запутался - почему активная запись обязательно использует статические методы?

Billy ONeal 17.02.2011 21:12

Реализации AR, которые я видел (Ruby AR и Castle Active Record для .NET), все используют статические методы для запросов (Person.FindById (123)). Если я правильно помню из PoEAA, это часть определения шаблона Active Record. См .: en.wikipedia.org/wiki/Active_record_pattern

Mike 27.02.2011 00:57

Я написал интегрированную систему сборки поверх PDE-Build, используя поход. Изначально я использовал ActiveRecord, но мне понадобился неблокирующий потокобезопасный доступ к базе данных, поэтому я переключился на использование Data Mapper.

Я был изрядно огорчен ошибками, но последние версии кажутся довольно стабильными.

Я использую платформу, которая предоставляет Table Data Gateway и Row Data Gateway как встроенные классы, которые легко использовать, потому что все, что мне нужно указать, это первичный ключ (если не просто id) и имя таблицы (если нет то же, что и название класса). Однако недавно в процессе рефакторинга я обнаружил, что эти шаблоны начинают ухудшаться в тот момент, когда должно произойти более сложное сопоставление между доменом и базой данных.

Например, в настоящее время я занимаюсь рефакторингом кода для одного веб-сайта, чтобы использовать Data Mapper, чтобы я мог использовать наследование одной таблицы (использует сопоставление наследования). По сути, каждый раз, когда отношения между базой данных и доменом становятся более сложными, чем взаимно однозначные, я настоятельно рекомендую использовать Data Mappers.

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