Hibernate (фреймворк) - Hibernate (framework)

Hibernate ORM
Логотип Hibernate a.png
Разработчики)Красная шляпа
изначальный выпуск23 мая 2001 г.; 19 лет назад (2001-05-23)
Стабильный выпуск
5.4.23.Финал / 3 ноября 2020 г.; 30 дней назад (2020-11-03)[1]
Предварительный выпуск
6.0.0.Alpha5 / 24 апреля 2020; 7 месяцев назад (2020-04-24)[2]
Репозиторий Отредактируйте это в Викиданных
Написано вЯва
Операционная системаКроссплатформенность (JVM )
ПлатформаВиртуальная машина Java
ТипОбъектно-реляционное отображение
ЛицензияСтандартная общественная лицензия ограниченного применения GNU
Интернет сайтвпадать в спячку.org

Hibernate ORM (или просто Спящий режим) является объектно-реляционное отображение инструмент для Ява язык программирования. Он обеспечивает рамки для отображения объектно-ориентированный модель предметной области в реляционная база данных. Ручки гибернации объектно-относительное рассогласование импеданса проблемы по замене прямых, настойчивый доступ к базе данных с помощью высокоуровневых функций обработки объектов.

Hibernate - это бесплатно программное обеспечение который распространяется под Стандартная общественная лицензия ограниченного применения GNU 2.1.

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

Картография

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

Есть возможность организовать один ко многим и многие-ко-многим отношения между классами. Помимо управления ассоциациями между объектами, Hibernate также может управлять рефлексивный ассоциации, в которых объект имеет отношение "один ко многим" с другими экземплярами учебный класс тип.

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

  • Переопределение типа SQL по умолчанию при сопоставлении столбца со свойством.
  • Отображение Java Перечисления столбцам, как если бы они были обычными свойствами.
  • Сопоставление одного свойства с несколькими столбцами.

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

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

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

Hibernate предоставляет SQL вдохновленный язык называется Язык запросов Hibernate (HQL) для написания SQL-подобных запросов к объектам данных Hibernate. Критерии запросов предоставляются как объектно-ориентированный альтернатива HQL. Criteria Query используется для изменения объектов и предоставления ограничений для объектов. HQL (Hibernate Query Language) - объектно-ориентированная версия SQL. Он генерирует запросы, не зависящие от базы данных, поэтому нет необходимости писать запросы, специфичные для базы данных. Без этой возможности изменение базы данных потребовало бы изменения и отдельных запросов SQL, что привело бы к проблемам с обслуживанием.

Упорство

Hibernate обеспечивает прозрачное постоянство для Обычные старые объекты Java (POJO). Единственное строгое требование для постоянного класса - это конструктор без аргументов хотя не обязательно общественный. Правильное поведение в некоторых приложениях также требует особого внимания к равно () и хэш-код() методы в классах объектов.[3] Hibernate рекомендует предоставить атрибут идентификатора, и это планируется сделать обязательным требованием в будущих версиях.[4]

Коллекции объектов данных обычно хранятся в классах коллекций Java, таких как реализации Набор и Список интерфейсы. Дженерики Java, представленные в Java 5, также поддерживаются. Hibernate можно настроить на ленивая загрузка связанные коллекции. Ленивая загрузка по умолчанию используется в Hibernate 3.

Связанные объекты можно настроить на каскад операции от одного объекта к другому. Например, родитель Альбом объект класса можно настроить для каскадного спасти и Удалить операции своему потомку Отслеживать объекты класса.

Интеграция

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

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

В спящем режиме жаргон, юридическое лицо является автономным объектом в Hibernate настойчивый механизм, которым можно управлять независимо от других объектов. Напротив, компонент подчиняется объекту и может управляться только в отношении этого объекта. Например, объект «Альбом» может представлять сущность; но объект Tracks, связанный с объектами Album, будет представлять компонент объекта Album, если предполагается, что треки можно сохранять или извлекать из базы данных только через объект Album. В отличие от J2EE, Hibernate может переключать базы данных.

История

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

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

