Was ist so großartig an ORM?

8

Also habe ich einen Kopf gegen die Wand und hoffe, dass jemand kommen kann, um mir zu helfen, entweder die Wand zu entfernen oder meinen Kopf davon abzuhalten, sich zu bewegen!

In den letzten drei bis vier Wochen habe ich untersucht, ob ORM bereit für ein neues Projekt ist. Das ORM muss einer vorhandenen, großen und alternden SQL-Datenbank zugeordnet werden.

Also habe ich Subsonic ausprobiert. Ich mochte v2 und v3 nach Modding sehr gut mit VB und named Schemas in SQL lief OK. Allerdings hatte mich die mangelnde Flexibilität, separate Entity-Eigenschaftsnamen und Spaltennamen zu haben, dazu geführt, dass ich mir die Haare auszog (sorry, Rob).

Ich habe Entity Framework ausprobiert, aber ich habe festgestellt, dass es in bestimmten Bereichen fehlt.

Also biss ich in die Kugel und probierte nHibernate, aber nach einer Woche oder so funktionierte es, wie ich es mochte (mit Hilfe von Codesmith, um Klassen / hbms für mich zu generieren) Ich bin frustriert über die Zeit bis zum Start (build a Config-Objekt), trotz einiger Tricks, um diese Zeit zu reduzieren.

Ich bin im Grunde nach dem Aufbau einer DAL-Klasse, die ich zwischen Apps und Websites teilen kann. Banne ich den falschen Baum an? Für ein Legacy-Projekt mit 100s von Tabellen sollte ich zurück zu ado.net gehen und DTOs verwenden? Aarrgh!

Entschuldigung für den freundlichen Stil der Frage. Ich habe nicht mehr viel Haar und ich möchte behalten, was ich habe!

Vielen Dank im Voraus, Ed

PS. Ich sollte hinzufügen, dass ich SQL sehr gut kenne und keine Angst habe, meine Hände schmutzig zu bekommen, um schnelle Abfragen zu schreiben. Wenn überhaupt, muss ich nicht vor SQL versteckt werden

    
CResults 09.02.2010, 10:51
quelle

4 Antworten

8

ORM können Sie:

  1. Um Tabellenzeilen Objekten zuzuordnen, sind dies die praktikablen Teile der objektorientierten Programmierung.
  2. Zur automatischen Navigation durch Objektbeziehungen
  3. Zum einfachen Hinzufügen, Bearbeiten und Entfernen von Tabellenzeilen
  4. Um die Datenbank auf eine intuitivere Art abzufragen, da Sie nicht an Joins denken müssen (diese hängt vom ORM und der Abfrage-Methode ab)
  5. Um den L1- und L2-Cache transparent zu verwalten.

Alle oben genannten Punkte müssten von Hand bearbeitet werden, wenn Sie ORM nicht verwenden.

PS: Ich stimme Dmitry hinsichtlich der Startzeit von NHibernate zu (siehe Fragekommentare). Haben Sie Fluent NHibernate getestet? Fluent NHibernate ist beeindruckend einfach. Ich konnte meinen Augen nicht glauben, als ich zum ersten Mal eine Datenbank mappte. Es ist sogar einfacher als proprietäre ORMs wie DevExpress XPO.

    
André Pena 09.02.2010, 11:01
quelle
2

Der größte Vorteil eines ORM-Tools ist, dass es Ihnen hilft, Ihre Anwendung korrekt zu schichten. Die meisten Projekte verwenden heutzutage eine Datenschicht, um sich mit der Datenbank zu verbinden. Sie beginnen mit dem ORM-Tool, um Klassen zu erzeugen, die Ihren Datenbankobjekten entsprechen. Dann definieren Sie eine Schnittstelle mit diesen Methoden. Der gesamte Persistenz-Code verwendet die Methoden dieser Schnittstelle. Auf diese Weise ist die Business-Logik-Schicht nur mit dieser Schnittstelle höherer Ebene verbunden und muss nichts über die Datenbank wissen. Tatsächlich sollte es keine Abhängigkeit von ADO.NET oder NHibernate geben.

Ein weiterer Vorteil von ORM-Tools besteht darin, dass Sie Ihre Anwendung vom Datenbankserver trennen. Sie könnten die db-Engine ändern und trotzdem denselben Code verwenden. Außerdem gibt es nicht nur die Komplexität des SQL, die das ORM vor Ihnen verbirgt. Es kann Ihnen auch bei Transaktionslogik und Verbindungspooling helfen.

Ich würde sagen, dass für neue Projekte ein ORM-Tool eine Notwendigkeit ist. Für ältere Projekte ist es nicht so günstig, es sei denn, Sie haben die Zeit / das Geld, um von vorne anzufangen.

    
kgiannakakis 09.02.2010 11:13
quelle
1

Nach meiner Erfahrung sind die meisten ORMs wesentlich komplexer als SQL. Das vereitelt den ganzen Zweck, sie zu benutzen.

Eine Lösung, die mich begeistert, ist LINQ2SQL. Es zeichnet sich als eine dünne Schicht über gespeicherte Prozeduren oder Ansichten aus. Es ist wirklich einfach zu benutzen und versucht nicht, SQL zu verstecken.

    
Andomar 09.02.2010 11:00
quelle
1

Hier gibt es grundsätzlich zwei Fragen:

Was ist toll an ORMs? Es gibt ähnliche Fragen zu Stackoverflow. Siehe:

Wie kann ich die Startzeit von NHibernate verbessern? Siehe:

Mauricio Scheffer 09.02.2010 11:19
quelle