Ja, da kann ich wohl etwas beitragen:
Ich habe den Umgang mit Datenbanken beginnend bei dBase/Clipper,
Paradox gelernt und dann weiter zu
MSSQL,
mySQL und ORACLE. Da waren Delphi-seiteig TQuerys etc angesagt und das habe ich richtig gut verinnerlicht. :- )
Wir haben eine große Legacy-Anwendung, die darauf aufbaut. Die muss aber jetzt modernisiert werden + die Frage war, wie machen? Neben vielen anderen Entscheidung musste auch die der Datenanbindung gelöst werden. Ich hatte zwischenzeitlich ein paar JAVA Projekte + habe dort Hibernate etc schätzen gelernt + mittlerweile gibt es ähnliches ja für Delphi auch. Nach einigem Herumprobieren und recherchieren bin ich letztendlich zu Aurelius von TMS gekommen, wobei es andere Produkte gibt, die auch gut sind.
Die Entscheidung für TMS fiel wegen dieser Punkte:
- das ist ein mit modernen Techniken komplett neu entwickeltes Tool und enthält keine Altlasten oder Tribute an alte Delphi Versionen
- der Support von TMS ist ausgesprochen gut
- ich habe wahrscheinlich über Jahr beobachtet, wie Aurelius gereift ist und Anforderungen aus der Praxis aufgenommen wurden.
- Transaktionen werden unterstützt und Objektversionierung
Was (für mich) für ein ORM/
DB Framework spricht:
- Datenbankunabhängigkeit - Dein ORM schiebt zwischen die
DB und die Anwendung eine Schicht und dein Code funktioniert gegen
mySQL und SQLite ohne Änderung.
- Du klebst beim Programmieren nicht mehr an Tabellen und Attributen, sondern arbeitest mit Klassen und musst dir über die Datenbank keine Gedanken machen
- Es gibt kein Herumgefrickle mit
SQL Statements mehr
- Durch die Klassen erhälts du ein viel höheres maß an Testbarkeit und geringerer Abhängigkeiten
- Du entwickelst eine anderen Programmierstil, der nicht mehr an die Datenbank denkt.
Das ORM löst aber nicht alle Probleme:
- zumindest bei Aurelius gibt es (noch) keine Bulk-Operationen
- destruktive DDLs (Felder löschen) sind nicht möglich
-
SQL ist Text und als solcher leicht persistierbar, bei einem ORM geht das nicht so leicht
Aber das sind lösbare Probleme. Die Lernkurve ist allerdings auch beachtlich, für mich hat es eine Weile gedauert, das Konzept zu verinnerlichen. An Stelle dass du mit
SQL herumtust, baust du halt ewiglange Delphizeilen zusammen. Aber hier hast du die Fehlerprüfung halt überwiegend schon zur Compiletime + nicht erst zur Laufzeit. Ich habe TQuerys echt verinnerlicht + das Konzept wegbekommen dauert. Aber je länger ich mit Aurelius arbeite und Dinge ausprobiere, desto eleganter wird alles.
Ach ja: Das kommt auch immer: Performance ist kein Entscheidungskriterium pro/contra ORM. Der Overhead, den das ORM einführt ist zu vernachlässigen. ORM heißt Datenbank und da liegen Performanceprobleme ganz woanders.