Das ist schwer zu viel Programmierer zu erklären, denn wenn man nur wissen , grundlegende SQL dann ist es wirklich nicht Sie geben viel von einem Vorteil gegenüber der Krücke eines ORM. Die fortgeschritteneren SQL-Konzepte sind jedoch ein entscheidender Teil des Unterschieds zwischen Anwendungen, die nur funktionieren, und Anwendungen, die eine hohe Qualität aufweisen (insbesondere schnell und zuverlässig).
Ich gehe davon aus, dass jemand anderes die Datenbanken für Sie entwirft , denn dies zu tun , ohne SQL zu kennen, ist einfach zu blass. Aber selbst wenn Sie sich nur gegen sie entwickeln, finden Sie hier nur eine unvollständige Liste aller Dinge, die ORMs nach wie vor schlecht oder gar nicht tun:
- Rekursive und / oder hierarchische Abfragen
- Optionale Parameter (insbesondere die Übersetzung in Bereichsprädikate)
- Benutzerdefinierte Datentypen
- Plattformspezifische Typen (SQL-Hierarchie-ID und TVPs, Oracle-Arrays und verschachtelte Tabellen usw.)
- Batch-Einfügungen / Aktualisierungen / Upserts / Deletes
- Indexhinweise
- Sperrhinweise (insbesondere Update-Sperren und Dirty Reads)
- Fehlerbehandlung
- Äußere Verknüpfungen - ihre Ergebnismengen sind dem OOP-Modell schlecht zugeordnet. Viele ORMs haben ihre eigene Abfragesprache, aber das ist vergleichbar mit der Kenntnis von SQL selbst.
- Modularisierung durch gespeicherte Prozeduren und UDFs, insbesondere Inline-UDFs und CROSS APPLY-Abfragen
- Verwendung von OUTPUT / RETURNING zum Staging von Daten in mehreren Tabellen
- Effiziente Paging-Abfragen
- Abfragen basierend auf Fensterfunktionen (Rownum, Rang, Partitionen)
Die Liste geht weiter und weiter - viele dieser Dinge hat ein unerfahrener DBA noch nie zu tun gehabt, und ein unerfahrener Entwickler hat noch nie davon gehört -, aber sie sind in größeren Apps sehr wichtig.
ORMs sind wirklich großartig darin, den wirklich langweiligen SQL-Code zu beschleunigen - das heißt, all den repetitiven CRUD- und Mapping-Code und den anderen Code für die Installation. Es ist also absolut keine Schande, sie zu verwenden und niemandem zuzuhören, der sagt, dass sie böse sind. Aber Sie müssen auf jeden Fall noch lernen und ja, sogar SQL beherrschen , und bereit sein, sich in unformatierte DB-Befehle / Abfragen zu stürzen, wenn der ORM sein Gewicht nicht verliert.