公式HP †
http://wiki.nhibernate.org/display/NH/Home
ダウンロード †
http://sourceforge.net/project/showfiles.php?group_id=73818
インストール †
Quick Start †
共通 †
- NHibernateのDBを作り、usersテーブルを作る
use NHibernate
go
CREATE TABLE users (
LogonID nvarchar(20) NOT NULL default '0',
Name nvarchar(40) default NULL,
Password nvarchar(20) default NULL,
EmailAddress nvarchar(40) default NULL,
LastLogon datetime default NULL,
PRIMARY KEY (LogonID)
)
go
- Windowsアプリケーション プロジェクトを作る
- bin/NHibernate.dllを参照に追加
- テーブルクラスを作る(class名:users/ファイル名:users.cs)
using System;
namespace NHibernate.Examples.QuickStart
{
public class User
{
private string id;
private string userName;
private string password;
private string emailAddress;
private DateTime lastLogon;
public User()
{
}
public string Id
{
get { return id; }
set { id = value; }
}
public string UserName
{
get { return userName; }
set { userName = value; }
}
public string Password
{
get { return password; }
set { password = value; }
}
public string EmailAddress
{
get { return emailAddress; }
set { emailAddress = value; }
}
public DateTime LastLogon
{
get { return lastLogon; }
set { lastLogon = value; }
}
}
}
- マッピングファイルを作る(ファイル名:User.hbm.xml)
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="NHibernate.Examples.QuickStart.User, NHibernate.Examples" table="users">
<id name="Id" column="LogonID" type="String" length="20">
<generator class="assigned" />
</id>
<property name="UserName" column= "Name" type="String" length="40"/>
<property name="Password" type="String" length="20"/>
<property name="EmailAddress" type="String" length="40"/>
<property name="LastLogon" type="DateTime"/>
</class>
</hibernate-mapping>
- マッピングファイルのプロパティで、ビルドアクションを[埋め込まれたリソース]にする
&ref(): File not found: "BuildAction.PNG" at page "NHibernate";
- アプリケーション構成ファイルを作る(プロジェクト→コンポーネントの追加→アプリケーション構成ファイル)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section
name="nhibernate"
type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089"
/>
</configSections>
<nhibernate>
<add
key="hibernate.connection.provider"
value="NHibernate.Connection.DriverConnectionProvider"
/>
<add
key="hibernate.dialect"
value="NHibernate.Dialect.MsSql2000Dialect"
/>
<add
key="hibernate.connection.driver_class"
value="NHibernate.Driver.SqlClientDriver"
/>
<add
key="hibernate.connection.connection_string"
value="Server=localhost;initial catalog=nhibernate;Integrated Security=SSPI"
/>
</nhibernate>
</configuration>
Insert †
- NHibernateの使用宣言
using NHibernate;
using NHibernate.Cfg;
- アセンブリ内のマッピングファイルを全部読み込む
Configuration cfg = new Configuration();
cfg.AddAssembly("NHibernate.Examples");
- セッション確立(DB接続)
ISessionFactory factory = cfg.BuildSessionFactory();
ISession session = factory.OpenSession();
- トランザクションの開始
ITransaction transaction = session.BeginTransaction();
- Userの情報を入れたクラスを生成
User newUser = new User();
newUser.Id = "joe_cool";
newUser.UserName = "Joseph Cool";
newUser.Password = "abc123";
newUser.EmailAddress = "joe@cool.com";
newUser.LastLogon = DateTime.Now;
- DBへ書き出し(Insert文実行)
session.Save(newUser);
- トランザクションのコミット
transaction.Commit();
- セッションのクローズ(DB切断)
session.Close();
Select(全件) †
- NHibernateの使用宣言
using NHibernate;
using NHibernate.Cfg;
- アセンブリ内のマッピングファイルを全部読み込む
Configuration cfg = new Configuration();
cfg.AddAssembly("NHibernate.Examples");
- セッション確立(DB接続)
ISessionFactory factory = cfg.BuildSessionFactory();
ISession session = factory.OpenSession();
- テーブル読み込み
IList userList = session.CreateCriteria(typeof(User)).List();
- セッションのクローズ(DB切断)
session.Close();
- リスト表示
foreach(User user in userList)
{
System.Diagnostics.Debug.WriteLine(user.Id + ":" +user.UserName +":"+ user.LastLogon);
}
Select(条件付き) †
- NHibernateの使用宣言
using NHibernate;
using NHibernate.Cfg;
- アセンブリ内のマッピングファイルを全部読み込む
Configuration cfg = new Configuration();
cfg.AddAssembly("NHibernate.Examples");
- セッション確立(DB接続)
ISessionFactory factory = cfg.BuildSessionFactory();
ISession session = factory.OpenSession();
- LastLogon?が2004/4/14 20:00以降のデータをテーブルから読み込み
IList recentUsers = session.CreateCriteria(typeof(User))
.Add(Expression.Expression.Gt("LastLogon", new DateTime(2004, 03, 14, 20, 0, 0)))
.List();
- セッションのクローズ(DB切断)
session.Close();
- リスト表示
foreach(User user in userList)
{
System.Diagnostics.Debug.WriteLine(user.Id + ":" +user.UserName +":"+ user.LastLogon);
}
更新(Update) †
- NHibernateの使用宣言
using NHibernate;
using NHibernate.Cfg;
- アセンブリ内のマッピングファイルを全部読み込む
Configuration cfg = new Configuration();
cfg.AddAssembly("NHibernate.Examples");
- セッション確立(DB接続)
ISessionFactory factory = cfg.BuildSessionFactory();
ISession session = factory.OpenSession();
- トランザクションの開始
ITransaction transaction = session.BeginTransaction();
- データ読み込み
User joeCool = (User)session.Load(typeof(User), "joe_cool");
- 内容の更新
joeCool.LastLogon = DateTime.Now;
- DB書き出し
session.Flush();
- トランザクションのコミット
transaction.Commit();
- セッションのクローズ(DB切断)
session.Close();
マッピング †