Подтвердить что ты не робот

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". Если нет, то в чем разница/сходства?

Я действительно запутался в том, что многие термины/утверждения (например, выше) кажутся похожими, но могут быть разными.

4b9b3361

Ответ 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.