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

Почему вы должны использовать ORM?

Если вы должны мотивировать "профи" того, почему вы должны использовать ORM для управления/клиента, каковы будут причины?

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Другим типом запроса будет тот, который с готовностью извлекает объект и один или несколько связанных объектов или коллекций в одном вызове базы данных. например Каждый объект формы возвращается с заполненными его вершинами и боковыми сборками.

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

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

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

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

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

Ответ 3

Ускорение развития. Например, исключая повторяющийся код, например, сопоставление полей результатов запроса к объектам и наоборот.

Ответ 4

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

Ответ 5

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

Ответ 6

Так, чтобы ваша модель объектной модели и модель сохранения сохранялись.

Ответ 7

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

Ответ 8

Причина, по которой я смотрю, заключается в том, чтобы избежать сгенерированного кода из инструментов DAL VS2005 (сопоставление схем, TableAdapters).

DAL/BLL, созданный более года назад, работал отлично (для чего я его построил), пока кто-то еще не начал использовать его, чтобы воспользоваться некоторыми из сгенерированных функций (о которых я понятия не имел)/p >

Похоже, что это обеспечит гораздо более интуитивное и чистое решение, чем решение DAL/BLL от http://wwww.asp.net

Я думал о создании собственного генератора кода SQL С# DAL, но ORM выглядит как более элегантное решение

Ответ 9

Чтобы свести к минимуму дублирование простых SQL-запросов.

Ответ 10

Компиляция и тестирование запросов.

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

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

При использовании правильных шаблонов доступа к данным в .NET легко unit test ваша логика запросов в коллекциях памяти. Это ускоряет выполнение ваших тестов, потому что вам не нужно обращаться к базе данных, настраивать данные в базе данных или даже разворачивать полный контекст данных. [EDIT] Это не так верно, как я думал, это было как единица тестирование в памяти может представить сложные задачи для преодоления. Но я все еще считаю, что эти тесты интеграции легче писать, чем в предыдущие годы. [/EDIT]

Это определенно более актуально сегодня, чем несколько лет назад, когда вопрос был задан, но это может быть только для Visual Studio и Entity Framework, где мой опыт лежит. Если возможно, подключите собственную среду.

Ответ 11

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

В настоящее время я использую ORM, и это ускорило мою разработку.

Ответ 13

убедите их, сколько времени/денег вы сэкономите при внесении изменений, и вам не придется переписывать ваш SQL, поскольку инструмент ORM сделает это для вас

Ответ 14

Аннотация sql в 95% случаев, поэтому не всем в команде нужно знать, как писать суперэффективные запросы, специфичные для конкретной базы данных.

Ответ 15

Я думаю, что здесь есть много хороших моментов (переносимость, простота разработки/обслуживания, ориентация на бизнес-моделирование OO и т.д.), но когда вы пытаетесь убедить своего клиента или руководство, все это сводится к , сколько деньги, которые вы сэкономите, используя ORM.

Сделайте некоторые оценки для типичных задач (или даже более крупных проектов, которые могут возникнуть), и вы (надеюсь,!) получите несколько аргументов для переключения, которые трудно игнорировать.

Ответ 16

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

Я разработчик Android, и, как вы знаете, мобильные приложения, как правило, не имеют большого размера, поэтому это дополнительное усилие для выделения модели с чистой моделью и моделью, работающей с orm, не кажется полноценным.

Я понимаю, что этот вопрос является общим. но мобильные приложения также входят в общий зонтик.