stringtranslate.com

Спящий режим (фреймворк)

Hibernate ORM (или просто Hibernate ) — это объектно-реляционный инструмент отображения [2] : §1.2.2, [12]  для языка программирования Java . Он предоставляет фреймворк для отображения объектно-ориентированной модели домена в реляционную базу данных . Hibernate обрабатывает проблемы несоответствия объектно-реляционного импеданса , заменяя прямые, постоянные доступы к базе данных высокоуровневыми функциями обработки объектов.

Hibernate — это свободное программное обеспечение , распространяемое по лицензии GNU Lesser General Public License 2.1.

Основная функция Hibernate — отображение классов Java в таблицы базы данных и отображение типов данных Java в типы данных SQL . Hibernate также предоставляет возможности запроса и извлечения данных. Он генерирует вызовы SQL и освобождает разработчика от ручной обработки и преобразования объектов набора результатов.

Картографирование

Отображение классов Java в таблицы базы данных реализуется с помощью конфигурации XML- файла или с помощью Java Annotations . При использовании XML-файла Hibernate может генерировать скелет исходного кода для классов сохранения. Это вспомогательно, когда используются аннотации. Hibernate может использовать XML-файл или Java-аннотации для поддержания схемы базы данных .

Предоставляются возможности для организации отношений «один ко многим» и «многие ко многим» между классами. [2] : 140–171  Помимо управления ассоциациями между объектами, Hibernate также может управлять рефлексивными ассоциациями, в которых объект имеет отношение «один ко многим» с другими экземплярами типа класса .

Hibernate поддерживает отображение пользовательских типов значений. Это делает возможными следующие сценарии:

Определение: Объекты в объектно-ориентированном приложении следуют принципам ООП , тогда как объекты в бэкенде следуют принципам нормализации базы данных , что приводит к разным требованиям к представлению. Эта проблема называется « несоответствием объектно-реляционного импеданса ». Отображение — это способ решения проблемы несоответствия объектно-реляционного импеданса.

Сопоставление информирует инструмент ORM о том, какой объект класса Java следует хранить в той или иной таблице базы данных.

Язык запросов Hibernate (HQL)

Hibernate предоставляет вдохновленный SQL язык, называемый Hibernate Query Language (HQL), для написания SQL-подобных запросов к объектам данных Hibernate. Criteria Queries предоставляются как объектно-ориентированная альтернатива HQL. Criteria Query используется для изменения объектов и предоставления ограничений для объектов. [2] : 347–349  HQL (Hibernate Query Language) — это объектно-ориентированная версия SQL. Он генерирует независимые от базы данных запросы, поэтому нет необходимости писать запросы, специфичные для базы данных. Без этой возможности изменение базы данных потребовало бы также изменения отдельных SQL-запросов, что привело бы к проблемам обслуживания.

Упорство

Hibernate обеспечивает прозрачное сохранение для обычных старых объектов Java (POJO). [2] : 37–38  Единственным строгим требованием для постоянного класса является конструктор без аргументов , [2] : 39  хотя и не обязательно public. Правильное поведение в некоторых приложениях также требует особого внимания к методам equals(Object obj)и hashCode() в Objectклассах. [3] Hibernate рекомендует предоставлять атрибут идентификатора, и это планируется сделать обязательным требованием в будущем выпуске. [4]

Коллекции объектов данных обычно хранятся в классах коллекций Java, таких как реализации интерфейсов Setи List . Также поддерживаются дженерики Java , представленные в Java 5. Hibernate можно настроить на ленивую загрузку связанных коллекций. [2] : 289–293  Ленивая загрузка используется по умолчанию в Hibernate 3.

Связанные объекты могут быть настроены на каскадирование операций от одного объекта к другому. Например, Albumобъект родительского класса может быть настроен на каскадирование своих операций saveи к своим объектам дочернего класса.deleteTrack

Интеграция

Hibernate можно использовать как в автономных приложениях Java , так и в приложениях Java EE с использованием сервлетов , сессионных компонентов EJB и компонентов служб JBI . Его также можно включить в качестве функции в другие языки программирования. Например, Adobe интегрировала Hibernate в версию 9 ColdFusion (которая работает на серверах приложений J2EE) с уровнем абстракции новых функций и синтаксиса, добавленных в CFML .

Сущности и компоненты

На жаргоне Hibernate сущность — это автономный объект в постоянном механизме Hibernate, которым можно манипулировать независимо от других объектов. [2] : 62–74  Напротив, компонент подчиняется сущности и может манипулироваться только по отношению к этой сущности. Например, объект Album может представлять сущность; но объект Tracks, связанный с объектами Album, будет представлять компонент сущности Album, если предполагается, что Tracks можно сохранять или извлекать из базы данных только через объект Album. В отличие от J2EE, Hibernate может переключать базы данных.

История

Hibernate был создан в 2001 году Гэвином Кингом с коллегами из Cirrus Technologies в качестве альтернативы использованию компонентов сущностей в стиле EJB2. Первоначальной целью было предложить лучшие возможности сохранения, чем те, которые предлагает EJB2; путем упрощения сложностей и дополнения некоторых недостающих функций.

В начале 2003 года команда разработчиков Hibernate начала выпуск Hibernate2, который предлагал множество существенных улучшений по сравнению с первым выпуском.

Позднее компания JBoss, Inc. (теперь часть Red Hat ) наняла ведущих разработчиков Hibernate для дальнейшего развития своей платформы.

