36 votes

NHibernate ou Fluent NHibernate?

Je serais intéressé d’entendre l’opinion des autres sur la question de savoir s’ils choisiraient (aucun «néant», veuillez;), et pourquoi.

Quels sont les inconvénients à utiliser couramment? (version dépendante peut-être?) Avantages, inconvénients, expériences, etc.

52voto

Andrew Bullock Points 14899

Couramment NHIbernate est assis sur le dessus de NHibernate, donc ce n'est pas vraiment un choix entre les deux. Si vous allez utiliser NHibernate, CHOISIR d'utiliser Couramment le NH sur lui pour vous sauver vous-même de vastes quantités d'effort.

Couramment NHibernate est génial, je ne voudrais pas utiliser NHibernate sans elle. Vous pouvez couramment carte de tous vos entités (vous donnant moment de la compilation, la vérification et les tests automatisés de soutien) au lieu d'avoir à maintenir la lourdeur des fichiers xml et de se souvenir de leur syntaxe/DTD.

Il peut également mapper automatiquement vos entités en fonction de défaut et/ou de vos propres conventions.

Juste l'utiliser!

13voto

fostandy Points 1325

Je serais certainement dire d'aller avec le courant-nhibernate. Juste être conscient qu'il ne peut pas nécessairement être aussi lisse un tour que vous espérez.

  1. Concernant la version de dépendance

    1. J'ai eu un "reverse" problème de dépendance lors de la mise à niveau vers une nouvelle version de la FNH m'a obligé à la mise à niveau vers une nouvelle version de NH (2.0 à 2.1 je pense). Ce n'était pas un problème majeur pour moi.
    2. Je viens tout juste (ce matin) a chuté de NH 2.1.1 dans la FNH 1.0 RTM (ce qui est distribué avec la version 2.1.0), sans drames (encore).
  2. Edit: Depuis la rédaction de ce post FN a évolué considérablement au point où je ne pense pas que ce soit un réel problème de plus Support de cartographie - certaines mises en correspondance ne sont pas encore possible avec nhibernate fluent. Cependant, ce n'est PAS une raison pour éviter de FNH hybride fluide-mappages xml vous permettent de secours traditionnelle xml dans le cas de fluide étant incapable de la carte (même si ce n'est que par la classe de granularité). Exemples de correspondances:

    1. Ne peut pas encore la carte des champs - http://groups.google.com/group/fluent-nhibernate/browse_thread/thread/a7787927dafd23a/84ce2616946a18d7
    2. Ne peut pas mapper certains moments de dictionnaire http://groups.google.com/group/fluent-nhibernate/browse_thread/thread/d38b6c72250cd2fb - en fait, de ce que je comprends cette fonctionnalité existe mais n'est pas dans la grande encore.
  3. Composé facteur de complexité. De les sons de celui-ci vous sera d'apprentissage à la fois FNH et NH en même temps. Pour la majorité assez simple applications ce qui est bien - enfait FNH est souvent tellement bonne que vous avez besoin de savoir assez peu de choses sur la hbm.xml les mappages. Mais si vous voulez aller faire quelque chose d'assez complexe, il sera rarement le premier tour de temps et vous vous demandez si c'est un PEBKAC, à l'aise ou NH question. Plus souvent que je ne l'aurais espéré, j'ai fini par écrire le traditionnel mappages xml (bien sûr, vous le faites de toute façon, mais il aurait été préférable de ne pas consacrer plus d'efforts que nécessaire de jongler avec fluent en premier).

9voto

Erik Öjebo Points 6937

L'avantage de l'utilisation de Fluent NHibernate avec NHibernate est que vous obtenez de la compilation des erreurs si vous avez foiré votre cartographie, à la place d'erreurs à l'exécution. Vous bénéficiez également d'une meilleure expérience lors de la refactorisation de votre code, depuis votre mappages sont conservées jusqu'à la date que vous renommez des propriétés ou que ce soit, au lieu d'avoir à vous rappeler de le modifier manuellement, vous XML des fichiers de mappage.

Le plus grand inconvénient de Fluent NHibernate est qu'il est encore dans une phase précoce de son développement, et il est tout à fait un grand risque de casser les changements que le développement de la structure progresse.

4voto

Nathan Fisher Points 4401

Personnellement, je n'ai pas vraiment eu beaucoup dans nhibernate fluent comme je suis à l'aise avec les fichiers de mappage. à l'aide de visual studio pour créer le mappage des fichiers est un jeu d'enfant et vous pouvez définir le schéma du fichier xml qui vous donne intellisense sur le fichier de mappage. Je suis d'accord que le fait d'avoir au moment de la compilation de la vérification de syntaxe est un avantage de l'utilisation de fluent-nhibernate, mais j'ai du mal justifing l'apprentissage de l'API fluent quand j'y suis déjà familier avec le mappage XML. Peut-être que je devrais juste obtenir sur mon lethergy et apprendre déjà... :-)

2voto

Deepak Points 271

Fluent N-Hibernate est vraiment un très bon emballage pour NHibernate. Pour gérer le mappage dans Fluent beaucoup mieux que le mappage xml. Le développement devient rapide lorsque vous passez à Fluent ...

Idéal si vous utilisez Entity Developer pour créer une entité et un schéma de base de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X