[hibernate-commits] Hibernate SVN: r14110 - in core/trunk/documentation/manual/ja-JP/src/main/docbook: content and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Thu Oct 18 23:50:52 EDT 2007


Author: steve.ebersole at jboss.com
Date: 2007-10-18 23:50:52 -0400 (Thu, 18 Oct 2007)
New Revision: 14110

Modified:
   core/trunk/documentation/manual/ja-JP/src/main/docbook/Hibernate_Reference.xml
   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/legal_notice.xml
Log:
updated encoding to UTF-8

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/Hibernate_Reference.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/Hibernate_Reference.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/Hibernate_Reference.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
 
 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
         <!ENTITY versionNumber "3.3.0.alpha1">

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/architecture.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/architecture.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/architecture.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,13 +1,15 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="architecture">
 
-    <title>ƒA[ƒLƒeƒNƒ`ƒƒ</title>
+    <title>アーキテクチャ</title>
 
     <sect1 id="architecture-overview" revision="1">
-        <title>ŠTŠÏ</title>
+        <title>概観</title>
         
         <para>
-            HibernateƒA[ƒLƒeƒNƒ`ƒƒ‚́i”ñí‚Ɂj‚‚¢ƒŒƒxƒ‹‚©‚ç‚̃rƒ…[F
+            Hibernateアーキテクチャの(非常に)高いレベルからのビュー:
         </para>
 
         <mediaobject>
@@ -20,18 +22,18 @@
         </mediaobject>
 
         <para>
-            ‚±‚̐}‚ÍHibernate‚ªAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ɑ΂µ‚ĉi‘±‰»ƒT[ƒrƒX
-            i‚Ɖi‘±ƒIƒuƒWƒFƒNƒgj‚ð’ñ‹Ÿ‚·‚邽‚߂ɁAƒf[ƒ^ƒx[ƒX‚Ɛݒèƒf[ƒ^‚ðŽg‚¤‚±‚Æ‚ð
-            Ž¦‚µ‚Ä‚¢‚Ü‚·B
+            この図はHibernateが、アプリケーションに対して永続化サービス
+            (と永続オブジェクト)を提供するために、データベースと設定データを使うことを
+            示しています。
         </para>
 
         <para>
-            ‚±‚±‚ÅŽÀsŽžƒA[ƒLƒeƒNƒ`ƒƒ‚Ì‚æ‚èÚ×‚ȃrƒ…[‚ð‚¨Œ©‚¹‚µ‚Ü‚µ‚傤B
-            ‚ ‚¢‚É‚­AHibernate‚͏_“î‚Å‚ ‚èA‚¢‚ë‚¢‚ë‚ȃAƒvƒ[ƒ`‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B
-            ‚±‚±‚ł́A2‚‚̋ɒ[‚È—á‚ð‚¨Œ©‚¹‚µ‚Ü‚·B
-            uŒy‚¢vƒA[ƒLƒeƒNƒ`ƒƒ‚ł́AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªŽ©‘O‚ÌJDBCƒRƒlƒNƒVƒ‡ƒ“‚ð—pˆÓ‚µA
-            ƒAƒvƒŠƒP[ƒVƒ‡ƒ“Ž©g‚ªƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŠÇ—‚µ‚Ü‚·B
-            ‚±‚Ì•û–@‚́AHibernate API‚̍ŏ¬ŒÀ‚̃TƒuƒZƒbƒg‚ðŽg‚¢‚Ü‚·F
+            ここで実行時アーキテクチャのより詳細なビューをお見せしましょう。
+            あいにく、Hibernateは柔軟であり、いろいろなアプローチをサポートしています。
+            ここでは、2つの極端な例をお見せします。
+            「軽い」アーキテクチャでは、アプリケーションが自前のJDBCコネクションを用意し、
+            アプリケーション自身がトランザクションを管理します。
+            この方法は、Hibernate APIの最小限のサブセットを使います:
         </para>
 
         <mediaobject>
@@ -44,8 +46,8 @@
         </mediaobject>
 
         <para>
-            ud‚¢vƒA[ƒLƒeƒNƒ`ƒƒ‚́AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚©‚çA‚»‚̉º‚Ɉʒu‚·‚éJDBC‚âJTA‚ÌAPI‚ð
-            Žæ‚è•¥‚Á‚Ä’ŠÛ‰»‚µA‚»‚̏ڍׂ̖ʓ|‚ðHibernate‚ÉŒ©‚³‚¹‚Ü‚·B
+            「重い」アーキテクチャは、アプリケーションから、その下に位置するJDBCやJTAのAPIを
+            取り払って抽象化し、その詳細の面倒をHibernateに見させます。
         </para>
 
         <mediaobject>
@@ -58,19 +60,19 @@
         </mediaobject>
 
         <para>
-            ˆÈ‰º‚́Aã‚̐}‚ÉŠÜ‚Ü‚ê‚éƒIƒuƒWƒFƒNƒg‚Ì’è‹`‚Å‚·F
+            以下は、上の図に含まれるオブジェクトの定義です:
 
             <variablelist spacing="compact">
                 <varlistentry>
                     <term>SessionFactory (<literal>org.hibernate.SessionFactory</literal>)</term>
                     <listitem>
                         <para>
-                            1‚‚̃f[ƒ^ƒx[ƒX‚ɑ΂·‚éƒRƒ“ƒpƒCƒ‹‚³‚ꂽƒ}ƒbƒsƒ“ƒO‚Ì
-                            ƒXƒŒƒbƒhƒZ[ƒt‚ȁiXV•s”\‚́jƒLƒƒƒbƒVƒ…B
-                             <literal>Session</literal> ‚̃tƒ@ƒNƒgƒŠ‚Å‚ ‚èA
-                            <literal>ConnectionProvider</literal> ‚̃Nƒ‰ƒCƒAƒ“ƒgB
-                            ƒIƒvƒVƒ‡ƒ“‚Æ‚µ‚āAƒvƒƒZƒX‚Ü‚½‚̓Nƒ‰ƒXƒ^ƒŒƒxƒ‹‚É‚¨‚¢‚āA
-                            ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ŠÔ‚ōė˜—p‰Â”\‚ȃf[ƒ^‚́i“ñŽŸjƒLƒƒƒbƒVƒ…‚ðŽ‚¿‚Ü‚·B
+                            1つのデータベースに対するコンパイルされたマッピングの
+                            スレッドセーフな(更新不能の)キャッシュ。
+                             <literal>Session</literal> のファクトリであり、
+                            <literal>ConnectionProvider</literal> のクライアント。
+                            オプションとして、プロセスまたはクラスタレベルにおいて、
+                            トランザクション間で再利用可能なデータの(二次)キャッシュを持ちます。
                         </para>
                     </listitem>
                 </varlistentry>
@@ -78,38 +80,38 @@
                     <term>Session (<literal>org.hibernate.Session</literal>)</term>
                     <listitem>
                         <para>
-                            ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ɖi‘±ƒXƒgƒA‚Ƃ̑Θb‚ð•\‚·A
-                            ƒVƒ“ƒOƒ‹ƒXƒŒƒbƒh‚Å’Z–½‚̃IƒuƒWƒFƒNƒgB
-                            JDBCƒRƒlƒNƒVƒ‡ƒ“‚ðƒ‰ƒbƒv‚µ‚Ü‚·B
-                             <literal>Transaction</literal> ‚̃tƒ@ƒNƒgƒŠ‚Å‚·B
-                            ‰i‘±ƒIƒuƒWƒFƒNƒg‚Ì•K{‚́iˆêŽŸjƒLƒƒƒbƒVƒ…‚ð•ÛŽ‚µ‚Ü‚·B
-                            ‚±‚̃LƒƒƒbƒVƒ…‚̓IƒuƒWƒFƒNƒgƒOƒ‰ƒt‚ðƒiƒrƒQ[ƒVƒ‡ƒ“‚·‚鎞‚âA
-                            Ž¯•ÊŽq‚ŃIƒuƒWƒFƒNƒg‚ðŒŸõ‚·‚鎞‚ÉŽg‚í‚ê‚Ü‚·B
+                            アプリケーションと永続ストアとの対話を表す、
+                            シングルスレッドで短命のオブジェクト。
+                            JDBCコネクションをラップします。
+                             <literal>Transaction</literal> のファクトリです。
+                            永続オブジェクトの必須の(一次)キャッシュを保持します。
+                            このキャッシュはオブジェクトグラフをナビゲーションする時や、
+                            識別子でオブジェクトを検索する時に使われます。
                         </para>
                     </listitem>
                 </varlistentry>
                 <varlistentry>
-                    <term>Persistent objects ‚Æ Collections</term>
+                    <term>Persistent objects と Collections</term>
                     <listitem>
                         <para>
-                            ‰i‘±‰»ó‘ԂƃrƒWƒlƒXƒƒ\ƒbƒh‚ðŽ‚ÂA’Z–½‚ŃVƒ“ƒOƒ‹ƒXƒŒƒbƒh‚̃IƒuƒWƒFƒNƒgB
-                            ‚±‚ê‚͒ʏí‚ÌJavaBeans/POJO‚Ì‚±‚Æ‚à‚ ‚è‚Ü‚·‚ªA“Á’¥“I‚È‚±‚Ƃ́A
-                            ‚»‚ÌŽž“_‚ł́i‚½‚¾1‚‚́j <literal>Session</literal> ‚ÆŠÖ˜A‚µ‚Ä‚¢‚邱‚Æ‚Å‚·B
-                             <literal>Session</literal> ‚ªƒNƒ[ƒY‚³‚ê‚é‚Æ‚·‚®‚ɁA
-                            ‚»‚ê‚ç‚͐؂藣‚³‚ê‚Ä‘¼‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‘w‚©‚玩—R‚ÉŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
-                            i—Ⴆ‚΃f[ƒ^Eƒgƒ‰ƒ“ƒXƒtƒ@EƒIƒuƒWƒFƒNƒg‚Æ‚µ‚āA
-                            ƒvƒŒƒ[ƒ“ƒe[ƒVƒ‡ƒ“‘w‚©‚çA‚Ü‚½‚̓vƒŒƒ[ƒ“ƒe[ƒVƒ‡ƒ“‘w‚Ö’¼ÚŽg—p‚Å‚«‚Ü‚·Bj
+                            永続化状態とビジネスメソッドを持つ、短命でシングルスレッドのオブジェクト。
+                            これは通常のJavaBeans/POJOのこともありますが、特徴的なことは、
+                            その時点での(ただ1つの) <literal>Session</literal> と関連していることです。
+                             <literal>Session</literal> がクローズされるとすぐに、
+                            それらは切り離されて他のアプリケーション層から自由に使うことができます。
+                            (例えばデータ・トランスファ・オブジェクトとして、
+                            プレゼンテーション層から、またはプレゼンテーション層へ直接使用できます。)
                         </para>
                     </listitem>
                 </varlistentry>
                 <varlistentry>
-                    <term>Transient ‚Æ detached ‚È objects ‚Æ Collections</term>
+                    <term>Transient と detached な objects と Collections</term>
                     <listitem>
                         <para>
-                            Œ»Žž“_‚Å‚Í <literal>Session</literal> ‚ÆŠÖ˜A‚µ‚Ä‚¢‚È‚¢A
-                            ‰i‘±ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒXB
-                            ‚·‚łɃAƒvƒŠƒP[ƒVƒ‡ƒ“‘¤‚ŃCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ê‚Ä‚¢‚āA‚Ü‚¾‰i‘±‰»‚³‚ê‚Ä‚¢‚È‚¢‚©A
-                            ƒNƒ[ƒY‚³‚ꂽ <literal>Session</literal> ‚ŃCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽ‚©‚Ì‚Ç‚¿‚ç‚©‚Å‚·B
+                            現時点では <literal>Session</literal> と関連していない、
+                            永続クラスのインスタンス。
+                            すでにアプリケーション側でインスタンス化されていて、まだ永続化されていないか、
+                            クローズされた <literal>Session</literal> でインスタンス化されたかのどちらかです。
                         </para>
                     </listitem>
                 </varlistentry>
@@ -117,13 +119,13 @@
                     <term>Transaction (<literal>org.hibernate.Transaction</literal>)</term>
                     <listitem>
                         <para>
-                            (ƒIƒvƒVƒ‡ƒ“)Œ´Žq«‚ðŽ‚Âì‹Æ’PˆÊ(Unit of Work)‚ðŽw’è‚·‚邽‚߂ɁAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªŽg—p‚·‚éA
-                            ƒVƒ“ƒOƒ‹ƒXƒŒƒbƒh‚Å’Z–½‚ȃIƒuƒWƒFƒNƒgB
-                            ‰º‚Ɉʒu‚·‚éJDBCAJTAACORBAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚©‚çƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚𒊏ۉ»‚µ‚Ü‚·B
-                             <literal>Session</literal> ‚́AŽž‚É‚Í
-                            ‚¢‚­‚‚©‚Ì <literal>Transaction</literal> ‚ð‚Ü‚½‚ª‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-                            ‚µ‚©‚µA‰º‚Ì‘w‚ÌAPI‚ðŽg‚¤‚É‚¹‚æA <literal>Transaction</literal> ‚ðŽg‚¤‚É‚¹‚æA
-                            ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ðÝ’è‚·‚邱‚Ƃ́AŒˆ‚µ‚ăIƒvƒVƒ‡ƒ“‚Å‚Í‚ ‚è‚Ü‚¹‚ñIB
+                            (オプション)原子性を持つ作業単位(Unit of Work)を指定するために、アプリケーションが使用する、
+                            シングルスレッドで短命なオブジェクト。
+                            下に位置するJDBC、JTA、CORBAトランザクションからアプリケーションを抽象化します。
+                             <literal>Session</literal> は、時には
+                            いくつかの <literal>Transaction</literal> をまたがるかもしれません。
+                            しかし、下の層のAPIを使うにせよ、 <literal>Transaction</literal> を使うにせよ、
+                            トランザクション境界を設定することは、決してオプションではありません!。
                         </para>
                     </listitem>
                 </varlistentry>
@@ -131,10 +133,10 @@
                     <term>ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</literal>)</term>
                     <listitem>
                         <para>
-                            (ƒIƒvƒVƒ‡ƒ“)JDBCƒRƒlƒNƒVƒ‡ƒ“i‚Æ‚»‚̃v[ƒ‹j‚̃tƒ@ƒNƒgƒŠB
-                            ‰º‚Ì‘w‚Ɉʒu‚·‚é <literal>Datasource</literal> ‚â
-                             <literal>DriverManager</literal> ‚©‚çƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚𒊏ۉ»‚µ‚Ü‚·B
-                            ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚ÍŒöŠJ‚³‚ê‚Ü‚¹‚ñ‚ªAŠJ”­ŽÒ‚ªŒp³‚Ü‚½‚ÍŽÀ‘•‚·‚邱‚Ƃ͉”\‚Å‚·B
+                            (オプション)JDBCコネクション(とそのプール)のファクトリ。
+                            下の層に位置する <literal>Datasource</literal> や
+                             <literal>DriverManager</literal> からアプリケーションを抽象化します。
+                            アプリケーションには公開されませんが、開発者が継承または実装することは可能です。
                         </para>
                     </listitem>
                 </varlistentry>
@@ -142,8 +144,8 @@
                     <term>TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)</term>
                     <listitem>
                         <para>
-                            (ƒIƒvƒVƒ‡ƒ“) <literal>Transaction</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚̃tƒ@ƒNƒgƒŠB
-                            ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚ÍŒöŠJ‚³‚ê‚Ü‚¹‚ñ‚ªAŠJ”­ŽÒ‚ªŒp³‚Ü‚½‚ÍŽÀ‘•‚·‚邱‚Ƃ͉”\‚Å‚·B
+                            (オプション) <literal>Transaction</literal> インスタンスのファクトリ。
+                            アプリケーションには公開されませんが、開発者が継承または実装することは可能です。
                          </para>
                     </listitem>
                 </varlistentry>
@@ -151,9 +153,9 @@
                     <term><emphasis>Extension Interfaces</emphasis></term>
                     <listitem>
                         <para>
-                            Hibernate‚́A‰i‘±‘w‚̐U‚é•‘‚¢‚ðƒJƒXƒ^ƒ}ƒCƒY‚·‚邽‚߂ɁA
-                            ‘½‚­‚̃IƒvƒVƒ‡ƒ“Šg’£ƒCƒ“ƒ^ƒtƒF[ƒX‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚·B
-                            Ú×‚ÍAPIƒhƒLƒ…ƒƒ“ƒg‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                            Hibernateは、永続層の振る舞いをカスタマイズするために、
+                            多くのオプション拡張インタフェースを用意しています。
+                            詳細はAPIドキュメントを参照してください。
                         </para>
                     </listitem>
                 </varlistentry>
@@ -161,18 +163,18 @@
         </para>
 
         <para>
-            uŒy‚¢vƒA[ƒLƒeƒNƒ`ƒƒ‚ł́AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Í’¼ÚJTA‚âJDBC‚ƑΘb‚·‚邽‚߂ɁA
-             <literal>Transaction</literal> ‚â <literal>TransactionFactory</literal> ‚â
-             <literal>ConnectionProvider</literal> ‚ðƒoƒCƒpƒX‚µ‚Ü‚·B
+            「軽い」アーキテクチャでは、アプリケーションは直接JTAやJDBCと対話するために、
+             <literal>Transaction</literal> ã‚„ <literal>TransactionFactory</literal> ã‚„
+             <literal>ConnectionProvider</literal> をバイパスします。
         </para>
     </sect1>
 
     <sect1 id="architecture-states" revision="1">
-        <title>ƒCƒ“ƒXƒ^ƒ“ƒX‚̏ó‘Ô</title>
+        <title>インスタンスの状態</title>
         <para>
-            ‰i‘±ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚́AŽŸ‚Ì‚R‚‚̈قȂéó‘Ô‚Ì‚Ç‚ê‚©‚É‚È‚è‚Ü‚·B
-            ‚»‚ê‚́A <emphasis>‰i‘±ƒRƒ“ƒeƒLƒXƒg</emphasis> ‚É‚æ‚Á‚ÄŒˆ‚Ü‚è‚Ü‚·B
-            Hibernate‚Ì <literal>Session</literal> ƒIƒuƒWƒFƒNƒg‚ªA‰i‘±ƒRƒ“ƒeƒLƒXƒg‚É‚È‚è‚Ü‚·B
+            永続クラスのインスタンスは、次の3つの異なる状態のどれかになります。
+            それは、 <emphasis>永続コンテキスト</emphasis> によって決まります。
+            Hibernateの <literal>Session</literal> オブジェクトが、永続コンテキストになります。
         </para>
         
        <variablelist spacing="compact">
@@ -180,9 +182,9 @@
                 <term>transient</term>
                 <listitem>
                     <para>
-                        ‚±‚̏ó‘Ԃ̃Cƒ“ƒXƒ^ƒ“ƒX‚́AŒ»Ý‚à‚»‚µ‚ĉߋŽ‚É‚¨‚¢‚Ä‚àA
-                        ‰i‘±ƒRƒ“ƒeƒLƒXƒg‚ÉŠÖ˜A‚¢‚Ä‚¢‚Ü‚¹‚ñB‚Ü‚½A‰i‘±IDiŽåƒL[‚Ì’lj‚ð
-                        Ž‚Á‚Ä‚¢‚Ü‚¹‚ñB
+                        この状態のインスタンスは、現在もそして過去においても、
+                        永続コンテキストに関連づいていません。また、永続ID(主キーの値)を
+                        持っていません。
                     </para>
                 </listitem>
             </varlistentry>
@@ -190,12 +192,12 @@
                 <term>persistent</term>
                 <listitem>
                     <para>
-                        ‚±‚̏ó‘Ԃ̃Cƒ“ƒXƒ^ƒ“ƒX‚́A‚»‚ÌŽž“_‚ʼni‘±ƒRƒ“ƒeƒLƒXƒg‚ÉŠÖ˜A‚¢‚Ä‚¢‚Ü‚·B
-                        ‚Ü‚½A‰i‘±IDiŽåƒL[‚Ì’lj‚ðŽ‚¿A
-                        ‚½‚¢‚Ä‚¢‚̓f[ƒ^ƒx[ƒX‚ɑΉž‚·‚és‚ðŽ‚Á‚Ä‚¢‚é‚Å‚µ‚傤B
-                        ŒÂX‚̉i‘±ƒRƒ“ƒeƒLƒXƒg‚Ì‚È‚©‚ł́A‰i‘±ID‚ª
-                        Java‚ÌIDiƒIƒuƒWƒFƒNƒg‚̃ƒ‚ƒŠã‚̈ʒuj‚Æ“¯‚¶‚Å‚ ‚邱‚Æ‚ð
-                        Hibernate‚ª <emphasis>•ÛØ</emphasis> ‚µ‚Ü‚·B
+                        この状態のインスタンスは、その時点で永続コンテキストに関連づいています。
+                        また、永続ID(主キーの値)を持ち、
+                        たいていはデータベースに対応する行を持っているでしょう。
+                        個々の永続コンテキストのなかでは、永続IDが
+                        JavaのID(オブジェクトのメモリ上の位置)と同じであることを
+                        Hibernateが <emphasis>保証</emphasis> します。
                     </para>
                 </listitem>
             </varlistentry>
@@ -203,12 +205,12 @@
                 <term>detached</term>
                 <listitem>
                     <para>
-                        ‚±‚̏ó‘Ԃ̃Cƒ“ƒXƒ^ƒ“ƒX‚́A‚©‚‚ĉi‘±ƒRƒ“ƒeƒLƒXƒg‚ÉŠÖ˜A‚¯‚ç‚ꂽ‚ªA
-                        ‚»‚̃Rƒ“ƒeƒLƒXƒg‚ªƒNƒ[ƒY‚³‚ꂽ‚©A‚ ‚é‚¢‚́A
-                        ‘¼‚̃vƒƒZƒX‚É‚»‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ªƒVƒŠƒAƒ‰ƒCƒY‚³‚ꂽ‚©‚Å‚·B
-                        ‚±‚̃Cƒ“ƒXƒ^ƒ“ƒX‚́A‰i‘±ID‚ðŽ‚¿A‚½‚¢‚Ä‚¢‚̓f[ƒ^ƒx[ƒX‚É
-                        ‘Ήž‚·‚és‚ðŽ‚Á‚Ä‚¢‚é‚Å‚µ‚傤B•ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚ɑ΂µ‚ẮA
-                        ‰i‘±ID‚ÆJava‚ÌID‚Æ‚ÌŠÖ˜A‚́AHibernate‚ª•ÛØ‚µ‚Ü‚¹‚ñB
+                        この状態のインスタンスは、かつて永続コンテキストに関連づけられたが、
+                        そのコンテキストがクローズされたか、あるいは、
+                        他のプロセスにそのインスタンスがシリアライズされたかです。
+                        このインスタンスは、永続IDを持ち、たいていはデータベースに
+                        対応する行を持っているでしょう。分離インスタンスに対しては、
+                        永続IDとJavaのIDとの関連は、Hibernateが保証しません。
                     </para>
                 </listitem>
             </varlistentry>
@@ -216,157 +218,157 @@
     </sect1>    
 
     <sect1 id="architecture-jmx" revision="1">
-        <title>JMX‚Æ‚Ì“‡</title>
+        <title>JMXとの統合</title>
 
         <para>
-            JMX‚ÍJavaƒRƒ“ƒ|[ƒlƒ“ƒgŠÇ—‚ÌJ2EE•W€‚Å‚·B
-            JMX•W€ƒT[ƒrƒX‚ð’Ê‚µ‚āAHibernate‚ÍŠÇ—‚³‚ê‚Ü‚·B
-            ƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚Ì’†‚É <literal>org.hibernate.jmx.HibernateService</literal> ‚Æ‚¢‚¤
-            MBeanŽÀ‘•‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚·B
+            JMXはJavaコンポーネント管理のJ2EE標準です。
+            JMX標準サービスを通して、Hibernateは管理されます。
+            ディストリビューションの中に <literal>org.hibernate.jmx.HibernateService</literal> という
+            MBean実装を用意しています。
         </para>
 
         <para>
-            JBoss ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo[ã‚ÉHibernate‚ðJMXƒT[ƒrƒX‚Æ‚µ‚ăfƒvƒƒC‚·‚é•û–@‚Ì—á‚Æ‚µ‚ẮA
-            JBoss ƒ†[ƒUƒKƒCƒh‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B JBoss ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo[‚É‚¨‚¢‚āA
-            JMX‚ðŽg‚Á‚ăfƒvƒƒC‚·‚é‚ƁAŽŸ‚̃ƒŠƒbƒg‚ª“¾‚ç‚ê‚Ü‚·B
+            JBoss アプリケーションサーバー上にHibernateをJMXサービスとしてデプロイする方法の例としては、
+            JBoss ユーザガイドを参照してください。 JBoss アプリケーションサーバーにおいて、
+            JMXを使ってデプロイすると、次のメリットが得られます。
         </para>
 
         <itemizedlist>
             <listitem>
                 <para>
-                    <emphasis>ƒZƒbƒVƒ‡ƒ“ŠÇ—:</emphasis> Hibernate‚Ì <literal>Session</literal> ‚̃‰ƒCƒtƒTƒCƒNƒ‹‚́A
-                    Ž©“®“I‚ÉJTAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃XƒR[ƒv‚ÉŒ‹‚т‚¯‚ç‚ê‚Ü‚·B‚±‚ê‚́A‚à‚Í‚âŽè“®‚Å
-                     <literal>Session</literal> ‚ðƒI[ƒvƒ“‚µ‚½‚èAƒNƒ[ƒY‚µ‚½‚è‚·‚é•K—v‚ª‚È‚¢‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B
-                    ‚±‚ê‚́AJBoss EJB ƒCƒ“ƒ^[ƒZƒvƒ^‚ÌŽdŽ–‚É‚È‚è‚Ü‚·B
-                    ‚Ü‚½AƒR[ƒh‚Ì‚Ç‚±‚Ńgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ðÝ’è‚·‚é‚©‚ɂ‚¢‚āA
-                    ‚à‚Í‚â”Y‚Þ•K—v‚ª‚ ‚è‚Ü‚¹‚ñi‚à‚¿‚ë‚ñˆÚA‰Â”\‚ȉi‘±‘w‚ð‘‚©‚©‚È‚­‚Ä‚¢‚¢‚Ì‚È‚ç‚΁A
-                    ƒIƒvƒVƒ‡ƒ“‚ÌHibernate‚Ì <literal>Transaction</literal> ‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢Bj
-                    <literal>Session</literal> ‚ɃAƒNƒZƒX‚·‚邽‚߂ɂ́A <literal>HibernateContext</literal> ‚ð
-                    ƒR[ƒ‹‚µ‚Ä‚­‚¾‚³‚¢B
+                    <emphasis>セッション管理:</emphasis> Hibernateの <literal>Session</literal> のライフサイクルは、
+                    自動的にJTAトランザクションのスコープに結びつけられます。これは、もはや手動で
+                     <literal>Session</literal> をオープンしたり、クローズしたりする必要がないことを意味します。
+                    これは、JBoss EJB インターセプタの仕事になります。
+                    また、コードのどこでトランザクション境界を設定するかについて、
+                    もはや悩む必要がありません(もちろん移植可能な永続層を書かかなくていいのならば、
+                    オプションのHibernateの <literal>Transaction</literal> を使用してください。)
+                    <literal>Session</literal> にアクセスするためには、 <literal>HibernateContext</literal> を
+                    コールしてください。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <emphasis>HAR ƒfƒvƒƒC:</emphasis> ’ʏíA(EAR ‚Ü‚½‚Í SAR ƒtƒ@ƒCƒ‹‚É‚ ‚éjJBoss ƒT[ƒrƒX
-                    ƒfƒvƒƒCƒƒ“ƒgƒfƒBƒXƒNƒŠƒvƒ^‚ðŽg‚Á‚āAHibernate JMX ƒT[ƒrƒX‚ðƒfƒvƒƒC‚µ‚Ü‚·B
-                    ‚»‚ê‚́AHibernate‚Ì <literal>SessionFactory</literal> ‚Ì‘S‚Ă̈ê”Ê“I‚ȐݒèƒIƒvƒVƒ‡ƒ“‚ð
-                    ƒTƒ|[ƒg‚µ‚Ü‚·B‚µ‚©‚µˆË‘R‚Æ‚µ‚ăfƒvƒƒCƒƒ“ƒgƒfƒBƒXƒNƒŠƒvƒ^‚Ì‚È‚©‚É‚·‚ׂẴ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚Ì
-                    –¼‘O‚ð‹“‚°‚é•K—v‚ª‚ ‚è‚Ü‚·B
-                    ‚à‚µAƒIƒvƒVƒ‡ƒ“‚ÌHARƒfƒvƒƒCƒƒ“ƒg‚ðŽg‚¤‚±‚Æ‚ðŒˆ‚ß‚½‚È‚çA
-                    JBoss‚ÍŽ©“®“I‚ÉHARƒtƒ@ƒCƒ‹‚Ì‚È‚©‚Ì‘S‚Ẵ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ðŒŸo‚µ‚Ü‚·B
+                    <emphasis>HAR デプロイ:</emphasis> 通常、(EAR または SAR ファイルにある)JBoss サービス
+                    デプロイメントディスクリプタを使って、Hibernate JMX サービスをデプロイします。
+                    それは、Hibernateの <literal>SessionFactory</literal> の全ての一般的な設定オプションを
+                    サポートします。しかし依然としてデプロイメントディスクリプタのなかにすべてのマッピングファイルの
+                    名前を挙げる必要があります。
+                    もし、オプションのHARデプロイメントを使うことを決めたなら、
+                    JBossは自動的にHARファイルのなかの全てのマッピングファイルを検出します。
                 </para>
             </listitem>
         </itemizedlist>
 
         <para>
-            ‚±‚ê‚ç‚̃IƒvƒVƒ‡ƒ“‚ɂ‚¢‚Ă̏ڍׂȏî•ñ‚́AJBossƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒoƒ†[ƒUƒKƒCƒh‚ð
-            ŽQl‚É‚µ‚Ä‚­‚¾‚³‚¢B
+            これらのオプションについての詳細な情報は、JBossアプリケーションサーバユーザガイドを
+            参考にしてください。
         </para>
 
         <para>
-            JMXƒT[ƒrƒX‚Æ‚µ‚Ä—˜—p‰Â”\‚È‘¼‚Ì‹@”\‚ɁAHibernateŽÀsŽž“Œvî•ñ‚ª‚ ‚è‚Ü‚·B
-             <xref linkend="configuration-optional-statistics"/> ‚ðŒ©‚Ä‚­‚¾‚³‚¢B
+            JMXサービスとして利用可能な他の機能に、Hibernate実行時統計情報があります。
+             <xref linkend="configuration-optional-statistics"/> を見てください。
         </para>
     </sect1>
 
     <sect1 id="architecture-jca" revision="1">
-        <title>JCA ƒTƒ|[ƒg</title>
+        <title>JCA サポート</title>
         <para>
-            Hibernate ‚Í JCA ƒRƒlƒNƒ^‚Æ‚µ‚Ä‚àÝ’è‚Å‚«‚Ü‚·BÚ×‚ɂ‚¢‚ẮAWebƒTƒCƒg‚ðŒ©‚Ä‚­‚¾‚³‚¢B
-            Hibernate JCA ƒTƒ|[ƒg‚́A¡‚Ì‚Æ‚±‚ëŽÀŒ±’iŠK‚Æ‚µ‚čl‚¦‚ç‚ê‚Ä‚¢‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+            Hibernate は JCA コネクタとしても設定できます。詳細については、Webサイトを見てください。
+            Hibernate JCA サポートは、今のところ実験段階として考えられていることに注意してください。
         </para>
     </sect1>
 
     <sect1 id="architecture-current-session" revision="2">
-        <title>ƒRƒ“ƒeƒLƒXƒgã‚̃ZƒbƒVƒ‡ƒ“</title>
+        <title>コンテキスト上のセッション</title>
         <para>
-            Hibernate ‚ðŽg‚Á‚½ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚́A‚Ù‚Æ‚ñ‚ǁA‚È‚ñ‚ç‚©‚ÌŒ`‚Å"ƒRƒ“ƒeƒLƒXƒgã‚Ì"ƒZƒbƒVƒ‡ƒ“‚ª•K—v‚É‚È‚è‚Ü‚·B
-            uƒRƒ“ƒeƒLƒXƒgã‚̃ZƒbƒVƒ‡ƒ“v‚́A“Á’è‚̃Rƒ“ƒeƒLƒXƒg‚̃XƒR[ƒv‚Ì‚È‚©‚Å—LŒø‚ȃZƒbƒVƒ‡ƒ“‚Ì‚±‚Æ‚Å‚·B
-            ‚µ‚©‚µA’ʏíƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚²‚ƂɃRƒ“ƒeƒLƒXƒg‚ð\¬‚·‚é‚à‚Ì‚Ì’è‹`‚͈قȂè‚Ü‚·B
-            ‚µ‚©‚àAˆÙ‚È‚é•¡”‚̃Rƒ“ƒeƒLƒXƒg‚́AŒ»Žž“_‚ɑ΂µ‚ĈقȂéƒXƒR[ƒv‚ð’è‹`‚µ‚Ü‚·B
-            ƒo[ƒWƒ‡ƒ“3.0‚æ‚è‘O‚Ì Hibernate ‚ł́AŽ©ì‚Ì <literal>ThreadLocal</literal> ƒx[ƒX‚́uƒRƒ“ƒeƒLƒXƒgã‚̃ZƒbƒVƒ‡ƒ“v‚ð
-            —˜—p‚·‚é‚©A <literal>HibernateUtil</literal> ‚̂悤‚ȃwƒ‹ƒp[ƒNƒ‰ƒX‚ð—˜—p‚·‚é‚©A
-            proxy/interception ƒx[ƒX‚́uƒRƒ“ƒeƒLƒXƒgã‚̃ZƒbƒVƒ‡ƒ“v‚ð’ñ‹Ÿ‚·‚é
-            iSpring ‚â Pico ‚̂悤‚ȁjƒT[ƒhƒp[ƒeƒB‚̃tƒŒ[ƒ€ƒ[ƒN‚ð—˜—p‚·‚é‚©‚Ì‚¢‚¸‚ê‚©‚Å‚µ‚½B
+            Hibernate を使ったアプリケーションは、ほとんど、なんらかの形で"コンテキスト上の"セッションが必要になります。
+            「コンテキスト上のセッション」は、特定のコンテキストのスコープのなかで有効なセッションのことです。
+            しかし、通常アプリケーションごとにコンテキストを構成するものの定義は異なります。
+            しかも、異なる複数のコンテキストは、現時点に対して異なるスコープを定義します。
+            バージョン3.0より前の Hibernate では、自作の <literal>ThreadLocal</literal> ベースの「コンテキスト上のセッション」を
+            利用するか、 <literal>HibernateUtil</literal> のようなヘルパークラスを利用するか、
+            proxy/interception ベースの「コンテキスト上のセッション」を提供する
+            (Spring や Pico のような)サードパーティのフレームワークを利用するかのいずれかでした。
         </para>
 
         <para>
-            ƒo[ƒWƒ‡ƒ“ 3.0.1 ‚©‚çAHibernate ‚É‚Í <literal>SessionFactory.getCurrentSession()</literal> ‚ª
-            ‰Á‚í‚è‚Ü‚µ‚½B ‚±‚ê‚́A <literal>JTA</literal> ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŽg—p‚ð‘O’ñ‚É‚µ‚Ä‚¢‚Ü‚·B
-            <literal>JTA</literal> ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚́AŒ»Ý‚̃ZƒbƒVƒ‡ƒ“‚̃XƒR[ƒv‚ƃRƒ“ƒeƒLƒXƒg‚Ì—¼•û‚ð’è‹`‚µ‚Ü‚·B
-            Hibernate ƒ`[ƒ€‚́AŽŸ‚Ì‚±‚Æ‚ðŽå’£‚µ‚Ü‚·B
-            ‹‘å‚ȃXƒ^ƒ“ƒhƒAƒƒ“‚Ì <literal>JTA TransactionManager</literal> ŽÀ‘•‚ª¬n‚µ‚½‚çA
-            <literal>J2EE</literal> ƒRƒ“ƒeƒiã‚ɃfƒvƒƒC‚³‚ê‚é‚©‚Ç‚¤‚©‚É‚©‚©‚í‚炸A
-            ‚Ù‚Æ‚ñ‚ǂ́i‚·‚ׂĂƂ͌¾‚í‚È‚¢‚ªjƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªA
-            <literal>JTA</literal> ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ŠÇ—‚ðŽg—p‚·‚ׂ«‚Å‚ ‚é‚ƁB
-            ‚±‚̍l‚¦‚ÉŠî‚­‚ƁA <literal>JTA</literal> ƒx[ƒX‚́uƒRƒ“ƒeƒLƒXƒgã‚̃ZƒbƒVƒ‡ƒ“v‚ð
-            Žg‚¤‚µ‚©‚È‚¢‚Å‚µ‚傤B
+            バージョン 3.0.1 から、Hibernate には <literal>SessionFactory.getCurrentSession()</literal> が
+            加わりました。 これは、 <literal>JTA</literal> トランザクションの使用を前提にしています。
+            <literal>JTA</literal> トランザクションは、現在のセッションのスコープとコンテキストの両方を定義します。
+            Hibernate チームは、次のことを主張します。
+            巨大なスタンドアロンの <literal>JTA TransactionManager</literal> 実装が成熟したら、
+            <literal>J2EE</literal> コンテナ上にデプロイされるかどうかにかかわらず、
+            ほとんどの(すべてとは言わないが)アプリケーションが、
+            <literal>JTA</literal> トランザクション管理を使用すべきであると。
+            この考えに基づくと、 <literal>JTA</literal> ベースの「コンテキスト上のセッション」を
+            使うしかないでしょう。
         </para>
 
         <para>
-            ‚µ‚©‚µAƒo[ƒWƒ‡ƒ“ 3.1 ‚©‚ç‚́A <literal>SessionFactory.getCurrentSession()</literal> ‚ÌŒã‚̏ˆ—‚ªA
-            ƒvƒ‰ƒKƒuƒ‹‚É‚È‚è‚Ü‚µ‚½B
-            ‚±‚ê‚ðŽó‚¯‚āAŒ»Ý‚̃ZƒbƒVƒ‡ƒ“‚ð’è‹`‚·‚éƒXƒR[ƒv‚ƃRƒ“ƒeƒLƒXƒg‚̃vƒ‰ƒKƒrƒŠƒeƒB‚ð‰Â”\‚É‚·‚邽‚߂ɁA
-            V‚µ‚¢Šg’£ƒCƒ“ƒ^ƒtƒF[ƒX ( <literal>org.hibernate.context.CurrentSessionContext</literal> ) ‚Æ
-            V‚µ‚¢\¬ƒpƒ‰ƒ[ƒ^ ( <literal>hibernate.current_session_context_class</literal> ) ‚ª’ljÁ‚³‚ê‚Ü‚µ‚½B
+            しかし、バージョン 3.1 からは、 <literal>SessionFactory.getCurrentSession()</literal> の後の処理が、
+            プラガブルになりました。
+            これを受けて、現在のセッションを定義するスコープとコンテキストのプラガビリティを可能にするために、
+            新しい拡張インタフェース ( <literal>org.hibernate.context.CurrentSessionContext</literal> ) と
+            新しい構成パラメータ ( <literal>hibernate.current_session_context_class</literal> ) が追加されました。
         </para>
 
         <para>
-            <literal>org.hibernate.context.CurrentSessionContext</literal> ƒCƒ“ƒ^ƒtƒF[ƒX‚Ì‹K–ñ‚ɂ‚¢‚Ä‚Ì
-            Ú×‚È“à—e‚Í Javadoc ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
-            ‚»‚ê‚ɂ́A <literal>currentSession()</literal> ‚Æ‚¢‚¤1‚‚̃ƒ\ƒbƒh‚ª’è‹`‚³‚ê‚Ä‚¨‚èA
-            ‚»‚ÌŽÀ‘•‚́AŒ»Ý‚́uƒRƒ“ƒeƒLƒXƒgã‚̃ZƒbƒVƒ‡ƒ“v‚ð’ǐՂ·‚邱‚ƂɐӔC‚ðŽ‚¿‚Ü‚·B
-            ‚»‚Ì‚Ü‚ÜŽg‚¦‚é‚悤‚ɁAHibernate‚Í‚±‚̃Cƒ“ƒ^ƒtƒF[ƒX‚ÌŽÀ‘•‚ð2‚Â’ñ‹Ÿ‚µ‚Ä‚¢‚Ü‚·B
+            <literal>org.hibernate.context.CurrentSessionContext</literal> インタフェースの規約についての
+            詳細な内容は Javadoc を参照してください。
+            それには、 <literal>currentSession()</literal> という1つのメソッドが定義されており、
+            その実装は、現在の「コンテキスト上のセッション」を追跡することに責任を持ちます。
+            そのまま使えるように、Hibernateはこのインタフェースの実装を2つ提供しています。
         </para>
 
         <itemizedlist>
             <listitem>
                 <para>
                     <literal>org.hibernate.context.JTASessionContext</literal> - 
-                    <literal>JTA</literal> ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚É‚æ‚Á‚āAŒ»Ý‚̃ZƒbƒVƒ‡ƒ“‚ª’ǐՂ³‚êA
-                    ƒXƒR[ƒv‚ðŒˆ‚ß‚ç‚ê‚Ü‚·B‚±‚̏ˆ—‚́AŒÃ‚¢JTA‚¾‚¯‚̃Aƒvƒ[ƒ`‚Æ‚Ü‚Á‚½‚­“¯‚¶‚Å‚·B
-                    Ú×‚ÍJavadoc‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                    <literal>JTA</literal> トランザクションによって、現在のセッションが追跡され、
+                    スコープを決められます。この処理は、古いJTAだけのアプローチとまったく同じです。
+                    詳細はJavadocを参照してください。
                 </para>
             </listitem>
             <listitem>
                 <para>
                     <literal>org.hibernate.context.ThreadLocalSessionContext</literal> -
-                    ƒXƒŒƒbƒh‚ÌŽÀs‚É‚æ‚Á‚āAŒ»Ý‚̃ZƒbƒVƒ‡ƒ“‚ª’ǐՂ³‚ê‚Ü‚·B
-                    Ú×‚ÍJavadoc‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                    スレッドの実行によって、現在のセッションが追跡されます。
+                    詳細はJavadocを参照してください。
                 </para>
             </listitem>
             <listitem>
                 <para>
                 	<literal>org.hibernate.context.ManagedSessionContext</literal> - 
-                	ƒXƒŒƒbƒh‚ÌŽÀs‚É‚æ‚Á‚āAŒ»Ý‚̃ZƒbƒVƒ‡ƒ“‚ª’ǐՂ³‚ê‚Ü‚·B
-                	‚µ‚©‚µA‚±‚̃Nƒ‰ƒX‚Ìstaticƒƒ\ƒbƒh‚Å <literal>Session</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚ð
-                	ƒoƒCƒ“ƒh/ƒAƒ“ƒoƒCƒ“ƒh‚·‚éÓ”C‚Í‚ ‚È‚½‚É‚ ‚è‚Ü‚·B
-                	‚±‚ê‚ÍŒˆ‚µ‚Ä <literal>Session</literal> ‚ðƒI[ƒvƒ“Aƒtƒ‰ƒbƒVƒ…AƒNƒ[ƒY‚µ‚Ü‚¹‚ñB
+                	スレッドの実行によって、現在のセッションが追跡されます。
+                	しかし、このクラスのstaticメソッドで <literal>Session</literal> インスタンスを
+                	バインド/アンバインドする責任はあなたにあります。
+                	これは決して <literal>Session</literal> をオープン、フラッシュ、クローズしません。
                 </para>               
             </listitem>
         </itemizedlist>
 
         <para>
-            Žn‚ß‚Ì2‚‚̎À‘•‚́A"1ƒZƒbƒVƒ‡ƒ“ - 1ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“" ƒvƒƒOƒ‰ƒ~ƒ“ƒOƒ‚ƒfƒ‹‚ð’ñ‹Ÿ‚µ‚Ü‚·B
-            ‚±‚ê‚Í <emphasis>ƒŠƒNƒGƒXƒg‚²‚Ƃ̃ZƒbƒVƒ‡ƒ“isession-per-requestj</emphasis> ‚Æ‚µ‚Ä‚à’m‚ç‚ê‚Ä‚¨‚èAŽg‚í‚ê‚Ä‚¢‚Ü‚·B
-            Hibernate ƒZƒbƒVƒ‡ƒ“‚ÌŠJŽn‚ƏI—¹‚́Aƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŠúŠÔ‚ÅŒˆ‚Ü‚è‚Ü‚·B
-            JTA‚ðŽg‚í‚È‚¢•’Ê‚ÌJSE‚ŁAƒvƒƒOƒ‰ƒ€ã‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠEÝ’è‚ðs‚¤‚È‚çA
-            ƒR[ƒh‚©‚çŠî‘b‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒVƒXƒeƒ€‚ð‰B•Á‚·‚邽‚߂ɁA
-            Hibernate <literal>Transaction</literal> API‚ðŽg‚¤‚Æ‚æ‚¢‚Å‚µ‚傤B
-            JTA‚ðŽg‚¤‚È‚çAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì‹«ŠEÝ’è‚ɂ́AJTAƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B
-            CMT‚ðƒTƒ|[ƒg‚·‚éEJBƒRƒ“ƒeƒi‚ÅŽÀs‚·‚é‚‚à‚è‚È‚çAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚͐錾“I‚É’è‹`‚Å‚«‚邽‚߁A
-            ƒR[ƒhã‚Ńgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚âƒZƒbƒVƒ‡ƒ“‚Ì‹«ŠE‚ðÝ’è‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB
-            ‚³‚ç‚ɏڍׂȏî•ñ‚âƒR[ƒh‚Ì—á‚́A <xref linkend="transactions"/> ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+            始めの2つの実装は、"1セッション - 1データベーストランザクション" プログラミングモデルを提供します。
+            これは <emphasis>リクエストごとのセッション(session-per-request)</emphasis> としても知られており、使われています。
+            Hibernate セッションの開始と終了は、データベーストランザクションの期間で決まります。
+            JTAを使わない普通のJSEで、プログラム上のトランザクション境界設定を行うなら、
+            コードから基礎のトランザクションシステムを隠蔽するために、
+            Hibernate <literal>Transaction</literal> APIを使うとよいでしょう。
+            JTAを使うなら、トランザクションの境界設定には、JTAインターフェイスを使ってください。
+            CMTをサポートするEJBコンテナで実行するつもりなら、トランザクション境界は宣言的に定義できるため、
+            コード上でトランザクションやセッションの境界を設定する必要はありません。
+            さらに詳細な情報やコードの例は、 <xref linkend="transactions"/> を参照してください。
         </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‚‚̎À‘•‚Ì’†‚©‚çŽg—p‚·‚éŽÀ‘•ƒNƒ‰ƒX‚Ì–¼‘O‚𒼐ڎw’肵‚Ü‚·B
-            ‚µ‚©‚µA"jta", "thread", "managed"‚Æ‚¢‚¤‚»‚ꂼ‚ê‚̏ȗª–¼‚à—pˆÓ‚³‚ê‚Ä‚¢‚Ü‚·B
+            <literal>hibernate.current_session_context_class</literal> 設定パラメータは、
+            <literal>org.hibernate.context.CurrentSessionContext</literal> のどの実装を使うかを指定します。
+            下位互換性のため、このパラメータが設定されず
+            <literal>org.hibernate.transaction.TransactionManagerLookup</literal> が設定されていた場合、
+            Hibernateは <literal>org.hibernate.context.JTASessionContext</literal> を使うことに注意してください。
+            通常このパラメータの値には、3つの実装の中から使用する実装クラスの名前を直接指定します。
+            しかし、"jta", "thread", "managed"というそれぞれの省略名も用意されています。
         </para>
         
     </sect1>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/association_mapping.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/association_mapping.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/association_mapping.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,39 +1,41 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="associations">
 
-    <title>ŠÖ˜Aƒ}ƒbƒsƒ“ƒO</title>
+    <title>関連マッピング</title>
 
     <sect1 id="assoc-intro" revision="1">
-        <title>ƒCƒ“ƒgƒƒ_ƒNƒVƒ‡ƒ“</title>
+        <title>イントロダクション</title>
         
         <para>
-            ŠÖ˜Aƒ}ƒbƒsƒ“ƒO‚Í‚µ‚΂µ‚ǝ‰ð‚ªÅ‚à“‚¢‚à‚Ì‚É‚È‚è‚Ü‚·B
-            ‚±‚̏͂ł́AŠî–{“I‚Ȉꂈꂂ̃P[ƒX‚ɂ‚¢‚ďq‚ׂ܂·B
-            ’P•ûŒü‚̃}ƒbƒsƒ“ƒO‚©‚çŽn‚߁A‚»‚ê‚©‚ç‘o•ûŒü‚̃P[ƒX‚ɂ‚¢‚čl‚¦‚Ä‚¢‚«‚Ü‚·B
-            —á‚Æ‚µ‚āA<literal>Person</literal> ‚Æ <literal>Address</literal> ‚ð—p‚¢‚Ü‚·B
+            関連マッピングはしばしば理解が最も難しいものになります。
+            この章では、基本的な一つ一つのケースについて述べます。
+            単方向のマッピングから始め、それから双方向のケースについて考えていきます。
+            例として、<literal>Person</literal> と <literal>Address</literal> を用います。
         </para>
         
         <para>
-                ŠÖ˜A‚́AŒ‹‡ƒe[ƒuƒ‹‚ð“ü‚ê‚é‚©‚©‚Ç‚¤‚©‚ƁA
-                ‘½d“x‚É‚æ‚Á‚Ä•ª—Þ‚·‚邱‚Æ‚É‚µ‚Ü‚·B
+                関連は、結合テーブルを入れるかかどうかと、
+                多重度によって分類することにします。
         </para>
         
         <para>
-                ‚·‚ׂĂ̗á‚Ånot null‚ÌŠO•”ƒL[‚ðŽg—p‚µ‚Ü‚·B
-                ‚±‚ê‚ÍHibernate‚Ì—vŒ‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-                not null§–ñ‚ðŠO‚µ‚½‚Æ‚µ‚Ä‚àAƒ}ƒbƒsƒ“ƒO‚Í–â‘è‚È‚­“®ì‚µ‚Ü‚·B
+                すべての例でnot nullの外部キーを使用します。
+                これはHibernateの要件ではありません。
+                not null制約を外したとしても、マッピングは問題なく動作します。
         </para>
         
     </sect1>
 
     <sect1 id="assoc-unidirectional" revision="1">
-        <title>’P•ûŒüŠÖ˜A</title>
+        <title>単方向関連</title>
         
         <sect2 id="assoc-unidirectional-m21">
-        <title>‘½‘Έê</title>
+        <title>多対一</title>
         
         <para>
-            <emphasis>’P•ûŒü‘½‘ΈêŠÖ˜A</emphasis> ‚Í’P•ûŒüŠÖ˜A‚Ì’†‚ōłàˆê”Ê“I‚È‚à‚Ì‚Å‚·B
+            <emphasis>単方向多対一関連</emphasis> は単方向関連の中で最も一般的なものです。
         </para>
         
         <programlisting><![CDATA[<class name="Person">
@@ -58,11 +60,11 @@
         </sect2>
 
         <sect2 id="assoc-unidirectional-121">
-        <title>ˆê‘Έê</title>
+        <title>一対一</title>
         
         <para>
-            <emphasis>ŠO•”ƒL[‚Ì’P•ûŒüˆê‘ΈêŠÖ˜A</emphasis> ‚Í‚Ù‚Æ‚ñ‚Ç“¯‚¶‚à‚Ì‚Å‚·B
-            —Bˆêˆá‚¤‚̂́AƒJƒ‰ƒ€‚̃†ƒj[ƒN‚Ȑ§–ñ‚Å‚·B
+            <emphasis>外部キーの単方向一対一関連</emphasis> はほとんど同じものです。
+            唯一違うのは、カラムのユニークな制約です。
         </para>
         
        <programlisting><![CDATA[<class name="Person">
@@ -86,8 +88,8 @@
         ]]></programlisting>
         
         <para>
-            <emphasis>ŽåƒL[‚Ì’P•ûŒüˆê‘ΈêŠÖ˜A</emphasis> ‚͒ʏíA“Á•Ê‚ÈIDƒWƒFƒlƒŒ[ƒ^‚ðŽg‚¢‚Ü‚·B
-            i‚±‚Ì—á‚Å‚ÍŠÖ˜A‚Ì•ûŒü‚ª‹t‚É‚È‚Á‚Ä‚¢‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢j
+            <emphasis>主キーの単方向一対一関連</emphasis> は通常、特別なIDジェネレータを使います。
+            (この例では関連の方向が逆になっていることに注意してください)
         </para>
         
        <programlisting><![CDATA[<class name="Person">
@@ -112,11 +114,11 @@
         </sect2>
         
         <sect2 id="assoc-unidirectional-12m">
-        <title>ˆê‘Α½</title>
+        <title>一対多</title>
         
         <para>
-            <emphasis>ŠO•”ƒL[‚Ì’P•ûŒüˆê‘Α½ŠÖ˜A</emphasis> ‚Í‚Æ‚Ä‚à“ÁŽê‚ȃP[ƒX‚ŁA
-            ‚ ‚܂萄§‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB
+            <emphasis>外部キーの単方向一対多関連</emphasis> はとても特殊なケースで、
+            あまり推奨されていません。
         </para>
         
         <programlisting><![CDATA[<class name="Person">
@@ -141,7 +143,7 @@
         ]]></programlisting>
         
         <para>
-            ‚±‚̂悤‚ÈŠÖ˜A‚Ì‚½‚ß‚ÉŒ‹‡ƒe[ƒuƒ‹‚ðŽg‚¤‚±‚Æ‚ð‚¨‘E‚ß‚µ‚Ü‚·B
+            このような関連のために結合テーブルを使うことをお薦めします。
         </para>
         
         </sect2>
@@ -149,16 +151,16 @@
     </sect1>
 
     <sect1 id="assoc-unidirectional-join" revision="1">
-        <title>Œ‹‡ƒe[ƒuƒ‹‚ðŽg‚Á‚½’P•ûŒüŠÖ˜A</title>
+        <title>結合テーブルを使った単方向関連</title>
         
         <sect2 id="assoc-unidirectional-join-12m">
-        <title>ˆê‘Α½</title>
+        <title>一対多</title>
         
         <para>
-            <emphasis>Œ‹‡ƒe[ƒuƒ‹‚ðŽg‚Á‚½’P•ûŒüˆê‘Α½ŠÖ˜A</emphasis> 
-            ‚Í‚æ‚èD‚Ü‚µ‚¢‚Å‚·B
-            <literal>unique="true"</literal> ‚ÌŽw’è‚É‚æ‚èA‘½d“x‚ª‘½‘Α½‚©‚çˆê‘Α½
-            ‚É•Ï‚í‚Á‚½‚±‚Æ‚É’ˆÓ‚µ‚ĉº‚³‚¢B
+            <emphasis>結合テーブルを使った単方向一対多関連</emphasis> 
+            はより好ましいです。
+            <literal>unique="true"</literal> の指定により、多重度が多対多から一対多
+            に変わったことに注意して下さい。
         </para>
         
         <programlisting><![CDATA[<class name="Person">
@@ -187,11 +189,11 @@
         </sect2>
 
         <sect2 id="assoc-unidirectional-join-m21">
-        <title>‘½‘Έê</title>
+        <title>多対一</title>
         
         <para>
-            <emphasis>Œ‹‡ƒe[ƒuƒ‹‚Ì’P•ûŒü‘½‘ΈêŠÖ˜A</emphasis> ‚Í
-            ŠÖ˜A‚ª”CˆÓ‚Å‚ ‚é‚Æ‚«‚É”ñí‚Ɉê”Ê“I‚È‚à‚Ì‚Å‚·B
+            <emphasis>結合テーブルの単方向多対一関連</emphasis> は
+            関連が任意であるときに非常に一般的なものです。
         </para>
         
         <programlisting><![CDATA[<class name="Person">
@@ -221,11 +223,11 @@
         </sect2>
 
         <sect2 id="assoc-unidirectional-join-121">
-        <title>ˆê‘Έê</title>
+        <title>一対一</title>
         
         <para>
-            <emphasis>Œ‹‡ƒe[ƒuƒ‹‚Ì’P•ûŒüˆê‘ΈêŠÖ˜A</emphasis> ‚́A–{“–‚É“ÁŽê‚Å‚·‚ª
-            •s‰Â”\‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
+            <emphasis>結合テーブルの単方向一対一関連</emphasis> は、本当に特殊ですが
+            不可能ではありません。
         </para>
         
         <programlisting><![CDATA[<class name="Person">
@@ -257,10 +259,10 @@
         </sect2>
 
         <sect2 id="assoc-unidirectional-join-m2m">
-        <title>‘½‘Α½</title>
+        <title>多対多</title>
         
         <para>
-            ÅŒã‚ɁA<emphasis>’P•ûŒü‘½‘Α½ŠÖ˜A</emphasis> ‚ðŽ¦‚µ‚Ü‚·B
+            最後に、<emphasis>単方向多対多関連</emphasis> を示します。
         </para>
         
         <programlisting><![CDATA[<class name="Person">
@@ -290,14 +292,14 @@
     </sect1>
 
     <sect1 id="assoc-bidirectional" revision="1">
-        <title>‘o•ûŒüŠÖ˜A</title>
+        <title>双方向関連</title>
         
         <sect2 id="assoc-bidirectional-m21" revision="2">
-        <title>ˆê‘Α½/‘½‘Έê</title>
+        <title>一対多/多対一</title>
         
         <para>
-            <emphasis>‘o•ûŒü‘½‘ΈêŠÖ˜A</emphasis> ‚͍łàˆê”Ê“I‚ÈŠÖ˜A‚Å‚·B
-            i•W€“I‚ȐeŽqŠÖŒW‚Å‚·j
+            <emphasis>双方向多対一関連</emphasis> は最も一般的な関連です。
+            (標準的な親子関係です)
         </para>
         
         <programlisting><![CDATA[<class name="Person">
@@ -325,12 +327,12 @@
         ]]></programlisting>
         
         <para>
-            <literal>List</literal> i‚Ü‚½‚Í‘¼‚̃Cƒ“ƒfƒbƒNƒX•t‚«‚̃RƒŒƒNƒVƒ‡ƒ“j‚ðŽg‚¤‚È‚çA
-            ŠO•”ƒL[‚Ì <literal>key</literal> ƒJƒ‰ƒ€‚ð <literal>not null</literal> ‚ɐݒ肵A
-            ƒRƒŒƒNƒVƒ‡ƒ“‘¤‚ªŠe—v‘f‚̃Cƒ“ƒfƒbƒNƒX‚ðƒƒ“ƒeƒiƒ“ƒX‚·‚é‚悤‚ɁA
-            ŠÖ˜A‚ðˆµ‚¤•K—v‚ª‚ ‚è‚Ü‚·
-            i<literal>update="false"</literal> ‚©‚ <literal>insert="false"</literal> 
-            ‚Ɛݒ肵‚āA”½‘Α¤‚ð‰¼‘z“I‚Éinverse‚É‚µ‚Ü‚·jF
+            <literal>List</literal> (または他のインデックス付きのコレクション)を使うなら、
+            外部キーの <literal>key</literal> カラムを <literal>not null</literal> に設定し、
+            コレクション側が各要素のインデックスをメンテナンスするように、
+            関連を扱う必要があります
+            (<literal>update="false"</literal> かつ <literal>insert="false"</literal> 
+            と設定して、反対側を仮想的にinverseにします):
         </para>
 
         <programlisting><![CDATA[<class name="Person">
@@ -354,21 +356,21 @@
 </class>]]></programlisting>
 
             <para>
-                ‚à‚µŠO•”ƒL[ƒJƒ‰ƒ€‚ª <literal>NOT NULL</literal> ‚Å‚ ‚é‚È‚ç‚΁A
-                ƒRƒŒƒNƒVƒ‡ƒ“ƒ}ƒbƒsƒ“ƒO‚Ì <literal>&lt;key&gt;</literal> —v‘f‚ð 
-                <literal>not-null="true"</literal> ‚É‚·‚邱‚Ƃ͏d—v‚Å‚·B
-                “ü‚êŽq‚É‚È‚Á‚½ <literal>&lt;column&gt;</literal> —v‘f‚¾‚¯‚Å‚Í‚È‚­A
-                <literal>&lt;key&gt;</literal> —v‘f‚à <literal>not-null="true"</literal> 
-                ‚Æ’è‹`‚µ‚È‚¢‚悤‚É‚µ‚Ä‚­‚¾‚³‚¢B
+                もし外部キーカラムが <literal>NOT NULL</literal> であるならば、
+                コレクションマッピングの <literal>&lt;key&gt;</literal> 要素を 
+                <literal>not-null="true"</literal> にすることは重要です。
+                入れ子になった <literal>&lt;column&gt;</literal> 要素だけではなく、
+                <literal>&lt;key&gt;</literal> 要素も <literal>not-null="true"</literal> 
+                と定義しないようにしてください。
             </para>
 
         </sect2>
         
         <sect2 id="assoc-bidirectional-121">
-        <title>ˆê‘Έê</title>
+        <title>一対一</title>
         
         <para>
-            <emphasis>ŠO•”ƒL[‚Ì‘o•ûŒüˆê‘ΈêŠÖ˜A</emphasis> ‚Í”ñí‚Ɉê”Ê“I‚Å‚·B
+            <emphasis>外部キーの双方向一対一関連</emphasis> は非常に一般的です。
         </para>
         
        <programlisting><![CDATA[<class name="Person">
@@ -394,7 +396,7 @@
         ]]></programlisting>
         
         <para>
-            <emphasis>ŽåƒL[‚Ì‘o•ûŒüˆê‘ΈêŠÖ˜A</emphasis> ‚Í“ÁŽê‚ÈIDƒWƒFƒlƒŒ[ƒ^‚ðŽg‚¢‚Ü‚·B
+            <emphasis>主キーの双方向一対一関連</emphasis> は特殊なIDジェネレータを使います。
         </para>
         
        <programlisting><![CDATA[<class name="Person">
@@ -423,15 +425,15 @@
     </sect1>
 
     <sect1 id="assoc-bidirectional-join" revision="1">
-        <title>Œ‹‡ƒe[ƒuƒ‹‚ðŽg‚Á‚½‘o•ûŒüŠÖ˜A</title>
+        <title>結合テーブルを使った双方向関連</title>
         
         <sect2 id="assoc-bidirectional-join-12m">
-        <title>ˆê‘Α½/‘½‘Έê</title>
+        <title>一対多/多対一</title>
         
         <para>
-            <emphasis>Œ‹‡ƒe[ƒuƒ‹‚Ì‘o•ûŒüˆê‘Α½ŠÖ˜A</emphasis> ‚Å‚·B
-            <literal>inverse="true"</literal> ‚ªŠÖ˜A’[AƒRƒŒƒNƒVƒ‡ƒ“AŒ‹‡‚Ì‚¢‚¸‚ê‚©‚É
-            Ý’è‚Å‚«‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+            <emphasis>結合テーブルの双方向一対多関連</emphasis> です。
+            <literal>inverse="true"</literal> が関連端、コレクション、結合のいずれかに
+            設定できることに注意してください。
         </para>
         
         <programlisting><![CDATA[<class name="Person">
@@ -469,11 +471,11 @@
         </sect2>
 
          <sect2 id="assoc-bidirectional-join-121">
-        <title>ˆê‘Έê</title>
+        <title>一対一</title>
         
         <para>
-            <emphasis>Œ‹‡ƒe[ƒuƒ‹‚Ì‘o•ûŒüˆê‘ΈêŠÖ˜A</emphasis> 
-            ‚Í”ñí‚É“ÁŽê‚Å‚·‚ªA‰Â”\‚Å‚·B
+            <emphasis>結合テーブルの双方向一対一関連</emphasis> 
+            は非常に特殊ですが、可能です。
         </para>
         
         <programlisting><![CDATA[<class name="Person">
@@ -515,10 +517,10 @@
         </sect2>
         
         <sect2 id="assoc-bidirectional-join-m2m" revision="1">
-        <title>‘½‘Α½</title>
+        <title>多対多</title>
         
         <para>
-            ÅŒã‚ɁA<emphasis>‘o•ûŒü‘½‘Α½ŠÖ˜A</emphasis> ‚ðŽ¦‚µ‚Ü‚·B
+            最後に、<emphasis>双方向多対多関連</emphasis> を示します。
         </para>
         
         <programlisting><![CDATA[<class name="Person">
@@ -554,15 +556,15 @@
     </sect1>
 
     <sect1 id="assoc-complex">
-        <title>‚æ‚è•¡ŽG‚ÈŠÖ˜Aƒ}ƒbƒsƒ“ƒO</title>
+        <title>より複雑な関連マッピング</title>
         
         <para>
-            ‚æ‚è•¡ŽG‚ÈŠÖ˜AŒ‹‡‚Í <emphasis>‹É‚ß‚Ä</emphasis> ‹H‚Å‚·B
-            ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚ÉSQL•¶‚𖄂ߍž‚Þ‚±‚ƂŁA
-            ‚³‚ç‚É•¡ŽG‚Èó‹µ‚ðˆµ‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
-            —Ⴆ‚΁A<literal>accountNumber</literal>, <literal>effectiveEndDate</literal>, 
-            <literal>effectiveStartDate</literal> ƒJƒ‰ƒ€‚ðŽ‚ÂaccountiŒûÀjî•ñ‚Ì—š—ð‚ðˆµ‚¤ƒe[ƒuƒ‹‚́A
-            ˆÈ‰º‚̂悤‚Ƀ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
+            より複雑な関連結合は <emphasis>極めて</emphasis> 稀です。
+            マッピングドキュメントにSQL文を埋め込むことで、
+            さらに複雑な状況を扱うことができます。
+            例えば、<literal>accountNumber</literal>, <literal>effectiveEndDate</literal>, 
+            <literal>effectiveStartDate</literal> カラムを持つaccount(口座)情報の履歴を扱うテーブルは、
+            以下のようにマッピングします。
         </para>
         
         <programlisting><![CDATA[<properties name="currentAccountKey">
@@ -575,9 +577,9 @@
 <property name="effectiveStateDate" type="date" not-null="true"/>]]></programlisting>
 
         <para>
-            ‚»‚µ‚āAŠÖ˜A‚ð <emphasis>Œ»Žž“_‚Ì</emphasis> ƒCƒ“ƒXƒ^ƒ“ƒX
-            i<literal>effectiveEndDate</literal> ‚ªnull‚Å‚ ‚é‚à‚́j‚Ƀ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
-            ˆÈ‰º‚̂悤‚É‚È‚è‚Ü‚·F
+            そして、関連を <emphasis>現時点の</emphasis> インスタンス
+            (<literal>effectiveEndDate</literal> がnullであるもの)にマッピングします。
+            以下のようになります:
         </para>
         
         <programlisting><![CDATA[<many-to-one name="currentAccountInfo" 
@@ -588,11 +590,11 @@
 </many-to-one>]]></programlisting>
 
         <para>
-            ‚³‚ç‚É•¡ŽG‚È—á‚ł́A<literal>Employeei]‹Æˆõj</literal> ‚Æ <literal>Organizationi‘gDj</literal> 
-            ŠÔ‚ÌŠÖ˜A‚ª <literal>EmploymentiŒÙ—pj</literal> ƒe[ƒuƒ‹‚Å•ÛŽ‚³‚ê‚éê‡‚ð‘z‘œ‚µ‚Ä‚­‚¾‚³‚¢B
-            ‚±‚̃e[ƒuƒ‹‚ɂ͌ٗpƒf[ƒ^‚Ì—š—ð‚ª‚·‚ׂĊ܂܂ê‚Ü‚·B
-            ‚·‚é‚Ə]‹Æˆõ‚Ì <emphasis>Å‚àÅ‹ß‚Ì</emphasis> ŒÙ—pŽÒ‚ð•\‚·ŠÖ˜A
-            iÅ‚àÅ‹ß‚Ì <literal>startDate</literal> ‚ðŽ‚Â‚à‚́j‚́A‚±‚̂悤‚Ƀ}ƒbƒsƒ“ƒO‚Å‚«‚Ü‚·F
+            さらに複雑な例では、<literal>Employee(従業員)</literal> と <literal>Organization(組織)</literal> 
+            間の関連が <literal>Employment(雇用)</literal> テーブルで保持される場合を想像してください。
+            このテーブルには雇用データの履歴がすべて含まれます。
+            すると従業員の <emphasis>最も最近の</emphasis> 雇用者を表す関連
+            (最も最近の <literal>startDate</literal> を持つもの)は、このようにマッピングできます:
         </para>
         
         <programlisting><![CDATA[<join>
@@ -609,8 +611,8 @@
 </join>]]></programlisting>
 
         <para>
-            ‚±‚Ì‹@”\‚Í”ñí‚É‹­—Í‚Å‚·B
-            ‚µ‚©‚µ‚±‚̂悤‚ȏꍇA•’Ê‚ÍHQL‚âcriteriaƒNƒGƒŠ‚ðŽg‚¤•û‚ª‚æ‚èŽÀ‘H“I‚Å‚·B
+            この機能は非常に強力です。
+            しかしこのような場合、普通はHQLやcriteriaクエリを使う方がより実践的です。
         </para>
 
     </sect1>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/basic_mapping.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/basic_mapping.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/basic_mapping.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,25 +1,26 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
 
 <chapter id="mapping">
-    <title>Šî–{“I‚ÈO/Rƒ}ƒbƒsƒ“ƒO</title>
+    <title>基本的なO/Rマッピング</title>
 
     <sect1 id="mapping-declaration" revision="1">
-        <title>ƒ}ƒbƒsƒ“ƒO’è‹`</title>
+        <title>マッピング定義</title>
 
         <para>
-            ƒIƒuƒWƒFƒNƒg/ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ}ƒbƒsƒ“ƒO‚͒ʏíXMLƒhƒLƒ…ƒƒ“ƒg‚Å’è‹`‚µ‚Ü‚·B
-            ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚́A“Ç‚Ý‚â‚·‚­Žèì‹Æ‚ŕҏW‚µ‚â‚·‚¢‚悤‚ɃfƒUƒCƒ“‚³‚ê‚Ä‚¢‚Ü‚·B
-            ƒ}ƒbƒsƒ“ƒOŒ¾Œê‚ÍJava’†SA‚‚܂èƒe[ƒuƒ‹’è‹`‚Å‚Í‚È‚­‰i‘±ƒNƒ‰ƒX‚Ì’è‹`‚ÉŠî‚¢‚č\’z‚³‚ê‚Ä‚¢‚Ü‚·B
+            オブジェクト/リレーショナルマッピングは通常XMLドキュメントで定義します。
+            マッピングドキュメントは、読みやすく手作業で編集しやすいようにデザインされています。
+            マッピング言語はJava中心、つまりテーブル定義ではなく永続クラスの定義に基づいて構築されています。
         </para>
         
         <para>
-            ‘½‚­‚ÌHibernateƒ†[ƒU‚ÍXMLƒ}ƒbƒsƒ“ƒO‚Ì‹Lq‚ðŽèì‹Æ‚ōs‚¢‚Ü‚·‚ªA
-            XDoclet, Middlegen, AndroMDA‚Æ‚¢‚¤‚悤‚ȃ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚𐶐¬‚·‚éƒc[ƒ‹‚ª
-            ‚¢‚­‚‚©‘¶Ý‚µ‚Ü‚·B
+            多くのHibernateユーザはXMLマッピングの記述を手作業で行いますが、
+            XDoclet, Middlegen, AndroMDAというようなマッピングドキュメントを生成するツールが
+            いくつか存在します。
         </para>
 
         <para>
-            ƒTƒ“ƒvƒ‹‚̃}ƒbƒsƒ“ƒO‚©‚çŽn‚ß‚Ü‚µ‚傤F
+            サンプルのマッピングから始めましょう:
         </para>
 
         <programlisting id="mapping-declaration-ex1" revision="1"><![CDATA[<?xml version="1.0"?>
@@ -82,16 +83,16 @@
         </class>
 
         <class name="Dog">
-                <!-- ‚±‚±‚ÉDog—p‚̃}ƒbƒsƒ“ƒO‘‚«‚Ü‚· -->
+                <!-- ここにDog用のマッピング書きます -->
         </class>
 
 </hibernate-mapping>]]></programlisting>
 
         <para>
-             ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚Ì“à—e‚ðà–¾‚µ‚Ü‚·BB
-            ‚½‚¾‚µA‚±‚±‚Å‚ÍHibernate‚ªŽÀsŽž‚ÉŽg‚¤ƒhƒLƒ…ƒƒ“ƒg—v‘f‚Æ‘®«‚ɂ‚¢‚Ä‚Ì‚Ýà–¾‚µ‚Ü‚·B
-            ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚́A‚¢‚­‚‚©‚̃IƒvƒVƒ‡ƒ“‘®«‚Æ—v‘f‚ðŠÜ‚ñ‚Å‚¢‚Ü‚·i—Ⴆ‚Î <literal>not-null</literal> ‘®«jB
-            ‚»‚ê‚ç‚̓XƒL[ƒ}ƒGƒNƒXƒ|[ƒgƒc[ƒ‹‚ªo—Í‚·‚éƒf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚ɉe‹¿‚ð—^‚¦‚é‚à‚Ì‚Å‚·B
+             マッピングドキュメントの内容を説明します。。
+            ただし、ここではHibernateが実行時に使うドキュメント要素と属性についてのみ説明します。
+            マッピングドキュメントは、いくつかのオプション属性と要素を含んでいます(例えば <literal>not-null</literal> 属性)。
+            それらはスキーマエクスポートツールが出力するデータベーススキーマに影響を与えるものです。
             
         </para>
 
@@ -101,51 +102,51 @@
             <title>Doctype</title>
 
             <para>
-                XMLƒ}ƒbƒsƒ“ƒO‚ł́A‚¨Œ©‚¹‚µ‚½‚悤‚ȃhƒLƒ…ƒƒ“ƒgŒ^‚ð•K‚¸’è‹`‚·‚ׂ«‚Å‚·B
-                ŽÀÛ‚ÌDTD‚́Aã‹L‚ÌURL‚Ì <literal>hibernate-x.x.x/src/org/hibernate</literal> ƒfƒBƒŒƒNƒgƒŠA ‚Ü‚½‚Í 
-                <literal>hibernate.jar</literal> “à‚É‚ ‚è‚Ü‚·B
-                Hibernate‚͏í‚ɁA‚»‚̃Nƒ‰ƒXƒpƒX“à‚ÅDTD‚ð’T‚µŽn‚ß‚Ü‚·B
-                ƒCƒ“ƒ^[ƒlƒbƒg‚É‚ ‚éDTDƒtƒ@ƒCƒ‹‚ð’T‚»‚¤‚Æ‚µ‚½‚È‚çA
-                ƒNƒ‰ƒXƒpƒX‚Ì“à—e‚ðŒ©‚ÄADTDéŒ¾‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B
+                XMLマッピングでは、お見せしたようなドキュメント型を必ず定義すべきです。
+                実際のDTDは、上記のURLの <literal>hibernate-x.x.x/src/org/hibernate</literal> ディレクトリ、 または 
+                <literal>hibernate.jar</literal> 内にあります。
+                Hibernateは常に、そのクラスパス内でDTDを探し始めます。
+                インターネットにあるDTDファイルを探そうとしたなら、
+                クラスパスの内容を見て、DTD宣言を確認してください。
             </para>
             
             
             
             <sect3 id="mapping-declaration-entity-resolution">
                 <title>
-                ƒGƒ“ƒeƒBƒeƒBEƒŠƒ]ƒ‹ƒo
+                エンティティ・リゾルバ
                 </title>
                 <para>
-                    ‘Oq‚µ‚½‚悤‚ɁAHibernate‚Í‚Ü‚¸ƒNƒ‰ƒXƒpƒX“à‚ÅDTD‚ð‰ðŒˆ‚µ‚悤‚Æ‚µ‚Ü‚·B
-                    <literal>org.xml.sax.EntityResolver</literal> ‚̃JƒXƒ^ƒ€ŽÀ‘•‚ð
-                    XMLƒtƒ@ƒCƒ‹‚ð“ǂݍž‚Þ‚½‚ß‚ÌSAXReader‚É“o˜^‚·‚邱‚Æ‚É‚æ‚Á‚āADTD‚ð‰ðŒˆ‚µ‚Ü‚·B
-                    ‚±‚̃JƒXƒ^ƒ€‚Ì <literal>EntityResolver</literal> ‚Í2‚‚̈قȂéƒVƒXƒeƒ€ID–¼‘O‹óŠÔ‚ð”FŽ¯‚µ‚Ü‚·B
+                    前述したように、Hibernateはまずクラスパス内でDTDを解決しようとします。
+                    <literal>org.xml.sax.EntityResolver</literal> のカスタム実装を
+                    XMLファイルを読み込むためのSAXReaderに登録することによって、DTDを解決します。
+                    このカスタムの <literal>EntityResolver</literal> は2つの異なるシステムID名前空間を認識します。
                     
                 </para>
                 <itemizedlist>
                     <listitem>
                         <para>
-                            <literal>Hibernate–¼‘O‹óŠÔ</literal> ‚́AƒŠƒ]ƒ‹ƒo‚ª 
-                            <literal>http://hibernate.sourceforge.net/</literal> ‚ÅŽn‚Ü‚éƒVƒXƒeƒ€ID‚É“ž’B‚µ‚½‚Æ‚«‚ɁA
-                            ”FŽ¯‚³‚ê‚Ü‚·B
-                            ‚»‚µ‚ăŠƒ]ƒ‹ƒo‚́AHibernate‚̃Nƒ‰ƒX‚ðƒ[ƒh‚µ‚½ƒNƒ‰ƒXƒ[ƒ_‚ð—p‚¢‚āA
-                            ‚±‚ê‚ç‚̃Gƒ“ƒeƒBƒeƒB‚ð‰ðŒˆ‚µ‚悤‚Æ‚µ‚Ü‚·B
+                            <literal>Hibernate名前空間</literal> は、リゾルバが 
+                            <literal>http://hibernate.sourceforge.net/</literal> で始まるシステムIDに到達したときに、
+                            認識されます。
+                            そしてリゾルバは、Hibernateのクラスをロードしたクラスローダを用いて、
+                            これらのエンティティを解決しようとします。
                         
                         </para>
                     </listitem>
                     <listitem>
                         <para>
-                          <literal>ƒ†[ƒU–¼‘O‹óŠÔ</literal> ‚́AƒŠƒ]ƒ‹ƒo‚ª
-                          URLƒvƒƒgƒRƒ‹‚Ì <literal>classpath://</literal> ‚ðŽg‚Á‚½ƒVƒXƒeƒ€ID‚É“ž’B‚µ‚½‚Æ‚«‚ɁA
-                          ”FŽ¯‚³‚ê‚Ü‚·B‚»‚µ‚ăŠƒ]ƒ‹ƒo‚́A(1)ƒJƒŒƒ“ƒgƒXƒŒƒbƒh‚̃Rƒ“ƒeƒLƒXƒgƒNƒ‰ƒXƒ[ƒ_[A
-                          ‚Ü‚½‚Í(2)Hibernate‚̃Nƒ‰ƒX‚ðƒ[ƒh‚µ‚½ƒNƒ‰ƒXƒ[ƒ_‚ðŽg‚Á‚āA
-                          ‚±‚ê‚ç‚̃Gƒ“ƒeƒBƒeƒB‚ð‰ðŒˆ‚µ‚悤‚Æ‚µ‚Ü‚·B
+                          <literal>ユーザ名前空間</literal> は、リゾルバが
+                          URLプロトコルの <literal>classpath://</literal> を使ったシステムIDに到達したときに、
+                          認識されます。そしてリゾルバは、(1)カレントスレッドのコンテキストクラスローダー、
+                          または(2)Hibernateのクラスをロードしたクラスローダを使って、
+                          これらのエンティティを解決しようとします。
                         
                         </para>
                     </listitem>
                 </itemizedlist>
                 <para>
-                ‰º‹L‚́Aƒ†[ƒU–¼‘O‹óŠÔ‚ðŽg‚Á‚½—á‚Å‚·F
+                下記は、ユーザ名前空間を使った例です:
                 
                 </para>
                 <programlisting><![CDATA[<?xml version="1.0"?>
@@ -164,8 +165,8 @@
     &types;
 </hibernate-mapping>]]></programlisting>
                 <para>
-                ‚±‚±‚Å <literal>types.xml</literal> ‚Í <literal>your.domain</literal> ƒpƒbƒP[ƒW“à‚̃Šƒ\[ƒX‚Å‚ ‚èA
-                ƒJƒXƒ^ƒ€ <xref linkend="mapping-types-custom">typedef</xref> ‚ðŠÜ‚Þ‚Ü‚·B
+                ここで <literal>types.xml</literal> は <literal>your.domain</literal> パッケージ内のリソースであり、
+                カスタム <xref linkend="mapping-types-custom">typedef</xref> を含むます。
                 </para>
             </sect3>            
             
@@ -176,14 +177,14 @@
             <title>hibernate-mapping</title>
 
             <para>
-                ‚±‚Ì—v‘f‚É‚Í‚¢‚­‚‚©ƒIƒvƒVƒ‡ƒ“‘®«‚ª‚ ‚è‚Ü‚·B<literal>schema</literal> ‘®«‚Æ <literal>catalog</literal> ‘®«‚́A
-                ‚±‚̃}ƒbƒsƒ“ƒO‚ªŽQÆ‚·‚éƒe[ƒuƒ‹‚ªA‚±‚Ì‘®«‚É‚æ‚Á‚ÄŽw’肳‚ꂽƒXƒL[ƒ}‚Æ(‚Ü‚½‚Í)ƒJƒ^ƒƒO‚É‘®‚·‚邱‚Æ‚ðŽw’肵‚Ü‚·B
-                ‚±‚Ì‘®«‚ªŽw’肳‚ê‚é‚ƁAƒe[ƒuƒ‹–¼‚Í—^‚¦‚ç‚ꂽƒXƒL[ƒ}–¼‚ƃJƒ^ƒƒO–¼‚ŏCü‚³‚ê‚Ü‚·B‚±‚ê‚ç‚Ì‘®«‚ªŽw’肳‚ê‚Ä‚¢‚È‚¯‚ê‚΁A
-                ƒe[ƒuƒ‹–¼‚͏Cü‚³‚ê‚Ü‚¹‚ñB<literal>default-cascade</literal> ‘®«‚́A
-                <literal>cascade</literal> ‘®«‚ðŽw’肵‚Ä‚¢‚È‚¢ƒvƒƒpƒeƒB‚âƒRƒŒƒNƒVƒ‡ƒ“‚ɁA
-                ‚ǂ̃JƒXƒP[ƒhƒXƒ^ƒCƒ‹‚ðŠ„‚è“–‚Ä‚é‚©‚ðŽw’肵‚Ü‚·B
-                <literal>auto-import</literal> ‘®«‚́A
-                ƒNƒGƒŠŒ¾Œê“à‚ŏCü‚³‚ê‚Ä‚¢‚È‚¢ƒNƒ‰ƒX–¼‚ðAƒfƒtƒHƒ‹ƒg‚ÅŽg‚¦‚é‚悤‚É‚µ‚Ü‚·B
+                この要素にはいくつかオプション属性があります。<literal>schema</literal> 属性と <literal>catalog</literal> 属性は、
+                このマッピングが参照するテーブルが、この属性によって指定されたスキーマと(または)カタログに属することを指定します。
+                この属性が指定されると、テーブル名は与えられたスキーマ名とカタログ名で修飾されます。これらの属性が指定されていなければ、
+                テーブル名は修飾されません。<literal>default-cascade</literal> 属性は、
+                <literal>cascade</literal> 属性を指定していないプロパティやコレクションに、
+                どのカスケードスタイルを割り当てるかを指定します。
+                <literal>auto-import</literal> 属性は、
+                クエリ言語内で修飾されていないクラス名を、デフォルトで使えるようにします。
             </para>
  
              <programlistingco>
@@ -208,62 +209,62 @@
                  <calloutlist>
                      <callout arearefs="hm1">
                          <para>
-                             <literal>schema</literal>iƒIƒvƒVƒ‡ƒ“jFƒf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚Ì–¼‘OB
+                             <literal>schema</literal>(オプション):データベーススキーマの名前。
                          </para>
                      </callout>
                      <callout arearefs="hm2">
                          <para>
-                             <literal>catalog</literal> iƒIƒvƒVƒ‡ƒ“jFƒf[ƒ^ƒx[ƒXƒJƒ^ƒƒO‚Ì–¼‘OB
+                             <literal>catalog</literal> (オプション):データベースカタログの名前。
                          </para>
                      </callout>
                      <callout arearefs="hm3">
                          <para>
-                            <literal>default-cascade</literal> iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>none</literal>jF
-                             ƒfƒtƒHƒ‹ƒg‚̃JƒXƒP[ƒhƒXƒ^ƒCƒ‹B
+                            <literal>default-cascade</literal> (オプション - デフォルトは <literal>none</literal>):
+                             デフォルトのカスケードスタイル。
                          </para>
                      </callout>
                      <callout arearefs="hm4">
                          <para>
-                             <literal>default-access</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>property</literal> jF
-                             Hibernate‚ªƒvƒƒpƒeƒB‚ɃAƒNƒZƒX‚·‚éÛ‚ɍ̂é‚ׂ«í—ªB <literal>PropertyAccessor</literal> 
-                             ‚ðŽÀ‘•‚·‚邱‚ƂŃJƒXƒ^ƒ}ƒCƒY‰Â”\B
+                             <literal>default-access</literal> (オプション - デフォルトは <literal>property</literal> ):
+                             Hibernateがプロパティにアクセスする際に採るべき戦略。 <literal>PropertyAccessor</literal> 
+                             を実装することでカスタマイズ可能。
                              
                          </para>
                      </callout>
                      <callout arearefs="hm5">
                          <para>
-                             <literal>default-lazy</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal> )F
-                              <literal>lazy</literal> ‘®«‚ªŽw’肳‚ê‚Ä‚¢‚È‚¢ƒNƒ‰ƒX‚âƒRƒŒƒNƒVƒ‡ƒ“ƒ}ƒbƒsƒ“ƒO‚ɑ΂·‚éƒfƒtƒHƒ‹ƒg’lB
+                             <literal>default-lazy</literal> (オプション - デフォルトは <literal>true</literal> ):
+                              <literal>lazy</literal> 属性が指定されていないクラスやコレクションマッピングに対するデフォルト値。
                          </para>
                      </callout>
                      <callout arearefs="hm6">
                          <para>
-                             <literal>auto-import</literal> iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal>jF
-                             ƒNƒGƒŠŒ¾Œê“à‚ŁAi‚±‚̃}ƒbƒsƒ“ƒO“à‚̃Nƒ‰ƒX‚́jCü‚³‚ê‚Ä‚¢‚È‚¢ƒNƒ‰ƒX–¼‚ðŽg‚¦‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B
+                             <literal>auto-import</literal> (オプション - デフォルトは <literal>true</literal>):
+                             クエリ言語内で、(このマッピング内のクラスの)修飾されていないクラス名を使えるかどうかを指定します。
                          </para>
                      </callout>
                      <callout arearefs="hm7">
                          <para>
-                             <literal>package</literal> (ƒIƒvƒVƒ‡ƒ“): ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg“à‚ŏCü‚³‚ê‚Ä‚¢‚È‚¢ƒNƒ‰ƒX–¼‚ɑ΂µ‚ÄŠ„‚è“–‚Ä‚éA
-                             ƒpƒbƒP[ƒW‚̐ړªŽ«(prefix)‚ðŽw’肵‚Ü‚·B
+                             <literal>package</literal> (オプション): マッピングドキュメント内で修飾されていないクラス名に対して割り当てる、
+                             パッケージの接頭辞(prefix)を指定します。
                          </para>
                      </callout>
                  </calloutlist>
              </programlistingco>
              
              <para>
-                 iCü‚³‚ê‚Ä‚¢‚È‚¢j“¯‚¶–¼‘O‚̉i‘±ƒNƒ‰ƒX‚ª2‚‚ ‚é‚È‚çA
-                 <literal>auto-import="false"</literal> ‚ðÝ’è‚·‚ׂ«‚Å‚·B
-                 2‚‚̃Nƒ‰ƒX‚ɁhƒCƒ“ƒ|[ƒg‚³‚ꂽh“¯‚¶–¼‘O‚ðŠ„‚è“–‚Ă悤‚Æ‚·‚é‚ƁAHibernate‚Í—áŠO‚ð“Š‚°‚Ü‚·B
+                 (修飾されていない)同じ名前の永続クラスが2つあるなら、
+                 <literal>auto-import="false"</literal> を設定すべきです。
+                 2つのクラスに”インポートされた”同じ名前を割り当てようとすると、Hibernateは例外を投げます。
              </para>
 
              <para>
-                 <literal>hibernate-mapping</literal> —v‘f‚́AÅ‰‚Ì—á‚ÅŽ¦‚µ‚½‚悤‚É‚¢‚­‚‚©‚̉i‘± <literal>&lt;class&gt;</literal> 
-                 ƒ}ƒbƒsƒ“ƒO‚ðƒlƒXƒg‚Å‚«‚Ü‚·B
-                 ‚µ‚©‚µA‚P‚‚̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚Å‚Í‚½‚¾‚ЂƂ‚̉i‘±ƒNƒ‰ƒX(‚Ü‚½‚͂ЂƂ‚̃Nƒ‰ƒXŠK‘w)‚Ƀ}ƒbƒsƒ“ƒO‚·‚é‚悤‚É‚µA
-                 ‚³‚ç‚ɉi‘±ƒX[ƒp[ƒNƒ‰ƒX‚ÌŒã‚ÅŽw’è‚·‚é‚ׂ«‚Å‚µ‚傤(‚¢‚­‚‚©‚̃c[ƒ‹‚Í‚±‚̂悤‚ȃ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ð‘z’肵‚Ä‚¢‚Ü‚·)B
-                 —Ⴆ‚ÎŽŸ‚̂悤‚É‚È‚è‚Ü‚·BF <literal>Cat.hbm.xml</literal> ,
-                  <literal>Dog.hbm.xml</literal> , ‚Ü‚½‚ÍŒp³‚ðŽg‚¤‚È‚ç <literal>Animal.hbm.xml</literal> B
+                 <literal>hibernate-mapping</literal> 要素は、最初の例で示したようにいくつかの永続 <literal>&lt;class&gt;</literal> 
+                 マッピングをネストできます。
+                 しかし、1つのマッピングファイルではただひとつの永続クラス(またはひとつのクラス階層)にマッピングするようにし、
+                 さらに永続スーパークラスの後で指定するべきでしょう(いくつかのツールはこのようなマッピングファイルを想定しています)。
+                 例えば次のようになります。: <literal>Cat.hbm.xml</literal> ,
+                  <literal>Dog.hbm.xml</literal> , または継承を使うなら <literal>Animal.hbm.xml</literal> 。
              </para>
  
         </sect2>
@@ -272,7 +273,7 @@
             <title>class</title>
 
             <para>
-                <literal>class</literal> —v‘f‚ðŽg‚Á‚āA‰i‘±ƒNƒ‰ƒX‚ðéŒ¾‚Å‚«‚Ü‚·B
+                <literal>class</literal> 要素を使って、永続クラスを宣言できます。
             </para>
             
             <programlistingco>
@@ -328,140 +329,140 @@
                 <calloutlist>
                     <callout arearefs="class1">
                         <para>
-                            <literal>name</literal> (ƒIƒvƒVƒ‡ƒ“)F‰i‘±ƒNƒ‰ƒXi‚Ü‚½‚̓Cƒ“ƒ^[ƒtƒFƒCƒXj‚ÌŠ®‘SCüJavaƒNƒ‰ƒX–¼B
-                            ‚à‚µ‚±‚Ì‘®«‚ðŽw’肵‚È‚¯‚ê‚΁APOJO‚Å‚Í‚È‚¢ƒGƒ“ƒeƒBƒeƒB‚ɑ΂·‚éƒ}ƒbƒsƒ“ƒO‚Æ‚µ‚Ĉµ‚í‚ê‚Ü‚·B
+                            <literal>name</literal> (オプション):永続クラス(またはインターフェイス)の完全修飾Javaクラス名。
+                            もしこの属性を指定しなければ、POJOではないエンティティに対するマッピングとして扱われます。
                             
                         </para>
                     </callout>
                     <callout arearefs="class2">
                         <para>
-                           <literal>table</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚͏Cü‚³‚ê‚Ä‚¢‚È‚¢ƒNƒ‰ƒX–¼)Fƒf[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚Ì–¼‘O
+                           <literal>table</literal> (オプション - デフォルトは修飾されていないクラス名):データベーステーブルの名前
                         </para>
                     </callout>
                     <callout arearefs="class3">
                         <para>
-                            <literal>discriminator-value</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓Nƒ‰ƒX–¼)F
-                            ƒ|ƒŠƒ‚[ƒtƒBƒbƒN‚ȐU‚é•‘‚¢‚ÉŽg‚í‚ê‚éŒÂX‚̃TƒuƒNƒ‰ƒX‚ðŽ¯•Ê‚·‚邽‚ß‚Ì’lB
-                            ’l‚Í <literal>null</literal> ‚© <literal>not null</literal> ‚Ì‚¢‚¸‚ê‚©‚ðŽæ‚è‚Ü‚·B
+                            <literal>discriminator-value</literal> (オプション - デフォルトはクラス名):
+                            ポリモーフィックな振る舞いに使われる個々のサブクラスを識別するための値。
+                            値は <literal>null</literal> か <literal>not null</literal> のいずれかを取ります。
                         </para>
                     </callout>
                     <callout arearefs="class4">
                         <para>
-                            <literal>mutable</literal> (ƒIƒvƒVƒ‡ƒ“A ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal> )F
-                            ‚»‚̃Nƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ªXV‰Â”\i‚Ü‚½‚Í•s‰Â”\j‚Å‚ ‚邱‚Æ‚ðŽw’肵‚Ü‚·B
+                            <literal>mutable</literal> (オプション、 デフォルトは <literal>true</literal> ):
+                            そのクラスのインスタンスが更新可能(または不可能)であることを指定します。
                         </para>
                     </callout>    
                     <callout arearefs="class5">
                         <para>
-                            <literal>schema</literal> iƒIƒvƒVƒ‡ƒ“jF
-                            ƒ‹[ƒg‚Ì <literal>&lt;hibernate-mapping&gt;</literal> —v‘f‚ÅŽw’肳‚ꂽƒXƒL[ƒ}–¼‚ðƒI[ƒo[ƒ‰ƒCƒh‚µ‚Ü‚·B
+                            <literal>schema</literal> (オプション):
+                            ルートの <literal>&lt;hibernate-mapping&gt;</literal> 要素で指定されたスキーマ名をオーバーライドします。
                         </para>
                     </callout>                
                     <callout arearefs="class6">
                         <para>
-                            <literal>catalog</literal> iƒIƒvƒVƒ‡ƒ“jFƒ‹[ƒg‚Ì <literal>&lt;hibernate-mapping&gt;</literal> 
-                            —v‘f‚ÅŽw’肳‚ꂽƒJƒ^ƒƒO–¼‚ðƒI[ƒo[ƒ‰ƒCƒh‚µ‚Ü‚·B
+                            <literal>catalog</literal> (オプション):ルートの <literal>&lt;hibernate-mapping&gt;</literal> 
+                            要素で指定されたカタログ名をオーバーライドします。
                         </para>
                     </callout>                
                     <callout arearefs="class7">
                         <para>
-                            <literal>proxy</literal> iƒIƒvƒVƒ‡ƒ“jF’x‰„‰Šú‰»ƒvƒƒLƒV‚ÉŽg‚¤ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽw’肵‚Ü‚·B
-                            ‰i‘±‰»‚·‚éƒNƒ‰ƒX–¼‚»‚Ì‚à‚Ì‚ðŽw’è‚·‚邱‚Æ‚à‰Â”\‚Å‚·B
+                            <literal>proxy</literal> (オプション):遅延初期化プロキシに使うインターフェイスを指定します。
+                            永続化するクラス名そのものを指定することも可能です。
                         </para>
                     </callout>    
                     <callout arearefs="class8">
                         <para>
-                            <literal>dynamic-update</literal> iƒIƒvƒVƒ‡ƒ“A ƒfƒtƒHƒ‹ƒg‚Í <literal>false</literal> jF
-                            ’l‚ª•ÏX‚³‚ꂽƒJƒ‰ƒ€‚¾‚¯‚ðŠÜ‚ÞSQL‚Ì <literal>UPDATE</literal> •¶‚ðAŽÀsŽž‚ɐ¶¬‚·‚邱‚Æ‚ðŽw’肵‚Ü‚·B
+                            <literal>dynamic-update</literal> (オプション、 デフォルトは <literal>false</literal> ):
+                            値が変更されたカラムだけを含むSQLの <literal>UPDATE</literal> 文を、実行時に生成することを指定します。
                         </para>
                     </callout>    
                     <callout arearefs="class9">
                         <para>
-                            <literal>dynamic-insert</literal> iƒIƒvƒVƒ‡ƒ“, ƒfƒtƒHƒ‹ƒg‚Í <literal>false</literal> jF
-                            ’l‚ªnull‚Å‚Í‚È‚¢ƒJƒ‰ƒ€‚¾‚¯‚ðŠÜ‚ÞSQL‚Ì <literal>INSERT</literal> •¶‚ðAŽÀsŽž‚ɐ¶¬‚·‚邱‚Æ‚ðŽw’肵‚Ü‚·B
+                            <literal>dynamic-insert</literal> (オプション, デフォルトは <literal>false</literal> ):
+                            値がnullではないカラムだけを含むSQLの <literal>INSERT</literal> 文を、実行時に生成することを指定します。
                         </para>
                     </callout>    
                     <callout arearefs="class10">
                         <para>
-                            <literal>select-before-update</literal> (ƒIƒvƒVƒ‡ƒ“, ƒfƒtƒHƒ‹ƒg‚Í <literal>false</literal>): 
-                            ƒIƒuƒWƒFƒNƒg‚ª•ÏX‚³‚ꂽ‚Ì‚ªŠmŽÀ‚Å‚È‚¢‚È‚ç‚΁AHibernate‚ªSQL‚Ì <literal>UPDATE</literal> ‚ð 
-                            <emphasis>Œˆ‚µ‚ÄŽÀs‚µ‚È‚¢</emphasis> ‚±‚Æ‚ðŽw’肵‚Ü‚·B
-                            ‚ ‚é“Á’è‚̏ꍇ(ŽÀÛ“I‚ɂ́AˆêŽžƒIƒuƒWƒFƒNƒg‚ª <literal>update()</literal> ‚ðŽg‚¢A
-                            V‚µ‚¢ƒZƒbƒVƒ‡ƒ“‚ÆŠÖ˜A•t‚¯‚ç‚ꂽŽž‚¾‚¯)A<literal>UPDATE</literal> ‚ªŽÀÛ‚É•K—v‚©‚Ç‚¤‚©‚ðŒˆ’è‚·‚邽‚߂ɁA
-                            Hibernate‚ª—]•ª‚ÈSQL‚Ì <literal>SELECT</literal> •¶‚ðŽÀs‚·‚邱‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B
+                            <literal>select-before-update</literal> (オプション, デフォルトは <literal>false</literal>): 
+                            オブジェクトが変更されたのが確実でないならば、HibernateがSQLの <literal>UPDATE</literal> を 
+                            <emphasis>決して実行しない</emphasis> ことを指定します。
+                            ある特定の場合(実際的には、一時オブジェクトが <literal>update()</literal> を使い、
+                            新しいセッションと関連付けられた時だけ)、<literal>UPDATE</literal> が実際に必要かどうかを決定するために、
+                            Hibernateが余分なSQLの <literal>SELECT</literal> 文を実行することを意味します。
                         </para>
                     </callout>    
                     <callout arearefs="class11">
                         <para>
-                            (optional, ƒfƒtƒHƒ‹ƒg‚Å‚Í <literal>implicit</literal> ): implicitiˆÃ–فj‚©expliciti–¾Ž¦j‚́A
-                            ‚Ç‚¿‚ç‚̃NƒGƒŠƒ|ƒŠƒ‚[ƒtƒBƒYƒ€‚ðŽg‚¤‚©Œˆ’肵‚Ü‚·B
+                            (optional, デフォルトでは <literal>implicit</literal> ): implicit(暗黙)かexplicit(明示)の、
+                            どちらのクエリポリモーフィズムを使うか決定します。
                         </para>
                     </callout>    
                     <callout arearefs="class12">
                         <para>
-                            <literal>where</literal> iƒIƒvƒVƒ‡ƒ“jF
-                            ‚±‚̃Nƒ‰ƒX‚̃IƒuƒWƒFƒNƒg‚ðŒŸõ‚·‚é‚Æ‚«‚ÉŽg—p‚·‚éA”CˆÓ‚ÌSQL‚Ì <literal>WHERE</literal>  ðŒ‚ðŽw’肵‚Ü‚·B
+                            <literal>where</literal> (オプション):
+                            このクラスのオブジェクトを検索するときに使用する、任意のSQLの <literal>WHERE</literal>  条件を指定します。
                         </para>
                     </callout>                 
                     <callout arearefs="class13">
                         <para>
-                            <literal>persister</literal> iƒIƒvƒVƒ‡ƒ“jFƒJƒXƒ^ƒ€ <literal>ClassPersister</literal> ‚ðŽw’肵‚Ü‚·B
+                            <literal>persister</literal> (オプション):カスタム <literal>ClassPersister</literal> を指定します。
                         </para>
                     </callout>                 
                     <callout arearefs="class14">
                         <para>
-                            <literal>batch-size</literal> iƒIƒvƒVƒ‡ƒ“, ƒfƒtƒHƒ‹ƒg‚Í <literal>1</literal> jF
-                            Ž¯•ÊŽq‚Å‚±‚̃Nƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚𕜌³‚·‚é‚Æ‚«‚́uƒoƒbƒ`ƒTƒCƒYv‚ðŽw’肵‚Ü‚·B
+                            <literal>batch-size</literal> (オプション, デフォルトは <literal>1</literal> ):
+                            識別子でこのクラスのインスタンスを復元するときの「バッチサイズ」を指定します。
                         </para>
                     </callout>                 
                    <callout arearefs="class15">
                         <para>
-                            <literal>optimistic-lock</literal> iƒIƒvƒVƒ‡ƒ“,ƒfƒtƒHƒ‹ƒg‚Í <literal>version</literal> jF
-                            ŠyŠÏƒƒbƒNí—ª‚ðŒˆ’è‚µ‚Ü‚·B
+                            <literal>optimistic-lock</literal> (オプション,デフォルトは <literal>version</literal> ):
+                            楽観ロック戦略を決定します。
                         </para>
                     </callout>    
                     <callout arearefs="class16">
                         <para>
-                            <literal>lazy</literal> iƒIƒvƒVƒ‡ƒ“jF <literal>lazy="false"</literal> ‚Ɛݒ肷‚邱‚ƂŁA
-                            ’x‰„ƒtƒFƒbƒ`‚ª‚Å‚«‚È‚­‚È‚è‚Ü‚·B
+                            <literal>lazy</literal> (オプション): <literal>lazy="false"</literal> と設定することで、
+                            遅延フェッチができなくなります。
                         </para>
                     </callout>    
                     <callout arearefs="class17">
                         <para>
-                            <literal>entity-name</literal> iƒIƒvƒVƒ‡ƒ“AƒfƒtƒHƒ‹ƒg‚̓Nƒ‰ƒX–¼jF
-                            Hibernate3‚ł̓Nƒ‰ƒX‚ª•¡”‰ñƒ}ƒbƒsƒ“ƒO‚Å‚«iê‡‚É‚æ‚Á‚Ă͈Ⴄƒe[ƒuƒ‹‚ɑ΂µ‚Ä‚àjA
-                            JavaƒŒƒxƒ‹‚ÅMap‚âXML‚Å•\Œ»‚³‚ê‚éƒGƒ“ƒeƒBƒeƒBƒ}ƒbƒsƒ“ƒO‚ª‰Â”\‚Å‚·B
-                            ‚±‚ê‚ç‚̏ꍇAƒGƒ“ƒeƒBƒeƒB‚ɑ΂µ‚Ä”CˆÓ‚Ì–¼‘O‚ðA–¾Ž¦“I‚É•t‚¯‚È‚­‚Ä‚Í‚È‚è‚Ü‚¹‚ñB
-                            Ú‚µ‚­‚Í <xref linkend="persistent-classes-dynamicmodels"/> ‚Æ <xref linkend="xml"/> ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                            <literal>entity-name</literal> (オプション、デフォルトはクラス名):
+                            Hibernate3ではクラスが複数回マッピングでき(場合によっては違うテーブルに対しても)、
+                            JavaレベルでMapやXMLで表現されるエンティティマッピングが可能です。
+                            これらの場合、エンティティに対して任意の名前を、明示的に付けなくてはなりません。
+                            詳しくは <xref linkend="persistent-classes-dynamicmodels"/> と <xref linkend="xml"/> を参照してください。
                         </para>
                     </callout>
                     <callout arearefs="class18">
                         <para>
-                            <literal>check</literal> iƒIƒvƒVƒ‡ƒ“jFŽ©“®“I‚ɃXƒL[ƒ}‚𐶐¬‚·‚邽‚߂ɁA
-                            •¡”s‚Ì <emphasis>check</emphasis> §–ñ‚𐶐¬‚·‚éSQLŽ®B
+                            <literal>check</literal> (オプション):自動的にスキーマを生成するために、
+                            複数行の <emphasis>check</emphasis> 制約を生成するSQL式。
                         </para>
                     </callout>
                     <callout arearefs="class19">
                         <para>
-                            <literal>rowid</literal> iƒIƒvƒVƒ‡ƒ“jFHibernate‚́A‚»‚ê‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚éƒf[ƒ^ƒx[ƒX‚ÅROWID‚Æ
-                            ŒÄ‚΂ê‚é‚à‚Ì‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
-                            —Ⴆ‚ÎOracle‚ðŽg‚Á‚Ä‚¢‚é‚Æ‚«A‚±‚̃IƒvƒVƒ‡ƒ“‚É <literal>rowid</literal> ‚ðÝ’è‚·‚ê‚΁A
-                            Hiberante‚Íupdate‚ð‚‘¬‰»‚·‚邽‚ß‚É <literal>rowid</literal> ‚Æ‚¢‚¤“Á•Ê‚ȃJƒ‰ƒ€‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
-                            ROWID‚͏ڍׂȎÀ‘•‚Å‚ ‚èA•Û‘¶‚³‚ꂽƒ^ƒvƒ‹‚Ì•¨—“I‚Ȉʒu‚ð•\‚µ‚Ä‚¢‚Ü‚·B
+                            <literal>rowid</literal> (オプション):Hibernateは、それをサポートしているデータベースでROWIDと
+                            呼ばれるものを使うことができます。
+                            例えばOracleを使っているとき、このオプションに <literal>rowid</literal> を設定すれば、
+                            Hiberanteはupdateを高速化するために <literal>rowid</literal> という特別なカラムを使うことができます。
+                            ROWIDは詳細な実装であり、保存されたタプルの物理的な位置を表しています。
                         </para>
                     </callout>
                     <callout arearefs="class20">
                         <para>
-                            <literal>subselect</literal> iƒIƒvƒVƒ‡ƒ“jF•s•Ï‚©‚“ǂݎæ‚èê—p‚Å‚ ‚éƒGƒ“ƒeƒBƒeƒB‚ð
-                            ƒf[ƒ^ƒx[ƒX‚Ì•›–⍇‚¹isubselectj‚Ƀ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
-                            ‚à‚µŒ³‚̃e[ƒuƒ‹‚Ì‘ã‚í‚è‚Ƀrƒ…[‚ðŽ‚¿‚½‚¯‚ê‚ΗL—p‚Å‚·‚ªA
-                            ‚»‚¤‚Å‚È‚¢‚Ì‚È‚ç—L—p‚Å‚Í‚ ‚è‚Ü‚¹‚ñB‚æ‚èÚ‚µ‚¢î•ñ‚͉º‹L‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                            <literal>subselect</literal> (オプション):不変かつ読み取り専用であるエンティティを
+                            データベースの副問合せ(subselect)にマッピングします。
+                            もし元のテーブルの代わりにビューを持ちたければ有用ですが、
+                            そうでないのなら有用ではありません。より詳しい情報は下記を参照してください。
                         </para>
                     </callout>
                     <callout arearefs="class21">
                         <para>
-                            <literal>abstract</literal> iƒIƒvƒVƒ‡ƒ“jF
-                            <literal>&lt;union-subclass&gt;</literal> ŠK‘w“à‚Ì’ŠÛƒX[ƒp[ƒNƒ‰ƒX‚Ƀ}[ƒN‚·‚邽‚ß‚ÉŽg‚¢‚Ü‚·B
+                            <literal>abstract</literal> (オプション):
+                            <literal>&lt;union-subclass&gt;</literal> 階層内の抽象スーパークラスにマークするために使います。
                         </para>
                     </callout>
 
@@ -469,102 +470,102 @@
             </programlistingco>
            
             <para>
-                ‰i‘±ƒNƒ‰ƒX‚Ì–¼‘O‚ɃCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽw’肵‚Ä‚à‚Ü‚Á‚½‚­–â‘è‚ ‚è‚Ü‚¹‚ñB
-                ‚»‚Ì‚Æ‚«‚Í <literal>&lt;subclass&gt;</literal> —v‘f‚ðŽg‚Á‚āA
-                ‚»‚̃Cƒ“ƒ^[ƒtƒFƒCƒX‚ðŽÀ‘•‚·‚éƒNƒ‰ƒX‚ð’è‹`‚µ‚Ä‚­‚¾‚³‚¢B
-                <emphasis>static</emphasis> ‚È“à•”ƒNƒ‰ƒX‚Å‚à‰i‘±‰»‚Å‚«‚Ü‚·B
-                ‚»‚Ì‚Æ‚«‚Í•W€Œ`Ž®A—Ⴆ‚Î <literal>eg.Foo$Bar</literal> ‚ðŽg‚Á‚ăNƒ‰ƒX–¼‚ðŽw’肵‚Ä‚­‚¾‚³‚¢B
+                永続クラスの名前にインターフェイスを指定してもまったく問題ありません。
+                そのときは <literal>&lt;subclass&gt;</literal> 要素を使って、
+                そのインターフェイスを実装するクラスを定義してください。
+                <emphasis>static</emphasis> な内部クラスでも永続化できます。
+                そのときは標準形式、例えば <literal>eg.Foo$Bar</literal> を使ってクラス名を指定してください。
             </para>
 
             <para>
-                <literal>mutable="false"</literal> Žw’è‚ð‚µ‚½•s•ÏƒNƒ‰ƒX‚́A
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚æ‚éXV‚âíœ‚ªo—ˆ‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·B
-                ‚±‚ê‚É‚æ‚èAHibernate‚ªƒpƒtƒH[ƒ}ƒ“ƒX‚ð­‚µ‰ü‘P‚µ‚Ü‚·B
+                <literal>mutable="false"</literal> 指定をした不変クラスは、
+                アプリケーションによる更新や削除が出来ないことがあります。
+                これにより、Hibernateがパフォーマンスを少し改善します。
             </para>
             
             <para>
-                ƒIƒvƒVƒ‡ƒ“‚Ì <literal>proxy</literal> ‘®«‚É‚æ‚èAƒNƒ‰ƒX‚̉i‘±ƒCƒ“ƒXƒ^ƒ“ƒX‚Ì’x‰„‰Šú‰»‚ª‰Â”\‚É‚È‚è‚Ü‚·B
-                Hibernate‚͍ŏ‰‚ɁAŽw’肵‚½ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽÀ‘•‚µ‚½CGLIBƒvƒƒLƒV‚ð•Ô‚µ‚Ü‚·B
-                ŽÀÛ‚̉i‘±ƒIƒuƒWƒFƒNƒg‚̓vƒƒLƒV‚̃ƒ\ƒbƒh‚ðŒÄ‚яo‚·‚Æ‚«‚Ƀ[ƒh‚µ‚Ü‚·B
-                ˆÈ‰º‚́u’x‰„‰Šú‰»‚Ì‚½‚߂̃vƒƒLƒVv‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                オプションの <literal>proxy</literal> 属性により、クラスの永続インスタンスの遅延初期化が可能になります。
+                Hibernateは最初に、指定したインターフェイスを実装したCGLIBプロキシを返します。
+                実際の永続オブジェクトはプロキシのメソッドを呼び出すときにロードします。
+                以下の「遅延初期化のためのプロキシ」を参照してください。
             </para>
             
             <para>
-                <emphasis>ˆÃ–Ù“I</emphasis> ƒ|ƒŠƒ‚[ƒtƒBƒYƒ€‚Ƃ́AŽŸ‚Ì“ñ‚‚ðˆÓ–¡‚µ‚Ä‚¢‚Ü‚·B
-                ˆê‚‚̓Nƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ªAƒX[ƒp[ƒNƒ‰ƒX‚âŽÀ‘•‚µ‚½ƒCƒ“ƒ^[ƒtƒFƒCƒXA‚Ü‚½‚»‚̃Nƒ‰ƒX‚ðŽw’è‚·‚éƒNƒGƒŠ‚É‚æ‚Á‚Ä•Ô‚³‚ê‚邱‚ƂŁA
-                ‚à‚¤ˆê‚‚͂»‚̃Nƒ‰ƒX‚̃TƒuƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ªA‚»‚̃Nƒ‰ƒXŽ©g‚ðŽw’肵‚½ƒNƒGƒŠ‚É‚æ‚Á‚Ä•Ô‚³‚ê‚邱‚Æ‚Å‚·B
-                ‚Ü‚½A<emphasis>–¾Ž¦“I</emphasis> ƒ|ƒŠƒ‚[ƒtƒBƒYƒ€‚Ƃ́AŽŸ‚Ì“ñ‚‚ðˆÓ–¡‚µ‚Ä‚¢‚Ü‚·B
-                ˆê‚‚̓Nƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ªA‚»‚̃Nƒ‰ƒX‚𖾎¦“I‚ÉŽw’肵‚½ƒNƒGƒŠ‚É‚æ‚Á‚Ä‚Ì‚Ý•Ô‚³‚ê‚邱‚ƂŁA
-                ‚à‚¤ˆê‚‚̓Nƒ‰ƒX‚ðŽw’肵‚½ƒNƒGƒŠ‚ªA<literal>&lt;class&gt;</literal> —v‘f‚Ì’†‚Å <literal>&lt;subclass&gt;</literal> ‚â 
-                <literal>&lt;joined-subclass&gt;</literal> ‚ƃ}ƒbƒsƒ“ƒO‚³‚ê‚Ä‚¢‚éƒTƒuƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚¾‚¯‚ð•Ô‚·‚±‚Æ‚Å‚·B
-                ‚Ù‚Æ‚ñ‚Ç‚Ì—p“r‚ł̓fƒtƒHƒ‹ƒg‚Ì <literal>polymorphism="implicit"</literal> ‚ª“KØ‚Å‚·B
-                –¾Ž¦“I‚ȃ|ƒŠƒ‚[ƒtƒBƒYƒ€‚́A2‚‚̈á‚Á‚½ƒNƒ‰ƒX‚ª“¯‚¶ƒe[ƒuƒ‹‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ä‚¢‚é‚Æ‚«‚É—L—p‚Å‚·
-                i‚±‚ê‚É‚æ‚Á‚ăe[ƒuƒ‹ƒJƒ‰ƒ€‚̃TƒuƒZƒbƒg‚ðŠÜ‚ށAuŒy—ʂȁvƒNƒ‰ƒX‚ª‰Â”\‚É‚È‚è‚Ü‚·jB
+                <emphasis>暗黙的</emphasis> ポリモーフィズムとは、次の二つを意味しています。
+                一つはクラスのインスタンスが、スーパークラスや実装したインターフェイス、またそのクラスを指定するクエリによって返されることで、
+                もう一つはそのクラスのサブクラスのインスタンスが、そのクラス自身を指定したクエリによって返されることです。
+                また、<emphasis>明示的</emphasis> ポリモーフィズムとは、次の二つを意味しています。
+                一つはクラスのインスタンスが、そのクラスを明示的に指定したクエリによってのみ返されることで、
+                もう一つはクラスを指定したクエリが、<literal>&lt;class&gt;</literal> 要素の中で <literal>&lt;subclass&gt;</literal> や 
+                <literal>&lt;joined-subclass&gt;</literal> とマッピングされているサブクラスのインスタンスだけを返すことです。
+                ほとんどの用途ではデフォルトの <literal>polymorphism="implicit"</literal> が適切です。
+                明示的なポリモーフィズムは、2つの違ったクラスが同じテーブルにマッピングされているときに有用です
+                (これによってテーブルカラムのサブセットを含む、「軽量な」クラスが可能になります)。
             </para>
             
             <para>
-                <literal>persister</literal> ‘®«‚ðŽw’è‚·‚邱‚ƂŁAƒNƒ‰ƒX‚̉i‘±‰»í—ª‚ðƒJƒXƒ^ƒ}ƒCƒY‚Å‚«‚Ü‚·B
-                —Ⴆ‚Î <literal>org.hibernate.persister.EntityPersister</literal> Ž©g‚̃TƒuƒNƒ‰ƒX‚ðŽw’肵‚½‚èA
-                ‚Ü‚½—Ⴆ‚΃XƒgƒAƒhƒvƒƒV[ƒWƒƒƒR[ƒ‹Aƒtƒ‰ƒbƒgƒtƒ@ƒCƒ‹‚ÖƒVƒŠƒAƒ‰ƒCƒYA
-                LDAP‚È‚Ç‚ð’Ê‚µ‚½‰i‘±«‚ðŽÀ‘•‚·‚é <literal>org.hibernate.persister.ClassPersister</literal> 
-                ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ÌŠ®‘S‚ɐV‚µ‚¢ŽÀ‘•‚ð’ñ‹Ÿ‚Å‚«‚Ü‚·BŠÈ’P‚È—á‚Æ‚µ‚Ä <literal>org.hibernate.test.CustomPersister</literal> 
-                ‚ðŒ©‚Ä‚­‚¾‚³‚¢i‚±‚ê‚Í <literal>Hashtable</literal> ‚́u‰i‘±‰»v‚Å‚·jB
+                <literal>persister</literal> 属性を指定することで、クラスの永続化戦略をカスタマイズできます。
+                例えば <literal>org.hibernate.persister.EntityPersister</literal> 自身のサブクラスを指定したり、
+                また例えばストアドプロシージャコール、フラットファイルへシリアライズ、
+                LDAPなどを通した永続性を実装する <literal>org.hibernate.persister.ClassPersister</literal> 
+                インターフェイスの完全に新しい実装を提供できます。簡単な例として <literal>org.hibernate.test.CustomPersister</literal> 
+                を見てください(これは <literal>Hashtable</literal> の「永続化」です)。
                 
             </para>
             
             <para>
-                <literal>dynamic-update</literal> ‚Æ <literal>dynamic-insert</literal> ‚̐ݒè‚̓TƒuƒNƒ‰ƒX‚ÉŒp³‚³‚ê‚Ü‚¹‚ñB
-                ‚»‚Ì‚½‚ß <literal>&lt;subclass&gt;</literal> ‚â <literal>&lt;joined-subclass&gt;</literal> —v‘f‚ðŽw’è‚·‚邱‚Æ‚ào—ˆ‚Ü‚·B
-                ‚±‚ê‚ç‚̐ݒè‚̓pƒtƒH[ƒ}ƒ“ƒX‚ðŒüã‚³‚¹‚鎖‚à‚ ‚è‚Ü‚·‚ªA—Ž‚Æ‚·‚±‚Æ‚à‚ ‚è‚Ü‚·‚̂ŁATd‚ÉŽg—p‚µ‚Ä‚­‚¾‚³‚¢B
+                <literal>dynamic-update</literal> と <literal>dynamic-insert</literal> の設定はサブクラスに継承されません。
+                そのため <literal>&lt;subclass&gt;</literal> や <literal>&lt;joined-subclass&gt;</literal> 要素を指定することも出来ます。
+                これらの設定はパフォーマンスを向上させる事もありますが、落とすこともありますので、慎重に使用してください。
             </para>
             
             <para>
-                <literal>select-before-update</literal> ‚ÌŽg—p‚͒ʏíƒpƒtƒH[ƒ}ƒ“ƒX‚ð—Ž‚Æ‚µ‚Ü‚·B
-                ‚à‚µ <literal>Session</literal> ‚Ö•ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚̃Oƒ‰ƒt‚ðÄ’ljÁ‚·‚é‚È‚çA
-                ƒf[ƒ^ƒx[ƒXXV‚̃gƒŠƒK‚ð•s•K—v‚ɌĂяo‚·‚Ì‚ð”ð‚¯‚é‚Æ‚¢‚¤“_‚ŁA”ñí‚É—L—p‚Å‚·B
+                <literal>select-before-update</literal> の使用は通常パフォーマンスを落とします。
+                もし <literal>Session</literal> へ分離インスタンスのグラフを再追加するなら、
+                データベース更新のトリガを不必要に呼び出すのを避けるという点で、非常に有用です。
             </para>
             
             <para>
-                <literal>dynamic-update</literal> ‚ð—LŒø‚É‚·‚ê‚΁AŠyŠÏƒƒbƒNí—ª‚ð‘I‚Ô‚±‚Æ‚É‚È‚è‚Ü‚·B
+                <literal>dynamic-update</literal> を有効にすれば、楽観ロック戦略を選ぶことになります。
             </para>
             <itemizedlist>
                 <listitem>
                     <para>
-                        <literal>version</literal> ƒo[ƒWƒ‡ƒ“/ƒ^ƒCƒ€ƒXƒ^ƒ“ƒvƒJƒ‰ƒ€‚ðƒ`ƒFƒbƒN‚µ‚Ü‚·
+                        <literal>version</literal> バージョン/タイムスタンプカラムをチェックします
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        <literal>all</literal> ‚·‚ׂẴJƒ‰ƒ€‚ðƒ`ƒFƒbƒN‚µ‚Ü‚·B
+                        <literal>all</literal> すべてのカラムをチェックします。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        <literal>dirty</literal> •ÏX‚µ‚½ƒJƒ‰ƒ€‚ðƒ`ƒFƒbƒN‚µA“¯ŽžXV‚Å‚«‚é‚悤‚É‚µ‚Ü‚·B
+                        <literal>dirty</literal> 変更したカラムをチェックし、同時更新できるようにします。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        <literal>none</literal> ŠyŠÏƒƒbƒN‚ðŽg—p‚µ‚Ü‚¹‚ñ
+                        <literal>none</literal> 楽観ロックを使用しません
                     </para>
                 </listitem>
             </itemizedlist>
             <para>
-                Hibernate‚ÅŠyŠÏ“IƒƒbƒNí—ª‚ðŽg‚¤‚È‚çAƒo[ƒWƒ‡ƒ“/ƒ^ƒCƒ€ƒXƒ^ƒ“ƒvƒJƒ‰ƒ€‚ðŽg‚¤‚±‚Æ‚ð
-                 <emphasis> ”ñí‚É</emphasis> ‹­‚­‚¨Š©‚ß‚µ‚Ü‚·B
-                ŠyŠÏ“IƒƒbƒN‚̓pƒtƒH[ƒ}ƒ“ƒX‚ÌŠÏ“_‚©‚ç‚àÅ“K‚Å‚ ‚èA‚³‚ç‚É•ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚ւ̏C³
-                i‚‚܂è <literal>Session.marge()</literal> ‚ªŽg‚í‚ê‚é‚Æ‚«j
-                ‚𐳊m‚Ɉµ‚¤‚±‚Æ‚Ì‚Å‚«‚é—Bˆê‚̐헪‚Å‚à‚ ‚è‚Ü‚·B
+                Hibernateで楽観的ロック戦略を使うなら、バージョン/タイムスタンプカラムを使うことを
+                 <emphasis> 非常に</emphasis> 強くお勧めします。
+                楽観的ロックはパフォーマンスの観点からも最適であり、さらに分離インスタンスへの修正
+                (つまり <literal>Session.marge()</literal> が使われるとき)
+                を正確に扱うことのできる唯一の戦略でもあります。
             </para>
             
             <para>
-                Hibernate‚̃}ƒbƒsƒ“ƒO‚É‚Æ‚Á‚ărƒ…[‚Æ•’ʂ̃e[ƒuƒ‹‚̊ԂɈႢ‚Í‚È‚­A
-                ƒf[ƒ^ƒx[ƒXƒŒƒxƒ‹‚Å‚Í“§‰ß“I‚Å‚·
-                i‚½‚¾‚µƒrƒ…[‚ðŠ®‘S‚ɂ̓Tƒ|[ƒg‚µ‚Ä‚¢‚È‚¢DBMS‚à‚ ‚è‚Ü‚·B
-                “Á‚ɁAXV‚Ì‚ ‚éƒrƒ…[‚ɑ΂µ‚Ä‚Í‚»‚¤‚Å‚·jB
-                ƒrƒ…[‚ðŽg‚¢‚½‚­‚Ä‚àAƒf[ƒ^ƒx[ƒX‚ō쐬‚Å‚«‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·
-                i—Ⴆ‚΁AƒŒƒKƒV[ƒXƒL[ƒ}‚̏ꍇjB
-                ‚±‚̏ꍇ‚ɂ́A•s•Ï‚©‚“ǂݎæ‚èê—p‚̃Gƒ“ƒeƒBƒeƒB‚É—^‚¦‚ç‚ꂽSQL‚Ì•›–⍇‚¹•¶‚ðƒ}ƒbƒv‚Å‚«‚Ü‚·B
+                Hibernateのマッピングにとってビューと普通のテーブルの間に違いはなく、
+                データベースレベルでは透過的です
+                (ただしビューを完全にはサポートしていないDBMSもあります。
+                特に、更新のあるビューに対してはそうです)。
+                ビューを使いたくても、データベースで作成できないことがあります
+                (例えば、レガシースキーマの場合)。
+                この場合には、不変かつ読み取り専用のエンティティに与えられたSQLの副問合せ文をマップできます。
             </para>
 
             <programlisting><![CDATA[<class name="Summary">
@@ -581,10 +582,10 @@
 </class>]]></programlisting>
 
             <para>
-                ƒe[ƒuƒ‹‚ð‚±‚ÌƒGƒ“ƒeƒBƒeƒB‚Æ“¯Šú‚·‚é‚悤‚É’è‹`‚µ‚Ä‚­‚¾‚³‚¢B
-                ƒI[ƒgƒtƒ‰ƒbƒVƒ…‚ªŠmŽÀ‚É‹N‚±‚é‚悤‚ɁA‚Ü‚½“±oƒGƒ“ƒeƒBƒeƒB‚ɑ΂·‚éƒNƒGƒŠ‚ªŒÃ‚¢ƒf[ƒ^‚ð
-                •Ô‚³‚È‚¢‚悤‚É‚·‚邽‚ß‚Å‚·B
-                <literal>&lt;subselect&gt;</literal> ‚Í‘®«‚ƃlƒXƒg‚µ‚½ƒ}ƒbƒsƒ“ƒO‘®«‚Ì‚Ç‚¿‚ç‚Å‚à—˜—p‚Å‚«‚Ü‚·B
+                テーブルをこのエンティティと同期するように定義してください。
+                オートフラッシュが確実に起こるように、また導出エンティティに対するクエリが古いデータを
+                返さないようにするためです。
+                <literal>&lt;subselect&gt;</literal> は属性とネストしたマッピング属性のどちらでも利用できます。
             </para>
 
         </sect2>
@@ -593,9 +594,9 @@
             <title>id</title>
 
             <para>
-                ƒ}ƒbƒv‚³‚ꂽƒNƒ‰ƒX‚̓f[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚ÌŽåƒL[ƒJƒ‰ƒ€‚ð’è‹` <emphasis>‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ</emphasis> B
-                ‚Ù‚Æ‚ñ‚ǂ̃Nƒ‰ƒX‚ɂ̓Cƒ“ƒXƒ^ƒ“ƒX‚̃†ƒj[ƒN‚ÈŽ¯•ÊŽq‚ð•ÛŽ‚·‚éJavaBeansƒXƒ^ƒCƒ‹‚̃vƒƒpƒeƒB‚à‚ ‚è‚Ü‚·B
-                <literal>&lt;id&gt;</literal> —v‘f‚́A‚»‚̃vƒƒpƒeƒB‚©‚çŽåƒL[ƒJƒ‰ƒ€‚ւ̃}ƒbƒsƒ“ƒO‚ð’è‹`‚µ‚Ü‚·B
+                マップされたクラスはデータベーステーブルの主キーカラムを定義 <emphasis>しなければなりません</emphasis> 。
+                ほとんどのクラスにはインスタンスのユニークな識別子を保持するJavaBeansスタイルのプロパティもあります。
+                <literal>&lt;id&gt;</literal> 要素は、そのプロパティから主キーカラムへのマッピングを定義します。
             </para>
             
             <programlistingco>
@@ -619,60 +620,60 @@
                 <calloutlist>
                     <callout arearefs="id1">
                         <para>
-                            <literal>name</literal>iƒIƒvƒVƒ‡ƒ“jFŽ¯•ÊŽqƒvƒƒpƒeƒB‚Ì–¼‘OB
+                            <literal>name</literal>(オプション):識別子プロパティの名前。
                         </para>
                     </callout>
                     <callout arearefs="id2">
                         <para>
-                            <literal>type</literal>iƒIƒvƒVƒ‡ƒ“jFHibernate‚ÌŒ^‚ðŽ¦‚·–¼‘OB
+                            <literal>type</literal>(オプション):Hibernateの型を示す名前。
                         </para>
                     </callout>
                     <callout arearefs="id3">
                         <para>
-                             <literal>column</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓vƒƒpƒeƒB–¼jF
-                            ŽåƒL[ƒJƒ‰ƒ€‚Ì–¼‘OB
+                             <literal>column</literal>(オプション - デフォルトはプロパティ名):
+                            主キーカラムの名前。
                         </para>
                     </callout>
                     <callout arearefs="id4">
                         <para>
-                            <literal>unsaved-value</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Ì’l‚ÍsensiblejF
-                            ƒCƒ“ƒXƒ^ƒ“ƒX‚ªV‚µ‚­ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽ
-                            iƒZ[ƒu‚³‚ê‚Ä‚¢‚È‚¢j‚±‚Æ‚ðŽ¦‚·AŽ¯•ÊŽqƒvƒƒpƒeƒB‚Ì’lB
-                            ˆÈ‘O‚ÌSession‚ŃZ[ƒu‚Ü‚½‚̓[ƒh‚³‚ꂽˆêŽž“IƒCƒ“ƒXƒ^ƒ“ƒX‚Æ‹æ•Ê‚·‚邽‚ß‚É
-                            Žg‚¢‚Ü‚·B
+                            <literal>unsaved-value</literal>(オプション - デフォルトの値はsensible):
+                            インスタンスが新しくインスタンス化された
+                            (セーブされていない)ことを示す、識別子プロパティの値。
+                            以前のSessionでセーブまたはロードされた一時的インスタンスと区別するために
+                            使います。
                         </para>
                     </callout>            
                    <callout arearefs="id5">
                         <para>
-                            <literal>access</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>property</literal> jF
-                            ƒvƒƒpƒeƒB‚Ì’l‚ÖƒAƒNƒZƒX‚·‚邽‚ß‚ÉHibernate‚ªŽg‚¤í—ª‚Å‚·B
+                            <literal>access</literal>(オプション - デフォルトは <literal>property</literal> ):
+                            プロパティの値へアクセスするためにHibernateが使う戦略です。
                         </para>
                     </callout>
                 </calloutlist>
             </programlistingco>
             
             <para>
-                 <literal>name</literal> ‘®«‚ª‚È‚¯‚ê‚΁AƒNƒ‰ƒX‚É‚ÍŽ¯•ÊŽqƒvƒƒpƒeƒB‚ª‚È‚¢‚à‚Ì‚Æ‚Ý‚È‚³‚ê‚Ü‚·B
+                 <literal>name</literal> 属性がなければ、クラスには識別子プロパティがないものとみなされます。
             </para>
             
             <para>
-                <literal>unsaved-value</literal> ‘®«‚ÍHibernate3‚Å‚Í‚Ù‚Æ‚ñ‚ǂ̏ꍇA•K—v‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
+                <literal>unsaved-value</literal> 属性はHibernate3ではほとんどの場合、必要ではありません。
             </para>
 
              <para>
-                •¡‡ƒL[‚ðŽ‚ÂƒŒƒKƒV[ƒf[ƒ^‚ɃAƒNƒZƒX‚Å‚«‚é‚悤‚ɁA
-                <literal>&lt;composite-id&gt;</literal> ‚Æ‚¢‚¤‘ã‘ւ̃}ƒbƒsƒ“ƒO’è‹`‚ª‚ ‚è‚Ü‚·B
-                ‚µ‚©‚µ‘¼‚Ì—p“r‚Ö‚ÌŽg—p‚Í‘S‚­‚¨‚·‚·‚ß‚Å‚«‚Ü‚¹‚ñB
+                複合キーを持つレガシーデータにアクセスできるように、
+                <literal>&lt;composite-id&gt;</literal> という代替のマッピング定義があります。
+                しかし他の用途への使用は全くおすすめできません。
             </para>
             
             <sect3 id="mapping-declaration-id-generator" revision="2">
-                <title>ƒWƒFƒlƒŒ[ƒ^</title>
+                <title>ジェネレータ</title>
 
                 <para>
-                    ƒIƒvƒVƒ‡ƒ“‚Ì <literal>&lt;generator&gt;</literal> Žq—v‘f‚́A
-                    ‰i‘±ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚̃†ƒj[ƒN‚ÈŽ¯•ÊŽq‚𐶐¬‚·‚邽‚ß‚ÉŽg‚¤AJavaƒNƒ‰ƒX‚ðŽw’肵‚Ü‚·B
-                    ƒWƒFƒlƒŒ[ƒ^ƒCƒ“ƒXƒ^ƒ“ƒX‚̐ݒèA‚à‚µ‚­‚͏‰Šú‰»‚Ƀpƒ‰ƒ[ƒ^‚ª•K—v‚Å‚ ‚ê‚΁A<literal>&lt;param&gt;</literal> 
-                    —v‘f‚ðŽg‚Á‚Ä“n‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B
+                    オプションの <literal>&lt;generator&gt;</literal> 子要素は、
+                    永続クラスのインスタンスのユニークな識別子を生成するために使う、Javaクラスを指定します。
+                    ジェネレータインスタンスの設定、もしくは初期化にパラメータが必要であれば、<literal>&lt;param&gt;</literal> 
+                    要素を使って渡すことができます。
                 </para>
 
                 <programlisting><![CDATA[<id name="id" type="long" column="cat_id">
@@ -683,11 +684,11 @@
 </id>]]></programlisting>
 
                 <para>
-                    ‚·‚ׂẴWƒFƒlƒŒ[ƒ^‚́AƒCƒ“ƒ^[ƒtƒFƒCƒX 
-                    <literal>org.hibernate.id.IdentifierGenerator</literal> ‚ðŽÀ‘•‚µ‚Ü‚·B
-                    ‚±‚ê‚Í‚Æ‚Ä‚à’Pƒ‚ȃCƒ“ƒ^[ƒtƒFƒCƒX‚Ȃ̂ŁA“Á•Ê‚ÈŽÀ‘•‚ð“ÆŽ©‚É—pˆÓ‚·‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚à‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-                    ‚µ‚©‚µHibernate‚Í‘g‚ݍž‚Ý‚ÌŽÀ‘•‚ð‚¢‚­‚‚à—pˆÓ‚µ‚Ä‚¢‚Ü‚·B
-                    ‘g‚ݍž‚݂̃WƒFƒlƒŒ[ƒ^‚ɂ͈ȉº‚̃Vƒ‡[ƒgƒJƒbƒg–¼‚ª‚ ‚è‚Ü‚·F
+                    すべてのジェネレータは、インターフェイス 
+                    <literal>org.hibernate.id.IdentifierGenerator</literal> を実装します。
+                    これはとても単純なインターフェイスなので、特別な実装を独自に用意するアプリケーションもあるかもしれません。
+                    しかしHibernateは組み込みの実装をいくつも用意しています。
+                    組み込みのジェネレータには以下のショートカット名があります:
 
                     <variablelist>
                         <varlistentry>
@@ -695,9 +696,9 @@
                         <listitem>
                             <para>
                                 <literal>long</literal> , <literal>short</literal> , 
-                                <literal>int</literal> Œ^‚ÌŽ¯•ÊŽq‚𐶐¬‚µ‚Ü‚·B
-                                ‚±‚ê‚ç‚Í‘¼‚̃vƒƒZƒX‚ª“¯‚¶ƒe[ƒuƒ‹‚Ƀf[ƒ^‚ð‘}“ü‚µ‚È‚¢‚Æ‚«‚¾‚¯ƒ†ƒj[ƒN‚Å‚·B
-                                <emphasis>ƒNƒ‰ƒXƒ^“à‚Å‚ÍŽg‚í‚È‚¢‚Å‚­‚¾‚³‚¢</emphasis> B
+                                <literal>int</literal> 型の識別子を生成します。
+                                これらは他のプロセスが同じテーブルにデータを挿入しないときだけユニークです。
+                                <emphasis>クラスタ内では使わないでください</emphasis> 。
                             </para>
                         </listitem>
                         </varlistentry>
@@ -705,10 +706,10 @@
                         <term><literal>identity</literal></term>
                         <listitem>
                             <para>
-                                DB2, MySQL, MS SQL Server, Sybase, HypersonicSQL‚ÌŽ¯•ÊŽqƒJƒ‰ƒ€‚ð
-                                ƒTƒ|[ƒg‚µ‚Ü‚·B
-                                •Ô‚³‚ê‚鎯•ÊŽq‚ÌŒ^‚Í <literal>long</literal> , <literal>short</literal> , 
-                                <literal>int</literal> ‚Ì‚¢‚¸‚ê‚©‚Å‚·B
+                                DB2, MySQL, MS SQL Server, Sybase, HypersonicSQLの識別子カラムを
+                                サポートします。
+                                返される識別子の型は <literal>long</literal> , <literal>short</literal> , 
+                                <literal>int</literal> のいずれかです。
                             </para>
                         </listitem>
                         </varlistentry>
@@ -716,9 +717,9 @@
                         <term><literal>sequence</literal></term>
                         <listitem>
                             <para>
-                                  DB2, PostgreSQL, Oracle, SAP DB, McKoi‚̃V[ƒPƒ“ƒX‚âAInterbase‚̃WƒFƒlƒŒ[ƒ^‚ðŽg—p‚µ‚Ü‚·B
-                                  •Ô‚³‚ê‚鎯•ÊŽq‚ÌŒ^‚Í <literal>long</literal> , <literal>short</literal> , 
-                                <literal>int</literal> ‚Ì‚¢‚¸‚ê‚©‚Å‚·B
+                                  DB2, PostgreSQL, Oracle, SAP DB, McKoiのシーケンスや、Interbaseのジェネレータを使用します。
+                                  返される識別子の型は <literal>long</literal> , <literal>short</literal> , 
+                                <literal>int</literal> のいずれかです。
                             </para>
                         </listitem>
                         </varlistentry>
@@ -727,11 +728,11 @@
                         <listitem>
                             <para id="mapping-declaration-id-hilodescription" revision="1">
                                  <literal>long</literal> , <literal>short</literal> , 
-                                <literal>int</literal> Œ^‚ÌŽ¯•ÊŽq‚ðŒø—¦“I‚ɐ¶¬‚·‚éhi/loƒAƒ‹ƒSƒŠƒYƒ€‚ðŽg‚¢‚Ü‚·B
-                                hi’l‚̃\[ƒX‚Æ‚µ‚āAƒe[ƒuƒ‹‚ƃJƒ‰ƒ€‚ð—^‚¦‚Ü‚·(ƒfƒtƒHƒ‹ƒg‚Å‚Í‚»‚ꂼ‚ê <literal>hibernate_unique_key</literal> ‚Æ 
-                                <literal>next_hi</literal> )B
+                                <literal>int</literal> 型の識別子を効率的に生成するhi/loアルゴリズムを使います。
+                                hi値のソースとして、テーブルとカラムを与えます(デフォルトではそれぞれ <literal>hibernate_unique_key</literal> と 
+                                <literal>next_hi</literal> )。
                                
-                                hi/loƒAƒ‹ƒSƒŠƒYƒ€‚Í“Á’è‚̃f[ƒ^ƒx[ƒX‚ɑ΂µ‚Ă̂݃†ƒj[ƒN‚ÈŽ¯•ÊŽq‚𐶐¬‚µ‚Ü‚·B
+                                hi/loアルゴリズムは特定のデータベースに対してのみユニークな識別子を生成します。
                             </para>
                         </listitem>
                         </varlistentry>
@@ -740,8 +741,8 @@
                         <listitem>
                             <para>
                                 <literal>long</literal> , <literal>short</literal> , 
-                                <literal>int</literal> Œ^‚ÌŽ¯•ÊŽq‚ðŒø—¦“I‚ɐ¶¬‚·‚éhi/loƒAƒ‹ƒSƒŠƒYƒ€‚ðŽg‚¢‚Ü‚·B
-                                Žw’肳‚ꂽƒf[ƒ^ƒx[ƒXƒV[ƒPƒ“ƒX‚ð—^‚¦‚Ü‚·B
+                                <literal>int</literal> 型の識別子を効率的に生成するhi/loアルゴリズムを使います。
+                                指定されたデータベースシーケンスを与えます。
                                 
                             </para>
                         </listitem>
@@ -750,8 +751,8 @@
                         <term><literal>uuid</literal></term>
                         <listitem>
                             <para>
-                                (IPƒAƒhƒŒƒX‚ªŽg—p‚³‚ê‚é)ƒlƒbƒgƒ[ƒN“à‚цƒj[ƒN‚È•¶Žš—ñŒ^‚ÌŽ¯•ÊŽq‚𐶐¬‚·‚邽‚߂ɁA
-                                128ƒrƒbƒg‚ÌUUIDƒAƒ‹ƒSƒŠƒYƒ€‚ðŽg—p‚µ‚Ü‚·BUUID‚Í’·‚³32‚Ì16i”Žš‚Ì•¶Žš—ñ‚Æ‚µ‚ăGƒ“ƒR[ƒh‚³‚ê‚Ü‚·B
+                                (IPアドレスが使用される)ネットワーク内でユニークな文字列型の識別子を生成するために、
+                                128ビットのUUIDアルゴリズムを使用します。UUIDは長さ32の16進数字の文字列としてエンコードされます。
                             </para>
                         </listitem>
                         </varlistentry>
@@ -759,7 +760,7 @@
                         <term><literal>guid</literal></term>
                         <listitem>
                             <para>
-                                MS SQLƒT[ƒo‚ÆMySQL‚Ńf[ƒ^ƒx[ƒX‚ª¶¬‚·‚éGUID•¶Žš—ñ‚ðŽg—p‚µ‚Ü‚·B
+                                MS SQLサーバとMySQLでデータベースが生成するGUID文字列を使用します。
                             </para>
                         </listitem>
                         </varlistentry>
@@ -767,8 +768,8 @@
                         <term><literal>native</literal></term>
                         <listitem>
                             <para>
-                                Žg—p‚·‚éƒf[ƒ^ƒx[ƒX‚̐«”\‚É‚æ‚è <literal>identity</literal> , <literal>sequence</literal> , 
-                                <literal>hilo</literal> ‚Ì‚¢‚¸‚ê‚©‚ª‘I‚΂ê‚Ü‚·B
+                                使用するデータベースの性能により <literal>identity</literal> , <literal>sequence</literal> , 
+                                <literal>hilo</literal> のいずれかが選ばれます。
                             </para>
                         </listitem>
                         </varlistentry>
@@ -776,9 +777,9 @@
                         <term><literal>assigned</literal></term>
                         <listitem>
                             <para>
-                                <literal>save()</literal> ‚ªŒÄ‚΂ê‚é‘O‚ɁA
-                                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒIƒuƒWƒFƒNƒg‚ÉŽ¯•ÊŽq‚ð‘ã“ü‚Å‚«‚é‚悤‚É‚µ‚Ü‚·B
-                                <literal>&lt;generator&gt;</literal> ‚ªŽw’肳‚ê‚Ä‚¢‚È‚¯‚ê‚΁A‚±‚ꂪƒfƒtƒHƒ‹ƒg‚̐헪‚É‚È‚è‚Ü‚·B
+                                <literal>save()</literal> が呼ばれる前に、
+                                アプリケーションがオブジェクトに識別子を代入できるようにします。
+                                <literal>&lt;generator&gt;</literal> が指定されていなければ、これがデフォルトの戦略になります。
                             </para>
                         </listitem>
                         </varlistentry>
@@ -786,8 +787,8 @@
                         <term><literal>select</literal></term>
                         <listitem>
                             <para>
-                                ‚ ‚郆ƒj[ƒNƒL[‚É‚æ‚és‚Ì‘I‘ð‚ÆŽåƒL[‚Ì’l‚Ì•œŒ³‚É‚æ‚èA
-                                ƒf[ƒ^ƒx[ƒXƒgƒŠƒK‚ªŠ„‚è“–‚Ä‚½ŽåƒL[‚ðŽæ“¾‚µ‚Ü‚·B
+                                あるユニークキーによる行の選択と主キーの値の復元により、
+                                データベーストリガが割り当てた主キーを取得します。
                             </para>
                         </listitem>
                         </varlistentry>
@@ -795,8 +796,8 @@
                         <term><literal>foreign</literal></term>
                         <listitem>
                             <para>
-                                ‘¼‚ÌŠÖ˜AƒIƒuƒWƒFƒNƒg‚ÌŽ¯•ÊŽq‚ðŽg‚¢‚Ü‚·B
-                                •’ʂ́A<literal>&lt;one-to-one&gt;</literal> ŽåƒL[ŠÖ˜A‚Æ‘g‚ݍ‡‚킹‚ÄŽg‚¢‚Ü‚·B
+                                他の関連オブジェクトの識別子を使います。
+                                普通は、<literal>&lt;one-to-one&gt;</literal> 主キー関連と組み合わせて使います。
                             </para>
                         </listitem>
                         </varlistentry>
@@ -806,14 +807,14 @@
             </sect3>
             
             <sect3 id="mapping-declaration-id-hilo" revision="1">
-                <title>Hi/lo ƒAƒ‹ƒSƒŠƒYƒ€</title>
+                <title>Hi/lo アルゴリズム</title>
                 <para>
-                    <literal>hilo</literal> ‚Æ <literal>seqhilo</literal> ƒWƒFƒlƒŒ[ƒ^‚́A
-                    Ž¯•ÊŽq¶¬‚Ì‘ã•\“I‚ȃAƒvƒ[ƒ`‚Å‚ ‚éhi/loƒAƒ‹ƒSƒŠƒYƒ€‚Ì2‚‚̑ã‘ÖŽÀ‘•‚ð’ñ‹Ÿ‚µ‚Ü‚·B
+                    <literal>hilo</literal> と <literal>seqhilo</literal> ジェネレータは、
+                    識別子生成の代表的なアプローチであるhi/loアルゴリズムの2つの代替実装を提供します。
                     
-                    1”Ô–Ú‚ÌŽÀ‘•‚́AŽŸ‰ñ‚É—˜—p‚³‚ê‚é"hi"’l‚ð•ÛŽ‚·‚éu“Á•Ê‚ȁvƒf[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚ð
-                    •K—v‚Æ‚µ‚Ü‚·B
-                    2”Ô–Ú‚ÌŽÀ‘•‚́AOracleƒXƒ^ƒCƒ‹‚̃V[ƒPƒ“ƒX‚ðŽg‚¢‚Ü‚·iƒTƒ|[ƒg‚³‚ê‚Ä‚¢‚éê‡jB
+                    1番目の実装は、次回に利用される"hi"値を保持する「特別な」データベーステーブルを
+                    必要とします。
+                    2番目の実装は、Oracleスタイルのシーケンスを使います(サポートされている場合)。
                 </para>
 
                 <programlisting><![CDATA[<id name="id" type="long" column="cat_id">
@@ -832,31 +833,31 @@
 </id>]]></programlisting>
 
                 <para>
-                    Žc”O‚È‚ª‚çHibernate‚Ö‚Ì“ÆŽ©‚Ì <literal>Connection</literal> ‚ð’ñ‹Ÿ‚·‚é‚Æ‚«‚ɂ́A<literal>hilo</literal> ‚ðŽg‚¦‚Ü‚¹‚ñB
-                    Hibernate‚ªJTA‚ŃŠƒXƒg‚³‚ê‚Ä‚¢‚éÚ‘±‚ðŽæ“¾‚·‚邽‚߂ɃAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo[‚̃f[ƒ^ƒ\[ƒX‚ðŽg—p‚µ‚Ä‚¢‚é‚Æ‚«‚ɂ́A
-                    <literal>hibernate.transaction.manager_lookup_class</literal> ‚ð“KØ‚ɐݒ肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+                    残念ながらHibernateへの独自の <literal>Connection</literal> を提供するときには、<literal>hilo</literal> を使えません。
+                    HibernateがJTAでリストされている接続を取得するためにアプリケーションサーバーのデータソースを使用しているときには、
+                    <literal>hibernate.transaction.manager_lookup_class</literal> を適切に設定しなければなりません。
                 </para>
             </sect3>
             
             <sect3 id="mapping-declaration-id-uuid">
-                <title>UUID ƒAƒ‹ƒSƒŠƒYƒ€</title>
+                <title>UUID アルゴリズム</title>
                 <para>
-                    UUID‚ɂ͈ȉº‚Ì‚à‚Ì‚ªŠÜ‚Ü‚ê‚Ü‚·F
-                    IPƒAƒhƒŒƒXAJVM‚̃Xƒ^[ƒgƒAƒbƒvƒ^ƒCƒ€i4•ª‚Ì1•b‚̐³Šm‚³jA
-                    ƒVƒXƒeƒ€ŽžŠÔAiJVM‚ɑ΂µ‚ă†ƒj[ƒN‚ȁjƒJƒEƒ“ƒ^’lB
-                    JavaƒR[ƒh‚©‚çMACƒAƒhƒŒƒX‚⃁ƒ‚ƒŠƒAƒhƒŒƒX‚ðŽæ“¾‚·‚邱‚Æ‚Í‚Å‚«‚È‚¢‚̂ŁA
-                    JNI‚ªŽg‚¦‚È‚¢‚Æ‚«‚̍ŗǂ̕û–@‚Å‚·B
+                    UUIDには以下のものが含まれます:
+                    IPアドレス、JVMのスタートアップタイム(4分の1秒の正確さ)、
+                    システム時間、(JVMに対してユニークな)カウンタ値。
+                    JavaコードからMACアドレスやメモリアドレスを取得することはできないので、
+                    JNIが使えないときの最良の方法です。
                 </para>
             </sect3>
 
             <sect3 id="mapping-declaration-id-sequences">
-            <title>Ž¯•ÊŽqƒJƒ‰ƒ€‚ƃV[ƒPƒ“ƒX</title>
+            <title>識別子カラムとシーケンス</title>
                 <para>
-                    Ž¯•ÊŽqƒJƒ‰ƒ€‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚éƒf[ƒ^ƒx[ƒXiDB2, MySQL, Sybase, MS SQLj‚ł́A
-                    <literal>identity</literal> ƒL[¶¬‚ðŽg‚¦‚Ü‚·B
-                    ƒV[ƒPƒ“ƒX‚ðƒTƒ|[ƒg‚·‚éƒf[ƒ^ƒx[ƒXiDB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DBj‚ł́A
-                    <literal>sequence</literal> ƒXƒ^ƒCƒ‹‚̃L[¶¬‚ðŽg‚¦‚Ü‚·B
-                    ‚Ç‚¿‚ç‚̐헪‚àAV‚µ‚¢ƒIƒuƒWƒFƒNƒg‚ð‘}“ü‚·‚邽‚߂ɁASQLƒNƒGƒŠ‚ð2‚•K—v‚Æ‚µ‚Ü‚·B
+                    識別子カラムをサポートしているデータベース(DB2, MySQL, Sybase, MS SQL)では、
+                    <literal>identity</literal> キー生成を使えます。
+                    シーケンスをサポートするデータベース(DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB)では、
+                    <literal>sequence</literal> スタイルのキー生成を使えます。
+                    どちらの戦略も、新しいオブジェクトを挿入するために、SQLクエリを2つ必要とします。
                 </para>
 
                 <programlisting><![CDATA[<id name="id" type="long" column="person_id">
@@ -870,36 +871,36 @@
 </id>]]></programlisting>
             
                 <para>
-                    ƒNƒƒXƒvƒ‰ƒbƒgƒtƒH[ƒ€‚ÌŠJ”­‚ł́A<literal>native</literal> í—ª‚Í 
+                    クロスプラットフォームの開発では、<literal>native</literal> 戦略は 
                     <literal>identity</literal> , <literal>sequence</literal> , 
-                    <literal>hilo</literal> í—ª‚Ì’†‚©‚ç1‚‚ð‘I‘ð‚µ‚Ü‚·‚ªA
-                    ‚±‚ê‚ÍŽg—p‚µ‚Ä‚¢‚éƒf[ƒ^ƒx[ƒX‚Ì”\—͂Ɉˑ¶‚µ‚Ü‚·B
+                    <literal>hilo</literal> 戦略の中から1つを選択しますが、
+                    これは使用しているデータベースの能力に依存します。
                 </para>
             </sect3>
             
             <sect3 id="mapping-declaration-id-assigned">
-                <title>Ž¯•ÊŽq‚ÌŠ„‚è“–‚Ä</title>
+                <title>識別子の割り当て</title>
                 <para>
-                   ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÉŽ¯•ÊŽq‚ðŠ„‚è“–‚Ä‚³‚¹‚½‚¢‚Ì‚Å‚ ‚ê‚Î(Hibernate‚ª¶¬‚·‚é‚à‚Ì‚Å‚Í‚È‚­jA
-                    <literal>assigned</literal> ƒWƒFƒlƒŒ[ƒ^‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
-                    ‚±‚Ì“Á•Ê‚ȃWƒFƒlƒŒ[ƒ^‚́A‚·‚łɃIƒuƒWƒFƒNƒg‚ÌŽ¯•ÊŽqƒvƒƒpƒeƒB‚É‘ã“ü‚³‚ꂽ’l‚ð
-                    Ž¯•ÊŽq‚ÉŽg‚¢‚Ü‚·B‚±‚̃WƒFƒlƒŒ[ƒ^‚ÍŽåƒL[‚ª‘㗝ƒL[‚Ì‘ã‚í‚è‚ÉŽ©‘RƒL[‚Å‚ ‚éê‡‚ÉŽg—p‚µ‚Ü‚·B
-                    <literal>&lt;generator&gt;</literal> —v‘f‚ðŽw’肵‚È‚¢ê‡‚̃fƒtƒHƒ‹ƒg‚Ì“®ì‚É‚È‚è‚Ü‚·B
+                   アプリケーションに識別子を割り当てさせたいのであれば(Hibernateが生成するものではなく)、
+                    <literal>assigned</literal> ジェネレータを使うことができます。
+                    この特別なジェネレータは、すでにオブジェクトの識別子プロパティに代入された値を
+                    識別子に使います。このジェネレータは主キーが代理キーの代わりに自然キーである場合に使用します。
+                    <literal>&lt;generator&gt;</literal> 要素を指定しない場合のデフォルトの動作になります。
                 </para>
                 
                 <para>
-                    <literal>assigned</literal> ƒWƒFƒlƒŒ[ƒ^‚ð‘I‘ð‚·‚é‚ƁA
-                    Hibernate‚Í <literal>unsaved-value="undefined"</literal> ‚ðŽg—p‚µ‚Ü‚·B
-                    ‚»‚µ‚āAƒo[ƒWƒ‡ƒ“‚âƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚̃vƒƒpƒeƒB‚ª‚È‚¢ê‡‚â <literal>Interceptor.isUnsaved()</literal> 
-                    ‚ð’è‹`‚µ‚È‚©‚Á‚½ê‡‚ɂ́AƒCƒ“ƒXƒ^ƒ“ƒX‚ªˆêŽž“I(transient)‚È‚à‚Ì‚Å‚ ‚é‚Ì‚©A
-                    ‚Ü‚½‚̓ZƒbƒVƒ‡ƒ“‚©‚番—£(detached)‚µ‚½‚à‚Ì‚©‚Ç‚¤‚©‚ðŒˆ‚ß‚é‚½‚߂ɁAƒf[ƒ^ƒx[ƒX‚𒲂ׂ܂·B
+                    <literal>assigned</literal> ジェネレータを選択すると、
+                    Hibernateは <literal>unsaved-value="undefined"</literal> を使用します。
+                    そして、バージョンやタイムスタンプのプロパティがない場合や <literal>Interceptor.isUnsaved()</literal> 
+                    を定義しなかった場合には、インスタンスが一時的(transient)なものであるのか、
+                    またはセッションから分離(detached)したものかどうかを決めるために、データベースを調べます。
                 </para>
             </sect3>
 
             <sect3 id="mapping-declaration-id-select">
-                <title>ƒgƒŠƒK‚É‚æ‚芄‚è“–‚Ä‚ç‚ꂽŽåƒL[</title>
+                <title>トリガにより割り当てられた主キー</title>
                 <para>
-                    ƒŒƒKƒV[ƒXƒL[ƒ}‚Ì‚½‚ß‚É‚Ì‚ÝŽw’肵‚Ü‚·(Hibernate‚̓gƒŠƒK‚ðŽg‚Á‚ÄDDL‚𐶐¬‚µ‚Ü‚¹‚ñ)B
+                    レガシースキーマのためにのみ指定します(Hibernateはトリガを使ってDDLを生成しません)。
                 </para>
 
                 <programlisting><![CDATA[<id name="id" type="long" column="person_id">
@@ -909,9 +910,9 @@
 </id>]]></programlisting>
 
                 <para>
-                    ã‚Ì—á‚Ì’†‚ŁAƒNƒ‰ƒX‚ÅŽ©‘RƒL[‚Æ‚µ‚Ä’è‹`‚³‚ꂽ
-                    <literal>socialSecurityNumber</literal> ‚Æ‚¢‚¤–¼‘O‚̃†ƒj[ƒN‚È’l‚̃vƒƒpƒeƒB‚ƁA
-                    ’l‚ªƒgƒŠƒK‚É‚æ‚萶¬‚³‚ê‚é <literal>person_id</literal> ‚Æ‚¢‚¤–¼‘O‚̑㗝ƒL[‚ª‚ ‚è‚Ü‚·B
+                    上の例の中で、クラスで自然キーとして定義された
+                    <literal>socialSecurityNumber</literal> という名前のユニークな値のプロパティと、
+                    値がトリガにより生成される <literal>person_id</literal> という名前の代理キーがあります。
                 </para>
                 
             </sect3>
@@ -934,11 +935,11 @@
 </composite-id>]]></programlisting>
 
             <para>
-                •¡‡ƒL[‚Ì‚ ‚éƒe[ƒuƒ‹‚ɑ΂µA
-                Ž¯•ÊŽqƒvƒƒpƒeƒB‚Æ‚µ‚ăNƒ‰ƒX‚Ì•¡”‚̃vƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-                <literal>&lt;composite-id&gt;</literal> —v‘f‚́AŽq—v‘f‚Æ‚µ‚Ä 
-                <literal>&lt;key-property&gt;</literal> ƒvƒƒpƒeƒBƒ}ƒbƒsƒ“ƒO‚Æ 
-                <literal>&lt;key-many-to-one&gt;</literal> ƒ}ƒbƒsƒ“ƒO‚ðŽó‚¯“ü‚ê‚Ü‚·B
+                複合キーのあるテーブルに対し、
+                識別子プロパティとしてクラスの複数のプロパティをマッピングすることができます。
+                <literal>&lt;composite-id&gt;</literal> 要素は、子要素として 
+                <literal>&lt;key-property&gt;</literal> プロパティマッピングと 
+                <literal>&lt;key-many-to-one&gt;</literal> マッピングを受け入れます。
             </para>
             
             <programlisting><![CDATA[<composite-id>
@@ -947,27 +948,27 @@
 </composite-id>]]></programlisting>
 
             <para>
-                 •¡‡Ž¯•ÊŽq‚Ì“™‰¿«‚ðŽÀ‘•‚·‚邽‚߂ɂ́A‰i‘±ƒNƒ‰ƒX‚ª <literal>equals()</literal> ‚Æ 
-                <literal>hashCode()</literal> ‚ðƒI[ƒo[ƒ‰ƒCƒh <emphasis>‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ</emphasis> B
-                ‚Ü‚½ <literal>Serializable</literal> ‚àŽÀ‘•‚µ‚È‚¯‚ê‚΂¢‚¯‚Ü‚¹‚ñB
+                 複合識別子の等価性を実装するためには、永続クラスが <literal>equals()</literal> と 
+                <literal>hashCode()</literal> をオーバーライド <emphasis>しなければなりません</emphasis> 。
+                また <literal>Serializable</literal> も実装しなければいけません。
             </para>
 
             <para>
-                Žc”O‚È‚ª‚ç•¡‡Ž¯•ÊŽq‚Ì‚½‚ß‚Ì‚±‚Ì•û–@‚́A
-                ‰i‘±ƒIƒuƒWƒFƒNƒg‚ªŽ©g‚ÌŽ¯•ÊŽq‚Å‚ ‚邱‚Æ‚ðˆÓ–¡‚µ‚Ä‚¢‚Ü‚·B
-                ƒIƒuƒWƒFƒNƒgŽ©g‚ðŽ¯•ÊŽq‚Æ‚·‚éˆÈã‚Ì•Ö—˜‚ȁuˆµ‚¢•ûv‚Í‚ ‚è‚Ü‚¹‚ñB
-                •¡‡ƒL[‚ÉŠÖ˜A‚µ‚½‰i‘±ó‘Ô‚ð <literal>load()</literal> o—ˆ‚é‚悤‚É‚È‚é‘O‚ɁA
-                ‰i‘±ƒNƒ‰ƒXŽ©g‚ðƒCƒ“ƒXƒ^ƒ“ƒX‰»‚µAŽ¯•ÊŽqƒvƒƒpƒeƒB‚ðÝ’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                <emphasis> ‘g‚ݍž‚Ý‚Ì</emphasis> •¡‡Ž¯•ÊŽq‚ƌĂ΂ê‚邱‚̃Aƒvƒ[ƒ`‚́A
-                –{Ši“I‚ȃAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚ÍŒü‚¢‚Ä‚¢‚Ü‚¹‚ñB
+                残念ながら複合識別子のためのこの方法は、
+                永続オブジェクトが自身の識別子であることを意味しています。
+                オブジェクト自身を識別子とする以上の便利な「扱い方」はありません。
+                複合キーに関連した永続状態を <literal>load()</literal> 出来るようになる前に、
+                永続クラス自身をインスタンス化し、識別子プロパティを設定しなければなりません。
+                <emphasis> 組み込みの</emphasis> 複合識別子と呼ばれるこのアプローチは、
+                本格的なアプリケーションには向いていません。
                 
                 
             </para>
             
             <para>
-                2‚–ڂ̕û–@‚Í <emphasis> ƒ}ƒbƒv‚³‚ꂽ</emphasis> •¡‡Ž¯•ÊŽq‚ƌĂ΂ê‚é‚à‚̂ŁA
-                <literal>&lt;composite-id&gt;</literal>ƒGƒŒƒƒ“ƒg“à‚ÅŽw’肵‚½Ž¯•ÊƒvƒƒpƒeƒB‚ª
-                ‰i‘±ƒNƒ‰ƒX‚Æ•ª—£‚µ‚½Ž¯•ÊŽqƒNƒ‰ƒX‚Ì—¼•û‚ɏd•¡‚µ‚Ä‘¶Ý‚µ‚Ü‚·B
+                2つ目の方法は <emphasis> マップされた</emphasis> 複合識別子と呼ばれるもので、
+                <literal>&lt;composite-id&gt;</literal>エレメント内で指定した識別プロパティが
+                永続クラスと分離した識別子クラスの両方に重複して存在します。
             </para>
                 
             <programlisting><![CDATA[<composite-id class="MedicareId" mapped="true">
@@ -976,65 +977,65 @@
 </composite-id>]]></programlisting>
 
             <para>
-                ‚±‚Ì—á‚ł́A•¡‡Ž¯•ÊŽqƒNƒ‰ƒXi <literal>MedicareId</literal> j‚ƃGƒ“ƒeƒBƒeƒBƒNƒ‰ƒXŽ©g‚Ì—¼•û‚ªA
-                <literal>medicareNumber</literal> ‚Æ <literal>dependent</literal> ‚Æ‚¢‚¤–¼‘O‚̃vƒƒpƒeƒB‚ðŽ‚¿‚Ü‚·B
-                Ž¯•ÊŽqƒNƒ‰ƒX‚́A<literal>equals()</literal> ‚Æ <literal>hashCode()</literal> ‚ðƒI[ƒoƒ‰ƒCƒh‚µA
-                <literal>Serializable</literal> ‚ðŽÀ‘•‚µ‚È‚­‚Ä‚Í‚È‚è‚Ü‚¹‚ñB
-                ‚±‚Ì•û–@‚ɂ́A–¾‚ç‚©‚ɃR[ƒh‚ªd•¡‚·‚é‚Æ‚¢‚¤•s“s‡‚ª‚ ‚è‚Ü‚·B
+                この例では、複合識別子クラス( <literal>MedicareId</literal> )とエンティティクラス自身の両方が、
+                <literal>medicareNumber</literal> と <literal>dependent</literal> という名前のプロパティを持ちます。
+                識別子クラスは、<literal>equals()</literal> と <literal>hashCode()</literal> をオーバライドし、
+                <literal>Serializable</literal> を実装しなくてはなりません。
+                この方法には、明らかにコードが重複するという不都合があります。
             </para>
             
             <para>
-                ŽŸ‚Ì‘®«‚̓}ƒbƒsƒ“ƒO‚µ‚½•¡‡Ž¯•ÊŽq‚ðŽw’è‚·‚邽‚ß‚ÉŽg—p‚µ‚Ü‚·B
+                次の属性はマッピングした複合識別子を指定するために使用します。
             </para>
 
             <itemizedlist spacing="compact">
                 <listitem>
                     <para>
-                        <literal>mapped</literal> (ƒIƒvƒVƒ‡ƒ“AƒfƒtƒHƒ‹ƒg‚Í <literal>false</literal> ):
-                        ƒ}ƒbƒsƒ“ƒO‚µ‚½•¡‡Ž¯•ÊŽq‚ªŽg—p‚³‚ê‚邱‚ƂƁA•ïŠÜ‚³‚ꂽƒvƒƒpƒeƒB‚̃}ƒbƒsƒ“ƒO‚ªA
-                        ƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒX‚Æ•¡‡Ž¯•ÊŽqƒNƒ‰ƒX‚Ì—¼•û‚ðŽQÆ‚·‚邱‚Æ‚ðŽ¦‚µ‚Ü‚·B
+                        <literal>mapped</literal> (オプション、デフォルトは <literal>false</literal> ):
+                        マッピングした複合識別子が使用されることと、包含されたプロパティのマッピングが、
+                        エンティティクラスと複合識別子クラスの両方を参照することを示します。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        <literal>class</literal> (ƒIƒvƒVƒ‡ƒ“,‚½‚¾‚µƒ}ƒbƒsƒ“ƒO‚µ‚½•¡‡Ž¯•ÊŽq‚É‚Í•K{): 
-                        •¡‡Ž¯•ÊŽq‚Æ‚µ‚ÄŽg—p‚·‚éƒNƒ‰ƒXB
+                        <literal>class</literal> (オプション,ただしマッピングした複合識別子には必須): 
+                        複合識別子として使用するクラス。
                         
                     </para>
                 </listitem>
             </itemizedlist>
 
             <para>
-                3‚–ڂ̂³‚ç‚É•Ö—˜‚È•û–@‚́A•¡‡Ž¯•ÊŽq‚ð<xref linkend="components-compositeid"/>“à‚Ì
-                ƒRƒ“ƒ|[ƒlƒ“ƒgƒNƒ‰ƒX‚Æ‚µ‚ÄŽÀ‘•‚·‚邱‚Æ‚Å‚·B
-                ‰º‚Å‹Lq‚µ‚Ä‚¢‚é‘®«‚́A‚±‚Ì‘ã‘Ö•û–@‚É‚Ì‚Ý“K—p‚³‚ê‚Ü‚·B
+                3つ目のさらに便利な方法は、複合識別子を<xref linkend="components-compositeid"/>内の
+                コンポーネントクラスとして実装することです。
+                下で記述している属性は、この代替方法にのみ適用されます。
             </para>
 
             <itemizedlist spacing="compact">
                 <listitem>
                     <para>
-                        <literal>name</literal> (ƒIƒvƒVƒ‡ƒ“, ‚±‚̃Aƒvƒ[ƒ`‚Å‚Í•K{): 
-                        •¡‡Ž¯•ÊŽq‚ð•ÛŽ‚·‚éƒRƒ“ƒ|[ƒlƒ“ƒgƒ^ƒCƒv‚̃vƒƒpƒeƒB(9Í‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢).
+                        <literal>name</literal> (オプション, このアプローチでは必須): 
+                        複合識別子を保持するコンポーネントタイプのプロパティ(9章を参照してください).
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        <literal>access</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>property</literal> ): 
-                        Hibernate‚ªƒvƒƒpƒeƒB‚Ì’l‚ɃAƒNƒZƒX‚·‚邽‚ß‚ÉŽg—p‚·‚ׂ«í—ªB
+                        <literal>access</literal> (オプション - デフォルトは <literal>property</literal> ): 
+                        Hibernateがプロパティの値にアクセスするために使用すべき戦略。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
                         <literal>class</literal> 
-                        iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓ŠƒtƒŒƒNƒVƒ‡ƒ“‚É‚æ‚茈’肳‚ê‚éƒvƒƒpƒeƒB‚ÌŒ^jF
-                        •¡‡Ž¯•ÊŽq‚Æ‚µ‚ÄŽg‚í‚ê‚éƒRƒ“ƒ|[ƒlƒ“ƒg‚̃Nƒ‰ƒXiŽŸ‚Ìß‚ðŒ©‚Ä‚­‚¾‚³‚¢jB
+                        (オプション - デフォルトはリフレクションにより決定されるプロパティの型):
+                        複合識別子として使われるコンポーネントのクラス(次の節を見てください)。
                     </para>
                 </listitem>
             </itemizedlist>
             
             <para>
-                ‚±‚Ì3‚–ڂ̕û–@‚Í <emphasis> Ž¯•ÊŽqƒRƒ“ƒ|[ƒlƒ“ƒg</emphasis> ‚ƌĂсA
-                ‚Ù‚Æ‚ñ‚Ç‚·‚ׂẴAƒvƒŠƒP[ƒVƒ‡ƒ“‚ɑ΂µ‚Đ„§‚·‚é•û–@‚Å‚·B
+                この3つ目の方法は <emphasis> 識別子コンポーネント</emphasis> と呼び、
+                ほとんどすべてのアプリケーションに対して推奨する方法です。
             </para>
             
         </sect2>        
@@ -1043,12 +1044,12 @@
             <title>discriminator</title>
 
             <para>
-                <literal>&lt;discriminator&gt;</literal> —v‘f‚́A
-                table-per-class-hierarchyƒ}ƒbƒsƒ“ƒOí—ª‚ðŽg‚¤ƒ|ƒŠƒ‚[ƒtƒBƒbƒN‚ȉi‘±‰»‚É•K—v‚Å‚ ‚èA
-                ƒe[ƒuƒ‹‚ÌŽ¯•ÊƒJƒ‰ƒ€‚ð’è‹`‚µ‚Ü‚·B
-                Ž¯•ÊƒJƒ‰ƒ€‚́A‚ ‚és‚ɑ΂µ‚ĉi‘±‘w‚ª‚ǂ̃TƒuƒNƒ‰ƒX‚ðƒCƒ“ƒXƒ^ƒ“ƒX‰»‚·‚é‚©‚ð
-                “`‚¦‚éƒ}[ƒJ[’l‚ðŠÜ‚ñ‚Å‚¢‚Ü‚·B
-                ˆÈ‰º‚̂悤‚ÈŒ^‚ɐ§ŒÀ‚³‚ê‚Ü‚·F <literal>string</literal> , <literal>character</literal> , 
+                <literal>&lt;discriminator&gt;</literal> 要素は、
+                table-per-class-hierarchyマッピング戦略を使うポリモーフィックな永続化に必要であり、
+                テーブルの識別カラムを定義します。
+                識別カラムは、ある行に対して永続層がどのサブクラスをインスタンス化するかを
+                伝えるマーカー値を含んでいます。
+                以下のような型に制限されます: <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>. 
@@ -1072,56 +1073,56 @@
                 <calloutlist>
                     <callout arearefs="discriminator1">
                         <para>
-                            <literal>column</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>class</literal> jF
-                            Ž¯•ÊƒJƒ‰ƒ€‚Ì–¼‘OB
+                            <literal>column</literal>(オプション - デフォルトは <literal>class</literal> ):
+                            識別カラムの名前。
                         </para>
                     </callout>
                     <callout arearefs="discriminator2">
                         <para>
                             <literal>type</literal> 
-                            iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>string</literal> jFHibernate‚ÌŒ^‚ðŽ¦‚·–¼‘OB
+                            (オプション - デフォルトは <literal>string</literal> ):Hibernateの型を示す名前。
                         </para>
                     </callout>          
                     <callout arearefs="discriminator3">
                         <para>
                             <literal>force</literal> 
-                            iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>false</literal> jF
-                            ƒ‹[ƒgƒNƒ‰ƒX‚Ì‚·‚ׂẴCƒ“ƒXƒ^ƒ“ƒX‚ðŒŸõ‚·‚éê‡‚Å‚ ‚Á‚Ä‚àA
-                            Hibernate‚ªŽg—p‚Å‚«‚鎯•ÊƒJƒ‰ƒ€‚ÌŽw’è‚ðu‹­§v‚µ‚Ü‚·B
+                            (オプション - デフォルトは <literal>false</literal> ):
+                            ルートクラスのすべてのインスタンスを検索する場合であっても、
+                            Hibernateが使用できる識別カラムの指定を「強制」します。
                         </para>
                     </callout>          
                     <callout arearefs="discriminator4">
                         <para>
                             <literal>insert</literal> 
-                            iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal> jF
-                            ‚à‚µŽ¯•ÊƒJƒ‰ƒ€‚ªƒ}ƒbƒsƒ“ƒO‚·‚é•¡‡Ž¯•ÊŽq‚̈ꕔ‚È‚ç‚΁A<literal>false</literal> ‚Ɛݒ肵‚Ä‚­‚¾‚³‚¢B
-                            (Hibernate‚ÉSQL‚Ì <literal>INSERT</literal> ‚É‚ÍŠÜ‚Ü‚ê‚È‚¢‚±‚Æ‚ð’m‚点‚é)
+                            (オプション - デフォルトは <literal>true</literal> ):
+                            もし識別カラムがマッピングする複合識別子の一部ならば、<literal>false</literal> と設定してください。
+                            (HibernateにSQLの <literal>INSERT</literal> には含まれないことを知らせる)
                             
                         </para>
                     </callout>
                     <callout arearefs="discriminator5">
                         <para>
-                            <literal>formula</literal> (ƒIƒvƒVƒ‡ƒ“)Œ^‚ª•]‰¿‚³‚ê‚é‚Æ‚«‚ÉŽÀs‚³‚ê‚é”CˆÓ‚ÌSQLŽ®B
-                            ƒRƒ“ƒeƒ“ƒcƒx[ƒX‚ÌŽ¯•Ê‚ð‰Â”\‚É‚µ‚Ü‚·B
+                            <literal>formula</literal> (オプション)型が評価されるときに実行される任意のSQL式。
+                            コンテンツベースの識別を可能にします。
                         </para>
                     </callout>
                 </calloutlist>
             </programlistingco>
 
             <para>
-                Ž¯•ÊƒJƒ‰ƒ€‚ÌŽÀÛ‚Ì’l‚́A <literal>&lt;class&gt;</literal> ‚Æ 
-                <literal>&lt;subclass&gt;</literal> —v‘f‚Ì 
-                <literal>discriminator-value</literal> ‘®«‚ÅŽw’肳‚ê‚Ü‚·B
+                識別カラムの実際の値は、 <literal>&lt;class&gt;</literal> と 
+                <literal>&lt;subclass&gt;</literal> 要素の 
+                <literal>discriminator-value</literal> 属性で指定されます。
             </para>
             
             <para>
-                ‰i‘±ƒNƒ‰ƒX‚Öƒ}ƒbƒsƒ“ƒO‚³‚ê‚È‚¢¢—]•ª‚ȁvŽ¯•Ê’l‚ðŽ‚Âs‚ª
-                ƒe[ƒuƒ‹‚É‚ ‚ê‚΁Ai‚»‚Ì‚Æ‚«‚ÉŒÀ‚èj<literal>force</literal> ‘®«‚Í—LŒø‚Å‚·B
-                ‚½‚¾‚µA•’Ê‚Í‚»‚¤‚¢‚¤‚±‚Æ‚Í‚ ‚è‚Ü‚¹‚ñB
+                永続クラスへマッピングされない「余分な」識別値を持つ行が
+                テーブルにあれば、(そのときに限り)<literal>force</literal> 属性は有効です。
+                ただし、普通はそういうことはありません。
             </para>
 
             <para>
-                <literal>formula</literal> ‘®«‚ðŽg‚¤‚ƁAs‚ÌŒ^‚ð•]‰¿‚·‚邽‚ß‚É”CˆÓ‚ÌSQLŽ®‚ðéŒ¾‚Å‚«‚Ü‚·B
+                <literal>formula</literal> 属性を使うと、行の型を評価するために任意のSQL式を宣言できます。
             </para>
 
             <programlisting><![CDATA[<discriminator
@@ -1131,13 +1132,13 @@
         </sect2>
 
         <sect2 id="mapping-declaration-version" revision="4">
-            <title>versioniƒIƒvƒVƒ‡ƒ“j</title>
+            <title>version(オプション)</title>
             
             <para>
-                <literal>&lt;version&gt;</literal> —v‘f‚̓IƒvƒVƒ‡ƒ“‚Å‚ ‚èA
-                ƒe[ƒuƒ‹‚ªƒo[ƒWƒ‡ƒ“ƒf[ƒ^‚ðŠÜ‚Þ‚±‚Æ‚ðŽ¦‚µ‚Ü‚·B
-                ‚±‚ê‚Í <emphasis>ƒƒ“ƒOƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“</emphasis>  
-                ‚ðŽg‚¤‚‚à‚è‚È‚çA“Á‚ɖ𗧂¿‚Ü‚·iˆÈ‰º‚ðŒ©‚Ä‚­‚¾‚³‚¢jB
+                <literal>&lt;version&gt;</literal> 要素はオプションであり、
+                テーブルがバージョンデータを含むことを示します。
+                これは <emphasis>ロングトランザクション</emphasis>  
+                を使うつもりなら、特に役立ちます(以下を見てください)。
             </para>
             
             <programlistingco>
@@ -1163,85 +1164,85 @@
                 <calloutlist>
                     <callout arearefs="version1">
                         <para>
-                            <literal>column</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓vƒƒpƒeƒB–¼j:
-                            ƒo[ƒWƒ‡ƒ“”ԍ†‚ð•ÛŽ‚·‚éƒJƒ‰ƒ€‚Ì–¼‘OB
+                            <literal>column</literal>(オプション - デフォルトはプロパティ名):
+                            バージョン番号を保持するカラムの名前。
                         </para>
                     </callout>          
                     <callout arearefs="version2">
                         <para>
-                            <literal>name</literal> F‰i‘±ƒNƒ‰ƒX‚̃vƒƒpƒeƒB‚Ì–¼‘OB
+                            <literal>name</literal> :永続クラスのプロパティの名前。
                         </para>
                     </callout>
                     <callout arearefs="version3">
                         <para>
                             <literal>type</literal> 
-                            iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>integer</literal> jFƒo[ƒWƒ‡ƒ“”ԍ†‚ÌŒ^B
+                            (オプション - デフォルトは <literal>integer</literal> ):バージョン番号の型。
                         </para>
                     </callout>          
                    <callout arearefs="version4">
                         <para>
                             <literal>access</literal> 
-                            iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>property</literal> jF
-                            ƒvƒƒpƒeƒB‚Ì’l‚ւ̃AƒNƒZƒX‚ÉHibernate‚ªŽg‚¤í—ªB
+                            (オプション - デフォルトは <literal>property</literal> ):
+                            プロパティの値へのアクセスにHibernateが使う戦略。
                         </para>
                     </callout>
                    <callout arearefs="version5">
                         <para>
                             <literal>unsaved-value</literal> 
-                            iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>undefined</literal> jF
-                            ƒCƒ“ƒXƒ^ƒ“ƒX‚ªV‚µ‚­ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽ‚±‚Æ‚ðŽ¦‚·
-                            iƒZ[ƒu‚³‚ê‚Ä‚¢‚È‚¢‚±‚Æ‚ðŽ¦‚·jƒo[ƒWƒ‡ƒ“ƒvƒƒpƒeƒB‚Ì’lB
-                            ˆÈ‘O‚ÌSession‚ŃZ[ƒu‚Ü‚½‚̓[ƒh‚³‚ꂽˆêŽž“I‚ȃCƒ“ƒXƒ^ƒ“ƒX‚Æ‹æ•Ê‚·‚邽‚ß‚É
-                            Žg‚¢‚Ü‚·B
-                            i <literal>undefined</literal> ‚ÍŽ¯•ÊŽqƒvƒƒpƒeƒB‚Ì’l‚ªŽg‚í‚ê‚邱‚Æ‚ðŽw’肵‚Ü‚·Bj
+                            (オプション - デフォルトは <literal>undefined</literal> ):
+                            インスタンスが新しくインスタンス化されたことを示す
+                            (セーブされていないことを示す)バージョンプロパティの値。
+                            以前のSessionでセーブまたはロードされた一時的なインスタンスと区別するために
+                            使います。
+                            ( <literal>undefined</literal> は識別子プロパティの値が使われることを指定します。)
                         </para>
                     </callout>
                     
                     <callout arearefs="version6">
                         <para>
-                            <literal>generated</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>never</literal> ):
-                            ‚±‚̃o[ƒWƒ‡ƒ“‚̃vƒƒpƒeƒB‚Ì’l‚ªAƒf[ƒ^ƒx[ƒX‚É‚æ‚Á‚ж¬‚³‚ꂽ‚±‚Æ‚ðŽw’肵‚Ü‚·B
-                            <xref linkend="mapping-generated">¶¬ƒvƒƒpƒeƒB</xref> ‚Ì‹c˜_‚ðŒ©‚Ä‚­‚¾‚³‚¢B
+                            <literal>generated</literal> (オプション - デフォルトは <literal>never</literal> ):
+                            このバージョンのプロパティの値が、データベースによって生成されたことを指定します。
+                            <xref linkend="mapping-generated">生成プロパティ</xref> の議論を見てください。
                         </para>
                     </callout>
                     <callout arearefs="version7">
                         <para>
-                            <literal>insert</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal> ):
-                            SQL‚Ìinsert•¶‚Ƀo[ƒWƒ‡ƒ“EƒJƒ‰ƒ€‚ðŠÜ‚ß‚é‚ׂ«‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B
-                            ‚à‚µƒf[ƒ^ƒx[ƒXEƒJƒ‰ƒ€‚̃fƒtƒHƒ‹ƒg’l‚ª <literal>0</literal> ‚Æ’è‹`‚³‚ê‚é‚Æ‚«‚ɂ́A
-                            <literal>false</literal> ‚ɐݒ肷‚é‚Æ—Ç‚¢‚Å‚µ‚傤B
+                            <literal>insert</literal> (オプション - デフォルトは <literal>true</literal> ):
+                            SQLのinsert文にバージョン・カラムを含めるべきかどうかを指定します。
+                            もしデータベース・カラムのデフォルト値が <literal>0</literal> と定義されるときには、
+                            <literal>false</literal> に設定すると良いでしょう。
                         </para>
                     </callout>                    
                 </calloutlist>
             </programlistingco>
             
             <para>
-                ƒo[ƒWƒ‡ƒ“”ԍ†‚Í Hibernate‚Ì <literal>long</literal> , <literal>integer</literal> , 
+                バージョン番号は Hibernateの <literal>long</literal> , <literal>integer</literal> , 
                 <literal>short</literal> , <literal>timestamp</literal> , 
-                <literal>calendar</literal> Œ^‚Ì‚¢‚¸‚ê‚©‚Å‚·B
+                <literal>calendar</literal> 型のいずれかです。
             </para>
             
             <para>
-                ƒo[ƒWƒ‡ƒ“‚âƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚̃vƒƒpƒeƒB‚́A•ª—£‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚ɑ΂µ‚Änull‚Å‚ ‚Á‚Ä‚Í‚È‚è‚Ü‚¹‚ñB
-                ‚»‚Ì‚½‚߂ǂ̂悤‚È <literal>unsaved-value</literal> í—ª‚ªŽw’肳‚ê‚Ä‚àA
-                Hibernate‚Ínull‚̃o[ƒWƒ‡ƒ“‚âƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚ðŽ‚Á‚½‚·‚ׂẴCƒ“ƒXƒ^ƒ“ƒX‚ðA
-                ˆêŽž“I‚È‚à‚Ì‚Å‚ ‚é‚Æ”»’f‚µ‚Ü‚·B
+                バージョンやタイムスタンプのプロパティは、分離されたインスタンスに対してnullであってはなりません。
+                そのためどのような <literal>unsaved-value</literal> 戦略が指定されても、
+                Hibernateはnullのバージョンやタイムスタンプを持ったすべてのインスタンスを、
+                一時的なものであると判断します。
                 
-                 <emphasis> null‚ð‹–—e‚·‚éƒo[ƒWƒ‡ƒ“‚âƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚̃vƒƒpƒeƒB‚ð’è‹`‚·‚邱‚Ƃ́A
-                ‰ß“n“I‚ɈꎞƒIƒuƒWƒFƒNƒg‚Æ‚·‚邱‚Æ‚ð–h‚®ŠÈ’P‚È•û–@‚Å‚·B
-                “Á‚ÉŽ¯•ÊŽq‚ÌŠ„‚è“–‚Ä‚â•¡‡ƒL[‚ðŽg—p‚µ‚Ä‚¢‚é‚Æ‚«‚É‚Í“Á‚É—L—p‚Å‚·B</emphasis> 
+                 <emphasis> nullを許容するバージョンやタイムスタンプのプロパティを定義することは、
+                過渡的に一時オブジェクトとすることを防ぐ簡単な方法です。
+                特に識別子の割り当てや複合キーを使用しているときには特に有用です。</emphasis> 
             </para>
         </sect2>
         
         <sect2 id="mapping-declaration-timestamp" revision="4">
-            <title>timestampiƒIƒvƒVƒ‡ƒ“j</title>
+            <title>timestamp(オプション)</title>
 
             <para>
-                ƒIƒvƒVƒ‡ƒ“‚Ì <literal>&lt;timestamp&gt;</literal> —v‘f‚́A
-                ƒe[ƒuƒ‹‚ªƒ^ƒCƒ€ƒXƒ^ƒ“ƒvƒf[ƒ^‚ðŠÜ‚Þ‚±‚Æ‚ðŽ¦‚µ‚Ü‚·B
-                ‚±‚ê‚̓o[ƒWƒ‡ƒ“•t‚¯‚Ì‘ã‚í‚è‚Ì•û–@‚Æ‚µ‚Ä—pˆÓ‚³‚ê‚Ä‚¢‚Ü‚·B
-                ƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚Í‚à‚Æ‚à‚ÆŠyŠÏ“IƒƒbƒN‚É‚¨‚¯‚éˆÀ‘S«‚Ì’á‚¢ŽÀ‘•‚Å‚·B
-                ‚µ‚©‚µƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚͈قȂé—p“r‚ÅŽg‚¤‚±‚Æ‚à‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
+                オプションの <literal>&lt;timestamp&gt;</literal> 要素は、
+                テーブルがタイムスタンプデータを含むことを示します。
+                これはバージョン付けの代わりの方法として用意されています。
+                タイムスタンプはもともと楽観的ロックにおける安全性の低い実装です。
+                しかしアプリケーションは異なる用途で使うこともあるかもしれません。
             </para>
             
             <programlistingco>
@@ -1265,66 +1266,66 @@
                 <calloutlist>
                     <callout arearefs="timestamp1">
                         <para>
-                            <literal>column</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓vƒƒpƒeƒB–¼jF
-                            ƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚ð•ÛŽ‚·‚éƒJƒ‰ƒ€‚Ì–¼‘OB
+                            <literal>column</literal>(オプション - デフォルトはプロパティ名):
+                            タイムスタンプを保持するカラムの名前。
                         </para>
                     </callout>                   
                     <callout arearefs="timestamp2">
                         <para>
-                            <literal>name</literal> F
-                            ‰i‘±ƒNƒ‰ƒX‚Å‚ ‚éJava ‚Ì <literal>Date</literal >Œ^ ‚Ü‚½‚Í 
-                            <literal>Timestamp</literal> Œ^ ‚́AJavaBeansƒXƒ^ƒCƒ‹ƒvƒƒpƒeƒB‚Ì–¼‘OB
+                            <literal>name</literal> :
+                            永続クラスであるJava の <literal>Date</literal >型 または 
+                            <literal>Timestamp</literal> 型 の、JavaBeansスタイルプロパティの名前。
                         </para>
                     </callout>
                    <callout arearefs="timestamp3">
                         <para>
                             <literal>access</literal>
-                            iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>property</literal> jF
-                            ƒvƒƒpƒeƒB‚Ì’l‚ւ̃AƒNƒZƒX‚ÉHibernate‚ªŽg‚¤í—ªB
+                            (オプション - デフォルトは <literal>property</literal> ):
+                            プロパティの値へのアクセスにHibernateが使う戦略。
                         </para>
                     </callout>
                    <callout arearefs="timestamp4">
                         <para>
                             <literal>unsaved-value</literal> 
-                            iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>null</literal> jF
-                            ƒCƒ“ƒXƒ^ƒ“ƒX‚ªV‚µ‚­ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽ
-                            iƒZ[ƒu‚³‚ê‚Ä‚¢‚È‚¢j‚±‚Æ‚ðŽ¦‚·ƒo[ƒWƒ‡ƒ“ƒvƒƒpƒeƒB‚Ì’lB
-                            ˆÈ‘O‚ÌSession‚ŃZ[ƒu‚Ü‚½‚̓[ƒh‚³‚ꂽˆêŽž“I‚ȃCƒ“ƒXƒ^ƒ“ƒX‚Æ
-                            ‹æ•Ê‚·‚邽‚ß‚ÉŽg‚í‚ê‚Ü‚·B
-                            i <literal>undefined</literal> ‚ÆŽw’è‚·‚é‚ƁA
-                            Ž¯•ÊŽqƒvƒƒpƒeƒB‚Ì’l‚ªŽg‚í‚ê‚Ü‚·Bj
+                            (オプション - デフォルトは <literal>null</literal> ):
+                            インスタンスが新しくインスタンス化された
+                            (セーブされていない)ことを示すバージョンプロパティの値。
+                            以前のSessionでセーブまたはロードされた一時的なインスタンスと
+                            区別するために使われます。
+                            ( <literal>undefined</literal> と指定すると、
+                            識別子プロパティの値が使われます。)
                         </para>
                     </callout>
                     
                     <callout arearefs="timestamp5">
                         <para>
-                            <literal>source</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>vm</literal> ):
-                            Hibernate‚Í‚Ç‚±‚©‚çƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚Ì’l‚ðŽæ“¾‚·‚é‚ׂ«‚Å‚µ‚傤‚©H
-                            ƒf[ƒ^ƒx[ƒX‚©‚ç‚Å‚µ‚傤‚©AŒ»Ý‚ÌJVM‚©‚ç‚Å‚µ‚傤‚©H
-                            ƒf[ƒ^ƒx[ƒX‚É‚æ‚éƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚́AHibernate‚ª"ŽŸ‚Ì’l"‚ðŒˆ’è‚·‚邽‚ß‚É
-                            ƒf[ƒ^ƒx[ƒX‚ðƒqƒbƒg‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢‚½‚߁AƒI[ƒoƒwƒbƒh‚ðµ‚«‚Ü‚·B
-                            ‚µ‚©‚µƒNƒ‰ƒXƒ^ŠÂ‹«‚Å‚ÍJVM‚©‚çŽæ“¾‚·‚é‚æ‚èˆÀ‘S‚Å‚·B
-                            ƒf[ƒ^ƒx[ƒX‚ÌŒ»Ý‚̃^ƒCƒ€ƒXƒ^ƒ“ƒv‚̎擾‚ðƒTƒ|[ƒg‚·‚é
-                            ‚·‚×‚Ä‚Ì <literal>ƒf[ƒ^ƒx[ƒX•ûŒ¾</literal> ‚ª’m‚ç‚ê‚Ä‚¢‚é‚킯‚Å‚Í‚È‚¢‚±‚Æ‚É
-                            ’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B‚Ü‚½ˆê•û‚ŁA¸–§‚³‚ðŒ‡‚­‚½‚߂ɁA
-                            ƒƒbƒN‚ÅŽg—p‚·‚é‚ɂ͈À‘S‚Å‚È‚¢‚à‚Ì‚à‚ ‚è‚Ü‚·(—Ⴆ‚ÎOracle 8)B
+                            <literal>source</literal> (オプション - デフォルトは <literal>vm</literal> ):
+                            Hibernateはどこからタイムスタンプの値を取得するべきでしょうか?
+                            データベースからでしょうか、現在のJVMからでしょうか?
+                            データベースによるタイムスタンプは、Hibernateが"次の値"を決定するために
+                            データベースをヒットしなければならないため、オーバヘッドを招きます。
+                            しかしクラスタ環境ではJVMから取得するより安全です。
+                            データベースの現在のタイムスタンプの取得をサポートする
+                            すべての <literal>データベース方言</literal> が知られているわけではないことに
+                            注意してください。また一方で、精密さを欠くために、
+                            ロックで使用するには安全でないものもあります(例えばOracle 8)。
                         </para>
                     </callout>
                     <callout arearefs="timestamp6">
                         <para>
-                            <literal>generated</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>never</literal> ):
-                            ‚±‚̃^ƒCƒ€ƒXƒ^ƒ“ƒvEƒvƒƒpƒeƒB‚Ì’l‚ªAƒf[ƒ^ƒx[ƒX‚É‚æ‚Á‚ж¬‚³‚ê‚邱‚Æ‚ðŽw’肵‚Ü‚·B
-                            <xref linkend="mapping-generated">¶¬ƒvƒƒpƒeƒB</xref> ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                            <literal>generated</literal> (オプション - デフォルトは <literal>never</literal> ):
+                            このタイムスタンプ・プロパティの値が、データベースによって生成されることを指定します。
+                            <xref linkend="mapping-generated">生成プロパティ</xref> を参照してください。
                         </para>
                     </callout>
                 </calloutlist>
             </programlistingco>
             
             <para>
-                 <literal>&lt;timestamp&gt;</literal> ‚Í 
-                <literal>&lt;version type="timestamp"&gt;</literal> ‚Æ“™‰¿‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-                <literal>&lt;timestamp source="db"&gt;</literal> ‚Í
-                <literal>&lt;version type="dbtimestamp"&gt;</literal> ‚Æ“™‰¿‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+                 <literal>&lt;timestamp&gt;</literal> は 
+                <literal>&lt;version type="timestamp"&gt;</literal> と等価であることに注意してください。
+                <literal>&lt;timestamp source="db"&gt;</literal> は
+                <literal>&lt;version type="dbtimestamp"&gt;</literal> と等価であることに注意してください。
             </para>
         </sect2>
         
@@ -1332,7 +1333,7 @@
             <title>property</title>
 
             <para>
-                <literal>&lt;property&gt;</literal> —v‘f‚́AƒNƒ‰ƒX‚̉i‘±“I‚ÈJavaBeanƒXƒ^ƒCƒ‹‚̃vƒƒpƒeƒB‚ð’è‹`‚µ‚Ü‚·B
+                <literal>&lt;property&gt;</literal> 要素は、クラスの永続的なJavaBeanスタイルのプロパティを定義します。
             </para>
             
             <programlistingco>
@@ -1375,135 +1376,135 @@
                 <calloutlist>
                     <callout arearefs="property1">
                         <para>
-                            <literal>name</literal>F¬•¶Žš‚ÅŽn‚Ü‚éƒvƒƒpƒeƒB–¼B
+                            <literal>name</literal>:小文字で始まるプロパティ名。
                         </para>
                     </callout>                   
                     <callout arearefs="property2">
                         <para>
-                            <literal>column</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓vƒƒpƒeƒB–¼jF
-                            ƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒf[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚̃Jƒ‰ƒ€‚Ì–¼‘OB
-                            ƒlƒXƒg‚µ‚½ <literal>&lt;column&gt;</literal> —v‘f‚Å‚àŽw’è‚Å‚«‚Ü‚·B
+                            <literal>column</literal>(オプション - デフォルトはプロパティ名):
+                            マッピングされたデータベーステーブルのカラムの名前。
+                            ネストした <literal>&lt;column&gt;</literal> 要素でも指定できます。
                         </para>
                     </callout>
                     <callout arearefs="property3">
                         <para>
-                            <literal>type</literal>iƒIƒvƒVƒ‡ƒ“jFHibernate‚ÌŒ^‚ðŽ¦‚·–¼‘OB
+                            <literal>type</literal>(オプション):Hibernateの型を示す名前。
                         </para>
                     </callout>
                     <callout arearefs="property4-5">
                         <para>
                             <literal>update, insert</literal> 
-                            iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal> jF
-                            ƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒJƒ‰ƒ€‚ªSQL‚Ì 
-                            <literal>UPDATE</literal> ‚â <literal>INSERT</literal> ‚ÉŠÜ‚Ü‚ê‚邱‚Æ‚ðŽw’肵‚Ü‚·B
-                            —¼•û‚Æ‚à <literal>false</literal> ‚ɐݒ肷‚é‚ƁA
-                            “¯‚¶ƒJƒ‰ƒ€‚Ƀ}ƒbƒsƒ“ƒO‚³‚ꂽ‘¼‚̃vƒƒpƒeƒB‚âƒgƒŠƒK‚â
-                            ‘¼‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚æ‚Á‚ú‰»‚³‚ꂽƒˆ‚ȁu“±ovƒvƒƒpƒeƒB‚ª‰Â”\‚É‚È‚è‚Ü‚·B
+                            (オプション - デフォルトは <literal>true</literal> ):
+                            マッピングされたカラムがSQLの 
+                            <literal>UPDATE</literal> や <literal>INSERT</literal> に含まれることを指定します。
+                            両方とも <literal>false</literal> に設定すると、
+                            同じカラムにマッピングされた他のプロパティやトリガや
+                            他のアプリケーションによって初期化された純粋な「導出」プロパティが可能になります。
                         </para>
                     </callout>
                     <callout arearefs="property6">
                         <para>
-                            <literal>formula</literal>iƒIƒvƒVƒ‡ƒ“jF
-                            <emphasis>ŒvŽZ</emphasis> ƒvƒƒpƒeƒB‚Ì‚½‚ß‚Ì’l‚ð’è‹`‚·‚éSQLŽ®B
-                            ŒvŽZ‚³‚ꂽƒvƒƒpƒeƒB‚ÍŽ©g‚̃Jƒ‰ƒ€‚ւ̃}ƒbƒsƒ“ƒO‚ª‚ ‚è‚Ü‚¹‚ñB
+                            <literal>formula</literal>(オプション):
+                            <emphasis>計算</emphasis> プロパティのための値を定義するSQL式。
+                            計算されたプロパティは自身のカラムへのマッピングがありません。
                         </para>
                     </callout>
                     <callout arearefs="property7">
                         <para>
-                            <literal>access</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>property</literal> jF
-                            ƒvƒƒpƒeƒB‚Ì’l‚ւ̃AƒNƒZƒX‚ÉHibernate‚ªŽg‚¤í—ªB
+                            <literal>access</literal>(オプション - デフォルトは <literal>property</literal> ):
+                            プロパティの値へのアクセスにHibernateが使う戦略。
                         </para>
                     </callout>
                     <callout arearefs="property8">
                         <para>
-                            <literal>lazy</literal> (optional - ƒfƒtƒHƒ‹ƒg‚Í <literal>false</literal> ):
-                           ƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚ɍŏ‰‚ɃAƒNƒZƒX‚µ‚½‚Æ‚«‚ɁAƒvƒƒpƒeƒB‚ð’x‰„‚µ‚Ď擾‚·‚é‚悤Žw’肵‚Ü‚·B
-                           (ƒoƒCƒgƒR[ƒhŽÀ‘•‚ðì¬‚·‚鎞ŠÔ‚ª•K—v‚É‚È‚è‚Ü‚·)B
+                            <literal>lazy</literal> (optional - デフォルトは <literal>false</literal> ):
+                           インスタンス変数に最初にアクセスしたときに、プロパティを遅延して取得するよう指定します。
+                           (バイトコード実装を作成する時間が必要になります)。
                         </para>
                     </callout>
                     <callout arearefs="property9">
                         <para>
-                            <literal>unique</literal> (ƒIƒvƒVƒ‡ƒ“):ƒJƒ‰ƒ€‚Ƀ†ƒj[ƒN§–ñ‚ð‚‚¯‚éDDL‚̐¶¬‚ð‰Â”\‚É‚µ‚Ü‚·B
-                            ‚Ü‚½A<literal>property-ref</literal> ‚̃^[ƒQƒbƒg‚Æ‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B
+                            <literal>unique</literal> (オプション):カラムにユニーク制約をつけるDDLの生成を可能にします。
+                            また、<literal>property-ref</literal> のターゲットとすることもできます。
                         </para>
                     </callout>
                     <callout arearefs="property10">
                         <para>
-                            <literal>not-null</literal> (ƒIƒvƒVƒ‡ƒ“):ƒJƒ‰ƒ€‚Énull’l‚ð‹–‰Â‚·‚éDDL‚̐¶¬‚ð‰Â”\‚É‚µ‚Ü‚·B
+                            <literal>not-null</literal> (オプション):カラムにnull値を許可するDDLの生成を可能にします。
                         </para>
                     </callout>
                     <callout arearefs="property11">
                         <para>
-                            <literal>optimistic-lock</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal> ):
-                            ‚±‚̃vƒƒpƒeƒB‚̍XV‚ÉŠyŠÏƒƒbƒN‚̎擾‚ð—v‹‚·‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B
-                            Œ¾‚¢Š·‚¦‚ê‚΁A‚±‚̃vƒƒpƒeƒB‚ªƒ_[ƒeƒB‚Å‚ ‚é‚Æ‚«‚Ƀo[ƒWƒ‡ƒ“‚𑝂₷‚ׂ«‚©‚ðŒˆ’è‚µ‚Ü‚·B
+                            <literal>optimistic-lock</literal> (オプション - デフォルトは <literal>true</literal> ):
+                            このプロパティの更新に楽観ロックの取得を要求するかどうかを指定します。
+                            言い換えれば、このプロパティがダーティであるときにバージョンを増やすべきかを決定します。
                         </para>
                     </callout>
                     <callout arearefs="property12">
                         <para>
-                            <literal>generated</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>never</literal> ):
-                            ƒvƒƒpƒeƒB‚Ì’l‚ªAƒf[ƒ^ƒx[ƒX‚É‚æ‚Á‚ж¬‚³‚ꂽ‚±‚Æ‚ðŽw’肵‚Ü‚·B
-                            <xref linkend="mapping-generated">¶¬ƒvƒƒpƒeƒB</xref> ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                            <literal>generated</literal> (オプション - デフォルトは <literal>never</literal> ):
+                            プロパティの値が、データベースによって生成されたことを指定します。
+                            <xref linkend="mapping-generated">生成プロパティ</xref> を参照してください。
                         </para>
                     </callout>
                 </calloutlist>
             </programlistingco>
 
             <para>
-                <emphasis>typename</emphasis> ‚ɂ͈ȉº‚Ì’l‚ª‰Â”\‚Å‚·F
+                <emphasis>typename</emphasis> には以下の値が可能です:
             </para>
 
             <orderedlist spacing="compact">
                 <listitem>
                     <para>
-                        Hibernate‚ÌŠî–{Œ^‚Ì–¼‘Oi—á  <literal>integer, string, character,
-                        date, timestamp, float, binary, serializable, object, blob</literal> jB
+                        Hibernateの基本型の名前(例  <literal>integer, string, character,
+                        date, timestamp, float, binary, serializable, object, blob</literal> )。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        ƒfƒtƒHƒ‹ƒg‚ÌŠî–{Œ^‚ÌJavaƒNƒ‰ƒX–¼ i—á <literal>int, float,
-                        char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</literal> jB
+                        デフォルトの基本型のJavaクラス名 (例 <literal>int, float,
+                        char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</literal> )。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        ƒVƒŠƒAƒ‰ƒCƒY‰Â”\‚ÈJavaƒNƒ‰ƒX‚Ì–¼‘OB
+                        シリアライズ可能なJavaクラスの名前。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        ƒJƒXƒ^ƒ€Œ^‚̃Nƒ‰ƒX–¼i—á <literal>com.illflow.type.MyCustomType</literal> jB
+                        カスタム型のクラス名(例 <literal>com.illflow.type.MyCustomType</literal> )。
                     </para>
                 </listitem>
             </orderedlist>
 
             <para>
-                Œ^‚ðŽw’肵‚È‚¯‚ê‚΁AHibernate‚͐³‚µ‚¢Hibernate‚ÌŒ^‚𐄑ª‚·‚邽‚߂ɁA
-                Žw’肳‚ꂽƒvƒƒpƒeƒB‚ɑ΂µ‚ăŠƒtƒŒƒNƒVƒ‡ƒ“‚ðŽg‚¢‚Ü‚·B
-                Hibernate‚̓‹[ƒ‹2, 3, 4‚ð‚»‚Ì‡˜‚ÉŽg‚¢A
-                getterƒvƒƒpƒeƒB‚Ì•Ô‚è’l‚̃Nƒ‰ƒX‚Ì–¼‘O‚ð‰ðŽß‚µ‚悤‚Æ‚µ‚Ü‚·B
-                ‚µ‚©‚µ‚±‚ê‚ŏí‚ɏ\•ª‚Å‚ ‚é‚Æ‚ÍŒÀ‚è‚Ü‚¹‚ñB
-                ê‡‚É‚æ‚Á‚ẮA<literal>type</literal> ‘®«‚ª•K—v‚ȏꍇ‚ª‚ ‚è‚Ü‚·B
-                i—Ⴆ‚Î <literal>Hibernate.DATE</literal> ‚Æ <literal>Hibernate.TIMESTAMP</literal> ‚ð‹æ•Ê‚·‚邽‚߁A
-                ‚Ü‚½‚̓JƒXƒ^ƒ€Œ^‚ðŽw’è‚·‚邽‚ß‚È‚Ç‚Å‚·Bj
+                型を指定しなければ、Hibernateは正しいHibernateの型を推測するために、
+                指定されたプロパティに対してリフレクションを使います。
+                Hibernateはルール2, 3, 4をその順序に使い、
+                getterプロパティの返り値のクラスの名前を解釈しようとします。
+                しかしこれで常に十分であるとは限りません。
+                場合によっては、<literal>type</literal> 属性が必要な場合があります。
+                (例えば <literal>Hibernate.DATE</literal> と <literal>Hibernate.TIMESTAMP</literal> を区別するため、
+                またはカスタム型を指定するためなどです。)
             </para>
             
             <para>
-                <literal>access</literal> ‘®«‚ŁA
-                ŽÀsŽž‚ÉHibernate‚ª‚ǂ̂悤‚ɃvƒƒpƒeƒB‚ɃAƒNƒZƒX‚·‚é‚©‚𐧌ä‚Å‚«‚Ü‚·B
-                ƒfƒtƒHƒ‹ƒg‚Å‚ÍHibernate‚̓vƒƒpƒeƒB‚Ìget/set‚̃yƒA‚ðƒR[ƒ‹‚µ‚Ü‚·B
-                <literal>access="field"</literal> ‚ÆŽw’è‚·‚ê‚΁A
-                Hibernate‚̓ŠƒtƒŒƒNƒVƒ‡ƒ“‚ðŽg‚¢get/set‚̃yƒA‚ð‰î‚³‚¸‚ɁA’¼ÚƒtƒB[ƒ‹ƒh‚ɃAƒNƒZƒX‚µ‚Ü‚·B
-                ƒCƒ“ƒ^[ƒtƒFƒCƒX <literal>org.hibernate.property.PropertyAccessor</literal> ‚ð
-                ŽÀ‘•‚·‚éƒNƒ‰ƒX‚ðŽw’è‚·‚邱‚ƂŁAƒvƒƒpƒeƒB‚ւ̃AƒNƒZƒX‚É“ÆŽ©‚̐헪‚ðŽw’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+                <literal>access</literal> 属性で、
+                実行時にHibernateがどのようにプロパティにアクセスするかを制御できます。
+                デフォルトではHibernateはプロパティのget/setのペアをコールします。
+                <literal>access="field"</literal> と指定すれば、
+                Hibernateはリフレクションを使いget/setのペアを介さずに、直接フィールドにアクセスします。
+                インターフェイス <literal>org.hibernate.property.PropertyAccessor</literal> を
+                実装するクラスを指定することで、プロパティへのアクセスに独自の戦略を指定することができます。
             </para>
 
             <para>
-                “Á‚É‹­—Í‚È“Á’¥‚͐¶¬ƒvƒƒpƒeƒB‚Å‚·B
-                ‚±‚ê‚ç‚̃vƒƒpƒeƒB‚Í“–‘R“Ç‚ÝŽæ‚èê—p‚Å‚ ‚èAƒvƒƒpƒeƒB‚Ì’l‚̓[ƒhŽž‚ÉŒvŽZ‚³‚ê‚Ü‚·B
-                ŒvŽZ‚ðSQLŽ®‚Æ‚µ‚Đ錾‚·‚é‚ƁA‚±‚̃vƒƒpƒeƒB‚Í
-                ƒCƒ“ƒXƒ^ƒ“ƒX‚ðƒ[ƒh‚·‚éSQLƒNƒGƒŠ‚Ì <literal>SELECT</literal> ‹å‚̃TƒuƒNƒGƒŠ‚É•ÏŠ·‚³‚ê‚Ü‚·B
+                特に強力な特徴は生成プロパティです。
+                これらのプロパティは当然読み取り専用であり、プロパティの値はロード時に計算されます。
+                計算をSQL式として宣言すると、このプロパティは
+                インスタンスをロードするSQLクエリの <literal>SELECT</literal> 句のサブクエリに変換されます。
             </para>
 
         <programlisting><![CDATA[
@@ -1514,10 +1515,10 @@
                 AND li.orderNumber = orderNumber )"/>]]></programlisting>
 
             <para>
-                “Á’è‚̃Jƒ‰ƒ€(—á‚Å‚Í <literal>customerId</literal> ‚ª‚»‚ê‚É‚ ‚½‚è‚Ü‚·)‚̃GƒCƒŠƒAƒX‚ðéŒ¾‚·‚邱‚Æ‚È‚­A
-                ƒGƒ“ƒeƒBƒeƒBŽ©g‚̃e[ƒuƒ‹‚ðŽQÆ‚Å‚«‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-                ‚à‚µ‘®«‚ðŽg—p‚µ‚½‚­‚È‚¯‚ê‚΁A
-                ƒlƒXƒg‚µ‚½ <literal>&lt;formula&gt;</literal> ƒ}ƒbƒsƒ“ƒO—v‘f‚ðŽg‚¦‚邱‚Æ‚É‚à’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+                特定のカラム(例では <literal>customerId</literal> がそれにあたります)のエイリアスを宣言することなく、
+                エンティティ自身のテーブルを参照できることに注意してください。
+                もし属性を使用したくなければ、
+                ネストした <literal>&lt;formula&gt;</literal> マッピング要素を使えることにも注意してください。
             </para>
 
         </sect2>
@@ -1526,9 +1527,9 @@
             <title>many-to-one</title>
 
             <para>
-                ‘¼‚̉i‘±ƒNƒ‰ƒX‚ւ̒ʏí‚ÌŠÖ˜A‚Í <literal>many-to-one</literal> —v‘f‚ðŽg‚Á‚Ä’è‹`‚µ‚Ü‚·B
-                ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ‚ƒfƒ‹‚Í‘½‘ΈêŠÖ˜A‚Å‚·B
-                ‚‚܂肠‚éƒe[ƒuƒ‹‚ÌŠO•”ƒL[‚́Aƒ^[ƒQƒbƒg‚Æ‚È‚éƒe[ƒuƒ‹‚ÌŽåƒL[ƒJƒ‰ƒ€‚ðŽQÆ‚µ‚Ä‚¢‚Ü‚·B
+                他の永続クラスへの通常の関連は <literal>many-to-one</literal> 要素を使って定義します。
+                リレーショナルモデルは多対一関連です。
+                つまりあるテーブルの外部キーは、ターゲットとなるテーブルの主キーカラムを参照しています。
             </para>
 
             <programlistingco>
@@ -1578,156 +1579,156 @@
                 <calloutlist>
                     <callout arearefs="manytoone1">
                         <para>
-                            <literal>name</literal>FƒvƒƒpƒeƒB–¼B
+                            <literal>name</literal>:プロパティ名。
                         </para>                    
                     </callout>                   
                     <callout arearefs="manytoone2">
                         <para>
-                            <literal>column</literal> (ƒIƒvƒVƒ‡ƒ“):ŠO•”ƒL[ƒJƒ‰ƒ€‚Ì–¼‘OB
-                            ƒlƒXƒg‚µ‚½ <literal>&lt;column&gt;</literal> —v‘f‚Å‚àŽw’è‚Å‚«‚Ü‚·B
+                            <literal>column</literal> (オプション):外部キーカラムの名前。
+                            ネストした <literal>&lt;column&gt;</literal> 要素でも指定できます。
                         </para>
                     </callout>
                     <callout arearefs="manytoone3">
                         <para>
-                            <literal>class</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚́A
-                            ƒŠƒtƒŒƒNƒVƒ‡ƒ“‚É‚æ‚茈’肳‚ê‚éƒvƒƒpƒeƒB‚ÌŒ^jFŠÖ˜AƒNƒ‰ƒX‚Ì–¼‘OB
+                            <literal>class</literal>(オプション - デフォルトは、
+                            リフレクションにより決定されるプロパティの型):関連クラスの名前。
                         </para>
                     </callout>
                     <callout arearefs="manytoone4">
                         <para>
-                            <literal>cascade</literal>iƒIƒvƒVƒ‡ƒ“jF
-                            ‚Ç‚Ì‘€ì‚ðAeƒIƒuƒWƒFƒNƒg‚©‚çŠÖ˜AƒIƒuƒWƒFƒNƒg‚ւƃJƒXƒP[ƒh‚³‚¹‚é‚©‚ðŽw’肵‚Ü‚·B
+                            <literal>cascade</literal>(オプション):
+                            どの操作を、親オブジェクトから関連オブジェクトへとカスケードさせるかを指定します。
                         </para>                    
                     </callout>
                     <callout arearefs="manytoone5">
                         <para>
-                            <literal>fetch</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>select</literal> ): 
-                               ŠO•”Œ‹‡ƒtƒFƒbƒ`‚©‡ŽŸ‘I‘ðƒtƒFƒbƒ`isequential select fetchj‚ð‘I‘ð‚µ‚Ü‚·B
+                            <literal>fetch</literal> (オプション - デフォルトは <literal>select</literal> ): 
+                               外部結合フェッチか順次選択フェッチ(sequential select fetch)を選択します。
                         </para>                    
                     </callout>
                     <callout arearefs="manytoone6-7">
                         <para>
-                            <literal>update, insert</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal> jF
-                            ƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒJƒ‰ƒ€‚ªSQL‚Ì <literal>UPDATE</literal> ‚Ü‚½‚Í 
-                            <literal>INSERT</literal> •¶‚ÉŠÜ‚Ü‚ê‚邱‚Æ‚ðŽw’肵‚Ü‚·B
-                            —¼•û‚Æ‚à <literal>false</literal> ‚ɐݒ肷‚é‚ƁA
-                            ‚»‚Ì’l‚ª“¯‚¶ƒJƒ‰ƒ€‚Ƀ}ƒbƒsƒ“ƒO‚³‚ꂽ‘¼‚̃vƒƒpƒeƒB‚âƒgƒŠƒK‚â
-                            ‘¼‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚æ‚Á‚ú‰»‚³‚ꂽƒˆ‚ȁu“±ovƒvƒƒpƒeƒB‚ª‰Â”\‚É‚È‚è‚Ü‚·B
+                            <literal>update, insert</literal>(オプション - デフォルトは <literal>true</literal> ):
+                            マッピングされたカラムがSQLの <literal>UPDATE</literal> または 
+                            <literal>INSERT</literal> 文に含まれることを指定します。
+                            両方とも <literal>false</literal> に設定すると、
+                            その値が同じカラムにマッピングされた他のプロパティやトリガや
+                            他のアプリケーションによって初期化された純粋な「導出」プロパティが可能になります。
                         </para>                    
                     </callout>
                     <callout arearefs="manytoone8">
                         <para>
-                            <literal>property-ref</literal>iƒIƒvƒVƒ‡ƒ“jF
-                            ‚±‚ÌŠO•”ƒL[‚ÉŒ‹‡‚³‚ꂽŠÖ˜AƒNƒ‰ƒX‚̃vƒƒpƒeƒB–¼B
-                            ‰½‚àŽw’肵‚È‚¯‚ê‚΁AŠÖ˜AƒNƒ‰ƒX‚ÌŽåƒL[‚ªŽg‚í‚ê‚Ü‚·B
+                            <literal>property-ref</literal>(オプション):
+                            この外部キーに結合された関連クラスのプロパティ名。
+                            何も指定しなければ、関連クラスの主キーが使われます。
                         </para>                
                     </callout>                   
                     <callout arearefs="manytoone9">
                         <para>
-                            <literal>access</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>property</literal> jF
-                            ƒvƒƒpƒeƒB‚Ì’l‚ւ̃AƒNƒZƒX‚ÉHibernate‚ªŽg‚¤í—ªB
+                            <literal>access</literal>(オプション - デフォルトは <literal>property</literal> ):
+                            プロパティの値へのアクセスにHibernateが使う戦略。
                         </para>
                     </callout>
                     <callout arearefs="manytoone10">
                         <para>
-                            <literal>unique</literal>iƒIƒvƒVƒ‡ƒ“jF
-                             ŠO•”ƒL[ƒJƒ‰ƒ€‚ɑ΂µ‚ă†ƒj[ƒN§–ñ‚ð‚‚¯‚½DDL‚̐¶¬‚ð‰Â”\‚É‚µ‚Ü‚·B
-                             ‚Ü‚½A<literal>property-ref</literal> ‚̃^[ƒQƒbƒg‚É‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B
-                             ‚±‚ê‚É‚æ‚èŠÖ˜A‚Ì‘½d“x‚ðŒø‰Ê“I‚Ɉê‘Έê‚É‚µ‚Ü‚·B
+                            <literal>unique</literal>(オプション):
+                             外部キーカラムに対してユニーク制約をつけたDDLの生成を可能にします。
+                             また、<literal>property-ref</literal> のターゲットにすることもできます。
+                             これにより関連の多重度を効果的に一対一にします。
                         </para>
                     </callout>
                     <callout arearefs="manytoone11">
                         <para>
-                            <literal>not-null</literal> (ƒIƒvƒVƒ‡ƒ“):ŠO•”ƒL[ƒJƒ‰ƒ€‚ɑ΂µ‚āA
-                            null’l‚ð‹–‰Â‚·‚éDDL‚̐¶¬‚ð‰Â”\‚É‚µ‚Ü‚·
+                            <literal>not-null</literal> (オプション):外部キーカラムに対して、
+                            null値を許可するDDLの生成を可能にします
                         </para>
                     </callout>
                     <callout arearefs="manytoone12">
                         <para>
-                            <literal>optimistic-lock</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal> ):
-                            ‚±‚̃vƒƒpƒeƒB‚̍XV‚ÉŠyŠÏ“IƒƒbƒN‚̎擾‚ð—v‹‚·‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B
-                            Œ¾‚¢Š·‚¦‚ê‚΁A‚±‚̃vƒƒpƒeƒB‚ªƒ_[ƒeƒB‚Å‚ ‚é‚Æ‚«‚Ƀo[ƒWƒ‡ƒ“‚𑝂₷‚ׂ«‚©‚ðŒˆ’è‚µ‚Ü‚·B
+                            <literal>optimistic-lock</literal> (オプション - デフォルトは <literal>true</literal> ):
+                            このプロパティの更新に楽観的ロックの取得を要求するかどうかを指定します。
+                            言い換えれば、このプロパティがダーティであるときにバージョンを増やすべきかを決定します。
                         </para>
                     </callout>
                     <callout arearefs="manytoone13">
                         <para>
-                            <literal>lazy</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>proxy</literal> ): 
-                            ƒfƒtƒHƒ‹ƒg‚ł́A‘½d“x‚P‚ÌŠÖ˜A‚ªƒvƒƒLƒV‚Æ‚È‚è‚Ü‚·B
-                            <literal>lazy="no-proxy"</literal> ‚́AƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚ɍŏ‰‚ɃAƒNƒZƒX‚µ‚½‚Æ‚«‚ɁA
-                            ƒvƒƒpƒeƒB‚ð’x‰„ƒtƒFƒbƒ`‚·‚é‚悤Žw’肵‚Ü‚·
-                            (ƒrƒ‹ƒhŽž‚ɃoƒCƒgƒR[ƒhŽÀ‘•‚ª•K—v‚É‚È‚è‚Ü‚·)B
-                            <literal>lazy="false"</literal> ‚ÍŠÖ˜A‚ðí‚É‘¦Žž‚ɃtƒFƒbƒ`‚·‚é‚悤Žw’肵‚Ü‚·B
+                            <literal>lazy</literal> (オプション - デフォルトは <literal>proxy</literal> ): 
+                            デフォルトでは、多重度1の関連がプロキシとなります。
+                            <literal>lazy="no-proxy"</literal> は、インスタンス変数に最初にアクセスしたときに、
+                            プロパティを遅延フェッチするよう指定します
+                            (ビルド時にバイトコード実装が必要になります)。
+                            <literal>lazy="false"</literal> は関連を常に即時にフェッチするよう指定します。
                         </para>
                     </callout>
                     <callout arearefs="manytoone14">
                         <para>
-                            <literal>not-found</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>exception</literal> ):
-                            Œ‡—Ž‚µ‚½s‚ðŽQÆ‚·‚éŠO•”ƒL[‚ð‚ǂ̂悤‚Ɉµ‚¤‚©‚ðŽw’肵‚Ü‚·B
-                            <literal>ignore</literal> ‚ÍŒ‡—Ž‚µ‚½s‚ðnullŠÖ˜A‚Æ‚µ‚Ĉµ‚¢‚Ü‚·B
+                            <literal>not-found</literal> (オプション - デフォルトは <literal>exception</literal> ):
+                            欠落した行を参照する外部キーをどのように扱うかを指定します。
+                            <literal>ignore</literal> は欠落した行をnull関連として扱います。
                         </para>
                     </callout>
                     <callout arearefs="manytoone15">
                         <para>
-                            <literal>entity-name</literal> (ƒIƒvƒVƒ‡ƒ“):ŠÖ˜A‚µ‚½ƒNƒ‰ƒX‚̃Gƒ“ƒeƒBƒeƒB–¼B
+                            <literal>entity-name</literal> (オプション):関連したクラスのエンティティ名。
                         </para>                   
                     </callout>
                 </calloutlist>
                     <callout arearefs="manytoone16">
                         <para>
-                            <literal>formula</literal> (ƒIƒvƒVƒ‡ƒ“):
-                             <emphasis> ŒvŽZ‚³‚ꂽ</emphasis> ŠO•”ƒL[‚ɑ΂µ‚Ä’l‚ð’è‹`‚·‚éSQLŽ®
+                            <literal>formula</literal> (オプション):
+                             <emphasis> 計算された</emphasis> 外部キーに対して値を定義するSQL式
                         </para>
                     </callout>
             </programlistingco>
 
             <para>
-                <literal>cascade</literal> ‘®«‚É <literal>none</literal> ˆÈŠO‚̈Ӗ¡‚Ì‚ ‚é’l‚ð‚ðÝ’è‚·‚é‚ƁA
-                ŠÖ˜AƒIƒuƒWƒFƒNƒg‚Ö‚ ‚é‘€ì‚ª“`”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>jA
-                ‚Ü‚½‚»‚ꂾ‚¯‚Å‚È‚­ <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
+                <literal>cascade</literal> 属性に <literal>none</literal> 以外の意味のある値をを設定すると、
+                関連オブジェクトへある操作が伝播することになります。
+                意味のある値とはHibernateの基本操作の名前のことで、
+                <literal>delete-orphan</literal> と <literal>all</literal> 、操作名をカンマで区切った組み合わせ
+                (例えば <literal>cascade="persist,merge,evict"</literal> や
+                <literal>cascade="all,delete-orphan"</literal>)、
+                またそれだけでなく <literal>persist, merge, delete, save-update, evict, replicate, lock,
+                refresh</literal> のことを指します。
+                詳しい説明は <xref linkend="objectstate-transitive"/> を見てください。
+                値が一つの関連(many-to-oneとone-to-one関連)は、
+                単独での削除(orphan delete)をサポートしていないことに注意してください。
             </para>
             
             <para>
-                “TŒ^“I‚È <literal>many-to-one</literal> éŒ¾‚ÍŽŸ‚̂悤‚ɃVƒ“ƒvƒ‹‚Å‚·BF
+                典型的な <literal>many-to-one</literal> 宣言は次のようにシンプルです。:
             </para>
 
             <programlisting><![CDATA[<many-to-one name="product" class="Product" column="PRODUCT_ID"/>]]></programlisting>
             
             <para>
-                <literal>property-ref</literal> ‘®«‚́AŠO•”ƒL[‚ªŠÖ˜A•t‚¯‚ç‚ꂽƒe[ƒuƒ‹‚́AŽåƒL[‚Å‚È‚¢
-                ƒ†ƒj[ƒNƒL[‚ðŽQÆ‚µ‚Ä‚¢‚郌ƒKƒV[ƒf[ƒ^‚ðƒ}ƒbƒv‚·‚邽‚ß‚É‚¾‚¯Žg‚¤‚ׂ«‚Å‚·B
-                ‚±‚ê‚͏X‚¢ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ‚ƒfƒ‹‚Å‚·B
-                —Ⴆ‚Î <literal>Product</literal> ƒNƒ‰ƒX‚ªA
-                ŽåƒL[‚Å‚È‚¢ƒ†ƒj[ƒN‚ȃVƒŠƒAƒ‹ƒiƒ“ƒo[‚ðŽ‚Á‚Ä‚¢‚é‚Ɖ¼’肵‚Ä‚Ý‚Ä‚­‚¾‚³‚¢B
-                i <literal>unique</literal> ‘®«‚ÍSchemaExportƒc[ƒ‹‚ðŽg‚Á‚½Hibernate‚ÌDDL¶¬‚𐧌䂵‚Ü‚·Bj
+                <literal>property-ref</literal> 属性は、外部キーが関連付けられたテーブルの、主キーでない
+                ユニークキーを参照しているレガシーデータをマップするためにだけ使うべきです。
+                これは醜いリレーショナルモデルです。
+                例えば <literal>Product</literal> クラスが、
+                主キーでないユニークなシリアルナンバーを持っていると仮定してみてください。
+                ( <literal>unique</literal> 属性はSchemaExportツールを使ったHibernateのDDL生成を制御します。)
             </para>
             
             <programlisting><![CDATA[<property name="serialNumber" unique="true" type="string" column="SERIAL_NUMBER"/>]]></programlisting>
             
             <para>
-                ˆÈ‰º‚̂悤‚É <literal>OrderItem</literal> ‚ɑ΂µ‚ă}ƒbƒsƒ“ƒO‚ðŽg‚¦‚Ü‚·F
+                以下のように <literal>OrderItem</literal> に対してマッピングを使えます:
             </para>
             
             <programlisting><![CDATA[<many-to-one name="product" property-ref="serialNumber" column="PRODUCT_SERIAL_NUMBER"/>]]></programlisting>
             
             <para>
-                ‚µ‚©‚µA‚±‚ê‚ÍŒˆ‚µ‚Đ„§‚Å‚«‚Ü‚¹‚ñB
+                しかし、これは決して推奨できません。
             </para>
             
             <para>
-                ŽQÆ‚µ‚½ƒ†ƒj[ƒNƒL[‚ªAŠÖ˜A‚·‚éƒGƒ“ƒeƒBƒeƒB‚Ì‘½”‚̃vƒƒpƒeƒB‚©‚ç\¬‚³‚ê‚éê‡A
-                Žw’肵‚½ <literal>&lt;properties&gt;</literal> —v‘f“à‚ŁAŽQÆ‚·‚éƒvƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚·‚é‚ׂ«‚Å‚·B
+                参照したユニークキーが、関連するエンティティの多数のプロパティから構成される場合、
+                指定した <literal>&lt;properties&gt;</literal> 要素内で、参照するプロパティをマッピングするべきです。
             </para>
             
             <para>
-                ‚à‚µŽQÆ‚µ‚½ƒ†ƒj[ƒNƒL[‚ªƒRƒ“ƒ|[ƒlƒ“ƒg‚̃vƒƒpƒeƒB‚Å‚ ‚éê‡‚́AƒvƒƒpƒeƒB‚̃pƒX‚ðŽw’è‚Å‚«‚Ü‚·B
+                もし参照したユニークキーがコンポーネントのプロパティである場合は、プロパティのパスを指定できます。
             </para>
             
            <programlisting><![CDATA[<many-to-one name="owner" property-ref="identity.ssn" column="OWNER_SSN"/>]]></programlisting>           
@@ -1740,7 +1741,7 @@
             <title>one-to-one</title>
 
             <para>
-                ‘¼‚̉i‘±ƒNƒ‰ƒX‚ւ̈ê‘ΈêŠÖ˜A‚́A<literal>one-to-one</literal> —v‘f‚Å’è‹`‚µ‚Ü‚·B
+                他の永続クラスへの一対一関連は、<literal>one-to-one</literal> 要素で定義します。
             </para>
             
             <programlistingco>
@@ -1774,112 +1775,112 @@
                 <calloutlist>
                     <callout arearefs="onetoone1">
                         <para>
-                            <literal>name</literal>FƒvƒƒpƒeƒB–¼B
+                            <literal>name</literal>:プロパティ名。
                         </para>                
                     </callout>                   
                     <callout arearefs="onetoone2">
                         <para>
-                            <literal>class</literal>iƒIƒvƒVƒ‡ƒ“ - 
-                            ƒfƒtƒHƒ‹ƒg‚̓ŠƒtƒŒƒNƒVƒ‡ƒ“‚É‚æ‚茈’肳‚ê‚éƒvƒƒpƒeƒB‚ÌŒ^jF
-                            ŠÖ˜AƒNƒ‰ƒX‚Ì–¼‘OB
+                            <literal>class</literal>(オプション - 
+                            デフォルトはリフレクションにより決定されるプロパティの型):
+                            関連クラスの名前。
                         </para>                   
                     </callout>
                     <callout arearefs="onetoone3">
                         <para>
-                            <literal>cascade</literal>iƒIƒvƒVƒ‡ƒ“jF
-                            eƒIƒuƒWƒFƒNƒg‚©‚çŠÖ˜AƒIƒuƒWƒFƒNƒg‚ցA‚Ç‚Ì‘€ì‚ðƒJƒXƒP[ƒh‚·‚é‚©‚ðŽw’肵‚Ü‚·B
+                            <literal>cascade</literal>(オプション):
+                            親オブジェクトから関連オブジェクトへ、どの操作をカスケードするかを指定します。
                         </para>
                     </callout>
                     <callout arearefs="onetoone4">
                         <para>
-                            <literal>constrained</literal>iƒIƒvƒVƒ‡ƒ“jF
-                            ƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒe[ƒuƒ‹‚ÌŽåƒL[‚ɑ΂·‚éŠO•”ƒL[§–ñ‚ªA
-                            ŠÖ˜AƒNƒ‰ƒX‚̃e[ƒuƒ‹‚ðŽQÆ‚·‚邱‚Æ‚ðŽw’肵‚Ü‚·B
-                            ‚±‚̃IƒvƒVƒ‡ƒ“‚Í <literal>save()</literal> ‚Æ 
-                            <literal>delete()</literal> ‚ªƒJƒXƒP[ƒh‚³‚ê‚鏇˜‚ɉe‹¿‚µA
-                            ‚»‚µ‚ÄŠÖ˜A‚ªƒvƒƒLƒV‚³‚ê‚é‚©‚Ç‚¤‚©‚É‚à‰e‹¿‚µ‚Ü‚·
-                            i‚»‚µ‚ăXƒL[ƒ}ƒGƒNƒXƒ|[ƒgƒc[ƒ‹‚É‚àŽg‚í‚ê‚Ü‚·jB
+                            <literal>constrained</literal>(オプション):
+                            マッピングされたテーブルの主キーに対する外部キー制約が、
+                            関連クラスのテーブルを参照することを指定します。
+                            このオプションは <literal>save()</literal> と 
+                            <literal>delete()</literal> がカスケードされる順序に影響し、
+                            そして関連がプロキシされるかどうかにも影響します
+                            (そしてスキーマエクスポートツールにも使われます)。
                         </para>                  
                     </callout>
                     <callout arearefs="onetoone5">
                         <para>
-                            <literal>fetch</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>select</literal> jF
-                            ŠO•”Œ‹‡ƒtƒFƒbƒ`‚Ə‡ŽŸ‘I‘ðƒtƒFƒbƒ`isequential select fetchj‚Ì‚Ç‚¿‚ç‚©‚ð‘I‘ð‚µ‚Ü‚·B
+                            <literal>fetch</literal>(オプション - デフォルトは <literal>select</literal> ):
+                            外部結合フェッチと順次選択フェッチ(sequential select fetch)のどちらかを選択します。
                         </para>
                     </callout>
                     <callout arearefs="onetoone6">
                         <para>
-                            <literal>property-ref</literal>iƒIƒvƒVƒ‡ƒ“jF
-                            ‚±‚̃Nƒ‰ƒX‚ÌŽåƒL[‚ÉŒ‹‡‚³‚ꂽŠÖ˜AƒNƒ‰ƒX‚̃vƒƒpƒeƒB–¼B
-                            Žw’肳‚ê‚È‚¯‚ê‚΁AŠÖ˜AƒNƒ‰ƒX‚ÌŽåƒL[‚ªŽg‚í‚ê‚Ü‚·B
+                            <literal>property-ref</literal>(オプション):
+                            このクラスの主キーに結合された関連クラスのプロパティ名。
+                            指定されなければ、関連クラスの主キーが使われます。
                         </para>                
                     </callout>                   
                     <callout arearefs="onetoone7">
                         <para>
-                            <literal>access</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>property</literal> jF
-                            ƒvƒƒpƒeƒB‚Ì’l‚ւ̃AƒNƒZƒX‚ÉHibernate‚ªŽg‚¤í—ªB
+                            <literal>access</literal>(オプション - デフォルトは <literal>property</literal> ):
+                            プロパティの値へのアクセスにHibernateが使う戦略。
                         </para>
                     </callout>
                     <callout arearefs="onetoone8">
                         <para>
-                            <literal>formula</literal> (ƒIƒvƒVƒ‡ƒ“):
-                            ‚Ù‚Æ‚ñ‚Ç‚·‚ׂĂ̈ê‘ΈêŠÖ˜A‚̓I[ƒi[‚̃Gƒ“ƒeƒBƒeƒB‚ÌŽåƒL[‚ւƃ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B
-                            ‚±‚êˆÈŠO‚Ì‹H‚ȏꍇ‚́A
-                            ‘¼‚̃Jƒ‰ƒ€‚âA•¡”‚̃Jƒ‰ƒ€ASQL\•¶‚ðŽg‚Á‚½Œ‹‡‚·‚邽‚ß‚ÌŽ®‚ðŽw’è‚Å‚«‚Ü‚·B
-                            i—á‚Í <literal>org.hibernate.test.onetooneformula</literal> ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢Bj
+                            <literal>formula</literal> (オプション):
+                            ほとんどすべての一対一関連はオーナーのエンティティの主キーへとマッピングされます。
+                            これ以外の稀な場合は、
+                            他のカラムや、複数のカラム、SQL構文を使った結合するための式を指定できます。
+                            (例は <literal>org.hibernate.test.onetooneformula</literal> を参照してください。)
                         </para>
                     </callout>
                     <callout arearefs="onetoone9">
                         <para>
-                            <literal>lazy</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>proxy</literal> ): 
-                            ƒfƒtƒHƒ‹ƒg‚ł́A‘½d“x‚P‚ÌŠÖ˜A‚ªƒvƒƒLƒV‚Æ‚È‚è‚Ü‚·B
-                            <literal>lazy="no-proxy"</literal> ‚́AƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚ɍŏ‰‚ɃAƒNƒZƒX‚µ‚½‚Æ‚«‚ɁA
-                            ƒvƒƒpƒeƒB‚ð’x‰„ƒtƒFƒbƒ`‚·‚é‚悤Žw’肵‚Ü‚·
-                            (ƒrƒ‹ƒhŽž‚ɃoƒCƒgƒR[ƒhŽÀ‘•‚ª•K—v‚É‚È‚è‚Ü‚·)B
-                            <literal>lazy="false"</literal> ‚ÍŠÖ˜A‚ðí‚É‘¦Žž‚ɃtƒFƒbƒ`‚·‚é‚悤Žw’肵‚Ü‚·B
-                            <emphasis>‚à‚µ <literal>constrained="false"</literal> ‚È‚ç‚΁A
-                            ƒvƒƒLƒV‚ÍŽg—p•s‰Â”\‚Æ‚È‚èAŠÖ˜A‚𑦎ž‚ɃtƒFƒbƒ`‚·‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢I</emphasis> 
+                            <literal>lazy</literal> (オプション - デフォルトは <literal>proxy</literal> ): 
+                            デフォルトでは、多重度1の関連がプロキシとなります。
+                            <literal>lazy="no-proxy"</literal> は、インスタンス変数に最初にアクセスしたときに、
+                            プロパティを遅延フェッチするよう指定します
+                            (ビルド時にバイトコード実装が必要になります)。
+                            <literal>lazy="false"</literal> は関連を常に即時にフェッチするよう指定します。
+                            <emphasis>もし <literal>constrained="false"</literal> ならば、
+                            プロキシは使用不可能となり、関連を即時にフェッチすることに注意してください!</emphasis> 
                             
                         </para>
                     </callout>
                     <callout arearefs="onetoone10">
                         <para>
-                            <literal>entity-name</literal> (ƒIƒvƒVƒ‡ƒ“):ŠÖ˜AƒNƒ‰ƒX‚̃Gƒ“ƒeƒBƒeƒB–¼
+                            <literal>entity-name</literal> (オプション):関連クラスのエンティティ名
                         </para>                   
                     </callout>
                 </calloutlist>
             </programlistingco>
         
             <para>
-                ˆê‘ΈêŠÖ˜A‚É‚Í2Ží—Þ‚ ‚è‚Ü‚·F
+                一対一関連には2種類あります:
             </para>
             <itemizedlist>
             <listitem><para>
-                ŽåƒL[ŠÖ˜A
+                主キー関連
             </para></listitem>
             <listitem><para>
-                ƒ†ƒj[ƒNŠO•”ƒL[ŠÖ˜A
+                ユニーク外部キー関連
             </para></listitem>
             </itemizedlist>
             
             <para>
-                ŽåƒL[ŠÖ˜A‚ɂ́A“Á•Ê‚ȃe[ƒuƒ‹ƒJƒ‰ƒ€‚Í•K—v‚ ‚è‚Ü‚¹‚ñB
-                ‚à‚µ2‚‚̍s‚ªŠÖ˜A‚É‚æ‚èŠÖŒW‚µ‚Ä‚¢‚ê‚΁A2‚‚̃e[ƒuƒ‹‚Í“¯‚¶ŽåƒL[‚Ì’l‚ð‹¤—L‚µ‚Ü‚·B
-                ‚»‚Ì‚½‚ß2‚‚̃IƒuƒWƒFƒNƒg‚ðŽåƒL[ŠÖ˜A‚É‚æ‚Á‚ÄŠÖ˜A•t‚¯‚½‚¢‚Ì‚Å‚ ‚ê‚΁A
-                ŠmŽÀ‚É“¯‚¶Ž¯•ÊŽq‚Ì’l‚ð‘ã“ü‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+                主キー関連には、特別なテーブルカラムは必要ありません。
+                もし2つの行が関連により関係していれば、2つのテーブルは同じ主キーの値を共有します。
+                そのため2つのオブジェクトを主キー関連によって関連付けたいのであれば、
+                確実に同じ識別子の値を代入しなければなりません。
             </para>
             
             <para>
-                 ŽåƒL[ŠÖ˜A‚ðs‚¤‚½‚߂ɂ́AˆÈ‰º‚̃}ƒbƒsƒ“ƒO‚ð <literal>Employee</literal> ‚Æ 
-                <literal>Person</literal> ‚Ì‚»‚ꂼ‚ê‚ɒljÁ‚µ‚Ä‚­‚¾‚³‚¢B
+                 主キー関連を行うためには、以下のマッピングを <literal>Employee</literal> と 
+                <literal>Person</literal> のそれぞれに追加してください。
             </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‚ÆEMPLOYEEƒe[ƒuƒ‹‚ÌŠÖŒW‚·‚és‚ÌŽåƒL[‚ª“¯‚¶‚Å‚ ‚邱‚Æ‚ðŠmŽÀ‚É‚µ‚È‚¯‚ê‚΂¢‚¯‚Ü‚¹‚ñB
-                ‚±‚±‚ł́A<literal>foreign</literal> ‚Æ‚¢‚¤“ÁŽê‚ÈHibernateŽ¯•ÊŽq¶¬í—ª‚ðŽg‚¢‚Ü‚·F
+                ここで、PERSONとEMPLOYEEテーブルの関係する行の主キーが同じであることを確実にしなければいけません。
+                ここでは、<literal>foreign</literal> という特殊なHibernate識別子生成戦略を使います:
             </para>
 
             <programlisting><![CDATA[<class name="person" table="PERSON">
@@ -1895,25 +1896,25 @@
 </class>]]></programlisting>
 
             <para>
-                <literal>Employee</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚ªA<literal>Person</literal> ‚Ì 
-                <literal>employee</literal> ƒvƒƒpƒeƒB‚ÅŽQÆ‚³‚ê‚é‚悤‚ɁA
-                V‚µ‚­ƒZ[ƒu‚³‚ꂽ <literal>Person</literal> ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚É‚Í“¯‚¶ŽåƒL[‚Ì’l‚ª‘ã“ü‚³‚ê‚Ü‚·B
+                <literal>Employee</literal> インスタンスが、<literal>Person</literal> の 
+                <literal>employee</literal> プロパティで参照されるように、
+                新しくセーブされた <literal>Person</literal> のインスタンスには同じ主キーの値が代入されます。
                 
-                V‚µ‚­ƒZ[ƒu‚·‚é <literal>Person</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚́A
-                ‚»‚Ì <literal>Person</literal> ‚Ì <literal>employee</literal> ƒvƒƒpƒeƒB‚ªŽQÆ‚·‚é 
-                <literal>Employee</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚Æ‚µ‚Ä“¯‚¶ŽåƒL[‚ªŠ„‚è“–‚Ä‚ç‚ê‚Ü‚·B
+                新しくセーブする <literal>Person</literal> インスタンスは、
+                その <literal>Person</literal> の <literal>employee</literal> プロパティが参照する 
+                <literal>Employee</literal> インスタンスとして同じ主キーが割り当てられます。
             </para>
 
             <para>
-                ‚à‚¤1‚‚̕û–@‚Æ‚µ‚āA<literal>Employee</literal> ‚©‚ç <literal>Person</literal> ‚Ö‚Ì
-                ƒ†ƒj[ƒN§–ñ‚ðŽg‚Á‚½ŠO•”ƒL[ŠÖ˜A‚͈ȉº‚̂悤‚É•\Œ»‚³‚ê‚Ü‚·F
+                もう1つの方法として、<literal>Employee</literal> から <literal>Person</literal> への
+                ユニーク制約を使った外部キー関連は以下のように表現されます:
             </para>
             
             <programlisting><![CDATA[<many-to-one name="person" class="Person" column="PERSON_ID" unique="true"/>]]></programlisting>
             
             <para>
-                ‚»‚µ‚Ä‚±‚ÌŠÖ˜A‚́A
-                ˆÈ‰º‚Ì‹Lq‚ð <literal>Person</literal> ‚̃}ƒbƒsƒ“ƒO‚ɒljÁ‚·‚邱‚Æ‚Å‘o•ûŒü‚É‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·F
+                そしてこの関連は、
+                以下の記述を <literal>Person</literal> のマッピングに追加することで双方向にすることができます:
             </para>
             
            <programlisting><![CDATA[<one-to-one name="employee" class="Employee" property-ref="person"/>]]></programlisting>
@@ -1930,29 +1931,29 @@
 </natural-id>]]></programlisting>
 
             <para>
-                ŽåƒL[‚Æ‚µ‚đ㗝ƒL[‚ÌŽg—p‚𐄏§‚µ‚Ü‚·‚ªA
-                ‚·‚ׂẴGƒ“ƒeƒBƒeƒB‚ɑ΂µ‚ÄŽ©‘RƒL[‚ðŽ¯•Ê‚·‚é‚悤‚É‚·‚ׂ«‚Å‚·B
-                Ž©‘RƒL[‚̓†ƒj[ƒN‚©‚”ñnull‚Ȉê‚‚̃vƒƒpƒeƒBA‚Ü‚½‚̓vƒƒpƒeƒB‚̘AŒ‹‚Å‚·B
-                •s•Ï‚Å‚ ‚ê‚΂³‚ç‚É—Ç‚¢‚Å‚·B
-                <literal>&lt;natural-id&gt;</literal> —v‘f“à‚ÅŽ©‘RƒL[‚̃vƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
-                Hibernate‚Í•K‘R“I‚Ƀ†ƒj[ƒN‚©‚Ânull’l‚ð‹–‰Â‚·‚鐧–ñ‚𐶐¬‚µA
-                ‚±‚¤‚µ‚ă}ƒbƒsƒ“ƒO‚Í‚æ‚莩ŒÈ‹Lq“I‚É‚È‚è‚Ü‚·B
+                主キーとして代理キーの使用を推奨しますが、
+                すべてのエンティティに対して自然キーを識別するようにすべきです。
+                自然キーはユニークかつ非nullな一つのプロパティ、またはプロパティの連結です。
+                不変であればさらに良いです。
+                <literal>&lt;natural-id&gt;</literal> 要素内で自然キーのプロパティをマッピングします。
+                Hibernateは必然的にユニークかつnull値を許可する制約を生成し、
+                こうしてマッピングはより自己記述的になります。
             </para>
             
             <para>
-                ƒGƒ“ƒeƒBƒeƒB‚ÌŽ©‘RƒL[ƒvƒƒpƒeƒB‚Ì”äŠr‚ɂ́A
-                <literal>equals()</literal> ‚Æ <literal>hashCode()</literal> ‚ÌŽÀ‘•‚ð‹­‚­‚¨Š©‚ß‚µ‚Ü‚·B
+                エンティティの自然キープロパティの比較には、
+                <literal>equals()</literal> と <literal>hashCode()</literal> の実装を強くお勧めします。
             </para>
 
             <para>
-                ‚±‚̃}ƒbƒsƒ“ƒO‚ÍŽ©‘RŽåƒL[‚ðŽg‚Á‚½ƒGƒ“ƒeƒBƒeƒB‚Å‚ÌŽg—p‚ðˆÓ}‚µ‚Ä‚¢‚Ü‚¹‚ñB
+                このマッピングは自然主キーを使ったエンティティでの使用を意図していません。
             </para>
 
             <itemizedlist spacing="compact">
                 <listitem>
                     <para>
-                        <literal>mutable</literal> (ƒIƒvƒVƒ‡ƒ“, ƒfƒtƒHƒ‹ƒg‚Í <literal>false</literal> ): 
-                        ƒfƒtƒHƒ‹ƒg‚ł́AŽ©‘RŽ¯•ÊŽqƒvƒƒpƒeƒB‚Í•s•Ï(’萔)‚Æ‘z’肳‚ê‚Ä‚¢‚Ü‚·B
+                        <literal>mutable</literal> (オプション, デフォルトは <literal>false</literal> ): 
+                        デフォルトでは、自然識別子プロパティは不変(定数)と想定されています。
                     </para>
                 </listitem>
             </itemizedlist>
@@ -1963,10 +1964,10 @@
             <title>component, dynamic-component</title>
 
             <para>
-                <literal>&lt;component&gt;</literal> —v‘f‚́A
-                ŽqƒIƒuƒWƒFƒNƒg‚̃vƒƒpƒeƒB‚ðeƒNƒ‰ƒX‚̃e[ƒuƒ‹‚̃Jƒ‰ƒ€‚Öƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
-                ƒRƒ“ƒ|[ƒlƒ“ƒg‚ÍŽ©•ª‚̃vƒƒpƒeƒBAƒRƒ“ƒ|[ƒlƒ“ƒgAƒRƒŒƒNƒVƒ‡ƒ“‚̏‡‚É’è‹`‚Å‚«‚Ü‚·B
-                ˆÈ‰º‚́uƒRƒ“ƒ|[ƒlƒ“ƒgv‚ðŒ©‚Ä‚­‚¾‚³‚¢B
+                <literal>&lt;component&gt;</literal> 要素は、
+                子オブジェクトのプロパティを親クラスのテーブルのカラムへマッピングします。
+                コンポーネントは自分のプロパティ、コンポーネント、コレクションの順に定義できます。
+                以下の「コンポーネント」を見てください。
             </para>
 
             <programlistingco>
@@ -1999,72 +2000,72 @@
                 <calloutlist>
                     <callout arearefs="component1">
                         <para>
-                            <literal>name</literal>FƒvƒƒpƒeƒB–¼B
+                            <literal>name</literal>:プロパティ名。
                         </para>               
                     </callout>                   
                     <callout arearefs="component2">
                         <para>
                             <literal>class</literal> 
-                            iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓ŠƒtƒŒƒNƒVƒ‡ƒ“‚É‚æ‚茈’肳‚ê‚éƒvƒƒpƒeƒB‚ÌŒ^jF
-                            ƒRƒ“ƒ|[ƒlƒ“ƒgiŽqjƒNƒ‰ƒX‚Ì–¼‘OB
+                            (オプション - デフォルトはリフレクションにより決定されるプロパティの型):
+                            コンポーネント(子)クラスの名前。
                         </para>                 
                     </callout>
                     <callout arearefs="component3">
                         <para>
-                            <literal>insert</literal> Fƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒJƒ‰ƒ€‚ªSQL‚Ì 
-                            <literal>INSERT</literal> ‚ÉŒ»‚ê‚é‚悤‚É‚·‚é‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B
+                            <literal>insert</literal> :マッピングされたカラムがSQLの 
+                            <literal>INSERT</literal> に現れるようにするどうかを指定します。
                         </para>               
                     </callout>                   
                     <callout arearefs="component4">
                         <para>
-                            <literal>update</literal> : ƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒJƒ‰ƒ€‚ªSQL ‚Ì 
-                            <literal>UPDATE</literal> ‚ÉŒ»‚ê‚é‚悤‚É‚·‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B
+                            <literal>update</literal> : マッピングされたカラムがSQL の 
+                            <literal>UPDATE</literal> に現れるようにするかどうかを指定します。
                         </para>               
                     </callout>                   
                     <callout arearefs="component5">
                         <para>
-                             <literal>access</literal> iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>property</literal> jF
-                            ƒvƒƒpƒeƒB‚Ì’l‚ւ̃AƒNƒZƒX‚ÉHibernate‚ªŽg‚¤í—ªB
+                             <literal>access</literal> (オプション - デフォルトは <literal>property</literal> ):
+                            プロパティの値へのアクセスにHibernateが使う戦略。
                         </para>
                     </callout>
                    <callout arearefs="component6">
                         <para>
-                            <literal>lazy</literal> (optional - ƒfƒtƒHƒ‹ƒg‚Í <literal>false</literal> ):
-                           ƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚ɍŏ‰‚ɃAƒNƒZƒX‚µ‚½‚Æ‚«‚ɁA
-                           ƒRƒ“ƒ|[ƒlƒ“ƒg‚ð’x‰„‚µ‚ătƒFƒbƒ`‚·‚é‚悤Žw’肵‚Ü‚·B
-                           (ƒoƒCƒgƒR[ƒhŽÀ‘•‚ðì¬‚·‚鎞ŠÔ‚ª•K—v‚É‚È‚è‚Ü‚·)
+                            <literal>lazy</literal> (optional - デフォルトは <literal>false</literal> ):
+                           インスタンス変数に最初にアクセスしたときに、
+                           コンポーネントを遅延してフェッチするよう指定します。
+                           (バイトコード実装を作成する時間が必要になります)
                         </para>
                     </callout>
                     <callout arearefs="component7">
                             <para>
-                                <literal>optimistic-lock</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal> ):
-                            ‚±‚̃vƒƒpƒeƒB‚̍XV‚ɁAŠyŠÏƒƒbƒN‚̎擾‚ð—v‹‚·‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B
-                            Œ¾‚¢Š·‚¦‚ê‚΁A‚±‚̃vƒƒpƒeƒB‚ªƒ_[ƒeƒB‚Å‚ ‚é‚Æ‚«‚Ƀo[ƒWƒ‡ƒ“‚𑝂₷‚ׂ«‚©‚ðŒˆ’è‚µ‚Ü‚·B
+                                <literal>optimistic-lock</literal> (オプション - デフォルトは <literal>true</literal> ):
+                            このプロパティの更新に、楽観ロックの取得を要求するかどうかを指定します。
+                            言い換えれば、このプロパティがダーティであるときにバージョンを増やすべきかを決定します。
                             </para>
                     </callout>
                     <callout arearefs="component8">
                             <para>
-                                <literal>unique</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>false</literal> ):
-                                ƒRƒ“ƒ|[ƒlƒ“ƒg‚Ì‚·‚ׂẴ}ƒbƒsƒ“ƒO‚·‚éƒJƒ‰ƒ€‚ɁAƒ†ƒj[ƒN§–ñ‚ª‘¶Ý‚·‚é‚©‚ðŽw’肵‚Ü‚·B
+                                <literal>unique</literal> (オプション - デフォルトは <literal>false</literal> ):
+                                コンポーネントのすべてのマッピングするカラムに、ユニーク制約が存在するかを指定します。
                             </para>
                     </callout>
                 </calloutlist>
             </programlistingco>
 
             <para>
-                Žq‚Ì <literal>&lt;property&gt;</literal> ƒ^ƒO‚ŁA
-                Žq‚̃Nƒ‰ƒX‚̃vƒƒpƒeƒB‚ðƒe[ƒuƒ‹ƒJƒ‰ƒ€‚Ƀ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
+                子の <literal>&lt;property&gt;</literal> タグで、
+                子のクラスのプロパティをテーブルカラムにマッピングします。
             </para>
 
             <para>
-                <literal>&lt;component&gt;</literal> —v‘f‚́AeƒGƒ“ƒeƒBƒeƒB‚Ö–ß‚éŽQÆ‚Æ‚µ‚āA
-                ƒRƒ“ƒ|[ƒlƒ“ƒg‚̃Nƒ‰ƒX‚̃vƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚·‚é <literal>&lt;parent&gt;</literal> ƒTƒu—v‘f‚ð‹–‰Â‚µ‚Ü‚·B
+                <literal>&lt;component&gt;</literal> 要素は、親エンティティへ戻る参照として、
+                コンポーネントのクラスのプロパティをマッピングする <literal>&lt;parent&gt;</literal> サブ要素を許可します。
             </para>
 
             <para>
-                <literal>&lt;dynamic-component&gt;</literal> —v‘f‚́A
-                <literal>Map</literal> ‚ªƒRƒ“ƒ|[ƒlƒ“ƒg‚Æ‚µ‚ă}ƒbƒsƒ“ƒO‚³‚ê‚邱‚Æ‚ð‰Â”\‚É‚µ‚Ü‚·B
-                ƒvƒƒpƒeƒB–¼‚Ímap‚̃L[‚ðŽQÆ‚µ‚Ü‚·B<xref linkend="components-dynamic"/> ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                <literal>&lt;dynamic-component&gt;</literal> 要素は、
+                <literal>Map</literal> がコンポーネントとしてマッピングされることを可能にします。
+                プロパティ名はmapのキーを参照します。<xref linkend="components-dynamic"/> を参照してください。
                 
             </para>
             
@@ -2074,11 +2075,11 @@
             <title>properties</title>
 
             <para>
-                <literal>&lt;properties&gt;</literal> —v‘f‚̓Nƒ‰ƒX‚̃vƒƒpƒeƒB‚ÌŽw’肳‚ꂽA
-                ˜_—“I‚ȃOƒ‹[ƒsƒ“ƒO‚ð‰Â”\‚É‚µ‚Ü‚·B
-                ‚±‚̍\‘¢‚̍łàd—v‚ÈŽg—p•û–@‚́A
-                <literal>property-ref</literal> ‚̃^[ƒQƒbƒg‚É‚È‚éƒvƒƒpƒeƒB‚ÌŒ‹‡‚ð‹–‰Â‚·‚邱‚Æ‚Å‚·B
-                ‚»‚ê‚Í‚Ü‚½A•¡”ƒJƒ‰ƒ€‚̃†ƒj[ƒN§–ñ‚ð’è‹`‚·‚éŠÈ’P‚È•û–@‚Å‚à‚ ‚è‚Ü‚·B
+                <literal>&lt;properties&gt;</literal> 要素はクラスのプロパティの指定された、
+                論理的なグルーピングを可能にします。
+                この構造の最も重要な使用方法は、
+                <literal>property-ref</literal> のターゲットになるプロパティの結合を許可することです。
+                それはまた、複数カラムのユニーク制約を定義する簡単な方法でもあります。
             </para>
 
             <programlistingco>
@@ -2104,40 +2105,40 @@
                 <calloutlist>
                     <callout arearefs="properties1">
                         <para>
-                            <literal>name</literal> : ƒOƒ‹[ƒsƒ“ƒO‚̘_—–¼B
-                            ŽÀÛ‚̃vƒƒpƒeƒB–¼‚Å‚Í <emphasis>‚ ‚è‚Ü‚¹‚ñ</emphasis> B
+                            <literal>name</literal> : グルーピングの論理名。
+                            実際のプロパティ名では <emphasis>ありません</emphasis> 。
                         </para>               
                     </callout>                   
                     <callout arearefs="properties2">
                         <para>
-                            <literal>insert</literal>Fƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒJƒ‰ƒ€‚ªSQL‚Ì 
-                            <literal>INSERT</literal> ‚ÉŒ»‚ê‚é‚悤‚É‚·‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B
+                            <literal>insert</literal>:マッピングされたカラムがSQLの 
+                            <literal>INSERT</literal> に現れるようにするかどうかを指定します。
                         </para>               
                     </callout>                   
                     <callout arearefs="properties3">
                         <para>
-                            <literal>update</literal>Fƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒJƒ‰ƒ€‚ªSQL‚Ì 
-                            <literal>UPDATE</literal> ‚ÉŒ»‚ê‚é‚悤‚É‚·‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B
+                            <literal>update</literal>:マッピングされたカラムがSQLの 
+                            <literal>UPDATE</literal> に現れるようにするかどうかを指定します。
                         </para>               
                     </callout>                   
                     <callout arearefs="properties4">
                             <para>
-                                <literal>optimistic-lock</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal> ):
-                            ‚±‚ê‚ç‚̃vƒƒpƒeƒB‚̍XV‚ÉŠyŠÏ“IƒƒbƒN‚̎擾‚ð—v‹‚·‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B
-                            Œ¾‚¢Š·‚¦‚ê‚΁A‚±‚̃vƒƒpƒeƒB‚ªƒ_[ƒeƒB‚Å‚ ‚é‚Æ‚«‚Ƀo[ƒWƒ‡ƒ“‚𑝂₷‚ׂ«‚©‚ðŒˆ’è‚µ‚Ü‚·B
+                                <literal>optimistic-lock</literal> (オプション - デフォルトは <literal>true</literal> ):
+                            これらのプロパティの更新に楽観的ロックの取得を要求するかどうかを指定します。
+                            言い換えれば、このプロパティがダーティであるときにバージョンを増やすべきかを決定します。
                             </para>
                     </callout>
                     <callout arearefs="properties5">
                             <para>
-                                <literal>unique</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>false</literal> ):
-                                ƒRƒ“ƒ|[ƒlƒ“ƒg‚Ì‚·‚ׂẴ}ƒbƒsƒ“ƒO‚·‚éƒJƒ‰ƒ€‚ɁAƒ†ƒj[ƒN§–ñ‚ª‘¶Ý‚·‚é‚©‚ðŽw’肵‚Ü‚·B
+                                <literal>unique</literal> (オプション - デフォルトは <literal>false</literal> ):
+                                コンポーネントのすべてのマッピングするカラムに、ユニーク制約が存在するかを指定します。
                             </para>
                     </callout>
                 </calloutlist>
             </programlistingco>
             
             <para>
-                —Ⴆ‚΁A‚à‚µˆÈ‰º‚̂悤‚È <literal>&lt;properties&gt;</literal> ƒ}ƒbƒsƒ“ƒO‚ª‚ ‚Á‚½ê‡F
+                例えば、もし以下のような <literal>&lt;properties&gt;</literal> マッピングがあった場合:
             </para>
             
             <programlisting><![CDATA[<class name="Person">
@@ -2152,8 +2153,8 @@
 </class>]]></programlisting>
 
             <para>
-                ŽåƒL[‚Ì‘ã‚í‚è‚É <literal>Person</literal> ƒe[ƒuƒ‹‚̃†ƒj[ƒNƒL[‚Ö‚ÌŽQÆ‚ðŽ‚ÂA
-                ƒŒƒKƒV[ƒf[ƒ^‚ÌŠÖ˜A‚ðŽ‚Â‚©‚à‚µ‚ê‚Ü‚¹‚ñBF
+                主キーの代わりに <literal>Person</literal> テーブルのユニークキーへの参照を持つ、
+                レガシーデータの関連を持つかもしれません。:
             </para>
 
             <programlisting><![CDATA[<many-to-one name="person" 
@@ -2164,7 +2165,7 @@
 </many-to-one>]]></programlisting>
             
             <para>
-                ‚µ‚©‚µA‚±‚̂悤‚ȃŒƒKƒV[ƒf[ƒ^ƒ}ƒbƒsƒ“ƒO‚̃Rƒ“ƒeƒLƒXƒgŠO‚Ö‚ÌŽg—p‚͐„§‚µ‚Ü‚¹‚ñB
+                しかし、このようなレガシーデータマッピングのコンテキスト外への使用は推奨しません。
             </para>
             
         </sect2>
@@ -2173,9 +2174,9 @@
             <title>subclass</title>
 
             <para>
-                ÅŒã‚Ƀ|ƒŠƒ‚[ƒtƒBƒbƒN‚ȉi‘±‰»‚ɂ́Aƒ‹[ƒg‚̉i‘±ƒNƒ‰ƒX‚ÌŠeƒTƒuƒNƒ‰ƒX‚Ì’è‹`‚ª•K—v‚Å‚·B
-                table-per-class-hierarchyƒ}ƒbƒsƒ“ƒOí—ª‚ł́A
-                <literal>&lt;subclass&gt;</literal> ’è‹`‚ªŽg‚í‚ê‚Ü‚·B
+                最後にポリモーフィックな永続化には、ルートの永続クラスの各サブクラスの定義が必要です。
+                table-per-class-hierarchyマッピング戦略では、
+                <literal>&lt;subclass&gt;</literal> 定義が使われます。
             </para>
             
             <programlistingco>
@@ -2202,37 +2203,37 @@
                 <calloutlist>
                     <callout arearefs="subclass1">
                         <para>
-                            <literal>name</literal>FƒTƒuƒNƒ‰ƒX‚ÌŠ®‘SCü‚³‚ꂽƒNƒ‰ƒX–¼B
+                            <literal>name</literal>:サブクラスの完全修飾されたクラス名。
                         </para>              
                     </callout>                   
                     <callout arearefs="subclass2">
                         <para>
-                            <literal>discriminator-value</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓Nƒ‰ƒX–¼jF
-                            ŒÂX‚̃TƒuƒNƒ‰ƒX‚ð‹æ•Ê‚·‚邽‚ß‚Ì’lB
+                            <literal>discriminator-value</literal>(オプション - デフォルトはクラス名):
+                            個々のサブクラスを区別するための値。
                         </para>               
                     </callout>
                     <callout arearefs="subclass3">
                         <para>
-                            <literal>proxy</literal>iƒIƒvƒVƒ‡ƒ“jF
-                            ’x‰„‰Šú‰»ƒvƒƒLƒV‚ÉŽg‚¤ƒNƒ‰ƒX‚âƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽw’肵‚Ü‚·B
+                            <literal>proxy</literal>(オプション):
+                            遅延初期化プロキシに使うクラスやインターフェイスを指定します。
                         </para>               
                     </callout>
                     <callout arearefs="subclass4">
                         <para>
-                            <literal>lazy</literal>iƒIƒvƒVƒ‡ƒ“, ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal> jF 
-                            <literal>lazy="false"</literal> ‚Ɛݒ肷‚é‚ƁA’x‰„ƒtƒFƒbƒ`‚ªŽg—p‚Å‚«‚Ü‚¹‚ñB
+                            <literal>lazy</literal>(オプション, デフォルトは <literal>true</literal> ): 
+                            <literal>lazy="false"</literal> と設定すると、遅延フェッチが使用できません。
                         </para>
                     </callout>    
                 </calloutlist>
             </programlistingco>
 
             <para>
-                ŠeƒTƒuƒNƒ‰ƒX‚ł́A‰i‘±ƒvƒƒpƒeƒB‚ƃTƒuƒNƒ‰ƒX‚ð’è‹`‚µ‚Ü‚·B  
-                <literal>&lt;version&gt;</literal> ‚Æ <literal>&lt;id&gt;</literal> ƒvƒƒpƒeƒB‚́A
-                ƒ‹[ƒgƒNƒ‰ƒX‚©‚çŒp³‚³‚ê‚é‚Ɖ¼’肳‚ê‚Ü‚·B
-                ŠK‘w\‘¢‚É‚¨‚¯‚éƒTƒuƒNƒ‰ƒX‚́A
-                ƒ†ƒj[ƒN‚È <literal>discriminator-value</literal> ‚ð’è‹`‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                none‚ªŽw’肳‚ê‚é‚ƁAŠ®‘SCü‚³‚ꂽJavaƒNƒ‰ƒX–¼‚ªŽg‚í‚ê‚Ü‚·B
+                各サブクラスでは、永続プロパティとサブクラスを定義します。  
+                <literal>&lt;version&gt;</literal> と <literal>&lt;id&gt;</literal> プロパティは、
+                ルートクラスから継承されると仮定されます。
+                階層構造におけるサブクラスは、
+                ユニークな <literal>discriminator-value</literal> を定義しなければなりません。
+                noneが指定されると、完全修飾されたJavaクラス名が使われます。
             </para>
             
 <!--
@@ -2246,15 +2247,15 @@
             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> ƒ}ƒbƒsƒ“ƒO‚ð 
-            <literal>hibernate-mapping</literal> ’¼‰º‚̕ʂ̃}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg“à‚Ő錾‚Å‚«‚Ü‚·B
-            ‚±‚ê‚É‚æ‚èAV‚µ‚¢ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ð’ljÁ‚·‚邾‚¯‚ŃNƒ‰ƒXŠK‘w‚ðŠg’£‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-            ‚ ‚ç‚©‚¶‚߃}ƒbƒsƒ“ƒO‚·‚éƒX[ƒp[ƒNƒ‰ƒX‚ðŽw’肵‚½ƒTƒuƒNƒ‰ƒXƒ}ƒbƒsƒ“ƒO“à‚ŁA
-            <literal>extends</literal> ‘®«‚ðŽw’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-            ’ˆÓF‚±‚Ì“Á«‚̓}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚̏‡”Ô•t‚¯‚ªd—v‚É‚È‚è‚Ü‚·B
-            Hibernate3‚ł́AŠg’£ƒL[ƒ[ƒh‚ðŽg‚¤‚Æ‚«‚ɂ́Aƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚̏‡˜•t‚¯‚Í–â‘è‚É‚È‚è‚Ü‚¹‚ñB
-            ˆê‚‚̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹“à‚ł̏‡˜•t‚¯‚Í–¢‚¾‚ɁAƒTƒuƒNƒ‰ƒX‚Ì‘O‚ɃX[ƒp[ƒNƒ‰ƒX‚Æ‚µ‚Ä’è‹`‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
+            <literal>subclass</literal> 、<literal>union-subclass</literal> 、
+            <literal>joined-subclass</literal> マッピングを 
+            <literal>hibernate-mapping</literal> 直下の別のマッピングドキュメント内で宣言できます。
+            これにより、新しいマッピングファイルを追加するだけでクラス階層を拡張することができます。
+            あらかじめマッピングするスーパークラスを指定したサブクラスマッピング内で、
+            <literal>extends</literal> 属性を指定しなければなりません。
+            注意:この特性はマッピングドキュメントの順番付けが重要になります。
+            Hibernate3では、拡張キーワードを使うときには、マッピングファイルの順序付けは問題になりません。
+            一つのマッピングファイル内での順序付けは未だに、サブクラスの前にスーパークラスとして定義する必要があります。
         </para>
         
     
@@ -2267,7 +2268,7 @@
 -->
 
             <para>
-                Œp³‚̃}ƒbƒsƒ“ƒO‚ÉŠÖ‚·‚éî•ñ‚Í <xref linkend="inheritance"/> ‚ðŒ©‚Ä‚­‚¾‚³‚¢B
+                継承のマッピングに関する情報は <xref linkend="inheritance"/> を見てください。
             </para>
 
         </sect2>
@@ -2277,10 +2278,10 @@
             <title>joined-subclass</title>
 
             <para>
-                ‚à‚¤1‚‚̕û–@‚Æ‚µ‚āAŠeƒTƒuƒNƒ‰ƒX‚ðŽ©g‚̃e[ƒuƒ‹‚Öƒ}ƒbƒsƒ“ƒO‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·
-                (table-per-subclass mapping strategy)B
-                Œp³‚µ‚½ó‘Ԃ̓X[ƒp[ƒNƒ‰ƒX‚̃e[ƒuƒ‹‚ðŽg‚Á‚½Œ‹‡‚ÅŒŸõ‚µ‚Ü‚·B
-                <literal>&lt;joined-subclass&gt;</literal> —v‘f‚ðŽg—p‚µ‚Ü‚·B
+                もう1つの方法として、各サブクラスを自身のテーブルへマッピングすることができます
+                (table-per-subclass mapping strategy)。
+                継承した状態はスーパークラスのテーブルを使った結合で検索します。
+                <literal>&lt;joined-subclass&gt;</literal> 要素を使用します。
             </para>
 
             <programlistingco>
@@ -2313,34 +2314,34 @@
                 <calloutlist>
                     <callout arearefs="joinedsubclass1">
                         <para>
-                            <literal>name</literal>FƒTƒuƒNƒ‰ƒX‚ÌŠ®‘SCü‚³‚ꂽƒNƒ‰ƒX–¼B
+                            <literal>name</literal>:サブクラスの完全修飾されたクラス名。
                         </para>            
                     </callout>                   
                     <callout arearefs="joinedsubclass2">
                         <para>
-                            <literal>table</literal> :ƒTƒuƒNƒ‰ƒXƒe[ƒuƒ‹‚Ì–¼‘OB
+                            <literal>table</literal> :サブクラステーブルの名前。
                         </para>            
                     </callout>                   
                     <callout arearefs="joinedsubclass3">
                         <para>
-                            <literal>proxy</literal> (ƒIƒvƒVƒ‡ƒ“):
-                            ’x‰„‰Šú‰»ƒvƒƒLƒV‚ÉŽg—p‚·‚éƒNƒ‰ƒX‚âƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽw’肵‚Ü‚·B
+                            <literal>proxy</literal> (オプション):
+                            遅延初期化プロキシに使用するクラスやインターフェイスを指定します。
                         </para>              
                     </callout>
                     <callout arearefs="joinedsubclass4">
                         <para>
-                            <literal>lazy</literal> (ƒIƒvƒVƒ‡ƒ“, ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal> ): 
-                            <literal>lazy="false"</literal> ‚Æ‚·‚é‚ƁA’x‰„ƒtƒFƒbƒ`‚ªŽg—p‚Å‚«‚Ü‚¹‚ñB
+                            <literal>lazy</literal> (オプション, デフォルトは <literal>true</literal> ): 
+                            <literal>lazy="false"</literal> とすると、遅延フェッチが使用できません。
                          </para>
                     </callout>    
                 </calloutlist>
             </programlistingco>
 
             <para>
-                ‚±‚̃}ƒbƒsƒ“ƒOí—ª‚ɂ́AŽ¯•ÊƒJƒ‰ƒ€‚Í•K—v‚ ‚è‚Ü‚¹‚ñB
-                ‚µ‚©‚µŠeƒTƒuƒNƒ‰ƒX‚Í <literal>&lt;key&gt;</literal> —v‘f‚ðŽg‚¢A
-                ƒIƒuƒWƒFƒNƒgŽ¯•ÊŽq‚ð•ÛŽ‚·‚éƒe[ƒuƒ‹ƒJƒ‰ƒ€‚ð’è‹`‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                ‚±‚̏͂̏‰‚߂̃}ƒbƒsƒ“ƒO‚͈ȉº‚̂悤‚ɏ‘‚«’¼‚¹‚Ü‚·F
+                このマッピング戦略には、識別カラムは必要ありません。
+                しかし各サブクラスは <literal>&lt;key&gt;</literal> 要素を使い、
+                オブジェクト識別子を保持するテーブルカラムを定義しなければなりません。
+                この章の初めのマッピングは以下のように書き直せます:
             </para>
             
         <programlisting><![CDATA[<?xml version="1.0"?>
@@ -2370,13 +2371,13 @@
         </class>
 
         <class name="eg.Dog">
-                <!-- ‚±‚±‚ÉDog‚̃}ƒbƒsƒ“ƒO‚ð‘‚«‚Ü‚· -->
+                <!-- ここにDogのマッピングを書きます -->
         </class>
 
 </hibernate-mapping>]]></programlisting>
 
              <para>
-                 Œp³‚̃}ƒbƒsƒ“ƒO‚ÉŠÖ‚·‚éî•ñ‚Í <xref linkend="inheritance"/> ‚ðŒ©‚Ä‚­‚¾‚³‚¢B
+                 継承のマッピングに関する情報は <xref linkend="inheritance"/> を見てください。
              </para>
 
         </sect2>
@@ -2385,14 +2386,14 @@
            <title>union-subclass</title>
 
            <para>
-               3‚–ڂ̑I‘ðŽˆ‚ÍAŒp³ŠK‘w‚Ì‹ïÛƒNƒ‰ƒX‚Ì‚Ý‚ðƒe[ƒuƒ‹‚Ƀ}ƒbƒsƒ“ƒO‚·‚邱‚Æ‚Å‚·
-               (the table-per-concrete-classí—ª)B
-               ‚»‚ꂼ‚ê‚̃e[ƒuƒ‹‚ÍŒp³‚̏ó‘Ô‚ðŠÜ‚ß‚·‚ׂẴNƒ‰ƒX‚̉i‘±ó‘Ô‚ð’è‹`‚µ‚Ü‚·B
-               Hibernate‚Å‚Í‚»‚Ì—l‚ÈŒp³ŠK‘w‚ª•K‚¸‚µ‚à•K—v‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-               ’Pƒ‚É‚»‚ꂼ‚ê‚̃Nƒ‰ƒX‚ðA
-               •ÊX‚Ì <literal>&lt;class&gt;</literal> éŒ¾‚ðŽg‚Á‚ă}ƒbƒsƒ“ƒO‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-               ‚µ‚©‚µƒ|ƒŠƒ‚[ƒtƒBƒbƒN‚ÈŠÖ˜A(—Ⴆ‚Î ŠK‘w‚̃X[ƒp[ƒNƒ‰ƒX‚Ö‚ÌŠÖ˜A)‚ðŽg‚¢‚½‚¢‚È‚çA
-               <literal>&lt;union-subclass&gt;</literal> ƒ}ƒbƒsƒ“ƒO‚ðŽg‚¤•K—v‚ª‚ ‚è‚Ü‚·B
+               3つ目の選択肢は、継承階層の具象クラスのみをテーブルにマッピングすることです
+               (the table-per-concrete-class戦略)。
+               それぞれのテーブルは継承の状態を含めすべてのクラスの永続状態を定義します。
+               Hibernateではその様な継承階層が必ずしも必要ではありません。
+               単純にそれぞれのクラスを、
+               別々の <literal>&lt;class&gt;</literal> 宣言を使ってマッピングすることができます。
+               しかしポリモーフィックな関連(例えば 階層のスーパークラスへの関連)を使いたいなら、
+               <literal>&lt;union-subclass&gt;</literal> マッピングを使う必要があります。
                
            </para>
 
@@ -2425,35 +2426,35 @@
                 <calloutlist>
                     <callout arearefs="unionsubclass1">
                         <para>
-                            <literal>name</literal>FƒTƒuƒNƒ‰ƒX‚ÌŠ®‘SCü‚³‚ꂽƒNƒ‰ƒX–¼B
+                            <literal>name</literal>:サブクラスの完全修飾されたクラス名。
                         </para>            
                     </callout>                   
                     <callout arearefs="unionsubclass2">
                         <para>
-                            <literal>table</literal> :ƒTƒuƒNƒ‰ƒXƒe[ƒuƒ‹‚Ì–¼‘OB
+                            <literal>table</literal> :サブクラステーブルの名前。
                         </para>            
                     </callout>                   
                     <callout arearefs="unionsubclass3">
                         <para>
-                            <literal>proxy</literal> (ƒIƒvƒVƒ‡ƒ“):
-                            ’x‰„‰Šú‰»ƒvƒƒLƒV‚ÉŽg—p‚·‚éƒNƒ‰ƒX‚âƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽw’肵‚Ü‚·B
+                            <literal>proxy</literal> (オプション):
+                            遅延初期化プロキシに使用するクラスやインターフェイスを指定します。
                         </para>              
                     </callout>
                     <callout arearefs="unionsubclass4">
                         <para>
-                            <literal>lazy</literal> (ƒIƒvƒVƒ‡ƒ“, ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal> ): 
-                            <literal>lazy="false"</literal> ‚Æ‚·‚é‚ƁA’x‰„ƒtƒFƒbƒ`‚ªŽg—p‚Å‚«‚Ü‚¹‚ñB
+                            <literal>lazy</literal> (オプション, デフォルトは <literal>true</literal> ): 
+                            <literal>lazy="false"</literal> とすると、遅延フェッチが使用できません。
                          </para>
                     </callout>
                 </calloutlist>
             </programlistingco>
 
             <para>
-                ‚±‚̃}ƒbƒsƒ“ƒOí—ª‚Å‚ÍŽ¯•ÊƒJƒ‰ƒ€‚âƒL[ƒJƒ‰ƒ€‚Í•K—v‚ ‚è‚Ü‚¹‚ñB
+                このマッピング戦略では識別カラムやキーカラムは必要ありません。
             </para>
 
             <para>
-                Œp³‚̃}ƒbƒsƒ“ƒO‚ÉŠÖ‚·‚éî•ñ‚Í <xref linkend="inheritance"/> ‚ðŒ©‚Ä‚­‚¾‚³‚¢B
+                継承のマッピングに関する情報は <xref linkend="inheritance"/> を見てください。
             </para>
 
         </sect2>
@@ -2462,8 +2463,8 @@
             <title>join</title>
 
             <para>
-                <literal>&lt;join&gt;</literal> —v‘f‚ðŽg‚¤‚±‚ƂŁA
-                ‚P‚‚̃Nƒ‰ƒX‚̃vƒƒpƒeƒB‚ð‚¢‚­‚‚à‚̃e[ƒuƒ‹‚Ƀ}ƒbƒsƒ“ƒO‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+                <literal>&lt;join&gt;</literal> 要素を使うことで、
+                1つのクラスのプロパティをいくつものテーブルにマッピングすることができます。
             </para>
 
             <programlistingco>
@@ -2492,58 +2493,58 @@
                 <calloutlist>
                     <callout arearefs="join1">
                         <para>
-                            <literal>table</literal> :Œ‹‡‚µ‚½ƒe[ƒuƒ‹‚Ì–¼‘O
+                            <literal>table</literal> :結合したテーブルの名前
                         </para>
                     </callout>
                     <callout arearefs="join2">
                         <para>
-                           <literal>schema</literal> (ƒIƒvƒVƒ‡ƒ“):
-                           ƒ‹[ƒg‚Ì <literal>&lt;hibernate-mapping&gt;</literal> —v‘f‚ÅŽw’肵‚½ƒXƒL[ƒ}–¼‚ð
-                           ƒI[ƒo[ƒ‰ƒCƒh‚µ‚Ü‚·B
+                           <literal>schema</literal> (オプション):
+                           ルートの <literal>&lt;hibernate-mapping&gt;</literal> 要素で指定したスキーマ名を
+                           オーバーライドします。
                         </para>
                     </callout>
                     <callout arearefs="join3">
                         <para>
-                            <literal>catalog</literal> (ƒIƒvƒVƒ‡ƒ“):
-                            ƒ‹[ƒg‚Ì <literal>&lt;hibernate-mapping&gt;</literal> —v‘f‚ÅŽw’肵‚½ƒJƒ^ƒƒO–¼‚ð
-                            ƒI[ƒo[ƒ‰ƒCƒh‚µ‚Ü‚·B
+                            <literal>catalog</literal> (オプション):
+                            ルートの <literal>&lt;hibernate-mapping&gt;</literal> 要素で指定したカタログ名を
+                            オーバーライドします。
                         </para>
                     </callout>
                     <callout arearefs="join4">
                         <para>
-                            <literal>fetch</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>join</literal> ): 
-                            <literal>join</literal> ‚ðÝ’肵‚½ê‡A
-                            Hibernate‚̓fƒtƒHƒ‹ƒg‚ŁAƒNƒ‰ƒX‚âƒX[ƒp[ƒNƒ‰ƒX‚Å’è‹`‚³‚ꂽ <literal>&lt;join&gt;</literal> 
-                            ‚ðŒŸõ‚·‚é‚Ì‚É“à•”Œ‹‡‚ðŽg‚¢AƒTƒuƒNƒ‰ƒX‚Å’è‹`‚³‚ꂽ <literal>&lt;join&gt;</literal> 
-                            ‚ðŒŸõ‚·‚é‚Ì‚ÉŠO•”Œ‹‡‚ðŽg‚¢‚Ü‚·B
-                            <literal>select</literal> ‚ðÝ’肵‚½ê‡‚ɂ́A
-                            Hibernate‚̓TƒuƒNƒ‰ƒX‚Å’è‹`‚³‚ꂽ <literal>&lt;join&gt;</literal> 
-                            ‚Ì‘I‘ð‚ɏ‡ŽŸ‘I‘ð‚ðŽg‚¢‚Ü‚·B‚±‚̏ꍇA
-                            s‚ªƒTƒuƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð‘ã•\‚·‚邱‚Æ‚ª‚í‚©‚Á‚½ê‡‚É‚Ì‚Ý”­s‚³‚ê‚Ü‚·B
-                            “à•”Œ‹‡‚̓Nƒ‰ƒX‚â‚»‚̃X[ƒp[ƒNƒ‰ƒX‚Å’è‹`‚³‚ꂽ <literal>&lt;join&gt;</literal> ‚ðŒŸõ
-                            ‚·‚邽‚ß‚ÉŽg—p‚µ‚Ü‚·B                            
+                            <literal>fetch</literal> (オプション - デフォルトは <literal>join</literal> ): 
+                            <literal>join</literal> を設定した場合、
+                            Hibernateはデフォルトで、クラスやスーパークラスで定義された <literal>&lt;join&gt;</literal> 
+                            を検索するのに内部結合を使い、サブクラスで定義された <literal>&lt;join&gt;</literal> 
+                            を検索するのに外部結合を使います。
+                            <literal>select</literal> を設定した場合には、
+                            Hibernateはサブクラスで定義された <literal>&lt;join&gt;</literal> 
+                            の選択に順次選択を使います。この場合、
+                            行がサブクラスのインスタンスを代表することがわかった場合にのみ発行されます。
+                            内部結合はクラスやそのスーパークラスで定義された <literal>&lt;join&gt;</literal> を検索
+                            するために使用します。                            
                         </para>
                     </callout>
                     <callout arearefs="join5">
                         <para>
-                            <literal>inverse</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>false</literal> ):
-                            ‚à‚µ‰Â”\‚Å‚ ‚ê‚΁AHibernate‚Í‚±‚ÌŒ‹‡‚Å’è‹`‚³‚ê‚Ä‚¢‚éƒvƒƒpƒeƒB‚ɑ΂µ
-                            ‘}“ü‚âXV‚ðs‚¢‚Ü‚¹‚ñB
+                            <literal>inverse</literal> (オプション - デフォルトは <literal>false</literal> ):
+                            もし可能であれば、Hibernateはこの結合で定義されているプロパティに対し
+                            挿入や更新を行いません。
                         </para>
                     </callout>
                     <callout arearefs="join6">
                         <para>
-                            <literal>optional</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>false</literal> ):
-                            ‚à‚µ‰Â”\‚Å‚ ‚ê‚΁AHibernate‚Í‚±‚ÌŒ‹‡‚Å’è‹`‚³‚ꂽƒvƒƒpƒeƒB‚ªnull‚Å‚È‚¢ê‡‚É‚Ì‚Ý
-                            s‚ð‘}“ü‚µA‚»‚̃vƒƒpƒeƒB‚ÌŒŸõ‚ɂ͏í‚ÉŠO•”Œ‹‡‚ðŽg—p‚µ‚Ü‚·B
+                            <literal>optional</literal> (オプション - デフォルトは <literal>false</literal> ):
+                            もし可能であれば、Hibernateはこの結合で定義されたプロパティがnullでない場合にのみ
+                            行を挿入し、そのプロパティの検索には常に外部結合を使用します。
                         </para>
                     </callout>
                 </calloutlist>
             </programlistingco>
 
             <para>
-                —Ⴆ‚ΐl‚̃AƒhƒŒƒX‚̏î•ñ‚𕪗£‚µ‚½ƒe[ƒuƒ‹‚Ƀ}ƒbƒsƒ“ƒO‚·‚邱‚Æ‚ª‰Â”\‚Å‚·
-                (‚·‚ׂẴvƒƒpƒeƒB‚ɑ΂µ‚Ä’lŒ^‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚ð•ÛŽ‚µ‚Ü‚·)B
+                例えば人のアドレスの情報を分離したテーブルにマッピングすることが可能です
+                (すべてのプロパティに対して値型のセマンティクスを保持します)。
             </para>
 
             <programlisting><![CDATA[<class name="Person"
@@ -2560,9 +2561,9 @@
     ...]]></programlisting>
 
             <para>
-                ‚±‚Ì“Á’¥‚Í‚µ‚΂µ‚΃ŒƒKƒV[ƒf[ƒ^ƒ‚ƒfƒ‹‚ɑ΂µ‚Ä‚Ì‚Ý—L—p‚Å‚·‚ªA
-                ƒNƒ‰ƒX‚æ‚è‚à­‚È‚¢ƒe[ƒuƒ‹‚ƁA‚«‚߂ׂ̍©‚¢ƒhƒƒCƒ“ƒ‚ƒfƒ‹‚𐄏§‚µ‚Ü‚·B
-                ‚µ‚©‚µŒã‚Åà–¾‚·‚é‚悤‚ɁA‚P‚‚̃Nƒ‰ƒXŠK‘w‚ÅŒp³‚̃}ƒbƒsƒ“ƒOí—ª‚ðØ‚è‘Ö‚¦‚鎞‚É‚Í—L—p‚Å‚·B
+                この特徴はしばしばレガシーデータモデルに対してのみ有用ですが、
+                クラスよりも少ないテーブルと、きめの細かいドメインモデルを推奨します。
+                しかし後で説明するように、1つのクラス階層で継承のマッピング戦略を切り替える時には有用です。
             </para>
 
         </sect2>
@@ -2571,10 +2572,10 @@
             <title>key</title>
 
             <para>
-                ¡‚܂ʼn½“x‚© <literal>&lt;key&gt;</literal> —v‘f‚ªo‚Ä‚«‚Ü‚µ‚½B
-                ‚±‚Ì—v‘f‚͐V‚µ‚¢ƒe[ƒuƒ‹‚Ö‚ÌŒ‹‡‚ð’è‹`‚µ‚½‚èA
-                Œ‹‡ƒe[ƒuƒ‹‚ÅŠO•”ƒL[‚ð’è‹`‚µ‚½‚è‚·‚ée—v‘f‚Ì‚Ç‚±‚É‚Å‚àŒ»‚êA
-                ƒIƒŠƒWƒiƒ‹ƒe[ƒuƒ‹‚ÌŽåƒL[‚ðŽQÆ‚µ‚Ü‚·B
+                今まで何度か <literal>&lt;key&gt;</literal> 要素が出てきました。
+                この要素は新しいテーブルへの結合を定義したり、
+                結合テーブルで外部キーを定義したりする親要素のどこにでも現れ、
+                オリジナルテーブルの主キーを参照します。
             </para>
 
             <programlistingco>
@@ -2598,72 +2599,72 @@
                 <calloutlist>
                     <callout arearefs="key1">
                         <para>
-                             <literal>column</literal> (ƒIƒvƒVƒ‡ƒ“):ŠO•”ƒL[ƒJƒ‰ƒ€‚Ì–¼‘OB
-                             ƒlƒXƒg‚µ‚½ <literal>&lt;column&gt;</literal> ƒJƒ‰ƒ€‚É‚æ‚Á‚Ä‚àŽw’肳‚ê‚Ü‚·B
+                             <literal>column</literal> (オプション):外部キーカラムの名前。
+                             ネストした <literal>&lt;column&gt;</literal> カラムによっても指定されます。
                         </para>
                     </callout>
                     <callout arearefs="key2">
                         <para>
-                             <literal>on-delete</literal> (ƒIƒvƒVƒ‡ƒ“, ƒfƒtƒHƒ‹ƒg‚Í <literal>noaction</literal>):
-                            ŠO•”ƒL[§–ñ‚ªƒf[ƒ^ƒx[ƒXƒŒƒxƒ‹‚ŃJƒXƒP[ƒhíœ‚ª‰Â”\‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B
+                             <literal>on-delete</literal> (オプション, デフォルトは <literal>noaction</literal>):
+                            外部キー制約がデータベースレベルでカスケード削除が可能かどうかを指定します。
                         </para>
                     </callout>
                     <callout arearefs="key3">
                         <para>
-                             <literal>property-ref</literal> (ƒIƒvƒVƒ‡ƒ“):
-                             ƒIƒŠƒWƒiƒ‹ƒe[ƒuƒ‹‚ÌŽåƒL[‚Å‚Í‚È‚¢ƒJƒ‰ƒ€‚ðŽQÆ‚·‚éŠO•”ƒL[‚ðŽw’肵‚Ü‚·
-                             (ƒŒƒKƒV[ƒf[ƒ^‚ɑ΂µ‚Ä’ñ‹Ÿ‚³‚ê‚Ü‚·)B
+                             <literal>property-ref</literal> (オプション):
+                             オリジナルテーブルの主キーではないカラムを参照する外部キーを指定します
+                             (レガシーデータに対して提供されます)。
                         </para>
                     </callout>
                     <callout arearefs="key4">
                         <para>
-                           <literal>not-null</literal> (ƒIƒvƒVƒ‡ƒ“):
-                           ŠO•”ƒL[ƒJƒ‰ƒ€‚ªnull’l‚ð‹–—e‚µ‚È‚¢‚±‚Æ‚ðŽw’肵‚Ü‚·
-                           (‚±‚Ì‚±‚Æ‚ÍŠO•”ƒL[‚ªŽåƒL[‚̈ꕔ‚Å‚ ‚邱‚Æ‚ðˆÃ–Ù“I‚ÉŽ¦‚µ‚Ü‚·)B
+                           <literal>not-null</literal> (オプション):
+                           外部キーカラムがnull値を許容しないことを指定します
+                           (このことは外部キーが主キーの一部であることを暗黙的に示します)。
                         </para>
                     </callout>
                     <callout arearefs="key5">
                         <para>
-                            <literal>update</literal> (ƒIƒvƒVƒ‡ƒ“):
-                            ŠO•”ƒL[‚ðŒˆ‚µ‚čXV‚µ‚Ä‚Í‚È‚ç‚È‚¢‚±‚Æ‚ðŽw’肵‚Ü‚·
-                            (‚±‚Ì‚±‚Æ‚ÍŠO•”ƒL[‚ªŽåƒL[‚̈ꕔ‚Å‚ ‚邱‚Æ‚ðˆÃ–Ù“I‚ÉŽ¦‚µ‚Ü‚·)B
+                            <literal>update</literal> (オプション):
+                            外部キーを決して更新してはならないことを指定します
+                            (このことは外部キーが主キーの一部であることを暗黙的に示します)。
                             
                         </para>
                     </callout>
                     <callout arearefs="key6">
                         <para>
-                            <literal>unique</literal> (ƒIƒvƒVƒ‡ƒ“):
-                            ŠO•”ƒL[‚ªƒ†ƒj[ƒN§–ñ‚ðŽ‚Â‚×‚«‚Å‚ ‚邱‚Æ‚ðŽw’肵‚Ü‚·
-                            (‚±‚Ì‚±‚Æ‚ÍŠO•”ƒL[‚ªŽåƒL[‚̈ꕔ‚Å‚ ‚邱‚Æ‚ðˆÃ–Ù“I‚ÉŽ¦‚µ‚Ü‚·)B
+                            <literal>unique</literal> (オプション):
+                            外部キーがユニーク制約を持つべきであることを指定します
+                            (このことは外部キーが主キーの一部であることを暗黙的に示します)。
                         </para>
                     </callout>
                 </calloutlist>
             </programlistingco>
 
             <para>
-                íœ‚̃pƒtƒH[ƒ}ƒ“ƒX‚ªd—v‚Å‚ ‚éƒVƒXƒeƒ€‚ɂ́A
-                ‚·‚ׂẴL[‚ð <literal>on-delete="cascade"</literal> ‚Æ’è‹`‚·‚邱‚Ƃ𐄏§‚µ‚Ü‚·B
-                ‚»‚¤‚·‚邱‚Æ‚ÅHibernate‚́A<literal>DELETE</literal> •¶‚𖈉ñ”­s‚·‚é‘ã‚í‚è‚ɁA
-                ƒf[ƒ^ƒx[ƒXƒŒƒxƒ‹‚Ì <literal>ON CASCADE DELETE</literal> §–ñ‚ðŽg—p‚µ‚Ü‚·B
-                ‚±‚Ì“Á’¥‚̓o[ƒWƒ‡ƒ“•t‚¯‚ç‚ꂽƒf[ƒ^‚ɑ΂·‚éHibernate‚̒ʏí‚ÌŠyŠÏ“IƒƒbƒNí—ª‚ð
-                –³Ž‹‚·‚é‚Æ‚¢‚¤‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+                削除のパフォーマンスが重要であるシステムには、
+                すべてのキーを <literal>on-delete="cascade"</literal> と定義することを推奨します。
+                そうすることでHibernateは、<literal>DELETE</literal> 文を毎回発行する代わりに、
+                データベースレベルの <literal>ON CASCADE DELETE</literal> 制約を使用します。
+                この特徴はバージョン付けられたデータに対するHibernateの通常の楽観的ロック戦略を
+                無視するということに注意してください。
             </para>
             
             <para>
-                <literal>not-null</literal> ‚Æ <literal>update</literal> ‘®«‚́A’P•ûŒüˆê‘Α½ŠÖ˜A‚ÌŽž‚É‚Í—L—p‚Å‚·B
-                ’P•ûŒüˆê‘Α½ŠÖ˜A‚ðnull‚ð‹–—e‚µ‚È‚¢ŠO•”ƒL[‚Ƀ}ƒbƒsƒ“ƒO‚·‚é‚Æ‚«‚́A
-                <literal>&lt;key not-null="true"&gt;</literal> ‚ðŽg‚Á‚ăL[ƒJƒ‰ƒ€‚ðéŒ¾
-                 <emphasis> ‚µ‚È‚­‚Ä‚Í‚È‚è‚Ü‚¹‚ñ</emphasis> B
+                <literal>not-null</literal> と <literal>update</literal> 属性は、単方向一対多関連の時には有用です。
+                単方向一対多関連をnullを許容しない外部キーにマッピングするときは、
+                <literal>&lt;key not-null="true"&gt;</literal> を使ってキーカラムを宣言
+                 <emphasis> しなくてはなりません</emphasis> 。
             </para>
 
         </sect2>
 
         <sect2 id="mapping-column" revision="4">
-           <title>column ‚Æ formula —v‘f</title>
+           <title>column と formula 要素</title>
            <para>
-               <literal>column</literal> ‘®«‚ð‹Lq‚Å‚«‚é”CˆÓ‚̃}ƒbƒsƒ“ƒO—v‘f‚Í‚Ü‚½A
-               <literal>&lt;column&gt;</literal> ƒTƒu—v‘f‚à‹Lq‚Å‚«‚Ü‚·B
-               “¯—l‚É <literal>&lt;formula&gt;</literal> ‚à <literal>formula</literal> ‘®«‚Ì‘ã‘ÖŽè’i‚Å‚·B
+               <literal>column</literal> 属性を記述できる任意のマッピング要素はまた、
+               <literal>&lt;column&gt;</literal> サブ要素も記述できます。
+               同様に <literal>&lt;formula&gt;</literal> も <literal>formula</literal> 属性の代替手段です。
            </para>
 
            <programlisting><![CDATA[<column
@@ -2682,9 +2683,9 @@
             <programlisting><![CDATA[<formula>SQL expression</formula>]]></programlisting>
         
             <para>
-                “¯‚¶ƒvƒƒpƒeƒB‚âŠÖ˜A‚̃}ƒbƒsƒ“ƒO‚Ì’†‚ŁA
-                <literal>column</literal> ‚Æ <literal>formula</literal> ‘®«‚ð‘g‚ݍ‡‚킹‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-                —Ⴆ‚΁A“ÁŽê‚ÈŒ‹‡ðŒ‚È‚Ç‚Å‚·B
+                同じプロパティや関連のマッピングの中で、
+                <literal>column</literal> と <literal>formula</literal> 属性を組み合わせることができます。
+                例えば、特殊な結合条件などです。
             </para>
 
             <programlisting><![CDATA[<many-to-one name="homeAddress" class="Address"
@@ -2699,11 +2700,11 @@
             <title>import</title>
 
             <para>
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É“¯‚¶–¼‘O‚Ì2‚‚̉i‘±ƒNƒ‰ƒX‚ª‚ ‚èA
-                HibernateƒNƒGƒŠ‚ÅŠ®‘SCü‚³‚ꂽiƒpƒbƒP[ƒW‚́j–¼‘O‚ðŽw’肵‚½‚­‚È‚¢‚Ɖ¼’肵‚Ü‚·B
-                ‚»‚̂悤‚ȏꍇ‚Í <literal>auto-import="true"</literal> ‚É—Š‚炸A
-                ƒNƒ‰ƒX‚ªuƒCƒ“ƒ|[ƒgv‚³‚ꂽ‚à‚Ì‚Å‚ ‚é‚Æ–¾Ž¦‚Å‚«‚Ü‚·B
-                –¾Ž¦“I‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ä‚¢‚È‚¢ƒNƒ‰ƒX‚âƒCƒ“ƒ^[ƒtƒFƒCƒX‚Å‚³‚¦‚àƒCƒ“ƒ|[ƒg‚Å‚«‚Ü‚·B
+                アプリケーションに同じ名前の2つの永続クラスがあり、
+                Hibernateクエリで完全修飾された(パッケージの)名前を指定したくないと仮定します。
+                そのような場合は <literal>auto-import="true"</literal> に頼らず、
+                クラスが「インポート」されたものであると明示できます。
+                明示的にマッピングされていないクラスやインターフェイスでさえもインポートできます。
             </para>
             
             <programlisting><![CDATA[<import class="java.lang.Object" rename="Universe"/>]]></programlisting>
@@ -2720,13 +2721,13 @@
                 <calloutlist>
                     <callout arearefs="import1">
                         <para>
-                            <literal>class</literal>FJavaƒNƒ‰ƒX‚ÌŠ®‘SCü‚³‚ꂽƒNƒ‰ƒX–¼B
+                            <literal>class</literal>:Javaクラスの完全修飾されたクラス名。
                         </para>              
                     </callout>                   
                     <callout arearefs="import2">
                         <para>
-                            <literal>rename</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚͏Cü‚³‚ê‚Ä‚¢‚È‚¢ƒNƒ‰ƒX–¼jF
-                            ƒNƒGƒŠŒ¾Œê‚ÅŽg‚í‚ê‚é–¼‘OB
+                            <literal>rename</literal>(オプション - デフォルトは修飾されていないクラス名):
+                            クエリ言語で使われる名前。
                         </para>               
                     </callout>
                 </calloutlist>
@@ -2738,21 +2739,21 @@
             <title>any</title>
             
             <para>
-                ƒvƒƒpƒeƒBƒ}ƒbƒsƒ“ƒO‚É‚Í‚³‚ç‚É‚à‚¤1‚‚̌^‚ª‚ ‚è‚Ü‚·B
-                <literal>&lt;any&gt;</literal> ƒ}ƒbƒsƒ“ƒO—v‘f‚́A
-                •¡”‚̃e[ƒuƒ‹‚©‚çƒNƒ‰ƒX‚ւ̃|ƒŠƒ‚[ƒtƒBƒbƒN‚ÈŠÖ˜A‚ð’è‹`‚µ‚Ü‚·B
-                ‚±‚ÌŒ^‚̃}ƒbƒsƒ“ƒO‚É‚Í•K‚¸•¡”‚̃Jƒ‰ƒ€‚ª•K—v‚Å‚·B1”Ԗڂ̃Jƒ‰ƒ€‚ÍŠÖ˜AƒGƒ“ƒeƒBƒeƒB‚ÌŒ^‚ð•ÛŽ‚µ‚Ü‚·B
-                Žc‚è‚̃Jƒ‰ƒ€‚ÍŽ¯•ÊŽq‚ð•ÛŽ‚µ‚Ü‚·B‚±‚ÌŽí—Þ‚ÌŠÖ˜A‚É‚ÍŠO•”ƒL[§–ñ‚ðŽw’è‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB
-                ‚»‚Ì‚½‚ß‚±‚ê‚͍łàŽg‚í‚ê‚邱‚Æ‚Ì‚È‚¢iƒ|ƒŠƒ‚[ƒtƒBƒbƒN‚ȁjŠÖ˜A‚̃}ƒbƒsƒ“ƒO•û–@‚Å‚·B
-                ”ñí‚É“Á•Ê‚ȏꍇi—Ⴆ‚΁AŒŸ¸ƒƒO‚⃆[ƒUƒZƒbƒVƒ‡ƒ“ƒf[ƒ^‚È‚Ç)‚ÉŒÀ‚Á‚āA‚±‚ê‚ðŽg‚¤‚ׂ«‚Å‚·B
+                プロパティマッピングにはさらにもう1つの型があります。
+                <literal>&lt;any&gt;</literal> マッピング要素は、
+                複数のテーブルからクラスへのポリモーフィックな関連を定義します。
+                この型のマッピングには必ず複数のカラムが必要です。1番目のカラムは関連エンティティの型を保持します。
+                残りのカラムは識別子を保持します。この種類の関連には外部キー制約を指定することはできません。
+                そのためこれは最も使われることのない(ポリモーフィックな)関連のマッピング方法です。
+                非常に特別な場合(例えば、検査ログやユーザセッションデータなど)に限って、これを使うべきです。
             </para>
 
             <para>
-                 <literal>meta-type</literal> ‚É‚æ‚èA
-                 ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̓JƒXƒ^ƒ€Œ^‚ðŽw’è‚Å‚«‚Ü‚·B‚±‚̃JƒXƒ^ƒ€Œ^‚Í
-                 ƒf[ƒ^ƒx[ƒXƒJƒ‰ƒ€‚Ì’l‚ðA<literal>id-type</literal> ‚ÅŽw’肵‚½Œ^‚Ì
-                 Ž¯•ÊŽqƒvƒƒpƒeƒB‚ðŽ‚Á‚½‰i‘±ƒNƒ‰ƒX‚Öƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
-                 meta-type‚Ì’l‚©‚çƒNƒ‰ƒX–¼‚ւ̃}ƒbƒsƒ“ƒO‚ðŽw’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+                 <literal>meta-type</literal> により、
+                 アプリケーションはカスタム型を指定できます。このカスタム型は
+                 データベースカラムの値を、<literal>id-type</literal> で指定した型の
+                 識別子プロパティを持った永続クラスへマッピングします。
+                 meta-typeの値からクラス名へのマッピングを指定しなければなりません。
             </para>
 
             <programlisting><![CDATA[<any name="being" id-type="long" meta-type="string">
@@ -2790,37 +2791,37 @@
                 <calloutlist>
                     <callout arearefs="any1">
                         <para>
-                            <literal>name</literal>FƒvƒƒpƒeƒB–¼B
+                            <literal>name</literal>:プロパティ名。
                         </para>            
                     </callout>                   
                     <callout arearefs="any2">
                         <para>
-                            <literal>id-type</literal>FŽ¯•ÊŽq‚ÌŒ^B
+                            <literal>id-type</literal>:識別子の型。
                         </para>            
                     </callout>                   
                     <callout arearefs="any3">
                         <para>
-                            <literal>meta-type</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>string</literal> jF
-                            ƒfƒBƒXƒNƒŠƒ~ƒl[ƒ^ƒ}ƒbƒsƒ“ƒO‚Å‹–‚³‚ꂽŒ^
+                            <literal>meta-type</literal>(オプション - デフォルトは <literal>string</literal> ):
+                            ディスクリミネータマッピングで許された型
                         </para>            
                     </callout>                   
                     <callout arearefs="any4">
                         <para>
-                            <literal>cascade</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>none</literal> jF
-                            ƒJƒXƒP[ƒh‚̃Xƒ^ƒCƒ‹B
+                            <literal>cascade</literal>(オプション - デフォルトは <literal>none</literal> ):
+                            カスケードのスタイル。
                         </para>            
                     </callout>                   
                     <callout arearefs="any5">
                         <para>
-                            <literal>access</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>property</literal> jF
-                            ƒvƒƒpƒeƒB‚Ì’l‚ւ̃AƒNƒZƒX‚ÉHibernate‚ªŽg‚¤í—ªB
+                            <literal>access</literal>(オプション - デフォルトは <literal>property</literal> ):
+                            プロパティの値へのアクセスにHibernateが使う戦略。
                         </para>
                     </callout>
                     <callout arearefs="any6">
                         <para>
-                            <literal>optimistic-lock</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal> ):
-                            ‚±‚̃vƒƒpƒeƒB‚̍XV‚ÉŠyŠÏƒƒbƒN‚̎擾‚ð—v‹‚·‚é‚©‚Ç‚¤‚©‚ðŽw’肵‚Ü‚·B
-                            Œ¾‚¢Š·‚¦‚ê‚΁A‚±‚̃vƒƒpƒeƒB‚ªƒ_[ƒeƒB‚Å‚ ‚é‚Æ‚«‚Ƀo[ƒWƒ‡ƒ“‚𑝂₷‚ׂ«‚©‚ð’è‹`‚µ‚Ü‚·B
+                            <literal>optimistic-lock</literal> (オプション - デフォルトは <literal>true</literal> ):
+                            このプロパティの更新に楽観ロックの取得を要求するかどうかを指定します。
+                            言い換えれば、このプロパティがダーティであるときにバージョンを増やすべきかを定義します。
                         </para>
                     </callout>
                 </calloutlist>
@@ -2831,87 +2832,87 @@
     </sect1>
 
     <sect1 id="mapping-types">
-        <title>Hibernate‚ÌŒ^</title>
+        <title>Hibernateの型</title>
 
         <sect2 id="mapping-types-entitiesvalues" revision="1">
-            <title>ƒGƒ“ƒeƒBƒeƒB‚Æ’l</title>
+            <title>エンティティと値</title>
 
             <para>
-                ‰i‘±ƒT[ƒrƒX‚ÉŠÖ‚í‚é—lX‚ÈJavaŒ¾ŒêƒŒƒxƒ‹‚̃IƒuƒWƒFƒNƒg‚̐U‚é•‘‚¢‚ð—‰ð‚·‚é‚½‚߂ɂ́A
-                ƒIƒuƒWƒFƒNƒg‚ð2‚‚̃Oƒ‹[ƒv‚É•ª‚¯‚é•K—v‚ª‚ ‚è‚Ü‚·F
+                永続サービスに関わる様々なJava言語レベルのオブジェクトの振る舞いを理解するためには、
+                オブジェクトを2つのグループに分ける必要があります:
             </para>
 
             <para>
-                 <emphasis> ƒGƒ“ƒeƒBƒeƒB</emphasis> ‚̓Gƒ“ƒeƒBƒeƒB‚Ö‚ÌŽQÆ‚ð•ÛŽ‚·‚éA
-                ‘¼‚Ì‚·‚ׂẴIƒuƒWƒFƒNƒg‚©‚ç“Æ—§‚µ‚Ä‘¶Ý‚µ‚Ü‚·B
-                ŽQÆ‚³‚ê‚È‚¢ƒIƒuƒWƒFƒNƒg‚ªƒKƒx[ƒWƒRƒŒƒNƒg‚³‚ê‚Ä‚µ‚Ü‚¤«Ž¿‚ðŽ‚Â’Êí‚ÌJavaƒ‚ƒfƒ‹‚ƁA
-                ‚±‚ê‚ð”ä‚ׂĂ݂Ă­‚¾‚³‚¢B
-                ieƒGƒ“ƒeƒBƒeƒB‚©‚çŽq‚ցAƒZ[ƒu‚ƍ폜‚ª <emphasis>ƒJƒXƒP[ƒh</emphasis> ‚³‚ꂤ‚邱‚Æ‚ðœ‚¢‚āj
-                ƒGƒ“ƒeƒBƒeƒB‚Í–¾Ž¦“I‚ɃZ[ƒu‚Ü‚½‚͍폜‚³‚ê‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                ‚±‚ê‚Í“ž’B‰Â”\«‚É‚æ‚éƒIƒuƒWƒFƒNƒg‰i‘±‰»‚ÌODMGƒ‚ƒfƒ‹‚Ƃ͈قȂÁ‚Ä‚¢‚Ü‚·B
-                ‘å‹K–͂ȃVƒXƒeƒ€‚ŃAƒvƒŠƒP[ƒVƒ‡ƒ“ƒIƒuƒWƒFƒNƒg‚ª•’ʂǂ̂悤‚ÉŽg‚í‚ê‚é‚©‚É‚æ‚è–§Ú‚ɑΉž‚µ‚Ü‚·B
-                ƒGƒ“ƒeƒBƒeƒB‚͏zŠÂ‚ÆŽQÆ‚Ì‹¤—L‚ðƒTƒ|[ƒg‚µ‚Ü‚·B
-                ‚Ü‚½‚»‚ê‚ç‚̓o[ƒWƒ‡ƒ“•t‚¯‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B
+                 <emphasis> エンティティ</emphasis> はエンティティへの参照を保持する、
+                他のすべてのオブジェクトから独立して存在します。
+                参照されないオブジェクトがガベージコレクトされてしまう性質を持つ通常のJavaモデルと、
+                これを比べてみてください。
+                (親エンティティから子へ、セーブと削除が <emphasis>カスケード</emphasis> されうることを除いて)
+                エンティティは明示的にセーブまたは削除されなければなりません。
+                これは到達可能性によるオブジェクト永続化のODMGモデルとは異なっています。
+                大規模なシステムでアプリケーションオブジェクトが普通どのように使われるかにより密接に対応します。
+                エンティティは循環と参照の共有をサポートします。
+                またそれらはバージョン付けすることもできます。
                 
             </para>
 
             <para>
-                ƒGƒ“ƒeƒBƒeƒB‚̉i‘±ó‘Ô‚Í‘¼‚̃Gƒ“ƒeƒBƒeƒB‚â <emphasis>’l</emphasis> Œ^‚Ì
-                ƒCƒ“ƒXƒ^ƒ“ƒX‚Ö‚ÌŽQÆ‚©‚ç\¬‚³‚ê‚Ü‚·B
-                ’l‚̓vƒŠƒ~ƒeƒBƒuAƒRƒŒƒNƒVƒ‡ƒ“(ƒRƒŒƒNƒVƒ‡ƒ“‚Ì“à•”‚Å‚Í‚È‚­)A
-                ƒRƒ“ƒ|[ƒlƒ“ƒgA•s•ÏƒIƒuƒWƒFƒNƒg‚Å‚·B
-                ƒGƒ“ƒeƒBƒeƒB‚Ƃ͈ႢA’l‚́i“Á‚ɃRƒŒƒNƒVƒ‡ƒ“‚ƃRƒ“ƒ|[ƒlƒ“ƒg‚É‚¨‚¢‚ājA
-                “ž’B‰Â”\«‚É‚æ‚é‰i‘±‰»‚âíœ‚ª <emphasis>s‚í‚ê‚Ü‚·</emphasis> B
-                ’lƒIƒuƒWƒFƒNƒgi‚ƃvƒŠƒ~ƒeƒBƒuj‚́A•ïŠÜ‚·‚éƒGƒ“ƒeƒBƒeƒB‚ƈꏏ‚ɉi‘±‰»‚âíœ‚ªs‚í‚ê‚é‚̂ŁA
-                ‚»‚ê‚ç‚ð“Æ—§‚Ƀo[ƒWƒ‡ƒ“•t‚¯‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB
-                ’l‚É‚Í“Æ—§‚µ‚½ƒAƒCƒfƒ“ƒeƒBƒeƒB‚ª‚È‚¢‚̂ŁA
-                •¡”‚̃Gƒ“ƒeƒBƒeƒB‚âƒRƒŒƒNƒVƒ‡ƒ“‚ª‚±‚ê‚ð‹¤—L‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB
+                エンティティの永続状態は他のエンティティや <emphasis>値</emphasis> 型の
+                インスタンスへの参照から構成されます。
+                値はプリミティブ、コレクション(コレクションの内部ではなく)、
+                コンポーネント、不変オブジェクトです。
+                エンティティとは違い、値は(特にコレクションとコンポーネントにおいて)、
+                到達可能性による永続化や削除が <emphasis>行われます</emphasis> 。
+                値オブジェクト(とプリミティブ)は、包含するエンティティと一緒に永続化や削除が行われるので、
+                それらを独立にバージョン付けすることはできません。
+                値には独立したアイデンティティがないので、
+                複数のエンティティやコレクションがこれを共有することはできません。
             </para>
 
             <para>
-                ‚±‚ê‚܂Łu‰i‘±ƒNƒ‰ƒXv‚Æ‚¢‚¤Œ¾—t‚ðƒGƒ“ƒeƒBƒeƒB‚̈Ӗ¡‚ÅŽg‚Á‚Ä‚«‚Ü‚µ‚½B
-                ‚±‚ê‚©‚ç‚à‚»‚¤‚µ‚Ä‚¢‚«‚Ü‚·B
-                Œµ–§‚ÉŒ¾‚¤‚ƁA‰i‘±ó‘Ô‚ðŽ‚Âƒ†[ƒU’è‹`‚̃Nƒ‰ƒX‚Ì‚·‚ׂĂª
-                ƒGƒ“ƒeƒBƒeƒB‚Æ‚¢‚¤‚킯‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-                <emphasis>ƒRƒ“ƒ|[ƒlƒ“ƒg</emphasis> ‚Í’l‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚ðŽ‚Âƒ†[ƒU’è‹`ƒNƒ‰ƒX‚Å‚·B
-                <literal>java.lang.String</literal> Œ^‚̃vƒƒpƒeƒB‚à‚Ü‚½’l‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚ðŽ‚¿‚Ü‚·B
-                ’è‹`‚·‚é‚È‚çAJDK‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚·‚ׂĂÌJava‚ÌŒ^(ƒNƒ‰ƒX)‚ª’l‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚ðŽ‚Â‚Æ‚¢‚¦‚Ü‚·B
-                ˆê•ûƒ†[ƒU’è‹`Œ^‚́AƒGƒ“ƒeƒBƒeƒB‚â’lŒ^‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚Æ‚Æ‚à‚Ƀ}ƒbƒsƒ“ƒO‚Å‚«‚Ü‚·B
-                ‚±‚ÌŒˆ’è‚̓AƒvƒŠƒP[ƒVƒ‡ƒ“ŠJ”­ŽÒŽŸ‘æ‚Å‚·B
-                ‚»‚̃Nƒ‰ƒX‚Ì‚P‚‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ö‚Ì‹¤—LŽQÆ‚́A
-                ƒhƒƒCƒ“ƒ‚ƒfƒ‹“à‚̃Gƒ“ƒeƒBƒeƒBƒNƒ‰ƒX‚ɑ΂·‚é—Ç‚¢ƒqƒ“ƒg‚É‚È‚è‚Ü‚·B
-                ˆê•û‡¬W–ñ‚âW–ñ‚́A’ʏí’lŒ^‚Ö•ÏŠ·‚³‚ê‚Ü‚·B
+                これまで「永続クラス」という言葉をエンティティの意味で使ってきました。
+                これからもそうしていきます。
+                厳密に言うと、永続状態を持つユーザ定義のクラスのすべてが
+                エンティティというわけではありません。
+                <emphasis>コンポーネント</emphasis> は値のセマンティクスを持つユーザ定義クラスです。
+                <literal>java.lang.String</literal> 型のプロパティもまた値のセマンティクスを持ちます。
+                定義するなら、JDKで提供されているすべてのJavaの型(クラス)が値のセマンティクスを持つといえます。
+                一方ユーザ定義型は、エンティティや値型のセマンティクスとともにマッピングできます。
+                この決定はアプリケーション開発者次第です。
+                そのクラスの1つのインスタンスへの共有参照は、
+                ドメインモデル内のエンティティクラスに対する良いヒントになります。
+                一方合成集約や集約は、通常値型へ変換されます。
                 
             </para>
 
             <para>
-                –{ƒhƒLƒ…ƒƒ“ƒg‚ð’Ê‚µ‚āA‰½“x‚à‚±‚ÌŠT”O‚ðŽæ‚èã‚°‚Ü‚·B
+                本ドキュメントを通して、何度もこの概念を取り上げます。
             </para>
 
             <para>
-                JavaŒ^‚̃VƒXƒeƒ€(‚à‚µ‚­‚ÍŠJ”­ŽÒ‚ª’è‹`‚µ‚½ƒGƒ“ƒeƒBƒeƒB‚Æ’lŒ^)‚ð
-                SQL/ƒf[ƒ^ƒx[ƒXŒ^‚̃VƒXƒeƒ€‚Ƀ}ƒbƒsƒ“ƒO‚·‚邱‚Ƃ͓‚¢‚Å‚·B
-                Hibernate‚Í‚Q‚‚̃VƒXƒeƒ€‚̉˂¯‹´‚ð’ñ‹Ÿ‚µ‚Ü‚·B
-                ƒGƒ“ƒeƒBƒeƒB‚ɑ΂µ‚Ä‚Í 
-                <literal>&lt;class&gt;</literal> ‚â <literal>&lt;subclass&gt;</literal> ‚È‚Ç‚ðŽg—p‚µ‚Ü‚·B
-                ’lŒ^‚ɑ΂µ‚Ä‚Í <literal>&lt;property&gt;</literal> ‚â 
-                <literal>&lt;component&gt;</literal> ‚È‚Ç‚ðA’ʏí <literal>type</literal> ‚Æ‚Æ‚à‚ÉŽg‚¢‚Ü‚·B
-                ‚±‚Ì‘®«‚Ì’l‚ÍHibernate‚Ì <emphasis>ƒ}ƒbƒsƒ“ƒOŒ^</emphasis> ‚Ì–¼‘O‚Å‚·B
-                Hibernate‚Í(•W€JDK‚Ì’lŒ^‚ɑ΂µ‚Ä)‘½‚­‚ÌŽ©—R‚ȃ}ƒbƒsƒ“ƒO‚ð’ñ‹Ÿ‚µ‚Ü‚·B
-                Œã‚ÅŒ©‚é‚悤‚ɁAŽ©g‚̃}ƒbƒsƒ“ƒOŒ^‚ð‹Lq‚µA“¯—l‚ɃJƒXƒ^ƒ€‚Ì•ÏŠ·í—ª‚ðŽÀ‘•‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+                Java型のシステム(もしくは開発者が定義したエンティティと値型)を
+                SQL/データベース型のシステムにマッピングすることは難しいです。
+                Hibernateは2つのシステムの架け橋を提供します。
+                エンティティに対しては 
+                <literal>&lt;class&gt;</literal> や <literal>&lt;subclass&gt;</literal> などを使用します。
+                値型に対しては <literal>&lt;property&gt;</literal> や 
+                <literal>&lt;component&gt;</literal> などを、通常 <literal>type</literal> とともに使います。
+                この属性の値はHibernateの <emphasis>マッピング型</emphasis> の名前です。
+                Hibernateは(標準JDKの値型に対して)多くの自由なマッピングを提供します。
+                後で見るように、自身のマッピング型を記述し、同様にカスタムの変換戦略を実装することができます。
             </para>
 
             <para>
-                ƒRƒŒƒNƒVƒ‡ƒ“‚ðœ‚­‘g‚ݍž‚Ý‚ÌHibernate‚ÌŒ^‚Í‚·‚ׂāAnullƒZƒ}ƒ“ƒeƒBƒNƒX‚ðƒTƒ|[ƒg‚µ‚Ü‚·B
+                コレクションを除く組み込みのHibernateの型はすべて、nullセマンティクスをサポートします。
             </para>
 
         </sect2>
 
         <sect2 id="mapping-types-basictypes" revision="3">
-            <title>Šî–{“I‚ÈŒ^</title>
+            <title>基本的な型</title>
 
             <para>
-                ‘g‚ݍž‚Ý‚Ì <emphasis>Šî–{“I‚ȃ}ƒbƒsƒ“ƒOŒ^</emphasis> ‚Í‘å‚Ü‚©‚Ɉȉº‚̂悤‚É•ª‚¯‚ç‚ê‚Ü‚·B
+                組み込みの <emphasis>基本的なマッピング型</emphasis> は大まかに以下のように分けられます。
 
                 <variablelist>
                     <varlistentry>
@@ -2919,11 +2920,11 @@
                             boolean, yes_no, true_false</literal></term>
                         <listitem>
                             <para>
-                                Java‚̃vƒŠƒ~ƒeƒBƒu‚⃉ƒbƒp[ƒNƒ‰ƒX‚©‚ç“KØ‚ȁiƒxƒ“ƒ_[ŒÅ—L‚́j
-                                SQLƒJƒ‰ƒ€Œ^‚Ö‚ÌŒ^ƒ}ƒbƒsƒ“ƒOB
-                                <literal>boolean, yes_no</literal> ‚Æ <literal>true_false</literal> ‚́A
-                                ‚·‚ׂÄJava‚Ì <literal>boolean</literal> 
-                                ‚Ü‚½‚Í <literal>java.lang.Boolean</literal> ‚Ì‘ã‘ÖƒGƒ“ƒR[ƒh‚Å‚·B
+                                Javaのプリミティブやラッパークラスから適切な(ベンダー固有の)
+                                SQLカラム型への型マッピング。
+                                <literal>boolean, yes_no</literal> と <literal>true_false</literal> は、
+                                すべてJavaの <literal>boolean</literal> 
+                                または <literal>java.lang.Boolean</literal> の代替エンコードです。
                                 
                             </para>
                         </listitem>
@@ -2932,8 +2933,8 @@
                         <term><literal>string</literal></term>
                         <listitem>
                             <para>
-                                <literal>java.lang.String</literal> ‚©‚ç <literal>VARCHAR</literal> 
-                                i‚Ü‚½‚ÍOracle‚Ì <literal>VARCHAR2</literal> j‚Ö‚ÌŒ^ƒ}ƒbƒsƒ“ƒOB
+                                <literal>java.lang.String</literal> から <literal>VARCHAR</literal> 
+                                (またはOracleの <literal>VARCHAR2</literal> )への型マッピング。
                             </para>
                         </listitem>
                     </varlistentry>
@@ -2941,9 +2942,9 @@
                         <term><literal>date, time, timestamp</literal></term>
                         <listitem>
                             <para>
-                                 <literal>java.util.Date</literal> ‚Æ‚»‚̃TƒuƒNƒ‰ƒX‚©‚çSQLŒ^‚Ì <literal>DATE</literal>, 
-                                <literal>TIME</literal> , <literal>TIMESTAMP</literal> i‚Ü‚½‚Í‚»‚ê‚ç‚Æ“™‰¿‚È‚à‚́j
-                                ‚Ö‚ÌŒ^ƒ}ƒbƒsƒ“ƒOB
+                                 <literal>java.util.Date</literal> とそのサブクラスからSQL型の <literal>DATE</literal>, 
+                                <literal>TIME</literal> , <literal>TIMESTAMP</literal> (またはそれらと等価なもの)
+                                への型マッピング。
                             </para>
                         </listitem>
                     </varlistentry>
@@ -2951,8 +2952,8 @@
                         <term><literal>calendar, calendar_date</literal></term>
                         <listitem>
                             <para>
-                                <literal>java.util.Calendar</literal> ‚©‚çSQLŒ^ ‚́u <literal>TIMESTAMP</literal> , 
-                                 <literal>DATE</literal> (‚Ü‚½‚Í‚»‚ê‚ç‚Æ“™‰¿‚È‚à‚́j‚Ö‚ÌŒ^ƒ}ƒbƒsƒ“ƒOB
+                                <literal>java.util.Calendar</literal> からSQL型 の「 <literal>TIMESTAMP</literal> , 
+                                 <literal>DATE</literal> (またはそれらと等価なもの)への型マッピング。
                             </para>
                         </listitem>
                     </varlistentry>
@@ -2960,8 +2961,8 @@
                         <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‚Ö‚ÌŒ^ƒ}ƒbƒsƒ“ƒOB
+                                <literal>java.math.BigDecimal</literal> と <literal>java.math.BigInteger</literal> 
+                                から <literal>NUMERIC</literal>(またはOracleの <literal>NUMBER</literal> )への型マッピング。
                             </para>
                         </listitem>
                     </varlistentry>
@@ -2970,12 +2971,12 @@
                         <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‚Ö‚ÌŒ^ƒ}ƒbƒsƒ“ƒOB
-                                <literal>Locale</literal> ‚Æ <literal>Currency</literal> ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚́A
-                                ‚»‚ê‚ç‚ÌISOƒR[ƒh‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B 
-                                <literal>TimeZone</literal> ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚́A
-                                ‚»‚ê‚ç‚Ì <literal>ID</literal> ‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B
+                                <literal>java.util.Currency</literal> から <literal>VARCHAR</literal> 
+                                (またはOracleの <literal>VARCHAR2</literal> )への型マッピング。
+                                <literal>Locale</literal> と <literal>Currency</literal> のインスタンスは、
+                                それらのISOコードにマッピングされます。 
+                                <literal>TimeZone</literal> のインスタンスは、
+                                それらの <literal>ID</literal> にマッピングされます。
                             </para>
                         </listitem>
                     </varlistentry>
@@ -2983,9 +2984,9 @@
                         <term><literal>class</literal></term>
                         <listitem>
                             <para>
-                                <literal>java.lang.Class</literal> ‚©‚ç <literal>VARCHAR</literal> 
-                                i‚Ü‚½‚ÍOracle‚Ì <literal>VARCHAR2</literal> j‚Ö‚ÌŒ^ƒ}ƒbƒsƒ“ƒOB
-                                <literal>Class</literal> ‚Í‚»‚ÌŠ®‘SCü‚³‚ꂽ–¼‘O‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B
+                                <literal>java.lang.Class</literal> から <literal>VARCHAR</literal> 
+                                (またはOracleの <literal>VARCHAR2</literal> )への型マッピング。
+                                <literal>Class</literal> はその完全修飾された名前にマッピングされます。
                             </para>
                         </listitem>
                     </varlistentry>
@@ -2993,7 +2994,7 @@
                         <term><literal>binary</literal></term>
                         <listitem>
                             <para>
-                                 ƒoƒCƒg”z—ñ‚́A“KØ‚ÈSQL‚̃oƒCƒiƒŠŒ^‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B
+                                 バイト配列は、適切なSQLのバイナリ型にマッピングされます。
                             </para>
                         </listitem>
                     </varlistentry>
@@ -3001,8 +3002,8 @@
                         <term><literal>text</literal></term>
                         <listitem>
                             <para>
-                                ’·‚¢Java•¶Žš—ñ‚́ASQL‚Ì <literal>CLOB</literal> ‚Ü‚½‚Í 
-                                <literal>TEXT</literal> Œ^‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B
+                                長いJava文字列は、SQLの <literal>CLOB</literal> または 
+                                <literal>TEXT</literal> 型にマッピングされます。
                             </para>
                         </listitem>
                     </varlistentry>
@@ -3010,10 +3011,10 @@
                         <term><literal>serializable</literal></term>
                         <listitem>
                             <para>
-                                ƒVƒŠƒAƒ‰ƒCƒY‰Â”\‚ÈJavaŒ^‚́A“KØ‚ÈSQL‚̃oƒCƒiƒŠŒ^‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B
-                                ƒfƒtƒHƒ‹ƒg‚ÅŠî–{Œ^‚Å‚Í‚È‚¢ƒVƒŠƒAƒ‰ƒCƒY‰Â”\‚ÈJavaƒNƒ‰ƒX‚â
-                                ƒCƒ“ƒ^[ƒtƒFƒCƒX‚Ì–¼‘O‚ðŽw’è‚·‚邱‚ƂŁA
-                                Hibernate‚ÌŒ^‚ð <literal>serializable</literal> ‚Æ‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B
+                                シリアライズ可能なJava型は、適切なSQLのバイナリ型にマッピングされます。
+                                デフォルトで基本型ではないシリアライズ可能なJavaクラスや
+                                インターフェイスの名前を指定することで、
+                                Hibernateの型を <literal>serializable</literal> とすることもできます。
                             </para>
                         </listitem>
                     </varlistentry>
@@ -3021,11 +3022,11 @@
                         <term><literal>clob, blob</literal></term>
                         <listitem>
                             <para>
-                                JDBCƒNƒ‰ƒX <literal>java.sql.Clob</literal> ‚Æ <literal>java.sql.Blob</literal> 
-                                ‚ɑ΂·‚éŒ^ƒ}ƒbƒsƒ“ƒOB
-                                blob‚âclobƒIƒuƒWƒFƒNƒg‚̓gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŠO‚ł͍ė˜—p‚Å‚«‚È‚¢‚½‚߁A
-                                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚æ‚Á‚Ä‚Í•s•Ö‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-                                i‚³‚ç‚ɂ̓hƒ‰ƒCƒoƒTƒ|[ƒg‚ªˆêŠÑ‚µ‚Ä‚¢‚Ü‚¹‚ñBj
+                                JDBCクラス <literal>java.sql.Clob</literal> と <literal>java.sql.Blob</literal> 
+                                に対する型マッピング。
+                                blobやclobオブジェクトはトランザクションの外では再利用できないため、
+                                アプリケーションによっては不便かもしれません。
+                                (さらにはドライバサポートが一貫していません。)
                             </para>
                         </listitem>
                     </varlistentry>
@@ -3037,13 +3038,13 @@
                         </term>
                         <listitem>
                             <para>
-                                ‚Ù‚Æ‚ñ‚ǂ̏ꍇ‚ɉ•ςł ‚éJava‚ÌŒ^‚ɑ΂·‚éŒ^ƒ}ƒbƒsƒ“ƒOB
-                                Hibernate‚Í•s•Ï‚ÈJava‚ÌŒ^‚ɑ΂µ‚Ă͍œK‰»‚ðs‚¢A
-                                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Í‚»‚ê‚ð•s•ÏƒIƒuƒWƒFƒNƒg‚Æ‚µ‚Ĉµ‚¢‚Ü‚·B
-                                —Ⴆ‚Î <literal>imm_timestamp</literal> ‚Æ‚µ‚ă}ƒbƒv‚µ‚½ƒCƒ“ƒXƒ^ƒ“ƒX‚ɑ΂µ‚āA
-                                <literal>Date.setTime()</literal> ‚ðŒÄ‚яo‚µ‚Ä‚Í‚È‚è‚Ü‚¹‚ñB
-                                ƒvƒƒpƒeƒB‚Ì’l‚ð•ÏX‚µ‚»‚̕ύX‚ð‰i‘±‰»‚·‚邽‚߂ɂ́A
-                                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̓vƒƒpƒeƒB‚ɑ΂µ‚ĐV‚µ‚¢(“¯ˆê‚Å‚È‚¢)ƒIƒuƒWƒFƒNƒg‚ðŠ„‚è“–‚Ä‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+                                ほとんどの場合に可変であるJavaの型に対する型マッピング。
+                                Hibernateは不変なJavaの型に対しては最適化を行い、
+                                アプリケーションはそれを不変オブジェクトとして扱います。
+                                例えば <literal>imm_timestamp</literal> としてマップしたインスタンスに対して、
+                                <literal>Date.setTime()</literal> を呼び出してはなりません。
+                                プロパティの値を変更しその変更を永続化するためには、
+                                アプリケーションはプロパティに対して新しい(同一でない)オブジェクトを割り当てなければなりません。
                             </para>
                         </listitem>
                     </varlistentry>                    
@@ -3052,41 +3053,41 @@
             </para>
 
             <para>
-                ƒGƒ“ƒeƒBƒeƒB‚ƃRƒŒƒNƒVƒ‡ƒ“‚̃†ƒj[ƒN‚ÈŽ¯•ÊŽq‚́A<literal>binary</literal> , <literal>blob</literal> , 
-                <literal>clob</literal> ‚ðœ‚­A‚Ç‚ñ‚ÈŠî–{Œ^‚Å‚à\‚¢‚Ü‚¹‚ñB
-                i•¡‡Ž¯•ÊŽq‚Å‚à\‚¢‚Ü‚¹‚ñBˆÈ‰º‚ðŒ©‚Ä‚­‚¾‚³‚¢Bj
+                エンティティとコレクションのユニークな識別子は、<literal>binary</literal> , <literal>blob</literal> , 
+                <literal>clob</literal> を除く、どんな基本型でも構いません。
+                (複合識別子でも構いません。以下を見てください。)
             </para>
             
             <para>
-                Šî–{“I‚È’lŒ^‚ɂ́A<literal>org.hibernate.Hibernate</literal> ‚Å’è‹`‚³‚ꂽ 
-                <literal>Type</literal> ’萔‚ª‚»‚ꂼ‚ê‚ ‚è‚Ü‚·B
-                —Ⴆ‚΁A<literal>Hibernate.STRING</literal> ‚Í <literal>string</literal> Œ^‚ð•\Œ»‚µ‚Ä‚¢‚Ü‚·B
+                基本的な値型には、<literal>org.hibernate.Hibernate</literal> で定義された 
+                <literal>Type</literal> 定数がそれぞれあります。
+                例えば、<literal>Hibernate.STRING</literal> は <literal>string</literal> 型を表現しています。
             </para>
 
         </sect2>
         
         <sect2 id="mapping-types-custom" revision="2">
-            <title>ƒJƒXƒ^ƒ€Œ^</title>
+            <title>カスタム型</title>
 
             <para>
-                  ŠJ”­ŽÒ‚ª“ÆŽ©‚Ì’lŒ^‚ðì¬‚·‚邱‚Ƃ́A”äŠr“IŠÈ’P‚Å‚·B
-                —Ⴆ‚΁A<literal>java.lang.BigInteger</literal> Œ^‚̃vƒƒpƒeƒB‚ð 
-                <literal>VARCHAR</literal> ƒJƒ‰ƒ€‚ɉi‘±‰»‚µ‚½‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-                Hibernate‚Í‚±‚Ì‚½‚ß‚Ì‘g‚ݍž‚ÝŒ^‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚¹‚ñB
-                ‚µ‚©‚µƒJƒXƒ^ƒ€Œ^‚́AƒvƒƒpƒeƒBi‚Ü‚½‚̓RƒŒƒNƒVƒ‡ƒ“‚Ì—v‘fj‚ð1‚‚̃e[ƒuƒ‹ƒJƒ‰ƒ€‚É
-                ƒ}ƒbƒsƒ“ƒO‚·‚é‚̂ɐ§ŒÀ‚Í‚ ‚è‚Ü‚¹‚ñB
-                ‚»‚Ì‚½‚ߗႦ‚΁A<literal>java.lang.String</literal> Œ^‚Ì 
+                  開発者が独自の値型を作成することは、比較的簡単です。
+                例えば、<literal>java.lang.BigInteger</literal> 型のプロパティを 
+                <literal>VARCHAR</literal> カラムに永続化したいかもしれません。
+                Hibernateはこのための組み込み型を用意していません。
+                しかしカスタム型は、プロパティ(またはコレクションの要素)を1つのテーブルカラムに
+                マッピングするのに制限はありません。
+                そのため例えば、<literal>java.lang.String</literal> 型の 
                 <literal>getName()</literal> / <literal>setName()</literal> 
-                JavaƒvƒƒpƒeƒB‚ð <literal>FIRST_NAME</literal> , <literal>INITIAL</literal>, <literal>SURNAME</literal> 
-                ƒJƒ‰ƒ€‚ɉi‘±‰»‚Å‚«‚Ü‚·B
+                Javaプロパティを <literal>FIRST_NAME</literal> , <literal>INITIAL</literal>, <literal>SURNAME</literal> 
+                カラムに永続化できます。
             </para>
             
             <para>
-                ƒJƒXƒ^ƒ€Œ^‚ðŽÀ‘•‚·‚é‚ɂ́A<literal>org.hibernate.UserType</literal> ‚Ü‚½‚Í 
-                <literal>org.hibernate.CompositeUserType</literal> ‚ðŽÀ‘•‚µA
-                Œ^‚ÌŠ®‘SCü‚³‚ꂽ–¼‘O‚ðŽg‚Á‚ăvƒƒpƒeƒB‚ð’è‹`‚µ‚Ü‚·B
-                ‚ǂ̂悤‚ÈŽí—Þ‚Ì‚à‚Ì‚ª‰Â”\‚©‚𒲂ׂé‚ɂ́A
-                <literal>org.hibernate.test.DoubleStringType</literal> ‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B
+                カスタム型を実装するには、<literal>org.hibernate.UserType</literal> または 
+                <literal>org.hibernate.CompositeUserType</literal> を実装し、
+                型の完全修飾された名前を使ってプロパティを定義します。
+                どのような種類のものが可能かを調べるには、
+                <literal>org.hibernate.test.DoubleStringType</literal> を確認してください。
             </para>
 
             <programlisting><![CDATA[<property name="twoStrings" type="org.hibernate.test.DoubleStringType">
@@ -3095,22 +3096,22 @@
 </property>]]></programlisting>
 
             <para>
-                <literal>&lt;column&gt;</literal> ƒ^ƒO‚ŁA
-                ƒvƒƒpƒeƒB‚𕡐”‚̃Jƒ‰ƒ€‚Öƒ}ƒbƒsƒ“ƒO‚Å‚«‚邱‚Æ‚É’–Ú‚µ‚Ä‚­‚¾‚³‚¢B
+                <literal>&lt;column&gt;</literal> タグで、
+                プロパティを複数のカラムへマッピングできることに注目してください。
             </para>
             
             <para>
                 <literal>CompositeUserType</literal> , <literal>EnhancedUserType</literal> ,
                 <literal>UserCollectionType</literal> , <literal>UserVersionType</literal> 
-                ƒCƒ“ƒ^[ƒtƒFƒCƒX‚́A‚æ‚è“ÁŽê‚ÈŽg—p–@‚ɑ΂µ‚ẴTƒ|[ƒg‚ð’ñ‹Ÿ‚µ‚Ü‚·B
+                インターフェイスは、より特殊な使用法に対してのサポートを提供します。
             </para>
             
             <para>
-                ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹“à‚Å <literal>UserType</literal> ‚Öƒpƒ‰ƒ[ƒ^‚ð’ñ‹Ÿ‚Å‚«‚Ü‚·B
-                ‚±‚Ì‚½‚߂ɂ́A<literal>UserType</literal> ‚Í 
-                <literal>org.hibernate.usertype.ParameterizedType</literal> ‚ðŽÀ‘•‚µ‚È‚­‚Ä‚Í‚È‚è‚Ü‚¹‚ñB
-                ƒJƒXƒ^ƒ€Œ^ƒpƒ‰ƒ[ƒ^‚ð’ñ‹Ÿ‚·‚邽‚߂ɁA
-                ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹“à‚Å <literal>&lt;type&gt;</literal> —v‘f‚ðŽg—p‚Å‚«‚Ü‚·B
+                マッピングファイル内で <literal>UserType</literal> へパラメータを提供できます。
+                このためには、<literal>UserType</literal> は 
+                <literal>org.hibernate.usertype.ParameterizedType</literal> を実装しなくてはなりません。
+                カスタム型パラメータを提供するために、
+                マッピングファイル内で <literal>&lt;type&gt;</literal> 要素を使用できます。
             </para>
             
             <programlisting><![CDATA[<property name="priority">
@@ -3120,17 +3121,17 @@
 </property>]]></programlisting>
 
             <para>
-                <literal>UserType</literal> ‚́A
-                ˆø”‚Æ‚µ‚Ä“n‚³‚ꂽ <literal>Properties</literal> ƒIƒuƒWƒFƒNƒg‚©‚çA
-                <literal>default</literal> ‚ÅŽw’肵‚½ƒpƒ‰ƒ[ƒ^‚ɑ΂·‚é’l‚ðŒŸõ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+                <literal>UserType</literal> は、
+                引数として渡された <literal>Properties</literal> オブジェクトから、
+                <literal>default</literal> で指定したパラメータに対する値を検索することができます。
             </para>
             
             <para>
-                “Á’è‚Ì <literal>UserType</literal> ‚ð•p”É‚ÉŽg—p‚·‚é‚È‚ç‚΁A’Z‚¢–¼‘O‚ð’è‹`‚·‚é‚Æ•Ö—˜‚É‚È‚é‚Å‚µ‚傤B
-                <literal>&lt;typedef&gt;</literal> —v‘f‚ðŽg‚Á‚Ä‚±‚̂悤‚È‚±‚Æ‚ªs‚¦‚Ü‚·B
-                Typedefs‚̓JƒXƒ^ƒ€Œ^‚É–¼‘O‚ðŠ„‚è“–‚Ä‚Ü‚·B
-                ‚»‚ÌŒ^‚ªƒpƒ‰ƒ[ƒ^‚ðŽ‚Â‚È‚ç‚΁A
-                ƒpƒ‰ƒ[ƒ^‚̃fƒtƒHƒ‹ƒg’l‚̃ŠƒXƒg‚ðŠÜ‚Þ‚±‚Æ‚à‚Å‚«‚Ü‚·B
+                特定の <literal>UserType</literal> を頻繁に使用するならば、短い名前を定義すると便利になるでしょう。
+                <literal>&lt;typedef&gt;</literal> 要素を使ってこのようなことが行えます。
+                Typedefsはカスタム型に名前を割り当てます。
+                その型がパラメータを持つならば、
+                パラメータのデフォルト値のリストを含むこともできます。
             </para>
             
             <programlisting><![CDATA[<typedef class="com.mycompany.usertypes.DefaultValueIntegerType" name="default_zero">
@@ -3140,21 +3141,21 @@
             <programlisting><![CDATA[<property name="priority" type="default_zero"/>]]></programlisting>
 
             <para>
-                ƒvƒƒpƒeƒB‚̃}ƒbƒsƒ“ƒO‚ÅŒ^ƒpƒ‰ƒ[ƒ^‚ðŽg‚¤‚±‚ƂŁA
-                typedef‚Å’ñ‹Ÿ‚³‚ꂽƒpƒ‰ƒ[ƒ^‚ð‚»‚Ì“s“xƒI[ƒo[ƒ‰ƒCƒh‚·‚邱‚Æ‚ª‰Â”\‚Å‚·B
+                プロパティのマッピングで型パラメータを使うことで、
+                typedefで提供されたパラメータをその都度オーバーライドすることが可能です。
                 
             </para>
             
             <para>
-                Hibernate‚Ì•L‚¢‘g‚ݍž‚ÝŒ^‚ƃRƒ“ƒ|[ƒlƒ“ƒg‚ɑ΂·‚éƒTƒ|[ƒg‚́A
-                ƒJƒXƒ^ƒ€Œ^‚ð‚ß‚Á‚½‚É <emphasis>Žg‚í‚È‚¢</emphasis> ‚Æ‚¢‚¤‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B
-                ‚»‚ê‚Å‚à‚È‚¨AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Å•po‚·‚é(ƒGƒ“ƒeƒBƒeƒB‚Å‚Í‚È‚¢)ƒNƒ‰ƒX‚ɑ΂·‚éƒJƒXƒ^ƒ€Œ^‚ÌŽg—p‚́A
-                ‚æ‚¢‚â‚è•û‚Å‚ ‚é‚Æ‚Ý‚È‚³‚ê‚Ü‚·B
-                —Ⴆ‚Î <literal>MonetaryAmount</literal> ƒNƒ‰ƒX‚̓Rƒ“ƒ|[ƒlƒ“ƒg‚Æ‚µ‚ÄŠÈ’P‚Ƀ}ƒbƒsƒ“ƒO‚Å‚«‚Ü‚·‚ªA
-                <literal>CompositeUserType</literal> ‚Ì—Ç‚¢Œó•â‚Å‚·B
-                ƒJƒXƒ^ƒ€Œ^‚ðŽg—p‚·‚é“®‹@‚Ì1‚‚͒ŠÛ‰»‚Å‚·B
-                ƒJƒXƒ^ƒ€Œ^‚ðŽg‚¤‚±‚ƂŁA’ʉ݂ð‚ǂ̂悤‚É•\Œ»‚µ‚悤‚Æ‚à
-                ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚Í‹N‚±‚肤‚é•Ï‰»‚ɑΉž‚Å‚«‚Ü‚·B
+                Hibernateの幅広い組み込み型とコンポーネントに対するサポートは、
+                カスタム型をめったに <emphasis>使わない</emphasis> ということを意味します。
+                それでもなお、アプリケーションで頻出する(エンティティではない)クラスに対するカスタム型の使用は、
+                よいやり方であるとみなされます。
+                例えば <literal>MonetaryAmount</literal> クラスはコンポーネントとして簡単にマッピングできますが、
+                <literal>CompositeUserType</literal> の良い候補です。
+                カスタム型を使用する動機の1つは抽象化です。
+                カスタム型を使うことで、通貨をどのように表現しようとも
+                マッピングドキュメントは起こりうる変化に対応できます。
             </para>
 
         </sect2>
@@ -3163,15 +3164,15 @@
     
     
     <sect1 id="mapping-entityname">
-        <title>‚P‚‚̃Nƒ‰ƒX‚É‚P‚ˆȏã‚̃}ƒbƒsƒ“ƒO</title>
+        <title>1つのクラスに1つ以上のマッピング</title>
         <para>
-            ‚ ‚é‰i‘±ƒNƒ‰ƒX‚ɁAˆê‚ˆȏã‚̃}ƒbƒsƒ“ƒO‚ð’ñ‹Ÿ‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B
-            ‚±‚̏ꍇAƒ}ƒbƒsƒ“ƒO‚·‚é‚Q‚‚̃Gƒ“ƒeƒBƒeƒB‚̃Cƒ“ƒXƒ^ƒ“ƒX‚𖾊m‚É‚·‚邽‚߂ɁA
-            <emphasis>ƒGƒ“ƒeƒBƒeƒB–¼</emphasis> ‚ðŽw’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ
-            (ƒfƒtƒHƒ‹ƒg‚ł̓Gƒ“ƒeƒBƒeƒB–¼‚̓Nƒ‰ƒX–¼‚Æ“¯‚¶‚Å‚·B)B
-            ‰i‘±ƒIƒuƒWƒFƒNƒg‚ðˆµ‚¤‚Æ‚«AƒNƒGƒŠ‚ð‘‚«ž‚Þ‚Æ‚«A
-            Žw’肳‚ꂽƒGƒ“ƒeƒBƒeƒB‚Ö‚ÌŠÖ˜A‚ðƒ}ƒbƒsƒ“ƒO‚·‚é‚Æ‚«‚ɂ́A
-            Hibernate‚ł̓Gƒ“ƒeƒBƒeƒB–¼‚ðŽw’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+            ある永続クラスに、一つ以上のマッピングを提供することが出来ます。
+            この場合、マッピングする2つのエンティティのインスタンスを明確にするために、
+            <emphasis>エンティティ名</emphasis> を指定しなければなりません
+            (デフォルトではエンティティ名はクラス名と同じです。)。
+            永続オブジェクトを扱うとき、クエリを書き込むとき、
+            指定されたエンティティへの関連をマッピングするときには、
+            Hibernateではエンティティ名を指定しなければなりません。
         </para>
         
         <programlisting><![CDATA[<class name="Contract" table="Contracts" 
@@ -3193,19 +3194,19 @@
 </class>]]></programlisting>
 
         <para>
-            ŠÖ˜A‚ª<literal>class</literal> ‚Ì‘ã‚í‚è‚É <literal>entity-name</literal> ‚ðŽg‚Á‚āA
-            ‚ǂ̂悤‚ÉŽw’肳‚ê‚é‚Ì‚©‚É’–Ú‚µ‚Ä‚­‚¾‚³‚¢B
+            関連が<literal>class</literal> の代わりに <literal>entity-name</literal> を使って、
+            どのように指定されるのかに注目してください。
         </para>
 
     </sect1>
 
     <sect1 id="mapping-quotedidentifiers">
-            <title>ƒoƒbƒNƒNƒH[ƒg‚ň͂ñ‚¾ SQL Ž¯•ÊŽq</title>
+            <title>バッククォートで囲んだ SQL 識別子</title>
             <para>
-                ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚Ńe[ƒuƒ‹‚âƒJƒ‰ƒ€‚Ì–¼‘O‚ðƒoƒbƒNƒNƒH[ƒg‚ň͂ނ±‚ƂŁA
-                Hibernate‚Ő¶¬‚³‚ꂽSQL’†‚ÌŽ¯•ÊŽq‚ðˆø—p‚³‚¹‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-                Hibernate‚ÍSQL‚Ì <literal>Dialect</literal> ‚ɑΉž‚·‚éA³‚µ‚¢ˆø—pƒXƒ^ƒCƒ‹‚ðŽg‚¢‚Ü‚·
-                i•’ʂ̓_ƒuƒ‹ƒNƒH[ƒg‚Å‚·‚ªASQL Server‚Å‚Í‚©‚¬Š‡ŒÊAMySQL‚ł̓oƒbƒNƒNƒH[ƒg‚Å‚·jB
+                マッピングドキュメントでテーブルやカラムの名前をバッククォートで囲むことで、
+                Hibernateで生成されたSQL中の識別子を引用させることができます。
+                HibernateはSQLの <literal>Dialect</literal> に対応する、正しい引用スタイルを使います
+                (普通はダブルクォートですが、SQL Serverではかぎ括弧、MySQLではバッククォートです)。
             </para>
 
             <programlisting><![CDATA[<class name="LineItem" table="`Line Item`">
@@ -3218,21 +3219,21 @@
 
       
        <sect1 id="mapping-alternatives">
-       <title>ƒƒ^ƒf[ƒ^‚Ì‘ã‘ÖŽè’i</title>
+       <title>メタデータの代替手段</title>
        
        <para>
-            XML‚Ì‹LqˆÈŠO‚ɁA
-            Hibernate‚Å‚ÍO/Rƒ}ƒbƒsƒ“ƒO‚̃ƒ^ƒf[ƒ^‚ð’è‹`‚·‚é‘ã‘Ö•û–@‚ª‚ ‚è‚Ü‚·B
+            XMLの記述以外に、
+            HibernateではO/Rマッピングのメタデータを定義する代替方法があります。
        </para>
 
     <sect2 id="mapping-xdoclet">
-        <title>XDoclet ƒ}[ƒNƒAƒbƒv‚ÌŽg—p</title>
+        <title>XDoclet マークアップの使用</title>
 
         <para>
-            ‘½‚­‚ÌHibernateƒ†[ƒU‚ÍXDoclet‚Ì <literal>@hibernate.tags</literal> ‚ðŽg‚Á‚āA
-            ƒ\[ƒXƒR[ƒh“à‚É’¼Úƒ}ƒbƒsƒ“ƒOî•ñ‚𖄂ߍž‚Þ‚±‚Æ‚ðD‚Ý‚Ü‚·B
-            ‚±‚ê‚ÍŒµ–§‚ÉŒ¾‚¦‚ÎXDoclet‚Ì•ª–ì‚Ȃ̂ŁA–{ƒhƒLƒ…ƒƒ“ƒg‚Å‚Í‚±‚Ì•û–@‚ð‘ΏۂƂ͂µ‚Ü‚¹‚ñB
-            ‚µ‚©‚µXDoclet‚ðŽg‚Á‚½ˆÈ‰º‚Ì <literal>Cat</literal> ƒ}ƒbƒsƒ“ƒO‚Ì—á‚ðŽ¦‚µ‚Ü‚·B
+            多くのHibernateユーザはXDocletの <literal>@hibernate.tags</literal> を使って、
+            ソースコード内に直接マッピング情報を埋め込むことを好みます。
+            これは厳密に言えばXDocletの分野なので、本ドキュメントではこの方法を対象とはしません。
+            しかしXDocletを使った以下の <literal>Cat</literal> マッピングの例を示します。
         </para>
 
         <programlisting><![CDATA[package eg;
@@ -3341,30 +3342,30 @@
 }]]></programlisting>
 
         <para>
-            Hibernate‚̃EƒFƒuƒTƒCƒg‚ɂ́AXDoclet‚ÆHibernate‚ÉŠÖ‚·‚éƒTƒ“ƒvƒ‹‚ª‘½”‚ ‚è‚Ü‚·B
+            Hibernateのウェブサイトには、XDocletとHibernateに関するサンプルが多数あります。
         </para>
 
     </sect2>
 
     <sect2 id="mapping-annotations" revision="2">
-        <title>JDK 5.0 ƒAƒmƒe[ƒVƒ‡ƒ“‚ÌŽg—p</title>
+        <title>JDK 5.0 アノテーションの使用</title>
 
         <para>
-            JDK5.0‚ł̓^ƒCƒvƒZ[ƒt‚©‚ƒRƒ“ƒpƒCƒ‹Žž‚Ƀ`ƒFƒbƒN‚Å‚«‚éA
-            Œ¾ŒêƒŒƒxƒ‹‚ÌXDocletƒXƒ^ƒCƒ‹‚̃Aƒmƒe[ƒVƒ‡ƒ“‚𓱓ü‚µ‚Ü‚µ‚½B
-            ‚±‚̃ƒJƒjƒYƒ€‚ÍXDoclet‚̃Aƒmƒe[ƒVƒ‡ƒ“‚æ‚è‚à‹­—͂ŁAƒc[ƒ‹‚âIDE‚à‘½‚­‚ªƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B
-            —Ⴆ‚ÎIntelliJ IDEA‚́AJDK5.0‚ɃAƒmƒe[ƒVƒ‡ƒ“‚ÌŽ©“®•âŠ®‚ƍ\•¶‚Ì‹­’²•\Ž¦‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B
-            EJBŽd—l (JSR-220)‚̐V‚µ‚¢ƒo[ƒWƒ‡ƒ“‚ł́AƒGƒ“ƒeƒBƒeƒBƒr[ƒ“‚ɑ΂·‚éŽå—v‚ȃƒ^ƒf[ƒ^ƒƒJƒjƒYƒ€‚Æ‚µ‚Ä
-            JDK5.0‚̃Aƒmƒe[ƒVƒ‡ƒ“‚ðŽg—p‚µ‚Ä‚¢‚Ü‚·B
-            Hibernate3‚Å‚ÍJSR-220 (‰i‘±‰»API)‚Ì <literal>EntityManager</literal> ‚ðŽÀ‘•‚µA
-            ƒƒ^ƒf[ƒ^ƒ}ƒbƒsƒ“ƒO‚ɑ΂·‚éƒTƒ|[ƒg‚́A
-            •Êƒ_ƒEƒ“ƒ[ƒh‚Ì <emphasis>Hibernate Annotations</emphasis> ƒpƒbƒP[ƒW‚É‚æ‚è—˜—p‰Â”\‚Å‚·B
-            ‚±‚ê‚ÍEJB3(JSR-220)‚ÆHibernate3‚̃ƒ^ƒf[ƒ^‚ð‚Ç‚¿‚ç‚àƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B
+            JDK5.0ではタイプセーフかつコンパイル時にチェックできる、
+            言語レベルのXDocletスタイルのアノテーションを導入しました。
+            このメカニズムはXDocletのアノテーションよりも強力で、ツールやIDEも多くがサポートしています。
+            例えばIntelliJ IDEAは、JDK5.0にアノテーションの自動補完と構文の強調表示をサポートしています。
+            EJB仕様 (JSR-220)の新しいバージョンでは、エンティティビーンに対する主要なメタデータメカニズムとして
+            JDK5.0のアノテーションを使用しています。
+            Hibernate3ではJSR-220 (永続化API)の <literal>EntityManager</literal> を実装し、
+            メタデータマッピングに対するサポートは、
+            別ダウンロードの <emphasis>Hibernate Annotations</emphasis> パッケージにより利用可能です。
+            これはEJB3(JSR-220)とHibernate3のメタデータをどちらもサポートしています。
             
         </para>
 
         <para>
-            ˆÈ‰º‚ÍEJB‚̃Gƒ“ƒeƒBƒeƒBƒr[ƒ“‚Æ‚µ‚Ä’Žß‚³‚ꂽPOJOƒNƒ‰ƒX‚Ì—á‚Å‚·B
+            以下はEJBのエンティティビーンとして注釈されたPOJOクラスの例です。
         </para>
 
         <programlisting><![CDATA[@Entity(access = AccessType.FIELD)
@@ -3391,8 +3392,8 @@
 }]]></programlisting>
 
         <para>
-            JDK5.0‚̃Aƒmƒe[ƒVƒ‡ƒ“(‚ÆJSR-220)‚̃Tƒ|[ƒg‚͐is’†‚̍ì‹Æ‚Å‚ ‚èAŠ®‘S‚Å‚Í‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-            ‚³‚ç‚ɏڂµ‚¢î•ñ‚ÍHibernate‚̃Aƒmƒe[ƒVƒ‡ƒ“Eƒ‚ƒWƒ…[ƒ‹‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+            JDK5.0のアノテーション(とJSR-220)のサポートは進行中の作業であり、完全ではないことに注意してください。
+            さらに詳しい情報はHibernateのアノテーション・モジュールを参照してください。
         </para>
     
     </sect2>
@@ -3401,54 +3402,54 @@
 
 
     <sect1 id="mapping-generated" revision="1">
-        <title>¶¬ƒvƒƒpƒeƒB</title>
+        <title>生成プロパティ</title>
         <para>
-            ¶¬ƒvƒƒpƒeƒB‚Ƃ́Aƒf[ƒ^ƒx[ƒX‚É‚æ‚Á‚ж¬‚³‚ꂽ’l‚ðŽ‚ÂƒvƒƒpƒeƒB‚Å‚·B
-            ’ʏíAHibernateƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚́Aƒf[ƒ^ƒx[ƒX‚ª’l‚𐶐¬‚µ‚½ƒvƒƒpƒeƒB‚ðŠÜ‚ÞƒIƒuƒWƒFƒNƒg‚ð
-            <literal>ƒŠƒtƒŒƒbƒVƒ…</literal> ‚·‚é•K—v‚ª‚ ‚è‚Ü‚µ‚½B
-            ‚µ‚©‚µAƒvƒƒpƒeƒB‚ª¶¬‚³‚ꂽ‚Æ‚¢‚¤‚±‚Æ‚ðƒ}[ƒN‚·‚邱‚ƂŁA
-            ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̓ŠƒtƒŒƒbƒVƒ…‚̐ӔC‚ðHibernate‚ɈϏ÷‚µ‚Ü‚·B
+            生成プロパティとは、データベースによって生成された値を持つプロパティです。
+            通常、Hibernateアプリケーションは、データベースが値を生成したプロパティを含むオブジェクトを
+            <literal>リフレッシュ</literal> する必要がありました。
+            しかし、プロパティが生成されたということをマークすることで、
+            アプリケーションはリフレッシュの責任をHibernateに委譲します。
             
-            Šî–{“I‚ɁA¶¬ƒvƒƒpƒeƒB‚ðŽ‚Â‚Æ’è‹`‚µ‚½ƒGƒ“ƒeƒBƒeƒB‚ɑ΂µ‚Ä
-            Hibernate‚ªINSERT‚âUPDATE‚ÌSQL‚𔭍s‚µ‚½Œã‚·‚®‚ɁA
-            ¶¬‚³‚ꂽ’l‚ð“ǂݍž‚Þ‚½‚ß‚Ì SELECT SQL ‚ª”­s‚³‚ê‚Ü‚·B
+            基本的に、生成プロパティを持つと定義したエンティティに対して
+            HibernateがINSERTやUPDATEのSQLを発行した後すぐに、
+            生成された値を読み込むための SELECT SQL が発行されます。
         </para>
         <para>
-            ¶¬ƒvƒƒpƒeƒB‚́A‘}“ü•s‰Â”\‚©‚XV•s‰Â”\‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ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
+            生成プロパティは、挿入不可能かつ更新不可能でなければなりません。
+            <xref linkend="mapping-declaration-version">versions</xref> 、
+            <xref linkend="mapping-declaration-timestamp">timestamps</xref> 、
+            <xref linkend="mapping-declaration-property">simple properties</xref> だけが生成されたとマークできます。
         </para>
         <para>
-            <literal>never</literal> (ƒfƒtƒHƒ‹ƒg) - —^‚¦‚ç‚ꂽƒvƒƒpƒeƒB‚Ì’l‚́A
-            ƒf[ƒ^ƒx[ƒX‚©‚琶¬‚³‚ê‚È‚¢‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B
+            <literal>never</literal> (デフォルト) - 与えられたプロパティの値は、
+            データベースから生成されないことを意味します。
         </para>
         <para>
-            <literal>insert</literal> - —^‚¦‚ç‚ꂽƒvƒƒpƒeƒB‚Ì’l‚Í‘}“üŽž‚ɐ¶¬‚³‚ê‚邪A
-            ‘±‚¢‚Ä‹N‚±‚éXVŽž‚ɂ͐¶¬‚³‚ê‚È‚¢‚±‚ÆŽ¦‚µ‚Ü‚·B
-            ì¬‚³‚ꂽ“ú•t‚Ȃǂ́A‚±‚̃JƒeƒSƒŠ‚É•ª—Þ‚³‚ê‚Ü‚·B
-            <xref linkend="mapping-declaration-version">version</xref> ‚â
-            <xref linkend="mapping-declaration-timestamp">timestamp</xref> ‚Ì
-            ƒvƒƒpƒeƒB‚͐¶¬‚³‚ꂽ‚ƃ}[ƒN‚Å‚«‚Ü‚·‚ªA‚±‚̃IƒvƒVƒ‡ƒ“‚Í—˜—p‚Å‚«‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+            <literal>insert</literal> - 与えられたプロパティの値は挿入時に生成されるが、
+            続いて起こる更新時には生成されないこと示します。
+            作成された日付などは、このカテゴリに分類されます。
+            <xref linkend="mapping-declaration-version">version</xref> ã‚„
+            <xref linkend="mapping-declaration-timestamp">timestamp</xref> の
+            プロパティは生成されたとマークできますが、このオプションは利用できないことに注意してください。
         </para>
         <para>
-            <literal>always</literal> - ‘}“üŽž‚àXVŽž‚àƒvƒƒpƒeƒB‚Ì’l‚ª¶¬‚³‚ê‚邱‚Æ‚ðŽ¦‚µ‚Ü‚·B
+            <literal>always</literal> - 挿入時も更新時もプロパティの値が生成されることを示します。
         </para>
     </sect1>
 
     <sect1 id="mapping-database-object" revision="0">
-        <title>•â•“I‚ȃf[ƒ^ƒx[ƒXEƒIƒuƒWƒFƒNƒg</title>
+        <title>補助的なデータベース・オブジェクト</title>
         <para>
-            Hibernate‚̃XƒL[ƒ}EƒGƒ{ƒŠƒ…[ƒVƒ‡ƒ“ƒc[ƒ‹‚ƘA“®‚·‚邱‚ƂŁA
-            ”CˆÓ‚̃f[ƒ^ƒx[ƒXEƒIƒuƒWƒFƒNƒgiƒgƒŠƒK[‚âƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚Ȃǁj‚ÌCREATE‚ÆDROP‚É‚æ‚èA
-            Hibernate‚̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹“à‚̃†[ƒUEƒXƒL[ƒ}‚ð‚·‚×‚Ä’è‹`‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B
-            Žå‚ɃgƒŠƒK‚âƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚̂悤‚ȃf[ƒ^ƒx[ƒXEƒIƒuƒWƒFƒNƒg‚𐶐¬‚âíœ‚·‚邱‚Æ‚ðˆÓ}‚µ‚Ä‚¢‚Ü‚·‚ªA
-            ŽÀÛ‚É‚Í <literal>java.sql.Statement.execute()</literal> ƒƒ\ƒbƒh‚É‚æ‚Á‚ÄŽÀs‚Å‚«‚é
-            ”CˆÓ‚ÌSQLƒRƒ}ƒ“ƒhiALTERAINSERT‚Ȃǁj‚ªŽÀs‚Å‚«‚Ü‚·B
-            •â•“I‚ȃf[ƒ^ƒx[ƒXEƒIƒuƒWƒFƒNƒg‚ð’è‹`‚·‚邽‚߂́A2‚‚̊î–{“I‚È•û–@‚ª‚ ‚è‚Ü‚·B
+            Hibernateのスキーマ・エボリューションツールと連動することで、
+            任意のデータベース・オブジェクト(トリガーやストアドプロシージャなど)のCREATEとDROPにより、
+            Hibernateのマッピングファイル内のユーザ・スキーマをすべて定義することが出来ます。
+            主にトリガやストアドプロシージャのようなデータベース・オブジェクトを生成や削除することを意図していますが、
+            実際には <literal>java.sql.Statement.execute()</literal> メソッドによって実行できる
+            任意のSQLコマンド(ALTER、INSERTなど)が実行できます。
+            補助的なデータベース・オブジェクトを定義するための、2つの基本的な方法があります。
         </para>
         <para>
-            1‚–ڂ̕û–@‚́ACREATE‚ÆDROPƒRƒ}ƒ“ƒh‚ðƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ÌŠO‚ɁA–¾Ž¦“I‚É‹LÚ‚·‚邱‚Æ‚Å‚·B
+            1つ目の方法は、CREATEとDROPコマンドをマッピングファイルの外に、明示的に記載することです。
         </para>
         <programlisting><![CDATA[<hibernate-mapping>
     ...
@@ -3458,9 +3459,9 @@
     </database-object>
 </hibernate-mapping>]]></programlisting>
         <para>
-            2‚–ڂ̕û–@‚́ACREATE‚ÆDROPƒRƒ}ƒ“ƒh‚Ì‘g‚Ý—§‚Ä•û‚ð’m‚Á‚Ä‚¢‚éƒJƒXƒ^ƒ€ƒNƒ‰ƒX‚ð’ñ‹Ÿ‚·‚邱‚Æ‚Å‚·B
-            ‚±‚̃JƒXƒ^ƒ€ƒNƒ‰ƒX‚Í <literal>org.hibernate.mapping.AuxiliaryDatabaseObject</literal> ƒCƒ“ƒ^ƒtƒF[ƒX‚ð
-            ŽÀ‘•‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+            2つ目の方法は、CREATEとDROPコマンドの組み立て方を知っているカスタムクラスを提供することです。
+            このカスタムクラスは <literal>org.hibernate.mapping.AuxiliaryDatabaseObject</literal> インタフェースを
+            実装しなければなりません。
         </para>
         <programlisting><![CDATA[<hibernate-mapping>
     ...
@@ -3469,8 +3470,8 @@
     </database-object>
 </hibernate-mapping>]]></programlisting>
         <para>
-            ‚³‚ç‚ɁA‚ ‚éƒf[ƒ^ƒx[ƒX•ûŒ¾‚ªŽg—p‚³‚ê‚鎞‚É‚¾‚¯“K—p‚·‚é‚Æ‚¢‚Á‚½‚悤‚ɁA
-            ƒf[ƒ^ƒx[ƒXEƒIƒuƒWƒFƒNƒg‚ªŽg‚í‚ê‚éƒP[ƒX‚ðŒÀ’è‚Å‚«‚Ü‚·B
+            さらに、あるデータベース方言が使用される時にだけ適用するといったように、
+            データベース・オブジェクトが使われるケースを限定できます。
         </para>
         <programlisting><![CDATA[<hibernate-mapping>
     ...

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/batch.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/batch.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/batch.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,9 +1,11 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="batch">
-    <title>ƒoƒbƒ`ˆ—</title>
+    <title>バッチ処理</title>
     
     <para>
-        Hibernate‚ðŽg‚Á‚ăf[ƒ^ƒx[ƒX‚É100,000s‚ð‘}“ü‚·‚é‹ð’¼‚È•û–@‚́A‚±‚̂悤‚È‚à‚Ì‚Å‚·F
+        Hibernateを使ってデータベースに100,000行を挿入する愚直な方法は、このようなものです:
     </para>
 
 <programlisting><![CDATA[Session session = sessionFactory.openSession();
@@ -16,42 +18,42 @@
 session.close();]]></programlisting>
 
     <para>
-        ‚±‚ê‚Í50,000”Ԗڂ̍s‚Ì‚ ‚½‚è‚Å <literal>OutOfMemoryException</literal> ‚ÅŽ¸”s‚·‚é‚Å‚µ‚傤B
-        Hibernate‚ªƒZƒbƒVƒ‡ƒ“ƒŒƒxƒ‹ƒLƒƒƒbƒVƒ…‚ŁA
-        V‚µ‚­‘}“ü‚³‚ꂽ‚·‚×‚Ä‚Ì <literal>Customer</literal> 
-        ƒCƒ“ƒXƒ^ƒ“ƒX‚ðƒLƒƒƒbƒVƒ…‚·‚é‚©‚ç‚Å‚·B
+        これは50,000番目の行のあたりで <literal>OutOfMemoryException</literal> で失敗するでしょう。
+        Hibernateがセッションレベルキャッシュで、
+        新しく挿入されたすべての <literal>Customer</literal> 
+        インスタンスをキャッシュするからです。
     </para>
 
     <para>
-        ‚±‚̏͂ł́A‚±‚Ì–â‘è‚ð‰ñ”ð‚·‚é•û–@‚ðÐ‰î‚µ‚Ü‚·B
-        ‚µ‚©‚µƒoƒbƒ`ˆ—‚ð‚·‚é‚È‚çAJDBCƒoƒbƒ`‚ªŽg—p‰Â”\‚Å‚ ‚邱‚Æ‚ª”ñí‚ɏd—v‚Å‚·B
-        ‚»‚¤‚Å‚È‚¯‚ê‚Ύ荠‚ȃpƒtƒH[ƒ}ƒ“ƒX‚ª“¾‚ç‚ê‚Ü‚¹‚ñB
-        JDBCƒoƒbƒ`ƒTƒCƒY‚ðŽè ‚Ȑ”’li—Ⴆ‚΁A10‚©‚ç50j‚ɐݒ肵‚Ä‚­‚¾‚³‚¢F
+        この章では、この問題を回避する方法を紹介します。
+        しかしバッチ処理をするなら、JDBCバッチが使用可能であることが非常に重要です。
+        そうでなければ手頃なパフォーマンスが得られません。
+        JDBCバッチサイズを手頃な数値(例えば、10から50)に設定してください:
     </para>
     
 <programlisting><![CDATA[hibernate.jdbc.batch_size 20]]></programlisting>
 
     <para>
-        ‚Ü‚½“ñŽŸƒLƒƒƒbƒVƒ…‚ª‘S‚­Œø‚©‚È‚¢ƒvƒƒZƒX‚ŁA
-        ‚±‚̂悤‚ȍì‹Æ‚ð‚µ‚½‚¢‚ÆŽv‚¤‚©‚à‚µ‚ê‚Ü‚¹‚ñF
+        また二次キャッシュが全く効かないプロセスで、
+        このような作業をしたいと思うかもしれません:
     </para>
 
 <programlisting><![CDATA[hibernate.cache.use_second_level_cache false]]></programlisting>
 
     <para>
-        ‚µ‚©‚µA‚±‚ê‚͐â‘΂ɕK—v‚Æ‚¢‚¤‚킯‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-        ‚È‚º‚È‚ç–¾Ž¦“I‚É <literal>CacheMode</literal> ‚ðÝ’肵‚āA
-        “ñŽŸƒLƒƒƒbƒVƒ…‚Æ‚Ì‘ŠŒÝì—p‚𖳌ø‚É‚·‚邱‚Æ‚ª‚Å‚«‚é‚©‚ç‚Å‚·B
+        しかし、これは絶対に必要というわけではありません。
+        なぜなら明示的に <literal>CacheMode</literal> を設定して、
+        二次キャッシュとの相互作用を無効にすることができるからです。
        
     </para>
 
     <sect1 id="batch-inserts">
-        <title>ƒoƒbƒ`‘}“ü</title>
+        <title>バッチ挿入</title>
 
         <para>
-            V‚µ‚¢ƒIƒuƒWƒFƒNƒg‚ð‰i‘±‰»‚·‚é‚Æ‚«AˆêŽŸƒLƒƒƒbƒVƒ…‚̃TƒCƒY‚𐧌À‚·‚邽‚߁A
-            ƒZƒbƒVƒ‡ƒ“‚ð <literal>flush()</literal> ‚µ‚Ä <literal>clear()</literal> 
-            ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+            新しいオブジェクトを永続化するとき、一次キャッシュのサイズを制限するため、
+            セッションを <literal>flush()</literal> して <literal>clear()</literal> 
+            しなければなりません。
         </para>
 
 <programlisting><![CDATA[Session session = sessionFactory.openSession();
@@ -73,13 +75,13 @@
     </sect1>
 
     <sect1 id="batch-update" >
-        <title>ƒoƒbƒ`XV</title>
+        <title>バッチ更新</title>
 
         <para>
-            ƒf[ƒ^‚𕜌³‚µ‚½‚èXV‚µ‚½‚è‚·‚é‚É‚Í“¯‚¶ƒAƒCƒfƒBƒA‚ð“K—p‚µ‚Ü‚·B
-            ‚»‚ê‚ɉÁ‚¦‚āAƒf[ƒ^‚̍s‚𑽂­•Ô‚·ƒNƒGƒŠ‚ɑ΂µ‚Ä—LŒø‚È
-            ƒT[ƒo[ƒTƒCƒh‚̃J[ƒ\ƒ‹‚Ì—˜“_‚𐶂©‚µ‚½‚¯‚ê‚Î 
-            <literal>scroll()</literal> ‚ðŽg‚¤•K—v‚ª‚ ‚è‚Ü‚·B
+            データを復元したり更新したりするには同じアイディアを適用します。
+            それに加えて、データの行を多く返すクエリに対して有効な
+            サーバーサイドのカーソルの利点を生かしたければ 
+            <literal>scroll()</literal> を使う必要があります。
         </para>
 
 <programlisting><![CDATA[Session session = sessionFactory.openSession();
@@ -106,26 +108,26 @@
 
     <sect1 id="batch-statelesssession">
         <title>
-        StatelessSessionƒCƒ“ƒ^[ƒtƒFƒCƒX
+        StatelessSessionインターフェイス
         </title>
         
         <para>
-            ‚Ü‚½•Ê‚Ì•û–@‚Æ‚µ‚āAHibernate‚̓Rƒ}ƒ“ƒhŽwŒü‚ÌAPI‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚·B
-            ‚±‚ê‚Í•ª—£ƒIƒuƒWƒFƒNƒg‚ÌŒ`‚ŁA
-            ƒf[ƒ^ƒx[ƒX‚Ƃ̃f[ƒ^ƒXƒgƒŠ[ƒ€‚Ì‚â‚èŽæ‚è‚ÉŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
-            <literal>StatelessSession</literal> ‚ÍŠÖ˜A‚·‚é‰i‘±ƒRƒ“ƒeƒLƒXƒg‚ðŽ‚½‚¸A
-            ‚ƒŒƒxƒ‹‚̃‰ƒCƒtƒTƒCƒNƒ‹ƒZƒ}ƒ“ƒeƒBƒNƒX‚Ì‘½‚­‚ð’ñ‹Ÿ‚µ‚Ü‚¹‚ñB
-            “Á‚ɃXƒe[ƒgƒŒƒXƒZƒbƒVƒ‡ƒ“‚́AˆêŽžƒLƒƒƒbƒVƒ…‚ðŽÀ‘•‚¹‚¸A
-            ‚Ü‚½‚ǂ̂悤‚È“ñŽŸƒLƒƒƒbƒVƒ…‚âƒNƒGƒŠƒLƒƒƒbƒVƒ…‚Æ‚à‘ŠŒÝì—p‚µ‚Ü‚¹‚ñB
-            ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒiƒ‹‚Èwrite-behind‚⎩“®ƒ_[ƒeƒBƒ`ƒFƒbƒN‚àŽÀ‘•‚µ‚Ü‚¹‚ñB
-            ƒXƒe[ƒgƒŒƒXƒZƒbƒVƒ‡ƒ“‚ðŽg‚Á‚čs‚í‚ê‚é‘€ì‚ªA
-            ŠÖ˜A‚·‚éƒCƒ“ƒXƒ^ƒ“ƒX‚ÖƒJƒXƒP[ƒh‚³‚ê‚邱‚Æ‚ÍŒˆ‚µ‚Ä‚ ‚è‚Ü‚¹‚ñB
-            ƒRƒŒƒNƒVƒ‡ƒ“‚́AƒXƒe[ƒgƒŒƒXƒZƒbƒVƒ‡ƒ“‚©‚ç‚Í–³Ž‹‚³‚ê‚Ü‚·B
-            ƒXƒe[ƒgƒŒƒXƒZƒbƒVƒ‡ƒ“‚ð’Ê‚µ‚čs‚í‚ê‚é‘€ì‚́A
-            Hibernate‚̃Cƒxƒ“ƒgƒ‚ƒfƒ‹‚âƒCƒ“ƒ^[ƒZƒvƒ^‚̉e‹¿‚ðŽó‚¯‚Ü‚¹‚ñB
-            ˆêŽžƒLƒƒƒbƒVƒ…‚ðŽ‚½‚È‚¢‚½‚߁A
-            ƒXƒe[ƒgƒŒƒXƒZƒbƒVƒ‡ƒ“‚Í•Ê–¼‚ðŽ‚Âƒf[ƒ^‚ɏãŽè‚­‘Ώˆ‚Å‚«‚Ü‚¹‚ñB
-            ƒXƒe[ƒgƒŒƒXƒZƒbƒVƒ‡ƒ“‚͒჌ƒxƒ‹‚Ì’ŠÛ‰»‚Å‚ ‚èAJDBC‚É”ñí‚É‚æ‚­Ž—‚Ä‚¢‚Ü‚·B
+            また別の方法として、Hibernateはコマンド指向のAPIを用意しています。
+            これは分離オブジェクトの形で、
+            データベースとのデータストリームのやり取りに使うことができます。
+            <literal>StatelessSession</literal> は関連する永続コンテキストを持たず、
+            高レベルのライフサイクルセマンティクスの多くを提供しません。
+            特にステートレスセッションは、一時キャッシュを実装せず、
+            またどのような二次キャッシュやクエリキャッシュとも相互作用しません。
+            トランザクショナルなwrite-behindや自動ダーティチェックも実装しません。
+            ステートレスセッションを使って行われる操作が、
+            関連するインスタンスへカスケードされることは決してありません。
+            コレクションは、ステートレスセッションからは無視されます。
+            ステートレスセッションを通して行われる操作は、
+            Hibernateのイベントモデルやインターセプタの影響を受けません。
+            一時キャッシュを持たないため、
+            ステートレスセッションは別名を持つデータに上手く対処できません。
+            ステートレスセッションは低レベルの抽象化であり、JDBCに非常によく似ています。
             
         </para>
 
@@ -144,20 +146,20 @@
 session.close();]]></programlisting>
 
         <para>
-            ‚±‚̃R[ƒh—á‚ł́AƒNƒGƒŠ‚ª•Ô‚· <literal>Customer</literal> 
-            ƒCƒ“ƒXƒ^ƒ“ƒX‚Í‘¦À‚ɁiƒZƒbƒVƒ‡ƒ“‚©‚çj•ª—£‚³‚ê‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-            ‚±‚ê‚́A‚ǂ̂悤‚ȉi‘±ƒRƒ“ƒeƒLƒXƒg‚Æ‚àŒˆ‚µ‚ÄŠÖ˜A‚µ‚Ü‚¹‚ñB
+            このコード例では、クエリが返す <literal>Customer</literal> 
+            インスタンスは即座に(セッションから)分離されることに注意してください。
+            これは、どのような永続コンテキストとも決して関連しません。
             
         </para>
         
         <para>
-            <literal>StatelessSession</literal> ƒCƒ“ƒ^[ƒtƒFƒCƒX‚Å’è‹`‚³‚ê‚Ä‚¢‚é 
-            <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ƒ“ƒ^[ƒtƒFƒCƒX‚Å’è‹`‚³‚ê‚Ä‚¢‚é 
+            <literal>StatelessSession</literal> インターフェイスで定義されている 
+            <literal>insert(), update(), delete()</literal> は、
+            低レベルの直接的なデータベース操作と考えられます。
+            結果として、SQLの <literal>INSERT, UPDATE, DELETE</literal> がそれぞれ即座に実行されます。
+            このように、これらは <literal>Session</literal> インターフェイスで定義されている 
             <literal>save(), saveOrUpdate(), delete()</literal> 
-            ‚Æ‚Í”ñí‚ɈقȂéˆÓ–¡‚ðŽ‚¿‚Ü‚·B
+            とは非常に異なる意味を持ちます。
             
         </para>
 
@@ -165,68 +167,68 @@
 
     <sect1 id="batch-direct" revision="3">
         <title>
-        DMLƒXƒ^ƒCƒ‹‚Ì‘€ì
+        DMLスタイルの操作
         </title>
 
         <para>
-            ‚·‚Å‚É‹c˜_‚µ‚½‚悤‚ɁAŽ©“®“I‚©‚“§‰ß“I‚ȃIƒuƒWƒFƒNƒg/ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ}ƒbƒsƒ“ƒO‚́A
-            ƒIƒuƒWƒFƒNƒg‚̏ó‘Ô‚ÌŠÇ—‚Å‚ ‚é‚ƍl‚¦‚ç‚ê‚Ü‚·B
-            ‚±‚ê‚̓ƒ‚ƒŠ“à‚̃IƒuƒWƒFƒNƒg‚̏ó‘Ô‚ð—˜—p‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
-            ‚»‚Ì‚½‚߁iSQL‚Ì <literal>ƒf[ƒ^‘€ìŒ¾Œê</literal> (DML) •¶F
+            すでに議論したように、自動的かつ透過的なオブジェクト/リレーショナルマッピングは、
+            オブジェクトの状態の管理であると考えられます。
+            これはメモリ内のオブジェクトの状態を利用できるということです。
+            そのため(SQLの <literal>データ操作言語</literal> (DML) 文:
             <literal>INSERT</literal>, <literal>UPDATE</literal>, <literal>DELETE</literal> 
-            ‚ðŽg‚Á‚ājƒf[ƒ^ƒx[ƒX“à‚̃f[ƒ^‚𒼐ڑ€ì‚µ‚Ä‚àA
-            ƒƒ‚ƒŠ“à‚̏ó‘Ԃɂ͉e‹¿‚ð—^‚¦‚Ü‚¹‚ñB
-            ‚µ‚©‚µHibernate‚́Aƒoƒ‹ƒNSQLƒXƒ^ƒCƒ‹‚ÌDML•¶ŽÀs‚ɑΉž‚·‚郁ƒ\ƒbƒh‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚·B
-            ‚±‚ê‚ÍHibernateƒNƒGƒŠŒ¾Œêi<xref linkend="queryhql">HQL</xref>j
-            ‚ð’Ê‚µ‚ÄŽÀs‚³‚ê‚Ü‚·B
+            を使って)データベース内のデータを直接操作しても、
+            メモリ内の状態には影響を与えません。
+            しかしHibernateは、バルクSQLスタイルのDML文実行に対応するメソッドを用意しています。
+            これはHibernateクエリ言語(<xref linkend="queryhql">HQL</xref>)
+            を通して実行されます。
             
         </para>
 
         <para>
-            <literal>UPDATE</literal> ‚Æ <literal>DELETE</literal> •¶‚Ì‹^Ž—\•¶‚́F
-            <literal>( UPDATE | DELETE ) FROM? ƒGƒ“ƒeƒBƒeƒB–¼ (WHERE ðŒß)?</literal> ‚Å‚·B
-            ’ˆÓ‚·‚ׂ«“_‚ª‚¢‚­‚‚©‚ ‚è‚Ü‚·F
+            <literal>UPDATE</literal> と <literal>DELETE</literal> 文の疑似構文は:
+            <literal>( UPDATE | DELETE ) FROM? エンティティ名 (WHERE 条件節)?</literal> です。
+            注意すべき点がいくつかあります:
             
         </para>
 
         <itemizedlist spacing="compact">
             <listitem>
                 <para>
-                    fromß‚É‚¨‚¢‚āAFROMƒL[ƒ[ƒh‚̓IƒvƒVƒ‡ƒ“‚Å‚·B
+                    from節において、FROMキーワードはオプションです。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    fromß‚Å‚Í’Pˆê‚̃Gƒ“ƒeƒBƒeƒB–¼‚¾‚¯‚ª‰Â”\‚ŁA
-                    ”CˆÓ‚Å•Ê–¼‚ð•t‚¯‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-                    ƒGƒ“ƒeƒBƒeƒB–¼‚É•Ê–¼‚ª—^‚¦‚ç‚ê‚é‚ƁA‚ǂ̂悤‚ȃvƒƒpƒeƒBŽQÆ‚àA
-                    ‚»‚Ì•Ê–¼‚ðŽg‚Á‚ďCü‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                    ‚à‚µƒGƒ“ƒeƒBƒeƒB–¼‚É•Ê–¼‚ª—^‚¦‚ç‚ê‚È‚¯‚ê‚΁A
-                    ‚ǂ̂悤‚ȃvƒƒpƒeƒBŽQÆ‚àCü‚µ‚Ä‚Í‚È‚è‚Ü‚¹‚ñB
+                    from節では単一のエンティティ名だけが可能で、
+                    任意で別名を付けることができます。
+                    エンティティ名に別名が与えられると、どのようなプロパティ参照も、
+                    その別名を使って修飾しなければなりません。
+                    もしエンティティ名に別名が与えられなければ、
+                    どのようなプロパティ参照も修飾してはなりません。
                     
                 </para>
             </listitem>
             <listitem>
                 <para>
-                iˆÃ–Ù“I‚Å‚ ‚ê–¾Ž¦“I‚Å‚ ‚êj<xref linkend="queryhql-joins-forms">Œ‹‡</xref> 
-                ‚ðƒoƒ‹ƒNHQLƒNƒGƒŠ“à‚ÅŽw’è‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB
-                ƒTƒuƒNƒGƒŠ‚Íwhereß‚ÅŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·
-                ƒTƒuƒNƒGƒŠ‚»‚Ì‚à‚̂́AŒ‹‡‚ðŠÜ‚ß‚ç‚ê‚Ü‚·B
+                (暗黙的であれ明示的であれ)<xref linkend="queryhql-joins-forms">結合</xref> 
+                をバルクHQLクエリ内で指定することはできません。
+                サブクエリはwhere節で使うことができます
+                サブクエリそのものは、結合を含められます。
                 
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    whereß‚̓IƒvƒVƒ‡ƒ“‚Å‚·B
+                    where節はオプションです。
                 </para>
             </listitem>
         </itemizedlist>
 
         <para>
-            —á‚Æ‚µ‚āAHQL‚Ì <literal>UPDATE</literal> ‚ðŽÀs‚·‚é‚ɂ́A
-            <literal>Query.executeUpdate()</literal> ƒƒ\ƒbƒh‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B
-            i‚±‚̃ƒ\ƒbƒh‚Í‚¨‚È‚¶‚Ý‚ÌJDBC <literal>PreparedStatement.executeUpdate()</literal> 
-            ‚©‚ç–¼•t‚¯‚ç‚ê‚Ü‚µ‚½jF
+            例として、HQLの <literal>UPDATE</literal> を実行するには、
+            <literal>Query.executeUpdate()</literal> メソッドを使ってください。
+            (このメソッドはおなじみのJDBC <literal>PreparedStatement.executeUpdate()</literal> 
+            から名付けられました):
             d
         </para>
 
@@ -243,16 +245,16 @@
 session.close();]]></programlisting>
 
         <para>
-            HQL‚Ì <literal>UPDATE</literal> •¶‚́AƒfƒtƒHƒ‹ƒg‚ł́Aì—p‚·‚éƒGƒ“ƒeƒBƒeƒB‚Ì 
-            <xref linkend="mapping-declaration-version">version</xref> ‚â 
+            HQLの <literal>UPDATE</literal> 文は、デフォルトでは、作用するエンティティの 
+            <xref linkend="mapping-declaration-version">version</xref> ã‚„ 
             <xref linkend="mapping-declaration-timestamp">timestamp</xref> 
-            ƒvƒƒpƒeƒB‚Ì’l‚ɂ͉e‹¿‚µ‚Ü‚¹‚ñB
-            ‚±‚ê‚ÍEJB3‚ÌŽd—l‚É‚àŽó‚¯Œp‚ª‚ê‚Ä‚¢‚Ü‚·B
-            ‚µ‚©‚µ <literal>versioned update</literal> ‚ðŽg‚Á‚āA
-            <literal>version</literal> ‚â <literal>timestamp</literal> 
-            ƒvƒƒpƒeƒB‚Ì’l‚ð‹­§“I‚ɃŠƒZƒbƒg‚³‚¹‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-            ‚±‚ê‚Í <literal>UPDATE</literal> ƒL[ƒ[ƒh‚ÌŒã‚É <literal>VERSIONED</literal> 
-            ƒL[ƒ[ƒh‚ð’ljÁ‚·‚邱‚Ƃōs‚¦‚Ü‚·B
+            プロパティの値には影響しません。
+            これはEJB3の仕様にも受け継がれています。
+            しかし <literal>versioned update</literal> を使って、
+            <literal>version</literal> ã‚„ <literal>timestamp</literal> 
+            プロパティの値を強制的にリセットさせることができます。
+            これは <literal>UPDATE</literal> キーワードの後に <literal>VERSIONED</literal> 
+            キーワードを追加することで行えます。
             
         </para>
 <programlisting><![CDATA[Session session = sessionFactory.openSession();
@@ -266,13 +268,13 @@
 session.close();]]></programlisting>
 
         <para>
-            ƒJƒXƒ^ƒ€ƒo[ƒWƒ‡ƒ“Œ^i<literal>org.hibernate.usertype.UserVersionType</literal>j
-            ‚Í <literal>update versioned</literal> •¶‚ƈꏏ‚ÉŽg‚¦‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+            カスタムバージョン型(<literal>org.hibernate.usertype.UserVersionType</literal>)
+            は <literal>update versioned</literal> 文と一緒に使えないことに注意してください。
         </para>
 
         <para>
-            HQL‚Ì <literal>DELETE</literal> ‚ðŽÀs‚·‚é‚ɂ́A
-            “¯‚¶ <literal>Query.executeUpdate()</literal> ƒƒ\ƒbƒh‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢F
+            HQLの <literal>DELETE</literal> を実行するには、
+            同じ <literal>Query.executeUpdate()</literal> メソッドを使ってください:
             
         </para>
 
@@ -288,87 +290,87 @@
 session.close();]]></programlisting>
 
         <para>
-            <literal>Query.executeUpdate()</literal> ƒƒ\ƒbƒh‚ª•Ô‚· <literal>int</literal> 
-            ‚Ì’l‚́A‚±‚Ì‘€ì‚ª‰e‹¿‚ð‹y‚Ú‚µ‚½ƒGƒ“ƒeƒBƒeƒB‚̐”‚Å‚·B
-            ‚±‚ꂪ‰e‹¿‚·‚éƒf[ƒ^ƒx[ƒX“à‚̍s”‚ƁA‘ŠŒÝ‚ÉŠÖŒW‚·‚é‚©‚Ç‚¤‚©‚ðl‚¦‚Ä‚Ý‚Ä‚­‚¾‚³‚¢B
-            HQLƒoƒ‹ƒN‘€ì‚́AŒ‹‰Ê‚Æ‚µ‚āAŽÀÛ‚ÌSQL•¶‚ª•¡”ŽÀs‚³‚ê‚邱‚Æ‚É‚È‚è‚Ü‚·B
-            —Ⴆ‚Îjoined-subclass‚Å‚·B
-            •Ô‚³‚ê‚鐔‚́A‚»‚Ì•¶‚É‚æ‚Á‚ĉe‹¿‚³‚ꂽŽÀÛ‚̃Gƒ“ƒeƒBƒeƒB‚̐”‚ðŽ¦‚µ‚Ü‚·B
-            joined-subclass‚Ì—á‚É–ß‚é‚ƁAƒTƒuƒNƒ‰ƒX‚̈ê‚‚ɑ΂·‚éíœ‚́A
-            ‚»‚̃TƒuƒNƒ‰ƒX‚ªƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒe[ƒuƒ‹‚¾‚¯‚Å‚Í‚È‚­A
-            uƒ‹[ƒgvƒe[ƒuƒ‹‚ÆŒp³ŠK‘w‚ð‚³‚ç‚ɉº‚Á‚½joined-subclass‚̃e[ƒuƒ‹‚̍폜‚É‚È‚è‚Ü‚·B
+            <literal>Query.executeUpdate()</literal> メソッドが返す <literal>int</literal> 
+            の値は、この操作が影響を及ぼしたエンティティの数です。
+            これが影響するデータベース内の行数と、相互に関係するかどうかを考えてみてください。
+            HQLバルク操作は、結果として、実際のSQL文が複数実行されることになります。
+            例えばjoined-subclassです。
+            返される数は、その文によって影響された実際のエンティティの数を示します。
+            joined-subclassの例に戻ると、サブクラスの一つに対する削除は、
+            そのサブクラスがマッピングされたテーブルだけではなく、
+            「ルート」テーブルと継承階層をさらに下ったjoined-subclassのテーブルの削除になります。
         </para>
 
         <para>
-            <literal>INSERT</literal> •¶‚Ì‹^Ž—\•¶‚́F
-            <literal>INSERT INTO ƒGƒ“ƒeƒBƒeƒB–¼ ƒvƒƒpƒeƒBƒŠƒXƒg select•¶</literal> ‚Å‚·B
-            ’ˆÓ‚·‚ׂ«“_‚ª‚¢‚­‚‚©‚ ‚è‚Ü‚·F
+            <literal>INSERT</literal> 文の疑似構文は:
+            <literal>INSERT INTO エンティティ名 プロパティリスト select文</literal> です。
+            注意すべき点がいくつかあります:
             
         </para>
 
         <itemizedlist spacing="compact">
             <listitem>
                 <para>
-                    INSERT INTO ... SELECT ... ‚ÌŒ`Ž®‚¾‚¯‚ªƒTƒ|[ƒg‚³‚ê‚Ä‚¢‚Ü‚·B
-                    INSERT INTO ... VALUES ... ‚ÌŒ`Ž®‚̓Tƒ|[ƒg‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB
+                    INSERT INTO ... SELECT ... の形式だけがサポートされています。
+                    INSERT INTO ... VALUES ... の形式はサポートされていません。
                 </para>
                 <para>
-                    ƒvƒƒpƒeƒBƒŠƒXƒg‚́ASQL‚Ì <literal>INSERT</literal> •¶‚É‚¨‚¯‚é <literal>ƒJƒ‰ƒ€‚ÌŽd—l</literal> 
-                    ‚É—ÞŽ—‚µ‚Ä‚¢‚Ü‚·B
-                    Œp³‚̃}ƒbƒsƒ“ƒO‚ÉŠÜ‚Ü‚ê‚éƒGƒ“ƒeƒBƒeƒB‚ɑ΂µ‚āA
-                    ƒNƒ‰ƒXƒŒƒxƒ‹‚Å’¼Ú’è‹`‚³‚ꂽƒvƒƒpƒeƒB‚¾‚¯‚ªAƒvƒƒpƒeƒBƒŠƒXƒg‚ÉŽg‚¦‚Ü‚·B
-                    ƒX[ƒp[ƒNƒ‰ƒX‚̃vƒƒpƒeƒB‚Í”F‚ß‚ç‚ꂸAƒTƒuƒNƒ‰ƒX‚̃vƒƒpƒeƒB‚ÍŒø‰Ê‚ª‚ ‚è‚Ü‚¹‚ñB
-                    Œ¾‚¢Š·‚¦‚é‚Æ <literal>INSERT</literal> •¶‚́A–{Ž¿“I‚Ƀ|ƒŠƒ‚[ƒtƒBƒbƒN‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
+                    プロパティリストは、SQLの <literal>INSERT</literal> 文における <literal>カラムの仕様</literal> 
+                    に類似しています。
+                    継承のマッピングに含まれるエンティティに対して、
+                    クラスレベルで直接定義されたプロパティだけが、プロパティリストに使えます。
+                    スーパークラスのプロパティは認められず、サブクラスのプロパティは効果がありません。
+                    言い換えると <literal>INSERT</literal> 文は、本質的にポリモーフィックではありません。
                     
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    select•¶‚Ì•Ô‚è’l‚ÌŒ^‚ªinsert•¶‚ªŠú‘Ò‚·‚éŒ^‚ƃ}ƒbƒ`‚µ‚Ä‚¢‚ê‚΁A
-                    ‚»‚Ìselect•¶‚͑Ó–‚ÈHQL selectƒNƒGƒŠ‚ƂȂ肦‚Ü‚·B
-                    Œ»Ý‚±‚̃`ƒFƒbƒN‚ðƒf[ƒ^ƒx[ƒX‚Ö”C‚¹‚é‚Ì‚Å‚Í‚È‚­AƒNƒGƒŠ‚̃Rƒ“ƒpƒCƒ‹Žž‚Ƀ`ƒFƒbƒN‚µ‚Ü‚·B
-                    ‚±‚Ì‚±‚Ƃ́A<emphasis>equal</emphasis>‚Ƃ͈ႢA
-                    Hibernate‚Ì <literal>Type</literal> ŠÔ‚Ì <emphasis>equivalent</emphasis> ‚ÉŠÖ‚·‚é
-                    –â‘è‚ðˆø‚«‹N‚±‚·‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-                    ‚±‚ê‚Í <literal>org.hibernate.type.DataType</literal> ‚Æ‚µ‚Ä’è‹`‚³‚ꂽƒvƒƒpƒeƒB‚ƁA
+                    select文の返り値の型がinsert文が期待する型とマッチしていれば、
+                    そのselect文は妥当なHQL selectクエリとなりえます。
+                    現在このチェックをデータベースへ任せるのではなく、クエリのコンパイル時にチェックします。
+                    このことは、<emphasis>equal</emphasis>とは違い、
+                    Hibernateの <literal>Type</literal> 間の <emphasis>equivalent</emphasis> に関する
+                    問題を引き起こすことに注意してください。
+                    これは <literal>org.hibernate.type.DataType</literal> として定義されたプロパティと、
                     <literal>org.hibernate.type.TimestampType</literal> 
-                    ‚Æ‚µ‚Ä’è‹`‚³‚ꂽƒvƒƒpƒeƒB‚̊Ԃ̃~ƒXƒ}ƒbƒ`‚Ì–â‘è‚ðˆø‚«‹N‚±‚µ‚Ü‚·B
-                    ƒf[ƒ^ƒx[ƒX‚ª‚»‚ê‚ç‚ð‹æ•Ê‚Å‚«‚È‚­‚Ä‚àA•ÏŠ·‚·‚邱‚Æ‚ª‚Å‚«‚Ä‚àA‚±‚Ì–â‘è‚Í”­¶‚µ‚Ü‚·B
+                    として定義されたプロパティの間のミスマッチの問題を引き起こします。
+                    データベースがそれらを区別できなくても、変換することができても、この問題は発生します。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    idƒvƒƒpƒeƒB‚ɑ΂µ‚āAinsert•¶‚É‚Í“ñ‚‚̑I‘ðŽˆ‚ª‚ ‚è‚Ü‚·B
-                    ƒvƒƒpƒeƒBƒŠƒXƒg‚Å–¾Ž¦“I‚ÉidƒvƒƒpƒeƒB‚ðŽw’è‚·‚é‚©
-                    i‚±‚̏ꍇA‘Ήž‚·‚éselectŽ®‚©‚ç’l‚ªŽæ‚ç‚ê‚Ü‚·jA
-                    ƒvƒƒpƒeƒBƒŠƒXƒg‚©‚珜ŠO‚·‚é‚©
-                    i‚±‚̏ꍇA¶¬‚³‚ê‚é’l‚ªŽg‚í‚ê‚Ü‚·j‚Ì‚¢‚¸‚ê‚©‚Å‚·B
-                    ŒãŽÒ‚Ì‘I‘ðŽˆ‚ÍAƒf[ƒ^ƒx[ƒX“à‚𑀍삷‚éidƒWƒFƒlƒŒ[ƒ^‚ðŽg‚¤‚Æ‚«‚̂݁A—˜—p‰Â”\‚Å‚·B
-                    ‚±‚Ì‘I‘ðŽˆ‚ðÌ‚éê‡AuƒCƒ“ƒƒ‚ƒŠvŒ^‚̃WƒFƒlƒŒ[ƒ^‚ðŽg‚¤‚ƁA\•¶‰ðÍŽž‚É—áŠO‚ª”­¶‚µ‚Ü‚·B
-                    ‚±‚Ì‹c˜_‚ł́AƒCƒ“ƒf[ƒ^ƒx[ƒXŒ^ƒWƒFƒlƒŒ[ƒ^‚Í <literal>org.hibernate.id.SequenceGenerator</literal> 
-                    i‚Æ‚»‚̃TƒuƒNƒ‰ƒXj‚ƁA<literal>org.hibernate.id.PostInsertIdentifierGenerator</literal> 
-                    ‚ÌŽÀ‘•‚Å‚ ‚é‚ƍl‚¦‚Ä‚¢‚Ü‚·B
-                    ‚±‚±‚ÅÅ‚à’ˆÓ‚·‚ׂ«—áŠO‚́A<literal>org.hibernate.id.TableHiLoGenerator</literal> ‚Å‚·B
-                    ’l‚ðŽæ“¾‚·‚é‘I‘ð‰Â”\‚È•û–@‚ª‚È‚¢‚½‚߁A‚±‚̃WƒFƒlƒŒ[ƒ^‚ðŽg‚¤‚±‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB
+                    idプロパティに対して、insert文には二つの選択肢があります。
+                    プロパティリストで明示的にidプロパティを指定するか
+                    (この場合、対応するselect式から値が取られます)、
+                    プロパティリストから除外するか
+                    (この場合、生成される値が使われます)のいずれかです。
+                    後者の選択肢は、データベース内を操作するidジェネレータを使うときのみ、利用可能です。
+                    この選択肢を採る場合、「インメモリ」型のジェネレータを使うと、構文解析時に例外が発生します。
+                    この議論では、インデータベース型ジェネレータは <literal>org.hibernate.id.SequenceGenerator</literal> 
+                    (とそのサブクラス)と、<literal>org.hibernate.id.PostInsertIdentifierGenerator</literal> 
+                    の実装であると考えています。
+                    ここで最も注意すべき例外は、<literal>org.hibernate.id.TableHiLoGenerator</literal> です。
+                    値を取得する選択可能な方法がないため、このジェネレータを使うことはできません。
                     
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>version</literal> ‚â <literal>timestamp</literal> ‚Æ‚µ‚ă}ƒbƒsƒ“ƒO‚³‚ê‚éƒvƒƒpƒeƒB‚ɑ΂µ‚āA
-                    insert•¶‚É‚Í“ñ‚‚̑I‘ðŽˆ‚ª‚ ‚è‚Ü‚·B
-                    ƒvƒƒpƒeƒBƒŠƒXƒg‚Å–¾Ž¦“I‚ɃvƒƒpƒeƒB‚ðŽw’è‚·‚é‚©
-                    i‚±‚̏ꍇA‘Ήž‚·‚éselectŽ®‚©‚ç’l‚ªŽæ‚ç‚ê‚Ü‚·jA
-                    ƒvƒƒpƒeƒBƒŠƒXƒg‚©‚珜ŠO‚·‚é‚©
-                    i‚±‚̏ꍇA<literal>org.hibernate.type.VersionType</literal> ‚Å’è‹`‚³‚ꂽ 
-                    <literal>ƒV[ƒh’l</literal> ‚ªŽg‚í‚ê‚Ü‚·j‚Ì‚¢‚¸‚ê‚©‚Å‚·B
+                    <literal>version</literal> や <literal>timestamp</literal> としてマッピングされるプロパティに対して、
+                    insert文には二つの選択肢があります。
+                    プロパティリストで明示的にプロパティを指定するか
+                    (この場合、対応するselect式から値が取られます)、
+                    プロパティリストから除外するか
+                    (この場合、<literal>org.hibernate.type.VersionType</literal> で定義された 
+                    <literal>シード値</literal> が使われます)のいずれかです。
                     
                 </para>
             </listitem>
         </itemizedlist>
 
         <para>
-            HQL‚Ì <literal>INSERT</literal> •¶‚ÌŽÀs—á‚Å‚·F
+            HQLの <literal>INSERT</literal> 文の実行例です:
             
         </para>
 

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/best_practices.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/best_practices.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/best_practices.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,246 +1,248 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="best-practices" revision="3">
-    <title>ƒxƒXƒgƒvƒ‰ƒNƒeƒBƒX</title>
+    <title>ベストプラクティス</title>
 
     <variablelist spacing="compact">
         <varlistentry>
             <term>
-            ƒNƒ‰ƒX‚ׂ͍©‚¢—±“x‚ŏ‘‚« <literal>&lt;component&gt;</literal> ‚Ń}ƒbƒsƒ“ƒO‚µ‚Ü‚µ‚傤B</term>
+            クラスは細かい粒度で書き <literal>&lt;component&gt;</literal> でマッピングしましょう。</term>
             <listitem>
                 <para>
-                    <literal>street</literal>i’Ê‚èj, <literal>suburb</literal>
-                    i“sŽsj, <literal>state</literal>iBj, <literal>postcode</literal> 
-                    i—X•Ö”ԍ†j‚ðƒJƒvƒZƒ‹‰»‚·‚é <literal>Address</literal>iZŠjƒNƒ‰ƒX‚ðŽg‚¢‚Ü‚µ‚傤B
-                    ‚»‚¤‚·‚ê‚΃R[ƒh‚ªÄ—˜—p‚µ‚â‚·‚­‚È‚èAƒŠƒtƒ@ƒNƒ^ƒŠƒ“ƒO‚àŠÈ’P‚É‚È‚è‚Ü‚·B
+                    <literal>street</literal>(通り), <literal>suburb</literal>
+                    (都市), <literal>state</literal>(州), <literal>postcode</literal> 
+                    (郵便番号)をカプセル化する <literal>Address</literal>(住所)クラスを使いましょう。
+                    そうすればコードが再利用しやすくなり、リファクタリングも簡単になります。
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
             <term>
-            ‰i‘±ƒNƒ‰ƒX‚É‚ÍŽ¯•ÊŽqƒvƒƒpƒeƒB‚ð’è‹`‚µ‚Ü‚µ‚傤B</term>
+            永続クラスには識別子プロパティを定義しましょう。</term>
             <listitem>
                 <para>
-                    Hibernate‚Å‚ÍŽ¯•ÊŽqƒvƒƒpƒeƒB‚̓IƒvƒVƒ‡ƒ“‚Å‚·‚ªA
-                    Žg—p‚·‚ׂ«——R‚ª‚½‚­‚³‚ñ‚ ‚è‚Ü‚·B
-                    Ž¯•ÊŽq‚́ulH“Ivi¶¬‚³‚ꂽA‹Æ–±“I‚ȈӖ¡‚ðŽ‚½‚È‚¢j
-                    ‚È‚à‚Ì‚É‚·‚邱‚Æ‚ð‚¨‚·‚·‚ß‚µ‚Ü‚·B
+                    Hibernateでは識別子プロパティはオプションですが、
+                    使用すべき理由がたくさんあります。
+                    識別子は「人工的」(生成された、業務的な意味を持たない)
+                    なものにすることをおすすめします。
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
-            <term>Ž©‘RƒL[‚ðŒ©‚Â‚¯‚Ü‚µ‚傤B</term>
+            <term>自然キーを見つけましょう。</term>
             <listitem>
                 <para>
-                    ‚·‚ׂẴGƒ“ƒeƒBƒeƒB‚ɑ΂µ‚ÄŽ©‘RƒL[‚ðŒ©‚Â‚¯‚āA
-                    <literal>&lt;natural-id&gt;</literal> ‚Ń}ƒbƒsƒ“ƒO‚µ‚Ü‚µ‚傤B
-                    Ž©‘RƒL[‚ð\¬‚·‚éƒvƒƒpƒeƒB‚ð”äŠr‚·‚邽‚߂ɁA
-                    <literal>equals()</literal> ‚Æ <literal>hashCode()</literal> ‚ðŽÀ‘•‚µ‚Ü‚µ‚傤B
+                    すべてのエンティティに対して自然キーを見つけて、
+                    <literal>&lt;natural-id&gt;</literal> でマッピングしましょう。
+                    自然キーを構成するプロパティを比較するために、
+                    <literal>equals()</literal> と <literal>hashCode()</literal> を実装しましょう。
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
-            <term>ƒNƒ‰ƒX‚̃}ƒbƒsƒ“ƒO‚Í‚»‚ꂼ‚ê‚̃Nƒ‰ƒXê—p‚̃tƒ@ƒCƒ‹‚ɏ‘‚«‚Ü‚µ‚傤B</term>
+            <term>クラスのマッピングはそれぞれのクラス専用のファイルに書きましょう。</term>
             <listitem>
                 <para>
-                     ’Pˆê‚Ì‹‘å‚ȃ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚ðŽg—p‚µ‚È‚¢‚Å‚­‚¾‚³‚¢B
-                     <literal>com.eg.Foo</literal> ƒNƒ‰ƒX‚È‚ç 
-                     <literal>com/eg/Foo.hbm.xml</literal> ƒtƒ@ƒCƒ‹‚Ƀ}ƒbƒsƒ“ƒO‚µ‚Ü‚µ‚傤B
-                     ‚±‚Ì‚±‚Ƃ́A“Á‚Ƀ`[ƒ€‚Å‚ÌŠJ”­‚ɈӖ¡‚ª‚ ‚è‚Ü‚·B
+                     単一の巨大なマッピングドキュメントを使用しないでください。
+                     <literal>com.eg.Foo</literal> クラスなら 
+                     <literal>com/eg/Foo.hbm.xml</literal> ファイルにマッピングしましょう。
+                     このことは、特にチームでの開発に意味があります。
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
-            <term>ƒŠƒ\[ƒX‚Æ‚µ‚ă}ƒbƒsƒ“ƒO‚ðƒ[ƒh‚µ‚Ü‚µ‚傤B</term>
+            <term>リソースとしてマッピングをロードしましょう。</term>
             <listitem>
                 <para>
-                    ƒ}ƒbƒsƒ“ƒO‚ðA‚»‚ê‚炪ƒ}ƒbƒsƒ“ƒO‚·‚é‚·‚éƒNƒ‰ƒX‚ƈꏏ‚É”z’u‚µ‚Ü‚µ‚傤B
+                    マッピングを、それらがマッピングするするクラスと一緒に配置しましょう。
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
-            <term>ƒNƒGƒŠ•¶Žš—ñ‚ðŠO•”‚É’u‚­‚±‚Æ‚ðl‚¦‚Ü‚µ‚傤</term>
+            <term>クエリ文字列を外部に置くことを考えましょう</term>
             <listitem>
                 <para>
-                    ƒNƒGƒŠ‚ªANSI•W€‚Å‚È‚¢SQLŠÖ”‚ðŒÄ‚ñ‚Å‚¢‚é‚È‚çA‚±‚ê‚Í‚æ‚¢ƒvƒ‰ƒNƒeƒBƒX‚Å‚·B
-                    ƒNƒGƒŠ•¶Žš—ñ‚ðƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ÖŠOo‚µ‚·‚ê‚΃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒ|[ƒ^ƒuƒ‹‚É‚È‚è‚Ü‚·B
+                    クエリがANSI標準でないSQL関数を呼んでいるなら、これはよいプラクティスです。
+                    クエリ文字列をマッピングファイルへ外出しすればアプリケーションがポータブルになります。
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
-            <term>ƒoƒCƒ“ƒh•Ï”‚ðŽg‚¢‚Ü‚µ‚傤B</term>
+            <term>バインド変数を使いましょう。</term>
             <listitem>
                 <para>
-                     JDBC‚̏ꍇ‚Æ“¯‚¶‚悤‚ɁA’萔‚Å‚È‚¢’l‚Í•K‚¸"?"‚Å’u‚«Š·‚¦‚Ü‚µ‚傤B
-                     ’萔‚Å‚È‚¢’l‚ðƒoƒCƒ“ƒh‚·‚邽‚߂ɁAƒNƒGƒŠ‚Å•¶Žš—ñ‘€ì‚ðŽg‚Á‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñB
-                     –¼‘O•t‚«‚̃pƒ‰ƒ[ƒ^‚ðŽg‚¤‚悤‚É‚·‚é‚Æ‚³‚ç‚É—Ç‚¢‚Å‚·B
+                     JDBCの場合と同じように、定数でない値は必ず"?"で置き換えましょう。
+                     定数でない値をバインドするために、クエリで文字列操作を使ってはいけません。
+                     名前付きのパラメータを使うようにするとさらに良いです。
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
-            <term>JDBCƒRƒlƒNƒVƒ‡ƒ“‚ðŠÇ—‚µ‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñB</term>
+            <term>JDBCコネクションを管理してはいけません。</term>
             <listitem>
                 <para>
-                    Hibernate‚ł̓AƒvƒŠƒP[ƒVƒ‡ƒ“‚ªJDBCƒRƒlƒNƒVƒ‡ƒ“‚ðŠÇ—‚·‚邱‚Æ‚ª‹–‚³‚ê‚Ä‚¢‚Ü‚·B
-                    ‚µ‚©‚µ‚±‚ê‚͍ŏIŽè’i‚¾‚ÆŽv‚Á‚Ä‚­‚¾‚³‚¢B
-                    ‘g‚ݍž‚݂̃RƒlƒNƒVƒ‡ƒ“ƒvƒƒoƒCƒ_‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚È‚¯‚ê‚΁A
-                    <literal>org.hibernate.connection.ConnectionProvider</literal> ‚ðŽÀ‘•‚·‚邱‚Æ‚ðl‚¦‚Ä‚­‚¾‚³‚¢B
+                    HibernateではアプリケーションがJDBCコネクションを管理することが許されています。
+                    しかしこれは最終手段だと思ってください。
+                    組み込みのコネクションプロバイダを使うことができなければ、
+                    <literal>org.hibernate.connection.ConnectionProvider</literal> を実装することを考えてください。
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
-            <term>ƒJƒXƒ^ƒ€Œ^‚ÌŽg—p‚ðl‚¦‚Ü‚µ‚傤B</term>
+            <term>カスタム型の使用を考えましょう。</term>
             <listitem>
                 <para>
-                    ‚ ‚郉ƒCƒuƒ‰ƒŠ‚©‚玝‚Á‚Ä‚«‚½JavaŒ^‚ð‰i‘±‰»‚·‚é•K—v‚ª‚ ‚é‚Æ‚µ‚Ü‚µ‚傤B
-                    ‚µ‚©‚µ‚»‚ÌŒ^‚ɂ́AƒRƒ“ƒ|[ƒlƒ“ƒg‚Æ‚µ‚ă}ƒbƒsƒ“ƒO‚·‚邽‚ß‚É•K—v‚ȃAƒNƒZƒT‚ª‚È‚¢‚Æ‚µ‚Ü‚·B
-                    ‚±‚̂悤‚ȏꍇ‚Í <literal>org.hibernate.UserType</literal> ‚ÌŽÀ‘•‚ðl‚¦‚é‚ׂ«‚Å‚·B
-                    ‚»‚¤‚·‚ê‚ÎHibernateŒ^‚Æ‚ÌŽÀ‘••ÏŠ·‚ðS”z‚¹‚¸‚ɃAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃R[ƒh‚ðˆµ‚¦‚Ü‚·B
+                    あるライブラリから持ってきたJava型を永続化する必要があるとしましょう。
+                    しかしその型には、コンポーネントとしてマッピングするために必要なアクセサがないとします。
+                    このような場合は <literal>org.hibernate.UserType</literal> の実装を考えるべきです。
+                    そうすればHibernate型との実装変換を心配せずにアプリケーションのコードを扱えます。
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
-            <term>ƒ{ƒgƒ‹ƒlƒbƒN‚ð‰ðÁ‚·‚é‚É‚ÍJDBC‚ðƒnƒ“ƒhƒR[ƒh‚µ‚Ü‚µ‚傤B</term>
+            <term>ボトルネックを解消するにはJDBCをハンドコードしましょう。</term>
             <listitem>
                 <para>
-                    ƒVƒXƒeƒ€‚̃pƒtƒH[ƒ}ƒ“ƒXƒNƒŠƒeƒBƒJƒ‹‚ȗ̈æ‚ł́A
-                    ‚ ‚éŽí‚Ì‘€ì‚ÉJDBC‚𒼐ڎg‚¤‚Æ—Ç‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-                    ‚µ‚©‚µ‰½‚ªƒ{ƒgƒ‹ƒlƒbƒN‚É‚È‚Á‚Ä‚¢‚é‚© <emphasis>‚Í‚Á‚«‚è‚·‚é</emphasis> ‚Ü‚Å‚Í‘Ò‚Á‚Ä‚­‚¾‚³‚¢B
-                    ‚Ü‚½JDBC‚𒼐ڎg‚¤‚©‚ç‚Æ‚¢‚Á‚āA•K‚¸‚µ‚à‘¬‚­‚È‚é‚Æ‚ÍŒÀ‚ç‚È‚¢‚±‚Æ‚à—‰ð‚µ‚Ä‚­‚¾‚³‚¢B
-                    JDBC‚𒼐ڎg‚¤•K—v‚ª‚ ‚ê‚΁AHibernate‚Ì <literal>Session</literal> ‚ðƒI[ƒvƒ“‚µ‚āA
-                    JDBCƒRƒlƒNƒVƒ‡ƒ“‚ðŽg‚¤‚Æ—Ç‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-                    ˆË‘R‚Æ‚µ‚Ä“¯‚¶ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“í—ª‚ƃRƒlƒNƒVƒ‡ƒ“ƒvƒƒoƒCƒ_‚ªŽg‚¦‚é‚©‚ç‚Å‚·B
+                    システムのパフォーマンスクリティカルな領域では、
+                    ある種の操作にJDBCを直接使うと良いかもしれません。
+                    しかし何がボトルネックになっているか <emphasis>はっきりする</emphasis> までは待ってください。
+                    またJDBCを直接使うからといって、必ずしも速くなるとは限らないことも理解してください。
+                    JDBCを直接使う必要があれば、Hibernateの <literal>Session</literal> をオープンして、
+                    JDBCコネクションを使うと良いかもしれません。
+                    依然として同じトランザクション戦略とコネクションプロバイダが使えるからです。
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
-            <term><literal>Session</literal> ‚̃tƒ‰ƒbƒVƒ…‚ð—‰ð‚µ‚Ü‚µ‚傤B</term>
+            <term><literal>Session</literal> のフラッシュを理解しましょう。</term>
             <listitem>
                 <para>
-                    Session‚ª‰i‘±ó‘Ô‚ðƒf[ƒ^ƒx[ƒX‚Æ“¯Šú‚³‚¹‚邱‚Æ‚ª‚Æ‚«‚Ç‚«‚ ‚è‚Ü‚·B
-                    ‚µ‚©‚µ‚±‚ꂪ‚ ‚Ü‚è‚É•p”É‚É‹N‚±‚é‚悤‚¾‚ƁAƒpƒtƒH[ƒ}ƒ“ƒX‚ɉe‹¿‚ªo‚Ä‚«‚Ü‚·B
-                    Ž©“®ƒtƒ‰ƒbƒVƒ…‚𖳌ø‚É‚µ‚½‚èA“Á’è‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃NƒGƒŠ‚â‘€ì‚̏‡”Ô‚ð•ÏX‚·‚邱‚ƂŁA
-                    •s•K—v‚ȃtƒ‰ƒbƒVƒ…‚ðÅ¬ŒÀ‚É‚Å‚«‚Ü‚·B
+                    Sessionが永続状態をデータベースと同期させることがときどきあります。
+                    しかしこれがあまりに頻繁に起こるようだと、パフォーマンスに影響が出てきます。
+                    自動フラッシュを無効にしたり、特定のトランザクションのクエリや操作の順番を変更することで、
+                    不必要なフラッシュを最小限にできます。
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
-            <term>3‘wƒA[ƒLƒeƒNƒ`ƒƒ‚Å‚Í•ª—£ƒIƒuƒWƒFƒNƒg‚ÌŽg—p‚ðl‚¦‚Ü‚µ‚傤B</term>
+            <term>3層アーキテクチャでは分離オブジェクトの使用を考えましょう。</term>
             <listitem>
                 <para>
-                    ƒT[ƒuƒŒƒbƒg / ƒZƒbƒVƒ‡ƒ“ƒr[ƒ“ƒA[ƒLƒeƒNƒ`ƒƒ‚ðŽg‚¤‚Æ‚«A
-                    ƒT[ƒuƒŒƒbƒg‘w / JSP‘wŠÔ‚ŃZƒbƒVƒ‡ƒ“ƒr[ƒ“‚э[ƒh‚µ‚½‰i‘±ƒIƒuƒWƒFƒNƒg‚ð‚â‚èŽæ‚è‚Å‚«‚Ü‚·B
-                    ‚»‚̍ۃŠƒNƒGƒXƒg‚²‚ƂɐV‚µ‚¢Session‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B
-                    ‚Ü‚½ <literal>Session.merge()</literal> ‚â <literal>Session.saveOrUpdate()</literal> 
-                    ‚ðŽg‚Á‚āAƒIƒuƒWƒFƒNƒg‚ƃf[ƒ^ƒx[ƒX‚𓯊ú‚³‚¹‚Ä‚­‚¾‚³‚¢B
+                    サーブレット / セッションビーンアーキテクチャを使うとき、
+                    サーブレット層 / JSP層間でセッションビーンでロードした永続オブジェクトをやり取りできます。
+                    その際リクエストごとに新しいSessionを使ってください。
+                    また <literal>Session.merge()</literal> や <literal>Session.saveOrUpdate()</literal> 
+                    を使って、オブジェクトとデータベースを同期させてください。
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
-            <term>2‘wƒA[ƒLƒeƒNƒ`ƒƒ‚Å‚Í’·‚¢‰i‘±ƒRƒ“ƒeƒLƒXƒg‚ÌŽg—p‚ðl‚¦‚Ü‚µ‚傤B</term>
+            <term>2層アーキテクチャでは長い永続コンテキストの使用を考えましょう。</term>
             <listitem>
                 <para>
-                    Å‚‚̃XƒP[ƒ‰ƒrƒŠƒeƒB‚𓾂é‚ɂ́A
-                    ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ð‚Å‚«‚邾‚¯’Z‚­‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                    ‚µ‚©‚µ’·‚¢ŠÔŽÀs‚·‚é <emphasis>ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“</emphasis> 
-                    ‚ÌŽÀ‘•‚ª•K—v‚È‚±‚Æ‚Í‚µ‚΂µ‚΂ł·B
-                    ‚±‚ê‚̓†[ƒU‚ÌŽ‹“_‚©‚ç‚Í1ŒÂ‚̍ì‹Æ’PˆÊiunit of workj‚É‚È‚è‚Ü‚·B
-                    ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Í‚¢‚­‚‚©‚̃Nƒ‰ƒCƒAƒ“ƒg‚̃ŠƒNƒGƒXƒg/ƒŒƒXƒ|ƒ“ƒXƒTƒCƒNƒ‹‚É‚Ü‚½‚ª‚è‚Ü‚·B
-                    ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŽÀ‘•‚É•ª—£ƒIƒuƒWƒFƒNƒg‚ðŽg‚¤‚͈̂ê”Ê“I‚Å‚·B
+                    最高のスケーラビリティを得るには、
+                    データベーストランザクションをできるだけ短くしなければなりません。
+                    しかし長い間実行する <emphasis>アプリケーショントランザクション</emphasis> 
+                    の実装が必要なことはしばしばです。
+                    これはユーザの視点からは1個の作業単位(unit of work)になります。
+                    アプリケーショントランザクションはいくつかのクライアントのリクエスト/レスポンスサイクルにまたがります。
+                    アプリケーショントランザクションの実装に分離オブジェクトを使うのは一般的です。
                     
-                    ‚»‚¤‚Å‚È‚¯‚ê‚΁A2‘wƒA[ƒLƒeƒNƒ`ƒƒ‚̏ꍇ‚Í“Á‚É“KØ‚È‚±‚Æ‚Å‚·‚ªA
-                    ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃‰ƒCƒtƒTƒCƒNƒ‹‘S‘̂ɑ΂µ‚Ä
-                    ’Pˆê‚̃I[ƒvƒ“‚ȉi‘±‰»ƒRƒ“ƒeƒLƒXƒgiƒZƒbƒVƒ‡ƒ“j‚ðˆÛŽ‚µ‚Ä‚­‚¾‚³‚¢B
-                    ‚»‚µ‚Ä’Pƒ‚ɃŠƒNƒGƒXƒg‚̍Ōã‚ÉJDBCƒRƒlƒNƒVƒ‡ƒ“‚©‚çØ’f‚µA
-                    ŽŸ‚̃ŠƒNƒGƒXƒg‚̍ŏ‰‚ɍĐڑ±‚µ‚Ü‚·B
+                    そうでなければ、2層アーキテクチャの場合は特に適切なことですが、
+                    アプリケーショントランザクションのライフサイクル全体に対して
+                    単一のオープンな永続化コンテキスト(セッション)を維持してください。
+                    そして単純にリクエストの最後にJDBCコネクションから切断し、
+                    次のリクエストの最初に再接続します。
                     
-                    Œˆ‚µ‚Ä•¡”‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒ†[ƒXƒP[ƒX‚É“n‚Á‚Ä
-                    1ŒÂ‚ÌSession‚ðŽg‚¢‰ñ‚³‚È‚¢‚Å‚­‚¾‚³‚¢B
-                    ‚»‚¤‚Å‚È‚¯‚ê‚΁AŒÃ‚¢ƒf[ƒ^‚ōì‹Æ‚·‚邱‚Æ‚É‚È‚è‚Ü‚·B
+                    決して複数のアプリケーショントランザクションユースケースに渡って
+                    1個のSessionを使い回さないでください。
+                    そうでなければ、古いデータで作業することになります。
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
-            <term>—áŠO‚𕜋A‰Â”\‚È‚à‚Ì‚Æ‚µ‚Ĉµ‚Á‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñB</term>
+            <term>例外を復帰可能なものとして扱ってはいけません。</term>
             <listitem>
                 <para>
-                    ‚±‚ê‚́uƒxƒXƒgvƒvƒ‰ƒNƒeƒBƒXˆÈã‚́A•K{‚̃vƒ‰ƒNƒeƒBƒX‚Å‚·B
-                    —áŠO‚ª”­¶‚µ‚½‚Æ‚«‚Í <literal>Transaction</literal> ‚ðƒ[ƒ‹ƒoƒbƒN‚µ‚āA
-                    <literal>Session</literal> ‚ðƒNƒ[ƒY‚µ‚Ä‚­‚¾‚³‚¢B
-                    ‚»‚¤‚µ‚È‚¢‚ÆHibernate‚̓ƒ‚ƒŠ‚̏ó‘Ô‚ª‰i‘±ó‘Ԃ𐳊m‚É•\Œ»‚µ‚Ä‚¢‚邱‚Æ‚ð•ÛØ‚Å‚«‚Ü‚¹‚ñB
-                    ‚±‚Ì“Á•Ê‚ȏꍇ‚Æ‚µ‚āA—^‚¦‚ç‚ꂽŽ¯•ÊŽq‚ðŽ‚ÂƒCƒ“ƒXƒ^ƒ“ƒX‚ªƒf[ƒ^ƒx[ƒX‚É‘¶Ý‚·‚é‚©‚Ç‚¤‚©‚ð”»’è‚·‚邽‚߂ɁA
-                    <literal>Session.load()</literal> ‚ðŽg‚¤‚±‚Æ‚Í‚â‚ß‚Ä‚­‚¾‚³‚¢B
-                    ‚»‚Ì‘ã‚í‚è‚É <literal>Session.get()</literal> ‚©ƒNƒGƒŠ‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B
+                    これは「ベスト」プラクティス以上の、必須のプラクティスです。
+                    例外が発生したときは <literal>Transaction</literal> をロールバックして、
+                    <literal>Session</literal> をクローズしてください。
+                    そうしないとHibernateはメモリの状態が永続状態を正確に表現していることを保証できません。
+                    この特別な場合として、与えられた識別子を持つインスタンスがデータベースに存在するかどうかを判定するために、
+                    <literal>Session.load()</literal> を使うことはやめてください。
+                    その代わりに <literal>Session.get()</literal> かクエリを使ってください。
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
-            <term>ŠÖ˜A‚É‚Í‚È‚é‚ׂ­’x‰„ƒtƒFƒbƒ`‚ðŽg‚¢‚Ü‚µ‚傤B</term>
+            <term>関連にはなるべく遅延フェッチを使いましょう。</term>
             <listitem>
                 <para>
-                    ‘¦ŽžƒtƒFƒbƒ`‚͍T‚¦‚ß‚É‚µ‚Ü‚µ‚傤B
-                    “ñŽŸƒLƒƒƒbƒVƒ…‚É‚ÍŠ®‘S‚É•ÛŽ‚³‚ê‚È‚¢‚悤‚ȃNƒ‰ƒX‚ÌŠÖ˜A‚ɂ́A
-                    ƒvƒƒLƒV‚Æ’x‰„ƒRƒŒƒNƒVƒ‡ƒ“‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B
-                    ƒLƒƒƒbƒVƒ…‚³‚ê‚éƒNƒ‰ƒX‚ÌŠÖ˜AA‚‚܂èƒLƒƒƒbƒVƒ…‚ªƒqƒbƒg‚·‚é‰Â”\«‚ª”ñí‚ɍ‚‚¢ŠÖ˜A‚́A
-                    <literal>lazy="false"</literal> ‚ŐϋɓI‚ȃtƒFƒbƒ`‚𖾎¦“I‚É–³Œø‚É‚µ‚Ä‚­‚¾‚³‚¢B
-                    Œ‹‡ƒtƒFƒbƒ`‚ª“KØ‚È“Á’è‚̃†[ƒXƒP[ƒX‚ɂ́A
-                    ƒNƒGƒŠ‚Å <literal>left join fetch</literal> ‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B
+                    即時フェッチは控えめにしましょう。
+                    二次キャッシュには完全に保持されないようなクラスの関連には、
+                    プロキシと遅延コレクションを使ってください。
+                    キャッシュされるクラスの関連、つまりキャッシュがヒットする可能性が非常に高い関連は、
+                    <literal>lazy="false"</literal> で積極的なフェッチを明示的に無効にしてください。
+                    結合フェッチが適切な特定のユースケースには、
+                    クエリで <literal>left join fetch</literal> を使ってください。
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
             <term>
-                ƒtƒFƒbƒ`‚³‚ê‚Ä‚¢‚È‚¢ƒf[ƒ^‚ÉŠÖ‚í‚é–â‘è‚ð”ð‚¯‚é‚½‚߂ɁA
-                <emphasis>ƒrƒ…[‚Ì’†‚ŃI[ƒvƒ“ƒZƒbƒVƒ‡ƒ“‚ðŽg‚¤(open session in view)</emphasis> 
-                ƒpƒ^[ƒ“‚©A“§‚³‚ꂽ <emphasis>‘g‚Ý—§‚ătƒF[ƒY(assembly phase)</emphasis> ‚ðŽg‚¢‚Ü‚µ‚傤B
+                フェッチされていないデータに関わる問題を避けるために、
+                <emphasis>ビューの中でオープンセッションを使う(open session in view)</emphasis> 
+                パターンか、統制された <emphasis>組み立てフェーズ(assembly phase)</emphasis> を使いましょう。
             </term>
             <listitem>
                 <para>
-                    Hibernate‚Í <emphasis>Data Transfer Objects</emphasis> (DTO)‚ð‘‚­‘Þ‹ü‚ȍì‹Æ‚©‚çŠJ”­ŽÒ‚ð‰ð•ú‚µ‚Ü‚·B
-                    “`““I‚ÈEJBƒA[ƒLƒeƒNƒ`ƒƒ‚Å‚ÍDTO‚Í“ñ‚–ړI‚ª‚ ‚è‚Ü‚·F
-                    1‚–ڂ́AƒGƒ“ƒeƒBƒeƒBƒr[ƒ“‚ªƒVƒŠƒAƒ‰ƒCƒY‚³‚ê‚È‚¢–â‘è‚ւ̑΍ô‚Å‚·B
-                    2‚–ڂ́AƒvƒŒƒ[ƒ“ƒe[ƒVƒ‡ƒ“‘w‚ɐ§Œä‚ª–ß‚é‘O‚ɁA
-                    ƒrƒ…[‚ÉŽg‚í‚ê‚é‚·‚ׂẴf[ƒ^‚ªƒtƒFƒbƒ`‚³‚ê‚āADTO‚É•œŒ³‚³‚ê‚é‚悤‚È‘g‚Ý—§‚ătƒF[ƒY‚ðˆÃ–Ù“I‚É’è‹`‚µ‚Ü‚·B
-                    Hibernate‚Å‚Í1‚–ڂ̖ړI‚ª•s—v‚É‚È‚è‚Ü‚·B
-                    ‚µ‚©‚µƒrƒ…[‚̃Œƒ“ƒ_ƒŠƒ“ƒOˆ—‚̊ԁA‰i‘±ƒRƒ“ƒeƒLƒXƒgiƒZƒbƒVƒ‡ƒ“j‚ðƒI[ƒvƒ“‚É‚µ‚½‚Ü‚Ü‚É‚µ‚È‚¯‚ê‚΁A
-                    ‘g‚Ý—§‚ătƒF[ƒY‚Í‚Ü‚¾•K—v‚Å‚·i•ª—£ƒIƒuƒWƒFƒNƒg‚Ì’†‚̂ǂ̃f[ƒ^‚ª—˜—p‰Â”\‚©‚ɂ‚¢‚āA
-                    ƒvƒŒƒ[ƒ“ƒe[ƒVƒ‡ƒ“‘w‚ÆŒµ–§‚ÈŽæ‚茈‚ß‚ð‚µ‚Ä‚¢‚éƒrƒWƒlƒXƒƒ\ƒbƒh‚ðl‚¦‚Ä‚Ý‚Ä‚­‚¾‚³‚¢jB
-                    ‚±‚ê‚ÍHibernate‘¤‚Ì–â‘è‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-                    ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ““à‚ňÀ‘S‚Ƀf[ƒ^ƒAƒNƒZƒX‚·‚邽‚ß‚ÌŠî–{“I‚È—vŒ‚Å‚·B
+                    Hibernateは <emphasis>Data Transfer Objects</emphasis> (DTO)を書く退屈な作業から開発者を解放します。
+                    伝統的なEJBアーキテクチャではDTOは二つ目的があります:
+                    1つ目は、エンティティビーンがシリアライズされない問題への対策です。
+                    2つ目は、プレゼンテーション層に制御が戻る前に、
+                    ビューに使われるすべてのデータがフェッチされて、DTOに復元されるような組み立てフェーズを暗黙的に定義します。
+                    Hibernateでは1つ目の目的が不要になります。
+                    しかしビューのレンダリング処理の間、永続コンテキスト(セッション)をオープンにしたままにしなければ、
+                    組み立てフェーズはまだ必要です(分離オブジェクトの中のどのデータが利用可能かについて、
+                    プレゼンテーション層と厳密な取り決めをしているビジネスメソッドを考えてみてください)。
+                    これはHibernate側の問題ではありません。
+                    トランザクション内で安全にデータアクセスするための基本的な要件です。
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
-            <term>Hibernate‚©‚çƒrƒWƒlƒXƒƒWƒbƒN‚𒊏ۉ»‚·‚邱‚Æ‚ðl‚¦‚Ü‚µ‚傤B</term>
+            <term>Hibernateからビジネスロジックを抽象化することを考えましょう。</term>
             <listitem>
                 <para>
-                    ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ŁiHibernate‚́jƒf[ƒ^ƒAƒNƒZƒXƒR[ƒh‚ð‰B•Á‚µ‚Ü‚µ‚傤B
-                    <emphasis>DAO</emphasis> ‚Æ <emphasis>Thread Local Session</emphasis> ƒpƒ^[ƒ“‚ð‘g‚ݍ‡‚킹‚Ü‚µ‚傤B
-                    <literal>UserType</literal> ‚ÅHibernate‚ÉŠÖ˜A•t‚¯‚é‚ƁA
-                    ƒnƒ“ƒhƒR[ƒh‚µ‚½JDBC‚ʼni‘±‰»‚·‚éƒNƒ‰ƒX‚ðŽ‚Â‚±‚Æ‚à‚Å‚«‚Ü‚·B
-                    i‚±‚̃AƒhƒoƒCƒX‚́u\•ª‘å‚«‚ȁvƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ɑ΂µ‚Ä‚Ì‚à‚Ì‚Å‚·B
-                    ƒe[ƒuƒ‹‚ª5ŒÂ‚µ‚©‚È‚¢‚悤‚ȃAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚Í“–‚Ä‚Í‚Ü‚è‚Ü‚¹‚ñBj
+                    インターフェイスで(Hibernateの)データアクセスコードを隠蔽しましょう。
+                    <emphasis>DAO</emphasis> と <emphasis>Thread Local Session</emphasis> パターンを組み合わせましょう。
+                    <literal>UserType</literal> でHibernateに関連付けると、
+                    ハンドコードしたJDBCで永続化するクラスを持つこともできます。
+                    (このアドバイスは「十分大きな」アプリケーションに対してのものです。
+                    テーブルが5個しかないようなアプリケーションには当てはまりません。)
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
-            <term>’¿‚µ‚¢ŠÖ˜Aƒ}ƒbƒsƒ“ƒO‚ÍŽg‚í‚È‚¢‚悤‚É‚µ‚Ü‚µ‚傤B</term>
+            <term>珍しい関連マッピングは使わないようにしましょう。</term>
             <listitem>
                 <para>
-                    ‚æ‚¢ƒ†[ƒXƒP[ƒX‚É–{“–‚Ì‘½‘Α½ŠÖ˜A‚ª‚ ‚邱‚Æ‚Í‹Hi‚Ü‚êj‚Å‚·B
-                    ‚Ù‚Æ‚ñ‚ǂ̏ꍇuƒŠƒ“ƒNƒe[ƒuƒ‹v‚Ì•t‰Á“I‚ȏî•ñ‚ª•K—v‚É‚È‚è‚Ü‚·B
-                    ‚±‚̏ꍇAƒŠƒ“ƒNƒNƒ‰ƒX‚É2‚‚Ì1‘Α½ŠÖ˜A‚ðŽg‚¤•û‚ª‚¸‚Á‚Æ—Ç‚¢‚Å‚·B
-                    ŽÀÛ‚Ù‚Æ‚ñ‚ǂ̏ꍇŠÖ˜A‚Í1‘Α½‚Æ‘½‘Î1‚Ȃ̂ŁA
-                    ‘¼‚̃Xƒ^ƒCƒ‹‚ÌŠÖ˜A‚ðŽg‚¤‚Æ‚«‚Í–{“–‚É•K—v‚©‚Ç‚¤‚©‚ðl‚¦‚Ä‚Ý‚Ä‚­‚¾‚³‚¢B
+                    よいユースケースに本当の多対多関連があることは稀(まれ)です。
+                    ほとんどの場合「リンクテーブル」の付加的な情報が必要になります。
+                    この場合、リンククラスに2つの1対多関連を使う方がずっと良いです。
+                    実際ほとんどの場合関連は1対多と多対1なので、
+                    他のスタイルの関連を使うときは本当に必要かどうかを考えてみてください。
                 </para>
             </listitem>
         </varlistentry>
         <varlistentry>
-            <term>‚È‚é‚ׂ­‘o•ûŒüŠÖ˜A‚É‚µ‚Ü‚µ‚傤B</term>
+            <term>なるべく双方向関連にしましょう。</term>
             <listitem>
                 <para>
-                    ’P•ûŒüŠÖ˜A‚Í‘o•ûŒü‚É”ä‚ׂČŸõ‚ª“‚­‚È‚è‚Ü‚·B
-                    ‘å‚«‚ȃAƒvƒŠƒP[ƒVƒ‡ƒ“‚ł́A
-                    ‚Ù‚Æ‚ñ‚Ç‚·‚ׂĂ̊֘A‚ª‘o•ûŒü‚ɃiƒrƒQ[ƒVƒ‡ƒ“‚Å‚«‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+                    単方向関連は双方向に比べて検索が難しくなります。
+                    大きなアプリケーションでは、
+                    ほとんどすべての関連が双方向にナビゲーションできなければなりません。
                 </para>
             </listitem>
         </varlistentry>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/collection_mapping.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/collection_mapping.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/collection_mapping.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,14 +1,16 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="collections">
-    <title>ƒRƒŒƒNƒVƒ‡ƒ“‚̃}ƒbƒsƒ“ƒO</title>
+    <title>コレクションのマッピング</title>
 
     <sect1 id="collections-persistent" revision="3">
-        <title>ƒRƒŒƒNƒVƒ‡ƒ“‚̉i‘±‰»</title>
+        <title>コレクションの永続化</title>
         
         <para>
-            ƒRƒŒƒNƒVƒ‡ƒ“Œ^‚̃tƒB[ƒ‹ƒh‚ð‰i‘±‰»‚·‚é‚ɂ́A
-            ‚»‚̃RƒŒƒNƒVƒ‡ƒ“Œ^‚ªƒCƒ“ƒ^[ƒtƒFƒCƒXŒ^‚Å‚ ‚é•K—v‚ª‚ ‚è‚Ü‚·B
-            —Ⴆ‚΁A
+            コレクション型のフィールドを永続化するには、
+            そのコレクション型がインターフェイス型である必要があります。
+            例えば、
         </para>
         
         <programlisting><![CDATA[public class Product {
@@ -22,25 +24,25 @@
 }]]></programlisting>
         
         <para>
-            ŽÀÝ‚·‚éƒCƒ“ƒ^[ƒtƒFƒCƒX‚É‚Í <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
-            ‚Ü‚½‚́A”CˆÓ‚̃Cƒ“ƒ^[ƒtƒFƒCƒX‚ªŽg‚¦‚Ü‚·I
-            i‚½‚¾‚µA”CˆÓ‚̃Cƒ“ƒ^[ƒtƒFƒCƒX‚ðŽg—p‚·‚éê‡‚́A
+            実在するインターフェイスには <literal>java.util.Set</literal>、
+            <literal>java.util.Collection</literal>、<literal>java.util.List</literal>、
+            <literal>java.util.Map</literal>、<literal>java.util.SortedSet</literal>、
+            <literal>java.util.SortedMap</literal> などがあります。
+            または、任意のインターフェイスが使えます!
+            (ただし、任意のインターフェイスを使用する場合は、
             <literal>org.hibernate.usertype.UserCollectionType</literal>
-            ‚ÌŽÀ‘•ƒNƒ‰ƒX‚ðì¬‚·‚é•K—v‚ª‚ ‚è‚Ü‚·Bj
+            の実装クラスを作成する必要があります。)
         </para>
         
         <para>
-            <literal>HashSet</literal> ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ðŽ‚ÂƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚ª
-            ‚ǂ̂悤‚ɏ‰Šú‰»‚³‚ê‚é‚©‚É’–Ú‚µ‚Ä‚Ý‚Ü‚µ‚傤B
-            ‚±‚ê‚͐V‚½‚ɐ¶¬‚³‚ꂽi‰i‘±‰»‚³‚ê‚Ä‚¢‚È‚¢jƒRƒŒƒNƒVƒ‡ƒ“Œ^‚̃vƒƒpƒeƒB‚ð
-            ‰Šú‰»‚·‚éÅ“K‚È•û–@‚Å‚·B
-            i—Ⴆ‚Î <literal>persist()</literal> ‚É‚æ‚èjƒCƒ“ƒXƒ^ƒ“ƒX‚ð‰i‘±‰»‚µ‚悤‚Æ‚µ‚½‚Æ‚«A
-            Hibernate‚Í <literal>HashSet</literal> ‚ðHibernate“ÆŽ©‚Ì <literal>Set</literal>
-            ‚ÌŽÀ‘•ƒNƒ‰ƒX‚É’u‚«Š·‚¦‚Ü‚·B
-            ‚±‚Ì‚½‚߁AŽŸ‚̂悤‚ȃGƒ‰[‚É‚Í’ˆÓ‚ª•K—v‚Å‚·B
+            <literal>HashSet</literal> のインスタンスを持つインスタンス変数が
+            どのように初期化されるかに注目してみましょう。
+            これは新たに生成された(永続化されていない)コレクション型のプロパティを
+            初期化する最適な方法です。
+            (例えば <literal>persist()</literal> により)インスタンスを永続化しようとしたとき、
+            Hibernateは <literal>HashSet</literal> をHibernate独自の <literal>Set</literal>
+            の実装クラスに置き換えます。
+            このため、次のようなエラーには注意が必要です。
         </para>
         
         <programlisting><![CDATA[Cat cat = new DomesticCat();
@@ -54,39 +56,39 @@
 (HashSet) cat.getKittens(); // Error!]]></programlisting>
 
         <para>
-            Hibernate‚É‚æ‚蒍“ü‚³‚ꂽ‰i‘±«ƒRƒŒƒNƒVƒ‡ƒ“‚́AƒCƒ“ƒ^[ƒtƒFƒCƒXŒ^‚ɉž‚¶‚āA
-            <literal>HashMap</literal> ‚â <literal>HashSet</literal>A
-            <literal>TreeMap</literal>A <literal>TreeSet</literal>A
-            <literal>ArrayList</literal> ‚̂悤‚ɐU•‘‚¢‚Ü‚·B
+            Hibernateにより注入された永続性コレクションは、インターフェイス型に応じて、
+            <literal>HashMap</literal> や <literal>HashSet</literal>、
+            <literal>TreeMap</literal>、 <literal>TreeSet</literal>、
+            <literal>ArrayList</literal> のように振舞います。
          </para>
 
         <para>
-            ƒRƒŒƒNƒVƒ‡ƒ“ƒCƒ“ƒXƒ^ƒ“ƒX‚́A’lŒ^‚Æ‚µ‚Ä•’ʂɐU•‘‚¢‚Ü‚·B
-            ‰i‘±‰»ƒIƒuƒWƒFƒNƒg‚ÉŽQÆ‚³‚ꂽ‚Æ‚«‚ÉŽ©“®“I‚ɉi‘±‰»‚³‚êA
-            ŽQÆ‚ª‚È‚­‚È‚Á‚½‚Æ‚«‚ÉŽ©“®“I‚ɍ폜‚³‚ê‚Ü‚·B
-            ‚à‚µ‚ ‚é‰i‘±‰»ƒIƒuƒWƒFƒNƒg‚©‚ç•Ê‚̉i‘±‰»ƒIƒuƒWƒFƒNƒg‚É“n‚³‚ꂽ‚çA
-            ‚»‚Ì—v‘f‚ÍŒ»Ý‚̃e[ƒuƒ‹‚©‚ç•Ê‚̃e[ƒuƒ‹‚Ɉړ®‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-            ‚Q‚‚̃Gƒ“ƒeƒBƒeƒB‚ª“¯‚¶ƒRƒŒƒNƒVƒ‡ƒ“ƒCƒ“ƒXƒ^ƒ“ƒX‚ð‹¤—L‚µ‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñB
-            ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ‚ƒfƒ‹‚ðƒx[ƒX‚É‚µ‚Ä‚¢‚邽‚߁AƒRƒŒƒNƒVƒ‡ƒ“Œ^‚̃vƒƒpƒeƒB‚É
-            null’l‚ð‘ã“ü‚µ‚Ä‚àˆÓ–¡‚ª‚ ‚è‚Ü‚¹‚ñB
-            ‚‚܂èHibernate‚ÍŽQÆæ‚Ì‚È‚¢ƒRƒŒƒNƒVƒ‡ƒ“‚Æ‹ó‚̃RƒŒƒNƒVƒ‡ƒ“‚ð‹æ•Ê‚µ‚Ü‚¹‚ñB
+            コレクションインスタンスは、値型として普通に振舞います。
+            永続化オブジェクトに参照されたときに自動的に永続化され、
+            参照がなくなったときに自動的に削除されます。
+            もしある永続化オブジェクトから別の永続化オブジェクトに渡されたら、
+            その要素は現在のテーブルから別のテーブルに移動するかもしれません。
+            2つのエンティティが同じコレクションインスタンスを共有してはいけません。
+            リレーショナルモデルをベースにしているため、コレクション型のプロパティに
+            null値を代入しても意味がありません。
+            つまりHibernateは参照先のないコレクションと空のコレクションを区別しません。
         </para>
 
         <para>
-            ‚µ‚©‚µ‚»‚ê‚قǐS”z‚µ‚È‚­‚Ä‚à\‚¢‚Ü‚¹‚ñB
-            •’iŽg‚Á‚Ä‚¢‚éJava‚̃RƒŒƒNƒVƒ‡ƒ“‚Æ“¯‚¶‚悤‚ɁA‰i‘±‰»ƒRƒŒƒNƒVƒ‡ƒ“‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B
-            ‘o•ûŒüŠÖ˜A‚̈Ӗ¡‚ð—‰ð‚·‚ê‚΂悢‚Ì‚Å‚·i‚±‚ê‚ÍŒã‚Ù‚Çà–¾‚µ‚Ü‚·jB
+            しかしそれほど心配しなくても構いません。
+            普段使っているJavaのコレクションと同じように、永続化コレクションを使ってください。
+            双方向関連の意味を理解すればよいのです(これは後ほど説明します)。
         </para>
 
     </sect1>
 
     <sect1 id="collections-mapping" revision="4">
-        <title>ƒRƒŒƒNƒVƒ‡ƒ“‚̃}ƒbƒsƒ“ƒO</title>
+        <title>コレクションのマッピング</title>
 
         <para>
-            ƒRƒŒƒNƒVƒ‡ƒ“‚ðƒ}ƒbƒsƒ“ƒO‚·‚邽‚߂̃}ƒbƒsƒ“ƒO—v‘f‚́AƒCƒ“ƒ^[ƒtƒFƒCƒX‚ÌŒ^‚Ɉˑ¶‚µ‚Ü‚·B
-            —Ⴆ‚΁A<literal>&lt;set&gt;</literal> —v‘f‚Í <literal>Set</literal> Œ^‚ð
-            ƒ}ƒbƒsƒ“ƒO‚·‚邽‚ß‚ÉŽg‚¢‚Ü‚·B
+            コレクションをマッピングするためのマッピング要素は、インターフェイスの型に依存します。
+            例えば、<literal>&lt;set&gt;</literal> 要素は <literal>Set</literal> 型を
+            マッピングするために使います。
         </para>
         
         <programlisting><![CDATA[<class name="Product">
@@ -98,10 +100,10 @@
 </class>]]></programlisting>
 
         <para>
-            ƒ}ƒbƒsƒ“ƒO—v‘f‚É‚Í <literal>&lt;set&gt;</literal> ‚Ì‘¼‚É <literal>&lt;list&gt;</literal>A
-            <literal>&lt;map&gt;</literal>A<literal>&lt;bag&gt;</literal>A
-            <literal>&lt;array&gt;</literal>A<literal>&lt;primitive-array&gt;</literal> ‚ª‚ ‚è‚Ü‚·B
-            ‘ã•\‚Æ‚µ‚āA<literal>&lt;map&gt;</literal> —v‘f‚ð‰º‹L‚ÉŽ¦‚µ‚Ü‚·B
+            マッピング要素には <literal>&lt;set&gt;</literal> の他に <literal>&lt;list&gt;</literal>、
+            <literal>&lt;map&gt;</literal>、<literal>&lt;bag&gt;</literal>、
+            <literal>&lt;array&gt;</literal>、<literal>&lt;primitive-array&gt;</literal> があります。
+            代表として、<literal>&lt;map&gt;</literal> 要素を下記に示します。
         </para>
 
         <programlistingco>
@@ -147,171 +149,171 @@
             <calloutlist>
                 <callout arearefs="mappingcollection1">
                     <para>
-                        <literal>name</literal> ƒRƒŒƒNƒVƒ‡ƒ“Œ^‚Å‚ ‚éƒvƒƒpƒeƒB‚Ì–¼‘O
+                        <literal>name</literal> コレクション型であるプロパティの名前
                     </para>
                 </callout>
                 <callout arearefs="mappingcollection2">
                     <para>
-                        <literal>table</literal> iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚̓vƒƒpƒeƒB–¼jƒRƒŒƒNƒVƒ‡ƒ“ƒe[ƒuƒ‹‚Ì–¼‘O
-                       iˆê‘Α½ŠÖ˜A‚Å‚ÍŽg—p‚µ‚Ü‚¹‚ñjB
+                        <literal>table</literal> (オプション - デフォルトはプロパティ名)コレクションテーブルの名前
+                       (一対多関連では使用しません)。
                     </para>
                 </callout>
                 <callout arearefs="mappingcollection3">
                     <para>
-                        <literal>schema</literal> iƒIƒvƒVƒ‡ƒ“jƒe[ƒuƒ‹ƒXƒL[ƒ}‚Ì–¼‘OB
-                        ƒ‹[ƒg—v‘f‚Ő錾‚³‚ê‚Ä‚¢‚éƒXƒL[ƒ}‚æ‚è—Dæ‚³‚ê‚Ü‚·B
+                        <literal>schema</literal> (オプション)テーブルスキーマの名前。
+                        ルート要素で宣言されているスキーマより優先されます。
                     </para>
                 </callout>
                 <callout arearefs="mappingcollection4">
                     <para>
-                        <literal>lazy</literal> iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal>j
-                        ’x‰„ƒtƒFƒbƒ`‚𖳌ø‚É‚µAŠÖ˜A‚ðí‚É‘¦Žž‚ɃtƒFƒbƒ`‚É‚·‚邽‚ß‚ÉŽg—p‚µ‚Ü‚·B
-                        ‚Ü‚½‚́Auextra-lazyvƒtƒFƒbƒ`‚ð—LŒø‚É‚·‚邽‚ß‚ÉŽg—p‚µ‚Ü‚·B
-                        uextra-lazyvƒtƒFƒbƒ`‚́A‚Ù‚Æ‚ñ‚Ç‚Ì‘€ì‚ł̓RƒŒƒNƒVƒ‡ƒ“‚ð‰Šú‰»‚µ‚Ü‚¹‚ñ
-                        i”ñí‚É‘å‚«‚ȃRƒŒƒNƒVƒ‡ƒ“‚É“K‚µ‚Ä‚¢‚Ü‚·jB
+                        <literal>lazy</literal> (オプション - デフォルトは <literal>true</literal>)
+                        遅延フェッチを無効にし、関連を常に即時にフェッチにするために使用します。
+                        または、「extra-lazy」フェッチを有効にするために使用します。
+                        「extra-lazy」フェッチは、ほとんどの操作ではコレクションを初期化しません
+                        (非常に大きなコレクションに適しています)。
                     </para>
                 </callout>
                 <callout arearefs="mappingcollection5">
                     <para>
-                        <literal>inverse</literal> iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>false</literal>j
-                        ‚±‚̃RƒŒƒNƒVƒ‡ƒ“‚ª‘o•ûŒüŠÖ˜A‚́u‹tv‘¤‚Å‚ ‚é‚ƃ}[ƒN‚µ‚Ü‚·B
+                        <literal>inverse</literal> (オプション - デフォルトは <literal>false</literal>)
+                        このコレクションが双方向関連の「逆」側であるとマークします。
                     </para>
                 </callout>
                 <callout arearefs="mappingcollection6">
                     <para>
-                        <literal>cascade</literal> iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>none</literal>j
-                        ŽqƒGƒ“ƒeƒBƒeƒB‚ւ̃JƒXƒP[ƒh‘€ì‚ð—LŒø‚É‚µ‚Ü‚·B
+                        <literal>cascade</literal> (オプション - デフォルトは <literal>none</literal>)
+                        子エンティティへのカスケード操作を有効にします。
                     </para>
                 </callout>
                 <callout arearefs="mappingcollection7">
                     <para>
-                        <literal>sort</literal> iƒIƒvƒVƒ‡ƒ“jƒRƒŒƒNƒVƒ‡ƒ“‚ðŽ©‘R‚ȏ‡˜‚Ń\[ƒg‚·‚éê‡‚Í
-                        <literal>natural</literal> ‚ðŽw’肵‚Ü‚·B
-                        ‚ ‚é‚¢‚ÍComparatorƒNƒ‰ƒX‚ðŽw’肵‚Ü‚·B
+                        <literal>sort</literal> (オプション)コレクションを自然な順序でソートする場合は
+                        <literal>natural</literal> を指定します。
+                        あるいはComparatorクラスを指定します。
                     </para>
                 </callout>
                 <callout arearefs="mappingcollection8">
                     <para>
-                        <literal>order-by</literal> iƒIƒvƒVƒ‡ƒ“AJDK1.4‚̂݁j
-                        <literal>Map</literal>A<literal>Set</literal>Abag‚̃CƒeƒŒ[ƒVƒ‡ƒ“‡˜‚ð’è‹`‚·‚é
-                        ƒe[ƒuƒ‹ƒJƒ‰ƒ€‚ðŽw’è‚·‚é‚Æ‹¤‚ɁA
-                        ƒIƒvƒVƒ‡ƒ“‚Æ‚µ‚Ä <literal>asc</literal>A<literal>desc</literal> ‚ðŽw’肵‚Ü‚·B
+                        <literal>order-by</literal> (オプション、JDK1.4のみ)
+                        <literal>Map</literal>、<literal>Set</literal>、bagのイテレーション順序を定義する
+                        テーブルカラムを指定すると共に、
+                        オプションとして <literal>asc</literal>、<literal>desc</literal> を指定します。
                     </para>
                 </callout>
                 <callout arearefs="mappingcollection9">
                     <para>
-                        <literal>where</literal> iƒIƒvƒVƒ‡ƒ“jƒRƒŒƒNƒVƒ‡ƒ“‚ÌŒŸõ‚âíœ‚̍ۂɎg‚¤
-                        ”CˆÓ‚ÌSQL‚Ì<literal>WHERE</literal> ðŒ‚ðŽw’肵‚Ü‚·
-                        i—˜—p‰Â”\‚ȃf[ƒ^‚̈ꕔ•ª‚¾‚¯‚ðƒRƒŒƒNƒVƒ‡ƒ“‚ªŠÜ‚ނׂ«‚Æ‚«‚ɁA‚±‚ê‚Í—L—p‚Å‚·jB
+                        <literal>where</literal> (オプション)コレクションの検索や削除の際に使う
+                        任意のSQLの<literal>WHERE</literal> 条件を指定します
+                        (利用可能なデータの一部分だけをコレクションが含むべきときに、これは有用です)。
                     </para>
                 </callout>
                 <callout arearefs="mappingcollection10">
                     <para>
-                        <literal>fetch</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>select</literal>j
-                        ŠO•”Œ‹‡‚É‚æ‚éƒtƒFƒbƒ`A‡ŽŸ‘I‘ðƒtƒFƒbƒ`isequential select fetchjA
-                        ‡ŽŸƒTƒuƒZƒŒƒNƒgƒtƒFƒbƒ`isequential subselect fetchj‚Ì‚Ç‚ê‚©‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢B
+                        <literal>fetch</literal>(オプション - デフォルトは <literal>select</literal>)
+                        外部結合によるフェッチ、順次選択フェッチ(sequential select fetch)、
+                        順次サブセレクトフェッチ(sequential subselect fetch)のどれかを選択してください。
                     </para>
                 </callout>
                 <callout arearefs="mappingcollection11">
                     <para>
-                        <literal>batch-size</literal> iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>1</literal>j
-                        ƒRƒŒƒNƒVƒ‡ƒ“‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Ì’x‰„ƒtƒFƒbƒ`‚Ì‚½‚߂́uƒoƒbƒ`ƒTƒCƒYv‚ðŽw’肵‚Ü‚·B
+                        <literal>batch-size</literal> (オプション - デフォルトは <literal>1</literal>)
+                        コレクションのインスタンスの遅延フェッチのための「バッチサイズ」を指定します。
                     </para>
                 </callout>
                 <callout arearefs="mappingcollection12">
                     <para>
-                        <literal>access</literal> iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>property</literal>j
-                        ƒRƒŒƒNƒVƒ‡ƒ“Œ^ƒvƒƒpƒeƒB‚Ì’l‚ɃAƒNƒZƒX‚·‚邽‚ß‚ÉŽg—p‚·‚éí—ª‚Å‚·B
+                        <literal>access</literal> (オプション - デフォルトは <literal>property</literal>)
+                        コレクション型プロパティの値にアクセスするために使用する戦略です。
                     </para>
                 </callout>
                 <callout arearefs="mappingcollection13">
                     <para>
-                        <literal>optimistic-lock</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal>j
-                        ƒRƒŒƒNƒVƒ‡ƒ“‚̏ó‘Ô‚ð•Ï‚¦‚邱‚Æ‚É‚æ‚Á‚āA
-                        ‚»‚̃I[ƒi[‚Å‚ ‚éƒGƒ“ƒeƒBƒeƒB‚̃o[ƒWƒ‡ƒ“‚ªƒCƒ“ƒNƒŠƒƒ“ƒg‚³‚ê‚é‚©‚ðŽw’肵‚Ü‚·B
-                        iˆê‘Α½ŠÖ˜A‚ł́A‚Ù‚Æ‚ñ‚ǂ̏ꍇ‚É‚¨‚¢‚Ä–³Œø‚ɐݒ肷‚é‚Ì‚ª‘Ó–‚Å‚·Bj
+                        <literal>optimistic-lock</literal>(オプション - デフォルトは <literal>true</literal>)
+                        コレクションの状態を変えることによって、
+                        そのオーナーであるエンティティのバージョンがインクリメントされるかを指定します。
+                        (一対多関連では、ほとんどの場合において無効に設定するのが妥当です。)
                     </para>
                 </callout>
                 <callout arearefs="mappingcollection14">
                     <para>
-                        <literal>mutable</literal>iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>true</literal>j
-                        <literal>false</literal> ’l‚́AƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚ª•ÏX‚³‚ê‚È‚¢‚±‚Æ‚ð•\‚µ‚Ü‚·
-                        i‚ ‚éê‡‚ɂ́A­‚µƒpƒtƒH[ƒ}ƒ“ƒX‚ð‚‚ß‚Ü‚·jB
+                        <literal>mutable</literal>(オプション - デフォルトは <literal>true</literal>)
+                        <literal>false</literal> 値は、コレクションの要素が変更されないことを表します
+                        (ある場合には、少しパフォーマンスを高めます)。
                     </para>
                 </callout>
             </calloutlist>
         </programlistingco>
 
         <sect2 id="collections-foreignkeys" >
-           <title>ƒRƒŒƒNƒVƒ‡ƒ“‚ÌŠO•”ƒL[</title>
+           <title>コレクションの外部キー</title>
     
             <para>
-                ƒRƒŒƒNƒVƒ‡ƒ“‚̃Cƒ“ƒXƒ^ƒ“ƒX‚́Aƒf[ƒ^ƒx[ƒX“à‚ł́A
-                ‚»‚̃RƒŒƒNƒVƒ‡ƒ“‚ðŠ—L‚·‚éƒGƒ“ƒeƒBƒeƒB‚ÌŠO•”ƒL[‚É‚æ‚Á‚ÄŽ¯•Ê‚³‚ê‚Ü‚·B
-                ‚±‚ÌŠO•”ƒL[‚̓RƒŒƒNƒVƒ‡ƒ“ƒe[ƒuƒ‹‚Ì <emphasis>ƒRƒŒƒNƒVƒ‡ƒ“ƒL[ƒJƒ‰ƒ€</emphasis> ‚ƌĂ΂ê‚Ü‚·B
-                ƒRƒŒƒNƒVƒ‡ƒ“ƒL[ƒJƒ‰ƒ€‚Í <literal>&lt;key&gt;</literal> —v‘f‚É‚æ‚èƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
+                コレクションのインスタンスは、データベース内では、
+                そのコレクションを所有するエンティティの外部キーによって識別されます。
+                この外部キーはコレクションテーブルの <emphasis>コレクションキーカラム</emphasis> と呼ばれます。
+                コレクションキーカラムは <literal>&lt;key&gt;</literal> 要素によりマッピングします。
             </para>
     
             <para>
-                ŠO•”ƒL[ƒJƒ‰ƒ€‚É‚ÍnullÝ’萧–ñ‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-                ‚Ù‚Æ‚ñ‚ǂ̃RƒŒƒNƒVƒ‡ƒ“‚É“–‚Ä‚Í‚Ü‚é‚Å‚µ‚傤B
-                ’P•ûŒü‚̈ê‘Α½ŠÖ˜A‚É‚¨‚¢‚āAŠO•”ƒL[ƒJƒ‰ƒ€‚̓fƒtƒHƒ‹ƒg‚Ånull‚ð‹–‚·Ý’è‚É‚È‚Á‚Ä‚¢‚Ü‚·B
-                ‚æ‚Á‚āA<literal>not-null="true"</literal> ‚ðŽw’è‚·‚é•K—v‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
+                外部キーカラムにはnull設定制約があるかもしれません。
+                ほとんどのコレクションに当てはまるでしょう。
+                単方向の一対多関連において、外部キーカラムはデフォルトでnullを許す設定になっています。
+                よって、<literal>not-null="true"</literal> を指定する必要があるかもしれません。
             </para>
     
             <programlisting><![CDATA[<key column="productSerialNumber" not-null="true"/>]]></programlisting>
     
             <para>
-                ŠO•”ƒL[‚̐§–ñ‚ª <literal>ON DELETE CASCADE</literal> ‚ðŽg‚¤‚©‚à‚µ‚ê‚Ü‚¹‚ñB
+                外部キーの制約が <literal>ON DELETE CASCADE</literal> を使うかもしれません。
             </para>
     
             <programlisting><![CDATA[<key column="productSerialNumber" on-delete="cascade"/>]]></programlisting>
             
             <para>
-                <literal>&lt;key&gt;</literal> —v‘f‚Ì‚·‚ׂĂ̒è‹`‚ɂ‚¢‚Ä‚Í‘O‚̏͂ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                <literal>&lt;key&gt;</literal> 要素のすべての定義については前の章を参照してください。
             </para>
             
         </sect2>
         
         <sect2 id="collections-elements" >
-            <title>ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f</title>
+            <title>コレクションの要素</title>
     
             <para>
-                ƒRƒŒƒNƒVƒ‡ƒ“‚Í‘¼‚ÌHibernate‚ÌŒ^‚Ì‚Ù‚Æ‚ñ‚ǁi‚·‚ׂĂ̊î–{Œ^AƒJƒXƒ^ƒ€Œ^AƒRƒ“ƒ|[ƒlƒ“ƒgA
-                ‘¼‚̃Gƒ“ƒeƒBƒeƒB‚Ö‚ÌŽQÆj‚ðŠi”[‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-                ŽŸ‚Ì“_‚͏d—v‚ȈႢ‚É‚È‚è‚Ü‚·B
-                ƒRƒŒƒNƒVƒ‡ƒ“‚ÉŠi”[‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ªu’lvƒZƒ}ƒ“ƒeƒBƒNƒX‚Æ‚µ‚Ĉµ‚í‚ê‚é‚Ì‚©
-                iƒ‰ƒCƒtƒTƒCƒNƒ‹‚̓RƒŒƒNƒVƒ‡ƒ“‚̃I[ƒi[‚ÉŠ®‘S‚Ɉˑ¶‚µ‚Ü‚·jA
-                ‚à‚µ‚­‚Í‚»‚ꎩg‚̃‰ƒCƒtƒTƒCƒNƒ‹‚ðŽ‚Á‚½•Ê‚̃Gƒ“ƒeƒBƒeƒB‚Ö‚ÌŽQÆ‚Å‚ ‚é‚©‚Ì‚©‚Æ‚¢‚¤ˆá‚¢‚Å‚·B
-                ŒãŽÒ‚́A2‚‚̃IƒuƒWƒFƒNƒgŠÔ‚́uƒŠƒ“ƒNv‚ðƒRƒŒƒNƒVƒ‡ƒ“‚É•ÛŽ‚µ‚Ä‚¢‚é‚ÆŒ©‚È‚µ‚Ä‚¢‚邾‚¯‚Å‚·B
+                コレクションは他のHibernateの型のほとんど(すべての基本型、カスタム型、コンポーネント、
+                他のエンティティへの参照)を格納することができます。
+                次の点は重要な違いになります。
+                コレクションに格納されたオブジェクトが「値」セマンティクスとして扱われるのか
+                (ライフサイクルはコレクションのオーナーに完全に依存します)、
+                もしくはそれ自身のライフサイクルを持った別のエンティティへの参照であるかのかという違いです。
+                後者は、2つのオブジェクト間の「リンク」をコレクションに保持していると見なしているだけです。
             </para>
                 
             <para>
-                Ši”[‚³‚ê‚éŒ^‚Í <emphasis>ƒRƒŒƒNƒVƒ‡ƒ“—v‘fŒ^</emphasis> ‚ƌĂ΂ê‚Ü‚·B
-                ƒRƒŒƒNƒVƒ‡ƒ“—v‘f‚́A<literal>&lt;element&gt;</literal> ‚Ü‚½‚Í <literal>&lt;composite-element&gt;</literal>
-                ‚É‚æ‚èƒ}ƒbƒsƒ“ƒO‚³‚êAƒGƒ“ƒeƒBƒeƒB‚Ö‚ÌŽQÆ‚̏ꍇ‚É‚Í
-                <literal>&lt;one-to-many&gt;</literal> ‚Ü‚½‚Í <literal>&lt;many-to-many&gt;</literal>
-                ‚É‚æ‚èƒ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B
-                Å‰‚Ì“ñ‚‚͒l‚Æ‚µ‚Ä—v‘f‚ðƒ}ƒbƒsƒ“ƒO‚µAŽŸ‚Ì“ñ‚‚̓Gƒ“ƒeƒBƒeƒB‚ÌŠÖ˜A‚ðƒ}ƒbƒsƒ“ƒO‚·‚é‚Ì‚ÉŽg‚í‚ê‚Ü‚·B
+                格納される型は <emphasis>コレクション要素型</emphasis> と呼ばれます。
+                コレクション要素は、<literal>&lt;element&gt;</literal> または <literal>&lt;composite-element&gt;</literal>
+                によりマッピングされ、エンティティへの参照の場合には
+                <literal>&lt;one-to-many&gt;</literal> または <literal>&lt;many-to-many&gt;</literal>
+                によりマッピングされます。
+                最初の二つは値として要素をマッピングし、次の二つはエンティティの関連をマッピングするのに使われます。
             </para>
             
         </sect2>
         
         <sect2 id="collections-indexed">
-            <title>ƒCƒ“ƒfƒbƒNƒX•t‚«‚̃RƒŒƒNƒVƒ‡ƒ“</title>
+            <title>インデックス付きのコレクション</title>
     
             <para>
-                set‚Æbag‚ðœ‚­‘S‚ẴRƒŒƒNƒVƒ‡ƒ“ƒ}ƒbƒsƒ“ƒO‚ɂ́A
-                ƒRƒŒƒNƒVƒ‡ƒ“ƒe[ƒuƒ‹‚Ì’†‚É <emphasis>ƒCƒ“ƒfƒbƒNƒX—p‚̃Jƒ‰ƒ€</emphasis> ‚ª•K—v‚Å‚·B
-                ‚»‚̃Jƒ‰ƒ€‚ɁA”z—ñ‚â <literal>List</literal> ‚̃Cƒ“ƒfƒbƒNƒXA
-                ‚à‚µ‚­‚Í <literal>Map</literal> ‚̃L[‚ðƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
-                <literal>Map</literal> ‚̃Cƒ“ƒfƒbƒNƒX‚́A
-                <literal>&lt;map-key&gt;</literal> ‚É‚æ‚èƒ}ƒbƒsƒ“ƒO‚³‚ꂽŠî–{Œ^‚©A
-                <literal>&lt;map-key-many-to-many&gt;</literal> ‚É‚æ‚èƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒGƒ“ƒeƒBƒeƒB‚ÌŠÖ˜A‚©A
-                ‚ ‚é‚¢‚Í <literal>&lt;composite-map-key&gt;</literal> ‚É‚æ‚èƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒRƒ“ƒ|ƒWƒbƒgŒ^‚É‚È‚è‚Ü‚·B
-                ”z—ñ‚©ƒŠƒXƒg‚̃Cƒ“ƒfƒbƒNƒX‚́Aí‚É <literal>integer</literal> Œ^‚ŁA
-                <literal>&lt;list-index&gt;</literal> —v‘f‚É‚æ‚èƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
-                ƒ}ƒbƒsƒ“ƒO‚³‚ꂽƒJƒ‰ƒ€‚ɂ̓V[ƒPƒ“ƒVƒƒƒ‹‚Ȑ®”‚ðŠi”[‚µ‚Ü‚·iƒfƒtƒHƒ‹ƒg‚Å‚Í0‚©‚ç”ԍ†‚ª•t‚¯‚ç‚ê‚Ü‚·jB
+                setとbagを除く全てのコレクションマッピングには、
+                コレクションテーブルの中に <emphasis>インデックス用のカラム</emphasis> が必要です。
+                そのカラムに、配列や <literal>List</literal> のインデックス、
+                もしくは <literal>Map</literal> のキーをマッピングします。
+                <literal>Map</literal> のインデックスは、
+                <literal>&lt;map-key&gt;</literal> によりマッピングされた基本型か、
+                <literal>&lt;map-key-many-to-many&gt;</literal> によりマッピングされたエンティティの関連か、
+                あるいは <literal>&lt;composite-map-key&gt;</literal> によりマッピングされたコンポジット型になります。
+                配列かリストのインデックスは、常に <literal>integer</literal> 型で、
+                <literal>&lt;list-index&gt;</literal> 要素によりマッピングします。
+                マッピングされたカラムにはシーケンシャルな整数を格納します(デフォルトでは0から番号が付けられます)。
             </para>
 
         <programlistingco>
@@ -325,13 +327,13 @@
             <calloutlist>
                 <callout arearefs="index1">
                     <para>
-                        <literal>column_name</literal>i•K{j:ƒRƒŒƒNƒVƒ‡ƒ“ƒCƒ“ƒfƒbƒNƒX‚Ì’l‚ð•ÛŽ‚·‚éƒJƒ‰ƒ€‚Ì–¼‘OB
+                        <literal>column_name</literal>(必須):コレクションインデックスの値を保持するカラムの名前。
                     </para>
                 </callout>
                 <callout arearefs="index2">
                     <para>
-                        <literal>base</literal>iƒIƒvƒVƒ‡ƒ“AƒfƒtƒHƒ‹ƒg‚Í <literal>0</literal>j:
-                        ƒŠƒXƒg‚à‚µ‚­‚Í”z—ñ‚̍ŏ‰‚Ì—v‘f‚ÉŠY“–‚·‚éƒCƒ“ƒfƒbƒNƒXƒJƒ‰ƒ€‚Ì’lB
+                        <literal>base</literal>(オプション、デフォルトは <literal>0</literal>):
+                        リストもしくは配列の最初の要素に該当するインデックスカラムの値。
                     </para>
                 </callout>
             </calloutlist>
@@ -352,17 +354,17 @@
             <calloutlist>
                 <callout arearefs="mapkey1">
                     <para>
-                        <literal>column</literal>iƒIƒvƒVƒ‡ƒ“j: ƒRƒŒƒNƒVƒ‡ƒ“ƒCƒ“ƒfƒbƒNƒX‚Ì’l‚ð•ÛŽ‚·‚éƒJƒ‰ƒ€‚Ì–¼‘OB
+                        <literal>column</literal>(オプション): コレクションインデックスの値を保持するカラムの名前。
                     </para>
                 </callout>
                 <callout arearefs="mapkey2">
                     <para>
-                        <literal>formula</literal>iƒIƒvƒVƒ‡ƒ“j: Map‚̃L[‚ð•]‰¿‚·‚é‚Ì‚ÉŽg‚í‚ê‚éSQLŽ®B
+                        <literal>formula</literal>(オプション): Mapのキーを評価するのに使われるSQL式。
                     </para>
                 </callout>
                 <callout arearefs="mapkey3">
                     <para>
-                        <literal>type</literal>i•K{j: Map‚̃L[‚ÌŒ^B
+                        <literal>type</literal>(必須): Mapのキーの型。
                     </para>
                 </callout>
             </calloutlist>
@@ -382,20 +384,20 @@
             <calloutlist>
                 <callout arearefs="indexmanytomany1">
                     <para>
-                        <literal>column</literal> iƒIƒvƒVƒ‡ƒ“j:
-                        ƒRƒŒƒNƒVƒ‡ƒ“ƒCƒ“ƒfƒbƒNƒX‚Ì’l‚Ì‚½‚ß‚ÌŠO•”ƒL[ƒJƒ‰ƒ€‚Ì–¼‘OB
+                        <literal>column</literal> (オプション):
+                        コレクションインデックスの値のための外部キーカラムの名前。
                     </para>
                 </callout>
                 <callout arearefs="indexmanytomany2">
                     <para>
-                        <literal>formula</literal> iƒIƒvƒVƒ‡ƒ“j:
-                        Map‚̃L[‚Ì‚½‚ß‚ÌŠO•”ƒL[‚ð•]‰¿‚·‚邽‚ß‚ÉŽg‚¤SQLŽ®B
+                        <literal>formula</literal> (オプション):
+                        Mapのキーのための外部キーを評価するために使うSQL式。
                     </para>
                 </callout>
                 <callout arearefs="indexmanytomany3">
                     <para>
-                        <literal>class</literal> i•K{j:
-                        Map‚̃L[‚Æ‚µ‚ÄŽg‚í‚ê‚éƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒXB
+                        <literal>class</literal> (必須):
+                        Mapのキーとして使われるエンティティクラス。
                     </para>
                 </callout>
             </calloutlist>
@@ -403,33 +405,33 @@
 
 
             <para>
-                ‚à‚µƒe[ƒuƒ‹‚ɃCƒ“ƒfƒbƒNƒXƒJƒ‰ƒ€‚ª‚È‚­‚Ä‚àAƒvƒƒpƒeƒBŒ^‚Æ‚µ‚Ä <literal>List</literal> ‚ðŽg‚¢‚½‚¯‚ê‚΁A
-                Hibernate‚Ì <emphasis>&lt;bag&gt;</emphasis> ‚Æ‚µ‚ăvƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
-                bag‚̓f[ƒ^ƒx[ƒX‚©‚ç•œŒ³‚³‚ê‚鎞A‡˜‚ð•ÛŽ‚µ‚Ü‚¹‚ñB
-                ‚µ‚©‚µAiƒƒ‚ƒŠã‚Łjƒ\[ƒg‚µ‚½‚èAiSQL‚Łj‡˜•t‚¯‚µ‚½‚èiorder byj‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B
+                もしテーブルにインデックスカラムがなくても、プロパティ型として <literal>List</literal> を使いたければ、
+                Hibernateの <emphasis>&lt;bag&gt;</emphasis> としてプロパティをマッピングします。
+                bagはデータベースから復元される時、順序を保持しません。
+                しかし、(メモリ上で)ソートしたり、(SQLで)順序付けしたり(order by)することもできます。
             </para>
             
         </sect2>
 
         <para>
-            ‘½‚­‚̈ê”Ê“I‚ȃŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ‚ƒfƒ‹‚ðƒJƒo[‚µ‚½‚½‚߂ɁA
-            ƒRƒŒƒNƒVƒ‡ƒ“‚Ì‚½‚ß‚É—˜—p‚Å‚«‚éƒ}ƒbƒsƒ“ƒO‚É‚Í‚©‚È‚è‚Ì•‚ª‚ ‚è‚Ü‚·B
-            —lX‚ȃ}ƒbƒsƒ“ƒOéŒ¾‚ª‚ǂ̂悤‚Ƀf[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚É•ÏŠ·‚³‚ê‚é‚©‚ð’m‚邽‚߂ɁA
-            ƒXƒL[ƒ}¶¬ƒc[ƒ‹‚ðŽg‚Á‚Ä‚Ý‚é‚Æ—Ç‚¢‚Å‚µ‚傤B
+            多くの一般的なリレーショナルモデルをカバーしたために、
+            コレクションのために利用できるマッピングにはかなりの幅があります。
+            様々なマッピング宣言がどのようにデータベーステーブルに変換されるかを知るために、
+            スキーマ生成ツールを使ってみると良いでしょう。
         </para>
 
     <sect2 id="collections-ofvalues" revision="2">
-        <title>’l‚̃RƒŒƒNƒVƒ‡ƒ“‚Æ‘½‘Α½ŠÖ˜A</title>
+        <title>値のコレクションと多対多関連</title>
 
         <para>
-            ’l‚̃RƒŒƒNƒVƒ‡ƒ“‚⑽‘Α½ŠÖ˜A‚́Aê—p‚Ì <emphasis>ƒRƒŒƒNƒVƒ‡ƒ“ƒe[ƒuƒ‹</emphasis> ‚ª•K—v‚Å‚·B
-            ‚±‚̃e[ƒuƒ‹‚́AŠO•”ƒL[ƒJƒ‰ƒ€‚ƁA
-            <emphasis>ƒRƒŒƒNƒVƒ‡ƒ“—v‘f‚̃Jƒ‰ƒ€</emphasis> ‚ƁA
-            ê‡‚É‚æ‚Á‚Ă̓Cƒ“ƒfƒbƒNƒXƒJƒ‰ƒ€‚ðŽ‚¿‚Ü‚·B
+            値のコレクションや多対多関連は、専用の <emphasis>コレクションテーブル</emphasis> が必要です。
+            このテーブルは、外部キーカラムと、
+            <emphasis>コレクション要素のカラム</emphasis> と、
+            場合によってはインデックスカラムを持ちます。
         </para>
 
         <para>
-            ’l‚̃RƒŒƒNƒVƒ‡ƒ“‚Ì‚½‚߂ɁA<literal>&lt;element&gt;</literal>ƒ^ƒO‚ðŽg—p‚µ‚Ü‚·B
+            値のコレクションのために、<literal>&lt;element&gt;</literal>タグを使用します。
         </para>
 
         <programlistingco>
@@ -452,24 +454,24 @@
             <calloutlist>
                 <callout arearefs="element1b">
                     <para>
-                        <literal>column</literal> iƒIƒvƒVƒ‡ƒ“j: ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚Ì’l‚ð•ÛŽ‚·‚éƒJƒ‰ƒ€‚Ì–¼‘OB
+                        <literal>column</literal> (オプション): コレクションの要素の値を保持するカラムの名前。
                     </para>
                 </callout>
                 <callout arearefs="element2b">
                     <para>
-                        <literal>formula</literal> iƒIƒvƒVƒ‡ƒ“j: —v‘f‚ð•]‰¿‚·‚邽‚ß‚ÉŽg‚¤SQLŽ®B
+                        <literal>formula</literal> (オプション): 要素を評価するために使うSQL式。
                     </para>
                 </callout>
                 <callout arearefs="element3b">
                     <para>
-                        <literal>type</literal> i•K{jƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚ÌŒ^B
+                        <literal>type</literal> (必須)コレクションの要素の型。
                     </para>
                 </callout>
             </calloutlist>
         </programlistingco>
 
         <para>
-            <emphasis>‘½‘Α½ŠÖ˜A</emphasis> ‚Í <literal>&lt;many-to-many&gt;</literal> —v‘f‚ÅŽw’肵‚Ü‚·B
+            <emphasis>多対多関連</emphasis> は <literal>&lt;many-to-many&gt;</literal> 要素で指定します。
         </para>
 
         <programlistingco>
@@ -498,64 +500,64 @@
             <calloutlist>
                 <callout arearefs="manytomany1">
                     <para>
-                        <literal>column</literal> iƒIƒvƒVƒ‡ƒ“j: ŠO•”ƒL[ƒJƒ‰ƒ€‚Ì—v‘f‚Ì–¼‘OB
+                        <literal>column</literal> (オプション): 外部キーカラムの要素の名前。
                     </para>
                 </callout>
                 <callout arearefs="manytomany2">
                     <para>
-                        <literal>formula</literal> iƒIƒvƒVƒ‡ƒ“j: ŠO•”ƒL[’l‚Ì—v‘f‚ð•]‰¿‚·‚邽‚ß‚ÉŽg‚¤SQLŽ®B
+                        <literal>formula</literal> (オプション): 外部キー値の要素を評価するために使うSQL式。
                     </para>
                 </callout>
                 <callout arearefs="manytomany3">
                     <para>
-                        <literal>class</literal> i•K{j: ŠÖ˜AƒNƒ‰ƒX‚Ì–¼‘OB
+                        <literal>class</literal> (必須): 関連クラスの名前。
                     </para>
                 </callout>
                 <callout arearefs="manytomany4">
                     <para>
-                        <literal>fetch</literal> (ƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>join</literal>):
-                        ŠÖ˜A‚Ì‚½‚߂ɁAŠO•”Œ‹‡‚©‡ŽŸ‘I‘ðƒtƒFƒbƒ`‚ð—LŒø‚É‚µ‚Ü‚·B
-                        ‚±‚ê‚Í“ÁŽê‚ȃP[ƒX‚Å‚·‚ªAƒGƒ“ƒeƒBƒeƒB‚Æ‘¼‚̃Gƒ“ƒeƒBƒeƒB‚Æ‚Ì‘½‘Α½ŠÖŒW‚ð
-                        i‚P‚Â‚Ì <literal>SELECT</literal> ‚É‚æ‚èjŠ®‘S‚É‘¦Žž‚ɃtƒFƒbƒ`‚·‚邽‚߂ɂ́A
-                        ‚»‚̃RƒŒƒNƒVƒ‡ƒ“Ž©‘Ì‚¾‚¯‚Å‚È‚­A
-                        ƒlƒXƒg‚µ‚½—v‘f‚Å‚ ‚é <literal>&lt;many-to-many&gt;</literal> ‚Ì‚±‚Ì‘®«‚ɂ‚¢‚Ä‚à
-                        <literal>join</literal> ƒtƒFƒbƒ`‚ð—LŒø‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
+                        <literal>fetch</literal> (オプション - デフォルトは <literal>join</literal>):
+                        関連のために、外部結合か順次選択フェッチを有効にします。
+                        これは特殊なケースですが、エンティティと他のエンティティとの多対多関係を
+                        (1つの <literal>SELECT</literal> により)完全に即時にフェッチするためには、
+                        そのコレクション自体だけでなく、
+                        ネストした要素である <literal>&lt;many-to-many&gt;</literal> のこの属性についても
+                        <literal>join</literal> フェッチを有効する必要があります。
                     </para>
                 </callout>
                 <callout arearefs="manytomany5">
                     <para>
-                        <literal>unique</literal> iƒIƒvƒVƒ‡ƒ“j:
-                        ŠO•”ƒL[ƒJƒ‰ƒ€‚̃†ƒj[ƒN§–ñ‚ÌDDL¶¬‚ð—LŒø‚É‚µ‚Ü‚·B
-                        ‚±‚ê‚́AŠÖ˜A‚Ì‘½d“x‚ðŽ–ŽÀãˆê‘Α½‚É‚µ‚Ü‚·B
+                        <literal>unique</literal> (オプション):
+                        外部キーカラムのユニーク制約のDDL生成を有効にします。
+                        これは、関連の多重度を事実上一対多にします。
                     </para>
                 </callout>
                     <callout arearefs="manytomany6">
                         <para>
-                            <literal>not-found</literal> iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>exception</literal>j
-                            ŽQÆæ‚̍s‚ª‚È‚¢ŠO•”ƒL[‚ð‚ǂ̂悤‚Ɉµ‚¤‚©‚ðŽw’肵‚Ü‚·B
-                            <literal>ignore</literal> ‚É‚·‚é‚ƁAs‚ª‚È‚¢‚±‚Æ‚ðŠÖ˜A‚ª–³‚¢‚à‚Ì‚Æ‚µ‚Ĉµ‚¢‚Ü‚·B
+                            <literal>not-found</literal> (オプション - デフォルトは <literal>exception</literal>)
+                            参照先の行がない外部キーをどのように扱うかを指定します。
+                            <literal>ignore</literal> にすると、行がないことを関連が無いものとして扱います。
                         </para>
                     </callout>
                 <callout arearefs="manytomany7">
                     <para>
-                        <literal>entity-name</literal> iƒIƒvƒVƒ‡ƒ“j:
-                        <literal>class</literal> ‚Ì‘ã‘Ö‚Å‚ ‚éŠÖ˜AƒNƒ‰ƒX‚̃Gƒ“ƒeƒBƒeƒB–¼B
-                        <literal>class</literal> ‚Ì‘ã‚í‚è‚ÉŽw’è‚·‚éAŠÖ˜AƒNƒ‰ƒX‚̃Gƒ“ƒeƒBƒeƒB–¼B
+                        <literal>entity-name</literal> (オプション):
+                        <literal>class</literal> の代替である関連クラスのエンティティ名。
+                        <literal>class</literal> の代わりに指定する、関連クラスのエンティティ名。
                     </para>
                 </callout>
                 <callout arearefs="manytomany8">
                     <para>
-                        <literal>property-ref</literal>: iƒIƒvƒVƒ‡ƒ“j
-                        ‚±‚ÌŠO•”ƒL[‚ÉŒ‹‡‚·‚éŠÖ˜AƒNƒ‰ƒX‚̃vƒƒpƒeƒB–¼B
-                        Žw’肵‚È‚©‚Á‚½ê‡‚́AŠÖ˜AƒNƒ‰ƒX‚ÌŽåƒL[‚ðŽg‚¢‚Ü‚·B
+                        <literal>property-ref</literal>: (オプション)
+                        この外部キーに結合する関連クラスのプロパティ名。
+                        指定しなかった場合は、関連クラスの主キーを使います。
                     </para>                
                 </callout>                   
             </calloutlist>
         </programlistingco>
 
         <para>
-            ˆÈ‰º‚É‚¢‚­‚‚©—á‚ðŽ¦‚µ‚Ü‚·B
-            ‚Ü‚¸‚ÍString‚Ìset‚ÉŠÖ‚µ‚Ä‚Ì—á‚Å‚·B
+            以下にいくつか例を示します。
+            まずはStringのsetに関しての例です。
         </para>
 
         <programlisting><![CDATA[<set name="names" table="person_names">
@@ -564,7 +566,7 @@
 </set>]]></programlisting>
 
         <para>
-            ®”’l‚ðŠÜ‚Þbagibag‚Í <literal>order-by</literal> ‘®«‚É‚æ‚Á‚Ä”½•œ‡˜‚ª’è‹`‚³‚ê‚Ä‚¢‚Ü‚·j
+            整数値を含むbag(bagは <literal>order-by</literal> 属性によって反復順序が定義されています)
         </para>
 
         <programlisting><![CDATA[<bag name="sizes" 
@@ -575,7 +577,7 @@
 </bag>]]></programlisting>
 
         <para>
-            ƒGƒ“ƒeƒBƒeƒB‚Ì”z—ñ - ‚±‚̏ꍇA‘½‘Α½‚ÌŠÖ˜A‚Å‚·B
+            エンティティの配列 - この場合、多対多の関連です。
         </para>
 
         <programlisting><![CDATA[<array name="addresses" 
@@ -587,7 +589,7 @@
 </array>]]></programlisting>
 
         <para>
-            •¶Žš—ñ‚Æ“ú•t‚Ìmap
+            文字列と日付のmap
         </para>
 
         <programlisting><![CDATA[<map name="holidays" 
@@ -600,7 +602,7 @@
 </map>]]></programlisting>
 
         <para>
-            ƒRƒ“ƒ|[ƒlƒ“ƒg‚ÌlistiŽŸ‚̏͂ŏڂµ‚­à–¾‚µ‚Ü‚·j
+            コンポーネントのlist(次の章で詳しく説明します)
         </para>
 
         <programlisting><![CDATA[<list name="carComponents" 
@@ -617,33 +619,33 @@
     </sect2>
 
     <sect2 id="collections-onetomany">
-        <title>ˆê‘Α½ŠÖ˜A</title>
+        <title>一対多関連</title>
 
         <para>
-            <emphasis>ˆê‘Α½ŠÖ˜A</emphasis> ‚́AƒRƒŒƒNƒVƒ‡ƒ“¥ƒe[ƒuƒ‹‚ð‰î‚³‚¸A
-            ŠO•”ƒL[‚É‚æ‚è2‚‚̃Nƒ‰ƒX‚̃e[ƒuƒ‹‚ðŠÖ˜A•t‚¯‚Ü‚·B
-            ‚±‚̃}ƒbƒsƒ“ƒO‚Í•W€“I‚ÈJava‚̃RƒŒƒNƒVƒ‡ƒ“‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚ð‚¢‚­‚‚©Ž¸‚¢‚Ü‚·B
+            <emphasis>一対多関連</emphasis> は、コレクション・テーブルを介さず、
+            外部キーにより2つのクラスのテーブルを関連付けます。
+            このマッピングは標準的なJavaのコレクションのセマンティクスをいくつか失います。
         </para>
 
         <itemizedlist spacing="compact">
             <listitem>
                 <para>
-                    ƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚́A
-                    2‚ˆȏã‚̃RƒŒƒNƒVƒ‡ƒ“‚̃Cƒ“ƒXƒ^ƒ“ƒX‚É‘®‚µ‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñB
+                    エンティティクラスのインスタンスは、
+                    2つ以上のコレクションのインスタンスに属してはいけません。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    ƒRƒŒƒNƒVƒ‡ƒ“‚ÉŠÜ‚Ü‚ê‚éƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚́A
-                    ƒRƒŒƒNƒVƒ‡ƒ“ƒCƒ“ƒfƒbƒNƒX‚Ì’l‚Æ‚µ‚Ä2“xˆÈãŒ»‚ê‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñB
+                    コレクションに含まれるエンティティクラスのインスタンスは、
+                    コレクションインデックスの値として2度以上現れてはいけません。
                 </para>
             </listitem>
         </itemizedlist>
 
         <para>
-            <literal>Product</literal> ‚©‚ç <literal>Part</literal> ‚Ö‚ÌŠÖ˜A‚́A
-            <literal>Part</literal> ƒe[ƒuƒ‹‚Ö‚ÌŠO•”ƒL[ƒJƒ‰ƒ€‚ƁAê‡‚É‚æ‚Á‚Ă̓Cƒ“ƒfƒbƒNƒXƒJƒ‰ƒ€‚ª•K—v‚Å‚·B
-            <literal>&lt;one-to-many&gt;</literal> ƒ^ƒO‚́A‚±‚ꂪˆê‘Α½ŠÖ˜A‚Å‚ ‚邱‚Æ‚ð•\‚µ‚Ä‚¢‚Ü‚·B
+            <literal>Product</literal> から <literal>Part</literal> への関連は、
+            <literal>Part</literal> テーブルへの外部キーカラムと、場合によってはインデックスカラムが必要です。
+            <literal>&lt;one-to-many&gt;</literal> タグは、これが一対多関連であることを表しています。
         </para>
 
         <programlistingco>
@@ -662,44 +664,44 @@
             <calloutlist>
                 <callout arearefs="onetomany1">
                     <para>
-                        <literal>class</literal> i•K{j: ŠÖ˜AƒNƒ‰ƒX‚Ì–¼‘OB
+                        <literal>class</literal> (必須): 関連クラスの名前。
                     </para>
                 </callout>
                         <callout arearefs="onetomany2">
                             <para>
-                                <literal>not-found</literal> iƒIƒvƒVƒ‡ƒ“ - ƒfƒtƒHƒ‹ƒg‚Í <literal>exception</literal>j:
-                                ŽQÆæ‚̍s‚ª‚È‚¢ƒLƒƒƒbƒVƒ…‚³‚ꂽŽ¯•ÊŽq‚ð‚ǂ̂悤‚Ɉµ‚¤‚©‚ðŽw’肵‚Ü‚·B
-                                <literal>ignore</literal> ‚ðŽw’è‚·‚é‚ƁAs‚ª‚È‚¢‚±‚Æ‚ðŠÖ˜A‚ª‚È‚¢‚à‚Ì‚Æ‚µ‚Ĉµ‚¢‚Ü‚·B
+                                <literal>not-found</literal> (オプション - デフォルトは <literal>exception</literal>):
+                                参照先の行がないキャッシュされた識別子をどのように扱うかを指定します。
+                                <literal>ignore</literal> を指定すると、行がないことを関連がないものとして扱います。
                             </para>
                         </callout>
                 <callout arearefs="onetomany3">
                     <para>
-                        <literal>entity-name</literal> iƒIƒvƒVƒ‡ƒ“j:
-                        <literal>class</literal> ‚Ì‘ã‘Ö‚Å‚ ‚éŠÖ˜AƒNƒ‰ƒX‚̃Gƒ“ƒeƒBƒeƒB–¼B
-                        <literal>class</literal> ‚Ì‘ã‚í‚è‚ÉŽw’è‚·‚éAŠÖ˜AƒNƒ‰ƒX‚̃Gƒ“ƒeƒBƒeƒB–¼B
+                        <literal>entity-name</literal> (オプション):
+                        <literal>class</literal> の代替である関連クラスのエンティティ名。
+                        <literal>class</literal> の代わりに指定する、関連クラスのエンティティ名。
                     </para>
                 </callout>
             </calloutlist>
        </programlistingco>
   
         <para>
-            <literal>&lt;one-to-many&gt;</literal> —v‘f‚̓Jƒ‰ƒ€‚ðéŒ¾‚·‚é•K—v‚ª‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-            “¯—l‚É <literal>ƒe[ƒuƒ‹</literal> –¼‚ðŽw’è‚·‚é•K—v‚à‚ ‚è‚Ü‚¹‚ñB
+            <literal>&lt;one-to-many&gt;</literal> 要素はカラムを宣言する必要がないことに注意してください。
+            同様に <literal>テーブル</literal> 名を指定する必要もありません。
         </para>
 
         <para>
-            <emphasis>‚Æ‚Ä‚àd—v‚È’ˆÓ:</emphasis> ‚à‚µ <literal>&lt;one-to-many&gt;</literal>
-            ŠÖ˜A‚ÌŠO•”ƒL[ƒJƒ‰ƒ€‚ª <literal>NOT NULL</literal>‚Ɛ錾‚³‚ꂽê‡A
-            <literal>&lt;key&gt;</literal> ƒ}ƒbƒsƒ“ƒO‚É <literal>not-null="true"</literal> ‚ðéŒ¾‚·‚é‚©A
-            ƒRƒŒƒNƒVƒ‡ƒ“ƒ}ƒbƒsƒ“ƒO‚É <literal>inverse="true"</literal> ‚ð•t‚¯‚½ã‚ŁA
-            <emphasis>‘o•ûŒüŠÖ˜A‚ðŽg‚¤</emphasis> •K—v‚ª‚ ‚è‚Ü‚·B
-            ‘o•ûŒüŠÖ˜A‚ɂ‚¢‚Ä‚Í‚±‚̏͂̌ã‚Ì‚Ù‚¤‚Åà–¾‚µ‚Ü‚·B
+            <emphasis>とても重要な注意:</emphasis> もし <literal>&lt;one-to-many&gt;</literal>
+            関連の外部キーカラムが <literal>NOT NULL</literal>と宣言された場合、
+            <literal>&lt;key&gt;</literal> マッピングに <literal>not-null="true"</literal> を宣言するか、
+            コレクションマッピングに <literal>inverse="true"</literal> を付けた上で、
+            <emphasis>双方向関連を使う</emphasis> 必要があります。
+            双方向関連についてはこの章の後のほうで説明します。
         </para>
         
         <para>
-            ŽŸ‚Ì—á‚́A–¼Ìi<literal>Part</literal> ‚̉i‘±“I‚ȃvƒƒpƒeƒB‚Å‚ ‚é <literal>partName</literal>j
-            ‚É‚æ‚é <literal>Part</literal> ƒGƒ“ƒeƒBƒeƒB‚Ìmap‚ð•\‚µ‚Ä‚¢‚Ü‚·B
-            formula‚É‚æ‚éƒCƒ“ƒfƒbƒNƒX‚ðŽg‚Á‚Ä‚¢‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+            次の例は、名称(<literal>Part</literal> の永続的なプロパティである <literal>partName</literal>)
+            による <literal>Part</literal> エンティティのmapを表しています。
+            formulaによるインデックスを使っていることに注意してください。
         </para>
 
         <programlisting><![CDATA[<map name="parts"
@@ -713,15 +715,15 @@
     </sect1>
 
     <sect1 id="collections-advancedmappings">
-        <title>‚“x‚ȃRƒŒƒNƒVƒ‡ƒ“¥ƒ}ƒbƒsƒ“ƒO</title>
+        <title>高度なコレクション・マッピング</title>
 
     <sect2 id="collections-sorted" revision="2">
-        <title>ƒ\[ƒg‚³‚ꂽƒRƒŒƒNƒVƒ‡ƒ“</title>
+        <title>ソートされたコレクション</title>
 
         <para>
-            Hibernate‚Í <literal>java.util.SortedMap</literal> ‚Æ <literal>java.util.SortedSet</literal>
-            ‚ðŽÀ‘•‚µ‚½ƒRƒŒƒNƒVƒ‡ƒ“‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B
-            ŠJ”­ŽÒ‚̓}ƒbƒsƒ“ƒO’è‹`ƒtƒ@ƒCƒ‹‚ɃRƒ“ƒpƒŒ[ƒ^‚ðŽw’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+            Hibernateは <literal>java.util.SortedMap</literal> と <literal>java.util.SortedSet</literal>
+            を実装したコレクションをサポートしています。
+            開発者はマッピング定義ファイルにコンパレータを指定しなければなりません。
         </para>
 
         <programlisting><![CDATA[<set name="aliases" 
@@ -738,22 +740,22 @@
 </map>]]></programlisting>
 
         <para>
-            <literal>sort</literal> ‘®«‚ɐݒè‚Å‚«‚é’l‚Í <literal>unsorted</literal> ‚Æ <literal>natural</literal>
-            ‚¨‚æ‚сA<literal>java.util.Comparator</literal> ‚ðŽÀ‘•‚µ‚½ƒNƒ‰ƒX‚Ì–¼‘O‚Å‚·B
+            <literal>sort</literal> 属性に設定できる値は <literal>unsorted</literal> と <literal>natural</literal>
+            および、<literal>java.util.Comparator</literal> を実装したクラスの名前です。
         </para>
 
         <para>
-            ƒ\[ƒg‚³‚ꂽƒRƒŒƒNƒVƒ‡ƒ“‚ÍŽÀŽ¿“I‚É‚Í <literal>java.util.TreeSet</literal> ‚â
-            <literal>java.util.TreeMap</literal> ‚̂悤‚ɐU•‘‚¢‚Ü‚·B
+            ソートされたコレクションは実質的には <literal>java.util.TreeSet</literal> や
+            <literal>java.util.TreeMap</literal> のように振舞います。
         </para>
 
         <para>
-            ‚à‚µƒf[ƒ^ƒx[ƒXŽ©g‚ɃRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚ð•À‚ׂ³‚¹‚½‚¢‚È‚çA
-            <literal>set</literal> ‚â <literal>bag</literal>A<literal>map</literal> ‚Ì
-            <literal>order-by</literal> ‘®«‚ðŽg‚¢‚Ü‚·B
-            ‚±‚Ì‰ðŒˆ–@‚ÍJDK1.4A‚à‚µ‚­‚Í‚»‚êˆÈã‚̃o[ƒWƒ‡ƒ“‚Å—˜—p‰Â”\‚Å‚·
-            i<literal>LinkedHashSet</literal> ‚Ü‚½‚Í <literal>LinkedHashMap</literal>‚ðŽg‚Á‚ÄŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚·jB
-            ®—ñ‚̓ƒ‚ƒŠã‚Å‚Í‚È‚­ASQLƒNƒGƒŠ“à‚ÅŽÀs‚³‚ê‚Ü‚·B
+            もしデータベース自身にコレクションの要素を並べさせたいなら、
+            <literal>set</literal> や <literal>bag</literal>、<literal>map</literal> の
+            <literal>order-by</literal> 属性を使います。
+            この解決法はJDK1.4、もしくはそれ以上のバージョンで利用可能です
+            (<literal>LinkedHashSet</literal> または <literal>LinkedHashMap</literal>を使って実装されています)。
+            整列はメモリ上ではなく、SQLクエリ内で実行されます。
         </para>
 
         <programlisting><![CDATA[<set name="aliases" table="person_aliases" order-by="lower(name) asc">
@@ -768,12 +770,12 @@
 </map>]]></programlisting>
 
         <para>
-            <literal>order-by</literal> ‘®«‚Ì’l‚ªSQL–½—ß‚Å‚ ‚Á‚āAHQL–½—ß‚Å‚Í‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢I
+            <literal>order-by</literal> 属性の値がSQL命令であって、HQL命令ではないことに注意してください!
         </para>
 
         <para>
-            ŠÖ˜A‚́AƒRƒŒƒNƒVƒ‡ƒ“‚Ì <literal>filter()</literal> ‚ðŽg‚¤‚±‚ƂŁA
-            ŽÀsŽž‚É”CˆÓ‚Ìcriteria‚É‚æ‚Á‚ă\[ƒg‚·‚邱‚Æ‚à‰Â”\‚Å‚·B
+            関連は、コレクションの <literal>filter()</literal> を使うことで、
+            実行時に任意のcriteriaによってソートすることも可能です。
         </para>
 
         <programlisting><![CDATA[sortedUsers = s.createFilter( group.getUsers(), "order by this.name" ).list();]]></programlisting>
@@ -781,18 +783,18 @@
     </sect2>
 
      <sect2 id="collections-bidirectional" revision="1">
-        <title>‘o•ûŒüŠÖ˜A</title>
+        <title>双方向関連</title>
 
         <para>
-            <emphasis>‘o•ûŒüŠÖ˜A</emphasis> ‚ÍŠÖ˜A‚Ì‚Ç‚¿‚çu‘¤v‚©‚ç‚Å‚àƒiƒrƒQ[ƒVƒ‡ƒ“‚Å‚«‚Ü‚·B
-            2Ží—Þ‚Ì‘o•ûŒüŠÖ˜A‚ªƒTƒ|[ƒg‚³‚ê‚Ä‚¢‚Ü‚·B
+            <emphasis>双方向関連</emphasis> は関連のどちら「側」からでもナビゲーションできます。
+            2種類の双方向関連がサポートされています。
 
             <variablelist>
                 <varlistentry>
                     <term>one-to-many</term>
                     <listitem>
                         <para>
-                            •Ð‘¤‚ªset‚©bagA‚à‚¤•Ð•û‚ª’Pˆê’l‚Å‚·B
+                            片側がsetかbag、もう片方が単一値です。
                        </para>
                     </listitem>
                 </varlistentry>
@@ -800,7 +802,7 @@
                     <term>many-to-many</term>
                     <listitem>
                         <para>
-                            —¼‘¤‚ªset‚©bag‚Å‚·B
+                            両側がsetかbagです。
                         </para>
                     </listitem>
                 </varlistentry>
@@ -809,15 +811,15 @@
         </para>
 
         <para>
-            2‚‚̑½‘Α½ŠÖ˜A‚Å“¯‚¶ƒf[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚ðƒ}ƒbƒsƒ“ƒO‚µA
-            •Ð•û‚ð <emphasis>inverse</emphasis> ‚Æ‚µ‚Đ錾‚·‚邱‚ƂŁA
-            ‘o•ûŒü‚Ì‘½‘Α½ŠÖ˜A‚ðŽw’è‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·
-            i‚Ç‚¿‚ç‚ðinverse‚É‘I‚ñ‚¾‚Æ‚µ‚Ä‚àA‚»‚¿‚瑤‚ɂ̓Cƒ“ƒfƒbƒNƒX•t‚«‚̃RƒŒƒNƒVƒ‡ƒ“‚ÍŽg‚¦‚Ü‚¹‚ñjB
+            2つの多対多関連で同じデータベーステーブルをマッピングし、
+            片方を <emphasis>inverse</emphasis> として宣言することで、
+            双方向の多対多関連を指定することが出来ます
+            (どちらをinverseに選んだとしても、そちら側にはインデックス付きのコレクションは使えません)。
         </para>
 
         <para>
-            ŽŸ‚É‘o•ûŒü‚Ì‘½‘Α½ŠÖ˜A‚Ì—á‚ðŽ¦‚µ‚Ü‚·B
-            ŠeƒJƒeƒSƒŠ‚Í‘½”‚̃AƒCƒeƒ€‚ðŽ‚Â‚±‚Æ‚ª‚Å‚«AŠeƒAƒCƒeƒ€‚Í‘½‚­‚̃JƒeƒSƒŠ‚É‘®‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B
+            次に双方向の多対多関連の例を示します。
+            各カテゴリは多数のアイテムを持つことができ、各アイテムは多くのカテゴリに属することが出来ます。
         </para>
 
         <programlisting><![CDATA[<class name="Category">
@@ -841,11 +843,11 @@
 </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‚̃IƒuƒWƒFƒNƒgƒ‚ƒfƒ‹‚ɂ‚¢‚čl‚¦AJava‚Å‘o•ûŒüŠÖŒW‚ð‚Ç‚¤‚â‚Á‚čì‚é‚©‚ðl‚¦‚ê‚΁A
-            ‚±‚ê‚Í—‰ð‚µ‚â‚·‚¢‚Å‚·B‰º‹L‚ɁAJava‚Å‚Ì‘o•ûŒüŠÖ˜A‚ðŽ¦‚µ‚Ü‚·B
+            関連のinverse側にのみ行われた変更は永続化 <emphasis>されません</emphasis>。
+            これは、Hibernateは全ての双方向関連について、メモリ上に2つの表現を持っているという意味です。
+            つまり一つはAからBへのリンクで、もう一つはBからAへのリンクということです。
+            Javaのオブジェクトモデルについて考え、Javaで双方向関係をどうやって作るかを考えれば、
+            これは理解しやすいです。下記に、Javaでの双方向関連を示します。
         </para>
 
         <programlisting><![CDATA[
@@ -856,13 +858,13 @@
 session.persist(category);               // The relationship will be saved]]></programlisting>
 
         <para>
-            ŠÖ˜A‚Ìinverse‚Å‚Í‚È‚¢‘¤‚́Aƒƒ‚ƒŠã‚Ì•\Œ»‚ðƒf[ƒ^ƒx[ƒX‚É•Û‘¶‚·‚é‚Ì‚ÉŽg‚í‚ê‚Ü‚·B
+            関連のinverseではない側は、メモリ上の表現をデータベースに保存するのに使われます。
         </para>
 
         <para>
-            ‘o•ûŒü‚̈ê‘Α½ŠÖ˜A‚ð’è‹`‚·‚é‚ɂ́A
-            ˆê‘Α½ŠÖ˜A‚𑽑ΈêŠÖ˜A‚Æ“¯‚¶ƒe[ƒuƒ‹‚̃Jƒ‰ƒ€‚Ƀ}ƒbƒsƒ“ƒO‚µA
-            ‘½‘¤‚É <literal>inverse="true"</literal> ‚Ɛ錾‚µ‚Ü‚·B
+            双方向の一対多関連を定義するには、
+            一対多関連を多対一関連と同じテーブルのカラムにマッピングし、
+            多側に <literal>inverse="true"</literal> と宣言します。
         </para>
 
         <programlisting><![CDATA[<class name="Parent">
@@ -884,19 +886,19 @@
 </class>]]></programlisting>
 
         <para>
-            ŠÖ˜A‚̕Б¤‚É <literal>inverse="true"</literal> ‚ðÝ’肵‚Ä‚àA
-            ƒJƒXƒP[ƒh‘€ì‚ɉe‹¿‚ð—^‚¦‚Ü‚¹‚ñB‚±‚ê‚ç‚Í’¼Œð‚µ‚½ŠT”O‚Å‚·I
+            関連の片側に <literal>inverse="true"</literal> を設定しても、
+            カスケード操作に影響を与えません。これらは直交した概念です!
         </para>
 
     </sect2>
 
     <sect2 id="collections-indexedbidirectional">
-        <title>ƒCƒ“ƒfƒbƒNƒX•t‚«ƒRƒŒƒNƒVƒ‡ƒ“‚Æ‘o•ûŒüŠÖ˜A</title>
+        <title>インデックス付きコレクションと双方向関連</title>
         <para>
-            •Ð‘¤‚ª <literal>&lt;list&gt;</literal> ‚â <literal>&lt;map&gt;</literal> ‚Å‚ ‚é
-            ‘o•ûŒüŠÖ˜A‚́A“Á‚É‚æ‚­l‚¦‚é•K—v‚ª‚ ‚è‚Ü‚·B
-            ƒCƒ“ƒfƒbƒNƒXƒJƒ‰ƒ€‚Ƀ}ƒbƒv‚³‚ê‚éŽqƒNƒ‰ƒX‚̃vƒƒpƒeƒB‚ª‚ ‚éê‡‚́A–â‘è‚È‚¢‚Å‚·B
-            ƒRƒŒƒNƒVƒ‡ƒ“‚̃}ƒbƒsƒ“ƒO‚Å <literal>inverse="true"</literal> ‚ðŽg‚¢‘±‚¯‚ç‚ê‚Ü‚·B
+            片側が <literal>&lt;list&gt;</literal> や <literal>&lt;map&gt;</literal> である
+            双方向関連は、特によく考える必要があります。
+            インデックスカラムにマップされる子クラスのプロパティがある場合は、問題ないです。
+            コレクションのマッピングで <literal>inverse="true"</literal> を使い続けられます。
         </para>
         
         <programlisting><![CDATA[<class name="Parent">
@@ -922,11 +924,11 @@
 </class>]]></programlisting>
 
         <para>
-            ‚µ‚©‚µAŽqƒNƒ‰ƒX‚É‚»‚̂悤‚ȃvƒƒpƒeƒB‚ª‚È‚¢ê‡‚́A
-            ŠÖ˜A‚ð^‚É‘o•ûŒü‚Å‚ ‚é‚ƍl‚¦‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ
-            iŠÖ˜A‚̕Б¤‚É—˜—p‚Å‚«‚éî•ñ‚ª‚ ‚è‚Ü‚·‚ªA‚à‚¤ˆê•û‚É‚Í‚ ‚è‚Ü‚¹‚ñjB
-            ‚±‚̏ꍇ‚́AƒRƒŒƒNƒVƒ‡ƒ“‚É <literal>inverse="true"</literal> ‚ðƒ}ƒbƒsƒ“ƒO‚Å‚«‚Ü‚¹‚ñB
-            ‘ã‚í‚è‚ɁAŽŸ‚̂悤‚ȃ}ƒbƒsƒ“ƒO‚ªŽg‚¦‚Ü‚·B
+            しかし、子クラスにそのようなプロパティがない場合は、
+            関連を真に双方向であると考えることができません
+            (関連の片側に利用できる情報がありますが、もう一方にはありません)。
+            この場合は、コレクションに <literal>inverse="true"</literal> をマッピングできません。
+            代わりに、次のようなマッピングが使えます。
         </para>
 
         <programlisting><![CDATA[<class name="Parent">
@@ -953,19 +955,19 @@
 </class>]]></programlisting>
 
        <para>
-           ’ˆÓF ‚±‚̃}ƒbƒsƒ“ƒO‚ł́AŠÖ˜A‚̃RƒŒƒNƒVƒ‡ƒ“’l‚Ì‘¤‚́A
-           ŠO•”ƒL[‚ðƒAƒbƒvƒf[ƒg‚·‚éÓ”C‚ª‚ ‚è‚Ü‚·B
+           注意: このマッピングでは、関連のコレクション値の側は、
+           外部キーをアップデートする責任があります。
            <!-- TODO: Does this really result in some unnecessary update statements? -->
        </para>
 
     </sect2>
 
     <sect2 id="collections-ternary">
-        <title>3€ŠÖ˜A</title>
+        <title>3項関連</title>
 
         <para>
-            3€ŠÖ˜A‚̃}ƒbƒsƒ“ƒO‚É‚Í3‚‚̃Aƒvƒ[ƒ`‚ª‚ ‚è‚Ü‚·B
-            1‚–ڂ͊֘A‚ðƒCƒ“ƒfƒbƒNƒX‚Æ‚µ‚Ä <literal>Map</literal> ‚ðŽg—p‚·‚éƒAƒvƒ[ƒ`‚Å‚·B
+            3項関連のマッピングには3つのアプローチがあります。
+            1つ目は関連をインデックスとして <literal>Map</literal> を使用するアプローチです。
         </para>
 
         <programlisting><![CDATA[<map name="contracts">
@@ -981,32 +983,32 @@
 </map>]]></programlisting>
             
         <para>
-            2‚–ڂ͒Pƒ‚ÉŠÖ˜A‚ðƒGƒ“ƒeƒBƒeƒB¥ƒNƒ‰ƒX‚Æ‚µ‚ă‚ƒfƒ‹‚ðì‚è’¼‚·ƒAƒvƒ[ƒ`‚ŁA
-            •p”É‚ÉŽg‚í‚ê‚Ü‚·B
+            2つ目は単純に関連をエンティティ・クラスとしてモデルを作り直すアプローチで、
+            頻繁に使われます。
         </para>
         
         <para>
-            ÅŒã‚Ícomposite—v‘f‚ðŽg‚¤ƒAƒvƒ[ƒ`‚Å‚·B‚±‚ê‚ÉŠÖ‚·‚é‹c˜_‚ÍŒã‚قǍs‚¢‚Ü‚·B
+            最後はcomposite要素を使うアプローチです。これに関する議論は後ほど行います。
         </para>
         
     </sect2>
     
     <sect2 id="collections-idbag" revision="1">
-        <title><literal>&lt;idbag&gt;</literal>‚ÌŽg—p</title>
+        <title><literal>&lt;idbag&gt;</literal>の使用</title>
 
         <para>
-            •¡‡ƒL[‚͈«‚¢‚à‚̂ŁAƒGƒ“ƒeƒBƒeƒB‚͐lH‚ÌŽ¯•ÊŽq(‘㗝ƒL[)‚ðŽ‚Â‚×‚«‚Å‚ ‚é‚Æ‚¢‚¤l‚¦•û‚©‚ç‚́A
-            ‘½‘Α½ŠÖ˜A‚Æ’l‚̃RƒŒƒNƒVƒ‡ƒ“‚𕡍‡ƒL[‚ð—p‚¢‚½ƒe[ƒuƒ‹‚Öƒ}ƒbƒsƒ“ƒO‚·‚é‚̂͏­‚µŠï–­‚ÉŠ´‚¶‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñI
-            Šm‚©‚É‚±‚̍l‚¦•û‚É‚Í‹c˜_‚Ì—]’n‚ª‚ ‚è‚Ü‚·B
-            ƒˆ‚ÈŠÖ˜Aƒe[ƒuƒ‹‚͑㗝ƒL[‚ðŽg‚Á‚Ä‚à—˜‰v‚𓾂ç‚ê‚È‚¢‚悤‚ÉŽv‚¦‚é‚©‚ç‚Å‚·
-            i‡¬’l‚̃RƒŒƒNƒVƒ‡ƒ“‚Í—˜‰v‚ª‚ ‚é <emphasis>‚©‚à</emphasis> ‚µ‚ê‚Ü‚¹‚ñ‚ªjB
-            ‚Æ‚Í‚¢‚¦AHibernate‚͑㗝ƒL[‚ðŽ‚Âƒe[ƒuƒ‹‚Ö‘½‘Α½ŠÖ˜A‚Æ’l‚̃RƒŒƒNƒVƒ‡ƒ“‚ð
-            ƒ}ƒbƒsƒ“ƒO‚·‚é‹@”\‚à”õ‚¦‚Ä‚¢‚Ü‚·B
+            複合キーは悪いもので、エンティティは人工の識別子(代理キー)を持つべきであるという考え方からは、
+            多対多関連と値のコレクションを複合キーを用いたテーブルへマッピングするのは少し奇妙に感じるかもしれません!
+            確かにこの考え方には議論の余地があります。
+            純粋な関連テーブルは代理キーを使っても利益を得られないように思えるからです
+            (合成値のコレクションは利益がある <emphasis>かも</emphasis> しれませんが)。
+            とはいえ、Hibernateは代理キーを持つテーブルへ多対多関連と値のコレクションを
+            マッピングする機能も備えています。
         </para>
 
         <para>
-            bag‚̃Zƒ}ƒ“ƒeƒBƒbƒNƒX‚ðŽ‚Á‚½ <literal>List</literal>i‚Ü‚½‚Í <literal>Collection</literal>j‚ð
-            <literal>&lt;idbag&gt;</literal> —v‘f‚Ƀ}ƒbƒsƒ“ƒO‚Å‚«‚Ü‚·B
+            bagのセマンティックスを持った <literal>List</literal>(または <literal>Collection</literal>)を
+            <literal>&lt;idbag&gt;</literal> 要素にマッピングできます。
         </para>
 
 <programlisting><![CDATA[<idbag name="lovers" table="LOVERS">
@@ -1018,22 +1020,22 @@
 </idbag>]]></programlisting>
 
         <para>
-            ‚²‘¶’m‚̂悤‚É <literal>&lt;idbag&gt;</literal> ‚̓Gƒ“ƒeƒBƒeƒB¥ƒNƒ‰ƒX‚̂悤‚É
-            lH“I‚ÈidƒWƒFƒlƒŒ[ƒ^‚ðŽ‚Á‚Ä‚¢‚Ü‚·I
-            ˆÙ‚È‚é‘㗝ƒL[‚ð‚»‚ê‚¼‚ê‚̃RƒŒƒNƒVƒ‡ƒ“‚Ì—ñ‚ÉŠ„‚è“–‚Ä‚Ü‚·B
-            ‚µ‚©‚µ‚È‚ª‚çAHibernate‚Í‚ ‚és‚̑㗝ƒL[‚Ì’l‚ðŒ©‚Â‚¯o‚·‹@\‚ðŽ‚Á‚Ä‚¢‚Ü‚¹‚ñB
+            ご存知のように <literal>&lt;idbag&gt;</literal> はエンティティ・クラスのように
+            人工的なidジェネレータを持っています!
+            異なる代理キーをそれぞれのコレクションの列に割り当てます。
+            しかしながら、Hibernateはある行の代理キーの値を見つけ出す機構を持っていません。
         </para>
 
         <para>
-            <literal>&lt;idbag&gt;</literal> ‚ðXV‚·‚éƒpƒtƒH[ƒ}ƒ“ƒX‚Í
-            ’ʏí‚Ì <literal>&lt;bag&gt;</literal> ‚æ‚è‚à—Ç‚¢‚±‚Æ‚É’–Ú‚µ‚Ä‚­‚¾‚³‚¢I
-            Hibernate‚͌X‚̍s‚ðŒø‰Ê“I‚ÉŒ©‚‚¯‚邱‚Æ‚ª‚Å‚«A
-            list‚âmapAset‚̂悤‚Ɍ•ʂɂ»‚̍s‚ðXVAíœ‚Å‚«‚Ü‚·B
+            <literal>&lt;idbag&gt;</literal> を更新するパフォーマンスは
+            通常の <literal>&lt;bag&gt;</literal> よりも良いことに注目してください!
+            Hibernateは個々の行を効果的に見つけることができ、
+            listやmap、setのように個別にその行を更新、削除できます。
         </para>
 
         <para>
-            Œ»Ý‚ÌŽÀ‘•‚ł́A<literal>native</literal> ‚Æ‚¢‚¤id¶¬í—ª‚ð
-            <literal>&lt;idbag&gt;</literal> ƒRƒŒƒNƒVƒ‡ƒ“‚ÌŽ¯•ÊŽq‚ɑ΂µ‚ÄŽg‚¦‚Ü‚¹‚ñB
+            現在の実装では、<literal>native</literal> というid生成戦略を
+            <literal>&lt;idbag&gt;</literal> コレクションの識別子に対して使えません。
         </para>
 
     </sect2>
@@ -1055,10 +1057,10 @@
     </sect1-->
 
     <sect1 id="collections-example" revision="1">
-        <title>ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—á</title>
+        <title>コレクションの例</title>
 
         <para>
-            ‚±‚ê‚Ü‚Å‚Ìß‚Ìà–¾‚Å‚Í—‰ð‚µ‚É‚­‚¢‚̂ŁAˆÈ‰º‚Ì—á‚ðŒ©‚Ä‚­‚¾‚³‚¢B
+            これまでの節の説明では理解しにくいので、以下の例を見てください。
         </para>
 
         <programlisting><![CDATA[package eg;
@@ -1079,8 +1081,8 @@
 }]]></programlisting>
 
         <para>
-            ‚±‚̃Nƒ‰ƒX‚Í <literal>Child</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚̃RƒŒƒNƒVƒ‡ƒ“‚ðŽ‚Á‚Ä‚¢‚Ü‚·B
-            ‚à‚µŠeX‚Ìchild‚ªÅ‘å‚Å‚àˆê‚‚Ìparent‚ðŽ‚Á‚Ä‚¢‚é‚È‚ç‚΁AÅ‚àŽ©‘R‚ȃ}ƒbƒsƒ“ƒO‚͈ê‘Α½ŠÖ˜A‚Å‚·B
+            このクラスは <literal>Child</literal> インスタンスのコレクションを持っています。
+            もし各々のchildが最大でも一つのparentを持っているならば、最も自然なマッピングは一対多関連です。
         </para>
 
         <programlisting><![CDATA[<hibernate-mapping>
@@ -1105,7 +1107,7 @@
 </hibernate-mapping>]]></programlisting>
 
         <para>
-            ‚±‚ê‚͈ȉº‚̃e[ƒuƒ‹’è‹`‚Ƀ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
+            これは以下のテーブル定義にマッピングします。
         </para>
 
         <programlisting><![CDATA[create table parent ( id bigint not null primary key )
@@ -1113,7 +1115,7 @@
 alter table child add constraint childfk0 (parent_id) references parent]]></programlisting>
 
         <para>
-            ‚à‚µparent‚ª <emphasis>—v‹</emphasis> ‚³‚ê‚é‚È‚çA‘o•ûŒü‚̈ê‘Α½ŠÖ˜A‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢B
+            もしparentが <emphasis>要求</emphasis> されるなら、双方向の一対多関連を使用してください。
         </para>
 
         <programlisting><![CDATA[<hibernate-mapping>
@@ -1139,7 +1141,7 @@
 </hibernate-mapping>]]></programlisting>
 
         <para>
-            <literal>NOT NULL</literal> §–ñ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+            <literal>NOT NULL</literal> 制約に注意してください。
         </para>
 
         <programlisting><![CDATA[create table parent ( id bigint not null primary key )
@@ -1150,8 +1152,8 @@
 alter table child add constraint childfk0 (parent_id) references parent]]></programlisting>
 
         <para>
-            ‚ ‚é‚¢‚́A‚à‚µ‚±‚ÌŠÖ˜A‚Í’P•ûŒü‚Å‚ ‚é‚ׂ«‚Æ‹­‚­Žå’£‚·‚é‚Ì‚Å‚ ‚ê‚΁A
-            <literal>&lt;key&gt;</literal> ‚É <literal>NOT NULL</literal> §–ñ‚ðéŒ¾‚Å‚«‚Ü‚·B
+            あるいは、もしこの関連は単方向であるべきと強く主張するのであれば、
+            <literal>&lt;key&gt;</literal> に <literal>NOT NULL</literal> 制約を宣言できます。
         </para>
 
         <programlisting><![CDATA[<hibernate-mapping>
@@ -1176,7 +1178,7 @@
 </hibernate-mapping>]]></programlisting>
 
         <para>
-            ˆê•û‚ŁA‚à‚µchild‚ª•¡”‚Ìparent‚ðŽ‚Ä‚é‚È‚ç‚΁A‘½‘Α½ŠÖ˜A‚ª‘Ó–‚Å‚·B
+            一方で、もしchildが複数のparentを持てるならば、多対多関連が妥当です。
         </para>
 
         <programlisting><![CDATA[<hibernate-mapping>
@@ -1201,7 +1203,7 @@
 </hibernate-mapping>]]></programlisting>
 
         <para>
-            ƒe[ƒuƒ‹’è‹`‚͈ȉº‚̂悤‚É‚È‚è‚Ü‚·B
+            テーブル定義は以下のようになります。
         </para>
 
         <programlisting><![CDATA[create table parent ( id bigint not null primary key )
@@ -1213,12 +1215,12 @@
 alter table childset add constraint childsetfk1 (child_id) references child]]></programlisting>
 
         <para>
-            parent/childŠÖŒW‚̃}ƒbƒsƒ“ƒO‚ɂ‚¢‚Ä‚Ì‚æ‚葽‚­‚Ì—á‚⊮‘S‚Ȏ菇‚ª•K—v‚Å‚ ‚ê‚΁A
-            <xref linkend="example-parentchild"/> ‚ð‚²——‚­‚¾‚³‚¢B
+            parent/child関係のマッピングについてのより多くの例や完全な手順が必要であれば、
+            <xref linkend="example-parentchild"/> をご覧ください。
         </para>
         
         <para>
-            ‚Ü‚½A‚³‚ç‚É“ÁŽê‚ÈŠÖ˜Aƒ}ƒbƒsƒ“ƒO‚à‰Â”\‚Å‚·BŽŸ‚̏͂ŏڂµ‚­q‚ׂ܂·B
+            また、さらに特殊な関連マッピングも可能です。次の章で詳しく述べます。
         </para>
 
     </sect1>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/component_mapping.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/component_mapping.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/component_mapping.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,20 +1,22 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="components">
-    <title>ƒRƒ“ƒ|[ƒlƒ“ƒg‚̃}ƒbƒsƒ“ƒO</title>
+    <title>コンポーネントのマッピング</title>
 
     <para>
-        <emphasis>ƒRƒ“ƒ|[ƒlƒ“ƒg</emphasis> ‚ÌŠT”O‚́AHibernate‚ð’Ê‚µ‚Ä—lX‚ȏ󋵂̒†‚Å
-        ˆÙ‚È‚é–Ú“I‚Ì‚½‚߂ɍė˜—p‚³‚ê‚Ü‚·B
+        <emphasis>コンポーネント</emphasis> の概念は、Hibernateを通して様々な状況の中で
+        異なる目的のために再利用されます。
     </para>
 
     <sect1 id="components-dependentobjects" revision="2" >
-        <title>ˆË‘¶ƒIƒuƒWƒFƒNƒg</title>
+        <title>依存オブジェクト</title>
 
         <para>
-            ƒRƒ“ƒ|[ƒlƒ“ƒg‚́AƒGƒ“ƒeƒBƒeƒB‚ÌŽQÆ‚Å‚Í‚È‚­’lŒ^‚Æ‚µ‚ĉi‘±‰»‚³‚ꂽA
-            •ïŠÜ‚³‚ꂽƒIƒuƒWƒFƒNƒg‚Å‚·BƒRƒ“ƒ|[ƒlƒ“ƒg‚Æ‚¢‚¤Œ¾—t‚ɂ‚¢‚ẮAƒRƒ“ƒ|ƒWƒVƒ‡ƒ“‚Æ‚¢‚¤
-            ƒIƒuƒWƒFƒNƒgŽwŒü‚ÌŠT”O‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢iƒA[ƒLƒeƒNƒ`ƒƒƒŒƒxƒ‹‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚Å‚Í‚ ‚è‚Ü‚¹‚ñjB
-            —Ⴆ‚΁AˆÈ‰º‚ÌPersonƒ‚ƒfƒ‹‚̂悤‚È‚à‚Ì‚Å‚·B
+            コンポーネントは、エンティティの参照ではなく値型として永続化された、
+            包含されたオブジェクトです。コンポーネントという言葉については、コンポジションという
+            オブジェクト指向の概念を参照してください(アーキテクチャレベルのコンポーネントではありません)。
+            例えば、以下のPersonモデルのようなものです。
         </para>
 
         <programlisting><![CDATA[public class Person {
@@ -68,14 +70,14 @@
 }]]></programlisting>
 
         <para>
-            ‚¢‚܁A<literal>Name</literal> ‚Í <literal>Person</literal> ‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚Æ‚µ‚Ä
-            ‰i‘±‰»‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B‚±‚±‚Å <literal>Name</literal> ‚͉i‘±‰»‘®«‚ɑ΂µ‚ÄgetterA
-            setterƒƒ\ƒbƒh‚ð’è‹`‚µ‚Ü‚·‚ªAƒCƒ“ƒ^[ƒtƒFƒCƒX‚⎯•ÊŽqƒvƒƒpƒeƒB‚ð’è‹`‚·‚é•K—v‚ª
-            ‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚ĉº‚³‚¢B
+            いま、<literal>Name</literal> は <literal>Person</literal> のコンポーネントとして
+            永続化することが出来ます。ここで <literal>Name</literal> は永続化属性に対してgetter、
+            setterメソッドを定義しますが、インターフェイスや識別子プロパティを定義する必要が
+            ないことに注意して下さい。
         </para>
 
         <para>
-            ƒ}ƒbƒsƒ“ƒO’è‹`‚͈ȉº‚̂悤‚É‚È‚è‚Ü‚·B
+            マッピング定義は以下のようになります。
         </para>
 
         <programlisting><![CDATA[<class name="eg.Person" table="person">
@@ -91,33 +93,33 @@
 </class>]]></programlisting>
 
         <para>
-            Personƒe[ƒuƒ‹‚Í <literal>pid</literal>A
-            <literal>birthday</literal>A
-            <literal>initial</literal>A
-            <literal>first</literal>A
-            <literal>last</literal> ƒJƒ‰ƒ€‚ðŽ‚¿‚Ü‚·B
+            Personテーブルは <literal>pid</literal>、
+            <literal>birthday</literal>、
+            <literal>initial</literal>、
+            <literal>first</literal>、
+            <literal>last</literal> カラムを持ちます。
         </para>
 
         <para>
-            ‘S‚Ä‚Ì’lŒ^‚̂悤‚ɁAƒRƒ“ƒ|[ƒlƒ“ƒg‚ÍŽQÆ‚Ì‹¤—L‚ð‚·‚é‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB
-            Œ¾‚¢Š·‚¦‚é‚ƁA“ñl‚ÌPerson‚Í“¯‚¶–¼‘O‚ðŽ‚Â‚±‚Æ‚ª‚Å‚«‚Ü‚·‚ªA“ñ‚‚ÌPersonƒIƒuƒWƒFƒNƒg‚Í
-            "’l‚ª“¯‚¶‚¾‚¯"‚̕ʁX‚ÌnameƒIƒuƒWƒFƒNƒg‚ðŠÜ‚ñ‚Å‚¢‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
-            ƒRƒ“ƒ|[ƒlƒ“ƒg‚Ìnull’l‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚Í <emphasis>ƒAƒhƒzƒbƒN</emphasis> ‚Å‚·B
-            ƒRƒ“ƒ|[ƒlƒ“ƒg‚̃IƒuƒWƒFƒNƒg‚ðÄ“ǂݍž‚Ý‚·‚éÛAHibernate‚̓Rƒ“ƒ|[ƒlƒ“ƒg‚Ì‚·‚ׂẴJƒ‰ƒ€‚ª
-            null‚Å‚ ‚é‚È‚çƒRƒ“ƒ|[ƒlƒ“ƒgŽ©‘Ì‚ªnull‚Å‚ ‚é‚ƍl‚¦‚Ü‚·B
-            ‚±‚ê‚Í‘å’ï‚̏ꍇ–â‘è‚ ‚è‚Ü‚¹‚ñB
+            全ての値型のように、コンポーネントは参照の共有をすることができません。
+            言い換えると、二人のPersonは同じ名前を持つことができますが、二つのPersonオブジェクトは
+            "値が同じだけ"の別々のnameオブジェクトを含んでいるということです。
+            コンポーネントのnull値のセマンティクスは <emphasis>アドホック</emphasis> です。
+            コンポーネントのオブジェクトを再読み込みする際、Hibernateはコンポーネントのすべてのカラムが
+            nullであるならコンポーネント自体がnullであると考えます。
+            これは大抵の場合問題ありません。
 
         </para>
 
         <para>
-            ƒRƒ“ƒ|[ƒlƒ“ƒg‚Ì‘®«‚Í‚Ç‚ñ‚ÈHibernate‚ÌŒ^‚Å‚à\‚¢‚Ü‚¹‚ñiƒRƒŒƒNƒVƒ‡ƒ“Amany-to-oneŠÖ˜AA
-            ‘¼‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚ȂǁjBƒlƒXƒg‚³‚ꂽƒRƒ“ƒ|[ƒlƒ“ƒg‚Í–Å‘½‚ÉŽg‚í‚È‚¢‚ƍl‚¦‚é‚ׂ«‚Å‚Í
-             <emphasis>‚ ‚è‚Ü‚¹‚ñ</emphasis> BHibernate‚Í”ñí‚É‚«‚߂ׂ̍©‚¢ƒIƒuƒWƒFƒNƒgƒ‚ƒfƒ‹‚ðƒTƒ|[ƒg‚·‚é‚悤‚ɈӐ}‚³‚ê‚Ä‚¢‚Ü‚·B
+            コンポーネントの属性はどんなHibernateの型でも構いません(コレクション、many-to-one関連、
+            他のコンポーネントなど)。ネストされたコンポーネントは滅多に使わないと考えるべきでは
+             <emphasis>ありません</emphasis> 。Hibernateは非常にきめの細かいオブジェクトモデルをサポートするように意図されています。
         </para>
 
         <para>
-            <literal>&lt;component&gt;</literal> —v‘f‚͐eƒGƒ“ƒeƒBƒeƒB‚Ö‚Ì‹tŽQÆ‚Æ‚µ‚āAƒRƒ“ƒ|[ƒlƒ“ƒgƒNƒ‰ƒX‚Ì
-            ‘®«‚ðƒ}ƒbƒsƒ“ƒO‚·‚é <literal>&lt;parent&gt;</literal> ƒTƒu—v‘f‚ðŽg—p‚Å‚«‚Ü‚·B
+            <literal>&lt;component&gt;</literal> 要素は親エンティティへの逆参照として、コンポーネントクラスの
+            属性をマッピングする <literal>&lt;parent&gt;</literal> サブ要素を使用できます。
         </para>
 
         <programlisting><![CDATA[<class name="eg.Person" table="person">
@@ -137,12 +139,12 @@
 
     <sect1 id="components-incollections" revision="1">
         
-        <title>]‘®‚·‚éƒIƒuƒWƒFƒNƒg‚̃RƒŒƒNƒVƒ‡ƒ“</title>
+        <title>従属するオブジェクトのコレクション</title>
 
         <para>
-            Hibernate‚̓Rƒ“ƒ|[ƒlƒ“ƒg‚̃RƒŒƒNƒVƒ‡ƒ“‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·i—Ⴆ‚Î <literal>Name</literal> Œ^‚Ì”z—ñjB
-            <literal>&lt;element&gt;</literal> ƒ^ƒO‚ð <literal>&lt;composite-element&gt;</literal> ƒ^ƒO‚ÉŽæ‚è‘Ö‚¦‚邱‚Æ‚É‚æ‚è
-            ƒRƒ“ƒ|[ƒlƒ“ƒgƒRƒŒƒNƒVƒ‡ƒ“‚ðéŒ¾‚µ‚Ä‚­‚¾‚³‚¢B
+            Hibernateはコンポーネントのコレクションをサポートしています(例えば <literal>Name</literal> 型の配列)。
+            <literal>&lt;element&gt;</literal> タグを <literal>&lt;composite-element&gt;</literal> タグに取り替えることにより
+            コンポーネントコレクションを宣言してください。
         </para>
 
         <programlisting><![CDATA[<set name="someNames" table="some_names" lazy="true">
@@ -155,35 +157,35 @@
 </set>]]></programlisting>
 
         <para>
-            ’ˆÓ: ƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg‚Ì <literal>Set</literal> ‚ð’è‹`‚µ‚½‚È‚çA
-            <literal>equals()</literal> ‚Æ <literal>hashCode()</literal> ‚𐳂µ‚­ŽÀ‘•‚·‚邱‚Æ‚ªd—v‚Å‚·B
+            注意: コンポジットエレメントの <literal>Set</literal> を定義したなら、
+            <literal>equals()</literal> と <literal>hashCode()</literal> を正しく実装することが重要です。
         </para>
 
         <para>
-            ƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg‚̓RƒŒƒNƒVƒ‡ƒ“‚ðŠÜ‚Ü‚¸AƒRƒ“ƒ|[ƒlƒ“ƒg‚ðŠÜ‚Þ‚±‚Æ‚à‚ ‚è‚Ü‚·B
-            ƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒgŽ©g‚ªƒRƒ“ƒ|[ƒlƒ“ƒg‚ðŠÜ‚ñ‚Å‚¢‚éê‡‚Í <literal>&lt;nested-composite-element&gt;</literal> ‚ð
-            Žg—p‚µ‚Ä‚­‚¾‚³‚¢BƒRƒ“ƒ|[ƒlƒ“ƒg‚̃RƒŒƒNƒVƒ‡ƒ“Ž©g‚ªƒRƒ“ƒ|[ƒlƒ“ƒg‚ðŽ‚Â‚Æ‚¢‚¤ƒP[ƒX‚Í‚ß‚Á‚½‚É‚ ‚è‚Ü‚¹‚ñB
-            ‚±‚Ì’iŠK‚܂łɁAone-to-manyŠÖ˜A‚Ì•û‚ª‚æ‚è“KØ‚Å‚È‚¢‚©‚Ənl‚µ‚Ä‚­‚¾‚³‚¢B
-            ƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg‚ðƒGƒ“ƒeƒBƒeƒB‚Æ‚µ‚čēxƒ‚ƒfƒŠƒ“ƒO‚µ‚Ä‚Ý‚Ä‚­‚¾‚³‚¢B
-            ‚µ‚©‚µ‚±‚ê‚ÍJava‚̃‚ƒfƒ‹‚Æ‚µ‚Ä‚Í“¯‚¶‚Å‚·‚ªAƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ‚ƒfƒ‹‚Ɖi‘±“®ì‚Í‚Ü‚¾ŽáŠ±ˆÙ‚Ȃ邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+            コンポジットエレメントはコレクションを含まず、コンポーネントを含むこともあります。
+            コンポジットエレメント自身がコンポーネントを含んでいる場合は <literal>&lt;nested-composite-element&gt;</literal> を
+            使用してください。コンポーネントのコレクション自身がコンポーネントを持つというケースはめったにありません。
+            この段階までに、one-to-many関連の方がより適切でないかと熟考してください。
+            コンポジットエレメントをエンティティとして再度モデリングしてみてください。
+            しかしこれはJavaのモデルとしては同じですが、リレーショナルモデルと永続動作はまだ若干異なることに注意してください。
         </para>
 
         <para>
-            ‚à‚µ <literal>&lt;set&gt;</literal> ‚ðŽg—p‚·‚é‚Ì‚Å‚ ‚ê‚΁AƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg‚̃}ƒbƒsƒ“ƒO‚ªnull’l‚ª‰Â”\‚È
-            ‘®«‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢BHibernate‚̓IƒuƒWƒFƒNƒg‚ðíœ‚·‚é‚Æ‚«A
-            ƒŒƒR[ƒh‚ðŽ¯•Ê‚·‚邽‚ß‚É‚»‚ꂼ‚ê‚̃Jƒ‰ƒ€‚Ì’l‚ðŽg—p‚·‚é•K—v‚ª‚ ‚邽‚߁Anull’l‚ðŽ‚Â‚±‚Æ‚ªo—ˆ‚Ü‚¹‚ñ
-            iƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒgƒe[ƒuƒ‹‚É‚Í•Ê‚ÌŽåƒL[ƒJƒ‰ƒ€‚Í‚ ‚è‚Ü‚¹‚ñjB
-            ƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg‚Énot-null‚Ì‘®«‚Ì‚Ý‚ðŽg—p‚·‚é‚©A‚Ü‚½‚Í <literal>&lt;list&gt;</literal>A<literal>&lt;map&gt;</literal>A
-            <literal>&lt;bag&gt;</literal>A<literal>&lt;idbag&gt;</literal> ‚ð‘I‘ð‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
+            もし <literal>&lt;set&gt;</literal> を使用するのであれば、コンポジットエレメントのマッピングがnull値が可能な
+            属性をサポートしていないことに注意してください。Hibernateはオブジェクトを削除するとき、
+            レコードを識別するためにそれぞれのカラムの値を使用する必要があるため、null値を持つことが出来ません
+            (コンポジットエレメントテーブルには別の主キーカラムはありません)。
+            コンポジットエレメントにnot-nullの属性のみを使用するか、または <literal>&lt;list&gt;</literal>、<literal>&lt;map&gt;</literal>、
+            <literal>&lt;bag&gt;</literal>、<literal>&lt;idbag&gt;</literal> を選択する必要があります。
         </para>
 
         <para>
-            ƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg‚Ì“Á•Ê‚ȃP[ƒX‚Æ‚µ‚āAƒlƒXƒg‚³‚ꂽ <literal>&lt;many-to-one&gt;</literal> ‘®«‚ðŽ‚Â
-            ƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg‚ª‚ ‚è‚Ü‚·B
-            ‚±‚̃}ƒbƒsƒ“ƒO‚́AƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒgƒNƒ‰ƒX‚𑽑Α½ŠÖ˜Aƒe[ƒuƒ‹‚Ì
-            —]•ª‚ȃJƒ‰ƒ€‚Öƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
-            ŽŸ‚Ì—á‚Í <literal>Order</literal> ‚©‚çA<literal>Item</literal> ‚Ö‚Ì‘½‘Α½ŠÖ˜A‚Å‚·B
-             <literal>purchaseDate</literal>A<literal>price</literal>A<literal>quantity</literal> ‚ÍŠÖ˜A‚Ì‘®«‚Æ‚È‚è‚Ü‚·B
+            コンポジットエレメントの特別なケースとして、ネストされた <literal>&lt;many-to-one&gt;</literal> 属性を持つ
+            コンポジットエレメントがあります。
+            このマッピングは、コンポジットエレメントクラスを多対多関連テーブルの
+            余分なカラムへマッピングします。
+            次の例は <literal>Order</literal> から、<literal>Item</literal> への多対多関連です。
+             <literal>purchaseDate</literal>、<literal>price</literal>、<literal>quantity</literal> は関連の属性となります。
         </para>
 
         <programlisting><![CDATA[<class name="eg.Order" .... >
@@ -200,14 +202,14 @@
 </class>]]></programlisting>
 
         <para>
-            ‚à‚¿‚ë‚ñA‘o•ûŒüŠÖ˜A‚̃iƒrƒQ[ƒVƒ‡ƒ“‚Ì‚½‚ß‚É”½‘Α¤‚©‚çpurchase‚Ö‚ÌŽQÆ‚ðì‚邱‚Ƃ͏o—ˆ‚Ü‚¹‚ñB
-            ƒRƒ“ƒ|[ƒlƒ“ƒg‚Í’lŒ^‚Å‚ ‚èAŽQÆ‚ð‹¤—L‚Å‚«‚È‚¢‚±‚Æ‚ðŠo‚¦‚Ä‚¨‚¢‚Ä‚­‚¾‚³‚¢B
-            ˆê‚Â‚Ì <literal>Purchase</literal> ‚͈ê‚Â‚Ì <literal>Order</literal> ‚Ìset‚É‘¶Ý‚Å‚«‚Ü‚·‚ªA
-            “¯Žž‚É <literal>Item</literal> ‚©‚çŽQÆ‚·‚邱‚Ƃ͏o—ˆ‚Ü‚¹‚ñB
+            もちろん、双方向関連のナビゲーションのために反対側からpurchaseへの参照を作ることは出来ません。
+            コンポーネントは値型であり、参照を共有できないことを覚えておいてください。
+            一つの <literal>Purchase</literal> は一つの <literal>Order</literal> のsetに存在できますが、
+            同時に <literal>Item</literal> から参照することは出来ません。
         </para>
 
         <para>
-              3€ŠÖ˜Ai‚ ‚é‚¢‚Í4€‚Ȃǁj‚à‰Â”\‚Å‚·B
+              3項関連(あるいは4項など)も可能です。
         </para>
 
         <programlisting><![CDATA[<class name="eg.Order" .... >
@@ -222,61 +224,61 @@
 </class>]]></programlisting>
 
         <para>
-            ƒRƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg‚Í‘¼‚̃Gƒ“ƒeƒBƒeƒB‚Ö‚ÌŠÖ˜A‚Æ‚µ‚āA
-            “¯‚¶ƒVƒ“ƒ^ƒbƒNƒX‚ðŽg‚Á‚Ä‚¢‚éƒNƒGƒŠ“à‚ÅŽg—p‚Å‚«‚Ü‚·B
+            コンポジットエレメントは他のエンティティへの関連として、
+            同じシンタックスを使っているクエリ内で使用できます。
         </para>
 
     </sect1>
 
     <sect1 id="components-asmapindex">
-        <title>Map‚̃Cƒ“ƒfƒbƒNƒX‚Æ‚µ‚ẴRƒ“ƒ|[ƒlƒ“ƒg</title>
+        <title>Mapのインデックスとしてのコンポーネント</title>
 
         <para>
-            <literal>&lt;composite-map-key&gt;</literal> —v‘f‚Í <literal>Map</literal> ‚̃L[‚Æ‚µ‚ăRƒ“ƒ|[ƒlƒ“ƒgƒNƒ‰ƒX‚ð
-            ƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·BƒRƒ“ƒ|[ƒlƒ“ƒgƒNƒ‰ƒXã‚Å <literal>hashCode()</literal> ‚Æ <literal>equals()</literal>
-            ‚𐳊m‚ɃI[ƒo[ƒ‰ƒCƒh‚µ‚Ä‚­‚¾‚³‚¢B
+            <literal>&lt;composite-map-key&gt;</literal> 要素は <literal>Map</literal> のキーとしてコンポーネントクラスを
+            マッピングします。コンポーネントクラス上で <literal>hashCode()</literal> と <literal>equals()</literal>
+            を正確にオーバーライドしてください。
         </para>
     </sect1>
 
     <sect1 id="components-compositeid" revision="1">
-        <title>•¡‡Ž¯•ÊŽq‚Æ‚µ‚ẴRƒ“ƒ|[ƒlƒ“ƒg</title>
+        <title>複合識別子としてのコンポーネント</title>
 
         <para>
-            ƒRƒ“ƒ|[ƒlƒ“ƒg‚ðƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒX‚ÌŽ¯•ÊŽq‚Æ‚µ‚ÄŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
-            ƒRƒ“ƒ|[ƒlƒ“ƒgƒNƒ‰ƒX‚͈ȉº‚ÌðŒ‚ð–ž‚½‚·•K—v‚ª‚ ‚è‚Ü‚·B
+            コンポーネントをエンティティクラスの識別子として使うことができます。
+            コンポーネントクラスは以下の条件を満たす必要があります。
         </para>
 
         <itemizedlist spacing="compact">
             <listitem>
                 <para>
-                    <literal>java.io.Serializable</literal> ‚ðŽÀ‘•‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+                    <literal>java.io.Serializable</literal> を実装しなければなりません。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    ƒf[ƒ^ƒx[ƒXã‚Ì•¡‡ƒL[‚Ì“™‰¿«‚Æ–µ‚‚Ì‚È‚¢‚悤‚ɁA<literal>equals()</literal> 
-                    ‚Æ <literal>hashCode()</literal> ‚ðÄŽÀ‘•‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+                    データベース上の複合キーの等価性と矛盾のないように、<literal>equals()</literal> 
+                    と <literal>hashCode()</literal> を再実装しなければなりません。
                 </para>
             </listitem>
         </itemizedlist>
         
         <para>
-            <emphasis>’ˆÓ: Hibernate3‚É‚¨‚¢‚āA2”Ô–Ú‚ÌðŒ‚Íâ‘ΓI‚ÈðŒ‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-                  ‚µ‚©‚µ‚Æ‚É‚©‚­ðŒ‚ð–ž‚½‚µ‚Ä‚­‚¾‚³‚¢B
+            <emphasis>注意: Hibernate3において、2番目の条件は絶対的な条件ではありません。
+                  しかしとにかく条件を満たしてください。
             </emphasis> 
 
         </para>
 
         <para>
-            •¡‡ƒL[‚𐶐¬‚·‚邽‚ß‚É <literal>IdentifierGenerator</literal> ‚ðŽg—p‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB
-            ‘ã‚í‚è‚ɃAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªŽ¯•ÊŽq‚ðŠ„‚è“–‚Ä‚È‚­‚Ä‚Í‚È‚è‚Ü‚¹‚ñB
+            複合キーを生成するために <literal>IdentifierGenerator</literal> を使用することはできません。
+            代わりにアプリケーションが識別子を割り当てなくてはなりません。
         </para>
 
         <para>
-            ’ʏí‚Ì <literal>&lt;id&gt;</literal> éŒ¾‚Ì‘ã‚í‚è‚É <literal>&lt;composite-id&gt;</literal> ƒ^ƒO‚ð
-            iƒlƒXƒg‚³‚ꂽ <literal>&lt;key-property&gt;</literal> ‘®«‚Æ‹¤‚ɁjŽg‚¢‚Ü‚·B
-            ˆÈ‰º‚Ì—á‚ł́A<literal>OrderLine</literal> ƒNƒ‰ƒX‚Í <literal>Order</literal> ‚́i•¡‡jŽåƒL[‚É
-            ˆË‘¶‚µ‚½ŽåƒL[‚ðŽ‚Á‚Ä‚¢‚Ü‚·B
+            通常の <literal>&lt;id&gt;</literal> 宣言の代わりに <literal>&lt;composite-id&gt;</literal> タグを
+            (ネストされた <literal>&lt;key-property&gt;</literal> 属性と共に)使います。
+            以下の例では、<literal>OrderLine</literal> クラスは <literal>Order</literal> の(複合)主キーに
+            依存した主キーを持っています。
         </para>
 
         <programlisting><![CDATA[<class name="OrderLine">
@@ -299,9 +301,9 @@
 </class>]]></programlisting>
 
         <para>
-            ‚±‚Ì‚Æ‚«A<literal>OrderLine</literal> ƒe[ƒuƒ‹‚ÖŠÖ˜A‚·‚éŠO•”ƒL[‚à‚Ü‚½•¡‡‚Å‚·B
-            ‘¼‚̃Nƒ‰ƒX‚̃}ƒbƒsƒ“ƒO‚Å‚±‚ê‚ðéŒ¾‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-            <literal>OrderLine</literal> ‚Ö‚ÌŠÖ˜A‚ÍŽŸ‚̂悤‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B
+            このとき、<literal>OrderLine</literal> テーブルへ関連する外部キーもまた複合です。
+            他のクラスのマッピングでこれを宣言しなければなりません。
+            <literal>OrderLine</literal> への関連は次のようにマッピングされます。
         </para>
 
         <programlisting><![CDATA[<many-to-one name="orderLine" class="OrderLine">
@@ -312,13 +314,13 @@
 </many-to-one>]]></programlisting>
 
         <para>
-            i<literal>&lt;column&gt;</literal> ƒ^ƒO‚Í‚Ç‚±‚Å‚ ‚Á‚Ä‚à <literal>column</literal> ‘®«‚Ì
-              ‘ã‚í‚è‚É‚È‚è‚Ü‚·Bj
+            (<literal>&lt;column&gt;</literal> タグはどこであっても <literal>column</literal> 属性の
+              代わりになります。)
         </para>
         
         <para>
-            <literal>OrderLine</literal> ‚Ö‚Ì <literal>many-to-many</literal> ŠÖ˜A‚à
-            •¡‡ŠO•”ƒL[‚ðŽg‚¢‚Ü‚·B
+            <literal>OrderLine</literal> への <literal>many-to-many</literal> 関連も
+            複合外部キーを使います。
         </para>
     
     <programlisting><![CDATA[<set name="undeliveredOrderLines">
@@ -331,8 +333,8 @@
 </set>]]></programlisting>
 
         <para>
-            <literal>Order</literal> ‚É‚ ‚é <literal>OrderLine</literal> ‚̃RƒŒƒNƒVƒ‡ƒ“‚Í
-            ŽŸ‚Ì‚à‚Ì‚ðŽg—p‚µ‚Ü‚·B
+            <literal>Order</literal> にある <literal>OrderLine</literal> のコレクションは
+            次のものを使用します。
         </para>
 
     <programlisting><![CDATA[<set name="orderLines" inverse="true">
@@ -344,12 +346,12 @@
 </set>]]></programlisting>
 
         <para>
-            i<literal>&lt;one-to-many&gt;</literal> ‘®«‚́A—á‚É‚æ‚Á‚ăJƒ‰ƒ€‚ðéŒ¾‚µ‚Ü‚¹‚ñj
+            (<literal>&lt;one-to-many&gt;</literal> 属性は、例によってカラムを宣言しません)
         </para>
         
         <para>
-            <literal>OrderLine</literal> Ž©g‚ªƒRƒŒƒNƒVƒ‡ƒ“‚ðŽ‚Á‚Ä‚¢‚éê‡A
-            “¯Žž‚É•¡‡ŠO•”ƒL[‚àŽ‚Á‚Ä‚¢‚Ü‚·B
+            <literal>OrderLine</literal> 自身がコレクションを持っている場合、
+            同時に複合外部キーも持っています。
         </para>
 
         <programlisting><![CDATA[<class name="OrderLine">
@@ -371,10 +373,10 @@
     </sect1>
 
     <sect1 id="components-dynamic" revision="1">
-        <title>“®“IƒRƒ“ƒ|[ƒlƒ“ƒg</title>
+        <title>動的コンポーネント</title>
 
         <para>
-            <literal>Map</literal> Œ^‚̃vƒƒpƒeƒB‚̃}ƒbƒsƒ“ƒO‚à‰Â”\‚Å‚·B
+            <literal>Map</literal> 型のプロパティのマッピングも可能です。
         </para>
 
     <programlisting><![CDATA[<dynamic-component name="userAttributes">
@@ -384,11 +386,11 @@
 </dynamic-component>]]></programlisting>
 
         <para>
-            <literal>&lt;dynamic-component&gt;</literal> ƒ}ƒbƒsƒ“ƒO‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚Í <literal>&lt;component&gt;</literal> 
-            ‚Æ“¯ˆê‚Ì‚à‚Ì‚Å‚·B‚±‚ÌŽí‚̃}ƒbƒsƒ“ƒO‚Ì—˜“_‚́Aƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚̕ҏW‚É‚æ‚èA”z’uŽž‚Ébean‚Ì‘®«‚ð
-            Œˆ’è‚Å‚«‚é“_‚Å‚·B‚Ü‚½ADOMƒp[ƒT‚ð—˜—p‚µ‚āAƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚̃‰ƒ“ƒ^ƒCƒ€‘€ì‚ª‰Â”\‚Å‚·B
-            ‚³‚ç‚ɁA<literal>Configuration</literal> ƒIƒuƒWƒFƒNƒgŒo—R‚ÅHibernate‚̃Rƒ“ƒtƒBƒOƒŒ[ƒVƒ‡ƒ“Žž‚̃ƒ^ƒ‚ƒfƒ‹‚É
-            ƒAƒNƒZƒXi‚Ü‚½‚͕ύXj‚ª‰Â”\‚Å‚·B
+            <literal>&lt;dynamic-component&gt;</literal> マッピングのセマンティクスは <literal>&lt;component&gt;</literal> 
+            と同一のものです。この種のマッピングの利点は、マッピングドキュメントの編集により、配置時にbeanの属性を
+            決定できる点です。また、DOMパーサを利用して、マッピングドキュメントのランタイム操作が可能です。
+            さらに、<literal>Configuration</literal> オブジェクト経由でHibernateのコンフィグレーション時のメタモデルに
+            アクセス(または変更)が可能です。
         </para>
 
     </sect1>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/configuration.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/configuration.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/configuration.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,30 +1,32 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="session-configuration" revision="1">
 
-    <title>Ý’è</title>
+    <title>設定</title>
     
     <para>
-        Hibernate‚Í‚³‚Ü‚´‚܂Ȋ‹«‚Å“®ì‚·‚é‚悤‚ɃfƒUƒCƒ“‚³‚ê‚Ä‚¢‚邽‚߁A”ñí‚É‘½‚­‚̐ݒè—v‘f‚ª‚ ‚è‚Ü‚·B
-        K‚¢‚È‚±‚ƂɁAHibernate‚́AŒöŠJ‚³‚ê‚Ä‚¢‚éƒpƒbƒP[ƒW‚Ì <literal>etc/</literal> ƒtƒHƒ‹ƒ_‚Ì <literal>hibernate.properties</literal> 
-        ‚ɁA‚Ù‚Æ‚ñ‚ǂ̐ݒè—v‘f‚Ì“KØ‚ȃfƒtƒHƒ‹ƒg’l‚ª‹Lq‚³‚ê‚Ä‚¢‚Ü‚·B
-        ‚±‚Ì <literal>hibernate.properties</literal> ‚ðƒNƒ‰ƒXƒpƒX‚ɐݒ肵AÝ’è—v‘f‚ðƒJƒXƒ^ƒ}ƒCƒY‚·‚邾‚¯‚Å‚·B
+        Hibernateはさまざまな環境で動作するようにデザインされているため、非常に多くの設定要素があります。
+        幸いなことに、Hibernateは、公開されているパッケージの <literal>etc/</literal> フォルダの <literal>hibernate.properties</literal> 
+        に、ほとんどの設定要素の適切なデフォルト値が記述されています。
+        この <literal>hibernate.properties</literal> をクラスパスに設定し、設定要素をカスタマイズするだけです。
     </para>
 
     <sect1 id="configuration-programmatic" revision="1">
-        <title>ƒvƒƒOƒ‰ƒ€ã‚̐ݒè</title>
+        <title>プログラム上の設定</title>
 
         <para>
-             <literal>org.hibernate.cfg.Configuration</literal> ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚́A
-            Java‚ÌŒ^‚ÆSQLƒf[ƒ^ƒx[ƒX‚̃}ƒbƒsƒ“ƒOî•ñ‚ð‚·‚×‚ÄŽ‚Á‚Ä‚¢‚Ü‚·B
-            The  <literal>Configuration</literal> ‚́Ai•s•Ï‚́j <literal>SessionFactory</literal> 
-            ‚𐶐¬‚·‚é‚Æ‚«‚ÉŽg—p‚µ‚Ü‚·B
-            •¡”‚ÌXMLƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ð•ÏŠ·‚µAƒ}ƒbƒsƒ“ƒOî•ñ‚É‚µ‚Ü‚·B
+             <literal>org.hibernate.cfg.Configuration</literal> のインスタンスは、
+            Javaの型とSQLデータベースのマッピング情報をすべて持っています。
+            The  <literal>Configuration</literal> は、(不変の) <literal>SessionFactory</literal> 
+            を生成するときに使用します。
+            複数のXMLマッピングファイルを変換し、マッピング情報にします。
         </para>
 
         <para>
-            ’ʏíA<literal>Configuration</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚́A“Á’è‚ÌXMLƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹
-            ‚É‚æ‚Á‚Ä’¼Ú‰Šú‰»‚³‚ê‚Ü‚·B‚à‚µAƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ªƒNƒ‰ƒXƒpƒX‚ɐݒ肳‚ê‚Ä‚¢‚éê‡A
-            ŽŸ‚̃ƒ\ƒbƒh‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B <literal>addResource()</literal> :
+            通常、<literal>Configuration</literal> インスタンスは、特定のXMLマッピングファイル
+            によって直接初期化されます。もし、マッピングファイルがクラスパスに設定されている場合、
+            次のメソッドを使ってください。 <literal>addResource()</literal> :
         </para>
 
         <programlisting><![CDATA[Configuration cfg = new Configuration()
@@ -32,8 +34,8 @@
     .addResource("Bid.hbm.xml");]]></programlisting>
 
         <para>
-            ‘ã‘ÖˆÄ(‚±‚¿‚ç‚Ì‚Ù‚¤‚ª—Ç‚¢‚Æ‚«‚à‚ ‚è‚Ü‚·)‚Æ‚µ‚ă}ƒbƒsƒ“ƒOƒNƒ‰ƒX‚ðŽw’è‚·‚é•û–@‚à‚ ‚è‚Ü‚·BHibernate‚ɁAƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ð
-            Œ©‚‚¯‚³‚¹‚Ä‚­‚¾‚³‚¢F
+            代替案(こちらのほうが良いときもあります)としてマッピングクラスを指定する方法もあります。Hibernateに、マッピングファイルを
+            見つけさせてください:
         </para>
 
         <programlisting><![CDATA[Configuration cfg = new Configuration()
@@ -41,14 +43,14 @@
     .addClass(org.hibernate.auction.Bid.class);]]></programlisting>
 
         <para>
-            Hibernate‚́AƒNƒ‰ƒXƒpƒX‚É‚ ‚éˆÈ‰º‚̂悤‚È–¼‘O‚̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ðŒ©‚Â‚¯‚Ü‚·B
-            <literal>/org/hibernate/auction/Item.hbm.xml</literal> A
-            <literal>/org/hibernate/auction/Bid.hbm.xml</literal> B
-            ‚±‚Ì•û–@‚¾‚ƁAƒn[ƒhƒR[ƒfƒBƒ“ƒO‚³‚ꂽƒtƒ@ƒCƒ‹–¼‚ð”rœ‚Å‚«‚Ü‚·B
+            Hibernateは、クラスパスにある以下のような名前のマッピングファイルを見つけます。
+            <literal>/org/hibernate/auction/Item.hbm.xml</literal> 、
+            <literal>/org/hibernate/auction/Bid.hbm.xml</literal> 。
+            この方法だと、ハードコーディングされたファイル名を排除できます。
         </para>
         
         <para>
-            <literal>Configuration</literal> ‚́AÝ’èƒvƒƒpƒeƒB‚ðŽw’è‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·F
+            <literal>Configuration</literal> は、設定プロパティを指定することもできます:
         </para>
 
         <programlisting><![CDATA[Configuration cfg = new Configuration()
@@ -59,103 +61,103 @@
     .setProperty("hibernate.order_updates", "true");]]></programlisting>
     
         <para>
-            Hibernate‚ɐݒèƒvƒƒpƒeƒB‚ð’Ê‚·•û–@‚Í1‚‚ł͂ ‚è‚Ü‚¹‚ñB
-            ‚³‚Ü‚´‚܂ȃIƒvƒVƒ‡ƒ“‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚·F
+            Hibernateに設定プロパティを通す方法は1つではありません。
+            さまざまなオプションを用意しています:
         </para>
 
         <orderedlist spacing="compact">
             <listitem>
                 <para>
-                    <literal>java.util.Properties</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚ð
-                    <literal>Configuration.setProperties()</literal> ‚É“n‚µ‚Ü‚·B
+                    <literal>java.util.Properties</literal> インスタンスを
+                    <literal>Configuration.setProperties()</literal> に渡します。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>hibernate.properties</literal> ‚ð
-                    ƒNƒ‰ƒXƒpƒX‚̃‹[ƒgƒfƒBƒŒƒNƒgƒŠ‚É’u‚«‚Ü‚·B
+                    <literal>hibernate.properties</literal> ã‚’
+                    クラスパスのルートディレクトリに置きます。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>System</literal> ƒvƒƒpƒeƒB‚ª
-                    <literal>java -Dproperty=value</literal> ‚ðŽg‚¤‚悤‚ɐݒ肵‚Ü‚·B
+                    <literal>System</literal> プロパティが
+                    <literal>java -Dproperty=value</literal> を使うように設定します。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>&lt;property&gt;</literal> —v‘f‚ð
-                    <literal>hibernate.cfg.xml</literal> iŒãqj‚ɐݒ肵‚Ü‚·B
+                    <literal>&lt;property&gt;</literal> 要素を
+                    <literal>hibernate.cfg.xml</literal> (後述)に設定します。
                 </para>
             </listitem>
         </orderedlist>
 
         <para>
-            ¡‚·‚®Žn‚ß‚½‚¢‚Ì‚È‚çA<literal>hibernate.properties</literal> 
-            ‚ðŽg‚¤‚Ì‚ªˆê”Ô‚Ì‹ß“¹‚Å‚·B
+            今すぐ始めたいのなら、<literal>hibernate.properties</literal> 
+            を使うのが一番の近道です。
         </para>
 
         <para>
-            <literal>Configuration</literal> ‚́A‹N“®Žž‚É‚¾‚¯‚ ‚éƒIƒuƒWƒFƒNƒg‚Å‚ ‚èA
-            ˆê“x <literal>SessionFactory</literal> ‚𐶐¬‚µ‚½Œã‚́A”jŠü‚³‚ê‚邱‚Æ‚ðˆÓ}‚µ‚Ä‚¢‚Ü‚·B
+            <literal>Configuration</literal> は、起動時にだけあるオブジェクトであり、
+            一度 <literal>SessionFactory</literal> を生成した後は、破棄されることを意図しています。
         </para>
 
     </sect1>
     
     <sect1 id="configuration-sessionfactory">
-        <title>SessionFactory‚ðŽæ“¾‚·‚é</title>
+        <title>SessionFactoryを取得する</title>
 
         <para>
-            <literal>Configuration</literal> ‚ª‚·‚ׂẴ}ƒbƒsƒ“ƒOî•ñ‚ð‰ðÍ‚µ‚½‚çA
-            ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚́A <literal>Session</literal> ƒtƒ@ƒNƒgƒŠƒCƒ“ƒXƒ^ƒ“ƒX‚ðŽæ“¾‚µ‚Ü‚·B
-            ‚±‚ÌSessionFactory‚́AHibernate‚ðŽg—p‚·‚é‚·‚ׂẴXƒŒƒbƒh‚Å‹¤—L‚³‚ê‚é‚ׂ«‚Å‚·B
+            <literal>Configuration</literal> がすべてのマッピング情報を解析したら、
+            アプリケーションは、 <literal>Session</literal> ファクトリインスタンスを取得します。
+            このSessionFactoryは、Hibernateを使用するすべてのスレッドで共有されるべきです。
         </para>
 
         <programlisting><![CDATA[SessionFactory sessions = cfg.buildSessionFactory();]]></programlisting>
 
         <para>
-            Hibernate‚́A <literal>SessionFactory</literal> ‚𕡐”¶¬‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-            ‚±‚ê‚́A•¡”‚̃f[ƒ^ƒx[ƒX‚ðŽg—p‚·‚éê‡‚É•Ö—˜‚Å‚·B
+            Hibernateは、 <literal>SessionFactory</literal> を複数生成することができます。
+            これは、複数のデータベースを使用する場合に便利です。
         </para>
 
     </sect1>
 
     <sect1 id="configuration-hibernatejdbc" revision="1">
-        <title>JDBCƒRƒlƒNƒVƒ‡ƒ“</title>
+        <title>JDBCコネクション</title>
 
         <para>
-            ’ʏíAŠJ”­ŽÒ‚Í <literal>SessionFactory</literal> ‚𐶐¬‚µASessionFactory‚ÅJDBCƒRƒlƒNƒVƒ‡ƒ“‚ðƒv[ƒŠƒ“ƒO‚µ‚½‚¢‚ƍl‚¦‚Ü‚·B
-            ‚»‚̃Aƒvƒ[ƒ`‚ðÌ—p‚·‚éê‡A’Pƒ‚É <literal>Session</literal> ‚ðƒI[ƒvƒ“‚µ‚Ä‚­‚¾‚³‚¢F
+            通常、開発者は <literal>SessionFactory</literal> を生成し、SessionFactoryでJDBCコネクションをプーリングしたいと考えます。
+            そのアプローチを採用する場合、単純に <literal>Session</literal> をオープンしてください:
         </para>
 
         <programlisting><![CDATA[Session session = sessions.openSession(); // open a new Session]]></programlisting>
         
         <para>
-            ‚±‚ꂾ‚¯‚ŁAƒv[ƒŠƒ“ƒO‚µ‚½JDBCƒRƒlƒNƒVƒ‡ƒ“‚ðŽg‚Á‚Ä–Ú“I‚̃f[ƒ^ƒx[ƒX
-            ‚ɃAƒNƒZƒX‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+            これだけで、プーリングしたJDBCコネクションを使って目的のデータベース
+            にアクセスすることができます。
         </para>
 
         <para>
-            ‚»‚Ì‚½‚߂ɂ́AJDBCƒRƒlƒNƒVƒ‡ƒ“‚̃vƒƒpƒeƒB‚ðHibernate‚ɐݒ肷‚é•K—v‚ª‚ ‚è‚Ü‚·B
-            ‚·‚ׂĂÌHibernateƒvƒƒpƒeƒB–¼‚ƃZƒ}ƒ“ƒeƒBƒNƒX‚Í
-            <literal>org.hibernate.cfg.Environment</literal> ƒNƒ‰ƒX‚É’è‹`‚³‚ê‚Ä‚¢‚Ü‚·B
-            ‚±‚̐ݒè‚ÍJDBCƒRƒlƒNƒVƒ‡ƒ“Ý’è‚Ì’†‚ňê”ԏd—v‚È‚à‚Ì‚Å‚·B
+            そのためには、JDBCコネクションのプロパティをHibernateに設定する必要があります。
+            すべてのHibernateプロパティ名とセマンティクスは
+            <literal>org.hibernate.cfg.Environment</literal> クラスに定義されています。
+            この設定はJDBCコネクション設定の中で一番重要なものです。
         </para>
 
         <para>
-            ‚à‚µAˆÈ‰º‚̃vƒƒpƒeƒB‚ðÝ’è‚·‚é‚ƁAHibernate‚̓RƒlƒNƒVƒ‡ƒ“‚ðŽæ“¾‚·‚éiƒv[ƒ‹‚àj‚½‚ß‚É
-            <literal>java.sql.DriverManager</literal> ‚ðŽg‚¢‚Ü‚·B
+            もし、以下のプロパティを設定すると、Hibernateはコネクションを取得する(プールも)ために
+            <literal>java.sql.DriverManager</literal> を使います。
         </para>
 
         <table frame="topbot">
-            <title>Hibernate JDBCƒvƒƒpƒeƒB</title>
+            <title>Hibernate JDBCプロパティ</title>
             <tgroup cols="2">
                 <colspec colname="c1" colwidth="1*"/>
                 <colspec colname="c2" colwidth="1*"/>
                 <thead>
                     <row>
-                        <entry>ƒvƒƒpƒeƒB–¼</entry>
-                        <entry>ˆÓ–¡</entry>
+                        <entry>プロパティ名</entry>
+                        <entry>意味</entry>
                     </row>
                 </thead>
             <tbody>
@@ -164,7 +166,7 @@
                     <literal>hibernate.connection.driver_class</literal>
                 </entry>
                 <entry>
-                    <emphasis>JDBCƒhƒ‰ƒCƒoƒNƒ‰ƒX</emphasis>
+                    <emphasis>JDBCドライバクラス</emphasis>
                 </entry>
             </row>
             <row>
@@ -196,7 +198,7 @@
                     <literal>hibernate.connection.pool_size</literal>
                 </entry>
                 <entry>
-                    <emphasis>ƒv[ƒ‹‚·‚éƒRƒlƒNƒVƒ‡ƒ“‚̍ő吔</emphasis>
+                    <emphasis>プールするコネクションの最大数</emphasis>
                 </entry>
             </row>
             </tbody>
@@ -204,26 +206,26 @@
         </table>
 
         <para>
-            Hibernate‚̃RƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹ƒAƒ‹ƒSƒŠƒYƒ€‚Í”ñí‚ɏ‰•à“I‚È‚à‚Ì‚Å‚·B
-            ‚±‚ê‚Í‚·‚®‚ÉŽn‚ß‚ç‚ê‚é‚悤‚É‚Æ—pˆÓ‚³‚ꂽ‚à‚̂ŁA<emphasis>»•i‚Æ‚µ‚ÄŽg—p‚·‚邱‚Æ‚ðˆÓ}‚µ‚Ä‚¢‚Ü‚¹‚ñ</emphasis> B
-            ‚Ü‚½AƒpƒtƒH[ƒ}ƒ“ƒX‚̃eƒXƒg‚Ì‚½‚ß‚Ì‚à‚Ì‚Å‚à‚ ‚è‚Ü‚¹‚ñB
-            Å‚‚̃pƒtƒH[ƒ}ƒ“ƒX‚ƈÀ’萫‚ðŽ‚Á‚½ƒv[ƒ‹‚ðŽÀŒ»‚µ‚½‚¯‚ê‚΁AƒT[ƒhƒp[ƒeƒB‚̃c[ƒ‹‚ð‚¨Š©‚ß‚µ‚Ü‚·B
-            <literal>hibernate.connection.pool_size</literal> ƒvƒƒpƒeƒB‚É
-            “KØ‚ȃRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹ƒTƒCƒY‚ð‹Lq‚µ‚Ä‚­‚¾‚³‚¢B
-            ‚±‚Ì‚Ü‚Ü‚¾‚ÆHibernate‚̃RƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹‚ðŽg‚¢‚Ü‚·B
-            —Ⴆ‚ÎŽŸ‚̂悤‚ÉC3P0‚ðŽg‚¢‚Ü‚·B
+            Hibernateのコネクションプールアルゴリズムは非常に初歩的なものです。
+            これはすぐに始められるようにと用意されたもので、<emphasis>製品として使用することを意図していません</emphasis> 。
+            また、パフォーマンスのテストのためのものでもありません。
+            最高のパフォーマンスと安定性を持ったプールを実現したければ、サードパーティのツールをお勧めします。
+            <literal>hibernate.connection.pool_size</literal> プロパティに
+            適切なコネクションプールサイズを記述してください。
+            このままだとHibernateのコネクションプールを使います。
+            例えば次のようにC3P0を使います。
         </para>
 
         <para>
-            C3P0‚̓I[ƒvƒ“ƒ\[ƒXJDBCƒRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹‚ŁAHibernate‚Ì <literal>lib</literal> 
-            ƒfƒBƒŒƒNƒgƒŠ‚É‚ ‚è‚Ü‚·B‚à‚µA<literal>hibernate.c3p0.*</literal> ƒvƒƒpƒeƒB‚ð
-            ƒZƒbƒg‚·‚ê‚΁AHibernate‚́A <literal>C3P0ConnectionProvider</literal> ‚ðŽg‚¢‚Ü‚·B
-            ‚à‚µProxool‚ðŽg‚¢‚½‚¢ê‡‚́A <literal>hibernate.properties</literal> ƒpƒbƒP[ƒW‚ð
-            ŽQÆ‚µ‚½‚èAHibernate‚ÌWebƒTƒCƒg‚Å‚æ‚葽‚­‚̏î•ñ‚ðŽæ“¾‚µ‚Ä‚­‚¾‚³‚¢B
+            C3P0はオープンソースJDBCコネクションプールで、Hibernateの <literal>lib</literal> 
+            ディレクトリにあります。もし、<literal>hibernate.c3p0.*</literal> プロパティを
+            セットすれば、Hibernateは、 <literal>C3P0ConnectionProvider</literal> を使います。
+            もしProxoolを使いたい場合は、 <literal>hibernate.properties</literal> パッケージを
+            参照したり、HibernateのWebサイトでより多くの情報を取得してください。
         </para>
 
         <para>
-            C3P0—p‚Ì <literal>hibernate.properties</literal> ƒtƒ@ƒCƒ‹‚ð—á‚Æ‚µ‚ÄŽ¦‚µ‚Ü‚·F
+            C3P0用の <literal>hibernate.properties</literal> ファイルを例として示します:
         </para>
 
         <programlisting id="c3p0-configuration" revision="1"><![CDATA[hibernate.connection.driver_class = org.postgresql.Driver
@@ -237,21 +239,21 @@
 hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]></programlisting>
 
         <para>
-            ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒoã‚ÅŽg‚¤ê‡‚́AHibernate‚ðÝ’肵A
-            ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚©‚çƒRƒlƒNƒVƒ‡ƒ“‚ðŽæ“¾‚·‚é‚悤‚É‚µ‚Ä‚­‚¾‚³‚¢B
-            <literal>Datasource</literal> ‚ðJNDI‚É“o˜^‚µ‚Ü‚·B‚»‚µ‚Ä
-            ƒvƒƒpƒeƒB‚ðˆÈ‰º‚̂悤‚ɐݒ肵‚Ä‚­‚¾‚³‚¢B
+            アプリケーションサーバ上で使う場合は、Hibernateを設定し、
+            アプリケーションサーバからコネクションを取得するようにしてください。
+            <literal>Datasource</literal> をJNDIに登録します。そして
+            プロパティを以下のように設定してください。
         </para>
 
         <table frame="topbot">
-            <title>Hibernate ƒf[ƒ^ƒ\[ƒXƒvƒƒpƒeƒB</title>
+            <title>Hibernate データソースプロパティ</title>
             <tgroup cols="2">
                 <colspec colname="c1" colwidth="1*"/>
                 <colspec colname="c2" colwidth="1*"/>
                 <thead>
                     <row>
-                        <entry>ƒvƒƒpƒeƒB–¼</entry>
-                        <entry>ˆÓ–¡</entry>
+                        <entry>プロパティ名</entry>
+                        <entry>意味</entry>
                     </row>
                 </thead>
             <tbody>
@@ -260,7 +262,7 @@
                     <literal>hibernate.connection.datasource</literal>
                 </entry>
                 <entry>
-                    <emphasis>ƒf[ƒ^ƒ\[ƒX‚ÌJNDI–¼</emphasis>
+                    <emphasis>データソースのJNDI名</emphasis>
                 </entry>
             </row>
             <row>
@@ -268,7 +270,7 @@
                     <literal>hibernate.jndi.url</literal>
                 </entry>
                 <entry>
-                    <emphasis>JNDIƒvƒƒoƒCƒ_‚ÌURL</emphasis> (ƒIƒvƒVƒ‡ƒ“)
+                    <emphasis>JNDIプロバイダのURL</emphasis> (オプション)
                 </entry>
             </row>
             <row>
@@ -276,7 +278,7 @@
                     <literal>hibernate.jndi.class</literal>
                 </entry>
                 <entry>
-                    <emphasis>JNDIƒNƒ‰ƒX <literal>InitialContextFactory</literal> </emphasis> (ƒIƒvƒVƒ‡ƒ“) 
+                    <emphasis>JNDIクラス <literal>InitialContextFactory</literal> </emphasis> (オプション) 
                 </entry>
             </row>
             <row>
@@ -284,7 +286,7 @@
                     <literal>hibernate.connection.username</literal>
                 </entry>
                 <entry>
-                    <emphasis>database user</emphasis> (ƒIƒvƒVƒ‡ƒ“)
+                    <emphasis>database user</emphasis> (オプション)
                 </entry>
             </row>
             <row>
@@ -292,7 +294,7 @@
                     <literal>hibernate.connection.password</literal>
                 </entry>
                 <entry>
-                    <emphasis>database user password</emphasis> (ƒIƒvƒVƒ‡ƒ“)
+                    <emphasis>database user password</emphasis> (オプション)
                 </entry>
             </row>
             </tbody>
@@ -300,61 +302,61 @@
         </table>
 
         <para>
-            ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚©‚ç’ñ‹Ÿ‚³‚ꂽJNDIƒf[ƒ^ƒ\[ƒX‚ðŽg‚¤
-            <literal>hibernate.properties</literal> ƒtƒ@ƒCƒ‹‚Ì—á‚ðŽ¦‚µ‚Ü‚·F
+            アプリケーションサーバから提供されたJNDIデータソースを使う
+            <literal>hibernate.properties</literal> ファイルの例を示します:
         </para>
 
         <programlisting><![CDATA[hibernate.connection.datasource = java:/comp/env/jdbc/test
-hibernate.transaction.factory_class = \
+hibernate.transaction.factory_class = ¥
     org.hibernate.transaction.JTATransactionFactory
-hibernate.transaction.manager_lookup_class = \
+hibernate.transaction.manager_lookup_class = ¥
     org.hibernate.transaction.JBossTransactionManagerLookup
 hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]></programlisting>
 
         <para>
-            JNDIƒf[ƒ^ƒ\[ƒX‚©‚çŽæ“¾‚µ‚½JDBCƒRƒlƒNƒVƒ‡ƒ“‚́AƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚Ì
-            ƒRƒ“ƒeƒiŠÇ—ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÉŽ©“®“I‚ÉŽQ‰Á‚µ‚Ü‚·B
+            JNDIデータソースから取得したJDBCコネクションは、アプリケーションサーバの
+            コンテナ管理トランザクションに自動的に参加します。
         </para>
 
         <para>
-            ”CˆÓ‚̃RƒlƒNƒVƒ‡ƒ“ƒvƒƒpƒeƒB‚́A—^‚¦‚ç‚ꂽh <literal>hibernate.connnection</literal> h
-            ƒvƒƒpƒeƒB–¼‚É‚æ‚Á‚Ä—^‚¦‚ç‚ê‚Ü‚·B—Ⴆ‚΁A <literal>charSet</literal> ‚ðÝ’肵‚½‚¢ê‡‚́A
-            <literal>hibernate.connection.charSet</literal> ‚ðŽg‚¢‚Ü‚·B
+            任意のコネクションプロパティは、与えられた” <literal>hibernate.connnection</literal> ”
+            プロパティ名によって与えられます。例えば、 <literal>charSet</literal> を設定したい場合は、
+            <literal>hibernate.connection.charSet</literal> を使います。
         </para>
 
         <para>
-            JDBCƒRƒlƒNƒVƒ‡ƒ“‚ðŽæ“¾‚·‚éí—ª‚ðŽ‚Â“ÆŽ©‚̃vƒ‰ƒOƒCƒ“‚ð’è‹`‚·‚éê‡‚́A
-            <literal>org.hibernate.connection.ConnectionProvider</literal> ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ð
-            ŽÀ‘•‚µ‚Ä‚­‚¾‚³‚¢B‚»‚µ‚āAŽÀ‘•ƒNƒ‰ƒX‚ð <literal>hibernate.connection.provider_class</literal> 
-            ‚ɐݒ肵‚Ä‚­‚¾‚³‚¢B
+            JDBCコネクションを取得する戦略を持つ独自のプラグインを定義する場合は、
+            <literal>org.hibernate.connection.ConnectionProvider</literal> インターフェイスを
+            実装してください。そして、実装クラスを <literal>hibernate.connection.provider_class</literal> 
+            に設定してください。
         </para>
 
     </sect1>
 
     <sect1 id="configuration-optional" revision="1">
-        <title>ƒIƒvƒVƒ‡ƒ“Ý’èƒvƒƒpƒeƒB</title>
+        <title>オプション設定プロパティ</title>
         
         <para>
-            ‚±‚ê‚ç‚̃vƒƒpƒeƒB‚ÍHibernate‚Ì‹““®‚𐧌䂷‚é‚à‚Ì‚Å‚·B
-            ‚±‚ê‚ç‚̃vƒƒpƒeƒB‚Í‚·‚ׂđÓ–‚ȃfƒtƒHƒ‹ƒg’l‚ª‚ ‚èA”CˆÓ‚Őݒ肵‚Ü‚·B
+            これらのプロパティはHibernateの挙動を制御するものです。
+            これらのプロパティはすべて妥当なデフォルト値があり、任意で設定します。
         </para>
 
         <para>
-            <emphasis>’ˆÓF‚±‚ê‚ç‚̃vƒƒpƒeƒB‚Í"ƒVƒXƒeƒ€ƒŒƒxƒ‹"‚Ì‚Ý‚Å‚·B</emphasis> 
-            ƒVƒXƒeƒ€ƒŒƒxƒ‹ƒvƒƒpƒeƒB‚Í <literal>java -Dproperty=value</literal>  A‚à‚µ‚­‚Í
-            <literal>hibernate.properties</literal> ‚ł̂ݐݒè‰Â”\‚Å‚·B
-            ‚»‚êˆÈŠO‚̐ݒè•û–@‚Í <emphasis>‚ ‚è‚Ü‚¹‚ñ</emphasis> B
+            <emphasis>注意:これらのプロパティは"システムレベル"のみです。</emphasis> 
+            システムレベルプロパティは <literal>java -Dproperty=value</literal>  、もしくは
+            <literal>hibernate.properties</literal> でのみ設定可能です。
+            それ以外の設定方法は <emphasis>ありません</emphasis> 。
         </para>
 
         <table frame="topbot" id="configuration-optional-properties" revision="8">
-            <title>HibernateÝ’èƒvƒƒpƒeƒB</title>
+            <title>Hibernate設定プロパティ</title>
             <tgroup cols="2">
                 <colspec colname="c1" colwidth="1*"/>
                 <colspec colname="c2" colwidth="1*"/>
                 <thead>
                     <row>
-                        <entry>ƒvƒƒpƒeƒB–¼</entry>
-                        <entry>ˆÓ–¡</entry>
+                        <entry>プロパティ名</entry>
+                        <entry>意味</entry>
                     </row>
                 </thead>
                 <tbody>
@@ -363,10 +365,10 @@
                             <literal>hibernate.dialect</literal>
                         </entry>
                         <entry>
-                            Hibernate <literal>Dialect</literal> ƒNƒ‰ƒX–¼‚ª“ü‚è‚Ü‚·B
-                            ‚±‚ê‚̓ŠƒŒ[ƒVƒ‡ƒiƒ‹ƒf[ƒ^ƒx[ƒX‚²‚ƂɍœK‰»‚³‚ꂽSQL‚𐶐¬‚µ‚Ü‚·B
+                            Hibernate <literal>Dialect</literal> クラス名が入ります。
+                            これはリレーショナルデータベースごとに最適化されたSQLを生成します。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>full.classname.of.Dialect</literal>
                             </para>
                         </entry>
@@ -376,11 +378,11 @@
                             <literal>hibernate.show_sql</literal>
                         </entry>
                         <entry>
-                            ”­s‚³‚ꂽ‚·‚ׂĂÌSQL‚ðƒRƒ“ƒ\[ƒ‹‚ɏo—Í‚µ‚Ü‚·B
-                            ‚±‚ê‚̓ƒOƒJƒeƒSƒŠ‚Ì <literal>org.hibernate.SQL</literal> 
-                            ‚É <literal>debug</literal> ‚ðÝ’è‚·‚é•û–@‚Ì‘ã‘ÖŽè’i‚Å‚·B
+                            発行されたすべてのSQLをコンソールに出力します。
+                            これはログカテゴリの <literal>org.hibernate.SQL</literal> 
+                            に <literal>debug</literal> を設定する方法の代替手段です。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>true</literal> | <literal>false</literal>
                             </para>
                         </entry>
@@ -390,9 +392,9 @@
                             <literal>hibernate.format_sql</literal>
                         </entry>
                         <entry>
-                            ƒƒO‚ƃRƒ“ƒ\[ƒ‹‚ÌSQL‚ð”ü‚µ‚­•\Ž¦‚µ‚Ü‚·B
+                            ログとコンソールのSQLを美しく表示します。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>true</literal> | <literal>false</literal>
                             </para>
                         </entry>
@@ -402,9 +404,9 @@
                             <literal>hibernate.default_schema</literal>
                         </entry>
                         <entry>
-                            ¶¬‚³‚ê‚éSQL•¶‚̃e[ƒuƒ‹‚ɐݒ肷‚éƒXƒL[ƒ}/ƒe[ƒuƒ‹ƒXƒy[ƒX‚Å‚·B
+                            生成されるSQL文のテーブルに設定するスキーマ/テーブルスペースです。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>SCHEMA_NAME</literal>
                             </para>
                         </entry>
@@ -414,9 +416,9 @@
                             <literal>hibernate.default_catalog</literal>
                         </entry>
                         <entry>
-                            ¶¬‚³‚ê‚éSQL•¶‚̃e[ƒuƒ‹‚ɐݒ肷‚éƒJƒ^ƒƒO‚Å‚·B
+                            生成されるSQL文のテーブルに設定するカタログです。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>CATALOG_NAME</literal>
                             </para>
                         </entry>
@@ -426,9 +428,9 @@
                             <literal>hibernate.session_factory_name</literal>
                         </entry>
                         <entry>
-                            <literal>SessionFactory</literal> ‚͐¶¬ŒãA‚±‚Ì–¼‘O‚ÅJNDI‚É“o˜^‚³‚ê‚Ü‚·B
+                            <literal>SessionFactory</literal> は生成後、この名前でJNDIに登録されます。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>jndi/composite/name</literal>
                             </para>
                         </entry>
@@ -438,12 +440,12 @@
                             <literal>hibernate.max_fetch_depth</literal>
                         </entry>
                         <entry>
-                            ŠO•”Œ‹‡ƒtƒFƒbƒ`‚̍őå[“x‚ðÝ’肵‚Ü‚·BŒ‹‡‚·‚éŠÖ˜A‚Í
-                            ‘ΈêŠÖ˜A‚̂݁iˆê‘ΈêA‘½‘Έêj‚Å‚·B
-                            <literal>0</literal> ‚ðŽw’è‚·‚é‚ÆŠO•”Œ‹‡ƒtƒFƒbƒ`‚Í–³Œø‚É‚È‚è‚Ü‚·B
+                            外部結合フェッチの最大深度を設定します。結合する関連は
+                            対一関連のみ(一対一、多対一)です。
+                            <literal>0</literal> を指定すると外部結合フェッチは無効になります。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
-                                „§‚·‚é’l‚Í <literal>0</literal> ‚©‚ç <literal>3</literal> ‚Å‚·B
+                                <emphasis role="strong">例:</emphasis> 
+                                推奨する値は <literal>0</literal> から <literal>3</literal> です。
                             </para>
                         </entry>
                     </row>
@@ -452,10 +454,10 @@
                             <literal>hibernate.default_batch_fetch_size</literal>
                         </entry>
                         <entry>
-                            ŠÖ˜AƒtƒFƒbƒ`‚̃fƒtƒHƒ‹ƒgƒoƒbƒ`ƒTƒCƒY‚ðŽw’肵‚Ü‚·B
+                            関連フェッチのデフォルトバッチサイズを指定します。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
-                                „§‚·‚é’l‚Í <literal>4</literal> , <literal>8</literal> , <literal>16</literal> ‚Å‚·B
+                                <emphasis role="strong">例:</emphasis> 
+                                推奨する値は <literal>4</literal> , <literal>8</literal> , <literal>16</literal> です。
                             </para>
                         </entry>
                     </row>
@@ -464,8 +466,8 @@
                             <literal>hibernate.default_entity_mode</literal>
                         </entry>
                         <entry>
-                            <literal>SessionFactory</literal> ‚©‚çƒZƒbƒVƒ‡ƒ“‚ðƒI[ƒvƒ“‚µ‚½‚Æ‚«‚É
-                            Žg—p‚·‚éƒGƒ“ƒeƒBƒeƒB‚̃fƒtƒHƒ‹ƒgƒ‚[ƒh‚ðÝ’肵‚Ü‚·B
+                            <literal>SessionFactory</literal> からセッションをオープンしたときに
+                            使用するエンティティのデフォルトモードを設定します。
                             <para>
                                 <literal>dynamic-map</literal>, <literal>dom4j</literal>,
                                 <literal>pojo</literal>
@@ -477,10 +479,10 @@
                             <literal>hibernate.order_updates</literal>
                         </entry>
                         <entry>
-                            €–Ú‚ªXV‚³‚ꂽ‚Æ‚«‚ɁA•Ê‚ÌSQL‚ÅŽåƒL[‚ðXV‚·‚邱‚Æ‚ð‹­§‚µ‚Ü‚·B
-                            ‚±‚̏ꍇA“¯ŽžŽÀs‰Â”\‚ȃVƒXƒeƒ€‚ł́A‚Ü‚ê‚ɃfƒbƒhƒƒbƒN‚ª”­¶‚·‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B
+                            項目が更新されたときに、別のSQLで主キーを更新することを強制します。
+                            この場合、同時実行可能なシステムでは、まれにデッドロックが発生する可能性があります。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>true</literal> | <literal>false</literal>
                             </para>
                         </entry>
@@ -490,10 +492,10 @@
                             <literal>hibernate.generate_statistics</literal>
                         </entry>
                         <entry>
-                            —LŒø‚̏ꍇAHibernate‚̓pƒtƒH[ƒ}ƒ“ƒXƒ`ƒ…[ƒjƒ“ƒO‚É
-                            —LŒø‚È“Œvî•ñ‚ðŽûW‚µ‚Ü‚·B
+                            有効の場合、Hibernateはパフォーマンスチューニングに
+                            有効な統計情報を収集します。
                             <para>
-                                <emphasis role="strong">—áF</emphasis>
+                                <emphasis role="strong">例:</emphasis>
                                 <literal>true</literal> | <literal>false</literal>
                             </para>
                         </entry>
@@ -503,10 +505,10 @@
                             <literal>hibernate.use_identifer_rollback</literal>
                         </entry>
                         <entry>
-                            —LŒø‚̏ꍇAƒIƒuƒWƒFƒNƒg‚ªíœ‚³‚ꂽ‚Æ‚«‚É
-                            Ž¯•ÊŽqƒvƒƒpƒeƒB‚ðƒŠƒZƒbƒg‚µAƒfƒtƒHƒ‹ƒg’l‚É‚µ‚½‚à‚̂𐶐¬‚µ‚Ü‚·B
+                            有効の場合、オブジェクトが削除されたときに
+                            識別子プロパティをリセットし、デフォルト値にしたものを生成します。
                             <para>
-                                <emphasis role="strong">—áF</emphasis>
+                                <emphasis role="strong">例:</emphasis>
                                 <literal>true</literal> | <literal>false</literal>
                             </para>
                         </entry>
@@ -516,10 +518,10 @@
                             <literal>hibernate.use_sql_comments</literal>
                         </entry>
                         <entry>
-                            —LŒø‚̏ꍇASQL“à‚ɃRƒƒ“ƒg‚𐶐¬‚µ‚Ü‚·B‚±‚ê‚̓fƒoƒbƒN‚ð—eˆÕ‚É‚µ‚Ü‚·B
-                            ƒfƒtƒHƒ‹ƒg‚Ì’l‚Í <literal>false</literal> ‚Å‚·B
+                            有効の場合、SQL内にコメントを生成します。これはデバックを容易にします。
+                            デフォルトの値は <literal>false</literal> です。
                             <para>
-                                <emphasis role="strong">—áF</emphasis>
+                                <emphasis role="strong">例:</emphasis>
                                 <literal>true</literal> | <literal>false</literal>
                             </para>
                         </entry>
@@ -529,14 +531,14 @@
         </table>
 
         <table frame="topbot" id="configuration-jdbc-properties" revision="8">
-            <title>Hibernate JDBC ‚ƃRƒlƒNƒVƒ‡ƒ“ƒvƒƒpƒeƒB</title>
+            <title>Hibernate JDBC とコネクションプロパティ</title>
             <tgroup cols="2">
                 <colspec colname="c1" colwidth="1*"/>
                 <colspec colname="c2" colwidth="1*"/>
                 <thead>
                     <row>
-                        <entry>ƒvƒƒpƒeƒB–¼</entry>
-                        <entry>ˆÓ–¡</entry>
+                        <entry>プロパティ名</entry>
+                        <entry>意味</entry>
                     </row>
                 </thead>
                 <tbody>
@@ -545,8 +547,8 @@
                             <literal>hibernate.jdbc.fetch_size</literal>
                         </entry>
                         <entry>
-                            ’l‚ª0‚Å‚È‚¢ê‡AJDBCƒtƒFƒbƒ`ƒTƒCƒY‚ðŒˆ’è‚µ‚Ü‚·
-                            ( <literal>Statement.setFetchSize()</literal> ‚ðŒÄ‚Ñ‚Ü‚·)B
+                            値が0でない場合、JDBCフェッチサイズを決定します
+                            ( <literal>Statement.setFetchSize()</literal> を呼びます)。
                         </entry>
                     </row>
                     <row>
@@ -554,10 +556,10 @@
                             <literal>hibernate.jdbc.batch_size</literal>
                         </entry>
                         <entry>
-                            ’l‚ª0‚Å‚È‚¢ê‡AHibernate‚ªJDBC2ƒoƒbƒ`XV‚ðŽg—p‚µ‚Ü‚·B
+                            値が0でない場合、HibernateがJDBC2バッチ更新を使用します。
                             <para>
-                                <emphasis role="strong">—áF</emphasis>
-                                „§‚·‚é’l‚Í <literal>5</literal> ‚©‚ç <literal>30</literal> ‚Å‚·B
+                                <emphasis role="strong">例:</emphasis>
+                                推奨する値は <literal>5</literal> から <literal>30</literal> です。
                             </para>
                         </entry>
                     </row>
@@ -566,13 +568,13 @@
                             <literal>hibernate.jdbc.batch_versioned_data</literal>
                         </entry>
                         <entry>
-                            ‚à‚µJDBCƒhƒ‰ƒCƒo‚ª <literal>executeBatch()</literal> ‚É‚æ‚Á‚Đ³Šm‚ȍs”‚ð
-                            •Ô‚·ê‡A‚±‚̃vƒƒpƒeƒB‚ð <literal>true</literal> ‚É‚µ‚Ä‚­‚¾‚³‚¢
-                            i’ʏí‚Í‚±‚̃IƒvƒVƒ‡ƒ“‚ðON‚É‚µ‚Ü‚·jB
-                            Hibernate‚́AŽ©“®ƒo[ƒWƒ‡ƒ“ƒf[ƒ^‚Ì‚½‚߃oƒbƒ`DML‚ðŽg‚¢‚Ü‚·B
-                            ƒfƒtƒHƒ‹ƒg‚Ì’l‚Í <literal>false</literal> ‚Å‚·B
+                            もしJDBCドライバが <literal>executeBatch()</literal> によって正確な行数を
+                            返す場合、このプロパティを <literal>true</literal> にしてください
+                            (通常はこのオプションをONにします)。
+                            Hibernateは、自動バージョンデータのためバッチDMLを使います。
+                            デフォルトの値は <literal>false</literal> です。
                             <para>
-                                <emphasis role="strong">—áF</emphasis>
+                                <emphasis role="strong">例:</emphasis>
                                 <literal>true</literal> | <literal>false</literal>
                             </para>
                         </entry>
@@ -582,10 +584,10 @@
                             <literal>hibernate.jdbc.factory_class</literal>
                         </entry>
                         <entry>
-                            ƒJƒXƒ^ƒ€ <literal>Batcher</literal> ‚ð‘I‚Ñ‚Ü‚·B
-                            ‚Ù‚Æ‚ñ‚ǂ̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ɁA‚±‚̐ݒè‚Í•K—v‚ ‚è‚Ü‚¹‚ñB
+                            カスタム <literal>Batcher</literal> を選びます。
+                            ほとんどのアプリケーションに、この設定は必要ありません。
                             <para>
-                                <emphasis role="strong">—áF</emphasis>
+                                <emphasis role="strong">例:</emphasis>
                                 <literal>classname.of.BatcherFactory</literal>
                             </para>
                         </entry>
@@ -595,11 +597,11 @@
                             <literal>hibernate.jdbc.use_scrollable_resultset</literal>
                         </entry>
                         <entry>
-                            ƒXƒNƒ[ƒ‹‰Â”\‚ȃŠƒUƒ‹ƒgƒZƒbƒg‚ðAHibernate‚ªŽg—p‚µ‚Ü‚·B
-                            ‚±‚̃vƒƒpƒeƒB‚́AJDBCƒRƒlƒNƒVƒ‡ƒ“‚ªƒRƒlƒNƒVƒ‡ƒ“ƒƒ^ƒf[ƒ^‚ð
-                            ƒTƒ|[ƒg‚µ‚Ä‚¢‚邱‚Æ‚ª•K{ðŒ‚É‚È‚è‚Ü‚·B
+                            スクロール可能なリザルトセットを、Hibernateが使用します。
+                            このプロパティは、JDBCコネクションがコネクションメタデータを
+                            サポートしていることが必須条件になります。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>true</literal> | <literal>false</literal>
                             </para>
                         </entry>
@@ -609,10 +611,10 @@
                             <literal>hibernate.jdbc.use_streams_for_binary</literal>
                         </entry>
                         <entry>
-                            JDBC‚Ö/‚©‚ç <literal>binary</literal> ‚â <literal>serializable</literal> 
-                            ‚̏‘‚«ž‚Ý/“ǂݍž‚݃XƒgƒŠ[ƒ€‚ðŽg‚¢‚Ü‚·(ƒVƒXƒeƒ€ƒŒƒxƒ‹‚̃vƒƒpƒeƒB)B
+                            JDBCへ/から <literal>binary</literal> や <literal>serializable</literal> 
+                            の書き込み/読み込みストリームを使います(システムレベルのプロパティ)。
                             <para>
-                                <emphasis role="strong">—áF</emphasis>
+                                <emphasis role="strong">例:</emphasis>
                                 <literal>true</literal> | <literal>false</literal>
                             </para>
                         </entry>
@@ -622,13 +624,13 @@
                             <literal>hibernate.jdbc.use_get_generated_keys</literal>
                         </entry>
                         <entry>
-                            ‘}“ü‚ÌŒã‚ÉŽ©“®¶¬‚³‚ꂽŽåƒL[‚ðŽæ“¾‚·‚邽‚ß‚Ì 
-                            JDBC3 <literal>PreparedStatement.getGeneratedKeys()</literal> ‚ÌŽg—p‚ð—LŒø‚É‚µ‚Ü‚·B
-                            ‚±‚ê‚ÍJDBC3+ƒhƒ‰ƒCƒo‚ÆJRE1.4+‚ð•K—v‚Æ‚µA
-                            ‚à‚µHibernate‚ÌŽ¯•ÊŽqƒWƒFƒlƒŒ[ƒ^‚É–â‘肪”­¶‚·‚é‚悤‚È‚çfalse‚ɐݒ肵‚Ä‚­‚¾‚³‚¢B
-                            ƒfƒtƒHƒ‹ƒg‚ł̓RƒlƒNƒVƒ‡ƒ“ƒƒ^ƒf[ƒ^‚ðŽg‚¢ƒhƒ‰ƒCƒo‚Ì”\—Í‚ðŒˆ’è‚µ‚Ü‚·B
+                            挿入の後に自動生成された主キーを取得するための 
+                            JDBC3 <literal>PreparedStatement.getGeneratedKeys()</literal> の使用を有効にします。
+                            これはJDBC3+ドライバとJRE1.4+を必要とし、
+                            もしHibernateの識別子ジェネレータに問題が発生するようならfalseに設定してください。
+                            デフォルトではコネクションメタデータを使いドライバの能力を決定します。
                             <para>
-                                <emphasis role="strong">—áF</emphasis>
+                                <emphasis role="strong">例:</emphasis>
                                 <literal>true|false</literal>
                             </para>
                         </entry>
@@ -638,10 +640,10 @@
                             <literal>hibernate.connection.provider_class</literal>
                         </entry>
                         <entry>
-                            JDBCƒRƒlƒNƒVƒ‡ƒ“‚ðHibernate‚É’ñ‹Ÿ‚·‚é“ÆŽ©‚Ì <literal>ConnectionProvider</literal> ‚Ì
-                            –¼‘O‚ðŽw’肵‚Ü‚·B
+                            JDBCコネクションをHibernateに提供する独自の <literal>ConnectionProvider</literal> の
+                            名前を指定します。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>classname.of.ConnectionProvider</literal>
                             </para>
                         </entry>
@@ -651,11 +653,11 @@
                         <literal>hibernate.connection.isolation</literal>
                     </entry>
                     <entry>
-                        JDBCƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“•ª—£ƒŒƒxƒ‹‚ðÝ’肵‚Ü‚·B
-                        ‘Ó–‚È’l‚𒲂ׂ邽‚ß‚É‚Í <literal>java.sql.Connection</literal> ‚ðƒ`ƒFƒbƒN‚µ‚Ä‚­‚¾‚³‚¢B
-                        ‚µ‚©‚µŽg—p‚·‚éƒf[ƒ^ƒx[ƒX‚ªA‚·‚ׂĂ̕ª—£ƒŒƒxƒ‹‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚é‚Æ‚ÍŒÀ‚è‚Ü‚¹‚ñB
+                        JDBCトランザクション分離レベルを設定します。
+                        妥当な値を調べるためには <literal>java.sql.Connection</literal> をチェックしてください。
+                        しかし使用するデータベースが、すべての分離レベルをサポートしているとは限りません。
                         <para>
-                            <emphasis role="strong">—áF</emphasis> 
+                            <emphasis role="strong">例:</emphasis> 
                             <literal>1, 2, 4, 8</literal>
                         </para>
                     </entry>
@@ -665,9 +667,9 @@
                             <literal>hibernate.connection.autocommit</literal>
                         </entry>
                         <entry>
-                            ƒv[ƒ‹‚³‚ê‚Ä‚¢‚éJDBCƒRƒlƒNƒVƒ‡ƒ“‚ÌŽ©“®ƒRƒ~ƒbƒg‚ð—LŒø‚É‚·‚éi”ñ„§jB
+                            プールされているJDBCコネクションの自動コミットを有効にする(非推奨)。
                             <para>
-                                <emphasis role="strong">—áF</emphasis>
+                                <emphasis role="strong">例:</emphasis>
                                 <literal>true</literal> | <literal>false</literal>
                             </para>
                         </entry>
@@ -677,28 +679,28 @@
                             <literal>hibernate.connection.release_mode</literal>
                         </entry>
                         <entry>
-                            Hibernate‚ªJDBCƒRƒlƒNƒVƒ‡ƒ“‚ðƒŠƒŠ[ƒX‚·‚é‚©‚ðŽw’肵‚Ü‚·BƒfƒtƒHƒ‹ƒg‚Å‚Í
-                            ƒZƒbƒVƒ‡ƒ“‚ª–¾Ž¦“I‚ɃNƒ[ƒY‚Ü‚½‚͐ؒf‚³‚ê‚Ä‚àƒRƒlƒNƒVƒ‡ƒ“‚Í•ÛŽ‚µ‚Ü‚·B
-                            ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚ÌJTAƒf[ƒ^ƒ\[ƒX‚̏ꍇA
-                            ‚·‚ׂĂÌJDBCƒR[ƒ‹‚ÌŒãA‹­§“I‚ɃRƒlƒNƒVƒ‡ƒ“‚ðƒŠƒŠ[ƒX‚·‚邽‚ß‚É <literal>after_statement</literal> ‚ð
-                            Žg‚Á‚Ä‚­‚¾‚³‚¢B
-                            ”ñJTAƒRƒlƒNƒVƒ‡ƒ“‚̏ꍇAŠeƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªI—¹‚µ‚½‚Æ‚«‚É <literal>after_transaction</literal> 
-                            ‚ðŽg‚¢AƒRƒlƒNƒVƒ‡ƒ“‚ðƒŠƒŠ[ƒX‚µ‚Ä‚­‚¾‚³‚¢B
-                            <literal>auto</literal> ‚É‚·‚é‚ƁA
-                            JTA‚âCMTƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̏ꍇA <literal>after_statement</literal> ‚ŃNƒ[ƒY‚µA
-                            JDBCƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̏ꍇA <literal>after_transaction</literal> ‚ŃNƒ[ƒY‚µ‚Ü‚·B
+                            HibernateがJDBCコネクションをリリースするかを指定します。デフォルトでは
+                            セッションが明示的にクローズまたは切断されてもコネクションは保持します。
+                            アプリケーションサーバのJTAデータソースの場合、
+                            すべてのJDBCコールの後、強制的にコネクションをリリースするために <literal>after_statement</literal> を
+                            使ってください。
+                            非JTAコネクションの場合、各トランザクションが終了したときに <literal>after_transaction</literal> 
+                            を使い、コネクションをリリースしてください。
+                            <literal>auto</literal> にすると、
+                            JTAやCMTトランザクションの場合、 <literal>after_statement</literal> でクローズし、
+                            JDBCトランザクションの場合、 <literal>after_transaction</literal> でクローズします。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</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> 
-                                ‚ÌŽÀ‘•‚É‚æ‚Á‚āAƒRƒlƒNƒVƒ‡ƒ“‚̃ŠƒŠ[ƒXƒ‚[ƒh‚ðÝ’肵‚Ü‚·B
-                                <xref linkend="architecture-current-session"/> ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                                注意してください。この設定は <literal>SessionFactory.openSession</literal> から
+                                取得した <literal>Session</literal> だけに効果があります。
+                                <literal>SessionFactory.getCurrentSession</literal> を通じて取得した
+                                <literal>Session</literal> では、<literal>CurrentSessionContext</literal> 
+                                の実装によって、コネクションのリリースモードを設定します。
+                                <xref linkend="architecture-current-session"/> を参照してください。
                             </para>
                         </entry>
                     </row>
@@ -707,8 +709,8 @@
                         <literal>hibernate.connection.<emphasis>&lt;propertyName&gt;</emphasis></literal>
                     </entry>
                     <entry>
-                        JDBC‚Ì <literal>propertyName</literal> ƒvƒƒpƒeƒB‚ðA
-                        <literal>DriverManager.getConnection()</literal> ‚É“n‚µ‚Ü‚·B
+                        JDBCの <literal>propertyName</literal> プロパティを、
+                        <literal>DriverManager.getConnection()</literal> に渡します。
                     </entry>
                     </row>
                     <row>
@@ -716,8 +718,8 @@
                             <literal>hibernate.jndi.<emphasis>&lt;propertyName&gt;</emphasis></literal>
                         </entry>
                         <entry>
-                            <literal>propertyName</literal> ƒvƒƒpƒeƒB‚ðA
-                            JNDI <literal>InitialContextFactory</literal> ‚É“n‚µ‚Ü‚·B
+                            <literal>propertyName</literal> プロパティを、
+                            JNDI <literal>InitialContextFactory</literal> に渡します。
                         </entry>
                     </row>
                 </tbody>
@@ -725,14 +727,14 @@
         </table>
 
         <table frame="topbot" id="configuration-cache-properties" revision="7">
-            <title>Hibernate ƒLƒƒƒbƒVƒ…ƒvƒƒpƒeƒB</title>
+            <title>Hibernate キャッシュプロパティ</title>
             <tgroup cols="2">
                 <colspec colname="c1" colwidth="1*"/>
                 <colspec colname="c2" colwidth="1*"/>
                 <thead>
                     <row>
-                        <entry>ƒvƒƒpƒeƒB–¼</entry>
-                        <entry>ˆÓ–¡</entry>
+                        <entry>プロパティ名</entry>
+                        <entry>意味</entry>
                     </row>
                 </thead>
                 <tbody>
@@ -741,9 +743,9 @@
                             <literal>hibernate.cache.provider_class</literal>
                         </entry>
                         <entry>
-                            ƒJƒXƒ^ƒ€ <literal>CacheProvider</literal> ‚̃Nƒ‰ƒX–¼‚Å‚·B
+                            カスタム <literal>CacheProvider</literal> のクラス名です。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>classname.of.CacheProvider</literal> 
                             </para>
                         </entry>
@@ -753,12 +755,12 @@
                             <literal>hibernate.cache.use_minimal_puts</literal>
                         </entry>
                         <entry>
-                            ‘‚«ž‚Ý‚ðÅ¬ŒÀ‚É‚·‚邽‚߂ɁA“ñŽŸƒLƒƒƒbƒVƒ…‚Ì‘€ì‚ðÅ“K‰»‚µ‚Ü‚·B
-                            ‚»‚Ì‘ã‚í‚è‚ɁA“ǂݍž‚Ý‚ª‚æ‚è•p”É‚É”­¶‚·‚é‚悤‚É‚È‚è‚Ü‚·B
-                            ‚±‚̃ZƒbƒeƒBƒ“ƒO‚̓Nƒ‰ƒXƒ^ƒLƒƒƒbƒVƒ…‚Å–ð‚É—§‚¿‚Ü‚·B
-                            Hibernate3‚ł̓Nƒ‰ƒXƒ^ƒLƒƒƒbƒVƒ…ŽÀ‘•—p‚ɃfƒtƒHƒ‹ƒg‚Å‚Í—LŒø‚É‚È‚Á‚Ä‚¢‚Ü‚·B
+                            書き込みを最小限にするために、二次キャッシュの操作を最適化します。
+                            その代わりに、読み込みがより頻繁に発生するようになります。
+                            このセッティングはクラスタキャッシュで役に立ちます。
+                            Hibernate3ではクラスタキャッシュ実装用にデフォルトでは有効になっています。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>true|false</literal>
                             </para>
                         </entry>
@@ -768,9 +770,9 @@
                             <literal>hibernate.cache.use_query_cache</literal>
                         </entry>
                         <entry>
-                            “Á’è‚̃NƒGƒŠ‚ªƒLƒƒƒbƒVƒ…‰Â”\‚ȏꍇ‚ɁAƒNƒGƒŠƒLƒƒƒbƒVƒ…‚ð—LŒø‚É‚µ‚Ü‚·B
+                            特定のクエリがキャッシュ可能な場合に、クエリキャッシュを有効にします。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>true|false</literal>
                             </para>
                         </entry>
@@ -780,11 +782,11 @@
                             <literal>hibernate.cache.use_second_level_cache</literal>
                         </entry>
                         <entry>
-                            “ñŽŸƒLƒƒƒbƒVƒ…‚ðŠ®‘S‚É–³Œø‚É‚·‚éê‡‚ÉŽg‚¢‚Ü‚·B
-                            ƒfƒtƒHƒ‹ƒg‚Å‚Í—LŒø‚ŁAƒNƒ‰ƒX‚Ì <literal>&lt;cache&gt;</literal> ƒ}ƒbƒsƒ“ƒO
-                            ‚Ő§Œä‚µ‚Ü‚·B
+                            二次キャッシュを完全に無効にする場合に使います。
+                            デフォルトでは有効で、クラスの <literal>&lt;cache&gt;</literal> マッピング
+                            で制御します。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>true|false</literal>
                             </para>
                         </entry>
@@ -794,10 +796,10 @@
                             <literal>hibernate.cache.query_cache_factory</literal>
                         </entry>
                         <entry>
-                            ƒJƒXƒ^ƒ€ <literal>QueryCache</literal> ƒCƒ“ƒ^[ƒtƒFƒCƒX‚̃Nƒ‰ƒX–¼‚ð
-                            Žw’肵‚Ü‚·BƒfƒtƒHƒ‹ƒg‚Å‚Í <literal>StandardQueryCache</literal> ‚É‚È‚è‚Ü‚·B
+                            カスタム <literal>QueryCache</literal> インターフェイスのクラス名を
+                            指定します。デフォルトでは <literal>StandardQueryCache</literal> になります。
                             <para>
-                                <emphasis role="strong">—áF</emphasis>
+                                <emphasis role="strong">例:</emphasis>
                                 <literal>classname.of.QueryCache</literal>
                             </para>
                         </entry>
@@ -807,9 +809,9 @@
                             <literal>hibernate.cache.region_prefix</literal>
                         </entry>
                         <entry>
-                            “ñŽŸƒLƒƒƒbƒVƒ…‚̗̈於‚̐ړªŽ«‚Å‚·B
+                            二次キャッシュの領域名の接頭辞です。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>prefix</literal>
                             </para>
                         </entry>
@@ -819,9 +821,9 @@
                             <literal>hibernate.cache.use_structured_entries</literal>
                         </entry>
                         <entry>
-                            “ñŽŸƒLƒƒƒbƒVƒ…‚ÉŠi”[‚·‚éƒf[ƒ^‚ðAl‚ª—‰ð‚µ‚â‚·‚¢ƒtƒH[ƒ}ƒbƒg‚É‚µ‚Ü‚·B
+                            二次キャッシュに格納するデータを、人が理解しやすいフォーマットにします。
                             <para>
-                                <emphasis role="strong">—áF</emphasis>
+                                <emphasis role="strong">例:</emphasis>
                                 <literal>true|false</literal>
                             </para>
                         </entry>
@@ -831,14 +833,14 @@
         </table>
 
         <table frame="topbot" id="configuration-transaction-properties" revision="9">
-            <title>Hibernate ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒvƒƒpƒeƒB</title>
+            <title>Hibernate トランザクションプロパティ</title>
             <tgroup cols="2">
                 <colspec colname="c1" colwidth="1*"/>
                 <colspec colname="c2" colwidth="1*"/>
                 <thead>
                     <row>
-                        <entry>ƒvƒƒpƒeƒB–¼</entry>
-                        <entry>ˆÓ–¡</entry>
+                        <entry>プロパティ名</entry>
+                        <entry>意味</entry>
                     </row>
                 </thead>
                 <tbody>
@@ -847,11 +849,11 @@
                             <literal>hibernate.transaction.factory_class</literal>
                         </entry>
                         <entry>
-                            Hibernate  <literal>Transaction</literal> API‚ƈꏏ‚ÉŽg‚í‚ê‚é 
-                            <literal>TransactionFactory</literal> ‚̃Nƒ‰ƒX–¼‚Å‚·B
-                            iƒfƒtƒHƒ‹ƒg‚Å‚Í <literal>JDBCTransactionFactory</literal> ‚Å‚·jB
+                            Hibernate  <literal>Transaction</literal> APIと一緒に使われる 
+                            <literal>TransactionFactory</literal> のクラス名です。
+                            (デフォルトでは <literal>JDBCTransactionFactory</literal> です)。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>classname.of.TransactionFactory</literal>
                             </para>
                         </entry>
@@ -861,10 +863,10 @@
                             <literal>jta.UserTransaction</literal>
                         </entry>
                         <entry>
-                            ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚©‚çJTA <literal>UserTransaction</literal> ‚ðŽæ“¾‚·‚邽‚ß‚É 
-                            <literal>JTATransactionFactory</literal> ‚ÉŽg‚í‚ê‚éJNDI–¼‚Å‚·B
+                            アプリケーションサーバからJTA <literal>UserTransaction</literal> を取得するために 
+                            <literal>JTATransactionFactory</literal> に使われるJNDI名です。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>jndi/composite/name</literal>
                             </para>
                         </entry>
@@ -874,10 +876,10 @@
                             <literal>hibernate.transaction.manager_lookup_class</literal>
                         </entry>
                         <entry>
-                            <literal>TransactionManagerLookup</literal>  ‚̃Nƒ‰ƒX–¼‚Å‚·B
-                            JTAŠÂ‹«‚É‚¨‚¢‚āAJVMƒŒƒxƒ‹‚̃LƒƒƒbƒVƒ…‚ð—LŒø‚É‚·‚邽‚ß‚É•K—v‚Å‚·B
+                            <literal>TransactionManagerLookup</literal>  のクラス名です。
+                            JTA環境において、JVMレベルのキャッシュを有効にするために必要です。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>classname.of.TransactionManagerLookup</literal>
                             </para>
                         </entry>
@@ -887,11 +889,11 @@
                             <literal>hibernate.transaction.flush_before_completion</literal>
                         </entry>
                         <entry>
-                            —LŒø‚̏ꍇAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌcompletionƒtƒF[ƒY‚Ì‘O‚ÉŽ©“®“I‚É
-                            ƒZƒbƒVƒ‡ƒ“‚ðƒtƒ‰ƒbƒVƒ…‚µ‚Ü‚·B“à‘Ÿ‚ÌŽ©“®ƒZƒbƒVƒ‡ƒ“ƒRƒ“ƒeƒLƒXƒgŠÇ—‚É“K‚µ‚Ä‚¢‚Ü‚·B
-                            <xref linkend="architecture-current-session"/>‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                            有効の場合、トランザクションのcompletionフェーズの前に自動的に
+                            セッションをフラッシュします。内臓の自動セッションコンテキスト管理に適しています。
+                            <xref linkend="architecture-current-session"/>を参照してください。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>true</literal> | <literal>false</literal>
                             </para>
                         </entry>
@@ -901,11 +903,11 @@
                             <literal>hibernate.transaction.auto_close_session</literal>
                         </entry>
                         <entry>
-                            —LŒø‚̏ꍇAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌcompletionƒtƒF[ƒY‚ÌŒã‚É
-                            ƒZƒbƒVƒ‡ƒ“‚ðŽ©“®“I‚ɃNƒ[ƒY‚µ‚Ü‚·B“à‘Ÿ‚ÌŽ©“®ƒZƒbƒVƒ‡ƒ“ƒRƒ“ƒeƒLƒXƒgŠÇ—‚É“K‚µ‚Ä‚¢‚Ü‚·B
-                            <xref linkend="architecture-current-session"/>‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                            有効の場合、トランザクションのcompletionフェーズの後に
+                            セッションを自動的にクローズします。内臓の自動セッションコンテキスト管理に適しています。
+                            <xref linkend="architecture-current-session"/>を参照してください。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>true</literal> | <literal>false</literal>
                             </para>
                         </entry>
@@ -915,14 +917,14 @@
         </table>
 
         <table frame="topbot" id="configuration-misc-properties" revision="10">
-            <title>‚»‚Ì‘¼‚̃vƒƒpƒeƒB</title>
+            <title>その他のプロパティ</title>
             <tgroup cols="2">
                 <colspec colname="c1" colwidth="1*"/>
                 <colspec colname="c2" colwidth="1*"/>
                 <thead>
                     <row>
-                        <entry>ƒvƒƒpƒeƒB–¼</entry>
-                        <entry>ˆÓ–¡</entry>
+                        <entry>プロパティ名</entry>
+                        <entry>意味</entry>
                     </row>
                 </thead>
                 <tbody>
@@ -931,11 +933,11 @@
                             <literal>hibernate.current_session_context_class</literal>
                         </entry>
                         <entry>
-                            uŒ»Ý‚́v<literal>Session</literal> ‚Ì‚½‚߂́iƒJƒXƒ^ƒ€jí—ª‚ð’ñ‹Ÿ‚µ‚Ü‚·B
-                            ƒrƒ‹ƒgƒCƒ“ƒXƒgƒ‰ƒeƒW[‚ÉŠÖ‚·‚é‚»‚Ì‘¼‚̏î•ñ‚ɂ‚¢‚Ä‚Í
-                            <xref linkend="architecture-current-session"/>‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                            「現在の」<literal>Session</literal> のための(カスタム)戦略を提供します。
+                            ビルトインストラテジーに関するその他の情報については
+                            <xref linkend="architecture-current-session"/>を参照してください。
                             <para>
-                                <emphasis role="strong">—áF</emphasis>
+                                <emphasis role="strong">例:</emphasis>
                                 <literal>jta</literal> | <literal>thread</literal> |
                                 <literal>managed</literal> | <literal>custom.Class</literal>
                             </para>
@@ -946,9 +948,9 @@
                             <literal>hibernate.query.factory_class</literal>
                         </entry>
                         <entry>
-                            HQLƒp[ƒT[‚ÌŽÀ‘•‚ð‘I‘ð‚µ‚Ü‚·B
+                            HQLパーサーの実装を選択します。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>org.hibernate.hql.ast.ASTQueryTranslatorFactory</literal> or
                                 <literal>org.hibernate.hql.classic.ClassicQueryTranslatorFactory</literal>
                             </para>
@@ -959,10 +961,10 @@
                             <literal>hibernate.query.substitutions</literal>
                         </entry>
                         <entry>
-                            HQL‚ÆSQL‚̃g[ƒNƒ“‚ðƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
-                            i—Ⴆ‚΁Aƒg[ƒNƒ“‚͊֐”‚⃊ƒeƒ‰ƒ‹–¼‚Å‚·jB
+                            HQLとSQLのトークンをマッピングします。
+                            (例えば、トークンは関数やリテラル名です)。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC</literal>
                             </para>
                         </entry>
@@ -972,12 +974,12 @@
                             <literal>hibernate.hbm2ddl.auto</literal>
                         </entry>
                         <entry>
-                            <literal>SessionFactory</literal> ‚𐶐¬‚µ‚½‚Æ‚«‚ɁA
-                            Ž©“®“I‚ɃXƒL[ƒ}DDL‚ðDB‚ɏo—Í‚µ‚Ü‚·B
-                            <literal>create-drop</literal> ‚̏ꍇA <literal>SessionFactory</literal> ‚ð
-                            ƒNƒ[ƒY‚µ‚½‚Æ‚«‚ɁAƒf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚ðƒhƒƒbƒv‚µ‚Ü‚·B
+                            <literal>SessionFactory</literal> を生成したときに、
+                            自動的にスキーマDDLをDBに出力します。
+                            <literal>create-drop</literal> の場合、 <literal>SessionFactory</literal> を
+                            クローズしたときに、データベーススキーマをドロップします。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>validate</literal> | <literal>update</literal> | 
                                 <literal>create</literal> | <literal>create-drop</literal>
                             </para>
@@ -988,14 +990,14 @@
                             <literal>hibernate.cglib.use_reflection_optimizer</literal>
                         </entry>
                         <entry>
-                            ŽÀsŽžƒŠƒtƒŒƒNƒVƒ‡ƒ“‚Ì‘ã‚í‚è‚ÌCGLIB‚ÌŽg—p‚ð—LŒø‚É‚µ‚Ü‚·
-                            iƒVƒXƒeƒ€ƒŒƒxƒ‹‚̃vƒƒpƒeƒBj
-                            ƒŠƒtƒŒƒNƒVƒ‡ƒ“‚̓gƒ‰ƒuƒ‹ƒVƒ…[ƒeƒBƒ“ƒO‚Ì‚Æ‚«‚ɖ𗧂‚±‚Æ‚ª‚ ‚è‚Ü‚·B
-                            ƒIƒvƒeƒBƒ}ƒCƒU‚ðƒIƒt‚É‚µ‚Ä‚¢‚é‚Æ‚«‚Å‚³‚¦A
-                            Hibernate‚É‚Í•K‚¸CGLIB‚ª•K—v‚È‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-                            ‚±‚̃vƒƒpƒeƒB‚Í <literal>hibernate.cfg.xml</literal> ‚Őݒè‚Å‚«‚Ü‚¹‚ñB
+                            実行時リフレクションの代わりのCGLIBの使用を有効にします
+                            (システムレベルのプロパティ)
+                            リフレクションはトラブルシューティングのときに役立つことがあります。
+                            オプティマイザをオフにしているときでさえ、
+                            Hibernateには必ずCGLIBが必要なことに注意してください。
+                            このプロパティは <literal>hibernate.cfg.xml</literal> で設定できません。
                             <para>
-                                <emphasis role="strong">—áF</emphasis> 
+                                <emphasis role="strong">例:</emphasis> 
                                 <literal>true</literal> | <literal>false</literal>
                             </para>
                         </entry>
@@ -1005,15 +1007,15 @@
         </table>
 
         <sect2 id="configuration-optional-dialects" revision="1">
-            <title>SQL •ûŒ¾iDialectj</title>
+            <title>SQL 方言(Dialect)</title>
 
             <para>
-                <literal>hibernate.dialect</literal> ƒvƒƒpƒeƒB‚ɂ́A
-                Žg—p‚·‚éƒf[ƒ^ƒx[ƒX‚̐³‚µ‚¢ <literal>org.hibernate.dialect.Dialect</literal> ‚̃TƒuƒNƒ‰ƒX‚ðA
-                •K‚¸Žw’è‚·‚ׂ«‚Å‚·B
-                ‚µ‚©‚µ•ûŒ¾‚ðŽw’è‚·‚ê‚΁AHibernate‚͏ãq‚µ‚½ƒvƒƒpƒeƒB‚Ì‚¢‚­‚‚©‚ɂ‚¢‚āA
-                ‚æ‚è“KØ‚ȃfƒtƒHƒ‹ƒg’l‚ðŽg‚¢‚Ü‚·B
-                ‚»‚¤‚·‚ê‚΁A‚»‚ê‚ç‚ðŽèì‹Æ‚Őݒ肷‚éŽèŠÔ‚ªÈ‚¯‚Ü‚·B
+                <literal>hibernate.dialect</literal> プロパティには、
+                使用するデータベースの正しい <literal>org.hibernate.dialect.Dialect</literal> のサブクラスを、
+                必ず指定すべきです。
+                しかし方言を指定すれば、Hibernateは上述したプロパティのいくつかについて、
+                より適切なデフォルト値を使います。
+                そうすれば、それらを手作業で設定する手間が省けます。
             </para>
 
             <table frame="topbot" id="sql-dialects" revision="2">
@@ -1101,21 +1103,21 @@
         </sect2>
 
         <sect2 id="configuration-optional-outerjoin" revision="4">
-            <title>ŠO•”Œ‹‡ƒtƒFƒbƒ`</title>
+            <title>外部結合フェッチ</title>
 
             <para>
-                ‚à‚µDB‚ªANSI‚©AOracle‚©SybaseƒXƒ^ƒCƒ‹‚ÌŠO•”Œ‹‡‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚éê‡A
-                <emphasis>outer join fetching</emphasis> ‚́ADB‚ÌSQL”­s‰ñ”‚ðß–ñ‚µ
-                ƒpƒtƒH[ƒ}ƒ“ƒX‚ð—Ç‚­‚µ‚Ü‚·BiDB“à‚Å‚æ‚葽‚­‚̏ˆ—ƒRƒXƒg‚ª”­¶‚µ‚Ü‚·j
-                ŠO•”Œ‹‡ƒtƒFƒbƒ`‚́A‘½‘ΈêAˆê‘Α½A‘½‘Α½Aˆê‘Έê‚̃IƒuƒWƒFƒNƒgŠÖ˜A‚Å
-                ƒOƒ‹[ƒvƒIƒuƒWƒFƒNƒg‚ð1‚‚ÌSQL‚Å <literal>SELECT</literal> ‚µ‚Ü‚·B
+                もしDBがANSIか、OracleかSybaseスタイルの外部結合をサポートしている場合、
+                <emphasis>outer join fetching</emphasis> は、DBのSQL発行回数を節約し
+                パフォーマンスを良くします。(DB内でより多くの処理コストが発生します)
+                外部結合フェッチは、多対一、一対多、多対多、一対一のオブジェクト関連で
+                グループオブジェクトを1つのSQLで <literal>SELECT</literal> します。
             </para>
 
             <para>
-                <literal>hibernate.max_fetch_depth</literal> ƒvƒƒpƒeƒB‚Ì’l‚ð <literal>0</literal> ‚É‚·‚é‚Æ
-                Outer join fetching‚ð <emphasis>‚·‚ׂÄ</emphasis> –³Œø‚É‚·‚邱‚Æ‚É‚È‚è‚Ü‚·B
-                <literal>1</literal> ‚â‚»‚êˆÈã‚Ì’l‚ðÝ’è‚·‚é‚ƁAŠO•”Œ‹‡ƒtƒFƒbƒ`‚ª—LŒø‚É‚È‚èA
-                ˆê‘Έê‚Æ‘½‘ΈêŠÖ˜A‚ª <literal>fetch="join"</literal> ‚Æ‚µ‚ă}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B
+                <literal>hibernate.max_fetch_depth</literal> プロパティの値を <literal>0</literal> にすると
+                Outer join fetchingを <emphasis>すべて</emphasis> 無効にすることになります。
+                <literal>1</literal> やそれ以上の値を設定すると、外部結合フェッチが有効になり、
+                一対一と多対一関連が <literal>fetch="join"</literal> としてマッピングされます。
             </para>
 
             <para>
@@ -1125,146 +1127,146 @@
         </sect2>
 
         <sect2 id="configuration-optional-binarystreams" revision="1">
-            <title>ƒoƒCƒiƒŠƒXƒgƒŠ[ƒ€</title>
+            <title>バイナリストリーム</title>
 
             <para>
-                Oracle‚ÍJDBCƒhƒ‰ƒCƒo‚Æ‚ÌŠÔ‚Å‚â‚è‚Ƃ肳‚ê‚é <literal>byte</literal>  ”z—ñ‚̃TƒCƒY‚𐧌À‚µ‚Ü‚·B
-                <literal>binary</literal> ‚â <literal>serializable</literal> Œ^‚Ì‘å‚«‚ȃCƒ“ƒXƒ^ƒ“ƒX‚ðŽg‚¢‚½‚¯‚ê‚΁A
-                <literal>hibernate.jdbc.use_streams_for_binary</literal> ‚ð—LŒø‚É‚µ‚Ä‚­‚¾‚³‚¢B
-                ‚½‚¾‚µ <emphasis>‚±‚ê‚̓VƒXƒeƒ€ƒŒƒxƒ‹‚̐ݒ肾‚¯‚Å‚·</emphasis> B
+                OracleはJDBCドライバとの間でやりとりされる <literal>byte</literal>  配列のサイズを制限します。
+                <literal>binary</literal> や <literal>serializable</literal> 型の大きなインスタンスを使いたければ、
+                <literal>hibernate.jdbc.use_streams_for_binary</literal> を有効にしてください。
+                ただし <emphasis>これはシステムレベルの設定だけです</emphasis> 。
             </para>
 
         </sect2>
 
         <sect2 id="configuration-optional-cacheprovider" revision="2">
-            <title>2ŽŸƒLƒƒƒbƒVƒ…‚ƃNƒGƒŠ[ƒLƒƒƒbƒVƒ…</title>
+            <title>2次キャッシュとクエリーキャッシュ</title>
 
             <para>
-                <literal>hibernate.cache</literal> ƒvƒƒpƒeƒBÚ“ªŽ«‚Í
-                Hibernate‚ŃvƒƒZƒX‚âƒNƒ‰ƒXƒ^“ñŽŸƒLƒƒƒbƒVƒ…‚ðŽg‚¤‚Æ‚±‚Æ‚ð‹–‰Â‚µ‚Ü‚·B
-                <xref linkend="performance-cache"/>‚É‚æ‚葽‚­‚̏ڍׂª‚ ‚è‚Ü‚·B
+                <literal>hibernate.cache</literal> プロパティ接頭辞は
+                Hibernateでプロセスやクラスタ二次キャッシュを使うとことを許可します。
+                <xref linkend="performance-cache"/>により多くの詳細があります。
             </para>
 
         </sect2>
 
         <sect2 id="configuration-optional-querysubstitution">
-            <title>ƒNƒGƒŠ[Œ¾Œê‚Ì’u‚«Š·‚¦</title>
+            <title>クエリー言語の置き換え</title>
 
             <para>
-                <literal>hibernate.query.substitutions</literal> ‚ðŽg‚¤‚±‚ƂŁA
-                V‚µ‚¢HibernateƒNƒGƒŠƒg[ƒNƒ“‚ð’è‹`‚Å‚«‚Ü‚·B
-                —áF
+                <literal>hibernate.query.substitutions</literal> を使うことで、
+                新しいHibernateクエリトークンを定義できます。
+                例:
             </para>
 
             <programlisting>hibernate.query.substitutions true=1, false=0</programlisting>
 
             <para>
-                ‚±‚ê‚̓g[ƒNƒ“ <literal>true</literal> ‚Æ <literal>false</literal> ‚ðA
-                ¶¬‚³‚ê‚éSQL‚É‚¨‚¢‚Đ®”ƒŠƒeƒ‰ƒ‹‚É–|–󂵂܂·B                
+                これはトークン <literal>true</literal> と <literal>false</literal> を、
+                生成されるSQLにおいて整数リテラルに翻訳します。                
             </para>
 
             <programlisting>hibernate.query.substitutions toLowercase=LOWER</programlisting>
 
             <para>
-                ‚±‚ê‚ÍSQL‚Ì <literal>LOWER</literal> ŠÖ”‚Ì–¼‘O‚Ì•t‚¯‘Ö‚¦‚ð‰Â”\‚É‚µ‚Ü‚·B
+                これはSQLの <literal>LOWER</literal> 関数の名前の付け替えを可能にします。
             </para>
 
         </sect2>
 
         <sect2 id="configuration-optional-statistics" revision="2">
-            <title>Hibernate “Œv</title>
+            <title>Hibernate 統計</title>
 
             <para>
-                <literal>hibernate.generate_statistics</literal> ‚ð—LŒø‚É‚µ‚½ê‡A
-                “®ì‚µ‚Ä‚¢‚éƒVƒXƒeƒ€‚ðƒ`ƒ…[ƒjƒ“ƒO‚·‚é‚Æ‚«‚ɁA<literal>SessionFactory.getStatistics()</literal> 
-                ‚ðŒo—R‚µ‚āAHibernate‚Í•Ö—˜‚È“Œvî•ñ‚ðo—Í‚µ‚Ü‚·B
-                JMX‚ðŒo—R‚µ‚Ä“Œvî•ñ‚ðo—Í‚·‚邱‚Æ‚à‰Â”\‚Å‚·B
-                Javadoc‚Ì <literal>org.hibernate.stats</literal> ƒpƒbƒP[ƒW“à‚Ì
-                ƒCƒ“ƒ^[ƒtƒFƒCƒX‚É‚Í‚æ‚葽‚­‚̏î•ñ‚ª‚ ‚è‚Ü‚·B
+                <literal>hibernate.generate_statistics</literal> を有効にした場合、
+                動作しているシステムをチューニングするときに、<literal>SessionFactory.getStatistics()</literal> 
+                を経由して、Hibernateは便利な統計情報を出力します。
+                JMXを経由して統計情報を出力することも可能です。
+                Javadocの <literal>org.hibernate.stats</literal> パッケージ内の
+                インターフェイスにはより多くの情報があります。
             </para>
 
         </sect2>
     </sect1>
 
     <sect1 id="configuration-logging">
-        <title>ƒƒMƒ“ƒO</title>
+        <title>ロギング</title>
 
         <para>
-            Hibernate‚ÍApache commons-loggin‚ðŽg‚Á‚āA‚³‚Ü‚´‚܂ȃCƒxƒ“ƒg‚ðƒƒO‚Æ‚µ‚Ä
-            o—Í‚µ‚Ü‚·B
+            HibernateはApache commons-logginを使って、さまざまなイベントをログとして
+            出力します。
         </para>
 
         <para>
-            commons-loggingƒT[ƒrƒX‚́iƒNƒ‰ƒXƒpƒX‚É <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‚¤‚½‚߂ɂ́AƒNƒ‰ƒXƒpƒX‚É  <literal>log4j.properties</literal> ƒtƒ@ƒCƒ‹‚ð”z’u‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
-            —á‚̃vƒƒpƒeƒBƒtƒ@ƒCƒ‹‚ÍHibernate‚ƈꏏ‚É”z•z‚³‚êA‚»‚ê‚Í <literal>src/</literal> ƒfƒBƒŒƒNƒgƒŠ‚É‚ ‚è‚Ü‚·B
+            commons-loggingサービスは(クラスパスに <literal>log4j.jar</literal> を含めれば)Apache Log4jに、
+            また(JDK1.4かそれ以上で実行させれば)JDK1.4 loggingに直接出力します。
+            Log4jは  <literal>http://jakarta.apache.org</literal> からダウンロードできます。
+            Log4jを使うためには、クラスパスに  <literal>log4j.properties</literal> ファイルを配置する必要があります。
+            例のプロパティファイルはHibernateと一緒に配布され、それは <literal>src/</literal> ディレクトリにあります。
         </para>
         
         <para>
-            Hibernate‚̃ƒOƒƒbƒZ[ƒW‚ÉŠµ‚ê‚邱‚Æ‚ð‹­‚­‚¨‚·‚·‚ß‚µ‚Ü‚·B
-            Hibernate‚̃ƒO‚Í“Ç‚Ý‚â‚·‚­A‚Å‚«‚éŒÀ‚èÚ×‚É‚È‚é‚悤‚É“w—Í‚³‚ê‚Ä‚¢‚Ü‚·B
-            ‚±‚ê‚Í•K{‚̃gƒ‰ƒuƒ‹ƒVƒ…[ƒeƒBƒ“ƒOƒfƒoƒCƒX‚Å‚·B
-            ˆÈ‰º‚ɏd—v‚ȃƒO‚̃JƒeƒSƒŠ‚ðŽ¦‚µ‚Ü‚·B
+            Hibernateのログメッセージに慣れることを強くおすすめします。
+            Hibernateのログは読みやすく、できる限り詳細になるように努力されています。
+            これは必須のトラブルシューティングデバイスです。
+            以下に重要なログのカテゴリを示します。
         </para>
         
             <table frame="topbot" id="log-categories" revision="2">
-                <title>Hibernate ƒƒOƒJƒeƒSƒŠ</title>
+                <title>Hibernate ログカテゴリ</title>
                 <tgroup cols="2">
                     <colspec colwidth="1*"/>
                     <colspec colwidth="2.5*"/>
                     <thead>
                         <row>
-                            <entry>ƒJƒeƒSƒŠ</entry>
-                            <entry>‹@”\</entry>
+                            <entry>カテゴリ</entry>
+                            <entry>機能</entry>
                         </row>
                     </thead>
                     <tbody>
                         <row>
                             <entry><literal>org.hibernate.SQL</literal></entry>
-                            <entry>ŽÀs‚µ‚½‚·‚ׂĂÌSQLiDDLjƒXƒe[ƒgƒƒ“ƒg‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B</entry>
+                            <entry>実行したすべてのSQL(DDL)ステートメントをロギングします。</entry>
                         </row>
                         <row>
                             <entry><literal>org.hibernate.type</literal></entry>
-                            <entry>‚·‚ׂĂÌJDBCƒpƒ‰ƒ[ƒ^‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B</entry>
+                            <entry>すべてのJDBCパラメータをロギングします。</entry>
                         </row>
                         <row>
                             <entry><literal>org.hibernate.tool.hbm2ddl</literal></entry>
-                            <entry>ŽÀs‚µ‚½‚·‚ׂĂÌSQLiDDLjƒXƒe[ƒgƒƒ“ƒg‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B</entry>
+                            <entry>実行したすべてのSQL(DDL)ステートメントをロギングします。</entry>
                         </row>
                         <row>
                             <entry><literal>org.hibernate.pretty</literal></entry>
                             <entry>
-                                session‚ÉŠÖ˜A‚·‚é‚·‚ׂẴGƒ“ƒeƒBƒeƒBiÅ‘å‚Q‚Oj‚̃tƒ‰ƒbƒVƒ…ŽžŠÔ‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B
+                                sessionに関連するすべてのエンティティ(最大20)のフラッシュ時間をロギングします。
                             </entry>
                         </row>
                         <row>
                             <entry><literal>org.hibernate.cache</literal></entry>
-                            <entry>‚·‚ׂĂ̂QŽŸƒLƒƒƒbƒVƒ…‚Ì“®ì‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B</entry>
+                            <entry>すべての2次キャッシュの動作をロギングします。</entry>
                         </row>
                         <row>
                             <entry><literal>org.hibernate.transaction</literal></entry>
-                            <entry>ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÉŠÖ˜A‚·‚é“®ì‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B</entry>
+                            <entry>トランザクションに関連する動作をロギングします。</entry>
                         </row>
                         <row>
                             <entry><literal>org.hibernate.jdbc</literal></entry>
-                            <entry>JDBCƒŠƒ\[ƒXŽæ“¾‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B</entry>
+                            <entry>JDBCリソース取得をロギングします。</entry>
                         </row>
                         <row>
                             <entry><literal>org.hibernate.hql.ast.AST</literal></entry>
                             <entry>
-                                HQL‚ÆSQL‚ÌAST‚̃NƒGƒŠ[ƒp[ƒX‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B
+                                HQLとSQLのASTのクエリーパースをロギングします。
                             </entry>
                         </row>
                         <row>
                             <entry><literal>org.hibernate.secure</literal></entry>
-                            <entry>‚·‚ׂĂÌJAAS•ªÍ‚ðƒƒMƒ“ƒO‚µ‚Ü‚·B</entry>
+                            <entry>すべてのJAAS分析をロギングします。</entry>
                         </row>
                         <row>
                             <entry><literal>org.hibernate</literal></entry>
                             <entry>
-                                ‚·‚×‚Ä‚ðƒƒMƒ“ƒO‚µ‚Ü‚·Biî•ñ‚ª‘å—Ê‚É‚È‚è‚Ü‚·‚ªAƒgƒ‰ƒuƒ‹ƒVƒ…[ƒeƒBƒ“ƒO‚É‚Í•Ö—˜‚Å‚·j
+                                すべてをロギングします。(情報が大量になりますが、トラブルシューティングには便利です)
                             </entry>
                         </row>
                     </tbody>
@@ -1272,34 +1274,34 @@
             </table>
             
         <para>
-            Hibernate‚ŃAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðì¬‚·‚é‚Æ‚«‚́A<literal>org.hibernate.SQL</literal>
-            ƒJƒeƒSƒŠ‚Ì <literal>debug</literal> ‚ðí‚É—LŒø‚É‚µ‚Ä‚¨‚¢‚½‚Ù‚¤‚ª—Ç‚¢‚Å‚µ‚傤B
-            ‘ã‘Ö•û–@‚Æ‚µ‚āA<literal>hibernate.show_sql</literal> ‚ð—LŒø‚É‚·‚é•û–@‚ª‚ ‚è‚Ü‚·B
+            Hibernateでアプリケーションを作成するときは、<literal>org.hibernate.SQL</literal>
+            カテゴリの <literal>debug</literal> を常に有効にしておいたほうが良いでしょう。
+            代替方法として、<literal>hibernate.show_sql</literal> を有効にする方法があります。
         </para>
                        
         
     </sect1>
 
     <sect1 id="configuration-namingstrategy">
-        <title><literal>NamingStrategy</literal> ‚ÌŽÀ‘•</title>
+        <title><literal>NamingStrategy</literal> の実装</title>
 
         <para>
-            ƒCƒ“ƒ^[ƒtƒFƒCƒX <literal>net.sf.hibernate.cfg.NamingStrategy</literal> ‚ðŽg‚¤‚Æ
-            ƒf[ƒ^ƒx[ƒXƒIƒuƒWƒFƒNƒg‚ƃXƒL[ƒ}—v‘f‚Ì‚½‚߂́u–½–¼•W€v‚ðŽw’è‚Å‚«‚Ü‚·B
+            インターフェイス <literal>net.sf.hibernate.cfg.NamingStrategy</literal> を使うと
+            データベースオブジェクトとスキーマ要素のための「命名標準」を指定できます。
         </para>
 
         <para>
-            Java‚ÌŽ¯•ÊŽq‚©‚çƒf[ƒ^ƒx[ƒX‚ÌŽ¯•ÊŽq‚ðŽ©“®¶¬‚·‚邽‚߂̃‹[ƒ‹‚âA
-            ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚Å—^‚¦‚½u˜_—“I‚ȁvƒJƒ‰ƒ€‚ƃe[ƒuƒ‹–¼‚©‚ç
-            u•¨—“I‚ȁvƒe[ƒuƒ‹‚ƃJƒ‰ƒ€–¼‚𐶐¬‚·‚邽‚߂̃‹[ƒ‹‚ð—pˆÓ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-            ‚±‚Ì‹@”\‚ÍŒJ‚è•Ô‚µ‚ÌŽG‰¹i—Ⴆ‚Î <literal>TBL_</literal> ƒvƒŠƒtƒBƒbƒNƒXj‚ðŽæ‚菜‚«A
-            ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚̏璷‚³‚ðŒ¸‚ç‚·‚±‚Ƃɖ𗧂¿‚Ü‚·B
-            Hibernate‚ªŽg‚¤ƒfƒtƒHƒ‹ƒg‚̐헪‚Í‚©‚È‚èÅ¬ŒÀ‚É‹ß‚¢‚à‚Ì‚Å‚·B
+            Javaの識別子からデータベースの識別子を自動生成するためのルールや、
+            マッピングファイルで与えた「論理的な」カラムとテーブル名から
+            「物理的な」テーブルとカラム名を生成するためのルールを用意することができます。
+            この機能は繰り返しの雑音(例えば <literal>TBL_</literal> プリフィックス)を取り除き、
+            マッピングドキュメントの冗長さを減らすことに役立ちます。
+            Hibernateが使うデフォルトの戦略はかなり最小限に近いものです。
         </para>
 
         <para>
-            ƒ}ƒbƒsƒ“ƒO‚ð’ljÁ‚·‚é‘O‚É <literal>Configuration.setNamingStrategy()</literal> ‚ðŒÄ‚Ô‚±‚Æ‚Å
-            ˆÈ‰º‚̂悤‚ɈقȂéí—ª‚ðŽw’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·F
+            マッピングを追加する前に <literal>Configuration.setNamingStrategy()</literal> を呼ぶことで
+            以下のように異なる戦略を指定することができます:
         </para>
 
         <programlisting><![CDATA[SessionFactory sf = new Configuration()
@@ -1309,25 +1311,25 @@
     .buildSessionFactory();]]></programlisting>
     
         <para>
-            <literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> ‚Í‘g‚ݍž‚݂̐헪‚Å‚·B
-            ‚±‚ê‚Í‚¢‚­‚‚©‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚Æ‚Á‚Ä—L—p‚ÈŠJŽn“_‚Æ‚È‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
+            <literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> は組み込みの戦略です。
+            これはいくつかのアプリケーションにとって有用な開始点となるかもしれません。
         </para>
 
     </sect1>
 
     <sect1 id="configuration-xmlconfig" revision="2">
-        <title>XMLÝ’èƒtƒ@ƒCƒ‹</title>
+        <title>XML設定ファイル</title>
 
         <para>
-            ‚à‚¤1‚‚̕û–@‚Í <literal>hibernate.cfg.xml</literal> ‚Æ‚¢‚¤–¼‘O‚̃tƒ@ƒCƒ‹‚Å
-            \•ª‚Ȑݒè‚ðŽw’è‚·‚é•û–@‚Å‚·B
-            ‚±‚̃tƒ@ƒCƒ‹‚Í <literal>hibernate.properties</literal> ƒtƒ@ƒCƒ‹‚Ì‘ã‚í‚è‚Æ‚È‚è‚Ü‚·B
-            ‚à‚µ—¼•û‚̃tƒ@ƒCƒ‹‚ª‚ ‚ê‚΁AƒvƒƒpƒeƒB‚ª’u‚«Š·‚¦‚ç‚ê‚Ü‚·B
+            もう1つの方法は <literal>hibernate.cfg.xml</literal> という名前のファイルで
+            十分な設定を指定する方法です。
+            このファイルは <literal>hibernate.properties</literal> ファイルの代わりとなります。
+            もし両方のファイルがあれば、プロパティが置き換えられます。
         </para>
 
         <para>
-            XMLÝ’èƒtƒ@ƒCƒ‹‚͏‰ŠúÝ’è‚Å <literal>CLASSPATH</literal> ‚É”z’u‚µ‚Ä‚­‚¾‚³‚¢B
-            ‚±‚ꂪ—á‚Å‚·F
+            XML設定ファイルは初期設定で <literal>CLASSPATH</literal> に配置してください。
+            これが例です:
         </para>
 
         <programlisting><![CDATA[<?xml version='1.0' encoding='utf-8'?>
@@ -1338,7 +1340,7 @@
 <hibernate-configuration>
 
     <!-- a SessionFactory instance listed as /jndi/name -->
-    <!-- /jndi/name‚̂悤‚ɃŠƒXƒgƒAƒbƒv‚³‚ꂽSessionFactoryƒCƒ“ƒXƒ^ƒ“ƒX -->
+    <!-- /jndi/nameのようにリストアップされたSessionFactoryインスタンス -->
     <session-factory
         name="java:hibernate/SessionFactory">
 
@@ -1365,22 +1367,22 @@
 </hibernate-configuration>]]></programlisting>
 
         <para>
-            Œ©‚Ä‚Ì‚Æ‚¨‚èA‚±‚Ì•û–@‚Ì—DˆÊ«‚͐ݒè‚Ì‚½‚߂̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹–¼‚ðŠOo‚µ‚É‚Å‚«‚邱‚Æ‚Å‚·B
-            HibernateƒLƒƒƒbƒVƒ…‚ðƒ`ƒ…[ƒjƒ“ƒO‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢‚Ì‚Å‚ ‚ê‚΁A
-            <literal>hibernate.cfg.xml</literal> ‚Í‚æ‚è•Ö—˜‚Å‚·B
-            <literal>hibernate.properties</literal> ‚Æ <literal>hibernate.cfg.xml</literal> ‚Ì
-            ‚Ç‚¿‚ç‚©‚ðŽg‚¦‚邱‚Æ‚ðŠo‚¦‚Ä‚¨‚¢‚Ä‚­‚¾‚³‚¢B
-            “ñ‚‚͓¯‚¶‚à‚̂ŁAˆá‚¤‚Æ‚±‚ë‚Æ‚¢‚¦‚ÎXML\•¶‚ðŽg‚¤‚±‚Æ‚Ì—˜“_‚¾‚¯‚Å‚·B
+            見てのとおり、この方法の優位性は設定のためのマッピングファイル名を外出しにできることです。
+            Hibernateキャッシュをチューニングしなければならないのであれば、
+            <literal>hibernate.cfg.xml</literal> はより便利です。
+            <literal>hibernate.properties</literal> と <literal>hibernate.cfg.xml</literal> の
+            どちらかを使えることを覚えておいてください。
+            二つは同じもので、違うところといえばXML構文を使うことの利点だけです。
         </para>
 
        <para>
-           XMLÝ’è‚ðŽg‚¤‚±‚ƂŁAHibernate‚͈ȉº‚̂悤‚ɃVƒ“ƒvƒ‹‚É‚È‚è‚Ü‚·B
+           XML設定を使うことで、Hibernateは以下のようにシンプルになります。
        </para>
 
        <programlisting><![CDATA[SessionFactory sf = new Configuration().configure().buildSessionFactory();]]></programlisting>
 
        <para>
-           ˆá‚¤XMLÝ’èƒtƒ@ƒCƒ‹‚ðŽg‚¤‚±‚Æ‚à‚Å‚«‚Ü‚·B
+           違うXML設定ファイルを使うこともできます。
        </para>
 
        <programlisting><![CDATA[SessionFactory sf = new Configuration()
@@ -1390,23 +1392,23 @@
     </sect1>
 
     <sect1 id="configuration-j2ee" revision="1">
-        <title>J2EEƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚Æ‚Ì“‡</title>
+        <title>J2EEアプリケーションサーバとの統合</title>
 
         <para>
-            Hibernate‚ÍJ2EE\‘¢‚Æ“‡‚·‚éƒ|ƒCƒ“ƒg‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B
+            HibernateはJ2EE構造と統合するポイントをサポートしています。
         </para>
 
         <itemizedlist>
             <listitem>
                 <para>
-                <emphasis>ƒRƒ“ƒeƒiŠÇ—ƒf[ƒ^ƒ\[ƒX</emphasis>FHibernate‚Í
-                JNDI‚ª’ñ‹Ÿ‚µAƒRƒ“ƒeƒi‚ªŠÇ—‚·‚éJDBCƒRƒlƒNƒVƒ‡ƒ“‚ðŽg—p‚Å‚«‚Ü‚·B
-                ’ʏíAJTA€‹’‚Ì <literal>TransactionManager</literal> ‚Æ
-                <literal>ResourceManager</literal> ‚ªƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ŠÇ—(CMT)A
-                “Á‚É—lX‚ȃf[ƒ^ƒ\[ƒX‚É‚Ü‚½‚ª‚镪ŽUƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðˆµ‚¢‚Ü‚·B
-                “–‘RƒvƒƒOƒ‰ƒ€‚Ńgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ðŽw’è‚Å‚«‚Ü‚·(BMT)B
-                ‚ ‚é‚¢‚́A‹Lq‚µ‚½ƒR[ƒh‚̃|[ƒ^ƒrƒŠƒeƒB‚ð•Û‚‚½‚߂ɁA
-                ƒIƒvƒVƒ‡ƒ“‚ÌHibernate‚Ì <literal>Transaction</literal> API‚ðŽg‚¢‚½‚­‚È‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
+                <emphasis>コンテナ管理データソース</emphasis>:Hibernateは
+                JNDIが提供し、コンテナが管理するJDBCコネクションを使用できます。
+                通常、JTA準拠の <literal>TransactionManager</literal> と
+                <literal>ResourceManager</literal> がトランザクション管理(CMT)、
+                特に様々なデータソースにまたがる分散トランザクションを扱います。
+                当然プログラムでトランザクション境界を指定できます(BMT)。
+                あるいは、記述したコードのポータビリティを保つために、
+                オプションのHibernateの <literal>Transaction</literal> APIを使いたくなるかもしれません。
                 </para>
             </listitem>
         </itemizedlist>
@@ -1414,8 +1416,8 @@
         <itemizedlist>
             <listitem>
                 <para>
-                <emphasis>Ž©“®JNDIƒoƒCƒ“ƒfƒBƒ“ƒO</emphasis>FHibernate‚ÍJNDI‚ª—§‚¿ã‚ª‚Á‚½Œã‚É
-                <literal>SessionFactory</literal> ‚𐶐¬‚µ‚Ü‚·B
+                <emphasis>自動JNDIバインディング</emphasis>:HibernateはJNDIが立ち上がった後に
+                <literal>SessionFactory</literal> を生成します。
                 </para>
             </listitem>
         </itemizedlist>
@@ -1423,12 +1425,12 @@
         <itemizedlist>
             <listitem>
                 <para>
-                <emphasis>JTAƒZƒbƒVƒ‡ƒ“ƒoƒCƒ“ƒfƒBƒ“ƒO</emphasis> F
-                Hibernate <literal>Session</literal> ‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ÍJTAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Æ“¯‚¶‚É‚È‚è‚Ü‚·B
-                ’Pƒ‚É <literal>SessionFactory</literal> ‚ðJNDI‚©‚çlookup‚µ‚āA
-                Œ»Ý‚Ì <literal>Session</literal> ‚ðŽæ“¾‚µ‚Ü‚·B
-                JTAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŠ®—¹‚µ‚½‚Æ‚«‚ɁAHibernate‚ª <literal>Session</literal> ‚ðƒtƒ‰ƒbƒVƒ…‚µAƒNƒ[ƒY‚µ‚Ü‚·B
-                EJBƒfƒvƒƒCƒƒ“ƒgƒfƒBƒXƒNƒŠƒvƒ^‚Ì’†‚ɁAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ðéŒ¾‚µ‚Ü‚·B
+                <emphasis>JTAセッションバインディング</emphasis> :
+                Hibernate <literal>Session</literal> のトランザクション境界はJTAトランザクションと同じになります。
+                単純に <literal>SessionFactory</literal> をJNDIからlookupして、
+                現在の <literal>Session</literal> を取得します。
+                JTAトランザクションが完了したときに、Hibernateが <literal>Session</literal> をフラッシュし、クローズします。
+                EJBデプロイメントディスクリプタの中に、トランザクション境界を宣言します。
                 </para>
             </listitem>
         </itemizedlist>
@@ -1436,85 +1438,85 @@
         <itemizedlist>
             <listitem>
                 <para>
-                <emphasis>JMXƒfƒvƒƒC:</emphasis> ‚à‚µJMX‚ªŽg—p‰Â”\‚ȃAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒoi—Ⴆ‚ÎJBOSSj
-                ‚ª‚ ‚éê‡AHibernate‚ðMBean‚Æ‚µ‚ăfƒvƒƒC‚·‚邱‚Æ‚ð‘I‚ׂ܂·B
-                ‚±‚ê‚Í <literal>Configuration</literal> ‚©‚ç <literal>SessionFactory</literal> ‚ð
-                ¶¬‚·‚éƒR[ƒh‚𖳂­‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B
-                ƒRƒ“ƒeƒi‚Í <literal>HibernateService</literal> ‚ð‹N“®‚µA
-                ƒT[ƒrƒX‚̈ˑ¶‚𗝑z“I‚ÉŠÇ—‚µ‚Ü‚·iƒf[ƒ^ƒ\[ƒX‚ÍHibernate‚â‚»‚Ì‘¼‚ª‹N“®‚·‚é‘O‚É
-                Žg—p‚Å‚«‚é‚悤‚É‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñjB
+                <emphasis>JMXデプロイ:</emphasis> もしJMXが使用可能なアプリケーションサーバ(例えばJBOSS)
+                がある場合、HibernateをMBeanとしてデプロイすることを選べます。
+                これは <literal>Configuration</literal> から <literal>SessionFactory</literal> を
+                生成するコードを無くすことができます。
+                コンテナは <literal>HibernateService</literal> を起動し、
+                サービスの依存を理想的に管理します(データソースはHibernateやその他が起動する前に
+                使用できるようにしなければなりません)。
                 </para>
             </listitem>
         </itemizedlist>
 
         <para>
-            ŠÂ‹«‚Ɉˑ¶‚µ‚Ü‚·‚ªA‚à‚µAƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚ª"connection containment"‚Ì—áŠO‚ðƒXƒ[‚·‚é‚È‚ç
-            Ý’è‚̃IƒvƒVƒ‡ƒ“ <literal>hibernate.connection.aggressive_release</literal> 
-            ‚ðtrue‚É‚µ‚Ä‚­‚¾‚³‚¢B
+            環境に依存しますが、もし、アプリケーションサーバが"connection containment"の例外をスローするなら
+            設定のオプション <literal>hibernate.connection.aggressive_release</literal> 
+            をtrueにしてください。
         </para>
 
         <sect2 id="configuration-optional-transactionstrategy" revision="3">
-            <title>ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“í—ªÝ’è</title>
+            <title>トランザクション戦略設定</title>
 
             <para>
-                Hibernate  <literal>Session</literal> API‚́AƒA[ƒLƒeƒNƒ`ƒƒ“à‚̃VƒXƒeƒ€‚ÌŠÇŠ‚Å‚ ‚é
-                ‚ ‚ç‚ä‚éƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ɉˑ¶‚µ‚Ü‚¹‚ñB
-                ‚à‚µƒRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹‚ÌJDBC‚𒼐ڎg‚¢‚½‚¢ê‡AJDBC API‚©‚ç
-                ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŒÄ‚Ô‚±‚Æ‚ª‚Å‚«‚Ü‚·B
-                ‚à‚µAJ2EEƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚Å“®ì‚³‚¹‚é‚È‚çABeanŠÇ—ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŽg‚¢A
-                •K—v‚ɉž‚¶‚Ä <literal>UserTransaction</literal> ‚ðJTA API‚©‚çŒÄ‚Ô‚±‚Æ‚É‚È‚é‚Å‚µ‚傤B
+                Hibernate  <literal>Session</literal> APIは、アーキテクチャ内のシステムの管轄である
+                あらゆるトランザクションに依存しません。
+                もしコネクションプールのJDBCを直接使いたい場合、JDBC APIから
+                トランザクションを呼ぶことができます。
+                もし、J2EEアプリケーションサーバで動作させるなら、Bean管理トランザクションを使い、
+                必要に応じて <literal>UserTransaction</literal> をJTA APIから呼ぶことになるでしょう。
             </para>
 
             <para>
-                2‚i‚»‚êˆÈãj‚̊‹«‚Ō݊·«‚Ì‚ ‚éƒR[ƒh‚ðˆÛŽ‚·‚邽‚߂ɁAƒIƒvƒVƒ‡ƒ“‚Æ‚µ‚čª–{“I‚ȃVƒXƒeƒ€‚ð
-                ƒ‰ƒbƒsƒ“ƒO‚·‚éHibernate <literal>Transaction</literal> API‚𐄏§‚µ‚Ü‚·B
-                HibernateÝ’èƒvƒƒpƒeƒB‚Ì <literal>hibernate.transaction.factory_class</literal> ‚ðÝ’è‚·‚邱‚Æ‚Å
-                ‚ ‚é“Á’è‚Ì <literal>Transaction</literal> ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ðŽ‚Â‚±‚Æ‚ª‚Å‚«‚Ü‚·B
+                2つ(それ以上)の環境で互換性のあるコードを維持するために、オプションとして根本的なシステムを
+                ラッピングするHibernate <literal>Transaction</literal> APIを推奨します。
+                Hibernate設定プロパティの <literal>hibernate.transaction.factory_class</literal> を設定することで
+                ある特定の <literal>Transaction</literal> クラスのインスタンスを持つことができます。
             </para>
 
             <para>
-                3‚‚̊î–{“I‚ȁiŠù‚É‚ ‚éj‘I‘ð‚ð‹“‚°‚Ü‚·F
+                3つの基本的な(既にある)選択を挙げます:
             </para>
 
             <variablelist spacing="compact">
                 <varlistentry>
                     <term><literal>org.hibernate.transaction.JDBCTransactionFactory</literal></term>
                     <listitem>
-                        <para>ƒf[ƒ^ƒx[ƒX(JDBC)ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ɈϏ÷‚µ‚Ü‚·iƒfƒtƒHƒ‹ƒgj</para>
+                        <para>データベース(JDBC)トランザクションに委譲します(デフォルト)</para>
                     </listitem>
                 </varlistentry>
                 <varlistentry>
                     <term><literal>org.hibernate.transaction.JTATransactionFactory</literal></term>
                     <listitem>
                         <para>
-                            ‚à‚µA‚±‚̃Rƒ“ƒeƒLƒXƒgi—Ⴆ‚΁AEJBƒZƒbƒVƒ‡ƒ“Beanƒƒ\ƒbƒhj‚Őis’†‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ª‘¶Ý‚·‚éA‚à‚µ‚­‚Í
-                            V‚µ‚¢ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŠJŽn‚³‚ê‚Ä‚¨‚èABeanŠÇ—ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŽg‚í‚ê‚Ä‚¢‚éê‡A
-                            ƒRƒ“ƒeƒiŠÇ—ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ɈϏ÷‚µ‚Ü‚·B
+                            もし、このコンテキスト(例えば、EJBセッションBeanメソッド)で進行中のトランザクションが存在する、もしくは
+                            新しいトランザクションが開始されており、Bean管理トランザクションが使われている場合、
+                            コンテナ管理トランザクションに委譲します。
                         </para>
                     </listitem>
                 </varlistentry>
                 <varlistentry>
                     <term><literal>org.hibernate.transaction.CMTTransactionFactory</literal></term>
                     <listitem>
-                        <para>ƒRƒ“ƒeƒiŠÇ—JTAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ɈϏ÷‚µ‚Ü‚·</para>
+                        <para>コンテナ管理JTAトランザクションに委譲します</para>
                     </listitem>
                 </varlistentry>
             </variablelist>
 
             <para>
-                Ž©•ªŽ©g‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“í—ªi—Ⴆ‚΁ACORBAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒT[ƒrƒXj‚ð’è‹`‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B
+                自分自身のトランザクション戦略(例えば、CORBAトランザクションサービス)を定義することもできます。
             </para>
 
             <para>
-                Hibernate‚Ì‚¢‚­‚‚©‚Ì‹@”\i—Ⴆ‚΁A“ñŽŸƒLƒƒƒbƒVƒ…AJTA‚É‚æ‚éƒRƒ“ƒeƒLƒXƒgƒZƒbƒVƒ‡ƒ“ “™j‚Í
-                ŠÇ—‚³‚ꂽŠÂ‹«‚Ì’†‚ÌJTA <literal>TransactionManager</literal> ‚ւ̃AƒNƒZƒX‚ð—v‹‚µ‚Ü‚·B
-                J2EE‚ª‚ЂƂ‚̃ƒJƒjƒYƒ€‚É‹KŠi‰»‚³‚ê‚Ä‚¢‚È‚¢‚̂ŁA
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚É‚¨‚¢‚āAHibernate‚ª <literal>TransactionManager</literal> ‚̃Šƒtƒ@ƒŒƒ“ƒX
-                ‚ðŽæ“¾‚·‚é•û–@‚𖾊m‚É‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
+                Hibernateのいくつかの機能(例えば、二次キャッシュ、JTAによるコンテキストセッション 等)は
+                管理された環境の中のJTA <literal>TransactionManager</literal> へのアクセスを要求します。
+                J2EEがひとつのメカニズムに規格化されていないので、
+                アプリケーションサーバにおいて、Hibernateが <literal>TransactionManager</literal> のリファレンス
+                を取得する方法を明確にする必要があります。
             </para>
 
             <table frame="topbot" id="jtamanagerlookup" revision="1">
-                <title>JTA ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒ}ƒl[ƒWƒƒ</title>
+                <title>JTA トランザクションマネージャ</title>
                 <tgroup cols="2">
                     <colspec colwidth="2.5*"/>
                     <colspec colwidth="1*"/>
@@ -1572,95 +1574,95 @@
         </sect2>
 
         <sect2 id="configuration-optional-jndi" revision="3">
-            <title><literal>SessionFactory</literal> ‚ÌJNDI‚Ö‚Ì“o˜^</title>
+            <title><literal>SessionFactory</literal> のJNDIへの登録</title>
 
             <para>
-                JNDI‚É“o˜^‚µ‚½Hibernate <literal>SessionFactory</literal> ‚Í’Pƒ‚É
-                ƒtƒ@ƒNƒgƒŠ‚ðƒ‹ƒbƒNƒAƒbƒv‚µAV‚µ‚¢ <literal>Session</literal> ‚ðì‚è‚Ü‚·B
-                ‚±‚ê‚ÍJNDI‚É“o˜^‚³‚ꂽ <literal>Datasource</literal> ‚É‚ÍŠÖ˜A‚¹‚¸A
-                ‚¨ŒÝ‚¢‚ɃVƒ“ƒvƒ‹‚É‚±‚ê‚ç‚Ì“o˜^‚ðŽg‚¤‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+                JNDIに登録したHibernate <literal>SessionFactory</literal> は単純に
+                ファクトリをルックアップし、新しい <literal>Session</literal> を作ります。
+                これはJNDIに登録された <literal>Datasource</literal> には関連せず、
+                お互いにシンプルにこれらの登録を使うことに注意してください。
             </para>
 
             <para>
-                ‚à‚µ <literal>SessionFactory</literal> ‚ðJNDIƒl[ƒ€ƒXƒy[ƒX‚É“o˜^‚µ‚½‚¢ê‡A
-                “Á•Ê‚È–¼‘Oi—Ⴆ‚΁A <literal>java:hibernate/SessionFactory</literal> j‚ð
-                <literal>hibernate.session_factory_name</literal> ƒvƒƒpƒeƒB‚ÉŽg‚Á‚Ä‚­‚¾‚³‚¢
-                ‚à‚µ‚±‚̃vƒƒpƒeƒB‚ðÈ—ª‚µ‚½ê‡A <literal>SessionFactory</literal> ‚Í
-                JNDI‚É“o˜^‚³‚ê‚Ü‚¹‚ñBi‚±‚ê‚ÍTomcat‚̂悤‚ȃfƒtƒHƒ‹ƒgŽÀ‘•‚ÅJNDI‚ª“Ç‚Ý‚æ‚èê—p‚̊‹«‚̏ꍇ“Á‚É•Ö—˜‚Å‚·Bj
+                もし <literal>SessionFactory</literal> をJNDIネームスペースに登録したい場合、
+                特別な名前(例えば、 <literal>java:hibernate/SessionFactory</literal> )を
+                <literal>hibernate.session_factory_name</literal> プロパティに使ってください
+                もしこのプロパティを省略した場合、 <literal>SessionFactory</literal> は
+                JNDIに登録されません。(これはTomcatのようなデフォルト実装でJNDIが読みより専用の環境の場合特に便利です。)
             </para>
 
             <para>
-                <literal>SessionFactory</literal> ‚ðJNDI‚É“o˜^‚·‚é‚Æ‚«AHibernate‚Í
-                <literal>hibernate.jndi.url</literal> ‚Ì’l‚ðŽg—p‚µA<literal>hibernate.jndi.class</literal> 
-                ‚ðƒCƒjƒVƒƒƒ‹ƒRƒ“ƒeƒLƒXƒg‚Æ‚µ‚Ä‹ï‘̉»‚µ‚Ü‚·B
-                ‚à‚µ‰½‚àÝ’肵‚È‚¢ê‡‚́AƒfƒtƒHƒ‹ƒg‚Ì <literal>InitialContext</literal> ‚ðŽg—p‚µ‚Ü‚·B
+                <literal>SessionFactory</literal> をJNDIに登録するとき、Hibernateは
+                <literal>hibernate.jndi.url</literal> の値を使用し、<literal>hibernate.jndi.class</literal> 
+                をイニシャルコンテキストとして具体化します。
+                もし何も設定しない場合は、デフォルトの <literal>InitialContext</literal> を使用します。
             </para>
 
             <para>
-                <literal>cfg.buildSessionFactory()</literal> ‚ðƒR[ƒ‹Œã
-                Hibernate‚ÍŽ©“®“I‚É <literal>SessionFactory</literal> ‚ðJNDI‚É”z’u‚µ‚Ü‚·B
-                <literal>HibernateService</literal> ‚ƈꏏ‚ÉJMXƒfƒvƒƒCƒƒ“ƒg‚ðŽg‚í‚È‚¢ŒÀ‚èA
-                ‚±‚ê‚Í‚±‚̌Ăяo‚µ‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ““à‚̉½‚ç‚©‚̃Xƒ^[ƒgƒAƒbƒvƒR[ƒhi‚à‚µ‚­‚̓†[ƒeƒBƒŠƒeƒBƒNƒ‰ƒXj
-                ‚É”z’u‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·BiŒã‚Å‹c˜_‚µ‚Ü‚·j
+                <literal>cfg.buildSessionFactory()</literal> をコール後
+                Hibernateは自動的に <literal>SessionFactory</literal> をJNDIに配置します。
+                <literal>HibernateService</literal> と一緒にJMXデプロイメントを使わない限り、
+                これはこの呼び出しをアプリケーション内の何らかのスタートアップコード(もしくはユーティリティクラス)
+                に配置しなければならないことを意味します。(後で議論します)
             </para>
 
             <para>
-                ‚à‚µJNDI <literal>SessionFactory</literal> ‚ðŽg‚¤ê‡AEJB‚⑼‚̃Nƒ‰ƒX‚Í
-                JNDIƒ‹ƒbƒNƒAƒbƒv‚ðŽg‚Á‚Ä <literal>SessionFactory</literal> ‚ðŽæ“¾‚µ‚Ü‚·B
+                もしJNDI <literal>SessionFactory</literal> を使う場合、EJBや他のクラスは
+                JNDIルックアップを使って <literal>SessionFactory</literal> を取得します。
             </para>
 
             <para>
-                ŠÇ—‚³‚ꂽŠÂ‹«‚Å‚Í <literal>SessionFactory</literal> ‚ðJNDI‚ɃoƒCƒ“ƒh‚µA
-                ‚»‚¤‚Å‚È‚¯‚ê‚Î <literal>static</literal> ƒVƒ“ƒOƒ‹ƒgƒ“‚ðŽg‚¤‚±‚Ƃ𐄏§‚µ‚Ü‚·B
-                ‚±‚¤‚¢‚Á‚½Ú×‚©‚çƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒR[ƒh‚ð•ÛŒì‚·‚邽‚߂ɁA
-                <literal>HibernateUtil.getSessionFactory()</literal> ‚̂悤‚ȃwƒ‹ƒp[ƒNƒ‰ƒX‚Ì’†‚ɁA
-                <literal>SessionFactory</literal> ‚ðƒ‹ƒbƒNƒAƒbƒv‚·‚éƒR[ƒh‚ð‰B‚·‚±‚Ƃ𐄏§‚µ‚Ü‚·B
-                ‚±‚̂悤‚ȃwƒ‹ƒp[ƒNƒ‰ƒX‚ÍHibernate‚ðŠJŽn‚·‚é•Ö—˜‚ÈŽè’i‚Å‚à‚ ‚è‚Ü‚·B
-                &mdash;‚PÍ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                管理された環境では <literal>SessionFactory</literal> をJNDIにバインドし、
+                そうでなければ <literal>static</literal> シングルトンを使うことを推奨します。
+                こういった詳細からアプリケーションコードを保護するために、
+                <literal>HibernateUtil.getSessionFactory()</literal> のようなヘルパークラスの中に、
+                <literal>SessionFactory</literal> をルックアップするコードを隠すことを推奨します。
+                このようなヘルパークラスはHibernateを開始する便利な手段でもあります。
+                &mdash;1章を参照してください。
             </para>
 
         </sect2>
 
         <sect2 id="configuration-j2ee-currentsession" revision="4">
-            <title>JTA‚É‚æ‚錻Ý‚̃ZƒbƒVƒ‡ƒ“ƒRƒ“ƒeƒLƒXƒgƒ}ƒl[ƒWƒƒ“ƒg</title>
+            <title>JTAによる現在のセッションコンテキストマネージメント</title>
 
             <para>
-                ‚à‚Á‚Æ‚àŠÈ’P‚É <literal>Session</literal> ‚ƃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðˆµ‚¤•û–@‚́A
-                Hibernate‚ªŽ©“®“I‚ɁuŒ»Ý‚́v <literal>Session</literal> ‚ðŠÇ—‚·‚邱‚Æ‚Å‚·B
-                <xref linkend="architecture-current-session">ƒJƒŒƒ“ƒgƒZƒbƒVƒ‡ƒ“</xref> ‚Ìà–¾‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
-                ‚à‚µ <literal>uJTAv</literal> ƒZƒbƒVƒ‡ƒ“ƒRƒ“ƒeƒLƒXƒg‚ðŽg‚Á‚½ã‚ŁA
-                Œ»Ý‚ÌJTAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÆHibernate <literal>Session</literal> ‚ªŠÖ˜A‚µ‚Ä‚¢‚È‚¢ê‡‚́A
-                Å‰‚É <literal>sessionFactory.getCurrentSession()</literal> ‚ðƒR[ƒ‹‚µA
-                JTAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Æ‚ÌŠÖ˜A•t‚¯‚ðs‚Á‚Ä‚­‚¾‚³‚¢B
-                <literal>uJTAv</literal> ƒRƒ“ƒeƒLƒXƒg‚Ì <literal>getCurrentSession()</literal> ‚ð
-                ’Ê‚¶‚Ď擾‚µ‚½ <literal>Session</literal> ‚́Aƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŠ®—¹‚·‚é‘O‚É
-                Ž©“®“I‚Ƀtƒ‰ƒbƒVƒ…‚µAŠ®—¹‚µ‚½Œã‚É‚ÍŽ©“®“I‚ɃNƒ[ƒY‚µ‚Ü‚·B
-                ‚Ü‚½AŠeƒXƒe[ƒgƒƒ“ƒgŒã‚ÉJDBCƒRƒlƒNƒVƒ‡ƒ“‚ðÏ‹É“I‚ɃŠƒŠ[ƒX‚µ‚Ü‚·B
-                ‚±‚ê‚É‚æ‚èJTAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃‰ƒCƒtƒTƒCƒNƒ‹‚Å <literal>Session</literal> ‚ðŠÇ—‚·‚邱‚Æ‚ª‚Å‚«A
-                ƒ†[ƒU[‚̃R[ƒh‚©‚ç‚»‚̂悤‚ÈŠÇ—‚ð‚·‚éƒR[ƒh‚ð”rœ‚Å‚«‚Ü‚·B
-                <literal>UserTransaction</literal> ‚ð’Ê‚¶‚ÄJTA‚ðƒvƒƒOƒ‰ƒ€‚ÅŠÇ—‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-                ‚Ü‚½‚́Aiƒ|[ƒ^ƒuƒ‹‚ȃR[ƒh‚Å‚ ‚ê‚΁jHibernate <literal>Transaction</literal> API‚ð
-                ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚Æ‚µ‚ÄŽg‚¤‚±‚Æ‚à‚Å‚«‚Ü‚·B
-                EJBƒRƒ“ƒeƒi‚ðŽg‚¤‚Æ‚«‚́ACMT‚É‚æ‚ééŒ¾“Iƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ªD‚Ü‚µ‚¢‚Å‚·B
+                もっとも簡単に <literal>Session</literal> とトランザクションを扱う方法は、
+                Hibernateが自動的に「現在の」 <literal>Session</literal> を管理することです。
+                <xref linkend="architecture-current-session">カレントセッション</xref> の説明を参照してください。
+                もし <literal>「JTA」</literal> セッションコンテキストを使った上で、
+                現在のJTAトランザクションとHibernate <literal>Session</literal> が関連していない場合は、
+                最初に <literal>sessionFactory.getCurrentSession()</literal> をコールし、
+                JTAトランザクションとの関連付けを行ってください。
+                <literal>「JTA」</literal> コンテキストの <literal>getCurrentSession()</literal> を
+                通じて取得した <literal>Session</literal> は、トランザクションが完了する前に
+                自動的にフラッシュし、完了した後には自動的にクローズします。
+                また、各ステートメント後にJDBCコネクションを積極的にリリースします。
+                これによりJTAトランザクションのライフサイクルで <literal>Session</literal> を管理することができ、
+                ユーザーのコードからそのような管理をするコードを排除できます。
+                <literal>UserTransaction</literal> を通じてJTAをプログラムで管理することができます。
+                または、(ポータブルなコードであれば)Hibernate <literal>Transaction</literal> APIを
+                トランザクション境界として使うこともできます。
+                EJBコンテナを使うときは、CMTによる宣言的トランザクション境界が好ましいです。
             </para>
 
         </sect2>
 
         <sect2 id="configuration-j2ee-jmx" revision="1">
-            <title>JMXƒfƒvƒƒCƒƒ“ƒg</title>
+            <title>JMXデプロイメント</title>
 
             <para>
-                <literal>SessionFactory</literal> ‚ðJNDI‚©‚çŽæ“¾‚·‚邽‚ß‚É‚Í
-                <literal>cfg.buildSessionFactory()</literal> s‚ð‚Ç‚±‚©‚ÅŽÀs‚µ‚Ä‚¢‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                ‚ ‚È‚½‚Í‚±‚ê‚ðA<literal>static</literal> ‰Šú‰»ƒuƒƒbƒN“ài <literal>HibernateUtil</literal> ‚̂悤‚ȁj‚©
-                <emphasis>managed service</emphasis> ‚Æ‚µ‚ÄHibernate‚ðƒfƒvƒƒC‚·‚é‚©A‚Ç‚¿‚ç‚©‚ÅŽÀs‚Å‚«‚Ü‚·B
+                <literal>SessionFactory</literal> をJNDIから取得するためには
+                <literal>cfg.buildSessionFactory()</literal> 行をどこかで実行していなければなりません。
+                あなたはこれを、<literal>static</literal> 初期化ブロック内( <literal>HibernateUtil</literal> のような)か
+                <emphasis>managed service</emphasis> としてHibernateをデプロイするか、どちらかで実行できます。
             </para>
 
             <para>
-               JBOSS‚̂悤‚ÈJMX‚Ì‹@”\‚ŃAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚ɃfƒvƒƒC‚·‚邽‚ß‚É
-               <literal>org.hibernate.jmx.HibernateService</literal> ‚ðŽg‚Á‚āA”z’u‚µ‚Ü‚·B
-               ŽÀÛ‚̃fƒvƒƒCƒƒ“ƒg‚Ɛݒè‚̓xƒ“ƒ_[“Á—L‚Å‚·B
-               ‚±‚±‚Å—á‚Æ‚µ‚ÄJBOSS 4.0.x—p‚Ì <literal>jboss-service.xml</literal> ‚ðŽ¦‚µ‚Ü‚·B
+               JBOSSのようなJMXの機能でアプリケーションサーバにデプロイするために
+               <literal>org.hibernate.jmx.HibernateService</literal> を使って、配置します。
+               実際のデプロイメントと設定はベンダー特有です。
+               ここで例としてJBOSS 4.0.x用の <literal>jboss-service.xml</literal> を示します。
             </para>
 
             <programlisting><![CDATA[<?xml version="1.0"?>
@@ -1707,14 +1709,14 @@
 </server>]]></programlisting>
 
             <para>
-                ‚±‚̃tƒ@ƒCƒ‹‚Í <literal>META-INF</literal> ƒfƒBƒŒƒNƒgƒŠ‚É”z’u‚³‚êA
-                JARƒtƒ@ƒCƒ‹‚ðŠg’£‚µ‚½ <literal>.sar</literal>  (service archive)‚ŃpƒbƒP[ƒW‰»‚³‚ê‚Ü‚·B
-                “¯—l‚ÉHibernateƒpƒbƒP[ƒW‚à•K—v‚Å‚·B‚Ü‚½AHibernate‚̓T[ƒhƒp[ƒeƒB‚̃‰ƒCƒuƒ‰ƒŠ‚à—v‹‚µ‚Ü‚·B
-                ƒRƒ“ƒpƒCƒ‹‚µ‚½‰i‘±‰»ƒNƒ‰ƒX‚Æ‚»‚̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚à“¯—l‚ɃA[ƒJƒCƒui.sarƒtƒ@ƒCƒ‹j‚É“ü‚ê‚Ü‚·B
-                ƒGƒ“ƒ^[ƒvƒ‰ƒCƒYbeani’ʏí‚̓ZƒbƒVƒ‡ƒ“beanj‚ÍŽ©g‚ÌJARƒtƒ@ƒCƒ‹‚ð•ÛŽ‚µ‚Ü‚·‚ªA
-                1‰ñ‚ŁiƒzƒbƒgjƒfƒvƒƒC‰Â”\‚ȃ†ƒjƒbƒg‚Ì‚½‚߂ɃƒCƒ“ƒT[ƒrƒXƒA[ƒJƒCƒu‚Æ‚µ‚Ä‚±‚ÌEJB JARƒtƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚é
-                ‚±‚Æ‚ª‚Å‚«‚Ü‚·BJBossƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo‚̃hƒLƒ…ƒƒ“ƒg‚ÉJXMƒT[ƒrƒX‚Æ
-                EJBƒfƒvƒƒCƒƒ“ƒg‚Ì‚æ‚葽‚­‚̏î•ñ‚ª‚ ‚è‚Ü‚·B
+                このファイルは <literal>META-INF</literal> ディレクトリに配置され、
+                JARファイルを拡張した <literal>.sar</literal>  (service archive)でパッケージ化されます。
+                同様にHibernateパッケージも必要です。また、Hibernateはサードパーティのライブラリも要求します。
+                コンパイルした永続化クラスとそのマッピングファイルも同様にアーカイブ(.sarファイル)に入れます。
+                エンタープライズbean(通常はセッションbean)は自身のJARファイルを保持しますが、
+                1回で(ホット)デプロイ可能なユニットのためにメインサービスアーカイブとしてこのEJB JARファイルをインクルードする
+                ことができます。JBossアプリケーションサーバのドキュメントにJXMサービスと
+                EJBデプロイメントのより多くの情報があります。
             </para>
 
         </sect2>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/events.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/events.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/events.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,31 +1,33 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="events">
-    <title>ƒCƒ“ƒ^[ƒZƒvƒ^‚ƃCƒxƒ“ƒg</title>
+    <title>インターセプタとイベント</title>
 
     <para>
-        ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªHibernate‚Ì“à•”‚Å”­¶‚·‚éƒCƒxƒ“ƒg‚ɑΉž‚Å‚«‚é‚Æ–ð‚É—§‚‚±‚Æ‚ª‚ ‚è‚Ü‚·B
-        ‚ ‚éŽí‚̈ê”Ê“I‚È‹@”\‚ðŽÀ‘•‚Å‚«‚é‚悤‚É‚È‚èA
-        ‚Ü‚½Hibernate‚Ì‹@”\‚ðŠg’£‚·‚邱‚Æ‚à‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚·B
+        アプリケーションがHibernateの内部で発生するイベントに対応できると役に立つことがあります。
+        ある種の一般的な機能を実装できるようになり、
+        またHibernateの機能を拡張することもできるようになります。
     </para>
 
     <sect1 id="objectstate-interceptors" revision="3">
-        <title>ƒCƒ“ƒ^[ƒZƒvƒ^</title>
+        <title>インターセプタ</title>
 
         <para>
-            <literal>Interceptor</literal> ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽg‚Á‚āA
-            ƒZƒbƒVƒ‡ƒ“‚©‚çƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÖƒR[ƒ‹ƒoƒbƒN‚ð‚·‚é‚±‚Æ‚ª‚Å‚«‚Ü‚·B
-            ‚±‚ê‚É‚æ‚è‰i‘±ƒIƒuƒWƒFƒNƒg‚Ì•Û‘¶AXVAíœA“ǂݍž‚Ý‚Ì‘O‚ɁA
-            ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒvƒƒpƒeƒB‚ðŒŸ¸‚µ‚½‚è‘€ì‚µ‚½‚è‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚·B
-            ‚±‚ê‚͊踏î•ñ‚̒ǐՂɗ˜—p‚Å‚«‚Ü‚·B
-            ‰º‚Ì—á‚Å <literal>Interceptor</literal> ‚Í <literal>Auditable</literal> 
-            ‚ªì¬‚³‚ê‚é‚ÆŽ©“®“I‚É <literal>createTimestamp</literal> ‚ðÝ’肵A
-            <literal>Auditable</literal> ‚ªXV‚³‚ê‚é‚ÆŽ©“®“I‚É 
-            <literal>lastUpdateTimestamp</literal> ƒvƒƒpƒeƒB‚ðXV‚µ‚Ü‚·B
+            <literal>Interceptor</literal> インターフェイスを使って、
+            セッションからアプリケーションへコールバックをすることができます。
+            これにより永続オブジェクトの保存、更新、削除、読み込みの前に、
+            アプリケーションがプロパティを検査したり操作したりできるようになります。
+            これは監査情報の追跡に利用できます。
+            下の例で <literal>Interceptor</literal> は <literal>Auditable</literal> 
+            が作成されると自動的に <literal>createTimestamp</literal> を設定し、
+            <literal>Auditable</literal> が更新されると自動的に 
+            <literal>lastUpdateTimestamp</literal> プロパティを更新します。
         </para>
         
         <para>
-            <literal>Interceptor</literal> ‚𒼐ڎÀ‘•‚µ‚½‚èA
-            i‚³‚ç‚É‚æ‚¢‚̂́j<literal>EmptyInterceptor</literal> ‚ðŠg’£‚µ‚½‚è‚Å‚«‚Ü‚·B
+            <literal>Interceptor</literal> を直接実装したり、
+            (さらによいのは)<literal>EmptyInterceptor</literal> を拡張したりできます。
         </para>
 
         <programlisting><![CDATA[package org.hibernate.test;
@@ -112,30 +114,30 @@
 }]]></programlisting>
 
         <para>
-            ƒCƒ“ƒ^[ƒZƒvƒ^‚É‚Í“ñŽí—Þ‚ ‚è‚Ü‚·F
-            <literal>Session</literal> ƒXƒR[ƒv‚Ì‚à‚Ì‚Æ 
-            <literal>SessionFactory</literal> ƒXƒR[ƒv‚Ì‚à‚Ì‚Å‚·B
+            インターセプタには二種類あります:
+            <literal>Session</literal> スコープのものと 
+            <literal>SessionFactory</literal> スコープのものです。
         </para>
 
         <para>
-            <literal>Session</literal> ƒXƒR[ƒv‚̃Cƒ“ƒ^[ƒZƒvƒ^‚́A
-            ƒZƒbƒVƒ‡ƒ“‚ðƒI[ƒvƒ“‚·‚é‚Æ‚«‚ÉŽw’肵‚Ü‚·B
-            <literal>Interceptor</literal> ‚ðˆø”‚ÉŽæ‚éSessionFactory.openSession()
-            ‚̃I[ƒo[ƒ[ƒhƒƒ\ƒbƒh‚̈ê‚‚ðŽg‚¢‚Ü‚·B
+            <literal>Session</literal> スコープのインターセプタは、
+            セッションをオープンするときに指定します。
+            <literal>Interceptor</literal> を引数に取るSessionFactory.openSession()
+            のオーバーロードメソッドの一つを使います。
         </para>
 
         <programlisting><![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]></programlisting>
 
         <para>
-            <literal>SessionFactory</literal> ƒXƒR[ƒv‚̃Cƒ“ƒ^[ƒZƒvƒ^‚Í <literal>Configuration</literal> 
-            ƒIƒuƒWƒFƒNƒg‚ðŽg‚Á‚Ä“o˜^‚µ‚Ü‚·B
-            ‚±‚ê‚Í <literal>SessionFactory</literal> ‚̍\’z‚æ‚è‚à—Dæ‚³‚ê‚Ü‚·B
-            ‚±‚̏ꍇA’ñ‹Ÿ‚³‚ê‚éƒCƒ“ƒ^[ƒZƒvƒ^‚Í <literal>SessionFactory</literal> 
-            ‚©‚çƒI[ƒvƒ“‚³‚ꂽ‚·‚ׂẴZƒbƒVƒ‡ƒ“‚É“K—p‚³‚ê‚Ü‚·B
-            ‚±‚ê‚ÍŽg—p‚·‚éƒCƒ“ƒ^[ƒZƒvƒ^‚𖾎¦“I‚ÉŽw’肵‚ăZƒbƒVƒ‡ƒ“‚ðƒI[ƒvƒ“‚µ‚È‚¢ŒÀ‚èA‚»‚¤‚È‚è‚Ü‚·B
-            <literal>SessionFactory</literal> ƒXƒR[ƒv‚̃Cƒ“ƒ^[ƒZƒvƒ^‚̓XƒŒƒbƒhƒZ[ƒt‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-            •¡”‚̃ZƒbƒVƒ‡ƒ“‚ªiöÝ“I‚Ɂj‚±‚̃Cƒ“ƒ^[ƒZƒvƒ^‚𓯎ž•Às‚ÅŽg—p‚·‚邱‚ƂɂȂ邽‚߁A
-            ƒZƒbƒVƒ‡ƒ“ŒÅ—L‚̏ó‘Ô‚ðŠi”[‚µ‚È‚¢‚悤‚É‹C‚ð‚‚¯‚Ä‚­‚¾‚³‚¢B
+            <literal>SessionFactory</literal> スコープのインターセプタは <literal>Configuration</literal> 
+            オブジェクトを使って登録します。
+            これは <literal>SessionFactory</literal> の構築よりも優先されます。
+            この場合、提供されるインターセプタは <literal>SessionFactory</literal> 
+            からオープンされたすべてのセッションに適用されます。
+            これは使用するインターセプタを明示的に指定してセッションをオープンしない限り、そうなります。
+            <literal>SessionFactory</literal> スコープのインターセプタはスレッドセーフでなければなりません。
+            複数のセッションが(潜在的に)このインターセプタを同時並行で使用することになるため、
+            セッション固有の状態を格納しないように気をつけてください。
         </para>
     
         <programlisting><![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]></programlisting>
@@ -143,46 +145,46 @@
     </sect1>
 
      <sect1 id="objectstate-events" revision="4">
-        <title>ƒCƒxƒ“ƒgƒVƒXƒeƒ€</title>
+        <title>イベントシステム</title>
 
         <para>
-            ‰i‘±‰»‘w‚Å“Á’è‚̃Cƒxƒ“ƒg‚ɑΉž‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢ê‡A
-            Hibernate3‚Ì <emphasis>ƒCƒxƒ“ƒg</emphasis> ƒA[ƒLƒeƒNƒ`ƒƒ‚ðŽg‚¤‚±‚Æ‚à‚Å‚«‚Ü‚·B
-            ƒCƒxƒ“ƒgƒVƒXƒeƒ€‚̓Cƒ“ƒ^[ƒZƒvƒ^‚ƈꏏ‚ÉŽg‚¤‚©A‚Ü‚½‚̓Cƒ“ƒ^[ƒZƒvƒ^‚Ì‘ã‚í‚è‚Æ‚µ‚ÄŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
+            永続化層で特定のイベントに対応しなければならない場合、
+            Hibernate3の <emphasis>イベント</emphasis> アーキテクチャを使うこともできます。
+            イベントシステムはインターセプタと一緒に使うか、またはインターセプタの代わりとして使うことができます。
         </para>
 
         <para>
-            –{Ž¿“I‚É <literal>Session</literal> ƒCƒ“ƒ^[ƒtƒFƒCƒX‚Ì‚·‚ׂẴƒ\ƒbƒh‚́A
-            1ŒÂ‚̃Cƒxƒ“ƒg‚Æ‘ŠŒÝ‚ÉŠÖ˜A‚µ‚Ü‚·B
-            —Ⴆ‚Î <literal>LoadEvent</literal>A<literal>FlushEvent</literal> ‚È‚Ç‚ª‚ ‚è‚Ü‚·
-            i’è‹`Ï‚݂̃Cƒxƒ“ƒgŒ^‚̈ꗗ‚ɂ‚¢‚ẮAXMLÝ’èƒtƒ@ƒCƒ‹‚ÌDTD‚â 
-            <literal>org.hibernate.event</literal> ƒpƒbƒP[ƒW‚𒲂ׂĂ­‚¾‚³‚¢jB
-            ƒŠƒNƒGƒXƒg‚ª‚±‚ê‚ç‚̃ƒ\ƒbƒh‚Ì1‚‚©‚çì‚ç‚ê‚é‚Æ‚«A
-            Hibernate‚Ì <literal>Session</literal> ‚Í“KØ‚ȃCƒxƒ“ƒg‚𐶐¬‚µA
-            ‚»‚̃Cƒxƒ“ƒgŒ^‚ɐݒ肳‚ꂽƒCƒxƒ“ƒgƒŠƒXƒi‚É“n‚µ‚Ü‚·B
-            ‚·‚΂炵‚¢‚±‚ƂɁA‚±‚ê‚ç‚̃ŠƒXƒi‚Í‚»‚̃ƒ\ƒbƒh‚Æ“¯‚¶ˆ—‚ðŽÀ‘•‚µ‚Ü‚·B
-            ‚Æ‚Í‚¢‚¦AƒŠƒXƒiƒCƒ“ƒ^[ƒtƒFƒCƒX‚̈ê‚Â‚ðŽ©—R‚ɃJƒXƒ^ƒ€ŽÀ‘•‚Å‚«‚Ü‚·
-            i‚‚܂èA<literal>LoadEvent</literal> ‚Í“o˜^‚³‚ꂽ <literal>LoadEventListener</literal> 
-            ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ÌŽÀ‘•‚É‚æ‚菈—‚³‚ê‚Ü‚·jB
-            ‚»‚̏ꍇA‚»‚ÌŽÀ‘•‚É‚Í <literal>Session</literal> ‚©‚çì‚ç‚ꂽ‚ǂ̂悤‚È <literal>load()</literal> 
-            ƒŠƒNƒGƒXƒg‚ð‚àˆ—‚·‚éÓ”C‚ª‚ ‚è‚Ü‚·B
+            本質的に <literal>Session</literal> インターフェイスのすべてのメソッドは、
+            1個のイベントと相互に関連します。
+            例えば <literal>LoadEvent</literal>、<literal>FlushEvent</literal> などがあります
+            (定義済みのイベント型の一覧については、XML設定ファイルのDTDや 
+            <literal>org.hibernate.event</literal> パッケージを調べてください)。
+            リクエストがこれらのメソッドの1つから作られるとき、
+            Hibernateの <literal>Session</literal> は適切なイベントを生成し、
+            そのイベント型に設定されたイベントリスナに渡します。
+            すばらしいことに、これらのリスナはそのメソッドと同じ処理を実装します。
+            とはいえ、リスナインターフェイスの一つを自由にカスタム実装できます
+            (つまり、<literal>LoadEvent</literal> は登録された <literal>LoadEventListener</literal> 
+            インターフェイスの実装により処理されます)。
+            その場合、その実装には <literal>Session</literal> から作られたどのような <literal>load()</literal> 
+            リクエストをも処理する責任があります。
         </para>
 
         <para>
-            ƒŠƒXƒi‚ÍŽ–ŽÀãƒVƒ“ƒOƒ‹ƒgƒ“‚Å‚ ‚é‚ÆŒ©‚È‚¹‚Ü‚·B
-            ‚‚܂胊ƒXƒi‚̓ŠƒNƒGƒXƒgŠÔ‚Å‹¤—L‚³‚ê‚邽‚߁A
-            ƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚Æ‚µ‚ďó‘Ô‚ð•ÛŽ‚·‚é‚ׂ«‚Å‚Í‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
+            リスナは事実上シングルトンであると見なせます。
+            つまりリスナはリクエスト間で共有されるため、
+            インスタンス変数として状態を保持するべきではないということです。
         </para>
 
         <para>
-            ƒJƒXƒ^ƒ€ƒŠƒXƒi‚͏ˆ—‚µ‚½‚¢ƒCƒxƒ“ƒg‚ɂ‚¢‚Ä“KØ‚ȃCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽÀ‘•‚·‚é‚ׂ«‚Å‚·B
-            •Ö—˜‚ÈŠî’êƒNƒ‰ƒX‚Ì‚¤‚¿‚̈ê‚‚ðŒp³‚µ‚Ä‚à‚æ‚¢‚Å‚·
-            i‚Ü‚½‚ÍHibernate‚ªƒfƒtƒHƒ‹ƒg‚ÅŽg—p‚·‚éƒCƒxƒ“ƒgƒŠƒXƒi‚ðŒp³‚µ‚Ä‚à‚æ‚¢‚Å‚·B
-            ‚·‚΂炵‚¢‚±‚ƂɁA‚±‚Ì–Ú“I‚Ì‚½‚ß‚É”ñfinal‚Æ‚µ‚Đ錾‚³‚ê‚Ä‚¢‚Ü‚·jB
-            ƒJƒXƒ^ƒ€ƒŠƒXƒi‚Í <literal>Configuration</literal> ƒIƒuƒWƒFƒNƒg‚ðŽg‚Á‚ăvƒƒOƒ‰ƒ€‚©‚ç“o˜^‚·‚é‚©A
-            Hibernate‚ÌXMLÝ’èƒtƒ@ƒCƒ‹‚ÅŽw’è‚Å‚«‚Ü‚·
-            iƒvƒƒpƒeƒBƒtƒ@ƒCƒ‹‚Ő錾“I‚ɐݒ肷‚é•û–@‚̓Tƒ|[ƒg‚³‚ê‚Ä‚¢‚Ü‚¹‚ñjB
-            ƒJƒXƒ^ƒ€ƒ[ƒhƒCƒxƒ“ƒgƒŠƒXƒi‚Ì—á‚ðŽ¦‚µ‚Ü‚·B
+            カスタムリスナは処理したいイベントについて適切なインターフェイスを実装するべきです。
+            便利な基底クラスのうちの一つを継承してもよいです
+            (またはHibernateがデフォルトで使用するイベントリスナを継承してもよいです。
+            すばらしいことに、この目的のために非finalとして宣言されています)。
+            カスタムリスナは <literal>Configuration</literal> オブジェクトを使ってプログラムから登録するか、
+            HibernateのXML設定ファイルで指定できます
+            (プロパティファイルで宣言的に設定する方法はサポートされていません)。
+            カスタムロードイベントリスナの例を示します。
         </para>
 
         <programlisting><![CDATA[public class MyLoadListener implements LoadEventListener {
@@ -196,7 +198,7 @@
 }]]></programlisting>
 
         <para>
-            ƒfƒtƒHƒ‹ƒgƒŠƒXƒiˆÈŠO‚̃ŠƒXƒi‚ðŽg‚¤‚ɂ́AHibernate‚ւ̐ݒè‚à•K—v‚Å‚·F
+            デフォルトリスナ以外のリスナを使うには、Hibernateへの設定も必要です:
         </para>
 
 <programlisting><![CDATA[<hibernate-configuration>
@@ -210,7 +212,7 @@
 </hibernate-configuration>]]></programlisting>
 
         <para>
-            ‚Ü‚½‚»‚Ì‘¼‚ɁAƒvƒƒOƒ‰ƒ€‚Å“o˜^‚·‚é•û–@‚à‚ ‚è‚Ü‚·F
+            またその他に、プログラムで登録する方法もあります:
         </para>
 
         <programlisting><![CDATA[Configuration cfg = new Configuration();
@@ -218,31 +220,31 @@
 cfg.EventListeners().setLoadEventListeners(stack);]]></programlisting>
 
         <para>
-            ƒŠƒXƒi‚ðéŒ¾“I‚É“o˜^‚·‚é‚ƁA‚»‚̃ŠƒXƒi‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð‹¤—L‚Å‚«‚Ü‚¹‚ñB
-            •¡”‚Ì <literal>&lt;listener/&gt;</literal> —v‘f‚Å“¯‚¶ƒNƒ‰ƒX–¼‚ªŽg‚í‚ê‚é‚ƁA
-            ‚»‚ꂼ‚ê‚ÌŽQÆ‚Í‚»‚̃Nƒ‰ƒX‚̕ʁX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ðŽw‚·‚±‚Æ‚É‚È‚è‚Ü‚·B
-            ƒŠƒXƒiŒ^‚̊ԂŃŠƒXƒiƒCƒ“ƒXƒ^ƒ“ƒX‚ð‹¤—L‚·‚é•K—v‚ª‚ ‚ê‚΁A
-            ƒvƒƒOƒ‰ƒ€‚Å“o˜^‚·‚é•û–@‚ðÌ‚ç‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+            リスナを宣言的に登録すると、そのリスナのインスタンスを共有できません。
+            複数の <literal>&lt;listener/&gt;</literal> 要素で同じクラス名が使われると、
+            それぞれの参照はそのクラスの別々のインスタンスを指すことになります。
+            リスナ型の間でリスナインスタンスを共有する必要があれば、
+            プログラムで登録する方法を採らなければなりません。
         </para>
 
         <para>
-            ‚È‚ºƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽÀ‘•‚µ‚āA“Á‰»‚µ‚½Œ^‚ðÝ’莞‚ÉŽw’è‚·‚é‚Ì‚Å‚µ‚傤‚©H
-            ƒŠƒXƒi‚ÌŽÀ‘•ƒNƒ‰ƒX‚ɁA•¡”‚̃Cƒxƒ“ƒgƒŠƒXƒiƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽÀ‘•‚Å‚«‚é‚©‚ç‚Å‚·B
-            “o˜^Žž‚ɒljÁ‚ÅŒ^‚ðŽw’è‚·‚邱‚ƂŁAƒJƒXƒ^ƒ€ƒŠƒXƒi‚Ìon/off‚ðÝ’莞‚ÉŠÈ’P‚ɐ؂è‘Ö‚¦‚ç‚ê‚Ü‚·B
+            なぜインターフェイスを実装して、特化した型を設定時に指定するのでしょうか?
+            リスナの実装クラスに、複数のイベントリスナインターフェイスを実装できるからです。
+            登録時に追加で型を指定することで、カスタムリスナのon/offを設定時に簡単に切り替えられます。
         </para>
 
     </sect1>
     
     <sect1 id="objectstate-decl-security" revision="2">
-        <title>Hibernate‚̐錾“I‚ȃZƒLƒ…ƒŠƒeƒB</title>
+        <title>Hibernateの宣言的なセキュリティ</title>
         <para>
-            ˆê”Ê“I‚ÉHibernateƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̐錾“I‚ȃZƒLƒ…ƒŠƒeƒB‚́AƒZƒbƒVƒ‡ƒ“ƒtƒ@ƒT[ƒh‘w‚ÅŠÇ—‚µ‚Ü‚·B
-            Œ»ÝAHiberenate3‚ÍJACC‚Å‹–‰Â‚µ‚©‚AJAAS‚Å”FØ‚µ‚½ƒAƒNƒVƒ‡ƒ“‚ð‹–‚µ‚Ä‚¢‚Ü‚·B
-            ‚±‚ê‚̓Cƒxƒ“ƒgƒA[ƒLƒeƒNƒ`ƒƒ‚̍ŏãˆÊ‚É‘g‚ݍž‚Ü‚ê‚Ä‚¢‚éƒIƒvƒVƒ‡ƒ“‚Ì‹@”\‚Å‚·B
+            一般的にHibernateアプリケーションの宣言的なセキュリティは、セッションファサード層で管理します。
+            現在、Hiberenate3はJACCで許可しかつ、JAASで認証したアクションを許しています。
+            これはイベントアーキテクチャの最上位に組み込まれているオプションの機能です。
         </para>
         
         <para>
-            ‚Ü‚¸Å‰‚ɁA“KØ‚ȃCƒxƒ“ƒgƒŠƒXƒi‚ðÝ’肵‚ÄJAAS”FØ‚ðŽg‚¦‚é‚悤‚É‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+            まず最初に、適切なイベントリスナを設定してJAAS認証を使えるようにしなければなりません。
         </para>
         
         <programlisting><![CDATA[<listener type="pre-delete" class="org.hibernate.secure.JACCPreDeleteEventListener"/>
@@ -251,21 +253,21 @@
 <listener type="pre-load" class="org.hibernate.secure.JACCPreLoadEventListener"/>]]></programlisting>
 
         <para>
-            “Á’è‚̃Cƒxƒ“ƒgŒ^‚ɑ΂µ‚Ä‚¿‚傤‚Ljê‚‚̃ŠƒXƒi‚ª‚ ‚é‚Æ‚«A
+            特定のイベント型に対してちょうど一つのリスナがあるとき、
             <literal>&lt;listener type="..." class="..."/&gt;</literal> 
-            ‚Í <literal>&lt;event type="..."&gt;&lt;listener class="..."/&gt;&lt;/event&gt;</literal> 
-            ‚ÌŠÈ—ªŒ`‚ɉ߂¬‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+            は <literal>&lt;event type="..."&gt;&lt;listener class="..."/&gt;&lt;/event&gt;</literal> 
+            の簡略形に過ぎないことに注意してください。
         </para>
 
         <para>
-            ŽŸ‚ɁA“¯‚¶‚­ <literal>hibernate.cfg.xml</literal> ‚э[ƒ‹‚Ƀp[ƒ~ƒbƒVƒ‡ƒ“‚ð—^‚¦‚Ä‚­‚¾‚³‚¢F
+            次に、同じく <literal>hibernate.cfg.xml</literal> でロールにパーミッションを与えてください:
         </para>
         
         <programlisting><![CDATA[<grant role="admin" entity-name="User" actions="insert,update,read"/>
 <grant role="su" entity-name="User" actions="*"/>]]></programlisting>
         
         <para>
-            ‚±‚̃[ƒ‹–¼‚ÍŽg—p‚·‚éJACCƒvƒƒoƒCƒ_‚É—‰ð‚³‚ê‚郍[ƒ‹‚Å‚·B
+            このロール名は使用するJACCプロバイダに理解されるロールです。
         </para>
        
     </sect1>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_mappings.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_mappings.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_mappings.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,22 +1,22 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!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‚¢‚ë‚¢‚ë‚ȃ}ƒbƒsƒ“ƒO</title>
+    <title>例:いろいろなマッピング</title>
     
     <para>
-        ‚±‚̏͂ł́A‚æ‚è•¡ŽG‚ÈŠÖ˜A‚̃}ƒbƒsƒ“ƒO‚ð‚¢‚­‚‚©Ð‰î‚µ‚Ü‚·B
+        この章では、より複雑な関連のマッピングをいくつか紹介します。
     </para>
     
     <sect1 id="example-mappings-emp">
-        <title>ŒÙ—pŽÒ/]‹Æˆõ</title>
+        <title>雇用者/従業員</title>
 
         <para>
-            <literal>Employer</literal> ‚Æ <literal>Employee</literal> ‚ÌŠÖŒW‚ð•\‚·ˆÈ‰º‚̃‚ƒfƒ‹‚́A
-            ŠÖ˜A‚Ì•\Œ»‚ÉŽÀÛ‚̃Gƒ“ƒeƒBƒeƒBƒNƒ‰ƒXi <literal>Employment</literal> j
-            ‚ðŽg‚¢‚Ü‚·B
-            ‚È‚º‚È‚çA“¯‚¶2‚‚̃p[ƒeƒB‚É•¡”‚ÌŠúŠÔŒÙ—p‚³‚ê‚é‚Æ‚¢‚¤‚±‚Æ‚ª‚ ‚肦‚é‚©‚ç‚Å‚·B
-            ‚¨‹à‚Ì’l‚Ə]‹Æˆõ‚Ì–¼‘O‚ðƒ‚ƒfƒ‹‰»‚·‚邽‚߂ɃRƒ“ƒ|[ƒlƒ“ƒg‚ðŽg‚Á‚Ä‚¢‚Ü‚·B
+            <literal>Employer</literal> と <literal>Employee</literal> の関係を表す以下のモデルは、
+            関連の表現に実際のエンティティクラス( <literal>Employment</literal> )
+            を使います。
+            なぜなら、同じ2つのパーティに複数の期間雇用されるということがありえるからです。
+            お金の値と従業員の名前をモデル化するためにコンポーネントを使っています。
         </para>
 
         <mediaobject>
@@ -29,7 +29,7 @@
         </mediaobject>
         
         <para>
-            ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚̈ê—á‚Å‚·F
+            マッピングドキュメントの一例です:
         </para>
         
         <programlisting><![CDATA[<hibernate-mapping>
@@ -82,7 +82,7 @@
 </hibernate-mapping>]]></programlisting>
 
     <para>
-        <literal>SchemaExport</literal> ‚Ő¶¬‚µ‚½ƒe[ƒuƒ‹ƒXƒL[ƒ}‚Å‚·B
+        <literal>SchemaExport</literal> で生成したテーブルスキーマです。
     </para>
 
     <programlisting><![CDATA[create table employers (
@@ -122,14 +122,14 @@
     </sect1>
     
     <sect1 id="example-mappings-authorwork">
-        <title>ìŽÒ/ì•i</title>
+        <title>作者/作品</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
+            <literal>Work</literal> , <literal>Author</literal> そして <literal>Person</literal> 
+            の関係を表す以下のモデルを考えてみてください。
+            <literal>Work</literal> と <literal>Author</literal> の関係を多対多関連で表しています。
+            <literal>Author</literal> と <literal>Person</literal> の関係は一対一関連として表しています。
+            他には <literal>Author</literal> が <literal>Person</literal> を拡張するという方法もあります。
         </para>
 
         <mediaobject>
@@ -142,7 +142,7 @@
         </mediaobject>
         
         <para>
-            ˆÈ‰º‚̃}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚Í‚±‚̂悤‚ÈŠÖŒW‚𐳊m‚É•\Œ»‚µ‚Ä‚¢‚Ü‚·B
+            以下のマッピングドキュメントはこのような関係を正確に表現しています。
         </para>
         
         <programlisting><![CDATA[<hibernate-mapping>
@@ -198,11 +198,11 @@
 </hibernate-mapping>]]></programlisting>
 
     <para>
-        ‚±‚̃}ƒbƒsƒ“ƒO‚É‚Í4‚‚̃e[ƒuƒ‹‚ª‚ ‚è‚Ü‚·B
+        このマッピングには4つのテーブルがあります。
         <literal>works</literal> , <literal>authors</literal> , <literal>persons</literal> 
-        ‚Í‚»‚ꂼ‚êAŽdŽ–AìŽÒAl‚̃f[ƒ^‚ð•ÛŽ‚µ‚Ü‚·B
-        <literal>author_work</literal> ‚͍ìŽÒ‚ƍì•i‚ðƒŠƒ“ƒN‚·‚éŠÖ˜Aƒe[ƒuƒ‹‚Å‚·B
-        ˆÈ‰º‚Í <literal>SchemaExport</literal> ‚Ő¶¬‚µ‚½ƒe[ƒuƒ‹ƒXƒL[ƒ}‚Å‚·B
+        はそれぞれ、仕事、作者、人のデータを保持します。
+        <literal>author_work</literal> は作者と作品をリンクする関連テーブルです。
+        以下は <literal>SchemaExport</literal> で生成したテーブルスキーマです。
     </para>
 
     <programlisting><![CDATA[create table works (
@@ -243,17 +243,17 @@
     </sect1>
 
     <sect1 id="example-mappings-customerorderproduct">
-        <title>ŒÚ‹q/’•¶/»•i</title>
+        <title>顧客/注文/製品</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>Customer</literal> , <literal>Order</literal> , <literal>LineItem</literal> 
+            <literal>Product</literal> の関係を表すモデルを考えてみましょう。
+            <literal>Customer</literal> と <literal>Order</literal> は一対多の関連ですが、
             <literal>Order</literal> / <literal>LineItem</literal> / <literal>Product</literal> 
-            ‚͂ǂ̂悤‚É•\Œ»‚·‚é‚ׂ«‚Å‚µ‚傤‚©H
-            <literal>LineItem</literal> ‚ðA<literal>Order</literal> ‚Æ <literal>Product</literal> 
-            ‚Ì‘½‘Α½ŠÖ˜A‚ð•\Œ»‚·‚éŠÖ˜AƒNƒ‰ƒX‚Æ‚µ‚ă}ƒbƒsƒ“ƒO‚µ‚Ü‚µ‚½B
-            Hibernate‚Å‚Í‚±‚ê‚ðƒRƒ“ƒ|ƒWƒbƒg—v‘f‚ƌĂт܂·B
+            はどのように表現するべきでしょうか?
+            <literal>LineItem</literal> を、<literal>Order</literal> と <literal>Product</literal> 
+            の多対多関連を表現する関連クラスとしてマッピングしました。
+            Hibernateではこれをコンポジット要素と呼びます。
         </para>
 
         <mediaobject>
@@ -266,7 +266,7 @@
         </mediaobject>
         
         <para>
-            ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒgF
+            マッピングドキュメント:
         </para>
         
         <programlisting><![CDATA[<hibernate-mapping>
@@ -309,8 +309,8 @@
 
     <para>
         <literal>customers</literal> , <literal>orders</literal> , <literal>line_items</literal> , 
-        <literal>products</literal> ‚Í‚»‚ꂼ‚êAŒÚ‹qA’•¶A’•¶–¾×A»•i‚̃f[ƒ^‚ð•ÛŽ‚µ‚Ü‚·B
-        <literal>line_items</literal> ‚Í’•¶‚Ɛ»•i‚ðƒŠƒ“ƒN‚·‚éŠÖ˜Aƒe[ƒuƒ‹‚Æ‚µ‚Ä‚à“­‚«‚Ü‚·B
+        <literal>products</literal> はそれぞれ、顧客、注文、注文明細、製品のデータを保持します。
+        <literal>line_items</literal> は注文と製品をリンクする関連テーブルとしても働きます。
     </para>
 
     <programlisting><![CDATA[create table customers (
@@ -350,18 +350,18 @@
     </sect1>
     
     <sect1 id="misc">
-        <title>ŽíXŽG‘½‚ȃ}ƒbƒsƒ“ƒO—á</title>
+        <title>種々雑多なマッピング例</title>
         
         <para>
-            ‚±‚±‚É‚ ‚é—á‚Í‚·‚ׂÄHibernate‚̃eƒXƒgƒXƒC[ƒg‚©‚çŽæ‚è‚Ü‚µ‚½B
-            ‚»‚±‚ɂ́A‘¼‚É‚à‚½‚­‚³‚ñ‚̃}ƒbƒsƒ“ƒO‚̗Ⴊ‚ ‚è‚Ü‚·B
-            HibernateƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚Ì <literal>test</literal> ƒtƒHƒ‹ƒ_‚ðŒ©‚Ä‚­‚¾‚³‚¢B
+            ここにある例はすべてHibernateのテストスイートから取りました。
+            そこには、他にもたくさんのマッピングの例があります。
+            Hibernateディストリビューションの <literal>test</literal> フォルダを見てください。
         </para>
         
-        <para>TODO: ‚±‚±‚É•¶Í‚ð–„‚ß‚é</para>
+        <para>TODO: ここに文章を埋める</para>
         
         <sect2 id="example-mappings-typed-onetone">
-            <title>uŒ^•t‚¯‚³‚ꂽvˆê‘ΈêŠÖ˜A</title>
+            <title>「型付けされた」一対一関連</title>
 <programlisting><![CDATA[<class name="Person">
     <id name="name"/>
     <one-to-one name="address" 
@@ -391,7 +391,7 @@
         </sect2>
         
         <sect2 id="example-mappings-composite-key">
-            <title>•¡‡ƒL[‚Ì—á</title>
+            <title>複合キーの例</title>
 <programlisting><![CDATA[<class name="Customer">
 
     <id name="customerId"
@@ -508,7 +508,7 @@
         </sect2>
         
         <sect2 id="example-mappings-composite-key-manytomany">
-            <title>•¡‡ƒL[‘®«‚ð‹¤—L‚·‚鑽‘Α½</title>
+            <title>複合キー属性を共有する多対多</title>
 <programlisting><![CDATA[<class name="User" table="`User`">
     <composite-id>
         <key-property name="name"/>
@@ -547,7 +547,7 @@
         </sect2>
 
         <sect2 id="example-mappings-content-discrimination">
-            <title>discrimination‚ÉŠî‚­“à—e</title>
+            <title>discriminationに基づく内容</title>
 <programlisting><![CDATA[<class name="Person"
     discriminator-value="P">
     
@@ -601,7 +601,7 @@
         </sect2>
 
         <sect2 id="example-mappings-association-alternatekeys" revision="2">
-            <title>‘ã‘ÖƒL[‚ÌŠÖ˜A</title>
+            <title>代替キーの関連</title>
 <programlisting><![CDATA[<class name="Person">
     
     <id name="id">

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_parentchild.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_parentchild.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_parentchild.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,70 +1,72 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="example-parentchild">
-    <title>—áFe/Žq‹Ÿ
+    <title>例:親/子供
     </title>
 
     <para>
-        V‹Kƒ†[ƒU‚ªHibernate‚ðŽg‚Á‚Ä‚Ü‚¸Å‰‚Ɉµ‚¤ƒ‚ƒfƒ‹‚̈ê‚‚ɁAeŽqŒ^‚̃‚ƒfƒ‹‰»‚ª‚ ‚è‚Ü‚·B
-        ‚±‚̃‚ƒfƒ‹‰»‚É‚Í“ñ‚‚̃Aƒvƒ[ƒ`‚ª‘¶Ý‚µ‚Ü‚·B‚Æ‚è‚킯V‹Kƒ†[ƒU‚É‚Æ‚Á‚āA
-        ‚³‚Ü‚´‚Ü‚È——R‚©‚çÅ‚à•Ö—˜‚¾‚ÆŽv‚í‚ê‚éƒAƒvƒ[ƒ`‚́A<literal>e</literal> ‚©‚ç <literal>Žq‹Ÿ</literal> 
-        ‚Ö‚Ì <literal>&lt;one-to-many&gt;</literal> ŠÖ˜A‚É‚æ‚è <literal>e</literal> ‚Æ <literal>Žq‹Ÿ</literal> 
-        ‚Ì—¼•û‚ðƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒX‚Æ‚µ‚ă‚ƒfƒŠƒ“ƒO‚·‚é•û–@‚Å‚·
-        i‚à‚¤ˆê‚‚̕û–@‚́A<literal>Žq‹Ÿ</literal> ‚ð <literal>&lt;composite-element&gt;</literal> ‚Æ‚µ‚Ä’è‹`‚·‚é‚à‚Ì‚Å‚·jB
-        ‚±‚ê‚ŁiHibernate‚É‚¨‚¯‚éjˆê‘Α½ŠÖ˜A‚̃fƒtƒHƒ‹ƒg‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚ªA’ʏí‚Ì•¡‡—v‘f‚̃}ƒbƒsƒ“ƒO‚æ‚è‚àA
-        eŽqŠÖŒW‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚©‚牓‚¢‚±‚Æ‚ª‚í‚©‚è‚Ü‚·B
-        ‚»‚ê‚ł͐eŽqŠÖŒW‚ðŒø—¦“I‚©‚ƒGƒŒƒKƒ“ƒg‚Ƀ‚ƒfƒŠƒ“ƒO‚·‚邽‚߂ɁA
-        <emphasis>ƒJƒXƒP[ƒh‘€ì‚ðŽg‚Á‚½‘o•ûŒüˆê‘Α½ŠÖ˜A</emphasis> ‚̈µ‚¢•û‚ðà–¾‚µ‚Ü‚·B‚±‚ê‚Í‚Ü‚Á‚½‚­“‚¢‚à‚Ì‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
+        新規ユーザがHibernateを使ってまず最初に扱うモデルの一つに、親子型のモデル化があります。
+        このモデル化には二つのアプローチが存在します。とりわけ新規ユーザにとって、
+        さまざまな理由から最も便利だと思われるアプローチは、<literal>親</literal> から <literal>子供</literal> 
+        への <literal>&lt;one-to-many&gt;</literal> 関連により <literal>親</literal> と <literal>子供</literal> 
+        の両方をエンティティクラスとしてモデリングする方法です
+        (もう一つの方法は、<literal>子供</literal> を <literal>&lt;composite-element&gt;</literal> として定義するものです)。
+        これで(Hibernateにおける)一対多関連のデフォルトのセマンティクスが、通常の複合要素のマッピングよりも、
+        親子関係のセマンティクスから遠いことがわかります。
+        それでは親子関係を効率的かつエレガントにモデリングするために、
+        <emphasis>カスケード操作を使った双方向一対多関連</emphasis> の扱い方を説明します。これはまったく難しいものではありません。
         
     </para>
     
     <sect1 id="example-parentchild-collections">
-        <title>ƒRƒŒƒNƒVƒ‡ƒ“‚ÉŠÖ‚·‚钍ˆÓ</title>
+        <title>コレクションに関する注意</title>
 
         <para>
-            Hibernate‚̃RƒŒƒNƒVƒ‡ƒ“‚ÍŽ©g‚̃Gƒ“ƒeƒBƒeƒB‚̘_—“I‚È•”•ª‚ƍl‚¦‚ç‚êA
-            Œˆ‚µ‚Ä•ïŠÜ‚·‚éƒGƒ“ƒeƒBƒeƒB‚Ì‚à‚Ì‚Å‚Í‚ ‚è‚Ü‚¹‚ñB‚±‚ê‚Í’v–½“I‚ȈႢ‚Å‚·I
-            ‚±‚ê‚͈ȉº‚̂悤‚ÈŒ‹‰Ê‚É‚È‚è‚Ü‚·F
+            Hibernateのコレクションは自身のエンティティの論理的な部分と考えられ、
+            決して包含するエンティティのものではありません。これは致命的な違いです!
+            これは以下のような結果になります:
         </para>
 
         <itemizedlist>
             <listitem>
             <para>
-                ƒIƒuƒWƒFƒNƒg‚ðƒRƒŒƒNƒVƒ‡ƒ“‚©‚çíœA‚Ü‚½‚̓RƒŒƒNƒVƒ‡ƒ“‚ɒljÁ‚·‚é‚Æ‚«A
-                ƒRƒŒƒNƒVƒ‡ƒ“‚̃I[ƒi[‚̃o[ƒWƒ‡ƒ“”ԍ†‚̓Cƒ“ƒNƒŠƒƒ“ƒg‚³‚ê‚Ü‚·B
+                オブジェクトをコレクションから削除、またはコレクションに追加するとき、
+                コレクションのオーナーのバージョン番号はインクリメントされます。
             </para>
             </listitem>
             <listitem>
             <para>
-                ‚à‚µƒRƒŒƒNƒVƒ‡ƒ“‚©‚çíœ‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ª’lŒ^‚̃Cƒ“ƒXƒ^ƒ“ƒX
-                i—Ⴆ‚΃Rƒ“ƒ|ƒWƒbƒgƒGƒŒƒƒ“ƒg)‚¾‚Á‚½‚È‚ç‚΁A‚»‚̃IƒuƒWƒFƒNƒg‚͉i‘±“I‚Å‚Í‚È‚­‚È‚èA
-                ‚»‚̏ó‘Ԃ̓f[ƒ^ƒx[ƒX‚©‚犮‘S‚ɍ폜‚³‚ê‚Ü‚·B
-                “¯‚¶‚悤‚ɁA’lŒ^‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ðƒRƒŒƒNƒVƒ‡ƒ“‚ɒljÁ‚·‚é‚ƁA‚»‚̏ó‘Ô‚Í‚·‚®‚ɉi‘±“I‚É‚È‚è‚Ü‚·B
+                もしコレクションから削除されたオブジェクトが値型のインスタンス
+                (例えばコンポジットエレメント)だったならば、そのオブジェクトは永続的ではなくなり、
+                その状態はデータベースから完全に削除されます。
+                同じように、値型のインスタンスをコレクションに追加すると、その状態はすぐに永続的になります。
             </para>
             </listitem>
             <listitem>
             <para>
-                ˆê•ûA‚à‚µƒGƒ“ƒeƒBƒeƒB‚ªƒRƒŒƒNƒVƒ‡ƒ“iˆê‘Α½‚Ü‚½‚Í‘½‘Α½ŠÖ˜A)‚©‚çíœ‚³‚ê‚Ä‚àA
-                ƒfƒtƒHƒ‹ƒg‚Å‚Í‚»‚ê‚͍폜‚³‚ê‚Ü‚¹‚ñB‚±‚Ì“®ì‚ÍŠ®‘S‚ɈêŠÑ‚µ‚Ä‚¢‚Ü‚·B
-                ‚·‚È‚í‚¿A‘¼‚̃Gƒ“ƒeƒBƒeƒB‚Ì“à•”ó‘Ô‚ð•ÏX‚µ‚Ä‚àAŠÖ˜A‚·‚éƒGƒ“ƒeƒBƒeƒB‚ªÁ–Å‚·‚ׂ«‚Å‚Í‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
-                “¯—l‚ɁAƒGƒ“ƒeƒBƒeƒB‚ªƒRƒŒƒNƒVƒ‡ƒ“‚ɒljÁ‚³‚ê‚Ä‚àAƒfƒtƒHƒ‹ƒg‚Å‚Í‚»‚̃Gƒ“ƒeƒBƒeƒB‚͉i‘±“I‚É‚Í‚È‚è‚Ü‚¹‚ñB
+                一方、もしエンティティがコレクション(一対多または多対多関連)から削除されても、
+                デフォルトではそれは削除されません。この動作は完全に一貫しています。
+                すなわち、他のエンティティの内部状態を変更しても、関連するエンティティが消滅すべきではないということです。
+                同様に、エンティティがコレクションに追加されても、デフォルトではそのエンティティは永続的にはなりません。
             </para>
             </listitem>
         </itemizedlist>
 
         <para>
-            ‚»‚Ì‘ã‚í‚è‚ɁAƒfƒtƒHƒ‹ƒg‚Ì“®ì‚ł́AƒGƒ“ƒeƒBƒeƒB‚ðƒRƒŒƒNƒVƒ‡ƒ“‚ɒljÁ‚·‚é‚Æ’P‚É“ñ‚‚̃Gƒ“ƒeƒBƒeƒBŠÔ‚̃Šƒ“ƒN‚ðì¬‚µA
-            ˆê•ûƒGƒ“ƒeƒBƒeƒB‚ðíœ‚·‚é‚ƃŠƒ“ƒN‚àíœ‚µ‚Ü‚·B‚±‚ê‚Í‚·‚ׂẴP[ƒX‚É‚¨‚¢‚Ä”ñí‚É“KØ‚Å‚·B
-            ‚±‚ꂪ“KØ‚Å‚È‚¢‚̂͐e/ŽqŠÖŒW‚̏ꍇ‚Å‚·B‚±‚̏ꍇŽq‹Ÿ‚̐¶‘¶‚͐e‚̃‰ƒCƒtƒTƒCƒNƒ‹‚ɐ§ŒÀ‚³‚ê‚é‚©‚ç‚Å‚·B
+            その代わりに、デフォルトの動作では、エンティティをコレクションに追加すると単に二つのエンティティ間のリンクを作成し、
+            一方エンティティを削除するとリンクも削除します。これはすべてのケースにおいて非常に適切です。
+            これが適切でないのは親/子関係の場合です。この場合子供の生存は親のライフサイクルに制限されるからです。
         </para>
     
     </sect1>
 
     <sect1 id="example-parentchild-bidir">
-        <title>‘o•ûŒüˆê‘Α½
+        <title>双方向一対多
         </title>
 
         <para>
-            <literal>Parent</literal> ‚©‚ç <literal>Child</literal> ‚Ö‚Ì’Pƒ‚È <literal>&lt;one-to-many&gt;</literal> ŠÖ˜A‚©‚çŽn‚ß‚é‚Æ‚µ‚Ü‚·B
+            <literal>Parent</literal> から <literal>Child</literal> への単純な <literal>&lt;one-to-many&gt;</literal> 関連から始めるとします。
         </para>
 
         <programlisting><![CDATA[<set name="children">
@@ -73,7 +75,7 @@
 </set>]]></programlisting>
     
         <para>
-            ˆÈ‰º‚̃R[ƒh‚ðŽÀs‚·‚é‚ƁA
+            以下のコードを実行すると、
         </para>
 
         <programlisting><![CDATA[Parent p = .....;
@@ -83,25 +85,25 @@
 session.flush();]]></programlisting>
     
         <para>
-            Hibernate‚Í“ñ‚‚ÌSQL•¶‚𔭍s‚µ‚Ü‚·:
+            Hibernateは二つのSQL文を発行します:
         </para>
 
         <itemizedlist>
         <listitem>
             <para>
-            <literal>c</literal>‚ɑ΂·‚郌ƒR[ƒh‚𐶐¬‚·‚é<literal>INSERT</literal>
+            <literal>c</literal>に対するレコードを生成する<literal>INSERT</literal>
             </para>
         </listitem>
         <listitem>
             <para>
-            <literal>p</literal>‚©‚ç<literal>c</literal>‚ւ̃Šƒ“ƒN‚ðì¬‚·‚é<literal>UPDATE</literal>
+            <literal>p</literal>から<literal>c</literal>へのリンクを作成する<literal>UPDATE</literal>
             </para>
         </listitem>
         </itemizedlist>
     
         <para>
-            ‚±‚ê‚Í”ñŒø—¦“I‚È‚¾‚¯‚Å‚Í‚È‚­A<literal>parent_id</literal> ƒJƒ‰ƒ€‚É‚¨‚¢‚Ä <literal>NOT NULL</literal> §–ñ‚Ɉᔽ‚µ‚Ü‚·B
-            ƒRƒŒƒNƒVƒ‡ƒ“‚̃}ƒbƒsƒ“ƒO‚Å <literal>not-null="true"</literal> ‚ÆŽw’è‚·‚邱‚ƂŁAnull§–ñˆá”½‚ð‰ðŒˆ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·:
+            これは非効率的なだけではなく、<literal>parent_id</literal> カラムにおいて <literal>NOT NULL</literal> 制約に違反します。
+            コレクションのマッピングで <literal>not-null="true"</literal> と指定することで、null制約違反を解決することができます:
         </para>
 
         <programlisting><![CDATA[<set name="children">
@@ -110,24 +112,24 @@
 </set>]]></programlisting>
     
         <para>
-            ‚µ‚©‚µ‚±‚Ì‰ðŒˆô‚͐„§‚Å‚«‚Ü‚¹‚ñB
+            しかしこの解決策は推奨できません。
         </para>
         <para>
-            ‚±‚Ì“®ì‚̍ª–{“I‚ÈŒ´ˆö‚́A<literal>p</literal> ‚©‚ç <literal>c</literal> ‚ւ̃Šƒ“ƒN
-            iŠO•”ƒL[ <literal>parent_id</literal>)‚Í <literal>Child</literal> ƒIƒuƒWƒFƒNƒg‚̏ó‘Ԃ̈ꕔ‚Ƃ͍l‚¦‚ç‚ꂸA
-            ‚»‚Ì‚½‚ß <literal>INSERT</literal> ‚É‚æ‚Á‚ăŠƒ“ƒN‚ª¶¬‚³‚ê‚È‚¢‚±‚Æ‚Å‚·B
-            ‚Å‚·‚©‚çA‰ðŒˆô‚̓Šƒ“ƒN‚ðChildƒ}ƒbƒsƒ“ƒO‚̈ꕔ‚É‚·‚邱‚Æ‚Å‚·B
+            この動作の根本的な原因は、<literal>p</literal> から <literal>c</literal> へのリンク
+            (外部キー <literal>parent_id</literal>)は <literal>Child</literal> オブジェクトの状態の一部とは考えられず、
+            そのため <literal>INSERT</literal> によってリンクが生成されないことです。
+            ですから、解決策はリンクをChildマッピングの一部にすることです。
         </para>
 
         <programlisting><![CDATA[<many-to-one name="parent" column="parent_id" not-null="true"/>]]></programlisting>
 
         <para>
-            (‚Ü‚½ <literal>Child</literal> ƒNƒ‰ƒX‚É <literal>parent</literal> ƒvƒƒpƒeƒB‚ð’ljÁ‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B)
+            (また <literal>Child</literal> クラスに <literal>parent</literal> プロパティを追加する必要があります。)
         </para>
 
         <para>
-            ‚»‚ê‚Å‚Í <literal>Child</literal> ƒGƒ“ƒeƒBƒeƒB‚ªƒŠƒ“ƒN‚̏ó‘Ԃ𐧌䂷‚é‚悤‚É‚È‚Á‚½‚̂ŁA
-            ƒRƒŒƒNƒVƒ‡ƒ“‚ªƒŠƒ“ƒN‚ðXV‚µ‚È‚¢‚悤‚É‚µ‚Ü‚µ‚傤B‚»‚ê‚É‚Í <literal>inverse</literal> ‘®«‚ðŽg‚¢‚Ü‚·B
+            それでは <literal>Child</literal> エンティティがリンクの状態を制御するようになったので、
+            コレクションがリンクを更新しないようにしましょう。それには <literal>inverse</literal> 属性を使います。
         </para>
 
         <programlisting><![CDATA[<set name="children" inverse="true">
@@ -136,7 +138,7 @@
 </set>]]></programlisting>
 
         <para>
-            ˆÈ‰º‚̃R[ƒh‚ðŽg‚¦‚΁AV‚µ‚¢ <literal>Child</literal> ‚ð’ljÁ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+            以下のコードを使えば、新しい <literal>Child</literal> を追加することができます。
         </para>
 
         <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class, pid);
@@ -147,11 +149,11 @@
 session.flush();]]></programlisting>
 
         <para>
-            ‚±‚ê‚É‚æ‚èASQL‚Ì <literal>INSERT</literal> •¶‚ªˆê‚‚¾‚¯‚ª”­s‚³‚ê‚é‚悤‚É‚È‚è‚Ü‚µ‚½I
+            これにより、SQLの <literal>INSERT</literal> 文が一つだけが発行されるようになりました!
         </para>
 
         <para>
-            ‚à‚¤­‚µ‹­‰»‚·‚é‚ɂ́A<literal>Parent</literal> ‚Ì <literal>addChild()</literal> ƒƒ\ƒbƒh‚ðì¬‚µ‚Ü‚·B
+            もう少し強化するには、<literal>Parent</literal> の <literal>addChild()</literal> メソッドを作成します。
         </para>
 
         <programlisting><![CDATA[public void addChild(Child c) {
@@ -160,7 +162,7 @@
 }]]></programlisting>
 
         <para>
-            <literal>Child</literal> ‚ð’ljÁ‚·‚éƒR[ƒh‚Í‚±‚̂悤‚É‚È‚è‚Ü‚·B
+            <literal>Child</literal> を追加するコードはこのようになります。
         </para>
 
         <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class, pid);
@@ -172,10 +174,10 @@
      </sect1>
      
      <sect1 id="example-parentchild-cascades">
-         <title>ƒ‰ƒCƒtƒTƒCƒNƒ‹‚̃JƒXƒP[ƒh</title>
+         <title>ライフサイクルのカスケード</title>
      
          <para>
-              –¾Ž¦“I‚É <literal>save()</literal> ‚ðƒR[ƒ‹‚·‚é‚Ì‚Í‚Ü‚¾”ς킵‚¢‚à‚Ì‚Å‚·B‚±‚ê‚ðƒJƒXƒP[ƒh‚ðŽg‚Á‚đΏˆ‚µ‚Ü‚·B
+              明示的に <literal>save()</literal> をコールするのはまだ煩わしいものです。これをカスケードを使って対処します。
          </para>
 
         <programlisting><![CDATA[<set name="children" inverse="true" cascade="all">
@@ -184,7 +186,7 @@
 </set>]]></programlisting>
      
          <para>
-             ‚±‚ê‚É‚æ‚èæ‚قǂ̃R[ƒh‚ð‚±‚Ì‚æ‚¤‚É’Pƒ‰»‚µ‚Ü‚·
+             これにより先ほどのコードをこのように単純化します
          </para>
 
         <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class, pid);
@@ -193,8 +195,8 @@
 session.flush();]]></programlisting>
      
          <para>
-             “¯—l‚É <literal>Parent</literal> ‚ð•Û‘¶‚Ü‚½‚͍폜‚·‚é‚Æ‚«‚ɁAŽq‹Ÿ‚ðˆê‚ˆê‚ÂŽæ‚èo‚µ‚Ĉµ‚¤•K—v‚Í‚ ‚è‚Ü‚¹‚ñB
-             ˆÈ‰º‚̃R[ƒh‚Í <literal>p</literal> ‚ðíœ‚µA‚»‚µ‚ăf[ƒ^ƒx[ƒX‚©‚ç‚»‚ÌŽq‹Ÿ‚ð‚·‚×‚Äíœ‚µ‚Ü‚·B
+             同様に <literal>Parent</literal> を保存または削除するときに、子供を一つ一つ取り出して扱う必要はありません。
+             以下のコードは <literal>p</literal> を削除し、そしてデータベースからその子供をすべて削除します。
          </para>
 
          <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class, pid);
@@ -202,7 +204,7 @@
 session.flush();]]></programlisting>
      
          <para>
-             ‚µ‚©‚µ‚±‚̃R[ƒh‚Í
+             しかしこのコードは
          </para>
 
          <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class, pid);
@@ -212,9 +214,9 @@
 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> ‚𖾎¦‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
+             データベースから <literal>c</literal> を削除しません。<literal>p</literal> へのリンクを削除する
+             (そしてこのケースでは <literal>NOT NULL</literal> 制約違反を引き起こす)だけです。
+             <literal>Child</literal> の <literal>delete()</literal> を明示する必要があります。
          </para>
 
          <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class, pid);
@@ -224,9 +226,9 @@
 session.flush();]]></programlisting>
 
          <para>
-             ¡‚±‚̃P[ƒX‚Å‚ÍŽÀÛ‚É <literal>Child</literal> ‚ªe‚È‚µ‚Å‚Í‘¶Ý‚Å‚«‚È‚¢‚悤‚É‚È‚è‚Ü‚µ‚½B
-             ‚»‚Ì‚½‚߁A‚à‚µƒRƒŒƒNƒVƒ‡ƒ“‚©‚ç <literal>Child</literal> ‚ðŽæ‚菜‚­ê‡A‚±‚ê‚àíœ‚µ‚½‚¢‚Å‚·B
-             ‚»‚Ì‚½‚ß‚É‚Í <literal>cascade="all-delete-orphan"</literal> ‚ðŽg‚í‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+             今このケースでは実際に <literal>Child</literal> が親なしでは存在できないようになりました。
+             そのため、もしコレクションから <literal>Child</literal> を取り除く場合、これも削除したいです。
+             そのためには <literal>cascade="all-delete-orphan"</literal> を使わなければなりません。
          </para>
 
         <programlisting><![CDATA[<set name="children" inverse="true" cascade="all-delete-orphan">
@@ -235,35 +237,35 @@
 </set>]]></programlisting>
 
          <para>
-             ’ˆÓFƒRƒŒƒNƒVƒ‡ƒ“‚̃}ƒbƒsƒ“ƒO‚Å <literal>inverse="true"</literal> ‚ÆŽw’肵‚Ä‚àA
-             ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚̃CƒeƒŒ[ƒVƒ‡ƒ“‚É‚æ‚Á‚āAˆË‘RƒJƒXƒP[ƒh‚ªŽÀs‚³‚ê‚Ü‚·B
-             ‚»‚Ì‚½‚ß‚à‚µƒJƒXƒP[ƒh‚ŃIƒuƒWƒFƒNƒg‚ðƒZ[ƒuAíœAXV‚·‚é•K—v‚ª‚ ‚é‚È‚çA
-             ‚»‚ê‚ðƒRƒŒƒNƒVƒ‡ƒ“‚ɒljÁ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB’P‚É <literal>setParent()</literal> ‚ðŒÄ‚Ô‚¾‚¯‚Å‚Í•s\•ª‚Å‚·B
+             注意:コレクションのマッピングで <literal>inverse="true"</literal> と指定しても、
+             コレクションの要素のイテレーションによって、依然カスケードが実行されます。
+             そのためもしカスケードでオブジェクトをセーブ、削除、更新する必要があるなら、
+             それをコレクションに追加しなければなりません。単に <literal>setParent()</literal> を呼ぶだけでは不十分です。
          </para>
                
      </sect1>
      
      <sect1 id="example-parentchild-update">
-         <title>ƒJƒXƒP[ƒh‚Æ <literal>unsaved-value</literal></title>
+         <title>カスケードと <literal>unsaved-value</literal></title>
      
          <para>
-             <literal>Parent</literal> ‚ªA‚ ‚é <literal>Session</literal> ‚э[ƒh‚³‚êAUI‚̃AƒNƒVƒ‡ƒ“‚ŕύX‚ª‰Á‚¦‚ç‚êA
-             <literal>update()</literal> ‚ðŒÄ‚ñ‚Å‚±‚̕ύX‚ðV‚µ‚¢ƒZƒbƒVƒ‡ƒ“‚ʼni‘±‰»‚µ‚½‚¢‚Æ‚µ‚Ü‚·B
-             <literal>Parent</literal> ‚ªŽq‹Ÿ‚̃RƒŒƒNƒVƒ‡ƒ“‚ðŽ‚¿AƒJƒXƒP[ƒhXV‚ª—LŒø‚É‚È‚Á‚Ä‚¢‚邽‚߁A
-             Hibernate‚Í‚Ç‚ÌŽq‹Ÿ‚ªV‚µ‚­ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽ‚©A‚ǂꂪƒf[ƒ^ƒx[ƒX‚ÌŠù‘¶‚̍s‚É‘Š“–‚·‚é‚Ì‚©‚ð’m‚é•K—v‚ª‚ ‚è‚Ü‚·B
-              <literal>Parent</literal> ‚Æ <literal>Child</literal> ‚Ì—¼•û‚ª <literal>java.lang.Long</literal> 
-             Œ^‚ÌŽ¯•ÊƒvƒƒpƒeƒB‚𐶐¬‚µ‚½‚Æ‚µ‚Ü‚µ‚傤B
-             Hibernate‚Í‚Ç‚ÌŽq‹Ÿ‚ªV‚µ‚¢‚à‚Ì‚©‚ðŒˆ’è‚·‚邽‚ß‚ÉŽ¯•ÊƒvƒƒpƒeƒB‚Ì’l‚ðŽg‚¢‚Ü‚·(version‚âtimestampƒvƒƒpƒeƒB‚àŽg‚¦‚Ü‚·B
-             <xref linkend="manipulatingdata-updating-detached"/> ŽQÆ)BHibernate3‚É‚È‚Á‚āA
-             –¾Ž¦“I‚É <literal>unsaved-value</literal> ‚ðŽw’è‚·‚é•K—v‚Í‚È‚­‚È‚è‚Ü‚µ‚½B
+             <literal>Parent</literal> が、ある <literal>Session</literal> でロードされ、UIのアクションで変更が加えられ、
+             <literal>update()</literal> を呼んでこの変更を新しいセッションで永続化したいとします。
+             <literal>Parent</literal> が子供のコレクションを持ち、カスケード更新が有効になっているため、
+             Hibernateはどの子供が新しくインスタンス化されたか、どれがデータベースの既存の行に相当するのかを知る必要があります。
+              <literal>Parent</literal> と <literal>Child</literal> の両方が <literal>java.lang.Long</literal> 
+             型の識別プロパティを生成したとしましょう。
+             Hibernateはどの子供が新しいものかを決定するために識別プロパティの値を使います(versionやtimestampプロパティも使えます。
+             <xref linkend="manipulatingdata-updating-detached"/> 参照)。Hibernate3になって、
+             明示的に <literal>unsaved-value</literal> を指定する必要はなくなりました。
          </para>
 
          <para>
-             ˆÈ‰º‚̃R[ƒh‚Í <literal>parent</literal> ‚Æ <literal>child</literal> ‚ðXV‚µA<literal>newChild</literal> ‚ð‘}“ü‚µ‚Ü‚·B
+             以下のコードは <literal>parent</literal> と <literal>child</literal> を更新し、<literal>newChild</literal> を挿入します。
          </para>
 
          <programlisting><![CDATA[//parent and child were both loaded in a previous session
-//parent‚Æchild‚Í—¼•û‚Æ‚àAˆÈ‘O‚ÌSession‚э[ƒh‚³‚ê‚Ä‚¢‚Ü‚·
+//parentとchildは両方とも、以前のSessionでロードされています
 parent.addChild(child);
 Child newChild = new Child();
 parent.addChild(newChild);
@@ -271,11 +273,11 @@
 session.flush();]]></programlisting>
      
          <para>
-             ‚±‚ê‚ç‚͐¶¬‚³‚ꂽŽ¯•ÊŽq‚̏ꍇ‚É‚Í”ñí‚É—Ç‚¢‚Ì‚Å‚·‚ªAŠ„‚è“–‚Ä‚ç‚ꂽŽ¯•ÊŽq‚Æ•¡‡Ž¯•ÊŽq‚̏ꍇ‚Í‚Ç‚¤‚Å‚µ‚傤‚©H
-             ‚±‚ê‚ÍHibernate‚ªAiƒ†[ƒU‚É‚æ‚芄‚è“–‚Ä‚ç‚ꂽŽ¯•ÊŽq‚ðŽ‚ÂjV‚µ‚­ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ƁA
-             ˆÈ‘O‚ÌSession‚э[ƒh‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ð‹æ•Ê‚Å‚«‚È‚¢‚½‚߁A‚æ‚è“‚¢‚Å‚·B
-             ‚±‚̏ꍇAHibernate‚̓^ƒCƒ€ƒXƒ^ƒ“ƒv‚©ƒo[ƒWƒ‡ƒ“‚̃vƒƒpƒeƒB‚Ì‚Ç‚¿‚ç‚©‚ðŽg‚¤‚©A“ñŽŸƒLƒƒƒbƒVƒ…‚É–â‚¢‡‚킹‚Ü‚·B
-             Åˆ«‚̏ꍇAs‚ª‘¶Ý‚·‚é‚©‚Ç‚¤‚©ƒf[ƒ^ƒx[ƒX‚ðŒ©‚Ü‚·B
+             これらは生成された識別子の場合には非常に良いのですが、割り当てられた識別子と複合識別子の場合はどうでしょうか?
+             これはHibernateが、(ユーザにより割り当てられた識別子を持つ)新しくインスタンス化されたオブジェクトと、
+             以前のSessionでロードされたオブジェクトを区別できないため、より難しいです。
+             この場合、Hibernateはタイムスタンプかバージョンのプロパティのどちらかを使うか、二次キャッシュに問い合わせます。
+             最悪の場合、行が存在するかどうかデータベースを見ます。
          </para>
          
          <!-- undocumenting
@@ -341,22 +343,22 @@
      </sect1>
 
      <sect1 id="example-parentchild-conclusion">
-         <title>Œ‹˜_
+         <title>結論
          </title>
 
          <para>
-             ‚±‚±‚Å‚Í‚©‚È‚è‚Ì—Ê‚ð—v–ñ‚µ‚½‚̂ŁAÅ‰‚̍ ‚͍¬—‚µ‚Ä‚¢‚é‚悤‚ÉŽv‚í‚ê‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-             ‚µ‚©‚µŽÀÛ‚́A‚·‚ׂĔñí‚É—Ç‚­“®ì‚µ‚Ü‚·B‚Ù‚Æ‚ñ‚Ç‚ÌHibernateƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ł́A‘½‚­‚̏ê–ʂŐeŽqƒpƒ^[ƒ“‚ðŽg—p‚µ‚Ü‚·B
+             ここではかなりの量を要約したので、最初の頃は混乱しているように思われるかもしれません。
+             しかし実際は、すべて非常に良く動作します。ほとんどのHibernateアプリケーションでは、多くの場面で親子パターンを使用します。
          </para>
 
          <para>
-             Å‰‚Ì’i—Ž‚Å‘ã‘Ö•û–@‚ɂ‚¢‚ĐG‚ê‚Ü‚µ‚½Bã‹L‚̂悤‚È–â‘è‚Í <literal>&lt;composite-element&gt;</literal> ƒ}ƒbƒsƒ“ƒO‚̏ꍇ‚Í‘¶Ý‚¹‚¸A
-             ‚É‚à‚©‚©‚í‚炸‚»‚ê‚ÍŠm‚©‚ɐeŽqŠÖŒW‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚ðŽ‚¿‚Ü‚·B
-             ‚µ‚©‚µŽc”O‚È‚ª‚çA•¡‡—v‘fƒNƒ‰ƒX‚É‚Í“ñ‚‚̑傫‚Ȑ§ŒÀ‚ª‚ ‚è‚Ü‚·F
-             1‚‚͕¡‡—v‘f‚̓RƒŒƒNƒVƒ‡ƒ“‚ðŽ‚Â‚±‚Æ‚ª‚Å‚«‚È‚¢‚±‚Æ‚Å‚·B‚à‚¤‚ЂƂ‚́A
-             ƒ†ƒj[ƒN‚Ȑe‚Å‚Í‚È‚¢ƒGƒ“ƒeƒBƒeƒB‚ÌŽq‹Ÿ‚Æ‚È‚é‚ׂ«‚Å‚Í‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚Å‚·
+             最初の段落で代替方法について触れました。上記のような問題は <literal>&lt;composite-element&gt;</literal> マッピングの場合は存在せず、
+             にもかかわらずそれは確かに親子関係のセマンティクスを持ちます。
+             しかし残念ながら、複合要素クラスには二つの大きな制限があります:
+             1つは複合要素はコレクションを持つことができないことです。もうひとつは、
+             ユニークな親ではないエンティティの子供となるべきではないということです
          </para>
      
      </sect1>
      
-</chapter>
\ No newline at end of file
+</chapter>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_weblog.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_weblog.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_weblog.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,15 +1,17 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="example-weblog">
-    <title>—á: WeblogƒAƒvƒŠƒP[ƒVƒ‡ƒ“</title>
+    <title>例: Weblogアプリケーション</title>
 
     <sect1 id="example-weblog-classes">
-        <title>‰i‘±ƒNƒ‰ƒX
+        <title>永続クラス
         </title>
 
         <para>
-            ‰i‘±ƒNƒ‰ƒX‚ªƒEƒFƒuƒƒO‚ƁAƒEƒFƒuƒƒO‚ÉŒfŽ¦‚³‚ꂽ€–Ú‚ð•\‚µ‚Ä‚¢‚Ü‚·B
-            ‚»‚ê‚ç‚͒ʏí‚̐eŽqŠÖŒW‚Æ‚µ‚ă‚ƒfƒŠƒ“ƒO‚³‚ê‚Ü‚·‚ªA
-            set‚Å‚Í‚È‚­‡˜‚ðŽ‚Á‚½bag‚ðŽg—p‚·‚邱‚Æ‚É‚µ‚Ü‚·B
+            永続クラスがウェブログと、ウェブログに掲示された項目を表しています。
+            それらは通常の親子関係としてモデリングされますが、
+            setではなく順序を持ったbagを使用することにします。
         </para>
 
         <programlisting><![CDATA[package eg;
@@ -88,11 +90,11 @@
     </sect1>
 
     <sect1 id="example-weblog-mappings">
-        <title>Hibernate‚̃}ƒbƒsƒ“ƒO
+        <title>Hibernateのマッピング
         </title>
 
         <para>
-            XMLƒ}ƒbƒsƒ“ƒO‚́A¡‚Å‚Í‚Æ‚Ä‚àŠÈ’P‚È‚Í‚¸‚Å‚·B
+            XMLマッピングは、今ではとても簡単なはずです。
         </para>
         
         <programlisting><![CDATA[<?xml version="1.0"?>
@@ -182,11 +184,11 @@
     </sect1>
     
     <sect1 id="example-weblog-code">
-        <title>Hibernate‚̃R[ƒh</title>
+        <title>Hibernateのコード</title>
 
         <para>
-            ˆÈ‰º‚̃Nƒ‰ƒX‚́A
-            Hibernate‚Å‚±‚ê‚ç‚̃Nƒ‰ƒX‚ðŽg‚Á‚Ä‚Å‚«‚邱‚Æ‚ð‚¢‚­‚‚©Ž¦‚µ‚Ä‚¢‚Ü‚·B
+            以下のクラスは、
+            Hibernateでこれらのクラスを使ってできることをいくつか示しています。
         </para>
 
         <programlisting><![CDATA[package eg;

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/filters.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/filters.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/filters.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,32 +1,34 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="filters">
-    <title>ƒf[ƒ^‚̃tƒBƒ‹ƒ^ƒŠƒ“ƒO</title>
+    <title>データのフィルタリング</title>
     
     <para>
-        Hibernate3‚ł́u‰ÂŽ‹«vƒ‹[ƒ‹‚ÉŠî‚¢‚ăf[ƒ^‚ðˆµ‚¤‚½‚߂̉æŠú“I‚È•û–@‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚·B
-        <emphasis>Hibernate filter</emphasis> ‚̓Oƒ[ƒoƒ‹‚ŁA–¼‘O•t‚«‚ŁAƒpƒ‰ƒ[ƒ^‰»‚³‚ꂽƒtƒBƒ‹ƒ^‚Å‚·B
-        ‚±‚ê‚ÍHibernateƒZƒbƒVƒ‡ƒ“‚²‚Æ‚É—LŒø–³Œø‚ðØ‚è‘Ö‚¦‚ç‚ê‚Ü‚·B
+        Hibernate3では「可視性」ルールに基づいてデータを扱うための画期的な方法を用意しています。
+        <emphasis>Hibernate filter</emphasis> はグローバルで、名前付きで、パラメータ化されたフィルタです。
+        これはHibernateセッションごとに有効無効を切り替えられます。
     </para>
 
     <sect1 id="objectstate-filters">
-        <title>Hibernate‚̃tƒBƒ‹ƒ^</title>
+        <title>Hibernateのフィルタ</title>
 
         <para>
-            Hibernate3‚̓tƒBƒ‹ƒ^ƒNƒ‰ƒCƒeƒŠƒA‚ð‚ ‚ç‚©‚¶‚ß’è‹`‚µA
-            ‚±‚ê‚ç‚̃tƒBƒ‹ƒ^‚ðƒNƒ‰ƒX‚âƒRƒŒƒNƒVƒ‡ƒ“ƒŒƒxƒ‹‚ɉÁ‚¦‚é‹@”\‚ð‰Á‚¦‚Ü‚µ‚½B
-            ƒtƒBƒ‹ƒ^ƒNƒ‰ƒCƒeƒŠƒA‚͐§–ñß‚ð’è‹`‚·‚é‹@”\‚Å‚·B
-            ‚±‚ê‚ç‚̃tƒBƒ‹ƒ^ðŒ‚̓pƒ‰ƒ[ƒ^‰»‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ‚ðœ‚«A
-            ƒNƒ‰ƒX‚₳‚Ü‚´‚܂ȃRƒŒƒNƒVƒ‡ƒ“—v‘f‚Å—˜—p‰Â”\‚È¢where£‹å‚É”ñí‚É‚æ‚­Ž—‚Ä‚¢‚Ü‚·B
-            ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚́A—^‚¦‚ç‚ꂽƒtƒBƒ‹ƒ^‚ð‰Â”\‚É‚·‚ׂ«‚©A
-            ‚»‚µ‚Ä‚»‚̃pƒ‰ƒ[ƒ^’l‚ð‰½‚É‚·‚ׂ«‚©‚ðŽÀsŽž‚ÉŒˆ’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-            ƒtƒBƒ‹ƒ^‚̓f[ƒ^ƒx[ƒXƒrƒ…[‚̂悤‚ÉŽg—p‚³‚ê‚Ü‚·‚ªAƒAƒvƒŠƒP[ƒVƒ‡ƒ““à‚ł̓pƒ‰ƒ[ƒ^‰»‚³‚ê‚Ü‚·B
+            Hibernate3はフィルタクライテリアをあらかじめ定義し、
+            これらのフィルタをクラスやコレクションレベルに加える機能を加えました。
+            フィルタクライテリアは制約節を定義する機能です。
+            これらのフィルタ条件はパラメータ化できるということを除き、
+            クラスやさまざまなコレクション要素で利用可能な「where」句に非常によく似ています。
+            アプリケーションは、与えられたフィルタを可能にすべきか、
+            そしてそのパラメータ値を何にすべきかを実行時に決定することができます。
+            フィルタはデータベースビューのように使用されますが、アプリケーション内ではパラメータ化されます。
             
         </para>
 
         <para>
-            ƒtƒBƒ‹ƒ^‚ðŽg‚¤‚½‚ß‚É‚Í‚Ü‚¸A“KØ‚ȃ}ƒbƒsƒ“ƒO—v‘f‚É’è‹`A’ljÁ‚µ‚È‚­‚Ä‚Í‚È‚è‚Ü‚¹‚ñB
-            ƒtƒBƒ‹ƒ^‚ð’è‹`‚·‚邽‚߂ɂ́A
-            <literal>&lt;hibernate-mapping/&gt;</literal> —v‘f“à‚Å <literal>&lt;filter-def/&gt;</literal> —v‘f‚ðŽg—p‚µ‚Ü‚·BF
+            フィルタを使うためにはまず、適切なマッピング要素に定義、追加しなくてはなりません。
+            フィルタを定義するためには、
+            <literal>&lt;hibernate-mapping/&gt;</literal> 要素内で <literal>&lt;filter-def/&gt;</literal> 要素を使用します。:
         </para>
 
         <programlisting><![CDATA[<filter-def name="myFilter">
@@ -34,7 +36,7 @@
 </filter-def>]]></programlisting>
 
         <para>
-            ‚»‚¤‚µ‚ătƒBƒ‹ƒ^‚̓Nƒ‰ƒX‚Ö‚ÆŒ‹‚Ñ•t‚¯‚ç‚ê‚Ü‚·BF
+            そうしてフィルタはクラスへと結び付けられます。:
         </para>
 
         <programlisting><![CDATA[<class name="myClass" ...>
@@ -43,7 +45,7 @@
 </class>]]></programlisting>
 
         <para>
-            ‚Ü‚½AƒRƒŒƒNƒVƒ‡ƒ“‚ɑ΂µ‚Ä‚ÍŽŸ‚̂悤‚É‚È‚è‚Ü‚·BF
+            また、コレクションに対しては次のようになります。:
         </para>
 
         <programlisting><![CDATA[<set ...>
@@ -51,27 +53,27 @@
 </set>]]></programlisting>
 
         <para>
-            ‚Ç‚¿‚ç‚ɑ΂µ‚Ä‚à(‚Ü‚½A‚»‚ꂼ‚ê‚𕡐”)“¯Žž‚ɐݒ肷‚邱‚Æ‚à‚Å‚«‚Ü‚·B
+            どちらに対しても(また、それぞれを複数)同時に設定することもできます。
         </para>
 
         <para>
-            <literal>Session</literal> ã‚̃ƒ\ƒbƒh‚Í <literal>enableFilter(String filterName)</literal>,
-            <literal>getEnabledFilter(String filterName)</literal>, <literal>disableFilter(String filterName)</literal> ‚Å‚·B
-            ƒfƒtƒHƒ‹ƒg‚ł́AƒtƒBƒ‹ƒ^‚Í—^‚¦‚ç‚ꂽƒZƒbƒVƒ‡ƒ“‚ɑ΂µ‚ÄŽg—p <emphasis>‚Å‚«‚Ü‚¹‚ñ</emphasis> B
-            <literal>Filter</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚ð•Ô‚è’l‚Æ‚·‚é <literal>Session.enabledFilter()</literal> ƒƒ\ƒbƒh‚ðŽg‚¤‚±‚ƂŁA
-            ƒtƒBƒ‹ƒ^‚Í–¾Ž¦“I‚ÉŽg—p‰Â”\‚Æ‚È‚è‚Ü‚·B
-            ã‚Å’è‹`‚µ‚½’Pƒ‚ȃtƒBƒ‹ƒ^‚ÌŽg—p‚́A‚±‚̂悤‚É‚È‚è‚Ü‚·BF
+            <literal>Session</literal> 上のメソッドは <literal>enableFilter(String filterName)</literal>,
+            <literal>getEnabledFilter(String filterName)</literal>, <literal>disableFilter(String filterName)</literal> です。
+            デフォルトでは、フィルタは与えられたセッションに対して使用 <emphasis>できません</emphasis> 。
+            <literal>Filter</literal> インスタンスを返り値とする <literal>Session.enabledFilter()</literal> メソッドを使うことで、
+            フィルタは明示的に使用可能となります。
+            上で定義した単純なフィルタの使用は、このようになります。:
         </para>
 
         <programlisting><![CDATA[session.enableFilter("myFilter").setParameter("myFilterParam", "some-value");]]></programlisting>
 
         <para>
-            org.hibernate.FilterƒCƒ“ƒ^[ƒtƒFƒCƒX‚̃ƒ\ƒbƒh‚́A
-            Hibernate‚Ì‘½‚­‚É‹¤’Ê‚µ‚Ä‚¢‚郁ƒ\ƒbƒh˜A½‚ð‹–‚µ‚Ä‚¢‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+            org.hibernate.Filterインターフェイスのメソッドは、
+            Hibernateの多くに共通しているメソッド連鎖を許していることに注意してください。
         </para>
 
         <para>
-            —LŒø‚ȃŒƒR[ƒhƒf[ƒ^ƒpƒ^[ƒ“‚ðŽ‚ÂˆêŽžƒf[ƒ^‚ðŽg‚Á‚½Š®‘S‚È—á‚Å‚·F
+            有効なレコードデータパターンを持つ一時データを使った完全な例です:
         </para>
 
         <programlisting><![CDATA[<filter-def name="effectiveDate">
@@ -105,8 +107,8 @@
 </class>]]></programlisting>
 
         <para>
-            í‚ÉŒ»Ý‚Ì—LŒøƒŒƒR[ƒh‚ð•Ô‹p‚·‚邱‚Æ‚ð•ÛØ‚·‚邽‚߂ɁA
-            ’Pƒ‚ɁAŽÐˆõƒf[ƒ^‚ÌŒŸõ‚æ‚è‘O‚ɃZƒbƒVƒ‡ƒ“ã‚̃tƒBƒ‹ƒ^‚ð—LŒø‚É‚µ‚Ü‚·B
+            常に現在の有効レコードを返却することを保証するために、
+            単純に、社員データの検索より前にセッション上のフィルタを有効にします。
             
             
         </para>
@@ -119,16 +121,16 @@
 ]]></programlisting>
 
         <para>
-            ã‹L‚ÌHQL‚ł́AŒ‹‰Ê‚Ì‹‹—¿‚̐§–ñ‚ɂ‚¢‚Ä–¾Ž¦“I‚ɐG‚ꂽ‚¾‚¯‚Å‚·‚ªA
-            —LŒø‚É‚È‚Á‚Ä‚¢‚éƒtƒBƒ‹ƒ^‚Ì‚¨‚©‚°‚ŁA‚±‚̃NƒGƒŠ‚Í‹‹—¿‚ª100–œƒhƒ‹ˆÈã‚ÌŒ»–ð‚̎Јõ‚¾‚¯‚ð•Ô‚µ‚Ü‚·B
+            上記のHQLでは、結果の給料の制約について明示的に触れただけですが、
+            有効になっているフィルタのおかげで、このクエリは給料が100万ドル以上の現役の社員だけを返します。
         </para>
 
         <para>
-            (HQL‚©ƒ[ƒhƒtƒFƒbƒ`‚ŁjŠO•”Œ‹‡‚ðŽ‚ÂƒtƒBƒ‹ƒ^‚ðŽg‚¤‚‚à‚è‚È‚çA
-            ðŒŽ®‚Ì•ûŒü‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+            (HQLかロードフェッチで)外部結合を持つフィルタを使うつもりなら、
+            条件式の方向に注意してください。
             
-            ‚±‚ê‚͍¶ŠO•”Œ‹‡‚Ì‚½‚߂ɐݒ肷‚é‚Ì‚ªÅ‚àˆÀ‘S‚Å‚·B
-            ˆê”Ê“I‚ɁA‰‰ŽZŽq‚ÌŒãƒJƒ‰ƒ€–¼‚É‘±‚¯‚čŏ‰‚̃pƒ‰ƒ[ƒ^‚ð”z’u‚µ‚Ä‚­‚¾‚³‚¢B
+            これは左外部結合のために設定するのが最も安全です。
+            一般的に、演算子の後カラム名に続けて最初のパラメータを配置してください。
         </para>
 
     </sect1>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/inheritance_mapping.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/inheritance_mapping.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/inheritance_mapping.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,67 +1,69 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="inheritance">
-    <title>Œp³ƒ}ƒbƒsƒ“ƒO</title>
+    <title>継承マッピング</title>
 
     <sect1 id="inheritance-strategies" revision="3">
-        <title>3‚‚̐헪</title>
+        <title>3つの戦略</title>
 
         <para>
-            Hibernate‚Í3‚‚̊î–{“I‚ÈŒp³‚̃}ƒbƒsƒ“ƒOí—ª‚ðƒTƒ|[ƒg‚µ‚Ü‚·B
+            Hibernateは3つの基本的な継承のマッピング戦略をサポートします。
         </para>
 
         <itemizedlist>
         <listitem>
         <para>
-            ƒNƒ‰ƒXŠK‘w‚²‚Ƃ̃e[ƒuƒ‹itable-per-class-hierarchyj
+            クラス階層ごとのテーブル(table-per-class-hierarchy)
         </para>
         </listitem>
         <listitem>
         <para>
-            ƒTƒuƒNƒ‰ƒX‚²‚Ƃ̃e[ƒuƒ‹itable-per-subclassj
+            サブクラスごとのテーブル(table-per-subclass)
         </para>
         </listitem>
         <listitem>
         <para>
-            ‹ïÛƒNƒ‰ƒX‚²‚Ƃ̃e[ƒuƒ‹itable-per-concrete-classj
+            具象クラスごとのテーブル(table-per-concrete-class)
         </para>
         </listitem>
         </itemizedlist>
         
         <para>
-            ‰Á‚¦‚Ä4‚–ڂɁAHibernate‚͂킸‚©‚ɈقȂ鐫Ž¿‚ðŽ‚Á‚½ƒ|ƒŠƒ‚[ƒtƒBƒYƒ€‚ðƒTƒ|[ƒg‚µ‚Ü‚·B
+            加えて4つ目に、Hibernateはわずかに異なる性質を持ったポリモーフィズムをサポートします。
         </para>
 
         <itemizedlist>
         <listitem>
         <para>
-            ˆÃ–Ù“Iƒ|ƒŠƒ‚[ƒtƒBƒYƒ€
+            暗黙的ポリモーフィズム
         </para>
         </listitem>
         </itemizedlist>
         
         <para>
-            “¯ˆê‚ÌŒp³ŠK‘w‚̈قȂéƒuƒ‰ƒ“ƒ`‚ɑ΂µ‚ĈقȂéƒ}ƒbƒsƒ“ƒOí—ª‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
-            ‚»‚̏ꍇ‚É‚Í‘S‘Ì‚ÌŠK‘w‚É“n‚éƒ|ƒŠƒ‚[ƒtƒBƒYƒ€‚ðŽÀŒ»‚·‚邽‚߂ɈÖٓIƒ|ƒŠƒ‚[ƒtƒBƒYƒ€‚ðŽg—p‚µ‚Ü‚·B
-            ‚µ‚©‚µAHibernate‚Í“¯‚¶ƒ‹[ƒg <literal>&lt;class&gt;</literal> —v‘f“à‚Å
-            <literal>&lt;subclass&gt;</literal> ƒ}ƒbƒsƒ“ƒOA<literal>&lt;joined-subclass&gt;</literal> ƒ}ƒbƒsƒ“ƒOA
-            <literal>&lt;union-subclass&gt;</literal> ƒ}ƒbƒsƒ“ƒO‚Ì“¯ŽžŽg—p‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚¹‚ñB
-            <literal>&lt;subclass&gt;</literal> —v‘f‚Æ <literal>&lt;join&gt;</literal> —v‘f‚ð‘g‚ݍ‡‚킹‚邱‚ƂŁA
-            “¯ˆê <literal>&lt;class&gt;</literal> —v‘f“à‚Å‚Ì table-per-hierarchy í—ª‚Æ
-            table-per-subclass í—ª‚Ì“¯ŽžŽg—p‚͉”\‚Å‚·BŽŸ‚Ì—á‚ðŒ©‚Ä‚­‚¾‚³‚¢B
+            同一の継承階層の異なるブランチに対して異なるマッピング戦略を使うことができます。
+            その場合には全体の階層に渡るポリモーフィズムを実現するために暗黙的ポリモーフィズムを使用します。
+            しかし、Hibernateは同じルート <literal>&lt;class&gt;</literal> 要素内で
+            <literal>&lt;subclass&gt;</literal> マッピング、<literal>&lt;joined-subclass&gt;</literal> マッピング、
+            <literal>&lt;union-subclass&gt;</literal> マッピングの同時使用をサポートしていません。
+            <literal>&lt;subclass&gt;</literal> 要素と <literal>&lt;join&gt;</literal> 要素を組み合わせることで、
+            同一 <literal>&lt;class&gt;</literal> 要素内での table-per-hierarchy 戦略と
+            table-per-subclass 戦略の同時使用は可能です。次の例を見てください。
         </para>
 
         <para>
-             <literal>subclass</literal>, <literal>union-subclass</literal> ‚Æ 
-             <literal>joined-subclass</literal> ƒ}ƒbƒsƒ“ƒO‚𕡐”‚̃}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚É’è‹`‚·‚邱‚Æ‚ªo—ˆA
-             <literal>hibernate-mapping</literal> ‚Ì’¼‰º‚É”z’u‚µ‚Ü‚·B
-             ‚±‚ê‚͐V‚µ‚¢ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ð’ljÁ‚·‚邾‚¯‚ŁAƒNƒ‰ƒXŠK‘w‚ðŠg’£‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
-             ‚ ‚ç‚©‚¶‚߃}ƒbƒv‚µ‚½ƒX[ƒp[ƒNƒ‰ƒX‚ðŽw’肵‚āAƒTƒuƒNƒ‰ƒXƒ}ƒbƒsƒ“ƒO‚É <literal>extends</literal> 
-             ‘®«‚ð‹Lq‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-             ’ˆÓF‚±‚Ì“Á’¥‚É‚æ‚èAˆÈ‘O‚̓}ƒbƒsƒ“ƒOEƒhƒLƒ…ƒƒ“ƒg‚̏‡”Ô‚ªd—v‚Å‚µ‚½B
-             Hibernate3‚©‚ç‚́AextendsƒL[ƒ[ƒh‚ðŽg‚¤ê‡Aƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚̏‡”Ô‚Í–â‘è‚É‚È‚è‚Ü‚¹‚ñB
+             <literal>subclass</literal>, <literal>union-subclass</literal> と 
+             <literal>joined-subclass</literal> マッピングを複数のマッピングドキュメントに定義することが出来、
+             <literal>hibernate-mapping</literal> の直下に配置します。
+             これは新しいマッピングファイルを追加するだけで、クラス階層を拡張できるということです。
+             あらかじめマップしたスーパークラスを指定して、サブクラスマッピングに <literal>extends</literal> 
+             属性を記述しなければなりません。
+             注意:この特徴により、以前はマッピング・ドキュメントの順番が重要でした。
+             Hibernate3からは、extendsキーワードを使う場合、マッピングドキュメントの順番は問題になりません。
              
-             ‚P‚‚̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹“à‚ŏ‡”Ô•t‚¯‚ðs‚¤‚Æ‚«‚́A
-             ˆË‘R‚Æ‚µ‚āAƒTƒuƒNƒ‰ƒX‚ð’è‹`‚·‚é‘O‚ɃX[ƒp[ƒNƒ‰ƒX‚ð’è‹`‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B)
+             1つのマッピングファイル内で順番付けを行うときは、
+             依然として、サブクラスを定義する前にスーパークラスを定義する必要があります。)
          </para>
 
          <programlisting><![CDATA[
@@ -73,13 +75,13 @@
 
 
         <sect2 id="inheritance-tableperclass" >
-        <title>ƒNƒ‰ƒXŠK‘w‚²‚Ƃ̃e[ƒuƒ‹itable-per-class-hierarchyj</title>
+        <title>クラス階層ごとのテーブル(table-per-class-hierarchy)</title>
 
         <para>
-            —Ⴆ‚΁AƒCƒ“ƒ^[ƒtƒFƒCƒX <literal>Payment</literal> ‚ƁA‚»‚ê‚ðŽÀ‘•‚µ‚½
-            <literal>CreditCardPayment</literal>A<literal>CashPayment</literal>A
-            <literal>ChequePayment</literal> ‚ª‚ ‚é‚Æ‚µ‚Ü‚·BŠK‘w‚²‚Ƃ̃e[ƒuƒ‹ƒ}ƒbƒsƒ“ƒO‚Í
-            ˆÈ‰º‚̂悤‚É‚È‚è‚Ü‚·B
+            例えば、インターフェイス <literal>Payment</literal> と、それを実装した
+            <literal>CreditCardPayment</literal>、<literal>CashPayment</literal>、
+            <literal>ChequePayment</literal> があるとします。階層ごとのテーブルマッピングは
+            以下のようになります。
         </para>
 
         <programlisting><![CDATA[<class name="Payment" table="PAYMENT">
@@ -102,19 +104,19 @@
 </class>]]></programlisting>
 
         <para>
-            ‚¿‚傤‚Ljê‚‚̃e[ƒuƒ‹‚ª•K—v‚Å‚·B
-            ‚±‚̃}ƒbƒsƒ“ƒOí—ª‚ɂ͈ê‚‘傫‚Ȑ§ŒÀ‚ª‚ ‚è‚Ü‚·B
-            <literal>CCTYPE</literal> ‚̂悤‚ȁAƒTƒuƒNƒ‰ƒX‚Ő錾‚³‚ꂽƒJƒ‰ƒ€‚Í <literal>NOT NULL</literal> 
-            §–ñ‚ðŽ‚Ä‚Ü‚¹‚ñB
+            ちょうど一つのテーブルが必要です。
+            このマッピング戦略には一つ大きな制限があります。
+            <literal>CCTYPE</literal> のような、サブクラスで宣言されたカラムは <literal>NOT NULL</literal> 
+            制約を持てません。
         </para>
         
         </sect2>
 
         <sect2 id="inheritance-tablepersubclass">
-        <title>ƒTƒuƒNƒ‰ƒX‚²‚Ƃ̃e[ƒuƒ‹itable-per-subclassj</title>
+        <title>サブクラスごとのテーブル(table-per-subclass)</title>
 
         <para>
-            table-per-subclass ƒ}ƒbƒsƒ“ƒO‚͈ȉº‚̂悤‚É‚È‚è‚Ü‚·B
+            table-per-subclass マッピングは以下のようになります。
         </para>
 
         <programlisting><![CDATA[<class name="Payment" table="PAYMENT">
@@ -139,24 +141,24 @@
 </class>]]></programlisting>
 
         <para>
-            ‚±‚̃}ƒbƒsƒ“ƒO‚É‚Í4‚‚̃e[ƒuƒ‹‚ª•K—v‚Å‚·B3‚‚̃TƒuƒNƒ‰ƒXƒe[ƒuƒ‹‚Í
-            ƒX[ƒp[ƒNƒ‰ƒXƒe[ƒuƒ‹‚Æ‚ÌŠÖ˜A‚ðŽ¦‚·ŽåƒL[‚ðŽ‚Á‚Ä‚¢‚Ü‚·
-            iŽÀÛAŠÖŒWƒ‚ƒfƒ‹ã‚͈ê‘ΈêŠÖ˜A‚Å‚·jB
+            このマッピングには4つのテーブルが必要です。3つのサブクラステーブルは
+            スーパークラステーブルとの関連を示す主キーを持っています
+            (実際、関係モデル上は一対一関連です)。
         </para>
 
         </sect2>
 
         <sect2 id="inheritance-tablepersubclass-discriminator" revision="2">
-        <title>•Ù•ÊŽq‚ð—p‚¢‚½ table-per-subclass</title>
+        <title>弁別子を用いた table-per-subclass</title>
 
         <para>
-            Hibernate‚Ì table-per-subclass ŽÀ‘•‚́AdiscriminatorƒJƒ‰ƒ€‚ð•K—v‚Æ‚µ‚È‚¢‚±‚Æ‚ðŠo‚¦‚Ä‚¨‚¢‚Ä‚­‚¾‚³‚¢B
-            HibernateˆÈŠO‚ÌO/Rƒ}ƒbƒp[‚́Atable-per-subclass ‚ɈقȂéŽÀ‘•‚ð—p‚¢‚Ü‚·B
-            ‚»‚ê‚́AƒX[ƒp[ƒNƒ‰ƒX‚̃e[ƒuƒ‹‚Ƀ^ƒCƒvdiscriminatorƒJƒ‰ƒ€‚ð•K—v‚Æ‚µ‚Ü‚·B
-            ‚±‚̃Aƒvƒ[ƒ`‚ÍŽÀ‘•‚ª¢“ï‚É‚È‚è‚Ü‚·‚ªAŠÖŒW‚ÌŽ‹“_‚©‚猩‚é‚ƁA‚æ‚萳Šm‚È‚à‚Ì‚Å‚·B
-            table-per-subclass í—ª‚ÅdiscriminatorƒJƒ‰ƒ€‚ðŽg‚¢‚½‚¯‚ê‚΁A
-            <literal>&lt;subclass&gt;</literal> ‚Æ <literal>&lt;join&gt;</literal> 
-            ‚ðˆÈ‰º‚̂悤‚É‘g‚ݍ‡‚킹‚ÄŽg‚Á‚Ä‚­‚¾‚³‚¢B
+            Hibernateの table-per-subclass 実装は、discriminatorカラムを必要としないことを覚えておいてください。
+            Hibernate以外のO/Rマッパーは、table-per-subclass に異なる実装を用います。
+            それは、スーパークラスのテーブルにタイプdiscriminatorカラムを必要とします。
+            このアプローチは実装が困難になりますが、関係の視点から見ると、より正確なものです。
+            table-per-subclass 戦略でdiscriminatorカラムを使いたければ、
+            <literal>&lt;subclass&gt;</literal> と <literal>&lt;join&gt;</literal> 
+            を以下のように組み合わせて使ってください。
         </para>
 
         <programlisting><![CDATA[<class name="Payment" table="PAYMENT">
@@ -188,19 +190,19 @@
 </class>]]></programlisting>
 
         <para>
-            ƒIƒvƒVƒ‡ƒ“‚Ì <literal>fetch="select"</literal> éŒ¾‚́A
-            ƒX[ƒp[ƒNƒ‰ƒX‚̃NƒGƒŠŽÀsŽž‚ÉŠO•”Œ‹‡‚ðŽg‚Á‚āA
-            ƒTƒuƒNƒ‰ƒX‚Ì <literal>ChequePayment</literal> ƒf[ƒ^‚ðŽæ“¾‚µ‚È‚¢‚悤‚ÉŽw’è‚·‚邽‚ß‚Ì‚à‚Ì‚Å‚·B
+            オプションの <literal>fetch="select"</literal> 宣言は、
+            スーパークラスのクエリ実行時に外部結合を使って、
+            サブクラスの <literal>ChequePayment</literal> データを取得しないように指定するためのものです。
         </para>
 
         </sect2>
 
         <sect2 id="inheritance-mixing-tableperclass-tablepersubclass">
-        <title>table-per-subclass ‚Æ table-per-class-hierarchy ‚̍¬‡</title>
+        <title>table-per-subclass と table-per-class-hierarchy の混合</title>
 
         <para>
-            ‚±‚̃Aƒvƒ[ƒ`‚ðŽg—p‚·‚é‚ƁAtable-per-hierarchy ‚Æ table-per-subclass í—ª‚ð
-            ‘g‚ݍ‡‚킹‚鎖‚à‰Â”\‚Å‚·B
+            このアプローチを使用すると、table-per-hierarchy と table-per-subclass 戦略を
+            組み合わせる事も可能です。
         </para>
 
         <programlisting><![CDATA[<class name="Payment" table="PAYMENT">
@@ -225,8 +227,8 @@
 </class>]]></programlisting>
 
         <para>
-            ‚¢‚¸‚ê‚̃}ƒbƒsƒ“ƒOí—ª‚Å‚ ‚Á‚Ä‚àAƒ‹[ƒg‚Å‚ ‚é <literal>Payment</literal> ƒNƒ‰ƒX‚Ö‚Ì
-            ƒ|ƒŠƒ‚[ƒtƒBƒbƒN‚ÈŠÖ˜A‚Í <literal>&lt;many-to-one&gt;</literal> ‚ðŽg‚Á‚ă}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
+            いずれのマッピング戦略であっても、ルートである <literal>Payment</literal> クラスへの
+            ポリモーフィックな関連は <literal>&lt;many-to-one&gt;</literal> を使ってマッピングします。
         </para>
 
         <programlisting><![CDATA[<many-to-one name="payment" column="PAYMENT_ID" class="Payment"/>]]></programlisting>
@@ -234,11 +236,11 @@
         </sect2>
 
         <sect2 id="inheritance-tableperconcrete" revision="2">
-        <title>‹ïÛƒNƒ‰ƒX‚²‚Ƃ̃e[ƒuƒ‹itable-per-concrete-classj</title>
+        <title>具象クラスごとのテーブル(table-per-concrete-class)</title>
 
         <para>
-            table-per-concrete-class í—ª‚̃}ƒbƒsƒ“ƒO‚ɑ΂·‚éƒAƒvƒ[ƒ`‚́A2‚‚ ‚è‚Ü‚·B
-            1‚Â–Ú‚Í <literal>&lt;union-subclass&gt;</literal> ‚ð—˜—p‚·‚é•û–@‚Å‚·B
+            table-per-concrete-class 戦略のマッピングに対するアプローチは、2つあります。
+            1つ目は <literal>&lt;union-subclass&gt;</literal> を利用する方法です。
         </para>
 
         <programlisting><![CDATA[<class name="Payment">
@@ -260,32 +262,32 @@
 </class>]]></programlisting>
 
         <para>
-            ƒTƒuƒNƒ‰ƒX‚²‚Æ‚É3‚‚̃e[ƒuƒ‹‚ª•K—v‚Å‚·B‚»‚ꂼ‚ê‚̃e[ƒuƒ‹‚́AŒp³ƒvƒƒpƒeƒB‚ðŠÜ‚ñ‚¾A
-            ƒNƒ‰ƒX‚Ì‘S‚ẴvƒƒpƒeƒB‚ɑ΂·‚éƒJƒ‰ƒ€‚ð’è‹`‚µ‚Ü‚·B
+            サブクラスごとに3つのテーブルが必要です。それぞれのテーブルは、継承プロパティを含んだ、
+            クラスの全てのプロパティに対するカラムを定義します。
         </para>
         
         <para>
-            ‚±‚̃Aƒvƒ[ƒ`‚ɂ͐§ŒÀ‚ª‚ ‚è‚Ü‚·B
-            ‚»‚ê‚́AƒvƒƒpƒeƒB‚ªƒX[ƒp[ƒNƒ‰ƒX‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ä‚¢‚½ê‡A
-            ‘S‚ẴTƒuƒNƒ‰ƒX‚É‚¨‚¢‚ăJƒ‰ƒ€–¼‚ª“¯‚¶‚Å‚È‚¯‚ê‚΂Ȃç‚È‚¢‚Æ‚¢‚¤‚à‚Ì‚Å‚·B
-           iHibernate‚̍¡Œã‚̃ŠƒŠ[ƒX‚Ŋɘa‚³‚ê‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñjB
-            &lt;union-subclass&gt; ‚ðŽg‚Á‚½ table-per-concrete-class í—ª‚Å‚ÍŽ¯•ÊŽq¶¬í—ª‚ðŽg—p‚Å‚«‚Ü‚¹‚ñB
-            ŽåƒL[‚𐶐¬‚·‚邽‚߂̃V[ƒh‚́A‘S‚Ä‚Ì union subclass ‚ÌŠK‘w“à‚Å‹¤—L‚·‚é•K—v‚ª‚ ‚é‚©‚ç‚Å‚·B
+            このアプローチには制限があります。
+            それは、プロパティがスーパークラスにマッピングされていた場合、
+            全てのサブクラスにおいてカラム名が同じでなければならないというものです。
+           (Hibernateの今後のリリースで緩和されるかもしれません)。
+            &lt;union-subclass&gt; を使った table-per-concrete-class 戦略では識別子生成戦略を使用できません。
+            主キーを生成するためのシードは、全ての union subclass の階層内で共有する必要があるからです。
         </para>
 
         <para>
-            ‚à‚µƒX[ƒp[ƒNƒ‰ƒX‚ª’ŠÛƒNƒ‰ƒX‚È‚çA<literal>abstract="true"</literal>‚ƃ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
-            ‚à‚¿‚ë‚ñAƒX[ƒp[ƒNƒ‰ƒX‚ª’ŠÛƒNƒ‰ƒX‚Å‚È‚¢‚È‚çAƒX[ƒp[ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð
-            •ÛŽ‚·‚邽‚߂̃e[ƒuƒ‹‚̒ljÁ‚ª•K—v‚Æ‚È‚è‚Ü‚·(ã‚Ì—á‚ł̃fƒtƒHƒ‹ƒg‚Í <literal>PAYMENT</literal> )B
+            もしスーパークラスが抽象クラスなら、<literal>abstract="true"</literal>とマッピングします。
+            もちろん、スーパークラスが抽象クラスでないなら、スーパークラスのインスタンスを
+            保持するためのテーブルの追加が必要となります(上の例でのデフォルトは <literal>PAYMENT</literal> )。
         </para>
 
         </sect2>
 
         <sect2 id="inheritance-tableperconcreate-polymorphism">
-        <title>ˆÃ–Ù“Iƒ|ƒŠƒ‚[ƒtƒBƒYƒ€‚ð—p‚¢‚½ table-per-concrete-class</title>
+        <title>暗黙的ポリモーフィズムを用いた table-per-concrete-class</title>
 
         <para>
-            ‚à‚¤ˆê‚‚̃Aƒvƒ[ƒ`‚͈ÖٓIƒ|ƒŠƒ‚[ƒtƒBƒYƒ€‚ÌŽg—p‚Å‚·B
+            もう一つのアプローチは暗黙的ポリモーフィズムの使用です。
         </para>
 
         <programlisting><![CDATA[<class name="CreditCardPayment" table="CREDIT_PAYMENT">
@@ -313,21 +315,21 @@
 </class>]]></programlisting>
            
         <para>
-            <literal>Payment</literal> ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ª‚Ç‚±‚É‚à–¾Ž¦“I‚ÉŽ¦‚³‚ê‚Ä‚¢‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-            ‚»‚µ‚āA<literal>Payment</literal> ƒvƒƒpƒeƒB‚ª‚»‚ꂼ‚ê‚̃TƒuƒNƒ‰ƒX‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚Ä‚¢‚邱‚Æ‚É‚à’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-            ‚à‚µd•¡‚ð”ð‚¯‚½‚¢‚Ì‚Å‚ ‚ê‚΁AXMLƒGƒ“ƒeƒBƒeƒB‚Ì—˜—p‚ðl‚¦‚Ä‚­‚¾‚³‚¢B
-            i—áF <literal>DOCTYPE</literal> éŒ¾‚É‚¨‚¯‚é <literal>[ &lt;!ENTITY allproperties SYSTEM "allproperties.xml"&gt; ]</literal>
-              ‚ƁAƒ}ƒbƒsƒ“ƒO‚É‚¨‚¯‚é <literal>&amp;allproperties;</literal>j
+            <literal>Payment</literal> インターフェイスがどこにも明示的に示されていないことに注意してください。
+            そして、<literal>Payment</literal> プロパティがそれぞれのサブクラスにマッピングされていることにも注意してください。
+            もし重複を避けたいのであれば、XMLエンティティの利用を考えてください。
+            (例: <literal>DOCTYPE</literal> 宣言における <literal>[ &lt;!ENTITY allproperties SYSTEM "allproperties.xml"&gt; ]</literal>
+              と、マッピングにおける <literal>&amp;allproperties;</literal>)
         </para>
         
         <para>
-            ‚±‚̃Aƒvƒ[ƒ`‚ÌŒ‡“_‚́AHibernate‚ªƒ|ƒŠƒ‚[ƒtƒBƒbƒN‚ȃNƒGƒŠ‚ÌŽÀsŽž‚ÉSQL <literal>UNION</literal> 
-            ‚𐶐¬‚µ‚È‚¢“_‚Å‚·B
+            このアプローチの欠点は、Hibernateがポリモーフィックなクエリの実行時にSQL <literal>UNION</literal> 
+            を生成しない点です。
         </para>
 
         <para>
-            ‚±‚̃}ƒbƒsƒ“ƒOí—ª‚ɑ΂µ‚ẮA<literal>Payment</literal> ‚ւ̃|ƒŠƒ‚[ƒtƒBƒbƒN‚ÈŠÖ˜A‚Í
-            ’ʏíA<literal>&lt;any&gt;</literal> ‚ðŽg‚Á‚ă}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B
+            このマッピング戦略に対しては、<literal>Payment</literal> へのポリモーフィックな関連は
+            通常、<literal>&lt;any&gt;</literal> を使ってマッピングされます。
         </para>
 
         <programlisting><![CDATA[<any name="payment" meta-type="string" id-type="long">
@@ -341,15 +343,15 @@
         </sect2>
 
         <sect2 id="inheritace-mixingpolymorphism">
-        <title>‘¼‚ÌŒp³ƒ}ƒbƒsƒ“ƒO‚ƈÖٓIƒ|ƒŠƒ‚[ƒtƒBƒYƒ€‚Ì‘g‚ݍ‡‚킹</title>
+        <title>他の継承マッピングと暗黙的ポリモーフィズムの組み合わせ</title>
 
         <para>
-            ‚±‚̃}ƒbƒsƒ“ƒO‚ɂ‚¢‚Ă̍X‚Ȃ钍ˆÓ“_‚ª‚ ‚è‚Ü‚·B
-            ƒTƒuƒNƒ‰ƒX‚ªŽ©g‚ð <literal>&lt;class&gt;</literal> —v‘f‚Æ‚µ‚ă}ƒbƒsƒ“ƒO‚µ‚Ä‚¢‚é‚̂ŁA
-            i‚©‚ <literal>Payment</literal> ‚Í’P‚È‚éƒCƒ“ƒ^[ƒtƒFƒCƒX‚Ȃ̂ŁjA
-            ‚»‚ꂼ‚ê‚̃TƒuƒNƒ‰ƒX‚ÍŠÈ’P‚É‚»‚Ì‘¼‚ÌŒp³ŠK‘w‚̈ꕔ‚Æ‚È‚è‚Ü‚·B
-            i‚µ‚©‚àA¡‚Ü‚Å‚Ç‚¨‚è <literal>Payment</literal> ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ɑ΂·‚éƒ|ƒŠƒ‚[ƒtƒBƒbƒN‚ȃNƒGƒŠ
-            ‚ðŽg—p‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·j
+            このマッピングについての更なる注意点があります。
+            サブクラスが自身を <literal>&lt;class&gt;</literal> 要素としてマッピングしているので、
+            (かつ <literal>Payment</literal> は単なるインターフェイスなので)、
+            それぞれのサブクラスは簡単にその他の継承階層の一部となります。
+            (しかも、今までどおり <literal>Payment</literal> インターフェイスに対するポリモーフィックなクエリ
+            を使用することができます)
        </para>
 
         <programlisting><![CDATA[<class name="CreditCardPayment" table="CREDIT_PAYMENT">
@@ -381,14 +383,14 @@
 </class>]]></programlisting>
 
         <para>
-            ‚à‚¤ˆê“xq‚ׂ܂·‚ªA<literal>Payment</literal> ‚Í–¾Ž¦“I‚É’è‹`‚³‚ê‚Ü‚¹‚ñB
-            ‚à‚µA<literal>Payment</literal> ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ɑ΂µ‚ăNƒGƒŠ‚ðŽÀs‚·‚é‚È‚ç
-            i—Ⴆ‚Î <literal>from Payment</literal> ß‚ðŽg‚Á‚ājA
-            Hibernate‚ÍŽ©“®“I‚É <literal>CreditCardPayment</literal> 
-            i‚ÆCreditCardPayment‚̃TƒuƒNƒ‰ƒXA<literal>Payment</literal> ‚ÌŽÀ‘•‚Å‚ ‚邽‚߁jA
-            ‚¨‚æ‚сA<literal>CashPayment</literal> A<literal>ChequePayment</literal> 
-            ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð•Ô‚µ‚Ü‚·B
-            <literal>NonelectronicTransaction</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚Í•Ô‚µ‚Ü‚¹‚ñB
+            もう一度述べますが、<literal>Payment</literal> は明示的に定義されません。
+            もし、<literal>Payment</literal> インターフェイスに対してクエリを実行するなら
+            (例えば <literal>from Payment</literal> 節を使って)、
+            Hibernateは自動的に <literal>CreditCardPayment</literal> 
+            (とCreditCardPaymentのサブクラス、<literal>Payment</literal> の実装であるため)、
+            および、<literal>CashPayment</literal> 、<literal>ChequePayment</literal> 
+            のインスタンスを返します。
+            <literal>NonelectronicTransaction</literal> インスタンスは返しません。
         </para>
         
         </sect2>
@@ -396,21 +398,21 @@
     </sect1>
 
     <sect1 id="inheritance-limitations">
-        <title>§ŒÀ</title>
+        <title>制限</title>
 
         <para>
-            table-per-concrete-class ƒ}ƒbƒsƒ“ƒOí—ª‚ւ́uˆÃ–Ù“Iƒ|ƒŠƒ‚[ƒtƒBƒYƒ€vƒAƒvƒ[ƒ`‚É‚Í
-            ‚¢‚­‚‚©‚̐§ŒÀ‚ª‚ ‚è‚Ü‚·B<literal>&lt;union-subclass&gt;</literal> ƒ}ƒbƒsƒ“ƒO‚ɑ΂µ‚Ä‚à
-            ­‚µŽã‚߂̐§ŒÀ‚ª‚ ‚è‚Ü‚·B
+            table-per-concrete-class マッピング戦略への「暗黙的ポリモーフィズム」アプローチには
+            いくつかの制限があります。<literal>&lt;union-subclass&gt;</literal> マッピングに対しても
+            少し弱めの制限があります。
         </para>
 
         <para>
-            ŽŸ‚̃e[ƒuƒ‹‚ɁAHibernate‚É‚¨‚¯‚étable-per-concrete-classƒ}ƒbƒsƒ“ƒO‚Ì
-            §ŒÀ‚âˆÃ–Ù“Iƒ|ƒŠƒ‚[ƒtƒBƒYƒ€‚̐§ŒÀ‚ðŽ¦‚µ‚Ü‚·B
+            次のテーブルに、Hibernateにおけるtable-per-concrete-classマッピングの
+            制限や暗黙的ポリモーフィズムの制限を示します。
         </para>
             
         <table frame="topbot">
-            <title>Œp³ƒ}ƒbƒsƒ“ƒO‚Ì‹@”\</title>
+            <title>継承マッピングの機能</title>
             <tgroup cols='8' align='left' colsep='1' rowsep='1'>
             <colspec colname='c1' colwidth="1*"/>
             <colspec colname='c2' colwidth="1*"/>
@@ -422,15 +424,15 @@
             <colspec colname='c8' colwidth="1*"/>
             <thead>
             <row>
-              <entry>Œp³í—ª</entry>
-              <entry>‘½‘Έê‚̃|ƒŠƒ‚[ƒtƒBƒYƒ€</entry>
-              <entry>ˆê‘Έê‚̃|ƒŠƒ‚[ƒtƒBƒYƒ€</entry>
-              <entry>ˆê‘Α½‚̃|ƒŠƒ‚[ƒtƒBƒYƒ€</entry>
-              <entry>‘½‘Α½‚̃|ƒŠƒ‚[ƒtƒBƒYƒ€</entry>
-              <entry>ƒ|ƒŠƒ‚[ƒtƒBƒYƒ€‚ðŽg‚Á‚½<literal>load()/get()</literal></entry>
-              <entry>ƒ|ƒŠƒ‚[ƒtƒBƒYƒ€‚ðŽg‚Á‚½ƒNƒGƒŠ</entry>
-              <entry>ƒ|ƒŠƒ‚[ƒtƒBƒYƒ€‚ðŽg‚Á‚½Œ‹‡</entry>
-              <entry>ŠO•”Œ‹‡‚É‚æ‚éƒtƒFƒbƒ`</entry>
+              <entry>継承戦略</entry>
+              <entry>多対一のポリモーフィズム</entry>
+              <entry>一対一のポリモーフィズム</entry>
+              <entry>一対多のポリモーフィズム</entry>
+              <entry>多対多のポリモーフィズム</entry>
+              <entry>ポリモーフィズムを使った<literal>load()/get()</literal></entry>
+              <entry>ポリモーフィズムを使ったクエリ</entry>
+              <entry>ポリモーフィズムを使った結合</entry>
+              <entry>外部結合によるフェッチ</entry>
             </row>
             </thead>
             <tbody>
@@ -443,7 +445,7 @@
                 <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>
+                <entry><emphasis>サポート</emphasis></entry>
             </row>
             <row>
                 <entry>table per subclass</entry>
@@ -454,7 +456,7 @@
                 <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>
+                <entry><emphasis>サポート</emphasis></entry>
             </row>
             <row>
                 <entry>table per concrete-class (union-subclass)</entry>
@@ -465,18 +467,18 @@
                 <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>
+                <entry><emphasis>サポート</emphasis></entry>
             </row>
             <row>
                 <entry>table per concrete class (implicit polymorphism)</entry>
                 <entry><literal>&lt;any&gt;</literal></entry>
-                <entry><emphasis>ƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚¹‚ñ</emphasis></entry>
-                <entry><emphasis>ƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚¹‚ñ</emphasis></entry>
+                <entry><emphasis>サポートしていません</emphasis></entry>
+                <entry><emphasis>サポートしていません</emphasis></entry>
                 <entry><literal>&lt;many-to-any&gt;</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>
+                <entry><emphasis>サポートしていません</emphasis></entry>
+                <entry><emphasis>サポートしていません</emphasis></entry>
             </row>
             </tbody>
             </tgroup>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/performance.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/performance.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/performance.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,133 +1,135 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="performance">
-    <title>ƒpƒtƒH[ƒ}ƒ“ƒX‚̉ü‘P</title>
+    <title>パフォーマンスの改善</title>
 
     <sect1 id="performance-fetching" revision="2">
-        <title>ƒtƒFƒbƒ`í—ª</title>
+        <title>フェッチ戦略</title>
 
         <para>
-            <emphasis>ƒtƒFƒbƒ`í—ª</emphasis> ‚́AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªŠÖ˜A‚ðƒiƒrƒQ[ƒg‚·‚é•K—v‚ª‚ ‚é
-            ‚Æ‚«‚ɁAHibernate‚ªŠÖ˜AƒIƒuƒWƒFƒNƒg‚𕜌³‚·‚邽‚ß‚ÉŽg—p‚·‚éí—ª‚Å‚·BƒtƒFƒbƒ`í—ª‚ÍO/Rƒ}ƒbƒsƒ“ƒO‚Ì
-            ƒƒ^ƒf[ƒ^‚ɐ錾‚·‚é‚©A“Á’è‚ÌHQLA <literal>Criteria</literal> ƒNƒGƒŠ‚ŃI[ƒo[ƒ‰ƒCƒh‚µ‚Ü‚·B
+            <emphasis>フェッチ戦略</emphasis> は、アプリケーションが関連をナビゲートする必要がある
+            ときに、Hibernateが関連オブジェクトを復元するために使用する戦略です。フェッチ戦略はO/Rマッピングの
+            メタデータに宣言するか、特定のHQL、 <literal>Criteria</literal> クエリでオーバーライドします。
         </para>
 
         <para>
-            Hibernate3‚ÍŽŸ‚ÉŽ¦‚·ƒtƒFƒbƒ`í—ª‚ð’è‹`‚µ‚Ä‚¢‚Ü‚·B
+            Hibernate3は次に示すフェッチ戦略を定義しています。
         </para>
 
         <itemizedlist>
              <listitem>
                 <para>
-                    <emphasis>Œ‹‡ƒtƒFƒbƒ`</emphasis> - Hibernate‚Í <literal>OUTER JOIN</literal> ‚ðŽg‚Á‚āA
-                    ŠÖ˜A‚·‚éƒCƒ“ƒXƒ^ƒ“ƒX‚âƒRƒŒƒNƒVƒ‡ƒ“‚ð‚P‚Â‚Ì <literal>SELECT</literal> 
-                    ‚Å•œŒ³‚µ‚Ü‚·B
+                    <emphasis>結合フェッチ</emphasis> - Hibernateは <literal>OUTER JOIN</literal> を使って、
+                    関連するインスタンスやコレクションを1つの <literal>SELECT</literal> 
+                    で復元します。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <emphasis>ƒZƒŒƒNƒgƒtƒFƒbƒ`</emphasis> - 2‰ñ–Ú‚Ì <literal>SELECT</literal>
-                    ‚ÅŠÖ˜A‚·‚éƒGƒ“ƒeƒBƒeƒB‚âƒRƒŒƒNƒVƒ‡ƒ“‚𕜌³‚µ‚Ü‚·B <literal>lazy="false"</literal> 
-                    ‚Å–¾Ž¦“I‚É’x‰„ƒtƒFƒbƒ`‚𖳌ø‚É‚µ‚È‚¯‚ê‚΁A‚±‚Ì2‰ñ–Ú‚Ìselect‚ÍŽÀÛ‚É
-                    ŠÖ˜A‚ɃAƒNƒZƒX‚µ‚½‚Æ‚«‚Ì‚ÝŽÀs‚³‚ê‚é‚Å‚µ‚傤B
+                    <emphasis>セレクトフェッチ</emphasis> - 2回目の <literal>SELECT</literal>
+                    で関連するエンティティやコレクションを復元します。 <literal>lazy="false"</literal> 
+                    で明示的に遅延フェッチを無効にしなければ、この2回目のselectは実際に
+                    関連にアクセスしたときのみ実行されるでしょう。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <emphasis>ƒTƒuƒZƒŒƒNƒgƒtƒFƒbƒ`</emphasis> - 2‰ñ–Ú‚Ì <literal>SELECT</literal> 
-                    ‚ŁA’¼‘O‚̃NƒGƒŠ‚âƒtƒFƒbƒ`‚Å•œŒ³‚µ‚½‚·‚ׂĂ̗v‘f‚ÉŠÖ˜A‚·‚éƒRƒŒƒNƒVƒ‡ƒ“‚ð
-                    •œŒ³‚µ‚Ü‚·B <literal>lazy="false"</literal> 
-                    ‚Å–¾Ž¦“I‚É’x‰„ƒtƒFƒbƒ`‚𖳌ø‚É‚µ‚È‚¯‚ê‚΁A‚±‚Ì2‰ñ–Ú‚Ìselect‚ÍŽÀÛ‚É
-                    ŠÖ˜A‚ɃAƒNƒZƒX‚µ‚½‚Æ‚«‚Ì‚ÝŽÀs‚³‚ê‚é‚Å‚µ‚傤B
+                    <emphasis>サブセレクトフェッチ</emphasis> - 2回目の <literal>SELECT</literal> 
+                    で、直前のクエリやフェッチで復元したすべての要素に関連するコレクションを
+                    復元します。 <literal>lazy="false"</literal> 
+                    で明示的に遅延フェッチを無効にしなければ、この2回目のselectは実際に
+                    関連にアクセスしたときのみ実行されるでしょう。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <emphasis>ƒoƒbƒ`ƒtƒFƒbƒ`</emphasis> - ƒZƒŒƒNƒgƒtƒFƒbƒ`‚Ì‚½‚߂̍œK‰»‚³‚ꂽí—ª
-                     - Hibernate‚̓Gƒ“ƒeƒBƒeƒB‚̃Cƒ“ƒXƒ^ƒ“ƒX‚âƒRƒŒƒNƒVƒ‡ƒ“‚̈êŒQ‚ð1‰ñ‚Ì
-                    <literal>SELECT</literal> ‚Å•œŒ³‚µ‚Ü‚·B‚±‚ê‚ÍŽåƒL[‚âŠO•”ƒL[‚̃ŠƒXƒg‚ðŽw’è‚·‚邱‚Æ‚É
-                    ‚É‚æ‚ès‚¢‚Ü‚·B
+                    <emphasis>バッチフェッチ</emphasis> - セレクトフェッチのための最適化された戦略
+                     - Hibernateはエンティティのインスタンスやコレクションの一群を1回の
+                    <literal>SELECT</literal> で復元します。これは主キーや外部キーのリストを指定することに
+                    により行います。
                 </para>
             </listitem>
         </itemizedlist>
         
         <para>
-            Hibernate‚ÍŽŸ‚ÉŽ¦‚·í—ª‚Æ‚à‹æ•Ê‚ð‚µ‚Ü‚·B
+            Hibernateは次に示す戦略とも区別をします。
         </para>
 
         <itemizedlist>
              <listitem>
                 <para>
-                    <emphasis>‘¦ŽžƒtƒFƒbƒ`</emphasis> - Š—LŽÒ‚̃IƒuƒWƒFƒNƒg‚ªƒ[ƒh‚³‚ꂽ‚Æ‚«‚ɁA
-                    ŠÖ˜AAƒRƒŒƒNƒVƒ‡ƒ“‚Í‘¦Žž‚ɃtƒFƒbƒ`‚³‚ê‚Ü‚·B
+                    <emphasis>即時フェッチ</emphasis> - 所有者のオブジェクトがロードされたときに、
+                    関連、コレクションは即時にフェッチされます。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <emphasis>’x‰„ƒRƒŒƒNƒVƒ‡ƒ“ƒtƒFƒbƒ`</emphasis> - ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒRƒŒƒNƒVƒ‡ƒ“‚É
-                    ‘΂µ‚Ä‘€ì‚ðs‚Á‚½‚Æ‚«‚ɃRƒŒƒNƒVƒ‡ƒ“‚ðƒtƒFƒbƒ`‚µ‚Ü‚·B
-                    (‚±‚ê‚̓RƒŒƒNƒVƒ‡ƒ“‚ɑ΂·‚éƒfƒtƒHƒ‹ƒg‚Ì“®ì‚Å‚·)
+                    <emphasis>遅延コレクションフェッチ</emphasis> - アプリケーションがコレクションに
+                    対して操作を行ったときにコレクションをフェッチします。
+                    (これはコレクションに対するデフォルトの動作です)
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <emphasis>"“Á•Ê‚È’x‰„"ƒRƒŒƒNƒVƒ‡ƒ“ƒtƒFƒbƒ`</emphasis> - ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f
-                    ‚P‚‚P‚‚ª“Æ—§‚µ‚āA•K—v‚È‚Æ‚«‚Ƀf[ƒ^ƒx[ƒX‚©‚çŽæ“¾‚³‚ê‚Ü‚·B
-                    Hibernate‚Í•K—v‚È‚¢‚È‚ç‚΁AƒRƒŒƒNƒVƒ‡ƒ“‘S‘Ì‚ðƒƒ‚ƒŠ‚ɃtƒFƒbƒ`‚·‚邱‚Æ‚Í
-                    ”ð‚¯‚Ü‚·i‚Æ‚Ä‚à‘å‚«‚ȃRƒŒƒNƒVƒ‡ƒ“‚É“K‚µ‚Ä‚¢‚Ü‚·jB
+                    <emphasis>"特別な遅延"コレクションフェッチ</emphasis> - コレクションの要素
+                    1つ1つが独立して、必要なときにデータベースから取得されます。
+                    Hibernateは必要ないならば、コレクション全体をメモリにフェッチすることは
+                    避けます(とても大きなコレクションに適しています)。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <emphasis>ƒvƒƒLƒVƒtƒFƒbƒ`</emphasis> - ’Pˆê’lŠÖ˜A‚́AŽ¯•ÊŽq‚ÌgetterˆÈŠO‚Ì
-                    ƒƒ\ƒbƒh‚ªŠÖ˜AƒIƒuƒWƒFƒNƒg‚ŌĂяo‚³‚ê‚é‚Æ‚«‚ɃtƒFƒbƒ`‚³‚ê‚Ü‚·B
+                    <emphasis>プロキシフェッチ</emphasis> - 単一値関連は、識別子のgetter以外の
+                    メソッドが関連オブジェクトで呼び出されるときにフェッチされます。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <emphasis>"ƒvƒƒLƒV‚È‚µ"ƒtƒFƒbƒ`</emphasis> - ’Pˆê’lŠÖ˜A‚́AƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚É
-                    ƒAƒNƒZƒX‚³‚ꂽ‚Æ‚«‚ɃtƒFƒbƒ`‚³‚ê‚Ü‚·BƒvƒƒLƒVƒtƒFƒbƒ`‚Æ”äŠr‚·‚é‚ƁA‚±‚Ì•û–@‚Í
-                    ’x‰„‚Ì“x‡‚¢‚ª­‚È‚¢iŠÖ˜A‚ÍŽ¯•ÊŽq‚ɃAƒNƒZƒX‚µ‚½‚¾‚¯‚Å‚àƒtƒFƒbƒ`‚³‚ê‚Ü‚·j
-                    ‚Å‚·‚ªA‚æ‚蓧‰ß“I‚ŁAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ɃvƒƒLƒV‚ª‘¶Ý‚µ‚È‚¢‚悤‚ÉŒ©‚¹‚Ü‚·B
-                    ‚±‚Ì•û–@‚̓rƒ‹ƒhŽž‚̃oƒCƒgƒR[ƒh‘g‚ݍž‚Ý‚ª•K—v‚É‚È‚èAŽg‚¤ê–Ê‚Í‚Ü‚ê‚Å‚·B
+                    <emphasis>"プロキシなし"フェッチ</emphasis> - 単一値関連は、インスタンス変数に
+                    アクセスされたときにフェッチされます。プロキシフェッチと比較すると、この方法は
+                    遅延の度合いが少ない(関連は識別子にアクセスしただけでもフェッチされます)
+                    ですが、より透過的で、アプリケーションにプロキシが存在しないように見せます。
+                    この方法はビルド時のバイトコード組み込みが必要になり、使う場面はまれです。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <emphasis>’x‰„‘®«ƒtƒFƒbƒ`</emphasis> - ‘®«‚â’Pˆê’lŠÖ˜A‚́AƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚ɃAƒNƒZƒX‚µ‚½
-                    ‚Æ‚«‚ɃtƒFƒbƒ`‚³‚ê‚Ü‚·B‚±‚Ì•û–@‚̓rƒ‹ƒhŽž‚̃oƒCƒgƒR[ƒh‘g‚ݍž‚Ý‚ª•K—v‚É‚È‚èA
-                    Žg‚¤ê–Ê‚Í‚Ü‚ê‚Å‚·B
+                    <emphasis>遅延属性フェッチ</emphasis> - 属性や単一値関連は、インスタンス変数にアクセスした
+                    ときにフェッチされます。この方法はビルド時のバイトコード組み込みが必要になり、
+                    使う場面はまれです。
                 </para>
             </listitem>
         </itemizedlist>
         
         <para>
-            “ñ‚‚̒¼s‚·‚éŠT”O‚ª‚ ‚è‚Ü‚·: <emphasis>‚¢‚Â</emphasis> ŠÖ˜A‚ðƒtƒFƒbƒ`‚·‚é‚©A
-            ‚»‚µ‚āA <emphasis>‚Ç‚¤‚â‚Á‚Ä</emphasis> ƒtƒFƒbƒ`‚·‚é‚©i‚Ç‚ñ‚ÈSQL‚ðŽg‚Á‚ājB
-            ‚±‚ê‚ç‚ð¬“¯‚µ‚È‚¢‚Å‚­‚¾‚³‚¢I <literal>fetch</literal> ‚̓pƒtƒH[ƒ}ƒ“ƒXƒ`ƒ…[ƒjƒ“ƒO‚ÉŽg‚¢‚Ü‚·B
-            <literal>lazy</literal> ‚Í‚ ‚éƒNƒ‰ƒX‚Ì•ª—£‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚Ì‚¤‚¿A‚ǂ̃f[ƒ^‚ðí‚É
-            Žg—p‰Â”\‚É‚·‚é‚©‚ÌŽæ‚茈‚ß‚ð’è‹`‚µ‚Ü‚·B
+            二つの直行する概念があります: <emphasis>いつ</emphasis> 関連をフェッチするか、
+            そして、 <emphasis>どうやって</emphasis> フェッチするか(どんなSQLを使って)。
+            これらを混同しないでください! <literal>fetch</literal> はパフォーマンスチューニングに使います。
+            <literal>lazy</literal> はあるクラスの分離されたインスタンスのうち、どのデータを常に
+            使用可能にするかの取り決めを定義します。
         </para>
  
         <sect2 id="performance-fetching-lazy">
-            <title>’x‰„ŠÖ˜A‚Ì“­‚«</title>
+            <title>遅延関連の働き</title>
             
             <para>
-                ƒfƒtƒHƒ‹ƒg‚ł́AHibernate3‚̓RƒŒƒNƒVƒ‡ƒ“‚ɑ΂µ‚Ä‚Í’x‰„ƒZƒŒƒNƒgƒtƒFƒbƒ`‚ðŽg‚¢A
-                ’Pˆê’lŠÖ˜A‚É‚Í’x‰„ƒvƒƒLƒVƒtƒFƒbƒ`‚ðŽg‚¢‚Ü‚·B‚±‚ê‚ç‚̃fƒtƒHƒ‹ƒg“®ì‚Í‚Ù‚Ú‚·‚ׂĂÌ
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì‚Ù‚Ú‚·‚ׂĂ̊֘A‚ňӖ¡‚ª‚ ‚è‚Ü‚·B
+                デフォルトでは、Hibernate3はコレクションに対しては遅延セレクトフェッチを使い、
+                単一値関連には遅延プロキシフェッチを使います。これらのデフォルト動作はほぼすべての
+                アプリケーションのほぼすべての関連で意味があります。
             </para>
             
             <para>
-                <emphasis>’:</emphasis>
-                <literal>hibernate.default_batch_fetch_size</literal> ‚ðƒZƒbƒg‚µ‚½‚Æ‚«‚́AHibernate‚Í
-                ’x‰„ƒtƒFƒbƒ`‚Ì‚½‚߂̃oƒbƒ`ƒtƒFƒbƒ`Å“K‰»‚ðŽg‚¤‚Å‚µ‚傤
-                i‚±‚̍œK‰»‚Í‚æ‚è×‚©‚¢ƒŒƒxƒ‹‚Å—LŒø‚É‚·‚邱‚Æ‚ào—ˆ‚Ü‚·jB
+                <emphasis>注:</emphasis>
+                <literal>hibernate.default_batch_fetch_size</literal> をセットしたときは、Hibernateは
+                遅延フェッチのためのバッチフェッチ最適化を使うでしょう
+                (この最適化はより細かいレベルで有効にすることも出来ます)。
             </para>
             
             <para>
-                ‚µ‚©‚µA’x‰„ƒtƒFƒbƒ`‚Í’m‚Á‚Ä‚¨‚©‚È‚¯‚ê‚΂Ȃç‚È‚¢ˆê‚‚̖â‘肪‚ ‚è‚Ü‚·B
-                Hibernate‚Ìsession‚ðƒI[ƒvƒ“‚µ‚Ä‚¢‚éƒRƒ“ƒeƒLƒXƒg‚ÌŠO‚©‚ç’x‰„ŠÖ˜A‚ɃAƒNƒZƒX‚·‚é‚ƁA
-                —áŠO‚ª”­¶‚µ‚Ü‚·B—áF
+                しかし、遅延フェッチは知っておかなければならない一つの問題があります。
+                Hibernateのsessionをオープンしているコンテキストの外から遅延関連にアクセスすると、
+                例外が発生します。例:
             </para>
         
             <programlisting><![CDATA[s = sessions.openSession();
@@ -143,38 +145,38 @@
 Integer accessLevel = (Integer) permissions.get("accounts");  // Error!]]></programlisting>
 
             <para>
-                <literal>Session</literal> ‚ªƒNƒ[ƒY‚³‚ꂽ‚Æ‚«ApermissionsƒRƒŒƒNƒVƒ‡ƒ“‚Í
-                ‰Šú‰»‚³‚ê‚Ä‚¢‚È‚¢‚½‚߁A‚±‚̃RƒŒƒNƒVƒ‡ƒ“‚ÍŽ©g‚̏ó‘Ô‚ðƒ[ƒh‚Å‚«‚Ü‚¹‚ñB
-                <emphasis>Hibernate‚͐؂藣‚³‚ꂽƒIƒuƒWƒFƒNƒg‚Ì’x‰„‰Šú‰»‚̓Tƒ|[ƒg
-                ‚µ‚Ä‚¢‚Ü‚¹‚ñ</emphasis> BC³•û–@‚Æ‚µ‚āAƒRƒŒƒNƒVƒ‡ƒ“‚©‚ç“ǂݍž‚Ý‚ðs‚¤ƒR[ƒh‚ð
-                ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðƒRƒ~ƒbƒg‚·‚é’¼‘O‚Ɉړ®‚³‚¹‚Ü‚·B
+                <literal>Session</literal> がクローズされたとき、permissionsコレクションは
+                初期化されていないため、このコレクションは自身の状態をロードできません。
+                <emphasis>Hibernateは切り離されたオブジェクトの遅延初期化はサポート
+                していません</emphasis> 。修正方法として、コレクションから読み込みを行うコードを
+                トランザクションをコミットする直前に移動させます。
             </para>
     
             <para>
-                ˆê•û‚ŁA <literal>lazy="false"</literal> ‚ðŠÖ˜Aƒ}ƒbƒsƒ“ƒO‚ÉŽw’è‚·‚邱‚ƂŁA
-                ’x‰„ˆ—‚ð‚µ‚È‚¢ƒRƒŒƒNƒVƒ‡ƒ“‚âŠÖ˜A‚ðŽg‚¤‚±‚Æ‚ªo—ˆ‚Ü‚·B 
-                ‚µ‚©‚µ‚È‚ª‚çA’x‰„‰Šú‰»‚Í‚Ù‚Ú‚·‚ׂẴRƒŒƒNƒVƒ‡ƒ“‚âŠÖ˜A‚ÅŽg‚í‚ê‚邱‚Æ‚ð
-                ˆÓ}‚µ‚Ä‚¢‚Ü‚·B‚à‚µ‚ ‚È‚½‚̃IƒuƒWƒFƒNƒgƒ‚ƒfƒ‹‚Ì’†‚É’x‰„ˆ—‚ð‚µ‚È‚¢ŠÖ˜A‚ð
-                ‘½‚­’è‹`‚µ‚Ä‚µ‚Ü‚¤‚ƁAHibernate‚͍ŏI“I‚ɂ̓gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“–ˆ‚É
-                ‚Ù‚ÚŠ®‘S‚ȃf[ƒ^ƒx[ƒX‚ðƒƒ‚ƒŠ‚Ì’†‚ɃtƒFƒbƒ`‚·‚邱‚Æ‚É‚È‚é‚Å‚µ‚傤I
+                一方で、 <literal>lazy="false"</literal> を関連マッピングに指定することで、
+                遅延処理をしないコレクションや関連を使うことが出来ます。 
+                しかしながら、遅延初期化はほぼすべてのコレクションや関連で使われることを
+                意図しています。もしあなたのオブジェクトモデルの中に遅延処理をしない関連を
+                多く定義してしまうと、Hibernateは最終的にはトランザクション毎に
+                ほぼ完全なデータベースをメモリの中にフェッチすることになるでしょう!
             </para>
     
             <para>
-                ‘¼•û‚ł́A“Á’è‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚É‚¨‚¢‚ăZƒŒƒNƒgƒtƒFƒbƒ`‚Ì‘ã‚í‚è‚É
-                Œ‹‡ƒtƒFƒbƒ`i“–‘R‚±‚ê‚Í’x‰„ˆ—‚Å‚Í‚È‚­‚È‚è‚Ü‚·j‚ð‘I‘ð‚µ‚½‚¢‚±‚Æ‚ª
-                ŽžX‚ ‚è‚Ü‚·B‚±‚ê‚©‚çƒtƒFƒbƒ`í—ª‚ðƒJƒXƒ^ƒ}ƒCƒY‚·‚é•û–@‚ð‚¨Œ©‚¹‚µ‚Ü‚·B
-                Hibernate3‚ł́AƒtƒFƒbƒ`í—ª‚ð‘I‘ð‚·‚éŽd‘g‚Ý‚Í’Pˆê’lŠÖ˜A‚ƃRƒŒƒNƒVƒ‡ƒ“‚Å
-                •Ï‚í‚è‚Í‚ ‚è‚Ü‚¹‚ñB
+                他方では、特定のトランザクションにおいてセレクトフェッチの代わりに
+                結合フェッチ(当然これは遅延処理ではなくなります)を選択したいことが
+                時々あります。これからフェッチ戦略をカスタマイズする方法をお見せします。
+                Hibernate3では、フェッチ戦略を選択する仕組みは単一値関連とコレクションで
+                変わりはありません。
             </para>
         
         </sect2>
         
         <sect2 id="performance-fetching-custom" revision="4">
-            <title>ƒtƒFƒbƒ`í—ª‚̃`ƒ…[ƒjƒ“ƒO</title>
+            <title>フェッチ戦略のチューニング</title>
             
             <para>
-                ƒZƒŒƒNƒgƒtƒFƒbƒ`iƒfƒtƒHƒ‹ƒgj‚ÍN+1ƒZƒŒƒNƒg–â‘è‚Æ‚¢‚¤‘å‚«‚ÈŽã“_‚ª‚ ‚邽‚߁A
-                ƒ}ƒbƒsƒ“ƒO’è‹`‚ÅŒ‹‡ƒtƒFƒbƒ`‚ð—LŒø‚É‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+                セレクトフェッチ(デフォルト)はN+1セレクト問題という大きな弱点があるため、
+                マッピング定義で結合フェッチを有効にすることができます。
             </para>
             
             <programlisting><![CDATA[<set name="permissions" 
@@ -186,52 +188,52 @@
            <programlisting><![CDATA[<many-to-one name="mother" class="Cat" fetch="join"/>]]></programlisting>
 
             <para>
-                ƒ}ƒbƒsƒ“ƒO’è‹`‚Å’è‹`‚µ‚½ <literal>ƒtƒFƒbƒ`</literal> í—ª‚ÍŽŸ‚Ì‚à‚̂ɉe‹¿‚µ‚Ü‚·B
+                マッピング定義で定義した <literal>フェッチ</literal> 戦略は次のものに影響します。
             </para>
             
         <itemizedlist>
              <listitem>
                 <para>
-                    <literal>get()</literal> ‚â <literal>load()</literal> ‚É‚æ‚é•œŒ³
+                    <literal>get()</literal> や <literal>load()</literal> による復元
                 </para>
             </listitem>
             <listitem>
                 <para>
 
-                    ŠÖ˜A‚ɃiƒrƒQ[ƒg‚µ‚½‚Æ‚«‚É”­¶‚·‚éˆÃ–Ù“I‚È•œŒ³
+                    関連にナビゲートしたときに発生する暗黙的な復元
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>Criteria</literal> ƒNƒGƒŠ
+                    <literal>Criteria</literal> クエリ
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>ƒTƒuƒZƒŒƒNƒg</literal> ƒtƒFƒbƒ`‚ðŽg‚¤HQLƒNƒGƒŠ
+                    <literal>サブセレクト</literal> フェッチを使うHQLクエリ
                 </para>
             </listitem>
         </itemizedlist>
 
             <para>
-                ‚½‚Æ‚¦‚Ç‚ñ‚ȃtƒFƒbƒ`í—ª‚ðŽg‚Á‚½‚Æ‚µ‚Ä‚àA’x‰„‚Å‚Í‚È‚¢ƒOƒ‰ƒt‚̓ƒ‚ƒŠ‚ɓǂݍž‚Ü‚ê‚邱‚Æ‚ª
-                •ÛØ‚³‚ê‚Ü‚·B‚‚܂èA“Á’è‚ÌHQLƒNƒGƒŠ‚ðŽÀs‚·‚邽‚ß‚É‚¢‚­‚‚©‚ÌSELECT•¶‚ª‘¦ŽžŽÀs‚³‚ê‚é
-                ‚±‚Æ‚ª‚ ‚é‚Ì‚Å’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+                たとえどんなフェッチ戦略を使ったとしても、遅延ではないグラフはメモリに読み込まれることが
+                保証されます。つまり、特定のHQLクエリを実行するためにいくつかのSELECT文が即時実行される
+                ことがあるので注意してください。
             </para>
 
             <para>
-                ’ʏí‚́Aƒ}ƒbƒsƒ“ƒO’è‹`‚ŃtƒFƒbƒ`‚̃JƒXƒ^ƒ}ƒCƒY‚͍s‚¢‚Ü‚¹‚ñB
-                ‘ã‚í‚è‚ɁAƒfƒtƒHƒ‹ƒg‚Ì“®ì‚Ì‚Ü‚Ü‚É‚µ‚Ä‚¨‚¢‚āAHQL‚Å <literal>left join fetch</literal> ‚ð
-                Žw’è‚·‚邱‚Æ‚Å“Á’è‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Å“®ì‚ðƒI[ƒo[ƒ‰ƒCƒh‚µ‚Ü‚·B
-                ‚±‚ê‚ÍHibernate‚ɏ‰‰ñ‚̃ZƒŒƒNƒg‚ÅŠO•”Œ‹‡‚ðŽg‚Á‚ÄŠÖ˜A‚ðæ‚ɃtƒFƒbƒ`‚·‚é‚悤‚ÉŽw’肵‚Ä‚¢‚Ü‚·B
-                <literal>Criteria</literal> ƒNƒGƒŠ‚ÌAPI‚ł́A
-                <literal>setFetchMode(FetchMode.JOIN)</literal> ‚ðŽg‚¤‚±‚Æ‚ªo—ˆ‚Ü‚·B
+                通常は、マッピング定義でフェッチのカスタマイズは行いません。
+                代わりに、デフォルトの動作のままにしておいて、HQLで <literal>left join fetch</literal> を
+                指定することで特定のトランザクションで動作をオーバーライドします。
+                これはHibernateに初回のセレクトで外部結合を使って関連を先にフェッチするように指定しています。
+                <literal>Criteria</literal> クエリのAPIでは、
+                <literal>setFetchMode(FetchMode.JOIN)</literal> を使うことが出来ます。
             </para>
             
             <para>
-                ‚à‚µ <literal>get()</literal> ‚â <literal>load()</literal> ‚ÅŽg‚í‚ê‚é
-                ƒtƒFƒbƒ`í—ª‚ð•Ï‚¦‚½‚¢‚ÆŠ´‚¶‚½‚Æ‚«‚ɂ́A’Pƒ‚É
-                <literal>Criteria</literal> ƒNƒGƒŠ‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B—áF
+                もし <literal>get()</literal> や <literal>load()</literal> で使われる
+                フェッチ戦略を変えたいと感じたときには、単純に
+                <literal>Criteria</literal> クエリを使ってください。例:
             </para>
             
             <programlisting><![CDATA[User user = (User) session.createCriteria(User.class)
@@ -240,42 +242,42 @@
                 .uniqueResult();]]></programlisting>
                 
             <para>
-                i‚±‚ê‚Í‚¢‚­‚‚©‚ÌORMƒ\ƒŠƒ…[ƒVƒ‡ƒ“‚ª"fetch plan"‚ƌĂñ‚Å‚¢‚é‚à‚Ì‚Æ“¯‚¶‚Å‚·Bj
+                (これはいくつかのORMソリューションが"fetch plan"と呼んでいるものと同じです。)
             </para>
 
             <para>
-                N+1ƒZƒŒƒNƒg–â‘è‚ð”ð‚¯‚é‚½‚ß‚Ì‚Ü‚Á‚½‚­ˆá‚¤•û–@‚́A‘æ2ƒŒƒxƒ‹ƒLƒƒƒbƒVƒ…‚ðŽg‚¤‚±‚Æ‚Å‚·B
+                N+1セレクト問題を避けるためのまったく違う方法は、第2レベルキャッシュを使うことです。
             </para>
 
         </sect2>
 
         <sect2 id="performance-fetching-proxies" revision="2">
-            <title>’Pˆê’[ŠÖ˜AƒvƒƒLƒV</title>
+            <title>単一端関連プロキシ</title>
 
             <para>
-                ƒRƒŒƒNƒVƒ‡ƒ“‚Ì’x‰„ƒtƒFƒbƒ`‚́AHibernateŽ©g‚ÌŽÀ‘•‚É‚æ‚é‰i‘±ƒRƒŒƒNƒVƒ‡ƒ“‚ðŽg‚Á‚Ä
-                ŽÀŒ»‚µ‚Ä‚¢‚Ü‚·B‚µ‚©‚µA’Pˆê’[ŠÖ˜A‚É‚¨‚¯‚é’x‰„ˆ—‚ł́Aˆá‚¤Žd‘g‚Ý‚ª
-                •K—v‚Å‚·B‘Ώۂ̊֘AƒGƒ“ƒeƒBƒeƒB‚̓vƒƒLƒV‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñBHibernate‚Í
-                i‚·‚΂炵‚¢CGLIBƒ‰ƒCƒuƒ‰ƒŠ‚É‚æ‚éjŽÀsŽž‚̃oƒCƒgƒR[ƒhŠg’£‚ð
-                Žg‚Á‚ĉi‘±ƒIƒuƒWƒFƒNƒg‚Ì’x‰„‰Šú‰»ƒvƒƒLƒV‚ðŽÀŒ»‚µ‚Ä‚¢‚Ü‚·B
+                コレクションの遅延フェッチは、Hibernate自身の実装による永続コレクションを使って
+                実現しています。しかし、単一端関連における遅延処理では、違う仕組みが
+                必要です。対象の関連エンティティはプロキシでなければなりません。Hibernateは
+                (すばらしいCGLIBライブラリによる)実行時のバイトコード拡張を
+                使って永続オブジェクトの遅延初期化プロキシを実現しています。
             </para>
 
             <para>
-                ƒfƒtƒHƒ‹ƒg‚ł́AHibernate3‚́iŠJŽnŽž‚Ɂj‚·‚ׂẲi‘±ƒNƒ‰ƒX‚̃vƒƒLƒV‚𐶐¬‚µA
-                ‚»‚ê‚ç‚ðŽg‚Á‚āA <literal>many-to-one</literal> ‚â <literal>one-to-one</literal> ŠÖ˜A‚Ì
-                ’x‰„ƒtƒFƒbƒ`‚ð‰Â”\‚É‚µ‚Ä‚¢‚Ü‚·B
+                デフォルトでは、Hibernate3は(開始時に)すべての永続クラスのプロキシを生成し、
+                それらを使って、 <literal>many-to-one</literal> や <literal>one-to-one</literal> 関連の
+                遅延フェッチを可能にしています。
             </para>
 
             <para>
-                ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚Å <literal>proxy</literal> ‘®«‚É‚æ‚Á‚āAƒNƒ‰ƒX‚̃vƒƒLƒVƒCƒ“ƒ^[ƒtƒFƒCƒX‚Æ‚µ‚Ä
-                Žg‚¤ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðéŒ¾‚Å‚«‚Ü‚·BƒfƒtƒHƒ‹ƒg‚ł́AHibernate‚Í‚»‚̃Nƒ‰ƒX‚̃TƒuƒNƒ‰ƒX‚ðŽg‚¢‚Ü‚·B
-                <emphasis>ƒvƒƒLƒVƒNƒ‰ƒX‚͏­‚È‚­‚Æ‚àƒpƒbƒP[ƒW‰ÂŽ‹‚ŃfƒtƒHƒ‹ƒgƒRƒ“ƒXƒgƒ‰ƒNƒ^‚ðŽÀ‘•‚µ‚È‚¯‚ê‚Î
-                ‚È‚ç‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B‚·‚ׂẲi‘±ƒNƒ‰ƒX‚É‚±‚̃Rƒ“ƒXƒgƒ‰ƒNƒ^‚𐄏§‚µ‚Ü‚·I</emphasis>
+                マッピングファイルで <literal>proxy</literal> 属性によって、クラスのプロキシインターフェイスとして
+                使うインターフェイスを宣言できます。デフォルトでは、Hibernateはそのクラスのサブクラスを使います。
+                <emphasis>プロキシクラスは少なくともパッケージ可視でデフォルトコンストラクタを実装しなければ
+                ならないことに注意してください。すべての永続クラスにこのコンストラクタを推奨します!</emphasis>
             </para>
 
             <para>
-                ƒ|ƒŠƒ‚[ƒtƒBƒYƒ€‚̃Nƒ‰ƒX‚ɑ΂µ‚Ä‚±‚Ì•û–@‚ð“K—p‚·‚é‚Æ‚«‚É‚¢‚­‚‚©l—¶‚·‚邱‚Æ‚ª‚ ‚è‚Ü‚·B
-                —áF
+                ポリモーフィズムのクラスに対してこの方法を適用するときにいくつか考慮することがあります。
+                例:
             </para>
 
             <programlisting><![CDATA[<class name="Cat" proxy="Cat">
@@ -286,9 +288,9 @@
 </class>]]></programlisting>
 
             <para>
-                ‘æˆê‚ɁA <literal>Cat</literal> ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Í <literal>DomesticCat</literal> 
-                ‚ɃLƒƒƒXƒg‚Å‚«‚Ü‚¹‚ñB‚½‚Æ‚¦Šî‚Æ‚È‚éƒCƒ“ƒXƒ^ƒ“ƒX‚ª <literal>DomesticCat</literal> 
-                ‚Å‚ ‚Á‚½‚Æ‚µ‚Ä‚à‚Å‚·B
+                第一に、 <literal>Cat</literal> のインスタンスは <literal>DomesticCat</literal> 
+                にキャストできません。たとえ基となるインスタンスが <literal>DomesticCat</literal> 
+                であったとしてもです。
             </para>
 
             <programlisting><![CDATA[Cat cat = (Cat) session.load(Cat.class, id);  // instantiate a proxy (does not hit the db)
@@ -298,7 +300,7 @@
 }]]></programlisting>
 
             <para>
-                ‘æ“ñ‚ɁAƒvƒƒLƒV‚Ì <literal>==</literal> ‚͐¬—§‚µ‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·B
+                第二に、プロキシの <literal>==</literal> は成立しないことがあります。
             </para>
 
             <programlisting><![CDATA[Cat cat = (Cat) session.load(Cat.class, id);            // instantiate a Cat proxy
@@ -307,28 +309,28 @@
 System.out.println(cat==dc);                            // false]]></programlisting>
 
             <para>
-                ‚µ‚©‚µA‚±‚ê‚ÍŒ©‚©‚¯‚قLj«‚¢ó‹µ‚Æ‚¢‚¤‚킯‚Å‚Í‚ ‚è‚Ü‚¹‚ñB‚½‚Æ‚¦ˆÙ‚È‚Á‚½ƒvƒƒLƒVƒIƒuƒWƒFƒNƒg‚Ö‚Ì
-                “ñ‚‚̎QÆ‚ª‚ ‚Á‚½‚Æ‚µ‚Ä‚àAŠî‚Æ‚È‚éƒCƒ“ƒXƒ^ƒ“ƒX‚Í“¯‚¶ƒIƒuƒWƒFƒNƒg‚Å‚·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> ƒNƒ‰ƒX‚â <literal>final</literal> ƒƒ\ƒbƒh‚ðŽ‚ÂƒNƒ‰ƒX‚É
-                CGLIBƒvƒƒLƒV‚ðŽg‚¦‚Ü‚¹‚ñB
+                第三に、 <literal>final</literal> クラスや <literal>final</literal> メソッドを持つクラスに
+                CGLIBプロキシを使えません。
             </para>
 
             <para>
-                ÅŒã‚ɁA‚à‚µ‰i‘±ƒIƒuƒWƒFƒNƒg‚̃Cƒ“ƒXƒ^ƒ“ƒX‰»Žž(—Ⴆ‚΁A‰Šú‰»ˆ—‚âƒfƒtƒHƒ‹ƒgƒRƒ“ƒXƒgƒ‰ƒNƒ^‚Ì’†‚Å)
-                ‚É‚È‚ñ‚ç‚©‚̃Šƒ\[ƒX‚ª•K—v‚Æ‚È‚é‚È‚çA‚»‚̃Šƒ\[ƒX‚à‚Ü‚½ƒvƒƒLƒV‚ð’Ê‚µ‚Ď擾‚³‚ê‚Ü‚·B
-                ŽÀÛ‚ɂ́AƒvƒƒLƒVƒNƒ‰ƒX‚͉i‘±ƒNƒ‰ƒX‚̃TƒuƒNƒ‰ƒX‚Å‚·B 
+                最後に、もし永続オブジェクトのインスタンス化時(例えば、初期化処理やデフォルトコンストラクタの中で)
+                になんらかのリソースが必要となるなら、そのリソースもまたプロキシを通して取得されます。
+                実際には、プロキシクラスは永続クラスのサブクラスです。 
             </para>
 
             <para>
-                ‚±‚ê‚ç‚Ì–â‘è‚ÍJava‚Ì’PˆêŒp³ƒ‚ƒfƒ‹‚ÌŒ´—ã‚̐§ŒÀ‚Ì‚½‚ß‚Å‚·B‚à‚µ‚±‚ê‚ç‚Ì–â‘è‚ð”ð‚¯‚½‚¢‚Ì‚È‚çA
-                ƒrƒWƒlƒXƒƒ\ƒbƒh‚ðéŒ¾‚µ‚½ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ð‚»‚ê‚¼‚ê‰i‘±ƒNƒ‰ƒX‚ÅŽÀ‘•‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚Å‚±‚ê‚ç‚̃Cƒ“ƒ^[ƒtƒFƒCƒX‚ðŽw’è‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B—áF
+                これらの問題はJavaの単一継承モデルの原理上の制限のためです。もしこれらの問題を避けたいのなら、
+                ビジネスメソッドを宣言したインターフェイスをそれぞれ永続クラスで実装しなければなりません。
+                マッピングファイルでこれらのインターフェイスを指定する必要があります。例:
             </para>
 
             <programlisting><![CDATA[<class name="CatImpl" proxy="Cat">
@@ -339,11 +341,11 @@
 </class>]]></programlisting>
 
             <para>
-                <literal>CatImpl</literal> ‚Í <literal>Cat</literal> ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽÀ‘•‚·‚é‚̂ɑ΂µA
-                <literal>DomesticCatImpl</literal> ‚Í <literal>DomesticCat</literal> ‚ðŽÀ‘•‚µ‚Ü‚·B
-                ‚·‚é‚ƁA <literal>load()</literal> ‚â <literal>iterate()</literal> ‚́A
-                <literal>Cat</literal> ‚â <literal>DomesticCat</literal> ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚̃vƒƒLƒV‚ð
-                •Ô‚µ‚Ü‚·Bi <literal>list()</literal> ‚͒ʏí‚̓vƒƒLƒV‚ð•Ô‚³‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢Bj
+                <literal>CatImpl</literal> は <literal>Cat</literal> インターフェイスを実装するのに対し、
+                <literal>DomesticCatImpl</literal> は <literal>DomesticCat</literal> を実装します。
+                すると、 <literal>load()</literal> や <literal>iterate()</literal> は、
+                <literal>Cat</literal> や <literal>DomesticCat</literal> のインスタンスのプロキシを
+                返します。( <literal>list()</literal> は通常はプロキシを返さないことに注意してください。)
             </para>
 
             <programlisting><![CDATA[Cat cat = (Cat) session.load(CatImpl.class, catid);
@@ -351,136 +353,136 @@
 Cat fritz = (Cat) iter.next();]]></programlisting>
 
             <para>
-                ŠÖ˜A‚à’x‰„‰Šú‰»‚³‚ê‚Ü‚·B‚±‚ê‚̓vƒƒpƒeƒB‚ð <literal>Cat</literal> Œ^‚Ő錾‚µ‚È‚¯‚ê‚Î
-                ‚È‚ç‚È‚¢‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B <literal>CatImpl</literal> ‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
+                関連も遅延初期化されます。これはプロパティを <literal>Cat</literal> 型で宣言しなければ
+                ならないことを意味します。 <literal>CatImpl</literal> ではありません。
             </para>
 
             <para>
-                ƒvƒƒLƒV‚̏‰Šú‰»‚ð <emphasis>•K—v‚Æ‚µ‚È‚¢</emphasis> ‘€ì‚à‘¶Ý‚µ‚Ü‚·B
+                プロキシの初期化を <emphasis>必要としない</emphasis> 操作も存在します。
             </para>
 
             <itemizedlist spacing="compact">
                 <listitem>
                     <para>
-                        <literal>equals()</literal> i‰i‘±ƒNƒ‰ƒX‚ª <literal>equals()</literal> ‚ð
-                        ƒI[ƒo[ƒ‰ƒCƒh‚µ‚È‚¢‚Æ‚«j
+                        <literal>equals()</literal> (永続クラスが <literal>equals()</literal> を
+                        オーバーライドしないとき)
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        <literal>hashCode()</literal> i‰i‘±ƒNƒ‰ƒX‚ª <literal>hashCode()</literal> ‚ð
-                        ƒI[ƒo[ƒ‰ƒCƒh‚µ‚È‚¢‚Æ‚«j
+                        <literal>hashCode()</literal> (永続クラスが <literal>hashCode()</literal> を
+                        オーバーライドしないとき)
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        Ž¯•ÊŽq‚Ìgetterƒƒ\ƒbƒh
+                        識別子のgetterメソッド
                     </para>
                 </listitem>
             </itemizedlist>
 
             <para>
-                Hibernate‚Í <literal>equals()</literal> ‚â <literal>hashCode()</literal> ‚ðƒI[ƒo[ƒ‰ƒCƒh‚µ‚½
-                ‰i‘±ƒNƒ‰ƒX‚ðŒŸo‚µ‚Ü‚·B
+                Hibernateは <literal>equals()</literal> や <literal>hashCode()</literal> をオーバーライドした
+                永続クラスを検出します。
             </para>
 
             <para>
-                ƒfƒtƒHƒ‹ƒg‚Ì <literal>lazy="proxy"</literal> ‚Ì‘ã‚í‚è‚ɁA <literal>lazy="no-proxy"</literal> ‚ð
-                ‘I‚ñ‚¾‚±‚ƂŁAŒ^•ÏŠ·‚ÉŠÖ˜A‚·‚é–â‘è‚ð‰ñ”ð‚·‚é‚±‚Æ‚ªo—ˆ‚Ü‚·B
-                ‚µ‚©‚µAƒrƒ‹ƒhŽž‚̃oƒCƒgƒR[ƒh‘g‚ݍž‚Ý‚ª•K—v‚É‚È‚èA‚ǂ̂悤‚È‘€ì‚Å‚ ‚Á‚Ä‚àA
-                ‚½‚¾‚¿‚ɃvƒƒLƒV‚̏‰Šú‰»‚ðs‚¤‚±‚Æ‚É‚È‚é‚Å‚µ‚傤B
+                デフォルトの <literal>lazy="proxy"</literal> の代わりに、 <literal>lazy="no-proxy"</literal> を
+                選んだことで、型変換に関連する問題を回避することが出来ます。
+                しかし、ビルド時のバイトコード組み込みが必要になり、どのような操作であっても、
+                ただちにプロキシの初期化を行うことになるでしょう。
             </para>
 
         </sect2>
 
         <sect2 id="performance-fetching-initialization" revision="1">
-            <title>ƒRƒŒƒNƒVƒ‡ƒ“‚ƃvƒƒLƒV‚̏‰Šú‰»</title>
+            <title>コレクションとプロキシの初期化</title>
 
             <para>
-                <literal>LazyInitializationException</literal> ‚́A <literal>Session</literal> ‚̃XƒR[ƒvŠO‚©‚ç
-                ‰Šú‰»‚µ‚Ä‚¢‚È‚¢ƒRƒŒƒNƒVƒ‡ƒ“‚âƒvƒƒLƒV‚ɃAƒNƒZƒX‚³‚ꂽ‚Æ‚«‚ɁAHibernate‚É‚æ‚Á‚ăXƒ[‚³‚ê‚Ü‚·B
-                ‚·‚È‚í‚¿AƒRƒŒƒNƒVƒ‡ƒ“‚âƒvƒƒLƒV‚Ö‚ÌŽQÆ‚ðŽ‚ÂƒGƒ“ƒeƒBƒeƒB‚ª•ª—£‚³‚ꂽó‘Ô‚ÌŽž‚Å‚·B
+                <literal>LazyInitializationException</literal> は、 <literal>Session</literal> のスコープ外から
+                初期化していないコレクションやプロキシにアクセスされたときに、Hibernateによってスローされます。
+                すなわち、コレクションやプロキシへの参照を持つエンティティが分離された状態の時です。
             </para>
 
             <para>
-                <literal>Session</literal> ‚ðƒNƒ[ƒY‚·‚é‘O‚ɃvƒƒLƒV‚âƒRƒŒƒNƒVƒ‡ƒ“‚̏‰Šú‰»‚ðŠmŽÀ‚É
-                s‚¢‚½‚¢‚Æ‚«‚ª‚ ‚è‚Ü‚·B‚à‚¿‚ë‚ñA <literal>cat.getSex()</literal> 
-                ‚â <literal>cat.getKittens().size()</literal> ‚È‚Ç‚ðí‚ɌĂяo‚·‚±‚Ƃŏ‰Šú‰»‚ð‹­§‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚·B
-                ‚µ‚©‚µ‚±‚ê‚̓R[ƒh‚ð“ǂސl‚ð¬—‚³‚¹A”Ä—p“I‚ȃR[ƒh‚Æ‚¢‚¤“_‚©‚ç‚à•s•Ö‚Å‚·B
+                <literal>Session</literal> をクローズする前にプロキシやコレクションの初期化を確実に
+                行いたいときがあります。もちろん、 <literal>cat.getSex()</literal> 
+                や <literal>cat.getKittens().size()</literal> などを常に呼び出すことで初期化を強制することはできます。
+                しかしこれはコードを読む人を混乱させ、汎用的なコードという点からも不便です。
             </para>
 
             <para>
-                staticƒƒ\ƒbƒh‚Ì <literal>Hibernate.initialize()</literal> ‚â <literal>Hibernate.isInitialized()</literal> 
-                ‚Í’x‰„‰Šú‰»‚̃RƒŒƒNƒVƒ‡ƒ“‚âƒvƒƒLƒV‚ðˆµ‚¤‚Æ‚«‚É•Ö—˜‚È•û–@‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É’ñ‹Ÿ‚µ‚Ü‚·B
-                <literal>Hibernate.initialize(cat)</literal> ‚́A <literal>Session</literal> ‚ªƒI[ƒvƒ“‚µ‚Ä‚¢‚éŒÀ‚è‚Í
-                <literal>cat</literal> ƒvƒƒLƒV‚ð‹­§“I‚ɏ‰Šú‰»‚µ‚Ü‚·B
-                <literal>Hibernate.initialize( cat.getKittens() )</literal> ‚ÍkittensƒRƒŒƒNƒVƒ‡ƒ“‚ɑ΂µ‚Ä“¯—l‚Ì
-                Œø‰Ê‚ª‚ ‚è‚Ü‚·B
+                staticメソッドの <literal>Hibernate.initialize()</literal> や <literal>Hibernate.isInitialized()</literal> 
+                は遅延初期化のコレクションやプロキシを扱うときに便利な方法をアプリケーションに提供します。
+                <literal>Hibernate.initialize(cat)</literal> は、 <literal>Session</literal> がオープンしている限りは
+                <literal>cat</literal> プロキシを強制的に初期化します。
+                <literal>Hibernate.initialize( cat.getKittens() )</literal> はkittensコレクションに対して同様の
+                効果があります。
             </para>
 
             <para>
-                •Ê‚Ì‘I‘ðŽˆ‚Æ‚µ‚āA•K—v‚È‚·‚ׂẴRƒŒƒNƒVƒ‡ƒ“‚âƒvƒƒLƒV‚ªƒ[ƒh‚³‚ê‚é‚Ü‚Å
-                <literal>Session</literal> ‚ðƒI[ƒvƒ“‚É‚µ‚Ä‚¨‚­•û–@‚ª‚ ‚è‚Ü‚·B‚¢‚­‚‚©‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì
-                ƒA[ƒLƒeƒNƒ`ƒƒ‚ł́A“Á‚ÉHibernate‚É‚æ‚éƒf[ƒ^ƒAƒNƒZƒX‚ðs‚¤ƒR[ƒh‚ƁA‚»‚ê‚ðŽg‚¤
-                ƒR[ƒh‚ªˆÙ‚È‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃ŒƒCƒ„[‚âA•¨—“I‚ɈقȂéƒvƒƒZƒbƒT‚Ì‚Æ‚«‚ɂ́A
-                ƒRƒŒƒNƒVƒ‡ƒ“‚ª‰Šú‰»‚³‚ê‚é‚Æ‚«‚É <literal>Session</literal> ‚ªƒI[ƒvƒ“‚µ‚Ä‚¢‚邱‚Æ‚ð
-                •ÛØ‚·‚é–â‘肪‚ ‚è‚Ü‚·B‚±‚Ì–â‘è‚ɑ΂µ‚Ä‚Í2‚‚̊î–{“I‚È•û–@‚ª‚ ‚è‚Ü‚·B
+                別の選択肢として、必要なすべてのコレクションやプロキシがロードされるまで
+                <literal>Session</literal> をオープンにしておく方法があります。いくつかのアプリケーションの
+                アーキテクチャでは、特にHibernateによるデータアクセスを行うコードと、それを使う
+                コードが異なるアプリケーションのレイヤーや、物理的に異なるプロセッサのときには、
+                コレクションが初期化されるときに <literal>Session</literal> がオープンしていることを
+                保証する問題があります。この問題に対しては2つの基本的な方法があります。
             </para>
 
             <itemizedlist>
                 <listitem>
                     <para>
 
-                        Webƒx[ƒX‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ł́A
-                        ƒrƒ…[‚̃Œƒ“ƒ_ƒŠƒ“ƒO‚ªŠ®—¹‚µAƒŠƒNƒGƒXƒg‚ªI‚í‚éˆê”ԍŌã‚Å <literal>Session</literal> 
-                        ‚ðƒNƒ[ƒY‚·‚邽‚߂ɁAƒT[ƒuƒŒƒbƒgƒtƒBƒ‹ƒ^‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·i <emphasis>Open Session in View</emphasis> 
-                        ƒpƒ^[ƒ“‚Å‚·jB‚à‚¿‚ë‚ñAƒAƒvƒŠƒP[ƒVƒ‡ƒ“Šî”Õ‚Ì—áŠOˆ—‚̐³Šm«‚ª”ñí‚ɏd—v‚É‚È‚è‚Ü‚·B
-                        ƒrƒ…[‚̃Œƒ“ƒ_ƒŠƒ“ƒO’†‚É—áŠO‚ª”­¶‚µ‚½‚Æ‚«‚Å‚³‚¦Aƒ†[ƒU‚ɏˆ—‚ª–ß‚é‘O‚É
-                        <literal>Session</literal> ‚̃Nƒ[ƒY‚ƃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̏I—¹‚ðs‚¤
-                        ‚±‚Æ‚ª•s‰ÂŒ‡‚É‚È‚è‚Ü‚·B
-                        Hibernate‚ÌWiki‚ɍڂÁ‚Ä‚¢‚é"Open Session in View"ƒpƒ^[ƒ“‚Ì—á‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                        Webベースのアプリケーションでは、
+                        ビューのレンダリングが完了し、リクエストが終わる一番最後で <literal>Session</literal> 
+                        をクローズするために、サーブレットフィルタを使うことができます( <emphasis>Open Session in View</emphasis> 
+                        パターンです)。もちろん、アプリケーション基盤の例外処理の正確性が非常に重要になります。
+                        ビューのレンダリング中に例外が発生したときでさえ、ユーザに処理が戻る前に
+                        <literal>Session</literal> のクローズとトランザクションの終了を行う
+                        ことが不可欠になります。
+                        HibernateのWikiに載っている"Open Session in View"パターンの例を参照してください。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        ƒrƒWƒlƒX‘w‚ª•ª—£‚µ‚Ä‚¢‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ł́AƒrƒWƒlƒXƒƒWƒbƒN‚Í
-                        Web‘w‚Å•K—v‚É‚È‚é‚·‚ׂẴRƒŒƒNƒVƒ‡ƒ“‚ðŽ–‘O‚É"€”õ"‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
-                        ‚±‚ê‚Í“Á’è‚̃†[ƒXƒP[ƒX‚Å•K—v‚Æ‚È‚éƒvƒŒƒ[ƒ“ƒe[ƒVƒ‡ƒ“/Web‘w‚ɑ΂µA
-                        ƒrƒWƒlƒX‘w‚ª‚·‚ׂẴf[ƒ^‚ðƒ[ƒh‚µA‚·‚ׂẴf[ƒ^‚ð‰Šú‰»‚µ‚Ä•Ô‚·‚ׂ«‚Æ
-                        ‚¢‚¤‚±‚Æ‚ðˆÓ–¡‚µ‚Ä‚¢‚Ü‚·B’ʏí‚́AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍWeb‘w‚Å•K—v‚ȃRƒŒƒNƒVƒ‡ƒ“
-                        ‚»‚ꂼ‚ê‚ɑ΂µ‚Ä <literal>Hibernate.initialize()</literal> ‚ðŒÄ‚яo‚·‚©
-                        i‚±‚̌Ăяo‚µ‚̓ZƒbƒVƒ‡ƒ“‚ðƒNƒ[ƒY‚·‚é‘O‚ɍs‚¤•K—v‚ª‚ ‚è‚Ü‚·jA
-                        HibernateƒNƒGƒŠ‚Ì <literal>FETCH</literal> ß‚â <literal>Criteria</literal> 
-                        ‚Ì <literal>FetchMode.JOIN</literal> ‚ðŽg‚Á‚ăRƒŒƒNƒVƒ‡ƒ“‚ðæ‚É•œŒ³‚µ‚Ü‚·B
-                        •’Ê‚Í <emphasis>Session Facade</emphasis> ƒpƒ^[ƒ“‚Ì‘ã‚í‚è‚É
-                        <emphasis>Command</emphasis> ƒpƒ^[ƒ“‚ðÌ—p‚·‚é‚Ù‚¤‚ª‚æ‚èŠÈ’P‚Å‚·B
+                        ビジネス層が分離しているアプリケーションでは、ビジネスロジックは
+                        Web層で必要になるすべてのコレクションを事前に"準備"する必要があります。
+                        これは特定のユースケースで必要となるプレゼンテーション/Web層に対し、
+                        ビジネス層がすべてのデータをロードし、すべてのデータを初期化して返すべきと
+                        いうことを意味しています。通常は、アプリケーションはWeb層で必要なコレクション
+                        それぞれに対して <literal>Hibernate.initialize()</literal> を呼び出すか
+                        (この呼び出しはセッションをクローズする前に行う必要があります)、
+                        Hibernateクエリの <literal>FETCH</literal> 節や <literal>Criteria</literal> 
+                        の <literal>FetchMode.JOIN</literal> を使ってコレクションを先に復元します。
+                        普通は <emphasis>Session Facade</emphasis> パターンの代わりに
+                        <emphasis>Command</emphasis> パターンを採用するほうがより簡単です。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        ‰Šú‰»‚³‚ê‚Ä‚¢‚È‚¢ƒRƒŒƒNƒVƒ‡ƒ“i‚à‚µ‚­‚Í‘¼‚̃vƒƒLƒVj‚ɃAƒNƒZƒX‚·‚é‘O‚ɁA
-                        <literal>merge()</literal> ‚â <literal>lock()</literal> ‚ðŽg‚Á‚ĐV‚µ‚¢
-                        <literal>Session</literal> ‚ɈȑO‚Ƀ[ƒh‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ð’ljÁ‚·‚邱‚Æ‚ào—ˆ‚Ü‚·B
-                        ƒAƒhƒzƒbƒN‚ȃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚𓱓ü‚µ‚½‚̂ŁAHibernate‚Í
-                        ‚±‚ê‚ðŽ©“®“I‚ɍs‚킸A <emphasis>s‚¤‚ׂ«‚Å‚à‚ ‚è‚Ü‚¹‚ñ</emphasis> I
+                        初期化されていないコレクション(もしくは他のプロキシ)にアクセスする前に、
+                        <literal>merge()</literal> や <literal>lock()</literal> を使って新しい
+                        <literal>Session</literal> に以前にロードされたオブジェクトを追加することも出来ます。
+                        アドホックなトランザクションのセマンティクスを導入したので、Hibernateは
+                        これを自動的に行わず、 <emphasis>行うべきでもありません</emphasis> !
                     </para>
                 </listitem>
             </itemizedlist>
 
             <para>
-                ‘å‚«‚ȃRƒŒƒNƒVƒ‡ƒ“‚ð‰Šú‰»‚µ‚½‚­‚Í‚È‚¢‚ªAƒRƒŒƒNƒVƒ‡ƒ“‚ɂ‚¢‚Ä‚Ì‚È‚ñ‚ç‚©‚̏î•ñiƒTƒCƒY‚̂悤‚ȁj
-                ‚âƒf[ƒ^‚̃TƒuƒZƒbƒg‚ð•K—v‚Æ‚·‚邱‚Æ‚ª‚ ‚è‚Ü‚·B
+                大きなコレクションを初期化したくはないが、コレクションについてのなんらかの情報(サイズのような)
+                やデータのサブセットを必要とすることがあります。
             </para>
 
             <para>
-                ƒRƒŒƒNƒVƒ‡ƒ“ƒtƒBƒ‹ƒ^‚ðŽg‚¤‚±‚ƂŁA‰Šú‰»‚¹‚¸‚ɃRƒŒƒNƒVƒ‡ƒ“‚̃TƒCƒY‚ðŽæ“¾‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B
+                コレクションフィルタを使うことで、初期化せずにコレクションのサイズを取得することが出来ます。
             </para>
 
             <programlisting><![CDATA[( (Integer) s.createFilter( collection, "select count(*)" ).list().get(0) ).intValue()]]></programlisting>
 
             <para>
-                <literal>createFilter()</literal> ƒƒ\ƒbƒh‚́AƒRƒŒƒNƒVƒ‡ƒ“‘S‘Ì‚ð‰Šú‰»‚·‚é•K—v‚È‚µ‚ɁAƒRƒŒƒNƒVƒ‡ƒ“‚Ì
-                ƒTƒuƒZƒbƒg‚𕜌³‚·‚邽‚ß‚ÉŒø‰Ê“I‚ÉŽg‚¦‚Ü‚·B
+                <literal>createFilter()</literal> メソッドは、コレクション全体を初期化する必要なしに、コレクションの
+                サブセットを復元するために効果的に使えます。
             </para>
 
             <programlisting><![CDATA[s.createFilter( lazyCollection, "").setFirstResult(0).setMaxResults(10).list();]]></programlisting>
@@ -488,39 +490,39 @@
         </sect2>
 
         <sect2 id="performance-fetching-batch">
-            <title>ƒoƒbƒ`ƒtƒFƒbƒ`‚ÌŽg—p</title>
+            <title>バッチフェッチの使用</title>
 
             <para>
-                Hibernate‚̓oƒbƒ`ƒtƒFƒbƒ`‚ðŒø—¦“I‚ÉŽg—p‚Å‚«‚Ü‚·Bˆê‚‚̃vƒƒLƒVi‚à‚µ‚­‚̓RƒŒƒNƒVƒ‡ƒ“j‚ªƒAƒNƒZƒX
-                ‚³‚ê‚é‚ƁAHibernate‚Í‚¢‚­‚‚©‚̏‰Šú‰»‚µ‚Ä‚¢‚È‚¢ƒvƒƒLƒV‚ðƒ[ƒh‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·Bƒoƒbƒ`ƒtƒFƒbƒ`‚Í
-                ’x‰„ƒZƒŒƒNƒgƒtƒFƒbƒ`í—ª‚ɑ΂·‚éÅ“K‰»‚Å‚·Bƒoƒbƒ`ƒtƒFƒbƒ`‚Ì’²®‚É‚Í‚Q‚‚̕û–@‚ª‚ ‚è‚Ü‚·B
-                ƒNƒ‰ƒXƒŒƒxƒ‹‚ƃRƒŒƒNƒVƒ‡ƒ“ƒŒƒxƒ‹‚Å‚·B
+                Hibernateはバッチフェッチを効率的に使用できます。一つのプロキシ(もしくはコレクション)がアクセス
+                されると、Hibernateはいくつかの初期化していないプロキシをロードすることができます。バッチフェッチは
+                遅延セレクトフェッチ戦略に対する最適化です。バッチフェッチの調整には2つの方法があります。
+                クラスレベルとコレクションレベルです。
             </para>
 
             <para>
-                ƒNƒ‰ƒXA—v‘f‚̃oƒbƒ`ƒtƒFƒbƒ`‚Í—‰ð‚ªŠÈ’P‚Å‚·BŽÀsŽž‚ÌŽŸ‚̏ê–Ê‚ð‘z‘œ‚µ‚Ä‚­‚¾‚³‚¢B
-                <literal>Session</literal> ‚Ƀ[ƒh‚³‚ꂽ25ŒÂ‚Ì <literal>Cat</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚ª‘¶Ý‚µA
-                ‚»‚ꂼ‚ê‚Ì <literal>Cat</literal> ‚Í <literal>owner</literal> ‚Å‚ ‚é <literal>Person</literal> ‚Ö‚ÌŠÖ˜A‚ðŽ‚¿‚Ü‚·B
-                <literal>Person</literal> ƒNƒ‰ƒX‚Í <literal>lazy="true"</literal> ‚̃vƒƒLƒV‚Ń}ƒbƒsƒ“ƒO‚³‚ê‚Ä‚¢‚Ü‚·B
-                ‚à‚µ¡‚·‚ׂĂÌCat‚ɑ΂µ‚ÄŒJ‚è•Ô‚µ <literal>getOwner()</literal> ‚ðŒÄ‚яo‚·‚ƁAHibernate‚Í
-                ƒfƒtƒHƒ‹ƒg‚Å‚Í25‰ñ‚Ì <literal>SELECT</literal> ‚ðŽÀs‚µAownerƒvƒƒLƒV‚Ì•œŒ³‚ð‚µ‚Ü‚·B
-                ‚±‚̐U‚é•‘‚¢‚ð <literal>Person</literal> ‚̃}ƒbƒsƒ“ƒO‚Ì <literal>batch-size</literal> 
-                ‚ÌŽw’è‚Å’²®‚Å‚«‚Ü‚·B
+                クラス、要素のバッチフェッチは理解が簡単です。実行時の次の場面を想像してください。
+                <literal>Session</literal> にロードされた25個の <literal>Cat</literal> インスタンスが存在し、
+                それぞれの <literal>Cat</literal> は <literal>owner</literal> である <literal>Person</literal> への関連を持ちます。
+                <literal>Person</literal> クラスは <literal>lazy="true"</literal> のプロキシでマッピングされています。
+                もし今すべてのCatに対して繰り返し <literal>getOwner()</literal> を呼び出すと、Hibernateは
+                デフォルトでは25回の <literal>SELECT</literal> を実行し、ownerプロキシの復元をします。
+                この振る舞いを <literal>Person</literal> のマッピングの <literal>batch-size</literal> 
+                の指定で調整できます。
             </para>
 
             <programlisting><![CDATA[<class name="Person" batch-size="10">...</class>]]></programlisting>
 
             <para>
-                Hibernate‚̓NƒGƒŠ‚ð‚R‰ñ‚¾‚¯‚ðŽÀs‚·‚é‚悤‚É‚È‚è‚Ü‚·Bƒpƒ^[ƒ“‚Í10, 10, 5‚Å‚·B
+                Hibernateはクエリを3回だけを実行するようになります。パターンは10, 10, 5です。
             </para>
 
             <para>
-                ƒRƒŒƒNƒVƒ‡ƒ“‚̃oƒbƒ`ƒtƒFƒbƒ`‚à—LŒø‚É‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B—á‚Æ‚µ‚āA‚»‚ꂼ‚ê‚Ì
-                <literal>Person</literal> ‚ª <literal>Cat</literal> ‚Ì’x‰„ƒRƒŒƒNƒVƒ‡ƒ“‚ðŽ‚Á‚Ä‚¨‚èA
-                10ŒÂ‚ÌPerson‚ª <literal>Sesssion</literal> ‚Ƀ[ƒh‚³‚ꂽ‚Æ‚·‚é‚ƁA‚·‚ׂĂÌPerson‚É
-                ‘΂µ‚ÄŒJ‚è•Ô‚µ <literal>getCats()</literal> ‚ðŒÄ‚яo‚·‚±‚ƂŁAŒv10‰ñ‚Ì <literal>SELECT</literal> 
-                ‚ª”­¶‚µ‚Ü‚·B‚à‚µ <literal>Person</literal> ‚̃}ƒbƒsƒ“ƒO‚Å <literal>cats</literal> 
-                ƒRƒŒƒNƒVƒ‡ƒ“‚̃oƒbƒ`ƒtƒFƒbƒ`‚ð—LŒø‚É‚·‚ê‚΁AHibernate‚̓RƒŒƒNƒVƒ‡ƒ“‚ÌŽ–‘OƒtƒFƒbƒ`‚ªo—ˆ‚Ü‚·B
+                コレクションのバッチフェッチも有効にすることが出来ます。例として、それぞれの
+                <literal>Person</literal> が <literal>Cat</literal> の遅延コレクションを持っており、
+                10個のPersonが <literal>Sesssion</literal> にロードされたとすると、すべてのPersonに
+                対して繰り返し <literal>getCats()</literal> を呼び出すことで、計10回の <literal>SELECT</literal> 
+                が発生します。もし <literal>Person</literal> のマッピングで <literal>cats</literal> 
+                コレクションのバッチフェッチを有効にすれば、Hibernateはコレクションの事前フェッチが出来ます。
             </para>
 
             <programlisting><![CDATA[<class name="Person">
@@ -530,47 +532,47 @@
 </class>]]></programlisting>
 
             <para>
-                <literal>batch-size</literal> ‚ª3‚Ȃ̂ŁAHibernate‚Í4‰ñ‚Ì <literal>SELECT</literal> 
-                ‚Å3ŒÂA3ŒÂA3ŒÂA1ŒÂ‚ðƒ[ƒh‚µ‚Ü‚·BŒJ‚è•Ô‚·‚ƁA‘®«‚Ì’l‚Í“Á’è‚Ì <literal>Session</literal> 
-                ‚Ì’†‚̏‰Šú‰»‚³‚ê‚Ä‚¢‚È‚¢ƒRƒŒƒNƒVƒ‡ƒ“‚ÌŠú‘Ґ”‚Ɉˑ¶‚µ‚Ü‚·B
+                <literal>batch-size</literal> が3なので、Hibernateは4回の <literal>SELECT</literal> 
+                で3個、3個、3個、1個をロードします。繰り返すと、属性の値は特定の <literal>Session</literal> 
+                の中の初期化されていないコレクションの期待数に依存します。
             </para>
 
             <para>
-                ƒRƒŒƒNƒVƒ‡ƒ“‚̃oƒbƒ`ƒtƒFƒbƒ`‚̓AƒCƒeƒ€‚̃lƒXƒg‚µ‚½ƒcƒŠ[A ‚·‚È‚í‚¿A‘ã•\“I‚È•”•i•\‚̃pƒ^[ƒ“‚ª
-                ‚ ‚éê‡‚É“Á‚É—L—p‚Å‚·Bi‚µ‚©‚µA“ǂݍž‚Ý‚ª‘½‚¢ƒcƒŠ[‚Å‚Í <emphasis>ƒlƒXƒg‚µ‚½set</emphasis> 
-                ‚â <emphasis>‹ï‘̉»‚µ‚½ƒpƒX</emphasis> ‚ª‚æ‚è‚æ‚¢‘I‘ð‚É‚È‚è‚Ü‚·Bj
+                コレクションのバッチフェッチはアイテムのネストしたツリー、 すなわち、代表的な部品表のパターンが
+                ある場合に特に有用です。(しかし、読み込みが多いツリーでは <emphasis>ネストしたset</emphasis> 
+                や <emphasis>具体化したパス</emphasis> がよりよい選択になります。)
             </para>
 
         </sect2>
 
         <sect2 id="performance-fetching-subselect">
-            <title>ƒTƒuƒZƒŒƒNƒgƒtƒFƒbƒ`‚ÌŽg—p</title>
+            <title>サブセレクトフェッチの使用</title>
 
             <para>
-                ˆê‚‚̒x‰„ƒRƒŒƒNƒVƒ‡ƒ“‚â’Pˆê’lƒvƒƒLƒV‚ªƒtƒFƒbƒ`‚³‚ê‚È‚¯‚ê‚΂¢‚¯‚È‚¢‚Æ‚«AHibernate‚Í
-                ‚»‚ê‚ç‚·‚×‚Ä‚ðƒ[ƒh‚µAƒTƒuƒZƒŒƒNƒg‚̃IƒŠƒWƒiƒ‹ƒNƒGƒŠ‚ªÄ“xŽÀs‚³‚ê‚Ü‚·B‚±‚ê‚Í
-                ƒoƒbƒ`ƒtƒFƒbƒ`‚Æ“¯‚¶•û–@‚Å“®‚«A­‚µ‚¸‚‚̃[ƒh‚͍s‚¢‚Ü‚¹‚ñB
+                一つの遅延コレクションや単一値プロキシがフェッチされなければいけないとき、Hibernateは
+                それらすべてをロードし、サブセレクトのオリジナルクエリが再度実行されます。これは
+                バッチフェッチと同じ方法で動き、少しずつのロードは行いません。
             </para>
             
             <!-- TODO: Write more about this -->
-            <!-- ‘‚­‘‚¯‚æ -->
+            <!-- 早く書けよ -->
         </sect2>
         
         <sect2 id="performance-fetching-lazyproperties">
-            <title>’x‰„ƒvƒƒpƒeƒBƒtƒFƒbƒ`‚ÌŽg—p</title>
+            <title>遅延プロパティフェッチの使用</title>
 
             <para>
-                Hibernate3‚̓vƒƒpƒeƒB‚²‚Æ‚Ì’x‰„ƒtƒFƒbƒ`‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B‚±‚̍œK‰»Žè–@‚Í
-                <emphasis>ƒOƒ‹[ƒv‚̃tƒFƒbƒ`</emphasis> ‚Æ‚µ‚Ä‚à’m‚ç‚ê‚Ä‚¢‚Ü‚·B‚±‚ê‚Í‚Ù‚Æ‚ñ‚Ç
-                —v–]‚©‚ço‚½‹@”\‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢BŽÀÛ‚É‚Í—ñ“ǂݍž‚݂̍œK‰»‚æ‚è‚àA
-                s“ǂݍž‚݂̍œK‰»‚ª”ñí‚ɏd—v‚Å‚·B
-                ‚µ‚©‚µAƒNƒ‰ƒX‚Ì‚¢‚­‚‚©‚̃vƒƒpƒeƒB‚¾‚¯‚ð“ǂݍž‚Þ‚±‚Ƃ́AŠù‘¶‚̃e[ƒuƒ‹‚ª‰½•S‚à‚Ì—ñ‚ðŽ‚¿A
-                ƒf[ƒ^ƒ‚ƒfƒ‹‚ð‰ü‘P‚Å‚«‚È‚¢‚È‚Ç‚Ì‹É’[‚ȏꍇ‚É‚Í—L—p‚Å‚·B
+                Hibernate3はプロパティごとの遅延フェッチをサポートしています。この最適化手法は
+                <emphasis>グループのフェッチ</emphasis> としても知られています。これはほとんど
+                要望から出た機能であることに注意してください。実際には列読み込みの最適化よりも、
+                行読み込みの最適化が非常に重要です。
+                しかし、クラスのいくつかのプロパティだけを読み込むことは、既存のテーブルが何百もの列を持ち、
+                データモデルを改善できないなどの極端な場合には有用です。
             </para>
 
             <para>
-                ’x‰„ƒvƒƒpƒeƒB“ǂݍž‚Ý‚ð—LŒø‚É‚·‚é‚ɂ́A‘Ώۂ̃vƒƒpƒeƒB‚̃}ƒbƒsƒ“ƒO‚Å <literal>lazy</literal> 
-                ‘®«‚ðƒZƒbƒg‚µ‚Ä‚­‚¾‚³‚¢B
+                遅延プロパティ読み込みを有効にするには、対象のプロパティのマッピングで <literal>lazy</literal> 
+                属性をセットしてください。
             </para>
 
             <programlisting><![CDATA[<class name="Document">
@@ -583,13 +585,13 @@
 </class>]]></programlisting>
 
             <para>
-                ’x‰„ƒvƒƒpƒeƒB“ǂݍž‚݂̓rƒ‹ƒhŽž‚̃oƒCƒgƒR[ƒh‘g‚ݍž‚Ý‚ð•K—v‚Æ‚µ‚Ü‚·I‚à‚µ
-                ‰i‘±ƒNƒ‰ƒX‚É‘g‚ݍž‚Ý‚ª‚³‚ê‚Ä‚¢‚È‚¢‚È‚çAHibernate‚Í–Ù‚Á‚Ä’x‰„ƒvƒƒpƒeƒB‚̐ݒè‚𖳎‹‚µ‚āA
-                ‘¦ŽžƒtƒFƒbƒ`‚É–ß‚µ‚Ü‚·B
+                遅延プロパティ読み込みはビルド時のバイトコード組み込みを必要とします!もし
+                永続クラスに組み込みがされていないなら、Hibernateは黙って遅延プロパティの設定を無視して、
+                即時フェッチに戻します。
             </para>
 
             <para>
-                ƒoƒCƒgƒR[ƒh‘g‚ݍž‚݂͈ȉº‚ÌAntƒ^ƒXƒN‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B
+                バイトコード組み込みは以下のAntタスクを使ってください。
             </para>
 
             <programlisting><![CDATA[<target name="instrument" depends="compile">
@@ -607,15 +609,15 @@
 </target>]]></programlisting>
 
             <para>
-                •s—v‚È—ñ‚ð“ǂݍž‚Ü‚È‚¢‚½‚߂́A•Ê‚́i‚æ‚è‚æ‚¢Hj•û–@‚́A­‚È‚­‚Æ‚à
-                “ǂݍž‚݂݂̂̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚É‚¨‚¢‚ẮAHQL‚âCriteriaƒNƒGƒŠ‚̎ˉe
-                ‹@”\‚ðŽg‚¤‚±‚Æ‚Å‚·B‚±‚Ì•û–@‚̓rƒ‹ƒhŽž‚̃oƒCƒgƒR[ƒh‘g‚ݍž‚Ý‚ª•s—v‚É‚È‚èA
-                ‚æ‚è—Ç‚¢‰ðŒˆ•û–@‚Å‚·B
+                不要な列を読み込まないための、別の(よりよい?)方法は、少なくとも
+                読み込みのみのトランザクションにおいては、HQLやCriteriaクエリの射影
+                機能を使うことです。この方法はビルド時のバイトコード組み込みが不要になり、
+                より良い解決方法です。
             </para>
             
             <para>
-                HQL‚Å <literal>fetch all properties</literal> ‚ðŽg‚¤‚±‚ƂŁA•’Ê‚Ç‚¨‚è‚Ì
-                ƒvƒƒpƒeƒB‚Ì‘¦ŽžƒtƒFƒbƒ`ƒ“ƒO‚ð‹­§‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B
+                HQLで <literal>fetch all properties</literal> を使うことで、普通どおりの
+                プロパティの即時フェッチングを強制することが出来ます。
             </para>
 
         </sect2>
@@ -623,28 +625,28 @@
     </sect1>
 
     <sect1 id="performance-cache" revision="1">
-        <title>‘æ2ƒŒƒxƒ‹ƒLƒƒƒbƒVƒ…</title>
+        <title>第2レベルキャッシュ</title>
 
         <para>
-            Hibernate‚Ì <literal>Session</literal> ‚͉i‘±ƒf[ƒ^‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒŒƒxƒ‹‚̃LƒƒƒbƒVƒ…‚Å‚·B
-            class-by-class‚Æcollection-by-collection‚²‚Ƃ́AƒNƒ‰ƒXƒ^ƒŒƒxƒ‹‚âJVMƒŒƒxƒ‹
-            i <literal>SessionFactory</literal> ƒŒƒxƒ‹j‚̃LƒƒƒbƒVƒ…‚ðÝ’è‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B
-            ƒNƒ‰ƒXƒ^‰»‚³‚ꂽƒLƒƒƒbƒVƒ…‚ɂ‚Ȃ®‚±‚Æ‚³‚¦o—ˆ‚Ü‚·B‚µ‚©‚µ’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-            ƒLƒƒƒbƒVƒ…‚Í‘¼‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚æ‚é‰i‘±‘w‚̕ύX‚ð
-            l—¶‚µ‚Ü‚¹‚ñiƒLƒƒƒbƒVƒ…ƒf[ƒ^‚ð’èŠú“I‚ÉŠúŒÀØ‚ê‚É‚·‚éÝ’è‚͏o—ˆ‚Ü‚·jB
+            Hibernateの <literal>Session</literal> は永続データのトランザクションレベルのキャッシュです。
+            class-by-classとcollection-by-collectionごとの、クラスタレベルやJVMレベル
+            ( <literal>SessionFactory</literal> レベル)のキャッシュを設定することが出来ます。
+            クラスタ化されたキャッシュにつなぐことさえ出来ます。しかし注意してください。
+            キャッシュは他のアプリケーションによる永続層の変更を
+            考慮しません(キャッシュデータを定期的に期限切れにする設定は出来ます)。
         </para>
         
         <para revision="1">
-            Hibernate‚ªŽg—p‚·‚éƒLƒƒƒbƒVƒ…ŽÀ‘•‚́A<literal>hibernate.cache.provider_class</literal> ƒvƒƒpƒeƒB‚É
-            <literal>org.hibernate.cache.CacheProvider</literal> ‚ðŽÀ‘•‚µ‚½ƒNƒ‰ƒX–¼‚ðŽw’è‚·‚邱‚ƂŕύX‚Å‚«‚Ü‚·B
-            Hibernate‚Í‘½‚­‚̃I[ƒvƒ“ƒ\[ƒX‚̃LƒƒƒbƒVƒ…ƒvƒƒoƒCƒ_‚ðƒrƒ‹ƒgƒCƒ“ŽÀ‘•‚ÅŽ‚Á‚Ä‚¢‚Ü‚·iŒã‚ɃŠƒXƒg‚ª‚ ‚è‚Ü‚·jB
-            ‰Á‚¦‚āA‘O‚Éà–¾‚µ‚½‚悤‚ɁA‚ ‚È‚½Ž©g‚ª“ÆŽ©‚ÌŽÀ‘•‚ð‚µ‚ÄA‚»‚ê‚ð‘g‚ݍž‚Þ‚±‚Æ‚ào—ˆ‚Ü‚·B
-            ƒo[ƒWƒ‡ƒ“3.2‚æ‚è‘O‚Å‚ÍEhCache‚ªƒfƒtƒHƒ‹ƒg‚̃LƒƒƒbƒVƒ…ƒvƒƒoƒCƒ_‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-            ƒo[ƒWƒ‡ƒ“3.2‚Å‚Í‚±‚ê‚Í“–‚Ä‚Í‚Ü‚è‚Ü‚¹‚ñB
+            Hibernateが使用するキャッシュ実装は、<literal>hibernate.cache.provider_class</literal> プロパティに
+            <literal>org.hibernate.cache.CacheProvider</literal> を実装したクラス名を指定することで変更できます。
+            Hibernateは多くのオープンソースのキャッシュプロバイダをビルトイン実装で持っています(後にリストがあります)。
+            加えて、前に説明したように、あなた自身が独自の実装をして、それを組み込むことも出来ます。
+            バージョン3.2より前ではEhCacheがデフォルトのキャッシュプロバイダであることに注意してください。
+            バージョン3.2ではこれは当てはまりません。
         </para>
 
         <table frame="topbot" id="cacheproviders" revision="1">
-            <title>ƒLƒƒƒbƒVƒ…ƒvƒƒoƒCƒ_</title>
+            <title>キャッシュプロバイダ</title>
             <tgroup cols='5' align='left' colsep='1' rowsep='1'>
             <colspec colname='c1' colwidth="1*"/>
             <colspec colname='c2' colwidth="3*"/>
@@ -653,58 +655,58 @@
             <colspec colname='c5' colwidth="1*"/>
             <thead>
             <row>
-              <entry>ƒLƒƒƒbƒVƒ…</entry>
-              <entry>ƒvƒƒoƒCƒ_ƒNƒ‰ƒX</entry>
-              <entry>ƒ^ƒCƒv</entry>
-              <entry>ƒNƒ‰ƒXƒ^ƒZ[ƒt</entry>
-              <entry>ƒNƒGƒŠƒLƒƒƒbƒVƒ…‚̃Tƒ|[ƒg</entry>
+              <entry>キャッシュ</entry>
+              <entry>プロバイダクラス</entry>
+              <entry>タイプ</entry>
+              <entry>クラスタセーフ</entry>
+              <entry>クエリキャッシュのサポート</entry>
             </row>
             </thead>
             <tbody>
             <row>
-                <entry>Hashtablei»•i—p‚Æ‚µ‚ĈӐ}‚µ‚Ä‚¢‚Ü‚¹‚ñj</entry>
+                <entry>Hashtable(製品用として意図していません)</entry>
                 <entry><literal>org.hibernate.cache.HashtableCacheProvider</literal></entry>
-                <entry>ƒƒ‚ƒŠ</entry>
+                <entry>メモリ</entry>
                 <entry></entry>
                 <entry>yes</entry>
             </row>
             <row>
                 <entry>EHCache</entry>
                 <entry><literal>org.hibernate.cache.EhCacheProvider</literal></entry>
-                <entry>ƒƒ‚ƒŠAƒfƒBƒXƒN</entry>
+                <entry>メモリ、ディスク</entry>
                 <entry></entry>
                 <entry>yes</entry>
             </row>
             <row>
                 <entry>OSCache</entry>
                 <entry><literal>org.hibernate.cache.OSCacheProvider</literal></entry>
-                <entry>ƒƒ‚ƒŠAƒfƒBƒXƒN</entry>
-                <entry>yesiƒNƒ‰ƒXƒ^–³Œø‰»j</entry>
+                <entry>メモリ、ディスク</entry>
+                <entry>yes(クラスタ無効化)</entry>
                 <entry>yes</entry>
             </row>
             <row>
                 <entry>SwarmCache</entry>
                 <entry><literal>org.hibernate.cache.SwarmCacheProvider</literal></entry>
-                <entry>ƒNƒ‰ƒXƒ^iipƒ}ƒ‹ƒ`ƒLƒƒƒXƒgj</entry>
-                <entry>yesiƒNƒ‰ƒXƒ^–³Œø‰»j</entry>
+                <entry>クラスタ(ipマルチキャスト)</entry>
+                <entry>yes(クラスタ無効化)</entry>
                 <entry></entry>
             </row>
             <row>
                 <entry>JBoss TreeCache</entry>
                 <entry><literal>org.hibernate.cache.TreeCacheProvider</literal></entry>
-                <entry>ƒNƒ‰ƒXƒ^iipƒ}ƒ‹ƒ`ƒLƒƒƒXƒgjAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒiƒ‹</entry>
-                <entry>yesi•¡»j</entry>
-                <entry>yesiŽž“¯Šú‚ª•K—vj</entry>
+                <entry>クラスタ(ipマルチキャスト)、トランザクショナル</entry>
+                <entry>yes(複製)</entry>
+                <entry>yes(時刻同期が必要)</entry>
             </row>
             </tbody>
             </tgroup>
         </table>
 
         <sect2 id="performance-cache-mapping" revision="2">
-            <title>ƒLƒƒƒbƒVƒ…‚̃}ƒbƒsƒ“ƒO</title>
+            <title>キャッシュのマッピング</title>
 
             <para>
-                ƒNƒ‰ƒX‚âƒRƒŒƒNƒVƒ‡ƒ“‚̃}ƒbƒsƒ“ƒO‚Ì <literal>&lt;cache&gt;</literal> —v‘f‚͈ȉº‚ÌŒ`Ž®‚Å‚·B
+                クラスやコレクションのマッピングの <literal>&lt;cache&gt;</literal> 要素は以下の形式です。
             </para>
 
             <programlistingco>
@@ -747,23 +749,23 @@
             </programlistingco>
             
             <para>
-                ‚Ü‚½‚́i‚æ‚è‚æ‚¢•û–@‚Æ‚µ‚āHjA <literal>hibernate.cfg.xml</literal> ‚É <literal>&lt;class-cache&gt;</literal> 
-                ‚Æ <literal>&lt;collection-cache&gt;</literal> —v‘f‚ðŽw’è‚·‚邱‚Æ‚ào—ˆ‚Ü‚·B
+                または(よりよい方法として?)、 <literal>hibernate.cfg.xml</literal> に <literal>&lt;class-cache&gt;</literal> 
+                と <literal>&lt;collection-cache&gt;</literal> 要素を指定することも出来ます。
             </para>
             
             <para>
-                <literal>usage</literal> ‘®«‚Í <emphasis>ƒLƒƒƒbƒVƒ…‚Ì•À—ñ«í—ª</emphasis> ‚ðŽw’肵‚Ü‚·B
+                <literal>usage</literal> 属性は <emphasis>キャッシュの並列性戦略</emphasis> を指定します。
             </para>
 
         </sect2>
 
         <sect2 id="performance-cache-readonly">
-            <title>read onlyí—ª</title>
+            <title>read only戦略</title>
 
             <para>
-                ‚à‚µƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª“ǂݍž‚Ý‚Ì‚Ý•K—v‚ŁA‰i‘±ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð•ÏX‚µ‚È‚¢‚È‚çA
-                <literal>read-only</literal> ƒLƒƒƒbƒVƒ…‚ðŽg‚¤‚±‚Æ‚ªo—ˆ‚Ü‚·B‚±‚ê‚Í‚à‚Á‚Æ‚à’Pƒ‚Å
-                ‚à‚Á‚Æ‚àƒpƒtƒH[ƒ}ƒ“ƒX‚Ì—Ç‚¢í—ª‚Å‚·BƒNƒ‰ƒXƒ^‚Å‚ÌŽg—p‚àŠ®‘S‚ɈÀ‘S‚Å‚·B
+                もしアプリケーションが読み込みのみ必要で、永続クラスのインスタンスを変更しないなら、
+                <literal>read-only</literal> キャッシュを使うことが出来ます。これはもっとも単純で
+                もっともパフォーマンスの良い戦略です。クラスタでの使用も完全に安全です。
             </para>
 
             <programlisting><![CDATA[<class name="eg.Immutable" mutable="false">
@@ -775,19 +777,19 @@
 
 
         <sect2 id="performance-cache-readwrite">
-            <title>read/writeí—ª</title>
+            <title>read/write戦略</title>
 
             <para>
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒf[ƒ^‚ðXV‚·‚é•K—v‚ª‚ ‚é‚È‚çA <literal>read-write</literal> ƒLƒƒƒbƒVƒ…‚ª“K“–‚©‚à
-                ‚µ‚ê‚Ü‚¹‚ñB‚±‚̃LƒƒƒbƒVƒ…í—ª‚́AƒVƒŠƒAƒ‰ƒCƒUƒuƒ‹‚ȃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“•ª—£ƒŒƒxƒ‹‚ª—v‹‚³‚ê‚é‚È‚çA
-                Œˆ‚µ‚ÄŽg‚¤‚ׂ«‚Å‚Í‚ ‚è‚Ü‚¹‚ñB‚à‚µƒLƒƒƒbƒVƒ…‚ªJTAŠÂ‹«‚ÅŽg‚í‚ê‚é‚È‚çAJTA <literal>TransactionManager</literal> 
-                ‚ðŽæ“¾‚·‚邽‚ß‚Ì•û–@‚ðŽ¦‚· <literal>hibernate.transaction.manager_lookup_class</literal> 
-                ƒvƒƒpƒeƒB‚ðŽw’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‘¼‚̊‹«‚ł́A <literal>Session.close()</literal> 
-                ‚â <literal>Session.disconnect()</literal> ‚ªŒÄ‚΂ꂽ‚Æ‚«‚ɁAŠmŽÀ‚Ƀgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŠ®—¹
-                ‚µ‚Ä‚¢‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                ‚à‚µƒNƒ‰ƒXƒ^‚Å‚±‚̐헪‚ðŽg‚¢‚½‚¢‚È‚çAŠî‚Æ‚È‚éƒLƒƒƒbƒVƒ…‚ÌŽÀ‘•‚ªƒƒbƒN‚ðƒTƒ|[ƒg
-                ‚µ‚Ä‚¢‚邱‚Æ‚ð•ÛØ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                ‘g‚ݍž‚݂̃LƒƒƒbƒVƒ…ƒvƒƒoƒCƒ_‚Í <emphasis>ƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚¹‚ñ</emphasis> B
+                アプリケーションがデータを更新する必要があるなら、 <literal>read-write</literal> キャッシュが適当かも
+                しれません。このキャッシュ戦略は、シリアライザブルなトランザクション分離レベルが要求されるなら、
+                決して使うべきではありません。もしキャッシュがJTA環境で使われるなら、JTA <literal>TransactionManager</literal> 
+                を取得するための方法を示す <literal>hibernate.transaction.manager_lookup_class</literal> 
+                プロパティを指定しなければなりません。他の環境では、 <literal>Session.close()</literal> 
+                や <literal>Session.disconnect()</literal> が呼ばれたときに、確実にトランザクションが完了
+                していなければなりません。
+                もしクラスタでこの戦略を使いたいなら、基となるキャッシュの実装がロックをサポート
+                していることを保証しなければなりません。
+                組み込みのキャッシュプロバイダは <emphasis>サポートしていません</emphasis> 。
             </para>
 
             <programlisting><![CDATA[<class name="eg.Cat" .... >
@@ -802,39 +804,39 @@
         </sect2>
 
         <sect2 id="performance-cache-nonstrict">
-            <title>Œµ–§‚Å‚Í‚È‚¢read/writeí—ª</title>
+            <title>厳密ではないread/write戦略</title>
 
             <para>
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª‚½‚Ü‚É‚µ‚©ƒf[ƒ^‚ðXV‚·‚é•K—v‚Í‚È‚­i‚·‚È‚í‚¿“ñ‚‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ª
-                “¯Žž‚É“¯‚¶ƒAƒCƒeƒ€‚ðXV‚µ‚悤‚Æ‚·‚邱‚Æ‚Í‚Ù‚Æ‚ñ‚Ç‹N‚±‚ç‚È‚¢jAŒµ–§‚ȃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“•ª—£‚ª
-                —v‹‚³‚ê‚È‚¢‚È‚çA <literal>nonstrict-read-write</literal> ƒLƒƒƒbƒVƒ…‚ª“K“–‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-                ‚à‚µƒLƒƒƒbƒVƒ…‚ªJTAŠÂ‹«‚ÅŽg‚í‚ê‚é‚È‚çA <literal>hibernate.transaction.manager_lookup_class</literal> 
-                ‚ðŽw’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‘¼‚̊‹«‚ł́A <literal>Session.close()</literal> 
-                ‚â <literal>Session.disconnect()</literal> ‚ªŒÄ‚΂ꂽ‚Æ‚«‚ɁAŠmŽÀ‚Ƀgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŠ®—¹
-                ‚µ‚Ä‚¢‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+                アプリケーションがたまにしかデータを更新する必要はなく(すなわち二つのトランザクションが
+                同時に同じアイテムを更新しようとすることはほとんど起こらない)、厳密なトランザクション分離が
+                要求されないなら、 <literal>nonstrict-read-write</literal> キャッシュが適当かもしれません。
+                もしキャッシュがJTA環境で使われるなら、 <literal>hibernate.transaction.manager_lookup_class</literal> 
+                を指定しなければなりません。他の環境では、 <literal>Session.close()</literal> 
+                や <literal>Session.disconnect()</literal> が呼ばれたときに、確実にトランザクションが完了
+                していなければなりません。
             </para>
 
         </sect2>
 
         <sect2 id="performance-cache-transactional">
-            <title>transactionalí—ª</title>
+            <title>transactional戦略</title>
 
             <para>
-                <literal>transactional</literal> ƒLƒƒƒbƒVƒ…í—ª‚ÍJBoss TreeCache‚̂悤‚ÈŠ®‘S‚ȃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒiƒ‹
-                ƒLƒƒƒbƒVƒ…ƒvƒƒoƒCƒ_‚̃Tƒ|[ƒg‚ð’ñ‹Ÿ‚µ‚Ü‚·B
-                ‚±‚̂悤‚ȃLƒƒƒbƒVƒ…‚ÍJTAŠÂ‹«‚Å‚Ì‚ÝŽg—p‰Â”\‚ŁA <literal>hibernate.transaction.manager_lookup_class</literal> 
-                ‚ðŽw’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+                <literal>transactional</literal> キャッシュ戦略はJBoss TreeCacheのような完全なトランザクショナル
+                キャッシュプロバイダのサポートを提供します。
+                このようなキャッシュはJTA環境でのみ使用可能で、 <literal>hibernate.transaction.manager_lookup_class</literal> 
+                を指定しなければなりません。
             </para>
 
         </sect2>
         
         <para>
-            ‚·‚ׂĂ̓¯Žž•Às«ƒLƒƒƒbƒVƒ…í—ª‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚éƒLƒƒƒbƒVƒ…ƒvƒƒoƒCƒ_‚Í‚ ‚è‚Ü‚¹‚ñB
-            ˆÈ‰º‚Ì•\‚͂ǂ̃vƒƒoƒCƒ_‚ª‚Ç‚Ì“¯Žž•À—ñ«í—ª‚ɑΉž‚·‚é‚©‚ð•\‚µ‚Ä‚¢‚Ü‚·B
+            すべての同時並行性キャッシュ戦略をサポートしているキャッシュプロバイダはありません。
+            以下の表はどのプロバイダがどの同時並列性戦略に対応するかを表しています。
         </para>
 
         <table frame="topbot">
-            <title>“¯Žž•Às«ƒLƒƒƒbƒVƒ…í—ª‚̃Tƒ|[ƒg</title>
+            <title>同時並行性キャッシュ戦略のサポート</title>
             <tgroup cols='5' align='left' colsep='1' rowsep='1'>
             <colspec colname='c1' colwidth="1*"/>
             <colspec colname='c2' colwidth="1*"/>
@@ -843,16 +845,16 @@
             <colspec colname='c5' colwidth="1*"/>
             <thead>
             <row>
-              <entry>ƒLƒƒƒbƒVƒ…</entry>
+              <entry>キャッシュ</entry>
               <entry>read-only</entry>
-              <entry>Œµ–§‚Å‚Í‚È‚¢read-write</entry>
+              <entry>厳密ではないread-write</entry>
               <entry>read-write</entry>
               <entry>transactional</entry>
             </row>
             </thead>
             <tbody>
             <row>
-                <entry>Hashtablei»•i—p‚Æ‚µ‚ĈӐ}‚µ‚Ä‚¢‚Ü‚¹‚ñj</entry>
+                <entry>Hashtable(製品用として意図していません)</entry>
                 <entry>yes</entry>
                 <entry>yes</entry>
                 <entry>yes</entry>
@@ -893,19 +895,19 @@
     </sect1>
 
     <sect1 id="performance-sessioncache" revision="2">
-        <title>ƒLƒƒƒbƒVƒ…‚ÌŠÇ—</title>
+        <title>キャッシュの管理</title>
 
         <para>
-            ƒIƒuƒWƒFƒNƒg‚ð <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‚Á‚ăIƒuƒWƒFƒNƒg‚𕜌³‚·‚é‚Æ‚«‚ɂ͏í‚ɁA
-            ‚»‚̃IƒuƒWƒFƒNƒg‚Í <literal>Session</literal> ‚Ì“à•”ƒLƒƒƒbƒVƒ…‚ɒljÁ‚³‚ê‚Ü‚·B
+            オブジェクトを <literal>save()</literal> 、 <literal>update()</literal> 、 <literal>saveOrUpdate()</literal> 
+            に渡すとき、そして <literal>load()</literal> 、 <literal>get()</literal> 、 <literal>list()</literal> 、
+            <literal>iterate()</literal> 、 <literal>scroll()</literal> を使ってオブジェクトを復元するときには常に、
+            そのオブジェクトは <literal>Session</literal> の内部キャッシュに追加されます。
         </para>
         <para>
-            ŽŸ‚É <literal>flush()</literal> ‚ªŒÄ‚΂ê‚é‚ƁAƒIƒuƒWƒFƒNƒg‚̏ó‘Ԃ̓f[ƒ^ƒx[ƒX‚Æ“¯Šú‰»‚³‚ê‚Ü‚·B
-            ‚à‚µ‚±‚Ì“¯Šú‚ª‹N‚±‚邱‚Æ‚ð–]‚Ü‚È‚¢‚Æ‚«‚âA–c‘å‚Ȑ”‚̃IƒuƒWƒFƒNƒg‚ðˆ—‚µ‚Ä‚¢‚ăƒ‚ƒŠ‚ðŒø—¦“I‚É
-            ˆµ‚¤•K—v‚ª‚ ‚é‚Æ‚«‚́A <literal>evict()</literal> ƒƒ\ƒbƒh‚ðŽg‚Á‚ĈꎟƒLƒƒƒbƒVƒ…‚©‚ç
-            ƒIƒuƒWƒFƒNƒg‚âƒRƒŒƒNƒVƒ‡ƒ“‚ðíœ‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B
+            次に <literal>flush()</literal> が呼ばれると、オブジェクトの状態はデータベースと同期化されます。
+            もしこの同期が起こることを望まないときや、膨大な数のオブジェクトを処理していてメモリを効率的に
+            扱う必要があるときは、 <literal>evict()</literal> メソッドを使って一次キャッシュから
+            オブジェクトやコレクションを削除することが出来ます。
         </para>
         
         <programlisting><![CDATA[ScrollableResult cats = sess.createQuery("from Cat as cat").scroll(); //a huge result set
@@ -916,19 +918,19 @@
 }]]></programlisting>
         
         <para>
-            <literal>Session</literal> ‚̓Cƒ“ƒXƒ^ƒ“ƒX‚ªƒZƒbƒVƒ‡ƒ“ƒLƒƒƒbƒVƒ…‚ÉŠÜ‚Ü‚ê‚é‚©‚Ç‚¤‚©‚ð”»’f‚·‚邽‚ß‚Ì
-            <literal>contains()</literal> ƒƒ\ƒbƒh‚à’ñ‹Ÿ‚µ‚Ü‚·B
+            <literal>Session</literal> はインスタンスがセッションキャッシュに含まれるかどうかを判断するための
+            <literal>contains()</literal> メソッドも提供します。
         </para>
         
         <para>
-            ‚·‚ׂẴIƒuƒWƒFƒNƒg‚ðƒZƒbƒVƒ‡ƒ“ƒLƒƒƒbƒVƒ…‚©‚犮‘S‚ÉŽæ‚菜‚­‚ɂ́A<literal>Session.clear()</literal> 
-            ‚ðŒÄ‚яo‚µ‚Ä‚­‚¾‚³‚¢B
+            すべてのオブジェクトをセッションキャッシュから完全に取り除くには、<literal>Session.clear()</literal> 
+            を呼び出してください。
         </para>
         
         <para>
-            “ñŽŸƒLƒƒƒbƒVƒ…‚Ì‚½‚߂ɁA <literal>SessionFactory</literal> ‚É‚Í
-            ƒCƒ“ƒXƒ^ƒ“ƒXAƒNƒ‰ƒX‘S‘́AƒRƒŒƒNƒVƒ‡ƒ“‚̃Cƒ“ƒXƒ^ƒ“ƒXAƒRƒŒƒNƒVƒ‡ƒ“‘S‘Ì‚ðƒLƒƒƒbƒVƒ…‚©‚ç
-            íœ‚·‚邽‚߂̃ƒ\ƒbƒh‚ª‚»‚ꂼ‚ê’è‹`‚³‚ê‚Ä‚¢‚Ü‚·B
+            二次キャッシュのために、 <literal>SessionFactory</literal> には
+            インスタンス、クラス全体、コレクションのインスタンス、コレクション全体をキャッシュから
+            削除するためのメソッドがそれぞれ定義されています。
         </para>
         
         <programlisting><![CDATA[sessionFactory.evict(Cat.class, catId); //evict a particular Cat
@@ -937,40 +939,40 @@
 sessionFactory.evictCollection("Cat.kittens"); //evict all kitten collections]]></programlisting>
 
         <para>
-            <literal>CacheMode</literal> ‚Í“Á’è‚̃ZƒbƒVƒ‡ƒ“‚ª“ñŽŸƒLƒƒƒbƒVƒ…‚Ƃǂ̂悤‚É‘ŠŒÝì—p‚·‚é‚©‚ð
-            Žw’肵‚Ü‚·B
+            <literal>CacheMode</literal> は特定のセッションが二次キャッシュとどのように相互作用するかを
+            指定します。
         </para>
         
         <itemizedlist>
         <listitem>
         <para>
-            <literal>CacheMode.NORMAL</literal> - ƒAƒCƒeƒ€‚̓ǂݍž‚݂Ə‘‚«ž‚Ý‚Å“ñŽŸƒLƒƒƒbƒVƒ…‚ðŽg‚¢‚Ü‚·
+            <literal>CacheMode.NORMAL</literal> - アイテムの読み込みと書き込みで二次キャッシュを使います
         </para>
         </listitem>
         <listitem>
         <para>
-            <literal>CacheMode.GET</literal> - “ǂݍž‚Ý‚Í“ñŽŸƒLƒƒƒbƒVƒ…‚©‚çs‚¢‚Ü‚·‚ªAƒf[ƒ^‚ð
-            XV‚µ‚½ê‡‚ðœ‚¢‚Ä“ñŽŸƒLƒƒƒbƒVƒ…‚ɏ‘‚«ž‚Ý‚ð‚µ‚Ü‚¹‚ñB
+            <literal>CacheMode.GET</literal> - 読み込みは二次キャッシュから行いますが、データを
+            更新した場合を除いて二次キャッシュに書き込みをしません。
         </para>
         </listitem>
         <listitem>
         <para>
-            <literal>CacheMode.PUT</literal> - “ñŽŸƒLƒƒƒbƒVƒ…‚ɃAƒCƒeƒ€‚ð‘‚«ž‚Ý‚Ü‚·‚ªA“ǂݍž‚Ý‚É‚Í
-            “ñŽŸƒLƒƒƒbƒVƒ…‚ðŽg‚¢‚Ü‚¹‚ñB
+            <literal>CacheMode.PUT</literal> - 二次キャッシュにアイテムを書き込みますが、読み込みには
+            二次キャッシュを使いません。
         </para>
         </listitem>
         <listitem>
         <para>
-            <literal>CacheMode.REFRESH</literal> - “ñŽŸƒLƒƒƒbƒVƒ…‚ɃAƒCƒeƒ€‚ð‘‚«ž‚Ý‚Ü‚·‚ªA“ǂݍž‚Ý‚É‚Í
-            “ñŽŸƒLƒƒƒbƒVƒ…‚ðŽg‚킸A <literal>hibernate.cache.use_minimal_puts</literal> 
-            ‚̉e‹¿‚ðŽó‚¯‚¸‚ɁAƒf[ƒ^ƒx[ƒX‚©‚ç“ǂݍž‚Þ‚·‚ׂẴAƒCƒeƒ€‚Ì“ñŽŸƒLƒƒƒbƒVƒ…‚ð‹­§“I‚ɃŠƒtƒŒƒbƒVƒ…‚µ‚Ü‚·B
+            <literal>CacheMode.REFRESH</literal> - 二次キャッシュにアイテムを書き込みますが、読み込みには
+            二次キャッシュを使わず、 <literal>hibernate.cache.use_minimal_puts</literal> 
+            の影響を受けずに、データベースから読み込むすべてのアイテムの二次キャッシュを強制的にリフレッシュします。
         </para>
         </listitem>
         </itemizedlist>
         
         <para>
-            “ñŽŸƒLƒƒƒbƒVƒ…‚Ì“à—e‚âƒNƒGƒŠƒLƒƒƒbƒVƒ…—̈æ‚ðŒ©‚é‚½‚߂ɁA <literal>Statistics</literal> API‚ð
-            Žg‚Á‚Ä‚­‚¾‚³‚¢B
+            二次キャッシュの内容やクエリキャッシュ領域を見るために、 <literal>Statistics</literal> APIを
+            使ってください。
         </para>
         
         <programlisting><![CDATA[Map cacheEntries = sessionFactory.getStatistics()
@@ -978,8 +980,8 @@
         .getEntries();]]></programlisting>
         
         <para>
-            “Œvî•ñ‚ð—LŒø‚É‚µ‚āA‚³‚ç‚ɃIƒvƒVƒ‡ƒ“‚Æ‚µ‚āAƒLƒƒƒbƒVƒ…ƒGƒ“ƒgƒŠ‚ð
-            l‚ª‚æ‚藝‰ð‰Â”\‚ÈŒ`Ž®‚Å•ÛŽ‚·‚邱‚Æ‚ðHibernate‚É‹­§‚µ‚Ü‚·B
+            統計情報を有効にして、さらにオプションとして、キャッシュエントリを
+            人がより理解可能な形式で保持することをHibernateに強制します。
         </para>
         
         <programlisting><![CDATA[hibernate.generate_statistics true
@@ -988,35 +990,35 @@
     </sect1>
     
     <sect1 id="performance-querycache" revision="1">
-        <title>ƒNƒGƒŠƒLƒƒƒbƒVƒ…</title>
+        <title>クエリキャッシュ</title>
 
         <para>
-            ƒNƒGƒŠ‚̃ŠƒUƒ‹ƒgƒZƒbƒg‚àƒLƒƒƒbƒVƒ…o—ˆ‚Ü‚·B‚±‚ê‚Í“¯‚¶ƒpƒ‰ƒ[ƒ^‚ʼn½“x‚àŽÀs‚³‚ê‚é
-            ƒNƒGƒŠ‚ɑ΂µ‚Ä‚Ì‚Ý—L—p‚Å‚·BƒNƒGƒŠƒLƒƒƒbƒVƒ…‚ðŽg‚¤‚ɂ́A‚Ü‚¸Ý’è‚Å—LŒø‚É‚µ‚È‚­‚Ä‚Í‚È‚è‚Ü‚¹‚ñB
+            クエリのリザルトセットもキャッシュ出来ます。これは同じパラメータで何度も実行される
+            クエリに対してのみ有用です。クエリキャッシュを使うには、まず設定で有効にしなくてはなりません。
         </para>
 
         <programlisting><![CDATA[hibernate.cache.use_query_cache true]]></programlisting>       
         
         <para>
-            ‚±‚̐ݒè‚͐V‚½‚É“ñ‚‚̃LƒƒƒbƒVƒ…—̈æ‚̍쐬‚ðs‚¢‚Ü‚·Bˆê‚‚̓NƒGƒŠ‚̃ŠƒUƒ‹ƒgƒZƒbƒg‚Ì
-            ƒLƒƒƒbƒVƒ…i <literal>org.hibernate.cache.StandardQueryCache</literal> j‚ð•ÛŽ‚µA
-            ‚à‚¤1‚‚̓NƒGƒŠ‰Â”\‚ȃe[ƒuƒ‹‚ւ̍ŐV‚̍XVƒ^ƒCƒ€ƒXƒ^ƒ“ƒv
-           i <literal>org.hibernate.cache.UpdateTimestampsCache</literal> j‚ð•ÛŽ‚µ‚Ü‚·B
-            ƒNƒGƒŠƒLƒƒƒbƒVƒ…‚̓ŠƒUƒ‹ƒgƒZƒbƒg‚ÌŽÀÛ‚Ì—v‘f‚̏ó‘Ԃ̓LƒƒƒbƒVƒ…‚µ‚È‚¢‚±‚Æ‚É
-            ’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢BƒLƒƒƒbƒVƒ…‚·‚é‚Ì‚ÍŽ¯•ÊŽq‚Ì’l‚ƁA’lŒ^‚ÌŒ‹‰Ê‚Ì‚Ý‚Å‚·B
-            ‚»‚Ì‚½‚߁AƒNƒGƒŠƒLƒƒƒbƒVƒ…‚͏í‚É“ñŽŸƒLƒƒƒbƒVƒ…‚ƈꏏ‚ÉŽg‚¤‚ׂ«‚Å‚·B
+            この設定は新たに二つのキャッシュ領域の作成を行います。一つはクエリのリザルトセットの
+            キャッシュ( <literal>org.hibernate.cache.StandardQueryCache</literal> )を保持し、
+            もう1つはクエリ可能なテーブルへの最新の更新タイムスタンプ
+           ( <literal>org.hibernate.cache.UpdateTimestampsCache</literal> )を保持します。
+            クエリキャッシュはリザルトセットの実際の要素の状態はキャッシュしないことに
+            注意してください。キャッシュするのは識別子の値と、値型の結果のみです。
+            そのため、クエリキャッシュは常に二次キャッシュと一緒に使うべきです。
         </para>
         
         <para>
-            ‚Ù‚Æ‚ñ‚ǂ̃NƒGƒŠ‚̓LƒƒƒbƒVƒ…‚̉¶Œb‚ðŽó‚¯‚È‚¢‚̂ŁAƒfƒtƒHƒ‹ƒg‚ł̓NƒGƒŠ‚̓LƒƒƒbƒVƒ…‚³‚ê‚Ü‚¹‚ñB
-            ƒLƒƒƒbƒVƒ…‚ð—LŒø‚É‚·‚é‚ɂ́A <literal>Query.setCacheable(true)</literal> ‚ðŒÄ‚яo‚µ‚Ä‚­‚¾‚³‚¢B
-            ‚»‚¤‚·‚ê‚΃NƒGƒŠ‚ªŠù‘¶‚̃LƒƒƒbƒVƒ…Œ‹‰Ê‚ð’T‚µAƒNƒGƒŠŽÀsŽž‚É‚»‚ÌŒ‹‰Ê‚ðƒLƒƒƒbƒVƒ…‚ɒljÁ‚·‚é
-            ‚悤‚É‚È‚è‚Ü‚·B
+            ほとんどのクエリはキャッシュの恩恵を受けないので、デフォルトではクエリはキャッシュされません。
+            キャッシュを有効にするには、 <literal>Query.setCacheable(true)</literal> を呼び出してください。
+            そうすればクエリが既存のキャッシュ結果を探し、クエリ実行時にその結果をキャッシュに追加する
+            ようになります。
         </para>
         
         <para>
-            ƒNƒGƒŠƒLƒƒƒbƒVƒ…‚Ì”jŠüƒ|ƒŠƒV[‚ð×‚©‚­§Œä‚µ‚½‚¢‚Æ‚«‚́A <literal>Query.setCacheRegion()</literal> 
-            ‚ðŒÄ‚яo‚µ‚Ä“Á’è‚̃NƒGƒŠ‚ɑ΂·‚éƒLƒƒƒbƒVƒ…—̈æ‚ðŽw’è‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B
+            クエリキャッシュの破棄ポリシーを細かく制御したいときは、 <literal>Query.setCacheRegion()</literal> 
+            を呼び出して特定のクエリに対するキャッシュ領域を指定することが出来ます。
         </para>
         
         <programlisting><![CDATA[List blogs = sess.createQuery("from Blog blog where blog.blogger = :blogger")
@@ -1027,52 +1029,52 @@
     .list();]]></programlisting>
 
         <para>
-            ƒNƒGƒŠ‚ªŽ©g‚̃NƒGƒŠƒLƒƒƒbƒVƒ…—̈æ‚̃ŠƒtƒŒƒbƒVƒ…‚ð‹­§‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢‚È‚çA
-            <literal>Query.setCacheMode(CacheMode.REFRESH)</literal> ‚ðŒÄ‚яo‚·‚ׂ«‚Å‚·B‚±‚ê‚Í
-            Œ³‚Æ‚È‚éƒf[ƒ^‚ª•Ê‚̃vƒƒZƒX‚É‚æ‚Á‚čXV‚³‚ꂽ‚èi‚·‚È‚í‚¿Hibernate‚ð’Ê‚¶‚čXV‚³‚ê‚È‚¢jA
-            ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É“Á’è‚̃NƒGƒŠƒŠƒUƒ‹ƒgƒZƒbƒg‚ð‘I‘ð‚µ‚ÄƒŠƒtƒŒƒbƒVƒ…‚³‚¹‚éê‡‚É“Á‚É—L—p‚Å‚·B
-            ‚³‚ç‚É—L—p‚È‚à‚¤ˆê‚‚̕û–@‚́A <literal>SessionFactory.evictQueries()</literal> 
-            ‚É‚æ‚Á‚ăNƒGƒŠƒLƒƒƒbƒVƒ…—̈æ‚ðÁ‹Ž‚·‚邱‚Æ‚Å‚·B
+            クエリが自身のクエリキャッシュ領域のリフレッシュを強制しなければならないなら、
+            <literal>Query.setCacheMode(CacheMode.REFRESH)</literal> を呼び出すべきです。これは
+            元となるデータが別のプロセスによって更新されたり(すなわちHibernateを通じて更新されない)、
+            アプリケーションに特定のクエリリザルトセットを選択してリフレッシュさせる場合に特に有用です。
+            さらに有用なもう一つの方法は、 <literal>SessionFactory.evictQueries()</literal> 
+            によってクエリキャッシュ領域を消去することです。
         </para>
 
     </sect1>
-™14.1
+☆14.1
     <sect1 id="performance-collections">
-        <title>ƒRƒŒƒNƒVƒ‡ƒ“‚̃pƒtƒH[ƒ}ƒ“ƒX‚Ì—‰ð</title>
+        <title>コレクションのパフォーマンスの理解</title>
 
         <para>
-            ƒRƒŒƒNƒVƒ‡ƒ“‚̘b‘è‚É‚Í‚·‚Å‚É‘½‚­‚ÌŽžŠÔ‚ðŽg‚¢‚Ü‚µ‚½B‚±‚̐߂łÍ
-            ƒRƒŒƒNƒVƒ‡ƒ“‚ªŽÀsŽž‚ɂǂ̂悤‚ɐU•‘‚¤‚©‚ɂ‚¢‚Ă̘b‘è‚ð2A3Žæ‚èã‚°‚Ü‚·B
+            コレクションの話題にはすでに多くの時間を使いました。この節では
+            コレクションが実行時にどのように振舞うかについての話題を2、3取り上げます。
         </para>
 
         <sect2 id="performance-collections-taxonomy">
-            <title>•ª—Þ</title>
+            <title>分類</title>
 
-            <para>Hibernate‚Í3‚‚̊î–{“I‚ȃRƒŒƒNƒVƒ‡ƒ“‚ÌŽí—Þ‚ð’è‹`‚µ‚Ä‚¢‚Ü‚·B
+            <para>Hibernateは3つの基本的なコレクションの種類を定義しています。
                   </para>
 
             <itemizedlist>
             <listitem>
-                <para>’l‚̃RƒŒƒNƒVƒ‡ƒ“</para>
+                <para>値のコレクション</para>
             </listitem>
             <listitem>
-                <para>ˆê‘Α½ŠÖ˜A</para>
+                <para>一対多関連</para>
             </listitem>
             <listitem>
-                <para>‘½‘Α½ŠÖ˜A</para>
+                <para>多対多関連</para>
             </listitem>
             </itemizedlist>
 
             <para>
-                ‚±‚Ì•ª—Þ‚Í‚³‚Ü‚´‚܂ȃe[ƒuƒ‹‚âŠO•”ƒL[ŠÖ˜A‚ð‹æ•Ê‚µ‚Ü‚·‚ªAŽ„‚½‚¿‚ª’m‚é•K—v‚Ì‚ ‚é
-                ŠÖ˜Aƒ‚ƒfƒ‹‚ɂ‚¢‚Ä‚Ù‚Æ‚ñ‚Ç‚È‚É‚à‹³‚¦‚Ä‚­‚ê‚Ü‚¹‚ñBŠÖ˜A\‘¢‚âƒpƒtƒH[ƒ}ƒ“ƒX‚Ì“Á’¥‚ð
-                Š®‘S‚É—‰ð‚·‚é‚ɂ́AHibernate‚ªƒRƒŒƒNƒVƒ‡ƒ“‚̍s‚ðXVAíœ‚·‚邽‚ß‚ÉŽg‚¤ŽåƒL[‚Ì
-                \‘¢‚à‚Ü‚½l‚¦‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚±‚ê‚͈ȉº‚Ì•ª—Þ‚ð’ñŽ¦‚µ‚Ü‚·B
+                この分類はさまざまなテーブルや外部キー関連を区別しますが、私たちが知る必要のある
+                関連モデルについてほとんどなにも教えてくれません。関連構造やパフォーマンスの特徴を
+                完全に理解するには、Hibernateがコレクションの行を更新、削除するために使う主キーの
+                構造もまた考えなければなりません。これは以下の分類を提示します。
             </para>
 
             <itemizedlist>
             <listitem>
-                <para>ƒCƒ“ƒfƒbƒNƒX•t‚«ƒRƒŒƒNƒVƒ‡ƒ“</para>
+                <para>インデックス付きコレクション</para>
             </listitem>
             <listitem>
                 <para>set</para>
@@ -1083,86 +1085,86 @@
             </itemizedlist>
 
             <para>
-                ‚·‚ׂẴCƒ“ƒfƒbƒNƒX•t‚«ƒRƒŒƒNƒVƒ‡ƒ“imapAlistA”z—ñj‚Í <literal>&lt;key&gt;</literal> 
-                ‚Æ <literal>&lt;index&gt;</literal> ƒJƒ‰ƒ€‚©‚ç‚È‚éŽåƒL[‚ðŽ‚Á‚Ä‚¢‚Ü‚·B‚±‚̏ꍇ‚Í
-                ƒRƒŒƒNƒVƒ‡ƒ“‚̍XV‚Í”ñí‚ÉŒø—¦“I‚Å‚·BŽåƒL[‚Í—L—p‚ȃCƒ“ƒfƒbƒNƒX‚É‚È‚èAHibernate‚ª
-                “Á’è‚̍s‚ðXV‚Ü‚½‚͍폜‚·‚é‚Æ‚«‚ɁA‚»‚̍s‚ðŒø—¦“I‚ÉŒ©‚‚¯‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+                すべてのインデックス付きコレクション(map、list、配列)は <literal>&lt;key&gt;</literal> 
+                と <literal>&lt;index&gt;</literal> カラムからなる主キーを持っています。この場合は
+                コレクションの更新は非常に効率的です。主キーは有用なインデックスになり、Hibernateが
+                特定の行を更新または削除するときに、その行を効率的に見つけることができます。
             </para>
                         
             <para>
-                set‚Í <literal>&lt;key&gt;</literal> ‚©‚ç‚È‚éŽåƒL[‚Æ—v‘f‚̃Jƒ‰ƒ€‚ðŽ‚Á‚Ä‚¢‚Ü‚·B
-                ‚±‚ê‚̓RƒŒƒNƒVƒ‡ƒ“—v‘f‚Ì‚¢‚­‚‚©‚ÌŒ^‚ɂ‚¢‚Ä‚ÍŒø—¦“I‚Å‚Í‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-                “Á‚É•¡‡—v‘fA‘å‚«‚ȃeƒLƒXƒgAƒoƒCƒiƒŠƒtƒB[ƒ‹ƒh‚Å‚Í”ñŒø—¦‚Å‚·Bƒf[ƒ^ƒx[ƒX‚Í
-                •¡‡ŽåƒL[‚ÉŒø—¦“I‚ɃCƒ“ƒfƒbƒNƒX‚ð•t‚¯‚邱‚Æ‚ª‚Å‚«‚È‚¢‚©‚ç‚Å‚·Bˆê•ûA1‘Α½‚⑽‘Α½ŠÖ˜A‚É‚¨‚¢‚āA
-                “Á‚ɐlHŽ¯•ÊŽq‚̏ꍇ‚Í“¯‚¶‚®‚ç‚¢Œø—¦“I‚Å‚·Bi—]’kF <literal>SchemaExport</literal> 
-                ‚ÅŽÀÛ‚É <literal>&lt;set&gt;</literal> ‚ÌŽåƒL[‚ðì‚肽‚¢‚È‚çA‚·‚ׂẴJƒ‰ƒ€‚Å
-                 <literal>not-null="true"</literal> ‚ðéŒ¾‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñBj
+                setは <literal>&lt;key&gt;</literal> からなる主キーと要素のカラムを持っています。
+                これはコレクション要素のいくつかの型については効率的ではないかもしれません。
+                特に複合要素、大きなテキスト、バイナリフィールドでは非効率です。データベースは
+                複合主キーに効率的にインデックスを付けることができないからです。一方、1対多や多対多関連において、
+                特に人工識別子の場合は同じぐらい効率的です。(余談: <literal>SchemaExport</literal> 
+                で実際に <literal>&lt;set&gt;</literal> の主キーを作りたいなら、すべてのカラムで
+                 <literal>not-null="true"</literal> を宣言しなければなりません。)
             </para>
 
             <para>
-                <literal>&lt;idbag&gt;</literal> ƒ}ƒbƒsƒ“ƒO‚͑㗝ƒL[‚ð’è‹`‚µ‚Ü‚·B‚»‚Ì‚½‚ß
-                XV‚͏í‚É”ñí‚ÉŒø—¦“I‚Å‚·BŽ–ŽÀãA‚±‚ê‚͍őP‚̃P[ƒX‚Å‚·B
+                <literal>&lt;idbag&gt;</literal> マッピングは代理キーを定義します。そのため
+                更新は常に非常に効率的です。事実上、これは最善のケースです。
             </para>
             
             <para>
-                bag‚͍ň«‚̃P[ƒX‚Å‚·Bbag‚Í—v‘f‚Ì’l‚̏d•¡‚ª‰Â”\‚ŁAƒCƒ“ƒfƒbƒNƒXƒJƒ‰ƒ€‚ðŽ‚½‚È‚¢‚½‚߁A
-                ŽåƒL[‚Í’è‹`‚³‚ê‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñBHibernate‚ɂ͏d•¡‚µ‚½s‚ð‹æ•Ê‚·‚é•û–@‚ª‚ ‚è‚Ü‚¹‚ñB
-                Hibernate‚Í‚±‚Ì–â‘è‚Ì‰ðŒˆ‚Ì‚½‚߂ɁA•ÏX‚ª‚ ‚Á‚½‚Æ‚«‚ɂ͏í‚ÉŠ®‘S‚ȍ폜
-                iˆê‚Â‚Ì <literal>DELETE</literal> ‚É‚æ‚éj‚ðs‚¢AƒRƒŒƒNƒVƒ‡ƒ“‚̍č쐬‚ðs‚¢‚Ü‚·B
-                ‚±‚ê‚Í”ñí‚É”ñŒø—¦“I‚©‚à‚µ‚ê‚Ü‚¹‚ñB
+                bagは最悪のケースです。bagは要素の値の重複が可能で、インデックスカラムを持たないため、
+                主キーは定義されないかもしれません。Hibernateには重複した行を区別する方法がありません。
+                Hibernateはこの問題の解決のために、変更があったときには常に完全な削除
+                (一つの <literal>DELETE</literal> による)を行い、コレクションの再作成を行います。
+                これは非常に非効率的かもしれません。
             </para>
 
             <para>
-                1‘Α½ŠÖ˜A‚ł́AuŽåƒL[v‚̓f[ƒ^ƒx[ƒX‚̃e[ƒuƒ‹‚Ì•¨—“I‚È
-                ŽåƒL[‚Å‚Í‚È‚¢‚©‚à‚µ‚ê‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B‚µ‚©‚µ‚±‚̏ꍇ‚Å‚³‚¦Aã‹L‚Ì•ª—Þ‚Í‚Ü‚¾—L—p‚Å‚·B
-                iHibernate‚ªƒRƒŒƒNƒVƒ‡ƒ“‚̌X‚̍s‚ð‚Ç‚¤‚â‚Á‚āuŒ©‚‚¯‚é‚©v‚ð•\‚µ‚Ä‚¢‚Ü‚·Bj
+                1対多関連では、「主キー」はデータベースのテーブルの物理的な
+                主キーではないかもしれないことに注意してください。しかしこの場合でさえ、上記の分類はまだ有用です。
+                (Hibernateがコレクションの個々の行をどうやって「見つけるか」を表しています。)
             </para>
 
         </sect2>
 
         <sect2 id="performance-collections-mostefficientupdate">
-            <title>XV‚É‚à‚Á‚Æ‚àŒø—¦“I‚ȃRƒŒƒNƒVƒ‡ƒ“ listAmapAidbagAset</title>
+            <title>更新にもっとも効率的なコレクション list、map、idbag、set</title>
 
             <para>
-                ã‚Å‚Ì‹c˜_‚©‚çAƒCƒ“ƒfƒbƒNƒX•t‚«ƒRƒŒƒNƒVƒ‡ƒ“‚Ɓi•’ʂ́jset‚Í—v‘f‚̒ljÁAíœA
-                XV‚Å‚à‚Á‚Æ‚àŒø—¦“I‚È‘€ì‚ªo—ˆ‚邱‚Æ‚Í–¾‚ç‚©‚Å‚·B
+                上での議論から、インデックス付きコレクションと(普通の)setは要素の追加、削除、
+                更新でもっとも効率的な操作が出来ることは明らかです。
             </para>
 
             <para>
-                ‚قڊԈႢ‚È‚­A‘½‘Α½ŠÖ˜A‚â’l‚̃RƒŒƒNƒVƒ‡ƒ“‚É‚¨‚¢‚āAƒCƒ“ƒfƒbƒNƒX•t‚«ƒRƒŒƒNƒVƒ‡ƒ“‚ª
-                set‚æ‚è‚à—D‚ê‚Ä‚¢‚é“_‚ªˆê‚ˆȏ゠‚è‚Ü‚·B <literal>Set</literal> ‚Í‚»‚Ì
-                \‘¢‚Ì‚½‚߂ɁAHibernate‚Í—v‘f‚ªu•ÏXv‚³‚ꂽ‚Æ‚«‚ɍs‚ðŒˆ‚µ‚Ä <literal>UPDATE</literal> 
-                ‚µ‚Ü‚¹‚ñB <literal>Set</literal> ‚ւ̕ύX‚͏í‚ɁiŒÂX‚̍s‚́j<literal>INSERT</literal> 
-                ‚Æ <literal>DELETE</literal> ‚É‚æ‚Á‚čs‚¢‚Ü‚·BŒJ‚è•Ô‚µ‚Ü‚·‚ªA‚±‚ê‚͈ê‘Α½ŠÖ˜A‚É‚Í
-                “–‚Ä‚Í‚Ü‚è‚Ü‚¹‚ñB
+                ほぼ間違いなく、多対多関連や値のコレクションにおいて、インデックス付きコレクションが
+                setよりも優れている点が一つ以上あります。 <literal>Set</literal> はその
+                構造のために、Hibernateは要素が「変更」されたときに行を決して <literal>UPDATE</literal> 
+                しません。 <literal>Set</literal> への変更は常に(個々の行の)<literal>INSERT</literal> 
+                と <literal>DELETE</literal> によって行います。繰り返しますが、これは一対多関連には
+                当てはまりません。
             </para>
 
             <para>
-                ”z—ñ‚Í’x‰„ˆ—‚ª‚Å‚«‚È‚¢‚Æ‚¢‚¤Œˆ‚Ü‚è‚Ȃ̂ŁAŒ‹˜_‚Æ‚µ‚āAlistAmapAidbag‚ª‚à‚Á‚Æ‚à
-                ƒpƒtƒH[ƒ}ƒ“ƒX‚Ì—Ç‚¢iinverse‚Å‚Í‚È‚¢jƒRƒŒƒNƒVƒ‡ƒ“ƒ^ƒCƒv‚Æ‚È‚è‚Ü‚·Bset‚à
-                ‚»‚ê‚قLjႢ‚Í‚ ‚è‚Ü‚¹‚ñBHibernate‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ł́Aset‚̓RƒŒƒNƒVƒ‡ƒ“‚Ì‚à‚Á‚Æ‚à
-                ‹¤’Ê‚ÌŽí—Þ‚Æ‚µ‚ÄŠú‘Ò‚³‚ê‚Ü‚·Bset‚Ì•\Œ»‚ÍŠÖ˜Aƒ‚ƒfƒ‹‚Å‚Í‚à‚Á‚Æ‚àŽ©‘R‚¾‚©‚ç‚Å‚·B
+                配列は遅延処理ができないという決まりなので、結論として、list、map、idbagがもっとも
+                パフォーマンスの良い(inverseではない)コレクションタイプとなります。setも
+                それほど違いはありません。Hibernateのアプリケーションでは、setはコレクションのもっとも
+                共通の種類として期待されます。setの表現は関連モデルではもっとも自然だからです。
             </para>
 
             <para>
-                ‚µ‚©‚µA‚æ‚­ƒfƒUƒCƒ“‚³‚ꂽHibernate‚̃hƒƒCƒ“ƒ‚ƒfƒ‹‚ł́A’ʏí‚à‚Á‚Æ‚à‘½‚¢ƒRƒŒƒNƒVƒ‡ƒ“‚Í
-                Ž–ŽÀã <literal>inverse="true"</literal> ‚ðŽw’肵‚½1‘Α½ŠÖ˜A‚Å‚·B‚±‚ê‚ç‚ÌŠÖ˜A‚ł́A
-                XV‚Í‘½‘Έê‚ÌŠÖ˜A’[‚ňµ‚í‚êAƒRƒŒƒNƒVƒ‡ƒ“‚̍XVƒpƒtƒH[ƒ}ƒ“ƒX‚Ì–â‘è‚Í“–‚Ä‚Í‚Ü‚è‚Ü‚¹‚ñB
+                しかし、よくデザインされたHibernateのドメインモデルでは、通常もっとも多いコレクションは
+                事実上 <literal>inverse="true"</literal> を指定した1対多関連です。これらの関連では、
+                更新は多対一の関連端で扱われ、コレクションの更新パフォーマンスの問題は当てはまりません。
             </para>
 
         </sect2>
 
         <sect2 id="performance-collections-mostefficentinverse">
-            <title>inverseƒRƒŒƒNƒVƒ‡ƒ“‚É‚à‚Á‚Æ‚àÅ“K‚Èbag‚Ælist</title>
+            <title>inverseコレクションにもっとも最適なbagとlist</title>
 
             <para>
-                bag‚ðŒ©•ú‚µ‚Ä‚µ‚Ü‚¤‘O‚ɁAbagi‚»‚µ‚Älist‚àj‚ªset‚æ‚è‚à‚¸‚Á‚ƃpƒtƒH[ƒ}ƒ“ƒX‚ª—Ç‚¢“Á•Ê‚ȃP[ƒX‚ð
-                Ð‰î‚µ‚Ü‚·B <literal>inverse="true"</literal> ‚̃RƒŒƒNƒVƒ‡ƒ“iˆê”Ê“I‚È1‘Α½ŠÖ˜A‚ÌŽg‚¢•û‚Ȃǁj‚ŁA
-                bag‚Ì—v‘f‚ð‰Šú‰»iƒtƒFƒbƒ`j‚·‚é•K—v‚È‚­bag‚âlist‚É—v‘f‚ð’ljÁ‚Å‚«‚Ü‚·I
-                ‚±‚ê‚Í <literal>Collection.add()</literal> ‚â <literal>Collection.addAll()</literal> 
-                ‚Íbag‚â <literal>List</literal> ‚ł͏í‚Étrue‚ð•Ô‚³‚È‚¯‚ê‚΂Ȃç‚È‚¢‚©‚ç‚Å‚·
-                i <literal>Set</literal> ‚Ƃ͈قȂè‚Ü‚·jB
-                ‚±‚ê‚͈ȉº‚Ì‹¤’ʏˆ—‚ð‚æ‚葬‚­‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+                bagを見放してしまう前に、bag(そしてlistも)がsetよりもずっとパフォーマンスが良い特別なケースを
+                紹介します。 <literal>inverse="true"</literal> のコレクション(一般的な1対多関連の使い方など)で、
+                bagの要素を初期化(フェッチ)する必要なくbagやlistに要素を追加できます!
+                これは <literal>Collection.add()</literal> や <literal>Collection.addAll()</literal> 
+                はbagや <literal>List</literal> では常にtrueを返さなければならないからです
+                ( <literal>Set</literal> とは異なります)。
+                これは以下の共通処理をより速くすることができます。
             </para>
 
             <programlisting><![CDATA[Parent p = (Parent) sess.load(Parent.class, id);
@@ -1174,54 +1176,54 @@
         </sect2>
 
         <sect2 id="performance-collections-oneshotdelete">
-            <title>ˆêŠ‡íœ</title>
+            <title>一括削除</title>
 
             <para>
-                ŽžXAƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚ðˆê‚ˆê‚폜‚·‚邱‚Æ‚Í‹É‚ß‚Ä”ñŒø—¦“I‚ɂȂ邱‚Æ‚ª‚ ‚è‚Ü‚·B
-                Hibernate‚Í‹ð‚©‚Å‚Í‚È‚¢‚̂ŁAV‚µ‚¢‹ó‚̃RƒŒƒNƒVƒ‡ƒ“‚̏ꍇi <literal>list.clear()</literal> 
-                ‚ðŒÄ‚яo‚µ‚½ê‡‚Ȃǁj‚Å‚Í‚±‚ê‚ð‚·‚×‚«‚Å‚È‚¢‚±‚Æ‚ð’m‚Á‚Ä‚¢‚Ü‚·B‚±‚̏ꍇ‚́AHibernate‚Í
-                 <literal>DELETE</literal> ‚ðˆê‰ñ”­s‚µ‚āA‚»‚ê‚Å‚·‚ׂďI‚í‚è‚Ü‚·I
+                時々、コレクションの要素を一つ一つ削除することは極めて非効率的になることがあります。
+                Hibernateは愚かではないので、新しい空のコレクションの場合( <literal>list.clear()</literal> 
+                を呼び出した場合など)ではこれをすべきでないことを知っています。この場合は、Hibernateは
+                 <literal>DELETE</literal> を一回発行して、それですべて終わります!
             </para>
 
             <para>
-                ƒTƒCƒY20‚̃RƒŒƒNƒVƒ‡ƒ“‚Ɉê‚‚̗v‘f‚ð’ljÁ‚µA‚»‚ê‚©‚ç“ñ‚‚̗v‘f‚ðíœ‚·‚é‚Æ‚µ‚Ü‚·B
-                Hibernate‚͈ê‚Â‚Ì <literal>INSERT</literal> •¶‚Æ“ñ‚Â‚Ì <literal>DELETE</literal> •¶‚𔭍s‚µ‚Ü‚·
-                iƒRƒŒƒNƒVƒ‡ƒ“‚ªbag‚Å‚È‚¯‚ê‚΁jB‚±‚ê‚ÍŠm‚©‚É–]‚Ü‚µ‚¢“®ì‚Å‚·B
+                サイズ20のコレクションに一つの要素を追加し、それから二つの要素を削除するとします。
+                Hibernateは一つの <literal>INSERT</literal> 文と二つの <literal>DELETE</literal> 文を発行します
+                (コレクションがbagでなければ)。これは確かに望ましい動作です。
             </para>
 
             <para>
-                ‚µ‚©‚µA18ŒÂ‚Ì—v‘f‚ðíœ‚µ‚Ä2‚‚ðŽc‚µA‚»‚ê‚©‚ç3‚V‚µ‚¢—v‘f‚ð’ljÁ‚·‚é‚Æ‚µ‚Ü‚·B
-                ‚±‚Ì‚Æ‚«“ñ‚‚̕û–@‚ª‚ ‚è‚Ü‚·B
+                しかし、18個の要素を削除して2つを残し、それから3つ新しい要素を追加するとします。
+                このとき二つの方法があります。
             </para>
 
             <itemizedlist>
             <listitem>
                 <para>
-                18s‚ðˆê‚ˆê‚폜‚µ‚āA3s‚ð’ljÁ‚·‚é
+                18行を一つ一つ削除して、3行を追加する
                 </para>
             </listitem>
             <listitem>
                 <para>
-                ƒRƒŒƒNƒVƒ‡ƒ“‘S‘Ì‚ðíœi <literal>DELETE</literal> ‚ÌSQL‚ðˆê‰ñj‚µA‚»‚µ‚Ä5‚‚̗v‘f‚·‚ׂĂð
-                iˆê‚‚¸‚j’ljÁ‚·‚é
+                コレクション全体を削除( <literal>DELETE</literal> のSQLを一回)し、そして5つの要素すべてを
+                (一つずつ)追加する
                 </para>
             </listitem>
             </itemizedlist>
 
             <para>
-                Hibernate‚Í‚±‚̏ꍇ‚É2”Ô–Ú‚Ì•û–@‚ª‚æ‚葬‚¢‚¾‚낤‚Æ‚í‚©‚é‚Ù‚ÇŒ«‚­‚Í‚ ‚è‚Ü‚¹‚ñB
-                i‚»‚µ‚ÄHibernate‚ª‚±‚̂悤‚ÉŒ«‚¢‚±‚Æ‚à–]‚Ü‚µ‚­‚È‚¢‚Å‚µ‚傤B‚±‚̂悤‚ȐU‚é•‘‚¢‚Í
-                ƒf[ƒ^ƒx[ƒX‚̃gƒŠƒK‚È‚Ç‚ð¬—‚³‚¹‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñBj
+                Hibernateはこの場合に2番目の方法がより速いだろうとわかるほど賢くはありません。
+                (そしてHibernateがこのように賢いことも望ましくないでしょう。このような振る舞いは
+                データベースのトリガなどを混乱させるかもしれません。)
             </para>
 
             <para>
-                K‚¢‚É‚àAŒ³‚̃RƒŒƒNƒVƒ‡ƒ“‚ðŽÌ‚āi‚‚܂èŽQÆ‚ð‚â‚߂ājAŒ»Ý‚Ì—v‘f‚ð‚·‚×‚ÄŽ‚V‚µ‚¢ƒRƒŒƒNƒVƒ‡ƒ“‚Ì
-                ƒCƒ“ƒXƒ^ƒ“ƒX‚ð•Ô‚·‚±‚ƂŁA‚¢‚Â‚Å‚à‚±‚̐U‚é•‘‚¢i2”Ԗڂ̐헪j‚ð‹­§‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B
-                Žž‚É‚±‚ê‚Í‚Æ‚Ä‚à•Ö—˜‚Å‹­—Í‚Å‚·B
+                幸いにも、元のコレクションを捨て(つまり参照をやめて)、現在の要素をすべて持つ新しいコレクションの
+                インスタンスを返すことで、いつでもこの振る舞い(2番目の戦略)を強制することが出来ます。
+                時にこれはとても便利で強力です。
             </para>
             
             <para>
-                ‚à‚¿‚ë‚ñAˆêŠ‡íœ‚Í <literal>inverse="true"</literal> ‚ðŽw’肵‚½ƒRƒŒƒNƒVƒ‡ƒ“‚ɂ͍s‚¢‚Ü‚¹‚ñB
+                もちろん、一括削除は <literal>inverse="true"</literal> を指定したコレクションには行いません。
             </para>
 
         </sect2>
@@ -1229,28 +1231,28 @@
     </sect1>
 
     <sect1 id="performance-monitoring" revision="1">
-        <title>ƒpƒtƒH[ƒ}ƒ“ƒX‚̃‚ƒjƒ^ƒŠƒ“ƒO</title>
+        <title>パフォーマンスのモニタリング</title>
 
         <para>
-            Å“K‰»‚̓‚ƒjƒ^ƒŠƒ“ƒO‚âƒpƒtƒH[ƒ}ƒ“ƒX‚ðŽ¦‚·”’l‚ª‚È‚¯‚ê‚Ώ\•ª‚ɍs‚¦‚Ü‚¹‚ñB
-            Hibernate‚Í“à•”ˆ—‚Ì‚·‚ׂĂ͈̔͂̐”’l‚ð’ñ‹Ÿ‚µ‚Ü‚·B
-            Hibernate‚Ì“Œvî•ñ‚Í <literal>SessionFactory</literal> ’PˆÊ‚Ŏ擾‰Â”\‚Å‚·B
+            最適化はモニタリングやパフォーマンスを示す数値がなければ十分に行えません。
+            Hibernateは内部処理のすべての範囲の数値を提供します。
+            Hibernateの統計情報は <literal>SessionFactory</literal> 単位で取得可能です。
         </para>
 
         <sect2 id="performance-monitoring-sf" revision="2">
-            <title>SessionFactory‚̃‚ƒjƒ^ƒŠƒ“ƒO</title>
+            <title>SessionFactoryのモニタリング</title>
 
             <para>
-                <literal>SessionFactory</literal> ‚̃ƒgƒŠƒNƒX‚ɃAƒNƒZƒX‚·‚é‚É‚Í2‚‚̕û–@‚ª‚ ‚è‚Ü‚·B
-                Å‰‚Ì•û–@‚́A <literal>sessionFactory.getStatistics()</literal> ‚ðŒÄ‚яo‚µA
-                Ž©•ª‚Å <literal>Statistics</literal> ‚̓ǂݍž‚Ý‚â•\Ž¦‚ðs‚¢‚Ü‚·B
+                <literal>SessionFactory</literal> のメトリクスにアクセスするには2つの方法があります。
+                最初の方法は、 <literal>sessionFactory.getStatistics()</literal> を呼び出し、
+                自分で <literal>Statistics</literal> の読み込みや表示を行います。
             </para>
 
             <para>
-                <literal>StatisticsService</literal> MBean‚ð—LŒø‚É‚µ‚Ä‚¢‚ê‚΁AHibernate‚ÍJMX‚ðŽg‚Á‚Ä
-                ƒƒgƒŠƒNƒX‚𔭍s‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B1‚‚ÌMBean‚ð‚·‚×‚Ä‚Ì <literal>SessionFactory</literal> 
-                ‚ɑ΂µ‚Ä—LŒø‚É‚·‚é‚©ASessionFactory‚²‚ƂɈê‚‚ÌMBean‚ð—LŒø‚É‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B
-                Å¬ŒÀ‚̐ݒè—á‚Å‚ ‚éˆÈ‰º‚̃R[ƒh‚ðŒ©‚Ä‚­‚¾‚³‚¢B
+                <literal>StatisticsService</literal> MBeanを有効にしていれば、HibernateはJMXを使って
+                メトリクスを発行することもできます。1つのMBeanをすべての <literal>SessionFactory</literal> 
+                に対して有効にするか、SessionFactoryごとに一つのMBeanを有効にすることが出来ます。
+                最小限の設定例である以下のコードを見てください。
             </para>
 
             <programlisting><![CDATA[// MBean service registration for a specific SessionFactory
@@ -1274,77 +1276,77 @@
 server.registerMBean(stats, on); // Register the MBean on the server]]></programlisting>
 
             <para>
-                TODO: ‚±‚ê‚͈Ӗ¡‚ª‚ ‚è‚Ü‚¹‚ñBÅ‰‚̃P[ƒX‚́AMBean‚𒼐ڕœŒ³‚µ‚ÄŽg—p‚µ‚Ü‚·B2”Ԗڂ̃P[ƒX‚́A
-                Žg‚¤‘O‚Ésession factory‚ªŽ‚Á‚Ä‚¢‚éJNDI–¼‚ð“n‚³‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                <literal>hibernateStatsBean.setSessionFactoryJNDIName("my/JNDI/Name")</literal> ‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B
+                TODO: これは意味がありません。最初のケースは、MBeanを直接復元して使用します。2番目のケースは、
+                使う前にsession factoryが持っているJNDI名を渡さなければなりません。
+                <literal>hibernateStatsBean.setSessionFactoryJNDIName("my/JNDI/Name")</literal> を使ってください。
             </para>
             <para>
-                <literal>SessionFactory</literal> ‚ɑ΂µ‚ă‚ƒjƒ^ƒŠƒ“ƒO‚ÌŠJŽniI—¹j‚ðs‚¤‚±‚Æ‚ªo—ˆ‚Ü‚·B
+                <literal>SessionFactory</literal> に対してモニタリングの開始(終了)を行うことが出来ます。
             </para>
             <itemizedlist>
                 <listitem>
                     <para>
-                        Ý’莞‚ɂ́A <literal>hibernate.generate_statistics</literal> ‚ð <literal>false</literal> ‚É‚µ‚Ü‚·
+                        設定時には、 <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‚µ‚Ü‚·
+                        実行時に、 <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> または
+                         <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal> を呼び出します
                     </para>
                 </listitem>
             </itemizedlist>
 
             <para>
-                “Œv‚Í <literal>clear()</literal> ƒƒ\ƒbƒh‚ðŽg‚Á‚ÄŽè“®‚ŃŠƒZƒbƒg‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B
-                ƒTƒ}ƒŠ‚Í <literal>logSummary()</literal> ƒƒ\ƒbƒh‚ðŽg‚Á‚Älogger‚É‘—‚邱‚Æ‚ªo—ˆ‚Ü‚·
-                iinfoƒŒƒxƒ‹‚Å‚·jB
+                統計は <literal>clear()</literal> メソッドを使って手動でリセットすることが出来ます。
+                サマリは <literal>logSummary()</literal> メソッドを使ってloggerに送ることが出来ます
+                (infoレベルです)。
             </para>
 
         </sect2>
 
         <sect2 id="performance-monitoring-metrics" revision="1">
-            <title>ƒƒgƒŠƒNƒX</title>
+            <title>メトリクス</title>
 
             <para>
-                ‘½‚­‚Ì‚à‚Ì‚ª‚ ‚è‚Ü‚·B‚·‚ׂĂ̎g—p‰Â”\‚ȃJƒEƒ“ƒ^‚Í <literal>Statistics</literal> 
-                ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ÌAPI‚ɏ‘‚©‚ê‚Ä‚¨‚èA3‚‚̕ª—Þ‚ª‚ ‚è‚Ü‚·B
+                多くのものがあります。すべての使用可能なカウンタは <literal>Statistics</literal> 
+                インターフェイスのAPIに書かれており、3つの分類があります。
             </para>
             <itemizedlist>
                 <listitem>
                     <para>
-                        ƒƒgƒŠƒNƒX‚͈ê”Ê“I‚È <literal>Session</literal> ‚ÌŽg‚¢•û‚ÆŠÖŒW‚µ‚Ä‚¢‚Ü‚·B
-                        ƒI[ƒvƒ“‚µ‚½ƒZƒbƒVƒ‡ƒ“‚̐”‚ªJDBCƒRƒlƒNƒVƒ‡ƒ“‚ÆŠÖ˜A‚µ‚Ä‚¢‚é‚Ì‚Æ“¯‚¶‚Å‚·B
+                        メトリクスは一般的な <literal>Session</literal> の使い方と関係しています。
+                        オープンしたセッションの数がJDBCコネクションと関連しているのと同じです。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        ƒƒgƒŠƒNƒX‚Í—v‘fAƒRƒŒƒNƒVƒ‡ƒ“AƒNƒGƒŠ‚âƒLƒƒƒbƒVƒ…‚È‚Ç‘S‘Ì‚É
-                        ŠÖŒW‚µ‚Ä‚¢‚Ü‚·i•Ê–¼‚̓Oƒ[ƒoƒ‹ƒƒgƒŠƒNƒX‚Å‚·jB
+                        メトリクスは要素、コレクション、クエリやキャッシュなど全体に
+                        関係しています(別名はグローバルメトリクスです)。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        ƒƒgƒŠƒNƒX‚̏ڍׂ͓Á’è‚̃Gƒ“ƒeƒBƒeƒBAƒRƒŒƒNƒVƒ‡ƒ“AƒNƒGƒŠAƒLƒƒƒbƒVƒ…—̈æ‚ÉŠÖŒW‚µ‚Ä‚¢‚Ü‚·B
+                        メトリクスの詳細は特定のエンティティ、コレクション、クエリ、キャッシュ領域に関係しています。
                     </para>
                 </listitem>
             </itemizedlist>
 
             <para>
-                —á‚Æ‚µ‚āAƒLƒƒƒbƒVƒ…‚̃qƒbƒgAƒqƒbƒgƒ~ƒX‚âA—v‘fAƒRƒŒƒNƒVƒ‡ƒ“AƒNƒGƒŠ‚ÌŠ„‡AƒNƒGƒŠ‚ÌŽÀs‚É
-                •K—v‚È•½‹ÏŽžŠÔ‚ðŠm”F‚Å‚«‚Ü‚·Bƒ~ƒŠ•b‚̐”’l‚ÍJava‚̋ߎ—‚ðŽó‚¯‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-                Hibernate‚ÍJVM‚̐¸“x‚ɐ§ŒÀ‚³‚êAƒvƒ‰ƒbƒgƒtƒH[ƒ€‚É‚æ‚Á‚Ä‚Í10•b’PˆÊ‚Å‚µ‚©³Šm‚Å‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB
+                例として、キャッシュのヒット、ヒットミスや、要素、コレクション、クエリの割合、クエリの実行に
+                必要な平均時間を確認できます。ミリ秒の数値はJavaの近似を受けることに注意してください。
+                HibernateはJVMの精度に制限され、プラットフォームによっては10秒単位でしか正確でないかもしれません。
             </para>
 
             <para>
-                ’Pƒ‚Ègetter‚̓Oƒ[ƒoƒ‹ƒƒgƒŠƒNƒXi‚·‚È‚í‚¿“Á’è‚̃Gƒ“ƒeƒBƒeƒBAƒRƒŒƒNƒVƒ‡ƒ“AƒLƒƒƒbƒVƒ…—̈æ‚È‚Ç‚É”›‚ç‚ê‚È‚¢j
-                ‚ɃAƒNƒZƒX‚·‚邽‚ß‚ÉŽg‚¢‚Ü‚·B“Á’è‚̃Gƒ“ƒeƒBƒeƒBAƒRƒŒƒNƒVƒ‡ƒ“AƒLƒƒƒbƒVƒ…—̈æ‚̃ƒgƒŠƒNƒX‚́A
-                ‚»‚ê‚ç‚Ì–¼‘O‚âAƒNƒGƒŠ‚ÌHQLASQL•\Œ»‚É‚æ‚Á‚ăAƒNƒZƒX‚·‚邱‚Æ‚ª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
+                単純なgetterはグローバルメトリクス(すなわち特定のエンティティ、コレクション、キャッシュ領域などに縛られない)
+                にアクセスするために使います。特定のエンティティ、コレクション、キャッシュ領域のメトリクスは、
+                それらの名前や、クエリのHQL、SQL表現によってアクセスすることが出来ます。さらに詳しい情報は、
+                <literal>Statistics</literal> 、 <literal>EntityStatistics</literal> 、 <literal>CollectionStatistics</literal> 
+                、 <literal>SecondLevelCacheStatistics</literal> 、 <literal>QueryStatistics</literal> APIのjavadocを
+                参照してください。以下のコードは簡単な例です。
             </para>
 
             <programlisting><![CDATA[Statistics stats = HibernateUtil.sessionFactory.getStatistics();
@@ -1365,14 +1367,14 @@
 log.info(Cat.class.getName() + " changed " + changes + "times"  );]]></programlisting>
 
             <para>
-                ‚·‚ׂẴGƒ“ƒeƒBƒeƒBAƒRƒŒƒNƒVƒ‡ƒ“AƒNƒGƒŠAƒLƒƒƒbƒVƒ…—̈æ‚ɑ΂µ‚čs‚¤ê‡‚́A
-                <literal>getQueries()</literal> A <literal>getEntityNames()</literal>A 
-                <literal>getCollectionRoleNames()</literal> A <literal>getSecondLevelCacheRegionNames()</literal> ƒƒ\ƒbƒh‚Å
-                ‚»‚ꂼ‚ê‚Ì–¼‘O‚̃ŠƒXƒg‚ðŽæ“¾‚·‚邱‚Æ‚ªo—ˆ‚Ü‚·B
+                すべてのエンティティ、コレクション、クエリ、キャッシュ領域に対して行う場合は、
+                <literal>getQueries()</literal> 、 <literal>getEntityNames()</literal>、 
+                <literal>getCollectionRoleNames()</literal> 、 <literal>getSecondLevelCacheRegionNames()</literal> メソッドで
+                それぞれの名前のリストを取得することが出来ます。
             </para>
 
         </sect2>
 
     </sect1>
 
-</chapter>
\ No newline at end of file
+</chapter>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/persistent_classes.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/persistent_classes.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/persistent_classes.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,28 +1,30 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="persistent-classes" revision="2">
-    <title>‰i‘±ƒNƒ‰ƒX</title>
+    <title>永続クラス</title>
 
     <para>
-        ‰i‘±ƒNƒ‰ƒX‚̓rƒWƒlƒXã‚Ì–â‘è‚̃Gƒ“ƒeƒBƒeƒBi—Ⴆ‚΁AEƒRƒ}[ƒXƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̌ڋq‚⒍•¶j
-        ‚ðŽÀ‘•‚·‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃Nƒ‰ƒX‚Å‚·B
-        ‰i‘±ƒNƒ‰ƒX‚Ì‚·‚ׂẴCƒ“ƒXƒ^ƒ“ƒX‚ª‰i‘±ó‘Ô‚Å‚ ‚é‚ÆŒ©‚È‚³‚ê‚é‚킯‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-        ƒCƒ“ƒXƒ^ƒ“ƒX‚Í‹t‚Ɉꎞ“Iitransientj‚Å‚ ‚Á‚½‚èA•ª—£ó‘ԁidetachedj‚Å‚ ‚Á‚½‚è‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
+        永続クラスはビジネス上の問題のエンティティ(例えば、Eコマースアプリケーションの顧客や注文)
+        を実装するアプリケーションのクラスです。
+        永続クラスのすべてのインスタンスが永続状態であると見なされるわけではありません。
+        インスタンスは逆に一時的(transient)であったり、分離状態(detached)であったりするかもしれません。
     </para>
 
     <para>
-        Plain Old Java Object (POJO)ƒvƒƒOƒ‰ƒ~ƒ“ƒOƒ‚ƒfƒ‹‚Æ‚µ‚Ä‚à’m‚ç‚ê‚é
-        ‚¢‚­‚‚©‚Ì’Pƒ‚ȃ‹[ƒ‹‚ɏ]‚¤‚È‚çAHibernate‚͍łà‚æ‚­“­‚«‚Ü‚·B
-        ‚µ‚©‚µ‚±‚ê‚ç‚̃‹[ƒ‹‚͓‚¢‚à‚Ì‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-        ŽÀÛHibernate3‚͉i‘±ƒIƒuƒWƒFƒNƒg‚̐«Ž¿‚É‚Ù‚Æ‚ñ‚lj½‚Ì‘O’ñ‚à’u‚¢‚Ä‚¢‚Ü‚¹‚ñB
-        ƒhƒƒCƒ“ƒ‚ƒfƒ‹‚Í‘¼‚Ì•û–@‚Å•\Œ»‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B
-        —Ⴆ‚Î <literal>Map</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚̃cƒŠ[‚ðŽg‚¤•û–@‚ª‚ ‚è‚Ü‚·B
+        Plain Old Java Object (POJO)プログラミングモデルとしても知られる
+        いくつかの単純なルールに従うなら、Hibernateは最もよく働きます。
+        しかしこれらのルールは難しいものではありません。
+        実際Hibernate3は永続オブジェクトの性質にほとんど何の前提も置いていません。
+        ドメインモデルは他の方法で表現することもできます。
+        例えば <literal>Map</literal> インスタンスのツリーを使う方法があります。
     </para>
 
     <sect1 id="persistent-classes-pojo">
-        <title>’Pƒ‚ÈPOJO‚Ì—á</title>
+        <title>単純なPOJOの例</title>
 
         <para>
-            ‚Ù‚Æ‚ñ‚Ç‚ÌJavaƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ɂ̓lƒR‰È‚Ì“®•¨‚ð•\Œ»‚·‚é‰i‘±ƒNƒ‰ƒX‚ª•K—v‚Å‚·B
+            ほとんどのJavaアプリケーションにはネコ科の動物を表現する永続クラスが必要です。
         </para>
 
         <programlisting><![CDATA[package eg;
@@ -105,51 +107,51 @@
 }]]></programlisting>
 
         <para>
-            ]‚¤‚ׂ«4‚‚̃‹[ƒ‹‚ª‚ ‚è‚Ü‚·F
+            従うべき4つのルールがあります:
         </para>
         
         <sect2 id="persistent-classes-pojo-constructor" revision="1">
-            <title>ˆø”‚Ì‚È‚¢ƒRƒ“ƒXƒgƒ‰ƒNƒ^‚ðŽÀ‘•‚·‚é</title>
+            <title>引数のないコンストラクタを実装する</title>
 
             <para>
-                <literal>Cat</literal> ‚ɂ͈ø”‚Ì‚È‚¢ƒRƒ“ƒXƒgƒ‰ƒNƒ^‚ª‚ ‚è‚Ü‚·B
-                Hibernate‚ª <literal>Constructor.newInstance()</literal> ‚ðŽg‚Á‚ĉi‘±ƒNƒ‰ƒX‚Ì
-                ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚ðs‚¦‚é‚悤‚ɁA‚·‚ׂẲi‘±ƒNƒ‰ƒX‚ɂ̓fƒtƒHƒ‹ƒgƒRƒ“ƒXƒgƒ‰ƒNƒ^
-                ipublic‚Å‚È‚­‚Ä‚à\‚¢‚Ü‚¹‚ñj‚ª‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                Hibernate‚ÌŽÀsŽžƒvƒƒLƒV¶¬‚Ì‚½‚߂ɁA­‚È‚­‚Æ‚à <emphasis>package</emphasis> 
-                ‚̉Ž‹«‚ðŽ‚ÂƒfƒtƒHƒ‹ƒgƒRƒ“ƒXƒgƒ‰ƒNƒ^‚ð‹­‚­‚¨Š©‚ß‚µ‚Ü‚·B
+                <literal>Cat</literal> には引数のないコンストラクタがあります。
+                Hibernateが <literal>Constructor.newInstance()</literal> を使って永続クラスの
+                インスタンス化を行えるように、すべての永続クラスにはデフォルトコンストラクタ
+                (publicでなくても構いません)がなければなりません。
+                Hibernateの実行時プロキシ生成のために、少なくとも <emphasis>package</emphasis> 
+                の可視性を持つデフォルトコンストラクタを強くお勧めします。
             </para>
         </sect2>
 
         <sect2 id="persistent-classes-pojo-identifier" revision="2">
-            <title>Ž¯•ÊŽqƒvƒƒpƒeƒB‚ð—pˆÓ‚·‚éiƒIƒvƒVƒ‡ƒ“j</title>
+            <title>識別子プロパティを用意する(オプション)</title>
 
             <para>
-                <literal>Cat</literal> ‚É‚Í <literal>id</literal> ‚Æ‚¢‚¤ƒvƒƒpƒeƒB‚ª‚ ‚è‚Ü‚·B
-                ‚±‚̃vƒƒpƒeƒB‚̓f[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚ÌŽåƒL[ƒJƒ‰ƒ€‚Öƒ}ƒbƒsƒ“ƒO‚³‚ê‚Ü‚·B
-                ‚±‚̃vƒƒpƒeƒB‚Ì–¼‘O‚͉½‚Å‚à\‚¢‚Ü‚¹‚ñ‚µAŒ^‚͂ǂ̂悤‚ȃvƒŠƒ~ƒeƒBƒuŒ^‚Å‚àA
-                ƒvƒŠƒ~ƒeƒBƒu‚́uƒ‰ƒbƒp[vŒ^‚Å‚àA<literal>java.lang.String</literal> ‚â 
-                <literal>java.util.Date</literal> ‚Å‚à\‚¢‚Ü‚¹‚ñB
-                i‚à‚µƒŒƒKƒV[ƒf[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚ª•¡‡ƒL[‚ðŽ‚Â‚È‚ç‚΁A
-                ¡q‚ׂ½‚悤‚ÈŒ^‚̃vƒƒpƒeƒB‚ðŽ‚Âƒ†[ƒU’è‹`‚̃Nƒ‰ƒX‚ðŽg‚¤‚±‚Æ‚³‚¦‰Â”\‚Å‚·B
-                Œã‚Å•¡‡Ž¯•ÊŽq‚Ìß‚ðŒ©‚Ä‚­‚¾‚³‚¢Bj
+                <literal>Cat</literal> には <literal>id</literal> というプロパティがあります。
+                このプロパティはデータベーステーブルの主キーカラムへマッピングされます。
+                このプロパティの名前は何でも構いませんし、型はどのようなプリミティブ型でも、
+                プリミティブの「ラッパー」型でも、<literal>java.lang.String</literal> や 
+                <literal>java.util.Date</literal> でも構いません。
+                (もしレガシーデータベーステーブルが複合キーを持つならば、
+                今述べたような型のプロパティを持つユーザ定義のクラスを使うことさえ可能です。
+                後で複合識別子の節を見てください。)
             </para>
 
             <para>
-                Ž¯•ÊŽqƒvƒƒpƒeƒB‚ÍŒµ–§‚ɂ̓IƒvƒVƒ‡ƒ“‚Å‚·B
-                ‚±‚ê‚ðÈ—ª‚µ‚āAHibernate‚É“à•”“I‚ɃIƒuƒWƒFƒNƒg‚ÌŽ¯•ÊŽq‚ð’ǐՂ³‚¹‚邱‚Ƃ͉”\‚Å‚·B
-                ‚µ‚©‚µ‚¨‚·‚·‚ß‚Í‚µ‚Ü‚¹‚ñB
+                識別子プロパティは厳密にはオプションです。
+                これを省略して、Hibernateに内部的にオブジェクトの識別子を追跡させることは可能です。
+                しかしおすすめはしません。
             </para>
 
             <para>
-                ŽÀÛ‚ɁAŽ¯•ÊŽqƒvƒƒpƒeƒB‚ðéŒ¾‚·‚éƒNƒ‰ƒX‚¾‚¯‚ª—˜—p‰Â”\‚È‹@”\‚ª‚¢‚­‚‚©‚ ‚è‚Ü‚·F
+                実際に、識別子プロパティを宣言するクラスだけが利用可能な機能がいくつかあります:
             </para>
 
             <itemizedlist spacing="compact">
                 <listitem>
                     <para>
-                        •ª—£ƒIƒuƒWƒFƒNƒg‚̘A½“I‚ȍĒljÁiƒJƒXƒP[ƒhXV‚âƒJƒXƒP[ƒhƒ}[ƒWjB
-                         <xref linkend="objectstate-transitive"/> ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                        分離オブジェクトの連鎖的な再追加(カスケード更新やカスケードマージ)。
+                         <xref linkend="objectstate-transitive"/> を参照してください。
                     </para>
                 </listitem>
                 <listitem>
@@ -165,47 +167,47 @@
             </itemizedlist>
 
             <para>
-                ‰i‘±ƒNƒ‰ƒX‚ɂ́AˆêŠÑ‚µ‚½–¼‘O‚ÌŽ¯•ÊŽqƒvƒƒpƒeƒB‚ð’è‹`‚·‚邱‚Æ‚ð‚¨Š©‚ß‚µ‚Ü‚·B
-                ‚³‚ç‚Énull’l‚ðŽæ‚ê‚é(‚‚܂èƒvƒŠƒ~ƒeƒBƒu‚Å‚Í‚È‚¢)Œ^‚ðŽg‚Á‚½•û‚ª‚æ‚¢‚Å‚µ‚傤B
+                永続クラスには、一貫した名前の識別子プロパティを定義することをお勧めします。
+                さらにnull値を取れる(つまりプリミティブではない)型を使った方がよいでしょう。
             </para>
         </sect2>
 
         <sect2 id="persistent-classes-pojo-final">
-            <title>finalƒNƒ‰ƒX‚É‚µ‚È‚¢iƒIƒvƒVƒ‡ƒ“j</title>
+            <title>finalクラスにしない(オプション)</title>
             <para>
-                Hibernate‚Ì’†S“I‚È“Á’¥‚Å‚ ‚é <emphasis>ƒvƒƒLƒV</emphasis> ‚́A
-                ‰i‘±ƒNƒ‰ƒX‚ªfinal‚Å‚È‚¢‚±‚ƁA‚Ü‚½‚̓ƒ\ƒbƒh‚ð‘S•”public‚Ő錾‚µ‚Ä‚¢‚é
-                ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ªŽÀ‘•‚³‚ê‚Ä‚¢‚é‚©‚Ɉˑ¶‚µ‚Ä‚¢‚Ü‚·B
+                Hibernateの中心的な特徴である <emphasis>プロキシ</emphasis> は、
+                永続クラスがfinalでないこと、またはメソッドを全部publicで宣言している
+                インターフェイスが実装されているかに依存しています。
             </para>
             <para>
-                Hibernate‚ŃCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽÀ‘•‚µ‚Ä‚¢‚È‚¢ <literal>final</literal> ƒNƒ‰ƒX‚ð‰i‘±‰»‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚·‚ªA
-                ’x‰„ŠÖ˜AƒtƒFƒbƒ`‚ɑ΂µ‚ăvƒƒLƒV‚ðŽg‚¤‚±‚Æ‚Í‚Å‚«‚È‚­‚È‚è‚Ü‚·B
-                ‚±‚ê‚̓pƒtƒH[ƒ}ƒ“ƒXƒ`ƒ…[ƒjƒ“ƒO‚Ö‚Ì‘I‘ðŽˆ‚ð‹·‚ß‚é‚±‚Æ‚É‚È‚è‚Ü‚·B
+                Hibernateでインターフェイスを実装していない <literal>final</literal> クラスを永続化することはできますが、
+                遅延関連フェッチに対してプロキシを使うことはできなくなります。
+                これはパフォーマンスチューニングへの選択肢を狭めることになります。
             </para>
             <para>
-                final‚Å‚Í‚È‚¢ƒNƒ‰ƒX‚Å <literal>public final</literal> ƒƒ\ƒbƒh‚ð’è‹`‚·‚邱‚Æ‚à”ð‚¯‚é‚ׂ«‚Å‚·B
-                <literal>public final</literal> ƒƒ\ƒbƒh‚ðŽ‚ÂƒNƒ‰ƒX‚ðŽg‚¢‚½‚¯‚ê‚΁A
-                <literal>lazy="false"</literal> ‚Ɛݒ肵‚Ä–¾Ž¦“I‚ɃvƒƒLƒV‚𖳌ø‚É‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+                finalではないクラスで <literal>public final</literal> メソッドを定義することも避けるべきです。
+                <literal>public final</literal> メソッドを持つクラスを使いたければ、
+                <literal>lazy="false"</literal> と設定して明示的にプロキシを無効にしなければなりません。
             </para>
         </sect2>
 
         <sect2 id="persistent-classes-pojo-accessors" revision="2">
-            <title>‰i‘±ƒtƒB[ƒ‹ƒh‚ɑ΂·‚éƒAƒNƒZƒT‚ƃ~ƒ…[ƒe[ƒ^‚ð’è‹`‚·‚éiƒIƒvƒVƒ‡ƒ“j</title>
+            <title>永続フィールドに対するアクセサとミューテータを定義する(オプション)</title>
 
             <para>
-                <literal>Cat</literal> ‚Å‚Í‚·‚ׂẲi‘±ƒtƒB[ƒ‹ƒh‚ɑ΂µ‚ăAƒNƒZƒTƒƒ\ƒbƒh‚ð’è‹`‚µ‚Ä‚¢‚Ü‚·B
-                ‘¼‚Ì‘½‚­‚ÌORMƒc[ƒ‹‚́A‰i‘±ƒCƒ“ƒXƒ^ƒ“ƒX•Ï”‚𒼐ډi‘±‰»‚µ‚Ü‚·B
-                Ž„‚½‚¿‚̓ŠƒŒ[ƒVƒ‡ƒiƒ‹ƒXƒL[ƒ}‚ƃNƒ‰ƒX‚Ì“à•”\‘¢‚𕪗£‚·‚é•û‚ª—Ç‚¢‚ƐM‚¶‚Ä‚¢‚Ü‚·B
-                ƒfƒtƒHƒ‹ƒg‚ł́AHibernate‚ÍJavaBeanƒXƒ^ƒCƒ‹‚̃vƒƒpƒeƒB‚ð‰i‘±‰»‚µA
+                <literal>Cat</literal> ではすべての永続フィールドに対してアクセサメソッドを定義しています。
+                他の多くのORMツールは、永続インスタンス変数を直接永続化します。
+                私たちはリレーショナルスキーマとクラスの内部構造を分離する方が良いと信じています。
+                デフォルトでは、HibernateはJavaBeanスタイルのプロパティを永続化し、
                 <literal>getFoo</literal>, <literal>isFoo</literal>, <literal>setFoo</literal> 
-                Œ`Ž®‚̃ƒ\ƒbƒh–¼‚ð”FŽ¯‚µ‚Ü‚·B
-                ‚µ‚©‚µ•K—v‚È‚çA“Á’è‚̃vƒƒpƒeƒB‚ɑ΂µ‚āA’¼Ú‚̃tƒB[ƒ‹ƒhƒAƒNƒZƒX‚ɐ؂è‘Ö‚¦‚邱‚Ƃ͉”\‚Å‚·B
+                形式のメソッド名を認識します。
+                しかし必要なら、特定のプロパティに対して、直接のフィールドアクセスに切り替えることは可能です。
             </para>
 
             <para>
-                ƒvƒƒpƒeƒB‚Ípublic‚Ő錾‚·‚é•K—v‚Í <emphasis>‚ ‚è‚Ü‚¹‚ñ</emphasis> B
-                Hibernate‚̓fƒtƒHƒ‹ƒgA<literal>protected</literal> ‚à‚µ‚­‚Í <literal>private</literal> 
-                ‚Ìget / set‚̃yƒA‚ðŽ‚ÂƒvƒƒpƒeƒB‚ð‰i‘±‰»‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+                プロパティはpublicで宣言する必要は <emphasis>ありません</emphasis> 。
+                Hibernateはデフォルト、<literal>protected</literal> もしくは <literal>private</literal> 
+                のget / setのペアを持つプロパティを永続化することができます。
             </para>
 
         </sect2>
@@ -213,11 +215,11 @@
     </sect1>
 
     <sect1 id="persistent-classes-inheritance">
-        <title>Œp³‚ÌŽÀ‘•</title>
+        <title>継承の実装</title>
 
         <para>
-            ƒTƒuƒNƒ‰ƒX‚à1”Ô–Ú‚Æ2”Ԗڂ̃‹[ƒ‹‚ðŽç‚ç‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-            ƒTƒuƒNƒ‰ƒX‚̓X[ƒp[ƒNƒ‰ƒX <literal>Cat</literal> ‚©‚环•ÊŽqƒvƒƒpƒeƒB‚ðŒp³‚µ‚Ü‚·B
+            サブクラスも1番目と2番目のルールを守らなければなりません。
+            サブクラスはスーパークラス <literal>Cat</literal> から識別子プロパティを継承します。
         </para>
 
         <programlisting><![CDATA[package eg;
@@ -235,60 +237,60 @@
     </sect1>
 
     <sect1 id="persistent-classes-equalshashcode" revision="1">
-        <title><literal>equals()</literal> ‚Æ <literal>hashCode()</literal> ‚ÌŽÀ‘•</title>
+        <title><literal>equals()</literal> と <literal>hashCode()</literal> の実装</title>
 
         <para>
-            ˆÈ‰º‚ÌðŒ‚Ìê‡A
-            <literal>equals()</literal> ‚Æ <literal>hashCode()</literal> ƒƒ\ƒbƒh‚ðƒI[ƒo[ƒ‰ƒCƒh‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñA
+            以下の条件の場合、
+            <literal>equals()</literal> と <literal>hashCode()</literal> メソッドをオーバーライドしなければなりません、
         </para>
         <itemizedlist spacing="compact">
             <listitem>
                 <para>
-                    ‰i‘±ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð <literal>Set</literal> ‚É’u‚­ê‡B
-                    i‚±‚ê‚Í‘½’l‚ÌŠÖ˜A‚ð•\Œ»‚·‚邨‚·‚·‚ß‚Ì•û–@‚Å‚·j
-                    <emphasis>‚»‚µ‚Ä“¯Žž‚É</emphasis>
+                    永続クラスのインスタンスを <literal>Set</literal> に置く場合。
+                    (これは多値の関連を表現するおすすめの方法です)
+                    <emphasis>そして同時に</emphasis>
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    •ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚ðƒZƒbƒVƒ‡ƒ“‚֍ĒljÁ‚·‚éê‡B
+                    分離インスタンスをセッションへ再追加する場合。
                 </para>
             </listitem>
         </itemizedlist>
 
         <para>
-            Hibernate‚́A‰i‘±IDiƒf[ƒ^ƒx[ƒX‚̍sj‚ƁA“Á’è‚̃ZƒbƒVƒ‡ƒ“ƒXƒR[ƒv“à‚É
-            ŒÀ’è‚Å‚·‚ªJavaID‚Æ‚ª“™‰¿‚Å‚ ‚邱‚Æ‚ð•ÛØ‚µ‚Ü‚·B
-            ‚Å‚·‚©‚çˆÙ‚È‚éƒZƒbƒVƒ‡ƒ“‚ÅŒŸõ‚µ‚½ƒCƒ“ƒXƒ^ƒ“ƒX‚ð‘g‚ݍ‡‚킹‚éê‡A
-            <literal>Set</literal> ‚ɈӖ¡‚Ì‚ ‚éƒZƒ}ƒ“ƒeƒBƒNƒX‚ðŽ‚½‚¹‚悤‚ÆŽv‚Á‚Ä‚¢‚é‚È‚ç
-            ‚·‚®‚É<literal>equals()</literal> ‚Æ <literal>hashCode()</literal> 
-            ‚ðŽÀ‘•‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+            Hibernateは、永続ID(データベースの行)と、特定のセッションスコープ内に
+            限定ですがJavaIDとが等価であることを保証します。
+            ですから異なるセッションで検索したインスタンスを組み合わせる場合、
+            <literal>Set</literal> に意味のあるセマンティクスを持たせようと思っているなら
+            すぐに<literal>equals()</literal> と <literal>hashCode()</literal> 
+            を実装しなければなりません。
         </para>
 
         <para>
-            Å‚à–¾”’‚È•û–@‚́A—¼•û‚̃IƒuƒWƒFƒNƒg‚ÌŽ¯•ÊŽq‚Ì’l‚Ì”äŠr‚É‚æ‚Á‚Ä <literal>equals()</literal>‚Æ
-            <literal>hashCode()</literal> ‚ðŽÀ‘•‚·‚é•û–@‚Å‚·B
-            ’l‚ª“¯‚¶‚È‚çA—¼ŽÒ‚̓f[ƒ^ƒx[ƒX‚Ì“¯‚¶s‚Å‚È‚¯‚ê‚΂Ȃç‚È‚¢‚½‚ß“™‚µ‚­‚È‚è‚Ü‚·B
-            i—¼ŽÒ‚ª <literal>Set</literal> ‚ɒljÁ‚³‚ê‚Ä‚àA
-            <literal>Set</literal> ‚É‚Í1ŒÂ‚Ì—v‘f‚µ‚©‚È‚¢‚±‚Æ‚É‚È‚è‚Ü‚·j
-            Žc”O‚È‚±‚ƂɁA¶¬‚³‚ꂽŽ¯•ÊŽq‚É‚Í‚±‚̃Aƒvƒ[ƒ`‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB
-            Hibernate‚͉i‘±‰»‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ÖŽ¯•ÊŽq‚Ì’l‚ð‘ã“ü‚·‚邾‚¯‚Å‚ ‚èA
-            V‚µ‚­ì¬‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚͂ǂ̂悤‚ÈŽ¯•ÊŽq‚Ì’l‚àŽ‚Á‚Ä‚¢‚Ü‚¹‚ñB
-            ‚³‚ç‚ɁAƒCƒ“ƒXƒ^ƒ“ƒX‚ªƒZ[ƒu‚³‚ê‚Ä‚¨‚炸AŒ»Ý <literal>Set</literal> ‚Ì’†‚É‚ ‚ê‚΁A
-            ƒZ[ƒu‚·‚é‚ƃIƒuƒWƒFƒNƒg‚ÖŽ¯•ÊŽq‚Ì’l‚ð‘ã“ü‚·‚邱‚Æ‚É‚È‚è‚Ü‚·B
-            ‚à‚µ <literal>equals()</literal> ‚Æ <literal>hashCode()</literal> ‚ªŽ¯•ÊŽq‚Ì’l‚ÉŠî‚¢‚Ä‚¢‚é‚È‚çA
-            ƒnƒbƒVƒ…ƒR[ƒh‚ª•ÏX‚³‚ê‚é‚Æ <literal>Set</literal> ‚Ì‹K–ñ‚ª”j‚ç‚ê‚Ü‚·B
-            ‚±‚Ì–â‘è‚ɂ‚¢‚Ä‚ÌŠ®‘S‚È‹c˜_‚́AHibernate‚̃EƒFƒuƒTƒCƒg‚ðŒ©‚Ä‚­‚¾‚³‚¢B
-            ‚±‚ê‚ÍHibernate‚Ì–â‘è‚Å‚Í‚È‚­AƒIƒuƒWƒFƒNƒg‚Ì“¯ˆê«‚Æ“™‰¿«‚ɂ‚¢‚ẮA
-            ’ʏí‚ÌJava‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+            最も明白な方法は、両方のオブジェクトの識別子の値の比較によって <literal>equals()</literal>と
+            <literal>hashCode()</literal> を実装する方法です。
+            値が同じなら、両者はデータベースの同じ行でなければならないため等しくなります。
+            (両者が <literal>Set</literal> に追加されても、
+            <literal>Set</literal> には1個の要素しかないことになります)
+            残念なことに、生成された識別子にはこのアプローチを使うことができません。
+            Hibernateは永続化されたオブジェクトへ識別子の値を代入するだけであり、
+            新しく作成されたインスタンスはどのような識別子の値も持っていません。
+            さらに、インスタンスがセーブされておらず、現在 <literal>Set</literal> の中にあれば、
+            セーブするとオブジェクトへ識別子の値を代入することになります。
+            もし <literal>equals()</literal> と <literal>hashCode()</literal> が識別子の値に基づいているなら、
+            ハッシュコードが変更されると <literal>Set</literal> の規約が破られます。
+            この問題についての完全な議論は、Hibernateのウェブサイトを見てください。
+            これはHibernateの問題ではなく、オブジェクトの同一性と等価性についての、
+            通常のJavaのセマンティクスであることに注意してください。
         </para>
 
         <para>
-            <emphasis>ƒrƒWƒlƒXƒL[‚Ì“™‰¿«</emphasis> ‚ðŽg‚Á‚āA
-            <literal>equals()</literal> ‚Æ <literal>hashCode()</literal> ‚ðŽÀ‘•‚·‚邱‚Æ‚ð‚¨Š©‚ß‚µ‚Ü‚·B
-            ƒrƒWƒlƒXƒL[‚Ì“™‰¿«‚Ƃ́A<literal>equals()</literal> ƒƒ\ƒbƒh‚ªAƒrƒWƒlƒXƒL[A
-            ‚‚܂茻ŽÀ‚̐¢ŠE‚É‚¨‚¢‚ăCƒ“ƒXƒ^ƒ“ƒX‚ð“Á’è‚·‚éƒL[i<emphasis>Ž©‘R</emphasis> Œó•âƒL[j
-            ‚ðŒ`¬‚·‚éƒvƒƒpƒeƒB‚¾‚¯‚ð”äŠr‚·‚邱‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B
+            <emphasis>ビジネスキーの等価性</emphasis> を使って、
+            <literal>equals()</literal> と <literal>hashCode()</literal> を実装することをお勧めします。
+            ビジネスキーの等価性とは、<literal>equals()</literal> メソッドが、ビジネスキー、
+            つまり現実の世界においてインスタンスを特定するキー(<emphasis>自然</emphasis> 候補キー)
+            を形成するプロパティだけを比較することを意味します。
         </para>
 
         <programlisting><![CDATA[public class Cat {
@@ -316,39 +318,39 @@
 }]]></programlisting>
 
         <para>
-            ƒrƒWƒlƒXƒL[‚̓f[ƒ^ƒx[ƒX‚ÌŽåƒL[Œó•â‚قLjÀ’è‚Å‚ ‚é•K—v‚Í‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢
-            i<xref linkend="transactions-basics-identity"/> ‚ðŒ©‚Ä‚­‚¾‚³‚¢jB
-            XV•s‰Â‚ȃvƒƒpƒeƒB‚⃆ƒj[ƒN‚ȃvƒƒpƒeƒB‚́A’ʏíƒrƒWƒlƒXƒL[‚Ì‚æ‚¢Œó•â‚Å‚·B
+            ビジネスキーはデータベースの主キー候補ほど安定である必要はないことに注意してください
+            (<xref linkend="transactions-basics-identity"/> を見てください)。
+            更新不可なプロパティやユニークなプロパティは、通常ビジネスキーのよい候補です。
         </para>
 
     </sect1>
 
     <sect1 id="persistent-classes-dynamicmodels">
-        <title>“®“Iƒ‚ƒfƒ‹</title>
+        <title>動的モデル</title>
 
         <para>
-            <emphasis>ˆÈ‰º‚Ì‹@”\‚ÍŒ»ÝŽÀŒ±’iŠK‚É‚ ‚é‚ÆŒ©‚È‚³‚ê‚Ä‚¨‚èA
-            ‹ß‚¢«—ˆ•ÏX‚³‚ê‚é‰Â”\«‚ª‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B</emphasis>
+            <emphasis>以下の機能は現在実験段階にあると見なされており、
+            近い将来変更される可能性があることに注意してください。</emphasis>
         </para>
 
         <para>
-            ‰i‘±ƒGƒ“ƒeƒBƒeƒB‚́A•K‚¸‚µ‚àŽÀsŽž‚ÉPOJOƒNƒ‰ƒX‚âJavaBeanƒIƒuƒWƒFƒNƒg‚Å•\Œ»‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB
-            Hibernate‚́iŽÀsŽž‚É <literal>Map</literal> ‚Ì <literal>Map</literal> ‚ðŽg‚¤j“®“Iƒ‚ƒfƒ‹‚ƁA
-            DOM4JƒcƒŠ[‚Æ‚µ‚ẴGƒ“ƒeƒBƒeƒB‚Ì•\Œ»‚àƒTƒ|[ƒg‚µ‚Ü‚·B
-            ‚±‚̃Aƒvƒ[ƒ`‚ðŽg‚¤‚Ɖi‘±ƒNƒ‰ƒX‚ð‘‚©‚¸Aƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚¾‚¯‚ð‘‚­‚±‚Æ‚É‚È‚è‚Ü‚·B
+            永続エンティティは、必ずしも実行時にPOJOクラスやJavaBeanオブジェクトで表現する必要はありません。
+            Hibernateは(実行時に <literal>Map</literal> の <literal>Map</literal> を使う)動的モデルと、
+            DOM4Jツリーとしてのエンティティの表現もサポートします。
+            このアプローチを使うと永続クラスを書かず、マッピングファイルだけを書くことになります。
         </para>
 
         <para>
-            ƒfƒtƒHƒ‹ƒg‚ł́AHibernate‚͒ʏí‚ÌPOJOƒ‚[ƒh‚Å“®ì‚µ‚Ü‚·B
-            <literal>default_entity_mode</literal> Ý’èƒIƒvƒVƒ‡ƒ“‚ðŽg‚Á‚āA
-            “Á’è‚Ì <literal>SessionFactory</literal> ‚ɑ΂·‚éƒfƒtƒHƒ‹ƒg‚̃Gƒ“ƒeƒBƒeƒB•\Œ»ƒ‚[ƒh‚ðÝ’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·
-            i<xref linkend="configuration-optional-properties"/> ‚ðŒ©‚Ä‚­‚¾‚³‚¢jB
+            デフォルトでは、Hibernateは通常のPOJOモードで動作します。
+            <literal>default_entity_mode</literal> 設定オプションを使って、
+            特定の <literal>SessionFactory</literal> に対するデフォルトのエンティティ表現モードを設定することができます
+            (<xref linkend="configuration-optional-properties"/> を見てください)。
         </para>
 
         <para>
-            ˆÈ‰º‚Ì—á‚Å‚Í <literal>Map</literal> ‚ðŽg‚Á‚½•\Œ»‚ðÐ‰î‚µ‚Ü‚·B
-            ‚Ü‚¸ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ŁAƒNƒ‰ƒX–¼‚Ì‘ã‚í‚è‚Ɂi‚Ü‚½‚Í‚»‚ê‚ɉÁ‚¦‚āj
-            <literal>entity-name</literal> ‚ð’è‹`‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñF
+            以下の例では <literal>Map</literal> を使った表現を紹介します。
+            まずマッピングファイルで、クラス名の代わりに(またはそれに加えて)
+            <literal>entity-name</literal> を定義しなければなりません:
         </para>
 
         <programlisting><![CDATA[<hibernate-mapping>
@@ -386,14 +388,14 @@
 </hibernate-mapping>]]></programlisting>
 
         <para>
-            ŠÖ˜A‚ªƒ^[ƒQƒbƒg‚̃Nƒ‰ƒX–¼‚ðŽg‚Á‚Ä’è‹`‚µ‚Ä‚¢‚½‚Æ‚µ‚Ä‚àA
-            ŠÖ˜A‚̃^[ƒQƒbƒgŒ^‚àPOJO‚Å‚Í‚È‚­“®“I‚ȃGƒ“ƒeƒBƒeƒB‚Å‚à\‚í‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+            関連がターゲットのクラス名を使って定義していたとしても、
+            関連のターゲット型もPOJOではなく動的なエンティティでも構わないことに注意してください。
         </para>
 
         <para>
-            <literal>SessionFactory</literal> ‚ɑ΂µ‚ăfƒtƒHƒ‹ƒg‚̃Gƒ“ƒeƒBƒeƒBƒ‚[ƒh‚ð 
-            <literal>dynamic-map</literal> ‚ɐݒ肵‚½ŒãA
-            ŽÀsŽž‚É <literal>Map</literal> ‚Ì <literal>Map</literal> ‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·F
+            <literal>SessionFactory</literal> に対してデフォルトのエンティティモードを 
+            <literal>dynamic-map</literal> に設定した後、
+            実行時に <literal>Map</literal> の <literal>Map</literal> を使うことができます:
         </para>
 
         <programlisting><![CDATA[Session s = openSession();
@@ -419,15 +421,15 @@
 s.close();]]></programlisting>
 
         <para>
-            “®“I‚ȃ}ƒbƒsƒ“ƒO‚Ì—˜“_‚́AƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒX‚ÌŽÀ‘•‚ð•K—v‚Æ‚µ‚È‚¢‚½‚߁A
-            ƒvƒƒgƒ^ƒCƒsƒ“ƒO‚É—v‚·‚éƒ^[ƒ“ƒAƒ‰ƒEƒ“ƒhƒ^ƒCƒ€‚ª‘‚¢‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
-            ‚µ‚©‚µƒRƒ“ƒpƒCƒ‹Žž‚ÌŒ^ƒ`ƒFƒbƒN‚ª‚È‚¢‚̂ŁAŽÀsŽž‚É”ñí‚É‘½‚­‚Ì—áŠOˆ—‚ðˆµ‚í‚È‚¯‚ê‚΂Ȃç‚È‚¢‚Å‚µ‚傤B
-            Hibernateƒ}ƒbƒsƒ“ƒO‚Ì‚¨‚©‚°‚ŁAƒf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚Í—eˆÕ‚ɐ³‹K‰»‚Å‚«AŒ’‘S‚É‚È‚èA
-            Œã‚Å“KØ‚ȃhƒƒCƒ“ƒ‚ƒfƒ‹‚ÌŽÀ‘•‚ð’ljÁ‚·‚邱‚Æ‚ª‰Â”\‚É‚È‚è‚Ü‚·B
+            動的なマッピングの利点は、エンティティクラスの実装を必要としないため、
+            プロトタイピングに要するターンアラウンドタイムが早いということです。
+            しかしコンパイル時の型チェックがないので、実行時に非常に多くの例外処理を扱わなければならないでしょう。
+            Hibernateマッピングのおかげで、データベーススキーマは容易に正規化でき、健全になり、
+            後で適切なドメインモデルの実装を追加することが可能になります。
         </para>
 
         <para>
-            ƒGƒ“ƒeƒBƒeƒB•\Œ»ƒ‚[ƒh‚Í <literal>Session</literal> ‚²‚Ƃɐݒ肷‚邱‚Æ‚à‰Â”\‚Å‚·B
+            エンティティ表現モードは <literal>Session</literal> ごとに設定することも可能です。
         </para>
 
         <programlisting><![CDATA[Session dynamicSession = pojoSession.getSession(EntityMode.MAP);
@@ -445,18 +447,18 @@
 
 
         <para>
-            <literal>EntityMode</literal> ‚ðŽg‚Á‚½ <literal>getSession()</literal> 
-            ‚̌Ăяo‚µ‚Í <literal>SessionFactory</literal> ‚Å‚Í‚È‚­ <literal>Session</literal> 
-            API‚É‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-            ‚»‚Ì•û–@‚ł́AV‚µ‚¢ <literal>Session</literal> ‚́Aƒx[ƒX‚Æ‚È‚éJDBCƒRƒlƒNƒVƒ‡ƒ“A
-            ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“A‚»‚Ì‘¼‚̃Rƒ“ƒeƒLƒXƒgî•ñ‚ð‹¤—L‚µ‚Ü‚·B
-            ‚±‚ê‚Í2”Ô–Ú‚Ì <literal>Session</literal> ‚Å‚Í <literal>flush()</literal> ‚Æ <literal>close()</literal> 
-            ‚ðŒÄ‚Ô•K—v‚ª‚È‚¢‚Æ‚¢‚¤‚±‚ƁA‚»‚Ì‚½‚߃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ƃRƒlƒNƒVƒ‡ƒ“‚ÌŠÇ—‚ð
-            1”Ԗڂ̍ì‹Æ’PˆÊ(Unit of Work)‚É”C‚¹‚邱‚Æ‚ª‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
+            <literal>EntityMode</literal> を使った <literal>getSession()</literal> 
+            の呼び出しは <literal>SessionFactory</literal> ではなく <literal>Session</literal> 
+            APIにあることに注意してください。
+            その方法では、新しい <literal>Session</literal> は、ベースとなるJDBCコネクション、
+            トランザクション、その他のコンテキスト情報を共有します。
+            これは2番目の <literal>Session</literal> では <literal>flush()</literal> と <literal>close()</literal> 
+            を呼ぶ必要がないということ、そのためトランザクションとコネクションの管理を
+            1番目の作業単位(Unit of Work)に任せることができるということです。
         </para>
 
         <para>
-            XML•\Œ»‚Ì”\—͂ɂ‚¢‚Ä‚Ì‚³‚ç‚È‚éî•ñ‚Í <xref linkend="xml"/> ‚ÅŒ©‚‚©‚è‚Ü‚·B
+            XML表現の能力についてのさらなる情報は <xref linkend="xml"/> で見つかります。
         </para>
 
     </sect1>
@@ -465,30 +467,30 @@
         <title>Tuplizer</title>
 
         <para>
-            <literal>org.hibernate.tuple.Tuplizer</literal> ‚Æ‚»‚̃TƒuƒCƒ“ƒ^[ƒtƒFƒCƒX‚́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
-            —Ⴆ‚ÎPOJOƒGƒ“ƒeƒBƒeƒBƒ‚[ƒh‚ł́A‘Ήž‚·‚éTuplizer‚̓Rƒ“ƒXƒgƒ‰ƒNƒ^‚ð’Ê‚µ‚āA
-            POJO‚ð‚ǂ̂悤‚ɍ쐬‚·‚é‚©A’è‹`‚³‚ꂽƒvƒƒpƒeƒBƒAƒNƒZƒT‚ðŽg‚¢A
-            POJOƒvƒƒpƒeƒB‚ɂǂ̂悤‚ɃAƒNƒZƒX‚·‚é‚©‚ð’m‚è‚Ü‚·B
-            Tuplizer‚É‚Í“ñ‚‚̃nƒCƒŒƒxƒ‹‚ÌŒ^‚ª‚ ‚è‚Ü‚·B
-            ‚»‚ê‚ç‚́A<literal>org.hibernate.tuple.EntityTuplizer</literal> ‚Æ 
-            <literal>org.hibernate.tuple.ComponentTuplizer</literal> ƒCƒ“ƒ^[ƒtƒFƒCƒX‚Å•\Œ»‚³‚ê‚Ü‚·B
-            <literal>EntityTuplizer</literal> ‚͏ã‚ŏq‚ׂ½‚悤‚ȃGƒ“ƒeƒBƒeƒB‚ÉŠÖ‚·‚éŒ_–ñ‚ÌŠÇ—‚ɐӔC‚ðŽ‚¿‚Ü‚·B
-            ˆê•ûA<literal>ComponentTuplizer</literal> ‚̓Rƒ“ƒ|[ƒlƒ“ƒg‚ÉŠÖ‚·‚éŒ_–ñ‚ÌŠÇ—‚ɐӔC‚ðŽ‚¿‚Ü‚·B
+            <literal>org.hibernate.tuple.Tuplizer</literal> とそのサブインターフェイスは、
+            表現の <literal>org.hibernate.EntityMode</literal> を利用して、
+            データ断片のある表現の管理に責任を持ちます。
+            与えられたデータ断片をデータ構造として考えるなら、Tuplizerはそのようなデータ構造を
+            どのように作成するかを知り、そのようなデータ構造からどのように値を抽出し、
+            注入するかを知っています。
+            例えばPOJOエンティティモードでは、対応するTuplizerはコンストラクタを通して、
+            POJOをどのように作成するか、定義されたプロパティアクセサを使い、
+            POJOプロパティにどのようにアクセスするかを知ります。
+            Tuplizerには二つのハイレベルの型があります。
+            それらは、<literal>org.hibernate.tuple.EntityTuplizer</literal> と 
+            <literal>org.hibernate.tuple.ComponentTuplizer</literal> インターフェイスで表現されます。
+            <literal>EntityTuplizer</literal> は上で述べたようなエンティティに関する契約の管理に責任を持ちます。
+            一方、<literal>ComponentTuplizer</literal> はコンポーネントに関する契約の管理に責任を持ちます。
         </para>
 
         <para>
-            ƒ†[ƒU‚Í“ÆŽ©‚ÌTuplizer‚ɍ·‚µ‘Ö‚¦‚邱‚Æ‚à‰Â”\‚Å‚·B
-            ‚¨‚»‚ç‚­dynamic-map entity-mode‚ÌÛ‚É <literal>java.util.HashMap</literal> ‚ðŽg‚¤‚Ì‚Å‚Í‚È‚­A
-            <literal>java.util.Map</literal> ‚ÌŽÀ‘•‚ª•K—v‚Å‚µ‚傤B
-            ‚à‚µ‚­‚́A‚¨‚»‚ç‚­ƒfƒtƒHƒ‹ƒg‚Ì‚à‚Ì‚Å‚Í‚È‚­A•Ê‚̃vƒƒLƒV¶¬í—ª‚Ì’è‹`‚ª•K—v‚Å‚µ‚傤B
-            —¼ŽÒ‚Æ‚àAƒJƒXƒ^ƒ€‚ÌTuplizerŽÀ‘•‚ð’è‹`‚·‚邱‚Æ‚Å’B¬‚³‚ê‚Ü‚·B
-            Tuplizer‚Ì’è‹`‚́AŠÇ—‚µ‚悤‚Æ‚·‚éƒGƒ“ƒeƒBƒeƒB‚âƒRƒ“ƒ|[ƒlƒ“ƒg‚̃}ƒbƒsƒ“ƒO‚ÉŒ‹‚Ñ•t‚¯‚ç‚ê‚Ü‚·B
-            ŒÚ‹qƒGƒ“ƒeƒBƒeƒB‚Ì—á‚É–ß‚é‚ƁF
+            ユーザは独自のTuplizerに差し替えることも可能です。
+            おそらくdynamic-map entity-modeの際に <literal>java.util.HashMap</literal> を使うのではなく、
+            <literal>java.util.Map</literal> の実装が必要でしょう。
+            もしくは、おそらくデフォルトのものではなく、別のプロキシ生成戦略の定義が必要でしょう。
+            両者とも、カスタムのTuplizer実装を定義することで達成されます。
+            Tuplizerの定義は、管理しようとするエンティティやコンポーネントのマッピングに結び付けられます。
+            顧客エンティティの例に戻ると:
         </para>
 
         <programlisting><![CDATA[<hibernate-mapping>
@@ -531,7 +533,7 @@
     </sect1>
 
     <para>
-        TODO: ƒvƒƒpƒeƒB‚ƃvƒƒLƒVƒpƒbƒP[ƒW‚̃†[ƒUŠg’£ƒtƒŒ[ƒ€ƒ[ƒN‚𕶏‘‰»‚·‚邱‚Æ
+        TODO: プロパティとプロキシパッケージのユーザ拡張フレームワークを文書化すること
     </para>
 
 </chapter>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/preface.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/preface.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/preface.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,145 +1,144 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
-
+<?xml version="1.0" encoding="UTF-8"?>
 <!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>
+        <title>前書き</title>
 
         <para>
-            ¡“ú‚ÌŠé‹ÆŠÂ‹«‚É‚¨‚¢‚āAƒIƒuƒWƒFƒNƒgŽwŒüƒ\ƒtƒgƒEƒFƒA‚ƃŠƒŒ[ƒVƒ‡ƒiƒ‹ƒf[ƒ^ƒx[ƒX‚ÉŠÖ‚í‚éì‹Æ‚Í
-            ”ÏŽG‚Å–c‘å‚ÈŽžŠÔ‚ð•K—v‚Æ‚µ‚Ü‚·B
-            Hibernate‚ÍJavaŠÂ‹«‚̃IƒuƒWƒFƒNƒg/ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ}ƒbƒsƒ“ƒOƒc[ƒ‹‚Å‚·B
-            ƒIƒuƒWƒFƒNƒg/ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ}ƒbƒsƒ“ƒOiORMj‚Ƃ́A
-            ƒIƒuƒWƒFƒNƒgƒ‚ƒfƒ‹‚©‚çSQLƒx[ƒXƒXƒL[ƒ}‚̃ŠƒŒ[ƒVƒ‡ƒiƒ‹ƒf[ƒ^ƒ‚ƒfƒ‹‚ւƁA
-            ƒf[ƒ^•\Œ»‚ðƒ}ƒbƒsƒ“ƒO‚·‚éi‘Ήž•t‚¯‚éj‹Zp‚Ì‚±‚Æ‚Å‚·B
+            今日の企業環境において、オブジェクト指向ソフトウェアとリレーショナルデータベースに関わる作業は
+            煩雑で膨大な時間を必要とします。
+            HibernateはJava環境のオブジェクト/リレーショナルマッピングツールです。
+            オブジェクト/リレーショナルマッピング(ORM)とは、
+            オブジェクトモデルからSQLベーススキーマのリレーショナルデータモデルへと、
+            データ表現をマッピングする(対応付ける)技術のことです。
         </para>
 
         <para>
-            Hibernate‚ÍJavaƒNƒ‰ƒX‚©‚çƒf[ƒ^ƒx[ƒXƒe[ƒuƒ‹‚ցi‚»‚µ‚ÄJavaƒf[ƒ^Œ^‚©‚çSQLƒf[ƒ^Œ^‚ցj
-            ‚̃}ƒbƒsƒ“ƒO‚ðˆ—‚·‚邾‚¯‚Å‚Í‚È‚­Aƒf[ƒ^‚̃NƒGƒŠ‚Æ•œŒ³‚ÌŽd‘g‚Ý‚à’ñ‹Ÿ‚µ‚Ü‚·B
-            ‚±‚Ì‚¨‚©‚°‚ÅSQL‚ÆJDBC‚ðŽg‚Á‚½Žèì‹Æ‚ł̃f[ƒ^ˆ—‚É”ï‚₳‚ê‚Ä‚¢‚½ŠJ”­ŽžŠÔ‚ð‘啝‚ɍ팸‚Å‚«‚Ü‚·B
+            HibernateはJavaクラスからデータベーステーブルへ(そしてJavaデータ型からSQLデータ型へ)
+            のマッピングを処理するだけではなく、データのクエリと復元の仕組みも提供します。
+            このおかげでSQLとJDBCを使った手作業でのデータ処理に費やされていた開発時間を大幅に削減できます。
         </para>
 
         <para>
-            Hibernate‚̍ŏI–Ú•W‚́Aƒf[ƒ^‚̉i‘±‰»‚ÉŠÖ‚í‚éˆê”Ê“I‚ȃvƒƒOƒ‰ƒ~ƒ“ƒOì‹Æ‚Ì95“‚©‚çŠJ”­ŽÒ‚ð‰ð•ú‚·‚邱‚Æ‚Å‚·B
-            Hibernate‚̓rƒWƒlƒXƒƒWƒbƒN‚ÌŽÀ‘•‚ɃXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚ðŽg‚¤
-            ƒf[ƒ^’†SƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ɑ΂µ‚ẴxƒXƒgƒ\ƒŠƒ…[ƒVƒ‡ƒ“‚Å‚ ‚é‚É—¯‚Ü‚è‚Ü‚¹‚ñB
-            ƒIƒuƒWƒFƒNƒgŽwŒüƒhƒƒCƒ“ƒ‚ƒfƒ‹‚ÆJavaƒx[ƒX‚Ì’†ŠÔ‘w‚ł̃rƒWƒlƒXƒƒWƒbƒN‚ɑ΂µ‚čłà–ð‚É—§‚¿‚Ü‚·B
-            ‚µ‚©‚µHibernate‚̓xƒ“ƒ_ŒÅ—L‚ÌSQLƒR[ƒh‚ðíŒ¸‚Ü‚½‚̓JƒvƒZƒ‹‰»‚µ‚½‚èA
-            •\Œ`Ž®‚©‚çƒIƒuƒWƒFƒNƒg‚̃Oƒ‰ƒt‚ւƃŠƒUƒ‹ƒgƒZƒbƒg‚ð•ÏŠ·‚·‚é‚Ȃǂ́A
-            ˆê”Ê“I‚ȃ^ƒXƒN‚É‚à–𗧂‚łµ‚傤B
+            Hibernateの最終目標は、データの永続化に関わる一般的なプログラミング作業の95%から開発者を解放することです。
+            Hibernateはビジネスロジックの実装にストアドプロシージャを使う
+            データ中心アプリケーションに対してのベストソリューションであるに留まりません。
+            オブジェクト指向ドメインモデルとJavaベースの中間層でのビジネスロジックに対して最も役に立ちます。
+            しかしHibernateはベンダ固有のSQLコードを削減またはカプセル化したり、
+            表形式からオブジェクトのグラフへとリザルトセットを変換するなどの、
+            一般的なタスクにも役立つでしょう。
         </para>
 
         <para>
-            Hibernate‚âƒIƒuƒWƒFƒNƒg/ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ}ƒbƒsƒ“ƒOA
-            ‚³‚ç‚É‚ÍJava‚ª‰‚ß‚Ä‚Ì•û‚́AˆÈ‰º‚̃Xƒeƒbƒv‚ɏ]‚Á‚Ä‚­‚¾‚³‚¢F
+            Hibernateやオブジェクト/リレーショナルマッピング、
+            さらにはJavaが初めての方は、以下のステップに従ってください:
         </para>
 
         <orderedlist>
             <listitem>
                 <para>
-                    <xref linkend="tutorial"/> ‚ð“Ç‚ñ‚Å‚­‚¾‚³‚¢B
-                    ’iŠK“I‚ɉðà‚µ‚Ä‚¢‚«‚Ü‚·B
-                    ƒ`ƒ…[ƒgƒŠƒAƒ‹‚̃\[ƒXƒR[ƒh‚̓fƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚Ì
-                    <literal>doc/reference/tutorial</literal> ƒfƒBƒŒƒNƒgƒŠ‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B
+                    <xref linkend="tutorial"/> を読んでください。
+                    段階的に解説していきます。
+                    チュートリアルのソースコードはディストリビューションの
+                    <literal>doc/reference/tutorial</literal> ディレクトリに含まれています。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <xref linkend="architecture"/> ‚ð“Ç‚ñ‚ŁAHibernate‚ª—˜—p‰Â”\‚Ȋ‹«‚ð—‰ð‚µ‚Ä‚­‚¾‚³‚¢B
+                    <xref linkend="architecture"/> を読んで、Hibernateが利用可能な環境を理解してください。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    HibernateƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚Ì <literal>eg/</literal> ƒfƒBƒŒƒNƒgƒŠ‚ðŒ©‚Ä‚­‚¾‚³‚¢B
-                    ŠÈ’P‚ȃXƒ^ƒ“ƒhƒAƒ[ƒ“‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ª‚ ‚è‚Ü‚·B
-                    JDBCƒhƒ‰ƒCƒo‚ð <literal>lib/</literal> ƒfƒBƒŒƒNƒgƒŠ‚ɃRƒs[‚µ‚āA
-                    Ž©•ª‚̃f[ƒ^ƒx[ƒX‚ɍ‡‚¤³‚µ‚¢’l‚ðŽw’è‚·‚é‚悤‚É <literal>etc/hibernate.properties</literal>
-                    ‚ð•ÒW‚µ‚Ä‚­‚¾‚³‚¢B
-                    ƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“ƒfƒBƒŒƒNƒgƒŠ‚©‚çAƒRƒ}ƒ“ƒhƒvƒƒ“ƒvƒg‚Å
-                     <literal>ant eg</literal> ‚ƃ^ƒCƒv‚µ‚Ä‚­‚¾‚³‚¢iAnt‚ðŽg‚¢‚Ü‚·jB
-                    ‚Ü‚½WindowsŠÂ‹«‚Å‚Í <literal>build eg</literal> ‚ƃ^ƒCƒv‚µ‚Ä‚­‚¾‚³‚¢B
+                    Hibernateディストリビューションの <literal>eg/</literal> ディレクトリを見てください。
+                    簡単なスタンドアローンのアプリケーションがあります。
+                    JDBCドライバを <literal>lib/</literal> ディレクトリにコピーして、
+                    自分のデータベースに合う正しい値を指定するように <literal>etc/hibernate.properties</literal>
+                    を編集してください。
+                    ディストリビューションディレクトリから、コマンドプロンプトで
+                     <literal>ant eg</literal> とタイプしてください(Antを使います)。
+                    またWindows環境では <literal>build eg</literal> とタイプしてください。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    ‚±‚̃Šƒtƒ@ƒŒƒ“ƒXƒhƒLƒ…ƒƒ“ƒg‚ð‘æˆê‚̏î•ñŒ¹‚Æ‚µ‚Ä—˜—p‚µ‚Ä‚­‚¾‚³‚¢B
-                    ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ÝŒv‚ɂ‚¢‚Ä‚Ì‚³‚ç‚È‚éî•ñ‚â’iŠK“I‚ȃ`ƒ…[ƒgƒŠƒAƒ‹‚ð’T‚µ‚Ä‚¢‚é‚È‚çA
-                    <emphasis>Java Persistence with Hibernate</emphasis>ihttp://www.manning.com/bauer2j
-                    ‚ð‚¨‚·‚·‚ß‚µ‚Ü‚·B
-                    ‚Ü‚½http://caveatemptor.hibernate.org‚©‚ç
-                    Java Persistence with Hibernate‚Ì—á‘è‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ðƒ_ƒEƒ“ƒ[ƒh‚Å‚«‚Ü‚·B
+                    このリファレンスドキュメントを第一の情報源として利用してください。
+                    アプリケーション設計についてのさらなる情報や段階的なチュートリアルを探しているなら、
+                    <emphasis>Java Persistence with Hibernate</emphasis>(http://www.manning.com/bauer2)
+                    をおすすめします。
+                    またhttp://caveatemptor.hibernate.orgから
+                    Java Persistence with Hibernateの例題のアプリケーションをダウンロードできます。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    FAQ‚ÍHibernateƒEƒFƒuƒTƒCƒg‚É‚ ‚è‚Ü‚·B
+                    FAQはHibernateウェブサイトにあります。
                 </para>
             </listitem>
 			<listitem>
                 <para>
-                    ƒT[ƒhƒp[ƒeƒB‚̃fƒ‚A—áAƒ`ƒ…[ƒgƒŠƒAƒ‹‚ÍHibernateƒEƒFƒuƒTƒCƒg‚ɃŠƒ“ƒN‚ª‚ ‚è‚Ü‚·B
+                    サードパーティのデモ、例、チュートリアルはHibernateウェブサイトにリンクがあります。
                 </para>
 			</listitem>
             <listitem>
                 <para>
-                    HibernateƒEƒFƒuƒTƒCƒg‚̃Rƒ~ƒ…ƒjƒeƒBƒGƒŠƒA‚́AƒfƒUƒCƒ“ƒpƒ^[ƒ“‚₳‚Ü‚´‚Ü‚È“‡ƒ\ƒŠƒ…[ƒVƒ‡ƒ“
-                    iTomcat, JBoss AS, Struts, EJB, “™j‚ɂ‚¢‚Ä‚Ì‚æ‚¢î•ñŒ¹‚Å‚·B
+                    Hibernateウェブサイトのコミュニティエリアは、デザインパターンやさまざまな統合ソリューション
+                    (Tomcat, JBoss AS, Struts, EJB, 等)についてのよい情報源です。
                 </para>
             </listitem>
          </orderedlist>
 
          <para>
-             Ž¿–₪‚ ‚ê‚ÎHibernateƒEƒFƒuƒTƒCƒg‚̃†[ƒUƒtƒH[ƒ‰ƒ€‚ðŠˆ—p‚µ‚Ä‚­‚¾‚³‚¢B
-             ‚Ü‚½ƒoƒOƒŒƒ|[ƒg‚ƃtƒB[ƒ`ƒƒƒŠƒNƒGƒXƒg‚Ì‚½‚ßJIRA‰Û‘è’ǐՃVƒXƒeƒ€‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚·B
-             Hibernate‚ÌŠJ”­‚É‹»–¡‚ª‚ ‚ê‚΁AŠJ”­ŽÒƒ[ƒŠƒ“ƒOƒŠƒXƒg‚ÉŽQ‰Á‚µ‚Ä‚­‚¾‚³‚¢B
-             ‚±‚̃hƒLƒ…ƒƒ“ƒg‚ð‚ ‚È‚½‚̍‘‚ÌŒ¾—t‚É–|–󂵂½‚¢ê‡‚́A
-             ŠJ”­ŽÒƒ[ƒŠƒ“ƒOƒŠƒXƒg‚ÅŽ„‚½‚¿‚ɃRƒ“ƒ^ƒNƒg‚ðŽæ‚Á‚Ä‚­‚¾‚³‚¢B
+             質問があればHibernateウェブサイトのユーザフォーラムを活用してください。
+             またバグレポートとフィーチャリクエストのためJIRA課題追跡システムを用意しています。
+             Hibernateの開発に興味があれば、開発者メーリングリストに参加してください。
+             このドキュメントをあなたの国の言葉に翻訳したい場合は、
+             開発者メーリングリストで私たちにコンタクトを取ってください。
          </para>
 
          <para>
-             ¤—pŠJ”­‚̃Tƒ|[ƒgA»•i‚̃Tƒ|[ƒgAHibernate‚̃gƒŒ[ƒjƒ“ƒO‚ÍJBoss Inc.‚ª’ñ‹Ÿ‚µ‚Ä‚¢‚Ü‚·
-             ihttp://www.hibernate.org/SupportTraining/‚ðŒ©‚Ä‚­‚¾‚³‚¢jB
-             Hibernate‚ÍProfessional Open SourceƒvƒƒWƒFƒNƒgA
-             ‚»‚µ‚ÄJBoss Enterprise Middleware SystemiJEMSjƒvƒƒ_ƒNƒgƒXƒC[ƒg‚̃NƒŠƒeƒBƒJƒ‹ƒRƒ“ƒ|[ƒlƒ“ƒg‚Å‚·B
+             商用開発のサポート、製品のサポート、HibernateのトレーニングはJBoss Inc.が提供しています
+             (http://www.hibernate.org/SupportTraining/を見てください)。
+             HibernateはProfessional Open Sourceプロジェクト、
+             そしてJBoss Enterprise Middleware System(JEMS)プロダクトスイートのクリティカルコンポーネントです。
          </para>
 <!--
            <sect1 id="preface-s1" revision="-1">
 
-               <title>“ú–{Œê–ó‚ɂ‚¢‚Ä</title>
+               <title>日本語訳について</title>
 
                <para id="preface-s1-p1" revision="-1">
-                   ‚±‚Ì“ú–{Œê”ÅHibernate Reference DocumentiˆÈ‰ºA“ú–{Œê”Łj‚́A
-                   HibernateƒvƒƒWƒFƒNƒg‚Ì–|–óƒvƒƒZƒX‚ÉŠî‚¢‚č쐬‚³‚ê‚Ä‚¢‚Ü‚·B
-                   “ú–{Œê”Å‚È‚ç‚Ñ‚ÉŒ´•¶‚ÍLGPLƒ‰ƒCƒZƒ“ƒX‚ɏ€‚¶‚Ü‚·B
+                   この日本語版Hibernate Reference Document(以下、日本語版)は、
+                   Hibernateプロジェクトの翻訳プロセスに基づいて作成されています。
+                   日本語版ならびに原文はLGPLライセンスに準じます。
                </para>
 
                <para id="preface-s1-p2" revision="-1">
-                   “ú–{Œê”Å‚Ì—˜—p‚É‚æ‚Á‚Ä‘æŽOŽÒ‚ª”í‚é‚ ‚ç‚ä‚é•s—˜‰v‚ɑ΂µ‚āA
-                   Œ´’˜ŽÒA–|–óŽÒ‚È‚ç‚Ñ‚É‚»‚Ì‘gD‚͈êØ‚Ì•ÛØ‚ð‚¢‚½‚µ‚©‚Ë‚Ü‚·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>
+                   <title>日本語版翻訳者について</title>
 
                    <para id="preface-s1-1-p4" revision="-1">
-                       “ú–{Œê”Ńo[ƒWƒ‡ƒ“3.2 cr3‚Ì–|–ó‚ÍŠ”Ž®‰ïŽÐƒGƒNƒT
-                       i<ulink url="http://www.exa-corp.co.jp">ƒz[ƒ€ƒy[ƒW‚Í‚±‚¿‚ç</ulink>j
-                       ‚̈ȉº‚̃ƒ“ƒo[‚ōs‚¢‚Ü‚µ‚½B
-                       –{ŠÔ—́i6,18,19,21,22,23Í’S“–jA
-                       LŒË—T‰îi‘O‘‚«,2,5,13,14,24,25Í’S“–jA
-                       •Žs³li7,8,9,10Í’S“–jA
-                       “ߐ{G’ji12,16,17Í’S“–jA
-                       ˆäŠÖ’m•¶i1,3,11Í’S“–jA
-                       ”Ñ“c_Žii4,15Í’S“–jA
-                       •½ŠÔŒ’ˆêi20Í’S“–jA
-                       X—´“ñiƒŒƒrƒ…[’S“–jB
-                       ‚È‚¨Œë–ó“™‚Ì‚²Žw“E‚Í–{ŠÔALŒË‚Ü‚Å‚¨Šè‚¢‚¢‚½‚µ‚Ü‚·B
+                       日本語版バージョン3.2 cr3の翻訳は株式会社エクサ
+                       (<ulink url="http://www.exa-corp.co.jp">ホームページはこちら</ulink>)
+                       の以下のメンバーで行いました。
+                       本間力(6,18,19,21,22,23章担当)、
+                       広戸裕介(前書き,2,5,13,14,24,25章担当)、
+                       武市正人(7,8,9,10章担当)、
+                       那須秀男(12,16,17章担当)、
+                       井関知文(1,3,11章担当)、
+                       飯田浩司(4,15章担当)、
+                       平間健一(20章担当)、
+                       森龍二(レビュー担当)。
+                       なお誤訳等のご指摘は本間、広戸までお願いいたします。
 
         <mediaobject>
             <imageobject role="fo">
@@ -154,4 +153,4 @@
                </sect2>
            </sect1>
 -->
-    </preface>
\ No newline at end of file
+    </preface>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_criteria.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_criteria.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_criteria.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,18 +1,20 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="querycriteria">
-    <title>CriteriaƒNƒGƒŠ</title>
+    <title>Criteriaクエリ</title>
 
     <para>
-        Hibernate‚ɂ́A’¼Š´“I‚ÅŠg’£‰Â”\‚ÈcriteriaƒNƒGƒŠAPI‚ª—pˆÓ‚³‚ê‚Ä‚¢‚Ü‚·B
+        Hibernateには、直感的で拡張可能なcriteriaクエリAPIが用意されています。
     </para>
     
     <sect1 id="querycriteria-creating">
-        <title> <literal>Criteria</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚̍쐬</title>
+        <title> <literal>Criteria</literal> インスタンスの作成</title>
 
         <para>
             <literal>org.hibernate.Criteria</literal>
-            ƒCƒ“ƒ^[ƒtƒFƒCƒX‚Í“Á’è‚̉i‘±«ƒNƒ‰ƒX‚ɑ΂·‚éƒNƒGƒŠ‚ð•\Œ»‚µ‚Ü‚·B
-            <literal>Session</literal> ‚Í <literal>Criteria</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚̃tƒ@ƒNƒgƒŠ‚Å‚·B
+            インターフェイスは特定の永続性クラスに対するクエリを表現します。
+            <literal>Session</literal> は <literal>Criteria</literal> インスタンスのファクトリです。
         </para>
 
         <programlisting><![CDATA[Criteria crit = sess.createCriteria(Cat.class);
@@ -22,14 +24,14 @@
     </sect1>
      
     <sect1 id="querycriteria-narrowing">
-        <title>ƒŠƒUƒ‹ƒgƒZƒbƒg‚̍iž‚Ý</title>
+        <title>リザルトセットの絞込み</title>
 
         <para>
-            <literal>org.hibernate.criterion.Criterion</literal> ƒCƒ“ƒ^[ƒtƒFƒCƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚́A
-            ŒÂ•Ê‚̃NƒGƒŠƒNƒ‰ƒCƒeƒŠƒIƒ“i–â‚¢‡‚킹‚Ì”»’èŠî€j‚ð•\‚µ‚Ü‚·B
+            <literal>org.hibernate.criterion.Criterion</literal> インターフェイスのインスタンスは、
+            個別のクエリクライテリオン(問い合わせの判定基準)を表します。
             <literal>org.hibernate.criterion.Restrictions</literal>
-            ƒNƒ‰ƒX‚́A‚ ‚é‘g‚ݍž‚Ý‚Ì <literal>Criterion</literal>
-            Œ^‚ðŽæ“¾‚·‚邽‚߂̃tƒ@ƒNƒgƒŠƒƒ\ƒbƒh‚ðŽ‚Á‚Ä‚¢‚Ü‚·B
+            クラスは、ある組み込みの <literal>Criterion</literal>
+            型を取得するためのファクトリメソッドを持っています。
         </para>
 
         <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
@@ -38,7 +40,7 @@
     .list();]]></programlisting>
     
         <para>
-            RestrictioniŒÀ’èj‚́A˜_—“I‚ɃOƒ‹[ƒv‰»‚Å‚«‚Ü‚·B
+            Restriction(限定)は、論理的にグループ化できます。
         </para>
 
         <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
@@ -60,8 +62,8 @@
     .list();]]></programlisting>
     
         <para>
-            Œ³X‚ ‚éCriterionŒ^i<literal>Restrictions</literal> ‚̃TƒuƒNƒ‰ƒXj
-            ‚Í‚©‚È‚è‚͈̔͂ɋy‚Ñ‚Ü‚·‚ªA“Á‚É—L—p‚È‚Ì‚ÍSQL‚𒼐ڎw’è‚Å‚«‚é‚à‚Ì‚Å‚·B
+            元々あるCriterion型(<literal>Restrictions</literal> のサブクラス)
+            はかなりの範囲に及びますが、特に有用なのはSQLを直接指定できるものです。
         </para>
 
         <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
@@ -69,15 +71,15 @@
     .list();]]></programlisting>
     
         <para>
-            <literal>{alias}</literal> ‚Æ‚¢‚¤ƒvƒŒ[ƒXƒzƒ‹ƒ_‚́A
-            –â‚¢‡‚킹‚ðŽó‚¯‚½ƒGƒ“ƒeƒBƒeƒB‚̍s‚Ì•Ê–¼‚É‚æ‚Á‚Ä’u‚«Š·‚¦‚ç‚ê‚Ü‚·B
+            <literal>{alias}</literal> というプレースホルダは、
+            問い合わせを受けたエンティティの行の別名によって置き換えられます。
         </para>
         
         <para>
-            criterion‚𓾂é•Ê‚ÌŽè’i‚́A
-            <literal>Property</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚©‚çŽæ“¾‚·‚邱‚Æ‚Å‚·B
-            <literal>Property.forName()</literal> ‚ðŒÄ‚яo‚µ‚āA
-            <literal>Property</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚ðì¬‚Å‚«‚Ü‚·B
+            criterionを得る別の手段は、
+            <literal>Property</literal> インスタンスから取得することです。
+            <literal>Property.forName()</literal> を呼び出して、
+            <literal>Property</literal> インスタンスを作成できます。
         </para>
     
         <programlisting><![CDATA[
@@ -95,11 +97,11 @@
    </sect1>
      
     <sect1 id="querycriteria-ordering">
-        <title>Œ‹‰Ê‚̐®—ñ</title>
+        <title>結果の整列</title>
 
         <para>
             <literal>org.hibernate.criterion.Order</literal>
-            ‚ðŽg‚Á‚ÄŒ‹‰Ê‚ð•À‚Ñ‘Ö‚¦‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+            を使って結果を並び替えることができます。
         </para>
 
         <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
@@ -119,11 +121,11 @@
     </sect1>
     
     <sect1 id="querycriteria-associations" revision="2">
-        <title>ŠÖ˜A</title>
+        <title>関連</title>
 
         <para>
-            <literal>createCriteria()</literal> ‚ðŽg‚¢AŠÖ˜A‚ðƒiƒrƒQ[ƒg‚·‚邱‚ƂŁA
-            —eˆÕ‚ÉŠÖŒW‚·‚éƒGƒ“ƒeƒBƒeƒB‚ɐ§–ñ‚ðŽw’è‚Å‚«‚Ü‚·B
+            <literal>createCriteria()</literal> を使い、関連をナビゲートすることで、
+            容易に関係するエンティティに制約を指定できます。
         </para>
 
         <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
@@ -133,13 +135,13 @@
     .list();]]></programlisting>
 
         <para>
-            2”Ô–Ú‚Ì <literal>createCriteria()</literal> ‚́A<literal>kittens</literal>
-            ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚ðŽQÆ‚·‚éV‚µ‚¢ <literal>Criteria</literal>
-            ƒCƒ“ƒXƒ^ƒ“ƒX‚ð•Ô‚·‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+            2番目の <literal>createCriteria()</literal> は、<literal>kittens</literal>
+            コレクションの要素を参照する新しい <literal>Criteria</literal>
+            インスタンスを返すことに注意してください。
         </para>
 
         <para>
-            ˆÈ‰º‚̂悤‚È•û–@‚àAó‹µ‚É‚æ‚è—L—p‚Å‚·B
+            以下のような方法も、状況により有用です。
         </para>
 
         <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
@@ -149,17 +151,17 @@
     .list();]]></programlisting>
 
         <para>
-            i<literal>createAlias()</literal> ‚͐V‚µ‚¢
-            <literal>Criteria</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚ðì¬‚µ‚Ü‚¹‚ñBj
+            (<literal>createAlias()</literal> は新しい
+            <literal>Criteria</literal> インスタンスを作成しません。)
         </para>
 
         <para>
-            ‘O‚Ì2‚‚̃NƒGƒŠ‚É‚æ‚Á‚Ä•Ô‚³‚ê‚é <literal>Cat</literal>
-            ƒCƒ“ƒXƒ^ƒ“ƒX‚É‚æ‚Á‚Ä•ÛŽ‚³‚ê‚ékittensƒRƒŒƒNƒVƒ‡ƒ“‚́A
-            criteria‚É‚æ‚Á‚ÄŽ–‘O‚ɃtƒBƒ‹ƒ^ƒŠƒ“ƒO <emphasis>‚³‚ê‚È‚¢</emphasis>
-            ‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-            ‚à‚µcriteria‚É“K‡‚·‚ékitten‚ðŽæ“¾‚µ‚½‚¢‚È‚çA
-            <literal>ResultTransformer</literal> ‚ðŽg‚í‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+            前の2つのクエリによって返される <literal>Cat</literal>
+            インスタンスによって保持されるkittensコレクションは、
+            criteriaによって事前にフィルタリング <emphasis>されない</emphasis>
+            ことに注意してください。
+            もしcriteriaに適合するkittenを取得したいなら、
+            <literal>ResultTransformer</literal> を使わなければなりません。
         </para>
 
         <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
@@ -177,11 +179,11 @@
     </sect1>
     
     <sect1 id="querycriteria-dynamicfetching" revision="1">
-        <title>ŠÖ˜A‚Ì“®“IƒtƒFƒbƒ`</title>
+        <title>関連の動的フェッチ</title>
 
         <para>
-            <literal>setFetchMode()</literal> ‚ðŽg‚¢A
-            ŽÀsŽž‚ÉŠÖ˜A‚Ì•œŒ³•û–@‚ðŽw’肵‚Ä‚à‚æ‚¢‚Å‚·B
+            <literal>setFetchMode()</literal> を使い、
+            実行時に関連の復元方法を指定してもよいです。
         </para>
 
         <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
@@ -191,19 +193,19 @@
     .list();]]></programlisting>
     
         <para>
-            ‚±‚̃NƒGƒŠ‚ÍŠO•”Œ‹‡‚É‚æ‚è <literal>mate</literal> ‚Æ
-            <literal>kittens</literal> ‚Ì—¼•û‚ðƒtƒFƒbƒ`‚µ‚Ü‚·B
-            ‚æ‚葽‚­‚̏î•ñ‚Í <xref linkend="performance-fetching"/> ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+            このクエリは外部結合により <literal>mate</literal> と
+            <literal>kittens</literal> の両方をフェッチします。
+            より多くの情報は <xref linkend="performance-fetching"/> を参照してください。
         </para>
     
     </sect1>
      
     <sect1 id="querycriteria-examples">
-        <title>ƒNƒGƒŠ‚Ì—á</title>
+        <title>クエリの例</title>
 
         <para>
-            <literal>org.hibernate.criterion.Example</literal> ƒNƒ‰ƒX‚́A
-            —^‚¦‚ç‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚©‚çƒNƒGƒŠƒNƒ‰ƒCƒeƒŠƒIƒ“‚ð\’z‚Å‚«‚Ü‚·B
+            <literal>org.hibernate.criterion.Example</literal> クラスは、
+            与えられたインスタンスからクエリクライテリオンを構築できます。
         </para>
 
         <programlisting><![CDATA[Cat cat = new Cat();
@@ -214,13 +216,13 @@
     .list();]]></programlisting>
     
         <para>
-           ƒo[ƒWƒ‡ƒ“ƒvƒƒpƒeƒBAŽ¯•ÊŽqAŠÖ˜A‚Í–³Ž‹‚³‚ê‚Ü‚·B
-           ƒfƒtƒHƒ‹ƒg‚Å‚Ínull’l‚̃vƒƒpƒeƒB‚͏œŠO‚³‚ê‚Ü‚·B
+           バージョンプロパティ、識別子、関連は無視されます。
+           デフォルトではnull値のプロパティは除外されます。
         </para>
 
         <para>
-           ‚ǂ̂悤‚É <literal>Example</literal> ‚ð“K—p‚·‚é‚©
-           ’²®‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+           どのように <literal>Example</literal> を適用するか
+           調整することができます。
         </para>
 
         <programlisting><![CDATA[Example example = Example.create(cat)
@@ -233,7 +235,7 @@
     .list();]]></programlisting>
     
         <para>
-            ŠÖ˜AƒIƒuƒWƒFƒNƒg‚Écriteria‚ðŽw’è‚·‚邽‚߂ɁAExample‚ðŽg‚¤‚±‚Æ‚à‰Â”\‚Å‚·B
+            関連オブジェクトにcriteriaを指定するために、Exampleを使うことも可能です。
         </para>
 
         <programlisting><![CDATA[List results = session.createCriteria(Cat.class)
@@ -245,12 +247,12 @@
     </sect1>
     
     <sect1 id="querycriteria-projection">
-        <title>ŽË‰eAW–ñAƒOƒ‹[ƒv‰»</title>
+        <title>射影、集約、グループ化</title>
         <para>
-            <literal>org.hibernate.criterion.Projections</literal> ƒNƒ‰ƒX‚Í
-            <literal>Projection</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚̃tƒ@ƒNƒgƒŠ‚Å‚·B
-            <literal>setProjection()</literal> ‚ðŒÄ‚яo‚·‚±‚ƂŁA
-            ƒNƒGƒŠ‚Ɏˉe‚ð“K—p‚µ‚Ü‚·B
+            <literal>org.hibernate.criterion.Projections</literal> クラスは
+            <literal>Projection</literal> インスタンスのファクトリです。
+            <literal>setProjection()</literal> を呼び出すことで、
+            クエリに射影を適用します。
         </para>
         
         <programlisting><![CDATA[List results = session.createCriteria(Cat.class)
@@ -268,14 +270,14 @@
     .list();]]></programlisting>
     
         <para>
-            •K—v‚Å‚ ‚Á‚Ä‚àAcriteriaƒNƒGƒŠ‚Ɂugroup byv‚𖾎¦‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB
-            ‚ ‚éŽí‚ÌProjectionŒ^‚Í <emphasis>ƒOƒ‹[ƒv‰»ŽË‰e</emphasis> ‚Æ‚µ‚Ä’è‹`‚³‚êA
-            SQL‚Ì <literal>group by</literal> ß‚É‚àŒ»‚ê‚Ü‚·B
+            必要であっても、criteriaクエリに「group by」を明示する必要はありません。
+            ある種のProjection型は <emphasis>グループ化射影</emphasis> として定義され、
+            SQLの <literal>group by</literal> 節にも現れます。
         </para>
     
         <para>
-            ”CˆÓ‚Ŏˉe‚É•Ê–¼‚ð•t‚¯‚ç‚ê‚邽‚߁AŽË‰e‚³‚ê‚é’l‚Írestriction‚âordering“à‚©‚çŽQÆ‚Å‚«‚Ü‚·B
-            •Ê–¼‚ð‚‚¯‚é‚Q‚‚̈قȂé•û–@‚ðŽ¦‚µ‚Ü‚·B
+            任意で射影に別名を付けられるため、射影される値はrestrictionやordering内から参照できます。
+            別名をつける2つの異なる方法を示します。
         </para>
 
         <programlisting><![CDATA[List results = session.createCriteria(Cat.class)
@@ -289,10 +291,10 @@
     .list();]]></programlisting>
     
         <para>
-            <literal>alias()</literal> ‚Æ <literal>as()</literal> ƒƒ\ƒbƒh‚́A
-            ProjectionƒCƒ“ƒXƒ^ƒ“ƒX‚ð•Ê‚Ì–¼‘O‚Ì <literal>Projection</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚Å
-            ƒ‰ƒbƒv‚·‚邾‚¯‚Å‚·B
-            ƒVƒ‡[ƒgƒJƒbƒg‚Æ‚µ‚āAŽË‰e‚ðŽË‰eƒŠƒXƒg‚ɒljÁ‚·‚éÛ‚ɁA•Ê–¼‚ð‚‚¯‚ç‚ê‚Ü‚·B
+            <literal>alias()</literal> と <literal>as()</literal> メソッドは、
+            Projectionインスタンスを別の名前の <literal>Projection</literal> インスタンスで
+            ラップするだけです。
+            ショートカットとして、射影を射影リストに追加する際に、別名をつけられます。
         </para>
 
        <programlisting><![CDATA[List results = session.createCriteria(Cat.class)
@@ -317,7 +319,7 @@
     .list();]]></programlisting>
     
         <para>
-            ŽË‰e‚ÌŽ®‚É <literal>Property.forName()</literal> ‚àŽg—p‚Å‚«‚Ü‚·B
+            射影の式に <literal>Property.forName()</literal> も使用できます。
         </para>
     
         <programlisting><![CDATA[List results = session.createCriteria(Cat.class)
@@ -339,11 +341,11 @@
     </sect1>
     
     <sect1 id="querycriteria-detachedqueries">
-        <title>ƒNƒGƒŠ‚¨‚æ‚уTƒuƒNƒGƒŠ‚Ì•ª—£</title>
+        <title>クエリおよびサブクエリの分離</title>
         <para>
-            <literal>DetachedCriteria</literal> ƒNƒ‰ƒX‚É‚æ‚èA
-            ƒZƒbƒVƒ‡ƒ“ƒXƒR[ƒvŠO‚ɃNƒGƒŠ‚ðì¬‚Å‚«‚Ü‚·B
-            Œã‚ŁA”CˆÓ‚Ì <literal>Session</literal> ‚ðŽg‚Á‚āAŽÀs‚Å‚«‚Ü‚·B
+            <literal>DetachedCriteria</literal> クラスにより、
+            セッションスコープ外にクエリを作成できます。
+            後で、任意の <literal>Session</literal> を使って、実行できます。
         </para>
         
         <programlisting><![CDATA[DetachedCriteria query = DetachedCriteria.forClass(Cat.class)
@@ -356,9 +358,9 @@
 session.close();]]></programlisting>
 
         <para>
-            <literal>DetachedCriteria</literal> ‚́AƒTƒuƒNƒGƒŠ‚ð•\Œ»‚·‚邽‚ß‚É‚àŽg‚¦‚Ü‚·B
-            ƒTƒuƒNƒGƒŠ‚𔺂¤CriterionƒCƒ“ƒXƒ^ƒ“ƒX‚́A
-            <literal>Subqueries</literal> ‚à‚µ‚­‚Í <literal>Property</literal> ‚©‚瓾‚ç‚ê‚Ü‚·B
+            <literal>DetachedCriteria</literal> は、サブクエリを表現するためにも使えます。
+            サブクエリを伴うCriterionインスタンスは、
+            <literal>Subqueries</literal> もしくは <literal>Property</literal> から得られます。
         </para>
         
         <programlisting><![CDATA[DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)
@@ -374,7 +376,7 @@
     .list();]]></programlisting>
     
         <para>
-            ‘ŠŒÝŠÖŒW‚ª‚ ‚éƒTƒuƒNƒGƒŠ‚Å‚³‚¦‚à‰Â”\‚Å‚·B
+            相互関係があるサブクエリでさえも可能です。
         </para>
         
         <programlisting><![CDATA[DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat.class, "cat2")
@@ -391,23 +393,23 @@
                   could also be explained. -->
                
     <sect1 id="query-criteria-naturalid">
-        <title>Ž©‘RŽ¯•ÊŽq‚É‚æ‚éƒNƒGƒŠ</title>
+        <title>自然識別子によるクエリ</title>
         
         <para>
-            criteriaƒNƒGƒŠ‚ðŠÜ‚Þ‚½‚¢‚Ä‚¢‚̃NƒGƒŠ‚É‚Æ‚Á‚āA
-            ƒNƒGƒŠƒLƒƒƒbƒVƒ…‚Í‚ ‚Ü‚èŒø—¦‚ª‚æ‚­‚È‚¢‚Å‚·B
-            ‚È‚º‚È‚çAƒNƒGƒŠƒLƒƒƒbƒVƒ…‚ª•p”É‚É–³Œø‚ɂȂ邽‚ß‚Å‚·B
-            ‚µ‚©‚µ‚È‚ª‚çAƒLƒƒƒbƒVƒ…‚𖳌ø‚É‚·‚éƒAƒ‹ƒSƒŠƒYƒ€‚ðÅ“K‰»‚Å‚«‚é
-            “Á•Ê‚ȃNƒGƒŠ‚ÌŽí—Þ‚ª‚P‚‚ ‚è‚Ü‚·B
-            XV‚³‚ê‚È‚¢Ž©‘RƒL[‚É‚æ‚錟õ‚Å‚·B
-            ‚¢‚­‚‚©‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ł́A‚±‚ÌŽí—ނ̃NƒGƒŠ‚ª•p”É‚ÉŒ»‚ê‚Ü‚·B
-            ‚±‚̂悤‚ÈŽg‚í‚ê•û‚Ì‚½‚߂ɁAcriteria API‚Í“Á•Ê‚ȑ΍ô‚ð’ñ‹Ÿ‚µ‚Ü‚·B
+            criteriaクエリを含むたいていのクエリにとって、
+            クエリキャッシュはあまり効率がよくないです。
+            なぜなら、クエリキャッシュが頻繁に無効になるためです。
+            しかしながら、キャッシュを無効にするアルゴリズムを最適化できる
+            特別なクエリの種類が1つあります。
+            更新されない自然キーによる検索です。
+            いくつかのアプリケーションでは、この種類のクエリが頻繁に現れます。
+            このような使われ方のために、criteria APIは特別な対策を提供します。
         </para>
         
         <para>
-            Å‰‚ɁA<literal>&lt;natural-id&gt;</literal> ‚ðŽg‚Á‚āA
-            ƒGƒ“ƒeƒBƒeƒB‚ÌŽ©‘RƒL[‚ðƒ}ƒbƒv‚µ‚Ä‚­‚¾‚³‚¢B
-            ‚»‚µ‚āA“ñŽŸƒLƒƒƒbƒVƒ…‚ð—LŒø‚É‚µ‚Ü‚·B
+            最初に、<literal>&lt;natural-id&gt;</literal> を使って、
+            エンティティの自然キーをマップしてください。
+            そして、二次キャッシュを有効にします。
         </para>
 
         <programlisting><![CDATA[<class name="User">
@@ -423,17 +425,17 @@
 </class>]]></programlisting>
     
         <para>
-            ’ˆÓF <emphasis>•ÏX‚³‚ê‚é</emphasis> Ž©‘RƒL[‚ðŽ‚ÂƒGƒ“ƒeƒBƒeƒB‚É
-            ‚±‚Ì‹@”\‚ðŽg‚¤‚̂́AˆÓ}‚³‚ê‚Ä‚¢‚È‚¢Žg‚¢•û‚Å‚·B
+            注意: <emphasis>変更される</emphasis> 自然キーを持つエンティティに
+            この機能を使うのは、意図されていない使い方です。
         </para>
         
         <para>
-            ŽŸ‚ɁAHibernateƒNƒGƒŠƒLƒƒƒbƒVƒ…‚ð—LŒø‚É‚µ‚Ü‚·B
+            次に、Hibernateクエリキャッシュを有効にします。
         </para>
         
         <para>
-            ‚±‚ê‚ŁA<literal>Restrictions.naturalId()</literal> ‚É‚æ‚èA
-            ‚æ‚èŒø—¦“I‚ȃLƒƒƒbƒVƒ…ƒAƒ‹ƒSƒŠƒYƒ€‚ðŽg—p‚Å‚«‚Ü‚·B
+            これで、<literal>Restrictions.naturalId()</literal> により、
+            より効率的なキャッシュアルゴリズムを使用できます。
         </para>
        
         <programlisting><![CDATA[session.createCriteria(User.class)

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_hql.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_hql.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_hql.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,87 +1,89 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="queryhql">
     <title>HQL: The Hibernate Query Language</title>
     
     <para>
-        Hibernate‚ÍSQL‚É”ñí‚É‚æ‚­Ž—‚½(ˆÓ}“I‚ÉŽ—‚¹‚½)‹­—Í‚È–â‚¢‡‚킹Œ¾Œê‚ð”õ‚¦‚Ä‚¢‚Ü‚·B
-        ‚µ‚©‚µSQL‚ÉŽ—‚½\•¶‚ɘf‚킳‚ê‚È‚¢‚Å‚­‚¾‚³‚¢BHQL‚ÍŠ®‘S‚ɃIƒuƒWƒFƒNƒgŽwŒü‚Å‚ ‚èA
-        Œp³Aƒ|ƒŠƒ‚[ƒtƒBƒYƒ€AŠÖ˜A‚Æ‚¢‚Á‚½ŠT”O‚ð—‰ð‚µ‚Ü‚·B
+        HibernateはSQLに非常によく似た(意図的に似せた)強力な問い合わせ言語を備えています。
+        しかしSQLに似た構文に惑わされないでください。HQLは完全にオブジェクト指向であり、
+        継承、ポリモーフィズム、関連といった概念を理解します。
     </para>
 
     <sect1 id="queryhql-casesensitivity">
-        <title>‘啶Žš‚Ə¬•¶Žš‚Ì‹æ•Ê</title>
+        <title>大文字と小文字の区別</title>
 
         <para>
-            ƒNƒGƒŠ‚ÍJava‚̃Nƒ‰ƒX–¼‚ƃvƒƒpƒeƒB–¼‚ðœ‚¢‚đ啶Žš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
+            クエリはJavaのクラス名とプロパティ名を除いて大文字、小文字を区別しません。
+            従って <literal>SeLeCT</literal> は
+            <literal>sELEct</literal> と同じで、かつ
+            <literal>SELECT</literal> とも同じですが
+            <literal>net.sf.hibernate.eg.FOO</literal> は
+            <literal>net.sf.hibernate.eg.Foo</literal> とは違い、かつ
+            <literal>foo.barSet</literal> は
+            <literal>foo.BARSET</literal> とも違います。
         </para>
         
         <para>
-            ‚±‚̃}ƒjƒ…ƒAƒ‹‚ł͏¬•¶Žš‚ÌHQLƒL[ƒ[ƒh‚ðŽg—p‚µ‚Ü‚·B
-            ‘啶Žš‚̃L[ƒ[ƒh‚̃NƒGƒŠ‚Ì•û‚ª“Ç‚Ý‚â‚·‚¢‚ÆŠ´‚¶‚郆[ƒU[‚à‚¢‚é‚ÆŽv‚¢‚Ü‚·B
-            ‚Å‚·‚ªAJavaƒR[ƒh“à‚É–„‚ߍž‚܂ꂽ‚Æ‚«‚É‚ÍŒ©‚Â炢‚ÆŽv‚¢‚Ü‚·B
+            このマニュアルでは小文字のHQLキーワードを使用します。
+            大文字のキーワードのクエリの方が読みやすいと感じるユーザーもいると思います。
+            ですが、Javaコード内に埋め込まれたときには見づらいと思います。
         </para>
         
     </sect1>
 
     <sect1 id="queryhql-from">
-        <title>fromß</title>
+        <title>from節</title>
 
         <para>
-            ‚à‚Á‚Æ‚à’Pƒ‚ÈHibernateƒNƒGƒŠ‚ÍŽŸ‚ÌŒ`Ž®‚Å‚·B
+            もっとも単純なHibernateクエリは次の形式です。
         </para>
         
         <programlisting><![CDATA[from eg.Cat]]></programlisting>
         
         <para>
-            ‚±‚ê‚Í’Pƒ‚Ɂ@<literal>eg.Cat</literal>@ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð‚·‚×‚Ä•Ô‚µ‚Ü‚·B
-            •K‚¸‚µ‚àƒNƒ‰ƒX–¼‚ðCü‚·‚éiƒNƒ‰ƒX‚ɃpƒbƒP[ƒW–¼‚ð•t‚¯‚éj•K—v‚Í‚ ‚è‚Ü‚¹‚ñB
-            ‚Æ‚¢‚¤‚Ì‚àA<literal>auto-import</literal> ‚ªƒfƒtƒHƒ‹ƒg‚É‚È‚Á‚Ä‚¢‚é‚©‚ç‚Å‚·B
-            ‚»‚Ì‚½‚ß‚Ù‚Æ‚ñ‚ǂ̏ꍇA‚±‚̂悤‚ɏ‘‚­‚¾‚¯‚ŏ\•ª‚Å‚·B
+            これは単純に <literal>eg.Cat</literal> クラスのインスタンスをすべて返します。
+            必ずしもクラス名を修飾する(クラスにパッケージ名を付ける)必要はありません。
+            というのも、<literal>auto-import</literal> がデフォルトになっているからです。
+            そのためほとんどの場合、このように書くだけで十分です。
         </para>
         
         <programlisting><![CDATA[from Cat]]></programlisting>
         
         <para>
-            ‚Ù‚Æ‚ñ‚ǂ̏ꍇƒNƒGƒŠ‚Ì‚Ù‚©‚Ì•”•ª‚Ł@<literal>Cat</literal>@‚ðŽQÆ‚·‚é‚̂ŁA•Ê–¼‚ðŠ„‚è“–‚Ä‚é•K—v‚ª‚ ‚é‚Å‚µ‚傤B
+            ほとんどの場合クエリのほかの部分で <literal>Cat</literal> を参照するので、別名を割り当てる必要があるでしょう。
         </para>
 
         <programlisting><![CDATA[from Cat as cat]]></programlisting>
 
         <para>
-            ‚±‚̃NƒGƒŠ‚Å‚Í <literal>Cat</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚É <literal>cat</literal> 
-            ‚Æ‚¢‚¤•Ê–¼‚ð•t‚¯‚Ä‚¢‚Ü‚·B
-            ‚»‚Ì‚½‚߁AŒã‚Å‚±‚̃NƒGƒŠ“à‚ŁA‚±‚Ì•Ê–¼‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
-            <literal>as</literal> ƒL[ƒ[ƒh‚̓IƒvƒVƒ‡ƒ“‚Å‚·B‚‚܂肱‚̂悤‚ɏ‘‚­‚±‚Æ‚à‚Å‚«‚Ü‚·F
+            このクエリでは <literal>Cat</literal> インスタンスに <literal>cat</literal> 
+            という別名を付けています。
+            そのため、後でこのクエリ内で、この別名を使うことができます。
+            <literal>as</literal> キーワードはオプションです。つまりこのように書くこともできます:
         </para>
         
         <programlisting><![CDATA[from Cat cat]]></programlisting>
         
         <para>
-            ’¼ÏA‚ ‚é‚¢‚̓NƒƒXŒ‹‡‚É‚æ‚Á‚Ä‘½”‚̃Nƒ‰ƒX‚ª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‚Á‚½ƒNƒGƒŠ‚Ì•Ê–¼‚ð•t‚¯‚邱‚Æ‚Í‚¢‚¢KŠµ‚Å‚·(—Ⴆ‚Î <literal>domesticCat</literal> )B
+            ローカル変数のJavaのネーミング基準と一致した、
+            頭文字に小文字を使ったクエリの別名を付けることはいい習慣です(例えば <literal>domesticCat</literal> )。
         </para>
         
     </sect1>
 
     <sect1 id="queryhql-joins" revision="2">
-        <title>ŠÖ˜A‚ÆŒ‹‡</title>
+        <title>関連と結合</title>
 
         <para>
-            ŠÖ˜A‚·‚éƒGƒ“ƒeƒBƒeƒB‚ ‚é‚¢‚Í’lƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚É‚àA<literal>Œ‹‡</literal> ‚ðŽg‚Á‚Ä•Ê–¼‚ðŠ„‚è“–‚Ă邱‚Æ‚ªo—ˆ‚Ü‚·B
+            関連するエンティティあるいは値コレクションの要素にも、<literal>結合</literal> を使って別名を割り当てることが出来ます。
         </para>
 
         <programlisting><![CDATA[from Cat as cat 
@@ -93,7 +95,7 @@
         <programlisting><![CDATA[from Formula form full join form.parameter param]]></programlisting>
 
         <para>
-            ƒTƒ|[ƒg‚µ‚Ä‚¢‚錋‡‚̃^ƒCƒv‚ÍANSI SQL‚Æ“¯‚¶‚Å‚·B
+            サポートしている結合のタイプはANSI SQLと同じです。
         </para>
 
         <itemizedlist spacing="compact">
@@ -114,13 +116,13 @@
             </listitem>
             <listitem>
                 <para>
-                    <literal>full join</literal> (‚½‚¢‚Ä‚¢‚̏ꍇŽg‚¢‚Â炢)
+                    <literal>full join</literal> (たいていの場合使いづらい)
                 </para>
             </listitem>
         </itemizedlist>
     
         <para>
-            <literal>inner join</literal>A<literal>left outer join</literal>A<literal>right outer join</literal>‚ɂ͏ȗªŒ`‚ðŽg‚¤‚±‚Æ‚à‚Å‚«‚Ü‚·B
+            <literal>inner join</literal>、<literal>left outer join</literal>、<literal>right outer join</literal>には省略形を使うこともできます。
         </para>
 
         <programlisting><![CDATA[from Cat as cat 
@@ -128,7 +130,7 @@
     left join cat.kittens as kitten]]></programlisting>
     
         <para>
-            HQL‚Ì <literal>with</literal> ƒL[ƒ[ƒh‚ðŽg‚¤‚ƁAŒ‹‡ðŒ‚ð•t‚¯‰Á‚¦‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+            HQLの <literal>with</literal> キーワードを使うと、結合条件を付け加えることができます。
         </para>
 
         <programlisting><![CDATA[from Cat as cat 
@@ -136,10 +138,10 @@
         with kitten.bodyWeight > 10.0]]></programlisting>
 
         <para>
-            ‰Á‚¦‚āAuƒtƒFƒbƒ`vŒ‹‡‚ÍŠÖ˜A‚â’l‚̃RƒŒƒNƒVƒ‡ƒ“‚ðeƒIƒuƒWƒFƒNƒg‚ƈꏏ‚É1“x‚Ìselect‹å‚ŏ‰Šú‰»‚µ‚Ü‚·B
-            ‚±‚ê‚Í“Á‚ɃRƒŒƒNƒVƒ‡ƒ“‚̏ꍇ‚É—L—p‚Å‚·B‚±‚ê‚ÍŽÀŽ¿ãAŠÖ˜A‚ƃRƒŒƒNƒVƒ‡ƒ“‚ɑ΂·‚éƒ}ƒbƒsƒ“ƒO’è‹`ƒtƒ@ƒCƒ‹‚ÌŠO•”Œ‹‡‚Ælazy‰Šú‰»‚Ì’è‹`‚ðã‘‚«‚·‚邱‚Æ‚É‚È‚è‚Ü‚·B
+            加えて、「フェッチ」結合は関連や値のコレクションを親オブジェクトと一緒に1度のselect句で初期化します。
+            これは特にコレクションの場合に有用です。これは実質上、関連とコレクションに対するマッピング定義ファイルの外部結合とlazy初期化の定義を上書きすることになります。
             
-            <xref linkend="performance-fetching"/> ‚É‚æ‚葽‚­‚̏î•ñ‚ª‚ ‚è‚Ü‚·B
+            <xref linkend="performance-fetching"/> により多くの情報があります。
         </para>
     
         <programlisting><![CDATA[from Cat as cat 
@@ -147,10 +149,10 @@
     left join fetch cat.kittens]]></programlisting>
     
         <para>
-            Œ‹‡‚É‚æ‚éƒtƒFƒbƒ`‚ÍŠÖ˜A‚·‚éƒIƒuƒWƒFƒNƒg‚ª <literal>where</literal> ß(‚Ü‚½‚Í‘¼‚Ì‚Ç‚ñ‚Ȑ߂łà)
-            ‚ÅŽg‚í‚ê‚Ä‚Í‚È‚ç‚È‚¢‚̂ŁA’ʏí•Ê–¼‚ðŠ„‚è“–‚Ä‚é•K—v‚ª‚ ‚è‚Ü‚¹‚ñB‚Ü‚½ŠÖ˜AƒIƒuƒWƒFƒNƒg‚Í–â‚¢‡‚킹Œ‹‰Ê‚Æ‚µ‚Ä
-            ’¼Ú•Ô‚³‚ê‚Ü‚¹‚ñB‘ã‚í‚è‚ɐeƒIƒuƒWƒFƒNƒg‚ð’Ê‚µ‚ăAƒNƒZƒX‚Å‚«‚Ü‚·B
-            ƒRƒŒƒNƒVƒ‡ƒ“‚ðÄ‹A“I‚ÉŒ‹‡ƒtƒFƒbƒ`‚·‚éê‡‚̂݁A•Ê–¼‚ª•K—v‚É‚È‚è‚Ü‚·B
+            結合によるフェッチは関連するオブジェクトが <literal>where</literal> 節(または他のどんな節でも)
+            で使われてはならないので、通常別名を割り当てる必要がありません。また関連オブジェクトは問い合わせ結果として
+            直接返されません。代わりに親オブジェクトを通してアクセスできます。
+            コレクションを再帰的に結合フェッチする場合のみ、別名が必要になります。
         </para>
         
         <programlisting><![CDATA[from Cat as cat 
@@ -159,28 +161,28 @@
     left join fetch child.kittens]]></programlisting>
     
         <para>
-            <literal>fetch</literal> \•¶‚Í <literal>iterate()</literal> 
-            ‚ðŽg‚Á‚½ƒNƒGƒŠŒÄ‚яo‚µ‚ÅŽg—p‚Å‚«‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢
-            iˆê•û‚Å <literal>scroll()</literal> ‚ÍŽg—p‚Å‚«‚Ü‚·jB
+            <literal>fetch</literal> 構文は <literal>iterate()</literal> 
+            を使ったクエリ呼び出しで使用できないことに注意してください
+            (一方で <literal>scroll()</literal> は使用できます)。
             
-            ‚Ü‚½A‚±‚ê‚ç‚Ì‘€ì‚ÍŒ‹‰Ê‚̍s‚ÉŠî‚¢‚Ä‚¢‚邽‚߁A
-            <literal>fetch</literal> ‚Í <literal>setMaxResults()</literal> ‚â <literal>setFirstResult()</literal> 
-            ‚ƈꏏ‚ÉŽg—p‚·‚ׂ«‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-            ’ʏíeager‚ȃRƒŒƒNƒVƒ‡ƒ“ƒtƒFƒbƒ`‚ð‚·‚é‚Əd•¡‚ªo‚Ä‚µ‚Ü‚¤‚½‚߁A‚ ‚È‚½‚ªŠú‘Ò‚·‚é‚悤‚ȍs”‚É‚Í‚È‚ç‚È‚¢‚Ì‚Å‚·B
+            また、これらの操作は結果の行に基づいているため、
+            <literal>fetch</literal> は <literal>setMaxResults()</literal> や <literal>setFirstResult()</literal> 
+            と一緒に使用すべきではありません。
+            通常eagerなコレクションフェッチをすると重複が出てしまうため、あなたが期待するような行数にはならないのです。
                              
-            ‚»‚µ‚Ä‚Ü‚½ <literal>fetch</literal> ‚́AƒAƒhƒzƒbƒN‚È <literal>with</literal> ðŒ‚ð
-            ˆê‚ÉŽg‚¤‚±‚Æ‚à‚Å‚«‚Ü‚¹‚ñB
-            ˆê‚‚̃NƒGƒŠ‚Å•¡”‚̃RƒŒƒNƒVƒ‡ƒ“‚ðŒ‹‡ƒtƒFƒbƒ`‚·‚邱‚Æ‚É‚æ‚è’¼Ï‚ðì¬‚Å‚«‚é‚̂ŁA‚±‚̏ꍇ’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-            ‚Ü‚½A•¡”‚̃RƒŒƒNƒVƒ‡ƒ“‚ɑ΂·‚錋‡ƒtƒFƒbƒ`‚Íbagƒ}ƒbƒsƒ“ƒO‚ɑ΂µ‚Ä—\Šú‚¹‚ÊŒ‹‰Ê‚ð‚à‚½‚ç‚·‚±‚Æ‚ª‚ ‚é‚̂ŁA
-            ‚±‚̏ꍇ‚̃NƒGƒŠ‚̍쐬‚É‚Í’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-            ÅŒã‚É <literal>‘SŠO•”Œ‹‡‚É‚æ‚éƒtƒFƒbƒ`</literal> ‚Æ
-            <literal>‰EŠO•”Œ‹‡‚É‚æ‚éƒtƒFƒbƒ`</literal> ‚Í—L—p‚Å‚Í‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+            そしてまた <literal>fetch</literal> は、アドホックな <literal>with</literal> 条件を
+            一緒に使うこともできません。
+            一つのクエリで複数のコレクションを結合フェッチすることにより直積を作成できるので、この場合注意してください。
+            また、複数のコレクションに対する結合フェッチはbagマッピングに対して予期せぬ結果をもたらすことがあるので、
+            この場合のクエリの作成には注意してください。
+            最後に <literal>全外部結合によるフェッチ</literal> と
+            <literal>右外部結合によるフェッチ</literal> は有用ではないことに注意してください。
         </para>
         
         <para>
-            ‚à‚µƒvƒƒpƒeƒBƒŒƒxƒ‹‚Ì’x‰„ƒtƒFƒbƒ`‚ðŽg‚¤ê‡i“à•”“I‚ɃoƒCƒgƒR[ƒhˆ—‚ð‚·‚éê‡jA
-            <literal>fetch all properties</literal> ‚ðŽg‚¤‚±‚Æ‚Å
-            Hibernate‚É’x‰„ƒvƒƒpƒeƒB‚𑬂₩‚ɁiÅ‰‚̃NƒGƒŠ‚ŁjƒtƒFƒbƒ`‚³‚¹‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+            もしプロパティレベルの遅延フェッチを使う場合(内部的にバイトコード処理をする場合)、
+            <literal>fetch all properties</literal> を使うことで
+            Hibernateに遅延プロパティを速やかに(最初のクエリで)フェッチさせることができます。
         </para>
         
         <programlisting><![CDATA[from Document fetch all properties order by name]]></programlisting>
@@ -189,32 +191,32 @@
     </sect1>
 
     <sect1 id="queryhql-joins-forms">
-        <title>Œ‹‡\•¶‚ÌŒ`Ž®</title>
+        <title>結合構文の形式</title>
 
         <para>
-            HQL‚Í‚Q‚‚̊֘AŒ‹‡Œ`Ž®‚ðƒTƒ|[ƒg‚µ‚Ü‚·F<literal>ˆÃ–Ù“I</literal> ‚Æ <literal>–¾Ž¦“I</literal>B
+            HQLは2つの関連結合形式をサポートします:<literal>暗黙的</literal> と <literal>明示的</literal>。
         </para>
 
         <para>
-            ‚±‚ê‚܂ł̃ZƒNƒVƒ‡ƒ“‚Å‚¨Œ©‚¹‚µ‚½Žg‚¢•û‚Í‚·‚×‚Ä <literal>–¾Ž¦“I‚È</literal> Œ`Ž®‚ŁA
-            fromß‚Å–¾Ž¦“I‚ÉjoinƒL[ƒ[ƒh‚ðŽg‚Á‚Ä‚¢‚Ü‚·B
-            ‚±‚ÌŒ`Ž®‚ð‚¨‚·‚·‚ß‚µ‚Ü‚·B
+            これまでのセクションでお見せした使い方はすべて <literal>明示的な</literal> 形式で、
+            from節で明示的にjoinキーワードを使っています。
+            この形式をおすすめします。
         </para>
 
         <para>
-            <literal>ˆÃ–Ù“I</literal> ƒtƒH[ƒ€‚́AjoinƒL[ƒ[ƒh‚ðŽg‚¢‚Ü‚¹‚ñB‘ã‚í‚è‚ɁAŽQÆ‚·‚éŠÖ˜A‚É
-            ƒhƒbƒg•\‹L‚ðŽg‚¢‚Ü‚·B<literal>ˆÃ–Ù“I</literal> Œ‹‡‚́A‚³‚Ü‚´‚Ü‚ÈHQL‚ɏo‚Ä‚«‚Ü‚·B
-            <literal>ˆÃ–Ù“I</literal> Œ‹‡‚ÌŒ‹‰Ê‚́ASQLƒXƒe[ƒgƒƒ“ƒg‚Ì“à•”Œ‹‡Œ‹‰Ê‚Å‚·B
+            <literal>暗黙的</literal> フォームは、joinキーワードを使いません。代わりに、参照する関連に
+            ドット表記を使います。<literal>暗黙的</literal> 結合は、さまざまなHQLに出てきます。
+            <literal>暗黙的</literal> 結合の結果は、SQLステートメントの内部結合結果です。
         </para>
 
         <programlisting><![CDATA[from Cat as cat where cat.mate.name like '%s%']]></programlisting>
     </sect1>
 
     <sect1 id="queryhql-select">
-        <title>Selectß</title>
+        <title>Select節</title>
 
         <para>
-            <literal>select</literal> ß‚͈ȉº‚̂悤‚ɂǂ̃IƒuƒWƒFƒNƒg‚Æ‘®«‚ðƒNƒGƒŠƒŠƒUƒ‹ƒgƒZƒbƒg‚É•Ô‚·‚©‚ð‘I‘ð‚µ‚Ü‚·B:
+            <literal>select</literal> 節は以下のようにどのオブジェクトと属性をクエリリザルトセットに返すかを選択します。:
         </para>
 
         <programlisting><![CDATA[select mate 
@@ -222,14 +224,14 @@
     inner join cat.mate as mate]]></programlisting>
 
         <para>
-            ã‹L‚̃NƒGƒŠ‚Í‘¼‚Ì <literal>Cat</literal> ‚Ì <literal>mate</literal> ‚ð‘I‘ð‚µ‚Ü‚·B
-            ŽÀÛ‚É‚ÍŽŸ‚̂悤‚ɁA‚æ‚èŠÈŒ‰‚É•\Œ»‚Å‚«‚Ü‚·B: 
+            上記のクエリは他の <literal>Cat</literal> の <literal>mate</literal> を選択します。
+            実際には次のように、より簡潔に表現できます。: 
         </para>
 
         <programlisting><![CDATA[select cat.mate from Cat cat]]></programlisting>
 
         <para>
-            ƒNƒGƒŠ‚̓Rƒ“ƒ|[ƒlƒ“ƒgŒ^‚̃vƒƒpƒeƒB‚ðŠÜ‚ށA‚ ‚ç‚ä‚é’lŒ^‚̃vƒƒpƒeƒB‚à•Ô‚¹‚Ü‚·B:
+            クエリはコンポーネント型のプロパティを含む、あらゆる値型のプロパティも返せます。:
         </para>
 
         <programlisting><![CDATA[select cat.name from DomesticCat cat
@@ -238,7 +240,7 @@
         <programlisting><![CDATA[select cust.name.firstName from Customer as cust]]></programlisting>
 
         <para>
-            ƒNƒGƒŠ‚Í•¡”‚̃IƒuƒWƒFƒNƒg‚Æ(‚Ü‚½‚Í)ƒvƒƒpƒeƒB‚ð <literal>Object[]</literal> Œ^‚Ì”z—ñ‚Æ‚µ‚Ä•Ô‚¹‚Ü‚·B
+            クエリは複数のオブジェクトと(または)プロパティを <literal>Object[]</literal> 型の配列として返せます。
         </para>
 
         <programlisting><![CDATA[select mother, offspr, mate.name 
@@ -247,7 +249,7 @@
     left outer join mother.kittens as offspr]]></programlisting>
     
         <para>
-            ‚à‚µ‚­‚Í <literal>List</literal> ‚Æ‚µ‚āA
+            もしくは <literal>List</literal> として、
         </para>
         
         <programlisting><![CDATA[select new list(mother, offspr, mate.name)
@@ -256,7 +258,7 @@
     left outer join mother.kittens as offspr]]></programlisting>
     
         <para>
-            ‚Ü‚½‚́Aƒ^ƒCƒvƒZ[ƒt‚ÈJavaƒIƒuƒWƒFƒNƒg‚ð•Ô‚¹‚Ü‚·B
+            または、タイプセーフなJavaオブジェクトを返せます。
         </para>
         
         <programlisting><![CDATA[select new Family(mother, mate, offspr)
@@ -265,34 +267,34 @@
     left join mother.kittens as offspr]]></programlisting>
         
         <para>
-            ‚ ‚é‚¢‚Í <literal>Family</literal> ƒNƒ‰ƒX‚ª“KØ‚ȃRƒ“ƒXƒgƒ‰ƒNƒ^‚ðŽ‚Á‚Ä‚¢‚é‚Æ‚·‚é‚È‚ç‚΁A
+            あるいは <literal>Family</literal> クラスが適切なコンストラクタを持っているとするならば、
         </para>
         
         <para>
-            selectß‚É <literal>as</literal> ‚ðŽg‚Á‚Ä•Ê–¼‚ð‚‚¯‚邱‚Æ‚à‚Å‚«‚Ü‚·B
+            select節に <literal>as</literal> を使って別名をつけることもできます。
         </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
+            <literal>select new map</literal> と一緒に使うときに最も役立ちます:
         </para>
             
         <programlisting><![CDATA[select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n )
 from Cat cat]]></programlisting>
 
         <para>
-            ‚±‚̃NƒGƒŠ‚Í•Ê–¼‚©‚çselect‚µ‚½’l‚Ö <literal>Map</literal> ‚ð•Ô‚µ‚Ü‚·B
+            このクエリは別名からselectした値へ <literal>Map</literal> を返します。
         </para>
          
     </sect1>
 
     <sect1 id="queryhql-aggregation">
-        <title>W–ñŠÖ”</title>
+        <title>集約関数</title>
 
         <para>
-            HQL‚̃NƒGƒŠ‚̓vƒƒpƒeƒB‚̏W–ñŠÖ”‚ÌŒ‹‰Ê‚à•Ô‚¹‚Ü‚·F
+            HQLのクエリはプロパティの集約関数の結果も返せます:
         </para>
 
         <programlisting><![CDATA[select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat)
@@ -309,7 +311,7 @@
 -->
 
         <para>
-            ƒTƒ|[ƒg‚µ‚Ä‚¢‚éW–ñŠÖ”‚͈ȉº‚Ì‚à‚Ì‚Å‚·B
+            サポートしている集約関数は以下のものです。
         </para>
 
         <itemizedlist spacing="compact">
@@ -331,7 +333,7 @@
         </itemizedlist>
     
         <para>
-            selectß‚É‚¨‚¢‚ÄŽZp‘€ìA˜AŒ‹‚Ə³”F‚³‚ꂽSQLŠÖ”‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
+            select節において算術操作、連結と承認されたSQL関数を使うことができます。
         </para>
         
         <programlisting><![CDATA[select cat.weight + sum(kitten.weight) 
@@ -342,7 +344,7 @@
         <programlisting><![CDATA[select firstName||' '||initial||' '||upper(lastName) from Person]]></programlisting>
     
         <para>
-            SQL‚Æ“¯‚¶ˆÓ–¡‚ðŽ‚Â <literal>distinct</literal> ‚Æ <literal>all</literal> ƒL[ƒ[ƒh‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
+            SQLと同じ意味を持つ <literal>distinct</literal> と <literal>all</literal> キーワードを使うことができます。
         </para>
 
         <programlisting><![CDATA[select distinct cat.name from Cat cat
@@ -352,56 +354,56 @@
     </sect1>
     
     <sect1 id="queryhql-polymorphism">
-        <title>ƒ|ƒŠƒ‚[ƒtƒBƒbƒN‚ȃNƒGƒŠ</title>
+        <title>ポリモーフィックなクエリ</title>
 
         <para>
-            ŽŸ‚̂悤‚ȃNƒGƒŠF
+            次のようなクエリ:
         </para>
 
         <programlisting><![CDATA[from Cat as cat]]></programlisting>
 
         <para>
-            <literal>Cat</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚¾‚¯‚Å‚Í‚È‚­A<literal>DomesticCat</literal> 
-            ‚̂悤‚ȃTƒuƒNƒ‰ƒX‚à•Ô‚³‚ê‚Ü‚·BHibernateƒNƒGƒŠ‚Í <emphasis>‚Ç‚ñ‚È</emphasis>
-            JavaƒNƒ‰ƒX‚âƒCƒ“ƒ^[ƒtƒFƒCƒX‚à <literal>from</literal> ß‚É“ü‚ê‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-            ƒNƒGƒŠ‚Í‚»‚̃Nƒ‰ƒX‚ðŠg’£‚µ‚½A‚à‚µ‚­‚̓Cƒ“ƒ^[ƒtƒFƒCƒX‚ðŽÀ‘•‚µ‚½‘S‚Ẳi‘±ƒNƒ‰ƒX‚ð•Ô‚µ‚Ü‚·B
-            ŽŸ‚̃NƒGƒŠ‚͉i‘±ƒIƒuƒWƒFƒNƒg‚ð‚·‚×‚Ä•Ô‚µ‚Ü‚·:
+            <literal>Cat</literal> インスタンスだけではなく、<literal>DomesticCat</literal> 
+            のようなサブクラスも返されます。Hibernateクエリは <emphasis>どんな</emphasis>
+            Javaクラスやインターフェイスも <literal>from</literal> 節に入れることができます。
+            クエリはそのクラスを拡張した、もしくはインターフェイスを実装した全ての永続クラスを返します。
+            次のクエリは永続オブジェクトをすべて返します:
         </para>
         
         <programlisting><![CDATA[from java.lang.Object o]]></programlisting>
         
         <para>
-            <literal>Named</literal> ƒCƒ“ƒ^[ƒtƒFƒCƒX‚Í—lX‚ȉi‘±ƒNƒ‰ƒX‚É‚æ‚Á‚ÄŽÀ‘•‚³‚ê‚Ü‚·B: 
+            <literal>Named</literal> インターフェイスは様々な永続クラスによって実装されます。: 
         </para>
         
         <programlisting><![CDATA[from Named n, Named m where n.name = m.name]]></programlisting>
         
         <para>
-            ÅŒã‚Ì“ñ‚‚̃NƒGƒŠ‚́A“ñ‚ˆȏã‚ÌSQL <literal>SELECT</literal> ‚ð—v‹‚µ‚Ä‚¢‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-            ‚±‚Ì‚±‚Æ‚Í <literal>order by</literal> ß‚ªƒŠƒUƒ‹ƒgƒZƒbƒg‘S‘̂𐳊m‚ɂ͐®—ñ‚µ‚È‚¢‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·
-            (‚³‚ç‚É‚»‚ê‚́A<literal>Query.scroll()</literal> ‚ðŽg—p‚µ‚Ä‚±‚ê‚ç‚̃NƒGƒŠ‚ðŒÄ‚Ô‚±‚Æ‚ª‚Å‚«‚È‚¢‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B)B 
+            最後の二つのクエリは、二つ以上のSQL <literal>SELECT</literal> を要求していることに注意してください。
+            このことは <literal>order by</literal> 節がリザルトセット全体を正確には整列しないことを意味します
+            (さらにそれは、<literal>Query.scroll()</literal> を使用してこれらのクエリを呼ぶことができないことを意味します。)。 
         </para>
         
     </sect1>
 
     <sect1 id="queryhql-where">
-        <title>whereß</title>
+        <title>where節</title>
 
         <para>
-            <literal>where</literal> ß‚Í•Ô‚³‚ê‚éƒCƒ“ƒXƒ^ƒ“ƒX‚̃ŠƒXƒg‚ði‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-            ‚à‚µ•Ê–¼‚ª‚È‚¢ê‡A–¼‘O‚ŃvƒƒpƒeƒB‚ðŽQÆ‚µ‚Ü‚·B
+            <literal>where</literal> 節は返されるインスタンスのリストを絞ることができます。
+            もし別名がない場合、名前でプロパティを参照します。
         </para>
 
         <programlisting><![CDATA[from Cat where name='Fritz']]></programlisting>
         
         <para>
-            ‚à‚µ•Ê–¼‚ª‚ ‚éê‡ACü–¼‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B
+            もし別名がある場合、修飾名を使ってください。
         </para>
         
         <programlisting><![CDATA[from Cat as cat where cat.name='Fritz']]></programlisting>
 
         <para>
-            –¼‘O‚ª'Fritz'‚Æ‚¢‚¤ <literal>Cat</literal> ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð•Ô‚µ‚Ü‚·B
+            名前が'Fritz'という <literal>Cat</literal> のインスタンスを返します。
         </para>
 
         <programlisting><![CDATA[select foo 
@@ -409,28 +411,28 @@
 where foo.startDate = bar.date]]></programlisting>
 
         <para>
-            ã‚ÌHQL‚́A<literal>Foo</literal> ‚Ì <literal>startDate</literal> ƒvƒƒpƒeƒB‚Æ“™‚µ‚¢
-            <literal>date</literal> ƒvƒƒpƒeƒB‚ðŽ‚Á‚½ <literal>bar</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚ª‘¶Ý‚·‚éA
-            ‚·‚×‚Ä‚Ì <literal>Foo</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚ð•Ô‚µ‚Ü‚·B
-            ƒRƒ“ƒpƒEƒ“ƒhƒpƒXŽ®i—Ⴆ‚΁ucat.mate.namevj‚Í <literal>where</literal> ß‚ð”ñí‚É‹­—Í‚É‚µ‚Ü‚·B’–ځF
+            上のHQLは、<literal>Foo</literal> の <literal>startDate</literal> プロパティと等しい
+            <literal>date</literal> プロパティを持った <literal>bar</literal> インスタンスが存在する、
+            すべての <literal>Foo</literal> インスタンスを返します。
+            コンパウンドパス式(例えば「cat.mate.name」)は <literal>where</literal> 節を非常に強力にします。注目:
         </para>
 
         <programlisting><![CDATA[from Cat cat where cat.mate.name is not null]]></programlisting>
 
         <para>
-            ‚±‚̃NƒGƒŠ‚̓e[ƒuƒ‹Œ‹‡i“à•”Œ‹‡j‚ðŽ‚ÂSQLƒNƒGƒŠ‚É•ÏŠ·‚³‚ê‚Ü‚·B
-            ‚»‚Ì‘ã‚í‚è‚Ɉȉº‚̂悤‚ɏ‘‚­‚ƁA
+            このクエリはテーブル結合(内部結合)を持つSQLクエリに変換されます。
+            その代わりに以下のように書くと、
         </para>
 
         <programlisting><![CDATA[from Foo foo  
 where foo.bar.baz.customer.address.city is not null]]></programlisting>
 
         <para>
-            ‚à‚µã‚̃NƒGƒŠ‚ð‹Lq‚µ‚½‚çƒNƒGƒŠ“à‚É4‚‚̃e[ƒuƒ‹Œ‹‡‚ð•K—v‚Æ‚·‚éSQLƒNƒGƒŠ‚É•ÏŠ·‚³‚ê‚Ü‚·B
+            もし上のクエリを記述したらクエリ内に4つのテーブル結合を必要とするSQLクエリに変換されます。
         </para>
 
         <para>
-            <literal>=</literal> ‰‰ŽZŽq‚͈ȉº‚̂悤‚ɁAƒvƒƒpƒeƒB‚¾‚¯‚Å‚È‚­ƒCƒ“ƒXƒ^ƒ“ƒX‚ð”äŠr‚·‚邽‚ß‚É‚àŽg‚í‚ê‚Ü‚·BF
+            <literal>=</literal> 演算子は以下のように、プロパティだけでなくインスタンスを比較するためにも使われます。:
         </para>
 
         <programlisting><![CDATA[from Cat cat, Cat rival where cat.mate = rival.mate]]></programlisting>
@@ -440,8 +442,8 @@
 where cat.mate = mate]]></programlisting>
 
         <para>
-            <literal>id</literal> (¬•¶Žš)‚Í“Á•Ê‚ȃvƒƒpƒeƒB‚Å‚ ‚èA
-            ƒIƒuƒWƒFƒNƒg‚̃†ƒj[ƒN‚ÈŽ¯•ÊŽq‚ðŽQÆ‚·‚邽‚ß‚ÉŽg—p‚Å‚«‚Ü‚·B(‚³‚ç‚ɁA‚»‚̃vƒƒpƒeƒB–¼‚ðŽg—p‚Å‚«‚Ü‚·B) 
+            <literal>id</literal> (小文字)は特別なプロパティであり、
+            オブジェクトのユニークな識別子を参照するために使用できます。(さらに、そのプロパティ名を使用できます。) 
         </para>
 
         <programlisting><![CDATA[from Cat as cat where cat.id = 123
@@ -449,12 +451,12 @@
 from Cat as cat where cat.mate.id = 69]]></programlisting>
 
         <para>
-            2”Ԗڂ̃NƒGƒŠ‚ÍŒø—¦“I‚Å‚·Bƒe[ƒuƒ‹Œ‹‡‚ª•K—v‚ ‚è‚Ü‚¹‚ñI
+            2番目のクエリは効率的です。テーブル結合が必要ありません!
         </para>
 
         <para>
-            ‚Ü‚½•¡‡Ž¯•ÊŽq‚̃vƒƒpƒeƒB‚àŽg—p‚Å‚«‚Ü‚·B‚±‚±‚Å <literal>Person</literal> ‚ª
-            <literal>country</literal> ‚Æ <literal>medicareNumber</literal> ‚©‚ç‚È‚é•¡‡Ž¯•ÊŽq‚ðŽ‚Â‚Æ‰¼’肵‚Ü‚·B 
+            また複合識別子のプロパティも使用できます。ここで <literal>Person</literal> が
+            <literal>country</literal> と <literal>medicareNumber</literal> からなる複合識別子を持つと仮定します。 
         </para>
 
         <programlisting><![CDATA[from bank.Person person
@@ -466,70 +468,70 @@
     and account.owner.id.medicareNumber = 123456]]></programlisting>
 
         <para>
-            ‚à‚¤ˆê“xŒ¾‚¢‚Ü‚·‚ªA2”Ԗڂ̃NƒGƒŠ‚ɂ̓e[ƒuƒ‹Œ‹‡‚ª•K—v‚ ‚è‚Ü‚¹‚ñB
+            もう一度言いますが、2番目のクエリにはテーブル結合が必要ありません。
         </para>
             
         <para>
-            “¯—l‚É <literal>class</literal> ‚Í“Á•Ê‚ȃvƒƒpƒeƒB‚Å‚ ‚èA
-            ƒ|ƒŠƒ‚[ƒtƒBƒbƒN‚ȉi‘±‰»‚É‚¨‚¯‚éƒCƒ“ƒXƒ^ƒ“ƒX‚Ìdiscriminator’l‚ɃAƒNƒZƒX‚µ‚Ü‚·B
-            whereß‚É–„‚ߍž‚܂ꂽJava‚̃Nƒ‰ƒX–¼‚Í‚»‚Ìdiscriminator’l‚É•ÏŠ·‚³‚ê‚Ü‚·B
+            同様に <literal>class</literal> は特別なプロパティであり、
+            ポリモーフィックな永続化におけるインスタンスのdiscriminator値にアクセスします。
+            where節に埋め込まれたJavaのクラス名はそのdiscriminator値に変換されます。
         </para>
 
         <programlisting><![CDATA[from Cat cat where cat.class = DomesticCat]]></programlisting>
         
         <para>
-            ‚Ü‚½ƒRƒ“ƒ|[ƒlƒ“ƒg‚â•¡‡ƒ†[ƒUŒ^(‚Ü‚½‚»‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚È‚Ç)‚̃vƒƒpƒeƒB‚àŽw’è‚Å‚«‚Ü‚·B
+            またコンポーネントや複合ユーザ型(またそのコンポーネントのコンポーネントなど)のプロパティも指定できます。
             
-            ‚µ‚©‚µŒˆ‚µ‚āiƒRƒ“ƒ|[ƒlƒ“ƒg‚̃vƒƒpƒeƒB‚Å‚Í‚È‚­jƒRƒ“ƒ|[ƒlƒ“ƒgŒ^‚̃vƒƒpƒeƒB‚ŏI—¹‚·‚éƒpƒXŽ®‚ðŽg‚í‚È‚¢‚Å‚­‚¾‚³‚¢B
-            —Ⴆ‚Î‚à‚µ <literal>store.owner</literal> ‚ª <literal>address</literal> 
-            ƒRƒ“ƒ|[ƒlƒ“ƒg‚ðŽ‚ÂƒGƒ“ƒeƒBƒeƒB‚È‚ç‚Έȉº‚̂悤‚ÈŒ‹‰Ê‚Æ‚È‚è‚Ü‚·B
+            しかし決して(コンポーネントのプロパティではなく)コンポーネント型のプロパティで終了するパス式を使わないでください。
+            例えばもし <literal>store.owner</literal> が <literal>address</literal> 
+            コンポーネントを持つエンティティならば以下のような結果となります。
         </para>
 
         <programlisting><![CDATA[store.owner.address.city    // okay
 store.owner.address         // error!]]></programlisting>
 
         <para>
-            "any"Œ^‚Í“Á•Ê‚ȃvƒƒpƒeƒB‚Å‚ ‚é <literal>id</literal> ‚Æ <literal>class</literal> ‚ðŽ‚¿A
-            ˆÈ‰º‚Ì•û–@‚ÅŒ‹‡‚ð•\Œ»‚·‚邱‚Æ‚ð‰Â”\‚É‚µ‚Ü‚·(<literal>AuditLog.item</literal> ‚Í
-            <literal>&lt;any&gt;</literal> ‚Ń}ƒbƒsƒ“ƒO‚³‚ꂽƒvƒƒpƒeƒB‚Å‚·)B 
+            "any"型は特別なプロパティである <literal>id</literal> と <literal>class</literal> を持ち、
+            以下の方法で結合を表現することを可能にします(<literal>AuditLog.item</literal> は
+            <literal>&lt;any&gt;</literal> でマッピングされたプロパティです)。 
         </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‚̃NƒGƒŠ’†‚Å‘S‚­ˆÙ‚È‚éƒf[ƒ^ƒx[ƒXƒJƒ‰ƒ€‚Ì’l‚ðŽQÆ‚·‚é‚Æ‚¢‚¤‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+            <literal>log.item.class</literal> と <literal>payment.class</literal> が
+            上記のクエリ中で全く異なるデータベースカラムの値を参照するということに注意してください。
         </para>
         
     </sect1>
 
     <sect1 id="queryhql-expressions">
-        <title>Expressions Ž®</title>
+        <title>Expressions 式</title>
 
         <para>
-            SQL‚Ì <literal>where</literal> ß‚Å‹Lq‚·‚邱‚Æ‚ªo—ˆ‚鎮‚Ì‚Ù‚Æ‚ñ‚Ç‚ðHQL‚Å‚à‹Lq‚Å‚«‚Ü‚·B:
+            SQLの <literal>where</literal> 節で記述することが出来る式のほとんどをHQLでも記述できます。:
         </para>
 
         <itemizedlist spacing="compact">
             <listitem>
                 <para>
-                    ŽZp‰‰ŽZŽqF<literal>+, -, *, /</literal>
+                    算術演算子:<literal>+, -, *, /</literal>
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    2€”äŠr‰‰ŽZŽqF<literal>=, &gt;=, &lt;=, &lt;&gt;, !=, like</literal>
+                    2項比較演算子:<literal>=, &gt;=, &lt;=, &lt;&gt;, !=, like</literal>
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    ˜_—‰‰ŽZŽqF<literal>and, or, not</literal>
+                    論理演算子:<literal>and, or, not</literal>
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    ƒOƒ‹[ƒv•ª‚¯‚ð•\‚·Š‡ŒÊF<literal>( )</literal>
+                    グループ分けを表す括弧:<literal>( )</literal>
                 </para>
             </listitem>
             <listitem>
@@ -547,13 +549,13 @@
             </listitem>
             <listitem>
                 <para>
-                    "ƒVƒ“ƒvƒ‹"‚Ècase <literal>case ... when ... then ... else ... end</literal>A
-                    "’Tõ“I"‚Ècase <literal>case when ... then ... else ... end</literal> 
+                    "シンプル"なcase <literal>case ... when ... then ... else ... end</literal>、
+                    "探索的"なcase <literal>case when ... then ... else ... end</literal> 
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    ƒXƒgƒŠƒ“ƒO‚̘AŒ‹ <literal>...||...</literal> ‚Ü‚½‚Í <literal>concat(...,...)</literal>
+                    ストリングの連結 <literal>...||...</literal> または <literal>concat(...,...)</literal>
                 </para>
             </listitem>
             <listitem>
@@ -571,74 +573,74 @@
             </listitem>
             <listitem>
                 <para>
-                    EJB-QL 3.0‚Å’è‹`‚³‚ê‚Ä‚¢‚éŠÖ”‚≉ŽZŽq: <literal>substring(), trim(),
+                    EJB-QL 3.0で定義されている関数や演算子: <literal>substring(), trim(),
                     lower(), upper(), length(), locate(), abs(), sqrt(), bit_length()</literal>
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>coalesce()</literal> ‚Æ <literal>nullif()</literal>
+                    <literal>coalesce()</literal> と <literal>nullif()</literal>
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    ”Žš‚⎞ŠÔ‚Ì’l‚ðString‚ɃRƒ“ƒo[ƒg‚·‚é <literal>str()</literal>j
+                    数字や時間の値をStringにコンバートする <literal>str()</literal>)
                 </para>
             </listitem>
 
             <listitem>
                 <para>
-                    2”Ԗڂ̈ø”‚ªHibernateŒ^‚Ì–¼‘O‚Å‚ ‚é <literal>cast(... as ...)</literal> ‚Æ 
-                    <literal>extract(... from ...)</literal>B
-                    ‚½‚¾‚µŽg—p‚·‚éƒf[ƒ^ƒx[ƒX‚ªANSI <literal>cast()</literal> ‚Æ <literal>extract()</literal> 
-                    ‚ðƒTƒ|[ƒg‚·‚éê‡‚ÉŒÀ‚è‚Ü‚·B
+                    2番目の引数がHibernate型の名前である <literal>cast(... as ...)</literal> と 
+                    <literal>extract(... from ...)</literal>。
+                    ただし使用するデータベースがANSI <literal>cast()</literal> と <literal>extract()</literal> 
+                    をサポートする場合に限ります。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    Œ‹‡‚µ‚½ƒCƒ“ƒfƒbƒNƒX•t‚«‚̃RƒŒƒNƒVƒ‡ƒ“‚Ì•Ê–¼‚É“K—p‚³‚ê‚éHQL‚Ì 
-                    <literal>index()</literal> ŠÖ”B
+                    結合したインデックス付きのコレクションの別名に適用されるHQLの 
+                    <literal>index()</literal> 関数。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    ƒRƒŒƒNƒVƒ‡ƒ“’l‚̃pƒXŽ®‚ðŽæ‚é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
+                    コレクション値のパス式を取るHQL関数: <literal>size(), minelement(), maxelement(), 
+                    minindex(), maxindex()</literal> 。
+                    <literal>some, all, exists, any, in</literal> を使って修飾することができる特別な 
+                    <literal>elements()</literal> と <literal>indices</literal> 関数と一緒に使います。
                 </para>
             </listitem>
             <listitem>
                 <para>
                     <literal>sign()</literal>, <literal>trunc()</literal>, <literal>rtrim()</literal>, <literal>sin()</literal> 
-                    ‚̂悤‚ȃf[ƒ^ƒx[ƒX‚ªƒTƒ|[ƒg‚·‚éSQLƒXƒJƒ‰ŠÖ”B
+                    のようなデータベースがサポートするSQLスカラ関数。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    JDBCƒXƒ^ƒCƒ‹‚̈ʒuƒpƒ‰ƒ[ƒ^ <literal>?</literal>
+                    JDBCスタイルの位置パラメータ <literal>?</literal>
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    –¼‘O•t‚«ƒpƒ‰ƒ[ƒ^: <literal>:name</literal>, <literal>:start_date</literal>, <literal>:x1</literal>
+                    名前付きパラメータ: <literal>:name</literal>, <literal>:start_date</literal>, <literal>:x1</literal>
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    SQLƒŠƒeƒ‰ƒ‹F<literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E+2</literal>,
+                    SQLリテラル:<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>
+                    Javaの <literal>public static final</literal> 定数:<literal>eg.Color.TABBY</literal>
                 </para>
             </listitem>
         </itemizedlist>
 
         <para>
-            <literal>in</literal> ‚Æ <literal>between</literal> ‚͈ȉº‚̂悤‚ÉŽg—p‚Å‚«‚Ü‚·B: 
+            <literal>in</literal> と <literal>between</literal> は以下のように使用できます。: 
         </para>
 
         <programlisting><![CDATA[from DomesticCat cat where cat.name between 'A' and 'B']]></programlisting>
@@ -646,7 +648,7 @@
         <programlisting><![CDATA[from DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )]]></programlisting>
 
         <para>
-            ‚Ü‚½A”Û’èŒ`‚Å‹Lq‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B
+            また、否定形で記述することもできます。
         </para>
 
         <programlisting><![CDATA[from DomesticCat cat where cat.name not between 'A' and 'B']]></programlisting>
@@ -654,25 +656,25 @@
         <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> ‚Ínull’l‚ðƒeƒXƒg‚·‚邽‚ß‚ÉŽg—p‚Å‚«‚Ü‚·B
+            同様に <literal>is null</literal> や <literal>is not null</literal> はnull値をテストするために使用できます。
         </para>
 
         <para>
-            HibernateÝ’èƒtƒ@ƒCƒ‹‚ÅHQL query substitutions‚ð’è‹`‚·‚ê‚΁Aboolean’l‚ðŽ®‚Ì’†‚ÅŠÈ’P‚ÉŽg—p‚Å‚«‚܁BF
+            Hibernate設定ファイルでHQL query substitutionsを定義すれば、boolean値を式の中で簡単に使用できま。:
         </para>
 
         <programlisting><![CDATA[<property name="hibernate.query.substitutions">true 1, false 0</property>]]></programlisting>
 
         <para>
-            ‚±‚¤‚·‚邱‚Ƃʼnº‹L‚ÌHQL‚ðSQL‚É•ÏŠ·‚·‚é‚Æ‚«‚É <literal>true</literal> ,
-             <literal>false</literal> ƒL[ƒ[ƒh‚Í <literal>1</literal> , <literal>0</literal> ‚É’u‚«Š·‚¦‚ç‚ê‚Ü‚·B:
+            こうすることで下記のHQLをSQLに変換するときに <literal>true</literal> ,
+             <literal>false</literal> キーワードは <literal>1</literal> , <literal>0</literal> に置き換えられます。:
         </para>
 
         <programlisting><![CDATA[from Cat cat where cat.alive = true]]></programlisting>
 
         <para>
-            “Á•Ê‚ȃvƒƒpƒeƒB <literal>size</literal>A‚Ü‚½‚Í“Á•Ê‚Ȋ֐” <literal>size()</literal> 
-            ‚ðŽg‚Á‚ăRƒŒƒNƒVƒ‡ƒ“‚̃TƒCƒY‚ðƒeƒXƒg‚Å‚«‚Ü‚·B:
+            特別なプロパティ <literal>size</literal>、または特別な関数 <literal>size()</literal> 
+            を使ってコレクションのサイズをテストできます。:
         </para>
 
         <programlisting><![CDATA[from Cat cat where cat.kittens.size > 0]]></programlisting>
@@ -680,10 +682,10 @@
         <programlisting><![CDATA[from Cat cat where size(cat.kittens) > 0]]></programlisting>
 
         <para>
-            ƒCƒ“ƒfƒbƒNƒX•t‚«‚̃RƒŒƒNƒVƒ‡ƒ“‚ł́A<literal>minindex</literal> ‚Æ <literal>maxindex</literal> 
-            ŠÖ”‚ðŽg‚Á‚āAƒCƒ“ƒfƒbƒNƒX‚̍ŏ¬’l‚ƍőå’l‚ðŽQÆ‚Å‚«‚Ü‚·B
-            “¯—l‚ɁA<literal>minelement</literal> ‚Æ <literal>maxelement</literal> ‚ðŽg‚Á‚āA
-            Šî–{Œ^‚̃RƒŒƒNƒVƒ‡ƒ“—v‘f‚̍ŏ¬’l‚ƍőå’l‚ðŽQÆ‚Å‚«‚Ü‚·B
+            インデックス付きのコレクションでは、<literal>minindex</literal> と <literal>maxindex</literal> 
+            関数を使って、インデックスの最小値と最大値を参照できます。
+            同様に、<literal>minelement</literal> と <literal>maxelement</literal> を使って、
+            基本型のコレクション要素の最小値と最大値を参照できます。
         </para>
         
         <programlisting><![CDATA[from Calendar cal where maxelement(cal.holidays) > current_date]]></programlisting>
@@ -693,9 +695,9 @@
         <programlisting><![CDATA[from Order order where minelement(order.items) > 10000]]></programlisting>
         
         <para>
-            ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚âƒCƒ“ƒfƒbƒNƒX‚̃Zƒbƒgi<literal>elements</literal> ‚Æ <literal>indices</literal> 
-            ŠÖ”jA‚Ü‚½‚Í•›–â‚¢‡‚킹iŒãqj‚ÌŒ‹‰Ê‚ªŽó‚¯Žæ‚ê‚é‚Æ‚«‚́A
-            SQLŠÖ” <literal>any, some, all, exists, in</literal> ‚ªƒTƒ|[ƒg‚³‚ê‚Ü‚·B
+            コレクションの要素やインデックスのセット(<literal>elements</literal> と <literal>indices</literal> 
+            関数)、または副問い合わせ(後述)の結果が受け取れるときは、
+            SQL関数 <literal>any, some, all, exists, in</literal> がサポートされます。
         </para>
 
         <programlisting><![CDATA[select mother from Cat as mother, Cat as kit
@@ -713,12 +715,12 @@
         <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
+            <literal>maxelement</literal> はHibernate3のwhere節だけで利用可能であることに注意してください。
         </para>
         
         <para>
-            ƒCƒ“ƒfƒbƒNƒX•t‚«‚̃RƒŒƒNƒVƒ‡ƒ“iarrays, lists, mapsj‚Ì—v‘f‚́A
-            ƒCƒ“ƒfƒbƒNƒX‚ÅŽQÆ‚Å‚«‚Ü‚·iwhereß“à‚ł̂݁jB
+            インデックス付きのコレクション(arrays, lists, maps)の要素は、
+            インデックスで参照できます(where節内でのみ)。
         </para>
         
         <programlisting><![CDATA[from Order order where order.items[0].id = 1234]]></programlisting>
@@ -734,14 +736,14 @@
 where order.items[ maxindex(order.items) ] = item and order.id = 11]]></programlisting>
 
         <para>
-            <literal>[]</literal> “à•”‚ÌŽ®‚́AŽZpŽ®‚Å‚à\‚¢‚Ü‚¹‚ñB
+            <literal>[]</literal> 内部の式は、算術式でも構いません。
         </para>
         
         <programlisting><![CDATA[select item from Item item, Order order
 where order.items[ size(order.items) - 1 ] = item]]></programlisting>
         
         <para>
-            ˆê‘Α½ŠÖ˜A‚â’l‚̃RƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚ɑ΂µ‚ẮAHQL‚Í‘g‚ݍž‚Ý‚Ì <literal>index()</literal> ŠÖ”‚à—pˆÓ‚µ‚Ä‚¢‚Ü‚·B
+            一対多関連や値のコレクションの要素に対しては、HQLは組み込みの <literal>index()</literal> 関数も用意しています。
         </para>
 
         <programlisting><![CDATA[select item, index(item) from Order order 
@@ -749,13 +751,13 @@
 where index(item) < 5]]></programlisting>
 
         <para>
-            ƒx[ƒX‚Æ‚È‚éƒf[ƒ^ƒx[ƒX‚ªƒTƒ|[ƒg‚µ‚Ä‚¢‚éƒXƒJƒ‰[SQLŠÖ”‚ªŽg—p‚Å‚«‚Ü‚·
+            ベースとなるデータベースがサポートしているスカラーSQL関数が使用できます
         </para>
 
         <programlisting><![CDATA[from DomesticCat cat where upper(cat.name) like 'FRI%']]></programlisting>
 
         <para>
-            ‚à‚µ‚Ü‚¾‘S‚Ä‚ð—‰ð‚µ‚Ä‚¢‚È‚¢‚È‚çA‰º‚̃NƒGƒŠ‚ðSQL‚łǂꂾ‚¯’·‚­A“ǂ݂Â炭o—ˆ‚é‚©l‚¦‚Ä‚­‚¾‚³‚¢B: 
+            もしまだ全てを理解していないなら、下のクエリをSQLでどれだけ長く、読みづらく出来るか考えてください。: 
             
         </para>
 
@@ -768,7 +770,7 @@
     and prod = all elements(cust.currentOrder.lineItems)]]></programlisting>
 
         <para>
-            <emphasis>ƒqƒ“ƒg:</emphasis> —Ⴆ‚΂±‚̂悤‚ɏo—ˆ‚Ü‚·B
+            <emphasis>ヒント:</emphasis> 例えばこのように出来ます。
         </para>
 
         <programlisting><![CDATA[SELECT cust.name, cust.address, cust.phone, cust.id, cust.current_order
@@ -792,25 +794,25 @@
     </sect1>
 
     <sect1 id="queryhql-ordering">
-        <title>order byß</title>
+        <title>order by節</title>
 
         <para>
-            ƒNƒGƒŠ‚ª•Ô‚·list‚́A•Ô‚³‚ê‚éƒNƒ‰ƒX‚âƒRƒ“ƒ|[ƒlƒ“ƒg‚Ì”CˆÓ‚Ì‘®«‚É‚æ‚Á‚Ä•À‚בւ¦‚ç‚ê‚Ü‚·BF
+            クエリが返すlistは、返されるクラスやコンポーネントの任意の属性によって並べ替えられます。:
         </para>
 
         <programlisting><![CDATA[from DomesticCat cat
 order by cat.name asc, cat.weight desc, cat.birthdate]]></programlisting>
 
         <para>
-            ƒIƒvƒVƒ‡ƒ“‚Ì <literal>asc</literal> ‚Æ <literal>desc</literal> ‚Í‚»‚ꂼ‚ꏸ‡‚©~‡‚̐®—ñ‚ðŽ¦‚µ‚Ü‚·B
+            オプションの <literal>asc</literal> と <literal>desc</literal> はそれぞれ昇順か降順の整列を示します。
         </para>
     </sect1>
 
     <sect1 id="queryhql-grouping">
-        <title>group byß</title>
+        <title>group by節</title>
 
         <para>
-           W–ñ’l‚ð•Ô‚·ƒNƒGƒŠ‚́A•Ô‚³‚ê‚éƒNƒ‰ƒX‚âƒRƒ“ƒ|[ƒlƒ“ƒg‚Ì”CˆÓ‚̃vƒƒpƒeƒB‚É‚æ‚Á‚ăOƒ‹[ƒv‰»‚Å‚«‚Ü‚·B:
+           集約値を返すクエリは、返されるクラスやコンポーネントの任意のプロパティによってグループ化できます。:
         </para>
 
         <programlisting><![CDATA[select cat.color, sum(cat.weight), count(cat) 
@@ -822,7 +824,7 @@
 group by foo.id]]></programlisting>
 
         <para>
-            <literal>having</literal> ß‚àŽg‚¦‚Ü‚·B
+            <literal>having</literal> 節も使えます。
         </para>
 
         <programlisting><![CDATA[select cat.color, sum(cat.weight), count(cat) 
@@ -831,9 +833,9 @@
 having cat.color in (eg.Color.TABBY, eg.Color.BLACK)]]></programlisting>
 
         <para>
-            ‚à‚µŽg—p‚·‚éƒf[ƒ^ƒx[ƒX‚ªƒTƒ|[ƒg‚µ‚Ä‚¢‚é‚È‚çA
-            <literal>having</literal> ‚Æ <literal>order by</literal> ß‚ÅSQLŠÖ”‚ƏW–ñŠÖ”‚ªŽg‚¦‚Ü‚·
-            i—Ⴆ‚ÎMySQL‚É‚Í‚ ‚è‚Ü‚¹‚ñjB
+            もし使用するデータベースがサポートしているなら、
+            <literal>having</literal> と <literal>order by</literal> 節でSQL関数と集約関数が使えます
+            (例えばMySQLにはありません)。
         </para>
 
         <programlisting><![CDATA[select cat
@@ -844,19 +846,19 @@
 order by count(kitten) asc, sum(kitten.weight) desc]]></programlisting>
 
         <para>
-            <literal>group by</literal> ß‚â <literal>order by</literal> ß‚É
-            ŽZpŽ®‚ðŠÜ‚Þ‚±‚Æ‚ª‚Å‚«‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+            <literal>group by</literal> 節や <literal>order by</literal> 節に
+            算術式を含むことができないことに注意してください。
         </para>
 
     </sect1>
     
     <sect1 id="queryhql-subqueries" revision="2">
-        <title>•›–â‚¢‡‚킹</title>
+        <title>副問い合わせ</title>
         
         <para>
-            ƒTƒuƒZƒŒƒNƒg‚ðƒTƒ|[ƒg‚·‚éƒf[ƒ^ƒx[ƒX‚Ì‚½‚߁AHibernate‚Í•›–â‚¢‡‚킹‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B
-            •›–â‚¢‡‚킹‚ÍŠ‡ŒÊ‚ň͂܂Ȃ¯‚ê‚΂Ȃè‚Ü‚¹‚ñiSQL‚̏W–ñŠÖ”ŒÄ‚яo‚µ‚É‚æ‚鎖‚ª‘½‚¢‚Å‚·jB
-            ŠÖ˜A•›–â‚¢‡‚킹(ŠO•”ƒNƒGƒŠ’†‚Ì•Ê–¼‚ðŽQÆ‚·‚é•›–â‚¢‡‚킹‚Ì‚±‚Æ)‚³‚¦‹–‰Â‚³‚ê‚Ü‚·B 
+            サブセレクトをサポートするデータベースのため、Hibernateは副問い合わせをサポートしています。
+            副問い合わせは括弧で囲まなければなりません(SQLの集約関数呼び出しによる事が多いです)。
+            関連副問い合わせ(外部クエリ中の別名を参照する副問い合わせのこと)さえ許可されます。 
         </para>
 
         <programlisting><![CDATA[from Cat as fatcat 
@@ -883,11 +885,11 @@
 from Cat as cat]]></programlisting>
 
         <para>
-            HQL•›–â‚¢‡‚킹‚́Aselect‚Ü‚½‚Íwhereß‚¾‚¯‚ÅŽg‚í‚ê‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+            HQL副問い合わせは、selectまたはwhere節だけで使われることに注意してください。
         </para>
 
         <para>
-            selectƒŠƒXƒg‚É•¡”‚ÌŽ®‚ðŽ‚Â•›–â‚¢‡‚킹‚ɂ́Aƒ^ƒvƒ‹‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
+            selectリストに複数の式を持つ副問い合わせには、タプルを使うことができます。
         </para>
         
         <programlisting><![CDATA[from Cat as cat 
@@ -896,43 +898,43 @@
 )]]></programlisting>
 
         <para>
-            ‚¢‚­‚‚©‚̃f[ƒ^ƒx[ƒXiOracle‚âHSQL‚É‚Í‚ ‚è‚Ü‚¹‚ñj‚ł́A
-            ‘¼‚̃Rƒ“ƒeƒLƒXƒg‚Å‚àƒ^ƒvƒ‹‚ªŽg‚¦‚Ü‚·B
-            —Ⴆ‚΁AƒNƒGƒŠƒRƒ“ƒ|[ƒlƒ“ƒg‚â•¡‡ƒ†[ƒUŒ^‚É‚¨‚¢‚Ä‚Å‚·B
+            いくつかのデータベース(OracleやHSQLにはありません)では、
+            他のコンテキストでもタプルが使えます。
+            例えば、クエリコンポーネントや複合ユーザ型においてです。
         </para>
 
         <programlisting><![CDATA[from Person where name = ('Gavin', 'A', 'King')]]></programlisting>
         
         <para>
-            “¯“™‚Å‚·‚ªA‚æ‚èç’·‚ȃNƒGƒŠ‚Å‚·F
+            同等ですが、より冗長なクエリです:
         </para>
         
         <programlisting><![CDATA[from Person where name.first = 'Gavin' and name.initial = 'A' and name.last = 'King')]]></programlisting>
 
         <para>
-            ‚±‚̂悤‚È‚±‚Æ‚ð‚µ‚½‚­‚È‚¢‚Ì‚É‚Í2‚‚̗—R‚ª‚ ‚è‚Ü‚·F
-            1‚–ڂ́Aƒf[ƒ^ƒx[ƒXƒvƒ‰ƒbƒgƒtƒH[ƒ€ŠÔ‚ÅŠ®‘S‚Ȍ݊·«‚Í‚È‚¢‚©‚ç‚Å‚·B
-            2‚–ڂ́AƒNƒGƒŠ‚ªƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚̃vƒƒpƒeƒB‚̏‡˜‚Ɉˑ¶‚·‚é‚©‚ç‚Å‚·B
+            このようなことをしたくないのには2つの理由があります:
+            1つ目は、データベースプラットフォーム間で完全な互換性はないからです。
+            2つ目は、クエリがマッピングドキュメントのプロパティの順序に依存するからです。
         </para>
         
     </sect1>
 
     <sect1 id="queryhql-examples">
-        <title>HQL‚Ì—á</title>
+        <title>HQLの例</title>
         
         <para>
-            HibernateƒNƒGƒŠ‚Í”ñí‚É‹­—Í‚Å•¡ŽG‚É‚Å‚«‚Ü‚·BŽÀÛAƒNƒGƒŠŒ¾Œê‚̈З͂ÍHibernate‚ÌŽå—v‚ȃZ[ƒ‹ƒXƒ|ƒCƒ“ƒg‚̈ê‚‚ł·B
-            ‚±‚±‚ɍŋ߂̃vƒƒWƒFƒNƒg‚ÅŽg—p‚µ‚½ƒNƒGƒŠ‚Æ”ñí‚É‚æ‚­Ž—‚½—Ⴊ‚ ‚è‚Ü‚·B
-            ‚Ù‚Æ‚ñ‚ǂ̃NƒGƒŠ‚Í‚±‚ê‚ç‚Ì—á‚æ‚èŠÈ’P‚É‹Lq‚Å‚«‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢!
+            Hibernateクエリは非常に強力で複雑にできます。実際、クエリ言語の威力はHibernateの主要なセールスポイントの一つです。
+            ここに最近のプロジェクトで使用したクエリと非常によく似た例があります。
+            ほとんどのクエリはこれらの例より簡単に記述できることに注意してください!
         </para>
         
         <para>
-            ˆÈ‰º‚̃NƒGƒŠ‚Í“Á’è‚̌ڋq‚Æ—^‚¦‚ç‚ꂽÅ¬‚̍‡Œv’l‚ɑ΂·‚é–¢•¥‚¢’•¶‚Ì’•¶IDA
-            ¤•i‚̐”A’•¶‚̍‡Œv‚ð‡Œv’l‚Ő®—ñ‚µ‚Ä•Ô‚µ‚Ü‚·B
-            ‰¿Ši‚ðŒˆ’è‚·‚éÛAŒ»Ý‚̃Jƒ^ƒƒO‚ðŽg‚¢‚Ü‚·BŒ‹‰Ê‚Æ‚µ‚Ä•Ô‚³‚ê‚éSQLƒNƒGƒŠ‚Í
+            以下のクエリは特定の顧客と与えられた最小の合計値に対する未払い注文の注文ID、
+            商品の数、注文の合計を合計値で整列して返します。
+            価格を決定する際、現在のカタログを使います。結果として返されるSQLクエリは
             <literal>ORDER</literal>, <literal>ORDER_LINE</literal>, <literal>PRODUCT</literal>,
-            <literal>CATALOG</literal> ‚¨‚æ‚Ñ <literal>PRICE</literal> ƒe[ƒuƒ‹‚ɑ΂µ4‚Â‚Ì“à•”Œ‹‡‚Æ
-            (ŠÖ˜A‚µ‚È‚¢)•›–â‚¢‡‚킹‚ðŽ‚¿‚Ü‚·B
+            <literal>CATALOG</literal> および <literal>PRICE</literal> テーブルに対し4つの内部結合と
+            (関連しない)副問い合わせを持ちます。
         </para>
         
         <programlisting><![CDATA[select order.id, sum(price.amount), count(item)
@@ -955,7 +957,7 @@
 order by sum(price.amount) desc]]></programlisting>
         
         <para>
-            ‰½‚Ä‹‘å‚ȃNƒGƒŠ‚È‚Ì‚Å‚µ‚傤! •’iŽ„‚Í•›–â‚¢‡‚킹‚ð‚ ‚Ü‚èŽg‚¢‚Ü‚¹‚ñB‚µ‚½‚ª‚Á‚ÄŽ„‚̃NƒGƒŠ‚ÍŽÀÛ‚ɂ͈ȉº‚̂悤‚É‚È‚è‚Ü‚·B:
+            何て巨大なクエリなのでしょう! 普段私は副問い合わせをあまり使いません。したがって私のクエリは実際には以下のようになります。:
         </para>
         
         <programlisting><![CDATA[select order.id, sum(price.amount), count(item)
@@ -973,10 +975,10 @@
 order by sum(price.amount) desc]]></programlisting>
         
         <para>
-            ŽŸ‚̃NƒGƒŠ‚ÍŠeƒXƒe[ƒ^ƒX‚ÌŽx•¥‚¢”‚𐔂¦‚Ü‚·B‚½‚¾‚µ‚·‚ׂĂ̎x•¥‚¢‚ªŒ»Ý‚Ì—˜—pŽÒ‚É‚æ‚é
-            ÅV‚̃Xƒe[ƒ^ƒX•ÏX‚Å‚ ‚é <literal>AWAITING_APPROVAL</literal> ‚Å‚ ‚éê‡‚ðœ‚«‚Ü‚·B
-            ‚±‚̃NƒGƒŠ‚Í2‚Â‚Ì“à•”Œ‹‡‚Æ <literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal> ‚¨‚æ‚Ñ 
-            <literal>PAYMENT_STATUS_CHANGE</literal> ƒe[ƒuƒ‹‚ɑ΂·‚éŠÖ˜A•›–â‚¢‡‚킹‚ð”õ‚¦‚½SQLƒNƒGƒŠ‚É•ÏŠ·‚³‚ê‚Ü‚·B
+            次のクエリは各ステータスの支払い数を数えます。ただしすべての支払いが現在の利用者による
+            最新のステータス変更である <literal>AWAITING_APPROVAL</literal> である場合を除きます。
+            このクエリは2つの内部結合と <literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal> および 
+            <literal>PAYMENT_STATUS_CHANGE</literal> テーブルに対する関連副問い合わせを備えたSQLクエリに変換されます。
         </para>
 
         <programlisting><![CDATA[select count(payment), status.name 
@@ -996,8 +998,8 @@
 order by status.sortOrder]]></programlisting>
 
         <para>
-            ‚à‚µŽ„‚ªset‚Ì‘ã‚í‚è‚Élist‚Æ‚µ‚Ä <literal>statusChanges</literal> ƒRƒŒƒNƒVƒ‡ƒ“‚ð
-            ƒ}ƒbƒsƒ“ƒO‚µ‚½‚È‚ç‚΁A‚Í‚é‚©‚ÉŠÈ’P‚ɃNƒGƒŠ‚ð‹Lq‚Å‚«‚é‚Å‚µ‚傤B
+            もし私がsetの代わりにlistとして <literal>statusChanges</literal> コレクションを
+            マッピングしたならば、はるかに簡単にクエリを記述できるでしょう。
         </para>
     
         <programlisting><![CDATA[select count(payment), status.name 
@@ -1009,13 +1011,13 @@
 order by status.sortOrder]]></programlisting>
 
         <para>
-            ŽŸ‚̃NƒGƒŠ‚ÍŒ»Ý‚̃†[ƒU‚ªŠ‘®‚·‚é‘gD‚ɑ΂·‚éƒAƒJƒEƒ“ƒg‚¨‚æ‚Ñ–¢•¥‚¢‚ÌŽx•¥‚¢‚ð
-            ‚·‚ׂĕԂ·MS SQL Server
-            ‚Ì <literal>isNull()</literal> ŠÖ”‚ðŽg—p‚µ‚Ä‚¢‚Ü‚·B
-            ‚±‚̃NƒGƒŠ‚Í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
+            次のクエリは現在のユーザが所属する組織に対するアカウントおよび未払いの支払いを
+            すべて返すMS SQL Server
+            の <literal>isNull()</literal> 関数を使用しています。
+            このクエリは3つの内部結合と1つの外部結合 、
+            そして <literal>ACCOUNT</literal>, <literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal>,
+            <literal>ACCOUNT_TYPE</literal>, <literal>ORGANIZATION</literal> および 
+            <literal>ORG_USER</literal> テーブルに対する副問い合わせ持ったSQLに変換されます。
         </para>
 
         <programlisting><![CDATA[select account, payment
@@ -1026,7 +1028,7 @@
 order by account.type.sortOrder, account.accountNumber, payment.dueDate]]></programlisting>
 
         <para>
-            ‚¢‚­‚‚©‚̃f[ƒ^ƒx[ƒX‚ɂ‚¢‚ẮA(ŠÖ˜A‚³‚¹‚ç‚ꂽ)•›–â‚¢‡‚킹‚ÌŽg—p‚ð”ð‚¯‚é•K—v‚ª‚ ‚é‚Å‚µ‚傤B
+            いくつかのデータベースについては、(関連させられた)副問い合わせの使用を避ける必要があるでしょう。
         </para>
 
         <programlisting><![CDATA[select account, payment
@@ -1040,12 +1042,12 @@
    </sect1>
 
     <sect1 id="queryhql-bulk" revision="2">
-        <title>‘å—Ê‚ÌUPDATE‚ÆDELETE</title>
+        <title>大量のUPDATEとDELETE</title>
 
         <para>
-            HQL‚͍¡‚Í <literal>update</literal> ‚Æ <literal>delete</literal>A<literal>insert ... select ...</literal>
-            ƒXƒe[ƒgƒƒ“ƒg‚ðHQL‚É“ü‚ê‚邱‚Æ‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B
-            <xref linkend="batch-direct"/> ‚ɏڍׂª‚ ‚è‚Ü‚·B
+            HQLは今は <literal>update</literal> と <literal>delete</literal>、<literal>insert ... select ...</literal>
+            ステートメントをHQLに入れることをサポートしています。
+            <xref linkend="batch-direct"/> に詳細があります。
         </para>
     </sect1>
 
@@ -1053,13 +1055,13 @@
         <title>Tips &amp; Tricks</title>
 
         <para>
-            ŽÀÛ‚ÉŒ‹‰Ê‚ð•Ô‚³‚È‚­‚Ä‚àƒNƒGƒŠ‚ÌŒ‹‰Ê”‚𐔂¦‚邱‚Æ‚ª‚Å‚«‚Ü‚·B:
+            実際に結果を返さなくてもクエリの結果数を数えることができます。:
         </para>
 
         <programlisting><![CDATA[( (Integer) session.createQuery("select count(*) from ....").iterate().next() ).intValue()]]></programlisting>
 
         <para>
-            ƒRƒŒƒNƒVƒ‡ƒ“‚̃TƒCƒY‚É‚æ‚茋‰Ê‚ð•À‚בւ¦‚邽‚߂ɂ͈ȉº‚̃NƒGƒŠ‚ðŽg—p‚µ‚Ü‚·B:
+            コレクションのサイズにより結果を並べ替えるためには以下のクエリを使用します。:
         </para>
 
         <programlisting><![CDATA[select usr.id, usr.name
@@ -1069,13 +1071,13 @@
 order by count(msg)]]></programlisting>
 
         <para>
-            Žg—p‚µ‚Ä‚¢‚éƒf[ƒ^ƒx[ƒX‚ªƒTƒuƒZƒŒƒNƒg‚ðƒTƒ|[ƒg‚·‚éê‡AƒNƒGƒŠ‚Ìwhereß‚ŃTƒCƒY‚É‚æ‚é‘I‘ððŒ‚ðÝ’è‚Å‚«‚Ü‚·:
+            使用しているデータベースがサブセレクトをサポートする場合、クエリのwhere節でサイズによる選択条件を設定できます:
         </para>
 
         <programlisting><![CDATA[from User usr where size(usr.messages) >= 1]]></programlisting>
 
         <para>
-            Žg—p‚µ‚Ä‚¢‚éƒf[ƒ^ƒx[ƒX‚ªƒTƒuƒZƒŒƒNƒg‚ðƒTƒ|[ƒg‚µ‚È‚¢ê‡‚́AŽŸ‚̃NƒGƒŠ‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢:  
+            使用しているデータベースがサブセレクトをサポートしない場合は、次のクエリを使用してください:  
         </para>
 
         <programlisting><![CDATA[select usr.id, usr.name
@@ -1085,8 +1087,8 @@
 having count(msg) >= 1]]></programlisting>
 
         <para>
-            “à•”Œ‹‡‚ð‚µ‚Ä‚¢‚邹‚¢‚ŏã‚Ì‰ðŒˆ–@‚ªmessage‚ÌŒ”‚ª
-            ƒ[ƒ‚Ì <literal>User</literal> ‚ð•Ô‚·‚±‚Æ‚ª‚Å‚«‚È‚¢‚È‚ç‚΁AˆÈ‰º‚ÌŒ`Ž®‚ªŽg‚¦‚Ü‚·B
+            内部結合をしているせいで上の解決法がmessageの件数が
+            ゼロの <literal>User</literal> を返すことができないならば、以下の形式が使えます。
         </para>
 
         <programlisting><![CDATA[select usr.id, usr.name
@@ -1096,7 +1098,7 @@
 having count(msg) = 0]]></programlisting>
 
         <para>
-            JavaBean‚̃vƒƒpƒeƒB‚́A–¼‘O•t‚«‚̃NƒGƒŠƒpƒ‰ƒ[ƒ^‚ÉŒ‹‚т‚¯‚邱‚Æ‚ªo—ˆ‚Ü‚·BF
+            JavaBeanのプロパティは、名前付きのクエリパラメータに結びつけることが出来ます。:
         </para>
 
         <programlisting><![CDATA[Query q = s.createQuery("from foo Foo as foo where foo.name=:name and foo.size=:size");
@@ -1104,7 +1106,7 @@
 List foos = q.list();]]></programlisting>
 
         <para>
-            ƒRƒŒƒNƒVƒ‡ƒ“‚̓tƒBƒ‹ƒ^•t‚« <literal>Query</literal> ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽg—p‚·‚邱‚ƂŃy[ƒW‚ð‚‚¯‚邱‚Æ‚ª‚Å‚«‚Ü‚·B:
+            コレクションはフィルタ付き <literal>Query</literal> インターフェイスを使用することでページをつけることができます。:
         </para>
 
         <programlisting><![CDATA[Query q = s.createFilter( collection, "" ); // the trivial filter
@@ -1113,14 +1115,14 @@
 List page = q.list();]]></programlisting>
 
         <para>
-            ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚̓NƒGƒŠƒtƒBƒ‹ƒ^‚ðŽ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>
-            ƒRƒŒƒNƒVƒ‡ƒ“‚ð‰Šú‰»‚¹‚¸‚ɃRƒŒƒNƒVƒ‡ƒ“‚̃TƒCƒY‚𓾂邱‚Æ‚ª‚Å‚«‚Ü‚·B: 
+            コレクションを初期化せずにコレクションのサイズを得ることができます。: 
         </para>
 
         <programlisting><![CDATA[( (Integer) session.createQuery("select count(*) from ....").iterate().next() ).intValue();]]></programlisting>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_sql.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_sql.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_sql.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,41 +1,43 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="querysql" revision="2">
-  <title>ƒlƒCƒeƒBƒuSQL</title>
+  <title>ネイティブSQL</title>
 
-  <para>ƒf[ƒ^ƒx[ƒX‚̃lƒCƒeƒBƒuSQL•ûŒ¾‚ðŽg‚Á‚ăNƒGƒŠ‚ð•\Œ»‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B
-  ƒNƒGƒŠƒqƒ“ƒg‚âOracle‚Ì <literal>CONNECT</literal> ƒL[ƒ[ƒh‚̂悤‚ɁA
-  ƒf[ƒ^ƒx[ƒX“ÆŽ©‚Ì‹@”\‚ð—˜—p‚µ‚½‚¢‚Æ‚«‚ÉŽg‚¦‚Ü‚·B
-  SQL/JDBC‚𒼐ڎg—p‚µ‚Ä‚¢‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚©‚çHibernate‚ւ̈ڍs‚à—eˆÕ‚É‚µ‚Ä‚¢‚Ü‚·B</para>
+  <para>データベースのネイティブSQL方言を使ってクエリを表現することもできます。
+  クエリヒントやOracleの <literal>CONNECT</literal> キーワードのように、
+  データベース独自の機能を利用したいときに使えます。
+  SQL/JDBCを直接使用しているアプリケーションからHibernateへの移行も容易にしています。</para>
 
-  <para>Hibernate3‚ł́A¶¬AXVAíœA“ǂݍž‚ݏˆ—‚̂悤‚È‚·‚ׂĂÌ
-  SQLiƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚ðŠÜ‚ށj‚ðŽè‘‚«‚Å‚«‚Ü‚·B</para>
+  <para>Hibernate3では、生成、更新、削除、読み込み処理のようなすべての
+  SQL(ストアドプロシージャを含む)を手書きできます。</para>
 
   <sect1 id="querysql-creating" revision="4">
-    <title><literal>SQLQuery</literal> ‚ÌŽg—p</title>
+    <title><literal>SQLQuery</literal> の使用</title>
 
-    <para>ƒlƒCƒeƒBƒu‚ÈSQLƒNƒGƒŠ‚ÌŽÀs‚Í <literal>SQLQuery</literal>
-    ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ð’Ê‚µ‚ЧŒä‚µ‚Ü‚·B
-    <literal>SQLQuery</literal> ƒCƒ“ƒ^[ƒtƒFƒCƒX‚Í
-    <literal>Session.createSQLQuery()</literal> ‚ðŒÄ‚яo‚µ‚Ď擾‚µ‚Ü‚·B
-    ‚±‚ÌAPI‚ðŽg‚Á‚Ä–â‚¢‡‚킹‚·‚é•û–@‚ðˆÈ‰º‚Åà–¾‚µ‚Ü‚·B</para>
+    <para>ネイティブなSQLクエリの実行は <literal>SQLQuery</literal>
+    インターフェイスを通して制御します。
+    <literal>SQLQuery</literal> インターフェイスは
+    <literal>Session.createSQLQuery()</literal> を呼び出して取得します。
+    このAPIを使って問い合わせする方法を以下で説明します。</para>
 
     <sect2>
-      <title>ƒXƒJƒ‰[‚̃NƒGƒŠ</title>
+      <title>スカラーのクエリ</title>
 
-      <para>Å‚àŠî–{“I‚ÈSQLƒNƒGƒŠ‚̓XƒJƒ‰[i’lj‚̃ŠƒXƒg‚𓾂邱‚Æ‚Å‚·B</para>
+      <para>最も基本的なSQLクエリはスカラー(値)のリストを得ることです。</para>
 
       <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM CATS").list();
 sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").list();
 ]]></programlisting>
 
-      <para>‚±‚ê‚ç‚Í‚Ç‚¿‚ç‚àACATSƒe[ƒuƒ‹‚ÌŠeƒJƒ‰ƒ€‚̃XƒJƒ‰[’l‚ðŠÜ‚Þ
-      Object”z—ñiObject[]j‚̃ŠƒXƒg‚ð•Ô‚µ‚Ü‚·B
-      •Ô‚·ƒXƒJƒ‰[’l‚ÌŽÀÛ‚̏‡”Ô‚ÆŒ^‚𐄒肷‚邽‚߂ɁA
-      Hibernate‚ÍResultSetMetadata‚ðŽg—p‚µ‚Ü‚·B</para>
+      <para>これらはどちらも、CATSテーブルの各カラムのスカラー値を含む
+      Object配列(Object[])のリストを返します。
+      返すスカラー値の実際の順番と型を推定するために、
+      HibernateはResultSetMetadataを使用します。</para>
 
-      <para><literal>ResultSetMetadata</literal> ‚ðŽg—p‚·‚éƒI[ƒo[ƒwƒbƒh‚ð”ð‚¯‚é‚½‚߁A
-      ‚à‚µ‚­‚Í’P‚ɉ½‚ª•Ô‚³‚ê‚é‚©–¾Šm‚É‚·‚邽‚߁A<literal>addScalar()</literal>
-      ‚ðŽg‚¦‚Ü‚·B</para>
+      <para><literal>ResultSetMetadata</literal> を使用するオーバーヘッドを避けるため、
+      もしくは単に何が返されるか明確にするため、<literal>addScalar()</literal>
+      を使えます。</para>
 
       <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM CATS")
  .addScalar("ID", Hibernate.LONG)
@@ -43,28 +45,28 @@
  .addScalar("BIRTHDATE", Hibernate.DATE)
 ]]></programlisting>
 
-      <para>‚±‚̃NƒGƒŠ‚ÅŽw’肳‚ê‚Ä‚¢‚é‚à‚Ì‚ð‰º‹L‚ÉŽ¦‚µ‚Ü‚·B</para>
+      <para>このクエリで指定されているものを下記に示します。</para>
 
       <itemizedlist>
         <listitem>
-          <para>SQLƒNƒGƒŠ•¶Žš—ñ</para>
+          <para>SQLクエリ文字列</para>
         </listitem>
 
         <listitem>
-          <para>•Ô‚³‚ê‚éƒJƒ‰ƒ€‚ÆŒ^</para>
+          <para>返されるカラムと型</para>
         </listitem>
       </itemizedlist>
 
-      <para>‚±‚ê‚Í‚Ü‚¾Object”z—ñ‚ð•Ô‚µ‚Ü‚·‚ªA
-      <literal>ResultSetMetdata</literal> ‚ðŽg—p‚µ‚Ü‚¹‚ñB
-      ‚½‚¾‚µA‚»‚Ì‘ã‚í‚è‚ÉŠî‘b‚É‚ ‚郊ƒUƒ‹ƒgƒZƒbƒg‚©‚ç
-      IDANAMEABIRTHDATE ƒJƒ‰ƒ€‚ð‚»‚ê‚¼‚ê
-      LongAStringAShort ‚Æ‚µ‚Ä–¾Ž¦“I‚Ɏ擾‚µ‚Ü‚·B
-      ‚±‚ê‚Í‚R‚‚̃Jƒ‰ƒ€‚ð•Ô‚·‚Ì‚Ý‚Å‚ ‚邱‚Æ‚àˆÓ–¡‚µ‚Ü‚·B
-      ‚½‚Æ‚¦AƒNƒGƒŠ‚ª <literal>*</literal> ‚ðŽg—p‚µA
-      —ñ‹“‚µ‚½‚R‚‚æ‚葽‚­‚̃Jƒ‰ƒ€‚ð•Ô‚¹‚é‚Æ‚µ‚Ä‚à‚Å‚·B</para>
+      <para>これはまだObject配列を返しますが、
+      <literal>ResultSetMetdata</literal> を使用しません。
+      ただし、その代わりに基礎にあるリザルトセットから
+      ID、NAME、BIRTHDATE カラムをそれぞれ
+      Long、String、Short として明示的に取得します。
+      これは3つのカラムを返すのみであることも意味します。
+      たとえ、クエリが <literal>*</literal> を使用し、
+      列挙した3つより多くのカラムを返せるとしてもです。</para>
 
-      <para>ƒXƒJƒ‰[‚ÌŒ^î•ñ‚ðÈ‚­‚±‚Æ‚à‚Å‚«‚Ü‚·B</para>
+      <para>スカラーの型情報を省くこともできます。</para>
 
       <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM CATS")
  .addScalar("ID", Hibernate.LONG)
@@ -73,68 +75,68 @@
 ]]></programlisting>
 
       <para>
-      ‚±‚ê‚Í–{Ž¿“I‚É‘O‚Æ“¯‚¶ƒNƒGƒŠ‚Å‚·‚ªAA
-      NAME ‚Æ BIRTHDATE ‚ÌŒ^‚ðŒˆ‚ß‚é‚½‚ß‚É <literal>ResultSetMetaData</literal>
-      ‚ðŽg—p‚µ‚Ü‚·Bˆê•ûAID ‚ÌŒ^‚Í–¾Ž¦“I‚ÉŽw’肳‚ê‚Ä‚¢‚Ü‚·B
+      これは本質的に前と同じクエリですが、、
+      NAME と BIRTHDATE の型を決めるために <literal>ResultSetMetaData</literal>
+      を使用します。一方、ID の型は明示的に指定されています。
       </para>
 
       <para>
-      ResultSetMetaData ‚©‚ç•Ô‚³‚ê‚é java.sql.Types ‚ð Hibernate ‚ÌŒ^‚É
-      ƒ}ƒbƒsƒ“ƒO‚·‚邱‚Ƃ́ADialect ‚ª§Œä‚µ‚Ü‚·B
-      –¾Ž¦‚³‚ꂽŒ^‚ªƒ}ƒbƒsƒ“ƒO‚³‚ê‚Ä‚¢‚È‚¢‚©AŒ‹‰Ê‚ÌŒ^‚ªŠú‘Ò‚µ‚½‚à‚̂ƈقȂéê‡A
-      Dialect ‚Ì <literal>registerHibernateType</literal> ‚ðŒÄ‚яo‚µA
-      ƒJƒXƒ^ƒ}ƒCƒY‚Å‚«‚Ü‚·B
+      ResultSetMetaData から返される java.sql.Types を Hibernate の型に
+      マッピングすることは、Dialect が制御します。
+      明示された型がマッピングされていないか、結果の型が期待したものと異なる場合、
+      Dialect の <literal>registerHibernateType</literal> を呼び出し、
+      カスタマイズできます。
       </para>
     </sect2>
 
     <sect2>
-      <title>ƒGƒ“ƒeƒBƒeƒB‚̃NƒGƒŠ</title>
+      <title>エンティティのクエリ</title>
 
-      <para>‚±‚±‚܂ł̃NƒGƒŠ‚́A‚·‚ׂăXƒJƒ‰[’l‚ð•Ô‚·‚à‚Ì‚Å‚µ‚½B
-      Šî–{“I‚ɁAƒŠƒUƒ‹ƒgƒZƒbƒg‚©‚çu–¢‰ÁHv‚Ì’l‚ð•Ô‚µ‚Ü‚·B
-      ˆÈ~‚ł́A<literal>addEntity()</literal> ‚É‚æ‚èAƒlƒCƒeƒBƒuSQLƒNƒGƒŠ‚©‚ç
-      ƒGƒ“ƒeƒBƒeƒBƒIƒuƒWƒFƒNƒg‚ðŽæ“¾‚·‚é•û–@‚ðŽ¦‚µ‚Ü‚·B</para>
+      <para>ここまでのクエリは、すべてスカラー値を返すものでした。
+      基本的に、リザルトセットから「未加工」の値を返します。
+      以降では、<literal>addEntity()</literal> により、ネイティブSQLクエリから
+      エンティティオブジェクトを取得する方法を示します。</para>
 
       <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM CATS").addEntity(Cat.class);
 sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").addEntity(Cat.class);
 ]]></programlisting>
 
-      <para>‚±‚̃NƒGƒŠ‚ÅŽw’肳‚ê‚Ä‚¢‚é‚à‚Ì‚ð‰º‹L‚ÉŽ¦‚µ‚Ü‚·B</para>
+      <para>このクエリで指定されているものを下記に示します。</para>
 
       <itemizedlist>
         <listitem>
-          <para>SQLƒNƒGƒŠ•¶Žš—ñ</para>
+          <para>SQLクエリ文字列</para>
         </listitem>
 
         <listitem>
-          <para>ƒNƒGƒŠ‚ª•Ô‚·ƒGƒ“ƒeƒBƒeƒB‚ÆSQLƒe[ƒuƒ‹‚Ì•Ê–¼
+          <para>クエリが返すエンティティとSQLテーブルの別名
           </para>
         </listitem>
       </itemizedlist>
 
-      <para>Cat‚ªID, NAME, BIRTHDATE‚̃Jƒ‰ƒ€‚ðŽg‚Á‚ăNƒ‰ƒX‚Ƀ}ƒbƒsƒ“ƒO‚³‚ê‚éê‡A
-      ã‹L‚̃NƒGƒŠ‚Í‚Ç‚¿‚ç‚àA—v‘f‚ªCatƒGƒ“ƒeƒBƒeƒB‚Å‚ ‚郊ƒXƒg‚ð•Ô‚µ‚Ü‚·B</para>
+      <para>CatがID, NAME, BIRTHDATEのカラムを使ってクラスにマッピングされる場合、
+      上記のクエリはどちらも、要素がCatエンティティであるリストを返します。</para>
 
-      <para>ƒGƒ“ƒeƒBƒeƒB‚ð•Ê‚̃Gƒ“ƒeƒBƒeƒB‚É <literal>‘½‘Έê</literal> ‚Ń}ƒbƒsƒ“ƒO‚µ‚Ä‚¢‚éê‡‚́A
-      ƒlƒCƒeƒBƒuƒNƒGƒŠ‚ðŽÀs‚·‚éÛ‚ɁA‚±‚̕ʂ̃Gƒ“ƒeƒBƒeƒB‚ð•Ô‚·‚±‚Æ‚à—v‹‚µ‚Ü‚·B
-      ‚³‚à‚È‚¯‚ê‚΁Aƒf[ƒ^ƒx[ƒXŒÅ—L‚́ucolumn not found(ƒJƒ‰ƒ€‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ)vƒGƒ‰[‚ª”­¶‚µ‚Ü‚·B
-      * •\‹L‚ðŽg—p‚µ‚½Û‚́A’ljÁ‚̃Jƒ‰ƒ€‚ªŽ©“®“I‚É•Ô‚³‚ê‚Ü‚·‚ªA
-      ŽŸ‚Ì—á‚̂悤‚ɁA<literal>Dog</literal> ‚É <literal>‘½‘Έê</literal> ‚Å‚ ‚邱‚Æ‚ð
-      –¾Ž¦‚·‚邱‚Æ‚ðŽ„‚½‚¿‚͍D‚Ý‚Ü‚·B</para>
+      <para>エンティティを別のエンティティに <literal>多対一</literal> でマッピングしている場合は、
+      ネイティブクエリを実行する際に、この別のエンティティを返すことも要求します。
+      さもなければ、データベース固有の「column not found(カラムが見つかりません)」エラーが発生します。
+      * 表記を使用した際は、追加のカラムが自動的に返されますが、
+      次の例のように、<literal>Dog</literal> に <literal>多対一</literal> であることを
+      明示することを私たちは好みます。</para>
 
       <programlisting><![CDATA[sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE, DOG_ID FROM CATS").addEntity(Cat.class);
 ]]></programlisting>
 
-      <para>‚±‚ê‚É‚æ‚è cat.getDog() ‚ª³‚µ‚­‹@”\‚µ‚Ü‚·B</para>
+      <para>これにより cat.getDog() が正しく機能します。</para>
     </sect2>
 
     <sect2>
-      <title>ŠÖ˜A‚ƃRƒŒƒNƒVƒ‡ƒ“‚Ì‘€ì</title>
+      <title>関連とコレクションの操作</title>
 
-      <para>ƒvƒƒLƒV‚ð‰Šú‰»‚·‚邽‚ß‚Ì—]•ª‚ȏˆ—‚ð”ð‚¯‚é‚½‚߁A
-      <literal>Dog</literal> ‚Ì’†‚Å‘¦ŽžŒ‹‡‚Å‚«‚Ü‚·B
-      ‚±‚ê‚Í <literal>addJoin()</literal> ƒƒ\ƒbƒh‚É‚æ‚ès‚¢‚Ü‚·B
-      ŠÖ˜A‚à‚µ‚­‚̓RƒŒƒNƒVƒ‡ƒ“‚ÉŒ‹‡‚Å‚«‚Ü‚·B
+      <para>プロキシを初期化するための余分な処理を避けるため、
+      <literal>Dog</literal> の中で即時結合できます。
+      これは <literal>addJoin()</literal> メソッドにより行います。
+      関連もしくはコレクションに結合できます。
       </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")
@@ -142,79 +144,79 @@
  .addJoin("cat.dog");
 ]]></programlisting>
 
-      <para>‚±‚Ì—á‚Ì’†‚ŁA•Ô‚³‚ê‚é <literal>Cat</literal> ‚́A
-      ƒf[ƒ^ƒx[ƒX‚Ö‚Ì—]•ªˆ—‚È‚µ‚ŁA
-      Š®‘S‚ɏ‰Šú‰»‚³‚ꂽ <literal>dog</literal> ƒvƒƒpƒeƒB‚ðŽ‚¿‚Ü‚·B
-      Œ‹‡‘Ώۂ̃vƒƒpƒeƒB‚ւ̃pƒX‚ðŽw’è‚Å‚«‚é‚悤‚ɁA
-      •Ê–¼iucatvj‚ð’ljÁ‚µ‚½‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-      ƒRƒŒƒNƒVƒ‡ƒ“‚Ì‘¦ŽžŒ‹‡‚à“¯‚¶‚悤‚É‚Å‚«‚Ü‚·B
-      ‚½‚Æ‚¦‚΁A<literal>Cat</literal> ‚ªˆê‘Α½‚Å <literal>Dog</literal>
-      ‚ðŽ‚Á‚Ä‚¢‚½ê‡AŽŸ‚̂悤‚É‚È‚è‚Ü‚·B</para>
+      <para>この例の中で、返される <literal>Cat</literal> は、
+      データベースへの余分処理なしで、
+      完全に初期化された <literal>dog</literal> プロパティを持ちます。
+      結合対象のプロパティへのパスを指定できるように、
+      別名(「cat」)を追加したことに注意してください。
+      コレクションの即時結合も同じようにできます。
+      たとえば、<literal>Cat</literal> が一対多で <literal>Dog</literal>
+      を持っていた場合、次のようになります。</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‚¢‚â‚·‚­‚·‚邽‚ß‚ÌSQLƒNƒGƒŠ‚ÌŠg’£‚È‚µ‚ɁA
-      ƒlƒCƒeƒBƒuƒNƒGƒŠ‚ʼn½‚©‚ð‰Â”\‚É‚·‚éŒÀŠE‚É—ˆ‚Ä‚¢‚Ü‚·B
-      “¯‚¶Œ^‚̃Gƒ“ƒeƒBƒeƒB‚𕡐”•Ô‚·Û‚âAƒfƒtƒHƒ‹ƒg‚Ì•Ê–¼‚â—ñ–¼‚ŏ\•ª‚Å‚Í‚È‚¢ê‡‚ɁA
-      –â‘è‚Í‹N‚±‚èŽn‚ß‚Ü‚·B      
+      <para>現在のところ、
+      Hibernateで使いやすくするためのSQLクエリの拡張なしに、
+      ネイティブクエリで何かを可能にする限界に来ています。
+      同じ型のエンティティを複数返す際や、デフォルトの別名や列名で十分ではない場合に、
+      問題は起こり始めます。      
       </para>
     </sect2>
 
     <sect2>
-      <title>•¡”ƒGƒ“ƒeƒBƒeƒB‚̎擾</title>
+      <title>複数エンティティの取得</title>
 
-      <para>‚±‚±‚܂ł́AƒŠƒUƒ‹ƒgƒZƒbƒg‚̃Jƒ‰ƒ€–¼‚́A
-      ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ÅŽw’肳‚ꂽƒJƒ‰ƒ€–¼‚Æ“¯‚¶‚Å‚ ‚é‚Ɖ¼’肵‚Ä‚¢‚Ü‚µ‚½B
-      •¡”‚̃e[ƒuƒ‹‚ª“¯‚¶ƒJƒ‰ƒ€–¼‚ðŽ‚Âê‡‚ª‚ ‚邽‚߁A
-      •¡”ƒe[ƒuƒ‹‚ðŒ‹‡‚·‚éSQLƒNƒGƒŠ‚Å–â‘è‚Æ‚È‚éê‡‚ª‚ ‚è‚Ü‚·B</para>
+      <para>ここまでは、リザルトセットのカラム名は、
+      マッピングファイルで指定されたカラム名と同じであると仮定していました。
+      複数のテーブルが同じカラム名を持つ場合があるため、
+      複数テーブルを結合するSQLクエリで問題となる場合があります。</para>
 
-      <para>‰º‹L‚̂悤‚ȁiŽ¸”s‚µ‚»‚¤‚ȁjƒNƒGƒŠ‚ł́A
-      ƒJƒ‰ƒ€•Ê–¼ƒCƒ“ƒWƒFƒNƒVƒ‡ƒ“icolumn alias injectionj‚ª•K—v‚Å‚·B</para>
+      <para>下記のような(失敗しそうな)クエリでは、
+      カラム別名インジェクション(column alias injection)が必要です。</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>‚±‚̃NƒGƒŠ‚̈Ӑ}‚́A
-      ‚Ps‚²‚Æ‚É‚Q‚‚ÌCatƒCƒ“ƒXƒ^ƒ“ƒXA‚‚܂è”L‚Æ‚»‚Ì•êe‚ð•Ô‚·‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
-      “¯‚¶ƒJƒ‰ƒ€–¼‚Ƀ}ƒbƒsƒ“ƒO‚·‚邱‚Æ‚É‚æ‚è–¼‘O‚ªÕ“Ë‚·‚邽‚߁A‚±‚̃NƒGƒŠ‚ÍŽ¸”s‚µ‚Ü‚·B
-      ƒx[ƒ^ƒx[ƒX‚É‚æ‚Á‚ẮA•Ô‚³‚ê‚éƒJƒ‰ƒ€‚Ì•Ê–¼‚ª "c.ID"A"c.NAME" ‚È‚Ç‚ÌŒ`Ž®‚Å‚ ‚èA
-      ƒ}ƒbƒsƒ“ƒO‚ÅŽw’肳‚ꂽƒJƒ‰ƒ€i"ID" ‚Æ "NAME"j‚Æ“™‚µ‚­‚È‚¢‚½‚߁AŽ¸”s‚µ‚Ü‚·B</para>
+      <para>このクエリの意図は、
+      1行ごとに2つのCatインスタンス、つまり猫とその母親を返すということです。
+      同じカラム名にマッピングすることにより名前が衝突するため、このクエリは失敗します。
+      ベータベースによっては、返されるカラムの別名が "c.ID"、"c.NAME" などの形式であり、
+      マッピングで指定されたカラム("ID" と "NAME")と等しくないため、失敗します。</para>
 
 
-      <para>‰º‹L‚ÌŒ`Ž®‚́AƒJƒ‰ƒ€–¼‚ªd•¡‚µ‚Ä‚à‘åä•v‚Å‚·B</para>
+      <para>下記の形式は、カラム名が重複しても大丈夫です。</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>‚±‚̃NƒGƒŠ‚ÅŽw’肳‚ê‚Ä‚¢‚é‚à‚Ì‚ð‰º‹L‚ÉŽ¦‚µ‚Ü‚·B</para>
+      <para>このクエリで指定されているものを下記に示します。</para>
 
       <itemizedlist>
         <listitem>
-          <para>SQLƒNƒGƒŠ•¶Žš—ñ
-                iHibernate‚ªƒJƒ‰ƒ€‚Ì•Ê–¼‚ð‘}“ü‚·‚邽‚߂̃vƒŒ[ƒXƒzƒ‹ƒ_‚ðŠÜ‚ށj</para>
+          <para>SQLクエリ文字列
+                (Hibernateがカラムの別名を挿入するためのプレースホルダを含む)</para>
         </listitem>
 
         <listitem>
-          <para>ƒNƒGƒŠ‚É‚æ‚Á‚Ä•Ô‚³‚ê‚éƒGƒ“ƒeƒBƒeƒB</para>
+          <para>クエリによって返されるエンティティ</para>
         </listitem>
       </itemizedlist>
 
-      <para>ã‹L‚ÅŽg—p‚µ‚Ä‚¢‚é {cat.*} ‚Æ {mother.*} ‚Æ‚¢‚¤•\‹L‚́A
-      u‚·‚ׂẴvƒƒpƒeƒBv‚ð•\‚·È—ªŒ`‚Å‚·B
-      ‘ã‚í‚è‚ɁA–¾Ž¦“I‚ɃJƒ‰ƒ€‚ð—ñ‹“‚µ‚Ä‚à‚æ‚¢‚Å‚·‚ªA
-      ‚»‚̏ꍇ‚́AHibernate‚ÉŠeƒvƒƒpƒeƒB‚ɑΉž‚·‚éSQLƒJƒ‰ƒ€‚Ì•Ê–¼‚ð‘}“ü‚³‚¹‚é‚ׂ«‚Å‚µ‚傤B
-      ƒJƒ‰ƒ€‚Ì•Ê–¼‚Ì‚½‚߂̃vƒŒ[ƒXƒzƒ‹ƒ_‚́Aƒe[ƒuƒ‹‚Ì•Ê–¼‚É‚æ‚Á‚ďCü‚³‚ꂽƒvƒƒpƒeƒB–¼‚Å‚·B
-      ‰º‹L‚Ì—á‚ł́A•Ê‚̃e[ƒuƒ‹ cat_log ‚©‚ç
-      ƒ}ƒbƒsƒ“ƒOƒƒ^ƒf[ƒ^‚Å’è‹`‚³‚ꂽ Cat ‚Æ‚»‚Ì•êe‚𕜌³‚µ‚Ü‚·B
-      ‚à‚µD‚Þ‚È‚çAwhereß‚Ì’†‚Å‚àAƒvƒƒpƒeƒB‚Ì•Ê–¼‚ðŽg‚¦‚Ü‚·B</para>
+      <para>上記で使用している {cat.*} と {mother.*} という表記は、
+      「すべてのプロパティ」を表す省略形です。
+      代わりに、明示的にカラムを列挙してもよいですが、
+      その場合は、Hibernateに各プロパティに対応するSQLカラムの別名を挿入させるべきでしょう。
+      カラムの別名のためのプレースホルダは、テーブルの別名によって修飾されたプロパティ名です。
+      下記の例では、別のテーブル cat_log から
+      マッピングメタデータで定義された Cat とその母親を復元します。
+      もし好むなら、where節の中でも、プロパティの別名を使えます。</para>
 
       <programlisting><![CDATA[String sql = "SELECT ID as {c.id}, NAME as {c.name}, " + 
          "BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother.*} " +
@@ -226,19 +228,19 @@
 ]]></programlisting>
 
       <sect3 id="querysql-aliasreferences" revision="2">
-        <title>•Ê–¼‚ƃvƒƒpƒeƒB‚̃Šƒtƒ@ƒŒƒ“ƒX</title>
+        <title>別名とプロパティのリファレンス</title>
 
-        <para>‘½‚­‚̏ꍇAã‹L‚̂悤‚È•Ê–¼ƒCƒ“ƒWƒFƒNƒVƒ‡ƒ“‚ª•K—v‚Å‚·B
-        ‚½‚¾‚µA•¡‡ƒvƒƒpƒeƒBAŒp³Ž¯•ÊŽqAƒRƒŒƒNƒVƒ‡ƒ“‚Ȃǂ̂悤‚È
-        ‚æ‚è•¡ŽG‚ȃ}ƒbƒsƒ“ƒO‚ÆŠÖ˜A‚·‚éƒNƒGƒŠ‚ª‚È‚¯‚ê‚΂ł·B
-        ‚ ‚é“Á’è‚Ì•Ê–¼‚ðŽg—p‚·‚邱‚Æ‚É‚æ‚èAHibernate‚Í“KØ‚È•Ê–¼‚ð‘}“ü‚Å‚«‚Ü‚·B</para>
+        <para>多くの場合、上記のような別名インジェクションが必要です。
+        ただし、複合プロパティ、継承識別子、コレクションなどのような
+        より複雑なマッピングと関連するクエリがなければです。
+        ある特定の別名を使用することにより、Hibernateは適切な別名を挿入できます。</para>
 
-        <para>•Ê–¼ƒCƒ“ƒWƒFƒNƒVƒ‡ƒ“‚Æ‚µ‚ÄŽg—p‚Å‚«‚é‚à‚Ì‚ð‰º•\‚ÉŽ¦‚µ‚Ü‚·B
-        ’ˆÓF‰º•\‚Ì•Ê–¼‚͈ê—á‚Å‚·B
-        ‚»‚ꂼ‚ê‚Ì•Ê–¼‚͈êˆÓ‚Å‚ ‚èAŽg—p‚·‚éÛ‚É‚Í‚¨‚»‚ç‚­ˆÙ‚È‚é–¼‘O‚ðŽ‚¿‚Ü‚·B</para>
+        <para>別名インジェクションとして使用できるものを下表に示します。
+        注意:下表の別名は一例です。
+        それぞれの別名は一意であり、使用する際にはおそらく異なる名前を持ちます。</para>
  
         <table frame="topbot" id="aliasinjection-summary">
-          <title>•Ê–¼‚É‘}“ü‚·‚é–¼‘O</title>
+          <title>別名に挿入する名前</title>
 
           <tgroup cols="3">
             <colspec colwidth="1*" />
@@ -249,60 +251,60 @@
 
             <thead>
               <row>
-                <entry>à–¾</entry>
-                <entry>\•¶</entry>
-                <entry>—á</entry>
+                <entry>説明</entry>
+                <entry>構文</entry>
+                <entry>例</entry>
               </row>
             </thead>
             <tbody>
               <row>
-                <entry>’Pƒ‚ȃvƒƒpƒeƒB</entry>
+                <entry>単純なプロパティ</entry>
                 <entry><literal>{[aliasname].[propertyname]}</literal></entry>
                 <entry><literal>A_NAME as {item.name}</literal></entry>
               </row>
               <row>
-                <entry>•¡‡ƒvƒƒpƒeƒB</entry>
+                <entry>複合プロパティ</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>ƒGƒ“ƒeƒBƒeƒB‚̃Nƒ‰ƒX‚ðŽ¯•Ê‚·‚é’l</entry>
+                <entry>エンティティのクラスを識別する値</entry>
                 <entry><literal>{[aliasname].class}</literal></entry>
                 <entry><literal>DISC as {item.class}</literal></entry>
               </row>
               <row>
-                <entry>ƒGƒ“ƒeƒBƒeƒB‚Ì‘SƒvƒƒpƒeƒB</entry>
+                <entry>エンティティの全プロパティ</entry>
                 <entry><literal>{[aliasname].*}</literal></entry>
                 <entry><literal>{item.*}</literal></entry>
               </row>
               <row>
-                <entry>ƒRƒŒƒNƒVƒ‡ƒ“‚̃L[</entry>
+                <entry>コレクションのキー</entry>
                 <entry><literal>{[aliasname].key}</literal></entry>
                 <entry><literal>ORGID as {coll.key}</literal></entry>
               </row>
               <row>
-                <entry>ƒRƒŒƒNƒVƒ‡ƒ“‚ÌID</entry>
+                <entry>コレクションのID</entry>
                 <entry><literal>{[aliasname].id}</literal></entry>
                 <entry><literal>EMPID as {coll.id}</literal></entry>
               </row>
               <row>
-                <entry>ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f</entry>
+                <entry>コレクションの要素</entry>
                 <entry><literal>{[aliasname].element}</literal></entry>
                 <entry><literal>XID as {coll.element}</literal></entry>
               </row>
               <row>
-                <entry>ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚̃vƒƒpƒeƒB</entry>
+                <entry>コレクションの要素のプロパティ</entry>
                 <entry><literal>{[aliasname].element.[propertyname]}</literal></entry>
                 <entry><literal>NAME as {coll.element.name}</literal></entry>
               </row>
               <row>
-                <entry>ƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚Ì‘SƒvƒƒpƒeƒB</entry>
+                <entry>コレクションの要素の全プロパティ</entry>
                 <entry><literal>{[aliasname].element.*}</literal></entry>
                 <entry><literal>{coll.element.*}</literal></entry>
               </row>
               <row>
-                <entry>ƒRƒŒƒNƒVƒ‡ƒ“‚Ì‘SƒvƒƒpƒeƒB</entry>
+                <entry>コレクションの全プロパティ</entry>
                 <entry><literal>{[aliasname].*}</literal></entry>
                 <entry><literal>{coll.*}</literal></entry>
               </row>
@@ -313,43 +315,43 @@
     </sect2>
 
     <sect2>
-      <title>ŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ƒGƒ“ƒeƒBƒeƒB‚̎擾</title>
+      <title>管理されていないエンティティの取得</title>
 
-      <para>ƒlƒCƒeƒBƒuSQLƒNƒGƒŠ‚É ResultTransformer ‚ð“K—p‚Å‚«‚Ü‚·B
-      ‰º‹L‚̂悤‚ɁA—Ⴆ‚΁AŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ƒGƒ“ƒeƒBƒeƒB‚ð•Ô‚µ‚Ü‚·B</para>
+      <para>ネイティブSQLクエリに ResultTransformer を適用できます。
+      下記のように、例えば、管理されていないエンティティを返します。</para>
 
       <programlisting><![CDATA[sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
         .setResultTransformer(Transformers.aliasToBean(CatDTO.class))]]></programlisting>
 
-      <para>‚±‚̃NƒGƒŠ‚ÅŽw’肳‚ê‚Ä‚¢‚é‚à‚Ì‚ð‰º‹L‚ÉŽ¦‚µ‚Ü‚·B</para>
+      <para>このクエリで指定されているものを下記に示します。</para>
 
       <itemizedlist>
         <listitem>
-          <para>SQLƒNƒGƒŠ•¶Žš—ñ</para>
+          <para>SQLクエリ文字列</para>
         </listitem>
 
         <listitem>
-          <para>Œ‹‰Ê‚ð•ÏŠ·‚µ‚½‚à‚Ì</para>
+          <para>結果を変換したもの</para>
         </listitem>
       </itemizedlist>
 
-      <para>ã‹L‚̃NƒGƒŠ‚́AƒCƒ“ƒXƒ^ƒ“ƒX‰»‚µANAME ‚Æ BIRTHDATE ‚Ì’l‚ð
-      ‘Ήž‚·‚éƒvƒƒpƒeƒB‚à‚µ‚­‚̓tƒB[ƒ‹ƒh‚É‘}“ü‚µ‚½ <literal>CatDTO</literal>
-      ‚̃ŠƒXƒg‚ð•Ô‚µ‚Ü‚·B</para>
+      <para>上記のクエリは、インスタンス化し、NAME と BIRTHDATE の値を
+      対応するプロパティもしくはフィールドに挿入した <literal>CatDTO</literal>
+      のリストを返します。</para>
     </sect2>
 
     <sect2>
-      <title>Œp³‚̐§Œä</title>
+      <title>継承の制御</title>
 
-      <para>Œp³‚̈ꕔ‚Æ‚µ‚ă}ƒbƒsƒ“ƒO‚³‚ꂽƒGƒ“ƒeƒBƒeƒB‚ð–â‚¢‡‚킹‚éƒlƒCƒeƒBƒuSQLƒNƒGƒŠ‚́A
-      ƒx[ƒX‚̃Nƒ‰ƒX‚Æ‚»‚Ì‚·‚ׂẴTƒuƒNƒ‰ƒX‚̃vƒƒpƒeƒB‚·‚ׂĂðŠÜ‚Ü‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB</para>
+      <para>継承の一部としてマッピングされたエンティティを問い合わせるネイティブSQLクエリは、
+      ベースのクラスとそのすべてのサブクラスのプロパティすべてを含まなければなりません。</para>
     </sect2>
 
     <sect2>
-      <title>ƒpƒ‰ƒ[ƒ^</title>
+      <title>パラメータ</title>
 
-      <para>ƒlƒCƒeƒBƒuSQLƒNƒGƒŠ‚́AˆÈ‰º‚̂悤‚ɁA
-      –¼‘O•t‚«ƒpƒ‰ƒ[ƒ^i:namej‚Æ“¯—l‚Ɉʒuƒpƒ‰ƒ[ƒ^‚ðƒTƒ|[ƒg‚µ‚Ü‚·B</para>
+      <para>ネイティブSQLクエリは、以下のように、
+      名前付きパラメータ(:name)と同様に位置パラメータをサポートします。</para>
 
       <programlisting><![CDATA[Query query = sess.createSQLQuery("SELECT * FROM CATS WHERE NAME like ?").addEntity(Cat.class);
 List pusList = query.setString(0, "Pus%").list();
@@ -361,11 +363,11 @@
   </sect1>
 
   <sect1 id="querysql-namedqueries" revision="3">
-    <title>–¼‘O•t‚«SQLƒNƒGƒŠ</title>
+    <title>名前付きSQLクエリ</title>
 
-    <para>–¼‘O•t‚«SQLƒNƒGƒŠ‚̓}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚Å’è‹`‚·‚邱‚Æ‚ª‚Å‚«A
-    –¼‘O•t‚«HQLƒNƒGƒŠ‚Æ‘S‚­“¯‚¶•û–@‚ŌĂԂ±‚Æ‚ª‚Å‚«‚Ü‚·B
-    ‚±‚̏ꍇA<literal>addEntity()</literal> ‚ðŒÄ‚яo‚·•K—v‚Í <emphasis>‚È‚¢</emphasis> ‚Å‚·B</para>
+    <para>名前付きSQLクエリはマッピングドキュメントで定義することができ、
+    名前付きHQLクエリと全く同じ方法で呼ぶことができます。
+    この場合、<literal>addEntity()</literal> を呼び出す必要は <emphasis>ない</emphasis> です。</para>
 
     <programlisting><![CDATA[<sql-query name="persons">
     <return alias="person" class="eg.Person"/>
@@ -381,9 +383,9 @@
     .setMaxResults(50)
     .list();]]></programlisting>
 
-    <para>ŠÖ˜A‚ðŒ‹‡‚·‚邽‚߂ƃRƒŒƒNƒVƒ‡ƒ“‚ð‰Šú‰»‚·‚éƒNƒGƒŠ‚ð’è‹`‚·‚邽‚߂ɁA‚»‚ꂼ‚ê
-    <literal>&lt;return-join&gt;</literal> ‚Æ <literal>&lt;load-collection&gt;</literal>
-    —v‘f‚ðŽg‚¢‚Ü‚·B</para>
+    <para>関連を結合するためとコレクションを初期化するクエリを定義するために、それぞれ
+    <literal>&lt;return-join&gt;</literal> と <literal>&lt;load-collection&gt;</literal>
+    要素を使います。</para>
 
     <programlisting><![CDATA[<sql-query name="personsWith">
     <return alias="person" class="eg.Person"/>
@@ -401,9 +403,9 @@
     WHERE person.NAME LIKE :namePattern
 </sql-query>]]></programlisting>
 
-    <para>–¼‘O•t‚«SQLƒNƒGƒŠ‚̓XƒJƒ‰’l‚ð•Ô‚·‚±‚Æ‚à‚Å‚«‚Ü‚·B
-    <literal>&lt;return-scalar&gt;</literal> —v‘f‚ðŽg‚Á‚āA
-    —ñ‚Ì•Ê–¼‚ÆHibernate‚ÌŒ^‚ðéŒ¾‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB</para>
+    <para>名前付きSQLクエリはスカラ値を返すこともできます。
+    <literal>&lt;return-scalar&gt;</literal> 要素を使って、
+    列の別名とHibernateの型を宣言しなければなりません。</para>
 
     <programlisting><![CDATA[<sql-query name="mySqlQuery">
     <return-scalar column="name" type="string"/>
@@ -414,10 +416,10 @@
 </sql-query>]]></programlisting>
 
 
-    <para>ƒŠƒUƒ‹ƒgƒZƒbƒg‚̃}ƒbƒsƒ“ƒOî•ñ‚ð <literal>&lt;resultset&gt;</literal>
-    ‚ÉŠOo‚µ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-    •¡”‚Ì–¼‘O•t‚«ƒNƒGƒŠ‚ōė˜—p‚µ‚½‚èA<literal>setResultSetMapping()</literal>
-    API‚ð’Ê‚µ‚čė˜—p‚µ‚½‚è‚Å‚«‚Ü‚·B
+    <para>リザルトセットのマッピング情報を <literal>&lt;resultset&gt;</literal>
+    に外出しすることができます。
+    複数の名前付きクエリで再利用したり、<literal>setResultSetMapping()</literal>
+    APIを通して再利用したりできます。
     </para>
 
     <programlisting><![CDATA[<resultset name="personAddress">
@@ -439,8 +441,8 @@
     WHERE person.NAME LIKE :namePattern
 </sql-query>]]></programlisting>
 
-    <para>‘ã‚í‚è‚ɁAhbmƒtƒ@ƒCƒ‹“à‚̃ŠƒUƒ‹ƒgƒZƒbƒg‚̃}ƒbƒsƒ“ƒOî•ñ‚ð
-    ’¼ÚJavaƒR[ƒh‚Ì’†‚ÅŽg—p‚Å‚«‚Ü‚·B</para>
+    <para>代わりに、hbmファイル内のリザルトセットのマッピング情報を
+    直接Javaコードの中で使用できます。</para>
 
     <programlisting><![CDATA[List cats = sess.createSQLQuery(
         "select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id"
@@ -449,11 +451,11 @@
     .list();]]></programlisting>
 
     <sect2 id="propertyresults">
-      <title>—ñ‚Æ—ñ‚Ì•Ê–¼‚𖾎¦“I‚ÉŽw’è‚·‚邽‚ß‚É return-property ‚ðŽg‚¤</title>
+      <title>列と列の別名を明示的に指定するために return-property を使う</title>
 
-      <para>•Ê–¼‚ð‘}“ü‚·‚邽‚ß‚É <literal>{}</literal> \•¶‚ðŽg‚¤‘ã‚í‚è‚ɁA
-      <literal>&lt;return-property&gt;</literal> ‚ðŽg‚¢A
-      ‚Ç‚Ì—ñ‚Ì•Ê–¼‚ðŽg‚¤‚Ì‚©‚𖾎¦‚Å‚«‚Ü‚·B</para>
+      <para>別名を挿入するために <literal>{}</literal> 構文を使う代わりに、
+      <literal>&lt;return-property&gt;</literal> を使い、
+      どの列の別名を使うのかを明示できます。</para>
 
       <programlisting><![CDATA[<sql-query name="mySqlQuery">
     <return alias="person" class="eg.Person">
@@ -468,9 +470,9 @@
 </sql-query>
 ]]></programlisting>
 
-      <para><literal>&lt;return-property&gt;</literal> ‚Í•¡”‚Ì—ñ‚àˆµ‚¦‚Ü‚·B
-      ‚±‚ê‚́A•¡”—ñ‚̃vƒƒpƒeƒB‚ð‚«‚ß×‚©‚­§Œä‚Å‚«‚È‚¢‚Æ‚¢‚¤A
-      <literal>{}</literal> \•¶‚̐§ŒÀ‚ð‰ðŒˆ‚µ‚Ü‚·B</para>
+      <para><literal>&lt;return-property&gt;</literal> は複数の列も扱えます。
+      これは、複数列のプロパティをきめ細かく制御できないという、
+      <literal>{}</literal> 構文の制限を解決します。</para>
 
       <programlisting><![CDATA[<sql-query name="organizationCurrentEmployments">
     <return alias="emp" class="Employment">
@@ -488,24 +490,24 @@
         ORDER BY STARTDATE ASC
 </sql-query>]]></programlisting>
 
-      <para>‚±‚Ì—á‚ł́A‘}“ü‚Ì‚½‚ß‚Ì <literal>{}</literal> \•¶‚Æ‚¢‚Á‚µ‚å‚ɁA
-      <literal>&lt;return-property&gt;</literal> ‚ðŽg‚Á‚Ä‚¢‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-      —ñ‚ƃvƒƒpƒeƒB‚ð‚ǂ̂悤‚ÉŽQÆ‚·‚é‚©‚ð‘I‚ׂ܂·B</para>
+      <para>この例では、挿入のための <literal>{}</literal> 構文といっしょに、
+      <literal>&lt;return-property&gt;</literal> を使っていることに注意してください。
+      列とプロパティをどのように参照するかを選べます。</para>
 
-      <para>ƒ}ƒbƒsƒ“ƒO‚É discriminator ‚ªŠÜ‚Ü‚ê‚Ä‚¢‚éê‡A
-      discriminator ‚Ì—ñ‚ðŽw’è‚·‚邽‚߂ɁA&lt;return-discriminator&gt;
-      ‚ðŽg‚í‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB</para>
+      <para>マッピングに discriminator が含まれている場合、
+      discriminator の列を指定するために、&lt;return-discriminator&gt;
+      を使わなければなりません。</para>
     </sect2>
 
     <sect2 id="sp_query" revision="1">
-      <title>–â‚¢‡‚킹‚·‚邽‚߂ɃXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚ðŽg‚¤</title>
+      <title>問い合わせするためにストアドプロシージャを使う</title>
 
-      <para>Hibernate‚̓o[ƒWƒ‡ƒ“3‚©‚çAƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚ƃXƒgƒAƒhŠÖ”Œo—R‚Ì–â‚¢‡‚킹‚ª
-      ƒTƒ|[ƒg‚³‚ê‚Ü‚µ‚½B
-      ˆÈ~‚Ì•¶‘‚Ì‘½‚­‚́A—¼•û‚É“–‚Ä‚Í‚Ü‚è‚Ü‚·B
-      ƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚âƒXƒgƒAƒhŠÖ”‚ðHibernate‚ÅŽg‚¤‚½‚߂ɂ́A
-      1”Ԗڂ̏o—̓pƒ‰ƒ[ƒ^‚Æ‚µ‚ăŠƒUƒ‹ƒgƒZƒbƒg‚ð•Ô‚³‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-      Oracle 9i‚à‚µ‚­‚Í‚»‚êˆÈã‚̃o[ƒWƒ‡ƒ“j‚̃XƒgƒAƒhƒvƒƒV[ƒWƒƒ‚Ì—á‚ðˆÈ‰º‚ÉŽ¦‚µ‚Ü‚·B</para>
+      <para>Hibernateはバージョン3から、ストアドプロシージャとストアド関数経由の問い合わせが
+      サポートされました。
+      以降の文書の多くは、両方に当てはまります。
+      ストアドプロシージャやストアド関数をHibernateで使うためには、
+      1番目の出力パラメータとしてリザルトセットを返さなければなりません。
+      Oracle 9(もしくはそれ以上のバージョン)のストアドプロシージャの例を以下に示します。</para>
 
       <programlisting><![CDATA[CREATE OR REPLACE FUNCTION selectAllEmployments
     RETURN SYS_REFCURSOR
@@ -520,8 +522,8 @@
       RETURN  st_cursor;
  END;]]></programlisting>
 
-      <para>Hibernate‚Å‚±‚̃NƒGƒŠ‚ðŽg‚¤‚½‚߂ɂ́A
-      –¼‘O•t‚«ƒNƒGƒŠ‚Ń}ƒbƒsƒ“ƒO‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B</para>
+      <para>Hibernateでこのクエリを使うためには、
+      名前付きクエリでマッピングする必要があります。</para>
 
       <programlisting><![CDATA[<sql-query name="selectAllEmployees_SP" callable="true">
     <return alias="emp" class="Employment">
@@ -539,57 +541,57 @@
     { ? = call selectAllEmployments() }
 </sql-query>]]></programlisting>
 
-      <para>’ˆÓF¡‚Ì‚Æ‚±‚ëAƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚̓XƒJƒ‰‚ƃGƒ“ƒeƒBƒeƒB‚ð•Ô‚·‚Ì‚Ý‚Å‚·B
-      <literal>&lt;return-join&gt;</literal> ‚Æ <literal>&lt;load-collection&gt;</literal>
-      ‚̓Tƒ|[ƒg‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB</para>
+      <para>注意:今のところ、ストアドプロシージャはスカラとエンティティを返すのみです。
+      <literal>&lt;return-join&gt;</literal> と <literal>&lt;load-collection&gt;</literal>
+      はサポートされていません。</para>
 
       <sect3 id="querysql-limits-storedprocedures" revision="1">
-        <title>ƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚ðŽg‚¤ã‚ł̃‹[ƒ‹‚Ɛ§ŒÀ</title>
+        <title>ストアドプロシージャを使う上でのルールと制限</title>
 
-        <para>Hibernate‚ŃXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚âŠÖ”‚ðŽg‚¤‚½‚߂ɂ́A
-        ‚»‚̃vƒƒV[ƒWƒƒ‚Í‚¢‚­‚‚©‚̃‹[ƒ‹‚ɏ€‹’‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
-        ƒ‹[ƒ‹‚ɏ€‹’‚µ‚Ä‚¢‚È‚¢ƒvƒƒV[ƒWƒƒ‚́AHibernate‚ÅŽg‚¤‚±‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB
-        ‚»‚ê‚Å‚àA€‹’‚µ‚Ä‚¢‚È‚¢ƒvƒƒV[ƒWƒƒ‚ðŽg‚¢‚½‚¢‚Ì‚Å‚ ‚ê‚΁A
-        <literal>session.connection()</literal> ‚ð’Ê‚¶‚ÄŽÀs‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-        ƒ‹[ƒ‹‚̓f[ƒ^ƒx[ƒX‚²‚ƂɈقȂè‚Ü‚·B
-        ƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚̃Zƒ}ƒ“ƒeƒBƒbƒNƒX‚ƃVƒ“ƒ^ƒbƒNƒX‚́A
-        ƒf[ƒ^ƒx[ƒXƒxƒ“ƒ_‚²‚ƂɈقȂ邽‚ß‚Å‚·B</para>
+        <para>Hibernateでストアドプロシージャや関数を使うためには、
+        そのプロシージャはいくつかのルールに準拠する必要があります。
+        ルールに準拠していないプロシージャは、Hibernateで使うことはできません。
+        それでも、準拠していないプロシージャを使いたいのであれば、
+        <literal>session.connection()</literal> を通じて実行しなければなりません。
+        ルールはデータベースごとに異なります。
+        ストアドプロシージャのセマンティックスとシンタックスは、
+        データベースベンダごとに異なるためです。</para>
 
-        <para><literal>setFirstResult()/setMaxResults()</literal> ‚ðŽg‚Á‚āA
-        ƒXƒgƒAƒhƒvƒƒV[ƒWƒƒƒNƒGƒŠ‚ðƒy[ƒW•ª‚¯‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB</para>
+        <para><literal>setFirstResult()/setMaxResults()</literal> を使って、
+        ストアドプロシージャクエリをページ分けすることはできません。</para>
 
-        <para>„§‚·‚éŒÄ‚яo‚µ•û‚́A•W€‚Å‚ ‚éSQL92‚ɏ]‚¤‚±‚Æ‚Å‚·B
-        <literal>{ ? = call functionName(&lt;parameters&gt;) }</literal> ‚â
-        <literal>{ ? = call procedureName(&lt;parameters&gt;) }</literal> ‚Å‚·B
-        ƒlƒCƒeƒBƒu‚ȌĂяo‚µ\•¶‚̓Tƒ|[ƒg‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB</para>
+        <para>推奨する呼び出し方は、標準であるSQL92に従うことです。
+        <literal>{ ? = call functionName(&lt;parameters&gt;) }</literal> ã‚„
+        <literal>{ ? = call procedureName(&lt;parameters&gt;) }</literal> です。
+        ネイティブな呼び出し構文はサポートされていません。</para>
 
-        <para>Oracle‚ɂ͉º‹L‚̃‹[ƒ‹‚ª“K—p‚³‚ê‚Ü‚·B</para>
+        <para>Oracleには下記のルールが適用されます。</para>
 
         <itemizedlist spacing="compact">
           <listitem>
-            <para>ŠÖ”‚̓ŠƒUƒ‹ƒgƒZƒbƒg‚ð•Ô‚³‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-            ƒvƒƒV[ƒWƒƒ‚Ì‘æˆêˆø”‚̓ŠƒUƒ‹ƒgƒZƒbƒg‚ð•Ô‚·‚½‚߁A
-            <literal>OUT</literal> ‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-            Oracle 9‚Æ10‚ł́A<literal>SYS_REFCURSOR</literal> ‚ðŽg‚¤‚±‚Æ‚É‚æ‚Á‚Ä‚Å‚«‚Ü‚·B
-            Oracle‚Å‚Í <literal>REF CURSOR</literal> Œ^‚ð’è‹`‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
-            Oracle‚Ì•¶Œ£‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B</para>
+            <para>関数はリザルトセットを返さなければなりません。
+            プロシージャの第一引数はリザルトセットを返すため、
+            <literal>OUT</literal> でなければなりません。
+            Oracle 9と10では、<literal>SYS_REFCURSOR</literal> を使うことによってできます。
+            Oracleでは <literal>REF CURSOR</literal> 型を定義する必要があります。
+            Oracleの文献を参照してください。</para>
           </listitem>
         </itemizedlist>
 
-        <para>Sybase‚ÆMS SQLƒT[ƒo[‚É“K—p‚³‚ê‚郋[ƒ‹‚ð‰º‹L‚ÉŽ¦‚µ‚Ü‚·B</para>
+        <para>SybaseとMS SQLサーバーに適用されるルールを下記に示します。</para>
 
         <itemizedlist spacing="compact">
           <listitem>
-            <para>ƒvƒƒV[ƒWƒƒ‚̓ŠƒUƒ‹ƒgƒZƒbƒg‚ð•Ô‚³‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-            ƒT[ƒo[‚Í•¡”‚̃ŠƒUƒ‹ƒgƒZƒbƒg‚ƍXVƒJƒEƒ“ƒg‚ð•Ô‚µ‚Ü‚·‚ªA
-            Hibernate‚Í1‚–ڂ̃ŠƒUƒ‹ƒgƒZƒbƒg‚¾‚¯‚ð•Ô‚·‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-            ‚»‚Ì‘¼‚Í‚·‚ׂĎ̂Ăç‚ê‚Ü‚·B</para>
+            <para>プロシージャはリザルトセットを返さなければなりません。
+            サーバーは複数のリザルトセットと更新カウントを返しますが、
+            Hibernateは1つ目のリザルトセットだけを返すことに注意してください。
+            その他はすべて捨てられます。</para>
           </listitem>
 
           <listitem>
-            <para>ƒvƒƒV[ƒWƒƒ‚Ì’†‚Å <literal>SET NOCOUNT ON</literal> ‚ð—LŒø‚É‚Å‚«‚ê‚΁A
-            ‚¨‚»‚ç‚­Œø—¦‚ª‚æ‚­‚È‚é‚Å‚µ‚傤B
-            ‚µ‚©‚µA‚±‚ê‚Í•K—vðŒ‚Å‚Í‚ ‚è‚Ü‚¹‚ñB</para>
+            <para>プロシージャの中で <literal>SET NOCOUNT ON</literal> を有効にできれば、
+            おそらく効率がよくなるでしょう。
+            しかし、これは必要条件ではありません。</para>
           </listitem>
         </itemizedlist>
       </sect3>
@@ -597,15 +599,15 @@
   </sect1>
 
   <sect1 id="querysql-cud">
-    <title>ì¬AXVAíœ‚Ì‚½‚߂̃JƒXƒ^ƒ€SQL</title>
+    <title>作成、更新、削除のためのカスタムSQL</title>
 
-    <para>Hibernate3‚͍쐬AXVAíœˆ—‚Ì‚½‚߂̃JƒXƒ^ƒ€SQL•¶‚ðŽg—p‚Å‚«‚Ü‚·B
-    ƒNƒ‰ƒX‚ƃRƒŒƒNƒVƒ‡ƒ“‚̉i‘±‰»‹@\‚́AƒRƒ“ƒtƒBƒOƒŒ[ƒVƒ‡ƒ“Žž‚ɐ¶¬‚³‚ꂽ•¶Žš—ñ
-    iinsertsqlAdeletesqlAupdatesql‚Ȃǁj‚̃Zƒbƒg‚ð‚·‚Å‚É•ÛŽ‚µ‚Ä‚¢‚Ü‚·B
-    ‚±‚ê‚ç‚Ì•¶Žš—ñ‚æ‚èA
-    <literal>&lt;sql-insert&gt;</literal>A
-    <literal>&lt;sql-delete&gt;</literal>A
-    <literal>&lt;sql-update&gt;</literal> ‚Æ‚¢‚¤ƒ}ƒbƒsƒ“ƒOƒ^ƒO‚ª—Dæ‚³‚ê‚Ü‚·B</para>
+    <para>Hibernate3は作成、更新、削除処理のためのカスタムSQL文を使用できます。
+    クラスとコレクションの永続化機構は、コンフィグレーション時に生成された文字列
+    (insertsql、deletesql、updatesqlなど)のセットをすでに保持しています。
+    これらの文字列より、
+    <literal>&lt;sql-insert&gt;</literal>、
+    <literal>&lt;sql-delete&gt;</literal>、
+    <literal>&lt;sql-update&gt;</literal> というマッピングタグが優先されます。</para>
 
     <programlisting><![CDATA[<class name="Person">
     <id name="id">
@@ -617,11 +619,11 @@
     <sql-delete>DELETE FROM PERSON WHERE ID=?</sql-delete>
 </class>]]></programlisting>
 
-    <para>SQL‚𒼐ڃf[ƒ^ƒx[ƒX‚ÅŽÀs‚·‚邽‚߁AD‚Ý‚Ì•ûŒ¾‚ðŽ©—R‚ÉŽg—p‚Å‚«‚Ü‚·B
-    ƒf[ƒ^ƒx[ƒX“ÆŽ©‚ÌSQL‚ðŽg‚¦‚΁A“–‘Rƒ}ƒbƒsƒ“ƒO‚̃|[ƒ^ƒrƒŠƒeƒB‚ª‰º‚ª‚è‚Ü‚·B</para>
+    <para>SQLを直接データベースで実行するため、好みの方言を自由に使用できます。
+    データベース独自のSQLを使えば、当然マッピングのポータビリティが下がります。</para>
 
-    <para><literal>callable</literal> ‘®«‚ðƒZƒbƒg‚·‚ê‚΁A
-    ƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚ðŽg—p‚Å‚«‚Ü‚·B</para>
+    <para><literal>callable</literal> 属性をセットすれば、
+    ストアドプロシージャを使用できます。</para>
 
     <programlisting><![CDATA[<class name="Person">
     <id name="id">
@@ -633,21 +635,21 @@
     <sql-update callable="true">{? = call updatePerson (?, ?)}</sql-update>
 </class>]]></programlisting>
 
-    <para>¡‚Ì‚Æ‚±‚ëAˆÊ’uƒpƒ‰ƒ[ƒ^‚̏‡”Ô‚Í‚Æ‚Ä‚àd—v‚Å‚·B
-    ‚·‚È‚í‚¿AHibernate‚ªŠú‘Ò‚·‚鏇˜‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB</para>
+    <para>今のところ、位置パラメータの順番はとても重要です。
+    すなわち、Hibernateが期待する順序でなければなりません。</para>
 
-    <para><literal>org.hiberante.persister.entity</literal> ƒŒƒxƒ‹‚̃fƒoƒbƒOƒƒO‚ð
-    —LŒø‚É‚·‚邱‚Æ‚É‚æ‚Á‚āAŠú‘Ò‚³‚ê‚鏇”Ô‚ðŠm‚©‚ß‚ç‚ê‚Ü‚·B
-    ‚±‚̃Œƒxƒ‹‚ð—LŒø‚É‚·‚邱‚Æ‚É‚æ‚èAƒGƒ“ƒeƒBƒeƒB‚̍쐬AXVAíœ‚È‚Ç‚Å
-    Žg—p‚³‚ê‚éÃ“I‚ÈSQL‚ªo—Í‚³‚ê‚Ü‚·B
-    iŠú‘Ò‚³‚ê‚鏇˜‚ðŠm”F‚·‚邽‚߂ɂ́AHibernate‚ª¶¬‚·‚éÃ“I‚ÈSQL‚ðƒI[ƒo[ƒ‰ƒCƒh‚·‚é
-    ƒJƒXƒ^ƒ€SQL‚ðƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ÉŠÜ‚ß‚È‚¢‚±‚Æ‚ð–Y‚ê‚È‚¢‚Å‚­‚¾‚³‚¢Bj</para>
+    <para><literal>org.hiberante.persister.entity</literal> レベルのデバッグログを
+    有効にすることによって、期待される順番を確かめられます。
+    このレベルを有効にすることにより、エンティティの作成、更新、削除などで
+    使用される静的なSQLが出力されます。
+    (期待される順序を確認するためには、Hibernateが生成する静的なSQLをオーバーライドする
+    カスタムSQLをマッピングファイルに含めないことを忘れないでください。)</para>
 
-    <para>ƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚Í‘}“ü/XV/íœ‚³‚ꂽs”‚ð•Ô‚·•K—v‚ª‚ ‚è‚Ü‚·
-    i“ǂݍž‚݂̏ꍇ‚́A•Ô‚³‚È‚¢‚æ‚è‚Í•Ô‚·•û‚ª‚æ‚¢‚Å‚·jB
-    ŽÀsŽž‚ÉHibernate‚ªSQL•¶‚̐¬Œ÷‚ðƒ`ƒFƒbƒN‚·‚é‚©‚ç‚Å‚·B
-    Hibernate‚́ACUDˆ—‚Ì‚½‚߂̐”’l‚̏o—̓pƒ‰ƒ[ƒ^‚Æ‚µ‚āA
-    SQL•¶‚̍ŏ‰‚̃pƒ‰ƒ[ƒ^‚ð‚¢‚Â‚à‹L˜^‚µ‚Ü‚·B</para>
+    <para>ストアドプロシージャは挿入/更新/削除された行数を返す必要があります
+    (読み込みの場合は、返さないよりは返す方がよいです)。
+    実行時にHibernateがSQL文の成功をチェックするからです。
+    Hibernateは、CUD処理のための数値の出力パラメータとして、
+    SQL文の最初のパラメータをいつも記録します。</para>
 
     <programlisting><![CDATA[CREATE OR REPLACE FUNCTION updatePerson (uid IN NUMBER, uname IN VARCHAR2)
     RETURN NUMBER IS
@@ -665,9 +667,9 @@
   </sect1>
 
   <sect1 id="querysql-load">
-    <title>ƒ[ƒh‚Ì‚½‚߂̃JƒXƒ^ƒ€SQL</title>
+    <title>ロードのためのカスタムSQL</title>
 
-    <para>ƒGƒ“ƒeƒBƒeƒB‚ð“ǂݍž‚Þ‚½‚ß‚Ì“ÆŽ©‚ÌSQLi‚à‚µ‚­‚ÍHQLjƒNƒGƒŠ‚àéŒ¾‚Å‚«‚Ü‚·B</para>
+    <para>エンティティを読み込むための独自のSQL(もしくはHQL)クエリも宣言できます。</para>
 
     <programlisting><![CDATA[<sql-query name="person">
     <return alias="pers" class="Person" lock-mode="upgrade"/>
@@ -677,8 +679,8 @@
     FOR UPDATE
 </sql-query>]]></programlisting>
 
-    <para>‚±‚ê‚́A‚Ü‚³‚ɁiˆÈ‘O‹c˜_‚µ‚½j–¼‘O•t‚«ƒNƒGƒŠ‚̐錾‚Å‚·B
-    ‚±‚Ì–¼‘O•t‚«ƒNƒGƒŠ‚ðƒNƒ‰ƒX‚̃}ƒbƒsƒ“ƒO‚©‚çŽQÆ‚Å‚«‚Ü‚·B</para>
+    <para>これは、まさに(以前議論した)名前付きクエリの宣言です。
+    この名前付きクエリをクラスのマッピングから参照できます。</para>
 
     <programlisting><![CDATA[<class name="Person">
     <id name="id">
@@ -689,9 +691,9 @@
 </class>]]></programlisting>
     
 
-    <para>‚±‚ê‚̓XƒgƒAƒhƒvƒƒV[ƒWƒƒ‚Å‚³‚¦‚à“®ì‚µ‚Ü‚·B</para>
+    <para>これはストアドプロシージャでさえも動作します。</para>
 
-    <para>ŽŸ‚̂悤‚ɁAƒRƒŒƒNƒVƒ‡ƒ“‚ðƒ[ƒh‚·‚邽‚߂̃NƒGƒŠ‚³‚¦’è‹`‚µ‚Ä‚æ‚¢‚Å‚·B</para>
+    <para>次のように、コレクションをロードするためのクエリさえ定義してよいです。</para>
 
     <programlisting><![CDATA[<set name="employments" inverse="true">
     <key/>
@@ -707,8 +709,8 @@
     ORDER BY STARTDATE ASC, EMPLOYEE ASC
 </sql-query>]]></programlisting>
 
-    <para>ŽŸ‚̂悤‚ɁAŒ‹‡ƒtƒFƒbƒ`‚É‚æ‚èƒRƒŒƒNƒVƒ‡ƒ“‚ðƒ[ƒh‚·‚é
-    ƒGƒ“ƒeƒBƒeƒBƒ[ƒ_[‚ð’è‹`‚Å‚«‚Ü‚·B</para>
+    <para>次のように、結合フェッチによりコレクションをロードする
+    エンティティローダーを定義できます。</para>
 
     <programlisting><![CDATA[<sql-query name="person">
     <return alias="pers" class="Person"/>
@@ -721,4 +723,4 @@
 </sql-query>]]></programlisting>
   </sect1>
 
-</chapter>
\ No newline at end of file
+</chapter>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/session_api.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/session_api.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/session_api.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,81 +1,83 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="objectstate">
-    <title>ƒIƒuƒWƒFƒNƒg‚ðˆµ‚¤</title>
+    <title>オブジェクトを扱う</title>
     
     <para> 
-        Hibernate ‚ÍŠ®‘S‚ȃIƒuƒWƒFƒNƒg/ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ}ƒbƒsƒ“ƒOƒ\ƒŠƒ…[ƒVƒ‡ƒ“‚Å‚ ‚èA
-        ƒf[ƒ^ƒx[ƒXŠÇ—ƒVƒXƒeƒ€‚̏ڍׂðŠJ”­ŽÒ‚©‚ç‰B•Á‚·‚邾‚¯‚Å‚È‚­A ƒIƒuƒWƒFƒNƒg‚Ì <emphasis>ó‘ÔŠÇ—</emphasis> ‚às‚¢‚Ü‚·B
-        ‚±‚ê‚́AJDBC/SQL‰i‘±‘w‚Æ“¯‚¶‚悤‚ÈSQL <literal>•¶</literal> ‚ÌŠÇ—‚Ƃ͈قȂèA
-        JavaƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚¨‚¯‚é‰i‘±‰»‚ɑ΂·‚éA‚Æ‚Ä‚àŽ©‘R‚ȃIƒuƒWƒFƒNƒgŽwŒü‚̍l‚¦•û‚ð’ñ‹Ÿ‚µ‚Ü‚·B 
+        Hibernate は完全なオブジェクト/リレーショナルマッピングソリューションであり、
+        データベース管理システムの詳細を開発者から隠蔽するだけでなく、 オブジェクトの <emphasis>状態管理</emphasis> も行います。
+        これは、JDBC/SQL永続層と同じようなSQL <literal>文</literal> の管理とは異なり、
+        Javaアプリケーションにおける永続化に対する、とても自然なオブジェクト指向の考え方を提供します。 
         </para>
     
     <para> 
-        Œ¾‚¢‚©‚¦‚ê‚΁AHibernate‚ð—p‚¢‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“ŠJ”­ŽÒ‚́AƒIƒuƒWƒFƒNƒg‚Ì <emphasis>ó‘Ô</emphasis> ‚ɂ‚¢‚Ä‚Í
-        í‚Ɉӎ¯‚·‚ׂ«‚Å‚ ‚èASQL•¶‚ÌŽÀs‚ɂ‚¢‚Ä‚Í•K‚¸‚µ‚à‚»‚¤‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-        ‚±‚Ì•”•ª‚́A’ʏíAHibernate‚ªˆ—‚µAƒVƒXƒeƒ€‚̃pƒtƒH[ƒ}ƒ“ƒX‚ðƒ`ƒ…[ƒjƒ“ƒO‚·‚é‚Æ‚«‚É‚¾‚¯A –â‘è‚É‚È‚Á‚Ä‚«‚Ü‚·B 
+        言いかえれば、Hibernateを用いるアプリケーション開発者は、オブジェクトの <emphasis>状態</emphasis> については
+        常に意識すべきであり、SQL文の実行については必ずしもそうではありません。
+        この部分は、通常、Hibernateが処理し、システムのパフォーマンスをチューニングするときにだけ、 問題になってきます。 
     </para>
     
     <sect1 id="objectstate-overview">
-        <title>Hibernate‚É‚¨‚¯‚éƒIƒuƒWƒFƒNƒg‚̏ó‘Ô</title>
+        <title>Hibernateにおけるオブジェクトの状態</title>
         
         <para>
-            Hibernate‚ÍŽŸ‚̂悤‚ȃIƒuƒWƒFƒNƒg‚̏ó‘Ô‚ð’è‹`‚µAƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B
+            Hibernateは次のようなオブジェクトの状態を定義し、サポートしています。
         </para>
         
         <itemizedlist>
             <listitem>
                 <para> 
-                    <emphasis> ˆêŽž“I(Transient) </emphasis> - <literal>new</literal>
-                     ‰‰ŽZŽq‚ðŽg‚Á‚Ä ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽ‚¾‚¯‚ŁA Hibernate‚Ì <literal>Session</literal> 
-                    ‚ÉŠÖ˜A•t‚¯‚ç‚ê‚Ä‚¢‚È‚¢ƒIƒuƒWƒFƒNƒg‚́A ˆêŽž“I(transient)‚Å‚·B
-                    ‚»‚ê‚́Aƒf[ƒ^ƒx[ƒX‚ɉi‘±“I‚È•\Œ»‚ðŽ‚½‚¸AŽ¯•ÊŽq‚Æ‚È‚é’l‚ÍŠ„‚è“–‚Ä‚ç‚ê‚Ä‚¢‚Ü‚¹‚ñB
-                    ˆêŽž“I‚ȃCƒ“ƒXƒ^ƒ“ƒX‚́AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª‚»‚ÌŽQÆ‚ð‚Ç‚±‚É‚à•ÛŽ‚µ‚È‚¢ê‡‚ɁA ƒKƒx[ƒWƒRƒŒƒNƒ^‚É‚æ‚Á‚Ä”jŠü‚³‚ê‚Ü‚·B
-                    ƒIƒuƒWƒFƒNƒg‚ð‰i‘±“I(persistent)‚ȏó‘Ô‚É‚·‚邽‚߂ɂ́AHibernate‚Ì
-                     <literal>Session</literal> ‚ðŽg‚¢‚Ü‚µ‚傤B
-                    i‚±‚̏ó‘Ô‘JˆÚ‚É•K—v‚Æ‚È‚éSQL•¶‚Ì”­s‚́AHibernate‚É”C‚¹‚Ü‚µ‚傤Bj 
+                    <emphasis> 一時的(Transient) </emphasis> - <literal>new</literal>
+                     演算子を使って インスタンス化されただけで、 Hibernateの <literal>Session</literal> 
+                    に関連付けられていないオブジェクトは、 一時的(transient)です。
+                    それは、データベースに永続的な表現を持たず、識別子となる値は割り当てられていません。
+                    一時的なインスタンスは、アプリケーションがその参照をどこにも保持しない場合に、 ガベージコレクタによって破棄されます。
+                    オブジェクトを永続的(persistent)な状態にするためには、Hibernateの
+                     <literal>Session</literal> を使いましょう。
+                    (この状態遷移に必要となるSQL文の発行は、Hibernateに任せましょう。) 
                 </para>
             </listitem>
             <listitem>
                 <para> 
-                    <emphasis>‰i‘±“I(Persistent)</emphasis> -
-                    ‰i‘±“I‚ȃCƒ“ƒXƒ^ƒ“ƒX‚̓f[ƒ^ƒx[ƒX‚É ‰i‘±“I‚È•\Œ»‚ðŽ‚¿AŽ¯•ÊŽq‚Æ‚È‚é’l‚ðŽ‚Á‚Ä‚¢‚Ü‚·B
-                    ‚»‚ê‚́AƒZ[ƒu‚³‚ꂽ‚èAƒ[ƒh‚³‚ꂽ‚è‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñ‚ªA
-                    ’è‹`ã‚́A <literal>Session</literal> ‚̃XƒR[ƒv‚Ì’†‚É‘¶Ý‚µ‚Ä‚¢‚Ü‚·B
-                    Hibernate‚́Aì‹Æ’PˆÊiUnit of workj‚ªŠ®—¹‚µ‚½‚Æ‚«‚ɁA ‰i‘±ó‘Ԃ̃IƒuƒWƒFƒNƒg‚ɉÁ‚¦‚ç‚ꂽ•ÏX‚ðŒŸo‚µA
-                    ƒIƒuƒWƒFƒNƒg‚̏ó‘Ԃƃf[ƒ^ƒx[ƒX‚𓯊ú‚µ‚Ü‚·B ƒIƒuƒWƒFƒNƒg‚ðˆêŽž“I(transient)‚É‚·‚é‚Æ‚«‚́AŠJ”­ŽÒ‚́AŽèì‹Æ‚Å
-                     <literal>UPDATE</literal> •¶‚â <literal>DELETE</literal>
-                    •¶‚ðŽÀs‚µ‚Ü‚¹‚ñB 
+                    <emphasis>永続的(Persistent)</emphasis> -
+                    永続的なインスタンスはデータベースに 永続的な表現を持ち、識別子となる値を持っています。
+                    それは、セーブされたり、ロードされたりするかもしれませんが、
+                    定義上は、 <literal>Session</literal> のスコープの中に存在しています。
+                    Hibernateは、作業単位(Unit of work)が完了したときに、 永続状態のオブジェクトに加えられた変更を検出し、
+                    オブジェクトの状態とデータベースを同期します。 オブジェクトを一時的(transient)にするときは、開発者は、手作業で
+                     <literal>UPDATE</literal> 文や <literal>DELETE</literal>
+                    文を実行しません。 
                 </para>
             </listitem>
             <listitem>
                 <para> 
-                    <emphasis>•ª—£(Detached)</emphasis> - •ª—£‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚Ƃ́A‰i‘±‰»‚³‚ê‚Ä‚¢‚邪A
-                    ‚»‚ê‚ÆŠÖ˜A•t‚¢‚Ä‚¢‚½ <literal>Session</literal> ‚ªƒNƒ[ƒY‚³‚ê‚Ä‚¢‚éƒIƒuƒWƒFƒNƒg‚Ì‚±‚Æ‚Å‚·B
-                    ‚»‚̃IƒuƒWƒFƒNƒg‚Ö‚ÌŽQÆ‚́AˆË‘R‚Æ‚µ‚Ä—LŒø‚Å‚·B
-                    ‚»‚µ‚āA‚à‚¿‚ë‚ñA•ª—£‚³‚ꂽó‘Ô‚É‚ ‚éƒIƒuƒWƒFƒNƒg‚́AC³‚·‚邱‚Æ‚³‚¦‚Å‚«‚Ü‚·B
-                    •ª—£‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚́A‚à‚¤ˆê“x‰i‘±‰»‚µ‚½‚¢i‚»‚µ‚āA‚·‚ׂĂ̕ύX‚ð‰i‘±‰»‚µ‚½‚¢j‚Æ‚«‚ɁA V‚µ‚¢
-                     <literal>Session</literal> ‚ɍĒljÁ‚Å‚«‚Ü‚·B
-                    ‚±‚Ì‹@”\‚́Aƒ†[ƒU‚ªl‚¦‚鎞ŠÔ‚ð•K—v‚Æ‚·‚é‚悤‚ȁA’·ŠúŠÔ‚É‹y‚ԍì‹Æ’PˆÊ‚ɑ΂·‚é ƒvƒƒOƒ‰ƒ~ƒ“ƒOƒ‚ƒfƒ‹‚ð‰Â”\‚É‚µ‚Ü‚·B
-                    ‰äX‚́A‚±‚ê‚ð <emphasis>ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“iapplication
-                    transactionsj</emphasis> ‚ƌĂñ‚Å‚¢‚Ü‚·B ‚·‚È‚í‚¿Aƒ†[ƒU‚©‚猩‚½ì‹Æ’PˆÊ‚¾‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
+                    <emphasis>分離(Detached)</emphasis> - 分離されたインスタンスとは、永続化されているが、
+                    それと関連付いていた <literal>Session</literal> がクローズされているオブジェクトのことです。
+                    そのオブジェクトへの参照は、依然として有効です。
+                    そして、もちろん、分離された状態にあるオブジェクトは、修正することさえできます。
+                    分離されたインスタンスは、もう一度永続化したい(そして、すべての変更を永続化したい)ときに、 新しい
+                     <literal>Session</literal> に再追加できます。
+                    この機能は、ユーザが考える時間を必要とするような、長期間に及ぶ作業単位に対する プログラミングモデルを可能にします。
+                    我々は、これを <emphasis>アプリケーションのトランザクション(application
+                    transactions)</emphasis> と呼んでいます。 すなわち、ユーザから見た作業単位だということです。
                 </para>
             </listitem>
         </itemizedlist>
         
         <para> 
-            ‚±‚ê‚©‚çAó‘ԂƏó‘Ô‘JˆÚi‚»‚µ‚āA‘JˆÚ‚Ì‚«‚Á‚©‚¯‚Æ‚È‚éHibernate‚̃ƒ\ƒbƒhj‚ɂ‚¢‚Ä AÚ×‚ɏq‚ׂ܂·B 
+            これから、状態と状態遷移(そして、遷移のきっかけとなるHibernateのメソッド)について 、詳細に述べます。 
         </para>
         
     </sect1>
     
     <sect1 id="objectstate-makingpersistent" revision="1">
-        <title>ƒIƒuƒWƒFƒNƒg‚ð‰i‘±ó‘Ô‚É‚·‚é</title>
+        <title>オブジェクトを永続状態にする</title>
         
         <para>
-            V‚µ‚­ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽ‰i‘±ƒNƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚́A Hibernate‚Å‚Í
-             <emphasis>ˆêŽž“I(transient)</emphasis> ‚ÆŒ©‚È‚³‚ê‚Ü‚·B
-            ˆÈ‰º‚̂悤‚ɁAƒZƒbƒVƒ‡ƒ“‚ÆŠÖ˜A‚¯‚邱‚ƂŁAˆêŽž“I‚ȃCƒ“ƒXƒ^ƒ“ƒX‚ð
-             <emphasis>‰i‘±ó‘Ô(persistent)</emphasis> ‚É‚Å‚«‚Ü‚·B 
+            新しくインスタンス化された永続クラスのインスタンスは、 Hibernateでは
+             <emphasis>一時的(transient)</emphasis> と見なされます。
+            以下のように、セッションと関連づけることで、一時的なインスタンスを
+             <emphasis>永続状態(persistent)</emphasis> にできます。 
          </para>
         
         
@@ -86,18 +88,18 @@
 Long generatedId = (Long) sess.save(fritz);]]></programlisting>
         
         <para> 
-            <literal>Cat</literal> ƒNƒ‰ƒX‚ÌŽ¯•ÊŽq‚ªŽ©“®¶¬‚³‚ê‚é‚Ì‚Å‚ ‚ê‚΁A
-            <literal>save()</literal> ‚ªŒÄ‚΂ê‚é‚Æ‚«‚ɁA Ž¯•ÊŽq‚ª¶¬‚³‚êA <literal>cat</literal>
-            ƒCƒ“ƒXƒ^ƒ“ƒ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 ‚̏‰Šúƒhƒ‰ƒtƒg‚Å’è‹`‚³‚ꂽ
-             <literal>persist()</literal> ‚ðŽg‚¤‚±‚Æ‚à‰Â”\‚Å‚·B 
+            <literal>Cat</literal> クラスの識別子が自動生成されるのであれば、
+            <literal>save()</literal> が呼ばれるときに、 識別子が生成され、 <literal>cat</literal>
+            インスタンスに割り当てられます。 <literal>Cat</literal> 
+            の識別子が他から割り当てられる( <literal>assigned</literal> 識別子を持つ)か、複合キーであるなら、
+             <literal>save()</literal> を呼び出す前に、識別子を割り当てなければなりません。
+             <literal>save()</literal> の代わりに、EJB3 の初期ドラフトで定義された
+             <literal>persist()</literal> を使うことも可能です。 
          </para>
         
         <para> 
-             ‘ã‚í‚è‚ɁAŽ¯•ÊŽq‚ðˆø”‚É‚Æ‚é <literal>save()</literal>
-            ƒƒ\ƒbƒh‚ðŽg‚Á‚āA Ž¯•ÊŽq‚ðŠ„‚è“–‚Ă邱‚Æ‚à‚Å‚«‚Ü‚·B 
+             代わりに、識別子を引数にとる <literal>save()</literal>
+            メソッドを使って、 識別子を割り当てることもできます。 
         </para>
         
         
@@ -110,29 +112,29 @@
 sess.save( pk, new Long(1234) );]]></programlisting>
         
         <para> 
-            ‰i‘±‰»‚·‚éƒIƒuƒWƒFƒNƒg‚ªŠÖ˜AƒIƒuƒWƒFƒNƒg‚ðŽ‚Á‚Ä‚¢‚éê‡ i—Ⴆ‚΁A‘O‚Ì—á‚É‚¨‚¯‚é
-             <literal>kittens</literal> ƒRƒŒƒNƒVƒ‡ƒ“‚̂悤‚ɁjA ŠO•”ƒL[ƒJƒ‰ƒ€‚ɁA <literal>NOT
-            NULL</literal> §–ñ‚ð‚‚¯‚È‚¢ŒÀ‚è‚́A ‚±‚ê‚ç‚̈ê˜A‚̃IƒuƒWƒFƒNƒg‚ð‚Ç‚ñ‚ȏ‡”Ԃʼni‘±‰»‚µ‚Ä‚à‚©‚Ü‚¢‚Ü‚¹‚ñB
-            ŠO•”ƒL[§–ñ‚ðˆá”½‚·‚é‹°‚ê‚Í‚ ‚è‚Ü‚¹‚ñB ‚µ‚©‚µA <literal>NOT NULL</literal> 
-            §–ñ‚ª‚ ‚éê‡AŠÔˆá‚Á‚½‡”ԂŃIƒuƒWƒFƒNƒg‚ð <literal>save()</literal> ‚µ‚Ä‚µ‚Ü‚¤‚ƁA
-            §–ñ‚Ɉᔽ‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB </para>
+            永続化するオブジェクトが関連オブジェクトを持っている場合 (例えば、前の例における
+             <literal>kittens</literal> コレクションのように)、 外部キーカラムに、 <literal>NOT
+            NULL</literal> 制約をつけない限りは、 これらの一連のオブジェクトをどんな順番で永続化してもかまいません。
+            外部キー制約を違反する恐れはありません。 しかし、 <literal>NOT NULL</literal> 
+            制約がある場合、間違った順番でオブジェクトを <literal>save()</literal> してしまうと、
+            制約に違反するかもしれません。 </para>
         
         <para>
-            ŠÖ˜A‚·‚éƒIƒuƒWƒFƒNƒg‚ðŽ©“®“I‚É•Û‘¶‚·‚éA Hibernate‚Ì <emphasis>‘JˆÚ“I‚ȉi‘±‰»(transitive
-            persistence)</emphasis> ‹@”\‚ð Žg‚¤‚‚à‚è‚È‚ç‚΁A‚»‚̂悤‚ȏڍׂð‹C‚É‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB
-            ‚»‚µ‚āA <literal>NOT NULL</literal> §–ñ‚̈ᔽ‚·‚ç‹N‚±‚è‚Ü‚¹‚ñB
-            Hibernate‚ª‚·‚ׂĖʓ|‚ð‚Ý‚Ä‚­‚ê‚Ü‚·B‘JˆÚ“I‚ȉi‘±‰»‚́A‚±‚̏͂̌㔼‚ɏ‘‚©‚ê‚Ä‚¢‚Ü‚·B </para>
+            関連するオブジェクトを自動的に保存する、 Hibernateの <emphasis>遷移的な永続化(transitive
+            persistence)</emphasis> 機能を 使うつもりならば、そのような詳細を気にする必要はありません。
+            そして、 <literal>NOT NULL</literal> 制約の違反すら起こりません。
+            Hibernateがすべて面倒をみてくれます。遷移的な永続化は、この章の後半に書かれています。 </para>
         
     </sect1>
     
     <sect1 id="objectstate-loading">
-        <title>ƒIƒuƒWƒFƒNƒg‚̃[ƒh</title>
+        <title>オブジェクトのロード</title>
         
         <para>
-            ‰i‘±‰»‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚ÌŽ¯•ÊŽq‚ª‚ ‚ç‚©‚¶‚ß•ª‚©‚Á‚Ä‚¢‚é‚È‚çA <literal>Session</literal> ‚Ì
-             <literal>load()</literal> ƒƒ\ƒbƒh‚ðŽg‚Á‚āA•œŒ³‚Å‚«‚Ü‚·B <literal>load()</literal> 
-            ‚́AClass ƒIƒuƒWƒFƒNƒg‚ðˆø”‚É‚Æ‚èA ‚»‚̃Nƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ðV‚½‚ɐ¶¬‚µAó‘Ô‚ðƒ[ƒh‚µ‚Ü‚·B
-            ‚»‚̃Cƒ“ƒXƒ^ƒ“ƒX‚̏ó‘Ԃ́A‰i‘±(persistent)ó‘Ô‚Å‚·B </para>
+            永続化されたインスタンスの識別子があらかじめ分かっているなら、 <literal>Session</literal> の
+             <literal>load()</literal> メソッドを使って、復元できます。 <literal>load()</literal> 
+            は、Class オブジェクトを引数にとり、 そのクラスのインスタンスを新たに生成し、状態をロードします。
+            そのインスタンスの状態は、永続(persistent)状態です。 </para>
         
         
         <programlisting><![CDATA[Cat fritz = (Cat) sess.load(Cat.class, generatedId);]]></programlisting>
@@ -142,7 +144,7 @@
 long id = 1234;
 DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long(id) );]]></programlisting>
         <para>
-            ‚ ‚é‚¢‚́AˆÈ‰º‚̂悤‚ɁAŠù‘¶‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ɏó‘Ô‚ðƒ[ƒh‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B </para>
+            あるいは、以下のように、既存のインスタンスに状態をロードすることもできます。 </para>
         
         
         <programlisting><![CDATA[Cat cat = new DomesticCat();
@@ -151,16 +153,16 @@
 Set kittens = cat.getKittens();]]></programlisting>
         
         <para> 
-            DB‚ÉŠY“–‚·‚és‚ª–³‚¢ê‡A <literal>load()</literal> ‚͉ñ•œ•s‰Â”\‚È—áŠO‚ð “Š‚°‚邱‚Æ‚É’ˆÓ‚µ‚Ü‚µ‚傤B
-            ‚»‚̃Nƒ‰ƒX‚ªƒvƒƒLƒV‚ðŽg‚Á‚ă}ƒbƒsƒ“ƒO‚³‚ê‚Ä‚¢‚éê‡A <literal>load()</literal> 
-            ‚͏‰Šú‰»‚³‚ê‚Ä‚¢‚È‚¢ƒvƒƒLƒV‚ð•Ô‚µAƒvƒƒLƒV‚̃ƒ\ƒbƒh‚ªŒÄ‚΂ê‚é‚Ü‚ÅŽÀÛ‚É‚Í ƒf[ƒ^ƒx[ƒX‚ɃAƒNƒZƒX‚µ‚Ü‚¹‚ñB
-            ‚à‚µAŽÀÛ‚Ƀf[ƒ^ƒx[ƒX‚©‚烍[ƒh‚¹‚¸‚ɁAƒIƒuƒWƒFƒNƒg‚ɑ΂·‚éŠÖ˜A‚ðì‚肽‚¢ê‡A ‚±‚̐U‚é•‘‚¢‚Í‚Æ‚Ä‚à–𗧂¿‚Ü‚·B
-             <literal>batch-size</literal> ‚ªƒNƒ‰ƒXƒ}ƒbƒsƒ“ƒO‚É’è‹`‚³‚ê‚Ä‚¢‚é‚È‚ç‚΁A
-            •¡”‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ðˆêŠ‡‚э[ƒh‚·‚邱‚Æ‚ª‰Â”\‚Å‚·B </para>
+            DBに該当する行が無い場合、 <literal>load()</literal> は回復不可能な例外を 投げることに注意しましょう。
+            そのクラスがプロキシを使ってマッピングされている場合、 <literal>load()</literal> 
+            は初期化されていないプロキシを返し、プロキシのメソッドが呼ばれるまで実際には データベースにアクセスしません。
+            もし、実際にデータベースからロードせずに、オブジェクトに対する関連を作りたい場合、 この振る舞いはとても役立ちます。
+             <literal>batch-size</literal> がクラスマッピングに定義されているならば、
+            複数のインスタンスを一括でロードすることが可能です。 </para>
         
         <para>
-            ŠY“–‚·‚és‚ª‘¶Ý‚·‚邱‚Æ‚ðŠmM‚Å‚«‚È‚¢ê‡‚́A <literal>get()</literal> ƒƒ\ƒbƒh‚ðŽg‚¤‚ׂ«‚Å‚·B
-            ‚»‚ê‚́Aƒf[ƒ^ƒx[ƒX‚É‚·‚®‚ɃAƒNƒZƒX‚µAŠY“–‚·‚és‚ª–³‚¢ê‡‚Ínull‚ð•Ô‚µ‚Ü‚·B </para>
+            該当する行が存在することを確信できない場合は、 <literal>get()</literal> メソッドを使うべきです。
+            それは、データベースにすぐにアクセスし、該当する行が無い場合はnullを返します。 </para>
         
         
         <programlisting><![CDATA[Cat cat = (Cat) sess.get(Cat.class, id);
@@ -171,53 +173,53 @@
 return cat;]]></programlisting>
         
         <para>
-            <literal>LockMode</literal> ‚ðŽg‚¦‚΁A
-             <literal>SELECT ... FOR UPDATE</literal>‚Æ‚¢‚¤SQL‚ð Žg‚Á‚ăIƒuƒWƒFƒNƒg‚ðƒ[ƒh‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-            Ú×‚ȏî•ñ‚́AAPIƒhƒLƒ…ƒƒ“ƒg‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B </para>
+            <literal>LockMode</literal> を使えば、
+             <literal>SELECT ... FOR UPDATE</literal>というSQLを 使ってオブジェクトをロードすることができます。
+            詳細な情報は、APIドキュメントを参照してください。 </para>
         
         
         <programlisting><![CDATA[Cat cat = (Cat) sess.get(Cat.class, id, LockMode.UPGRADE);]]></programlisting>
         
         <para>
-            ŠÖ˜A‚ɑ΂·‚éƒJƒXƒP[ƒh•û–@‚Æ‚µ‚Ä
-             <literal>lock</literal> ‚â <literal>all</literal> ‚ð
-            Žw’肵‚È‚¢ŒÀ‚èAŠÖ˜A‚·‚éƒCƒ“ƒXƒ^ƒ“ƒX‚âŠÜ‚Ü‚ê‚éƒRƒŒƒNƒVƒ‡ƒ“‚Í <literal>FOR UPDATE</literal> ‚Å•œŒ³
-             <emphasis>‚³‚ê‚È‚¢</emphasis> ‚±‚Æ‚É’ˆÓ‚µ‚Ü‚µ‚傤B </para>
+            関連に対するカスケード方法として
+             <literal>lock</literal> ã‚„ <literal>all</literal> ã‚’
+            指定しない限り、関連するインスタンスや含まれるコレクションは <literal>FOR UPDATE</literal> で復元
+             <emphasis>されない</emphasis> ことに注意しましょう。 </para>
         
         <para>
-            <literal>refresh()</literal> ƒƒ\ƒbƒh‚ðŽg‚¤‚±‚ƂŁA‚Ç‚ñ‚È‚Æ‚«‚Å‚àAƒIƒuƒWƒFƒNƒg‚â‚»‚̃RƒŒƒNƒVƒ‡ƒ“‚ð
-            ƒŠƒ[ƒh‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B ƒf[ƒ^ƒx[ƒX‚̃gƒŠƒK‚ªƒe[ƒuƒ‹‚ðXV‚µ‚½Û‚ɁA
-            ‚»‚̃e[ƒuƒ‹‚ɑΉž‚·‚éƒIƒuƒWƒFƒNƒg‚̃vƒƒpƒeƒB‚𓯊ú‚·‚éê‡A‚±‚̃ƒ\ƒbƒh‚ª–ð‚É—§‚¿‚Ü‚·B </para>
+            <literal>refresh()</literal> メソッドを使うことで、どんなときでも、オブジェクトやそのコレクションを
+            リロードすることができます。 データベースのトリガがテーブルを更新した際に、
+            そのテーブルに対応するオブジェクトのプロパティを同期する場合、このメソッドが役に立ちます。 </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>ƒtƒFƒbƒ`‚̐헪</emphasis> ‚É‚æ‚è‚Ü‚·B‚±‚ê‚ɂ‚¢‚ẮA<xref linkend="performance-fetching"/> ‚Åà–¾‚µ‚Ä‚¢‚Ü‚·B </para>
+            大切な問題は、いつも次の点に関するものです。それは、Hibernateがデータベースから、
+            どのくらいの量を復元するのかと、どのくらいの数のSQLの <literal>SELECT</literal> 文が使われるのかです。
+            これは、 <emphasis>フェッチの戦略</emphasis> によります。これについては、<xref linkend="performance-fetching"/> で説明しています。 </para>
         
     </sect1>
     
     <sect1 id="objectstate-querying" revision="1">
-        <title>ƒNƒGƒŠ</title>
+        <title>クエリ</title>
         
         <para>
-            ’T‚µ‚½‚¢ƒIƒuƒWƒFƒNƒg‚ÌŽ¯•ÊŽq‚ª•ª‚©‚ç‚È‚¢ê‡‚́AƒNƒGƒŠ‚ª•K—v‚É‚È‚è‚Ü‚·B
-            Hibernate‚ÍŽg‚¢‚â‚·‚­‚Ä‹­—͂ȃIƒuƒWƒFƒNƒgŽwŒü‚̃NƒGƒŠŒ¾Œê (HQL)‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B
-            ƒvƒƒOƒ‰ƒ€‚É‚æ‚Á‚ăNƒGƒŠ‚ªì¬‚Å‚«‚é‚悤‚ɁAHibernate‚͐ô—û‚³‚ꂽCriteria‚ÆExampleƒNƒGƒŠ‹@”\(QBC‚ÆQBEj‚ð
-            ƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·BResultSet‚ðƒIƒuƒWƒFƒNƒg‚É•ÏŠ·‚·‚éHibernate‚̃IƒvƒVƒ‡ƒ“‹@”\‚ðŽg‚¤‚±‚ƂŁA
-            ƒf[ƒ^ƒx[ƒX‚̃lƒCƒeƒBƒu‚ÈSQL‚ŃNƒGƒŠ‚ð•\Œ»‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B </para>
+            探したいオブジェクトの識別子が分からない場合は、クエリが必要になります。
+            Hibernateは使いやすくて強力なオブジェクト指向のクエリ言語 (HQL)をサポートしています。
+            プログラムによってクエリが作成できるように、Hibernateは洗練されたCriteriaとExampleクエリ機能(QBCとQBE)を
+            サポートしています。ResultSetをオブジェクトに変換するHibernateのオプション機能を使うことで、
+            データベースのネイティブなSQLでクエリを表現することもできます。 </para>
         
         <sect2 id="objectstate-querying-executing" revision="1">
-            <title>ƒNƒGƒŠ‚ÌŽÀs</title>
+            <title>クエリの実行</title>
             
             <para>
-                HQL‚âƒlƒCƒeƒBƒu‚ÈSQLƒNƒGƒŠ‚́A <literal>org.hibernate.Query</literal> 
-                ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Æ‚µ‚Ä•\Œ»‚³‚ê‚Ü‚·B ‚±‚̃Cƒ“ƒ^ƒtƒF[ƒX‚́Aƒpƒ‰ƒ[ƒ^ƒoƒCƒ“ƒfƒBƒ“ƒO‚âResultSet‚̃nƒ“ƒhƒŠƒ“ƒO‚â
-                ƒNƒGƒŠ‚ÌŽÀs‚ðs‚¤ƒƒ\ƒbƒh‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚·B ’ʏíA <literal>Query</literal> ‚́AˆÈ‰º‚ÉŽ¦‚·‚悤‚ɁA
-                ‚»‚ÌŽž“_‚Ì <literal>Session</literal> ‚ðŽg‚Á‚Ď擾‚µ‚Ü‚·B </para>
+                HQLやネイティブなSQLクエリは、 <literal>org.hibernate.Query</literal> 
+                のインスタンスとして表現されます。 このインタフェースは、パラメータバインディングやResultSetのハンドリングや
+                クエリの実行を行うメソッドを用意しています。 通常、 <literal>Query</literal> は、以下に示すように、
+                その時点の <literal>Session</literal> を使って取得します。 </para>
             
             
             <programlisting><![CDATA[List cats = session.createQuery(
@@ -247,27 +249,27 @@
 			]]></programlisting>
             
             <para> 
-                ƒNƒGƒŠ‚́A•’ʁA <literal>list()</literal> ‚ðŒÄ‚яo‚·‚±‚Æ‚É‚æ‚Á‚ÄŽÀs‚³‚ê‚Ü‚·B
-                ƒNƒGƒŠ‚ÌŒ‹‰Ê‚́Aƒƒ‚ƒŠã‚É‚ ‚éƒRƒŒƒNƒVƒ‡ƒ“‚É‚·‚ׂ㍁[ƒh‚³‚ê‚Ü‚·B
-                ƒNƒGƒŠ‚É‚æ‚Á‚Ä•œŒ³‚³‚ꂽƒGƒ“ƒeƒBƒeƒB‚̃Cƒ“ƒXƒ^ƒ“ƒX‚́A‰i‘±ó‘Ô‚Å‚·B
-                ‚à‚µAƒNƒGƒŠ‚ª‚½‚Á‚½1ŒÂ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð•Ô‚·‚Æ•ª‚©‚Á‚Ä‚¢‚é‚È‚çA
-                 <literal>uniqueResult()</literal> ƒƒ\ƒbƒh‚ªŽè‚ÁŽæ‚葁‚¢•û–@‚Å‚·B
-                ‘¦ŽžƒtƒFƒbƒ`‚ð—˜—p‚µ‚½ƒNƒGƒŠ‚̏ꍇA‚ӂ‚¤A“¾‚ç‚ꂽƒRƒŒƒNƒVƒ‡ƒ“‚ɂ́A
-                ƒ‹[ƒg‚̃IƒuƒWƒFƒNƒg‚ªd•¡‚µ‚ÄŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·
-                i‚µ‚©‚µAƒ‹[ƒg‚ªŽ‚ƒRƒŒƒNƒVƒ‡ƒ“‚͏‰Šú‰»(ƒ[ƒhj‚³‚ê‚Ä‚¢‚Ü‚·jB 
-                ‚±‚̏d•¡‚Í <literal>Set</literal> ‚ðŽg‚Á‚ÄŽæ‚菜‚­‚±‚Æ‚ª‚Å‚«‚Ü‚·B</para>
+                クエリは、普通、 <literal>list()</literal> を呼び出すことによって実行されます。
+                クエリの結果は、メモリ上にあるコレクションにすべてロードされます。
+                クエリによって復元されたエンティティのインスタンスは、永続状態です。
+                もし、クエリがたった1個のインスタンスを返すと分かっているなら、
+                 <literal>uniqueResult()</literal> メソッドが手っ取り早い方法です。
+                即時フェッチを利用したクエリの場合、ふつう、得られたコレクションには、
+                ルートのオブジェクトが重複して含まれています
+                (しかし、ルートが持つコレクションは初期化(ロード)されています)。 
+                この重複は <literal>Set</literal> を使って取り除くことができます。</para>
             
             <sect3 id="objectstate-querying-executing-iterate">
-                <title>Œ‹‰Ê‚ðƒCƒeƒŒ[ƒg‚·‚é</title>
+                <title>結果をイテレートする</title>
                 
                 <para> 
-                    ŽžXA <literal>iterate()</literal> ƒƒ\ƒbƒh‚ðŽg‚Á‚ăNƒGƒŠ‚ðŽÀs‚·‚邱‚ƂŁA
-                    ‚æ‚è—Ç‚¢ƒpƒtƒH[ƒ}ƒ“ƒX‚𓾂邱‚Æ‚ª‚Å‚«‚Ü‚·B ‚±‚ê‚́A’ʏíAƒNƒGƒŠ‚É‚æ‚Á‚Ä“¾‚ç‚ꂽŽÀÛ‚̃Gƒ“ƒeƒBƒeƒB‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ªA
-                    ‚·‚łɃZƒbƒVƒ‡ƒ“‚Ü‚½‚Í“ñŽŸƒLƒƒƒbƒVƒ…‚É‘¶Ý‚·‚邱‚Æ‚ªŠú‘Ò‚Å‚«‚éê‡‚¾‚¯‚Å‚·B
-                    ‚»‚ê‚炪A‚Ü‚¾ƒLƒƒƒbƒVƒ…‚³‚ê‚Ä‚¢‚È‚¢‚È‚çA <literal>iterate()</literal> ‚́A
-                     <literal>list()</literal> ‚æ‚è‚à’x‚­AŠÈ’P‚ȃNƒGƒŠ‚ɑ΂µ‚Ä‚à‘½‚­‚̃f[ƒ^ƒx[ƒXƒAƒNƒZƒX‚ð
-                    •K—v‚Æ‚µ‚Ü‚·B‚»‚̃AƒNƒZƒX‚Ƃ́AŽ¯•ÊŽq‚¾‚¯‚ðŽæ“¾‚·‚邽‚߂̍ŏ‰‚Ìselect‚P‰ñ‚ƁA
-                    ŽÀÛ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð‰Šú‰»‚·‚邽‚߂Ɍォ‚çs‚¤n‰ñ‚Ìselect‚Ì‚±‚Æ‚Å‚·B </para>
+                    時々、 <literal>iterate()</literal> メソッドを使ってクエリを実行することで、
+                    より良いパフォーマンスを得ることができます。 これは、通常、クエリによって得られた実際のエンティティのインスタンスが、
+                    すでにセッションまたは二次キャッシュに存在することが期待できる場合だけです。
+                    それらが、まだキャッシュされていないなら、 <literal>iterate()</literal> は、
+                     <literal>list()</literal> よりも遅く、簡単なクエリに対しても多くのデータベースアクセスを
+                    必要とします。そのアクセスとは、識別子だけを取得するための最初のselect1回と、
+                    実際のインスタンスを初期化するために後から行うn回のselectのことです。 </para>
                 
                 
                 <programlisting><![CDATA[// fetch ids
@@ -285,9 +287,9 @@
             </sect3>
             
             <sect3 id="objectstate-querying-executing-tuples">
-                <title>ƒIƒuƒWƒFƒNƒg‚Ì‘gituplej‚ð•Ô‚·ƒNƒGƒŠ</title>
+                <title>オブジェクトの組(tuple)を返すクエリ</title>
                 <para>
-                    Hibernate‚̃NƒGƒŠ‚ł́AŽžXAƒIƒuƒWƒFƒNƒg‚Ì‘g‚ð•Ô‚·‚±‚Æ‚ª‚ ‚è‚Ü‚·B ‚»‚̏ꍇ‚́AŠeƒ^ƒvƒ‹‚Í”z—ñ‚Æ‚µ‚Ä•Ô‚³‚ê‚Ü‚·B
+                    Hibernateのクエリでは、時々、オブジェクトの組を返すことがあります。 その場合は、各タプルは配列として返されます。
                     </para>
                 
                 
@@ -306,12 +308,12 @@
             </sect3>
             
             <sect3 id="objectstate-querying-executing-scalar" revision="1">
-                <title>ƒXƒJƒ‰[‚ÌŒ‹‰Ê</title>
+                <title>スカラーの結果</title>
                 
                 <para>
-                    ƒNƒGƒŠ‚ł́A <literal>select</literal> ß‚ŃNƒ‰ƒX‚̃vƒƒpƒeƒB‚ðŽw’è‚Å‚«‚Ü‚·B
-                    SQL‚̏W‡ŠÖ”‚ðŒÄ‚Ô‚±‚Æ‚à‚Å‚«‚Ü‚·BƒvƒƒpƒeƒB‚âW‡ŠÖ”‚́A
-                    i‰i‘±ó‘Ԃ̃Gƒ“ƒeƒBƒeƒB‚Å‚Í‚È‚­juƒXƒJƒ‰[’lv‚Å‚ ‚é‚ÆŒ©‚È‚³‚ê‚Ü‚·B </para>
+                    クエリでは、 <literal>select</literal> 節でクラスのプロパティを指定できます。
+                    SQLの集合関数を呼ぶこともできます。プロパティや集合関数は、
+                    (永続状態のエンティティではなく)「スカラー値」であると見なされます。 </para>
                 
                 
                 <programlisting><![CDATA[Iterator results = sess.createQuery(
@@ -331,25 +333,25 @@
             </sect3>
             
             <sect3 id="objectstate-querying-executing-parameters">
-                <title>ƒpƒ‰ƒ[ƒ^‚̃oƒCƒ“ƒh</title>
+                <title>パラメータのバインド</title>
                 
                 <para>
                     <literal>Query</literal>
-                    ‚́A–¼‘O•t‚«‚̃pƒ‰ƒ[ƒ^‚âJDBCƒXƒ^ƒCƒ‹‚Ì <literal>?</literal> 
-                    ƒpƒ‰ƒ[ƒ^‚É’l‚ðƒoƒCƒ“ƒh‚·‚邽‚߂̃ƒ\ƒbƒh‚ðŽ‚Á‚Ä‚¢‚Ü‚·B
-                    <emphasis>JDBC‚Ƃ͈ႢAHibernate‚̓pƒ‰ƒ[ƒ^‚Ƀ[ƒ‚©‚ç”ԍ†‚ðU‚Á‚Ä‚¢‚«‚Ü‚·B</emphasis> 
-                    –¼‘O•t‚«‚̃pƒ‰ƒ[ƒ^‚Ƃ́AƒNƒGƒŠ•¶Žš—ñ‚Ì‚È‚©‚É‚ ‚é <literal>:name</literal> Œ`Ž®‚ÌŽ¯•ÊŽq‚Å‚·B
-                    –¼‘O•t‚«ƒpƒ‰ƒ[ƒ^‚Ì—˜“_‚ÍŽŸ‚Ì’Ê‚è‚Å‚·B </para>
+                    は、名前付きのパラメータやJDBCスタイルの <literal>?</literal> 
+                    パラメータに値をバインドするためのメソッドを持っています。
+                    <emphasis>JDBCとは違い、Hibernateはパラメータにゼロから番号を振っていきます。</emphasis> 
+                    名前付きのパラメータとは、クエリ文字列のなかにある <literal>:name</literal> 形式の識別子です。
+                    名前付きパラメータの利点は次の通りです。 </para>
                 
                 <itemizedlist spacing="compact">
                     <listitem>
-                        <para>  –¼‘O•t‚«ƒpƒ‰ƒ[ƒ^‚́AƒNƒGƒŠ•¶Žš—ñ‚É“oê‚·‚鏇”Ô‚Æ–³ŠÖŒW‚Å‚· </para>
+                        <para>  名前付きパラメータは、クエリ文字列に登場する順番と無関係です </para>
                     </listitem>
                     <listitem>
-                        <para> “¯‚¶ƒNƒGƒŠ“à‚É•¡”‰ñ“oê‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚· </para>
+                        <para> 同じクエリ内に複数回登場することができます </para>
                     </listitem>
                     <listitem>
-                        <para> Ž©•ªŽ©g‚ðà–¾‚µ‚Ü‚· </para>
+                        <para> 自分自身を説明します </para>
                     </listitem>
                 </itemizedlist>
                 
@@ -377,12 +379,12 @@
             </sect3>
             
             <sect3 id="objectstate-querying-executing-pagination">
-                <title>ƒy[ƒW•ª‚¯
+                <title>ページ分け
                 </title>
                 
                 <para>
-                    ResultSet‚ɐ§ŒÀi•œŒ³‚µ‚½‚¢Å‘ås”‚â•œŒ³‚µ‚½‚¢Å‰‚̍sj‚ð‰Á‚¦‚é•K—v‚ª‚ ‚ê‚΁A
-                    ˆÈ‰º‚̂悤‚ɁA <literal>Query</literal> ƒCƒ“ƒ^[ƒtƒFƒCƒX‚̃ƒ\ƒbƒh‚ðŽg‚¢‚Ü‚·B </para>
+                    ResultSetに制限(復元したい最大行数や復元したい最初の行)を加える必要があれば、
+                    以下のように、 <literal>Query</literal> インターフェイスのメソッドを使います。 </para>
                 
                 
                 <programlisting><![CDATA[Query q = sess.createQuery("from DomesticCat cat");
@@ -390,19 +392,19 @@
 q.setMaxResults(10);
 List cats = q.list();]]></programlisting>
                 
-                <para>  §ŒÀ•t‚«‚̃NƒGƒŠ‚ðDBMS‚̃lƒCƒeƒBƒu‚ÈSQL‚É•ÏŠ·‚·‚é•û–@‚ðAHibernate‚Í’m‚Á‚Ä‚¢‚Ü‚·B
+                <para>  制限付きのクエリをDBMSのネイティブなSQLに変換する方法を、Hibernateは知っています。
                     </para>
                 
             </sect3>
             
             <sect3 id="objectstate-querying-executing-scrolling">
-                <title>ƒXƒNƒ[ƒ‹‰Â”\‚ȃCƒeƒŒ[ƒVƒ‡ƒ“</title>
+                <title>スクロール可能なイテレーション</title>
                 
                 <para>
-                    JDBCƒhƒ‰ƒCƒo‚ªƒXƒNƒ[ƒ‹‰Â”\‚È <literal>ResultSet</literal> ‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚ê‚΁A
+                    JDBCドライバがスクロール可能な <literal>ResultSet</literal> をサポートしていれば、
                      <literal>Query</literal> 
-                    ƒCƒ“ƒ^[ƒtƒFƒCƒX‚ðŽg‚Á‚āA <literal>ScrollableResults</literal> ƒIƒuƒWƒFƒNƒg‚ð
-                    Žæ“¾‚Å‚«‚Ü‚·B‚»‚ê‚ðŽg‚¤‚ƁAƒNƒGƒŠ‚ÌŒ‹‰Ê‚ɑ΂µ‚ď_“î‚ɃiƒrƒQ[ƒVƒ‡ƒ“‚Å‚«‚Ü‚·B </para>
+                    インターフェイスを使って、 <literal>ScrollableResults</literal> オブジェクトを
+                    取得できます。それを使うと、クエリの結果に対して柔軟にナビゲーションできます。 </para>
                 
                 
                 <programlisting><![CDATA[Query q = sess.createQuery("select cat.name, cat from DomesticCat cat " +
@@ -428,19 +430,19 @@
 cats.close()]]></programlisting>
                 
                 <para>
-                    ‚±‚Ì‹@”\‚ɂ̓I[ƒvƒ“ó‘Ԃ̃f[ƒ^ƒx[ƒXƒRƒlƒNƒVƒ‡ƒ“‚ª•K—v‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-                    ‚à‚µAƒIƒtƒ‰ƒCƒ“‚̃y[ƒW•ª‚¯‹@”\‚ª•K—v‚Å‚ ‚ê‚΁A <literal>setMaxResult()</literal> /
-                     <literal>setFirstResult()</literal> ‚ðŽg‚¢‚Ü‚µ‚傤B </para>
+                    この機能にはオープン状態のデータベースコネクションが必要であることに注意してください。
+                    もし、オフラインのページ分け機能が必要であれば、 <literal>setMaxResult()</literal> /
+                     <literal>setFirstResult()</literal> を使いましょう。 </para>
                 
             </sect3>
             
             <sect3 id="objectstate-querying-executing-named" revision="1">
-                <title>–¼‘O•t‚«ƒNƒGƒŠ‚ÌŠOo‚µ</title>
+                <title>名前付きクエリの外出し</title>
                 
                 <para> 
-                    ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚É–¼‘O•t‚«‚̃NƒGƒŠ‚ð’è‹`‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-                    iƒ}[ƒNƒAƒbƒv‚ƉðŽß‚³‚ê‚镶Žš‚ªƒNƒGƒŠ‚ÉŠÜ‚Ü‚ê‚é‚È‚çA <literal>CDATA</literal> ƒZƒNƒVƒ‡ƒ“‚ð
-                    Žg‚¤‚±‚Æ‚ð–Y‚ê‚È‚¢‚悤‚É‚µ‚Ü‚µ‚傤Bj </para>
+                    マッピングドキュメントに名前付きのクエリを定義することができます。
+                    (マークアップと解釈される文字がクエリに含まれるなら、 <literal>CDATA</literal> セクションを
+                    使うことを忘れないようにしましょう。) </para>
                 
                 
                 <programlisting><![CDATA[<query name="ByNameAndMaximumWeight"><![CDATA[
@@ -449,7 +451,7 @@
         and cat.weight > ?
 ] ]></query>]]></programlisting>
                 
-                <para>ƒpƒ‰ƒ[ƒ^‚̃oƒCƒ“ƒfƒBƒ“ƒO‚ÆŽÀs‚́AˆÈ‰º‚̂悤‚ȃvƒƒOƒ‰ƒ€‚ōs‚í‚ê‚Ü‚·B </para>
+                <para>パラメータのバインディングと実行は、以下のようなプログラムで行われます。 </para>
                 
                 
                 <programlisting><![CDATA[Query q = sess.getNamedQuery("ByNameAndMaximumWeight");
@@ -457,23 +459,23 @@
 q.setInt(1, minWeight);
 List cats = q.list();]]></programlisting>
                 
-                <para> ŽÀÛ‚̃vƒƒOƒ‰ƒ€ƒR[ƒh‚́AŽg‚í‚ê‚éƒNƒGƒŠŒ¾Œê‚Ɉˑ¶‚µ‚Ä‚¢‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ü‚µ‚傤B
-                    ƒƒ^ƒf[ƒ^‚ɂ́AƒlƒCƒeƒBƒuSQLƒNƒGƒŠ‚ð’è‹`‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B ‚Ü‚½AŠù‘¶‚̃NƒGƒŠ‚ðƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚Ɉڂ·‚±‚ƂŁA
-                    Hibernate‚Ɉڍs‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B </para>
+                <para> 実際のプログラムコードは、使われるクエリ言語に依存していないことに注意しましょう。
+                    メタデータには、ネイティブSQLクエリを定義することもできます。 また、既存のクエリをマッピングファイルに移すことで、
+                    Hibernateに移行することもできます。 </para>
                 <para>
-                    <literal>&lt;hibernate-mapping&gt;</literal> ‚Ì’†‚̃NƒGƒŠ’è‹`‚́AƒNƒGƒŠ‚ɑ΂·‚é
-                    ƒ†ƒj[ƒN‚È–¼‘O‚ª•K—v‚È‚±‚Æ‚É‚à’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B‚»‚ê‚ɑ΂µ‚āA <literal>&lt;class&gt;</literal> ‚Ì’†‚Ì
-                    ƒNƒGƒŠ’è‹`‚́AƒNƒ‰ƒX‚ÌŠ®‘SŒÀ’è–¼‚ª‘O‚É•t‚¯‚ç‚ê‚é‚̂ŁAŽ©“®“I‚Ƀ†ƒj[ƒN‚È–¼‘O‚É‚È‚è‚Ü‚·B
-                    —áF <literal>eg.Cat.ByNameAndMaximumWeight</literal>
+                    <literal>&lt;hibernate-mapping&gt;</literal> の中のクエリ定義は、クエリに対する
+                    ユニークな名前が必要なことにも注意してください。それに対して、 <literal>&lt;class&gt;</literal> の中の
+                    クエリ定義は、クラスの完全限定名が前に付けられるので、自動的にユニークな名前になります。
+                    例: <literal>eg.Cat.ByNameAndMaximumWeight</literal>
                 </para>
             </sect3>
         </sect2>
         
         <sect2 id="objectstate-filtering" revision="1">
-            <title>ƒRƒŒƒNƒVƒ‡ƒ“‚̃tƒBƒ‹ƒ^ƒŠƒ“ƒO</title>
-            <para> ƒRƒŒƒNƒVƒ‡ƒ“ <emphasis>ƒtƒBƒ‹ƒ^</emphasis> ‚́A‰i‘±‰»‚³‚ê‚Ä‚¢‚éƒRƒŒƒNƒVƒ‡ƒ“‚â”z—ñ‚É“K—p‚³‚ê‚é
-                “ÁŽê‚ȃ^ƒCƒv‚̃NƒGƒŠ‚Å‚·B‚»‚̃NƒGƒŠ•¶Žš—ñ‚ł́AƒRƒŒƒNƒVƒ‡ƒ“‚Ì‚»‚ÌŽž“_‚Å‚Ì—v‘f‚ðˆÓ–¡‚·‚é
-                <literal>this</literal> ‚ðŽg‚¢‚Ü‚·B </para>
+            <title>コレクションのフィルタリング</title>
+            <para> コレクション <emphasis>フィルタ</emphasis> は、永続化されているコレクションや配列に適用される
+                特殊なタイプのクエリです。そのクエリ文字列では、コレクションのその時点での要素を意味する
+                <literal>this</literal> を使います。 </para>
             
             
             <programlisting><![CDATA[Collection blackKittens = session.createFilter(
@@ -483,12 +485,12 @@
     .list()
 );]]></programlisting>
             
-            <para>  •Ô‚³‚ê‚éƒRƒŒƒNƒVƒ‡ƒ“‚ÍBag‚Æ‚Ý‚È‚³‚ê‚Ü‚·B‚»‚µ‚āA‚»‚ê‚Í‚à‚Ƃ̃RƒŒƒNƒVƒ‡ƒ“‚̃Rƒs[‚É‚È‚è‚Ü‚·B
-                Œ³‚̃RƒŒƒNƒVƒ‡ƒ“‚͏C³‚³‚ê‚Ü‚¹‚ñi‚±‚ê‚́A"filter"‚Æ‚¢‚¤–¼‘O‚̈Ӗ¡‚Ƃ͈قȂè‚Ü‚·‚ªA Šú‘Ò‚³‚ê‚é“®‚«‚Ƃ͈ê’v‚µ‚Ä‚¢‚Ü‚·jB
+            <para>  返されるコレクションはBagとみなされます。そして、それはもとのコレクションのコピーになります。
+                元のコレクションは修正されません(これは、"filter"という名前の意味とは異なりますが、 期待される動きとは一致しています)。
                 </para>
             
-            <para> ƒtƒBƒ‹ƒ^‚É‚Í <literal>from</literal> 
-                ß‚ª•s—v‚Å‚ ‚邱‚Æ‚É‹C‚­‚Å‚µ‚傤i•K—v‚È‚çAŽ‚‚±‚Æ‚à‰Â”\‚Å‚·‚ªjB ƒtƒBƒ‹ƒ^‚́AƒRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘fŽ©‘Ì‚ð•Ô‚µ‚č\‚¢‚Ü‚¹‚ñB
+            <para> フィルタには <literal>from</literal> 
+                節が不要であることに気づくでしょう(必要なら、持つことも可能ですが)。 フィルタは、コレクションの要素自体を返して構いません。
                 </para>
             
             
@@ -497,8 +499,8 @@
     "select this.mate where this.color = eg.Color.BLACK.intValue")
     .list();]]></programlisting>
             
-            <para>  ƒNƒGƒŠ‚ðŠÜ‚Ü‚È‚¢ƒtƒBƒ‹ƒ^‚à–ð‚É—§‚¿‚Ü‚·B
-                —Ⴆ‚΁A”ñí‚É‘å‚«‚ȃRƒŒƒNƒVƒ‡ƒ“‚Ì•”•ªW‡‚ðƒ[ƒh‚·‚邽‚ß‚ÉŽg‚¦‚Ü‚·B </para>
+            <para>  クエリを含まないフィルタも役に立ちます。
+                例えば、非常に大きなコレクションの部分集合をロードするために使えます。 </para>
             
             
             <programlisting><![CDATA[Collection tenKittens = session.createFilter(
@@ -509,11 +511,11 @@
         </sect2>
         
         <sect2 id="objecstate-querying-criteria" revision="1">
-            <title>ƒNƒ‰ƒCƒeƒŠƒA‚̃NƒGƒŠ</title>
+            <title>クライテリアのクエリ</title>
             
-            <para> HQL‚Í”ñí‚É‹­—Í‚Å‚·‚ªAƒNƒGƒŠ•¶Žš—ñ‚ðì‚é‚æ‚è‚àAƒIƒuƒWƒFƒNƒgŽwŒü‚ÌAPI‚ðŽg‚Á‚Ä
-                “®“I‚ɃNƒGƒŠ‚ðì‚é•û‚ðD‚ÞŠJ”­ŽÒ‚à‚¢‚Ü‚·B ‚±‚¤‚¢‚Á‚½ê‡‚Ì‚½‚߂ɁAHibernate‚Í’¼Š´“I‚È
-                 <literal>Criteria</literal> ƒNƒGƒŠAPI‚ð’ñ‹Ÿ‚µ‚Ä‚¢‚Ü‚·B </para>
+            <para> HQLは非常に強力ですが、クエリ文字列を作るよりも、オブジェクト指向のAPIを使って
+                動的にクエリを作る方を好む開発者もいます。 こういった場合のために、Hibernateは直感的な
+                 <literal>Criteria</literal> クエリAPIを提供しています。 </para>
             
             
             <programlisting><![CDATA[Criteria crit = session.createCriteria(Cat.class);
@@ -521,21 +523,21 @@
 crit.setMaxResults(10);
 List cats = crit.list();]]></programlisting>
             
-            <para>  <literal>Criteria</literal> ‚Æ
-                 <literal>Example</literal> API‚̏ڍׂ́A <xref linkend="querycriteria"/>
-                 ‚ɏq‚ׂç‚ê‚Ä‚¢‚Ü‚·B </para>
+            <para>  <literal>Criteria</literal> と
+                 <literal>Example</literal> APIの詳細は、 <xref linkend="querycriteria"/>
+                 に述べられています。 </para>
             
         </sect2>
         
         <sect2 id="objectstate-querying-nativesql" revision="2">
-            <title>ƒlƒCƒeƒBƒuSQL‚̃NƒGƒŠ</title>
+            <title>ネイティブSQLのクエリ</title>
             
             <para> 
-                <literal>createSQLQuery()</literal> ‚ðŽg‚Á‚āASQL‚ŃNƒGƒŠ‚ð•\Œ»‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B
-                ‚»‚µ‚āAHibernate‚ɁAResultSet ‚©‚çƒIƒuƒWƒFƒNƒg‚ւ̃}ƒbƒsƒ“ƒO‚ð‚Ü‚©‚¹‚Ü‚·B
-                 <literal>session.connection()</literal> ‚ðŒÄ‚ׂ΂ǂñ‚È‚Æ‚«‚Å‚àA’¼ÚAJDBC
-                 <literal>Connection</literal> ‚ðŽg—p‚Å‚«‚邱‚Æ‚ðŠo‚¦‚Ä‚¨‚«‚Ü‚µ‚傤B ‚à‚µAHibernate
-                API‚ðŽg‚¤‚Ì‚Å‚ ‚ê‚΁A‰º‹L‚̂悤‚ÉSQL‚Ì•Ê–¼‚ðŠ‡ŒÊ‚Å‚­‚­‚ç‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB </para>
+                <literal>createSQLQuery()</literal> を使って、SQLでクエリを表現することもできます。
+                そして、Hibernateに、ResultSet からオブジェクトへのマッピングをまかせます。
+                 <literal>session.connection()</literal> を呼べばどんなときでも、直接、JDBC
+                 <literal>Connection</literal> を使用できることを覚えておきましょう。 もし、Hibernate
+                APIを使うのであれば、下記のようにSQLの別名を括弧でくくらなければなりません。 </para>
             
             <programlisting><![CDATA[List cats = session.createSQLQuery("SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM<10")
     .addEntity("cat", Cat.class)
@@ -549,27 +551,27 @@
 .list()]]></programlisting>
             
             <para> 
-                SQLƒNƒGƒŠ‚́AHibernateƒNƒGƒŠ‚Æ“¯‚¶‚悤‚ɁA–¼‘O•t‚«‚̃pƒ‰ƒ[ƒ^‚ƈʒuƒpƒ‰ƒ[ƒ^‚ðŽ‚Â‚±‚Æ‚ª‚Å‚«‚Ü‚·B
-                Hibernate‚É‚¨‚¯‚éƒlƒCƒeƒBƒu‚ÈSQLƒNƒGƒŠ‚̏ڍׂɂ‚¢‚ẮA <xref linkend="querysql"/> 
-                ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B </para>
+                SQLクエリは、Hibernateクエリと同じように、名前付きのパラメータと位置パラメータを持つことができます。
+                HibernateにおけるネイティブなSQLクエリの詳細については、 <xref linkend="querysql"/> 
+                を参照してください。 </para>
             
         </sect2>
         
     </sect1>
     
     <sect1 id="objectstate-modifying" revision="1">
-        <title>‰i‘±ƒIƒuƒWƒFƒNƒg‚̏C³</title>
+        <title>永続オブジェクトの修正</title>
         
         <para> 
-             <emphasis>ˆ—’†‚̉i‘±ƒCƒ“ƒXƒ^ƒ“ƒX</emphasis>
-            i—áF <literal>Session</literal> ‚É‚æ‚Á‚āA
-            ƒ[ƒhAƒZ[ƒuAì¬AƒNƒGƒŠ‚³‚ꂽƒIƒuƒWƒFƒNƒgj‚́AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‘€ì‚³‚ê‚Ü‚·B
-            ‚»‚̍ۂɕύX‚³‚ꂽ‰i‘±ó‘Ԃ́A <literal>Session</literal> ‚ª <emphasis>ƒtƒ‰ƒbƒVƒ…</emphasis>
-            ‚³‚ê‚é‚Æ‚«‚ɁA‰i‘±‰»‚³‚ê‚Ü‚·i‚±‚ê‚́A‚±‚̏͂̌㔼‚ŏq‚ׂĂ¢‚Ü‚·jB
-            •ÏX‚ð‰i‘±‰»‚·‚邽‚߂ɁA“ÁŽê‚ȃƒ\ƒbƒhi <literal>update()</literal> 
-            ‚̂悤‚È‚à‚́B‚±‚ê‚́A•Ê‚Ì–Ú“I‚ÅŽg—p‚µ‚Ü‚·j‚ð ŒÄ‚Ô•K—v‚Í‚ ‚è‚Ü‚¹‚ñB ƒIƒuƒWƒFƒNƒg‚̏ó‘Ô‚ðXV‚·‚éˆê”ÔŠÈ’P‚È•û–@‚́AƒIƒuƒWƒFƒNƒg‚ð
-             <literal>load()</literal> ‚µA <literal>Session</literal> 
-            ‚ðƒI[ƒvƒ“‚É‚µ‚Ä‚¢‚éŠÔ‚ɁA’¼Ú‘€ì‚·‚邱‚Æ‚Å‚·B </para>
+             <emphasis>処理中の永続インスタンス</emphasis>
+            (例: <literal>Session</literal> によって、
+            ロード、セーブ、作成、クエリされたオブジェクト)は、アプリケーションに操作されます。
+            その際に変更された永続状態は、 <literal>Session</literal> が <emphasis>フラッシュ</emphasis>
+            されるときに、永続化されます(これは、この章の後半で述べています)。
+            変更を永続化するために、特殊なメソッド( <literal>update()</literal> 
+            のようなもの。これは、別の目的で使用します)を 呼ぶ必要はありません。 オブジェクトの状態を更新する一番簡単な方法は、オブジェクトを
+             <literal>load()</literal> し、 <literal>Session</literal> 
+            をオープンにしている間に、直接操作することです。 </para>
         
         
         <programlisting><![CDATA[DomesticCat cat = (DomesticCat) sess.load( Cat.class, new Long(69) );
@@ -578,40 +580,40 @@
 ]]></programlisting>
         
         <para> 
-            iƒIƒuƒWƒFƒNƒg‚ðƒ[ƒh‚·‚邽‚߂́jSQL‚Ì <literal>SELECT</literal> ‚ƁiXV‚³‚ꂽó‘Ô‚ð‰i‘±‰»‚·‚邽‚߂́j
-            SQL‚Ì <literal>UPDATE</literal> ‚ª“¯‚¶ƒZƒbƒVƒ‡ƒ“‚Å•K—v‚Æ‚È‚é‚̂ŁA‚±‚̃vƒƒOƒ‰ƒ~ƒ“ƒOƒ‚ƒfƒ‹‚́A
-            Œø—¦‚ªˆ«‚­‚È‚éê‡‚ª‚ ‚è‚Ü‚·B
-            ‚»‚Ì‚½‚߁AHibernate‚Í•Ê‚Ì•û–@‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚·B‚»‚ê‚́AƒCƒ“ƒXƒ^ƒ“ƒX‚𕪗£‚·‚éidetachedj•û–@‚Å‚·B </para>
+            (オブジェクトをロードするための)SQLの <literal>SELECT</literal> と(更新された状態を永続化するための)
+            SQLの <literal>UPDATE</literal> が同じセッションで必要となるので、このプログラミングモデルは、
+            効率が悪くなる場合があります。
+            そのため、Hibernateは別の方法を用意しています。それは、インスタンスを分離する(detached)方法です。 </para>
         
         <para> 
-            <emphasis>Hibernate‚́A <literal>UPDATE</literal> •¶‚â 
-            <literal>DELETE</literal> •¶‚𒼐ڎÀs‚·‚éAPI‚ð—pˆÓ‚µ‚Ä‚¢‚Ü‚¹‚ñB
-            Hibernate‚́A <emphasis>ó‘ÔŠÇ—</emphasis> ƒT[ƒrƒX‚Å‚ ‚èAŽg‚í‚ê‚éSQL
-             <emphasis>•¶</emphasis> ‚Ì‚±‚Æ‚ðŠJ”­ŽÒ‚ªl‚¦‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB
-            JDBC‚ÍSQL•¶‚ðŽÀs‚·‚銮àø‚ÈAPI‚Å‚ ‚èA <literal>session.connection()</literal>
-             ‚ðŒÄ‚Ô‚±‚Æ‚Å ‚¢‚‚łàAJDBC <literal>Connection</literal> ‚ðŠJ”­ŽÒ‚͎擾‚Å‚«‚Ü‚·B
-            ‚³‚ç‚ɁA‘å—ʂ̃f[ƒ^‘€ì‚̍l‚¦•û‚́AƒIƒ“ƒ‰ƒCƒ“ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ˆ—Œü‚«ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì
-            ƒIƒuƒWƒFƒNƒg/ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒ}ƒbƒsƒ“ƒO‚ƏՓ˂µ‚Ü‚·B
-            ‚µ‚©‚µAHibernate‚̍¡Œã‚̃o[ƒWƒ‡ƒ“‚ł́A‘å—ʃf[ƒ^‚ðˆ—‚·‚é“Á•Ê‚È‹@”\‚ð’ñ‹Ÿ‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-            ƒoƒbƒ`‘€ì‚É—˜—p‚Å‚«‚é‚¢‚­‚‚©‚̍H•v‚ɂ‚¢‚ẮA <xref linkend="batch"/> ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B </emphasis>
+            <emphasis>Hibernateは、 <literal>UPDATE</literal> 文や 
+            <literal>DELETE</literal> 文を直接実行するAPIを用意していません。
+            Hibernateは、 <emphasis>状態管理</emphasis> サービスであり、使われるSQL
+             <emphasis>文</emphasis> のことを開発者が考える必要はありません。
+            JDBCはSQL文を実行する完璧なAPIであり、 <literal>session.connection()</literal>
+             を呼ぶことで いつでも、JDBC <literal>Connection</literal> を開発者は取得できます。
+            さらに、大量のデータ操作の考え方は、オンライントランザクション処理向きアプリケーションの
+            オブジェクト/リレーショナルマッピングと衝突します。
+            しかし、Hibernateの今後のバージョンでは、大量データを処理する特別な機能を提供するかもしれません。
+            バッチ操作に利用できるいくつかの工夫については、 <xref linkend="batch"/> を参照してください。 </emphasis>
             </para>
         
     </sect1>
     
     <sect1 id="objectstate-detached" revision="2">
-        <title>•ª—£ƒIƒuƒWƒFƒNƒg‚̏C³</title>
+        <title>分離オブジェクトの修正</title>
         
         <para>
-            ‘½‚­‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚Å‚ÍŽŸ‚Ì‚±‚Æ‚ª•K—v‚É‚È‚è‚Ü‚·B
-            ‚»‚ê‚́A‚ ‚éƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ŃIƒuƒWƒFƒNƒg‚𕜌³‚µA‘€ì‚·‚邽‚ß‚É‚»‚ê‚ðUI‘w‚É‘—‚èA
-            ‚»‚ÌŒã‚ɁAV‚µ‚¢ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ŕύX‚ðƒZ[ƒu‚·‚é‚Æ‚¢‚Á‚½‚±‚Æ‚Å‚·B
-            •Às«‚̍‚‚¢ŠÂ‹«‚ŁA‚±‚̃^ƒCƒv‚̃Aƒvƒ[ƒ`‚ðŽg‚¤ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ł́A "ŠúŠÔ‚Ì’·‚¢"
-            ì‹Æ’PˆÊ‚ÌŠu—£«‚ð•ÛØ‚·‚邽‚߂ɁAƒo[ƒWƒ‡ƒ“ƒf[ƒ^‚ª’ʏíŽg‚í‚ê‚Ü‚·B </para>
+            多くのアプリケーションでは次のことが必要になります。
+            それは、あるトランザクションでオブジェクトを復元し、操作するためにそれをUI層に送り、
+            その後に、新しいトランザクションで変更をセーブするといったことです。
+            並行性の高い環境で、このタイプのアプローチを使うアプリケーションでは、 "期間の長い"
+            作業単位の隔離性を保証するために、バージョンデータが通常使われます。 </para>
         
         <para> 
-            Hibernate‚́A <literal>Session.update()</literal> ‚â
-             <literal>Session.merge()</literal> ƒƒ\ƒbƒh‚ð
-            Žg‚Á‚āA•ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚ðÄ’ljÁ‚·‚邱‚ƂŁA‚±‚̃‚ƒfƒ‹‚ɑΉž‚µ‚Ü‚·B </para>
+            Hibernateは、 <literal>Session.update()</literal> や
+             <literal>Session.merge()</literal> メソッドを
+            使って、分離インスタンスを再追加することで、このモデルに対応します。 </para>
         
         
         <programlisting><![CDATA[// in the first session
@@ -627,25 +629,25 @@
 secondSession.update(mate); // update mate]]></programlisting>
         
         <para> 
-             Ž¯•ÊŽq<literal>catId</literal> ‚ðŽ‚Â <literal>Cat</literal> ‚ªAŠù‚É
-             <literal>secondSession</literal> ‚э[ƒh‚³‚ê‚Ä‚¢‚½ê‡‚́AÄ’ljÁ‚µ‚悤‚Æ‚µ‚½‚Æ‚«‚ɁA—áŠO‚ª“Š‚°‚ç‚ê‚Ü‚·B
+             識別子<literal>catId</literal> を持つ <literal>Cat</literal> が、既に
+             <literal>secondSession</literal> でロードされていた場合は、再追加しようとしたときに、例外が投げられます。
             </para>
         
         <para> 
-            “¯‚¶Ž¯•ÊŽq‚ðŽ‚Â‰i‘±ƒCƒ“ƒXƒ^ƒ“ƒX‚ðƒZƒbƒVƒ‡ƒ“‚ªŠù‚É•ÛŽ‚µ‚Ä‚¢‚È‚¢‚±‚Æ‚ð
-            ŠmM‚Å‚«‚é‚È‚ç <literal>update()</literal> ‚ðŽg‚¢‚Ü‚µ‚傤B
-            ‚»‚µ‚āAƒZƒbƒVƒ‡ƒ“‚̏ó‘Ô‚ðl‚¦‚¸‚ɁA‚Ç‚ñ‚ȏꍇ‚Å‚à•ÏX‚ðƒ}[ƒW‚µ‚½‚¢ê‡‚́A <literal>merge()</literal> 
-            ‚ðŽg‚¢‚Ü‚µ‚傤B ‚·‚È‚í‚¿A•ª—£ƒIƒuƒWƒFƒNƒg‚̍ĒljÁ‘€ì‚ªAÅ‰‚ÉŽÀs‚³‚ê‚邱‚Æ‚ðŠmŽÀ‚É‚·‚邽‚߂ɁA ’ʏí‚Í
-             <literal>update()</literal> ‚ªV‚µ‚¢ƒZƒbƒVƒ‡ƒ“‚Ì‚È‚©‚ōŏ‰‚ɌĂ΂ê‚郁ƒ\ƒbƒh‚É‚È‚è‚Ü‚·B </para>
+            同じ識別子を持つ永続インスタンスをセッションが既に保持していないことを
+            確信できるなら <literal>update()</literal> を使いましょう。
+            そして、セッションの状態を考えずに、どんな場合でも変更をマージしたい場合は、 <literal>merge()</literal> 
+            を使いましょう。 すなわち、分離オブジェクトの再追加操作が、最初に実行されることを確実にするために、 通常は
+             <literal>update()</literal> が新しいセッションのなかで最初に呼ばれるメソッドになります。 </para>
         
         <para> 
-            •ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚©‚ç“ž’B‰Â”\‚ȁA•ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÍŒÂ•Ê‚É <literal>update()</literal>
-             ‚·‚ׂ«‚Å‚·B‚»‚ê‚́A‚»‚̏ó‘Ô‚ðXV‚µ‚½‚¢ê‡‚É <emphasis>ŒÀ‚è</emphasis> ‚Ü‚·B
-             <emphasis>‘JˆÚ“I‚ȉi‘±‰»</emphasis> ‚ðŽg‚¦‚΁A‚à‚¿‚ë‚ñŽ©“®‰»‚Å‚«‚Ü‚·B <xref
-                linkend="objectstate-transitive"/> ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B </para>
+            分離インスタンスから到達可能な、分離インスタンスをアプリケーションは個別に <literal>update()</literal>
+             すべきです。それは、その状態を更新したい場合に <emphasis>限り</emphasis> ます。
+             <emphasis>遷移的な永続化</emphasis> を使えば、もちろん自動化できます。 <xref
+                linkend="objectstate-transitive"/> を参照してください。 </para>
         
         <para>
-            ƒƒ\ƒbƒh‚Å‚à‚Ü‚½AV‚µ‚¢ƒZƒbƒVƒ‡ƒ“‚ɃIƒuƒWƒFƒNƒg‚ðÄŠÖ˜A•t‚¯‚Å‚«‚Ü‚·B ‚µ‚©‚µA•ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚Í–³C³‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+            メソッドでもまた、新しいセッションにオブジェクトを再関連付けできます。 しかし、分離インスタンスは無修正でなければなりません。
             </para>
         
         
@@ -657,24 +659,24 @@
 sess.lock(pk, LockMode.UPGRADE);]]></programlisting>
         
         <para>
-            <literal>lock()</literal> ‚́A‚³‚Ü‚´‚Ü‚È
-             <literal>LockMode</literal> ‚Æ‚Æ‚à‚ÉŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
-            Ú×‚́AAPIƒhƒLƒ…ƒƒ“ƒg‚ƃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ˆ—‚̏͂ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
-            Ä’ljÁ‚Ì‚Æ‚«‚É‚¾‚¯A <literal>lock()</literal> ‚ªŽg‚í‚ê‚é‚킯‚Å‚Í‚ ‚è‚Ü‚¹‚ñB </para>
+            <literal>lock()</literal> は、さまざまな
+             <literal>LockMode</literal> とともに使うことができます。
+            詳細は、APIドキュメントとトランザクション処理の章を参照してください。
+            再追加のときにだけ、 <literal>lock()</literal> が使われるわけではありません。 </para>
         
         <para>
-         ŠúŠÔ‚Ì’·‚¢ì‹Æ’PˆÊ‚́A‚»‚Ì‘¼‚̃‚ƒfƒ‹‚́A<xref linked="transactions-optimistic"/> ‚ŏq‚ׂĂ¢‚Ü‚·B </para>
+         期間の長い作業単位の、その他のモデルは、<xref linked="transactions-optimistic"/> で述べています。 </para>
         
     </sect1>
     
     <sect1 id="objectstate-saveorupdate">
-        <title>Ž©“®“I‚ȏó‘ÔŒŸo</title>
+        <title>自動的な状態検出</title>
         
         <para>
-            Hibernate‚̃†[ƒU‚ÍŽŸ‚Ì2‚‚̃P[ƒX‚Ì‚Ç‚¿‚ç‚É‚àŽg‚¦‚é”Ä—p“I‚ȃƒ\ƒbƒh‚ð—v‹‚µ‚Ä‚¢‚Ü‚µ‚½B
-            ‚»‚ê‚́AV‚µ‚¢Ž¯•ÊŽq‚𐶐¬‚µ‚Ĉꎞ“I‚ȃCƒ“ƒXƒ^ƒ“ƒX‚ðƒZ[ƒu‚·‚邱‚ƂƁA
-            ‚»‚ÌŽž“_‚ÌŽ¯•ÊŽq‚ÆŠÖ˜A‚¢‚Ä‚¢‚镪—£ƒCƒ“ƒXƒ^ƒ“ƒX‚ðXV/Ä’ljÁ‚·‚邱‚Æ‚Ì‚Å‚«‚郁ƒ\ƒbƒh‚Å‚·B
-             <literal>saveOrUpdate()</literal> ‚Í‚±‚̂悤‚È‹@”\‚ðŽÀŒ»‚µ‚½ƒƒ\ƒbƒh‚Å‚·B </para>
+            Hibernateのユーザは次の2つのケースのどちらにも使える汎用的なメソッドを要求していました。
+            それは、新しい識別子を生成して一時的なインスタンスをセーブすることと、
+            その時点の識別子と関連づいている分離インスタンスを更新/再追加することのできるメソッドです。
+             <literal>saveOrUpdate()</literal> はこのような機能を実現したメソッドです。 </para>
         
         
         <programlisting><![CDATA[// in the first session
@@ -689,90 +691,90 @@
 secondSession.saveOrUpdate(mate);  // save the new instance (mate has a null id)]]></programlisting>
         
         <para>
-            <literal>saveOrUpdate()</literal> ‚ÌŽg—p•û–@‚ƈӖ¡‚́A
-            V‚µ‚¢ƒ†[ƒU‚É‚Æ‚Á‚謗‚ðµ‚­‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-            ‚Ü‚¸‘æˆê‚ɁA‚ ‚éƒZƒbƒVƒ‡ƒ“‚ÅŽg—p‚µ‚½ƒCƒ“ƒXƒ^ƒ“ƒX‚ð•Ê‚̐V‚µ‚¢ƒZƒbƒVƒ‡ƒ“‚ÅŽg‚¨‚¤‚Æ‚µ‚È‚¢ŒÀ‚èA
-            <literal>update()</literal> ‚â <literal>saveOrUpdate()</literal> ‚â
-             <literal>merge()</literal> ‚ðŽg‚¤•K—v‚Í‚ ‚è‚Ü‚¹‚ñB
-            ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‘S‘Ì‚ð’Ê‚¶‚āA‚±‚ê‚ç‚̃ƒ\ƒbƒh‚ð‘S‚­Žg‚í‚È‚¢‚±‚Æ‚à‚ ‚è‚Ü‚·B </para>
+            <literal>saveOrUpdate()</literal> の使用方法と意味は、
+            新しいユーザにとって混乱を招くかもしれません。
+            まず第一に、あるセッションで使用したインスタンスを別の新しいセッションで使おうとしない限り、
+            <literal>update()</literal> ã‚„ <literal>saveOrUpdate()</literal> ã‚„
+             <literal>merge()</literal> を使う必要はありません。
+            アプリケーション全体を通じて、これらのメソッドを全く使わないこともあります。 </para>
         
         <para>
-            ’ʏíA <literal>update()</literal> ‚â <literal>saveOrUpdate()</literal>
-             ‚ÍŽŸ‚̃VƒiƒŠƒI‚Å Žg‚í‚ê‚Ü‚·B </para>
+            通常、 <literal>update()</literal> や <literal>saveOrUpdate()</literal>
+             は次のシナリオで 使われます。 </para>
         
         <itemizedlist spacing="compact">
             <listitem>
-                <para>ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªÅ‰‚̃ZƒbƒVƒ‡ƒ“‚ŃIƒuƒWƒFƒNƒg‚ðƒ[ƒh‚µ‚Ü‚·B </para>
+                <para>アプリケーションが最初のセッションでオブジェクトをロードします。 </para>
             </listitem>
             <listitem>
-                <para>ƒIƒuƒWƒFƒNƒg‚ªUI‘w‚É‘—‚ç‚ê‚Ü‚·B </para>
+                <para>オブジェクトがUI層に送られます。 </para>
             </listitem>
             <listitem>
-                <para>ƒIƒuƒWƒFƒNƒg‚ɑ΂µ‚ĕύX‚ª‰Á‚¦‚ç‚ê‚Ü‚·B
+                <para>オブジェクトに対して変更が加えられます。
                     </para>
             </listitem>
             <listitem>
-                <para> ƒIƒuƒWƒFƒNƒg‚ªƒrƒWƒlƒXƒƒWƒbƒN‘w‚É‘—‚ç‚ê‚Ü‚·B </para>
+                <para> オブジェクトがビジネスロジック層に送られます。 </para>
             </listitem>
             <listitem>
                 <para> 
-                    ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚́A2”Ԗڂ̃ZƒbƒVƒ‡ƒ“‚Å <literal>update()</literal>
-                     ‚ðŒÄ‚Ô‚±‚ƂŁA‚±‚ê‚ç‚̕ύX‚ð‰i‘±‰»‚µ‚Ü‚·B </para>
+                    アプリケーションは、2番目のセッションで <literal>update()</literal>
+                     を呼ぶことで、これらの変更を永続化します。 </para>
             </listitem>
         </itemizedlist>
         
-        <para> <literal>saveOrUpdate()</literal> ‚͈ȉº‚Ì‚±‚Æ‚ðs‚¢‚Ü‚·B </para>
+        <para> <literal>saveOrUpdate()</literal> は以下のことを行います。 </para>
         
         <itemizedlist spacing="compact">
             <listitem>
-                <para>ƒIƒuƒWƒFƒNƒg‚ª‚±‚̃ZƒbƒVƒ‡ƒ“‚ŁA‚·‚łɉi‘±‰»‚³‚ê‚Ä‚¢‚ê‚΁A‰½‚à‚µ‚Ü‚¹‚ñB </para>
+                <para>オブジェクトがこのセッションで、すでに永続化されていれば、何もしません。 </para>
             </listitem>
             <listitem>
                 <para>
-                    ‚»‚̃ZƒbƒVƒ‡ƒ“‚ÉŠÖ˜A‚¢‚Ä‚¢‚é•Ê‚̃IƒuƒWƒFƒNƒg‚ª“¯‚¶Ž¯•ÊŽq‚ðŽ‚Á‚Ä‚¢‚é‚È‚çA —áŠO‚ð“Š‚°‚Ü‚·B </para>
+                    そのセッションに関連づいている別のオブジェクトが同じ識別子を持っているなら、 例外を投げます。 </para>
             </listitem>
             <listitem>
                 <para>
-                    ƒIƒuƒWƒFƒNƒg‚ÌŽ¯•ÊŽq‚ª’l‚ðŽ‚½‚È‚¢‚È‚ç‚΁A <literal>save()</literal> ‚µ‚Ü‚·B </para>
+                    オブジェクトの識別子が値を持たないならば、 <literal>save()</literal> します。 </para>
             </listitem>
             <listitem>
                 <para>
-                    ƒIƒuƒWƒFƒNƒg‚ÌŽ¯•ÊŽq‚ª’l‚ðŽ‚¿A‚»‚Ì’l‚ªV‚½‚ɃCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽƒIƒuƒWƒFƒNƒg‚Ì‚½‚ß‚Ì’l‚Å‚ ‚éê‡A ‚»‚̃IƒuƒWƒFƒNƒg‚ð
-                     <literal>save()</literal> ‚µ‚Ü‚·B </para>
+                    オブジェクトの識別子が値を持ち、その値が新たにインスタンス化されたオブジェクトのための値である場合、 そのオブジェクトを
+                     <literal>save()</literal> します。 </para>
             </listitem>
             <listitem>
                 <para>
-                    ƒIƒuƒWƒFƒNƒg‚ªi <literal>&lt;version&gt;</literal> ‚â
-                     <literal>&lt;timestamp&gt;</literal> ‚É‚æ‚Á‚āj
-                    ƒo[ƒWƒ‡ƒ“‚¯‚³‚ê‚Ä‚¢‚āAƒo[ƒWƒ‡ƒ“‚̃vƒƒpƒeƒB‚ª’l‚ðŽ‚¿A
-                    ‚»‚Ì’l‚ªV‚µ‚­ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ꂽƒIƒuƒWƒFƒNƒg‚Ì‚½‚ß‚Ì’l‚Å‚ ‚éê‡A ‚»‚̃IƒuƒWƒFƒNƒg‚ð
-                     <literal>save()</literal> ‚µ‚Ü‚·B </para>
+                    オブジェクトが( <literal>&lt;version&gt;</literal> や
+                     <literal>&lt;timestamp&gt;</literal> によって)
+                    バージョンづけされていて、バージョンのプロパティが値を持ち、
+                    その値が新しくインスタンス化されたオブジェクトのための値である場合、 そのオブジェクトを
+                     <literal>save()</literal> します。 </para>
             </listitem>
             <listitem>
                 <para>
-                    ‚»‚¤‚Å‚È‚¢ê‡‚́A‚»‚̃IƒuƒWƒFƒNƒg‚ð <literal>update()</literal> ‚µ‚Ü‚·B </para>
+                    そうでない場合は、そのオブジェクトを <literal>update()</literal> します。 </para>
             </listitem>
         </itemizedlist>
         
         <para>
-            ‚»‚µ‚āA <literal>merge()</literal> ‚͈ȉº‚̂悤‚É‚Æ‚Ä‚àˆÙ‚È‚è‚Ü‚·B </para>
+            そして、 <literal>merge()</literal> は以下のようにとても異なります。 </para>
         
         <itemizedlist spacing="compact">
             <listitem>
                 <para>
-                    “¯‚¶Ž¯•ÊŽq‚ðŽ‚Â‰i‘±‰»ƒCƒ“ƒXƒ^ƒ“ƒX‚ª‚»‚ÌŽž“_‚ŃZƒbƒVƒ‡ƒ“‚ÆŠÖ˜A•t‚¢‚Ä‚¢‚é‚È‚ç‚΁A
-                    ˆø”‚Ŏ󂯎æ‚Á‚½ƒIƒuƒWƒFƒNƒg‚̏ó‘Ô‚ð‰i‘±‰»ƒCƒ“ƒXƒ^ƒ“ƒX‚ɃRƒs[‚µ‚Ü‚·B </para>
+                    同じ識別子を持つ永続化インスタンスがその時点でセッションと関連付いているならば、
+                    引数で受け取ったオブジェクトの状態を永続化インスタンスにコピーします。 </para>
             </listitem>
             <listitem>
                 <para>
-                    ‰i‘±‰»ƒCƒ“ƒXƒ^ƒ“ƒX‚ª‚»‚ÌŽž“_‚ŃZƒbƒVƒ‡ƒ“‚ÉŠÖ˜A•t‚¢‚Ä‚¢‚È‚¢‚È‚çA
-                    ƒf[ƒ^ƒx[ƒX‚©‚ç‚»‚ê‚ðƒ[ƒh‚·‚é‚©A‚ ‚é‚¢‚́AV‚µ‚¢‰i‘±‰»ƒCƒ“ƒXƒ^ƒ“ƒX‚ðì¬‚µ‚Ü‚·B </para>
+                    永続化インスタンスがその時点でセッションに関連付いていないなら、
+                    データベースからそれをロードするか、あるいは、新しい永続化インスタンスを作成します。 </para>
             </listitem>
             <listitem>
-                <para>‰i‘±‰»ƒCƒ“ƒXƒ^ƒ“ƒX‚ª•Ô‚³‚ê‚Ü‚·B </para>
+                <para>永続化インスタンスが返されます。 </para>
             </listitem>
             <listitem>
-                <para> ˆø”‚Æ‚µ‚Ä—^‚¦‚½ƒCƒ“ƒXƒ^ƒ“ƒX‚̓ZƒbƒVƒ‡ƒ“‚ÆŠÖ˜A‚ðŽ‚¿‚Ü‚¹‚ñB ‚»‚ê‚́A•ª—£ó‘Ô‚Ì‚Ü‚Ü‚Å‚·B
+                <para> 引数として与えたインスタンスはセッションと関連を持ちません。 それは、分離状態のままです。
                     </para>
             </listitem>
         </itemizedlist>
@@ -780,28 +782,28 @@
     </sect1>
     
     <sect1 id="objectstate-deleting" revision="1">
-        <title>‰i‘±ƒIƒuƒWƒFƒNƒg‚̍폜</title>
+        <title>永続オブジェクトの削除</title>
         
         <para>
             <literal>Session.delete()</literal> 
-            ‚̓IƒuƒWƒFƒNƒg‚̏ó‘Ô‚ðƒf[ƒ^ƒx[ƒX‚©‚çíœ‚µ‚Ü‚·B ‚à‚¿‚ë‚ñAíœ‚µ‚½ƒIƒuƒWƒFƒNƒg‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª•ÛŽ‚µ‚½‚Ü‚Ü‚Å‚à‚æ‚¢‚Å‚·B
-            ‚»‚Ì‚½‚߁A <literal>delete()</literal> ‚͉i‘±ƒCƒ“ƒXƒ^ƒ“ƒX‚ðˆêŽž“I‚É‚·‚é‚à‚̂ƍl‚¦‚é‚Ì‚ªˆê”Ô‚Å‚·B </para>
+            はオブジェクトの状態をデータベースから削除します。 もちろん、削除したオブジェクトをアプリケーションが保持したままでもよいです。
+            そのため、 <literal>delete()</literal> は永続インスタンスを一時的にするものと考えるのが一番です。 </para>
         
         <programlisting><![CDATA[sess.delete(cat);]]></programlisting>
         
         <para>
-            ŠO•”ƒL[§–ñ‚Ɉᔽ‚·‚郊ƒXƒN‚à‚È‚­AD‚«‚ȏ‡”ԂŃIƒuƒWƒFƒNƒg‚ðíœ‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-            ‚½‚¾‚µAŠÔˆá‚Á‚½‡”ԂŃIƒuƒWƒFƒNƒg‚ðíœ‚·‚é‚ƁAŠO•”ƒL[ƒJƒ‰ƒ€‚Ì <literal>NOT NULL</literal> 
-            §–ñ‚Ɉᔽ‚·‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B —Ⴆ‚΁AeƒIƒuƒWƒFƒNƒg‚ðíœ‚µ‚½‚Æ‚«‚ɁAŽq‹ŸƒIƒuƒWƒFƒNƒg‚ðíœ‚µ–Y‚ꂽê‡‚Å‚·B </para>
+            外部キー制約に違反するリスクもなく、好きな順番でオブジェクトを削除することができます。
+            ただし、間違った順番でオブジェクトを削除すると、外部キーカラムの <literal>NOT NULL</literal> 
+            制約に違反する可能性があります。 例えば、親オブジェクトを削除したときに、子供オブジェクトを削除し忘れた場合です。 </para>
         
     </sect1>
     
     <sect1 id="objectstate-replicating" revision="1">
-        <title>ˆÙ‚È‚é“ñ‚‚̃f[ƒ^ƒXƒgƒAŠÔ‚ł̃IƒuƒWƒFƒNƒg‚̃ŒƒvƒŠƒP[ƒVƒ‡ƒ“</title>
+        <title>異なる二つのデータストア間でのオブジェクトのレプリケーション</title>
         
         <para> 
-            ‰i‘±ƒCƒ“ƒXƒ^ƒ“ƒX‚̃Oƒ‰ƒt‚ð•Ê‚̃f[ƒ^ƒXƒgƒA‚ɉi‘±‰»‚·‚éê‡‚ɁA
-            Ž¯•ÊŽq‚Ì’l‚ðÄ¶¬‚¹‚¸‚É‚·‚Þ‚Æ•Ö—˜‚ȏꍇ‚ª‚ ‚è‚Ü‚·B </para>
+            永続インスタンスのグラフを別のデータストアに永続化する場合に、
+            識別子の値を再生成せずにすむと便利な場合があります。 </para>
         
         
         <programlisting><![CDATA[//retrieve a cat from one database
@@ -819,110 +821,110 @@
 session2.close();]]></programlisting>
         
         <para>
-            ƒŒƒvƒŠƒP[ƒVƒ‡ƒ“æ‚̃f[ƒ^ƒx[ƒX‚ɍs‚ªŠù‚É‚ ‚éê‡A <literal>replicate()</literal>
-             ‚ªÕ“Ë‚ð‚ǂ̂悤‚Ɉµ‚¤‚©‚ð <literal>ReplicationMode</literal> ‚ÅŽw’肵‚Ü‚·B </para>
+            レプリケーション先のデータベースに行が既にある場合、 <literal>replicate()</literal>
+             が衝突をどのように扱うかを <literal>ReplicationMode</literal> で指定します。 </para>
         
         <itemizedlist spacing="compact">
             <listitem>
                 <para>
                     <literal>ReplicationMode.IGNORE</literal> -
-                    “¯‚¶Ž¯•ÊŽq‚ðŽ‚Âs‚ªƒf[ƒ^ƒx[ƒX‚É‘¶Ý‚·‚é‚È‚çA ‚»‚̃IƒuƒWƒFƒNƒg‚𖳎‹‚µ‚Ü‚·B </para>
+                    同じ識別子を持つ行がデータベースに存在するなら、 そのオブジェクトを無視します。 </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>ReplicationMode.OVERWRITE</literal> - “¯‚¶Ž¯•ÊŽq‚ðŽ‚ÂŠù‘¶‚̍s‚ð
-                    ‚·‚ׂď㏑‚«‚µ‚Ü‚·B </para>
+                    <literal>ReplicationMode.OVERWRITE</literal> - 同じ識別子を持つ既存の行を
+                    すべて上書きします。 </para>
             </listitem>
             <listitem>
                 <para>
                     <literal>ReplicationMode.EXCEPTION</literal> -
-                    “¯‚¶Ž¯•ÊŽq‚ðŽ‚Âs‚ªƒf[ƒ^ƒx[ƒX‚É‘¶Ý‚·‚é‚È‚çA —áŠO‚ð“Š‚°‚Ü‚·B </para>
+                    同じ識別子を持つ行がデータベースに存在するなら、 例外を投げます。 </para>
             </listitem>
             <listitem>
                 <para> 
                     <literal>ReplicationMode.LATEST_VERSION</literal> -
-                    s‚É•Û‘¶‚³‚ê‚Ä‚¢‚éƒo[ƒWƒ‡ƒ“”ԍ†‚ªA ˆø”‚̃IƒuƒWƒFƒNƒg‚̃o[ƒWƒ‡ƒ“”ԍ†‚æ‚èŒÃ‚¢‚È‚ç‚΁A‚»‚̍s‚ðã‘‚«‚µ‚Ü‚·B
+                    行に保存されているバージョン番号が、 引数のオブジェクトのバージョン番号より古いならば、その行を上書きします。
                     </para>
             </listitem>
         </itemizedlist>
         
         <para>
-            ŽŸ‚̂悤‚ȃP[ƒX‚ŁA‚±‚Ì‹@”\‚ðŽg—p‚µ‚Ü‚·B ˆÙ‚È‚éƒf[ƒ^ƒx[ƒXƒCƒ“ƒXƒ^ƒ“ƒX‚É“ü‚ê‚ç‚ꂽƒf[ƒ^‚Ì“¯ŠúA
-            »•iXVŽž‚É‚¨‚¯‚éƒVƒXƒeƒ€Ý’èî•ñ‚̍XVA”ñACIDƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì‚È‚©‚ʼnÁ‚¦‚ç‚ꂽ•ÏX‚̃[ƒ‹ƒoƒbƒN‚È‚Ç‚Å‚·B </para>
+            次のようなケースで、この機能を使用します。 異なるデータベースインスタンスに入れられたデータの同期、
+            製品更新時におけるシステム設定情報の更新、非ACIDトランザクションのなかで加えられた変更のロールバックなどです。 </para>
         
     </sect1>
     
     <sect1 id="objectstate-flushing">
-        <title>ƒZƒbƒVƒ‡ƒ“‚̃tƒ‰ƒbƒVƒ…</title>
+        <title>セッションのフラッシュ</title>
         
         <para>
-            JDBCƒRƒlƒNƒVƒ‡ƒ“‚̏ó‘Ԃƃƒ‚ƒŠã‚̃IƒuƒWƒFƒNƒg‚̏ó‘Ԃ𓯊ú‚³‚¹‚邽‚ß‚É•K—v‚È
-            SQL•¶‚ð <literal>Session</literal> ‚ªŽÀs‚·‚邱‚Æ‚ª‚Æ‚«‚Ç‚«‚ ‚è‚Ü‚·B ‚±‚̏ˆ—
-             <emphasis>flush</emphasis> ‚́AƒfƒtƒHƒ‹ƒg‚Å‚ÍŽŸ‚Ì‚Æ‚«‚É‹N‚±‚è‚Ü‚·B </para>
+            JDBCコネクションの状態とメモリ上のオブジェクトの状態を同期させるために必要な
+            SQL文を <literal>Session</literal> が実行することがときどきあります。 この処理
+             <emphasis>flush</emphasis> は、デフォルトでは次のときに起こります。 </para>
         
         <itemizedlist spacing="compact">
             <listitem>
-                <para> ƒNƒGƒŠ‚ðŽÀs‚·‚é‘O </para>
+                <para> クエリを実行する前 </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>org.hibernate.Transaction.commit()</literal> ‚ðŽÀs‚µ‚½‚Æ‚«
+                    <literal>org.hibernate.Transaction.commit()</literal> を実行したとき
                     </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>Session.flush()</literal> ‚ðŽÀs‚µ‚½‚Æ‚« </para>
+                    <literal>Session.flush()</literal> を実行したとき </para>
             </listitem>
         </itemizedlist>
         
-        <para>  SQL•¶‚͈ȉº‚̏‡”Ô‚Å”­s‚³‚ê‚Ü‚·B
+        <para>  SQL文は以下の順番で発行されます。
             </para>
         
         <orderedlist spacing="compact">
             <listitem>
                 <para>
-                    ‚·‚ׂẴGƒ“ƒeƒBƒeƒB‚Ì‘}“üB‚±‚ê‚́A <literal>Session.save()</literal> ‚ðŽg‚Á‚ăZ[ƒu‚µ‚½
-                    ƒIƒuƒWƒFƒNƒg‚̏‡‚ÉŽÀs‚µ‚Ä‚¢‚«‚Ü‚·B </para>
+                    すべてのエンティティの挿入。これは、 <literal>Session.save()</literal> を使ってセーブした
+                    オブジェクトの順に実行していきます。 </para>
             </listitem>
             <listitem>
-                <para> ‚·‚ׂẴGƒ“ƒeƒBƒeƒB‚̍XV </para>
+                <para> すべてのエンティティの更新 </para>
             </listitem>
             <listitem>
-                <para> ‚·‚ׂẴRƒŒƒNƒVƒ‡ƒ“‚̍폜 </para>
+                <para> すべてのコレクションの削除 </para>
             </listitem>
             <listitem>
                 <para>
-                    ‚·‚ׂẴRƒŒƒNƒVƒ‡ƒ“‚Ì—v‘f‚ɑ΂·‚éíœAXVA‘}“ü </para>
+                    すべてのコレクションの要素に対する削除、更新、挿入 </para>
             </listitem>
             <listitem>
-                <para>‚·‚ׂẴRƒŒƒNƒVƒ‡ƒ“‚Ì‘}“ü </para>
+                <para>すべてのコレクションの挿入 </para>
             </listitem>
             <listitem>
                 <para>
-                    ‚·‚ׂẴGƒ“ƒeƒBƒeƒB‚̍폜B‚±‚ê‚́A<literal>Session.delete()</literal> ‚ðŽg‚Á‚Ä
-                    íœ‚µ‚½ƒIƒuƒWƒFƒNƒg‚̏‡‚ÉŽÀs‚µ‚Ä‚¢‚«‚Ü‚·B </para>
+                    すべてのエンティティの削除。これは、<literal>Session.delete()</literal> を使って
+                    削除したオブジェクトの順に実行していきます。 </para>
             </listitem>
         </orderedlist>
         
         <para>
-            (‚P‚—áŠO‚ª‚ ‚è‚Ü‚·B <literal>native</literal> ID ¶¬‚ðŽg‚Á‚½ƒIƒuƒWƒFƒNƒg‚́A
-            ‚»‚ê‚炪ƒZ[ƒu‚³‚ꂽ‚Æ‚«‚É‘}“ü‚³‚ê‚Ü‚·Bj </para>
+            (1つ例外があります。 <literal>native</literal> ID 生成を使ったオブジェクトは、
+            それらがセーブされたときに挿入されます。) </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>
+             明示的に
+             <literal>flush()</literal> するときを除いて、 <emphasis>いつ</emphasis>
+            <literal>Session</literal> がJDBCをコールするのかについて
+             絶対的な保証はありません。ただし、それらが実行される <emphasis>順番</emphasis> だけは 保証されます。
+            また、Hibernate は、 <literal>Query.list(..)</literal> が古いデータや間違ったデータ返さないことを
+            保証しています。 </para>
         
         <para>
-            ƒtƒ‰ƒbƒVƒ…‚ª•p”É‚É‹N‚±‚ç‚È‚¢‚悤‚ɃfƒtƒHƒ‹ƒg‚̐U‚é•‘‚¢‚ð•Ï‚¦‚邱‚Æ‚ª‚Å‚«‚Ü‚·B <literal>FlushMode</literal>
-            ƒNƒ‰ƒX‚Í3‚‚̈قȂ郂[ƒh‚ð’è‹`‚µ‚Ü‚·B ‚»‚ê‚́AƒRƒ~ƒbƒgŽž‚É‚¾‚¯ƒtƒ‰ƒbƒVƒ…‚·‚郂[ƒh iHibernate‚Ì
-             <literal>Transaction</literal> API‚ªŽg‚í‚ê‚éê‡‚¾‚¯‚Å‚·jA
-            à–¾‚Ì‚ ‚Á‚½ˆ—‡‚ÉŠî‚¢‚ÄŽ©“®‚Ńtƒ‰ƒbƒVƒ…‚·‚郂[ƒhA <literal>flush()</literal> 
-            ‚ª–¾Ž¦“I‚ɌĂ΂ê‚È‚¢ŒÀ‚èƒtƒ‰ƒbƒVƒ…‚µ‚È‚¢ƒ‚[ƒh‚Ì‚R‚‚ł·B ÅŒã‚̃‚[ƒh‚́Aì‹Æ’PˆÊ‚ª’·ŠúŠÔ‚É‹y‚ԏꍇ‚É–ð‚É—§‚¿‚Ü‚· ( <xref
-                linkend="transactions-optimistic-longsession"/> ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢)B
+            フラッシュが頻繁に起こらないようにデフォルトの振る舞いを変えることができます。 <literal>FlushMode</literal>
+            クラスは3つの異なるモードを定義します。 それは、コミット時にだけフラッシュするモード (Hibernateの
+             <literal>Transaction</literal> APIが使われる場合だけです)、
+            説明のあった処理順に基づいて自動でフラッシュするモード、 <literal>flush()</literal> 
+            が明示的に呼ばれない限りフラッシュしないモードの3つです。 最後のモードは、作業単位が長期間に及ぶ場合に役に立ちます ( <xref
+                linkend="transactions-optimistic-longsession"/> を参照してください)。
             </para>
         
         
@@ -941,162 +943,162 @@
 tx.commit(); // flush occurs
 sess.close();]]></programlisting>
         
-        <para>ƒtƒ‰ƒbƒVƒ…‚Ì‚Æ‚«A—áŠO‚ª”­¶‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-            i—Ⴆ‚΁ADML‘€ì‚ª§–ñ‚ðˆá”½‚·‚é‚悤‚ȏꍇ‚Å‚·Bj
-            —áŠOˆ—‚ð—‰ð‚·‚é‚½‚߂ɂ́AHibernate‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̐U‚é•‘‚¢‚ð—‰ð‚·‚é•K—v‚ª‚ ‚邽‚߁A <xref
-                linkend="transactions"/> ‚Åà–¾‚µ‚Ü‚·B </para>
+        <para>フラッシュのとき、例外が発生するかもしれません。
+            (例えば、DML操作が制約を違反するような場合です。)
+            例外処理を理解するためには、Hibernateのトランザクションの振る舞いを理解する必要があるため、 <xref
+                linkend="transactions"/> で説明します。 </para>
         
     </sect1>
     
     <sect1 id="objectstate-transitive" revision="1">
-        <title>˜A½“I‚ȉi‘±‰»</title>
+        <title>連鎖的な永続化</title>
         
         <para>
-            ŒÂX‚̃IƒuƒWƒFƒNƒg‚ðƒZ[ƒu‚µ‚½‚èAíœ‚µ‚½‚èAÄ’ljÁ‚µ‚½‚è‚·‚邱‚Æ‚Í
-            ‚©‚È‚è–Ê“|‚Å‚·B“Á‚ɁAŠÖ˜A‚·‚éƒIƒuƒWƒFƒNƒg‚ðˆµ‚¤‚悤‚ȏꍇ‚ɂ͍ۗ§‚¿‚Ü‚·B ‚æ‚­‚ ‚é‚̂́AeŽqŠÖŒW‚ðˆµ‚¤ƒP[ƒX‚Å‚·B
-            ˆÈ‰º‚Ì—á‚ðl‚¦‚Ä‚Ý‚Ü‚µ‚傤B </para>
+            個々のオブジェクトをセーブしたり、削除したり、再追加したりすることは
+            かなり面倒です。特に、関連するオブジェクトを扱うような場合には際立ちます。 よくあるのは、親子関係を扱うケースです。
+            以下の例を考えてみましょう。 </para>
         
         <para>
-            ‚à‚µAeŽqŠÖŒW‚ÌŽq‚ª’lŒ^‚È‚çi—Ⴆ‚΁AZŠ‚╶Žš—ñ‚̃RƒŒƒNƒVƒ‡ƒ“jA
-            ‚»‚ê‚ç‚̃‰ƒCƒtƒTƒCƒNƒ‹‚͐e‚Ɉˑ¶‚µ‚Ä‚¨‚èA•Ö—˜‚ȏó‘ԕω»‚Ì"ƒJƒXƒP[ƒh"‚ðŽg‚¤‚½‚߂ɁA ’ljÁ‚̍ì‹Æ‚Í•K—v‚Í‚ ‚è‚Ü‚¹‚ñB
-            e‚ªƒZ[ƒu‚³‚ꂽ‚Æ‚«A’lŒ^‚ÌŽqƒIƒuƒWƒFƒNƒg‚à“¯‚¶‚悤‚ɃZ[ƒu‚³‚ê‚Ü‚·‚µA e‚ªíœ‚³‚ꂽ‚Æ‚«‚́AŽq‚àíœ‚³‚ê‚Ü‚·B‚»‚Ì‘¼‚Ì‘€ì‚à“¯‚¶‚Å‚·B
-            ƒRƒŒƒNƒVƒ‡ƒ“‚©‚ç1‚‚̎q‚ðíœ‚·‚é‚悤‚È‘€ì‚Å‚à‚¤‚Ü‚­‚¢‚«‚Ü‚·B ‚·‚È‚í‚¿AHibernate‚Í‚±‚̍폜‘€ì‚ðŒŸo‚·‚é‚ƁA
-            ’lŒ^‚̃IƒuƒWƒFƒNƒg‚ÍŽQÆ‚ð‹¤—L‚Å‚«‚È‚¢‚̂ŁAƒf[ƒ^ƒx[ƒX‚©‚ç‚»‚ÌŽq‹Ÿ‚ðíœ‚µ‚Ü‚·B </para>
+            もし、親子関係の子が値型なら(例えば、住所や文字列のコレクション)、
+            それらのライフサイクルは親に依存しており、便利な状態変化の"カスケード"を使うために、 追加の作業は必要はありません。
+            親がセーブされたとき、値型の子オブジェクトも同じようにセーブされますし、 親が削除されたときは、子も削除されます。その他の操作も同じです。
+            コレクションから1つの子を削除するような操作でもうまくいきます。 すなわち、Hibernateはこの削除操作を検出すると、
+            値型のオブジェクトは参照を共有できないので、データベースからその子供を削除します。 </para>
         
-        <para>‚±‚±‚ŁAe‚ÆŽq‚ª’lŒ^‚Å‚È‚­ƒGƒ“ƒeƒBƒeƒB‚Å‚ ‚é‚Æ‚µ‚Ä“¯‚¶ƒVƒiƒŠƒI‚ðl‚¦‚Ä‚Ý‚Ü‚µ‚傤B
-            i—Ⴆ‚΁AƒJƒeƒSƒŠ[‚Æ•i–Ú‚ÌŠÖŒW‚âe‚ÆŽq‚Ì”L‚ÌŠÖŒW‚Å‚·Bj ƒGƒ“ƒeƒBƒeƒB‚́A‚»‚ꎩg‚ªƒ‰ƒCƒtƒTƒCƒNƒ‹‚ðŽ‚¿AŽQÆ‚Ì‹¤—L‚ðƒTƒ|[ƒg‚µ‚Ü‚·B
-            i‚»‚Ì‚½‚߁AƒRƒŒƒNƒVƒ‡ƒ“‚©‚çƒGƒ“ƒeƒBƒeƒB‚ðíœ‚·‚邱‚Ƃ́A ƒGƒ“ƒeƒBƒeƒBŽ©g‚̍폜‚ðˆÓ–¡‚µ‚Ü‚¹‚ñBj
-            ‚Ü‚½AƒGƒ“ƒeƒBƒeƒB‚́AƒfƒtƒHƒ‹ƒg‚ł́AŠÖ˜A‚·‚鑼‚̃Gƒ“ƒeƒBƒeƒB‚Ö ó‘Ô‚ðƒJƒXƒP[ƒh‚·‚邱‚Æ‚Í‚ ‚è‚Ü‚¹‚ñB Hibernate‚Í
-             <emphasis>“ž’B‰Â”\«‚É‚æ‚é‰i‘±‰»</emphasis> ‚ðƒfƒtƒHƒ‹ƒg‚Å‚ÍŽÀs‚µ‚Ü‚¹‚ñB </para>
+        <para>ここで、親と子が値型でなくエンティティであるとして同じシナリオを考えてみましょう。
+            (例えば、カテゴリーと品目の関係や親と子の猫の関係です。) エンティティは、それ自身がライフサイクルを持ち、参照の共有をサポートします。
+            (そのため、コレクションからエンティティを削除することは、 エンティティ自身の削除を意味しません。)
+            また、エンティティは、デフォルトでは、関連する他のエンティティへ 状態をカスケードすることはありません。 Hibernateは
+             <emphasis>到達可能性による永続化</emphasis> をデフォルトでは実行しません。 </para>
         
         <para>
-            Hibernate‚ÌSession‚ÌŠî–{‘€ìi <literal>persist(), merge(), saveOrUpdate(),
-            delete(), lock(), refresh(), evict(), replicate()</literal> ‚ªŠÜ‚Ü‚ê‚Ü‚·j‚ɑ΂µ‚āA
-            ‚»‚ꂼ‚ê‚ɑΉž‚·‚éƒJƒXƒP[ƒhƒXƒ^ƒCƒ‹‚ª‚ ‚è‚Ü‚·B ‚»‚ꂼ‚ê‚̃JƒXƒP[ƒhƒXƒ^ƒCƒ‹‚ɂ́A <literal>create, merge,
+            HibernateのSessionの基本操作( <literal>persist(), merge(), saveOrUpdate(),
+            delete(), lock(), refresh(), evict(), replicate()</literal> が含まれます)に対して、
+            それぞれに対応するカスケードスタイルがあります。 それぞれのカスケードスタイルには、 <literal>create, merge,
             save-update, delete, lock, refresh, evict, replicate</literal> 
-            ‚Æ‚¢‚¤–¼‘O‚ª‚‚¢‚Ä‚¢‚Ü‚·B ‚à‚µAŠÖ˜A‚ɉˆ‚Á‚ăJƒXƒP[ƒh‚³‚¹‚½‚¢‘€ì‚ª‚ ‚é‚È‚çAƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚É‚»‚¤Žw’肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-            —Ⴆ‚΁AˆÈ‰º‚̂悤‚É‚µ‚Ü‚·B </para>
+            という名前がついています。 もし、関連に沿ってカスケードさせたい操作があるなら、マッピングファイルにそう指定しなければなりません。
+            例えば、以下のようにします。 </para>
         
         
         <programlisting><![CDATA[<one-to-one name="person" cascade="persist"/>]]></programlisting>
         
-        <para> ƒJƒXƒP[ƒhƒXƒ^ƒCƒ‹‚́A‘g‚ݍ‡‚킹‚邱‚Æ‚ª‚Å‚«‚Ü‚·B </para>
+        <para> カスケードスタイルは、組み合わせることができます。 </para>
         
         
         <programlisting><![CDATA[<one-to-one name="person" cascade="persist,delete,lock"/>]]></programlisting>
         
         <para>
-            <emphasis>‚·‚ׂĂÌ</emphasis>
-            ‘€ì‚ðŠÖ˜A‚ɉˆ‚Á‚ăJƒXƒP[ƒh‚·‚é‚悤Žw’è‚·‚é‚Æ‚«‚́A <literal>cascade="all"</literal> ‚ðŽg‚¢‚Ü‚·B
-            ƒfƒtƒHƒ‹ƒg‚Ì <literal>cascade="none"</literal> ‚́A‚Ç‚Ì‘€ì‚àƒJƒXƒP[ƒh‚µ‚È‚¢‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B
+            <emphasis>すべての</emphasis>
+            操作を関連に沿ってカスケードするよう指定するときは、 <literal>cascade="all"</literal> を使います。
+            デフォルトの <literal>cascade="none"</literal> は、どの操作もカスケードしないことを意味します。
             </para>
         
         <para>
-             “ÁŽê‚ȃJƒXƒP[ƒhƒXƒ^ƒCƒ‹
-             <literal>delete-orphan</literal> ‚́Aˆê‘Α½ŠÖ˜A‚É‚¾‚¯ “K—p‚Å‚«‚Ü‚·B
-            ‚±‚ê‚́AŠÖ˜A‚©‚çíœ‚³‚ꂽŽq‹Ÿ‚̃IƒuƒWƒFƒNƒg‚ɑ΂µ‚āA <literal>delete()</literal> 
-            ‘€ì‚ª“K—p‚³‚ê‚邱‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B </para>
+             特殊なカスケードスタイル
+             <literal>delete-orphan</literal> は、一対多関連にだけ 適用できます。
+            これは、関連から削除された子供のオブジェクトに対して、 <literal>delete()</literal> 
+            操作が適用されることを意味します。 </para>
         
-        <para>‚¨‚·‚·‚߁F </para>
+        <para>おすすめ: </para>
         
         <itemizedlist spacing="compact">
             <listitem>
                 <para> 
-                    •’ʁA <literal>&lt;many-to-one&gt;</literal> ‚â
-                     <literal>&lt;many-to-many&gt;</literal> ŠÖ˜A‚ɑ΂µ‚ẮA
-                    ƒJƒXƒP[ƒh‚ðÝ’è‚·‚éˆÓ–¡‚Í‚ ‚è‚Ü‚¹‚ñB <literal>&lt;one-to-one&gt;</literal> ‚Æ
-                     <literal>&lt;one-to-many&gt;</literal> ŠÖ˜A‚ɑ΂µ‚ẮA
-                    ƒJƒXƒP[ƒh‚ª–ð‚É—§‚‚±‚Æ‚ª‚ ‚è‚Ü‚·B </para>
+                    普通、 <literal>&lt;many-to-one&gt;</literal> や
+                     <literal>&lt;many-to-many&gt;</literal> 関連に対しては、
+                    カスケードを設定する意味はありません。 <literal>&lt;one-to-one&gt;</literal> と
+                     <literal>&lt;one-to-many&gt;</literal> 関連に対しては、
+                    カスケードが役に立つことがあります。 </para>
             </listitem>
             <listitem>
                 <para> 
-                    Žq‹ŸƒIƒuƒWƒFƒNƒg‚ÌŽõ–½‚ªeƒIƒuƒWƒFƒNƒg‚ÌŽõ–½‚ɐ§ŒÀ‚ðŽó‚¯‚é‚È‚ç‚΁A
-                     <literal>cascade="all,delete-orphan"</literal> ‚ðŽw’肵A Žq‹ŸƒIƒuƒWƒFƒNƒg‚ð
-                     <emphasis>ƒ‰ƒCƒtƒTƒCƒNƒ‹ƒIƒuƒWƒFƒNƒg</emphasis> ‚É‚µ‚Ü‚·B </para>
+                    子供オブジェクトの寿命が親オブジェクトの寿命に制限を受けるならば、
+                     <literal>cascade="all,delete-orphan"</literal> を指定し、 子供オブジェクトを
+                     <emphasis>ライフサイクルオブジェクト</emphasis> にします。 </para>
             </listitem>
             <listitem>
                 <para> .
-                    ‚»‚êˆÈŠO‚̏ꍇ‚́AƒJƒXƒP[ƒh‚Í‚Ù‚Æ‚ñ‚Ç•K—v‚È‚¢‚Å‚µ‚傤B
-                    ‚µ‚©‚µA“¯‚¶ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì‚È‚©‚Őe‚ÆŽq‚ªˆê‚É“®ì‚·‚邱‚Æ‚ª‘½‚¢‚ÆŽv‚¢A
-                    ‚¢‚­‚ç‚©‚̃R[ƒh‚ð‘‚­ŽèŠÔ‚ðÈ‚«‚½‚¢‚Ì‚Å‚ ‚ê‚΁A
+                    それ以外の場合は、カスケードはほとんど必要ないでしょう。
+                    しかし、同じトランザクションのなかで親と子が一緒に動作することが多いと思い、
+                    いくらかのコードを書く手間を省きたいのであれば、
                      <literal>cascade="persist,merge,save-update"</literal>
-                     ‚ðŽg‚¤‚±‚Æ‚ðl‚¦‚Ü‚µ‚傤B </para>
+                     を使うことを考えましょう。 </para>
             </listitem>
         </itemizedlist>
         
-        <para> <literal>cascade="all"</literal> ‚Ń}ƒbƒsƒ“ƒO‚µ‚½ŠÖ˜Ai’P’lŠÖ˜A‚âƒRƒŒƒNƒVƒ‡ƒ“j‚́A
-            <emphasis>eŽq</emphasis> ƒXƒ^ƒCƒ‹‚ÌŠÖ˜A‚ƃ}[ƒN‚³‚ê‚Ü‚·B
-            ‚»‚ê‚́Ae‚̃Z[ƒu/XV/íœ‚ªAŽq‚̃Z[ƒu/XV/íœ‚ðˆø‚«‹N‚±‚·ŠÖŒW‚Ì‚±‚Æ‚Å‚·B </para>
+        <para> <literal>cascade="all"</literal> でマッピングした関連(単値関連やコレクション)は、
+            <emphasis>親子</emphasis> スタイルの関連とマークされます。
+            それは、親のセーブ/更新/削除が、子のセーブ/更新/削除を引き起こす関係のことです。 </para>
             
         <para>
-            ‚³‚ç‚ɁA‰i‘±‰»‚³‚ꂽe‚ªŽq‚ð’P‚ÉŽQÆ‚µ‚Ä‚¢‚邾‚¯‚ŁAŽq‚̃Z[ƒu/XV‚ðˆø‚«‹N‚±‚µ‚Ü‚·B
-            ‚µ‚©‚µA‚±‚̃ƒ^ƒtƒ@[‚Í•sŠ®‘S‚Å‚·Be‚©‚çŽQÆ‚³‚ê‚È‚­‚È‚Á‚½Žq‚́AŽ©“®“I‚ɍ폜 <emphasis>‚³‚ê‚Ü‚¹‚ñ</emphasis> B
-            ‚½‚¾‚µA <literal>cascade="delete-orphan"</literal> ‚Ń}ƒbƒsƒ“ƒO‚³‚ꂽ
-            <literal>&lt;one-to-many&gt;</literal> ŠÖ˜A‚𠏜‚¢‚Ä‚Å‚·B
-            eŽqŠÖŒW‚̃JƒXƒP[ƒh‘€ì‚̐³Šm‚ȈӖ¡‚͈ȉº‚̂悤‚É‚È‚è‚Ü‚·B </para>
+            さらに、永続化された親が子を単に参照しているだけで、子のセーブ/更新を引き起こします。
+            しかし、このメタファーは不完全です。親から参照されなくなった子は、自動的に削除 <emphasis>されません</emphasis> 。
+            ただし、 <literal>cascade="delete-orphan"</literal> でマッピングされた
+            <literal>&lt;one-to-many&gt;</literal> 関連を 除いてです。
+            親子関係のカスケード操作の正確な意味は以下のようになります。 </para>
         
         <itemizedlist spacing="compact">
             <listitem>
                 <para>
-                     e‚ª
-                     <literal>persist()</literal> ‚É“n‚³‚ꂽ‚È‚ç‚΁A ‚·‚ׂĂ̎q‚Í
-                     <literal>persist()</literal> ‚É“n‚³‚ê‚Ü‚·B </para>
+                     親が
+                     <literal>persist()</literal> に渡されたならば、 すべての子は
+                     <literal>persist()</literal> に渡されます。 </para>
             </listitem>
             <listitem>
                 <para> 
-                     <literal>merge()</literal> ‚É“n‚³‚ꂽ‚È‚ç‚΁A ‚·‚ׂĂ̎q‚Í
-                     <literal>merge()</literal> ‚É“n‚³‚ê‚Ü‚·B </para>
+                     <literal>merge()</literal> に渡されたならば、 すべての子は
+                     <literal>merge()</literal> に渡されます。 </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>
+                     親が <literal>save()</literal>
+                     、 <literal>update()</literal>
+                     、 <literal>saveOrUpdate()</literal> に渡されたならば、すべての子は
+                     <literal>saveOrUpdate()</literal> に渡されます。 </para>
             </listitem>
             <listitem>
                 <para>
-                    ˆêŽž“I‚Ü‚½‚Í•ª—£ó‘Ô‚ÌŽq‚ªA‰i‘±‰»‚³‚ꂽe‚ÉŽQÆ‚³‚ꂽ‚È‚ç‚΁A
-                     <literal>saveOrUpdate()</literal> ‚É“n‚³‚ê‚Ü‚·B </para>
+                    一時的または分離状態の子が、永続化された親に参照されたならば、
+                     <literal>saveOrUpdate()</literal> に渡されます。 </para>
             </listitem>
             <listitem>
                 <para>
-                    e‚ªíœ‚³‚ꂽ‚È‚ç‚΁A‚·‚ׂĂ̎q‚́A <literal>delete()</literal> ‚É“n‚³‚ê‚Ü‚·B </para>
+                    親が削除されたならば、すべての子は、 <literal>delete()</literal> に渡されます。 </para>
             </listitem>
             <listitem>
                 <para>
-                    Žq‚ª‰i‘±‰»‚³‚ꂽe‚©‚çŽQÆ‚³‚ê‚È‚­‚È‚Á‚½‚Æ‚«‚́A <emphasis>“Á‚ɉ½‚à‹N‚±‚è‚Ü‚¹‚ñ</emphasis> B
-                    ‚æ‚Á‚āAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª•K—v‚Å‚ ‚ê‚΁A–¾Ž¦“I‚ɍ폜‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
-                    ‚½‚¾‚µA <literal>cascade="delete-orphan"</literal> ‚̏ꍇ‚ðœ‚«‚Ü‚·B
-                    ‚±‚̏ꍇAue‚Ì‚È‚¢vŽq‚͍폜‚³‚ê‚Ü‚·B </para>
+                    子が永続化された親から参照されなくなったときは、 <emphasis>特に何も起こりません</emphasis> 。
+                    よって、アプリケーションが必要であれば、明示的に削除する必要があります。
+                    ただし、 <literal>cascade="delete-orphan"</literal> の場合を除きます。
+                    この場合、「親のない」子は削除されます。 </para>
             </listitem>
         </itemizedlist>
         <para>
-            ÅŒã‚ɁA‘€ì‚̃JƒXƒP[ƒh‚ªƒIƒuƒWƒFƒNƒgƒOƒ‰ƒt‚É“K—p‚³‚ê‚é‚̂́A <emphasis>ƒR[ƒ‹‚µ‚½Žž</emphasis>
-             ‚ ‚é‚¢‚́A <emphasis>flush‚µ‚½Žž</emphasis> ‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-            ‚·‚ׂĂ̑€ì‚́A‚»‚Ì‘€ì‚ªŽÀs‚³‚ꂽ‚Æ‚«‚ɁA“ž’B‰Â”\‚ÈŠÖ˜A‚·‚éƒGƒ“ƒeƒBƒeƒB‚ɑ΂µ‚Ä 
-            ƒJƒXƒP[ƒh‚ª‰Â”\‚È‚çƒJƒXƒP[ƒh‚µ‚Ü‚·B
-            ‚µ‚©‚µA <literal>save-upate</literal> ‚Æ
-             <literal>delete-orphan</literal> ‚́A <literal>Session</literal> 
-            ‚ªflush‚µ‚Ä‚¢‚éŠÔ‚ɁA ‚·‚ׂĂ̓ž’B‰Â”\‚ÈŠÖ˜A‚·‚éƒGƒ“ƒeƒBƒeƒB‚É“`”d‚µ‚Ü‚·B</para>
+            最後に、操作のカスケードがオブジェクトグラフに適用されるのは、 <emphasis>コールした時</emphasis>
+             あるいは、 <emphasis>flushした時</emphasis> であることに注意してください。
+            すべての操作は、その操作が実行されたときに、到達可能な関連するエンティティに対して 
+            カスケードが可能ならカスケードします。
+            しかし、 <literal>save-upate</literal> と
+             <literal>delete-orphan</literal> は、 <literal>Session</literal> 
+            がflushしている間に、 すべての到達可能な関連するエンティティに伝播します。</para>
     </sect1>
     
     <sect1 id="objectstate-metadata">
-        <title>ƒƒ^ƒf[ƒ^‚ÌŽg—p</title>
+        <title>メタデータの使用</title>
         
         <para>
-             Hibernate‚́A‚·‚ׂẴGƒ“ƒeƒBƒeƒB‚Æ’lŒ^‚Ì”ñí‚ɃŠƒbƒ`‚ȃƒ^ƒŒƒxƒ‹‚̃‚ƒfƒ‹‚ð•K—v‚Æ‚µ‚Ü‚·B
-            ‚Æ‚«‚Ç‚«A‚±‚̃‚ƒfƒ‹‚̓AƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚Æ‚Á‚Ä‚Æ‚Ä‚à–ð‚É—§‚¿‚Ü‚·B
-            —Ⴆ‚΁AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚́AHibernate‚̃ƒ^ƒf[ƒ^‚ðŽg‚Á‚āA"Œ«‚¢" ƒfƒB[ƒvƒRƒs[ƒAƒ‹ƒSƒŠƒYƒ€‚ð
-            ŽÀ‘•‚Å‚«‚é‚©‚à‚µ‚Ü‚¹‚ñB‚»‚̃Aƒ‹ƒSƒŠƒYƒ€‚Ƃ́A‚ǂ̃IƒuƒWƒFƒNƒg‚ªƒRƒs[‚³‚ê‚é‚ׂ«‚©i—áF‰Â•Ï‚Ì’lŒ^j‚â
-            ‚ǂ̃IƒuƒWƒFƒNƒg‚̓Rƒs[‚³‚ê‚È‚¢‚ׂ«‚©i—áF•s•Ï‚È’lŒ^‚â‰Â”\‚È‚çŠÖ˜A‚·‚éƒGƒ“ƒeƒBƒeƒBj‚ð ”»’f‚Å‚«‚é‚à‚Ì‚Å‚·B </para>
+             Hibernateは、すべてのエンティティと値型の非常にリッチなメタレベルのモデルを必要とします。
+            ときどき、このモデルはアプリケーションにとってとても役に立ちます。
+            例えば、アプリケーションは、Hibernateのメタデータを使って、"賢い" ディープコピーアルゴリズムを
+            実装できるかもしません。そのアルゴリズムとは、どのオブジェクトがコピーされるべきか(例:可変の値型)や
+            どのオブジェクトはコピーされないべきか(例:不変な値型や可能なら関連するエンティティ)を 判断できるものです。 </para>
             
             
         <para> 
-            Hibernate‚Í<literal>ClassMetadata</literal>
-            ‚Æ<literal>CollectionMetadata</literal> ƒCƒ“ƒ^ƒtƒF[ƒX‚Æ
-             <literal>Type</literal> ŠK‘w‚ð’Ê‚µ‚ăƒ^ƒf[ƒ^‚ðŒöŠJ‚µ‚Ü‚·B
-            ƒƒ^ƒf[ƒ^ƒCƒ“ƒ^[ƒtƒFƒCƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚́A <literal>SessionFactory</literal> ‚©‚瓾‚ç‚ê‚Ü‚·B
+            Hibernateは<literal>ClassMetadata</literal>
+            と<literal>CollectionMetadata</literal> インタフェースと
+             <literal>Type</literal> 階層を通してメタデータを公開します。
+            メタデータインターフェイスのインスタンスは、 <literal>SessionFactory</literal> から得られます。
             </para>
         
         
@@ -1117,4 +1119,4 @@
         
     </sect1>
     
-</chapter>
\ No newline at end of file
+</chapter>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/toolset_guide.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/toolset_guide.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/toolset_guide.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,39 +1,41 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="toolsetguide" revision="2">
     <title>Toolset Guide
     
-    ƒc[ƒ‹ƒZƒbƒgƒKƒCƒh
+    ツールセットガイド
     </title>
 
     <para>
-         Hibernate‚ðŽg‚Á‚½ƒ‰ƒEƒ“ƒhƒgƒŠƒbƒvƒGƒ“ƒWƒjƒAƒŠƒ“ƒO‚́A
-         Eclipseƒvƒ‰ƒOƒCƒ“‚âƒRƒ}ƒ“ƒhƒ‰ƒCƒ“ƒc[ƒ‹A‚à‚¿‚ë‚ñAntƒ^ƒXƒN‚ðŽg‚¤‚±‚Ƃʼn”\‚Å‚·B
+         Hibernateを使ったラウンドトリップエンジニアリングは、
+         Eclipseプラグインやコマンドラインツール、もちろんAntタスクを使うことで可能です。
     </para>
 
     <para>
-         <emphasis>Hibernate Tools</emphasis> ‚ÍŒ»ÝAŠù‘¶ƒf[ƒ^ƒx[ƒX‚̃Šƒo[ƒXƒGƒ“ƒWƒjƒAƒŠƒ“ƒO‚ÌAntƒ^ƒXƒN‚ɉÁ‚¦‚āAEclipseIDE‚̃vƒ‰ƒOƒCƒ“‚ðŠÜ‚Ý‚Ü‚·B
+         <emphasis>Hibernate Tools</emphasis> は現在、既存データベースのリバースエンジニアリングのAntタスクに加えて、EclipseIDEのプラグインを含みます。
     </para>
 
     <itemizedlist>
         <listitem><para>
-             <emphasis>ƒ}ƒbƒsƒ“ƒOƒGƒfƒBƒ^:</emphasis> 
-            Hibernate‚ÌXMLƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹—p‚̃GƒfƒBƒ^‚ŁA
-            Ž©“®•âŠ®‚ƍ\•¶‹­’²•\Ž¦‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·BƒNƒ‰ƒX–¼‚âƒvƒƒpƒeƒB/ƒtƒB[ƒ‹ƒh–¼‚ɑ΂·‚鎩“®•âŠ®‚àƒTƒ|[ƒg‚µA
-            ’ʏí‚ÌXMLƒGƒfƒBƒ^‚æ‚è‚à‹­—Í‚Å‚·B
+             <emphasis>マッピングエディタ:</emphasis> 
+            HibernateのXMLマッピングファイル用のエディタで、
+            自動補完と構文強調表示をサポートしています。クラス名やプロパティ/フィールド名に対する自動補完もサポートし、
+            通常のXMLエディタよりも強力です。
         </para></listitem>
         <listitem><para>
              <emphasis>Console:</emphasis> 
-            ƒRƒ“ƒ\[ƒ‹‚̓GƒNƒŠƒvƒX‚̐V‚µ‚¢ƒrƒ…[‚Å‚·B
-            ƒRƒ“ƒ\[ƒ‹ƒRƒ“ƒtƒBƒMƒ…ƒŒ[ƒVƒ‡ƒ“‚̃cƒŠ[ƒI[ƒo[ƒrƒ…[‚ɉÁ‚¦‚āA‰i‘±ƒNƒ‰ƒX‚Æ‚»‚ÌŠÖ˜A‚Ì‘ŠŒÝì—pƒrƒ…[‚à“¾‚ç‚ê‚Ü‚·B
-            ƒf[ƒ^ƒx[ƒX‚ÉHQL‚ðŽÀs‚µAŒ‹‰Ê‚𒼐ڃGƒNƒŠƒvƒXã‚ÅŒ©‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+            コンソールはエクリプスの新しいビューです。
+            コンソールコンフィギュレーションのツリーオーバービューに加えて、永続クラスとその関連の相互作用ビューも得られます。
+            データベースにHQLを実行し、結果を直接エクリプス上で見ることができます。
         </para></listitem>
         <listitem><para>
-             <emphasis>ŠJ”­ƒEƒBƒU[ƒh</emphasis> 
-            Hibernate‚ÌEclipseƒc[ƒ‹‚Í‚¢‚­‚‚©‚̃EƒBƒU[ƒh‚ð’ñ‹Ÿ‚µ‚Ü‚·B
-            ƒEƒBƒU[ƒh‚ðŽg‚Á‚ÄHibernate‚̐ݒèƒtƒ@ƒCƒ‹(cfg.xml)‚ð‚·‚Î‚â‚­¶¬‚µ‚½‚èA
-            Šù‘¶‚̃f[ƒ^ƒx[ƒXƒXƒL[ƒ}‚ðPOJO‚̃\[ƒXƒtƒ@ƒCƒ‹‚ÆHibernate‚̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ւƁA
-            Š®‘S‚ɃŠƒo[ƒXƒGƒ“ƒWƒjƒAƒŠƒ“ƒO‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-            ƒŠƒo[ƒXƒGƒ“ƒWƒjƒAƒŠƒ“ƒOƒEƒBƒU[ƒh‚̓JƒXƒ^ƒ}ƒCƒY‰Â”\‚ȃeƒ“ƒvƒŒ[ƒg‚ðƒTƒ|[ƒg‚µ‚Ü‚·B
+             <emphasis>開発ウィザード</emphasis> 
+            HibernateのEclipseツールはいくつかのウィザードを提供します。
+            ウィザードを使ってHibernateの設定ファイル(cfg.xml)をすばやく生成したり、
+            既存のデータベーススキーマをPOJOのソースファイルとHibernateのマッピングファイルへと、
+            完全にリバースエンジニアリングすることができます。
+            リバースエンジニアリングウィザードはカスタマイズ可能なテンプレートをサポートします。
         </para></listitem>
         <listitem><para>
             <emphasis>Ant Tasks:</emphasis> 
@@ -42,43 +44,43 @@
     </itemizedlist>
 
     <para>
-        ‚æ‚èÚ‚µ‚¢î•ñ‚Í <emphasis>Hibernate Tools</emphasis>  ƒpƒbƒP[ƒW‚Æ‚»‚̃hƒLƒ…ƒƒ“ƒg‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+        より詳しい情報は <emphasis>Hibernate Tools</emphasis>  パッケージとそのドキュメントを参照してください。
     </para>
 
     <para>
-        ‚µ‚©‚µAHibernate‚̃ƒCƒ“ƒpƒbƒP[ƒW‚Í <emphasis>SchemaExport</emphasis> A
-        •Ê–¼ <literal>hbm2ddl</literal> ‚àŠÜ‚Ý‚Ü‚·(Hibernate“à‚ŃIƒ“ƒUƒtƒ‰ƒC‚ÅŽg—p‚Å‚«‚Ü‚·)B
+        しかし、Hibernateのメインパッケージは <emphasis>SchemaExport</emphasis> 、
+        別名 <literal>hbm2ddl</literal> も含みます(Hibernate内でオンザフライで使用できます)。
     </para>
 
     <sect1 id="toolsetguide-s1" revision="2">
-        <title>ƒXƒL[ƒ}‚ÌŽ©“®¶¬</title>
+        <title>スキーマの自動生成</title>
 
         <para>
-            DDL‚ÍHibernateƒ†[ƒeƒBƒŠƒeƒB‚É‚æ‚èƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚©‚琶¬‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-            ¶¬‚³‚ꂽƒXƒL[ƒ}‚̓Gƒ“ƒeƒBƒeƒB‚âƒRƒŒƒNƒVƒ‡ƒ“‚̃e[ƒuƒ‹‚ɑ΂·‚éŽQÆ®‡«§–ñ(ŽåƒL[‚ÆŠO•”ƒL[)‚ðŠÜ‚Ý‚Ü‚·B
-            ƒe[ƒuƒ‹‚ƃV[ƒPƒ“ƒX‚̓}ƒbƒsƒ“ƒO‚·‚鎯•ÊŽqƒWƒFƒlƒŒ[ƒ^‚ɑ΂µ‚ж¬‚³‚ê‚Ü‚·B
+            DDLはHibernateユーティリティによりマッピングファイルから生成することができます。
+            生成されたスキーマはエンティティやコレクションのテーブルに対する参照整合性制約(主キーと外部キー)を含みます。
+            テーブルとシーケンスはマッピングする識別子ジェネレータに対して生成されます。
         </para>
         
         <para>
-            DDL‚̓xƒ“ƒ_[ˆË‘¶‚Ȃ̂ŁA‚±‚̃c[ƒ‹‚ðŽg‚¤‚Æ‚«‚́A<literal>hibernate.dialect</literal>  
-            ƒvƒƒpƒeƒB‚ÅSQL‚Ì <literal>•ûŒ¾</literal>  ‚ðŽw’è <emphasis>‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ</emphasis>  B
+            DDLはベンダー依存なので、このツールを使うときは、<literal>hibernate.dialect</literal>  
+            プロパティでSQLの <literal>方言</literal>  を指定 <emphasis>しなければなりません</emphasis>  。
         </para>
 
         <para>
-            ‚Ü‚¸A¶¬‚³‚ê‚éƒXƒL[ƒ}‚ð‰ü‘P‚·‚é‚悤‚ɁAƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ðƒJƒXƒ^ƒ}ƒCƒY‚µ‚Ä‚­‚¾‚³‚¢B
+            まず、生成されるスキーマを改善するように、マッピングファイルをカスタマイズしてください。
         </para>
 
         <sect2 id="toolsetguide-s1-2" revision="3">
-            <title>ƒXƒL[ƒ}‚̃JƒXƒ^ƒ}ƒCƒY</title>
+            <title>スキーマのカスタマイズ</title>
 
             <para>
-                ‘½‚­‚ÌHibernate‚̃}ƒbƒsƒ“ƒO—v‘f‚ł́AƒIƒvƒVƒ‡ƒ“‚Ì <literal>length</literal>  ‚Æ‚¢‚¤–¼‚Ì‘®«‚ð’è‹`‚µ‚Ä‚¢‚Ü‚·B
-                ‚±‚Ì‘®«‚ŃJƒ‰ƒ€’·‚ðÝ’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·(‚Ü‚½‚ÍNUMERIC/DECIMALŒ^‚̃f[ƒ^‚̐¸“x‚ðÝ’è‚Å‚«‚Ü‚·)B
+                多くのHibernateのマッピング要素では、オプションの <literal>length</literal>  という名の属性を定義しています。
+                この属性でカラム長を設定することができます(またはNUMERIC/DECIMAL型のデータの精度を設定できます)。
             </para>
 
             <para>
-                <literal>not-null</literal>  ‘®«iƒe[ƒuƒ‹‚̃Jƒ‰ƒ€‚Ö <literal>NOT NULL</literal>  §–ñ‚𐶐¬‚·‚éj‚Æ 
-                <literal>unique</literal>  ‘®«iƒe[ƒuƒ‹‚̃Jƒ‰ƒ€‚Ö <literal>UNIQUE</literal>  §–ñ‚𐶐¬‚·‚éj‚ªÝ’è‚Å‚«‚éƒ^ƒO‚à‚ ‚è‚Ü‚·B
+                <literal>not-null</literal>  属性(テーブルのカラムへ <literal>NOT NULL</literal>  制約を生成する)と 
+                <literal>unique</literal>  属性(テーブルのカラムへ <literal>UNIQUE</literal>  制約を生成する)が設定できるタグもあります。
             </para>
             
             <programlisting><![CDATA[<many-to-one name="bar" column="barId" not-null="true"/>]]></programlisting>
@@ -86,9 +88,9 @@
             <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
-                ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ŃJƒ‰ƒ€‚ðƒOƒ‹[ƒv‰»‚·‚邱‚Æ‚É‚Ì‚ÝŽg‚í‚ê‚Ü‚·B 
+                <literal>unique-key</literal>  属性はカラムをグループ化して一つのキー制約にするために使われます。
+                現在、<literal>unique-key</literal>  属性で指定された値は制約の指定には  <emphasis>使われず</emphasis> 、
+                マッピングファイルでカラムをグループ化することにのみ使われます。 
             </para>
             
             <programlisting><![CDATA[<many-to-one name="org" column="orgId" unique-key="OrgEmployeeId"/>
@@ -97,21 +99,21 @@
             
 
             <para>
-                <literal>index</literal> ‘®«‚̓}ƒbƒsƒ“ƒO‚·‚éƒJƒ‰ƒ€‚ðŽg‚Á‚ж¬‚µ‚½ƒCƒ“ƒfƒbƒNƒX‚Ì–¼‘O‚ðŽw’肵‚Ü‚·B
-                •¡”ƒJƒ‰ƒ€‚ð‚P‚‚̃Cƒ“ƒfƒbƒNƒX‚ɃOƒ‹[ƒv‰»‚Å‚«‚Ü‚·B’P‚ɁA“¯‚¶ƒCƒ“ƒfƒbƒNƒX–¼‚ðŽw’è‚·‚邾‚¯‚Å‚·B
+                <literal>index</literal> 属性はマッピングするカラムを使って生成したインデックスの名前を指定します。
+                複数カラムを1つのインデックスにグループ化できます。単に、同じインデックス名を指定するだけです。
             </para>
             
 <programlisting><![CDATA[<property name="lastName" index="CustName"/>
 <property name="firstName" index="CustName"/>]]></programlisting>
 
             <para>
-                <literal>foreign-key</literal> ‘®«‚́A¶¬‚³‚ꂽŠO•”ƒL[§–ñ‚Ì–¼‘O‚ðƒI[ƒo[ƒ‰ƒCƒh‚·‚邽‚ß‚ÉŽg—p‚Å‚«‚Ü‚·B
+                <literal>foreign-key</literal> 属性は、生成された外部キー制約の名前をオーバーライドするために使用できます。
             </para>
             
             <programlisting><![CDATA[<many-to-one name="bar" column="barId" foreign-key="FKFooBar"/>]]></programlisting>
 
             <para>
-                ‘½‚­‚̃}ƒbƒsƒ“ƒO—v‘f‚́AŽq <literal>&lt;column&gt;</literal>  —v‘f‚ð‹Lq‚Å‚«‚Ü‚·B‚±‚ê‚Í•¡”ƒJƒ‰ƒ€Œ^‚̃}ƒbƒsƒ“ƒO‚É‚Í“Á‚É—L—p‚Å‚·B
+                多くのマッピング要素は、子 <literal>&lt;column&gt;</literal>  要素を記述できます。これは複数カラム型のマッピングには特に有用です。
             </para>
 
             <programlisting><![CDATA[<property name="name" type="my.customtypes.Name"/>
@@ -121,9 +123,9 @@
 </property>]]></programlisting>
 
             <para>
-                 <literal>default</literal> ‘®«‚̓Jƒ‰ƒ€‚̃fƒtƒHƒ‹ƒg’l‚ðŽw’肵‚Ü‚·
-                 (ƒ}ƒbƒsƒ“ƒO‚µ‚½ƒNƒ‰ƒX‚̐V‚µ‚¢ƒCƒ“ƒXƒ^ƒ“ƒX‚ð•Û‘¶‚·‚é‘O‚ɁA
-                 ƒ}ƒbƒsƒ“ƒO‚µ‚½ƒvƒƒpƒeƒB‚Ö“¯‚¶’l‚ð‘ã“ü‚·‚ׂ«‚Å‚·)B
+                 <literal>default</literal> 属性はカラムのデフォルト値を指定します
+                 (マッピングしたクラスの新しいインスタンスを保存する前に、
+                 マッピングしたプロパティへ同じ値を代入すべきです)。
             </para>
 
             <programlisting><![CDATA[<property name="credits" type="integer" insert="false">
@@ -135,7 +137,7 @@
 </property>]]></programlisting>
 
             <para>
-                <literal>sql-type</literal>  ‘®«‚ŁAƒfƒtƒHƒ‹ƒg‚ÌHibernateŒ^‚©‚çSQL‚̃f[ƒ^Œ^‚ւ̃}ƒbƒsƒ“ƒO‚ðƒI[ƒo[ƒ‰ƒCƒh‚Å‚«‚Ü‚·B
+                <literal>sql-type</literal>  属性で、デフォルトのHibernate型からSQLのデータ型へのマッピングをオーバーライドできます。
             </para>
             
             
@@ -145,7 +147,7 @@
             
             
             <para>
-                <literal>check</literal>  ‘®«‚Ń`ƒFƒbƒN§–ñ‚ðŽw’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+                <literal>check</literal>  属性でチェック制約を指定することができます。
             </para>
             
             <programlisting><![CDATA[<property name="foo" type="integer">
@@ -159,94 +161,94 @@
             
 
             <table frame="topbot" id="schemattributes-summary" revision="2">
-                <title>‚Ü‚Æ‚ß</title>
+                <title>まとめ</title>
                 <tgroup cols="3">
                     <colspec colwidth="1*"/>
                     <colspec colwidth="1*"/>
                     <colspec colwidth="2.5*"/>
                     <thead>
                         <row>
-                            <entry>‘®«</entry>
-                            <entry>’l</entry>
-                            <entry>à–¾</entry>
+                            <entry>属性</entry>
+                            <entry>値</entry>
+                            <entry>説明</entry>
                         </row>
                     </thead>
                     <tbody>
                         <row>
                             <entry><literal>length</literal></entry>
-                            <entry>”’l</entry>
-                            <entry>ƒJƒ‰ƒ€‚Ì’·‚³</entry>
+                            <entry>数値</entry>
+                            <entry>カラムの長さ</entry>
                         </row>
                         
                         <row>
                             <entry><literal>precision</literal></entry>
-                            <entry>”’l</entry>
-                            <entry>ƒJƒ‰ƒ€‚ÌDECIMALŒ^‚̐¸“xiprecisionj</entry>
+                            <entry>数値</entry>
+                            <entry>カラムのDECIMAL型の精度(precision)</entry>
                         </row>                        
                         
                         <row>
                             <entry><literal>scale</literal></entry>
-                            <entry>”’l</entry>
-                            <entry>ƒJƒ‰ƒ€‚ÌDECIMALŒ^‚̃XƒP[ƒ‹iscalej</entry>
+                            <entry>数値</entry>
+                            <entry>カラムのDECIMAL型のスケール(scale)</entry>
                         </row>                        
                         
                         <row>
                             <entry><literal>not-null</literal></entry>
                             <entry><literal>true|false</literal></entry>
-                            <entry>ƒJƒ‰ƒ€‚ªnull’l‚ðŽæ‚ç‚È‚¢‚±‚Æ‚ðŽw’肵‚Ü‚·
+                            <entry>カラムがnull値を取らないことを指定します
                             </entry>
                         </row>
                         <row>
                             <entry><literal>unique</literal></entry>
                             <entry><literal>true|false</literal></entry>
-                            <entry>ƒJƒ‰ƒ€‚ªƒ†ƒj[ƒN§–ñ‚ðŽ‚Â‚±‚Æ‚ðŽw’肵‚Ü‚·
+                            <entry>カラムがユニーク制約を持つことを指定します
                             </entry>
                         </row>
                         <row>
                             <entry><literal>index</literal></entry>
-                            <entry><literal>ƒCƒ“ƒfƒbƒNƒX–¼</literal> </entry>
-                            <entry>(•¡”ƒJƒ‰ƒ€‚Ì)ƒCƒ“ƒfƒbƒNƒX‚Ì–¼‘O‚ðŽw’肵‚Ü‚·
+                            <entry><literal>インデックス名</literal> </entry>
+                            <entry>(複数カラムの)インデックスの名前を指定します
                             </entry>
                         </row>
                         <row>
                             <entry><literal>unique-key</literal></entry>
-                            <entry><literal>ƒ†ƒj[ƒNƒL[–¼</literal></entry>
-                            <entry>•¡”ƒJƒ‰ƒ€‚̃†ƒj[ƒN§–ñ‚Ì–¼‘O‚ðŽw’肵‚Ü‚·
+                            <entry><literal>ユニークキー名</literal></entry>
+                            <entry>複数カラムのユニーク制約の名前を指定します
                             </entry>
                         </row>
                         <row>
                             <entry><literal>foreign-key</literal></entry>
-                            <entry><literal>ŠO•”ƒL[–¼</literal></entry>
+                            <entry><literal>外部キー名</literal></entry>
                             <entry>
-                                &lt;one-to-one&gt;A&lt;many-to-one&gt;A&lt;many-to-many&gt;ƒ}ƒbƒsƒ“ƒO—v‘f‚ðŽg‚Á‚āA
-                                ŠÖ˜A‚ɑ΂µ¶¬‚³‚ꂽŠO•”ƒL[§–ñ‚Ì–¼‘O‚ðŽw’肵‚Ü‚·B
-                                <literal>SchemaExport</literal>  ‚Í <literal>inverse="true"</literal>  ‘¤‚ðl—¶‚µ‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+                                &lt;one-to-one&gt;、&lt;many-to-one&gt;、&lt;many-to-many&gt;マッピング要素を使って、
+                                関連に対し生成された外部キー制約の名前を指定します。
+                                <literal>SchemaExport</literal>  は <literal>inverse="true"</literal>  側を考慮しないことに注意してください。
                             </entry>
                         </row>
                         <row>
                             <entry><literal>sql-type</literal></entry>
-                            <entry><literal>SQL‚̃Jƒ‰ƒ€Œ^</literal></entry>
+                            <entry><literal>SQLのカラム型</literal></entry>
                             
                             <entry>
-                                ƒfƒtƒHƒ‹ƒg‚̃Jƒ‰ƒ€Œ^‚ðƒI[ƒo[ƒ‰ƒCƒh‚µ‚Ü‚·( <literal>&lt;column&gt;</literal>  —v‘f‚Ì‘®«‚Ì‚Ý) 
+                                デフォルトのカラム型をオーバーライドします( <literal>&lt;column&gt;</literal>  要素の属性のみ) 
                             </entry>
                        </row>
                        
                        <row>
                             <entry><literal>default</literal></entry>
-                            <entry>SQLŽ®</entry>
+                            <entry>SQL式</entry>
                             
                             <entry>
-                                ƒJƒ‰ƒ€‚̃fƒtƒHƒ‹ƒg’l‚ðŽw’肵‚Ü‚·
+                                カラムのデフォルト値を指定します
                             </entry>
                        </row>                       
                        
                        <row>
                             <entry><literal>check</literal></entry>
-                            <entry>SQLŽ®</entry>
+                            <entry>SQL式</entry>
                             
                             <entry>
-                                ƒJƒ‰ƒ€‚©ƒe[ƒuƒ‹‚ÉSQL‚̃`ƒFƒbƒN§–ñ‚ðì¬‚µ‚Ü‚·
+                                カラムかテーブルにSQLのチェック制約を作成します
                             </entry>
                        </row>
                    </tbody>
@@ -254,7 +256,7 @@
             </table>
             
             <para>
-                 <literal>&lt;comment&gt;</literal>  —v‘f‚Ő¶¬‚·‚éƒXƒL[ƒ}‚ɃRƒƒ“ƒg‚ðŽw’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+                 <literal>&lt;comment&gt;</literal>  要素で生成するスキーマにコメントを指定することができます。
                 
             </para>
             
@@ -270,16 +272,16 @@
 </property>]]></programlisting>
             
             <para>
-                ‚±‚ê‚É‚æ‚èA¶¬‚µ‚½DDL‚É <literal>comment on table</literal>  ‚â <literal>comment on column</literal>  •¶‚ª‘‚©‚ê‚Ü‚·B
+                これにより、生成したDDLに <literal>comment on table</literal>  や <literal>comment on column</literal>  文が書かれます。
             </para>
 
         </sect2>
 
         <sect2 id="toolsetguide-s1-3" revision="2">
-            <title>ƒc[ƒ‹‚ÌŽÀs</title>
+            <title>ツールの実行</title>
 
             <para>
-                 <literal>SchemaExport</literal>  ‚Í•W€o—͂ɑ΂µ‚ÄDDLƒXƒNƒŠƒvƒg‚ð‘‚«o‚µADDL•¶‚ðŽÀs‚µ‚½‚è‚à‚µ‚Ü‚·B
+                 <literal>SchemaExport</literal>  は標準出力に対してDDLスクリプトを書き出し、DDL文を実行したりもします。
             </para>
 
             <para>
@@ -290,70 +292,70 @@
             <table frame="topbot">
                 <title> <literal>SchemaExport</literal>  Command Line Options
                 
-                 <literal>SchemaExport</literal>  ‚̃Rƒ}ƒ“ƒhƒ‰ƒCƒ“ƒIƒvƒVƒ‡ƒ“
+                 <literal>SchemaExport</literal>  のコマンドラインオプション
                 </title>
                 <tgroup cols="2">
                     <colspec colwidth="1.5*"/>
                     <colspec colwidth="2*"/>
                     <thead>
                         <row>
-                            <entry>ƒIƒvƒVƒ‡ƒ“</entry>
-                            <entry>à–¾</entry>
+                            <entry>オプション</entry>
+                            <entry>説明</entry>
                         </row>
                     </thead>
                     <tbody>
                         <row>
                             <entry> <literal>--quiet</literal> </entry>
-                            <entry>ƒXƒNƒŠƒvƒg‚ð•W€o—͂ɏo—Í‚µ‚Ü‚¹‚ñ</entry>
+                            <entry>スクリプトを標準出力に出力しません</entry>
                         </row>
                         <row>
                             <entry> <literal>--drop</literal> </entry>
-                            <entry>ƒe[ƒuƒ‹‚̍폜‚¾‚¯‚ðs‚¢‚Ü‚·</entry>
+                            <entry>テーブルの削除だけを行います</entry>
                         </row>
                         
                         <row>
                             <entry> <literal>--create</literal> </entry>
-                            <entry>ƒe[ƒuƒ‹‚̐¶¬‚Ì‚Ý‚ðs‚¢‚Ü‚·B
+                            <entry>テーブルの生成のみを行います。
                             </entry>
                         </row>                        
                         
                         <row>
                             <entry> <literal>--text</literal> </entry>
-                            <entry>ƒf[ƒ^ƒx[ƒX‚ɃGƒNƒXƒ|[ƒg‚µ‚Ü‚¹‚ñ</entry>
+                            <entry>データベースにエクスポートしません</entry>
                         </row>
                         <row>
                             <entry> <literal>--output=my_schema.ddl</literal> </entry>
-                            <entry> DDLƒXƒNƒŠƒvƒg‚ðƒtƒ@ƒCƒ‹‚ɏo—Í‚µ‚Ü‚·</entry>
+                            <entry> DDLスクリプトをファイルに出力します</entry>
                         </row>
                         
                         <row>
                             <entry> <literal>--naming=eg.MyNamingStrategy</literal> </entry>
-                            <entry> <literal>NamingStrategy</literal> ‚ð‘I‘ð‚µ‚Ü‚·
+                            <entry> <literal>NamingStrategy</literal> を選択します
                             </entry>
                         </row>                        
                         
                         <row>
                             <entry><literal>--config=hibernate.cfg.xml</literal> </entry>
-                            <entry>XMLƒtƒ@ƒCƒ‹‚©‚çHibernate‚Ì’è‹`î•ñ‚ð“ǂݍž‚Ý‚Ü‚·</entry>
+                            <entry>XMLファイルからHibernateの定義情報を読み込みます</entry>
                         </row>
                         <row>
                             <entry> <literal>--properties=hibernate.properties</literal> </entry>
-                            <entry>ƒtƒ@ƒCƒ‹‚©‚çƒf[ƒ^ƒx[ƒXƒvƒƒpƒeƒB‚ð“ǂݍž‚Ý‚Ü‚·</entry>
+                            <entry>ファイルからデータベースプロパティを読み込みます</entry>
                         </row>
                         <row>
                             <entry> <literal>--format</literal> </entry>
-                            <entry>ƒXƒNƒŠƒvƒg“à‚ɐ¶¬‚·‚éSQL‚ð“Ç‚Ý‚â‚·‚¢‚悤‚ɃtƒH[ƒ}ƒbƒg‚µ‚Ü‚·</entry>
+                            <entry>スクリプト内に生成するSQLを読みやすいようにフォーマットします</entry>
                         </row>
                         <row>
                             <entry> <literal>--delimiter=x</literal> </entry>
-                            <entry>ƒXƒNƒŠƒvƒg‚̍s‹æØ‚蕶Žš‚ðÝ’肵‚Ü‚·</entry>
+                            <entry>スクリプトの行区切り文字を設定します</entry>
                         </row>
                     </tbody>
                 </tgroup>
             </table>
 
             <para>
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É <literal>SchemaExport</literal>  ‚ð‘g‚ݍž‚Þ‚±‚Æ‚à‚Å‚«‚Ü‚·F
+                アプリケーションに <literal>SchemaExport</literal>  を組み込むこともできます:
             </para>
 
             <programlisting><![CDATA[Configuration cfg = ....;
@@ -363,69 +365,69 @@
 
 
         <sect2 id="toolsetguide-s1-4">
-            <title>ƒvƒƒpƒeƒB</title>
+            <title>プロパティ</title>
 
             <para>
-                ŽŸ‚̂悤‚ɁAƒf[ƒ^ƒx[ƒX‚̃vƒƒpƒeƒB‚ðŽw’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+                次のように、データベースのプロパティを指定することができます。
             </para>
 
             <itemizedlist spacing="compact">
                 <listitem>
-                    <para><literal>-D</literal>  <emphasis>&lt;property&gt;</emphasis>  ‚ðŽg‚Á‚āAƒVƒXƒeƒ€ƒvƒƒpƒeƒB‚Æ‚µ‚Ä
+                    <para><literal>-D</literal>  <emphasis>&lt;property&gt;</emphasis>  を使って、システムプロパティとして
                     </para>
                 </listitem>
                 <listitem>
-                    <para><literal>hibernate.properties</literal>  ƒtƒ@ƒCƒ‹“à‚Å
+                    <para><literal>hibernate.properties</literal>  ファイル内で
                     </para>
                 </listitem>
                 <listitem>
-                    <para> <literal>--properties</literal> ‚ðŽg‚Á‚ÄŽw’肵‚½ƒvƒƒpƒeƒBƒtƒ@ƒCƒ‹“à‚Å
+                    <para> <literal>--properties</literal> を使って指定したプロパティファイル内で
 
                     </para>
                 </listitem>
             </itemizedlist>
 
             <para>
-                •K—v‚ȃvƒƒpƒeƒB‚͈ȉº‚Ì‚à‚Ì‚Å‚·F
+                必要なプロパティは以下のものです:
             </para>
 
             <table frame="topbot">
-                <title>SchemaExportƒRƒlƒNƒVƒ‡ƒ“ƒvƒƒpƒeƒB</title>
+                <title>SchemaExportコネクションプロパティ</title>
                 <tgroup cols="2">
                     <colspec colwidth="1.5*"/>
                     <colspec colwidth="2*"/>
                     <thead>
                         <row>
-                            <entry>ƒvƒƒpƒeƒB–¼
+                            <entry>プロパティ名
                             </entry>
-                            <entry>à–¾
+                            <entry>説明
                             </entry>
                         </row>
                     </thead>
                     <tbody>
                     <row>
                         <entry> <literal>hibernate.connection.driver_class</literal> </entry>
-                        <entry>jdbc‚̃hƒ‰ƒCƒo[ƒNƒ‰ƒX
+                        <entry>jdbcのドライバークラス
                         </entry>
                     </row>
                     <row>
                         <entry> <literal>hibernate.connection.url</literal> </entry>
-                        <entry>jdbc‚Ìurl
+                        <entry>jdbcのurl
                         </entry>
                     </row>
                     <row>
                         <entry> <literal>hibernate.connection.username</literal> </entry>
-                        <entry>ƒf[ƒ^ƒx[ƒX‚̃†[ƒU
+                        <entry>データベースのユーザ
                         </entry>
                     </row>
                     <row>
                         <entry> <literal>hibernate.connection.password</literal> </entry>
-                        <entry>ƒ†[ƒUƒpƒXƒ[ƒh
+                        <entry>ユーザパスワード
                         </entry>
                     </row>
                     <row>
                         <entry> <literal>hibernate.dialect</literal> </entry>
-                        <entry>ƒf[ƒ^ƒx[ƒX•ûŒ¾
+                        <entry>データベース方言
                         </entry>
                     </row>
                     </tbody>
@@ -435,10 +437,10 @@
         </sect2>
 
         <sect2 id="toolsetguide-s1-5">
-            <title>Ant‚ðŽg—p‚·‚é</title>
+            <title>Antを使用する</title>
 
             <para>
-                Ant‚̃rƒ‹ƒhƒXƒNƒŠƒvƒg‚©‚ç <literal>SchemaExport</literal>  ‚ðŒÄ‚яo‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B:
+                Antのビルドスクリプトから <literal>SchemaExport</literal>  を呼び出すことができます。:
             </para>
 
             <programlisting><![CDATA[<target name="schemaexport">
@@ -462,13 +464,13 @@
         </sect2>
 
         <sect2 id="toolsetguide-s1-6" revision="2">
-            <title>ƒCƒ“ƒNƒŠƒƒ“ƒ^ƒ‹‚ȃXƒL[ƒ}XV
+            <title>インクリメンタルなスキーマ更新
             </title>
 
             <para>
-                 <literal>SchemaUpdate</literal>  ƒc[ƒ‹‚ÍŠù‘¶‚̃XƒL[ƒ}‚ðƒCƒ“ƒNƒŠƒƒ“ƒ^ƒ‹‚ɍXV‚µ‚Ü‚·B
-                <literal>SchemaUpdate</literal>  ‚ÍJDBC‚̃ƒ^ƒf[ƒ^API‚É‹­‚­ˆË‘¶‚µ‚Ü‚·B
-                ‚»‚Ì‚½‚߁A‚·‚ׂĂÌJDBCƒhƒ‰ƒCƒo‚Å‚¤‚Ü‚­‚¢‚­‚Æ‚ÍŒÀ‚ç‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+                 <literal>SchemaUpdate</literal>  ツールは既存のスキーマをインクリメンタルに更新します。
+                <literal>SchemaUpdate</literal>  はJDBCのメタデータAPIに強く依存します。
+                そのため、すべてのJDBCドライバでうまくいくとは限らないことに注意してください。
             </para>
 
             <para>
@@ -477,42 +479,42 @@
             </para>
 
             <table frame="topbot">
-                <title> <literal>SchemaUpdate</literal>  ‚̃Rƒ}ƒ“ƒhƒ‰ƒCƒ“¥ƒIƒvƒVƒ‡ƒ“</title>
+                <title> <literal>SchemaUpdate</literal>  のコマンドライン・オプション</title>
                 <tgroup cols="2">
                     <colspec colwidth="1.5*"/>
                     <colspec colwidth="2*"/>
                     <thead>
                         <row>
-                            <entry>ƒIƒvƒVƒ‡ƒ“</entry>
-                            <entry>à–¾</entry>
+                            <entry>オプション</entry>
+                            <entry>説明</entry>
                         </row>
                     </thead>
                     <tbody>
                         <row>
                             <entry> <literal>--quiet</literal> </entry>
-                            <entry>•W€o—͂ɃXƒNƒŠƒvƒg‚ðo—Í‚µ‚Ü‚¹‚ñ</entry>
+                            <entry>標準出力にスクリプトを出力しません</entry>
                         </row>
                         
                         <row>
                             <entry> <literal>--text</literal> </entry>
-                            <entry>ƒf[ƒ^ƒx[ƒX‚ɃXƒNƒŠƒvƒg‚ðƒGƒNƒXƒ|[ƒg‚µ‚Ü‚¹‚ñ
+                            <entry>データベースにスクリプトをエクスポートしません
                             </entry>
                         </row>
                         <row>
                             <entry> <literal>--naming=eg.MyNamingStrategy</literal> </entry>
-                            <entry><literal>NamingStrategy</literal> ‚ð‘I‘ð‚µ‚Ü‚·B
+                            <entry><literal>NamingStrategy</literal> を選択します。
                             </entry>
                         </row>                        
                         
                         <row>
                             <entry> <literal>--properties=hibernate.properties</literal> </entry>
-                            <entry>ƒtƒ@ƒCƒ‹‚©‚çƒf[ƒ^ƒx[ƒXƒvƒƒpƒeƒB‚ð“ǂݍž‚Ý‚Ü‚·
+                            <entry>ファイルからデータベースプロパティを読み込みます
                             </entry>
                         </row>
                         
                         <row>
                             <entry> <literal>--config=hibernate.cfg.xml</literal> </entry>
-                            <entry><literal>.cfg.xml</literal> ƒtƒ@ƒCƒ‹‚ðŽw’肵‚Ü‚·
+                            <entry><literal>.cfg.xml</literal> ファイルを指定します
                             </entry>
                         </row>                        
                         
@@ -521,7 +523,7 @@
             </table>
 
             <para>
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É <literal>SchemaUpdate</literal>  ‚ð‘g‚ݍž‚Þ‚±‚Æ‚ª‚Å‚«‚Ü‚·BF
+                アプリケーションに <literal>SchemaUpdate</literal>  を組み込むことができます。:
             </para>
 
             <programlisting><![CDATA[Configuration cfg = ....;
@@ -531,10 +533,10 @@
         
 
         <sect2 id="toolsetguide-s1-7">
-            <title>ƒCƒ“ƒNƒŠƒƒ“ƒ^ƒ‹‚ȃXƒL[ƒ}XV‚ɑ΂·‚éAnt‚ÌŽg—p</title>
+            <title>インクリメンタルなスキーマ更新に対するAntの使用</title>
 
             <para>
-                AntƒXƒNƒŠƒvƒg‚©‚ç <literal>SchemaUpdate</literal>  ‚ðŒÄ‚яo‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·F
+                Antスクリプトから <literal>SchemaUpdate</literal>  を呼び出すことができます:
             </para>
 
             <programlisting><![CDATA[<target name="schemaupdate">
@@ -557,7 +559,7 @@
             <title>Schema validation</title>
 
             <para>
-                 <literal>SchemaValidator</literal> ƒc[ƒ‹‚́AŠù‘¶‚̃f[ƒ^ƒx[ƒXƒXƒL[ƒ}‚ƍ쐬‚µ‚½ƒ}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚ª"ˆê’v‚·‚é"‚±‚Æ‚ðŒŸØ‚µ‚Ü‚·B <literal>SchemaValidator</literal> ‚ÍJDBC‚̃ƒ^ƒf[ƒ^API‚É‹­‚­ˆË‘¶‚·‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B‚»‚Ì‚½‚߁A‚·‚ׂĂÌJDBCƒhƒ‰ƒCƒo[‚ō쓮‚·‚é‚à‚Ì‚Å‚Í‚ ‚è‚Ü‚¹‚ñB‚±‚̃c[ƒ‹‚̓eƒXƒgŽž‚É”ñí‚É—L—p‚Å‚·B
+                 <literal>SchemaValidator</literal> ツールは、既存のデータベーススキーマと作成したマッピングドキュメントが"一致する"ことを検証します。 <literal>SchemaValidator</literal> はJDBCのメタデータAPIに強く依存することに注意してください。そのため、すべてのJDBCドライバーで作動するものではありません。このツールはテスト時に非常に有用です。
             </para>
 
             <para>
@@ -566,31 +568,31 @@
             </para>
 
             <table frame="topbot">
-                <title> <literal>SchemaValidator</literal> ‚̃Rƒ}ƒ“ƒhƒ‰ƒCƒ“EƒIƒvƒVƒ‡ƒ“
+                <title> <literal>SchemaValidator</literal> のコマンドライン・オプション
                 </title>
                 <tgroup cols="2">
                     <colspec colwidth="1.5*"/>
                     <colspec colwidth="2*"/>
                     <thead>
                         <row>
-                            <entry>ƒIƒvƒVƒ‡ƒ“</entry>
-                            <entry>à–¾</entry>
+                            <entry>オプション</entry>
+                            <entry>説明</entry>
                         </row>
                     </thead>
                     <tbody>
                         <row>
                             <entry> <literal>--naming=eg.MyNamingStrategy</literal> </entry>
-                            <entry><literal>NamingStrategy</literal> ‚ð‘I‘ð‚µ‚Ü‚·
+                            <entry><literal>NamingStrategy</literal> を選択します
                             </entry>
                         </row>
                         <row>
                             <entry> <literal>--properties=hibernate.properties</literal> </entry>
-                            <entry>ƒtƒ@ƒCƒ‹‚©‚çƒf[ƒ^ƒx[ƒX‚̃vƒƒpƒeƒB‚ð“ǂݍž‚Ý‚Ü‚·
+                            <entry>ファイルからデータベースのプロパティを読み込みます
                             </entry>
                         </row>
                         <row>
                             <entry> <literal>--config=hibernate.cfg.xml</literal> </entry>
-                            <entry><literal>.cfg.xml</literal> ƒtƒ@ƒCƒ‹‚ðŽw’肵‚Ü‚·
+                            <entry><literal>.cfg.xml</literal> ファイルを指定します
                             </entry>
                         </row>
                      </tbody>
@@ -598,7 +600,7 @@
             </table>
 
             <para>
-                 <literal>SchemaValidator</literal> ‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‘g‚ݍž‚Þ‚±‚Æ‚ªo—ˆ‚Ü‚·:
+                 <literal>SchemaValidator</literal> をアプリケーションに組み込むことが出来ます:
             </para>
 
             <programlisting><![CDATA[Configuration cfg = ....;
@@ -607,10 +609,10 @@
         </sect2>
 
         <sect2 id="toolsetguide-s1-9">
-            <title>ƒXƒL[ƒ}‚̃oƒŠƒf[ƒVƒ‡ƒ“‚ÉAnt‚ðŽg—p‚µ‚Ü‚·</title>
+            <title>スキーマのバリデーションにAntを使用します</title>
 
             <para>
-                AntƒXƒNƒŠƒvƒg‚©‚ç <literal>SchemaValidator</literal> ‚ðŒÄ‚яo‚¹‚Ü‚·:
+                Antスクリプトから <literal>SchemaValidator</literal> を呼び出せます:
             </para>
 
             <programlisting><![CDATA[<target name="schemavalidate">

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/transactions.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/transactions.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/transactions.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,299 +1,301 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="transactions" revision="2">
-    <title>ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Æ•Às«</title>
+    <title>トランザクションと並行性</title>
 
     <para>
-        Hibernate‚Æ“¯ŽžŽÀs§Œä‚ɂ‚¢‚čłàd—v‚È“_‚́A—eˆÕ‚É—‰ð‚Å‚«‚邱‚Æ‚Å‚·B
-        Hibernate‚͐V‚½‚ȃƒbƒN‚̐U‚é•‘‚¢‚ð’ljÁ‚µ‚Ä‚¨‚炸A’¼ÚJDBCƒRƒlƒNƒVƒ‡ƒ“‚ÆJTAƒŠƒ\[ƒX‚ðŽg—p‚µ‚Ü‚·B
-        JDBCAANSIA‚¨‚æ‚уf[ƒ^ƒx[ƒXŠÇ—ƒVƒXƒeƒ€iDBMSj‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“•ª—£‚ÌŽd—l‚ð
-        ­‚µŽžŠÔ‚ð‚©‚¯‚ĕ׋­‚·‚邱‚Æ‚ð‹­‚­„§‚µ‚Ü‚·B
+        Hibernateと同時実行制御について最も重要な点は、容易に理解できることです。
+        Hibernateは新たなロックの振る舞いを追加しておらず、直接JDBCコネクションとJTAリソースを使用します。
+        JDBC、ANSI、およびデータベース管理システム(DBMS)のトランザクション分離の仕様を
+        少し時間をかけて勉強することを強く推奨します。
     </para>
 
     <para>
-        Hibernate‚̓ƒ‚ƒŠ“à‚̃IƒuƒWƒFƒNƒg‚ðƒƒbƒN‚µ‚Ü‚¹‚ñB
-        ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚́Aƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì•ª—£ƒŒƒxƒ‹‚Å
-        ’è‹`‚µ‚½U‚é•‘‚¢‚ðŠú‘Ò‚Å‚«‚Ü‚·B
-        ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒXƒR[ƒv‚̃LƒƒƒbƒVƒ…‚Å‚à‚ ‚é <literal>Session</literal> ‚Ì‚¨‰A‚ŁA
-        Ž¯•ÊŽq‚âƒNƒGƒŠ‚É‚æ‚茟õ‚µ‚½ƒGƒ“ƒeƒBƒeƒB‚̓Šƒs[ƒ^ƒuƒ‹ƒŠ[ƒh‚É‚È‚è‚Ü‚·
-        iƒXƒJƒ‰[’l‚ð•Ô‚·‚悤‚ȃŒƒ|[ƒgƒNƒGƒŠ‚͈Ⴂ‚Ü‚·jB
+        Hibernateはメモリ内のオブジェクトをロックしません。
+        アプリケーションは、データベーストランザクションの分離レベルで
+        定義した振る舞いを期待できます。
+        トランザクションスコープのキャッシュでもある <literal>Session</literal> のお陰で、
+        識別子やクエリにより検索したエンティティはリピータブルリードになります
+        (スカラー値を返すようなレポートクエリは違います)。
     </para>
 
     <para>
-        ƒo[ƒWƒ‡ƒjƒ“ƒO‚É‚æ‚鎩“®“I‚ÈŠyŠÏ“I“¯ŽžŽÀs§Œä‚ɉÁ‚¦‚āA
-        <literal>SELECT FOR UPDATE</literal> •¶‚ðŽg—p‚µ‚āA
-        s‚ð”ߊϓIƒƒbƒN‚·‚邽‚߂́iƒ}ƒCƒi[‚ȁjAPI‚à’ñ‹Ÿ‚µ‚Ü‚·B
-        ŠyŠÏ“I“¯ŽžŽÀs§Œä‚Æ‚±‚ÌAPI‚ɂ‚¢‚ẮA‚±‚̏͂̌ã‚Ì‚Ù‚¤‚Å‹c˜_‚µ‚Ü‚·B
+        バージョニングによる自動的な楽観的同時実行制御に加えて、
+        <literal>SELECT FOR UPDATE</literal> 文を使用して、
+        行を悲観的ロックするための(マイナーな)APIも提供します。
+        楽観的同時実行制御とこのAPIについては、この章の後のほうで議論します。
     </para>
 
     <para>
-        ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚â’·‚¢‘ΘbiconversationAƒƒ“ƒOƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“j‚¾‚¯‚Å‚È‚­A
-        <literal>Configuration</literal>A<literal>SessionFactory</literal>A‚¨‚æ‚Ñ
+        データベーストランザクションや長い対話(conversation、ロングトランザクション)だけでなく、
+        <literal>Configuration</literal>、<literal>SessionFactory</literal>、および
         <literal>Session</literal>
-        ‚Æ‚¢‚¤—±“x‚ÅHibernate‚ªs‚¤“¯ŽžŽÀs§Œä‚Ì‹c˜_‚ðŽn‚ß‚Ü‚·B
+        という粒度でHibernateが行う同時実行制御の議論を始めます。
     </para>
 
     <sect1 id="transactions-basics" revision="1">
-        <title>sessionƒXƒR[ƒv‚ÆtransactionƒXƒR[ƒv</title>
+        <title>sessionスコープとtransactionスコープ</title>
 
         <para>
-            <literal>SessionFactory</literal> ‚͐¶¬‚·‚邱‚Æ‚ª‚‰¿‚ŁA
-            ƒXƒŒƒbƒhƒZ[ƒt‚ȃIƒuƒWƒFƒNƒg‚Å‚·B
-            ‚æ‚Á‚āAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì‚·‚ׂẴXƒŒƒbƒh‚Å‹¤—L‚·‚ׂ«‚Å‚·B
-            ’ʏíAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì‹N“®Žž‚ɁA
-            <literal>Configuration</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚©‚ç‚P“x‚¾‚¯¶¬‚µ‚Ü‚·B
+            <literal>SessionFactory</literal> は生成することが高価で、
+            スレッドセーフなオブジェクトです。
+            よって、アプリケーションのすべてのスレッドで共有すべきです。
+            通常、アプリケーションの起動時に、
+            <literal>Configuration</literal> インスタンスから1度だけ生成します。
         </para>
 
         <para>
-            <literal>Session</literal> ‚͍‚‰¿‚Å‚Í‚È‚­AƒXƒŒƒbƒhƒZ[ƒt‚ȃIƒuƒWƒFƒNƒg‚Å‚à‚ ‚è‚Ü‚¹‚ñB
-            ‚æ‚Á‚āA‚P‚‚̗v‹‚â‚P‚‚̑ΘbA‚P‚‚̍ì‹Æ’PˆÊiunit of workj‚ɑ΂µ‚Ä‚P“x‚¾‚¯Žg‚¢A
-            ‚»‚ÌŒã‚ÅŽÌ‚Ä‚é‚ׂ«‚Å‚·B
-            <literal>Session</literal> ‚Í•K—v‚É‚È‚é‚܂ŁA
-            JDBC <literal>Connection</literal>i‚à‚µ‚­‚Í <literal>DataSource</literal>j‚ðŠl“¾‚µ‚Ü‚¹‚ñB
-            ‚䂦‚ɁAŽÀÛ‚ÉŽg—p‚·‚é‚Æ‚«‚܂ŃŠƒ\[ƒX‚ðÁ”‚Ü‚¹‚ñB
+            <literal>Session</literal> は高価ではなく、スレッドセーフなオブジェクトでもありません。
+            よって、1つの要求や1つの対話、1つの作業単位(unit of work)に対して1度だけ使い、
+            その後で捨てるべきです。
+            <literal>Session</literal> は必要になるまで、
+            JDBC <literal>Connection</literal>(もしくは <literal>DataSource</literal>)を獲得しません。
+            ゆえに、実際に使用するときまでリソースを消費しません。
         </para>
 
         <para>
-            ‚±‚Ìó‹µ‚ðŠ®—¹‚³‚¹‚邽‚߂ɁA ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ɂ‚¢‚Ä‚àl‚¦‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-            ƒf[ƒ^ƒx[ƒX“à‚̃ƒbƒN‚Ì‹£‡‚ð­‚È‚­‚·‚邽‚߂ɁA
-            ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚͉”\‚ÈŒÀ‚è’Z‚­‚·‚é‚ׂ«‚Å‚·B
-            ’·‚¢ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚́AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̍‚‚¢•À—ñŽÀs«‚ð‘jŠQ‚µ‚Ü‚·B
-            ‚䂦‚ɁAƒ†[ƒU[‚ªl‚¦‚Ä‚¢‚éŠÔiì‹Æ’PˆÊ‚ªŠ®—¹‚·‚é‚܂Łjƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ð
-            ŠJ‚¢‚½‚Ü‚Ü‚É‚·‚é‚̂́A‚½‚¢‚Ä‚¢‚̏ꍇ‚æ‚¢ÝŒv‚Æ‚Í‚¢‚¦‚Ü‚¹‚ñB
+            この状況を完了させるために、 データベーストランザクションについても考えなければなりません。
+            データベース内のロックの競合を少なくするために、
+            データベーストランザクションは可能な限り短くするべきです。
+            長いデータベーストランザクションは、アプリケーションの高い並列実行性を阻害します。
+            ゆえに、ユーザーが考えている間(作業単位が完了するまで)データベーストランザクションを
+            開いたままにするのは、たいていの場合よい設計とはいえません。
         </para>
 
         <para>
-            ì‹Æ’PˆÊ‚Æ‚¢‚¤ƒXƒR[ƒv‚Ƃ͉½‚Å‚µ‚傤‚©H
-            ‚P‚‚ÌHibernate <literal>Session</literal> ‚́A
-            ‚¢‚­‚‚©‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ð‚Ü‚½‚ª‚邱‚Æ‚ª‚Å‚«‚é‚Å‚µ‚傤‚©H
-            ‚Ü‚½‚́AƒXƒR[ƒv‚ƈê‘Έê‚ÌŠÖŒW‚Å‚µ‚傤‚©H
-            ‚¢‚ <literal>Session</literal> ‚ðŠJ‚«A•Â‚¶‚é‚ׂ«‚Å‚µ‚傤‚©H
-            ‚»‚µ‚āAƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ð‚ǂ̂悤‚É•ª‚¯‚é‚Ì‚Å‚µ‚傤‚©H
+            作業単位というスコープとは何でしょうか?
+            1つのHibernate <literal>Session</literal> は、
+            いくつかのデータベーストランザクションをまたがることができるでしょうか?
+            または、スコープと一対一の関係でしょうか?
+            いつ <literal>Session</literal> を開き、閉じるべきでしょうか?
+            そして、データベーストランザクション境界をどのように分けるのでしょうか?
         </para>
 
         <sect2 id="transactions-basics-uow" revision="1">
-            <title>ì‹Æ’PˆÊiUnit of workj</title>
+            <title>作業単位(Unit of work)</title>
 
             <para>
-                ‚P‚–ڂ́A<emphasis>session-per-operation</emphasis> ƒAƒ“ƒ`ƒpƒ^[ƒ“‚ðŽg‚Á‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñB
-                ‚·‚È‚í‚¿A‚P‚‚̃XƒŒƒbƒh‚Ì’†‚ŁA’Pƒ‚ȃf[ƒ^ƒx[ƒXŒÄ‚яo‚µ‚Ì‚½‚Ñ‚É
-                <literal>Session</literal> ‚ðŠJ‚¢‚āA•Â‚¶‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñI
-                ‚à‚¿‚ë‚ñAƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ɂ‚¢‚Ä‚à“¯—l‚Å‚·B
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“’†‚̃f[ƒ^ƒx[ƒXŒÄ‚яo‚µ‚́A
-                Œv‰æ‚³‚ꂽƒV[ƒPƒ“ƒXiplanned sequencej‚ðŽg‚¢A
-                ƒAƒgƒ~ƒbƒN‚ȍì‹Æ’PˆÊ‚É•ª—Þ‚³‚ê‚Ü‚·B
-                i‚P‚‚ÌSQL•¶‚²‚ƂɃRƒ~ƒbƒg‚·‚鎩“®ƒRƒ~ƒbƒg‚ªA
-                Žg‚í‚ê‚È‚¢‚Æ‚¢‚¤ˆÓ–¡‚Å‚à‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-                Ž©“®ƒRƒ~ƒbƒg‚́ASQLƒRƒ“ƒ\[ƒ‹‚ŃAƒhƒzƒbƒN‚ȍì‹Æ‚ð‚·‚éÛ‚ÉŽg‚¤‚à‚Ì‚Å‚·B
-                Hibernate‚Í’¼‚¿‚ÉŽ©“®ƒRƒ~ƒbƒgƒ‚[ƒh‚𖳌ø‚É‚µ‚Ü‚·B
-                ‚à‚µ‚­‚́AƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo[‚ª–³Œø‰»‚·‚邱‚Æ‚ðŠú‘Ò‚µ‚Ü‚·Bj
-                ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̓IƒvƒVƒ‡ƒ“‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-                ƒf[ƒ^ƒx[ƒX‚Æ‚Ì‚·‚ׂĂ̒ʐM‚́Aƒf[ƒ^‚̓ǂݍž‚Ý‚Å‚ ‚Á‚Ä‚àA‘‚«ž‚Ý‚Å‚ ‚Á‚Ä‚àA
-                ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì’†‚ōs‚í‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                à–¾‚·‚é‚ƁAƒf[ƒ^“ǂݍž‚݂ɑ΂µ‚āAŽ©“®ƒRƒ~ƒbƒg‚Í”ð‚¯‚é‚ׂ«‚Å‚·B
-                ‚È‚º‚È‚çA‘½”‚̏¬‚³‚ȃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚́A–¾Šm‚É’è‹`‚³‚ꂽ‚P‚‚̍ì‹Æ’PˆÊ‚Æ”ä‚ׂāA
-                ƒpƒtƒH[ƒ}ƒ“ƒX‚ª‚æ‚­‚Ȃ邱‚Æ‚Í‚ ‚è‚Ü‚¹‚ñB
-                ŒãŽÒ‚͕ێ琫‚âŠg’£«‚à‚æ‚è‚·‚®‚ê‚Ä‚¢‚Ü‚·B
+                1つ目は、<emphasis>session-per-operation</emphasis> アンチパターンを使ってはいけません。
+                すなわち、1つのスレッドの中で、単純なデータベース呼び出しのたびに
+                <literal>Session</literal> を開いて、閉じてはいけません!
+                もちろん、データベーストランザクションについても同様です。
+                アプリケーション中のデータベース呼び出しは、
+                計画されたシーケンス(planned sequence)を使い、
+                アトミックな作業単位に分類されます。
+                (1つのSQL文ごとにコミットする自動コミットが、
+                使われないという意味でもあることに注意してください。
+                自動コミットは、SQLコンソールでアドホックな作業をする際に使うものです。
+                Hibernateは直ちに自動コミットモードを無効にします。
+                もしくは、アプリケーションサーバーが無効化することを期待します。)
+                データベーストランザクションはオプションではありません。
+                データベースとのすべての通信は、データの読み込みであっても、書き込みであっても、
+                トランザクションの中で行わなければなりません。
+                説明すると、データ読み込みに対して、自動コミットは避けるべきです。
+                なぜなら、多数の小さなトランザクションは、明確に定義された1つの作業単位と比べて、
+                パフォーマンスがよくなることはありません。
+                後者は保守性や拡張性もよりすぐれています。
             </para>
 
             <para>
-                ƒ}ƒ‹ƒ`ƒ†[ƒU[‚̃Nƒ‰ƒCƒAƒ“ƒg^ƒT[ƒo[ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì’†‚ŁA
-                Å‚à‚æ‚­Žg‚í‚ê‚éƒpƒ^[ƒ“‚́A<emphasis>session-per-request</emphasis> ‚Å‚·B
-                ‚±‚̃‚ƒfƒ‹‚Ì’†‚ł́A
-                ƒNƒ‰ƒCƒAƒ“ƒg‚©‚çiHibernate‰i‘±‰»‘w‚ª“®ì‚·‚éjƒT[ƒo[‚ÖƒŠƒNƒGƒXƒg‚ª‘—‚ç‚êA
-                V‚µ‚¢Hibernate <literal>Session</literal> ‚ªŠJ‚©‚ê‚Ü‚·B
-                ‚»‚µ‚āA‚±‚̍ì‹Æ’PˆÊ‚Ì’†‚Å‚·‚ׂẴf[ƒ^ƒx[ƒXˆ—‚ªŽÀs‚³‚ê‚Ü‚·B
-                ì‹Æ‚ªŠ®—¹‚µ‚½i‚»‚µ‚āAƒNƒ‰ƒCƒAƒ“ƒg‚ւ̃ŒƒXƒ|ƒ“ƒX‚ª€”õ‚Å‚«‚½jŽž“_‚ŁA
-                session ‚ðƒtƒ‰ƒbƒVƒ…‚µA•Â‚¶‚Ü‚·B
-                ƒNƒ‰ƒCƒAƒ“ƒg‚Ì—v‹‚ðˆ—‚·‚邽‚߂ɁA‚P‚‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŽg—p‚·‚é‚Å‚µ‚傤B
-                <literal>Session</literal> ‚ðŠJ‚«A•Â‚¶‚éÛ‚ɁA
-                ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŠJŽn‚µAƒRƒ~ƒbƒg‚µ‚Ü‚·B
-                “ñ‚‚̊֌W‚͈ê‘Έê‚Å‚·B
-                ‚±‚̃‚ƒfƒ‹‚Í‘½‚­‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ÉŠ®‘S‚É“K‡‚µ‚Ü‚·B
+                マルチユーザーのクライアント/サーバーアプリケーションの中で、
+                最もよく使われるパターンは、<emphasis>session-per-request</emphasis> です。
+                このモデルの中では、
+                クライアントから(Hibernate永続化層が動作する)サーバーへリクエストが送られ、
+                新しいHibernate <literal>Session</literal> が開かれます。
+                そして、この作業単位の中ですべてのデータベース処理が実行されます。
+                作業が完了した(そして、クライアントへのレスポンスが準備できた)時点で、
+                session をフラッシュし、閉じます。
+                クライアントの要求を処理するために、1つのデータベーストランザクションを使用するでしょう。
+                <literal>Session</literal> を開き、閉じる際に、
+                データベーストランザクションを開始し、コミットします。
+                二つの関係は一対一です。
+                このモデルは多くのアプリケーションに完全に適合します。
             </para>
 
             <para>
-                ˆÈ~‚ÌŽÀ‘•‚Ƀ`ƒƒƒŒƒ“ƒW‚µ‚Ä‚­‚¾‚³‚¢B
-                <literal>Session</literal> ‚ðŽ‚¿Aƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚𐳊m‚ÉŠJŽn‚µAI‚í‚点‚邾‚¯‚Å‚È‚­A
-                ƒf[ƒ^ƒAƒNƒZƒX‘€ì‚à“¾‚â‚·‚­‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
-                ƒŠƒNƒGƒXƒg‚ªƒT[ƒo[‚Ƀqƒbƒg‚µ‚½Û‚ƁAƒŒƒXƒ|ƒ“ƒX‚𑗐M‚·‚é‘O‚ɁAŽÀs‚³‚ê‚éinterceptor
-                i—Ⴆ‚΁A<literal>ServletFilter</literal>j‚ðŽg‚Á‚āAì‹Æ’PˆÊ‚Ì‹«ŠE‚ðŽÀ‘•‚·‚é‚Ì‚ª—‘z“I‚Å‚·B
-                <literal>ThreadLocal</literal> •Ï”‚ðŽg‚Á‚āA
-                ƒŠƒNƒGƒXƒg‚ðˆ—‚·‚éƒXƒŒƒbƒh‚É <literal>Session</literal> ‚ðŒ‹‚Ñ‚Â‚¯‚邱‚Ƃ𐄏§‚µ‚Ü‚·B
-                ‚±‚ê‚É‚æ‚èAƒXƒŒƒbƒh“à‚ÅŽÀs‚³‚ê‚é‚·‚ׂẴR[ƒh‚ŁA
-                istatic•Ï”‚ɃAƒNƒZƒX‚·‚é‚悤‚ɁjŠÈ’P‚É <literal>Session</literal> ‚ɃAƒNƒZƒX‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚·B
-                ‘I‘ð‚µ‚½ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚Ì‹@\ŽŸ‘æ‚ŁA<literal>ThreadLocal</literal>
-                •Ï”‚Ì’†‚Ƀgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒRƒ“ƒeƒLƒXƒg‚ð•ÛŽ‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-                ‚±‚ÌŽÀ‘•ƒpƒ^[ƒ“‚́A<emphasis>ThreadLocal Session</emphasis> ‚¨‚æ‚Ñ
-                <emphasis>Open Session in View</emphasis> ‚Æ‚¢‚¤–¼‘O‚Å’m‚ç‚ê‚Ä‚¢‚Ü‚·B
-                –{ƒhƒLƒ…ƒƒ“ƒg‚Őæ‚ÉŒ©‚¹‚½ <literal>HibernateUtil</literal> ƒwƒ‹ƒp[ƒNƒ‰ƒX‚ðŠg’£‚·‚邱‚ƂŁA
-                ‚±‚̃pƒ^[ƒ“‚ð—eˆÕ‚ÉŽÀ‘•‚Å‚«‚Ü‚·B
-                ‚à‚¿‚ë‚ñAinterceptor ‚ðŽÀ‘•‚·‚é•û–@‚ðŒ©‚Â‚¯AŠÂ‹«‚ðƒZƒbƒgƒAƒbƒv‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
-                Hibernate‚ÌWebƒTƒCƒg‚É‚ ‚étips‚Æ—á‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                以降の実装にチャレンジしてください。
+                <literal>Session</literal> を持ち、トランザクションを正確に開始し、終わらせるだけでなく、
+                データアクセス操作も得やすくする必要があります。
+                リクエストがサーバーにヒットした際と、レスポンスを送信する前に、実行されるinterceptor
+                (例えば、<literal>ServletFilter</literal>)を使って、作業単位の境界を実装するのが理想的です。
+                <literal>ThreadLocal</literal> 変数を使って、
+                リクエストを処理するスレッドに <literal>Session</literal> を結びつけることを推奨します。
+                これにより、スレッド内で実行されるすべてのコードで、
+                (static変数にアクセスするように)簡単に <literal>Session</literal> にアクセスできるようになります。
+                選択したデータベーストランザクション境界の機構次第で、<literal>ThreadLocal</literal>
+                変数の中にトランザクションコンテキストを保持するかもしれません。
+                この実装パターンは、<emphasis>ThreadLocal Session</emphasis> および
+                <emphasis>Open Session in View</emphasis> という名前で知られています。
+                本ドキュメントで先に見せた <literal>HibernateUtil</literal> ヘルパークラスを拡張することで、
+                このパターンを容易に実装できます。
+                もちろん、interceptor を実装する方法を見つけ、環境をセットアップする必要があります。
+                HibernateのWebサイトにあるtipsと例を参照してください。
              </para>
 
             <para>
-                ˆÈ~‚ÌŽÀ‘•‚Ƀ`ƒƒƒŒƒ“ƒW‚µ‚Ä‚­‚¾‚³‚¢B
-                Hibernate‚Í’Pƒ‚È‚±‚̃pƒ^[ƒ“‚Ì‚½‚߂ɁA—\‚ß‘g‚ݍž‚܂ꂽ
-                ucurrent sessionv‚ÌŠÇ—‚ð’ñ‹Ÿ‚µ‚Ü‚·B
-                ƒT[ƒo[ƒŠƒNƒGƒXƒg‚ðˆ—‚·‚éÛ‚̓gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŠJŽn‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                ‚»‚µ‚āAƒŒƒXƒ|ƒ“ƒX‚ðƒNƒ‰ƒCƒAƒ“ƒg‚É‘—M‚·‚é‘O‚Ƀgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðI‚í‚点‚Ü‚·B
-                D‚«‚È•û–@‚ÅŽÀŒ»‚Å‚«‚Ü‚·Bˆê”Ê“I‚È‰ðŒˆô‚Í <literal>ServletFilter</literal> ‚â
-                ƒT[ƒrƒXƒƒ\ƒbƒh‚ðƒ|ƒCƒ“ƒgƒJƒbƒg‚µ‚ÄAOPƒCƒ“ƒ^[ƒZƒvƒ^[A
-                proxy/interception ƒRƒ“ƒeƒi‚Å‚·B
-                EJBƒRƒ“ƒeƒi‚ÍEJBƒZƒbƒVƒ‡ƒ“ƒr[ƒ“‚ðƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚Æ‚µ‚Ä
-                ƒAƒXƒyƒNƒg‚ðƒNƒƒXƒJƒbƒg‚·‚éŽÀ‘•‚Ì•W€“I‚È•û–@‚Å‚·iCMT‚É‚æ‚ééŒ¾“IjB
-                ƒvƒƒOƒ‰ƒ€‚É‚æ‚éƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ðŽg‚¤‚ÆŒˆ‚ß‚½ê‡A
-                ŠÈ’P‚ÉŽg‚¤‚½‚߁AŒÝŠ·«‚Ì‚ ‚éƒR[ƒh‚É‚·‚邽‚߂ɁA
-                ‚±‚̏͂̌ã‚Ì‚Ù‚¤‚É‚ ‚éHibernate <literal>Transaction</literal> API‚Ì‚Ù‚¤‚ª‚æ‚¢‚Å‚·B
+                以降の実装にチャレンジしてください。
+                Hibernateは単純なこのパターンのために、予め組み込まれた
+                「current session」の管理を提供します。
+                サーバーリクエストを処理する際はトランザクションを開始しなければなりません。
+                そして、レスポンスをクライアントに送信する前にトランザクションを終わらせます。
+                好きな方法で実現できます。一般的な解決策は <literal>ServletFilter</literal> や
+                サービスメソッドをポイントカットしてAOPインターセプター、
+                proxy/interception コンテナです。
+                EJBコンテナはEJBセッションビーンをトランザクション境界として
+                アスペクトをクロスカットする実装の標準的な方法です(CMTによる宣言的)。
+                プログラムによるトランザクション境界を使うと決めた場合、
+                簡単に使うため、互換性のあるコードにするために、
+                この章の後のほうにあるHibernate <literal>Transaction</literal> APIのほうがよいです。
             </para>
 
             <para>
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃R[ƒh‚́A•K—v‚È‚Æ‚«‚É‚Ç‚±‚Å‚àA‰½‰ñ‚Å‚àA
-                ’P‚É <literal>sessionFactory.getCurrentSession()</literal> ‚ðŒÄ‚яo‚·‚¾‚¯‚Å
-                uŒ»Ý‚̃ZƒbƒVƒ‡ƒ“v‚ɃAƒNƒZƒX‚Å‚«‚Ü‚·B
-                Œ»Ý‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ö‚Ì <literal>ƒZƒbƒVƒ‡ƒ“</literal> ‚ðí‚Ɏ擾‚µ‚Ü‚·B
-                ƒŠƒ\[ƒXEƒ[ƒJƒ‹‚Ȋ‹«A‚à‚µ‚­‚ÍJTAŠÂ‹«‚ð\¬‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ
-                i<xref linkend="architecture-current-session"/> ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢jB
+                アプリケーションのコードは、必要なときにどこでも、何回でも、
+                単に <literal>sessionFactory.getCurrentSession()</literal> を呼び出すだけで
+                「現在のセッション」にアクセスできます。
+                現在のデータベーストランザクションへの <literal>セッション</literal> を常に取得します。
+                リソース・ローカルな環境、もしくはJTA環境を構成しなければなりません
+                (<xref linkend="architecture-current-session"/> を参照してください)。
             </para>
 
             <para>
-                ‚Æ‚«‚Ç‚«Auƒrƒ…[‚ð•`‰æ‚·‚év‚Ü‚Å <literal>ƒZƒbƒVƒ‡ƒ“</literal>
-                ‚ƃf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃XƒR[ƒv‚ðŠg’£‚·‚é‚Æ•Ö—˜‚È‚±‚Æ‚ª‚ ‚è‚Ü‚·B
-                ‚±‚ê‚́A—v‹‚̏ˆ—‚Æ•`‰æ‚̃tƒF[ƒY‚𕪂¯‚Ä‚¢‚é
-                ƒT[ƒuƒŒƒbƒgƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚¨‚¢‚Ä“Á‚ɖ𗧂¿‚Ü‚·B
-                “ÆŽ©‚̃Cƒ“ƒ^[ƒZƒvƒ^‚ðŽÀ‘•‚·‚ê‚΁A
-                ƒrƒ…[‚ð•`‰æ‚·‚é‚܂Ńf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŠg’£‚·‚é‚Ì‚ÍŠÈ’P‚Å‚·B
-                ‚µ‚©‚µAƒRƒ“ƒeƒiŠÇ—ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌEJB‚É—Š‚éê‡‚́AŠÈ’P‚É‚Í‚Å‚«‚Ü‚¹‚ñB
-                ‚È‚º‚È‚çAƒrƒ…[‚Ì•`‰æ‚ðŠJŽn‚·‚é‘O‚ɁAEJB‚̃ƒ\ƒbƒh‚ªƒŠƒ^[ƒ“‚µ‚½Û‚ɁA
-                ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŠ®—¹‚·‚邽‚ß‚Å‚·B
-                ‚±‚Ì <emphasis>Open Session in View</emphasis> ƒpƒ^[ƒ“‚ÉŠÖ˜A‚·‚éƒqƒ“ƒg‚Æ—á‚ɂ‚¢‚ẮA
-                Hibernate‚ÌWebƒTƒCƒg‚âƒtƒH[ƒ‰ƒ€‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                ときどき、「ビューを描画する」まで <literal>セッション</literal>
+                とデータベーストランザクションのスコープを拡張すると便利なことがあります。
+                これは、要求の処理と描画のフェーズを分けている
+                サーブレットアプリケーションにおいて特に役立ちます。
+                独自のインターセプタを実装すれば、
+                ビューを描画するまでデータベーストランザクションを拡張するのは簡単です。
+                しかし、コンテナ管理トランザクションのEJBに頼る場合は、簡単にはできません。
+                なぜなら、ビューの描画を開始する前に、EJBのメソッドがリターンした際に、
+                トランザクションが完了するためです。
+                この <emphasis>Open Session in View</emphasis> パターンに関連するヒントと例については、
+                HibernateのWebサイトやフォーラムを参照してください。
              </para>
 
         </sect2>
 
         <sect2 id="transactions-basics-apptx" revision="1">
-            <title>’·‚¢‘Θb</title>
+            <title>長い対話</title>
 
             <para>
-                session-per-requestƒpƒ^[ƒ“‚́Aì‹Æ’PˆÊ‚ðÝŒv‚·‚éÛ‚ɖ𗧂l‚¦‚Æ‚¢‚¤‚¾‚¯‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-                ‘½‚­‚̃rƒWƒlƒXƒvƒƒZƒX‚́Aƒ†[ƒU[‚Ƃ̈ê˜A‚Ì‘ŠŒÝì—p‘S‘Ì‚ð—v‹‚µ‚Ü‚·B
-                ‚»‚Ì‘ŠŒÝì—p‚ɂ́Aƒf[ƒ^ƒx[ƒXƒAƒNƒZƒX‚ªŠÜ‚Ü‚ê‚Ü‚·B
+                session-per-requestパターンは、作業単位を設計する際に役立つ考えというだけではありません。
+                多くのビジネスプロセスは、ユーザーとの一連の相互作用全体を要求します。
+                その相互作用には、データベースアクセスが含まれます。
                 
-                Web‚ƃGƒ“ƒ^[ƒvƒ‰ƒCƒYƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ł́Aƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ª
-                ƒ†[ƒU‚Æ‚Ì‘ŠŒÝì—p‚É‚Ü‚Å“n‚邱‚Æ‚Í‹–‚³‚ê‚Ü‚¹‚ñB
+                Webとエンタープライズアプリケーションでは、データベーストランザクションが
+                ユーザとの相互作用にまで渡ることは許されません。
                 
-                ŽŸ‚Ì—á‚ð‚æ‚­l‚¦‚Ä‚Ý‚Ä‚­‚¾‚³‚¢B
+                次の例をよく考えてみてください。
             </para>
 
             <itemizedlist>
                 <listitem>
                     <para>
-                        ƒ_ƒCƒAƒƒO‚̍ŏ‰‚̉æ–Ê‚ªŠJ‚«AŒÂX‚Ì <literal>Session</literal>
-                        ‚ƃf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì’†‚э[ƒh‚³‚ꂽƒf[ƒ^‚ðƒ†[ƒU[‚ÉŒ©‚¹‚Ü‚·B
-                        ƒ†[ƒU[‚̓IƒuƒWƒFƒNƒg‚ðŽ©—R‚ɏC³‚Å‚«‚Ü‚·B
+                        ダイアログの最初の画面が開き、個々の <literal>Session</literal>
+                        とデータベーストランザクションの中でロードされたデータをユーザーに見せます。
+                        ユーザーはオブジェクトを自由に修正できます。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        5•ªŒã‚Ƀ†[ƒU[‚́uSavev‚ðƒNƒŠƒbƒN‚µAC³‚ª‰i‘±‰»‚³‚ê‚é‚Ì‚ðŠú‘Ò‚µ‚Ü‚·B
-                        ‚Ü‚½A‚±‚̏î•ñ‚ð•ÒW‚µ‚½‚Ì‚ÍŽ©•ª‚Pl‚¾‚¯‚ŁA
-                        C³‚̃Rƒ“ƒtƒŠƒNƒg‚Í”­¶‚µ‚È‚¢‚ÆŠú‘Ò‚µ‚Ü‚·B
+                        5分後にユーザーは「Save」をクリックし、修正が永続化されるのを期待します。
+                        また、この情報を編集したのは自分1人だけで、
+                        修正のコンフリクトは発生しないと期待します。
                     </para>
                 </listitem>
             </itemizedlist>
 
             <para>
-                ‚±‚̍ì‹Æ’PˆÊ‚ðiƒ†[ƒU[‚ÌŽ‹“_‚Łj’·Šú‚Ì <emphasis>‘Θb</emphasis>
-                i‚à‚µ‚­‚́A<emphasis>ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“</emphasis> j‚ƌĂт܂·B
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚±‚ê‚ðŽÀ‘•‚·‚é•û–@‚Í‚½‚­‚³‚ñ‚ ‚è‚Ü‚·B
+                この作業単位を(ユーザーの視点で)長期の <emphasis>対話</emphasis>
+                (もしくは、<emphasis>アプリケーショントランザクション</emphasis> )と呼びます。
+                アプリケーションにこれを実装する方法はたくさんあります。
             </para>
 
             <para>
-                Å‰‚ÉŽv‚¢‚‚­ŽÀ‘•‚́Aƒ†[ƒU[‚ªl‚¦‚Ä‚¢‚éŠÔA<literal>Session</literal>
-                ‚ƃf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŠJ‚¢‚½‚Ü‚Ü‚É‚µ‚Ä‚¨‚­‚±‚Æ‚Å‚·B
-                “¯Žž‚ɏC³‚³‚ꂸA•ª—£‚ÆŒ´Žq«‚ª•ÛØ‚³‚ê‚é‚悤‚ɁA
-                ƒf[ƒ^ƒx[ƒX“à‚̃ƒbƒN‚Í•ÛŽ‚µ‚½‚Ü‚Ü‚É‚µ‚Ü‚·B
-                ‚à‚¿‚ë‚ñA‚±‚ê‚̓Aƒ“ƒ`ƒpƒ^[ƒ“‚Å‚·B
-                ‚È‚º‚È‚çAƒƒbƒN‚Ì‹£‡‚ª”­¶‚·‚é‚ƁA
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª“¯Žžƒ†[ƒU[”‚ɉž‚¶‚ăXƒP[ƒ‹ƒAƒbƒv‚Å‚«‚È‚­‚È‚é‚©‚ç‚Å‚·B
+                最初に思いつく実装は、ユーザーが考えている間、<literal>Session</literal>
+                とデータベーストランザクションを開いたままにしておくことです。
+                同時に修正されず、分離と原子性が保証されるように、
+                データベース内のロックは保持したままにします。
+                もちろん、これはアンチパターンです。
+                なぜなら、ロックの競合が発生すると、
+                アプリケーションが同時ユーザー数に応じてスケールアップできなくなるからです。
             </para>
 
             <para>
-                –¾‚ç‚©‚ɁA‘Θb‚ðŽÀ‘•‚·‚邽‚߂ɂ́A
-                ‚¢‚­‚‚©‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŽg—p‚·‚é‚ׂ«‚Å‚·B
-                ‚±‚̏ꍇAƒrƒWƒlƒXƒvƒƒZƒX‚Ì•ª—£‚ðˆÛŽ‚·‚邱‚Ƃ́A
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‘w‚̐Ӗ±‚Ì‚P‚‚ɂȂè‚Ü‚·B
-                ‚P‚‚̑Θb‚́A
-                ’ʏ킢‚­‚‚©‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚É‹y‚Ñ‚Ü‚·B
-                ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì‚P‚‚̂݁iÅŒã‚Ì‚P‚j‚ªXV‚µ‚½ƒf[ƒ^‚ð•Û‘¶‚µA
-                ‘¼‚̓f[ƒ^‚ð“Ç‚Þ‚¾‚¯‚Å‚ ‚ê‚΁A‚»‚ê‚̓Aƒgƒ~ƒbƒN‚Å‚·
-                i—Ⴆ‚΁A‚¢‚­‚‚©‚Ì—v‹^‰ž“š‚ðŒJ‚è•Ô‚·ƒEƒBƒU[ƒhŒ`Ž®‚̃_ƒCƒAƒƒOjB
-                ‚±‚ê‚Í•·‚­‚æ‚èAŽÀ‘•‚µ‚½‚Ù‚¤‚ªŠÈ’P‚Å‚·B
-                Hibernate‚Ì‹@”\‚ðŽg‚¤‚Ì‚Å‚ ‚ê‚΁A“Á‚ÉŠÈ’P‚Å‚·B
+                明らかに、対話を実装するためには、
+                いくつかのデータベーストランザクションを使用するべきです。
+                この場合、ビジネスプロセスの分離を維持することは、
+                アプリケーション層の責務の1つになります。
+                1つの対話は、
+                通常いくつかのデータベーストランザクションに及びます。
+                データベーストランザクションの1つのみ(最後の1つ)が更新したデータを保存し、
+                他はデータを読むだけであれば、それはアトミックです
+                (例えば、いくつかの要求/応答を繰り返すウィザード形式のダイアログ)。
+                これは聞くより、実装したほうが簡単です。
+                Hibernateの機能を使うのであれば、特に簡単です。
             </para>
 
             <itemizedlist>
                 <listitem>
                     <para>
-                        <emphasis>Ž©“®ƒo[ƒWƒ‡ƒjƒ“ƒO</emphasis>
-                        - Hibernate‚ÍŽ©“®“I‚ÉŠyŠÏ“I“¯ŽžŽÀs§Œä‚ª‚Å‚«‚Ü‚·B
-                        ƒ†[ƒU[‚ªl‚¦‚Ä‚¢‚éŠÔ‚É“¯Žž‚ɏC³‚ª‚¨‚«‚½ê‡AŽ©“®“I‚ÉŒŸo‚Å‚«‚Ü‚·B
-                        ’ʏíA‘Θb‚̏I—¹Žž‚Ƀ`ƒFƒbƒN‚·‚邾‚¯‚Å‚·B
+                        <emphasis>自動バージョニング</emphasis>
+                        - Hibernateは自動的に楽観的同時実行制御ができます。
+                        ユーザーが考えている間に同時に修正がおきた場合、自動的に検出できます。
+                        通常、対話の終了時にチェックするだけです。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        <emphasis>•ª—£iDetachedjƒIƒuƒWƒFƒNƒg</emphasis> - ‚·‚Å‚É‹c˜_‚µ‚½
-                        <emphasis>session-per-request</emphasis> ƒpƒ^[ƒ“‚ðŽg‚¤‚ÆŒˆ’肵‚½ê‡A
-                        ƒ[ƒh‚³‚ꂽ‚·‚ׂẴCƒ“ƒXƒ^ƒ“ƒX‚́Aƒ†[ƒU‚ªl‚¦‚Ä‚¢‚éŠÔ‚́A
-                        ƒZƒbƒVƒ‡ƒ“‚©‚番—£‚³‚ꂽó‘Ô‚É‚È‚è‚Ü‚·B
-                        ƒIƒuƒWƒFƒNƒg‚ðƒZƒbƒVƒ‡ƒ“‚ɍĒljÁ‚µAC³‚ð‰i‘±‰»‚Å‚«‚Ü‚·B
-                        ‚±‚ê‚ð <emphasis>session-per-request-with-detached-objects</emphasis>
-                        ƒpƒ^[ƒ“‚ƌĂт܂·B
-                        Ž©“®ƒo[ƒWƒ‡ƒjƒ“ƒO‚ðŽg‚¤‚±‚ƂŁA“¯Žž‚ɍs‚í‚ê‚éC³‚𕪗£‚Å‚«‚Ü‚·B
+                        <emphasis>分離(Detached)オブジェクト</emphasis> - すでに議論した
+                        <emphasis>session-per-request</emphasis> パターンを使うと決定した場合、
+                        ロードされたすべてのインスタンスは、ユーザが考えている間は、
+                        セッションから分離された状態になります。
+                        オブジェクトをセッションに再追加し、修正を永続化できます。
+                        これを <emphasis>session-per-request-with-detached-objects</emphasis>
+                        パターンと呼びます。
+                        自動バージョニングを使うことで、同時に行われる修正を分離できます。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        <emphasis>Šg’£i‚à‚µ‚­‚́A’·‚¢jƒZƒbƒVƒ‡ƒ“</emphasis>
-                        - Hibernate‚Ì <literal>Session</literal> ‚́A
-                        ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðƒRƒ~ƒbƒg‚µ‚½ŒãA
-                        — ‚ÅŒ‹‚т‚¢‚Ä‚¢‚éJDBCƒRƒlƒNƒVƒ‡ƒ“‚ðØ’f‚Å‚«‚Ü‚·B
-                        ‚»‚µ‚āAƒNƒ‰ƒCƒAƒ“ƒg‚©‚ç‚̐V‚µ‚¢—v‹‚ª”­¶‚µ‚½Û‚ɁAÄÚ‘±‚Å‚«‚Ü‚·B
-                        ‚±‚̃pƒ^[ƒ“‚́A<emphasis>session-per-conversation</emphasis>
-                        ‚Æ‚¢‚¤–¼‚Å’m‚ç‚ê‚Ä‚¨‚èAƒIƒuƒWƒFƒNƒg‚ðƒZƒbƒVƒ‡ƒ“‚֍ĒljÁ‚·‚邱‚Æ‚³‚¦•s—v‚É‚µ‚Ü‚·B
-                        Ž©“®ƒo[ƒWƒ‡ƒjƒ“ƒO‚ðŽg‚¤‚±‚ƂŁA“¯Žž‚ɍs‚í‚ê‚éC³‚𕪗£‚Å‚«‚Ü‚·B
+                        <emphasis>拡張(もしくは、長い)セッション</emphasis>
+                        - Hibernateの <literal>Session</literal> は、
+                        データベーストランザクションをコミットした後、
+                        裏で結びついているJDBCコネクションを切断できます。
+                        そして、クライアントからの新しい要求が発生した際に、再接続できます。
+                        このパターンは、<emphasis>session-per-conversation</emphasis>
+                        という名で知られており、オブジェクトをセッションへ再追加することさえ不要にします。
+                        自動バージョニングを使うことで、同時に行われる修正を分離できます。
                         
-                        ’ʏí <literal>Session</literal> ‚ðŽ©“®“I‚Ƀtƒ‰ƒbƒVƒ…‚³‚¹‚¸A
-                        –¾Ž¦“I‚Ƀtƒ‰ƒbƒVƒ…‚µ‚Ü‚·B
+                        通常 <literal>Session</literal> を自動的にフラッシュさせず、
+                        明示的にフラッシュします。
                     </para>
                 </listitem>
             </itemizedlist>
 
             <para>
-                <emphasis>session-per-request-with-detached-objects</emphasis> ‚Æ
-                <emphasis>session-per-conversation</emphasis> ‚Ì‚Q‚‚́A
-                —˜“_‚ÆŒ‡“_‚ðŽ‚Á‚Ä‚¢‚Ü‚·B
-                ‚±‚ê‚ɂ‚¢‚ẮA‚±‚̏͂̌ã‚Ì‚Ù‚¤‚ŁAŠyŠÏ“I“¯ŽžŽÀs§Œä‚Ì•¶–¬‚Ì’†‚Å‹c˜_‚µ‚Ü‚·B
+                <emphasis>session-per-request-with-detached-objects</emphasis> と
+                <emphasis>session-per-conversation</emphasis> の2つは、
+                利点と欠点を持っています。
+                これについては、この章の後のほうで、楽観的同時実行制御の文脈の中で議論します。
             </para>
 
         </sect2>
 
         <sect2 id="transactions-basics-identity">
-            <title>ƒIƒuƒWƒFƒNƒgŽ¯•ÊŽq‚ðl‚¦‚é</title>
+            <title>オブジェクト識別子を考える</title>
 
             <para>
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚́A‚Q‚‚̈قȂé <literal>Session</literal> ‚©‚ç
-                “¯‚¶‰i‘±ó‘Ô‚É“¯Žž‚ɃAƒNƒZƒX‚Å‚«‚Ü‚·B
-                ‚µ‚©‚µA‚Q‚Â‚Ì <literal>Session</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚ª
-                ‰i‘±«ƒNƒ‰ƒX‚Ì‚P‚‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð‹¤—L‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB
-                ‚䂦‚ɁAŽ¯•ÊŽq‚É‚Í‚Q‚‚̈قȂéŠT”O‚ª‚ ‚é‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B
+                アプリケーションは、2つの異なる <literal>Session</literal> から
+                同じ永続状態に同時にアクセスできます。
+                しかし、2つの <literal>Session</literal> インスタンスが
+                永続性クラスの1つのインスタンスを共有することはできません。
+                ゆえに、識別子には2つの異なる概念があるということになります。
             </para>
 
             <variablelist spacing="compact">
                 <varlistentry>
-                    <term>ƒf[ƒ^ƒx[ƒXŽ¯•ÊŽq</term>
+                    <term>データベース識別子</term>
                     <listitem>
                         <para>
                             <literal>foo.getId().equals( bar.getId() )</literal>
@@ -301,7 +303,7 @@
                     </listitem>
                 </varlistentry>
                 <varlistentry>
-                    <term>JVMŽ¯•ÊŽq</term>
+                    <term>JVM識別子</term>
                     <listitem>
                         <para>
                             <literal>foo==bar</literal>
@@ -311,105 +313,105 @@
             </variablelist>
 
             <para>
-                <emphasis>ŒÂX‚Ì</emphasis> <literal>Session</literal> ‚ɒljÁ‚³‚ꂽƒIƒuƒWƒFƒNƒg‚É‚Æ‚Á‚Ä
-                i‚·‚È‚í‚¿A‚P‚Â‚Ì <literal>Session</literal> ‚̃XƒR[ƒv‚Ì’†‚ł́jA‚Q‚‚̊T”O‚Í“¯‚¶‚Å‚·B
-                ƒf[ƒ^ƒx[ƒX“¯ˆê«‚ÆJVM“¯ˆê«‚ªˆê’v‚·‚邱‚Æ‚ðAHibernate‚ª•ÛØ‚µ‚Ü‚·B
-                ‚µ‚©‚µAƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª‚Q‚‚̈قȂéƒZƒbƒVƒ‡ƒ“‚©‚ç
-                u“¯‚¶vi‰i‘±«Ž¯•ÊŽq‚́jƒrƒWƒlƒXƒIƒuƒWƒFƒNƒg‚É“¯Žž‚ɃAƒNƒZƒX‚·‚éŒÀ‚èA
-                ‚Q‚‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ÍŽÀÛ‚ɁiJVMŽ¯•ÊŽq‚ªjuˆÙ‚È‚èv‚Ü‚·B
-                ŠyŠÏ“IƒAƒvƒ[ƒ`‚É‚æ‚Á‚āAiŽ©“®ƒo[ƒWƒ‡ƒjƒ“ƒO‚́jƒtƒ‰ƒbƒVƒ…^ƒRƒ~ƒbƒgŽž‚É
-                ƒRƒ“ƒtƒŠƒNƒg‚ª‰ðŒˆ‚³‚ê‚Ü‚·B
+                <emphasis>個々の</emphasis> <literal>Session</literal> に追加されたオブジェクトにとって
+                (すなわち、1つの <literal>Session</literal> のスコープの中では)、2つの概念は同じです。
+                データベース同一性とJVM同一性が一致することを、Hibernateが保証します。
+                しかし、アプリケーションが2つの異なるセッションから
+                「同じ」(永続性識別子の)ビジネスオブジェクトに同時にアクセスする限り、
+                2つのインスタンスは実際に(JVM識別子が)「異なり」ます。
+                楽観的アプローチによって、(自動バージョニングの)フラッシュ/コミット時に
+                コンフリクトが解決されます。
             </para>
 
             <para>
-                ‚±‚̃Aƒvƒ[ƒ`‚ł́AHibernate‚ƃf[ƒ^ƒx[ƒX‚É“¯ŽžŽÀs‚ɂ‚¢‚Ă̐S”z‚ªŽc‚è‚Ü‚·B
-                ˆê•û‚ŁAÅ‚‚̃XƒP[ƒ‰ƒrƒŠƒeƒB‚ª’ñ‹Ÿ‚³‚ê‚Ü‚·B
-                ‚È‚º‚È‚çA‚PƒXƒŒƒbƒh‚̍ì‹Æ’PˆÊ‚Ì’†‚ňêˆÓ«‚ª•ÛØ‚³‚ê‚ê‚΁A
-                ‚‰¿‚ȃƒbƒN‚⓯Šú‰»‚ª•s—v‚ɂȂ邽‚ß‚Å‚·B
-                <literal>Session</literal> ‚²‚Æ‚É‚P‚‚̃XƒŒƒbƒh‚ð“\‚è•t‚¯‚éŒÀ‚èA
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̓rƒWƒlƒXƒIƒuƒWƒFƒNƒg‚ðsynchronize‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB
-                <literal>Session</literal> “à‚ł́AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̓IƒuƒWƒFƒNƒg‚ð”äŠr‚·‚邽‚߂ɁA
-                <literal>==</literal> ‚ðˆÀ‘S‚ÉŽg—p‚Å‚«‚Ü‚·B
+                このアプローチでは、Hibernateとデータベースに同時実行についての心配が残ります。
+                一方で、最高のスケーラビリティが提供されます。
+                なぜなら、1スレッドの作業単位の中で一意性が保証されれば、
+                高価なロックや同期化が不要になるためです。
+                <literal>Session</literal> ごとに1つのスレッドを貼り付ける限り、
+                アプリケーションはビジネスオブジェクトをsynchronizeする必要はありません。
+                <literal>Session</literal> 内では、アプリケーションはオブジェクトを比較するために、
+                <literal>==</literal> を安全に使用できます。
             </para>
 
             <para>
-                ‚¯‚ê‚Ç‚àA<literal>Session</literal> ‚ÌŠO‚Å <literal>==</literal>
-                ‚ðŽg‚¤ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚́A—\Šú‚µ‚È‚¢Œ‹‰Ê‚É‘˜‹ö‚µ‚Ü‚·B
-                ‚±‚ê‚Í—\Šú‚µ‚È‚¢êŠ‚Å‹N‚±‚肦‚Ü‚·B
-                —Ⴆ‚΁A‚Q‚‚̕ª—£ƒCƒ“ƒXƒ^ƒ“ƒX‚𓯂¶ <literal>Set</literal> ‚É
-                put‚µ‚½‚Æ‚«‚È‚Ç‚Å‚·B
-                —¼•û‚Æ‚à“¯‚¶ƒf[ƒ^ƒx[ƒXŽ¯•ÊŽq‚ðŽ‚¿‚Ü‚·i‚·‚È‚í‚¿A“¯‚¶s‚ð•\‚µ‚Ü‚·jB
-                ‚µ‚©‚µA•ª—£ó‘Ԃ̃Cƒ“ƒXƒ^ƒ“ƒX‚ÌJVMŽ¯•ÊŽq‚Í“–‘R•ÛØ‚³‚ê‚Ü‚¹‚ñB
-                ŠJ”­ŽÒ‚́A‰i‘±«ƒNƒ‰ƒX‚Ì <literal>equals()</literal> ‚Æ <literal>hashCode()</literal>
-                ƒƒ\ƒbƒh‚ðƒI[ƒo[ƒ‰ƒCƒh‚µAƒIƒuƒWƒFƒNƒg“™‰¿«‚ÌŠT”O‚ðŽÀ‘•‚·‚ׂ«‚Å‚·B
-                Œx‚ª‚P‚‚ ‚è‚Ü‚·B“™‰¿«‚ÌŽÀ‘•‚Ƀf[ƒ^ƒx[ƒXŽ¯•ÊŽq‚ðŽg‚í‚È‚¢‚Å‚­‚¾‚³‚¢B
-                ƒ†ƒj[ƒN‚ȁi•’Ê‚Í•s•Ï‚́j‘®«‚Ì‘g‚ݍ‡‚킹‚Å‚ ‚éƒrƒWƒlƒXƒL[‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B
-                ‚à‚µAˆêŽžƒIƒuƒWƒFƒNƒg‚ª‰i‘±‰»‚³‚ꂽê‡Aƒf[ƒ^ƒx[ƒXŽ¯•ÊŽq‚ª•Ï‚í‚è‚Ü‚·B
-                ˆêŽžƒIƒuƒWƒFƒNƒg‚ði’ʏ핪—£ƒCƒ“ƒXƒ^ƒ“ƒX‚Æ‹¤‚Ɂj <literal>Set</literal>
-                ‚É•ÛŽ‚·‚éê‡AƒnƒbƒVƒ…ƒR[ƒh‚ª•Ï‚í‚é‚Æ‚¢‚¤‚±‚Ƃ́A<literal>Set</literal>
-                ‚ÌŒ_–ñ‚ð”j‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
-                ƒrƒWƒlƒXƒL[‚Ì‚½‚ß‚Ì‘®«‚́Aƒf[ƒ^ƒx[ƒX‚ÌŽåƒL[‚قLjÀ’è‚·‚ׂ«‚Å‚Í‚È‚¢‚Å‚·B
-                ƒIƒuƒWƒFƒNƒg‚ª“¯‚¶ <literal>Set</literal> ‚Ì’†‚É‚¢‚éŠÔ‚¾‚¯AˆÀ’è‚ð•ÛØ‚·‚ׂ«‚Å‚·B
-                ‚±‚Ì–â‘è‚Ì‚æ‚è“O’ê“I‚È‹c˜_‚́AHibernate‚ÌWebƒTƒCƒg‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
-                ‚Ü‚½A‚±‚ê‚ÍHibernate‚Ì–â‘è‚Å‚Í‚È‚­A’P‚ÉJavaƒIƒuƒWƒFƒNƒg‚ÌŽ¯•ÊŽq‚â“™‰¿«‚ð
-                ‚ǂ̂悤‚ÉŽÀ‘•‚·‚ׂ«‚©‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
+                けれども、<literal>Session</literal> の外で <literal>==</literal>
+                を使うアプリケーションは、予期しない結果に遭遇します。
+                これは予期しない場所で起こりえます。
+                例えば、2つの分離インスタンスを同じ <literal>Set</literal> に
+                putしたときなどです。
+                両方とも同じデータベース識別子を持ちます(すなわち、同じ行を表します)。
+                しかし、分離状態のインスタンスのJVM識別子は当然保証されません。
+                開発者は、永続性クラスの <literal>equals()</literal> と <literal>hashCode()</literal>
+                メソッドをオーバーライドし、オブジェクト等価性の概念を実装すべきです。
+                警告が1つあります。等価性の実装にデータベース識別子を使わないでください。
+                ユニークな(普通は不変の)属性の組み合わせであるビジネスキーを使ってください。
+                もし、一時オブジェクトが永続化された場合、データベース識別子が変わります。
+                一時オブジェクトを(通常分離インスタンスと共に) <literal>Set</literal>
+                に保持する場合、ハッシュコードが変わるということは、<literal>Set</literal>
+                の契約を破るということです。
+                ビジネスキーのための属性は、データベースの主キーほど安定すべきではないです。
+                オブジェクトが同じ <literal>Set</literal> の中にいる間だけ、安定を保証すべきです。
+                この問題のより徹底的な議論は、HibernateのWebサイトを参照してください。
+                また、これはHibernateの問題ではなく、単にJavaオブジェクトの識別子や等価性を
+                どのように実装すべきかということです。
             </para>
 
         </sect2>
 
         <sect2 id="transactions-basics-issues">
-            <title>ˆê”Ê“I‚È–â‘è</title>
+            <title>一般的な問題</title>
 
              <para>
-                 <emphasis>session-per-user-session</emphasis> ‚Æ
-                 <emphasis>session-per-application</emphasis> ƒAƒ“ƒ`ƒpƒ^[ƒ“
-                 ‚ÍŽg‚Á‚Ä‚Í‚¢‚¯‚Ü‚¹‚ñi‚à‚¿‚ë‚ñA‚Ü‚ê‚É—áŠO‚ª‚ ‚è‚Ü‚·jB
-                 ’ˆÓF‰º‹L‚Ì–â‘è‚Ì‚¢‚­‚‚©‚́A„§‚³‚ê‚éƒpƒ^[ƒ“‚Æ‚µ‚Ä‚àoŒ»‚µ‚Ü‚·B
-                 ÝŒv‚ðŒˆ’è‚·‚é‘O‚ɁA— ‚̈Ӗ¡‚ð—‰ð‚·‚é‚悤‚É‚µ‚Ä‚­‚¾‚³‚¢B
+                 <emphasis>session-per-user-session</emphasis> と
+                 <emphasis>session-per-application</emphasis> アンチパターン
+                 は使ってはいけません(もちろん、まれに例外があります)。
+                 注意:下記の問題のいくつかは、推奨されるパターンとしても出現します。
+                 設計を決定する前に、裏の意味を理解するようにしてください。
              </para>
 
             <itemizedlist>
                 <listitem>
                     <para>
-                        <literal>Session</literal> ‚̓XƒŒƒbƒhƒZ[ƒt‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-                        HTTPƒŠƒNƒGƒXƒgAƒZƒbƒVƒ‡ƒ“BeanASwingƒ[ƒJ[‚̂悤‚ɁA
-                        “¯ŽžŽÀs‚ª‰Â”\‚È‚à‚Ì‚ª <literal>Session</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚ð‹¤—L‚·‚é‚ƁA
-                        ‹£‡ó‘Ô‚ðˆø‚«‹N‚±‚µ‚Ü‚·B
-                        iŒã‚Å‹c˜_‚·‚éj<literal>HttpSession</literal> ‚Ì’†‚Å
-                        Hibernate <literal>Session</literal> ‚ð•ÛŽ‚·‚éê‡A
-                        HttpSession‚ւ̃AƒNƒZƒX‚𓯊ú‰»‚·‚邱‚Æ‚ðl—¶‚·‚ׂ«‚Å‚·B
-                        ‚³‚à‚È‚¯‚ê‚΁Aƒ†[ƒU[‚ª\•ª‘‚­ƒŠƒ[ƒh‚ðƒNƒŠƒbƒN‚·‚é‚ƁA
-                        “¯Žž‚É‘–‚é‚Q‚‚̃XƒŒƒbƒh‚Ì’†‚ŁA“¯‚¶ <literal>Session</literal> ‚ªŽg‚í‚ê‚Ü‚·B
+                        <literal>Session</literal> はスレッドセーフではありません。
+                        HTTPリクエスト、セッションBean、Swingワーカーのように、
+                        同時実行が可能なものが <literal>Session</literal> インスタンスを共有すると、
+                        競合状態を引き起こします。
+                        (後で議論する)<literal>HttpSession</literal> の中で
+                        Hibernate <literal>Session</literal> を保持する場合、
+                        HttpSessionへのアクセスを同期化することを考慮すべきです。
+                        さもなければ、ユーザーが十分早くリロードをクリックすると、
+                        同時に走る2つのスレッドの中で、同じ <literal>Session</literal> が使われます。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        Hibernate‚ª—áŠO‚ð“Š‚°‚½ê‡‚́Aƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðƒ[ƒ‹ƒoƒbƒN‚µA
-                        ’¼‚¿‚É <literal>Session</literal> ‚ð•Â‚¶‚é‚ׂ«‚Å‚·iÚ×‚ðŒã‚Å‹c˜_‚µ‚Ü‚·jB
-                        <literal>Session</literal> ‚ªƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÉŒ‹‚Ñ•t‚¯‚ç‚ê‚Ä‚¢‚é‚Ì‚Å‚ ‚ê‚΁A
-                        ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð’âŽ~‚·‚ׂ«‚Å‚·B
-                        ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðƒ[ƒ‹ƒoƒbƒN‚µ‚Ä‚àAƒrƒWƒlƒXƒIƒuƒWƒFƒNƒg‚Í
-                        ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŠJŽn‚µ‚½‚Æ‚«‚̏ó‘Ô‚É–ß‚è‚Ü‚¹‚ñB
-                        ‚±‚ê‚́Aƒf[ƒ^ƒx[ƒX‚̏ó‘ԂƃrƒWƒlƒXƒIƒuƒWƒFƒNƒg‚Í“¯Šú‚µ‚Ä‚¢‚È‚¢‚±‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B
-                        ’ʏ킱‚ê‚Í–â‘è‚É‚È‚è‚Ü‚¹‚ñB
-                        ‚È‚º‚È‚çA—áŠO‚͉ñ•œ‚Å‚«‚È‚¢‚©‚ç‚Å‚·B
-                        ‚Æ‚É‚©‚­ƒ[ƒ‹ƒoƒbƒN‚µ‚½Œã‚É‚â‚è’¼‚·‚ׂ«‚Å‚·B
+                        Hibernateが例外を投げた場合は、データベーストランザクションをロールバックし、
+                        直ちに <literal>Session</literal> を閉じるべきです(詳細を後で議論します)。
+                        <literal>Session</literal> がアプリケーションに結び付けられているのであれば、
+                        アプリケーションを停止すべきです。
+                        データベーストランザクションをロールバックしても、ビジネスオブジェクトは
+                        トランザクションを開始したときの状態に戻りません。
+                        これは、データベースの状態とビジネスオブジェクトは同期していないことを意味します。
+                        通常これは問題になりません。
+                        なぜなら、例外は回復できないからです。
+                        とにかくロールバックした後にやり直すべきです。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        <literal>Session</literal> ‚͉i‘±ipersistentjó‘Ô‚Ì‚·‚ׂẴIƒuƒWƒFƒNƒg‚ð
-                        ƒLƒƒƒbƒVƒ…‚µ‚Ü‚·iHibernate‚ÍŠÄŽ‹‚µAƒ_[ƒeƒBó‘Ô‚©ƒ`ƒFƒbƒN‚µ‚Ü‚·jB
-                        ‚±‚ê‚́A’·‚¢ŠÔƒZƒbƒVƒ‡ƒ“‚ðŠJ‚¢‚½‚Ü‚Ü‚É‚·‚é‚©A
-                        ”ñí‚É‘½‚­‚̃f[ƒ^‚ðƒ[ƒh‚µ‘±‚¯‚é‚©‚µ‚½ê‡‚́A
-                        OutOfMemoryException‚ª”­¶‚·‚é‚Ü‚Å–³ŒÀ‚É‘å‚«‚­‚Ȃ邱‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B
-                        ‰ðŒˆô‚Ì‚P‚‚́A<literal>Session</literal> ƒLƒƒƒbƒVƒ…‚ðŠÇ—‚·‚邽‚߂ɁA
-                        <literal>clear()</literal> ‚© <literal>evict()</literal> ‚ðŒÄ‚Ô‚±‚Æ‚Å‚·B
-                        ‚µ‚©‚µA‘å‚«‚ȃf[ƒ^‚ðˆ—‚·‚é•K—v‚ª‚ ‚é‚È‚çA
-                        ‚½‚Ô‚ñƒXƒgƒAƒhƒvƒƒV[ƒWƒƒ‚ðl—¶‚·‚é‚ׂ«‚Å‚µ‚傤B
-                        ‚¢‚­‚‚©‚Ì‰ðŒˆô‚́A<xref linkend="batch"/> ‚ŏЉ‚ê‚Ä‚¢‚Ü‚·B
-                        ƒ†[ƒU[ƒZƒbƒVƒ‡ƒ“‚̊ԁA<literal>Session</literal> ‚ðŠJ‚¢‚½‚Ü‚Ü‚É‚·‚é‚Æ‚¢‚¤‚±‚Ƃ́A
-                        ƒf[ƒ^‚ªV‘N‚Å‚È‚­‚È‚éŠm—¦‚ª‚‚­‚Ȃ邱‚Æ‚ðˆÓ–¡‚µ‚Ü‚·B
+                        <literal>Session</literal> は永続(persistent)状態のすべてのオブジェクトを
+                        キャッシュします(Hibernateは監視し、ダーティ状態かチェックします)。
+                        これは、長い間セッションを開いたままにするか、
+                        非常に多くのデータをロードし続けるかした場合は、
+                        OutOfMemoryExceptionが発生するまで無限に大きくなることを意味します。
+                        解決策の1つは、<literal>Session</literal> キャッシュを管理するために、
+                        <literal>clear()</literal> か <literal>evict()</literal> を呼ぶことです。
+                        しかし、大きなデータを処理する必要があるなら、
+                        たぶんストアドプロシージャを考慮するべきでしょう。
+                        いくつかの解決策は、<xref linkend="batch"/> で紹介されています。
+                        ユーザーセッションの間、<literal>Session</literal> を開いたままにするということは、
+                        データが新鮮でなくなる確率が高くなることを意味します。
                     </para>
                 </listitem>
             </itemizedlist>
@@ -419,90 +421,90 @@
     </sect1>
 
     <sect1 id="transactions-demarcation">
-        <title>ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE</title>
+        <title>データベーストランザクション境界</title>
 
         <para>
-            ƒf[ƒ^ƒx[ƒXi‚à‚µ‚­‚̓VƒXƒeƒ€jƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì‹«ŠE‚́Aí‚É•K—v‚Å‚·B
-            ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŠO‚ŁAƒf[ƒ^ƒx[ƒX‚Ƃ̒ʐM‚Í‹N‚«‚Ü‚¹‚ñ
-            i‚±‚ê‚ÍŽ©“®ƒRƒ~ƒbƒgƒ‚[ƒh‚ÉŠµ‚ê‚Ä‚¢‚鑽‚­‚ÌŠJ”­ŽÒ‚ð¬—‚³‚¹‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñjB
-            “ǂݍž‚Þ‚¾‚¯‚Ì‘€ì‚É‚Å‚àA‚¢‚Â‚à–¾Šm‚ȃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ðŽg—p‚µ‚Ä‚­‚¾‚³‚¢B
-            •ª—£ƒŒƒxƒ‹‚ƃf[ƒ^ƒx[ƒX‚Ì”\—ÍŽŸ‘æ‚ŁA‚±‚ê‚Í•K—v‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñ‚ªA
-            í‚Ƀgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚𖾎¦“I‚ÉŽw’肵‚Ä‚àAƒ}ƒCƒiƒX–Ê‚Í‘S‚­‚ ‚è‚Ü‚¹‚ñB
+            データベース(もしくはシステム)トランザクションの境界は、常に必要です。
+            データベーストランザクションの外で、データベースとの通信は起きません
+            (これは自動コミットモードに慣れている多くの開発者を混乱させるかもしれません)。
+            読み込むだけの操作にでも、いつも明確なトランザクション境界を使用してください。
+            分離レベルとデータベースの能力次第で、これは必要ないかもしれませんが、
+            常にトランザクション境界を明示的に指定しても、マイナス面は全くありません。
             
-            Šm‚©‚ɁA‚P‚‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Í‘½”‚̏¬‚³‚ȃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚æ‚è
-            iƒf[ƒ^‚̓ǂݍž‚Ý‚Å‚ ‚Á‚Ä‚àjƒpƒtƒH[ƒ}ƒ“ƒX‚ª‚·‚®‚ê‚Ä‚¢‚Ü‚·B
+            確かに、1つのデータベーストランザクションは多数の小さなトランザクションより
+            (データの読み込みであっても)パフォーマンスがすぐれています。
         </para>
 
         <para>
-            J2EEŠÂ‹«‚ÉŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ó‘Ô
-            i‚·‚È‚í‚¿AƒXƒ^ƒ“ƒhƒAƒƒ“A’Pƒ‚ÈWeb‚âSwingƒAƒvƒŠƒP[ƒVƒ‡ƒ“j‚Å‚àA
-            ŠÇ—‚³‚ꂽó‘Ô‚Å‚àAHibernateƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðŽÀs‚Å‚«‚Ü‚·B
-            ŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ŠÂ‹«‚ł́AHiberante‚ªƒf[ƒ^ƒx[ƒX‚̃RƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹‚ð’ñ‹Ÿ‚µ‚Ü‚·B
-            ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ŠJ”­ŽÒ‚́Aƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ðŽè“®‚Őݒ肵‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-            Œ¾‚¢Š·‚¦‚é‚ƁAƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŠJŽnAƒRƒ~ƒbƒgAƒ[ƒ‹ƒoƒbƒN‚ð
-            ŠJ”­ŽÒŽ©g‚ªÝ’è‚·‚é•K—v‚ª‚ ‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
+            J2EE環境に管理されていない状態
+            (すなわち、スタンドアロン、単純なWebやSwingアプリケーション)でも、
+            管理された状態でも、Hibernateアプリケーションを実行できます。
+            管理されていない環境では、Hiberanteがデータベースのコネクションプールを提供します。
+            アプリケーション開発者は、トランザクション境界を手動で設定しなければなりません。
+            言い換えると、データベーストランザクションの開始、コミット、ロールバックを
+            開発者自身が設定する必要があるということです。
             
-            ’ʏíAŠÇ—‚³‚ꂽŠÂ‹«‚ł́AƒRƒ“ƒeƒiŠÇ—‚É‚æ‚éƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“iCMTj‚ª’ñ‹Ÿ‚³‚ê‚Ü‚·B
-            —Ⴆ‚΁AƒZƒbƒVƒ‡ƒ“Bean‚̃fƒvƒƒCƒƒ“ƒgƒfƒBƒXƒNƒŠƒvƒ^‚Ő錾“I‚É’è‹`‚µA
-            ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ð‘g‚Ý—§‚Ä‚Ü‚·B
-            ƒvƒƒOƒ‰ƒ€‚É‚æ‚éƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚Í‚à‚¤•K—v‚ ‚è‚Ü‚¹‚ñB
+            通常、管理された環境では、コンテナ管理によるトランザクション(CMT)が提供されます。
+            例えば、セッションBeanのデプロイメントディスクリプタで宣言的に定義し、
+            トランザクションを組み立てます。
+            プログラムによるトランザクション境界はもう必要ありません。
         </para>
 
         <para>
-            ‚µ‚©‚µ‚È‚ª‚çAŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ƒŠƒ\[ƒXEƒ[ƒJƒ‹‚Ȋ‹«‚Æ
-            JTA‚Ɉˑ¶‚µ‚½ƒVƒXƒeƒ€iCMT‚Å‚Í‚È‚­BMTj‚Ì—¼•û‚ɁA
-            ‰i‘±‰»‘w‚ðƒ|[ƒ^ƒuƒ‹‚ɕۂ‚̂́A‚µ‚΂µ‚Ζ]‚Ü‚µ‚¢‚±‚Æ‚Å‚·B
+            しかしながら、管理されていないリソース・ローカルな環境と
+            JTAに依存したシステム(CMTではなくBMT)の両方に、
+            永続化層をポータブルに保つのは、しばしば望ましいことです。
             
-            ƒfƒvƒƒCŠÂ‹«‚̃lƒCƒeƒBƒu‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒVƒXƒeƒ€‚ðŒÄ‚яo‚·
-            <literal>Transaction</literal> ‚Æ‚¢‚¤ƒ‰ƒbƒp[API‚ðHibernate‚ª’ñ‹Ÿ‚µ‚Ü‚·B
-            ‚±‚ÌAPI‚ðŽg‚¤‚©‚Í”CˆÓ‚Å‚·‚ªACMT‚̃ZƒbƒVƒ‡ƒ“Bean‚ðŽg‚í‚È‚¢‚Ì‚Å‚ ‚ê‚΁AŽg‚¤‚±‚Æ‚ð‹­‚­„§‚µ‚Ü‚·B
+            デプロイ環境のネイティブのトランザクションシステムを呼び出す
+            <literal>Transaction</literal> というラッパーAPIをHibernateが提供します。
+            このAPIを使うかは任意ですが、CMTのセッションBeanを使わないのであれば、使うことを強く推奨します。
         </para>
 
         <para>
-            ’ʏíA<literal>Session</literal> I—¹‚́A‚S‚‚̈قȂéƒtƒF[ƒY‚ðŠÜ‚Ý‚Ü‚·B
+            通常、<literal>Session</literal> 終了は、4つの異なるフェーズを含みます。
         </para>
 
         <itemizedlist spacing="compact">
             <listitem>
                 <para>
-                    ƒZƒbƒVƒ‡ƒ“‚̃tƒ‰ƒbƒVƒ…
+                    セッションのフラッシュ
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃Rƒ~ƒbƒg
+                    トランザクションのコミット
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    ƒZƒbƒVƒ‡ƒ“‚̃Nƒ[ƒY
+                    セッションのクローズ
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    —áŠO‚̃nƒ“ƒhƒŠƒ“ƒO
+                    例外のハンドリング
                 </para>
             </listitem>
         </itemizedlist>
 
         <para>
-            ƒZƒbƒVƒ‡ƒ“‚̃tƒ‰ƒbƒVƒ…‚ɂ‚¢‚ẮA‘O‚Ì‚Ù‚¤‚Å‚·‚Å‚É‹c˜_‚µ‚Ü‚µ‚½B
-            ŠÇ—‚³‚ꂽŠÂ‹«‚ÆŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ŠÂ‹«‚Ì—¼•û‚ɂ‚¢‚āA
-            ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚Æ—áŠOƒnƒ“ƒhƒŠƒ“ƒO‚ð‚à‚Á‚Əڂµ‚­Œ©‚Ä‚¢‚«‚Ü‚µ‚傤B
+            セッションのフラッシュについては、前のほうですでに議論しました。
+            管理された環境と管理されていない環境の両方について、
+            トランザクション境界と例外ハンドリングをもっと詳しく見ていきましょう。
         </para>
 
 
         <sect2 id="transactions-demarcation-nonmanaged" revision="2">
-            <title>ŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ŠÂ‹«</title>
+            <title>管理されていない環境</title>
 
             <para>
-                Hibernate‰i‘±‰»‘w‚ðŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ŠÂ‹«‚ÅŽÀ‘•‚·‚éê‡‚́A
+                Hibernate永続化層を管理されていない環境で実装する場合は、
                 
-                ’ʏí’Pƒ‚ȃRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹i‚·‚È‚í‚¿DataSource‚Å‚Í‚È‚¢j‚É‚æ‚Á‚āA
-                ƒf[ƒ^ƒx[ƒXƒRƒlƒNƒVƒ‡ƒ“‚𐧌䂵‚Ü‚·B
-                Hibernate‚Í‚»‚̃RƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹‚©‚ç•K—v‚ȃRƒlƒNƒVƒ‡ƒ“‚ðŽæ“¾‚µ‚Ü‚·B
+                通常単純なコネクションプール(すなわちDataSourceではない)によって、
+                データベースコネクションを制御します。
+                Hibernateはそのコネクションプールから必要なコネクションを取得します。
                 
-                ƒZƒbƒVƒ‡ƒ“^ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“§Œä‚̃CƒfƒBƒIƒ€‚ÍŽŸ‚̂悤‚É‚È‚è‚Ü‚·B
+                セッション/トランザクション制御のイディオムは次のようになります。
             </para>
 
             <programlisting><![CDATA[// Non-managed environment idiom
@@ -525,21 +527,21 @@
 }]]></programlisting>
 
             <para>
-                –¾Ž¦“I‚É <literal>Session</literal> ‚Ì <literal>flush()</literal> ‚ðŒÄ‚яo‚·‚ׂ«‚Å‚Í‚È‚­A
-                <literal>commit()</literal> ‚ðŒÄ‚яo‚·‚±‚Æ‚É‚æ‚èAŽ©“®“I‚É“¯Šú‰»ˆ—‚ªŽÀs‚³‚ê‚Ü‚·
-                iƒZƒbƒVƒ‡ƒ“‚Ì <xref linkend="objectstate-flushing">FlushMode</xref> ‚Ɉˑ¶‚µ‚Ä‚¢‚éjB
+                明示的に <literal>Session</literal> の <literal>flush()</literal> を呼び出すべきではなく、
+                <literal>commit()</literal> を呼び出すことにより、自動的に同期化処理が実行されます
+                (セッションの <xref linkend="objectstate-flushing">FlushMode</xref> に依存している)。
                 
-                <literal>close()</literal> ‚ðŒÄ‚яo‚·‚±‚Æ‚É‚æ‚èAƒZƒbƒVƒ‡ƒ“‚̏I‚í‚è‚𖾊m‚É‚µ‚Ü‚·B
-                <literal>close()</literal> ‚ªˆÃ–Ù“I‚ɍs‚¤Žå‚È‚±‚Ƃ́A
-                ƒZƒbƒVƒ‡ƒ“‚ªJDBCƒRƒlƒNƒVƒ‡ƒ“‚ðŠJ•ú‚·‚邱‚Æ‚Å‚·B
+                <literal>close()</literal> を呼び出すことにより、セッションの終わりを明確にします。
+                <literal>close()</literal> が暗黙的に行う主なことは、
+                セッションがJDBCコネクションを開放することです。
                 
-                ã‹L‚ÌJavaƒR[ƒh‚̓|[ƒ^ƒuƒ‹‚Å‚ ‚èAŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ŠÂ‹«‚ÆJTAŠÂ‹«‚Ì—¼•û‚ÅŽÀs‚Å‚«‚Ü‚·B
+                上記のJavaコードはポータブルであり、管理されていない環境とJTA環境の両方で実行できます。
             </para>
 
            <para>
-                ‚æ‚è“K‰ž«‚Ì‚ ‚é‰ðŒˆô‚́AHibernate‚É—\‚ß‘g‚ݍž‚Ü‚ê‚Ä‚¢‚é
-                ucurrent sessionvƒRƒ“ƒeƒLƒXƒgŠÇ—‚Å‚·B
-                Œ¾—t‚Åà–¾‚·‚é‚æ‚艺‹L‚ðŒ©‚½‚Ù‚¤‚ª‘¬‚¢‚Å‚µ‚傤B
+                より適応性のある解決策は、Hibernateに予め組み込まれている
+                「current session」コンテキスト管理です。
+                言葉で説明するより下記を見たほうが速いでしょう。
             </para>
 
             <programlisting><![CDATA[// Non-managed environment idiom with getCurrentSession()
@@ -557,43 +559,43 @@
 }]]></programlisting>
 
             <para>
-                ³‹K‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì’†‚ł́A‚±‚̂悤‚ȃR[ƒh‚̐؂ê’[‚ðŒˆ‚µ‚ÄŒ©‚È‚¢‚Å‚µ‚傤B
-                ’v–½“I‚ȁiƒVƒXƒeƒ€j—áŠO‚́Aí‚ɁuÅãˆÊv‚ŃLƒƒƒbƒ`‚·‚ׂ«‚Å‚·B
-                Œ¾‚¢Š·‚¦‚ê‚΁Ai‰i‘±‰»‘w‚ŁjHibernateŒÄ‚яo‚µ‚ðŽÀs‚·‚éƒR[ƒh‚ƁA
-                <literal>RuntimeException</literal> ‚𐧌䂷‚é
-                i’ʏí‚̓NƒŠ[ƒ“ƒAƒbƒv‚ƏI—¹‚̂ݍs‚¤‚±‚Æ‚ª‚Å‚«‚éjƒR[ƒh‚́A•ÊX‚Ì‘w‚Ì’†‚É‚ ‚è‚Ü‚·B
-                Hibernate‚É‚æ‚éƒJƒŒƒ“ƒgƒRƒ“ƒeƒLƒXƒgŠÇ—‚́A‚±‚̐݌v‚ð‚©‚È‚è’Pƒ‚É‚µ‚Ü‚·B
-                •K—v‚Ȃ̂́A<literal>SessionFactory</literal> ‚ɃAƒNƒZƒX‚·‚邱‚Æ‚¾‚¯‚Å‚·B
-                —áŠOˆ—‚́A‚±‚̏͂̌ã‚Ì‚Ù‚¤‚Å‹c˜_‚µ‚Ü‚·B
+                正規のアプリケーションの中では、このようなコードの切れ端を決して見ないでしょう。
+                致命的な(システム)例外は、常に「最上位」でキャッチすべきです。
+                言い換えれば、(永続化層で)Hibernate呼び出しを実行するコードと、
+                <literal>RuntimeException</literal> を制御する
+                (通常はクリーンアップと終了のみ行うことができる)コードは、別々の層の中にあります。
+                Hibernateによるカレントコンテキスト管理は、この設計をかなり単純にします。
+                必要なのは、<literal>SessionFactory</literal> にアクセスすることだけです。
+                例外処理は、この章の後のほうで議論します。
             </para>
 
            <para>
-                ’ˆÓFiƒfƒtƒHƒ‹ƒg‚Å‚·‚ªj
+                注意:(デフォルトですが)
                 <literal>org.hibernate.transaction.JDBCTransactionFactory</literal>
-                ‚ð‘I‘ð‚·‚é‚ׂ«‚Å‚·B
-                ‘æ2‚Ì—p—á‚Æ‚µ‚ẮA
-                <literal>hibernate.current_session_context_class</literal> ‚ð
-                <literal>"thread"</literal> ‚Æ‚·‚é‚Æ‚æ‚¢‚Å‚µ‚傤B
+                を選択するべきです。
+                第2の用例としては、
+                <literal>hibernate.current_session_context_class</literal> ã‚’
+                <literal>"thread"</literal> とするとよいでしょう。
             </para>
             
         </sect2>
 
         <sect2 id="transactions-demarcation-jta" revision="3">
-            <title>JTA‚ðŽg—p‚·‚é</title>
+            <title>JTAを使用する</title>
 
             <para>
-                ‰i‘±‰»‘w‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo[i—Ⴆ‚΁AEJBƒZƒbƒVƒ‡ƒ“Bean‚Ì”wŒãj‚ÅŽÀs‚·‚éê‡A
-                Hibernate‚©‚çŽæ“¾‚·‚é‚·‚ׂẴf[ƒ^ƒ\[ƒXƒRƒlƒNƒVƒ‡ƒ“‚́A
-                Ž©“®“I‚ɃOƒ[ƒoƒ‹JTAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̈ꕔ‚É‚È‚è‚Ü‚·B
+                永続化層をアプリケーションサーバー(例えば、EJBセッションBeanの背後)で実行する場合、
+                Hibernateから取得するすべてのデータソースコネクションは、
+                自動的にグローバルJTAトランザクションの一部になります。
                 
-                EJB‚ðŽg‚킸‚ɁAƒXƒ^ƒ“ƒhƒAƒƒ“‚ÌJTAŽÀ‘•‚𓱓ü‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B
-                JTA“‡‚Ì‚½‚߂ɁAHibernate‚Í‚Q‚‚̐헪‚ð’ñ‹Ÿ‚µ‚Ü‚·B
+                EJBを使わずに、スタンドアロンのJTA実装を導入することもできます。
+                JTA統合のために、Hibernateは2つの戦略を提供します。
             </para>
 
             <para>
-                BeanŠÇ—ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“iBMTj‚ðŽg‚¢A<literal>Transaction</literal> API‚ðŽg‚¤ê‡A
-                Hibernate‚̓AƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo[‚ÉBMTƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŠJŽn‚ƏI‚í‚è‚ð‚°‚Ü‚·B
-                ‚·‚È‚í‚¿Aƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ŠÇ—‚̃R[ƒh‚́AŠÇ—‚³‚ê‚È‚¢ŠÂ‹«‚Æ“¯‚¶‚É‚È‚è‚Ü‚·B
+                Bean管理トランザクション(BMT)を使い、<literal>Transaction</literal> APIを使う場合、
+                HibernateはアプリケーションサーバーにBMTトランザクションの開始と終わりを告げます。
+                すなわち、トランザクション管理のコードは、管理されない環境と同じになります。
             </para>
             
            <programlisting><![CDATA[// BMT idiom
@@ -616,9 +618,9 @@
 }]]></programlisting>
 
            <para>
-               ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚Æ‚µ‚Ä <literal>Session</literal> ‚ðŽg‚¢‚½‚¢ê‡A
-               ŠÈ’P‚ɃRƒ“ƒeƒLƒXƒg‚ð“`”d‚·‚é‹@”\‚Å‚ ‚é <literal>getCurrentSession()</literal> ‚ª‚ ‚é‚̂ŁA
-               JTA‚Ì <literal>UserTransaction</literal> API‚𒼐ڎg—p‚·‚ׂ«‚Å‚µ‚傤B
+               トランザクション境界として <literal>Session</literal> を使いたい場合、
+               簡単にコンテキストを伝播する機能である <literal>getCurrentSession()</literal> があるので、
+               JTAの <literal>UserTransaction</literal> APIを直接使用すべきでしょう。
             </para>
 
             <programlisting><![CDATA[// BMT idiom with getCurrentSession()
@@ -640,9 +642,9 @@
 }]]></programlisting>
 
             <para>
-                CMT‚ł́Aƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚ðƒZƒbƒVƒ‡ƒ“Bean‚̃fƒvƒƒCƒƒ“ƒgƒfƒBƒXƒNƒŠƒvƒ^‚Å’è‹`‚µA
-                ƒvƒƒOƒ‰ƒ€‚ł͍s‚¢‚Ü‚¹‚ñB
-                ‚䂦‚ɁAƒR[ƒh‚ÍŽŸ‚̂悤‚ɏ­‚È‚­‚È‚è‚Ü‚·B
+                CMTでは、トランザクション境界をセッションBeanのデプロイメントディスクリプタで定義し、
+                プログラムでは行いません。
+                ゆえに、コードは次のように少なくなります。
             </para>
 
             <programlisting><![CDATA[// CMT idiom
@@ -653,121 +655,121 @@
 ]]></programlisting>
 
             <para>
-                CMT/EJB‚Ì’†‚ł́Aí‚Ƀ[ƒ‹ƒoƒbƒN‚ªŽ©“®“I‚ÉŽÀŽ{‚³‚ê‚Ü‚·B
-                ‚È‚º‚È‚çAƒZƒbƒVƒ‡ƒ“ƒr[ƒ“‚̃ƒ\ƒbƒh‚É‚æ‚è“Š‚°‚ç‚ꂽ§Œä‚³‚ê‚Ä‚¢‚È‚¢
-                <literal>RuntimeException</literal> ‚́AƒOƒ[ƒoƒ‹ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ð
-                ƒ[ƒ‹ƒoƒbƒN‚·‚é‚悤‚ɃRƒ“ƒeƒi‚É“`‚¦‚邽‚ß‚Å‚·B
-                <emphasis>‚±‚ê‚́ABMT‚à‚µ‚­‚ÍCMT‚Æ‚¢‚Á‚µ‚å‚ÉHibernate <literal>Transaction</literal>
-                API‚ðŽg‚¤•K—v‚͏­‚µ‚à‚È‚¢‚Æ‚¢‚¤ˆÓ–¡‚Å‚·B</emphasis>
+                CMT/EJBの中では、常にロールバックが自動的に実施されます。
+                なぜなら、セッションビーンのメソッドにより投げられた制御されていない
+                <literal>RuntimeException</literal> は、グローバルトランザクションを
+                ロールバックするようにコンテナに伝えるためです。
+                <emphasis>これは、BMTもしくはCMTといっしょにHibernate <literal>Transaction</literal>
+                APIを使う必要は少しもないという意味です。</emphasis>
             </para>
 
             <para>
-                Hibernate‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒtƒ@ƒNƒgƒŠ‚ðÝ’è‚·‚éÛ‚ɁA
-                JTA‚𒼐ڎg‚¤iBMT‚́jê‡‚Í <literal>org.hibernate.transaction.JTATransactionFactory</literal> ‚ðA
-                CMTƒZƒbƒVƒ‡ƒ“ƒr[ƒ“‚Ì’†‚Å‚Í <literal>org.hibernate.transaction.CMTTransactionFactory</literal> ‚ð
-                ‘I‘ð‚·‚×‚«‚¾‚Æ‚¢‚¤‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+                Hibernateのトランザクションファクトリを設定する際に、
+                JTAを直接使う(BMTの)場合は <literal>org.hibernate.transaction.JTATransactionFactory</literal> を、
+                CMTセッションビーンの中では <literal>org.hibernate.transaction.CMTTransactionFactory</literal> を
+                選択すべきだということに注意してください。
                 <literal>hibernate.transaction.manager_lookup_class</literal>
-                ‚ðƒZƒbƒg‚·‚邱‚Æ‚àŽv‚¢o‚µ‚Ä‚­‚¾‚³‚¢B
-                ‚È‚¨A<literal>hibernate.current_session_context_class</literal> ‚́A
-                ƒZƒbƒg‚µ‚È‚¢‚©iŒã•ûŒÝŠ·jA<literal>"jta"</literal> ‚ðƒZƒbƒg‚µ‚Ä‚­‚¾‚³‚¢B
+                をセットすることも思い出してください。
+                なお、<literal>hibernate.current_session_context_class</literal> は、
+                セットしないか(後方互換)、<literal>"jta"</literal> をセットしてください。
             </para>
             
             <para>
-                <literal>getCurrentSession()</literal> ƒIƒyƒŒ[ƒVƒ‡ƒ“‚́AJTAŠÂ‹«‚Å‚Í‚P‚‚̌‡“_‚ðŽ‚¿‚Ü‚·B
+                <literal>getCurrentSession()</literal> オペレーションは、JTA環境では1つの欠点を持ちます。
                 
-                ƒfƒtƒHƒ‹ƒg‚ÅŽg‚í‚ê‚é <literal>after_statement</literal> ƒRƒlƒNƒVƒ‡ƒ“ƒŠƒŠ[ƒXƒ‚[ƒh‚ðŽg—p‚·‚éã‚ŁA
-                Œx‚ª‚P‚‚ ‚è‚Ü‚·B
+                デフォルトで使われる <literal>after_statement</literal> コネクションリリースモードを使用する上で、
+                警告が1つあります。
                 
-                JTAŽd—l‚Ì‹ð‚©‚È§–ñ‚Ì‚½‚߂ɁA
-                <literal>scroll()</literal> ‚Ü‚½‚Í <literal>iterate()</literal> ‚ª•Ô‚µ‚½A
-                •Â‚¶‚ç‚ê‚Ä‚¢‚È‚¢ <literal>ScrollableResults</literal> ‚Ü‚½‚Í <literal>Iterator</literal>
-                ƒCƒ“ƒXƒ^ƒ“ƒX‚ðHibernate‚ªŽ©“®“I‚ɃNƒŠ[ƒ“ƒAƒbƒv‚·‚邱‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB
+                JTA仕様の愚かな制約のために、
+                <literal>scroll()</literal> または <literal>iterate()</literal> が返した、
+                閉じられていない <literal>ScrollableResults</literal> または <literal>Iterator</literal>
+                インスタンスをHibernateが自動的にクリーンアップすることはできません。
                 
-                <literal>finally</literal> ƒuƒƒbƒN‚Ì’†‚ŁA
-                <literal>ScrollableResults.close()</literal> ‚Ü‚½‚Í
-                <literal>Hibernate.close(Iterator)</literal> ‚𖾎¦“I‚ɌĂяo‚µ‚āA
-                — ‚ɐö‚ñ‚¾ƒf[ƒ^ƒx[ƒXƒJ[ƒ\ƒ‹‚ð‰ð•ú <emphasis>‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñ</emphasis>B
+                <literal>finally</literal> ブロックの中で、
+                <literal>ScrollableResults.close()</literal> または
+                <literal>Hibernate.close(Iterator)</literal> を明示的に呼び出して、
+                裏に潜んだデータベースカーソルを解放 <emphasis>しなければなりません</emphasis>。
                 
-                i‚à‚¿‚ë‚ñA‘½‚­‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ł́AJTA‚©CMTƒR[ƒh‚Å <literal>scroll()</literal>
-                ‚â <literal>iterate()</literal> ‚ÌŽg—p‚ð”ð‚¯‚é‚Ì‚Í—eˆÕ‚Å‚·Bj
+                (もちろん、多くのアプリケーションでは、JTAかCMTコードで <literal>scroll()</literal>
+                や <literal>iterate()</literal> の使用を避けるのは容易です。)
             </para>
 
         </sect2>
 
         <sect2 id="transactions-demarcation-exceptions">
-            <title>—áŠOƒnƒ“ƒhƒŠƒ“ƒO</title>
+            <title>例外ハンドリング</title>
 
             <para>
-                <literal>Session</literal> ‚ª—áŠOi<literal>SQLException</literal>‚ðŠÜ‚ށj‚ð“Š‚°‚½ê‡A
-                ’¼‚¿‚ɁAƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðƒ[ƒ‹ƒoƒbƒN‚µA<literal>Session.close()</literal>
-                ‚ðŒÄ‚сA<literal>Session</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚ð”jŠü‚·‚ׂ«‚Å‚·B
-                <literal>Session</literal> ‚Ì‚¢‚­‚‚©‚̃ƒ\ƒbƒh‚́A
-                ƒZƒbƒVƒ‡ƒ“‚̏ó‘Ô‚ð <emphasis>–µ‚‚µ‚½‚Ü‚Ü</emphasis> ‚É‚µ‚Ü‚·B
-                Hibernate‚ª“Š‚°‚½—áŠO‚ðA‰ñ•œ‚Å‚«‚é‚à‚Ì‚Æ‚µ‚Ĉµ‚¤‚±‚Æ‚Í‚Å‚«‚Ü‚¹‚ñB
-                <literal>finally</literal> ƒuƒƒbƒN‚Ì’†‚Å <literal>close()</literal> ‚ðŒÄ‚ñ‚ŁA
-                <literal>Session</literal> ‚ðŠmŽÀ‚ɕ‚¶‚Ä‚­‚¾‚³‚¢B
+                <literal>Session</literal> が例外(<literal>SQLException</literal>を含む)を投げた場合、
+                直ちに、データベーストランザクションをロールバックし、<literal>Session.close()</literal>
+                を呼び、<literal>Session</literal> インスタンスを破棄すべきです。
+                <literal>Session</literal> のいくつかのメソッドは、
+                セッションの状態を <emphasis>矛盾したまま</emphasis> にします。
+                Hibernateが投げた例外を、回復できるものとして扱うことはできません。
+                <literal>finally</literal> ブロックの中で <literal>close()</literal> を呼んで、
+                <literal>Session</literal> を確実に閉じてください。
             </para>
 
             <para>
-                <literal>HibernateException</literal> ‚́AHibernate‰i‘±‰»‘w‚Ì’†‚Å”­¶‚·‚鑽‚­‚̃Gƒ‰[‚ð
-                ƒ‰ƒbƒv‚·‚éAŒŸ¸‚³‚ê‚È‚¢—áŠO‚Å‚·iHibernate‚̌¢ƒo[ƒWƒ‡ƒ“‚͈Ⴂ‚Ü‚µ‚½jB
-                Ž„‚½‚¿‚̈ӌ©‚́AƒAƒvƒŠƒP[ƒVƒ‡ƒ“ŠJ”­ŽÒ‚ɉñ•œ•s‰Â”\‚È—áŠO‚ð
-                ‰º‘w‚ŃLƒƒƒbƒ`‚·‚邱‚Æ‚ð‹­—v‚·‚ׂ«‚Å‚Í‚È‚¢‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
-                ‘½‚­‚̃VƒXƒeƒ€‚ł́AŒŸ¸‚³‚ê‚È‚¢—áŠO‚Æ’v–½“I‚È—áŠO‚́A
-                ƒR[ƒ‹ƒXƒ^ƒbƒN‚̍ŏ‰‚̃tƒŒ[ƒ€‚Ì‚P‚i—Ⴆ‚΁AÅãˆÊ‚Ì‘w‚Łj‚Ńnƒ“ƒhƒŠƒ“ƒO‚µA
-                ƒGƒ‰[ƒƒbƒZ[ƒW‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒ†[ƒU[‚É•\Ž¦‚µ‚Ü‚·
-                i‚à‚µ‚­‚́A‘¼‚Ì“KØ‚ȏˆ—‚ðŽÀŽ{‚µ‚Ü‚·jB
-                Hibernate‚́A<literal>HibernateException</literal> ˆÈŠO‚ÌŒŸ¸‚³‚ê‚È‚¢—áŠO‚à
-                “Š‚°‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-                ‚±‚ê‚ç‚à‚Ü‚½A‰ñ•œ•s‰Â”\‚Å‚ ‚èA“KØ‚ȏˆ—‚ðŽÀŽ{‚·‚ׂ«‚Å‚·B
+                <literal>HibernateException</literal> は、Hibernate永続化層の中で発生する多くのエラーを
+                ラップする、検査されない例外です(Hibernateの古いバージョンは違いました)。
+                私たちの意見は、アプリケーション開発者に回復不可能な例外を
+                下層でキャッチすることを強要すべきではないということです。
+                多くのシステムでは、検査されない例外と致命的な例外は、
+                コールスタックの最初のフレームの1つ(例えば、最上位の層で)でハンドリングし、
+                エラーメッセージをアプリケーションユーザーに表示します
+                (もしくは、他の適切な処理を実施します)。
+                Hibernateは、<literal>HibernateException</literal> 以外の検査されない例外も
+                投げることに注意してください。
+                これらもまた、回復不可能であり、適切な処理を実施すべきです。
             </para>
 
             <para>
-                Hibernate‚́Aƒf[ƒ^ƒx[ƒX‚Ƃ̑Θb’†‚É“Š‚°‚ç‚ꂽ <literal>SQLException</literal> ‚ð
-                <literal>JDBCException</literal> ‚щƒbƒv‚µ‚Ü‚·B
-                ŽÀ‚́A—áŠO‚ð‚æ‚èˆÓ–¡‚Ì‚ ‚é <literal>JDBCException</literal> ‚̃TƒuƒNƒ‰ƒX‚É
-                •ÏŠ·‚µ‚悤‚ÆŽŽ‚Ý‚Ü‚·B
-                Œ³‚Ì <literal>SQLException</literal> ‚́A<literal>JDBCException.getCause()</literal>
-                ‚É‚æ‚è‚¢‚Â‚Å‚à“¾‚ç‚ê‚Ü‚·B
-                Hibernate‚́A<literal>SessionFactory</literal> ‚ɒljÁ‚³‚ê‚Ä‚¢‚é
-                <literal>SQLExceptionConverter</literal> ‚ðŽg‚¢A<literal>SQLException</literal> ‚ð
-                “K“–‚È <literal>JDBCException</literal> ƒTƒuƒNƒ‰ƒX‚É•ÏŠ·‚µ‚Ü‚·B
-                ƒfƒtƒHƒ‹ƒg‚ł́A<literal>SQLExceptionConverter</literal> ‚͐ݒ肳‚ê‚Ä‚¢‚éSQL•ûŒ¾‚É‚æ‚è
-                ’è‹`‚³‚ê‚Ü‚·B
-                ˆê•û‚ŁA“ÆŽ©‚ÌŽÀ‘•‚ɍ·‚µ‘Ö‚¦‚邱‚Æ‚à‚Å‚«‚Ü‚·
-                iÚ×‚́A<literal>SQLExceptionConverterFactory</literal> ƒNƒ‰ƒX‚ÌJavadoc‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢jB
-                •W€“I‚È <literal>JDBCException</literal> ‚̃Tƒuƒ^ƒCƒv‚ð‰º‹L‚ÉŽ¦‚µ‚Ü‚·B
+                Hibernateは、データベースとの対話中に投げられた <literal>SQLException</literal> を
+                <literal>JDBCException</literal> でラップします。
+                実は、例外をより意味のある <literal>JDBCException</literal> のサブクラスに
+                変換しようと試みます。
+                元の <literal>SQLException</literal> は、<literal>JDBCException.getCause()</literal>
+                によりいつでも得られます。
+                Hibernateは、<literal>SessionFactory</literal> に追加されている
+                <literal>SQLExceptionConverter</literal> を使い、<literal>SQLException</literal> を
+                適当な <literal>JDBCException</literal> サブクラスに変換します。
+                デフォルトでは、<literal>SQLExceptionConverter</literal> は設定されているSQL方言により
+                定義されます。
+                一方で、独自の実装に差し替えることもできます
+                (詳細は、<literal>SQLExceptionConverterFactory</literal> クラスのJavadocを参照してください)。
+                標準的な <literal>JDBCException</literal> のサブタイプを下記に示します。
             </para>
 
             <itemizedlist spacing="compact">
                 <listitem>
                     <para>
                         <literal>JDBCConnectionException</literal> -
-                        Šî‘b‚Æ‚È‚éJDBC’ʐM‚̃Gƒ‰[‚ð•\‚µ‚Ü‚·B
+                        基礎となるJDBC通信のエラーを表します。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
                         <literal>SQLGrammarException</literal> -
-                        ”­s‚·‚éSQL‚Ì•¶–@‚à‚µ‚­‚͍\•¶‚Ì–â‘è‚ð•\‚µ‚Ü‚·B
+                        発行するSQLの文法もしくは構文の問題を表します。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
                         <literal>ConstraintViolationException</literal> -
-                        ‰½‚ç‚©‚ÌŒ`Ž®‚ÌŠ®‘S«§–ñˆá”½‚ð•\‚µ‚Ü‚·B
+                        何らかの形式の完全性制約違反を表します。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
                         <literal>LockAcquisitionException</literal> -
-                        —v‹‚³‚ꂽ‘€ì‚ðŽÀŽ{‚·‚é‚Ì‚É•K—v‚ȃƒbƒNƒŒƒxƒ‹‚𓾂éÛ‚̃Gƒ‰[‚ð•\‚µ‚Ü‚·B
+                        要求された操作を実施するのに必要なロックレベルを得る際のエラーを表します。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
                         <literal>GenericJDBCException</literal> -
-                        ‘¼‚̃JƒeƒSƒŠ‚Ɉê’v‚µ‚È‚©‚Á‚½ˆê”Ê“I‚È—áŠO‚Å‚·B
+                        他のカテゴリに一致しなかった一般的な例外です。
                     </para>
                 </listitem>
             </itemizedlist>
@@ -775,22 +777,22 @@
         </sect2>
 
         <sect2 id="transactions-demarcation-timeout">
-            <title>ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃^ƒCƒ€ƒAƒEƒg</title>
+            <title>トランザクションのタイムアウト</title>
 
             <para>
-                EJB‚̂悤‚ÈŠÇ—‚³‚ꂽŠÂ‹«‚ª’ñ‹Ÿ‚·‚é‚«‚í‚߂ďd—v‚È“Á’¥‚Ì‚P‚‚́A
-                ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃^ƒCƒ€ƒAƒEƒg‚Å‚·B
-                ‚±‚ê‚ÍŠÇ—‚³‚ê‚Ä‚¢‚È‚¢ƒR[ƒh‚É‚Í’ñ‹Ÿ‚Å‚«‚Ü‚¹‚ñB
-                ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒ^ƒCƒ€ƒAƒEƒg‚́A•s•is‚ȃgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ª
-                ƒ†[ƒU[‚ɃŒƒXƒ|ƒ“ƒX‚ð•Ô‚³‚È‚¢‚܂܁A–³ŠúŒÀ‚ɃŠƒ\[ƒX‚ðŽg‚¢‘±‚¯‚È‚¢
-                ‚±‚Æ‚ð•Ûá‚µ‚Ü‚·B
-                ŠÇ—‚³‚ꂽŠÂ‹«iJTAj‚ÌŠO‚ł́AHibernate‚Í‚±‚Ì‹@”\‚ðƒtƒ‹‚É’ñ‹Ÿ‚Å‚«‚Ü‚¹‚ñB
-                ‚µ‚©‚µ‚È‚ª‚çAHibernate‚ÍŽŸ‚̂悤‚ȃf[ƒ^ƒAƒNƒZƒX‘€ì‚̐§Œä‚­‚ç‚¢‚Í‚Å‚«‚Ü‚·B
-                ƒf[ƒ^ƒx[ƒXƒŒƒxƒ‹‚̃fƒbƒhƒƒbƒN‚â‘å‚«‚ȃŠƒUƒ‹ƒgƒZƒbƒg‚ð•Ô‚·ƒNƒGƒŠ‚ð
-                ’è‹`‚³‚ꂽƒ^ƒCƒ€ƒAƒEƒg‚É‚æ‚Á‚ÄŠmŽÀ‚ɐ§ŒÀ‚µ‚Ü‚·B
-                ŠÇ—‚³‚ꂽŠÂ‹«‚ł́AHibernate‚̓gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒ^ƒCƒ€ƒAƒEƒg‚ðJTA‚ɈϏ÷‚µ‚Ü‚·B
-                ‚±‚Ì‹@”\‚́AHibernate‚Ì <literal>Transaction</literal> ƒIƒuƒWƒFƒNƒg‚É
-                ‚æ‚Á‚Ä’ŠÛ‰»‚³‚ê‚Ä‚¢‚Ü‚·B
+                EJBのような管理された環境が提供するきわめて重要な特徴の1つは、
+                トランザクションのタイムアウトです。
+                これは管理されていないコードには提供できません。
+                トランザクションタイムアウトは、不品行なトランザクションが
+                ユーザーにレスポンスを返さないまま、無期限にリソースを使い続けない
+                ことを保障します。
+                管理された環境(JTA)の外では、Hibernateはこの機能をフルに提供できません。
+                しかしながら、Hibernateは次のようなデータアクセス操作の制御くらいはできます。
+                データベースレベルのデッドロックや大きなリザルトセットを返すクエリを
+                定義されたタイムアウトによって確実に制限します。
+                管理された環境では、HibernateはトランザクションタイムアウトをJTAに委譲します。
+                この機能は、Hibernateの <literal>Transaction</literal> オブジェクトに
+                よって抽象化されています。
             </para>
             
             <programlisting><![CDATA[
@@ -814,9 +816,9 @@
 }]]></programlisting>
 
             <para>
-                CMTƒr[ƒ“‚Ì’†‚Å‚Í <literal>setTimeout()</literal> ‚ð
-                ŒÄ‚яo‚¹‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-                ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ƒ^ƒCƒ€ƒAƒEƒg‚͐錾“I‚É’è‹`‚³‚ê‚é‚ׂ«‚Å‚·B
+                CMTビーンの中では <literal>setTimeout()</literal> を
+                呼び出せないことに注意してください。
+                トランザクションタイムアウトは宣言的に定義されるべきです。
             </para>
             
         </sect2>
@@ -824,32 +826,32 @@
     </sect1>
 
     <sect1 id="transactions-optimistic">
-        <title>ŠyŠÏ“I“¯ŽžŽÀs§Œä</title>
+        <title>楽観的同時実行制御</title>
 
         <para>
-            ‚‚¢•À—ñ«‚ƍ‚‚¢ƒXƒP[ƒ‰ƒrƒŠƒeƒB‚Ì—¼•û‚ðŽÀŒ»‚·‚éƒAƒvƒ[ƒ`‚́A
-            ƒo[ƒWƒ‡ƒjƒ“ƒO‚ðŽg‚Á‚½ŠyŠÏ“I“¯ŽžŽÀs§Œä‚Ì‚Ý‚Å‚·B
-            XV‚ÌÕ“Ë‚ðŒ©‚Â‚¯‚邽‚߂Ɂi‚¨‚æ‚сAXV‚ªŽ¸‚í‚ê‚é‚Ì‚ð–h‚®‚½‚߂ɁjA
-            ƒo[ƒWƒ‡ƒ“”ԍ†‚à‚µ‚­‚̓^ƒCƒ€ƒXƒ^ƒ“ƒv‚ðŽg‚Á‚āAƒo[ƒWƒ‡ƒ“‚ðƒ`ƒFƒbƒN‚µ‚Ü‚·B
-            Hibernate‚́AŠyŠÏ“I“¯ŽžŽÀs‚ðs‚¤ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒR[ƒh‚ð‘‚­‚½‚ß‚Ì
-            ƒAƒvƒ[ƒ`‚ð‚R‚Â’ñ‹Ÿ‚µ‚Ü‚·B
-            Ž„‚½‚¿‚ªŒ©‚¹‚郆[ƒXƒP[ƒX‚́A’·‚¢‘Θb‚ðŽ‚¿‚Ü‚·‚ªA
-            ƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚Í‚Ü‚¾‚P‚‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì’†‚ōXV‚ðŽ¸‚¤‚±‚Æ‚ð–h‚®
-            —˜“_‚àŽ‚Á‚Ä‚¢‚Ü‚·B
+            高い並列性と高いスケーラビリティの両方を実現するアプローチは、
+            バージョニングを使った楽観的同時実行制御のみです。
+            更新の衝突を見つけるために(および、更新が失われるのを防ぐために)、
+            バージョン番号もしくはタイムスタンプを使って、バージョンをチェックします。
+            Hibernateは、楽観的同時実行を行うアプリケーションコードを書くための
+            アプローチを3つ提供します。
+            私たちが見せるユースケースは、長い対話を持ちますが、
+            バージョンチェックはまだ1つのデータベーストランザクションの中で更新を失うことを防ぐ
+            利点も持っています。
         </para>
 
         <sect2 id="transactions-optimistic-manual">
-            <title>ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚æ‚éƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN</title>
+            <title>アプリケーションによるバージョンチェック</title>
 
             <para>
-                Hibernate‚É‚Ù‚Æ‚ñ‚Ǐ•‚¯‚Ä‚à‚ç‚킸‚ÉŽÀ‘•‚·‚éƒP[ƒX‚Å‚·B
-                ƒf[ƒ^ƒx[ƒX‚Æ‚Ì‚â‚èŽæ‚è‚́A‚»‚ꂼ‚êV‚µ‚¢ <literal>Session</literal> ‚Ì’†‚Å‹N‚±‚è‚Ü‚·B
-                ŠJ”­ŽÒ‚́A‚·‚ׂẲi‘±«ƒCƒ“ƒXƒ^ƒ“ƒX‚𑀍삷‚é‘O‚ɁA
-                ƒf[ƒ^ƒx[ƒX‚©‚çÄ“ǂݍž‚Ý‚·‚éÓ–±‚ª‚ ‚è‚Ü‚·B
-                ‚±‚̃Aƒvƒ[ƒ`‚ł́A‘Θbƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì•ª—£‚ðŽç‚邽‚߂ɁA
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“Ž©g‚ªƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚ðs‚¤•K—v‚ª‚ ‚è‚Ü‚·B
-                ‚±‚̃Aƒvƒ[ƒ`‚́Aƒf[ƒ^ƒx[ƒXƒAƒNƒZƒX‚Ì’†‚ł́AÅ‚à”ñŒø—¦‚Å‚·B
-                ƒGƒ“ƒeƒBƒeƒBEJB‚ÆÅ‚àŽ—‚Ä‚¢‚éƒAƒvƒ[ƒ`‚Å‚·B
+                Hibernateにほとんど助けてもらわずに実装するケースです。
+                データベースとのやり取りは、それぞれ新しい <literal>Session</literal> の中で起こります。
+                開発者は、すべての永続性インスタンスを操作する前に、
+                データベースから再読み込みする責務があります。
+                このアプローチでは、対話トランザクションの分離を守るために、
+                アプリケーション自身がバージョンチェックを行う必要があります。
+                このアプローチは、データベースアクセスの中では、最も非効率です。
+                エンティティEJBと最も似ているアプローチです。
             </para>
 
             <programlisting><![CDATA[// foo is an instance loaded by a previous Session
@@ -865,54 +867,54 @@
 session.close();]]></programlisting>
 
             <para>
-                <literal>&lt;version&gt;</literal> ‚ðŽg‚Á‚āA<literal>version</literal>
-                ƒvƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
-                Hibernate‚́AƒGƒ“ƒeƒBƒeƒB‚ªƒ_[ƒeƒB‚Å‚ ‚éê‡Aƒtƒ‰ƒbƒVƒ…‚µA
-                ‚»‚ÌŠÔ‚É <literal>version</literal> ƒvƒƒpƒeƒB‚ðŽ©“®“I‚ɃCƒ“ƒNƒŠƒƒ“ƒg‚µ‚Ü‚·B
+                <literal>&lt;version&gt;</literal> を使って、<literal>version</literal>
+                プロパティをマッピングします。
+                Hibernateは、エンティティがダーティである場合、フラッシュし、
+                その間に <literal>version</literal> プロパティを自動的にインクリメントします。
             </para>
 
             <para>
-                ‚à‚¿‚ë‚ñAƒf[ƒ^‚Ì•À—ñ«‚ª’á‚¢ŠÂ‹«‚ʼn^—p‚µ‚Ä‚¨‚èAƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚ª•s—v‚È‚çA
-                ‚±‚̃Aƒvƒ[ƒ`‚ðŽg‚¢Aƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚ðƒXƒLƒbƒv‚·‚邾‚¯‚Å‚·B
-                ‚»‚̏ꍇ‚́A’·‚¢‘Θb‚ɂ́A
-                <emphasis>uÅŒã‚ɃRƒ~ƒbƒg‚µ‚½‚à‚Ì‚ªŸ‚v</emphasis> ‚ªƒfƒtƒHƒ‹ƒg‚̐헪‚Å‚µ‚傤B
-                ‚±‚̃Aƒvƒ[ƒ`‚́AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃†[ƒU[‚ð¬—‚³‚¹‚é‚©‚à‚µ‚ê‚È‚¢‚±‚Æ‚ð
-                S‚É—¯‚ß‚Ä’u‚¢‚Ä‚­‚¾‚³‚¢B‚»‚ê‚́AƒGƒ‰[ƒƒbƒZ[ƒW‚â‹£‡‚µ‚½•ÏX‚ðƒ}[ƒW‚·‚é‹@‰ï‚ª
-                ‚È‚¢‚܂܁AXV‚ðŽ¸‚¤ŒoŒ±‚ð‚·‚é‚½‚ß‚Å‚·B
+                もちろん、データの並列性が低い環境で運用しており、バージョンチェックが不要なら、
+                このアプローチを使い、バージョンチェックをスキップするだけです。
+                その場合は、長い対話には、
+                <emphasis>「最後にコミットしたものが勝つ」</emphasis> がデフォルトの戦略でしょう。
+                このアプローチは、アプリケーションのユーザーを混乱させるかもしれないことを
+                心に留めて置いてください。それは、エラーメッセージや競合した変更をマージする機会が
+                ないまま、更新を失う経験をするためです。
             </para>
 
             <para>
-                Šm‚©‚ɁAƒ}ƒjƒ…ƒAƒ‹‚É‚æ‚éƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚́A±×‚È‹VŽ®‚¾‚¯‚ÅŽÀs‚Å‚«‚Ü‚·‚ªA
-                ‘½‚­‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚Æ‚Á‚ÄŽÀ—p“I‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-                ‚µ‚΂µ‚΁A‚P‚‚̃Cƒ“ƒXƒ^ƒ“ƒX‚¾‚¯‚Å‚È‚­A
-                C³‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ÌŠ®‘S‚ȃOƒ‰ƒt‚ðƒ`ƒFƒbƒN‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                Hibernate‚́AÝŒvƒpƒ‰ƒ_ƒCƒ€‚Æ‚µ‚āAŠg’£ <literal>Session</literal> ‚©
-                •ª—£‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚ðŽ©“®“I‚Ƀo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚µ‚Ü‚·B
+                確かに、マニュアルによるバージョンチェックは、些細な儀式だけで実行できますが、
+                多くのアプリケーションにとって実用的ではありません。
+                しばしば、1つのインスタンスだけでなく、
+                修正されたオブジェクトの完全なグラフをチェックしなければなりません。
+                Hibernateは、設計パラダイムとして、拡張 <literal>Session</literal> か
+                分離されたインスタンスを自動的にバージョンチェックします。
             </para>
 
         </sect2>
 
         <sect2 id="transactions-optimistic-longsession">
-            <title>Šg’£ƒZƒbƒVƒ‡ƒ“‚ÆŽ©“®ƒo[ƒWƒ‡ƒjƒ“ƒO</title>
+            <title>拡張セッションと自動バージョニング</title>
 
             <para>
-                ‚P‚Â‚Ì <literal>Session</literal> ƒCƒ“ƒXƒ^ƒ“ƒX‚Æ‚»‚̉i‘±«ƒCƒ“ƒXƒ^ƒ“ƒX‚́A
-                <emphasis>session-per-conversation</emphasis> ‚Æ‚µ‚Ä’m‚ç‚ê‚éA
-                ‘Θb‘S‘Ì‚ÅŽg‚í‚ê‚Ü‚·B
-                Hibernate‚̓tƒ‰ƒbƒVƒ…‚·‚éÛ‚ɁAƒCƒ“ƒXƒ^ƒ“ƒX‚̃o[ƒWƒ‡ƒ“‚ðƒ`ƒFƒbƒN‚µ‚Ü‚·B
-                “¯Žž‚ɏC³‚³‚ꂽ‚±‚Æ‚ðŒŸo‚·‚é‚ƁA—áŠO‚ð“Š‚°‚Ü‚·B
-                ‚±‚Ì—áŠO‚ðƒLƒƒƒbƒ`‚µ‚Ĉµ‚¤‚̂́AŠJ”­ŽÒ‚̐ӔC‚Å‚·
-                iˆê”Ê“I‚È‘I‘ðŽˆ‚ÍA•ÏX‚ðƒ}[ƒW‚·‚é‚©ŒÃ‚­‚È‚¢ƒf[ƒ^‚ŃrƒWƒlƒX‘Θb‚ð
-                ÄƒXƒ^[ƒg‚·‚é‹@‰ï‚ðƒ†[ƒU[‚É’ñ‹Ÿ‚·‚邱‚Æ‚Å‚·jB
+                1つの <literal>Session</literal> インスタンスとその永続性インスタンスは、
+                <emphasis>session-per-conversation</emphasis> として知られる、
+                対話全体で使われます。
+                Hibernateはフラッシュする際に、インスタンスのバージョンをチェックします。
+                同時に修正されたことを検出すると、例外を投げます。
+                この例外をキャッチして扱うのは、開発者の責任です
+                (一般的な選択肢は、変更をマージするか古くないデータでビジネス対話を
+                再スタートする機会をユーザーに提供することです)。
             </para>
 
             <para>
-                ƒ†[ƒU[‚̑Θb‚ð‘Ò‚Á‚Ä‚¢‚é‚Æ‚«‚́A
-                <literal>Session</literal> ‚ðŠî‘b‚Æ‚È‚éJDBCƒRƒlƒNƒVƒ‡ƒ“‚©‚çØ‚è—£‚µ‚Ü‚·B
-                ‚±‚̃Aƒvƒ[ƒ`‚́Aƒf[ƒ^ƒx[ƒXƒAƒNƒZƒX‚Ì’†‚ł́AÅ‚àŒø—¦“I‚Å‚·B
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚́Aƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚╪—£‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚ðÄ’ljÁ‚·‚邱‚Æ
-                ‚Ɋ֐S‚ðŽ‚Â•K—v‚Í‚ ‚è‚Ü‚¹‚ñB‚Ü‚½A‚ ‚ç‚ä‚éƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì’†‚Å
-                ƒCƒ“ƒXƒ^ƒ“ƒX‚ðÄ“ǂݍž‚Ý‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB
+                ユーザーの対話を待っているときは、
+                <literal>Session</literal> を基礎となるJDBCコネクションから切り離します。
+                このアプローチは、データベースアクセスの中では、最も効率的です。
+                アプリケーションは、バージョンチェックや分離されたインスタンスを再追加すること
+                に関心を持つ必要はありません。また、あらゆるデータベーストランザクションの中で
+                インスタンスを再読み込みする必要はありません。
             </para>
 
             <programlisting><![CDATA[// foo is an instance loaded earlier by the old session
@@ -925,74 +927,74 @@
 session.close();    // Only for last transaction in conversation]]></programlisting>
 
             <para>
-                <literal>foo</literal> ƒIƒuƒWƒFƒNƒg‚́AŽ©•ª‚ðƒ[ƒh‚µ‚½ <literal>Session</literal>
-                ‚ð‚Ü‚¾’m‚Á‚Ä‚¢‚Ü‚·B
-                ŒÃ‚¢ƒZƒbƒVƒ‡ƒ“‚̏ã‚ŐV‚µ‚¢ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðŠJŽn‚·‚邱‚ƂŁA
-                V‚µ‚¢ƒRƒlƒNƒVƒ‡ƒ“‚ðŽæ“¾‚µA‚»‚̃ZƒbƒVƒ‡ƒ“‚ªÄŠJ‚³‚ê‚Ü‚·B
-                ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðƒRƒ~ƒbƒg‚·‚邱‚ƂŁA
-                ƒZƒbƒVƒ‡ƒ“‚©‚çJDBCƒRƒlƒNƒVƒ‡ƒ“‚ðØ’f‚µAƒRƒlƒNƒVƒ‡ƒ“‚ðƒv[ƒ‹‚É•Ô‚µ‚Ü‚·B
-                ÄÚ‘±‚µ‚½ŒãAXV‚µ‚Ä‚¢‚È‚¢ƒf[ƒ^‚̃o[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚ð‹­§‚·‚邽‚߂ɁA
-                ‘¼‚̃gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚É‚æ‚èXV‚³‚ê‚Ä‚¢‚é‚©‚à‚µ‚ê‚È‚¢ƒIƒuƒWƒFƒNƒg‚ÉŠÖ‚µ‚āA
-                <literal>LockMode.READ</literal> ‚ð‚‚¯‚Ä <literal>Session.lock()</literal>
-                ‚ðŒÄ‚яo‚·‚±‚Æ‚ª‚Å‚«‚Ü‚·B
-                XV‚µ‚Ä <emphasis>‚¢‚é</emphasis> ƒf[ƒ^‚ðƒƒbƒN‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB
+                <literal>foo</literal> オブジェクトは、自分をロードした <literal>Session</literal>
+                をまだ知っています。
+                古いセッションの上で新しいデータベーストランザクションを開始することで、
+                新しいコネクションを取得し、そのセッションが再開されます。
+                データベーストランザクションをコミットすることで、
+                セッションからJDBCコネクションを切断し、コネクションをプールに返します。
+                再接続した後、更新していないデータのバージョンチェックを強制するために、
+                他のトランザクションにより更新されているかもしれないオブジェクトに関して、
+                <literal>LockMode.READ</literal> をつけて <literal>Session.lock()</literal>
+                を呼び出すことができます。
+                更新して <emphasis>いる</emphasis> データをロックする必要はありません。
                 
-                ’ʏíAŠg’£ <literal>Session</literal> ‚É <literal>FlushMode.MANUAL</literal>
-                ‚ðƒZƒbƒg‚µ‚Ü‚·B
-                ÅŒã‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŽüŠú‚ł̂݁A
-                ‘Θb‚Ì’†‚ŕύX‚³‚ꂽ‚·‚ׂĂðŽÀÛ‚ɉi‘±‰»‚³‚¹‚邽‚ß‚Å‚·B
-                ‚䂦‚ɁAÅŒã‚̃f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚Ì‚Ý <literal>flush()</literal>
-                ƒIƒyƒŒ[ƒVƒ‡ƒ“‚ðŠÜ‚Ý‚Ü‚·B‚»‚µ‚āA‘Θb‚ðI‚í‚点‚邽‚߂ɁA
-                ƒZƒbƒVƒ‡ƒ“‚à <literal>close()</literal> ‚µ‚Ü‚·B
+                通常、拡張 <literal>Session</literal> に <literal>FlushMode.MANUAL</literal>
+                をセットします。
+                最後のデータベーストランザクションの周期でのみ、
+                対話の中で変更されたすべてを実際に永続化させるためです。
+                ゆえに、最後のデータベーストランザクションのみ <literal>flush()</literal>
+                オペレーションを含みます。そして、対話を終わらせるために、
+                セッションも <literal>close()</literal> します。
             </para>
 
             <para>
-                ƒ†[ƒU[‚ªl—¶’†‚ɁAŠi”[‚·‚邱‚Æ‚ª‚Å‚«‚È‚¢‚­‚ç‚¢ <literal>Session</literal>
-                ‚ª‘å‚«‚¢‚Ì‚Å‚ ‚ê‚΁A‚±‚̃pƒ^[ƒ“‚Í–â‘肪‚ ‚è‚Ü‚·B
-                —Ⴆ‚΁A<literal>HttpSession</literal> ‚͉”\‚ÈŒÀ‚菬‚³‚­•Û‚‚ׂ«‚Å‚·B
-                <literal>Session</literal> ‚́i‹­§“I‚Ɂj‚PŽŸƒLƒƒƒbƒVƒ…‚Å‚à‚ ‚èA
-                ƒ[ƒh‚µ‚½ƒIƒuƒWƒFƒNƒg‚ð‚·‚×‚Ä•ÛŽ‚µ‚Ü‚·B
-                ‚¨‚»‚ç‚­AƒŠƒNƒGƒXƒg^ƒŒƒXƒ|ƒ“ƒX‚̃TƒCƒNƒ‹‚ª”‰ñ‚Å‚ ‚ê‚΁A‚±‚̐헪‚ªŽg‚¦‚Ü‚·B
+                ユーザーが考慮中に、格納することができないくらい <literal>Session</literal>
+                が大きいのであれば、このパターンは問題があります。
+                例えば、<literal>HttpSession</literal> は可能な限り小さく保つべきです。
+                <literal>Session</literal> は(強制的に)1次キャッシュでもあり、
+                ロードしたオブジェクトをすべて保持します。
+                おそらく、リクエスト/レスポンスのサイクルが数回であれば、この戦略が使えます。
                 
-                ‚P‚‚̑Θb‚Ì‚½‚ß‚¾‚¯‚É <literal>Session</literal> ‚ðŽg‚¤‚ׂ«‚Å‚·B
-                ‚È‚º‚È‚çA‚·‚®‚ɐV‘N‚Å‚È‚¢ƒf[ƒ^‚ðŽ‚Â‚½‚ß‚Å‚·B
+                1つの対話のためだけに <literal>Session</literal> を使うべきです。
+                なぜなら、すぐに新鮮でないデータを持つためです。
             </para>
 
             <para>
-                iHibernate‚̈ȑO‚̃o[ƒWƒ‡ƒ“‚́A–¾Ž¦“I‚È <literal>Session</literal> ‚Ì
-                Ø’f‚ƍĐڑ±‚ª•K—v‚¾‚Á‚½‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-                ‚±‚ê‚ç‚̃ƒ\ƒbƒh‚Í”ñ„§‚É‚È‚è‚Ü‚µ‚½B
-                ‚È‚º‚È‚çAƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ÌŠJŽn‚ƏI—¹‚Í“¯‚¶Œø‰Ê‚ª‚ ‚邽‚ß‚Å‚·Bj
+                (Hibernateの以前のバージョンは、明示的な <literal>Session</literal> の
+                切断と再接続が必要だったことに注意してください。
+                これらのメソッドは非推奨になりました。
+                なぜなら、トランザクションの開始と終了は同じ効果があるためです。)
             </para>
 
             <para>
-                Ø’f‚µ‚½ <literal>Session</literal> ‚ð‰i‘±‰»‘w‚Ì‹ß‚­‚Å•ÛŽ‚·‚ׂ«‚Å‚ ‚邱‚Æ‚É
-                ’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-                Œ¾‚¢Š·‚¦‚é‚ƁA‚R‘wŠÂ‹«‚Ì’†‚Å <literal>Session</literal> ‚ð•ÛŽ‚·‚邽‚߂ɁA
-                EJBƒXƒe[ƒgƒtƒ‹ƒZƒbƒVƒ‡ƒ“Bean‚ðŽg‚Á‚Ä‚­‚¾‚³‚¢B
-                <literal>HttpSession</literal> ‚ÉŠi”[‚·‚邽‚߂ɁAWeb‘w‚É“]‘—‚µ‚È‚¢‚Å‚­‚¾‚³‚¢
-                i•Ê‚Ì‘w‚ւ̃VƒŠƒAƒ‰ƒCƒY‚à‚µ‚È‚¢‚Å‚­‚¾‚³‚¢jB
+                切断した <literal>Session</literal> を永続化層の近くで保持すべきであることに
+                注意してください。
+                言い換えると、3層環境の中で <literal>Session</literal> を保持するために、
+                EJBステートフルセッションBeanを使ってください。
+                <literal>HttpSession</literal> に格納するために、Web層に転送しないでください
+                (別の層へのシリアライズもしないでください)。
             </para>
 
             <para>
-                Šg’£ƒZƒbƒVƒ‡ƒ“ƒpƒ^[ƒ“i‚à‚µ‚­‚́A<emphasis>session-per-conversation</emphasis>j‚́A
-                Ž©“®“I‚ȃJƒŒƒ“ƒgƒZƒbƒVƒ‡ƒ“ƒRƒ“ƒeƒLƒXƒgŠÇ—‚ðŽÀŽ{‚·‚é‚æ‚è“‚¢B
-                ‚±‚Ì‚½‚߂ɁA‚ ‚È‚½‚Í <literal>CurrentSessionContext</literal> ‚ÌŽÀ‘•‚ð‹Ÿ‹‹‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
-                Hibernate Wiki‚É‚ ‚é—á‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                拡張セッションパターン(もしくは、<emphasis>session-per-conversation</emphasis>)は、
+                自動的なカレントセッションコンテキスト管理を実施するより難しい。
+                このために、あなたは <literal>CurrentSessionContext</literal> の実装を供給する必要があります。
+                Hibernate Wikiにある例を参照してください。
             </para>
 
         </sect2>
 
         <sect2 id="transactions-optimistic-detached">
-            <title>ƒfƒ^ƒbƒ`‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ÆŽ©“®ƒo[ƒWƒ‡ƒjƒ“ƒO</title>
+            <title>デタッチされたオブジェクトと自動バージョニング</title>
 
             <para>
-                V‚µ‚¢ <literal>Session</literal>‚É‚æ‚èA‰i‘±‰»ƒXƒgƒAi–󒍁F‚c‚aj‚Ƃ̑Θb‚ª”­¶‚µ‚Ü‚·B
-                ‚Ü‚½ˆê•ûA“¯‚¶‰i‘±«ƒCƒ“ƒXƒ^ƒ“ƒX‚ªAƒf[ƒ^ƒx[ƒX‚Ƃ̑Θb‚²‚Ƃɍė˜—p‚³‚ê‚Ü‚·B
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚́AŒ³X‚Í‘¼‚Ì <literal>Session</literal> ‚э[ƒh‚³‚êA
-                ƒfƒ^ƒbƒ`‚³‚ꂽƒCƒ“ƒXƒ^ƒ“ƒX‚̏ó‘Ԃ𑀍삵‚Ü‚·B
-                ‚»‚µ‚āA<literal>Session.update()</literal> ‚à‚µ‚­‚́A<literal>Session.saveOrUpdate()</literal>A
-                <literal>Session.merge()</literal> ‚ðŽg‚Á‚āA‚»‚ê‚ç‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ðÄ’ljÁ‚µ‚Ü‚·B
+                新しい <literal>Session</literal>により、永続化ストア(訳注:DB)との対話が発生します。
+                また一方、同じ永続性インスタンスが、データベースとの対話ごとに再利用されます。
+                アプリケーションは、元々は他の <literal>Session</literal> でロードされ、
+                デタッチされたインスタンスの状態を操作します。
+                そして、<literal>Session.update()</literal> もしくは、<literal>Session.saveOrUpdate()</literal>、
+                <literal>Session.merge()</literal> を使って、それらのインスタンスを再追加します。
             </para>
 
             <programlisting><![CDATA[// foo is an instance loaded by a previous Session
@@ -1004,66 +1006,66 @@
 session.close();]]></programlisting>
 
             <para>
-                ‚±‚̏ꍇ‚à‚â‚Í‚èAHibernate‚̓tƒ‰ƒbƒVƒ…‚·‚éÛ‚ɁAƒCƒ“ƒXƒ^ƒ“ƒX‚̃o[ƒWƒ‡ƒ“‚ðƒ`ƒFƒbƒN‚µ‚Ü‚·B
-                XV‚Ì‹£‡‚ª”­¶‚µ‚½ê‡‚ɂ́A—áŠO‚ð“Š‚°‚Ü‚·B
+                この場合もやはり、Hibernateはフラッシュする際に、インスタンスのバージョンをチェックします。
+                更新の競合が発生した場合には、例外を投げます。
             </para>
 
             <para>
-                ƒIƒuƒWƒFƒNƒg‚ªC³‚³‚ê‚Ä‚¢‚È‚¢‚±‚Æ‚ðŠmM‚µ‚Ä‚¢‚éê‡‚́A
-                <literal>update()</literal> ‚Ì‘ã‚í‚è‚ɁA<literal>LockMode.READ</literal> ‚ðŽg‚Á‚āA
-                <literal>lock()</literal> ‚ðŒÄ‚яo‚·‚±‚Æ‚à‚Å‚«‚Ü‚·
-                i‚·‚ׂẴLƒƒƒbƒVƒ…‚ð‰I‰ñ‚µAƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚ðŽÀŽ{‚µ‚Ü‚·jB
+                オブジェクトが修正されていないことを確信している場合は、
+                <literal>update()</literal> の代わりに、<literal>LockMode.READ</literal> を使って、
+                <literal>lock()</literal> を呼び出すこともできます
+                (すべてのキャッシュを迂回し、バージョンチェックを実施します)。
             </para>
 
         </sect2>
 
         <sect2 id="transactions-optimistic-customizing">
-            <title>Ž©“®ƒo[ƒWƒ‡ƒjƒ“ƒO‚̃JƒXƒ^ƒ}ƒCƒY</title>
+            <title>自動バージョニングのカスタマイズ</title>
 
             <para>
-                ƒ}ƒbƒsƒ“ƒO‚Ì <literal>optimistic-lock</literal> ‘®«‚É <literal>false</literal>
-                ‚ðÝ’è‚·‚邱‚Æ‚É‚æ‚èA“Á’è‚̃vƒƒpƒeƒB‚âƒRƒŒƒNƒVƒ‡ƒ“‚Ì‚½‚ß‚É
-                Ž©“®ƒo[ƒWƒ‡ƒ“ƒCƒ“ƒNƒŠƒƒ“ƒg‚𖳌ø‚É‚Å‚«‚Ü‚·B
-                ƒvƒƒpƒeƒB‚ªƒ_[ƒeƒB‚Å‚ ‚Á‚Ä‚àAƒo[ƒWƒ‡ƒ“‚ðƒCƒ“ƒNƒŠƒƒ“ƒg‚µ‚Ü‚¹‚ñB
+                マッピングの <literal>optimistic-lock</literal> 属性に <literal>false</literal>
+                を設定することにより、特定のプロパティやコレクションのために
+                自動バージョンインクリメントを無効にできます。
+                プロパティがダーティであっても、バージョンをインクリメントしません。
             </para>
 
             <para>
-                ƒŒƒKƒV[‚̃f[ƒ^ƒx[ƒXƒXƒL[ƒ}‚́A‚µ‚΂µ‚ΌŒè“I‚Å‚ ‚èA•ÏX‚Å‚«‚Ü‚¹‚ñB
-                ‚Ü‚½‚́A‘¼‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ª“¯‚¶ƒf[ƒ^ƒx[ƒX‚ɃAƒNƒZƒX‚µ‚È‚¯‚ê‚΂Ȃ炸A
-                ‚»‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚̓o[ƒWƒ‡ƒ“”ԍ†‚âƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚³‚¦‘€ì‚·‚é•û–@‚ð’m‚è‚Ü‚¹‚ñB
-                ‚Ç‚¿‚ç‚̏ꍇ‚àAƒe[ƒuƒ‹‚Ì“Á’è‚̃Jƒ‰ƒ€‚ð“–‚Ä‚É‚µ‚āAƒo[ƒWƒ‡ƒjƒ“ƒO‚ðs‚¦‚Ü‚¹‚ñB
-                ƒo[ƒWƒ‡ƒ“‚âƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚̃vƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚¹‚¸‚ɁAƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚³‚¹‚邽‚߂ɁA
-                <literal>&lt;class&gt;</literal> ƒ}ƒbƒsƒ“ƒO‚É <literal>optimistic-lock="all"</literal> ‚ð
-                Žw’肵‚Ä‚­‚¾‚³‚¢B
-                s‚Ì‚·‚ׂẴtƒB[ƒ‹ƒh‚̏ó‘Ô‚ð”äŠr‚·‚é‚悤‚É‚È‚è‚Ü‚·B
-                ‚±‚ê‚́AHibernate‚ªŒÃ‚¢ó‘ԂƐV‚µ‚¢ó‘Ô‚ð”äŠr‚Å‚«‚éê‡‚ɁA
-                —˜_“I‚É“®ì‚·‚邾‚¯‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-                —Ⴆ‚΁Asession-per-request-with-detached-objects ‚Å‚Í‚È‚­A
-                ‚P‚‚̒·‚¢ <literal>Session</literal> ‚ðŽg‚¤ê‡‚Å‚·B
+                レガシーのデータベーススキーマは、しばしば固定的であり、変更できません。
+                または、他のアプリケーションが同じデータベースにアクセスしなければならず、
+                そのアプリケーションはバージョン番号やタイムスタンプさえ操作する方法を知りません。
+                どちらの場合も、テーブルの特定のカラムを当てにして、バージョニングを行えません。
+                バージョンやタイムスタンプのプロパティをマッピングせずに、バージョンチェックさせるために、
+                <literal>&lt;class&gt;</literal> マッピングに <literal>optimistic-lock="all"</literal> を
+                指定してください。
+                行のすべてのフィールドの状態を比較するようになります。
+                これは、Hibernateが古い状態と新しい状態を比較できる場合に、
+                理論的に動作するだけであることに注意してください。
+                例えば、session-per-request-with-detached-objects ではなく、
+                1つの長い <literal>Session</literal> を使う場合です。
             </para>
 
             <para>
-                ‚Æ‚«‚Ç‚«As‚í‚ꂽ•ÏX‚ªd‚È‚ç‚È‚¢ŒÀ‚èA“¯Žž‚ɍs‚í‚ꂽ•ÏX‚ðŽó‚¯“ü‚ê‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-                <literal>&lt;class&gt;</literal> ƒ}ƒbƒsƒ“ƒO‚É <literal>optimistic-lock="dirty"</literal>
-                ‚ðÝ’肵‚½ê‡Aƒtƒ‰ƒbƒVƒ…‚·‚éÛ‚ɁAHibernate‚̓_[ƒeƒBƒtƒB[ƒ‹ƒh‚Ì‚Ý‚ð”äŠr‚µ‚Ü‚·B
+                ときどき、行われた変更が重ならない限り、同時に行われた変更を受け入れることができます。
+                <literal>&lt;class&gt;</literal> マッピングに <literal>optimistic-lock="dirty"</literal>
+                を設定した場合、フラッシュする際に、Hibernateはダーティフィールドのみを比較します。
             </para>
 
             <para>
-                ê—p‚̃o[ƒWƒ‡ƒ“^ƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚̃Jƒ‰ƒ€‚ðŽg‚¤ê‡A
-                ‚à‚µ‚­‚Í‚·‚ׂā^ƒ_[ƒeƒB‚̃tƒB[ƒ‹ƒh‚ð”äŠr‚·‚éê‡‚Ç‚¿‚ç‚Å‚ ‚Á‚Ä‚àA
-                Hibernate‚̓Gƒ“ƒeƒBƒeƒB‚²‚Æ‚É1‚Â‚Ì <literal>UPDATE</literal> •¶‚ð
-                i“KØ‚È <literal>WHERE</literal> ß‚Æ‹¤‚ɁjŽg‚¢A
-                ƒo[ƒWƒ‡ƒ“ƒ`ƒFƒbƒN‚Əî•ñ‚̍XV‚ðs‚¢‚Ü‚·B
-                ŠÖ˜A‚·‚éƒGƒ“ƒeƒBƒeƒB‚̍ĒljÁ‚ðƒJƒXƒP[ƒh‚·‚邽‚߂ɁA
-                ˜A½“I‚ȉi‘±‰»‚ðŽg—p‚µ‚½ê‡A•s•K—v‚ȍXV‚ðŽÀs‚·‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-                ‚±‚ê‚͒ʏí–â‘è‚É‚È‚è‚Ü‚¹‚ñB
-                ‚µ‚©‚µA•ª—£‚µ‚½ƒCƒ“ƒXƒ^ƒ“ƒX‚ð•ÏX‚µ‚Ä‚¢‚È‚­‚Æ‚àA
-                ƒf[ƒ^ƒx[ƒX‚Ì <emphasis>on update</emphasis> ƒgƒŠƒK[‚ªŽÀs‚³‚ê‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-                <literal>&lt;class&gt;</literal> ƒ}ƒbƒsƒ“ƒO‚É
-                <literal>select-before-update="true"</literal> ‚ðÝ’è‚·‚邱‚Æ‚É‚æ‚Á‚āA
-                ‚±‚̐U‚é•‘‚¢‚ðƒJƒXƒ^ƒ}ƒCƒY‚Å‚«‚Ü‚·B
-                ŠmŽÀ‚ɕύX‚³‚ꂽ‚©‚ðŠm”F‚·‚邽‚߂ɁAs‚ðXV‚·‚é‘O‚ɁA
-                •K‚¸ƒCƒ“ƒXƒ^ƒ“ƒX‚ð <literal>SELECT</literal> ‚µ‚Ü‚·B
+                専用のバージョン/タイムスタンプのカラムを使う場合、
+                もしくはすべて/ダーティのフィールドを比較する場合どちらであっても、
+                Hibernateはエンティティごとに1つの <literal>UPDATE</literal> 文を
+                (適切な <literal>WHERE</literal> 節と共に)使い、
+                バージョンチェックと情報の更新を行います。
+                関連するエンティティの再追加をカスケードするために、
+                連鎖的な永続化を使用した場合、不必要な更新を実行するかもしれません。
+                これは通常問題になりません。
+                しかし、分離したインスタンスを変更していなくとも、
+                データベースの <emphasis>on update</emphasis> トリガーが実行されるかもしれません。
+                <literal>&lt;class&gt;</literal> マッピングに
+                <literal>select-before-update="true"</literal> を設定することによって、
+                この振る舞いをカスタマイズできます。
+                確実に変更されたかを確認するために、行を更新する前に、
+                必ずインスタンスを <literal>SELECT</literal> します。
             </para>
 
         </sect2>
@@ -1071,202 +1073,202 @@
     </sect1>
 
     <sect1 id="transactions-locking">
-        <title>”ߊϓIƒƒbƒN</title>
+        <title>悲観的ロック</title>
 
         <para>
-            ƒ†[ƒU‚ªƒƒbƒNí—ª‚É”Y‚Þ‚Ì‚É‘½‚­‚ÌŽžŠÔ‚ð”ï‚â‚·‚±‚Æ‚ðˆÓ}‚µ‚Ä‚¢‚Ü‚¹‚ñB
-            ’ʏí‚́AJDBCƒRƒlƒNƒVƒ‡ƒ“‚É•ª—£ƒŒƒxƒ‹‚ðŽw’肵A
-            ’P‚Ƀf[ƒ^ƒx[ƒX‚É‚·‚ׂĂ̎dŽ–‚ð‚³‚¹‚ê‚Ώ\•ª‚Å‚·B
-            ‚µ‚©‚µ‚È‚ª‚çA‚“x‚ȃ†[ƒU‚́A”r‘¼“I‚ȔߊϓIƒƒbƒN‚ðŠl“¾‚·‚邱‚Æ‚©A
-            V‚µ‚¢ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŠJŽn‚³‚ê‚éÛ‚ɃƒbƒN‚ðÄŠl“¾‚·‚邱‚Æ‚ð
-            ‚Æ‚«‚Ç‚«–]‚Þ‚©‚à‚µ‚ê‚Ü‚¹‚ñB
+            ユーザがロック戦略に悩むのに多くの時間を費やすことを意図していません。
+            通常は、JDBCコネクションに分離レベルを指定し、
+            単にデータベースにすべての仕事をさせれば十分です。
+            しかしながら、高度なユーザは、排他的な悲観的ロックを獲得することか、
+            新しいトランザクションが開始される際にロックを再獲得することを
+            ときどき望むかもしれません。
         </para>
 
         <para>
-            Hibernate‚Í‚¢‚‚àƒf[ƒ^ƒx[ƒX‚̃ƒbƒN‚ÌŽd‘g‚Ý‚ðŽg‚¢‚Ü‚·B
-            ƒƒ‚ƒŠ“à‚̃IƒuƒWƒFƒNƒg‚ðŒˆ‚µ‚ăƒbƒN‚µ‚Ü‚¹‚ñI
+            Hibernateはいつもデータベースのロックの仕組みを使います。
+            メモリ内のオブジェクトを決してロックしません!
         </para>
 
         <para>
-            <literal>LockMode</literal> ƒNƒ‰ƒX‚́AHibernate‚ªŠl“¾‚Å‚«‚éˆÙ‚Ȃ郍ƒbƒNƒŒƒxƒ‹‚ð’è‹`‚µ‚Ü‚·B
-            ˆÈ‰º‚ÌŽd‘g‚Ý‚É‚æ‚èAƒƒbƒN‚ðŠl“¾‚Å‚«‚Ü‚·B
+            <literal>LockMode</literal> クラスは、Hibernateが獲得できる異なるロックレベルを定義します。
+            以下の仕組みにより、ロックを獲得できます。
         </para>
 
         <itemizedlist spacing="compact">
             <listitem>
                 <para>
-                    <literal>LockMode.WRITE</literal> ‚́A
-                    Hibernate‚ªs‚ðXV‚à‚µ‚­‚Í‘}“ü‚·‚éÛ‚ÉŽ©“®“I‚É“¾‚ç‚ê‚Ü‚·B
+                    <literal>LockMode.WRITE</literal> は、
+                    Hibernateが行を更新もしくは挿入する際に自動的に得られます。
                 </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
+                    <literal>LockMode.UPGRADE</literal> は、
+                    データベースでサポートされている文法 <literal>SELECT ... FOR UPDATE</literal>
+                    を使った、明示的なユーザー要求により得られるかもしれません。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>LockMode.UPGRADE_NOWAIT</literal> ‚́A
-                    Oracle ‚Å <literal>SELECT ... FOR UPDATE NOWAIT</literal> ‚ðŽg‚Á‚½A
-                    –¾Ž¦“I‚ȃ†[ƒU[—v‹‚É‚æ‚蓾‚ç‚ê‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
+                    <literal>LockMode.UPGRADE_NOWAIT</literal> は、
+                    Oracle で <literal>SELECT ... FOR UPDATE NOWAIT</literal> を使った、
+                    明示的なユーザー要求により得られるかもしれません。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>LockMode.READ</literal> ‚́A
-                    Repeatable Read‚à‚µ‚­‚ÍSerializable‚Ì•ª—£ƒŒƒxƒ‹‚ŁAƒf[ƒ^‚ð“Ç‚ñ‚¾Û‚ÉŽ©“®“I‚É“¾‚ç‚ê‚Ü‚·B
-                    ‚¨‚»‚ç‚­A–¾Ž¦“I‚ȃ†[ƒU[—v‹‚É‚æ‚èAÄŽæ“¾‚³‚ê‚Ü‚·B
+                    <literal>LockMode.READ</literal> は、
+                    Repeatable ReadもしくはSerializableの分離レベルで、データを読んだ際に自動的に得られます。
+                    おそらく、明示的なユーザー要求により、再取得されます。
                 </para>
             </listitem>
         <listitem>
         <para>
-            <literal>LockMode.NONE</literal> ‚́AƒƒbƒN‚µ‚È‚¢‚±‚Æ‚ð•\‚µ‚Ü‚·B
-            <literal>Transaction</literal> ‚̏I‚í‚è‚ɁA
-            ‚·‚ׂẴIƒuƒWƒFƒNƒg‚Í‚±‚̃ƒbƒNƒ‚[ƒh‚ɐ؂è‘Ö‚í‚è‚Ü‚·B
-            <literal>update()</literal> ‚â <literal>saveOrUpdate()</literal> ‚ðŒÄ‚яo‚·‚±‚Æ‚É‚æ‚Á‚āA
-            ƒZƒbƒVƒ‡ƒ“‚ÉŠÖ˜A•t‚¯‚ç‚ꂽƒIƒuƒWƒFƒNƒg‚àA‚±‚̃ƒbƒNƒ‚[ƒh‚ŏo”­‚µ‚Ü‚·B
+            <literal>LockMode.NONE</literal> は、ロックしないことを表します。
+            <literal>Transaction</literal> の終わりに、
+            すべてのオブジェクトはこのロックモードに切り替わります。
+            <literal>update()</literal> や <literal>saveOrUpdate()</literal> を呼び出すことによって、
+            セッションに関連付けられたオブジェクトも、このロックモードで出発します。
         </para>
         </listitem>
         </itemizedlist>
 
         <para>
-            u–¾Ž¦“I‚ȃ†[ƒU[—v‹v‚Ƃ́A‰º‹L‚Ì•û–@‚Ì‚P‚‚Ō¾‚¢•\‚¹‚Ü‚·B
+            「明示的なユーザー要求」とは、下記の方法の1つで言い表せます。
         </para>
 
         <itemizedlist spacing="compact">
             <listitem>
                 <para>
-                    <literal>LockMode</literal> ‚ðŽw’肵‚½ <literal>Session.load()</literal> ‚̌Ăяo‚µB
+                    <literal>LockMode</literal> を指定した <literal>Session.load()</literal> の呼び出し。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>Session.lock()</literal> ‚̌Ăяo‚µB
+                    <literal>Session.lock()</literal> の呼び出し。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>Query.setLockMode()</literal> ‚̌Ăяo‚µB
+                    <literal>Query.setLockMode()</literal> の呼び出し。
                 </para>
             </listitem>
         </itemizedlist>
 
         <para>
-            <literal>UPGRADE</literal> ‚à‚µ‚­‚Í <literal>UPGRADE_NOWAIT</literal> ‚ªŽw’肳‚ꂽ
-            <literal>Session.load()</literal> ‚ªŒÄ‚яo‚³‚êA
-            ‚©‚—v‹‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ªƒZƒbƒVƒ‡ƒ“‚É‚æ‚Á‚Ä‚Ü‚¾ƒ[ƒh‚³‚ê‚Ä‚¢‚È‚©‚Á‚½ê‡‚́A
-            <literal>SELECT ... FOR UPDATE</literal> ‚ðŽg‚Á‚āAƒIƒuƒWƒFƒNƒg‚ªƒ[ƒh‚³‚ê‚Ü‚·B
-            <literal>load()</literal> ‚ŌĂяo‚³‚ꂽƒIƒuƒWƒFƒNƒg‚ªA
-            —v‹‚³‚ê‚Ä‚¢‚é‚æ‚萧ŒÀ‚ª­‚È‚¢ƒƒbƒN‚Å‚·‚łɃ[ƒh‚³‚ê‚Ä‚¢‚½ê‡‚́A
-            Hibernate‚Í‚»‚̃IƒuƒWƒFƒNƒg‚Ì‚½‚߂ɁA<literal>lock()</literal> ‚ðŒÄ‚яo‚µ‚Ü‚·B
+            <literal>UPGRADE</literal> もしくは <literal>UPGRADE_NOWAIT</literal> が指定された
+            <literal>Session.load()</literal> が呼び出され、
+            かつ要求されたオブジェクトがセッションによってまだロードされていなかった場合は、
+            <literal>SELECT ... FOR UPDATE</literal> を使って、オブジェクトがロードされます。
+            <literal>load()</literal> で呼び出されたオブジェクトが、
+            要求されているより制限が少ないロックですでにロードされていた場合は、
+            Hibernateはそのオブジェクトのために、<literal>lock()</literal> を呼び出します。
         </para>
 
         <para>
-            Žw’肳‚ꂽƒƒbƒNƒ‚[ƒh‚ª <literal>READ</literal> ‚à‚µ‚­‚́A<literal>UPGRADE</literal>A
-            <literal>UPGRADE_NOWAIT</literal> ‚¾‚Á‚½ê‡A<literal>Session.lock()</literal>
-            ‚́Aƒo[ƒWƒ‡ƒ“”ԍ†‚̃`ƒFƒbƒN‚ðŽÀŽ{‚µ‚Ü‚·B
-            i<literal>UPGRADE</literal> ‚à‚µ‚­‚Í <literal>UPGRADE_NOWAIT</literal> ‚̏ꍇA
-            <literal>SELECT ... FOR UPDATE</literal> ‚ªŽg‚í‚ê‚Ü‚·Bj
+            指定されたロックモードが <literal>READ</literal> もしくは、<literal>UPGRADE</literal>、
+            <literal>UPGRADE_NOWAIT</literal> だった場合、<literal>Session.lock()</literal>
+            は、バージョン番号のチェックを実施します。
+            (<literal>UPGRADE</literal> もしくは <literal>UPGRADE_NOWAIT</literal> の場合、
+            <literal>SELECT ... FOR UPDATE</literal> が使われます。)
         </para>
 
         <para>
-            ƒf[ƒ^ƒx[ƒX‚ª—v‹‚³‚ꂽƒƒbƒNƒ‚[ƒh‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚È‚¢ê‡A
-            Hibernate‚́i—áŠO‚ð“Š‚°‚é‘ã‚í‚è‚ɁAj“KØ‚È‘ã‚í‚è‚̃‚[ƒh‚ðŽg‚¢‚Ü‚·B
-            ‚±‚ê‚́AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ªƒ|[ƒ^ƒuƒ‹‚Å‚ ‚邱‚Æ‚ð•ÛØ‚µ‚Ü‚·B
+            データベースが要求されたロックモードをサポートしていない場合、
+            Hibernateは(例外を投げる代わりに、)適切な代わりのモードを使います。
+            これは、アプリケーションがポータブルであることを保証します。
         </para>
 
     </sect1>
 
     <sect1 id="transactions-connection-release">
-        <title>ƒRƒlƒNƒVƒ‡ƒ“ŠJ•úƒ‚[ƒh</title>
+        <title>コネクション開放モード</title>
 
         <para>
-            Hibernate‚̃ŒƒKƒV[i2.xj‚ÌJDBCƒRƒlƒNƒVƒ‡ƒ“ŠÇ—‚ÉŠÖ‚·‚éU‚é•‘‚¢‚́A
-            Å‰‚É•K—v‚Æ‚µ‚½Û‚É <literal>Session</literal> ‚ªƒRƒlƒNƒVƒ‡ƒ“‚𓾂é‚Æ‚¢‚¤‚à‚Ì‚Å‚µ‚½B
-            ‚»‚µ‚āAƒZƒbƒVƒ‡ƒ“‚ª•Â‚¶‚ç‚ê‚é‚܂ŁA‚»‚̃RƒlƒNƒVƒ‡ƒ“‚ð•ÛŽ‚µ‚Ü‚µ‚½B
-            Hibernate 3.x‚́AƒZƒbƒVƒ‡ƒ“‚ÉJDBCƒRƒlƒNƒVƒ‡ƒ“‚ð‚ǂ̂悤‚ɐ§Œä‚·‚é‚©‚ð“`‚¦‚é
-            ƒRƒlƒNƒVƒ‡ƒ“ŠJ•úƒ‚[ƒh‚Æ‚¢‚¤ŠT”O‚𓱓ü‚µ‚Ü‚µ‚½B
-            ˆÈ~‚Ì‹c˜_‚́A\¬‚³‚ꂽ <literal>ConnectionProvider</literal> ‚ð’Ê‚µ‚Ä’ñ‹Ÿ‚³‚ê‚é
-            ƒRƒlƒNƒVƒ‡ƒ“‚É“KØ‚Å‚ ‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-            ˆÙ‚È‚éŠJ•úƒ‚[ƒh‚́A<literal>org.hibernate.ConnectionReleaseMode</literal> ‚É
-            —ñ‹“‚³‚ꂽ’l‚É‚æ‚èŠm”F‚³‚ê‚Ü‚·B
+            Hibernateのレガシー(2.x)のJDBCコネクション管理に関する振る舞いは、
+            最初に必要とした際に <literal>Session</literal> がコネクションを得るというものでした。
+            そして、セッションが閉じられるまで、そのコネクションを保持しました。
+            Hibernate 3.xは、セッションにJDBCコネクションをどのように制御するかを伝える
+            コネクション開放モードという概念を導入しました。
+            以降の議論は、構成された <literal>ConnectionProvider</literal> を通して提供される
+            コネクションに適切であることに注意してください。
+            異なる開放モードは、<literal>org.hibernate.ConnectionReleaseMode</literal> に
+            列挙された値により確認されます。
         </para>
 
         <itemizedlist spacing="compact">
             <listitem>
                 <para>
-                    <literal>ON_CLOSE</literal> - –{Ž¿“I‚ɏã‹L‚ŏq‚ׂ½ƒŒƒKƒV[‚̐U‚é•‘‚¢‚Å‚·B
-                    HibernateƒZƒbƒVƒ‡ƒ“‚͍ŏ‰‚ÉJDBCƒAƒNƒZƒX‚ðŽÀs‚·‚é•K—v‚ª‚ ‚éÛ‚ɃRƒlƒNƒVƒ‡ƒ“‚𓾂܂·B
-                    ‚»‚µ‚āAƒZƒbƒVƒ‡ƒ“‚ª•Â‚¶‚ç‚ê‚é‚܂ŁAƒRƒlƒNƒVƒ‡ƒ“‚ð•ÛŽ‚µ‚Ü‚·B
+                    <literal>ON_CLOSE</literal> - 本質的に上記で述べたレガシーの振る舞いです。
+                    Hibernateセッションは最初にJDBCアクセスを実行する必要がある際にコネクションを得ます。
+                    そして、セッションが閉じられるまで、コネクションを保持します。
                 </para>
             </listitem>
             <listitem>
                 <para>
                     <literal>AFTER_TRANSACTION</literal> - 
-                    <literal>org.hibernate.Transaction</literal> ‚ªŠ®—¹‚µ‚½ŒãA
-                    ƒRƒlƒNƒVƒ‡ƒ“‚ðŠJ•ú‚µ‚Ü‚·B
+                    <literal>org.hibernate.Transaction</literal> が完了した後、
+                    コネクションを開放します。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>AFTER_STATEMENT</literal> iÏ‹É“I‚ÈŠJ•ú‚Æ‚àŒÄ‚΂ê‚éj -
-                    ‚·‚ׂẴXƒe[ƒgƒƒ“ƒg‚ª‚»‚ꂼ‚êŽÀs‚³‚ꂽŒãAƒRƒlƒNƒVƒ‡ƒ“‚ªŠJ•ú‚³‚ê‚Ü‚·B
-                    ƒXƒe[ƒgƒƒ“ƒg‚ªƒZƒbƒVƒ‡ƒ“‚ÉŠÖ˜A‚·‚郊ƒ\[ƒX‚ðŠJ‚¢‚½‚Ü‚Ü‚É‚·‚éê‡‚́A
-                    ‚±‚̐ϋɓI‚ÈŠJ•ú‚̓XƒLƒbƒv‚³‚ê‚Ü‚·B
-                    ¡‚Ì‚Æ‚±‚ëA‚±‚ꂪ‹N‚±‚é‚Ì‚Í <literal>org.hibernate.ScrollableResults</literal>
-                    ‚ªŽg‚í‚ê‚éê‡‚Ì‚Ý‚Å‚·B
+                    <literal>AFTER_STATEMENT</literal> (積極的な開放とも呼ばれる) -
+                    すべてのステートメントがそれぞれ実行された後、コネクションが開放されます。
+                    ステートメントがセッションに関連するリソースを開いたままにする場合は、
+                    この積極的な開放はスキップされます。
+                    今のところ、これが起こるのは <literal>org.hibernate.ScrollableResults</literal>
+                    が使われる場合のみです。
                 </para>
             </listitem>
         </itemizedlist>
 
         <para>
-            ƒRƒ“ƒtƒBƒOƒŒ[ƒVƒ‡ƒ“ƒpƒ‰ƒ[ƒ^‚Ì <literal>hibernate.connection.release_mode</literal>
-            ‚́AŽg—p‚·‚éŠJ•úƒ‚[ƒh‚ðŽw’è‚·‚邽‚ß‚ÉŽg‚¢‚Ü‚·B
-            Žw’è‚Å‚«‚é’l‚ÍŽŸ‚Ì’Ê‚è‚Å‚·B
+            コンフィグレーションパラメータの <literal>hibernate.connection.release_mode</literal>
+            は、使用する開放モードを指定するために使います。
+            指定できる値は次の通りです。
         </para>
 
         <itemizedlist spacing="compact">
             <listitem>
                 <para>
-                    <literal>auto</literal> iƒfƒtƒHƒ‹ƒgj - ‚±‚ê‚ð‘I‘ð‚·‚é‚Æ
+                    <literal>auto</literal> (デフォルト) - これを選択すると
                     <literal>org.hibernate.transaction.TransactionFactory.getDefaultReleaseMode()</literal>
-                    ƒƒ\ƒbƒh‚É‚æ‚Á‚Ä•Ô‚³‚ê‚éŠJ•úƒ‚[ƒh‚ɈϏ÷‚³‚ê‚Ü‚·B
-                    ‚±‚̃ƒ\ƒbƒh‚́A
-                    JTATransactionFactory‚É‚ÍConnectionReleaseMode.AFTER_STATEMENT‚ð•Ô‚µA
-                    JDBCTransactionFactory‚É‚ÍConnectionReleaseMode.AFTER_TRANSACTION‚ð•Ô‚µ‚Ü‚·B
-                    ‚±‚̃fƒtƒHƒ‹ƒg‚̐U‚é•‘‚¢‚ð•Ï‚¦‚Ä‚¤‚Ü‚­‚¢‚Á‚½ŽŽ‚µ‚ª‚ ‚è‚Ü‚¹‚ñB
-                    ‚»‚ê‚́A‚±‚̐ݒè’l‚ªŒ´ˆö‚Å‹N‚±‚éáŠQ‚́A
-                    ƒ†[ƒUƒR[ƒh‚Ì’†‚ŃoƒO‚âŠÔˆá‚Á‚½ðŒ‚É‚È‚è‚â‚·‚¢‚©‚ç‚Å‚·B
+                    メソッドによって返される開放モードに委譲されます。
+                    このメソッドは、
+                    JTATransactionFactoryにはConnectionReleaseMode.AFTER_STATEMENTを返し、
+                    JDBCTransactionFactoryにはConnectionReleaseMode.AFTER_TRANSACTIONを返します。
+                    このデフォルトの振る舞いを変えてうまくいった試しがありません。
+                    それは、この設定値が原因で起こる障害は、
+                    ユーザコードの中でバグや間違った条件になりやすいからです。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>on_close</literal> - ConnectionReleaseMode.ON_CLOSE‚ðŽg‚¢‚Ü‚·B
-                    ‚±‚̐ݒè‚ÍŒã•ûŒÝŠ·‚Ì‚½‚ß‚ÉŽc‚³‚ê‚Ä‚¢‚Ü‚·‚ªAŽg‚í‚È‚¢‚±‚Æ‚ð‹­‚­Š©‚ß‚Ü‚·B
+                    <literal>on_close</literal> - ConnectionReleaseMode.ON_CLOSEを使います。
+                    この設定は後方互換のために残されていますが、使わないことを強く勧めます。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>after_transaction</literal> - ConnectionReleaseMode.AFTER_TRANSACTION‚ðŽg‚¢‚Ü‚·B
-                    ‚±‚̐ݒè‚ÍJTAŠÂ‹«‚Ì’†‚Å‚ÍŽg‚¤‚ׂ«‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-                    ConnectionReleaseMode.AFTER_TRANSACTION‚ðŽw’肵AŽ©“®ƒRƒ~ƒbƒgƒ‚[ƒh‚Ì’†‚ł́A
-                    ŠJ•úƒ‚[ƒh‚ªAFTER_STATEMENT‚Å‚ ‚é‚©‚̂悤‚ɁAƒRƒlƒNƒVƒ‡ƒ“‚ÍŠJ•ú‚³‚ê‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+                    <literal>after_transaction</literal> - ConnectionReleaseMode.AFTER_TRANSACTIONを使います。
+                    この設定はJTA環境の中では使うべきではありません。
+                    ConnectionReleaseMode.AFTER_TRANSACTIONを指定し、自動コミットモードの中では、
+                    開放モードがAFTER_STATEMENTであるかのように、コネクションは開放されることに注意してください。
                 </para>
             </listitem>
             <listitem>
                 <para>
-                    <literal>after_statement</literal> - ConnectionReleaseMode.AFTER_STATEMENT‚ðŽg‚¢‚Ü‚·B
-                    ‚³‚ç‚ɁAÝ’肳‚ꂽ <literal>ConnectionProvider</literal> ‚́A
-                    ‚±‚̐ݒè (<literal>supportsAggressiveRelease()</literal>) ‚ðƒTƒ|[ƒg‚·‚é‚©‚Ç‚¤‚©
-                    ‚𒲂ׂ邽‚ß‚ÉŽg—p‚µ‚Ü‚·B
-                    ‚à‚µ‚»‚¤‚Å‚È‚¢ê‡AŠJ•úƒ‚[ƒh‚ÍConnectionReleaseMode.AFTER_TRANSACTION
-                    ‚ɃŠƒZƒbƒg‚³‚ê‚Ü‚·B
-                    ‚±‚̐ݒè‚ÍŽŸ‚̊‹«‚ł݈̂À‘S‚Å‚·B
-                    ‚»‚ê‚́A<literal>ConnectionProvider.getConnection()</literal> ‚ðŒÄ‚яo‚·‚½‚Ñ‚É
-                    Šî”Õ‚Æ‚È‚éJDBCƒRƒlƒNƒVƒ‡ƒ“‚ª“¯‚¶‚à‚Ì‚ðŽæ“¾‚Å‚«‚é‚©A
-                    “¯‚¶ƒRƒlƒNƒVƒ‡ƒ“‚ª“¾‚ç‚ê‚邱‚Æ‚ª–â‘è‚Æ‚È‚ç‚È‚¢Ž©“®ƒRƒ~ƒbƒgŠÂ‹«‚Ì’†‚Å‚·B
+                    <literal>after_statement</literal> - ConnectionReleaseMode.AFTER_STATEMENTを使います。
+                    さらに、設定された <literal>ConnectionProvider</literal> は、
+                    この設定 (<literal>supportsAggressiveRelease()</literal>) をサポートするかどうか
+                    を調べるために使用します。
+                    もしそうでない場合、開放モードはConnectionReleaseMode.AFTER_TRANSACTION
+                    にリセットされます。
+                    この設定は次の環境でのみ安全です。
+                    それは、<literal>ConnectionProvider.getConnection()</literal> を呼び出すたびに
+                    基盤となるJDBCコネクションが同じものを取得できるか、
+                    同じコネクションが得られることが問題とならない自動コミット環境の中です。
                 </para>
             </listitem>
         </itemizedlist>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/tutorial.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/tutorial.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/tutorial.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,53 +1,55 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="tutorial">
-    <title>Hibernate‚Ì“±“ü</title>
+    <title>Hibernateの導入</title>
     
     <sect1 id="tutorial-intro" revision="1">
-        <title>‘O‘‚«</title>
+        <title>前書き</title>
         
         <para>
-            ‚±‚̏͂ÍHibernate‚ð‰‚ß‚ÄŽg‚¤ƒ†[ƒUŒü‚¯‚Ì“ü–å“I‚ȃ`ƒ…[ƒgƒŠƒAƒ‹‚Å‚·B
-            ƒCƒ“ƒƒ‚ƒŠƒf[ƒ^ƒx[ƒX‚ðŽg‚¤ŠÈ’P‚ȃRƒ}ƒ“ƒhƒ‰ƒCƒ“ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚©‚çŽn‚߁A
-            ˆê•àˆê•à‚í‚©‚è‚â‚·‚¢‚â‚è•û‚ÅŠJ”­‚ði‚ß‚Ü‚·B
+            この章はHibernateを初めて使うユーザ向けの入門的なチュートリアルです。
+            インメモリデータベースを使う簡単なコマンドラインアプリケーションから始め、
+            一歩一歩わかりやすいやり方で開発を進めます。
         </para>
 
         <para>
-            ‚±‚̃`ƒ…[ƒgƒŠƒAƒ‹‚ÍHibernate‚ð‰‚ß‚ÄŽg‚¤ƒ†[ƒU‚ð‘z’肵‚Ä‚¢‚Ü‚·‚ªA
-            —‰ð‚·‚é‚É‚ÍJava‚ÆSQL‚ɂ‚¢‚Ä‚Ì’mŽ¯‚ª•K—v‚Å‚·B
-            ‚±‚ê‚ÍMichael Gloegl‚ÌŽè‚É‚æ‚éƒ`ƒ…[ƒgƒŠƒAƒ‹‚ð‰º•~‚«‚É‚µ‚Ä‚¢‚Ü‚·‚ªA
-            ‚±‚±‚ŃT[ƒhƒp[ƒeƒBƒ‰ƒCƒuƒ‰ƒŠ‚ÆŒ¾‚Á‚Ä‚¢‚é‚̂́AJDK 1.4‚Æ5.0—p‚Ì‚à‚Ì‚Å‚·B
-            JDK 1.3‚ð—˜—p‚·‚é‚Ì‚Å‚ ‚ê‚Α¼‚̃‰ƒCƒuƒ‰ƒŠ‚ª•K—v‚©‚à‚µ‚ê‚Ü‚¹‚ñB
+            このチュートリアルはHibernateを初めて使うユーザを想定していますが、
+            理解するにはJavaとSQLについての知識が必要です。
+            これはMichael Gloeglの手によるチュートリアルを下敷きにしていますが、
+            ここでサードパーティライブラリと言っているのは、JDK 1.4と5.0用のものです。
+            JDK 1.3を利用するのであれば他のライブラリが必要かもしれません。
         </para>
 
         <para>
-             ƒ`ƒ…[ƒgƒŠƒAƒ‹‚̃\[ƒXƒR[ƒh‚ÍHibernateƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚Ì 
-             <literal>doc/reference/tutorial/</literal> ‚É‚ ‚è‚Ü‚·B
+             チュートリアルのソースコードはHibernateディストリビューションの 
+             <literal>doc/reference/tutorial/</literal> にあります。
         </para>
 
     </sect1>
     
     <sect1 id="tutorial-firstapp" revision="2">
-        <title>ƒp[ƒg1 - ‰‚ß‚Ä‚ÌHibernateƒAƒvƒŠƒP[ƒVƒ‡ƒ“</title>
+        <title>パート1 - 初めてのHibernateアプリケーション</title>
 
         <para>
-            Å‰‚ɃRƒ“ƒ\[ƒ‹ƒx[ƒX‚ÌŠÈ’P‚ÈHibernateƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðì¬‚µ‚Ü‚·B
-            Javaƒf[ƒ^ƒx[ƒXiHSQL DBj‚ð—˜—p‚·‚é‚̂ŁA
-            ƒf[ƒ^ƒx[ƒXƒT[ƒo‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB
+            最初にコンソールベースの簡単なHibernateアプリケーションを作成します。
+            Javaデータベース(HSQL DB)を利用するので、
+            データベースサーバをインストールする必要はありません。
         </para>
 
         <para>
-            ‰¼‚ɏ¬‚³‚ȃf[ƒ^ƒx[ƒXƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ª•K—v‚¾‚Æ‚µ‚Ü‚µ‚傤B
-            ‚»‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ɂ͏oÈ‚µ‚½‚¢ƒCƒxƒ“ƒg‚ƁA
-            ‚»‚̃Cƒxƒ“ƒg‚̃zƒXƒg‚ɂ‚¢‚Ă̏î•ñ‚ðŠi”[‚·‚é‚à‚Ì‚Æ‚µ‚Ü‚·B
+            仮に小さなデータベースアプリケーションが必要だとしましょう。
+            そのアプリケーションには出席したいイベントと、
+            そのイベントのホストについての情報を格納するものとします。
         </para>
             
         <para>
-            ‚Ü‚¸Å‰‚É‚·‚邱‚Æ‚ÍŠJ”­—p‚̃fƒBƒŒƒNƒgƒŠ‚ðƒZƒbƒgƒAƒbƒv‚µ‚āA
-            •K—v‚Æ‚È‚é‚·‚ׂĂÌJavaƒ‰ƒCƒuƒ‰ƒŠ‚ð”z’u‚·‚邱‚Æ‚Å‚·B
-            HibernateƒEƒFƒuƒTƒCƒg‚©‚çHibernateƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚ðƒ_ƒEƒ“ƒ[ƒh‚µ‚Ä‚­‚¾‚³‚¢B
-            ƒtƒ@ƒCƒ‹‚ð‰ð“€‚µ‚Ä <literal>/lib</literal> ‚É‚ ‚é•K—v‚ȃ‰ƒCƒuƒ‰ƒŠ‚Ì‚·‚ׂĂðA
-            V‚µ‚¢ŠJ”­—pƒfƒBƒŒƒNƒgƒŠ‚Ì <literal>/lib</literal> ƒfƒBƒŒƒNƒgƒŠ‚É”z’u‚µ‚Ä‚­‚¾‚³‚¢B
-            ‚±‚̂悤‚É‚È‚Á‚Ä‚¢‚é‚Í‚¸‚Å‚·F
+            まず最初にすることは開発用のディレクトリをセットアップして、
+            必要となるすべてのJavaライブラリを配置することです。
+            HibernateウェブサイトからHibernateディストリビューションをダウンロードしてください。
+            ファイルを解凍して <literal>/lib</literal> にある必要なライブラリのすべてを、
+            新しい開発用ディレクトリの <literal>/lib</literal> ディレクトリに配置してください。
+            このようになっているはずです:
         </para>
             
         <programlisting><![CDATA[.
@@ -64,24 +66,24 @@
   log4j.jar ]]></programlisting>
 
         <para>
-            ‚±‚ꂪ <emphasis>–{ƒhƒLƒ…ƒƒ“ƒgŽ·•MŽž“_‚Å‚Ì</emphasis> Hibernate‚Ì•K—vÅ’áŒÀ‚̃‰ƒCƒuƒ‰ƒŠ‚Å‚·
-            iƒƒCƒ“ƒA[ƒJƒCƒu‚Ìhibernate3.jar‚àƒRƒs[‚µ‚Ä‚¢‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢jB
-            Hibernate‚̃o[ƒWƒ‡ƒ“‚É‚æ‚Á‚Ä‚Í‚³‚ç‚É•K—v‚ȃ‰ƒCƒuƒ‰ƒŠ‚âA•s—v‚ȃ‰ƒCƒuƒ‰ƒŠ‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-            HibernateƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚Ì <literal>lib/</literal> ƒfƒBƒŒƒNƒgƒŠ‚É‚ ‚é 
-            <literal>README.txt</literal> ƒtƒ@ƒCƒ‹‚ðŒ©‚Ä‚­‚¾‚³‚¢B
-            •K{‚Ü‚½‚̓IƒvƒVƒ‡ƒ“‚̃T[ƒhƒp[ƒeƒBƒ‰ƒCƒuƒ‰ƒŠ‚ɂ‚¢‚Ă̏î•ñ‚ðÚ‚¹‚Ä‚¢‚Ü‚·
-            iŽÀÛLog4j‚Í•K{‚Å‚Í‚ ‚è‚Ü‚¹‚ñ‚ªA‘½‚­‚ÌŠJ”­ŽÒ‚ªD‚ñ‚Å‚¢‚Ü‚·jB
+            これが <emphasis>本ドキュメント執筆時点での</emphasis> Hibernateの必要最低限のライブラリです
+            (メインアーカイブのhibernate3.jarもコピーしていることに注意してください)。
+            Hibernateのバージョンによってはさらに必要なライブラリや、不要なライブラリがあるかもしれません。
+            Hibernateディストリビューションの <literal>lib/</literal> ディレクトリにある 
+            <literal>README.txt</literal> ファイルを見てください。
+            必須またはオプションのサードパーティライブラリについての情報を載せています
+            (実際Log4jは必須ではありませんが、多くの開発者が好んでいます)。
         </para>
 
         <para>
-            ŽŸ‚Ƀf[ƒ^ƒx[ƒX‚ÉŠi”[‚·‚éƒCƒxƒ“ƒg‚ð•\‚·ƒNƒ‰ƒX‚ðì¬‚µ‚Ü‚·B
+            次にデータベースに格納するイベントを表すクラスを作成します。
         </para>
       
         <sect2 id="tutorial-firstapp-firstclass" revision="1">
-            <title>Å‰‚̃Nƒ‰ƒX</title>
+            <title>最初のクラス</title>
             
             <para>
-				Å‰‚̉i‘±ƒNƒ‰ƒX‚́AƒvƒƒpƒeƒB‚ð‚¢‚­‚‚©Ž‚ƒVƒ“ƒvƒ‹‚ÈJavaBean‚Å‚·F
+				最初の永続クラスは、プロパティをいくつか持つシンプルなJavaBeanです:
             </para>
 
             <programlisting><![CDATA[package events;
@@ -122,42 +124,42 @@
 }]]></programlisting>
 
             <para>
-                ‚²——‚Ì‚Æ‚¨‚èA‚±‚̃Nƒ‰ƒX‚̓tƒB[ƒ‹ƒh‚ªprivate‚̉Ž‹«‚ðŽ‚Á‚Ä‚¢‚é‚Ì‚Æ“¯Žž‚ɁA
-                JavaBean•W€‚̃Qƒbƒ^[AƒZƒbƒ^[ƒƒ\ƒbƒh‚Ì–½–¼‹K–ñ‚ɏ]‚Á‚Ä‚¢‚Ü‚·B
-                ‚±‚̂悤‚Ȑ݌v‚͐„§‚³‚ê‚Ä‚¢‚Ü‚·‚ª•K{‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-                ƒAƒNƒZƒTƒƒ\ƒbƒh‚ðÝ‚¯‚é‚̂̓Šƒtƒ@ƒNƒ^ƒŠƒ“ƒO‚ðl‚¦‚½ŠæŒ’«‚Ì‚½‚߂ŁA
-                Hibernate‚̓tƒB[ƒ‹ƒh‚É’¼ÚƒAƒNƒZƒX‚·‚邱‚Æ‚à‰Â”\‚Å‚·B
-                ˆø”‚Ì‚È‚¢ƒRƒ“ƒXƒgƒ‰ƒNƒ^‚́AƒŠƒtƒŒƒNƒVƒ‡ƒ“‚Å‚±‚̃Nƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ðì¬‚·‚邽‚ß‚É
-                •K—v‚Å‚·B
+                ご覧のとおり、このクラスはフィールドがprivateの可視性を持っているのと同時に、
+                JavaBean標準のゲッター、セッターメソッドの命名規約に従っています。
+                このような設計は推奨されていますが必須ではありません。
+                アクセサメソッドを設けるのはリファクタリングを考えた頑健性のためで、
+                Hibernateはフィールドに直接アクセスすることも可能です。
+                引数のないコンストラクタは、リフレクションでこのクラスのインスタンスを作成するために
+                必要です。
             </para>
 
             <para>
-                <literal>id</literal> ƒvƒƒpƒeƒB‚́A‚ ‚é“Á’è‚̃Cƒxƒ“ƒg‚ɑ΂·‚郆ƒj[ƒN‚ÈŽ¯•ÊŽq‚Ì’l‚ð•ÛŽ‚µ‚Ü‚·B
-                Hibernate‚ÌŠ®‘S‚È‹@”\‚ðŽg‚¢‚½‚¯‚ê‚΁A‚·‚ׂẲi‘±ƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒX
-                i‚»‚ê‚قǏd—v‚Å‚Í‚È‚¢ˆË‘¶ƒNƒ‰ƒX‚Æ‚¢‚¤‚à‚Ì‚à‚ ‚è‚Ü‚·j
-                ‚É‚±‚̂悤‚ÈŽ¯•ÊŽqƒvƒƒpƒeƒB‚ª•K—v‚É‚È‚è‚Ü‚·B
-                Ž–ŽÀã‚Ù‚Æ‚ñ‚ǂ̃AƒvƒŠƒP[ƒVƒ‡ƒ“i“Á‚ÉwebƒAƒvƒŠƒP[ƒVƒ‡ƒ“j‚ł́A
-                Ž¯•ÊŽq‚ŃIƒuƒWƒFƒNƒg‚ð‹æ•Ê‚·‚é•K—v‚ª‚ ‚邽‚߁A‚±‚ê‚͐§ŒÀ‚Æ‚¢‚¤‚æ‚è‚à“Á’¥‚Å‚ ‚é‚ƍl‚¦‚é‚ׂ«‚Å‚·B
-                ‚µ‚©‚µ’ʏíƒIƒuƒWƒFƒNƒg‚ÌID‚𑀍삷‚é‚悤‚È‚±‚Æ‚Í‚µ‚Ü‚¹‚ñB
-                ‚»‚Ì‚½‚߃Zƒbƒ^[ƒƒ\ƒbƒh‚Íprivate‚É‚·‚é‚ׂ«‚Å‚·B
-                Hibernate‚¾‚¯‚ªƒIƒuƒWƒFƒNƒg‚ªƒZ[ƒu‚³‚ꂽ‚Æ‚«‚ÉŽ¯•ÊŽq‚Ö’l‚ð‘ã“ü‚µ‚Ü‚·B
-                Hibernate‚ªipublic, private, protectedjƒtƒB[ƒ‹ƒh‚É’¼ÚƒAƒNƒZƒX‚Å‚«‚é‚Ì‚Æ“¯—l‚ɁA
-                public, private, protected‚̃AƒNƒZƒTƒƒ\ƒbƒh‚ɃAƒNƒZƒX‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ‚ª‚í‚©‚é‚Å‚µ‚傤B
-                ‘I‘ð‚Í‚ ‚È‚½‚É”C‚³‚ê‚Ä‚¢‚é‚̂ŁA‚ ‚È‚½‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚̐݌v‚ɍ‡‚킹‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
+                <literal>id</literal> プロパティは、ある特定のイベントに対するユニークな識別子の値を保持します。
+                Hibernateの完全な機能を使いたければ、すべての永続エンティティクラス
+                (それほど重要ではない依存クラスというものもあります)
+                にこのような識別子プロパティが必要になります。
+                事実上ほとんどのアプリケーション(特にwebアプリケーション)では、
+                識別子でオブジェクトを区別する必要があるため、これは制限というよりも特徴であると考えるべきです。
+                しかし通常オブジェクトのIDを操作するようなことはしません。
+                そのためセッターメソッドはprivateにするべきです。
+                Hibernateだけがオブジェクトがセーブされたときに識別子へ値を代入します。
+                Hibernateが(public, private, protected)フィールドに直接アクセスできるのと同様に、
+                public, private, protectedのアクセサメソッドにアクセスできるということがわかるでしょう。
+                選択はあなたに任されているので、あなたのアプリケーションの設計に合わせることができます。
             </para>
 
             <para>
-                ˆø”‚Ì‚È‚¢ƒRƒ“ƒXƒgƒ‰ƒNƒ^‚Í‚·‚ׂẲi‘±ƒNƒ‰ƒX‚É•K{‚Å‚·B
-                ‚±‚ê‚ÍHibernate‚ªJava‚̃ŠƒtƒŒƒNƒVƒ‡ƒ“‚ðŽg‚Á‚āAƒIƒuƒWƒFƒNƒg‚ðì¬‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢‚½‚ß‚Å‚·B
-                ƒRƒ“ƒXƒgƒ‰ƒNƒ^‚ðprivate‚É‚·‚邱‚Ƃ͉”\‚Å‚·‚ªA
-                ŽÀsŽž‚̃vƒƒLƒV¶¬‚ƁAƒoƒCƒgƒR[ƒh‘€ì‚È‚µ‚ÌŒø—¦“I‚ȃf[ƒ^‚Ì’Šo‚ɂ́A
-                package‰ÂŽ‹«‚ª•K—v‚Å‚·B
+                引数のないコンストラクタはすべての永続クラスに必須です。
+                これはHibernateがJavaのリフレクションを使って、オブジェクトを作成しなければならないためです。
+                コンストラクタをprivateにすることは可能ですが、
+                実行時のプロキシ生成と、バイトコード操作なしの効率的なデータの抽出には、
+                package可視性が必要です。
             </para>
 
             <para>
-                ŠJ”­ƒtƒHƒ‹ƒ_‚Ì <literal>src</literal> ‚Æ‚¢‚¤ƒfƒBƒŒƒNƒgƒŠ‚Ì“KØ‚ȃpƒbƒP[ƒW‚ɁA
-                ‚±‚ÌJavaƒ\[ƒXƒtƒ@ƒCƒ‹‚ð”z’u‚µ‚Ä‚­‚¾‚³‚¢B
-                ‚±‚ÌŽž“_‚ŃfƒBƒŒƒNƒgƒŠ‚͈ȉº‚̂悤‚É‚È‚Á‚Ä‚¢‚é‚Í‚¸‚Å‚·F
+                開発フォルダの <literal>src</literal> というディレクトリの適切なパッケージに、
+                このJavaソースファイルを配置してください。
+                この時点でディレクトリは以下のようになっているはずです:
             </para>
 
             <programlisting><![CDATA[.
@@ -168,23 +170,23 @@
     Event.java]]></programlisting>
 
             <para>
-                ŽŸ‚̃Xƒeƒbƒv‚ł́AHibernate‚É‚±‚̉i‘±ƒNƒ‰ƒX‚̏î•ñ‚ð‹³‚¦‚Ü‚·B
+                次のステップでは、Hibernateにこの永続クラスの情報を教えます。
             </para>
                 
         </sect2>
 
         <sect2 id="tutorial-firstapp-mapping" revision="1">
-            <title>ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹</title>
+            <title>マッピングファイル</title>
 
             <para>
-                Hibernate‚́A‚ǂ̂悤‚ɉi‘±ƒNƒ‰ƒX‚̃IƒuƒWƒFƒNƒg‚ðƒ[ƒh‚µŠi”[‚·‚ê‚΂悢‚©‚ð’m‚é•K—v‚ª‚ ‚è‚Ü‚·B
-                ‚±‚±‚ÅHibernateƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ª“oê‚µ‚Ü‚·B
-                ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚́Aƒf[ƒ^ƒx[ƒX“à‚̂ǂ̃e[ƒuƒ‹‚ɃAƒNƒZƒX‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢‚©A
-                ‚»‚̃e[ƒuƒ‹‚̂ǂ̃Jƒ‰ƒ€‚ðŽg‚¤‚ׂ«‚©‚ðAHibernate‚É‹³‚¦‚Ü‚·B
+                Hibernateは、どのように永続クラスのオブジェクトをロードし格納すればよいかを知る必要があります。
+                ここでHibernateマッピングファイルが登場します。
+                マッピングファイルは、データベース内のどのテーブルにアクセスしなければならないか、
+                そのテーブルのどのカラムを使うべきかを、Hibernateに教えます。
             </para>
 
             <para>
-                ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ÌŠî–{“I‚ȍ\‘¢‚Í‚±‚̂悤‚É‚È‚è‚Ü‚·F
+                マッピングファイルの基本的な構造はこのようになります:
             </para>
 
             <programlisting><![CDATA[<?xml version="1.0"?>
@@ -197,28 +199,28 @@
 </hibernate-mapping>]]></programlisting>
 
             <para>
-                Hibernate DTD‚ª”ñí‚ɐô—û‚³‚ê‚Ä‚¢‚邱‚Æ‚É’–Ú‚µ‚Ä‚­‚¾‚³‚¢B
-                ‚±‚ÌDTD‚́AƒGƒfƒBƒ^‚âIDE‚Å‚ÌXMLƒ}ƒbƒsƒ“ƒO—v‘f‚Æ‘®«‚̃I[ƒgƒRƒ“ƒvƒŠ[ƒVƒ‡ƒ“‹@”\‚É—˜—p‚Å‚«‚Ü‚·B
-                ‚Ü‚½DTDƒtƒ@ƒCƒ‹‚ðƒeƒLƒXƒgƒGƒfƒBƒ^‚ÅŠJ‚¯‚Ä‚Ý‚Ä‚­‚¾‚³‚¢B
-                ‚Æ‚¢‚¤‚Ì‚àA‚·‚ׂĂ̗v‘f‚Æ‘®«‚ðŠTŠÏ‚µA
-                ƒRƒƒ“ƒg‚âƒfƒtƒHƒ‹ƒg‚Ì’l‚ðŒ©‚é‚ɂ͈ê”ÔŠÈ’P‚È•û–@‚¾‚©‚ç‚Å‚·B
-                Hibernate‚́Aweb‚©‚çDTDƒtƒ@ƒCƒ‹‚ðƒ[ƒh‚¹‚¸‚ɁA
-                ‚Ü‚¸ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃Nƒ‰ƒXƒpƒX‚©‚炱‚ê‚ð’T‚µo‚»‚¤‚Æ‚·‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-                DTDƒtƒ@ƒCƒ‹‚ÍHibernateƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚Ì <literal>src/</literal> 
-                ƒfƒBƒŒƒNƒgƒŠ‚Æ“¯—lA<literal>hibernate3.jar</literal> ‚É‚àŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·B
+                Hibernate DTDが非常に洗練されていることに注目してください。
+                このDTDは、エディタやIDEでのXMLマッピング要素と属性のオートコンプリーション機能に利用できます。
+                またDTDファイルをテキストエディタで開けてみてください。
+                というのも、すべての要素と属性を概観し、
+                コメントやデフォルトの値を見るには一番簡単な方法だからです。
+                Hibernateは、webからDTDファイルをロードせずに、
+                まずアプリケーションのクラスパスからこれを探し出そうとすることに注意してください。
+                DTDファイルはHibernateディストリビューションの <literal>src/</literal> 
+                ディレクトリと同様、<literal>hibernate3.jar</literal> にも含まれています。
             </para>
 
             <para>
-                ˆÈ~‚Ì—á‚ł̓R[ƒh‚ð’Z‚­‚·‚邽‚ß‚ÉDTDéŒ¾‚ðÈ—ª‚µ‚Ü‚·B
-                “–‘R‚Å‚·‚ª‚±‚ê‚̓IƒvƒVƒ‡ƒ“‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
+                以降の例ではコードを短くするためにDTD宣言を省略します。
+                当然ですがこれはオプションではありません。
             </para>
 
             <para>
-                2‚Â‚Ì <literal>hibernate-mapping</literal> ƒ^ƒO‚ÌŠÔ‚É
-                <literal>class</literal> —v‘f‚ðŠÜ‚ß‚Ä‚­‚¾‚³‚¢B
-                ‚·‚ׂẲi‘±ƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒXi”O‚ð‰Ÿ‚µ‚Ü‚·‚ªA
-                ƒtƒ@[ƒXƒgƒNƒ‰ƒX‚̃Gƒ“ƒeƒBƒeƒB‚Å‚Í‚È‚¢ˆË‘¶ƒNƒ‰ƒX‚Æ‚¢‚¤‚à‚Ì‚ªŒã‚Ù‚Ç“oê‚µ‚Ü‚·j
-                ‚ÍSQLƒf[ƒ^ƒx[ƒX“à‚̃e[ƒuƒ‹‚Ö‚Ì‚±‚̂悤‚ȃ}ƒbƒsƒ“ƒO‚ð•K—v‚Æ‚µ‚Ü‚·B
+                2つの <literal>hibernate-mapping</literal> タグの間に
+                <literal>class</literal> 要素を含めてください。
+                すべての永続エンティティクラス(念を押しますが、
+                ファーストクラスのエンティティではない依存クラスというものが後ほど登場します)
+                はSQLデータベース内のテーブルへのこのようなマッピングを必要とします。
             </para>
 
             <programlisting><![CDATA[<hibernate-mapping>
@@ -230,12 +232,12 @@
 </hibernate-mapping>]]></programlisting>
 
             <para>
-                ‚±‚ê‚Ü‚ÅŽ„‚½‚¿‚́A<literal>Event</literal> ƒNƒ‰ƒX‚̃IƒuƒWƒFƒNƒg‚ð
-                <literal>EVENTS</literal> ƒe[ƒuƒ‹‚ɑ΂µ‚āA‚ǂ̂悤‚ɉi‘±‰»‚µ‚½‚胍[ƒh‚µ‚½‚è‚·‚é‚Ì‚©‚ð
-                Hibernate‚É‹³‚¦‚Ä‚«‚Ü‚µ‚½B‚»‚µ‚ȁX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚̓e[ƒuƒ‹‚̍s‚Æ‚µ‚Ä•\Œ»‚³‚ê‚Ü‚·B
-                ‚»‚ê‚ł͈ø‚«‘±‚«ƒe[ƒuƒ‹‚ÌŽåƒL[‚ɑ΂·‚郆ƒj[ƒN‚ÈŽ¯•ÊŽqƒvƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚µ‚Ä‚¢‚«‚Ü‚·B
-                ‚³‚ç‚ɁA‚±‚ÌŽ¯•ÊŽq‚̈µ‚¢‚É‹C‚ðŽg‚¢‚½‚­‚È‚©‚Á‚½‚Ì‚Æ“¯—l‚ɁA
-                ‘㗝‚ÌŽåƒL[ƒJƒ‰ƒ€‚ɑ΂·‚éHibernate‚ÌŽ¯•ÊŽq¶¬í—ª‚ðÝ’肵‚Ü‚·B
+                これまで私たちは、<literal>Event</literal> クラスのオブジェクトを
+                <literal>EVENTS</literal> テーブルに対して、どのように永続化したりロードしたりするのかを
+                Hibernateに教えてきました。そして個々のインスタンスはテーブルの行として表現されます。
+                それでは引き続きテーブルの主キーに対するユニークな識別子プロパティをマッピングしていきます。
+                さらに、この識別子の扱いに気を使いたくなかったのと同様に、
+                代理の主キーカラムに対するHibernateの識別子生成戦略を設定します。
             </para>
 
             <programlisting><![CDATA[<hibernate-mapping>
@@ -249,21 +251,21 @@
 </hibernate-mapping>]]></programlisting>
 
             <para>
-                <literal>id</literal> —v‘f‚ÍŽ¯•ÊŽqƒvƒƒpƒeƒB‚̐錾‚Å‚ ‚èA
-                <literal>name="id"</literal> ‚ÅJavaƒvƒƒpƒeƒB‚Ì–¼‘O‚ðéŒ¾‚µ‚Ü‚·B
-                Hibernate‚Í‚±‚̃vƒƒpƒeƒB‚ÖƒAƒNƒZƒX‚·‚邽‚߂ɃQƒbƒ^[AƒZƒbƒ^[ƒƒ\ƒbƒh‚ðŽg‚¢‚Ü‚·B
-                ƒJƒ‰ƒ€‘®«‚Å‚Í <literal>EVENTS</literal> ƒe[ƒuƒ‹‚̂ǂ̃Jƒ‰ƒ€‚ðŽåƒL[‚Æ‚µ‚ÄŽg‚¤‚Ì‚©‚ð
-                Hibernate‚É‹³‚¦‚Ü‚·B
-                “ü‚êŽq‚É‚È‚Á‚Ä‚¢‚é <literal>generator</literal> —v‘f‚́AŽ¯•ÊŽq‚𐶐¬‚·‚鎞‚̐헪‚ðŽw’肵‚Ü‚·B
-                i‚±‚Ì—á‚Å‚Í <literal>native</literal> ‚ð—p‚¢‚Ü‚µ‚½jB
-                ‚±‚Ì—v‘f‚́AÝ’肵‚½ƒf[ƒ^ƒx[ƒXidialectj‚ɑ΂·‚éÅ—Ç‚ÈŽ¯•ÊŽq¶¬í—ª‚ð‘I’è‚·‚é‚à‚Ì‚Å‚·B
-                Hibernate‚́AƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Å’l‚ðŠ„‚è“–‚Ä‚éí—ªi‚à‚µ‚­‚Í“ÆŽ©‚ÉŠg’£‚µ‚½í—ªj‚Æ“¯—l‚ɁA
-                ƒOƒ[ƒoƒ‹‚Ƀ†ƒj[ƒN‚È’l‚ðƒf[ƒ^ƒx[ƒX‚ɐ¶¬‚³‚¹‚éí—ª‚àƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B
+                <literal>id</literal> 要素は識別子プロパティの宣言であり、
+                <literal>name="id"</literal> でJavaプロパティの名前を宣言します。
+                Hibernateはこのプロパティへアクセスするためにゲッター、セッターメソッドを使います。
+                カラム属性では <literal>EVENTS</literal> テーブルのどのカラムを主キーとして使うのかを
+                Hibernateに教えます。
+                入れ子になっている <literal>generator</literal> 要素は、識別子を生成する時の戦略を指定します。
+                (この例では <literal>native</literal> を用いました)。
+                この要素は、設定したデータベース(dialect)に対する最良な識別子生成戦略を選定するものです。
+                Hibernateは、アプリケーションで値を割り当てる戦略(もしくは独自に拡張した戦略)と同様に、
+                グローバルにユニークな値をデータベースに生成させる戦略もサポートしています。
             </para>
 
             <para>
-                ÅŒã‚ɃNƒ‰ƒX‚̉i‘±ƒvƒƒpƒeƒB‚̐錾‚ðƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ÉŠÜ‚ß‚Ü‚·B
-                ƒfƒtƒHƒ‹ƒg‚ł́AƒNƒ‰ƒX‚̃vƒƒpƒeƒB‚͉i‘±‚ÆŒ©‚È‚³‚ê‚Ü‚¹‚ñF
+                最後にクラスの永続プロパティの宣言をマッピングファイルに含めます。
+                デフォルトでは、クラスのプロパティは永続と見なされません:
             </para>
             
             <programlisting><![CDATA[
@@ -280,45 +282,45 @@
 </hibernate-mapping>]]></programlisting>
             
             <para>
-                <literal>id</literal> —v‘f‚̏ꍇ‚Æ“¯—l‚ɁA <literal>property</literal> —v‘f‚Ì 
-                <literal>name</literal> ‘®«‚ŁA‚ǂ̃Qƒbƒ^[‚ƃZƒbƒ^[ƒƒ\ƒbƒh‚ðŽg‚¤‚ׂ«‚©‚ðHibernate‚É‹³‚¦‚Ü‚·B
-                ‚±‚Ì—á‚ł́AHibernate‚Í <literal>getDate()/setDate()</literal> ‚Æ <literal>getTitle()/setTitle()</literal> ‚ð
-                ’T‚µ‚Ü‚·B
+                <literal>id</literal> 要素の場合と同様に、 <literal>property</literal> 要素の 
+                <literal>name</literal> 属性で、どのゲッターとセッターメソッドを使うべきかをHibernateに教えます。
+                この例では、Hibernateは <literal>getDate()/setDate()</literal> と <literal>getTitle()/setTitle()</literal> を
+                探します。
             </para>
 
             <para>
-                ‚È‚º <literal>date</literal> ƒvƒƒpƒeƒB‚̃}ƒbƒsƒ“ƒO‚É‚Í <literal>column</literal> 
-                ‘®«‚ª‚ ‚èA<literal>title</literal> ƒvƒƒpƒeƒB‚É‚Í‚È‚¢‚Ì‚Å‚µ‚傤‚©H
-                <literal>column</literal> ‘®«‚ª‚È‚¯‚ê‚΁AHibernate‚̓vƒƒpƒeƒB–¼‚ðƒJƒ‰ƒ€–¼‚Æ‚µ‚ÄŽg‚¢‚Ü‚·B
-                ‚±‚ê‚Í <literal>title</literal> ‚ł͏ãŽè‚­s‚«‚Ü‚·B
-                ‚µ‚©‚µ <literal>date</literal> ‚Í‚Ù‚Æ‚ñ‚ǂ̃f[ƒ^ƒx[ƒX‚Å—\–ñŒê‚Ȃ̂ŁA
-                ˆá‚¤–¼‘O‚Ń}ƒbƒsƒ“ƒO‚µ‚½•û‚ª‚æ‚¢‚Ì‚Å‚·B
+                なぜ <literal>date</literal> プロパティのマッピングには <literal>column</literal> 
+                属性があり、<literal>title</literal> プロパティにはないのでしょうか?
+                <literal>column</literal> 属性がなければ、Hibernateはプロパティ名をカラム名として使います。
+                これは <literal>title</literal> では上手く行きます。
+                しかし <literal>date</literal> はほとんどのデータベースで予約語なので、
+                違う名前でマッピングした方がよいのです。
             </para>
 
             <para>
-                ŽŸ‚É‹»–¡[‚¢‚Ì‚Í <literal>title</literal> ƒ}ƒbƒsƒ“ƒO‚ª <literal>type</literal> 
-                ‘®«‚ð‚àŒ‡‚¢‚Ä‚¢‚é“_‚Å‚·B
-                ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚Ő錾‚µ‚ÄŽg‚¤type‚́A‚¨‚í‚©‚è‚©‚à‚µ‚ê‚Ü‚¹‚ñ‚ªJava‚̃f[ƒ^Œ^‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-                SQLƒf[ƒ^ƒx[ƒX‚ÌŒ^‚Å‚à‚ ‚è‚Ü‚¹‚ñB
-                ‚±‚ê‚Í <emphasis>Hibernateƒ}ƒbƒsƒ“ƒOŒ^</emphasis> ‚ƌĂ΂ê‚éA
-                Java‚©‚çSQLƒf[ƒ^‚ÌŒ^‚Ö‚Ü‚½‚ÍSQL‚©‚çJavaƒf[ƒ^Œ^‚Ö–|–ó‚·‚éƒRƒ“ƒo[ƒ^‚Å‚·B
-                ŒJ‚è•Ô‚µ‚É‚È‚è‚Ü‚·‚ªAHibernate‚Í <literal>type</literal> ‘®«‚ªƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹“à‚É‚È‚¯‚ê‚΁A
-                ³‚µ‚¢ƒRƒ“ƒo[ƒWƒ‡ƒ“‚ƃ}ƒbƒsƒ“ƒOŒ^‚ðŽ©•ª‚Å‰ðŒˆ‚µ‚悤‚Æ‚µ‚Ü‚·B
-                iJavaƒNƒ‰ƒX‚̃ŠƒtƒŒƒNƒVƒ‡ƒ“‚ðŽg‚Á‚½j‚±‚ÌŽ©“®ŒŸ’m‚́A
-                ê‡‚É‚æ‚Á‚Ä‚Í‚ ‚È‚½‚ªŠú‘Ò‚Ü‚½‚Í•K—v‚Æ‚·‚éƒfƒtƒHƒ‹ƒg’l‚É‚È‚ç‚È‚¢‚©‚à‚µ‚ê‚Ü‚¹‚ñB
-                <literal>date</literal> ƒvƒƒpƒeƒB‚̏ꍇ‚ª‚»‚¤‚Å‚µ‚½B
-                Hibernate‚Í‚±‚́i <literal>java.util.Date</literal> ‚́jƒvƒƒpƒeƒB‚ð
-                SQL‚Ì <literal>date</literal> , <literal>timestamp</literal> , 
-                <literal>time</literal> ‚Ì‚¤‚¿A‚ǂ̃Jƒ‰ƒ€‚Ƀ}ƒbƒsƒ“ƒO‚·‚é‚ׂ«‚È‚Ì‚©‚í‚©‚è‚Ü‚¹‚ñB
-                <literal>timestamp</literal> ƒRƒ“ƒo[ƒ^‚ŃvƒƒpƒeƒB‚ðƒ}ƒbƒsƒ“ƒO‚·‚邱‚Æ‚É‚æ‚èAŠ®‘S‚È“úŽž‚ð•Û‘¶‚µ‚Ü‚·B
+                次に興味深いのは <literal>title</literal> マッピングが <literal>type</literal> 
+                属性をも欠いている点です。
+                マッピングファイルで宣言して使うtypeは、おわかりかもしれませんがJavaのデータ型ではありません。
+                SQLデータベースの型でもありません。
+                これは <emphasis>Hibernateマッピング型</emphasis> と呼ばれる、
+                JavaからSQLデータの型へまたはSQLからJavaデータ型へ翻訳するコンバータです。
+                繰り返しになりますが、Hibernateは <literal>type</literal> 属性がマッピングファイル内になければ、
+                正しいコンバージョンとマッピング型を自分で解決しようとします。
+                (Javaクラスのリフレクションを使った)この自動検知は、
+                場合によってはあなたが期待または必要とするデフォルト値にならないかもしれません。
+                <literal>date</literal> プロパティの場合がそうでした。
+                Hibernateはこの( <literal>java.util.Date</literal> の)プロパティを
+                SQLの <literal>date</literal> , <literal>timestamp</literal> , 
+                <literal>time</literal> のうち、どのカラムにマッピングするべきなのかわかりません。
+                <literal>timestamp</literal> コンバータでプロパティをマッピングすることにより、完全な日時を保存します。
             </para>
 
             <para>
-                ‚±‚̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚́A<literal>Event.hbm.xml</literal> ‚Æ‚µ‚Ä <literal>Event</literal> 
-                JavaƒNƒ‰ƒXƒ\[ƒXƒtƒ@ƒCƒ‹‚Ì‚·‚®—ׂɃZ[ƒu‚·‚é‚ׂ«‚Å‚·B
-                ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚Ì–½–¼•û–@‚Í”CˆÓ‚Å‚·‚ªA<literal>hbm.xml</literal> 
-                ƒTƒtƒBƒbƒNƒX‚ªHibernate‚ÌŠJ”­ŽÒ‚̃Rƒ~ƒ…ƒjƒeƒB“à‚ł̏KŠµ‚Æ‚È‚Á‚Ä‚¢‚Ü‚·B
-                Œ»ÝƒfƒBƒŒƒNƒgƒŠ\‘¢‚Í‚±‚̂悤‚É‚È‚Á‚Ä‚¢‚é‚Í‚¸‚Å‚·F
+                このマッピングファイルは、<literal>Event.hbm.xml</literal> として <literal>Event</literal> 
+                Javaクラスソースファイルのすぐ隣にセーブするべきです。
+                マッピングファイルの命名方法は任意ですが、<literal>hbm.xml</literal> 
+                サフィックスがHibernateの開発者のコミュニティ内での習慣となっています。
+                現在ディレクトリ構造はこのようになっているはずです:
             </para>
 
             <programlisting><![CDATA[.
@@ -330,51 +332,51 @@
     Event.hbm.xml]]></programlisting>
 
              <para>
-                 Hibernate‚ÌŽå—v‚Ȑݒè‚𑱂¯‚Ü‚·B
+                 Hibernateの主要な設定を続けます。
              </para>
 
         </sect2>
 
         <sect2 id="tutorial-firstapp-configuration" revision="2">
-            <title>Hibernate‚̐ݒè</title>
+            <title>Hibernateの設定</title>
 
             <para>
-                ‚±‚±‚܂łʼni‘±ƒNƒ‰ƒX‚ƃ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ª‘µ‚¢‚Ü‚µ‚½B‚±‚ê‚©‚çHibernate‚̐ݒè‚ðs‚¢‚Ü‚·‚ªA
-                ‚»‚Ì‘O‚Ƀf[ƒ^ƒx[ƒX‚ª•K—v‚Å‚·B
-                HSQL DB‚ÍJavaƒx[ƒX‚̃Cƒ“ƒƒ‚ƒŠSQL DBMS‚Å‚ ‚èAHSQL DBƒEƒFƒuƒTƒCƒg‚©‚çƒ_ƒEƒ“ƒ[ƒh‚Å‚«‚Ü‚·B
-                ŽÀÛ‚ɂ̓_ƒEƒ“ƒ[ƒh‚µ‚½’†‚Ì <literal>hsqldb.jar</literal> ‚¾‚¯‚ª•K—v‚Å‚·B
-                ‚±‚̃tƒ@ƒCƒ‹‚ðŠJ”­ƒtƒHƒ‹ƒ_‚Ì <literal>lib/</literal> ƒfƒBƒŒƒNƒgƒŠ‚É”z’u‚µ‚Ä‚­‚¾‚³‚¢B
+                ここまでで永続クラスとマッピングファイルが揃いました。これからHibernateの設定を行いますが、
+                その前にデータベースが必要です。
+                HSQL DBはJavaベースのインメモリSQL DBMSであり、HSQL DBウェブサイトからダウンロードできます。
+                実際にはダウンロードした中の <literal>hsqldb.jar</literal> だけが必要です。
+                このファイルを開発フォルダの <literal>lib/</literal> ディレクトリに配置してください。
             </para>
 
             <para>
-                <literal>data</literal> ‚Æ‚¢‚¤ƒfƒBƒŒƒNƒgƒŠ‚ðŠJ”­ƒfƒBƒŒƒNƒgƒŠ‚̃‹[ƒg‚ɍ쐬‚µ‚Ä‚­‚¾‚³‚¢B
-                HSQL DB‚Í‚±‚±‚Ƀf[ƒ^ƒtƒ@ƒCƒ‹‚ðŠi”[‚µ‚Ü‚·B
-                ‚±‚̃f[ƒ^ƒfƒBƒŒƒNƒgƒŠ‚É‚¨‚¢‚Ä <literal>java -classpath lib/hsqldb.jar org.hsqldb.Server</literal> ‚ðŽÀs‚µA
-                ƒf[ƒ^ƒx[ƒX‚ð‹N“®‚³‚¹‚Ä‚­‚¾‚³‚¢B
-                “®ì‚ÌŠJŽn‚ƁATCP/IPƒ\ƒPƒbƒg‚̃oƒCƒ“ƒh‚ªŠm”F‚Å‚«‚Ü‚·B
-                Œã‚قǍ쐬‚·‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Í‚±‚±‚ɐڑ±‚µ‚Ü‚·B
-                ‚à‚µ‚±‚̃`ƒ…[ƒgƒŠƒAƒ‹’†‚Ƀf[ƒ^ƒx[ƒX‚ð‰Šú‰»‚µ‚½‚¯‚ê‚΁A
-                HSQL DB‚ðƒVƒƒƒbƒgƒ_ƒEƒ“‚µ‚āiì‹ÆƒEƒBƒ“ƒhƒE‚Å <literal>CTRL + C</literal> ‚ð‰Ÿ‚µ‚Ü‚·j
-                <literal>data/</literal> ƒfƒBƒŒƒNƒgƒŠ“à‚̃tƒ@ƒCƒ‹‚ð‘S‚ďÁ‹Ž‚µ‚½ŒãA
-                HSQL DB‚ðÄ‹N“®‚µ‚Ü‚·B
+                <literal>data</literal> というディレクトリを開発ディレクトリのルートに作成してください。
+                HSQL DBはここにデータファイルを格納します。
+                このデータディレクトリにおいて <literal>java -classpath lib/hsqldb.jar org.hsqldb.Server</literal> を実行し、
+                データベースを起動させてください。
+                動作の開始と、TCP/IPソケットのバインドが確認できます。
+                後ほど作成するアプリケーションはここに接続します。
+                もしこのチュートリアル中にデータベースを初期化したければ、
+                HSQL DBをシャットダウンして(作業ウィンドウで <literal>CTRL + C</literal> を押します)
+                <literal>data/</literal> ディレクトリ内のファイルを全て消去した後、
+                HSQL DBを再起動します。
             </para>
 
             <para>
-                Hibernate‚̓AƒvƒŠƒP[ƒVƒ‡ƒ“‚̃f[ƒ^ƒx[ƒX‚ɐڑ±‚·‚é‘w‚Ȃ̂ŁA
-                ƒRƒlƒNƒVƒ‡ƒ“‚̏î•ñ‚ª•K—v‚É‚È‚è‚Ü‚·B
-                ƒRƒlƒNƒVƒ‡ƒ“‚ÍJDBCƒRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹‚ð’Ê‚¶‚čs‚í‚ê‚Ü‚·‚ªA‚±‚ê‚àÝ’è‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
-                HibernateƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“‚É‚Í‚¢‚­‚‚©‚̃I[ƒvƒ“ƒ\[ƒX‚ÌJDBCƒRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹ƒc[ƒ‹‚ªŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·‚ªA
-                ‚±‚̃`ƒ…[ƒgƒŠƒAƒ‹‚Å‚ÍHibernate‚É‘g‚ݍž‚܂ꂽƒRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹‚ðŽg‚¢‚Ü‚·B
-                ‚à‚µ»•iƒŒƒxƒ‹‚Ì•iŽ¿‚̃T[ƒhƒp[ƒeƒBJDBCƒRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹ƒ\ƒtƒgƒEƒFƒA‚ðŽg‚¢‚½‚¯‚ê‚΁A
-                ƒNƒ‰ƒXƒpƒX‚É•K—v‚ȃ‰ƒCƒuƒ‰ƒŠ‚ðƒRƒs[‚µ‚āAˆÙ‚È‚éƒRƒlƒNƒVƒ‡ƒ“ƒv[ƒ‹‚ðÝ’肵‚È‚¯‚ê‚Î
-                ‚È‚ç‚È‚¢‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
+                Hibernateはアプリケーションのデータベースに接続する層なので、
+                コネクションの情報が必要になります。
+                コネクションはJDBCコネクションプールを通じて行われますが、これも設定する必要があります。
+                HibernateディストリビューションにはいくつかのオープンソースのJDBCコネクションプールツールが含まれていますが、
+                このチュートリアルではHibernateに組み込まれたコネクションプールを使います。
+                もし製品レベルの品質のサードパーティJDBCコネクションプールソフトウェアを使いたければ、
+                クラスパスに必要なライブラリをコピーして、異なるコネクションプールを設定しなければ
+                ならないことに注意してください。
             </para>
 
             <para>
-                Hibernate‚̐ݒè‚ł́A’Pƒ‚È <literal>hibernate.properties</literal> ƒtƒ@ƒCƒ‹A
-                ‚»‚ê‚æ‚菭‚µô—û‚³‚ê‚Ä‚¢‚é <literal>hibernate.cfg.xml</literal> ƒtƒ@ƒCƒ‹A
-                ‚Ü‚½‚ÍŠ®‘S‚ɃvƒƒOƒ‰ƒ€ã‚ŃZƒbƒgƒAƒbƒv‚·‚é•û–@‚ª—˜—p‚Å‚«‚Ü‚·B
-                ‚Ù‚Æ‚ñ‚ǂ̃†[ƒU‚ªD‚Þ‚Ì‚ÍXMLÝ’èƒtƒ@ƒCƒ‹‚Å‚·F
+                Hibernateの設定では、単純な <literal>hibernate.properties</literal> ファイル、
+                それより少し洗練されている <literal>hibernate.cfg.xml</literal> ファイル、
+                または完全にプログラム上でセットアップする方法が利用できます。
+                ほとんどのユーザが好むのはXML設定ファイルです:
             </para>
 
             <programlisting><![CDATA[<?xml version='1.0' encoding='utf-8'?>
@@ -417,51 +419,51 @@
 </hibernate-configuration>]]></programlisting>
 
             <para>
-                ‚±‚ÌXML‚̐ݒ肪ˆÙ‚È‚éDTD‚ðŽg‚¤‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-                “Á’è‚̃f[ƒ^ƒx[ƒX‚ðŽó‚¯Ž‚ƒOƒ[ƒoƒ‹ƒtƒ@ƒNƒgƒŠ‚Å‚ ‚éHibernate‚Ì 
-                <literal>SessionFactory</literal> ‚ðÝ’肵‚Ü‚·B
-                ‚à‚µ•¡”‚̃f[ƒ^ƒx[ƒX‚ª‚ ‚éê‡‚ɂ́A
-                iƒXƒ^[ƒgƒAƒbƒv‚ðŠÈ’P‚É‚·‚邽‚߁j’ʏ킢‚­‚‚©‚̐ݒèƒtƒ@ƒCƒ‹“à‚ŁA
-                ‚¢‚­‚‚©‚Ì <literal>&lt;session-factory&gt;</literal> ‚ðŽg‚¤Ý’è‚É‚µ‚Ä‚­‚¾‚³‚¢B
+                このXMLの設定が異なるDTDを使うことに注意してください。
+                特定のデータベースを受け持つグローバルファクトリであるHibernateの 
+                <literal>SessionFactory</literal> を設定します。
+                もし複数のデータベースがある場合には、
+                (スタートアップを簡単にするため)通常いくつかの設定ファイル内で、
+                いくつかの <literal>&lt;session-factory&gt;</literal> を使う設定にしてください。
             </para>
 
             <para>
-                Å‰‚Ì4‚Â‚Ì <literal>property</literal> —v‘f‚ÍJDBCƒRƒlƒNƒVƒ‡ƒ“‚É•K—v‚Ȑݒè‚ðŠÜ‚ñ‚Å‚¢‚Ü‚·B
-                dialect‚Æ‚¢‚¤–¼‘O‚Ì <literal>property</literal> —v‘f‚́AHibernate‚ª¶¬‚·‚é“Á’è‚ÌSQL•ûŒ¾‚ðŽw’肵‚Ü‚·B
-                ‰i‘±“I‚ȃRƒ“ƒeƒLƒXƒg‚ɑ΂·‚éHibernate‚̃ZƒbƒVƒ‡ƒ“‚ÌŽ©“®ŠÇ—‚́AŒã‚Ì—á‚Å‚·‚®‚É‚í‚©‚é‚悤‚ɁA–ð‚É—§‚‚±‚Æ‚Å‚µ‚傤B
-                <literal>hbm2ddl.auto</literal> ƒIƒvƒVƒ‡ƒ“‚̓f[ƒ^ƒx[ƒXƒXƒL[ƒ}‚ÌŽ©“®¶¬‚ðon‚É‚µ‚Ü‚·B
-                ‚±‚ê‚Í’¼Úƒf[ƒ^ƒx[ƒX‚ɑ΂µ‚ж¬‚³‚ê‚Ü‚·B
-                “–‘RiconfigƒIƒvƒVƒ‡ƒ“‚ðíœ‚µ‚ājoff‚É‚µ‚½‚èA
-                <literal>SchemaExport</literal> ‚Æ‚¢‚¤Antƒ^ƒXƒN‚̏•‚¯‚ðŽØ‚è‚ătƒ@ƒCƒ‹‚ɃŠƒ_ƒCƒŒƒNƒg‚µ‚½‚è‚Å‚«‚Ü‚·B
-                ÅŒã‚ɉi‘±ƒNƒ‰ƒX‚Ì‚½‚߂̃}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ðÝ’è‚ɒljÁ‚µ‚Ü‚·B
+                最初の4つの <literal>property</literal> 要素はJDBCコネクションに必要な設定を含んでいます。
+                dialectという名前の <literal>property</literal> 要素は、Hibernateが生成する特定のSQL方言を指定します。
+                永続的なコンテキストに対するHibernateのセッションの自動管理は、後の例ですぐにわかるように、役に立つことでしょう。
+                <literal>hbm2ddl.auto</literal> オプションはデータベーススキーマの自動生成をonにします。
+                これは直接データベースに対して生成されます。
+                当然(configオプションを削除して)offにしたり、
+                <literal>SchemaExport</literal> というAntタスクの助けを借りてファイルにリダイレクトしたりできます。
+                最後に永続クラスのためのマッピングファイルを設定に追加します。
             </para>
 
             <para>
-                ‚±‚̃tƒ@ƒCƒ‹‚ðƒ\[ƒXƒfƒBƒŒƒNƒgƒŠ‚ɃRƒs[‚µ‚Ä‚­‚¾‚³‚¢B
-                ‚·‚é‚Æ‚±‚ê‚̓Nƒ‰ƒXƒpƒX‚̃‹[ƒg‚É‚ ‚邱‚Æ‚É‚È‚è‚Ü‚·B
-                Hibernate‚́AƒXƒ^[ƒgƒAƒbƒvŽž‚ɃNƒ‰ƒXƒpƒX‚̃‹[ƒg‚Å <literal>hibernate.cfg.xml</literal> 
-                ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ðŽ©“®“I‚É’T‚µ‚Ü‚·B
+                このファイルをソースディレクトリにコピーしてください。
+                するとこれはクラスパスのルートにあることになります。
+                Hibernateは、スタートアップ時にクラスパスのルートで <literal>hibernate.cfg.xml</literal> 
+                というファイルを自動的に探します。
             </para>
 
         </sect2>
 
         <sect2 id="tutorial-firstapp-ant" revision="1">
-            <title>Ant‚É‚æ‚éƒrƒ‹ƒh</title>
+            <title>Antによるビルド</title>
 
             <para>
-                ‚»‚ê‚Å‚ÍAnt‚ðŽg‚Á‚ă`ƒ…[ƒgƒŠƒAƒ‹‚ðƒrƒ‹ƒh‚µ‚Ü‚µ‚傤B
-                ‚»‚ê‚É‚ÍAnt‚ªƒCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                <ulink url="http://ant.apache.org/bindownload.cgi">Antƒ_ƒEƒ“ƒ[ƒhƒy[ƒW</ulink> 
-                ‚©‚çƒ_ƒEƒ“ƒ[ƒh‚µ‚Ä‚­‚¾‚³‚¢B
-                Ant‚̃Cƒ“ƒXƒg[ƒ‹•û–@‚Í‚±‚±‚Å‚Íà–¾‚µ‚Ü‚¹‚ñ‚̂ŁA
-                <ulink url="http://ant.apache.org/manual/index.html">Antƒ}ƒjƒ…ƒAƒ‹</ulink> 
-                ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
-                Ant‚ðƒCƒ“ƒXƒg[ƒ‹‚·‚ê‚΁Aƒrƒ‹ƒhƒtƒ@ƒCƒ‹‚̍쐬‚ðŠJŽn‚Å‚«‚Ü‚·B
-                ‚±‚̃tƒ@ƒCƒ‹‚Í <literal>build.xml</literal> ‚ƌĂ΂êAŠJ”­ƒfƒBƒŒƒNƒgƒŠ‚É’¼Ú”z’u‚µ‚Ü‚·B
+                それではAntを使ってチュートリアルをビルドしましょう。
+                それにはAntがインストールされていなければなりません。
+                <ulink url="http://ant.apache.org/bindownload.cgi">Antダウンロードページ</ulink> 
+                からダウンロードしてください。
+                Antのインストール方法はここでは説明しませんので、
+                <ulink url="http://ant.apache.org/manual/index.html">Antマニュアル</ulink> 
+                を参照してください。
+                Antをインストールすれば、ビルドファイルの作成を開始できます。
+                このファイルは <literal>build.xml</literal> と呼ばれ、開発ディレクトリに直接配置します。
             </para>
 
             <para>
-                Šî–{“I‚ȃrƒ‹ƒhƒtƒ@ƒCƒ‹‚Í‚±‚̂悤‚É‚È‚è‚Ü‚·F
+                基本的なビルドファイルはこのようになります:
             </para>
 
             <programlisting><![CDATA[<project name="hibernate-tutorial" default="compile">
@@ -498,21 +500,21 @@
 </project>]]></programlisting>
 
             <para>
-                ‚±‚ê‚Í <literal>.jar</literal> ‚ŏI‚í‚élibƒfƒBƒŒƒNƒgƒŠ‚Ì‚·‚ׂẴtƒ@ƒCƒ‹‚ðA
-                ƒRƒ“ƒpƒCƒ‹‚ÉŽg—p‚·‚éƒNƒ‰ƒXƒpƒX‚ɒljÁ‚·‚邱‚Æ‚ðAnt‚É‹³‚¦‚Ü‚·B
-                ‚Ü‚½AJavaƒ\[ƒXƒtƒ@ƒCƒ‹‚Å‚È‚¢‚·‚ׂẴtƒ@ƒCƒ‹‚ðƒ^[ƒQƒbƒgƒfƒBƒŒƒNƒgƒŠ‚ɃRƒs[‚·‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚à‚ ‚è‚Ü‚·B
-                —Ⴆ‚ΐݒèƒtƒ@ƒCƒ‹‚âHibernateƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚È‚Ç‚Å‚·B
-                ¡Ant‚ðŽÀs‚·‚é‚ƁA‚±‚̂悤‚ȏo—Í‚ª‚ ‚é‚Í‚¸‚Å‚·F
+                これは <literal>.jar</literal> で終わるlibディレクトリのすべてのファイルを、
+                コンパイルに使用するクラスパスに追加することをAntに教えます。
+                また、Javaソースファイルでないすべてのファイルをターゲットディレクトリにコピーするということでもあります。
+                例えば設定ファイルやHibernateマッピングファイルなどです。
+                今Antを実行すると、このような出力があるはずです:
             </para>
 
-            <programlisting><![CDATA[C:\hibernateTutorial\>ant
+            <programlisting><![CDATA[C:¥hibernateTutorial¥>ant
 Buildfile: build.xml
 
 copy-resources:
-     [copy] Copying 2 files to C:\hibernateTutorial\bin
+     [copy] Copying 2 files to C:¥hibernateTutorial¥bin
 
 compile:
-    [javac] Compiling 1 source file to C:\hibernateTutorial\bin
+    [javac] Compiling 1 source file to C:¥hibernateTutorial¥bin
 
 BUILD SUCCESSFUL
 Total time: 1 second ]]></programlisting>
@@ -520,24 +522,24 @@
         </sect2>
 
         <sect2 id="tutorial-firstapp-helpers" revision="3">
-            <title>ƒXƒ^[ƒgƒAƒbƒv‚ƃwƒ‹ƒp</title>
+            <title>スタートアップとヘルパ</title>
 
             <para>
-                ‚³‚Ä <literal>Event</literal> ƒIƒuƒWƒFƒNƒg‚ðƒ[ƒh‚µ‚½‚èŠi”[‚µ‚½‚è‚·‚鏀”õ‚ª‚Å‚«‚Ü‚µ‚½B
-                ‚µ‚©‚µ‚Ü‚¸‚̓Cƒ“ƒtƒ‰ƒXƒgƒ‰ƒNƒ`ƒƒ‚̃R[ƒh‚ð‘‚¢‚āAƒZƒbƒgƒAƒbƒv‚ðŠ®—¹‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
-                ‚Ü‚¸‚ÍHibernate‚ðƒXƒ^[ƒgƒAƒbƒv‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                ‚±‚̃Xƒ^[ƒgƒAƒbƒv‚ɂ́AƒOƒ[ƒoƒ‹‚Ì <literal>SessionFactory</literal> ƒIƒuƒWƒFƒNƒg‚𐶐¬‚µ‚āA
-                ‚»‚ê‚ðƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃R[ƒh‚ŃAƒNƒZƒX‚µ‚â‚·‚¢êŠ‚ÉŠi”[‚·‚邱‚Æ‚ªŠÜ‚Ü‚ê‚Ü‚·B
-                <literal>SessionFactory</literal> ‚͐V‚µ‚­ <literal>Session</literal> ‚ðƒI[ƒvƒ“‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-                <literal>Session</literal> ‚̓Vƒ“ƒOƒ‹ƒXƒŒƒbƒh‚̍ì‹Æ’PˆÊ(Unit of Work)‚ð•\Œ»‚µ‚Ü‚·B
-                ‚»‚ê‚ɑ΂µ<literal>SessionFactory</literal> ‚̓XƒŒƒbƒhƒZ[ƒt‚̃Oƒ[ƒoƒ‹ƒIƒuƒWƒFƒNƒg‚Å‚ ‚èA
-                ˆê“x‚¾‚¯ƒCƒ“ƒXƒ^ƒ“ƒX‰»‚³‚ê‚Ü‚·B
+                さて <literal>Event</literal> オブジェクトをロードしたり格納したりする準備ができました。
+                しかしまずはインフラストラクチャのコードを書いて、セットアップを完了する必要があります。
+                まずはHibernateをスタートアップしなければなりません。
+                このスタートアップには、グローバルの <literal>SessionFactory</literal> オブジェクトを生成して、
+                それをアプリケーションのコードでアクセスしやすい場所に格納することが含まれます。
+                <literal>SessionFactory</literal> は新しく <literal>Session</literal> をオープンすることができます。
+                <literal>Session</literal> はシングルスレッドの作業単位(Unit of Work)を表現します。
+                それに対し<literal>SessionFactory</literal> はスレッドセーフのグローバルオブジェクトであり、
+                一度だけインスタンス化されます。
             </para>
 
             <para>
-                ‚±‚±‚ŃXƒ^[ƒgƒAƒbƒv‚ðs‚¢A •Ö—˜‚É <literal>SessionFactory</literal> ‚ÖƒAƒNƒZƒX‚·‚é
-                <literal>HibernateUtil</literal> ƒwƒ‹ƒpƒNƒ‰ƒX‚ðì¬‚µ‚Ü‚·B
-                ŽÀ‘•‚ðŒ©‚Ä‚Ý‚Ü‚µ‚傤F
+                ここでスタートアップを行い、 便利に <literal>SessionFactory</literal> へアクセスする
+                <literal>HibernateUtil</literal> ヘルパクラスを作成します。
+                実装を見てみましょう:
             </para>
 
             <programlisting><![CDATA[package util;
@@ -567,26 +569,26 @@
 }]]></programlisting>
 
             <para>
-                ‚±‚̃Nƒ‰ƒX‚͐ÓI‰Šú‰»ƒuƒƒbƒNiƒNƒ‰ƒX‚ªƒ[ƒh‚³‚ê‚é‚Æ‚«‚ÉJVM‚É‚æ‚Á‚Ĉê“x‚¾‚¯ŒÄ‚΂ê‚éj
-                ‚ŃOƒ[ƒoƒ‹‚Ì <literal>SessionFactory</literal> ‚𐶐¬‚·‚邾‚¯‚Å‚Í‚È‚­A
-                Ã“IƒVƒ“ƒOƒ‹ƒgƒ“‚ÌŽg—p‚ð‰B•Á‚µ‚Ü‚·B
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒT[ƒo[‚ÌJNDI‚©‚ç <literal>SessionFactory</literal> ‚ð
-                ƒ‹ƒbƒNƒAƒbƒv‚·‚é‚Ì‚Æ“¯—l‚Å‚·B
+                このクラスは静的初期化ブロック(クラスがロードされるときにJVMによって一度だけ呼ばれる)
+                でグローバルの <literal>SessionFactory</literal> を生成するだけではなく、
+                静的シングルトンの使用を隠蔽します。
+                アプリケーションサーバーのJNDIから <literal>SessionFactory</literal> を
+                ルックアップするのと同様です。
            </para>
 
             <para>
-                Ý’èƒtƒ@ƒCƒ‹“à‚Å <literal>SessionFactory</literal> ‚É–¼‘O‚ð—^‚¦‚é‚ƁA
-                Hibernate‚Í <literal>SessionFactory</literal> \’zŒã‚ÉJNDI‚ɑ΂µƒoƒCƒ“ƒh‚ðs‚¨‚¤‚Æ‚µ‚Ü‚·B
-                ‚±‚̃R[ƒh‚ðŠ®‘S‚É”rœ‚·‚邽‚߂ɂ́A
-                JMXƒfƒvƒƒCƒƒ“ƒg‚ð—˜—p‚µ‚Ä
-                JMX‚ð—˜—p‚Å‚«‚éƒRƒ“ƒeƒi‚ðƒCƒ“ƒXƒ^ƒ“ƒX‰»‚µA
-                <literal>HibernateService</literal> ‚ðJNDI‚ÖƒoƒCƒ“ƒh‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B
-                ‚±‚ê‚ç‚̍‚“x‚ȃIƒvƒVƒ‡ƒ“‚́AHibernate‚̃Šƒtƒ@ƒŒƒ“ƒXƒhƒLƒ…ƒƒ“ƒg‚Åà–¾‚³‚ê‚Ä‚¢‚Ü‚·B
+                設定ファイル内で <literal>SessionFactory</literal> に名前を与えると、
+                Hibernateは <literal>SessionFactory</literal> 構築後にJNDIに対しバインドを行おうとします。
+                このコードを完全に排除するためには、
+                JMXデプロイメントを利用して
+                JMXを利用できるコンテナをインスタンス化し、
+                <literal>HibernateService</literal> をJNDIへバインドすることもできます。
+                これらの高度なオプションは、Hibernateのリファレンスドキュメントで説明されています。
             </para>
 
             <para>
-                <literal>HibernateUtil.java</literal> ‚ðŠJ”­ƒ\[ƒXƒfƒBƒŒƒNƒgƒŠ‚É‚ ‚é <literal>events</literal> ƒpƒbƒP[ƒW‚Ì
-                —ׂɔz’u‚µ‚Ä‚­‚¾‚³‚¢B
+                <literal>HibernateUtil.java</literal> を開発ソースディレクトリにある <literal>events</literal> パッケージの
+                隣に配置してください。
             </para>
 
             <programlisting><![CDATA[.
@@ -603,31 +605,31 @@
 build.xml]]></programlisting>
 
             <para>
-                ‚±‚ê‚Í–â‘è‚È‚­ÄƒRƒ“ƒpƒCƒ‹‚Å‚«‚é‚Í‚¸‚Å‚·B
-                ÅŒã‚ɃƒMƒ“ƒOƒVƒXƒeƒ€‚ðÝ’è‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B
-                Hibernate‚Ícommons logging‚ðŽg‚¤‚½‚߁ALog4j‚ÆJDK 1.4 logging‚Ì‘I‘ð‚ð‚·‚é•K—v‚ª‚ ‚è‚Ü‚¹‚ñB
-                ‚Ù‚Æ‚ñ‚Ç‚ÌŠJ”­ŽÒ‚ªD‚Þ‚Ì‚ÍLog4j‚Å‚·B
-                HibernateƒfƒBƒXƒgƒŠƒrƒ…[ƒVƒ‡ƒ“i‚Ì<literal>etc/</literal> ƒfƒBƒŒƒNƒgƒŠj‚©‚ç 
-                <literal>log4j.properties</literal> ‚ð‚ ‚È‚½‚Ì <literal>src</literal> ƒfƒBƒŒƒNƒgƒŠ“à‚Ì
-                <literal>hibernate.cfg.xml</literal> ‚ׂ̗ɃRƒs[‚µ‚Ä‚­‚¾‚³‚¢B
-                Ý’è—á‚ðŒ©‚ÄAç’·‚ȏo—Í‚ª‚悯‚ê‚ΐݒè‚ð•ÏX‚µ‚Ä‚­‚¾‚³‚¢B
-                ƒfƒtƒHƒ‹ƒg‚Å‚ÍHibernate‚̃Xƒ^[ƒgƒAƒbƒvƒƒbƒZ[ƒW‚¾‚¯‚ª•W€o—Í‚É•\Ž¦‚³‚ê‚Ü‚·B
+                これは問題なく再コンパイルできるはずです。
+                最後にロギングシステムを設定する必要があります。
+                Hibernateはcommons loggingを使うため、Log4jとJDK 1.4 loggingの選択をする必要がありません。
+                ほとんどの開発者が好むのはLog4jです。
+                Hibernateディストリビューション(の<literal>etc/</literal> ディレクトリ)から 
+                <literal>log4j.properties</literal> をあなたの <literal>src</literal> ディレクトリ内の
+                <literal>hibernate.cfg.xml</literal> の隣にコピーしてください。
+                設定例を見て、冗長な出力がよければ設定を変更してください。
+                デフォルトではHibernateのスタートアップメッセージだけが標準出力に表示されます。
             </para>
 
             <para>
-                ƒ`ƒ…[ƒgƒŠƒAƒ‹‚̃Cƒ“ƒtƒ‰‚ÍŠ®‘S‚Å‚·B
-                Hibernate‚ðŽg‚Á‚ÄŽÀÛ‚̍ì‹Æ‚ð‚·‚é€”õ‚ª®‚¢‚Ü‚µ‚½B
+                チュートリアルのインフラは完全です。
+                Hibernateを使って実際の作業をする準備が整いました。
             </para>
 
         </sect2>
 
         <sect2 id="tutorial-firstapp-workingpersistence" revision="4">
-            <title>ƒIƒuƒWƒFƒNƒg‚̃[ƒh‚ÆŠi”[</title>
+            <title>オブジェクトのロードと格納</title>
 
             <para>
-                ‚‚¢‚ɃIƒuƒWƒFƒNƒg‚̃[ƒh‚ÆŠi”[‚ÉHibernate‚ðŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
-                <literal>main()</literal> ƒƒ\ƒbƒh‚ðŽ‚Â <literal>EventManager</literal> 
-                ƒNƒ‰ƒX‚ð‘‚«‚Ü‚·F
+                ついにオブジェクトのロードと格納にHibernateを使うことができます。
+                <literal>main()</literal> メソッドを持つ <literal>EventManager</literal> 
+                クラスを書きます:
             </para>
 
             <programlisting><![CDATA[package events;
@@ -667,48 +669,48 @@
 }]]></programlisting>
 
             <para>
-                V‚µ‚¢ <literal>Event</literal> ƒIƒuƒWƒFƒNƒg‚𐶐¬‚µA‚»‚ê‚ðHibernate‚É“n‚µ‚Ü‚·B
-                ¡‚Å‚ÍHibernate‚ªSQL‚ðˆ—‚µAƒf[ƒ^ƒx[ƒX‚Å <literal>INSERT</literal> ‚ðŽÀs‚µ‚Ü‚·B
-                ŽÀs‘O‚É <literal>Session</literal> ‚Æ <literal>Transaction</literal> 
-                ‚ðˆ—‚·‚éƒR[ƒh‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B
+                新しい <literal>Event</literal> オブジェクトを生成し、それをHibernateに渡します。
+                今ではHibernateがSQLを処理し、データベースで <literal>INSERT</literal> を実行します。
+                実行前に <literal>Session</literal> と <literal>Transaction</literal> 
+                を処理するコードを確認してください。
             </para>
 
             <para>
-                <literal>Session</literal> ‚Í1‚‚̍ì‹Æ’PˆÊ(Unit of Work)‚Å‚·B
-                “–•ª‚̊ԁA˜b‚ðŠÈ’P‚É‚·‚邽‚߂ɁA
-                <literal>Session</literal> ‚Æ <literal>Transaction</literal> ‚̑Ήž‚ðˆê‘Έê‚Ɖ¼’肵‚Ü‚·B
-                Žg—p‚µ‚Ä‚¢‚éƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“EƒVƒXƒeƒ€i‚±‚̃P[ƒX‚Å‚ÍJTA‚Æ‹¤‘¶‚Å‚«‚é’Pƒ‚ÈJDBCj‚©‚çƒR[ƒh‚ð•ÛŒì‚·‚邽‚߂ɁA
-                Hibernate <literal>Session</literal> ã‚Å—˜—p‰Â”\‚È <literal>Transaction</literal> API‚ðŽg—p‚µ‚Ü‚·B
+                <literal>Session</literal> は1つの作業単位(Unit of Work)です。
+                当分の間、話を簡単にするために、
+                <literal>Session</literal> と <literal>Transaction</literal> の対応を一対一と仮定します。
+                使用しているトランザクション・システム(このケースではJTAと共存できる単純なJDBC)からコードを保護するために、
+                Hibernate <literal>Session</literal> 上で利用可能な <literal>Transaction</literal> APIを使用します。
             </para>
 
             <para>
-                <literal>sessionFactory.getCurrentSession()</literal> ‚Í‚È‚É‚ð‚·‚é‚Ì‚Å‚µ‚傤‚©H
-                ‚Ü‚¸A‚¢‚Á‚½‚ñ <literal>SessionFactory</literal> ‚ðŽæ“¾‚µ•ÛŽ‚·‚ê‚Î
-                i <literal>HibernateUtil</literal> ‚Ì‚¨‚©‚°‚ÅŠÈ’P‚Å‚·jA‚±‚̃ƒ\ƒbƒh‚ð‰½“x‚Å‚àA
-                ‚Ç‚±‚©‚ç‚Å‚àŒÄ‚яo‚·‚±‚Æ‚ªo—ˆ‚Ü‚·B
-                <literal>getCurrentSession()</literal> ƒƒ\ƒbƒh‚͏í‚ɁuŒ»Ý‚́vì‹Æ’PˆÊ(Unit of Work)‚ð•Ô‚µ‚Ü‚·B
-                <literal>hibernate.cfg.xml</literal> ‚Ì‚±‚Ì‹@”\‚̐ݒè‚ŁA"thread"‚ðŽw’肵‚½‚±‚Æ‚ðŽv‚¢o‚µ‚Ä‚­‚¾‚³‚¢B
-                ‚±‚Ì‚½‚ߌ»Ý‚̍ì‹Æ’PˆÊ‚̃XƒR[ƒv‚́A‚±‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚ðŽÀs‚·‚錻Ý‚ÌJavaƒXƒŒƒbƒh‚Å‚·B
-                ‚µ‚©‚µ‚±‚ê‚Å‘S‚Ä‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-                <literal>Session</literal> ‚͍ŏ‰‚É•K—v‚Æ‚È‚Á‚½‚Æ‚«A‚‚܂èÅ‰‚É <literal>getCurrentSession()</literal> ‚ª
-                ŒÄ‚΂ꂽ‚Æ‚«‚ÉŠJŽn‚µ‚Ü‚·B
-                ‚»‚Ì‚Æ‚«Hibernate‚É‚æ‚茻Ý‚̃XƒŒƒbƒh‚ÉŒ‹‚Ñ•t‚¯‚ç‚ê‚Ü‚·B
-                ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªI—¹iƒRƒ~ƒbƒg‚à‚µ‚­‚̓[ƒ‹ƒoƒbƒNj‚µ‚½‚Æ‚«A
-                Hibernate‚àƒXƒŒƒbƒh‚©‚ç <literal>Session</literal> ‚ðØ‚è—£‚µAƒNƒ[ƒY‚µ‚Ü‚·B
-                Ä‚Ñ <literal>getCurrentSession()</literal> ‚ðŒÄ‚ԂƁA
-                V‚µ‚¢ <literal>Session</literal> ‚ðŽæ“¾‚µ‚ĐV‚µ‚¢ì‹Æ’PˆÊ‚ðƒXƒ^[ƒg‚Å‚«‚Ü‚·B
-                ‚±‚Ì <emphasis>thread-bound</emphasis> ƒvƒƒOƒ‰ƒ~ƒ“ƒOEƒ‚ƒfƒ‹‚ÍHibernate‚ð—˜—p‚·‚éã‚ōłàl‹C‚ª‚ ‚è‚Ü‚·B
+                <literal>sessionFactory.getCurrentSession()</literal> はなにをするのでしょうか?
+                まず、いったん <literal>SessionFactory</literal> を取得し保持すれば
+                ( <literal>HibernateUtil</literal> のおかげで簡単です)、このメソッドを何度でも、
+                どこからでも呼び出すことが出来ます。
+                <literal>getCurrentSession()</literal> メソッドは常に「現在の」作業単位(Unit of Work)を返します。
+                <literal>hibernate.cfg.xml</literal> のこの機能の設定で、"thread"を指定したことを思い出してください。
+                このため現在の作業単位のスコープは、このアプリケーションを実行する現在のJavaスレッドです。
+                しかしこれで全てではありません。
+                <literal>Session</literal> は最初に必要となったとき、つまり最初に <literal>getCurrentSession()</literal> が
+                呼ばれたときに開始します。
+                そのときHibernateにより現在のスレッドに結び付けられます。
+                トランザクションが終了(コミットもしくはロールバック)したとき、
+                Hibernateもスレッドから <literal>Session</literal> を切り離し、クローズします。
+                再び <literal>getCurrentSession()</literal> を呼ぶと、
+                新しい <literal>Session</literal> を取得して新しい作業単位をスタートできます。
+                この <emphasis>thread-bound</emphasis> プログラミング・モデルはHibernateを利用する上で最も人気があります。
             </para>
 
             <para>
-                ƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̈µ‚¢‚Æ‹«ŠE‚̏ڂµ‚¢î•ñ‚ɂ‚¢‚ẮA
-                <xref linkend="transactions"/> ‚ðŒ©‚Ä‚­‚¾‚³‚¢B
-                ‚±‚Ì—á‚ł̓Gƒ‰[ˆ—‚⃍[ƒ‹ƒoƒbƒN‚àŠ„ˆ¤‚µ‚Ü‚·B
+                トランザクションの扱いと境界の詳しい情報については、
+                <xref linkend="transactions"/> を見てください。
+                この例ではエラー処理やロールバックも割愛します。
             </para>
 
             <para>
-                ‚±‚̍ŏ‰‚̃‹[ƒ`ƒ“‚ðŽÀs‚·‚é‚ɂ́AAnt‚̃rƒ‹ƒhƒtƒ@ƒCƒ‹‚ɌĂяo‚µ‰Â”\‚ȃ^[ƒQƒbƒg‚ð
-                ’ljÁ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñF
+                この最初のルーチンを実行するには、Antのビルドファイルに呼び出し可能なターゲットを
+                追加しなければなりません:
             </para>
 
             <programlisting><![CDATA[<target name="run" depends="compile">
@@ -719,29 +721,29 @@
 </target>]]></programlisting>
 
             <para>
-                <literal>action</literal> ˆø”‚Ì’l‚́Aƒ^[ƒQƒbƒg‚ðŒÄ‚Ô‚Æ‚«‚ɃRƒ}ƒ“ƒhƒ‰ƒCƒ“‚Őݒ肵‚Ü‚·F
+                <literal>action</literal> 引数の値は、ターゲットを呼ぶときにコマンドラインで設定します:
             </para>
 
-            <programlisting><![CDATA[C:\hibernateTutorial\>ant run -Daction=store]]></programlisting>
+            <programlisting><![CDATA[C:¥hibernateTutorial¥>ant run -Daction=store]]></programlisting>
 
             <para>
-                ƒRƒ“ƒpƒCƒ‹‚·‚é‚ƁAHibernate‚ªƒXƒ^[ƒg‚µA‚ ‚È‚½‚̐ݒè‚É‚æ‚è‚Ü‚·‚ªA
-                ‘½‚­‚̃ƒOo—Í‚ª‚ ‚é‚Í‚¸‚Å‚·B
-                ‚»‚̍Ōã‚ɂ͈ȉº‚̍s‚ª‚ ‚é‚Å‚µ‚傤F
+                コンパイルすると、Hibernateがスタートし、あなたの設定によりますが、
+                多くのログ出力があるはずです。
+                その最後には以下の行があるでしょう:
             </para>
 
             <programlisting><![CDATA[[java] Hibernate: insert into EVENTS (EVENT_DATE, title, EVENT_ID) values (?, ?, ?)]]></programlisting>
 
             <para>
-                ‚±‚ê‚ÍHibernate‚ªŽÀs‚·‚é <literal>INSERT</literal> ‚ŁA
-                ƒNƒGƒXƒ`ƒ‡ƒ“ƒ}[ƒN‚ÍJDBCƒoƒCƒ“ƒhƒpƒ‰ƒ[ƒ^‚ð•\‚µ‚Ä‚¢‚Ü‚·B
-                ˆø”‚Æ‚µ‚ăoƒCƒ“ƒh‚³‚ê‚é’l‚ðŒ©‚é‚½‚߁A‚ ‚é‚¢‚̓ƒO‚̏璷«‚ðŒ¸‚ç‚·‚½‚߂ɂ́A
-                <literal>log4j.properties</literal> ‚ðƒ`ƒFƒbƒN‚µ‚Ä‚­‚¾‚³‚¢B
+                これはHibernateが実行する <literal>INSERT</literal> で、
+                クエスチョンマークはJDBCバインドパラメータを表しています。
+                引数としてバインドされる値を見るため、あるいはログの冗長性を減らすためには、
+                <literal>log4j.properties</literal> をチェックしてください。
             </para>
 
             <para>
-                ‚»‚ê‚Å‚Í“¯‚¶‚悤‚ÉŠi”[‚³‚ꂽƒCƒxƒ“ƒg‚̈ꗗ‚ðŒ©‚æ‚¤‚ÆŽv‚¢‚Ü‚·B
-                ‚»‚Ì‚½‚߃ƒCƒ“ƒƒ\ƒbƒh‚ɃIƒvƒVƒ‡ƒ“‚ð’ljÁ‚µ‚Ü‚·F
+                それでは同じように格納されたイベントの一覧を見ようと思います。
+                そのためメインメソッドにオプションを追加します:
             </para>
 
             <programlisting><![CDATA[if (args[0].equals("store")) {
@@ -757,7 +759,7 @@
 }]]></programlisting>
 
             <para>
-                V‚µ‚¢ <literal>listEvents()ƒƒ\ƒbƒh</literal> ‚à’ljÁ‚µ‚Ü‚·B
+                新しい <literal>listEvents()メソッド</literal> も追加します。
             </para>
 
             <programlisting><![CDATA[private List listEvents() {
@@ -774,47 +776,47 @@
 }]]></programlisting>
 
             <para>
-                ‚±‚±‚Å‚·‚邱‚Ƃ́Aƒf[ƒ^ƒx[ƒX‚©‚瑶Ý‚·‚é‚·‚×‚Ä‚Ì <literal>Event</literal> 
-                ƒIƒuƒWƒFƒNƒg‚ðƒ[ƒh‚·‚éHQL (Hibernate Query Language) ƒNƒGƒŠ‚ðŽg‚¤‚±‚Æ‚Å‚·B
-                Hibernate‚Í“KØ‚ÈSQL‚𐶐¬‚µA‚»‚ê‚ðƒf[ƒ^ƒx[ƒX‚É‘—‚èA
-                ‚»‚̃f[ƒ^‚ðŽg‚Á‚Ä <literal>Event</literal> ƒIƒuƒWƒFƒNƒg‚𐶐¬‚µ‚Ü‚·B
-                “–‘RHQL‚Å‚³‚ç‚É•¡ŽG‚ȃNƒGƒŠ‚ðì¬‚Å‚«‚Ü‚·B
+                ここですることは、データベースから存在するすべての <literal>Event</literal> 
+                オブジェクトをロードするHQL (Hibernate Query Language) クエリを使うことです。
+                Hibernateは適切なSQLを生成し、それをデータベースに送り、
+                そのデータを使って <literal>Event</literal> オブジェクトを生成します。
+                当然HQLでさらに複雑なクエリを作成できます。
             </para>
 
             <para>
-                 ˆÈ‰º‚̃Xƒeƒbƒv‚ŁA‚·‚ׂĂ̎Às‚ƃeƒXƒg‚ðs‚¢‚Ü‚·B
+                 以下のステップで、すべての実行とテストを行います。
             </para>
 
             <itemizedlist>
                 <listitem>
                     <para>
-                        hbm2ddl‚ð’Ê‚·‘O‚Ƀf[ƒ^ƒx[ƒX‚̃f[ƒ^‚ðì¬‚µAƒf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚𐶐¬‚·‚邽‚߂ɁA
-                         <literal>ant run -Daction=store</literal> ‚ðŽÀs‚µ‚Ä‚­‚¾‚³‚¢B
+                        hbm2ddlを通す前にデータベースのデータを作成し、データベーススキーマを生成するために、
+                         <literal>ant run -Daction=store</literal> を実行してください。
                     </para>
                 </listitem>
                 <listitem>
                     <para>
-                        ¡‚Í <literal>hibernate.cfg.xml</literal> ƒtƒ@ƒCƒ‹‚̃vƒƒpƒeƒB‚ðƒRƒƒ“ƒgƒAƒEƒg‚µ‚Ähbm2ddl‚𖳌ø‚É‚µ‚Ä‚­‚¾‚³‚¢B
-                        ’ʏí‚ÍŒp‘±“I‚É’P‘̃eƒXƒg‚ð‚µ‚Ä‚¢‚éŠÔ‚Íhbm2ddl‚ð—LŒø‚É‚µ‚Ä‚¨‚­‚Ì‚Å‚·‚ªA
-                        ‚»‚êˆÈŠO‚̏ꍇ‚Éhbm2ddl‚ð‹N“®‚·‚é‚ÆŠi”[‚µ‚Ä‚¨‚¢‚½‘S‚Ẵf[ƒ^‚ð <emphasis>ƒhƒƒbƒv</emphasis> ‚·‚é‚Å‚µ‚傤B
-                        Ý’è‚ð <literal>create</literal> ‚É‚·‚é‚ƁAŒ‹‰Ê‚Æ‚µ‚Ä
-                       uSessionFactory¶¬‚̍ہAƒXƒL[ƒ}‚©‚ç‘S‚Ẵe[ƒuƒ‹‚ðƒhƒƒbƒv‚µ‚čč쐬‚·‚év‚Æ‚¢‚¤Ý’è‚É‚È‚è‚Ü‚·B
+                        今は <literal>hibernate.cfg.xml</literal> ファイルのプロパティをコメントアウトしてhbm2ddlを無効にしてください。
+                        通常は継続的に単体テストをしている間はhbm2ddlを有効にしておくのですが、
+                        それ以外の場合にhbm2ddlを起動すると格納しておいた全てのデータを <emphasis>ドロップ</emphasis> するでしょう。
+                        設定を <literal>create</literal> にすると、結果として
+                       「SessionFactory生成の際、スキーマから全てのテーブルをドロップして再作成する」という設定になります。
                     </para>
                 </listitem>
             </itemizedlist>
 
             <para>
-                ¡ <literal>-Daction=list</literal> ‚ÆŽw’肵‚ÄAnt‚ðŒÄ‚ԂƁA
-                ‚±‚ê‚Ü‚ÅŠi”[‚µ‚½ƒCƒxƒ“ƒg‚ªŒ©‚¦‚é‚Í‚¸‚Å‚·B
-                <literal>store</literal> ƒAƒNƒVƒ‡ƒ“‚𐔉ñˆÈãŒÄ‚Ô‚±‚Æ‚à‰Â”\‚Å‚·B
+                今 <literal>-Daction=list</literal> と指定してAntを呼ぶと、
+                これまで格納したイベントが見えるはずです。
+                <literal>store</literal> アクションを数回以上呼ぶことも可能です。
             </para>
 
             <para>
-                ’ˆÓF‰‚ß‚ÄHibernate‚ɐG‚ê‚élX‚Ì‘½‚­‚ª‚±‚±‚ÅŽ¸”s‚·‚邽‚߁A<emphasis>Table not found</emphasis> ƒGƒ‰[ƒƒbƒZ[ƒW‚É
-                ŠÖ‚·‚鎿–â‚ð’èŠú“I‚ÉŒ©‚©‚¯‚Ü‚·B
-                ‚µ‚©‚µã‹L‚̃Xƒeƒbƒv‚ɏ]‚¦‚΁Ahbm2ddl‚ªÅ‰‚ÉŽÀs‚³‚ꂽ‚Æ‚«‚Ƀf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚ðì¬‚µA
-                ‚»‚ÌŒã‚ÌŽÀs‚É‚¨‚¢‚Ä‚à‚±‚̃XƒL[ƒ}‚ðŽg—p‚·‚é‚̂ŁA–â‘è‚Í‹N‚±‚ç‚È‚¢‚Å‚µ‚傤B
-                ƒ}ƒbƒsƒ“ƒO‚âƒf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚ð•ÏX‚µ‚½‚Æ‚«‚́A‚à‚¤ˆê“xhbm2ddl‚ð—LŒø‚É‚µ‚Ä‚­‚¾‚³‚¢B
+                注意:初めてHibernateに触れる人々の多くがここで失敗するため、<emphasis>Table not found</emphasis> エラーメッセージに
+                関する質問を定期的に見かけます。
+                しかし上記のステップに従えば、hbm2ddlが最初に実行されたときにデータベーススキーマを作成し、
+                その後の実行においてもこのスキーマを使用するので、問題は起こらないでしょう。
+                マッピングやデータベーススキーマを変更したときは、もう一度hbm2ddlを有効にしてください。
             </para>
 
         </sect2>
@@ -822,19 +824,19 @@
     </sect1>
 
     <sect1 id="tutorial-associations">
-        <title>ƒp[ƒg2 - ŠÖ˜A‚̃}ƒbƒsƒ“ƒO</title>
+        <title>パート2 - 関連のマッピング</title>
 
         <para>
-            ‰i‘±ƒGƒ“ƒeƒBƒeƒBƒNƒ‰ƒX‚ðƒe[ƒuƒ‹‚Ƀ}ƒbƒsƒ“ƒO‚µ‚Ü‚µ‚½B
-            ‚³‚ç‚É‚±‚̏ã‚É‚¢‚­‚‚©‚̃Nƒ‰ƒX‚ÌŠÖ˜A‚ð’ljÁ‚µ‚Ü‚µ‚傤B
-            ‚Ü‚¸‰‚߂ɃAƒvƒŠƒP[ƒVƒ‡ƒ“‚ɐlX‚ð’ljÁ‚µA”ނ炪ŽQ‰Á‚·‚éƒCƒxƒ“ƒg‚̃ŠƒXƒg‚ðŠi”[‚µ‚Ü‚·B
+            永続エンティティクラスをテーブルにマッピングしました。
+            さらにこの上にいくつかのクラスの関連を追加しましょう。
+            まず初めにアプリケーションに人々を追加し、彼らが参加するイベントのリストを格納します。
         </para>
 
         <sect2 id="tutorial-associations-mappinguser" revision="1">
-            <title>PersonƒNƒ‰ƒX‚̃}ƒbƒsƒ“ƒO</title>
+            <title>Personクラスのマッピング</title>
 
             <para>
-                Å‰‚Ì <literal>Person</literal> ƒNƒ‰ƒX‚Í’Pƒ‚Å‚·F
+                最初の <literal>Person</literal> クラスは単純です:
             </para>
 
             <programlisting><![CDATA[package events;
@@ -853,8 +855,8 @@
 }]]></programlisting>
 
             <para>
-                <literal>Person.hbm.xml</literal> ‚Æ‚¢‚¤V‚µ‚¢ƒ}ƒbƒsƒ“ƒOƒtƒ@ƒCƒ‹‚ðì¬‚µ‚Ä‚­‚¾‚³‚¢
-                iƒtƒ@ƒCƒ‹‚̍ŏ‰‚ÉDTD‚Ö‚ÌŽQÆ‚ð–Y‚ꂸ‚É“ü‚ê‚Ä‚­‚¾‚³‚¢jF
+                <literal>Person.hbm.xml</literal> という新しいマッピングファイルを作成してください
+                (ファイルの最初にDTDへの参照を忘れずに入れてください):
             </para>
 
             <programlisting><![CDATA[<hibernate-mapping>
@@ -871,33 +873,33 @@
 </hibernate-mapping>]]></programlisting>
 
             <para>
-                ÅŒã‚ÉHibernate‚̐ݒè‚ɐV‚µ‚¢ƒ}ƒbƒsƒ“ƒO‚ð’ljÁ‚µ‚Ä‚­‚¾‚³‚¢F
+                最後にHibernateの設定に新しいマッピングを追加してください:
             </para>
 
             <programlisting><![CDATA[<mapping resource="events/Event.hbm.xml"/>
 <mapping resource="events/Person.hbm.xml"/>]]></programlisting>
 
             <para>
-                ‚»‚ê‚Å‚Í‚±‚ê‚ç2‚‚̃Gƒ“ƒeƒBƒeƒBŠÔ‚ÌŠÖ˜A‚ðì¬‚µ‚Ü‚·B
-                lX‚ªƒCƒxƒ“ƒg‚ÉŽQ‰Á‚Å‚«AƒCƒxƒ“ƒg‚ªŽQ‰ÁŽÒ‚ðŽ‚Â‚Ì‚Í–¾‚ç‚©‚Å‚·B
-                ˆµ‚í‚È‚¯‚ê‚΂Ȃç‚È‚¢ÝŒv‚Ì–â‘è‚́A•ûŒüA‘½d“xAƒRƒŒƒNƒVƒ‡ƒ“‚̐U‚é•‘‚¢‚Å‚·B
+                それではこれら2つのエンティティ間の関連を作成します。
+                人々がイベントに参加でき、イベントが参加者を持つのは明らかです。
+                扱わなければならない設計の問題は、方向、多重度、コレクションの振る舞いです。
             </para>
         </sect2>
 
         <sect2 id="tutorial-associations-unidirset" revision="3">
-            <title>’P•ûŒüSetƒx[ƒXŠÖ˜A</title>
+            <title>単方向Setベース関連</title>
 
             <para>
-                ƒCƒxƒ“ƒg‚̃RƒŒƒNƒVƒ‡ƒ“‚ð <literal>Person</literal> ƒNƒ‰ƒX‚ɒljÁ‚µ‚Ü‚·B
-                ‚±‚¤‚µ‚Ä‚¨‚­‚ƁA–¾Ž¦“I‚ȃNƒGƒŠA‚‚܂è‚í‚´‚í‚´<literal>aPerson.getEvents()</literal>‚ðŒÄ‚яo‚³‚¸‚ɁA
-                “Á’è‚̐l‚É•R•t‚­ƒCƒxƒ“ƒg‚ðŠÈ’P‚ɃiƒrƒQ[ƒg‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-                Ž„‚½‚¿‚ÍJava‚̃RƒŒƒNƒVƒ‡ƒ“A<literal>Set</literal> ‚ðŽg‚¢‚Ü‚·B
-                ƒRƒŒƒNƒVƒ‡ƒ“‚͏d•¡—v‘f‚ðŽ‚½‚È‚¢‚µA‡”Ô‚ÍŽ„‚½‚¿‚ɂ͈Ӗ¡‚ª‚È‚¢‚©‚ç‚Å‚·B
+                イベントのコレクションを <literal>Person</literal> クラスに追加します。
+                こうしておくと、明示的なクエリ、つまりわざわざ<literal>aPerson.getEvents()</literal>を呼び出さずに、
+                特定の人に紐付くイベントを簡単にナビゲートすることができます。
+                私たちはJavaのコレクション、<literal>Set</literal> を使います。
+                コレクションは重複要素を持たないし、順番は私たちには意味がないからです。
             </para>
 
             <para>
-                <literal>Set</literal> ‚ÅŽÀ‘•‚³‚ê‚é’P•ûŒüA‘½’lŠÖ˜A‚ª•K—v‚Å‚·B
-                JavaƒNƒ‰ƒX“à‚ɑΉž‚·‚éƒR[ƒh‚ð‘‚¢‚ă}ƒbƒsƒ“ƒO‚µ‚Ü‚µ‚傤F
+                <literal>Set</literal> で実装される単方向、多値関連が必要です。
+                Javaクラス内に対応するコードを書いてマッピングしましょう:
             </para>
 
             <programlisting><![CDATA[public class Person {
@@ -914,16 +916,16 @@
 }]]></programlisting>
 
             <para>
-                ‚±‚ÌŠÖ˜A‚ðƒ}ƒbƒsƒ“ƒO‚·‚é‘O‚ɁA”½‘Α¤‚ɂ‚¢‚čl‚¦‚Ä‚­‚¾‚³‚¢B
-                –¾‚ç‚©‚È‚±‚Æ‚Å‚·‚ªA¡‚Í‚±‚ê‚ð’P•ûŒü‚É‚µ‚½‚¾‚¯‚Å‚·B
-                ‹t‚ɁA <literal>Event</literal> ‘¤‚É‚à•Ê‚̃RƒŒƒNƒVƒ‡ƒ“‚ðì‚邱‚Æ‚à‚Å‚«‚Ü‚·B
-                —Ⴆ‚Î <literal>anEvent.getParticipants()</literal> ‚̂悤‚ɁA
-                ‘o•ûŒü‚ɃiƒrƒQ[ƒg‚µ‚½‚¯‚ê‚΁A‚»‚¤‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B
-                ‚±‚ê‚Í‹@”\“I‚É‚Ý‚Ä•K—v‚Å‚Í‚ ‚è‚Ü‚¹‚ñB
-                “Á’è‚̃Cƒxƒ“ƒg‚ÉŠÖŒW‚·‚éƒf[ƒ^‚ðŽæ“¾‚·‚é–¾Šm‚ȃNƒGƒŠ‚ðA‚¢‚‚łàŽÀs‚·‚邱‚Æ‚ªo—ˆ‚Ü‚µ‚½B
-                ‚±‚̐݌v‚Ì‘I‘ð‚ÍŠJ”­ŽÒ‚É”C‚³‚ê‚Ä‚¢‚āA‚±‚Ì‹c˜_‚É‚æ‚è–¾‚ç‚©‚È‚Ì‚ÍŠÖ˜A‚Ì‘½d“x‚Å‚·B
-                ‚‚܂藼‘¤‚ðu‘½v’l‚É‚·‚éA <emphasis>‘½‘Α½</emphasis> ‚ƌĂ΂ê‚éŠÖ˜A‚Å‚·B
-                ‚»‚Ì‚½‚ßHibernate‚Ìmany-to-manyƒ}ƒbƒsƒ“ƒO‚ðŽg‚¢‚Ü‚·F
+                この関連をマッピングする前に、反対側について考えてください。
+                明らかなことですが、今はこれを単方向にしただけです。
+                逆に、 <literal>Event</literal> 側にも別のコレクションを作ることもできます。
+                例えば <literal>anEvent.getParticipants()</literal> のように、
+                双方向にナビゲートしたければ、そうすることもできます。
+                これは機能的にみて必要ではありません。
+                特定のイベントに関係するデータを取得する明確なクエリを、いつでも実行することが出来ました。
+                この設計の選択は開発者に任されていて、この議論により明らかなのは関連の多重度です。
+                つまり両側を「多」値にする、 <emphasis>多対多</emphasis> と呼ばれる関連です。
+                そのためHibernateのmany-to-manyマッピングを使います:
             </para>
 
             <programlisting><![CDATA[<class name="events.Person" table="PERSON">
@@ -942,21 +944,21 @@
 </class>]]></programlisting>
 
             <para>
-                Hibernate‚Í‚ ‚è‚Æ‚ ‚ç‚ä‚éŽí—ނ̃RƒŒƒNƒVƒ‡ƒ“ƒ}ƒbƒsƒ“ƒO‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·‚ªA
-                Å‚àˆê”Ê“I‚È‚à‚Ì‚ª <literal>&lt;set&gt;</literal> ‚Å‚·B
-                ‘½‘Α½ŠÖ˜Ai‚Ü‚½‚Í <emphasis>n:m</emphasis> ƒGƒ“ƒeƒBƒeƒBƒŠƒŒ[ƒVƒ‡ƒ“ƒVƒbƒvj‚ɂ́A
-                ŠÖ˜Aƒe[ƒuƒ‹‚ª•K—v‚Å‚·B
-                ‚±‚̃e[ƒuƒ‹‚Ì‚»‚ꂼ‚ê‚̍s‚́Al‚ƃCƒxƒ“ƒgŠÔ‚̃Šƒ“ƒN‚ð•\Œ»‚µ‚Ü‚·B
-                ƒe[ƒuƒ‹–¼‚Í <literal>set</literal> —v‘f‚Ì <literal>table</literal> ‘®«‚Őݒ肵‚Ü‚·B
-                l‘¤‚ÌŠÖ˜A‚ÌŽ¯•ÊŽqƒJƒ‰ƒ€–¼‚Í <literal>&lt;key&gt;</literal> —v‘f‚ŁA
-                ƒCƒxƒ“ƒg‘¤‚̃Jƒ‰ƒ€–¼‚Í <literal>&lt;many-to-many&gt;</literal> ‚Ì <literal>column</literal> 
-                ‘®«‚Å’è‹`‚µ‚Ü‚·B
-                Hibernate‚ɃRƒŒƒNƒVƒ‡ƒ“‚̃IƒuƒWƒFƒNƒg‚̃Nƒ‰ƒX
-                i³Šm‚ɂ́AŽQÆ‚̃RƒŒƒNƒVƒ‡ƒ“‚Ì”½‘Α¤‚̃Nƒ‰ƒXj‚ð‹³‚¦‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
+                Hibernateはありとあらゆる種類のコレクションマッピングをサポートしていますが、
+                最も一般的なものが <literal>&lt;set&gt;</literal> です。
+                多対多関連(または <emphasis>n:m</emphasis> エンティティリレーションシップ)には、
+                関連テーブルが必要です。
+                このテーブルのそれぞれの行は、人とイベント間のリンクを表現します。
+                テーブル名は <literal>set</literal> 要素の <literal>table</literal> 属性で設定します。
+                人側の関連の識別子カラム名は <literal>&lt;key&gt;</literal> 要素で、
+                イベント側のカラム名は <literal>&lt;many-to-many&gt;</literal> の <literal>column</literal> 
+                属性で定義します。
+                Hibernateにコレクションのオブジェクトのクラス
+                (正確には、参照のコレクションの反対側のクラス)を教えなければなりません。
             </para>
 
             <para>
-                ‚»‚Ì‚½‚ß‚±‚̃}ƒbƒsƒ“ƒO‚̃f[ƒ^ƒx[ƒXƒXƒL[ƒ}‚͈ȉº‚̂悤‚É‚È‚è‚Ü‚·BF
+                そのためこのマッピングのデータベーススキーマは以下のようになります。:
             </para>
 
             <programlisting><![CDATA[
@@ -976,10 +978,10 @@
         </sect2>
 
         <sect2 id="tutorial-associations-working" revision="2">
-            <title>ŠÖ˜A‚ð“­‚©‚¹‚é</title>
+            <title>関連を働かせる</title>
 
             <para>
-                <literal>EventManager</literal> ‚̐V‚µ‚¢ƒƒ\ƒbƒh‚ŐlX‚ƃCƒxƒ“ƒg‚ðˆê‚É‚µ‚Ü‚µ‚傤F
+                <literal>EventManager</literal> の新しいメソッドで人々とイベントを一緒にしましょう:
             </para>
 
             <programlisting><![CDATA[private void addPersonToEvent(Long personId, Long eventId) {
@@ -996,28 +998,28 @@
 }]]></programlisting>
 
             <para>
-                <literal>Person</literal> ‚Æ <literal>Event</literal> ‚ðƒ[ƒh‚µ‚½ŒãA
-                •’ʂ̃RƒŒƒNƒVƒ‡ƒ“ƒƒ\ƒbƒh‚ðŽg‚Á‚Ä’Pƒ‚É‚»‚̃RƒŒƒNƒVƒ‡ƒ“‚ðC³‚µ‚Ä‚­‚¾‚³‚¢B
-                ‚²——‚Ì‚Æ‚¨‚è <literal>update()</literal> ‚â <literal>save()</literal> 
-                ‚Ì–¾Ž¦“I‚ȌĂяo‚µ‚Í‚ ‚è‚Ü‚¹‚ñB
-                Hibernate‚́AC³‚³‚ꂽ‚±‚Æ‚É‚æ‚èXV‚·‚é•K—v‚Ì‚ ‚éƒRƒŒƒNƒVƒ‡ƒ“‚ðŽ©“®“I‚ÉŒŸ’m‚µ‚Ü‚·B
-                ‚±‚ê‚Í <emphasis>Ž©“®ƒ_[ƒeƒBƒ`ƒFƒbƒN</emphasis> ‚ƌĂ΂êA
-                ƒIƒuƒWƒFƒNƒg‚Ì–¼‘O‚âdateƒvƒƒpƒeƒB‚ðC³‚·‚邱‚Æ‚ÅŽŽ‚·‚±‚Æ‚à‰Â”\‚Å‚·B
-                ‚»‚ê‚炪 <emphasis>‰i‘±</emphasis> ó‘Ô‚É‚ ‚éŒÀ‚èA
-                ‚‚܂è“Á’è‚ÌHibernate <literal>Session</literal> ‚ɃoƒCƒ“ƒh‚³‚ê‚Ä‚¢‚éŒÀ‚è
-                i—Ⴆ‚΍ì‹Æ’PˆÊ(Unit of Work)‚Ì’†‚Å’P‚Ƀ[ƒh‚Ü‚½‚̓Z[ƒu‚³‚ꂽjA
-                Hibernate‚Í‚Ç‚ñ‚ȕύX‚àƒ‚ƒjƒ^[‚µA’x‰„‘‚«ž‚Ý(write-behind)‚ÅSQL‚ðŽÀs‚µ‚Ü‚·B
-                ’ʏíAì‹Æ’PˆÊ(Unit of Work)‚̍Ōã‚É‚¾‚¯s‚í‚ê‚éƒf[ƒ^ƒx[ƒX‚ƃƒ‚ƒŠ‚̏ó‘Ԃ𓯊ú‚³‚¹‚鏈—‚́A
-                <emphasis>ƒtƒ‰ƒbƒVƒ…</emphasis> ‚ƌĂ΂ê‚Ü‚·B
-                ‚±‚̃R[ƒh‚ł́Aì‹Æ’PˆÊ(Unit of Work)‚̓f[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚̃Rƒ~ƒbƒgi‚à‚µ‚­‚̓[ƒ‹ƒoƒbƒNj‚ŏI—¹‚µ‚Ü‚·B
-                ‚±‚ê‚́A <literal>CurrentSessionContext</literal> ƒNƒ‰ƒX‚ɑ΂µ‚Ä <literal>thread</literal> ‚ðÝ’肵‚½‚½‚ß‚Å‚·B
+                <literal>Person</literal> と <literal>Event</literal> をロードした後、
+                普通のコレクションメソッドを使って単純にそのコレクションを修正してください。
+                ご覧のとおり <literal>update()</literal> や <literal>save()</literal> 
+                の明示的な呼び出しはありません。
+                Hibernateは、修正されたことにより更新する必要のあるコレクションを自動的に検知します。
+                これは <emphasis>自動ダーティチェック</emphasis> と呼ばれ、
+                オブジェクトの名前やdateプロパティを修正することで試すことも可能です。
+                それらが <emphasis>永続</emphasis> 状態にある限り、
+                つまり特定のHibernate <literal>Session</literal> にバインドされている限り
+                (例えば作業単位(Unit of Work)の中で単にロードまたはセーブされた)、
+                Hibernateはどんな変更もモニターし、遅延書き込み(write-behind)でSQLを実行します。
+                通常、作業単位(Unit of Work)の最後にだけ行われるデータベースとメモリの状態を同期させる処理は、
+                <emphasis>フラッシュ</emphasis> と呼ばれます。
+                このコードでは、作業単位(Unit of Work)はデータベーストランザクションのコミット(もしくはロールバック)で終了します。
+                これは、 <literal>CurrentSessionContext</literal> クラスに対して <literal>thread</literal> を設定したためです。
             </para>
 
             <para>
-                ˆÙ‚È‚éì‹Æ’PˆÊ(Unit of Work)‚ŐlX‚ƃCƒxƒ“ƒg‚ðƒ[ƒh‚·‚邱‚Æ‚à“–‘R‚Å‚«‚Ü‚·B
-                ‚»‚¤‚Å‚È‚¯‚ê‚΁A‰i‘±ó‘Ô‚É‚È‚¢‚Æ‚«iˆÈ‘O‚ɉi‘±‚Å‚ ‚Á‚½‚È‚çA‚±‚̏ó‘Ô‚ð <emphasis>•ª—£idetachedj</emphasis> 
-                ‚ƌĂт܂·jA <literal>Session</literal> ‚ÌŠO•”‚ŃIƒuƒWƒFƒNƒg‚ðC³‚µ‚Ü‚·B
-                •ª—£‚³‚ê‚é‚Æ‚«‚ɂ̓RƒŒƒNƒVƒ‡ƒ“‚ð•ÏX‚·‚邱‚Æ‚à‰Â”\‚Å‚·F
+                異なる作業単位(Unit of Work)で人々とイベントをロードすることも当然できます。
+                そうでなければ、永続状態にないとき(以前に永続であったなら、この状態を <emphasis>分離(detached)</emphasis> 
+                と呼びます)、 <literal>Session</literal> の外部でオブジェクトを修正します。
+                分離されるときにはコレクションを変更することも可能です:
             </para>
 
             <programlisting><![CDATA[private void addPersonToEvent(Long personId, Long eventId) {
@@ -1049,20 +1051,20 @@
 }]]></programlisting>
 
             <para>
-                <literal>update</literal> ‚̌Ăяo‚µ‚Í•ª—£ƒIƒuƒWƒFƒNƒg‚ðÄ‚щi‘±‰»‚µ‚Ü‚·B
-                ‚±‚ê‚́AV‚µ‚¢ì‹Æ’PˆÊ(Unit of Work)‚ɃoƒCƒ“ƒh‚·‚é‚ÆŒ¾‚¦‚é‚Å‚µ‚傤B
-                ‚»‚Ì‚½‚ß•ª—£‚̊ԂɉÁ‚¦‚ç‚ꂽ‚ǂ̂悤‚ȏC³‚àƒf[ƒ^ƒx[ƒX‚ɃZ[ƒu‚Å‚«‚Ü‚·B
-                ƒGƒ“ƒeƒBƒeƒBƒIƒuƒWƒFƒNƒg‚̃RƒŒƒNƒVƒ‡ƒ“‚ւ̏C³i’ljÁ¥íœj‚à“¯—l‚ɃZ[ƒu‚Å‚«‚Ü‚·B
+                <literal>update</literal> の呼び出しは分離オブジェクトを再び永続化します。
+                これは、新しい作業単位(Unit of Work)にバインドすると言えるでしょう。
+                そのため分離の間に加えられたどのような修正もデータベースにセーブできます。
+                エンティティオブジェクトのコレクションへの修正(追加・削除)も同様にセーブできます。
             </para>
 
             <para>
-                ‚±‚ê‚͍¡‚Í‚ ‚Ü‚èŽg‚¢‚Ý‚¿‚ª‚ ‚è‚Ü‚¹‚ñ‚ªA
-                Ž©•ª‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚̐݌v‚É‘g‚ݍž‚Þ‚±‚Æ‚ª‚Å‚«‚éd—v‚ȃRƒ“ƒZƒvƒg‚Å‚·B
-                ‚»‚ê‚Å‚Í‚±‚̃GƒNƒTƒTƒCƒY‚̍Ōã‚ɁA
-                <literal>EventManager</literal> ‚̃ƒCƒ“ƒƒ\ƒbƒh‚ɐV‚µ‚¢ƒAƒNƒVƒ‡ƒ“‚ð’ljÁ‚µ‚Ä
-                ƒRƒ}ƒ“ƒhƒ‰ƒCƒ“‚©‚çŒÄ‚яo‚µ‚Ä‚Ý‚Ü‚µ‚傤B
-                l‚âƒCƒxƒ“ƒg‚ÌŽ¯•ÊŽq‚ª•K—v‚È‚çA <literal>save()</literal> ƒƒ\ƒbƒh‚ª•Ô‚µ‚Ä‚­‚ê‚Ü‚·
-                iê‡‚É‚æ‚Á‚Ä‚ÍŽ¯•ÊŽq‚ð•Ô‚·‚½‚߂Ƀƒ\ƒbƒh‚ðC³‚·‚é•K—v‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñjB
+                これは今はあまり使いみちがありませんが、
+                自分のアプリケーションの設計に組み込むことができる重要なコンセプトです。
+                それではこのエクササイズの最後に、
+                <literal>EventManager</literal> のメインメソッドに新しいアクションを追加して
+                コマンドラインから呼び出してみましょう。
+                人やイベントの識別子が必要なら、 <literal>save()</literal> メソッドが返してくれます
+                (場合によっては識別子を返すためにメソッドを修正する必要があるかもしれません)。
             </para>
 
             <programlisting><![CDATA[else if (args[0].equals("addpersontoevent")) {
@@ -1073,36 +1075,36 @@
 }]]></programlisting>
 
             <para>
-                ‚±‚ê‚Í“¯‚¶‚悤‚ɏd—v‚È2‚‚̃Nƒ‰ƒXA‚‚܂è2‚‚̃Gƒ“ƒeƒBƒeƒBŠÔ‚ÌŠÖ˜A‚Ì—á‚Å‚µ‚½B
-                ‘O‚ɏq‚ׂ½‚悤‚ɁA“TŒ^“I‚ȃ‚ƒfƒ‹‚ɂ́A•’ʁu”äŠr“Id—v‚Å‚Í‚È‚¢v‘¼‚̃Nƒ‰ƒX‚ÆŒ^‚ª‚ ‚è‚Ü‚·B
-                ‚±‚ê‚Ü‚Å‚ÉŒ©‚½‚悤‚È <literal>int</literal> ‚â <literal>String</literal> ‚̂悤‚È‚à‚Ì‚Å‚·B
-                ‚±‚̂悤‚ȃNƒ‰ƒX‚ð <emphasis>’lŒ^</emphasis> ‚ÆŒ¾‚¢‚Ü‚·B
-                ‚±‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Í“Á’è‚̃Gƒ“ƒeƒBƒeƒB‚É <emphasis>ˆË‘¶</emphasis> ‚µ‚Ü‚·B
-                ‚±‚ÌŒ^‚̃Cƒ“ƒXƒ^ƒ“ƒX‚Í“ÆŽ©‚ÌID‚ðŽ‚¿‚Ü‚¹‚ñ‚µA
-                ƒGƒ“ƒeƒBƒeƒBŠÔ‚Å‹¤—L‚³‚ê‚邱‚Æ‚à‚ ‚è‚Ü‚¹‚ñ
-                iƒtƒ@[ƒXƒgƒl[ƒ€‚ª“¯‚¶‚¾‚Á‚½‚Æ‚µ‚Ä‚àA2l‚̐l‚Í“¯‚¶ <literal>firstname</literal> 
-                ƒIƒuƒWƒFƒNƒg‚ðŽQÆ‚µ‚Ü‚¹‚ñjB
-                ’lŒ^‚Í‚à‚¿‚ë‚ñJDK“à‚ÉŒ©‚‚©‚è‚Ü‚·‚ªA‚»‚ꂾ‚¯‚Å‚Í‚È‚­
-                iŽÀÛAHibernateƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚¨‚¢‚Ä‚·‚ׂĂÌJDKƒNƒ‰ƒX‚Í’lŒ^‚ÆŒ©‚È‚¹‚Ü‚·jA
-                —Ⴆ‚Î <literal>Address</literal> ‚â <literal>MonetaryAmount</literal> 
-                ‚̂悤‚È“ÆŽ©‚̈ˑ¶ƒNƒ‰ƒX‚ð‘‚­‚±‚Æ‚à‚Å‚«‚Ü‚·B
+                これは同じように重要な2つのクラス、つまり2つのエンティティ間の関連の例でした。
+                前に述べたように、典型的なモデルには、普通「比較的重要ではない」他のクラスと型があります。
+                これまでに見たような <literal>int</literal> や <literal>String</literal> のようなものです。
+                このようなクラスを <emphasis>値型</emphasis> と言います。
+                このインスタンスは特定のエンティティに <emphasis>依存</emphasis> します。
+                この型のインスタンスは独自のIDを持ちませんし、
+                エンティティ間で共有されることもありません
+                (ファーストネームが同じだったとしても、2人の人は同じ <literal>firstname</literal> 
+                オブジェクトを参照しません)。
+                値型はもちろんJDK内に見つかりますが、それだけではなく
+                (実際、HibernateアプリケーションにおいてすべてのJDKクラスは値型と見なせます)、
+                例えば <literal>Address</literal> や <literal>MonetaryAmount</literal> 
+                のような独自の依存クラスを書くこともできます。
             </para>
 
             <para>
-                ’lŒ^‚̃RƒŒƒNƒVƒ‡ƒ“‚ðÝŒv‚·‚邱‚Æ‚à‚Å‚«‚Ü‚·B
-                ‚±‚ê‚Í‘¼‚̃Gƒ“ƒeƒBƒeƒB‚Ö‚ÌŽQÆ‚̃RƒŒƒNƒVƒ‡ƒ“‚Æ‚ÍŠT”O“I‚É”ñí‚ɈقȂè‚Ü‚·‚ªA
-                Java‚Å‚Í‚Ù‚Æ‚ñ‚Ç“¯‚¶‚悤‚ÉŒ©‚¦‚Ü‚·B
+                値型のコレクションを設計することもできます。
+                これは他のエンティティへの参照のコレクションとは概念的に非常に異なりますが、
+                Javaではほとんど同じように見えます。
             </para>
 
         </sect2>
 
         <sect2 id="tutorial-associations-valuecollections">
-            <title>’l‚̃RƒŒƒNƒVƒ‡ƒ“</title>
+            <title>値のコレクション</title>
 
             <para>
-                ’lŒ^ƒIƒuƒWƒFƒNƒg‚̃RƒŒƒNƒVƒ‡ƒ“‚ð <literal>Person</literal> ƒGƒ“ƒeƒBƒeƒB‚֒ljÁ‚µ‚Ü‚·B
-                Eƒ[ƒ‹ƒAƒhƒŒƒX‚ðŠi”[‚µ‚½‚¢‚Ì‚Å‚·‚ªA<literal>String</literal> Œ^‚ðŽg‚Á‚Ä‚¢‚é‚̂ŁA
-                ƒRƒŒƒNƒVƒ‡ƒ“‚ÍÄ‚Ñ <literal>Set</literal> ‚Å‚·F
+                値型オブジェクトのコレクションを <literal>Person</literal> エンティティへ追加します。
+                Eメールアドレスを格納したいのですが、<literal>String</literal> 型を使っているので、
+                コレクションは再び <literal>Set</literal> です:
             </para>
             <programlisting><![CDATA[private Set emailAddresses = new HashSet();
 
@@ -1115,7 +1117,7 @@
 }]]></programlisting>
 
             <para>
-                ‚±‚Ì <literal>Set</literal> ‚̃}ƒbƒsƒ“ƒO‚Å‚·F
+                この <literal>Set</literal> のマッピングです:
             </para>
 
             <programlisting><![CDATA[<set name="emailAddresses" table="PERSON_EMAIL_ADDR">
@@ -1124,19 +1126,19 @@
 </set>]]></programlisting>
 
             <para>
-                ‘O‚̃}ƒbƒsƒ“ƒO‚Æ”ä‚ׂĈႤ‚Ì‚Í <literal>element</literal> ‚Ì•”•ª‚Å‚·‚ªA
-                Hibernate‚É‚±‚̃RƒŒƒNƒVƒ‡ƒ“‚ª‘¼‚̃Gƒ“ƒeƒBƒeƒB‚Ö‚ÌŽQÆ‚ðŠÜ‚Ü‚¸A
-                <literal>String</literal> Œ^‚Ì—v‘f‚̃RƒŒƒNƒVƒ‡ƒ“‚ðŠÜ‚Þ‚±‚Æ‚ð‹³‚¦‚Ü‚·B
-                i¬•¶Žš‚Ì–¼‘O(string)‚ÍHibernate‚̃}ƒbƒsƒ“ƒOŒ^‚Ü‚½‚̓Rƒ“ƒo[ƒ^‚Å‚ ‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·jB
-                ŒJ‚è•Ô‚µ‚Ü‚·‚ªA<literal>set</literal> —v‘f‚Ì <literal>table</literal> ‘®«‚́A
-                ƒRƒŒƒNƒVƒ‡ƒ“‚Ì‚½‚߂̃e[ƒuƒ‹–¼‚ðŽw’肵‚Ü‚·B
-                <literal>key</literal> —v‘f‚̓RƒŒƒNƒVƒ‡ƒ“ƒe[ƒuƒ‹‚ÌŠO•”ƒL[ƒJƒ‰ƒ€–¼‚ð’è‹`‚µ‚Ü‚·B
-                <literal>element</literal> —v‘f‚Ì <literal>column</literal> ‘®«‚Í <literal>String</literal> 
-                ‚Ì’l‚ªŽÀÛ‚ÉŠi”[‚³‚ê‚éƒJƒ‰ƒ€‚Ì–¼‘O‚ð’è‹`‚µ‚Ü‚·B
+                前のマッピングと比べて違うのは <literal>element</literal> の部分ですが、
+                Hibernateにこのコレクションが他のエンティティへの参照を含まず、
+                <literal>String</literal> 型の要素のコレクションを含むことを教えます。
+                (小文字の名前(string)はHibernateのマッピング型またはコンバータであるということです)。
+                繰り返しますが、<literal>set</literal> 要素の <literal>table</literal> 属性は、
+                コレクションのためのテーブル名を指定します。
+                <literal>key</literal> 要素はコレクションテーブルの外部キーカラム名を定義します。
+                <literal>element</literal> 要素の <literal>column</literal> 属性は <literal>String</literal> 
+                の値が実際に格納されるカラムの名前を定義します。
             </para>
 
             <para>
-                XV‚µ‚½ƒXƒL[ƒ}‚ðŒ©‚Ä‚­‚¾‚³‚¢F
+                更新したスキーマを見てください:
             </para>
 
             <programlisting><![CDATA[
@@ -1154,15 +1156,15 @@
  ]]></programlisting>
 
             <para>
-                ƒRƒŒƒNƒVƒ‡ƒ“ƒe[ƒuƒ‹‚ÌŽåƒL[‚́AŽÀÛ‚Í—¼•û‚̃Jƒ‰ƒ€‚ðŽg‚Á‚½•¡‡ƒL[‚Å‚ ‚邱‚Æ‚ª‚í‚©‚è‚Ü‚·B
-                ‚±‚ê‚͐l‚²‚Æ‚ÉEƒ[ƒ‹ƒAƒhƒŒƒX‚ªd•¡‚Å‚«‚È‚¢‚Æ‚¢‚¤‚±‚ƂŁA
-                Java‚Ìset‚É—v‹‚³‚ê‚éƒZƒ}ƒ“ƒeƒBƒNƒX‚»‚Ì‚à‚Ì‚Å‚·B
+                コレクションテーブルの主キーは、実際は両方のカラムを使った複合キーであることがわかります。
+                これは人ごとにEメールアドレスが重複できないということで、
+                Javaのsetに要求されるセマンティクスそのものです。
             </para>
 
             <para>
-                ˆÈ‘Ol‚ƃCƒxƒ“ƒg‚ðŠÖ˜A‚¯‚½‚Æ‚«‚Æ‘S‚­“¯‚¶‚悤‚ɁA
-                ¡‚⎎‚µ‚ɃRƒŒƒNƒVƒ‡ƒ“‚É—v‘f‚ð’ljÁ‚·‚邱‚Æ‚ª‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚µ‚½B
-                —¼•û‚Æ‚àJava‚Å‚Í“¯‚¶ƒR[ƒh‚Å‚·B
+                以前人とイベントを関連づけたときと全く同じように、
+                今や試しにコレクションに要素を追加することができるようになりました。
+                両方ともJavaでは同じコードです。
             </para>
 
             <programlisting><![CDATA[private void addEmailToPerson(Long personId, String emailAddress) {
@@ -1179,28 +1181,28 @@
 }]]></programlisting>
 
             <para>
-                ¡‰ñAƒRƒŒƒNƒVƒ‡ƒ“‚̏‰Šú‰»‚É <emphasis>fetch</emphasis> ƒNƒGƒŠ‚ðŽg—p‚µ‚Ü‚¹‚ñ‚Å‚µ‚½B
-                ‚»‚Ì‚½‚߁Agetterƒƒ\ƒbƒh‚̌Ăяo‚µ‚É‚æ‚Á‚ăRƒŒƒNƒVƒ‡ƒ“‚ð‰Šú‰»‚·‚邽‚ß‚ÌSELECT‚ª
-                ŽÀs‚³‚ê‚é‚̂ŁAƒRƒŒƒNƒVƒ‡ƒ“‚É—v‘f‚ð’ljÁ‚Å‚«‚Ü‚·B
-                SQL‚̃ƒO‚ðŠÄŽ‹‚µ‚āA‘¦ŽžƒtƒFƒbƒ`‚ðŽg‚Á‚čœK‰»‚µ‚Ä‚­‚¾‚³‚¢B
+                今回、コレクションの初期化に <emphasis>fetch</emphasis> クエリを使用しませんでした。
+                そのため、getterメソッドの呼び出しによってコレクションを初期化するためのSELECTが
+                実行されるので、コレクションに要素を追加できます。
+                SQLのログを監視して、即時フェッチを使って最適化してください。
             </para>
 
         </sect2>
 
         <sect2 id="tutorial-associations-bidirectional" revision="1">
-            <title>‘o•ûŒüŠÖ˜A</title>
+            <title>双方向関連</title>
 
             <para>
-                ŽŸ‚É‘o•ûŒüŠÖ˜A‚ðƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·B
-                Java‚Å—¼‘¤‚©‚çl‚ƃCƒxƒ“ƒg‚ÌŠÖ˜A‚𓮍삳‚¹‚Ü‚·B
-                ‚à‚¿‚ë‚ñAƒf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚Í•Ï‚í‚è‚Ü‚¹‚ñ‚ªA‘½d“x‚Í‘½‘Α½‚Ì‚Ü‚Ü‚Å‚·B
-                ƒŠƒŒ[ƒVƒ‡ƒiƒ‹ƒf[ƒ^ƒx[ƒX‚̓lƒbƒgƒ[ƒNƒvƒƒOƒ‰ƒ~ƒ“ƒOŒ¾Œê‚æ‚è‚à_“î‚Ȃ̂ŁA
-                ƒiƒrƒQ[ƒVƒ‡ƒ“‚Ì•ûŒü‚̂悤‚È‚à‚Ì‚ð•K—v‚Æ‚µ‚Ü‚¹‚ñB
-                ƒf[ƒ^‚Í‚ ‚ç‚ä‚é‚Ì•û–@‚ÅŒ©‚½‚è•œŒ³‚Å‚«‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
+                次に双方向関連をマッピングします。
+                Javaで両側から人とイベントの関連を動作させます。
+                もちろん、データベーススキーマは変わりませんが、多重度は多対多のままです。
+                リレーショナルデータベースはネットワークプログラミング言語よりも柔軟なので、
+                ナビゲーションの方向のようなものを必要としません。
+                データはあらゆるの方法で見たり復元できるということです。
             </para>
 
             <para>
-                ‚Ü‚¸ <literal>Event</literal> ƒCƒxƒ“ƒgƒNƒ‰ƒX‚ÉŽQ‰ÁŽÒ‚̃RƒŒƒNƒVƒ‡ƒ“‚ð’ljÁ‚µ‚Ü‚·F
+                まず <literal>Event</literal> イベントクラスに参加者のコレクションを追加します:
             </para>
 
             <programlisting><![CDATA[private Set participants = new HashSet();
@@ -1214,7 +1216,7 @@
 }]]></programlisting>
 
             <para>
-                ‚»‚ê‚Å‚Í <literal>Event.hbm.xml</literal> ‚ÅŠÖ˜A‚Ì‚±‚¿‚瑤‚ðƒ}ƒbƒsƒ“ƒO‚µ‚Ä‚­‚¾‚³‚¢B
+                それでは <literal>Event.hbm.xml</literal> で関連のこちら側をマッピングしてください。
             </para>
 
             <programlisting><![CDATA[<set name="participants" table="PERSON_EVENT" inverse="true">
@@ -1223,43 +1225,43 @@
 </set>]]></programlisting>
 
             <para>
-                ‚²——‚Ì‚Æ‚¨‚èA‚¢‚¸‚ê‚̃}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg(XMLƒtƒ@ƒCƒ‹)‚Å‚àA•’Ê‚Ì <literal>set</literal> 
-                ƒ}ƒbƒsƒ“ƒO‚ðŽg‚Á‚Ä‚¢‚Ü‚·B
-                <literal>key</literal> ‚Æ <literal>many-to-many</literal> ‚̃Jƒ‰ƒ€–¼‚ªA
-                —¼•û‚̃}ƒbƒsƒ“ƒOƒhƒLƒ…ƒƒ“ƒg‚Å“ü‚ê‘Ö‚¦‚É‚È‚Á‚Ä‚¢‚邱‚Æ‚É’–Ú‚µ‚Ä‚­‚¾‚³‚¢B
-                ‚±‚±‚ōłàd—v‚ȒljÁ€–ڂ́A <literal>Event</literal> ‚̃RƒŒƒNƒVƒ‡ƒ“ƒ}ƒbƒsƒ“ƒO‚Ì <literal>set</literal> 
-                —v‘f‚É‚ ‚é <literal>inverse="true"</literal> ‘®«‚Å‚·B
+                ご覧のとおり、いずれのマッピングドキュメント(XMLファイル)でも、普通の <literal>set</literal> 
+                マッピングを使っています。
+                <literal>key</literal> と <literal>many-to-many</literal> のカラム名が、
+                両方のマッピングドキュメントで入れ替えになっていることに注目してください。
+                ここで最も重要な追加項目は、 <literal>Event</literal> のコレクションマッピングの <literal>set</literal> 
+                要素にある <literal>inverse="true"</literal> 属性です。
             </para>
 
             <para>
-                ‚±‚ÌŽw’è‚̈Ӗ¡‚́A2‚‚̊Ԃ̃Gƒ“ƒeƒBƒeƒBŠÔ‚̃Šƒ“ƒN‚ɂ‚¢‚Ă̏î•ñ‚ð’T‚·•K—v‚ª‚ ‚é‚Æ‚«A
-                Hibernate‚Í”½‘Α¤‚̃Gƒ“ƒeƒBƒeƒBA‚‚܂è <literal>Person</literal> ƒNƒ‰ƒX‚©‚ç’T‚·‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
-                ˆê“x2‚‚̃Gƒ“ƒeƒBƒeƒBŠÔ‚Ì‘o•ûŒüƒŠƒ“ƒN‚ª‚ǂ̂悤‚ɍ쐬‚³‚ê‚é‚©‚ª‚í‚©‚ê‚΁A
-                ‚±‚ê‚ð—‰ð‚·‚é‚±‚Æ‚Í‚Æ‚Ä‚àŠÈ’P‚Å‚·B
+                この指定の意味は、2つの間のエンティティ間のリンクについての情報を探す必要があるとき、
+                Hibernateは反対側のエンティティ、つまり <literal>Person</literal> クラスから探すということです。
+                一度2つのエンティティ間の双方向リンクがどのように作成されるかがわかれば、
+                これを理解することはとても簡単です。
             </para>
 
         </sect2>
 
         <sect2 id="tutorial-associations-usingbidir">
-            <title>‘o•ûŒüƒŠƒ“ƒN‚Ì“®ì</title>
+            <title>双方向リンクの動作</title>
 
             <para>
-                ‚Ü‚¸AHibernate‚ª’ʏí‚ÌJava‚̃Zƒ}ƒ“ƒeƒBƒNƒX‚ɉe‹¿‚ð‹y‚Ú‚³‚È‚¢‚±‚Æ‚ðS‚É—¯‚ß‚Ä‚¨‚¢‚Ä‚­‚¾‚³‚¢B
-                Ž„‚½‚¿‚́A’P•ûŒü‚Ì—á‚Æ‚µ‚Ăǂ̂悤‚É <literal>Person</literal> ‚Æ <literal>Event</literal> 
-                ‚̊Ԃ̃Šƒ“ƒN‚ðì¬‚µ‚½‚Å‚µ‚傤‚©H
-                <literal>Person</literal> ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚̃Cƒxƒ“ƒg‚Ö‚ÌŽQÆ‚̃RƒŒƒNƒVƒ‡ƒ“‚É
-                <literal>Event</literal> ‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð’ljÁ‚µ‚Ü‚µ‚½B
-                ‚»‚Ì‚½‚ß‚±‚̃Šƒ“ƒN‚ð‘o•ûŒü‚É‚µ‚½‚¯‚ê‚΁A
-                “–‚½‚è‘O‚Å‚·‚ª”½‘Α¤‚É‚à“¯‚¶‚±‚Æ‚ð‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                <literal>Event</literal> ‚̃RƒŒƒNƒVƒ‡ƒ“‚É <literal>Person</literal> ‚Ö‚Ì
-                ŽQÆ‚ð’ljÁ‚·‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
-                ‚±‚́u—¼‘¤‚ŃŠƒ“ƒN‚ðÝ’è‚·‚邱‚Ɓv‚͐â‘΂ɕK—v‚Ȃ̂ŁAŒˆ‚µ‚Ä–Y‚ê‚È‚¢‚Å‚­‚¾‚³‚¢B
+                まず、Hibernateが通常のJavaのセマンティクスに影響を及ぼさないことを心に留めておいてください。
+                私たちは、単方向の例としてどのように <literal>Person</literal> と <literal>Event</literal> 
+                の間のリンクを作成したでしょうか?
+                <literal>Person</literal> のインスタンスのイベントへの参照のコレクションに
+                <literal>Event</literal> のインスタンスを追加しました。
+                そのためこのリンクを双方向にしたければ、
+                当たり前ですが反対側にも同じことをしなければなりません。
+                <literal>Event</literal> のコレクションに <literal>Person</literal> への
+                参照を追加するということです。
+                この「両側でリンクを設定すること」は絶対に必要なので、決して忘れないでください。
             </para>
 
             <para>
-                ‘½‚­‚ÌŠJ”­ŽÒ‚͐Td‚ɃvƒƒOƒ‰ƒ€‚·‚é‚̂ŁA
-                ƒGƒ“ƒeƒBƒeƒB‚Ì—¼‘¤‚ɐ³‚µ‚­ŠÖ˜A‚ðÝ’è‚·‚郊ƒ“ƒNŠÇ—ƒƒ\ƒbƒh‚ðì¬‚µ‚Ü‚·B
-                —Ⴆ‚Î <literal>Person</literal> ‚ł͈ȉº‚̂悤‚É‚È‚è‚Ü‚·BF
+                多くの開発者は慎重にプログラムするので、
+                エンティティの両側に正しく関連を設定するリンク管理メソッドを作成します。
+                例えば <literal>Person</literal> では以下のようになります。:
             </para>
 
             <programlisting><![CDATA[protected Set getEvents() {
@@ -1281,52 +1283,52 @@
 }]]></programlisting>
 
             <para>
-                ƒRƒŒƒNƒVƒ‡ƒ“‚̃Qƒbƒg‚ƃZƒbƒgƒƒ\ƒbƒh‚ªŒ»Ýprotected‚É‚È‚Á‚Ä‚¢‚邱‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-                ‚±‚ê‚Í“¯‚¶ƒpƒbƒP[ƒW‚̃Nƒ‰ƒX‚âƒTƒuƒNƒ‰ƒX‚̃ƒ\ƒbƒh‚͈ˑRƒAƒNƒZƒX‚ª‰Â”\‚Å‚·‚ªA
-                i‚Ù‚Æ‚ñ‚ǁj‚»‚̃pƒbƒP[ƒWŠO‚̂ǂ̃Nƒ‰ƒX‚Å‚à’¼Ú‚»‚̃RƒŒƒNƒVƒ‡ƒ“‚ð‘ä–³‚µ‚É‚·‚邱‚Æ‚ð–h‚¬‚Ü‚·B
-                ‚¨‚»‚ç‚­”½‘Α¤‚̃RƒŒƒNƒVƒ‡ƒ“‚É‚à“¯‚¶‚±‚Æ‚ð‚µ‚½•û‚ª‚¢‚¢‚Å‚µ‚傤B
+                コレクションのゲットとセットメソッドが現在protectedになっていることに注意してください。
+                これは同じパッケージのクラスやサブクラスのメソッドは依然アクセスが可能ですが、
+                (ほとんど)そのパッケージ外のどのクラスでも直接そのコレクションを台無しにすることを防ぎます。
+                おそらく反対側のコレクションにも同じことをした方がいいでしょう。
             </para>
 
             <para>
-                <literal>inverse</literal> ƒ}ƒbƒsƒ“ƒO‘®«‚Æ‚Í‚¢‚Á‚½‚¢‰½‚Å‚µ‚傤‚©H
-                ŠJ”­ŽÒ‚ÆJava‚É‚Æ‚Á‚ẮA‘o•ûŒüƒŠƒ“ƒN‚Í’P‚É—¼‘¤‚ÌŽQÆ‚𐳂µ‚­Ý’è‚·‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
-                ‚µ‚©‚µHibernate‚́i§–ñˆá”½‚ð”ð‚¯‚é‚½‚߂ɁjSQL‚Ì <literal>INSERT</literal> ‚Æ <literal>UPDATE</literal> 
-                •¶‚𐳊m‚ɕύX‚·‚邽‚߂̏\•ª‚ȏî•ñ‚ðŽ‚Á‚Ä‚¢‚È‚¢‚̂ŁA
-                ‘o•ûŒüŠÖ˜AƒvƒƒpƒeƒB‚ðˆµ‚¤‚½‚߂̉½‚ç‚©‚̏•‚¯‚ð•K—v‚Æ‚µ‚Ü‚·B
-                ŠÖ˜A‚̕Б¤‚ð <literal>inverse</literal> ‚ɐݒ肷‚邱‚ƂŁAHibernate‚ÍŠî–{“I‚ɂ͐ݒ肵‚½‘¤‚𖳎‹‚µA
-                ”½‘Α¤‚Ì <emphasis>‹¾</emphasis> ‚Æ‚µ‚čl‚¦‚Ü‚·B
-                ‚±‚ꂾ‚¯‚ŁAHibernate‚Í•ûŒü‚ðŽ‚ÂƒiƒrƒQ[ƒVƒ‡ƒ“ƒ‚ƒfƒ‹‚ðSQLƒf[ƒ^ƒx[ƒXƒXƒL[ƒ}‚Ö•ÏŠ·‚·‚é‚Æ‚«‚Ì
-                ‚·‚ׂĂ̖â‘è‚É‚¤‚Ü‚­‘Ώˆ‚Å‚«‚Ü‚·B
-                Šo‚¦‚Ä‚¨‚©‚È‚¯‚ê‚΂Ȃç‚È‚¢ƒ‹[ƒ‹‚ÍŠÈ’P‚Å‚·B
-                ‘o•ûŒüŠÖ˜A‚Í•K‚¸•Ð‘¤‚ð <literal>inverse</literal> ‚É‚·‚é•K—v‚ª‚ ‚é‚Æ‚¢‚¤‚±‚Æ‚Å‚·B
-                ˆê‘Α½ŠÖ˜A‚Å‚Í‚»‚ê‚Í‘½‘¤‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB
-                ‘½‘Α½ŠÖ˜A‚Å‚Í‚Ç‚¿‚瑤‚Å‚à\‚¢‚Ü‚¹‚ñB‚Ç‚¿‚ç‚Å‚àˆá‚¢‚Í‚ ‚è‚Ü‚¹‚ñB
+                <literal>inverse</literal> マッピング属性とはいったい何でしょうか?
+                開発者とJavaにとっては、双方向リンクは単に両側の参照を正しく設定するということです。
+                しかしHibernateは(制約違反を避けるために)SQLの <literal>INSERT</literal> と <literal>UPDATE</literal> 
+                文を正確に変更するための十分な情報を持っていないので、
+                双方向関連プロパティを扱うための何らかの助けを必要とします。
+                関連の片側を <literal>inverse</literal> に設定することで、Hibernateは基本的には設定した側を無視し、
+                反対側の <emphasis>鏡</emphasis> として考えます。
+                これだけで、Hibernateは方向を持つナビゲーションモデルをSQLデータベーススキーマへ変換するときの
+                すべての問題にうまく対処できます。
+                覚えておかなければならないルールは簡単です。
+                双方向関連は必ず片側を <literal>inverse</literal> にする必要があるということです。
+                一対多関連ではそれは多側でなければなりません。
+                多対多関連ではどちら側でも構いません。どちらでも違いはありません。
             </para>
 
         </sect2>
 
         <para>
-             ‚Å‚Í‚±‚ê‚ð¬‚³‚ÈWebƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚µ‚Ä‚Ý‚Ü‚µ‚傤B
+             ではこれを小さなWebアプリケーションにしてみましょう。
         </para>
 
     </sect1>
 
     <sect1 id="tutorial-webapp">
-        <title>ƒp[ƒg3 - EventManager WebƒAƒvƒŠƒP[ƒVƒ‡ƒ“</title>
+        <title>パート3 - EventManager Webアプリケーション</title>
 
         <para>
-             Hibernate‚ÌWebƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚́AƒXƒ^ƒ“ƒhƒAƒ[ƒ“‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚̂悤‚É
-             <literal>Session</literal> ‚Æ <literal>Transaction</literal> ‚ðŽg—p‚µ‚Ü‚·B
-             ‚µ‚©‚µ‚¢‚­‚‚©‚̈ê”Ê“I‚ȃpƒ^[ƒ“‚ª–𗧂¿‚Ü‚·B
-             ‚±‚±‚Å <literal>EventManagerServlet</literal> ‚ðì¬‚µ‚Ü‚·B‚±‚̃T[ƒuƒŒƒbƒg‚́A
-             ƒf[ƒ^ƒx[ƒX‚ÉŠi”[‚µ‚½‘S‚ẴCƒxƒ“ƒg‚ðƒŠƒXƒg‚É‚Å‚«A‚³‚ç‚ÉHTMLƒtƒH[ƒ€‚©‚çV‚µ‚¢ƒCƒxƒ“ƒg‚ð“ü—Í‚Å‚«‚é‚à‚Ì‚Å‚·B
+             HibernateのWebアプリケーションは、スタンドアローンのアプリケーションのように
+             <literal>Session</literal> と <literal>Transaction</literal> を使用します。
+             しかしいくつかの一般的なパターンが役立ちます。
+             ここで <literal>EventManagerServlet</literal> を作成します。このサーブレットは、
+             データベースに格納した全てのイベントをリストにでき、さらにHTMLフォームから新しいイベントを入力できるものです。
         </para>
 
         <sect2 id="tutorial-webapp-servlet" revision="1">
-            <title>Šî–{“I‚ÈServlet‚Ì‹Lq</title>
+            <title>基本的なServletの記述</title>
 
             <para>
-                V‚µ‚¢ƒNƒ‰ƒX‚ðAƒ\[ƒXƒfƒBƒŒƒNƒgƒŠ‚Ì <literal>events</literal> ƒpƒbƒP[ƒW‚ɍ쐬‚µ‚Ä‚­‚¾‚³‚¢B
+                新しいクラスを、ソースディレクトリの <literal>events</literal> パッケージに作成してください。
             </para>
 
             <programlisting><![CDATA[package events;
@@ -1339,8 +1341,8 @@
 }]]></programlisting>
 
             <para>
-                Servlet‚ÍHTTP‚Ì <literal>GET</literal> ƒŠƒNƒGƒXƒg‚Ì‚Ý‚ðˆ—‚·‚é‚̂ŁA
-                 <literal>doGet()</literal> ‚ðŽÀ‘•‚µ‚Ü‚·B
+                ServletはHTTPの <literal>GET</literal> リクエストのみを処理するので、
+                 <literal>doGet()</literal> を実装します。
             </para>
 
             <programlisting><![CDATA[protected void doGet(HttpServletRequest request,
@@ -1369,37 +1371,37 @@
 }]]></programlisting>
 
             <para>
-                ‚±‚ê‚Í <emphasis>session-per-request</emphasis> ‚Æ‚¢‚¤ƒpƒ^[ƒ“‚Å‚·B
-                Servlet‚ªƒŠƒNƒGƒXƒg‚ðŽó‚¯Žæ‚é‚ƁA <literal>SessionFactory</literal> ‚Ì
-                <literal>getCurrentSession()</literal> ‚̍ŏ‰‚̌Ăяo‚µ‚ŁA
-                Hibernate‚̐V‚µ‚¢ <literal>Session</literal> ‚ªŠJ‚©‚ê‚Ü‚·B
-                ‚»‚Ì‚Æ‚«ƒf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ªŠJŽn‚³‚ê‚Ü‚·B
-                ƒf[ƒ^‚̓ǂݏ‘‚«‚ÉŠÖ‚í‚炸A‚·‚ׂẴf[ƒ^ƒAƒNƒZƒX‚̓gƒ‰ƒ“ƒUƒNƒVƒ‡ƒ““à‚ōs‚¢‚Ü‚·B
-                iƒAƒvƒŠƒP[ƒVƒ‡ƒ““à‚ł̓I[ƒgƒRƒ~ƒbƒgƒ‚[ƒh‚ðŽg—p‚µ‚Ü‚¹‚ñjB
+                これは <emphasis>session-per-request</emphasis> というパターンです。
+                Servletがリクエストを受け取ると、 <literal>SessionFactory</literal> の
+                <literal>getCurrentSession()</literal> の最初の呼び出しで、
+                Hibernateの新しい <literal>Session</literal> が開かれます。
+                そのときデータベーストランザクションが開始されます。
+                データの読み書きに関わらず、すべてのデータアクセスはトランザクション内で行います。
+                (アプリケーション内ではオートコミットモードを使用しません)。
             </para>
 
             <para>
-                ŽŸ‚ɁAƒŠƒNƒGƒXƒg‚̃AƒNƒVƒ‡ƒ“‚͏ˆ—‚³‚êAƒŒƒXƒ|ƒ“ƒX‚Å‚ ‚éHTML‚ª•`‰æ‚³‚ê‚Ü‚·B
-                ‚±‚ê‚ɂ‚¢‚Ä‚Í‚·‚®‚Éà–¾‚µ‚Ü‚·B
+                次に、リクエストのアクションは処理され、レスポンスであるHTMLが描画されます。
+                これについてはすぐに説明します。
             </para>
 
             <para>
-                ÅŒã‚ɃŠƒNƒGƒXƒg‚̏ˆ—‚ÆHTML•`‰æ‚ªŠ®—¹‚µ‚½‚Æ‚«‚ɁAì‹Æ’PˆÊ(Unit of Work)‚ðI—¹‚µ‚Ü‚·B
-                ‚à‚µˆ—‚â•`‰æ’†‚É–â‘肪”­¶‚µ‚½ê‡Aexception‚ª“Š‚°‚ç‚ê‚ăf[ƒ^ƒx[ƒXƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‚ðƒ[ƒ‹ƒoƒbƒN‚µ‚Ü‚·B
-                ‚±‚ê‚Å <literal>session-per-request</literal> ƒpƒ^[ƒ“‚ªŠ®—¹‚µ‚Ü‚·B
-                ‘S‚ẴT[ƒuƒŒƒbƒg‚Ƀgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“‹«ŠE‚̃R[ƒh‚ð‘‚­‘ã‚í‚è‚ɁAƒT[ƒuƒŒƒbƒgƒtƒBƒ‹ƒ^‚É‹Lq‚·‚邱‚Æ‚à‰Â”\‚Å‚·B
-                <emphasis>Open Session in View</emphasis> ‚ƌĂ΂ê‚邱‚̃pƒ^[ƒ“‚ɂ‚¢‚ẮA
-                Hibernate‚ÌWebƒTƒCƒg‚âWiki‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
-                ƒT[ƒuƒŒƒbƒg‚Å‚Í‚È‚­JSP‚ÅHTML•`‰æ‚ð‚µ‚æ‚¤‚Æ‚·‚é‚ƁA‚·‚®‚É‚±‚̃pƒ^[ƒ“‚ɂ‚¢‚Ă̏î•ñ‚ª•K—v‚É‚È‚é‚Å‚µ‚傤B
+                最後にリクエストの処理とHTML描画が完了したときに、作業単位(Unit of Work)を終了します。
+                もし処理や描画中に問題が発生した場合、exceptionが投げられてデータベーストランザクションをロールバックします。
+                これで <literal>session-per-request</literal> パターンが完了します。
+                全てのサーブレットにトランザクション境界のコードを書く代わりに、サーブレットフィルタに記述することも可能です。
+                <emphasis>Open Session in View</emphasis> と呼ばれるこのパターンについては、
+                HibernateのWebサイトやWikiを参照してください。
+                サーブレットではなくJSPでHTML描画をしようとすると、すぐにこのパターンについての情報が必要になるでしょう。
             </para>
 
         </sect2>
 
         <sect2 id="tutorial-webapp-processing" revision="1">
-            <title>ˆ—‚Æ•`‰æ</title>
+            <title>処理と描画</title>
 
             <para>
-                 ‚ł́AƒŠƒNƒGƒXƒg‚̏ˆ—‚ƃy[ƒW‚Ì•`‰æ‚ðŽÀ‘•‚µ‚Ü‚·B
+                 では、リクエストの処理とページの描画を実装します。
             </para>
 
 <programlisting><![CDATA[// Write HTML header
@@ -1430,11 +1432,11 @@
 out.close();]]></programlisting>
 
             <para>
-                Java‚ÆHTML‚ª¬Ý‚·‚éƒR[ƒfƒBƒ“ƒOƒXƒ^ƒCƒ‹‚́A‚æ‚è•¡ŽG‚ȃAƒvƒŠƒP[ƒVƒ‡ƒ“‚É‚Í“K‚µ‚Ä‚¢‚È‚¢‚Å‚µ‚傤
-                i‚±‚̃`ƒ…[ƒgƒŠƒAƒ‹‚ł́AŠî–{“I‚ÈHibernate‚̃Rƒ“ƒZƒvƒg‚ðŽ¦‚µ‚Ä‚¢‚邾‚¯‚Å‚ ‚邱‚Æ‚ðŠo‚¦‚Ä‚¨‚¢‚Ä‚­‚¾‚³‚¢jB
-                ‚±‚̃R[ƒh‚ÍHTML‚̃wƒbƒ_[‚ƃtƒbƒ^[‚Ì‹Lq‚Å‚·B
-                ‚±‚̃y[ƒW‚ɂ́AƒCƒxƒ“ƒg‚ð“ü—Í‚·‚éHTMLƒtƒH[ƒ€‚ƁAƒf[ƒ^ƒx[ƒX‚É‚ ‚é‘S‚ẴCƒxƒ“ƒg‚̃ŠƒXƒg‚ª•\Ž¦‚³‚ê‚Ü‚·B
-                Å‰‚̃ƒ\ƒbƒh‚Í‚²‚­’Pƒ‚ÈHTMLo—Í‚Å‚·B
+                JavaとHTMLが混在するコーディングスタイルは、より複雑なアプリケーションには適していないでしょう
+                (このチュートリアルでは、基本的なHibernateのコンセプトを示しているだけであることを覚えておいてください)。
+                このコードはHTMLのヘッダーとフッターの記述です。
+                このページには、イベントを入力するHTMLフォームと、データベースにある全てのイベントのリストが表示されます。
+                最初のメソッドはごく単純なHTML出力です。
             </para>
 
             <programlisting><![CDATA[private void printEventForm(PrintWriter out) {
@@ -1447,8 +1449,8 @@
 }]]></programlisting>
 
             <para>
-                 <literal>listEvents()</literal> ƒƒ\ƒbƒh‚́AŒ»Ý‚̃XƒŒƒbƒh‚ÉŒ‹‚т‚­
-                 Hibernate‚Ì <literal>Session</literal> ‚ðŽg—p‚µ‚āAƒNƒGƒŠ‚ðŽÀs‚µ‚Ü‚·B
+                 <literal>listEvents()</literal> メソッドは、現在のスレッドに結びつく
+                 Hibernateの <literal>Session</literal> を使用して、クエリを実行します。
             </para>
 
             <programlisting><![CDATA[private void listEvents(PrintWriter out, SimpleDateFormat dateFormatter) {
@@ -1474,8 +1476,8 @@
 }]]></programlisting>
 
             <para>
-                ÅŒã‚ɁA <literal>store</literal> ƒAƒNƒVƒ‡ƒ“‚ª <literal>createAndStoreEvent()</literal> ƒƒ\ƒbƒh‚ð
-                ŒÄ‚яo‚µ‚Ü‚·B‚±‚̃ƒ\ƒbƒh‚Å‚àŒ»Ý‚̃XƒŒƒbƒh‚Ì <literal>Session</literal> ‚ð—˜—p‚µ‚Ü‚·B
+                最後に、 <literal>store</literal> アクションが <literal>createAndStoreEvent()</literal> メソッドを
+                呼び出します。このメソッドでも現在のスレッドの <literal>Session</literal> を利用します。
             </para>
 
             <programlisting><![CDATA[protected void createAndStoreEvent(String title, Date theDate) {
@@ -1488,26 +1490,26 @@
 }]]></programlisting>
 
             <para>
-                ‚±‚ê‚ŃT[ƒuƒŒƒbƒg‚ÌŠ®¬‚Å‚·B
-                ƒT[ƒuƒŒƒbƒg‚ւ̃ŠƒNƒGƒXƒg‚́Aˆê‚Â‚Ì <literal>Session</literal> ‚Æ 
-                <literal>Transaction</literal> ‚ŏˆ—‚³‚ê‚é‚Å‚µ‚傤B
-                Å‰‚̃Xƒ^ƒ“ƒhƒAƒ[ƒ“‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚̂悤‚ɁA
-                Hibernate‚ÍŽ©“®“I‚É‚±‚ê‚ç‚̃IƒuƒWƒFƒNƒg‚ðŽÀs‚·‚éƒXƒŒƒbƒh‚ÉŒ‹‚Ñ•t‚¯‚邱‚Æ‚ª‚Å‚«‚Ü‚·B
-                ‚±‚ê‚É‚æ‚èAŠJ”­ŽÒ‚ªŽ©—R‚ɃR[ƒh‚ðƒŒƒCƒ„[•ª‚¯‚Å‚«A
-                D‚«‚È•û–@‚Å <literal>SessionFactory</literal> ‚ւ̃AƒNƒZƒX‚ª‚Å‚«‚é‚悤‚É‚È‚è‚Ü‚·B
-                ’ʏíAŠJ”­ŽÒ‚Í‚æ‚èô—û‚³‚ꂽƒfƒUƒCƒ“‚ðŽg—p‚µ‚āAƒf[ƒ^ƒAƒNƒZƒX‚̃R[ƒh‚ð
-                ƒf[ƒ^ƒAƒNƒZƒXƒIƒuƒWƒFƒNƒg‚Ɉړ®‚·‚é‚Å‚µ‚傤iDAOƒpƒ^[ƒ“jB
-                ‚æ‚葽‚­‚Ì—á‚́AHibernate‚ÌWiki‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B
+                これでサーブレットの完成です。
+                サーブレットへのリクエストは、一つの <literal>Session</literal> と 
+                <literal>Transaction</literal> で処理されるでしょう。
+                最初のスタンドアローンのアプリケーションのように、
+                Hibernateは自動的にこれらのオブジェクトを実行するスレッドに結び付けることができます。
+                これにより、開発者が自由にコードをレイヤー分けでき、
+                好きな方法で <literal>SessionFactory</literal> へのアクセスができるようになります。
+                通常、開発者はより洗練されたデザインを使用して、データアクセスのコードを
+                データアクセスオブジェクトに移動するでしょう(DAOパターン)。
+                より多くの例は、HibernateのWikiを参照してください。
             </para>
 
         </sect2>
 
         <sect2 id="tutorial-webapp-deploy">
-            <title>ƒfƒvƒƒC‚ƃeƒXƒg</title>
+            <title>デプロイとテスト</title>
 
             <para>
-                ‚±‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚̃fƒvƒƒC‚Ì‚½‚߂ɁAWebƒA[ƒJƒCƒuiWARj‚ðì¬‚µ‚Ä‚­‚¾‚³‚¢B
-                ˆÈ‰º‚ÌAntƒ^[ƒQƒbƒg‚ð <literal>build.xml</literal> ‚ɉÁ‚¦‚Ä‚­‚¾‚³‚¢B
+                このアプリケーションのデプロイのために、Webアーカイブ(WAR)を作成してください。
+                以下のAntターゲットを <literal>build.xml</literal> に加えてください。
             </para>
 
 <programlisting><![CDATA[<target name="war" depends="compile">
@@ -1521,10 +1523,10 @@
 </target>]]></programlisting>
 
             <para>
-                ‚±‚̃^[ƒQƒbƒg‚Í <literal>hibernate-tutorial.war</literal> ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ð
-                ƒvƒƒWƒFƒNƒgƒfƒBƒŒƒNƒgƒŠ‚ɍ쐬‚µ‚Ü‚·B
-                ‚±‚̃tƒ@ƒCƒ‹‚Í‚·‚ׂẴ‰ƒCƒuƒ‰ƒŠ‚Æ <literal>web.xml</literal> ‹LqŽq‚ðŠÜ‚ñ‚Å‚¨‚èA
-                ƒvƒƒWƒFƒNƒg‚̃x[ƒXƒfƒBƒŒƒNƒgƒŠ‚É’u‚©‚ê‚邱‚Æ‚ðŠú‘Ò‚³‚ê‚Ü‚·B
+                このターゲットは <literal>hibernate-tutorial.war</literal> というファイルを
+                プロジェクトディレクトリに作成します。
+                このファイルはすべてのライブラリと <literal>web.xml</literal> 記述子を含んでおり、
+                プロジェクトのベースディレクトリに置かれることを期待されます。
             </para>
 
             <programlisting><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
@@ -1545,29 +1547,29 @@
 </web-app>]]></programlisting>
 
             <para>
-                WebƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚̃Rƒ“ƒpƒCƒ‹‚ƃfƒvƒƒC‚Ì‘O‚ɁA <literal>jsdk.jar</literal> ‚Æ‚¢‚¤
-                ’ljÁ‚̃‰ƒCƒuƒ‰ƒŠ‚ª•K—v‚È‚±‚Æ‚É’ˆÓ‚µ‚Ä‚­‚¾‚³‚¢B
-                ‚±‚ê‚ÍJavaƒT[ƒuƒŒƒbƒg‚ÌŠJ”­ƒLƒbƒg‚Å‚·B
-                ‚à‚µ‚Ü‚¾‚±‚̃‰ƒCƒuƒ‰ƒŠ‚ðŽ‚Á‚Ä‚¢‚È‚¢‚È‚çASun‚̃EƒFƒuƒTƒCƒg‚Å“üŽè‚µ‚āA
-                ƒ‰ƒCƒuƒ‰ƒŠƒfƒBƒŒƒNƒgƒŠ‚ɃRƒs[‚µ‚Ä‚­‚¾‚³‚¢B
-                ‚µ‚©‚µA‚±‚ê‚̓Rƒ“ƒpƒCƒ‹‚É‚Ì‚ÝŽg—p‚³‚êAWARƒpƒbƒP[ƒW‚©‚ç‚͏œŠO‚³‚ê‚Ü‚·B
+                Webアプリケーションのコンパイルとデプロイの前に、 <literal>jsdk.jar</literal> という
+                追加のライブラリが必要なことに注意してください。
+                これはJavaサーブレットの開発キットです。
+                もしまだこのライブラリを持っていないなら、Sunのウェブサイトで入手して、
+                ライブラリディレクトリにコピーしてください。
+                しかし、これはコンパイルにのみ使用され、WARパッケージからは除外されます。
             </para>
 
             <para>
-                ƒrƒ‹ƒh‚ƃfƒvƒƒC‚Ì‚½‚߂ɁAƒvƒƒWƒFƒNƒgƒfƒBƒŒƒNƒgƒŠ‚Å <literal>ant war</literal> ‚ðŒÄ‚яo‚µA
-                <literal>hibernate-tutorial.war</literal> ƒtƒ@ƒCƒ‹‚ðTomcat‚Ì <literal>webapp</literal> 
-                ƒfƒBƒŒƒNƒgƒŠ‚ɃRƒs[‚µ‚Ä‚­‚¾‚³‚¢B
-                ‚Ü‚¾Tomcat‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚¢‚È‚¯‚ê‚΁Aƒ_ƒEƒ“ƒ[ƒh‚µ‚āAˆÈ‰º‚̃Cƒ“ƒXƒg[ƒ‹ƒKƒCƒh‚ɏ]‚Á‚Ä‚­‚¾‚³‚¢B
-                ‚µ‚©‚µA‚±‚̃AƒvƒŠƒP[ƒVƒ‡ƒ“‚̃fƒvƒƒC‚·‚邽‚߂ɁATomcat‚̐ݒè‚ð•ÏX‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB
+                ビルドとデプロイのために、プロジェクトディレクトリで <literal>ant war</literal> を呼び出し、
+                <literal>hibernate-tutorial.war</literal> ファイルをTomcatの <literal>webapp</literal> 
+                ディレクトリにコピーしてください。
+                まだTomcatをインストールしていなければ、ダウンロードして、以下のインストールガイドに従ってください。
+                しかし、このアプリケーションのデプロイするために、Tomcatの設定を変更する必要はありません。
             </para>
 
             <para>
-                ˆê“xƒfƒvƒƒC‚µ‚ÄTomcat‚ð‹N“®‚·‚ê‚΁A <literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal> ‚Å
-                ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ւ̃AƒNƒZƒX‚ª‰Â”\‚Å‚·B
-                Å‰‚̃ŠƒNƒGƒXƒg‚ªì¬‚µ‚½ƒT[ƒuƒŒƒbƒg‚É“n‚Á‚½‚Æ‚«‚ɁATomcat‚̃ƒO‚Å
-                Hibernate‚̏‰Šú‰»ˆ—‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢
-               i <literal>HibernateUtil</literal> “à‚̐ÓI‰Šú‰»ƒuƒƒbƒN‚ªŒÄ‚΂ê‚Ä‚¢‚Ü‚·jB
-                ‚Ü‚½Aexception‚ª”­¶‚µ‚½‚È‚çÚ×‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B
+                一度デプロイしてTomcatを起動すれば、 <literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal> で
+                アプリケーションへのアクセスが可能です。
+                最初のリクエストが作成したサーブレットに渡ったときに、Tomcatのログで
+                Hibernateの初期化処理を確認してください
+               ( <literal>HibernateUtil</literal> 内の静的初期化ブロックが呼ばれています)。
+                また、exceptionが発生したなら詳細を確認してください。
             </para>
 
         </sect2>
@@ -1575,24 +1577,24 @@
     </sect1>
 
     <sect1 id="tutorial-summary" revision="1">
-        <title>—v–ñ</title>
+        <title>要約</title>
 
         <para>
-            ‚±‚̃`ƒ…[ƒgƒŠƒAƒ‹‚ł́AŠÈ’P‚ȃXƒ^ƒ“ƒhƒAƒ[ƒ“‚ÌHibernateƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Æ
-            ¬‹K–Í‚ÌWebƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð‘‚­‚½‚ß‚ÌŠî–{‚ðÐ‰î‚µ‚Ü‚µ‚½B
+            このチュートリアルでは、簡単なスタンドアローンのHibernateアプリケーションと
+            小規模のWebアプリケーションを書くための基本を紹介しました。
         </para>
 
         <para>
-            ‚à‚¤Hibernate‚ÉŽ©M‚ª‚ ‚ê‚΁AƒŠƒtƒ@ƒŒƒ“ƒXƒhƒLƒ…ƒƒ“ƒg‚Ì–ÚŽŸ‚É–Ú‚ð’Ê‚µ‚āA
-            –Ê”’‚»‚¤‚¾‚ÆŽv‚¤ƒgƒsƒbƒN‚ð’T‚µ‚Ä‚­‚¾‚³‚¢B
-            Å‚à•p”É‚ÉŽ¿–₪‚ ‚é‚̂́Aƒgƒ‰ƒ“ƒUƒNƒVƒ‡ƒ“ˆ—i<xref linkend="transactions"/>jA
-            ƒtƒFƒbƒ`‚̃pƒtƒH[ƒ}ƒ“ƒXi<xref linkend="performance"/>jA
-            API‚ÌŽg‚¢•ûi<xref linkend="objectstate"/>j‚ƃNƒGƒŠ
-            i<xref linkend="objectstate-querying"/>j‚Å‚·B
+            もうHibernateに自信があれば、リファレンスドキュメントの目次に目を通して、
+            面白そうだと思うトピックを探してください。
+            最も頻繁に質問があるのは、トランザクション処理(<xref linkend="transactions"/>)、
+            フェッチのパフォーマンス(<xref linkend="performance"/>)、
+            APIの使い方(<xref linkend="objectstate"/>)とクエリ
+            (<xref linkend="objectstate-querying"/>)です。
         </para>
 
         <para>
-            ‚³‚ç‚Ɂi“Á•Ê‚ȁjƒ`ƒ…[ƒgƒŠƒAƒ‹‚ª•K—v‚È‚çAHibernateƒEƒFƒuƒTƒCƒg‚ð–Y‚ꂸ‚Ƀ`ƒFƒbƒN‚µ‚Ä‚­‚¾‚³‚¢B
+            さらに(特別な)チュートリアルが必要なら、Hibernateウェブサイトを忘れずにチェックしてください。
         </para>
 
     </sect1>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/xml.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/xml.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/xml.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,48 +1,50 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
 <chapter id="xml">
-    <title>XMLƒ}ƒbƒsƒ“ƒO</title>
+    <title>XMLマッピング</title>
 
-    <para><emphasis>XMLƒ}ƒbƒsƒ“ƒO‚ÍHibernate3.0‚Å‚ÍŽŽŒ±“I‚È‹@”\‚Å‚ ‚èA”ñí‚ÉŠˆ“®“I‚ÉŠJ”­’†‚Å‚·B</emphasis></para>
+    <para><emphasis>XMLマッピングはHibernate3.0では試験的な機能であり、非常に活動的に開発中です。</emphasis></para>
 
     <sect1 id="xml-intro" revision="1">
-        <title>XMLƒf[ƒ^‚ł̍ì‹Æ</title>
+        <title>XMLデータでの作業</title>
 
         <para>
-            Hibernate‚ł͉i‘±«‚ÌPOJO‚ðŽg‚Á‚čì‹Æ‚·‚é‚Ì‚Æ‚Ù‚Ú“¯‚¶‚悤‚È‚â‚è•û‚ŁA
-            ‰i‘±«‚ÌXMLƒf[ƒ^‚ðŽg‚Á‚čì‹Æ‚Å‚«‚Ü‚·B
+            Hibernateでは永続性のPOJOを使って作業するのとほぼ同じようなやり方で、
+            永続性のXMLデータを使って作業できます。
         </para>
 
         <para>
-            Hibernate‚ÍXMLƒcƒŠ[‚𑀍삷‚邽‚ß‚ÌAPI‚Æ‚µ‚Ädom4j‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚·B
-            ƒf[ƒ^ƒx[ƒX‚©‚çdom4j‚̃cƒŠ[‚𕜌³‚·‚éƒNƒGƒŠ‚ð‘‚­‚±‚Æ‚ª‚Å‚«A
-            ƒcƒŠ[‚ɑ΂µ‚čs‚Á‚½C³‚ÍŽ©“®“I‚Ƀf[ƒ^ƒx[ƒX‚Æ“¯Šú‚³‚ê‚Ü‚·B
+            HibernateはXMLツリーを操作するためのAPIとしてdom4jをサポートしています。
+            データベースからdom4jのツリーを復元するクエリを書くことができ、
+            ツリーに対して行った修正は自動的にデータベースと同期されます。
             
-            ‚Ü‚½XMLƒhƒLƒ…ƒƒ“ƒg‚ðŽæ“¾‚·‚邱‚Æ‚ª‚Å‚«Adom4j‚ðŽg‚Á‚ăhƒLƒ…ƒƒ“ƒg‚ðƒp[ƒX‚µA
-            Hibernate‚Ì”CˆÓ‚ÌŠî–{‘€ì‚ðŽg‚Á‚ăf[ƒ^ƒx[ƒX‚֏‘‚«ž‚Þ‚±‚Æ‚ª‚Å‚«‚Ü‚·BF
-            ‚‚܂èA<literal>persist(), saveOrUpdate(), merge(), delete(), replicate()</literal>
-            ‘€ì‚Å‚·(ƒ}[ƒW‚Í‚Ü‚¾ƒTƒ|[ƒg‚µ‚Ä‚¢‚Ü‚¹‚ñ)B
+            またXMLドキュメントを取得することができ、dom4jを使ってドキュメントをパースし、
+            Hibernateの任意の基本操作を使ってデータベースへ書き込むことができます。:
+            つまり、<literal>persist(), saveOrUpdate(), merge(), delete(), replicate()</literal>
+            操作です(マージはまだサポートしていません)。
            
         </para>
 
         <para>
-            ƒf[ƒ^‚̃Cƒ“ƒ|[ƒg/ƒGƒNƒXƒ|[ƒgA
-            JMS‚É‚æ‚éƒGƒ“ƒeƒBƒeƒBƒf[ƒ^‚ÌŠO•”‰»‚âSOAPAXSLTƒx[ƒX‚̃Œƒ|[ƒg‚ȂǁA
-            ‚±‚Ì‹@”\‚É‚Í‘½‚­‚Ì—p“r‚ª‚ ‚è‚Ü‚·B
+            データのインポート/エクスポート、
+            JMSによるエンティティデータの外部化やSOAP、XSLTベースのレポートなど、
+            この機能には多くの用途があります。
         </para>
         
         <para>
-            ’Pˆê‚̃}ƒbƒsƒ“ƒO‚́AƒNƒ‰ƒX‚̃vƒƒpƒeƒB‚ÆXMLƒhƒLƒ…ƒƒ“ƒg‚̃m[ƒh‚ð
-            “¯Žž‚Ƀf[ƒ^ƒx[ƒX‚Öƒ}ƒbƒsƒ“ƒO‚·‚邽‚ß‚ÉŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
-            ‚Ü‚½ƒ}ƒbƒsƒ“ƒO‚·‚éƒNƒ‰ƒX‚ª‚È‚¯‚ê‚΁A
-            XML‚¾‚¯‚ðƒ}ƒbƒsƒ“ƒO‚·‚邽‚ß‚ÉŽg‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·B
+            単一のマッピングは、クラスのプロパティとXMLドキュメントのノードを
+            同時にデータベースへマッピングするために使うことができます。
+            またマッピングするクラスがなければ、
+            XMLだけをマッピングするために使うことができます。
             
         </para>
         
         <sect2 id="xml-intro-mapping">
-            <title>XML‚ƃNƒ‰ƒX‚̃}ƒbƒsƒ“ƒO‚𓯎ž‚ÉŽw’è‚·‚é</title>
+            <title>XMLとクラスのマッピングを同時に指定する</title>
 
             <para>
-                ‚±‚ê‚ÍPOJO‚ÆXML‚𓯎ž‚Ƀ}ƒbƒsƒ“ƒO‚·‚é—á‚Å‚·BF
+                これはPOJOとXMLを同時にマッピングする例です。:
             </para>
             
             <programlisting><![CDATA[<class name="Account" 
@@ -68,10 +70,10 @@
         </sect2>
         
         <sect2 id="xml-onlyxml">
-            <title>XMLƒ}ƒbƒsƒ“ƒO‚¾‚¯‚ðŽw’è‚·‚é</title>
+            <title>XMLマッピングだけを指定する</title>
 
             <para>
-                ‚±‚ê‚ÍPOJOƒNƒ‰ƒX‚ª‚È‚¢ƒ}ƒbƒsƒ“ƒO‚Ì—á‚Å‚·BF
+                これはPOJOクラスがないマッピングの例です。:
             </para>
             
             <programlisting><![CDATA[<class entity-name="Account" 
@@ -99,11 +101,11 @@
 </class>]]></programlisting>
         
             <para>
-                ‚±‚̃}ƒbƒsƒ“ƒO‚É‚æ‚èAdom4jƒcƒŠ[‚©A
-                ƒvƒƒpƒeƒB–¼/’l‚Ì‘g‚̃Oƒ‰ƒtijava‚Ì <literal>Map</literal>j‚Æ‚µ‚Ä
-                ƒf[ƒ^‚ɃAƒNƒZƒX‚Å‚«‚Ü‚·B
+                このマッピングにより、dom4jツリーか、
+                プロパティ名/値の組のグラフ(javaの <literal>Map</literal>)として
+                データにアクセスできます。
                 
-                ƒvƒƒpƒeƒB‚Ì–¼‘O‚́AHQLƒNƒGƒŠ[“à‚ÅŽQÆ‚Å‚«‚鏃ˆ‚Ș_—\‘¢‚Å‚·B
+                プロパティの名前は、HQLクエリー内で参照できる純粋な論理構造です。
             </para>
 
         </sect2>
@@ -111,53 +113,53 @@
      </sect1>
      
     <sect1 id="xml-mapping" revision="1">
-        <title>XMLƒ}ƒbƒsƒ“ƒO‚̃ƒ^ƒf[ƒ^</title>
+        <title>XMLマッピングのメタデータ</title>
 
         <para>
-            ‘½‚­‚ÌHibernate‚̃}ƒbƒsƒ“ƒO—v‘f‚́@<literal>node</literal>@‘®«‚ªŽg—p‚Å‚«‚Ü‚·B
-            ‚±‚ê‚É‚æ‚èXML‘®«‚Ì–¼‘O‚âƒvƒƒpƒeƒB‚âƒGƒ“ƒeƒBƒeƒBƒf[ƒ^‚ð•ÛŽ‚·‚é—v‘f‚ðŽw’è‚Å‚«‚Ü‚·B
-            <literal>node</literal>@‘®«‚̃tƒH[ƒ}ƒbƒg‚͈ȉº‚Ì’†‚Ì1‚‚łȂ¯‚ê‚΂Ȃè‚Ü‚¹‚ñBF
+            多くのHibernateのマッピング要素は <literal>node</literal> 属性が使用できます。
+            これによりXML属性の名前やプロパティやエンティティデータを保持する要素を指定できます。
+            <literal>node</literal> 属性のフォーマットは以下の中の1つでなければなりません。:
         </para>
         
         <itemizedlist spacing="compact">
         <listitem>
             <para>
-            <literal>"element-name"</literal> - Žw’肵‚½XML—v‘f‚Öƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·
+            <literal>"element-name"</literal> - 指定したXML要素へマッピングします
             </para>
         </listitem>
         <listitem>
             <para>
-            <literal>"@attribute-name"</literal> - Žw’肵‚½XML‘®«‚Öƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·
+            <literal>"@attribute-name"</literal> - 指定したXML属性へマッピングします
             </para>
         </listitem>
         <listitem>
             <para>
-            <literal>"."</literal> -@e—v‘f‚Öƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·
+            <literal>"."</literal> - 親要素へマッピングします
             </para>
         </listitem>
         <listitem>
             <para>
                 <literal>"element-name/@attribute-name"</literal> - 
-                Žw’肵‚½ƒGƒŒƒƒ“ƒg‚ÌŽw’肵‚½‘®«‚Öƒ}ƒbƒsƒ“ƒO‚µ‚Ü‚·
+                指定したエレメントの指定した属性へマッピングします
             </para>
         </listitem>
         </itemizedlist>
         
         <para>
-            ƒRƒŒƒNƒVƒ‡ƒ“‚Æ’Pˆê‚Ì’l‚ÌŠÖ˜A‚ɑ΂µ‚āA
-            ‚¨‚Ü‚¯‚Ì <literal>embed-xml</literal> ‘®«‚ª‚ ‚è‚Ü‚·B
-            ƒfƒtƒHƒ‹ƒg‚Ì <literal>embed-xml="true"</literal> ‚Ɛݒ肵‚½ê‡A
-            ŠÖ˜A‚·‚éƒGƒ“ƒeƒBƒeƒB(’lŒ^‚̃RƒŒƒNƒVƒ‡ƒ“)‚ÌXMLƒcƒŠ[‚́A
-            ’¼ÚŠÖ˜A‚ðŠ—L‚·‚éƒGƒ“ƒeƒBƒeƒB‚ÌXMLƒcƒŠ[“à‚É–„‚ߍž‚Ü‚ê‚Ü‚·B
-            ”½‘΂ɁA<literal>embed-xml="false"</literal> ‚Ɛݒ肵‚½ê‡A
-            ŽQÆ‚³‚ê‚鎯•ÊŽq‚Ì’l‚¾‚¯‚ª‘½d“x‚P‘¤‚ÌŠÖ˜A‚ɑ΂·‚éXML‚ÉŒ»‚êA
-            ’Pƒ‚ɃRƒŒƒNƒVƒ‡ƒ“‚Í‚Ü‚Á‚½‚­Œ»‚ê‚È‚­‚È‚è‚Ü‚·B
+            コレクションと単一の値の関連に対して、
+            おまけの <literal>embed-xml</literal> 属性があります。
+            デフォルトの <literal>embed-xml="true"</literal> と設定した場合、
+            関連するエンティティ(値型のコレクション)のXMLツリーは、
+            直接関連を所有するエンティティのXMLツリー内に埋め込まれます。
+            反対に、<literal>embed-xml="false"</literal> と設定した場合、
+            参照される識別子の値だけが多重度1側の関連に対するXMLに現れ、
+            単純にコレクションはまったく現れなくなります。
         </para>
         
         <para>
-            ‚ ‚Ü‚è‚É‘½‚­‚ÌŠÖ˜A‚ɑ΂µ‚Ä
-            <literal>embed-xml="true"</literal> ‚Æ‚µ‚½‚Ü‚Ü‚É‚·‚é‚Ì‚Í’ˆÓ‚·‚ׂ«‚Å‚·B
-            XML‚͏zŠÂ‚ð‚¤‚Ü‚­ˆµ‚¦‚Ü‚¹‚ñB
+            あまりに多くの関連に対して
+            <literal>embed-xml="true"</literal> としたままにするのは注意すべきです。
+            XMLは循環をうまく扱えません。
         </para>
         
         <programlisting><![CDATA[<class name="Customer" 
@@ -196,15 +198,15 @@
 </class>]]></programlisting>
 
         <para>
-            ‚±‚Ì—á‚ł́AŽÀÛ‚Ìaccount‚̃f[ƒ^‚Å‚Í‚È‚­A
-            account‚Ìid‚̃RƒŒƒNƒVƒ‡ƒ“‚𖄂ߍž‚Þ‚±‚Æ‚É‚µ‚Ü‚µ‚½B
-            ‘±‚«‚ÌHQLƒNƒGƒŠ‚Å‚·F
+            この例では、実際のaccountのデータではなく、
+            accountのidのコレクションを埋め込むことにしました。
+            続きのHQLクエリです:
         </para>
         
         <programlisting><![CDATA[from Customer c left join fetch c.accounts where c.lastName like :lastName]]></programlisting>
         
         <para>
-            ‚±‚̂悤‚ȃf[ƒ^ƒZƒbƒg‚ð•Ô‚·‚Å‚µ‚傤
+            このようなデータセットを返すでしょう
         </para>
         
         <programlisting><![CDATA[<customer id="123456789">
@@ -219,9 +221,9 @@
 </customer>]]></programlisting>
 
         <para>
-            <literal>&lt;one-to-many&gt;</literal> ƒ}ƒbƒsƒ“ƒO‚Å
-            <literal>embed-xml="true"</literal> ‚Ɛݒ肵‚½ê‡A
-            ƒf[ƒ^‚Í‚±‚̂悤‚É‚È‚é‚Å‚µ‚傤B
+            <literal>&lt;one-to-many&gt;</literal> マッピングで
+            <literal>embed-xml="true"</literal> と設定した場合、
+            データはこのようになるでしょう。
         </para>
         
         <programlisting><![CDATA[<customer id="123456789">
@@ -245,11 +247,11 @@
     
     
     <sect1 id="xml-manipulation" revision="1">
-        <title>XMLƒf[ƒ^‚ðˆµ‚¤</title>
+        <title>XMLデータを扱う</title>
         
         <para>
-            XMLƒhƒLƒ…ƒƒ“ƒg‚ðAƒAƒvƒŠƒP[ƒVƒ‡ƒ““à‚ōēǂݍž‚Ý‚âXV‚ð‚µ‚Ä‚Ý‚Ü‚µ‚傤B
-            ˆÈ‰º‚Å‚Ídom4j‚̃ZƒbƒVƒ‡ƒ“‚ðŽæ“¾‚·‚邱‚Ƃōs‚¢‚Ü‚·BF
+            XMLドキュメントを、アプリケーション内で再読み込みや更新をしてみましょう。
+            以下ではdom4jのセッションを取得することで行います。:
         </para>
         
        <programlisting><![CDATA[Document doc = ....;
@@ -288,9 +290,9 @@
 session.close();]]></programlisting>
 
         <para>
-            XMLƒx[ƒX‚̃f[ƒ^‚̃Cƒ“ƒ|[ƒg/ƒGƒNƒXƒ|[ƒg‚ðŽÀ‘•‚·‚邽‚߂ɁA
-            Hibernate‚Ì <literal>replicate()</literal> ‘€ì‚ð‚±‚Ì‹@”\‚ðŒ‹‚Ñ‚Â‚¯‚é‚Ì‚Í
-            ‹É‚ß‚Ä—LŒø‚Å‚·B
+            XMLベースのデータのインポート/エクスポートを実装するために、
+            Hibernateの <literal>replicate()</literal> 操作をこの機能を結びつけるのは
+            極めて有効です。
         </para>
        
     </sect1>

Modified: core/trunk/documentation/manual/ja-JP/src/main/docbook/legal_notice.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/legal_notice.xml	2007-10-19 03:15:08 UTC (rev 14109)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/legal_notice.xml	2007-10-19 03:50:52 UTC (rev 14110)
@@ -1,4 +1,4 @@
-<?xml version='1.0'?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE legalnotice PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
 
 <!--
@@ -49,4 +49,4 @@
     <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
+</legalnotice>




More information about the hibernate-commits mailing list