JBoss, Inc. (теперь часть Красная шляпа ) позже нанял ведущих разработчиков 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. Это включает новые функции, такие как мульти аренды поддержка, введение 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-space, поддержку 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]

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

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

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

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

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

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

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

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

  • Hibernate ORM (известный как Hibernate Core до выпуска 4.1[14]) - базовое программное обеспечение для решения объектно-реляционного сопоставления для сред Java[15]
  • Аннотации Hibernate (объединены в Hibernate Core / ORM с версии 3.6[16]) - метаданные, которые управляют преобразованием данных между объектно-ориентированной моделью и моделью реляционной базы данных в соответствии с JSR 317 Java Persistence API (JPA 2)[17]
  • Hibernate EntityManager (объединен с Hibernate Core / ORM с версии 5.2[18]) - вместе с Hibernate Annotations, оболочкой, которая реализует JSR 317 Java Persistence API (JPA 2) постоянное решение[19]
  • Hibernate Envers - аудит и управление версиями постоянных классов[20]
  • Hibernate OGM (Object / Grid Mapper) - расширение для хранения данных в NoSQL хранить[21]
  • Осколки гибернации - горизонтальное разделение для нескольких реляционных баз данных[22]
    • Хотя Hibernate Shards не совместим с выпусками Hibernate Core 4.x, некоторые возможности Shards были интегрированы в Core в выпуске 4.0.
  • Hibernate Search - интегрирует функциональность полнотекстовой библиотеки из Apache Lucene в модели Hibernate и JPA[23]
  • Hibernate Tools - набор инструментов, реализованный в виде набора Затмение плагины и Муравей задачи включены в Студия разработчика JBoss[24]
  • Валидатор гибернации - эталонная реализация JSR 303 Бин-валидация[25]
  • Hibernate Metamodel Generator - процессор аннотаций, который создает JSR 317 Java Persistence API (JPA 2) классы статической метамодели с использованием JSR 269 Подключаемый API обработки аннотаций[26]
  • NHibernate - решение объектно-реляционного отображения для .NET Framework[27]

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

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

  1. ^ "Выпуск: Hibernate ORM 5.4.23.Final". Получено 14 ноября 2020.
  2. ^ "Выпуск 6.0.0.Alpha5". Получено 24 апреля 2020.
  3. ^ «Равно и хэш-код». Сообщество JBoss.
  4. ^ «Руководство пользователя Hibernate: 2.5.5. Укажите атрибут идентификатора». Сообщество JBoss.
  5. ^ «Hibernate 3.5.0-Финальный выпуск». В связи с...
  6. ^ «Релизы - Hibernate ORM». hibernate.org.
  7. ^ «Архивная копия». Архивировано из оригинал в 2013-01-29. Получено 2012-12-13.CS1 maint: заархивированная копия как заголовок (связь)
  8. ^ «Архивная копия». Архивировано из оригинал на 2014-12-05. Получено 2014-11-27.CS1 maint: заархивированная копия как заголовок (связь)
  9. ^ «Архивная копия». Архивировано из оригинал на 2014-12-05. Получено 2014-11-27.CS1 maint: заархивированная копия как заголовок (связь)
  10. ^ «Релизы - Hibernate ORM». hibernate.org.
  11. ^ "Гибернация JavaDocs". docs.jboss.org.
  12. ^ «Сессия (Hibernate JavaDocs)». docs.jboss.org.
  13. ^ «Гибернация: реляционное постоянство для Java и .NET». Сообщество JBoss.
  14. ^ «Выпуск Hibernate ORM 4.1.0». Сообщество JBoss.
  15. ^ «HIBERNATE - Relational Persistence for Idiomatic Java». Сообщество JBoss.
  16. ^ "Больше нет модуля hibernate-annotations". Сообщество JBoss.
  17. ^ "Аннотации гибернации". Сообщество JBoss.
  18. ^ "hibernate-entitymanager объединен с hibernate-core". Сообщество JBoss.
  19. ^ "Hibernate EntityManager". Сообщество JBoss.
  20. ^ «Hibernate Envers - простой аудит сущностей». Сообщество JBoss.
  21. ^ "Гибернация OGM". Сообщество JBoss.
  22. ^ "Осколки гибернации". Сообщество JBoss.
  23. ^ "Поиск в спящем режиме". Сообщество JBoss.
  24. ^ «Инструменты гибернации для Eclipse и Ant». Сообщество JBoss.
  25. ^ «Валидатор гибернации». Сообщество JBoss.
  26. ^ "Генератор метамодели гибернации". Сообщество JBoss.
  27. ^ «NHibernate». NHibernate Forge. Архивировано из оригинал на 2012-07-12. Получено 2011-04-26.

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

внешняя ссылка