Интересная статья на Хабре наглядно демонстрирующая победу чистых SQL-запросов над ORM.
Основные аргументы.
PHP не является stateful-языком и за время жизни PHP-скрипта из таблицы производится либо чтение, либо запись в неё. Поэтому функция ORM — отслеживание состояния замапленного объекта — практически никогда не используется.
Написание чуть более сложного запроса требует либо плясок с бубном возле ORM, либо перехода на чистый SQL, что нарушает концепцию ORM.
Все программисты знают SQL, но не все — конкретную реализацию конкретной версии ORM. И не факт, что старая версия ORM будет на 100% совместима с новой.
Ну и от себя добавлю, что в более-менее сложном приложении всё равно приходится писать свой маппинг БД на объекты, т.к. связи между таблицами могут быть довольно изощрёнными и могут накладываться разные ограничения, присутствовать побочные действия (логгирование, счётчики) и т.п. Так что нет смысла делать две прослойки между БД только ради того, чтобы в самом примитивном случае чуть-чуть упростить код запроса.
Поэтому в Ideal CMS используется самый примитивный Query Builder, а при желании очень просто обойтись и без него. Это позволяет очень точно отслеживать, какие именно запросы идут к БД и обеспечивать наилучшую производительность работы с базой данных.
comments powered by Disqus