Nhibernate学习笔记(1)

第一个NHibernate应用程序

环境

VS2005、NHibernate2.0、SQL Server2005

准备

下载NHibernate,建立数据库表

开始

1、创建C# Application项目Nhbnt

2、添加NHibernate.dll引用。由于NHibernate.dll引用了以下dll,所以同时需要这些的dll。

 Castle.Core.dll
 Castle.DynamicProxy2.dll
 Iesi.Collections.dll
 log4net.dll

3、添加Application Configuration File:App.config,内容如下:

app.config
<? xml version="1.0" encoding="utf-8"  ?>
< configuration >
  
< configSections >
    
< section  name ="hibernate-configuration"  type ="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"   />
  
</ configSections >

  
<!--  Add this element  -->
  
< hibernate-configuration  xmlns ="urn:nhibernate-configuration-2.2" >
    
< session-factory >
      
< property  name ="dialect" > NHibernate.Dialect.MsSql2005Dialect </ property >
      
< property  name ="connection.provider" > NHibernate.Connection.DriverConnectionProvider </ property >
      
< property  name ="connection.connection_string" >
        Data Source=DBtest02\DEV;Initial Catalog=PLForecast;User ID=PLForecast;Password=PLForecast
      
</ property >
      
<!--  Need Changed  -->
      
< mapping  assembly ="Nhbnt"   />
    
</ session-factory >
  
</ hibernate-configuration >

</ configuration >

 

 

4、编写持久化类(数据库对象类)

数据库对象类
public   class  Person
{
    
private   string  id;
    
private   string  name;
    
private   string  description;
    
private   string  remark;

    
public   virtual   string  Id {  get  {  return  id; }  set  { id  =  value; } }
    
public   virtual   string  Name {  get  {  return  name; }  set  { name  =  value; } }
    
public   virtual   string  Description {  get  {  return  description; }  set  { description  =  value; } }
    
public   virtual   string  Remark {  get  {  return  remark; }  set  { remark  =  value; } }
}

 

 

5、编写持久化类与数据库的映射文件

小提示

我们要为Microsoft Visual Studio 2008添加编写NHibernate配置文件智能提示的功能。只要在下载的NHibernate里找到configuration.xsd和nhibernate-mapping.xsd两个文件并复制到X:\Program Files\Microsoft Visual Studio 9.0\Xml\Schemas目录即可。

新建一个XML文件,命名为Person.hbm.xml。

XML文件的默认生成操作为“内容”,这里需要修改为“嵌入的资源”

内容如下:

映射文件

<? xml version="1.0" encoding="utf-8"  ?>
< hibernate-mapping  xmlns ="urn:nhibernate-mapping-2.2"  namespace ="Nhbnt"  assembly ="Nhbnt" >
  
< class  name ="Person"  table ="T_Person" >
    
<!--  A 32 hex character is our surrogate key. It's automatically generated by NHibernate with the UUID pattern.  -->
    
< id  name ="Id" >
      
< column  name ="PersonID"  sql-type ="varchar(50)"  not-null ="true" />
      
< generator  class ="uuid.hex"   />
    
</ id >

    
<!--  A cat has to have a name, but it shouldn' be too long.  -->
    
< property  name ="Name" >
      
< column  name ="PersonName"  length ="50"  not-null ="true"   />
    
</ property >
    
< property  name ="Description" >
      
< column  name ="PersonDescription"  length ="50"  not-null ="false"   />
    
</ property >
    
< property  name ="Remark"   />
  
</ class >
</ hibernate-mapping >

 

 

6、编写持久化管理类

持久化管理类
public   class  SessionManager
{
    
private   static   readonly  ISessionFactory sessionFactory;
    
static  SessionManager()
    {
        sessionFactory 
=   new  Configuration().Configure().BuildSessionFactory();
    }
    
public  ISession GetSession()
    {
        
return  sessionFactory.OpenSession();
    }
}

 

 

7、现在可以使用ISession进行CRUD操作了。

代码
// Insert
ISession session  =  SessionManager.GetSession();
ITransaction tx 
=  session.BeginTransaction();
Persion p 
=   new  Persion();
p.Name 
=   " Persion " ;
p.Description 
=   ' F ' ;
session.Save(p);
tx.Commit();
session.Close();

// Select
ISession session  =  SessionManager.GetSession();
Persion p 
=  session.Get < Persion > ( " id " );
session.Close();

 

 结束:接下来我打算找一个持久化类的生成工具。这样将会减少很多工作。

 

 

你可能感兴趣的:(Hibernate)