web-dev-qa-db-ja.com

FluentNHibernateとNHibernateの「コードによるマッピング」の違い

私は、ORMツールのEntityFrameworkとLLBLのバックグラウンドを持っています。

NHibernateをベースにした新しいシステムの構築を依頼されました。一度も行ったことがないので、新鮮な目で見ています。

Fluent NHibernateを使用したマッピングとNHibernateの「MappingByCode」の違いは何ですか?好みはありますか?

30
Ian Vink

流暢なNH

Fluent NHibernateは、NHibernateの標準XMLマッピングファイルに代わるものを提供します。 XMLドキュメントを作成するのではなく、厳密に型指定されたC#コードでマッピングを作成します。これにより、簡単なリファクタリング、読みやすさの向上、より簡潔なコードが可能になります。

vs.

コードによるNHの新しいマッピング

これは、ConfORMライブラリに基づいた、3.2以降のNHibernateの不可欠な部分であるXMLレスのマッピングソリューションです。そのAPIは、XMLの命名と構造に準拠しようとします。マッピングメソッドの構築方法には強い慣習があります。その名前は、ほとんどの場合、XML要素の名前と同じです。

21
dotjoe

いくつかは好みであり、いくつかは既存のコードベースです。 NHibernateに非XMLマッピングオプションが組み込まれていなかった時期がありました。これを修正するための解決策がいくつかありました-例: confORM、Fluent NHibernate、その他私はおそらく気づいていません。

3.2の時点で、NHibernateには(おそらく3.0)「コードによるマッピング」があると思います。 Fluent NHibernateに対するこれの利点は、追加のライブラリを必要とせず、NHibernateと同じチームによってサポートされていることです。一方、Fluent NHibernateは(私が聞いたところによると)もう少し成熟しており、より幅広いマッピング機能のセットをサポートできます。

「既存のコードベース」についても触れました。明らかに、Fluent NHibernateで既にマップされているプロジェクトがある場合は、それを続行するのが最善です。新しく始めた場合は、組み込みの「コードによるマッピング」を使用してみる価値があります。

12
Origin

この投稿が古いことは知っていますが、この問題に関心のある人は、このブログを読むことを強くお勧めします。それは私にかなり明確になり、2つのアプローチの比較も提供します。

http://notherdev.blogspot.de/2012/01/nhibernates-mapping-by-code-first.html

2
C3PO