jOOQ: A peace treaty between SQL and Java

Java Desktop UIs für Enterprise Applikationen

JUGS LogoSpeaker portrait SQL hat sich lange als mächtige und ausdrucksstarke Sprache für Abfragen auf relationale Datenbanken bewährt. SQL ist etabliert, standardisiert und kaum durch alternative Abfragesprachen konkurriert. Trotzdem gibt es seit JDBC wenig relevante Schritte zur besseren Integration von SQL in Java. Die Aufmerksamkeit war auf Objekt-relationales Mapping und Sprach-Abstraktionen von höherem Grad gerichtet, so wie OQL, HQL, JPQL, CriteriaQuery. In der Zwischenzeit wurden diese Abstraktionen beinahe so komplex wie SQL selbst, trotz der Kopfschmerzen, die sie einem DBA bereiten, der das generierte SQL fast nicht korrigieren kann.

jOOQ ist ein Open Source Produkt, welches diese Lücke füllt. Es implementiert SQL selbst als interne domänen-spezifische Sprache in Java, was die typsichere Erstellung und Ausführung von SQL Befehlen von beliebiger Komplexität erlaubt. Dies beinhaltet verschachtelte Selects, "derived tables", "joins", "semi-joins", "anti-joins", "self-joins", "aliasing", sowie viele hersteller-spezifische Erweiterungen wie "stored procedures", "arrays", "user defined types", rekursives SQL, "grouping sets", "pivot tables", Fensterfunktionen und viele weitere OLAP Features. jOOQ beinhaltet einen Source-Code Generator, der es erlaubt, kompilierende Abfragen in einer modernen IDE wie Eclipse sehr effizient zu formulieren.

jOOQ ist eine gute Wahl in Java Applikationen, in denen SQL und die spezifische relationale Datenbank wirklich wichtig sind. Es ist eine Alternative, wenn JPA/Hibernate zuviel Abstraktion bietet, JDBC zu wenig. Und es zeigt, wie eine domänen-spezifische Sprache die Produktivität steigern kann, wenn sie SQL in Java internalisiert.

SPEAKER: Lukas Eder

Please register on the JUG website

Open in Google Maps