Основное различие между 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
не очень распространенный термин, и трудно сказать, что на самом деле имел в виду автор учебника.