[hibernate-commits] Hibernate SVN: r14081 - in
core/trunk/documentation/manual/zh-CN: src/main and 3 other
directories.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Tue Oct 9 16:10:35 EDT 2007
Author: steve.ebersole at jboss.com
Date: 2007-10-09 16:10:34 -0400 (Tue, 09 Oct 2007)
New Revision: 14081
Added:
core/trunk/documentation/manual/zh-CN/glossary.txt
core/trunk/documentation/manual/zh-CN/src/main/docbook/Hibernate_Reference.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/architecture.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/association_mapping.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/basic_mapping.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/batch.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/best_practices.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/collection_mapping.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/component_mapping.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/configuration.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/events.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/example_mappings.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/example_parentchild.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/example_weblog.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/filters.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/inheritance_mapping.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/performance.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/persistent_classes.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/preface.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/query_criteria.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/query_hql.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/query_sql.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/quickstart.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/session_api.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/toolset_guide.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/transactions.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/tutorial.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/xml.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/images/
core/trunk/documentation/manual/zh-CN/src/main/docbook/images/AuthorWork.png
core/trunk/documentation/manual/zh-CN/src/main/docbook/images/AuthorWork.zargo
core/trunk/documentation/manual/zh-CN/src/main/docbook/images/CustomerOrderProduct.png
core/trunk/documentation/manual/zh-CN/src/main/docbook/images/CustomerOrderProduct.zargo
core/trunk/documentation/manual/zh-CN/src/main/docbook/images/EmployerEmployee.png
core/trunk/documentation/manual/zh-CN/src/main/docbook/images/EmployerEmployee.zargo
core/trunk/documentation/manual/zh-CN/src/main/docbook/images/full_cream.png
core/trunk/documentation/manual/zh-CN/src/main/docbook/images/full_cream.svg
core/trunk/documentation/manual/zh-CN/src/main/docbook/images/hibernate_logo_a.png
core/trunk/documentation/manual/zh-CN/src/main/docbook/images/lite.png
core/trunk/documentation/manual/zh-CN/src/main/docbook/images/lite.svg
core/trunk/documentation/manual/zh-CN/src/main/docbook/images/overview.png
core/trunk/documentation/manual/zh-CN/src/main/docbook/images/overview.svg
core/trunk/documentation/manual/zh-CN/src/main/docbook/legal_notice.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/translators.xml
Removed:
core/trunk/documentation/manual/zh-CN/src/main/docbook/glossary.txt
core/trunk/documentation/manual/zh-CN/src/main/docbook/master.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/modules/
core/trunk/documentation/manual/zh-CN/src/main/resources/
Log:
new docbook layout (prep for translations migration to PO)
Copied: core/trunk/documentation/manual/zh-CN/glossary.txt (from rev 14080, core/trunk/documentation/manual/zh-CN/src/main/docbook/glossary.txt)
===================================================================
--- core/trunk/documentation/manual/zh-CN/glossary.txt (rev 0)
+++ core/trunk/documentation/manual/zh-CN/glossary.txt 2007-10-09 20:10:34 UTC (rev 14081)
@@ -0,0 +1,27 @@
+O/R Mapping 对象/å
³ç³»æ°æ®åºæ å°
+identifier property: æ è¯å±æ§
+discriminator: è¾¨å«æ å¿(ä¸ä½¿ç¨"é´å«å¨")
+
+join-subclass,union-subclass,join: ä¸ç¿»è¯
+
+fine-grained ç»ç²åº¦
+domain model é¢å模å
+business object ä¸å¡å¯¹è±¡(v2çæ¶åç¿»è¯ä¸º"åä¸å¯¹è±¡",è¢«æ æ°äººçéª....)
+annotations 注解(è¿ä¸ªè¯è¿æ¯è¾æ°,ä¹è§å°æç¿»è¯ä¸º"ç¹æ®æ³¨é"/"æ æ³¨"ç)
+
+Aggregate functions ç»è®¡å½æ° (èé彿°?èå彿°? è¿æ¯ç¿»è¯ä¸ºç»è®¡å½æ°æè½è®©äººçæ)
+Criteria Queries æ¡ä»¶æ¥è¯¢(æ åæ¥è¯¢?è¿éCriteriaæ¯"夿®"çå«ä¹,èé"æ å",æè¯ä¸ºæ¡ä»¶æ¥è¯¢æ´å æç½)
+
+session flush sessionæ¸
æ´
+lazy fetching å»¶è¿å è½½(æå è½½,ç¿»è¯å¾ç´ç½,使¯å´ä¸æçè§£)
+
+å¯¹è±¡ç¶æï¼
+ persistent class æä¹
åç±»
+ persistent object æä¹
对象 (ä½ç°è¿æ¯ä¸æä¸ªæä¹
å设å¤èç³»ç,æçµä¹å䏿¶å¤±)
+ transient object ç¬æ¶å¯¹è±¡ (å
¶å«ä¹æ¯ä»
å¨å
åä¸åå¨ç,æçµä¹åæ¶å¤±,ç¿»è¯ä¸ºç¬æ¶å¯¹è±¡æ¯è¾å¥½)
+ detached object è±ç®¡å¯¹è±¡(ä¸sessionè±ç¦»ç对象)
+
+outer-join fetching å¤è¿æ¥æå (fetchä¸è¬ç¿»è¯ä¸º"è·å",v2ç¿»è¯çæ¶å,为äºçªåºå
¶ä¸»å¨è·åçç¹ç¹,ç¿»è¯ä¸º"æå")
+
+class hierarchy ç±»åå±ç»æ http://www.umlchina.com/xprogrammer/glossary1.htm
+inheritance hierarchy ç»§æ¿å±æ¬¡ http://www-128.ibm.com/developerworks/cn/java/j-aopwork4/?ca=dwcn-newsletter-java
Copied: core/trunk/documentation/manual/zh-CN/src/main/docbook/Hibernate_Reference.xml (from rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/Hibernate_Reference.xml)
===================================================================
--- core/trunk/documentation/manual/zh-CN/src/main/docbook/Hibernate_Reference.xml (rev 0)
+++ core/trunk/documentation/manual/zh-CN/src/main/docbook/Hibernate_Reference.xml 2007-10-09 20:10:34 UTC (rev 14081)
@@ -0,0 +1,72 @@
+<?xml version='1.0' encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+ <!ENTITY versionNumber "3.3.0.alpha1">
+ <!ENTITY copyrightYear "2004">
+ <!ENTITY copyrightHolder "Red Hat Middleware, LLC.">
+]>
+
+<book>
+
+ <bookinfo>
+ <title>HIBERNATE - 符åJavaä¹ æ¯çå
³ç³»æ°æ®åºæä¹
å</title>
+ <subtitle>Hibernateåèææ¡£</subtitle>
+ <releaseinfo>&versionNumber;</releaseinfo>
+ <productnumber>&versionNumber;</productnumber>
+ <issuenum>1</issuenum>
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="images/hibernate_logo_a.png" align="center" />
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="images/hibernate_logo_a.png" depth="3cm" />
+ </imageobject>
+ </mediaobject>
+ <copyright>
+ <year>©rightYear;</year>
+ <holder>©rightHolder;</holder>
+ </copyright>
+ <xi:include href="translators.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="legal_notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ </bookinfo>
+
+ <toc/>
+
+ <xi:include href="content/preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/tutorial.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/architecture.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/configuration.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/persistent_classes.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/basic_mapping.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/collection_mapping.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/association_mapping.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/component_mapping.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/inheritance_mapping.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/session_api.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/transactions.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/events.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/batch.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/query_hql.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/query_criteria.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/query_sql.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/filters.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/xml.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/performance.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/toolset_guide.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/example_parentchild.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/example_weblog.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/example_mappings.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/best_practices.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+</book>
+
Copied: core/trunk/documentation/manual/zh-CN/src/main/docbook/content/architecture.xml (from rev 14080, core/trunk/documentation/manual/zh-CN/src/main/docbook/modules/architecture.xml)
===================================================================
--- core/trunk/documentation/manual/zh-CN/src/main/docbook/content/architecture.xml (rev 0)
+++ core/trunk/documentation/manual/zh-CN/src/main/docbook/content/architecture.xml 2007-10-09 20:10:34 UTC (rev 14081)
@@ -0,0 +1,284 @@
+<chapter id="architecture">
+
+ <title>ä½ç³»ç»æ(Architecture)</title>
+ <sect1 id="architecture-overview" revision="1">
+ <title>æ¦åµ(Overview)</title>
+
+ <para>
+ ä¸ä¸ªé常ç®è¦çHibernateä½ç³»ç»æçæ¦è¦å¾ï¼
+ </para>
+
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="images/overview.svg" format="SVG" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="../shared/images/overview.gif" format="GIF" align="center"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>
+ ä»è¿ä¸ªå¾å¯ä»¥çåºï¼Hibernateä½¿ç¨æ°æ®åºåé
ç½®ä¿¡æ¯æ¥ä¸ºåºç¨ç¨åºæä¾æä¹
åæå¡ï¼ä»¥åæä¹
ç对象ï¼ã
+ </para>
+
+ <para>
+ æä»¬æ¥æ´è¯¦ç»å°çä¸ä¸Hibernateè¿è¡æ¶ä½ç³»ç»æãç±äºHibernateéå¸¸çµæ´»ï¼ä¸æ¯æå¤ç§åºç¨æ¹æ¡ï¼
+ æä»¥æä»¬è¿åªæè¿°ä¸ä¸ä¸¤ç§æç«¯çæ
åµãâè½»åâçä½ç³»ç»ææ¹æ¡ï¼è¦æ±åºç¨ç¨åºæä¾èªå·±çJDBC
+ è¿æ¥å¹¶ç®¡çèªå·±çäºå¡ãè¿ç§æ¹æ¡ä½¿ç¨äºHibernate APIçæå°åéï¼
+ </para>
+
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="images/lite.svg" format="SVG" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="../shared/images/lite.gif" format="GIF" align="center"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>
+ âå
¨é¢è§£å³âçä½ç³»ç»ææ¹æ¡ï¼å°åºç¨å±ä»åºå±çJDBC/JTA API䏿½è±¡åºæ¥ï¼è让Hibernateæ¥å¤çè¿äºç»èã
+ </para>
+
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="images/full_cream.svg" format="SVG" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="../shared/images/full_cream.gif" format="GIF" align="center"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>
+ å¾ä¸å个对象çå®ä¹å¦ä¸ï¼
+
+ <variablelist spacing="compact">
+ <varlistentry>
+ <term>SessionFactory (<literal>org.hibernate.SessionFactory</literal>)</term>
+ <listitem>
+ <para>
+ é对åä¸ªæ°æ®åºæ å°å
³ç³»ç»è¿ç¼è¯åçå
åéåï¼æ¯çº¿ç¨å®å
¨çï¼ä¸å¯åï¼ã
+ 宿¯çæ<literal>Session</literal>çå·¥åï¼æ¬èº«è¦ç¨å°<literal>ConnectionProvider</literal>ã
+ 该对象å¯ä»¥å¨è¿ç¨æé群ç级å«ä¸ï¼ä¸ºé£äºäºå¡ä¹é´å¯ä»¥éç¨çæ°æ®æä¾å¯éçäºçº§ç¼åã
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Session (<literal>org.hibernate.Session</literal>)</term>
+ <listitem>
+ <para>
+ 表示åºç¨ç¨åºä¸æä¹
å¨åå±ä¹é´äº¤äºæä½çä¸ä¸ªå线ç¨å¯¹è±¡ï¼æ¤å¯¹è±¡çåæå¾çã
+ å
¶éèäºJDBCè¿æ¥ï¼ä¹æ¯<literal>Transaction</literal>çå·¥åã
+ å
¶ä¼ææä¸ä¸ªé对æä¹
å对象çå¿
éï¼ç¬¬ä¸çº§ï¼ç¼åï¼å¨éåå¯¹è±¡å¾æè
æ ¹æ®æä¹
åæ è¯æ¥æ¾å¯¹è±¡æ¶ä¼ç¨å°ã
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>æä¹
ç对象åå
¶éå</term>
+ <listitem>
+ <para>
+ 带ææä¹
åç¶æçãå
·æä¸å¡åè½çå线ç¨å¯¹è±¡ï¼æ¤å¯¹è±¡çåæå¾çã
+ è¿äºå¯¹è±¡å¯è½æ¯æ®éçJavaBeans/POJOï¼å¯ä¸ç¹æ®çæ¯ä»ä»¬æ£ä¸ï¼ä»
ä»
ä¸ä¸ªï¼<literal>Session</literal>ç¸å
³èã
+ 䏿¦è¿ä¸ª<literal>Session</literal>被å
³éï¼è¿äºå¯¹è±¡å°±ä¼è±ç¦»æä¹
åç¶æï¼è¿æ ·å°±å¯è¢«åºç¨ç¨åºçä»»ä½å±èªç±ä½¿ç¨ã
+ ï¼ä¾å¦ï¼ç¨ä½è·è¡¨ç¤ºå±æäº¤éçæ°æ®ä¼ è¾å¯¹è±¡ãï¼
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>ç¬æ(transient)åè±ç®¡(detached)ç对象åå
¶éå</term>
+ <listitem>
+ <para>
+ é£äºç®å没æä¸sessionå
³èçæä¹
åç±»å®ä¾ã
+ ä»ä»¬å¯è½æ¯å¨è¢«åºç¨ç¨åºå®ä¾ååï¼å°æªè¿è¡æä¹
åç对象ã
+ ä¹å¯è½æ¯å 为å®ä¾åä»ä»¬ç<literal>Session</literal>å·²ç»è¢«å
³éèè±ç¦»æä¹
åç对象ã
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>äºå¡Transaction (<literal>org.hibernate.Transaction</literal>)</term>
+ <listitem>
+ <para>
+ ï¼å¯éçï¼åºç¨ç¨åºç¨æ¥æå®ååæä½åå
èå´ç对象ï¼å®æ¯å线ç¨çï¼çå½å¨æå¾çã
+ å®éè¿æ½è±¡å°åºç¨ä»åºå±å
·ä½çJDBCãJTA以åCORBAäºå¡é离å¼ã
+ æäºæ
åµä¸ï¼ä¸ä¸ª<literal>Session</literal>ä¹å
å¯è½å
å«å¤ä¸ª<literal>Transaction</literal>对象ã
+ 尽管æ¯å¦ä½¿ç¨è¯¥å¯¹è±¡æ¯å¯éçï¼ä½æ 论æ¯ä½¿ç¨åºå±çAPIè¿æ¯ä½¿ç¨<literal>Transaction</literal>对象ï¼äºå¡è¾¹ççå¼å¯ä¸å
³éæ¯å¿
ä¸å¯å°çã
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</literal>)</term>
+ <listitem>
+ <para>
+ ï¼å¯éçï¼çæJDBCè¿æ¥çå·¥åï¼åæ¶ä¹èµ·å°è¿æ¥æ± çä½ç¨ï¼ã
+ å®éè¿æ½è±¡å°åºç¨ä»åºå±ç<literal>Datasource</literal>æ<literal>DriverManager</literal>é离å¼ã
+ ä»
ä¾å¼åè
æ©å±/å®ç°ç¨ï¼å¹¶ä¸æ´é²ç»åºç¨ç¨åºä½¿ç¨ã
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)</term>
+ <listitem>
+ <para>
+ ï¼å¯éçï¼çæ<literal>Transaction</literal>对象å®ä¾çå·¥åã
+ ä»
ä¾å¼åè
æ©å±/å®ç°ç¨ï¼å¹¶ä¸æ´é²ç»åºç¨ç¨åºä½¿ç¨ã
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis>æ©å±æ¥å£</emphasis></term>
+ <listitem>
+ <para>
+ Hibernateæä¾äºå¾å¤å¯éçæ©å±æ¥å£ï¼ä½ å¯ä»¥éè¿å®ç°å®ä»¬æ¥å®å¶ä½ çæä¹
å±çè¡ä¸ºã
+ å
·ä½è¯·åèAPIææ¡£ã
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ å¨ç¹å®âè½»åâçä½ç³»ç»æä¸ï¼åºç¨ç¨åºå¯è½ç»è¿
+ <literal>Transaction</literal>/<literal>TransactionFactory</literal> 以å
+ <literal>ConnectionProvider</literal> çAPIç´æ¥è·JTAæJDBCæäº¤éã
+ </para>
+ </sect1>
+
+ <sect1 id="architecture-states" revision="1">
+ <title>å®ä¾ç¶æ</title>
+ <para>
+ ä¸ä¸ªæä¹
åç±»çå®ä¾å¯è½å¤äºä¸ç§ä¸åç¶æä¸çæä¸ç§ã
+ è¿ä¸ç§ç¶æçå®ä¹å䏿è°ç<emphasis>æä¹
åä¸ä¸æ(persistence context)</emphasis>æå
³ã
+ Hibernateç<literal>Session</literal>对象就æ¯è¿ä¸ªæè°çæä¹
åä¸ä¸æï¼
+ </para>
+
+ <variablelist spacing="compact">
+ <varlistentry>
+ <term>ç¬æï¼transientï¼</term>
+ <listitem>
+ <para>
+ 该å®ä¾ä»æªä¸ä»»ä½æä¹
åä¸ä¸æå
³èè¿ã宿²¡ææä¹
åæ è¯ï¼ç¸å½äºä¸»é®å¼ï¼ã
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>æä¹
å(persistent)</term>
+ <listitem>
+ <para>
+ å®ä¾ç®åä¸æä¸ªæä¹
åä¸ä¸ææå
³èã
+ 宿¥ææä¹
åæ è¯ï¼ç¸å½äºä¸»é®å¼ï¼ï¼å¹¶ä¸å¯è½å¨æ°æ®åºä¸æä¸ä¸ªå¯¹åºçè¡ã
+ å¯¹äºæä¸ä¸ªç¹å®çæä¹
åä¸ä¸æï¼Hibernate<emphasis>ä¿è¯</emphasis>æä¹
åæ è¯ä¸Javaæ è¯ï¼å
¶å¼ä»£è¡¨å¯¹è±¡å¨å
åä¸çä½ç½®ï¼çä»·ã
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>è±ç®¡(detached)</term>
+ <listitem>
+ <para>
+ å®ä¾æ¾ç»ä¸æä¸ªæä¹
åä¸ä¸æåçè¿å
³èï¼ä¸è¿é£ä¸ªä¸ä¸æè¢«å
³éäºï¼
+ æè
è¿ä¸ªå®ä¾æ¯è¢«åºåå(serialize)å°å¦å¤çè¿ç¨ã
+ 宿¥ææä¹
åæ è¯ï¼å¹¶ä¸å¨æ°æ®åºä¸å¯è½åå¨ä¸ä¸ªå¯¹åºçè¡ã
+ 对äºè±ç®¡ç¶æçå®ä¾ï¼Hibernateä¸ä¿è¯ä»»ä½æä¹
åæ è¯åJavaæ è¯çå
³ç³»ã
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="architecture-jmx" revision="1">
+ <title>JMXæ´å</title>
+
+ <para>
+ JMXæ¯ç®¡çJavaç»ä»¶(Java components)çJ2EEæ åã Hibernate å¯ä»¥éè¿ä¸ä¸ªJMXæ åæå¡æ¥ç®¡çã
+ å¨è¿ä¸ªåè¡çæ¬ä¸ï¼æä»¬æä¾äºä¸ä¸ªMBeanæ¥å£çå®ç°,å³
+ <literal>org.hibernate.jmx.HibernateService</literal>ã
+ </para>
+
+ <para>
+ æ³è¦çå¦ä½å¨JBossåºç¨æå¡å¨ä¸å°Hibernateé¨ç½²ä¸ºä¸ä¸ªJMXæå¡çä¾åï¼æ¨å¯ä»¥åèJBossç¨æ·æåã
+ æä»¬ç°å¨è¯´ä¸ä¸å¨Jbossåºç¨æå¡å¨ä¸ï¼ä½¿ç¨JMXæ¥é¨ç½²Hibernateç好å¤ï¼
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis>Session管çï¼</emphasis> Hibernateç<literal>Session</literal>对象ççå½å¨æå¯ä»¥
+ èªå¨è·ä¸ä¸ªJTAäºå¡è¾¹çç»å®ãè¿æå³çä½ æ éæå·¥å¼å
³<literal>Session</literal>äº, è¿é¡¹
+ å·¥ä½ä¼ç±JBoss EJB æ¦æªå¨æ¥å®æãä½ åä¹ä¸ç¨æ
å¿ä½ ç代ç ä¸çäºå¡è¾¹çäº(é¤éä½ æ³å©ç¨Hibernateæä¾å¯é
+ ç<literal>Transaction</literal> APIæ¥èªå·±åä¸ä¸ªä¾¿äºç§»æ¤ççæä¹
å±)ã
+ ä½ éè¿è°ç¨<literal>HibernateContext</literal>æ¥è®¿é®<literal>Session</literal>ã
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>HAR é¨ç½²:</emphasis> é常æ
åµä¸ï¼ä½ ä¼ä½¿ç¨JBossçæå¡é¨ç½²æè¿°ç¬¦ï¼å¨EARæ/åSARæä»¶ä¸ï¼æ¥é¨ç½²Hibernate JMXæå¡ã
+ è¿ç§é¨ç½²æ¹å¼æ¯æææå¸¸è§çHibernate <literal>SessionFactory</literal>çé
ç½®é项ã
+ ä¸è¿ï¼ä½ ä»éå¨é¨ç½²æè¿°ç¬¦ä¸ï¼ååºä½ ææçæ å°æä»¶çååãå¦æä½ ä½¿ç¨HARé¨ç½²æ¹å¼, JBoss
+ ä¼èªå¨æ¢æµåºä½ çHARæä»¶ä¸ææçæ å°æä»¶ã
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ è¿äºé项æ´å¤çæè¿°ï¼è¯·åèJBoss åºç¨ç¨åºç¨æ·æåã
+ </para>
+
+ <para>
+ å°Hibernate以é¨ç½²ä¸ºJMXæå¡çå¦ä¸ä¸ªå¥½å¤ï¼æ¯å¯ä»¥æ¥çHibernateçè¿è¡æ¶ç»è®¡ä¿¡æ¯ãåç
+ <xref linkend="configuration-optional-statistics"/>.
+ </para>
+ </sect1>
+
+ <sect1 id="architecture-jca" revision="1">
+ <title>对JCAçæ¯æ</title>
+ <para>
+ Hibernateä¹å¯ä»¥è¢«é
置为ä¸ä¸ªJCAè¿æ¥å¨ï¼JCA connectorï¼ãæ´å¤ä¿¡æ¯è¯·åçç½ç«ã
+ 请注æï¼Hibernate对JCAçæ¯æï¼ä»å¤äºå®éªæ§é¶æ®µã
+ </para>
+ </sect1>
+ <sect1 id="architecture-current-session" revision="2">
+ <title>ä¸ä¸æç¸å
³çï¼Contextualï¼Session</title>
+ <para>
+ 使ç¨Hibernateç大夿°åºç¨ç¨åºéè¦æç§å½¢å¼çâä¸ä¸æç¸å
³çâ sessionï¼ç¹å®çsession卿´ä¸ªç¹å®çä¸ä¸æèå´å
å§ç»ææãç¶èï¼å¯¹ä¸åç±»åçåºç¨ç¨åºèè¨ï¼è¦ä¸ºä»ä¹æ¯ç»æè¿ç§âä¸ä¸æâä¸ä¸ä¸ªå®ä¹é常æ¯å°é¾çï¼ä¸åçä¸ä¸æå¯¹âå½åâè¿ä¸ªæ¦å¿µå®ä¹äºä¸åçèå´ãå¨3.0çæ¬ä¹åï¼ä½¿ç¨Hibernateçç¨åºè¦ä¹éç¨èªè¡ç¼åçåºäº<literal>ThreadLocal</literal>çä¸ä¸æsessionï¼è¦ä¹éç¨<literal>HibernateUtil</literal>è¿æ ·çè¾
å©ç±»ï¼è¦ä¹éç¨ç¬¬ä¸æ¹æ¡æ¶ï¼æ¯å¦SpringæPico)ï¼å®ä»¬æä¾äºåºäºä»£ç(proxy)æè
åºäºæ¦æªå¨(interception)çä¸ä¸æç¸å
³sessionã
+ </para>
+ <para>
+ ä»3.0.1çæ¬å¼å§ï¼Hibernateå¢å äº<literal>SessionFactory.getCurrentSession()</literal>æ¹æ³ãä¸å¼å§ï¼å®åå®äºéç¨<literal>JTA</literal>äºå¡ï¼<literal>JTA</literal>äºå¡å®ä¹äºå½åsessionçèå´åä¸ä¸æ(scope and context)ãHibernateå¼åå¢éåä¿¡ï¼å 为æå¥½å 个ç¬ç«ç<literal>JTA TransactionManager</literal>å®ç°ç¨³å®å¯ç¨ï¼ä¸è®ºæ¯å¦è¢«é¨ç½²å°ä¸ä¸ª<literal>J2EE</literal>容å¨ä¸ï¼å¤§å¤æ°(åè¥ä¸æ¯ææçï¼åºç¨ç¨åºé½åºè¯¥éç¨<literal>JTA</literal>äºå¡ç®¡çãåºäºè¿ä¸ç¹ï¼éç¨<literal>JTA</literal>çä¸ä¸æç¸å
³sessionå¯ä»¥æ»¡è¶³ä½ ä¸åéè¦ã
+ </para>
+ <para>
+ æ´å¥½çæ¯ï¼ä»3.1å¼å§ï¼<literal>SessionFactory.getCurrentSession()</literal>çåå°å®ç°æ¯å¯ææçãå æ¤ï¼æä»¬å¼å
¥äºæ°çæ©å±æ¥å£(<literal>org.hibernate.context.CurrentSessionContext</literal>)åæ°çé
ç½®åæ°(<literal>hibernate.current_session_context_class</literal>)ï¼ä»¥ä¾¿å¯¹ä»ä¹æ¯âå½åsessionâçèå´åä¸ä¸æ(scope and context)çå®ä¹è¿è¡ææã
+ </para>
+ <para>
+ 请åé
<literal>org.hibernate.context.CurrentSessionContext</literal>æ¥å£çJavadoc,é£éæå
³äºå®çå¥çº¦ç详ç»è®¨è®ºãå®å®ä¹äºåä¸çæ¹æ³ï¼<literal>currentSession()</literal>ï¼ç¹å®çå®ç°ç¨å®æ¥è´è´£è·è¸ªå½åçä¸ä¸æsessionãHibernateå
ç½®äºæ¤æ¥å£çä¸ç§å®ç°ã
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>org.hibernate.context.JTASessionContext</literal> - å½åsessionæ ¹æ®<literal>JTA</literal>æ¥è·è¸ªåçå®ãè¿å以åçä»
æ¯æJTAçæ¹æ³æ¯å®å
¨ä¸æ ·çã详æ
请åé
Javadocã
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>org.hibernate.context.ThreadLocalSessionContext</literal> - å½åsessionéè¿å½åæ§è¡ççº¿ç¨æ¥è·è¸ªåçå®ã详æ
ä¹è¯·åé
Javadocã
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>org.hibernate.context.ManagedSessionContext</literal> - å½åsessionéè¿å½åæ§è¡ççº¿ç¨æ¥è·è¸ªåçå®ã使¯ï¼ä½ éè¦è´è´£ä½¿ç¨è¿ä¸ªç±»çéææ¹æ³å°<literal>Session</literal>å®ä¾ç»å®ãæè
åæ¶ç»å®ï¼å®å¹¶ä¸ä¼æå¼(open)ãflushæè
å
³é(close)ä»»ä½<literal>Session</literal>ã
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ å两ç§å®ç°é½æä¾äºâæ¯æ°æ®åºäºå¡å¯¹åºä¸ä¸ªsessionâçç¼ç¨æ¨¡åï¼ä¹ç§°ä½<emphasis>æ¯æ¬¡è¯·æ±ä¸ä¸ªsession</emphasis>ãHibernate sessionçèµ·å§åç»ç»ç±æ°æ®åºäºå¡çç忥æ§å¶ãåè¥ä½ å¨çº¯ç²¹ç Java SEä¹ä¸éç¨èªè¡ç¼åä»£ç æ¥ç®¡çäºå¡,èä¸ä½¿ç¨JTAï¼å»ºè®®ä½ 使ç¨Hibernate <literal>Transaction</literal> APIæ¥æåºå±äºå¡å®ç°ä»ä½ ç代ç ä¸éèæãå¦æä½ ä½¿ç¨JTAï¼è¯·ä½¿ç¨JTAå壿¥ç®¡çTransactionãå¦æä½ å¨æ¯æCMTçEJB容å¨ä¸æ§è¡ä»£ç ï¼äºå¡è¾¹çæ¯å£°æå¼å®ä¹çï¼ä½ ä¸éè¦å¨ä»£ç ä¸è¿è¡ä»»ä½äºå¡æsession管çæä½ã请åé
<xref linkend="transactions"/>ä¸èæ¥é
读æ´å¤çå
容å示ä¾ä»£ç ã
+ </para>
+
+ <para>
+ <literal>hibernate.current_session_context_class</literal>é
ç½®åæ°å®ä¹äºåºè¯¥éç¨åªä¸ª<literal>org.hibernate.context.CurrentSessionContext</literal>å®ç°ã注æï¼ä¸ºäºåä¸å
¼å®¹ï¼å¦ææªé
ç½®æ¤åæ°ï¼ä½æ¯åå¨<literal>org.hibernate.transaction.TransactionManagerLookup</literal>çé
ç½®ï¼Hibernateä¼éç¨<literal>org.hibernate.context.JTASessionContext</literal>ãä¸è¬èè¨ï¼æ¤åæ°ç弿æäºè¦ä½¿ç¨çå®ç°ç±»çå
¨åï¼ä½é£ä¸ç§å
ç½®çå®ç°å¯ä»¥ä½¿ç¨ç®åï¼å³"jta"ã"thread"å"managed"ã
+
+ </para>
+
+ </sect1>
+
+</chapter>
+
+
Copied: core/trunk/documentation/manual/zh-CN/src/main/docbook/content/association_mapping.xml (from rev 14080, core/trunk/documentation/manual/zh-CN/src/main/docbook/modules/association_mapping.xml)
===================================================================
--- core/trunk/documentation/manual/zh-CN/src/main/docbook/content/association_mapping.xml (rev 0)
+++ core/trunk/documentation/manual/zh-CN/src/main/docbook/content/association_mapping.xml 2007-10-09 20:10:34 UTC (rev 14081)
@@ -0,0 +1,579 @@
+<chapter id="associations">
+
+ <title>å
³èå
³ç³»æ å°</title>
+
+ <sect1 id="assoc-intro" revision="1">
+ <title>ä»ç»</title>
+
+ <para>
+ å
³èå
³ç³»æ å°é常æ
嵿¯æé¾é
ç½®æ£ç¡®çãå¨è¿ä¸ªé¨åä¸ï¼æä»¬ä»ååå
³ç³»æ å°å¼å§ï¼ç¶åèèååå
³ç³»æ å°ï¼ç±æµ
è³æ·±è®²è¿°ä¸éå
¸åçæ¡ä¾ã卿æçä¾åä¸ï¼æä»¬é½ä½¿ç¨ <literal>Person</literal>å<literal>Address</literal>ã
+ </para>
+
+ <para>
+ æä»¬æ ¹æ®æ å°å
³ç³»æ¯å¦æ¶åè¿æ¥è¡¨ä»¥å夿 ·æ§æ¥ååå
³èç±»åã
+ </para>
+
+ <para>
+ å¨ä¼ ç»çæ°æ®å»ºæ¨¡ä¸ï¼å
许为Nullå¼çå¤é®è¢«è®¤ä¸ºæ¯ä¸ç§ä¸å¥½çå®è·µï¼å æ¤æä»¬ææçä¾åä¸é½ä½¿ç¨ä¸å
许为Nullçå¤é®ãè¿å¹¶ä¸æ¯Hibernateçè¦æ±ï¼å³ä½¿ä½ å 餿ä¸å
许为Nullç约æï¼Hibernateæ å°ä¸æ ·å¯ä»¥å·¥ä½çå¾å¥½ã
+ </para>
+
+ </sect1>
+
+ <sect1 id="assoc-unidirectional" revision="1">
+ <title>ååå
³èï¼Unidirectional associationsï¼</title>
+
+ <sect2 id="assoc-unidirectional-m21">
+ <title>å¤å¯¹ä¸(many to one)</title>
+
+ <para>
+ <emphasis>ååmany-to-oneå
³è</emphasis>æ¯æå¸¸è§çååå
³èå
³ç³»ã
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <many-to-one name="address"
+ column="addressId"
+ not-null="true"/>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key, addressId bigint not null )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="assoc-unidirectional-121">
+ <title>ä¸å¯¹ä¸ï¼one to oneï¼</title>
+
+ <para>
+ <emphasis>åºäºå¤é®å
³èçååä¸å¯¹ä¸å
³è</emphasis>å<emphasis>ååå¤å¯¹ä¸å
³è</emphasis>å 乿¯ä¸æ ·çãå¯ä¸çä¸åå°±æ¯ååä¸å¯¹ä¸å
³èä¸çå¤é®å段å
·æå¯ä¸æ§çº¦æã
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <many-to-one name="address"
+ column="addressId"
+ unique="true"
+ not-null="true"/>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key, addressId bigint not null unique )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ <para>
+ <emphasis>åºäºä¸»é®å
³èçååä¸å¯¹ä¸å
³è</emphasis>é常使ç¨ä¸ä¸ªç¹å®çidçæå¨ãï¼è¯·æ³¨æï¼å¨è¿ä¸ªä¾åä¸æä»¬ææ¢äºå
³èçæ¹åãï¼
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+</class>
+
+<class name="Address">
+ <id name="id" column="personId">
+ <generator class="foreign">
+ <param name="property">person</param>
+ </generator>
+ </id>
+ <one-to-one name="person" constrained="true"/>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table Address ( personId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="assoc-unidirectional-12m">
+ <title>ä¸å¯¹å¤ï¼one to manyï¼</title>
+
+ <para>
+ <emphasis>åºäºå¤é®å
³èçååä¸å¯¹å¤å
³è</emphasis>æ¯ä¸ç§å¾å°è§çæ
åµï¼å¹¶ä¸æ¨è使ç¨ã
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <set name="addresses">
+ <key column="personId"
+ not-null="true"/>
+ <one-to-many class="Address"/>
+ </set>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table Address ( addressId bigint not null primary key, personId bigint not null )
+ ]]></programlisting>
+
+ <para>
+ æä»¬è®¤ä¸ºå¯¹äºè¿ç§å
³èå
³ç³»æå¥½ä½¿ç¨è¿æ¥è¡¨ã
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="assoc-unidirectional-join" revision="1">
+ <title>使ç¨è¿æ¥è¡¨çååå
³èï¼Unidirectional associations with join tablesï¼</title>
+
+ <sect2 id="assoc-unidirectional-join-12m">
+ <title>ä¸å¯¹å¤(one to many)</title>
+
+ <para>
+ <emphasis>åºäºè¿æ¥è¡¨çååä¸å¯¹å¤å
³è</emphasis> åºè¯¥ä¼å
被éç¨ã请注æï¼éè¿æå®<literal>unique="true"</literal>ï¼æä»¬å¯ä»¥æå¤æ ·æ§ä»å¤å¯¹å¤æ¹å为ä¸å¯¹å¤ã
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <set name="addresses" table="PersonAddress">
+ <key column="personId"/>
+ <many-to-many column="addressId"
+ unique="true"
+ class="Address"/>
+ </set>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId not null, addressId bigint not null primary key )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="assoc-unidirectional-join-m21">
+ <title>å¤å¯¹ä¸ï¼many to oneï¼</title>
+
+ <para>
+ <emphasis>åºäºè¿æ¥è¡¨çååå¤å¯¹ä¸å
³è</emphasis>å¨å
³èå
³ç³»å¯éçæ
åµä¸åºç¨ä¹å¾æ®éã
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <join table="PersonAddress"
+ optional="true">
+ <key column="personId" unique="true"/>
+ <many-to-one name="address"
+ column="addressId"
+ not-null="true"/>
+ </join>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null primary key, addressId bigint not null )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="assoc-unidirectional-join-121">
+ <title>ä¸å¯¹ä¸ï¼one to oneï¼</title>
+
+ <para>
+ <emphasis>åºäºè¿æ¥è¡¨çååä¸å¯¹ä¸å
³è</emphasis>é常å°è§ï¼ä½ä¹æ¯å¯è¡çã
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <join table="PersonAddress"
+ optional="true">
+ <key column="personId"
+ unique="true"/>
+ <many-to-one name="address"
+ column="addressId"
+ not-null="true"
+ unique="true"/>
+ </join>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null primary key, addressId bigint not null unique )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="assoc-unidirectional-join-m2m">
+ <title>å¤å¯¹å¤ï¼many to manyï¼</title>
+
+ <para>
+ æåï¼è¿æ <emphasis>ååå¤å¯¹å¤å
³è</emphasis>.
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <set name="addresses" table="PersonAddress">
+ <key column="personId"/>
+ <many-to-many column="addressId"
+ class="Address"/>
+ </set>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null, addressId bigint not null, primary key (personId, addressId) )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="assoc-bidirectional" revision="1">
+ <title>ååå
³èï¼Bidirectional associationsï¼</title>
+
+ <sect2 id="assoc-bidirectional-m21" revision="2">
+ <title>ä¸å¯¹å¤ï¼one to many) / å¤å¯¹ä¸ï¼many to oneï¼</title>
+
+ <para>
+ <emphasis>ååå¤å¯¹ä¸å
³è</emphasis> æ¯æå¸¸è§çå
³èå
³ç³»ãï¼è¿ä¹æ¯æ åçç¶/åå
³èå
³ç³»ãï¼
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <many-to-one name="address"
+ column="addressId"
+ not-null="true"/>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+ <set name="people" inverse="true">
+ <key column="addressId"/>
+ <one-to-many class="Person"/>
+ </set>
+</class>]]></programlisting>
+
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key, addressId bigint not null )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ <para>
+ å¦æä½ ä½¿ç¨<literal>List</literal>(æè
å
¶ä»æåºéåç±»)ï¼ä½ éè¦è®¾ç½®å¤é®å¯¹åºç<literal>key</literal>å为 <literal>not null</literal>,让Hibernateæ¥ä»éå端管çå
³èï¼ç»´æ¤æ¯ä¸ªå
ç´ çç´¢å¼ï¼éè¿è®¾ç½®<literal>update="false"</literal> and <literal>insert="false"</literal>æ¥å¯¹å¦ä¸ç«¯ååæä½ï¼ã
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id"/>
+ ...
+ <many-to-one name="address"
+ column="addressId"
+ not-null="true"
+ insert="false"
+ update="false"/>
+</class>
+
+<class name="Address">
+ <id name="id"/>
+ ...
+ <list name="people">
+ <key column="addressId" not-null="true"/>
+ <list-index column="peopleIdx"/>
+ <one-to-many class="Person"/>
+ </list>
+</class>]]></programlisting>
+
+ <para>
+ åè¥éåæ å°ç<literal><key></literal>å
ç´ å¯¹åºçåºå±å¤é®å段æ¯<literal>NOT NULL</literal>çï¼é£ä¹ä¸ºè¿ä¸keyå
ç´ å®ä¹<literal>not-null="true"</literal>æ¯å¾éè¦çãä¸è¦ä»
ä»
为å¯è½çåµå¥<literal><column></literal>å
ç´ å®ä¹<literal>not-null="true"</literal>ï¼<literal><key></literal>å
ç´ ä¹æ¯éè¦çã
+ </para>
+
+ </sect2>
+
+ <sect2 id="assoc-bidirectional-121">
+ <title>ä¸å¯¹ä¸ï¼one to oneï¼</title>
+
+ <para>
+ <emphasis>åºäºå¤é®å
³èçååä¸å¯¹ä¸å
³è</emphasis>ä¹å¾å¸¸è§ã
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <many-to-one name="address"
+ column="addressId"
+ unique="true"
+ not-null="true"/>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+ <one-to-one name="person"
+ property-ref="address"/>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key, addressId bigint not null unique )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ <para>
+ <emphasis>åºäºä¸»é®å
³èçä¸å¯¹ä¸å
³è</emphasis>éè¦ä½¿ç¨ç¹å®çidçæå¨ã
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <one-to-one name="address"/>
+</class>
+
+<class name="Address">
+ <id name="id" column="personId">
+ <generator class="foreign">
+ <param name="property">person</param>
+ </generator>
+ </id>
+ <one-to-one name="person"
+ constrained="true"/>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table Address ( personId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="assoc-bidirectional-join" revision="1">
+ <title>使ç¨è¿æ¥è¡¨çååå
³èï¼Bidirectional associations with join tablesï¼</title>
+
+ <sect2 id="assoc-bidirectional-join-12m">
+ <title>ä¸å¯¹å¤ï¼one to manyï¼ /å¤å¯¹ä¸ï¼ many to oneï¼</title>
+
+ <para>
+ <emphasis>åºäºè¿æ¥è¡¨çååä¸å¯¹å¤å
³è</emphasis>ãæ³¨æ<literal>inverse="true"</literal>å¯ä»¥åºç°å¨å
³èçä»»æä¸ç«¯ï¼å³collection端æè
join端ã
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <set name="addresses"
+ table="PersonAddress">
+ <key column="personId"/>
+ <many-to-many column="addressId"
+ unique="true"
+ class="Address"/>
+ </set>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+ <join table="PersonAddress"
+ inverse="true"
+ optional="true">
+ <key column="addressId"/>
+ <many-to-one name="person"
+ column="personId"
+ not-null="true"/>
+ </join>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null, addressId bigint not null primary key )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="assoc-bidirectional-join-121">
+ <title>ä¸å¯¹ä¸ï¼one to oneï¼</title>
+
+ <para>
+ <emphasis>åºäºè¿æ¥è¡¨çååä¸å¯¹ä¸å
³è</emphasis>æä¸ºç½è§ï¼ä½ä¹æ¯å¯è¡çã
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <join table="PersonAddress"
+ optional="true">
+ <key column="personId"
+ unique="true"/>
+ <many-to-one name="address"
+ column="addressId"
+ not-null="true"
+ unique="true"/>
+ </join>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+ <join table="PersonAddress"
+ optional="true"
+ inverse="true">
+ <key column="addressId"
+ unique="true"/>
+ <many-to-one name="person"
+ column="personId"
+ not-null="true"
+ unique="true"/>
+ </join>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null primary key, addressId bigint not null unique )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="assoc-bidirectional-join-m2m" revision="1">
+ <title>å¤å¯¹å¤ï¼many to manyï¼</title>
+
+ <para>
+ æåï¼è¿æ <emphasis>ååå¤å¯¹å¤å
³è</emphasis>.
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <set name="addresses" table="PersonAddress">
+ <key column="personId"/>
+ <many-to-many column="addressId"
+ class="Address"/>
+ </set>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+ <set name="people" inverse="true" table="PersonAddress">
+ <key column="addressId"/>
+ <many-to-many column="personId"
+ class="Person"/>
+ </set>
+</class>]]></programlisting>
+
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null, addressId bigint not null, primary key (personId, addressId) )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ </sect1>
+ <sect1 id="assoc-complex">
+ <title>æ´å¤æçå
³èæ å°</title>
+
+ <para>
+ æ´å¤æçå
³èè¿æ¥<emphasis>æä¸º</emphasis>ç½è§ã
+ éè¿å¨æ å°ææ¡£ä¸åµå
¥SQLçæï¼Hibernateä¹å¯ä»¥å¤çæ´ä¸ºå¤æçæ
åµãæ¯å¦ï¼åè¥å
å«åå²å¸æ·æ°æ®ç表å®ä¹äº<literal>accountNumber</literal>, <literal>effectiveEndDate</literal> å<literal>effectiveStartDate</literal>åæ®µï¼æç
§ä¸é¢æ å°ï¼
+ </para>
+
+ <programlisting><![CDATA[<properties name="currentAccountKey">
+ <property name="accountNumber" type="string" not-null="true"/>
+ <property name="currentAccount" type="boolean">
+ <formula>case when effectiveEndDate is null then 1 else 0 end</formula>
+ </property>
+</properties>
+<property name="effectiveEndDate" type="date"/>
+<property name="effectiveStateDate" type="date" not-null="true"/>]]></programlisting>
+
+ <para>
+ é£ä¹æä»¬å¯ä»¥å¯¹<emphasis>ç®å(current)</emphasis>å®ä¾(å
¶<literal>effectiveEndDate</literal>为null)使ç¨è¿æ ·çå
³èæ å°:
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="currentAccountInfo"
+ property-ref="currentAccountKey"
+ class="AccountInfo">
+ <column name="accountNumber"/>
+ <formula>'1'</formula>
+</many-to-one>]]></programlisting>
+
+ <para>
+ æ´å¤æçä¾å,åæ³<literal>Employee</literal>å<literal>Organization</literal>ä¹é´çå
³èæ¯éè¿ä¸ä¸ª<literal>Employment</literal>ä¸é´è¡¨ç»´æ¤ç,èä¸é´è¡¨ä¸å¡«å
äºå¾å¤åå²éåæ°æ®ãé£âéåç<emphasis>ææ°</emphasis>é主âè¿ä¸ªå
³èï¼ææ°é主就æ¯<literal>startDate</literal>æåçé£ä¸ªï¼å¯ä»¥è¿æ ·æ å°ï¼
+ </para>
+
+ <programlisting><![CDATA[<join>
+ <key column="employeeId"/>
+ <subselect>
+ select employeeId, orgId
+ from Employments
+ group by orgId
+ having startDate = max(startDate)
+ </subselect>
+ <many-to-one name="mostRecentEmployer"
+ class="Organization"
+ column="orgId"/>
+</join>]]></programlisting>
+
+ <para>
+ 使ç¨è¿ä¸åè½æ¶å¯ä»¥å
满åæï¼ä½é常æ´å å®ç¨çæ¯ç¨HQLææ¡ä»¶æ¥è¯¢æ¥å¤çè¿äºæ
å½¢ã
+ </para>
+
+ </sect1>
+
+
+</chapter>
+
Copied: core/trunk/documentation/manual/zh-CN/src/main/docbook/content/basic_mapping.xml (from rev 14080, core/trunk/documentation/manual/zh-CN/src/main/docbook/modules/basic_mapping.xml)
===================================================================
--- core/trunk/documentation/manual/zh-CN/src/main/docbook/content/basic_mapping.xml (rev 0)
+++ core/trunk/documentation/manual/zh-CN/src/main/docbook/content/basic_mapping.xml 2007-10-09 20:10:34 UTC (rev 14081)
@@ -0,0 +1,2982 @@
+<chapter id="mapping">
+ <title>对象/å
³ç³»æ°æ®åºæ å°åºç¡(Basic O/R Mapping)</title>
+
+ <sect1 id="mapping-declaration" revision="1">
+ <title>æ å°å®ä¹ï¼Mapping declarationï¼</title>
+
+ <para>
+ 对象åå
³ç³»æ°æ®åºä¹é´çæ å°é常æ¯ç¨ä¸ä¸ªXMLææ¡£(XML document)æ¥å®ä¹çãè¿ä¸ªæ å°ææ¡£è¢«è®¾è®¡ä¸ºæè¯»çï¼
+ å¹¶ä¸å¯ä»¥æå·¥ä¿®æ¹ãæ å°è¯è¨æ¯ä»¥Java为ä¸å¿ï¼è¿æå³çæ å°ææ¡£æ¯æç
§æä¹
åç±»çå®ä¹æ¥å建çï¼
+ èé表çå®ä¹ã
+ </para>
+
+
+ <para>
+ 请注æï¼è½ç¶å¾å¤Hibernateç¨æ·éæ©æåXMLæ å°ææ¡£ï¼ä½ä¹æä¸äºå·¥å
·å¯ä»¥ç¨æ¥çææ å°ææ¡£ï¼
+ å
æ¬XDoclet,MiddlegenåAndroMDAã
+ </para>
+
+ <para>
+ 让æä»¬ä»ä¸ä¸ªæ å°çä¾åå¼å§ï¼
+ </para>
+
+ <programlisting id="mapping-declaration-ex1" revision="1"><![CDATA[<?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>]]></programlisting>
+
+ <para>
+ æä»¬ç°å¨å¼å§è®¨è®ºæ å°ææ¡£çå
容ãæä»¬åªæè¿°Hibernateå¨è¿è¡æ¶ç¨å°çææ¡£å
ç´ å屿§ã
+ æ å°ææ¡£è¿å
æ¬ä¸äºé¢å¤çå¯é屿§åå
ç´ ï¼å®ä»¬å¨ä½¿ç¨schema导åºå·¥å
·çæ¶åä¼å½±å导åºçæ°æ®åºschemaç»æã
+ ï¼æ¯å¦ï¼<literal> not-null</literal> 屿§ãï¼
+ </para>
+
+
+
+ <sect2 id="mapping-declaration-doctype" revision="3">
+ <title>Doctype</title>
+
+ <para>
+ ææçXMLæ å°é½éè¦å®ä¹å¦ä¸æç¤ºçdoctypeãDTDå¯ä»¥ä»ä¸è¿°URLä¸è·åï¼
+ ä¹å¯ä»¥ä»<literal>hibernate-x.x.x/src/net/sf/hibernate</literal>ç®å½ä¸ã
+ æ<literal>hibernate.jar</literal>æä»¶ä¸æ¾å°ãHibernateæ»æ¯ä¼é¦å
å¨å®çclassptahä¸æç´¢DTDæä»¶ã
+ å¦æä½ åç°å®æ¯é