Java und SQL (23.01.) | Print |
Written by Lukas Ladenberger   
Tuesday, 19 November 2013 14:04

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 dual lizenziertes 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.

alt

Lukas Eder ist Gründer und Geschäftsführer der Data Geekery GmbH mit Sitz in Zürich und vertreibt mit seiner Firma seit 2013 Datenbankprodukte und Dienstleistungen rund um Java und SQL. Seit seinem Informatik Masterlehrgang an der EPFL mit Abschluss im 2006 ist er fasziniert von der Interaktion zwischen Java und SQL. Diese Erfahrungen hat er vor allem im Schweizer E-Banking Umfeld in verschiedenen Varianten (JDBC, Hibernate, meist mit Oracle) vertieft und mit jOOQ verbessert. Sein Wissen gibt er an verschiedenen Konferenzen, JUGs, Firmeninternen Vorträgen und in seinem Blog weiter.