it-swarm.com.de

Warum sollten Sie ein ORM verwenden?

Wenn Sie die "Profis" motivieren würden, warum Sie ein ORM für das Management/den Kunden verwenden würden, welche Gründe wären das?

Versuchen Sie, einen Grund pro Antwort beizubehalten, damit wir sehen können, was als beste Gründe gewertet wird

103
Simon Munro

Den Datenzugriff abstrakter und portabler gestalten. ORM-Implementierungsklassen können herstellerspezifisches SQL schreiben, sodass Sie dies nicht tun müssen.

49
Bill Karwin

Der wichtigste Grund für die Verwendung eines ORM ist, dass Sie ein umfassendes, objektorientiertes Geschäftsmodell haben und es dennoch speichern und effektive Abfragen schnell in eine relationale Datenbank schreiben können. Aus meiner Sicht sehe ich keine wirklichen Vorteile, die ein guter ORM im Vergleich zu anderen generierten DALs bietet, außer den erweiterten Arten von Abfragen, die Sie schreiben können.

Eine Art von Abfrage, an die ich denke, ist eine polymorphe Abfrage. Eine einfache ORM-Abfrage wählt möglicherweise alle Formen in Ihrer Datenbank aus. Sie erhalten eine Sammlung von Formen zurück. Aber jede Instanz ist ein Quadrat, ein Kreis oder ein Rechteck, je nach Diskriminator.

Eine andere Art von Abfrage wäre eine, die ein Objekt und ein oder mehrere verwandte Objekte oder Sammlungen in einem einzigen Datenbankaufruf eifrig abruft. z.B. Jedes Formobjekt wird mit seinen ausgefüllten Scheitelpunkt- und Seitensammlungen zurückgegeben.

Es tut mir leid, mit so vielen anderen hier nicht einverstanden zu sein, aber ich denke nicht, dass die Codegenerierung für sich genommen ein Grund genug ist, sich für ein ORM zu entscheiden. Sie können viele gute DAL-Vorlagen für Codegeneratoren schreiben oder finden, die nicht den konzeptionellen oder Leistungsaufwand haben, den ORMs verursachen.

Oder, wenn Sie der Meinung sind, dass Sie nicht wissen müssen, wie man gutes SQL schreibt, um ein ORM zu verwenden, bin ich anderer Meinung. Möglicherweise ist es aus der Perspektive des Schreibens einzelner Abfragen einfacher, sich auf einen ORM zu verlassen. Mit ORMs ist es jedoch viel zu einfach, Routinen mit schlechter Leistung zu erstellen, wenn Entwickler nicht verstehen, wie ihre Abfragen mit dem ORM und der SQL, in die sie übersetzt werden, funktionieren.

Eine Datenschicht, die für mehrere Datenbanken geeignet ist, kann von Vorteil sein. Darauf musste ich mich allerdings nicht oft verlassen.

Letztendlich muss ich wiederholen, dass es meiner Erfahrung nach andere Optionen gibt, die die verbleibenden Probleme mit weniger Lernen und weniger CPU-Zyklen lösen, wenn Sie die erweiterten Abfragefunktionen Ihres ORM nicht verwenden.

Oh ja, einige Entwickler finden es lustig, mit ORMs zu arbeiten, daher sind ORMs auch aus der Perspektive des Keep-Your-Developers-Happy gut. =)

73
Chuck

Entwicklung beschleunigen. Beseitigen Sie beispielsweise sich wiederholenden Code wie das Zuordnen von Abfrageergebnisfeldern zu Objektmitgliedern und umgekehrt.

58
Bill Karwin

Unterstützung der OO Kapselung von Geschäftsregeln in Ihrer Datenzugriffsebene. Sie können Geschäftsregeln in der von Ihnen bevorzugten Anwendungssprache schreiben (und debuggen), anstatt in der Sprache der Trigger und der gespeicherten Prozeduren.

15
Bill Karwin

Boilerplate-Code für grundlegende CRUD-Operationen generieren. Einige ORM-Frameworks können Datenbankmetadaten direkt untersuchen, Metadatenzuordnungsdateien lesen oder deklarative Klasseneigenschaften verwenden.

9
Bill Karwin

Sie können einfach zu einer anderen Datenbanksoftware wechseln, da Sie sich zu einer Abstraktion entwickeln.

6
Matt Fenelon

Entwicklungsglück, IMO. ORM abstrahiert eine Menge von Bare-Metal-Dingen, die Sie in SQL erledigen müssen. Die Codebasis bleibt einfach: Weniger zu verwaltende Quelldateien und Schemaänderungen erfordern keine stundenlangen Wartungsarbeiten.

Ich verwende derzeit ein ORM und es hat meine Entwicklung beschleunigt.

