DataMapper ORM против Доктрины - PullRequest
10 голосов
/ 26 июля 2011

Я собираюсь приступить к разработке нового веб-приложения в CodeIgniter.В прошлом я использовал DataMapper ORM для своих нужд отображения объектов и был полностью удовлетворен его возможностями.Тем не менее, мое удовлетворение идет только до моих знаний.Поэтому я подумываю о переходе на Doctrine .

. Я изучил документацию Doctrine - похоже, вам нужно довольно широко определять свои модели;добавьте геттеры и сеттеры, предоставьте ссылки на направления, предоставьте сопоставление и т. д. На первый взгляд, это выглядит как колоссальные издержки при прямом сравнении с DataMapper ORM.

Может ли кто-нибудь, имеющий опыт работы с обоими ORM, прокомментировать то, что привело вас от одногок другому?

Какая важная функциональность Doctrine достигает, что DataMapper ORM не может?

Является ли определение модели вручную шагом вперед или назад?Я предполагаю, что это вещь производительности.

1 Ответ

21 голосов
/ 26 июля 2011

DataMapper ORM и Doctrine следуют совершенно другому набору соглашений. DataMapper ORM - это (как ни странно) не средство отображения данных, а активная реализация записи. Это означает, что ваши классы моделей тесно интегрированы с библиотекой ORM. Ваши модели основаны на встроенных моделях DataMapper. Вы получаете много волшебства бесплатно, но в обмен вы женитесь на своих моделях в DataMapper ORM.

В доктрине, с другой стороны, используется истинный шаблон отображения данных. Это модели простых старых объектов PHP. У них нет внешних зависимостей. Doctrine может взять любой старый объект PHP, сохранить его в базе данных и затем снова извлечь его. Его модели вообще не связаны с ORM.

То, о чем вы читаете в документации Doctrine о методах получения, установщика, реляционной целостности и т. Д., Это всего лишь хорошая практика разработки ОО . Они не являются обязательными для Доктрины, но они облегчают вашу жизнь. Вы должны использовать их и для своих моделей DataMapper ORM! Если вы хотите, вы можете использовать магические методы получения и установки или даже просто старые общедоступные свойства в своих моделях Doctrine. То, что Учение говорит, что вы не должны делать, не означает, что вы не можете сделать это. Doctrine с радостью использует ваши модели с общедоступными свойствами, но есть некоторые предостережения. Вот и все.

...