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 библиоте …   Википедия


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

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