Между ними существует БОЛЬШАЯ разница, прежде всего в модели программирования, которую они представляют:
- Набор данных основан на модели таблицы
- ORM (без указания конкретного продукта фреймворка) основан на модели предметной области.
- Существует еще один вид инструмента, который можно использовать в сценарии данных. Этот тип инструмента представляет собой Data Mapper (например, iBatis.NET)
Поскольку другие отвечают передо мной, я думаю, что важно посмотреть, что Microsoft говорит о наборе данных, и лучше, что Википедия говорит об ORM, но я думаю (это было для меня в начале), это больше, чтобы понять разницу между ними с точки зрения модель. Понимание того, что не только прояснит выбор, но и сделает его лучше, сделает слишком простым подход и понимание самого инструмента.
В качестве небольшого объяснения можно сказать:
Настольная модель
- это модель, которая стремится представлять табличные данные в структуре памяти как можно ближе (и даже при необходимости). Таким образом, легко найти реализации, которые реализуют такие концепции как Таблица , Столбцы , Отношения На самом деле модель является структурой таблицы, поэтому ориентация объекта основана на что не на самих данных. Эта модель может иметь свои преимущества, но в некоторых случаях она может быть сложной для управления и сложной для применения концепций к содержащимся данным. Как сказано в предыдущих ответах, такие реализации, как набор данных, пусть или лучше, вынуждают вас подготовить (даже если с помощью инструмента) необходимые инструкции SQL для выполнения действий над данными.
ORM
- это модель, которая (как говорит mendelt передо мной ..), где Объекты отображаются непосредственно на объекты базы данных, главным образом, на таблицы и представления (даже если возможно отобразить даже функции и процедуры тоже). Обычно это делается двумя способами: с помощью файла сопоставления, который описывает сопоставление, или с помощью (в случае .NET или Java) атрибутов кода. Эта модель основана на объектах , которые представляют данные, поэтому ориентация на объекты может быть выполнена на них, как в обычных программах, это понятно с большим вниманием и осторожностью в некоторых случаях, но в целом, когда вы уверены в ORM это может быть действительно мощный инструмент! Даже ORM может быть тяжелым в управлении, если он не управляется и не разрабатывается должным образом, или лучше понимает природу, поэтому важно понимать методы, но я могу сказать по своему опыту, что ORM действительно мощный инструмент. В ORM инструмент в основном отвечает за генерацию инструкций SQL, необходимых для выполнения операций в коде, и в большинстве случаев ORM имеет средний язык (например, HQL) для выполнения операций над объектами.
MAPPER
Маппер - это инструмент, который не создает такие вещи, как ORM, но отображает рукописные инструкции SQL в объектную модель. Этот инструмент мог бы быть лучшим решением, когда нужно было писать вручную инструкции SQL, но он хотел спроектировать объектную модель приложения для представления данных.
В этой «модели» объекты отображаются в инструкции и описываются в файле отображения (обычно это XML-файл, как это делают iBatis.Net или iBATIS (java)). Картограф позволяет вам определять гранулярные правила в инструкциях SQL. В этом сценарии может быть легко найти некоторые концепции ORM, например, управление сессиями.
ORM и Mappers позволяют применять некоторые очень интересные шаблоны проектирования, которые не так просто применить одинаково к табличной модели и в данном случае к набору данных.
Прежде всего, извините за этот длинный ответ и за мой плохой английский, но для меня такой ответ заставляет меня в прошлом хорошо понимать разницу между этими моделями и затем между реализациями.