Start / Blog

Blog

Repository statt SQL im Code: eine Schnittstelle, die nichts von der Datenbank verrät

Der direkte Weg ist verlockend: Verbindung öffnen, SQL absetzen, Ergebnis auslesen — mitten in der Fachlogik. Er rächt sich an einer Stelle, an die man zuerst nicht denkt.

Eine Schnittstelle ohne Technikbegriffe

Ein Repository ist eine Schnittstelle über der Speicherung. Wer sie nutzt, kennt weder SQL noch Verbindungen — sie spricht von Kursen, nicht von Tabellen. Entscheidend ist dabei ein Detail, das man leicht übersieht: In der Signatur hat SQLException nichts verloren. Sonst steht die Technik in der Abstraktion, und jeder Aufrufer muss sie mitbehandeln.

Dazu gehört ein eigener Domänentyp. Der Datensatz aus einer fremden API ist an deren Format gebunden; das eigene Modell sollte es nicht sein.

Der eigentliche Gewinn sind die Tests

Die übliche Begründung lautet: Man kann die Datenbank austauschen. Das stimmt, passiert aber selten. Häufiger zahlt sich etwas anderes aus — die Fachlogik lässt sich prüfen, ohne dass eine Datenbank läuft. Für ein überschaubares Projekt genügen dafür zehn Zeilen: eine zweite Umsetzung der Schnittstelle, die ihre Daten in einer Liste hält. Eine Mock-Bibliothek braucht es dafür noch nicht.

Was hinter der Schnittstelle bleibt

Dort steckt dann die eigentliche Sorgfalt: PreparedStatement mit Platzhaltern statt zusammengesetzter Zeichenketten, damit Eingaben die Struktur der Anfrage nicht verändern können. try-with-resources, damit Verbindungen auch im Fehlerfall schließen. Und eine eigene Ausnahme, die den technischen Fehler übersetzt, statt ihn nach außen durchzureichen.

Mehr dazu im Seminar

Wie das Schritt für Schritt entsteht — vom Zuschnitt in Maven-Module über H2 und JDBC bis zum Test ohne Datenbank — zeigt das Modul Datenbankzugriff.

Zum Seminar Java SE in der Praxis

← Alle Beiträge