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

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 поддерживает отображение пользовательских типов значений. Это делает возможным такие сценарии:

  • Переопределение типа по умолчанию 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.

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

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

Интеграция

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

Компоненты

  • Hibernate Core — ядро Hibernate для Java, собственный API и метаданные отражение в формате XML[2]
  • Hibernate Annotations — отображение с помощью аннотаций JDK 5.0, как стандартных для JPA, так и собственных расширений[3]
  • Hibernate EntityManager — реализация Java Persistence API для Java SE и Java EE[4]
  • Hibernate Envers — auditing and versioning of persistent classes[5]
  • Hibernate OGM — Object/Grid Mapper is an extension to store data in a NoSQL store[6]
  • Hibernate Shards — Horizontal data partitioning framework
  • Hibernate Validator — Data integrity annotations and validation API
  • Hibernate Search — Hibernate integration with Lucene for indexing and querying data
  • Hibernate Tools — Средства разработки для Eclipse и Ant
  • Hibernate Metamodel Generator — an annotation processor that creates JSR 317 Java Persistence API (JPA 2) static metamodel classes using the JSR 269 Pluggable Annotation Processing API[7]


История

  • Июль 2002 — версия 1.0
  • Июнь 2003 — версия 2.0
  • 31 марта 2005 — версия 3.0
  • 16 октября 2006 — Hibernate Core, Annotations, Entity Manager 3.2.0.GA — поддержка JPA
  • 19 марта 2007 — Hibernate Validator 3.0.0.GA
  • 23 сентября 2007 — Hibernate Search 3.0.0.GA

Литература

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

  • NHibernate — аналогичное решение для платформы .NET

См. также

Примечания

  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.

Ссылки


Wikimedia Foundation. 2010.

Смотреть что такое "Hibernate (библиотека)" в других словарях:

  • Hibernate — Спящий режим операционной системы (англ. hibernate) Hibernate (библиотека) Спячка …   Википедия

  • Base64 — буквально означает  позиционная система счисления с основанием 64. Здесь 64  это наибольшая степень двойки (26), которая может быть представлена с использованием печатных символов ASCII. Эта система широко используется в электронной… …   Википедия

  • POJO — (англ. Plain Old Java Object) «простой Java объект в старом стиле», простой Java объект, не унаследованный от какого то специфического объекта и не реализующий никаких служебных интерфейсов сверх тех, которые нужны для бизнес модели. Термин …   Википедия

  • Позиционная система счисления с основанием 64 — Base64 буквально означает  позиционная система счисления с основанием 64. Здесь 64  это наибольшая степень двойки (26), которая может быть представлена с использованием печатных символов электронной почте для представления бинарных файлов в… …   Википедия

  • NHibernate — Тип Object relational mapping Разработчик JBoss Операционная система Cross platform Последняя версия 3.3.1 (12 июня 2012 года) Лицензия GNU Lesser General Public License …   Википедия

  • Java — Иное название этого понятия  «Ява»; см. также другие значения. Не следует путать с JavaScript. Java Класс языка …   Википедия

  • Язык программирования Java — Java Класс языка: объектно ориентированный, структурный, императивный Появился в: 1995 г. Автор(ы): Sun Microsystems Последняя версия: Java Standard Edition 6 (1.6.14) Т …   Википедия

  • iText — Тип Библиотека Разработчик 1T3XT BVBA Написана на Java Операционная система Кроссплатформенное программное обеспечение Последняя версия 5.0.6 (4 февраля, 2011 г.) …   Википедия

  • Java Virtual Machine — В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете …   Википедия

  • JasperReports — Тип Java библиотека Последняя версия 4.8.0 (5 ноября, 2012 г.) Лицензия GNU Lesser General Public License Сайт jasperforge.org JasperReports  это Java библиоте …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»