BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Fluent NHibernate が 1.0RC をリリース

Fluent NHibernate が 1.0RC をリリース

ブックマーク

原文(投稿日:2009/08/20)へのリンク

Fluent NHibernate プロジェクトのオーナである James Gregory 氏は,プロジェクトが 1.0 マイルストーンに到達したと発表した。同プロジェクトは現在,リリース候補(Release Candidate)の段階にある。

リリースノートの mapping の章では,次のような機能と改善点が挙げられている。

  • メソッド名のクリーンアップ - メソッド名からたくさんのノイズを取り除きました。例えば WithLengthOf は単に Length に変更されています。同じように ColumnName を Column に,WithTableName を Table にするなどの変更を行いました。
  • SetAttribute の削除 - SetAttribute は必要な属性がサポートできていない時点で Fluent NHibernate を使用してもらうために必要な暫定策でした。現在は,主要な属性については fluent インターフェースですべてサポートできていますので,このメソッドを利用する必要はないはずです。もし必要な属性でサポートされていないものがあれば,ぜひ私たちに教えてください(pull リクエストやパッチを送って頂ければなお結構です)。
  • サブクラスマッピングの分離 - 親クラスのマッピングから分離してサブクラスを定義できます(そうあるべきです)。ClassMap<T>と同じ要領で SubclassMap<T> を使用してください。最上位のマッピング(ClassMap)内で DiscriminateSubclassesOnColumn がコールされている場合,サブクラスはクラス階層ごとにテーブルがマッピングされ(table-per-class-hierarchy),それ以外(既定)ではサブクラスごとにテーブルがマッピングされます(table-per-subclass)。
    詳細は subclass の説明を参照してください。
  • static エントリポイント名の変更 - AutoPersistenceModel.MapEntitiesFromAssemblyOf<Product>という名前は少し長過ぎたので,AutoMap.AssemblyOf<Product> に変更されました。
  • コンポーネント - 自動マッピングにおけるコンポーネントのサポートが改良されました。動作自体は以前と変わりありませんが,コレクションなど必要と考えられれるものはすべてサポートされています。
    詳細は components の説明を参照してください。
  • IgnoreProperty をすべての型に対してサポート - エンティティ基準に代わって,複数の型に対しての IgnoreProperty が使用可能になりました。
    詳細は ignoring properties の説明を参照してください。

conventions の章には,次のような説明がある。

  • 常に最初に適用されます - ClassMap による明示的な設定に先立って適用されます。これはつまり,マッピングが意図されずに上書きされることがない,ということです。
  • デフォルトで適用されます - convension には Accept というメソッドがあったのですが,すべてに適用されることを示す true を返すか,または値が ClassMap にセットされていることをチェックする処理を実行することがほとんどでした。前項にあげた変更を考えれば,このような Accept メソッドはほとんどの場合不要になります。そのために Convension がすべてに対して適用されるようになりましたが,これが希望する動作でない場合は IClassAcceptance インターフェースを使って振る舞いを追加することができます(他の convension についても同様なインターフェースがあります)。
  • 合否判定基準 - Accept の定義が必要な場合のため,これまでより一貫性のある方法で基準が定義できる新 API があります。
    詳細は acceptance criteria の説明を参照してください。
  • ForeignKeyConvention - 外部キーの名称を設定する基礎クラスが,マッピング全体に一貫して適用されます。
    詳細は ForeignKeyConvention を参照してください。
  • ManyToManyTableNameConvention - 多対多(many-to-many)のテーブル名設定を行う基本クラス(と既定値)です。以前のものより高機能で,明示的な設定のオーバーライドなしに双方向リレーションをサポートします。
    詳細は ManyToManyTableNameConvention を参照してください。

すでにかなりのテスト時間が費やされていることを考慮して,Gregory 氏はプロジェクトを長期間 RC に留めることはしないつもりである。

Fluent NHibernate は XML を用いる方法の代替として,C# コードによる流動的(fluent)なマッピング方法を提供するものだ。さらにエンティティから直接マッピングを生成する仕組みによる,自動マッピング機能も提供する。 Fluent NHibernate の概要紹介は InfoQ/Fluent NHibernate にある。より詳しい情報は Fluent NHibernate Wiki page で見ることができる。実際に試してみたい方のために Download ページにソースとバイナリが掲載されている。

この記事に星をつける

おすすめ度
スタイル

BT