Spring + hibernate против Spring Данные JPA: Разные?
Хотя я не новичок, я пытаюсь изучить фреймворк spring (снова!), чтобы быть уверенным, что я действительно это понимаю. Я получил представление о ядре spring (DI). Теперь я фокусируюсь на слое данных.
Я натолкнулся на термин " Spring и Hibernate". Как я могу понять, это будет означать использование spring Framework с Hibernate в качестве инструмента ORM/JPA.
Теперь я столкнулся с " Spring Data JPA". Я разъяснил SO о spring Data JPA, что это слой абстракции поверх JPA (и под капотом spring Data JPA использует Hibernate или любой другой поставщик JPA).
Теперь эти термины одинаковы? То есть, это " Spring + hibernate", что и " Spring Данные JPA". Если нет, то в чем разница/сходства?
Я действительно запутался в том, что многие термины/утверждения (например, выше) кажутся похожими, но могут быть разными.
Ответы
Ответ 1
Spring -data-jpa, как вы говорите, предлагает больше, чем классическая интеграция Spring -JPA. С интеграцией JPA/Hibernate вы получаете главным образом
- декларативное управление транзакциями с использованием транзакций JPA/Hibernate
- перевод исключений
- JPA EntityManager или Hibernate SessionFactory для инъекций beans
С Spring -data-jpa вы получите все это, плюс (между прочим)
- репозитории только для интерфейса, используя имена методов для автоматического запроса запросов
- аннотация @Query для определения запроса, который должен вернуть метод интерфейса
- автоматическая обработка запрошенных страниц
- базовые классы для стандартных репозиториев crud.
Это просто крошечное введение. Для получения дополнительной информации прочитайте документацию.
Ответ 2
когда вы говорите о spring + hibernate
- Если вы читаете только спящий режим, вы поймете, что он использует сопоставление (в основном конфигурацию для сопоставления pojo с отношениями с базой данных) и конфигурацию (конфигурация, специфичная для базы данных, такой как класс драйвера, url, имя пользователя, пароль, диалект и т.д.).
- Итак, если вы хотите использовать чтение, запись, обновление и т.д., вы должны получить
hibernatesessionfactory
, открыть транзакцию и совершить. Много предварительных и почтовых работ для каждой операции.
- Когда вы интегрируете спящий режим с помощью spring, spring использует эту конфигурацию и сохраняет ее в контексте приложения и предоставляет оболочку
hibernatetemplate
, которая внутренне использует hibernatesessionfactory
. Поэтому при выполнении этих операций вам не нужно заботиться о предварительном и почтовом кодах.
- Он также предоставил кеширование (кеш первого и второго уровня) для повышения производительности.
- А также дайте вам работать с HQL, который не зависит от базы данных. Он использует диалект базы данных для генерации базы данных, специфичной для SQL.
Теперь поговорим о spring + данных jpa
- он поставляется с базовыми интерфейсами репозитория (из spring общих данных, spring jpa)
- Предположим, что вы заинтересованы в выполнении операции crud, просто добавьте
crud repository
, а spring будет внедрять ее реализацию во время выполнения.
- Предположим, вы хотите определить общий метод для своего приложения, вы можете сделать это, создав новый интерфейс репозитория, который расширяет интерфейс
Repository
. И можете использовать это через приложение.
- Он также предоставляет методы запросов, которые позволяют использовать native
sql or jpql.