Вы находитесь на странице: 1из 2

Основные возможности[править | править код]

Целью Hibernate является освобождение разработчика от значительного объёма сравнительно


низкоуровневого программирования при работе в объектно-ориентированных средствах в
реляционной базе данных. Разработчик может использовать Hibernate как в процессе проектирования
системы классов и таблиц «с нуля», так и для работы с уже существующей базой данных.
Библиотека не только решает задачу связи классов Java с таблицами базы данных (и типов данных
Java с типами данных SQL), но и также предоставляет средства для автоматической генерации и
обновления набора таблиц, построения запросов и обработки полученных данных и может
значительно уменьшить время разработки, которое обычно тратится на ручное написание SQL-
и JDBC-кода. Hibernate автоматизирует генерацию SQL-запросов и освобождает разработчика от
ручной обработки результирующего набора данных и преобразования объектов, максимально
облегчая перенос (портирование) приложения на любые базы данных SQL.
Hibernate обеспечивает прозрачную поддержку сохранности данных (persistence) для «POJO» (то есть
для стандартных Java-объектов); единственное строгое требование для сохраняемого класса —
наличие конструктора по умолчанию (без параметров). Для корректного поведения в некоторых
приложениях требуется также уделить внимание методам equals() и hashCode() [3].

Mapping[править | править код]


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) с
уровнем абстракции новых функций и синтаксиса, приложенных к CFML.

Компоненты[править | править код]


 Hibernate ORM (до версии 4.1 называлось Hibernate Core[4]) — ядро Hibernate, собственный API,
xml-мэппинг (отображение) метаданных объектов (поддержка метаданных в виде аннотаций с
версии 3.6)[5]
 Hibernate Annotations (с версии 3.6 объединены с Hibernate Core/ORM) — отображение (мэппинг) с
помощью аннотаций JDK 5.0, как стандартных для JPA, так и собственных расширений[6]
 Hibernate EntityManager — реализация Java Persistence API для Java SE и Java EE[7]
 Hibernate Envers — аудит persistent-классов[8]
 Hibernate OGM — Object/Grid Mapper — расширение для хранения данных в хранилище NoSQL[9]
 Hibernate Shards — фреймворк для сегментирования (англ. sharding) баз данных -- архитектурного
решения по горизонтальному масштабированию с разбиением таблиц баз данных на сегменты по
некоторому признаку без общих ресурсов[10]
 Hibernate Validator — аннотации и API для проверки верности и целостности данных
 Hibernate Search — интеграция Hibernate с поисковой системой Lucene, с целью индексирования и
поиска данных
 Hibernate Tools — средства разработки для Eclipse и Ant
 Hibernate Metamodel Generator — обработчик аннотаций, создающий классы статической
метамодели JSR 317 Java Persistence API (JPA 2), используя при этом JSR 269 Pluggable
Annotation Processing API[11]

История версий[править | править код]


Версия 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.

Оценить