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 . При использовании XML-файла Hibernate может генерировать исходный код скелета для классов персистентности. Это вспомогательный параметр при использовании аннотаций. Hibernate может использовать XML-файл или аннотации Java для поддержки схемы базы данных .

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

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

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

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

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

Hibernate предоставляет язык на основе SQL , называемый Hibernate Query Language (HQL), для написания SQL-подобных запросов к объектам данных Hibernate. Критериальные запросы предоставляются как объектно-ориентированная альтернатива HQL. Запрос критериев используется для изменения объектов и предоставления ограничений для объектов. [2] : 347–349  HQL (язык запросов Hibernate) — это объектно-ориентированная версия 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и объектам deleteдочернего Trackкласса.

Интеграция

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

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

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

История

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

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

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

В 2005 году была выпущена версия Hibernate 3.0. Ключевые функции включали новую архитектуру перехватчика/обратного вызова, определяемые пользователем фильтры и аннотации 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. Он имеет улучшенную загрузку, 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]

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

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

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

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

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

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

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

Программные компоненты

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

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

Рекомендации

  1. ^ «Выпущена финальная версия Hibernate ORM 6.1.4.» . Проверено 11 октября 2022 г.
  2. ^ abcdefghij Бауэр, Кинг и Грегори, 2015.
  3. ^ «Равно и HashCode». Сообщество JBoss.
  4. ^ «Руководство пользователя Hibernate: 2.5.5. Укажите атрибут идентификатора» . Сообщество JBoss.
  5. ^ «Hibernate 3.5.0-Финальная версия» . В связи с...
  6. ^ «Релизы — Hibernate ORM» . hibernate.org .
  7. ^ «Относительно... Выпущена финальная версия Hibernate ORM 4.1.9.» . Архивировано из оригинала 29 января 2013 г. Проверено 13 декабря 2012 г.
  8. ^ «GC: Hibernate-core-4.2.0.Final.jar — исходный код Java-проекта GrepCode» . Архивировано из оригинала 5 декабря 2014 г. Проверено 27 ноября 2014 г.
  9. ^ «GC: Hibernate-core-4.3.0.Final.jar — исходный код Java-проекта GrepCode» . Архивировано из оригинала 5 декабря 2014 г. Проверено 27 ноября 2014 г.
  10. ^ «Релизы — Hibernate ORM» . hibernate.org .
  11. ^ Борьеро, Андреа. «Hibernate ORM 6.1.4.Выпущена финальная версия». В связи с . Проверено 11 октября 2022 г.
  12. ^ "Спящий режим JavaDocs" . docs.jboss.org .
  13. ^ «Сеанс (Hibernate JavaDocs)» . docs.jboss.org .
  14. ^ «Спящий режим: реляционное сохранение для Java и .NET». Сообщество JBoss.
  15. ^ «Выпуск Hibernate ORM 4.1.0» . Сообщество JBoss.
  16. ^ «HIBERNATE — Реляционная устойчивость для идиоматической Java» . Сообщество JBoss.
  17. ^ «Модуля спящих аннотаций больше нет» . Сообщество JBoss.
  18. ^ «Аннотации спящего режима». Сообщество JBoss.
  19. ^ «hibernate-entitymanager объединен с hibernate-core». Сообщество JBoss.
  20. ^ "Спящий EntityManager". Сообщество JBoss.
  21. ^ «Hibernate Envers - простой аудит объектов» . Сообщество JBoss.
  22. ^ "Гибернация OGM" . Сообщество JBoss.
  23. ^ "Осколки гибернации". Сообщество JBoss.
  24. ^ «Поиск в спящем режиме». Сообщество JBoss.
  25. ^ «Инструменты гибернации для Eclipse и Ant» . Сообщество JBoss.
  26. ^ "Валидатор спящего режима" . Сообщество JBoss.
  27. ^ "Генератор метамодели Hibernate" . Сообщество JBoss.
  28. ^ "NHibernate". НХибернейт Фордж. Архивировано из оригинала 12 июля 2012 г. Проверено 26 апреля 2011 г.

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

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