Interested Article - Hibernate (библиотека)

Hibernate — библиотека для языка программирования Java , предназначенная для решения задач объектно-реляционного отображения ( ORM ), самая популярная реализация спецификации JPA . Распространяется свободно на условиях GNU Lesser General Public License .

Позволяет сократить объёмы низкоуровневого программирования при работе с реляционными базами данных; может использоваться как в процессе проектирования системы классов и таблиц «с нуля», так и для работы с уже существующей базой .

Библиотека не только решает задачу связи классов Java с таблицами базы данных (и типов данных Java с типами данных SQL ), но и также предоставляет средства для автоматической генерации и обновления набора таблиц, построения запросов и обработки полученных данных и может значительно уменьшить время разработки, которое обычно тратится на ручное написание SQL - и JDBC -кода. Hibernate автоматизирует генерацию SQL-запросов и освобождает разработчика от ручной обработки результирующего набора данных и преобразования объектов, максимально облегчая перенос (портирование) приложения на любые базы данных SQL.

Hibernate обеспечивает прозрачную поддержку сохранности данных ( persistence ) для « POJO » (то есть для стандартных Java-объектов); единственное строгое требование для сохраняемого класса — наличие конструктора по умолчанию (без параметров). Для корректного поведения в некоторых приложениях требуется также уделить внимание методам equals() и hashCode() .

Существует порт библиотеки для .NET NHibernate . Альтернативные ORM-фреймворки для Java — , , , EclipseLink .

Отображение

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

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

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

  • переопределение типа по умолчанию SQL, Hibernate выбирает при отображении столбца свойства;
  • отображение перечисляемого типа Java на поле базы данных, будто они являются обычными свойствами;
  • отображение одного свойства в несколько столбцов.

Персистентность

Коллекции объектов данных, как правило, хранятся в виде коллекций Java-объектов, таких, как набор (Set) и список (List). Поддерживаются обобщенные классы (Generics), введеные в Java 5. Hibernate может быть настроен на «ленивые» (отложенные) загрузки коллекций. Отложенные загрузки является вариантом по умолчанию, начиная с Hibernate 3.

Связанные объекты могут быть настроены на каскадные операции. Например, родительский класс Album (музыкальный альбом) может быть настроен на каскадное сохранение и/или удаление своего потомка Track. Это может сократить время разработки и обеспечить целостность . Функция проверки изменения данных ( dirty checking ) позволяет избежать ненужной записи действий в базу данных, выполняя SQL-обновление только при изменении полей персистентных объектов.

Успех библиотеки Hibernate подтолкнул JCP к разработке спецификации JDO, ставшей одной из стандартных технологий ORM на платформе JavaEE. Также Hibernate совместима с JSR-220/317 и предоставляет стандартные средства JPA.

HQL

Hibernate обеспечивает использование SQL -подобного языка Hibernate Query Language (HQL), который позволяет выполнять SQL-подобные запросы, записанные рядом с объектами данных Hibernate. Запросы критериев предоставляются как Объектно-ориентированная альтернатива к HQL.

Интеграция

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

Компоненты

Hibernate ORM (до версии 4.1 называлось Hibernate Core ) — ядро Hibernate, собственный API, xml-мэппинг (отображение) метаданных объектов (поддержка метаданных в виде аннотаций с версии 3.6)

Hibernate Annotations (с версии 3.6 объединены с Hibernate Core/ORM) — отображение (мэппинг) с помощью аннотаций JDK 5.0, как стандартных для JPA , так и собственных расширений

Hibernate EntityManager — реализация Java Persistence API для Java SE и Java EE

Hibernate Envers — аудит persistent-классов Hibernate OGM — Object/Grid Mapper — расширение для хранения данных в хранилище NoSQL

Hibernate Shards — фреймворк для сегментирования баз данных — архитектурного решения по горизонтальному масштабированию с разбиением таблиц баз данных на сегменты по некоторому признаку без общих ресурсов

Hibernate Validator — аннотации и API для проверки верности и целостности данных

Hibernate Search — интеграция Hibernate с поисковой системой Lucene , с целью индексирования и поиска данных

Hibernate Tools — средства разработки для Eclipse и Ant

Hibernate Metamodel Generator — обработчик аннотаций, создающий классы статической метамодели JSR 317 Java Persistence API (JPA 2), используя при этом JSR 269

История версий

Версия 1.0 выпущена в июле 2002 года, через год вышла версия 2.0, ещё через год — 3.0. В выпуске от 16 октября 2006 появились Hibernate Core, Annotations, Entity Manager (версия 3.2.0.GA с поддержкой JPA ). В декабре 2013 года выпущен Hibernate ORM 4.3.0. В сентябре 2015 выпущен Hibernate ORM 5.0.2.

См. также

Примечания

  1. — 2023.
  2. — 2024.
  3. (англ.) . Дата обращения: 20 августа 2009. 6 декабря 2003 года.
  4. . Дата обращения: 5 марта 2015. 18 марта 2015 года.
  5. . JBoss Community. Архивировано из 17 февраля 2012 года.
  6. . JBoss Community. Архивировано из 17 февраля 2012 года.
  7. . JBoss Community. Архивировано из 17 февраля 2012 года.
  8. . JBoss Community. Архивировано из 17 февраля 2012 года.
  9. . JBoss Community. Архивировано из 17 февраля 2012 года.
  10. Гловер, Эндрю. (27 февраля 2012). Архивировано из 19 июля 2013 года.
  11. . JBoss Community. Архивировано из 17 февраля 2012 года.

Литература

Одна из первых книг по Hibernate, написанная опытным разработчиком из Singlewire Software, работавшим с объектно-ориентированными технологиями задолго до того, как это стало популярным.
Christian Bauer — участник команды разработки Hibernate, Gavin King — основатель проекта Hibernate, участник экспертной группы EJB 3.0 (JSR 220), руководитель в разработке стандарта Web Beans JSR 299, включающего концепции Hibernate, JSF и EJB 3.0. Книга описывает устаревшую версию Hibernate 2.x. Считается одной из лучших по отзывам критиков
Фактически это обновлённая и пересмотренная версия книги «Hibernate in Action», здесь описывается Hibernate 3.x и JPA . Второе издание этой книги, описывающее Hibernate 5, запланировано к выходу в начале 2015 г. (отдельные главы выложены в электронном виде с марта 2013)
  • Bernard, Emmanuel , Griffin, John . . — 1st ed. — Manning Publications, 2008, December 30. — 488 p. — (In Action). — ISBN 1-933988-64-9 .

Ссылки

  • (англ.)
Источник —

Same as Hibernate (библиотека)