Я провел некоторые исследования самостоятельно и понял основную концепцию. Но некоторые идеи могут быть получены только через реальный опыт.
Каковы преимущества myBatis, которые делают его полезным для изучения новой платформы?
В каком случае вы бы не использовали его?
orm
database-development
hibernate
Кшитиз Шарма
источник
источник
Ответы:
Подумайте, чего вы пытаетесь достичь. Как правило, модель разделения ответа на командный запрос хорошо работает для сложных доменов.
Причина в том, что вы пытаетесь сделать одну из двух вещей:
Hibernate хорошо работает для случая 1, позволяя вам просто сделать POJO и сохранить / обновить его. Это также делает это быстро, если ваш домен не очень большой.
myBatis отлично подходит для выборочных запросов (случай 2), где вы просто хотите получить ответ. Hibernate попытается загрузить весь граф объектов, и вам нужно будет начать настройку запросов с помощью трюков LazyLoading, чтобы он работал на большом домене. Это важно при выполнении сложных аналитических запросов, которые даже не возвращают объектные объекты. В этом случае Hibernate предлагает только SqlQuery и бобовые трансформеры с огромными типами по умолчанию, такими как BigDecimal, в то время как myBatis может легко отображаться в простой не-сущности POJO.
Эти два случая представляют собой разницу между командами, в которых вы хотите изменить данные домена, и ответами, в которых вы просто хотите получить некоторые данные.
Итак, рассмотрим эти два случая и то, что делает ваше приложение. Если у вас простой домен и вы просто получаете информацию, используйте myBatis. Если у вас сложный домен и сохраняются сущности, используйте Hibernate. Если вы делаете оба, рассмотрите гибридный подход. Это то, что мы используем в нашем проекте, который имеет тысячи объектов, чтобы держать его под контролем. ;)
источник
MyBatis ориентирован на SQL. Это помогает вам вызывать операторы SQL и отображать результаты (таблицы) в деревья объектов.
Основным преимуществом является то, что это не ORM. Он не отображает таблицы на объект, поэтому не страдает несоответствием импеданса orm. Хорошо подходит для сложных или устаревших баз данных или для использования функций БД, таких как хранимые процедуры, представления и т. Д.
Он довольно прост и легок в освоении, поэтому подходит и для команд с низкой квалификацией, потому что в них нет необходимости иметь спящего гуру.
Посмотрите на jpetstore 6 http://mybatis.org/spring/sample.html
источник
Поскольку вопрос относится к моему комментарию , вот что я хотел написать.
Прежде всего, это происходит из контекста вашего исходного вопроса. В других обстоятельствах я мог бы дать другой совет. Дело в том, что я предложил MyBatis:
В одном из прошлых проектов наша команда рассматривала возможность перехода из Hibernate по причинам, которые вы описали. Как и вы, мы собирались перейти на JDBC, но коллеги из другого проекта рекомендовали нам MyBatis. Команда решила попробовать, сохранив JDBC как запасной вариант на случай, если что-то пойдет не так.
В тот момент я ничего не знал о MyBatis, но имел достаточно опыта работы с JDBC, чтобы быть уверенным, что он справится со своей задачей. Несмотря на это, я решительно поддерживал идею попробовать MyBatis, главная причина в том, что, согласно моему прошлому опыту, объем стандартного кода, который мы должны были бы написать с JDBC, был бы просто пугающим.
Во всяком случае, мы попробовали MyBatis, и он работал как рекламируется. Вот почему я написал комментарий, о котором вы спрашиваете.
В случае, если вы ожидаете, что я дам подробный обзор технологии или как-то похвалим ее превосходство - извините, я не могу этого сделать Если бы я мог - я бы уже написал это в отдельном ответе на ваш первоначальный вопрос вместо краткого комментария. Я упомянул, что ничего не знал о MyBatis в то время - ну, я все еще очень мало знаю об этом, извините. Переход из Hibernate был сделан другими членами команды, и это не повлияло на код, над которым я работал. Я вспомнил только ключевые выводы (на основании которых я сделал свой комментарий), а именно: 1) MyBatis решил проблемы, которые у нас были с Hibernate, 2) он не представлял собственных проблем и 3) он позволил нам избежать написания стандартного кода I ожидал в случае, если мы переключимся на JDBC. Вот и все.
источник
Hibernate хорошо известен своей магией , неожиданным поведением и большим обучением. Существуют и другие фреймворки, которые больше ориентированы на простоту и позволят вам контролировать ситуацию.
myBatis - один из них, мой проект MentaBean - другой. Я написал в блоге об этом, что может помочь.
источник
Я использовал Hibernate для проекта загрузки и преобразования данных 5 лет назад, используя Hibernate 3, и я подумал, что это замечательно. Я делаю небольшое приложение для электронной коммерции, пробовал использовать Hibernate 4, и я был очень разочарован. Они удалили инструменты и тесно интегрированы в IDE. Я попробовал MyBatis, и все работало за одну ночь, и я очень рад тому, как легко интегрироваться в приложение. Я думаю, что Hibernate стал слишком раздутым, и я бы использовал EJB 3 вместо Hibernate на этом этапе.
источник