Hibernate (фреймворк) - Hibernate (framework)
Разработчики) | Красная шляпа |
---|---|
изначальный выпуск | 23 мая 2001 г. |
Стабильный выпуск | 5.4.23.Финал / 3 ноября 2020 г.[1] |
Предварительный выпуск | 6.0.0.Alpha5 / 24 апреля 2020[2] |
Репозиторий | |
Написано в | Ява |
Операционная система | Кроссплатформенность (JVM ) |
Платформа | Виртуальная машина Java |
Тип | Объектно-реляционное отображение |
Лицензия | Стандартная общественная лицензия ограниченного применения GNU |
Интернет сайт | впадать в спячку |
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]
Смотрите также
- Список программного обеспечения JBoss
- Список программ объектно-реляционного сопоставления
- NHibernate
- Сериализация
- Объект данных службы
- MySQL
- Apache Cassandra
- Spring Framework
- MyBatis
Рекомендации
- ^ "Выпуск: Hibernate ORM 5.4.23.Final". Получено 14 ноября 2020.
- ^ "Выпуск 6.0.0.Alpha5". Получено 24 апреля 2020.
- ^ «Равно и хэш-код». Сообщество JBoss.
- ^ «Руководство пользователя Hibernate: 2.5.5. Укажите атрибут идентификатора». Сообщество JBoss.
- ^ «Hibernate 3.5.0-Финальный выпуск». В связи с...
- ^ «Релизы - Hibernate ORM». hibernate.org.
- ^ «Архивная копия». Архивировано из оригинал в 2013-01-29. Получено 2012-12-13.CS1 maint: заархивированная копия как заголовок (связь)
- ^ «Архивная копия». Архивировано из оригинал на 2014-12-05. Получено 2014-11-27.CS1 maint: заархивированная копия как заголовок (связь)
- ^ «Архивная копия». Архивировано из оригинал на 2014-12-05. Получено 2014-11-27.CS1 maint: заархивированная копия как заголовок (связь)
- ^ «Релизы - Hibernate ORM». hibernate.org.
- ^ "Гибернация JavaDocs". docs.jboss.org.
- ^ «Сессия (Hibernate JavaDocs)». docs.jboss.org.
- ^ «Гибернация: реляционное постоянство для Java и .NET». Сообщество JBoss.
- ^ «Выпуск Hibernate ORM 4.1.0». Сообщество JBoss.
- ^ «HIBERNATE - Relational Persistence for Idiomatic Java». Сообщество JBoss.
- ^ "Больше нет модуля hibernate-annotations". Сообщество JBoss.
- ^ "Аннотации гибернации". Сообщество JBoss.
- ^ "hibernate-entitymanager объединен с hibernate-core". Сообщество JBoss.
- ^ "Hibernate EntityManager". Сообщество JBoss.
- ^ «Hibernate Envers - простой аудит сущностей». Сообщество JBoss.
- ^ "Гибернация OGM". Сообщество JBoss.
- ^ "Осколки гибернации". Сообщество JBoss.
- ^ "Поиск в спящем режиме". Сообщество JBoss.
- ^ «Инструменты гибернации для Eclipse и Ant». Сообщество JBoss.
- ^ «Валидатор гибернации». Сообщество JBoss.
- ^ "Генератор метамодели гибернации". Сообщество JBoss.
- ^ «NHibernate». NHibernate Forge. Архивировано из оригинал на 2012-07-12. Получено 2011-04-26.
Библиография
- Линвуд, Ананда; Минтер, Дэйв (28 мая 2010 г.), Начало гибернации (Второе изд.), Apress, п. 400, ISBN 978-1-4302-2850-9, заархивировано из оригинал 5 декабря 2010 г., получено 4 сентября, 2010
- Бернар, Эммануэль; Гриффин, Джон (30 декабря 2008 г.), Поиск в спящем режиме в действии (Первое изд.), Публикации Мэннинга, п. 488, г. ISBN 978-1-933988-64-1
- Эллиотт, Джеймс; О'Брайен, Тим (22 апреля 2008 г.), Использование гибернации (Первое изд.), O'Reilly Media, п. 380, ISBN 978-0-596-51772-4
- Кинг, Гэвин; Кристиан, Бауэр (24 ноября 2006 г.), Сохранение Java с Hibernate (Второе изд.), Публикации Мэннинга, п. 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 (Первое изд.), Эддисон Уэсли, стр.384, ISBN 0-321-26819-9
- Пью, Эрик; Градецкий, Джозеф Д. (8 октября 2004 г.), Professional Hibernate (от программиста до программиста) (Первое изд.), Wrox, п. 456, г. ISBN 0-7645-7677-1
- Кинг, Гэвин; Кристиан, Бауэр (1 августа 2004 г.), Гибернация в действии (Второе изд.), Публикации Мэннинга, стр.400, ISBN 1-932394-15-X
- Джеймс, Эллиотт (10 мая 2004 г.), Hibernate: блокнот разработчика (Первое изд.), O'Reilly Media, стр.190, ISBN 0-596-00696-9