zoukankan      html  css  js  c++  java
  • NHibernate快速指南

    KeyLife富翁笔记
    作者: HongYuan
    标题: NHibernate快速指南
    关键字:
    分类: 个人专区
    密级: 公开
    (评分: , 回复: 0, 阅读: 1580) »»

    NHibernate快速指南


    什么是NHibernate

    NHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库。Nhibernate 来源于非常优秀的基于Java的Hibernate 关系型持久化工具。

    NHibernate 从数据库底层来持久化你的.Net 对象到关系型数据库。NHibernate 为你处理这些,远胜于你不得不写SQL去从数据库存取对象。你的代码仅仅和对象关联,NHibernat 自动产生SQL语句,并确保对象提交到正确的表和字段中去。

    为什么写这个指南

    任何熟悉Hibernate的人会发现这篇指南和Glen Smith 的 A Hitchhiker's Guide to Hibernate 非常相近。这里的内容正是基于他的指南,因此所有的感谢都应该给与他。

    NHibernate的文档并非每处都和Hibernate的文档一致。然而,项目的相似应该能使读者通过读Hibernate的文档来很好的理解NHibernate如何工作。

    这篇文档意在让你尽可能快的开始使用NHibernate。它将介绍如何持久化一个简单的对象到一张表里。想得到更多的复杂的例子,可以参考NUnit测试及附带代码。




    开发的过程






    Nhibernate未来将会提供一些工具帮助你自动产生schema文件(现在还是基于代码)或是通过映射文件产生类(在筹措阶段)或是更新schema(来自于一个新开发者的建议)。然而,这里我们的例子是假定一切来自于完全手写,包括设置表和.Net类的编写。我们将进行以下步骤。

    1.新建一个将要持久化.Net对象的表

    2.构建一个需要被持久化的.Net类

    3.构建一个可以让NHibernate知道如何持久化对象属性的映射文件

    4.构建一个让NHibernate知道如何连接数据库的配置文件]

    5.使用NHibernate的API




    第一步:写构建表的SQL






    这里我们将使用的是一个非常简单的例子。假设你正在为你的网站开发一个基本的用户管理子系统。我们将使用如下的一张User表(假定你已经设置好一个数据库—在的例子里我称它为NHibernate)。







                   
    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
    我使用的是MS Sql Server 2000, 但也可以使用任何数据库,只要你有关于它们的基于.Net数据提供驱动程序。我们将得到一个含有LogonID,Name, Password, Email 和LastLogon的表. 经过以上标准步骤,我们下一步是写一个.Net类处理一个给定的User对象。


    2005-9-20 16:28:01   
     2005-9-20 16:38:39    第二步:产生一个.Net 类文件

    第二步:产生一个.Net 类文件






    当内存中有一堆User对象的时候,我们需要某种对象去保存它们。NHibernate通过对象属性的反射来工作,因此我们需要添加我们希望持久化的对象属性。一个可以被NHibernate持久化的类应该看起来象下面的样子:

                   
    using System;
     
    namespace NHibernate.Demo.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; }
                   }
                   
            }
    }
    在上面的例子里,我们的属性和构建函数 是public,但这个对NHibernate不是必要的.它可以使用public, protected, internal或者甚至是用private来持久化数据。

     
     2005-9-20 16:40:58    http://www.tiantiansoft.com/bbs/dispbbs.asp?boardid=40&id=99485

    http://www.tiantiansoft.com/bbs/dispbbs.asp?boardid=40&id=99485

  • 相关阅读:
    安全探讨之用Win32汇编写双进程守护
    LightTPD 1.4.12
    mysql4存在mysql5没有的性能成绩
    gcolor2-拾色器
    solaris 中挂载usb移动硬盘
    Browsershots:测试你的 Web 企图
    MythTV 0.20
    XorgEdit:xorg.conf 编纂器
    pci168c,1c无线网卡如何在64位Solaris系统上运用
    Fedora8中批改磁盘卷标
  • 原文地址:https://www.cnblogs.com/ZhouXiHong/p/568240.html
Copyright © 2011-2022 走看看