牵一发动全身【Nhibernate基本映射】

用牵一发动全身来形容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无处不彰显着它给程序带来的灵活性。配置文件,一定会大行其道吧!

时间: 2024-08-27 06:14:54

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

NHibernate之映射文件配置说明(转载1)

源博客:http://www.cnblogs.com/kissdodog/archive/2013/02/21/2919886.html 1. hibernate-mapping 这个元素包括以下可选的属性.schema属性,指明了这个映射所引用的表所在的schema名称.假若指定了这个属性, 表名会加上所指定的schema的名字扩展为全限定名.假若没有指定,表名就不会使用全限定名.default-cascade 指定了未明确注明cascade属性的.Net属性和集合类.Net会采取什么样的默认

NHibernate 继承映射(第十六篇)

在NHibernate的映射中,关于继承的映射策略有3种方式 单表继承 类表继承 具体表继承 另外还有一种比较特别的多态映射 隐式多态 下面分别来阐述NHibernate继承映射的各种策略要点. 一.单表继承 单表继承的方式是,所有的字段都放在一个表中,用一个字段来区分子类.使用配置节点<subclass>配置子类. 看DEMO,首先新建一张Animal表如下: 映射文件:Animal.hbm.xml: <?xml version="1.0" encoding=&qu

NHibernate 集合映射深入 (第五篇) &lt;set&gt;,&lt;list&gt;,&lt;map&gt;,&lt;bag&gt;

NHibernate 集合映射深入 (第五篇) <set>,<list>,<map>,<bag> 一.集合外键 在NHibernate中,典型的用于映射集合类的元素有<set>,<list>,<map>,<bag>,<array>,<primitive-array>. 我们回到上一篇,集合映射基础当中的一对多查询.对于集合类型: public virtual ISet<Person

NHibernate之映射文件配置说明

NHibernate之映射文件配置说明 1. hibernate-mapping 这个元素包括以下可选的属性.schema属性,指明了这个映射所引用的表所在的schema名称.假若指定了这个属性, 表名会加上所指定的schema的名字扩展为全限定名.假若没有指定,表名就不会使用全限定名.default-cascade 指定了未明确注明cascade属性的.Net属性和集合类.Net会采取什么样的默认级联风格. auto-import属性默认让我们在查询语言中可以使用非全限定名的类名.assemb

NHibernate之映射文件配置说明(转载3)

十二.组件(component), 动态组件(dynamic-component) <component>元素把子对象的一些元素与父类对应的表的一些字段映射起来. 然后组件可以定义它们自己的属性.组件或者集合. <component name="PropertyName" (1) class="ClassName" (2) insert="true|false" (3) upate="true|false"

NHibernate——基本映射(5)

一.映射定义概括 1.1 映射定义(Mapping declaration) 对象和关系数据库之间的映射是用一个XML文档(XML document)来定义的.这个映射文档被设计为易读的,并且可以手工修改.映射语言是以对象为中心的, 意味着映射是按照持久化类的定义来创建的,而非表的定义. 让我们打开上节课的映射例子: Product.hbm.xml <? xml version="1.0" encoding="utf-8" ?> < hiberna

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

概述 有这样一个需求需要管理企业内网的信息,包括图标和链接.考虑到图标也不是很大所以就将图片直接保存在数据库中了. 但是用到Nhibernate,如何映射呢? Table 5.5. Large Object Mapping Types NHibernate Type .NET Type Database Type Remarks StringClob System.String DbType.String type="StringClob" must be specified. Ent

[NHibernate]关联映射

系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFactory配置 [NHibernate]持久化类(Persistent Classes) [NHibernate]O/R Mapping基础 [NHibernate]集合类(Collections)映射  引言 单向关联是最常用的也是最难正确使用的.在本文中会逐个经历规范的案例,从单向映射开始,然后涉及双向的案例.我们会在所有的例子中hi用Person和Address.例子中没有包括命名空间和程序集,我们把关

NHibernate代码映射

上一篇NHibernate学习笔记—使用 NHibernate构建一个ASP.NET MVC应用程序 使用的是xml进行orm映射,那么这一篇就来讲下代码映射. 新建一个抽象的数据化持久基类AbstractNHibernateDao.cs /// <summary> /// 数据持久化基本 /// </summary> /// <typeparam name="T">要持久化的数据类型</typeparam> /// <typepa