logo
Разработка Web-приложения

2.3 Hibernate

Hibernate - фреймворк, предназначенная для решения задач объектно-реляционного отображения (object-relational mapping - ORM).

Целью Hibernate является освобождение разработчика от значительного объёма сравнительно низкоуровневого программирования по обеспечению хранения объектов в реляционной базе данных. Разработчик может использовать Hibernate как в процессе проектирования системы классов и таблиц "с нуля", так и для работы с уже существующей базой данных.

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

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

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

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

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

· Переопределение типа по умолчанию SQL, Hibernate выбирает при отображении столбца свойства.

· Картирование перечисляемого типа Java до колонок БД, будто они являются обычными свойствами.

· Картирование одного свойства в несколько колонок.