DBIx :: Классы результатов класса и фактические таблицы - PullRequest
1 голос
/ 02 ноября 2009

Я изучаю классы DBIx, и я немного сбит с толку, поскольку до сих пор мое взаимодействие с базой данных было простым SQL-запросом в PHP-коде.

В любом случае, насколько я понимаю, класс работает со схемой, определенной в результирующих классах, вместо непосредственного взаимодействия с базой данных. Схема может быть построена вручную с помощью различных классов .pm или извлечена из базы данных с помощью класса Loader.

Мой вопрос: каков предпочтительный подход к этому? Что если я вручную создаю свои классы результатов, а затем изменяю свою базу данных? Думаю, мне нужно отредактировать и таблицы, и классы, не правда ли, немного непрактично?

Спасибо

1 Ответ

1 голос
/ 02 ноября 2009

Одна из трудностей в использовании системы объектно-реляционного отображения, такой как DBIx :: Class, заключается в том, что вам необходимо поддерживать классы таблиц в актуальном состоянии с вашей схемой. Обычно это так же просто, как добавить поле здесь и там, возможно, время от времени добавляя новое отношение внешнего ключа. Если у вас есть код в управлении версиями, отслеживать его будет относительно просто.

Недостаток обслуживания одной и той же вещи (схема БД) в двух местах перевешивается (ИМХО) преимуществом наличия системы ORM. Как только вы привыкните к работе с запросами DBIx :: Class и их ResultSets, все пойдет намного быстрее, чем постоянная запись необработанных вызовов DBI.

Лично мне не повезло с классами Loader, но с тех пор, как я их попробовал, прошло довольно много времени. Если они работают для вас, это, вероятно, проще, чем вручную поддерживать определения вашей схемы в коде. С другой стороны, меня никогда не беспокоили крошечные усилия, которые для этого необходимы. Схемы базы данных, как правило, не меняются слишком часто, когда система запущена и работает.

...