- NHibernate を SourceForge からダウンロードする。この記事を書いている時点での最新バージョンは 1.2.1。
- VisualStudio 2005 でプロジェクトを作成する。ここではC#を選択。
- Hibernate アセンブリをプロジェクトに追加。ソリューションエクスプローラの「参照設定」を右クリック,メニューから「参照の追加」でアセンブリ NHibernate.dll を選択して追加する。VS2005 の場合はインストールディレクトリ下の bin/net-2.0 にあるものを使用。
- hibernate.cfg.xml という設定ファイルを新規作成し,コンフィギュレーションを記述。
この例は MySQL を使用する場合。その他の例は,リファレンスマニュアルに詳しく記載している。リファレンスマニュアル(nhibernate_reference.pdf)は,インストールした場所の doc/ ディレクトリにある。<?xml version="1.0" encoding="utf-8" ?>
これはlocalhost上のMySQLにあるtestデータベースへ,ユーザ名/パスワード=TEST/TESTで接続する例。
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<!-- an ISessionFactory instance -->
<session-factory>
<property name="connection.provider">
NHibernate.Connection.DriverConnectionProvider
</property>
<property name="connection.driver_class">
NHibernate.Driver.MySqlDataDriver
</property>
<property name="connection.connection_string">
Database=test;Data Source=localhost;User Id=TEST;Password=TEST
</property>
<property name="dialect">
NHibernate.Dialect.MySQLDialect
</property>
<mapping file="config/Project.hbm.xml"/>
</session-factory>
</hibernate-configuration> - 設定ファイルの参照をプログラム記述する。ここではリファレンスマニュアルで紹介されている方法を参考に,簡単なヘルパクラスを作成してみる。
using System;
using NHibernate;
using NHibernate.Cfg;
using log4net;
namespace NHibernateTest {
public sealed class NHibernateHelper {
private static readonly string configfile = "hibernate.cfg.xml";
private static ISessionFactory sessionFactory;
private static ISession currentSession = null;
static NHibernateHelper() {
sessionFactory =
new Configuration().Configure(configfile).BuildSessionFactory();
}
public static ISession GetCurrentSession() {
if(sessionFactory != null && currentSession == null) {
currentSession = sessionFactory.OpenSession();
}
return currentSession;
}
public static void CloseSession() {
if(currentSession != null) {
currentSession.Close();
currentSession = null;
}
}
}
} - 永続化対象にするクラスは,基本的に普通の定義をすればよいが,少し制限もある。
(1) デフォルトコンストラクタを持っていること
(2) 各メンバはプロパティ(アクセサ)を定義し,かつそれがvirtualであること
簡単な定義をしてみる。namespace NHibernateTest {
public class Project {
public virtual int Id {
get { return id; }
set { id = value; }
}
private int id;
public virtual string Name {
get { return name; }
set { name = value; }
}
private string name;
}
} - 永続化クラスに対応するテーブルも作る。
CREATE TABLE PROJECTS (
ID BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT,
NAME VARCHAR(40)
); - .Netクラスとテーブルを対応付けるマップファイルを作成する。
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="HibTest1" assembly="HibTest1">
<class name="Project" table="Project">
<id name="Id" column="id" type="Int32">
<generator class="identity"/>
</id>
<property name="Name">
<column name="NAME" length="40" />
</property>
</class>
</hibernate-mapping> - アクセスはこんな感じで。
ISession session = NHibernateHelper.GetCurrentSession();
これを実行すると,レコードが1つできる(はず)。
ITransaction tx = session.BeginTransaction();
Project project = new Project();
project.Name = "test";
session.Save(project);
tx.Commit(); - log4net の定義も必要
かもしれないので,。アプリケーション側で定義する。必要ならNHibernateに関する定義も行う。
設定の詳細はlog4netの説明を参考にしてください。
NHibernate の設定(QuickStart)
最近になって“NHibernate ( Hibernate の .Net版)”というのがあるのを,初めて知りました。さっそく,QuickStart!!
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/97164572
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック
http://blog.seesaa.jp/tb/97164572
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック