用牵一发动全身来形容Nhibernate的映射,一点都不夸张。小小的属性的修改,决定了整个Nhibernate的执行动态。以下让我们来详细了解一下,通过回想我们在上篇文章中用到的配置文件,做一个对xml映射文件的理解补充:

实体类的映射文件:

一个实体类相应的是数据库中的一张表;类中的一个属性相应表中的一个字段;操作一个对象相应操作的的是表中的一条记录。

<?xmlversion="1.0" encoding="utf-8" ?>
<hibernate-mappingxmlns="urn:nhibernate-mapping-2.2" namespace="Model"assembly="Model">
<class name="Dog"table="Dog">
<id name="Id">
<column name="DogId"sql-type="char(32)" />
<generator class="assigned"/>
</id>
<property name="Name">
<column name="Name"length="16" />
</property>
<property name="Sex" />
<property name="Weight" />
</class>
</hibernate-mapping>



<class></class>标签是定义一个持久化类的。

"class name="Dog""                             持久化类的类名,这里能够是类的全名。

table="Dog"                            相应的数据库表名。

<id><id>标签定义了该属性到数据库表主键字段的映射。

   
property  name="Id"                           标识属性的名字。

sql-type="char(32)"                              NHibernate类型的名字

column name="DogId"                          主键字段的名字。

<property></property>标签是类定义了一个持久化类的属性。

name="propertyName" 
                         属性名

column="column_name"                          相应的数据库字段名。

type="typename"                               NHibernate类型的名字。

    Nhibernate运作方式的配置文件,主要是配置session工厂:

<strong><</strong>?xmlversion="1.0" encoding="utf-8" ?>

<hibernate-configurationxmlns="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">

     Server=(local);uid=sa;pwd=123456;database=quickstart //将该属性的填写改成你自己的数据库连接符

    </property>

    <property name="hbm2ddl.auto">update</property>

    <mapping assembly="Model"/>

  </session-factory>

</hibernate-configuration>

<property name="dialect">   
配置
数据库方言
,针对不同的数据有不同配置,当前配置的是Sqlsever的方言

<property name="connection.provider">   
配置
连接池

<property name="connection.connection_string">     
属性值大家看着肯定熟悉,对,是配置连接数据库的字符串

<property name="hbm2ddl.auto">   
该属性的配置,决定Nhibernate的执行,是否会自己主动生成数据库表

<mapping assembly="Model"/>     
这里的属性
配置
要载入的实体类的配置文件所在的程序集

每一个属性的值,都还有非常多的不同配置,自己可通过查阅API手冊,具体地去学习,这里仅仅做简单的分享。

总结:配置文件给我们的程序带来了非常大的优点,从抽象工厂,到Nhibernate无处不彰显着它给程序带来的灵活性。配置文件,一定会大行其道吧!

牵一发动全身【Nhibernate基本映射】的更多相关文章

  1. 那些年被我坑过的Python——牵一发动全身 第十一章MySQL、ORM

    #!/usr/bin/env python # -*- coding:utf-8 -*- __Author__ = "Zhang Xuyao" from sqlalchemy im ...

  2. NHibernate之映射文件配置说明

    NHibernate之映射文件配置说明 1. hibernate-mapping 这个元素包括以下可选的属性.schema属性,指明了这个映射所引用的表所在的schema名称.假若指定了这个属性, 表 ...

  3. NHibernate 继承映射(第十六篇)

    在NHibernate的映射中,关于继承的映射策略有3种方式 单表继承 类表继承 具体表继承 另外还有一种比较特别的多态映射 隐式多态 下面分别来阐述NHibernate继承映射的各种策略要点. 一. ...

  4. NHibernate 集合映射基础(第四篇) - 一对一、 一对多、多对多小示例

    映射文件,用于告诉NHibernate数据库里的表.列于.Net程序中的类的关系.因此映射文件的配置非常重要. 一.一对一 NHibernate一对一关系的配置方式使用<one-to-one&g ...

  5. DDD中的值对象如何用NHibernate进行映射

    原文:DDD中的值对象如何用NHibernate进行映射 <component/>是NHibernate中一个有趣的特性,即是用来映射DDD(Data-Display-Debuger)概念 ...

  6. 5、ASP.NET MVC入门到精通——NHibernate代码映射

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 上一篇NHibernate学习笔记—使用 NHibernate构建一个ASP.NET MVC应用程序 使用的是xml进行orm映射,那么这一 ...

  7. [NHibernate]关联映射

    系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) [NHibernate ...

  8. [NHibernate]Nhibernate如何映射sqlserver中image字段

    概述 有这样一个需求需要管理企业内网的信息,包括图标和链接.考虑到图标也不是很大所以就将图片直接保存在数据库中了. 但是用到Nhibernate,如何映射呢? Table 5.5. Large Obj ...

  9. NHibernate系列文章六:NHibernate数据类型映射

    摘要 NHibernate支持所有的数据库数据类型. 以SQL Server数据库为例,下表是NHibernate支持的SQL Server数据库最常见的数据类型对照表. 第一列是NHibernate ...

随机推荐

  1. PHP二分查找(递归和循环)

    二分查找可以通过递归和循环来实现, 思路如下: 将要查找的数和中间数进行比较, 如果相等,则表示找到,返回下标 如果要查找的数小于中间这个数,则说明要查找的数分布在数组左边,修改right边界,使其等 ...

  2. 跨域资源共享 CORS 详解

    CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing). 它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从 ...

  3. C# 创建Windows服务。服务功能:定时操作数据库 (转)

    C# 创建Windows服务.服务功能:定时操作数据库 一.创建window服务 1.新建项目-->选择Windows服务.默认生成文件包括Program.cs,Service1.cs 2.在S ...

  4. 创建一个jQuery UI的垂直进度条效果

    日期:2013-9-24  来源:GBin1.com 在线演示 缺省的jQuery UI只有水平的进度条效果,没有垂直的进度条效果,仅仅重新定义JQuery UI的CSS不能解决这个问题. 这里我们扩 ...

  5. CI分支kohana在线文档

    http://www.luzhongpeng.com/guide/kohana/mvc/controllers http://www.lampblog.net/kohana3%E4%BD%BF%E7% ...

  6. [Regular Expressions] Find a String that Precedes Another String ?= , ?!

    Let's image tow cases for the following string: var str = `foo foobar foobaz fooboo` First of all: w ...

  7. 8. 冒泡法排序和快速排序(基于openCV)

    一.前言 主要讲述冒泡法排序和快速排序的基本流程,并给出代码实现,亲测可用. 二.冒泡法排序 冒泡法排序主要是将相邻两个值比较,把小的向前冒泡,大的向后沉淀,时间复杂度为O(n2).主要思想如下: 分 ...

  8. iOS 之URL schemes

    添加 URL  schemes 步骤: 1.打开info.plist文件. 2.点击 “+ ”号添加,或者在列表上点击鼠标右键,选择 Add Row. 3.选择 URL types. 4.点击三角号展 ...

  9. The Letter Carrier's Rounds(摘)

    Description For an electronic mail application you are to describe the SMTP-based communication that ...

  10. (转)JAVA路径问题及命令行编译运行基础(linux下)

    原地址: http://blog.csdn.net/biaobiaoqi/article/details/6846274 java的运行机制的基本概念: 源文件 也就是我们熟知的.java文件. 类文 ...