「Fluent NHibernate」の版間の差分

imported>Administrator
imported>Fallout New Tokyo
編集の要約なし
 
(2人の利用者による、間の11版が非表示)
1行目: 1行目:
'''Fluent NHibernate'''(ふるーえんと・えぬはいばねーと)とは、[[.NET Framework]]向けの[[ORM]]のひとつである[[NHibernate]]の[[ラッパーライブラリ]]である。
'''Fluent NHibernate'''(読み:ふるーえんと・えぬはいばねーと)とは、[[.NET Framework]]向けの[[ORM]]のひとつである[[NHibernate]]の[[ラッパーライブラリ]]である。


== 概要 ==
== 概要 ==
[[NHibernate]]では[[データベース]]の接続設定やマッピングを記述するのに[[XML]]を用いる。一方、Fluent NHibernateではXMLの代わりに[[C Sharp|C#]]による[[プログラム]]でそれらを記述する。
Fluentは日本語で「流暢な」や「さくさく」という意味であり、直訳すると「さくさくハイバネート」となる。
似たような言い回しには以下のようなものがある。
* [[たのしいRuby]]
* [[すごいHaskellたのしく学ぼう!]]
* [[みんなのPython]]
* [[ボクらのScala ~ 次世代Java徹底入門]]
 
[[Hibernate]]および[[NHibernate]]は、よく[[Ruby]]界隈で圧倒的な勢力をもつ[[ActiveRecord]]と比較され、多くの場面でボロクソに言われているのが実情である。しかも、その話題が過熱しすぎると[[ORM]]単体どころか[[Java]]は[[プログラミング言語]]としても劣っている云々という話に飛躍するくらい酷い有様である。
 
そこへ颯爽と登場したのが、指摘されていた問題点を[[C Sharp|C#]]の変態機能を使いまくることで解決しまくった「さくさくハイバネート」である。
 
== 特徴 ==
[[NHibernate]]では[[データベース]]の接続設定やマッピングを記述するのに[[XML]]を用いる。一方、Fluent NHibernateではXMLの代わりに[[C Sharp|C#]][[ソースコード]]でそれらを記述する。


[[XML]]ではなく[[C Sharp|C#]]の[[ソースコード]]として記述することで、実行時にXMLを動的に解析するのに比べ、実行前に[[コンパイラ]]による最低限の記述ミスのチェックを行え、より安全性が高まるという利点がある。
[[XML]]ではなく[[C Sharp|C#]]の[[ソースコード]]として記述することで、実行時にXMLを動的に解析するのに比べ、実行前に[[コンパイラ]]による最低限の記述ミスのチェックを行え、より安全性が高まるという利点がある。
14行目: 26行目:


== 使い方 ==
== 使い方 ==
=== データベース接続設定 ===
* [[Fluent NHibernate/データベース接続設定]]
Fluent NHibernateには各種データベースの接続用ドライバーも含まれているので、大半のデータベースは接続設定だけすれば動く。
* [[Fluent NHibernate/オートマッピング]] - 自動マッピング
* [[Fluent NHibernate/フルーエントマッピング]] - 手動マッピング。Fluent NHibernateの核となる機能である。


==== MySQL ====
[[MySQL]]の接続設定の例を示す。


なお、この例ではホスト名やユーザー名、パスワードなどのMySQL接続設定は[[アプリケーション構成ファイル]]のConnectionStringsに記載されたものを使う。
なお、[[クエリ]]などの部分はほぼ[[NHibernate]]そのものを使うことになる。
<source lang="csharp">
よってそれらの使い方は「[[NHibernate]]」の項目を参照。
using FluentNHibernate;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
using NHibernate;
using NHibernate.Tool.hbm2ddl;


public class SampleApp
{{stub}}
{
    public void Main(string[] args)
    {
        // MySQLの場合
        var dbConfig = MySQLConfiguration
            .Standard
            .ConnectionString(cs => cs.FromConnectionStringWithKey("db"))
            ;
        // 多くのサンプルでは↑と↓をメソッドチェーンで合体させて記述してあることが多い。
        // そのような書き方は個人的にはあまり好きではない。
        var fnConfig = Fluently.Configure()
            .Database(dbConfig)
            ;
        var factory = fnConfig.BuildSessionFactory();
    }
}
</source>


あまりお勧めできる方法ではないが、[[アプリケーション構成ファイル]]ではなく、[[MySQL]]の接続設定を直接[[ソースコード]]に埋め込む方法もある。
== 便利ツール ==
独自の設定ファイルを用いる場合にはこの方法を使うのもありかもしれない。
* [[Visual NHibernate]] - ER図などを用いてビジュアルにマッピングを書ける商用ソフト。
<source lang="csharp">
var dbConfig = MySQLConfiguration
    .Standard
    .ConnectionString(cs => cs
        .Server("127.0.0.1")
        .Username("user_name")
        .Password("pasword")
        .Database("database_name")
    )
)
</source>
 
==== SQLite ====
[[SQLite]]の接続設定。
Fluent NHibernateの公式サイトにあるサンプルはほぼSQLiteを使用しているので、公式サイトを見て回った方が早いかもしれない。
<source lang="csharp">
var dbConfig = SQLiteConfiguration
    .Standard
    .UsingFile("firstProject.db") // SQLiteファイルのパスを指定する。
</source>
 
{{stub}}


== 関連項目 ==
== 関連項目 ==
77行目: 44行目:


== 参考文献 ==
== 参考文献 ==
<references/>
{{reflist}}


== 外部リンク ==
== 外部リンク ==