Спящий режим (фреймворк)
![]() | |
Разработчик(и) | Красная шляпа |
---|---|
Первоначальный выпуск | 23 мая 2001 г |
Стабильная версия | 6.4.4.Финал / 8 февраля 2024 г [1] |
Репозиторий | |
Написано в | Ява |
Операционная система | Кроссплатформенность ( JVM ) |
Платформа | Виртуальная машина Java |
Тип | Объектно-реляционное отображение |
Лицензия | Меньшая стандартная общественная лицензия GNU |
Веб-сайт | впадать в спячку |
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 год [update], 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]
- Hibernate ORM (до версии 4.1 известный как Hibernate Core) [15] ) — базовое программное обеспечение для решения объектно-реляционного сопоставления для сред Java. [16]
- Аннотации Hibernate (объединены с Hibernate Core/ORM, начиная с версии 3.6). [17] ) — метаданные, управляющие преобразованием данных между объектно-ориентированной моделью и моделью реляционной базы данных в соответствии с JSR 317 Java Persistence API (JPA 2). [18]
- Hibernate EntityManager (объединен с Hibernate Core/ORM, начиная с версии 5.2). [19] ) — вместе с Hibernate Annotations, оболочкой, реализующей решение для персистентности JSR 317 Java Persistence API (JPA 2). [20]
- Hibernate Envers — аудит и управление версиями постоянных классов. [21]
- Hibernate OGM (Object/Grid Mapper) – расширение для хранения данных в NoSQL . хранилище [22]
- Hibernate Shards – горизонтальное секционирование для нескольких реляционных баз данных [23]
- Хотя Hibernate Shards несовместим с выпусками Hibernate Core 4.x, некоторые возможности Shards были интегрированы в Core в версии 4.0.
- Hibernate Search – объединяет функции полнотекстовой библиотеки Apache Lucene в модели Hibernate и JPA. [24]
- Hibernate Tools — набор инструментов, реализованный в виде набора плагинов Eclipse и задач Ant , включенных в JBoss Developer Studio. [25]
- Hibernate Validator – эталонная реализация JSR 303. проверки компонентов [26] [2] : 49–51
- Генератор метамодели Hibernate — процессор аннотаций, который создает классы статической метамодели JSR 317 Java Persistence API JSR 269. (JPA 2) с использованием подключаемого API обработки аннотаций [27]
- NHibernate — решение объектно-реляционного сопоставления для .NET Framework. [28]
См. также
[ редактировать ]- Список программного обеспечения JBoss
- Список программного обеспечения объектно-реляционного картографирования
- NHibernate
- Сериализация
- Объект сервисных данных
- MySQL
- Апач Кассандра
- Весенняя структура
- МойБатис
Ссылки
[ редактировать ]- ^ «Hibernate Hibernate ORM 6.4.4.Выпущена финальная версия» . Проверено 8 февраля 2024 г.
- ^ Перейти обратно: а б с д и ж г час я дж Бауэр, Кинг и Грегори 2015 .
- ^ «Равно и Хэш-код» . Сообщество JBoss.
- ^ «Руководство пользователя Hibernate: 2.5.5. Укажите атрибут идентификатора» . Сообщество JBoss.
- ^ «Hibernate 3.5.0-Финальная версия» . По отношению к...
- ^ «Релизы — Hibernate ORM» . hibernate.org .
- ^ «В отношении... Hibernate ORM 4.1.9.Окончательный выпуск» . Архивировано из оригинала 29 января 2013 г. Проверено 13 декабря 2012 г.
- ^ «GC: Hibernate-core-4.2.0.Final.jar — исходный код проекта Java GrepCode» . Архивировано из оригинала 5 декабря 2014 г. Проверено 27 ноября 2014 г.
- ^ «GC: Hibernate-core-4.3.0.Final.jar — исходный код проекта Java GrepCode» . Архивировано из оригинала 5 декабря 2014 г. Проверено 27 ноября 2014 г.
- ^ «Релизы — Hibernate ORM» . hibernate.org .
- ^ Борьеро, Андреа. «Выпущена финальная версия Hibernate ORM 6.1.4.» . По отношению к . Проверено 11 октября 2022 г.
- ^ «Спящий режим JavaDocs» . docs.jboss.org .
- ^ «Сеанс (Hibernate JavaDocs)» . docs.jboss.org .
- ^ «Hibernate: реляционное сохранение для Java и .NET» . Сообщество JBoss.
- ^ «Выпуск Hibernate ORM 4.1.0» . Сообщество JBoss.
- ^ «HIBERNATE — Реляционная персистентность для идиоматической Java» . Сообщество JBoss.
- ^ «Больше нет модуля спящих аннотаций» . Сообщество JBoss.
- ^ «Аннотации спящего режима» . Сообщество JBoss.
- ^ «hibernate-entitymanager объединен с hibernate-core» . Сообщество JBoss.
- ^ «Спящий EntityManager» . Сообщество JBoss.
- ^ «Hibernate Envers – простой аудит объектов» . Сообщество JBoss.
- ^ «Гибернация OGM» . Сообщество JBoss.
- ^ «Осколки гибернации» . Сообщество JBoss.
- ^ «Поиск в спящем режиме» . Сообщество JBoss.
- ^ «Инструменты Hibernate для Eclipse и Ant» . Сообщество JBoss.
- ^ «Валидатор спящего режима» . Сообщество JBoss.
- ^ «Генератор метамодели Hibernate» . Сообщество JBoss.
- ^ «Нгибернация» . НХибернейт Фордж. Архивировано из оригинала 12 июля 2012 г. Проверено 26 апреля 2011 г.
Библиография
[ редактировать ]- Линвуд, Ананда; Минтер, Дэйв (28 мая 2010 г.), Начало спящего режима (второе изд.), Apress , стр. 400, ISBN 978-1-4302-2850-9 , архивировано из оригинала 5 декабря 2010 г. , получено 4 сентября 2010 г.
- Бернар, Эммануэль; Гриффин, Джон (30 декабря 2008 г.), Hibernate Search в действии (первое издание), Manning Publications , стр. 488, ISBN 978-1-933988-64-1
- Эллиотт, Джеймс; О'Брайен, Тим (22 апреля 2008 г.), Harnessing Hibernate (первое издание), O'Reilly Media , стр. 380, ISBN 978-0-596-51772-4
- Бауэр, Кристиан; Кинг, Гэвин; Грегори, Гэри (8 ноября 2015 г.). Сохранение Java в Hibernate . Публикации Мэннинга . ISBN 1-61729-045-9 .
- Линвуд, Джефф; Минтер, Дэйв (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 (первое издание), Аддисон Уэсли , стр. 384 , ISBN 0-321-26819-9
- Пью, Эрик; Градецкий, Джозеф Д. (8 октября 2004 г.), Professional Hibernate (от программиста к программисту) (первое издание), Wrox , стр. 456, ISBN 0-7645-7677-1 , заархивировано из оригинала 4 апреля 2009 г. , получено 26 апреля 2009 г.
- Бауэр, Кристиан; Кинг, Гэвин (1 августа 2004 г.), Hibernate In Action (второе изд.), Manning Publications , стр. 400 , ISBN 1-932394-15-Х
- Джеймс, Эллиотт (10 мая 2004 г.), Hibernate: Блокнот разработчика (первое издание), O'Reilly Media , стр. 190 , ISBN 0-596-00696-9