Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Hibernate ORM (или просто Hibernate ) - это инструмент объектно-реляционного сопоставления для языка программирования Java . Он обеспечивает основу для сопоставления объектно-ориентированной модели предметной области с реляционной базой данных . Hibernate решает проблемы несоответствия объектно-реляционного импеданса , заменяя прямой постоянный доступ к базе данных высокоуровневыми функциями обработки объектов.

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

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

Отображение [ править ]

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

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

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

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

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

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

Hibernate Query Language (HQL) [ править ]

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

Настойчивость [ править ]

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

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

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

Интеграция [ править ]

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

Сущности и компоненты [ править ]

В спящем жаргоне , субъект является автономным объектом в в Hibernate постоянного механизма , который можно манипулировать независимо от других объектов. Напротив, компонент подчиняется объекту, и им можно управлять только в отношении этого объекта. Например, объект «Альбом» может представлять сущность; но объект Tracks, связанный с объектами Album, будет представлять компонент сущности Album, если предполагается, что треки можно сохранять или извлекать из базы данных только через объект Album. В отличие от 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. Сюда входят новые функции, такие как поддержка мультитенантности , введение 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 interface [ править ]

Интерфейс 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]
  • Спящий режим ОГМ (Объект / Сетка Mapper) - это расширение для хранения данных в NoSQL хранилище [21]
  • Hibernate Shards - горизонтальное разбиение на несколько реляционных баз данных [22]
    • Хотя Hibernate Shards не совместим с выпусками Hibernate Core 4.x, некоторые возможности Shards были интегрированы в Core в выпуске 4.0.
  • Hibernate Search - интегрирует функциональность полнотекстовой библиотеки Apache Lucene в модели Hibernate и JPA [23]
  • Hibernate Tools - набор инструментов, реализованный в виде набора плагинов Eclipse и задач Ant, включенных в JBoss Developer Studio [24]
  • Спящий режим проверки - эталонная реализация из JSR 303 Bean Validation [25]
  • Генератор метамодели Hibernate - процессор аннотаций, который создает классы статической метамодели JSR 317 Java Persistence API (JPA 2) с использованием подключаемого API обработки аннотаций JSR 269 [26]
  • NHibernate - решение объектно-реляционного сопоставления для .NET Framework [27]

См. Также [ править ]

  • Список программного обеспечения JBoss
  • Список программ объектно-реляционного сопоставления
  • NHibernate
  • Сериализация
  • Объект данных службы
  • MySQL
  • Apache Cassandra
  • Spring Framework
  • MyBatis

Ссылки [ править ]

  1. ^ "Hibernate ORM 5.4.27.Final выпущен" . Проверено 21 января 2021 года .
  2. ^ "Выпущен Hibernate ORM 6.0.0.Alpha6" . Проверено 21 января 2021 года .
  3. ^ «Равно и HashCode» . Сообщество JBoss.
  4. ^ «Руководство пользователя Hibernate: 2.5.5. Укажите атрибут идентификатора» . Сообщество JBoss.
  5. ^ «Hibernate 3.5.0-Final release» . В связи с...
  6. ^ "Выпуски - Hibernate ORM" . hibernate.org .
  7. ^ "Архивная копия" . Архивировано из оригинала на 2013-01-29 . Проверено 13 декабря 2012 .CS1 maint: заархивированная копия как заголовок ( ссылка )
  8. ^ "Архивная копия" . Архивировано из оригинала на 2014-12-05 . Проверено 27 ноября 2014 .CS1 maint: заархивированная копия как заголовок ( ссылка )
  9. ^ "Архивная копия" . Архивировано из оригинала на 2014-12-05 . Проверено 27 ноября 2014 .CS1 maint: заархивированная копия как заголовок ( ссылка )
  10. ^ "Выпуски - Hibernate ORM" . hibernate.org .
  11. ^ "Hibernate JavaDocs" . docs.jboss.org .
  12. ^ «Сессия (Hibernate JavaDocs)» . docs.jboss.org .
  13. ^ «Hibernate: Relational Persistence for 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 . Проверено 26 апреля 2011 .

Библиография [ править ]

  • Линвуд, Ананда; Минтер, Дэйв (28 мая 2010 г.), Начало гибернации (второе изд.), Apress , стр. 400, ISBN 978-1-4302-2850-9, заархивировано из оригинала 5 декабря 2010 г. , получено 4 сентября 2010 г.
  • Бернар, Эммануэль; Гриффин, Джон (30 декабря 2008 г.), Hibernate Search in Action (первое издание), Manning Publications , стр. 488, ISBN 978-1-933988-64-1
  • Эллиотт, Джеймс; О'Брайен, Тим (22 апреля 2008 г.), Использование гибернации (первое издание), O'Reilly Media , стр. 380, ISBN 978-0-596-51772-4
  • Кинг, Гэвин; Кристиан, Бауэр (24 ноября 2006 г.), Сохранение Java с Hibernate (второе издание), Manning Publications , стр. 880, ISBN 1-932394-88-5
  • Линвуд, Джефф; Минтер, Дэйв (25 августа 2006 г.), Начало гибернации: от новичка к профессионалу (третье издание), Apress , стр. 360, ISBN 1-59059-693-5, заархивировано из оригинала 24 декабря 2010 г. , извлечено 24 апреля 2009 г.
  • Минтер, Дэйв; Линвуд, Джефф (27 июня 2005 г.), Pro Hibernate 3 (первое издание), Apress , стр.  242 , ISBN 1-59059-511-4
  • Айверсон, Уилл (2 декабря 2004 г.), Hibernate: Руководство разработчика J2EE (первое издание), Addison Wesley , стр.  384 , ISBN 0-321-26819-9
  • Пью, Эрик; Градеки, Джозеф Д. (8 октября 2004 г.), Professional Hibernate (от программиста до программиста) (первое издание), Wrox , p. 456, ISBN 0-7645-7677-1
  • Кинг, Гэвин; Кристиан, Бауэр (1 августа 2004 г.), Hibernate In Action (второе изд.), Manning Publications , стр.  400 , ISBN 1-932394-15-X
  • Джеймс, Эллиотт (10 мая 2004 г.), Hibernate: A Developer's Notebook (первое издание), O'Reilly Media , стр.  190 , ISBN 0-596-00696-9

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • Гибернация на GitHub