Я не использовал Mybatis много раньше, я знаю, что это такая структура базы данных ORM, как Hibernate. Поскольку мастерство использования увеличения я обнаружил, что он сильно отличается от Hibernate. Заинтересованные друзья могут узнать это через эту статью.
Воспользовавшись в эти выходные, я потратил время, чтобы разобраться с некоторыми часто используемыми технологиями, и редактор время от времени будет обновлять контент.
Во -первых, давайте кратко представим концепции двух:
Hibernate: Hibernate является наиболее популярной структурой ORM в настоящее время и обеспечивает относительно полную инкапсуляцию структуры базы данных.
Mybatis: Mybatis также является очень популярной структурой ORM, с основным фокусом на отношениях картирования между Pojo и SQL.
Во -вторых, давайте поговорим о различиях между ними в нескольких аспектах:
1. Самая большая разница между ними:
Для простой логики, Hibernate и Mybatis имеют соответствующие инструменты генерации кода, которые могут генерировать простые и основные методы слоя DAO.
Для передовых запросов Mybatis требует ручного написания заявлений SQL и ResultMap. Hibernate имеет хороший механизм картирования, поэтому разработчикам не нужно заботиться о генерации SQL и картировании результатов, и могут больше сосредоточиться на бизнес -процессах.
2. Сравнение сложности развития
Развитие Hibernate сложнее, чем Mybatis. Главным образом потому, что Hibernate сложный и большой, и имеет длинный цикл обучения.
Mybatis относительно прост, и Mybatis в основном полагается на написание SQL, заставляя разработчиков более знакомыми.
3. Сравнение написания SQL
SQL Mybatis написан вручную, поэтому вы можете указать поля для запроса по мере необходимости. Тем не менее, нет собственной статистики журнала, поэтому вам нужно использовать log4j для записи журналов.
Hibernate также может написать сам SQL, чтобы указать поля, которые необходимо запрашивать, но это разрушает простоту развития спящих. Тем не менее, Hibernate имеет свою собственную статистику журнала.
4. Сравнение масштабируемости базы данных
Поскольку весь SQL написан в базе данных, Mybatis имеет плохую масштабируемость и миграцию.
Конкретная связь между Hibernate и базой данных находится в XML, поэтому HQL не очень обеспокоен тем, какая база данных он использует.
5. Сравнение механизмов кэширования
Сходства: в дополнение к использованию механизма кэширования системы по умолчанию, кэш Hibernate и Mybatis второго уровня может полностью перезаписать поведение кэша, внедрив свой собственный кэш или создавая адаптеры для других сторонних решений кэша.
Различия: конфигурация вторичного кэша Hibernate подробно настроена в файле конфигурации, сгенерированного SessionFactory, а затем настраивается в конкретной карте таблицы-объекта, на которую настроен кэш.
Конфигурация вторичного кэша Mybatis подробно настроена на каждой конкретной карте таблицы-объекта, так что для различных таблиц можно настроить различные механизмы кэша. И Mybatis может поделиться той же конфигурацией и экземпляром кэша в пространстве имен, который реализован через Cache-Ref.
Сравнение двух: поскольку Hibernate имеет хороший механизм управления для объектов запроса, пользователям не нужно заботиться о SQL. Поэтому, если грязные данные появляются при использовании вторичного кэша, система сообщит об ошибке и приглашении.
В связи с этим Mybatis требует особого ухода при использовании Cache L2. Если объем операций обновления данных не может быть полностью определен, избегайте слепого использования кэша. В противном случае появление грязных данных принесет большую скрытую опасность для нормальной работы системы.
6. Резюме:
Mybatis: маленький, удобный, эффективный, простой, прямой, полуавтоматический
Hibernate: мощный, удобный, эффективный, сложный, полный автоматический
Hibernate и Mybatis могут генерировать SessionFactory из файла конфигурации XML через SessionFactoryBuider, а затем генерировать сеанс из SessionFactory и, наконец, выполнять транзакции и операторы SQL.
Преимущество Mybatis заключается в том, что Mybatis может выполнять более подробную оптимизацию SQL, уменьшить поля запроса и быть легко освоить.
Преимущество Hibernate заключается в том, что разработка слоя DAO проще, чем Mybatis, что требует поддержания SQL и картирования результатов. Портативность базы данных очень хорошая, переносимость базы данных Mybatis не очень хорошая, а различные базы данных должны писать разные SQL. Существует лучший механизм кэширования 2-го уровня, и может использоваться стороннее кэширование. Сам Mybatis обеспечивает плохие механизмы кэширования.
mybatis:
1. Это просто начать, изучать и использовать, и обеспечивает автоматическую функцию привязки объекта для запросов базы данных и продолжает хороший опыт использования SQL. Он прекрасно подходит для проектов, которые не имеют таких высоких требований к объектной модели.
2. Можно выполнить более подробную оптимизация SQL, что может уменьшить поля запроса.
3. Недостатком является то, что структура все еще относительно проста, а функции все еще отсутствуют. Хотя код привязки данных упрощен, весь запрос базы данных фактически должен быть написан самостоятельно, рабочая нагрузка относительно большая, и нелегко адаптироваться к быстрому изменению базы данных.
4. Механизм вторичного кэширования плохой.
С Worderate:
1. Мощные функции, хорошая база данных и нерелевантность и сильные возможности картирования O/R. Если вы довольно опытны в спячке и правильно инкапсулированном Hibernate, то весь код слоя Persistence вашего проекта будет довольно простым, будет очень мало кода для написания, скорость разработки очень быстрая, и это очень круто.
2. Существует лучший механизм вторичного кэширования, и может использоваться стороннее кэширование.
3. Недостатком является то, что порог обучения не является низким, и вы должны быть опытными в нем. Как разработать картирование O/R, как сбалансировать производительность и объектную модель, и как хорошо использовать Hibernate, требует вашего опыта и способности быть сильным.
Позвольте мне дать вам яркую метафору:
Mybatis: Механические инструменты просты в использовании и могут использоваться как можно скорее, но работа еще должна быть выполнена самостоятельно, но инструменты живы, так как их сделать, зависит от меня.
Hibernate: Intelligent Robot, но это очень дорого развить его (обучение, мастерство), и работа может избавиться от него, но только то, что он может сделать.