Hibernate (framework)

Winterschlaf orm
Hibernate logo a.png
Entwickler (en) roter Hut
Erstveröffentlichung 23. Mai 2001; Vor 21 Jahren
Stabile Version
6.1.Final / 14. Juni 2022; Vor 45 Tagen[1]
Vorschau -Version
6.0.0.beta1 / 11. Oktober 2021; vor 9 Monaten[2]
Repository
Geschrieben in Java
Betriebssystem Plattformübergreifend (JVM)
Plattform Java virtuelle Maschine
Typ Objekt -Relationskartierung
Lizenz Gnu weniger allgemeine öffentliche Lizenz
Webseite überwintern.org

Winterschlaf orm (oder einfach Überwintern) ist ein Objekt -Relationskartierung Werkzeug für das Java Programmiersprache. Es liefert a Rahmen zum Zuordnen eines objektorientierter Domänenmodell zu a relationale Datenbank. Winterschlafgriffe Objekt -Relationalimpedanz -Missverhältnis Probleme, indem Sie direkt ersetzen, hartnäckig Die Datenbankzugriffe mit hochrangigen Objekthandhabungsfunktionen.

Winterschlaf ist gratis Software das ist unter dem verteilt Gnu weniger allgemeine öffentliche Lizenz 2.1.

Die Hauptfunktion von Hibernate ist die Zuordnung von Java -Kursen bis Datenbanktabellenund Mapping von Java -Datentypen zu Sql Datentypen. Hibernate bietet auch Datenabfrage- und Abrufeinrichtungen. Es generiert SQL -Anrufe und entlastet den Entwickler von der manuellen Handhabung und Objektumwandlung des Ergebnissatzes.

Kartierung

Die Zuordnung von Java -Klassen in Datenbanktabellen wird durch die Konfiguration eines implementiert Xml Datei oder durch Verwendung Java -Anmerkungen. Bei Verwendung einer XML -Datei kann Hibernate können generieren Skelett Quellcode für die Persistenzklassen. Dies ist Hilfsmittel, wenn Anmerkungen verwendet werden. Hibernate kann die XML -Datei oder die Java -Anmerkungen verwenden, um die zu pflegen Datenbankschema.

Es gibt Einrichtungen zum Anordnen Eins-zu-Many und viel zu viel Beziehungen zwischen Klassen. Neben der Verwaltung von Assoziationen zwischen Objekten kann auch Hibernate auch verwalten reflexiv Assoziationen, bei denen ein Objekt eine Eins-zu-Viele-Beziehung zu anderen Fällen der Klasse Typ.

Hibernate unterstützt die Zuordnung von benutzerdefinierten Werttypen. Dies ermöglicht die folgenden Szenarien:

  • Überschreiben Sie den Standard -SQL -Typ beim Zuordnen einer Spalte in eine Eigenschaft.
  • Java zuordnen Aufschwung Zu Säulen, als wären sie regelmäßige Eigenschaften.
  • Zuordnung einer einzelnen Eigenschaft auf mehrere Spalten.

Definition: Objekte in einem objektorientierter Anwendung folgen Oop Prinzipien, während Objekte im Back-End folgen Datenbanknormalisierung Prinzipien, die zu unterschiedlichen Repräsentationsanforderungen führen. Dieses Problem heißt ""Objekt -Relationalimpedanz -Missverhältnis". Mapping ist ein Weg, um das Problem der Objekt -Relationsimpedanz zu lösen.

Das Mapping informiert das ORM -Tool darüber, welches Java -Klasse -Objekt in welcher Datenbanktabelle speichert.

Hibernate -Abfragesprache (HQL)

Hibernate bietet a Sql Inspirierte Sprache namens Hibernate Query Language (HQL) zum Schreiben von SQL-ähnlichen Abfragen gegen die Datenobjekte von Hibernate. Kriterien Abfragen werden als eine bereitgestellt objektorientierter Alternative zu HQL. Kriterienabfragen werden verwendet, um die Objekte zu ändern und die Einschränkung für die Objekte bereitzustellen. HQL (Hibernate-Query-Sprache) ist die objektorientierte Version von SQL. Es generiert datenbankunabhängige Abfragen, sodass datenbankspezifische Abfragen nicht schreiben müssen. Ohne diese Fähigkeit müsste die Änderung der Datenbank auch einzelne SQL -Abfragen geändert werden, was zu Wartungsproblemen führt.