4
curiousdork

Damit Ihr Objektmodell und Ihr Persistenzmodell übereinstimmen.

4
cletus

Minimierung der Duplizierung einfacher SQL-Abfragen.

3
Tim Wardle

Der Grund, warum ich mich damit beschäftige, besteht darin, den generierten Code aus den DAL-Tools von VS2005 (Schema-Mapping, TableAdapters) zu vermeiden.

Die DAL/BLL, die ich vor über einem Jahr erstellt habe, funktionierte einwandfrei (für das, wofür ich sie erstellt hatte), bis jemand anderes damit begann, einige der generierten Funktionen zu nutzen (von denen ich nicht wusste, dass sie da waren).

Es sieht so aus, als würde es eine viel intuitivere und sauberere Lösung bieten als die DAL/BLL-Lösung von http://wwww.asp.net

Ich dachte darüber nach, meinen eigenen SQL Command C # DAL-Codegenerator zu erstellen, aber der ORM sieht nach einer eleganteren Lösung aus

3
Dan McClain

Zusammenstellung und Prüfung von Abfragen.

Mit der Verbesserung der Tools für ORMs ist es einfacher, die Richtigkeit Ihrer Abfragen durch Fehler und Tests bei der Kompilierung schneller zu ermitteln.

Durch das Kompilieren Ihrer Abfragen können Entwickler Fehler schneller finden. Richtig? Richtig. Diese Kompilierung ist möglich, weil Entwickler jetzt Abfragen mit ihren Geschäftsobjekten oder -modellen in Code schreiben, anstatt nur mit SQL-Zeichenfolgen oder SQL-ähnlichen Anweisungen.

Wenn Sie in .NET die richtigen Datenzugriffsmuster verwenden, können Sie Ihre Abfragelogik problemlos anhand von Einheiten in Speichersammlungen testen. Dies beschleunigt die Ausführung Ihrer Tests, da Sie nicht auf die Datenbank zugreifen, keine Daten in der Datenbank einrichten oder gar einen vollständigen Datenkontext erstellen müssen Testen im Gedächtnis kann schwierige Herausforderungen zu überwinden. Trotzdem finde ich diese Integrationstests einfacher zu schreiben als in den Vorjahren. [/ EDIT]

Dies ist heute definitiv relevanter als noch vor einigen Jahren, als die Frage gestellt wurde, aber dies gilt möglicherweise nur für Visual Studio und Entity Framework, in denen meine Erfahrung liegt. Plugin Ihrer eigenen Umgebung, wenn möglich.

2
Chuck

Entziehen Sie den SQL-Code in 95% der Fälle, damit nicht jeder im Team wissen muss, wie man supereffiziente datenbankspezifische Abfragen schreibt.

1
Jared

Ich denke, dass es viele gute Punkte gibt (Portabilität, einfache Entwicklung/Wartung, Konzentration auf OO Geschäftsmodellierung usw.), aber wenn Sie versuchen, Ihren Kunden oder Ihr Management zu überzeugen, läuft alles auf den Punkt bis wie viel Geld sparen Sie mit einem ORM.

Wenn Sie einige Schätzungen für typische Aufgaben (oder sogar größere Projekte, die möglicherweise anstehen) vornehmen, erhalten Sie (hoffentlich!) Ein paar Argumente für den Wechsel, die nur schwer zu ignorieren sind.

1

Ich denke, ein Nachteil ist, dass ORM eine Aktualisierung in Ihrem POJO benötigt. hauptsächlich bezogen auf Schema, Relation und Abfrage. Ein Szenario, in dem keine Änderungen an Modellobjekten vorgenommen werden sollen, kann beispielsweise darauf zurückzuführen sein, dass es von mehreren Projekt- oder Schwarzweißclients und -servern gemeinsam genutzt wird. In solchen Fällen müssen Sie es in zwei Ebenen aufteilen, was zusätzlichen Aufwand erfordert.

ich bin ein Android Entwickler und wie Sie wissen, sind mobile Apps in der Regel nicht sehr groß, so dass dieser zusätzliche Aufwand zur Trennung von reinem Modell und Orm-betroffenem Modell nicht voll zu sein scheint.

ich verstehe, dass diese Frage generisch ist. Mobile Apps sind aber auch in generischen Regenschirmen enthalten.

.net Ebenen mit Code-Smith-Vorlagen

http://nettiers.com/default.aspx?AspxAutoDetectCookieSupport=1

Warum etwas codieren, das genauso gut generiert werden kann?.

0
Jobo

überzeugen Sie sie davon, wie viel Zeit/Geld Sie sparen, wenn Änderungen eingehen, und Sie müssen Ihr SQL nicht neu schreiben, da das ORM-Tool dies für Sie erledigt

0
zmf