Какие-либо преимущества при использовании ORM Tool (Framework)? - PullRequest
3 голосов
/ 03 июня 2011

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

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

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


--- Спасибо за все ответы, которые я получаю до сих пор ... Кажется, что преимущества по-прежнему заключаются в сравнении использования "динамически генерируемого SQL" ORM с использованием "статически написанного встроенного SQL" в коде. Да, это имеет свои преимущества. Но это не он вопрос.

Вопрос лучше сформулировать следующим образом:

Если вы подумываете о наличии хранимых процедур для реализации вашей бизнес-логики (SP могут быть написаны очень продвинуто, а также очень эффективно), в коде приложения (.NET, JAVA) у вас есть очень тонкий слой обертки хранимых данных. процедуры, организованные бизнес-потребностями. Мой вопрос заключается в том, как ORM превосходит эту архитектуру (конечно, хорошо спроектированную).

Ответы [ 3 ]

0 голосов
/ 03 июня 2011

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

0 голосов
/ 03 июня 2011

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

Для разработчиков, использующих объектно-ориентированный язык (будь то C ++, C # или Java), существует множество соображений при отображении сложной реляционной схемы в богатую модель предметной области.Безусловно, все это отображение можно выполнить в своем собственном коде, но по мере усложнения ваших взаимодействий в этой «ничьей стране» между ОО и реляционными парадигмами становится более полезным механизм ORM и связанные с ним инструменты.

Некоторые соображения при планировании уровня отображения:

  • Вам необходимо управлять наследованием одной таблицы или нескольких таблиц?
  • Хотите ли вы использовать отложенную загрузку?
  • Хотите ли вы синхронизировать классы и таблицы вручную или планируете использовать инструмент для генерации классов для каждой таблицы (например, с помощью DataSet)?

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

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

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

0 голосов
/ 03 июня 2011

Я сам искал хороший ответ.Вот что, на мой взгляд, имеет значение:

1) ORM повышает производительность труда разработчика - проще сопоставить класс домена с базой данных.2) Хранимые процедуры могут содержать бизнес-логику - их сложно проверить.Это в основном из-за отсутствия инструментов / насмешливых рамок.3) Платформы ORM являются протестированными, которые предоставляют вам такие функции, как кеширование «из коробки» - не нужно заново изобретать колесо - и в большинстве приложений, которые я видел, которые не используют какие-либо функции ORM, в конечном итоге пишут внутренний уровень данных, который ORMпредлагает "из коробки".

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

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

...