Hibernate (Framework)

Hibernate (Framework)
Hibernate
Logo
Entwickler JBoss (Red Hat)
Aktuelle Version 3.6.8
(27. Oktober 2011)
Aktuelle Vorabversion 4.0.0 CR 6
(10. November 2011)
Betriebssystem plattformübergreifend
Programmier­sprache Java
Kategorie ORM
Lizenz LGPL
www.hibernate.org

Hibernate (englisch für „Winterschlaf halten“) ist ein Open-Source-Persistenz- und ORM-Framework für Java. Für .NET ist eine portierte Version namens NHibernate verfügbar.

Hibernates Hauptaufgabe ist das Object-Relational Mapping (O-R-Mapping, kurz ORM). Dies ermöglicht es, gewöhnliche Objekte mit Attributen und Methoden (im Java-Bereich POJOs genannt) in relationalen Datenbanken zu speichern und aus entsprechenden Datensätzen wiederum Objekte zu erzeugen. Beziehungen zwischen Objekten werden auf entsprechende Datenbank-Relationen abgebildet.

Darüber hinaus bietet Hibernate Mechanismen zur Kompatibilität mit verschiedenen Datenbanken. Die zum Datenbankzugriff erforderlichen SQL-Statements werden nicht explizit in SQL programmiert, sondern von Hibernate in Abhängigkeit vom SQL-Dialekt der verwendeten Datenbank generiert.

Anwendungsseitig kann Hibernate in Java-Applikationen und Servlet-Engines benutzt werden oder in einen Applikationsserver integriert werden.

Inhaltsverzeichnis

Funktionalität

Die Abfrage der persistierten Objekte erfolgt wahlweise über die SQL-ähnliche Abfragesprache Hibernate Query Language (HQL), mittels SQL-Statements oder objektorientiert mittels der Hibernate Criteria-API. Die Abfragen werden je nach verwendeter Datenbank mittels JDBC auf den entsprechenden SQL-Dialekt übersetzt. Hibernate bietet für alle aktuellen relationalen Datenbanksysteme entsprechende Einstellungen, neue SQL-Dialekte können vom Benutzer selbst hinzugefügt werden.[1]

Objektrelationale Abbildung

Hibernate ermöglicht eine transparente Persistenz von Plain Old Java Objects (POJOs). Einzig ein parameterloser Konstruktor muss gegeben sein. Da Hibernate mittels Reflection auf die Attribute der Klassen zugreift, sind keine öffentlichen Zugriffsfunktionen notwendig.

Das Mapping von Java-Klassen auf Datenbanktabellen wird mittels einer XML-Datei (Mapping File) oder mit Java-Annotation bewerkstelligt. Bei der Verwendung von XML-Dateien können mittels der Hibernate Tools sowohl die passenden Java-Klassen als auch die Datenbanktabellen generiert werden, bei der Verwendung von Annotations ist letzteres auch möglich.

Hibernate unterstützt Objektreferenzen (1:1-Relationen) und (typisierte) Java Collections (1:N- und N:M-Relationen), sowie auch reflexive Beziehungen auf die eigene Klasse. Beim Laden von Objekten können in Beziehung stehende Objekte wahlweise sofort mitgeladen werden (eager loading) oder erst dann, wenn sie wirklich benötigt werden (lazy loading). Lazy Loading ist die Standard-Option für alle 1:N- und N:M-Beziehungen, funktioniert aber nur innerhalb derselben Transaktion bzw. Session. Hibernate kann auch so konfiguriert werden, dass Operationen wie Speichern oder Löschen auch über Relationen kaskadieren und somit die referentielle Integrität gewahrt bleibt.

Hibernate unterstützt alle drei Arten der objektrelationalen Abbildung von Vererbungsbeziehungen (Tabelle pro Vererbungshierarchie, Tabelle pro Unterklasse und Tabelle pro konkrete Klasse), darüber hinaus auch Impliziter Polymorphismus als Spezialform von Tabelle pro konkrete Klasse.[2]

Ebenso ermöglicht Hibernate eine wahlfreie Abbildung von Java-Typen auf die von der Datenbank unterstützten SQL-Typen. Damit wird z. B. ermöglicht, Java-Enums analog zu normalen Integer-Properties abzubilden, oder einzelne Properties auf mehrere Tabellenspalten zu verteilen.

Die wohl wichtigsten Hibernate Klassen sind SessionFactory, Session und Transaction. SessionFactory lädt die Konfiguration und die Mappings, und wird normalerweise nur einmal pro Anwendung erzeugt. Session ist das Bindeglied zwischen der Java-Applikation und den Hibernate-Diensten, und bietet Methoden für Insert-, Update-, Delete- und Query-Operationen. Transaction bildet JDBC- und JTA-Transaktionen ab. Geschachtelte Transaktionen werden nicht unterstützt.

Weitere Funktionalitäten

Neben der Kernfunktionalität umfasst Hibernate noch folgende Unterprojekte:

Hibernate Annotations
OR-Mapping mittels Annotations
Hibernate EntityManager
Umsetzung der Schnittstelle Java Persistence API
Hibernate Shards
Zugriff auf horizontal partitionierte Datenbanktabellen
Hibernate Validator
Definition von Daten-Integritäts- und Validierungsregeln in JavaBean-Klassen mittels Annotations
Hibernate Search
Transparente Erstellung eines Volltextindexes und Volltextsuche mit Lucene
Hibernate Tools
Entwicklungstools für Eclipse und Ant
NHibernate
Hibernate für das .NET Framework. Aktuell ist die Version 3.2, die im Juli 2011 erschien.

Geschichte und Verbreitung

Hibernate wurde 2001 von einem Team aus Java-Entwicklern unter Gavin King entwickelt. Das Unternehmen JBoss, Inc., Hersteller des gleichnamigen freien Java-Anwendungsservers, stellte später einige der wichtigsten Hibernate-Entwickler ein, um die Integration von Hibernate in den JBoss Application Server voranzutreiben.

Die aktuelle Major-Version von Hibernate ist die Version 3.x. Sie brachte Funktionalitäten wie Session-basierte Filter, JDK-5.0-Annotations und -Generics, DB-Schema-Validierung (V 3.1), JPA 1.0 (V 3.2) und 2.0 (V 3.5), Fetch Profile (V 3.5), eine Reorganisation der Hibernate Module (V 3.5) sowie Maven-Unterstützung (V 3.3).[3]

Hibernate wird laut Homepage von zehntausenden Java-Projekten weltweit verwendet. Etwa 25.000 Entwickler sind bei den Hibernate-Foren angemeldet. Hibernate wird im Schnitt ca. 3.000-mal täglich heruntergeladen.[4]

Siehe auch

Literatur

  • Christian Bauer, Gavin King: Java-Persistence mit Hibernate, Hanser Verlag, 2007, ISBN 978-3-446-40941-5
  • Richard Oates, Thomas Langer, Stefan Wille, Torsten Lueckow, Gerald Bachlmayr: Spring & Hibernate. Eine praxisbezogene Einführung, Hanser Verlag, 2006, ISBN 978-3-446-40457-1
  • Sebastian Hennebrüder: Hibernate, Das Praxisbuch für Entwickler, Galileo Press, 2007, ISBN 978-3-89842-635-0
  • Dave Minter, Jeff Linwood, Reinhard Engel: Einführung in Hibernate, Mitp-Verlag, 2007, ISBN 978-3826617942
  • Bernd Müller, Harald Wehr: Java-Persistence-API mit Hibernate, Addison-Wesley, 2007, ISBN 978-3827325372
  • Robert F. Beeger, Arno Haase, Stefan Roock, Sebastian Sanitz: Hibernate: Persistenz in Java-Systemen mit Hibernate 3.2 und dem Java Persistence API, Dpunkt Verlag, 2007, ISBN 978-3898644471
  • Markus Kehle, Hien Robert: Hibernate und die Java Persistence API, Entwickler.Press, 2006, ISBN 978-3935042963

Weblinks

Einzelnachweise

  1. Unterstützte Datenbanken
  2. Gavin King, Christian Bauer, Max Rydahl Andersen, Emmanuel Bernard, Steve Ebersole: Inheritance mapping. In: Hibernate Community Documentation. Red Hat, 14. April 2010, abgerufen am 19. Mai 2010 (englisch): „Hibernate supports the three basic inheritance mapping strategies: table per class hierarchy, table per subclass, table per concrete class. In addition, Hibernate supports a fourth, slightly different kind of polymorphism: implicit polymorphism“
  3. Hibernate Road Map
  4. Product Evaluation FAQ

Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Hibernate Query Language — Hibernate (Framework) Entwickler: JBoss (Red Hat) Aktuelle Version: 3.3.1 (11. September 2008) Betriebssystem: plattformübergreifend Kategorie …   Deutsch Wikipedia

  • Hibernate — (engl. für „Winterschlaf halten“) Hibernate (Framework), steht für ein Framework im Java Umfeld ist der englische Fachbegriff für den Ruhezustand eines Computers Diese Seite ist eine Begriffsklärung z …   Deutsch Wikipedia

  • Hibernate — Développeur Red Hat Dernière version 3.6.7 Final (17 août …   Wikipédia en Français

  • Hibernate Core — is the most popular Java ORM persistence tool. It provides automatic and transparent object/relational mapping allowing java objects to persist in a database after the java program exits.In essence, the developer first provides mapping between… …   Wikipedia

  • Hibernate (OS feature) — Hibernate is a feature seen in many operating systems where the contents of RAM is written to non volatile storage, such as the hard disk (as either a file or on a separate partition) before powering off the system. Later the system can be… …   Wikipedia

  • Hibernate (библиотека) — У этого термина существуют и другие значения, см. Hibernate. Hibernate Тип Object Relational Mapping Разработчик Red Hat Написана на Java …   Википедия

  • Hibernate (Java) — Infobox Software name = Hibernate developer = Red Hat latest release version = 3.3.1 GA latest release date = release date|2008|09|11 operating system = Cross platform (JVM) latest preview version = latest preview date = platform = Java Virtual… …   Wikipedia

  • Hibernate — Hibernation is a state of regulated hypothermia undergone by some animals to conserve energy during the winter.Hibernate may also refer to: * Hibernate (OS feature), the ability of some operating systems to suspend themselves completely to… …   Wikipedia

  • Hibernate search — Infobox Software name = Hibernate Search developer = Red Hat latest release version = 3.0.0.GA latest release date = release date|2007|09|09 operating system = Cross platform platform = Java genre = Object relational mapping license = GNU Lesser… …   Wikipedia

  • Framework —  Pour l’article homonyme, voir Framework (logiciel).  Sur les autres projets Wikimedia : « Framework », sur le Wiktionnaire (dictionnaire universel) En programmation informatique, un framework est un kit de composants… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”