Знакомство с военным постом, никакого питания, игнор.
Больше отличных статей.
«Микросервисы — это не все, а лишь подмножество определенного домена».
С таким количеством компонентов мониторинга всегда найдется подходящий для вас
«С Нетти, что мы разрабатываем? 》
«Вероятно, это наиболее подходящая спецификация Redis».
«Портрет программиста, десять лет взлетов и падений»
Самая полезная серия:
«Наиболее часто используемый набор навыков «vim» в производственной среде Linux.
«Наиболее часто используемый набор навыков «Sed» в производственной среде Linux.
«Наиболее часто используемый набор навыков «AWK» в производственной среде Linux.
Зная вопрос «Разработка SpringBoot с использованием Mybatis или Spring Data JPA??», я легко на него ответил, и дискуссия была бурной. Я действительно не понимаю, почему spring data jpa выбрала спящий режим в качестве своей реализации, это кумовство «Гэвина Кинга»? Есть причина для слоя DAO, от jdbc до hibernate, от toplink до jdo, и теперь победил MyBatis.
В настоящее время некоторые дерьмовые обучающие компании и некоторые онлайн-курсы, в том числе некоторые иностранные курсы, многие используют jpa, чтобы упростить проект. Но к тому времени, когда компания выяснила, что это совсем не так, в этом разница между теорией и реальностью.
Рискуя быть отруганным, я разобрался. Это не значит, что php — это хорошо, а java — это хорошо.
Совет: при ограниченных силах вы должны сначала изучить MyBatis. Набор jpa прост на первый взгляд.
Вот оригинальный ответ
Если вы прошли через итерации продукта в нескольких компаниях, особенно сложные проекты, вы обнаружите, чтоSpring Data JPA
Как это неприятно. если быть честным,Mybatis
Иногда функций слишком много, а некоторые просто лишние.
jpa
Хотя норма иhibernate
этоORM
Выглядит похоже (не говоря уже об использовании некоторых специальных сцен).
Spring Data JPA — это игрушка, подходящая только для некоторых простых отношений отображения.. Я также должен упомянуть о рекламируемомquerydsl
, я чувствую себя немного претенциозно. Я действительно не хочу учиться чему-то неблагодарному для простого слоя DAO.
List<Person> persons = queryFactory.selectFrom(person)
.where(person.children.size().eq(
JPAExpressions.select(parent.children.size().max())
.from(parent)))
.fetch();
Посмотрите на приведенный выше оператор запроса, он не так хорош, как обычныйSQL
Выражено ясно. Если дело в срочном расследовании, черт...
Хотя jpa имеет много преимуществ, например, она не имеет ничего общего с базовым SQL. Но я чувствую, что Spring Data JPA имеет следующие недостатки:
1. Защитил элегантность SQL и изобрел собственный метод запросов. Этот метод запроса не может охватывать все сценарии SQL.
2. Увеличивает сложность кода и требует больше времени для понимания DAO
3. Операции DAO стали очень разрозненными, разбросанными по множеству java-файлов или по аннотациям (хотя XML тоже поддерживается). Если выполняются некоторые сканирования или оптимизации, стоимость реконструкции велика.
4, не поддерживает сложный SQL, процесс DBA не легко сократить
Однако у Mybatis есть некоторые проблемы, но вы больше похожи на написание точного SQL. Он более легкий, чем Spring Data JPA.
Пока вы отлаживаете SQL в других местах, вам нужно только записать его в файл конфигурации, дать ему имя, и вы можете использовать его, что избавляет от многих процессов преобразования.
Mybatis полностью способен работать со сложным SQL промышленного уровня и даже с хранимыми процедурами (не рекомендуется). Лично я думаю, что Mybatis по-прежнему сложен, и он также добавляет некоторые функции языка программирования, похожие на if else.
Если в вашей компании есть администратор базы данных, вам нельзя возиться с SQL. Mybatis позволяет лучше врезаться в рабочий процесс компании.
Вот и думаю: игрушечные проекты или быстрая разработка, используйте Spring Boot JPA. Вместо этого Mybatis является первым выбором.
некоторые полезные комментарии
Вы сказали, что if else относится к сплайсингу SQL. Это одна из важных функций MyBatis. Ее совсем не сложно освоить, верно?
В последнее время я также исследую уровень сохраняемости. Вы можете в полной мере использовать эту игрушку jpa. Сочетание этих двух - хороший выбор. Jpa выполняет основные операции с одной таблицей, а mybatis выполняет сложные запросы. Эффективность разработки высока, стоимость обслуживания sql снижается, и есть место для оптимизации., конечно, это требует некоторых расширений для spring-data-jpa
Запрос напрямую sql, другой удобный orm
mybatis - это в основном нативный sql, что снижает порог обучения и сопровождения для других разработчиков, которые не изучили jpa, и действительно, jpa написала горшок, и вы на самом деле довольно головная боль...
После интеграции mybatis-plus базовый творог не нужно запутывать.Многие операции над объектом, а затем сохранить его напрямую. Для сложных сценариев и таблиц соединения просто используйте собственный SQL напрямую.Что касается проблем с производительностью, вы можете использовать sqlAdvice для его оптимизации.
шаблон jdbc + генератор кода, проще и эффективнее
Дело в jpa, написании простой операции с базой данных, например операции с одной таблицей, очень полезно. Если это более одной таблицы, то забудьте об этом.
spring boot рекомендует jpa, знаете почему?
native=true Если вы хотите использовать нативный запрос, никто вас не остановит.
Вы, кажется, не очень хорошо знаете hibernate и jpa...
Я не знаю, знаете ли вы взаимосвязь между jpa, hibernate, spring data jpa и querydsl.
Однажды вы узнаете разницу между базой данных и программой.
Еще одним преимуществом jpa является то, что это красивый горшок.
END
Ну-ка, ребята помоложе и понаглее, идите, брызгайте на меня.