Zunächst möchte ich sagen, dass ich 95% meiner Datenbankarbeit mit SQL erledigt habe. Kürzlich habe ich verschiedene ORMs wie NHibernate und Doctrine untersucht.
Ich sehe die Vorteile, nicht viel SQL zu kennen und die Datenbankportabilität, die ein ORM bietet. Ich kann aber auch sehen, dass die Kenntnis von SQL die Arbeit mit einem ORM effektiver macht, und ich kann mir nur einmal in meiner Karriere vorstellen, dass die größte Änderung einer Anwendung der Datenbankanbieter wäre.
Da ich mit dem Schreiben von SQL sehr vertraut bin und anscheinend die oft gelehrten Vorteile der Verwendung eines ORM nicht realisiere, lautet meine Frage an schwere ORM-Benutzer:
Welche Art von Webentwicklungsprojekten profitieren am meisten von der Verwendung von ORM?
Antworten:
(Fast) alle Anwendungen profitieren von ORM.
Erstens stimme ich den Vorteilen, die Sie für ORM auflisten, nicht zu .
Stattdessen sind die wirklichen Vorteile von ORM:
Wie Sie kommentieren, ist ein Nachteil von ORM ein Leistungsverlust. Dies kann jedoch normalerweise durch Ausgaben für mehr Hardware ausgeglichen werden.
In der Regel ist die Programmierzeit teurer als die Hardware, daher ist ORM im Allgemeinen eine gute Option, anstatt SQL von Hand zu codieren.
ORM eignet sich am besten für Anwendungen mit einer ziemlich einfachen CRUD-Datenbanklogik. ORM ist weniger effektiv für :
Nach meiner Erfahrung sind diese Situationen selten. Daher meine Antwort.
quelle
Ich schreibe auch gerne SQL. Ich fühle mich auch viel wohler, wenn ich überhaupt kein SQL schreiben muss und mir keine Sorgen über das Verbinden, Trennen, Pooling usw. mit einer Datenbank mache.
Also ... ich werde das Negative Ihrer Frage beantworten. Die einzigen Webentwicklungsprojekte, die NICHT von einem ORM profitieren, sind diejenigen, die überhaupt nicht mit einer Datenbank sprechen. Was ich glaube, ist die Minderheit (falls vorhanden).
quelle
Aufgrund meiner Erfahrung mit ASP.NET WebForms würde ich vorschlagen, dass Webprojekte, die Stateful Web Frameworks verwenden, am meisten von der Verwendung eines ORM profitieren.
Mit einem Stateful Framework wird das Markup automatisch hinter den Kulissen generiert, basierend auf der Hierarchie der aktiven Serversteuerelemente. Es ist verlockend, diese Steuerelemente zu laden und ihren Status automatisch in der Datenbank beizubehalten. Hier hilft ORM.
Sie abstrahieren das Ende der Pipeline (HTML-Ausgabe) und es ist natürlich einladend, mit dem Anfang (Datenquelle) auf die gleiche Weise umzugehen, sodass Sie nur im Anwendungscode innerhalb Ihrer Geschäftslogik bleiben.
Nicht, dass ich nicht sage, dass dies eine gute Möglichkeit ist, Dinge zu tun. Hier passt ORM natürlich.
quelle
In Anwendungen, in denen Sie ein großes, sehr verbundenes Objektmodell haben, erspart Ihnen ein ORM, immer wieder dieselben Verknüpfungen zu schreiben.
Ein weiterer Vorteil ist das verzögerte Laden, bei dem eine API ein Objektdiagramm zurückgeben soll, bei dem der Client der API nur eine Teilmenge dieses Diagramms verwendet.
quelle
Ich glaube, Sie verwechseln ein ORM mit einem DBAL .
Das Konzept, auf das Sie sich beziehen, ist ein Database Abstraction Layer (DBAL), mit dem Sie portables "SQL" schreiben können, das nicht vom zugrunde liegenden Datenbanksystem abhängig ist.
Ein ORM hingegen (der (fast?) Immer auf einer DBAL aufgebaut ist):
Object-relational mapping (ORM, O/RM, and O/R mapping) in computer software is a programming technique for converting data between incompatible type systems in object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language.
(Wikipedia)Mit einem ORM können Sie einfach Daten aus einer flachen Datenbank in eine aufgeblasene Objektdarstellung konvertieren.
quelle
Projekte, die von ORM nicht profitieren würden, wären:
quelle