Hibernate (библиотека): различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
Addbot (обсуждение | вклад) м Интервики (всего 21) перенесены на Викиданные, d:q747866 |
Lordakryl (обсуждение | вклад) |
||
Строка 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].
- Bauer, Christian, King, Gavin. Hibernate In Action. — 1st ed. — Manning Publications, 2004, August 1. — 408 p. — (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. Считается одной из лучших по отзывам критиков[9]
- Bauer, Christian, King, Gavin. Java Persistence with Hibernate. — 1st ed. — Manning Publications, 2006, November 24. — 904 p. — ISBN 1-932394-88-5, ISBN-13 978-1932394887.
- Фактически это обновлённая и пересмотренная версия книги «Hibernate in Action», здесь описывается Hibernate 3.x и JPA. Второе издание этой книги, описывающее Hibernate 4.x, запланировано на март 2013 г.[10]
- Linwood, Jeff, Minter, Dave. Beginning Hibernate: From Novice to Professional. — 3rd ed. — Apress, 2006, August 25. — 360 p. — ISBN 1-59059-693-5.
- Linwood, Jeff, Minter, Dave. Beginning Hibernate. — 2nd ed. — Apress, 2010, May 28. — 400 p. — ISBN 1-4302-2850-4.
- Elliott, James, O'Brien, Timothy M., Fowler, Ryan. Harnessing Hibernate. — 1st ed. — O'Reilly Media, 2008, April 22. — 382 p. — ISBN 978-0-596-51772-4, ISBN10 0-596-51772-6, Ebook-ISBN 978-0-596-15948-1, Ebook-ISBN10 0-596-15948-X.
- Bernard, Emmanuel, Griffin, John. Hibernate Search in Action. — 1st ed. — Manning Publications, 2008, December 30. — 488 p. — (In Action). — ISBN 1-933988-64-9.
Аналоги на других платформах
- NHibernate — аналогичное решение для платформы .NET
См. также
- Сериализация
- Enterprise JavaBeans 3.0
- NHibernate — порт Hibernate на платформу .NET
- MyBatis
- iBATIS
- JPA
- EclipseLink
Примечания
- ↑ Рекомендации по использованию методов equals() и hashCode() в Hibernate (англ.). Дата обращения: 20 августа 2009.
- ↑ HIBERNATE - Relational Persistence for Idiomatic Java . JBoss Community. Архивировано 17 февраля 2012 года.
- ↑ Hibernate Annotations . JBoss Community. Архивировано 17 февраля 2012 года.
- ↑ Hibernate EntityManager . JBoss Community. Архивировано 17 февраля 2012 года.
- ↑ Hibernate Envers – Easy Entity Auditing . JBoss Community. Архивировано 17 февраля 2012 года.
- ↑ Hibernate OGM . JBoss Community. Архивировано 17 февраля 2012 года.
- ↑ Hibernate Metamodel Generator . JBoss Community. Архивировано 17 февраля 2012 года.
- ↑ James Elliott at O'Reilly
- ↑ Hibernate In Action on Amazon
- ↑ Java Persistence with Hibernate, Second Edition. Christian Bauer, Gavin King, and Gary Gregory