Разница между JPA и Hibernate

Разница между JPA и Hibernate
Разница между JPA и Hibernate

Видео: Разница между JPA и Hibernate

Видео: Разница между JPA и Hibernate
Видео: В чем разница между JPA и Hibernate? JDBC и Hibernate. Урок 4 2024, Июль
Anonim

JPA против Hibernate

Почти всем корпоративным приложениям требуется регулярный доступ к реляционным базам данных. Но проблемой, с которой столкнулись более ранние технологии (такие как JDBC), было несоответствие импеданса (разница между объектно-ориентированными и реляционными технологиями). Решение этой проблемы было представлено путем введения абстрактного уровня, называемого уровнем сохранения, который инкапсулирует доступ к базе данных из бизнес-логики. JPA (Java Persistence API) - это платформа, предназначенная для управления реляционными данными (с использованием уровня сохраняемости) в приложениях Java. Существует множество реализаций JPA от поставщиков, используемых в сообществе разработчиков Java. Hibernate - самая популярная такая реализация JPA (DataNucleus, EclipseLink и OpenJPA - некоторые другие). Новейшая версия JPA (JPA 2.0) полностью поддерживается Hibernate 3.5, выпущенным в марте 2010 г.

Что такое JPA?

JPA - это фреймворк для управления реляционными данными для Java. Его можно использовать с приложениями, использующими JSE (платформа Java, стандартная версия) или JEE (платформа Java, версия Enterprise). Его текущая версия - JPA 2.0, выпущенная 10 декабря 2009 года. JPA заменила EJB 2.0 и EJB 1.1 entity-бины (которые подверглись резкой критике со стороны сообщества разработчиков Java за то, что они тяжеловесны). Хотя компоненты управления данными (в EJB) предоставляли объекты персистентности, многие разработчики привыкли вместо этого использовать относительно легкие объекты, предлагаемые DAO (объекты доступа к данным) и другими подобными платформами. В результате был представлен JPA, в котором были реализованы многие полезные функции фреймворков, упомянутых выше.

Persistence, как описано в JPA, распространяется на API (определенный в javax.постоянство), JPQL (платформа Java, Enterprise Edition) и метаданные, необходимые для реляционных объектов. Состояние объекта сохраняемости обычно сохраняется в таблице. Экземпляры объекта соответствуют строкам таблицы реляционной базы данных. Метаданные используются для выражения отношений между сущностями. Аннотации или отдельные файлы дескрипторов XML (развертываемые вместе с приложением) используются для указания метаданных в классах сущностей. JPQL, аналогичный SQL-запросам, используется для запроса сохраненных сущностей.

Что такое Hibernate?

Hibernate - это фреймворк, который можно использовать для объектно-реляционного сопоставления, предназначенного для языка программирования Java. В частности, это библиотека ORM (объектно-реляционное сопоставление), которую можно использовать для сопоставления объектно-реляционной модели с обычной реляционной моделью. Проще говоря, он создает сопоставление между классами Java и таблицами в реляционных базах данных, а также между типами данных Java и SQL. Спящий режим также можно использовать для запроса и извлечения данных путем создания вызовов SQL. Таким образом, программист освобождается от ручной обработки наборов результатов и преобразования объектов. Hibernate выпущен как бесплатный фреймворк с открытым исходным кодом, распространяемый по лицензии GNU. Реализация JPA API предоставляется в Hibernate 3.2 и более поздних версиях. Гэвин Кинг - основатель Hibernate.

В чем разница между JPA и Hibernate?

JPA - это фреймворк для управления реляционными данными в приложениях Java, а Hibernate - это конкретная реализация JPA (поэтому в идеале JPA и Hibernate нельзя сравнивать напрямую). Другими словами, Hibernate - один из самых популярных фреймворков, реализующих JPA. Hibernate реализует JPA через библиотеки Hibernate Annotation и EntityManager, которые реализованы поверх библиотек Hibernate Core. И EntityManager, и Annotations следуют жизненному циклу Hibernate. Новейшая версия JPA (JPA 2.0) полностью поддерживается Hibernate 3.5. Преимущество JPA заключается в стандартизированном интерфейсе, поэтому сообщество разработчиков будет лучше знакомо с ним, чем с Hibernate. С другой стороны, собственные API-интерфейсы Hibernate можно считать более мощными, поскольку их функции являются расширенным набором функций JPA.

Рекомендуемые: