Разработчик (и) | Red Hat |
---|---|
Первоначальный выпуск | 23 мая 2001 г.; 19 лет назад (23.05.2001) |
Стабильный выпуск | 5.4.22.Финал / 30 сентября 2020 г.; 32 дня назад (30.09.2020) |
Предварительный выпуск | 6.0.0.Alpha5 / 24 апреля 2020 г.; 6 месяцев назад (2020-04-24) |
Репозиторий | |
Написано на | Java |
Операционная система | Межплатформенный (JVM ) |
Платформа | Виртуальная машина Java |
Тип | Объектно-реляционное сопоставление |
Лицензия | Стандартная общественная лицензия ограниченного применения GNU |
Веб-сайт | hibernate.org |
Hibernate ORM (или просто Hibernate ) - это инструмент объектно-реляционного сопоставления для Java язык программирования. Он предоставляет структуру для сопоставления объектно-ориентированной модели предметной области с реляционной базой данных. Hibernate обрабатывает несоответствие объектно-реляционного импеданса проблемы с заменой прямых, постоянных обращений к базе данных функциями обработки объектов высокого уровня.
Hibernate - это бесплатное программное обеспечение, которое распространяется в рамках GNU Lesser General Public License 2.1.
Основная функция Hibernate - отображение классов Java в таблицы базы данных и отображение из Jav a для типов данных SQL. Hibernate также предоставляет средства запроса и извлечения данных. Он генерирует вызовы SQL и освобождает разработчика от ручной обработки и преобразования объектов набора результатов.
Отображение классов Java в таблицы базы данных реализуется конфигурацией файла XML или с помощью Java Annotations. При использовании XML-файла Hibernate может сгенерировать скелет исходный код для классов сохраняемости. Это вспомогательное средство при использовании аннотаций. Hibernate может использовать XML-файл или аннотации Java для поддержки схемы базы данных ..
Предоставляются средства для организации один-ко-многим и многие-ко-многим отношения между классами. Помимо управления ассоциациями между объектами, Hibernate может также управлять рефлексивными ассоциациями, в которых объект имеет отношение «один ко многим» с другими экземплярами типа class типа.
Hibernate поддерживает отображение настраиваемых типов значений. Это делает возможными следующие сценарии:
Определение: Объекты в объектно-ориентированном приложении следуют принципам ООП, тогда как объекты в серверной части следуют принципы нормализации базы данных, приводящие к различным требованиям к представлению. Эта проблема называется «несоответствие объектно-реляционного импеданса ». Отображение - это способ решения проблемы несоответствия объектно-реляционного импеданса.
Отображение сообщает инструменту ORM, какой объект класса Java хранить в какой таблице базы данных.
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 ()
в классах объектов. Hibernate рекомендует предоставить атрибут идентификатора, и это планируется сделать обязательным требованием в будущем выпуске.
Коллекции объектов данных обычно хранятся в классах коллекций Java, таких как реализации Set
и Список
интерфейсов. Универсальные шаблоны Java, представленные в Java 5, также поддерживаются. Hibernate можно настроить на отложенную загрузку связанных коллекций. В Hibernate 3 по умолчанию используется отложенная загрузка.
Связанные объекты можно настроить для каскадных операций от одного объекта к другому. Например, родительский объект класса Album
может быть настроен для каскадного выполнения операций save
и delete
с объектами дочернего класса Track
.
Hibernate может использоваться как в автономных приложениях Java, так и в приложениях Java EE с использованием сервлетов, EJB сессионные компоненты и JBI служебные компоненты. Его также можно включить как функцию в другие языки программирования. Например, Adobe интегрировал Hibernate в версию 9 ColdFusion (который работает на серверах приложений J2EE) с уровнем абстракции новых функций и синтаксиса, добавленным в CFML.
В жаргоне Hibernate сущность - это автономный объект в постоянном механизме Hibernate, которым можно управлять независимо от других объектов. Напротив, компонент подчиняется объекту, и им можно управлять только в отношении этого объекта. Например, объект «Альбом» может представлять сущность; но объект Tracks, связанный с объектами Album, будет представлять компонент сущности Album, если предполагается, что треки могут быть сохранены или извлечены из базы данных только через объект Album. В отличие от J2EE, Hibernate может переключать базы данных.
Hibernate был запущен в 2001 году Гэвином Кингом с коллегами из Cirrus Technologies в качестве альтернативы использованию entity-компонентов в стиле EJB2. Первоначальная цель заключалась в том, чтобы предложить лучшие возможности сохранения, чем те, которые предлагает EJB2; за счет упрощения сложностей и дополнения некоторых недостающих функций.
В начале 2003 года группа разработчиков Hibernate начала выпуски Hibernate2, которые предлагали много значительных улучшений по сравнению с первым выпуском.
JBoss, Inc. (теперь часть Red Hat ) позже наняла ведущих разработчиков Hibernate для дальнейшего развития.
В 2005 году была выпущена Hibernate версии 3.0. Ключевые особенности включали новую архитектуру перехватчика / обратного вызова, определяемые пользователем фильтры и JDK 5.0 Annotations (функция Java метаданных ). По состоянию на 2010 год Hibernate 3 (версия 3.5.0 и выше) представлял собой сертифицированную реализацию спецификации Java Persistence API 2.0 через оболочку для модуля Core, которая обеспечивает соответствие стандарту JSR 317.
В декабре 2011 года была выпущена финальная версия Hibernate Core 4.0.0. Сюда входят новые функции, такие как поддержка multi-tenancy, введение ServiceRegistry (значительное изменение в том, как Hibernate создает и управляет «службами»), улучшенное открытие сеанса из SessionFactory, улучшенная интеграция через org.hibernate.integrator. spi.Integrator и автоматическое обнаружение, поддержка интернационализации, коды сообщений в журналах и другие различия между API, SPI или классами реализации.
В декабре 2012 года Hibernate ORM 4.1.9 Final был выпущен.
В марте 2013 года был выпущен Hibernate ORM 4.2 Final.
В декабре 2013 года был выпущен Hibernate ORM 4.3.0 Final. Он включает Java Persistence API 2.1.
В сентябре 2015 года был выпущен Hibernate ORM 5.0.2 Final. Он имеет улучшенную загрузку, hibernate-java8, hibernate-space, поддержку Karaf.
В ноябре 2018 года была выпущена финальная версия Hibernate ORM 5.1.17. Это последний выпуск из серии 5.1.
В октябре 2018 года была выпущена финальная версия Hibernate ORM 5.3. В нем реализовано кэширование наследования Java Persistence API 2.2.
В декабре 2018 года была выпущена Hibernate ORM 5.4.0 Final.
Hibernate API предоставляется в пакете Java org.hibernate.
Интерфейс org.hibernate.Session представляет сеанс Hibernate, т. е. основную точку манипуляций, выполняемых над объектами базы данных. Последние действия включают (среди прочего) управление состоянием сохраняемости (переходный, постоянный, отсоединенный) объектов, выборку сохраняемых из базы данных и управление транзакцией. демаркация.
Сеанс должен длиться столько же, сколько логическая транзакция в базе данных. Из-за последней функции не ожидается, что реализации сеанса будут потокобезопасными или использоваться несколькими клиентами.
Программное обеспечение Hibernate включает в себя следующие компоненты: