<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Hibernate_%28Framework%29</id>
	<title>Hibernate (Framework) - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Hibernate_%28Framework%29"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Hibernate_(Framework)&amp;action=history"/>
	<updated>2026-06-12T23:02:32Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Hibernate_(Framework)&amp;diff=274018&amp;oldid=prev</id>
		<title>imported&gt;Meierberg: PNG -&gt; SVG</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Hibernate_(Framework)&amp;diff=274018&amp;oldid=prev"/>
		<updated>2024-06-11T12:53:12Z</updated>

		<summary type="html">&lt;p&gt;PNG -&amp;gt; SVG&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Software&lt;br /&gt;
|Name                  =&lt;br /&gt;
|Logo                  = [[Datei:Hibernate logo.svg|250px|Logo]]&lt;br /&gt;
|Screenshot            = &lt;br /&gt;
|Beschreibung          = &amp;lt;!-- Beschreibung des Screenshots! --&amp;gt;&lt;br /&gt;
|Maintainer            = &lt;br /&gt;
|Hersteller            = [[JBoss]] ([[Red Hat]])&lt;br /&gt;
|Management            = &lt;br /&gt;
|Erscheinungsjahr      = &amp;lt;!-- Wikidata --&amp;gt;&lt;br /&gt;
|AktuelleVersion       = &amp;lt;!-- Wikidata --&amp;gt;&lt;br /&gt;
|AktuelleVersionFreigabeDatum = &amp;lt;!-- Wikidata --&amp;gt;&lt;br /&gt;
|AktuelleVorabVersion  = &lt;br /&gt;
|AktuelleVorabVersionFreigabeDatum = &lt;br /&gt;
|Betriebssystem        = [[plattformübergreifend]]&lt;br /&gt;
|Programmiersprache    = [[Java (Programmiersprache)|Java]]&lt;br /&gt;
|Kategorie             = [[Objektrelationale Abbildung|ORM]]&lt;br /&gt;
|Lizenz                = [[GNU Lesser General Public License|LGPL]]&lt;br /&gt;
|Deutsch               = &lt;br /&gt;
|Website               = [https://hibernate.org/ hibernate.org]&lt;br /&gt;
|Dateien               = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hibernate&amp;#039;&amp;#039;&amp;#039; ({{enS}} für &amp;#039;&amp;#039;Winterschlaf halten&amp;#039;&amp;#039;) ist ein [[Open Source|Open-Source]]-[[Persistenz (Informatik)|Persistenz]]- und [[Objektrelationale Abbildung|ORM]]-[[Framework]] für [[Java (Programmiersprache)|Java]]. Für das [[.Net-Framework]] ist eine portierte Version namens &amp;#039;&amp;#039;&amp;#039;NHibernate&amp;#039;&amp;#039;&amp;#039; verfügbar.&lt;br /&gt;
&lt;br /&gt;
Hibernates Hauptaufgabe ist die &amp;#039;&amp;#039;[[objektrelationale Abbildung]]&amp;#039;&amp;#039; (englisch &amp;#039;&amp;#039;O-R-Mapping&amp;#039;&amp;#039;, kurz ORM). Dies ermöglicht es, gewöhnliche Objekte mit [[Objektorientierte Programmierung#Terminologie|Attributen]] und [[Objektorientierte Programmierung#Methoden|Methoden]] (im Java-Umfeld [[Plain Old Java Object]]s oder POJOs genannt) in [[Relationale Datenbank|relationalen Datenbanken]] zu speichern und aus entsprechenden Datensätzen wiederum Objekte zu erzeugen. Beziehungen zwischen Objekten werden auf entsprechende Datenbank-Relationen abgebildet.&lt;br /&gt;
&lt;br /&gt;
Darüber hinaus bietet Hibernate Mechanismen zur Kompatibilität mit verschiedenen Datenbanken. Die zum Datenbankzugriff erforderlichen SQL-Anweisungen werden nicht explizit in [[SQL]] programmiert, sondern von Hibernate in Abhängigkeit vom SQL-Dialekt der verwendeten Datenbank generiert.&lt;br /&gt;
&lt;br /&gt;
Hibernate kann unter anderem in Java-Applikationen und [[Servlet]]-Engines benutzt oder in einem [[Application Server|Applikationsserver]] integriert werden.&lt;br /&gt;
&lt;br /&gt;
== Funktionalität ==&lt;br /&gt;
Die Abfrage der persistierten Objekte erfolgt wahlweise über die SQL-ähnliche [[Abfragesprache]] &amp;#039;&amp;#039;Hibernate Query Language&amp;#039;&amp;#039; (HQL), mittels SQL-Statements oder objektorientiert mittels der Hibernate &amp;#039;&amp;#039;Criteria&amp;#039;&amp;#039;-API. Die Abfragen werden je nach verwendeter Datenbank mittels [[Java Database Connectivity|JDBC]] in 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.&amp;lt;ref&amp;gt;{{Webarchiv|url=https://developer.jboss.org/wiki/SupportedDatabases2 |wayback=20160701234836 |text=Unterstützte Datenbanken |archiv-bot=2023-05-30 08:22:49 InternetArchiveBot }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Objektrelationale Abbildung ===&lt;br /&gt;
Hibernate ermöglicht eine transparente Persistenz von Plain Old Java Objects &amp;#039;&amp;#039;(POJOs)&amp;#039;&amp;#039;. Einzig ein parameterloser [[Konstruktor]] muss gegeben sein. Da Hibernate mittels [[Reflexion (Programmierung)|Reflexion]] auf die Attribute der Klassen zugreift, sind keine öffentlichen [[Zugriffsfunktion]]en notwendig.&lt;br /&gt;
&lt;br /&gt;
Das Abbilden von Java-Klassen auf Datenbanktabellen wird mittels einer [[Extensible Markup Language|XML]]-Datei &amp;#039;&amp;#039;(Mapping File)&amp;#039;&amp;#039; oder mit Java-Annotation bewerkstelligt. Bei der Verwendung von XML-Dateien können mittels der Hibernate-Werkzeuge sowohl die passenden Java-Klassen als auch die Datenbanktabellen generiert werden, bei der Verwendung von Annotationen ist nur letzteres möglich.&lt;br /&gt;
&lt;br /&gt;
Hibernate unterstützt Objektreferenzen ([[Kardinalität (Datenbankmodellierung)|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 &amp;#039;&amp;#039;(eager loading)&amp;#039;&amp;#039; oder erst dann, wenn sie wirklich benötigt werden &amp;#039;&amp;#039;(lazy loading)&amp;#039;&amp;#039;. &amp;#039;&amp;#039;Lazy Loading&amp;#039;&amp;#039; ist die Standard-Option für alle 1:N- und N:M-Beziehungen, funktioniert aber nur innerhalb derselben [[Transaktion (Informatik)|Transaktion]] bzw. Session. Hibernate kann auch so konfiguriert werden, dass Operationen wie Speichern oder Löschen auch über Relationen kaskadieren und somit die referenzielle Integrität gewahrt bleibt.&lt;br /&gt;
&lt;br /&gt;
Hibernate unterstützt alle drei Arten der [[Objektrelationale Abbildung#Abbildung von Vererbungshierarchien|objektrelationalen Abbildung von Vererbungsbeziehungen]] (&amp;#039;&amp;#039;Tabelle pro Vererbungshierarchie&amp;#039;&amp;#039;, &amp;#039;&amp;#039;Tabelle pro Unterklasse&amp;#039;&amp;#039; und &amp;#039;&amp;#039;Tabelle pro konkrete Klasse&amp;#039;&amp;#039;), darüber hinaus auch &amp;#039;&amp;#039;impliziten [[Polymorphie (Programmierung)|Polymorphismus]]&amp;#039;&amp;#039; als Spezialform von &amp;#039;&amp;#039;Tabelle pro konkrete Klasse&amp;#039;&amp;#039;.&amp;lt;ref&amp;gt;{{Internetquelle | url=http://docs.jboss.org/hibernate/stable/core/reference/en/html/inheritance.html | titel=Inheritance mapping | autor=Gavin King, Christian Bauer, Max Rydahl Andersen, Emmanuel Bernard, Steve Ebersole | hrsg=Red Hat | werk=Hibernate Community Documentation | datum=14. April 2010 | zugriff=2010-05-19 | sprache=Englisch | zitat=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   | archiv-url=https://web.archive.org/web/20100212161323/http://docs.jboss.org/hibernate/stable/core/reference/en/html/inheritance.html | archiv-datum=2010-02-12    }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ebenso ermöglicht Hibernate eine wahlfreie Abbildung von Java-Typen auf die von der Datenbank unterstützten SQL-Typen. Damit wird z.&amp;amp;nbsp;B. ermöglicht, Java-[[Aufzählungstyp|Enums]] analog zu normalen Integer-Properties abzubilden, oder einzelne Properties auf mehrere Tabellenspalten zu verteilen.&lt;br /&gt;
&lt;br /&gt;
==== „SessionFactory“, „Session“ und „Transaction“ ====&lt;br /&gt;
&amp;lt;code&amp;gt;SessionFactory&amp;lt;/code&amp;gt; lädt die Konfiguration und die Abbildungen und wird normalerweise nur einmal pro Anwendung erzeugt.&lt;br /&gt;
&amp;lt;code&amp;gt;Session&amp;lt;/code&amp;gt; ist das Bindeglied zwischen der Java-Applikation und den Hibernate-Diensten und bietet Methoden für Insert-, Update-, Delete- und Query-Operationen.&lt;br /&gt;
&amp;lt;code&amp;gt;Transaction&amp;lt;/code&amp;gt; bildet [[Java Database Connectivity|JDBC]]- und [[Java Transaction API|JTA]]-Transaktionen ab. Geschachtelte Transaktionen werden nicht unterstützt.&lt;br /&gt;
&lt;br /&gt;
=== Weitere Funktionalitäten ===&lt;br /&gt;
Neben der Kernfunktionalität umfasst Hibernate noch folgende Unterprojekte:&lt;br /&gt;
; Hibernate Annotations&lt;br /&gt;
: OR-Mapping mittels [[Annotation (Java)|Annotations]]&lt;br /&gt;
&lt;br /&gt;
; Hibernate EntityManager&lt;br /&gt;
: Umsetzung der Schnittstelle [[Jakarta Persistence API]]&lt;br /&gt;
&lt;br /&gt;
; Hibernate Shards&lt;br /&gt;
: Zugriff auf [[Denormalisierung#Fragmentierung|horizontal partitionierte]] Datenbanktabellen&lt;br /&gt;
&lt;br /&gt;
; Hibernate Validator&lt;br /&gt;
: Definition von Daten-Integritäts- und Validierungsregeln in [[JavaBean]]-Klassen mittels [[Annotation (Java)|Annotations]]&lt;br /&gt;
&lt;br /&gt;
; Hibernate Search&lt;br /&gt;
: Transparente Erstellung eines Volltextindexes und Volltextsuche mit [[Lucene]]&lt;br /&gt;
&lt;br /&gt;
; Hibernate Tools&lt;br /&gt;
: Entwicklungstools für [[Eclipse (IDE)|Eclipse]] und [[Apache Ant|Ant]]&lt;br /&gt;
&lt;br /&gt;
== NHibernate ==&lt;br /&gt;
NHibernate ist das Gegenstück zu Hibernate für das [[.NET Framework]]&amp;lt;ref&amp;gt;[https://nhibernate.info/ nhibernate.info]&amp;lt;/ref&amp;gt;, ab Version 5.1 wird auch [[.NET Core]] unterstützt. Aktuell (Stand: Juni 2023) ist die Version 5.4.3.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://github.com/nhibernate/nhibernate-core/releases |titel=Releases of nhibernate-core |abruf=2023-07-27 |sprache=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NHibernate ist mehr als eine reine C#-Portierung, vielmehr nutzt sie die zusätzlichen Möglichkeiten von C# wie z.&amp;amp;nbsp;B. Properties. Die Verwendung bietet sich an als Alternative zum [[Entity Framework]].&lt;br /&gt;
&lt;br /&gt;
=== Unterprojekte ===&lt;br /&gt;
Zu NHibernate gibt es ebenfalls eine Reihe von Unterprojekten. So kann mit &amp;#039;&amp;#039;&amp;#039;Fluent NHibernate&amp;#039;&amp;#039;&amp;#039; die Erstellung der xml-Dateien für das Mapping vermieden werden. Das Automapping erlaubt es, auf eine erneute Aufzählung einzelner Attribute zu verzichten. Für die Konfiguration macht Fluent NHibernate intensiven Gebrauch von Lambda-Ausdrücken&amp;lt;ref&amp;gt;[http://www.fluentnhibernate.org/ www.fluentnhibernate.org]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Geschichte und Verbreitung von Hibernate ==&lt;br /&gt;
Hibernate wurde 2001 von einem Team aus Java-Entwicklern unter Gavin King entwickelt. Das Unternehmen [[JBoss|JBoss, Inc.]], Hersteller des [[Freie Software|freien]] Java-[[Anwendungsserver]]s [[WildFly]], stellte später einige der wichtigsten Hibernate-Entwickler ein, um die Integration von Hibernate in den Application Server voranzutreiben.&lt;br /&gt;
&lt;br /&gt;
Die Version 3.x brachte Funktionalitäten wie Session-basierte Filter, JDK-5.0-[[Annotation (Java)|Annotations]] und -[[Generische Programmierung in Java|Generics]], DB-Schema-Validierung (V 3.1), [[Jakarta Persistence API|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 [[Apache Maven|Maven]]-Unterstützung (V 3.3).&amp;lt;ref&amp;gt;{{Webarchiv|url=http://community.jboss.org/wiki/HibernateRoadmap |wayback=20110505063324 |text=Hibernate Road Map |archiv-bot=2023-05-30 08:22:49 InternetArchiveBot }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hibernate 4.x brachte insbesondere diverse Verbesserungen im Logging und Integrator sowie [[Refactoring]]s, welche die Arbeit mit Hibernate erleichtern. Darüber hinaus brachte Hibernate 4.0 [[Mandantenfähigkeit]] mit ein oder mehreren Datenbankinstanzen oder Datenbankschemas.&amp;lt;ref&amp;gt;[http://in.relation.to/Bloggers/MultitenancyInHibernate Multi-tenancy in Hibernate]&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://in.relation.to/Bloggers/HibernateCore40IsFinal Hibernate Core 4.0 is Final]&amp;lt;/ref&amp;gt; Ab Version 4.3 implementiert Hibernate die JPA 2.1-Spezifikation.&amp;lt;ref&amp;gt;[http://in.relation.to/Bloggers/HibernateORM430FinalRelease Hibernate ORM 4.3.0.Final Release]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die aktuelle Version 5.x von Hibernate definiert das Metamodell neu und baut die Mandantenfähigkeit weiter aus.&amp;lt;ref&amp;gt;{{Webarchiv|url=https://community.jboss.org/wiki/HibernateRoadmap#5.0 |wayback=20120531181212 |text=Hibernate Roadmap |archiv-bot=2023-05-30 08:22:49 InternetArchiveBot }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ab Version 6.x wurde der javax-Namespace durch jakarta ausgetauscht. Hierbei handelt es sich nur um eine Änderung des Namens ohne funktionale Änderungen. Außerdem kann ab dieser Version per Position aus einem ResultSet gelesen werden, zusätzlich zum Zugriff über den Namen.&amp;lt;ref&amp;gt;{{Internetquelle |autor=Steve Ebersole |url=https://in.relation.to/2022/03/31/orm-60-final/ |titel=Hibernate 6.0 Final |datum=2022-03-31 |sprache=en |abruf=2022-12-15}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&amp;lt;ref&amp;gt;{{Webarchiv|text=Product Evaluation FAQ |url=https://www.hibernate.org/263.html |wayback=20090427192211 |archiv-bot=2018-04-14 21:47:32 InternetArchiveBot }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Java Data Objects]] (JDO) – genormte Persistenz-API für beliebige Datenbanken&lt;br /&gt;
* [[Jakarta Persistence API]] (JPA) – Persistenz-API für relationale Datenbanken, Nachfolger von JDO&lt;br /&gt;
* [[Spring (Framework)]]&lt;br /&gt;
* [[Serialisierung]]&lt;br /&gt;
* [[iBATIS]] – Persistenzframework ohne ORM-Funktionalität&lt;br /&gt;
* [[EclipseLink]] – ähnliches Persistenzframework wie Hibernate, JPA-Referenzimplementierung&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Christian Bauer, Gavin King: &amp;#039;&amp;#039;Java-Persistence mit Hibernate&amp;#039;&amp;#039;, Hanser Verlag, 2007, ISBN 978-3-446-40941-5&lt;br /&gt;
* Richard Oates, Thomas Langer, Stefan Wille, Torsten Lueckow, Gerald Bachlmayr: &amp;#039;&amp;#039;Spring &amp;amp; Hibernate. Eine praxisbezogene Einführung&amp;#039;&amp;#039;, Hanser Verlag, 2006, ISBN 978-3-446-40457-1&lt;br /&gt;
* Sebastian Hennebrüder: &amp;#039;&amp;#039;Hibernate, Das Praxisbuch für Entwickler&amp;#039;&amp;#039;, Galileo Press, 2007, ISBN 978-3-89842-635-0&lt;br /&gt;
* Dave Minter, Jeff Linwood, Reinhard Engel: &amp;#039;&amp;#039;Einführung in Hibernate&amp;#039;&amp;#039;, Mitp-Verlag, 2007, ISBN 978-3826617942&lt;br /&gt;
* Bernd Müller, Harald Wehr: &amp;#039;&amp;#039;Java-Persistence-API mit Hibernate&amp;#039;&amp;#039;, Addison-Wesley, 2007, ISBN 978-3827325372&lt;br /&gt;
* Robert F. Beeger, Arno Haase, Stefan Roock, Sebastian Sanitz: &amp;#039;&amp;#039;Hibernate: Persistenz in Java-Systemen mit Hibernate 3.2 und dem Java Persistence API&amp;#039;&amp;#039;, Dpunkt Verlag, 2007, ISBN 978-3898644471&lt;br /&gt;
* Markus Kehle, Hien Robert: &amp;#039;&amp;#039;Hibernate und die Java Persistence API&amp;#039;&amp;#039;, Entwickler.Press, 2006, ISBN 978-3935042963&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://hibernate.org/ Projekt-Website]&lt;br /&gt;
* [https://nhibernate.info/ NHibernate – Hibernate für .NET]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Normdaten|TYP=s|GND=4785089-9}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Persistenzframework]]&lt;br /&gt;
[[Kategorie:Freie Software]]&lt;br /&gt;
[[Kategorie:Java-Bibliothek]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Meierberg</name></author>
	</entry>
</feed>