14

Ich möchte einige NHibernate-Konfigurationen/Zuordnungen in den Code verschieben, um einige Wartungsprobleme zu beheben. Kann jemand Rat/Pros/Nachteile/Vergleiche von Fluent NHibernate vs NHibernate.Mapping.Attributes bieten?NHibernate Fluent vs. Attribute

Ich habe etwas Erfahrung mit Java Hibernate Annotationen, die ich mochte, aber ich bin neugierig, wenn die NHibernate Attribute vergleichbar sind, und ob Fluent irgendwelche größeren Vorteile/Nachteile bietet, die in Betracht gezogen werden sollten.

Antwort

19

Ich glaube nicht, dass jemand irgendwelche direkten Vergleiche gemacht hat. Es kommt darauf an, wie angenehm es ist, deine Entitäten mit Attributen zu dekorieren. Fluent NHibernate zielt darauf ab, Sie NHibernate mit einem völlig unverschmutzten Modell zu verwenden, während Attribute erfordern, dass Sie Ihre Entitäten ändern; Dies ist eine Persistenz, die in Ihre Domain eindringt. Ob das ein Problem für Sie ist, ob Sie Attribute wählen sollten oder nicht.

Fluent NHibernate wirft auch ein paar mehr Dinge auf den Tisch als nur Mappings. Es gibt auch die auto mappings, mit der Sie Ihre Domain automatisch zuordnen können. Es gibt die conventions support, mit denen Sie Wiederholungen in Ihrem Design erheblich reduzieren können. Ich werde nicht alles wiederholen, aber Sie können mehr über die Fluent NHibernate wiki lesen.

+1

ich mit der Vorstellung überein unverschmutzten das Modell zu halten. Dies ist der Hauptgrund, warum ich Fluent NHibernate verwende, obwohl ich es hauptsächlich für Brownfield-Projekte verwendet habe. Ich habe gerade begonnen, es in Greenfield-Projekten zu verwenden, und die Automappings mit Convention-Unterstützung sind auch sehr nett. Um ehrlich zu sein, tendiere ich dazu, eine fließende Konfiguration wie diese als eine Art aspektorientierte Programmierung zu betrachten, und hat daher einige der gleichen Vorteile wie AOP. – Rich

0

NHibernate unterstützt jetzt JPA (NPersistence oder NPA für die .NET-Plattform genannt) einschließlich JPA-Anmerkungen. Dies ist die beste Möglichkeit, Ihre Entitäten zuzuordnen und Ihren Code auch für andere Anbieter portierbar zu machen. , check it out:

www.npersistence.com