Я читал обсуждение Stack Overflow о преимуществах и недостатках ORM, и есть разные мнения. Я хотел бы описать этот конкретный случай.
- Среднемасштабируемое веб-приложение на основе LAMP с небольшим количеством спагетти-кода внутри.
- Код весьма далек от ООП, хотя есть контроллеры со встроенными шаблонами и ветвь слабых классов моделей.
- Есть несколько десятков таблиц MySQL и около тысячи файлов.
- Кэширование, настроенное на выполнение MySQL-запросов с указателями.
- Около миллиона просмотров в месяц.
- Пользователи в основном имеют доступ для чтения.
У меня такой вопрос:
Стоит ли реализовывать ORM (Doctrine2 или Propel), или я должен ограничиться написанием классов моделей с нуля (аналогично шаблону ActiveRecord, группируйте методы / запросы по таблице и записи, чтобы каждый объект имеет два связанных класса)?
Основные цели:
производительность приложения,
простота чтения и модификации кода / запросов, а также
легкость возможной модификации БД (деталей).
Лично я предпочитаю второй вариант; есть довольно сложные SQL-запросы, я сомневаюсь, что ORM сможет поддерживать абстракцию БД для всех запросов. Начальная разработка закончена, и нет необходимости в быстрой разработке кода / кода запроса. Для нас гораздо важнее уметь легко читать, понимать и изменять код / запросы.
С другой стороны, могут быть некоторые сильные стороны в использовании ORM для данных условий, которые я упускаю.