Hibernate für Java: Vollständiger Leitfaden mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in Hibernate: Was es ist und warum man es braucht

\n\n

Hibernate ist eine leistungsstarke, hochperformante objektrelationale Bibliothek (ORM – Object-Relational Mapping) für die Programmiersprache Java. Sie löst das grundlegende Problem, das als „objektrelationale Impedanzfehlanpassung“ bekannt ist: In Java arbeiten wir mit Objekten und Klassen, während wir in relationalen Datenbanken mit Tabellen und Datensätzen arbeiten. Hibernate wandelt Java-Objekte automatisch in SQL-Abfragen um und umgekehrt, sodass sich der Entwickler auf die Geschäftslogik konzentrieren kann, anstatt Unmengen von gleichartigem JDBC-Code schreiben zu müssen.

\n\n

Wichtige Funktionen von Hibernate:

\n
    \n
  • Automatisierung von CRUD: Erstellen, Lesen, Aktualisieren und Löschen von Datenbankeinträgen erfolgt durch die Arbeit mit Java-Objekten.
  • \n
  • Abfragesprache HQL (Hibernate Query Language): Ein objektorientiertes Analogon zu SQL, das mit Klassennamen und deren Feldern arbeitet, anstatt mit Tabellen und Spalten.
  • \n
  • Cache-Verwaltung: Integrierte Mechanismen für First-Level- und Second-Level-Cache zur Leistungssteigerung.
  • \n
  • Lazy Loading: Laden von zugehörigen Daten erst im Moment ihrer tatsächlichen Verwendung.
  • \n
  • Datenbankschema-Generierung: Möglichkeit, Tabellen in der Datenbank basierend auf Annotationen in Java-Klassen automatisch zu erstellen oder zu aktualisieren.
  • \n
  • Transaktionsunterstützung: Vollständige Integration mit dem Java Transaction API (JTA) und lokalen JDBC-Transaktionen.
  • \n
\n\n

Hibernate ist der De-facto-Standard für die Arbeit mit relationalen Datenbanken im Java-Ökosystem. Es wird in einer Vielzahl von Projekten eingesetzt – von kleinen Webanwendungen bis hin zu Unternehmenssystemen auf Enterprise-Niveau.

\n\n

Installation von Hibernate

\n\n

Im Gegensatz zu Python oder JavaScript gibt es in Java keinen einheitlichen Paketmanager wie pip oder npm. Hibernate wird über ein Build-System wie Maven oder Gradle in das Projekt eingebunden. Nachfolgend finden Sie Beispiele für beide Werkzeuge.

\n\n

Installation über Maven (empfohlen)

\n

Fügen Sie die folgenden Abhängigkeiten zur pom.xml-Datei Ihres Projekts hinzu. Wir verwenden Hibernate 6.x (die zum Zeitpunkt der Erstellung aktuelle Version) und einen Treiber für PostgreSQL (Sie können diesen durch MySQL, H2 oder einen anderen ersetzen).

\n\n
<dependencies>\n    <!-- Hibernate-Kern -->\n    <dependency>\n        <groupId>org.hibernate.orm</groupId>\n        <artifactId>hibernate-core</artifactId>\n        <version>6.3.1.Final</version>\n    </dependency>\n\n    <!-- Treiber für PostgreSQL -->\n    <dependency>\n        <groupId>org.postgresql</groupId>\n        <artifactId>postgresql</artifactId>\n        <version>42.7.1</version>\n    </dependency>\n\n    <!-- Logging (optional, aber nützlich für die Fehlersuche) -->\n    <dependency>\n        <groupId>org.slf4j</groupId>\n        <artifactId>slf4j-simple</artifactId>\n        <version>2.0.9</version>\n    </dependency>\n</dependencies>
\n\n

Installation über Gradle

\n

Fügen Sie zur build.gradle-Datei hinzu:

\n\n
dependencies {\n    implementation 'org.hibernate.orm:hibernate-core:6.3.1.Final'\n    implementation 'org.postgresql:postgresql:42.7.1'\n    implementation 'org.slf4j:slf4j-simple:2.0.9'\n}
\n\n

Nach dem Hinzufügen der Abhängigkeiten lädt Ihre IDE (IntelliJ IDEA, Eclipse) automatisch alle erforderlichen JAR-Dateien herunter.

\n\n

Schnellstart mit einem Codebeispiel

\n\n

Lassen Sie uns eine einfache Anwendung erstellen, die ein User-Objekt in der Datenbank speichert und ausliest. Der Einfachheit halber verwenden wir die eingebettete H2-Datenbank, um keinen externen Server konfigurieren zu müssen.

\n\n

Schritt 1: Konfigurationsdatei hibernate.cfg.xml

\n

Erstellen Sie im Ordner src/main/resources/

Empfehlungen