Подтвердить что ты не робот

Преимущества и недостатки использования ORM

Я хотел бы обсудить преимущества и недостатки использования ORM (например, ADO.NET).

Преимущества:

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

Недостатки:

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

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

Могут ли люди указать, где я ошибаюсь, и предлагать любые дополнительные преимущества/недостатки.

4b9b3361

Ответ 1

"ORM не может конкурировать с SQL запросов для сложных запросов.

  • Хорошо, как LINQ-SQL, так и Entity Framework. Разрешают сложные запросы и даже перевод результатов запросов SQL в объекты.

"Разработчики теряют понимание что действительно делает код - разработчик больше контролирует, используя SQL".

  • Не совсем, если вы знаете, что делаете. SQL-профилировщик достаточно, чтобы увидеть, что такое переведенные SQL-запросы.

"ORM имеет тенденцию быть медленным".

  • Да, но задержка загрузки и некоторые интеллектуальные параметры могут сделать это почти так же быстро.

"Потеря производительности разработчика в то время как они учатся программировать с помощью ORM".

  • Hibernate и Entity Framework могут занять время, чтобы узнать, но в конечном итоге они сэкономят время на разработку. LINQ-SQL, с другой стороны, имеет мало интересную кривую обучения.

Я говорю, используйте ORM, но помните об этом.

  • Создайте свои запросы и напишите код что приведет к наименьшему числу от круговых рейсов с сервером. Это накладные расходы, взятые для тура это занимает время.

  • Читайте об опыте других   люди имели с выбранными   ORM, прежде чем вы будете копать слишком глубоко.

  • Всегда сравнивайте свои запросы с       фактические выполняются в SQL       профайлер сервера.

Edit: Вы бы не использовали ORM для критически важной ситуации так же, как вы бы не использовали .Net или Java для написания операционной системы. Рассмотрите свои требования перед выбором. Даже если вы не используете ORM, вы в конечном итоге сделаете некоторое сопоставление самостоятельно либо путем повторения большого количества кода, либо с помощью словаря данных. Почему бы не использовать ORM и не знаете, как использовать его параметры, чтобы сделать его ALMOST столь же быстрым? Взвесьте преимущества и недостатки и сделайте свой выбор.

http://mikehadlow.blogspot.ca/2012/06/when-should-i-use-orm.html

Ответ 2

В зависимости от требования вы можете захотеть использовать ORM или не использовать. Например: поддержка нескольких постоянных движков (необходимо запустить на Oracle, DB2, MySQL, SQL Server и т.д.), Вы можете извлечь выгоду из абстракции, которую вы получаете от ORM за счет потери потенциальной производительности приложения.

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

Другим фактором может быть знание разработчика, как вы упомянули, и время, чтобы изучить новые материалы и фактическое время проекта (жесткий срок и т.д.). Это касается как сотрудников, которые знают конкретную ORM, так и сотрудников, которые не знают ORM, но преуспевают в ADO.NET/любой другой технологии доступа к данным более низкого уровня.