[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ê½Â«Æ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