NHibernate Mapping-Attribute vs fließenden NHibernate

8

Bietet Mapping-Attribute die gleiche Vielseitigkeit wie Nhib-Hbms? Können Sie sie zusammen mit FNH verwenden, um Dinge zu handhaben, die FNH noch nicht so gut macht wie die von HBM?

Prost,
Berryl

Durch die Zuordnung von Attributen meine ich nicht hbm-Dateien; Es gibt anscheinend Attribute, die mit NHib (oder vielleicht NHib Beitrag in diesen Tagen) kommen, die Sie verwenden, um Ihre Klasse zu dekorieren & amp; Klasseneigenschaften. Ich vermute diese FNH vor dem Date, aber nicht sicher.

    
Berryl 04.05.2010, 23:49
quelle

6 Antworten

5

Ich persönlich bevorzuge es, die hbm.xml-Dateien selbst zu erstellen. Ich habe Fluent benutzt, aber ich mag es einfach, das Wesentliche selbst für Dinge wie diese zu verwalten. Allerdings habe ich noch keine Mappings bekommen, die ich nicht mit Fluent arbeiten konnte, obwohl ...

Es ist mein Verständnis, dass Fluent nHibernate tatsächlich eine hbm.xml-Datei im Hintergrund basierend auf Ihren Einstellungen erstellt, die wiederum von nHibernate verwendet wird. Da Fluent selbst die Mappings erstellt, würde ich das einfach nur erstellen Die hbm.xml würde Ihnen technisch mehr Flexibilität und Zugriff auf die Nuance der Mapping-Datei geben ...

Ich denke, dass es für beide eine ähnliche Lernkurve gibt. Wenn Sie also Fluent lernen wollen, dass es selbst hbm.xml-Dateien erstellt, warum sollten Sie nicht erst lernen, wie Sie die verdammten hbm.xml-Dateien selbst erstellen? und überspringen Sie den mittleren Mann!

Wenn Sie nicht VIELE VIELE Projekte in schneller Folge ausführen, ist das eigentliche Mapping Ihrer Datenbank nur ein Bruchteil der tatsächlichen Arbeit, die Sie in einem bestimmten Projekt leisten.

  • Max Schilling
Max Schilling 05.05.2010, 01:29
quelle
5

Die NHibernate-Attribute geben FNH vor. Abgesehen von einer relativ kleinen Gruppe hartgesottener Holdouts kenne ich niemanden, der sie benutzt. Sie werden unterstützt, aber nicht gerade freundlich. Wenn Sie Attribute mögen, sind die Castle ActiveRecord Attribute eine viel bessere Implementierung als die NHibernate Kern-Attribute.

Fluent NHibernate kann mit allem anderen arbeiten. Es werden nur Mappings in die NHibernate-Konfigurationsinstanz injiziert, sodass Sie alles, was Sie sonst noch möchten, dort einfügen können. ActiveRecord ist ein bisschen mehr eine weitreichende Lösung, so dass es eine Ausnahme von dieser Regel sein kann, es ist eine Weile her, seit ich es benutzt habe.

    
James Gregory 05.05.2010 10:02
quelle
1

Ich bin nie auf eine Situation gestoßen, die Fluent NHibernate nicht bewältigen konnte, aber vielleicht verwenden Sie ein obskures Attribut. Alles, was Sie wissen müssen, ist verfügbar?

    
Blair Mitchelmore 05.05.2010 00:43
quelle
1

Wir benutzen sie in meinem Geschäft und ich mag sie irgendwie.

Ich denke, es ist wirklich nett, das Mapping direkt in die Klassendefinition zu schreiben (ich weiß - jedem ist das Seine eigen).

    
bernhardrusch 05.05.2010 12:18
quelle
1

Ich stimme den meisten Kommentaren hier zu, Hibernate gibt Ihnen die Freiheit zu wählen, wie Sie die Maps für die Objekte implementieren.

Ich bevorzuge es, für meine Klassen keine Attribute für NHibernate zu verwenden, da meine Klassen jetzt eine andere Abhängigkeit haben, von der sie nicht wissen sollten.

Was passiert, wenn Sie Ihre Datenaufzeichnung in eine OODB oder nur eine Datei ändern wollen? Die Klassen haben einen redundanten Zuordnungscode (die Attribute). In diesem Fall könnte man sagen, dass es sauberer ist, das Mapping in der Daten / Infrastruktur-Schicht mit der Repository-Implementierung zu speichern (angenommene Verwendung des Repository-Musters)

Ich stimme auch zu, jeder zu besitzen:)

    
dbones 05.05.2010 13:04
quelle
1

Ich versuche zu verstehen, wo NHibernate 3 in Bezug auf Attribute im Vergleich zu Annotation in Bezug auf Hibernate 3 steht. Ich war in mehreren Java-Projekten, in denen wir Hibernate 3 Annotationen zum Mapping verwendet haben. Es ist ziemlich elegant wie

  1. die Entitäten sind eindeutig dokumentiert, wo der Code lebt
  2. leichter zu debuggen, wenn Sie den Debugger durchlaufen ...
  3. Sie müssen keine separate Datei außerhalb des Kontexts öffnen
  4. weniger zu verwaltende Artefakte
  5. Kompilierzeitüberprüfung
  6. intellisense = weniger Tippfehler
  7. es muss keine separate Komponente von Drittanbietern (z. B. FNH) installiert / gelernt werden
  8. Das Hibernate-Team hat investiert, damit Anmerkungen einfach zu verwenden und integral sind

Ich bin mir nicht sicher, ob ich die Argumente "Was passiert, wenn Sie Datenquellen ändern müssen" oder "Argumente zur Trennung von Interessen" kaufen. In der Praxis betrachten diese Argumente die "20%" (oder weniger), die entweder nicht auftreten oder nur marginale Auswirkungen haben, wenn sie dies tun - die Vorteile sind viel größer IMHO.

Was mir nicht klar ist, ist, ob das NHibernate-Team genug investiert hat, um die Attribute robust genug zu machen, um es zu verwenden, oder wäre es besser, zu EF4.x zu wechseln, um dieselben Vorteile zu erhalten ... Das sind die Antworten, die ich mir von diesem Post erhofft habe.

    
neoscribe 13.01.2012 18:27
quelle