В 2005 году была выпущена версия Hibernate 3.0. Ключевые особенности включали новую архитектуру Interceptor/Callback, определяемые пользователем фильтры и аннотации JDK 5.0 (функция метаданных Java ). По состоянию на 2010 год Hibernate 3 (версия 3.5.0 и выше) был сертифицированной реализацией спецификации Java Persistence API 2.0 через оболочку для модуля Core, которая обеспечивает соответствие стандарту JSR 317. [5]

В декабре 2011 года был выпущен Hibernate Core 4.0.0 Final. Он включает в себя новые функции, такие как поддержка многопользовательской аренды, введение ServiceRegistry (серьезное изменение в том, как Hibernate создает и управляет «сервисами»), улучшенное открытие сеанса из SessionFactory, улучшенная интеграция через org.hibernate.integrator.spi.Integrator и автоматическое обнаружение, поддержка интернационализации , коды сообщений в журнале и большее различие между API, SPI или классами реализации. [6]

В декабре 2012 года был выпущен Hibernate ORM 4.1.9 Final. [7]

В марте 2013 года был выпущен Hibernate ORM 4.2 Final. [8]

В декабре 2013 года был выпущен Hibernate ORM 4.3.0 Final. [9] Он включает Java Persistence API 2.1 .

В сентябре 2015 года вышел Hibernate ORM 5.0.2 Final. Он улучшил bootstrapping, hibernate-java8, hibernate-spatial, поддержку Karaf.

В ноябре 2018 года вышел Hibernate ORM 5.1.17 Final. Это финальный релиз серии 5.1.

В октябре 2018 года вышел Hibernate ORM 5.3 Final. В нем реализовано кэширование наследования Java Persistence API 2.2 .

В декабре 2018 года был выпущен Hibernate ORM 5.4.0 Final. [10]

В октябре 2022 года был выпущен Hibernate ORM 6.1.4 Final. [11]

Интерфейс прикладного программирования

API Hibernate предоставляется в пакете Java org.hibernate . [12]

Интерфейс org.hibernate.SessionFactory

Интерфейс org.hibernate.SessionFactoryявляется собственной эквивалентной версией стандарта JPA EntityManagerFactory. [2] : 26 

Интерфейс org.hibernate.Session

Интерфейс [13]org.hibernate.Session представляет собой сеанс Hibernate, т. е. основную точку манипуляции, выполняемой над сущностями базы данных. Последние действия включают (помимо прочего) управление состоянием сохранения ( транзиентное , сохраняющееся , отсоединенное [ требуется разъяснение ] ) объектов, извлечение сохраняющихся из базы данных и управление разграничением транзакций [ требуется разъяснение ] .

A Sessionпредназначен для длительности логической транзакции в базе данных. Из-за последней особенности Sessionреализации не должны быть потокобезопасными или использоваться несколькими клиентами.

Компоненты программного обеспечения

Программное обеспечение Hibernate включает в себя следующие компоненты: [14]

Смотрите также

Ссылки

  1. ^ "Hibernate Hibernate ORM 6.4.4.Final выпущен" . Получено 8 февраля 2024 г. .
  2. ^ abcdefghij Бауэр, Кинг и Грегори 2015.
  3. ^ "Equals and HashCode". Сообщество JBoss. Архивировано из оригинала 2013-12-16 . Получено 2013-12-16 .
  4. ^ "Руководство пользователя Hibernate: 2.5.5. Предоставление атрибута идентификатора". Сообщество JBoss.
  5. ^ "Hibernate 3.5.0-Final release". В связи с...
  6. ^ "Релизы - Hibernate ORM". hibernate.org .
  7. ^ "In Relation To... Hibernate ORM 4.1.9.Final Released". Архивировано из оригинала 2013-01-29 . Получено 2012-12-13 .
  8. ^ "GC: Hibernate-core-4.2.0.Final.jar - GrepCode Java Project Source". Архивировано из оригинала 2014-12-05 . Получено 2014-11-27 .
  9. ^ "GC: Hibernate-core-4.3.0.Final.jar - GrepCode Java Project Source". Архивировано из оригинала 2014-12-05 . Получено 2014-11-27 .
  10. ^ "Релизы - Hibernate ORM". hibernate.org .
  11. ^ Борьеро, Андреа. "Hibernate ORM 6.1.4.Final выпущен". В связи с . Получено 2022-10-11 .
  12. ^ "Hibernate JavaDocs". docs.jboss.org .
  13. ^ "Сессия (Hibernate JavaDocs)". docs.jboss.org .
  14. ^ "Hibernate: Реляционное сохранение для Java и .NET". Сообщество JBoss.
  15. ^ "Hibernate ORM 4.1.0 Release". Сообщество JBoss.
  16. ^ "HIBERNATE - Реляционное сохранение для идиоматической Java". Сообщество JBoss.
  17. ^ "Больше нет модуля hibernate-annotations". Сообщество JBoss.
  18. ^ "Аннотации Hibernate". Сообщество JBoss.
  19. ^ "hibernate-entitymanager объединен с hibernate-core". Сообщество JBoss.
  20. ^ "Hibernate EntityManager". Сообщество JBoss.
  21. ^ "Hibernate Envers – простой аудит сущностей". Сообщество JBoss.
  22. ^ "Hibernate OGM". Сообщество JBoss.
  23. ^ "Hibernate Shards". Сообщество JBoss.
  24. ^ "Hibernate Search". Сообщество JBoss.
  25. ^ "Инструменты Hibernate для Eclipse и Ant". Сообщество JBoss.
  26. ^ "Hibernate Validator". Сообщество JBoss.
  27. ^ "Hibernate Metamodel Generator". Сообщество JBoss.
  28. ^ "NHibernate". NHibernate Forge. Архивировано из оригинала 2012-07-12 . Получено 2011-04-26 .

Библиография

Внешние ссылки