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

    什么是NHibernate

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

    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.使用NHibernateAPI

    第一步:写构建表的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对象。

    第二步:产生一个.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来持久化数据。

  • 相关阅读:
    RabbitMQ核心组件及应用场景
    集群架构和CentOS7安装RabbitMQ集群(单机版)
    CentOS7下安装单机版RabbitMQ及权限赋予
    Spring事务管理
    java服务器图片压缩的几种方式及效率比较
    Spring中通过java的@Valid注解和@ControllerAdvice实现全局异常处理。
    go语言调度器源代码情景分析之三:内存
    go语言调度器源代码情景分析之二:CPU寄存器
    go语言调度器源代码情景分析之一:开篇语
    面试官:swoole 的认识和强大之处你不知道?回去吧!!!
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/1538332.html
Copyright © 2011-2022 走看看