📄 mapping.html
字号:
<html><head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>第 5 章 对象/关系数据库映射基础(Basic O/R Mapping)</title><link rel="stylesheet" href="../shared/css/html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="HIBERNATE - 符合Java习惯的关系数据库持久化"><link rel="up" href="index.html" title="HIBERNATE - 符合Java习惯的关系数据库持久化"><link rel="previous" href="persistent-classes.html" title="第 4 章 持久化类(Persistent Classes)"><link rel="next" href="collections.html" title="第 6 章 集合类(Collections)映射"></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">第 5 章 对象/关系数据库映射基础(Basic O/R Mapping)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="persistent-classes.html">上一页</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="collections.html">下一页</a></td></tr></table><hr></div><div class="chapter" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title"><a name="mapping"></a>第 5 章 对象/关系数据库映射基础(Basic O/R Mapping)</h2></div></div><div></div></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="mapping-declaration"></a>5.1. 映射定义(Mapping declaration)</h2></div></div><div></div></div><p> 对象和关系数据库之间的映射通常是用一个XML文档(XML document)来定义的。这个映射文档被设计为易读的, 并且可以手工修改。映射语言是以Java为中心,这意味着映射文档是按照持久化类的定义来创建的, 而非表的定义。 </p><p> 请注意,虽然很多Hibernate用户选择手写XML映射文档,但也有一些工具可以用来生成映射文档, 包括XDoclet,Middlegen和AndroMDA。 </p><p> 让我们从一个映射的例子开始: </p><a name="mapping-declaration-ex1"></a><pre class="programlisting"><?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping package="eg"> <class name="Cat" table="cats" discriminator-value="C"> <id name="id"> <generator class="native"/> </id> <discriminator column="subclass" type="character"/> <property name="weight"/> <property name="birthdate" type="date" not-null="true" update="false"/> <property name="color" type="eg.types.ColorUserType" not-null="true" update="false"/> <property name="sex" not-null="true" update="false"/> <property name="litterId" column="litterId" update="false"/> <many-to-one name="mother" column="mother_id" update="false"/> <set name="kittens" inverse="true" order-by="litter_id"> <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> 我们现在开始讨论映射文档的内容。我们只描述Hibernate在运行时用到的文档元素和属性。 映射文档还包括一些额外的可选属性和元素,它们在使用schema导出工具的时候会影响导出的数据库schema结果。 (比如,<tt class="literal"> not-null</tt> 属性。) </p><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="mapping-declaration-doctype"></a>5.1.1. Doctype</h3></div></div><div></div></div><p> 所有的XML映射都需要定义如上所示的doctype。DTD可以从上述URL中获取, 也可以从<tt class="literal">hibernate-x.x.x/src/net/sf/hibernate</tt>目录中、 或<tt class="literal">hibernate.jar</tt>文件中找到。Hibernate总是会首先在它的classptah中搜索DTD文件。 如果你发现它是通过连接Internet查找DTD文件,就对照你的classpath目录检查XML文件里的DTD声明。 </p></div><div class="sect2" lang="zh-cn"><div class="titlepage"><div><div><h3 class="title"><a name="mapping-declaration-mapping"></a>5.1.2. hibernate-mapping</h3></div></div><div></div></div><p> 这个元素包括一些可选的属性。<tt class="literal">schema</tt>和<tt class="literal">catalog</tt>属性, 指明了这个映射所连接(refer)的表所在的schema和/或catalog名称。 假若指定了这个属性,表名会加上所指定的schema和catalog的名字扩展为全限定名。假若没有指定,表名就不会使用全限定名。 <tt class="literal">default-cascade</tt>指定了未明确注明<tt class="literal">cascade</tt>属性的Java属性和 集合类Hibernate会采取什么样的默认级联风格。<tt class="literal">auto-import</tt>属性默认让我们在查询语言中可以使用 非全限定名的类名。 </p><div class="programlistingco"><pre class="programlisting"><hibernate-mapping schema="schemaName" <span class="co">(1)</span>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -