Разница между ORM и объектным отображением? - PullRequest
0 голосов
/ 22 сентября 2018

На учебном сайте Spring Boot я прочитал следующее:

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

  • Hibernate для ORM
  • iBatis для сопоставления объектов

Вот как Hibernate объясняет свою цель:

Hibernate ORM позволяет разработчикам легче создавать приложения, данные которых переживают процесс приложения.Как среда объектно-реляционного сопоставления (ORM), Hibernate занимается сохранением данных, поскольку оно применяется к реляционным базам данных (через JDBC).

Помимо того, что iBatis изменил имя на MyBatis, решение, предлагаемое MyBatis, похоже, отличается от подхода ORM.На своей вводной странице создатели MyBatis пишут:

MyBatis - это первоклассная среда персистентности с поддержкой пользовательских SQL, хранимых процедур и расширенных отображений.MyBatis устраняет почти весь код JDBC и ручную настройку параметров и получение результатов.MyBatis может использовать простой XML или аннотации для конфигурации и сопоставления примитивов, интерфейсов Map и Java POJO (простые старые объекты Java) с записями базы данных.

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

Действительно ли ORM действительно отличается от Object Mapping или это синонимы?В чем разница?

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Основное различие между Hibernate (или, в более широком смысле, любой реализацией JPA) и MyBatis заключается в фокусе.

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

В mybatis главным является запрос SQL.Вы определяете запрос и способ сопоставления результатов запроса с объектами.Созданный вами запрос представляет собой простой SQL, то есть он определяется в терминах таблиц базы данных и столбцов таблицы.Вы полностью контролируете этот процесс, нет высокоуровневого API, который генерирует запрос для вас (доступный java API не совпадает с API запроса JPA, так как он работает с запросом, более похожим на шаблон строки, и работает непосредственно с SQL, гдеJPA фокусируется на объектах и ​​их отношениях).

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

Что касается именования ORM против Object Mapping, то это действительно вопрос определений.Если вы посмотрите на определение и описание ORM в wikipedia , то увидите, что mybatis - это ORM.Object Mapping не очень распространенный термин, и трудно сказать, что на самом деле имел в виду автор учебника.

0 голосов
/ 22 сентября 2018

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

Да, когда речь идет о разнице между mybatis и hibernate. Здесь - хорошее объяснение, которое достаточно хорошо проясняет это различие в вашем случае.

Действительно ли ORM отличается от Object Mapping или это синонимы?В чем разница?

О термине «сопоставление объектов»: это также может означать некоторые другие вещи, которые обязательно не имеют никакого отношения к базам данных или около того.Например, Джексон мог бы использовать объектный преобразователь для отображения данных Json в некоторый Java POJO.

Я склонен говорить (и слышать) об ORM, когда он идет с реализациями @Entity & JPA, поэтому довольно высокий уровень / абстракцияstuff.

Сопоставление объектов с другой стороны - по крайней мере, в Java - может означать все, что сопоставляет произвольные данные с объектом, объект с другим объектом или объект с произвольными данными (например, строка в таблице БД).

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

...