Ответ 1
JPA (Java Persistence API) - это интерфейс, который должен выполнять поставщик устойчивости. Hibernate - одна из таких реализаций JPA.
что такое сходство и разница между jpa и hibernate.
JPA (Java Persistence API) - это интерфейс, который должен выполнять поставщик устойчивости. Hibernate - одна из таких реализаций JPA.
Это введение JSR-000220 Enterprise JavaBeans 3.0 Final Release (постоянство):
Этот документ является спецификацией Java API для управления персистентностью и объектом/ с Java EE и Java SE. Техническая цель этой работы - предоставить объекта/реляционного сопоставления для разработчика приложений Java с использованием модели домена Java для man- возраст реляционной базы данных.
Этот API персистентности вместе с языком запросов и метаданными объекта/реляционного сопоставления, определенными в этом документе, требуется для поддержки в Enterprise JavaBeans 3.0. Он также предназначен для использования автономно с Java SE.
Ведущие эксперты по всему сообществу Java собрались вместе, чтобы построить этот стандарт сохранения Java. Эта работа включает в себя материалы сообществ Hibernate, TopLink и JDO, а также сообщества EJB.
Другими словами, JPA является стандартным стандартным API для сохранения. Hibernate обеспечивает реализацию стандарта (т.е. Он может использоваться как базовый механизм сохранения при использовании JPA).
До JPA Hibernate был своего рода стандартом де-факто для сохранения объектов в Java. Hibernate считается основным вкладчиком JPA, поэтому между ними существует много сходства (я мог бы даже сказать, что между всеми решениями ORM, поскольку концепции ORM являются общими). Однако по различным причинам, политическим или техническим, рабочая группа JPA не могла включить все в первый выпуск JPA, поэтому JPA на самом деле является подмножеством Hibernate (это упрощенный взгляд, но реальность очень близка). Таким образом, спящий режим и другая реализация JPA обеспечивают, таким образом, собственные собственные расширения (что означает нестандартные, но не переносные от одного провайдера к другому) стандарт JPA, который вы можете использовать, или нет.
Как указано в @Pascal Hibernate, существовало до стандарта JPA (теперь JSR 317 JPA 2.0, который Hibernate уже реализовал в 3.5 уже для раннего использования). Таким образом, существуют другие поставщики JPA, например. Oracle TopLink, Apache OpenJPA. Чтобы использовать строго JPA в Hibernate, вы должны использовать EntityManager
как прикрепленный к Session
, который представляет собой концепцию Hibernate, предшествующую JPA. Аналогично, для строгой JPA вы должны использовать EntityManagerFactory
, как показано на SessionFactory
.
EntityManager
и EntityManagerFactory
- это, по сути, тонкие обертки вокруг Session
и SessionFactory
соответственно. Кроме того, ядро /аннотации Hibernate предоставляют расширения спецификации JPA, которые облегчают вашу жизнь. До того, как JPA 2 Hibernate имел API-интерфейс Criteria, который позволил вам программно построить запрос в OO-модуле. JPA 2 теперь делает эту функциональность стандартной - стандарт JPA немного отличается от версии Hibernate, так как использует дженерики. Таким образом, в основном функциональность Hibernate представляет собой надмножество JPA.
Здесь приведен список некоторых различий между темами (выдержки из документации Hibernate)
Entity. Hibernate выходит за рамки спецификации JPA и предоставляет дополнительные конфигурации. Некоторые из них размещены на @org.hibernate.annotations.Entity
id как свойство с использованием типа компонента
Несколько свойств id без типа идентификатора
Несколько свойств id со специальным типом идентификатора
Генератор идентификаторов
Аннотации
дискриминатор
Транзакция
Статическая метамодель