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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Так что ваша модель объектной модели и модель настойчивости совпадают.

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

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

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

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

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

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

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

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

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

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

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

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

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

.net с использованием шаблонов кода smith

http://nettiers.com/default.aspx?AspxAutoDetectCookieSupport=1

Зачем кодировать то, что можно сгенерировать так же хорошо.

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

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

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

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

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

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

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

  • Объекты ORM и сущности домена в Entity Framework 6.0
  • JPA CascadeType.ALL не удаляет сирот
  • Что называется ссылочным именем ColumnName, используемым в JPA?
  • Почему Hibernate не требует конструктора аргументов?
  • объект ссылается на несохраненный экземпляр переходного процесса - сохраняет временный экземпляр перед промывкой
  • получение результата в DTO с собственным SQL-запросом в спящем режиме
  • .net ORM Сравнение
  • Как обновить схемы таблиц базы данных с помощью генерации схемы NHibernate?
  • Как использовать Hibernate @ Любые связанные annotations?
  • Перечисление в спящем режиме, сохраняющееся как перечисление
  • NHibernate vs LINQ to SQL
  • Давайте будем гением компьютера.