Beharrlichkeit

Hibernate bietet transparente Ausdauer für Einfache alte Java -Objekte (Pojos). Die einzige strenge Voraussetzung für eine anhaltende Klasse ist a No-Argument Constructor, wenn auch nicht unbedingt public. Das richtige Verhalten in einigen Anwendungen erfordert auch besondere Aufmerksamkeit für die equals() und hashCode() Methoden in den Objektklassen.[3] Hibernate empfiehlt, ein Identifikatorattribut bereitzustellen, und dies ist eine obligatorische Anforderung in einer zukünftigen Veröffentlichung.[4]

Sammlungen von Datenobjekten werden typischerweise in Java -Sammlungsklassen gespeichert, wie z. B. Implementierungen der Set und List Schnittstellen. Java GenerikaIn Java 5 eingeführt werden ebenfalls unterstützt. Hibernate kann konfiguriert werden Faule Last damit verbundene Sammlungen. Lazy Loading ist die Standardeinstellung nach Hibernate 3.

Verwandte Objekte können konfiguriert werden Kaskade Operationen von einem Objekt zum anderen. Zum Beispiel ein Elternteil Album Das Klassenobjekt kann so konfiguriert werden save und delete Operationen an sein Kind Track Klassenobjekte.

Integration

Hibernate kann beides in Standalone verwendet werden Java Anwendungen und in Java ee Anwendungen verwenden Servlets, Ejb Sitzungsbohnen und JBI Servicekomponenten. Es kann auch als Funktion in anderen Programmiersprachen aufgenommen werden. Zum Beispiel, Adobe Integrierte Winterschlaf in Version 9 von Coldfusion (Das läuft auf J2EE -App -Servern) mit einer Abstraktionsschicht neuer Funktionen und Syntax in hinzugefügt Cfml.

Entitäten und Komponenten

In Hibernate Jargon, ein Einheit ist ein eigenständiges Objekt bei Hibernate's hartnäckig Mechanismus, der unabhängig von anderen Objekten manipuliert werden kann. Dagegen a Komponente ist einer Entität untergeordnet und kann nur in Bezug auf diese Entität manipuliert werden. Zum Beispiel kann ein Albumobjekt eine Entität darstellen; Aber das Tracks -Objekt, das den Albumobjekten zugeordnet ist, würden a darstellen Komponente Wenn man von der Albumentität angenommen wird, können Tracks nur über das Albumobjekt aus der Datenbank gespeichert oder abgerufen werden. Im Gegensatz zu J2EE kann Hibernate Datenbanken wechseln.

Geschichte

Hibernate wurde 2001 von Gavin King mit Kollegen von Cirrus Technologies als Alternative zur Verwendung von Entitätsbohnen im EJB2-Stil begonnen. Das ursprüngliche Ziel war es, bessere Beharrlichkeitsfähigkeiten zu bieten als die von EJB2 angebotenen; Durch Vereinfachung der Komplexität und Ergänzung bestimmter fehlender Merkmale.

Anfang 2003 begann das Hibernate -Entwicklungsteam mit Hibernate2 -Releases, was während der ersten Veröffentlichung viele bedeutende Verbesserungen bot.

Jboss, Inc. (jetzt Teil von roter Hut) später die Lead -Hibernate -Entwickler eingestellt, um seine Entwicklung zu fördern.

Im Jahr 2005 wurde Hibernate Version 3.0 veröffentlicht. Zu den wichtigsten Funktionen gehörten eine neue Interceptor/Callback -Architektur, benutzerdefinierte Filter und JDK 5.0 Anmerkungen (Java Metadaten Besonderheit). Ab 2010Hibernate 3 (Version 3.5.0 und UP) war eine zertifizierte Implementierung der Java Persistenz API 2.0 Spezifikation über einen Wrapper für das Kernmodul, das Konformität mit dem JSR 317 -Standard bietet.[5]

