Я начну с того, что 95% своей базы данных я выполнил, используя SQL. Недавно я провел некоторое исследование различных ORM, таких как NHibernate и Doctrine.
Я вижу преимущества отсутствия необходимости много знать SQL и переносимости базы данных, которую обеспечивает ORM. Но я также вижу, что знание SQL сделает работу с ORM более эффективной, и я могу думать только один раз в своей карьере, что самым большим изменением приложения будет поставщик базы данных.
Поскольку я очень комфортно пишу на SQL и, видимо, не осознаю часто преподносимых преимуществ использования ORM, мой вопрос для пользователей ORM:
Какие проекты веб-разработки получают наибольшую выгоду от использования ORM?
Ответы:
(Почти) все приложения получают выгоду от ORM.
Во-первых, я не согласен с перечисленными вами преимуществами для ORM .
Вместо этого настоящие преимущества ORM:
Как вы прокомментируете, один недостаток ORM - это потеря производительности. Однако это обычно можно компенсировать, потратив больше оборудования.
Как правило, время программиста дороже, чем аппаратное обеспечение, поэтому ORM - это вообще хороший вариант вместо ручного кодирования SQL.
ORM лучше всего подходит для приложений с довольно простой логикой базы данных CRUD. ORM менее эффективен для :
По моему опыту, такие ситуации редки. Отсюда и мой ответ.
источник
Мне удобно писать и SQL. Мне также гораздо удобнее вообще не писать SQL, а также не беспокоиться о подключении, отключении, пуле и т. Д. К базе данных.
Итак .. Я отвечу на отрицательный ваш вопрос. Единственными проектами веб-разработки, которые НЕ извлекают выгоду из ORM, являются те, которые вообще не обращаются к базе данных. Который я считаю меньшинство (если таковое имеется).
источник
Основываясь на моем опыте работы с ASP.NET WebForms, я бы предложил, чтобы веб-проекты, использующие веб- фреймы с сохранением состояния, извлекали наибольшую выгоду из использования ORM.
В инфраструктуре с отслеживанием состояния разметка создается автоматически за кулисами на основе иерархии активных серверных элементов управления. Соблазнительно заставить эти элементы управления загружаться и автоматически сохранять их состояние в базе данных. Вот где ORM помогает.
Вы как бы абстрагируете конец конвейера (вывод HTML), и он, естественно, приглашает работать с началом (источником данных) таким же образом, чтобы вы оставались только в рамках своей бизнес-логики в коде приложения.
Не то чтобы я не говорил, что это хороший способ сделать что-то. Это просто, где ORM подходит естественно.
источник
В приложениях, где у вас есть большая, очень связанная объектная модель, ORM избавляет вас от необходимости писать одни и те же объединения снова и снова.
Другим преимуществом является отложенная загрузка, когда вы хотите, чтобы API возвращал граф объектов, где клиент API будет использовать только подмножество этого графа.
источник
Я считаю, что вы путаете ORM с DBAL .
Концепция, на которую вы ссылаетесь - это уровень абстракции базы данных (DBAL), который позволяет вам писать переносимый «sql», который не зависит от базовой системы баз данных.
ORM с другой стороны (который (почти?) Всегда построен поверх DBAL):
Object-relational mapping (ORM, O/RM, and O/R mapping) in computer software is a programming technique for converting data between incompatible type systems in object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language.
(Википедия)Проще говоря, ORM позволяет вам преобразовывать данные из плоской базы данных в раздутое представление объекта.
источник
Проекты, которые не выиграют от ORM, будут:
источник