Domain-Sprache ElSql als Alternative zum OR-Mapper

Das freie ElSql verwendet eine SQL stark ähnelnde Sprache, um Java-Programme an relationale Datenbanken anzubinden. Es will die Nachteile objekt-relationaler Mapper vermeiden.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
Lesezeit: 2 Min.
Von
  • Christian Kirsch

Wer relationale Datenbanken zum dauerhaften Speichern seiner Java-Objekte einsetzt, verwendet häufig einen objekt-relationalen Mapper wie Hibernate. Diese Produkte bringen jedoch eine zusätzliche komplexe Softwareschicht mit. Die wollen die Entwickler von OpenGamma mit ihrem jetzt vorgestellten freien ElSql umgehen.

Es bezeichnet eine an SQL angelehnte einfache Sprache. Sie kennt benannte Code-Blöcke, verwendet Einrückungen zur Abgrenzung von Statements und bietet ein simples IF-Statement. Außerdem erzeugt es flexibel WHERE-Klauseln und je nach Bedarf LIKE- oder Gleichheits-Bedingungen. In ElSql geschriebene Anweisungen speichert man in separaten Dateien, die das Java-Programm zur Laufzeit lädt.

Das Projekt-Wiki zeigt ein knappes Beispiel für ein ElSql-Dokument. Mit @ markierte Zeilen enthalten ElSql-spezifische Anweisungen, alles andere ist im Wesentlichen SQL:

@NAME(SelectBlogs)
@PAGING(:paging_offset,:paging_fetch)
SELECT @INCLUDE(CommonFields)
FROM blogs
WHERE id = :id
@AND(:date)
date > :date
@AND(:active)
active = :active
ORDER BY title, author
@NAME(CommonFields)
title, author, content

Es zeigt das seitenweise Abfragen von Blog-Einträgen, wobei die WHERE-Bedingung von den optionalen Parametern :date und :active abhängt. Sind beide vorhanden, werden sie mit AND verknüpft. Von den Unterschieden zwischen den unterstützten Datenbanken beim seitenweisen Abfragen abstrahiert das @PAGING-Statement. Hier nicht gezeigt ist @LIKE, das eine LIKE-Bedingung erstellt, wenn die übergebene Variable eine Wildcard enthält. Andernfalls wird eine einfache Gleichheitsbedingung erzeugt.

ElSQL soll mit allen wichtigen SQL-Datenbanken zusammenarbeiten. Die Entwickler nennen ausdrücklich PostgreSQL, HSQL, MySQL, Microsofts SQL Server und Vertica. Das Projekt steckt noch in der Anfangsphase, so scheinen andere Statements als einfache SELECTs noch nicht vorgesehen: INSERT, UPDATE und DELETE fehlen ebenso wie JOINs. (ck)