Im Dezember 2011 wurde Hibernate Core 4.0.0 Finale veröffentlicht. Dies beinhaltet neue Funktionen wie z. Multi-Messen Unterstützung, Einführung von Serviceregistry (eine wesentliche Änderung des Hibernate -Aufbaus und der Verwaltung von "Diensten"), eine bessere Sitzungsöffnung von SessionFactory, verbesserte Integration über eine verbesserte Integration durch org.hibernate.integrator.spi.integrator und automatische Entdeckung, Internationalisierung Support, Nachrichtencodes bei der Protokollierung und eine stärkere Unterscheidung zwischen API, SPI oder Implementierungsklassen.[6]

Im Dezember 2012 wurde Hibernate ORM 4.1.9 Finale veröffentlicht.[7]

Im März 2013 wurde Hibernate ORM 4.2 Finale veröffentlicht.[8]

Im Dezember 2013 wurde Hibernate ORM 4.3.0 Finale veröffentlicht.[9] Es verfügt über Java Persistenz API 2.1.

Im September 2015 wurde Hibernate ORM 5.0.2 Finale veröffentlicht. Es hat Bootstrapping, Hibernate-Java8, Hibernate-räumliche Unterstützung, Karaf-Unterstützung verbessert.

Im November 2018 wurde Hibernate ORM 5.1.17 Finale veröffentlicht. Dies ist die endgültige Veröffentlichung der 5.1 -Serie.

Im Oktober 2018 wurde Hibernate ORM 5.3 Finale veröffentlicht. Es zeigte sich Java Persistenz API 2.2 Vererbungsdachung.

Im Dezember 2018 wurde Hibernate ORM 5.4.0 Finale veröffentlicht.[10]

Programmierschnittstelle

Die Winterschlaf -API ist in der bereitgestellt Java -Paket org.hibernate.[11]

org.hiberNate.sessionFactory Grenzfläche

org.hibernate.session interface

Die Schnittstelle org.hiberNate.session[12] stellt eine Hibernate -Sitzung dar, d. H. Der Hauptpunkt der Manipulation, die in den Datenbankeinheiten durchgeführt wird. Die letzteren Aktivitäten umfassen (unter anderem), die den Persistenzzustand verwalten (vorübergehend, bestehen, losgelöst[Klarstellung erforderlich]) der Objekte, abrufen die anhaltenden aus der Datenbank und die Verwaltung der Transaktionsabgrenzung[Klarstellung erforderlich].

Eine Sitzung soll so lange dauern wie die logische Transaktion in der Datenbank. Aufgrund der letzteren Funktion wird nicht erwartet, dass Sitzungen implementiert sind, sondern von mehreren Clients verwendet werden.

Softwarekomponenten

