<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>第4章 O/R Mapping基础</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.69.1"><link rel="start" href="index.html" title="NHibernate Documentation 1.0.0.0"><link rel="up" href="NHibernate.Mapping.html" title="Part?I.?NHibernate Mapping"><link rel="上一页" href="NHibernate.Mapping.html" title="Part?I.?NHibernate Mapping"><link rel="下一页" href="collections.html" title="Chapter?5.?Collection Mapping"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr>
<th colspan="3" align="center">第4章 O/R Mapping基础</th>
</tr><tr>
<td width="20%" align="left"><a accesskey="p" href="NHibernate.Mapping.html">上一页</a></td>
<th width="60%" align="center">第一部分 NHibernate 映射</th>
<td width="20%" align="right"><a accesskey="n" href="collections.html">下一页</a></td>
</tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="mapping"></a>第 4 章 O/R Mapping基础</h2>
</div></div></div><div class="toc"><p><b>目录</b></p><dl><dt><span class="sect1"><a href="mapping.html#mapping-declaration">映射声明(Mapping declaration)</a></span></dt><dd><dl><dt><span class="sect2"><a href="mapping.html#mapping-declaration-doctype">Schema</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-declaration-mapping">hibernate-mapping</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-declaration-class">class</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-declaration_id">id</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-declaration-compositeid">联合ID(composite-id)</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-declaration-discriminator">识别器(discriminator)</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-declaration-version">版本(version)(可选)</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-declaration-timestamp">时间戳(timestamp)(可选)</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-declaration-property">property</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-declaration-manytoone">多对一(many-to-one)</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-declaration-onetoone">一对一(one-to-one)</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-declaration-component">组件(component)</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-declaration-subclass">子类(subclass)</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-declaration-joinedsubclass">连接的子类(joined-subclass)</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-declaration-collections">map, set, list, bag</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-declaration-import">引用(import)</a></span></dt></dl></dd><dt><span class="sect1"><a href="mapping.html#mapping-types">NHibernate的类型</a></span></dt><dd><dl><dt><span class="sect2"><a href="mapping.html#mapping-types-entitiesvalues">实体(Entities)和值(values)</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-types-basictypes">基本值类型</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-types-custom">自定义值类型</a></span></dt><dt><span class="sect2"><a href="mapping.html#mapping-types-anymapping">映射到"任意"(any)类型</a></span></dt></dl></dd><dt><span class="sect1"><a href="mapping.html#mapping-quotedidentifiers">SQL中引号包围的标识符</a></span></dt><dt><span class="sect1"><a href="mapping.html#mapping-modularfiles">映射文件的模块化(Modular mapping files)</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="mapping-declaration"></a>映射声明(Mapping declaration)</h2></div></div></div><p>
对象和关系数据库之间的映射是用一个XML文档(XML document)来定义的。这个映射文档被设计为易读的,并且可以手工修改。映射语言是以.NET为中心的,意味着映射是按照持久化类的定义来创建的,而非表的定义。
</p>
<p>
请注意,虽然很多Hibernate用户选择手工定义XML映射文档,也有一些工具来生成映射文档,包括XDoclet,Middlegen和AndroMDA. </p>
<P><font color="red">译者注:这里是NHibernate文档中一处没有从Hibernate文档中转换过来的部分,NHibernate中并没有像XDoclet,Middlegen和AndroMDA这样的工具,我一般会采用<a href="http://www.mygenerationsoftware.com/">MyGeneration</a>这样的代码生成工具来生成XML配置文档。 </font></P>
<p>让我们从一个映射的例子开始:</p>
<pre class="programlisting">
<?xml version="1.0" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0"
namespace="Eg" assembly="Eg">
<class name="Cat" table="CATS" discriminator-value="C">
<id name="Id" column="uid" type="Int64">
<generator class="hilo"/>
</id>
<discriminator column="subclass" type="Char"/>
<property name="Birthdate" type="Date"/>
<property name="Color" not-null="true"/>
<property name="Sex" not-null="true" update="false"/>
<property name="Weight"/>
<many-to-one name="Mate" column="mate_id"/>
<set name="Kittens">
<key column="mother_id"/>
<one-to-many class="Cat"/>
</set>
<subclass name="DomesticCat" discriminator-value="D">
<property name="Name" type="String"/>
</subclass>
</class>
<class name="Dog">
<!-- mapping for Dog could go here -->
</class>
</hibernate-mapping>
</pre><p>
我们现在开始讨论映射文档的内容。我们只描述NHibernate在运行时用到的文档元素和属性。映射文档还包括一些额外的可选属性和元素,它们在使用schema导出工具的时候会影响导出的数据库schema结果。(比如, <code class="literal">not-null</code> 属性。)
</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mapping-declaration-doctype"></a>Schema</h3></div></div></div>
<p>
所有的XML映射都需要使用nhibernate-mapping-2.0 schema。目前的schema可以在NHibernate的资源路径或者是<code class="literal">NHibernate.dll</code>的嵌入资源(Embedded Resource)中找到。NHibernate总是会优先使用嵌入在资源中的schema文件。 </p>
<p>在使用VisualStudio.NET时,你应该将<code class="literal">hibernate-mapping</code>拷贝到<code class="literal">C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Packages\schemas\xml</code>路径中,以获得智能感知功能。</p>
</div>
<div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="mapping-declaration-mapping"></a>hibernate-mapping</h3></div></div></div>
<p>这个元素包括四个可选的属性。<code class="literal">schema</code>属性,指明了这个映射所引用的表所在的schema名称。假若指定了这个属性,表名会加上所指定的schema的名字扩展为全限定名。假若没有指定,表名就不会使用全限定名。<code class="literal">default-cascade</code>指定了未明确注明cascade属性的属性和集合类会采取什么样的默认级联风格。auto-import属性默认让我们在查询语言中可以使用非全限定名的类名。<code class="literal">default-access</code>告诉我们怎么访问属性值。</p>
<pre class="programlisting"><hibernate-mapping
schema="schemaName" <a name="hm1-co" href="mapping.html#hm1">(1)</a>
default-cascade="none|save-update" <a name="hm2-co" href="mapping.html#hm2">(2)</a>
auto-import="true|false" <a name="hm3-co" href="mapping.html#hm3">(3)</a>
default-access="property|field|nosetter|ClassName" <a name="hm4-co" href="mapping.html#hm4">(4)</a>
assembly="assembly.name" <a name="hm5-co" href="mapping.html#hm5">(5)</a>
namespace="namespace.name" <a name="hm6-co" href="mapping.html#hm6">(6)</a>
> </pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><a
NHibernated的中文帮助文档
需积分: 4 119 浏览量
2008-03-07
15:56:46
上传
评论
收藏 98KB RAR 举报
chinapuma
- 粉丝: 0
- 资源: 17
最新资源
- vscode配置c/c 环境教程
- vscode配置c/c 环境教程
- 基于matlab实现电磁优化计算功能,进行线型规划优化电磁设计.rar
- 基于matlab实现带精英策略的非支配排序遗传算法matlab 源码.rar
- 基于matlab实现差分进化算法,最新的用于替代遗传算法,是以后的主要发展方法.rar
- VSCode配置c/c++环境教程.md
- 基于matlab实现标准合作型协同进化遗传算法matlab源程序
- 七下人教.zip
- 基于matlab实现本份代码能对图像进行gabor滤波处理,结合指纹方向图以及指纹沟壑频率特性,对指纹图像进行增强.rar
- 基于matlab实现RBM神经网络实现了手写数字体识别的GUI程序.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