Hibernate (библиотека): различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
Addbot (обсуждение | вклад)
м Интервики (всего 21) перенесены на Викиданные, d:q747866
Строка 79: Строка 79:


== Литература ==
== Литература ==
* {{книга
* [http://www.manning.com/bauer2/ Java Persistence with Hibernate] — второе издание Hibernate in Action, описывает Hibernate 3.x и JPA
|автор = {{nobr|Elliott, James}}
* [http://www.manning.com/bauer/ Hibernate in Action], написана авторами Hibernate, описывает версию 2.x.
|заглавие = Hibernate: A Developer's Notebook
|ссылка = http://oreilly.com/catalog/9780596006969/
|ответственный =
|издание = 1st ed
|место =
|издательство = [[O'Reilly Media]]
|год = 2004, May 10
|allpages = 190
|серия =
|isbn = 0-596-00696-9, ISBN 10 0-596-00696-9, Ebook-ISBN 978-0-596-55653-2, Ebook-ISBN10 0-596-55653-5
}}
:: Одна из первых книг по Hibernate, написанная опытным разработчиком из Singlewire Software, работавшим с объектно-ориентированными технологиями задолго до того, как это стало популярным<ref>[http://www.oreillynet.com/pub/au/993 James Elliott at O'Reilly]</ref>.

* {{книга
|автор = {{nobr|Bauer, Christian}}, {{nobr|King, Gavin}}.
|заглавие = Hibernate In Action
|ссылка = http://www.manning.com/bauer/
|ответственный =
|издание = 1st ed
|место =
|издательство = [[:en:Manning Publications|Manning Publications]]
|год = 2004, August 1
|allpages = 408<!-- в бумаге 408, в эл. версии 400 http://www.amazon.com/Hibernate-Action-Christian-Bauer/dp/193239415X , -->
|серия = In Action
|isbn = 1-932394-15-X, ISBN-13 978-1932394153
}}
:: Christian Bauer — участник команды разработки Hibernate, Gavin King — основатель проекта Hibernate, участник экспертной группы EJB 3.0 (JSR 220), руководитель в разработке стандарта Web Beans JSR 299, включающего концепции Hibernate, JSF и EJB 3.0. Книга описывает устаревшую версию Hibernate 2.x. Считается одной из лучших по отзывам критиков<ref>[http://www.amazon.com/Hibernate-Action-Christian-Bauer/dp/193239415X Hibernate In Action on Amazon]</ref>

* {{книга
|автор = {{nobr|Bauer, Christian}}, {{nobr|King, Gavin}}.
|заглавие = Java Persistence with Hibernate
|ссылка = http://www.manning.com/bauer2/
|ответственный =
|издание = 1st ed
|место =
|издательство = [[:en:Manning Publications|Manning Publications]]
|год = 2006, November 24
|allpages = 904<!-- в бумаге 904, в эл. версии 880 http://www.amazon.com/Java-Persistence-Hibernate-Christian-Bauer/dp/1932394885/ref=pd_bxgy_b_text_y -->
|серия =
|isbn = 1-932394-88-5, ISBN-13 978-1932394887
}}

:: Фактически это обновлённая и пересмотренная версия книги «Hibernate in Action», здесь описывается Hibernate 3.x и JPA. Второе издание этой книги, описывающее Hibernate 4.x, запланировано на март 2013 г.<ref>[http://www.manning.com/bauer3/ Java Persistence with Hibernate, Second Edition. Christian Bauer, Gavin King, and Gary Gregory]</ref>

* {{книга
|автор = {{nobr|Linwood, Jeff}}, {{nobr|Minter, Dave}}.
|заглавие = Beginning Hibernate: From Novice to Professional
|ссылка = http://www.apress.com/book/view/9781590596937
|ответственный =
|издание = 3rd ed
|место =
|издательство = [[Apress]]
|год = 2006, August 25
|allpages = 360
|серия =
|isbn = 1-59059-693-5
}}

* {{книга
|автор = {{nobr|Linwood, Jeff}}, {{nobr|Minter, Dave}}.
|заглавие = Beginning Hibernate
|ссылка = http://www.apress.com/book/view/9781430228509
|ответственный =
|издание = 2nd ed
|место =
|издательство = [[Apress]]
|год = 2010, May 28
|allpages = 400
|серия =
|isbn = 1-4302-2850-4
}}

* {{книга
|автор = {{nobr|Elliott, James}}, {{nobr|O'Brien, Timothy M.}}, {{nobr|Fowler, Ryan}}.
|заглавие = Harnessing Hibernate
|ссылка = http://oreilly.com/catalog/9780596517724/
|ответственный =
|издание = 1st ed
|место =
|издательство = [[O'Reilly Media]]
|год = 2008, April 22
|allpages = 382
|серия =
|isbn = 978-0-596-51772-4, ISBN10 0-596-51772-6, Ebook-ISBN 978-0-596-15948-1, Ebook-ISBN10 0-596-15948-X
}}

* {{книга
|автор = {{nobr|Bernard, Emmanuel}}, {{nobr|Griffin, John}}.
|заглавие = Hibernate Search in Action
|ссылка = http://www.manning.com/bernard/
|ответственный =
|издание = 1st ed
|место =
|издательство = [[:en:Manning Publications|Manning Publications]]
|год = 2008, December 30
|allpages = 488
|серия = In Action
|isbn = 1-933988-64-9
}}

<!-- переделать в шаблон Книга, снабдить аннотацией. Взято из enwiki
*{{citation
| first1 = Dave
| last1 = Minter
| first2 = Jeff
| last2 = Linwood
| date = June 27, 2005
| title = Pro Hibernate 3
| edition = First
| publisher = [[Apress]]
| pages = 242
| isbn = 1-59059-511-4
| url = http://www.apress.com/book/view/1590595114
}}
*{{citation
| first = Will
| last = Iverson
| date = December 2, 2004
| title = Hibernate: A J2EE Developer's Guide
| edition = First
| publisher = [[Addison Wesley]]
| pages = 384
| isbn = 0-321-26819-9
| url =
}}
*{{citation
| first1 = Eric
| last1 = Pugh
| first2 = Joseph D.
| last2 = Gradecki
| date = October 8, 2004
| title = Professional Hibernate (Programmer to Programmer)
| edition = First
| publisher = [[Wrox Press|Wrox]]
| pages = 456
| isbn = 0-7645-7677-1
| url = http://p2p.wrox.com/book-professional-hibernate-148/
}}
-->


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

Версия от 11:26, 24 марта 2013

Hibernate
Файл:Hibernate.png
Тип Object-Relational Mapping
Разработчик Red Hat
Написана на Java
Первый выпуск 2001
Аппаратная платформа Java Virtual Machine
Последняя версия 4.1.9.Final (13 декабря 2012)
Репозиторий github.com/hibernate/hib…
Лицензия GNU Lesser General Public License
Сайт 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

Литература

  • Elliott, James. Hibernate: A Developer's Notebook. — 1st ed. — O'Reilly Media, 2004, May 10. — 190 p. — ISBN 0-596-00696-9, ISBN 10 0-596-00696-9, Ebook-ISBN 978-0-596-55653-2, Ebook-ISBN10 0-596-55653-5.
Одна из первых книг по Hibernate, написанная опытным разработчиком из Singlewire Software, работавшим с объектно-ориентированными технологиями задолго до того, как это стало популярным[8].
Christian Bauer — участник команды разработки Hibernate, Gavin King — основатель проекта Hibernate, участник экспертной группы EJB 3.0 (JSR 220), руководитель в разработке стандарта Web Beans JSR 299, включающего концепции Hibernate, JSF и EJB 3.0. Книга описывает устаревшую версию Hibernate 2.x. Считается одной из лучших по отзывам критиков[9]
Фактически это обновлённая и пересмотренная версия книги «Hibernate in Action», здесь описывается Hibernate 3.x и JPA. Второе издание этой книги, описывающее Hibernate 4.x, запланировано на март 2013 г.[10]


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

  • 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 года.
  8. James Elliott at O'Reilly
  9. Hibernate In Action on Amazon
  10. Java Persistence with Hibernate, Second Edition. Christian Bauer, Gavin King, and Gary Gregory

Ссылки