Jump to content

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

(Перенаправлено из Hibernate (Java) )
Спящий режим ORM
Разработчик(и) Красная шляпа
Первоначальный выпуск 23 мая 2001 г .; 23 года назад ( 23 мая 2001 )
Стабильная версия
6.4.4.Финал / 8 февраля 2024 г .; 5 месяцев назад ( 08.02.2024 ) [1]
Репозиторий
Написано в Ява
Операционная система Кроссплатформенность ( JVM )
Платформа Виртуальная машина Java
Тип Объектно-реляционное отображение
Лицензия Меньшая стандартная общественная лицензия GNU
Веб-сайт впадать в спячку .org /орм /

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 поддерживает сопоставление пользовательских типов значений. Это делает возможными следующие сценарии:

  • Переопределение типа SQL по умолчанию при сопоставлении столбца со свойством.
  • Сопоставление Java Enums со столбцами, как если бы они были обычными свойствами. [2] : 89–90 
  • Сопоставление одного свойства с несколькими столбцами.

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

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

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

[ редактировать ]

Hibernate предоставляет язык на основе SQL , называемый Hibernate Query Language (HQL), для написания SQL-подобных запросов к объектам данных Hibernate. Критериальные запросы предоставляются как объектно-ориентированная альтернатива HQL. Запрос критериев используется для изменения объектов и предоставления ограничений для объектов. [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 и 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. Ключевые функции включали новую архитектуру перехватчика/обратного вызова, пользовательские фильтры и аннотации Java JDK 5.0 (функция метаданных ). По состоянию на 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

[ редактировать ]

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

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

[ редактировать ]

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

А Session предназначен для длительности до тех пор, пока логическая транзакция в базе данных. Благодаря последней особенности, Session Ожидается, что реализации не будут потокобезопасными и не будут использоваться несколькими клиентами.

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

[ редактировать ]

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

См. также

[ редактировать ]
  1. ^ «Hibernate Hibernate ORM 6.4.4.Выпущена финальная версия» . Проверено 8 февраля 2024 г.
  2. ^ Перейти обратно: а б с д и ж г час я дж Бауэр, Кинг и Грегори 2015 .
  3. ^ «Равно и Хэш-код» . Сообщество 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. ^ «Hibernate: реляционное сохранение для 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. ^ «Инструменты Hibernate для Eclipse и Ant» . Сообщество JBoss.
  26. ^ «Валидатор спящего режима» . Сообщество JBoss.
  27. ^ «Генератор метамодели Hibernate» . Сообщество JBoss.
  28. ^ «Нгибернация» . НХибернейт Фордж. Архивировано из оригинала 12 июля 2012 г. Проверено 26 апреля 2011 г.

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

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 5724653e98e621a5d538ed3f8e1bc9de__1712233740
URL1:https://arc.ask3.ru/arc/aa/57/de/5724653e98e621a5d538ed3f8e1bc9de.html
Заголовок, (Title) документа по адресу, URL1:
Hibernate (framework) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)