MyBatis или Hibernate?
Рано или поздно Java-разработчик задаёт себе вопрос: Hibernate или MyBatis? От ответа зависит архитектура проекта, а ответ, в свою очередь, зависит от задачи. Давайте разберёмся, что они такое и когда какой лучше.
Итак, Hibernate это ORM framework. Его полное название Hibernate ORM. Он полностью поддерживает JPA и, фактически, является имплементацией JPA. Его основная задача – понять, как размечены ваши классы аннотациями ORM, построить по ним схему и собирать объекты по строкам из базы. Hibernate сам пишет за вас запросы к базе. Для вас работа с базой выглядит как работа с объектами. Сохранить объект, загрузить объект, обновить объект. Как, собственно, и должно быть. Это же Object Relational Mapping!
MyBatis это Java persistence framework. Не ORM. MyBatis связывает методы интерфейса маппера с SQL-запросом. MyBatis не умеет создавать схему. И, честно говоря, вообще ничего о схеме не знает. Он превращает вызов метода в запрос к базе, и как результат вызова метода возвращает результат запроса.
Что лучше подходит для вашего проекта? Смотрите сами:
– Если у вас много простых объектов без сложных связей друг с другом – Hibernate. – Если у вас сложные запросы к базе на агрегацию данных – MyBatis. – Если вы готовы поручить фреймворку создавать и обновлять для вас схему – Hibernate. – Если у вас работа с хранимыми процедурами – MyBatis. – Если вы не хотите писать запросы сами, и работать с JPQL – HIbernate. – Если вы хотите писать свой ORM (а его так или иначе придётся писать) – MyBatis.
Можно попробовать использовать оба фреймворка в одном проекте. Но мы такого на практике не встречали. Поэтому рано или поздно Java-разработчик встаёт перед вопросом: Hibernate или MyBatis?
А что думаете вы? Напишите в комментариях!