[hibernate-commits] Hibernate SVN: r14076 - in core/trunk/documentation/manual/ja-JP/src/main: docbook and 2 other directories.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Tue Oct 9 15:02:01 EDT 2007
Author: steve.ebersole at jboss.com
Date: 2007-10-09 15:02:00 -0400 (Tue, 09 Oct 2007)
New Revision: 14076
Added:
core/trunk/documentation/manual/ja-JP/src/main/docbook/Hibernate_Reference.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/architecture.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/association_mapping.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/basic_mapping.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/batch.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/best_practices.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/collection_mapping.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/component_mapping.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/configuration.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/events.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_mappings.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_parentchild.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_weblog.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/filters.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/inheritance_mapping.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/performance.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/persistent_classes.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/preface.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_criteria.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_hql.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_sql.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/session_api.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/toolset_guide.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/transactions.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/tutorial.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/xml.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/AuthorWork.png
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/AuthorWork.zargo
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/CustomerOrderProduct.png
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/CustomerOrderProduct.zargo
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/EmployerEmployee.png
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/EmployerEmployee.zargo
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/full_cream.png
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/full_cream.svg
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/hibernate_logo_a.png
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/lite.png
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/lite.svg
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/overview.png
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/overview.svg
core/trunk/documentation/manual/ja-JP/src/main/docbook/legal_notice.xml
Removed:
core/trunk/documentation/manual/ja-JP/src/main/docbook/master.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/
core/trunk/documentation/manual/ja-JP/src/main/resources/
Log:
new docbook layout (prep for translations migration to PO)
Added: core/trunk/documentation/manual/ja-JP/src/main/docbook/Hibernate_Reference.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/Hibernate_Reference.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/Hibernate_Reference.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+
+<!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 - Relational Persistence for Idiomatic Java</title>
+ <subtitle>Hibernate Reference Documentation</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>
+ <!--
+ todo : figure out how best to include translator info...
+ <xi:include href="author_group.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/ja-JP/src/main/docbook/content/architecture.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/architecture.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/architecture.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/architecture.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,375 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="architecture">
+
+ <title>A[LeN`</title>
+
+ <sect1 id="architecture-overview" revision="1">
+ <title>TÏ</title>
+
+ <para>
+ HibernateA[LeN`ÌiñíÉj¢x©çÌr
[F
+ </para>
+
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="../images/overview.svg" format="SVG" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="../images/overview.png" format="PNG" align="center"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>
+ ±Ì}ÍHibernateªAAvP[VÉεÄi±»T[rX
+ iÆi±IuWFNgjðñ·é½ßÉAf[^x[XÆÝèf[^ðg¤±Æð
+ ¦µÄ¢Ü·B
+ </para>
+
+ <para>
+ ±±ÅÀsA[LeN`ÌæèÚ×Èr
[𨩹µÜµå¤B
+ ¢ÉAHibernateÍ_îÅ èA¢ë¢ëÈAv[`ðT|[gµÄ¢Ü·B
+ ±±ÅÍA2ÂÌÉ[Èá𨩹µÜ·B
+ uy¢vA[LeN`ÅÍAAvP[Vª©OÌJDBCRlNVðpÓµA
+ AvP[V©gªgUNVðǵܷB
+ ±Ìû@ÍAHibernate APIÌŬÀÌTuZbgðg¢Ü·F
+ </para>
+
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="../images/lite.svg" format="SVG" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="../images/lite.png" format="PNG" align="center"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>
+ ud¢vA[LeN`ÍAAvP[V©çA»ÌºÉÊu·éJDBCâJTAÌAPIð
+ æè¥ÁÄÛ»µA»ÌÚ×ÌÊ|ðHibernateÉ©³¹Ü·B
+ </para>
+
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="../images/full_cream.svg" format="SVG" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="../images/full_cream.png" format="PNG" align="center"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>
+ ȺÍAãÌ}ÉÜÜêéIuWFNgÌè`Å·F
+
+ <variablelist spacing="compact">
+ <varlistentry>
+ <term>SessionFactory (<literal>org.hibernate.SessionFactory</literal>)</term>
+ <listitem>
+ <para>
+ 1ÂÌf[^x[XÉηéRpC³ê½}bsOÌ
+ XbhZ[tÈiXVs\ÌjLbV
B
+ <literal>Session</literal> Ìt@NgÅ èA
+ <literal>ConnectionProvider</literal> ÌNCAgB
+ IvVƵÄAvZXܽÍNX^xɨ¢ÄA
+ gUNVÔÅÄpÂ\Èf[^ÌiñjLbV
ð¿Ü·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Session (<literal>org.hibernate.Session</literal>)</term>
+ <listitem>
+ <para>
+ AvP[VÆi±XgAÆÌÎbð\·A
+ VOXbhÅZ½ÌIuWFNgB
+ JDBCRlNVðbvµÜ·B
+ <literal>Transaction</literal> Ìt@NgÅ·B
+ i±IuWFNgÌK{ÌiêjLbV
ð۵ܷB
+ ±ÌLbV
ÍIuWFNgOtðirQ[V·éâA
+ ¯ÊqÅIuWFNgðõ·éÉgíêÜ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Persistent objects Æ Collections</term>
+ <listitem>
+ <para>
+ i±»óÔÆrWlX\bhðÂAZ½ÅVOXbhÌIuWFNgB
+ ±êÍÊíÌJavaBeans/POJO̱Æà èÜ·ªAÁ¥IȱÆÍA
+ »Ì_ÅÌi½¾1ÂÌj <literal>Session</literal> ÆÖAµÄ¢é±ÆÅ·B
+ <literal>Session</literal> ªN[Y³ê鯷®ÉA
+ »êçÍØè£³êļÌAvP[Vw©ç©RÉg¤±ÆªÅ«Ü·B
+ iá¦Îf[^EgXt@EIuWFNgƵÄA
+ v[e[Vw©çAܽÍv[e[VwÖ¼ÚgpūܷBj
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Transient Æ detached È objects Æ Collections</term>
+ <listitem>
+ <para>
+ »_ÅÍ <literal>Session</literal> ÆÖAµÄ¢È¢A
+ i±NXÌCX^XB
+ ·ÅÉAvP[V¤ÅCX^X»³êÄ¢ÄAܾi±»³êĢȢ©A
+ N[Y³ê½ <literal>Session</literal> ÅCX^X»³ê½©ÌÇ¿ç©Å·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Transaction (<literal>org.hibernate.Transaction</literal>)</term>
+ <listitem>
+ <para>
+ (IvV)´q«ðÂìÆPÊ(Unit of Work)ðwè·é½ßÉAAvP[Vªgp·éA
+ VOXbhÅZ½ÈIuWFNgB
+ ºÉÊu·éJDBCAJTAACORBAgUNV©çAvP[VðÛ»µÜ·B
+ <literal>Session</literal> ÍAÉÍ
+ ¢Â©Ì <literal>Transaction</literal> ðܽªé©àµêܹñB
+ µ©µAºÌwÌAPIðg¤É¹æA <literal>Transaction</literal> ðg¤É¹æA
+ gUNV«EðÝè·é±ÆÍAµÄIvVÅÍ èܹñIB
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</literal>)</term>
+ <listitem>
+ <para>
+ (IvV)JDBCRlNViÆ»Ìv[jÌt@NgB
+ ºÌwÉÊu·é <literal>Datasource</literal> â
+ <literal>DriverManager</literal> ©çAvP[VðÛ»µÜ·B
+ AvP[VÉÍöJ³êܹñªAJÒªp³Ü½ÍÀ·é±ÆÍÂ\Å·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)</term>
+ <listitem>
+ <para>
+ (IvV) <literal>Transaction</literal> CX^XÌt@NgB
+ AvP[VÉÍöJ³êܹñªAJÒªp³Ü½ÍÀ·é±ÆÍÂ\Å·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><emphasis>Extension Interfaces</emphasis></term>
+ <listitem>
+ <para>
+ HibernateÍAi±wÌUé¢ðJX^}CY·é½ßÉA
+ ½ÌIvVg£C^tF[XðpӵĢܷB
+ Ú×ÍAPIhL
gðQƵľ³¢B
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ uy¢vA[LeN`ÅÍAAvP[VͼÚJTAâJDBCÆÎb·é½ßÉA
+ <literal>Transaction</literal> â <literal>TransactionFactory</literal> â
+ <literal>ConnectionProvider</literal> ðoCpXµÜ·B
+ </para>
+ </sect1>
+
+ <sect1 id="architecture-states" revision="1">
+ <title>CX^XÌóÔ</title>
+ <para>
+ i±NXÌCX^XÍAÌRÂÌÙÈéóÔÌÇê©ÉÈèÜ·B
+ »êÍA <emphasis>i±ReLXg</emphasis> ÉæÁÄÜèÜ·B
+ HibernateÌ <literal>Session</literal> IuWFNgªAi±ReLXgÉÈèÜ·B
+ </para>
+
+ <variablelist spacing="compact">
+ <varlistentry>
+ <term>transient</term>
+ <listitem>
+ <para>
+ ±ÌóÔÌCX^XÍA»Ý໵Äßɨ¢ÄàA
+ i±ReLXgÉÖAâĢܹñBܽAi±IDiåL[Ìljð
+ ÁĢܹñB
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>persistent</term>
+ <listitem>
+ <para>
+ ±ÌóÔÌCX^XÍA»Ì_Åi±ReLXgÉÖAâĢܷB
+ ܽAi±IDiåL[Ìljð¿A
+ ½¢Ä¢Íf[^x[XÉηésðÁÄ¢éŵå¤B
+ ÂXÌi±ReLXgÌÈ©ÅÍAi±IDª
+ JavaÌIDiIuWFNgÌãÌÊujƯ¶Å 鱯ð
+ Hibernateª <emphasis>ÛØ</emphasis> µÜ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>detached</term>
+ <listitem>
+ <para>
+ ±ÌóÔÌCX^XÍA©ÂÄi±ReLXgÉÖAïç꽪A
+ »ÌReLXgªN[Y³ê½©A é¢ÍA
+ ¼ÌvZXÉ»ÌCX^XªVACY³ê½©Å·B
+ ±ÌCX^XÍAi±IDð¿A½¢Ä¢Íf[^x[XÉ
+ ηésðÁÄ¢éŵå¤Bª£CX^XÉεÄÍA
+ i±IDÆJavaÌIDÆÌÖAÍAHibernateªÛصܹñB
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="architecture-jmx" revision="1">
+ <title>JMXÆÌ</title>
+
+ <para>
+ JMXÍJavaR|[lgÇÌJ2EEWÅ·B
+ JMXWT[rXðʵÄAHibernateÍdzêÜ·B
+ fBXgr
[VÌÉ <literal>org.hibernate.jmx.HibernateService</literal> Æ¢¤
+ MBeanÀðpӵĢܷB
+ </para>
+
+ <para>
+ JBoss AvP[VT[o[ãÉHibernateðJMXT[rXƵÄfvC·éû@ÌáÆµÄÍA
+ JBoss [UKChðQƵľ³¢B JBoss AvP[VT[o[ɨ¢ÄA
+ JMXðgÁÄfvC·éÆAÌbgª¾çêÜ·B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis>ZbVÇ:</emphasis> HibernateÌ <literal>Session</literal> ÌCtTCNÍA
+ ©®IÉJTAgUNVÌXR[vÉѯçêÜ·B±êÍAàÍâè®Å
+ <literal>Session</literal> ðI[vµ½èAN[Yµ½è·éKvªÈ¢±ÆðÓ¡µÜ·B
+ ±êÍAJBoss EJB C^[Zv^ÌdÉÈèÜ·B
+ ܽAR[hÌDZÅgUNV«EðÝè·é©É¢ÄA
+ àÍâYÞKvª èܹñià¿ëñÚAÂ\Èi±wð©©ÈÄ¢¢ÌÈçÎA
+ IvVÌHibernateÌ <literal>Transaction</literal> ðgpµÄ¾³¢Bj
+ <literal>Session</literal> ÉANZX·é½ßÉÍA <literal>HibernateContext</literal> ð
+ R[µÄ¾³¢B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>HAR fvC:</emphasis> ÊíA(EAR Ü½Í SAR t@CÉ éjJBoss T[rX
+ fvCgfBXNv^ðgÁÄAHibernate JMX T[rXðfvCµÜ·B
+ »êÍAHibernateÌ <literal>SessionFactory</literal> ÌSÄÌêÊIÈÝèIvVð
+ T|[gµÜ·Bµ©µËRƵÄfvCgfBXNv^Ìȩɷ×ÄÌ}bsOt@CÌ
+ ¼Oð°éKvª èÜ·B
+ àµAIvVÌHARfvCgðg¤±Æðß½ÈçA
+ JBossÍ©®IÉHARt@CÌÈ©ÌSÄÌ}bsOt@CðoµÜ·B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ±êçÌIvVÉ¢ÄÌÚ×ÈîñÍAJBossAvP[VT[o[UKChð
+ Qlɵľ³¢B
+ </para>
+
+ <para>
+ JMXT[rXƵÄpÂ\ȼÌ@\ÉAHibernateÀsvîñª èÜ·B
+ <xref linkend="configuration-optional-statistics"/> ð©Ä¾³¢B
+ </para>
+ </sect1>
+
+ <sect1 id="architecture-jca" revision="1">
+ <title>JCA T|[g</title>
+ <para>
+ Hibernate Í JCA RlN^ƵÄàÝèūܷBÚ×É¢ÄÍAWebTCgð©Ä¾³¢B
+ Hibernate JCA T|[gÍA¡ÌƱëÀ±iKƵÄl¦çêĢ鱯Éӵľ³¢B
+ </para>
+ </sect1>
+
+ <sect1 id="architecture-current-session" revision="2">
+ <title>ReLXgãÌZbV</title>
+ <para>
+ Hibernate ðgÁ½AvP[VÍAÙÆñÇAÈñç©Ì`Å"ReLXgãÌ"ZbVªKvÉÈèÜ·B
+ uReLXgãÌZbVvÍAÁèÌReLXgÌXR[vÌÈ©ÅLøÈZbV̱ÆÅ·B
+ µ©µAÊíAvP[V²ÆÉReLXgð\¬·éàÌÌè`ÍÙÈèÜ·B
+ µ©àAÙÈé¡ÌReLXgÍA»_ÉεÄÙÈéXR[vðè`µÜ·B
+ o[W3.0æèOÌ Hibernate ÅÍA©ìÌ <literal>ThreadLocal</literal> x[XÌuReLXgãÌZbVvð
+ p·é©A <literal>HibernateUtil</literal> Ìæ¤Èwp[NXðp·é©A
+ proxy/interception x[XÌuReLXgãÌZbVvðñ·é
+ iSpring â Pico Ìæ¤ÈjT[hp[eBÌt[[Nðp·é©Ì¢¸ê©Åµ½B
+ </para>
+
+ <para>
+ o[W 3.0.1 ©çAHibernate ÉÍ <literal>SessionFactory.getCurrentSession()</literal> ª
+ Áíèܵ½B ±êÍA <literal>JTA</literal> gUNVÌgpðOñɵĢܷB
+ <literal>JTA</literal> gUNVÍA»ÝÌZbVÌXR[vÆReLXg̼ûðè`µÜ·B
+ Hibernate `[ÍA̱Æð壵ܷB
+ åÈX^hAÌ <literal>JTA TransactionManager</literal> Àª¬nµ½çA
+ <literal>J2EE</literal> ReiãÉfvC³êé©Ç¤©É©©íç¸A
+ ÙÆñÇÌi·×ÄÆÍ¾íÈ¢ªjAvP[VªA
+ <literal>JTA</literal> gUNVÇðgp·×«Å éÆB
+ ±Ìl¦ÉîÃÆA <literal>JTA</literal> x[XÌuReLXgãÌZbVvð
+ g¤µ©È¢Åµå¤B
+ </para>
+
+ <para>
+ µ©µAo[W 3.1 ©çÍA <literal>SessionFactory.getCurrentSession()</literal> Ìã̪A
+ vKuÉÈèܵ½B
+ ±êðó¯ÄA»ÝÌZbVðè`·éXR[vÆReLXgÌvKreBðÂ\É·é½ßÉA
+ Vµ¢g£C^tF[X ( <literal>org.hibernate.context.CurrentSessionContext</literal> ) Æ
+ Vµ¢\¬p[^ ( <literal>hibernate.current_session_context_class</literal> ) ªÇÁ³êܵ½B
+ </para>
+
+ <para>
+ <literal>org.hibernate.context.CurrentSessionContext</literal> C^tF[XÌKñÉ¢ÄÌ
+ Ú×ÈàeÍ Javadoc ðQƵľ³¢B
+ »êÉÍA <literal>currentSession()</literal> Æ¢¤1ÂÌ\bhªè`³êĨèA
+ »ÌÀÍA»ÝÌuReLXgãÌZbVvðÇշ鱯ÉÓCð¿Ü·B
+ »ÌÜÜg¦éæ¤ÉAHibernateͱÌC^tF[XÌÀð2ÂñµÄ¢Ü·B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>org.hibernate.context.JTASessionContext</literal> -
+ <literal>JTA</literal> gUNVÉæÁÄA»ÝÌZbVªÇÕ³êA
+ XR[vðßçêÜ·B±ÌÍAâJTA¾¯ÌAv[`ÆÜÁ½¯¶Å·B
+ Ú×ÍJavadocðQƵľ³¢B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>org.hibernate.context.ThreadLocalSessionContext</literal> -
+ XbhÌÀsÉæÁÄA»ÝÌZbVªÇÕ³êÜ·B
+ Ú×ÍJavadocðQƵľ³¢B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>org.hibernate.context.ManagedSessionContext</literal> -
+ XbhÌÀsÉæÁÄA»ÝÌZbVªÇÕ³êÜ·B
+ µ©µA±ÌNXÌstatic\bhÅ <literal>Session</literal> CX^Xð
+ oCh/AoCh·éÓCÍ È½É èÜ·B
+ ±ê굀 <literal>Session</literal> ðI[vAtbV
AN[YµÜ¹ñB
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ nßÌ2ÂÌÀÍA"1ZbV - 1f[^x[XgUNV" vO~OfðñµÜ·B
+ ±êÍ <emphasis>NGXg²ÆÌZbVisession-per-requestj</emphasis> ƵÄàmçêĨèAgíêĢܷB
+ Hibernate ZbVÌJnÆI¹ÍAf[^x[XgUNVÌúÔÅÜèÜ·B
+ JTAðgíÈ¢ÊÌJSEÅAvOãÌgUNV«EÝèðs¤ÈçA
+ R[h©çîbÌgUNVVXeðBÁ·é½ßÉA
+ Hibernate <literal>Transaction</literal> APIðg¤Ææ¢Åµå¤B
+ JTAðg¤ÈçAgUNVÌ«EÝèÉÍAJTAC^[tFCXðgÁľ³¢B
+ CMTðT|[g·éEJBReiÅÀs·éÂàèÈçAgUNV«EÍé¾IÉè`Å«é½ßA
+ R[hãÅgUNVâZbVÌ«EðÝè·éKvÍ èܹñB
+ ³çÉÚ×ÈîñâR[hÌáÍA <xref linkend="transactions"/> ðQƵľ³¢B
+ </para>
+
+ <para>
+ <literal>hibernate.current_session_context_class</literal> Ýèp[^ÍA
+ <literal>org.hibernate.context.CurrentSessionContext</literal> ÌÇÌÀðg¤©ðwèµÜ·B
+ ºÊÝ·«Ì½ßA±Ìp[^ªÝè³ê¸
+ <literal>org.hibernate.transaction.TransactionManagerLookup</literal> ªÝè³êÄ¢½êA
+ HibernateÍ <literal>org.hibernate.context.JTASessionContext</literal> ðg¤±ÆÉӵľ³¢B
+ Êí±Ìp[^ÌlÉÍA3ÂÌÀÌ©çgp·éÀNX̼Oð¼ÚwèµÜ·B
+ µ©µA"jta", "thread", "managed"Æ¢¤»ê¼êÌȪ¼àpÓ³êĢܷB
+ </para>
+
+ </sect1>
+
+</chapter>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/association_mapping.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/association_mapping.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/association_mapping.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/association_mapping.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,620 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="associations">
+
+ <title>ÖA}bsO</title>
+
+ <sect1 id="assoc-intro" revision="1">
+ <title>Cg_NV</title>
+
+ <para>
+ ÖA}bsO͵εÎðªÅàïµ¢àÌÉÈèÜ·B
+ ±ÌÍÅÍAî{IÈêÂêÂÌP[XÉ¢Äq×Ü·B
+ PûüÌ}bsO©çnßA»ê©çoûüÌP[XÉ¢Äl¦Ä¢«Ü·B
+ áÆµÄA<literal>Person</literal> Æ <literal>Address</literal> ðp¢Ü·B
+ </para>
+
+ <para>
+ ÖAÍAe[uðüê驩Ǥ©ÆA
+ ½dxÉæÁÄªÞ·é±ÆÉµÜ·B
+ </para>
+
+ <para>
+ ·×ÄÌáÅnot nullÌOL[ðgpµÜ·B
+ ±êÍHibernateÌvÅÍ èܹñB
+ not null§ñðOµ½ÆµÄàA}bsOÍâèÈ®ìµÜ·B
+ </para>
+
+ </sect1>
+
+ <sect1 id="assoc-unidirectional" revision="1">
+ <title>PûüÖA</title>
+
+ <sect2 id="assoc-unidirectional-m21">
+ <title>½Îê</title>
+
+ <para>
+ <emphasis>Pûü½ÎêÖA</emphasis> ÍPûüÖAÌÅÅàêÊIÈàÌÅ·B
+ </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>êÎê</title>
+
+ <para>
+ <emphasis>OL[ÌPûüêÎêÖA</emphasis> ÍÙÆñǯ¶àÌÅ·B
+ Bêá¤ÌÍAJÌj[NȧñÅ·B
+ </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>åL[ÌPûüêÎêÖA</emphasis> ÍÊíAÁÊÈIDWFl[^ðg¢Ü·B
+ i±ÌáÅÍÖAÌûüªtÉÈÁĢ鱯Éӵľ³¢j
+ </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>êν</title>
+
+ <para>
+ <emphasis>OL[ÌPûüêνÖA</emphasis> ÍÆÄàÁêÈP[XÅA
+ Üè§³êĢܹñB
+ </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>
+ ±Ìæ¤ÈÖA̽ßÉe[uðg¤±Æð¨EߵܷB
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="assoc-unidirectional-join" revision="1">
+ <title>e[uðgÁ½PûüÖA</title>
+
+ <sect2 id="assoc-unidirectional-join-12m">
+ <title>êν</title>
+
+ <para>
+ <emphasis>e[uðgÁ½PûüêνÖA</emphasis>
+ ÍæèDܵ¢Å·B
+ <literal>unique="true"</literal> ÌwèÉæèA½dxª½Î½©çêν
+ ÉÏíÁ½±ÆÉӵĺ³¢B
+ </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>½Îê</title>
+
+ <para>
+ <emphasis>e[uÌPûü½ÎêÖA</emphasis> Í
+ ÖAªCÓŠ鯫ÉñíÉêÊIÈàÌÅ·B
+ </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>êÎê</title>
+
+ <para>
+ <emphasis>e[uÌPûüêÎêÖA</emphasis> ÍA{ÉÁêÅ·ª
+ sÂ\ÅÍ èܹñB
+ </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>½Î½</title>
+
+ <para>
+ ÅãÉA<emphasis>Pûü½Î½ÖA</emphasis> ð¦µÜ·B
+ </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>oûüÖA</title>
+
+ <sect2 id="assoc-bidirectional-m21" revision="2">
+ <title>êν/½Îê</title>
+
+ <para>
+ <emphasis>oûü½ÎêÖA</emphasis> ÍÅàêÊIÈÖAÅ·B
+ iWIÈeqÖWÅ·j
+ </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> iܽͼÌCfbNXt«ÌRNVjðg¤ÈçA
+ OL[Ì <literal>key</literal> Jð <literal>not null</literal> ÉÝèµA
+ RNV¤ªevfÌCfbNXðeiX·éæ¤ÉA
+ ÖAðµ¤Kvª èÜ·
+ i<literal>update="false"</literal> ©Â <literal>insert="false"</literal>
+ ÆÝèµÄA½Î¤ð¼zIÉinverseɵܷjF
+ </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>
+ àµOL[Jª <literal>NOT NULL</literal> Å éÈçÎA
+ RNV}bsOÌ <literal><key></literal> vfð
+ <literal>not-null="true"</literal> ɷ鱯ÍdvÅ·B
+ üêqÉÈÁ½ <literal><column></literal> vf¾¯ÅÍÈA
+ <literal><key></literal> vfà <literal>not-null="true"</literal>
+ Æè`µÈ¢æ¤ÉµÄ¾³¢B
+ </para>
+
+ </sect2>
+
+ <sect2 id="assoc-bidirectional-121">
+ <title>êÎê</title>
+
+ <para>
+ <emphasis>OL[ÌoûüêÎêÖA</emphasis> ÍñíÉêÊIÅ·B
+ </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>åL[ÌoûüêÎêÖA</emphasis> ÍÁêÈIDWFl[^ðg¢Ü·B
+ </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>e[uðgÁ½oûüÖA</title>
+
+ <sect2 id="assoc-bidirectional-join-12m">
+ <title>êν/½Îê</title>
+
+ <para>
+ <emphasis>e[uÌoûüêνÖA</emphasis> Å·B
+ <literal>inverse="true"</literal> ªÖA[ARNVAÌ¢¸ê©É
+ Ýèū鱯Éӵľ³¢B
+ </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>êÎê</title>
+
+ <para>
+ <emphasis>e[uÌoûüêÎêÖA</emphasis>
+ ÍñíÉÁêÅ·ªAÂ\Å·B
+ </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="address"
+ 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>½Î½</title>
+
+ <para>
+ ÅãÉA<emphasis>oûü½Î½ÖA</emphasis> ð¦µÜ·B
+ </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>æè¡GÈÖA}bsO</title>
+
+ <para>
+ æè¡GÈÖAÍ <emphasis>ÉßÄ</emphasis> HÅ·B
+ }bsOhL
gÉSQL¶ðßÞ±ÆÅA
+ ³çÉ¡GÈóµðµ¤±ÆªÅ«Ü·B
+ á¦ÎA<literal>accountNumber</literal>, <literal>effectiveEndDate</literal>,
+ <literal>effectiveStartDate</literal> JðÂaccountiûÀjîñÌððµ¤e[uÍA
+ ÈºÌæ¤É}bsOµÜ·B
+ </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>
+ »µÄAÖAð <emphasis>»_Ì</emphasis> CX^X
+ i<literal>effectiveEndDate</literal> ªnullÅ éàÌjÉ}bsOµÜ·B
+ ÈºÌæ¤ÉÈèÜ·F
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="currentAccountInfo"
+ property-ref="currentAccountKey"
+ class="AccountInfo">
+ <column name="accountNumber"/>
+ <formula>'1'</formula>
+</many-to-one>]]></programlisting>
+
+ <para>
+ ³çÉ¡GÈáÅÍA<literal>Employeei]Æõj</literal> Æ <literal>OrganizationigDj</literal>
+ ÔÌÖAª <literal>EmploymentiÙpj</literal> e[uÅÛ³êéêðzµÄ¾³¢B
+ ±Ìe[uÉÍÙpf[^Ìðª·×ÄÜÜêÜ·B
+ ·éÆ]ÆõÌ <emphasis>ÅàÅßÌ</emphasis> ÙpÒð\·ÖA
+ iÅàÅßÌ <literal>startDate</literal> ðÂàÌjÍA±Ìæ¤É}bsOūܷF
+ </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>
+ ±Ì@\ÍñíÉÍÅ·B
+ µ©µ±Ìæ¤ÈêAÊÍHQLâcriteriaNGðg¤ûªæèÀHIÅ·B
+ </para>
+
+ </sect1>
+
+
+</chapter>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/basic_mapping.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/basic_mapping.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/basic_mapping.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/basic_mapping.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,3485 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+
+<chapter id="mapping">
+ <title>î{IÈO/R}bsO</title>
+
+ <sect1 id="mapping-declaration" revision="1">
+ <title>}bsOè`</title>
+
+ <para>
+ IuWFNg/[Vi}bsOÍÊíXMLhL
gÅè`µÜ·B
+ }bsOhL
gÍAÇÝâ·èìÆÅÒWµâ·¢æ¤ÉfUC³êĢܷB
+ }bsO¾êÍJavaSAÂÜèe[uè`ÅÍÈi±NXÌè`ÉîâÄ\z³êĢܷB
+ </para>
+
+ <para>
+ ½ÌHibernate[UÍXML}bsOÌLqðèìÆÅs¢Ü·ªA
+ XDoclet, Middlegen, AndroMDAÆ¢¤æ¤È}bsOhL
g𶬷éc[ª
+ ¢Â©¶ÝµÜ·B
+ </para>
+
+ <para>
+ TvÌ}bsO©çnßܵå¤F
+ </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">
+ <!-- ±±ÉDogpÌ}bsO«Ü· -->
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ }bsOhL
gÌàeðྵܷBB
+ ½¾µA±±ÅÍHibernateªÀsÉg¤hL
gvfÆ®«É¢ÄÌÝྵܷB
+ }bsOhL
gÍA¢Â©ÌIvV®«ÆvfðÜñŢܷiá¦Î <literal>not-null</literal> ®«jB
+ »êçÍXL[}GNX|[gc[ªoÍ·éf[^x[XXL[}Ée¿ð^¦éàÌÅ·B
+
+ </para>
+
+
+
+ <sect2 id="mapping-declaration-doctype" revision="3">
+ <title>Doctype</title>
+
+ <para>
+ XML}bsOÅÍA¨©¹µ½æ¤ÈhL
g^ðK¸è`·×«Å·B
+ ÀÛÌDTDÍAãLÌURLÌ <literal>hibernate-x.x.x/src/org/hibernate</literal> fBNgA ܽÍ
+ <literal>hibernate.jar</literal> àÉ èÜ·B
+ HibernateÍíÉA»ÌNXpXàÅDTDðTµnßÜ·B
+ C^[lbgÉ éDTDt@CðT»¤Æµ½ÈçA
+ NXpXÌàeð©ÄADTDé¾ðmFµÄ¾³¢B
+ </para>
+
+
+
+ <sect3 id="mapping-declaration-entity-resolution">
+ <title>
+ GeBeBE]o
+ </title>
+ <para>
+ Oqµ½æ¤ÉAHibernateÍܸNXpXàÅDTDððµæ¤ÆµÜ·B
+ <literal>org.xml.sax.EntityResolver</literal> ÌJX^Àð
+ XMLt@CðÇÝÞ½ßÌSAXReaderÉo^·é±ÆÉæÁÄADTDððµÜ·B
+ ±ÌJX^Ì <literal>EntityResolver</literal> Í2ÂÌÙÈéVXeID¼OóÔðF¯µÜ·B
+
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>Hibernate¼OóÔ</literal> ÍA]oª
+ <literal>http://hibernate.sourceforge.net/</literal> ÅnÜéVXeIDÉBµ½Æ«ÉA
+ F¯³êÜ·B
+ »µÄ]oÍAHibernateÌNXð[hµ½NX[_ðp¢ÄA
+ ±êçÌGeBeBððµæ¤ÆµÜ·B
+
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>[U¼OóÔ</literal> ÍA]oª
+ URLvgRÌ <literal>classpath://</literal> ðgÁ½VXeIDÉBµ½Æ«ÉA
+ F¯³êÜ·B»µÄ]oÍA(1)JgXbhÌReLXgNX[_[A
+ ܽÍ(2)HibernateÌNXð[hµ½NX[_ðgÁÄA
+ ±êçÌGeBeBððµæ¤ÆµÜ·B
+
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ ºLÍA[U¼OóÔðgÁ½áÅ·F
+
+ </para>
+ <programlisting><![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" [
+ <!ENTITY types SYSTEM "classpath://your/domain/types.xml">
+]>
+
+<hibernate-mapping package="your.domain">
+ <class name="MyEntity">
+ <id name="id" type="my-custom-id-type">
+ ...
+ </id>
+ <class>
+ &types;
+</hibernate-mapping>]]></programlisting>
+ <para>
+ ±±Å <literal>types.xml</literal> Í <literal>your.domain</literal> pbP[WàÌ\[XÅ èA
+ JX^ <xref linkend="mapping-types-custom">typedef</xref> ðÜÞÜ·B
+ </para>
+ </sect3>
+
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-mapping" revision="3">
+ <title>hibernate-mapping</title>
+
+ <para>
+ ±ÌvfÉ͢©IvV®«ª èÜ·B<literal>schema</literal> ®«Æ <literal>catalog</literal> ®«ÍA
+ ±Ì}bsOªQÆ·ée[uªA±Ì®«ÉæÁÄwè³ê½XL[}Æ(ܽÍ)J^OÉ®·é±ÆðwèµÜ·B
+ ±Ì®«ªwè³êéÆAe[u¼Í^¦çê½XL[}¼ÆJ^O¼ÅCü³êÜ·B±êçÌ®«ªwè³êĢȯêÎA
+ e[u¼ÍCü³êܹñB<literal>default-cascade</literal> ®«ÍA
+ <literal>cascade</literal> ®«ðwèµÄ¢È¢vpeBâRNVÉA
+ ÇÌJXP[hX^CðèÄé©ðwèµÜ·B
+ <literal>auto-import</literal> ®«ÍA
+ NG¾êàÅCü³êĢȢNX¼ðAftHgÅg¦éæ¤ÉµÜ·B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="hm1" coords="2 55"/>
+ <area id="hm2" coords="3 55"/>
+ <area id="hm3" coords="4 55"/>
+ <area id="hm4" coords="5 55"/>
+ <area id="hm5" coords="6 55"/>
+ <area id="hm6" coords="7 55"/>
+ <area id="hm7" coords="8 55"/>
+ </areaspec>
+ <programlisting><![CDATA[<hibernate-mapping
+ schema="schemaName"
+ catalog="catalogName"
+ default-cascade="cascade_style"
+ default-access="field|property|ClassName"
+ default-lazy="true|false"
+ auto-import="true|false"
+ package="package.name"
+ />]]></programlisting>
+ <calloutlist>
+ <callout arearefs="hm1">
+ <para>
+ <literal>schema</literal>iIvVjFf[^x[XXL[}̼OB
+ </para>
+ </callout>
+ <callout arearefs="hm2">
+ <para>
+ <literal>catalog</literal> iIvVjFf[^x[XJ^O̼OB
+ </para>
+ </callout>
+ <callout arearefs="hm3">
+ <para>
+ <literal>default-cascade</literal> iIvV - ftHgÍ <literal>none</literal>jF
+ ftHgÌJXP[hX^CB
+ </para>
+ </callout>
+ <callout arearefs="hm4">
+ <para>
+ <literal>default-access</literal> (IvV - ftHgÍ <literal>property</literal> jF
+ HibernateªvpeBÉANZX·éÛÉÌé׫íªB <literal>PropertyAccessor</literal>
+ ðÀ·é±ÆÅJX^}CYÂ\B
+
+ </para>
+ </callout>
+ <callout arearefs="hm5">
+ <para>
+ <literal>default-lazy</literal> (IvV - ftHgÍ <literal>true</literal> )F
+ <literal>lazy</literal> ®«ªwè³êĢȢNXâRNV}bsOÉηéftHglB
+ </para>
+ </callout>
+ <callout arearefs="hm6">
+ <para>
+ <literal>auto-import</literal> iIvV - ftHgÍ <literal>true</literal>jF
+ NG¾êàÅAi±Ì}bsOàÌNXÌjCü³êĢȢNX¼ðg¦é©Ç¤©ðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="hm7">
+ <para>
+ <literal>package</literal> (IvV): }bsOhL
gàÅCü³êĢȢNX¼ÉεÄèÄéA
+ pbP[WÌÚª«(prefix)ðwèµÜ·B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ iCü³êĢȢj¯¶¼OÌi±NXª2 éÈçA
+ <literal>auto-import="false"</literal> ðÝè·×«Å·B
+ 2ÂÌNXÉhC|[g³ê½h¯¶¼OðèÄæ¤Æ·éÆAHibernateÍáOð°Ü·B
+ </para>
+
+ <para>
+ <literal>hibernate-mapping</literal> vfÍAÅÌáŦµ½æ¤É¢Â©Ìi± <literal><class></literal>
+ }bsOðlXgūܷB
+ µ©µAPÂÌ}bsOt@CÅͽ¾ÐÆÂÌi±NX(ܽÍÐÆÂÌNXKw)É}bsO·éæ¤ÉµA
+ ³çÉi±X[p[NXÌãÅwè·é׫ŵå¤(¢Â©Ìc[Í±Ìæ¤È}bsOt@CðzèµÄ¢Ü·)B
+ á¦ÎÌæ¤ÉÈèÜ·BF <literal>Cat.hbm.xml</literal> ,
+ <literal>Dog.hbm.xml</literal> , ܽÍp³ðg¤Èç <literal>Animal.hbm.xml</literal> B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-class" revision="3">
+ <title>class</title>
+
+ <para>
+ <literal>class</literal> vfðgÁÄAi±NXðé¾Å«Ü·B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="class1" coords="2 55"/>
+ <area id="class2" coords="3 55" />
+ <area id="class3" coords="4 55"/>
+ <area id="class4" coords="5 55" />
+ <area id="class5" coords="6 55"/>
+ <area id="class6" coords="7 55" />
+ <area id="class7" coords="8 55"/>
+ <area id="class8" coords="9 55" />
+ <area id="class9" coords="10 55" />
+ <area id="class10" coords="11 55"/>
+ <area id="class11" coords="12 55"/>
+ <area id="class12" coords="13 55"/>
+ <area id="class13" coords="14 55"/>
+ <area id="class14" coords="15 55"/>
+ <area id="class15" coords="16 55"/>
+ <area id="class16" coords="17 55"/>
+ <area id="class17" coords="18 55"/>
+ <area id="class18" coords="19 55"/>
+ <area id="class19" coords="20 55"/>
+ <area id="class20" coords="21 55"/>
+ <area id="class21" coords="22 55"/>
+
+ </areaspec>
+ <programlisting><![CDATA[<class
+ name="ClassName"
+ table="tableName"
+ discriminator-value="discriminator_value"
+ mutable="true|false"
+ schema="owner"
+ catalog="catalog"
+ proxy="ProxyInterface"
+ dynamic-update="true|false"
+ dynamic-insert="true|false"
+ select-before-update="true|false"
+ polymorphism="implicit|explicit"
+ where="arbitrary sql where condition"
+ persister="PersisterClass"
+ batch-size="N"
+ optimistic-lock="none|version|dirty|all"
+ lazy="true|false"
+ entity-name="EntityName"
+ check="arbitrary sql check condition"
+ rowid="rowid"
+ subselect="SQL expression"
+ abstract="true|false"
+ entity-name="EntityName"
+ node="element-name"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="class1">
+ <para>
+ <literal>name</literal> (IvV)Fi±NXiܽÍC^[tFCXjÌ®SCüJavaNX¼B
+ ൱̮«ðwèµÈ¯êÎAPOJOÅÍÈ¢GeBeBÉηé}bsOƵĵíêÜ·B
+
+ </para>
+ </callout>
+ <callout arearefs="class2">
+ <para>
+ <literal>table</literal> (IvV - ftHgÍCü³êĢȢNX¼)Ff[^x[Xe[u̼O
+ </para>
+ </callout>
+ <callout arearefs="class3">
+ <para>
+ <literal>discriminator-value</literal> (IvV - ftHgÍNX¼)F
+ |[tBbNÈUé¢ÉgíêéÂXÌTuNXð¯Ê·é½ßÌlB
+ lÍ <literal>null</literal> © <literal>not null</literal> Ì¢¸ê©ðæèÜ·B
+ </para>
+ </callout>
+ <callout arearefs="class4">
+ <para>
+ <literal>mutable</literal> (IvVA ftHgÍ <literal>true</literal> )F
+ »ÌNXÌCX^XªXVÂ\iܽÍsÂ\jŠ鱯ðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="class5">
+ <para>
+ <literal>schema</literal> iIvVjF
+ [gÌ <literal><hibernate-mapping></literal> vfÅwè³ê½XL[}¼ðI[o[ChµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="class6">
+ <para>
+ <literal>catalog</literal> iIvVjF[gÌ <literal><hibernate-mapping></literal>
+ vfÅwè³ê½J^O¼ðI[o[ChµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="class7">
+ <para>
+ <literal>proxy</literal> iIvVjFxú»vLVÉg¤C^[tFCXðwèµÜ·B
+ i±»·éNX¼»ÌàÌðwè·é±ÆàÂ\Å·B
+ </para>
+ </callout>
+ <callout arearefs="class8">
+ <para>
+ <literal>dynamic-update</literal> iIvVA ftHgÍ <literal>false</literal> jF
+ lªÏX³ê½J¾¯ðÜÞSQLÌ <literal>UPDATE</literal> ¶ðAÀsɶ¬·é±ÆðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="class9">
+ <para>
+ <literal>dynamic-insert</literal> iIvV, ftHgÍ <literal>false</literal> jF
+ lªnullÅÍÈ¢J¾¯ðÜÞSQLÌ <literal>INSERT</literal> ¶ðAÀsɶ¬·é±ÆðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="class10">
+ <para>
+ <literal>select-before-update</literal> (IvV, ftHgÍ <literal>false</literal>):
+ IuWFNgªÏX³ê½ÌªmÀÅÈ¢ÈçÎAHibernateªSQLÌ <literal>UPDATE</literal> ð
+ <emphasis>µÄÀsµÈ¢</emphasis> ±ÆðwèµÜ·B
+ éÁèÌê(ÀÛIÉÍAêIuWFNgª <literal>update()</literal> ðg¢A
+ Vµ¢ZbVÆÖAt¯çê½¾¯)A<literal>UPDATE</literal> ªÀÛÉKv©Ç¤©ðè·é½ßÉA
+ Hibernateª]ªÈSQLÌ <literal>SELECT</literal> ¶ðÀs·é±ÆðÓ¡µÜ·B
+ </para>
+ </callout>
+ <callout arearefs="class11">
+ <para>
+ (optional, ftHgÅÍ <literal>implicit</literal> ): implicitiÃÙj©expliciti¾¦jÌA
+ Ç¿çÌNG|[tBYðg¤©èµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="class12">
+ <para>
+ <literal>where</literal> iIvVjF
+ ±ÌNXÌIuWFNgðõ·éÆ«Égp·éACÓÌSQLÌ <literal>WHERE</literal> ððwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="class13">
+ <para>
+ <literal>persister</literal> iIvVjFJX^ <literal>ClassPersister</literal> ðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="class14">
+ <para>
+ <literal>batch-size</literal> iIvV, ftHgÍ <literal>1</literal> jF
+ ¯ÊqűÌNXÌCX^Xð³·éÆ«Ìuob`TCYvðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="class15">
+ <para>
+ <literal>optimistic-lock</literal> iIvV,ftHgÍ <literal>version</literal> jF
+ yÏbNíªðèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="class16">
+ <para>
+ <literal>lazy</literal> iIvVjF <literal>lazy="false"</literal> ÆÝè·é±ÆÅA
+ xtFb`ªÅ«ÈÈèÜ·B
+ </para>
+ </callout>
+ <callout arearefs="class17">
+ <para>
+ <literal>entity-name</literal> iIvVAftHgÍNX¼jF
+ Hibernate3ÅÍNXª¡ñ}bsOÅ«iêÉæÁÄÍá¤e[uÉεÄàjA
+ JavaxÅMapâXMLÅ\»³êéGeBeB}bsOªÂ\Å·B
+ ±êçÌêAGeBeBÉεÄCÓ̼OðA¾¦IÉt¯ÈÄÍÈèܹñB
+ ÚµÍ <xref linkend="persistent-classes-dynamicmodels"/> Æ <xref linkend="xml"/> ðQƵľ³¢B
+ </para>
+ </callout>
+ <callout arearefs="class18">
+ <para>
+ <literal>check</literal> iIvVjF©®IÉXL[}𶬷é½ßÉA
+ ¡sÌ <emphasis>check</emphasis> §ñ𶬷éSQL®B
+ </para>
+ </callout>
+ <callout arearefs="class19">
+ <para>
+ <literal>rowid</literal> iIvVjFHibernateÍA»êðT|[gµÄ¢éf[^x[XÅROWIDÆ
+ ÄÎêéàÌðg¤±ÆªÅ«Ü·B
+ á¦ÎOracleðgÁĢ鯫A±ÌIvVÉ <literal>rowid</literal> ðÝè·êÎA
+ HiberanteÍupdate𬻷é½ßÉ <literal>rowid</literal> Æ¢¤ÁÊÈJðg¤±ÆªÅ«Ü·B
+ ROWIDÍÚ×ÈÀÅ èAÛ¶³ê½^v̨IÈÊuð\µÄ¢Ü·B
+ </para>
+ </callout>
+ <callout arearefs="class20">
+ <para>
+ <literal>subselect</literal> iIvVjFsÏ©ÂÇÝæèêpÅ éGeBeBð
+ f[^x[XÌâ¹isubselectjÉ}bsOµÜ·B
+ ൳Ìe[uÌãíèÉr
[𿽯êÎLpÅ·ªA
+ »¤ÅÈ¢ÌÈçLpÅÍ èܹñBæèÚµ¢îñͺLðQƵľ³¢B
+ </para>
+ </callout>
+ <callout arearefs="class21">
+ <para>
+ <literal>abstract</literal> iIvVjF
+ <literal><union-subclass></literal> KwàÌÛX[p[NXÉ}[N·é½ßÉg¢Ü·B
+ </para>
+ </callout>
+
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ i±NX̼OÉC^[tFCXðwèµÄàÜÁ½âè èܹñB
+ »ÌÆ«Í <literal><subclass></literal> vfðgÁÄA
+ »ÌC^[tFCXðÀ·éNXðè`µÄ¾³¢B
+ <emphasis>static</emphasis> ÈàNXÅài±»Å«Ü·B
+ »ÌÆ«ÍW`®Aá¦Î <literal>eg.Foo$Bar</literal> ðgÁÄNX¼ðwèµÄ¾³¢B
+ </para>
+
+ <para>
+ <literal>mutable="false"</literal> wèðµ½sÏNXÍA
+ AvP[VÉæéXVâíªoÈ¢±Æª èÜ·B
+ ±êÉæèAHibernateªptH[}XðµüPµÜ·B
+ </para>
+
+ <para>
+ IvVÌ <literal>proxy</literal> ®«ÉæèANXÌi±CX^XÌxú»ªÂ\ÉÈèÜ·B
+ HibernateÍÅÉAwèµ½C^[tFCXðÀµ½CGLIBvLVðԵܷB
+ ÀÛÌi±IuWFNgÍvLVÌ\bhðÄÑo·Æ«É[hµÜ·B
+ ȺÌuxú»Ì½ßÌvLVvðQƵľ³¢B
+ </para>
+
+ <para>
+ <emphasis>ÃÙI</emphasis> |[tBYÆÍAÌñÂðÓ¡µÄ¢Ü·B
+ êÂÍNXÌCX^XªAX[p[NXâÀµ½C^[tFCXAܽ»ÌNXðwè·éNGÉæÁÄÔ³ê鱯ÅA
+ à¤êÂÍ»ÌNXÌTuNXÌCX^XªA»ÌNX©gðwèµ½NGÉæÁÄÔ³ê鱯ŷB
+ ܽA<emphasis>¾¦I</emphasis> |[tBYÆÍAÌñÂðÓ¡µÄ¢Ü·B
+ êÂÍNXÌCX^XªA»ÌNXð¾¦IÉwèµ½NGÉæÁÄÌÝÔ³ê鱯ÅA
+ à¤êÂÍNXðwèµ½NGªA<literal><class></literal> vfÌÅ <literal><subclass></literal> â
+ <literal><joined-subclass></literal> Æ}bsO³êÄ¢éTuNXÌCX^X¾¯ðÔ·±ÆÅ·B
+ ÙÆñÇÌprÅÍftHgÌ <literal>polymorphism="implicit"</literal> ªKØÅ·B
+ ¾¦IÈ|[tBYÍA2ÂÌáÁ½NXª¯¶e[uÉ}bsO³êĢ鯫ÉLpÅ·
+ i±êÉæÁÄe[uJÌTuZbgðÜÞAuyÊÈvNXªÂ\ÉÈèÜ·jB
+ </para>
+
+ <para>
+ <literal>persister</literal> ®«ðwè·é±ÆÅANXÌi±»íªðJX^}CYūܷB
+ á¦Î <literal>org.hibernate.persister.EntityPersister</literal> ©gÌTuNXðwèµ½èA
+ ܽá¦ÎXgAhvV[WR[Atbgt@CÖVACYA
+ LDAPÈÇðʵ½i±«ðÀ·é <literal>org.hibernate.persister.ClassPersister</literal>
+ C^[tFCXÌ®SÉVµ¢ÀðñūܷBÈPÈáÆµÄ <literal>org.hibernate.test.CustomPersister</literal>
+ ð©Ä¾³¢i±êÍ <literal>Hashtable</literal> Ìui±»vÅ·jB
+
+ </para>
+
+ <para>
+ <literal>dynamic-update</literal> Æ <literal>dynamic-insert</literal> ÌÝèÍTuNXÉp³³êܹñB
+ »Ì½ß <literal><subclass></literal> â <literal><joined-subclass></literal> vfðwè·é±ÆàoÜ·B
+ ±êçÌÝèÍptH[}Xðüã³¹éà èÜ·ªAÆ·±Æà èÜ·ÌÅATdÉgpµÄ¾³¢B
+ </para>
+
+ <para>
+ <literal>select-before-update</literal> ÌgpÍÊíptH[}XðƵܷB
+ ൠ<literal>Session</literal> Öª£CX^XÌOtðÄÇÁ·éÈçA
+ f[^x[XXVÌgKðsKvÉÄÑo·Ìðð¯éÆ¢¤_ÅAñíÉLpÅ·B
+ </para>
+
+ <para>
+ <literal>dynamic-update</literal> ðLøÉ·êÎAyÏbNíªðIÔ±ÆÉÈèÜ·B
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>version</literal> o[W/^CX^vJð`FbNµÜ·
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>all</literal> ·×ÄÌJð`FbNµÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>dirty</literal> ÏXµ½Jð`FbNµA¯XVū鿤ɵܷB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>none</literal> yÏbNðgpµÜ¹ñ
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ HibernateÅyÏIbNíªðg¤ÈçAo[W/^CX^vJðg¤±Æð
+ <emphasis> ñíÉ</emphasis> ¨©ßµÜ·B
+ yÏIbNÍptH[}XÌÏ_©çàÅKÅ èA³çɪ£CX^XÖÌC³
+ iÂÜè <literal>Session.marge()</literal> ªgíê鯫j
+ ð³mɵ¤±ÆÌÅ«éBêÌíªÅà èÜ·B
+ </para>
+
+ <para>
+ HibernateÌ}bsOÉÆÁÄr
[ÆÊÌe[uÌÔÉá¢ÍÈA
+ f[^x[XxÅͧßIÅ·
+ i½¾µr
[ð®SÉÍT|[gµÄ¢È¢DBMSà èÜ·B
+ ÁÉAXVÌ ér
[ÉεÄÍ»¤Å·jB
+ r
[ðg¢½ÄàAf[^x[XÅì¬Å«È¢±Æª èÜ·
+ iá¦ÎAKV[XL[}ÌêjB
+ ±ÌêÉÍAsÏ©ÂÇÝæèêpÌGeBeBÉ^¦çê½SQLÌâ¹¶ð}bvūܷB
+ </para>
+
+ <programlisting><![CDATA[<class name="Summary">
+ <subselect>
+ select item.name, max(bid.amount), count(*)
+ from item
+ join bid on bid.item_id = item.id
+ group by item.name
+ </subselect>
+ <synchronize table="item"/>
+ <synchronize table="bid"/>
+ <id name="name"/>
+ ...
+</class>]]></programlisting>
+
+ <para>
+ e[uð±ÌGeBeBƯú·éæ¤Éè`µÄ¾³¢B
+ I[gtbV
ªmÀÉN±éæ¤ÉAܽ±oGeBeBÉηéNGªÃ¢f[^ð
+ ԳȢæ¤É·é½ßÅ·B
+ <literal><subselect></literal> Í®«ÆlXgµ½}bsO®«ÌÇ¿çÅàpūܷB
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-id" revision="4">
+ <title>id</title>
+
+ <para>
+ }bv³ê½NXÍf[^x[Xe[uÌåL[Jðè` <emphasis>µÈ¯êÎÈèܹñ</emphasis> B
+ ÙÆñÇÌNXÉÍCX^XÌj[NȯÊqðÛ·éJavaBeansX^CÌvpeBà èÜ·B
+ <literal><id></literal> vfÍA»ÌvpeB©çåL[JÖÌ}bsOðè`µÜ·B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="id1" coords="2 70"/>
+ <area id="id2" coords="3 70" />
+ <area id="id3" coords="4 70"/>
+ <area id="id4" coords="5 70" />
+ <area id="id5" coords="6 70" />
+ </areaspec>
+ <programlisting><![CDATA[<id
+ name="propertyName"
+ type="typename"
+ column="column_name"
+ unsaved-value="null|any|none|undefined|id_value"
+ access="field|property|ClassName">
+ node="element-name|@attribute-name|element/@attribute|."
+
+ <generator class="generatorClass"/>
+</id>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="id1">
+ <para>
+ <literal>name</literal>iIvVjF¯ÊqvpeB̼OB
+ </para>
+ </callout>
+ <callout arearefs="id2">
+ <para>
+ <literal>type</literal>iIvVjFHibernateÌ^𦷼OB
+ </para>
+ </callout>
+ <callout arearefs="id3">
+ <para>
+ <literal>column</literal>iIvV - ftHgÍvpeB¼jF
+ åL[J̼OB
+ </para>
+ </callout>
+ <callout arearefs="id4">
+ <para>
+ <literal>unsaved-value</literal>iIvV - ftHgÌlÍsensiblejF
+ CX^XªVµCX^X»³ê½
+ iZ[u³êĢȢj±Æð¦·A¯ÊqvpeBÌlB
+ ÈOÌSessionÅZ[uܽÍ[h³ê½êICX^XÆæÊ·é½ßÉ
+ g¢Ü·B
+ </para>
+ </callout>
+ <callout arearefs="id5">
+ <para>
+ <literal>access</literal>iIvV - ftHgÍ <literal>property</literal> jF
+ vpeBÌlÖANZX·é½ßÉHibernateªg¤íªÅ·B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ <literal>name</literal> ®«ªÈ¯êÎANXÉͯÊqvpeBªÈ¢àÌÆÝȳêÜ·B
+ </para>
+
+ <para>
+ <literal>unsaved-value</literal> ®«ÍHibernate3ÅÍÙÆñÇÌêAKvÅÍ èܹñB
+ </para>
+
+ <para>
+ ¡L[ðÂKV[f[^ÉANZXū鿤ÉA
+ <literal><composite-id></literal> Æ¢¤ãÖÌ}bsOè`ª èÜ·B
+ µ©µ¼ÌprÖÌgpÍS¨··ßūܹñB
+ </para>
+
+ <sect3 id="mapping-declaration-id-generator" revision="2">
+ <title>WFl[^</title>
+
+ <para>
+ IvVÌ <literal><generator></literal> qvfÍA
+ i±NXÌCX^XÌj[NȯÊq𶬷é½ßÉg¤AJavaNXðwèµÜ·B
+ WFl[^CX^XÌÝèAàµÍú»Ép[^ªKvÅ êÎA<literal><param></literal>
+ vfðgÁÄn·±ÆªÅ«Ü·B
+ </para>
+
+ <programlisting><![CDATA[<id name="id" type="long" column="cat_id">
+ <generator class="org.hibernate.id.TableHiLoGenerator">
+ <param name="table">uid_table</param>
+ <param name="column">next_hi_value_column</param>
+ </generator>
+</id>]]></programlisting>
+
+ <para>
+ ·×ÄÌWFl[^ÍAC^[tFCX
+ <literal>org.hibernate.id.IdentifierGenerator</literal> ðÀµÜ·B
+ ±êÍÆÄàPÈC^[tFCXÈÌÅAÁÊÈÀðÆ©ÉpÓ·éAvP[Và é©àµêܹñB
+ µ©µHibernateÍgÝÝÌÀð¢ÂàpӵĢܷB
+ gÝÝÌWFl[^ÉÍȺÌV[gJbg¼ª èÜ·F
+
+ <variablelist>
+ <varlistentry>
+ <term><literal>increment</literal></term>
+ <listitem>
+ <para>
+ <literal>long</literal> , <literal>short</literal> ,
+ <literal>int</literal> ^̯Êq𶬵ܷB
+ ±êçͼÌvZXª¯¶e[uÉf[^ð}üµÈ¢Æ«¾¯j[NÅ·B
+ <emphasis>NX^àÅÍgíȢž³¢</emphasis> B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>identity</literal></term>
+ <listitem>
+ <para>
+ DB2, MySQL, MS SQL Server, Sybase, HypersonicSQL̯ÊqJð
+ T|[gµÜ·B
+ Ô³êé¯ÊqÌ^Í <literal>long</literal> , <literal>short</literal> ,
+ <literal>int</literal> Ì¢¸ê©Å·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>sequence</literal></term>
+ <listitem>
+ <para>
+ DB2, PostgreSQL, Oracle, SAP DB, McKoiÌV[PXâAInterbaseÌWFl[^ðgpµÜ·B
+ Ô³êé¯ÊqÌ^Í <literal>long</literal> , <literal>short</literal> ,
+ <literal>int</literal> Ì¢¸ê©Å·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>hilo</literal></term>
+ <listitem>
+ <para id="mapping-declaration-id-hilodescription" revision="1">
+ <literal>long</literal> , <literal>short</literal> ,
+ <literal>int</literal> ^̯Êqðø¦Iɶ¬·éhi/loASYðg¢Ü·B
+ hilÌ\[XƵÄAe[uÆJð^¦Ü·(ftHgÅÍ»ê¼ê <literal>hibernate_unique_key</literal> Æ
+ <literal>next_hi</literal> )B
+
+ hi/loASYÍÁèÌf[^x[XÉεÄÌÝj[NȯÊq𶬵ܷB
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>seqhilo</literal></term>
+ <listitem>
+ <para>
+ <literal>long</literal> , <literal>short</literal> ,
+ <literal>int</literal> ^̯Êqðø¦Iɶ¬·éhi/loASYðg¢Ü·B
+ wè³ê½f[^x[XV[PXð^¦Ü·B
+
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>uuid</literal></term>
+ <listitem>
+ <para>
+ (IPAhXªgp³êé)lbg[NàÅj[Nȶñ^̯Êq𶬷é½ßÉA
+ 128rbgÌUUIDASYðgpµÜ·BUUIDÍ·³32Ì16i̶ñƵÄGR[h³êÜ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>guid</literal></term>
+ <listitem>
+ <para>
+ MS SQLT[oÆMySQLÅf[^x[Xª¶¬·éGUID¶ñðgpµÜ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>native</literal></term>
+ <listitem>
+ <para>
+ gp·éf[^x[XÌ«\Éæè <literal>identity</literal> , <literal>sequence</literal> ,
+ <literal>hilo</literal> Ì¢¸ê©ªIÎêÜ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>assigned</literal></term>
+ <listitem>
+ <para>
+ <literal>save()</literal> ªÄÎêéOÉA
+ AvP[VªIuWFNgɯÊqðãüū鿤ɵܷB
+ <literal><generator></literal> ªwè³êĢȯêÎA±êªftHgÌíªÉÈèÜ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>select</literal></term>
+ <listitem>
+ <para>
+ éj[NL[ÉæésÌIðÆåL[ÌlÌ³ÉæèA
+ f[^x[XgKªèĽåL[ðæ¾µÜ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>foreign</literal></term>
+ <listitem>
+ <para>
+ ¼ÌÖAIuWFNg̯Êqðg¢Ü·B
+ ÊÍA<literal><one-to-one></literal> åL[ÖAÆgÝí¹Äg¢Ü·B
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </para>
+ </sect3>
+
+ <sect3 id="mapping-declaration-id-hilo" revision="1">
+ <title>Hi/lo ASY</title>
+ <para>
+ <literal>hilo</literal> Æ <literal>seqhilo</literal> WFl[^ÍA
+ ¯Êq¶¬Ìã\IÈAv[`Å éhi/loASYÌ2ÂÌãÖÀðñµÜ·B
+
+ 1ÔÚÌÀÍAñÉp³êé"hi"lðÛ·éuÁÊÈvf[^x[Xe[uð
+ KvƵܷB
+ 2ÔÚÌÀÍAOracleX^CÌV[PXðg¢Ü·iT|[g³êÄ¢éêjB
+ </para>
+
+ <programlisting><![CDATA[<id name="id" type="long" column="cat_id">
+ <generator class="hilo">
+ <param name="table">hi_value</param>
+ <param name="column">next_value</param>
+ <param name="max_lo">100</param>
+ </generator>
+</id>]]></programlisting>
+
+ <programlisting><![CDATA[<id name="id" type="long" column="cat_id">
+ <generator class="seqhilo">
+ <param name="sequence">hi_value</param>
+ <param name="max_lo">100</param>
+ </generator>
+</id>]]></programlisting>
+
+ <para>
+ cOȪçHibernateÖÌÆ©Ì <literal>Connection</literal> ðñ·éÆ«ÉÍA<literal>hilo</literal> ðg¦Ü¹ñB
+ HibernateªJTAÅXg³êÄ¢éÚ±ðæ¾·é½ßÉAvP[VT[o[Ìf[^\[XðgpµÄ¢éÆ«ÉÍA
+ <literal>hibernate.transaction.manager_lookup_class</literal> ðKØÉÝèµÈ¯êÎÈèܹñB
+ </para>
+ </sect3>
+
+ <sect3 id="mapping-declaration-id-uuid">
+ <title>UUID ASY</title>
+ <para>
+ UUIDÉÍȺÌà̪ÜÜêÜ·F
+ IPAhXAJVMÌX^[gAbv^Ci4ªÌ1b̳m³jA
+ VXeÔAiJVMÉεÄj[NÈjJE^lB
+ JavaR[h©çMACAhXâAhXðæ¾·é±ÆÍūȢÌÅA
+ JNIªg¦È¢Æ«ÌÅÇÌû@Å·B
+ </para>
+ </sect3>
+
+ <sect3 id="mapping-declaration-id-sequences">
+ <title>¯ÊqJÆV[PX</title>
+ <para>
+ ¯ÊqJðT|[gµÄ¢éf[^x[XiDB2, MySQL, Sybase, MS SQLjÅÍA
+ <literal>identity</literal> L[¶¬ðg¦Ü·B
+ V[PXðT|[g·éf[^x[XiDB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DBjÅÍA
+ <literal>sequence</literal> X^CÌL[¶¬ðg¦Ü·B
+ Ç¿çÌíªàAVµ¢IuWFNgð}ü·é½ßÉASQLNGð2ÂKvƵܷB
+ </para>
+
+ <programlisting><![CDATA[<id name="id" type="long" column="person_id">
+ <generator class="sequence">
+ <param name="sequence">person_id_sequence</param>
+ </generator>
+</id>]]></programlisting>
+
+ <programlisting><![CDATA[<id name="id" type="long" column="person_id" unsaved-value="0">
+ <generator class="identity"/>
+</id>]]></programlisting>
+
+ <para>
+ NXvbgtH[ÌJÅÍA<literal>native</literal> íªÍ
+ <literal>identity</literal> , <literal>sequence</literal> ,
+ <literal>hilo</literal> íªÌ©ç1ÂðIðµÜ·ªA
+ ±êÍgpµÄ¢éf[^x[XÌ\ÍÉ˶µÜ·B
+ </para>
+ </sect3>
+
+ <sect3 id="mapping-declaration-id-assigned">
+ <title>¯ÊqÌèÄ</title>
+ <para>
+ AvP[VɯÊqðèij¹½¢ÌÅ êÎ(Hibernateª¶¬·éàÌÅÍÈjA
+ <literal>assigned</literal> WFl[^ðg¤±ÆªÅ«Ü·B
+ ±ÌÁÊÈWFl[^ÍA·ÅÉIuWFNg̯ÊqvpeBÉãü³ê½lð
+ ¯ÊqÉg¢Ü·B±ÌWFl[^ÍåL[ªãL[ÌãíèÉ©RL[Å éêÉgpµÜ·B
+ <literal><generator></literal> vfðwèµÈ¢êÌftHgÌ®ìÉÈèÜ·B
+ </para>
+
+ <para>
+ <literal>assigned</literal> WFl[^ðIð·éÆA
+ HibernateÍ <literal>unsaved-value="undefined"</literal> ðgpµÜ·B
+ »µÄAo[Wâ^CX^vÌvpeBªÈ¢êâ <literal>Interceptor.isUnsaved()</literal>
+ ðè`µÈ©Á½êÉÍACX^XªêI(transient)ÈàÌÅ éÌ©A
+ ܽÍZbV©çª£(detached)µ½à̩Ǥ©ðßé½ßÉAf[^x[Xð²×Ü·B
+ </para>
+ </sect3>
+
+ <sect3 id="mapping-declaration-id-select">
+ <title>gKÉæèèÄçê½åL[</title>
+ <para>
+ KV[XL[}̽ßÉÌÝwèµÜ·(HibernateÍgKðgÁÄDDL𶬵ܹñ)B
+ </para>
+
+ <programlisting><![CDATA[<id name="id" type="long" column="person_id">
+ <generator class="select">
+ <param name="key">socialSecurityNumber</param>
+ </generator>
+</id>]]></programlisting>
+
+ <para>
+ ãÌáÌÅANXÅ©RL[ƵÄè`³ê½
+ <literal>socialSecurityNumber</literal> Æ¢¤¼OÌj[NÈlÌvpeBÆA
+ lªgKÉæè¶¬³êé <literal>person_id</literal> Æ¢¤¼OÌãL[ª èÜ·B
+ </para>
+
+ </sect3>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-compositeid" revision="3">
+ <title>composite-id</title>
+
+ <programlisting><![CDATA[<composite-id
+ name="propertyName"
+ class="ClassName"
+ mapped="true|false"
+ access="field|property|ClassName">
+ node="element-name|."
+
+ <key-property name="propertyName" type="typename" column="column_name"/>
+ <key-many-to-one name="propertyName class="ClassName" column="column_name"/>
+ ......
+</composite-id>]]></programlisting>
+
+ <para>
+ ¡L[Ì ée[uÉεA
+ ¯ÊqvpeBƵÄNXÌ¡ÌvpeBð}bsO·é±ÆªÅ«Ü·B
+ <literal><composite-id></literal> vfÍAqvfƵÄ
+ <literal><key-property></literal> vpeB}bsOÆ
+ <literal><key-many-to-one></literal> }bsOðó¯üêÜ·B
+ </para>
+
+ <programlisting><![CDATA[<composite-id>
+ <key-property name="medicareNumber"/>
+ <key-property name="dependent"/>
+</composite-id>]]></programlisting>
+
+ <para>
+ ¡¯ÊqÌ¿«ðÀ·é½ßÉÍAi±NXª <literal>equals()</literal> Æ
+ <literal>hashCode()</literal> ðI[o[Ch <emphasis>µÈ¯êÎÈèܹñ</emphasis> B
+ ܽ <literal>Serializable</literal> àÀµÈ¯ê΢¯Ü¹ñB
+ </para>
+
+ <para>
+ cOȪ硯Êq̽ß̱Ìû@ÍA
+ i±IuWFNgª©g̯ÊqŠ鱯ðÓ¡µÄ¢Ü·B
+ IuWFNg©gð¯ÊqÆ·éÈãÌÖÈuµ¢ûvÍ èܹñB
+ ¡L[ÉÖAµ½i±óÔð <literal>load()</literal> o鿤ÉÈéOÉA
+ i±NX©gðCX^X»µA¯ÊqvpeBðÝèµÈ¯êÎÈèܹñB
+ <emphasis> gÝÝÌ</emphasis> ¡¯ÊqÆÄÎêé±ÌAv[`ÍA
+ {iIÈAvP[VÉÍü¢Ä¢Ü¹ñB
+
+
+ </para>
+
+ <para>
+ 2ÂÚÌû@Í <emphasis> }bv³ê½</emphasis> ¡¯ÊqÆÄÎêéàÌÅA
+ <literal><composite-id></literal>GgàÅwèµ½¯ÊvpeBª
+ i±NXƪ£µ½¯ÊqNX̼ûÉd¡µÄ¶ÝµÜ·B
+ </para>
+
+ <programlisting><![CDATA[<composite-id class="MedicareId" mapped="true">
+ <key-property name="medicareNumber"/>
+ <key-property name="dependent"/>
+</composite-id>]]></programlisting>
+
+ <para>
+ ±ÌáÅÍA¡¯ÊqNXi <literal>MedicareId</literal> jÆGeBeBNX©g̼ûªA
+ <literal>medicareNumber</literal> Æ <literal>dependent</literal> Æ¢¤¼OÌvpeBð¿Ü·B
+ ¯ÊqNXÍA<literal>equals()</literal> Æ <literal>hashCode()</literal> ðI[oChµA
+ <literal>Serializable</literal> ðÀµÈÄÍÈèܹñB
+ ±Ìû@ÉÍA¾ç©ÉR[hªd¡·éÆ¢¤ssª èÜ·B
+ </para>
+
+ <para>
+ Ì®«Í}bsOµ½¡¯Êqðwè·é½ßÉgpµÜ·B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>mapped</literal> (IvVAftHgÍ <literal>false</literal> ):
+ }bsOµ½¡¯Êqªgp³ê鱯ÆAïܳê½vpeBÌ}bsOªA
+ GeBeBNXÆ¡¯ÊqNX̼ûðQÆ·é±Æð¦µÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>class</literal> (IvV,½¾µ}bsOµ½¡¯ÊqÉÍK{):
+ ¡¯ÊqƵÄgp·éNXB
+
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ 3ÂÚ̳çÉÖÈû@ÍA¡¯Êqð<xref linkend="components-compositeid"/>àÌ
+ R|[lgNXƵÄÀ·é±ÆÅ·B
+ ºÅLqµÄ¢é®«ÍA±ÌãÖû@ÉÌÝKp³êÜ·B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>name</literal> (IvV, ±ÌAv[`ÅÍK{):
+ ¡¯ÊqðÛ·éR|[lg^CvÌvpeB(9ÍðQƵľ³¢).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>access</literal> (IvV - ftHgÍ <literal>property</literal> ):
+ HibernateªvpeBÌlÉANZX·é½ßÉgp·×«íªB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>class</literal>
+ iIvV - ftHgÍtNVÉæèè³êévpeBÌ^jF
+ ¡¯ÊqƵÄgíêéR|[lgÌNXiÌßð©Ä¾³¢jB
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ±Ì3ÂÚÌû@Í <emphasis> ¯ÊqR|[lg</emphasis> ÆÄÑA
+ ÙÆñÇ·×ÄÌAvP[VÉεħ·éû@Å·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-discriminator" revision="3">
+ <title>discriminator</title>
+
+ <para>
+ <literal><discriminator></literal> vfÍA
+ table-per-class-hierarchy}bsOíªðg¤|[tBbNÈi±»ÉKvÅ èA
+ e[u̯ÊJðè`µÜ·B
+ ¯ÊJÍA ésÉεÄi±wªÇÌTuNXðCX^X»·é©ð
+ `¦é}[J[lðÜñŢܷB
+ ÈºÌæ¤È^ɧÀ³êÜ·F <literal>string</literal> , <literal>character</literal> ,
+ <literal>integer</literal>,
+ <literal>byte</literal> , <literal>short</literal> , <literal>boolean</literal> ,
+ <literal>yes_no</literal> , <literal>true_false</literal>.
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="discriminator1" coords="2 60"/>
+ <area id="discriminator2" coords="3 60" />
+ <area id="discriminator3" coords="4 60" />
+ <area id="discriminator4" coords="5 60" />
+ <area id="discriminator5" coords="6 60" />
+ </areaspec>
+ <programlisting><![CDATA[<discriminator
+ column="discriminator_column"
+ type="discriminator_type"
+ force="true|false"
+ insert="true|false"
+ formula="arbitrary sql expression"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="discriminator1">
+ <para>
+ <literal>column</literal>iIvV - ftHgÍ <literal>class</literal> jF
+ ¯ÊJ̼OB
+ </para>
+ </callout>
+ <callout arearefs="discriminator2">
+ <para>
+ <literal>type</literal>
+ iIvV - ftHgÍ <literal>string</literal> jFHibernateÌ^𦷼OB
+ </para>
+ </callout>
+ <callout arearefs="discriminator3">
+ <para>
+ <literal>force</literal>
+ iIvV - ftHgÍ <literal>false</literal> jF
+ [gNXÌ·×ÄÌCX^Xðõ·éêÅ ÁÄàA
+ HibernateªgpÅ«é¯ÊJÌwèðu§vµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="discriminator4">
+ <para>
+ <literal>insert</literal>
+ iIvV - ftHgÍ <literal>true</literal> jF
+ ൯ÊJª}bsO·é¡¯ÊqÌêÈçÎA<literal>false</literal> ÆÝèµÄ¾³¢B
+ (HibernateÉSQLÌ <literal>INSERT</literal> ÉÍÜÜêÈ¢±Æðmç¹é)
+
+ </para>
+ </callout>
+ <callout arearefs="discriminator5">
+ <para>
+ <literal>formula</literal> (IvV)^ª]¿³ê鯫ÉÀs³êéCÓÌSQL®B
+ Recx[X̯ÊðÂ\ɵܷB
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ ¯ÊJÌÀÛÌlÍA <literal><class></literal> Æ
+ <literal><subclass></literal> vfÌ
+ <literal>discriminator-value</literal> ®«Åwè³êÜ·B
+ </para>
+
+ <para>
+ i±NXÖ}bsO³êÈ¢¢]ªÈv¯ÊlðÂsª
+ e[uÉ êÎAi»ÌÆ«ÉÀèj<literal>force</literal> ®«ÍLøÅ·B
+ ½¾µAÊÍ»¤¢¤±ÆÍ èܹñB
+ </para>
+
+ <para>
+ <literal>formula</literal> ®«ðg¤ÆAsÌ^ð]¿·é½ßÉCÓÌSQL®ðé¾Å«Ü·B
+ </para>
+
+ <programlisting><![CDATA[<discriminator
+ formula="case when CLASS_TYPE in ('a', 'b', 'c') then 0 else 1 end"
+ type="integer"/>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-version" revision="4">
+ <title>versioniIvVj</title>
+
+ <para>
+ <literal><version></literal> vfÍIvVÅ èA
+ e[uªo[Wf[^ðÜÞ±Æð¦µÜ·B
+ ±êÍ <emphasis>OgUNV</emphasis>
+ ðg¤ÂàèÈçAÁÉð§¿Ü·iȺð©Ä¾³¢jB
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="version1" coords="2 70"/>
+ <area id="version2" coords="3 70"/>
+ <area id="version3" coords="4 70"/>
+ <area id="version4" coords="5 70"/>
+ <area id="version5" coords="6 70"/>
+ <area id="version6" coords="7 70"/>
+ <area id="version7" coords="8 70"/>
+ </areaspec>
+ <programlisting><![CDATA[<version
+ column="version_column"
+ name="propertyName"
+ type="typename"
+ access="field|property|ClassName"
+ unsaved-value="null|negative|undefined"
+ generated="never|always"
+ insert="true|false"
+ node="element-name|@attribute-name|element/@attribute|."
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="version1">
+ <para>
+ <literal>column</literal>iIvV - ftHgÍvpeB¼j:
+ o[WÔðÛ·éJ̼OB
+ </para>
+ </callout>
+ <callout arearefs="version2">
+ <para>
+ <literal>name</literal> Fi±NXÌvpeB̼OB
+ </para>
+ </callout>
+ <callout arearefs="version3">
+ <para>
+ <literal>type</literal>
+ iIvV - ftHgÍ <literal>integer</literal> jFo[WÔÌ^B
+ </para>
+ </callout>
+ <callout arearefs="version4">
+ <para>
+ <literal>access</literal>
+ iIvV - ftHgÍ <literal>property</literal> jF
+ vpeBÌlÖÌANZXÉHibernateªg¤íªB
+ </para>
+ </callout>
+ <callout arearefs="version5">
+ <para>
+ <literal>unsaved-value</literal>
+ iIvV - ftHgÍ <literal>undefined</literal> jF
+ CX^XªVµCX^X»³ê½±Æð¦·
+ iZ[u³êĢȢ±Æð¦·jo[WvpeBÌlB
+ ÈOÌSessionÅZ[uܽÍ[h³ê½êIÈCX^XÆæÊ·é½ßÉ
+ g¢Ü·B
+ i <literal>undefined</literal> ͯÊqvpeBÌlªgíê鱯ðwèµÜ·Bj
+ </para>
+ </callout>
+
+ <callout arearefs="version6">
+ <para>
+ <literal>generated</literal> (IvV - ftHgÍ <literal>never</literal> ):
+ ±Ìo[WÌvpeBÌlªAf[^x[XÉæÁͬ³ê½±ÆðwèµÜ·B
+ <xref linkend="mapping-generated">¶¬vpeB</xref> Ìc_ð©Ä¾³¢B
+ </para>
+ </callout>
+ <callout arearefs="version7">
+ <para>
+ <literal>insert</literal> (IvV - ftHgÍ <literal>true</literal> ):
+ SQLÌinsert¶Éo[WEJðÜßé׫©Ç¤©ðwèµÜ·B
+ àµf[^x[XEJÌftHglª <literal>0</literal> Æè`³ê鯫ÉÍA
+ <literal>false</literal> ÉÝè·éÆÇ¢Åµå¤B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ o[WÔÍ HibernateÌ <literal>long</literal> , <literal>integer</literal> ,
+ <literal>short</literal> , <literal>timestamp</literal> ,
+ <literal>calendar</literal> ^Ì¢¸ê©Å·B
+ </para>
+
+ <para>
+ o[Wâ^CX^vÌvpeBÍAª£³ê½CX^XÉεÄnullÅ ÁÄÍÈèܹñB
+ »Ì½ßÇÌæ¤È <literal>unsaved-value</literal> íªªwè³êÄàA
+ HibernateÍnullÌo[Wâ^CX^vðÁ½·×ÄÌCX^XðA
+ êIÈàÌŠ鯻fµÜ·B
+
+ <emphasis> nullðe·éo[Wâ^CX^vÌvpeBðè`·é±ÆÍA
+ ßnIÉêIuWFNgÆ·é±Æðh®ÈPÈû@Å·B
+ ÁɯÊqÌèÄâ¡L[ðgpµÄ¢éÆ«ÉÍÁÉLpÅ·B</emphasis>
+ </para>
+ </sect2>
+
+ <sect2 id="mapping-declaration-timestamp" revision="4">
+ <title>timestampiIvVj</title>
+
+ <para>
+ IvVÌ <literal><timestamp></literal> vfÍA
+ e[uª^CX^vf[^ðÜÞ±Æð¦µÜ·B
+ ±êÍo[Wt¯ÌãíèÌû@ƵÄpÓ³êĢܷB
+ ^CX^vÍàÆàÆyÏIbNɨ¯éÀS«Ìá¢ÀÅ·B
+ µ©µAvP[VÍÙÈéprÅg¤±Æà é©àµêܹñB
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="timestamp1" coords="2 70"/>
+ <area id="timestamp2" coords="3 70" />
+ <area id="timestamp3" coords="4 70" />
+ <area id="timestamp4" coords="5 70" />
+ <area id="timestamp5" coords="6 70" />
+ <area id="timestamp6" coords="7 70" />
+ </areaspec>
+ <programlisting><![CDATA[<timestamp
+ column="timestamp_column"
+ name="propertyName"
+ access="field|property|ClassName"
+ unsaved-value="null|undefined"
+ source="vm|db"
+ generated="never|always"
+ node="element-name|@attribute-name|element/@attribute|."
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="timestamp1">
+ <para>
+ <literal>column</literal>iIvV - ftHgÍvpeB¼jF
+ ^CX^vðÛ·éJ̼OB
+ </para>
+ </callout>
+ <callout arearefs="timestamp2">
+ <para>
+ <literal>name</literal> F
+ i±NXÅ éJava Ì <literal>Date</literal >^ ܽÍ
+ <literal>Timestamp</literal> ^ ÌAJavaBeansX^CvpeB̼OB
+ </para>
+ </callout>
+ <callout arearefs="timestamp3">
+ <para>
+ <literal>access</literal>
+ iIvV - ftHgÍ <literal>property</literal> jF
+ vpeBÌlÖÌANZXÉHibernateªg¤íªB
+ </para>
+ </callout>
+ <callout arearefs="timestamp4">
+ <para>
+ <literal>unsaved-value</literal>
+ iIvV - ftHgÍ <literal>null</literal> jF
+ CX^XªVµCX^X»³ê½
+ iZ[u³êĢȢj±Æð¦·o[WvpeBÌlB
+ ÈOÌSessionÅZ[uܽÍ[h³ê½êIÈCX^XÆ
+ æÊ·é½ßÉgíêÜ·B
+ i <literal>undefined</literal> Æwè·éÆA
+ ¯ÊqvpeBÌlªgíêÜ·Bj
+ </para>
+ </callout>
+
+ <callout arearefs="timestamp5">
+ <para>
+ <literal>source</literal> (IvV - ftHgÍ <literal>vm</literal> ):
+ HibernateÍDZ©ç^CX^vÌlðæ¾·é׫ŵ天H
+ f[^x[X©çŵ天A»ÝÌJVM©çŵ天H
+ f[^x[XÉæé^CX^vÍAHibernateª"Ìl"ðè·é½ßÉ
+ f[^x[XðqbgµÈ¯êÎÈçÈ¢½ßAI[owbhðµ«Ü·B
+ µ©µNX^«ÅÍJVM©çæ¾·éæèÀSÅ·B
+ f[^x[XÌ»ÝÌ^CX^vÌæ¾ðT|[g·é
+ ·×ÄÌ <literal>f[^x[Xû¾</literal> ªmçêÄ¢éí¯ÅÍÈ¢±ÆÉ
+ ӵľ³¢BܽêûÅA¸§³ð½ßÉA
+ bNÅgp·éÉÍÀSÅÈ¢àÌà èÜ·(á¦ÎOracle 8)B
+ </para>
+ </callout>
+ <callout arearefs="timestamp6">
+ <para>
+ <literal>generated</literal> (IvV - ftHgÍ <literal>never</literal> ):
+ ±Ì^CX^vEvpeBÌlªAf[^x[XÉæÁͬ³ê鱯ðwèµÜ·B
+ <xref linkend="mapping-generated">¶¬vpeB</xref> ðQƵľ³¢B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ <literal><timestamp></literal> Í
+ <literal><version type="timestamp"></literal> Æ¿Å é±ÆÉӵľ³¢B
+ <literal><timestamp source="db"></literal> Í
+ <literal><version type="dbtimestamp"></literal> Æ¿Å é±ÆÉӵľ³¢B
+ </para>
+ </sect2>
+
+ <sect2 id="mapping-declaration-property" revision="4">
+ <title>property</title>
+
+ <para>
+ <literal><property></literal> vfÍANXÌi±IÈJavaBeanX^CÌvpeBðè`µÜ·B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="property1" coords="2 70"/>
+ <area id="property2" coords="3 70"/>
+ <area id="property3" coords="4 70"/>
+ <areaset id="property4-5" coords="">
+ <area id="property4" coords='5 70'/>
+ <area id="property5" coords='6 70'/>
+ </areaset>
+ <area id="property6" coords="7 70"/>
+ <area id="property7" coords="8 70"/>
+ <area id="property8" coords="9 70"/>
+ <area id="property9" coords="10 70"/>
+ <area id="property10" coords="11 70"/>
+ <area id="property11" coords="12 70"/>
+ <area id="property12" coords="13 70"/>
+ </areaspec>
+ <programlisting><![CDATA[<property
+ name="propertyName"
+ column="column_name"
+ type="typename"
+ update="true|false"
+ insert="true|false"
+ formula="arbitrary SQL expression"
+ access="field|property|ClassName"
+ lazy="true|false"
+ unique="true|false"
+ not-null="true|false"
+ optimistic-lock="true|false"
+ generated="never|insert|always"
+ node="element-name|@attribute-name|element/@attribute|."
+ index="index_name"
+ unique_key="unique_key_id"
+ length="L"
+ precision="P"
+ scale="S"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="property1">
+ <para>
+ <literal>name</literal>F¬¶ÅnÜévpeB¼B
+ </para>
+ </callout>
+ <callout arearefs="property2">
+ <para>
+ <literal>column</literal>iIvV - ftHgÍvpeB¼jF
+ }bsO³ê½f[^x[Xe[uÌJ̼OB
+ lXgµ½ <literal><column></literal> vfÅàwèūܷB
+ </para>
+ </callout>
+ <callout arearefs="property3">
+ <para>
+ <literal>type</literal>iIvVjFHibernateÌ^𦷼OB
+ </para>
+ </callout>
+ <callout arearefs="property4-5">
+ <para>
+ <literal>update, insert</literal>
+ iIvV - ftHgÍ <literal>true</literal> jF
+ }bsO³ê½JªSQLÌ
+ <literal>UPDATE</literal> â <literal>INSERT</literal> ÉÜÜê鱯ðwèµÜ·B
+ ¼ûÆà <literal>false</literal> ÉÝè·éÆA
+ ¯¶JÉ}bsO³ê½¼ÌvpeBâgKâ
+ ¼ÌAvP[VÉæÁÄú»³ê½Èu±ovvpeBªÂ\ÉÈèÜ·B
+ </para>
+ </callout>
+ <callout arearefs="property6">
+ <para>
+ <literal>formula</literal>iIvVjF
+ <emphasis>vZ</emphasis> vpeB̽ßÌlðè`·éSQL®B
+ vZ³ê½vpeBÍ©gÌJÖÌ}bsOª èܹñB
+ </para>
+ </callout>
+ <callout arearefs="property7">
+ <para>
+ <literal>access</literal>iIvV - ftHgÍ <literal>property</literal> jF
+ vpeBÌlÖÌANZXÉHibernateªg¤íªB
+ </para>
+ </callout>
+ <callout arearefs="property8">
+ <para>
+ <literal>lazy</literal> (optional - ftHgÍ <literal>false</literal> ):
+ CX^XÏÉÅÉANZXµ½Æ«ÉAvpeBðxµÄæ¾·éæ¤wèµÜ·B
+ (oCgR[hÀð쬷éÔªKvÉÈèÜ·)B
+ </para>
+ </callout>
+ <callout arearefs="property9">
+ <para>
+ <literal>unique</literal> (IvV):JÉj[N§ñð¯éDDL̶¬ðÂ\ɵܷB
+ ܽA<literal>property-ref</literal> Ì^[QbgÆ·é±ÆàūܷB
+ </para>
+ </callout>
+ <callout arearefs="property10">
+ <para>
+ <literal>not-null</literal> (IvV):JÉnulllð·éDDL̶¬ðÂ\ɵܷB
+ </para>
+ </callout>
+ <callout arearefs="property11">
+ <para>
+ <literal>optimistic-lock</literal> (IvV - ftHgÍ <literal>true</literal> ):
+ ±ÌvpeBÌXVÉyÏbNÌæ¾ðv·é©Ç¤©ðwèµÜ·B
+ ¾¢·¦êÎA±ÌvpeBª_[eBŠ鯫Éo[Wðâ·×«©ðèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="property12">
+ <para>
+ <literal>generated</literal> (IvV - ftHgÍ <literal>never</literal> ):
+ vpeBÌlªAf[^x[XÉæÁͬ³ê½±ÆðwèµÜ·B
+ <xref linkend="mapping-generated">¶¬vpeB</xref> ðQƵľ³¢B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ <emphasis>typename</emphasis> ÉÍȺÌlªÂ\Å·F
+ </para>
+
+ <orderedlist spacing="compact">
+ <listitem>
+ <para>
+ HibernateÌî{^̼Oiá <literal>integer, string, character,
+ date, timestamp, float, binary, serializable, object, blob</literal> jB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ftHgÌî{^ÌJavaNX¼ iá <literal>int, float,
+ char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</literal> jB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ VACYÂ\ÈJavaNX̼OB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ JX^^ÌNX¼iá <literal>com.illflow.type.MyCustomType</literal> jB
+ </para>
+ </listitem>
+ </orderedlist>
+
+ <para>
+ ^ðwèµÈ¯êÎAHibernateͳµ¢HibernateÌ^ðª·é½ßÉA
+ wè³ê½vpeBÉεÄtNVðg¢Ü·B
+ HibernateÍ[2, 3, 4ð»ÌÉg¢A
+ gettervpeBÌÔèlÌNX̼Oððßµæ¤ÆµÜ·B
+ µ©µ±êÅíÉ\ªÅ éÆÍÀèܹñB
+ êÉæÁÄÍA<literal>type</literal> ®«ªKvÈêª èÜ·B
+ iá¦Î <literal>Hibernate.DATE</literal> Æ <literal>Hibernate.TIMESTAMP</literal> ðæÊ·é½ßA
+ ܽÍJX^^ðwè·é½ßÈÇÅ·Bj
+ </para>
+
+ <para>
+ <literal>access</literal> ®«ÅA
+ ÀsÉHibernateªÇÌæ¤ÉvpeBÉANZX·é©ð§äūܷB
+ ftHgÅÍHibernateÍvpeBÌget/setÌyAðR[µÜ·B
+ <literal>access="field"</literal> Æwè·êÎA
+ HibernateÍtNVðg¢get/setÌyAðÉA¼ÚtB[hÉANZXµÜ·B
+ C^[tFCX <literal>org.hibernate.property.PropertyAccessor</literal> ð
+ À·éNXðwè·é±ÆÅAvpeBÖÌANZXÉÆ©Ìíªðwè·é±ÆªÅ«Ü·B
+ </para>
+
+ <para>
+ ÁÉÍÈÁ¥Í¶¬vpeBÅ·B
+ ±êçÌvpeBÍRÇÝæèêpÅ èAvpeBÌlÍ[hÉvZ³êÜ·B
+ vZðSQL®ÆµÄé¾·éÆA±ÌvpeBÍ
+ CX^Xð[h·éSQLNGÌ <literal>SELECT</literal> åÌTuNGÉÏ·³êÜ·B
+ </para>
+
+ <programlisting><![CDATA[
+<property name="totalPrice"
+ formula="( SELECT SUM (li.quantity*p.price) FROM LineItem li, Product p
+ WHERE li.productId = p.productId
+ AND li.customerId = customerId
+ AND li.orderNumber = orderNumber )"/>]]></programlisting>
+
+ <para>
+ ÁèÌJ(áÅÍ <literal>customerId</literal> ª»êÉ ½èÜ·)ÌGCAXð龷鱯ÈA
+ GeBeB©gÌe[uðQÆÅ«é±ÆÉӵľ³¢B
+ ൮«ðgpµ½È¯êÎA
+ lXgµ½ <literal><formula></literal> }bsOvfðg¦é±ÆÉàӵľ³¢B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-manytoone" revision="5">
+ <title>many-to-one</title>
+
+ <para>
+ ¼Ìi±NXÖÌÊíÌÖAÍ <literal>many-to-one</literal> vfðgÁÄè`µÜ·B
+ [VifͽÎêÖAÅ·B
+ ÂÜè ée[uÌOL[ÍA^[QbgÆÈée[uÌåL[JðQƵĢܷB
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="manytoone1" coords="2 70"/>
+ <area id="manytoone2" coords="3 70"/>
+ <area id="manytoone3" coords="4 70"/>
+ <area id="manytoone4" coords="5 70"/>
+ <area id="manytoone5" coords="6 70"/>
+ <areaset id="manytoone6-7" coords="">
+ <area id="manytoone6" coords='7 70'/>
+ <area id="manytoone7" coords='8 70'/>
+ </areaset>
+ <area id="manytoone8" coords="9 70"/>
+ <area id="manytoone9" coords="10 70"/>
+ <area id="manytoone10" coords="11 70"/>
+ <area id="manytoone11" coords="12 70"/>
+ <area id="manytoone12" coords="13 70"/>
+ <area id="manytoone13" coords="14 70"/>
+ <area id="manytoone14" coords="15 70"/>
+ <area id="manytoone15" coords="16 70"/>
+ <area id="manytoone16" coords="17 70"/>
+ </areaspec>
+ <programlisting><![CDATA[<many-to-one
+ name="propertyName"
+ column="column_name"
+ class="ClassName"
+ cascade="cascade_style"
+ fetch="join|select"
+ update="true|false"
+ insert="true|false"
+ property-ref="propertyNameFromAssociatedClass"
+ access="field|property|ClassName"
+ unique="true|false"
+ not-null="true|false"
+ optimistic-lock="true|false"
+ lazy="proxy|no-proxy|false"
+ not-found="ignore|exception"
+ entity-name="EntityName"
+ formula="arbitrary SQL expression"
+ node="element-name|@attribute-name|element/@attribute|."
+ embed-xml="true|false"
+ index="index_name"
+ unique_key="unique_key_id"
+ foreign-key="foreign_key_name"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="manytoone1">
+ <para>
+ <literal>name</literal>FvpeB¼B
+ </para>
+ </callout>
+ <callout arearefs="manytoone2">
+ <para>
+ <literal>column</literal> (IvV):OL[J̼OB
+ lXgµ½ <literal><column></literal> vfÅàwèūܷB
+ </para>
+ </callout>
+ <callout arearefs="manytoone3">
+ <para>
+ <literal>class</literal>iIvV - ftHgÍA
+ tNVÉæèè³êévpeBÌ^jFÖANX̼OB
+ </para>
+ </callout>
+ <callout arearefs="manytoone4">
+ <para>
+ <literal>cascade</literal>iIvVjF
+ ÇÌìðAeIuWFNg©çÖAIuWFNgÖÆJXP[h³¹é©ðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="manytoone5">
+ <para>
+ <literal>fetch</literal> (IvV - ftHgÍ <literal>select</literal> ):
+ OtFb`©IðtFb`isequential select fetchjðIðµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="manytoone6-7">
+ <para>
+ <literal>update, insert</literal>iIvV - ftHgÍ <literal>true</literal> jF
+ }bsO³ê½JªSQLÌ <literal>UPDATE</literal> ܽÍ
+ <literal>INSERT</literal> ¶ÉÜÜê鱯ðwèµÜ·B
+ ¼ûÆà <literal>false</literal> ÉÝè·éÆA
+ »Ìlª¯¶JÉ}bsO³ê½¼ÌvpeBâgKâ
+ ¼ÌAvP[VÉæÁÄú»³ê½Èu±ovvpeBªÂ\ÉÈèÜ·B
+ </para>
+ </callout>
+ <callout arearefs="manytoone8">
+ <para>
+ <literal>property-ref</literal>iIvVjF
+ ±ÌOL[ɳê½ÖANXÌvpeB¼B
+ ½àwèµÈ¯êÎAÖANXÌåL[ªgíêÜ·B
+ </para>
+ </callout>
+ <callout arearefs="manytoone9">
+ <para>
+ <literal>access</literal>iIvV - ftHgÍ <literal>property</literal> jF
+ vpeBÌlÖÌANZXÉHibernateªg¤íªB
+ </para>
+ </callout>
+ <callout arearefs="manytoone10">
+ <para>
+ <literal>unique</literal>iIvVjF
+ OL[JÉεÄj[N§ñð¯½DDL̶¬ðÂ\ɵܷB
+ ܽA<literal>property-ref</literal> Ì^[Qbgɷ鱯àūܷB
+ ±êÉæèÖA̽dxðøÊIÉêÎêɵܷB
+ </para>
+ </callout>
+ <callout arearefs="manytoone11">
+ <para>
+ <literal>not-null</literal> (IvV):OL[JÉεÄA
+ nulllð·éDDL̶¬ðÂ\ɵܷ
+ </para>
+ </callout>
+ <callout arearefs="manytoone12">
+ <para>
+ <literal>optimistic-lock</literal> (IvV - ftHgÍ <literal>true</literal> ):
+ ±ÌvpeBÌXVÉyÏIbNÌæ¾ðv·é©Ç¤©ðwèµÜ·B
+ ¾¢·¦êÎA±ÌvpeBª_[eBŠ鯫Éo[Wðâ·×«©ðèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="manytoone13">
+ <para>
+ <literal>lazy</literal> (IvV - ftHgÍ <literal>proxy</literal> ):
+ ftHgÅÍA½dxPÌÖAªvLVÆÈèÜ·B
+ <literal>lazy="no-proxy"</literal> ÍACX^XÏÉÅÉANZXµ½Æ«ÉA
+ vpeBðxtFb`·éæ¤wèµÜ·
+ (rhÉoCgR[hÀªKvÉÈèÜ·)B
+ <literal>lazy="false"</literal> ÍÖAðíɦÉtFb`·éæ¤wèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="manytoone14">
+ <para>
+ <literal>not-found</literal> (IvV - ftHgÍ <literal>exception</literal> ):
+ µ½sðQÆ·éOL[ðÇÌæ¤Éµ¤©ðwèµÜ·B
+ <literal>ignore</literal> ͵½sðnullÖAƵĵ¢Ü·B
+ </para>
+ </callout>
+ <callout arearefs="manytoone15">
+ <para>
+ <literal>entity-name</literal> (IvV):ÖAµ½NXÌGeBeB¼B
+ </para>
+ </callout>
+ </calloutlist>
+ <callout arearefs="manytoone16">
+ <para>
+ <literal>formula</literal> (IvV):
+ <emphasis> vZ³ê½</emphasis> OL[ÉεÄlðè`·éSQL®
+ </para>
+ </callout>
+ </programlistingco>
+
+ <para>
+ <literal>cascade</literal> ®«É <literal>none</literal> ÈOÌÓ¡Ì élððÝè·éÆA
+ ÖAIuWFNgÖ éìª`d·é±ÆÉÈèÜ·B
+ Ó¡Ì élÆÍHibernateÌî{ì̼O̱ÆÅA
+ <literal>delete-orphan</literal> Æ <literal>all</literal> Aì¼ðJ}ÅæØÁ½gÝí¹
+ iá¦Î <literal>cascade="persist,merge,evict"</literal> â
+ <literal>cascade="all,delete-orphan"</literal>jA
+ ܽ»ê¾¯ÅÈ <literal>persist, merge, delete, save-update, evict, replicate, lock,
+ refresh</literal> ̱ÆðwµÜ·B
+ Úµ¢à¾Í <xref linkend="objectstate-transitive"/> ð©Ä¾³¢B
+ lªêÂÌÖA(many-to-oneÆone-to-oneÖA)ÍA
+ PÆÅÌíiorphan delete)ðT|[gµÄ¢È¢±ÆÉӵľ³¢B
+ </para>
+
+ <para>
+ T^IÈ <literal>many-to-one</literal> é¾ÍÌæ¤ÉVvÅ·BF
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="product" class="Product" column="PRODUCT_ID"/>]]></programlisting>
+
+ <para>
+ <literal>property-ref</literal> ®«ÍAOL[ªÖAt¯çê½e[uÌAåL[ÅÈ¢
+ j[NL[ðQƵĢéKV[f[^ð}bv·é½ßɾ¯g¤×«Å·B
+ ±êÍX¢[VifÅ·B
+ á¦Î <literal>Product</literal> NXªA
+ åL[ÅÈ¢j[NÈVAio[ðÁĢ鯼èµÄÝľ³¢B
+ i <literal>unique</literal> ®«ÍSchemaExportc[ðgÁ½HibernateÌDDL¶¬ð§äµÜ·Bj
+ </para>
+
+ <programlisting><![CDATA[<property name="serialNumber" unique="true" type="string" column="SERIAL_NUMBER"/>]]></programlisting>
+
+ <para>
+ ÈºÌæ¤É <literal>OrderItem</literal> ÉεÄ}bsOðg¦Ü·F
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="product" property-ref="serialNumber" column="PRODUCT_SERIAL_NUMBER"/>]]></programlisting>
+
+ <para>
+ µ©µA±ê͵ħūܹñB
+ </para>
+
+ <para>
+ QƵ½j[NL[ªAÖA·éGeBeB̽ÌvpeB©ç\¬³êéêA
+ wèµ½ <literal><properties></literal> vfàÅAQÆ·évpeBð}bsO·é׫ŷB
+ </para>
+
+ <para>
+ àµQƵ½j[NL[ªR|[lgÌvpeBÅ éêÍAvpeBÌpXðwèūܷB
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="owner" property-ref="identity.ssn" column="OWNER_SSN"/>]]></programlisting>
+
+
+ </sect2>
+
+
+ <sect2 id="mapping-declaration-onetoone" revision="3">
+ <title>one-to-one</title>
+
+ <para>
+ ¼Ìi±NXÖÌêÎêÖAÍA<literal>one-to-one</literal> vfÅè`µÜ·B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="onetoone1" coords="2 70"/>
+ <area id="onetoone2" coords="3 70"/>
+ <area id="onetoone3" coords="4 70"/>
+ <area id="onetoone4" coords="5 70"/>
+ <area id="onetoone5" coords="6 70"/>
+ <area id="onetoone6" coords="7 70"/>
+ <area id="onetoone7" coords="8 70"/>
+ <area id="onetoone8" coords="9 70"/>
+ <area id="onetoone9" coords="10 70"/>
+ <area id="onetoone10" coords="11 70"/>
+ </areaspec>
+ <programlisting><![CDATA[<one-to-one
+ name="propertyName"
+ class="ClassName"
+ cascade="cascade_style"
+ constrained="true|false"
+ fetch="join|select"
+ property-ref="propertyNameFromAssociatedClass"
+ access="field|property|ClassName"
+ formula="any SQL expression"
+ lazy="proxy|no-proxy|false"
+ entity-name="EntityName"
+ node="element-name|@attribute-name|element/@attribute|."
+ embed-xml="true|false"
+ foreign-key="foreign_key_name"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="onetoone1">
+ <para>
+ <literal>name</literal>FvpeB¼B
+ </para>
+ </callout>
+ <callout arearefs="onetoone2">
+ <para>
+ <literal>class</literal>iIvV -
+ ftHgÍtNVÉæèè³êévpeBÌ^jF
+ ÖANX̼OB
+ </para>
+ </callout>
+ <callout arearefs="onetoone3">
+ <para>
+ <literal>cascade</literal>iIvVjF
+ eIuWFNg©çÖAIuWFNgÖAÇÌìðJXP[h·é©ðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="onetoone4">
+ <para>
+ <literal>constrained</literal>iIvVjF
+ }bsO³ê½e[uÌåL[ÉηéOL[§ñªA
+ ÖANXÌe[uðQÆ·é±ÆðwèµÜ·B
+ ±ÌIvVÍ <literal>save()</literal> Æ
+ <literal>delete()</literal> ªJXP[h³êéÉe¿µA
+ »µÄÖAªvLV³êé©Ç¤©Éàe¿µÜ·
+ i»µÄXL[}GNX|[gc[ÉàgíêÜ·jB
+ </para>
+ </callout>
+ <callout arearefs="onetoone5">
+ <para>
+ <literal>fetch</literal>iIvV - ftHgÍ <literal>select</literal> jF
+ OtFb`ÆIðtFb`isequential select fetchjÌÇ¿ç©ðIðµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="onetoone6">
+ <para>
+ <literal>property-ref</literal>iIvVjF
+ ±ÌNXÌåL[ɳê½ÖANXÌvpeB¼B
+ wè³êȯêÎAÖANXÌåL[ªgíêÜ·B
+ </para>
+ </callout>
+ <callout arearefs="onetoone7">
+ <para>
+ <literal>access</literal>iIvV - ftHgÍ <literal>property</literal> jF
+ vpeBÌlÖÌANZXÉHibernateªg¤íªB
+ </para>
+ </callout>
+ <callout arearefs="onetoone8">
+ <para>
+ <literal>formula</literal> (IvV):
+ ÙÆñÇ·×ÄÌêÎêÖAÍI[i[ÌGeBeBÌåL[ÖÆ}bsO³êÜ·B
+ ±êÈOÌHÈêÍA
+ ¼ÌJâA¡ÌJASQL\¶ðgÁ½·é½ßÌ®ðwèūܷB
+ iáÍ <literal>org.hibernate.test.onetooneformula</literal> ðQƵľ³¢Bj
+ </para>
+ </callout>
+ <callout arearefs="onetoone9">
+ <para>
+ <literal>lazy</literal> (IvV - ftHgÍ <literal>proxy</literal> ):
+ ftHgÅÍA½dxPÌÖAªvLVÆÈèÜ·B
+ <literal>lazy="no-proxy"</literal> ÍACX^XÏÉÅÉANZXµ½Æ«ÉA
+ vpeBðxtFb`·éæ¤wèµÜ·
+ (rhÉoCgR[hÀªKvÉÈèÜ·)B
+ <literal>lazy="false"</literal> ÍÖAðíɦÉtFb`·éæ¤wèµÜ·B
+ <emphasis>ൠ<literal>constrained="false"</literal> ÈçÎA
+ vLVÍgpsÂ\ÆÈèAÖAð¦ÉtFb`·é±ÆÉӵľ³¢I</emphasis>
+
+ </para>
+ </callout>
+ <callout arearefs="onetoone10">
+ <para>
+ <literal>entity-name</literal> (IvV):ÖANXÌGeBeB¼
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ êÎêÖAÉÍ2íÞ èÜ·F
+ </para>
+ <itemizedlist>
+ <listitem><para>
+ åL[ÖA
+ </para></listitem>
+ <listitem><para>
+ j[NOL[ÖA
+ </para></listitem>
+ </itemizedlist>
+
+ <para>
+ åL[ÖAÉÍAÁÊÈe[uJÍKv èܹñB
+ àµ2ÂÌsªÖAÉæèÖWµÄ¢êÎA2ÂÌe[uͯ¶åL[Ìlð¤LµÜ·B
+ »Ì½ß2ÂÌIuWFNgðåL[ÖAÉæÁÄÖAt¯½¢ÌÅ êÎA
+ mÀɯ¶¯ÊqÌlðãüµÈ¯êÎÈèܹñB
+ </para>
+
+ <para>
+ åL[ÖAðs¤½ßÉÍAȺÌ}bsOð <literal>Employee</literal> Æ
+ <literal>Person</literal> Ì»ê¼êÉÇÁµÄ¾³¢B
+ </para>
+
+ <programlisting><![CDATA[<one-to-one name="person" class="Person"/>]]></programlisting>
+ <programlisting><![CDATA[<one-to-one name="employee" class="Employee" constrained="true"/>]]></programlisting>
+
+ <para>
+ ±±ÅAPERSONÆEMPLOYEEe[uÌÖW·ésÌåL[ª¯¶Å 鱯ðmÀɵȯê΢¯Ü¹ñB
+ ±±ÅÍA<literal>foreign</literal> Æ¢¤ÁêÈHibernate¯Êq¶¬íªðg¢Ü·F
+ </para>
+
+ <programlisting><![CDATA[<class name="person" table="PERSON">
+ <id name="id" column="PERSON_ID">
+ <generator class="foreign">
+ <param name="property">employee</param>
+ </generator>
+ </id>
+ ...
+ <one-to-one name="employee"
+ class="Employee"
+ constrained="true"/>
+</class>]]></programlisting>
+
+ <para>
+ <literal>Employee</literal> CX^XªA<literal>Person</literal> Ì
+ <literal>employee</literal> vpeBÅQƳê鿤ÉA
+ VµZ[u³ê½ <literal>Person</literal> ÌCX^XÉͯ¶åL[Ìlªãü³êÜ·B
+
+ VµZ[u·é <literal>Person</literal> CX^XÍA
+ »Ì <literal>Person</literal> Ì <literal>employee</literal> vpeBªQÆ·é
+ <literal>Employee</literal> CX^XƵį¶åL[ªèÄçêÜ·B
+ </para>
+
+ <para>
+ à¤1ÂÌû@ƵÄA<literal>Employee</literal> ©ç <literal>Person</literal> ÖÌ
+ j[N§ñðgÁ½OL[ÖAÍÈºÌæ¤É\»³êÜ·F
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="person" class="Person" column="PERSON_ID" unique="true"/>]]></programlisting>
+
+ <para>
+ »µÄ±ÌÖAÍA
+ ȺÌLqð <literal>Person</literal> Ì}bsOÉÇÁ·é±ÆÅoûüɷ鱯ªÅ«Ü·F
+ </para>
+
+ <programlisting><![CDATA[<one-to-one name="employee" class="Employee" property-ref="person"/>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-naturalid">
+ <title>natural-id</title>
+
+ <programlisting><![CDATA[<natural-id mutable="true|false"/>
+ <property ... />
+ <many-to-one ... />
+ ......
+</natural-id>]]></programlisting>
+
+ <para>
+ åL[ƵÄãL[Ìgpð§µÜ·ªA
+ ·×ÄÌGeBeBÉεĩRL[ð¯Ê·éæ¤É·×«Å·B
+ ©RL[Íj[N©ÂñnullÈêÂÌvpeBAܽÍvpeBÌAÅ·B
+ sÏÅ êγçÉǢŷB
+ <literal><natural-id></literal> vfàÅ©RL[ÌvpeBð}bsOµÜ·B
+ HibernateÍKRIÉj[N©Ânulllð·é§ñ𶬵A
+ ±¤µÄ}bsOÍæè©ÈLqIÉÈèÜ·B
+ </para>
+
+ <para>
+ GeBeBÌ©RL[vpeBÌärÉÍA
+ <literal>equals()</literal> Æ <literal>hashCode()</literal> ÌÀð¨©ßµÜ·B
+ </para>
+
+ <para>
+ ±Ì}bsOÍ©RåL[ðgÁ½GeBeBÅÌgpðÓ}µÄ¢Ü¹ñB
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>mutable</literal> (IvV, ftHgÍ <literal>false</literal> ):
+ ftHgÅÍA©R¯ÊqvpeBÍsÏ(è)Æzè³êĢܷB
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-component" revision="2">
+ <title>component, dynamic-component</title>
+
+ <para>
+ <literal><component></literal> vfÍA
+ qIuWFNgÌvpeBðeNXÌe[uÌJÖ}bsOµÜ·B
+ R|[lgÍ©ªÌvpeBAR|[lgARNVÌÉè`ūܷB
+ ȺÌuR|[lgvð©Ä¾³¢B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="component1" coords="2 45"/>
+ <area id="component2" coords="3 45"/>
+ <area id="component3" coords="4 45"/>
+ <area id="component4" coords="5 45"/>
+ <area id="component5" coords="6 45"/>
+ <area id="component6" coords="7 45"/>
+ <area id="component7" coords="8 45"/>
+ <area id="component8" coords="9 45"/>
+ </areaspec>
+ <programlisting><![CDATA[<component
+ name="propertyName"
+ class="className"
+ insert="true|false"
+ update="true|false"
+ access="field|property|ClassName"
+ lazy="true|false"
+ optimistic-lock="true|false"
+ unique="true|false"
+ node="element-name|."
+>
+
+ <property ...../>
+ <many-to-one .... />
+ ........
+</component>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="component1">
+ <para>
+ <literal>name</literal>FvpeB¼B
+ </para>
+ </callout>
+ <callout arearefs="component2">
+ <para>
+ <literal>class</literal>
+ iIvV - ftHgÍtNVÉæèè³êévpeBÌ^jF
+ R|[lgiqjNX̼OB
+ </para>
+ </callout>
+ <callout arearefs="component3">
+ <para>
+ <literal>insert</literal> F}bsO³ê½JªSQLÌ
+ <literal>INSERT</literal> É»ê鿤ɷéǤ©ðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="component4">
+ <para>
+ <literal>update</literal> : }bsO³ê½JªSQL Ì
+ <literal>UPDATE</literal> É»ê鿤ɷé©Ç¤©ðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="component5">
+ <para>
+ <literal>access</literal> iIvV - ftHgÍ <literal>property</literal> jF
+ vpeBÌlÖÌANZXÉHibernateªg¤íªB
+ </para>
+ </callout>
+ <callout arearefs="component6">
+ <para>
+ <literal>lazy</literal> (optional - ftHgÍ <literal>false</literal> ):
+ CX^XÏÉÅÉANZXµ½Æ«ÉA
+ R|[lgðxµÄtFb`·éæ¤wèµÜ·B
+ (oCgR[hÀð쬷éÔªKvÉÈèÜ·)
+ </para>
+ </callout>
+ <callout arearefs="component7">
+ <para>
+ <literal>optimistic-lock</literal> (IvV - ftHgÍ <literal>true</literal> ):
+ ±ÌvpeBÌXVÉAyÏbNÌæ¾ðv·é©Ç¤©ðwèµÜ·B
+ ¾¢·¦êÎA±ÌvpeBª_[eBŠ鯫Éo[Wðâ·×«©ðèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="component8">
+ <para>
+ <literal>unique</literal> (IvV - ftHgÍ <literal>false</literal> ):
+ R|[lgÌ·×ÄÌ}bsO·éJÉAj[N§ñª¶Ý·é©ðwèµÜ·B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ qÌ <literal><property></literal> ^OÅA
+ qÌNXÌvpeBðe[uJÉ}bsOµÜ·B
+ </para>
+
+ <para>
+ <literal><component></literal> vfÍAeGeBeBÖßéQÆÆµÄA
+ R|[lgÌNXÌvpeBð}bsO·é <literal><parent></literal> TuvfðµܷB
+ </para>
+
+ <para>
+ <literal><dynamic-component></literal> vfÍA
+ <literal>Map</literal> ªR|[lgƵÄ}bsO³ê鱯ðÂ\ɵܷB
+ vpeB¼ÍmapÌL[ðQƵܷB<xref linkend="components-dynamic"/> ðQƵľ³¢B
+
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-properties" revision="2">
+ <title>properties</title>
+
+ <para>
+ <literal><properties></literal> vfÍNXÌvpeBÌwè³ê½A
+ _IÈO[sOðÂ\ɵܷB
+ ±Ì\¢ÌÅàdvÈgpû@ÍA
+ <literal>property-ref</literal> Ì^[QbgÉÈévpeBÌðÂ·é±ÆÅ·B
+ »êÍܽA¡JÌj[N§ñðè`·éÈPÈû@Åà èÜ·B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="properties1" coords="2 45"/>
+ <area id="properties2" coords="3 45"/>
+ <area id="properties3" coords="4 45"/>
+ <area id="properties4" coords="5 45"/>
+ <area id="properties5" coords="6 45"/>
+ </areaspec>
+ <programlisting><![CDATA[<properties
+ name="logicalName"
+ insert="true|false"
+ update="true|false"
+ optimistic-lock="true|false"
+ unique="true|false"
+>
+
+ <property ...../>
+ <many-to-one .... />
+ ........
+</properties>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="properties1">
+ <para>
+ <literal>name</literal> : O[sOÌ_¼B
+ ÀÛÌvpeB¼ÅÍ <emphasis> èܹñ</emphasis> B
+ </para>
+ </callout>
+ <callout arearefs="properties2">
+ <para>
+ <literal>insert</literal>F}bsO³ê½JªSQLÌ
+ <literal>INSERT</literal> É»ê鿤ɷé©Ç¤©ðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="properties3">
+ <para>
+ <literal>update</literal>F}bsO³ê½JªSQLÌ
+ <literal>UPDATE</literal> É»ê鿤ɷé©Ç¤©ðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="properties4">
+ <para>
+ <literal>optimistic-lock</literal> (IvV - ftHgÍ <literal>true</literal> ):
+ ±êçÌvpeBÌXVÉyÏIbNÌæ¾ðv·é©Ç¤©ðwèµÜ·B
+ ¾¢·¦êÎA±ÌvpeBª_[eBŠ鯫Éo[Wðâ·×«©ðèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="properties5">
+ <para>
+ <literal>unique</literal> (IvV - ftHgÍ <literal>false</literal> ):
+ R|[lgÌ·×ÄÌ}bsO·éJÉAj[N§ñª¶Ý·é©ðwèµÜ·B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ á¦ÎAàµÈºÌæ¤È <literal><properties></literal> }bsOª Á½êF
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="personNumber"/>
+ ...
+ <properties name="name"
+ unique="true" update="false">
+ <property name="firstName"/>
+ <property name="initial"/>
+ <property name="lastName"/>
+ </properties>
+</class>]]></programlisting>
+
+ <para>
+ åL[ÌãíèÉ <literal>Person</literal> e[uÌj[NL[ÖÌQÆðÂA
+ KV[f[^ÌÖAð©àµêܹñBF
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="person"
+ class="Person" property-ref="name">
+ <column name="firstName"/>
+ <column name="initial"/>
+ <column name="lastName"/>
+</many-to-one>]]></programlisting>
+
+ <para>
+ µ©µA±Ìæ¤ÈKV[f[^}bsOÌReLXgOÖÌgpͧµÜ¹ñB
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-subclass" revision="4">
+ <title>subclass</title>
+
+ <para>
+ ÅãÉ|[tBbNÈi±»ÉÍA[gÌi±NXÌeTuNXÌè`ªKvÅ·B
+ table-per-class-hierarchy}bsOíªÅÍA
+ <literal><subclass></literal> è`ªgíêÜ·B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="subclass1" coords="2 55"/>
+ <area id="subclass2" coords="3 55"/>
+ <area id="subclass3" coords="4 55"/>
+ <area id="subclass4" coords="5 55"/>
+ </areaspec>
+ <programlisting><![CDATA[<subclass
+ name="ClassName"
+ discriminator-value="discriminator_value"
+ proxy="ProxyInterface"
+ lazy="true|false"
+ dynamic-update="true|false"
+ dynamic-insert="true|false"
+ entity-name="EntityName"
+ node="element-name"
+ extends="SuperclassName">
+
+ <property .... />
+ .....
+</subclass>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="subclass1">
+ <para>
+ <literal>name</literal>FTuNXÌ®SCü³ê½NX¼B
+ </para>
+ </callout>
+ <callout arearefs="subclass2">
+ <para>
+ <literal>discriminator-value</literal>iIvV - ftHgÍNX¼jF
+ ÂXÌTuNXðæÊ·é½ßÌlB
+ </para>
+ </callout>
+ <callout arearefs="subclass3">
+ <para>
+ <literal>proxy</literal>iIvVjF
+ xú»vLVÉg¤NXâC^[tFCXðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="subclass4">
+ <para>
+ <literal>lazy</literal>iIvV, ftHgÍ <literal>true</literal> jF
+ <literal>lazy="false"</literal> ÆÝè·éÆAxtFb`ªgpūܹñB
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ eTuNXÅÍAi±vpeBÆTuNXðè`µÜ·B
+ <literal><version></literal> Æ <literal><id></literal> vpeBÍA
+ [gNX©çp³³ê鯼è³êÜ·B
+ Kw\¢É¨¯éTuNXÍA
+ j[NÈ <literal>discriminator-value</literal> ðè`µÈ¯êÎÈèܹñB
+ noneªwè³êéÆA®SCü³ê½JavaNX¼ªgíêÜ·B
+ </para>
+
+<!--
+ <para>
+ It is possible to define <literal>subclass</literal>, <literal>union-subclass</literal>,
+ and <literal>joined-subclass</literal> mappings in separate mapping documents, directly beneath
+ <literal>hibernate-mapping</literal>. This allows you to extend a class hierachy just by adding
+ a new mapping file. You must specify an <literal>extends</literal> attribute in the subclass mapping,
+ naming a previously mapped superclass. Note: Previously this feature made the ordering of the mapping
+ documents important. Since Hibernate3, the ordering of mapping files does not matter when using the
+ extends keyword. The ordering inside a single mapping file still needs to be defined as superclasses
+ before subclasses.
+
+ <literal>subclass</literal> A<literal>union-subclass</literal> A
+ <literal>joined-subclass</literal> }bsOð
+ <literal>hibernate-mapping</literal> ¼ºÌÊÌ}bsOhL
gàÅé¾Å«Ü·B
+ ±êÉæèAVµ¢}bsOt@CðÇÁ·é¾¯ÅNXKwðg£·é±ÆªÅ«Ü·B
+ ç©¶ß}bsO·éX[p[NXðwèµ½TuNX}bsOàÅA
+ <literal>extends</literal> ®«ðwèµÈ¯êÎÈèܹñB
+ ÓF±ÌÁ«Í}bsOhL
gÌÔt¯ªdvÉÈèÜ·B
+ Hibernate3ÅÍAg£L[[hðg¤Æ«ÉÍA}bsOt@CÌt¯ÍâèÉÈèܹñB
+ êÂÌ}bsOt@CàÅÌt¯Í¢¾ÉATuNXÌOÉX[p[NXƵÄè`·éKvª èÜ·B
+ </para>
+
+
+ <programlisting><![CDATA[
+<hibernate-mapping>
+ <subclass name="DomesticCat" extends="Cat" discriminator-value="D">
+ <property name="name" type="string"/>
+ </subclass>
+</hibernate-mapping>]]></programlisting>
+-->
+
+ <para>
+ p³Ì}bsOÉÖ·éîñÍ <xref linkend="inheritance"/> ð©Ä¾³¢B
+ </para>
+
+ </sect2>
+
+
+ <sect2 id="mapping-declaration-joinedsubclass" revision="3">
+ <title>joined-subclass</title>
+
+ <para>
+ à¤1ÂÌû@ƵÄAeTuNXð©gÌe[uÖ}bsO·é±ÆªÅ«Ü·
+ (table-per-subclass mapping strategy)B
+ p³µ½óÔÍX[p[NXÌe[uðgÁ½ÅõµÜ·B
+ <literal><joined-subclass></literal> vfðgpµÜ·B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="joinedsubclass1" coords="2 45"/>
+ <area id="joinedsubclass2" coords="3 45"/>
+ <area id="joinedsubclass3" coords="4 45"/>
+ <area id="joinedsubclass4" coords="5 45"/>
+ </areaspec>
+ <programlisting><![CDATA[<joined-subclass
+ name="ClassName"
+ table="tablename"
+ proxy="ProxyInterface"
+ lazy="true|false"
+ dynamic-update="true|false"
+ dynamic-insert="true|false"
+ schema="schema"
+ catalog="catalog"
+ extends="SuperclassName"
+ persister="ClassName"
+ subselect="SQL expression"
+ entity-name="EntityName"
+ node="element-name">
+
+ <key .... >
+
+ <property .... />
+ .....
+</joined-subclass>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="joinedsubclass1">
+ <para>
+ <literal>name</literal>FTuNXÌ®SCü³ê½NX¼B
+ </para>
+ </callout>
+ <callout arearefs="joinedsubclass2">
+ <para>
+ <literal>table</literal> :TuNXe[u̼OB
+ </para>
+ </callout>
+ <callout arearefs="joinedsubclass3">
+ <para>
+ <literal>proxy</literal> (IvV):
+ xú»vLVÉgp·éNXâC^[tFCXðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="joinedsubclass4">
+ <para>
+ <literal>lazy</literal> (IvV, ftHgÍ <literal>true</literal> ):
+ <literal>lazy="false"</literal> Æ·éÆAxtFb`ªgpūܹñB
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ ±Ì}bsOíªÉÍA¯ÊJÍKv èܹñB
+ µ©µeTuNXÍ <literal><key></literal> vfðg¢A
+ IuWFNg¯ÊqðÛ·ée[uJðè`µÈ¯êÎÈèܹñB
+ ±ÌÍÌßÌ}bsOÍÈºÌæ¤É«¼¹Ü·F
+ </para>
+
+ <programlisting><![CDATA[<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="eg">
+
+ <class name="Cat" table="CATS">
+ <id name="id" column="uid" type="long">
+ <generator class="hilo"/>
+ </id>
+ <property name="birthdate" type="date"/>
+ <property name="color" not-null="true"/>
+ <property name="sex" not-null="true"/>
+ <property name="weight"/>
+ <many-to-one name="mate"/>
+ <set name="kittens">
+ <key column="MOTHER"/>
+ <one-to-many class="Cat"/>
+ </set>
+ <joined-subclass name="DomesticCat" table="DOMESTIC_CATS">
+ <key column="CAT"/>
+ <property name="name" type="string"/>
+ </joined-subclass>
+ </class>
+
+ <class name="eg.Dog">
+ <!-- ±±ÉDogÌ}bsOð«Ü· -->
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ p³Ì}bsOÉÖ·éîñÍ <xref linkend="inheritance"/> ð©Ä¾³¢B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-unionsubclass" revision="2">
+ <title>union-subclass</title>
+
+ <para>
+ 3ÂÚÌIðÍAp³KwÌïÛNXÌÝðe[uÉ}bsO·é±ÆÅ·
+ (the table-per-concrete-classíª)B
+ »ê¼êÌe[uÍp³ÌóÔðÜß·×ÄÌNXÌi±óÔðè`µÜ·B
+ HibernateÅÍ»ÌlÈp³KwªK¸µàKvÅÍ èܹñB
+ PÉ»ê¼êÌNXðA
+ ÊXÌ <literal><class></literal> é¾ðgÁÄ}bsO·é±ÆªÅ«Ü·B
+ µ©µ|[tBbNÈÖA(á¦Î KwÌX[p[NXÖÌÖA)ðg¢½¢ÈçA
+ <literal><union-subclass></literal> }bsOðg¤Kvª èÜ·B
+
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="unionsubclass1" coords="2 45"/>
+ <area id="unionsubclass2" coords="3 45"/>
+ <area id="unionsubclass3" coords="4 45"/>
+ <area id="unionsubclass4" coords="5 45"/>
+ </areaspec>
+ <programlisting><![CDATA[<union-subclass
+ name="ClassName"
+ table="tablename"
+ proxy="ProxyInterface"
+ lazy="true|false"
+ dynamic-update="true|false"
+ dynamic-insert="true|false"
+ schema="schema"
+ catalog="catalog"
+ extends="SuperclassName"
+ abstract="true|false"
+ persister="ClassName"
+ subselect="SQL expression"
+ entity-name="EntityName"
+ node="element-name">
+
+ <property .... />
+ .....
+</union-subclass>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="unionsubclass1">
+ <para>
+ <literal>name</literal>FTuNXÌ®SCü³ê½NX¼B
+ </para>
+ </callout>
+ <callout arearefs="unionsubclass2">
+ <para>
+ <literal>table</literal> :TuNXe[u̼OB
+ </para>
+ </callout>
+ <callout arearefs="unionsubclass3">
+ <para>
+ <literal>proxy</literal> (IvV):
+ xú»vLVÉgp·éNXâC^[tFCXðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="unionsubclass4">
+ <para>
+ <literal>lazy</literal> (IvV, ftHgÍ <literal>true</literal> ):
+ <literal>lazy="false"</literal> Æ·éÆAxtFb`ªgpūܹñB
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ ±Ì}bsOíªÅͯÊJâL[JÍKv èܹñB
+ </para>
+
+ <para>
+ p³Ì}bsOÉÖ·éîñÍ <xref linkend="inheritance"/> ð©Ä¾³¢B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-join" revision="3">
+ <title>join</title>
+
+ <para>
+ <literal><join></literal> vfðg¤±ÆÅA
+ PÂÌNXÌvpeBð¢ÂàÌe[uÉ}bsO·é±ÆªÅ«Ü·B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="join1" coords="2 50"/>
+ <area id="join2" coords="3 50"/>
+ <area id="join3" coords="4 50"/>
+ <area id="join4" coords="5 50"/>
+ <area id="join5" coords="6 50"/>
+ <area id="join6" coords="7 50"/>
+ </areaspec>
+ <programlisting><![CDATA[<join
+ table="tablename"
+ schema="owner"
+ catalog="catalog"
+ fetch="join|select"
+ inverse="true|false"
+ optional="true|false">
+
+ <key ... />
+
+ <property ... />
+ ...
+</join>]]></programlisting>
+
+ <calloutlist>
+ <callout arearefs="join1">
+ <para>
+ <literal>table</literal> :µ½e[u̼O
+ </para>
+ </callout>
+ <callout arearefs="join2">
+ <para>
+ <literal>schema</literal> (IvV):
+ [gÌ <literal><hibernate-mapping></literal> vfÅwèµ½XL[}¼ð
+ I[o[ChµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="join3">
+ <para>
+ <literal>catalog</literal> (IvV):
+ [gÌ <literal><hibernate-mapping></literal> vfÅwèµ½J^O¼ð
+ I[o[ChµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="join4">
+ <para>
+ <literal>fetch</literal> (IvV - ftHgÍ <literal>join</literal> ):
+ <literal>join</literal> ðÝèµ½êA
+ HibernateÍftHgÅANXâX[p[NXÅè`³ê½ <literal><join></literal>
+ ðõ·éÌÉàðg¢ATuNXÅè`³ê½ <literal><join></literal>
+ ðõ·éÌÉOðg¢Ü·B
+ <literal>select</literal> ðÝèµ½êÉÍA
+ HibernateÍTuNXÅè`³ê½ <literal><join></literal>
+ ÌIðÉIððg¢Ü·B±ÌêA
+ sªTuNXÌCX^Xðã\·é±Æªí©Á½êÉÌÝs³êÜ·B
+ àÍNXâ»ÌX[p[NXÅè`³ê½ <literal><join></literal> ðõ
+ ·é½ßÉgpµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="join5">
+ <para>
+ <literal>inverse</literal> (IvV - ftHgÍ <literal>false</literal> ):
+ àµÂ\Å êÎAHibernateͱÌÅè`³êÄ¢évpeBÉε
+ }üâXVðs¢Ü¹ñB
+ </para>
+ </callout>
+ <callout arearefs="join6">
+ <para>
+ <literal>optional</literal> (IvV - ftHgÍ <literal>false</literal> ):
+ àµÂ\Å êÎAHibernateͱÌÅè`³ê½vpeBªnullÅÈ¢êÉÌÝ
+ sð}üµA»ÌvpeBÌõÉÍíÉOðgpµÜ·B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ á¦ÎlÌAhXÌîñ𪣵½e[uÉ}bsO·é±ÆªÂ\Å·
+ (·×ÄÌvpeBÉεÄl^ÌZ}eBNXð۵ܷ)B
+ </para>
+
+ <programlisting><![CDATA[<class name="Person"
+ table="PERSON">
+
+ <id name="id" column="PERSON_ID">...</id>
+
+ <join table="ADDRESS">
+ <key column="ADDRESS_ID"/>
+ <property name="address"/>
+ <property name="zip"/>
+ <property name="country"/>
+ </join>
+ ...]]></programlisting>
+
+ <para>
+ ±ÌÁ¥ÍµÎµÎKV[f[^fÉεÄÌÝLpÅ·ªA
+ NXæèàÈ¢e[uÆA«ßÌש¢hCfð§µÜ·B
+ µ©µãÅà¾·éæ¤ÉAPÂÌNXKwÅp³Ì}bsOíªðØèÖ¦éÉÍLpÅ·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-key">
+ <title>key</title>
+
+ <para>
+ ¡ÜŽx© <literal><key></literal> vfªoīܵ½B
+ ±ÌvfÍVµ¢e[uÖÌðè`µ½èA
+ e[uÅOL[ðè`µ½è·éevfÌDZÉÅà»êA
+ IWie[uÌåL[ðQƵܷB
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="key1" coords="2 50"/>
+ <area id="key2" coords="3 50"/>
+ <area id="key3" coords="4 50"/>
+ <area id="key4" coords="5 50"/>
+ <area id="key5" coords="6 50"/>
+ <area id="key6" coords="7 50"/>
+ </areaspec>
+ <programlisting><![CDATA[<key
+ column="columnname"
+ on-delete="noaction|cascade"
+ property-ref="propertyName"
+ not-null="true|false"
+ update="true|false"
+ unique="true|false"
+/>]]></programlisting>
+
+ <calloutlist>
+ <callout arearefs="key1">
+ <para>
+ <literal>column</literal> (IvV):OL[J̼OB
+ lXgµ½ <literal><column></literal> JÉæÁÄàwè³êÜ·B
+ </para>
+ </callout>
+ <callout arearefs="key2">
+ <para>
+ <literal>on-delete</literal> (IvV, ftHgÍ <literal>noaction</literal>):
+ OL[§ñªf[^x[XxÅJXP[híªÂ\©Ç¤©ðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="key3">
+ <para>
+ <literal>property-ref</literal> (IvV):
+ IWie[uÌåL[ÅÍÈ¢JðQÆ·éOL[ðwèµÜ·
+ (KV[f[^ÉεÄñ³êÜ·)B
+ </para>
+ </callout>
+ <callout arearefs="key4">
+ <para>
+ <literal>not-null</literal> (IvV):
+ OL[JªnulllðeµÈ¢±ÆðwèµÜ·
+ (±Ì±ÆÍOL[ªåL[ÌêŠ鱯ðÃÙIɦµÜ·)B
+ </para>
+ </callout>
+ <callout arearefs="key5">
+ <para>
+ <literal>update</literal> (IvV):
+ OL[ðµÄXVµÄÍÈçÈ¢±ÆðwèµÜ·
+ (±Ì±ÆÍOL[ªåL[ÌêŠ鱯ðÃÙIɦµÜ·)B
+
+ </para>
+ </callout>
+ <callout arearefs="key6">
+ <para>
+ <literal>unique</literal> (IvV):
+ OL[ªj[N§ñðÂ׫Š鱯ðwèµÜ·
+ (±Ì±ÆÍOL[ªåL[ÌêŠ鱯ðÃÙIɦµÜ·)B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ íÌptH[}XªdvÅ éVXeÉÍA
+ ·×ÄÌL[ð <literal>on-delete="cascade"</literal> Æè`·é±Æð§µÜ·B
+ »¤·é±ÆÅHibernateÍA<literal>DELETE</literal> ¶ðñs·éãíèÉA
+ f[^x[XxÌ <literal>ON CASCADE DELETE</literal> §ñðgpµÜ·B
+ ±ÌÁ¥Ío[Wt¯çê½f[^ÉηéHibernateÌÊíÌyÏIbNíªð
+ ³·éÆ¢¤±ÆÉӵľ³¢B
+ </para>
+
+ <para>
+ <literal>not-null</literal> Æ <literal>update</literal> ®«ÍAPûüêνÖAÌÉÍLpÅ·B
+ PûüêνÖAðnullðeµÈ¢OL[É}bsO·éÆ«ÍA
+ <literal><key not-null="true"></literal> ðgÁÄL[Jðé¾
+ <emphasis> µÈÄÍÈèܹñ</emphasis> B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-column" revision="4">
+ <title>column Æ formula vf</title>
+ <para>
+ <literal>column</literal> ®«ðLqÅ«éCÓÌ}bsOvfÍܽA
+ <literal><column></literal> TuvfàLqūܷB
+ ¯lÉ <literal><formula></literal> à <literal>formula</literal> ®«ÌãÖèiÅ·B
+ </para>
+
+ <programlisting><![CDATA[<column
+ name="column_name"
+ length="N"
+ precision="N"
+ scale="N"
+ not-null="true|false"
+ unique="true|false"
+ unique-key="multicolumn_unique_key_name"
+ index="index_name"
+ sql-type="sql_type_name"
+ check="SQL expression"
+ default="SQL expression"/>]]></programlisting>
+
+ <programlisting><![CDATA[<formula>SQL expression</formula>]]></programlisting>
+
+ <para>
+ ¯¶vpeBâÖAÌ}bsOÌÅA
+ <literal>column</literal> Æ <literal>formula</literal> ®«ðgÝí¹é±ÆªÅ«Ü·B
+ á¦ÎAÁêÈðÈÇÅ·B
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="homeAddress" class="Address"
+ insert="false" update="false">
+ <column name="person_id" not-null="true" length="10"/>
+ <formula>'MAILING'</formula>
+</many-to-one>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-import">
+ <title>import</title>
+
+ <para>
+ AvP[Vɯ¶¼OÌ2ÂÌi±NXª èA
+ HibernateNGÅ®SCü³ê½ipbP[WÌj¼Oðw赽ȢƼèµÜ·B
+ »Ìæ¤ÈêÍ <literal>auto-import="true"</literal> Éç¸A
+ NXªuC|[gv³ê½àÌŠ鯾¦Å«Ü·B
+ ¾¦IÉ}bsO³êĢȢNXâC^[tFCXų¦àC|[gūܷB
+ </para>
+
+ <programlisting><![CDATA[<import class="java.lang.Object" rename="Universe"/>]]></programlisting>
+
+ <programlistingco>
+ <areaspec>
+ <area id="import1" coords="2 40"/>
+ <area id="import2" coords="3 40"/>
+ </areaspec>
+ <programlisting><![CDATA[<import
+ class="ClassName"
+ rename="ShortName"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="import1">
+ <para>
+ <literal>class</literal>FJavaNXÌ®SCü³ê½NX¼B
+ </para>
+ </callout>
+ <callout arearefs="import2">
+ <para>
+ <literal>rename</literal>iIvV - ftHgÍCü³êĢȢNX¼jF
+ NG¾êÅgíêé¼OB
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ </sect2>
+
+ <sect2 id="mapping-types-anymapping" revision="2">
+ <title>any</title>
+
+ <para>
+ vpeB}bsOÉͳçÉà¤1ÂÌ^ª èÜ·B
+ <literal><any></literal> }bsOvfÍA
+ ¡Ìe[u©çNXÖÌ|[tBbNÈÖAðè`µÜ·B
+ ±Ì^Ì}bsOÉÍK¸¡ÌJªKvÅ·B1ÔÚÌJÍÖAGeBeBÌ^ð۵ܷB
+ cèÌJͯÊqð۵ܷB±ÌíÞÌÖAÉÍOL[§ñðwè·é±ÆÍūܹñB
+ »Ì½ß±êÍÅàgíê鱯ÌÈ¢i|[tBbNÈjÖAÌ}bsOû@Å·B
+ ñíÉÁÊÈêiá¦ÎA¸Oâ[UZbVf[^ÈÇ)ÉÀÁÄA±êðg¤×«Å·B
+ </para>
+
+ <para>
+ <literal>meta-type</literal> ÉæèA
+ AvP[VÍJX^^ðwèūܷB±ÌJX^^Í
+ f[^x[XJÌlðA<literal>id-type</literal> Åwèµ½^Ì
+ ¯ÊqvpeBðÁ½i±NXÖ}bsOµÜ·B
+ meta-typeÌl©çNX¼ÖÌ}bsOðwèµÈ¯êÎÈèܹñB
+ </para>
+
+ <programlisting><![CDATA[<any name="being" id-type="long" meta-type="string">
+ <meta-value value="TBL_ANIMAL" class="Animal"/>
+ <meta-value value="TBL_HUMAN" class="Human"/>
+ <meta-value value="TBL_ALIEN" class="Alien"/>
+ <column name="table_name"/>
+ <column name="id"/>
+</any>]]></programlisting>
+
+ <programlistingco>
+ <areaspec>
+ <area id="any1" coords="2 50"/>
+ <area id="any2" coords="3 50"/>
+ <area id="any3" coords="4 50"/>
+ <area id="any4" coords="5 50"/>
+ <area id="any5" coords="6 50"/>
+ <area id="any6" coords="7 50"/>
+ </areaspec>
+ <programlisting><![CDATA[<any
+ name="propertyName"
+ id-type="idtypename"
+ meta-type="metatypename"
+ cascade="cascade_style"
+ access="field|property|ClassName"
+ optimistic-lock="true|false"
+>
+ <meta-value ... />
+ <meta-value ... />
+ .....
+ <column .... />
+ <column .... />
+ .....
+</any>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="any1">
+ <para>
+ <literal>name</literal>FvpeB¼B
+ </para>
+ </callout>
+ <callout arearefs="any2">
+ <para>
+ <literal>id-type</literal>F¯ÊqÌ^B
+ </para>
+ </callout>
+ <callout arearefs="any3">
+ <para>
+ <literal>meta-type</literal>iIvV - ftHgÍ <literal>string</literal> jF
+ fBXN~l[^}bsOųê½^
+ </para>
+ </callout>
+ <callout arearefs="any4">
+ <para>
+ <literal>cascade</literal>iIvV - ftHgÍ <literal>none</literal> jF
+ JXP[hÌX^CB
+ </para>
+ </callout>
+ <callout arearefs="any5">
+ <para>
+ <literal>access</literal>iIvV - ftHgÍ <literal>property</literal> jF
+ vpeBÌlÖÌANZXÉHibernateªg¤íªB
+ </para>
+ </callout>
+ <callout arearefs="any6">
+ <para>
+ <literal>optimistic-lock</literal> (IvV - ftHgÍ <literal>true</literal> ):
+ ±ÌvpeBÌXVÉyÏbNÌæ¾ðv·é©Ç¤©ðwèµÜ·B
+ ¾¢·¦êÎA±ÌvpeBª_[eBŠ鯫Éo[Wðâ·×«©ðè`µÜ·B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="mapping-types">
+ <title>HibernateÌ^</title>
+
+ <sect2 id="mapping-types-entitiesvalues" revision="1">
+ <title>GeBeBÆl</title>
+
+ <para>
+ i±T[rXÉÖíélXÈJava¾êxÌIuWFNgÌUé¢ðð·é½ßÉÍA
+ IuWFNgð2ÂÌO[vɪ¯éKvª èÜ·F
+ </para>
+
+ <para>
+ <emphasis> GeBeB</emphasis> ÍGeBeBÖÌQÆðÛ·éA
+ ¼Ì·×ÄÌIuWFNg©çƧµÄ¶ÝµÜ·B
+ QƳêÈ¢IuWFNgªKx[WRNg³êĵܤ«¿ðÂÊíÌJavafÆA
+ ±êðä×ÄÝľ³¢B
+ ieGeBeB©çqÖAZ[uÆíª <emphasis>JXP[h</emphasis> ³ê¤é±Æð¢Äj
+ GeBeB;¦IÉZ[uܽÍí³êȯêÎÈèܹñB
+ ±êÍBÂ\«ÉæéIuWFNgi±»ÌODMGfÆÍÙÈÁĢܷB
+ åKÍÈVXeÅAvP[VIuWFNgªÊÇÌæ¤Égíêé©Éæè§ÚÉεܷB
+ GeBeBÍzÂÆQÆÌ¤LðT|[gµÜ·B
+ ܽ»êçÍo[Wt¯·é±ÆàūܷB
+
+ </para>
+
+ <para>
+ GeBeBÌi±óÔͼÌGeBeBâ <emphasis>l</emphasis> ^Ì
+ CX^XÖÌQÆ©ç\¬³êÜ·B
+ lÍv~eBuARNV(RNVÌàÅÍÈ)A
+ R|[lgAsÏIuWFNgÅ·B
+ GeBeBÆÍá¢AlÍiÁÉRNVÆR|[lgɨ¢ÄjA
+ BÂ\«Éæéi±»âíª <emphasis>síêÜ·</emphasis> B
+ lIuWFNgiÆv~eBujÍAïÜ·éGeBeBÆêÉi±»âíªsíêéÌÅA
+ »êçðƧÉo[Wt¯·é±ÆÍūܹñB
+ lÉÍÆ§µ½ACfeBeBªÈ¢ÌÅA
+ ¡ÌGeBeBâRNVª±êð¤L·é±ÆÍūܹñB
+ </para>
+
+ <para>
+ ±êÜÅui±NXvÆ¢¤¾tðGeBeBÌÓ¡ÅgÁīܵ½B
+ ±ê©ç໤µÄ¢«Ü·B
+ µ§É¾¤ÆAi±óÔðÂ[Uè`ÌNXÌ·×Ī
+ GeBeBÆ¢¤í¯ÅÍ èܹñB
+ <emphasis>R|[lg</emphasis> ÍlÌZ}eBNXðÂ[Uè`NXÅ·B
+ <literal>java.lang.String</literal> ^ÌvpeBàܽlÌZ}eBNXð¿Ü·B
+ è`·éÈçAJDKÅñ³êÄ¢é·×ÄÌJavaÌ^(NX)ªlÌZ}eBNXðÂÆ¢¦Ü·B
+ êû[Uè`^ÍAGeBeBâl^ÌZ}eBNXÆÆàÉ}bsOūܷB
+ ±ÌèÍAvP[VJÒæÅ·B
+ »ÌNXÌPÂÌCX^XÖ̤LQÆÍA
+ hCfàÌGeBeBNXÉηéÇ¢qgÉÈèÜ·B
+ êû¬WñâWñÍAÊíl^ÖÏ·³êÜ·B
+
+ </para>
+
+ <para>
+ {hL
gðʵÄA½xà±ÌTOðæèã°Ü·B
+ </para>
+
+ <para>
+ Java^ÌVXe(àµÍJÒªè`µ½GeBeBÆl^)ð
+ SQL/f[^x[X^ÌVXeÉ}bsO·é±ÆÍﵢŷB
+ HibernateÍQÂÌVXeÌ˯´ðñµÜ·B
+ GeBeBÉεÄÍ
+ <literal><class></literal> â <literal><subclass></literal> ÈÇðgpµÜ·B
+ l^ÉεÄÍ <literal><property></literal> â
+ <literal><component></literal> ÈÇðAÊí <literal>type</literal> ÆÆàÉg¢Ü·B
+ ±Ì®«ÌlÍHibernateÌ <emphasis>}bsO^</emphasis> ̼OÅ·B
+ HibernateÍ(WJDKÌl^ÉεÄ)½Ì©RÈ}bsOðñµÜ·B
+ ãũ鿤ÉA©gÌ}bsO^ðLqµA¯lÉJX^ÌÏ·íªðÀ·é±ÆªÅ«Ü·B
+ </para>
+
+ <para>
+ RNVðgÝÝÌHibernateÌ^Í·×ÄAnullZ}eBNXðT|[gµÜ·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-types-basictypes" revision="3">
+ <title>î{IÈ^</title>
+
+ <para>
+ gÝÝÌ <emphasis>î{IÈ}bsO^</emphasis> ÍåÜ©ÉÈºÌæ¤Éª¯çêÜ·B
+
+ <variablelist>
+ <varlistentry>
+ <term><literal>integer, long, short, float, double, character, byte,
+ boolean, yes_no, true_false</literal></term>
+ <listitem>
+ <para>
+ JavaÌv~eBuâbp[NX©çKØÈix_[ÅLÌj
+ SQLJ^ÖÌ^}bsOB
+ <literal>boolean, yes_no</literal> Æ <literal>true_false</literal> ÍA
+ ·×ÄJavaÌ <literal>boolean</literal>
+ Ü½Í <literal>java.lang.Boolean</literal> ÌãÖGR[hÅ·B
+
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>string</literal></term>
+ <listitem>
+ <para>
+ <literal>java.lang.String</literal> ©ç <literal>VARCHAR</literal>
+ iܽÍOracleÌ <literal>VARCHAR2</literal> jÖÌ^}bsOB
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>date, time, timestamp</literal></term>
+ <listitem>
+ <para>
+ <literal>java.util.Date</literal> Æ»ÌTuNX©çSQL^Ì <literal>DATE</literal>,
+ <literal>TIME</literal> , <literal>TIMESTAMP</literal> iܽͻêçÆ¿ÈàÌj
+ ÖÌ^}bsOB
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>calendar, calendar_date</literal></term>
+ <listitem>
+ <para>
+ <literal>java.util.Calendar</literal> ©çSQL^ Ìu <literal>TIMESTAMP</literal> ,
+ <literal>DATE</literal> (ܽͻêçÆ¿ÈàÌjÖÌ^}bsOB
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>big_decimal, big_integer</literal></term>
+ <listitem>
+ <para>
+ <literal>java.math.BigDecimal</literal> Æ <literal>java.math.BigInteger</literal>
+ ©ç <literal>NUMERIC</literal>iܽÍOracleÌ <literal>NUMBER</literal> jÖÌ^}bsOB
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>locale, timezone, currency</literal></term>
+ <listitem>
+ <para>
+ <literal>java.util.Locale</literal> , <literal>java.util.TimeZone</literal> ,
+ <literal>java.util.Currency</literal> ©ç <literal>VARCHAR</literal>
+ iܽÍOracleÌ <literal>VARCHAR2</literal> jÖÌ^}bsOB
+ <literal>Locale</literal> Æ <literal>Currency</literal> ÌCX^XÍA
+ »êçÌISOR[hÉ}bsO³êÜ·B
+ <literal>TimeZone</literal> ÌCX^XÍA
+ »êçÌ <literal>ID</literal> É}bsO³êÜ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>class</literal></term>
+ <listitem>
+ <para>
+ <literal>java.lang.Class</literal> ©ç <literal>VARCHAR</literal>
+ iܽÍOracleÌ <literal>VARCHAR2</literal> jÖÌ^}bsOB
+ <literal>Class</literal> ͻ̮SCü³ê½¼OÉ}bsO³êÜ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>binary</literal></term>
+ <listitem>
+ <para>
+ oCgzñÍAKØÈSQLÌoCi^É}bsO³êÜ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>text</literal></term>
+ <listitem>
+ <para>
+ ·¢Java¶ñÍASQLÌ <literal>CLOB</literal> ܽÍ
+ <literal>TEXT</literal> ^É}bsO³êÜ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>serializable</literal></term>
+ <listitem>
+ <para>
+ VACYÂ\ÈJava^ÍAKØÈSQLÌoCi^É}bsO³êÜ·B
+ ftHgÅî{^ÅÍÈ¢VACYÂ\ÈJavaNXâ
+ C^[tFCX̼Oðwè·é±ÆÅA
+ HibernateÌ^ð <literal>serializable</literal> Æ·é±ÆàūܷB
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>clob, blob</literal></term>
+ <listitem>
+ <para>
+ JDBCNX <literal>java.sql.Clob</literal> Æ <literal>java.sql.Blob</literal>
+ Éηé^}bsOB
+ blobâclobIuWFNgÍgUNVÌOÅÍÄpūȢ½ßA
+ AvP[VÉæÁÄÍsÖ©àµêܹñB
+ i³çÉÍhCoT|[gªêѵĢܹñBj
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date,
+ imm_serializable, imm_binary</literal>
+ </term>
+ <listitem>
+ <para>
+ ÙÆñÇÌêÉÂÏÅ éJavaÌ^Éηé^}bsOB
+ HibernateÍsÏÈJavaÌ^ÉεÄÍÅK»ðs¢A
+ AvP[VÍ»êðsÏIuWFNgƵĵ¢Ü·B
+ á¦Î <literal>imm_timestamp</literal> ƵÄ}bvµ½CX^XÉεÄA
+ <literal>Date.setTime()</literal> ðÄÑoµÄÍÈèܹñB
+ vpeBÌlðÏXµ»ÌÏXði±»·é½ßÉÍA
+ AvP[VÍvpeBÉεÄVµ¢(¯êÅÈ¢)IuWFNgðèÄȯêÎÈèܹñB
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </para>
+
+ <para>
+ GeBeBÆRNVÌj[NȯÊqÍA<literal>binary</literal> , <literal>blob</literal> ,
+ <literal>clob</literal> ðAÇñÈî{^Åà\¢Ü¹ñB
+ i¡¯ÊqÅà\¢Ü¹ñBȺð©Ä¾³¢Bj
+ </para>
+
+ <para>
+ î{IÈl^ÉÍA<literal>org.hibernate.Hibernate</literal> Åè`³ê½
+ <literal>Type</literal> 誻ê¼ê èÜ·B
+ á¦ÎA<literal>Hibernate.STRING</literal> Í <literal>string</literal> ^ð\»µÄ¢Ü·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-types-custom" revision="2">
+ <title>JX^^</title>
+
+ <para>
+ JҪƩÌl^ðì¬·é±ÆÍAärIÈPÅ·B
+ á¦ÎA<literal>java.lang.BigInteger</literal> ^ÌvpeBð
+ <literal>VARCHAR</literal> JÉi±»µ½¢©àµêܹñB
+ Hibernateͱ̽ßÌgÝÝ^ðpӵĢܹñB
+ µ©µJX^^ÍAvpeBiܽÍRNVÌvfjð1ÂÌe[uJÉ
+ }bsO·éÌɧÀÍ èܹñB
+ »Ì½ßá¦ÎA<literal>java.lang.String</literal> ^Ì
+ <literal>getName()</literal> / <literal>setName()</literal>
+ JavavpeBð <literal>FIRST_NAME</literal> , <literal>INITIAL</literal>, <literal>SURNAME</literal>
+ JÉi±»Å«Ü·B
+ </para>
+
+ <para>
+ JX^^ðÀ·éÉÍA<literal>org.hibernate.UserType</literal> ܽÍ
+ <literal>org.hibernate.CompositeUserType</literal> ðÀµA
+ ^Ì®SCü³ê½¼OðgÁÄvpeBðè`µÜ·B
+ ÇÌæ¤ÈíÞÌà̪Â\©ð²×éÉÍA
+ <literal>org.hibernate.test.DoubleStringType</literal> ðmFµÄ¾³¢B
+ </para>
+
+ <programlisting><![CDATA[<property name="twoStrings" type="org.hibernate.test.DoubleStringType">
+ <column name="first_string"/>
+ <column name="second_string"/>
+</property>]]></programlisting>
+
+ <para>
+ <literal><column></literal> ^OÅA
+ vpeBð¡ÌJÖ}bsOū鱯Éڵľ³¢B
+ </para>
+
+ <para>
+ <literal>CompositeUserType</literal> , <literal>EnhancedUserType</literal> ,
+ <literal>UserCollectionType</literal> , <literal>UserVersionType</literal>
+ C^[tFCXÍAæèÁêÈgp@ÉεÄÌT|[gðñµÜ·B
+ </para>
+
+ <para>
+ }bsOt@CàÅ <literal>UserType</literal> Öp[^ðñūܷB
+ ±Ì½ßÉÍA<literal>UserType</literal> Í
+ <literal>org.hibernate.usertype.ParameterizedType</literal> ðÀµÈÄÍÈèܹñB
+ JX^^p[^ðñ·é½ßÉA
+ }bsOt@CàÅ <literal><type></literal> vfðgpūܷB
+ </para>
+
+ <programlisting><![CDATA[<property name="priority">
+ <type name="com.mycompany.usertypes.DefaultValueIntegerType">
+ <param name="default">0</param>
+ </type>
+</property>]]></programlisting>
+
+ <para>
+ <literal>UserType</literal> ÍA
+ øÆµÄn³ê½ <literal>Properties</literal> IuWFNg©çA
+ <literal>default</literal> Åwèµ½p[^Éηélðõ·é±ÆªÅ«Ü·B
+ </para>
+
+ <para>
+ ÁèÌ <literal>UserType</literal> ðpÉÉgp·éÈçÎAZ¢¼Oðè`·éÆÖÉÈéŵå¤B
+ <literal><typedef></literal> vfðgÁÄ±Ìæ¤È±Æªs¦Ü·B
+ TypedefsÍJX^^ɼOðèÄÜ·B
+ »Ì^ªp[^ðÂÈçÎA
+ p[^ÌftHglÌXgðÜÞ±ÆàūܷB
+ </para>
+
+ <programlisting><![CDATA[<typedef class="com.mycompany.usertypes.DefaultValueIntegerType" name="default_zero">
+ <param name="default">0</param>
+</typedef>]]></programlisting>
+
+ <programlisting><![CDATA[<property name="priority" type="default_zero"/>]]></programlisting>
+
+ <para>
+ vpeBÌ}bsOÅ^p[^ðg¤±ÆÅA
+ typedefÅñ³ê½p[^ð»ÌsxI[o[Ch·é±ÆªÂ\Å·B
+
+ </para>
+
+ <para>
+ HibernateÌL¢gÝÝ^ÆR|[lgÉηéT|[gÍA
+ JX^^ðßÁ½É <emphasis>gíÈ¢</emphasis> Æ¢¤±ÆðÓ¡µÜ·B
+ »êÅàȨAAvP[VÅpo·é(GeBeBÅÍÈ¢)NXÉηéJX^^ÌgpÍA
+ æ¢âèûÅ éÆÝȳêÜ·B
+ á¦Î <literal>MonetaryAmount</literal> NXÍR|[lgƵÄÈPÉ}bsOūܷªA
+ <literal>CompositeUserType</literal> ÌÇ¢óâÅ·B
+ JX^^ðgp·é®@Ì1ÂÍۻŷB
+ JX^^ðg¤±ÆÅAÊÝðÇÌæ¤É\»µæ¤Æà
+ }bsOhL
gÍN±è¤éÏ»ÉÎūܷB
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+
+ <sect1 id="mapping-entityname">
+ <title>PÂÌNXÉPÂÈãÌ}bsO</title>
+ <para>
+ éi±NXÉAêÂÈãÌ}bsOðñ·é±ÆªoÜ·B
+ ±ÌêA}bsO·éQÂÌGeBeBÌCX^Xð¾mÉ·é½ßÉA
+ <emphasis>GeBeB¼</emphasis> ðwèµÈ¯êÎÈèܹñ
+ (ftHgÅÍGeBeB¼ÍNX¼Æ¯¶Å·B)B
+ i±IuWFNgðµ¤Æ«ANGð«ÞÆ«A
+ wè³ê½GeBeBÖÌÖAð}bsO·éÆ«ÉÍA
+ HibernateÅÍGeBeB¼ðwèµÈ¯êÎÈèܹñB
+ </para>
+
+ <programlisting><![CDATA[<class name="Contract" table="Contracts"
+ entity-name="CurrentContract">
+ ...
+ <set name="history" inverse="true"
+ order-by="effectiveEndDate desc">
+ <key column="currentContractId"/>
+ <one-to-many entity-name="HistoricalContract"/>
+ </set>
+</class>
+
+<class name="Contract" table="ContractHistory"
+ entity-name="HistoricalContract">
+ ...
+ <many-to-one name="currentContract"
+ column="currentContractId"
+ entity-name="CurrentContract"/>
+</class>]]></programlisting>
+
+ <para>
+ ÖAª<literal>class</literal> ÌãíèÉ <literal>entity-name</literal> ðgÁÄA
+ ÇÌæ¤Éwè³êéÌ©Éڵľ³¢B
+ </para>
+
+ </sect1>
+
+ <sect1 id="mapping-quotedidentifiers">
+ <title>obNNH[gÅÍñ¾ SQL ¯Êq</title>
+ <para>
+ }bsOhL
gÅe[uâJ̼OðobNNH[gÅÍÞ±ÆÅA
+ HibernateŶ¬³ê½SQL̯Êqðøp³¹é±ÆªÅ«Ü·B
+ HibernateÍSQLÌ <literal>Dialect</literal> ÉηéA³µ¢øpX^Cðg¢Ü·
+ iÊÍ_uNH[gÅ·ªASQL ServerÅÍ©¬ÊAMySQLÅÍobNNH[gÅ·jB
+ </para>
+
+ <programlisting><![CDATA[<class name="LineItem" table="`Line Item`">
+ <id name="id" column="`Item Id`"/><generator class="assigned"/></id>
+ <property name="itemNumber" column="`Item #`"/>
+ ...
+</class>]]></programlisting>
+
+ </sect1>
+
+
+ <sect1 id="mapping-alternatives">
+ <title>^f[^ÌãÖèi</title>
+
+ <para>
+ XMLÌLqÈOÉA
+ HibernateÅÍO/R}bsOÌ^f[^ðè`·éãÖû@ª èÜ·B
+ </para>
+
+ <sect2 id="mapping-xdoclet">
+ <title>XDoclet }[NAbvÌgp</title>
+
+ <para>
+ ½ÌHibernate[UÍXDocletÌ <literal>@hibernate.tags</literal> ðgÁÄA
+ \[XR[hàɼÚ}bsOîñðßÞ±ÆðDÝÜ·B
+ ±ê͵§É¾¦ÎXDoclet̪ìÈÌÅA{hL
gÅͱÌû@ðÎÛÆÍµÜ¹ñB
+ µ©µXDocletðgÁ½ÈºÌ <literal>Cat</literal> }bsOÌáð¦µÜ·B
+ </para>
+
+ <programlisting><![CDATA[package eg;
+import java.util.Set;
+import java.util.Date;
+
+/**
+ * @hibernate.class
+ * table="CATS"
+ */
+public class Cat {
+ private Long id; // identifier
+ private Date birthdate;
+ private Cat mother;
+ private Set kittens
+ private Color color;
+ private char sex;
+ private float weight;
+
+ /*
+ * @hibernate.id
+ * generator-class="native"
+ * column="CAT_ID"
+ */
+ public Long getId() {
+ return id;
+ }
+ private void setId(Long id) {
+ this.id=id;
+ }
+
+ /**
+ * @hibernate.many-to-one
+ * column="PARENT_ID"
+ */
+ public Cat getMother() {
+ return mother;
+ }
+ void setMother(Cat mother) {
+ this.mother = mother;
+ }
+
+ /**
+ * @hibernate.property
+ * column="BIRTH_DATE"
+ */
+ public Date getBirthdate() {
+ return birthdate;
+ }
+ void setBirthdate(Date date) {
+ birthdate = date;
+ }
+ /**
+ * @hibernate.property
+ * column="WEIGHT"
+ */
+ public float getWeight() {
+ return weight;
+ }
+ void setWeight(float weight) {
+ this.weight = weight;
+ }
+
+ /**
+ * @hibernate.property
+ * column="COLOR"
+ * not-null="true"
+ */
+ public Color getColor() {
+ return color;
+ }
+ void setColor(Color color) {
+ this.color = color;
+ }
+ /**
+ * @hibernate.set
+ * inverse="true"
+ * order-by="BIRTH_DATE"
+ * @hibernate.collection-key
+ * column="PARENT_ID"
+ * @hibernate.collection-one-to-many
+ */
+ public Set getKittens() {
+ return kittens;
+ }
+ void setKittens(Set kittens) {
+ this.kittens = kittens;
+ }
+ // addKitten not needed by Hibernate
+ public void addKitten(Cat kitten) {
+ kittens.add(kitten);
+ }
+
+ /**
+ * @hibernate.property
+ * column="SEX"
+ * not-null="true"
+ * update="false"
+ */
+ public char getSex() {
+ return sex;
+ }
+ void setSex(char sex) {
+ this.sex=sex;
+ }
+}]]></programlisting>
+
+ <para>
+ HibernateÌEFuTCgÉÍAXDocletÆHibernateÉÖ·éTvª½ èÜ·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-annotations" revision="2">
+ <title>JDK 5.0 Ame[VÌgp</title>
+
+ <para>
+ JDK5.0ÅÍ^CvZ[t©ÂRpCÉ`FbNÅ«éA
+ ¾êxÌXDocletX^CÌAme[Vð±üµÜµ½B
+ ±ÌJjYÍXDocletÌAme[VæèàÍÅAc[âIDEཪT|[gµÄ¢Ü·B
+ á¦ÎIntelliJ IDEAÍAJDK5.0ÉAme[VÌ©®â®Æ\¶Ì²\¦ðT|[gµÄ¢Ü·B
+ EJBdl (JSR-220)ÌVµ¢o[WÅÍAGeBeBr[ÉηéåvÈ^f[^JjYƵÄ
+ JDK5.0ÌAme[VðgpµÄ¢Ü·B
+ Hibernate3ÅÍJSR-220 (i±»API)Ì <literal>EntityManager</literal> ðÀµA
+ ^f[^}bsOÉηéT|[gÍA
+ Ê_E[hÌ <emphasis>Hibernate Annotations</emphasis> pbP[WÉæèpÂ\Å·B
+ ±êÍEJB3(JSR-220)ÆHibernate3Ì^f[^ðÇ¿çàT|[gµÄ¢Ü·B
+
+ </para>
+
+ <para>
+ ȺÍEJBÌGeBeBr[ƵÄß³ê½POJONXÌáÅ·B
+ </para>
+
+ <programlisting><![CDATA[@Entity(access = AccessType.FIELD)
+public class Customer implements Serializable {
+
+ @Id;
+ Long id;
+
+ String firstName;
+ String lastName;
+ Date birthday;
+
+ @Transient
+ Integer age;
+
+ @Embedded
+ private Address homeAddress;
+
+ @OneToMany(cascade=CascadeType.ALL)
+ @JoinColumn(name="CUSTOMER_ID")
+ Set<Order> orders;
+
+ // Getter/setter and business methods
+}]]></programlisting>
+
+ <para>
+ JDK5.0ÌAme[V(ÆJSR-220)ÌT|[gÍisÌìÆÅ èA®SÅÍÈ¢±ÆÉӵľ³¢B
+ ³çÉÚµ¢îñÍHibernateÌAme[VEW
[ðQƵľ³¢B
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+
+ <sect1 id="mapping-generated" revision="1">
+ <title>¶¬vpeB</title>
+ <para>
+ ¶¬vpeBÆÍAf[^x[XÉæÁͬ³ê½lðÂvpeBÅ·B
+ ÊíAHibernateAvP[VÍAf[^x[Xªl𶬵½vpeBðÜÞIuWFNgð
+ <literal>tbV
</literal> ·éKvª èܵ½B
+ µ©µAvpeBª¶¬³ê½Æ¢¤±Æð}[N·é±ÆÅA
+ AvP[VÍtbV
ÌÓCðHibernateÉÏ÷µÜ·B
+
+ î{IÉA¶¬vpeBðÂÆè`µ½GeBeBÉεÄ
+ HibernateªINSERTâUPDATEÌSQLðsµ½ã·®ÉA
+ ¶¬³ê½lðÇÝÞ½ßÌ SELECT SQL ªs³êÜ·B
+ </para>
+ <para>
+ ¶¬vpeBÍA}üsÂ\©ÂXVsÂ\ÅȯêÎÈèܹñB
+ <xref linkend="mapping-declaration-version">versions</xref> A
+ <xref linkend="mapping-declaration-timestamp">timestamps</xref> A
+ <xref linkend="mapping-declaration-property">simple properties</xref> ¾¯ª¶¬³ê½Æ}[NūܷB
+ </para>
+ <para>
+ <literal>never</literal> (ftHg) - ^¦çê½vpeBÌlÍA
+ f[^x[X©ç¶¬³êÈ¢±ÆðÓ¡µÜ·B
+ </para>
+ <para>
+ <literal>insert</literal> - ^¦çê½vpeBÌlÍ}üɶ¬³êéªA
+ ±¢ÄN±éXVÉͶ¬³êÈ¢±Æ¦µÜ·B
+ 쬳ê½útÈÇÍA±ÌJeSɪ޳êÜ·B
+ <xref linkend="mapping-declaration-version">version</xref> â
+ <xref linkend="mapping-declaration-timestamp">timestamp</xref> Ì
+ vpeBͶ¬³ê½Æ}[NūܷªA±ÌIvVÍpūȢ±ÆÉӵľ³¢B
+ </para>
+ <para>
+ <literal>always</literal> - }üàXVàvpeBÌlª¶¬³ê鱯ð¦µÜ·B
+ </para>
+ </sect1>
+
+ <sect1 id="mapping-database-object" revision="0">
+ <title>âIÈf[^x[XEIuWFNg</title>
+ <para>
+ HibernateÌXL[}EG{
[Vc[ÆA®·é±ÆÅA
+ CÓÌf[^x[XEIuWFNgigK[âXgAhvV[WÈÇjÌCREATEÆDROPÉæèA
+ HibernateÌ}bsOt@CàÌ[UEXL[}ð·×Äè`·é±ÆªoÜ·B
+ åÉgKâXgAhvV[WÌæ¤Èf[^x[XEIuWFNgð¶¬âí·é±ÆðÓ}µÄ¢Ü·ªA
+ ÀÛÉÍ <literal>java.sql.Statement.execute()</literal> \bhÉæÁÄÀsÅ«é
+ CÓÌSQLR}hiALTERAINSERTÈÇjªÀsūܷB
+ âIÈf[^x[XEIuWFNgðè`·é½ßÌA2ÂÌî{IÈû@ª èÜ·B
+ </para>
+ <para>
+ 1ÂÚÌû@ÍACREATEÆDROPR}hð}bsOt@CÌOÉA¾¦IÉLÚ·é±ÆÅ·B
+ </para>
+ <programlisting><![CDATA[<hibernate-mapping>
+ ...
+ <database-object>
+ <create>CREATE TRIGGER my_trigger ...</create>
+ <drop>DROP TRIGGER my_trigger</drop>
+ </database-object>
+</hibernate-mapping>]]></programlisting>
+ <para>
+ 2ÂÚÌû@ÍACREATEÆDROPR}hÌgݧÄûðmÁÄ¢éJX^NXðñ·é±ÆÅ·B
+ ±ÌJX^NXÍ <literal>org.hibernate.mapping.AuxiliaryDatabaseObject</literal> C^tF[Xð
+ ÀµÈ¯êÎÈèܹñB
+ </para>
+ <programlisting><![CDATA[<hibernate-mapping>
+ ...
+ <database-object>
+ <definition class="MyTriggerDefinition"/>
+ </database-object>
+</hibernate-mapping>]]></programlisting>
+ <para>
+ ³çÉA éf[^x[Xû¾ªgp³êéɾ¯Kp·éÆ¢Á½æ¤ÉA
+ f[^x[XEIuWFNgªgíêéP[XðÀèūܷB
+ </para>
+ <programlisting><![CDATA[<hibernate-mapping>
+ ...
+ <database-object>
+ <definition class="MyTriggerDefinition"/>
+ <dialect-scope name="org.hibernate.dialect.Oracle9Dialect"/>
+ <dialect-scope name="org.hibernate.dialect.OracleDialect"/>
+ </database-object>
+</hibernate-mapping>]]></programlisting>
+ </sect1>
+
+</chapter>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/batch.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/batch.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/batch.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/batch.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,386 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="batch">
+ <title>ob`</title>
+
+ <para>
+ HibernateðgÁÄf[^x[XÉ100,000sð}ü·éð¼Èû@ÍA±Ìæ¤ÈàÌÅ·F
+ </para>
+
+<programlisting><![CDATA[Session session = sessionFactory.openSession();
+Transaction tx = session.beginTransaction();
+for ( int i=0; i<100000; i++ ) {
+ Customer customer = new Customer(.....);
+ session.save(customer);
+}
+tx.commit();
+session.close();]]></programlisting>
+
+ <para>
+ ±êÍ50,000ÔÚÌsÌ ½èÅ <literal>OutOfMemoryException</literal> Ÿs·éŵå¤B
+ HibernateªZbVxLbV
ÅA
+ Vµ}ü³ê½·×ÄÌ <literal>Customer</literal>
+ CX^XðLbV
·é©çÅ·B
+ </para>
+
+ <para>
+ ±ÌÍÅÍA±Ìâèðñð·éû@ðÐîµÜ·B
+ µ©µob`ð·éÈçAJDBCob`ªgpÂ\Š鱯ªñíÉdvÅ·B
+ »¤ÅȯêÎè ÈptH[}Xª¾çêܹñB
+ JDBCob`TCYðè Èliá¦ÎA10©ç50jÉÝèµÄ¾³¢F
+ </para>
+
+<programlisting><![CDATA[hibernate.jdbc.batch_size 20]]></programlisting>
+
+ <para>
+ ܽñLbV
ªSø©È¢vZXÅA
+ ±Ìæ¤ÈìÆðµ½¢Æv¤©àµêܹñF
+ </para>
+
+<programlisting><![CDATA[hibernate.cache.use_second_level_cache false]]></programlisting>
+
+ <para>
+ µ©µA±êÍâÎÉKvÆ¢¤í¯ÅÍ èܹñB
+ ȺÈ羦IÉ <literal>CacheMode</literal> ðÝèµÄA
+ ñLbV
ÆÌÝìpð³øÉ·é±ÆªÅ«é©çÅ·B
+
+ </para>
+
+ <sect1 id="batch-inserts">
+ <title>ob`}ü</title>
+
+ <para>
+ Vµ¢IuWFNgði±»·éÆ«AêLbV
ÌTCYð§À·é½ßA
+ ZbVð <literal>flush()</literal> µÄ <literal>clear()</literal>
+ µÈ¯êÎÈèܹñB
+ </para>
+
+<programlisting><![CDATA[Session session = sessionFactory.openSession();
+Transaction tx = session.beginTransaction();
+
+for ( int i=0; i<100000; i++ ) {
+ Customer customer = new Customer(.....);
+ session.save(customer);
+ if ( i % 20 == 0 ) { //20, same as the JDBC batch size
+ //flush a batch of inserts and release memory:
+ session.flush();
+ session.clear();
+ }
+}
+
+tx.commit();
+session.close();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="batch-update" >
+ <title>ob`XV</title>
+
+ <para>
+ f[^ð³µ½èXVµ½è·éÉͯ¶ACfBAðKpµÜ·B
+ »êÉÁ¦ÄAf[^Ìsð½Ô·NGÉεÄLøÈ
+ T[o[TChÌJ[\Ì_ð¶©µ½¯êÎ
+ <literal>scroll()</literal> ðg¤Kvª èÜ·B
+ </para>
+
+<programlisting><![CDATA[Session session = sessionFactory.openSession();
+Transaction tx = session.beginTransaction();
+
+ScrollableResults customers = session.getNamedQuery("GetCustomers")
+ .setCacheMode(CacheMode.IGNORE)
+ .scroll(ScrollMode.FORWARD_ONLY);
+int count=0;
+while ( customers.next() ) {
+ Customer customer = (Customer) customers.get(0);
+ customer.updateStuff(...);
+ if ( ++count % 20 == 0 ) {
+ //flush a batch of updates and release memory:
+ session.flush();
+ session.clear();
+ }
+}
+
+tx.commit();
+session.close();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="batch-statelesssession">
+ <title>
+ StatelessSessionC^[tFCX
+ </title>
+
+ <para>
+ ܽÊÌû@ƵÄAHibernateÍR}hwüÌAPIðpӵĢܷB
+ ±êͪ£IuWFNgÌ`ÅA
+ f[^x[XÆÌf[^Xg[ÌâèæèÉg¤±ÆªÅ«Ü·B
+ <literal>StatelessSession</literal> ÍÖA·éi±ReLXgð½¸A
+ xÌCtTCNZ}eBNX̽ðñµÜ¹ñB
+ ÁÉXe[gXZbVÍAêLbV
ðÀ¹¸A
+ ܽÇÌæ¤ÈñLbV
âNGLbV
ÆàÝìpµÜ¹ñB
+ gUNViÈwrite-behindâ©®_[eB`FbNàÀµÜ¹ñB
+ Xe[gXZbVðgÁÄsíêéìªA
+ ÖA·éCX^XÖJXP[h³êé±ÆÍµÄ èܹñB
+ RNVÍAXe[gXZbV©çͳ³êÜ·B
+ Xe[gXZbVðʵÄsíêéìÍA
+ HibernateÌCxgfâC^[Zv^Ìe¿ðó¯Ü¹ñB
+ êLbV
ð½È¢½ßA
+ Xe[gXZbVÍʼðÂf[^ÉãèÎūܹñB
+ Xe[gXZbVÍáxÌۻŠèAJDBCÉñíɿĢܷB
+
+ </para>
+
+<programlisting><![CDATA[StatelessSession session = sessionFactory.openStatelessSession();
+Transaction tx = session.beginTransaction();
+
+ScrollableResults customers = session.getNamedQuery("GetCustomers")
+ .scroll(ScrollMode.FORWARD_ONLY);
+while ( customers.next() ) {
+ Customer customer = (Customer) customers.get(0);
+ customer.updateStuff(...);
+ session.update(customer);
+}
+
+tx.commit();
+session.close();]]></programlisting>
+
+ <para>
+ ±ÌR[háÅÍANGªÔ· <literal>Customer</literal>
+ CX^XͦÀÉiZbV©çjª£³ê鱯Éӵľ³¢B
+ ±êÍAÇÌæ¤Èi±ReLXgÆàµÄÖAµÜ¹ñB
+
+ </para>
+
+ <para>
+ <literal>StatelessSession</literal> C^[tFCXÅè`³êÄ¢é
+ <literal>insert(), update(), delete()</literal> ÍA
+ áx̼ÚIÈf[^x[XìÆl¦çêÜ·B
+ ÊÆµÄASQLÌ <literal>INSERT, UPDATE, DELETE</literal> ª»ê¼ê¦ÀÉÀs³êÜ·B
+ ±Ìæ¤ÉA±êçÍ <literal>Session</literal> C^[tFCXÅè`³êÄ¢é
+ <literal>save(), saveOrUpdate(), delete()</literal>
+ ÆÍñíÉÙÈéÓ¡ð¿Ü·B
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="batch-direct" revision="3">
+ <title>
+ DMLX^CÌì
+ </title>
+
+ <para>
+ ·ÅÉc_µ½æ¤ÉA©®I©Â§ßIÈIuWFNg/[Vi}bsOÍA
+ IuWFNgÌóÔÌÇÅ éÆl¦çêÜ·B
+ ±êÍàÌIuWFNgÌóÔðpū鯢¤±ÆÅ·B
+ »Ì½ßiSQLÌ <literal>f[^ì¾ê</literal> (DML) ¶F
+ <literal>INSERT</literal>, <literal>UPDATE</literal>, <literal>DELETE</literal>
+ ðgÁÄjf[^x[XàÌf[^ð¼ÚìµÄàA
+ àÌóÔÉÍe¿ð^¦Ü¹ñB
+ µ©µHibernateÍAoNSQLX^CÌDML¶ÀsÉηé\bhðpӵĢܷB
+ ±êÍHibernateNG¾êi<xref linkend="queryhql">HQL</xref>j
+ ðʵÄÀs³êÜ·B
+
+ </para>
+
+ <para>
+ <literal>UPDATE</literal> Æ <literal>DELETE</literal> ¶Ì^\¶ÍF
+ <literal>( UPDATE | DELETE ) FROM? GeBeB¼ (WHERE ðß)?</literal> Å·B
+ ӷ׫_ª¢Â© èÜ·F
+
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ fromßɨ¢ÄAFROML[[hÍIvVÅ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ fromßÅÍPêÌGeBeB¼¾¯ªÂ\ÅA
+ CÓÅʼðt¯é±ÆªÅ«Ü·B
+ GeBeB¼Éʼª^¦çêéÆAÇÌæ¤ÈvpeBQÆàA
+ »ÌʼðgÁÄCüµÈ¯êÎÈèܹñB
+ àµGeBeB¼Éʼª^¦çêȯêÎA
+ ÇÌæ¤ÈvpeBQÆàCüµÄÍÈèܹñB
+
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ iÃÙIŠ꾦IÅ êj<xref linkend="queryhql-joins-forms"></xref>
+ ðoNHQLNGàÅwè·é±ÆÍūܹñB
+ TuNGÍwhereßÅg¤±ÆªÅ«Ü·
+ TuNG»ÌàÌÍAðÜßçêÜ·B
+
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ whereßÍIvVÅ·B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ áÆµÄAHQLÌ <literal>UPDATE</literal> ðÀs·éÉÍA
+ <literal>Query.executeUpdate()</literal> \bhðgÁľ³¢B
+ i±Ì\bhͨȶÝÌJDBC <literal>PreparedStatement.executeUpdate()</literal>
+ ©ç¼t¯çêܵ½jF
+ d
+ </para>
+
+<programlisting><![CDATA[Session session = sessionFactory.openSession();
+Transaction tx = session.beginTransaction();
+
+String hqlUpdate = "update Customer c set c.name = :newName where c.name = :oldName";
+// or String hqlUpdate = "update Customer set name = :newName where name = :oldName";
+int updatedEntities = s.createQuery( hqlUpdate )
+ .setString( "newName", newName )
+ .setString( "oldName", oldName )
+ .executeUpdate();
+tx.commit();
+session.close();]]></programlisting>
+
+ <para>
+ HQLÌ <literal>UPDATE</literal> ¶ÍAftHgÅÍAìp·éGeBeBÌ
+ <xref linkend="mapping-declaration-version">version</xref> â
+ <xref linkend="mapping-declaration-timestamp">timestamp</xref>
+ vpeBÌlÉÍe¿µÜ¹ñB
+ ±êÍEJB3ÌdlÉàó¯pªêĢܷB
+ µ©µ <literal>versioned update</literal> ðgÁÄA
+ <literal>version</literal> â <literal>timestamp</literal>
+ vpeBÌlð§IÉZbg³¹é±ÆªÅ«Ü·B
+ ±êÍ <literal>UPDATE</literal> L[[hÌãÉ <literal>VERSIONED</literal>
+ L[[hðÇÁ·é±ÆÅs¦Ü·B
+
+ </para>
+<programlisting><![CDATA[Session session = sessionFactory.openSession();
+Transaction tx = session.beginTransaction();
+String hqlVersionedUpdate = "update versioned Customer set name = :newName where name = :oldName";
+int updatedEntities = s.createQuery( hqlUpdate )
+ .setString( "newName", newName )
+ .setString( "oldName", oldName )
+ .executeUpdate();
+tx.commit();
+session.close();]]></programlisting>
+
+ <para>
+ JX^o[W^i<literal>org.hibernate.usertype.UserVersionType</literal>j
+ Í <literal>update versioned</literal> ¶ÆêÉg¦È¢±ÆÉӵľ³¢B
+ </para>
+
+ <para>
+ HQLÌ <literal>DELETE</literal> ðÀs·éÉÍA
+ ¯¶ <literal>Query.executeUpdate()</literal> \bhðgÁľ³¢F
+
+ </para>
+
+<programlisting><![CDATA[Session session = sessionFactory.openSession();
+Transaction tx = session.beginTransaction();
+
+String hqlDelete = "delete Customer c where c.name = :oldName";
+// or String hqlDelete = "delete Customer where name = :oldName";
+int deletedEntities = s.createQuery( hqlDelete )
+ .setString( "oldName", oldName )
+ .executeUpdate();
+tx.commit();
+session.close();]]></programlisting>
+
+ <para>
+ <literal>Query.executeUpdate()</literal> \bhªÔ· <literal>int</literal>
+ ÌlÍA±Ììªe¿ðyÚµ½GeBeBÌÅ·B
+ ±êªe¿·éf[^x[XàÌsÆAÝÉÖW·é©Ç¤©ðl¦ÄÝľ³¢B
+ HQLoNìÍAÊÆµÄAÀÛÌSQL¶ª¡Às³ê鱯ÉÈèÜ·B
+ á¦Îjoined-subclassÅ·B
+ Ô³êéÍA»Ì¶ÉæÁÄe¿³ê½ÀÛÌGeBeBÌð¦µÜ·B
+ joined-subclassÌáÉßéÆATuNXÌêÂÉηéíÍA
+ »ÌTuNXª}bsO³ê½e[u¾¯ÅÍÈA
+ u[gve[uÆp³Kwð³çɺÁ½joined-subclassÌe[uÌíÉÈèÜ·B
+ </para>
+
+ <para>
+ <literal>INSERT</literal> ¶Ì^\¶ÍF
+ <literal>INSERT INTO GeBeB¼ vpeBXg select¶</literal> Å·B
+ ӷ׫_ª¢Â© èÜ·F
+
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ INSERT INTO ... SELECT ... Ì`®¾¯ªT|[g³êĢܷB
+ INSERT INTO ... VALUES ... Ì`®ÍT|[g³êĢܹñB
+ </para>
+ <para>
+ vpeBXgÍASQLÌ <literal>INSERT</literal> ¶É¨¯é <literal>JÌdl</literal>
+ É޵ĢܷB
+ p³Ì}bsOÉÜÜêéGeBeBÉεÄA
+ NXxżÚè`³ê½vpeB¾¯ªAvpeBXgÉg¦Ü·B
+ X[p[NXÌvpeBÍFßçê¸ATuNXÌvpeBÍøÊª èܹñB
+ ¾¢·¦éÆ <literal>INSERT</literal> ¶ÍA{¿IÉ|[tBbNÅÍ èܹñB
+
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ select¶ÌÔèlÌ^ªinsert¶ªúÒ·é^Æ}b`µÄ¢êÎA
+ »Ìselect¶ÍÃÈHQL selectNGÆÈè¦Ü·B
+ »Ý±Ì`FbNðf[^x[XÖC¹éÌÅÍÈANGÌRpCÉ`FbNµÜ·B
+ ±Ì±ÆÍA<emphasis>equal</emphasis>ÆÍá¢A
+ HibernateÌ <literal>Type</literal> ÔÌ <emphasis>equivalent</emphasis> ÉÖ·é
+ âèðø«N±·±ÆÉӵľ³¢B
+ ±êÍ <literal>org.hibernate.type.DataType</literal> ƵÄè`³ê½vpeBÆA
+ <literal>org.hibernate.type.TimestampType</literal>
+ ƵÄè`³ê½vpeBÌÔÌ~X}b`Ìâèðø«N±µÜ·B
+ f[^x[Xª»êçðæÊÅ«ÈÄàAÏ··é±ÆªÅ«ÄàA±ÌâèͶµÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ idvpeBÉεÄAinsert¶ÉÍñÂÌIðª èÜ·B
+ vpeBXgž¦IÉidvpeBðwè·é©
+ i±ÌêAηéselect®©çlªæçêÜ·jA
+ vpeBXg©çO·é©
+ i±ÌêA¶¬³êélªgíêÜ·jÌ¢¸ê©Å·B
+ ãÒÌIðÍAf[^x[Xàðì·éidWFl[^ðg¤Æ«ÌÝApÂ\Å·B
+ ±ÌIððÌéêAuCv^ÌWFl[^ðg¤ÆA\¶ðÍÉáOª¶µÜ·B
+ ±Ìc_ÅÍACf[^x[X^WFl[^Í <literal>org.hibernate.id.SequenceGenerator</literal>
+ iÆ»ÌTuNXjÆA<literal>org.hibernate.id.PostInsertIdentifierGenerator</literal>
+ ÌÀÅ éÆl¦Ä¢Ü·B
+ ±±ÅÅàӷ׫áOÍA<literal>org.hibernate.id.TableHiLoGenerator</literal> Å·B
+ lðæ¾·éIðÂ\Èû@ªÈ¢½ßA±ÌWFl[^ðg¤±ÆÍūܹñB
+
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>version</literal> â <literal>timestamp</literal> ƵÄ}bsO³êévpeBÉεÄA
+ insert¶ÉÍñÂÌIðª èÜ·B
+ vpeBXgž¦IÉvpeBðwè·é©
+ i±ÌêAηéselect®©çlªæçêÜ·jA
+ vpeBXg©çO·é©
+ i±ÌêA<literal>org.hibernate.type.VersionType</literal> Åè`³ê½
+ <literal>V[hl</literal> ªgíêÜ·jÌ¢¸ê©Å·B
+
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ HQLÌ <literal>INSERT</literal> ¶ÌÀsáÅ·F
+
+ </para>
+
+<programlisting><![CDATA[Session session = sessionFactory.openSession();
+Transaction tx = session.beginTransaction();
+
+String hqlInsert = "insert into DelinquentAccount (id, name) select c.id, c.name from Customer c where ...";
+int createdEntities = s.createQuery( hqlInsert )
+ .executeUpdate();
+tx.commit();
+session.close();]]></programlisting>
+
+ </sect1>
+
+</chapter>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/best_practices.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/best_practices.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/best_practices.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/best_practices.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="best-practices" revision="3">
+ <title>xXgvNeBX</title>
+
+ <variablelist spacing="compact">
+ <varlistentry>
+ <term>
+ NXÍש¢±xÅ« <literal><component></literal> Å}bsOµÜµå¤B</term>
+ <listitem>
+ <para>
+ <literal>street</literal>iÊèj, <literal>suburb</literal>
+ issj, <literal>state</literal>iBj, <literal>postcode</literal>
+ iXÖÔjðJvZ»·é <literal>Address</literal>iZjNXðg¢Üµå¤B
+ »¤·êÎR[hªÄpµâ·ÈèAt@N^OàÈPÉÈèÜ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ i±NXÉͯÊqvpeBðè`µÜµå¤B</term>
+ <listitem>
+ <para>
+ HibernateÅͯÊqvpeBÍIvVÅ·ªA
+ gp·×«Rª½³ñ èÜ·B
+ ¯ÊqÍulHIvi¶¬³ê½AƱIÈÓ¡ð½È¢j
+ ÈàÌÉ·é±Æð¨··ßµÜ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>©RL[ð©Â¯Üµå¤B</term>
+ <listitem>
+ <para>
+ ·×ÄÌGeBeBÉεĩRL[ð©Â¯ÄA
+ <literal><natural-id></literal> Å}bsOµÜµå¤B
+ ©RL[ð\¬·évpeBðär·é½ßÉA
+ <literal>equals()</literal> Æ <literal>hashCode()</literal> ðÀµÜµå¤B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>NXÌ}bsOÍ»ê¼êÌNXêpÌt@Cɫܵå¤B</term>
+ <listitem>
+ <para>
+ PêÌåÈ}bsOhL
gðgpµÈ¢Å¾³¢B
+ <literal>com.eg.Foo</literal> NXÈç
+ <literal>com/eg/Foo.hbm.xml</literal> t@CÉ}bsOµÜµå¤B
+ ±Ì±ÆÍAÁÉ`[ÅÌJÉÓ¡ª èÜ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\[XƵÄ}bsOð[hµÜµå¤B</term>
+ <listitem>
+ <para>
+ }bsOðA»êçª}bsO·é·éNXÆêÉzuµÜµå¤B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>NG¶ñðOÉu±Æðl¦Üµå¤</term>
+ <listitem>
+ <para>
+ NGªANSIWÅÈ¢SQLÖðÄñÅ¢éÈçA±êÍæ¢vNeBXÅ·B
+ NG¶ñð}bsOt@CÖOoµ·êÎAvP[Vª|[^uÉÈèÜ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>oChÏðg¢Üµå¤B</term>
+ <listitem>
+ <para>
+ JDBCÌêÆ¯¶æ¤ÉAèÅÈ¢lÍK¸"?"Åu«·¦Üµå¤B
+ èÅÈ¢lðoCh·é½ßÉANGŶñìðgÁÄÍ¢¯Ü¹ñB
+ ¼Ot«Ìp[^ðg¤æ¤É·éƳçÉǢŷB
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>JDBCRlNVðǵÄÍ¢¯Ü¹ñB</term>
+ <listitem>
+ <para>
+ HibernateÅÍAvP[VªJDBCRlNVðÇ·é±Æª³êĢܷB
+ µ©µ±êÍÅIèi¾ÆvÁľ³¢B
+ gÝÝÌRlNVvoC_ðg¤±ÆªÅ«È¯êÎA
+ <literal>org.hibernate.connection.ConnectionProvider</literal> ðÀ·é±Æðl¦Ä¾³¢B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>JX^^Ìgpðl¦Üµå¤B</term>
+ <listitem>
+ <para>
+ éCu©çÁÄ«½Java^ði±»·éKvª 鯵ܵå¤B
+ µ©µ»Ì^ÉÍAR|[lgƵÄ}bsO·é½ßÉKvÈANZTªÈ¢ÆµÜ·B
+ ±Ìæ¤ÈêÍ <literal>org.hibernate.UserType</literal> ÌÀðl¦é׫ŷB
+ »¤·êÎHibernate^ÆÌÀÏ·ðSz¹¸ÉAvP[VÌR[hðµ¦Ü·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>{glbNððÁ·éÉÍJDBCðnhR[hµÜµå¤B</term>
+ <listitem>
+ <para>
+ VXeÌptH[}XNeBJÈÌæÅÍA
+ éíÌìÉJDBCð¼Úg¤ÆÇ¢©àµêܹñB
+ µ©µ½ª{glbNÉÈÁÄ¢é© <emphasis>ÍÁ«è·é</emphasis> ÜÅÍÒÁľ³¢B
+ ܽJDBCð¼Úg¤©çÆ¢ÁÄAK¸µà¬ÈéÆÍÀçÈ¢±ÆàðµÄ¾³¢B
+ JDBCð¼Úg¤Kvª êÎAHibernateÌ <literal>Session</literal> ðI[vµÄA
+ JDBCRlNVðg¤ÆÇ¢©àµêܹñB
+ ËRƵį¶gUNVíªÆRlNVvoC_ªg¦é©çÅ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>Session</literal> ÌtbV
ððµÜµå¤B</term>
+ <listitem>
+ <para>
+ Sessionªi±óÔðf[^x[XƯú³¹é±ÆªÆ«Ç« èÜ·B
+ µ©µ±êª ÜèÉpÉÉN±é椾ÆAptH[}XÉe¿ªoīܷB
+ ©®tbV
ð³øÉµ½èAÁèÌgUNVÌNGâìÌÔðÏX·é±ÆÅA
+ sKvÈtbV
ðŬÀÉūܷB
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>3wA[LeN`Åͪ£IuWFNgÌgpðl¦Üµå¤B</term>
+ <listitem>
+ <para>
+ T[ubg / ZbVr[A[LeN`ðg¤Æ«A
+ T[ubgw / JSPwÔÅZbVr[Å[hµ½i±IuWFNgðâèæèūܷB
+ »ÌÛNGXg²ÆÉVµ¢SessionðgÁľ³¢B
+ ܽ <literal>Session.merge()</literal> â <literal>Session.saveOrUpdate()</literal>
+ ðgÁÄAIuWFNgÆf[^x[Xð¯ú³¹Ä¾³¢B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>2wA[LeN`ÅÍ·¢i±ReLXgÌgpðl¦Üµå¤B</term>
+ <listitem>
+ <para>
+ ÅÌXP[reBð¾éÉÍA
+ f[^x[XgUNVðū龯ZµÈ¯êÎÈèܹñB
+ µ©µ·¢ÔÀs·é <emphasis>AvP[VgUNV</emphasis>
+ ÌÀªKvȱÆÍµÎµÎÅ·B
+ ±êÍ[UÌ_©çÍ1ÂÌìÆPÊiunit of workjÉÈèÜ·B
+ AvP[VgUNV͢©ÌNCAgÌNGXg/X|XTCNÉܽªèÜ·B
+ AvP[VgUNVÌÀɪ£IuWFNgðg¤ÌÍêÊIÅ·B
+
+ »¤ÅȯêÎA2wA[LeN`ÌêÍÁÉKØÈ±ÆÅ·ªA
+ AvP[VgUNVÌCtTCNSÌÉεÄ
+ PêÌI[vÈi±»ReLXgiZbVjð۵ľ³¢B
+ »µÄPÉNGXgÌÅãÉJDBCRlNV©çØfµA
+ ÌNGXgÌÅÉÄÚ±µÜ·B
+
+ µÄ¡ÌAvP[VgUNV[XP[XÉnÁÄ
+ 1ÂÌSessionðg¢ñ³È¢Å¾³¢B
+ »¤ÅȯêÎAâf[^ÅìÆ·é±ÆÉÈèÜ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>áOðAÂ\ÈàÌÆµÄµÁÄÍ¢¯Ü¹ñB</term>
+ <listitem>
+ <para>
+ ±êÍuxXgvvNeBXÈãÌAK{ÌvNeBXÅ·B
+ áOª¶µ½Æ«Í <literal>Transaction</literal> ð[obNµÄA
+ <literal>Session</literal> ðN[YµÄ¾³¢B
+ »¤µÈ¢ÆHibernateÍÌóÔªi±óÔð³mÉ\»µÄ¢é±ÆðÛØÅ«Ü¹ñB
+ ±ÌÁÊÈêÆµÄA^¦ç꽯ÊqðÂCX^Xªf[^x[Xɶݷé©Ç¤©ð»è·é½ßÉA
+ <literal>Session.load()</literal> ðg¤±ÆÍâßľ³¢B
+ »ÌãíèÉ <literal>Session.get()</literal> ©NGðgÁľ³¢B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>ÖAÉÍÈé×xtFb`ðg¢Üµå¤B</term>
+ <listitem>
+ <para>
+ ¦tFb`ÍT¦ßɵܵå¤B
+ ñLbV
ÉÍ®SÉÛ³êÈ¢æ¤ÈNXÌÖAÉÍA
+ vLVÆxRNVðgÁľ³¢B
+ LbV
³êéNXÌÖAAÂÜèLbV
ªqbg·éÂ\«ªñíÉ¢ÖAÍA
+ <literal>lazy="false"</literal> ÅÏÉIÈtFb`ð¾¦IɳøÉµÄ¾³¢B
+ tFb`ªKØÈÁèÌ[XP[XÉÍA
+ NGÅ <literal>left join fetch</literal> ðgÁľ³¢B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ tFb`³êĢȢf[^ÉÖíéâèðð¯é½ßÉA
+ <emphasis>r
[ÌÅI[vZbVðg¤(open session in view)</emphasis>
+ p^[©A§³ê½ <emphasis>gݧÄtF[Y(assembly phase)</emphasis> ðg¢Üµå¤B
+ </term>
+ <listitem>
+ <para>
+ HibernateÍ <emphasis>Data Transfer Objects</emphasis> (DTO)ðÞüÈìÆ©çJÒððúµÜ·B
+ `IÈEJBA[LeN`ÅÍDTOÍñÂÚIª èÜ·F
+ 1ÂÚÍAGeBeBr[ªVACY³êÈ¢âèÖÌÎôÅ·B
+ 2ÂÚÍAv[e[VwɧäªßéOÉA
+ r
[Égíêé·×ÄÌf[^ªtFb`³êÄADTOɳ³ê鿤ÈgݧÄtF[YðÃÙIÉè`µÜ·B
+ HibernateÅÍ1ÂÚÌÚIªsvÉÈèÜ·B
+ µ©µr
[Ì_OÌÔAi±ReLXgiZbVjðI[vɵ½ÜÜɵȯêÎA
+ gݧÄtF[YÍܾKvÅ·iª£IuWFNgÌÌÇÌf[^ªpÂ\©É¢ÄA
+ v[e[VwƵ§ÈæèßðµÄ¢érWlX\bhðl¦ÄÝľ³¢jB
+ ±êÍHibernate¤ÌâèÅÍ èܹñB
+ gUNVàÅÀSÉf[^ANZX·é½ßÌî{IÈvÅ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Hibernate©çrWlXWbNðÛ»·é±Æðl¦Üµå¤B</term>
+ <listitem>
+ <para>
+ C^[tFCXÅiHibernateÌjf[^ANZXR[hðBÁµÜµå¤B
+ <emphasis>DAO</emphasis> Æ <emphasis>Thread Local Session</emphasis> p^[ðgÝí¹Üµå¤B
+ <literal>UserType</literal> ÅHibernateÉÖAt¯éÆA
+ nhR[hµ½JDBCÅi±»·éNXð±ÆàūܷB
+ i±ÌAhoCXÍu\ªå«ÈvAvP[VÉεÄÌàÌÅ·B
+ e[uª5µ©È¢æ¤ÈAvP[VÉÍÄÍÜèܹñBj
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>¿µ¢ÖA}bsOÍgíÈ¢æ¤ÉµÜµå¤B</term>
+ <listitem>
+ <para>
+ æ¢[XP[XÉ{̽νÖAª 鱯ÍHiÜêjÅ·B
+ ÙÆñÇÌêuNe[uvÌtÁIÈîñªKvÉÈèÜ·B
+ ±ÌêANNXÉ2ÂÌ1νÖAðg¤ûª¸ÁÆÇ¢Å·B
+ ÀÛÙÆñÇÌêÖAÍ1νƽÎ1ÈÌÅA
+ ¼ÌX^CÌÖAðg¤Æ«Í{ÉKv©Ç¤©ðl¦ÄÝľ³¢B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Èé×oûüÖAɵܵå¤B</term>
+ <listitem>
+ <para>
+ PûüÖAÍoûüÉä×ÄõªïµÈèÜ·B
+ å«ÈAvP[VÅÍA
+ ÙÆñÇ·×ÄÌÖAªoûüÉirQ[VūȯêÎÈèܹñB
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+</chapter>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/collection_mapping.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/collection_mapping.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/collection_mapping.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/collection_mapping.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,1226 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="collections">
+ <title>RNVÌ}bsO</title>
+
+ <sect1 id="collections-persistent" revision="3">
+ <title>RNVÌi±»</title>
+
+ <para>
+ RNV^ÌtB[hði±»·éÉÍA
+ »ÌRNV^ªC^[tFCX^Å éKvª èÜ·B
+ á¦ÎA
+ </para>
+
+ <programlisting><![CDATA[public class Product {
+ private String serialNumber;
+ private Set parts = new HashSet();
+
+ public Set getParts() { return parts; }
+ void setParts(Set parts) { this.parts = parts; }
+ public String getSerialNumber() { return serialNumber; }
+ void setSerialNumber(String sn) { serialNumber = sn; }
+}]]></programlisting>
+
+ <para>
+ ÀÝ·éC^[tFCXÉÍ <literal>java.util.Set</literal>A
+ <literal>java.util.Collection</literal>A<literal>java.util.List</literal>A
+ <literal>java.util.Map</literal>A<literal>java.util.SortedSet</literal>A
+ <literal>java.util.SortedMap</literal> ÈǪ èÜ·B
+ ܽÍACÓÌC^[tFCXªg¦Ü·I
+ i½¾µACÓÌC^[tFCXðgp·éêÍA
+ <literal>org.hibernate.usertype.UserCollectionType</literal>
+ ÌÀNXð쬷éKvª èÜ·Bj
+ </para>
+
+ <para>
+ <literal>HashSet</literal> ÌCX^XðÂCX^XϪ
+ ÇÌæ¤Éú»³êé©ÉÚµÄÝܵå¤B
+ ±êÍV½É¶¬³ê½ii±»³êĢȢjRNV^ÌvpeBð
+ ú»·éÅKÈû@Å·B
+ iá¦Î <literal>persist()</literal> ÉæèjCX^Xði±»µæ¤Æµ½Æ«A
+ HibernateÍ <literal>HashSet</literal> ðHibernateÆ©Ì <literal>Set</literal>
+ ÌÀNXÉu«·¦Ü·B
+ ±Ì½ßAÌæ¤ÈG[ÉÍÓªKvÅ·B
+ </para>
+
+ <programlisting><![CDATA[Cat cat = new DomesticCat();
+Cat kitten = new DomesticCat();
+....
+Set kittens = new HashSet();
+kittens.add(kitten);
+cat.setKittens(kittens);
+session.persist(cat);
+kittens = cat.getKittens(); // Okay, kittens collection is a Set
+(HashSet) cat.getKittens(); // Error!]]></programlisting>
+
+ <para>
+ HibernateÉæèü³ê½i±«RNVÍAC^[tFCX^ɶÄA
+ <literal>HashMap</literal> â <literal>HashSet</literal>A
+ <literal>TreeMap</literal>A <literal>TreeSet</literal>A
+ <literal>ArrayList</literal> Ìæ¤ÉU¢Ü·B
+ </para>
+
+ <para>
+ RNVCX^XÍAl^ƵÄÊÉU¢Ü·B
+ i±»IuWFNgÉQÆ³ê½Æ«É©®IÉi±»³êA
+ QƪÈÈÁ½Æ«É©®IÉí³êÜ·B
+ ൠéi±»IuWFNg©çÊÌi±»IuWFNgÉn³ê½çA
+ »ÌvfÍ»ÝÌe[u©çÊÌe[uÉÚ®·é©àµêܹñB
+ QÂÌGeBeBª¯¶RNVCX^Xð¤LµÄÍ¢¯Ü¹ñB
+ [Vifðx[XɵĢé½ßARNV^ÌvpeBÉ
+ nulllðãüµÄàÓ¡ª èܹñB
+ ÂÜèHibernateÍQÆæÌÈ¢RNVÆóÌRNVðæÊµÜ¹ñB
+ </para>
+
+ <para>
+ µ©µ»êÙÇSzµÈÄà\¢Ü¹ñB
+ igÁÄ¢éJavaÌRNVƯ¶æ¤ÉAi±»RNVðgÁľ³¢B
+ oûüÖAÌÓ¡ðð·êÎæ¢ÌÅ·i±êÍãÙÇྵܷjB
+ </para>
+
+ </sect1>
+
+ <sect1 id="collections-mapping" revision="4">
+ <title>RNVÌ}bsO</title>
+
+ <para>
+ RNVð}bsO·é½ßÌ}bsOvfÍAC^[tFCXÌ^É˶µÜ·B
+ á¦ÎA<literal><set></literal> vfÍ <literal>Set</literal> ^ð
+ }bsO·é½ßÉg¢Ü·B
+ </para>
+
+ <programlisting><![CDATA[<class name="Product">
+ <id name="serialNumber" column="productSerialNumber"/>
+ <set name="parts">
+ <key column="productSerialNumber" not-null="true"/>
+ <one-to-many class="Part"/>
+ </set>
+</class>]]></programlisting>
+
+ <para>
+ }bsOvfÉÍ <literal><set></literal> Ì¼É <literal><list></literal>A
+ <literal><map></literal>A<literal><bag></literal>A
+ <literal><array></literal>A<literal><primitive-array></literal> ª èÜ·B
+ ã\ƵÄA<literal><map></literal> vfðºLɦµÜ·B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="mappingcollection1" coords="2 65"/>
+ <area id="mappingcollection2" coords="3 65"/>
+ <area id="mappingcollection3" coords="4 65"/>
+ <area id="mappingcollection4" coords="5 65"/>
+ <area id="mappingcollection5" coords="6 65"/>
+ <area id="mappingcollection6" coords="7 65"/>
+ <area id="mappingcollection7" coords="8 65"/>
+ <area id="mappingcollection8" coords="9 65"/>
+ <area id="mappingcollection9" coords="10 65"/>
+ <area id="mappingcollection10" coords="11 65"/>
+ <area id="mappingcollection11" coords="12 65"/>
+ <area id="mappingcollection12" coords="13 65"/>
+ <area id="mappingcollection13" coords="14 65"/>
+ <area id="mappingcollection14" coords="15 65"/>
+ </areaspec>
+ <programlisting><![CDATA[<map
+ name="propertyName"
+ table="table_name"
+ schema="schema_name"
+ lazy="true|extra|false"
+ inverse="true|false"
+ cascade="all|none|save-update|delete|all-delete-orphan|delete-orphan"
+ sort="unsorted|natural|comparatorClass"
+ order-by="column_name asc|desc"
+ where="arbitrary sql where condition"
+ fetch="join|select|subselect"
+ batch-size="N"
+ access="field|property|ClassName"
+ optimistic-lock="true|false"
+ mutable="true|false"
+ node="element-name|."
+ embed-xml="true|false"
+>
+
+ <key .... />
+ <map-key .... />
+ <element .... />
+</map>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="mappingcollection1">
+ <para>
+ <literal>name</literal> RNV^Å évpeB̼O
+ </para>
+ </callout>
+ <callout arearefs="mappingcollection2">
+ <para>
+ <literal>table</literal> iIvV - ftHgÍvpeB¼jRNVe[u̼O
+ iêνÖAÅÍgpµÜ¹ñjB
+ </para>
+ </callout>
+ <callout arearefs="mappingcollection3">
+ <para>
+ <literal>schema</literal> iIvVje[uXL[}̼OB
+ [gvfÅé¾³êÄ¢éXL[}æèDæ³êÜ·B
+ </para>
+ </callout>
+ <callout arearefs="mappingcollection4">
+ <para>
+ <literal>lazy</literal> iIvV - ftHgÍ <literal>true</literal>j
+ xtFb`ð³øÉµAÖAðíɦÉtFb`É·é½ßÉgpµÜ·B
+ ܽÍAuextra-lazyvtFb`ðLøÉ·é½ßÉgpµÜ·B
+ uextra-lazyvtFb`ÍAÙÆñÇÌìÅÍRNVðú»µÜ¹ñ
+ iñíÉå«ÈRNVÉKµÄ¢Ü·jB
+ </para>
+ </callout>
+ <callout arearefs="mappingcollection5">
+ <para>
+ <literal>inverse</literal> iIvV - ftHgÍ <literal>false</literal>j
+ ±ÌRNVªoûüÖAÌutv¤Å éÆ}[NµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="mappingcollection6">
+ <para>
+ <literal>cascade</literal> iIvV - ftHgÍ <literal>none</literal>j
+ qGeBeBÖÌJXP[hìðLøÉµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="mappingcollection7">
+ <para>
+ <literal>sort</literal> iIvVjRNVð©RÈÅ\[g·éêÍ
+ <literal>natural</literal> ðwèµÜ·B
+ é¢ÍComparatorNXðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="mappingcollection8">
+ <para>
+ <literal>order-by</literal> iIvVAJDK1.4ÌÝj
+ <literal>Map</literal>A<literal>Set</literal>AbagÌCe[Vðè`·é
+ e[uJðwè·éƤÉA
+ IvVÆµÄ <literal>asc</literal>A<literal>desc</literal> ðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="mappingcollection9">
+ <para>
+ <literal>where</literal> iIvVjRNVÌõâíÌÛÉg¤
+ CÓÌSQLÌ<literal>WHERE</literal> ððwèµÜ·
+ ipÂ\Èf[^Ìꪾ¯ðRNVªÜÞ׫ƫÉA±êÍLpÅ·jB
+ </para>
+ </callout>
+ <callout arearefs="mappingcollection10">
+ <para>
+ <literal>fetch</literal>iIvV - ftHgÍ <literal>select</literal>j
+ OÉæétFb`AIðtFb`isequential select fetchjA
+ TuZNgtFb`isequential subselect fetchjÌÇê©ðIðµÄ¾³¢B
+ </para>
+ </callout>
+ <callout arearefs="mappingcollection11">
+ <para>
+ <literal>batch-size</literal> iIvV - ftHgÍ <literal>1</literal>j
+ RNVÌCX^XÌxtFb`̽ßÌuob`TCYvðwèµÜ·B
+ </para>
+ </callout>
+ <callout arearefs="mappingcollection12">
+ <para>
+ <literal>access</literal> iIvV - ftHgÍ <literal>property</literal>j
+ RNV^vpeBÌlÉANZX·é½ßÉgp·éíªÅ·B
+ </para>
+ </callout>
+ <callout arearefs="mappingcollection13">
+ <para>
+ <literal>optimistic-lock</literal>iIvV - ftHgÍ <literal>true</literal>j
+ RNVÌóÔðÏ¦é±ÆÉæÁÄA
+ »ÌI[i[Å éGeBeBÌo[WªCNg³êé©ðwèµÜ·B
+ iêνÖAÅÍAÙÆñÇÌêɨ¢Ä³øÉÝè·é̪ÃÅ·Bj
+ </para>
+ </callout>
+ <callout arearefs="mappingcollection14">
+ <para>
+ <literal>mutable</literal>iIvV - ftHgÍ <literal>true</literal>j
+ <literal>false</literal> lÍARNVÌvfªÏX³êÈ¢±Æð\µÜ·
+ i éêÉÍAµptH[}XðßÜ·jB
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <sect2 id="collections-foreignkeys" >
+ <title>RNVÌOL[</title>
+
+ <para>
+ RNVÌCX^XÍAf[^x[XàÅÍA
+ »ÌRNVðL·éGeBeBÌOL[ÉæÁįʳêÜ·B
+ ±ÌOL[ÍRNVe[uÌ <emphasis>RNVL[J</emphasis> ÆÄÎêÜ·B
+ RNVL[JÍ <literal><key></literal> vfÉæè}bsOµÜ·B
+ </para>
+
+ <para>
+ OL[JÉÍnullÝè§ñª é©àµêܹñB
+ ÙÆñÇÌRNVÉÄÍÜéŵå¤B
+ PûüÌêνÖAɨ¢ÄAOL[JÍftHgÅnullð·ÝèÉÈÁĢܷB
+ æÁÄA<literal>not-null="true"</literal> ðwè·éKvª é©àµêܹñB
+ </para>
+
+ <programlisting><![CDATA[<key column="productSerialNumber" not-null="true"/>]]></programlisting>
+
+ <para>
+ OL[̧ñª <literal>ON DELETE CASCADE</literal> ðg¤©àµêܹñB
+ </para>
+
+ <programlisting><![CDATA[<key column="productSerialNumber" on-delete="cascade"/>]]></programlisting>
+
+ <para>
+ <literal><key></literal> vfÌ·×ÄÌè`É¢ÄÍOÌÍðQƵľ³¢B
+ </para>
+
+ </sect2>
+
+ <sect2 id="collections-elements" >
+ <title>RNVÌvf</title>
+
+ <para>
+ RNVͼÌHibernateÌ^ÌÙÆñÇi·×ÄÌî{^AJX^^AR|[lgA
+ ¼ÌGeBeBÖÌQÆjði[·é±ÆªÅ«Ü·B
+ Ì_ÍdvÈá¢ÉÈèÜ·B
+ RNVÉi[³ê½IuWFNgªulvZ}eBNXƵĵíêéÌ©
+ iCtTCNÍRNVÌI[i[É®SÉ˶µÜ·jA
+ àµÍ»ê©gÌCtTCNðÁ½ÊÌGeBeBÖÌQÆÅ é©Ì©Æ¢¤á¢Å·B
+ ãÒÍA2ÂÌIuWFNgÔÌuNvðRNVÉÛµÄ¢éÆ©ÈµÄ¢é¾¯Å·B
+ </para>
+
+ <para>
+ i[³êé^Í <emphasis>RNVvf^</emphasis> ÆÄÎêÜ·B
+ RNVvfÍA<literal><element></literal> Ü½Í <literal><composite-element></literal>
+ Éæè}bsO³êAGeBeBÖÌQÆÌêÉÍ
+ <literal><one-to-many></literal> Ü½Í <literal><many-to-many></literal>
+ Éæè}bsO³êÜ·B
+ ÅÌñÂÍlƵÄvfð}bsOµAÌñÂÍGeBeBÌÖAð}bsO·éÌÉgíêÜ·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="collections-indexed">
+ <title>CfbNXt«ÌRNV</title>
+
+ <para>
+ setÆbagðSÄÌRNV}bsOÉÍA
+ RNVe[uÌÉ <emphasis>CfbNXpÌJ</emphasis> ªKvÅ·B
+ »ÌJÉAzñâ <literal>List</literal> ÌCfbNXA
+ àµÍ <literal>Map</literal> ÌL[ð}bsOµÜ·B
+ <literal>Map</literal> ÌCfbNXÍA
+ <literal><map-key></literal> Éæè}bsO³ê½î{^©A
+ <literal><map-key-many-to-many></literal> Éæè}bsO³ê½GeBeBÌÖA©A
+ é¢Í <literal><composite-map-key></literal> Éæè}bsO³ê½R|Wbg^ÉÈèÜ·B
+ zñ©XgÌCfbNXÍAíÉ <literal>integer</literal> ^ÅA
+ <literal><list-index></literal> vfÉæè}bsOµÜ·B
+ }bsO³ê½JÉÍV[PVÈ®ði[µÜ·iftHgÅÍ0©çÔªt¯çêÜ·jB
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="index1" coords="2 45"/>
+ <area id="index2" coords="3 45"/>
+ </areaspec>
+ <programlisting><![CDATA[<list-index
+ column="column_name"
+ base="0|1|..."/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="index1">
+ <para>
+ <literal>column_name</literal>iK{j:RNVCfbNXÌlðÛ·éJ̼OB
+ </para>
+ </callout>
+ <callout arearefs="index2">
+ <para>
+ <literal>base</literal>iIvVAftHgÍ <literal>0</literal>j:
+ XgàµÍzñÌÅÌvfÉY·éCfbNXJÌlB
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <programlistingco>
+ <areaspec>
+ <area id="mapkey1" coords="2 45"/>
+ <area id="mapkey2" coords="3 45"/>
+ <area id="mapkey3" coords="4 45"/>
+ </areaspec>
+ <programlisting><![CDATA[<map-key
+ column="column_name"
+ formula="any SQL expression"
+ type="type_name"
+ node="@attribute-name"
+ length="N"/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="mapkey1">
+ <para>
+ <literal>column</literal>iIvVj: RNVCfbNXÌlðÛ·éJ̼OB
+ </para>
+ </callout>
+ <callout arearefs="mapkey2">
+ <para>
+ <literal>formula</literal>iIvVj: MapÌL[ð]¿·éÌÉgíêéSQL®B
+ </para>
+ </callout>
+ <callout arearefs="mapkey3">
+ <para>
+ <literal>type</literal>iK{j: MapÌL[Ì^B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <programlistingco>
+ <areaspec>
+ <area id="indexmanytomany1" coords="2 45"/>
+ <area id="indexmanytomany2" coords="3 45"/>
+ <area id="indexmanytomany3" coords="4 45"/>
+ </areaspec>
+ <programlisting><![CDATA[<map-key-many-to-many
+ column="column_name"
+ formula="any SQL expression"
+ class="ClassName"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="indexmanytomany1">
+ <para>
+ <literal>column</literal> iIvVj:
+ RNVCfbNXÌl̽ßÌOL[J̼OB
+ </para>
+ </callout>
+ <callout arearefs="indexmanytomany2">
+ <para>
+ <literal>formula</literal> iIvVj:
+ MapÌL[̽ßÌOL[ð]¿·é½ßÉg¤SQL®B
+ </para>
+ </callout>
+ <callout arearefs="indexmanytomany3">
+ <para>
+ <literal>class</literal> iK{j:
+ MapÌL[ƵÄgíêéGeBeBNXB
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+
+ <para>
+ àµe[uÉCfbNXJªÈÄàAvpeB^ÆµÄ <literal>List</literal> ðg¢½¯êÎA
+ HibernateÌ <emphasis><bag></emphasis> ƵÄvpeBð}bsOµÜ·B
+ bagÍf[^x[X©ç³³êéAð۵ܹñB
+ µ©µAiãÅj\[gµ½èAiSQLÅjt¯µ½èiorder byj·é±ÆàūܷB
+ </para>
+
+ </sect2>
+
+ <para>
+ ½ÌêÊIÈ[VifðJo[µ½½ßÉA
+ RNV̽ßÉpÅ«é}bsOÉÍ©Èè̪ èÜ·B
+ lXÈ}bsO龪ÇÌæ¤Éf[^x[Xe[uÉÏ·³êé©ðmé½ßÉA
+ XL[}¶¬c[ðgÁÄÝéÆÇ¢Åµå¤B
+ </para>
+
+ <sect2 id="collections-ofvalues" revision="2">
+ <title>lÌRNVƽνÖA</title>
+
+ <para>
+ lÌRNVâ½Î½ÖAÍAêpÌ <emphasis>RNVe[u</emphasis> ªKvÅ·B
+ ±Ìe[uÍAOL[JÆA
+ <emphasis>RNVvfÌJ</emphasis> ÆA
+ êÉæÁÄÍCfbNXJð¿Ü·B
+ </para>
+
+ <para>
+ lÌRNV̽ßÉA<literal><element></literal>^OðgpµÜ·B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="element1b" coords="2 50"/>
+ <area id="element2b" coords="3 50"/>
+ <area id="element3b" coords="4 50"/>
+ </areaspec>
+ <programlisting><![CDATA[<element
+ column="column_name"
+ formula="any SQL expression"
+ type="typename"
+ length="L"
+ precision="P"
+ scale="S"
+ not-null="true|false"
+ unique="true|false"
+ node="element-name"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="element1b">
+ <para>
+ <literal>column</literal> iIvVj: RNVÌvfÌlðÛ·éJ̼OB
+ </para>
+ </callout>
+ <callout arearefs="element2b">
+ <para>
+ <literal>formula</literal> iIvVj: vfð]¿·é½ßÉg¤SQL®B
+ </para>
+ </callout>
+ <callout arearefs="element3b">
+ <para>
+ <literal>type</literal> iK{jRNVÌvfÌ^B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ <emphasis>½Î½ÖA</emphasis> Í <literal><many-to-many></literal> vfÅwèµÜ·B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="manytomany1" coords="2 60"/>
+ <area id="manytomany2" coords="3 60"/>
+ <area id="manytomany3" coords="4 60"/>
+ <area id="manytomany4" coords="5 60"/>
+ <area id="manytomany5" coords="6 60"/>
+ <area id="manytomany6" coords="7 60"/>
+ <area id="manytomany7" coords="8 60"/>
+ <area id="manytomany8" coords="9 60"/>
+ </areaspec>
+ <programlisting><![CDATA[<many-to-many
+ column="column_name"
+ formula="any SQL expression"
+ class="ClassName"
+ fetch="select|join"
+ unique="true|false"
+ not-found="ignore|exception"
+ entity-name="EntityName"
+ property-ref="propertyNameFromAssociatedClass"
+ node="element-name"
+ embed-xml="true|false"
+ />]]></programlisting>
+ <calloutlist>
+ <callout arearefs="manytomany1">
+ <para>
+ <literal>column</literal> iIvVj: OL[JÌvf̼OB
+ </para>
+ </callout>
+ <callout arearefs="manytomany2">
+ <para>
+ <literal>formula</literal> iIvVj: OL[lÌvfð]¿·é½ßÉg¤SQL®B
+ </para>
+ </callout>
+ <callout arearefs="manytomany3">
+ <para>
+ <literal>class</literal> iK{j: ÖANX̼OB
+ </para>
+ </callout>
+ <callout arearefs="manytomany4">
+ <para>
+ <literal>fetch</literal> (IvV - ftHgÍ <literal>join</literal>):
+ ÖA̽ßÉAO©IðtFb`ðLøÉµÜ·B
+ ±êÍÁêÈP[XÅ·ªAGeBeBƼÌGeBeBÆÌ½Î½ÖWð
+ iPÂÌ <literal>SELECT</literal> Éæèj®SɦÉtFb`·é½ßÉÍA
+ »ÌRNV©Ì¾¯ÅÈA
+ lXgµ½vfÅ é <literal><many-to-many></literal> ̱̮«É¢Äà
+ <literal>join</literal> tFb`ðLø·éKvª èÜ·B
+ </para>
+ </callout>
+ <callout arearefs="manytomany5">
+ <para>
+ <literal>unique</literal> iIvVj:
+ OL[JÌj[N§ñÌDDL¶¬ðLøÉµÜ·B
+ ±êÍAÖA̽dxðÀãêνɵܷB
+ </para>
+ </callout>
+ <callout arearefs="manytomany6">
+ <para>
+ <literal>not-found</literal> iIvV - ftHgÍ <literal>exception</literal>j
+ QÆæÌsªÈ¢OL[ðÇÌæ¤Éµ¤©ðwèµÜ·B
+ <literal>ignore</literal> É·éÆAsªÈ¢±ÆðÖAª³¢àÌÆµÄµ¢Ü·B
+ </para>
+ </callout>
+ <callout arearefs="manytomany7">
+ <para>
+ <literal>entity-name</literal> iIvVj:
+ <literal>class</literal> ÌãÖÅ éÖANXÌGeBeB¼B
+ <literal>class</literal> ÌãíèÉwè·éAÖANXÌGeBeB¼B
+ </para>
+ </callout>
+ <callout arearefs="manytomany8">
+ <para>
+ <literal>property-ref</literal>: iIvVj
+ ±ÌOL[É·éÖANXÌvpeB¼B
+ wèµÈ©Á½êÍAÖANXÌåL[ðg¢Ü·B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ Ⱥɢ©áð¦µÜ·B
+ ܸÍStringÌsetÉÖµÄÌáÅ·B
+ </para>
+
+ <programlisting><![CDATA[<set name="names" table="person_names">
+ <key column="person_id"/>
+ <element column="person_name" type="string"/>
+</set>]]></programlisting>
+
+ <para>
+ ®lðÜÞbagibagÍ <literal>order-by</literal> ®«ÉæÁĽªè`³êĢܷj
+ </para>
+
+ <programlisting><![CDATA[<bag name="sizes"
+ table="item_sizes"
+ order-by="size asc">
+ <key column="item_id"/>
+ <element column="size" type="integer"/>
+</bag>]]></programlisting>
+
+ <para>
+ GeBeBÌzñ - ±ÌêA½Î½ÌÖAÅ·B
+ </para>
+
+ <programlisting><![CDATA[<array name="addresses"
+ table="PersonAddress"
+ cascade="persist">
+ <key column="personId"/>
+ <list-index column="sortOrder"/>
+ <many-to-many column="addressId" class="Address"/>
+</array>]]></programlisting>
+
+ <para>
+ ¶ñÆútÌmap
+ </para>
+
+ <programlisting><![CDATA[<map name="holidays"
+ table="holidays"
+ schema="dbo"
+ order-by="hol_name asc">
+ <key column="id"/>
+ <map-key column="hol_name" type="string"/>
+ <element column="hol_date" type="date"/>
+</map>]]></programlisting>
+
+ <para>
+ R|[lgÌlistiÌÍÅڵྵܷj
+ </para>
+
+ <programlisting><![CDATA[<list name="carComponents"
+ table="CarComponents">
+ <key column="carId"/>
+ <list-index column="sortOrder"/>
+ <composite-element class="CarComponent">
+ <property name="price"/>
+ <property name="type"/>
+ <property name="serialNumber" column="serialNum"/>
+ </composite-element>
+</list>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="collections-onetomany">
+ <title>êνÖA</title>
+
+ <para>
+ <emphasis>êνÖA</emphasis> ÍARNV¥e[uðA
+ OL[Éæè2ÂÌNXÌe[uðÖAt¯Ü·B
+ ±Ì}bsOÍWIÈJavaÌRNVÌZ}eBNXð¢Â©¸¢Ü·B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ GeBeBNXÌCX^XÍA
+ 2ÂÈãÌRNVÌCX^XÉ®µÄÍ¢¯Ü¹ñB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ RNVÉÜÜêéGeBeBNXÌCX^XÍA
+ RNVCfbNXÌlƵÄ2xÈã»êÄÍ¢¯Ü¹ñB
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ <literal>Product</literal> ©ç <literal>Part</literal> ÖÌÖAÍA
+ <literal>Part</literal> e[uÖÌOL[JÆAêÉæÁÄÍCfbNXJªKvÅ·B
+ <literal><one-to-many></literal> ^OÍA±êªêνÖAŠ鱯ð\µÄ¢Ü·B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="onetomany1" coords="2 60"/>
+ <area id="onetomany2" coords="3 60"/>
+ <area id="onetomany3" coords="4 60"/>
+ </areaspec>
+ <programlisting><![CDATA[<one-to-many
+ class="ClassName"
+ not-found="ignore|exception"
+ entity-name="EntityName"
+ node="element-name"
+ embed-xml="true|false"
+ />]]></programlisting>
+ <calloutlist>
+ <callout arearefs="onetomany1">
+ <para>
+ <literal>class</literal> iK{j: ÖANX̼OB
+ </para>
+ </callout>
+ <callout arearefs="onetomany2">
+ <para>
+ <literal>not-found</literal> iIvV - ftHgÍ <literal>exception</literal>j:
+ QÆæÌsªÈ¢LbV
³ê½¯ÊqðÇÌæ¤Éµ¤©ðwèµÜ·B
+ <literal>ignore</literal> ðwè·éÆAsªÈ¢±ÆðÖAªÈ¢àÌÆµÄµ¢Ü·B
+ </para>
+ </callout>
+ <callout arearefs="onetomany3">
+ <para>
+ <literal>entity-name</literal> iIvVj:
+ <literal>class</literal> ÌãÖÅ éÖANXÌGeBeB¼B
+ <literal>class</literal> ÌãíèÉwè·éAÖANXÌGeBeB¼B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ <literal><one-to-many></literal> vfÍJðé¾·éKvªÈ¢±ÆÉӵľ³¢B
+ ¯lÉ <literal>e[u</literal> ¼ðwè·éKvà èܹñB
+ </para>
+
+ <para>
+ <emphasis>ÆÄàdvÈÓ:</emphasis> ൠ<literal><one-to-many></literal>
+ ÖAÌOL[Jª <literal>NOT NULL</literal>Æé¾³ê½êA
+ <literal><key></literal> }bsOÉ <literal>not-null="true"</literal> ðé¾·é©A
+ RNV}bsOÉ <literal>inverse="true"</literal> ðt¯½ãÅA
+ <emphasis>oûüÖAðg¤</emphasis> Kvª èÜ·B
+ oûüÖAÉ¢ÄͱÌÍÌãÌÙ¤ÅྵܷB
+ </para>
+
+ <para>
+ ÌáÍA¼Ìi<literal>Part</literal> Ìi±IÈvpeBÅ é <literal>partName</literal>j
+ Éæé <literal>Part</literal> GeBeBÌmapð\µÄ¢Ü·B
+ formulaÉæéCfbNXðgÁĢ鱯Éӵľ³¢B
+ </para>
+
+ <programlisting><![CDATA[<map name="parts"
+ cascade="all">
+ <key column="productId" not-null="true"/>
+ <map-key formula="partName"/>
+ <one-to-many class="Part"/>
+</map>]]></programlisting>
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="collections-advancedmappings">
+ <title>xÈRNV¥}bsO</title>
+
+ <sect2 id="collections-sorted" revision="2">
+ <title>\[g³ê½RNV</title>
+
+ <para>
+ HibernateÍ <literal>java.util.SortedMap</literal> Æ <literal>java.util.SortedSet</literal>
+ ðÀµ½RNVðT|[gµÄ¢Ü·B
+ JÒÍ}bsOè`t@CÉRp[^ðwèµÈ¯êÎÈèܹñB
+ </para>
+
+ <programlisting><![CDATA[<set name="aliases"
+ table="person_aliases"
+ sort="natural">
+ <key column="person"/>
+ <element column="name" type="string"/>
+</set>
+
+<map name="holidays" sort="my.custom.HolidayComparator">
+ <key column="year_id"/>
+ <map-key column="hol_name" type="string"/>
+ <element column="hol_date" type="date"/>
+</map>]]></programlisting>
+
+ <para>
+ <literal>sort</literal> ®«ÉÝèÅ«élÍ <literal>unsorted</literal> Æ <literal>natural</literal>
+ ¨æÑA<literal>java.util.Comparator</literal> ðÀµ½NX̼OÅ·B
+ </para>
+
+ <para>
+ \[g³ê½RNVÍÀ¿IÉÍ <literal>java.util.TreeSet</literal> â
+ <literal>java.util.TreeMap</literal> Ìæ¤ÉU¢Ü·B
+ </para>
+
+ <para>
+ àµf[^x[X©gÉRNVÌvfðÀ׳¹½¢ÈçA
+ <literal>set</literal> â <literal>bag</literal>A<literal>map</literal> Ì
+ <literal>order-by</literal> ®«ðg¢Ü·B
+ ±Ìð@ÍJDK1.4AàµÍ»êÈãÌo[WÅpÂ\Å·
+ i<literal>LinkedHashSet</literal> Ü½Í <literal>LinkedHashMap</literal>ðgÁÄÀ³êĢܷjB
+ ®ñÍãÅÍÈASQLNGàÅÀs³êÜ·B
+ </para>
+
+ <programlisting><![CDATA[<set name="aliases" table="person_aliases" order-by="lower(name) asc">
+ <key column="person"/>
+ <element column="name" type="string"/>
+</set>
+
+<map name="holidays" order-by="hol_date, hol_name">
+ <key column="year_id"/>
+ <map-key column="hol_name" type="string"/>
+ <element column="hol_date" type="date"/>
+</map>]]></programlisting>
+
+ <para>
+ <literal>order-by</literal> ®«ÌlªSQL½ßÅ ÁÄAHQL½ßÅÍÈ¢±ÆÉӵľ³¢I
+ </para>
+
+ <para>
+ ÖAÍARNVÌ <literal>filter()</literal> ðg¤±ÆÅA
+ ÀsÉCÓÌcriteriaÉæÁÄ\[g·é±ÆàÂ\Å·B
+ </para>
+
+ <programlisting><![CDATA[sortedUsers = s.createFilter( group.getUsers(), "order by this.name" ).list();]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="collections-bidirectional" revision="1">
+ <title>oûüÖA</title>
+
+ <para>
+ <emphasis>oûüÖA</emphasis> ÍÖAÌÇ¿çu¤v©çÅàirQ[VūܷB
+ 2íÞÌoûüÖAªT|[g³êĢܷB
+
+ <variablelist>
+ <varlistentry>
+ <term>one-to-many</term>
+ <listitem>
+ <para>
+ Фªset©bagAà¤ÐûªPêlÅ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>many-to-many</term>
+ <listitem>
+ <para>
+ ¼¤ªset©bagÅ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </para>
+
+ <para>
+ 2Â̽νÖAů¶f[^x[Xe[uð}bsOµA
+ Ðûð <emphasis>inverse</emphasis> ƵÄ龷鱯ÅA
+ oûü̽νÖAðwè·é±ÆªoÜ·
+ iÇ¿çðinverseÉIñ¾ÆµÄàA»¿ç¤ÉÍCfbNXt«ÌRNVÍg¦Ü¹ñjB
+ </para>
+
+ <para>
+ Éoûü̽νÖAÌáð¦µÜ·B
+ eJeSͽÌACeð±ƪūAeACeͽÌJeSÉ®·é±ÆªoÜ·B
+ </para>
+
+ <programlisting><![CDATA[<class name="Category">
+ <id name="id" column="CATEGORY_ID"/>
+ ...
+ <bag name="items" table="CATEGORY_ITEM">
+ <key column="CATEGORY_ID"/>
+ <many-to-many class="Item" column="ITEM_ID"/>
+ </bag>
+</class>
+
+<class name="Item">
+ <id name="id" column="ITEM_ID"/>
+ ...
+
+ <!-- inverse end -->
+ <bag name="categories" table="CATEGORY_ITEM" inverse="true">
+ <key column="ITEM_ID"/>
+ <many-to-many class="Category" column="CATEGORY_ID"/>
+ </bag>
+</class>]]></programlisting>
+
+ <para>
+ ÖAÌinverse¤ÉÌÝsíê½ÏXÍi±» <emphasis>³êܹñ</emphasis>B
+ ±êÍAHibernateÍSÄÌoûüÖAÉ¢ÄAãÉQÂÌ\»ðÁĢ鯢¤Ó¡Å·B
+ ÂÜèêÂÍA©çBÖÌNÅAà¤êÂÍB©çAÖÌNÆ¢¤±ÆÅ·B
+ JavaÌIuWFNgfÉ¢Äl¦AJavaÅoûüÖWðǤâÁÄìé©ðl¦êÎA
+ ±êÍðµâ·¢Å·BºLÉAJavaÅÌoûüÖAð¦µÜ·B
+ </para>
+
+ <programlisting><![CDATA[
+category.getItems().add(item); // The category now "knows" about the relationship
+item.getCategories().add(category); // The item now "knows" about the relationship
+
+session.persist(item); // The relationship won't be saved!
+session.persist(category); // The relationship will be saved]]></programlisting>
+
+ <para>
+ ÖAÌinverseÅÍÈ¢¤ÍAãÌ\»ðf[^x[XÉÛ¶·éÌÉgíêÜ·B
+ </para>
+
+ <para>
+ oûüÌêνÖAðè`·éÉÍA
+ êνÖAð½ÎêÖAƯ¶e[uÌJÉ}bsOµA
+ ½¤É <literal>inverse="true"</literal> Æé¾µÜ·B
+ </para>
+
+ <programlisting><![CDATA[<class name="Parent">
+ <id name="id" column="parent_id"/>
+ ....
+ <set name="children" inverse="true">
+ <key column="parent_id"/>
+ <one-to-many class="Child"/>
+ </set>
+</class>
+
+<class name="Child">
+ <id name="id" column="child_id"/>
+ ....
+ <many-to-one name="parent"
+ class="Parent"
+ column="parent_id"
+ not-null="true"/>
+</class>]]></programlisting>
+
+ <para>
+ ÖAÌÐ¤É <literal>inverse="true"</literal> ðÝèµÄàA
+ JXP[hìÉe¿ð^¦Ü¹ñB±êçͼðµ½TOÅ·I
+ </para>
+
+ </sect2>
+
+ <sect2 id="collections-indexedbidirectional">
+ <title>CfbNXt«RNVÆoûüÖA</title>
+ <para>
+ Фª <literal><list></literal> â <literal><map></literal> Å é
+ oûüÖAÍAÁÉæl¦éKvª èÜ·B
+ CfbNXJÉ}bv³êéqNXÌvpeBª éêÍAâèȢŷB
+ RNVÌ}bsOÅ <literal>inverse="true"</literal> ðg¢±¯çêÜ·B
+ </para>
+
+ <programlisting><![CDATA[<class name="Parent">
+ <id name="id" column="parent_id"/>
+ ....
+ <map name="children" inverse="true">
+ <key column="parent_id"/>
+ <map-key column="name"
+ type="string"/>
+ <one-to-many class="Child"/>
+ </map>
+</class>
+
+<class name="Child">
+ <id name="id" column="child_id"/>
+ ....
+ <property name="name"
+ not-null="true"/>
+ <many-to-one name="parent"
+ class="Parent"
+ column="parent_id"
+ not-null="true"/>
+</class>]]></programlisting>
+
+ <para>
+ µ©µAqNXÉ»Ìæ¤ÈvpeBªÈ¢êÍA
+ ÖAð^ÉoûüÅ éÆl¦é±ÆªÅ«Ü¹ñ
+ iÖAÌФÉpÅ«éîñª èÜ·ªAà¤êûÉÍ èܹñjB
+ ±ÌêÍARNVÉ <literal>inverse="true"</literal> ð}bsOūܹñB
+ ãíèÉAÌæ¤È}bsOªg¦Ü·B
+ </para>
+
+ <programlisting><![CDATA[<class name="Parent">
+ <id name="id" column="parent_id"/>
+ ....
+ <map name="children">
+ <key column="parent_id"
+ not-null="true"/>
+ <map-key column="name"
+ type="string"/>
+ <one-to-many class="Child"/>
+ </map>
+</class>
+
+<class name="Child">
+ <id name="id" column="child_id"/>
+ ....
+ <many-to-one name="parent"
+ class="Parent"
+ column="parent_id"
+ insert="false"
+ update="false"
+ not-null="true"/>
+</class>]]></programlisting>
+
+ <para>
+ ÓF ±Ì}bsOÅÍAÖAÌRNVl̤ÍA
+ OL[ðAbvf[g·éÓCª èÜ·B
+ <!-- TODO: Does this really result in some unnecessary update statements? -->
+ </para>
+
+ </sect2>
+
+ <sect2 id="collections-ternary">
+ <title>3ÖA</title>
+
+ <para>
+ 3ÖAÌ}bsOÉÍ3ÂÌAv[`ª èÜ·B
+ 1ÂÚÍÖAðCfbNXÆµÄ <literal>Map</literal> ðgp·éAv[`Å·B
+ </para>
+
+ <programlisting><![CDATA[<map name="contracts">
+ <key column="employer_id" not-null="true"/>
+ <map-key-many-to-many column="employee_id" class="Employee"/>
+ <one-to-many class="Contract"/>
+</map>]]></programlisting>
+
+ <programlisting><![CDATA[<map name="connections">
+ <key column="incoming_node_id"/>
+ <map-key-many-to-many column="outgoing_node_id" class="Node"/>
+ <many-to-many column="connection_id" class="Connection"/>
+</map>]]></programlisting>
+
+ <para>
+ 2ÂÚÍPÉÖAðGeBeB¥NXƵÄfðìè¼·Av[`ÅA
+ pÉÉgíêÜ·B
+ </para>
+
+ <para>
+ ÅãÍcompositevfðg¤Av[`Å·B±êÉÖ·éc_ÍãÙÇs¢Ü·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="collections-idbag" revision="1">
+ <title><literal><idbag></literal>Ìgp</title>
+
+ <para>
+ ¡L[Í«¢àÌÅAGeBeBÍlH̯Êq(ãL[)ðÂ׫Š鯢¤l¦û©çÍA
+ ½Î½ÖAÆlÌRNVð¡L[ðp¢½e[uÖ}bsO·éÌ͵ïÉ´¶é©àµêܹñI
+ m©É±Ìl¦ûÉÍc_Ì]nª èÜ·B
+ ÈÖAe[uÍãL[ðgÁÄàvð¾çêÈ¢æ¤Év¦é©çÅ·
+ i¬lÌRNVÍvª é <emphasis>©à</emphasis> µêܹñªjB
+ ÆÍ¢¦AHibernateÍãL[ðÂe[uֽνÖAÆlÌRNVð
+ }bsO·é@\àõ¦Ä¢Ü·B
+ </para>
+
+ <para>
+ bagÌZ}eBbNXðÁ½ <literal>List</literal>iÜ½Í <literal>Collection</literal>jð
+ <literal><idbag></literal> vfÉ}bsOūܷB
+ </para>
+
+<programlisting><![CDATA[<idbag name="lovers" table="LOVERS">
+ <collection-id column="ID" type="long">
+ <generator class="sequence"/>
+ </collection-id>
+ <key column="PERSON1"/>
+ <many-to-many column="PERSON2" class="Person" fetch="join"/>
+</idbag>]]></programlisting>
+
+ <para>
+ ²¶mÌæ¤É <literal><idbag></literal> ÍGeBeB¥NXÌæ¤É
+ lHIÈidWFl[^ðÁĢܷI
+ ÙÈéãL[ð»ê¼êÌRNVÌñÉèÄÜ·B
+ µ©µÈªçAHibernateÍ ésÌãL[Ìlð©Â¯o·@\ðÁĢܹñB
+ </para>
+
+ <para>
+ <literal><idbag></literal> ðXV·éptH[}XÍ
+ ÊíÌ <literal><bag></literal> æèàÇ¢±ÆÉڵľ³¢I
+ HibernateÍÂXÌsðøÊIÉ©Â¯é±ÆªÅ«A
+ listâmapAsetÌæ¤ÉÂÊÉ»ÌsðXVAíūܷB
+ </para>
+
+ <para>
+ »ÝÌÀÅÍA<literal>native</literal> Æ¢¤id¶¬íªð
+ <literal><idbag></literal> RNV̯ÊqÉεÄg¦Ü¹ñB
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <!--undocumenting this stuff -->
+
+ <!--sect1 id="collections-heterogeneous">
+ <title>Heterogeneous Associations</title>
+
+ <para>
+ The <literal><many-to-any></literal> and <literal><index-many-to-any></literal>
+ elements provide for true heterogeneous associations. These mapping elements work in the
+ same way as the <literal><any></literal> element - and should also be used
+ rarely, if ever.
+ </para>
+
+ </sect1-->
+
+ <sect1 id="collections-example" revision="1">
+ <title>RNVÌá</title>
+
+ <para>
+ ±êÜÅÌßÌà¾ÅÍðµÉ¢ÌÅAȺÌáð©Ä¾³¢B
+ </para>
+
+ <programlisting><![CDATA[package eg;
+import java.util.Set;
+
+public class Parent {
+ private long id;
+ private Set children;
+
+ public long getId() { return id; }
+ private void setId(long id) { this.id=id; }
+
+ private Set getChildren() { return children; }
+ private void setChildren(Set children) { this.children=children; }
+
+ ....
+ ....
+}]]></programlisting>
+
+ <para>
+ ±ÌNXÍ <literal>Child</literal> CX^XÌRNVðÁĢܷB
+ àµeXÌchildªÅåÅàêÂÌparentðÁÄ¢éÈçÎAÅà©RÈ}bsOÍêνÖAÅ·B
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="Parent">
+ <id name="id">
+ <generator class="sequence"/>
+ </id>
+ <set name="children">
+ <key column="parent_id"/>
+ <one-to-many class="Child"/>
+ </set>
+ </class>
+
+ <class name="Child">
+ <id name="id">
+ <generator class="sequence"/>
+ </id>
+ <property name="name"/>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ ±êÍȺÌe[uè`É}bsOµÜ·B
+ </para>
+
+ <programlisting><![CDATA[create table parent ( id bigint not null primary key )
+create table child ( id bigint not null primary key, name varchar(255), parent_id bigint )
+alter table child add constraint childfk0 (parent_id) references parent]]></programlisting>
+
+ <para>
+ àµparentª <emphasis>v</emphasis> ³êéÈçAoûüÌêνÖAðgpµÄ¾³¢B
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="Parent">
+ <id name="id">
+ <generator class="sequence"/>
+ </id>
+ <set name="children" inverse="true">
+ <key column="parent_id"/>
+ <one-to-many class="Child"/>
+ </set>
+ </class>
+
+ <class name="Child">
+ <id name="id">
+ <generator class="sequence"/>
+ </id>
+ <property name="name"/>
+ <many-to-one name="parent" class="Parent" column="parent_id" not-null="true"/>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ <literal>NOT NULL</literal> §ñÉӵľ³¢B
+ </para>
+
+ <programlisting><![CDATA[create table parent ( id bigint not null primary key )
+create table child ( id bigint not null
+ primary key,
+ name varchar(255),
+ parent_id bigint not null )
+alter table child add constraint childfk0 (parent_id) references parent]]></programlisting>
+
+ <para>
+ é¢ÍA൱ÌÖAÍPûüÅ é׫Æå£·éÌÅ êÎA
+ <literal><key></literal> É <literal>NOT NULL</literal> §ñðé¾Å«Ü·B
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="Parent">
+ <id name="id">
+ <generator class="sequence"/>
+ </id>
+ <set name="children">
+ <key column="parent_id" not-null="true"/>
+ <one-to-many class="Child"/>
+ </set>
+ </class>
+
+ <class name="Child">
+ <id name="id">
+ <generator class="sequence"/>
+ </id>
+ <property name="name"/>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ êûÅAàµchildª¡ÌparentðÄéÈçÎA½Î½ÖAªÃÅ·B
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="Parent">
+ <id name="id">
+ <generator class="sequence"/>
+ </id>
+ <set name="children" table="childset">
+ <key column="parent_id"/>
+ <many-to-many class="Child" column="child_id"/>
+ </set>
+ </class>
+
+ <class name="Child">
+ <id name="id">
+ <generator class="sequence"/>
+ </id>
+ <property name="name"/>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ e[uè`ÍÈºÌæ¤ÉÈèÜ·B
+ </para>
+
+ <programlisting><![CDATA[create table parent ( id bigint not null primary key )
+create table child ( id bigint not null primary key, name varchar(255) )
+create table childset ( parent_id bigint not null,
+ child_id bigint not null,
+ primary key ( parent_id, child_id ) )
+alter table childset add constraint childsetfk0 (parent_id) references parent
+alter table childset add constraint childsetfk1 (child_id) references child]]></programlisting>
+
+ <para>
+ parent/childÖWÌ}bsOÉ¢ÄÌæè½Ìáâ®SÈèªKvÅ êÎA
+ <xref linkend="example-parentchild"/> ð²¾³¢B
+ </para>
+
+ <para>
+ ܽA³çÉÁêÈÖA}bsOàÂ\Å·BÌÍÅÚµq×Ü·B
+ </para>
+
+ </sect1>
+
+</chapter>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/component_mapping.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/component_mapping.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/component_mapping.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/component_mapping.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,396 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="components">
+ <title>R|[lgÌ}bsO</title>
+
+ <para>
+ <emphasis>R|[lg</emphasis> ÌTOÍAHibernateðʵÄlXÈóµÌÅ
+ ÙÈéÚI̽ßÉÄp³êÜ·B
+ </para>
+
+ <sect1 id="components-dependentobjects" revision="2" >
+ <title>˶IuWFNg</title>
+
+ <para>
+ R|[lgÍAGeBeBÌQÆÅÍÈl^ƵÄi±»³ê½A
+ ïܳê½IuWFNgÅ·BR|[lgÆ¢¤¾tÉ¢ÄÍAR|WVÆ¢¤
+ IuWFNgwüÌTOðQƵľ³¢iA[LeN`xÌR|[lgÅÍ èܹñjB
+ á¦ÎAȺÌPersonfÌæ¤ÈàÌÅ·B
+ </para>
+
+ <programlisting><![CDATA[public class Person {
+ private java.util.Date birthday;
+ private Name name;
+ private String key;
+ public String getKey() {
+ return key;
+ }
+ private void setKey(String key) {
+ this.key=key;
+ }
+ public java.util.Date getBirthday() {
+ return birthday;
+ }
+ public void setBirthday(java.util.Date birthday) {
+ this.birthday = birthday;
+ }
+ public Name getName() {
+ return name;
+ }
+ public void setName(Name name) {
+ this.name = name;
+ }
+ ......
+ ......
+}]]></programlisting>
+
+<programlisting><![CDATA[public class Name {
+ char initial;
+ String first;
+ String last;
+ public String getFirst() {
+ return first;
+ }
+ void setFirst(String first) {
+ this.first = first;
+ }
+ public String getLast() {
+ return last;
+ }
+ void setLast(String last) {
+ this.last = last;
+ }
+ public char getInitial() {
+ return initial;
+ }
+ void setInitial(char initial) {
+ this.initial = initial;
+ }
+}]]></programlisting>
+
+ <para>
+ ¢ÜA<literal>Name</literal> Í <literal>Person</literal> ÌR|[lgƵÄ
+ i±»·é±ÆªoÜ·B±±Å <literal>Name</literal> Íi±»®«ÉεÄgetterA
+ setter\bhðè`µÜ·ªAC^[tFCXâ¯ÊqvpeBðè`·éKvª
+ È¢±ÆÉӵĺ³¢B
+ </para>
+
+ <para>
+ }bsOè`ÍÈºÌæ¤ÉÈèÜ·B
+ </para>
+
+ <programlisting><![CDATA[<class name="eg.Person" table="person">
+ <id name="Key" column="pid" type="string">
+ <generator class="uuid"/>
+ </id>
+ <property name="birthday" type="date"/>
+ <component name="Name" class="eg.Name"> <!-- class attribute optional -->
+ <property name="initial"/>
+ <property name="first"/>
+ <property name="last"/>
+ </component>
+</class>]]></programlisting>
+
+ <para>
+ Persone[uÍ <literal>pid</literal>A
+ <literal>birthday</literal>A
+ <literal>initial</literal>A
+ <literal>first</literal>A
+ <literal>last</literal> Jð¿Ü·B
+ </para>
+
+ <para>
+ SÄÌl^Ìæ¤ÉAR|[lgÍQÆÌ¤Lð·é±ÆªÅ«Ü¹ñB
+ ¾¢·¦éÆAñlÌPersonͯ¶¼Oð±ƪūܷªAñÂÌPersonIuWFNgÍ
+ "lª¯¶¾¯"ÌÊXÌnameIuWFNgðÜñŢ鯢¤±ÆÅ·B
+ R|[lgÌnulllÌZ}eBNXÍ <emphasis>AhzbN</emphasis> Å·B
+ R|[lgÌIuWFNgðÄÇÝÝ·éÛAHibernateÍR|[lgÌ·×ÄÌJª
+ nullÅ éÈçR|[lg©ÌªnullÅ éÆl¦Ü·B
+ ±êÍåïÌêâè èܹñB
+
+ </para>
+
+ <para>
+ R|[lgÌ®«ÍÇñÈHibernateÌ^Åà\¢Ü¹ñiRNVAmany-to-oneÖAA
+ ¼ÌR|[lgÈÇjBlXg³ê½R|[lgÍŽÉgíÈ¢Æl¦é׫ÅÍ
+ <emphasis> èܹñ</emphasis> BHibernateÍñíÉ«ßÌש¢IuWFNgfðT|[g·éæ¤ÉÓ}³êĢܷB
+ </para>
+
+ <para>
+ <literal><component></literal> vfÍeGeBeBÖÌtQÆÆµÄAR|[lgNXÌ
+ ®«ð}bsO·é <literal><parent></literal> TuvfðgpūܷB
+ </para>
+
+ <programlisting><![CDATA[<class name="eg.Person" table="person">
+ <id name="Key" column="pid" type="string">
+ <generator class="uuid"/>
+ </id>
+ <property name="birthday" type="date"/>
+ <component name="Name" class="eg.Name" unique="true">
+ <parent name="namedPerson"/> <!-- reference back to the Person -->
+ <property name="initial"/>
+ <property name="first"/>
+ <property name="last"/>
+ </component>
+</class>]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="components-incollections" revision="1">
+
+ <title>]®·éIuWFNgÌRNV</title>
+
+ <para>
+ HibernateÍR|[lgÌRNVðT|[gµÄ¢Ü·iá¦Î <literal>Name</literal> ^ÌzñjB
+ <literal><element></literal> ^Oð <literal><composite-element></literal> ^OÉæè֦鱯ɿè
+ R|[lgRNVð龵ľ³¢B
+ </para>
+
+ <programlisting><![CDATA[<set name="someNames" table="some_names" lazy="true">
+ <key column="id"/>
+ <composite-element class="eg.Name"> <!-- class attribute required -->
+ <property name="initial"/>
+ <property name="first"/>
+ <property name="last"/>
+ </composite-element>
+</set>]]></programlisting>
+
+ <para>
+ Ó: R|WbgGgÌ <literal>Set</literal> ðè`µ½ÈçA
+ <literal>equals()</literal> Æ <literal>hashCode()</literal> ð³µÀ·é±ÆªdvÅ·B
+ </para>
+
+ <para>
+ R|WbgGgÍRNVðÜܸAR|[lgðÜÞ±Æà èÜ·B
+ R|WbgGg©gªR|[lgðÜñÅ¢éêÍ <literal><nested-composite-element></literal> ð
+ gpµÄ¾³¢BR|[lgÌRNV©gªR|[lgðÂÆ¢¤P[XÍßÁ½É èܹñB
+ ±ÌiKÜÅÉAone-to-manyÖAÌûªæèKØÅÈ¢©ÆnlµÄ¾³¢B
+ R|WbgGgðGeBeBƵÄÄxfOµÄÝľ³¢B
+ µ©µ±êÍJavaÌfƵÄͯ¶Å·ªA[VifÆi±®ìÍܾá±ÙÈ鱯Éӵľ³¢B
+ </para>
+
+ <para>
+ ൠ<literal><set></literal> ðgp·éÌÅ êÎAR|WbgGgÌ}bsOªnulllªÂ\È
+ ®«ðT|[gµÄ¢È¢±ÆÉӵľ³¢BHibernateÍIuWFNgðí·éÆ«A
+ R[hð¯Ê·é½ßÉ»ê¼êÌJÌlðgp·éKvª é½ßAnulllð±ƪoܹñ
+ iR|WbgGge[uÉÍÊÌåL[JÍ èܹñjB
+ R|WbgGgÉnot-nullÌ®«ÌÝðgp·é©AÜ½Í <literal><list></literal>A<literal><map></literal>A
+ <literal><bag></literal>A<literal><idbag></literal> ðIð·éKvª èÜ·B
+ </para>
+
+ <para>
+ R|WbgGgÌÁÊÈP[XƵÄAlXg³ê½ <literal><many-to-one></literal> ®«ðÂ
+ R|WbgGgª èÜ·B
+ ±Ì}bsOÍAR|WbgGgNXð½Î½ÖAe[uÌ
+ ]ªÈJÖ}bsOµÜ·B
+ ÌáÍ <literal>Order</literal> ©çA<literal>Item</literal> Ö̽νÖAÅ·B
+ <literal>purchaseDate</literal>A<literal>price</literal>A<literal>quantity</literal> ÍÖAÌ®«ÆÈèÜ·B
+ </para>
+
+ <programlisting><![CDATA[<class name="eg.Order" .... >
+ ....
+ <set name="purchasedItems" table="purchase_items" lazy="true">
+ <key column="order_id">
+ <composite-element class="eg.Purchase">
+ <property name="purchaseDate"/>
+ <property name="price"/>
+ <property name="quantity"/>
+ <many-to-one name="item" class="eg.Item"/> <!-- class attribute is optional -->
+ </composite-element>
+ </set>
+</class>]]></programlisting>
+
+ <para>
+ à¿ëñAoûüÖAÌirQ[V̽ßɽΤ©çpurchaseÖÌQÆðì鱯ÍoܹñB
+ R|[lgÍl^Å èAQÆð¤LūȢ±Æðo¦Ä¨¢Ä¾³¢B
+ êÂÌ <literal>Purchase</literal> ÍêÂÌ <literal>Order</literal> ÌsetɶÝūܷªA
+ ¯É <literal>Item</literal> ©çQÆ·é±ÆÍoܹñB
+ </para>
+
+ <para>
+ 3ÖAi é¢Í4ÈÇjàÂ\Å·B
+ </para>
+
+ <programlisting><![CDATA[<class name="eg.Order" .... >
+ ....
+ <set name="purchasedItems" table="purchase_items" lazy="true">
+ <key column="order_id">
+ <composite-element class="eg.OrderLine">
+ <many-to-one name="purchaseDetails" class="eg.Purchase"/>
+ <many-to-one name="item" class="eg.Item"/>
+ </composite-element>
+ </set>
+</class>]]></programlisting>
+
+ <para>
+ R|WbgGgͼÌGeBeBÖÌÖAƵÄA
+ ¯¶V^bNXðgÁÄ¢éNGàÅgpūܷB
+ </para>
+
+ </sect1>
+
+ <sect1 id="components-asmapindex">
+ <title>MapÌCfbNXƵÄÌR|[lg</title>
+
+ <para>
+ <literal><composite-map-key></literal> vfÍ <literal>Map</literal> ÌL[ƵÄR|[lgNXð
+ }bsOµÜ·BR|[lgNXãÅ <literal>hashCode()</literal> Æ <literal>equals()</literal>
+ ð³mÉI[o[ChµÄ¾³¢B
+ </para>
+ </sect1>
+
+ <sect1 id="components-compositeid" revision="1">
+ <title>¡¯ÊqƵÄÌR|[lg</title>
+
+ <para>
+ R|[lgðGeBeBNX̯ÊqƵÄg¤±ÆªÅ«Ü·B
+ R|[lgNXÍȺÌðð½·Kvª èÜ·B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>java.io.Serializable</literal> ðÀµÈ¯êÎÈèܹñB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ f[^x[XãÌ¡L[Ì¿«ÆµÌÈ¢æ¤ÉA<literal>equals()</literal>
+ Æ <literal>hashCode()</literal> ðÄÀµÈ¯êÎÈèܹñB
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ <emphasis>Ó: Hibernate3ɨ¢ÄA2ÔÚÌðÍâÎIÈðÅÍ èܹñB
+ µ©µÆÉ©ðð½µÄ¾³¢B
+ </emphasis>
+
+ </para>
+
+ <para>
+ ¡L[𶬷é½ßÉ <literal>IdentifierGenerator</literal> ðgp·é±ÆÍūܹñB
+ ãíèÉAvP[Vª¯ÊqðèÄÈÄÍÈèܹñB
+ </para>
+
+ <para>
+ ÊíÌ <literal><id></literal> é¾ÌãíèÉ <literal><composite-id></literal> ^Oð
+ ilXg³ê½ <literal><key-property></literal> ®«Æ¤Éjg¢Ü·B
+ ȺÌáÅÍA<literal>OrderLine</literal> NXÍ <literal>Order</literal> Ìi¡jåL[É
+ ˶µ½åL[ðÁĢܷB
+ </para>
+
+ <programlisting><![CDATA[<class name="OrderLine">
+
+ <composite-id name="id" class="OrderLineId">
+ <key-property name="lineId"/>
+ <key-property name="orderId"/>
+ <key-property name="customerId"/>
+ </composite-id>
+
+ <property name="name"/>
+
+ <many-to-one name="order" class="Order"
+ insert="false" update="false">
+ <column name="orderId"/>
+ <column name="customerId"/>
+ </many-to-one>
+ ....
+
+</class>]]></programlisting>
+
+ <para>
+ ±ÌÆ«A<literal>OrderLine</literal> e[uÖÖA·éOL[àܽ¡Å·B
+ ¼ÌNXÌ}bsOűêð龵ȯêÎÈèܹñB
+ <literal>OrderLine</literal> ÖÌÖAÍÌæ¤É}bsO³êÜ·B
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="orderLine" class="OrderLine">
+<!-- the "class" attribute is optional, as usual -->
+ <column name="lineId"/>
+ <column name="orderId"/>
+ <column name="customerId"/>
+</many-to-one>]]></programlisting>
+
+ <para>
+ i<literal><column></literal> ^OÍDZŠÁÄà <literal>column</literal> ®«Ì
+ ãíèÉÈèÜ·Bj
+ </para>
+
+ <para>
+ <literal>OrderLine</literal> ÖÌ <literal>many-to-many</literal> ÖAà
+ ¡OL[ðg¢Ü·B
+ </para>
+
+ <programlisting><![CDATA[<set name="undeliveredOrderLines">
+ <key column name="warehouseId"/>
+ <many-to-many class="OrderLine">
+ <column name="lineId"/>
+ <column name="orderId"/>
+ <column name="customerId"/>
+ </many-to-many>
+</set>]]></programlisting>
+
+ <para>
+ <literal>Order</literal> É é <literal>OrderLine</literal> ÌRNVÍ
+ ÌàÌðgpµÜ·B
+ </para>
+
+ <programlisting><![CDATA[<set name="orderLines" inverse="true">
+ <key>
+ <column name="orderId"/>
+ <column name="customerId"/>
+ </key>
+ <one-to-many class="OrderLine"/>
+</set>]]></programlisting>
+
+ <para>
+ i<literal><one-to-many></literal> ®«ÍAáÉæÁÄJð龵ܹñj
+ </para>
+
+ <para>
+ <literal>OrderLine</literal> ©gªRNVðÁÄ¢éêA
+ ¯É¡OL[àÁĢܷB
+ </para>
+
+ <programlisting><![CDATA[<class name="OrderLine">
+ ....
+ ....
+ <list name="deliveryAttempts">
+ <key> <!-- a collection inherits the composite key type -->
+ <column name="lineId"/>
+ <column name="orderId"/>
+ <column name="customerId"/>
+ </key>
+ <list-index column="attemptId" base="1"/>
+ <composite-element class="DeliveryAttempt">
+ ...
+ </composite-element>
+ </set>
+</class>]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="components-dynamic" revision="1">
+ <title>®IR|[lg</title>
+
+ <para>
+ <literal>Map</literal> ^ÌvpeBÌ}bsOàÂ\Å·B
+ </para>
+
+ <programlisting><![CDATA[<dynamic-component name="userAttributes">
+ <property name="foo" column="FOO" type="string"/>
+ <property name="bar" column="BAR" type="integer"/>
+ <many-to-one name="baz" class="Baz" column="BAZ_ID"/>
+</dynamic-component>]]></programlisting>
+
+ <para>
+ <literal><dynamic-component></literal> }bsOÌZ}eBNXÍ <literal><component></literal>
+ ƯêÌàÌÅ·B±ÌíÌ}bsOÌ_ÍA}bsOhL
gÌÒWÉæèAzuÉbeanÌ®«ð
+ èÅ«é_Å·BܽADOMp[TðpµÄA}bsOhL
gÌ^CìªÂ\Å·B
+ ³çÉA<literal>Configuration</literal> IuWFNgoRÅHibernateÌRtBO[VÌ^fÉ
+ ANZXiܽÍÏXjªÂ\Å·B
+ </para>
+
+ </sect1>
+
+</chapter>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/configuration.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/configuration.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/configuration.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/configuration.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,1725 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="session-configuration" revision="1">
+
+ <title>Ýè</title>
+
+ <para>
+ HibernateͳܴÜÈ«Ůì·éæ¤ÉfUC³êÄ¢é½ßAñíɽÌÝèvfª èÜ·B
+ K¢È±ÆÉAHibernateÍAöJ³êÄ¢épbP[WÌ <literal>etc/</literal> tH_Ì <literal>hibernate.properties</literal>
+ ÉAÙÆñÇÌÝèvfÌKØÈftHglªLq³êĢܷB
+ ±Ì <literal>hibernate.properties</literal> ðNXpXÉÝèµAÝèvfðJX^}CY·é¾¯Å·B
+ </para>
+
+ <sect1 id="configuration-programmatic" revision="1">
+ <title>vOãÌÝè</title>
+
+ <para>
+ <literal>org.hibernate.cfg.Configuration</literal> ÌCX^XÍA
+ JavaÌ^ÆSQLf[^x[XÌ}bsOîñð·×ÄÁĢܷB
+ The <literal>Configuration</literal> ÍAisÏÌj <literal>SessionFactory</literal>
+ ð¶¬·éÆ«ÉgpµÜ·B
+ ¡ÌXML}bsOt@CðÏ·µA}bsOîñɵܷB
+ </para>
+
+ <para>
+ ÊíA<literal>Configuration</literal> CX^XÍAÁèÌXML}bsOt@C
+ ÉæÁļÚú»³êÜ·BàµA}bsOt@CªNXpXÉÝè³êÄ¢éêA
+ Ì\bhðgÁľ³¢B <literal>addResource()</literal> :
+ </para>
+
+ <programlisting><![CDATA[Configuration cfg = new Configuration()
+ .addResource("Item.hbm.xml")
+ .addResource("Bid.hbm.xml");]]></programlisting>
+
+ <para>
+ ãÖÄ(±¿çÌÙ¤ªÇ¢Æ«à èÜ·)ƵÄ}bsONXðwè·éû@à èÜ·BHibernateÉA}bsOt@Cð
+ ©Â¯³¹Ä¾³¢F
+ </para>
+
+ <programlisting><![CDATA[Configuration cfg = new Configuration()
+ .addClass(org.hibernate.auction.Item.class)
+ .addClass(org.hibernate.auction.Bid.class);]]></programlisting>
+
+ <para>
+ HibernateÍANXpXÉ éÈºÌæ¤È¼OÌ}bsOt@Cð©Â¯Ü·B
+ <literal>/org/hibernate/auction/Item.hbm.xml</literal> A
+ <literal>/org/hibernate/auction/Bid.hbm.xml</literal> B
+ ±Ìû@¾ÆAn[hR[fBO³ê½t@C¼ðrūܷB
+ </para>
+
+ <para>
+ <literal>Configuration</literal> ÍAÝèvpeBðwè·é±ÆàūܷF
+ </para>
+
+ <programlisting><![CDATA[Configuration cfg = new Configuration()
+ .addClass(org.hibernate.auction.Item.class)
+ .addClass(org.hibernate.auction.Bid.class)
+ .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLInnoDBDialect")
+ .setProperty("hibernate.connection.datasource", "java:comp/env/jdbc/test")
+ .setProperty("hibernate.order_updates", "true");]]></programlisting>
+
+ <para>
+ HibernateÉÝèvpeBðÊ·û@Í1ÂÅÍ èܹñB
+ ³Ü´ÜÈIvVðpӵĢܷF
+ </para>
+
+ <orderedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>java.util.Properties</literal> CX^Xð
+ <literal>Configuration.setProperties()</literal> ÉnµÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>hibernate.properties</literal> ð
+ NXpXÌ[gfBNgÉu«Ü·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>System</literal> vpeBª
+ <literal>java -Dproperty=value</literal> ðg¤æ¤ÉÝèµÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal><property></literal> vfð
+ <literal>hibernate.cfg.xml</literal> iãqjÉÝèµÜ·B
+ </para>
+ </listitem>
+ </orderedlist>
+
+ <para>
+ ¡·®nß½¢ÌÈçA<literal>hibernate.properties</literal>
+ ðg¤ÌªêÔÌ߹ŷB
+ </para>
+
+ <para>
+ <literal>Configuration</literal> ÍAN®É¾¯ éIuWFNgÅ èA
+ êx <literal>SessionFactory</literal> 𶬵½ãÍAjü³ê鱯ðÓ}µÄ¢Ü·B
+ </para>
+
+ </sect1>
+
+ <sect1 id="configuration-sessionfactory">
+ <title>SessionFactoryðæ¾·é</title>
+
+ <para>
+ <literal>Configuration</literal> ª·×ÄÌ}bsOîñðð͵½çA
+ AvP[VÍA <literal>Session</literal> t@NgCX^Xðæ¾µÜ·B
+ ±ÌSessionFactoryÍAHibernateðgp·é·×ÄÌXbhŤL³êé׫ŷB
+ </para>
+
+ <programlisting><![CDATA[SessionFactory sessions = cfg.buildSessionFactory();]]></programlisting>
+
+ <para>
+ HibernateÍA <literal>SessionFactory</literal> 𡶬·é±ÆªÅ«Ü·B
+ ±êÍA¡Ìf[^x[Xðgp·éêÉÖÅ·B
+ </para>
+
+ </sect1>
+
+ <sect1 id="configuration-hibernatejdbc" revision="1">
+ <title>JDBCRlNV</title>
+
+ <para>
+ ÊíAJÒÍ <literal>SessionFactory</literal> 𶬵ASessionFactoryÅJDBCRlNVðv[Oµ½¢Æl¦Ü·B
+ »ÌAv[`ðÌp·éêAPÉ <literal>Session</literal> ðI[vµÄ¾³¢F
+ </para>
+
+ <programlisting><![CDATA[Session session = sessions.openSession(); // open a new Session]]></programlisting>
+
+ <para>
+ ±ê¾¯ÅAv[Oµ½JDBCRlNVðgÁÄÚIÌf[^x[X
+ ÉANZX·é±ÆªÅ«Ü·B
+ </para>
+
+ <para>
+ »Ì½ßÉÍAJDBCRlNVÌvpeBðHibernateÉÝè·éKvª èÜ·B
+ ·×ÄÌHibernatevpeB¼ÆZ}eBNXÍ
+ <literal>org.hibernate.cfg.Environment</literal> NXÉè`³êĢܷB
+ ±ÌÝèÍJDBCRlNVÝèÌÅêÔdvÈàÌÅ·B
+ </para>
+
+ <para>
+ àµAȺÌvpeBðÝè·éÆAHibernateÍRlNVðæ¾·éiv[àj½ßÉ
+ <literal>java.sql.DriverManager</literal> ðg¢Ü·B
+ </para>
+
+ <table frame="topbot">
+ <title>Hibernate JDBCvpeB</title>
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="1*"/>
+ <colspec colname="c2" colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>vpeB¼</entry>
+ <entry>Ó¡</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <literal>hibernate.connection.driver_class</literal>
+ </entry>
+ <entry>
+ <emphasis>JDBChCoNX</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.url</literal>
+ </entry>
+ <entry>
+ <emphasis>jdbc URL</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.username</literal>
+ </entry>
+ <entry>
+ <emphasis>database user</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.password</literal>
+ </entry>
+ <entry>
+ <emphasis>database user password</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.pool_size</literal>
+ </entry>
+ <entry>
+ <emphasis>v[·éRlNVÌÅå</emphasis>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ HibernateÌRlNVv[ASYÍñíÉàIÈàÌÅ·B
+ ±êÍ·®Énßçê鿤ɯpÓ³ê½àÌÅA<emphasis>»iƵÄgp·é±ÆðÓ}µÄ¢Ü¹ñ</emphasis> B
+ ܽAptH[}XÌeXg̽ßÌàÌÅà èܹñB
+ ÅÌptH[}XÆÀè«ðÁ½v[ðÀ»µ½¯êÎAT[hp[eBÌc[ð¨©ßµÜ·B
+ <literal>hibernate.connection.pool_size</literal> vpeBÉ
+ KØÈRlNVv[TCYðLqµÄ¾³¢B
+ ±ÌÜܾÆHibernateÌRlNVv[ðg¢Ü·B
+ á¦ÎÌæ¤ÉC3P0ðg¢Ü·B
+ </para>
+
+ <para>
+ C3P0ÍI[v\[XJDBCRlNVv[ÅAHibernateÌ <literal>lib</literal>
+ fBNgÉ èÜ·BàµA<literal>hibernate.c3p0.*</literal> vpeBð
+ Zbg·êÎAHibernateÍA <literal>C3P0ConnectionProvider</literal> ðg¢Ü·B
+ àµProxoolðg¢½¢êÍA <literal>hibernate.properties</literal> pbP[Wð
+ QƵ½èAHibernateÌWebTCgÅæè½Ìîñðæ¾µÄ¾³¢B
+ </para>
+
+ <para>
+ C3P0pÌ <literal>hibernate.properties</literal> t@CðáÆµÄ¦µÜ·F
+ </para>
+
+ <programlisting id="c3p0-configuration" revision="1"><![CDATA[hibernate.connection.driver_class = org.postgresql.Driver
+hibernate.connection.url = jdbc:postgresql://localhost/mydatabase
+hibernate.connection.username = myuser
+hibernate.connection.password = secret
+hibernate.c3p0.min_size=5
+hibernate.c3p0.max_size=20
+hibernate.c3p0.timeout=1800
+hibernate.c3p0.max_statements=50
+hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]></programlisting>
+
+ <para>
+ AvP[VT[oãÅg¤êÍAHibernateðÝèµA
+ AvP[VT[o©çRlNVðæ¾·éæ¤ÉµÄ¾³¢B
+ <literal>Datasource</literal> ðJNDIÉo^µÜ·B»µÄ
+ vpeBðÈºÌæ¤ÉÝèµÄ¾³¢B
+ </para>
+
+ <table frame="topbot">
+ <title>Hibernate f[^\[XvpeB</title>
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="1*"/>
+ <colspec colname="c2" colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>vpeB¼</entry>
+ <entry>Ó¡</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <literal>hibernate.connection.datasource</literal>
+ </entry>
+ <entry>
+ <emphasis>f[^\[XÌJNDI¼</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.jndi.url</literal>
+ </entry>
+ <entry>
+ <emphasis>JNDIvoC_ÌURL</emphasis> (IvV)
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.jndi.class</literal>
+ </entry>
+ <entry>
+ <emphasis>JNDINX <literal>InitialContextFactory</literal> </emphasis> (IvV)
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.username</literal>
+ </entry>
+ <entry>
+ <emphasis>database user</emphasis> (IvV)
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.password</literal>
+ </entry>
+ <entry>
+ <emphasis>database user password</emphasis> (IvV)
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ AvP[VT[o©çñ³ê½JNDIf[^\[Xðg¤
+ <literal>hibernate.properties</literal> t@CÌáð¦µÜ·F
+ </para>
+
+ <programlisting><![CDATA[hibernate.connection.datasource = java:/comp/env/jdbc/test
+hibernate.transaction.factory_class = \
+ org.hibernate.transaction.JTATransactionFactory
+hibernate.transaction.manager_lookup_class = \
+ org.hibernate.transaction.JBossTransactionManagerLookup
+hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]></programlisting>
+
+ <para>
+ JNDIf[^\[X©çæ¾µ½JDBCRlNVÍAAvP[VT[oÌ
+ ReiÇgUNVÉ©®IÉQÁµÜ·B
+ </para>
+
+ <para>
+ CÓÌRlNVvpeBÍA^¦çê½h <literal>hibernate.connnection</literal> h
+ vpeB¼ÉæÁÄ^¦çêÜ·Bá¦ÎA <literal>charSet</literal> ðÝèµ½¢êÍA
+ <literal>hibernate.connection.charSet</literal> ðg¢Ü·B
+ </para>
+
+ <para>
+ JDBCRlNVðæ¾·éíªðÂÆ©ÌvOCðè`·éêÍA
+ <literal>org.hibernate.connection.ConnectionProvider</literal> C^[tFCXð
+ ÀµÄ¾³¢B»µÄAÀNXð <literal>hibernate.connection.provider_class</literal>
+ ÉÝèµÄ¾³¢B
+ </para>
+
+ </sect1>
+
+ <sect1 id="configuration-optional" revision="1">
+ <title>IvVÝèvpeB</title>
+
+ <para>
+ ±êçÌvpeBÍHibernateÌ®ð§ä·éàÌÅ·B
+ ±êçÌvpeBÍ·×ÄÃÈftHglª èACÓÅÝèµÜ·B
+ </para>
+
+ <para>
+ <emphasis>ÓF±êçÌvpeBÍ"VXex"ÌÝÅ·B</emphasis>
+ VXexvpeBÍ <literal>java -Dproperty=value</literal> AàµÍ
+ <literal>hibernate.properties</literal> ÅÌÝÝèÂ\Å·B
+ »êÈOÌÝèû@Í <emphasis> èܹñ</emphasis> B
+ </para>
+
+ <table frame="topbot" id="configuration-optional-properties" revision="8">
+ <title>HibernateÝèvpeB</title>
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="1*"/>
+ <colspec colname="c2" colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>vpeB¼</entry>
+ <entry>Ó¡</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <literal>hibernate.dialect</literal>
+ </entry>
+ <entry>
+ Hibernate <literal>Dialect</literal> NX¼ªüèÜ·B
+ ±êÍ[Vif[^x[X²ÆÉÅK»³ê½SQL𶬵ܷB
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>full.classname.of.Dialect</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.show_sql</literal>
+ </entry>
+ <entry>
+ s³ê½·×ÄÌSQLðR\[Éo͵ܷB
+ ±êÍOJeSÌ <literal>org.hibernate.SQL</literal>
+ É <literal>debug</literal> ðÝè·éû@ÌãÖèiÅ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true</literal> | <literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.format_sql</literal>
+ </entry>
+ <entry>
+ OÆR\[ÌSQLðüµ\¦µÜ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true</literal> | <literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.default_schema</literal>
+ </entry>
+ <entry>
+ ¶¬³êéSQL¶Ìe[uÉÝè·éXL[}/e[uXy[XÅ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>SCHEMA_NAME</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.default_catalog</literal>
+ </entry>
+ <entry>
+ ¶¬³êéSQL¶Ìe[uÉÝè·éJ^OÅ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>CATALOG_NAME</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.session_factory_name</literal>
+ </entry>
+ <entry>
+ <literal>SessionFactory</literal> Ͷ¬ãA±Ì¼OÅJNDIÉo^³êÜ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>jndi/composite/name</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.max_fetch_depth</literal>
+ </entry>
+ <entry>
+ OtFb`ÌÅå[xðÝèµÜ·B·éÖAÍ
+ ÎêÖAÌÝiêÎêA½ÎêjÅ·B
+ <literal>0</literal> ðwè·éÆOtFb`ͳøÉÈèÜ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ §·élÍ <literal>0</literal> ©ç <literal>3</literal> Å·B
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.default_batch_fetch_size</literal>
+ </entry>
+ <entry>
+ ÖAtFb`ÌftHgob`TCYðwèµÜ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ §·élÍ <literal>4</literal> , <literal>8</literal> , <literal>16</literal> Å·B
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.default_entity_mode</literal>
+ </entry>
+ <entry>
+ <literal>SessionFactory</literal> ©çZbVðI[vµ½Æ«É
+ gp·éGeBeBÌftHg[hðÝèµÜ·B
+ <para>
+ <literal>dynamic-map</literal>, <literal>dom4j</literal>,
+ <literal>pojo</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.order_updates</literal>
+ </entry>
+ <entry>
+ ÚªXV³ê½Æ«ÉAÊÌSQLÅåL[ðXV·é±Æð§µÜ·B
+ ±ÌêA¯ÀsÂ\ÈVXeÅÍAÜêÉfbhbNª¶·éÂ\«ª èÜ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true</literal> | <literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.generate_statistics</literal>
+ </entry>
+ <entry>
+ LøÌêAHibernateÍptH[}X`
[jOÉ
+ LøÈvîñðûWµÜ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true</literal> | <literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.use_identifer_rollback</literal>
+ </entry>
+ <entry>
+ LøÌêAIuWFNgªí³ê½Æ«É
+ ¯ÊqvpeBðZbgµAftHglɵ½àÌ𶬵ܷB
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true</literal> | <literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.use_sql_comments</literal>
+ </entry>
+ <entry>
+ LøÌêASQLàÉRg𶬵ܷB±êÍfobNðeÕɵܷB
+ ftHgÌlÍ <literal>false</literal> Å·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true</literal> | <literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <table frame="topbot" id="configuration-jdbc-properties" revision="8">
+ <title>Hibernate JDBC ÆRlNVvpeB</title>
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="1*"/>
+ <colspec colname="c2" colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>vpeB¼</entry>
+ <entry>Ó¡</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <literal>hibernate.jdbc.fetch_size</literal>
+ </entry>
+ <entry>
+ lª0ÅÈ¢êAJDBCtFb`TCYðèµÜ·
+ ( <literal>Statement.setFetchSize()</literal> ðÄÑÜ·)B
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.jdbc.batch_size</literal>
+ </entry>
+ <entry>
+ lª0ÅÈ¢êAHibernateªJDBC2ob`XVðgpµÜ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ §·élÍ <literal>5</literal> ©ç <literal>30</literal> Å·B
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.jdbc.batch_versioned_data</literal>
+ </entry>
+ <entry>
+ àµJDBChCoª <literal>executeBatch()</literal> ÉæÁijmÈsð
+ Ô·êA±ÌvpeBð <literal>true</literal> ɵľ³¢
+ iÊíͱÌIvVðONɵܷjB
+ HibernateÍA©®o[Wf[^̽ßob`DMLðg¢Ü·B
+ ftHgÌlÍ <literal>false</literal> Å·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true</literal> | <literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.jdbc.factory_class</literal>
+ </entry>
+ <entry>
+ JX^ <literal>Batcher</literal> ðIÑÜ·B
+ ÙÆñÇÌAvP[VÉA±ÌÝèÍKv èܹñB
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>classname.of.BatcherFactory</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.jdbc.use_scrollable_resultset</literal>
+ </entry>
+ <entry>
+ XN[Â\ÈUgZbgðAHibernateªgpµÜ·B
+ ±ÌvpeBÍAJDBCRlNVªRlNV^f[^ð
+ T|[gµÄ¢é±ÆªK{ðÉÈèÜ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true</literal> | <literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.jdbc.use_streams_for_binary</literal>
+ </entry>
+ <entry>
+ JDBCÖ/©ç <literal>binary</literal> â <literal>serializable</literal>
+ Ì«Ý/ÇÝÝXg[ðg¢Ü·(VXexÌvpeB)B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true</literal> | <literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.jdbc.use_get_generated_keys</literal>
+ </entry>
+ <entry>
+ }üÌãÉ©®¶¬³ê½åL[ðæ¾·é½ßÌ
+ JDBC3 <literal>PreparedStatement.getGeneratedKeys()</literal> ÌgpðLøÉµÜ·B
+ ±êÍJDBC3+hCoÆJRE1.4+ðKvƵA
+ àµHibernate̯ÊqWFl[^Éâ誶·éæ¤ÈçfalseÉÝèµÄ¾³¢B
+ ftHgÅÍRlNV^f[^ðg¢hCoÌ\ÍðèµÜ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true|false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.provider_class</literal>
+ </entry>
+ <entry>
+ JDBCRlNVðHibernateÉñ·éÆ©Ì <literal>ConnectionProvider</literal> Ì
+ ¼OðwèµÜ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>classname.of.ConnectionProvider</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.isolation</literal>
+ </entry>
+ <entry>
+ JDBCgUNVª£xðÝèµÜ·B
+ ÃÈlð²×é½ßÉÍ <literal>java.sql.Connection</literal> ð`FbNµÄ¾³¢B
+ µ©µgp·éf[^x[XªA·×Ä̪£xðT|[gµÄ¢éÆÍÀèܹñB
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>1, 2, 4, 8</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.autocommit</literal>
+ </entry>
+ <entry>
+ v[³êÄ¢éJDBCRlNVÌ©®R~bgðLøÉ·éiñ§jB
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true</literal> | <literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.release_mode</literal>
+ </entry>
+ <entry>
+ HibernateªJDBCRlNVð[X·é©ðwèµÜ·BftHgÅÍ
+ ZbVª¾¦IÉN[YÜ½ÍØf³êÄàRlNVÍ۵ܷB
+ AvP[VT[oÌJTAf[^\[XÌêA
+ ·×ÄÌJDBCR[ÌãA§IÉRlNVð[X·é½ßÉ <literal>after_statement</literal> ð
+ gÁľ³¢B
+ ñJTARlNVÌêAegUNVªI¹µ½Æ«É <literal>after_transaction</literal>
+ ðg¢ARlNVð[XµÄ¾³¢B
+ <literal>auto</literal> É·éÆA
+ JTAâCMTgUNVÌêA <literal>after_statement</literal> ÅN[YµA
+ JDBCgUNVÌêA <literal>after_transaction</literal> ÅN[YµÜ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>auto</literal> (default) | <literal>on_close</literal> |
+ <literal>after_transaction</literal> | <literal>after_statement</literal>
+ </para>
+ <para>
+ ӵľ³¢B±ÌÝèÍ <literal>SessionFactory.openSession</literal> ©ç
+ æ¾µ½ <literal>Session</literal> ¾¯ÉøÊª èÜ·B
+ <literal>SessionFactory.getCurrentSession</literal> ðÊ¶Äæ¾µ½
+ <literal>Session</literal> ÅÍA<literal>CurrentSessionContext</literal>
+ ÌÀÉæÁÄARlNVÌ[X[hðÝèµÜ·B
+ <xref linkend="architecture-current-session"/> ðQƵľ³¢B
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.<emphasis><propertyName></emphasis></literal>
+ </entry>
+ <entry>
+ JDBCÌ <literal>propertyName</literal> vpeBðA
+ <literal>DriverManager.getConnection()</literal> ÉnµÜ·B
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.jndi.<emphasis><propertyName></emphasis></literal>
+ </entry>
+ <entry>
+ <literal>propertyName</literal> vpeBðA
+ JNDI <literal>InitialContextFactory</literal> ÉnµÜ·B
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <table frame="topbot" id="configuration-cache-properties" revision="7">
+ <title>Hibernate LbV
vpeB</title>
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="1*"/>
+ <colspec colname="c2" colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>vpeB¼</entry>
+ <entry>Ó¡</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <literal>hibernate.cache.provider_class</literal>
+ </entry>
+ <entry>
+ JX^ <literal>CacheProvider</literal> ÌNX¼Å·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>classname.of.CacheProvider</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.cache.use_minimal_puts</literal>
+ </entry>
+ <entry>
+ «ÝðŬÀÉ·é½ßÉAñLbV
ÌìðÅK»µÜ·B
+ »ÌãíèÉAÇÝݪæèpÉɶ·éæ¤ÉÈèÜ·B
+ ±ÌZbeBOÍNX^LbV
Åðɧ¿Ü·B
+ Hibernate3ÅÍNX^LbV
ÀpÉftHgÅÍLøÉÈÁĢܷB
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true|false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.cache.use_query_cache</literal>
+ </entry>
+ <entry>
+ ÁèÌNGªLbV
Â\ÈêÉANGLbV
ðLøÉµÜ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true|false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.cache.use_second_level_cache</literal>
+ </entry>
+ <entry>
+ ñLbV
ð®SɳøÉ·éêÉg¢Ü·B
+ ftHgÅÍLøÅANXÌ <literal><cache></literal> }bsO
+ ŧäµÜ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true|false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.cache.query_cache_factory</literal>
+ </entry>
+ <entry>
+ JX^ <literal>QueryCache</literal> C^[tFCXÌNX¼ð
+ wèµÜ·BftHgÅÍ <literal>StandardQueryCache</literal> ÉÈèÜ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>classname.of.QueryCache</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.cache.region_prefix</literal>
+ </entry>
+ <entry>
+ ñLbV
ÌÌæ¼ÌÚª«Å·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>prefix</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.cache.use_structured_entries</literal>
+ </entry>
+ <entry>
+ ñLbV
Éi[·éf[^ðAlªðµâ·¢tH[}bgɵܷB
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true|false</literal>
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <table frame="topbot" id="configuration-transaction-properties" revision="9">
+ <title>Hibernate gUNVvpeB</title>
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="1*"/>
+ <colspec colname="c2" colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>vpeB¼</entry>
+ <entry>Ó¡</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <literal>hibernate.transaction.factory_class</literal>
+ </entry>
+ <entry>
+ Hibernate <literal>Transaction</literal> APIÆêÉgíêé
+ <literal>TransactionFactory</literal> ÌNX¼Å·B
+ iftHgÅÍ <literal>JDBCTransactionFactory</literal> Å·jB
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>classname.of.TransactionFactory</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>jta.UserTransaction</literal>
+ </entry>
+ <entry>
+ AvP[VT[o©çJTA <literal>UserTransaction</literal> ðæ¾·é½ßÉ
+ <literal>JTATransactionFactory</literal> ÉgíêéJNDI¼Å·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>jndi/composite/name</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.transaction.manager_lookup_class</literal>
+ </entry>
+ <entry>
+ <literal>TransactionManagerLookup</literal> ÌNX¼Å·B
+ JTA«ɨ¢ÄAJVMxÌLbV
ðLøÉ·é½ßÉKvÅ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>classname.of.TransactionManagerLookup</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.transaction.flush_before_completion</literal>
+ </entry>
+ <entry>
+ LøÌêAgUNVÌcompletiontF[YÌOÉ©®IÉ
+ ZbVðtbV
µÜ·BàÌ©®ZbVReLXgÇÉKµÄ¢Ü·B
+ <xref linkend="architecture-current-session"/>ðQƵľ³¢B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true</literal> | <literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.transaction.auto_close_session</literal>
+ </entry>
+ <entry>
+ LøÌêAgUNVÌcompletiontF[YÌãÉ
+ ZbVð©®IÉN[YµÜ·BàÌ©®ZbVReLXgÇÉKµÄ¢Ü·B
+ <xref linkend="architecture-current-session"/>ðQƵľ³¢B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true</literal> | <literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <table frame="topbot" id="configuration-misc-properties" revision="10">
+ <title>»Ì¼ÌvpeB</title>
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="1*"/>
+ <colspec colname="c2" colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>vpeB¼</entry>
+ <entry>Ó¡</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <literal>hibernate.current_session_context_class</literal>
+ </entry>
+ <entry>
+ u»ÝÌv<literal>Session</literal> ̽ßÌiJX^jíªðñµÜ·B
+ rgCXgeW[ÉÖ·é»Ì¼ÌîñÉ¢ÄÍ
+ <xref linkend="architecture-current-session"/>ðQƵľ³¢B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>jta</literal> | <literal>thread</literal> |
+ <literal>managed</literal> | <literal>custom.Class</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.query.factory_class</literal>
+ </entry>
+ <entry>
+ HQLp[T[ÌÀðIðµÜ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>org.hibernate.hql.ast.ASTQueryTranslatorFactory</literal> or
+ <literal>org.hibernate.hql.classic.ClassicQueryTranslatorFactory</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.query.substitutions</literal>
+ </entry>
+ <entry>
+ HQLÆSQLÌg[Nð}bsOµÜ·B
+ iá¦ÎAg[NÍÖâe¼Å·jB
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.hbm2ddl.auto</literal>
+ </entry>
+ <entry>
+ <literal>SessionFactory</literal> 𶬵½Æ«ÉA
+ ©®IÉXL[}DDLðDBÉo͵ܷB
+ <literal>create-drop</literal> ÌêA <literal>SessionFactory</literal> ð
+ N[Yµ½Æ«ÉAf[^x[XXL[}ðhbvµÜ·B
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>validate</literal> | <literal>update</literal> |
+ <literal>create</literal> | <literal>create-drop</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.cglib.use_reflection_optimizer</literal>
+ </entry>
+ <entry>
+ ÀstNVÌãíèÌCGLIBÌgpðLøÉµÜ·
+ iVXexÌvpeBj
+ tNVÍguV
[eBOÌÆ«Éð§Â±Æª èÜ·B
+ IveB}CUðItɵĢ鯫ų¦A
+ HibernateÉÍK¸CGLIBªKvȱÆÉӵľ³¢B
+ ±ÌvpeBÍ <literal>hibernate.cfg.xml</literal> ÅÝèūܹñB
+ <para>
+ <emphasis role="strong">áF</emphasis>
+ <literal>true</literal> | <literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <sect2 id="configuration-optional-dialects" revision="1">
+ <title>SQL û¾iDialectj</title>
+
+ <para>
+ <literal>hibernate.dialect</literal> vpeBÉÍA
+ gp·éf[^x[X̳µ¢ <literal>org.hibernate.dialect.Dialect</literal> ÌTuNXðA
+ K¸wè·×«Å·B
+ µ©µû¾ðwè·êÎAHibernateÍãqµ½vpeB̢©É¢ÄA
+ æèKØÈftHglðg¢Ü·B
+ »¤·êÎA»êçðèìÆÅÝè·éèԪȯܷB
+ </para>
+
+ <table frame="topbot" id="sql-dialects" revision="2">
+ <title>Hibernate SQL Dialects (<literal>hibernate.dialect</literal>)</title>
+ <tgroup cols="2">
+ <colspec colwidth="1*"/>
+ <colspec colwidth="2.5*"/>
+ <thead>
+ <row>
+ <entry>RDBMS</entry>
+ <entry>Dialect</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>DB2</entry> <entry><literal>org.hibernate.dialect.DB2Dialect</literal></entry>
+ </row>
+ <row>
+ <entry>DB2 AS/400</entry> <entry><literal>org.hibernate.dialect.DB2400Dialect</literal></entry>
+ </row>
+ <row>
+ <entry>DB2 OS390</entry> <entry><literal>org.hibernate.dialect.DB2390Dialect</literal></entry>
+ </row>
+ <row>
+ <entry>PostgreSQL</entry> <entry><literal>org.hibernate.dialect.PostgreSQLDialect</literal></entry>
+ </row>
+ <row>
+ <entry>MySQL</entry> <entry><literal>org.hibernate.dialect.MySQLDialect</literal></entry>
+ </row>
+ <row>
+ <entry>MySQL with InnoDB</entry> <entry><literal>org.hibernate.dialect.MySQLInnoDBDialect</literal></entry>
+ </row>
+ <row>
+ <entry>MySQL with MyISAM</entry> <entry><literal>org.hibernate.dialect.MySQLMyISAMDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Oracle (any version)</entry> <entry><literal>org.hibernate.dialect.OracleDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Oracle 9i/10g</entry> <entry><literal>org.hibernate.dialect.Oracle9Dialect</literal></entry>
+ </row>
+ <row>
+ <entry>Sybase</entry> <entry><literal>org.hibernate.dialect.SybaseDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Sybase Anywhere</entry> <entry><literal>org.hibernate.dialect.SybaseAnywhereDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Microsoft SQL Server</entry> <entry><literal>org.hibernate.dialect.SQLServerDialect</literal></entry>
+ </row>
+ <row>
+ <entry>SAP DB</entry> <entry><literal>org.hibernate.dialect.SAPDBDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Informix</entry> <entry><literal>org.hibernate.dialect.InformixDialect</literal></entry>
+ </row>
+ <row>
+ <entry>HypersonicSQL</entry> <entry><literal>org.hibernate.dialect.HSQLDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Ingres</entry> <entry><literal>org.hibernate.dialect.IngresDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Progress</entry> <entry><literal>org.hibernate.dialect.ProgressDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Mckoi SQL</entry> <entry><literal>org.hibernate.dialect.MckoiDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Interbase</entry> <entry><literal>org.hibernate.dialect.InterbaseDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Pointbase</entry> <entry><literal>org.hibernate.dialect.PointbaseDialect</literal></entry>
+ </row>
+ <row>
+ <entry>FrontBase</entry> <entry><literal>org.hibernate.dialect.FrontbaseDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Firebird</entry> <entry><literal>org.hibernate.dialect.FirebirdDialect</literal></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </sect2>
+
+ <sect2 id="configuration-optional-outerjoin" revision="4">
+ <title>OtFb`</title>
+
+ <para>
+ àµDBªANSI©AOracle©SybaseX^CÌOðT|[gµÄ¢éêA
+ <emphasis>outer join fetching</emphasis> ÍADBÌSQLsñðßñµ
+ ptH[}XðǵܷBiDBàÅæè½ÌRXgª¶µÜ·j
+ OtFb`ÍA½ÎêAêνA½Î½AêÎêÌIuWFNgÖAÅ
+ O[vIuWFNgð1ÂÌSQLÅ <literal>SELECT</literal> µÜ·B
+ </para>
+
+ <para>
+ <literal>hibernate.max_fetch_depth</literal> vpeBÌlð <literal>0</literal> É·éÆ
+ Outer join fetchingð <emphasis>·×Ä</emphasis> ³øÉ·é±ÆÉÈèÜ·B
+ <literal>1</literal> â»êÈãÌlðÝè·éÆAOtFb`ªLøÉÈèA
+ êÎêÆ½ÎêÖAª <literal>fetch="join"</literal> ƵÄ}bsO³êÜ·B
+ </para>
+
+ <para>
+ See <xref linkend="performance-fetching"/> for more information.
+ </para>
+
+ </sect2>
+
+ <sect2 id="configuration-optional-binarystreams" revision="1">
+ <title>oCiXg[</title>
+
+ <para>
+ OracleÍJDBChCoÆÌÔÅâèÆè³êé <literal>byte</literal> zñÌTCYð§ÀµÜ·B
+ <literal>binary</literal> â <literal>serializable</literal> ^Ìå«ÈCX^Xðg¢½¯êÎA
+ <literal>hibernate.jdbc.use_streams_for_binary</literal> ðLøÉµÄ¾³¢B
+ ½¾µ <emphasis>±êÍVXexÌÝ辯ŷ</emphasis> B
+ </para>
+
+ </sect2>
+
+ <sect2 id="configuration-optional-cacheprovider" revision="2">
+ <title>2LbV
ÆNG[LbV
</title>
+
+ <para>
+ <literal>hibernate.cache</literal> vpeBÚª«Í
+ HibernateÅvZXâNX^ñLbV
ðg¤Æ±ÆðµܷB
+ <xref linkend="performance-cache"/>Éæè½ÌÚת èÜ·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="configuration-optional-querysubstitution">
+ <title>NG[¾êÌu«·¦</title>
+
+ <para>
+ <literal>hibernate.query.substitutions</literal> ðg¤±ÆÅA
+ Vµ¢HibernateNGg[Nðè`ūܷB
+ áF
+ </para>
+
+ <programlisting>hibernate.query.substitutions true=1, false=0</programlisting>
+
+ <para>
+ ±êÍg[N <literal>true</literal> Æ <literal>false</literal> ðA
+ ¶¬³êéSQLɨ¢Ä®eÉ|óµÜ·B
+ </para>
+
+ <programlisting>hibernate.query.substitutions toLowercase=LOWER</programlisting>
+
+ <para>
+ ±êÍSQLÌ <literal>LOWER</literal> Ö̼OÌt¯Ö¦ðÂ\ɵܷB
+ </para>
+
+ </sect2>
+
+ <sect2 id="configuration-optional-statistics" revision="2">
+ <title>Hibernate v</title>
+
+ <para>
+ <literal>hibernate.generate_statistics</literal> ðLøÉµ½êA
+ ®ìµÄ¢éVXeð`
[jOᎮǃA<literal>SessionFactory.getStatistics()</literal>
+ ðoRµÄAHibernateÍÖÈvîñðo͵ܷB
+ JMXðoRµÄvîñðoÍ·é±ÆàÂ\Å·B
+ JavadocÌ <literal>org.hibernate.stats</literal> pbP[WàÌ
+ C^[tFCXÉÍæè½Ìîñª èÜ·B
+ </para>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="configuration-logging">
+ <title>MO</title>
+
+ <para>
+ HibernateÍApache commons-logginðgÁÄA³Ü´ÜÈCxgðOƵÄ
+ o͵ܷB
+ </para>
+
+ <para>
+ commons-loggingT[rXÍiNXpXÉ <literal>log4j.jar</literal> ðÜßêÎjApache Log4jÉA
+ ܽiJDK1.4©»êÈãÅÀs³¹êÎjJDK1.4 loggingɼÚo͵ܷB
+ Log4jÍ <literal>http://jakarta.apache.org</literal> ©ç_E[hūܷB
+ Log4jðg¤½ßÉÍANXpXÉ <literal>log4j.properties</literal> t@Cðzu·éKvª èÜ·B
+ áÌvpeBt@CÍHibernateÆêÉzz³êA»êÍ <literal>src/</literal> fBNgÉ èÜ·B
+ </para>
+
+ <para>
+ HibernateÌObZ[Wɵêé±Æð¨··ßµÜ·B
+ HibernateÌOÍÇÝâ·AÅ«éÀèÚ×ÉÈ鿤ÉwͳêĢܷB
+ ±êÍK{ÌguV
[eBOfoCXÅ·B
+ ȺÉdvÈOÌJeSð¦µÜ·B
+ </para>
+
+ <table frame="topbot" id="log-categories" revision="2">
+ <title>Hibernate OJeS</title>
+ <tgroup cols="2">
+ <colspec colwidth="1*"/>
+ <colspec colwidth="2.5*"/>
+ <thead>
+ <row>
+ <entry>JeS</entry>
+ <entry>@\</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><literal>org.hibernate.SQL</literal></entry>
+ <entry>Àsµ½·×ÄÌSQLiDDLjXe[ggðMOµÜ·B</entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate.type</literal></entry>
+ <entry>·×ÄÌJDBCp[^ðMOµÜ·B</entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate.tool.hbm2ddl</literal></entry>
+ <entry>Àsµ½·×ÄÌSQLiDDLjXe[ggðMOµÜ·B</entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate.pretty</literal></entry>
+ <entry>
+ sessionÉÖA·é·×ÄÌGeBeBiÅåQOjÌtbV
ÔðMOµÜ·B
+ </entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate.cache</literal></entry>
+ <entry>·×ÄÌQLbV
Ì®ìðMOµÜ·B</entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate.transaction</literal></entry>
+ <entry>gUNVÉÖA·é®ìðMOµÜ·B</entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate.jdbc</literal></entry>
+ <entry>JDBC\[Xæ¾ðMOµÜ·B</entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate.hql.ast.AST</literal></entry>
+ <entry>
+ HQLÆSQLÌASTÌNG[p[XðMOµÜ·B
+ </entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate.secure</literal></entry>
+ <entry>·×ÄÌJAASªÍðMOµÜ·B</entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate</literal></entry>
+ <entry>
+ ·×ÄðMOµÜ·BiîñªåÊÉÈèÜ·ªAguV
[eBOÉÍÖÅ·j
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ HibernateÅAvP[Vðì¬·éÆ«ÍA<literal>org.hibernate.SQL</literal>
+ JeSÌ <literal>debug</literal> ðíÉLøÉµÄ¨¢½Ù¤ªÇ¢Åµå¤B
+ ãÖû@ƵÄA<literal>hibernate.show_sql</literal> ðLøÉ·éû@ª èÜ·B
+ </para>
+
+
+ </sect1>
+
+ <sect1 id="configuration-namingstrategy">
+ <title><literal>NamingStrategy</literal> ÌÀ</title>
+
+ <para>
+ C^[tFCX <literal>net.sf.hibernate.cfg.NamingStrategy</literal> ðg¤Æ
+ f[^x[XIuWFNgÆXL[}vf̽ßÌu½¼WvðwèūܷB
+ </para>
+
+ <para>
+ Java̯Êq©çf[^x[X̯Êqð©®¶¬·é½ßÌ[âA
+ }bsOt@CÅ^¦½u_IÈvJÆe[u¼©ç
+ u¨IÈve[uÆJ¼ð¶¬·é½ßÌ[ðpӷ鱯ªÅ«Ü·B
+ ±Ì@\ÍJèÔµÌG¹iá¦Î <literal>TBL_</literal> vtBbNXjðæè«A
+ }bsOhL
gÌç·³ð¸ç·±ÆÉð§¿Ü·B
+ Hibernateªg¤ftHgÌíªÍ©ÈèŬÀÉߢàÌÅ·B
+ </para>
+
+ <para>
+ }bsOðÇÁ·éOÉ <literal>Configuration.setNamingStrategy()</literal> ðÄÔ±ÆÅ
+ ÈºÌæ¤ÉÙÈéíªðwè·é±ÆªÅ«Ü·F
+ </para>
+
+ <programlisting><![CDATA[SessionFactory sf = new Configuration()
+ .setNamingStrategy(ImprovedNamingStrategy.INSTANCE)
+ .addFile("Item.hbm.xml")
+ .addFile("Bid.hbm.xml")
+ .buildSessionFactory();]]></programlisting>
+
+ <para>
+ <literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> ÍgÝÝÌíªÅ·B
+ ±ê͢©ÌAvP[VÉÆÁÄLpÈJn_ÆÈé©àµêܹñB
+ </para>
+
+ </sect1>
+
+ <sect1 id="configuration-xmlconfig" revision="2">
+ <title>XMLÝèt@C</title>
+
+ <para>
+ à¤1ÂÌû@Í <literal>hibernate.cfg.xml</literal> Æ¢¤¼OÌt@CÅ
+ \ªÈÝèðwè·éû@Å·B
+ ±Ìt@CÍ <literal>hibernate.properties</literal> t@CÌãíèÆÈèÜ·B
+ ർûÌt@Cª êÎAvpeBªu«·¦çêÜ·B
+ </para>
+
+ <para>
+ XMLÝèt@CÍúÝèÅ <literal>CLASSPATH</literal> ÉzuµÄ¾³¢B
+ ±êªáÅ·F
+ </para>
+
+ <programlisting><![CDATA[<?xml version='1.0' encoding='utf-8'?>
+<!DOCTYPE hibernate-configuration PUBLIC
+ "-//Hibernate/Hibernate Configuration DTD//EN"
+ "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+
+ <!-- a SessionFactory instance listed as /jndi/name -->
+ <!-- /jndi/nameÌæ¤ÉXgAbv³ê½SessionFactoryCX^X -->
+ <session-factory
+ name="java:hibernate/SessionFactory">
+
+ <!-- properties -->
+ <property name="connection.datasource">java:/comp/env/jdbc/MyDB</property>
+ <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
+ <property name="show_sql">false</property>
+ <property name="transaction.factory_class">
+ org.hibernate.transaction.JTATransactionFactory
+ </property>
+ <property name="jta.UserTransaction">java:comp/UserTransaction</property>
+
+ <!-- mapping files -->
+ <mapping resource="org/hibernate/auction/Item.hbm.xml"/>
+ <mapping resource="org/hibernate/auction/Bid.hbm.xml"/>
+
+ <!-- cache settings -->
+ <class-cache class="org.hibernate.auction.Item" usage="read-write"/>
+ <class-cache class="org.hibernate.auction.Bid" usage="read-only"/>
+ <collection-cache collection="org.hibernate.auction.Item.bids" usage="read-write"/>
+
+ </session-factory>
+
+</hibernate-configuration>]]></programlisting>
+
+ <para>
+ ©ÄÌÆ¨èA±Ìû@ÌDÊ«ÍÝè̽ßÌ}bsOt@C¼ðOoµÉū鱯ŷB
+ HibernateLbV
ð`
[jOµÈ¯êÎÈçÈ¢ÌÅ êÎA
+ <literal>hibernate.cfg.xml</literal> ÍæèÖÅ·B
+ <literal>hibernate.properties</literal> Æ <literal>hibernate.cfg.xml</literal> Ì
+ Ç¿ç©ðg¦é±Æðo¦Ä¨¢Ä¾³¢B
+ ñÂͯ¶àÌÅAá¤Æ±ëÆ¢¦ÎXML\¶ðg¤±ÆÌ_¾¯Å·B
+ </para>
+
+ <para>
+ XMLÝèðg¤±ÆÅAHibernateÍÈºÌæ¤ÉVvÉÈèÜ·B
+ </para>
+
+ <programlisting><![CDATA[SessionFactory sf = new Configuration().configure().buildSessionFactory();]]></programlisting>
+
+ <para>
+ á¤XMLÝèt@Cðg¤±ÆàūܷB
+ </para>
+
+ <programlisting><![CDATA[SessionFactory sf = new Configuration()
+ .configure("catdb.cfg.xml")
+ .buildSessionFactory();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="configuration-j2ee" revision="1">
+ <title>J2EEAvP[VT[oÆÌ</title>
+
+ <para>
+ HibernateÍJ2EE\¢Æ·é|CgðT|[gµÄ¢Ü·B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis>ReiÇf[^\[X</emphasis>FHibernateÍ
+ JNDIªñµAReiªÇ·éJDBCRlNVðgpūܷB
+ ÊíAJTAÌ <literal>TransactionManager</literal> Æ
+ <literal>ResourceManager</literal> ªgUNVÇ(CMT)A
+ ÁÉlXÈf[^\[XÉܽªéªUgUNVðµ¢Ü·B
+ RvOÅgUNV«Eðwèūܷ(BMT)B
+ é¢ÍALqµ½R[hÌ|[^reBðÛ½ßÉA
+ IvVÌHibernateÌ <literal>Transaction</literal> APIðg¢½Èé©àµêܹñB
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis>©®JNDIoCfBO</emphasis>FHibernateÍJNDIª§¿ãªÁ½ãÉ
+ <literal>SessionFactory</literal> 𶬵ܷB
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis>JTAZbVoCfBO</emphasis> F
+ Hibernate <literal>Session</literal> ÌgUNV«EÍJTAgUNVƯ¶ÉÈèÜ·B
+ PÉ <literal>SessionFactory</literal> ðJNDI©çlookupµÄA
+ »ÝÌ <literal>Session</literal> ðæ¾µÜ·B
+ JTAgUNVª®¹µ½Æ«ÉAHibernateª <literal>Session</literal> ðtbV
µAN[YµÜ·B
+ EJBfvCgfBXNv^ÌÉAgUNV«Eð龵ܷB
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis>JMXfvC:</emphasis> àµJMXªgpÂ\ÈAvP[VT[oiá¦ÎJBOSSj
+ ª éêAHibernateðMBeanƵÄfvC·é±ÆðI×Ü·B
+ ±êÍ <literal>Configuration</literal> ©ç <literal>SessionFactory</literal> ð
+ ¶¬·éR[h𳷱ƪūܷB
+ ReiÍ <literal>HibernateService</literal> ðN®µA
+ T[rXÌ˶ðzIÉǵܷif[^\[XÍHibernateâ»Ì¼ªN®·éOÉ
+ gpÅ«éæ¤ÉµÈ¯êÎÈèܹñjB
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ «É˶µÜ·ªAàµAAvP[VT[oª"connection containment"ÌáOðX[·éÈç
+ ÝèÌIvV <literal>hibernate.connection.aggressive_release</literal>
+ ðtrueɵľ³¢B
+ </para>
+
+ <sect2 id="configuration-optional-transactionstrategy" revision="3">
+ <title>gUNVíªÝè</title>
+
+ <para>
+ Hibernate <literal>Session</literal> APIÍAA[LeN`àÌVXeÌÇÅ é
+ çäégUNVÉ˶µÜ¹ñB
+ àµRlNVv[ÌJDBCð¼Úg¢½¢êAJDBC API©ç
+ gUNVðÄԱƪūܷB
+ àµAJ2EEAvP[VT[oŮ쳹éÈçABeanÇgUNVðg¢A
+ KvÉ¶Ä <literal>UserTransaction</literal> ðJTA API©çÄÔ±ÆÉÈéŵå¤B
+ </para>
+
+ <para>
+ 2Âi»êÈãjÌ«ÅÝ·«Ì éR[hðÛ·é½ßÉAIvVƵĪ{IÈVXeð
+ bsO·éHibernate <literal>Transaction</literal> APIð§µÜ·B
+ HibernateÝèvpeBÌ <literal>hibernate.transaction.factory_class</literal> ðÝè·é±ÆÅ
+ éÁèÌ <literal>Transaction</literal> NXÌCX^Xð±ƪūܷB
+ </para>
+
+ <para>
+ 3ÂÌî{IÈiùÉ éjIðð°Ü·F
+ </para>
+
+ <variablelist spacing="compact">
+ <varlistentry>
+ <term><literal>org.hibernate.transaction.JDBCTransactionFactory</literal></term>
+ <listitem>
+ <para>f[^x[X(JDBC)gUNVÉÏ÷µÜ·iftHgj</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>org.hibernate.transaction.JTATransactionFactory</literal></term>
+ <listitem>
+ <para>
+ àµA±ÌReLXgiá¦ÎAEJBZbVBean\bhjÅisÌgUNVª¶Ý·éAàµÍ
+ Vµ¢gUNVªJn³êĨèABeanÇgUNVªgíêÄ¢éêA
+ ReiÇgUNVÉÏ÷µÜ·B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>org.hibernate.transaction.CMTTransactionFactory</literal></term>
+ <listitem>
+ <para>ReiÇJTAgUNVÉÏ÷µÜ·</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>
+ ©ª©gÌgUNVíªiá¦ÎACORBAgUNVT[rXjðè`·é±ÆàūܷB
+ </para>
+
+ <para>
+ Hibernate̢©Ì@\iá¦ÎAñLbV
AJTAÉæéReLXgZbV jÍ
+ dzê½Â«ÌÌJTA <literal>TransactionManager</literal> ÖÌANZXðvµÜ·B
+ J2EEªÐÆÂÌJjYÉKi»³êĢȢÌÅA
+ AvP[VT[oɨ¢ÄAHibernateª <literal>TransactionManager</literal> Ìt@X
+ ðæ¾·éû@ð¾mÉ·éKvª èÜ·B
+ </para>
+
+ <table frame="topbot" id="jtamanagerlookup" revision="1">
+ <title>JTA gUNV}l[W</title>
+ <tgroup cols="2">
+ <colspec colwidth="2.5*"/>
+ <colspec colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>Transaction Factory</entry>
+ <entry align="center">Application Server</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><literal>org.hibernate.transaction.JBossTransactionManagerLookup</literal></entry>
+ <entry align="center">JBoss</entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate.transaction.WeblogicTransactionManagerLookup</literal></entry>
+ <entry align="center">Weblogic</entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate.transaction.WebSphereTransactionManagerLookup</literal></entry>
+ <entry align="center">WebSphere</entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</literal></entry>
+ <entry align="center">WebSphere 6</entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate.transaction.OrionTransactionManagerLookup</literal></entry>
+ <entry align="center">Orion</entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate.transaction.ResinTransactionManagerLookup</literal></entry>
+ <entry align="center">Resin</entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate.transaction.JOTMTransactionManagerLookup</literal></entry>
+ <entry align="center">JOTM</entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate.transaction.JOnASTransactionManagerLookup</literal></entry>
+ <entry align="center">JOnAS</entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate.transaction.JRun4TransactionManagerLookup</literal></entry>
+ <entry align="center">JRun4</entry>
+ </row>
+ <row>
+ <entry><literal>org.hibernate.transaction.BESTransactionManagerLookup</literal></entry>
+ <entry align="center">Borland ES</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </sect2>
+
+ <sect2 id="configuration-optional-jndi" revision="3">
+ <title><literal>SessionFactory</literal> ÌJNDIÖÌo^</title>
+
+ <para>
+ JNDIÉo^µ½Hibernate <literal>SessionFactory</literal> ÍPÉ
+ t@NgðbNAbvµAVµ¢ <literal>Session</literal> ðìèÜ·B
+ ±êÍJNDIÉo^³ê½ <literal>Datasource</literal> ÉÍÖA¹¸A
+ ¨Ý¢ÉVvɱêçÌo^ðg¤±ÆÉӵľ³¢B
+ </para>
+
+ <para>
+ ൠ<literal>SessionFactory</literal> ðJNDIl[Xy[XÉo^µ½¢êA
+ ÁÊȼOiá¦ÎA <literal>java:hibernate/SessionFactory</literal> jð
+ <literal>hibernate.session_factory_name</literal> vpeBÉgÁľ³¢
+ ൱ÌvpeBðȪµ½êA <literal>SessionFactory</literal> Í
+ JNDIÉo^³êܹñBi±êÍTomcatÌæ¤ÈftHgÀÅJNDIªÇÝæèêpÌ«ÌêÁÉÖÅ·Bj
+ </para>
+
+ <para>
+ <literal>SessionFactory</literal> ðJNDIÉo^·éÆ«AHibernateÍ
+ <literal>hibernate.jndi.url</literal> ÌlðgpµA<literal>hibernate.jndi.class</literal>
+ ðCjVReLXgƵÄïÌ»µÜ·B
+ ൽàÝèµÈ¢êÍAftHgÌ <literal>InitialContext</literal> ðgpµÜ·B
+ </para>
+
+ <para>
+ <literal>cfg.buildSessionFactory()</literal> ðR[ã
+ HibernateÍ©®IÉ <literal>SessionFactory</literal> ðJNDIÉzuµÜ·B
+ <literal>HibernateService</literal> ÆêÉJMXfvCgðgíÈ¢ÀèA
+ ±êͱÌÄÑoµðAvP[Và̽ç©ÌX^[gAbvR[hiàµÍ[eBeBNXj
+ ÉzuµÈ¯êÎÈçÈ¢±ÆðÓ¡µÜ·BiãÅc_µÜ·j
+ </para>
+
+ <para>
+ àµJNDI <literal>SessionFactory</literal> ðg¤êAEJBâ¼ÌNXÍ
+ JNDIbNAbvðgÁÄ <literal>SessionFactory</literal> ðæ¾µÜ·B
+ </para>
+
+ <para>
+ dzê½Â«ÅÍ <literal>SessionFactory</literal> ðJNDIÉoChµA
+ »¤ÅȯêÎ <literal>static</literal> VOgðg¤±Æð§µÜ·B
+ ±¤¢Á½ÚשçAvP[VR[hðÛì·é½ßÉA
+ <literal>HibernateUtil.getSessionFactory()</literal> Ìæ¤Èwp[NXÌÉA
+ <literal>SessionFactory</literal> ðbNAbv·éR[hðB·±Æð§µÜ·B
+ ±Ìæ¤Èwp[NXÍHibernateðJn·éÖÈèiÅà èÜ·B
+ —PÍðQƵľ³¢B
+ </para>
+
+ </sect2>
+
+ <sect2 id="configuration-j2ee-currentsession" revision="4">
+ <title>JTAÉæé»ÝÌZbVReLXg}l[Wg</title>
+
+ <para>
+ àÁÆàÈPÉ <literal>Session</literal> ÆgUNVðµ¤û@ÍA
+ Hibernateª©®IÉu»ÝÌv <literal>Session</literal> ðÇ·é±ÆÅ·B
+ <xref linkend="architecture-current-session">JgZbV</xref> Ìà¾ðQƵľ³¢B
+ ൠ<literal>uJTAv</literal> ZbVReLXgðgÁ½ãÅA
+ »ÝÌJTAgUNVÆHibernate <literal>Session</literal> ªÖAµÄ¢È¢êÍA
+ ÅÉ <literal>sessionFactory.getCurrentSession()</literal> ðR[µA
+ JTAgUNVÆÌÖAt¯ðsÁľ³¢B
+ <literal>uJTAv</literal> ReLXgÌ <literal>getCurrentSession()</literal> ð
+ Ê¶Äæ¾µ½ <literal>Session</literal> ÍAgUNVª®¹·éOÉ
+ ©®IÉtbV
µA®¹µ½ãÉÍ©®IÉN[YµÜ·B
+ ܽAeXe[ggãÉJDBCRlNVðÏÉIÉ[XµÜ·B
+ ±êÉæèJTAgUNVÌCtTCNÅ <literal>Session</literal> ðÇ·é±ÆªÅ«A
+ [U[ÌR[h©ç»Ìæ¤ÈÇð·éR[hðrūܷB
+ <literal>UserTransaction</literal> ðʶÄJTAðvOÅÇ·é±ÆªÅ«Ü·B
+ ܽÍAi|[^uÈR[hÅ êÎjHibernate <literal>Transaction</literal> APIð
+ gUNV«EƵÄg¤±ÆàūܷB
+ EJBReiðg¤Æ«ÍACMTÉæéé¾IgUNV«EªDܵ¢Å·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="configuration-j2ee-jmx" revision="1">
+ <title>JMXfvCg</title>
+
+ <para>
+ <literal>SessionFactory</literal> ðJNDI©çæ¾·é½ßÉÍ
+ <literal>cfg.buildSessionFactory()</literal> sðDZ©ÅÀsµÄ¢È¯êÎÈèܹñB
+ ȽͱêðA<literal>static</literal> ú»ubNài <literal>HibernateUtil</literal> Ìæ¤Èj©
+ <emphasis>managed service</emphasis> ƵÄHibernateðfvC·é©AÇ¿ç©ÅÀsūܷB
+ </para>
+
+ <para>
+ JBOSSÌæ¤ÈJMXÌ@\ÅAvP[VT[oÉfvC·é½ßÉ
+ <literal>org.hibernate.jmx.HibernateService</literal> ðgÁÄAzuµÜ·B
+ ÀÛÌfvCgÆÝèÍx_[ÁLÅ·B
+ ±±ÅáÆµÄJBOSS 4.0.xpÌ <literal>jboss-service.xml</literal> ð¦µÜ·B
+ </para>
+
+ <programlisting><![CDATA[<?xml version="1.0"?>
+<server>
+
+<mbean code="org.hibernate.jmx.HibernateService"
+ name="jboss.jca:service=HibernateFactory,name=HibernateFactory">
+
+ <!-- Required services -->
+ <depends>jboss.jca:service=RARDeployer</depends>
+ <depends>jboss.jca:service=LocalTxCM,name=HsqlDS</depends>
+
+ <!-- Bind the Hibernate service to JNDI -->
+ <attribute name="JndiName">java:/hibernate/SessionFactory</attribute>
+
+ <!-- Datasource settings -->
+ <attribute name="Datasource">java:HsqlDS</attribute>
+ <attribute name="Dialect">org.hibernate.dialect.HSQLDialect</attribute>
+
+ <!-- Transaction integration -->
+ <attribute name="TransactionStrategy">
+ org.hibernate.transaction.JTATransactionFactory</attribute>
+ <attribute name="TransactionManagerLookupStrategy">
+ org.hibernate.transaction.JBossTransactionManagerLookup</attribute>
+ <attribute name="FlushBeforeCompletionEnabled">true</attribute>
+ <attribute name="AutoCloseSessionEnabled">true</attribute>
+
+ <!-- Fetching options -->
+ <attribute name="MaximumFetchDepth">5</attribute>
+
+ <!-- Second-level caching -->
+ <attribute name="SecondLevelCacheEnabled">true</attribute>
+ <attribute name="CacheProviderClass">org.hibernate.cache.EhCacheProvider</attribute>
+ <attribute name="QueryCacheEnabled">true</attribute>
+
+ <!-- Logging -->
+ <attribute name="ShowSqlEnabled">true</attribute>
+
+ <!-- Mapping files -->
+ <attribute name="MapResources">auction/Item.hbm.xml,auction/Category.hbm.xml</attribute>
+
+</mbean>
+
+</server>]]></programlisting>
+
+ <para>
+ ±Ìt@CÍ <literal>META-INF</literal> fBNgÉzu³êA
+ JARt@Cðg£µ½ <literal>.sar</literal> (service archive)ÅpbP[W»³êÜ·B
+ ¯lÉHibernatepbP[WàKvÅ·BܽAHibernateÍT[hp[eBÌCuàvµÜ·B
+ RpCµ½i±»NXÆ»Ì}bsOt@Cà¯lÉA[JCui.sart@CjÉüêÜ·B
+ G^[vCYbeaniÊíÍZbVbeanjÍ©gÌJARt@Cð۵ܷªA
+ 1ñÅizbgjfvCÂ\Èjbg̽ßÉCT[rXA[JCuƵıÌEJB JARt@CðCN[h·é
+ ±ÆªÅ«Ü·BJBossAvP[VT[oÌhL
gÉJXMT[rXÆ
+ EJBfvCgÌæè½Ìîñª èÜ·B
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+</chapter>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/events.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/events.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/events.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/events.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="events">
+ <title>C^[Zv^ÆCxg</title>
+
+ <para>
+ AvP[VªHibernateÌàŶ·éCxgÉÎÅ«éÆðɧ±ƪ èÜ·B
+ éíÌêÊIÈ@\ðÀū鿤ÉÈèA
+ ܽHibernateÌ@\ðg£·é±Æàū鿤ÉÈèÜ·B
+ </para>
+
+ <sect1 id="objectstate-interceptors" revision="3">
+ <title>C^[Zv^</title>
+
+ <para>
+ <literal>Interceptor</literal> C^[tFCXðgÁÄA
+ ZbV©çAvP[VÖR[obNð·é±ÆªÅ«Ü·B
+ ±êÉæèi±IuWFNgÌÛ¶AXVAíAÇÝÝÌOÉA
+ AvP[VªvpeB𸵽èìµ½èū鿤ÉÈèÜ·B
+ ±êÍĸîñÌÇÕÉpūܷB
+ ºÌáÅ <literal>Interceptor</literal> Í <literal>Auditable</literal>
+ ªì¬³ê鯩®IÉ <literal>createTimestamp</literal> ðÝèµA
+ <literal>Auditable</literal> ªXV³ê鯩®IÉ
+ <literal>lastUpdateTimestamp</literal> vpeBðXVµÜ·B
+ </para>
+
+ <para>
+ <literal>Interceptor</literal> ð¼ÚÀµ½èA
+ i³çÉæ¢ÌÍj<literal>EmptyInterceptor</literal> ðg£µ½èūܷB
+ </para>
+
+ <programlisting><![CDATA[package org.hibernate.test;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Iterator;
+
+import org.hibernate.EmptyInterceptor;
+import org.hibernate.Transaction;
+import org.hibernate.type.Type;
+
+public class AuditInterceptor extends EmptyInterceptor {
+
+ private int updates;
+ private int creates;
+ private int loads;
+
+ public void onDelete(Object entity,
+ Serializable id,
+ Object[] state,
+ String[] propertyNames,
+ Type[] types) {
+ // do nothing
+ }
+
+ public boolean onFlushDirty(Object entity,
+ Serializable id,
+ Object[] currentState,
+ Object[] previousState,
+ String[] propertyNames,
+ Type[] types) {
+
+ if ( entity instanceof Auditable ) {
+ updates++;
+ for ( int i=0; i < propertyNames.length; i++ ) {
+ if ( "lastUpdateTimestamp".equals( propertyNames[i] ) ) {
+ currentState[i] = new Date();
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ public boolean onLoad(Object entity,
+ Serializable id,
+ Object[] state,
+ String[] propertyNames,
+ Type[] types) {
+ if ( entity instanceof Auditable ) {
+ loads++;
+ }
+ return false;
+ }
+
+ public boolean onSave(Object entity,
+ Serializable id,
+ Object[] state,
+ String[] propertyNames,
+ Type[] types) {
+
+ if ( entity instanceof Auditable ) {
+ creates++;
+ for ( int i=0; i<propertyNames.length; i++ ) {
+ if ( "createTimestamp".equals( propertyNames[i] ) ) {
+ state[i] = new Date();
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ public void afterTransactionCompletion(Transaction tx) {
+ if ( tx.wasCommitted() ) {
+ System.out.println("Creations: " + creates + ", Updates: " + updates, "Loads: " + loads);
+ }
+ updates=0;
+ creates=0;
+ loads=0;
+ }
+
+}]]></programlisting>
+
+ <para>
+ C^[Zv^ÉÍñíÞ èÜ·F
+ <literal>Session</literal> XR[vÌàÌÆ
+ <literal>SessionFactory</literal> XR[vÌàÌÅ·B
+ </para>
+
+ <para>
+ <literal>Session</literal> XR[vÌC^[Zv^ÍA
+ ZbVðI[v·éÆ«ÉwèµÜ·B
+ <literal>Interceptor</literal> ðøÉæéSessionFactory.openSession()
+ ÌI[o[[h\bhÌêÂðg¢Ü·B
+ </para>
+
+ <programlisting><![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]></programlisting>
+
+ <para>
+ <literal>SessionFactory</literal> XR[vÌC^[Zv^Í <literal>Configuration</literal>
+ IuWFNgðgÁÄo^µÜ·B
+ ±êÍ <literal>SessionFactory</literal> Ì\zæèàDæ³êÜ·B
+ ±ÌêAñ³êéC^[Zv^Í <literal>SessionFactory</literal>
+ ©çI[v³ê½·×ÄÌZbVÉKp³êÜ·B
+ ±êÍgp·éC^[Zv^ð¾¦IÉwèµÄZbVðI[vµÈ¢ÀèA»¤ÈèÜ·B
+ <literal>SessionFactory</literal> XR[vÌC^[Zv^ÍXbhZ[tÅȯêÎÈèܹñB
+ ¡ÌZbVªiöÝIÉj±ÌC^[Zv^ð¯ÀsÅgp·é±ÆÉÈé½ßA
+ ZbVÅLÌóÔði[µÈ¢æ¤ÉCð¯ľ³¢B
+ </para>
+
+ <programlisting><![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="objectstate-events" revision="4">
+ <title>CxgVXe</title>
+
+ <para>
+ i±»wÅÁèÌCxgÉεȯêÎÈçÈ¢êA
+ Hibernate3Ì <emphasis>Cxg</emphasis> A[LeN`ðg¤±ÆàūܷB
+ CxgVXeÍC^[Zv^ÆêÉg¤©AܽÍC^[Zv^ÌãíèÆµÄg¤±ÆªÅ«Ü·B
+ </para>
+
+ <para>
+ {¿IÉ <literal>Session</literal> C^[tFCXÌ·×ÄÌ\bhÍA
+ 1ÂÌCxgÆÝÉÖAµÜ·B
+ á¦Î <literal>LoadEvent</literal>A<literal>FlushEvent</literal> ÈǪ èÜ·
+ iè`ÏÝÌCxg^ÌêÉ¢ÄÍAXMLÝèt@CÌDTDâ
+ <literal>org.hibernate.event</literal> pbP[Wð²×ľ³¢jB
+ NGXgª±êçÌ\bhÌ1©çìçê鯫A
+ HibernateÌ <literal>Session</literal> ÍKØÈCxg𶬵A
+ »ÌCxg^ÉÝè³ê½CxgXiÉnµÜ·B
+ ·Îçµ¢±ÆÉA±êçÌXiÍ»Ì\bhƯ¶ðÀµÜ·B
+ ÆÍ¢¦AXiC^[tFCXÌêÂð©RÉJX^Àūܷ
+ iÂÜèA<literal>LoadEvent</literal> Ío^³ê½ <literal>LoadEventListener</literal>
+ C^[tFCXÌÀÉæè³êÜ·jB
+ »ÌêA»ÌÀÉÍ <literal>Session</literal> ©çìçê½ÇÌæ¤È <literal>load()</literal>
+ NGXgðà·éÓCª èÜ·B
+ </para>
+
+ <para>
+ XiÍÀãVOgÅ éÆ©È¹Ü·B
+ ÂÜèXiÍNGXgÔŤL³êé½ßA
+ CX^XÏÆµÄóÔðÛ·é׫ÅÍȢƢ¤±ÆÅ·B
+ </para>
+
+ <para>
+ JX^Xi͵½¢CxgÉ¢ÄKØÈC^[tFCXðÀ·é׫ŷB
+ ÖÈîêNX̤¿ÌêÂðp³µÄàæ¢Å·
+ iܽÍHibernateªftHgÅgp·éCxgXiðp³µÄàæ¢Å·B
+ ·Îçµ¢±ÆÉA±ÌÚI̽ßÉñfinalƵÄé¾³êĢܷjB
+ JX^XiÍ <literal>Configuration</literal> IuWFNgðgÁÄvO©ço^·é©A
+ HibernateÌXMLÝèt@CÅwèūܷ
+ ivpeBt@CÅé¾IÉÝè·éû@ÍT|[g³êĢܹñjB
+ JX^[hCxgXiÌáð¦µÜ·B
+ </para>
+
+ <programlisting><![CDATA[public class MyLoadListener implements LoadEventListener {
+ // this is the single method defined by the LoadEventListener interface
+ public void onLoad(LoadEvent event, LoadEventListener.LoadType loadType)
+ throws HibernateException {
+ if ( !MySecurity.isAuthorized( event.getEntityClassName(), event.getEntityId() ) ) {
+ throw MySecurityException("Unauthorized access");
+ }
+ }
+}]]></programlisting>
+
+ <para>
+ ftHgXiÈOÌXiðg¤ÉÍAHibernateÖÌÝèàKvÅ·F
+ </para>
+
+<programlisting><![CDATA[<hibernate-configuration>
+ <session-factory>
+ ...
+ <event type="load">
+ <listener class="com.eg.MyLoadListener"/>
+ <listener class="org.hibernate.event.def.DefaultLoadEventListener"/>
+ </event>
+ </session-factory>
+</hibernate-configuration>]]></programlisting>
+
+ <para>
+ ܽ»Ì¼ÉAvOÅo^·éû@à èÜ·F
+ </para>
+
+ <programlisting><![CDATA[Configuration cfg = new Configuration();
+LoadEventListener[] stack = { new MyLoadListener(), new DefaultLoadEventListener() };
+cfg.EventListeners().setLoadEventListeners(stack);]]></programlisting>
+
+ <para>
+ Xiðé¾IÉo^·éÆA»ÌXiÌCX^Xð¤LūܹñB
+ ¡Ì <literal><listener/></literal> vfů¶NX¼ªgíêéÆA
+ »ê¼êÌQÆÍ»ÌNXÌÊXÌCX^Xðw·±ÆÉÈèÜ·B
+ Xi^ÌÔÅXiCX^Xð¤L·éKvª êÎA
+ vOÅo^·éû@ðÌçȯêÎÈèܹñB
+ </para>
+
+ <para>
+ ȺC^[tFCXðÀµÄAÁ»µ½^ðÝèÉwè·éÌŵ天H
+ XiÌÀNXÉA¡ÌCxgXiC^[tFCXðÀÅ«é©çÅ·B
+ o^ÉÇÁÅ^ðwè·é±ÆÅAJX^XiÌon/offðÝèÉÈPÉØèÖ¦çêÜ·B
+ </para>
+
+ </sect1>
+
+ <sect1 id="objectstate-decl-security" revision="2">
+ <title>HibernateÌé¾IÈZL
eB</title>
+ <para>
+ êÊIÉHibernateAvP[VÌé¾IÈZL
eBÍAZbVt@T[hwÅǵܷB
+ »ÝAHiberenate3ÍJACCŵ©ÂAJAASÅFص½ANVðµÄ¢Ü·B
+ ±êÍCxgA[LeN`ÌÅãÊÉgÝÜêÄ¢éIvVÌ@\Å·B
+ </para>
+
+ <para>
+ ܸÅÉAKØÈCxgXiðÝèµÄJAASFØðg¦éæ¤ÉµÈ¯êÎÈèܹñB
+ </para>
+
+ <programlisting><![CDATA[<listener type="pre-delete" class="org.hibernate.secure.JACCPreDeleteEventListener"/>
+<listener type="pre-update" class="org.hibernate.secure.JACCPreUpdateEventListener"/>
+<listener type="pre-insert" class="org.hibernate.secure.JACCPreInsertEventListener"/>
+<listener type="pre-load" class="org.hibernate.secure.JACCPreLoadEventListener"/>]]></programlisting>
+
+ <para>
+ ÁèÌCxg^ÉεĿå¤ÇêÂÌXiª 鯫A
+ <literal><listener type="..." class="..."/></literal>
+ Í <literal><event type="..."><listener class="..."/></event></literal>
+ ÌȪ`É߬Ȣ±ÆÉӵľ³¢B
+ </para>
+
+ <para>
+ ÉA¯¶ <literal>hibernate.cfg.xml</literal> Å[Ép[~bVð^¦Ä¾³¢F
+ </para>
+
+ <programlisting><![CDATA[<grant role="admin" entity-name="User" actions="insert,update,read"/>
+<grant role="su" entity-name="User" actions="*"/>]]></programlisting>
+
+ <para>
+ ±Ì[¼Ígp·éJACCvoC_Éð³êé[Å·B
+ </para>
+
+ </sect1>
+
+</chapter>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_mappings.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/example_mappings.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_mappings.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_mappings.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,659 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
+<chapter id="example-mappings">
+ <title>áF¢ë¢ëÈ}bsO</title>
+
+ <para>
+ ±ÌÍÅÍAæè¡GÈÖAÌ}bsOð¢Â©ÐîµÜ·B
+ </para>
+
+ <sect1 id="example-mappings-emp">
+ <title>ÙpÒ/]Æõ</title>
+
+ <para>
+ <literal>Employer</literal> Æ <literal>Employee</literal> ÌÖWð\·ÈºÌfÍA
+ ÖAÌ\»ÉÀÛÌGeBeBNXi <literal>Employment</literal> j
+ ðg¢Ü·B
+ ȺÈçA¯¶2ÂÌp[eBÉ¡ÌúÔÙp³ê鯢¤±Æª è¦é©çÅ·B
+ ¨àÌlÆ]Æõ̼Oðf»·é½ßÉR|[lgðgÁĢܷB
+ </para>
+
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="../images/EmployerEmployee.png" format="PNG" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="../images/EmployerEmployee.png" format="PNG" align="center"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>
+ }bsOhL
gÌêáÅ·F
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="Employer" table="employers">
+ <id name="id">
+ <generator class="sequence">
+ <param name="sequence">employer_id_seq</param>
+ </generator>
+ </id>
+ <property name="name"/>
+ </class>
+
+ <class name="Employment" table="employment_periods">
+
+ <id name="id">
+ <generator class="sequence">
+ <param name="sequence">employment_id_seq</param>
+ </generator>
+ </id>
+ <property name="startDate" column="start_date"/>
+ <property name="endDate" column="end_date"/>
+
+ <component name="hourlyRate" class="MonetaryAmount">
+ <property name="amount">
+ <column name="hourly_rate" sql-type="NUMERIC(12, 2)"/>
+ </property>
+ <property name="currency" length="12"/>
+ </component>
+
+ <many-to-one name="employer" column="employer_id" not-null="true"/>
+ <many-to-one name="employee" column="employee_id" not-null="true"/>
+
+ </class>
+
+ <class name="Employee" table="employees">
+ <id name="id">
+ <generator class="sequence">
+ <param name="sequence">employee_id_seq</param>
+ </generator>
+ </id>
+ <property name="taxfileNumber"/>
+ <component name="name" class="Name">
+ <property name="firstName"/>
+ <property name="initial"/>
+ <property name="lastName"/>
+ </component>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ <literal>SchemaExport</literal> Ŷ¬µ½e[uXL[}Å·B
+ </para>
+
+ <programlisting><![CDATA[create table employers (
+ id BIGINT not null,
+ name VARCHAR(255),
+ primary key (id)
+)
+
+create table employment_periods (
+ id BIGINT not null,
+ hourly_rate NUMERIC(12, 2),
+ currency VARCHAR(12),
+ employee_id BIGINT not null,
+ employer_id BIGINT not null,
+ end_date TIMESTAMP,
+ start_date TIMESTAMP,
+ primary key (id)
+)
+
+create table employees (
+ id BIGINT not null,
+ firstName VARCHAR(255),
+ initial CHAR(1),
+ lastName VARCHAR(255),
+ taxfileNumber VARCHAR(255),
+ primary key (id)
+)
+
+alter table employment_periods
+ add constraint employment_periodsFK0 foreign key (employer_id) references employers
+alter table employment_periods
+ add constraint employment_periodsFK1 foreign key (employee_id) references employees
+create sequence employee_id_seq
+create sequence employment_id_seq
+create sequence employer_id_seq]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="example-mappings-authorwork">
+ <title>ìÒ/ìi</title>
+
+ <para>
+ <literal>Work</literal> , <literal>Author</literal> »µÄ <literal>Person</literal>
+ ÌÖWð\·ÈºÌfðl¦ÄÝľ³¢B
+ <literal>Work</literal> Æ <literal>Author</literal> ÌÖWð½Î½ÖAÅ\µÄ¢Ü·B
+ <literal>Author</literal> Æ <literal>Person</literal> ÌÖWÍêÎêÖAƵÄ\µÄ¢Ü·B
+ ¼ÉÍ <literal>Author</literal> ª <literal>Person</literal> ðg£·éÆ¢¤û@à èÜ·B
+ </para>
+
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="../images/AuthorWork.png" format="PNG" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="../images/AuthorWork.png" format="PNG" align="center"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>
+ ȺÌ}bsOhL
gÍ±Ìæ¤ÈÖWð³mÉ\»µÄ¢Ü·B
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="Work" table="works" discriminator-value="W">
+
+ <id name="id" column="id">
+ <generator class="native"/>
+ </id>
+ <discriminator column="type" type="character"/>
+
+ <property name="title"/>
+ <set name="authors" table="author_work">
+ <key column name="work_id"/>
+ <many-to-many class="Author" column name="author_id"/>
+ </set>
+
+ <subclass name="Book" discriminator-value="B">
+ <property name="text"/>
+ </subclass>
+
+ <subclass name="Song" discriminator-value="S">
+ <property name="tempo"/>
+ <property name="genre"/>
+ </subclass>
+
+ </class>
+
+ <class name="Author" table="authors">
+
+ <id name="id" column="id">
+ <!-- The Author must have the same identifier as the Person -->
+ <generator class="assigned"/>
+ </id>
+
+ <property name="alias"/>
+ <one-to-one name="person" constrained="true"/>
+
+ <set name="works" table="author_work" inverse="true">
+ <key column="author_id"/>
+ <many-to-many class="Work" column="work_id"/>
+ </set>
+
+ </class>
+
+ <class name="Person" table="persons">
+ <id name="id" column="id">
+ <generator class="native"/>
+ </id>
+ <property name="name"/>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ ±Ì}bsOÉÍ4ÂÌe[uª èÜ·B
+ <literal>works</literal> , <literal>authors</literal> , <literal>persons</literal>
+ Í»ê¼êAdAìÒAlÌf[^ð۵ܷB
+ <literal>author_work</literal> ÍìÒÆìiðN·éÖAe[uÅ·B
+ ÈºÍ <literal>SchemaExport</literal> Ŷ¬µ½e[uXL[}Å·B
+ </para>
+
+ <programlisting><![CDATA[create table works (
+ id BIGINT not null generated by default as identity,
+ tempo FLOAT,
+ genre VARCHAR(255),
+ text INTEGER,
+ title VARCHAR(255),
+ type CHAR(1) not null,
+ primary key (id)
+)
+
+create table author_work (
+ author_id BIGINT not null,
+ work_id BIGINT not null,
+ primary key (work_id, author_id)
+)
+
+create table authors (
+ id BIGINT not null generated by default as identity,
+ alias VARCHAR(255),
+ primary key (id)
+)
+
+create table persons (
+ id BIGINT not null generated by default as identity,
+ name VARCHAR(255),
+ primary key (id)
+)
+
+alter table authors
+ add constraint authorsFK0 foreign key (id) references persons
+alter table author_work
+ add constraint author_workFK0 foreign key (author_id) references authors
+alter table author_work
+ add constraint author_workFK1 foreign key (work_id) references works]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="example-mappings-customerorderproduct">
+ <title>Úq/¶/»i</title>
+
+ <para>
+ ³ÄA <literal>Customer</literal> , <literal>Order</literal> , <literal>LineItem</literal>
+ <literal>Product</literal> ÌÖWð\·fðl¦ÄÝܵå¤B
+ <literal>Customer</literal> Æ <literal>Order</literal> ÍêνÌÖAÅ·ªA
+ <literal>Order</literal> / <literal>LineItem</literal> / <literal>Product</literal>
+ ÍÇÌæ¤É\»·é׫ŵ天H
+ <literal>LineItem</literal> ðA<literal>Order</literal> Æ <literal>Product</literal>
+ ̽νÖAð\»·éÖANXƵÄ}bsOµÜµ½B
+ HibernateÅͱêðR|WbgvfÆÄÑÜ·B
+ </para>
+
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="../images/CustomerOrderProduct.png" format="PNG" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="../images/CustomerOrderProduct.png" format="PNG" align="center"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>
+ }bsOhL
gF
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="Customer" table="customers">
+ <id name="id">
+ <generator class="native"/>
+ </id>
+ <property name="name"/>
+ <set name="orders" inverse="true">
+ <key column="customer_id"/>
+ <one-to-many class="Order"/>
+ </set>
+ </class>
+
+ <class name="Order" table="orders">
+ <id name="id">
+ <generator class="native"/>
+ </id>
+ <property name="date"/>
+ <many-to-one name="customer" column="customer_id"/>
+ <list name="lineItems" table="line_items">
+ <key column="order_id"/>
+ <list-index column="line_number"/>
+ <composite-element class="LineItem">
+ <property name="quantity"/>
+ <many-to-one name="product" column="product_id"/>
+ </composite-element>
+ </list>
+ </class>
+
+ <class name="Product" table="products">
+ <id name="id">
+ <generator class="native"/>
+ </id>
+ <property name="serialNumber"/>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ <literal>customers</literal> , <literal>orders</literal> , <literal>line_items</literal> ,
+ <literal>products</literal> Í»ê¼êAÚqA¶A¶¾×A»iÌf[^ð۵ܷB
+ <literal>line_items</literal> ͶƻiðN·éÖAe[uƵÄà«Ü·B
+ </para>
+
+ <programlisting><![CDATA[create table customers (
+ id BIGINT not null generated by default as identity,
+ name VARCHAR(255),
+ primary key (id)
+)
+
+create table orders (
+ id BIGINT not null generated by default as identity,
+ customer_id BIGINT,
+ date TIMESTAMP,
+ primary key (id)
+)
+
+create table line_items (
+ line_number INTEGER not null,
+ order_id BIGINT not null,
+ product_id BIGINT,
+ quantity INTEGER,
+ primary key (order_id, line_number)
+)
+
+create table products (
+ id BIGINT not null generated by default as identity,
+ serialNumber VARCHAR(255),
+ primary key (id)
+)
+
+alter table orders
+ add constraint ordersFK0 foreign key (customer_id) references customers
+alter table line_items
+ add constraint line_itemsFK0 foreign key (product_id) references products
+alter table line_items
+ add constraint line_itemsFK1 foreign key (order_id) references orders]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="misc">
+ <title>íXG½È}bsOá</title>
+
+ <para>
+ ±±É éáÍ·×ÄHibernateÌeXgXC[g©çæèܵ½B
+ »±ÉÍA¼ÉཱིñÌ}bsOÌ᪠èÜ·B
+ HibernatefBXgr
[VÌ <literal>test</literal> tH_ð©Ä¾³¢B
+ </para>
+
+ <para>TODO: ±±É¶Íðßé</para>
+
+ <sect2 id="example-mappings-typed-onetone">
+ <title>u^t¯³ê½vêÎêÖA</title>
+<programlisting><![CDATA[<class name="Person">
+ <id name="name"/>
+ <one-to-one name="address"
+ cascade="all">
+ <formula>name</formula>
+ <formula>'HOME'</formula>
+ </one-to-one>
+ <one-to-one name="mailingAddress"
+ cascade="all">
+ <formula>name</formula>
+ <formula>'MAILING'</formula>
+ </one-to-one>
+</class>
+
+<class name="Address" batch-size="2"
+ check="addressType in ('MAILING', 'HOME', 'BUSINESS')">
+ <composite-id>
+ <key-many-to-one name="person"
+ column="personName"/>
+ <key-property name="type"
+ column="addressType"/>
+ </composite-id>
+ <property name="street" type="text"/>
+ <property name="state"/>
+ <property name="zip"/>
+</class>]]></programlisting>
+ </sect2>
+
+ <sect2 id="example-mappings-composite-key">
+ <title>¡L[Ìá</title>
+<programlisting><![CDATA[<class name="Customer">
+
+ <id name="customerId"
+ length="10">
+ <generator class="assigned"/>
+ </id>
+
+ <property name="name" not-null="true" length="100"/>
+ <property name="address" not-null="true" length="200"/>
+
+ <list name="orders"
+ inverse="true"
+ cascade="save-update">
+ <key column="customerId"/>
+ <index column="orderNumber"/>
+ <one-to-many class="Order"/>
+ </list>
+
+</class>
+
+<class name="Order" table="CustomerOrder" lazy="true">
+ <synchronize table="LineItem"/>
+ <synchronize table="Product"/>
+
+ <composite-id name="id"
+ class="Order$Id">
+ <key-property name="customerId" length="10"/>
+ <key-property name="orderNumber"/>
+ </composite-id>
+
+ <property name="orderDate"
+ type="calendar_date"
+ not-null="true"/>
+
+ <property name="total">
+ <formula>
+ ( select sum(li.quantity*p.price)
+ from LineItem li, Product p
+ where li.productId = p.productId
+ and li.customerId = customerId
+ and li.orderNumber = orderNumber )
+ </formula>
+ </property>
+
+ <many-to-one name="customer"
+ column="customerId"
+ insert="false"
+ update="false"
+ not-null="true"/>
+
+ <bag name="lineItems"
+ fetch="join"
+ inverse="true"
+ cascade="save-update">
+ <key>
+ <column name="customerId"/>
+ <column name="orderNumber"/>
+ </key>
+ <one-to-many class="LineItem"/>
+ </bag>
+
+</class>
+
+<class name="LineItem">
+
+ <composite-id name="id"
+ class="LineItem$Id">
+ <key-property name="customerId" length="10"/>
+ <key-property name="orderNumber"/>
+ <key-property name="productId" length="10"/>
+ </composite-id>
+
+ <property name="quantity"/>
+
+ <many-to-one name="order"
+ insert="false"
+ update="false"
+ not-null="true">
+ <column name="customerId"/>
+ <column name="orderNumber"/>
+ </many-to-one>
+
+ <many-to-one name="product"
+ insert="false"
+ update="false"
+ not-null="true"
+ column="productId"/>
+
+</class>
+
+<class name="Product">
+ <synchronize table="LineItem"/>
+
+ <id name="productId"
+ length="10">
+ <generator class="assigned"/>
+ </id>
+
+ <property name="description"
+ not-null="true"
+ length="200"/>
+ <property name="price" length="3"/>
+ <property name="numberAvailable"/>
+
+ <property name="numberOrdered">
+ <formula>
+ ( select sum(li.quantity)
+ from LineItem li
+ where li.productId = productId )
+ </formula>
+ </property>
+
+</class>]]></programlisting>
+ </sect2>
+
+ <sect2 id="example-mappings-composite-key-manytomany">
+ <title>¡L[®«ð¤L·é½Î½</title>
+<programlisting><![CDATA[<class name="User" table="`User`">
+ <composite-id>
+ <key-property name="name"/>
+ <key-property name="org"/>
+ </composite-id>
+ <set name="groups" table="UserGroup">
+ <key>
+ <column name="userName"/>
+ <column name="org"/>
+ </key>
+ <many-to-many class="Group">
+ <column name="groupName"/>
+ <formula>org</formula>
+ </many-to-many>
+ </set>
+</class>
+
+<class name="Group" table="`Group`">
+ <composite-id>
+ <key-property name="name"/>
+ <key-property name="org"/>
+ </composite-id>
+ <property name="description"/>
+ <set name="users" table="UserGroup" inverse="true">
+ <key>
+ <column name="groupName"/>
+ <column name="org"/>
+ </key>
+ <many-to-many class="User">
+ <column name="userName"/>
+ <formula>org</formula>
+ </many-to-many>
+ </set>
+</class>
+]]></programlisting>
+ </sect2>
+
+ <sect2 id="example-mappings-content-discrimination">
+ <title>discriminationÉîÃàe</title>
+<programlisting><![CDATA[<class name="Person"
+ discriminator-value="P">
+
+ <id name="id"
+ column="person_id"
+ unsaved-value="0">
+ <generator class="native"/>
+ </id>
+
+
+ <discriminator
+ type="character">
+ <formula>
+ case
+ when title is not null then 'E'
+ when salesperson is not null then 'C'
+ else 'P'
+ end
+ </formula>
+ </discriminator>
+
+ <property name="name"
+ not-null="true"
+ length="80"/>
+
+ <property name="sex"
+ not-null="true"
+ update="false"/>
+
+ <component name="address">
+ <property name="address"/>
+ <property name="zip"/>
+ <property name="country"/>
+ </component>
+
+ <subclass name="Employee"
+ discriminator-value="E">
+ <property name="title"
+ length="20"/>
+ <property name="salary"/>
+ <many-to-one name="manager"/>
+ </subclass>
+
+ <subclass name="Customer"
+ discriminator-value="C">
+ <property name="comments"/>
+ <many-to-one name="salesperson"/>
+ </subclass>
+
+</class>]]></programlisting>
+ </sect2>
+
+ <sect2 id="example-mappings-association-alternatekeys" revision="2">
+ <title>ãÖL[ÌÖA</title>
+<programlisting><![CDATA[<class name="Person">
+
+ <id name="id">
+ <generator class="hilo"/>
+ </id>
+
+ <property name="name" length="100"/>
+
+ <one-to-one name="address"
+ property-ref="person"
+ cascade="all"
+ fetch="join"/>
+
+ <set name="accounts"
+ inverse="true">
+ <key column="userId"
+ property-ref="userId"/>
+ <one-to-many class="Account"/>
+ </set>
+
+ <property name="userId" length="8"/>
+
+</class>
+
+<class name="Address">
+
+ <id name="id">
+ <generator class="hilo"/>
+ </id>
+
+ <property name="address" length="300"/>
+ <property name="zip" length="5"/>
+ <property name="country" length="25"/>
+ <many-to-one name="person" unique="true" not-null="true"/>
+
+</class>
+
+<class name="Account">
+ <id name="accountId" length="32">
+ <generator class="uuid"/>
+ </id>
+
+ <many-to-one name="user"
+ column="userId"
+ property-ref="userId"/>
+
+ <property name="type" not-null="true"/>
+
+</class>]]></programlisting>
+ </sect2>
+
+ </sect1>
+
+</chapter>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_parentchild.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/example_parentchild.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_parentchild.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_parentchild.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="example-parentchild">
+ <title>áFe/q
+ </title>
+
+ <para>
+ VK[UªHibernateðgÁÄܸÅɵ¤fÌêÂÉAeq^Ìf»ª èÜ·B
+ ±Ìf»ÉÍñÂÌAv[`ª¶ÝµÜ·BÆèí¯VK[UÉÆÁÄA
+ ³Ü´ÜÈR©çÅàÖ¾ÆvíêéAv[`ÍA<literal>e</literal> ©ç <literal>q</literal>
+ ÖÌ <literal><one-to-many></literal> ÖAÉæè <literal>e</literal> Æ <literal>q</literal>
+ ̼ûðGeBeBNXƵÄfO·éû@Å·
+ ià¤êÂÌû@ÍA<literal>q</literal> ð <literal><composite-element></literal> ƵÄè`·éàÌÅ·jB
+ ±êÅiHibernateɨ¯éjêνÖAÌftHgÌZ}eBNXªAÊíÌ¡vfÌ}bsOæèàA
+ eqÖWÌZ}eBNX©ç¢±Æªí©èÜ·B
+ »êÅÍeqÖWðø¦I©ÂGKgÉfO·é½ßÉA
+ <emphasis>JXP[hìðgÁ½oûüêνÖA</emphasis> ̵¢ûðྵܷB±êÍÜÁ½ïµ¢àÌÅÍ èܹñB
+
+ </para>
+
+ <sect1 id="example-parentchild-collections">
+ <title>RNVÉÖ·éÓ</title>
+
+ <para>
+ HibernateÌRNVÍ©gÌGeBeBÌ_IȪÆl¦çêA
+ µÄïÜ·éGeBeBÌàÌÅÍ èܹñB±êÍv½IÈá¢Å·I
+ ±êÍÈºÌæ¤ÈÊÉÈèÜ·F
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ IuWFNgðRNV©çíAܽÍRNVÉÇÁ·éÆ«A
+ RNVÌI[i[Ìo[WÔÍCNg³êÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ àµRNV©çí³ê½IuWFNgªl^ÌCX^X
+ iá¦ÎR|WbgGg)¾Á½ÈçÎA»ÌIuWFNgÍi±IÅÍÈÈèA
+ »ÌóÔÍf[^x[X©ç®SÉí³êÜ·B
+ ¯¶æ¤ÉAl^ÌCX^XðRNVÉÇÁ·éÆA»ÌóÔÍ·®Éi±IÉÈèÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ êûAàµGeBeBªRNViêνܽͽνÖA)©çí³êÄàA
+ ftHgÅÍ»êÍí³êܹñB±Ì®ìÍ®SÉêѵĢܷB
+ ·Èí¿A¼ÌGeBeBÌàóÔðÏXµÄàAÖA·éGeBeBªÁŷ׫ÅÍȢƢ¤±ÆÅ·B
+ ¯lÉAGeBeBªRNVÉÇÁ³êÄàAftHgÅÍ»ÌGeBeBÍi±IÉÍÈèܹñB
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ »ÌãíèÉAftHgÌ®ìÅÍAGeBeBðRNVÉÇÁ·éÆPÉñÂÌGeBeBÔÌNð쬵A
+ êûGeBeBðí·éÆNàíµÜ·B±êÍ·×ÄÌP[Xɨ¢ÄñíÉKØÅ·B
+ ±êªKØÅÈ¢ÌÍe/qÖWÌêÅ·B±Ìêq̶¶ÍeÌCtTCNɧÀ³êé©çÅ·B
+ </para>
+
+ </sect1>
+
+ <sect1 id="example-parentchild-bidir">
+ <title>oûüêν
+ </title>
+
+ <para>
+ <literal>Parent</literal> ©ç <literal>Child</literal> ÖÌPÈ <literal><one-to-many></literal> ÖA©çnß鯵ܷB
+ </para>
+
+ <programlisting><![CDATA[<set name="children">
+ <key column="parent_id"/>
+ <one-to-many class="Child"/>
+</set>]]></programlisting>
+
+ <para>
+ ȺÌR[hðÀs·éÆA
+ </para>
+
+ <programlisting><![CDATA[Parent p = .....;
+Child c = new Child();
+p.getChildren().add(c);
+session.save(c);
+session.flush();]]></programlisting>
+
+ <para>
+ HibernateÍñÂÌSQL¶ðsµÜ·:
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>c</literal>ÉηéR[h𶬷é<literal>INSERT</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>p</literal>©ç<literal>c</literal>ÖÌNð쬷é<literal>UPDATE</literal>
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ±êÍñø¦IȾ¯ÅÍÈA<literal>parent_id</literal> Jɨ¢Ä <literal>NOT NULL</literal> §ñÉήܷB
+ RNVÌ}bsOÅ <literal>not-null="true"</literal> Æwè·é±ÆÅAnull§ñá½ðð·é±ÆªÅ«Ü·:
+ </para>
+
+ <programlisting><![CDATA[<set name="children">
+ <key column="parent_id" not-null="true"/>
+ <one-to-many class="Child"/>
+</set>]]></programlisting>
+
+ <para>
+ µ©µ±ÌðôͧūܹñB
+ </para>
+ <para>
+ ±Ì®ì̪{IÈ´öÍA<literal>p</literal> ©ç <literal>c</literal> ÖÌN
+ iOL[ <literal>parent_id</literal>)Í <literal>Child</literal> IuWFNgÌóÔÌêÆÍl¦çê¸A
+ »Ì½ß <literal>INSERT</literal> ÉæÁÄNª¶¬³êÈ¢±ÆÅ·B
+ Å·©çAðôÍNðChild}bsOÌêɷ鱯ŷB
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="parent" column="parent_id" not-null="true"/>]]></programlisting>
+
+ <para>
+ (ܽ <literal>Child</literal> NXÉ <literal>parent</literal> vpeBðÇÁ·éKvª èÜ·B)
+ </para>
+
+ <para>
+ »êÅÍ <literal>Child</literal> GeBeBªNÌóÔð§ä·éæ¤ÉÈÁ½ÌÅA
+ RNVªNðXVµÈ¢æ¤ÉµÜµå¤B»êÉÍ <literal>inverse</literal> ®«ðg¢Ü·B
+ </para>
+
+ <programlisting><![CDATA[<set name="children" inverse="true">
+ <key column="parent_id"/>
+ <one-to-many class="Child"/>
+</set>]]></programlisting>
+
+ <para>
+ ȺÌR[hðg¦ÎAVµ¢ <literal>Child</literal> ðÇÁ·é±ÆªÅ«Ü·B
+ </para>
+
+ <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class, pid);
+Child c = new Child();
+c.setParent(p);
+p.getChildren().add(c);
+session.save(c);
+session.flush();]]></programlisting>
+
+ <para>
+ ±êÉæèASQLÌ <literal>INSERT</literal> ¶ªê¾¯ªs³ê鿤ÉÈèܵ½I
+ </para>
+
+ <para>
+ व»·éÉÍA<literal>Parent</literal> Ì <literal>addChild()</literal> \bhð쬵ܷB
+ </para>
+
+ <programlisting><![CDATA[public void addChild(Child c) {
+ c.setParent(this);
+ children.add(c);
+}]]></programlisting>
+
+ <para>
+ <literal>Child</literal> ðÇÁ·éR[hÍ±Ìæ¤ÉÈèÜ·B
+ </para>
+
+ <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class, pid);
+Child c = new Child();
+p.addChild(c);
+session.save(c);
+session.flush();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="example-parentchild-cascades">
+ <title>CtTCNÌJXP[h</title>
+
+ <para>
+ ¾¦IÉ <literal>save()</literal> ðR[·éÌÍܾÏíµ¢àÌÅ·B±êðJXP[hðgÁÄεܷB
+ </para>
+
+ <programlisting><![CDATA[<set name="children" inverse="true" cascade="all">
+ <key column="parent_id"/>
+ <one-to-many class="Child"/>
+</set>]]></programlisting>
+
+ <para>
+ ±êÉæèæÙÇÌR[hð±Ìæ¤ÉP»µÜ·
+ </para>
+
+ <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class, pid);
+Child c = new Child();
+p.addChild(c);
+session.flush();]]></programlisting>
+
+ <para>
+ ¯lÉ <literal>Parent</literal> ð۶ܽÍí·éÆ«ÉAqðêÂêÂæèoµÄµ¤KvÍ èܹñB
+ ȺÌR[hÍ <literal>p</literal> ðíµA»µÄf[^x[X©ç»Ìqð·×ÄíµÜ·B
+ </para>
+
+ <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class, pid);
+session.delete(p);
+session.flush();]]></programlisting>
+
+ <para>
+ µ©µ±ÌR[hÍ
+ </para>
+
+ <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class, pid);
+Child c = (Child) p.getChildren().iterator().next();
+p.getChildren().remove(c);
+c.setParent(null);
+session.flush();]]></programlisting>
+
+ <para>
+ f[^x[X©ç <literal>c</literal> ðíµÜ¹ñB<literal>p</literal> ÖÌNðí·é
+ i»µÄ±ÌP[XÅÍ <literal>NOT NULL</literal> §ñá½ðø«N±·j¾¯Å·B
+ <literal>Child</literal> Ì <literal>delete()</literal> 𾦷éKvª èÜ·B
+ </para>
+
+ <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class, pid);
+Child c = (Child) p.getChildren().iterator().next();
+p.getChildren().remove(c);
+session.delete(c);
+session.flush();]]></programlisting>
+
+ <para>
+ ¡±ÌP[XÅÍÀÛÉ <literal>Child</literal> ªeȵÅͶÝūȢæ¤ÉÈèܵ½B
+ »Ì½ßAàµRNV©ç <literal>Child</literal> ðæèêA±êàíµ½¢Å·B
+ »Ì½ßÉÍ <literal>cascade="all-delete-orphan"</literal> ðgíȯêÎÈèܹñB
+ </para>
+
+ <programlisting><![CDATA[<set name="children" inverse="true" cascade="all-delete-orphan">
+ <key column="parent_id"/>
+ <one-to-many class="Child"/>
+</set>]]></programlisting>
+
+ <para>
+ ÓFRNVÌ}bsOÅ <literal>inverse="true"</literal> ÆwèµÄàA
+ RNVÌvfÌCe[VÉæÁÄAËRJXP[hªÀs³êÜ·B
+ »Ì½ßàµJXP[hÅIuWFNgðZ[uAíAXV·éKvª éÈçA
+ »êðRNVÉÇÁµÈ¯êÎÈèܹñBPÉ <literal>setParent()</literal> ðÄÔ¾¯ÅÍs\ªÅ·B
+ </para>
+
+ </sect1>
+
+ <sect1 id="example-parentchild-update">
+ <title>JXP[hÆ <literal>unsaved-value</literal></title>
+
+ <para>
+ <literal>Parent</literal> ªA é <literal>Session</literal> Å[h³êAUIÌANVÅÏXªÁ¦çêA
+ <literal>update()</literal> ðÄñűÌÏXðVµ¢ZbVÅi±»µ½¢ÆµÜ·B
+ <literal>Parent</literal> ªqÌRNVð¿AJXP[hXVªLøÉÈÁÄ¢é½ßA
+ HibernateÍÇÌqªVµCX^X»³ê½©AÇêªf[^x[XÌù¶ÌsÉ·éÌ©ðméKvª èÜ·B
+ <literal>Parent</literal> Æ <literal>Child</literal> ̼ûª <literal>java.lang.Long</literal>
+ ^̯ÊvpeB𶬵½ÆµÜµå¤B
+ HibernateÍÇÌqªVµ¢àÌ©ðè·é½ßɯÊvpeBÌlðg¢Ü·(versionâtimestampvpeBàg¦Ü·B
+ <xref linkend="manipulatingdata-updating-detached"/> QÆ)BHibernate3ÉÈÁÄA
+ ¾¦IÉ <literal>unsaved-value</literal> ðwè·éKvÍÈÈèܵ½B
+ </para>
+
+ <para>
+ ȺÌR[hÍ <literal>parent</literal> Æ <literal>child</literal> ðXVµA<literal>newChild</literal> ð}üµÜ·B
+ </para>
+
+ <programlisting><![CDATA[//parent and child were both loaded in a previous session
+//parentÆchildͼûÆàAÈOÌSessionÅ[h³êĢܷ
+parent.addChild(child);
+Child newChild = new Child();
+parent.addChild(newChild);
+session.update(parent);
+session.flush();]]></programlisting>
+
+ <para>
+ ±êçͶ¬³ê½¯ÊqÌêÉÍñíÉÇ¢ÌÅ·ªAèÄç꽯ÊqÆ¡¯ÊqÌêÍǤŵ天H
+ ±êÍHibernateªAi[UÉæèèÄç꽯ÊqðÂjVµCX^X»³ê½IuWFNgÆA
+ ÈOÌSessionÅ[h³ê½IuWFNgðæÊūȢ½ßAæèﵢŷB
+ ±ÌêAHibernateÍ^CX^v©o[WÌvpeBÌÇ¿ç©ðg¤©AñLbV
Éâ¢í¹Ü·B
+ Å«ÌêAsª¶Ý·é©Ç¤©f[^x[Xð©Ü·B
+ </para>
+
+ <!-- undocumenting
+ <para>
+ There is one further possibility. The <literal>Interceptor</literal> method named
+ <literal>isUnsaved()</literal> lets the application implement its own strategy for distinguishing
+ newly instantiated objects. For example, you could define a base class for your persistent classes.
+ </para>
+
+ <programlisting><![CDATA[public class Persistent {
+ private boolean _saved = false;
+ public void onSave() {
+ _saved=true;
+ }
+ public void onLoad() {
+ _saved=true;
+ }
+ ......
+ public boolean isSaved() {
+ return _saved;
+ }
+}]]></programlisting>
+
+ <para>
+ (The <literal>saved</literal> property is non-persistent.)
+ Now implement <literal>isUnsaved()</literal>, along with <literal>onLoad()</literal>
+ and <literal>onSave()</literal> as follows.
+ </para>
+
+ <programlisting><![CDATA[public Boolean isUnsaved(Object entity) {
+ if (entity instanceof Persistent) {
+ return new Boolean( !( (Persistent) entity ).isSaved() );
+ }
+ else {
+ return null;
+ }
+}
+
+public boolean onLoad(Object entity,
+ Serializable id,
+ Object[] state,
+ String[] propertyNames,
+ Type[] types) {
+
+ if (entity instanceof Persistent) ( (Persistent) entity ).onLoad();
+ return false;
+}
+
+public boolean onSave(Object entity,
+ Serializable id,
+ Object[] state,
+ String[] propertyNames,
+ Type[] types) {
+
+ if (entity instanceof Persistent) ( (Persistent) entity ).onSave();
+ return false;
+}]]></programlisting>
+
+ <para>
+ Don't worry; in Hibernate3 you don't need to write any of this kind of code if you don't want to.
+ </para>
+ -->
+ </sect1>
+
+ <sect1 id="example-parentchild-conclusion">
+ <title>_
+ </title>
+
+ <para>
+ ±±ÅÍ©ÈèÌÊðvñµ½ÌÅAÅÌ Í¬µÄ¢éæ¤Évíêé©àµêܹñB
+ µ©µÀÛÍA·×ÄñíÉÇ®ìµÜ·BÙÆñÇÌHibernateAvP[VÅÍA½ÌêÊÅeqp^[ðgpµÜ·B
+ </para>
+
+ <para>
+ ÅÌiÅãÖû@É¢ÄGêܵ½BãLÌæ¤ÈâèÍ <literal><composite-element></literal> }bsOÌêͶݹ¸A
+ Éà©©í縻êÍm©ÉeqÖWÌZ}eBNXð¿Ü·B
+ µ©µcOȪçA¡vfNXÉÍñÂÌå«È§Àª èÜ·F
+ 1ÂÍ¡vfÍRNVð±ƪūȢ±ÆÅ·Bà¤ÐÆÂÍA
+ j[NÈeÅÍÈ¢GeBeBÌqÆÈé׫ÅÍȢƢ¤±ÆÅ·
+ </para>
+
+ </sect1>
+
+</chapter>
\ No newline at end of file
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_weblog.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/example_weblog.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_weblog.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_weblog.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,433 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="example-weblog">
+ <title>á: WeblogAvP[V</title>
+
+ <sect1 id="example-weblog-classes">
+ <title>i±NX
+ </title>
+
+ <para>
+ i±NXªEFuOÆAEFuOÉf¦³ê½Úð\µÄ¢Ü·B
+ »êçÍÊíÌeqÖWƵÄfO³êÜ·ªA
+ setÅÍÈðÁ½bagðgp·é±ÆÉµÜ·B
+ </para>
+
+ <programlisting><![CDATA[package eg;
+
+import java.util.List;
+
+public class Blog {
+ private Long _id;
+ private String _name;
+ private List _items;
+
+ public Long getId() {
+ return _id;
+ }
+ public List getItems() {
+ return _items;
+ }
+ public String getName() {
+ return _name;
+ }
+ public void setId(Long long1) {
+ _id = long1;
+ }
+ public void setItems(List list) {
+ _items = list;
+ }
+ public void setName(String string) {
+ _name = string;
+ }
+}]]></programlisting>
+
+ <programlisting><![CDATA[package eg;
+
+import java.text.DateFormat;
+import java.util.Calendar;
+
+public class BlogItem {
+ private Long _id;
+ private Calendar _datetime;
+ private String _text;
+ private String _title;
+ private Blog _blog;
+
+ public Blog getBlog() {
+ return _blog;
+ }
+ public Calendar getDatetime() {
+ return _datetime;
+ }
+ public Long getId() {
+ return _id;
+ }
+ public String getText() {
+ return _text;
+ }
+ public String getTitle() {
+ return _title;
+ }
+ public void setBlog(Blog blog) {
+ _blog = blog;
+ }
+ public void setDatetime(Calendar calendar) {
+ _datetime = calendar;
+ }
+ public void setId(Long long1) {
+ _id = long1;
+ }
+ public void setText(String string) {
+ _text = string;
+ }
+ public void setTitle(String string) {
+ _title = string;
+ }
+}]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="example-weblog-mappings">
+ <title>HibernateÌ}bsO
+ </title>
+
+ <para>
+ XML}bsOÍA¡ÅÍÆÄàÈPÈ͸ŷB
+ </para>
+
+ <programlisting><![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="Blog"
+ table="BLOGS">
+
+ <id
+ name="id"
+ column="BLOG_ID">
+
+ <generator class="native"/>
+
+ </id>
+
+ <property
+ name="name"
+ column="NAME"
+ not-null="true"
+ unique="true"/>
+
+ <bag
+ name="items"
+ inverse="true"
+ order-by="DATE_TIME"
+ cascade="all">
+
+ <key column="BLOG_ID"/>
+ <one-to-many class="BlogItem"/>
+
+ </bag>
+
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <programlisting><![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="BlogItem"
+ table="BLOG_ITEMS"
+ dynamic-update="true">
+
+ <id
+ name="id"
+ column="BLOG_ITEM_ID">
+
+ <generator class="native"/>
+
+ </id>
+
+ <property
+ name="title"
+ column="TITLE"
+ not-null="true"/>
+
+ <property
+ name="text"
+ column="TEXT"
+ not-null="true"/>
+
+ <property
+ name="datetime"
+ column="DATE_TIME"
+ not-null="true"/>
+
+ <many-to-one
+ name="blog"
+ column="BLOG_ID"
+ not-null="true"/>
+
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="example-weblog-code">
+ <title>HibernateÌR[h</title>
+
+ <para>
+ ȺÌNXÍA
+ HibernateűêçÌNXðgÁÄū鱯ð¢Â©¦µÄ¢Ü·B
+ </para>
+
+ <programlisting><![CDATA[package eg;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Iterator;
+import java.util.List;
+
+import org.hibernate.HibernateException;
+import org.hibernate.Query;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.tool.hbm2ddl.SchemaExport;
+
+public class BlogMain {
+
+ private SessionFactory _sessions;
+
+ public void configure() throws HibernateException {
+ _sessions = new Configuration()
+ .addClass(Blog.class)
+ .addClass(BlogItem.class)
+ .buildSessionFactory();
+ }
+
+ public void exportTables() throws HibernateException {
+ Configuration cfg = new Configuration()
+ .addClass(Blog.class)
+ .addClass(BlogItem.class);
+ new SchemaExport(cfg).create(true, true);
+ }
+
+ public Blog createBlog(String name) throws HibernateException {
+
+ Blog blog = new Blog();
+ blog.setName(name);
+ blog.setItems( new ArrayList() );
+
+ Session session = _sessions.openSession();
+ Transaction tx = null;
+ try {
+ tx = session.beginTransaction();
+ session.persist(blog);
+ tx.commit();
+ }
+ catch (HibernateException he) {
+ if (tx!=null) tx.rollback();
+ throw he;
+ }
+ finally {
+ session.close();
+ }
+ return blog;
+ }
+
+ public BlogItem createBlogItem(Blog blog, String title, String text)
+ throws HibernateException {
+
+ BlogItem item = new BlogItem();
+ item.setTitle(title);
+ item.setText(text);
+ item.setBlog(blog);
+ item.setDatetime( Calendar.getInstance() );
+ blog.getItems().add(item);
+
+ Session session = _sessions.openSession();
+ Transaction tx = null;
+ try {
+ tx = session.beginTransaction();
+ session.update(blog);
+ tx.commit();
+ }
+ catch (HibernateException he) {
+ if (tx!=null) tx.rollback();
+ throw he;
+ }
+ finally {
+ session.close();
+ }
+ return item;
+ }
+
+ public BlogItem createBlogItem(Long blogid, String title, String text)
+ throws HibernateException {
+
+ BlogItem item = new BlogItem();
+ item.setTitle(title);
+ item.setText(text);
+ item.setDatetime( Calendar.getInstance() );
+
+ Session session = _sessions.openSession();
+ Transaction tx = null;
+ try {
+ tx = session.beginTransaction();
+ Blog blog = (Blog) session.load(Blog.class, blogid);
+ item.setBlog(blog);
+ blog.getItems().add(item);
+ tx.commit();
+ }
+ catch (HibernateException he) {
+ if (tx!=null) tx.rollback();
+ throw he;
+ }
+ finally {
+ session.close();
+ }
+ return item;
+ }
+
+ public void updateBlogItem(BlogItem item, String text)
+ throws HibernateException {
+
+ item.setText(text);
+
+ Session session = _sessions.openSession();
+ Transaction tx = null;
+ try {
+ tx = session.beginTransaction();
+ session.update(item);
+ tx.commit();
+ }
+ catch (HibernateException he) {
+ if (tx!=null) tx.rollback();
+ throw he;
+ }
+ finally {
+ session.close();
+ }
+ }
+
+ public void updateBlogItem(Long itemid, String text)
+ throws HibernateException {
+
+ Session session = _sessions.openSession();
+ Transaction tx = null;
+ try {
+ tx = session.beginTransaction();
+ BlogItem item = (BlogItem) session.load(BlogItem.class, itemid);
+ item.setText(text);
+ tx.commit();
+ }
+ catch (HibernateException he) {
+ if (tx!=null) tx.rollback();
+ throw he;
+ }
+ finally {
+ session.close();
+ }
+ }
+
+ public List listAllBlogNamesAndItemCounts(int max)
+ throws HibernateException {
+
+ Session session = _sessions.openSession();
+ Transaction tx = null;
+ List result = null;
+ try {
+ tx = session.beginTransaction();
+ Query q = session.createQuery(
+ "select blog.id, blog.name, count(blogItem) " +
+ "from Blog as blog " +
+ "left outer join blog.items as blogItem " +
+ "group by blog.name, blog.id " +
+ "order by max(blogItem.datetime)"
+ );
+ q.setMaxResults(max);
+ result = q.list();
+ tx.commit();
+ }
+ catch (HibernateException he) {
+ if (tx!=null) tx.rollback();
+ throw he;
+ }
+ finally {
+ session.close();
+ }
+ return result;
+ }
+
+ public Blog getBlogAndAllItems(Long blogid)
+ throws HibernateException {
+
+ Session session = _sessions.openSession();
+ Transaction tx = null;
+ Blog blog = null;
+ try {
+ tx = session.beginTransaction();
+ Query q = session.createQuery(
+ "from Blog as blog " +
+ "left outer join fetch blog.items " +
+ "where blog.id = :blogid"
+ );
+ q.setParameter("blogid", blogid);
+ blog = (Blog) q.uniqueResult();
+ tx.commit();
+ }
+ catch (HibernateException he) {
+ if (tx!=null) tx.rollback();
+ throw he;
+ }
+ finally {
+ session.close();
+ }
+ return blog;
+ }
+
+ public List listBlogsAndRecentItems() throws HibernateException {
+
+ Session session = _sessions.openSession();
+ Transaction tx = null;
+ List result = null;
+ try {
+ tx = session.beginTransaction();
+ Query q = session.createQuery(
+ "from Blog as blog " +
+ "inner join blog.items as blogItem " +
+ "where blogItem.datetime > :minDate"
+ );
+
+ Calendar cal = Calendar.getInstance();
+ cal.roll(Calendar.MONTH, false);
+ q.setCalendar("minDate", cal);
+
+ result = q.list();
+ tx.commit();
+ }
+ catch (HibernateException he) {
+ if (tx!=null) tx.rollback();
+ throw he;
+ }
+ finally {
+ session.close();
+ }
+ return result;
+ }
+}]]></programlisting>
+
+ </sect1>
+
+</chapter>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/filters.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/filters.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/filters.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/filters.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="filters">
+ <title>f[^ÌtB^O</title>
+
+ <para>
+ Hibernate3ÅÍu«v[ÉîâÄf[^𵤽ßÌæúIÈû@ðpӵĢܷB
+ <emphasis>Hibernate filter</emphasis> ÍO[oÅA¼Ot«ÅAp[^»³ê½tB^Å·B
+ ±êÍHibernateZbV²ÆÉLø³øðØèÖ¦çêÜ·B
+ </para>
+
+ <sect1 id="objectstate-filters">
+ <title>HibernateÌtB^</title>
+
+ <para>
+ Hibernate3ÍtB^NCeAð ç©¶ßè`µA
+ ±êçÌtB^ðNXâRNVxÉÁ¦é@\ðÁ¦Üµ½B
+ tB^NCeAͧñßðè`·é@\Å·B
+ ±êçÌtB^ðÍp[^»Å«éÆ¢¤±Æð«A
+ NXâ³Ü´ÜÈRNVvfÅpÂ\È¢where£åÉñíɿĢܷB
+ AvP[VÍA^¦çê½tB^ðÂ\ɷ׫©A
+ »µÄ»Ìp[^lð½É·×«©ðÀsÉè·é±ÆªÅ«Ü·B
+ tB^Íf[^x[Xr
[Ìæ¤Égp³êÜ·ªAAvP[VàÅÍp[^»³êÜ·B
+
+ </para>
+
+ <para>
+ tB^ðg¤½ßÉÍܸAKØÈ}bsOvfÉè`AÇÁµÈÄÍÈèܹñB
+ tB^ðè`·é½ßÉÍA
+ <literal><hibernate-mapping/></literal> vfàÅ <literal><filter-def/></literal> vfðgpµÜ·BF
+ </para>
+
+ <programlisting><![CDATA[<filter-def name="myFilter">
+ <filter-param name="myFilterParam" type="string"/>
+</filter-def>]]></programlisting>
+
+ <para>
+ »¤µÄtB^ÍNXÖÆÑt¯çêÜ·BF
+ </para>
+
+ <programlisting><![CDATA[<class name="myClass" ...>
+ ...
+ <filter name="myFilter" condition=":myFilterParam = MY_FILTERED_COLUMN"/>
+</class>]]></programlisting>
+
+ <para>
+ ܽARNVÉεÄÍÌæ¤ÉÈèÜ·BF
+ </para>
+
+ <programlisting><![CDATA[<set ...>
+ <filter name="myFilter" condition=":myFilterParam = MY_FILTERED_COLUMN"/>
+</set>]]></programlisting>
+
+ <para>
+ Ç¿çÉεÄà(ܽA»ê¼êð¡)¯ÉÝè·é±ÆàūܷB
+ </para>
+
+ <para>
+ <literal>Session</literal> ãÌ\bhÍ <literal>enableFilter(String filterName)</literal>,
+ <literal>getEnabledFilter(String filterName)</literal>, <literal>disableFilter(String filterName)</literal> Å·B
+ ftHgÅÍAtB^Í^¦çê½ZbVÉεÄgp <emphasis>ūܹñ</emphasis> B
+ <literal>Filter</literal> CX^XðÔèlÆ·é <literal>Session.enabledFilter()</literal> \bhðg¤±ÆÅA
+ tB^;¦IÉgpÂ\ÆÈèÜ·B
+ ãÅè`µ½PÈtB^ÌgpÍA±Ìæ¤ÉÈèÜ·BF
+ </para>
+
+ <programlisting><![CDATA[session.enableFilter("myFilter").setParameter("myFilterParam", "some-value");]]></programlisting>
+
+ <para>
+ org.hibernate.FilterC^[tFCXÌ\bhÍA
+ Hibernate̽ɤʵĢé\bhA½ðµÄ¢é±ÆÉӵľ³¢B
+ </para>
+
+ <para>
+ LøÈR[hf[^p^[ðÂêf[^ðgÁ½®SÈáÅ·F
+ </para>
+
+ <programlisting><![CDATA[<filter-def name="effectiveDate">
+ <filter-param name="asOfDate" type="date"/>
+</filter-def>
+
+<class name="Employee" ...>
+...
+ <many-to-one name="department" column="dept_id" class="Department"/>
+ <property name="effectiveStartDate" type="date" column="eff_start_dt"/>
+ <property name="effectiveEndDate" type="date" column="eff_end_dt"/>
+...
+ <!--
+ Note that this assumes non-terminal records have an eff_end_dt set to
+ a max db date for simplicity-sake
+
+
+ -->
+ <filter name="effectiveDate"
+ condition=":asOfDate BETWEEN eff_start_dt and eff_end_dt"/>
+</class>
+
+<class name="Department" ...>
+...
+ <set name="employees" lazy="true">
+ <key column="dept_id"/>
+ <one-to-many class="Employee"/>
+ <filter name="effectiveDate"
+ condition=":asOfDate BETWEEN eff_start_dt and eff_end_dt"/>
+ </set>
+</class>]]></programlisting>
+
+ <para>
+ íÉ»ÝÌLøR[hðÔp·é±ÆðÛØ·é½ßÉA
+ PÉAÐõf[^ÌõæèOÉZbVãÌtB^ðLøÉµÜ·B
+
+
+ </para>
+
+<programlisting><![CDATA[Session session = ...;
+session.enabledFilter("effectiveDate").setParameter("asOfDate", new Date());
+List results = session.createQuery("from Employee as e where e.salary > :targetSalary")
+ .setLong("targetSalary", new Long(1000000))
+ .list();
+]]></programlisting>
+
+ <para>
+ ãLÌHQLÅÍAȨ̂̿ñÉ¢ľ¦IÉGê½¾¯Å·ªA
+ LøÉÈÁÄ¢étB^̨©°ÅA±ÌNGÍ¿ª100hÈãÌ»ðÌÐõ¾¯ðԵܷB
+ </para>
+
+ <para>
+ (HQL©[htFb`ÅjOðÂtB^ðg¤ÂàèÈçA
+ ð®ÌûüÉӵľ³¢B
+
+ ±êͶO̽ßÉÝè·é̪ÅàÀSÅ·B
+ êÊIÉAZqÌãJ¼É±¯ÄÅÌp[^ðzuµÄ¾³¢B
+ </para>
+
+ </sect1>
+
+</chapter>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/inheritance_mapping.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/inheritance_mapping.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/inheritance_mapping.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/inheritance_mapping.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,487 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="inheritance">
+ <title>p³}bsO</title>
+
+ <sect1 id="inheritance-strategies" revision="3">
+ <title>3ÂÌíª</title>
+
+ <para>
+ HibernateÍ3ÂÌî{IÈp³Ì}bsOíªðT|[gµÜ·B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ NXKw²ÆÌe[uitable-per-class-hierarchyj
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ TuNX²ÆÌe[uitable-per-subclassj
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ïÛNX²ÆÌe[uitable-per-concrete-classj
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ Á¦Ä4ÂÚÉAHibernateÍí¸©ÉÙÈé«¿ðÁ½|[tBYðT|[gµÜ·B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ ÃÙI|[tBY
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ¯êÌp³KwÌÙÈéu`ÉεÄÙÈé}bsOíªðg¤±ÆªÅ«Ü·B
+ »ÌêÉÍSÌÌKwÉné|[tBYðÀ»·é½ßÉÃÙI|[tBYðgpµÜ·B
+ µ©µAHibernateͯ¶[g <literal><class></literal> vfàÅ
+ <literal><subclass></literal> }bsOA<literal><joined-subclass></literal> }bsOA
+ <literal><union-subclass></literal> }bsO̯gpðT|[gµÄ¢Ü¹ñB
+ <literal><subclass></literal> vfÆ <literal><join></literal> vfðgÝí¹é±ÆÅA
+ ¯ê <literal><class></literal> vfàÅÌ table-per-hierarchy íªÆ
+ table-per-subclass íªÌ¯gpÍÂ\Å·BÌáð©Ä¾³¢B
+ </para>
+
+ <para>
+ <literal>subclass</literal>, <literal>union-subclass</literal> Æ
+ <literal>joined-subclass</literal> }bsOð¡Ì}bsOhL
gÉè`·é±ÆªoA
+ <literal>hibernate-mapping</literal> ̼ºÉzuµÜ·B
+ ±êÍVµ¢}bsOt@CðÇÁ·é¾¯ÅANXKwðg£Å«éÆ¢¤±ÆÅ·B
+ ç©¶ß}bvµ½X[p[NXðwèµÄATuNX}bsOÉ <literal>extends</literal>
+ ®«ðLqµÈ¯êÎÈèܹñB
+ ÓF±ÌÁ¥ÉæèAÈOÍ}bsOEhL
gÌÔªdvŵ½B
+ Hibernate3©çÍAextendsL[[hðg¤êA}bsOhL
gÌÔÍâèÉÈèܹñB
+
+ PÂÌ}bsOt@CàÅÔt¯ðs¤Æ«ÍA
+ ËRƵÄATuNXðè`·éOÉX[p[NXðè`·éKvª èÜ·B)
+ </para>
+
+ <programlisting><![CDATA[
+ <hibernate-mapping>
+ <subclass name="DomesticCat" extends="Cat" discriminator-value="D">
+ <property name="name" type="string"/>
+ </subclass>
+ </hibernate-mapping>]]></programlisting>
+
+
+ <sect2 id="inheritance-tableperclass" >
+ <title>NXKw²ÆÌe[uitable-per-class-hierarchyj</title>
+
+ <para>
+ á¦ÎAC^[tFCX <literal>Payment</literal> ÆA»êðÀµ½
+ <literal>CreditCardPayment</literal>A<literal>CashPayment</literal>A
+ <literal>ChequePayment</literal> ª 鯵ܷBKw²ÆÌe[u}bsOÍ
+ ÈºÌæ¤ÉÈèÜ·B
+ </para>
+
+ <programlisting><![CDATA[<class name="Payment" table="PAYMENT">
+ <id name="id" type="long" column="PAYMENT_ID">
+ <generator class="native"/>
+ </id>
+ <discriminator column="PAYMENT_TYPE" type="string"/>
+ <property name="amount" column="AMOUNT"/>
+ ...
+ <subclass name="CreditCardPayment" discriminator-value="CREDIT">
+ <property name="creditCardType" column="CCTYPE"/>
+ ...
+ </subclass>
+ <subclass name="CashPayment" discriminator-value="CASH">
+ ...
+ </subclass>
+ <subclass name="ChequePayment" discriminator-value="CHEQUE">
+ ...
+ </subclass>
+</class>]]></programlisting>
+
+ <para>
+ ¿å¤ÇêÂÌe[uªKvÅ·B
+ ±Ì}bsOíªÉÍêÂå«È§Àª èÜ·B
+ <literal>CCTYPE</literal> Ìæ¤ÈATuNXÅé¾³ê½JÍ <literal>NOT NULL</literal>
+ §ñðÄܹñB
+ </para>
+
+ </sect2>
+
+ <sect2 id="inheritance-tablepersubclass">
+ <title>TuNX²ÆÌe[uitable-per-subclassj</title>
+
+ <para>
+ table-per-subclass }bsOÍÈºÌæ¤ÉÈèÜ·B
+ </para>
+
+ <programlisting><![CDATA[<class name="Payment" table="PAYMENT">
+ <id name="id" type="long" column="PAYMENT_ID">
+ <generator class="native"/>
+ </id>
+ <property name="amount" column="AMOUNT"/>
+ ...
+ <joined-subclass name="CreditCardPayment" table="CREDIT_PAYMENT">
+ <key column="PAYMENT_ID"/>
+ <property name="creditCardType" column="CCTYPE"/>
+ ...
+ </joined-subclass>
+ <joined-subclass name="CashPayment" table="CASH_PAYMENT">
+ <key column="PAYMENT_ID"/>
+ ...
+ </joined-subclass>
+ <joined-subclass name="ChequePayment" table="CHEQUE_PAYMENT">
+ <key column="PAYMENT_ID"/>
+ ...
+ </joined-subclass>
+</class>]]></programlisting>
+
+ <para>
+ ±Ì}bsOÉÍ4ÂÌe[uªKvÅ·B3ÂÌTuNXe[uÍ
+ X[p[NXe[uÆÌÖAð¦·åL[ðÁĢܷ
+ iÀÛAÖWfãÍêÎêÖAÅ·jB
+ </para>
+
+ </sect2>
+
+ <sect2 id="inheritance-tablepersubclass-discriminator" revision="2">
+ <title>ÙÊqðp¢½ table-per-subclass</title>
+
+ <para>
+ HibernateÌ table-per-subclass ÀÍAdiscriminatorJðKvƵȢ±Æðo¦Ä¨¢Ä¾³¢B
+ HibernateÈOÌO/R}bp[ÍAtable-per-subclass ÉÙÈéÀðp¢Ü·B
+ »êÍAX[p[NXÌe[uÉ^CvdiscriminatorJðKvƵܷB
+ ±ÌAv[`ÍÀª¢ïÉÈèÜ·ªAÖWÌ_©ç©éÆAæè³mÈàÌÅ·B
+ table-per-subclass íªÅdiscriminatorJðg¢½¯êÎA
+ <literal><subclass></literal> Æ <literal><join></literal>
+ ðÈºÌæ¤ÉgÝí¹ÄgÁľ³¢B
+ </para>
+
+ <programlisting><![CDATA[<class name="Payment" table="PAYMENT">
+ <id name="id" type="long" column="PAYMENT_ID">
+ <generator class="native"/>
+ </id>
+ <discriminator column="PAYMENT_TYPE" type="string"/>
+ <property name="amount" column="AMOUNT"/>
+ ...
+ <subclass name="CreditCardPayment" discriminator-value="CREDIT">
+ <join table="CREDIT_PAYMENT">
+ <key column="PAYMENT_ID"/>
+ <property name="creditCardType" column="CCTYPE"/>
+ ...
+ </join>
+ </subclass>
+ <subclass name="CashPayment" discriminator-value="CASH">
+ <join table="CASH_PAYMENT">
+ <key column="PAYMENT_ID"/>
+ ...
+ </join>
+ </subclass>
+ <subclass name="ChequePayment" discriminator-value="CHEQUE">
+ <join table="CHEQUE_PAYMENT" fetch="select">
+ <key column="PAYMENT_ID"/>
+ ...
+ </join>
+ </subclass>
+</class>]]></programlisting>
+
+ <para>
+ IvVÌ <literal>fetch="select"</literal> é¾ÍA
+ X[p[NXÌNGÀsÉOðgÁÄA
+ TuNXÌ <literal>ChequePayment</literal> f[^ðæ¾µÈ¢æ¤Éwè·é½ßÌàÌÅ·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="inheritance-mixing-tableperclass-tablepersubclass">
+ <title>table-per-subclass Æ table-per-class-hierarchy ̬</title>
+
+ <para>
+ ±ÌAv[`ðgp·éÆAtable-per-hierarchy Æ table-per-subclass íªð
+ gÝí¹éàÂ\Å·B
+ </para>
+
+ <programlisting><![CDATA[<class name="Payment" table="PAYMENT">
+ <id name="id" type="long" column="PAYMENT_ID">
+ <generator class="native"/>
+ </id>
+ <discriminator column="PAYMENT_TYPE" type="string"/>
+ <property name="amount" column="AMOUNT"/>
+ ...
+ <subclass name="CreditCardPayment" discriminator-value="CREDIT">
+ <join table="CREDIT_PAYMENT">
+ <property name="creditCardType" column="CCTYPE"/>
+ ...
+ </join>
+ </subclass>
+ <subclass name="CashPayment" discriminator-value="CASH">
+ ...
+ </subclass>
+ <subclass name="ChequePayment" discriminator-value="CHEQUE">
+ ...
+ </subclass>
+</class>]]></programlisting>
+
+ <para>
+ ¢¸êÌ}bsOíªÅ ÁÄàA[gÅ é <literal>Payment</literal> NXÖÌ
+ |[tBbNÈÖAÍ <literal><many-to-one></literal> ðgÁÄ}bsOµÜ·B
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="payment" column="PAYMENT_ID" class="Payment"/>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="inheritance-tableperconcrete" revision="2">
+ <title>ïÛNX²ÆÌe[uitable-per-concrete-classj</title>
+
+ <para>
+ table-per-concrete-class íªÌ}bsOÉηéAv[`ÍA2 èÜ·B
+ 1ÂÚÍ <literal><union-subclass></literal> ðp·éû@Å·B
+ </para>
+
+ <programlisting><![CDATA[<class name="Payment">
+ <id name="id" type="long" column="PAYMENT_ID">
+ <generator class="sequence"/>
+ </id>
+ <property name="amount" column="AMOUNT"/>
+ ...
+ <union-subclass name="CreditCardPayment" table="CREDIT_PAYMENT">
+ <property name="creditCardType" column="CCTYPE"/>
+ ...
+ </union-subclass>
+ <union-subclass name="CashPayment" table="CASH_PAYMENT">
+ ...
+ </union-subclass>
+ <union-subclass name="ChequePayment" table="CHEQUE_PAYMENT">
+ ...
+ </union-subclass>
+</class>]]></programlisting>
+
+ <para>
+ TuNX²ÆÉ3ÂÌe[uªKvÅ·B»ê¼êÌe[uÍAp³vpeBðÜñ¾A
+ NXÌSÄÌvpeBÉηéJðè`µÜ·B
+ </para>
+
+ <para>
+ ±ÌAv[`ÉͧÀª èÜ·B
+ »êÍAvpeBªX[p[NXÉ}bsO³êÄ¢½êA
+ SÄÌTuNXɨ¢ÄJ¼ª¯¶ÅȯêÎÈçȢƢ¤àÌÅ·B
+ iHibernateÌ¡ãÌ[XÅÉa³êé©àµêܹñjB
+ <union-subclass> ðgÁ½ table-per-concrete-class íªÅͯÊq¶¬íªðgpūܹñB
+ åL[𶬷é½ßÌV[hÍASÄÌ union subclass ÌKwàŤL·éKvª é©çÅ·B
+ </para>
+
+ <para>
+ àµX[p[NXªÛNXÈçA<literal>abstract="true"</literal>Æ}bsOµÜ·B
+ à¿ëñAX[p[NXªÛNXÅÈ¢ÈçAX[p[NXÌCX^Xð
+ Û·é½ßÌe[uÌÇÁªKvÆÈèÜ·(ãÌáÅÌftHgÍ <literal>PAYMENT</literal> )B
+ </para>
+
+ </sect2>
+
+ <sect2 id="inheritance-tableperconcreate-polymorphism">
+ <title>ÃÙI|[tBYðp¢½ table-per-concrete-class</title>
+
+ <para>
+ à¤êÂÌAv[`ÍÃÙI|[tBYÌgpÅ·B
+ </para>
+
+ <programlisting><![CDATA[<class name="CreditCardPayment" table="CREDIT_PAYMENT">
+ <id name="id" type="long" column="CREDIT_PAYMENT_ID">
+ <generator class="native"/>
+ </id>
+ <property name="amount" column="CREDIT_AMOUNT"/>
+ ...
+</class>
+
+<class name="CashPayment" table="CASH_PAYMENT">
+ <id name="id" type="long" column="CASH_PAYMENT_ID">
+ <generator class="native"/>
+ </id>
+ <property name="amount" column="CASH_AMOUNT"/>
+ ...
+</class>
+
+<class name="ChequePayment" table="CHEQUE_PAYMENT">
+ <id name="id" type="long" column="CHEQUE_PAYMENT_ID">
+ <generator class="native"/>
+ </id>
+ <property name="amount" column="CHEQUE_AMOUNT"/>
+ ...
+</class>]]></programlisting>
+
+ <para>
+ <literal>Payment</literal> C^[tFCXªÇ±ÉྦIɦ³êĢȢ±ÆÉӵľ³¢B
+ »µÄA<literal>Payment</literal> vpeBª»ê¼êÌTuNXÉ}bsO³êĢ鱯Éàӵľ³¢B
+ àµd¡ð𯽢ÌÅ êÎAXMLGeBeBÌpðl¦Ä¾³¢B
+ iáF <literal>DOCTYPE</literal> é¾É¨¯é <literal>[ <!ENTITY allproperties SYSTEM "allproperties.xml"> ]</literal>
+ ÆA}bsOɨ¯é <literal>&allproperties;</literal>j
+ </para>
+
+ <para>
+ ±ÌAv[`Ì_ÍAHibernateª|[tBbNÈNGÌÀsÉSQL <literal>UNION</literal>
+ 𶬵Ȣ_ŷB
+ </para>
+
+ <para>
+ ±Ì}bsOíªÉεÄÍA<literal>Payment</literal> ÖÌ|[tBbNÈÖAÍ
+ ÊíA<literal><any></literal> ðgÁÄ}bsO³êÜ·B
+ </para>
+
+ <programlisting><![CDATA[<any name="payment" meta-type="string" id-type="long">
+ <meta-value value="CREDIT" class="CreditCardPayment"/>
+ <meta-value value="CASH" class="CashPayment"/>
+ <meta-value value="CHEQUE" class="ChequePayment"/>
+ <column name="PAYMENT_CLASS"/>
+ <column name="PAYMENT_ID"/>
+</any>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="inheritace-mixingpolymorphism">
+ <title>¼Ìp³}bsOÆÃÙI|[tBYÌgÝí¹</title>
+
+ <para>
+ ±Ì}bsOÉ¢ÄÌXÈéÓ_ª èÜ·B
+ TuNXª©gð <literal><class></literal> vfƵÄ}bsOµÄ¢éÌÅA
+ i©Â <literal>Payment</literal> ÍPÈéC^[tFCXÈÌÅjA
+ »ê¼êÌTuNXÍÈPɻ̼Ìp³KwÌêÆÈèÜ·B
+ iµ©àA¡ÜÅǨè <literal>Payment</literal> C^[tFCXÉηé|[tBbNÈNG
+ ðgp·é±ÆªÅ«Ü·j
+ </para>
+
+ <programlisting><![CDATA[<class name="CreditCardPayment" table="CREDIT_PAYMENT">
+ <id name="id" type="long" column="CREDIT_PAYMENT_ID">
+ <generator class="native"/>
+ </id>
+ <discriminator column="CREDIT_CARD" type="string"/>
+ <property name="amount" column="CREDIT_AMOUNT"/>
+ ...
+ <subclass name="MasterCardPayment" discriminator-value="MDC"/>
+ <subclass name="VisaPayment" discriminator-value="VISA"/>
+</class>
+
+<class name="NonelectronicTransaction" table="NONELECTRONIC_TXN">
+ <id name="id" type="long" column="TXN_ID">
+ <generator class="native"/>
+ </id>
+ ...
+ <joined-subclass name="CashPayment" table="CASH_PAYMENT">
+ <key column="PAYMENT_ID"/>
+ <property name="amount" column="CASH_AMOUNT"/>
+ ...
+ </joined-subclass>
+ <joined-subclass name="ChequePayment" table="CHEQUE_PAYMENT">
+ <key column="PAYMENT_ID"/>
+ <property name="amount" column="CHEQUE_AMOUNT"/>
+ ...
+ </joined-subclass>
+</class>]]></programlisting>
+
+ <para>
+ à¤êxq×Ü·ªA<literal>Payment</literal> ;¦IÉè`³êܹñB
+ àµA<literal>Payment</literal> C^[tFCXÉεÄNGðÀs·éÈç
+ iá¦Î <literal>from Payment</literal> ßðgÁÄjA
+ HibernateÍ©®IÉ <literal>CreditCardPayment</literal>
+ iÆCreditCardPaymentÌTuNXA<literal>Payment</literal> ÌÀÅ é½ßjA
+ ¨æÑA<literal>CashPayment</literal> A<literal>ChequePayment</literal>
+ ÌCX^XðԵܷB
+ <literal>NonelectronicTransaction</literal> CX^XÍԵܹñB
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="inheritance-limitations">
+ <title>§À</title>
+
+ <para>
+ table-per-concrete-class }bsOíªÖÌuÃÙI|[tBYvAv[`ÉÍ
+ ¢Â©Ì§Àª èÜ·B<literal><union-subclass></literal> }bsOÉεÄà
+ µãß̧Àª èÜ·B
+ </para>
+
+ <para>
+ Ìe[uÉAHibernateɨ¯étable-per-concrete-class}bsOÌ
+ §ÀâÃÙI|[tBY̧Àð¦µÜ·B
+ </para>
+
+ <table frame="topbot">
+ <title>p³}bsOÌ@\</title>
+ <tgroup cols='8' align='left' colsep='1' rowsep='1'>
+ <colspec colname='c1' colwidth="1*"/>
+ <colspec colname='c2' colwidth="1*"/>
+ <colspec colname='c3' colwidth="1*"/>
+ <colspec colname='c4' colwidth="1*"/>
+ <colspec colname='c5' colwidth="1*"/>
+ <colspec colname='c6' colwidth="1*"/>
+ <colspec colname='c7' colwidth="1*"/>
+ <colspec colname='c8' colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>p³íª</entry>
+ <entry>½ÎêÌ|[tBY</entry>
+ <entry>êÎêÌ|[tBY</entry>
+ <entry>êνÌ|[tBY</entry>
+ <entry>½Î½Ì|[tBY</entry>
+ <entry>|[tBYðgÁ½<literal>load()/get()</literal></entry>
+ <entry>|[tBYðgÁ½NG</entry>
+ <entry>|[tBYðgÁ½</entry>
+ <entry>OÉæétFb`</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>table per class-hierarchy</entry>
+ <entry><literal><many-to-one></literal></entry>
+ <entry><literal><one-to-one></literal></entry>
+ <entry><literal><one-to-many></literal></entry>
+ <entry><literal><many-to-many></literal></entry>
+ <entry><literal>s.get(Payment.class, id)</literal></entry>
+ <entry><literal>from Payment p</literal></entry>
+ <entry><literal>from Order o join o.payment p</literal></entry>
+ <entry><emphasis>T|[g</emphasis></entry>
+ </row>
+ <row>
+ <entry>table per subclass</entry>
+ <entry><literal><many-to-one></literal></entry>
+ <entry><literal><one-to-one></literal></entry>
+ <entry><literal><one-to-many></literal></entry>
+ <entry><literal><many-to-many></literal></entry>
+ <entry><literal>s.get(Payment.class, id)</literal></entry>
+ <entry><literal>from Payment p</literal></entry>
+ <entry><literal>from Order o join o.payment p</literal></entry>
+ <entry><emphasis>T|[g</emphasis></entry>
+ </row>
+ <row>
+ <entry>table per concrete-class (union-subclass)</entry>
+ <entry><literal><many-to-one></literal></entry>
+ <entry><literal><one-to-one></literal></entry>
+ <entry><literal><one-to-many></literal> (for <literal>inverse="true"</literal> only)</entry>
+ <entry><literal><many-to-many></literal></entry>
+ <entry><literal>s.get(Payment.class, id)</literal></entry>
+ <entry><literal>from Payment p</literal></entry>
+ <entry><literal>from Order o join o.payment p</literal></entry>
+ <entry><emphasis>T|[g</emphasis></entry>
+ </row>
+ <row>
+ <entry>table per concrete class (implicit polymorphism)</entry>
+ <entry><literal><any></literal></entry>
+ <entry><emphasis>T|[gµÄ¢Ü¹ñ</emphasis></entry>
+ <entry><emphasis>T|[gµÄ¢Ü¹ñ</emphasis></entry>
+ <entry><literal><many-to-any></literal></entry>
+ <entry><literal>s.createCriteria(Payment.class).add( Restrictions.idEq(id) ).uniqueResult()</literal></entry>
+ <entry><literal>from Payment p</literal></entry>
+ <entry><emphasis>T|[gµÄ¢Ü¹ñ</emphasis></entry>
+ <entry><emphasis>T|[gµÄ¢Ü¹ñ</emphasis></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </sect1>
+
+</chapter>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/performance.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/performance.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/performance.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/performance.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,1378 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="performance">
+ <title>ptH[}XÌüP</title>
+
+ <sect1 id="performance-fetching" revision="2">
+ <title>tFb`íª</title>
+
+ <para>
+ <emphasis>tFb`íª</emphasis> ÍAAvP[VªÖAðirQ[g·éKvª é
+ Æ«ÉAHibernateªÖAIuWFNgð³·é½ßÉgp·éíªÅ·BtFb`íªÍO/R}bsOÌ
+ ^f[^Éé¾·é©AÁèÌHQLA <literal>Criteria</literal> NGÅI[o[ChµÜ·B
+ </para>
+
+ <para>
+ Hibernate3Íɦ·tFb`íªðè`µÄ¢Ü·B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis>tFb`</emphasis> - HibernateÍ <literal>OUTER JOIN</literal> ðgÁÄA
+ ÖA·éCX^XâRNVðPÂÌ <literal>SELECT</literal>
+ ųµÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>ZNgtFb`</emphasis> - 2ñÚÌ <literal>SELECT</literal>
+ ÅÖA·éGeBeBâRNVð³µÜ·B <literal>lazy="false"</literal>
+ ž¦IÉxtFb`ð³øÉµÈ¯êÎA±Ì2ñÚÌselectÍÀÛÉ
+ ÖAÉANZXµ½Æ«ÌÝÀs³êéŵå¤B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>TuZNgtFb`</emphasis> - 2ñÚÌ <literal>SELECT</literal>
+ ÅA¼OÌNGâtFb`ųµ½·×ÄÌvfÉÖA·éRNVð
+ ³µÜ·B <literal>lazy="false"</literal>
+ ž¦IÉxtFb`ð³øÉµÈ¯êÎA±Ì2ñÚÌselectÍÀÛÉ
+ ÖAÉANZXµ½Æ«ÌÝÀs³êéŵå¤B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>ob`tFb`</emphasis> - ZNgtFb`̽ßÌÅK»³ê½íª
+ - HibernateÍGeBeBÌCX^XâRNVÌêQð1ñÌ
+ <literal>SELECT</literal> ųµÜ·B±êÍåL[âOL[ÌXgðwè·é±ÆÉ
+ Éæès¢Ü·B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ HibernateÍɦ·íªÆàæÊðµÜ·B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis>¦tFb`</emphasis> - LÒÌIuWFNgª[h³ê½Æ«ÉA
+ ÖAARNVͦÉtFb`³êÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>xRNVtFb`</emphasis> - AvP[VªRNVÉ
+ εÄìðsÁ½Æ«ÉRNVðtFb`µÜ·B
+ (±êÍRNVÉηéftHgÌ®ìÅ·)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>"ÁÊÈx"RNVtFb`</emphasis> - RNVÌvf
+ PÂPªƧµÄAKvÈÆ«Éf[^x[X©çæ¾³êÜ·B
+ HibernateÍKvÈ¢ÈçÎARNVSÌðÉtFb`·é±ÆÍ
+ ð¯Ü·iÆÄàå«ÈRNVÉKµÄ¢Ü·jB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>vLVtFb`</emphasis> - PêlÖAÍA¯ÊqÌgetterÈOÌ
+ \bhªÖAIuWFNgÅÄÑo³ê鯫ÉtFb`³êÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>"vLVȵ"tFb`</emphasis> - PêlÖAÍACX^XÏÉ
+ ANZX³ê½Æ«ÉtFb`³êÜ·BvLVtFb`Æär·éÆA±Ìû@Í
+ xÌx¢ªÈ¢iÖAͯÊqÉANZXµ½¾¯ÅàtFb`³êÜ·j
+ Å·ªAæè§ßIÅAAvP[VÉvLVª¶ÝµÈ¢æ¤É©¹Ü·B
+ ±Ìû@ÍrhÌoCgR[hgÝݪKvÉÈèAg¤êÊÍÜêÅ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>x®«tFb`</emphasis> - ®«âPêlÖAÍACX^XÏÉANZXµ½
+ Æ«ÉtFb`³êÜ·B±Ìû@ÍrhÌoCgR[hgÝݪKvÉÈèA
+ g¤êÊÍÜêÅ·B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ñÂ̼s·éTOª èÜ·: <emphasis>¢Â</emphasis> ÖAðtFb`·é©A
+ »µÄA <emphasis>ǤâÁÄ</emphasis> tFb`·é©iÇñÈSQLðgÁÄjB
+ ±êç𬯵Ȣž³¢I <literal>fetch</literal> ÍptH[}X`
[jOÉg¢Ü·B
+ <literal>lazy</literal> Í éNX̪£³ê½CX^X̤¿AÇÌf[^ðíÉ
+ gpÂ\É·é©Ìæèßðè`µÜ·B
+ </para>
+
+ <sect2 id="performance-fetching-lazy">
+ <title>xÖAÌ«</title>
+
+ <para>
+ ftHgÅÍAHibernate3ÍRNVÉεÄÍxZNgtFb`ðg¢A
+ PêlÖAÉÍxvLVtFb`ðg¢Ü·B±êçÌftHg®ìÍÙÚ·×ÄÌ
+ AvP[VÌÙÚ·×ÄÌÖAÅÓ¡ª èÜ·B
+ </para>
+
+ <para>
+ <emphasis>:</emphasis>
+ <literal>hibernate.default_batch_fetch_size</literal> ðZbgµ½Æ«ÍAHibernateÍ
+ xtFb`̽ßÌob`tFb`ÅK»ðg¤Åµå¤
+ i±ÌÅK»Íæèש¢xÅLøÉ·é±ÆàoÜ·jB
+ </para>
+
+ <para>
+ µ©µAxtFb`ÍmÁĨ©È¯êÎÈçÈ¢êÂÌâèª èÜ·B
+ HibernateÌsessionðI[vµÄ¢éReLXgÌO©çxÖAÉANZX·éÆA
+ áOª¶µÜ·BáF
+ </para>
+
+ <programlisting><![CDATA[s = sessions.openSession();
+Transaction tx = s.beginTransaction();
+
+User u = (User) s.createQuery("from User u where u.name=:userName")
+ .setString("userName", userName).uniqueResult();
+Map permissions = u.getPermissions();
+
+tx.commit();
+s.close();
+
+Integer accessLevel = (Integer) permissions.get("accounts"); // Error!]]></programlisting>
+
+ <para>
+ <literal>Session</literal> ªN[Y³ê½Æ«ApermissionsRNVÍ
+ ú»³êĢȢ½ßA±ÌRNVÍ©gÌóÔð[hūܹñB
+ <emphasis>HibernateÍØè£³ê½IuWFNgÌxú»ÍT|[g
+ µÄ¢Ü¹ñ</emphasis> BC³û@ƵÄARNV©çÇÝÝðs¤R[hð
+ gUNVðR~bg·é¼OÉÚ®³¹Ü·B
+ </para>
+
+ <para>
+ êûÅA <literal>lazy="false"</literal> ðÖA}bsOÉwè·é±ÆÅA
+ xðµÈ¢RNVâÖAðg¤±ÆªoÜ·B
+ µ©µÈªçAxú»ÍÙÚ·×ÄÌRNVâÖAÅgíê鱯ð
+ Ó}µÄ¢Ü·BൠȽÌIuWFNgfÌÉxðµÈ¢ÖAð
+ ½è`µÄµÜ¤ÆAHibernateÍÅIIÉÍgUNVÉ
+ ÙÚ®SÈf[^x[XðÌÉtFb`·é±ÆÉÈéŵå¤I
+ </para>
+
+ <para>
+ ¼ûÅÍAÁèÌgUNVɨ¢ÄZNgtFb`ÌãíèÉ
+ tFb`iR±êÍxÅÍÈÈèÜ·jðIðµ½¢±Æª
+ X èÜ·B±ê©çtFb`íªðJX^}CY·éû@𨩹µÜ·B
+ Hibernate3ÅÍAtFb`íªðIð·édgÝÍPêlÖAÆRNVÅ
+ ÏíèÍ èܹñB
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-fetching-custom" revision="4">
+ <title>tFb`íªÌ`
[jO</title>
+
+ <para>
+ ZNgtFb`iftHgjÍN+1ZNgâèÆ¢¤å«Èã_ª é½ßA
+ }bsOè`ÅtFb`ðLøÉ·é±ÆªÅ«Ü·B
+ </para>
+
+ <programlisting><![CDATA[<set name="permissions"
+ fetch="join">
+ <key column="userId"/>
+ <one-to-many class="Permission"/>
+</set]]></programlisting>
+
+ <programlisting><![CDATA[<many-to-one name="mother" class="Cat" fetch="join"/>]]></programlisting>
+
+ <para>
+ }bsOè`Åè`µ½ <literal>tFb`</literal> íªÍÌàÌÉe¿µÜ·B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>get()</literal> â <literal>load()</literal> Éæé³
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+
+ ÖAÉirQ[gµ½Æ«É¶·éÃÙIȳ
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Criteria</literal> NG
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>TuZNg</literal> tFb`ðg¤HQLNG
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ½Æ¦ÇñÈtFb`íªðgÁ½ÆµÄàAxÅÍÈ¢OtÍÉÇÝÜê鱯ª
+ ÛØ³êÜ·BÂÜèAÁèÌHQLNGðÀs·é½ßɢ©ÌSELECT¶ª¦Às³êé
+ ±Æª éÌÅӵľ³¢B
+ </para>
+
+ <para>
+ ÊíÍA}bsOè`ÅtFb`ÌJX^}CYÍs¢Ü¹ñB
+ ãíèÉAftHgÌ®ìÌÜÜɵĨ¢ÄAHQLÅ <literal>left join fetch</literal> ð
+ wè·é±ÆÅÁèÌgUNVÅ®ìðI[o[ChµÜ·B
+ ±êÍHibernateÉñÌZNgÅOðgÁÄÖAðæÉtFb`·éæ¤ÉwèµÄ¢Ü·B
+ <literal>Criteria</literal> NGÌAPIÅÍA
+ <literal>setFetchMode(FetchMode.JOIN)</literal> ðg¤±ÆªoÜ·B
+ </para>
+
+ <para>
+ ൠ<literal>get()</literal> â <literal>load()</literal> Ågíêé
+ tFb`íªðϦ½¢Æ´¶½Æ«ÉÍAPÉ
+ <literal>Criteria</literal> NGðgÁľ³¢BáF
+ </para>
+
+ <programlisting><![CDATA[User user = (User) session.createCriteria(User.class)
+ .setFetchMode("permissions", FetchMode.JOIN)
+ .add( Restrictions.idEq(userId) )
+ .uniqueResult();]]></programlisting>
+
+ <para>
+ i±ê͢©ÌORM\
[Vª"fetch plan"ÆÄñÅ¢éàÌÆ¯¶Å·Bj
+ </para>
+
+ <para>
+ N+1ZNgâèðð¯é½ßÌÜÁ½á¤û@ÍAæ2xLbV
ðg¤±ÆÅ·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-fetching-proxies" revision="2">
+ <title>Pê[ÖAvLV</title>
+
+ <para>
+ RNVÌxtFb`ÍAHibernate©gÌÀÉæéi±RNVðgÁÄ
+ À»µÄ¢Ü·Bµ©µAPê[ÖAɨ¯éxÅÍAá¤dgݪ
+ KvÅ·BÎÛÌÖAGeBeBÍvLVÅȯêÎÈèܹñBHibernateÍ
+ i·Îçµ¢CGLIBCuÉæéjÀsÌoCgR[hg£ð
+ gÁÄi±IuWFNgÌxú»vLVðÀ»µÄ¢Ü·B
+ </para>
+
+ <para>
+ ftHgÅÍAHibernate3ÍiJnÉj·×ÄÌi±NXÌvLV𶬵A
+ »êçðgÁÄA <literal>many-to-one</literal> â <literal>one-to-one</literal> ÖAÌ
+ xtFb`ðÂ\ɵĢܷB
+ </para>
+
+ <para>
+ }bsOt@CÅ <literal>proxy</literal> ®«ÉæÁÄANXÌvLVC^[tFCXƵÄ
+ g¤C^[tFCXðé¾Å«Ü·BftHgÅÍAHibernateÍ»ÌNXÌTuNXðg¢Ü·B
+ <emphasis>vLVNXÍÈÆàpbP[WÂÅftHgRXgN^ðÀµÈ¯êÎ
+ ÈçÈ¢±ÆÉӵľ³¢B·×ÄÌi±NXɱÌRXgN^ð§µÜ·I</emphasis>
+ </para>
+
+ <para>
+ |[tBYÌNXÉεıÌû@ðKp·éƫɢ©l¶·é±Æª èÜ·B
+ áF
+ </para>
+
+ <programlisting><![CDATA[<class name="Cat" proxy="Cat">
+ ......
+ <subclass name="DomesticCat">
+ .....
+ </subclass>
+</class>]]></programlisting>
+
+ <para>
+ æêÉA <literal>Cat</literal> ÌCX^XÍ <literal>DomesticCat</literal>
+ ÉLXgūܹñB½Æ¦îÆÈéCX^Xª <literal>DomesticCat</literal>
+ Å Á½ÆµÄàÅ·B
+ </para>
+
+ <programlisting><![CDATA[Cat cat = (Cat) session.load(Cat.class, id); // instantiate a proxy (does not hit the db)
+if ( cat.isDomesticCat() ) { // hit the db to initialize the proxy
+ DomesticCat dc = (DomesticCat) cat; // Error!
+ ....
+}]]></programlisting>
+
+ <para>
+ æñÉAvLVÌ <literal>==</literal> ͬ§µÈ¢±Æª èÜ·B
+ </para>
+
+ <programlisting><![CDATA[Cat cat = (Cat) session.load(Cat.class, id); // instantiate a Cat proxy
+DomesticCat dc =
+ (DomesticCat) session.load(DomesticCat.class, id); // acquire new DomesticCat proxy!
+System.out.println(cat==dc); // false]]></programlisting>
+
+ <para>
+ µ©µA±êÍ©©¯ÙÇ«¢óµÆ¢¤í¯ÅÍ èܹñB½Æ¦ÙÈÁ½vLVIuWFNgÖÌ
+ ñÂÌQƪ Á½ÆµÄàAîÆÈéCX^Xͯ¶IuWFNgÅ·B
+ </para>
+
+ <programlisting><![CDATA[cat.setWeight(11.0); // hit the db to initialize the proxy
+System.out.println( dc.getWeight() ); // 11.0]]></programlisting>
+
+ <para>
+ æOÉA <literal>final</literal> NXâ <literal>final</literal> \bhðÂNXÉ
+ CGLIBvLVðg¦Ü¹ñB
+ </para>
+
+ <para>
+ ÅãÉAàµi±IuWFNgÌCX^X»(á¦ÎAú»âftHgRXgN^ÌÅ)
+ ÉÈñç©Ì\[XªKvÆÈéÈçA»Ì\[XàܽvLVðÊµÄæ¾³êÜ·B
+ ÀÛÉÍAvLVNXÍi±NXÌTuNXÅ·B
+ </para>
+
+ <para>
+ ±êçÌâèÍJavaÌPêp³fÌ´ã̧À̽ßÅ·B൱êçÌâèð𯽢ÌÈçA
+ rWlX\bhðé¾µ½C^[tFCXð»ê¼êi±NXÅÀµÈ¯êÎÈèܹñB
+ }bsOt@CűêçÌC^[tFCXðwè·éKvª èÜ·BáF
+ </para>
+
+ <programlisting><![CDATA[<class name="CatImpl" proxy="Cat">
+ ......
+ <subclass name="DomesticCatImpl" proxy="DomesticCat">
+ .....
+ </subclass>
+</class>]]></programlisting>
+
+ <para>
+ <literal>CatImpl</literal> Í <literal>Cat</literal> C^[tFCXðÀ·éÌÉεA
+ <literal>DomesticCatImpl</literal> Í <literal>DomesticCat</literal> ðÀµÜ·B
+ ·éÆA <literal>load()</literal> â <literal>iterate()</literal> ÍA
+ <literal>Cat</literal> â <literal>DomesticCat</literal> ÌCX^XÌvLVð
+ ԵܷBi <literal>list()</literal> ÍÊíÍvLVðԳȢ±ÆÉӵľ³¢Bj
+ </para>
+
+ <programlisting><![CDATA[Cat cat = (Cat) session.load(CatImpl.class, catid);
+Iterator iter = session.createQuery("from CatImpl as cat where cat.name='fritz'").iterate();
+Cat fritz = (Cat) iter.next();]]></programlisting>
+
+ <para>
+ ÖAàxú»³êÜ·B±êÍvpeBð <literal>Cat</literal> ^Å龵ȯêÎ
+ ÈçÈ¢±ÆðÓ¡µÜ·B <literal>CatImpl</literal> ÅÍ èܹñB
+ </para>
+
+ <para>
+ vLVÌú»ð <emphasis>KvƵȢ</emphasis> ìà¶ÝµÜ·B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>equals()</literal> ii±NXª <literal>equals()</literal> ð
+ I[o[ChµÈ¢Æ«j
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>hashCode()</literal> ii±NXª <literal>hashCode()</literal> ð
+ I[o[ChµÈ¢Æ«j
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ¯ÊqÌgetter\bh
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ HibernateÍ <literal>equals()</literal> â <literal>hashCode()</literal> ðI[o[Chµ½
+ i±NXðoµÜ·B
+ </para>
+
+ <para>
+ ftHgÌ <literal>lazy="proxy"</literal> ÌãíèÉA <literal>lazy="no-proxy"</literal> ð
+ Iñ¾±ÆÅA^Ï·ÉÖA·éâèðñð·é±ÆªoÜ·B
+ µ©µArhÌoCgR[hgÝݪKvÉÈèAÇÌæ¤ÈìÅ ÁÄàA
+ ½¾¿ÉvLVÌú»ðs¤±ÆÉÈéŵå¤B
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-fetching-initialization" revision="1">
+ <title>RNVÆvLVÌú»</title>
+
+ <para>
+ <literal>LazyInitializationException</literal> ÍA <literal>Session</literal> ÌXR[vO©ç
+ ú»µÄ¢È¢RNVâvLVÉANZX³ê½Æ«ÉAHibernateÉæÁÄX[³êÜ·B
+ ·Èí¿ARNVâvLVÖÌQÆðÂGeBeBªª£³ê½óÔÌÅ·B
+ </para>
+
+ <para>
+ <literal>Session</literal> ðN[Y·éOÉvLVâRNVÌú»ðmÀÉ
+ s¢½¢Æ«ª èÜ·Bà¿ëñA <literal>cat.getSex()</literal>
+ â <literal>cat.getKittens().size()</literal> ÈÇðíÉÄÑo·±ÆÅú»ð§·é±ÆÍūܷB
+ µ©µ±êÍR[hðÇÞl𬳹AÄpIÈR[hÆ¢¤_©çàsÖÅ·B
+ </para>
+
+ <para>
+ static\bhÌ <literal>Hibernate.initialize()</literal> â <literal>Hibernate.isInitialized()</literal>
+ Íxú»ÌRNVâvLVðµ¤Æ«ÉÖÈû@ðAvP[VÉñµÜ·B
+ <literal>Hibernate.initialize(cat)</literal> ÍA <literal>Session</literal> ªI[vµÄ¢éÀèÍ
+ <literal>cat</literal> vLVð§IÉú»µÜ·B
+ <literal>Hibernate.initialize( cat.getKittens() )</literal> ÍkittensRNVÉεįlÌ
+ øÊª èÜ·B
+ </para>
+
+ <para>
+ ÊÌIðƵÄAKvÈ·×ÄÌRNVâvLVª[h³êéÜÅ
+ <literal>Session</literal> ðI[vɵĨû@ª èÜ·B¢Â©ÌAvP[VÌ
+ A[LeN`ÅÍAÁÉHibernateÉæéf[^ANZXðs¤R[hÆA»êðg¤
+ R[hªÙÈéAvP[VÌC[âA¨IÉÙÈévZbTÌÆ«ÉÍA
+ RNVªú»³êéÆ«É <literal>Session</literal> ªI[vµÄ¢é±Æð
+ ÛØ·éâèª èÜ·B±ÌâèÉεÄÍ2ÂÌî{IÈû@ª èÜ·B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+
+ Webx[XÌAvP[VÅÍA
+ r
[Ì_Oª®¹µANGXgªIíéêÔÅãÅ <literal>Session</literal>
+ ðN[Y·é½ßÉAT[ubgtB^ðg¤±ÆªÅ«Ü·i <emphasis>Open Session in View</emphasis>
+ p^[Å·jBà¿ëñAAvP[VîÕÌáO̳m«ªñíÉdvÉÈèÜ·B
+ r
[Ì_OÉáOª¶µ½Æ«Å³¦A[UɪßéOÉ
+ <literal>Session</literal> ÌN[YÆgUNVÌI¹ðs¤
+ ±ÆªsÂÉÈèÜ·B
+ HibernateÌWikiÉÚÁÄ¢é"Open Session in View"p^[ÌáðQƵľ³¢B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ rWlXwªª£µÄ¢éAvP[VÅÍArWlXWbNÍ
+ WebwÅKvÉÈé·×ÄÌRNVðOÉ"õ"·éKvª èÜ·B
+ ±êÍÁèÌ[XP[XÅKvÆÈév[e[V/WebwÉεA
+ rWlXwª·×ÄÌf[^ð[hµA·×ÄÌf[^ðú»µÄԷ׫Æ
+ ¢¤±ÆðÓ¡µÄ¢Ü·BÊíÍAAvP[VÍWebwÅKvÈRNV
+ »ê¼êÉ뵀 <literal>Hibernate.initialize()</literal> ðÄÑo·©
+ i±ÌÄÑoµÍZbVðN[Y·éOÉs¤Kvª èÜ·jA
+ HibernateNGÌ <literal>FETCH</literal> ßâ <literal>Criteria</literal>
+ Ì <literal>FetchMode.JOIN</literal> ðgÁÄRNVðæÉ³µÜ·B
+ ÊÍ <emphasis>Session Facade</emphasis> p^[ÌãíèÉ
+ <emphasis>Command</emphasis> p^[ðÌp·éÙ¤ªæèÈPÅ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ú»³êĢȢRNViàµÍ¼ÌvLVjÉANZX·éOÉA
+ <literal>merge()</literal> â <literal>lock()</literal> ðgÁÄVµ¢
+ <literal>Session</literal> ÉÈOÉ[h³ê½IuWFNgðÇÁ·é±ÆàoÜ·B
+ AhzbNÈgUNVÌZ}eBNXð±üµ½ÌÅAHibernateÍ
+ ±êð©®IÉsí¸A <emphasis>s¤×«Åà èܹñ</emphasis> I
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ å«ÈRNVðú»µ½ÍÈ¢ªARNVÉ¢ÄÌÈñç©ÌîñiTCYÌæ¤Èj
+ âf[^ÌTuZbgðKvÆ·é±Æª èÜ·B
+ </para>
+
+ <para>
+ RNVtB^ðg¤±ÆÅAú»¹¸ÉRNVÌTCYðæ¾·é±ÆªoÜ·B
+ </para>
+
+ <programlisting><![CDATA[( (Integer) s.createFilter( collection, "select count(*)" ).list().get(0) ).intValue()]]></programlisting>
+
+ <para>
+ <literal>createFilter()</literal> \bhÍARNVSÌðú»·éKvȵÉARNVÌ
+ TuZbgð³·é½ßÉøÊIÉg¦Ü·B
+ </para>
+
+ <programlisting><![CDATA[s.createFilter( lazyCollection, "").setFirstResult(0).setMaxResults(10).list();]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="performance-fetching-batch">
+ <title>ob`tFb`Ìgp</title>
+
+ <para>
+ HibernateÍob`tFb`ðø¦IÉgpūܷBêÂÌvLViàµÍRNVjªANZX
+ ³êéÆAHibernate͢©Ìú»µÄ¢È¢vLVð[h·é±ÆªÅ«Ü·Bob`tFb`Í
+ xZNgtFb`íªÉηéÅK»Å·Bob`tFb`̲®ÉÍQÂÌû@ª èÜ·B
+ NXxÆRNVxÅ·B
+ </para>
+
+ <para>
+ NXAvfÌob`tFb`ÍðªÈPÅ·BÀsÌÌêÊðzµÄ¾³¢B
+ <literal>Session</literal> É[h³ê½25ÂÌ <literal>Cat</literal> CX^Xª¶ÝµA
+ »ê¼êÌ <literal>Cat</literal> Í <literal>owner</literal> Å é <literal>Person</literal> ÖÌÖAð¿Ü·B
+ <literal>Person</literal> NXÍ <literal>lazy="true"</literal> ÌvLVÅ}bsO³êĢܷB
+ ൡ·×ÄÌCatÉεÄJèÔµ <literal>getOwner()</literal> ðÄÑo·ÆAHibernateÍ
+ ftHgÅÍ25ñÌ <literal>SELECT</literal> ðÀsµAownervLV̳ðµÜ·B
+ ±ÌUé¢ð <literal>Person</literal> Ì}bsOÌ <literal>batch-size</literal>
+ ÌwèخūܷB
+ </para>
+
+ <programlisting><![CDATA[<class name="Person" batch-size="10">...</class>]]></programlisting>
+
+ <para>
+ HibernateÍNGðRñ¾¯ðÀs·éæ¤ÉÈèÜ·Bp^[Í10, 10, 5Å·B
+ </para>
+
+ <para>
+ RNVÌob`tFb`àLøÉ·é±ÆªoÜ·BáÆµÄA»ê¼êÌ
+ <literal>Person</literal> ª <literal>Cat</literal> ÌxRNVðÁĨèA
+ 10ÂÌPersonª <literal>Sesssion</literal> É[h³ê½Æ·éÆA·×ÄÌPersonÉ
+ εÄJèÔµ <literal>getCats()</literal> ðÄÑo·±ÆÅAv10ñÌ <literal>SELECT</literal>
+ ª¶µÜ·Bൠ<literal>Person</literal> Ì}bsOÅ <literal>cats</literal>
+ RNVÌob`tFb`ðLøÉ·êÎAHibernateÍRNVÌOtFb`ªoÜ·B
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <set name="cats" batch-size="3">
+ ...
+ </set>
+</class>]]></programlisting>
+
+ <para>
+ <literal>batch-size</literal> ª3ÈÌÅAHibernateÍ4ñÌ <literal>SELECT</literal>
+ Å3ÂA3ÂA3ÂA1Âð[hµÜ·BJèÔ·ÆA®«ÌlÍÁèÌ <literal>Session</literal>
+ ÌÌú»³êĢȢRNVÌúÒÉ˶µÜ·B
+ </para>
+
+ <para>
+ RNVÌob`tFb`ÍACeÌlXgµ½c[A ·Èí¿Aã\IÈi\Ìp^[ª
+ éêÉÁÉLpÅ·Biµ©µAÇÝݪ½¢c[ÅÍ <emphasis>lXgµ½set</emphasis>
+ â <emphasis>ïÌ»µ½pX</emphasis> ªæèæ¢IðÉÈèÜ·Bj
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-fetching-subselect">
+ <title>TuZNgtFb`Ìgp</title>
+
+ <para>
+ êÂÌxRNVâPêlvLVªtFb`³êȯê΢¯È¢Æ«AHibernateÍ
+ »êç·×Äð[hµATuZNgÌIWiNGªÄxÀs³êÜ·B±êÍ
+ ob`tFb`Ư¶û@Å®«Aµ¸ÂÌ[hÍs¢Ü¹ñB
+ </para>
+
+ <!-- TODO: Write more about this -->
+ <!-- ¯æ -->
+ </sect2>
+
+ <sect2 id="performance-fetching-lazyproperties">
+ <title>xvpeBtFb`Ìgp</title>
+
+ <para>
+ Hibernate3ÍvpeB²ÆÌxtFb`ðT|[gµÄ¢Ü·B±ÌÅK»è@Í
+ <emphasis>O[vÌtFb`</emphasis> ƵÄàmçêĢܷB±êÍÙÆñÇ
+ v]©ço½@\Š鱯Éӵľ³¢BÀÛÉÍñÇÝÝÌÅK»æèàA
+ sÇÝÝÌÅK»ªñíÉdvÅ·B
+ µ©µANX̢©ÌvpeB¾¯ðÇÝÞ±ÆÍAù¶Ìe[uª½SàÌñð¿A
+ f[^fðüPūȢÈÇÌÉ[ÈêÉÍLpÅ·B
+ </para>
+
+ <para>
+ xvpeBÇÝÝðLøÉ·éÉÍAÎÛÌvpeBÌ}bsOÅ <literal>lazy</literal>
+ ®«ðZbgµÄ¾³¢B
+ </para>
+
+ <programlisting><![CDATA[<class name="Document">
+ <id name="id">
+ <generator class="native"/>
+ </id>
+ <property name="name" not-null="true" length="50"/>
+ <property name="summary" not-null="true" length="200" lazy="true"/>
+ <property name="text" not-null="true" length="2000" lazy="true"/>
+</class>]]></programlisting>
+
+ <para>
+ xvpeBÇÝÝÍrhÌoCgR[hgÝÝðKvƵܷIàµ
+ i±NXÉgÝݪ³êĢȢÈçAHibernateÍÙÁÄxvpeBÌÝèð³µÄA
+ ¦tFb`ÉߵܷB
+ </para>
+
+ <para>
+ oCgR[hgÝÝÍȺÌAnt^XNðgÁľ³¢B
+ </para>
+
+ <programlisting><![CDATA[<target name="instrument" depends="compile">
+ <taskdef name="instrument" classname="org.hibernate.tool.instrument.InstrumentTask">
+ <classpath path="${jar.path}"/>
+ <classpath path="${classes.dir}"/>
+ <classpath refid="lib.class.path"/>
+ </taskdef>
+
+ <instrument verbose="true">
+ <fileset dir="${testclasses.dir}/org/hibernate/auction/model">
+ <include name="*.class"/>
+ </fileset>
+ </instrument>
+</target>]]></programlisting>
+
+ <para>
+ svÈñðÇÝÜÈ¢½ßÌAÊÌiæèæ¢Hjû@ÍAÈÆà
+ ÇÝÝÌÝÌgUNVɨ¢ÄÍAHQLâCriteriaNGÌËe
+ @\ðg¤±ÆÅ·B±Ìû@ÍrhÌoCgR[hgÝݪsvÉÈèA
+ æèÇ¢ðû@Å·B
+ </para>
+
+ <para>
+ HQLÅ <literal>fetch all properties</literal> ðg¤±ÆÅAÊǨèÌ
+ vpeB̦tFb`Oð§·é±ÆªoÜ·B
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="performance-cache" revision="1">
+ <title>æ2xLbV
</title>
+
+ <para>
+ HibernateÌ <literal>Session</literal> Íi±f[^ÌgUNVxÌLbV
Å·B
+ class-by-classÆcollection-by-collection²ÆÌANX^xâJVMx
+ i <literal>SessionFactory</literal> xjÌLbV
ðÝè·é±ÆªoÜ·B
+ NX^»³ê½LbV
ÉÂÈ®±Æ³¦oÜ·Bµ©µÓµÄ¾³¢B
+ LbV
ͼÌAvP[VÉæéi±wÌÏXð
+ l¶µÜ¹ñiLbV
f[^ðèúIÉúÀØêÉ·éÝèÍoÜ·jB
+ </para>
+
+ <para revision="1">
+ Hibernateªgp·éLbV
ÀÍA<literal>hibernate.cache.provider_class</literal> vpeBÉ
+ <literal>org.hibernate.cache.CacheProvider</literal> ðÀµ½NX¼ðwè·é±ÆÅÏXūܷB
+ HibernateͽÌI[v\[XÌLbV
voC_ðrgCÀÅÁĢܷiãÉXgª èÜ·jB
+ Á¦ÄAOÉྵ½æ¤ÉA Ƚ©gªÆ©ÌÀðµÄA»êðgÝÞ±ÆàoÜ·B
+ o[W3.2æèOÅÍEhCacheªftHgÌLbV
voC_Š鱯Éӵľ³¢B
+ o[W3.2ÅͱêÍÄÍÜèܹñB
+ </para>
+
+ <table frame="topbot" id="cacheproviders" revision="1">
+ <title>LbV
voC_</title>
+ <tgroup cols='5' align='left' colsep='1' rowsep='1'>
+ <colspec colname='c1' colwidth="1*"/>
+ <colspec colname='c2' colwidth="3*"/>
+ <colspec colname='c3' colwidth="1*"/>
+ <colspec colname='c4' colwidth="1*"/>
+ <colspec colname='c5' colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>LbV
</entry>
+ <entry>voC_NX</entry>
+ <entry>^Cv</entry>
+ <entry>NX^Z[t</entry>
+ <entry>NGLbV
ÌT|[g</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>Hashtablei»ipƵÄÓ}µÄ¢Ü¹ñj</entry>
+ <entry><literal>org.hibernate.cache.HashtableCacheProvider</literal></entry>
+ <entry></entry>
+ <entry></entry>
+ <entry>yes</entry>
+ </row>
+ <row>
+ <entry>EHCache</entry>
+ <entry><literal>org.hibernate.cache.EhCacheProvider</literal></entry>
+ <entry>AfBXN</entry>
+ <entry></entry>
+ <entry>yes</entry>
+ </row>
+ <row>
+ <entry>OSCache</entry>
+ <entry><literal>org.hibernate.cache.OSCacheProvider</literal></entry>
+ <entry>AfBXN</entry>
+ <entry>yesiNX^³ø»j</entry>
+ <entry>yes</entry>
+ </row>
+ <row>
+ <entry>SwarmCache</entry>
+ <entry><literal>org.hibernate.cache.SwarmCacheProvider</literal></entry>
+ <entry>NX^iip}`LXgj</entry>
+ <entry>yesiNX^³ø»j</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>JBoss TreeCache</entry>
+ <entry><literal>org.hibernate.cache.TreeCacheProvider</literal></entry>
+ <entry>NX^iip}`LXgjAgUNVi</entry>
+ <entry>yesi¡»j</entry>
+ <entry>yesi¯úªKvj</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <sect2 id="performance-cache-mapping" revision="2">
+ <title>LbV
Ì}bsO</title>
+
+ <para>
+ NXâRNVÌ}bsOÌ <literal><cache></literal> vfÍȺÌ`®Å·B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="cache1" coords="2 70"/>
+ <area id="cache2" coords="3 70"/>
+ <area id="cache3" coords="4 70"/>
+ </areaspec>
+ <programlisting><![CDATA[<cache
+ usage="transactional|read-write|nonstrict-read-write|read-only"
+ region="RegionName"
+ include="all|non-lazy"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="cache1">
+ <para>
+ <literal>usage</literal> (required) specifies the caching strategy:
+ <literal>transactional</literal>,
+ <literal>read-write</literal>,
+ <literal>nonstrict-read-write</literal> or
+ <literal>read-only</literal>
+ </para>
+ </callout>
+ <callout arearefs="cache2">
+ <para>
+ <literal>region</literal> (optional, defaults to the class or
+ collection role name) specifies the name of the second level cache
+ region
+ </para>
+ </callout>
+ <callout arearefs="cache3">
+ <para>
+ <literal>include</literal> (optional, defaults to <literal>all</literal>)
+ <literal>non-lazy</literal> specifies that properties of the entity mapped
+ with <literal>lazy="true"</literal> may not be cached when attribute-level
+ lazy fetching is enabled
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ ܽÍiæèæ¢û@ƵÄHjA <literal>hibernate.cfg.xml</literal> É <literal><class-cache></literal>
+ Æ <literal><collection-cache></literal> vfðwè·é±ÆàoÜ·B
+ </para>
+
+ <para>
+ <literal>usage</literal> ®«Í <emphasis>LbV
ÌÀñ«íª</emphasis> ðwèµÜ·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-cache-readonly">
+ <title>read onlyíª</title>
+
+ <para>
+ àµAvP[VªÇÝÝÌÝKvÅAi±NXÌCX^XðÏXµÈ¢ÈçA
+ <literal>read-only</literal> LbV
ðg¤±ÆªoÜ·B±êÍàÁÆàPÅ
+ àÁÆàptH[}XÌÇ¢íªÅ·BNX^ÅÌgpà®SÉÀSÅ·B
+ </para>
+
+ <programlisting><![CDATA[<class name="eg.Immutable" mutable="false">
+ <cache usage="read-only"/>
+ ....
+</class>]]></programlisting>
+
+ </sect2>
+
+
+ <sect2 id="performance-cache-readwrite">
+ <title>read/writeíª</title>
+
+ <para>
+ AvP[Vªf[^ðXV·éKvª éÈçA <literal>read-write</literal> LbV
ªK©à
+ µêܹñB±ÌLbV
íªÍAVACUuÈgUNVª£xªv³êéÈçA
+ µÄg¤×«ÅÍ èܹñBàµLbV
ªJTA«ÅgíêéÈçAJTA <literal>TransactionManager</literal>
+ ðæ¾·é½ßÌû@𦷠<literal>hibernate.transaction.manager_lookup_class</literal>
+ vpeBðwèµÈ¯êÎÈèܹñB¼Ì«ÅÍA <literal>Session.close()</literal>
+ â <literal>Session.disconnect()</literal> ªÄÎê½Æ«ÉAmÀÉgUNVª®¹
+ µÄ¢È¯êÎÈèܹñB
+ àµNX^űÌíªðg¢½¢ÈçAîÆÈéLbV
ÌÀªbNðT|[g
+ µÄ¢é±ÆðÛØµÈ¯êÎÈèܹñB
+ gÝÝÌLbV
voC_Í <emphasis>T|[gµÄ¢Ü¹ñ</emphasis> B
+ </para>
+
+ <programlisting><![CDATA[<class name="eg.Cat" .... >
+ <cache usage="read-write"/>
+ ....
+ <set name="kittens" ... >
+ <cache usage="read-write"/>
+ ....
+ </set>
+</class>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="performance-cache-nonstrict">
+ <title>µ§ÅÍÈ¢read/writeíª</title>
+
+ <para>
+ AvP[Vª½Üɵ©f[^ðXV·éKvÍÈi·Èí¿ñÂÌgUNVª
+ ¯É¯¶ACeðXVµæ¤Æ·é±ÆÍÙÆñÇN±çÈ¢jAµ§ÈgUNVª£ª
+ v³êÈ¢ÈçA <literal>nonstrict-read-write</literal> LbV
ªK©àµêܹñB
+ àµLbV
ªJTA«ÅgíêéÈçA <literal>hibernate.transaction.manager_lookup_class</literal>
+ ðwèµÈ¯êÎÈèܹñB¼Ì«ÅÍA <literal>Session.close()</literal>
+ â <literal>Session.disconnect()</literal> ªÄÎê½Æ«ÉAmÀÉgUNVª®¹
+ µÄ¢È¯êÎÈèܹñB
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-cache-transactional">
+ <title>transactionalíª</title>
+
+ <para>
+ <literal>transactional</literal> LbV
íªÍJBoss TreeCacheÌæ¤È®SÈgUNVi
+ LbV
voC_ÌT|[gðñµÜ·B
+ ±Ìæ¤ÈLbV
ÍJTA«ÅÌÝgpÂ\ÅA <literal>hibernate.transaction.manager_lookup_class</literal>
+ ðwèµÈ¯êÎÈèܹñB
+ </para>
+
+ </sect2>
+
+ <para>
+ ·×Ä̯Às«LbV
íªðT|[gµÄ¢éLbV
voC_Í èܹñB
+ ȺÌ\ÍÇÌvoC_ªÇ̯Àñ«íªÉηé©ð\µÄ¢Ü·B
+ </para>
+
+ <table frame="topbot">
+ <title>¯Às«LbV
íªÌT|[g</title>
+ <tgroup cols='5' align='left' colsep='1' rowsep='1'>
+ <colspec colname='c1' colwidth="1*"/>
+ <colspec colname='c2' colwidth="1*"/>
+ <colspec colname='c3' colwidth="1*"/>
+ <colspec colname='c4' colwidth="1*"/>
+ <colspec colname='c5' colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>LbV
</entry>
+ <entry>read-only</entry>
+ <entry>µ§ÅÍÈ¢read-write</entry>
+ <entry>read-write</entry>
+ <entry>transactional</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>Hashtablei»ipƵÄÓ}µÄ¢Ü¹ñj</entry>
+ <entry>yes</entry>
+ <entry>yes</entry>
+ <entry>yes</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>EHCache</entry>
+ <entry>yes</entry>
+ <entry>yes</entry>
+ <entry>yes</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>OSCache</entry>
+ <entry>yes</entry>
+ <entry>yes</entry>
+ <entry>yes</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>SwarmCache</entry>
+ <entry>yes</entry>
+ <entry>yes</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>JBoss TreeCache</entry>
+ <entry>yes</entry>
+ <entry></entry>
+ <entry></entry>
+ <entry>yes</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </sect1>
+
+ <sect1 id="performance-sessioncache" revision="2">
+ <title>LbV
ÌÇ</title>
+
+ <para>
+ IuWFNgð <literal>save()</literal> A <literal>update()</literal> A <literal>saveOrUpdate()</literal>
+ Én·Æ«A»µÄ <literal>load()</literal> A <literal>get()</literal> A <literal>list()</literal> A
+ <literal>iterate()</literal> A <literal>scroll()</literal> ðgÁÄIuWFNgð³·éÆ«ÉÍíÉA
+ »ÌIuWFNgÍ <literal>Session</literal> ÌàLbV
ÉÇÁ³êÜ·B
+ </para>
+ <para>
+ É <literal>flush()</literal> ªÄÎêéÆAIuWFNgÌóÔÍf[^x[XƯú»³êÜ·B
+ ൱̯úªN±é±Æð]ÜȢƫâAcåÈÌIuWFNgðµÄ¢Äðø¦IÉ
+ µ¤Kvª 鯫ÍA <literal>evict()</literal> \bhðgÁÄêLbV
©ç
+ IuWFNgâRNVðí·é±ÆªoÜ·B
+ </para>
+
+ <programlisting><![CDATA[ScrollableResult cats = sess.createQuery("from Cat as cat").scroll(); //a huge result set
+while ( cats.next() ) {
+ Cat cat = (Cat) cats.get(0);
+ doSomethingWithACat(cat);
+ sess.evict(cat);
+}]]></programlisting>
+
+ <para>
+ <literal>Session</literal> ÍCX^XªZbVLbV
ÉÜÜêé©Ç¤©ð»f·é½ßÌ
+ <literal>contains()</literal> \bhàñµÜ·B
+ </para>
+
+ <para>
+ ·×ÄÌIuWFNgðZbVLbV
©ç®SÉæèÉÍA<literal>Session.clear()</literal>
+ ðÄÑoµÄ¾³¢B
+ </para>
+
+ <para>
+ ñLbV
̽ßÉA <literal>SessionFactory</literal> ÉÍ
+ CX^XANXSÌARNVÌCX^XARNVSÌðLbV
©ç
+ í·é½ßÌ\bhª»ê¼êè`³êĢܷB
+ </para>
+
+ <programlisting><![CDATA[sessionFactory.evict(Cat.class, catId); //evict a particular Cat
+sessionFactory.evict(Cat.class); //evict all Cats
+sessionFactory.evictCollection("Cat.kittens", catId); //evict a particular collection of kittens
+sessionFactory.evictCollection("Cat.kittens"); //evict all kitten collections]]></programlisting>
+
+ <para>
+ <literal>CacheMode</literal> ÍÁèÌZbVªñLbV
ÆÇÌæ¤ÉÝìp·é©ð
+ wèµÜ·B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>CacheMode.NORMAL</literal> - ACeÌÇÝÝÆ«ÝÅñLbV
ðg¢Ü·
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>CacheMode.GET</literal> - ÇÝÝÍñLbV
©çs¢Ü·ªAf[^ð
+ XVµ½êð¢ÄñLbV
É«ÝðµÜ¹ñB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>CacheMode.PUT</literal> - ñLbV
ÉACeð«ÝÜ·ªAÇÝÝÉÍ
+ ñLbV
ðg¢Ü¹ñB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>CacheMode.REFRESH</literal> - ñLbV
ÉACeð«ÝÜ·ªAÇÝÝÉÍ
+ ñLbV
ðgí¸A <literal>hibernate.cache.use_minimal_puts</literal>
+ Ìe¿ðó¯¸ÉAf[^x[X©çÇÝÞ·×ÄÌACeÌñLbV
ð§IÉtbV
µÜ·B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ñLbV
ÌàeâNGLbV
Ìæð©é½ßÉA <literal>Statistics</literal> APIð
+ gÁľ³¢B
+ </para>
+
+ <programlisting><![CDATA[Map cacheEntries = sessionFactory.getStatistics()
+ .getSecondLevelCacheStatistics(regionName)
+ .getEntries();]]></programlisting>
+
+ <para>
+ vîñðLøÉµÄA³çÉIvVƵÄALbV
Ggð
+ lªæèðÂ\È`®ÅÛ·é±ÆðHibernateɧµÜ·B
+ </para>
+
+ <programlisting><![CDATA[hibernate.generate_statistics true
+hibernate.cache.use_structured_entries true]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="performance-querycache" revision="1">
+ <title>NGLbV
</title>
+
+ <para>
+ NGÌUgZbgàLbV
oÜ·B±êͯ¶p[^ŽxàÀs³êé
+ NGÉεÄÌÝLpÅ·BNGLbV
ðg¤ÉÍAܸÝèÅLøÉµÈÄÍÈèܹñB
+ </para>
+
+ <programlisting><![CDATA[hibernate.cache.use_query_cache true]]></programlisting>
+
+ <para>
+ ±ÌÝèÍV½ÉñÂÌLbV
ÌæÌì¬ðs¢Ü·BêÂÍNGÌUgZbgÌ
+ LbV
i <literal>org.hibernate.cache.StandardQueryCache</literal> jðÛµA
+ à¤1ÂÍNGÂ\Èe[uÖÌÅVÌXV^CX^v
+ i <literal>org.hibernate.cache.UpdateTimestampsCache</literal> jð۵ܷB
+ NGLbV
ÍUgZbgÌÀÛÌvfÌóÔÍLbV
µÈ¢±ÆÉ
+ ӵľ³¢BLbV
·éÌͯÊqÌlÆAl^ÌÊÌÝÅ·B
+ »Ì½ßANGLbV
ÍíÉñLbV
ÆêÉg¤×«Å·B
+ </para>
+
+ <para>
+ ÙÆñÇÌNGÍLbV
̶bðó¯È¢ÌÅAftHgÅÍNGÍLbV
³êܹñB
+ LbV
ðLøÉ·éÉÍA <literal>Query.setCacheable(true)</literal> ðÄÑoµÄ¾³¢B
+ »¤·êÎNGªù¶ÌLbV
ÊðTµANGÀsÉ»ÌÊðLbV
ÉÇÁ·é
+ æ¤ÉÈèÜ·B
+ </para>
+
+ <para>
+ NGLbV
Ìjü|V[ðש§äµ½¢Æ«ÍA <literal>Query.setCacheRegion()</literal>
+ ðÄÑoµÄÁèÌNGÉηéLbV
Ìæðwè·é±ÆªoÜ·B
+ </para>
+
+ <programlisting><![CDATA[List blogs = sess.createQuery("from Blog blog where blog.blogger = :blogger")
+ .setEntity("blogger", blogger)
+ .setMaxResults(15)
+ .setCacheable(true)
+ .setCacheRegion("frontpages")
+ .list();]]></programlisting>
+
+ <para>
+ NGª©gÌNGLbV
ÌæÌtbV
ð§µÈ¯êÎÈçÈ¢ÈçA
+ <literal>Query.setCacheMode(CacheMode.REFRESH)</literal> ðÄÑo·×«Å·B±êÍ
+ ³ÆÈéf[^ªÊÌvZXÉæÁÄXV³ê½èi·Èí¿HibernateðʶÄXV³êÈ¢jA
+ AvP[VÉÁèÌNGUgZbgðIðµÄtbV
³¹éêÉÁÉLpÅ·B
+ ³çÉLpÈà¤êÂÌû@ÍA <literal>SessionFactory.evictQueries()</literal>
+ ÉæÁÄNGLbV
ÌæðÁ·é±ÆÅ·B
+ </para>
+
+ </sect1>
+14.1
+ <sect1 id="performance-collections">
+ <title>RNVÌptH[}XÌð</title>
+
+ <para>
+ RNVÌbèÉÍ·ÅɽÌÔðg¢Üµ½B±ÌßÅÍ
+ RNVªÀsÉÇÌæ¤ÉU¤©É¢ÄÌbèð2A3æèã°Ü·B
+ </para>
+
+ <sect2 id="performance-collections-taxonomy">
+ <title>ªÞ</title>
+
+ <para>HibernateÍ3ÂÌî{IÈRNVÌíÞðè`µÄ¢Ü·B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>lÌRNV</para>
+ </listitem>
+ <listitem>
+ <para>êνÖA</para>
+ </listitem>
+ <listitem>
+ <para>½Î½ÖA</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ±ÌªÞͳܴÜÈe[uâOL[ÖAðæÊµÜ·ªA½¿ªméKvÌ é
+ ÖAfÉ¢ÄÙÆñÇÈÉ೦ÄêܹñBÖA\¢âptH[}XÌÁ¥ð
+ ®SÉð·éÉÍAHibernateªRNVÌsðXVAí·é½ßÉg¤åL[Ì
+ \¢àܽl¦È¯êÎÈèܹñB±êÍȺ̪Þðñ¦µÜ·B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>CfbNXt«RNV</para>
+ </listitem>
+ <listitem>
+ <para>set</para>
+ </listitem>
+ <listitem>
+ <para>bag</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ·×ÄÌCfbNXt«RNVimapAlistAzñjÍ <literal><key></literal>
+ Æ <literal><index></literal> J©çÈéåL[ðÁĢܷB±ÌêÍ
+ RNVÌXVÍñíÉø¦IÅ·BåL[ÍLpÈCfbNXÉÈèAHibernateª
+ ÁèÌsðXVܽÍí·éÆ«ÉA»Ìsðø¦IÉ©Â¯é±ÆªÅ«Ü·B
+ </para>
+
+ <para>
+ setÍ <literal><key></literal> ©çÈéåL[ÆvfÌJðÁĢܷB
+ ±êÍRNVvf̢©Ì^É¢ÄÍø¦IÅÍÈ¢©àµêܹñB
+ ÁÉ¡vfAå«ÈeLXgAoCitB[hÅÍñø¦Å·Bf[^x[XÍ
+ ¡åL[Éø¦IÉCfbNXðt¯é±ÆªÅ«È¢©çÅ·BêûA1νâ½Î½ÖAɨ¢ÄA
+ ÁÉlH¯ÊqÌêͯ¶®ç¢ø¦IÅ·Bi]kF <literal>SchemaExport</literal>
+ ÅÀÛÉ <literal><set></literal> ÌåL[ðìè½¢ÈçA·×ÄÌJÅ
+ <literal>not-null="true"</literal> ð龵ȯêÎÈèܹñBj
+ </para>
+
+ <para>
+ <literal><idbag></literal> }bsOÍãL[ðè`µÜ·B»Ì½ß
+ XVÍíÉñíÉø¦IÅ·BÀãA±êÍÅPÌP[XÅ·B
+ </para>
+
+ <para>
+ bagÍÅ«ÌP[XÅ·BbagÍvfÌlÌd¡ªÂ\ÅACfbNXJð½È¢½ßA
+ åL[Íè`³êÈ¢©àµêܹñBHibernateÉÍd¡µ½sðæÊ·éû@ª èܹñB
+ HibernateͱÌâèÌð̽ßÉAÏXª Á½Æ«ÉÍíÉ®SÈí
+ iêÂÌ <literal>DELETE</literal> Éæéjðs¢ARNVÌÄì¬ðs¢Ü·B
+ ±êÍñíÉñø¦I©àµêܹñB
+ </para>
+
+ <para>
+ 1νÖAÅÍAuåL[vÍf[^x[XÌe[ųIÈ
+ åL[ÅÍÈ¢©àµêÈ¢±ÆÉӵľ³¢Bµ©µ±Ìêų¦AãL̪ÞÍܾLpÅ·B
+ iHibernateªRNVÌÂXÌsðǤâÁÄu©Â¯é©vð\µÄ¢Ü·Bj
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-collections-mostefficientupdate">
+ <title>XVÉàÁÆàø¦IÈRNV listAmapAidbagAset</title>
+
+ <para>
+ ãÅÌc_©çACfbNXt«RNVÆiÊÌjsetÍvfÌÇÁAíA
+ XVÅàÁÆàø¦IÈìªoé±ÆÍ¾ç©Å·B
+ </para>
+
+ <para>
+ ÙÚÔá¢ÈA½Î½ÖAâlÌRNVɨ¢ÄACfbNXt«RNVª
+ setæèàDêÄ¢é_ªêÂÈã èÜ·B <literal>Set</literal> Í»Ì
+ \¢Ì½ßÉAHibernateÍvfªuÏXv³ê½Æ«ÉsðµÄ <literal>UPDATE</literal>
+ µÜ¹ñB <literal>Set</literal> ÖÌÏXÍíÉiÂXÌsÌj<literal>INSERT</literal>
+ Æ <literal>DELETE</literal> ÉæÁÄs¢Ü·BJèԵܷªA±êÍêνÖAÉÍ
+ ÄÍÜèܹñB
+ </para>
+
+ <para>
+ zñÍxªÅ«È¢Æ¢¤ÜèÈÌÅA_ƵÄAlistAmapAidbagªàÁÆà
+ ptH[}XÌÇ¢iinverseÅÍÈ¢jRNV^CvÆÈèÜ·Bsetà
+ »êÙÇá¢Í èܹñBHibernateÌAvP[VÅÍAsetÍRNVÌàÁÆà
+ ¤ÊÌíÞÆµÄúÒ³êÜ·BsetÌ\»ÍÖAfÅÍàÁÆà©R¾©çÅ·B
+ </para>
+
+ <para>
+ µ©µAæfUC³ê½HibernateÌhCfÅÍAÊíàÁÆà½¢RNVÍ
+ Àã <literal>inverse="true"</literal> ðwèµ½1νÖAÅ·B±êçÌÖAÅÍA
+ XVͽÎêÌÖA[ŵíêARNVÌXVptH[}XÌâèÍÄÍÜèܹñB
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-collections-mostefficentinverse">
+ <title>inverseRNVÉàÁÆàÅKÈbagÆlist</title>
+
+ <para>
+ bagð©úµÄµÜ¤OÉAbagi»µÄlistàjªsetæèà¸ÁÆptH[}XªÇ¢ÁÊÈP[Xð
+ ÐîµÜ·B <literal>inverse="true"</literal> ÌRNViêÊIÈ1νÖAÌg¢ûÈÇjÅA
+ bagÌvfðú»itFb`j·éKvÈbagâlistÉvfðÇÁūܷI
+ ±êÍ <literal>Collection.add()</literal> â <literal>Collection.addAll()</literal>
+ Íbagâ <literal>List</literal> ÅÍíÉtrueðԳȯêÎÈçÈ¢©çÅ·
+ i <literal>Set</literal> ÆÍÙÈèÜ·jB
+ ±êÍȺ̤Êðæè¬·é±ÆªÅ«Ü·B
+ </para>
+
+ <programlisting><![CDATA[Parent p = (Parent) sess.load(Parent.class, id);
+Child c = new Child();
+c.setParent(p);
+p.getChildren().add(c); //no need to fetch the collection!
+sess.flush();]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="performance-collections-oneshotdelete">
+ <title>êí</title>
+
+ <para>
+ XARNVÌvfðêÂêÂí·é±ÆÍÉßÄñø¦IÉÈ鱯ª èÜ·B
+ HibernateÍð©ÅÍÈ¢ÌÅAVµ¢óÌRNVÌêi <literal>list.clear()</literal>
+ ðÄÑoµ½êÈÇjÅͱêð·×«ÅÈ¢±ÆðmÁĢܷB±ÌêÍAHibernateÍ
+ <literal>DELETE</literal> ðêñsµÄA»êÅ·×ÄIíèÜ·I
+ </para>
+
+ <para>
+ TCY20ÌRNVÉêÂÌvfðÇÁµA»ê©çñÂÌvfðí·éƵܷB
+ HibernateÍêÂÌ <literal>INSERT</literal> ¶ÆñÂÌ <literal>DELETE</literal> ¶ðsµÜ·
+ iRNVªbagÅȯêÎjB±êÍm©É]ܵ¢®ìÅ·B
+ </para>
+
+ <para>
+ µ©µA18ÂÌvfðíµÄ2ÂðcµA»ê©ç3ÂVµ¢vfðÇÁ·éƵܷB
+ ±ÌÆ«ñÂÌû@ª èÜ·B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ 18sðêÂêÂíµÄA3sðÇÁ·é
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ RNVSÌðíi <literal>DELETE</literal> ÌSQLðêñjµA»µÄ5ÂÌvf·×Äð
+ iê¸ÂjÇÁ·é
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ HibernateͱÌêÉ2ÔÚÌû@ªæè¬¢¾ë¤Æí©éÙÇ«Í èܹñB
+ i»µÄHibernateª±Ìæ¤É«¢±Æà]ܵȢŵå¤B±Ìæ¤ÈUé¢Í
+ f[^x[XÌgKÈÇ𬳹é©àµêܹñBj
+ </para>
+
+ <para>
+ K¢ÉàA³ÌRNVðÌÄiÂÜèQÆðâßÄjA»ÝÌvfð·×ÄÂVµ¢RNVÌ
+ CX^XðÔ·±ÆÅA¢ÂÅà±ÌUé¢i2ÔÚÌíªjð§·é±ÆªoÜ·B
+ ɱêÍÆÄàÖÅÍÅ·B
+ </para>
+
+ <para>
+ à¿ëñAêíÍ <literal>inverse="true"</literal> ðwèµ½RNVÉÍs¢Ü¹ñB
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="performance-monitoring" revision="1">
+ <title>ptH[}XÌj^O</title>
+
+ <para>
+ ÅK»Íj^OâptH[}Xð¦·lªÈ¯êÎ\ªÉs¦Ü¹ñB
+ HibernateÍàÌ·×ÄÌÍÍÌlðñµÜ·B
+ HibernateÌvîñÍ <literal>SessionFactory</literal> PÊÅæ¾Â\Å·B
+ </para>
+
+ <sect2 id="performance-monitoring-sf" revision="2">
+ <title>SessionFactoryÌj^O</title>
+
+ <para>
+ <literal>SessionFactory</literal> ÌgNXÉANZX·éÉÍ2ÂÌû@ª èÜ·B
+ ÅÌû@ÍA <literal>sessionFactory.getStatistics()</literal> ðÄÑoµA
+ ©ªÅ <literal>Statistics</literal> ÌÇÝÝâ\¦ðs¢Ü·B
+ </para>
+
+ <para>
+ <literal>StatisticsService</literal> MBeanðLøÉµÄ¢êÎAHibernateÍJMXðgÁÄ
+ gNXðs·é±ÆàūܷB1ÂÌMBeanð·×ÄÌ <literal>SessionFactory</literal>
+ ÉεÄLøÉ·é©ASessionFactory²ÆÉêÂÌMBeanðLøÉ·é±ÆªoÜ·B
+ ŬÀÌÝèáÅ éȺÌR[hð©Ä¾³¢B
+ </para>
+
+ <programlisting><![CDATA[// MBean service registration for a specific SessionFactory
+Hashtable tb = new Hashtable();
+tb.put("type", "statistics");
+tb.put("sessionFactory", "myFinancialApp");
+ObjectName on = new ObjectName("hibernate", tb); // MBean object name
+
+StatisticsService stats = new StatisticsService(); // MBean implementation
+stats.setSessionFactory(sessionFactory); // Bind the stats to a SessionFactory
+server.registerMBean(stats, on); // Register the Mbean on the server]]></programlisting>
+
+
+<programlisting><![CDATA[// MBean service registration for all SessionFactory's
+Hashtable tb = new Hashtable();
+tb.put("type", "statistics");
+tb.put("sessionFactory", "all");
+ObjectName on = new ObjectName("hibernate", tb); // MBean object name
+
+StatisticsService stats = new StatisticsService(); // MBean implementation
+server.registerMBean(stats, on); // Register the MBean on the server]]></programlisting>
+
+ <para>
+ TODO: ±êÍÓ¡ª èܹñBÅÌP[XÍAMBeanð¼Ú³µÄgpµÜ·B2ÔÚÌP[XÍA
+ g¤OÉsession factoryªÁÄ¢éJNDI¼ðn³È¯êÎÈèܹñB
+ <literal>hibernateStatsBean.setSessionFactoryJNDIName("my/JNDI/Name")</literal> ðgÁľ³¢B
+ </para>
+ <para>
+ <literal>SessionFactory</literal> ÉεÄj^OÌJniI¹jðs¤±ÆªoÜ·B
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ÝèÉÍA <literal>hibernate.generate_statistics</literal> ð <literal>false</literal> ɵܷ
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ÀsÉA <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> ܽÍ
+ <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal> ðÄÑoµÜ·
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ vÍ <literal>clear()</literal> \bhðgÁÄè®ÅZbg·é±ÆªoÜ·B
+ T}Í <literal>logSummary()</literal> \bhðgÁÄloggerÉ鱯ªoÜ·
+ iinfoxÅ·jB
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-monitoring-metrics" revision="1">
+ <title>gNX</title>
+
+ <para>
+ ½Ìà̪ èÜ·B·×ÄÌgpÂ\ÈJE^Í <literal>Statistics</literal>
+ C^[tFCXÌAPIÉ©êĨèA3Â̪ު èÜ·B
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ gNXÍêÊIÈ <literal>Session</literal> Ìg¢ûÆÖWµÄ¢Ü·B
+ I[vµ½ZbV̪JDBCRlNVÆÖAµÄ¢éÌÆ¯¶Å·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ gNXÍvfARNVANGâLbV
ÈÇSÌÉ
+ ÖWµÄ¢Ü·iʼÍO[ogNXÅ·jB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ gNXÌÚ×ÍÁèÌGeBeBARNVANGALbV
ÌæÉÖWµÄ¢Ü·B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ áÆµÄALbV
ÌqbgAqbg~XâAvfARNVANGÌANGÌÀsÉ
+ KvȽÏÔðmFūܷB~bÌlÍJavaÌßðó¯é±ÆÉӵľ³¢B
+ HibernateÍJVM̸xɧÀ³êAvbgtH[ÉæÁÄÍ10bPÊŵ©³mÅÈ¢©àµêܹñB
+ </para>
+
+ <para>
+ PÈgetterÍO[ogNXi·Èí¿ÁèÌGeBeBARNVALbV
ÌæÈÇÉçêÈ¢j
+ ÉANZX·é½ßÉg¢Ü·BÁèÌGeBeBARNVALbV
ÌæÌgNXÍA
+ »êç̼OâANGÌHQLASQL\»ÉæÁÄANZX·é±ÆªoÜ·B³çÉÚµ¢îñÍA
+ <literal>Statistics</literal> A <literal>EntityStatistics</literal> A <literal>CollectionStatistics</literal>
+ A <literal>SecondLevelCacheStatistics</literal> A <literal>QueryStatistics</literal> APIÌjavadocð
+ QƵľ³¢BȺÌR[hÍÈPÈáÅ·B
+ </para>
+
+ <programlisting><![CDATA[Statistics stats = HibernateUtil.sessionFactory.getStatistics();
+
+double queryCacheHitCount = stats.getQueryCacheHitCount();
+double queryCacheMissCount = stats.getQueryCacheMissCount();
+double queryCacheHitRatio =
+ queryCacheHitCount / (queryCacheHitCount + queryCacheMissCount);
+
+log.info("Query Hit ratio:" + queryCacheHitRatio);
+
+EntityStatistics entityStats =
+ stats.getEntityStatistics( Cat.class.getName() );
+long changes =
+ entityStats.getInsertCount()
+ + entityStats.getUpdateCount()
+ + entityStats.getDeleteCount();
+log.info(Cat.class.getName() + " changed " + changes + "times" );]]></programlisting>
+
+ <para>
+ ·×ÄÌGeBeBARNVANGALbV
ÌæÉεÄs¤êÍA
+ <literal>getQueries()</literal> A <literal>getEntityNames()</literal>A
+ <literal>getCollectionRoleNames()</literal> A <literal>getSecondLevelCacheRegionNames()</literal> \bhÅ
+ »ê¼ê̼OÌXgðæ¾·é±ÆªoÜ·B
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+</chapter>
\ No newline at end of file
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/persistent_classes.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/persistent_classes.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/persistent_classes.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/persistent_classes.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,539 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="persistent-classes" revision="2">
+ <title>i±NX</title>
+
+ <para>
+ i±NXÍrWlXãÌâèÌGeBeBiá¦ÎAER}[XAvP[VÌÚqâ¶j
+ ðÀ·éAvP[VÌNXÅ·B
+ i±NXÌ·×ÄÌCX^Xªi±óÔÅ éÆ©È³êéí¯ÅÍ èܹñB
+ CX^XÍtÉêIitransientjÅ Á½èAª£óÔidetachedjÅ Á½è·é©àµêܹñB
+ </para>
+
+ <para>
+ Plain Old Java Object (POJO)vO~OfƵÄàmçêé
+ ¢Â©ÌPÈ[É]¤ÈçAHibernateÍÅàæ«Ü·B
+ µ©µ±êçÌ[Íïµ¢àÌÅÍ èܹñB
+ ÀÛHibernate3Íi±IuWFNgÌ«¿ÉÙÆñǽÌOñàu¢Ä¢Ü¹ñB
+ hCfͼÌû@Å\»·é±ÆàūܷB
+ á¦Î <literal>Map</literal> CX^XÌc[ðg¤û@ª èÜ·B
+ </para>
+
+ <sect1 id="persistent-classes-pojo">
+ <title>PÈPOJOÌá</title>
+
+ <para>
+ ÙÆñÇÌJavaAvP[VÉÍlRÈÌ®¨ð\»·éi±NXªKvÅ·B
+ </para>
+
+ <programlisting><![CDATA[package eg;
+import java.util.Set;
+import java.util.Date;
+
+public class Cat {
+ private Long id; // identifier
+
+ private Date birthdate;
+ private Color color;
+ private char sex;
+ private float weight;
+ private int litterId;
+
+ private Cat mother;
+ private Set kittens = new HashSet();
+
+ private void setId(Long id) {
+ this.id=id;
+ }
+ public Long getId() {
+ return id;
+ }
+
+ void setBirthdate(Date date) {
+ birthdate = date;
+ }
+ public Date getBirthdate() {
+ return birthdate;
+ }
+
+ void setWeight(float weight) {
+ this.weight = weight;
+ }
+ public float getWeight() {
+ return weight;
+ }
+
+ public Color getColor() {
+ return color;
+ }
+ void setColor(Color color) {
+ this.color = color;
+ }
+
+ void setSex(char sex) {
+ this.sex=sex;
+ }
+ public char getSex() {
+ return sex;
+ }
+
+ void setLitterId(int id) {
+ this.litterId = id;
+ }
+ public int getLitterId() {
+ return litterId;
+ }
+
+ void setMother(Cat mother) {
+ this.mother = mother;
+ }
+ public Cat getMother() {
+ return mother;
+ }
+ void setKittens(Set kittens) {
+ this.kittens = kittens;
+ }
+ public Set getKittens() {
+ return kittens;
+ }
+
+ // addKitten not needed by Hibernate
+ public void addKitten(Cat kitten) {
+ kitten.setMother(this);
+ kitten.setLitterId( kittens.size() );
+ kittens.add(kitten);
+ }
+}]]></programlisting>
+
+ <para>
+ ]¤×«4ÂÌ[ª èÜ·F
+ </para>
+
+ <sect2 id="persistent-classes-pojo-constructor" revision="1">
+ <title>øÌÈ¢RXgN^ðÀ·é</title>
+
+ <para>
+ <literal>Cat</literal> ÉÍøÌÈ¢RXgN^ª èÜ·B
+ Hibernateª <literal>Constructor.newInstance()</literal> ðgÁÄi±NXÌ
+ CX^X»ðs¦éæ¤ÉA·×ÄÌi±NXÉÍftHgRXgN^
+ ipublicÅÈÄà\¢Ü¹ñjªÈ¯êÎÈèܹñB
+ HibernateÌÀsvLV¶¬Ì½ßÉAÈÆà <emphasis>package</emphasis>
+ Ì«ðÂftHgRXgN^ð¨©ßµÜ·B
+ </para>
+ </sect2>
+
+ <sect2 id="persistent-classes-pojo-identifier" revision="2">
+ <title>¯ÊqvpeBðpÓ·éiIvVj</title>
+
+ <para>
+ <literal>Cat</literal> ÉÍ <literal>id</literal> Æ¢¤vpeBª èÜ·B
+ ±ÌvpeBÍf[^x[Xe[uÌåL[JÖ}bsO³êÜ·B
+ ±ÌvpeB̼OͽÅà\¢Ü¹ñµA^ÍÇÌæ¤Èv~eBu^ÅàA
+ v~eBuÌubp[v^ÅàA<literal>java.lang.String</literal> â
+ <literal>java.util.Date</literal> Åà\¢Ü¹ñB
+ iàµKV[f[^x[Xe[uª¡L[ðÂÈçÎA
+ ¡q×½æ¤È^ÌvpeBðÂ[Uè`ÌNXðg¤±Æ³¦Â\Å·B
+ ãÅ¡¯ÊqÌßð©Ä¾³¢Bj
+ </para>
+
+ <para>
+ ¯ÊqvpeB͵§ÉÍIvVÅ·B
+ ±êðȪµÄAHibernateÉàIÉIuWFNg̯ÊqðÇÕ³¹é±ÆÍÂ\Å·B
+ µ©µ¨··ß͵ܹñB
+ </para>
+
+ <para>
+ ÀÛÉA¯ÊqvpeBðé¾·éNX¾¯ªpÂ\È@\ª¢Â© èÜ·F
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ ª£IuWFNgÌA½IÈÄÇÁiJXP[hXVâJXP[h}[WjB
+ <xref linkend="objectstate-transitive"/> ðQƵľ³¢B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Session.saveOrUpdate()</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Session.merge()</literal>
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ i±NXÉÍAêѵ½¼O̯ÊqvpeBðè`·é±Æð¨©ßµÜ·B
+ ³çÉnulllðæêé(ÂÜèv~eBuÅÍÈ¢)^ðgÁ½ûªæ¢Åµå¤B
+ </para>
+ </sect2>
+
+ <sect2 id="persistent-classes-pojo-final">
+ <title>finalNXɵȢiIvVj</title>
+ <para>
+ HibernateÌSIÈÁ¥Å é <emphasis>vLV</emphasis> ÍA
+ i±NXªfinalÅÈ¢±ÆAܽÍ\bhðSpublicÅ龵Ģé
+ C^[tFCXªÀ³êÄ¢é©É˶µÄ¢Ü·B
+ </para>
+ <para>
+ HibernateÅC^[tFCXðÀµÄ¢È¢ <literal>final</literal> NXði±»·é±ÆÍūܷªA
+ xÖAtFb`ÉεÄvLVðg¤±ÆÍÅ«ÈÈèÜ·B
+ ±êÍptH[}X`
[jOÖÌIðð·ß鱯ÉÈèÜ·B
+ </para>
+ <para>
+ finalÅÍÈ¢NXÅ <literal>public final</literal> \bhðè`·é±Æàð¯é׫ŷB
+ <literal>public final</literal> \bhðÂNXðg¢½¯êÎA
+ <literal>lazy="false"</literal> ÆÝèµÄ¾¦IÉvLVð³øÉµÈ¯êÎÈèܹñB
+ </para>
+ </sect2>
+
+ <sect2 id="persistent-classes-pojo-accessors" revision="2">
+ <title>i±tB[hÉηéANZTÆ~
[e[^ðè`·éiIvVj</title>
+
+ <para>
+ <literal>Cat</literal> ÅÍ·×ÄÌi±tB[hÉεÄANZT\bhðè`µÄ¢Ü·B
+ ¼Ì½ÌORMc[ÍAi±CX^XÏð¼Úi±»µÜ·B
+ ½¿Í[ViXL[}ÆNXÌà\¢ðª£·éûªÇ¢ÆM¶Ä¢Ü·B
+ ftHgÅÍAHibernateÍJavaBeanX^CÌvpeBði±»µA
+ <literal>getFoo</literal>, <literal>isFoo</literal>, <literal>setFoo</literal>
+ `®Ì\bh¼ðF¯µÜ·B
+ µ©µKvÈçAÁèÌvpeBÉεÄA¼ÚÌtB[hANZXÉØè֦鱯ÍÂ\Å·B
+ </para>
+
+ <para>
+ vpeBÍpublicÅé¾·éKvÍ <emphasis> èܹñ</emphasis> B
+ HibernateÍftHgA<literal>protected</literal> àµÍ <literal>private</literal>
+ Ìget / setÌyAðÂvpeBði±»·é±ÆªÅ«Ü·B
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="persistent-classes-inheritance">
+ <title>p³ÌÀ</title>
+
+ <para>
+ TuNXà1ÔÚÆ2ÔÚÌ[ðççȯêÎÈèܹñB
+ TuNXÍX[p[NX <literal>Cat</literal> ©ç¯ÊqvpeBðp³µÜ·B
+ </para>
+
+ <programlisting><![CDATA[package eg;
+
+public class DomesticCat extends Cat {
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+ protected void setName(String name) {
+ this.name=name;
+ }
+}]]></programlisting>
+ </sect1>
+
+ <sect1 id="persistent-classes-equalshashcode" revision="1">
+ <title><literal>equals()</literal> Æ <literal>hashCode()</literal> ÌÀ</title>
+
+ <para>
+ ȺÌðÌêA
+ <literal>equals()</literal> Æ <literal>hashCode()</literal> \bhðI[o[ChµÈ¯êÎÈèܹñA
+ </para>
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ i±NXÌCX^Xð <literal>Set</literal> ÉuêB
+ i±êͽlÌÖAð\»·é¨··ßÌû@Å·j
+ <emphasis>»µÄ¯É</emphasis>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ª£CX^XðZbVÖÄÇÁ·éêB
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ HibernateÍAi±IDif[^x[XÌsjÆAÁèÌZbVXR[vàÉ
+ ÀèÅ·ªJavaIDƪ¿Å 鱯ðÛØµÜ·B
+ Å·©çÙÈéZbVÅõµ½CX^XðgÝí¹éêA
+ <literal>Set</literal> ÉÓ¡Ì éZ}eBNXð½¹æ¤ÆvÁÄ¢éÈç
+ ·®É<literal>equals()</literal> Æ <literal>hashCode()</literal>
+ ðÀµÈ¯êÎÈèܹñB
+ </para>
+
+ <para>
+ Åà¾Èû@ÍA¼ûÌIuWFNg̯ÊqÌlÌärÉæÁÄ <literal>equals()</literal>Æ
+ <literal>hashCode()</literal> ðÀ·éû@Å·B
+ lª¯¶ÈçA¼ÒÍf[^x[X̯¶sÅȯêÎÈçÈ¢½ßµÈèÜ·B
+ i¼Òª <literal>Set</literal> ÉÇÁ³êÄàA
+ <literal>Set</literal> ÉÍ1ÂÌvfµ©È¢±ÆÉÈèÜ·j
+ cOȱÆÉA¶¬³ê½¯ÊqÉͱÌAv[`ðg¤±ÆªÅ«Ü¹ñB
+ HibernateÍi±»³ê½IuWFNgÖ¯ÊqÌlðãü·é¾¯Å èA
+ Vµì¬³ê½CX^XÍÇÌæ¤È¯ÊqÌlàÁĢܹñB
+ ³çÉACX^XªZ[u³êĨç¸A»Ý <literal>Set</literal> ÌÉ êÎA
+ Z[u·éÆIuWFNgÖ¯ÊqÌlðãü·é±ÆÉÈèÜ·B
+ ൠ<literal>equals()</literal> Æ <literal>hashCode()</literal> ª¯ÊqÌlÉîâĢéÈçA
+ nbV
R[hªÏX³êéÆ <literal>Set</literal> ÌKñªjçêÜ·B
+ ±ÌâèÉ¢ÄÌ®SÈc_ÍAHibernateÌEFuTCgð©Ä¾³¢B
+ ±êÍHibernateÌâèÅÍÈAIuWFNgÌ¯ê«Æ¿«É¢ÄÌA
+ ÊíÌJavaÌZ}eBNXŠ鱯Éӵľ³¢B
+ </para>
+
+ <para>
+ <emphasis>rWlXL[Ì¿«</emphasis> ðgÁÄA
+ <literal>equals()</literal> Æ <literal>hashCode()</literal> ðÀ·é±Æð¨©ßµÜ·B
+ rWlXL[Ì¿«ÆÍA<literal>equals()</literal> \bhªArWlXL[A
+ ÂÜè»ÀÌ¢Eɨ¢ÄCX^XðÁè·éL[i<emphasis>©R</emphasis> óâL[j
+ ð`¬·évpeB¾¯ðär·é±ÆðÓ¡µÜ·B
+ </para>
+
+ <programlisting><![CDATA[public class Cat {
+
+ ...
+ public boolean equals(Object other) {
+ if (this == other) return true;
+ if ( !(other instanceof Cat) ) return false;
+
+ final Cat cat = (Cat) other;
+
+ if ( !cat.getLitterId().equals( getLitterId() ) ) return false;
+ if ( !cat.getMother().equals( getMother() ) ) return false;
+
+ return true;
+ }
+
+ public int hashCode() {
+ int result;
+ result = getMother().hashCode();
+ result = 29 * result + getLitterId();
+ return result;
+ }
+
+}]]></programlisting>
+
+ <para>
+ rWlXL[Íf[^x[XÌåL[óâÙÇÀèÅ éKvÍÈ¢±ÆÉӵľ³¢
+ i<xref linkend="transactions-basics-identity"/> ð©Ä¾³¢jB
+ XVsÂÈvpeBâj[NÈvpeBÍAÊírWlXL[Ìæ¢óâÅ·B
+ </para>
+
+ </sect1>
+
+ <sect1 id="persistent-classes-dynamicmodels">
+ <title>®If</title>
+
+ <para>
+ <emphasis>ȺÌ@\Í»ÝÀ±iKÉ éÆ©È³êĨèA
+ ߢ«ÏX³êéÂ\«ª 鱯Éӵľ³¢B</emphasis>
+ </para>
+
+ <para>
+ i±GeBeBÍAK¸µàÀsÉPOJONXâJavaBeanIuWFNgÅ\»·éKvÍ èܹñB
+ HibernateÍiÀsÉ <literal>Map</literal> Ì <literal>Map</literal> ðg¤j®IfÆA
+ DOM4Jc[ƵÄÌGeBeBÌ\»àT|[gµÜ·B
+ ±ÌAv[`ðg¤Æi±NXð©¸A}bsOt@C¾¯ð±ÆÉÈèÜ·B
+ </para>
+
+ <para>
+ ftHgÅÍAHibernateÍÊíÌPOJO[hÅ®ìµÜ·B
+ <literal>default_entity_mode</literal> ÝèIvVðgÁÄA
+ ÁèÌ <literal>SessionFactory</literal> ÉηéftHgÌGeBeB\»[hðÝè·é±ÆªÅ«Ü·
+ i<xref linkend="configuration-optional-properties"/> ð©Ä¾³¢jB
+ </para>
+
+ <para>
+ ȺÌáÅÍ <literal>Map</literal> ðgÁ½\»ðÐîµÜ·B
+ ܸ}bsOt@CÅANX¼ÌãíèÉiܽͻêÉÁ¦Äj
+ <literal>entity-name</literal> ðè`µÈ¯êÎÈèܹñF
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class entity-name="Customer">
+
+ <id name="id"
+ type="long"
+ column="ID">
+ <generator class="sequence"/>
+ </id>
+
+ <property name="name"
+ column="NAME"
+ type="string"/>
+
+ <property name="address"
+ column="ADDRESS"
+ type="string"/>
+
+ <many-to-one name="organization"
+ column="ORGANIZATION_ID"
+ class="Organization"/>
+
+ <bag name="orders"
+ inverse="true"
+ lazy="false"
+ cascade="all">
+ <key column="CUSTOMER_ID"/>
+ <one-to-many class="Order"/>
+ </bag>
+
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ ÖAª^[QbgÌNX¼ðgÁÄè`µÄ¢½ÆµÄàA
+ ÖAÌ^[Qbg^àPOJOÅÍÈ®IÈGeBeBÅà\íÈ¢±ÆÉӵľ³¢B
+ </para>
+
+ <para>
+ <literal>SessionFactory</literal> ÉεÄftHgÌGeBeB[hð
+ <literal>dynamic-map</literal> ÉÝèµ½ãA
+ ÀsÉ <literal>Map</literal> Ì <literal>Map</literal> ðg¤±ÆªÅ«Ü·F
+ </para>
+
+ <programlisting><![CDATA[Session s = openSession();
+Transaction tx = s.beginTransaction();
+Session s = openSession();
+
+// Create a customer
+Map david = new HashMap();
+david.put("name", "David");
+
+// Create an organization
+Map foobar = new HashMap();
+foobar.put("name", "Foobar Inc.");
+
+// Link both
+david.put("organization", foobar);
+
+// Save both
+s.save("Customer", david);
+s.save("Organization", foobar);
+
+tx.commit();
+s.close();]]></programlisting>
+
+ <para>
+ ®IÈ}bsOÌ_ÍAGeBeBNXÌÀðKvƵȢ½ßA
+ vg^CsOÉv·é^[AEh^Cª¢Æ¢¤±ÆÅ·B
+ µ©µRpCÌ^`FbNªÈ¢ÌÅAÀsÉñíɽÌáOðµíȯêÎÈçȢŵå¤B
+ Hibernate}bsǪ©°ÅAf[^x[XXL[}ÍeÕɳK»Å«ASÉÈèA
+ ãÅKØÈhCfÌÀðÇÁ·é±ÆªÂ\ÉÈèÜ·B
+ </para>
+
+ <para>
+ GeBeB\»[hÍ <literal>Session</literal> ²ÆÉÝè·é±ÆàÂ\Å·B
+ </para>
+
+ <programlisting><![CDATA[Session dynamicSession = pojoSession.getSession(EntityMode.MAP);
+
+// Create a customer
+Map david = new HashMap();
+david.put("name", "David");
+dynamicSession.save("Customer", david);
+...
+dynamicSession.flush();
+dynamicSession.close()
+...
+// Continue on pojoSession
+]]></programlisting>
+
+
+ <para>
+ <literal>EntityMode</literal> ðgÁ½ <literal>getSession()</literal>
+ ÌÄÑoµÍ <literal>SessionFactory</literal> ÅÍÈ <literal>Session</literal>
+ APIÉ é±ÆÉӵľ³¢B
+ »Ìû@ÅÍAVµ¢ <literal>Session</literal> ÍAx[XÆÈéJDBCRlNVA
+ gUNVA»Ì¼ÌReLXgîñð¤LµÜ·B
+ ±êÍ2ÔÚÌ <literal>Session</literal> ÅÍ <literal>flush()</literal> Æ <literal>close()</literal>
+ ðÄÔKvªÈ¢Æ¢¤±ÆA»Ì½ßgUNVÆRlNVÌÇð
+ 1ÔÚÌìÆPÊ(Unit of Work)ÉC¹é±ÆªÅ«éÆ¢¤±ÆÅ·B
+ </para>
+
+ <para>
+ XML\»Ì\ÍÉ¢Ä̳çÈéîñÍ <xref linkend="xml"/> ũ©èÜ·B
+ </para>
+
+ </sect1>
+
+ <sect1 id="persistent-classes-tuplizers" revision="1">
+ <title>Tuplizer</title>
+
+ <para>
+ <literal>org.hibernate.tuple.Tuplizer</literal> Æ»ÌTuC^[tFCXÍA
+ \»Ì <literal>org.hibernate.EntityMode</literal> ðpµÄA
+ f[^fÐÌ é\»ÌÇÉÓCð¿Ü·B
+ ^¦çê½f[^fÐðf[^\¢ÆµÄl¦éÈçATuplizerÍ»Ìæ¤Èf[^\¢ð
+ ÇÌæ¤É쬷é©ðmèA»Ìæ¤Èf[^\¢©çÇÌæ¤ÉlðoµA
+ ü·é©ðmÁĢܷB
+ á¦ÎPOJOGeBeB[hÅÍAηéTuplizerÍRXgN^ðʵÄA
+ POJOðÇÌæ¤É쬷é©Aè`³ê½vpeBANZTðg¢A
+ POJOvpeBÉÇÌæ¤ÉANZX·é©ðmèÜ·B
+ TuplizerÉÍñÂÌnCxÌ^ª èÜ·B
+ »êçÍA<literal>org.hibernate.tuple.EntityTuplizer</literal> Æ
+ <literal>org.hibernate.tuple.ComponentTuplizer</literal> C^[tFCXÅ\»³êÜ·B
+ <literal>EntityTuplizer</literal> ÍãÅq×½æ¤ÈGeBeBÉÖ·é_ñÌÇÉÓCð¿Ü·B
+ êûA<literal>ComponentTuplizer</literal> ÍR|[lgÉÖ·é_ñÌÇÉÓCð¿Ü·B
+ </para>
+
+ <para>
+ [UÍÆ©ÌTuplizerÉ·µÖ¦é±ÆàÂ\Å·B
+ ¨»çdynamic-map entity-modeÌÛÉ <literal>java.util.HashMap</literal> ðg¤ÌÅÍÈA
+ <literal>java.util.Map</literal> ÌÀªKvŵå¤B
+ àµÍA¨»çftHgÌàÌÅÍÈAÊÌvLV¶¬íªÌè`ªKvŵå¤B
+ ¼ÒÆàAJX^ÌTuplizerÀðè`·é±ÆÅB¬³êÜ·B
+ TuplizerÌè`ÍAÇµæ¤Æ·éGeBeBâR|[lgÌ}bsOÉÑt¯çêÜ·B
+ ÚqGeBeBÌáÉßéÆF
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+ <class entity-name="Customer">
+ <!--
+ Override the dynamic-map entity-mode
+ tuplizer for the customer entity
+ -->
+ <tuplizer entity-mode="dynamic-map"
+ class="CustomMapTuplizerImpl"/>
+
+ <id name="id" type="long" column="ID">
+ <generator class="sequence"/>
+ </id>
+
+ <!-- other properties -->
+ ...
+ </class>
+</hibernate-mapping>
+
+
+public class CustomMapTuplizerImpl
+ extends org.hibernate.tuple.entity.DynamicMapEntityTuplizer {
+ // override the buildInstantiator() method to plug in our custom map...
+ protected final Instantiator buildInstantiator(
+ org.hibernate.mapping.PersistentClass mappingInfo) {
+ return new CustomMapInstantiator( mappingInfo );
+ }
+
+ private static final class CustomMapInstantiator
+ extends org.hibernate.tuple.DynamicMapInstantitor {
+ // override the generateMap() method to return our custom map...
+ protected final Map generateMap() {
+ return new CustomMap();
+ }
+ }
+}]]></programlisting>
+
+
+ </sect1>
+
+ <para>
+ TODO: vpeBÆvLVpbP[WÌ[Ug£t[[Nð¶»·é±Æ
+ </para>
+
+</chapter>
+
+
Added: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/preface.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/preface.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/preface.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
+ <preface id="preface" revision="2">
+ <title>O«</title>
+
+ <para>
+ ¡úÌéÆÂ«É¨¢ÄAIuWFNgwü\tgEFAÆ[Vif[^x[XÉÖíéìÆÍ
+ ÏGÅcåÈÔðKvƵܷB
+ HibernateÍJava«ÌIuWFNg/[Vi}bsOc[Å·B
+ IuWFNg/[Vi}bsOiORMjÆÍA
+ IuWFNgf©çSQLx[XXL[}Ì[Vif[^fÖÆA
+ f[^\»ð}bsO·éiÎt¯éjZp̱ÆÅ·B
+ </para>
+
+ <para>
+ HibernateÍJavaNX©çf[^x[Xe[uÖi»µÄJavaf[^^©çSQLf[^^Öj
+ Ì}bsOð·é¾¯ÅÍÈAf[^ÌNGƳÌdgÝàñµÜ·B
+ ±Ì¨©°ÅSQLÆJDBCðgÁ½èìÆÅÌf[^Éïâ³êÄ¢½JÔðåÉí¸Å«Ü·B
+ </para>
+
+ <para>
+ HibernateÌÅIÚWÍAf[^Ìi±»ÉÖíéêÊIÈvO~OìÆÌ95©çJÒððú·é±ÆÅ·B
+ HibernateÍrWlXWbNÌÀÉXgAhvV[Wðg¤
+ f[^SAvP[VÉεÄÌxXg\
[VÅ éɯÜèܹñB
+ IuWFNgwühCfÆJavax[XÌÔwÅÌrWlXWbNÉεÄÅàðɧ¿Ü·B
+ µ©µHibernateÍx_ÅLÌSQLR[hðí¸Ü½ÍJvZ»µ½èA
+ \`®©çIuWFNgÌOtÖÆUgZbgðÏ··éÈÇÌA
+ êÊIÈ^XNÉàð§Âŵå¤B
+ </para>
+
+ <para>
+ HibernateâIuWFNg/[Vi}bsOA
+ ³çÉÍJavaªßÄÌûÍAȺÌXebvÉ]Áľ³¢F
+ </para>
+
+ <orderedlist>
+ <listitem>
+ <para>
+ <xref linkend="tutorial"/> ðÇñž³¢B
+ iKIÉðàµÄ¢«Ü·B
+ `
[gAÌ\[XR[hÍfBXgr
[VÌ
+ <literal>doc/reference/tutorial</literal> fBNgÉÜÜêĢܷB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="architecture"/> ðÇñÅAHibernateªpÂ\È«ððµÄ¾³¢B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ HibernatefBXgr
[VÌ <literal>eg/</literal> fBNgð©Ä¾³¢B
+ ÈPÈX^hA[ÌAvP[Vª èÜ·B
+ JDBChCoð <literal>lib/</literal> fBNgÉRs[µÄA
+ ©ªÌf[^x[Xɤ³µ¢lðwè·éæ¤É <literal>etc/hibernate.properties</literal>
+ ðÒWµÄ¾³¢B
+ fBXgr
[VfBNg©çAR}hvvgÅ
+ <literal>ant eg</literal> Æ^CvµÄ¾³¢iAntðg¢Ü·jB
+ ܽWindows«ÅÍ <literal>build eg</literal> Æ^CvµÄ¾³¢B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ±Ìt@XhL
gðæêÌîñ¹ÆµÄpµÄ¾³¢B
+ AvP[VÝvÉ¢Ä̳çÈéîñâiKIÈ`
[gAðTµÄ¢éÈçA
+ <emphasis>Java Persistence with Hibernate</emphasis>ihttp://www.manning.com/bauer2j
+ 𨷷ߵܷB
+ ܽhttp://caveatemptor.hibernate.org©ç
+ Java Persistence with HibernateÌáèÌAvP[Vð_E[hūܷB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ FAQÍHibernateEFuTCgÉ èÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ T[hp[eBÌfAáA`
[gAÍHibernateEFuTCgÉNª èÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ HibernateEFuTCgÌR~
jeBGAÍAfUCp^[â³Ü´ÜÈ\
[V
+ iTomcat, JBoss AS, Struts, EJB, jÉ¢ÄÌæ¢îñ¹Å·B
+ </para>
+ </listitem>
+ </orderedlist>
+
+ <para>
+ ¿âª êÎHibernateEFuTCgÌ[UtH[ðpµÄ¾³¢B
+ ܽoO|[gÆtB[`NGXg̽ßJIRAÛèÇÕVXeðpӵĢܷB
+ HibernateÌJÉ»¡ª êÎAJÒ[OXgÉQÁµÄ¾³¢B
+ ±ÌhL
gð ȽÌ̾tÉ|óµ½¢êÍA
+ JÒ[OXgŽ¿ÉR^NgðæÁľ³¢B
+ </para>
+
+ <para>
+ ¤pJÌT|[gA»iÌT|[gAHibernateÌg[jOÍJBoss Inc.ªñµÄ¢Ü·
+ ihttp://www.hibernate.org/SupportTraining/ð©Ä¾³¢jB
+ HibernateÍProfessional Open SourcevWFNgA
+ »µÄJBoss Enterprise Middleware SystemiJEMSjv_NgXC[gÌNeBJR|[lgÅ·B
+ </para>
+<!--
+ <sect1 id="preface-s1" revision="-1">
+
+ <title>ú{êóÉ¢Ä</title>
+
+ <para id="preface-s1-p1" revision="-1">
+ ±Ìú{êÅHibernate Reference DocumentiȺAú{êÅjÍA
+ HibernatevWFNgÌ|óvZXÉîâÄ쬳êĢܷB
+ ú{êÅÈçÑÉ´¶ÍLGPLCZXɶܷB
+ </para>
+
+ <para id="preface-s1-p2" revision="-1">
+ ú{êÅÌpÉæÁÄæOÒªíé çäésvÉεÄA
+ ´ÒA|óÒÈçÑÉ»ÌgDÍêØÌÛØð¢½µ©ËÜ·B
+ ú{êÅÍëèðÜÞÂ\«ª 鱯ðF¯µ½ãŲp¾³¢B
+ àe̳mÈÓ¡ðc¬·é½ßÉÍA´¶ðÇÞ±Æð¨··ßµÜ·B
+ ܽAàµú{êÅÉëèð©Â¯çê½êÍA|óÒɲA¢½¾¯êÎK¢Å·B
+ ½¾µàeÉÖµĄ̈â¢í¹ÉͶ©ËÜ·ÌÅA²¹³¾³¢B
+ </para>
+
+ <sect2 id="preface-s1-1" revision="-1">
+
+ <title>ú{êÅ|óÒÉ¢Ä</title>
+
+ <para id="preface-s1-1-p4" revision="-1">
+ ú{êÅo[W3.2 cr3Ì|óÍ®ïÐGNT
+ i<ulink url="http://www.exa-corp.co.jp">z[y[Wͱ¿ç</ulink>j
+ ÌȺÌo[Ås¢Üµ½B
+ {ÔÍi6,18,19,21,22,23ÍSjA
+ LËTîiO«,2,5,13,14,24,25ÍSjA
+ s³li7,8,9,10ÍSjA
+ ß{Gji12,16,17ÍSjA
+ äÖm¶i1,3,11ÍSjA
+ Ñc_ii4,15ÍSjA
+ ½Ôêi20ÍSjA
+ X´ñir
[SjB
+ Ȩëó̲wEÍ{ÔALËÜŨ袢½µÜ·B
+
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="images/mailaddr.gif" format="GIF" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="../shared/images/mailaddr.gif" format="GIF" align="center"/>
+ </imageobject>
+ </mediaobject>
+
+ </para>
+ </sect2>
+ </sect1>
+-->
+ </preface>
\ No newline at end of file
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_criteria.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/query_criteria.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_criteria.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_criteria.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,448 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="querycriteria">
+ <title>CriteriaNG</title>
+
+ <para>
+ HibernateÉÍA¼´IÅg£Â\ÈcriteriaNGAPIªpÓ³êĢܷB
+ </para>
+
+ <sect1 id="querycriteria-creating">
+ <title> <literal>Criteria</literal> CX^XÌì¬</title>
+
+ <para>
+ <literal>org.hibernate.Criteria</literal>
+ C^[tFCXÍÁèÌi±«NXÉηéNGð\»µÜ·B
+ <literal>Session</literal> Í <literal>Criteria</literal> CX^XÌt@NgÅ·B
+ </para>
+
+ <programlisting><![CDATA[Criteria crit = sess.createCriteria(Cat.class);
+crit.setMaxResults(50);
+List cats = crit.list();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="querycriteria-narrowing">
+ <title>UgZbgÌiÝ</title>
+
+ <para>
+ <literal>org.hibernate.criterion.Criterion</literal> C^[tFCXÌCX^XÍA
+ ÂÊÌNGNCeIiâ¢í¹Ì»èîjð\µÜ·B
+ <literal>org.hibernate.criterion.Restrictions</literal>
+ NXÍA égÝÝÌ <literal>Criterion</literal>
+ ^ðæ¾·é½ßÌt@Ng\bhðÁĢܷB
+ </para>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .add( Restrictions.like("name", "Fritz%") )
+ .add( Restrictions.between("weight", minWeight, maxWeight) )
+ .list();]]></programlisting>
+
+ <para>
+ RestrictioniÀèjÍA_IÉO[v»Å«Ü·B
+ </para>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .add( Restrictions.like("name", "Fritz%") )
+ .add( Restrictions.or(
+ Restrictions.eq( "age", new Integer(0) ),
+ Restrictions.isNull("age")
+ ) )
+ .list();]]></programlisting>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .add( Restrictions.in( "name", new String[] { "Fritz", "Izi", "Pk" } ) )
+ .add( Restrictions.disjunction()
+ .add( Restrictions.isNull("age") )
+ .add( Restrictions.eq("age", new Integer(0) ) )
+ .add( Restrictions.eq("age", new Integer(1) ) )
+ .add( Restrictions.eq("age", new Integer(2) ) )
+ ) )
+ .list();]]></programlisting>
+
+ <para>
+ ³X éCriterion^i<literal>Restrictions</literal> ÌTuNXj
+ Í©ÈèÌÍÍÉyÑÜ·ªAÁÉLpÈÌÍSQLð¼ÚwèÅ«éàÌÅ·B
+ </para>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .add( Restrictions.sqlRestriction("lower({alias}.name) like lower(?)", "Fritz%", Hibernate.STRING) )
+ .list();]]></programlisting>
+
+ <para>
+ <literal>{alias}</literal> Æ¢¤v[Xz_ÍA
+ â¢í¹ðó¯½GeBeBÌsÌÊ¼ÉæÁÄu«·¦çêÜ·B
+ </para>
+
+ <para>
+ criterionð¾éÊÌèiÍA
+ <literal>Property</literal> CX^X©çæ¾·é±ÆÅ·B
+ <literal>Property.forName()</literal> ðÄÑoµÄA
+ <literal>Property</literal> CX^Xðì¬Å«Ü·B
+ </para>
+
+ <programlisting><![CDATA[
+Property age = Property.forName("age");
+List cats = sess.createCriteria(Cat.class)
+ .add( Restrictions.disjunction()
+ .add( age.isNull() )
+ .add( age.eq( new Integer(0) ) )
+ .add( age.eq( new Integer(1) ) )
+ .add( age.eq( new Integer(2) ) )
+ ) )
+ .add( Property.forName("name").in( new String[] { "Fritz", "Izi", "Pk" } ) )
+ .list();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="querycriteria-ordering">
+ <title>ÊÌ®ñ</title>
+
+ <para>
+ <literal>org.hibernate.criterion.Order</literal>
+ ðgÁÄÊðÀÑ֦鱯ªÅ«Ü·B
+ </para>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .add( Restrictions.like("name", "F%")
+ .addOrder( Order.asc("name") )
+ .addOrder( Order.desc("age") )
+ .setMaxResults(50)
+ .list();]]></programlisting>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .add( Property.forName("name").like("F%") )
+ .addOrder( Property.forName("name").asc() )
+ .addOrder( Property.forName("age").desc() )
+ .setMaxResults(50)
+ .list();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="querycriteria-associations" revision="2">
+ <title>ÖA</title>
+
+ <para>
+ <literal>createCriteria()</literal> ðg¢AÖAðirQ[g·é±ÆÅA
+ eÕÉÖW·éGeBeBɧñðwèūܷB
+ </para>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .add( Restrictions.like("name", "F%") )
+ .createCriteria("kittens")
+ .add( Restrictions.like("name", "F%") )
+ .list();]]></programlisting>
+
+ <para>
+ 2ÔÚÌ <literal>createCriteria()</literal> ÍA<literal>kittens</literal>
+ RNVÌvfðQÆ·éVµ¢ <literal>Criteria</literal>
+ CX^XðÔ·±ÆÉӵľ³¢B
+ </para>
+
+ <para>
+ ÈºÌæ¤Èû@àAóµÉæèLpÅ·B
+ </para>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .createAlias("kittens", "kt")
+ .createAlias("mate", "mt")
+ .add( Restrictions.eqProperty("kt.name", "mt.name") )
+ .list();]]></programlisting>
+
+ <para>
+ i<literal>createAlias()</literal> ÍVµ¢
+ <literal>Criteria</literal> CX^Xð쬵ܹñBj
+ </para>
+
+ <para>
+ OÌ2ÂÌNGÉæÁÄÔ³êé <literal>Cat</literal>
+ CX^XÉæÁÄÛ³êékittensRNVÍA
+ criteriaÉæÁÄOÉtB^O <emphasis>³êÈ¢</emphasis>
+ ±ÆÉӵľ³¢B
+ àµcriteriaÉK·ékittenðæ¾µ½¢ÈçA
+ <literal>ResultTransformer</literal> ðgíȯêÎÈèܹñB
+ </para>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .createCriteria("kittens", "kt")
+ .add( Restrictions.eq("name", "F%") )
+ .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)
+ .list();
+Iterator iter = cats.iterator();
+while ( iter.hasNext() ) {
+ Map map = (Map) iter.next();
+ Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);
+ Cat kitten = (Cat) map.get("kt");
+}]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="querycriteria-dynamicfetching" revision="1">
+ <title>ÖAÌ®ItFb`</title>
+
+ <para>
+ <literal>setFetchMode()</literal> ðg¢A
+ ÀsÉÖA̳û@ðwèµÄàæ¢Å·B
+ </para>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .add( Restrictions.like("name", "Fritz%") )
+ .setFetchMode("mate", FetchMode.EAGER)
+ .setFetchMode("kittens", FetchMode.EAGER)
+ .list();]]></programlisting>
+
+ <para>
+ ±ÌNGÍOÉæè <literal>mate</literal> Æ
+ <literal>kittens</literal> ̼ûðtFb`µÜ·B
+ æè½ÌîñÍ <xref linkend="performance-fetching"/> ðQƵľ³¢B
+ </para>
+
+ </sect1>
+
+ <sect1 id="querycriteria-examples">
+ <title>NGÌá</title>
+
+ <para>
+ <literal>org.hibernate.criterion.Example</literal> NXÍA
+ ^¦çê½CX^X©çNGNCeIð\zūܷB
+ </para>
+
+ <programlisting><![CDATA[Cat cat = new Cat();
+cat.setSex('F');
+cat.setColor(Color.BLACK);
+List results = session.createCriteria(Cat.class)
+ .add( Example.create(cat) )
+ .list();]]></programlisting>
+
+ <para>
+ o[WvpeBA¯ÊqAÖAͳ³êÜ·B
+ ftHgÅÍnulllÌvpeBÍO³êÜ·B
+ </para>
+
+ <para>
+ ÇÌæ¤É <literal>Example</literal> ðKp·é©
+ ²®·é±ÆªÅ«Ü·B
+ </para>
+
+ <programlisting><![CDATA[Example example = Example.create(cat)
+ .excludeZeroes() //exclude zero valued properties
+ .excludeProperty("color") //exclude the property named "color"
+ .ignoreCase() //perform case insensitive string comparisons
+ .enableLike(); //use like for string comparisons
+List results = session.createCriteria(Cat.class)
+ .add(example)
+ .list();]]></programlisting>
+
+ <para>
+ ÖAIuWFNgÉcriteriaðwè·é½ßÉAExampleðg¤±ÆàÂ\Å·B
+ </para>
+
+ <programlisting><![CDATA[List results = session.createCriteria(Cat.class)
+ .add( Example.create(cat) )
+ .createCriteria("mate")
+ .add( Example.create( cat.getMate() ) )
+ .list();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="querycriteria-projection">
+ <title>ËeAWñAO[v»</title>
+ <para>
+ <literal>org.hibernate.criterion.Projections</literal> NXÍ
+ <literal>Projection</literal> CX^XÌt@NgÅ·B
+ <literal>setProjection()</literal> ðÄÑo·±ÆÅA
+ NGÉËeðKpµÜ·B
+ </para>
+
+ <programlisting><![CDATA[List results = session.createCriteria(Cat.class)
+ .setProjection( Projections.rowCount() )
+ .add( Restrictions.eq("color", Color.BLACK) )
+ .list();]]></programlisting>
+
+ <programlisting><![CDATA[List results = session.createCriteria(Cat.class)
+ .setProjection( Projections.projectionList()
+ .add( Projections.rowCount() )
+ .add( Projections.avg("weight") )
+ .add( Projections.max("weight") )
+ .add( Projections.groupProperty("color") )
+ )
+ .list();]]></programlisting>
+
+ <para>
+ KvÅ ÁÄàAcriteriaNGÉugroup byv𾦷éKvÍ èܹñB
+ éíÌProjection^Í <emphasis>O[v»Ëe</emphasis> ƵÄè`³êA
+ SQLÌ <literal>group by</literal> ßÉà»êÜ·B
+ </para>
+
+ <para>
+ CÓÅËeÉʼðt¯çêé½ßAËe³êélÍrestrictionâorderingà©çQÆÅ«Ü·B
+ ʼð¯éQÂÌÙÈéû@ð¦µÜ·B
+ </para>
+
+ <programlisting><![CDATA[List results = session.createCriteria(Cat.class)
+ .setProjection( Projections.alias( Projections.groupProperty("color"), "colr" ) )
+ .addOrder( Order.asc("colr") )
+ .list();]]></programlisting>
+
+ <programlisting><![CDATA[List results = session.createCriteria(Cat.class)
+ .setProjection( Projections.groupProperty("color").as("colr") )
+ .addOrder( Order.asc("colr") )
+ .list();]]></programlisting>
+
+ <para>
+ <literal>alias()</literal> Æ <literal>as()</literal> \bhÍA
+ ProjectionCX^XðÊ̼OÌ <literal>Projection</literal> CX^XÅ
+ bv·é¾¯Å·B
+ V[gJbgƵÄAËeðËeXgÉÇÁ·éÛÉAʼð¯çêÜ·B
+ </para>
+
+ <programlisting><![CDATA[List results = session.createCriteria(Cat.class)
+ .setProjection( Projections.projectionList()
+ .add( Projections.rowCount(), "catCountByColor" )
+ .add( Projections.avg("weight"), "avgWeight" )
+ .add( Projections.max("weight"), "maxWeight" )
+ .add( Projections.groupProperty("color"), "color" )
+ )
+ .addOrder( Order.desc("catCountByColor") )
+ .addOrder( Order.desc("avgWeight") )
+ .list();]]></programlisting>
+
+ <programlisting><![CDATA[List results = session.createCriteria(Domestic.class, "cat")
+ .createAlias("kittens", "kit")
+ .setProjection( Projections.projectionList()
+ .add( Projections.property("cat.name"), "catName" )
+ .add( Projections.property("kit.name"), "kitName" )
+ )
+ .addOrder( Order.asc("catName") )
+ .addOrder( Order.asc("kitName") )
+ .list();]]></programlisting>
+
+ <para>
+ ËeÌ®É <literal>Property.forName()</literal> àgpūܷB
+ </para>
+
+ <programlisting><![CDATA[List results = session.createCriteria(Cat.class)
+ .setProjection( Property.forName("name") )
+ .add( Property.forName("color").eq(Color.BLACK) )
+ .list();]]></programlisting>
+
+ <programlisting><![CDATA[List results = session.createCriteria(Cat.class)
+ .setProjection( Projections.projectionList()
+ .add( Projections.rowCount().as("catCountByColor") )
+ .add( Property.forName("weight").avg().as("avgWeight") )
+ .add( Property.forName("weight").max().as("maxWeight") )
+ .add( Property.forName("color").group().as("color" )
+ )
+ .addOrder( Order.desc("catCountByColor") )
+ .addOrder( Order.desc("avgWeight") )
+ .list();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="querycriteria-detachedqueries">
+ <title>NG¨æÑTuNG̪£</title>
+ <para>
+ <literal>DetachedCriteria</literal> NXÉæèA
+ ZbVXR[vOÉNGðì¬Å«Ü·B
+ ãÅACÓÌ <literal>Session</literal> ðgÁÄAÀsūܷB
+ </para>
+
+ <programlisting><![CDATA[DetachedCriteria query = DetachedCriteria.forClass(Cat.class)
+ .add( Property.forName("sex").eq('F') );
+
+Session session = ....;
+Transaction txn = session.beginTransaction();
+List results = query.getExecutableCriteria(session).setMaxResults(100).list();
+txn.commit();
+session.close();]]></programlisting>
+
+ <para>
+ <literal>DetachedCriteria</literal> ÍATuNGð\»·é½ßÉàg¦Ü·B
+ TuNGðº¤CriterionCX^XÍA
+ <literal>Subqueries</literal> àµÍ <literal>Property</literal> ©ç¾çêÜ·B
+ </para>
+
+ <programlisting><![CDATA[DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)
+ .setProjection( Property.forName("weight").avg() );
+session.createCriteria(Cat.class)
+ .add( Property.forName("weight").gt(avgWeight) )
+ .list();]]></programlisting>
+
+ <programlisting><![CDATA[DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)
+ .setProjection( Property.forName("weight") );
+session.createCriteria(Cat.class)
+ .add( Subqueries.geAll("weight", weights) )
+ .list();]]></programlisting>
+
+ <para>
+ ÝÖWª éTuNGų¦àÂ\Å·B
+ </para>
+
+ <programlisting><![CDATA[DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat.class, "cat2")
+ .setProjection( Property.forName("weight").avg() )
+ .add( Property.forName("cat2.sex").eqProperty("cat.sex") );
+session.createCriteria(Cat.class, "cat")
+ .add( Property.forName("weight").gt(avgWeightForSex) )
+ .list();]]></programlisting>
+
+ </sect1>
+
+ <!--TODO: ResultSetTransformer + aliasing. AliasToBeanTransformer allow returning arbitrary
+ user objects - similar to setResultClass in JDO2. General use of ResultTransformer
+ could also be explained. -->
+
+ <sect1 id="query-criteria-naturalid">
+ <title>©R¯ÊqÉæéNG</title>
+
+ <para>
+ criteriaNGðÜÞ½¢Ä¢ÌNGÉÆÁÄA
+ NGLbV
Í Üèø¦ªæÈ¢Å·B
+ ȺÈçANGLbV
ªpÉɳøÉÈé½ßÅ·B
+ µ©µÈªçALbV
ð³øÉ·éASYðÅK»Å«é
+ ÁÊÈNGÌíÞªP èÜ·B
+ XV³êÈ¢©RL[ÉæéõÅ·B
+ ¢Â©ÌAvP[VÅÍA±ÌíÞÌNGªpÉÉ»êÜ·B
+ ±Ìæ¤Ègíêû̽ßÉAcriteria APIÍÁÊÈÎôðñµÜ·B
+ </para>
+
+ <para>
+ ÅÉA<literal><natural-id></literal> ðgÁÄA
+ GeBeBÌ©RL[ð}bvµÄ¾³¢B
+ »µÄAñLbV
ðLøÉµÜ·B
+ </para>
+
+ <programlisting><![CDATA[<class name="User">
+ <cache usage="read-write"/>
+ <id name="id">
+ <generator class="increment"/>
+ </id>
+ <natural-id>
+ <property name="name"/>
+ <property name="org"/>
+ </natural-id>
+ <property name="password"/>
+</class>]]></programlisting>
+
+ <para>
+ ÓF <emphasis>ÏX³êé</emphasis> ©RL[ðÂGeBeBÉ
+ ±Ì@\ðg¤ÌÍAÓ}³êĢȢg¢ûÅ·B
+ </para>
+
+ <para>
+ ÉAHibernateNGLbV
ðLøÉµÜ·B
+ </para>
+
+ <para>
+ ±êÅA<literal>Restrictions.naturalId()</literal> ÉæèA
+ æèø¦IÈLbV
ASYðgpūܷB
+ </para>
+
+ <programlisting><![CDATA[session.createCriteria(User.class)
+ .add( Restrictions.naturalId()
+ .set("name", "gavin")
+ .set("org", "hb")
+ ).setCacheable(true)
+ .uniqueResult();]]></programlisting>
+
+ </sect1>
+
+</chapter>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_hql.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/query_hql.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_hql.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_hql.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,1131 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="queryhql">
+ <title>HQL: The Hibernate Query Language</title>
+
+ <para>
+ HibernateÍSQLÉñíÉæ½(Ó}Iɹ½)ÍÈâ¢í¹¾êðõ¦Ä¢Ü·B
+ µ©µSQLɽ\¶Éfí³êȢž³¢BHQLÍ®SÉIuWFNgwüÅ èA
+ p³A|[tBYAÖAÆ¢Á½TOððµÜ·B
+ </para>
+
+ <sect1 id="queryhql-casesensitivity">
+ <title>å¶Æ¬¶ÌæÊ</title>
+
+ <para>
+ NGÍJavaÌNX¼ÆvpeB¼ð¢Äå¶A¬¶ðæÊµÜ¹ñB
+ ]ÁÄ <literal>SeLeCT</literal> Í
+ <literal>sELEct</literal> Ư¶ÅA©Â
+ <literal>SELECT</literal> Æà¯¶Å·ª
+ <literal>net.sf.hibernate.eg.FOO</literal> Í
+ <literal>net.sf.hibernate.eg.Foo</literal> ÆÍá¢A©Â
+ <literal>foo.barSet</literal> Í
+ <literal>foo.BARSET</literal> Æàá¢Ü·B
+ </para>
+
+ <para>
+ ±Ì}j
AÅͬ¶ÌHQLL[[hðgpµÜ·B
+ å¶ÌL[[hÌNGÌûªÇÝⷢƴ¶é[U[à¢éÆv¢Ü·B
+ Å·ªAJavaR[hàÉßÜê½Æ«ÉÍ©Ãç¢Æv¢Ü·B
+ </para>
+
+ </sect1>
+
+ <sect1 id="queryhql-from">
+ <title>fromß</title>
+
+ <para>
+ àÁÆàPÈHibernateNGÍÌ`®Å·B
+ </para>
+
+ <programlisting><![CDATA[from eg.Cat]]></programlisting>
+
+ <para>
+ ±êÍPÉ@<literal>eg.Cat</literal>@NXÌCX^Xð·×ÄԵܷB
+ K¸µàNX¼ðCü·éiNXÉpbP[W¼ðt¯éjKvÍ èܹñB
+ Æ¢¤ÌàA<literal>auto-import</literal> ªftHgÉÈÁÄ¢é©çÅ·B
+ »Ì½ßÙÆñÇÌêA±Ìæ¤É¾¯Å\ªÅ·B
+ </para>
+
+ <programlisting><![CDATA[from Cat]]></programlisting>
+
+ <para>
+ ÙÆñÇÌêNGÌ٩̪Å@<literal>Cat</literal>@ðQÆ·éÌÅAʼðèÄéKvª éŵå¤B
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat]]></programlisting>
+
+ <para>
+ ±ÌNGÅÍ <literal>Cat</literal> CX^XÉ <literal>cat</literal>
+ Æ¢¤Ê¼ðt¯Ä¢Ü·B
+ »Ì½ßAãűÌNGàÅA±Ìʼðg¤±ÆªÅ«Ü·B
+ <literal>as</literal> L[[hÍIvVÅ·BÂÜè±Ìæ¤É±ÆàūܷF
+ </para>
+
+ <programlisting><![CDATA[from Cat cat]]></programlisting>
+
+ <para>
+ ¼ÏA é¢ÍNXÉæÁĽÌNXªo»·é±Æà èÜ·B
+ </para>
+
+ <programlisting><![CDATA[from Formula, Parameter]]></programlisting>
+ <programlisting><![CDATA[from Formula as form, Parameter as param]]></programlisting>
+
+ <para>
+ [JÏÌJavaÌl[~OîÆêvµ½A
+ ª¶É¬¶ðgÁ½NGÌʼðt¯é±ÆÍ¢¢KµÅ·(á¦Î <literal>domesticCat</literal> )B
+ </para>
+
+ </sect1>
+
+ <sect1 id="queryhql-joins" revision="2">
+ <title>ÖAÆ</title>
+
+ <para>
+ ÖA·éGeBeB é¢ÍlRNVÌvfÉàA<literal></literal> ðgÁÄʼðèÄ鱯ªoÜ·B
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat
+ inner join cat.mate as mate
+ left outer join cat.kittens as kitten]]></programlisting>
+
+ <programlisting><![CDATA[from Cat as cat left join cat.mate.kittens as kittens]]></programlisting>
+
+ <programlisting><![CDATA[from Formula form full join form.parameter param]]></programlisting>
+
+ <para>
+ T|[gµÄ¢éÌ^CvÍANSI SQLƯ¶Å·B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>inner join</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>left outer join</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>right outer join</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>full join</literal> (½¢Ä¢Ìêg¢Ãç¢)
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ <literal>inner join</literal>A<literal>left outer join</literal>A<literal>right outer join</literal>ÉÍȪ`ðg¤±ÆàūܷB
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat
+ join cat.mate as mate
+ left join cat.kittens as kitten]]></programlisting>
+
+ <para>
+ HQLÌ <literal>with</literal> L[[hðg¤ÆAððt¯Á¦é±ÆªÅ«Ü·B
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat
+ left join cat.kittens as kitten
+ with kitten.bodyWeight > 10.0]]></programlisting>
+
+ <para>
+ Á¦ÄAutFb`vÍÖAâlÌRNVðeIuWFNgÆêÉ1xÌselectåÅú»µÜ·B
+ ±êÍÁÉRNVÌêÉLpÅ·B±êÍÀ¿ãAÖAÆRNVÉηé}bsOè`t@CÌOÆlazyú»Ìè`ðã«·é±ÆÉÈèÜ·B
+
+ <xref linkend="performance-fetching"/> Éæè½Ìîñª èÜ·B
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat
+ inner join fetch cat.mate
+ left join fetch cat.kittens]]></programlisting>
+
+ <para>
+ ÉæétFb`ÍÖA·éIuWFNgª <literal>where</literal> ß(ܽͼÌÇñÈßÅà)
+ ÅgíêÄÍÈçÈ¢ÌÅAÊíʼðèÄéKvª èܹñBܽÖAIuWFNgÍâ¢í¹ÊƵÄ
+ ¼ÚÔ³êܹñBãíèÉeIuWFNgðʵÄANZXūܷB
+ RNVðÄAIÉtFb`·éêÌÝAʼªKvÉÈèÜ·B
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat
+ inner join fetch cat.mate
+ left join fetch cat.kittens child
+ left join fetch child.kittens]]></programlisting>
+
+ <para>
+ <literal>fetch</literal> \¶Í <literal>iterate()</literal>
+ ðgÁ½NGÄÑoµÅgpūȢ±ÆÉӵľ³¢
+ iêûÅ <literal>scroll()</literal> ÍgpūܷjB
+
+ ܽA±êçÌìÍÊÌsÉîâĢé½ßA
+ <literal>fetch</literal> Í <literal>setMaxResults()</literal> â <literal>setFirstResult()</literal>
+ ÆêÉgp·×«ÅÍ èܹñB
+ ÊíeagerÈRNVtFb`ð·éÆd¡ªoĵܤ½ßA ȽªúÒ·éæ¤ÈsÉÍÈçÈ¢ÌÅ·B
+
+ »µÄܽ <literal>fetch</literal> ÍAAhzbNÈ <literal>with</literal> ðð
+ êÉg¤±ÆàūܹñB
+ êÂÌNGÅ¡ÌRNVðtFb`·é±ÆÉæè¼Ïðì¬Å«éÌÅA±Ìêӵľ³¢B
+ ܽA¡ÌRNVÉηétFb`Íbag}bsOÉεÄ\ú¹ÊÊðà½ç·±Æª éÌÅA
+ ±ÌêÌNGÌì¬ÉÍӵľ³¢B
+ ÅãÉ <literal>SOÉæétFb`</literal> Æ
+ <literal>EOÉæétFb`</literal> ÍLpÅÍÈ¢±ÆÉӵľ³¢B
+ </para>
+
+ <para>
+ àµvpeBxÌxtFb`ðg¤êiàIÉoCgR[hð·éêjA
+ <literal>fetch all properties</literal> ðg¤±ÆÅ
+ HibernateÉxvpeBð¬â©ÉiÅÌNGÅjtFb`³¹é±ÆªÅ«Ü·B
+ </para>
+
+ <programlisting><![CDATA[from Document fetch all properties order by name]]></programlisting>
+ <programlisting><![CDATA[from Document doc fetch all properties where lower(doc.name) like '%cats%']]></programlisting>
+
+ </sect1>
+
+ <sect1 id="queryhql-joins-forms">
+ <title>\¶Ì`®</title>
+
+ <para>
+ HQLÍQÂÌÖA`®ðT|[gµÜ·F<literal>ÃÙI</literal> Æ <literal>¾¦I</literal>B
+ </para>
+
+ <para>
+ ±êÜÅÌZNVŨ©¹µ½g¢ûÍ·×Ä <literal>¾¦IÈ</literal> `®ÅA
+ fromßž¦IÉjoinL[[hðgÁĢܷB
+ ±Ì`®ð¨··ßµÜ·B
+ </para>
+
+ <para>
+ <literal>ÃÙI</literal> tH[ÍAjoinL[[hðg¢Ü¹ñBãíèÉAQÆ·éÖAÉ
+ hbg\Lðg¢Ü·B<literal>ÃÙI</literal> ÍA³Ü´ÜÈHQLÉoīܷB
+ <literal>ÃÙI</literal> ÌÊÍASQLXe[ggÌàÊÅ·B
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat where cat.mate.name like '%s%']]></programlisting>
+ </sect1>
+
+ <sect1 id="queryhql-select">
+ <title>Selectß</title>
+
+ <para>
+ <literal>select</literal> ßÍÈºÌæ¤ÉÇÌIuWFNgÆ®«ðNGUgZbgÉÔ·©ðIðµÜ·B:
+ </para>
+
+ <programlisting><![CDATA[select mate
+from Cat as cat
+ inner join cat.mate as mate]]></programlisting>
+
+ <para>
+ ãLÌNGÍ¼Ì <literal>Cat</literal> Ì <literal>mate</literal> ðIðµÜ·B
+ ÀÛÉÍÌæ¤ÉAæèÈÉ\»Å«Ü·B:
+ </para>
+
+ <programlisting><![CDATA[select cat.mate from Cat cat]]></programlisting>
+
+ <para>
+ NGÍR|[lg^ÌvpeBðÜÞA çäél^ÌvpeBàԹܷB:
+ </para>
+
+ <programlisting><![CDATA[select cat.name from DomesticCat cat
+where cat.name like 'fri%']]></programlisting>
+
+ <programlisting><![CDATA[select cust.name.firstName from Customer as cust]]></programlisting>
+
+ <para>
+ NGÍ¡ÌIuWFNgÆ(ܽÍ)vpeBð <literal>Object[]</literal> ^ÌzñƵÄԹܷB
+ </para>
+
+ <programlisting><![CDATA[select mother, offspr, mate.name
+from DomesticCat as mother
+ inner join mother.mate as mate
+ left outer join mother.kittens as offspr]]></programlisting>
+
+ <para>
+ àµÍ <literal>List</literal> ƵÄA
+ </para>
+
+ <programlisting><![CDATA[select new list(mother, offspr, mate.name)
+from DomesticCat as mother
+ inner join mother.mate as mate
+ left outer join mother.kittens as offspr]]></programlisting>
+
+ <para>
+ ܽÍA^CvZ[tÈJavaIuWFNgðԹܷB
+ </para>
+
+ <programlisting><![CDATA[select new Family(mother, mate, offspr)
+from DomesticCat as mother
+ join mother.mate as mate
+ left join mother.kittens as offspr]]></programlisting>
+
+ <para>
+ é¢Í <literal>Family</literal> NXªKØÈRXgN^ðÁĢ鯷éÈçÎA
+ </para>
+
+ <para>
+ selectßÉ <literal>as</literal> ðgÁÄʼðÂ¯é±ÆàūܷB
+ </para>
+
+ <programlisting><![CDATA[select max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n
+from Cat cat]]></programlisting>
+
+ <para>
+ <literal>select new map</literal> ÆêÉg¤Æ«ÉÅàð§¿Ü·F
+ </para>
+
+ <programlisting><![CDATA[select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n )
+from Cat cat]]></programlisting>
+
+ <para>
+ ±ÌNGÍʼ©çselectµ½lÖ <literal>Map</literal> ðԵܷB
+ </para>
+
+ </sect1>
+
+ <sect1 id="queryhql-aggregation">
+ <title>WñÖ</title>
+
+ <para>
+ HQLÌNGÍvpeBÌWñÖÌÊàԹܷF
+ </para>
+
+ <programlisting><![CDATA[select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat)
+from Cat cat]]></programlisting>
+
+<!-- NO LONGER SUPPORTED
+ <para>
+ Collections may also appear inside aggregate functions in the <literal>select</literal>
+ clause.
+ </para>
+
+ <programlisting><![CDATA[select cat, count( elements(cat.kittens) )
+from Cat cat group by cat]]></programlisting>
+-->
+
+ <para>
+ T|[gµÄ¢éWñÖÍȺÌàÌÅ·B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>avg(...), sum(...), min(...), max(...)</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>count(*)</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>count(...), count(distinct ...), count(all...)</literal>
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ selectßɨ¢ÄZpìAAƳF³ê½SQLÖðg¤±ÆªÅ«Ü·B
+ </para>
+
+ <programlisting><![CDATA[select cat.weight + sum(kitten.weight)
+from Cat cat
+ join cat.kittens kitten
+group by cat.id, cat.weight]]></programlisting>
+
+ <programlisting><![CDATA[select firstName||' '||initial||' '||upper(lastName) from Person]]></programlisting>
+
+ <para>
+ SQLƯ¶Ó¡ð <literal>distinct</literal> Æ <literal>all</literal> L[[hðg¤±ÆªÅ«Ü·B
+ </para>
+
+ <programlisting><![CDATA[select distinct cat.name from Cat cat
+
+select count(distinct cat.name), count(cat) from Cat cat]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="queryhql-polymorphism">
+ <title>|[tBbNÈNG</title>
+
+ <para>
+ Ìæ¤ÈNGF
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat]]></programlisting>
+
+ <para>
+ <literal>Cat</literal> CX^X¾¯ÅÍÈA<literal>DomesticCat</literal>
+ Ìæ¤ÈTuNXàÔ³êÜ·BHibernateNGÍ <emphasis>ÇñÈ</emphasis>
+ JavaNXâC^[tFCXà <literal>from</literal> ßÉüê鱯ªÅ«Ü·B
+ NGÍ»ÌNXðg£µ½AàµÍC^[tFCXðÀµ½SÄÌi±NXðԵܷB
+ ÌNGÍi±IuWFNgð·×ÄԵܷ:
+ </para>
+
+ <programlisting><![CDATA[from java.lang.Object o]]></programlisting>
+
+ <para>
+ <literal>Named</literal> C^[tFCXÍlXÈi±NXÉæÁÄÀ³êÜ·B:
+ </para>
+
+ <programlisting><![CDATA[from Named n, Named m where n.name = m.name]]></programlisting>
+
+ <para>
+ ÅãÌñÂÌNGÍAñÂÈãÌSQL <literal>SELECT</literal> ðvµÄ¢é±ÆÉӵľ³¢B
+ ±Ì±ÆÍ <literal>order by</literal> ߪUgZbgSÌð³mÉÍ®ñµÈ¢±ÆðÓ¡µÜ·
+ (³çÉ»êÍA<literal>Query.scroll()</literal> ðgpµÄ±êçÌNGðÄԱƪūȢ±ÆðÓ¡µÜ·B)B
+ </para>
+
+ </sect1>
+
+ <sect1 id="queryhql-where">
+ <title>whereß</title>
+
+ <para>
+ <literal>where</literal> ßÍÔ³êéCX^XÌXgði鱯ªÅ«Ü·B
+ àµÊ¼ªÈ¢êA¼OÅvpeBðQƵܷB
+ </para>
+
+ <programlisting><![CDATA[from Cat where name='Fritz']]></programlisting>
+
+ <para>
+ àµÊ¼ª éêACü¼ðgÁľ³¢B
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat where cat.name='Fritz']]></programlisting>
+
+ <para>
+ ¼Oª'Fritz'Æ¢¤ <literal>Cat</literal> ÌCX^XðԵܷB
+ </para>
+
+ <programlisting><![CDATA[select foo
+from Foo foo, Bar bar
+where foo.startDate = bar.date]]></programlisting>
+
+ <para>
+ ãÌHQLÍA<literal>Foo</literal> Ì <literal>startDate</literal> vpeBƵ¢
+ <literal>date</literal> vpeBðÁ½ <literal>bar</literal> CX^Xª¶Ý·éA
+ ·×ÄÌ <literal>Foo</literal> CX^XðԵܷB
+ RpEhpX®iá¦Îucat.mate.namevjÍ <literal>where</literal> ßðñíÉÍɵܷBÚF
+ </para>
+
+ <programlisting><![CDATA[from Cat cat where cat.mate.name is not null]]></programlisting>
+
+ <para>
+ ±ÌNGÍe[uiàjðÂSQLNGÉÏ·³êÜ·B
+ »ÌãíèÉÈºÌæ¤ÉÆA
+ </para>
+
+ <programlisting><![CDATA[from Foo foo
+where foo.bar.baz.customer.address.city is not null]]></programlisting>
+
+ <para>
+ àµãÌNGðLqµ½çNGàÉ4ÂÌe[uðKvÆ·éSQLNGÉÏ·³êÜ·B
+ </para>
+
+ <para>
+ <literal>=</literal> ZqÍÈºÌæ¤ÉAvpeB¾¯ÅÈCX^Xðär·é½ßÉàgíêÜ·BF
+ </para>
+
+ <programlisting><![CDATA[from Cat cat, Cat rival where cat.mate = rival.mate]]></programlisting>
+
+ <programlisting><![CDATA[select cat, mate
+from Cat cat, Cat mate
+where cat.mate = mate]]></programlisting>
+
+ <para>
+ <literal>id</literal> (¬¶)ÍÁÊÈvpeBÅ èA
+ IuWFNgÌj[NȯÊqðQÆ·é½ßÉgpūܷB(³çÉA»ÌvpeB¼ðgpūܷB)
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat where cat.id = 123
+
+from Cat as cat where cat.mate.id = 69]]></programlisting>
+
+ <para>
+ 2ÔÚÌNGÍø¦IÅ·Be[uªKv èܹñI
+ </para>
+
+ <para>
+ ܽ¡¯ÊqÌvpeBàgpūܷB±±Å <literal>Person</literal> ª
+ <literal>country</literal> Æ <literal>medicareNumber</literal> ©çÈ顯ÊqðÂÆ¼èµÜ·B
+ </para>
+
+ <programlisting><![CDATA[from bank.Person person
+where person.id.country = 'AU'
+ and person.id.medicareNumber = 123456]]></programlisting>
+
+ <programlisting><![CDATA[from bank.Account account
+where account.owner.id.country = 'AU'
+ and account.owner.id.medicareNumber = 123456]]></programlisting>
+
+ <para>
+ à¤êx¾¢Ü·ªA2ÔÚÌNGÉÍe[uªKv èܹñB
+ </para>
+
+ <para>
+ ¯lÉ <literal>class</literal> ÍÁÊÈvpeBÅ èA
+ |[tBbNÈi±»É¨¯éCX^XÌdiscriminatorlÉANZXµÜ·B
+ whereßÉßÜê½JavaÌNX¼Í»ÌdiscriminatorlÉÏ·³êÜ·B
+ </para>
+
+ <programlisting><![CDATA[from Cat cat where cat.class = DomesticCat]]></programlisting>
+
+ <para>
+ ܽR|[lgâ¡[U^(ܽ»ÌR|[lgÌR|[lgÈÇ)ÌvpeBàwèūܷB
+
+ µ©µµÄiR|[lgÌvpeBÅÍÈjR|[lg^ÌvpeBÅI¹·épX®ðgíȢž³¢B
+ á¦Îൠ<literal>store.owner</literal> ª <literal>address</literal>
+ R|[lgðÂGeBeBÈçÎÈºÌæ¤ÈÊÆÈèÜ·B
+ </para>
+
+ <programlisting><![CDATA[store.owner.address.city // okay
+store.owner.address // error!]]></programlisting>
+
+ <para>
+ "any"^ÍÁÊÈvpeBÅ é <literal>id</literal> Æ <literal>class</literal> ð¿A
+ ȺÌû@Åð\»·é±ÆðÂ\ɵܷ(<literal>AuditLog.item</literal> Í
+ <literal><any></literal> Å}bsO³ê½vpeBÅ·)B
+ </para>
+
+ <programlisting><![CDATA[from AuditLog log, Payment payment
+where log.item.class = 'Payment' and log.item.id = payment.id]]></programlisting>
+
+ <para>
+ <literal>log.item.class</literal> Æ <literal>payment.class</literal> ª
+ ãLÌNGÅSÙÈéf[^x[XJÌlðQÆ·éÆ¢¤±ÆÉӵľ³¢B
+ </para>
+
+ </sect1>
+
+ <sect1 id="queryhql-expressions">
+ <title>Expressions ®</title>
+
+ <para>
+ SQLÌ <literal>where</literal> ßÅLq·é±Æªoé®ÌÙÆñÇðHQLÅàLqūܷB:
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ ZpZqF<literal>+, -, *, /</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2ärZqF<literal>=, >=, <=, <>, !=, like</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ _ZqF<literal>and, or, not</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ O[vª¯ð\·ÊF<literal>( )</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>in</literal>,
+ <literal>not in</literal>,
+ <literal>between</literal>,
+ <literal>is null</literal>,
+ <literal>is not null</literal>,
+ <literal>is empty</literal>,
+ <literal>is not empty</literal>,
+ <literal>member of</literal> and
+ <literal>not member of</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ "Vv"Ècase <literal>case ... when ... then ... else ... end</literal>A
+ "TõI"Ècase <literal>case when ... then ... else ... end</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ XgOÌA <literal>...||...</literal> Ü½Í <literal>concat(...,...)</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>current_date()</literal>, <literal>current_time()</literal>,
+ <literal>current_timestamp()</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>second(...)</literal>, <literal>minute(...)</literal>,
+ <literal>hour(...)</literal>, <literal>day(...)</literal>,
+ <literal>month(...)</literal>, <literal>year(...)</literal>,
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ EJB-QL 3.0Åè`³êÄ¢éÖâZq: <literal>substring(), trim(),
+ lower(), upper(), length(), locate(), abs(), sqrt(), bit_length()</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>coalesce()</literal> Æ <literal>nullif()</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ âÔÌlðStringÉRo[g·é <literal>str()</literal>j
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ 2ÔÚÌøªHibernate^̼OÅ é <literal>cast(... as ...)</literal> Æ
+ <literal>extract(... from ...)</literal>B
+ ½¾µgp·éf[^x[XªANSI <literal>cast()</literal> Æ <literal>extract()</literal>
+ ðT|[g·éêÉÀèÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ µ½CfbNXt«ÌRNVÌʼÉKp³êéHQLÌ
+ <literal>index()</literal> ÖB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ RNVlÌpX®ðæéHQLÖF <literal>size(), minelement(), maxelement(),
+ minindex(), maxindex()</literal> B
+ <literal>some, all, exists, any, in</literal> ðgÁÄCü·é±ÆªÅ«éÁÊÈ
+ <literal>elements()</literal> Æ <literal>indices</literal> ÖÆêÉg¢Ü·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>sign()</literal>, <literal>trunc()</literal>, <literal>rtrim()</literal>, <literal>sin()</literal>
+ Ìæ¤Èf[^x[XªT|[g·éSQLXJÖB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ JDBCX^CÌÊup[^ <literal>?</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ¼Ot«p[^: <literal>:name</literal>, <literal>:start_date</literal>, <literal>:x1</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ SQLeF<literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E+2</literal>,
+ <literal>'1970-01-01 10:00:01.0'</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ JavaÌ <literal>public static final</literal> èF<literal>eg.Color.TABBY</literal>
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ <literal>in</literal> Æ <literal>between</literal> ÍÈºÌæ¤ÉgpūܷB:
+ </para>
+
+ <programlisting><![CDATA[from DomesticCat cat where cat.name between 'A' and 'B']]></programlisting>
+
+ <programlisting><![CDATA[from DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )]]></programlisting>
+
+ <para>
+ ܽAÛè`ÅLq·é±ÆàūܷB
+ </para>
+
+ <programlisting><![CDATA[from DomesticCat cat where cat.name not between 'A' and 'B']]></programlisting>
+
+ <programlisting><![CDATA[from DomesticCat cat where cat.name not in ( 'Foo', 'Bar', 'Baz' )]]></programlisting>
+
+ <para>
+ ¯lÉ <literal>is null</literal> â <literal>is not null</literal> ÍnulllðeXg·é½ßÉgpūܷB
+ </para>
+
+ <para>
+ HibernateÝèt@CÅHQL query substitutionsðè`·êÎAbooleanlð®ÌÅÈPÉgpÅ«ÜBF
+ </para>
+
+ <programlisting><![CDATA[<property name="hibernate.query.substitutions">true 1, false 0</property>]]></programlisting>
+
+ <para>
+ ±¤·é±ÆÅºLÌHQLðSQLÉÏ··éÆ«É <literal>true</literal> ,
+ <literal>false</literal> L[[hÍ <literal>1</literal> , <literal>0</literal> Éu«·¦çêÜ·B:
+ </para>
+
+ <programlisting><![CDATA[from Cat cat where cat.alive = true]]></programlisting>
+
+ <para>
+ ÁÊÈvpeB <literal>size</literal>AܽÍÁÊÈÖ <literal>size()</literal>
+ ðgÁÄRNVÌTCYðeXgūܷB:
+ </para>
+
+ <programlisting><![CDATA[from Cat cat where cat.kittens.size > 0]]></programlisting>
+
+ <programlisting><![CDATA[from Cat cat where size(cat.kittens) > 0]]></programlisting>
+
+ <para>
+ CfbNXt«ÌRNVÅÍA<literal>minindex</literal> Æ <literal>maxindex</literal>
+ ÖðgÁÄACfbNXÌŬlÆÅålðQÆÅ«Ü·B
+ ¯lÉA<literal>minelement</literal> Æ <literal>maxelement</literal> ðgÁÄA
+ î{^ÌRNVvfÌŬlÆÅålðQÆÅ«Ü·B
+ </para>
+
+ <programlisting><![CDATA[from Calendar cal where maxelement(cal.holidays) > current_date]]></programlisting>
+
+ <programlisting><![CDATA[from Order order where maxindex(order.items) > 100]]></programlisting>
+
+ <programlisting><![CDATA[from Order order where minelement(order.items) > 10000]]></programlisting>
+
+ <para>
+ RNVÌvfâCfbNXÌZbgi<literal>elements</literal> Æ <literal>indices</literal>
+ ÖjAܽÍâ¢í¹iãqjÌʪó¯æê鯫ÍA
+ SQLÖ <literal>any, some, all, exists, in</literal> ªT|[g³êÜ·B
+ </para>
+
+ <programlisting><![CDATA[select mother from Cat as mother, Cat as kit
+where kit in elements(foo.kittens)]]></programlisting>
+
+ <programlisting><![CDATA[select p from NameList list, Person p
+where p.name = some elements(list.names)]]></programlisting>
+
+ <programlisting><![CDATA[from Cat cat where exists elements(cat.kittens)]]></programlisting>
+
+ <programlisting><![CDATA[from Player p where 3 > all elements(p.scores)]]></programlisting>
+
+ <programlisting><![CDATA[from Show show where 'fizard' in indices(show.acts)]]></programlisting>
+
+ <para>
+ <literal>size</literal>, <literal>elements</literal>, <literal>indices</literal>,
+ <literal>minindex</literal>, <literal>maxindex</literal>, <literal>minelement</literal>,
+ <literal>maxelement</literal> ÍHibernate3Ìwhereß¾¯ÅpÂ\Š鱯Éӵľ³¢B
+ </para>
+
+ <para>
+ CfbNXt«ÌRNViarrays, lists, mapsjÌvfÍA
+ CfbNXÅQÆÅ«Ü·iwhereßàÅÌÝjB
+ </para>
+
+ <programlisting><![CDATA[from Order order where order.items[0].id = 1234]]></programlisting>
+
+ <programlisting><![CDATA[select person from Person person, Calendar calendar
+where calendar.holidays['national day'] = person.birthDay
+ and person.nationality.calendar = calendar]]></programlisting>
+
+ <programlisting><![CDATA[select item from Item item, Order order
+where order.items[ order.deliveredItemIndices[0] ] = item and order.id = 11]]></programlisting>
+
+ <programlisting><![CDATA[select item from Item item, Order order
+where order.items[ maxindex(order.items) ] = item and order.id = 11]]></programlisting>
+
+ <para>
+ <literal>[]</literal> àÌ®ÍAZp®Åà\¢Ü¹ñB
+ </para>
+
+ <programlisting><![CDATA[select item from Item item, Order order
+where order.items[ size(order.items) - 1 ] = item]]></programlisting>
+
+ <para>
+ êνÖAâlÌRNVÌvfÉεÄÍAHQLÍgÝÝÌ <literal>index()</literal> ÖàpӵĢܷB
+ </para>
+
+ <programlisting><![CDATA[select item, index(item) from Order order
+ join order.items item
+where index(item) < 5]]></programlisting>
+
+ <para>
+ x[XÆÈéf[^x[XªT|[gµÄ¢éXJ[SQLÖªgpūܷ
+ </para>
+
+ <programlisting><![CDATA[from DomesticCat cat where upper(cat.name) like 'FRI%']]></programlisting>
+
+ <para>
+ àµÜ¾SÄððµÄ¢È¢ÈçAºÌNGðSQLÅÇ꾯·AÇÝÃçoé©l¦Ä¾³¢B:
+
+ </para>
+
+ <programlisting><![CDATA[select cust
+from Product prod,
+ Store store
+ inner join store.customers cust
+where prod.name = 'widget'
+ and store.location.name in ( 'Melbourne', 'Sydney' )
+ and prod = all elements(cust.currentOrder.lineItems)]]></programlisting>
+
+ <para>
+ <emphasis>qg:</emphasis> á¦Î±Ìæ¤ÉoÜ·B
+ </para>
+
+ <programlisting><![CDATA[SELECT cust.name, cust.address, cust.phone, cust.id, cust.current_order
+FROM customers cust,
+ stores store,
+ locations loc,
+ store_customers sc,
+ product prod
+WHERE prod.name = 'widget'
+ AND store.loc_id = loc.id
+ AND loc.name IN ( 'Melbourne', 'Sydney' )
+ AND sc.store_id = store.id
+ AND sc.cust_id = cust.id
+ AND prod.id = ALL(
+ SELECT item.prod_id
+ FROM line_items item, orders o
+ WHERE item.order_id = o.id
+ AND cust.current_order = o.id
+ )]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="queryhql-ordering">
+ <title>order byß</title>
+
+ <para>
+ NGªÔ·listÍAÔ³êéNXâR|[lgÌCÓÌ®«ÉæÁÄÀ×Ö¦çêÜ·BF
+ </para>
+
+ <programlisting><![CDATA[from DomesticCat cat
+order by cat.name asc, cat.weight desc, cat.birthdate]]></programlisting>
+
+ <para>
+ IvVÌ <literal>asc</literal> Æ <literal>desc</literal> Í»ê¼ê¸©~Ì®ñð¦µÜ·B
+ </para>
+ </sect1>
+
+ <sect1 id="queryhql-grouping">
+ <title>group byß</title>
+
+ <para>
+ WñlðÔ·NGÍAÔ³êéNXâR|[lgÌCÓÌvpeBÉæÁÄO[v»Å«Ü·B:
+ </para>
+
+ <programlisting><![CDATA[select cat.color, sum(cat.weight), count(cat)
+from Cat cat
+group by cat.color]]></programlisting>
+
+ <programlisting><![CDATA[select foo.id, avg(name), max(name)
+from Foo foo join foo.names name
+group by foo.id]]></programlisting>
+
+ <para>
+ <literal>having</literal> ßàg¦Ü·B
+ </para>
+
+ <programlisting><![CDATA[select cat.color, sum(cat.weight), count(cat)
+from Cat cat
+group by cat.color
+having cat.color in (eg.Color.TABBY, eg.Color.BLACK)]]></programlisting>
+
+ <para>
+ àµgp·éf[^x[XªT|[gµÄ¢éÈçA
+ <literal>having</literal> Æ <literal>order by</literal> ßÅSQLÖÆWñÖªg¦Ü·
+ iá¦ÎMySQLÉÍ èܹñjB
+ </para>
+
+ <programlisting><![CDATA[select cat
+from Cat cat
+ join cat.kittens kitten
+group by cat
+having avg(kitten.weight) > 100
+order by count(kitten) asc, sum(kitten.weight) desc]]></programlisting>
+
+ <para>
+ <literal>group by</literal> ßâ <literal>order by</literal> ßÉ
+ Zp®ðÜޱƪūȢ±ÆÉӵľ³¢B
+ </para>
+
+ </sect1>
+
+ <sect1 id="queryhql-subqueries" revision="2">
+ <title>â¢í¹</title>
+
+ <para>
+ TuZNgðT|[g·éf[^x[X̽ßAHibernateÍâ¢í¹ðT|[gµÄ¢Ü·B
+ â¢í¹ÍÊÅÍÜȯêÎÈèܹñiSQLÌWñÖÄÑoµÉæéª½¢Å·jB
+ ÖAâ¢í¹(ONGÌʼðQÆ·éâ¢í¹Ì±Æ)³¦Â³êÜ·B
+ </para>
+
+ <programlisting><![CDATA[from Cat as fatcat
+where fatcat.weight > (
+ select avg(cat.weight) from DomesticCat cat
+)]]></programlisting>
+
+ <programlisting><![CDATA[from DomesticCat as cat
+where cat.name = some (
+ select name.nickName from Name as name
+)]]></programlisting>
+
+ <programlisting><![CDATA[from Cat as cat
+where not exists (
+ from Cat as mate where mate.mate = cat
+)]]></programlisting>
+
+ <programlisting><![CDATA[from DomesticCat as cat
+where cat.name not in (
+ select name.nickName from Name as name
+)]]></programlisting>
+
+ <programlisting><![CDATA[select cat.id, (select max(kit.weight) from cat.kitten kit)
+from Cat as cat]]></programlisting>
+
+ <para>
+ HQLâ¢í¹ÍAselectܽÍwhereß¾¯Ågíê鱯Éӵľ³¢B
+ </para>
+
+ <para>
+ selectXgɡ̮ðÂâ¢í¹ÉÍA^vðg¤±ÆªÅ«Ü·B
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat
+where not ( cat.name, cat.color ) in (
+ select cat.name, cat.color from DomesticCat cat
+)]]></programlisting>
+
+ <para>
+ ¢Â©Ìf[^x[XiOracleâHSQLÉÍ èܹñjÅÍA
+ ¼ÌReLXgÅà^vªg¦Ü·B
+ á¦ÎANGR|[lgâ¡[U^ɨ¢ÄÅ·B
+ </para>
+
+ <programlisting><![CDATA[from Person where name = ('Gavin', 'A', 'King')]]></programlisting>
+
+ <para>
+ ¯Å·ªAæèç·ÈNGÅ·F
+ </para>
+
+ <programlisting><![CDATA[from Person where name.first = 'Gavin' and name.initial = 'A' and name.last = 'King')]]></programlisting>
+
+ <para>
+ ±Ìæ¤È±Æðµ½È¢ÌÉÍ2ÂÌRª èÜ·F
+ 1ÂÚÍAf[^x[XvbgtH[ÔÅ®SÈÝ·«ÍÈ¢©çÅ·B
+ 2ÂÚÍANGª}bsOhL
gÌvpeBÌÉ˶·é©çÅ·B
+ </para>
+
+ </sect1>
+
+ <sect1 id="queryhql-examples">
+ <title>HQLÌá</title>
+
+ <para>
+ HibernateNGÍñíÉÍÅ¡GÉūܷBÀÛANG¾êÌÐÍÍHibernateÌåvÈZ[X|CgÌêÂÅ·B
+ ±±ÉÅßÌvWFNgÅgpµ½NGÆñíÉæ½áª èÜ·B
+ ÙÆñÇÌNGͱêçÌáæèÈPÉLqū鱯Éӵľ³¢!
+ </para>
+
+ <para>
+ ȺÌNGÍÁèÌÚqÆ^¦çê½Å¬ÌvlÉη颥¢¶Ì¶IDA
+ ¤iÌA¶ÌvðvlÅ®ñµÄԵܷB
+ ¿iðè·éÛA»ÝÌJ^Oðg¢Ü·BÊÆµÄÔ³êéSQLNGÍ
+ <literal>ORDER</literal>, <literal>ORDER_LINE</literal>, <literal>PRODUCT</literal>,
+ <literal>CATALOG</literal> ¨æÑ <literal>PRICE</literal> e[uÉε4ÂÌàÆ
+ (ÖAµÈ¢)â¢í¹ð¿Ü·B
+ </para>
+
+ <programlisting><![CDATA[select order.id, sum(price.amount), count(item)
+from Order as order
+ join order.lineItems as item
+ join item.product as product,
+ Catalog as catalog
+ join catalog.prices as price
+where order.paid = false
+ and order.customer = :customer
+ and price.product = product
+ and catalog.effectiveDate < sysdate
+ and catalog.effectiveDate >= all (
+ select cat.effectiveDate
+ from Catalog as cat
+ where cat.effectiveDate < sysdate
+ )
+group by order
+having sum(price.amount) > :minAmount
+order by sum(price.amount) desc]]></programlisting>
+
+ <para>
+ ½ÄåÈNGÈÌŵå¤! iÍâ¢í¹ð Üèg¢Ü¹ñBµ½ªÁÄÌNGÍÀÛÉÍÈºÌæ¤ÉÈèÜ·B:
+ </para>
+
+ <programlisting><![CDATA[select order.id, sum(price.amount), count(item)
+from Order as order
+ join order.lineItems as item
+ join item.product as product,
+ Catalog as catalog
+ join catalog.prices as price
+where order.paid = false
+ and order.customer = :customer
+ and price.product = product
+ and catalog = :currentCatalog
+group by order
+having sum(price.amount) > :minAmount
+order by sum(price.amount) desc]]></programlisting>
+
+ <para>
+ ÌNGÍeXe[^XÌx¥¢ð¦Ü·B½¾µ·×ÄÌx¥¢ª»ÝÌpÒÉæé
+ ÅVÌXe[^XÏXÅ é <literal>AWAITING_APPROVAL</literal> Å éêð«Ü·B
+ ±ÌNGÍ2ÂÌàÆ <literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal> ¨æÑ
+ <literal>PAYMENT_STATUS_CHANGE</literal> e[uÉηéÖAâ¢í¹ðõ¦½SQLNGÉÏ·³êÜ·B
+ </para>
+
+ <programlisting><![CDATA[select count(payment), status.name
+from Payment as payment
+ join payment.currentStatus as status
+ join payment.statusChanges as statusChange
+where payment.status.name <> PaymentStatus.AWAITING_APPROVAL
+ or (
+ statusChange.timeStamp = (
+ select max(change.timeStamp)
+ from PaymentStatusChange change
+ where change.payment = payment
+ )
+ and statusChange.user <> :currentUser
+ )
+group by status.name, status.sortOrder
+order by status.sortOrder]]></programlisting>
+
+ <para>
+ ൪setÌãíèÉlistÆµÄ <literal>statusChanges</literal> RNVð
+ }bsOµ½ÈçÎAÍé©ÉÈPÉNGðLqÅ«éŵå¤B
+ </para>
+
+ <programlisting><![CDATA[select count(payment), status.name
+from Payment as payment
+ join payment.currentStatus as status
+where payment.status.name <> PaymentStatus.AWAITING_APPROVAL
+ or payment.statusChanges[ maxIndex(payment.statusChanges) ].user <> :currentUser
+group by status.name, status.sortOrder
+order by status.sortOrder]]></programlisting>
+
+ <para>
+ ÌNGÍ»ÝÌ[Uª®·égDÉηéAJEg¨æÑ¢¥¢Ìx¥¢ð
+ ·×ÄÔ·MS SQL Server
+ Ì <literal>isNull()</literal> ÖðgpµÄ¢Ü·B
+ ±ÌNGÍ3ÂÌàÆ1ÂÌO A
+ »µÄ <literal>ACCOUNT</literal>, <literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal>,
+ <literal>ACCOUNT_TYPE</literal>, <literal>ORGANIZATION</literal> ¨æÑ
+ <literal>ORG_USER</literal> e[uÉηéâ¢í¹Á½SQLÉÏ·³êÜ·B
+ </para>
+
+ <programlisting><![CDATA[select account, payment
+from Account as account
+ left outer join account.payments as payment
+where :currentUser in elements(account.holder.users)
+ and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, PaymentStatus.UNPAID)
+order by account.type.sortOrder, account.accountNumber, payment.dueDate]]></programlisting>
+
+ <para>
+ ¢Â©Ìf[^x[XÉ¢ÄÍA(ÖA³¹çê½)â¢í¹Ìgpðð¯éKvª éŵå¤B
+ </para>
+
+ <programlisting><![CDATA[select account, payment
+from Account as account
+ join account.holder.users as user
+ left outer join account.payments as payment
+where :currentUser = user
+ and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, PaymentStatus.UNPAID)
+order by account.type.sortOrder, account.accountNumber, payment.dueDate]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="queryhql-bulk" revision="2">
+ <title>åÊÌUPDATEÆDELETE</title>
+
+ <para>
+ HQLÍ¡Í <literal>update</literal> Æ <literal>delete</literal>A<literal>insert ... select ...</literal>
+ Xe[ggðHQLÉüê鱯ðT|[gµÄ¢Ü·B
+ <xref linkend="batch-direct"/> ÉÚת èÜ·B
+ </para>
+ </sect1>
+
+ <sect1 id="queryhql-tipstricks">
+ <title>Tips & Tricks</title>
+
+ <para>
+ ÀÛÉÊðÔ³ÈÄàNGÌÊð¦é±ÆªÅ«Ü·B:
+ </para>
+
+ <programlisting><![CDATA[( (Integer) session.createQuery("select count(*) from ....").iterate().next() ).intValue()]]></programlisting>
+
+ <para>
+ RNVÌTCYÉæèÊðÀ×Ö¦é½ßÉÍȺÌNGðgpµÜ·B:
+ </para>
+
+ <programlisting><![CDATA[select usr.id, usr.name
+from User as usr
+ left join usr.messages as msg
+group by usr.id, usr.name
+order by count(msg)]]></programlisting>
+
+ <para>
+ gpµÄ¢éf[^x[XªTuZNgðT|[g·éêANGÌwhereßÅTCYÉæéIðððÝèūܷ:
+ </para>
+
+ <programlisting><![CDATA[from User usr where size(usr.messages) >= 1]]></programlisting>
+
+ <para>
+ gpµÄ¢éf[^x[XªTuZNgðT|[gµÈ¢êÍAÌNGðgpµÄ¾³¢:
+ </para>
+
+ <programlisting><![CDATA[select usr.id, usr.name
+from User usr.name
+ join usr.messages msg
+group by usr.id, usr.name
+having count(msg) >= 1]]></programlisting>
+
+ <para>
+ àðµÄ¢é¹¢ÅãÌð@ªmessage̪
+ [Ì <literal>User</literal> ðÔ·±ÆªÅ«È¢ÈçÎAȺÌ`®ªg¦Ü·B
+ </para>
+
+ <programlisting><![CDATA[select usr.id, usr.name
+from User as usr
+ left join usr.messages as msg
+group by usr.id, usr.name
+having count(msg) = 0]]></programlisting>
+
+ <para>
+ JavaBeanÌvpeBÍA¼Ot«ÌNGp[^ÉÑÂ¯é±ÆªoÜ·BF
+ </para>
+
+ <programlisting><![CDATA[Query q = s.createQuery("from foo Foo as foo where foo.name=:name and foo.size=:size");
+q.setProperties(fooBean); // fooBean has getName() and getSize()
+List foos = q.list();]]></programlisting>
+
+ <para>
+ RNVÍtB^t« <literal>Query</literal> C^[tFCXðgp·é±ÆÅy[WðÂ¯é±ÆªÅ«Ü·B:
+ </para>
+
+ <programlisting><![CDATA[Query q = s.createFilter( collection, "" ); // the trivial filter
+q.setMaxResults(PAGE_SIZE);
+q.setFirstResult(PAGE_SIZE * pageNumber);
+List page = q.list();]]></programlisting>
+
+ <para>
+ RNVÌvfÍNGtB^ðgÁÄAÀ×Ö¦âO[vª¯ªoÜ·B:
+ </para>
+
+ <programlisting><![CDATA[Collection orderedCollection = s.filter( collection, "order by this.amount" );
+Collection counts = s.filter( collection, "select this.type, count(this) group by this.type" );]]></programlisting>
+
+ <para>
+ RNVðú»¹¸ÉRNVÌTCYð¾é±ÆªÅ«Ü·B:
+ </para>
+
+ <programlisting><![CDATA[( (Integer) session.createQuery("select count(*) from ....").iterate().next() ).intValue();]]></programlisting>
+
+ </sect1>
+
+</chapter>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_sql.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/query_sql.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_sql.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_sql.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,724 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="querysql" revision="2">
+ <title>lCeBuSQL</title>
+
+ <para>f[^x[XÌlCeBuSQLû¾ðgÁÄNGð\»·é±ÆàūܷB
+ NGqgâOracleÌ <literal>CONNECT</literal> L[[hÌæ¤ÉA
+ f[^x[XÆ©Ì@\ðpµ½¢Æ«Ég¦Ü·B
+ SQL/JDBCð¼ÚgpµÄ¢éAvP[V©çHibernateÖÌÚsàeÕɵĢܷB</para>
+
+ <para>Hibernate3ÅÍA¶¬AXVAíAÇÝÝÌæ¤È·×ÄÌ
+ SQLiXgAhvV[WðÜÞjðè«Å«Ü·B</para>
+
+ <sect1 id="querysql-creating" revision="4">
+ <title><literal>SQLQuery</literal> Ìgp</title>
+
+ <para>lCeBuÈSQLNGÌÀsÍ <literal>SQLQuery</literal>
+ C^[tFCXðʵħäµÜ·B
+ <literal>SQLQuery</literal> C^[tFCXÍ
+ <literal>Session.createSQLQuery()</literal> ðÄÑoµÄ澵ܷB
+ ±ÌAPIðgÁÄâ¢í¹·éû@ðȺÅྵܷB</para>
+
+ <sect2>
+ <title>XJ[ÌNG</title>
+
+ <para>Åàî{IÈSQLNGÍXJ[iljÌXgð¾é±ÆÅ·B</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM CATS").list();
+sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").list();
+]]></programlisting>
+
+ <para>±êçÍÇ¿çàACATSe[uÌeJÌXJ[lðÜÞ
+ ObjectzñiObject[]jÌXgðԵܷB
+ Ô·XJ[lÌÀÛÌÔÆ^ðè·é½ßÉA
+ HibernateÍResultSetMetadataðgpµÜ·B</para>
+
+ <para><literal>ResultSetMetadata</literal> ðgp·éI[o[wbhðð¯é½ßA
+ àµÍPɽªÔ³ê驾mÉ·é½ßA<literal>addScalar()</literal>
+ ðg¦Ü·B</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM CATS")
+ .addScalar("ID", Hibernate.LONG)
+ .addScalar("NAME", Hibernate.STRING)
+ .addScalar("BIRTHDATE", Hibernate.DATE)
+]]></programlisting>
+
+ <para>±ÌNGÅwè³êÄ¢éàÌðºLɦµÜ·B</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>SQLNG¶ñ</para>
+ </listitem>
+
+ <listitem>
+ <para>Ô³êéJÆ^</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>±êÍܾObjectzñðԵܷªA
+ <literal>ResultSetMetdata</literal> ðgpµÜ¹ñB
+ ½¾µA»ÌãíèÉîbÉ éUgZbg©ç
+ IDANAMEABIRTHDATE Jð»ê¼ê
+ LongAStringAShort Ƶľ¦IÉæ¾µÜ·B
+ ±êÍRÂÌJðÔ·ÌÝŠ鱯àÓ¡µÜ·B
+ ½Æ¦ANGª <literal>*</literal> ðgpµA
+ ñµ½RÂæè½ÌJðÔ¹éÆµÄàÅ·B</para>
+
+ <para>XJ[Ì^îñðȱÆàūܷB</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM CATS")
+ .addScalar("ID", Hibernate.LONG)
+ .addScalar("NAME")
+ .addScalar("BIRTHDATE")
+]]></programlisting>
+
+ <para>
+ ±êÍ{¿IÉOƯ¶NGÅ·ªAA
+ NAME Æ BIRTHDATE Ì^ðßé½ßÉ <literal>ResultSetMetaData</literal>
+ ðgpµÜ·BêûAID Ì^;¦IÉwè³êĢܷB
+ </para>
+
+ <para>
+ ResultSetMetaData ©çÔ³êé java.sql.Types ð Hibernate Ì^É
+ }bsO·é±ÆÍADialect ª§äµÜ·B
+ ¾¦³ê½^ª}bsO³êĢȢ©AÊÌ^ªúÒµ½àÌÆÙÈéêA
+ Dialect Ì <literal>registerHibernateType</literal> ðÄÑoµA
+ JX^}CYūܷB
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>GeBeBÌNG</title>
+
+ <para>±±ÜÅÌNGÍA·×ÄXJ[lðÔ·àÌŵ½B
+ î{IÉAUgZbg©çu¢ÁHvÌlðԵܷB
+ È~ÅÍA<literal>addEntity()</literal> ÉæèAlCeBuSQLNG©ç
+ GeBeBIuWFNgðæ¾·éû@ð¦µÜ·B</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM CATS").addEntity(Cat.class);
+sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").addEntity(Cat.class);
+]]></programlisting>
+
+ <para>±ÌNGÅwè³êÄ¢éàÌðºLɦµÜ·B</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>SQLNG¶ñ</para>
+ </listitem>
+
+ <listitem>
+ <para>NGªÔ·GeBeBÆSQLe[uÌʼ
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>CatªID, NAME, BIRTHDATEÌJðgÁÄNXÉ}bsO³êéêA
+ ãLÌNGÍÇ¿çàAvfªCatGeBeBÅ éXgðԵܷB</para>
+
+ <para>GeBeBðÊÌGeBeBÉ <literal>½Îê</literal> Å}bsOµÄ¢éêÍA
+ lCeBuNGðÀs·éÛÉA±ÌÊÌGeBeBðÔ·±ÆàvµÜ·B
+ ³àȯêÎAf[^x[XÅLÌucolumn not found(Jª©Â©èܹñ)vG[ª¶µÜ·B
+ * \Lðgpµ½ÛÍAÇÁÌJª©®IÉÔ³êÜ·ªA
+ ÌáÌæ¤ÉA<literal>Dog</literal> É <literal>½Îê</literal> Š鱯ð
+ ¾¦·é±Æð½¿ÍDÝÜ·B</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE, DOG_ID FROM CATS").addEntity(Cat.class);
+]]></programlisting>
+
+ <para>±êÉæè cat.getDog() ª³µ@\µÜ·B</para>
+ </sect2>
+
+ <sect2>
+ <title>ÖAÆRNVÌì</title>
+
+ <para>vLVðú»·é½ßÌ]ªÈðð¯é½ßA
+ <literal>Dog</literal> ÌŦūܷB
+ ±êÍ <literal>addJoin()</literal> \bhÉæès¢Ü·B
+ ÖAàµÍRNVÉūܷB
+ </para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT c.ID, NAME, BIRTHDATE, DOG_ID, D_ID, D_NAME FROM CATS c, DOGS d WHERE c.DOG_ID = d.D_ID")
+ .addEntity("cat", Cat.class)
+ .addJoin("cat.dog");
+]]></programlisting>
+
+ <para>±ÌáÌÅAÔ³êé <literal>Cat</literal> ÍA
+ f[^x[XÖÌ]ªÈµÅA
+ ®SÉú»³ê½ <literal>dog</literal> vpeBð¿Ü·B
+ ÎÛÌvpeBÖÌpXðwèū鿤ÉA
+ ʼiucatvjðÇÁµ½±ÆÉӵľ³¢B
+ RNV̦௶æ¤ÉūܷB
+ ½Æ¦ÎA<literal>Cat</literal> ªêνŠ<literal>Dog</literal>
+ ðÁÄ¢½êAÌæ¤ÉÈèÜ·B</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE, D_ID, D_NAME, CAT_ID FROM CATS c, DOGS d WHERE c.ID = d.CAT_ID")
+ .addEntity("cat", Cat.class)
+ .addJoin("cat.dogs");
+]]></programlisting>
+
+ <para>»ÝÌÆ±ëA
+ HibernateÅg¢â··é½ßÌSQLNGÌg£ÈµÉA
+ lCeBuNGŽ©ðÂ\É·éÀEÉĢܷB
+ ¯¶^ÌGeBeBð¡Ô·ÛâAftHgÌʼâñ¼Å\ªÅÍÈ¢êÉA
+ âèÍN±ènßÜ·B
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>¡GeBeBÌæ¾</title>
+
+ <para>±±ÜÅÍAUgZbgÌJ¼ÍA
+ }bsOt@CÅwè³ê½J¼Æ¯¶Å 鯼èµÄ¢Üµ½B
+ ¡Ìe[uª¯¶J¼ðÂêª é½ßA
+ ¡e[uð·éSQLNGÅâèÆÈéêª èÜ·B</para>
+
+ <para>ºLÌæ¤Èi¸sµ»¤ÈjNGÅÍA
+ JʼCWFNVicolumn alias injectionjªKvÅ·B</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT c.*, m.* FROM CATS c, CATS m WHERE c.MOTHER_ID = m.ID")
+ .addEntity("cat", Cat.class)
+ .addEntity("mother", Cat.class)
+]]></programlisting>
+
+ <para>±ÌNGÌÓ}ÍA
+ Ps²ÆÉQÂÌCatCX^XAÂÜèLÆ»ÌêeðÔ·Æ¢¤±ÆÅ·B
+ ¯¶J¼É}bsO·é±ÆÉæè¼OªÕË·é½ßA±ÌNG͸sµÜ·B
+ x[^x[XÉæÁÄÍAÔ³êéJÌʼª "c.ID"A"c.NAME" ÈÇÌ`®Å èA
+ }bsOÅwè³ê½Ji"ID" Æ "NAME"jƵȢ½ßA¸sµÜ·B</para>
+
+
+ <para>ºLÌ`®ÍAJ¼ªd¡µÄàåävÅ·B</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT {cat.*}, {mother.*} FROM CATS c, CATS m WHERE c.MOTHER_ID = m.ID")
+ .addEntity("cat", Cat.class)
+ .addEntity("mother", Cat.class)
+]]></programlisting>
+
+ <para>±ÌNGÅwè³êÄ¢éàÌðºLɦµÜ·B</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>SQLNG¶ñ
+ iHibernateªJÌʼð}ü·é½ßÌv[Xz_ðÜÞj</para>
+ </listitem>
+
+ <listitem>
+ <para>NGÉæÁÄÔ³êéGeBeB</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>ãLÅgpµÄ¢é {cat.*} Æ {mother.*} Æ¢¤\LÍA
+ u·×ÄÌvpeBvð\·Èª`Å·B
+ ãíèÉA¾¦IÉJðñµÄàæ¢Å·ªA
+ »ÌêÍAHibernateÉevpeBÉηéSQLJÌʼð}ü³¹é׫ŵå¤B
+ JÌʼ̽ßÌv[Xz_ÍAe[uÌÊ¼ÉæÁÄCü³ê½vpeB¼Å·B
+ ºLÌáÅÍAÊÌe[u cat_log ©ç
+ }bsO^f[^Åè`³ê½ Cat Æ»Ìêeð³µÜ·B
+ àµDÞÈçAwhereßÌÅàAvpeBÌʼðg¦Ü·B</para>
+
+ <programlisting><![CDATA[String sql = "SELECT ID as {c.id}, NAME as {c.name}, " +
+ "BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother.*} " +
+ "FROM CAT_LOG c, CAT_LOG m WHERE {c.mother} = c.ID";
+
+List loggedCats = sess.createSQLQuery(sql)
+ .addEntity("cat", Cat.class)
+ .addEntity("mother", Cat.class).list()
+]]></programlisting>
+
+ <sect3 id="querysql-aliasreferences" revision="2">
+ <title>ʼÆvpeBÌt@X</title>
+
+ <para>½ÌêAãLÌæ¤ÈʼCWFNVªKvÅ·B
+ ½¾µA¡vpeBAp³¯ÊqARNVÈÇÌæ¤È
+ æè¡GÈ}bsOÆÖA·éNGªÈ¯êÎÅ·B
+ éÁèÌʼðgp·é±ÆÉæèAHibernateÍKØÈʼð}üūܷB</para>
+
+ <para>ʼCWFNVƵÄgpÅ«éàÌðº\ɦµÜ·B
+ ÓFº\ÌʼÍêáÅ·B
+ »ê¼êÌʼÍêÓÅ èAgp·éÛÉͨ»çÙÈé¼Oð¿Ü·B</para>
+
+ <table frame="topbot" id="aliasinjection-summary">
+ <title>ʼÉ}ü·é¼O</title>
+
+ <tgroup cols="3">
+ <colspec colwidth="1*" />
+
+ <colspec colwidth="1*" />
+
+ <colspec colwidth="2.5*" />
+
+ <thead>
+ <row>
+ <entry>à¾</entry>
+ <entry>\¶</entry>
+ <entry>á</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>PÈvpeB</entry>
+ <entry><literal>{[aliasname].[propertyname]}</literal></entry>
+ <entry><literal>A_NAME as {item.name}</literal></entry>
+ </row>
+ <row>
+ <entry>¡vpeB</entry>
+ <entry><literal>{[aliasname].[componentname].[propertyname]}</literal></entry>
+ <entry><literal>CURRENCY as {item.amount.currency}, VALUE as
+ {item.amount.value}</literal></entry>
+ </row>
+ <row>
+ <entry>GeBeBÌNXð¯Ê·él</entry>
+ <entry><literal>{[aliasname].class}</literal></entry>
+ <entry><literal>DISC as {item.class}</literal></entry>
+ </row>
+ <row>
+ <entry>GeBeBÌSvpeB</entry>
+ <entry><literal>{[aliasname].*}</literal></entry>
+ <entry><literal>{item.*}</literal></entry>
+ </row>
+ <row>
+ <entry>RNVÌL[</entry>
+ <entry><literal>{[aliasname].key}</literal></entry>
+ <entry><literal>ORGID as {coll.key}</literal></entry>
+ </row>
+ <row>
+ <entry>RNVÌID</entry>
+ <entry><literal>{[aliasname].id}</literal></entry>
+ <entry><literal>EMPID as {coll.id}</literal></entry>
+ </row>
+ <row>
+ <entry>RNVÌvf</entry>
+ <entry><literal>{[aliasname].element}</literal></entry>
+ <entry><literal>XID as {coll.element}</literal></entry>
+ </row>
+ <row>
+ <entry>RNVÌvfÌvpeB</entry>
+ <entry><literal>{[aliasname].element.[propertyname]}</literal></entry>
+ <entry><literal>NAME as {coll.element.name}</literal></entry>
+ </row>
+ <row>
+ <entry>RNVÌvfÌSvpeB</entry>
+ <entry><literal>{[aliasname].element.*}</literal></entry>
+ <entry><literal>{coll.element.*}</literal></entry>
+ </row>
+ <row>
+ <entry>RNVÌSvpeB</entry>
+ <entry><literal>{[aliasname].*}</literal></entry>
+ <entry><literal>{coll.*}</literal></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>dzêĢȢGeBeBÌæ¾</title>
+
+ <para>lCeBuSQLNGÉ ResultTransformer ðKpūܷB
+ ºLÌæ¤ÉAá¦ÎAdzêĢȢGeBeBðԵܷB</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
+ .setResultTransformer(Transformers.aliasToBean(CatDTO.class))]]></programlisting>
+
+ <para>±ÌNGÅwè³êÄ¢éàÌðºLɦµÜ·B</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>SQLNG¶ñ</para>
+ </listitem>
+
+ <listitem>
+ <para>ÊðÏ·µ½àÌ</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>ãLÌNGÍACX^X»µANAME Æ BIRTHDATE Ìlð
+ ηévpeBàµÍtB[hÉ}üµ½ <literal>CatDTO</literal>
+ ÌXgðԵܷB</para>
+ </sect2>
+
+ <sect2>
+ <title>p³Ì§ä</title>
+
+ <para>p³ÌêÆµÄ}bsO³ê½GeBeBðâ¢í¹élCeBuSQLNGÍA
+ x[XÌNXƻ̷×ÄÌTuNXÌvpeB·×ÄðÜÜȯêÎÈèܹñB</para>
+ </sect2>
+
+ <sect2>
+ <title>p[^</title>
+
+ <para>lCeBuSQLNGÍAÈºÌæ¤ÉA
+ ¼Ot«p[^i:namejƯlÉÊup[^ðT|[gµÜ·B</para>
+
+ <programlisting><![CDATA[Query query = sess.createSQLQuery("SELECT * FROM CATS WHERE NAME like ?").addEntity(Cat.class);
+List pusList = query.setString(0, "Pus%").list();
+
+query = sess.createSQLQuery("SELECT * FROM CATS WHERE NAME like :name").addEntity(Cat.class);
+List pusList = query.setString("name", "Pus%").list(); ]]></programlisting>
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="querysql-namedqueries" revision="3">
+ <title>¼Ot«SQLNG</title>
+
+ <para>¼Ot«SQLNGÍ}bsOhL
gÅè`·é±ÆªÅ«A
+ ¼Ot«HQLNGÆS¯¶û@ÅÄԱƪūܷB
+ ±ÌêA<literal>addEntity()</literal> ðÄÑo·KvÍ <emphasis>È¢</emphasis> Å·B</para>
+
+ <programlisting><![CDATA[<sql-query name="persons">
+ <return alias="person" class="eg.Person"/>
+ SELECT person.NAME AS {person.name},
+ person.AGE AS {person.age},
+ person.SEX AS {person.sex}
+ FROM PERSON person
+ WHERE person.NAME LIKE :namePattern
+</sql-query>]]></programlisting>
+
+ <programlisting><![CDATA[List people = sess.getNamedQuery("persons")
+ .setString("namePattern", namePattern)
+ .setMaxResults(50)
+ .list();]]></programlisting>
+
+ <para>ÖAð·é½ßÆRNVðú»·éNGðè`·é½ßÉA»ê¼ê
+ <literal><return-join></literal> Æ <literal><load-collection></literal>
+ vfðg¢Ü·B</para>
+
+ <programlisting><![CDATA[<sql-query name="personsWith">
+ <return alias="person" class="eg.Person"/>
+ <return-join alias="address" property="person.mailingAddress"/>
+ SELECT person.NAME AS {person.name},
+ person.AGE AS {person.age},
+ person.SEX AS {person.sex},
+ address.STREET AS {address.street},
+ address.CITY AS {address.city},
+ address.STATE AS {address.state},
+ address.ZIP AS {address.zip}
+ FROM PERSON person
+ JOIN ADDRESS address
+ ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'
+ WHERE person.NAME LIKE :namePattern
+</sql-query>]]></programlisting>
+
+ <para>¼Ot«SQLNGÍXJlðÔ·±ÆàūܷB
+ <literal><return-scalar></literal> vfðgÁÄA
+ ñÌʼÆHibernateÌ^ð龵ȯêÎÈèܹñB</para>
+
+ <programlisting><![CDATA[<sql-query name="mySqlQuery">
+ <return-scalar column="name" type="string"/>
+ <return-scalar column="age" type="long"/>
+ SELECT p.NAME AS name,
+ p.AGE AS age,
+ FROM PERSON p WHERE p.NAME LIKE 'Hiber%'
+</sql-query>]]></programlisting>
+
+
+ <para>UgZbgÌ}bsOîñð <literal><resultset></literal>
+ ÉOoµ·é±ÆªÅ«Ü·B
+ ¡Ì¼Ot«NGÅÄpµ½èA<literal>setResultSetMapping()</literal>
+ APIðʵÄÄpµ½èūܷB
+ </para>
+
+ <programlisting><![CDATA[<resultset name="personAddress">
+ <return alias="person" class="eg.Person"/>
+ <return-join alias="address" property="person.mailingAddress"/>
+</resultset>
+
+<sql-query name="personsWith" resultset-ref="personAddress">
+ SELECT person.NAME AS {person.name},
+ person.AGE AS {person.age},
+ person.SEX AS {person.sex},
+ address.STREET AS {address.street},
+ address.CITY AS {address.city},
+ address.STATE AS {address.state},
+ address.ZIP AS {address.zip}
+ FROM PERSON person
+ JOIN ADDRESS address
+ ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'
+ WHERE person.NAME LIKE :namePattern
+</sql-query>]]></programlisting>
+
+ <para>ãíèÉAhbmt@CàÌUgZbgÌ}bsOîñð
+ ¼ÚJavaR[hÌÅgpūܷB</para>
+
+ <programlisting><![CDATA[List cats = sess.createSQLQuery(
+ "select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id"
+ )
+ .setResultSetMapping("catAndKitten")
+ .list();]]></programlisting>
+
+ <sect2 id="propertyresults">
+ <title>ñÆñÌʼð¾¦IÉwè·é½ßÉ return-property ðg¤</title>
+
+ <para>ʼð}ü·é½ßÉ <literal>{}</literal> \¶ðg¤ãíèÉA
+ <literal><return-property></literal> ðg¢A
+ ÇÌñÌʼðg¤Ì©ð¾¦Å«Ü·B</para>
+
+ <programlisting><![CDATA[<sql-query name="mySqlQuery">
+ <return alias="person" class="eg.Person">
+ <return-property name="name" column="myName"/>
+ <return-property name="age" column="myAge"/>
+ <return-property name="sex" column="mySex"/>
+ </return>
+ SELECT person.NAME AS myName,
+ person.AGE AS myAge,
+ person.SEX AS mySex,
+ FROM PERSON person WHERE person.NAME LIKE :name
+</sql-query>
+]]></programlisting>
+
+ <para><literal><return-property></literal> Í¡Ìñ൦ܷB
+ ±êÍA¡ñÌvpeBð«ßש§äūȢƢ¤A
+ <literal>{}</literal> \¶Ì§ÀððµÜ·B</para>
+
+ <programlisting><![CDATA[<sql-query name="organizationCurrentEmployments">
+ <return alias="emp" class="Employment">
+ <return-property name="salary">
+ <return-column name="VALUE"/>
+ <return-column name="CURRENCY"/>
+ </return-property>
+ <return-property name="endDate" column="myEndDate"/>
+ </return>
+ SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer},
+ STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate},
+ REGIONCODE as {emp.regionCode}, EID AS {emp.id}, VALUE, CURRENCY
+ FROM EMPLOYMENT
+ WHERE EMPLOYER = :id AND ENDDATE IS NULL
+ ORDER BY STARTDATE ASC
+</sql-query>]]></programlisting>
+
+ <para>±ÌáÅÍA}ü̽ßÌ <literal>{}</literal> \¶Æ¢ÁµåÉA
+ <literal><return-property></literal> ðgÁĢ鱯Éӵľ³¢B
+ ñÆvpeBðÇÌæ¤ÉQÆ·é©ðI×Ü·B</para>
+
+ <para>}bsOÉ discriminator ªÜÜêÄ¢éêA
+ discriminator Ìñðwè·é½ßÉA<return-discriminator>
+ ðgíȯêÎÈèܹñB</para>
+ </sect2>
+
+ <sect2 id="sp_query" revision="1">
+ <title>â¢í¹·é½ßÉXgAhvV[Wðg¤</title>
+
+ <para>HibernateÍo[W3©çAXgAhvV[WÆXgAhÖoRÌâ¢í¹ª
+ T|[g³êܵ½B
+ È~̶̽ÍA¼ûÉÄÍÜèÜ·B
+ XgAhvV[WâXgAhÖðHibernateÅg¤½ßÉÍA
+ 1ÔÚÌoÍp[^ƵÄUgZbgðԳȯêÎÈèܹñB
+ Oracle 9iàµÍ»êÈãÌo[WjÌXgAhvV[WÌáðȺɦµÜ·B</para>
+
+ <programlisting><![CDATA[CREATE OR REPLACE FUNCTION selectAllEmployments
+ RETURN SYS_REFCURSOR
+AS
+ st_cursor SYS_REFCURSOR;
+BEGIN
+ OPEN st_cursor FOR
+ SELECT EMPLOYEE, EMPLOYER,
+ STARTDATE, ENDDATE,
+ REGIONCODE, EID, VALUE, CURRENCY
+ FROM EMPLOYMENT;
+ RETURN st_cursor;
+ END;]]></programlisting>
+
+ <para>HibernateűÌNGðg¤½ßÉÍA
+ ¼Ot«NGÅ}bsO·éKvª èÜ·B</para>
+
+ <programlisting><![CDATA[<sql-query name="selectAllEmployees_SP" callable="true">
+ <return alias="emp" class="Employment">
+ <return-property name="employee" column="EMPLOYEE"/>
+ <return-property name="employer" column="EMPLOYER"/>
+ <return-property name="startDate" column="STARTDATE"/>
+ <return-property name="endDate" column="ENDDATE"/>
+ <return-property name="regionCode" column="REGIONCODE"/>
+ <return-property name="id" column="EID"/>
+ <return-property name="salary">
+ <return-column name="VALUE"/>
+ <return-column name="CURRENCY"/>
+ </return-property>
+ </return>
+ { ? = call selectAllEmployments() }
+</sql-query>]]></programlisting>
+
+ <para>ÓF¡ÌƱëAXgAhvV[WÍXJÆGeBeBðÔ·ÌÝÅ·B
+ <literal><return-join></literal> Æ <literal><load-collection></literal>
+ ÍT|[g³êĢܹñB</para>
+
+ <sect3 id="querysql-limits-storedprocedures" revision="1">
+ <title>XgAhvV[Wðg¤ãÅÌ[ƧÀ</title>
+
+ <para>HibernateÅXgAhvV[WâÖðg¤½ßÉÍA
+ »ÌvV[W͢©Ì[É·éKvª èÜ·B
+ [ɵĢȢvV[WÍAHibernateÅg¤±ÆÍūܹñB
+ »êÅàAµÄ¢È¢vV[Wðg¢½¢ÌÅ êÎA
+ <literal>session.connection()</literal> ðʶÄÀsµÈ¯êÎÈèܹñB
+ [Íf[^x[X²ÆÉÙÈèÜ·B
+ XgAhvV[WÌZ}eBbNXÆV^bNXÍA
+ f[^x[Xx_²ÆÉÙÈé½ßÅ·B</para>
+
+ <para><literal>setFirstResult()/setMaxResults()</literal> ðgÁÄA
+ XgAhvV[WNGðy[Wª¯·é±ÆÍūܹñB</para>
+
+ <para>§·éÄÑoµûÍAWÅ éSQL92É]¤±ÆÅ·B
+ <literal>{ ? = call functionName(<parameters>) }</literal> â
+ <literal>{ ? = call procedureName(<parameters>) }</literal> Å·B
+ lCeBuÈÄÑoµ\¶ÍT|[g³êĢܹñB</para>
+
+ <para>OracleÉͺLÌ[ªKp³êÜ·B</para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>ÖÍUgZbgðԳȯêÎÈèܹñB
+ vV[WÌæêøÍUgZbgðÔ·½ßA
+ <literal>OUT</literal> ÅȯêÎÈèܹñB
+ Oracle 9Æ10ÅÍA<literal>SYS_REFCURSOR</literal> ðg¤±ÆÉæÁÄūܷB
+ OracleÅÍ <literal>REF CURSOR</literal> ^ðè`·éKvª èÜ·B
+ Oracle̶£ðQƵľ³¢B</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>SybaseÆMS SQLT[o[ÉKp³êé[ðºLɦµÜ·B</para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>vV[WÍUgZbgðԳȯêÎÈèܹñB
+ T[o[Í¡ÌUgZbgÆXVJEgðԵܷªA
+ HibernateÍ1ÂÚÌUgZbg¾¯ðÔ·±ÆÉӵľ³¢B
+ »Ì¼Í·×ÄÌÄçêÜ·B</para>
+ </listitem>
+
+ <listitem>
+ <para>vV[WÌÅ <literal>SET NOCOUNT ON</literal> ðLøÉÅ«êÎA
+ ¨»çø¦ªæÈéŵå¤B
+ µ©µA±êÍKvðÅÍ èܹñB</para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+ </sect2>
+ </sect1>
+
+ <sect1 id="querysql-cud">
+ <title>ì¬AXVAí̽ßÌJX^SQL</title>
+
+ <para>Hibernate3Íì¬AXVAí̽ßÌJX^SQL¶ðgpūܷB
+ NXÆRNVÌi±»@\ÍARtBO[Vɶ¬³ê½¶ñ
+ iinsertsqlAdeletesqlAupdatesqlÈÇjÌZbgð·ÅÉ۵ĢܷB
+ ±êç̶ñæèA
+ <literal><sql-insert></literal>A
+ <literal><sql-delete></literal>A
+ <literal><sql-update></literal> Æ¢¤}bsO^OªDæ³êÜ·B</para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id">
+ <generator class="increment"/>
+ </id>
+ <property name="name" not-null="true"/>
+ <sql-insert>INSERT INTO PERSON (NAME, ID) VALUES ( UPPER(?), ? )</sql-insert>
+ <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE ID=?</sql-update>
+ <sql-delete>DELETE FROM PERSON WHERE ID=?</sql-delete>
+</class>]]></programlisting>
+
+ <para>SQLð¼Úf[^x[XÅÀs·é½ßADÝÌû¾ð©RÉgpūܷB
+ f[^x[XÆ©ÌSQLðg¦ÎAR}bsOÌ|[^reBªºªèÜ·B</para>
+
+ <para><literal>callable</literal> ®«ðZbg·êÎA
+ XgAhvV[WðgpūܷB</para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id">
+ <generator class="increment"/>
+ </id>
+ <property name="name" not-null="true"/>
+ <sql-insert callable="true">{call createPerson (?, ?)}</sql-insert>
+ <sql-delete callable="true">{? = call deletePerson (?)}</sql-delete>
+ <sql-update callable="true">{? = call updatePerson (?, ?)}</sql-update>
+</class>]]></programlisting>
+
+ <para>¡ÌƱëAÊup[^ÌÔÍÆÄàdvÅ·B
+ ·Èí¿AHibernateªúÒ·éÅȯêÎÈèܹñB</para>
+
+ <para><literal>org.hiberante.persister.entity</literal> xÌfobOOð
+ LøÉ·é±ÆÉæÁÄAúÒ³êéÔðm©ßçêÜ·B
+ ±ÌxðLøÉ·é±ÆÉæèAGeBeBÌì¬AXVAíÈÇÅ
+ gp³êéÃIÈSQLªoͳêÜ·B
+ iúÒ³êéðmF·é½ßÉÍAHibernateª¶¬·éÃIÈSQLðI[o[Ch·é
+ JX^SQLð}bsOt@CÉÜßÈ¢±ÆðYêȢž³¢Bj</para>
+
+ <para>XgAhvV[WÍ}ü/XV/í³ê½sðÔ·Kvª èÜ·
+ iÇÝÝÌêÍAԳȢæèÍÔ·ûªæ¢Å·jB
+ ÀsÉHibernateªSQL¶Ì¬÷ð`FbN·é©çÅ·B
+ HibernateÍACUD̽ßÌlÌoÍp[^ƵÄA
+ SQL¶ÌÅÌp[^ð¢ÂàL^µÜ·B</para>
+
+ <programlisting><![CDATA[CREATE OR REPLACE FUNCTION updatePerson (uid IN NUMBER, uname IN VARCHAR2)
+ RETURN NUMBER IS
+BEGIN
+
+ update PERSON
+ set
+ NAME = uname,
+ where
+ ID = uid;
+
+ return SQL%ROWCOUNT;
+
+END updatePerson;]]></programlisting>
+ </sect1>
+
+ <sect1 id="querysql-load">
+ <title>[h̽ßÌJX^SQL</title>
+
+ <para>GeBeBðÇÝÞ½ßÌÆ©ÌSQLiàµÍHQLjNGàé¾Å«Ü·B</para>
+
+ <programlisting><![CDATA[<sql-query name="person">
+ <return alias="pers" class="Person" lock-mode="upgrade"/>
+ SELECT NAME AS {pers.name}, ID AS {pers.id}
+ FROM PERSON
+ WHERE ID=?
+ FOR UPDATE
+</sql-query>]]></programlisting>
+
+ <para>±êÍAܳÉiÈOc_µ½j¼Ot«NGÌé¾Å·B
+ ±Ì¼Ot«NGðNXÌ}bsO©çQÆÅ«Ü·B</para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id">
+ <generator class="increment"/>
+ </id>
+ <property name="name" not-null="true"/>
+ <loader query-ref="person"/>
+</class>]]></programlisting>
+
+
+ <para>±êÍXgAhvV[Wų¦à®ìµÜ·B</para>
+
+ <para>Ìæ¤ÉARNVð[h·é½ßÌNG³¦è`µÄæ¢Å·B</para>
+
+ <programlisting><![CDATA[<set name="employments" inverse="true">
+ <key/>
+ <one-to-many class="Employment"/>
+ <loader query-ref="employments"/>
+</set>]]></programlisting>
+
+ <programlisting><![CDATA[<sql-query name="employments">
+ <load-collection alias="emp" role="Person.employments"/>
+ SELECT {emp.*}
+ FROM EMPLOYMENT emp
+ WHERE EMPLOYER = :id
+ ORDER BY STARTDATE ASC, EMPLOYEE ASC
+</sql-query>]]></programlisting>
+
+ <para>Ìæ¤ÉAtFb`ÉæèRNVð[h·é
+ GeBeB[_[ðè`ūܷB</para>
+
+ <programlisting><![CDATA[<sql-query name="person">
+ <return alias="pers" class="Person"/>
+ <return-join alias="emp" property="pers.employments"/>
+ SELECT NAME AS {pers.*}, {emp.*}
+ FROM PERSON pers
+ LEFT OUTER JOIN EMPLOYMENT emp
+ ON pers.ID = emp.PERSON_ID
+ WHERE ID=?
+</sql-query>]]></programlisting>
+ </sect1>
+
+</chapter>
\ No newline at end of file
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/session_api.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/session_api.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/session_api.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/session_api.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,1120 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="objectstate">
+ <title>IuWFNgðµ¤</title>
+
+ <para>
+ Hibernate Í®SÈIuWFNg/[Vi}bsO\
[VÅ èA
+ f[^x[XÇVXeÌÚ×ðJÒ©çBÁ·é¾¯ÅÈA IuWFNgÌ <emphasis>óÔÇ</emphasis> às¢Ü·B
+ ±êÍAJDBC/SQLi±wƯ¶æ¤ÈSQL <literal>¶</literal> ÌÇÆÍÙÈèA
+ JavaAvP[Vɨ¯éi±»ÉηéAÆÄà©RÈIuWFNgwüÌl¦ûðñµÜ·B
+ </para>
+
+ <para>
+ ¾¢©¦êÎAHibernateðp¢éAvP[VJÒÍAIuWFNgÌ <emphasis>óÔ</emphasis> É¢ÄÍ
+ íÉÓ¯·×«Å èASQL¶ÌÀsÉ¢ÄÍK¸µà»¤ÅÍ èܹñB
+ ±ÌªÍAÊíAHibernateªµAVXeÌptH[}Xð`
[jO·éƫɾ¯A âèÉÈÁīܷB
+ </para>
+
+ <sect1 id="objectstate-overview">
+ <title>Hibernateɨ¯éIuWFNgÌóÔ</title>
+
+ <para>
+ HibernateÍÌæ¤ÈIuWFNgÌóÔðè`µAT|[gµÄ¢Ü·B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis> êI(Transient) </emphasis> - <literal>new</literal>
+ ZqðgÁÄ CX^X»³ê½¾¯ÅA HibernateÌ <literal>Session</literal>
+ ÉÖAt¯çêĢȢIuWFNgÍA êI(transient)Å·B
+ »êÍAf[^x[XÉi±IÈ\»ð½¸A¯ÊqÆÈélÍèÄçêĢܹñB
+ êIÈCX^XÍAAvP[Vª»ÌQÆðDZÉà۵ȢêÉA Kx[WRN^ÉæÁÄjü³êÜ·B
+ IuWFNgði±I(persistent)ÈóÔÉ·é½ßÉÍAHibernateÌ
+ <literal>Session</literal> ðg¢Üµå¤B
+ i±ÌóÔJÚÉKvÆÈéSQL¶ÌsÍAHibernateÉC¹Üµå¤Bj
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>i±I(Persistent)</emphasis> -
+ i±IÈCX^XÍf[^x[XÉ i±IÈ\»ð¿A¯ÊqÆÈélðÁĢܷB
+ »êÍAZ[u³ê½èA[h³ê½è·é©àµêܹñªA
+ è`ãÍA <literal>Session</literal> ÌXR[vÌɶݵĢܷB
+ HibernateÍAìÆPÊiUnit of workjª®¹µ½Æ«ÉA i±óÔÌIuWFNgÉÁ¦çê½ÏXðoµA
+ IuWFNgÌóÔÆf[^x[Xð¯úµÜ·B IuWFNgðêI(transient)ɷ鯫ÍAJÒÍAèìÆÅ
+ <literal>UPDATE</literal> ¶â <literal>DELETE</literal>
+ ¶ðÀsµÜ¹ñB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>ª£(Detached)</emphasis> - ª£³ê½CX^XÆÍAi±»³êÄ¢éªA
+ »êÆÖAt¢Ä¢½ <literal>Session</literal> ªN[Y³êÄ¢éIuWFNg̱ÆÅ·B
+ »ÌIuWFNgÖÌQÆÍAËRƵÄLøÅ·B
+ »µÄAà¿ëñAª£³ê½óÔÉ éIuWFNgÍAC³·é±Æ³¦Å«Ü·B
+ ª£³ê½CX^XÍAà¤êxi±»µ½¢i»µÄA·×ÄÌÏXði±»µ½¢jÆ«ÉA Vµ¢
+ <literal>Session</literal> ÉÄÇÁūܷB
+ ±Ì@\ÍA[Uªl¦éÔðKvÆ·éæ¤ÈA·úÔÉyÔìÆPÊÉηé vO~OfðÂ\ɵܷB
+ äXÍA±êð <emphasis>AvP[VÌgUNViapplication
+ transactionsj</emphasis> ÆÄñŢܷB ·Èí¿A[U©ç©½ìÆPʾƢ¤±ÆÅ·B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ±ê©çAóÔÆóÔJÚi»µÄAJÚÌ«Á©¯ÆÈéHibernateÌ\bhjÉ墀 AÚ×Éq×Ü·B
+ </para>
+
+ </sect1>
+
+ <sect1 id="objectstate-makingpersistent" revision="1">
+ <title>IuWFNgði±óÔÉ·é</title>
+
+ <para>
+ VµCX^X»³ê½i±NXÌCX^XÍA HibernateÅÍ
+ <emphasis>êI(transient)</emphasis> ƩȳêÜ·B
+ ÈºÌæ¤ÉAZbVÆÖAÃ¯é±ÆÅAêIÈCX^Xð
+ <emphasis>i±óÔ(persistent)</emphasis> ÉūܷB
+ </para>
+
+
+ <programlisting><![CDATA[DomesticCat fritz = new DomesticCat();
+fritz.setColor(Color.GINGER);
+fritz.setSex('M');
+fritz.setName("Fritz");
+Long generatedId = (Long) sess.save(fritz);]]></programlisting>
+
+ <para>
+ <literal>Cat</literal> NX̯Êqª©®¶¬³êéÌÅ êÎA
+ <literal>save()</literal> ªÄÎê鯫ÉA ¯Êqª¶¬³êA <literal>cat</literal>
+ CX^XÉèÄçêÜ·B <literal>Cat</literal>
+ ̯Êqª¼©çèÄçêéi <literal>assigned</literal> ¯ÊqðÂj©A¡L[Å éÈçA
+ <literal>save()</literal> ðÄÑo·OÉA¯ÊqðèÄȯêÎÈèܹñB
+ <literal>save()</literal> ÌãíèÉAEJB3 ÌúhtgÅè`³ê½
+ <literal>persist()</literal> ðg¤±ÆàÂ\Å·B
+ </para>
+
+ <para>
+ ãíèÉA¯ÊqðøÉÆé <literal>save()</literal>
+ \bhðgÁÄA ¯ÊqðèÄ鱯àūܷB
+ </para>
+
+
+ <programlisting><![CDATA[DomesticCat pk = new DomesticCat();
+pk.setColor(Color.TABBY);
+pk.setSex('F');
+pk.setName("PK");
+pk.setKittens( new HashSet() );
+pk.addKitten(fritz);
+sess.save( pk, new Long(1234) );]]></programlisting>
+
+ <para>
+ i±»·éIuWFNgªÖAIuWFNgðÁÄ¢éê iá¦ÎAOÌáɨ¯é
+ <literal>kittens</literal> RNVÌæ¤ÉjA OL[JÉA <literal>NOT
+ NULL</literal> §ñð¯ȢÀèÍA ±êçÌêAÌIuWFNgðÇñÈÔÅi±»µÄà©Ü¢Ü¹ñB
+ OL[§ñðá½·é°êÍ èܹñB µ©µA <literal>NOT NULL</literal>
+ §ñª éêAÔáÁ½ÔÅIuWFNgð <literal>save()</literal> µÄµÜ¤ÆA
+ §ñÉá½·é©àµêܹñB </para>
+
+ <para>
+ ÖA·éIuWFNgð©®IÉÛ¶·éA HibernateÌ <emphasis>JÚIÈi±»(transitive
+ persistence)</emphasis> @\ð g¤ÂàèÈçÎA»Ìæ¤ÈÚ×ðCÉ·éKvÍ èܹñB
+ »µÄA <literal>NOT NULL</literal> §ñÌá½·çN±èܹñB
+ Hibernateª·×ÄÊ|ðÝÄêÜ·BJÚIÈi±»ÍA±ÌÍÌã¼É©êĢܷB </para>
+
+ </sect1>
+
+ <sect1 id="objectstate-loading">
+ <title>IuWFNgÌ[h</title>
+
+ <para>
+ i±»³ê½CX^X̯Êqª 究ߪ©ÁÄ¢éÈçA <literal>Session</literal> Ì
+ <literal>load()</literal> \bhðgÁÄA³Å«Ü·B <literal>load()</literal>
+ ÍAClass IuWFNgðøÉÆèA »ÌNXÌCX^XðV½É¶¬µAóÔð[hµÜ·B
+ »ÌCX^XÌóÔÍAi±(persistent)óÔÅ·B </para>
+
+
+ <programlisting><![CDATA[Cat fritz = (Cat) sess.load(Cat.class, generatedId);]]></programlisting>
+
+
+ <programlisting><![CDATA[// you need to wrap primitive identifiers
+long id = 1234;
+DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long(id) );]]></programlisting>
+ <para>
+ é¢ÍAÈºÌæ¤ÉAù¶ÌCX^XÉóÔð[h·é±ÆàūܷB </para>
+
+
+ <programlisting><![CDATA[Cat cat = new DomesticCat();
+// load pk's state into cat
+sess.load( cat, new Long(pkId) );
+Set kittens = cat.getKittens();]]></programlisting>
+
+ <para>
+ DBÉY·ésª³¢êA <literal>load()</literal> ÍñsÂ\ÈáOð °é±ÆÉӵܵå¤B
+ »ÌNXªvLVðgÁÄ}bsO³êÄ¢éêA <literal>load()</literal>
+ Íú»³êĢȢvLVðÔµAvLVÌ\bhªÄÎêéÜÅÀÛÉÍ f[^x[XÉANZXµÜ¹ñB
+ àµAÀÛÉf[^x[X©ç[h¹¸ÉAIuWFNgÉηéÖAðìè½¢êA ±ÌUé¢ÍÆÄàð§¿Ü·B
+ <literal>batch-size</literal> ªNX}bsOÉè`³êÄ¢éÈçÎA
+ ¡ÌCX^XðêÅ[h·é±ÆªÂ\Å·B </para>
+
+ <para>
+ Y·ésª¶Ý·é±ÆðmMūȢêÍA <literal>get()</literal> \bhðg¤×«Å·B
+ »êÍAf[^x[XÉ·®ÉANZXµAY·ésª³¢êÍnullðԵܷB </para>
+
+
+ <programlisting><![CDATA[Cat cat = (Cat) sess.get(Cat.class, id);
+if (cat==null) {
+ cat = new Cat();
+ sess.save(cat, id);
+}
+return cat;]]></programlisting>
+
+ <para>
+ <literal>LockMode</literal> ðg¦ÎA
+ <literal>SELECT ... FOR UPDATE</literal>Æ¢¤SQLð gÁÄIuWFNgð[h·é±ÆªÅ«Ü·B
+ Ú×ÈîñÍAAPIhL
gðQƵľ³¢B </para>
+
+
+ <programlisting><![CDATA[Cat cat = (Cat) sess.get(Cat.class, id, LockMode.UPGRADE);]]></programlisting>
+
+ <para>
+ ÖAÉηéJXP[hû@ƵÄ
+ <literal>lock</literal> â <literal>all</literal> ð
+ wèµÈ¢ÀèAÖA·éCX^XâÜÜêéRNVÍ <literal>FOR UPDATE</literal> ų
+ <emphasis>³êÈ¢</emphasis> ±ÆÉӵܵå¤B </para>
+
+ <para>
+ <literal>refresh()</literal> \bhðg¤±ÆÅAÇñÈÆ«ÅàAIuWFNgâ»ÌRNVð
+ [h·é±ÆªÅ«Ü·B f[^x[XÌgKªe[uðXVµ½ÛÉA
+ »Ìe[uÉηéIuWFNgÌvpeBð¯ú·éêA±Ì\bhªðɧ¿Ü·B </para>
+
+
+ <programlisting><![CDATA[sess.save(cat);
+sess.flush(); //force the SQL INSERT
+sess.refresh(cat); //re-read the state (after the trigger executes)]]></programlisting>
+ <para>
+ åØÈâèÍA¢ÂàÌ_ÉÖ·éàÌÅ·B»êÍAHibernateªf[^x[X©çA
+ ÇÌç¢ÌÊð³·éÌ©ÆAÇÌç¢ÌÌSQLÌ <literal>SELECT</literal> ¶ªgíêé̩ŷB
+ ±êÍA <emphasis>tFb`Ìíª</emphasis> ÉæèÜ·B±êÉ¢ÄÍA<xref linkend="performance-fetching"/> ÅྵĢܷB </para>
+
+ </sect1>
+
+ <sect1 id="objectstate-querying" revision="1">
+ <title>NG</title>
+
+ <para>
+ Tµ½¢IuWFNg̯Êqªª©çÈ¢êÍANGªKvÉÈèÜ·B
+ HibernateÍg¢â·ÄÍÈIuWFNgwüÌNG¾ê (HQL)ðT|[gµÄ¢Ü·B
+ vOÉæÁÄNGªì¬Å«éæ¤ÉAHibernateÍôû³ê½CriteriaÆExampleNG@\(QBCÆQBEjð
+ T|[gµÄ¢Ü·BResultSetðIuWFNgÉÏ··éHibernateÌIvV@\ðg¤±ÆÅA
+ f[^x[XÌlCeBuÈSQLÅNGð\»·é±ÆàūܷB </para>
+
+ <sect2 id="objectstate-querying-executing" revision="1">
+ <title>NGÌÀs</title>
+
+ <para>
+ HQLâlCeBuÈSQLNGÍA <literal>org.hibernate.Query</literal>
+ ÌCX^XƵÄ\»³êÜ·B ±ÌC^tF[XÍAp[^oCfBOâResultSetÌnhOâ
+ NGÌÀsðs¤\bhðpӵĢܷB ÊíA <literal>Query</literal> ÍAȺɦ·æ¤ÉA
+ »Ì_Ì <literal>Session</literal> ðgÁÄæ¾µÜ·B </para>
+
+
+ <programlisting><![CDATA[List cats = session.createQuery(
+ "from Cat as cat where cat.birthdate < ?")
+ .setDate(0, date)
+ .list();
+
+List mothers = session.createQuery(
+ "select mother from Cat as cat join cat.mother as mother where cat.name = ?")
+ .setString(0, name)
+ .list();
+
+List kittens = session.createQuery(
+ "from Cat as cat where cat.mother = ?")
+ .setEntity(0, pk)
+ .list();
+
+Cat mother = (Cat) session.createQuery(
+ "select cat.mother from Cat as cat where cat = ?")
+ .setEntity(0, izi)
+ .uniqueResult();]]
+
+Query mothersWithKittens = (Cat) session.createQuery(
+ "select mother from Cat as mother left join fetch mother.kittens");
+Set uniqueMothers = new HashSet(mothersWithKittens.list());
+
+ ]]></programlisting>
+
+ <para>
+ NGÍAÊA <literal>list()</literal> ðÄÑo·±ÆÉæÁÄÀs³êÜ·B
+ NGÌÊÍAãÉ éRNVÉ·×Ä[h³êÜ·B
+ NGÉæÁij³ê½GeBeBÌCX^XÍAi±óÔÅ·B
+ àµANGª½Á½1ÂÌCX^XðԷƪ©ÁÄ¢éÈçA
+ <literal>uniqueResult()</literal> \bhªèÁæè¢û@Å·B
+ ¦tFb`ðpµ½NGÌêAÓ¤A¾çê½RNVÉÍA
+ [gÌIuWFNgªd¡µÄÜÜêĢܷ
+ iµ©µA[gªÂRNVÍú»([hj³êĢܷjB
+ ±Ìd¡Í <literal>Set</literal> ðgÁÄæè±ÆªÅ«Ü·B</para>
+
+ <sect3 id="objectstate-querying-executing-iterate">
+ <title>ÊðCe[g·é</title>
+
+ <para>
+ XA <literal>iterate()</literal> \bhðgÁÄNGðÀs·é±ÆÅA
+ æèÇ¢ptH[}Xð¾é±ÆªÅ«Ü·B ±êÍAÊíANGÉæÁľçê½ÀÛÌGeBeBÌCX^XªA
+ ·ÅÉZbVܽÍñLbV
É¶Ý·é±ÆªúÒÅ«é꾯ŷB
+ »êçªAܾLbV
³êĢȢÈçA <literal>iterate()</literal> ÍA
+ <literal>list()</literal> æèàxAÈPÈNGÉεÄà½Ìf[^x[XANZXð
+ KvƵܷB»ÌANZXÆÍA¯Êq¾¯ðæ¾·é½ßÌÅÌselectPñÆA
+ ÀÛÌCX^Xðú»·é½ßÉã©çs¤nñÌselecṯÆÅ·B </para>
+
+
+ <programlisting><![CDATA[// fetch ids
+Iterator iter = sess.createQuery("from eg.Qux q order by q.likeliness").iterate();
+while ( iter.hasNext() ) {
+ Qux qux = (Qux) iter.next(); // fetch the object
+ // something we couldnt express in the query
+ if ( qux.calculateComplicatedAlgorithm() ) {
+ // delete the current instance
+ iter.remove();
+ // dont need to process the rest
+ break;
+ }
+}]]></programlisting>
+ </sect3>
+
+ <sect3 id="objectstate-querying-executing-tuples">
+ <title>IuWFNgÌgituplejðÔ·NG</title>
+ <para>
+ HibernateÌNGÅÍAXAIuWFNgÌgðÔ·±Æª èÜ·B »ÌêÍAe^vÍzñƵÄÔ³êÜ·B
+ </para>
+
+
+ <programlisting><![CDATA[Iterator kittensAndMothers = sess.createQuery(
+ "select kitten, mother from Cat kitten join kitten.mother mother")
+ .list()
+ .iterator();
+
+while ( kittensAndMothers.hasNext() ) {
+ Object[] tuple = (Object[]) kittensAndMothers.next();
+ Cat kitten = (Cat) tuple[0];
+ Cat mother = (Cat) tuple[1];
+ ....
+}]]></programlisting>
+
+ </sect3>
+
+ <sect3 id="objectstate-querying-executing-scalar" revision="1">
+ <title>XJ[ÌÊ</title>
+
+ <para>
+ NGÅÍA <literal>select</literal> ßÅNXÌvpeBðwèūܷB
+ SQLÌWÖðÄÔ±ÆàūܷBvpeBâWÖÍA
+ ii±óÔÌGeBeBÅÍÈjuXJ[lvÅ éÆ©È³êÜ·B </para>
+
+
+ <programlisting><![CDATA[Iterator results = sess.createQuery(
+ "select cat.color, min(cat.birthdate), count(cat) from Cat cat " +
+ "group by cat.color")
+ .list()
+ .iterator();
+
+while ( results.hasNext() ) {
+ Object[] row = (Object[]) results.next();
+ Color type = (Color) row[0];
+ Date oldest = (Date) row[1];
+ Integer count = (Integer) row[2];
+ .....
+}]]></programlisting>
+
+ </sect3>
+
+ <sect3 id="objectstate-querying-executing-parameters">
+ <title>p[^ÌoCh</title>
+
+ <para>
+ <literal>Query</literal>
+ ÍA¼Ot«Ìp[^âJDBCX^CÌ <literal>?</literal>
+ p[^ÉlðoCh·é½ßÌ\bhðÁĢܷB
+ <emphasis>JDBCÆÍá¢AHibernateÍp[^É[©çÔðUÁÄ¢«Ü·B</emphasis>
+ ¼Ot«Ìp[^ÆÍANG¶ñÌ驃 é <literal>:name</literal> `®Ì¯ÊqÅ·B
+ ¼Ot«p[^Ì_ÍÌÊèÅ·B </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para> ¼Ot«p[^ÍANG¶ñÉoê·éÔÆ³ÖWÅ· </para>
+ </listitem>
+ <listitem>
+ <para> ¯¶NGàÉ¡ñoê·é±ÆªÅ«Ü· </para>
+ </listitem>
+ <listitem>
+ <para> ©ª©gðྵܷ </para>
+ </listitem>
+ </itemizedlist>
+
+
+ <programlisting><![CDATA[//named parameter (preferred)
+Query q = sess.createQuery("from DomesticCat cat where cat.name = :name");
+q.setString("name", "Fritz");
+Iterator cats = q.iterate();]]></programlisting>
+
+
+ <programlisting><![CDATA[//positional parameter
+Query q = sess.createQuery("from DomesticCat cat where cat.name = ?");
+q.setString(0, "Izi");
+Iterator cats = q.iterate();]]></programlisting>
+
+
+ <programlisting><![CDATA[//named parameter list
+List names = new ArrayList();
+names.add("Izi");
+names.add("Fritz");
+Query q = sess.createQuery("from DomesticCat cat where cat.name in (:namesList)");
+q.setParameterList("namesList", names);
+List cats = q.list();]]></programlisting>
+
+ </sect3>
+
+ <sect3 id="objectstate-querying-executing-pagination">
+ <title>y[Wª¯
+ </title>
+
+ <para>
+ ResultSetɧÀi³µ½¢Ååsâ³µ½¢ÅÌsjðÁ¦éKvª êÎA
+ ÈºÌæ¤ÉA <literal>Query</literal> C^[tFCXÌ\bhðg¢Ü·B </para>
+
+
+ <programlisting><![CDATA[Query q = sess.createQuery("from DomesticCat cat");
+q.setFirstResult(20);
+q.setMaxResults(10);
+List cats = q.list();]]></programlisting>
+
+ <para> §Àt«ÌNGðDBMSÌlCeBuÈSQLÉÏ··éû@ðAHibernateÍmÁĢܷB
+ </para>
+
+ </sect3>
+
+ <sect3 id="objectstate-querying-executing-scrolling">
+ <title>XN[Â\ÈCe[V</title>
+
+ <para>
+ JDBChCoªXN[Â\È <literal>ResultSet</literal> ðT|[gµÄ¢êÎA
+ <literal>Query</literal>
+ C^[tFCXðgÁÄA <literal>ScrollableResults</literal> IuWFNgð
+ æ¾Å«Ü·B»êðg¤ÆANGÌÊÉεÄ_îÉirQ[VūܷB </para>
+
+
+ <programlisting><![CDATA[Query q = sess.createQuery("select cat.name, cat from DomesticCat cat " +
+ "order by cat.name");
+ScrollableResults cats = q.scroll();
+if ( cats.first() ) {
+
+ // find the first name on each page of an alphabetical list of cats by name
+ firstNamesOfPages = new ArrayList();
+ do {
+ String name = cats.getString(0);
+ firstNamesOfPages.add(name);
+ }
+ while ( cats.scroll(PAGE_SIZE) );
+
+ // Now get the first page of cats
+ pageOfCats = new ArrayList();
+ cats.beforeFirst();
+ int i=0;
+ while( ( PAGE_SIZE > i++ ) && cats.next() ) pageOfCats.add( cats.get(1) );
+
+}
+cats.close()]]></programlisting>
+
+ <para>
+ ±Ì@\ÉÍI[vóÔÌf[^x[XRlNVªKvŠ鱯Éӵľ³¢B
+ àµAItCÌy[Wª¯@\ªKvÅ êÎA <literal>setMaxResult()</literal> /
+ <literal>setFirstResult()</literal> ðg¢Üµå¤B </para>
+
+ </sect3>
+
+ <sect3 id="objectstate-querying-executing-named" revision="1">
+ <title>¼Ot«NGÌOoµ</title>
+
+ <para>
+ }bsOhL
gɼOt«ÌNGðè`·é±ÆªÅ«Ü·B
+ i}[NAbvÆðß³ê鶪NGÉÜÜêéÈçA <literal>CDATA</literal> ZNVð
+ g¤±ÆðYêÈ¢æ¤ÉµÜµå¤Bj </para>
+
+
+ <programlisting><![CDATA[<query name="ByNameAndMaximumWeight"><![CDATA[
+ from eg.DomesticCat as cat
+ where cat.name = ?
+ and cat.weight > ?
+] ]></query>]]></programlisting>
+
+ <para>p[^ÌoCfBOÆÀsÍAÈºÌæ¤ÈvOÅsíêÜ·B </para>
+
+
+ <programlisting><![CDATA[Query q = sess.getNamedQuery("ByNameAndMaximumWeight");
+q.setString(0, name);
+q.setInt(1, minWeight);
+List cats = q.list();]]></programlisting>
+
+ <para> ÀÛÌvOR[hÍAgíêéNG¾êÉ˶µÄ¢È¢±ÆÉӵܵå¤B
+ ^f[^ÉÍAlCeBuSQLNGðè`·é±ÆàūܷB ܽAù¶ÌNGð}bsOt@CÉÚ·±ÆÅA
+ HibernateÉÚs·é±ÆàūܷB </para>
+ <para>
+ <literal><hibernate-mapping></literal> ÌÌNGè`ÍANGÉηé
+ j[NȼOªKvȱÆÉàӵľ³¢B»êÉεÄA <literal><class></literal> ÌÌ
+ NGè`ÍANXÌ®SÀ輪OÉt¯çêéÌÅA©®IÉj[NȼOÉÈèÜ·B
+ áF <literal>eg.Cat.ByNameAndMaximumWeight</literal>
+ </para>
+ </sect3>
+ </sect2>
+
+ <sect2 id="objectstate-filtering" revision="1">
+ <title>RNVÌtB^O</title>
+ <para> RNV <emphasis>tB^</emphasis> ÍAi±»³êÄ¢éRNVâzñÉKp³êé
+ ÁêÈ^CvÌNGÅ·B»ÌNG¶ñÅÍARNVÌ»Ì_ÅÌvfðÓ¡·é
+ <literal>this</literal> ðg¢Ü·B </para>
+
+
+ <programlisting><![CDATA[Collection blackKittens = session.createFilter(
+ pk.getKittens(),
+ "where this.color = ?")
+ .setParameter( Color.BLACK, Hibernate.custom(ColorUserType.class) )
+ .list()
+);]]></programlisting>
+
+ <para> Ô³êéRNVÍBagÆÝȳêÜ·B»µÄA»êÍàÆÌRNVÌRs[ÉÈèÜ·B
+ ³ÌRNVÍC³³êܹñi±êÍA"filter"Æ¢¤¼OÌÓ¡ÆÍÙÈèÜ·ªA úÒ³ê鮫ÆÍêvµÄ¢Ü·jB
+ </para>
+
+ <para> tB^ÉÍ <literal>from</literal>
+ ߪsvŠ鱯ÉCÃŵå¤iKvÈçA±ÆàÂ\Å·ªjB tB^ÍARNVÌvf©ÌðÔµÄ\¢Ü¹ñB
+ </para>
+
+
+ <programlisting><![CDATA[Collection blackKittenMates = session.createFilter(
+ pk.getKittens(),
+ "select this.mate where this.color = eg.Color.BLACK.intValue")
+ .list();]]></programlisting>
+
+ <para> NGðÜÜÈ¢tB^àðɧ¿Ü·B
+ á¦ÎAñíÉå«ÈRNV̪Wð[h·é½ßÉg¦Ü·B </para>
+
+
+ <programlisting><![CDATA[Collection tenKittens = session.createFilter(
+ mother.getKittens(), "")
+ .setFirstResult(0).setMaxResults(10)
+ .list();]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="objecstate-querying-criteria" revision="1">
+ <title>NCeAÌNG</title>
+
+ <para> HQLÍñíÉÍÅ·ªANG¶ñðìéæèàAIuWFNgwüÌAPIðgÁÄ
+ ®IÉNGðìéûðDÞJÒà¢Ü·B ±¤¢Á½ê̽ßÉAHibernateͼ´IÈ
+ <literal>Criteria</literal> NGAPIðñµÄ¢Ü·B </para>
+
+
+ <programlisting><![CDATA[Criteria crit = session.createCriteria(Cat.class);
+crit.add( Restrictions.eq( "color", eg.Color.BLACK ) );
+crit.setMaxResults(10);
+List cats = crit.list();]]></programlisting>
+
+ <para> <literal>Criteria</literal> Æ
+ <literal>Example</literal> APIÌÚ×ÍA <xref linkend="querycriteria"/>
+ Éq×çêĢܷB </para>
+
+ </sect2>
+
+ <sect2 id="objectstate-querying-nativesql" revision="2">
+ <title>lCeBuSQLÌNG</title>
+
+ <para>
+ <literal>createSQLQuery()</literal> ðgÁÄASQLÅNGð\»·é±ÆàūܷB
+ »µÄAHibernateÉAResultSet ©çIuWFNgÖÌ}bsOðÜ©¹Ü·B
+ <literal>session.connection()</literal> ðÄ×ÎÇñÈÆ«ÅàA¼ÚAJDBC
+ <literal>Connection</literal> ðgpū鱯ðo¦Ä¨«Üµå¤B àµAHibernate
+ APIðg¤ÌÅ êÎAºLÌæ¤ÉSQLÌʼðÊÅçȯêÎÈèܹñB </para>
+
+ <programlisting><![CDATA[List cats = session.createSQLQuery("SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM<10")
+ .addEntity("cat", Cat.class)
+.list();]]></programlisting>
+
+ <programlisting><![CDATA[List cats = session.createSQLQuery(
+ "SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, " +
+ "{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... " +
+ "FROM CAT {cat} WHERE ROWNUM<10")
+ .addEntity("cat", Cat.class)
+.list()]]></programlisting>
+
+ <para>
+ SQLNGÍAHibernateNGƯ¶æ¤ÉA¼Ot«Ìp[^ÆÊup[^ð±ƪūܷB
+ Hibernateɨ¯élCeBuÈSQLNGÌÚ×É¢ÄÍA <xref linkend="querysql"/>
+ ðQƵľ³¢B </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="objectstate-modifying" revision="1">
+ <title>i±IuWFNgÌC³</title>
+
+ <para>
+ <emphasis>Ìi±CX^X</emphasis>
+ iáF <literal>Session</literal> ÉæÁÄA
+ [hAZ[uAì¬ANG³ê½IuWFNgjÍAAvP[VÉì³êÜ·B
+ »ÌÛÉÏX³ê½i±óÔÍA <literal>Session</literal> ª <emphasis>tbV
</emphasis>
+ ³ê鯫ÉAi±»³êÜ·i±êÍA±ÌÍÌã¼Åq×ĢܷjB
+ ÏXði±»·é½ßÉAÁêÈ\bhi <literal>update()</literal>
+ Ìæ¤ÈàÌB±êÍAÊÌÚIÅgpµÜ·jð ÄÔKvÍ èܹñB IuWFNgÌóÔðXV·éêÔÈPÈû@ÍAIuWFNgð
+ <literal>load()</literal> µA <literal>Session</literal>
+ ðI[vɵĢéÔÉA¼Úì·é±ÆÅ·B </para>
+
+
+ <programlisting><![CDATA[DomesticCat cat = (DomesticCat) sess.load( Cat.class, new Long(69) );
+cat.setName("PK");
+sess.flush(); // changes to cat are automatically detected and persisted
+]]></programlisting>
+
+ <para>
+ iIuWFNgð[h·é½ßÌjSQLÌ <literal>SELECT</literal> ÆiXV³ê½óÔði±»·é½ßÌj
+ SQLÌ <literal>UPDATE</literal> ª¯¶ZbVÅKvÆÈéÌÅA±ÌvO~OfÍA
+ ø¦ª«Èéêª èÜ·B
+ »Ì½ßAHibernateÍÊÌû@ðpӵĢܷB»êÍACX^X𪣷éidetachedjû@Å·B </para>
+
+ <para>
+ <emphasis>HibernateÍA <literal>UPDATE</literal> ¶â
+ <literal>DELETE</literal> ¶ð¼ÚÀs·éAPIðpӵĢܹñB
+ HibernateÍA <emphasis>óÔÇ</emphasis> T[rXÅ èAgíêéSQL
+ <emphasis>¶</emphasis> ̱ÆðJÒªl¦éKvÍ èܹñB
+ JDBCÍSQL¶ðÀs·é®àøÈAPIÅ èA <literal>session.connection()</literal>
+ ðÄÔ±ÆÅ ¢ÂÅàAJDBC <literal>Connection</literal> ðJÒÍæ¾Å«Ü·B
+ ³çÉAåÊÌf[^ìÌl¦ûÍAICgUNVü«AvP[VÌ
+ IuWFNg/[Vi}bsOÆÕ˵ܷB
+ µ©µAHibernateÌ¡ãÌo[WÅÍAåÊf[^ð·éÁÊÈ@\ðñ·é©àµêܹñB
+ ob`ìÉpÅ«é¢Â©ÌHvÉ¢ÄÍA <xref linkend="batch"/> ðQƵľ³¢B </emphasis>
+ </para>
+
+ </sect1>
+
+ <sect1 id="objectstate-detached" revision="2">
+ <title>ª£IuWFNgÌC³</title>
+
+ <para>
+ ½ÌAvP[VÅÍ̱ƪKvÉÈèÜ·B
+ »êÍA égUNVÅIuWFNgð³µAì·é½ßÉ»êðUIwÉèA
+ »ÌãÉAVµ¢gUNVÅÏXðZ[u·éÆ¢Á½±ÆÅ·B
+ Às«Ì¢Â«ÅA±Ì^CvÌAv[`ðg¤AvP[VÅÍA "úÔÌ·¢"
+ ìÆPÊÌu£«ðÛØ·é½ßÉAo[Wf[^ªÊígíêÜ·B </para>
+
+ <para>
+ HibernateÍA <literal>Session.update()</literal> â
+ <literal>Session.merge()</literal> \bhð
+ gÁÄAª£CX^XðÄÇÁ·é±ÆÅA±ÌfÉεܷB </para>
+
+
+ <programlisting><![CDATA[// in the first session
+Cat cat = (Cat) firstSession.load(Cat.class, catId);
+Cat potentialMate = new Cat();
+firstSession.save(potentialMate);
+
+// in a higher layer of the application
+cat.setMate(potentialMate);
+
+// later, in a new session
+secondSession.update(cat); // update cat
+secondSession.update(mate); // update mate]]></programlisting>
+
+ <para>
+ ¯Êq<literal>catId</literal> ð <literal>Cat</literal> ªAùÉ
+ <literal>secondSession</literal> Å[h³êÄ¢½êÍAÄÇÁµæ¤Æµ½Æ«ÉAáOª°çêÜ·B
+ </para>
+
+ <para>
+ ¯¶¯ÊqðÂi±CX^XðZbVªùÉ۵ĢȢ±Æð
+ mMÅ«éÈç <literal>update()</literal> ðg¢Üµå¤B
+ »µÄAZbVÌóÔðl¦¸ÉAÇñÈêÅàÏXð}[Wµ½¢êÍA <literal>merge()</literal>
+ ðg¢Üµå¤B ·Èí¿Aª£IuWFNgÌÄÇÁìªAÅÉÀs³ê鱯ðmÀÉ·é½ßÉA ÊíÍ
+ <literal>update()</literal> ªVµ¢ZbVÌÈ©ÅÅÉÄÎêé\bhÉÈèÜ·B </para>
+
+ <para>
+ ª£CX^X©çBÂ\ÈAª£CX^XðAvP[VÍÂÊÉ <literal>update()</literal>
+ ·×«Å·B»êÍA»ÌóÔðXVµ½¢êÉ <emphasis>Àè</emphasis> Ü·B
+ <emphasis>JÚIÈi±»</emphasis> ðg¦ÎAà¿ëñ©®»Å«Ü·B <xref
+ linkend="objectstate-transitive"/> ðQƵľ³¢B </para>
+
+ <para>
+ \bhÅàܽAVµ¢ZbVÉIuWFNgðÄÖAt¯Å«Ü·B µ©µAª£CX^XͳC³ÅȯêÎÈèܹñB
+ </para>
+
+
+ <programlisting><![CDATA[//just reassociate:
+sess.lock(fritz, LockMode.NONE);
+//do a version check, then reassociate:
+sess.lock(izi, LockMode.READ);
+//do a version check, using SELECT ... FOR UPDATE, then reassociate:
+sess.lock(pk, LockMode.UPGRADE);]]></programlisting>
+
+ <para>
+ <literal>lock()</literal> ÍA³Ü´ÜÈ
+ <literal>LockMode</literal> ÆÆàÉg¤±ÆªÅ«Ü·B
+ Ú×ÍAAPIhL
gÆgUNVÌÍðQƵľ³¢B
+ ÄÇÁÌÆ«É¾¯A <literal>lock()</literal> ªgíêéí¯ÅÍ èܹñB </para>
+
+ <para>
+ úÔÌ·¢ìÆPÊÌA»Ì¼ÌfÍA<xref linked="transactions-optimistic"/> Åq×ĢܷB </para>
+
+ </sect1>
+
+ <sect1 id="objectstate-saveorupdate">
+ <title>©®IÈóÔo</title>
+
+ <para>
+ HibernateÌ[UÍÌ2ÂÌP[XÌÇ¿çÉàg¦éÄpIÈ\bhðvµÄ¢Üµ½B
+ »êÍAVµ¢¯Êq𶬵ÄêIÈCX^XðZ[u·é±ÆÆA
+ »Ì_̯ÊqÆÖAâĢ骣CX^XðXV/ÄÇÁ·é±ÆÌÅ«é\bhÅ·B
+ <literal>saveOrUpdate()</literal> Í±Ìæ¤È@\ðÀ»µ½\bhÅ·B </para>
+
+
+ <programlisting><![CDATA[// in the first session
+Cat cat = (Cat) firstSession.load(Cat.class, catID);
+
+// in a higher tier of the application
+Cat mate = new Cat();
+cat.setMate(mate);
+
+// later, in a new session
+secondSession.saveOrUpdate(cat); // update existing state (cat has a non-null id)
+secondSession.saveOrUpdate(mate); // save the new instance (mate has a null id)]]></programlisting>
+
+ <para>
+ <literal>saveOrUpdate()</literal> Ìgpû@ÆÓ¡ÍA
+ Vµ¢[UÉÆÁĬðµ©àµêܹñB
+ ܸæêÉA éZbVÅgpµ½CX^XðÊÌVµ¢ZbVÅg¨¤ÆµÈ¢ÀèA
+ <literal>update()</literal> â <literal>saveOrUpdate()</literal> â
+ <literal>merge()</literal> ðg¤KvÍ èܹñB
+ AvP[VSÌðʶÄA±êçÌ\bhðSgíÈ¢±Æà èÜ·B </para>
+
+ <para>
+ ÊíA <literal>update()</literal> â <literal>saveOrUpdate()</literal>
+ ÍÌViIÅ gíêÜ·B </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>AvP[VªÅÌZbVÅIuWFNgð[hµÜ·B </para>
+ </listitem>
+ <listitem>
+ <para>IuWFNgªUIwÉçêÜ·B </para>
+ </listitem>
+ <listitem>
+ <para>IuWFNgÉεÄÏXªÁ¦çêÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para> IuWFNgªrWlXWbNwÉçêÜ·B </para>
+ </listitem>
+ <listitem>
+ <para>
+ AvP[VÍA2ÔÚÌZbVÅ <literal>update()</literal>
+ ðÄÔ±ÆÅA±êçÌÏXði±»µÜ·B </para>
+ </listitem>
+ </itemizedlist>
+
+ <para> <literal>saveOrUpdate()</literal> ÍȺ̱Æðs¢Ü·B </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>IuWFNgª±ÌZbVÅA·ÅÉi±»³êÄ¢êÎA½àµÜ¹ñB </para>
+ </listitem>
+ <listitem>
+ <para>
+ »ÌZbVÉÖAâĢéÊÌIuWFNgª¯¶¯ÊqðÁÄ¢éÈçA áOð°Ü·B </para>
+ </listitem>
+ <listitem>
+ <para>
+ IuWFNg̯Êqªlð½È¢ÈçÎA <literal>save()</literal> µÜ·B </para>
+ </listitem>
+ <listitem>
+ <para>
+ IuWFNg̯Êqªlð¿A»ÌlªV½ÉCX^X»³ê½IuWFNg̽ßÌlÅ éêA »ÌIuWFNgð
+ <literal>save()</literal> µÜ·B </para>
+ </listitem>
+ <listitem>
+ <para>
+ IuWFNgªi <literal><version></literal> â
+ <literal><timestamp></literal> ÉæÁÄj
+ o[Wï³êÄ¢ÄAo[WÌvpeBªlð¿A
+ »ÌlªVµCX^X»³ê½IuWFNg̽ßÌlÅ éêA »ÌIuWFNgð
+ <literal>save()</literal> µÜ·B </para>
+ </listitem>
+ <listitem>
+ <para>
+ »¤ÅÈ¢êÍA»ÌIuWFNgð <literal>update()</literal> µÜ·B </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ »µÄA <literal>merge()</literal> ÍÈºÌæ¤ÉÆÄàÙÈèÜ·B </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ ¯¶¯ÊqðÂi±»CX^Xª»Ì_ÅZbVÆÖAt¢Ä¢éÈçÎA
+ øÅó¯æÁ½IuWFNgÌóÔði±»CX^XÉRs[µÜ·B </para>
+ </listitem>
+ <listitem>
+ <para>
+ i±»CX^Xª»Ì_ÅZbVÉÖAt¢Ä¢È¢ÈçA
+ f[^x[X©ç»êð[h·é©A é¢ÍAVµ¢i±»CX^Xð쬵ܷB </para>
+ </listitem>
+ <listitem>
+ <para>i±»CX^XªÔ³êÜ·B </para>
+ </listitem>
+ <listitem>
+ <para> øÆµÄ^¦½CX^XÍZbVÆÖAð¿Ü¹ñB »êÍAª£óÔÌÜÜÅ·B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="objectstate-deleting" revision="1">
+ <title>i±IuWFNgÌí</title>
+
+ <para>
+ <literal>Session.delete()</literal>
+ ÍIuWFNgÌóÔðf[^x[X©çíµÜ·B à¿ëñAíµ½IuWFNgðAvP[VªÛµ½ÜÜÅàæ¢Å·B
+ »Ì½ßA <literal>delete()</literal> Íi±CX^XðêIÉ·éàÌÆl¦é̪êÔÅ·B </para>
+
+ <programlisting><![CDATA[sess.delete(cat);]]></programlisting>
+
+ <para>
+ OL[§ñÉá½·éXNàÈAD«ÈÔÅIuWFNgðí·é±ÆªÅ«Ü·B
+ ½¾µAÔáÁ½ÔÅIuWFNgðí·éÆAOL[JÌ <literal>NOT NULL</literal>
+ §ñÉá½·éÂ\«ª èÜ·B á¦ÎAeIuWFNgðíµ½Æ«ÉAqIuWFNgðíµYê½êÅ·B </para>
+
+ </sect1>
+
+ <sect1 id="objectstate-replicating" revision="1">
+ <title>ÙÈéñÂÌf[^XgAÔÅÌIuWFNgÌvP[V</title>
+
+ <para>
+ i±CX^XÌOtðÊÌf[^XgAÉi±»·éêÉA
+ ¯ÊqÌlðͬ¹¸É·ÞÆÖÈêª èÜ·B </para>
+
+
+ <programlisting><![CDATA[//retrieve a cat from one database
+Session session1 = factory1.openSession();
+Transaction tx1 = session1.beginTransaction();
+Cat cat = session1.get(Cat.class, catId);
+tx1.commit();
+session1.close();
+
+//reconcile with a second database
+Session session2 = factory2.openSession();
+Transaction tx2 = session2.beginTransaction();
+session2.replicate(cat, ReplicationMode.LATEST_VERSION);
+tx2.commit();
+session2.close();]]></programlisting>
+
+ <para>
+ vP[VæÌf[^x[XÉsªùÉ éêA <literal>replicate()</literal>
+ ªÕËðÇÌæ¤Éµ¤©ð <literal>ReplicationMode</literal> ÅwèµÜ·B </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>ReplicationMode.IGNORE</literal> -
+ ¯¶¯ÊqðÂsªf[^x[XɶݷéÈçA »ÌIuWFNgð³µÜ·B </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>ReplicationMode.OVERWRITE</literal> - ¯¶¯ÊqðÂù¶Ìsð
+ ·×Ä㫵ܷB </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>ReplicationMode.EXCEPTION</literal> -
+ ¯¶¯ÊqðÂsªf[^x[XɶݷéÈçA áOð°Ü·B </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>ReplicationMode.LATEST_VERSION</literal> -
+ sÉÛ¶³êÄ¢éo[WÔªA øÌIuWFNgÌo[WÔæèâÈçÎA»Ìsð㫵ܷB
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ Ìæ¤ÈP[XÅA±Ì@\ðgpµÜ·B ÙÈéf[^x[XCX^XÉüêçê½f[^̯úA
+ »iXVɨ¯éVXeÝèîñÌXVAñACIDgUNVÌÈ©ÅÁ¦çê½ÏXÌ[obNÈÇÅ·B </para>
+
+ </sect1>
+
+ <sect1 id="objectstate-flushing">
+ <title>ZbVÌtbV
</title>
+
+ <para>
+ JDBCRlNVÌóÔÆãÌIuWFNgÌóÔð¯ú³¹é½ßÉKvÈ
+ SQL¶ð <literal>Session</literal> ªÀs·é±ÆªÆ«Ç« èÜ·B ±Ì
+ <emphasis>flush</emphasis> ÍAftHgÅÍÌÆ«ÉN±èÜ·B </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para> NGðÀs·éO </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>org.hibernate.Transaction.commit()</literal> ðÀsµ½Æ«
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Session.flush()</literal> ðÀsµ½Æ« </para>
+ </listitem>
+ </itemizedlist>
+
+ <para> SQL¶ÍȺÌÔÅs³êÜ·B
+ </para>
+
+ <orderedlist spacing="compact">
+ <listitem>
+ <para>
+ ·×ÄÌGeBeBÌ}üB±êÍA <literal>Session.save()</literal> ðgÁÄZ[uµ½
+ IuWFNgÌÉÀsµÄ¢«Ü·B </para>
+ </listitem>
+ <listitem>
+ <para> ·×ÄÌGeBeBÌXV </para>
+ </listitem>
+ <listitem>
+ <para> ·×ÄÌRNVÌí </para>
+ </listitem>
+ <listitem>
+ <para>
+ ·×ÄÌRNVÌvfÉηéíAXVA}ü </para>
+ </listitem>
+ <listitem>
+ <para>·×ÄÌRNVÌ}ü </para>
+ </listitem>
+ <listitem>
+ <para>
+ ·×ÄÌGeBeBÌíB±êÍA<literal>Session.delete()</literal> ðgÁÄ
+ íµ½IuWFNgÌÉÀsµÄ¢«Ü·B </para>
+ </listitem>
+ </orderedlist>
+
+ <para>
+ (PÂáOª èÜ·B <literal>native</literal> ID ¶¬ðgÁ½IuWFNgÍA
+ »êçªZ[u³ê½Æ«É}ü³êÜ·Bj </para>
+
+ <para>
+ ¾¦IÉ
+ <literal>flush()</literal> ·éÆ«ð¢ÄA <emphasis>¢Â</emphasis>
+ <literal>Session</literal> ªJDBCðR[·é̩ɢÄ
+ âÎIÈÛØÍ èܹñB½¾µA»êçªÀs³êé <emphasis>Ô</emphasis> ¾¯Í ÛØ³êÜ·B
+ ܽAHibernate ÍA <literal>Query.list(..)</literal> ªÃ¢f[^âÔáÁ½f[^ԳȢ±Æð
+ ÛØµÄ¢Ü·B </para>
+
+ <para>
+ tbV
ªpÉÉN±çÈ¢æ¤ÉftHgÌUé¢ðÏ¦é±ÆªÅ«Ü·B <literal>FlushMode</literal>
+ NXÍ3ÂÌÙÈé[hðè`µÜ·B »êÍAR~bgɾ¯tbV
·é[h iHibernateÌ
+ <literal>Transaction</literal> APIªgíêé꾯ŷjA
+ à¾Ì Á½Éîâĩ®ÅtbV
·é[hA <literal>flush()</literal>
+ ª¾¦IÉÄÎêÈ¢ÀètbV
µÈ¢[hÌRÂÅ·B ÅãÌ[hÍAìÆPʪ·úÔÉyÔêÉðɧ¿Ü· ( <xref
+ linkend="transactions-optimistic-longsession"/> ðQƵľ³¢)B
+ </para>
+
+
+ <programlisting><![CDATA[sess = sf.openSession();
+Transaction tx = sess.beginTransaction();
+sess.setFlushMode(FlushMode.COMMIT); // allow queries to return stale state
+
+Cat izi = (Cat) sess.load(Cat.class, id);
+izi.setName(iznizi);
+
+// might return stale data
+sess.find("from Cat as cat left outer join cat.kittens kitten");
+
+// change to izi is not flushed!
+...
+tx.commit(); // flush occurs
+sess.close();]]></programlisting>
+
+ <para>tbV
ÌÆ«AáOª¶·é©àµêܹñB
+ iá¦ÎADML쪧ñðá½·éæ¤ÈêÅ·Bj
+ áOðð·é½ßÉÍAHibernateÌgUNVÌUé¢ðð·éKvª é½ßA <xref
+ linkend="transactions"/> ÅྵܷB </para>
+
+ </sect1>
+
+ <sect1 id="objectstate-transitive" revision="1">
+ <title>A½IÈi±»</title>
+
+ <para>
+ ÂXÌIuWFNgðZ[uµ½èAíµ½èAÄÇÁµ½è·é±ÆÍ
+ ©ÈèÊ|Å·BÁÉAÖA·éIuWFNgðµ¤æ¤ÈêÉÍÛ§¿Ü·B æ éÌÍAeqÖWðµ¤P[XÅ·B
+ ȺÌáðl¦ÄÝܵå¤B </para>
+
+ <para>
+ àµAeqÖWÌqªl^Èçiá¦ÎAZâ¶ñÌRNVjA
+ »êçÌCtTCNÍeÉ˶µÄ¨èAÖÈóÔÏ»Ì"JXP[h"ðg¤½ßÉA ÇÁÌìÆÍKvÍ èܹñB
+ eªZ[u³ê½Æ«Al^ÌqIuWFNg௶æ¤ÉZ[u³êÜ·µA eªí³ê½Æ«ÍAqàí³êÜ·B»Ì¼Ìì௶ŷB
+ RNV©ç1ÂÌqðí·éæ¤ÈìÅà¤Ü¢«Ü·B ·Èí¿AHibernateͱÌíìðo·éÆA
+ l^ÌIuWFNgÍQÆð¤LūȢÌÅAf[^x[X©ç»ÌqðíµÜ·B </para>
+
+ <para>±±ÅAeÆqªl^ÅÈGeBeBŠ鯵ĝ¶ViIðl¦ÄÝܵå¤B
+ iá¦ÎAJeS[ÆiÚÌÖWâeÆqÌLÌÖWÅ·Bj GeBeBÍA»ê©gªCtTCNð¿AQÆÌ¤LðT|[gµÜ·B
+ i»Ì½ßARNV©çGeBeBðí·é±ÆÍA GeBeB©gÌíðÓ¡µÜ¹ñBj
+ ܽAGeBeBÍAftHgÅÍAÖA·é¼ÌGeBeBÖ óÔðJXP[h·é±ÆÍ èܹñB HibernateÍ
+ <emphasis>BÂ\«Éæéi±»</emphasis> ðftHgÅÍÀsµÜ¹ñB </para>
+
+ <para>
+ HibernateÌSessionÌî{ìi <literal>persist(), merge(), saveOrUpdate(),
+ delete(), lock(), refresh(), evict(), replicate()</literal> ªÜÜêÜ·jÉεÄA
+ »ê¼êÉηéJXP[hX^Cª èÜ·B »ê¼êÌJXP[hX^CÉÍA <literal>create, merge,
+ save-update, delete, lock, refresh, evict, replicate</literal>
+ Æ¢¤¼OªÂ¢Ä¢Ü·B àµAÖAÉÁÄJXP[h³¹½¢ìª éÈçA}bsOt@CÉ»¤wèµÈ¯êÎÈèܹñB
+ á¦ÎAÈºÌæ¤ÉµÜ·B </para>
+
+
+ <programlisting><![CDATA[<one-to-one name="person" cascade="persist"/>]]></programlisting>
+
+ <para> JXP[hX^CÍAgÝí¹é±ÆªÅ«Ü·B </para>
+
+
+ <programlisting><![CDATA[<one-to-one name="person" cascade="persist,delete,lock"/>]]></programlisting>
+
+ <para>
+ <emphasis>·×ÄÌ</emphasis>
+ ìðÖAÉÁÄJXP[h·éæ¤wè·éÆ«ÍA <literal>cascade="all"</literal> ðg¢Ü·B
+ ftHgÌ <literal>cascade="none"</literal> ÍAÇÌìàJXP[hµÈ¢±ÆðÓ¡µÜ·B
+ </para>
+
+ <para>
+ ÁêÈJXP[hX^C
+ <literal>delete-orphan</literal> ÍAêνÖAɾ¯ KpūܷB
+ ±êÍAÖA©çí³ê½qÌIuWFNgÉεÄA <literal>delete()</literal>
+ ìªKp³ê鱯ðÓ¡µÜ·B </para>
+
+ <para>¨··ßF </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ ÊA <literal><many-to-one></literal> â
+ <literal><many-to-many></literal> ÖAÉεÄÍA
+ JXP[hðÝè·éÓ¡Í èܹñB <literal><one-to-one></literal> Æ
+ <literal><one-to-many></literal> ÖAÉεÄÍA
+ JXP[hªðɧ±ƪ èÜ·B </para>
+ </listitem>
+ <listitem>
+ <para>
+ qIuWFNgÌõ½ªeIuWFNgÌõ½É§Àðó¯éÈçÎA
+ <literal>cascade="all,delete-orphan"</literal> ðwèµA qIuWFNgð
+ <emphasis>CtTCNIuWFNg</emphasis> ɵܷB </para>
+ </listitem>
+ <listitem>
+ <para> .
+ »êÈOÌêÍAJXP[hÍÙÆñÇKvȢŵå¤B
+ µ©µA¯¶gUNVÌÈ©ÅeÆqªêÉ®ì·é±Æª½¢Æv¢A
+ ¢ç©ÌR[hðèÔðÈ«½¢ÌÅ êÎA
+ <literal>cascade="persist,merge,save-update"</literal>
+ ðg¤±Æðl¦Üµå¤B </para>
+ </listitem>
+ </itemizedlist>
+
+ <para> <literal>cascade="all"</literal> Å}bsOµ½ÖAiPlÖAâRNVjÍA
+ <emphasis>eq</emphasis> X^CÌÖAÆ}[N³êÜ·B
+ »êÍAeÌZ[u/XV/íªAqÌZ[u/XV/íðø«N±·ÖW̱ÆÅ·B </para>
+
+ <para>
+ ³çÉAi±»³ê½eªqðPÉQƵĢ龯ÅAqÌZ[u/XVðø«N±µÜ·B
+ µ©µA±Ì^t@[Ís®SÅ·Be©çQƳêÈÈÁ½qÍA©®IÉí <emphasis>³êܹñ</emphasis> B
+ ½¾µA <literal>cascade="delete-orphan"</literal> Å}bsO³ê½
+ <literal><one-to-many></literal> ÖAð ¢ÄÅ·B
+ eqÖWÌJXP[hì̳mÈÓ¡ÍÈºÌæ¤ÉÈèÜ·B </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ eª
+ <literal>persist()</literal> Én³ê½ÈçÎA ·×ÄÌqÍ
+ <literal>persist()</literal> Én³êÜ·B </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>merge()</literal> Én³ê½ÈçÎA ·×ÄÌqÍ
+ <literal>merge()</literal> Én³êÜ·B </para>
+ </listitem>
+ <listitem>
+ <para>
+ eª <literal>save()</literal>
+ A <literal>update()</literal>
+ A <literal>saveOrUpdate()</literal> Én³ê½ÈçÎA·×ÄÌqÍ
+ <literal>saveOrUpdate()</literal> Én³êÜ·B </para>
+ </listitem>
+ <listitem>
+ <para>
+ êIܽͪ£óÔÌqªAi±»³ê½eÉQƳê½ÈçÎA
+ <literal>saveOrUpdate()</literal> Én³êÜ·B </para>
+ </listitem>
+ <listitem>
+ <para>
+ eªí³ê½ÈçÎA·×ÄÌqÍA <literal>delete()</literal> Én³êÜ·B </para>
+ </listitem>
+ <listitem>
+ <para>
+ qªi±»³ê½e©çQƳêÈÈÁ½Æ«ÍA <emphasis>ÁɽàN±èܹñ</emphasis> B
+ æÁÄAAvP[VªKvÅ êÎA¾¦IÉí·éKvª èÜ·B
+ ½¾µA <literal>cascade="delete-orphan"</literal> Ìêð«Ü·B
+ ±ÌêAueÌÈ¢vqÍí³êÜ·B </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ ÅãÉAìÌJXP[hªIuWFNgOtÉKp³êéÌÍA <emphasis>R[µ½</emphasis>
+ é¢ÍA <emphasis>flushµ½</emphasis> Š鱯Éӵľ³¢B
+ ·×ÄÌìÍA»ÌìªÀs³ê½Æ«ÉABÂ\ÈÖA·éGeBeBÉεÄ
+ JXP[hªÂ\ÈçJXP[hµÜ·B
+ µ©µA <literal>save-upate</literal> Æ
+ <literal>delete-orphan</literal> ÍA <literal>Session</literal>
+ ªflushµÄ¢éÔÉA ·×ÄÌBÂ\ÈÖA·éGeBeBÉ`dµÜ·B</para>
+ </sect1>
+
+ <sect1 id="objectstate-metadata">
+ <title>^f[^Ìgp</title>
+
+ <para>
+ HibernateÍA·×ÄÌGeBeBÆl^ÌñíÉb`È^xÌfðKvƵܷB
+ ƫǫA±ÌfÍAvP[VÉÆÁÄÆÄàðɧ¿Ü·B
+ á¦ÎAAvP[VÍAHibernateÌ^f[^ðgÁÄA"«¢" fB[vRs[ASYð
+ ÀÅ«é©àµÜ¹ñB»ÌASYÆÍAÇÌIuWFNgªRs[³êé׫©iáFÂÏÌl^jâ
+ ÇÌIuWFNgÍRs[³êȢ׫©iáFsÏÈl^âÂ\ÈçÖA·éGeBeBjð »fÅ«éàÌÅ·B </para>
+
+
+ <para>
+ HibernateÍ<literal>ClassMetadata</literal>
+ Æ<literal>CollectionMetadata</literal> C^tF[XÆ
+ <literal>Type</literal> KwðʵÄ^f[^ðöJµÜ·B
+ ^f[^C^[tFCXÌCX^XÍA <literal>SessionFactory</literal> ©ç¾çêÜ·B
+ </para>
+
+
+ <programlisting><![CDATA[Cat fritz = ......;
+ClassMetadata catMeta = sessionfactory.getClassMetadata(Cat.class);
+
+Object[] propertyValues = catMeta.getPropertyValues(fritz);
+String[] propertyNames = catMeta.getPropertyNames();
+Type[] propertyTypes = catMeta.getPropertyTypes();
+
+// get a Map of all properties which are not collections or associations
+Map namedValues = new HashMap();
+for ( int i=0; i<propertyNames.length; i++ ) {
+ if ( !propertyTypes[i].isEntityType() && !propertyTypes[i].isCollectionType() ) {
+ namedValues.put( propertyNames[i], propertyValues[i] );
+ }
+}]]></programlisting>
+
+ </sect1>
+
+</chapter>
\ No newline at end of file
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/toolset_guide.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/toolset_guide.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/toolset_guide.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/toolset_guide.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,634 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="toolsetguide" revision="2">
+ <title>Toolset Guide
+
+ c[ZbgKCh
+ </title>
+
+ <para>
+ HibernateðgÁ½EhgbvGWjAOÍA
+ EclipsevOCâR}hCc[Aà¿ëñAnt^XNðg¤±ÆÅÂ\Å·B
+ </para>
+
+ <para>
+ <emphasis>Hibernate Tools</emphasis> Í»ÝAù¶f[^x[XÌo[XGWjAOÌAnt^XNÉÁ¦ÄAEclipseIDEÌvOCðÜÝÜ·B
+ </para>
+
+ <itemizedlist>
+ <listitem><para>
+ <emphasis>}bsOGfB^:</emphasis>
+ HibernateÌXML}bsOt@CpÌGfB^ÅA
+ ©®â®Æ\¶²\¦ðT|[gµÄ¢Ü·BNX¼âvpeB/tB[h¼Éη驮â®àT|[gµA
+ ÊíÌXMLGfB^æèàÍÅ·B
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Console:</emphasis>
+ R\[ÍGNvXÌVµ¢r
[Å·B
+ R\[RtBM
[VÌc[I[o[r
[ÉÁ¦ÄAi±NXÆ»ÌÖAÌÝìpr
[à¾çêÜ·B
+ f[^x[XÉHQLðÀsµAÊð¼ÚGNvXãũ鱯ªÅ«Ü·B
+ </para></listitem>
+ <listitem><para>
+ <emphasis>JEBU[h</emphasis>
+ HibernateÌEclipsec[͢©ÌEBU[hðñµÜ·B
+ EBU[hðgÁÄHibernateÌÝèt@C(cfg.xml)ð·Îⶬµ½èA
+ ù¶Ìf[^x[XXL[}ðPOJOÌ\[Xt@CÆHibernateÌ}bsOt@CÖÆA
+ ®SÉo[XGWjAO·é±ÆªÅ«Ü·B
+ o[XGWjAOEBU[hÍJX^}CYÂ\Èev[gðT|[gµÜ·B
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Ant Tasks:</emphasis>
+ </para></listitem>
+
+ </itemizedlist>
+
+ <para>
+ æèÚµ¢îñÍ <emphasis>Hibernate Tools</emphasis> pbP[WÆ»ÌhL
gðQƵľ³¢B
+ </para>
+
+ <para>
+ µ©µAHibernateÌCpbP[WÍ <emphasis>SchemaExport</emphasis> A
+ ʼ <literal>hbm2ddl</literal> àÜÝÜ·(HibernateàÅIUtCÅgpūܷ)B
+ </para>
+
+ <sect1 id="toolsetguide-s1" revision="2">
+ <title>XL[}Ì©®¶¬</title>
+
+ <para>
+ DDLÍHibernate[eBeBÉæè}bsOt@C©ç¶¬·é±ÆªÅ«Ü·B
+ ¶¬³ê½XL[}ÍGeBeBâRNVÌe[uÉηéQÆ®«§ñ(åL[ÆOL[)ðÜÝÜ·B
+ e[uÆV[PXÍ}bsO·é¯ÊqWFl[^Éεͬ³êÜ·B
+ </para>
+
+ <para>
+ DDLÍx_[˶ÈÌÅA±Ìc[ðg¤Æ«ÍA<literal>hibernate.dialect</literal>
+ vpeBÅSQLÌ <literal>û¾</literal> ðwè <emphasis>µÈ¯êÎÈèܹñ</emphasis> B
+ </para>
+
+ <para>
+ ܸA¶¬³êéXL[}ðüP·éæ¤ÉA}bsOt@CðJX^}CYµÄ¾³¢B
+ </para>
+
+ <sect2 id="toolsetguide-s1-2" revision="3">
+ <title>XL[}ÌJX^}CY</title>
+
+ <para>
+ ½ÌHibernateÌ}bsOvfÅÍAIvVÌ <literal>length</literal> Æ¢¤¼Ì®«ðè`µÄ¢Ü·B
+ ±Ì®«ÅJ·ðÝè·é±ÆªÅ«Ü·(ܽÍNUMERIC/DECIMAL^Ìf[^̸xðÝèūܷ)B
+ </para>
+
+ <para>
+ <literal>not-null</literal> ®«ie[uÌJÖ <literal>NOT NULL</literal> §ñ𶬷éjÆ
+ <literal>unique</literal> ®«ie[uÌJÖ <literal>UNIQUE</literal> §ñ𶬷éjªÝèÅ«é^Oà èÜ·B
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="bar" column="barId" not-null="true"/>]]></programlisting>
+
+ <programlisting><![CDATA[<element column="serialNumber" type="long" not-null="true" unique="true"/>]]></programlisting>
+
+ <para>
+ <literal>unique-key</literal> ®«ÍJðO[v»µÄêÂÌL[§ñÉ·é½ßÉgíêÜ·B
+ »ÝA<literal>unique-key</literal> ®«Åwè³ê½lͧñÌwèÉÍ <emphasis>gíê¸</emphasis> A
+ }bsOt@CÅJðO[v»·é±ÆÉÌÝgíêÜ·B
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="org" column="orgId" unique-key="OrgEmployeeId"/>
+<property name="employeeId" unique-key="OrgEmployeeId"/>]]></programlisting>
+
+
+
+ <para>
+ <literal>index</literal> ®«Í}bsO·éJðgÁͬµ½CfbNX̼OðwèµÜ·B
+ ¡JðPÂÌCfbNXÉO[v»Å«Ü·BPÉA¯¶CfbNX¼ðwè·é¾¯Å·B
+ </para>
+
+<programlisting><![CDATA[<property name="lastName" index="CustName"/>
+<property name="firstName" index="CustName"/>]]></programlisting>
+
+ <para>
+ <literal>foreign-key</literal> ®«ÍA¶¬³ê½OL[§ñ̼OðI[o[Ch·é½ßÉgpūܷB
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="bar" column="barId" foreign-key="FKFooBar"/>]]></programlisting>
+
+ <para>
+ ½Ì}bsOvfÍAq <literal><column></literal> vfðLqūܷB±êÍ¡J^Ì}bsOÉÍÁÉLpÅ·B
+ </para>
+
+ <programlisting><![CDATA[<property name="name" type="my.customtypes.Name"/>
+ <column name="last" not-null="true" index="bar_idx" length="30"/>
+ <column name="first" not-null="true" index="bar_idx" length="20"/>
+ <column name="initial"/>
+</property>]]></programlisting>
+
+ <para>
+ <literal>default</literal> ®«ÍJÌftHglðwèµÜ·
+ (}bsOµ½NXÌVµ¢CX^XðÛ¶·éOÉA
+ }bsOµ½vpeBÖ¯¶lðãü·×«Å·)B
+ </para>
+
+ <programlisting><![CDATA[<property name="credits" type="integer" insert="false">
+ <column name="credits" default="10"/>
+</property>]]></programlisting>
+
+ <programlisting><![CDATA[<version name="version" type="integer" insert="false">
+ <column name="version" default="0"/>
+</property>]]></programlisting>
+
+ <para>
+ <literal>sql-type</literal> ®«ÅAftHgÌHibernate^©çSQLÌf[^^ÖÌ}bsOðI[o[ChūܷB
+ </para>
+
+
+ <programlisting><![CDATA[<property name="balance" type="float">
+ <column name="balance" sql-type="decimal(13,3)"/>
+</property>]]></programlisting>
+
+
+ <para>
+ <literal>check</literal> ®«Å`FbN§ñðwè·é±ÆªÅ«Ü·B
+ </para>
+
+ <programlisting><![CDATA[<property name="foo" type="integer">
+ <column name="foo" check="foo > 10"/>
+</property>]]></programlisting>
+
+ <programlisting><![CDATA[<class name="Foo" table="foos" check="bar < 100.0">
+ ...
+ <property name="bar" type="float"/>
+</class>]]></programlisting>
+
+
+ <table frame="topbot" id="schemattributes-summary" revision="2">
+ <title>ÜÆß</title>
+ <tgroup cols="3">
+ <colspec colwidth="1*"/>
+ <colspec colwidth="1*"/>
+ <colspec colwidth="2.5*"/>
+ <thead>
+ <row>
+ <entry>®«</entry>
+ <entry>l</entry>
+ <entry>à¾</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><literal>length</literal></entry>
+ <entry>l</entry>
+ <entry>JÌ·³</entry>
+ </row>
+
+ <row>
+ <entry><literal>precision</literal></entry>
+ <entry>l</entry>
+ <entry>JÌDECIMAL^̸xiprecisionj</entry>
+ </row>
+
+ <row>
+ <entry><literal>scale</literal></entry>
+ <entry>l</entry>
+ <entry>JÌDECIMAL^ÌXP[iscalej</entry>
+ </row>
+
+ <row>
+ <entry><literal>not-null</literal></entry>
+ <entry><literal>true|false</literal></entry>
+ <entry>JªnulllðæçÈ¢±ÆðwèµÜ·
+ </entry>
+ </row>
+ <row>
+ <entry><literal>unique</literal></entry>
+ <entry><literal>true|false</literal></entry>
+ <entry>Jªj[N§ñð±ÆðwèµÜ·
+ </entry>
+ </row>
+ <row>
+ <entry><literal>index</literal></entry>
+ <entry><literal>CfbNX¼</literal> </entry>
+ <entry>(¡JÌ)CfbNX̼OðwèµÜ·
+ </entry>
+ </row>
+ <row>
+ <entry><literal>unique-key</literal></entry>
+ <entry><literal>j[NL[¼</literal></entry>
+ <entry>¡JÌj[N§ñ̼OðwèµÜ·
+ </entry>
+ </row>
+ <row>
+ <entry><literal>foreign-key</literal></entry>
+ <entry><literal>OL[¼</literal></entry>
+ <entry>
+ <one-to-one>A<many-to-one>A<many-to-many>}bsOvfðgÁÄA
+ ÖAÉ嶬³ê½OL[§ñ̼OðwèµÜ·B
+ <literal>SchemaExport</literal> Í <literal>inverse="true"</literal> ¤ðl¶µÈ¢±ÆÉӵľ³¢B
+ </entry>
+ </row>
+ <row>
+ <entry><literal>sql-type</literal></entry>
+ <entry><literal>SQLÌJ^</literal></entry>
+
+ <entry>
+ ftHgÌJ^ðI[o[ChµÜ·( <literal><column></literal> vfÌ®«ÌÝ)
+ </entry>
+ </row>
+
+ <row>
+ <entry><literal>default</literal></entry>
+ <entry>SQL®</entry>
+
+ <entry>
+ JÌftHglðwèµÜ·
+ </entry>
+ </row>
+
+ <row>
+ <entry><literal>check</literal></entry>
+ <entry>SQL®</entry>
+
+ <entry>
+ J©e[uÉSQLÌ`FbN§ñð쬵ܷ
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ <literal><comment></literal> vfŶ¬·éXL[}ÉRgðwè·é±ÆªÅ«Ü·B
+
+ </para>
+
+ <programlisting><![CDATA[<class name="Customer" table="CurCust">
+ <comment>Current customers only</comment>
+ ...
+</class>]]></programlisting>
+
+ <programlisting><![CDATA[<property name="balance">
+ <column name="bal">
+ <comment>Balance in USD</comment>
+ </column>
+</property>]]></programlisting>
+
+ <para>
+ ±êÉæèA¶¬µ½DDLÉ <literal>comment on table</literal> â <literal>comment on column</literal> ¶ª©êÜ·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="toolsetguide-s1-3" revision="2">
+ <title>c[ÌÀs</title>
+
+ <para>
+ <literal>SchemaExport</literal> ÍWoÍÉεÄDDLXNvgð«oµADDL¶ðÀsµ½èàµÜ·B
+ </para>
+
+ <para>
+ <literal>java -cp </literal> <emphasis>hibernate_classpaths</emphasis>
+ <literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options mapping_files</emphasis>
+ </para>
+
+ <table frame="topbot">
+ <title> <literal>SchemaExport</literal> Command Line Options
+
+ <literal>SchemaExport</literal> ÌR}hCIvV
+ </title>
+ <tgroup cols="2">
+ <colspec colwidth="1.5*"/>
+ <colspec colwidth="2*"/>
+ <thead>
+ <row>
+ <entry>IvV</entry>
+ <entry>à¾</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> <literal>--quiet</literal> </entry>
+ <entry>XNvgðWoÍÉo͵ܹñ</entry>
+ </row>
+ <row>
+ <entry> <literal>--drop</literal> </entry>
+ <entry>e[uÌí¾¯ðs¢Ü·</entry>
+ </row>
+
+ <row>
+ <entry> <literal>--create</literal> </entry>
+ <entry>e[u̶¬ÌÝðs¢Ü·B
+ </entry>
+ </row>
+
+ <row>
+ <entry> <literal>--text</literal> </entry>
+ <entry>f[^x[XÉGNX|[gµÜ¹ñ</entry>
+ </row>
+ <row>
+ <entry> <literal>--output=my_schema.ddl</literal> </entry>
+ <entry> DDLXNvgðt@CÉo͵ܷ</entry>
+ </row>
+
+ <row>
+ <entry> <literal>--naming=eg.MyNamingStrategy</literal> </entry>
+ <entry> <literal>NamingStrategy</literal> ðIðµÜ·
+ </entry>
+ </row>
+
+ <row>
+ <entry><literal>--config=hibernate.cfg.xml</literal> </entry>
+ <entry>XMLt@C©çHibernateÌè`îñðÇÝÝÜ·</entry>
+ </row>
+ <row>
+ <entry> <literal>--properties=hibernate.properties</literal> </entry>
+ <entry>t@C©çf[^x[XvpeBðÇÝÝÜ·</entry>
+ </row>
+ <row>
+ <entry> <literal>--format</literal> </entry>
+ <entry>XNvgàɶ¬·éSQLðÇÝâ·¢æ¤ÉtH[}bgµÜ·</entry>
+ </row>
+ <row>
+ <entry> <literal>--delimiter=x</literal> </entry>
+ <entry>XNvgÌsæØè¶ðÝèµÜ·</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ AvP[VÉ <literal>SchemaExport</literal> ðgÝÞ±ÆàūܷF
+ </para>
+
+ <programlisting><![CDATA[Configuration cfg = ....;
+new SchemaExport(cfg).create(false, true);]]></programlisting>
+
+ </sect2>
+
+
+ <sect2 id="toolsetguide-s1-4">
+ <title>vpeB</title>
+
+ <para>
+ Ìæ¤ÉAf[^x[XÌvpeBðwè·é±ÆªÅ«Ü·B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para><literal>-D</literal> <emphasis><property></emphasis> ðgÁÄAVXevpeBƵÄ
+ </para>
+ </listitem>
+ <listitem>
+ <para><literal>hibernate.properties</literal> t@CàÅ
+ </para>
+ </listitem>
+ <listitem>
+ <para> <literal>--properties</literal> ðgÁÄwèµ½vpeBt@CàÅ
+
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ KvÈvpeBÍȺÌàÌÅ·F
+ </para>
+
+ <table frame="topbot">
+ <title>SchemaExportRlNVvpeB</title>
+ <tgroup cols="2">
+ <colspec colwidth="1.5*"/>
+ <colspec colwidth="2*"/>
+ <thead>
+ <row>
+ <entry>vpeB¼
+ </entry>
+ <entry>à¾
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> <literal>hibernate.connection.driver_class</literal> </entry>
+ <entry>jdbcÌhCo[NX
+ </entry>
+ </row>
+ <row>
+ <entry> <literal>hibernate.connection.url</literal> </entry>
+ <entry>jdbcÌurl
+ </entry>
+ </row>
+ <row>
+ <entry> <literal>hibernate.connection.username</literal> </entry>
+ <entry>f[^x[XÌ[U
+ </entry>
+ </row>
+ <row>
+ <entry> <literal>hibernate.connection.password</literal> </entry>
+ <entry>[UpX[h
+ </entry>
+ </row>
+ <row>
+ <entry> <literal>hibernate.dialect</literal> </entry>
+ <entry>f[^x[Xû¾
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </sect2>
+
+ <sect2 id="toolsetguide-s1-5">
+ <title>Antðgp·é</title>
+
+ <para>
+ AntÌrhXNvg©ç <literal>SchemaExport</literal> ðÄÑo·±ÆªÅ«Ü·B:
+ </para>
+
+ <programlisting><![CDATA[<target name="schemaexport">
+ <taskdef name="schemaexport"
+ classname="org.hibernate.tool.hbm2ddl.SchemaExportTask"
+ classpathref="class.path"/>
+
+ <schemaexport
+ properties="hibernate.properties"
+ quiet="no"
+ text="no"
+ drop="no"
+ delimiter=";"
+ output="schema-export.sql">
+ <fileset dir="src">
+ <include name="**/*.hbm.xml"/>
+ </fileset>
+ </schemaexport>
+</target>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="toolsetguide-s1-6" revision="2">
+ <title>CN^ÈXL[}XV
+ </title>
+
+ <para>
+ <literal>SchemaUpdate</literal> c[Íù¶ÌXL[}ðCN^ÉXVµÜ·B
+ <literal>SchemaUpdate</literal> ÍJDBCÌ^f[^APIÉ˶µÜ·B
+ »Ì½ßA·×ÄÌJDBChCoŤܢÆÍÀçÈ¢±ÆÉӵľ³¢B
+ </para>
+
+ <para>
+ <literal>java -cp </literal> <emphasis>hibernate_classpaths</emphasis>
+ <literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options mapping_files</emphasis>
+ </para>
+
+ <table frame="topbot">
+ <title> <literal>SchemaUpdate</literal> ÌR}hC¥IvV</title>
+ <tgroup cols="2">
+ <colspec colwidth="1.5*"/>
+ <colspec colwidth="2*"/>
+ <thead>
+ <row>
+ <entry>IvV</entry>
+ <entry>à¾</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> <literal>--quiet</literal> </entry>
+ <entry>WoÍÉXNvgðo͵ܹñ</entry>
+ </row>
+
+ <row>
+ <entry> <literal>--text</literal> </entry>
+ <entry>f[^x[XÉXNvgðGNX|[gµÜ¹ñ
+ </entry>
+ </row>
+ <row>
+ <entry> <literal>--naming=eg.MyNamingStrategy</literal> </entry>
+ <entry><literal>NamingStrategy</literal> ðIðµÜ·B
+ </entry>
+ </row>
+
+ <row>
+ <entry> <literal>--properties=hibernate.properties</literal> </entry>
+ <entry>t@C©çf[^x[XvpeBðÇÝÝÜ·
+ </entry>
+ </row>
+
+ <row>
+ <entry> <literal>--config=hibernate.cfg.xml</literal> </entry>
+ <entry><literal>.cfg.xml</literal> t@CðwèµÜ·
+ </entry>
+ </row>
+
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ AvP[VÉ <literal>SchemaUpdate</literal> ðgÝޱƪūܷBF
+ </para>
+
+ <programlisting><![CDATA[Configuration cfg = ....;
+new SchemaUpdate(cfg).execute(false);]]></programlisting>
+
+ </sect2>
+
+
+ <sect2 id="toolsetguide-s1-7">
+ <title>CN^ÈXL[}XVÉηéAntÌgp</title>
+
+ <para>
+ AntXNvg©ç <literal>SchemaUpdate</literal> ðÄÑo·±ÆªÅ«Ü·F
+ </para>
+
+ <programlisting><![CDATA[<target name="schemaupdate">
+ <taskdef name="schemaupdate"
+ classname="org.hibernate.tool.hbm2ddl.SchemaUpdateTask"
+ classpathref="class.path"/>
+
+ <schemaupdate
+ properties="hibernate.properties"
+ quiet="no">
+ <fileset dir="src">
+ <include name="**/*.hbm.xml"/>
+ </fileset>
+ </schemaupdate>
+</target>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="toolsetguide-s1-8" revision="1">
+ <title>Schema validation</title>
+
+ <para>
+ <literal>SchemaValidator</literal> c[ÍAù¶Ìf[^x[XXL[}Æì¬µ½}bsOhL
gª"êv·é"±ÆðصܷB <literal>SchemaValidator</literal> ÍJDBCÌ^f[^APIÉ˶·é±ÆÉӵľ³¢B»Ì½ßA·×ÄÌJDBChCo[Åì®·éàÌÅÍ èܹñB±Ìc[ÍeXgÉñíÉLpÅ·B
+ </para>
+
+ <para>
+ <literal>java -cp </literal> <emphasis>hibernate_classpaths</emphasis>
+ <literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> <emphasis>options mapping_files</emphasis>
+ </para>
+
+ <table frame="topbot">
+ <title> <literal>SchemaValidator</literal> ÌR}hCEIvV
+ </title>
+ <tgroup cols="2">
+ <colspec colwidth="1.5*"/>
+ <colspec colwidth="2*"/>
+ <thead>
+ <row>
+ <entry>IvV</entry>
+ <entry>à¾</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> <literal>--naming=eg.MyNamingStrategy</literal> </entry>
+ <entry><literal>NamingStrategy</literal> ðIðµÜ·
+ </entry>
+ </row>
+ <row>
+ <entry> <literal>--properties=hibernate.properties</literal> </entry>
+ <entry>t@C©çf[^x[XÌvpeBðÇÝÝÜ·
+ </entry>
+ </row>
+ <row>
+ <entry> <literal>--config=hibernate.cfg.xml</literal> </entry>
+ <entry><literal>.cfg.xml</literal> t@CðwèµÜ·
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ <literal>SchemaValidator</literal> ðAvP[VÉgÝޱƪoÜ·:
+ </para>
+
+ <programlisting><![CDATA[Configuration cfg = ....;
+new SchemaValidator(cfg).validate();]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="toolsetguide-s1-9">
+ <title>XL[}Ìof[VÉAntðgpµÜ·</title>
+
+ <para>
+ AntXNvg©ç <literal>SchemaValidator</literal> ðÄÑo¹Ü·:
+ </para>
+
+ <programlisting><![CDATA[<target name="schemavalidate">
+ <taskdef name="schemavalidator"
+ classname="org.hibernate.tool.hbm2ddl.SchemaValidatorTask"
+ classpathref="class.path"/>
+
+ <schemavalidator
+ properties="hibernate.properties">
+ <fileset dir="src">
+ <include name="**/*.hbm.xml"/>
+ </fileset>
+ </schemavalidator>
+</target>]]></programlisting>
+
+ </sect2>
+
+ </sect1>
+
+</chapter>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/transactions.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/transactions.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/transactions.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/transactions.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,1276 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="transactions" revision="2">
+ <title>gUNVÆÀs«</title>
+
+ <para>
+ HibernateƯÀs§äÉ¢ÄÅàdvÈ_ÍAeÕÉðū鱯ŷB
+ HibernateÍV½ÈbNÌUé¢ðÇÁµÄ¨ç¸A¼ÚJDBCRlNVÆJTA\[XðgpµÜ·B
+ JDBCAANSIA¨æÑf[^x[XÇVXeiDBMSjÌgUNVª£Ìdlð
+ µÔð©¯Ä׷鱯ð§µÜ·B
+ </para>
+
+ <para>
+ HibernateÍàÌIuWFNgðbNµÜ¹ñB
+ AvP[VÍAf[^x[XgUNV̪£xÅ
+ è`µ½Ué¢ðúÒūܷB
+ gUNVXR[vÌLbV
Åà é <literal>Session</literal> ̨AÅA
+ ¯ÊqâNGÉæèõµ½GeBeBÍs[^u[hÉÈèÜ·
+ iXJ[lðÔ·æ¤È|[gNGÍá¢Ü·jB
+ </para>
+
+ <para>
+ o[WjOÉæé©®IÈyÏI¯Às§äÉÁ¦ÄA
+ <literal>SELECT FOR UPDATE</literal> ¶ðgpµÄA
+ sðßÏIbN·é½ßÌi}Ci[ÈjAPIàñµÜ·B
+ yÏI¯Às§äƱÌAPIÉ¢ÄÍA±ÌÍÌãÌÙ¤Åc_µÜ·B
+ </para>
+
+ <para>
+ f[^x[XgUNVâ·¢ÎbiconversationAOgUNVj¾¯ÅÈA
+ <literal>Configuration</literal>A<literal>SessionFactory</literal>A¨æÑ
+ <literal>Session</literal>
+ Æ¢¤±xÅHibernateªs¤¯Às§äÌc_ðnßÜ·B
+ </para>
+
+ <sect1 id="transactions-basics" revision="1">
+ <title>sessionXR[vÆtransactionXR[v</title>
+
+ <para>
+ <literal>SessionFactory</literal> Ͷ¬·é±Æª¿ÅA
+ XbhZ[tÈIuWFNgÅ·B
+ æÁÄAAvP[VÌ·×ÄÌXbhŤL·×«Å·B
+ ÊíAAvP[VÌN®ÉA
+ <literal>Configuration</literal> CX^X©çPx¾¯¶¬µÜ·B
+ </para>
+
+ <para>
+ <literal>Session</literal> Í¿ÅÍÈAXbhZ[tÈIuWFNgÅà èܹñB
+ æÁÄAPÂÌvâPÂÌÎbAPÂÌìÆPÊiunit of workjÉεÄPx¾¯g¢A
+ »ÌãÅÌÄé׫ŷB
+ <literal>Session</literal> ÍKvÉÈéÜÅA
+ JDBC <literal>Connection</literal>iàµÍ <literal>DataSource</literal>jðl¾µÜ¹ñB
+ ä¦ÉAÀÛÉgp·éÆ«ÜÅ\[XðÁïµÜ¹ñB
+ </para>
+
+ <para>
+ ±Ìóµð®¹³¹é½ßÉA f[^x[XgUNVÉ¢Äàl¦È¯êÎÈèܹñB
+ f[^x[XàÌbNÌ£ðÈ·é½ßÉA
+ f[^x[XgUNVÍÂ\ÈÀèZ·é׫ŷB
+ ·¢f[^x[XgUNVÍAAvP[VÌ¢ÀñÀs«ðjQµÜ·B
+ ä¦ÉA[U[ªl¦Ä¢éÔiìÆPʪ®¹·éÜÅjf[^x[XgUNVð
+ J¢½ÜÜÉ·éÌÍA½¢Ä¢Ìêæ¢ÝvÆÍ¢¦Ü¹ñB
+ </para>
+
+ <para>
+ ìÆPÊÆ¢¤XR[vÆÍ½Åµå¤©H
+ PÂÌHibernate <literal>Session</literal> ÍA
+ ¢Â©Ìf[^x[XgUNVðܽªé±ÆªÅ«éŵ天H
+ ܽÍAXR[vÆêÎêÌÖWŵ天H
+ ¢Â <literal>Session</literal> ðJ«A¶é׫ŵ天H
+ »µÄAf[^x[XgUNV«EðÇÌæ¤Éª¯éÌŵ天H
+ </para>
+
+ <sect2 id="transactions-basics-uow" revision="1">
+ <title>ìÆPÊiUnit of workj</title>
+
+ <para>
+ PÂÚÍA<emphasis>session-per-operation</emphasis> A`p^[ðgÁÄÍ¢¯Ü¹ñB
+ ·Èí¿APÂÌXbhÌÅAPÈf[^x[XÄÑoµÌ½ÑÉ
+ <literal>Session</literal> ðJ¢ÄA¶ÄÍ¢¯Ü¹ñI
+ à¿ëñAf[^x[XgUNVÉ¢Äà¯lÅ·B
+ AvP[VÌf[^x[XÄÑoµÍA
+ væ³ê½V[PXiplanned sequencejðg¢A
+ Ag~bNÈìÆPÊɪ޳êÜ·B
+ iPÂÌSQL¶²ÆÉR~bg·é©®R~bgªA
+ gíêȢƢ¤Ó¡Åà 鱯Éӵľ³¢B
+ ©®R~bgÍASQLR\[ÅAhzbNÈìÆð·éÛÉg¤àÌÅ·B
+ Hibernateͼ¿É©®R~bg[hð³øÉµÜ·B
+ àµÍAAvP[VT[o[ª³ø»·é±ÆðúҵܷBj
+ f[^x[XgUNVÍIvVÅÍ èܹñB
+ f[^x[XÆÌ·×ÄÌÊMÍAf[^ÌÇÝÝÅ ÁÄàA«ÝÅ ÁÄàA
+ gUNVÌÅsíȯêÎÈèܹñB
+ ྷéÆAf[^ÇÝÝÉεÄA©®R~bgÍð¯é׫ŷB
+ ȺÈçA½Ì¬³ÈgUNVÍA¾mÉè`³ê½PÂÌìÆPÊÆä×ÄA
+ ptH[}XªæÈé±ÆÍ èܹñB
+ ãÒÍÛç«âg£«àæè·®êĢܷB
+ </para>
+
+ <para>
+ }`[U[ÌNCAg^T[o[AvP[VÌÅA
+ Åàægíêép^[ÍA<emphasis>session-per-request</emphasis> Å·B
+ ±ÌfÌÅÍA
+ NCAg©çiHibernatei±»wª®ì·éjT[o[ÖNGXgªçêA
+ Vµ¢Hibernate <literal>Session</literal> ªJ©êÜ·B
+ »µÄA±ÌìÆPÊÌÅ·×ÄÌf[^x[XªÀs³êÜ·B
+ ìÆª®¹µ½i»µÄANCAgÖÌX|XªõÅ«½j_ÅA
+ session ðtbV
µA¶ܷB
+ NCAgÌvð·é½ßÉAPÂÌf[^x[XgUNVðgp·éŵå¤B
+ <literal>Session</literal> ðJ«A¶éÛÉA
+ f[^x[XgUNVðJnµAR~bgµÜ·B
+ ñÂÌÖWÍêÎêÅ·B
+ ±ÌfͽÌAvP[VÉ®SÉKµÜ·B
+ </para>
+
+ <para>
+ È~ÌÀÉ`WµÄ¾³¢B
+ <literal>Session</literal> ð¿AgUNVð³mÉJnµAIíç¹é¾¯ÅÈA
+ f[^ANZXìà¾â··éKvª èÜ·B
+ NGXgªT[o[Éqbgµ½ÛÆAX|XðM·éOÉAÀs³êéinterceptor
+ iá¦ÎA<literal>ServletFilter</literal>jðgÁÄAìÆPÊÌ«EðÀ·é̪zIÅ·B
+ <literal>ThreadLocal</literal> ÏðgÁÄA
+ NGXgð·éXbhÉ <literal>Session</literal> ðÑÂ¯é±Æð§µÜ·B
+ ±êÉæèAXbhàÅÀs³êé·×ÄÌR[hÅA
+ istaticÏÉANZX·éæ¤ÉjÈPÉ <literal>Session</literal> ÉANZXū鿤ÉÈèÜ·B
+ Iðµ½f[^x[XgUNV«EÌ@\æÅA<literal>ThreadLocal</literal>
+ ÏÌÉgUNVReLXgðÛ·é©àµêܹñB
+ ±ÌÀp^[ÍA<emphasis>ThreadLocal Session</emphasis> ¨æÑ
+ <emphasis>Open Session in View</emphasis> Æ¢¤¼OÅmçêĢܷB
+ {hL
gſɩ¹½ <literal>HibernateUtil</literal> wp[NXðg£·é±ÆÅA
+ ±Ìp^[ðeÕÉÀūܷB
+ à¿ëñAinterceptor ðÀ·éû@ð©Â¯A«ðZbgAbv·éKvª èÜ·B
+ HibernateÌWebTCgÉ étipsÆáðQƵľ³¢B
+ </para>
+
+ <para>
+ È~ÌÀÉ`WµÄ¾³¢B
+ HibernateÍPȱÌp^[̽ßÉA\ßgÝÜê½
+ ucurrent sessionvÌÇðñµÜ·B
+ T[o[NGXgð·éÛÍgUNVðJnµÈ¯êÎÈèܹñB
+ »µÄAX|XðNCAgÉM·éOÉgUNVðIíç¹Ü·B
+ D«Èû@ÅÀ»Å«Ü·BêÊIÈðôÍ <literal>ServletFilter</literal> â
+ T[rX\bhð|CgJbgµÄAOPC^[Zv^[A
+ proxy/interception ReiÅ·B
+ EJBReiÍEJBZbVr[ðgUNV«EƵÄ
+ AXyNgðNXJbg·éÀÌWIÈû@Å·iCMTÉæéé¾IjB
+ vOÉæégUNV«Eðg¤Æß½êA
+ ÈPÉg¤½ßAÝ·«Ì éR[hÉ·é½ßÉA
+ ±ÌÍÌãÌÙ¤É éHibernate <literal>Transaction</literal> APIÌÙ¤ªæ¢Å·B
+ </para>
+
+ <para>
+ AvP[VÌR[hÍAKvÈÆ«ÉDZÅàA½ñÅàA
+ PÉ <literal>sessionFactory.getCurrentSession()</literal> ðÄÑo·¾¯Å
+ u»ÝÌZbVvÉANZXūܷB
+ »ÝÌf[^x[XgUNVÖÌ <literal>ZbV</literal> ðíÉæ¾µÜ·B
+ \[XE[JÈ«AàµÍJTA«ð\¬µÈ¯êÎÈèܹñ
+ i<xref linkend="architecture-current-session"/> ðQƵľ³¢jB
+ </para>
+
+ <para>
+ ƫǫAur
[ð`æ·évÜÅ <literal>ZbV</literal>
+ Æf[^x[XgUNVÌXR[vðg£·éÆÖȱƪ èÜ·B
+ ±êÍAvÌÆ`æÌtF[Yðª¯Ä¢é
+ T[ubgAvP[Vɨ¢ÄÁÉð§¿Ü·B
+ Æ©ÌC^[Zv^ðÀ·êÎA
+ r
[ð`æ·éÜÅf[^x[XgUNVðg£·éÌÍÈPÅ·B
+ µ©µAReiÇgUNVÌEJBÉéêÍAÈPÉÍūܹñB
+ ȺÈçAr
[Ì`æðJn·éOÉAEJBÌ\bhª^[µ½ÛÉA
+ gUNVª®¹·é½ßÅ·B
+ ±Ì <emphasis>Open Session in View</emphasis> p^[ÉÖA·éqgÆáÉ¢ÄÍA
+ HibernateÌWebTCgâtH[ðQƵľ³¢B
+ </para>
+
+ </sect2>
+
+ <sect2 id="transactions-basics-apptx" revision="1">
+ <title>·¢Îb</title>
+
+ <para>
+ session-per-requestp^[ÍAìÆPÊðÝv·éÛÉð§Âl¦Æ¢¤¾¯ÅÍ èܹñB
+ ½ÌrWlXvZXÍA[U[ÆÌêAÌÝìpSÌðvµÜ·B
+ »ÌÝìpÉÍAf[^x[XANZXªÜÜêÜ·B
+
+ WebÆG^[vCYAvP[VÅÍAf[^x[XgUNVª
+ [UÆÌÝìpÉÜÅné±ÆÍ³êܹñB
+
+ Ìáðæl¦ÄÝľ³¢B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ _CAOÌÅÌæÊªJ«AÂXÌ <literal>Session</literal>
+ Æf[^x[XgUNVÌÅ[h³ê½f[^ð[U[É©¹Ü·B
+ [U[ÍIuWFNgð©RÉC³Å«Ü·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 5ªãÉ[U[ÍuSavevðNbNµAC³ªi±»³êéÌðúҵܷB
+ ܽA±ÌîñðÒWµ½ÌÍ©ªPl¾¯ÅA
+ C³ÌRtNgͶµÈ¢ÆúҵܷB
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ±ÌìÆPÊði[U[Ì_Åj·úÌ <emphasis>Îb</emphasis>
+ iàµÍA<emphasis>AvP[VgUNV</emphasis> jÆÄÑÜ·B
+ AvP[VɱêðÀ·éû@ͽ³ñ èÜ·B
+ </para>
+
+ <para>
+ ÅÉv¢ÂÀÍA[U[ªl¦Ä¢éÔA<literal>Session</literal>
+ Æf[^x[XgUNVðJ¢½ÜÜɵĨ±ÆÅ·B
+ ¯ÉC³³ê¸Aª£Æ´q«ªÛسê鿤ÉA
+ f[^x[XàÌbNÍÛµ½ÜÜɵܷB
+ à¿ëñA±êÍA`p^[Å·B
+ ȺÈçAbNÌ£ª¶·éÆA
+ AvP[Vª¯[U[ɶÄXP[AbvÅ«ÈÈé©çÅ·B
+ </para>
+
+ <para>
+ ¾ç©ÉAÎbðÀ·é½ßÉÍA
+ ¢Â©Ìf[^x[XgUNVðgp·é׫ŷB
+ ±ÌêArWlXvZX̪£ðÛ·é±ÆÍA
+ AvP[VwÌÓ±ÌPÂÉÈèÜ·B
+ PÂÌÎbÍA
+ Êí¢Â©Ìf[^x[XgUNVÉyÑÜ·B
+ f[^x[XgUNVÌPÂÌÝiÅãÌPÂjªXVµ½f[^ðÛ¶µA
+ ¼Íf[^ðÇÞ¾¯Å êÎA»êÍAg~bNÅ·
+ iá¦ÎA¢Â©Ìv^ðJèÔ·EBU[h`®Ì_CAOjB
+ ±êÍ·æèAÀµ½Ù¤ªÈPÅ·B
+ HibernateÌ@\ðg¤ÌÅ êÎAÁÉÈPÅ·B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <emphasis>©®o[WjO</emphasis>
+ - HibernateÍ©®IÉyÏI¯Às§äªÅ«Ü·B
+ [U[ªl¦Ä¢éÔɯÉC³ª¨«½êA©®IÉoūܷB
+ ÊíAÎbÌI¹É`FbN·é¾¯Å·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>ª£iDetachedjIuWFNg</emphasis> - ·ÅÉc_µ½
+ <emphasis>session-per-request</emphasis> p^[ðg¤Æèµ½êA
+ [h³ê½·×ÄÌCX^XÍA[Uªl¦Ä¢éÔÍA
+ ZbV©çª£³ê½óÔÉÈèÜ·B
+ IuWFNgðZbVÉÄÇÁµAC³ði±»Å«Ü·B
+ ±êð <emphasis>session-per-request-with-detached-objects</emphasis>
+ p^[ÆÄÑÜ·B
+ ©®o[WjOðg¤±ÆÅA¯ÉsíêéC³ðª£Å«Ü·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>g£iàµÍA·¢jZbV</emphasis>
+ - HibernateÌ <literal>Session</literal> ÍA
+ f[^x[XgUNVðR~bgµ½ãA
+ ÅÑ¢ĢéJDBCRlNVðØfūܷB
+ »µÄANCAg©çÌVµ¢vª¶µ½ÛÉAÄڱūܷB
+ ±Ìp^[ÍA<emphasis>session-per-conversation</emphasis>
+ Æ¢¤¼ÅmçêĨèAIuWFNgðZbVÖÄÇÁ·é±Æ³¦svɵܷB
+ ©®o[WjOðg¤±ÆÅA¯ÉsíêéC³ðª£Å«Ü·B
+
+ Êí <literal>Session</literal> ð©®IÉtbV
³¹¸A
+ ¾¦IÉtbV
µÜ·B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ <emphasis>session-per-request-with-detached-objects</emphasis> Æ
+ <emphasis>session-per-conversation</emphasis> ÌQÂÍA
+ _Æ_ðÁĢܷB
+ ±êÉ¢ÄÍA±ÌÍÌãÌÙ¤ÅAyÏI¯Às§ä̶¬ÌÅc_µÜ·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="transactions-basics-identity">
+ <title>IuWFNg¯Êqðl¦é</title>
+
+ <para>
+ AvP[VÍAQÂÌÙÈé <literal>Session</literal> ©ç
+ ¯¶i±óÔɯÉANZXūܷB
+ µ©µAQÂÌ <literal>Session</literal> CX^Xª
+ i±«NXÌPÂÌCX^Xð¤L·é±ÆÍūܹñB
+ ä¦ÉA¯ÊqÉÍQÂÌÙÈéTOª 鯢¤±ÆÉÈèÜ·B
+ </para>
+
+ <variablelist spacing="compact">
+ <varlistentry>
+ <term>f[^x[X¯Êq</term>
+ <listitem>
+ <para>
+ <literal>foo.getId().equals( bar.getId() )</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>JVM¯Êq</term>
+ <listitem>
+ <para>
+ <literal>foo==bar</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>
+ <emphasis>ÂXÌ</emphasis> <literal>Session</literal> ÉÇÁ³ê½IuWFNgÉÆÁÄ
+ i·Èí¿APÂÌ <literal>Session</literal> ÌXR[vÌÅÍjAQÂÌTOͯ¶Å·B
+ f[^x[X¯ê«ÆJVM¯ê«ªêv·é±ÆðAHibernateªÛصܷB
+ µ©µAAvP[VªQÂÌÙÈéZbV©ç
+ u¯¶vii±«¯ÊqÌjrWlXIuWFNgɯÉANZX·éÀèA
+ QÂÌCX^XÍÀÛÉiJVM¯ÊqªjuÙÈèvÜ·B
+ yÏIAv[`ÉæÁÄAi©®o[WjOÌjtbV
^R~bgÉ
+ RtNgªð³êÜ·B
+ </para>
+
+ <para>
+ ±ÌAv[`ÅÍAHibernateÆf[^x[XɯÀsÉ¢ÄÌSzªcèÜ·B
+ êûÅAÅÌXP[reBªñ³êÜ·B
+ ȺÈçAPXbhÌìÆPÊÌÅêÓ«ªÛسêêÎA
+ ¿ÈbNâ¯ú»ªsvÉÈé½ßÅ·B
+ <literal>Session</literal> ²ÆÉPÂÌXbhð\èt¯éÀèA
+ AvP[VÍrWlXIuWFNgðsynchronize·éKvÍ èܹñB
+ <literal>Session</literal> àÅÍAAvP[VÍIuWFNgðär·é½ßÉA
+ <literal>==</literal> ðÀSÉgpūܷB
+ </para>
+
+ <para>
+ ¯êÇàA<literal>Session</literal> ÌOÅ <literal>==</literal>
+ ðg¤AvP[VÍA\úµÈ¢ÊÉöµÜ·B
+ ±êÍ\úµÈ¢êÅN±è¦Ü·B
+ á¦ÎAQÂ̪£CX^X𯶠<literal>Set</literal> É
+ putµ½Æ«ÈÇÅ·B
+ ¼ûÆà¯¶f[^x[X¯Êqð¿Ü·i·Èí¿A¯¶sð\µÜ·jB
+ µ©µAª£óÔÌCX^XÌJVM¯ÊqÍRÛØ³êܹñB
+ JÒÍAi±«NXÌ <literal>equals()</literal> Æ <literal>hashCode()</literal>
+ \bhðI[o[ChµAIuWFNg¿«ÌTOðÀ·×«Å·B
+ xªP èÜ·B¿«ÌÀÉf[^x[X¯ÊqðgíȢž³¢B
+ j[NÈiÊÍsÏÌj®«ÌgÝí¹Å érWlXL[ðgÁľ³¢B
+ àµAêIuWFNgªi±»³ê½êAf[^x[X¯ÊqªÏíèÜ·B
+ êIuWFNgðiÊíª£CX^XƤÉj <literal>Set</literal>
+ ÉÛ·éêAnbV
R[hªÏí鯢¤±ÆÍA<literal>Set</literal>
+ Ì_ñðj鯢¤±ÆÅ·B
+ rWlXL[̽ßÌ®«ÍAf[^x[XÌåL[ÙÇÀè·×«ÅÍȢŷB
+ IuWFNgª¯¶ <literal>Set</literal> ÌÉ¢éÔ¾¯AÀèðÛØ·×«Å·B
+ ±ÌâèÌæèOêIÈc_ÍAHibernateÌWebTCgðQƵľ³¢B
+ ܽA±êÍHibernateÌâèÅÍÈAPÉJavaIuWFNg̯Êqâ¿«ð
+ ÇÌæ¤ÉÀ·×«©Æ¢¤±ÆÅ·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="transactions-basics-issues">
+ <title>êÊIÈâè</title>
+
+ <para>
+ <emphasis>session-per-user-session</emphasis> Æ
+ <emphasis>session-per-application</emphasis> A`p^[
+ ÍgÁÄÍ¢¯Ü¹ñià¿ëñAÜêÉáOª èÜ·jB
+ ÓFºLÌâè̢©ÍA§³êép^[ƵÄào»µÜ·B
+ Ývðè·éOÉA ÌÓ¡ðð·éæ¤ÉµÄ¾³¢B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>Session</literal> ÍXbhZ[tÅÍ èܹñB
+ HTTPNGXgAZbVBeanASwing[J[Ìæ¤ÉA
+ ¯ÀsªÂ\Èà̪ <literal>Session</literal> CX^Xð¤L·éÆA
+ £óÔðø«N±µÜ·B
+ iãÅc_·éj<literal>HttpSession</literal> ÌÅ
+ Hibernate <literal>Session</literal> ðÛ·éêA
+ HttpSessionÖÌANZXð¯ú»·é±Æðl¶·×«Å·B
+ ³àȯêÎA[U[ª\ª[hðNbN·éÆA
+ ¯ÉéQÂÌXbhÌÅA¯¶ <literal>Session</literal> ªgíêÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ HibernateªáOð°½êÍAf[^x[XgUNVð[obNµA
+ ¼¿É <literal>Session</literal> ð¶é׫ŷiÚ×ðãÅc_µÜ·jB
+ <literal>Session</literal> ªAvP[VÉÑt¯çêÄ¢éÌÅ êÎA
+ AvP[Vðâ~·×«Å·B
+ f[^x[XgUNVð[obNµÄàArWlXIuWFNgÍ
+ gUNVðJnµ½Æ«ÌóÔÉßèܹñB
+ ±êÍAf[^x[XÌóÔÆrWlXIuWFNgͯúµÄ¢È¢±ÆðÓ¡µÜ·B
+ Êí±êÍâèÉÈèܹñB
+ ȺÈçAáOÍñūȢ©çÅ·B
+ ÆÉ©[obNµ½ãÉâ輷׫ŷB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Session</literal> Íi±ipersistentjóÔÌ·×ÄÌIuWFNgð
+ LbV
µÜ·iHibernateÍĵA_[eBóÔ©`FbNµÜ·jB
+ ±êÍA·¢ÔZbVðJ¢½ÜÜÉ·é©A
+ ñíɽÌf[^ð[hµ±¯é©µ½êÍA
+ OutOfMemoryExceptionª¶·éÜųÀÉå«È鱯ðÓ¡µÜ·B
+ ðôÌPÂÍA<literal>Session</literal> LbV
ðÇ·é½ßÉA
+ <literal>clear()</literal> © <literal>evict()</literal> ðÄÔ±ÆÅ·B
+ µ©µAå«Èf[^ð·éKvª éÈçA
+ ½ÔñXgAhvV[Wðl¶·é׫ŵå¤B
+ ¢Â©ÌðôÍA<xref linkend="batch"/> ÅÐî³êĢܷB
+ [U[ZbVÌÔA<literal>Session</literal> ðJ¢½ÜÜɷ鯢¤±ÆÍA
+ f[^ªVNÅÈÈém¦ªÈ鱯ðÓ¡µÜ·B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="transactions-demarcation">
+ <title>f[^x[XgUNV«E</title>
+
+ <para>
+ f[^x[XiàµÍVXejgUNVÌ«EÍAíÉKvÅ·B
+ f[^x[XgUNVÌOÅAf[^x[XÆÌÊMÍN«Ü¹ñ
+ i±êÍ©®R~bg[hɵêÄ¢é½ÌJÒ𬳹é©àµêܹñjB
+ ÇÝÞ¾¯ÌìÉÅàA¢Âà¾mÈgUNV«EðgpµÄ¾³¢B
+ ª£xÆf[^x[XÌ\ÍæÅA±êÍKvÈ¢©àµêܹñªA
+ íÉgUNV«Eð¾¦IÉwèµÄàA}CiXÊÍS èܹñB
+
+ m©ÉAPÂÌf[^x[XgUNVͽ̬³ÈgUNVæè
+ if[^ÌÇÝÝÅ ÁÄàjptH[}Xª·®êĢܷB
+ </para>
+
+ <para>
+ J2EE«ÉdzêĢȢóÔ
+ i·Èí¿AX^hAAPÈWebâSwingAvP[VjÅàA
+ dzê½óÔÅàAHibernateAvP[VðÀsūܷB
+ dzêĢȢ«ÅÍAHiberanteªf[^x[XÌRlNVv[ðñµÜ·B
+ AvP[VJÒÍAgUNV«Eðè®ÅÝèµÈ¯êÎÈèܹñB
+ ¾¢·¦éÆAf[^x[XgUNVÌJnAR~bgA[obNð
+ JÒ©gªÝè·éKvª 鯢¤±ÆÅ·B
+
+ ÊíAdzê½Â«ÅÍAReiÇÉæégUNViCMTjªñ³êÜ·B
+ á¦ÎAZbVBeanÌfvCgfBXNv^Åé¾IÉè`µA
+ gUNVðgݧÄÜ·B
+ vOÉæégUNV«EÍà¤Kv èܹñB
+ </para>
+
+ <para>
+ µ©µÈªçAdzêĢȢ\[XE[JÈ«Æ
+ JTAÉ˶µ½VXeiCMTÅÍÈBMTj̼ûÉA
+ i±»wð|[^uÉÛÂÌÍAµÎµÎ]ܵ¢±ÆÅ·B
+
+ fvC«ÌlCeBuÌgUNVVXeðÄÑo·
+ <literal>Transaction</literal> Æ¢¤bp[APIðHibernateªñµÜ·B
+ ±ÌAPIðg¤©ÍCÓÅ·ªACMTÌZbVBeanðgíÈ¢ÌÅ êÎAg¤±Æð§µÜ·B
+ </para>
+
+ <para>
+ ÊíA<literal>Session</literal> I¹ÍASÂÌÙÈétF[YðÜÝÜ·B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ ZbVÌtbV
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ gUNVÌR~bg
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ZbVÌN[Y
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ áOÌnhO
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ZbVÌtbV
É¢ÄÍAOÌ٤ŷÅÉc_µÜµ½B
+ dzê½Â«ÆÇ³êĢȢ«̼ûÉ¢ÄA
+ gUNV«EÆáOnhOðàÁÆÚµ©Ä¢«Üµå¤B
+ </para>
+
+
+ <sect2 id="transactions-demarcation-nonmanaged" revision="2">
+ <title>dzêĢȢ«</title>
+
+ <para>
+ Hibernatei±»wðdzêĢȢ«ÅÀ·éêÍA
+
+ ÊíPÈRlNVv[i·Èí¿DataSourceÅÍÈ¢jÉæÁÄA
+ f[^x[XRlNVð§äµÜ·B
+ HibernateÍ»ÌRlNVv[©çKvÈRlNVðæ¾µÜ·B
+
+ ZbV^gUNV§äÌCfBIÍÌæ¤ÉÈèÜ·B
+ </para>
+
+ <programlisting><![CDATA[// Non-managed environment idiom
+Session sess = factory.openSession();
+Transaction tx = null;
+try {
+ tx = sess.beginTransaction();
+
+ // do some work
+ ...
+
+ tx.commit();
+}
+catch (RuntimeException e) {
+ if (tx != null) tx.rollback();
+ throw e; // or display error message
+}
+finally {
+ sess.close();
+}]]></programlisting>
+
+ <para>
+ ¾¦IÉ <literal>Session</literal> Ì <literal>flush()</literal> ðÄÑo·×«ÅÍÈA
+ <literal>commit()</literal> ðÄÑo·±ÆÉæèA©®Iɯú»ªÀs³êÜ·
+ iZbVÌ <xref linkend="objectstate-flushing">FlushMode</xref> É˶µÄ¢éjB
+
+ <literal>close()</literal> ðÄÑo·±ÆÉæèAZbVÌIíèð¾mɵܷB
+ <literal>close()</literal> ªÃÙIÉs¤åȱÆÍA
+ ZbVªJDBCRlNVðJú·é±ÆÅ·B
+
+ ãLÌJavaR[hÍ|[^uÅ èAdzêĢȢ«ÆJTA«̼ûÅÀsūܷB
+ </para>
+
+ <para>
+ æèK«Ì éðôÍAHibernateÉ\ßgÝÜêÄ¢é
+ ucurrent sessionvReLXgÇÅ·B
+ ¾tÅྷéæèºLð©½Ù¤ª¬¢Åµå¤B
+ </para>
+
+ <programlisting><![CDATA[// Non-managed environment idiom with getCurrentSession()
+try {
+ factory.getCurrentSession().beginTransaction();
+
+ // do some work
+ ...
+
+ factory.getCurrentSession().getTransaction().commit();
+}
+catch (RuntimeException e) {
+ factory.getCurrentSession().getTransaction().rollback();
+ throw e; // or display error message
+}]]></programlisting>
+
+ <para>
+ ³KÌAvP[VÌÅÍA±Ìæ¤ÈR[hÌØê[ðµÄ©È¢Åµå¤B
+ v½IÈiVXejáOÍAíÉuÅãÊvÅLb`·×«Å·B
+ ¾¢·¦êÎAii±»wÅjHibernateÄÑoµðÀs·éR[hÆA
+ <literal>RuntimeException</literal> ð§ä·é
+ iÊíÍN[AbvÆI¹ÌÝs¤±ÆªÅ«éjR[hÍAÊXÌwÌÉ èÜ·B
+ HibernateÉæéJgReLXgÇÍA±ÌÝvð©ÈèPɵܷB
+ KvÈÌÍA<literal>SessionFactory</literal> ÉANZX·é±Æ¾¯Å·B
+ áOÍA±ÌÍÌãÌÙ¤Åc_µÜ·B
+ </para>
+
+ <para>
+ ÓFiftHgÅ·ªj
+ <literal>org.hibernate.transaction.JDBCTransactionFactory</literal>
+ ðIð·é׫ŷB
+ æ2ÌpáÆµÄÍA
+ <literal>hibernate.current_session_context_class</literal> ð
+ <literal>"thread"</literal> Æ·éÆæ¢Åµå¤B
+ </para>
+
+ </sect2>
+
+ <sect2 id="transactions-demarcation-jta" revision="3">
+ <title>JTAðgp·é</title>
+
+ <para>
+ i±»wðAvP[VT[o[iá¦ÎAEJBZbVBeanÌwãjÅÀs·éêA
+ Hibernate©çæ¾·é·×ÄÌf[^\[XRlNVÍA
+ ©®IÉO[oJTAgUNVÌêÉÈèÜ·B
+
+ EJBðgí¸ÉAX^hAÌJTAÀð±ü·é±ÆàūܷB
+ JTA̽ßÉAHibernateÍQÂÌíªðñµÜ·B
+ </para>
+
+ <para>
+ BeanÇgUNViBMTjðg¢A<literal>Transaction</literal> APIðg¤êA
+ HibernateÍAvP[VT[o[ÉBMTgUNVÌJnÆIíèð°Ü·B
+ ·Èí¿AgUNVÇÌR[hÍAdzêȢ«Ư¶ÉÈèÜ·B
+ </para>
+
+ <programlisting><![CDATA[// BMT idiom
+Session sess = factory.openSession();
+Transaction tx = null;
+try {
+ tx = sess.beginTransaction();
+
+ // do some work
+ ...
+
+ tx.commit();
+}
+catch (RuntimeException e) {
+ if (tx != null) tx.rollback();
+ throw e; // or display error message
+}
+finally {
+ sess.close();
+}]]></programlisting>
+
+ <para>
+ gUNV«EÆµÄ <literal>Session</literal> ðg¢½¢êA
+ ÈPÉReLXgð`d·é@\Å é <literal>getCurrentSession()</literal> ª éÌÅA
+ JTAÌ <literal>UserTransaction</literal> APIð¼Úgp·×«Åµå¤B
+ </para>
+
+ <programlisting><![CDATA[// BMT idiom with getCurrentSession()
+try {
+ UserTransaction tx = (UserTransaction)new InitialContext()
+ .lookup("java:comp/UserTransaction");
+
+ tx.begin();
+
+ // Do some work on Session bound to transaction
+ factory.getCurrentSession().load(...);
+ factory.getCurrentSession().persist(...);
+
+ tx.commit();
+}
+catch (RuntimeException e) {
+ tx.rollback();
+ throw e; // or display error message
+}]]></programlisting>
+
+ <para>
+ CMTÅÍAgUNV«EðZbVBeanÌfvCgfBXNv^Åè`µA
+ vOÅÍs¢Ü¹ñB
+ ä¦ÉAR[hÍÌæ¤ÉÈÈèÜ·B
+ </para>
+
+ <programlisting><![CDATA[// CMT idiom
+ Session sess = factory.getCurrentSession();
+
+ // do some work
+ ...
+]]></programlisting>
+
+ <para>
+ CMT/EJBÌÅÍAíÉ[obNª©®IÉÀ{³êÜ·B
+ ȺÈçAZbVr[Ì\bhÉæè°çê½§ä³êĢȢ
+ <literal>RuntimeException</literal> ÍAO[ogUNVð
+ [obN·éæ¤ÉReiÉ`¦é½ßÅ·B
+ <emphasis>±êÍABMTàµÍCMTÆ¢ÁµåÉHibernate <literal>Transaction</literal>
+ APIðg¤Kv͵àȢƢ¤Ó¡Å·B</emphasis>
+ </para>
+
+ <para>
+ HibernateÌgUNVt@NgðÝè·éÛÉA
+ JTAð¼Úg¤iBMTÌjêÍ <literal>org.hibernate.transaction.JTATransactionFactory</literal> ðA
+ CMTZbVr[ÌÅÍ <literal>org.hibernate.transaction.CMTTransactionFactory</literal> ð
+ Ið·×«¾Æ¢¤±ÆÉӵľ³¢B
+ <literal>hibernate.transaction.manager_lookup_class</literal>
+ ðZbg·é±Æàv¢oµÄ¾³¢B
+ ȨA<literal>hibernate.current_session_context_class</literal> ÍA
+ ZbgµÈ¢©iãûÝ·jA<literal>"jta"</literal> ðZbgµÄ¾³¢B
+ </para>
+
+ <para>
+ <literal>getCurrentSession()</literal> Iy[VÍAJTA«ÅÍPÂÌ_ð¿Ü·B
+
+ ftHgÅgíêé <literal>after_statement</literal> RlNV[X[hðgp·éãÅA
+ xªP èÜ·B
+
+ JTAdlÌð©È§ñ̽ßÉA
+ <literal>scroll()</literal> Ü½Í <literal>iterate()</literal> ªÔµ½A
+ ¶çêĢȢ <literal>ScrollableResults</literal> Ü½Í <literal>Iterator</literal>
+ CX^XðHibernateª©®IÉN[Abv·é±ÆÍūܹñB
+
+ <literal>finally</literal> ubNÌÅA
+ <literal>ScrollableResults.close()</literal> ܽÍ
+ <literal>Hibernate.close(Iterator)</literal> ð¾¦IÉÄÑoµÄA
+ Éöñ¾f[^x[XJ[\ððú <emphasis>µÈ¯êÎÈèܹñ</emphasis>B
+
+ ià¿ëñA½ÌAvP[VÅÍAJTA©CMTR[hÅ <literal>scroll()</literal>
+ â <literal>iterate()</literal> Ìgpðð¯éÌÍeÕÅ·Bj
+ </para>
+
+ </sect2>
+
+ <sect2 id="transactions-demarcation-exceptions">
+ <title>áOnhO</title>
+
+ <para>
+ <literal>Session</literal> ªáOi<literal>SQLException</literal>ðÜÞjð°½êA
+ ¼¿ÉAf[^x[XgUNVð[obNµA<literal>Session.close()</literal>
+ ðÄÑA<literal>Session</literal> CX^Xðjü·×«Å·B
+ <literal>Session</literal> ̢©Ì\bhÍA
+ ZbVÌóÔð <emphasis>µµ½ÜÜ</emphasis> ɵܷB
+ Hibernateª°½áOðAñÅ«éàÌÆµÄµ¤±ÆÍūܹñB
+ <literal>finally</literal> ubNÌÅ <literal>close()</literal> ðÄñÅA
+ <literal>Session</literal> ðmÀɶľ³¢B
+ </para>
+
+ <para>
+ <literal>HibernateException</literal> ÍAHibernatei±»wÌŶ·é½ÌG[ð
+ bv·éA¸³êÈ¢áOÅ·iHibernateÌâo[WÍá¢Üµ½jB
+ ½¿ÌÓ©ÍAAvP[VJÒÉñsÂ\ÈáOð
+ ºwÅLb`·é±Æðv·×«ÅÍȢƢ¤±ÆÅ·B
+ ½ÌVXeÅÍA¸³êÈ¢áOÆv½IÈáOÍA
+ R[X^bNÌÅÌt[ÌPÂiá¦ÎAÅãÊÌwÅjÅnhOµA
+ G[bZ[WðAvP[V[U[É\¦µÜ·
+ iàµÍA¼ÌKØÈðÀ{µÜ·jB
+ HibernateÍA<literal>HibernateException</literal> ÈO̸³êÈ¢áOà
+ °é±ÆÉӵľ³¢B
+ ±êçàܽAñsÂ\Å èAKØÈðÀ{·×«Å·B
+ </para>
+
+ <para>
+ HibernateÍAf[^x[XÆÌÎbɰçê½ <literal>SQLException</literal> ð
+ <literal>JDBCException</literal> ÅbvµÜ·B
+ ÀÍAáOðæèÓ¡Ì é <literal>JDBCException</literal> ÌTuNXÉ
+ Ï·µæ¤ÆÝÜ·B
+ ³Ì <literal>SQLException</literal> ÍA<literal>JDBCException.getCause()</literal>
+ Éæè¢ÂÅà¾çêÜ·B
+ HibernateÍA<literal>SessionFactory</literal> ÉÇÁ³êÄ¢é
+ <literal>SQLExceptionConverter</literal> ðg¢A<literal>SQLException</literal> ð
+ KÈ <literal>JDBCException</literal> TuNXÉÏ·µÜ·B
+ ftHgÅÍA<literal>SQLExceptionConverter</literal> ÍÝè³êÄ¢éSQLû¾Éæè
+ è`³êÜ·B
+ êûÅAÆ©ÌÀÉ·µÖ¦é±Æàūܷ
+ iÚ×ÍA<literal>SQLExceptionConverterFactory</literal> NXÌJavadocðQƵľ³¢jB
+ WIÈ <literal>JDBCException</literal> ÌTu^CvðºLɦµÜ·B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>JDBCConnectionException</literal> -
+ îbÆÈéJDBCÊMÌG[ð\µÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>SQLGrammarException</literal> -
+ s·éSQL̶@àµÍ\¶Ìâèð\µÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>ConstraintViolationException</literal> -
+ ½ç©Ì`®Ì®S«§ñá½ð\µÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>LockAcquisitionException</literal> -
+ v³ê½ìðÀ{·éÌÉKvÈbNxð¾éÛÌG[ð\µÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>GenericJDBCException</literal> -
+ ¼ÌJeSÉêvµÈ©Á½êÊIÈáOÅ·B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="transactions-demarcation-timeout">
+ <title>gUNVÌ^CAEg</title>
+
+ <para>
+ EJBÌæ¤Èdzê½Â«ªñ·é«íßÄdvÈÁ¥ÌPÂÍA
+ gUNVÌ^CAEgÅ·B
+ ±êÍdzêĢȢR[hÉÍñūܹñB
+ gUNV^CAEgÍAsisÈgUNVª
+ [U[ÉX|XðԳȢÜÜA³úÀÉ\[Xðg¢±¯È¢
+ ±ÆðÛáµÜ·B
+ dzê½Â«iJTAjÌOÅÍAHibernateͱÌ@\ðtÉñūܹñB
+ µ©µÈªçAHibernateÍÌæ¤Èf[^ANZXì̧äç¢ÍūܷB
+ f[^x[XxÌfbhbNâå«ÈUgZbgðÔ·NGð
+ è`³ê½^CAEgÉæÁÄmÀɧÀµÜ·B
+ dzê½Â«ÅÍAHibernateÍgUNV^CAEgðJTAÉÏ÷µÜ·B
+ ±Ì@\ÍAHibernateÌ <literal>Transaction</literal> IuWFNgÉ
+ æÁÄÛ»³êĢܷB
+ </para>
+
+ <programlisting><![CDATA[
+Session sess = factory.openSession();
+try {
+ //set transaction timeout to 3 seconds
+ sess.getTransaction().setTimeout(3);
+ sess.getTransaction().begin();
+
+ // do some work
+ ...
+
+ sess.getTransaction().commit()
+}
+catch (RuntimeException e) {
+ sess.getTransaction().rollback();
+ throw e; // or display error message
+}
+finally {
+ sess.close();
+}]]></programlisting>
+
+ <para>
+ CMTr[ÌÅÍ <literal>setTimeout()</literal> ð
+ ÄÑo¹È¢±ÆÉӵľ³¢B
+ gUNV^CAEgÍé¾IÉè`³êé׫ŷB
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="transactions-optimistic">
+ <title>yÏI¯Às§ä</title>
+
+ <para>
+ ¢Àñ«Æ¢XP[reB̼ûðÀ»·éAv[`ÍA
+ o[WjOðgÁ½yÏI¯Às§äÌÝÅ·B
+ XVÌÕËð©Â¯é½ßÉi¨æÑAXVª¸íêéÌðh®½ßÉjA
+ o[WÔàµÍ^CX^vðgÁÄAo[Wð`FbNµÜ·B
+ HibernateÍAyÏI¯Àsðs¤AvP[VR[hð½ßÌ
+ Av[`ðRÂñµÜ·B
+ ½¿ª©¹é[XP[XÍA·¢Îbð¿Ü·ªA
+ o[W`FbNÍܾPÂÌf[^x[XgUNVÌÅXV𸤱Æðh®
+ _àÁĢܷB
+ </para>
+
+ <sect2 id="transactions-optimistic-manual">
+ <title>AvP[VÉæéo[W`FbN</title>
+
+ <para>
+ HibernateÉÙÆñǯÄàçí¸ÉÀ·éP[XÅ·B
+ f[^x[XÆÌâèæèÍA»ê¼êVµ¢ <literal>Session</literal> ÌÅN±èÜ·B
+ JÒÍA·×ÄÌi±«CX^Xðì·éOÉA
+ f[^x[X©çÄÇÝÝ·éÓ±ª èÜ·B
+ ±ÌAv[`ÅÍAÎbgUNV̪£ðçé½ßÉA
+ AvP[V©gªo[W`FbNðs¤Kvª èÜ·B
+ ±ÌAv[`ÍAf[^x[XANZXÌÅÍAÅàñø¦Å·B
+ GeBeBEJBÆÅàÄ¢éAv[`Å·B
+ </para>
+
+ <programlisting><![CDATA[// foo is an instance loaded by a previous Session
+session = factory.openSession();
+Transaction t = session.beginTransaction();
+
+int oldVersion = foo.getVersion();
+session.load( foo, foo.getKey() ); // load the current state
+if ( oldVersion != foo.getVersion() ) throw new StaleObjectStateException();
+foo.setProperty("bar");
+
+t.commit();
+session.close();]]></programlisting>
+
+ <para>
+ <literal><version></literal> ðgÁÄA<literal>version</literal>
+ vpeBð}bsOµÜ·B
+ HibernateÍAGeBeBª_[eBÅ éêAtbV
µA
+ »ÌÔÉ <literal>version</literal> vpeBð©®IÉCNgµÜ·B
+ </para>
+
+ <para>
+ à¿ëñAf[^ÌÀñ«ªá¢Â«Å^pµÄ¨èAo[W`FbNªsvÈçA
+ ±ÌAv[`ðg¢Ao[W`FbNðXLbv·é¾¯Å·B
+ »ÌêÍA·¢ÎbÉÍA
+ <emphasis>uÅãÉR~bgµ½à̪Âv</emphasis> ªftHgÌíªÅµå¤B
+ ±ÌAv[`ÍAAvP[VÌ[U[𬳹é©àµêÈ¢±Æð
+ SɯßÄu¢Ä¾³¢B»êÍAG[bZ[W⣵½ÏXð}[W·é@ïª
+ È¢ÜÜAXVð¸¤o±ð·é½ßÅ·B
+ </para>
+
+ <para>
+ m©ÉA}j
AÉæéo[W`FbNÍA±×ÈV®¾¯ÅÀsūܷªA
+ ½ÌAvP[VÉÆÁÄÀpIÅÍ èܹñB
+ µÎµÎAPÂÌCX^X¾¯ÅÈA
+ C³³ê½IuWFNgÌ®SÈOtð`FbNµÈ¯êÎÈèܹñB
+ HibernateÍAÝvp_CƵÄAg£ <literal>Session</literal> ©
+ ª£³ê½CX^Xð©®IÉo[W`FbNµÜ·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="transactions-optimistic-longsession">
+ <title>g£ZbVÆ©®o[WjO</title>
+
+ <para>
+ PÂÌ <literal>Session</literal> CX^XÆ»Ìi±«CX^XÍA
+ <emphasis>session-per-conversation</emphasis> ƵÄmçêéA
+ ÎbSÌÅgíêÜ·B
+ HibernateÍtbV
·éÛÉACX^XÌo[Wð`FbNµÜ·B
+ ¯ÉC³³ê½±Æðo·éÆAáOð°Ü·B
+ ±ÌáOðLb`µÄµ¤ÌÍAJÒÌÓCÅ·
+ iêÊIÈIðÍAÏXð}[W·é©ÃÈ¢f[^ÅrWlXÎbð
+ ÄX^[g·é@ïð[U[Éñ·é±ÆÅ·jB
+ </para>
+
+ <para>
+ [U[ÌÎbðÒÁĢ鯫ÍA
+ <literal>Session</literal> ðîbÆÈéJDBCRlNV©çØè£µÜ·B
+ ±ÌAv[`ÍAf[^x[XANZXÌÅÍAÅàø¦IÅ·B
+ AvP[VÍAo[W`FbN⪣³ê½CX^XðÄÇÁ·é±Æ
+ ÉÖSðÂKvÍ èܹñBܽA çäéf[^x[XgUNVÌÅ
+ CX^XðÄÇÝÝ·éKvÍ èܹñB
+ </para>
+
+ <programlisting><![CDATA[// foo is an instance loaded earlier by the old session
+Transaction t = session.beginTransaction(); // Obtain a new JDBC connection, start transaction
+
+foo.setProperty("bar");
+
+session.flush(); // Only for last transaction in conversation
+t.commit(); // Also return JDBC connection
+session.close(); // Only for last transaction in conversation]]></programlisting>
+
+ <para>
+ <literal>foo</literal> IuWFNgÍA©ªð[hµ½ <literal>Session</literal>
+ ðܾmÁĢܷB
+ âZbVÌãÅVµ¢f[^x[XgUNVðJn·é±ÆÅA
+ Vµ¢RlNVðæ¾µA»ÌZbVªÄJ³êÜ·B
+ f[^x[XgUNVðR~bg·é±ÆÅA
+ ZbV©çJDBCRlNVðØfµARlNVðv[ÉԵܷB
+ ÄÚ±µ½ãAXVµÄ¢È¢f[^Ìo[W`FbNð§·é½ßÉA
+ ¼ÌgUNVÉæèXV³êÄ¢é©àµêÈ¢IuWFNgÉÖµÄA
+ <literal>LockMode.READ</literal> ðÂ¯Ä <literal>Session.lock()</literal>
+ ðÄÑo·±ÆªÅ«Ü·B
+ XVµÄ <emphasis>¢é</emphasis> f[^ðbN·éKvÍ èܹñB
+
+ ÊíAg£ <literal>Session</literal> É <literal>FlushMode.MANUAL</literal>
+ ðZbgµÜ·B
+ ÅãÌf[^x[XgUNVÌüúÅÌÝA
+ ÎbÌÅÏX³ê½·×ÄðÀÛÉi±»³¹é½ßÅ·B
+ ä¦ÉAÅãÌf[^x[XgUNVÌÝ <literal>flush()</literal>
+ Iy[VðÜÝÜ·B»µÄAÎbðIíç¹é½ßÉA
+ ZbVà <literal>close()</literal> µÜ·B
+ </para>
+
+ <para>
+ [U[ªl¶ÉAi[·é±ÆªÅ«È¢ç¢ <literal>Session</literal>
+ ªå«¢ÌÅ êÎA±Ìp^[Íâèª èÜ·B
+ á¦ÎA<literal>HttpSession</literal> ÍÂ\ÈÀ謳ÛÂ׫ŷB
+ <literal>Session</literal> Íi§IÉjPLbV
Åà èA
+ [hµ½IuWFNgð·×Ä۵ܷB
+ ¨»çANGXg^X|XÌTCNªñÅ êÎA±Ìíªªg¦Ü·B
+
+ PÂÌÎb̽߾¯É <literal>Session</literal> ðg¤×«Å·B
+ ȺÈçA·®ÉVNÅÈ¢f[^ð½ßÅ·B
+ </para>
+
+ <para>
+ iHibernateÌÈOÌo[WÍA¾¦IÈ <literal>Session</literal> Ì
+ ØfÆÄÚ±ªKv¾Á½±ÆÉӵľ³¢B
+ ±êçÌ\bhÍñ§ÉÈèܵ½B
+ ȺÈçAgUNVÌJnÆI¹Í¯¶øÊª é½ßÅ·Bj
+ </para>
+
+ <para>
+ Øfµ½ <literal>Session</literal> ði±»wÌßÅÛ·×«Å é±ÆÉ
+ ӵľ³¢B
+ ¾¢·¦éÆARw«ÌÅ <literal>Session</literal> ðÛ·é½ßÉA
+ EJBXe[gtZbVBeanðgÁľ³¢B
+ <literal>HttpSession</literal> Éi[·é½ßÉAWebwÉ]µÈ¢Å¾³¢
+ iÊÌwÖÌVACYàµÈ¢Å¾³¢jB
+ </para>
+
+ <para>
+ g£ZbVp^[iàµÍA<emphasis>session-per-conversation</emphasis>jÍA
+ ©®IÈJgZbVReLXgÇðÀ{·éæèïµ¢B
+ ±Ì½ßÉA È½Í <literal>CurrentSessionContext</literal> ÌÀð·éKvª èÜ·B
+ Hibernate WikiÉ éáðQƵľ³¢B
+ </para>
+
+ </sect2>
+
+ <sect2 id="transactions-optimistic-detached">
+ <title>f^b`³ê½IuWFNgÆ©®o[WjO</title>
+
+ <para>
+ Vµ¢ <literal>Session</literal>ÉæèAi±»XgAióFcajÆÌÎbª¶µÜ·B
+ ܽêûA¯¶i±«CX^XªAf[^x[XÆÌÎb²ÆÉÄp³êÜ·B
+ AvP[VÍA³XÍ¼Ì <literal>Session</literal> Å[h³êA
+ f^b`³ê½CX^XÌóÔðìµÜ·B
+ »µÄA<literal>Session.update()</literal> àµÍA<literal>Session.saveOrUpdate()</literal>A
+ <literal>Session.merge()</literal> ðgÁÄA»êçÌCX^XðÄÇÁµÜ·B
+ </para>
+
+ <programlisting><![CDATA[// foo is an instance loaded by a previous Session
+foo.setProperty("bar");
+session = factory.openSession();
+Transaction t = session.beginTransaction();
+session.saveOrUpdate(foo); // Use merge() if "foo" might have been loaded already
+t.commit();
+session.close();]]></programlisting>
+
+ <para>
+ ±ÌêàâÍèAHibernateÍtbV
·éÛÉACX^XÌo[Wð`FbNµÜ·B
+ XVÌ£ª¶µ½êÉÍAáOð°Ü·B
+ </para>
+
+ <para>
+ IuWFNgªC³³êĢȢ±ÆðmMµÄ¢éêÍA
+ <literal>update()</literal> ÌãíèÉA<literal>LockMode.READ</literal> ðgÁÄA
+ <literal>lock()</literal> ðÄÑo·±Æàūܷ
+ i·×ÄÌLbV
ðIñµAo[W`FbNðÀ{µÜ·jB
+ </para>
+
+ </sect2>
+
+ <sect2 id="transactions-optimistic-customizing">
+ <title>©®o[WjOÌJX^}CY</title>
+
+ <para>
+ }bsOÌ <literal>optimistic-lock</literal> ®«É <literal>false</literal>
+ ðÝè·é±ÆÉæèAÁèÌvpeBâRNV̽ßÉ
+ ©®o[WCNgð³øÉūܷB
+ vpeBª_[eBÅ ÁÄàAo[WðCNgµÜ¹ñB
+ </para>
+
+ <para>
+ KV[Ìf[^x[XXL[}ÍAµÎµÎÅèIÅ èAÏXūܹñB
+ ܽÍA¼ÌAvP[Vª¯¶f[^x[XÉANZXµÈ¯êÎÈç¸A
+ »ÌAvP[VÍo[WÔâ^CX^v³¦ì·éû@ðmèܹñB
+ Ç¿çÌêàAe[uÌÁèÌJðÄɵÄAo[WjOðs¦Ü¹ñB
+ o[Wâ^CX^vÌvpeBð}bsO¹¸ÉAo[W`FbN³¹é½ßÉA
+ <literal><class></literal> }bsOÉ <literal>optimistic-lock="all"</literal> ð
+ wèµÄ¾³¢B
+ sÌ·×ÄÌtB[hÌóÔðär·éæ¤ÉÈèÜ·B
+ ±êÍAHibernateªÃ¢óÔÆVµ¢óÔðärÅ«éêÉA
+ _IÉ®ì·é¾¯Å 鱯Éӵľ³¢B
+ á¦ÎAsession-per-request-with-detached-objects ÅÍÈA
+ PÂÌ·¢ <literal>Session</literal> ðg¤êÅ·B
+ </para>
+
+ <para>
+ ƫǫAsíê½ÏXªdÈçÈ¢ÀèA¯Ésíê½ÏXðó¯üê鱯ªÅ«Ü·B
+ <literal><class></literal> }bsOÉ <literal>optimistic-lock="dirty"</literal>
+ ðÝèµ½êAtbV
·éÛÉAHibernateÍ_[eBtB[hÌÝðärµÜ·B
+ </para>
+
+ <para>
+ êpÌo[W^^CX^vÌJðg¤êA
+ àµÍ·×Ä^_[eBÌtB[hðär·éêÇ¿çÅ ÁÄàA
+ HibernateÍGeBeB²ÆÉ1ÂÌ <literal>UPDATE</literal> ¶ð
+ iKØÈ <literal>WHERE</literal> ߯¤Éjg¢A
+ o[W`FbNÆîñÌXVðs¢Ü·B
+ ÖA·éGeBeBÌÄÇÁðJXP[h·é½ßÉA
+ A½IÈi±»ðgpµ½êAsKvÈXVðÀs·é©àµêܹñB
+ ±êÍÊíâèÉÈèܹñB
+ µ©µAª£µ½CX^XðÏXµÄ¢ÈÆàA
+ f[^x[XÌ <emphasis>on update</emphasis> gK[ªÀs³êé©àµêܹñB
+ <literal><class></literal> }bsOÉ
+ <literal>select-before-update="true"</literal> ðÝè·é±ÆÉæÁÄA
+ ±ÌUé¢ðJX^}CYūܷB
+ mÀÉÏX³ê½©ðmF·é½ßÉAsðXV·éOÉA
+ K¸CX^Xð <literal>SELECT</literal> µÜ·B
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="transactions-locking">
+ <title>ßÏIbN</title>
+
+ <para>
+ [UªbNíªÉYÞÌɽÌÔðïâ·±ÆðÓ}µÄ¢Ü¹ñB
+ ÊíÍAJDBCRlNVɪ£xðwèµA
+ PÉf[^x[XÉ·×ÄÌdð³¹êÎ\ªÅ·B
+ µ©µÈªçAxÈ[UÍAr¼IÈßÏIbNðl¾·é±Æ©A
+ Vµ¢gUNVªJn³êéÛÉbNðÄl¾·é±Æð
+ ƫǫ]Þ©àµêܹñB
+ </para>
+
+ <para>
+ HibernateÍ¢Âàf[^x[XÌbNÌdgÝðg¢Ü·B
+ àÌIuWFNgðµÄbNµÜ¹ñI
+ </para>
+
+ <para>
+ <literal>LockMode</literal> NXÍAHibernateªl¾Å«éÙÈébNxðè`µÜ·B
+ ȺÌdgÝÉæèAbNðl¾Å«Ü·B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>LockMode.WRITE</literal> ÍA
+ HibernateªsðXVàµÍ}ü·éÛÉ©®IɾçêÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>LockMode.UPGRADE</literal> ÍA
+ f[^x[XÅT|[g³êÄ¢é¶@ <literal>SELECT ... FOR UPDATE</literal>
+ ðgÁ½A¾¦IÈ[U[vÉæè¾çêé©àµêܹñB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>LockMode.UPGRADE_NOWAIT</literal> ÍA
+ Oracle Å <literal>SELECT ... FOR UPDATE NOWAIT</literal> ðgÁ½A
+ ¾¦IÈ[U[vÉæè¾çêé©àµêܹñB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>LockMode.READ</literal> ÍA
+ Repeatable ReadàµÍSerializable̪£xÅAf[^ðÇñ¾ÛÉ©®IɾçêÜ·B
+ ¨»çA¾¦IÈ[U[vÉæèAÄæ¾³êÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>LockMode.NONE</literal> ÍAbNµÈ¢±Æð\µÜ·B
+ <literal>Transaction</literal> ÌIíèÉA
+ ·×ÄÌIuWFNgͱÌbN[hÉØèÖíèÜ·B
+ <literal>update()</literal> â <literal>saveOrUpdate()</literal> ðÄÑo·±ÆÉæÁÄA
+ ZbVÉÖAt¯çê½IuWFNgàA±ÌbN[hÅoµÜ·B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ u¾¦IÈ[U[vvÆÍAºLÌû@ÌPž¢\¹Ü·B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>LockMode</literal> ðwèµ½ <literal>Session.load()</literal> ÌÄÑoµB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Session.lock()</literal> ÌÄÑoµB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Query.setLockMode()</literal> ÌÄÑoµB
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ <literal>UPGRADE</literal> àµÍ <literal>UPGRADE_NOWAIT</literal> ªwè³ê½
+ <literal>Session.load()</literal> ªÄÑo³êA
+ ©Âv³ê½IuWFNgªZbVÉæÁÄܾ[h³êĢȩÁ½êÍA
+ <literal>SELECT ... FOR UPDATE</literal> ðgÁÄAIuWFNgª[h³êÜ·B
+ <literal>load()</literal> ÅÄÑo³ê½IuWFNgªA
+ v³êÄ¢éæè§ÀªÈ¢bNÅ·ÅÉ[h³êÄ¢½êÍA
+ HibernateÍ»ÌIuWFNg̽ßÉA<literal>lock()</literal> ðÄÑoµÜ·B
+ </para>
+
+ <para>
+ wè³ê½bN[hª <literal>READ</literal> àµÍA<literal>UPGRADE</literal>A
+ <literal>UPGRADE_NOWAIT</literal> ¾Á½êA<literal>Session.lock()</literal>
+ ÍAo[WÔÌ`FbNðÀ{µÜ·B
+ i<literal>UPGRADE</literal> àµÍ <literal>UPGRADE_NOWAIT</literal> ÌêA
+ <literal>SELECT ... FOR UPDATE</literal> ªgíêÜ·Bj
+ </para>
+
+ <para>
+ f[^x[Xªv³ê½bN[hðT|[gµÄ¢È¢êA
+ HibernateÍiáOð°éãíèÉAjKØÈãíèÌ[hðg¢Ü·B
+ ±êÍAAvP[Vª|[^uŠ鱯ðÛØµÜ·B
+ </para>
+
+ </sect1>
+
+ <sect1 id="transactions-connection-release">
+ <title>RlNVJú[h</title>
+
+ <para>
+ HibernateÌKV[i2.xjÌJDBCRlNVÇÉÖ·éUé¢ÍA
+ ÅÉKvƵ½ÛÉ <literal>Session</literal> ªRlNVð¾éÆ¢¤àÌŵ½B
+ »µÄAZbVªÂ¶çêéÜÅA»ÌRlNVð۵ܵ½B
+ Hibernate 3.xÍAZbVÉJDBCRlNVðÇÌæ¤É§ä·é©ð`¦é
+ RlNVJú[hÆ¢¤TOð±üµÜµ½B
+ È~Ìc_ÍA\¬³ê½ <literal>ConnectionProvider</literal> ðʵÄñ³êé
+ RlNVÉKØÅ 鱯Éӵľ³¢B
+ ÙÈéJú[hÍA<literal>org.hibernate.ConnectionReleaseMode</literal> É
+ ñ³ê½lÉæèmF³êÜ·B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>ON_CLOSE</literal> - {¿IÉãLÅq×½KV[ÌUé¢Å·B
+ HibernateZbVÍÅÉJDBCANZXðÀs·éKvª éÛÉRlNVð¾Ü·B
+ »µÄAZbVªÂ¶çêéÜÅARlNVð۵ܷB
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>AFTER_TRANSACTION</literal> -
+ <literal>org.hibernate.Transaction</literal> ª®¹µ½ãA
+ RlNVðJúµÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>AFTER_STATEMENT</literal> iÏÉIÈJúÆàÄÎêéj -
+ ·×ÄÌXe[ggª»ê¼êÀs³ê½ãARlNVªJú³êÜ·B
+ Xe[ggªZbVÉÖA·é\[XðJ¢½ÜÜÉ·éêÍA
+ ±ÌÏÉIÈJúÍXLbv³êÜ·B
+ ¡ÌƱëA±êªN±éÌÍ <literal>org.hibernate.ScrollableResults</literal>
+ ªgíêéêÌÝÅ·B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ RtBO[Vp[^Ì <literal>hibernate.connection.release_mode</literal>
+ ÍAgp·éJú[hðwè·é½ßÉg¢Ü·B
+ wèÅ«élÍÌÊèÅ·B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>auto</literal> iftHgj - ±êðIð·éÆ
+ <literal>org.hibernate.transaction.TransactionFactory.getDefaultReleaseMode()</literal>
+ \bhÉæÁÄÔ³êéJú[hÉÏ÷³êÜ·B
+ ±Ì\bhÍA
+ JTATransactionFactoryÉÍConnectionReleaseMode.AFTER_STATEMENTðÔµA
+ JDBCTransactionFactoryÉÍConnectionReleaseMode.AFTER_TRANSACTIONðԵܷB
+ ±ÌftHgÌUé¢ðϦĤܢÁ½µª èܹñB
+ »êÍA±ÌÝèlª´öÅN±éáQÍA
+ [UR[hÌÅoOâÔáÁ½ðÉÈèâ·¢©çÅ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>on_close</literal> - ConnectionReleaseMode.ON_CLOSEðg¢Ü·B
+ ±ÌÝèÍãûݷ̽ßÉc³êĢܷªAgíÈ¢±Æð©ßÜ·B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>after_transaction</literal> - ConnectionReleaseMode.AFTER_TRANSACTIONðg¢Ü·B
+ ±ÌÝèÍJTA«ÌÅÍg¤×«ÅÍ èܹñB
+ ConnectionReleaseMode.AFTER_TRANSACTIONðwèµA©®R~bg[hÌÅÍA
+ Jú[hªAFTER_STATEMENTÅ é©Ìæ¤ÉARlNVÍJú³ê鱯Éӵľ³¢B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>after_statement</literal> - ConnectionReleaseMode.AFTER_STATEMENTðg¢Ü·B
+ ³çÉAÝè³ê½ <literal>ConnectionProvider</literal> ÍA
+ ±ÌÝè (<literal>supportsAggressiveRelease()</literal>) ðT|[g·é©Ç¤©
+ ð²×é½ßÉgpµÜ·B
+ ൻ¤ÅÈ¢êAJú[hÍConnectionReleaseMode.AFTER_TRANSACTION
+ ÉZbg³êÜ·B
+ ±ÌÝèÍÌ«ÅÌÝÀSÅ·B
+ »êÍA<literal>ConnectionProvider.getConnection()</literal> ðÄÑo·½ÑÉ
+ îÕÆÈéJDBCRlNVª¯¶àÌðæ¾Å«é©A
+ ¯¶RlNVª¾çê鱯ªâèÆÈçÈ¢©®R~bg«ÌÅ·B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ </sect1>
+
+</chapter>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/tutorial.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/tutorial.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/tutorial.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/tutorial.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,1600 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="tutorial">
+ <title>Hibernate̱ü</title>
+
+ <sect1 id="tutorial-intro" revision="1">
+ <title>O«</title>
+
+ <para>
+ ±ÌÍÍHibernateðßÄg¤[Uü¯ÌüåIÈ`
[gAÅ·B
+ Cf[^x[Xðg¤ÈPÈR}hCAvP[V©çnßA
+ êàêàí©èâ·¢âèûÅJðißÜ·B
+ </para>
+
+ <para>
+ ±Ì`
[gAÍHibernateðßÄg¤[UðzèµÄ¢Ü·ªA
+ ð·éÉÍJavaÆSQLÉ¢ÄÌm¯ªKvÅ·B
+ ±êÍMichael GloeglÌèÉæé`
[gAðº~«ÉµÄ¢Ü·ªA
+ ±±ÅT[hp[eBCuƾÁÄ¢éÌÍAJDK 1.4Æ5.0pÌàÌÅ·B
+ JDK 1.3ðp·éÌÅ êμÌCuªKv©àµêܹñB
+ </para>
+
+ <para>
+ `
[gAÌ\[XR[hÍHibernatefBXgr
[VÌ
+ <literal>doc/reference/tutorial/</literal> É èÜ·B
+ </para>
+
+ </sect1>
+
+ <sect1 id="tutorial-firstapp" revision="2">
+ <title>p[g1 - ßÄÌHibernateAvP[V</title>
+
+ <para>
+ ÅÉR\[x[XÌÈPÈHibernateAvP[Vð쬵ܷB
+ Javaf[^x[XiHSQL DBjðp·éÌÅA
+ f[^x[XT[oðCXg[·éKvÍ èܹñB
+ </para>
+
+ <para>
+ ¼É¬³Èf[^x[XAvP[VªKv¾ÆµÜµå¤B
+ »ÌAvP[VÉÍoȵ½¢CxgÆA
+ »ÌCxgÌzXgÉ¢ÄÌîñði[·éàÌÆµÜ·B
+ </para>
+
+ <para>
+ ܸÅɷ鱯ÍJpÌfBNgðZbgAbvµÄA
+ KvÆÈé·×ÄÌJavaCuðzu·é±ÆÅ·B
+ HibernateEFuTCg©çHibernatefBXgr
[Vð_E[hµÄ¾³¢B
+ t@CððµÄ <literal>/lib</literal> É éKvÈCuÌ·×ÄðA
+ Vµ¢JpfBNgÌ <literal>/lib</literal> fBNgÉzuµÄ¾³¢B
+ ±Ìæ¤ÉÈÁÄ¢é͸ŷF
+ </para>
+
+ <programlisting><![CDATA[.
++lib
+ antlr.jar
+ cglib.jar
+ asm.jar
+ asm-attrs.jars
+ commons-collections.jar
+ commons-logging.jar
+ hibernate3.jar
+ jta.jar
+ dom4j.jar
+ log4j.jar ]]></programlisting>
+
+ <para>
+ ±êª <emphasis>{hL
g·M_ÅÌ</emphasis> HibernateÌKvÅáÀÌCuÅ·
+ iCA[JCuÌhibernate3.jaràRs[µÄ¢é±ÆÉӵľ³¢jB
+ HibernateÌo[WÉæÁÄͳçÉKvÈCuâAsvÈCuª é©àµêܹñB
+ HibernatefBXgr
[VÌ <literal>lib/</literal> fBNgÉ é
+ <literal>README.txt</literal> t@Cð©Ä¾³¢B
+ K{ܽÍIvVÌT[hp[eBCuÉ¢ÄÌîñðڹĢܷ
+ iÀÛLog4jÍK{ÅÍ èܹñªA½ÌJÒªDñŢܷjB
+ </para>
+
+ <para>
+ Éf[^x[XÉi[·éCxgð\·NXð쬵ܷB
+ </para>
+
+ <sect2 id="tutorial-firstapp-firstclass" revision="1">
+ <title>ÅÌNX</title>
+
+ <para>
+ ÅÌi±NXÍAvpeBð¢Â©ÂVvÈJavaBeanÅ·F
+ </para>
+
+ <programlisting><![CDATA[package events;
+
+import java.util.Date;
+
+public class Event {
+ private Long id;
+
+ private String title;
+ private Date date;
+
+ public Event() {}
+
+ public Long getId() {
+ return id;
+ }
+
+ private void setId(Long id) {
+ this.id = id;
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public void setDate(Date date) {
+ this.date = date;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+}]]></programlisting>
+
+ <para>
+ ²ÌƨèA±ÌNXÍtB[hªprivateÌ«ðÁÄ¢éÌÆ¯ÉA
+ JavaBeanWÌQb^[AZb^[\bh̽¼KñÉ]ÁĢܷB
+ ±Ìæ¤ÈÝvͧ³êĢܷªK{ÅÍ èܹñB
+ ANZT\bhðݯéÌÍt@N^Oðl¦½æ«Ì½ßÅA
+ HibernateÍtB[hɼÚANZX·é±ÆàÂ\Å·B
+ øÌÈ¢RXgN^ÍAtNVűÌNXÌCX^Xð쬷é½ßÉ
+ KvÅ·B
+ </para>
+
+ <para>
+ <literal>id</literal> vpeBÍA éÁèÌCxgÉηéj[NȯÊqÌlð۵ܷB
+ HibernateÌ®SÈ@\ðg¢½¯êÎA·×ÄÌi±GeBeBNX
+ i»êÙÇdvÅÍȢ˶NXÆ¢¤àÌà èÜ·j
+ É±Ìæ¤È¯ÊqvpeBªKvÉÈèÜ·B
+ ÀãÙÆñÇÌAvP[ViÁÉwebAvP[VjÅÍA
+ ¯ÊqÅIuWFNgðæÊ·éKvª é½ßA±êͧÀÆ¢¤æèàÁ¥Å éÆl¦é׫ŷB
+ µ©µÊíIuWFNgÌIDðì·éæ¤È±ÆÍµÜ¹ñB
+ »Ì½ßZb^[\bhÍprivateÉ·é׫ŷB
+ Hibernate¾¯ªIuWFNgªZ[u³ê½Æ«É¯ÊqÖlðãüµÜ·B
+ Hibernateªipublic, private, protectedjtB[hɼÚANZXÅ«éÌÆ¯lÉA
+ public, private, protectedÌANZT\bhÉANZXū鯢¤±Æªí©éŵå¤B
+ IðÍ È½ÉC³êÄ¢éÌÅA ȽÌAvP[VÌÝvÉí¹é±ÆªÅ«Ü·B
+ </para>
+
+ <para>
+ øÌÈ¢RXgN^Í·×ÄÌi±NXÉK{Å·B
+ ±êÍHibernateªJavaÌtNVðgÁÄAIuWFNgð쬵ȯêÎÈçÈ¢½ßÅ·B
+ RXgN^ðprivateɷ鱯ÍÂ\Å·ªA
+ ÀsÌvLV¶¬ÆAoCgR[hìÈµÌø¦IÈf[^ÌoÉÍA
+ package«ªKvÅ·B
+ </para>
+
+ <para>
+ JtH_Ì <literal>src</literal> Æ¢¤fBNgÌKØÈpbP[WÉA
+ ±ÌJava\[Xt@CðzuµÄ¾³¢B
+ ±Ì_ÅfBNgÍÈºÌæ¤ÉÈÁÄ¢é͸ŷF
+ </para>
+
+ <programlisting><![CDATA[.
++lib
+ <Hibernate and third-party libraries>
++src
+ +events
+ Event.java]]></programlisting>
+
+ <para>
+ ÌXebvÅÍAHibernateɱÌi±NXÌîñð³¦Ü·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-firstapp-mapping" revision="1">
+ <title>}bsOt@C</title>
+
+ <para>
+ HibernateÍAÇÌæ¤Éi±NXÌIuWFNgð[hµi[·êÎæ¢©ðméKvª èÜ·B
+ ±±ÅHibernate}bsOt@CªoêµÜ·B
+ }bsOt@CÍAf[^x[XàÌÇÌe[uÉANZXµÈ¯êÎÈçÈ¢©A
+ »Ìe[uÌÇÌJðg¤×«©ðAHibernateɳ¦Ü·B
+ </para>
+
+ <para>
+ }bsOt@CÌî{IÈ\¢Í±Ìæ¤ÉÈèÜ·F
+ </para>
+
+ <programlisting><![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>
+[...]
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ Hibernate DTDªñíÉôû³êĢ鱯Éڵľ³¢B
+ ±ÌDTDÍAGfB^âIDEÅÌXML}bsOvfÆ®«ÌI[gRv[V@\ÉpūܷB
+ ܽDTDt@CðeLXgGfB^ÅJ¯ÄÝľ³¢B
+ Æ¢¤ÌàA·×ÄÌvfÆ®«ðTϵA
+ RgâftHgÌlð©éÉÍêÔÈPÈû@¾©çÅ·B
+ HibernateÍAweb©çDTDt@Cð[h¹¸ÉA
+ ܸAvP[VÌNXpX©ç±êðTµo»¤Æ·é±ÆÉӵľ³¢B
+ DTDt@CÍHibernatefBXgr
[VÌ <literal>src/</literal>
+ fBNgƯlA<literal>hibernate3.jar</literal> ÉàÜÜêĢܷB
+ </para>
+
+ <para>
+ È~ÌáÅÍR[hðZ·é½ßÉDTDé¾ðȪµÜ·B
+ RÅ·ª±êÍIvVÅÍ èܹñB
+ </para>
+
+ <para>
+ 2ÂÌ <literal>hibernate-mapping</literal> ^OÌÔÉ
+ <literal>class</literal> vfðÜßľ³¢B
+ ·×ÄÌi±GeBeBNXiOðµÜ·ªA
+ t@[XgNXÌGeBeBÅÍȢ˶NXÆ¢¤à̪ãÙÇoêµÜ·j
+ ÍSQLf[^x[XàÌe[uÖÌ±Ìæ¤È}bsOðKvƵܷB
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="events.Event" table="EVENTS">
+
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ ±êÜŽ¿ÍA<literal>Event</literal> NXÌIuWFNgð
+ <literal>EVENTS</literal> e[uÉεÄAÇÌæ¤Éi±»µ½è[hµ½è·éÌ©ð
+ Hibernateɳ¦Ä«Üµ½B»µÄÂXÌCX^XÍe[uÌsƵÄ\»³êÜ·B
+ »êÅÍø«±«e[uÌåL[Éηéj[NȯÊqvpeBð}bsOµÄ¢«Ü·B
+ ³çÉA±Ì¯Êq̵¢ÉCðg¢½È©Á½ÌƯlÉA
+ ãÌåL[JÉηéHibernate̯Êq¶¬íªðÝèµÜ·B
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="events.Event" table="EVENTS">
+ <id name="id" column="EVENT_ID">
+ <generator class="native"/>
+ </id>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ <literal>id</literal> vfͯÊqvpeBÌé¾Å èA
+ <literal>name="id"</literal> ÅJavavpeB̼Oð龵ܷB
+ HibernateͱÌvpeBÖANZX·é½ßÉQb^[AZb^[\bhðg¢Ü·B
+ J®«ÅÍ <literal>EVENTS</literal> e[uÌÇÌJðåL[ƵÄg¤Ì©ð
+ Hibernateɳ¦Ü·B
+ üêqÉÈÁÄ¢é <literal>generator</literal> vfÍA¯Êq𶬷éÌíªðwèµÜ·B
+ i±ÌáÅÍ <literal>native</literal> ðp¢Üµ½jB
+ ±ÌvfÍAÝèµ½f[^x[XidialectjÉηéÅÇȯÊq¶¬íªðIè·éàÌÅ·B
+ HibernateÍAAvP[VÅlðèÄéíªiàµÍÆ©Ég£µ½íªjƯlÉA
+ O[oÉj[NÈlðf[^x[Xɶ¬³¹éíªàT|[gµÄ¢Ü·B
+ </para>
+
+ <para>
+ ÅãÉNXÌi±vpeBÌé¾ð}bsOt@CÉÜßÜ·B
+ ftHgÅÍANXÌvpeBÍi±Æ©È³êܹñF
+ </para>
+
+ <programlisting><![CDATA[
+<hibernate-mapping>
+
+ <class name="events.Event" table="EVENTS">
+ <id name="id" column="EVENT_ID">
+ <generator class="native"/>
+ </id>
+ <property name="date" type="timestamp" column="EVENT_DATE"/>
+ <property name="title"/>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ <literal>id</literal> vfÌêÆ¯lÉA <literal>property</literal> vfÌ
+ <literal>name</literal> ®«ÅAÇÌQb^[ÆZb^[\bhðg¤×«©ðHibernateɳ¦Ü·B
+ ±ÌáÅÍAHibernateÍ <literal>getDate()/setDate()</literal> Æ <literal>getTitle()/setTitle()</literal> ð
+ TµÜ·B
+ </para>
+
+ <para>
+ Ⱥ <literal>date</literal> vpeBÌ}bsOÉÍ <literal>column</literal>
+ ®«ª èA<literal>title</literal> vpeBÉÍÈ¢Ìŵ天H
+ <literal>column</literal> ®«ªÈ¯êÎAHibernateÍvpeB¼ðJ¼ÆµÄg¢Ü·B
+ ±êÍ <literal>title</literal> ÅÍãès«Ü·B
+ µ©µ <literal>date</literal> ÍÙÆñÇÌf[^x[XÅ\ñêÈÌÅA
+ ᤼OÅ}bsOµ½ûªæ¢ÌÅ·B
+ </para>
+
+ <para>
+ É»¡[¢ÌÍ <literal>title</literal> }bsOª <literal>type</literal>
+ ®«ðà¢Ä¢é_Å·B
+ }bsOt@CÅé¾µÄg¤typeÍA¨í©è©àµêܹñªJavaÌf[^^ÅÍ èܹñB
+ SQLf[^x[XÌ^Åà èܹñB
+ ±êÍ <emphasis>Hibernate}bsO^</emphasis> ÆÄÎêéA
+ Java©çSQLf[^Ì^ÖܽÍSQL©çJavaf[^^Ö|ó·éRo[^Å·B
+ JèÔµÉÈèÜ·ªAHibernateÍ <literal>type</literal> ®«ª}bsOt@CàÉȯêÎA
+ ³µ¢Ro[WÆ}bsO^ð©ªÅðµæ¤ÆµÜ·B
+ iJavaNXÌtNVðgÁ½j±Ì©®mÍA
+ êÉæÁÄÍ È½ªúÒܽÍKvÆ·éftHglÉÈçÈ¢©àµêܹñB
+ <literal>date</literal> vpeBÌꪻ¤Åµ½B
+ HibernateͱÌi <literal>java.util.Date</literal> ÌjvpeBð
+ SQLÌ <literal>date</literal> , <literal>timestamp</literal> ,
+ <literal>time</literal> ̤¿AÇÌJÉ}bsO·é׫ÈÌ©í©èܹñB
+ <literal>timestamp</literal> Ro[^ÅvpeBð}bsO·é±ÆÉæèA®SÈúðÛ¶µÜ·B
+ </para>
+
+ <para>
+ ±Ì}bsOt@CÍA<literal>Event.hbm.xml</literal> ÆµÄ <literal>Event</literal>
+ JavaNX\[Xt@CÌ·®×ÉZ[u·é׫ŷB
+ }bsOt@C̽¼û@ÍCÓÅ·ªA<literal>hbm.xml</literal>
+ TtBbNXªHibernateÌJÒÌR~
jeBàÅÌKµÆÈÁĢܷB
+ »ÝfBNg\¢Í±Ìæ¤ÉÈÁÄ¢é͸ŷF
+ </para>
+
+ <programlisting><![CDATA[.
++lib
+ <Hibernate and third-party libraries>
++src
+ +events
+ Event.java
+ Event.hbm.xml]]></programlisting>
+
+ <para>
+ HibernateÌåvÈÝèð±¯Ü·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-firstapp-configuration" revision="2">
+ <title>HibernateÌÝè</title>
+
+ <para>
+ ±±ÜÅÅi±NXÆ}bsOt@Cªµ¢Üµ½B±ê©çHibernateÌÝèðs¢Ü·ªA
+ »ÌOÉf[^x[XªKvÅ·B
+ HSQL DBÍJavax[XÌCSQL DBMSÅ èAHSQL DBEFuTCg©ç_E[hūܷB
+ ÀÛÉÍ_E[hµ½Ì <literal>hsqldb.jar</literal> ¾¯ªKvÅ·B
+ ±Ìt@CðJtH_Ì <literal>lib/</literal> fBNgÉzuµÄ¾³¢B
+ </para>
+
+ <para>
+ <literal>data</literal> Æ¢¤fBNgðJfBNgÌ[gÉ쬵ľ³¢B
+ HSQL DBͱ±Éf[^t@Cði[µÜ·B
+ ±Ìf[^fBNgɨ¢Ä <literal>java -classpath lib/hsqldb.jar org.hsqldb.Server</literal> ðÀsµA
+ f[^x[XðN®³¹Ä¾³¢B
+ ®ìÌJnÆATCP/IP\PbgÌoChªmFūܷB
+ ãÙÇ쬷éAvP[Vͱ±ÉÚ±µÜ·B
+ ൱Ì`
[gAÉf[^x[Xðú»µ½¯êÎA
+ HSQL DBðVbg_EµÄiìÆEBhEÅ <literal>CTRL + C</literal> ðµÜ·j
+ <literal>data/</literal> fBNgàÌt@CðSÄÁµ½ãA
+ HSQL DBðÄN®µÜ·B
+ </para>
+
+ <para>
+ HibernateÍAvP[VÌf[^x[XÉÚ±·éwÈÌÅA
+ RlNVÌîñªKvÉÈèÜ·B
+ RlNVÍJDBCRlNVv[ðʶÄsíêÜ·ªA±êàÝè·éKvª èÜ·B
+ HibernatefBXgr
[VÉ͢©ÌI[v\[XÌJDBCRlNVv[c[ªÜÜêĢܷªA
+ ±Ì`
[gAÅÍHibernateÉgÝÜê½RlNVv[ðg¢Ü·B
+ ൻixÌi¿ÌT[hp[eBJDBCRlNVv[\tgEFAðg¢½¯êÎA
+ NXpXÉKvÈCuðRs[µÄAÙÈéRlNVv[ðÝèµÈ¯êÎ
+ ÈçÈ¢±ÆÉӵľ³¢B
+ </para>
+
+ <para>
+ HibernateÌÝèÅÍAPÈ <literal>hibernate.properties</literal> t@CA
+ »êæèµôû³êÄ¢é <literal>hibernate.cfg.xml</literal> t@CA
+ ܽͮSÉvOãÅZbgAbv·éû@ªpūܷB
+ ÙÆñÇÌ[UªDÞÌÍXMLÝèt@CÅ·F
+ </para>
+
+ <programlisting><![CDATA[<?xml version='1.0' encoding='utf-8'?>
+<!DOCTYPE hibernate-configuration PUBLIC
+ "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+
+ <session-factory>
+
+ <!-- Database connection settings -->
+ <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
+ <property name="connection.url">jdbc:hsqldb:hsql://localhost</property>
+ <property name="connection.username">sa</property>
+ <property name="connection.password"></property>
+
+ <!-- JDBC connection pool (use the built-in) -->
+ <property name="connection.pool_size">1</property>
+
+ <!-- SQL dialect -->
+ <property name="dialect">org.hibernate.dialect.HSQLDialect</property>
+
+ <!-- Enable Hibernate's automatic session context management -->
+ <property name="current_session_context_class">thread</property>
+
+ <!-- Disable the second-level cache -->
+ <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
+
+ <!-- Echo all executed SQL to stdout -->
+ <property name="show_sql">true</property>
+
+ <!-- Drop and re-create the database schema on startup -->
+ <property name="hbm2ddl.auto">create</property>
+
+ <mapping resource="events/Event.hbm.xml"/>
+
+ </session-factory>
+
+</hibernate-configuration>]]></programlisting>
+
+ <para>
+ ±ÌXMLÌÝèªÙÈéDTDðg¤±ÆÉӵľ³¢B
+ ÁèÌf[^x[Xðó¯ÂO[ot@NgÅ éHibernateÌ
+ <literal>SessionFactory</literal> ðÝèµÜ·B
+ ൡÌf[^x[Xª éêÉÍA
+ iX^[gAbvðÈPÉ·é½ßjÊí¢Â©ÌÝèt@CàÅA
+ ¢Â©Ì <literal><session-factory></literal> ðg¤Ýèɵľ³¢B
+ </para>
+
+ <para>
+ ÅÌ4ÂÌ <literal>property</literal> vfÍJDBCRlNVÉKvÈÝèðÜñŢܷB
+ dialectÆ¢¤¼OÌ <literal>property</literal> vfÍAHibernateª¶¬·éÁèÌSQLû¾ðwèµÜ·B
+ i±IÈReLXgÉηéHibernateÌZbVÌ©®ÇÍAãÌáÅ·®Éí©éæ¤ÉAðɧ±ÆÅµå¤B
+ <literal>hbm2ddl.auto</literal> IvVÍf[^x[XXL[}Ì©®¶¬ðonɵܷB
+ ±êͼÚf[^x[XÉεͬ³êÜ·B
+ RiconfigIvVðíµÄjoffɵ½èA
+ <literal>SchemaExport</literal> Æ¢¤Ant^XN̯ðØèÄt@CÉ_CNgµ½èūܷB
+ ÅãÉi±NX̽ßÌ}bsOt@CðÝèÉÇÁµÜ·B
+ </para>
+
+ <para>
+ ±Ìt@Cð\[XfBNgÉRs[µÄ¾³¢B
+ ·éƱêÍNXpXÌ[gÉ é±ÆÉÈèÜ·B
+ HibernateÍAX^[gAbvÉNXpXÌ[gÅ <literal>hibernate.cfg.xml</literal>
+ Æ¢¤t@Cð©®IÉTµÜ·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-firstapp-ant" revision="1">
+ <title>AntÉæérh</title>
+
+ <para>
+ »êÅÍAntðgÁÄ`
[gAðrhµÜµå¤B
+ »êÉÍAntªCXg[³êĢȯêÎÈèܹñB
+ <ulink url="http://ant.apache.org/bindownload.cgi">Ant_E[hy[W</ulink>
+ ©ç_E[hµÄ¾³¢B
+ AntÌCXg[û@ͱ±ÅÍྵܹñÌÅA
+ <ulink url="http://ant.apache.org/manual/index.html">Ant}j
A</ulink>
+ ðQƵľ³¢B
+ AntðCXg[·êÎArht@CÌì¬ðJnūܷB
+ ±Ìt@CÍ <literal>build.xml</literal> ÆÄÎêAJfBNgɼÚzuµÜ·B
+ </para>
+
+ <para>
+ î{IÈrht@CÍ±Ìæ¤ÉÈèÜ·F
+ </para>
+
+ <programlisting><![CDATA[<project name="hibernate-tutorial" default="compile">
+
+ <property name="sourcedir" value="${basedir}/src"/>
+ <property name="targetdir" value="${basedir}/bin"/>
+ <property name="librarydir" value="${basedir}/lib"/>
+
+ <path id="libraries">
+ <fileset dir="${librarydir}">
+ <include name="*.jar"/>
+ </fileset>
+ </path>
+
+ <target name="clean">
+ <delete dir="${targetdir}"/>
+ <mkdir dir="${targetdir}"/>
+ </target>
+
+ <target name="compile" depends="clean, copy-resources">
+ <javac srcdir="${sourcedir}"
+ destdir="${targetdir}"
+ classpathref="libraries"/>
+ </target>
+
+ <target name="copy-resources">
+ <copy todir="${targetdir}">
+ <fileset dir="${sourcedir}">
+ <exclude name="**/*.java"/>
+ </fileset>
+ </copy>
+ </target>
+
+</project>]]></programlisting>
+
+ <para>
+ ±êÍ <literal>.jar</literal> ÅIíélibfBNgÌ·×ÄÌt@CðA
+ RpCÉgp·éNXpXÉÇÁ·é±ÆðAntɳ¦Ü·B
+ ܽAJava\[Xt@CÅÈ¢·×ÄÌt@Cð^[QbgfBNgÉRs[·éÆ¢¤±ÆÅà èÜ·B
+ á¦ÎÝèt@CâHibernate}bsOt@CÈÇÅ·B
+ ¡AntðÀs·éÆA±Ìæ¤Èoͪ é͸ŷF
+ </para>
+
+ <programlisting><![CDATA[C:\hibernateTutorial\>ant
+Buildfile: build.xml
+
+copy-resources:
+ [copy] Copying 2 files to C:\hibernateTutorial\bin
+
+compile:
+ [javac] Compiling 1 source file to C:\hibernateTutorial\bin
+
+BUILD SUCCESSFUL
+Total time: 1 second ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="tutorial-firstapp-helpers" revision="3">
+ <title>X^[gAbvÆwp</title>
+
+ <para>
+ ³Ä <literal>Event</literal> IuWFNgð[hµ½èi[µ½è·éõªÅ«Üµ½B
+ µ©µÜ¸ÍCtXgN`ÌR[hð¢ÄAZbgAbv𮹷éKvª èÜ·B
+ ܸÍHibernateðX^[gAbvµÈ¯êÎÈèܹñB
+ ±ÌX^[gAbvÉÍAO[oÌ <literal>SessionFactory</literal> IuWFNg𶬵ÄA
+ »êðAvP[VÌR[hÅANZXµâ·¢êÉi[·é±ÆªÜÜêÜ·B
+ <literal>SessionFactory</literal> ÍVµ <literal>Session</literal> ðI[v·é±ÆªÅ«Ü·B
+ <literal>Session</literal> ÍVOXbhÌìÆPÊ(Unit of Work)ð\»µÜ·B
+ »êÉε<literal>SessionFactory</literal> ÍXbhZ[tÌO[oIuWFNgÅ èA
+ êx¾¯CX^X»³êÜ·B
+ </para>
+
+ <para>
+ ±±ÅX^[gAbvðs¢A ÖÉ <literal>SessionFactory</literal> ÖANZX·é
+ <literal>HibernateUtil</literal> wpNXð쬵ܷB
+ Àð©ÄÝܵå¤F
+ </para>
+
+ <programlisting><![CDATA[package util;
+
+import org.hibernate.*;
+import org.hibernate.cfg.*;
+
+public class HibernateUtil {
+
+ private static final SessionFactory sessionFactory;
+
+ static {
+ try {
+ // Create the SessionFactory from hibernate.cfg.xml
+ sessionFactory = new Configuration().configure().buildSessionFactory();
+ } catch (Throwable ex) {
+ // Make sure you log the exception, as it might be swallowed
+ System.err.println("Initial SessionFactory creation failed." + ex);
+ throw new ExceptionInInitializerError(ex);
+ }
+ }
+
+ public static SessionFactory getSessionFactory() {
+ return sessionFactory;
+ }
+
+}]]></programlisting>
+
+ <para>
+ ±ÌNXÍÃIú»ubNiNXª[h³ê鯫ÉJVMÉæÁÄêx¾¯ÄÎêéj
+ ÅO[oÌ <literal>SessionFactory</literal> 𶬷龯ÅÍÈA
+ ÃIVOgÌgpðBÁµÜ·B
+ AvP[VT[o[ÌJNDI©ç <literal>SessionFactory</literal> ð
+ bNAbv·éÌÆ¯lÅ·B
+ </para>
+
+ <para>
+ Ýèt@CàÅ <literal>SessionFactory</literal> ɼOð^¦éÆA
+ HibernateÍ <literal>SessionFactory</literal> \zãÉJNDIÉεoChðs¨¤ÆµÜ·B
+ ±ÌR[hð®SÉr·é½ßÉÍA
+ JMXfvCgðpµÄ
+ JMXðpÅ«éReiðCX^X»µA
+ <literal>HibernateService</literal> ðJNDIÖoCh·é±ÆàūܷB
+ ±êçÌxÈIvVÍAHibernateÌt@XhL
gÅླêĢܷB
+ </para>
+
+ <para>
+ <literal>HibernateUtil.java</literal> ðJ\[XfBNgÉ é <literal>events</literal> pbP[WÌ
+ ×ÉzuµÄ¾³¢B
+ </para>
+
+ <programlisting><![CDATA[.
++lib
+ <Hibernate and third-party libraries>
++src
+ +events
+ Event.java
+ Event.hbm.xml
+ +util
+ HibernateUtil.java
+ hibernate.cfg.xml
++data
+build.xml]]></programlisting>
+
+ <para>
+ ±êÍâèÈÄRpCÅ«é͸ŷB
+ ÅãÉMOVXeðÝè·éKvª èÜ·B
+ HibernateÍcommons loggingðg¤½ßALog4jÆJDK 1.4 loggingÌIðð·éKvª èܹñB
+ ÙÆñÇÌJÒªDÞÌÍLog4jÅ·B
+ HibernatefBXgr
[ViÌ<literal>etc/</literal> fBNgj©ç
+ <literal>log4j.properties</literal> ð È½Ì <literal>src</literal> fBNgàÌ
+ <literal>hibernate.cfg.xml</literal> Ì×ÉRs[µÄ¾³¢B
+ Ýèáð©ÄAç·Èoͪæ¯êÎÝèðÏXµÄ¾³¢B
+ ftHgÅÍHibernateÌX^[gAbvbZ[W¾¯ªWoÍÉ\¦³êÜ·B
+ </para>
+
+ <para>
+ `
[gAÌCtÍ®SÅ·B
+ HibernateðgÁÄÀÛÌìÆð·éõª®¢Üµ½B
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-firstapp-workingpersistence" revision="4">
+ <title>IuWFNgÌ[hÆi[</title>
+
+ <para>
+ ¢ÉIuWFNgÌ[hÆi[ÉHibernateðg¤±ÆªÅ«Ü·B
+ <literal>main()</literal> \bhð <literal>EventManager</literal>
+ NXð«Ü·F
+ </para>
+
+ <programlisting><![CDATA[package events;
+import org.hibernate.Session;
+
+import java.util.Date;
+
+import util.HibernateUtil;
+
+public class EventManager {
+
+ public static void main(String[] args) {
+ EventManager mgr = new EventManager();
+
+ if (args[0].equals("store")) {
+ mgr.createAndStoreEvent("My Event", new Date());
+ }
+
+ HibernateUtil.getSessionFactory().close();
+ }
+
+ private void createAndStoreEvent(String title, Date theDate) {
+
+ Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+
+ session.beginTransaction();
+
+ Event theEvent = new Event();
+ theEvent.setTitle(title);
+ theEvent.setDate(theDate);
+
+ session.save(theEvent);
+
+ session.getTransaction().commit();
+ }
+
+}]]></programlisting>
+
+ <para>
+ Vµ¢ <literal>Event</literal> IuWFNg𶬵A»êðHibernateÉnµÜ·B
+ ¡ÅÍHibernateªSQLðµAf[^x[XÅ <literal>INSERT</literal> ðÀsµÜ·B
+ ÀsOÉ <literal>Session</literal> Æ <literal>Transaction</literal>
+ ð·éR[hðmFµÄ¾³¢B
+ </para>
+
+ <para>
+ <literal>Session</literal> Í1ÂÌìÆPÊ(Unit of Work)Å·B
+ ªÌÔAbðÈPÉ·é½ßÉA
+ <literal>Session</literal> Æ <literal>Transaction</literal> ÌÎðêÎêÆ¼èµÜ·B
+ gpµÄ¢égUNVEVXei±ÌP[XÅÍJTAƤ¶Å«éPÈJDBCj©çR[hðÛì·é½ßÉA
+ Hibernate <literal>Session</literal> ãÅpÂ\È <literal>Transaction</literal> APIðgpµÜ·B
+ </para>
+
+ <para>
+ <literal>sessionFactory.getCurrentSession()</literal> ÍÈÉð·éÌŵ天H
+ ܸA¢Á½ñ <literal>SessionFactory</literal> ðæ¾µÛ·êÎ
+ i <literal>HibernateUtil</literal> ̨©°ÅÈPÅ·jA±Ì\bhð½xÅàA
+ DZ©çÅàÄÑo·±ÆªoÜ·B
+ <literal>getCurrentSession()</literal> \bhÍíÉu»ÝÌvìÆPÊ(Unit of Work)ðԵܷB
+ <literal>hibernate.cfg.xml</literal> ̱Ì@\ÌÝèÅA"thread"ðwèµ½±Æðv¢oµÄ¾³¢B
+ ±Ì½ß»ÝÌìÆPÊÌXR[vÍA±ÌAvP[VðÀs·é»ÝÌJavaXbhÅ·B
+ µ©µ±êÅSÄÅÍ èܹñB
+ <literal>Session</literal> ÍÅÉKvÆÈÁ½Æ«AÂÜèÅÉ <literal>getCurrentSession()</literal> ª
+ ÄÎê½Æ«ÉJnµÜ·B
+ »ÌÆ«HibernateÉæè»ÝÌXbhÉÑt¯çêÜ·B
+ gUNVªI¹iR~bgàµÍ[obNjµ½Æ«A
+ HibernateàXbh©ç <literal>Session</literal> ðØè£µAN[YµÜ·B
+ ÄÑ <literal>getCurrentSession()</literal> ðÄÔÆA
+ Vµ¢ <literal>Session</literal> ðæ¾µÄVµ¢ìÆPÊðX^[gūܷB
+ ±Ì <emphasis>thread-bound</emphasis> vO~OEfÍHibernateðp·éãÅÅàlCª èÜ·B
+ </para>
+
+ <para>
+ gUNV̵¢Æ«EÌÚµ¢îñÉ¢ÄÍA
+ <xref linkend="transactions"/> ð©Ä¾³¢B
+ ±ÌáÅÍG[â[obNवܷB
+ </para>
+
+ <para>
+ ±ÌÅÌ[`ðÀs·éÉÍAAntÌrht@CÉÄÑoµÂ\È^[Qbgð
+ ÇÁµÈ¯êÎÈèܹñF
+ </para>
+
+ <programlisting><![CDATA[<target name="run" depends="compile">
+ <java fork="true" classname="events.EventManager" classpathref="libraries">
+ <classpath path="${targetdir}"/>
+ <arg value="${action}"/>
+ </java>
+</target>]]></programlisting>
+
+ <para>
+ <literal>action</literal> øÌlÍA^[QbgðÄÔÆ«ÉR}hCÅÝèµÜ·F
+ </para>
+
+ <programlisting><![CDATA[C:\hibernateTutorial\>ant run -Daction=store]]></programlisting>
+
+ <para>
+ RpC·éÆAHibernateªX^[gµA ȽÌÝèÉæèÜ·ªA
+ ½ÌOoͪ é͸ŷB
+ »ÌÅãÉÍȺÌsª éŵå¤F
+ </para>
+
+ <programlisting><![CDATA[[java] Hibernate: insert into EVENTS (EVENT_DATE, title, EVENT_ID) values (?, ?, ?)]]></programlisting>
+
+ <para>
+ ±êÍHibernateªÀs·é <literal>INSERT</literal> ÅA
+ NGX`}[NÍJDBCoChp[^ð\µÄ¢Ü·B
+ øÆµÄoCh³êélð©é½ßA é¢ÍOÌç·«ð¸ç·½ßÉÍA
+ <literal>log4j.properties</literal> ð`FbNµÄ¾³¢B
+ </para>
+
+ <para>
+ »êÅͯ¶æ¤Éi[³ê½CxgÌêð©æ¤Æv¢Ü·B
+ »Ì½ßC\bhÉIvVðÇÁµÜ·F
+ </para>
+
+ <programlisting><![CDATA[if (args[0].equals("store")) {
+ mgr.createAndStoreEvent("My Event", new Date());
+}
+else if (args[0].equals("list")) {
+ List events = mgr.listEvents();
+ for (int i = 0; i < events.size(); i++) {
+ Event theEvent = (Event) events.get(i);
+ System.out.println("Event: " + theEvent.getTitle() +
+ " Time: " + theEvent.getDate());
+ }
+}]]></programlisting>
+
+ <para>
+ Vµ¢ <literal>listEvents()\bh</literal> àÇÁµÜ·B
+ </para>
+
+ <programlisting><![CDATA[private List listEvents() {
+
+ Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+
+ session.beginTransaction();
+
+ List result = session.createQuery("from Event").list();
+
+ session.getTransaction().commit();
+
+ return result;
+}]]></programlisting>
+
+ <para>
+ ±±Å·é±ÆÍAf[^x[X©ç¶Ý·é·×ÄÌ <literal>Event</literal>
+ IuWFNgð[h·éHQL (Hibernate Query Language) NGðg¤±ÆÅ·B
+ HibernateÍKØÈSQL𶬵A»êðf[^x[XÉèA
+ »Ìf[^ðgÁÄ <literal>Event</literal> IuWFNg𶬵ܷB
+ RHQLųçÉ¡GÈNGðì¬Å«Ü·B
+ </para>
+
+ <para>
+ ȺÌXebvÅA·×ÄÌÀsÆeXgðs¢Ü·B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ hbm2ddlðÊ·OÉf[^x[XÌf[^ð쬵Af[^x[XXL[}𶬷é½ßÉA
+ <literal>ant run -Daction=store</literal> ðÀsµÄ¾³¢B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ¡Í <literal>hibernate.cfg.xml</literal> t@CÌvpeBðRgAEgµÄhbm2ddlð³øÉµÄ¾³¢B
+ ÊíÍp±IÉPÌeXgðµÄ¢éÔÍhbm2ddlðLøÉµÄ¨ÌÅ·ªA
+ »êÈOÌêÉhbm2ddlðN®·éÆi[µÄ¨¢½SÄÌf[^ð <emphasis>hbv</emphasis> ·éŵå¤B
+ Ýèð <literal>create</literal> É·éÆAÊÆµÄ
+ uSessionFactory¶¬ÌÛAXL[}©çSÄÌe[uðhbvµÄÄ쬷évÆ¢¤ÝèÉÈèÜ·B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ¡ <literal>-Daction=list</literal> ÆwèµÄAntðÄÔÆA
+ ±êÜÅi[µ½Cxgª©¦é͸ŷB
+ <literal>store</literal> ANVðñÈãÄÔ±ÆàÂ\Å·B
+ </para>
+
+ <para>
+ ÓFßÄHibernateÉGêélX̽ª±±Å¸s·é½ßA<emphasis>Table not found</emphasis> G[bZ[WÉ
+ Ö·é¿âðèúIÉ©©¯Ü·B
+ µ©µãLÌXebvÉ]¦ÎAhbm2ddlªÅÉÀs³ê½Æ«Éf[^x[XXL[}ð쬵A
+ »ÌãÌÀsɨ¢Äà±ÌXL[}ðgp·éÌÅAâèÍN±çȢŵå¤B
+ }bsOâf[^x[XXL[}ðÏXµ½Æ«ÍAà¤êxhbm2ddlðLøÉµÄ¾³¢B
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="tutorial-associations">
+ <title>p[g2 - ÖAÌ}bsO</title>
+
+ <para>
+ i±GeBeBNXðe[uÉ}bsOµÜµ½B
+ ³çɱÌãɢ©ÌNXÌÖAðÇÁµÜµå¤B
+ ܸßÉAvP[VÉlXðÇÁµAÞçªQÁ·éCxgÌXgði[µÜ·B
+ </para>
+
+ <sect2 id="tutorial-associations-mappinguser" revision="1">
+ <title>PersonNXÌ}bsO</title>
+
+ <para>
+ ÅÌ <literal>Person</literal> NXÍPÅ·F
+ </para>
+
+ <programlisting><![CDATA[package events;
+
+public class Person {
+
+ private Long id;
+ private int age;
+ private String firstname;
+ private String lastname;
+
+ public Person() {}
+
+ // Accessor methods for all properties, private setter for 'id'
+
+}]]></programlisting>
+
+ <para>
+ <literal>Person.hbm.xml</literal> Æ¢¤Vµ¢}bsOt@Cð쬵ľ³¢
+ it@CÌÅÉDTDÖÌQÆðYê¸Éüêľ³¢jF
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="events.Person" table="PERSON">
+ <id name="id" column="PERSON_ID">
+ <generator class="native"/>
+ </id>
+ <property name="age"/>
+ <property name="firstname"/>
+ <property name="lastname"/>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ ÅãÉHibernateÌÝèÉVµ¢}bsOðÇÁµÄ¾³¢F
+ </para>
+
+ <programlisting><![CDATA[<mapping resource="events/Event.hbm.xml"/>
+<mapping resource="events/Person.hbm.xml"/>]]></programlisting>
+
+ <para>
+ »êÅͱêç2ÂÌGeBeBÔÌÖAð쬵ܷB
+ lXªCxgÉQÁÅ«ACxgªQÁÒðÂÌ;ç©Å·B
+ µíȯêÎÈçÈ¢ÝvÌâèÍAûüA½dxARNVÌUé¢Å·B
+ </para>
+ </sect2>
+
+ <sect2 id="tutorial-associations-unidirset" revision="3">
+ <title>PûüSetx[XÖA</title>
+
+ <para>
+ CxgÌRNVð <literal>Person</literal> NXÉÇÁµÜ·B
+ ±¤µÄ¨ÆA¾¦IÈNGAÂÜèí´í´<literal>aPerson.getEvents()</literal>ðÄÑo³¸ÉA
+ ÁèÌlÉRtCxgðÈPÉirQ[g·é±ÆªÅ«Ü·B
+ ½¿ÍJavaÌRNVA<literal>Set</literal> ðg¢Ü·B
+ RNVÍd¡vfð½È¢µAÔͽ¿ÉÍÓ¡ªÈ¢©çÅ·B
+ </para>
+
+ <para>
+ <literal>Set</literal> ÅÀ³êéPûüA½lÖAªKvÅ·B
+ JavaNXàÉηéR[hð¢Ä}bsOµÜµå¤F
+ </para>
+
+ <programlisting><![CDATA[public class Person {
+
+ private Set events = new HashSet();
+
+ public Set getEvents() {
+ return events;
+ }
+
+ public void setEvents(Set events) {
+ this.events = events;
+ }
+}]]></programlisting>
+
+ <para>
+ ±ÌÖAð}bsO·éOÉA½Î¤É¢Äl¦Ä¾³¢B
+ ¾ç©È±ÆÅ·ªA¡Í±êðPûüɵ½¾¯Å·B
+ tÉA <literal>Event</literal> ¤ÉàÊÌRNVðì鱯àūܷB
+ á¦Î <literal>anEvent.getParticipants()</literal> Ìæ¤ÉA
+ oûüÉirQ[gµ½¯êÎA»¤·é±ÆàūܷB
+ ±êÍ@\IÉÝÄKvÅÍ èܹñB
+ ÁèÌCxgÉÖW·éf[^ðæ¾·é¾mÈNGðA¢ÂÅàÀs·é±Æªoܵ½B
+ ±ÌÝvÌIðÍJÒÉC³êÄ¢ÄA±Ìc_Éæè¾ç©ÈÌÍÖA̽dxÅ·B
+ ÂÜ輤ðu½vlÉ·éA <emphasis>½Î½</emphasis> ÆÄÎêéÖAÅ·B
+ »Ì½ßHibernateÌmany-to-many}bsOðg¢Ü·F
+ </para>
+
+ <programlisting><![CDATA[<class name="events.Person" table="PERSON">
+ <id name="id" column="PERSON_ID">
+ <generator class="native"/>
+ </id>
+ <property name="age"/>
+ <property name="firstname"/>
+ <property name="lastname"/>
+
+ <set name="events" table="PERSON_EVENT">
+ <key column="PERSON_ID"/>
+ <many-to-many column="EVENT_ID" class="events.Event"/>
+ </set>
+
+</class>]]></programlisting>
+
+ <para>
+ HibernateÍ èÆ çäéíÞÌRNV}bsOðT|[gµÄ¢Ü·ªA
+ ÅàêÊIÈà̪ <literal><set></literal> Å·B
+ ½Î½ÖAiÜ½Í <emphasis>n:m</emphasis> GeBeB[VVbvjÉÍA
+ ÖAe[uªKvÅ·B
+ ±Ìe[uÌ»ê¼êÌsÍAlÆCxgÔÌNð\»µÜ·B
+ e[u¼Í <literal>set</literal> vfÌ <literal>table</literal> ®«ÅÝèµÜ·B
+ l¤ÌÖA̯ÊqJ¼Í <literal><key></literal> vfÅA
+ Cxg¤ÌJ¼Í <literal><many-to-many></literal> Ì <literal>column</literal>
+ ®«Åè`µÜ·B
+ HibernateÉRNVÌIuWFNgÌNX
+ i³mÉÍAQÆÌRNV̽ΤÌNXjð³¦È¯êÎÈèܹñB
+ </para>
+
+ <para>
+ »Ì½ß±Ì}bsOÌf[^x[XXL[}ÍÈºÌæ¤ÉÈèÜ·BF
+ </para>
+
+ <programlisting><![CDATA[
+ _____________ __________________
+ | | | | _____________
+ | EVENTS | | PERSON_EVENT | | |
+ |_____________| |__________________| | PERSON |
+ | | | | |_____________|
+ | *EVENT_ID | <--> | *EVENT_ID | | |
+ | EVENT_DATE | | *PERSON_ID | <--> | *PERSON_ID |
+ | TITLE | |__________________| | AGE |
+ |_____________| | FIRSTNAME |
+ | LASTNAME |
+ |_____________|
+ ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="tutorial-associations-working" revision="2">
+ <title>ÖAð©¹é</title>
+
+ <para>
+ <literal>EventManager</literal> ÌVµ¢\bhÅlXÆCxgðêɵܵå¤F
+ </para>
+
+ <programlisting><![CDATA[private void addPersonToEvent(Long personId, Long eventId) {
+
+ Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+ session.beginTransaction();
+
+ Person aPerson = (Person) session.load(Person.class, personId);
+ Event anEvent = (Event) session.load(Event.class, eventId);
+
+ aPerson.getEvents().add(anEvent);
+
+ session.getTransaction().commit();
+}]]></programlisting>
+
+ <para>
+ <literal>Person</literal> Æ <literal>Event</literal> ð[hµ½ãA
+ ÊÌRNV\bhðgÁÄPÉ»ÌRNVðC³µÄ¾³¢B
+ ²Ìƨè <literal>update()</literal> â <literal>save()</literal>
+ ̾¦IÈÄÑoµÍ èܹñB
+ HibernateÍAC³³ê½±ÆÉæèXV·éKvÌ éRNVð©®IÉmµÜ·B
+ ±êÍ <emphasis>©®_[eB`FbN</emphasis> ÆÄÎêA
+ IuWFNg̼OâdatevpeBðC³·é±ÆÅ·±ÆàÂ\Å·B
+ »êçª <emphasis>i±</emphasis> óÔÉ éÀèA
+ ÂÜèÁèÌHibernate <literal>Session</literal> ÉoCh³êÄ¢éÀè
+ iá¦ÎìÆPÊ(Unit of Work)ÌÅPÉ[hܽÍZ[u³ê½jA
+ HibernateÍÇñÈÏXàj^[µAx«Ý(write-behind)ÅSQLðÀsµÜ·B
+ ÊíAìÆPÊ(Unit of Work)ÌÅãɾ¯síêéf[^x[XÆÌóÔð¯ú³¹éÍA
+ <emphasis>tbV
</emphasis> ÆÄÎêÜ·B
+ ±ÌR[hÅÍAìÆPÊ(Unit of Work)Íf[^x[XgUNVÌR~bgiàµÍ[obNjÅI¹µÜ·B
+ ±êÍA <literal>CurrentSessionContext</literal> NXÉ뵀 <literal>thread</literal> ðÝèµ½½ßÅ·B
+ </para>
+
+ <para>
+ ÙÈéìÆPÊ(Unit of Work)ÅlXÆCxgð[h·é±ÆàRūܷB
+ »¤ÅȯêÎAi±óÔÉȢƫiÈOÉi±Å Á½ÈçA±ÌóÔð <emphasis>ª£idetachedj</emphasis>
+ ÆÄÑÜ·jA <literal>Session</literal> ÌOÅIuWFNgðC³µÜ·B
+ ª£³ê鯫ÉÍRNVðÏX·é±ÆàÂ\Å·F
+ </para>
+
+ <programlisting><![CDATA[private void addPersonToEvent(Long personId, Long eventId) {
+
+ Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+ session.beginTransaction();
+
+ Person aPerson = (Person) session
+ .createQuery("select p from Person p left join fetch p.events where p.id = :pid")
+ .setParameter("pid", personId)
+ .uniqueResult(); // Eager fetch the collection so we can use it detached
+
+ Event anEvent = (Event) session.load(Event.class, eventId);
+
+ session.getTransaction().commit();
+
+ // End of first unit of work
+
+ aPerson.getEvents().add(anEvent); // aPerson (and its collection) is detached
+
+ // Begin second unit of work
+
+ Session session2 = HibernateUtil.getSessionFactory().getCurrentSession();
+ session2.beginTransaction();
+
+ session2.update(aPerson); // Reattachment of aPerson
+
+ session2.getTransaction().commit();
+}]]></programlisting>
+
+ <para>
+ <literal>update</literal> ÌÄÑoµÍª£IuWFNgðÄÑi±»µÜ·B
+ ±êÍAVµ¢ìÆPÊ(Unit of Work)ÉoCh·éƾ¦éŵå¤B
+ »Ì½ßª£ÌÔÉÁ¦çê½ÇÌæ¤ÈC³àf[^x[XÉZ[uūܷB
+ GeBeBIuWFNgÌRNVÖÌC³iÇÁ¥íjà¯lÉZ[uūܷB
+ </para>
+
+ <para>
+ ±êÍ¡Í Üèg¢Ý¿ª èܹñªA
+ ©ªÌAvP[VÌÝvÉgÝޱƪūédvÈRZvgÅ·B
+ »êÅͱÌGNTTCYÌÅãÉA
+ <literal>EventManager</literal> ÌC\bhÉVµ¢ANVðÇÁµÄ
+ R}hC©çÄÑoµÄÝܵå¤B
+ lâCxg̯ÊqªKvÈçA <literal>save()</literal> \bhªÔµÄêÜ·
+ iêÉæÁÄͯÊqðÔ·½ßÉ\bhðC³·éKvª é©àµêܹñjB
+ </para>
+
+ <programlisting><![CDATA[else if (args[0].equals("addpersontoevent")) {
+ Long eventId = mgr.createAndStoreEvent("My Event", new Date());
+ Long personId = mgr.createAndStorePerson("Foo", "Bar");
+ mgr.addPersonToEvent(personId, eventId);
+ System.out.println("Added person " + personId + " to event " + eventId);
+}]]></programlisting>
+
+ <para>
+ ±êͯ¶æ¤ÉdvÈ2ÂÌNXAÂÜè2ÂÌGeBeBÔÌÖAÌáŵ½B
+ OÉq×½æ¤ÉAT^IÈfÉÍAÊuärIdvÅÍÈ¢v¼ÌNXÆ^ª èÜ·B
+ ±êÜÅÉ©½æ¤È <literal>int</literal> â <literal>String</literal> Ìæ¤ÈàÌÅ·B
+ ±Ìæ¤ÈNXð <emphasis>l^</emphasis> ƾ¢Ü·B
+ ±ÌCX^XÍÁèÌGeBeBÉ <emphasis>˶</emphasis> µÜ·B
+ ±Ì^ÌCX^XÍÆ©ÌIDð¿Ü¹ñµA
+ GeBeBÔŤL³ê鱯à èܹñ
+ it@[Xgl[ª¯¶¾Á½ÆµÄàA2lÌlͯ¶ <literal>firstname</literal>
+ IuWFNgðQƵܹñjB
+ l^Íà¿ëñJDKàɩ©èÜ·ªA»ê¾¯ÅÍÈ
+ iÀÛAHibernateAvP[Vɨ¢Ä·×ÄÌJDKNXÍl^ƩȹܷjA
+ á¦Î <literal>Address</literal> â <literal>MonetaryAmount</literal>
+ Ìæ¤ÈÆ©Ì˶NXð±ÆàūܷB
+ </para>
+
+ <para>
+ l^ÌRNVðÝv·é±ÆàūܷB
+ ±êͼÌGeBeBÖÌQÆÌRNVÆÍTOIÉñíÉÙÈèÜ·ªA
+ JavaÅÍÙÆñǯ¶æ¤É©¦Ü·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-associations-valuecollections">
+ <title>lÌRNV</title>
+
+ <para>
+ l^IuWFNgÌRNVð <literal>Person</literal> GeBeBÖÇÁµÜ·B
+ E[AhXði[µ½¢ÌÅ·ªA<literal>String</literal> ^ðgÁÄ¢éÌÅA
+ RNVÍÄÑ <literal>Set</literal> Å·F
+ </para>
+ <programlisting><![CDATA[private Set emailAddresses = new HashSet();
+
+public Set getEmailAddresses() {
+ return emailAddresses;
+}
+
+public void setEmailAddresses(Set emailAddresses) {
+ this.emailAddresses = emailAddresses;
+}]]></programlisting>
+
+ <para>
+ ±Ì <literal>Set</literal> Ì}bsOÅ·F
+ </para>
+
+ <programlisting><![CDATA[<set name="emailAddresses" table="PERSON_EMAIL_ADDR">
+ <key column="PERSON_ID"/>
+ <element type="string" column="EMAIL_ADDR"/>
+</set>]]></programlisting>
+
+ <para>
+ OÌ}bsOÆä×Äá¤ÌÍ <literal>element</literal> ̪ŷªA
+ HibernateɱÌRNVª¼ÌGeBeBÖÌQÆðÜܸA
+ <literal>String</literal> ^ÌvfÌRNVðÜÞ±Æð³¦Ü·B
+ i¬¶Ì¼O(string)ÍHibernateÌ}bsO^ܽÍRo[^Š鯢¤±ÆÅ·jB
+ JèԵܷªA<literal>set</literal> vfÌ <literal>table</literal> ®«ÍA
+ RNV̽ßÌe[u¼ðwèµÜ·B
+ <literal>key</literal> vfÍRNVe[uÌOL[J¼ðè`µÜ·B
+ <literal>element</literal> vfÌ <literal>column</literal> ®«Í <literal>String</literal>
+ ÌlªÀÛÉi[³êéJ̼Oðè`µÜ·B
+ </para>
+
+ <para>
+ XVµ½XL[}ð©Ä¾³¢F
+ </para>
+
+ <programlisting><![CDATA[
+ _____________ __________________
+ | | | | _____________
+ | EVENTS | | PERSON_EVENT | | | ___________________
+ |_____________| |__________________| | PERSON | | |
+ | | | | |_____________| | PERSON_EMAIL_ADDR |
+ | *EVENT_ID | <--> | *EVENT_ID | | | |___________________|
+ | EVENT_DATE | | *PERSON_ID | <--> | *PERSON_ID | <--> | *PERSON_ID |
+ | TITLE | |__________________| | AGE | | *EMAIL_ADDR |
+ |_____________| | FIRSTNAME | |___________________|
+ | LASTNAME |
+ |_____________|
+ ]]></programlisting>
+
+ <para>
+ RNVe[uÌåL[ÍAÀÛͼûÌJðgÁ½¡L[Š鱯ªí©èÜ·B
+ ±êÍl²ÆÉE[AhXªd¡Å«È¢Æ¢¤±ÆÅA
+ JavaÌsetÉv³êéZ}eBNX»ÌàÌÅ·B
+ </para>
+
+ <para>
+ ÈOlÆCxgðÖAï½Æ«ÆS¯¶æ¤ÉA
+ ¡âµÉRNVÉvfðÇÁ·é±ÆªÅ«éæ¤ÉÈèܵ½B
+ ¼ûÆàJavaÅͯ¶R[hÅ·B
+ </para>
+
+ <programlisting><![CDATA[private void addEmailToPerson(Long personId, String emailAddress) {
+
+ Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+ session.beginTransaction();
+
+ Person aPerson = (Person) session.load(Person.class, personId);
+
+ // The getEmailAddresses() might trigger a lazy load of the collection
+ aPerson.getEmailAddresses().add(emailAddress);
+
+ session.getTransaction().commit();
+}]]></programlisting>
+
+ <para>
+ ¡ñARNVÌú»É <emphasis>fetch</emphasis> NGðgpµÜ¹ñŵ½B
+ »Ì½ßAgetter\bhÌÄÑoµÉæÁÄRNVðú»·é½ßÌSELECTª
+ Às³êéÌÅARNVÉvfðÇÁūܷB
+ SQLÌOðĵÄA¦tFb`ðgÁÄÅK»µÄ¾³¢B
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-associations-bidirectional" revision="1">
+ <title>oûüÖA</title>
+
+ <para>
+ ÉoûüÖAð}bsOµÜ·B
+ Javaż¤©çlÆCxgÌÖAð®ì³¹Ü·B
+ à¿ëñAf[^x[XXL[}ÍÏíèܹñªA½dxͽνÌÜÜÅ·B
+ [Vif[^x[XÍlbg[NvO~O¾êæèà_îÈÌÅA
+ irQ[VÌûüÌæ¤ÈàÌðKvƵܹñB
+ f[^Í çäéÌû@Å©½è³Å«éÆ¢¤±ÆÅ·B
+ </para>
+
+ <para>
+ ܸ <literal>Event</literal> CxgNXÉQÁÒÌRNVðÇÁµÜ·F
+ </para>
+
+ <programlisting><![CDATA[private Set participants = new HashSet();
+
+public Set getParticipants() {
+ return participants;
+}
+
+public void setParticipants(Set participants) {
+ this.participants = participants;
+}]]></programlisting>
+
+ <para>
+ »êÅÍ <literal>Event.hbm.xml</literal> ÅÖA̱¿ç¤ð}bsOµÄ¾³¢B
+ </para>
+
+ <programlisting><![CDATA[<set name="participants" table="PERSON_EVENT" inverse="true">
+ <key column="EVENT_ID"/>
+ <many-to-many column="PERSON_ID" class="events.Person"/>
+</set>]]></programlisting>
+
+ <para>
+ ²ÌƨèA¢¸êÌ}bsOhL
g(XMLt@C)ÅàAÊÌ <literal>set</literal>
+ }bsOðgÁĢܷB
+ <literal>key</literal> Æ <literal>many-to-many</literal> ÌJ¼ªA
+ ¼ûÌ}bsOhL
gÅüêÖ¦ÉÈÁĢ鱯Éڵľ³¢B
+ ±±ÅÅàdvÈÇÁÚÍA <literal>Event</literal> ÌRNV}bsOÌ <literal>set</literal>
+ vfÉ é <literal>inverse="true"</literal> ®«Å·B
+ </para>
+
+ <para>
+ ±ÌwèÌÓ¡ÍA2ÂÌÔÌGeBeBÔÌNÉ¢ÄÌîñðT·Kvª 鯫A
+ HibernateͽΤÌGeBeBAÂÜè <literal>Person</literal> NX©çT·Æ¢¤±ÆÅ·B
+ êx2ÂÌGeBeBÔÌoûüNªÇÌæ¤É쬳ê驪í©êÎA
+ ±êðð·é±ÆÍÆÄàÈPÅ·B
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-associations-usingbidir">
+ <title>oûüNÌ®ì</title>
+
+ <para>
+ ܸAHibernateªÊíÌJavaÌZ}eBNXÉe¿ðyڳȢ±ÆðSɯßĨ¢Ä¾³¢B
+ ½¿ÍAPûüÌáÆµÄÇÌæ¤É <literal>Person</literal> Æ <literal>Event</literal>
+ ÌÔÌNð쬵½Åµå¤©H
+ <literal>Person</literal> ÌCX^XÌCxgÖÌQÆÌRNVÉ
+ <literal>Event</literal> ÌCX^XðÇÁµÜµ½B
+ »Ì½ß±ÌNðoûüɵ½¯êÎA
+ ½èOÅ·ª½Î¤É௶±ÆðµÈ¯êÎÈèܹñB
+ <literal>Event</literal> ÌRNVÉ <literal>Person</literal> ÖÌ
+ QÆðÇÁ·éÆ¢¤±ÆÅ·B
+ ±Ìu¼¤ÅNðÝè·é±ÆvÍâÎÉKvÈÌÅAµÄYêȢž³¢B
+ </para>
+
+ <para>
+ ½ÌJÒÍTdÉvO·éÌÅA
+ GeBeB̼¤É³µÖAðÝè·éNÇ\bhð쬵ܷB
+ á¦Î <literal>Person</literal> ÅÍÈºÌæ¤ÉÈèÜ·BF
+ </para>
+
+ <programlisting><![CDATA[protected Set getEvents() {
+ return events;
+}
+
+protected void setEvents(Set events) {
+ this.events = events;
+}
+
+public void addToEvent(Event event) {
+ this.getEvents().add(event);
+ event.getParticipants().add(this);
+}
+
+public void removeFromEvent(Event event) {
+ this.getEvents().remove(event);
+ event.getParticipants().remove(this);
+}]]></programlisting>
+
+ <para>
+ RNVÌQbgÆZbg\bhª»ÝprotectedÉÈÁĢ鱯Éӵľ³¢B
+ ±êͯ¶pbP[WÌNXâTuNXÌ\bhÍËRANZXªÂ\Å·ªA
+ iÙÆñÇj»ÌpbP[WOÌÇÌNXÅà¼Ú»ÌRNVð䳵ɷ鱯ðh¬Ü·B
+ ¨»ç½Î¤ÌRNVÉ௶±Æðµ½ûª¢¢Åµå¤B
+ </para>
+
+ <para>
+ <literal>inverse</literal> }bsO®«ÆÍ¢Á½¢½Åµå¤©H
+ JÒÆJavaÉÆÁÄÍAoûüNÍPɼ¤ÌQÆð³µÝè·éÆ¢¤±ÆÅ·B
+ µ©µHibernateÍi§ñá½ðð¯é½ßÉjSQLÌ <literal>INSERT</literal> Æ <literal>UPDATE</literal>
+ ¶ð³mÉÏX·é½ßÌ\ªÈîñðÁĢȢÌÅA
+ oûüÖAvpeB𵤽ß̽ç©Ì¯ðKvƵܷB
+ ÖAÌФð <literal>inverse</literal> ÉÝè·é±ÆÅAHibernateÍî{IÉÍÝèµ½¤ð³µA
+ ½Î¤Ì <emphasis>¾</emphasis> ƵÄl¦Ü·B
+ ±ê¾¯ÅAHibernateÍûüðÂirQ[VfðSQLf[^x[XXL[}ÖÏ··éÆ«Ì
+ ·×ÄÌâèɤÜÎūܷB
+ o¦Ä¨©È¯êÎÈçÈ¢[ÍÈPÅ·B
+ oûüÖAÍK¸Ð¤ð <literal>inverse</literal> É·éKvª 鯢¤±ÆÅ·B
+ êνÖAÅÍ»êͽ¤ÅȯêÎÈèܹñB
+ ½Î½ÖAÅÍÇ¿ç¤Åà\¢Ü¹ñBÇ¿çÅàá¢Í èܹñB
+ </para>
+
+ </sect2>
+
+ <para>
+ Åͱêð¬³ÈWebAvP[VɵÄÝܵå¤B
+ </para>
+
+ </sect1>
+
+ <sect1 id="tutorial-webapp">
+ <title>p[g3 - EventManager WebAvP[V</title>
+
+ <para>
+ HibernateÌWebAvP[VÍAX^hA[ÌAvP[VÌæ¤É
+ <literal>Session</literal> Æ <literal>Transaction</literal> ðgpµÜ·B
+ µ©µ¢Â©ÌêÊIÈp^[ªð§¿Ü·B
+ ±±Å <literal>EventManagerServlet</literal> ð쬵ܷB±ÌT[ubgÍA
+ f[^x[XÉi[µ½SÄÌCxgðXgÉÅ«A³çÉHTMLtH[©çVµ¢CxgðüÍÅ«éàÌÅ·B
+ </para>
+
+ <sect2 id="tutorial-webapp-servlet" revision="1">
+ <title>î{IÈServletÌLq</title>
+
+ <para>
+ Vµ¢NXðA\[XfBNgÌ <literal>events</literal> pbP[WÉ쬵ľ³¢B
+ </para>
+
+ <programlisting><![CDATA[package events;
+
+// Imports
+
+public class EventManagerServlet extends HttpServlet {
+
+ // Servlet code
+}]]></programlisting>
+
+ <para>
+ ServletÍHTTPÌ <literal>GET</literal> NGXgÌÝð·éÌÅA
+ <literal>doGet()</literal> ðÀµÜ·B
+ </para>
+
+ <programlisting><![CDATA[protected void doGet(HttpServletRequest request,
+ HttpServletResponse response)
+ throws ServletException, IOException {
+
+ SimpleDateFormat dateFormatter = new SimpleDateFormat("dd.MM.yyyy");
+
+ try {
+ // Begin unit of work
+ HibernateUtil.getSessionFactory()
+ .getCurrentSession().beginTransaction();
+
+ // Process request and render page...
+
+ // End unit of work
+ HibernateUtil.getSessionFactory()
+ .getCurrentSession().getTransaction().commit();
+
+ } catch (Exception ex) {
+ HibernateUtil.getSessionFactory()
+ .getCurrentSession().getTransaction().rollback();
+ throw new ServletException(ex);
+ }
+
+}]]></programlisting>
+
+ <para>
+ ±êÍ <emphasis>session-per-request</emphasis> Æ¢¤p^[Å·B
+ ServletªNGXgðó¯æéÆA <literal>SessionFactory</literal> Ì
+ <literal>getCurrentSession()</literal> ÌÅÌÄÑoµÅA
+ HibernateÌVµ¢ <literal>Session</literal> ªJ©êÜ·B
+ »ÌÆ«f[^x[XgUNVªJn³êÜ·B
+ f[^ÌÇÝ«ÉÖíç¸A·×ÄÌf[^ANZXÍgUNVàÅs¢Ü·B
+ iAvP[VàÅÍI[gR~bg[hðgpµÜ¹ñjB
+ </para>
+
+ <para>
+ ÉANGXgÌANVͳêAX|XÅ éHTMLª`æ³êÜ·B
+ ±êÉ¢ÄÍ·®ÉྵܷB
+ </para>
+
+ <para>
+ ÅãÉNGXgÌÆHTML`檮¹µ½Æ«ÉAìÆPÊ(Unit of Work)ðI¹µÜ·B
+ àµâ`æÉâ誶µ½êAexceptionª°çêÄf[^x[XgUNVð[obNµÜ·B
+ ±êÅ <literal>session-per-request</literal> p^[ª®¹µÜ·B
+ SÄÌT[ubgÉgUNV«EÌR[hðãíèÉAT[ubgtB^ÉLq·é±ÆàÂ\Å·B
+ <emphasis>Open Session in View</emphasis> ÆÄÎêé±Ìp^[É¢ÄÍA
+ HibernateÌWebTCgâWikiðQƵľ³¢B
+ T[ubgÅÍÈJSPÅHTML`æðµæ¤Æ·éÆA·®É±Ìp^[É¢ÄÌîñªKvÉÈéŵå¤B
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-webapp-processing" revision="1">
+ <title>Æ`æ</title>
+
+ <para>
+ ÅÍANGXgÌÆy[WÌ`æðÀµÜ·B
+ </para>
+
+<programlisting><![CDATA[// Write HTML header
+PrintWriter out = response.getWriter();
+out.println("<html><head><title>Event Manager</title></head><body>");
+
+// Handle actions
+if ( "store".equals(request.getParameter("action")) ) {
+
+ String eventTitle = request.getParameter("eventTitle");
+ String eventDate = request.getParameter("eventDate");
+
+ if ( "".equals(eventTitle) || "".equals(eventDate) ) {
+ out.println("<b><i>Please enter event title and date.</i></b>");
+ } else {
+ createAndStoreEvent(eventTitle, dateFormatter.parse(eventDate));
+ out.println("<b><i>Added event.</i></b>");
+ }
+}
+
+// Print page
+printEventForm(out);
+listEvents(out, dateFormatter);
+
+// Write HTML footer
+out.println("</body></html>");
+out.flush();
+out.close();]]></programlisting>
+
+ <para>
+ JavaÆHTMLª¬Ý·éR[fBOX^CÍAæè¡GÈAvP[VÉÍKµÄ¢È¢Åµå¤
+ i±Ì`
[gAÅÍAî{IÈHibernateÌRZvgð¦µÄ¢é¾¯Å 鱯ðo¦Ä¨¢Ä¾³¢jB
+ ±ÌR[hÍHTMLÌwb_[Ætb^[ÌLqÅ·B
+ ±Ìy[WÉÍACxgðüÍ·éHTMLtH[ÆAf[^x[XÉ éSÄÌCxgÌXgª\¦³êÜ·B
+ ÅÌ\bhͲPÈHTMLoÍÅ·B
+ </para>
+
+ <programlisting><![CDATA[private void printEventForm(PrintWriter out) {
+ out.println("<h2>Add new event:</h2>");
+ out.println("<form>");
+ out.println("Title: <input name='eventTitle' length='50'/><br/>");
+ out.println("Date (e.g. 24.12.2009): <input name='eventDate' length='10'/><br/>");
+ out.println("<input type='submit' name='action' value='store'/>");
+ out.println("</form>");
+}]]></programlisting>
+
+ <para>
+ <literal>listEvents()</literal> \bhÍA»ÝÌXbhÉÑÂ
+ HibernateÌ <literal>Session</literal> ðgpµÄANGðÀsµÜ·B
+ </para>
+
+ <programlisting><![CDATA[private void listEvents(PrintWriter out, SimpleDateFormat dateFormatter) {
+
+ List result = HibernateUtil.getSessionFactory()
+ .getCurrentSession().createCriteria(Event.class).list();
+ if (result.size() > 0) {
+ out.println("<h2>Events in database:</h2>");
+ out.println("<table border='1'>");
+ out.println("<tr>");
+ out.println("<th>Event title</th>");
+ out.println("<th>Event date</th>");
+ out.println("</tr>");
+ for (Iterator it = result.iterator(); it.hasNext();) {
+ Event event = (Event) it.next();
+ out.println("<tr>");
+ out.println("<td>" + event.getTitle() + "</td>");
+ out.println("<td>" + dateFormatter.format(event.getDate()) + "</td>");
+ out.println("</tr>");
+ }
+ out.println("</table>");
+ }
+}]]></programlisting>
+
+ <para>
+ ÅãÉA <literal>store</literal> ANVª <literal>createAndStoreEvent()</literal> \bhð
+ ÄÑoµÜ·B±Ì\bhÅà»ÝÌXbhÌ <literal>Session</literal> ðpµÜ·B
+ </para>
+
+ <programlisting><![CDATA[protected void createAndStoreEvent(String title, Date theDate) {
+ Event theEvent = new Event();
+ theEvent.setTitle(title);
+ theEvent.setDate(theDate);
+
+ HibernateUtil.getSessionFactory()
+ .getCurrentSession().save(theEvent);
+}]]></programlisting>
+
+ <para>
+ ±êÅT[ubgÌ®¬Å·B
+ T[ubgÖÌNGXgÍAêÂÌ <literal>Session</literal> Æ
+ <literal>Transaction</literal> ųêéŵå¤B
+ ÅÌX^hA[ÌAvP[VÌæ¤ÉA
+ HibernateÍ©®IɱêçÌIuWFNgðÀs·éXbhÉÑt¯é±ÆªÅ«Ü·B
+ ±êÉæèAJÒª©RÉR[hðC[ª¯Å«A
+ D«Èû@Å <literal>SessionFactory</literal> ÖÌANZXªÅ«éæ¤ÉÈèÜ·B
+ ÊíAJÒÍæèôû³ê½fUCðgpµÄAf[^ANZXÌR[hð
+ f[^ANZXIuWFNgÉÚ®·éŵå¤iDAOp^[jB
+ æè½ÌáÍAHibernateÌWikiðQƵľ³¢B
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-webapp-deploy">
+ <title>fvCÆeXg</title>
+
+ <para>
+ ±ÌAvP[VÌfvC̽ßÉAWebA[JCuiWARjð쬵ľ³¢B
+ ȺÌAnt^[Qbgð <literal>build.xml</literal> ÉÁ¦Ä¾³¢B
+ </para>
+
+<programlisting><![CDATA[<target name="war" depends="compile">
+ <war destfile="hibernate-tutorial.war" webxml="web.xml">
+ <lib dir="${librarydir}">
+ <exclude name="jsdk*.jar"/>
+ </lib>
+
+ <classes dir="${targetdir}"/>
+ </war>
+</target>]]></programlisting>
+
+ <para>
+ ±Ì^[QbgÍ <literal>hibernate-tutorial.war</literal> Æ¢¤t@Cð
+ vWFNgfBNgÉ쬵ܷB
+ ±Ìt@CÍ·×ÄÌCuÆ <literal>web.xml</literal> LqqðÜñŨèA
+ vWFNgÌx[XfBNgÉu©ê鱯ðúÒ³êÜ·B
+ </para>
+
+ <programlisting><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="2.4"
+ xmlns="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+
+ <servlet>
+ <servlet-name>Event Manager</servlet-name>
+ <servlet-class>events.EventManagerServlet</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Event Manager</servlet-name>
+ <url-pattern>/eventmanager</url-pattern>
+ </servlet-mapping>
+</web-app>]]></programlisting>
+
+ <para>
+ WebAvP[VÌRpCÆfvCÌOÉA <literal>jsdk.jar</literal> Æ¢¤
+ ÇÁÌCuªKvȱÆÉӵľ³¢B
+ ±êÍJavaT[ubgÌJLbgÅ·B
+ àµÜ¾±ÌCuðÁĢȢÈçASunÌEFuTCgÅüèµÄA
+ CufBNgÉRs[µÄ¾³¢B
+ µ©µA±êÍRpCÉÌÝgp³êAWARpbP[W©çÍO³êÜ·B
+ </para>
+
+ <para>
+ rhÆfvC̽ßÉAvWFNgfBNgÅ <literal>ant war</literal> ðÄÑoµA
+ <literal>hibernate-tutorial.war</literal> t@CðTomcatÌ <literal>webapp</literal>
+ fBNgÉRs[µÄ¾³¢B
+ ܾTomcatðCXg[µÄ¢È¯êÎA_E[hµÄAȺÌCXg[KChÉ]Áľ³¢B
+ µ©µA±ÌAvP[VÌfvC·é½ßÉATomcatÌÝèðÏX·éKvÍ èܹñB
+ </para>
+
+ <para>
+ êxfvCµÄTomcatðN®·êÎA <literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal> Å
+ AvP[VÖÌANZXªÂ\Å·B
+ ÅÌNGXgªì¬µ½T[ubgÉnÁ½Æ«ÉATomcatÌOÅ
+ HibernateÌú»ðmFµÄ¾³¢
+ i <literal>HibernateUtil</literal> àÌÃIú»ubNªÄÎêĢܷjB
+ ܽAexceptionª¶µ½ÈçÚ×ðmFµÄ¾³¢B
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="tutorial-summary" revision="1">
+ <title>vñ</title>
+
+ <para>
+ ±Ì`
[gAÅÍAÈPÈX^hA[ÌHibernateAvP[VÆ
+ ¬KÍÌWebAvP[Vð½ßÌî{ðÐîµÜµ½B
+ </para>
+
+ <para>
+ à¤HibernateÉ©Mª êÎAt@XhL
gÌÚÉÚðʵÄA
+ Ê»¤¾Æv¤gsbNðTµÄ¾³¢B
+ ÅàpÉɿ⪠éÌÍAgUNVi<xref linkend="transactions"/>jA
+ tFb`ÌptH[}Xi<xref linkend="performance"/>jA
+ APIÌg¢ûi<xref linkend="objectstate"/>jÆNG
+ i<xref linkend="objectstate-querying"/>jÅ·B
+ </para>
+
+ <para>
+ ³çÉiÁÊÈj`
[gAªKvÈçAHibernateEFuTCgðYê¸É`FbNµÄ¾³¢B
+ </para>
+
+ </sect1>
+
+</chapter>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/xml.xml (from rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/xml.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/xml.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/xml.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,299 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="xml">
+ <title>XML}bsO</title>
+
+ <para><emphasis>XML}bsOÍHibernate3.0ÅͱIÈ@\Å èAñíÉ®IÉJÅ·B</emphasis></para>
+
+ <sect1 id="xml-intro" revision="1">
+ <title>XMLf[^ÅÌìÆ</title>
+
+ <para>
+ HibernateÅÍi±«ÌPOJOðgÁÄìÆ·éÌÆÙÚ¯¶æ¤ÈâèûÅA
+ i±«ÌXMLf[^ðgÁÄìÆÅ«Ü·B
+ </para>
+
+ <para>
+ HibernateÍXMLc[ðì·é½ßÌAPIƵÄdom4jðT|[gµÄ¢Ü·B
+ f[^x[X©çdom4jÌc[ð³·éNGð±ÆªÅ«A
+ c[ÉεÄsÁ½C³Í©®IÉf[^x[XƯú³êÜ·B
+
+ ܽXMLhL
gðæ¾·é±ÆªÅ«Adom4jðgÁÄhL
gðp[XµA
+ HibernateÌCÓÌî{ìðgÁÄf[^x[X֫ޱƪūܷBF
+ ÂÜèA<literal>persist(), saveOrUpdate(), merge(), delete(), replicate()</literal>
+ ìÅ·(}[WÍܾT|[gµÄ¢Ü¹ñ)B
+
+ </para>
+
+ <para>
+ f[^ÌC|[g/GNX|[gA
+ JMSÉæéGeBeBf[^ÌO»âSOAPAXSLTx[XÌ|[gÈÇA
+ ±Ì@\ÉͽÌprª èÜ·B
+ </para>
+
+ <para>
+ PêÌ}bsOÍANXÌvpeBÆXMLhL
gÌm[hð
+ ¯Éf[^x[XÖ}bsO·é½ßÉg¤±ÆªÅ«Ü·B
+ ܽ}bsO·éNXªÈ¯êÎA
+ XML¾¯ð}bsO·é½ßÉg¤±ÆªÅ«Ü·B
+
+ </para>
+
+ <sect2 id="xml-intro-mapping">
+ <title>XMLÆNXÌ}bsOð¯Éwè·é</title>
+
+ <para>
+ ±êÍPOJOÆXMLð¯É}bsO·éáÅ·BF
+ </para>
+
+ <programlisting><![CDATA[<class name="Account"
+ table="ACCOUNTS"
+ node="account">
+
+ <id name="accountId"
+ column="ACCOUNT_ID"
+ node="@id"/>
+
+ <many-to-one name="customer"
+ column="CUSTOMER_ID"
+ node="customer/@id"
+ embed-xml="false"/>
+
+ <property name="balance"
+ column="BALANCE"
+ node="balance"/>
+
+ ...
+
+</class>]]></programlisting>
+ </sect2>
+
+ <sect2 id="xml-onlyxml">
+ <title>XML}bsO¾¯ðwè·é</title>
+
+ <para>
+ ±êÍPOJONXªÈ¢}bsOÌáÅ·BF
+ </para>
+
+ <programlisting><![CDATA[<class entity-name="Account"
+ table="ACCOUNTS"
+ node="account">
+
+ <id name="id"
+ column="ACCOUNT_ID"
+ node="@id"
+ type="string"/>
+
+ <many-to-one name="customerId"
+ column="CUSTOMER_ID"
+ node="customer/@id"
+ embed-xml="false"
+ entity-name="Customer"/>
+
+ <property name="balance"
+ column="BALANCE"
+ node="balance"
+ type="big_decimal"/>
+
+ ...
+
+</class>]]></programlisting>
+
+ <para>
+ ±Ì}bsOÉæèAdom4jc[©A
+ vpeB¼/lÌgÌOtijavaÌ <literal>Map</literal>jƵÄ
+ f[^ÉANZXūܷB
+
+ vpeB̼OÍAHQLNG[àÅQÆÅ«éÈ_\¢Å·B
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="xml-mapping" revision="1">
+ <title>XML}bsOÌ^f[^</title>
+
+ <para>
+ ½ÌHibernateÌ}bsOvfÍ@<literal>node</literal>@®«ªgpūܷB
+ ±êÉæèXML®«Ì¼OâvpeBâGeBeBf[^ðÛ·évfðwèūܷB
+ <literal>node</literal>@®«ÌtH[}bgÍȺÌÌ1ÂÅȯêÎÈèܹñBF
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>"element-name"</literal> - wèµ½XMLvfÖ}bsOµÜ·
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>"@attribute-name"</literal> - wèµ½XML®«Ö}bsOµÜ·
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>"."</literal> -@evfÖ}bsOµÜ·
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>"element-name/@attribute-name"</literal> -
+ wèµ½GgÌwèµ½®«Ö}bsOµÜ·
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ RNVÆPêÌlÌÖAÉεÄA
+ ¨Ü¯Ì <literal>embed-xml</literal> ®«ª èÜ·B
+ ftHgÌ <literal>embed-xml="true"</literal> ÆÝèµ½êA
+ ÖA·éGeBeB(l^ÌRNV)ÌXMLc[ÍA
+ ¼ÚÖAðL·éGeBeBÌXMLc[àÉßÜêÜ·B
+ ½ÎÉA<literal>embed-xml="false"</literal> ÆÝèµ½êA
+ QƳêé¯ÊqÌl¾¯ª½dxP¤ÌÖAÉηéXMLÉ»êA
+ PÉRNVÍÜÁ½»êÈÈèÜ·B
+ </para>
+
+ <para>
+ ÜèɽÌÖAÉεÄ
+ <literal>embed-xml="true"</literal> Ƶ½ÜÜÉ·éÌÍӷ׫ŷB
+ XMLÍzÂð¤Üµ¦Ü¹ñB
+ </para>
+
+ <programlisting><![CDATA[<class name="Customer"
+ table="CUSTOMER"
+ node="customer">
+
+ <id name="id"
+ column="CUST_ID"
+ node="@id"/>
+
+ <map name="accounts"
+ node="."
+ embed-xml="true">
+ <key column="CUSTOMER_ID"
+ not-null="true"/>
+ <map-key column="SHORT_DESC"
+ node="@short-desc"
+ type="string"/>
+ <one-to-many entity-name="Account"
+ embed-xml="false"
+ node="account"/>
+ </map>
+
+ <component name="name"
+ node="name">
+ <property name="firstName"
+ node="first-name"/>
+ <property name="initial"
+ node="initial"/>
+ <property name="lastName"
+ node="last-name"/>
+ </component>
+
+ ...
+
+</class>]]></programlisting>
+
+ <para>
+ ±ÌáÅÍAÀÛÌaccountÌf[^ÅÍÈA
+ accountÌidÌRNVðßÞ±ÆÉµÜµ½B
+ ±«ÌHQLNGÅ·F
+ </para>
+
+ <programlisting><![CDATA[from Customer c left join fetch c.accounts where c.lastName like :lastName]]></programlisting>
+
+ <para>
+ ±Ìæ¤Èf[^ZbgðԷŵå¤
+ </para>
+
+ <programlisting><![CDATA[<customer id="123456789">
+ <account short-desc="Savings">987632567</account>
+ <account short-desc="Credit Card">985612323</account>
+ <name>
+ <first-name>Gavin</first-name>
+ <initial>A</initial>
+ <last-name>King</last-name>
+ </name>
+ ...
+</customer>]]></programlisting>
+
+ <para>
+ <literal><one-to-many></literal> }bsOÅ
+ <literal>embed-xml="true"</literal> ÆÝèµ½êA
+ f[^Í±Ìæ¤ÉÈéŵå¤B
+ </para>
+
+ <programlisting><![CDATA[<customer id="123456789">
+ <account id="987632567" short-desc="Savings">
+ <customer id="123456789"/>
+ <balance>100.29</balance>
+ </account>
+ <account id="985612323" short-desc="Credit Card">
+ <customer id="123456789"/>
+ <balance>-2370.34</balance>
+ </account>
+ <name>
+ <first-name>Gavin</first-name>
+ <initial>A</initial>
+ <last-name>King</last-name>
+ </name>
+ ...
+</customer>]]></programlisting>
+
+ </sect1>
+
+
+ <sect1 id="xml-manipulation" revision="1">
+ <title>XMLf[^ðµ¤</title>
+
+ <para>
+ XMLhL
gðAAvP[VàÅÄÇÝÝâXVðµÄÝܵå¤B
+ ȺÅÍdom4jÌZbVðæ¾·é±ÆÅs¢Ü·BF
+ </para>
+
+ <programlisting><![CDATA[Document doc = ....;
+
+Session session = factory.openSession();
+Session dom4jSession = session.getSession(EntityMode.DOM4J);
+Transaction tx = session.beginTransaction();
+
+List results = dom4jSession
+ .createQuery("from Customer c left join fetch c.accounts where c.lastName like :lastName")
+ .list();
+for ( int i=0; i<results.size(); i++ ) {
+ //add the customer data to the XML document
+ Element customer = (Element) results.get(i);
+ doc.getRootElement().add(customer);
+}
+
+tx.commit();
+session.close();]]></programlisting>
+
+ <programlisting><![CDATA[Session session = factory.openSession();
+Session dom4jSession = session.getSession(EntityMode.DOM4J);
+Transaction tx = session.beginTransaction();
+
+Element cust = (Element) dom4jSession.get("Customer", customerId);
+for ( int i=0; i<results.size(); i++ ) {
+ Element customer = (Element) results.get(i);
+ //change the customer name in the XML and database
+ Element name = customer.element("name");
+ name.element("first-name").setText(firstName);
+ name.element("initial").setText(initial);
+ name.element("last-name").setText(lastName);
+}
+
+tx.commit();
+session.close();]]></programlisting>
+
+ <para>
+ XMLx[XÌf[^ÌC|[g/GNX|[gðÀ·é½ßÉA
+ HibernateÌ <literal>replicate()</literal> ìð±Ì@\ðѯéÌÍ
+ ÉßÄLøÅ·B
+ </para>
+
+ </sect1>
+
+</chapter>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/AuthorWork.png (from rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/AuthorWork.png)
===================================================================
(Binary files differ)
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/AuthorWork.zargo (from rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/AuthorWork.zargo)
===================================================================
(Binary files differ)
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/CustomerOrderProduct.png (from rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/CustomerOrderProduct.png)
===================================================================
(Binary files differ)
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/CustomerOrderProduct.zargo (from rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/CustomerOrderProduct.zargo)
===================================================================
(Binary files differ)
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/EmployerEmployee.png (from rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/EmployerEmployee.png)
===================================================================
(Binary files differ)
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/EmployerEmployee.zargo (from rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/EmployerEmployee.zargo)
===================================================================
(Binary files differ)
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/full_cream.png (from rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/full_cream.png)
===================================================================
(Binary files differ)
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/full_cream.svg (from rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/full_cream.svg)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/images/full_cream.svg (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/images/full_cream.svg 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,429 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
+[
+ <!ATTLIST svg
+ xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
+]>
+<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ width="354.331"
+ height="336.614"
+ id="svg1">
+ <defs
+ id="defs3">
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop128" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop129" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient130"
+ xlink:href="#linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad" />
+ <radialGradient
+ cx="0.5"
+ cy="0.5"
+ fx="0.5"
+ fy="0.5"
+ r="0.5"
+ id="radialGradient131"
+ xlink:href="#linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad" />
+ </defs>
+ <g
+ transform="matrix(0.823795,0,0,0.823795,0.120302,5.25349)"
+ style="font-size:12;"
+ id="g659">
+ <rect
+ width="212.257"
+ height="57.2441"
+ x="17.9576"
+ y="100.132"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect137" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ transform="matrix(0.743454,0,0,0.482981,6.46949,52.2178)"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect132" />
+ </g>
+ <rect
+ width="325.86"
+ height="63.6537"
+ x="17.4083"
+ y="15.194"
+ style="font-size:12;fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect136" />
+ <rect
+ width="325.86"
+ height="63.6537"
+ x="13.6713"
+ y="12.4966"
+ style="font-size:12;fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect126" />
+ <g
+ transform="matrix(1.14345,0,0,0.729078,-1.67818,105.325)"
+ style="font-size:12;"
+ id="g164">
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="16.6979"
+ y="222.966"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect138" />
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="14.7335"
+ y="221.002"
+ transform="translate(-1.30962,-1.30992)"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect133" />
+ </g>
+ <text
+ x="170.824753"
+ y="58.402939"
+ transform="scale(0.823795,0.823795)"
+ style="font-size:18;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text183">
+ <tspan
+ x="170.824997"
+ y="58.402901"
+ id="tspan360">
+Application</tspan>
+ </text>
+ <text
+ x="178.076340"
+ y="364.281433"
+ transform="scale(0.823795,0.823795)"
+ style="font-size:18;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text197">
+ <tspan
+ x="178.076004"
+ y="364.281006"
+ id="tspan421">
+Database</tspan>
+ </text>
+ <text
+ x="68.605331"
+ y="138.524582"
+ transform="scale(0.823795,0.823795)"
+ style="font-size:16;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text216">
+ <tspan
+ x="68.605301"
+ y="138.524994"
+ id="tspan384">
+SessionFactory</tspan>
+ </text>
+ <rect
+ width="67.0014"
+ height="101.35"
+ x="196.927"
+ y="89.2389"
+ style="font-size:12;fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect387" />
+ <rect
+ width="67.0014"
+ height="101.35"
+ x="194.633"
+ y="86.4389"
+ style="font-size:12;fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect388" />
+ <text
+ x="249.108841"
+ y="173.885559"
+ transform="scale(0.823795,0.823795)"
+ style="font-size:16;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text389">
+ <tspan
+ x="249.108994"
+ y="173.886002"
+ id="tspan392">
+Session</tspan>
+ </text>
+ <rect
+ width="73.0355"
+ height="101.35"
+ x="270.995"
+ y="90.0018"
+ style="font-size:12;fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect395" />
+ <rect
+ width="73.0355"
+ height="101.35"
+ x="267.869"
+ y="87.2018"
+ style="font-size:12;fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect396" />
+ <text
+ x="328.593658"
+ y="174.715622"
+ transform="scale(0.823795,0.823795)"
+ style="font-size:16;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text397">
+ <tspan
+ x="328.593994"
+ y="174.716003"
+ id="tspan563">
+Transaction</tspan>
+ </text>
+ <g
+ transform="matrix(0.29544,0,0,0.397877,9.70533,103.96)"
+ style="font-size:12;"
+ id="g565">
+ <rect
+ width="285.502"
+ height="118.523"
+ x="16.6979"
+ y="99.2053"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect566" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect567" />
+ </g>
+ <text
+ x="25.592752"
+ y="204.497803"
+ transform="scale(0.823795,0.823795)"
+ style="font-size:10;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text568">
+ <tspan
+ x="25.592800"
+ y="204.498001"
+ id="tspan662">
+TransactionFactory</tspan>
+ </text>
+ <g
+ transform="matrix(0.298082,0,0,0.397877,99.6898,103.96)"
+ style="font-size:12;"
+ id="g573">
+ <rect
+ width="285.502"
+ height="118.523"
+ x="16.6979"
+ y="99.2053"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect574" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect575" />
+ </g>
+ <text
+ x="134.030670"
+ y="205.532791"
+ transform="scale(0.823795,0.823795)"
+ style="font-size:10;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text576">
+ <tspan
+ x="134.031006"
+ y="205.533005"
+ id="tspan664">
+ConnectionProvider</tspan>
+ </text>
+ <g
+ transform="matrix(1.14345,0,0,0.729078,-1.67818,38.9539)"
+ style="font-size:12;"
+ id="g587">
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="16.6979"
+ y="222.966"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect588" />
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="14.7335"
+ y="221.002"
+ transform="translate(-1.30962,-1.30992)"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect589" />
+ </g>
+ <rect
+ width="90.951"
+ height="44.4829"
+ x="25.6196"
+ y="206.028"
+ style="font-size:12;fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect594" />
+ <rect
+ width="90.951"
+ height="44.4829"
+ x="24.4229"
+ y="204.135"
+ style="font-size:12;fill:#b3b3b3;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect595" />
+ <text
+ x="85.575645"
+ y="282.300354"
+ transform="scale(0.823795,0.823795)"
+ style="font-size:18;font-weight:normal;stroke-width:1pt;font-family:Helvetica;text-anchor:middle;"
+ id="text596">
+ <tspan
+ x="85.575600"
+ y="282.299988"
+ id="tspan607">
+JNDI</tspan>
+ </text>
+ <rect
+ width="90.951"
+ height="44.4829"
+ x="236.937"
+ y="206.791"
+ style="font-size:12;fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect610" />
+ <rect
+ width="90.951"
+ height="44.4829"
+ x="235.741"
+ y="204.898"
+ style="font-size:12;fill:#b3b3b3;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect611" />
+ <text
+ x="342.093201"
+ y="283.226410"
+ transform="scale(0.823795,0.823795)"
+ style="font-size:18;font-weight:normal;stroke-width:1pt;font-family:Helvetica;text-anchor:middle;"
+ id="text612">
+ <tspan
+ x="342.092987"
+ y="283.226013"
+ id="tspan621">
+JTA</tspan>
+ </text>
+ <rect
+ width="90.951"
+ height="44.4829"
+ x="130.134"
+ y="206.791"
+ style="font-size:12;fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect616" />
+ <rect
+ width="90.951"
+ height="44.4829"
+ x="128.937"
+ y="204.898"
+ style="font-size:12;fill:#b3b3b3;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect617" />
+ <text
+ x="212.445343"
+ y="283.226410"
+ transform="scale(0.823795,0.823795)"
+ style="font-size:18;font-weight:normal;stroke-width:1pt;font-family:Helvetica;text-anchor:middle;"
+ id="text618">
+ <tspan
+ x="212.445007"
+ y="283.226013"
+ id="tspan623">
+JDBC</tspan>
+ </text>
+ <g
+ transform="matrix(0.823795,0,0,0.823795,0.120302,6.19341)"
+ style="font-size:12;"
+ id="g637">
+ <g
+ transform="matrix(0.499515,0,0,0.415467,-0.237339,5.61339)"
+ id="g167">
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="61.8805"
+ y="68.4288"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect134" />
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="59.2613"
+ y="65.8095"
+ style="fill:#e0e0e0;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect135" />
+ </g>
+ <text
+ x="33.749969"
+ y="50.589706"
+ style="font-size:11;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text188">
+ <tspan
+ x="33.750000"
+ y="50.589699"
+ id="tspan635">
+Transient Objects</tspan>
+ </text>
+ </g>
+ <g
+ transform="matrix(0.823795,0,0,0.823795,0.120302,5.25349)"
+ style="font-size:12;"
+ id="g644">
+ <g
+ transform="matrix(0.297486,0,0,0.516482,230.251,36.9178)"
+ id="g364">
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="61.8805"
+ y="68.4288"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect365" />
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="59.2613"
+ y="65.8095"
+ style="fill:#e0e0e0;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect366" />
+ </g>
+ <text
+ x="277.123230"
+ y="85.155571"
+ style="font-size:11;font-weight:normal;stroke-width:1pt;font-family:Helvetica;text-anchor:middle;"
+ id="text367">
+ <tspan
+ x="277.122986"
+ y="85.155602"
+ id="tspan631">
+Persistent</tspan>
+ <tspan
+ x="277.122986"
+ y="96.155602"
+ id="tspan633">
+Objects</tspan>
+ </text>
+ </g>
+</svg>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/hibernate_logo_a.png (from rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/hibernate_logo_a.png)
===================================================================
(Binary files differ)
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/lite.png (from rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/lite.png)
===================================================================
(Binary files differ)
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/lite.svg (from rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/lite.svg)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/images/lite.svg (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/images/lite.svg 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,334 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
+[
+ <!ATTLIST svg
+ xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
+]>
+<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ width="318.898"
+ height="248.031"
+ id="svg1">
+ <defs
+ id="defs3">
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop128" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop129" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient130"
+ xlink:href="#linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad" />
+ <radialGradient
+ cx="0.5"
+ cy="0.5"
+ fx="0.5"
+ fy="0.5"
+ r="0.5"
+ id="radialGradient131"
+ xlink:href="#linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad" />
+ </defs>
+ <rect
+ width="291.837"
+ height="57.0074"
+ x="17.3169"
+ y="18.646"
+ style="font-size:12;fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect136" />
+ <rect
+ width="291.837"
+ height="57.0074"
+ x="13.9703"
+ y="16.2302"
+ style="font-size:12;fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect126" />
+ <g
+ transform="matrix(0.326107,0,0,0.765831,9.59261,8.98517)"
+ style="font-size:12;"
+ id="g161">
+ <rect
+ width="285.502"
+ height="118.523"
+ x="16.6979"
+ y="99.2053"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect137" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect132" />
+ </g>
+ <g
+ transform="matrix(1.02406,0,0,0.652953,0.223384,39.9254)"
+ style="font-size:12;"
+ id="g164">
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="16.6979"
+ y="222.966"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect138" />
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="14.7335"
+ y="221.002"
+ transform="translate(-1.30962,-1.30992)"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect133" />
+ </g>
+ <g
+ transform="matrix(0.449834,0,0,0.338463,-3.15909,9.73319)"
+ style="font-size:12;"
+ id="g167">
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="61.8805"
+ y="68.4288"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect134" />
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="59.2613"
+ y="65.8095"
+ style="fill:#e0e0e0;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect135" />
+ </g>
+ <text
+ x="302.277679"
+ y="65.943230"
+ transform="scale(0.73778,0.73778)"
+ style="font-size:18;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text183">
+ <tspan
+ x="302.277954"
+ y="65.943184"
+ id="tspan360">
+Application</tspan>
+ </text>
+ <text
+ x="36.235924"
+ y="63.796055"
+ transform="scale(0.73778,0.73778)"
+ style="font-size:14;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text188">
+ <tspan
+ x="36.235950"
+ y="63.796051"
+ id="tspan427">
+Transient Objects</tspan>
+ </text>
+ <text
+ x="180.416245"
+ y="290.543701"
+ transform="scale(0.73778,0.73778)"
+ style="font-size:18;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text197">
+ <tspan
+ x="180.415939"
+ y="290.543549"
+ id="tspan421">
+Database</tspan>
+ </text>
+ <text
+ x="25.037701"
+ y="179.154755"
+ transform="scale(0.73778,0.73778)"
+ style="font-size:16;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text216">
+ <tspan
+ x="25.037655"
+ y="179.154648"
+ id="tspan384">
+SessionFactory</tspan>
+ </text>
+ <g
+ transform="matrix(0.252763,0,0,0.765831,109.104,8.98517)"
+ style="font-size:12;"
+ id="g386">
+ <rect
+ width="285.502"
+ height="118.523"
+ x="16.6979"
+ y="99.2053"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect387" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect388" />
+ </g>
+ <g
+ transform="matrix(0.297394,0,0,0.572692,101.502,21.6359)"
+ style="font-size:12;"
+ id="g364">
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="61.8805"
+ y="68.4288"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect365" />
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="59.2613"
+ y="65.8095"
+ style="fill:#e0e0e0;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect366" />
+ </g>
+ <text
+ x="202.746506"
+ y="102.992203"
+ transform="scale(0.73778,0.73778)"
+ style="font-size:14;font-weight:normal;stroke-width:1pt;font-family:Helvetica;text-anchor:middle;"
+ id="text367">
+ <tspan
+ x="202.746948"
+ y="102.992249"
+ id="tspan423">
+Persistent</tspan>
+ <tspan
+ x="202.746948"
+ y="116.992355"
+ id="tspan425">
+Objects</tspan>
+ </text>
+ <text
+ x="174.458496"
+ y="180.080795"
+ transform="scale(0.73778,0.73778)"
+ style="font-size:16;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text389">
+ <tspan
+ x="174.458618"
+ y="180.080338"
+ id="tspan392">
+Session</tspan>
+ </text>
+ <g
+ transform="matrix(0.127369,0,0,0.765831,188.675,8.98517)"
+ style="font-size:12;"
+ id="g394">
+ <rect
+ width="285.502"
+ height="118.523"
+ x="16.6979"
+ y="99.2053"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect395" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect396" />
+ </g>
+ <text
+ x="260.413269"
+ y="179.154739"
+ transform="scale(0.73778,0.73778)"
+ style="font-size:16;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text397">
+ <tspan
+ x="260.412964"
+ y="179.154343"
+ id="tspan400">
+JDBC</tspan>
+ </text>
+ <g
+ transform="matrix(0.127369,0,0,0.765831,229.156,8.98517)"
+ style="font-size:12;"
+ id="g405">
+ <rect
+ width="285.502"
+ height="118.523"
+ x="16.6979"
+ y="99.2053"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect406" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect407" />
+ </g>
+ <text
+ x="320.606903"
+ y="179.154739"
+ transform="scale(0.73778,0.73778)"
+ style="font-size:16;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text408">
+ <tspan
+ x="320.606964"
+ y="179.154343"
+ id="tspan417">
+JNDI</tspan>
+ </text>
+ <g
+ transform="matrix(0.127369,0,0,0.765831,269.281,8.98517)"
+ style="font-size:12;"
+ id="g411">
+ <rect
+ width="285.502"
+ height="118.523"
+ x="16.6979"
+ y="99.2053"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect412" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect413" />
+ </g>
+ <text
+ x="377.096313"
+ y="179.154739"
+ transform="scale(0.73778,0.73778)"
+ style="font-size:16;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text414">
+ <tspan
+ x="377.096008"
+ y="179.154999"
+ id="tspan145">
+JTA</tspan>
+ </text>
+</svg>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/overview.png (from rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/overview.png)
===================================================================
(Binary files differ)
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/overview.svg (from rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/overview.svg)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/images/overview.svg (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/images/overview.svg 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,250 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
+[
+ <!ATTLIST svg
+ xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
+]>
+<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ width="248.031"
+ height="248.031"
+ id="svg1">
+ <defs
+ id="defs3">
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop128" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop129" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient130"
+ xlink:href="#linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad" />
+ <radialGradient
+ cx="0.5"
+ cy="0.5"
+ fx="0.5"
+ fy="0.5"
+ r="0.5"
+ id="radialGradient131"
+ xlink:href="#linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad" />
+ </defs>
+ <g
+ transform="matrix(0.771934,0,0,0.771934,4.36019,-3.02123)"
+ style="font-size:12;"
+ id="g158">
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="16.6979"
+ y="17.3527"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect136" />
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="14.7335"
+ y="15.3883"
+ transform="translate(-1.30962,-1.30992)"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect126" />
+ </g>
+ <g
+ transform="matrix(0.771934,0,0,0.771934,4.36019,3.04452)"
+ style="font-size:12;"
+ id="g161">
+ <rect
+ width="285.502"
+ height="118.523"
+ x="16.6979"
+ y="99.2053"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect137" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect132" />
+ </g>
+ <g
+ transform="matrix(0.771934,0,0,0.771934,4.36019,8.0993)"
+ style="font-size:12;"
+ id="g164">
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="16.6979"
+ y="222.966"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect138" />
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="14.7335"
+ y="221.002"
+ transform="translate(-1.30962,-1.30992)"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect133" />
+ </g>
+ <g
+ transform="matrix(0.771934,0,0,0.543505,2.59104,21.1103)"
+ style="font-size:12;"
+ id="g167">
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="61.8805"
+ y="68.4288"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect134" />
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="59.2613"
+ y="65.8095"
+ style="fill:#e0e0e0;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect135" />
+ </g>
+ <text
+ x="105.392174"
+ y="56.568123"
+ transform="scale(0.771934,0.771934)"
+ style="font-size:24;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text183">
+ <tspan
+ x="105.392273"
+ y="56.568146"
+ id="tspan186">
+Application</tspan>
+ </text>
+ <text
+ x="81.820183"
+ y="103.149330"
+ transform="scale(0.771934,0.771934)"
+ style="font-size:20;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text188">
+ <tspan
+ x="81.820213"
+ y="103.149727"
+ id="tspan206">
+Persistent Objects</tspan>
+ </text>
+ <text
+ x="111.548180"
+ y="278.927887"
+ transform="scale(0.771934,0.771934)"
+ style="font-size:24;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text197">
+ <tspan
+ x="111.547874"
+ y="278.927551"
+ id="tspan200">
+Database</tspan>
+ </text>
+ <text
+ x="94.436180"
+ y="153.805740"
+ transform="scale(0.771934,0.771934)"
+ style="font-size:24;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text216">
+ <tspan
+ x="94.436180"
+ y="153.805740"
+ id="tspan221">
+HIBERNATE</tspan>
+ </text>
+ <g
+ transform="matrix(0.771934,0,0,0.771934,2.59083,1.02261)"
+ style="font-size:12;"
+ id="g254">
+ <g
+ transform="translate(4.58374,2.61928)"
+ id="g176">
+ <g
+ transform="matrix(0.571429,0,0,0.67347,-10.6174,117.093)"
+ id="g170">
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="61.8805"
+ y="68.4288"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect171" />
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="59.2613"
+ y="65.8095"
+ style="fill:#e0e0e0;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect172" />
+ </g>
+ <g
+ transform="matrix(0.571429,0,0,0.67347,138.682,117.093)"
+ id="g173">
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="61.8805"
+ y="68.4288"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect174" />
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="59.2613"
+ y="65.8095"
+ style="fill:#e0e0e0;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect175" />
+ </g>
+ </g>
+ <text
+ x="47.259438"
+ y="182.367538"
+ style="font-weight:bold;stroke-width:1pt;font-family:Courier;"
+ id="text191">
+ <tspan
+ x="47.259399"
+ y="182.367996"
+ id="tspan212">
+hibernate.</tspan>
+ <tspan
+ x="47.259399"
+ y="194.367996"
+ id="tspan214">
+properties</tspan>
+ </text>
+ <text
+ x="198.523010"
+ y="188.260941"
+ style="font-weight:normal;stroke-width:1pt;font-family:helvetica;"
+ id="text194">
+ <tspan
+ id="tspan195">
+XML Mapping</tspan>
+ </text>
+ </g>
+</svg>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/legal_notice.xml (from rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/legal_notice.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/legal_notice.xml (rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/legal_notice.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -0,0 +1,52 @@
+<?xml version='1.0'?>
+<!DOCTYPE legalnotice PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
+<!--
+ ~ Copyright (c) 2007, Red Hat Middleware, LLC. All rights reserved.
+ ~
+ ~ This copyrighted material is made available to anyone wishing to use, modify,
+ ~ copy, or redistribute it subject to the terms and conditions of the GNU
+ ~ Lesser General Public License, v. 2.1. This program is distributed in the
+ ~ hope that it will be useful, but WITHOUT A WARRANTY; without even the implied
+ ~ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ ~ Lesser General Public License for more details. You should have received a
+ ~ copy of the GNU Lesser General Public License, v.2.1 along with this
+ ~ distribution; if not, write to the Free Software Foundation, Inc.,
+ ~ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ ~
+ ~ Red Hat Author(s): Steve Ebersole
+ -->
+<legalnotice id="Legal_Notice">
+ <title>Legal Notice</title>
+ <para>
+ <address>
+ <street>1801 Varsity Drive</street>
+ <city>Raleigh</city>, <state>NC</state><postcode>27606-2072</postcode><country>USA</country>
+ <phone>Phone: +1 919 754 3700</phone>
+ <phone>Phone: 888 733 4281</phone>
+ <fax>Fax: +1 919 754 3701</fax>
+ <pob>PO Box 13588</pob><city>Research Triangle Park</city>, <state>NC</state><postcode>27709</postcode><country>USA</country>
+ </address>
+ </para>
+ <para>
+ Copyright <trademark class="copyright"></trademark> 2007 by Red Hat, Inc. This material may be distributed only subject to the terms and conditions set forth in the Open Publication License, V1.0 or later (the latest version is presently available at <ulink url="http://www.opencontent.org/openpub/">http://www.opencontent.org/openpub/</ulink>).
+ </para>
+ <para>
+ Distribution of substantively modified versions of this document is prohibited without the explicit permission of the copyright holder.
+ </para>
+ <para>
+ Distribution of the work or derivative of the work in any standard (paper) book form for commercial purposes is prohibited unless prior permission is obtained from the copyright holder.
+ </para>
+ <para>
+ Red Hat and the Red Hat "Shadow Man" logo are registered trademarks of Red Hat, Inc. in the United States and other countries.
+ </para>
+ <para>
+ All other trademarks referenced herein are the property of their respective owners.
+ </para>
+ <para>
+ The GPG fingerprint of the security at redhat.com key is:
+ </para>
+ <para>
+ CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E
+ </para>
+</legalnotice>
\ No newline at end of file
Deleted: core/trunk/documentation/manual/ja-JP/src/main/docbook/master.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/master.xml 2007-10-09 18:45:36 UTC (rev 14075)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/master.xml 2007-10-09 19:02:00 UTC (rev 14076)
@@ -1,231 +0,0 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3CR3//EN"
- "../support/docbook-dtd/docbookx.dtd"
-[
-<!ENTITY tutorial SYSTEM "modules/tutorial.xml">
-<!ENTITY architecture SYSTEM "modules/architecture.xml">
-<!ENTITY configuration SYSTEM "modules/configuration.xml">
-<!ENTITY persistent-classes SYSTEM "modules/persistent_classes.xml">
-<!ENTITY basic-mapping SYSTEM "modules/basic_mapping.xml">
-<!ENTITY collection-mapping SYSTEM "modules/collection_mapping.xml">
-<!ENTITY association-mapping SYSTEM "modules/association_mapping.xml">
-<!ENTITY component-mapping SYSTEM "modules/component_mapping.xml">
-<!ENTITY inheritance-mapping SYSTEM "modules/inheritance_mapping.xml">
-<!ENTITY session-api SYSTEM "modules/session_api.xml">
-<!ENTITY transactions SYSTEM "modules/transactions.xml">
-<!ENTITY events SYSTEM "modules/events.xml">
-<!ENTITY batch SYSTEM "modules/batch.xml">
-<!ENTITY query-hql SYSTEM "modules/query_hql.xml">
-<!ENTITY query-criteria SYSTEM "modules/query_criteria.xml">
-<!ENTITY query-sql SYSTEM "modules/query_sql.xml">
-<!ENTITY filters SYSTEM "modules/filters.xml">
-<!ENTITY xml SYSTEM "modules/xml.xml">
-<!ENTITY performance SYSTEM "modules/performance.xml">
-<!ENTITY toolset-guide SYSTEM "modules/toolset_guide.xml">
-<!ENTITY example-parentchild SYSTEM "modules/example_parentchild.xml">
-<!ENTITY example-weblog SYSTEM "modules/example_weblog.xml">
-<!ENTITY example-mappings SYSTEM "modules/example_mappings.xml">
-<!ENTITY best-practices SYSTEM "modules/best_practices.xml">
-]>
-
-<book lang="ja">
-
- <bookinfo>
- <title>HIBERNATE - Relational Persistence for Idiomatic Java</title>
- <subtitle>Hibernate Reference Documentation</subtitle>
- <releaseinfo>3.2 cr3</releaseinfo>
- </bookinfo>
-
- <toc/>
-
- <preface id="preface" revision="2">
- <title>O«</title>
-
- <para>
- ¡úÌéÆÂ«É¨¢ÄAIuWFNgwü\tgEFAÆ[Vif[^x[XÉÖíéìÆÍ
- ÏGÅcåÈÔðKvƵܷB
- HibernateÍJava«ÌIuWFNg/[Vi}bsOc[Å·B
- IuWFNg/[Vi}bsOiORMjÆÍA
- IuWFNgf©çSQLx[XXL[}Ì[Vif[^fÖÆA
- f[^\»ð}bsO·éiÎt¯éjZp̱ÆÅ·B
- </para>
-
- <para>
- HibernateÍJavaNX©çf[^x[Xe[uÖi»µÄJavaf[^^©çSQLf[^^Öj
- Ì}bsOð·é¾¯ÅÍÈAf[^ÌNGƳÌdgÝàñµÜ·B
- ±Ì¨©°ÅSQLÆJDBCðgÁ½èìÆÅÌf[^Éïâ³êÄ¢½JÔðåÉí¸Å«Ü·B
- </para>
-
- <para>
- HibernateÌÅIÚWÍAf[^Ìi±»ÉÖíéêÊIÈvO~OìÆÌ95©çJÒððú·é±ÆÅ·B
- HibernateÍrWlXWbNÌÀÉXgAhvV[Wðg¤
- f[^SAvP[VÉεÄÌxXg\
[VÅ éɯÜèܹñB
- IuWFNgwühCfÆJavax[XÌÔwÅÌrWlXWbNÉεÄÅàðɧ¿Ü·B
- µ©µHibernateÍx_ÅLÌSQLR[hðí¸Ü½ÍJvZ»µ½èA
- \`®©çIuWFNgÌOtÖÆUgZbgðÏ··éÈÇÌA
- êÊIÈ^XNÉàð§Âŵå¤B
- </para>
-
- <para>
- HibernateâIuWFNg/[Vi}bsOA
- ³çÉÍJavaªßÄÌûÍAȺÌXebvÉ]Áľ³¢F
- </para>
-
- <orderedlist>
- <listitem>
- <para>
- <xref linkend="tutorial"/> ðÇñž³¢B
- iKIÉðàµÄ¢«Ü·B
- `
[gAÌ\[XR[hÍfBXgr
[VÌ
- <literal>doc/reference/tutorial</literal> fBNgÉÜÜêĢܷB
- </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="architecture"/> ðÇñÅAHibernateªpÂ\È«ððµÄ¾³¢B
- </para>
- </listitem>
- <listitem>
- <para>
- HibernatefBXgr
[VÌ <literal>eg/</literal> fBNgð©Ä¾³¢B
- ÈPÈX^hA[ÌAvP[Vª èÜ·B
- JDBChCoð <literal>lib/</literal> fBNgÉRs[µÄA
- ©ªÌf[^x[Xɤ³µ¢lðwè·éæ¤É <literal>etc/hibernate.properties</literal>
- ðÒWµÄ¾³¢B
- fBXgr
[VfBNg©çAR}hvvgÅ
- <literal>ant eg</literal> Æ^CvµÄ¾³¢iAntðg¢Ü·jB
- ܽWindows«ÅÍ <literal>build eg</literal> Æ^CvµÄ¾³¢B
- </para>
- </listitem>
- <listitem>
- <para>
- ±Ìt@XhL
gðæêÌîñ¹ÆµÄpµÄ¾³¢B
- AvP[VÝvÉ¢Ä̳çÈéîñâiKIÈ`
[gAðTµÄ¢éÈçA
- <emphasis>Java Persistence with Hibernate</emphasis>ihttp://www.manning.com/bauer2j
- 𨷷ߵܷB
- ܽhttp://caveatemptor.hibernate.org©ç
- Java Persistence with HibernateÌáèÌAvP[Vð_E[hūܷB
- </para>
- </listitem>
- <listitem>
- <para>
- FAQÍHibernateEFuTCgÉ èÜ·B
- </para>
- </listitem>
- <listitem>
- <para>
- T[hp[eBÌfAáA`
[gAÍHibernateEFuTCgÉNª èÜ·B
- </para>
- </listitem>
- <listitem>
- <para>
- HibernateEFuTCgÌR~
jeBGAÍAfUCp^[â³Ü´ÜÈ\
[V
- iTomcat, JBoss AS, Struts, EJB, jÉ¢ÄÌæ¢îñ¹Å·B
- </para>
- </listitem>
- </orderedlist>
-
- <para>
- ¿âª êÎHibernateEFuTCgÌ[UtH[ðpµÄ¾³¢B
- ܽoO|[gÆtB[`NGXg̽ßJIRAÛèÇÕVXeðpӵĢܷB
- HibernateÌJÉ»¡ª êÎAJÒ[OXgÉQÁµÄ¾³¢B
- ±ÌhL
gð ȽÌ̾tÉ|óµ½¢êÍA
- JÒ[OXgŽ¿ÉR^NgðæÁľ³¢B
- </para>
-
- <para>
- ¤pJÌT|[gA»iÌT|[gAHibernateÌg[jOÍJBoss Inc.ªñµÄ¢Ü·
- ihttp://www.hibernate.org/SupportTraining/ð©Ä¾³¢jB
- HibernateÍProfessional Open SourcevWFNgA
- »µÄJBoss Enterprise Middleware SystemiJEMSjv_NgXC[gÌNeBJR|[lgÅ·B
- </para>
-
- <sect1 id="preface-s1" revision="-1">
-
- <title>ú{êóÉ¢Ä</title>
-
- <para id="preface-s1-p1" revision="-1">
- ±Ìú{êÅHibernate Reference DocumentiȺAú{êÅjÍA
- HibernatevWFNgÌ|óvZXÉîâÄ쬳êĢܷB
- ú{êÅÈçÑÉ´¶ÍLGPLCZXɶܷB
- </para>
-
- <para id="preface-s1-p2" revision="-1">
- ú{êÅÌpÉæÁÄæOÒªíé çäésvÉεÄA
- ´ÒA|óÒÈçÑÉ»ÌgDÍêØÌÛØð¢½µ©ËÜ·B
- ú{êÅÍëèðÜÞÂ\«ª 鱯ðF¯µ½ãŲp¾³¢B
- àe̳mÈÓ¡ðc¬·é½ßÉÍA´¶ðÇÞ±Æð¨··ßµÜ·B
- ܽAàµú{êÅÉëèð©Â¯çê½êÍA|óÒɲA¢½¾¯êÎK¢Å·B
- ½¾µàeÉÖµĄ̈â¢í¹ÉͶ©ËÜ·ÌÅA²¹³¾³¢B
- </para>
-
- <sect2 id="preface-s1-1" revision="-1">
-
- <title>ú{êÅ|óÒÉ¢Ä</title>
-
- <para id="preface-s1-1-p4" revision="-1">
- ú{êÅo[W3.2 cr3Ì|óÍ®ïÐGNT
- i<ulink url="http://www.exa-corp.co.jp">z[y[Wͱ¿ç</ulink>j
- ÌȺÌo[Ås¢Üµ½B
- {ÔÍi6,18,19,21,22,23ÍSjA
- LËTîiO«,2,5,13,14,24,25ÍSjA
- s³li7,8,9,10ÍSjA
- ß{Gji12,16,17ÍSjA
- äÖm¶i1,3,11ÍSjA
- Ñc_ii4,15ÍSjA
- ½Ôêi20ÍSjA
- X´ñir
[SjB
- Ȩëó̲wEÍ{ÔALËÜŨ袢½µÜ·B
-
- <mediaobject>
- <imageobject role="fo">
- <imagedata fileref="images/mailaddr.gif" format="GIF" align="center"/>
- </imageobject>
- <imageobject role="html">
- <imagedata fileref="../shared/images/mailaddr.gif" format="GIF" align="center"/>
- </imageobject>
- </mediaobject>
-
- </para>
- </sect2>
- </sect1>
-
- </preface>
-
- &tutorial;
-
- &architecture;
-
- &configuration;
-
- &persistent-classes;
-
- &basic-mapping;
- &collection-mapping;
- &association-mapping;
- &component-mapping;
- &inheritance-mapping;
-
- &session-api;
- &transactions;
- &events;
- &batch;
-
- &query-hql;
- &query-criteria;
- &query-sql;
- &filters;
- &xml;
-
- &performance;
-
- &toolset-guide;
-
- &example-parentchild;
- &example-weblog;
- &example-mappings;
-
- &best-practices;
-
-</book>
-
More information about the hibernate-commits
mailing list