NHibernate 快速入门

 
本文内容主要来自 http://www.hibernate.org/362.html。原文是英文。
什么是 NHibernate
NHibernate是一个用于.NET的对象持续化的库,它由Java中的Hibernate移植而来,可以将对象方便地从关系数据库中读取和存入。
开发过程:
 创建存储.NET对象的数据库表
 创建需要被存储的NET类
 创建一个用来关联这个类和数据库表的映射文件
 创建一个配置文件用来告诉NHibernate如何联接数据库
   调用NHibernate API
第一步:创建表
   以SQLServer2000 数据库为例,创建NHibernate数据库,并建立一个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
第二步:创建 .NET
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; }
        }
 
    }
}
第三步:编写映射文件
<? xml version = "1.0"encoding="utf-8" ?>
< hibernate-mapping xmlns = "urn:nhibernate-mapping-2.2">
 < class name = "NHibernate.Examples.QuickStart.User, NHibernate.Examples.QuickStart"table="users"lazy="false">
    < 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 >
这一步比较重要,有以下几个注意点:
(1)      映射文件必须和对应的类文件放在同一个地方。类文件所处的程序集必须和映射文件一致。否则会出现找不到类的异常。
(2)      其中 <class/> 中的name属性是 “完整类名,程序集名”, table是数据库中的表名,注意,如果数据库表名恰好是SQL关键字,则要加上[](对于SQLServer而言);lazy=”false”设置可以使.net类里边的方法和属性不必是virtual的,至于为什么,我也不懂。以后再说。
(3)      此配置文件必须设置成嵌入式资源。方法为,右击此文件,Properties->BuildAction->Embedded Resource
 这个文件中,id是主键。 generator告诉NHinberate如何生成这个主键,这里assinged表示由用户提供,也就是.Net类里Id必须是有值的。propery很明显就是其他的列了。
第四步 编写数据库配置文件
<? 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=hinbernate;Integrated Security=SSPI;user=sa;password=123"
    />
 </ nhibernate >
</ configuration >
这一步我没有遇到什么问题,照着copy下就可以了,按照自己的需要改变下其中的内容,如果有需要的话。
5 使用 Hibernate
 下面可以开始使用Hinbernate编程了。
            Configuration cfg = new Configuration();
            cfg.AddAssembly("NHibernate.Examples.QuickStart");
            ISessionFactory factory = cfg.BuildSessionFactory();
            ISession session = factory.OpenSession();
            ITransaction transaction = session.BeginTransaction();
 
            User newUser = new User();
            newUser.Id = "joe_cool";
            newUser.UserName = "Joseph Cool";
            newUser.Password = "abc123";
            newUser.EmailAddress = "joe@cool.com";
            newUser.LastLogon = DateTime.Now;
 
            session.Save(newUser);
            transaction.Commit();
            session.Close();
            session = factory.OpenSession();
            User joeCool = (User)session.Load(typeof(User), "joe_cool");
            // set Joe Cool's Last Login property
            joeCool.LastLogon = DateTime.Now;
            // flush the changes from the Session to the Database
            session.Flush();
上面的程序包含了基本的插入,读取,修改的操作。
关于Hinbernate的具体内容以后再议。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值