Hibernate (библиотека) | это... Что такое Hibernate (библиотека)? (original) (raw)

У этого термина существуют и другие значения, см. Hibernate.

Hibernate

Hibernate.png
Тип Object-Relational Mapping
Разработчик Red Hat
Написана на Java
Аппаратная платформа Java Virtual Machine
Последняя версия 4.1.8.Final (1 ноября 2012)
Лицензия GNU Lesser General Public License
Сайт http://www.hibernate.org

Hibernate — библиотека для языка программирования Java, предназначенная для решения задач объектно-реляционного отображения (object-relational mapping — ORM). Она представляет собой свободное программное обеспечение с открытым исходным кодом (open source), распространяемое на условиях GNU Lesser General Public License. Данная библиотека предоставляет лёгкий в использовании каркас (фреймворк) для отображения объектно-ориентированной модели данных в традиционные реляционные базы данных.

Содержание

Основные возможности

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

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

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

Mapping

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

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

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

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

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

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

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

Язык запросов Hibernate (HQL)

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

Интеграция

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

Компоненты

История

Литература

Аналоги на других платформах

См. также

Примечания

  1. Рекомендации по использованию методов equals() и hashCode() в Hibernate (англ.).(недоступная ссылка — история) Проверено 20 августа 2009.
  2. HIBERNATE - Relational Persistence for Idiomatic Java. JBoss Community. Архивировано из первоисточника 17 февраля 2012.
  3. Hibernate Annotations. JBoss Community. Архивировано из первоисточника 17 февраля 2012.
  4. Hibernate EntityManager. JBoss Community. Архивировано из первоисточника 17 февраля 2012.
  5. Hibernate Envers – Easy Entity Auditing. JBoss Community. Архивировано из первоисточника 17 февраля 2012.
  6. Hibernate OGM. JBoss Community. Архивировано из первоисточника 17 февраля 2012.
  7. Hibernate Metamodel Generator. JBoss Community. Архивировано из первоисточника 17 февраля 2012.

Ссылки

Просмотр этого шаблона Java Persistence API
Cayenne · DataNucleus · EasyBeans · EclipseLink · Hibernate · TopLink · OpenEJB · OpenJPA
Просмотр этого шаблона Java
Платформы Java CardJava MEJava SEJava EE Wave.svg
Технологии Sun JavaJava Development KitOpenJDKWTKJava Virtual MachineJavaFXJAXPSquawk
Основные сторонние технологии GNU Classpath • GNU компилятор для Java • Kaffe • TopLink • Apache HarmonyApache StrutsSpring Framework • Dalvik • HibernateJBoss • Processing • Dozer • AspectJ
История История версий JavaКритика JavaJava Community ProcessSun Microsystems • Свободные реализации Java
Свойства языка Байткод • Синтаксис • АпплетыСервлетыМидлетыJavaServer PagesWeb StartEnterprise JavaBeans
Скриптовые языки Java Tcl • JythonJRubyBeanShellGroovy • Judoscript • Sleep • Bean Scripting Framework • Yoix • Rhino
Конференции Java JavaOne