Hibernate (framework)

редактировать
Hibernate ORM
Логотип Hibernate a.png
Разработчик (и) 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 и освобождает разработчика от ручной обработки и преобразования объектов набора результатов.

Содержание
  • 1 Отображение
  • 2 Язык запросов Hibernate (HQL)
  • 3 Постоянство
  • 4 Интеграция
  • 5 Сущности и компоненты
  • 6 История
  • 7 Интерфейс прикладного программирования
    • 7.1 интерфейс org.hibernate.SessionFactory
    • 7.2 интерфейс org.hibernate.Session
  • 8 Программные компоненты
  • 9 См. Также
  • 10 Ссылки
  • 11 Библиография
  • 12 Внешние ссылки
Сопоставление

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

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

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

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

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

Отображение сообщает инструменту 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 ()в классах объектов. 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.

Entities и компоненты

В жаргоне 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.SessionFactory interface

org.hibernate.Session interface

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

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

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

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

  • Hibernate ORM (известный как Hibernate Core до выпуска 4.1) - базовое программное обеспечение для решения объектно-реляционного сопоставления для сред Java
  • Аннотации Hibernate (объединены в Hibernate Core / ORM с версии 3.6) - метаданные, которые управляют преобразованием данных между объектно-ориентированной моделью и моделью реляционной базы данных в соответствии с JSR 317 Java Persistence API (JPA 2)
  • Hibernate EntityManager (объединен с Hibernate Core / ORM, начиная с версии 5.2) - вместе с Hibernate Annotations, оболочкой, которая реализует JSR 317 Java Persistence API (JPA 2) решение для сохранения состояния
  • Hibernate Envers - аудит и управление версиями постоянных классов
  • Hibernate OGM (Object / Grid Mapper) - расширение для хранения данных в хранилище NoSQL
  • Hibernate Shards - горизонтальное разбиение для нескольких реляционных баз данных
    • Пока Hibernate Sha rds не совместим с выпусками Hibernate Core 4.x, некоторые возможности Shards были интегрированы в Core в выпуске 4.0
  • Hibernate Search - интегрирует функциональность полнотекстовой библиотеки из Apache Lucene в Hibernate и модель JPA
  • Hibernate Tools - набор инструментов, реализованный в виде набора плагинов Eclipse и задач Ant, включенных в JBoss Developer Studio
  • Hibernate Validator - эталонная реализация JSR 303 Bean Validation
  • Hibernate Metamodel Generator - процессор аннотаций, который создает классы статической метамодели JSR 317 Java Persistence API (JPA 2) с использованием JSR 269 Pluggable Annotation Processing API
  • NHibernate - решение объектно-реляционного сопоставления для .NET Framework
См. также
  • Портал бесплатного программного обеспечения с открытым исходным кодом
  • icon Портал компьютерного программирования
Ссылки
Библиография
Внешние ссылки
Последняя правка сделана 2021-05-23 11:09:47
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте