2010-01-22 9 views
12

Während dies eine subjektive Frage ist, bin ich als neuer NHibernate-Benutzer neugierig, warum man sich für Fluent vs. herkömmliches XML-Mapping entscheiden würde.Warum fließende NHibernate vs. hbm XML-Dateien?

Von meinem Standpunkt aus, als ich zuerst mit NHibernate arbeitete, benutzte ich die Fluent-Schnittstelle, stieß aber auf einige Hindernisse und hatte Schwierigkeiten, eine adäquate Dokumentation für die Fluent-Schnittstelle für alles außer einer "Spielzeug-App" zu finden um diese über XML zu behandeln.

Im Laufe der Zeit wurde mir klar, dass ich die meiste Arbeit auf der XML-Seite gemacht hatte, und mir wurde klar, dass es nicht so schrecklich war, wie ich gedacht hatte. Für mich persönlich war es eine schlechte Dokumentation und keine signifikanten Einsparungen bei der Codierungszeit.

Das gesagt, es kann einen großen Vorteil/Nachteil, dass ich vermisse, und ich würde wirklich gerne einige Meinungen von Leuten hören, die mehr Erfahrung in der Arbeit mit diesen Tools haben.

Antwort

16

Kompilierzeitsicherheit und Refactoring (Umbenennen von Klassen, Eigenschaften) sind einer der Vorteile, die Sie durch flüssige Mappings erhalten. Die Verwendung einer Sprache (C# oder VB.NET) zum Schreiben von Mappings, Programmcode und Datenzugriff ist ein weiterer Vorteil.

+0

Ich habe tatsächlich eine Frage dazu. Ich erinnere mich, dass Fluent einen netten Kompilierungsfehler verursachte, wenn meine Mapping-Datei ausgeschaltet war - aber würde das helfen, wenn ich eine Tabellenspalte vertippte, oder würde ich die Exception debuggen, so wie ich es jetzt mache, wenn mein hbm XML explodiert? Danke für die Antwort BTW! –

+0

Sie können nichts speichern, wenn Sie einen Tabellennamen oder eine Spalte falsch eingeben. –

6
  • Compile-Zeit Namens- und Typsicherheit
  • IntelliSense Sie zeigen, welche fließend Methoden
  • Anpassbare Standardwerte
  • AutoMapper
+0

Sie erhalten IntelliSense auch in XML mit dem NHibernate XSD Schema. –

+0

Sie erhalten IntelliSense basierend auf den Hibernate-Schemas, aber nicht basierend auf Ihrem Objektmodell. – yfeldblum

+1

+1 für automapping, die IMO ist die einzige echte "Slam Dunk". Die anderen Vorteile sind nett, aber nicht überwältigend. – Aaronaught

0

Wie viele offen an jeder Stelle zur Verfügung stehen Diese Bibliothek war für die Öffentlichkeit verfügbar, bevor viele der Funktionen produktionsbereit waren. Abhängig davon, mit welcher Version von FluentNhib Sie gearbeitet haben, wurden einige Funktionen möglicherweise noch nicht implementiert. Zum Beispiel, als ich anfing, damit zu arbeiten, waren zusammengesetzte Schlüssel noch nicht implementiert worden, und ich fand Stolperstein nach Stolperstein.

Aber das Produkt hat sich zu einem ziemlich guten Werkzeug entwickelt. Es ist ziemlich komplett im Vergleich zu Xml und bietet alle Vorteile, die andere bereits beschrieben haben.

3

Für mich ist das große Feature in Fluent der Automapper.

Ich kann mein Domain-Modell mit POCO-Klassen (meistens) definieren, ohne mich um die unangenehmen Details zu kümmern, wie sie Tabellen in einer relationalen Datenbank zugeordnet werden.

Als langjähriger OO-Entwickler und gelegentlicher DB-Entwickler bin ich viel komfortabler beim OO-Design. Ich glaube auch, dass dies mir erlaubt, auf einer höheren, stärkeren Abstraktionsebene zu arbeiten.

Durch das Automatisieren werden auch laufende Änderungen am Domänenmodell erheblich weniger beängstigend.

Ihre Kunden haben Ihnen gerade in letzter Minute mitgeteilt, dass sie der Datenbank vier neue Spalten hinzufügen möchten.

Kein Problem - fügen Sie vier neue Eigenschaften zu den zugeordneten POCO (4 Zeilen Code), und neu zuordnen.

Nimmt den ständig wechselnden Anforderungen, die in vielen Projekten zum Leben gehören, viel Schmerz ab.

2

Ich werde einen Grund hinzufügen, die für die Herstellung von benutzerdefinierten Funktionen basierend auf einer gemeinsamen Code-Basis sehr wichtig ist:

Mit fließend Sie Zuordnungen überschreiben können, um ein neues Feld hinzuzufügen. Änderungen an den vorhandenen (Oberklassen-) Zuordnungen werden automatisch in die Anpassung/Verzweigung übernommen. Ich musste Fluent verwenden, um zu vermeiden, dass für jeden Kunden eine separate .hbm/xml-Datei gepflegt wird. Froh bin ich :)

+0

Sorry, aber können Sie klären, wie ist das besser als das Aktualisieren der XML? – ArtB

Verwandte Themen