Die Hibernate -Software enthält die folgenden Komponenten:[13]

  • Hibernate Orm (bezeichnet als Hibernate -Kern vor Version 4.1[14]) - Die Basissoftware für eine Objekt -Relation -Mapping -Lösung für Java -Umgebungen[15]
  • Hibernate -Anmerkungen (in Hibernate Core/ORM seit Version 3.6 zusammengeführt[16])-Metadaten, die die Transformation von Daten zwischen dem objektorientierten Modell und dem relationalen Datenbankmodell gemäß JSR 317 regelt Java Persistenz API (JPA 2)[17]
  • Hibernate entityManager (in Hibernate Core/ORM seit Version 5.2 zusammengeführt[18]) - Zusammen mit Winterschlafanmerkungen eine Wrapper, die einen JSR 317 implementiert Java Persistenz API (JPA 2) Persistenzlösung[19]
  • Hibernate Envers - Auditing und Versioning persistierter Klassen[20]
  • Hibernate OGM (Objekt/Grid Mapper) - Eine Erweiterung zum Speichern von Daten in a NoSQL Laden[21]
  • Winterschlafschards - horizontale Partitionierung Für mehrere relationale Datenbanken[22]
    • Während Hibernate -Scherben nicht mit 4.x -Veröffentlichungen des Hibernate -Kerns kompatibel sind, wurde in der 4.0 -Release einige der Shards -Fähigkeiten in den Kern integriert
  • Hibernate -Suche - integriert die Funktionalität der Volltextbibliothek aus Apache Lucene Im Hibernate- und JPA -Modell[23]
  • Hibernate -Tools - eine Reihe von Tools, die als Suite von implementiert sind Finsternis Plugins und Ameise Aufgaben enthalten in JBoss Developer Studio[24]
  • Hibernate Validator - die Referenzimplementierung von JSR 303 Bean -Validierung[25]
  • Hibernate Metamodel Generator - Ein Annotationsprozessor, der JSR 317 erstellt Java Persistenz API (JPA 2) Statische Metamodellklassen mit dem JSR 269 Steckbare Annotationsverarbeitungs -API[26]
  • Nhibernate - Eine Objekt -Relationskartierungslösung für die .NET Framework[27]

Siehe auch

Verweise

  1. ^ "Hibernate ORM 6.1.Final freigegeben". Abgerufen 15. Juni 2022.
  2. ^ "Hibernate ORM 6.0.0.beta1 veröffentlicht". Abgerufen 26. Oktober 2021.
  3. ^ "Gleich und Hashcode". JBoss Community.
  4. ^ "Hibernate -Benutzerhandbuch: 2.5.5. Geben Sie das Identifikator -Attribut an". JBoss Community.
  5. ^ "Hibernate 3.5.0-Finale-Freisetzung". Im Verhältnis zu...
  6. ^ "Veröffentlichungen - Hibernate Orm". Hibernate.org.
  7. ^ "Archivierte Kopie". Archiviert von das Original 2013-01-29. Abgerufen 2012-12-13.{{}}: CS1 Wartung: Archiviertes Kopie als Titel (Link)
  8. ^ "Archivierte Kopie". Archiviert von das Original Am 2014-12-05. Abgerufen 2014-11-27.{{}}: CS1 Wartung: Archiviertes Kopie als Titel (Link)
  9. ^ "Archivierte Kopie". Archiviert von das Original Am 2014-12-05. Abgerufen 2014-11-27.{{}}: CS1 Wartung: Archiviertes Kopie als Titel (Link)
  10. ^ "Veröffentlichungen - Hibernate Orm". Hibernate.org.
  11. ^ "Winterschlaf Javadocs". docs.jboss.org.
  12. ^ "Sitzung (Hibernate Javadocs)". docs.jboss.org.
  13. ^ "Winterschlaf: Relationale Persistenz für Java und .NET". JBoss Community.
  14. ^ "Hibernate Orm 4.1.0 Release". JBoss Community.
  15. ^ "Winterschlaf - relationale Persistenz für idiomatische Java". JBoss Community.
  16. ^ "Kein Hibernate-Annotations-Modul mehr". JBoss Community.
  17. ^ "Winterschlafanmerkungen". JBoss Community.
  18. ^ "Hibernate-ent-ent dem Hibernate-Core verschmolzen". JBoss Community.
  19. ^ "Hibernate entityManager". JBoss Community.
  20. ^ "Hibernate Envers - Easy Entity Auditing". JBoss Community.
  21. ^ "Hibernate OGM". JBoss Community.
  22. ^ "Winterschlafschards". JBoss Community.
  23. ^ "Hibernate -Suche". JBoss Community.
  24. ^ "Winterschlafwerkzeuge für Sonnenfinsternis und Ameise". JBoss Community.
  25. ^ "Hibernate Validator". JBoss Community.
  26. ^ "Hibernate Metamodel Generator". JBoss Community.
  27. ^ "Nhibernate". Nhibernate Forge. Archiviert von das Original Am 2012-07-12. Abgerufen 2011-04-26.

Literaturverzeichnis

Externe Links