Hibernate ORM ist eine leistungsstarke objekt-/relationale Mapping-Lösung für Java und erleichtert die Entwicklung von Persistenzlogik für Anwendungen, Bibliotheken und Frameworks.
Hibernate implementiert JPA, die Standard-API für Objekt-/relationale Persistenz in Java, bietet aber auch einen umfangreichen Satz an Funktionen und APIs, die über die Spezifikation hinausgehen.
Weitere Informationen finden Sie unter Hibernate.org.
Hibernate verwendet für seine CI-Anforderungen sowohl Jenkins- als auch GitHub-Aktionen. Sehen
Jenkins-Jobs
GitHub-Aktionen-Jobs
Der Build erfordert mindestens Java 11 und höchstens Java 17.
Hibernate verwendet Gradle als Build-Tool. Wenn Sie Gradle noch nicht kennen, lesen Sie den Abschnitt „Gradle Primer“ weiter unten.
Mitwirkende sollten den Beitragsleitfaden lesen.
Sehen Sie sich die Anleitungen zum Einrichten von IntelliJ oder Eclipse als Entwicklungsumgebung an.
Das Gradle-Build-Tool verfügt über eine erstaunliche Dokumentation. 2 insbesondere, die unverzichtbar sind:
Das Gradle-Benutzerhandbuch ist insofern ein typisches Benutzerhandbuch, als es einem thematischen Ansatz zur Beschreibung aller Funktionen von Gradle folgt.
Der Gradle DSL Guide ist einzigartig und eignet sich hervorragend, um sich schnell mit bestimmten Aspekten von Gradle vertraut zu machen.
Wir behandeln die Grundlagen, die Entwickler und Mitwirkende, die neu bei Gradle sind, wissen müssen, um schnell produktiv zu werden.
Notiz | Das Projekt definiert einen Gradle Wrapper. Der Rest des Abschnitts geht von der Ausführung durch den Wrapper aus. |
Gradle verwendet das Konzept von Build-Aufgaben (entspricht Ant-Zielen oder Maven-Phasen/-Zielen). Eine Liste der verfügbaren Aufgaben erhalten Sie über
Gradle-Aufgaben
Um eine Aufgabe modulübergreifend auszuführen, führen Sie diese Aufgabe einfach aus dem Stammverzeichnis aus. Gradle besucht jedes Unterprojekt und führt diese Aufgabe aus, wenn das Unterprojekt dies definiert. Um eine Aufgabe in einem bestimmten Modul auszuführen, können Sie entweder:
cd
in dieses Modulverzeichnis und führen Sie die Aufgabe aus
Benennen Sie den „Aufgabenpfad“. Um beispielsweise die Tests für das Modul „hibernate-core“ aus dem Stammverzeichnis auszuführen, könnten Sie gradle hibernate-core:test
sagen
Zu den allgemeinen Aufgaben, die Sie möglicherweise beim Erstellen von Hibernate verwenden, gehören:
build – Assembliert (JARs) und testet dieses Projekt
kompilieren – Führt alle Kompilierungsaufgaben aus, einschließlich der Staging-Ressourcen sowohl vom Haupt- als auch vom Testserver
jar – Erstellt ein Jar-Archiv mit allen kompilierten Klassen
test – Führt die Tests aus
publizToMavenLocal – Installiert das Projekt-JAR in Ihrem lokalen Maven-Cache (auch bekannt als ~/.m2/repository). Beachten Sie, dass Gradle dies nie verwendet, es kann jedoch nützlich sein, um Ihren Build mit anderen lokalen Maven-basierten Builds zu testen.
clean – Bereinigt das Build-Verzeichnis
Das Testen anhand einer bestimmten Datenbank kann auf zwei verschiedene Arten erfolgen:
Kommt später…
Der Hibernate-Build definiert mehrere Datenbanktest-„Profile“ in databases.gradle
“. Diese Profile können namentlich mithilfe der db
Build-Eigenschaft aktiviert werden, die entweder als JVM-System-Requisite ( -D
) oder als Gradle-Projekteigenschaft ( -P
) übergeben werden kann. Die folgenden Beispiele verwenden den Gradle-Projekteigenschaften-Ansatz.
Gradle Clean Build -Pdb=pgsql
Um einen Test über Ihre IDE auszuführen, müssen Sie sicherstellen, dass die Eigenschaftserweiterungen stattfinden. Verwenden Sie den folgenden Befehl:
Gradle Clean Compile -Pdb=pgsql
HINWEIS: Wenn Sie Tests mit einem JDBC-Treiber durchführen, der nicht über Maven Central verfügbar ist, stellen Sie sicher, dass Sie diese Treiber zu Ihrem lokalen Maven-Repo-Cache (~/.m2/repository) oder (besser) zu einem persönlichen Maven-Repo-Server hinzufügen
Sie können jeden Test für jede bestimmte Datenbank ausführen, die in einem databases.gradle
-Profil konfiguriert ist.
Sie müssen lediglich den folgenden Befehl ausführen:
./gradlew setDataBase -Pdb=pgsql
oder Sie können die Shortcut-Version verwenden:
./gradlew sDB -Pdb=pgsql
Sie können dies über das Modul tun, das Sie testen möchten, oder über den Stammordner hibernate-orm
.
Wählen Sie anschließend einfach einen beliebigen Test aus der IDE aus und führen Sie ihn wie gewohnt aus. Hibernate wählt die Datenbankkonfiguration aus der Datei hibernate.properties
aus, die von der Gradle-Aufgabe setDataBase
eingerichtet wurde.
Sie müssen nicht alle Datenbanken lokal installieren, um sie testen zu können, falls Docker verfügbar ist. Mit dem Skript docker_db.sh
können Sie eine vorkonfigurierte Datenbank starten, die zum Testen verwendet werden kann.
Sie müssen lediglich den folgenden Befehl ausführen:
./docker_db.sh postgresql
Wenn Sie das Argument weglassen, wird eine Liste möglicher Optionen ausgegeben.
Wenn die Datenbank ordnungsgemäß gestartet ist, können Sie Tests mit speziellen Profilen ausführen, die das Suffix _ci
haben, z. B. pgsql_ci
für PostgreSQL. Mithilfe der Systemeigenschaft dbHost
können Sie die IP-Adresse Ihres Docker-Hosts konfigurieren.
Der Befehl zum Ausführen von Tests könnte wie folgt aussehen:
./gradlew test -Pdb=pgsql_ci "-DdbHost=192.168.99.100"
Die folgende Tabelle zeigt eine Liste von Befehlen für verschiedene Datenbanken, die lokal getestet werden können.
Datenbank | docker_db.sh | Gradle-Befehl |
---|---|---|
H2 | - | |
HSQLDB | - | |
Apache Derby | - | |
MySQL | | |
MariaDB | | |
PostgreSQL | | |
EnterpriseDB | | |
Orakel | | |
DB2 | | |
SQL-Server | | |
Sybase ASE (jTDS) | | |
Sybase ASE (jConnect) | | |
SAP HANA | | |
KakerlakeDB | | |
TiDB | | |
Informix | | |
Um einen von docker
gestarteten Container zu stoppen, verwenden Sie den Befehl
docker stop $container_name
Ersetzen Sie docker
durch den Befehl podman
, wenn Sie podman
verwenden
ZB um den Mariadb-Container zu stoppen
docker stop mariadb