Hibernate + jOOQ + Flyway = Die besten relationalen Persistenzframeworks in einem Stack

Big Data & Algorithmic Business
11.09.2019


9:10 – 17:15 Uhr
HSR Hochschule für Technik Rapperswil
Max. Teilnehmer: 20

Einleitung

Hibernate hat sich in vielen Teams aufgrund der guten Unterstützung von CRUD-Operationen als Standardlösung zur Speicherung relationaler Daten etabliert. Es bietet für einige andere häufig zeitgleich auftretende Fragestellungen allerdings keine guten Antworten.

Komplexe Datenbankabfragen können mit Hibernates Abfragesprache JPQL nicht abgebildet werden und bei der Verwendung nativer SQL Abfragen erhält man als Entwickler kaum Unterstützung.

Ähnlich schlecht sieht es bei der Verwaltung des Datenbankschemas aus. Hibernate ermöglicht zwar die initiale Generierung der Tabellen, diese sind aber meist ineffizient und erfordern weitere Anpassungen. Und die Migration eines vorhandenen Schemas ist mit Hibernate überhaupt nicht möglich.

jOOQ und Flyway bieten für diese Aufgaben deutlich bessere Lösungen. Erfahrene Entwickler integrieren die beiden Frameworks daher häufig mit Hibernate.

jOOQs DSL ermöglicht die einfache und typsichere Programmierung von SQL-Abfragen. Dabei stehen sowohl die Features des SQL-Standards als auch verschiedene datenbankspezifische Funktionalitäten zur Verfügung. Der Mächtigkeit der eigenen Abfragen sind somit kaum Grenzen gesetzt.

Flyway ist eines der verbreitetsten Frameworks zur versionsbasierten Migration von Datenbankschemata und ermöglicht die automatische oder manuelle Bestimmung und Ausführung aller erforderlichen Migrationsschritte.

Mit etwas Geschick lassen sich die drei Frameworks nahtlos miteinander integrieren, sodass für jede Aufgabe das optimale Werkzeug zur Verfügung steht. Wie dies genau funktioniert und worauf dabei zu achten ist, zeige ich in diesem Workshop.

Programm

Zu Beginn des Workshops werden die optimalen Anwendungsszenarien und die Schwierigkeiten in der Verwendung von JPA und Hibernate kurz erläutert. Darauf aufbauend werden die Vorteile der Integration von Hibernate mit jOOQ und Flyway aufgezeigt.

Im Anschluss werden die Möglichkeiten zur versionsbasierten Datenbankmigration mit Flyway und dessen Integration mit Hibernate anhand eines Beispiels erarbeitet. Hierbei werden sowohl einfache, SQL-basierte Migrationen als auch komplexe, in Java implementierte Migrationsschritte eingesetzt.

In der zweiten Hälfte des Workshops wird jOOQ vorgestellt und gezeigt, wie es mit Hibernate und Flyway integriert werden kann. Dabei liegt das Hauptaugenmerk auf der Definition und Ausführung komplexer Abfragen im Kontext einer aktuellen Hibernate Session und der automatisierten Anpassung von jOOQs Metamodel an die mit Hilfe von Flyway ausgeführten Datenbankmigrationen.

Kursziel

Die Teilnehmenden erhalten einen Überblick über die Stärken und Schwächen von Hibernate, jOOQ und Flyway. Sie lernen die drei Frameworks miteinander zu integrieren und für den jeweiligen Anwendungsfall optimal einzusetzen.

Adressaten

Softwareentwickler*innen und -architekt*innen, die ihre Hibernate-basierte Persistenzschicht um mächtige Werkzeuge erweitern möchten um effizientere Anwendungen zu entwickeln.

Voraussetzungen

Es werden grundlegende Kenntnisse in der Verwendung von JPA und Hibernate vorausgesetzt. Kenntnisse oder praktische Erfahrungen mit jOOQ und Flyway sind nicht erforderlich.

Infrastruktur

Jeder Teilnehmende sollte einen eigenen Laptop mitbringen. Die Beispielprojekte werden vor dem Workshop bereitgestellt.

Referenten

Thorben Janssen

Freiberufler


Thorben Janssen löst als freiberuflicher Consultant und Trainer Persistenzprobleme mit JPA und Hibernate. Er ist Autor des Amazon Bestsellers Hibernate Tips - More than 70 solutions to common Hibernate problems und internationaler Redner mit fast 20 Jahren Erfahrung in der Entwicklung von Anwendungen auf Basis von Java EE. Auf seinem Blog www.thoughts-on-java.org schreibt er mehrmals wöchentlich über JPA, Hibernate und andere Persistenztechnologien.