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

Softwareentwicklung mit Open Source
12.09.2018


9:10 – 17:00 Uhr
ETH Zürich
Max. Teilnehmer: 16

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

SoftwareentwicklerInnen und -architektinnen, 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

Thorben Janssen


Thorben Janssen ist freiberuflicher Trainer und Autor des Buchs "Hibernate Tips - More than 70 solutions to common Hibernate problems". Er entwickelt seit mehr als 15 Jahren Anwendungen auf Basis von Java EE und ist Mitglied der JSR 365 (Contexts and Dependency Injection for JavaTM 2.0) Expert Group. Auf seinem Blog www.thoughts-on-java.org schreibt er mehrmals wöchentlich über Persistenzlösungen auf Basis von JPA, Hibernate und jOOQ.