Зачем использовать ORM в PHP? - PullRequest
5 голосов
/ 08 апреля 2011

Я недавно начал изучать ORM, у меня возник вопрос:

PHP-приложения используют в основном MySql и Sqlite, почти все PHP-серверы установлены, поэтому стоит использовать ORM в PHP, чтобы быть базой данных-indipendent?

А как насчет производительности?

Ответы [ 6 ]

6 голосов
/ 08 апреля 2011

независимость от базы данных не является основной причиной использования ORM. то, что вы хотите иметь, это общая абстракция базы данных. это может означать: простоту использования, быструю разработку, независимость от базы данных, ... в любом случае, обычно стоит использовать ORM. если ваше приложение потребляет все ваши ресурсы процессора, то вы можете использовать простой SQL для оптимизации определенных запросов. Полагаю, это редкий случай.

вы можете прочитать это: Каковы преимущества использования ORM?

4 голосов
/ 08 апреля 2011

Существует несколько причин, по которым вы можете выбрать использование ORM, но я могу подумать о некоторых из них:

  • Большинство ORM позволяют вам проверять данные для INSERT и UPDATE.
  • ORM позволят вам сопоставить имена столбцов в базе данных с именами рабочих полей в вашей базе данных.Это может быть удобно, если вы работаете с базой данных, созданной кем-то другим и имеющей странные имена столбцов.
  • Они также будут хорошо обрабатывать отношения и для вас.(например, если вы извлекаете строку, имеющую отношение 1: m по одному из столбцов, вы получите подмассив связанных элементов без необходимости вручную выполнять другой запрос).

Большинство причиниспользование ORM связано со скоростью / простотой разработки.

С точки зрения производительности, я использовал доктрину с php раньше, а гидратация создала огромные накладные расходы по сравнению с простым извлечением строк.

3 голосов
/ 23 августа 2012

Для независимости от базы данных (и производительности) используйте PDO .Он встроен, его подготовленные операторы отлично подходят для предотвращения уязвимостей SQL-инъекций.

Если вы застряли на O / RM, он даже поставляется с небольшим OO-флером ... См. PDOStatement:: fetch (и некоторые другие методы fetchXxx).

2 голосов
/ 27 ноября 2015

ORM - это пустая трата времени.Что странно, так как он был разработан, чтобы сэкономить ваше время :), но это правда.У меня была возможность использовать ORM на нескольких языках, и это того не стоило.В основном существует 2 типа проектов:

  1. Простые проекты с несколькими таблицами (иногда даже 1 таблицей), без аутентификации и т. Д., Скажем, простые автономные таблицы
  2. Сложныйпроекты со множеством связанных таблиц, представлений и прочего.Возможно и больше баз данных.

    1. Да, вы можете свободно использовать ORM, если вы знакомы с настройкой и как ее использовать - это очень просто, но вы никогда не знаете, изменились ли требования проекта, и в итоге вы сожалеете о себекогда-либо наступал на поле ORM:)
    2. Не используйте ORM, так как вы потратите больше времени на исправление "автоматически сгенерированных" вещей, которые предоставляет ORM.Я полагаю, что некоторые ORM в настоящее время достаточно продвинуты, но ORM здесь, как (дикая догадка), 10 лет (на самом деле я считаю, что это намного больше)?И это, очевидно, своего рода тупик.Это не заменит стандартный путь в будущем, сегодня тенденция - это базы данных NOSQL и т. Д.

На мой взгляд, ORM жив только благодаря фреймворкам, которые используют его внутри.А производительность?Я не уверен (так как я больше им не пользуюсь), но я считаю, что производительность тоже может быть проблемой.Вы должны заплатить хоть какую-то цену за то, что вы абстрагированы от запроса к базе данных, верно?Я думаю, что ORM была отличной идеей на бумаге, но она не работает хорошо.

1 голос
/ 08 апреля 2011

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

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

Кроме того, с помощью чистого ORM можно менять базы данных с минимальными изменениями в приложении.

Надеюсь, это поможет.

1 голос
/ 08 апреля 2011

Что делать, если на вашем сервере работает PostgreSql или SQL Server - два других очень распространенных движка базы данных.

Что если вы хотите подключиться к устаревшей базе данных?

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

По производительности ... Зависит от рассматриваемого ORM. Я более знаком с ними в настройке .NET, и, безусловно, в этой среде наблюдается большая разница в производительности, но обычно это компромисс с функциями.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...