Blog

Spring4D ORM in Delphi

20 Mrz 2017

Ein ORM ist ein praktisches Werkzeug – auch im Delphi-Umfeld. Doch was steckt dahinter? Wir sprachen mit Stefan Glienke über die Vorzüge und die Nachteile eines ORM.

Seit einigen Jahren bereits ist das Spring4D ORM im Delphi-Umfeld im Gespräch. Kein Wunder, schließlich ist ein ORM ein tolles Werkzeug, um die Arbeiten mit Datenbanken zu vereinfachen.

Spring4D ORM

Dennoch gibt es natürlich auch immer wieder kritische Stimmen, wenn es um den Einsatz eines ORM geht. Wir sprachen daher mit einem der Mitentwickler – Stefan Glienke – über das ORM. Außerdem gibt er uns einen Ausblick auf das kommende Release.

Herr Glienke, warum sollte man Ihrer Meinung nach generell auf ein ORM setzen?

Stefan Glienke: Es gibt mehrere Gründe. Einer davon kann sein, dass man mit seiner Software verschiedene Datenbanken ansprechen möchte: In diesem Fall bietet ein ORM einen guten Weg, die Unterschiede bei SQL-Syntax bzw Dialekt zu abstrahieren. Durch die Modellierung der Daten über Klassen kann es die Entwicklung beschleunigen, da man sich nicht mit der Generierung von SQL und dem Mappen von Query-Ergebnissen befassen muss.

Bereits seit Anfang 2012 ist Spring4D in Delphi-Kreisen im Gespräch – ein Thema, mit dem Sie sich ebenfalls beschäftigen. Wie hat sich das Framework in den letzten Jahren entwickelt?

Stefan Glienke: In Spring4D fließen viele Ideen und Konzepte ein, die Entwickler aus anderen Sprachen und Umgebungen gewohnt sind, die aber in der Delphi RTL nicht vorhanden sind – zum Beispiel eine große Auswahl an Interface-basierten Collection-Typen, von einfachen Listen bis zu Multimaps, mit einem komfortablen API, um auch komplexe Operationen auszuführen.

Auch der DI-Container wurde in den vergangenen Jahren sehr weiterentwickelt und kann sich von seinem Funktionsumfang durchaus mit namhaften Containern aus anderen Sprachen messen. Dazu zählen sowohl seine flexible Architektur, die es möglich macht, ihn auf eigene Anforderungen anzupassen, als auch die eingebauten Möglichkeiten, wie automatisch erzeugte Factories oder die Unterstützung des Decorator-Patterns.

Mit der 1.2er-Version, die bereits längere Zeit in der Beta ist und zeitnah zum Delphi 10.2-Release veröffentlicht wird, haben wir einiges rund um das sogenannte Interception hinzugefügt und bringen auch eine leistungsfähige Mocking-Lösung mit, die einem beim Unit-Testing gute Dienste leistet.

Zu den Neuerungen und geplanten Features für Version 1.3 werde ich bald mehr Informationen auf meinem Blog veröffentlichen.

Wie steht es um die Erweiterbarkeit des Spring4D ORM? Wie groß ist der Aufwand, es an neue Datenbanksysteme anzubinden?

Stefan Glienke: Es ist sehr einfach, das ORM sowohl für zusätzliche Datenbank-Komponenten als auch für andere Datenbanksysteme zu erweitern. Es gibt Interfaces und/oder Basisklassen, die man entsprechend implementieren muss. Beides werde ich auch im Workshop zeigen.

Immer wieder geraten ORMs in Verruf, gerade, wenn es um Performancefragen geht. Ist das ein ernstzunehmendes Problem oder überwiegen die Vorteile?

Stefan Glienke: Wie so oft in der Softwareentwicklung bringt jede Abstraktion auch einen gewissen Grad an Overhead. Es liegt natürlich am ORM, diesen Overhead so gering wie möglich zu halten. Auch was die Generierung von optimierten Statements und die Ausführung der Abfragen angeht – natürlich sind wir da auch noch nicht dort angelangt, wo ORMs wie Hibernate sind. Man sollte sich trotzdem den Weg offenhalten, bei Bedarf sein handgeschriebenes SQL für kritische Teile auszuführen; auch dafür bieten wir die Möglichkeit.

Trotzdem ist ein ORM keine magische Silberkugel, die man einfach auf alles, was mit Datenbankabfragen zu tun hat, abfeuern kann. Es ist ein Werkzeug, und man muss auch wissen, wann man dieses Werkzeug nicht benutzen sollte.

Auf dem Delphi Code Camp halten Sie einen Workshop zum Spring4D ORM. Welche Einzelheiten wollen Sie den Besuchern mitgeben?

Stefan Glienke: Wir werden uns gemeinsam die Architektur und die verschiedenen Teile des ORM anschauen und lernen, wie diese zusammenarbeiten und benutzt werden. Dazu werden wir eine Anwendung entwickeln und mit verschiedenen Datenbanken ausführen. Am Ende des Tages wird jeder Teilnehmer wissen, wie er das ORM benutzen kann und kann entscheiden, ob und wie es ihm in seiner Software von Nutzen sein kann.

Geschrieben von: Thomas Wießeckel

Thomas Wießeckel ist seit Anfang 2009 Redakteur bei Software & Support Media. Seine Themengebiete umfassen Webtechnologien und -Entwicklung sowie die Bereiche Mobile Development und Open Source. Er arbeitet an regelmäßig erscheinenden Magazinen wie dem Entwickler Magazin und dem PHP Magazin mit, hat den PHP User ins Leben gerufen, betreut Sonderhefte aus dem Bereich Mobile Development, ist verantwortlich für die WebTech Conference und die Open Source Expo und lektoriert Bücher zu Themen rund um Webentwicklung. Vor seiner Zeit als Redakteur hat er Soziologie studiert und als freier PHP- und Frontend-Entwickler gearbeitet.