Author: steve.ebersole(a)jboss.com
Date: 2007-10-09 15:02:00 -0400 (Tue, 09 Oct 2007)
New Revision: 14076
Added:
core/trunk/documentation/manual/ja-JP/src/main/docbook/Hibernate_Reference.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/architecture.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/association_mapping.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/basic_mapping.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/batch.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/best_practices.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/collection_mapping.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/component_mapping.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/configuration.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/events.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_mappings.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_parentchild.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_weblog.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/filters.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/inheritance_mapping.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/performance.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/persistent_classes.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/preface.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_criteria.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_hql.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_sql.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/session_api.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/toolset_guide.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/transactions.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/tutorial.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/xml.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/AuthorWork.png
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/AuthorWork.zargo
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/CustomerOrderProduct.png
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/CustomerOrderProduct.zargo
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/EmployerEmployee.png
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/EmployerEmployee.zargo
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/full_cream.png
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/full_cream.svg
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/hibernate_logo_a.png
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/lite.png
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/lite.svg
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/overview.png
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/overview.svg
core/trunk/documentation/manual/ja-JP/src/main/docbook/legal_notice.xml
Removed:
core/trunk/documentation/manual/ja-JP/src/main/docbook/master.xml
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/
core/trunk/documentation/manual/ja-JP/src/main/resources/
Log:
new docbook layout (prep for translations migration to PO)
Added: core/trunk/documentation/manual/ja-JP/src/main/docbook/Hibernate_Reference.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/Hibernate_Reference.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/Hibernate_Reference.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+ <!ENTITY versionNumber "3.3.0.alpha1">
+ <!ENTITY copyrightYear "2004">
+ <!ENTITY copyrightHolder "Red Hat Middleware, LLC.">
+]>
+
+<book>
+
+ <bookinfo>
+ <title>HIBERNATE - Relational Persistence for Idiomatic Java</title>
+ <subtitle>Hibernate Reference Documentation</subtitle>
+ <releaseinfo>&versionNumber;</releaseinfo>
+ <productnumber>&versionNumber;</productnumber>
+ <issuenum>1</issuenum>
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="images/hibernate_logo_a.png"
align="center" />
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="images/hibernate_logo_a.png"
depth="3cm" />
+ </imageobject>
+ </mediaobject>
+ <copyright>
+ <year>©rightYear;</year>
+ <holder>©rightHolder;</holder>
+ </copyright>
+ <!--
+ todo : figure out how best to include translator info...
+ <xi:include href="author_group.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ -->
+ <xi:include href="legal_notice.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ </bookinfo>
+
+ <toc/>
+
+ <xi:include href="content/preface.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/tutorial.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/architecture.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/configuration.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/persistent_classes.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/basic_mapping.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/collection_mapping.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/association_mapping.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/component_mapping.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/inheritance_mapping.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/session_api.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/transactions.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/events.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/batch.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/query_hql.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/query_criteria.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/query_sql.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/filters.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/xml.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/performance.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/toolset_guide.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/example_parentchild.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/example_weblog.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/example_mappings.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+ <xi:include href="content/best_practices.xml"
xmlns:xi="http://www.w3.org/2001/XInclude" />
+
+</book>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/architecture.xml
(from rev 14075,
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/architecture.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/architecture.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/architecture.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,375 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="architecture">
+
+ <title>�A�[�L�e�N�`��</title>
+
+ <sect1 id="architecture-overview" revision="1">
+ <title>�T��</title>
+
+ <para>
+ Hibernate�A�[�L�e�N�`���́i���Ɂj�������x������̃r���[�F
+ </para>
+
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="../images/overview.svg"
format="SVG" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="../images/overview.png"
format="PNG" align="center"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>
+ ���̐}��Hibernate���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
+ </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
+ </para>
+
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="../images/lite.svg"
format="SVG" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="../images/lite.png"
format="PNG" align="center"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>
+ �u�d���v�A�[�L�e�N�`���́A�A�v���P�[�V��������A���̉��Ɉʒu����JDBC��JTA��API��
+ ��蕥���Ē��ۉ����A���̏ڍׂ̖ʓ|��Hibernate�Ɍ������܂��B
+ </para>
+
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="../images/full_cream.svg"
format="SVG" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="../images/full_cream.png"
format="PNG" align="center"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>
+ �ȉ��́A��̐}�Ɋ܂܂��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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <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
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </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
+ </para>
+ </sect1>
+
+ <sect1 id="architecture-states" revision="1">
+ <title>�C���X�^���X�̏��</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
+ </para>
+
+ <variablelist spacing="compact">
+ <varlistentry>
+ <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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <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
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect1>
+
+ <sect1 id="architecture-jmx" revision="1">
+ <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
+ </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
+ </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
+ </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
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ �����̃I�v�V�����ɂ��Ă̏ڍׂȏ��́AJBoss�A�v���P�[�V�����T�[�o���[�U�K�C�h��
+ �Q�l�ɂ��Ă��������B
+ </para>
+
+ <para>
+ JMX�T�[�r�X�Ƃ��ė��p�\�ȑ��̋@�\�ɁAHibernate���s�����v�����܂��B
+ <xref linkend="configuration-optional-statistics"/>
�����������B
+ </para>
+ </sect1>
+
+ <sect1 id="architecture-jca" revision="1">
+ <title>JCA �T�|�[�g</title>
+ <para>
+ Hibernate �� JCA �R�l�N�^�Ƃ��Ă�ݒ�ł��܂��B�ڍׂɂ��ẮAWeb�T�C�g���Ă��������B
+ Hibernate JCA �T�|�[�g�́A���̂Ƃ�������i�K�Ƃ��čl�����Ă��邱�Ƃɒ��ӂ��Ă��������B
+ </para>
+ </sect1>
+
+ <sect1 id="architecture-current-session" revision="2">
+ <title>�R���e�L�X�g��̃Z�b�V����</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
+ </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
+ </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
+ </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
+ </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
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+
<literal>org.hibernate.context.ThreadLocalSessionContext</literal> -
+ �X���b�h�̎��s�ɂ���āA���݂̃Z�b�V�������ǐՂ���܂��B
+ �ڍׂ�Javadoc��Q�Ƃ��Ă��������B
+ </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
+ </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
+ </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
+ </para>
+
+ </sect1>
+
+</chapter>
+
Copied:
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/association_mapping.xml
(from rev 14075,
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/association_mapping.xml)
===================================================================
---
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/association_mapping.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/association_mapping.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,620 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="associations">
+
+ <title>�֘A�}�b�s���O</title>
+
+ <sect1 id="assoc-intro" revision="1">
+ <title>�C���g���_�N�V����</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
+ </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
+ </para>
+
+ </sect1>
+
+ <sect1 id="assoc-unidirectional" revision="1">
+ <title>�P�����֘A</title>
+
+ <sect2 id="assoc-unidirectional-m21">
+ <title>���Έ�</title>
+
+ <para>
+ <emphasis>�P�������Έ�֘A</emphasis> �͒P�����֘A�̒��ōł��ʓI�Ȃ�̂ł��B
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <many-to-one name="address"
+ column="addressId"
+ not-null="true"/>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key, addressId bigint not null )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="assoc-unidirectional-121">
+ <title>��Έ�</title>
+
+ <para>
+ <emphasis>�O���L�[�̒P������Έ�֘A</emphasis> �͂قƂ�Ǔ�����̂ł��B
+ �B��Ⴄ�̂́A�J�����̃��j�[�N�Ȑ���ł��B
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <many-to-one name="address"
+ column="addressId"
+ unique="true"
+ not-null="true"/>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key, addressId bigint not null
unique )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ <para>
+ <emphasis>��L�[�̒P������Έ�֘A</emphasis>
�͒ʏ�A���ʂ�ID�W�F�l���[�^��g���܂��B
+ �i���̗�ł͊֘A�̕������t�ɂȂ��Ă��邱�Ƃɒ��ӂ��Ă��������j
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+</class>
+
+<class name="Address">
+ <id name="id" column="personId">
+ <generator class="foreign">
+ <param name="property">person</param>
+ </generator>
+ </id>
+ <one-to-one name="person" constrained="true"/>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table Address ( personId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="assoc-unidirectional-12m">
+ <title>��Α�</title>
+
+ <para>
+ <emphasis>�O���L�[�̒P������Α��֘A</emphasis> �͂ƂĂ����ȃP�[�X�ŁA
+ ���܂萄������Ă��܂���B
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <set name="addresses">
+ <key column="personId"
+ not-null="true"/>
+ <one-to-many class="Address"/>
+ </set>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table Address ( addressId bigint not null primary key, personId bigint not null )
+ ]]></programlisting>
+
+ <para>
+ ���̂悤�Ȋ֘A�̂��߂Ɍ����e�[�u����g�����Ƃ��E�߂��܂��B
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="assoc-unidirectional-join" revision="1">
+ <title>�����e�[�u����g�����P�����֘A</title>
+
+ <sect2 id="assoc-unidirectional-join-12m">
+ <title>��Α�</title>
+
+ <para>
+ <emphasis>�����e�[�u����g�����P������Α��֘A</emphasis>
+ �͂��D�܂����ł��B
+ <literal>unique="true"</literal>
�̎w��ɂ��A���d�x�����Α������Α�
+ �ɕς�������Ƃɒ��ӂ��ĉ������B
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <set name="addresses" table="PersonAddress">
+ <key column="personId"/>
+ <many-to-many column="addressId"
+ unique="true"
+ class="Address"/>
+ </set>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId not null, addressId bigint not null primary key )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="assoc-unidirectional-join-m21">
+ <title>���Έ�</title>
+
+ <para>
+ <emphasis>�����e�[�u���̒P�������Έ�֘A</emphasis> ��
+ �֘A���C�ӂł���Ƃ��ɔ��Ɉ�ʓI�Ȃ�̂ł��B
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <join table="PersonAddress"
+ optional="true">
+ <key column="personId" unique="true"/>
+ <many-to-one name="address"
+ column="addressId"
+ not-null="true"/>
+ </join>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null primary key, addressId bigint not
null )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="assoc-unidirectional-join-121">
+ <title>��Έ�</title>
+
+ <para>
+ <emphasis>�����e�[�u���̒P������Έ�֘A</emphasis> �́A�{���ɓ���ł���
+ �s�\�ł͂���܂���B
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <join table="PersonAddress"
+ optional="true">
+ <key column="personId"
+ unique="true"/>
+ <many-to-one name="address"
+ column="addressId"
+ not-null="true"
+ unique="true"/>
+ </join>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null primary key, addressId bigint not
null unique )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="assoc-unidirectional-join-m2m">
+ <title>���Α�</title>
+
+ <para>
+ �Ō�ɁA<emphasis>�P�������Α��֘A</emphasis> �����܂��B
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <set name="addresses" table="PersonAddress">
+ <key column="personId"/>
+ <many-to-many column="addressId"
+ class="Address"/>
+ </set>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null, addressId bigint not null, primary
key (personId, addressId) )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="assoc-bidirectional" revision="1">
+ <title>�o�����֘A</title>
+
+ <sect2 id="assoc-bidirectional-m21" revision="2">
+ <title>��Α�/���Έ�</title>
+
+ <para>
+ <emphasis>�o�������Έ�֘A</emphasis> �͍ł��ʓI�Ȋ֘A�ł��B
+ �i�W���I�Ȑe�q�W�ł��j
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <many-to-one name="address"
+ column="addressId"
+ not-null="true"/>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+ <set name="people" inverse="true">
+ <key column="addressId"/>
+ <one-to-many class="Person"/>
+ </set>
+</class>]]></programlisting>
+
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key, addressId bigint not null )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ <para>
+ <literal>List</literal>
�i�܂��͑��̃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
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id"/>
+ ...
+ <many-to-one name="address"
+ column="addressId"
+ not-null="true"
+ insert="false"
+ update="false"/>
+</class>
+
+<class name="Address">
+ <id name="id"/>
+ ...
+ <list name="people">
+ <key column="addressId" not-null="true"/>
+ <list-index column="peopleIdx"/>
+ <one-to-many class="Person"/>
+ </list>
+</class>]]></programlisting>
+
+ <para>
+ ����O���L�[�J������ <literal>NOT NULL</literal> �ł���Ȃ�A
+ �R���N�V�����}�b�s���O��
<literal><key></literal> �v�f��
+ <literal>not-null="true"</literal>
�ɂ��邱�Ƃ͏d�v�ł��B
+ ����q�ɂȂ��� <literal><column></literal>
�v�f�����ł͂Ȃ��A
+ <literal><key></literal> �v�f��
<literal>not-null="true"</literal>
+ �ƒ�`���Ȃ��悤�ɂ��Ă��������B
+ </para>
+
+ </sect2>
+
+ <sect2 id="assoc-bidirectional-121">
+ <title>��Έ�</title>
+
+ <para>
+ <emphasis>�O���L�[�̑o������Έ�֘A</emphasis> �͔��Ɉ�ʓI�ł��B
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <many-to-one name="address"
+ column="addressId"
+ unique="true"
+ not-null="true"/>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+ <one-to-one name="person"
+ property-ref="address"/>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key, addressId bigint not null
unique )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ <para>
+ <emphasis>��L�[�̑o������Έ�֘A</emphasis>
�͓����ID�W�F�l���[�^��g���܂��B
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <one-to-one name="address"/>
+</class>
+
+<class name="Address">
+ <id name="id" column="personId">
+ <generator class="foreign">
+ <param name="property">person</param>
+ </generator>
+ </id>
+ <one-to-one name="person"
+ constrained="true"/>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table Address ( personId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="assoc-bidirectional-join" revision="1">
+ <title>�����e�[�u����g�����o�����֘A</title>
+
+ <sect2 id="assoc-bidirectional-join-12m">
+ <title>��Α�/���Έ�</title>
+
+ <para>
+ <emphasis>�����e�[�u���̑o������Α��֘A</emphasis> �ł��B
+ <literal>inverse="true"</literal>
���֘A�[�A�R���N�V�����A�����̂����ꂩ��
+ �ݒ�ł��邱�Ƃɒ��ӂ��Ă��������B
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <set name="addresses"
+ table="PersonAddress">
+ <key column="personId"/>
+ <many-to-many column="addressId"
+ unique="true"
+ class="Address"/>
+ </set>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+ <join table="PersonAddress"
+ inverse="true"
+ optional="true">
+ <key column="addressId"/>
+ <many-to-one name="person"
+ column="personId"
+ not-null="true"/>
+ </join>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null, addressId bigint not null primary
key )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="assoc-bidirectional-join-121">
+ <title>��Έ�</title>
+
+ <para>
+ <emphasis>�����e�[�u���̑o������Έ�֘A</emphasis>
+ �͔��ɓ���ł����A�\�ł��B
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <join table="PersonAddress"
+ optional="true">
+ <key column="personId"
+ unique="true"/>
+ <many-to-one name="address"
+ column="addressId"
+ not-null="true"
+ unique="true"/>
+ </join>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+ <join table="PersonAddress"
+ optional="true"
+ inverse="true">
+ <key column="addressId"
+ unique="true"/>
+ <many-to-one name="address"
+ column="personId"
+ not-null="true"
+ unique="true"/>
+ </join>
+</class>]]></programlisting>
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null primary key, addressId bigint not
null unique )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="assoc-bidirectional-join-m2m" revision="1">
+ <title>���Α�</title>
+
+ <para>
+ �Ō�ɁA<emphasis>�o�������Α��֘A</emphasis> �����܂��B
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id" column="personId">
+ <generator class="native"/>
+ </id>
+ <set name="addresses" table="PersonAddress">
+ <key column="personId"/>
+ <many-to-many column="addressId"
+ class="Address"/>
+ </set>
+</class>
+
+<class name="Address">
+ <id name="id" column="addressId">
+ <generator class="native"/>
+ </id>
+ <set name="people" inverse="true"
table="PersonAddress">
+ <key column="addressId"/>
+ <many-to-many column="personId"
+ class="Person"/>
+ </set>
+</class>]]></programlisting>
+
+ <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null, addressId bigint not null, primary
key (personId, addressId) )
+create table Address ( addressId bigint not null primary key )
+ ]]></programlisting>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="assoc-complex">
+ <title>��蕡�G�Ȋ֘A�}�b�s���O</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
+ </para>
+
+ <programlisting><![CDATA[<properties
name="currentAccountKey">
+ <property name="accountNumber" type="string"
not-null="true"/>
+ <property name="currentAccount" type="boolean">
+ <formula>case when effectiveEndDate is null then 1 else 0
end</formula>
+ </property>
+</properties>
+<property name="effectiveEndDate" type="date"/>
+<property name="effectiveStateDate" type="date"
not-null="true"/>]]></programlisting>
+
+ <para>
+ �����āA�֘A�� <emphasis>�����_��</emphasis> �C���X�^���X
+ �i<literal>effectiveEndDate</literal>
��null�ł����́j�Ƀ}�b�s���O���܂��B
+ �ȉ��̂悤�ɂȂ�܂��F
+ </para>
+
+ <programlisting><![CDATA[<many-to-one
name="currentAccountInfo"
+ property-ref="currentAccountKey"
+ class="AccountInfo">
+ <column name="accountNumber"/>
+ <formula>'1'</formula>
+</many-to-one>]]></programlisting>
+
+ <para>
+ ����ɕ��G�ȗ�ł́A<literal>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
+ </para>
+
+ <programlisting><![CDATA[<join>
+ <key column="employeeId"/>
+ <subselect>
+ select employeeId, orgId
+ from Employments
+ group by orgId
+ having startDate = max(startDate)
+ </subselect>
+ <many-to-one name="mostRecentEmployer"
+ class="Organization"
+ column="orgId"/>
+</join>]]></programlisting>
+
+ <para>
+ ���̋@�\�͔��ɋ��͂ł��B
+ ���������̂悤�ȏꍇ�A���ʂ�HQL��criteria�N�G����g�����������H�I�ł��B
+ </para>
+
+ </sect1>
+
+
+</chapter>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/basic_mapping.xml
(from rev 14075,
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/basic_mapping.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/basic_mapping.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/basic_mapping.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,3485 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+
+<chapter id="mapping">
+ <title>��{�I��O/R�}�b�s���O</title>
+
+ <sect1 id="mapping-declaration" revision="1">
+ <title>�}�b�s���O��`</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
+ </para>
+
+ <para>
+ ������Hibernate���[�U��XML�}�b�s���O�̋L�q����Ƃōs���܂����A
+ XDoclet, Middlegen, AndroMDA�Ƃ����悤�ȃ}�b�s���O�h�L�������g������c�[����
+ ���������݂��܂��B
+ </para>
+
+ <para>
+ �T���v���̃}�b�s���O����n�߂܂��傤�F
+ </para>
+
+ <programlisting id="mapping-declaration-ex1"
revision="1"><![CDATA[<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="eg">
+
+ <class name="Cat"
+ table="cats"
+ discriminator-value="C">
+
+ <id name="id">
+ <generator class="native"/>
+ </id>
+
+ <discriminator column="subclass"
+ type="character"/>
+
+ <property name="weight"/>
+
+ <property name="birthdate"
+ type="date"
+ not-null="true"
+ update="false"/>
+
+ <property name="color"
+ type="eg.types.ColorUserType"
+ not-null="true"
+ update="false"/>
+
+ <property name="sex"
+ not-null="true"
+ update="false"/>
+
+ <property name="litterId"
+ column="litterId"
+ update="false"/>
+
+ <many-to-one name="mother"
+ column="mother_id"
+ update="false"/>
+
+ <set name="kittens"
+ inverse="true"
+ order-by="litter_id">
+ <key column="mother_id"/>
+ <one-to-many class="Cat"/>
+ </set>
+
+ <subclass name="DomesticCat"
+ discriminator-value="D">
+
+ <property name="name"
+ type="string"/>
+
+ </subclass>
+
+ </class>
+
+ <class name="Dog">
+ <!-- ������Dog�p�̃}�b�s���O�����܂� -->
+ </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
+
+ </para>
+
+
+
+ <sect2 id="mapping-declaration-doctype" revision="3">
+ <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
+ </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
+
+ </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
+
+ </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
+
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ ���L�́A���[�U���O��Ԃ�g������ł��F
+
+ </para>
+ <programlisting><![CDATA[<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" [
+ <!ENTITY types SYSTEM "classpath://your/domain/types.xml">
+]>
+
+<hibernate-mapping package="your.domain">
+ <class name="MyEntity">
+ <id name="id" type="my-custom-id-type">
+ ...
+ </id>
+ <class>
+ &types;
+</hibernate-mapping>]]></programlisting>
+ <para>
+ ������ <literal>types.xml</literal> ��
<literal>your.domain</literal> �p�b�P�[�W��̃��\�[�X�ł���A
+ �J�X�^�� <xref
linkend="mapping-types-custom">typedef</xref> ��܂ނ܂��B
+ </para>
+ </sect3>
+
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-mapping" revision="3">
+ <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
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="hm1" coords="2 55"/>
+ <area id="hm2" coords="3 55"/>
+ <area id="hm3" coords="4 55"/>
+ <area id="hm4" coords="5 55"/>
+ <area id="hm5" coords="6 55"/>
+ <area id="hm6" coords="7 55"/>
+ <area id="hm7" coords="8 55"/>
+ </areaspec>
+ <programlisting><![CDATA[<hibernate-mapping
+ schema="schemaName"
+ catalog="catalogName"
+ default-cascade="cascade_style"
+ default-access="field|property|ClassName"
+ default-lazy="true|false"
+ auto-import="true|false"
+ package="package.name"
+ />]]></programlisting>
+ <calloutlist>
+ <callout arearefs="hm1">
+ <para>
+
<literal>schema</literal>�i�I�v�V�����j�F�f�[�^�x�[�X�X�L�[�}�̖��O�B
+ </para>
+ </callout>
+ <callout arearefs="hm2">
+ <para>
+ <literal>catalog</literal>
�i�I�v�V�����j�F�f�[�^�x�[�X�J�^���O�̖��O�B
+ </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
+ </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
+
+ </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
+ </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
+ </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
+ </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
+ </para>
+
+ <para>
+ <literal>hibernate-mapping</literal>
�v�f�́A�ŏ��̗�Ŏ������悤�ɂ������̉i�� <literal><class></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
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-class" revision="3">
+ <title>class</title>
+
+ <para>
+ <literal>class</literal> �v�f��g���āA�i���N���X��錾�ł��܂��B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="class1" coords="2 55"/>
+ <area id="class2" coords="3 55" />
+ <area id="class3" coords="4 55"/>
+ <area id="class4" coords="5 55" />
+ <area id="class5" coords="6 55"/>
+ <area id="class6" coords="7 55" />
+ <area id="class7" coords="8 55"/>
+ <area id="class8" coords="9 55" />
+ <area id="class9" coords="10 55" />
+ <area id="class10" coords="11 55"/>
+ <area id="class11" coords="12 55"/>
+ <area id="class12" coords="13 55"/>
+ <area id="class13" coords="14 55"/>
+ <area id="class14" coords="15 55"/>
+ <area id="class15" coords="16 55"/>
+ <area id="class16" coords="17 55"/>
+ <area id="class17" coords="18 55"/>
+ <area id="class18" coords="19 55"/>
+ <area id="class19" coords="20 55"/>
+ <area id="class20" coords="21 55"/>
+ <area id="class21" coords="22 55"/>
+
+ </areaspec>
+ <programlisting><![CDATA[<class
+ name="ClassName"
+ table="tableName"
+ discriminator-value="discriminator_value"
+ mutable="true|false"
+ schema="owner"
+ catalog="catalog"
+ proxy="ProxyInterface"
+ dynamic-update="true|false"
+ dynamic-insert="true|false"
+ select-before-update="true|false"
+ polymorphism="implicit|explicit"
+ where="arbitrary sql where condition"
+ persister="PersisterClass"
+ batch-size="N"
+ optimistic-lock="none|version|dirty|all"
+ lazy="true|false"
+ entity-name="EntityName"
+ check="arbitrary sql check condition"
+ rowid="rowid"
+ subselect="SQL expression"
+ abstract="true|false"
+ entity-name="EntityName"
+ node="element-name"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="class1">
+ <para>
+ <literal>name</literal>
(�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
+
+ </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
+ </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
+ </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
+ </para>
+ </callout>
+ <callout arearefs="class5">
+ <para>
+ <literal>schema</literal> �i�I�v�V�����j�F
+ ���[�g��
<literal><hibernate-mapping></literal>
�v�f�Ŏw�肳�ꂽ�X�L�[�}����I�[�o�[���C�h���܂��B
+ </para>
+ </callout>
+ <callout arearefs="class6">
+ <para>
+ <literal>catalog</literal>
�i�I�v�V�����j�F���[�g�� <literal><hibernate-mapping></literal>
+ �v�f�Ŏw�肳�ꂽ�J�^���O����I�[�o�[���C�h���܂��B
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </para>
+ </callout>
+ <callout arearefs="class13">
+ <para>
+ <literal>persister</literal>
�i�I�v�V�����j�F�J�X�^�� <literal>ClassPersister</literal> ��w�肵�܂��B
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </para>
+ </callout>
+ <callout arearefs="class21">
+ <para>
+ <literal>abstract</literal> �i�I�v�V�����j�F
+ <literal><union-subclass></literal>
�K�w��̒��ۃX�[�p�[�N���X�Ƀ}�[�N���邽�߂Ɏg���܂��B
+ </para>
+ </callout>
+
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ �i���N���X�̖��O�ɃC���^�[�t�F�C�X��w�肵�Ă�܂�������肠��܂���B
+ ���̂Ƃ��� <literal><subclass></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
+ </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
+ </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
+ </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><class></literal>
�v�f�̒��� <literal><subclass></literal> ��
+ <literal><joined-subclass></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
+ </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
+
+ </para>
+
+ <para>
+ <literal>dynamic-update</literal> ��
<literal>dynamic-insert</literal> �̐ݒ�̓T�u�N���X�Ɍp������܂���B
+ ���̂��� <literal><subclass></literal> ��
<literal><joined-subclass></literal> �v�f��w�肷�邱�Ƃ�o���܂��B
+
�����̐ݒ�̓p�t�H�[�}���X����コ���鎖�����܂����A���Ƃ����Ƃ����܂��̂ŁA�T�d�Ɏg�p���Ă��������B
+ </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
+ </para>
+
+ <para>
+ <literal>dynamic-update</literal>
��L���ɂ���A�y�σ��b�N�헪��I�Ԃ��ƂɂȂ�܂��B
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>version</literal>
�o�[�W����/�^�C���X�^���v�J������`�F�b�N���܂�
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>all</literal> ���ׂẴJ������`�F�b�N���܂��B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>dirty</literal>
�ύX�����J������`�F�b�N���A�����X�V�ł���悤�ɂ��܂��B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>none</literal> �y�σ��b�N��g�p���܂���
+ </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
+ </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
+ </para>
+
+ <programlisting><![CDATA[<class name="Summary">
+ <subselect>
+ select item.name, max(bid.amount), count(*)
+ from item
+ join bid on bid.item_id = item.id
+ group by item.name
+ </subselect>
+ <synchronize table="item"/>
+ <synchronize table="bid"/>
+ <id name="name"/>
+ ...
+</class>]]></programlisting>
+
+ <para>
+ �e�[�u�����̃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><subselect></literal>
�͑����ƃl�X�g�����}�b�s���O�����̂ǂ���ł���p�ł��܂��B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-id" revision="4">
+ <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><id></literal>
�v�f�́A���̃v���p�e�B�����L�[�J�����ւ̃}�b�s���O���`���܂��B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="id1" coords="2 70"/>
+ <area id="id2" coords="3 70" />
+ <area id="id3" coords="4 70"/>
+ <area id="id4" coords="5 70" />
+ <area id="id5" coords="6 70" />
+ </areaspec>
+ <programlisting><![CDATA[<id
+ name="propertyName"
+ type="typename"
+ column="column_name"
+ unsaved-value="null|any|none|undefined|id_value"
+ access="field|property|ClassName">
+ node="element-name|@attribute-name|element/(a)attribute|."
+
+ <generator class="generatorClass"/>
+</id>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="id1">
+ <para>
+
<literal>name</literal>�i�I�v�V�����j�F���ʎq�v���p�e�B�̖��O�B
+ </para>
+ </callout>
+ <callout arearefs="id2">
+ <para>
+
<literal>type</literal>�i�I�v�V�����j�FHibernate�̌^�������O�B
+ </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
+ </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
+ </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
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ <literal>name</literal>
�������Ȃ���A�N���X�ɂ͎��ʎq�v���p�e�B���Ȃ���̂Ƃ݂Ȃ���܂��B
+ </para>
+
+ <para>
+ <literal>unsaved-value</literal>
������Hibernate3�ł͂قƂ�ǂ̏ꍇ�A�K�v�ł͂���܂���B
+ </para>
+
+ <para>
+ �����L�[�����K�V�[�f�[�^�ɃA�N�Z�X�ł���悤�ɁA
+ <literal><composite-id></literal>
�Ƃ�����ւ̃}�b�s���O��`������܂��B
+ ���������̗p�r�ւ̎g�p�͑S���������߂ł��܂���B
+ </para>
+
+ <sect3 id="mapping-declaration-id-generator"
revision="2">
+ <title>�W�F�l���[�^</title>
+
+ <para>
+ �I�v�V������ <literal><generator></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><param></literal>
+ �v�f��g���ēn�����Ƃ��ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[<id name="id"
type="long" column="cat_id">
+ <generator class="org.hibernate.id.TableHiLoGenerator">
+ <param name="table">uid_table</param>
+ <param name="column">next_hi_value_column</param>
+ </generator>
+</id>]]></programlisting>
+
+ <para>
+ ���ׂẴ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
+
+ <variablelist>
+ <varlistentry>
+
<term><literal>increment</literal></term>
+ <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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>hilo</literal></term>
+ <listitem>
+ <para
id="mapping-declaration-id-hilodescription" revision="1">
+ <literal>long</literal> ,
<literal>short</literal> ,
+ <literal>int</literal>
�^�̎��ʎq������I�ɐ�������hi/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
+
+
hi/lo�A���S���Y���͓���̃f�[�^�x�[�X�ɑ��Ă̂݃��j�[�N�Ȏ��ʎq�����܂��B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>seqhilo</literal></term>
+ <listitem>
+ <para>
+ <literal>long</literal> ,
<literal>short</literal> ,
+ <literal>int</literal>
�^�̎��ʎq������I�ɐ�������hi/lo�A���S���Y����g���܂��B
+ �w�肳�ꂽ�f�[�^�x�[�X�V�[�P���X��^���܂��B
+
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>guid</literal></term>
+ <listitem>
+ <para>
+ MS
SQL�T�[�o��MySQL�Ńf�[�^�x�[�X����������GUID�������g�p���܂��B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>native</literal></term>
+ <listitem>
+ <para>
+ �g�p����f�[�^�x�[�X�̐��\�ɂ��
<literal>identity</literal> , <literal>sequence</literal> ,
+ <literal>hilo</literal> �̂����ꂩ���I��܂��B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>assigned</literal></term>
+ <listitem>
+ <para>
+ <literal>save()</literal> ���Ă��O�ɁA
+ �A�v���P�[�V�������I�u�W�F�N�g�Ɏ��ʎq�����ł���悤�ɂ��܂��B
+ <literal><generator></literal>
���w�肳��Ă��Ȃ���A���ꂪ�f�t�H���g�̐헪�ɂȂ�܂��B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <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>
+ <varlistentry>
+ <term><literal>foreign</literal></term>
+ <listitem>
+ <para>
+ ���̊֘A�I�u�W�F�N�g�̎��ʎq��g���܂��B
+
���ʂ́A<literal><one-to-one></literal>
��L�[�֘A�Ƒg�ݍ��킹�Ďg���܂��B
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </para>
+ </sect3>
+
+ <sect3 id="mapping-declaration-id-hilo"
revision="1">
+ <title>Hi/lo �A���S���Y��</title>
+ <para>
+ <literal>hilo</literal> ��
<literal>seqhilo</literal> �W�F�l���[�^�́A
+ ���ʎq�����̑�\�I�ȃA�v���[�`�ł���hi/lo�A���S���Y����2�̑�֎�������܂��B
+
+
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
+ </para>
+
+ <programlisting><![CDATA[<id name="id"
type="long" column="cat_id">
+ <generator class="hilo">
+ <param name="table">hi_value</param>
+ <param name="column">next_value</param>
+ <param name="max_lo">100</param>
+ </generator>
+</id>]]></programlisting>
+
+ <programlisting><![CDATA[<id name="id"
type="long" column="cat_id">
+ <generator class="seqhilo">
+ <param name="sequence">hi_value</param>
+ <param name="max_lo">100</param>
+ </generator>
+</id>]]></programlisting>
+
+ <para>
+ �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
+ </para>
+ </sect3>
+
+ <sect3 id="mapping-declaration-id-uuid">
+ <title>UUID �A���S���Y��</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
+ </para>
+ </sect3>
+
+ <sect3 id="mapping-declaration-id-sequences">
+ <title>���ʎq�J�����ƃV�[�P���X</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
+ </para>
+
+ <programlisting><![CDATA[<id name="id"
type="long" column="person_id">
+ <generator class="sequence">
+ <param name="sequence">person_id_sequence</param>
+ </generator>
+</id>]]></programlisting>
+
+ <programlisting><![CDATA[<id name="id"
type="long" column="person_id" unsaved-value="0">
+ <generator class="identity"/>
+</id>]]></programlisting>
+
+ <para>
+ �N���X�v���b�g�t�H�[���̊J���ł́A<literal>native</literal>
�헪��
+ <literal>identity</literal> ,
<literal>sequence</literal> ,
+ <literal>hilo</literal> �헪�̒�����1��I���܂����A
+ ����͎g�p���Ă���f�[�^�x�[�X�̔\�͂Ɉˑ����܂��B
+ </para>
+ </sect3>
+
+ <sect3 id="mapping-declaration-id-assigned">
+ <title>���ʎq�̊��蓖��</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><generator></literal>
�v�f��w�肵�Ȃ��ꍇ�̃f�t�H���g�̓���ɂȂ�܂��B
+ </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
+ </para>
+ </sect3>
+
+ <sect3 id="mapping-declaration-id-select">
+ <title>�g���K�ɂ�芄�蓖�Ă�ꂽ��L�[</title>
+ <para>
+
���K�V�[�X�L�[�}�̂��߂ɂ̂ݎw�肵�܂�(Hibernate�̓g���K��g����DDL�����܂���)�B
+ </para>
+
+ <programlisting><![CDATA[<id name="id"
type="long" column="person_id">
+ <generator class="select">
+ <param name="key">socialSecurityNumber</param>
+ </generator>
+</id>]]></programlisting>
+
+ <para>
+ ��̗�̒��Ł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
+ </para>
+
+ </sect3>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-compositeid"
revision="3">
+ <title>composite-id</title>
+
+ <programlisting><![CDATA[<composite-id
+ name="propertyName"
+ class="ClassName"
+ mapped="true|false"
+ access="field|property|ClassName">
+ node="element-name|."
+
+ <key-property name="propertyName" type="typename"
column="column_name"/>
+ <key-many-to-one name="propertyName class="ClassName"
column="column_name"/>
+ ......
+</composite-id>]]></programlisting>
+
+ <para>
+ �����L�[�̂���e�[�u���ɑ��A
+ ���ʎq�v���p�e�B�Ƃ��ăN���X�̕����̃v���p�e�B��}�b�s���O���邱�Ƃ��ł��܂��B
+ <literal><composite-id></literal>
�v�f�́A�q�v�f�Ƃ���
+ <literal><key-property></literal>
�v���p�e�B�}�b�s���O��
+ <literal><key-many-to-one></literal>
�}�b�s���O�����܂��B
+ </para>
+
+ <programlisting><![CDATA[<composite-id>
+ <key-property name="medicareNumber"/>
+ <key-property name="dependent"/>
+</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
+ </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
+
+
+ </para>
+
+ <para>
+ 2�ڂ̕��@�� <emphasis> �}�b�v���ꂽ</emphasis>
�������ʎq�ƌĂ���̂ŁA
+
<literal><composite-id></literal>�G�������g��Ŏw�肵�����ʃv���p�e�B��
+ �i���N���X�ƕ����������ʎq�N���X�̗����ɏd�����đ��݂��܂��B
+ </para>
+
+ <programlisting><![CDATA[<composite-id
class="MedicareId" mapped="true">
+ <key-property name="medicareNumber"/>
+ <key-property name="dependent"/>
+</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
+ </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
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>class</literal>
(�I�v�V����,�������}�b�s���O�����������ʎq�ɂ͕K�{):
+ �������ʎq�Ƃ��Ďg�p����N���X�B
+
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ 3�ڂ̂���ɕ֗��ȕ��@�́A�������ʎq��<xref
linkend="components-compositeid"/>���
+ �R���|�[�l���g�N���X�Ƃ��Ď������邱�Ƃł��B
+ ���ŋL�q���Ă��鑮���́A���̑�֕��@�ɂ̂ݓK�p����܂��B
+ </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�Ƃ��Ă�������).
+ </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
+ </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
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-discriminator"
revision="3">
+ <title>discriminator</title>
+
+ <para>
+ <literal><discriminator></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>integer</literal>,
+ <literal>byte</literal> ,
<literal>short</literal> , <literal>boolean</literal> ,
+ <literal>yes_no</literal> ,
<literal>true_false</literal>.
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="discriminator1" coords="2 60"/>
+ <area id="discriminator2" coords="3 60" />
+ <area id="discriminator3" coords="4 60" />
+ <area id="discriminator4" coords="5 60" />
+ <area id="discriminator5" coords="6 60" />
+ </areaspec>
+ <programlisting><![CDATA[<discriminator
+ column="discriminator_column"
+ type="discriminator_type"
+ force="true|false"
+ insert="true|false"
+ formula="arbitrary sql expression"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="discriminator1">
+ <para>
+ <literal>column</literal>�i�I�v�V���� -
�f�t�H���g�� <literal>class</literal> �j�F
+ ���ʃJ�����̖��O�B
+ </para>
+ </callout>
+ <callout arearefs="discriminator2">
+ <para>
+ <literal>type</literal>
+ �i�I�v�V���� - �f�t�H���g��
<literal>string</literal> �j�FHibernate�̌^�������O�B
+ </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
+ </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�点��)
+
+ </para>
+ </callout>
+ <callout arearefs="discriminator5">
+ <para>
+ <literal>formula</literal>
(�I�v�V����)�^���]�������Ƃ��Ɏ��s�����C�ӂ�SQL���B
+ �R���e���c�x�[�X�̎��ʂ�\�ɂ��܂��B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ ���ʃJ�����̎��ۂ̒l�́A <literal><class></literal>
��
+ <literal><subclass></literal> �v�f��
+ <literal>discriminator-value</literal> �����Ŏw�肳��܂��B
+ </para>
+
+ <para>
+ �i���N���X�փ}�b�s���O����Ȃ���]���ȁv���ʒl���s��
+ �e�[�u���ɂ���A�i���̂Ƃ��Ɍ���j<literal>force</literal>
�����͗L���ł��B
+ �������A���ʂ͂����������Ƃ͂���܂���B
+ </para>
+
+ <para>
+ <literal>formula</literal>
������g���ƁA�s�̌^��]�����邽�߂ɔC�ӂ�SQL����錾�ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[<discriminator
+ formula="case when CLASS_TYPE in ('a', 'b', 'c') then 0
else 1 end"
+ type="integer"/>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-version" revision="4">
+ <title>version�i�I�v�V�����j</title>
+
+ <para>
+ <literal><version></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
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="version1" coords="2 70"/>
+ <area id="version2" coords="3 70"/>
+ <area id="version3" coords="4 70"/>
+ <area id="version4" coords="5 70"/>
+ <area id="version5" coords="6 70"/>
+ <area id="version6" coords="7 70"/>
+ <area id="version7" coords="8 70"/>
+ </areaspec>
+ <programlisting><![CDATA[<version
+ column="version_column"
+ name="propertyName"
+ type="typename"
+ access="field|property|ClassName"
+ unsaved-value="null|negative|undefined"
+ generated="never|always"
+ insert="true|false"
+ node="element-name|@attribute-name|element/(a)attribute|."
+/>]]></programlisting>
+ <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
+ </para>
+ </callout>
+ <callout arearefs="version2">
+ <para>
+ <literal>name</literal>
�F�i���N���X�̃v���p�e�B�̖��O�B
+ </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
+ </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
+ </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
+ </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
+ </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
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ �o�[�W�����ԍ��� Hibernate�� <literal>long</literal> ,
<literal>integer</literal> ,
+ <literal>short</literal> ,
<literal>timestamp</literal> ,
+ <literal>calendar</literal> �^�̂����ꂩ�ł��B
+ </para>
+
+ <para>
+
�o�[�W������^�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
+
+ <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>
+ </para>
+ </sect2>
+
+ <sect2 id="mapping-declaration-timestamp"
revision="4">
+ <title>timestamp�i�I�v�V�����j</title>
+
+ <para>
+ �I�v�V������ <literal><timestamp></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
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="timestamp1" coords="2 70"/>
+ <area id="timestamp2" coords="3 70" />
+ <area id="timestamp3" coords="4 70" />
+ <area id="timestamp4" coords="5 70" />
+ <area id="timestamp5" coords="6 70" />
+ <area id="timestamp6" coords="7 70" />
+ </areaspec>
+ <programlisting><![CDATA[<timestamp
+ column="timestamp_column"
+ name="propertyName"
+ access="field|property|ClassName"
+ unsaved-value="null|undefined"
+ source="vm|db"
+ generated="never|always"
+ node="element-name|@attribute-name|element/(a)attribute|."
+/>]]></programlisting>
+ <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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ <literal><timestamp></literal> ��
+ <literal><version
type="timestamp"></literal> �Ɠ����ł��邱�Ƃɒ��ӂ��Ă��������B
+ <literal><timestamp
source="db"></literal> ��
+ <literal><version
type="dbtimestamp"></literal> �Ɠ����ł��邱�Ƃɒ��ӂ��Ă��������B
+ </para>
+ </sect2>
+
+ <sect2 id="mapping-declaration-property" revision="4">
+ <title>property</title>
+
+ <para>
+ <literal><property></literal>
�v�f�́A�N���X�̉i���I��JavaBean�X�^�C���̃v���p�e�B���`���܂��B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="property1" coords="2 70"/>
+ <area id="property2" coords="3 70"/>
+ <area id="property3" coords="4 70"/>
+ <areaset id="property4-5" coords="">
+ <area id="property4" coords='5 70'/>
+ <area id="property5" coords='6 70'/>
+ </areaset>
+ <area id="property6" coords="7 70"/>
+ <area id="property7" coords="8 70"/>
+ <area id="property8" coords="9 70"/>
+ <area id="property9" coords="10 70"/>
+ <area id="property10" coords="11 70"/>
+ <area id="property11" coords="12 70"/>
+ <area id="property12" coords="13 70"/>
+ </areaspec>
+ <programlisting><![CDATA[<property
+ name="propertyName"
+ column="column_name"
+ type="typename"
+ update="true|false"
+ insert="true|false"
+ formula="arbitrary SQL expression"
+ access="field|property|ClassName"
+ lazy="true|false"
+ unique="true|false"
+ not-null="true|false"
+ optimistic-lock="true|false"
+ generated="never|insert|always"
+ node="element-name|@attribute-name|element/(a)attribute|."
+ index="index_name"
+ unique_key="unique_key_id"
+ length="L"
+ precision="P"
+ scale="S"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="property1">
+ <para>
+
<literal>name</literal>�F�������Ŏn�܂�v���p�e�B���B
+ </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><column></literal> �v�f�ł�w��ł��܂��B
+ </para>
+ </callout>
+ <callout arearefs="property3">
+ <para>
+
<literal>type</literal>�i�I�v�V�����j�FHibernate�̌^�������O�B
+ </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
+ </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
+ </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
+ </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
+ </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
+ </para>
+ </callout>
+ <callout arearefs="property10">
+ <para>
+ <literal>not-null</literal>
(�I�v�V����):�J������null�l������DDL�̐�����\�ɂ��܂��B
+ </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
+ </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
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ <emphasis>typename</emphasis> �ɂ͈ȉ��̒l���\�ł��F
+ </para>
+
+ <orderedlist spacing="compact">
+ <listitem>
+ <para>
+ Hibernate�̊�{�^�̖��O�i�� <literal>integer, string,
character,
+ date, timestamp, float, binary, serializable, object,
blob</literal> �j�B
+ </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
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ �V���A���C�Y�\��Java�N���X�̖��O�B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ �J�X�^���^�̃N���X���i��
<literal>com.illflow.type.MyCustomType</literal> �j�B
+ </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
+ </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
+ </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
+ </para>
+
+ <programlisting><![CDATA[
+<property name="totalPrice"
+ formula="( SELECT SUM (li.quantity*p.price) FROM LineItem li, Product p
+ WHERE li.productId = p.productId
+ AND li.customerId = customerId
+ AND li.orderNumber = orderNumber
)"/>]]></programlisting>
+
+ <para>
+ ����̃J����(��ł� <literal>customerId</literal>
������ɂ�����܂�)�̃G�C���A�X��錾���邱�ƂȂ��A
+ �G���e�B�e�B���g�̃e�[�u����Q�Ƃł��邱�Ƃɒ��ӂ��Ă��������B
+ ���������g�p�������Ȃ���A
+ �l�X�g���� <literal><formula></literal>
�}�b�s���O�v�f��g���邱�Ƃɂ���ӂ��Ă��������B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-manytoone"
revision="5">
+ <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
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="manytoone1" coords="2 70"/>
+ <area id="manytoone2" coords="3 70"/>
+ <area id="manytoone3" coords="4 70"/>
+ <area id="manytoone4" coords="5 70"/>
+ <area id="manytoone5" coords="6 70"/>
+ <areaset id="manytoone6-7" coords="">
+ <area id="manytoone6" coords='7 70'/>
+ <area id="manytoone7" coords='8 70'/>
+ </areaset>
+ <area id="manytoone8" coords="9 70"/>
+ <area id="manytoone9" coords="10 70"/>
+ <area id="manytoone10" coords="11 70"/>
+ <area id="manytoone11" coords="12 70"/>
+ <area id="manytoone12" coords="13 70"/>
+ <area id="manytoone13" coords="14 70"/>
+ <area id="manytoone14" coords="15 70"/>
+ <area id="manytoone15" coords="16 70"/>
+ <area id="manytoone16" coords="17 70"/>
+ </areaspec>
+ <programlisting><![CDATA[<many-to-one
+ name="propertyName"
+ column="column_name"
+ class="ClassName"
+ cascade="cascade_style"
+ fetch="join|select"
+ update="true|false"
+ insert="true|false"
+ property-ref="propertyNameFromAssociatedClass"
+ access="field|property|ClassName"
+ unique="true|false"
+ not-null="true|false"
+ optimistic-lock="true|false"
+ lazy="proxy|no-proxy|false"
+ not-found="ignore|exception"
+ entity-name="EntityName"
+ formula="arbitrary SQL expression"
+ node="element-name|@attribute-name|element/(a)attribute|."
+ embed-xml="true|false"
+ index="index_name"
+ unique_key="unique_key_id"
+ foreign-key="foreign_key_name"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="manytoone1">
+ <para>
+ <literal>name</literal>�F�v���p�e�B���B
+ </para>
+ </callout>
+ <callout arearefs="manytoone2">
+ <para>
+ <literal>column</literal>
(�I�v�V����):�O���L�[�J�����̖��O�B
+ �l�X�g����
<literal><column></literal> �v�f�ł�w��ł��܂��B
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </para>
+ </callout>
+ <callout arearefs="manytoone11">
+ <para>
+ <literal>not-null</literal>
(�I�v�V����):�O���L�[�J�����ɑ��āA
+ null�l������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
+ </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
+ </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
+ </para>
+ </callout>
+ <callout arearefs="manytoone15">
+ <para>
+ <literal>entity-name</literal>
(�I�v�V����):�֘A�����N���X�̃G���e�B�e�B���B
+ </para>
+ </callout>
+ </calloutlist>
+ <callout arearefs="manytoone16">
+ <para>
+ <literal>formula</literal> (�I�v�V����):
+ <emphasis> �v�Z���ꂽ</emphasis>
�O���L�[�ɑ��Ēl���`����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
+ </para>
+
+ <para>
+ �T�^�I�� <literal>many-to-one</literal>
�錾�͎��̂悤�ɃV���v���ł��B�F
+ </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
+ </para>
+
+ <programlisting><![CDATA[<property name="serialNumber"
unique="true" type="string"
column="SERIAL_NUMBER"/>]]></programlisting>
+
+ <para>
+ �ȉ��̂悤�� <literal>OrderItem</literal>
�ɑ��ă}�b�s���O��g���܂��F
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="product"
property-ref="serialNumber"
column="PRODUCT_SERIAL_NUMBER"/>]]></programlisting>
+
+ <para>
+ �������A����͌����Đ����ł��܂���B
+ </para>
+
+ <para>
+ �Q�Ƃ������j�[�N�L�[���A�֘A����G���e�B�e�B�̑����̃v���p�e�B����\�������ꍇ�A
+ �w�肵�� <literal><properties></literal>
�v�f��ŁA�Q�Ƃ���v���p�e�B��}�b�s���O����ׂ��ł��B
+ </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>
+
+
+ </sect2>
+
+
+ <sect2 id="mapping-declaration-onetoone" revision="3">
+ <title>one-to-one</title>
+
+ <para>
+ ���̉i���N���X�ւ̈�Έ�֘A�́A<literal>one-to-one</literal>
�v�f�Œ�`���܂��B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="onetoone1" coords="2 70"/>
+ <area id="onetoone2" coords="3 70"/>
+ <area id="onetoone3" coords="4 70"/>
+ <area id="onetoone4" coords="5 70"/>
+ <area id="onetoone5" coords="6 70"/>
+ <area id="onetoone6" coords="7 70"/>
+ <area id="onetoone7" coords="8 70"/>
+ <area id="onetoone8" coords="9 70"/>
+ <area id="onetoone9" coords="10 70"/>
+ <area id="onetoone10" coords="11 70"/>
+ </areaspec>
+ <programlisting><![CDATA[<one-to-one
+ name="propertyName"
+ class="ClassName"
+ cascade="cascade_style"
+ constrained="true|false"
+ fetch="join|select"
+ property-ref="propertyNameFromAssociatedClass"
+ access="field|property|ClassName"
+ formula="any SQL expression"
+ lazy="proxy|no-proxy|false"
+ entity-name="EntityName"
+ node="element-name|@attribute-name|element/(a)attribute|."
+ embed-xml="true|false"
+ foreign-key="foreign_key_name"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="onetoone1">
+ <para>
+ <literal>name</literal>�F�v���p�e�B���B
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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>
+
+ </para>
+ </callout>
+ <callout arearefs="onetoone10">
+ <para>
+ <literal>entity-name</literal>
(�I�v�V����):�֘A�N���X�̃G���e�B�e�B��
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ ��Έ�֘A�ɂ�2��ނ���܂��F
+ </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
+ </para>
+
+ <para>
+ ��L�[�֘A��s�����߂ɂ́A�ȉ��̃}�b�s���O��
<literal>Employee</literal> ��
+ <literal>Person</literal> �̂��ꂼ��ɒlj����Ă��������B
+ </para>
+
+ <programlisting><![CDATA[<one-to-one name="person"
class="Person"/>]]></programlisting>
+ <programlisting><![CDATA[<one-to-one name="employee"
class="Employee" constrained="true"/>]]></programlisting>
+
+ <para>
+
�����ŁAPERSON��EMPLOYEE�e�[�u���̊W����s�̎�L�[�������ł��邱�Ƃ�m���ɂ��Ȃ�������܂���B
+ �����ł́A<literal>foreign</literal>
�Ƃ��������Hibernate���ʎq�����헪��g���܂��F
+ </para>
+
+ <programlisting><![CDATA[<class name="person"
table="PERSON">
+ <id name="id" column="PERSON_ID">
+ <generator class="foreign">
+ <param name="property">employee</param>
+ </generator>
+ </id>
+ ...
+ <one-to-one name="employee"
+ class="Employee"
+ constrained="true"/>
+</class>]]></programlisting>
+
+ <para>
+ <literal>Employee</literal>
�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
+
+ �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
+ </para>
+
+ <para>
+ ���1�̕��@�Ƃ��āA<literal>Employee</literal> ����
<literal>Person</literal> �ւ�
+ ���j�[�N�����g�����O���L�[�֘A�͈ȉ��̂悤�ɕ\������܂��F
+ </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
+ </para>
+
+ <programlisting><![CDATA[<one-to-one name="employee"
class="Employee"
property-ref="person"/>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-naturalid">
+ <title>natural-id</title>
+
+ <programlisting><![CDATA[<natural-id
mutable="true|false"/>
+ <property ... />
+ <many-to-one ... />
+ ......
+</natural-id>]]></programlisting>
+
+ <para>
+ ��L�[�Ƃ��đ㗝�L�[�̎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><natural-id></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
+ </para>
+
+ <para>
+ �G���e�B�e�B�̎��R�L�[�v���p�e�B�̔�r�ɂ́A
+ <literal>equals()</literal> ��
<literal>hashCode()</literal> �̎������������߂��܂��B
+ </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
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-component"
revision="2">
+ <title>component, dynamic-component</title>
+
+ <para>
+ <literal><component></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
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="component1" coords="2 45"/>
+ <area id="component2" coords="3 45"/>
+ <area id="component3" coords="4 45"/>
+ <area id="component4" coords="5 45"/>
+ <area id="component5" coords="6 45"/>
+ <area id="component6" coords="7 45"/>
+ <area id="component7" coords="8 45"/>
+ <area id="component8" coords="9 45"/>
+ </areaspec>
+ <programlisting><![CDATA[<component
+ name="propertyName"
+ class="className"
+ insert="true|false"
+ update="true|false"
+ access="field|property|ClassName"
+ lazy="true|false"
+ optimistic-lock="true|false"
+ unique="true|false"
+ node="element-name|."
+>
+
+ <property ...../>
+ <many-to-one .... />
+ ........
+</component>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="component1">
+ <para>
+ <literal>name</literal>�F�v���p�e�B���B
+ </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
+ </para>
+ </callout>
+ <callout arearefs="component4">
+ <para>
+ <literal>update</literal> :
�}�b�s���O���ꂽ�J������SQL ��
+ <literal>UPDATE</literal>
�Ɍ����悤�ɂ��邩�ǂ�����w�肵�܂��B
+ </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
+ </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�ɂȂ�܂�)
+ </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
+ </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
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ �q�� <literal><property></literal> �^�O�ŁA
+ �q�̃N���X�̃v���p�e�B��e�[�u���J�����Ƀ}�b�s���O���܂��B
+ </para>
+
+ <para>
+ <literal><component></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><parent></literal> �T�u�v�f�����܂��B
+ </para>
+
+ <para>
+ <literal><dynamic-component></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
+
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-properties"
revision="2">
+ <title>properties</title>
+
+ <para>
+ <literal><properties></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
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="properties1" coords="2 45"/>
+ <area id="properties2" coords="3 45"/>
+ <area id="properties3" coords="4 45"/>
+ <area id="properties4" coords="5 45"/>
+ <area id="properties5" coords="6 45"/>
+ </areaspec>
+ <programlisting><![CDATA[<properties
+ name="logicalName"
+ insert="true|false"
+ update="true|false"
+ optimistic-lock="true|false"
+ unique="true|false"
+>
+
+ <property ...../>
+ <many-to-one .... />
+ ........
+</properties>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="properties1">
+ <para>
+ <literal>name</literal> : �O���[�s���O�̘_�����B
+ ���ۂ̃v���p�e�B���ł� <emphasis>����܂���</emphasis>
�B
+ </para>
+ </callout>
+ <callout arearefs="properties2">
+ <para>
+
<literal>insert</literal>�F�}�b�s���O���ꂽ�J������SQL��
+ <literal>INSERT</literal>
�Ɍ����悤�ɂ��邩�ǂ�����w�肵�܂��B
+ </para>
+ </callout>
+ <callout arearefs="properties3">
+ <para>
+
<literal>update</literal>�F�}�b�s���O���ꂽ�J������SQL��
+ <literal>UPDATE</literal>
�Ɍ����悤�ɂ��邩�ǂ�����w�肵�܂��B
+ </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
+ </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
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ �Ⴆ�A����ȉ��̂悤��
<literal><properties></literal> �}�b�s���O���������ꍇ�F
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="personNumber"/>
+ ...
+ <properties name="name"
+ unique="true" update="false">
+ <property name="firstName"/>
+ <property name="initial"/>
+ <property name="lastName"/>
+ </properties>
+</class>]]></programlisting>
+
+ <para>
+ ��L�[�̑���� <literal>Person</literal>
�e�[�u���̃��j�[�N�L�[�ւ̎Q�Ƃ��A
+ ���K�V�[�f�[�^�̊֘A���������܂���B�F
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="person"
+ class="Person" property-ref="name">
+ <column name="firstName"/>
+ <column name="initial"/>
+ <column name="lastName"/>
+</many-to-one>]]></programlisting>
+
+ <para>
+ �������A���̂悤�ȃ��K�V�[�f�[�^�}�b�s���O�̃R���e�L�X�g�O�ւ̎g�p�͐������܂���B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-subclass" revision="4">
+ <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><subclass></literal> ��`���g���܂��B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="subclass1" coords="2 55"/>
+ <area id="subclass2" coords="3 55"/>
+ <area id="subclass3" coords="4 55"/>
+ <area id="subclass4" coords="5 55"/>
+ </areaspec>
+ <programlisting><![CDATA[<subclass
+ name="ClassName"
+ discriminator-value="discriminator_value"
+ proxy="ProxyInterface"
+ lazy="true|false"
+ dynamic-update="true|false"
+ dynamic-insert="true|false"
+ entity-name="EntityName"
+ node="element-name"
+ extends="SuperclassName">
+
+ <property .... />
+ .....
+</subclass>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="subclass1">
+ <para>
+
<literal>name</literal>�F�T�u�N���X�̊��S�C�����ꂽ�N���X���B
+ </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
+ </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
+ </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
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ �e�T�u�N���X�ł́A�i���v���p�e�B�ƃT�u�N���X���`���܂��B
+ <literal><version></literal> ��
<literal><id></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
+ </para>
+
+<!--
+ <para>
+ It is possible to define <literal>subclass</literal>,
<literal>union-subclass</literal>,
+ and <literal>joined-subclass</literal> mappings in separate
mapping documents, directly beneath
+ <literal>hibernate-mapping</literal>. This allows you to extend a
class hierachy just by adding
+ a new mapping file. You must specify an
<literal>extends</literal> attribute in the subclass mapping,
+ naming a previously mapped superclass. Note: Previously this feature made the
ordering of the mapping
+ documents important. Since Hibernate3, the ordering of mapping files does not
matter when using the
+ extends keyword. The ordering inside a single mapping file still needs to be
defined as superclasses
+ before subclasses.
+
+ <literal>subclass</literal>
�A<literal>union-subclass</literal> �A
+ <literal>joined-subclass</literal> �}�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
+ </para>
+
+
+ <programlisting><![CDATA[
+<hibernate-mapping>
+ <subclass name="DomesticCat" extends="Cat"
discriminator-value="D">
+ <property name="name" type="string"/>
+ </subclass>
+</hibernate-mapping>]]></programlisting>
+-->
+
+ <para>
+ �p���̃}�b�s���O�Ɋւ������ <xref linkend="inheritance"/>
�����������B
+ </para>
+
+ </sect2>
+
+
+ <sect2 id="mapping-declaration-joinedsubclass"
revision="3">
+ <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><joined-subclass></literal>
�v�f��g�p���܂��B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="joinedsubclass1" coords="2 45"/>
+ <area id="joinedsubclass2" coords="3 45"/>
+ <area id="joinedsubclass3" coords="4 45"/>
+ <area id="joinedsubclass4" coords="5 45"/>
+ </areaspec>
+ <programlisting><![CDATA[<joined-subclass
+ name="ClassName"
+ table="tablename"
+ proxy="ProxyInterface"
+ lazy="true|false"
+ dynamic-update="true|false"
+ dynamic-insert="true|false"
+ schema="schema"
+ catalog="catalog"
+ extends="SuperclassName"
+ persister="ClassName"
+ subselect="SQL expression"
+ entity-name="EntityName"
+ node="element-name">
+
+ <key .... >
+
+ <property .... />
+ .....
+</joined-subclass>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="joinedsubclass1">
+ <para>
+
<literal>name</literal>�F�T�u�N���X�̊��S�C�����ꂽ�N���X���B
+ </para>
+ </callout>
+ <callout arearefs="joinedsubclass2">
+ <para>
+ <literal>table</literal>
:�T�u�N���X�e�[�u���̖��O�B
+ </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
+ </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
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ ���̃}�b�s���O�헪�ɂ́A���ʃJ�����͕K�v����܂���B
+ �������e�T�u�N���X�� <literal><key></literal>
�v�f��g���A
+ �I�u�W�F�N�g���ʎq��ێ�����e�[�u���J�������`���Ȃ���Ȃ�܂���B
+ ���̏͂̏��߂̃}�b�s���O�͈ȉ��̂悤�ɏ��������܂��F
+ </para>
+
+ <programlisting><![CDATA[<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="eg">
+
+ <class name="Cat" table="CATS">
+ <id name="id" column="uid"
type="long">
+ <generator class="hilo"/>
+ </id>
+ <property name="birthdate" type="date"/>
+ <property name="color" not-null="true"/>
+ <property name="sex" not-null="true"/>
+ <property name="weight"/>
+ <many-to-one name="mate"/>
+ <set name="kittens">
+ <key column="MOTHER"/>
+ <one-to-many class="Cat"/>
+ </set>
+ <joined-subclass name="DomesticCat"
table="DOMESTIC_CATS">
+ <key column="CAT"/>
+ <property name="name" type="string"/>
+ </joined-subclass>
+ </class>
+
+ <class name="eg.Dog">
+ <!-- ������Dog�̃}�b�s���O�����܂� -->
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ �p���̃}�b�s���O�Ɋւ������ <xref linkend="inheritance"/>
�����������B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-unionsubclass"
revision="2">
+ <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><class></literal>
�錾��g���ă}�b�s���O���邱�Ƃ��ł��܂��B
+ �������|�����[�t�B�b�N�Ȋ֘A(�Ⴆ�� �K�w�̃X�[�p�[�N���X�ւ̊֘A)��g�������Ȃ�A
+ <literal><union-subclass></literal>
�}�b�s���O��g���K�v������܂��B
+
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="unionsubclass1" coords="2 45"/>
+ <area id="unionsubclass2" coords="3 45"/>
+ <area id="unionsubclass3" coords="4 45"/>
+ <area id="unionsubclass4" coords="5 45"/>
+ </areaspec>
+ <programlisting><![CDATA[<union-subclass
+ name="ClassName"
+ table="tablename"
+ proxy="ProxyInterface"
+ lazy="true|false"
+ dynamic-update="true|false"
+ dynamic-insert="true|false"
+ schema="schema"
+ catalog="catalog"
+ extends="SuperclassName"
+ abstract="true|false"
+ persister="ClassName"
+ subselect="SQL expression"
+ entity-name="EntityName"
+ node="element-name">
+
+ <property .... />
+ .....
+</union-subclass>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="unionsubclass1">
+ <para>
+
<literal>name</literal>�F�T�u�N���X�̊��S�C�����ꂽ�N���X���B
+ </para>
+ </callout>
+ <callout arearefs="unionsubclass2">
+ <para>
+ <literal>table</literal>
:�T�u�N���X�e�[�u���̖��O�B
+ </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
+ </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
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ ���̃}�b�s���O�헪�ł͎��ʃJ������L�[�J�����͕K�v����܂���B
+ </para>
+
+ <para>
+ �p���̃}�b�s���O�Ɋւ������ <xref linkend="inheritance"/>
�����������B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-join" revision="3">
+ <title>join</title>
+
+ <para>
+ <literal><join></literal> �v�f��g�����ƂŁA
+ �P�̃N���X�̃v���p�e�B������̃e�[�u���Ƀ}�b�s���O���邱�Ƃ��ł��܂��B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="join1" coords="2 50"/>
+ <area id="join2" coords="3 50"/>
+ <area id="join3" coords="4 50"/>
+ <area id="join4" coords="5 50"/>
+ <area id="join5" coords="6 50"/>
+ <area id="join6" coords="7 50"/>
+ </areaspec>
+ <programlisting><![CDATA[<join
+ table="tablename"
+ schema="owner"
+ catalog="catalog"
+ fetch="join|select"
+ inverse="true|false"
+ optional="true|false">
+
+ <key ... />
+
+ <property ... />
+ ...
+</join>]]></programlisting>
+
+ <calloutlist>
+ <callout arearefs="join1">
+ <para>
+ <literal>table</literal> :���������e�[�u���̖��O
+ </para>
+ </callout>
+ <callout arearefs="join2">
+ <para>
+ <literal>schema</literal> (�I�v�V����):
+ ���[�g��
<literal><hibernate-mapping></literal> �v�f�Ŏw�肵���X�L�[�}����
+ �I�[�o�[���C�h���܂��B
+ </para>
+ </callout>
+ <callout arearefs="join3">
+ <para>
+ <literal>catalog</literal> (�I�v�V����):
+ ���[�g��
<literal><hibernate-mapping></literal> �v�f�Ŏw�肵���J�^���O����
+ �I�[�o�[���C�h���܂��B
+ </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><join></literal>
+ ��������̂ɓ��������g���A�T�u�N���X�Œ�`���ꂽ
<literal><join></literal>
+ ��������̂ɊO��������g���܂��B
+ <literal>select</literal> ��ݒ肵���ꍇ�ɂ́A
+ Hibernate�̓T�u�N���X�Œ�`���ꂽ
<literal><join></literal>
+ �̑I��ɏ����I���g���܂��B���̏ꍇ�A
+
�s���T�u�N���X�̃C���X�^���X���\���邱�Ƃ��킩�����ꍇ�ɂ̂ݔ��s����܂��B
+ ��������̓N���X�₻�̃X�[�p�[�N���X�Œ�`���ꂽ
<literal><join></literal> ����
+ ���邽�߂Ɏg�p���܂��B
+ </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
+ </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
+ </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"
+ table="PERSON">
+
+ <id name="id" column="PERSON_ID">...</id>
+
+ <join table="ADDRESS">
+ <key column="ADDRESS_ID"/>
+ <property name="address"/>
+ <property name="zip"/>
+ <property name="country"/>
+ </join>
+ ...]]></programlisting>
+
+ <para>
+ ���̓����͂������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
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-key">
+ <title>key</title>
+
+ <para>
+ ���܂ʼn��x�� <literal><key></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
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="key1" coords="2 50"/>
+ <area id="key2" coords="3 50"/>
+ <area id="key3" coords="4 50"/>
+ <area id="key4" coords="5 50"/>
+ <area id="key5" coords="6 50"/>
+ <area id="key6" coords="7 50"/>
+ </areaspec>
+ <programlisting><![CDATA[<key
+ column="columnname"
+ on-delete="noaction|cascade"
+ property-ref="propertyName"
+ not-null="true|false"
+ update="true|false"
+ unique="true|false"
+/>]]></programlisting>
+
+ <calloutlist>
+ <callout arearefs="key1">
+ <para>
+ <literal>column</literal>
(�I�v�V����):�O���L�[�J�����̖��O�B
+ �l�X�g����
<literal><column></literal> �J�����ɂ���Ă�w�肳��܂��B
+ </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
+ </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
+ </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
+ </para>
+ </callout>
+ <callout arearefs="key5">
+ <para>
+ <literal>update</literal> (�I�v�V����):
+ �O���L�[�����čX�V���Ă͂Ȃ�Ȃ����Ƃ�w�肵�܂�
+ (���̂��Ƃ͊O���L�[����L�[�̈ꕔ�ł��邱�Ƃ�ÖٓI�Ɏ����܂�)�B
+
+ </para>
+ </callout>
+ <callout arearefs="key6">
+ <para>
+ <literal>unique</literal> (�I�v�V����):
+ �O���L�[�����j�[�N������ׂ��ł��邱�Ƃ�w�肵�܂�
+ (���̂��Ƃ͊O���L�[����L�[�̈ꕔ�ł��邱�Ƃ�ÖٓI�Ɏ����܂�)�B
+ </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
+ </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><key
not-null="true"></literal> ��g���ăL�[�J������錾
+ <emphasis> ���Ȃ��Ă͂Ȃ�܂���</emphasis> �B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-column" revision="4">
+ <title>column �� formula �v�f</title>
+ <para>
+ <literal>column</literal>
������L�q�ł���C�ӂ̃}�b�s���O�v�f�͂܂��A
+ <literal><column></literal>
�T�u�v�f��L�q�ł��܂��B
+ ���l�� <literal><formula></literal> ��
<literal>formula</literal> �����̑�֎�i�ł��B
+ </para>
+
+ <programlisting><![CDATA[<column
+ name="column_name"
+ length="N"
+ precision="N"
+ scale="N"
+ not-null="true|false"
+ unique="true|false"
+ unique-key="multicolumn_unique_key_name"
+ index="index_name"
+ sql-type="sql_type_name"
+ check="SQL expression"
+ default="SQL expression"/>]]></programlisting>
+
+ <programlisting><![CDATA[<formula>SQL
expression</formula>]]></programlisting>
+
+ <para>
+ �����v���p�e�B��֘A�̃}�b�s���O�̒��ŁA
+ <literal>column</literal> ��
<literal>formula</literal> ������g�ݍ��킹�邱�Ƃ��ł��܂��B
+ �Ⴆ�A����Ȍ������Ȃǂł��B
+ </para>
+
+ <programlisting><![CDATA[<many-to-one
name="homeAddress" class="Address"
+ insert="false" update="false">
+ <column name="person_id" not-null="true"
length="10"/>
+ <formula>'MAILING'</formula>
+</many-to-one>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="mapping-declaration-import">
+ <title>import</title>
+
+ <para>
+ �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
+ </para>
+
+ <programlisting><![CDATA[<import
class="java.lang.Object"
rename="Universe"/>]]></programlisting>
+
+ <programlistingco>
+ <areaspec>
+ <area id="import1" coords="2 40"/>
+ <area id="import2" coords="3 40"/>
+ </areaspec>
+ <programlisting><![CDATA[<import
+ class="ClassName"
+ rename="ShortName"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="import1">
+ <para>
+
<literal>class</literal>�FJava�N���X�̊��S�C�����ꂽ�N���X���B
+ </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
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ </sect2>
+
+ <sect2 id="mapping-types-anymapping" revision="2">
+ <title>any</title>
+
+ <para>
+ �v���p�e�B�}�b�s���O�ɂ͂���ɂ��1�̌^������܂��B
+ <literal><any></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
+ </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
+ </para>
+
+ <programlisting><![CDATA[<any name="being"
id-type="long" meta-type="string">
+ <meta-value value="TBL_ANIMAL" class="Animal"/>
+ <meta-value value="TBL_HUMAN" class="Human"/>
+ <meta-value value="TBL_ALIEN" class="Alien"/>
+ <column name="table_name"/>
+ <column name="id"/>
+</any>]]></programlisting>
+
+ <programlistingco>
+ <areaspec>
+ <area id="any1" coords="2 50"/>
+ <area id="any2" coords="3 50"/>
+ <area id="any3" coords="4 50"/>
+ <area id="any4" coords="5 50"/>
+ <area id="any5" coords="6 50"/>
+ <area id="any6" coords="7 50"/>
+ </areaspec>
+ <programlisting><![CDATA[<any
+ name="propertyName"
+ id-type="idtypename"
+ meta-type="metatypename"
+ cascade="cascade_style"
+ access="field|property|ClassName"
+ optimistic-lock="true|false"
+>
+ <meta-value ... />
+ <meta-value ... />
+ .....
+ <column .... />
+ <column .... />
+ .....
+</any>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="any1">
+ <para>
+ <literal>name</literal>�F�v���p�e�B���B
+ </para>
+ </callout>
+ <callout arearefs="any2">
+ <para>
+ <literal>id-type</literal>�F���ʎq�̌^�B
+ </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�ŋ����ꂽ�^
+ </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
+ </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
+ </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
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="mapping-types">
+ <title>Hibernate�̌^</title>
+
+ <sect2 id="mapping-types-entitiesvalues" revision="1">
+ <title>�G���e�B�e�B�ƒl</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
+ </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
+
+ </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
+ </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
+
+ </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><class></literal> ��
<literal><subclass></literal> �Ȃǂ�g�p���܂��B
+ �l�^�ɑ��Ă� <literal><property></literal> ��
+ <literal><component></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
+ </para>
+
+ <para>
+
�R���N�V���������g�ݍ��݂�Hibernate�̌^�͂��ׂāAnull�Z�}���e�B�N�X��T�|�[�g���܂��B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-types-basictypes" revision="3">
+ <title>��{�I�Ȍ^</title>
+
+ <para>
+ �g�ݍ��݂� <emphasis>��{�I�ȃ}�b�s���O�^</emphasis>
�͑�܂��Ɉȉ��̂悤�ɕ������܂��B
+
+ <variablelist>
+ <varlistentry>
+ <term><literal>integer, long, short, float, double,
character, byte,
+ 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
+
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>string</literal></term>
+ <listitem>
+ <para>
+ <literal>java.lang.String</literal> ����
<literal>VARCHAR</literal>
+ �i�܂���Oracle�� <literal>VARCHAR2</literal>
�j�ւ̌^�}�b�s���O�B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>calendar,
calendar_date</literal></term>
+ <listitem>
+ <para>
+ <literal>java.util.Calendar</literal>
����SQL�^ �́u <literal>TIMESTAMP</literal> ,
+ <literal>DATE</literal>
(�܂��͂����Ɠ����Ȃ�́j�ւ̌^�}�b�s���O�B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>big_decimal,
big_integer</literal></term>
+ <listitem>
+ <para>
+ <literal>java.math.BigDecimal</literal> ��
<literal>java.math.BigInteger</literal>
+ ����
<literal>NUMERIC</literal>�i�܂���Oracle��
<literal>NUMBER</literal> �j�ւ̌^�}�b�s���O�B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>locale, timezone,
currency</literal></term>
+ <listitem>
+ <para>
+ <literal>java.util.Locale</literal> ,
<literal>java.util.TimeZone</literal> ,
+ <literal>java.util.Currency</literal> ����
<literal>VARCHAR</literal>
+ �i�܂���Oracle�� <literal>VARCHAR2</literal>
�j�ւ̌^�}�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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>class</literal></term>
+ <listitem>
+ <para>
+ <literal>java.lang.Class</literal> ����
<literal>VARCHAR</literal>
+ �i�܂���Oracle�� <literal>VARCHAR2</literal>
�j�ւ̌^�}�b�s���O�B
+ <literal>Class</literal>
�͂��̊��S�C�����ꂽ���O�Ƀ}�b�s���O����܂��B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>binary</literal></term>
+ <listitem>
+ <para>
+ �o�C�g�z��́A�K��SQL�̃o�C�i���^�Ƀ}�b�s���O����܂��B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>text</literal></term>
+ <listitem>
+ <para>
+ ����Java������́ASQL�� <literal>CLOB</literal>
�܂���
+ <literal>TEXT</literal>
�^�Ƀ}�b�s���O����܂��B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+
<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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <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
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <literal>imm_date, imm_time, imm_timestamp,
imm_calendar, imm_calendar_date,
+ imm_serializable, imm_binary</literal>
+ </term>
+ <listitem>
+ <para>
+ �قƂ�ǂ̏ꍇ�ɉςł���Java�̌^�ɑ���^�}�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
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </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
+ </para>
+
+ <para>
+ ��{�I�Ȓl�^�ɂ́A<literal>org.hibernate.Hibernate</literal>
�Œ�`���ꂽ
+ <literal>Type</literal> �萔�����ꂼ�ꂠ��܂��B
+ �Ⴆ�A<literal>Hibernate.STRING</literal> ��
<literal>string</literal> �^��\�����Ă��܂��B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-types-custom" revision="2">
+ <title>�J�X�^���^</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>getName()</literal> /
<literal>setName()</literal>
+ Java�v���p�e�B�� <literal>FIRST_NAME</literal> ,
<literal>INITIAL</literal>, <literal>SURNAME</literal>
+ �J�����ɉi�����ł��܂��B
+ </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
+ </para>
+
+ <programlisting><![CDATA[<property name="twoStrings"
type="org.hibernate.test.DoubleStringType">
+ <column name="first_string"/>
+ <column name="second_string"/>
+</property>]]></programlisting>
+
+ <para>
+ <literal><column></literal> �^�O�ŁA
+ �v���p�e�B���̃J�����փ}�b�s���O�ł��邱�Ƃɒ��ڂ��Ă��������B
+ </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><type></literal>
�v�f��g�p�ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[<property name="priority">
+ <type name="com.mycompany.usertypes.DefaultValueIntegerType">
+ <param name="default">0</param>
+ </type>
+</property>]]></programlisting>
+
+ <para>
+ <literal>UserType</literal> �́A
+ �����Ƃ��ēn���ꂽ <literal>Properties</literal>
�I�u�W�F�N�g����A
+ <literal>default</literal>
�Ŏw�肵���p�����[�^�ɑ���l�������邱�Ƃ��ł��܂��B
+ </para>
+
+ <para>
+ ����� <literal>UserType</literal>
��p�ɂɎg�p����Ȃ�A�Z�����O���`����ƕ֗��ɂȂ�ł��傤�B
+ <literal><typedef></literal>
�v�f��g���Ă��̂悤�Ȃ��Ƃ��s���܂��B
+ Typedefs�̓J�X�^���^�ɖ��O���蓖�Ă܂��B
+ ���̌^���p�����[�^���Ȃ�A
+ �p�����[�^�̃f�t�H���g�l�̃��X�g��܂ނ��Ƃ�ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[<typedef
class="com.mycompany.usertypes.DefaultValueIntegerType"
name="default_zero">
+ <param name="default">0</param>
+</typedef>]]></programlisting>
+
+ <programlisting><![CDATA[<property name="priority"
type="default_zero"/>]]></programlisting>
+
+ <para>
+ �v���p�e�B�̃}�b�s���O�Ō^�p�����[�^��g�����ƂŁA
+ typedef�Œ��ꂽ�p�����[�^���̓s�x�I�[�o�[���C�h���邱�Ƃ��\�ł��B
+
+ </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
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+
+ <sect1 id="mapping-entityname">
+ <title>�P�̃N���X�ɂP�ȏ�̃}�b�s���O</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
+ </para>
+
+ <programlisting><![CDATA[<class name="Contract"
table="Contracts"
+ entity-name="CurrentContract">
+ ...
+ <set name="history" inverse="true"
+ order-by="effectiveEndDate desc">
+ <key column="currentContractId"/>
+ <one-to-many entity-name="HistoricalContract"/>
+ </set>
+</class>
+
+<class name="Contract" table="ContractHistory"
+ entity-name="HistoricalContract">
+ ...
+ <many-to-one name="currentContract"
+ column="currentContractId"
+ entity-name="CurrentContract"/>
+</class>]]></programlisting>
+
+ <para>
+ �֘A��<literal>class</literal> �̑����
<literal>entity-name</literal> ��g���āA
+ �ǂ̂悤�Ɏw�肳���̂��ɒ��ڂ��Ă��������B
+ </para>
+
+ </sect1>
+
+ <sect1 id="mapping-quotedidentifiers">
+ <title>�o�b�N�N�H�[�g�ň͂� SQL ���ʎq</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
+ </para>
+
+ <programlisting><![CDATA[<class name="LineItem"
table="`Line Item`">
+ <id name="id" column="`Item Id`"/><generator
class="assigned"/></id>
+ <property name="itemNumber" column="`Item #`"/>
+ ...
+</class>]]></programlisting>
+
+ </sect1>
+
+
+ <sect1 id="mapping-alternatives">
+ <title>���^�f�[�^�̑�֎�i</title>
+
+ <para>
+ XML�̋L�q�ȊO�ɁA
+ Hibernate�ł�O/R�}�b�s���O�̃��^�f�[�^���`�����֕��@������܂��B
+ </para>
+
+ <sect2 id="mapping-xdoclet">
+ <title>XDoclet �}�[�N�A�b�v�̎g�p</title>
+
+ <para>
+ ������Hibernate���[�U��XDoclet��
<literal>(a)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
+ </para>
+
+ <programlisting><![CDATA[package eg;
+import java.util.Set;
+import java.util.Date;
+
+/**
+ * @hibernate.class
+ * table="CATS"
+ */
+public class Cat {
+ private Long id; // identifier
+ private Date birthdate;
+ private Cat mother;
+ private Set kittens
+ private Color color;
+ private char sex;
+ private float weight;
+
+ /*
+ * @hibernate.id
+ * generator-class="native"
+ * column="CAT_ID"
+ */
+ public Long getId() {
+ return id;
+ }
+ private void setId(Long id) {
+ this.id=id;
+ }
+
+ /**
+ * @hibernate.many-to-one
+ * column="PARENT_ID"
+ */
+ public Cat getMother() {
+ return mother;
+ }
+ void setMother(Cat mother) {
+ this.mother = mother;
+ }
+
+ /**
+ * @hibernate.property
+ * column="BIRTH_DATE"
+ */
+ public Date getBirthdate() {
+ return birthdate;
+ }
+ void setBirthdate(Date date) {
+ birthdate = date;
+ }
+ /**
+ * @hibernate.property
+ * column="WEIGHT"
+ */
+ public float getWeight() {
+ return weight;
+ }
+ void setWeight(float weight) {
+ this.weight = weight;
+ }
+
+ /**
+ * @hibernate.property
+ * column="COLOR"
+ * not-null="true"
+ */
+ public Color getColor() {
+ return color;
+ }
+ void setColor(Color color) {
+ this.color = color;
+ }
+ /**
+ * @hibernate.set
+ * inverse="true"
+ * order-by="BIRTH_DATE"
+ * @hibernate.collection-key
+ * column="PARENT_ID"
+ * @hibernate.collection-one-to-many
+ */
+ public Set getKittens() {
+ return kittens;
+ }
+ void setKittens(Set kittens) {
+ this.kittens = kittens;
+ }
+ // addKitten not needed by Hibernate
+ public void addKitten(Cat kitten) {
+ kittens.add(kitten);
+ }
+
+ /**
+ * @hibernate.property
+ * column="SEX"
+ * not-null="true"
+ * update="false"
+ */
+ public char getSex() {
+ return sex;
+ }
+ void setSex(char sex) {
+ this.sex=sex;
+ }
+}]]></programlisting>
+
+ <para>
+ Hibernate�̃E�F�u�T�C�g�ɂ́AXDoclet��Hibernate�Ɋւ���T���v������������܂��B
+ </para>
+
+ </sect2>
+
+ <sect2 id="mapping-annotations" revision="2">
+ <title>JDK 5.0 �A�m�e�[�V�����̎g�p</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
+
+ </para>
+
+ <para>
+ �ȉ���EJB�̃G���e�B�e�B�r�[���Ƃ��Ē��߂��ꂽPOJO�N���X�̗�ł��B
+ </para>
+
+ <programlisting><![CDATA[@Entity(access = AccessType.FIELD)
+public class Customer implements Serializable {
+
+ @Id;
+ Long id;
+
+ String firstName;
+ String lastName;
+ Date birthday;
+
+ @Transient
+ Integer age;
+
+ @Embedded
+ private Address homeAddress;
+
+ @OneToMany(cascade=CascadeType.ALL)
+ @JoinColumn(name="CUSTOMER_ID")
+ Set<Order> orders;
+
+ // Getter/setter and business methods
+}]]></programlisting>
+
+ <para>
+
JDK5.0�̃A�m�e�[�V����(��JSR-220)�̃T�|�[�g�͐i�s���̍�Ƃł���A���S�ł͂Ȃ����Ƃɒ��ӂ��Ă��������B
+ ����ɏڂ�������Hibernate�̃A�m�e�[�V�����E���W���[����Q�Ƃ��Ă��������B
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+
+ <sect1 id="mapping-generated" revision="1">
+ <title>�����v���p�e�B</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
+
+ ��{�I�ɁA�����v���p�e�B���ƒ�`�����G���e�B�e�B�ɑ���
+ Hibernate��INSERT��UPDATE��SQL�s�����シ���ɁA
+ �������ꂽ�l��ǂݍ��ނ��߂� SELECT SQL �����s����܂��B
+ </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
+ </para>
+ <para>
+ <literal>never</literal> (�f�t�H���g) - �^����ꂽ�v���p�e�B�̒l�́A
+ �f�[�^�x�[�X���琶������Ȃ����Ƃ�Ӗ����܂��B
+ </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
+ </para>
+ <para>
+ <literal>always</literal> -
�}������X�V����v���p�e�B�̒l����������邱�Ƃ����܂��B
+ </para>
+ </sect1>
+
+ <sect1 id="mapping-database-object" revision="0">
+ <title>�⏕�I�ȃf�[�^�x�[�X�E�I�u�W�F�N�g</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
+ </para>
+ <para>
+ 1�ڂ̕��@�́ACREATE��DROP�R�}���h��}�b�s���O�t�@�C���̊O�ɁA�����I�ɋL�ڂ��邱�Ƃł��B
+ </para>
+ <programlisting><![CDATA[<hibernate-mapping>
+ ...
+ <database-object>
+ <create>CREATE TRIGGER my_trigger ...</create>
+ <drop>DROP TRIGGER my_trigger</drop>
+ </database-object>
+</hibernate-mapping>]]></programlisting>
+ <para>
+ 2�ڂ̕��@�́ACREATE��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
+ </para>
+ <programlisting><![CDATA[<hibernate-mapping>
+ ...
+ <database-object>
+ <definition class="MyTriggerDefinition"/>
+ </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>
+ ...
+ <database-object>
+ <definition class="MyTriggerDefinition"/>
+ <dialect-scope name="org.hibernate.dialect.Oracle9Dialect"/>
+ <dialect-scope name="org.hibernate.dialect.OracleDialect"/>
+ </database-object>
+</hibernate-mapping>]]></programlisting>
+ </sect1>
+
+</chapter>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/batch.xml (from rev
14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/batch.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/batch.xml
(rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/batch.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,386 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="batch">
+ <title>�o�b�`����</title>
+
+ <para>
+ Hibernate��g���ăf�[�^�x�[�X��100,000�s��}������ȕ��@�́A���̂悤�Ȃ�̂ł��F
+ </para>
+
+<programlisting><![CDATA[Session session = sessionFactory.openSession();
+Transaction tx = session.beginTransaction();
+for ( int i=0; i<100000; i++ ) {
+ Customer customer = new Customer(.....);
+ session.save(customer);
+}
+tx.commit();
+session.close();]]></programlisting>
+
+ <para>
+ �����50,000�Ԗڂ̍s�̂������ <literal>OutOfMemoryException</literal>
�Ŏ��s����ł��傤�B
+ Hibernate���Z�b�V�������x���L���b�V���ŁA
+ �V�����}�����ꂽ���ׂĂ� <literal>Customer</literal>
+ �C���X�^���X��L���b�V�����邩��ł��B
+ </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
+ </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
+
+ </para>
+
+ <sect1 id="batch-inserts">
+ <title>�o�b�`�}��</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
+ </para>
+
+<programlisting><![CDATA[Session session = sessionFactory.openSession();
+Transaction tx = session.beginTransaction();
+
+for ( int i=0; i<100000; i++ ) {
+ Customer customer = new Customer(.....);
+ session.save(customer);
+ if ( i % 20 == 0 ) { //20, same as the JDBC batch size
+ //flush a batch of inserts and release memory:
+ session.flush();
+ session.clear();
+ }
+}
+
+tx.commit();
+session.close();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="batch-update" >
+ <title>�o�b�`�X�V</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
+ </para>
+
+<programlisting><![CDATA[Session session = sessionFactory.openSession();
+Transaction tx = session.beginTransaction();
+
+ScrollableResults customers = session.getNamedQuery("GetCustomers")
+ .setCacheMode(CacheMode.IGNORE)
+ .scroll(ScrollMode.FORWARD_ONLY);
+int count=0;
+while ( customers.next() ) {
+ Customer customer = (Customer) customers.get(0);
+ customer.updateStuff(...);
+ if ( ++count % 20 == 0 ) {
+ //flush a batch of updates and release memory:
+ session.flush();
+ session.clear();
+ }
+}
+
+tx.commit();
+session.close();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="batch-statelesssession">
+ <title>
+ StatelessSession�C���^�[�t�F�C�X
+ </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
+
+ </para>
+
+<programlisting><![CDATA[StatelessSession session =
sessionFactory.openStatelessSession();
+Transaction tx = session.beginTransaction();
+
+ScrollableResults customers = session.getNamedQuery("GetCustomers")
+ .scroll(ScrollMode.FORWARD_ONLY);
+while ( customers.next() ) {
+ Customer customer = (Customer) customers.get(0);
+ customer.updateStuff(...);
+ session.update(customer);
+}
+
+tx.commit();
+session.close();]]></programlisting>
+
+ <para>
+ ���̃R�[�h��ł́A�N�G�����Ԃ� <literal>Customer</literal>
+ �C���X�^���X�͑����Ɂi�Z�b�V��������j��������邱�Ƃɒ��ӂ��Ă��������B
+ ����́A�ǂ̂悤�ȉi���R���e�L�X�g�Ƃ�����Ċ֘A���܂���B
+
+ </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>save(), saveOrUpdate(), delete()</literal>
+ �Ƃ͔��ɈقȂ�Ӗ������܂��B
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="batch-direct" revision="3">
+ <title>
+ DML�X�^�C���̑���
+ </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
+ <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
+
+ </para>
+
+ <para>
+ <literal>UPDATE</literal> ��
<literal>DELETE</literal> ���̋^���\���́F
+ <literal>( UPDATE | DELETE ) FROM? �G���e�B�e�B�� (WHERE
����)?</literal> �ł��B
+ ���ӂ��ׂ��_������������܂��F
+
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ from�߂ɂ����āAFROM�L�[���[�h�̓I�v�V�����ł��B
+ </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
+
+ </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
+
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ where�߂̓I�v�V�����ł��B
+ </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
+ d
+ </para>
+
+<programlisting><![CDATA[Session session = sessionFactory.openSession();
+Transaction tx = session.beginTransaction();
+
+String hqlUpdate = "update Customer c set c.name = :newName where c.name =
:oldName";
+// or String hqlUpdate = "update Customer set name = :newName where name =
:oldName";
+int updatedEntities = s.createQuery( hqlUpdate )
+ .setString( "newName", newName )
+ .setString( "oldName", oldName )
+ .executeUpdate();
+tx.commit();
+session.close();]]></programlisting>
+
+ <para>
+ HQL�� <literal>UPDATE</literal>
���́A�f�t�H���g�ł́A��p����G���e�B�e�B��
+ <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
+
+ </para>
+<programlisting><![CDATA[Session session = sessionFactory.openSession();
+Transaction tx = session.beginTransaction();
+String hqlVersionedUpdate = "update versioned Customer set name = :newName where
name = :oldName";
+int updatedEntities = s.createQuery( hqlUpdate )
+ .setString( "newName", newName )
+ .setString( "oldName", oldName )
+ .executeUpdate();
+tx.commit();
+session.close();]]></programlisting>
+
+ <para>
+
�J�X�^���o�[�W�����^�i<literal>org.hibernate.usertype.UserVersionType</literal>�j
+ �� <literal>update versioned</literal>
���ƈꏏ�Ɏg���Ȃ����Ƃɒ��ӂ��Ă��������B
+ </para>
+
+ <para>
+ HQL�� <literal>DELETE</literal> ����s����ɂ́A
+ ���� <literal>Query.executeUpdate()</literal>
���\�b�h��g�����������F
+
+ </para>
+
+<programlisting><![CDATA[Session session = sessionFactory.openSession();
+Transaction tx = session.beginTransaction();
+
+String hqlDelete = "delete Customer c where c.name = :oldName";
+// or String hqlDelete = "delete Customer where name = :oldName";
+int deletedEntities = s.createQuery( hqlDelete )
+ .setString( "oldName", oldName )
+ .executeUpdate();
+tx.commit();
+session.close();]]></programlisting>
+
+ <para>
+ <literal>Query.executeUpdate()</literal> ���\�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
+ </para>
+
+ <para>
+ <literal>INSERT</literal> ���̋^���\���́F
+ <literal>INSERT INTO �G���e�B�e�B�� �v���p�e�B���X�g
select��</literal> �ł��B
+ ���ӂ��ׂ��_������������܂��F
+
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ INSERT INTO ... SELECT ... �̌`���������T�|�[�g����Ă��܂��B
+ INSERT INTO ... VALUES ... �̌`���̓T�|�[�g����Ă��܂���B
+ </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
+
+ </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
+ <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
+
+ </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
+
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ HQL�� <literal>INSERT</literal> ���̎��s��ł��F
+
+ </para>
+
+<programlisting><![CDATA[Session session = sessionFactory.openSession();
+Transaction tx = session.beginTransaction();
+
+String hqlInsert = "insert into DelinquentAccount (id, name) select c.id, c.name
from Customer c where ...";
+int createdEntities = s.createQuery( hqlInsert )
+ .executeUpdate();
+tx.commit();
+session.close();]]></programlisting>
+
+ </sect1>
+
+</chapter>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/best_practices.xml
(from rev 14075,
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/best_practices.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/best_practices.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/best_practices.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="best-practices" revision="3">
+ <title>�x�X�g�v���N�e�B�X</title>
+
+ <variablelist spacing="compact">
+ <varlistentry>
+ <term>
+ �N���X�ׂ͍������x�ŏ���
<literal><component></literal>
�Ń}�b�s���O���܂��傤�B</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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ �i���N���X�ɂ͎��ʎq�v���p�e�B���`���܂��傤�B</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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>���R�L�[�����܂��傤�B</term>
+ <listitem>
+ <para>
+ ���ׂẴG���e�B�e�B�ɑ��Ď��R�L�[�����āA
+ <literal><natural-id></literal>
�Ń}�b�s���O���܂��傤�B
+ ���R�L�[��\������v���p�e�B���r���邽�߂ɁA
+ <literal>equals()</literal> ��
<literal>hashCode()</literal> ��������܂��傤�B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+
<term>�N���X�̃}�b�s���O�͂��ꂼ��̃N���X��p�̃t�@�C���ɏ����܂��傤�B</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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>���\�[�X�Ƃ��ă}�b�s���O���[�h���܂��傤�B</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>
+ <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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>�o�C���h�ϐ���g���܂��傤�B</term>
+ <listitem>
+ <para>
+ JDBC�̏ꍇ�Ɠ����悤�ɁA�萔�łȂ��l�͕K��"?"�Œu�������܂��傤�B
+ �萔�łȂ��l��o�C���h���邽�߂ɁA�N�G���ŕ������g���Ă͂����܂���B
+ ���O�t���̃p�����[�^��g���悤�ɂ���Ƃ���ɗǂ��ł��B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>JDBC�R�l�N�V������Ǘ����Ă͂����܂���B</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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>�J�X�^���^�̎g�p��l���܂��傤�B</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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>�{�g���l�b�N��������ɂ�JDBC��n���h�R�[�h���܂��傤�B</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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><literal>Session</literal>
�̃t���b�V���𗝉��܂��傤�B</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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+
<term>3�w�A�[�L�e�N�`���ł͕����I�u�W�F�N�g�̎g�p��l���܂��傤�B</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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+
<term>2�w�A�[�L�e�N�`���ł͒����i���R���e�L�X�g�̎g�p��l���܂��傤�B</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
+
+ �����łȂ���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
+
+ �����ĕ����̃A�v���P�[�V�����g�����U�N�V�������[�X�P�[�X�ɓn����
+ 1��Session��g���Ȃ��ł��������B
+ �����łȂ���A�Â��f�[�^�ō�Ƃ��邱�ƂɂȂ�܂��B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>��O�A�\�Ȃ�̂Ƃ��Ĉ����Ă͂����܂���B</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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>�֘A�ɂ͂Ȃ�ׂ��x���t�F�b�`��g���܂��傤�B</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
+ </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
+ </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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Hibernate����r�W�l�X���W�b�N�𒊏ۉ����邱�Ƃ�l���܂��傤�B</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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>�������֘A�}�b�s���O�͎g��Ȃ��悤�ɂ��܂��傤�B</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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>�Ȃ�ׂ��o�����֘A�ɂ��܂��傤�B</term>
+ <listitem>
+ <para>
+ �P�����֘A�͑o�����ɔ�ׂČ���������Ȃ�܂��B
+ �傫�ȃA�v���P�[�V�����ł́A
+ �قƂ�ǂ��ׂĂ̊֘A���o�����Ƀi�r�Q�[�V�����ł��Ȃ���Ȃ�܂���B
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+</chapter>
+
Copied:
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/collection_mapping.xml
(from rev 14075,
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/collection_mapping.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/collection_mapping.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/collection_mapping.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,1226 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="collections">
+ <title>�R���N�V�����̃}�b�s���O</title>
+
+ <sect1 id="collections-persistent" revision="3">
+ <title>�R���N�V�����̉i����</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 {
+ private String serialNumber;
+ private Set parts = new HashSet();
+
+ public Set getParts() { return parts; }
+ void setParts(Set parts) { this.parts = parts; }
+ public String getSerialNumber() { return serialNumber; }
+ void setSerialNumber(String sn) { serialNumber = sn; }
+}]]></programlisting>
+
+ <para>
+ ���݂���C���^�[�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>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
+ </para>
+
+ <programlisting><![CDATA[Cat cat = new DomesticCat();
+Cat kitten = new DomesticCat();
+....
+Set kittens = new HashSet();
+kittens.add(kitten);
+cat.setKittens(kittens);
+session.persist(cat);
+kittens = cat.getKittens(); // Okay, kittens collection is a Set
+(HashSet) cat.getKittens(); // Error!]]></programlisting>
+
+ <para>
+ Hibernate�ɂ�蒍�����ꂽ�i�����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
+ </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
+ </para>
+
+ <para>
+ ����������قǐS�z���Ȃ��Ă�\���܂���B
+ ���i�g���Ă���Java�̃R���N�V�����Ɠ����悤�ɁA�i�����R���N�V������g���Ă��������B
+ �o�����֘A�̈Ӗ��𗝉���悢�̂ł��i����͌�قǐ�����܂��j�B
+ </para>
+
+ </sect1>
+
+ <sect1 id="collections-mapping" revision="4">
+ <title>�R���N�V�����̃}�b�s���O</title>
+
+ <para>
+ �R���N�V������}�b�s���O���邽�߂̃}�b�s���O�v�f�́A�C���^�[�t�F�C�X�̌^�Ɉˑ����܂��B
+ �Ⴆ�A<literal><set></literal> �v�f��
<literal>Set</literal> �^��
+ �}�b�s���O���邽�߂Ɏg���܂��B
+ </para>
+
+ <programlisting><![CDATA[<class name="Product">
+ <id name="serialNumber" column="productSerialNumber"/>
+ <set name="parts">
+ <key column="productSerialNumber" not-null="true"/>
+ <one-to-many class="Part"/>
+ </set>
+</class>]]></programlisting>
+
+ <para>
+ �}�b�s���O�v�f�ɂ� <literal><set></literal> �̑���
<literal><list></literal>�A
+
<literal><map></literal>�A<literal><bag></literal>�A
+
<literal><array></literal>�A<literal><primitive-array></literal>
������܂��B
+ ��\�Ƃ��āA<literal><map></literal>
�v�f���L�Ɏ����܂��B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="mappingcollection1" coords="2 65"/>
+ <area id="mappingcollection2" coords="3 65"/>
+ <area id="mappingcollection3" coords="4 65"/>
+ <area id="mappingcollection4" coords="5 65"/>
+ <area id="mappingcollection5" coords="6 65"/>
+ <area id="mappingcollection6" coords="7 65"/>
+ <area id="mappingcollection7" coords="8 65"/>
+ <area id="mappingcollection8" coords="9 65"/>
+ <area id="mappingcollection9" coords="10 65"/>
+ <area id="mappingcollection10" coords="11
65"/>
+ <area id="mappingcollection11" coords="12
65"/>
+ <area id="mappingcollection12" coords="13
65"/>
+ <area id="mappingcollection13" coords="14
65"/>
+ <area id="mappingcollection14" coords="15
65"/>
+ </areaspec>
+ <programlisting><![CDATA[<map
+ name="propertyName"
+ table="table_name"
+ schema="schema_name"
+ lazy="true|extra|false"
+ inverse="true|false"
+ cascade="all|none|save-update|delete|all-delete-orphan|delete-orphan"
+ sort="unsorted|natural|comparatorClass"
+ order-by="column_name asc|desc"
+ where="arbitrary sql where condition"
+ fetch="join|select|subselect"
+ batch-size="N"
+ access="field|property|ClassName"
+ optimistic-lock="true|false"
+ mutable="true|false"
+ node="element-name|."
+ embed-xml="true|false"
+>
+
+ <key .... />
+ <map-key .... />
+ <element .... />
+</map>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="mappingcollection1">
+ <para>
+ <literal>name</literal>
�R���N�V�����^�ł���v���p�e�B�̖��O
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <sect2 id="collections-foreignkeys" >
+ <title>�R���N�V�����̊O���L�[</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><key></literal> �v�f�ɂ��}�b�s���O���܂��B
+ </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
+ </para>
+
+ <programlisting><![CDATA[<key
column="productSerialNumber"
not-null="true"/>]]></programlisting>
+
+ <para>
+ �O���L�[�̐��� <literal>ON DELETE CASCADE</literal>
��g���������܂���B
+ </para>
+
+ <programlisting><![CDATA[<key
column="productSerialNumber"
on-delete="cascade"/>]]></programlisting>
+
+ <para>
+ <literal><key></literal>
�v�f�̂��ׂĂ̒�`�ɂ��Ă͑O�̏͂�Q�Ƃ��Ă��������B
+ </para>
+
+ </sect2>
+
+ <sect2 id="collections-elements" >
+ <title>�R���N�V�����̗v�f</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
+ </para>
+
+ <para>
+ �i�[�����^�� <emphasis>�R���N�V�����v�f�^</emphasis>
�ƌĂ�܂��B
+ �R���N�V�����v�f�́A<literal><element></literal>
�܂��� <literal><composite-element></literal>
+ �ɂ��}�b�s���O����A�G���e�B�e�B�ւ̎Q�Ƃ̏ꍇ�ɂ�
+ <literal><one-to-many></literal> �܂���
<literal><many-to-many></literal>
+ �ɂ��}�b�s���O����܂��B
+
�ŏ��̓�͒l�Ƃ��ėv�f��}�b�s���O���A���̓�̓G���e�B�e�B�̊֘A��}�b�s���O����̂Ɏg���܂��B
+ </para>
+
+ </sect2>
+
+ <sect2 id="collections-indexed">
+ <title>�C���f�b�N�X�t���̃R���N�V����</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><map-key></literal>
�ɂ��}�b�s���O���ꂽ��{�^���A
+ <literal><map-key-many-to-many></literal>
�ɂ��}�b�s���O���ꂽ�G���e�B�e�B�̊֘A���A
+ ���邢�� <literal><composite-map-key></literal>
�ɂ��}�b�s���O���ꂽ�R���|�W�b�g�^�ɂȂ�܂��B
+ �z���X�g�̃C���f�b�N�X�́A��� <literal>integer</literal>
�^�ŁA
+ <literal><list-index></literal>
�v�f�ɂ��}�b�s���O���܂��B
+
�}�b�s���O���ꂽ�J�����ɂ̓V�[�P���V�����Ȑ�����i�[���܂��i�f�t�H���g�ł�0����ԍ����t�����܂��j�B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="index1" coords="2 45"/>
+ <area id="index2" coords="3 45"/>
+ </areaspec>
+ <programlisting><![CDATA[<list-index
+ column="column_name"
+ base="0|1|..."/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="index1">
+ <para>
+
<literal>column_name</literal>�i�K�{�j:�R���N�V�����C���f�b�N�X�̒l��ێ�����J�����̖��O�B
+ </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
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <programlistingco>
+ <areaspec>
+ <area id="mapkey1" coords="2 45"/>
+ <area id="mapkey2" coords="3 45"/>
+ <area id="mapkey3" coords="4 45"/>
+ </areaspec>
+ <programlisting><![CDATA[<map-key
+ column="column_name"
+ formula="any SQL expression"
+ type="type_name"
+ node="@attribute-name"
+ length="N"/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="mapkey1">
+ <para>
+ <literal>column</literal>�i�I�v�V�����j:
�R���N�V�����C���f�b�N�X�̒l��ێ�����J�����̖��O�B
+ </para>
+ </callout>
+ <callout arearefs="mapkey2">
+ <para>
+ <literal>formula</literal>�i�I�v�V�����j:
Map�̃L�[��]������̂Ɏg����SQL���B
+ </para>
+ </callout>
+ <callout arearefs="mapkey3">
+ <para>
+ <literal>type</literal>�i�K�{�j: Map�̃L�[�̌^�B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <programlistingco>
+ <areaspec>
+ <area id="indexmanytomany1" coords="2 45"/>
+ <area id="indexmanytomany2" coords="3 45"/>
+ <area id="indexmanytomany3" coords="4 45"/>
+ </areaspec>
+ <programlisting><![CDATA[<map-key-many-to-many
+ column="column_name"
+ formula="any SQL expression"
+ class="ClassName"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="indexmanytomany1">
+ <para>
+ <literal>column</literal> �i�I�v�V�����j:
+ �R���N�V�����C���f�b�N�X�̒l�̂��߂̊O���L�[�J�����̖��O�B
+ </para>
+ </callout>
+ <callout arearefs="indexmanytomany2">
+ <para>
+ <literal>formula</literal> �i�I�v�V�����j:
+ Map�̃L�[�̂��߂̊O���L�[��]�����邽�߂Ɏg��SQL���B
+ </para>
+ </callout>
+ <callout arearefs="indexmanytomany3">
+ <para>
+ <literal>class</literal> �i�K�{�j:
+ Map�̃L�[�Ƃ��Ďg����G���e�B�e�B�N���X�B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+
+ <para>
+ ����e�[�u���ɃC���f�b�N�X�J�������Ȃ��Ă�A�v���p�e�B�^�Ƃ���
<literal>List</literal> ��g��������A
+ Hibernate�� <emphasis><bag></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
+ </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>
+
+ <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
+ </para>
+
+ <para>
+
�l�̃R���N�V�����̂��߂ɁA<literal><element></literal>�^�O��g�p���܂��B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="element1b" coords="2 50"/>
+ <area id="element2b" coords="3 50"/>
+ <area id="element3b" coords="4 50"/>
+ </areaspec>
+ <programlisting><![CDATA[<element
+ column="column_name"
+ formula="any SQL expression"
+ type="typename"
+ length="L"
+ precision="P"
+ scale="S"
+ not-null="true|false"
+ unique="true|false"
+ node="element-name"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="element1b">
+ <para>
+ <literal>column</literal> �i�I�v�V�����j:
�R���N�V�����̗v�f�̒l��ێ�����J�����̖��O�B
+ </para>
+ </callout>
+ <callout arearefs="element2b">
+ <para>
+ <literal>formula</literal> �i�I�v�V�����j:
�v�f��]�����邽�߂Ɏg��SQL���B
+ </para>
+ </callout>
+ <callout arearefs="element3b">
+ <para>
+ <literal>type</literal>
�i�K�{�j�R���N�V�����̗v�f�̌^�B
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ <emphasis>���Α��֘A</emphasis> ��
<literal><many-to-many></literal> �v�f�Ŏw�肵�܂��B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="manytomany1" coords="2 60"/>
+ <area id="manytomany2" coords="3 60"/>
+ <area id="manytomany3" coords="4 60"/>
+ <area id="manytomany4" coords="5 60"/>
+ <area id="manytomany5" coords="6 60"/>
+ <area id="manytomany6" coords="7 60"/>
+ <area id="manytomany7" coords="8 60"/>
+ <area id="manytomany8" coords="9 60"/>
+ </areaspec>
+ <programlisting><![CDATA[<many-to-many
+ column="column_name"
+ formula="any SQL expression"
+ class="ClassName"
+ fetch="select|join"
+ unique="true|false"
+ not-found="ignore|exception"
+ entity-name="EntityName"
+ property-ref="propertyNameFromAssociatedClass"
+ node="element-name"
+ embed-xml="true|false"
+ />]]></programlisting>
+ <calloutlist>
+ <callout arearefs="manytomany1">
+ <para>
+ <literal>column</literal> �i�I�v�V�����j:
�O���L�[�J�����̗v�f�̖��O�B
+ </para>
+ </callout>
+ <callout arearefs="manytomany2">
+ <para>
+ <literal>formula</literal> �i�I�v�V�����j:
�O���L�[�l�̗v�f��]�����邽�߂Ɏg��SQL���B
+ </para>
+ </callout>
+ <callout arearefs="manytomany3">
+ <para>
+ <literal>class</literal> �i�K�{�j: �֘A�N���X�̖��O�B
+ </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><many-to-many></literal> �̂��̑����ɂ��Ă�
+ <literal>join</literal>
�t�F�b�`��L������K�v������܂��B
+ </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
+ </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
+ </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
+ </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
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ �ȉ��ɂ�����������܂��B
+ �܂���String��set�Ɋւ��Ă̗�ł��B
+ </para>
+
+ <programlisting><![CDATA[<set name="names"
table="person_names">
+ <key column="person_id"/>
+ <element column="person_name" type="string"/>
+</set>]]></programlisting>
+
+ <para>
+ �����l��܂�bag�ibag�� <literal>order-by</literal>
�����ɂ���Ĕ�����������`����Ă��܂��j
+ </para>
+
+ <programlisting><![CDATA[<bag name="sizes"
+ table="item_sizes"
+ order-by="size asc">
+ <key column="item_id"/>
+ <element column="size" type="integer"/>
+</bag>]]></programlisting>
+
+ <para>
+ �G���e�B�e�B�̔z�� - ���̏ꍇ�A���Α��̊֘A�ł��B
+ </para>
+
+ <programlisting><![CDATA[<array name="addresses"
+ table="PersonAddress"
+ cascade="persist">
+ <key column="personId"/>
+ <list-index column="sortOrder"/>
+ <many-to-many column="addressId" class="Address"/>
+</array>]]></programlisting>
+
+ <para>
+ ������Ɠ��t��map
+ </para>
+
+ <programlisting><![CDATA[<map name="holidays"
+ table="holidays"
+ schema="dbo"
+ order-by="hol_name asc">
+ <key column="id"/>
+ <map-key column="hol_name" type="string"/>
+ <element column="hol_date" type="date"/>
+</map>]]></programlisting>
+
+ <para>
+ �R���|�[�l���g��list�i���̏͂ŏڂ���������܂��j
+ </para>
+
+ <programlisting><![CDATA[<list name="carComponents"
+ table="CarComponents">
+ <key column="carId"/>
+ <list-index column="sortOrder"/>
+ <composite-element class="CarComponent">
+ <property name="price"/>
+ <property name="type"/>
+ <property name="serialNumber" column="serialNum"/>
+ </composite-element>
+</list>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="collections-onetomany">
+ <title>��Α��֘A</title>
+
+ <para>
+ <emphasis>��Α��֘A</emphasis> �́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
+ </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
+ </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
+ </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><one-to-many></literal>
�^�O�́A���ꂪ��Α��֘A�ł��邱�Ƃ�\���Ă��܂��B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="onetomany1" coords="2 60"/>
+ <area id="onetomany2" coords="3 60"/>
+ <area id="onetomany3" coords="4 60"/>
+ </areaspec>
+ <programlisting><![CDATA[<one-to-many
+ class="ClassName"
+ not-found="ignore|exception"
+ entity-name="EntityName"
+ node="element-name"
+ embed-xml="true|false"
+ />]]></programlisting>
+ <calloutlist>
+ <callout arearefs="onetomany1">
+ <para>
+ <literal>class</literal> �i�K�{�j: �֘A�N���X�̖��O�B
+ </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
+ </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
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ <literal><one-to-many></literal>
�v�f�̓J������錾����K�v���Ȃ����Ƃɒ��ӂ��Ă��������B
+ ���l�� <literal>�e�[�u��</literal> ����w�肷��K�v�����܂���B
+ </para>
+
+ <para>
+ <emphasis>�ƂĂ�d�v�Ȓ���:</emphasis> ���
<literal><one-to-many></literal>
+ �֘A�̊O���L�[�J������ <literal>NOT NULL</literal>�Ɛ錾���ꂽ�ꍇ�A
+ <literal><key></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
+ </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
+ </para>
+
+ <programlisting><![CDATA[<map name="parts"
+ cascade="all">
+ <key column="productId" not-null="true"/>
+ <map-key formula="partName"/>
+ <one-to-many class="Part"/>
+</map>]]></programlisting>
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="collections-advancedmappings">
+ <title>���x�ȃR���N�V������}�b�s���O</title>
+
+ <sect2 id="collections-sorted" revision="2">
+ <title>�\�[�g���ꂽ�R���N�V����</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
+ </para>
+
+ <programlisting><![CDATA[<set name="aliases"
+ table="person_aliases"
+ sort="natural">
+ <key column="person"/>
+ <element column="name" type="string"/>
+</set>
+
+<map name="holidays" sort="my.custom.HolidayComparator">
+ <key column="year_id"/>
+ <map-key column="hol_name" type="string"/>
+ <element column="hol_date" type="date"/>
+</map>]]></programlisting>
+
+ <para>
+ <literal>sort</literal> �����ɐݒ�ł���l��
<literal>unsorted</literal> �� <literal>natural</literal>
+ ����сA<literal>java.util.Comparator</literal>
����������N���X�̖��O�ł��B
+ </para>
+
+ <para>
+ �\�[�g���ꂽ�R���N�V�����͎����I�ɂ�
<literal>java.util.TreeSet</literal> ��
+ <literal>java.util.TreeMap</literal> �̂悤�ɐU�����܂��B
+ </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
+ </para>
+
+ <programlisting><![CDATA[<set name="aliases"
table="person_aliases" order-by="lower(name) asc">
+ <key column="person"/>
+ <element column="name" type="string"/>
+</set>
+
+<map name="holidays" order-by="hol_date, hol_name">
+ <key column="year_id"/>
+ <map-key column="hol_name" type="string"/>
+ <element column="hol_date" type="date"/>
+</map>]]></programlisting>
+
+ <para>
+ <literal>order-by</literal>
�����̒l��SQL���߂ł����āAHQL���߂ł͂Ȃ����Ƃɒ��ӂ��Ă��������I
+ </para>
+
+ <para>
+ �֘A�́A�R���N�V������ <literal>filter()</literal> ��g�����ƂŁA
+ ���s���ɔC�ӂ�criteria�ɂ���ă\�[�g���邱�Ƃ�\�ł��B
+ </para>
+
+ <programlisting><![CDATA[sortedUsers = s.createFilter( group.getUsers(),
"order by this.name" ).list();]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="collections-bidirectional" revision="1">
+ <title>�o�����֘A</title>
+
+ <para>
+ <emphasis>�o�����֘A</emphasis>
�͊֘A�̂ǂ���u���v����ł�i�r�Q�[�V�����ł��܂��B
+ 2��ނ̑o�����֘A���T�|�[�g����Ă��܂��B
+
+ <variablelist>
+ <varlistentry>
+ <term>one-to-many</term>
+ <listitem>
+ <para>
+ �Б���set��bag�A����Е����P��l�ł��B
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>many-to-many</term>
+ <listitem>
+ <para>
+ ������set��bag�ł��B
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ </para>
+
+ <para>
+ 2�̑��Α��֘A�œ����f�[�^�x�[�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
+ </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">
+ <id name="id" column="CATEGORY_ID"/>
+ ...
+ <bag name="items" table="CATEGORY_ITEM">
+ <key column="CATEGORY_ID"/>
+ <many-to-many class="Item" column="ITEM_ID"/>
+ </bag>
+</class>
+
+<class name="Item">
+ <id name="id" column="ITEM_ID"/>
+ ...
+
+ <!-- inverse end -->
+ <bag name="categories" table="CATEGORY_ITEM"
inverse="true">
+ <key column="ITEM_ID"/>
+ <many-to-many class="Category" column="CATEGORY_ID"/>
+ </bag>
+</class>]]></programlisting>
+
+ <para>
+ �֘A��inverse���ɂ̂ݍs��ꂽ�ύX�͉i���� <emphasis>����܂���</emphasis>�B
+ ����́AHibernate�͑S�Ă̑o�����֘A�ɂ��āA��������ɂQ�̕\�������Ă���Ƃ����Ӗ��ł��B
+ �܂���A����B�ւ̃����N�ŁA������B����A�ւ̃����N�Ƃ������Ƃł��B
+ Java�̃I�u�W�F�N�g���f���ɂ��čl���AJava�őo�����W��ǂ�����č�邩��l����A
+ ����͗����₷���ł��B���L�ɁAJava�ł̑o�����֘A�����܂��B
+ </para>
+
+ <programlisting><![CDATA[
+category.getItems().add(item); // The category now "knows" about the
relationship
+item.getCategories().add(category); // The item now "knows" about the
relationship
+
+session.persist(item); // The relationship won't be saved!
+session.persist(category); // The relationship will be
saved]]></programlisting>
+
+ <para>
+ �֘A��inverse�ł͂Ȃ����́A��������̕\����f�[�^�x�[�X�ɕۑ�����̂Ɏg���܂��B
+ </para>
+
+ <para>
+ �o�����̈�Α��֘A���`����ɂ́A
+ ��Α��֘A�𑽑Έ�֘A�Ɠ����e�[�u���̃J�����Ƀ}�b�s���O���A
+ ������ <literal>inverse="true"</literal> �Ɛ錾���܂��B
+ </para>
+
+ <programlisting><![CDATA[<class name="Parent">
+ <id name="id" column="parent_id"/>
+ ....
+ <set name="children" inverse="true">
+ <key column="parent_id"/>
+ <one-to-many class="Child"/>
+ </set>
+</class>
+
+<class name="Child">
+ <id name="id" column="child_id"/>
+ ....
+ <many-to-one name="parent"
+ class="Parent"
+ column="parent_id"
+ not-null="true"/>
+</class>]]></programlisting>
+
+ <para>
+ �֘A�̕Б��� <literal>inverse="true"</literal> ��ݒ肵�Ă�A
+ �J�X�P�[�h����ɉe����^���܂���B�����͒������T�O�ł��I
+ </para>
+
+ </sect2>
+
+ <sect2 id="collections-indexedbidirectional">
+ <title>�C���f�b�N�X�t���R���N�V�����Ƒo�����֘A</title>
+ <para>
+ �Б��� <literal><list></literal> ��
<literal><map></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
+ </para>
+
+ <programlisting><![CDATA[<class name="Parent">
+ <id name="id" column="parent_id"/>
+ ....
+ <map name="children" inverse="true">
+ <key column="parent_id"/>
+ <map-key column="name"
+ type="string"/>
+ <one-to-many class="Child"/>
+ </map>
+</class>
+
+<class name="Child">
+ <id name="id" column="child_id"/>
+ ....
+ <property name="name"
+ not-null="true"/>
+ <many-to-one name="parent"
+ class="Parent"
+ column="parent_id"
+ not-null="true"/>
+</class>]]></programlisting>
+
+ <para>
+ �������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
+ </para>
+
+ <programlisting><![CDATA[<class name="Parent">
+ <id name="id" column="parent_id"/>
+ ....
+ <map name="children">
+ <key column="parent_id"
+ not-null="true"/>
+ <map-key column="name"
+ type="string"/>
+ <one-to-many class="Child"/>
+ </map>
+</class>
+
+<class name="Child">
+ <id name="id" column="child_id"/>
+ ....
+ <many-to-one name="parent"
+ class="Parent"
+ column="parent_id"
+ insert="false"
+ update="false"
+ not-null="true"/>
+</class>]]></programlisting>
+
+ <para>
+ ���ӁF ���̃}�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>
+
+ <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
+ </para>
+
+ <programlisting><![CDATA[<map name="contracts">
+ <key column="employer_id" not-null="true"/>
+ <map-key-many-to-many column="employee_id"
class="Employee"/>
+ <one-to-many class="Contract"/>
+</map>]]></programlisting>
+
+ <programlisting><![CDATA[<map name="connections">
+ <key column="incoming_node_id"/>
+ <map-key-many-to-many column="outgoing_node_id"
class="Node"/>
+ <many-to-many column="connection_id" class="Connection"/>
+</map>]]></programlisting>
+
+ <para>
+ 2�ڂ͒P���Ɋ֘A��G���e�B�e�B��N���X�Ƃ��ă��f�����蒼���A�v���[�`�ŁA
+ �p�ɂɎg���܂��B
+ </para>
+
+ <para>
+ �Ō��composite�v�f��g���A�v���[�`�ł��B����Ɋւ���c�_�͌�قǍs���܂��B
+ </para>
+
+ </sect2>
+
+ <sect2 id="collections-idbag" revision="1">
+
<title><literal><idbag></literal>�̎g�p</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
+ </para>
+
+ <para>
+ bag�̃Z�}���e�B�b�N�X������ <literal>List</literal>�i�܂���
<literal>Collection</literal>�j��
+ <literal><idbag></literal> �v�f�Ƀ}�b�s���O�ł��܂��B
+ </para>
+
+<programlisting><![CDATA[<idbag name="lovers"
table="LOVERS">
+ <collection-id column="ID" type="long">
+ <generator class="sequence"/>
+ </collection-id>
+ <key column="PERSON1"/>
+ <many-to-many column="PERSON2" class="Person"
fetch="join"/>
+</idbag>]]></programlisting>
+
+ <para>
+ �����m�̂悤�� <literal><idbag></literal>
�̓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
+ </para>
+
+ <para>
+ <literal><idbag></literal>
��X�V����p�t�H�[�}���X��
+ �ʏ�� <literal><bag></literal>
����ǂ����Ƃɒ��ڂ��Ă��������I
+ Hibernate�͌X�̍s����ʓI�Ɍ����邱�Ƃ��ł��A
+ list��map�Aset�̂悤�Ɍʂɂ��̍s��X�V�A�폜�ł��܂��B
+ </para>
+
+ <para>
+ ���݂̎����ł́A<literal>native</literal> �Ƃ���id�����헪��
+ <literal><idbag></literal>
�R���N�V�����̎��ʎq�ɑ��Ďg���܂���B
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <!--undocumenting this stuff -->
+
+ <!--sect1 id="collections-heterogeneous">
+ <title>Heterogeneous Associations</title>
+
+ <para>
+ The <literal><many-to-any></literal> and
<literal><index-many-to-any></literal>
+ elements provide for true heterogeneous associations. These mapping elements
work in the
+ same way as the <literal><any></literal> element -
and should also be used
+ rarely, if ever.
+ </para>
+
+ </sect1-->
+
+ <sect1 id="collections-example" revision="1">
+ <title>�R���N�V�����̗�</title>
+
+ <para>
+ ����܂ł̐߂̐���ł͗����ɂ����̂ŁA�ȉ��̗���Ă��������B
+ </para>
+
+ <programlisting><![CDATA[package eg;
+import java.util.Set;
+
+public class Parent {
+ private long id;
+ private Set children;
+
+ public long getId() { return id; }
+ private void setId(long id) { this.id=id; }
+
+ private Set getChildren() { return children; }
+ private void setChildren(Set children) { this.children=children; }
+
+ ....
+ ....
+}]]></programlisting>
+
+ <para>
+ ���̃N���X�� <literal>Child</literal>
�C���X�^���X�̃R���N�V���������Ă��܂��B
+ ����e�X��child���ő�ł���parent�����Ă���Ȃ�A�ł���R�ȃ}�b�s���O�͈�Α��֘A�ł��B
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="Parent">
+ <id name="id">
+ <generator class="sequence"/>
+ </id>
+ <set name="children">
+ <key column="parent_id"/>
+ <one-to-many class="Child"/>
+ </set>
+ </class>
+
+ <class name="Child">
+ <id name="id">
+ <generator class="sequence"/>
+ </id>
+ <property name="name"/>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ ����͈ȉ��̃e�[�u����`�Ƀ}�b�s���O���܂��B
+ </para>
+
+ <programlisting><![CDATA[create table parent ( id bigint not null
primary key )
+create table child ( id bigint not null primary key, name varchar(255), parent_id bigint
)
+alter table child add constraint childfk0 (parent_id) references
parent]]></programlisting>
+
+ <para>
+ ���parent�� <emphasis>�v��</emphasis>
�����Ȃ�A�o�����̈�Α��֘A��g�p���Ă��������B
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="Parent">
+ <id name="id">
+ <generator class="sequence"/>
+ </id>
+ <set name="children" inverse="true">
+ <key column="parent_id"/>
+ <one-to-many class="Child"/>
+ </set>
+ </class>
+
+ <class name="Child">
+ <id name="id">
+ <generator class="sequence"/>
+ </id>
+ <property name="name"/>
+ <many-to-one name="parent" class="Parent"
column="parent_id" not-null="true"/>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ <literal>NOT NULL</literal> ����ɒ��ӂ��Ă��������B
+ </para>
+
+ <programlisting><![CDATA[create table parent ( id bigint not null
primary key )
+create table child ( id bigint not null
+ primary key,
+ name varchar(255),
+ parent_id bigint not null )
+alter table child add constraint childfk0 (parent_id) references
parent]]></programlisting>
+
+ <para>
+ ���邢�́A������̊֘A�͒P�����ł���ׂ��Ƌ����咣����̂ł���A
+ <literal><key></literal> �� <literal>NOT
NULL</literal> �����錾�ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="Parent">
+ <id name="id">
+ <generator class="sequence"/>
+ </id>
+ <set name="children">
+ <key column="parent_id" not-null="true"/>
+ <one-to-many class="Child"/>
+ </set>
+ </class>
+
+ <class name="Child">
+ <id name="id">
+ <generator class="sequence"/>
+ </id>
+ <property name="name"/>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ ����ŁA���child��������parent���Ă�Ȃ�A���Α��֘A���Ó��ł��B
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="Parent">
+ <id name="id">
+ <generator class="sequence"/>
+ </id>
+ <set name="children" table="childset">
+ <key column="parent_id"/>
+ <many-to-many class="Child" column="child_id"/>
+ </set>
+ </class>
+
+ <class name="Child">
+ <id name="id">
+ <generator class="sequence"/>
+ </id>
+ <property name="name"/>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ �e�[�u����`�͈ȉ��̂悤�ɂȂ�܂��B
+ </para>
+
+ <programlisting><![CDATA[create table parent ( id bigint not null
primary key )
+create table child ( id bigint not null primary key, name varchar(255) )
+create table childset ( parent_id bigint not null,
+ child_id bigint not null,
+ primary key ( parent_id, child_id ) )
+alter table childset add constraint childsetfk0 (parent_id) references parent
+alter table childset add constraint childsetfk1 (child_id) references
child]]></programlisting>
+
+ <para>
+ parent/child�W�̃}�b�s���O�ɂ��Ă̂�葽���̗�⊮�S�Ȏ菇���K�v�ł���A
+ <xref linkend="example-parentchild"/> �������������B
+ </para>
+
+ <para>
+ �܂��A����ɓ���Ȋ֘A�}�b�s���O��\�ł��B���̏͂ŏڂ����q�ׂ܂��B
+ </para>
+
+ </sect1>
+
+</chapter>
Copied:
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/component_mapping.xml (from
rev 14075,
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/component_mapping.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/component_mapping.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/component_mapping.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,396 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="components">
+ <title>�R���|�[�l���g�̃}�b�s���O</title>
+
+ <para>
+ <emphasis>�R���|�[�l���g</emphasis>
�̊T�O�́AHibernate��ʂ��ėl�X�ȏ̒���
+ �قȂ�ړI�̂��߂ɍė��p����܂��B
+ </para>
+
+ <sect1 id="components-dependentobjects" revision="2" >
+ <title>�ˑ��I�u�W�F�N�g</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
+ </para>
+
+ <programlisting><![CDATA[public class Person {
+ private java.util.Date birthday;
+ private Name name;
+ private String key;
+ public String getKey() {
+ return key;
+ }
+ private void setKey(String key) {
+ this.key=key;
+ }
+ public java.util.Date getBirthday() {
+ return birthday;
+ }
+ public void setBirthday(java.util.Date birthday) {
+ this.birthday = birthday;
+ }
+ public Name getName() {
+ return name;
+ }
+ public void setName(Name name) {
+ this.name = name;
+ }
+ ......
+ ......
+}]]></programlisting>
+
+<programlisting><![CDATA[public class Name {
+ char initial;
+ String first;
+ String last;
+ public String getFirst() {
+ return first;
+ }
+ void setFirst(String first) {
+ this.first = first;
+ }
+ public String getLast() {
+ return last;
+ }
+ void setLast(String last) {
+ this.last = last;
+ }
+ public char getInitial() {
+ return initial;
+ }
+ void setInitial(char initial) {
+ this.initial = initial;
+ }
+}]]></programlisting>
+
+ <para>
+ ���܁A<literal>Name</literal> ��
<literal>Person</literal> �̃R���|�[�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
+ </para>
+
+ <para>
+ �}�b�s���O��`�͈ȉ��̂悤�ɂȂ�܂��B
+ </para>
+
+ <programlisting><![CDATA[<class name="eg.Person"
table="person">
+ <id name="Key" column="pid" type="string">
+ <generator class="uuid"/>
+ </id>
+ <property name="birthday" type="date"/>
+ <component name="Name" class="eg.Name"> <!-- class
attribute optional -->
+ <property name="initial"/>
+ <property name="first"/>
+ <property name="last"/>
+ </component>
+</class>]]></programlisting>
+
+ <para>
+ Person�e�[�u���� <literal>pid</literal>�A
+ <literal>birthday</literal>�A
+ <literal>initial</literal>�A
+ <literal>first</literal>�A
+ <literal>last</literal> �J���������܂��B
+ </para>
+
+ <para>
+ �S�Ă̒l�^�̂悤�Ɂ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
+
+ </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
+ </para>
+
+ <para>
+ <literal><component></literal>
�v�f�͐e�G���e�B�e�B�ւ̋t�Q�ƂƂ��āA�R���|�[�l���g�N���X��
+ ������}�b�s���O���� <literal><parent></literal>
�T�u�v�f��g�p�ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[<class name="eg.Person"
table="person">
+ <id name="Key" column="pid" type="string">
+ <generator class="uuid"/>
+ </id>
+ <property name="birthday" type="date"/>
+ <component name="Name" class="eg.Name"
unique="true">
+ <parent name="namedPerson"/> <!-- reference back to the Person
-->
+ <property name="initial"/>
+ <property name="first"/>
+ <property name="last"/>
+ </component>
+</class>]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="components-incollections" revision="1">
+
+ <title>�]������I�u�W�F�N�g�̃R���N�V����</title>
+
+ <para>
+ Hibernate�̓R���|�[�l���g�̃R���N�V������T�|�[�g���Ă��܂��i�Ⴆ��
<literal>Name</literal> �^�̔z��j�B
+ <literal><element></literal> �^�O��
<literal><composite-element></literal> �^�O�Ɏ��ւ��邱�Ƃɂ��
+ �R���|�[�l���g�R���N�V������錾���Ă��������B
+ </para>
+
+ <programlisting><![CDATA[<set name="someNames"
table="some_names" lazy="true">
+ <key column="id"/>
+ <composite-element class="eg.Name"> <!-- class attribute required
-->
+ <property name="initial"/>
+ <property name="first"/>
+ <property name="last"/>
+ </composite-element>
+</set>]]></programlisting>
+
+ <para>
+ ����: �R���|�W�b�g�G�������g�� <literal>Set</literal>
���`�����Ȃ�A
+ <literal>equals()</literal> ��
<literal>hashCode()</literal> �𐳂����������邱�Ƃ��d�v�ł��B
+ </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><nested-composite-element></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
+ </para>
+
+ <para>
+ ��� <literal><set></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><list></literal>�A<literal><map></literal>�A
+
<literal><bag></literal>�A<literal><idbag></literal>
��I����K�v������܂��B
+ </para>
+
+ <para>
+ �R���|�W�b�g�G�������g�̓��ʂȃP�[�X�Ƃ��āA�l�X�g���ꂽ
<literal><many-to-one></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
+ </para>
+
+ <programlisting><![CDATA[<class name="eg.Order" .... >
+ ....
+ <set name="purchasedItems" table="purchase_items"
lazy="true">
+ <key column="order_id">
+ <composite-element class="eg.Purchase">
+ <property name="purchaseDate"/>
+ <property name="price"/>
+ <property name="quantity"/>
+ <many-to-one name="item" class="eg.Item"/> <!--
class attribute is optional -->
+ </composite-element>
+ </set>
+</class>]]></programlisting>
+
+ <para>
+ ������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
+ </para>
+
+ <para>
+ 3���֘A�i���邢��4���Ȃǁj��\�ł��B
+ </para>
+
+ <programlisting><![CDATA[<class name="eg.Order" .... >
+ ....
+ <set name="purchasedItems" table="purchase_items"
lazy="true">
+ <key column="order_id">
+ <composite-element class="eg.OrderLine">
+ <many-to-one name="purchaseDetails"
class="eg.Purchase"/>
+ <many-to-one name="item" class="eg.Item"/>
+ </composite-element>
+ </set>
+</class>]]></programlisting>
+
+ <para>
+ �R���|�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>
+
+ <para>
+ <literal><composite-map-key></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
+ </para>
+ </sect1>
+
+ <sect1 id="components-compositeid" revision="1">
+ <title>�������ʎq�Ƃ��ẴR���|�[�l���g</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
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+
�f�[�^�x�[�X��̕����L�[�̓������Ɩ����̂Ȃ��悤�ɁA<literal>equals()</literal>
+ �� <literal>hashCode()</literal> ��Ď������Ȃ���Ȃ�܂���B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ <emphasis>����: Hibernate3�ɂ����āA2�Ԗڂ̏��͐�ΓI�ȏ��ł͂���܂���B
+ �������Ƃɂ����������Ă��������B
+ </emphasis>
+
+ </para>
+
+ <para>
+ �����L�[�����邽�߂� <literal>IdentifierGenerator</literal>
��g�p���邱�Ƃ͂ł��܂���B
+ ����ɃA�v���P�[�V���������ʎq���蓖�ĂȂ��Ă͂Ȃ�܂���B
+ </para>
+
+ <para>
+ �ʏ�� <literal><id></literal> �錾�̑����
<literal><composite-id></literal> �^�O��
+ �i�l�X�g���ꂽ <literal><key-property></literal>
�����Ƌ��Ɂj�g���܂��B
+ �ȉ��̗�ł́A<literal>OrderLine</literal> �N���X��
<literal>Order</literal> �́i�����j��L�[��
+ �ˑ�������L�[�����Ă��܂��B
+ </para>
+
+ <programlisting><![CDATA[<class name="OrderLine">
+
+ <composite-id name="id" class="OrderLineId">
+ <key-property name="lineId"/>
+ <key-property name="orderId"/>
+ <key-property name="customerId"/>
+ </composite-id>
+
+ <property name="name"/>
+
+ <many-to-one name="order" class="Order"
+ insert="false" update="false">
+ <column name="orderId"/>
+ <column name="customerId"/>
+ </many-to-one>
+ ....
+
+</class>]]></programlisting>
+
+ <para>
+ ���̂Ƃ��A<literal>OrderLine</literal>
�e�[�u���֊֘A����O���L�[��܂������ł��B
+ ���̃N���X�̃}�b�s���O�ł����錾���Ȃ���Ȃ�܂���B
+ <literal>OrderLine</literal> �ւ̊֘A�͎��̂悤�Ƀ}�b�s���O����܂��B
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="orderLine"
class="OrderLine">
+<!-- the "class" attribute is optional, as usual -->
+ <column name="lineId"/>
+ <column name="orderId"/>
+ <column name="customerId"/>
+</many-to-one>]]></programlisting>
+
+ <para>
+ �i<literal><column></literal> �^�O�͂ǂ��ł����Ă�
<literal>column</literal> ������
+ ����ɂȂ�܂��B�j
+ </para>
+
+ <para>
+ <literal>OrderLine</literal> �ւ�
<literal>many-to-many</literal> �֘A��
+ �����O���L�[��g���܂��B
+ </para>
+
+ <programlisting><![CDATA[<set name="undeliveredOrderLines">
+ <key column name="warehouseId"/>
+ <many-to-many class="OrderLine">
+ <column name="lineId"/>
+ <column name="orderId"/>
+ <column name="customerId"/>
+ </many-to-many>
+</set>]]></programlisting>
+
+ <para>
+ <literal>Order</literal> �ɂ���
<literal>OrderLine</literal> �̃R���N�V������
+ ���̂�̂�g�p���܂��B
+ </para>
+
+ <programlisting><![CDATA[<set name="orderLines"
inverse="true">
+ <key>
+ <column name="orderId"/>
+ <column name="customerId"/>
+ </key>
+ <one-to-many class="OrderLine"/>
+</set>]]></programlisting>
+
+ <para>
+ �i<literal><one-to-many></literal>
�����́A��ɂ���ăJ������錾���܂���j
+ </para>
+
+ <para>
+ <literal>OrderLine</literal> ���g���R���N�V���������Ă���ꍇ�A
+ �����ɕ����O���L�[������Ă��܂��B
+ </para>
+
+ <programlisting><![CDATA[<class name="OrderLine">
+ ....
+ ....
+ <list name="deliveryAttempts">
+ <key> <!-- a collection inherits the composite key type -->
+ <column name="lineId"/>
+ <column name="orderId"/>
+ <column name="customerId"/>
+ </key>
+ <list-index column="attemptId" base="1"/>
+ <composite-element class="DeliveryAttempt">
+ ...
+ </composite-element>
+ </set>
+</class>]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="components-dynamic" revision="1">
+ <title>���I�R���|�[�l���g</title>
+
+ <para>
+ <literal>Map</literal> �^�̃v���p�e�B�̃}�b�s���O��\�ł��B
+ </para>
+
+ <programlisting><![CDATA[<dynamic-component
name="userAttributes">
+ <property name="foo" column="FOO"
type="string"/>
+ <property name="bar" column="BAR"
type="integer"/>
+ <many-to-one name="baz" class="Baz"
column="BAZ_ID"/>
+</dynamic-component>]]></programlisting>
+
+ <para>
+ <literal><dynamic-component></literal>
�}�b�s���O�̃Z�}���e�B�N�X�� <literal><component></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
+ </para>
+
+ </sect1>
+
+</chapter>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/configuration.xml
(from rev 14075,
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/configuration.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/configuration.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/configuration.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,1725 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="session-configuration" revision="1">
+
+ <title>�ݒ�</title>
+
+ <para>
+ Hibernate�͂��܂��܂Ȋ��œ��삷��悤�Ƀ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
+ </para>
+
+ <sect1 id="configuration-programmatic" revision="1">
+ <title>�v���O������̐ݒ�</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
+ </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> :
+ </para>
+
+ <programlisting><![CDATA[Configuration cfg = new Configuration()
+ .addResource("Item.hbm.xml")
+ .addResource("Bid.hbm.xml");]]></programlisting>
+
+ <para>
+
��ֈ�(������̂ق����ǂ��Ƃ������܂�)�Ƃ��ă}�b�s���O�N���X��w�肷����@�����܂��BHibernate�ɁA�}�b�s���O�t�@�C����
+ �����������������F
+ </para>
+
+ <programlisting><![CDATA[Configuration cfg = new Configuration()
+ .addClass(org.hibernate.auction.Item.class)
+ .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
+ </para>
+
+ <para>
+ <literal>Configuration</literal>
�́A�ݒ�v���p�e�B��w�肷�邱�Ƃ�ł��܂��F
+ </para>
+
+ <programlisting><![CDATA[Configuration cfg = new Configuration()
+ .addClass(org.hibernate.auction.Item.class)
+ .addClass(org.hibernate.auction.Bid.class)
+ .setProperty("hibernate.dialect",
"org.hibernate.dialect.MySQLInnoDBDialect")
+ .setProperty("hibernate.connection.datasource",
"java:comp/env/jdbc/test")
+ .setProperty("hibernate.order_updates",
"true");]]></programlisting>
+
+ <para>
+ Hibernate�ɐݒ�v���p�e�B��ʂ����@��1�ł͂���܂���B
+ ���܂��܂ȃI�v�V������p�ӂ��Ă��܂��F
+ </para>
+
+ <orderedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>java.util.Properties</literal> �C���X�^���X��
+ <literal>Configuration.setProperties()</literal>
�ɓn���܂��B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>hibernate.properties</literal> ��
+ �N���X�p�X�̃��[�g�f�B���N�g���ɒu���܂��B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>System</literal> �v���p�e�B��
+ <literal>java -Dproperty=value</literal>
��g���悤�ɐݒ肵�܂��B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal><property></literal> �v�f��
+ <literal>hibernate.cfg.xml</literal> �i��q�j�ɐݒ肵�܂��B
+ </para>
+ </listitem>
+ </orderedlist>
+
+ <para>
+ �������n�߂����̂Ȃ�A<literal>hibernate.properties</literal>
+ ��g���̂���Ԃ̋ߓ��ł��B
+ </para>
+
+ <para>
+ <literal>Configuration</literal>
�́A�N�����ɂ�������I�u�W�F�N�g�ł���A
+ ��x <literal>SessionFactory</literal>
��������́A�j������邱�Ƃ�Ӑ}���Ă��܂��B
+ </para>
+
+ </sect1>
+
+ <sect1 id="configuration-sessionfactory">
+ <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
+ </para>
+
+ <programlisting><![CDATA[SessionFactory sessions =
cfg.buildSessionFactory();]]></programlisting>
+
+ <para>
+ Hibernate�́A <literal>SessionFactory</literal>
���������邱�Ƃ��ł��܂��B
+ ����́A�����̃f�[�^�x�[�X��g�p����ꍇ�ɕ֗��ł��B
+ </para>
+
+ </sect1>
+
+ <sect1 id="configuration-hibernatejdbc" revision="1">
+ <title>JDBC�R�l�N�V����</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
+ </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
+ </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
+ </para>
+
+ <para>
+ ����A�ȉ��̃v���p�e�B��ݒ肷��ƁAHibernate�̓R�l�N�V������擾����i�v�[����j���߂�
+ <literal>java.sql.DriverManager</literal> ��g���܂��B
+ </para>
+
+ <table frame="topbot">
+ <title>Hibernate JDBC�v���p�e�B</title>
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="1*"/>
+ <colspec colname="c2" colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>�v���p�e�B��</entry>
+ <entry>�Ӗ�</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <literal>hibernate.connection.driver_class</literal>
+ </entry>
+ <entry>
+ <emphasis>JDBC�h���C�o�N���X</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.url</literal>
+ </entry>
+ <entry>
+ <emphasis>jdbc URL</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.username</literal>
+ </entry>
+ <entry>
+ <emphasis>database user</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.password</literal>
+ </entry>
+ <entry>
+ <emphasis>database user password</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.pool_size</literal>
+ </entry>
+ <entry>
+ <emphasis>�v�[������R�l�N�V�����̍ő吔</emphasis>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </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
+ </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
+ </para>
+
+ <para>
+ C3P0�p�� <literal>hibernate.properties</literal>
�t�@�C�����Ƃ��Ď����܂��F
+ </para>
+
+ <programlisting id="c3p0-configuration"
revision="1"><![CDATA[hibernate.connection.driver_class =
org.postgresql.Driver
+hibernate.connection.url = jdbc:postgresql://localhost/mydatabase
+hibernate.connection.username = myuser
+hibernate.connection.password = secret
+hibernate.c3p0.min_size=5
+hibernate.c3p0.max_size=20
+hibernate.c3p0.timeout=1800
+hibernate.c3p0.max_statements=50
+hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]></programlisting>
+
+ <para>
+ �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
+ </para>
+
+ <table frame="topbot">
+ <title>Hibernate �f�[�^�\�[�X�v���p�e�B</title>
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="1*"/>
+ <colspec colname="c2" colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>�v���p�e�B��</entry>
+ <entry>�Ӗ�</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <literal>hibernate.connection.datasource</literal>
+ </entry>
+ <entry>
+ <emphasis>�f�[�^�\�[�X��JNDI��</emphasis>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.jndi.url</literal>
+ </entry>
+ <entry>
+ <emphasis>JNDI�v���o�C�_��URL</emphasis> (�I�v�V����)
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.jndi.class</literal>
+ </entry>
+ <entry>
+ <emphasis>JNDI�N���X
<literal>InitialContextFactory</literal> </emphasis> (�I�v�V����)
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.username</literal>
+ </entry>
+ <entry>
+ <emphasis>database user</emphasis> (�I�v�V����)
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.password</literal>
+ </entry>
+ <entry>
+ <emphasis>database user password</emphasis> (�I�v�V����)
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ �A�v���P�[�V�����T�[�o������ꂽJNDI�f�[�^�\�[�X��g��
+ <literal>hibernate.properties</literal> �t�@�C���̗�����܂��F
+ </para>
+
+ <programlisting><![CDATA[hibernate.connection.datasource =
java:/comp/env/jdbc/test
+hibernate.transaction.factory_class = \
+ org.hibernate.transaction.JTATransactionFactory
+hibernate.transaction.manager_lookup_class = \
+ org.hibernate.transaction.JBossTransactionManagerLookup
+hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]></programlisting>
+
+ <para>
+ 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
+ </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
+ </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
+ </para>
+
+ </sect1>
+
+ <sect1 id="configuration-optional" revision="1">
+ <title>�I�v�V�����ݒ�v���p�e�B</title>
+
+ <para>
+ �����̃v���p�e�B��Hibernate�̋����𐧌䂷���̂ł��B
+ �����̃v���p�e�B�͂��ׂđÓ��ȃf�t�H���g�l������A�C�ӂŐݒ肵�܂��B
+ </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
+ </para>
+
+ <table frame="topbot"
id="configuration-optional-properties" revision="8">
+ <title>Hibernate�ݒ�v���p�e�B</title>
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="1*"/>
+ <colspec colname="c2" colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>�v���p�e�B��</entry>
+ <entry>�Ӗ�</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <literal>hibernate.dialect</literal>
+ </entry>
+ <entry>
+ Hibernate <literal>Dialect</literal>
�N���X��������܂��B
+ ����̓����[�V���i���f�[�^�x�[�X���ƂɍœK�����ꂽSQL�����܂��B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>full.classname.of.Dialect</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.show_sql</literal>
+ </entry>
+ <entry>
+ ���s���ꂽ���ׂĂ�SQL��R���\�[���ɏo�͂��܂��B
+ ����̓��O�J�e�S����
<literal>org.hibernate.SQL</literal>
+ �� <literal>debug</literal> ��ݒ肷����@�̑�֎�i�ł��B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>true</literal> |
<literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.format_sql</literal>
+ </entry>
+ <entry>
+ ���O�ƃR���\�[����SQL��������\�����܂��B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>true</literal> |
<literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.default_schema</literal>
+ </entry>
+ <entry>
+ ���������SQL���̃e�[�u���ɐݒ肷��X�L�[�}/�e�[�u���X�y�[�X�ł��B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>SCHEMA_NAME</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.default_catalog</literal>
+ </entry>
+ <entry>
+ ���������SQL���̃e�[�u���ɐݒ肷��J�^���O�ł��B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>CATALOG_NAME</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.session_factory_name</literal>
+ </entry>
+ <entry>
+ <literal>SessionFactory</literal>
�͐�����A���̖��O��JNDI�ɓo�^����܂��B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>jndi/composite/name</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.max_fetch_depth</literal>
+ </entry>
+ <entry>
+ �O�������t�F�b�`�̍ő�[�x��ݒ肵�܂��B��������֘A��
+ �Έ�֘A�̂݁i��Έ�A���Έ�j�ł��B
+ <literal>0</literal>
��w�肷��ƊO�������t�F�b�`�͖����ɂȂ�܂��B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ ��������l�� <literal>0</literal> ����
<literal>3</literal> �ł��B
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.default_batch_fetch_size</literal>
+ </entry>
+ <entry>
+ �֘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
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <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
+ <para>
+ <literal>dynamic-map</literal>,
<literal>dom4j</literal>,
+ <literal>pojo</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <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
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>true</literal> |
<literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.generate_statistics</literal>
+ </entry>
+ <entry>
+ �L���̏ꍇ�AHibernate�̓p�t�H�[�}���X�`���[�j���O��
+ �L���ȓ��v������W���܂��B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>true</literal> |
<literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.use_identifer_rollback</literal>
+ </entry>
+ <entry>
+ �L���̏ꍇ�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>
+ <literal>true</literal> |
<literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <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
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>true</literal> |
<literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <table frame="topbot" id="configuration-jdbc-properties"
revision="8">
+ <title>Hibernate JDBC �ƃR�l�N�V�����v���p�e�B</title>
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="1*"/>
+ <colspec colname="c2" colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>�v���p�e�B��</entry>
+ <entry>�Ӗ�</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+ <literal>hibernate.jdbc.fetch_size</literal>
+ </entry>
+ <entry>
+ �l��0�łȂ��ꍇ�AJDBC�t�F�b�`�T�C�Y���肵�܂�
+ ( <literal>Statement.setFetchSize()</literal>
��Ăт܂�)�B
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.jdbc.batch_size</literal>
+ </entry>
+ <entry>
+ �l��0�łȂ��ꍇ�AHibernate��JDBC2�o�b�`�X�V��g�p���܂��B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ ��������l�� <literal>5</literal> ����
<literal>30</literal> �ł��B
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.jdbc.batch_versioned_data</literal>
+ </entry>
+ <entry>
+ ���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
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>true</literal> |
<literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.jdbc.factory_class</literal>
+ </entry>
+ <entry>
+ �J�X�^�� <literal>Batcher</literal> ��I�т܂��B
+ �قƂ�ǂ̃A�v���P�[�V�����ɁA���̐ݒ�͕K�v����܂���B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+
<literal>classname.of.BatcherFactory</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.jdbc.use_scrollable_resultset</literal>
+ </entry>
+ <entry>
+ �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
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>true</literal> |
<literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.jdbc.use_streams_for_binary</literal>
+ </entry>
+ <entry>
+ JDBC��/���� <literal>binary</literal> ��
<literal>serializable</literal>
+
�̏�������/�ǂݍ��݃X�g���[����g���܂�(�V�X�e�����x���̃v���p�e�B)�B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>true</literal> |
<literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.jdbc.use_get_generated_keys</literal>
+ </entry>
+ <entry>
+ �}���̌�Ɏ����������ꂽ��L�[��擾���邽�߂�
+ JDBC3
<literal>PreparedStatement.getGeneratedKeys()</literal> �̎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
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>true|false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.connection.provider_class</literal>
+ </entry>
+ <entry>
+ JDBC�R�l�N�V������Hibernate�ɒ���Ǝ���
<literal>ConnectionProvider</literal> ��
+ ���O��w�肵�܂��B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+
<literal>classname.of.ConnectionProvider</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.connection.isolation</literal>
+ </entry>
+ <entry>
+ 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
+ <para>
+ <emphasis role="strong">��F</emphasis>
+ <literal>1, 2, 4, 8</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.connection.autocommit</literal>
+ </entry>
+ <entry>
+
�v�[������Ă���JDBC�R�l�N�V�����̎����R�~�b�g��L���ɂ���i���j�B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>true</literal> |
<literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.connection.release_mode</literal>
+ </entry>
+ <entry>
+
Hibernate��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
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>auto</literal> (default) |
<literal>on_close</literal> |
+ <literal>after_transaction</literal> |
<literal>after_statement</literal>
+ </para>
+ <para>
+ ���ӂ��Ă��������B���̐ݒ��
<literal>SessionFactory.openSession</literal> ����
+ �擾���� <literal>Session</literal>
�����Ɍ��ʂ�����܂��B
+
<literal>SessionFactory.getCurrentSession</literal> ��ʂ��Ď擾����
+ <literal>Session</literal>
�ł́A<literal>CurrentSessionContext</literal>
+ �̎����ɂ���āA�R�l�N�V�����̃����[�X���[�h��ݒ肵�܂��B
+ <xref
linkend="architecture-current-session"/> ��Q�Ƃ��Ă��������B
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.connection.<emphasis><propertyName></emphasis></literal>
+ </entry>
+ <entry>
+ JDBC�� <literal>propertyName</literal> �v���p�e�B��A
+ <literal>DriverManager.getConnection()</literal>
�ɓn���܂��B
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.jndi.<emphasis><propertyName></emphasis></literal>
+ </entry>
+ <entry>
+ <literal>propertyName</literal> �v���p�e�B��A
+ JNDI <literal>InitialContextFactory</literal>
�ɓn���܂��B
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <table frame="topbot" id="configuration-cache-properties"
revision="7">
+ <title>Hibernate �L���b�V���v���p�e�B</title>
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="1*"/>
+ <colspec colname="c2" colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>�v���p�e�B��</entry>
+ <entry>�Ӗ�</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+
<literal>hibernate.cache.provider_class</literal>
+ </entry>
+ <entry>
+ �J�X�^�� <literal>CacheProvider</literal>
�̃N���X���ł��B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>classname.of.CacheProvider</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.cache.use_minimal_puts</literal>
+ </entry>
+ <entry>
+ �������݂�ŏ����ɂ��邽�߂ɁA�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
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>true|false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<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>
+ <literal>true|false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<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><cache></literal> �}�b�s���O
+ �Ő��䂵�܂��B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>true|false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.cache.query_cache_factory</literal>
+ </entry>
+ <entry>
+ �J�X�^�� <literal>QueryCache</literal>
�C���^�[�t�F�C�X�̃N���X����
+ �w�肵�܂��B�f�t�H���g�ł�
<literal>StandardQueryCache</literal> �ɂȂ�܂��B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>classname.of.QueryCache</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.cache.region_prefix</literal>
+ </entry>
+ <entry>
+ �L���b�V���̗̈於�̐ړ����ł��B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>prefix</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<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>
+ <literal>true|false</literal>
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <table frame="topbot"
id="configuration-transaction-properties" revision="9">
+ <title>Hibernate �g�����U�N�V�����v���p�e�B</title>
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="1*"/>
+ <colspec colname="c2" colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>�v���p�e�B��</entry>
+ <entry>�Ӗ�</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+
<literal>hibernate.transaction.factory_class</literal>
+ </entry>
+ <entry>
+ Hibernate <literal>Transaction</literal>
API�ƈꏏ�Ɏg����
+ <literal>TransactionFactory</literal>
�̃N���X���ł��B
+ �i�f�t�H���g�ł�
<literal>JDBCTransactionFactory</literal> �ł��j�B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+
<literal>classname.of.TransactionFactory</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>jta.UserTransaction</literal>
+ </entry>
+ <entry>
+ �A�v���P�[�V�����T�[�o����JTA
<literal>UserTransaction</literal> ��擾���邽�߂�
+ <literal>JTATransactionFactory</literal>
�Ɏg����JNDI���ł��B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>jndi/composite/name</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.transaction.manager_lookup_class</literal>
+ </entry>
+ <entry>
+ <literal>TransactionManagerLookup</literal>
�̃N���X���ł��B
+ JTA���ɂ����āAJVM���x���̃L���b�V����L���ɂ��邽�߂ɕK�v�ł��B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+
<literal>classname.of.TransactionManagerLookup</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.transaction.flush_before_completion</literal>
+ </entry>
+ <entry>
+ �L���̏ꍇ�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
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>true</literal> |
<literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.transaction.auto_close_session</literal>
+ </entry>
+ <entry>
+ �L���̏ꍇ�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
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>true</literal> |
<literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <table frame="topbot" id="configuration-misc-properties"
revision="10">
+ <title>���̑��̃v���p�e�B</title>
+ <tgroup cols="2">
+ <colspec colname="c1" colwidth="1*"/>
+ <colspec colname="c2" colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>�v���p�e�B��</entry>
+ <entry>�Ӗ�</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
+
<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
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>jta</literal> |
<literal>thread</literal> |
+ <literal>managed</literal> |
<literal>custom.Class</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.query.factory_class</literal>
+ </entry>
+ <entry>
+ HQL�p�[�T�[�̎�����I���܂��B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+
<literal>org.hibernate.hql.ast.ASTQueryTranslatorFactory</literal> or
+
<literal>org.hibernate.hql.classic.ClassicQueryTranslatorFactory</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.query.substitutions</literal>
+ </entry>
+ <entry>
+ HQL��SQL�̃g�[�N����}�b�s���O���܂��B
+ �i�Ⴆ�A�g�[�N���͊���e�������ł��j�B
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>hqlLiteral=SQL_LITERAL,
hqlFunction=SQLFUNC</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+ <literal>hibernate.hbm2ddl.auto</literal>
+ </entry>
+ <entry>
+ <literal>SessionFactory</literal> �������Ƃ��ɁA
+ �����I�Ƀ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
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>validate</literal> |
<literal>update</literal> |
+ <literal>create</literal> |
<literal>create-drop</literal>
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>
+
<literal>hibernate.cglib.use_reflection_optimizer</literal>
+ </entry>
+ <entry>
+ ���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
+ <para>
+ <emphasis
role="strong">��F</emphasis>
+ <literal>true</literal> |
<literal>false</literal>
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <sect2 id="configuration-optional-dialects"
revision="1">
+ <title>SQL �����iDialect�j</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
+ </para>
+
+ <table frame="topbot" id="sql-dialects"
revision="2">
+ <title>Hibernate SQL Dialects
(<literal>hibernate.dialect</literal>)</title>
+ <tgroup cols="2">
+ <colspec colwidth="1*"/>
+ <colspec colwidth="2.5*"/>
+ <thead>
+ <row>
+ <entry>RDBMS</entry>
+ <entry>Dialect</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>DB2</entry>
<entry><literal>org.hibernate.dialect.DB2Dialect</literal></entry>
+ </row>
+ <row>
+ <entry>DB2 AS/400</entry>
<entry><literal>org.hibernate.dialect.DB2400Dialect</literal></entry>
+ </row>
+ <row>
+ <entry>DB2 OS390</entry>
<entry><literal>org.hibernate.dialect.DB2390Dialect</literal></entry>
+ </row>
+ <row>
+ <entry>PostgreSQL</entry>
<entry><literal>org.hibernate.dialect.PostgreSQLDialect</literal></entry>
+ </row>
+ <row>
+ <entry>MySQL</entry>
<entry><literal>org.hibernate.dialect.MySQLDialect</literal></entry>
+ </row>
+ <row>
+ <entry>MySQL with InnoDB</entry>
<entry><literal>org.hibernate.dialect.MySQLInnoDBDialect</literal></entry>
+ </row>
+ <row>
+ <entry>MySQL with MyISAM</entry>
<entry><literal>org.hibernate.dialect.MySQLMyISAMDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Oracle (any version)</entry>
<entry><literal>org.hibernate.dialect.OracleDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Oracle 9i/10g</entry>
<entry><literal>org.hibernate.dialect.Oracle9Dialect</literal></entry>
+ </row>
+ <row>
+ <entry>Sybase</entry>
<entry><literal>org.hibernate.dialect.SybaseDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Sybase Anywhere</entry>
<entry><literal>org.hibernate.dialect.SybaseAnywhereDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Microsoft SQL Server</entry>
<entry><literal>org.hibernate.dialect.SQLServerDialect</literal></entry>
+ </row>
+ <row>
+ <entry>SAP DB</entry>
<entry><literal>org.hibernate.dialect.SAPDBDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Informix</entry>
<entry><literal>org.hibernate.dialect.InformixDialect</literal></entry>
+ </row>
+ <row>
+ <entry>HypersonicSQL</entry>
<entry><literal>org.hibernate.dialect.HSQLDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Ingres</entry>
<entry><literal>org.hibernate.dialect.IngresDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Progress</entry>
<entry><literal>org.hibernate.dialect.ProgressDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Mckoi SQL</entry>
<entry><literal>org.hibernate.dialect.MckoiDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Interbase</entry>
<entry><literal>org.hibernate.dialect.InterbaseDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Pointbase</entry>
<entry><literal>org.hibernate.dialect.PointbaseDialect</literal></entry>
+ </row>
+ <row>
+ <entry>FrontBase</entry>
<entry><literal>org.hibernate.dialect.FrontbaseDialect</literal></entry>
+ </row>
+ <row>
+ <entry>Firebird</entry>
<entry><literal>org.hibernate.dialect.FirebirdDialect</literal></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </sect2>
+
+ <sect2 id="configuration-optional-outerjoin"
revision="4">
+ <title>�O�������t�F�b�`</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
+ </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
+ </para>
+
+ <para>
+ See <xref linkend="performance-fetching"/> for more
information.
+ </para>
+
+ </sect2>
+
+ <sect2 id="configuration-optional-binarystreams"
revision="1">
+ <title>�o�C�i���X�g���[��</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
+ </para>
+
+ </sect2>
+
+ <sect2 id="configuration-optional-cacheprovider"
revision="2">
+ <title>2���L���b�V���ƃN�G���[�L���b�V��</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
+ </para>
+
+ </sect2>
+
+ <sect2 id="configuration-optional-querysubstitution">
+ <title>�N�G���[����̒u������</title>
+
+ <para>
+ <literal>hibernate.query.substitutions</literal> ��g�����ƂŁA
+ �V����Hibernate�N�G���g�[�N�����`�ł��܂��B
+ ��F
+ </para>
+
+ <programlisting>hibernate.query.substitutions true=1,
false=0</programlisting>
+
+ <para>
+ ����̓g�[�N�� <literal>true</literal> ��
<literal>false</literal> ��A
+ ���������SQL�ɂ����Đ������e�����ɖ|�܂��B
+ </para>
+
+ <programlisting>hibernate.query.substitutions
toLowercase=LOWER</programlisting>
+
+ <para>
+ �����SQL�� <literal>LOWER</literal>
���̖��O�̕t���ւ���\�ɂ��܂��B
+ </para>
+
+ </sect2>
+
+ <sect2 id="configuration-optional-statistics"
revision="2">
+ <title>Hibernate ���v</title>
+
+ <para>
+ <literal>hibernate.generate_statistics</literal>
��L���ɂ����ꍇ�A
+
���삵�Ă���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
+ </para>
+
+ </sect2>
+ </sect1>
+
+ <sect1 id="configuration-logging">
+ <title>���M���O</title>
+
+ <para>
+ Hibernate��Apache commons-loggin��g���āA���܂��܂ȃC�x���g���O�Ƃ���
+ �o�͂��܂��B
+ </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
+ </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
+ </para>
+
+ <table frame="topbot" id="log-categories"
revision="2">
+ <title>Hibernate ���O�J�e�S��</title>
+ <tgroup cols="2">
+ <colspec colwidth="1*"/>
+ <colspec colwidth="2.5*"/>
+ <thead>
+ <row>
+ <entry>�J�e�S��</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>
+ </row>
+ <row>
+
<entry><literal>org.hibernate.type</literal></entry>
+
<entry>���ׂĂ�JDBC�p�����[�^���M���O���܂��B</entry>
+ </row>
+ <row>
+
<entry><literal>org.hibernate.tool.hbm2ddl</literal></entry>
+
<entry>���s�������ׂĂ�SQL�iDDL�j�X�e�[�g�����g���M���O���܂��B</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
+ </entry>
+ </row>
+ <row>
+
<entry><literal>org.hibernate.cache</literal></entry>
+
<entry>���ׂĂ̂Q���L���b�V���̓�����M���O���܂��B</entry>
+ </row>
+ <row>
+
<entry><literal>org.hibernate.transaction</literal></entry>
+
<entry>�g�����U�N�V�����Ɋ֘A���铮����M���O���܂��B</entry>
+ </row>
+ <row>
+
<entry><literal>org.hibernate.jdbc</literal></entry>
+ <entry>JDBC���\�[�X�擾���M���O���܂��B</entry>
+ </row>
+ <row>
+
<entry><literal>org.hibernate.hql.ast.AST</literal></entry>
+ <entry>
+ HQL��SQL��AST�̃N�G���[�p�[�X���M���O���܂��B
+ </entry>
+ </row>
+ <row>
+
<entry><literal>org.hibernate.secure</literal></entry>
+ <entry>���ׂĂ�JAAS���͂��M���O���܂��B</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>
+ </tgroup>
+ </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
+ </para>
+
+
+ </sect1>
+
+ <sect1 id="configuration-namingstrategy">
+ <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
+ </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
+ </para>
+
+ <para>
+ �}�b�s���O��lj�����O��
<literal>Configuration.setNamingStrategy()</literal> ��ĂԂ��Ƃ�
+ �ȉ��̂悤�ɈقȂ�헪��w�肷�邱�Ƃ��ł��܂��F
+ </para>
+
+ <programlisting><![CDATA[SessionFactory sf = new Configuration()
+ .setNamingStrategy(ImprovedNamingStrategy.INSTANCE)
+ .addFile("Item.hbm.xml")
+ .addFile("Bid.hbm.xml")
+ .buildSessionFactory();]]></programlisting>
+
+ <para>
+ <literal>org.hibernate.cfg.ImprovedNamingStrategy</literal>
�͑g�ݍ��݂̐헪�ł��B
+ ����͂������̃A�v���P�[�V�����ɂƂ��ėL�p�ȊJ�n�_�ƂȂ邩�����܂���B
+ </para>
+
+ </sect1>
+
+ <sect1 id="configuration-xmlconfig" revision="2">
+ <title>XML�ݒ�t�@�C��</title>
+
+ <para>
+ ���1�̕��@�� <literal>hibernate.cfg.xml</literal>
�Ƃ������O�̃t�@�C����
+ �\���Ȑݒ��w�肷����@�ł��B
+ ���̃t�@�C���� <literal>hibernate.properties</literal>
�t�@�C���̑���ƂȂ�܂��B
+ ��������̃t�@�C��������A�v���p�e�B���u���������܂��B
+ </para>
+
+ <para>
+ XML�ݒ�t�@�C���͏����ݒ�� <literal>CLASSPATH</literal>
�ɔz�u���Ă��������B
+ ���ꂪ��ł��F
+ </para>
+
+ <programlisting><![CDATA[<?xml version='1.0'
encoding='utf-8'?>
+<!DOCTYPE hibernate-configuration PUBLIC
+ "-//Hibernate/Hibernate Configuration DTD//EN"
+ "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+
+ <!-- a SessionFactory instance listed as /jndi/name -->
+ <!-- /jndi/name�̂悤�Ƀ��X�g�A�b�v���ꂽSessionFactory�C���X�^���X -->
+ <session-factory
+ name="java:hibernate/SessionFactory">
+
+ <!-- properties -->
+ <property
name="connection.datasource">java:/comp/env/jdbc/MyDB</property>
+ <property
name="dialect">org.hibernate.dialect.MySQLDialect</property>
+ <property name="show_sql">false</property>
+ <property name="transaction.factory_class">
+ org.hibernate.transaction.JTATransactionFactory
+ </property>
+ <property
name="jta.UserTransaction">java:comp/UserTransaction</property>
+
+ <!-- mapping files -->
+ <mapping resource="org/hibernate/auction/Item.hbm.xml"/>
+ <mapping resource="org/hibernate/auction/Bid.hbm.xml"/>
+
+ <!-- cache settings -->
+ <class-cache class="org.hibernate.auction.Item"
usage="read-write"/>
+ <class-cache class="org.hibernate.auction.Bid"
usage="read-only"/>
+ <collection-cache collection="org.hibernate.auction.Item.bids"
usage="read-write"/>
+
+ </session-factory>
+
+</hibernate-configuration>]]></programlisting>
+
+ <para>
+ ���Ă̂Ƃ���A���̕��@�̗D�ʐ��͐ݒ�̂��߂̃}�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
+ </para>
+
+ <para>
+ XML�ݒ��g�����ƂŁAHibernate�͈ȉ��̂悤�ɃV���v���ɂȂ�܂��B
+ </para>
+
+ <programlisting><![CDATA[SessionFactory sf = new
Configuration().configure().buildSessionFactory();]]></programlisting>
+
+ <para>
+ �ႤXML�ݒ�t�@�C����g�����Ƃ�ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[SessionFactory sf = new Configuration()
+ .configure("catdb.cfg.xml")
+ .buildSessionFactory();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="configuration-j2ee" revision="1">
+ <title>J2EE�A�v���P�[�V�����T�[�o�Ƃ̓���</title>
+
+ <para>
+ Hibernate��J2EE�\���Ɠ�������|�C���g��T�|�[�g���Ă��܂��B
+ </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
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+
<emphasis>����JNDI�o�C���f�B���O</emphasis>�FHibernate��JNDI�������オ�������
+ <literal>SessionFactory</literal> �����܂��B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <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
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <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
+ </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
+ </para>
+
+ <sect2 id="configuration-optional-transactionstrategy"
revision="3">
+ <title>�g�����U�N�V�����헪�ݒ�</title>
+
+ <para>
+ Hibernate <literal>Session</literal>
API�́A�A�[�L�e�N�`����̃V�X�e���̊NJ��ł���
+ ������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
+ </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
+ </para>
+
+ <para>
+ 3�̊�{�I�ȁi���ɂ���j�I������܂��F
+ </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>
+ </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
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+
<term><literal>org.hibernate.transaction.CMTTransactionFactory</literal></term>
+ <listitem>
+ <para>�R���e�i�Ǘ�JTA�g�����U�N�V�����ɈϏ����܂�</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>
+
�������g�̃g�����U�N�V�����헪�i�Ⴆ�ACORBA�g�����U�N�V�����T�[�r�X�j���`���邱�Ƃ�ł��܂��B
+ </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
+ </para>
+
+ <table frame="topbot" id="jtamanagerlookup"
revision="1">
+ <title>JTA �g�����U�N�V�����}�l�[�W��</title>
+ <tgroup cols="2">
+ <colspec colwidth="2.5*"/>
+ <colspec colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>Transaction Factory</entry>
+ <entry align="center">Application
Server</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+
<entry><literal>org.hibernate.transaction.JBossTransactionManagerLookup</literal></entry>
+ <entry align="center">JBoss</entry>
+ </row>
+ <row>
+
<entry><literal>org.hibernate.transaction.WeblogicTransactionManagerLookup</literal></entry>
+ <entry align="center">Weblogic</entry>
+ </row>
+ <row>
+
<entry><literal>org.hibernate.transaction.WebSphereTransactionManagerLookup</literal></entry>
+ <entry
align="center">WebSphere</entry>
+ </row>
+ <row>
+
<entry><literal>org.hibernate.transaction.WebSphereExtendedJTATransactionLookup</literal></entry>
+ <entry align="center">WebSphere
6</entry>
+ </row>
+ <row>
+
<entry><literal>org.hibernate.transaction.OrionTransactionManagerLookup</literal></entry>
+ <entry align="center">Orion</entry>
+ </row>
+ <row>
+
<entry><literal>org.hibernate.transaction.ResinTransactionManagerLookup</literal></entry>
+ <entry align="center">Resin</entry>
+ </row>
+ <row>
+
<entry><literal>org.hibernate.transaction.JOTMTransactionManagerLookup</literal></entry>
+ <entry align="center">JOTM</entry>
+ </row>
+ <row>
+
<entry><literal>org.hibernate.transaction.JOnASTransactionManagerLookup</literal></entry>
+ <entry align="center">JOnAS</entry>
+ </row>
+ <row>
+
<entry><literal>org.hibernate.transaction.JRun4TransactionManagerLookup</literal></entry>
+ <entry align="center">JRun4</entry>
+ </row>
+ <row>
+
<entry><literal>org.hibernate.transaction.BESTransactionManagerLookup</literal></entry>
+ <entry align="center">Borland
ES</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </sect2>
+
+ <sect2 id="configuration-optional-jndi" revision="3">
+ <title><literal>SessionFactory</literal>
��JNDI�ւ̓o�^</title>
+
+ <para>
+ JNDI�ɓo�^����Hibernate <literal>SessionFactory</literal>
�͒P����
+ �t�@�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
+ </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
+ </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
+ </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
+ </para>
+
+ <para>
+ ���JNDI <literal>SessionFactory</literal>
��g���ꍇ�AEJB�⑼�̃N���X��
+ JNDI���b�N�A�b�v��g���� <literal>SessionFactory</literal>
��擾���܂��B
+ </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
+ —�P�͂�Q�Ƃ��Ă��������B
+ </para>
+
+ </sect2>
+
+ <sect2 id="configuration-j2ee-currentsession"
revision="4">
+ <title>JTA�ɂ�錻�݂̃Z�b�V�����R���e�L�X�g�}�l�[�W�����g</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
+ </para>
+
+ </sect2>
+
+ <sect2 id="configuration-j2ee-jmx" revision="1">
+ <title>JMX�f�v���C�����g</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
+ </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
+ </para>
+
+ <programlisting><![CDATA[<?xml version="1.0"?>
+<server>
+
+<mbean code="org.hibernate.jmx.HibernateService"
+ name="jboss.jca:service=HibernateFactory,name=HibernateFactory">
+
+ <!-- Required services -->
+ <depends>jboss.jca:service=RARDeployer</depends>
+ <depends>jboss.jca:service=LocalTxCM,name=HsqlDS</depends>
+
+ <!-- Bind the Hibernate service to JNDI -->
+ <attribute
name="JndiName">java:/hibernate/SessionFactory</attribute>
+
+ <!-- Datasource settings -->
+ <attribute name="Datasource">java:HsqlDS</attribute>
+ <attribute
name="Dialect">org.hibernate.dialect.HSQLDialect</attribute>
+
+ <!-- Transaction integration -->
+ <attribute name="TransactionStrategy">
+ org.hibernate.transaction.JTATransactionFactory</attribute>
+ <attribute name="TransactionManagerLookupStrategy">
+ org.hibernate.transaction.JBossTransactionManagerLookup</attribute>
+ <attribute
name="FlushBeforeCompletionEnabled">true</attribute>
+ <attribute name="AutoCloseSessionEnabled">true</attribute>
+
+ <!-- Fetching options -->
+ <attribute name="MaximumFetchDepth">5</attribute>
+
+ <!-- Second-level caching -->
+ <attribute name="SecondLevelCacheEnabled">true</attribute>
+ <attribute
name="CacheProviderClass">org.hibernate.cache.EhCacheProvider</attribute>
+ <attribute name="QueryCacheEnabled">true</attribute>
+
+ <!-- Logging -->
+ <attribute name="ShowSqlEnabled">true</attribute>
+
+ <!-- Mapping files -->
+ <attribute
name="MapResources">auction/Item.hbm.xml,auction/Category.hbm.xml</attribute>
+
+</mbean>
+
+</server>]]></programlisting>
+
+ <para>
+ ���̃t�@�C���� <literal>META-INF</literal>
�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
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+</chapter>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/events.xml (from
rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/events.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/events.xml
(rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/events.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,274 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="events">
+ <title>�C���^�[�Z�v�^�ƃC�x���g</title>
+
+ <para>
+ �A�v���P�[�V������Hibernate�̓���Ŕ�������C�x���g�ɑΉ��ł���Ɩ�ɗ����Ƃ�����܂��B
+ �����̈�ʓI�ȋ@�\������ł���悤�ɂȂ�A
+ �܂�Hibernate�̋@�\��g�����邱�Ƃ�ł���悤�ɂȂ�܂��B
+ </para>
+
+ <sect1 id="objectstate-interceptors" revision="3">
+ <title>�C���^�[�Z�v�^</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
+ </para>
+
+ <para>
+ <literal>Interceptor</literal> �ڎ���������A
+ �i����ɂ悢�̂́j<literal>EmptyInterceptor</literal>
��g��������ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[package org.hibernate.test;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Iterator;
+
+import org.hibernate.EmptyInterceptor;
+import org.hibernate.Transaction;
+import org.hibernate.type.Type;
+
+public class AuditInterceptor extends EmptyInterceptor {
+
+ private int updates;
+ private int creates;
+ private int loads;
+
+ public void onDelete(Object entity,
+ Serializable id,
+ Object[] state,
+ String[] propertyNames,
+ Type[] types) {
+ // do nothing
+ }
+
+ public boolean onFlushDirty(Object entity,
+ Serializable id,
+ Object[] currentState,
+ Object[] previousState,
+ String[] propertyNames,
+ Type[] types) {
+
+ if ( entity instanceof Auditable ) {
+ updates++;
+ for ( int i=0; i < propertyNames.length; i++ ) {
+ if ( "lastUpdateTimestamp".equals( propertyNames[i] ) ) {
+ currentState[i] = new Date();
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ public boolean onLoad(Object entity,
+ Serializable id,
+ Object[] state,
+ String[] propertyNames,
+ Type[] types) {
+ if ( entity instanceof Auditable ) {
+ loads++;
+ }
+ return false;
+ }
+
+ public boolean onSave(Object entity,
+ Serializable id,
+ Object[] state,
+ String[] propertyNames,
+ Type[] types) {
+
+ if ( entity instanceof Auditable ) {
+ creates++;
+ for ( int i=0; i<propertyNames.length; i++ ) {
+ if ( "createTimestamp".equals( propertyNames[i] ) ) {
+ state[i] = new Date();
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ public void afterTransactionCompletion(Transaction tx) {
+ if ( tx.wasCommitted() ) {
+ System.out.println("Creations: " + creates + ", Updates:
" + updates, "Loads: " + loads);
+ }
+ updates=0;
+ creates=0;
+ loads=0;
+ }
+
+}]]></programlisting>
+
+ <para>
+ �C���^�[�Z�v�^�ɂ͓��ނ���܂��F
+ <literal>Session</literal> �X�R�[�v�̂�̂�
+ <literal>SessionFactory</literal> �X�R�[�v�̂�̂ł��B
+ </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
+ </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
+ </para>
+
+ <programlisting><![CDATA[new Configuration().setInterceptor( new
AuditInterceptor() );]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="objectstate-events" revision="4">
+ <title>�C�x���g�V�X�e��</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
+ </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
+ </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
+ </para>
+
+ <programlisting><![CDATA[public class MyLoadListener implements
LoadEventListener {
+ // this is the single method defined by the LoadEventListener interface
+ public void onLoad(LoadEvent event, LoadEventListener.LoadType loadType)
+ throws HibernateException {
+ if ( !MySecurity.isAuthorized( event.getEntityClassName(), event.getEntityId() )
) {
+ throw MySecurityException("Unauthorized access");
+ }
+ }
+}]]></programlisting>
+
+ <para>
+ �f�t�H���g���X�i�ȊO�̃��X�i��g���ɂ́AHibernate�ւ̐ݒ��K�v�ł��F
+ </para>
+
+<programlisting><![CDATA[<hibernate-configuration>
+ <session-factory>
+ ...
+ <event type="load">
+ <listener class="com.eg.MyLoadListener"/>
+ <listener
class="org.hibernate.event.def.DefaultLoadEventListener"/>
+ </event>
+ </session-factory>
+</hibernate-configuration>]]></programlisting>
+
+ <para>
+ �܂����̑��ɁA�v���O�����œo�^������@�����܂��F
+ </para>
+
+ <programlisting><![CDATA[Configuration cfg = new Configuration();
+LoadEventListener[] stack = { new MyLoadListener(), new DefaultLoadEventListener() };
+cfg.EventListeners().setLoadEventListeners(stack);]]></programlisting>
+
+ <para>
+ ���X�i��錾�I�ɓo�^����ƁA���̃��X�i�̃C���X�^���X���L�ł��܂���B
+ ������ <literal><listener/></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
+ </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
+ </para>
+
+ </sect1>
+
+ <sect1 id="objectstate-decl-security" revision="2">
+ <title>Hibernate�̐錾�I�ȃZ�L�����e�B</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
+ </para>
+
+ <para>
+ �܂��ŏ��ɁA�K�ȃC�x���g���X�i��ݒ肵��JAAS�F��g����悤�ɂ��Ȃ���Ȃ�܂���B
+ </para>
+
+ <programlisting><![CDATA[<listener type="pre-delete"
class="org.hibernate.secure.JACCPreDeleteEventListener"/>
+<listener type="pre-update"
class="org.hibernate.secure.JACCPreUpdateEventListener"/>
+<listener type="pre-insert"
class="org.hibernate.secure.JACCPreInsertEventListener"/>
+<listener type="pre-load"
class="org.hibernate.secure.JACCPreLoadEventListener"/>]]></programlisting>
+
+ <para>
+ ����̃C�x���g�^�ɑ��Ă��傤�Lj�̃��X�i������Ƃ��A
+ <literal><listener type="..."
class="..."/></literal>
+ �� <literal><event type="..."><listener
class="..."/></event></literal>
+ �̊ȗ��`�ɉ߂��Ȃ����Ƃɒ��ӂ��Ă��������B
+ </para>
+
+ <para>
+ ���ɁA������ <literal>hibernate.cfg.xml</literal>
�Ń��[���Ƀp�[�~�b�V������^���Ă��������F
+ </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
+ </para>
+
+ </sect1>
+
+</chapter>
+
Copied:
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_mappings.xml (from
rev 14075,
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/example_mappings.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_mappings.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_mappings.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,659 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
+<chapter id="example-mappings">
+ <title>��F���낢��ȃ}�b�s���O</title>
+
+ <para>
+ ���̏͂ł́A��蕡�G�Ȋ֘A�̃}�b�s���O�������Љ�܂��B
+ </para>
+
+ <sect1 id="example-mappings-emp">
+ <title>�ٗp��/�]�ƈ�</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
+ </para>
+
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="../images/EmployerEmployee.png"
format="PNG" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="../images/EmployerEmployee.png"
format="PNG" align="center"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>
+ �}�b�s���O�h�L�������g�̈��ł��F
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="Employer" table="employers">
+ <id name="id">
+ <generator class="sequence">
+ <param name="sequence">employer_id_seq</param>
+ </generator>
+ </id>
+ <property name="name"/>
+ </class>
+
+ <class name="Employment" table="employment_periods">
+
+ <id name="id">
+ <generator class="sequence">
+ <param name="sequence">employment_id_seq</param>
+ </generator>
+ </id>
+ <property name="startDate" column="start_date"/>
+ <property name="endDate" column="end_date"/>
+
+ <component name="hourlyRate" class="MonetaryAmount">
+ <property name="amount">
+ <column name="hourly_rate" sql-type="NUMERIC(12,
2)"/>
+ </property>
+ <property name="currency" length="12"/>
+ </component>
+
+ <many-to-one name="employer" column="employer_id"
not-null="true"/>
+ <many-to-one name="employee" column="employee_id"
not-null="true"/>
+
+ </class>
+
+ <class name="Employee" table="employees">
+ <id name="id">
+ <generator class="sequence">
+ <param name="sequence">employee_id_seq</param>
+ </generator>
+ </id>
+ <property name="taxfileNumber"/>
+ <component name="name" class="Name">
+ <property name="firstName"/>
+ <property name="initial"/>
+ <property name="lastName"/>
+ </component>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ <literal>SchemaExport</literal> �Ő��������e�[�u���X�L�[�}�ł��B
+ </para>
+
+ <programlisting><![CDATA[create table employers (
+ id BIGINT not null,
+ name VARCHAR(255),
+ primary key (id)
+)
+
+create table employment_periods (
+ id BIGINT not null,
+ hourly_rate NUMERIC(12, 2),
+ currency VARCHAR(12),
+ employee_id BIGINT not null,
+ employer_id BIGINT not null,
+ end_date TIMESTAMP,
+ start_date TIMESTAMP,
+ primary key (id)
+)
+
+create table employees (
+ id BIGINT not null,
+ firstName VARCHAR(255),
+ initial CHAR(1),
+ lastName VARCHAR(255),
+ taxfileNumber VARCHAR(255),
+ primary key (id)
+)
+
+alter table employment_periods
+ add constraint employment_periodsFK0 foreign key (employer_id) references employers
+alter table employment_periods
+ add constraint employment_periodsFK1 foreign key (employee_id) references employees
+create sequence employee_id_seq
+create sequence employment_id_seq
+create sequence employer_id_seq]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="example-mappings-authorwork">
+ <title>���/��i</title>
+
+ <para>
+ <literal>Work</literal> , <literal>Author</literal>
������ <literal>Person</literal>
+ �̊W��\���ȉ��̃��f����l���Ă݂Ă��������B
+ <literal>Work</literal> �� <literal>Author</literal>
�̊W�𑽑Α��֘A�ŕ\���Ă��܂��B
+ <literal>Author</literal> ��
<literal>Person</literal> �̊W�͈�Έ�֘A�Ƃ��ĕ\���Ă��܂��B
+ ���ɂ� <literal>Author</literal> ��
<literal>Person</literal> ��g������Ƃ������@�����܂��B
+ </para>
+
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="../images/AuthorWork.png"
format="PNG" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="../images/AuthorWork.png"
format="PNG" align="center"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>
+ �ȉ��̃}�b�s���O�h�L�������g�͂��̂悤�ȊW�𐳊m�ɕ\�����Ă��܂��B
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="Work" table="works"
discriminator-value="W">
+
+ <id name="id" column="id">
+ <generator class="native"/>
+ </id>
+ <discriminator column="type" type="character"/>
+
+ <property name="title"/>
+ <set name="authors" table="author_work">
+ <key column name="work_id"/>
+ <many-to-many class="Author" column
name="author_id"/>
+ </set>
+
+ <subclass name="Book" discriminator-value="B">
+ <property name="text"/>
+ </subclass>
+
+ <subclass name="Song" discriminator-value="S">
+ <property name="tempo"/>
+ <property name="genre"/>
+ </subclass>
+
+ </class>
+
+ <class name="Author" table="authors">
+
+ <id name="id" column="id">
+ <!-- The Author must have the same identifier as the Person -->
+ <generator class="assigned"/>
+ </id>
+
+ <property name="alias"/>
+ <one-to-one name="person" constrained="true"/>
+
+ <set name="works" table="author_work"
inverse="true">
+ <key column="author_id"/>
+ <many-to-many class="Work" column="work_id"/>
+ </set>
+
+ </class>
+
+ <class name="Person" table="persons">
+ <id name="id" column="id">
+ <generator class="native"/>
+ </id>
+ <property name="name"/>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ ���̃}�b�s���O�ɂ�4�̃e�[�u��������܂��B
+ <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
+ </para>
+
+ <programlisting><![CDATA[create table works (
+ id BIGINT not null generated by default as identity,
+ tempo FLOAT,
+ genre VARCHAR(255),
+ text INTEGER,
+ title VARCHAR(255),
+ type CHAR(1) not null,
+ primary key (id)
+)
+
+create table author_work (
+ author_id BIGINT not null,
+ work_id BIGINT not null,
+ primary key (work_id, author_id)
+)
+
+create table authors (
+ id BIGINT not null generated by default as identity,
+ alias VARCHAR(255),
+ primary key (id)
+)
+
+create table persons (
+ id BIGINT not null generated by default as identity,
+ name VARCHAR(255),
+ primary key (id)
+)
+
+alter table authors
+ add constraint authorsFK0 foreign key (id) references persons
+alter table author_work
+ add constraint author_workFK0 foreign key (author_id) references authors
+alter table author_work
+ add constraint author_workFK1 foreign key (work_id) references
works]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="example-mappings-customerorderproduct">
+ <title>�ڋq/����/���i</title>
+
+ <para>
+ ���āA <literal>Customer</literal> ,
<literal>Order</literal> , <literal>LineItem</literal>
+ <literal>Product</literal> �̊W��\�����f����l���Ă݂܂��傤�B
+ <literal>Customer</literal> ��
<literal>Order</literal> �͈�Α��̊֘A�ł����A
+ <literal>Order</literal> /
<literal>LineItem</literal> / <literal>Product</literal>
+ �͂ǂ̂悤�ɕ\������ׂ��ł��傤���H
+ <literal>LineItem</literal>
��A<literal>Order</literal> �� <literal>Product</literal>
+ �̑��Α��֘A��\������֘A�N���X�Ƃ��ă}�b�s���O���܂����B
+ Hibernate�ł͂����R���|�W�b�g�v�f�ƌĂт܂��B
+ </para>
+
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="../images/CustomerOrderProduct.png"
format="PNG" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="../images/CustomerOrderProduct.png"
format="PNG" align="center"/>
+ </imageobject>
+ </mediaobject>
+
+ <para>
+ �}�b�s���O�h�L�������g�F
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="Customer" table="customers">
+ <id name="id">
+ <generator class="native"/>
+ </id>
+ <property name="name"/>
+ <set name="orders" inverse="true">
+ <key column="customer_id"/>
+ <one-to-many class="Order"/>
+ </set>
+ </class>
+
+ <class name="Order" table="orders">
+ <id name="id">
+ <generator class="native"/>
+ </id>
+ <property name="date"/>
+ <many-to-one name="customer" column="customer_id"/>
+ <list name="lineItems" table="line_items">
+ <key column="order_id"/>
+ <list-index column="line_number"/>
+ <composite-element class="LineItem">
+ <property name="quantity"/>
+ <many-to-one name="product"
column="product_id"/>
+ </composite-element>
+ </list>
+ </class>
+
+ <class name="Product" table="products">
+ <id name="id">
+ <generator class="native"/>
+ </id>
+ <property name="serialNumber"/>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ <literal>customers</literal> , <literal>orders</literal>
, <literal>line_items</literal> ,
+ <literal>products</literal>
�͂��ꂼ��A�ڋq�A�����A�������ׁA���i�̃f�[�^��ێ����܂��B
+ <literal>line_items</literal>
�͒����Ɛ��i�����N����֘A�e�[�u���Ƃ��Ă�����܂��B
+ </para>
+
+ <programlisting><![CDATA[create table customers (
+ id BIGINT not null generated by default as identity,
+ name VARCHAR(255),
+ primary key (id)
+)
+
+create table orders (
+ id BIGINT not null generated by default as identity,
+ customer_id BIGINT,
+ date TIMESTAMP,
+ primary key (id)
+)
+
+create table line_items (
+ line_number INTEGER not null,
+ order_id BIGINT not null,
+ product_id BIGINT,
+ quantity INTEGER,
+ primary key (order_id, line_number)
+)
+
+create table products (
+ id BIGINT not null generated by default as identity,
+ serialNumber VARCHAR(255),
+ primary key (id)
+)
+
+alter table orders
+ add constraint ordersFK0 foreign key (customer_id) references customers
+alter table line_items
+ add constraint line_itemsFK0 foreign key (product_id) references products
+alter table line_items
+ add constraint line_itemsFK1 foreign key (order_id) references
orders]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="misc">
+ <title>��X�G���ȃ}�b�s���O��</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
+ </para>
+
+ <para>TODO: �����ɕ��͂߂�</para>
+
+ <sect2 id="example-mappings-typed-onetone">
+ <title>�u�^�t�����ꂽ�v��Έ�֘A</title>
+<programlisting><![CDATA[<class name="Person">
+ <id name="name"/>
+ <one-to-one name="address"
+ cascade="all">
+ <formula>name</formula>
+ <formula>'HOME'</formula>
+ </one-to-one>
+ <one-to-one name="mailingAddress"
+ cascade="all">
+ <formula>name</formula>
+ <formula>'MAILING'</formula>
+ </one-to-one>
+</class>
+
+<class name="Address" batch-size="2"
+ check="addressType in ('MAILING', 'HOME',
'BUSINESS')">
+ <composite-id>
+ <key-many-to-one name="person"
+ column="personName"/>
+ <key-property name="type"
+ column="addressType"/>
+ </composite-id>
+ <property name="street" type="text"/>
+ <property name="state"/>
+ <property name="zip"/>
+</class>]]></programlisting>
+ </sect2>
+
+ <sect2 id="example-mappings-composite-key">
+ <title>�����L�[�̗�</title>
+<programlisting><![CDATA[<class name="Customer">
+
+ <id name="customerId"
+ length="10">
+ <generator class="assigned"/>
+ </id>
+
+ <property name="name" not-null="true"
length="100"/>
+ <property name="address" not-null="true"
length="200"/>
+
+ <list name="orders"
+ inverse="true"
+ cascade="save-update">
+ <key column="customerId"/>
+ <index column="orderNumber"/>
+ <one-to-many class="Order"/>
+ </list>
+
+</class>
+
+<class name="Order" table="CustomerOrder"
lazy="true">
+ <synchronize table="LineItem"/>
+ <synchronize table="Product"/>
+
+ <composite-id name="id"
+ class="Order$Id">
+ <key-property name="customerId" length="10"/>
+ <key-property name="orderNumber"/>
+ </composite-id>
+
+ <property name="orderDate"
+ type="calendar_date"
+ not-null="true"/>
+
+ <property name="total">
+ <formula>
+ ( select sum(li.quantity*p.price)
+ from LineItem li, Product p
+ where li.productId = p.productId
+ and li.customerId = customerId
+ and li.orderNumber = orderNumber )
+ </formula>
+ </property>
+
+ <many-to-one name="customer"
+ column="customerId"
+ insert="false"
+ update="false"
+ not-null="true"/>
+
+ <bag name="lineItems"
+ fetch="join"
+ inverse="true"
+ cascade="save-update">
+ <key>
+ <column name="customerId"/>
+ <column name="orderNumber"/>
+ </key>
+ <one-to-many class="LineItem"/>
+ </bag>
+
+</class>
+
+<class name="LineItem">
+
+ <composite-id name="id"
+ class="LineItem$Id">
+ <key-property name="customerId" length="10"/>
+ <key-property name="orderNumber"/>
+ <key-property name="productId" length="10"/>
+ </composite-id>
+
+ <property name="quantity"/>
+
+ <many-to-one name="order"
+ insert="false"
+ update="false"
+ not-null="true">
+ <column name="customerId"/>
+ <column name="orderNumber"/>
+ </many-to-one>
+
+ <many-to-one name="product"
+ insert="false"
+ update="false"
+ not-null="true"
+ column="productId"/>
+
+</class>
+
+<class name="Product">
+ <synchronize table="LineItem"/>
+
+ <id name="productId"
+ length="10">
+ <generator class="assigned"/>
+ </id>
+
+ <property name="description"
+ not-null="true"
+ length="200"/>
+ <property name="price" length="3"/>
+ <property name="numberAvailable"/>
+
+ <property name="numberOrdered">
+ <formula>
+ ( select sum(li.quantity)
+ from LineItem li
+ where li.productId = productId )
+ </formula>
+ </property>
+
+</class>]]></programlisting>
+ </sect2>
+
+ <sect2 id="example-mappings-composite-key-manytomany">
+ <title>�����L�[�������L���鑽�Α�</title>
+<programlisting><![CDATA[<class name="User"
table="`User`">
+ <composite-id>
+ <key-property name="name"/>
+ <key-property name="org"/>
+ </composite-id>
+ <set name="groups" table="UserGroup">
+ <key>
+ <column name="userName"/>
+ <column name="org"/>
+ </key>
+ <many-to-many class="Group">
+ <column name="groupName"/>
+ <formula>org</formula>
+ </many-to-many>
+ </set>
+</class>
+
+<class name="Group" table="`Group`">
+ <composite-id>
+ <key-property name="name"/>
+ <key-property name="org"/>
+ </composite-id>
+ <property name="description"/>
+ <set name="users" table="UserGroup"
inverse="true">
+ <key>
+ <column name="groupName"/>
+ <column name="org"/>
+ </key>
+ <many-to-many class="User">
+ <column name="userName"/>
+ <formula>org</formula>
+ </many-to-many>
+ </set>
+</class>
+]]></programlisting>
+ </sect2>
+
+ <sect2 id="example-mappings-content-discrimination">
+ <title>discrimination�Ɋ�Â���e</title>
+<programlisting><![CDATA[<class name="Person"
+ discriminator-value="P">
+
+ <id name="id"
+ column="person_id"
+ unsaved-value="0">
+ <generator class="native"/>
+ </id>
+
+
+ <discriminator
+ type="character">
+ <formula>
+ case
+ when title is not null then 'E'
+ when salesperson is not null then 'C'
+ else 'P'
+ end
+ </formula>
+ </discriminator>
+
+ <property name="name"
+ not-null="true"
+ length="80"/>
+
+ <property name="sex"
+ not-null="true"
+ update="false"/>
+
+ <component name="address">
+ <property name="address"/>
+ <property name="zip"/>
+ <property name="country"/>
+ </component>
+
+ <subclass name="Employee"
+ discriminator-value="E">
+ <property name="title"
+ length="20"/>
+ <property name="salary"/>
+ <many-to-one name="manager"/>
+ </subclass>
+
+ <subclass name="Customer"
+ discriminator-value="C">
+ <property name="comments"/>
+ <many-to-one name="salesperson"/>
+ </subclass>
+
+</class>]]></programlisting>
+ </sect2>
+
+ <sect2 id="example-mappings-association-alternatekeys"
revision="2">
+ <title>��փL�[�̊֘A</title>
+<programlisting><![CDATA[<class name="Person">
+
+ <id name="id">
+ <generator class="hilo"/>
+ </id>
+
+ <property name="name" length="100"/>
+
+ <one-to-one name="address"
+ property-ref="person"
+ cascade="all"
+ fetch="join"/>
+
+ <set name="accounts"
+ inverse="true">
+ <key column="userId"
+ property-ref="userId"/>
+ <one-to-many class="Account"/>
+ </set>
+
+ <property name="userId" length="8"/>
+
+</class>
+
+<class name="Address">
+
+ <id name="id">
+ <generator class="hilo"/>
+ </id>
+
+ <property name="address" length="300"/>
+ <property name="zip" length="5"/>
+ <property name="country" length="25"/>
+ <many-to-one name="person" unique="true"
not-null="true"/>
+
+</class>
+
+<class name="Account">
+ <id name="accountId" length="32">
+ <generator class="uuid"/>
+ </id>
+
+ <many-to-one name="user"
+ column="userId"
+ property-ref="userId"/>
+
+ <property name="type" not-null="true"/>
+
+</class>]]></programlisting>
+ </sect2>
+
+ </sect1>
+
+</chapter>
+
Copied:
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_parentchild.xml
(from rev 14075,
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/example_parentchild.xml)
===================================================================
---
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_parentchild.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_parentchild.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="example-parentchild">
+ <title>��F�e/�q��
+ </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><one-to-many></literal> �֘A�ɂ��
<literal>�e</literal> �� <literal>�q��</literal>
+ �̗�����G���e�B�e�B�N���X�Ƃ��ă��f�����O������@�ł�
+ �i�����̕��@�́A<literal>�q��</literal> ��
<literal><composite-element></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
+
+ </para>
+
+ <sect1 id="example-parentchild-collections">
+ <title>�R���N�V�����Ɋւ��钍��</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
+ </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>
+
+ <para>
+ <literal>Parent</literal> ����
<literal>Child</literal> �ւ̒P����
<literal><one-to-many></literal> �֘A����n�߂�Ƃ��܂��B
+ </para>
+
+ <programlisting><![CDATA[<set name="children">
+ <key column="parent_id"/>
+ <one-to-many class="Child"/>
+</set>]]></programlisting>
+
+ <para>
+ �ȉ��̃R�[�h����s����ƁA
+ </para>
+
+ <programlisting><![CDATA[Parent p = .....;
+Child c = new Child();
+p.getChildren().add(c);
+session.save(c);
+session.flush();]]></programlisting>
+
+ <para>
+ Hibernate�͓��SQL���s���܂�:
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+
<literal>c</literal>�ɑ��郌�R�[�h������<literal>INSERT</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+
<literal>p</literal>����<literal>c</literal>�ւ̃����N��쐬����<literal>UPDATE</literal>
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ����͔�����I�Ȃ����ł͂Ȃ��A<literal>parent_id</literal> �J�����ɂ�����
<literal>NOT NULL</literal> ����Ɉᔽ���܂��B
+ �R���N�V�����̃}�b�s���O��
<literal>not-null="true"</literal>
�Ǝw�肷�邱�ƂŁAnull����ᔽ������邱�Ƃ��ł��܂�:
+ </para>
+
+ <programlisting><![CDATA[<set name="children">
+ <key column="parent_id" not-null="true"/>
+ <one-to-many class="Child"/>
+</set>]]></programlisting>
+
+ <para>
+ ���������̉���͐����ł��܂���B
+ </para>
+ <para>
+ ���̓���̍��{�I�Ȍ����́A<literal>p</literal> ����
<literal>c</literal> �ւ̃����N
+ �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
+ </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)
+ </para>
+
+ <para>
+ ����ł� <literal>Child</literal>
�G���e�B�e�B�������N�̏�Ԃ𐧌䂷��悤�ɂȂ����̂ŁA
+ �R���N�V�����������N��X�V���Ȃ��悤�ɂ��܂��傤�B����ɂ�
<literal>inverse</literal> ������g���܂��B
+ </para>
+
+ <programlisting><![CDATA[<set name="children"
inverse="true">
+ <key column="parent_id"/>
+ <one-to-many class="Child"/>
+</set>]]></programlisting>
+
+ <para>
+ �ȉ��̃R�[�h��g���A�V���� <literal>Child</literal>
��lj����邱�Ƃ��ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class,
pid);
+Child c = new Child();
+c.setParent(p);
+p.getChildren().add(c);
+session.save(c);
+session.flush();]]></programlisting>
+
+ <para>
+ ����ɂ��ASQL�� <literal>INSERT</literal>
��������������s�����悤�ɂȂ�܂����I
+ </para>
+
+ <para>
+ ���������������ɂ́A<literal>Parent</literal> ��
<literal>addChild()</literal> ���\�b�h��쐬���܂��B
+ </para>
+
+ <programlisting><![CDATA[public void addChild(Child c) {
+ c.setParent(this);
+ children.add(c);
+}]]></programlisting>
+
+ <para>
+ <literal>Child</literal> ��lj�����R�[�h�͂��̂悤�ɂȂ�܂��B
+ </para>
+
+ <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class,
pid);
+Child c = new Child();
+p.addChild(c);
+session.save(c);
+session.flush();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="example-parentchild-cascades">
+ <title>���C�t�T�C�N���̃J�X�P�[�h</title>
+
+ <para>
+ �����I�� <literal>save()</literal>
��R�[������̂͂܂��ς킵����̂ł��B�����J�X�P�[�h��g���đΏ����܂��B
+ </para>
+
+ <programlisting><![CDATA[<set name="children"
inverse="true" cascade="all">
+ <key column="parent_id"/>
+ <one-to-many class="Child"/>
+</set>]]></programlisting>
+
+ <para>
+ ����ɂ���قǂ̃R�[�h���̂悤�ɒP�������܂�
+ </para>
+
+ <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class,
pid);
+Child c = new Child();
+p.addChild(c);
+session.flush();]]></programlisting>
+
+ <para>
+ ���l�� <literal>Parent</literal>
��ۑ��܂��͍폜����Ƃ��ɁA�q��������o���Ĉ����K�v�͂���܂���B
+ �ȉ��̃R�[�h�� <literal>p</literal>
��폜���A�����ăf�[�^�x�[�X���炻�̎q�����ׂč폜���܂��B
+ </para>
+
+ <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class,
pid);
+session.delete(p);
+session.flush();]]></programlisting>
+
+ <para>
+ ���������̃R�[�h��
+ </para>
+
+ <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class,
pid);
+Child c = (Child) p.getChildren().iterator().next();
+p.getChildren().remove(c);
+c.setParent(null);
+session.flush();]]></programlisting>
+
+ <para>
+ �f�[�^�x�[�X���� <literal>c</literal>
��폜���܂���B<literal>p</literal> �ւ̃����N��폜����
+ �i�����Ă��̃P�[�X�ł� <literal>NOT NULL</literal>
����ᔽ������N�����j�����ł��B
+ <literal>Child</literal> ��
<literal>delete()</literal> ������K�v������܂��B
+ </para>
+
+ <programlisting><![CDATA[Parent p = (Parent) session.load(Parent.class,
pid);
+Child c = (Child) p.getChildren().iterator().next();
+p.getChildren().remove(c);
+session.delete(c);
+session.flush();]]></programlisting>
+
+ <para>
+ �����̃P�[�X�ł͎��ۂ� <literal>Child</literal>
���e�Ȃ��ł͑��݂ł��Ȃ��悤�ɂȂ�܂����B
+ ���̂��߁A����R���N�V�������� <literal>Child</literal>
���菜���ꍇ�A�����폜�������ł��B
+ ���̂��߂ɂ�
<literal>cascade="all-delete-orphan"</literal> ��g��Ȃ���Ȃ�܂���B
+ </para>
+
+ <programlisting><![CDATA[<set name="children"
inverse="true" cascade="all-delete-orphan">
+ <key column="parent_id"/>
+ <one-to-many class="Child"/>
+</set>]]></programlisting>
+
+ <para>
+ ���Ӂ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
+ </para>
+
+ </sect1>
+
+ <sect1 id="example-parentchild-update">
+ <title>�J�X�P�[�h��
<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
+ </para>
+
+ <para>
+ �ȉ��̃R�[�h�� <literal>parent</literal> ��
<literal>child</literal> ��X�V���A<literal>newChild</literal>
��}�����܂��B
+ </para>
+
+ <programlisting><![CDATA[//parent and child were both loaded in a
previous session
+//parent��child�͗����Ƃ�A�ȑO��Session�Ń��[�h����Ă��܂�
+parent.addChild(child);
+Child newChild = new Child();
+parent.addChild(newChild);
+session.update(parent);
+session.flush();]]></programlisting>
+
+ <para>
+
�����͐������ꂽ���ʎq�̏ꍇ�ɂ͔��ɗǂ��̂ł����A���蓖�Ă�ꂽ���ʎq�ƕ������ʎq�̏ꍇ�͂ǂ��ł��傤���H
+
�����Hibernate���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
+ </para>
+
+ <!-- undocumenting
+ <para>
+ There is one further possibility. The
<literal>Interceptor</literal> method named
+ <literal>isUnsaved()</literal> lets the application implement
its own strategy for distinguishing
+ newly instantiated objects. For example, you could define a base class for
your persistent classes.
+ </para>
+
+ <programlisting><![CDATA[public class Persistent {
+ private boolean _saved = false;
+ public void onSave() {
+ _saved=true;
+ }
+ public void onLoad() {
+ _saved=true;
+ }
+ ......
+ public boolean isSaved() {
+ return _saved;
+ }
+}]]></programlisting>
+
+ <para>
+ (The <literal>saved</literal> property is non-persistent.)
+ Now implement <literal>isUnsaved()</literal>, along with
<literal>onLoad()</literal>
+ and <literal>onSave()</literal> as follows.
+ </para>
+
+ <programlisting><![CDATA[public Boolean isUnsaved(Object entity) {
+ if (entity instanceof Persistent) {
+ return new Boolean( !( (Persistent) entity ).isSaved() );
+ }
+ else {
+ return null;
+ }
+}
+
+public boolean onLoad(Object entity,
+ Serializable id,
+ Object[] state,
+ String[] propertyNames,
+ Type[] types) {
+
+ if (entity instanceof Persistent) ( (Persistent) entity ).onLoad();
+ return false;
+}
+
+public boolean onSave(Object entity,
+ Serializable id,
+ Object[] state,
+ String[] propertyNames,
+ Type[] types) {
+
+ if (entity instanceof Persistent) ( (Persistent) entity ).onSave();
+ return false;
+}]]></programlisting>
+
+ <para>
+ Don't worry; in Hibernate3 you don't need to write any of this kind
of code if you don't want to.
+ </para>
+ -->
+ </sect1>
+
+ <sect1 id="example-parentchild-conclusion">
+ <title>���_
+ </title>
+
+ <para>
+ �����ł͂��Ȃ�̗ʂ�v���̂ŁA�ŏ��̍��͍������Ă���悤�Ɏv���邩�����܂���B
+
���������ۂ́A���ׂĔ��ɗǂ����삵�܂��B�قƂ�ǂ�Hibernate�A�v���P�[�V�����ł́A�����̏�ʂŐe�q�p�^�[����g�p���܂��B
+ </para>
+
+ <para>
+ �ŏ��̒i���ő�֕��@�ɂ��ĐG��܂����B��L�̂悤�Ȗ���
<literal><composite-element></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���ƂȂ�ׂ��ł͂Ȃ��Ƃ������Ƃł�
+ </para>
+
+ </sect1>
+
+</chapter>
\ No newline at end of file
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_weblog.xml
(from rev 14075,
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/example_weblog.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_weblog.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/example_weblog.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,433 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="example-weblog">
+ <title>��: Weblog�A�v���P�[�V����</title>
+
+ <sect1 id="example-weblog-classes">
+ <title>�i���N���X
+ </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
+ </para>
+
+ <programlisting><![CDATA[package eg;
+
+import java.util.List;
+
+public class Blog {
+ private Long _id;
+ private String _name;
+ private List _items;
+
+ public Long getId() {
+ return _id;
+ }
+ public List getItems() {
+ return _items;
+ }
+ public String getName() {
+ return _name;
+ }
+ public void setId(Long long1) {
+ _id = long1;
+ }
+ public void setItems(List list) {
+ _items = list;
+ }
+ public void setName(String string) {
+ _name = string;
+ }
+}]]></programlisting>
+
+ <programlisting><![CDATA[package eg;
+
+import java.text.DateFormat;
+import java.util.Calendar;
+
+public class BlogItem {
+ private Long _id;
+ private Calendar _datetime;
+ private String _text;
+ private String _title;
+ private Blog _blog;
+
+ public Blog getBlog() {
+ return _blog;
+ }
+ public Calendar getDatetime() {
+ return _datetime;
+ }
+ public Long getId() {
+ return _id;
+ }
+ public String getText() {
+ return _text;
+ }
+ public String getTitle() {
+ return _title;
+ }
+ public void setBlog(Blog blog) {
+ _blog = blog;
+ }
+ public void setDatetime(Calendar calendar) {
+ _datetime = calendar;
+ }
+ public void setId(Long long1) {
+ _id = long1;
+ }
+ public void setText(String string) {
+ _text = string;
+ }
+ public void setTitle(String string) {
+ _title = string;
+ }
+}]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="example-weblog-mappings">
+ <title>Hibernate�̃}�b�s���O
+ </title>
+
+ <para>
+ XML�}�b�s���O�́A���ł͂ƂĂ�ȒP�Ȃ͂��ł��B
+ </para>
+
+ <programlisting><![CDATA[<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="eg">
+
+ <class
+ name="Blog"
+ table="BLOGS">
+
+ <id
+ name="id"
+ column="BLOG_ID">
+
+ <generator class="native"/>
+
+ </id>
+
+ <property
+ name="name"
+ column="NAME"
+ not-null="true"
+ unique="true"/>
+
+ <bag
+ name="items"
+ inverse="true"
+ order-by="DATE_TIME"
+ cascade="all">
+
+ <key column="BLOG_ID"/>
+ <one-to-many class="BlogItem"/>
+
+ </bag>
+
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <programlisting><![CDATA[<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="eg">
+
+ <class
+ name="BlogItem"
+ table="BLOG_ITEMS"
+ dynamic-update="true">
+
+ <id
+ name="id"
+ column="BLOG_ITEM_ID">
+
+ <generator class="native"/>
+
+ </id>
+
+ <property
+ name="title"
+ column="TITLE"
+ not-null="true"/>
+
+ <property
+ name="text"
+ column="TEXT"
+ not-null="true"/>
+
+ <property
+ name="datetime"
+ column="DATE_TIME"
+ not-null="true"/>
+
+ <many-to-one
+ name="blog"
+ column="BLOG_ID"
+ not-null="true"/>
+
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="example-weblog-code">
+ <title>Hibernate�̃R�[�h</title>
+
+ <para>
+ �ȉ��̃N���X�́A
+ Hibernate�ł����̃N���X��g���Ăł��邱�Ƃ����������Ă��܂��B
+ </para>
+
+ <programlisting><![CDATA[package eg;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Iterator;
+import java.util.List;
+
+import org.hibernate.HibernateException;
+import org.hibernate.Query;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.tool.hbm2ddl.SchemaExport;
+
+public class BlogMain {
+
+ private SessionFactory _sessions;
+
+ public void configure() throws HibernateException {
+ _sessions = new Configuration()
+ .addClass(Blog.class)
+ .addClass(BlogItem.class)
+ .buildSessionFactory();
+ }
+
+ public void exportTables() throws HibernateException {
+ Configuration cfg = new Configuration()
+ .addClass(Blog.class)
+ .addClass(BlogItem.class);
+ new SchemaExport(cfg).create(true, true);
+ }
+
+ public Blog createBlog(String name) throws HibernateException {
+
+ Blog blog = new Blog();
+ blog.setName(name);
+ blog.setItems( new ArrayList() );
+
+ Session session = _sessions.openSession();
+ Transaction tx = null;
+ try {
+ tx = session.beginTransaction();
+ session.persist(blog);
+ tx.commit();
+ }
+ catch (HibernateException he) {
+ if (tx!=null) tx.rollback();
+ throw he;
+ }
+ finally {
+ session.close();
+ }
+ return blog;
+ }
+
+ public BlogItem createBlogItem(Blog blog, String title, String text)
+ throws HibernateException {
+
+ BlogItem item = new BlogItem();
+ item.setTitle(title);
+ item.setText(text);
+ item.setBlog(blog);
+ item.setDatetime( Calendar.getInstance() );
+ blog.getItems().add(item);
+
+ Session session = _sessions.openSession();
+ Transaction tx = null;
+ try {
+ tx = session.beginTransaction();
+ session.update(blog);
+ tx.commit();
+ }
+ catch (HibernateException he) {
+ if (tx!=null) tx.rollback();
+ throw he;
+ }
+ finally {
+ session.close();
+ }
+ return item;
+ }
+
+ public BlogItem createBlogItem(Long blogid, String title, String text)
+ throws HibernateException {
+
+ BlogItem item = new BlogItem();
+ item.setTitle(title);
+ item.setText(text);
+ item.setDatetime( Calendar.getInstance() );
+
+ Session session = _sessions.openSession();
+ Transaction tx = null;
+ try {
+ tx = session.beginTransaction();
+ Blog blog = (Blog) session.load(Blog.class, blogid);
+ item.setBlog(blog);
+ blog.getItems().add(item);
+ tx.commit();
+ }
+ catch (HibernateException he) {
+ if (tx!=null) tx.rollback();
+ throw he;
+ }
+ finally {
+ session.close();
+ }
+ return item;
+ }
+
+ public void updateBlogItem(BlogItem item, String text)
+ throws HibernateException {
+
+ item.setText(text);
+
+ Session session = _sessions.openSession();
+ Transaction tx = null;
+ try {
+ tx = session.beginTransaction();
+ session.update(item);
+ tx.commit();
+ }
+ catch (HibernateException he) {
+ if (tx!=null) tx.rollback();
+ throw he;
+ }
+ finally {
+ session.close();
+ }
+ }
+
+ public void updateBlogItem(Long itemid, String text)
+ throws HibernateException {
+
+ Session session = _sessions.openSession();
+ Transaction tx = null;
+ try {
+ tx = session.beginTransaction();
+ BlogItem item = (BlogItem) session.load(BlogItem.class, itemid);
+ item.setText(text);
+ tx.commit();
+ }
+ catch (HibernateException he) {
+ if (tx!=null) tx.rollback();
+ throw he;
+ }
+ finally {
+ session.close();
+ }
+ }
+
+ public List listAllBlogNamesAndItemCounts(int max)
+ throws HibernateException {
+
+ Session session = _sessions.openSession();
+ Transaction tx = null;
+ List result = null;
+ try {
+ tx = session.beginTransaction();
+ Query q = session.createQuery(
+ "select blog.id, blog.name, count(blogItem) " +
+ "from Blog as blog " +
+ "left outer join blog.items as blogItem " +
+ "group by blog.name, blog.id " +
+ "order by max(blogItem.datetime)"
+ );
+ q.setMaxResults(max);
+ result = q.list();
+ tx.commit();
+ }
+ catch (HibernateException he) {
+ if (tx!=null) tx.rollback();
+ throw he;
+ }
+ finally {
+ session.close();
+ }
+ return result;
+ }
+
+ public Blog getBlogAndAllItems(Long blogid)
+ throws HibernateException {
+
+ Session session = _sessions.openSession();
+ Transaction tx = null;
+ Blog blog = null;
+ try {
+ tx = session.beginTransaction();
+ Query q = session.createQuery(
+ "from Blog as blog " +
+ "left outer join fetch blog.items " +
+ "where blog.id = :blogid"
+ );
+ q.setParameter("blogid", blogid);
+ blog = (Blog) q.uniqueResult();
+ tx.commit();
+ }
+ catch (HibernateException he) {
+ if (tx!=null) tx.rollback();
+ throw he;
+ }
+ finally {
+ session.close();
+ }
+ return blog;
+ }
+
+ public List listBlogsAndRecentItems() throws HibernateException {
+
+ Session session = _sessions.openSession();
+ Transaction tx = null;
+ List result = null;
+ try {
+ tx = session.beginTransaction();
+ Query q = session.createQuery(
+ "from Blog as blog " +
+ "inner join blog.items as blogItem " +
+ "where blogItem.datetime > :minDate"
+ );
+
+ Calendar cal = Calendar.getInstance();
+ cal.roll(Calendar.MONTH, false);
+ q.setCalendar("minDate", cal);
+
+ result = q.list();
+ tx.commit();
+ }
+ catch (HibernateException he) {
+ if (tx!=null) tx.rollback();
+ throw he;
+ }
+ finally {
+ session.close();
+ }
+ return result;
+ }
+}]]></programlisting>
+
+ </sect1>
+
+</chapter>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/filters.xml (from
rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/filters.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/filters.xml
(rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/filters.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,137 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="filters">
+ <title>�f�[�^�̃t�B���^�����O</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
+ </para>
+
+ <sect1 id="objectstate-filters">
+ <title>Hibernate�̃t�B���^</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
+
+ </para>
+
+ <para>
+ �t�B���^��g�����߂ɂ͂܂��A�K�ȃ}�b�s���O�v�f�ɒ�`�A�lj����Ȃ��Ă͂Ȃ�܂���B
+ �t�B���^���`���邽�߂ɂ́A
+ <literal><hibernate-mapping/></literal> �v�f���
<literal><filter-def/></literal> �v�f��g�p���܂��B�F
+ </para>
+
+ <programlisting><![CDATA[<filter-def name="myFilter">
+ <filter-param name="myFilterParam" type="string"/>
+</filter-def>]]></programlisting>
+
+ <para>
+ �������ăt�B���^�̓N���X�ւƌ��ѕt�����܂��B�F
+ </para>
+
+ <programlisting><![CDATA[<class name="myClass" ...>
+ ...
+ <filter name="myFilter" condition=":myFilterParam =
MY_FILTERED_COLUMN"/>
+</class>]]></programlisting>
+
+ <para>
+ �܂��A�R���N�V�����ɑ��Ă͎��̂悤�ɂȂ�܂��B�F
+ </para>
+
+ <programlisting><![CDATA[<set ...>
+ <filter name="myFilter" condition=":myFilterParam =
MY_FILTERED_COLUMN"/>
+</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
+ </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
+ </para>
+
+ <para>
+ �L���ȃ��R�[�h�f�[�^�p�^�[�����ꎞ�f�[�^��g�������S�ȗ�ł��F
+ </para>
+
+ <programlisting><![CDATA[<filter-def
name="effectiveDate">
+ <filter-param name="asOfDate" type="date"/>
+</filter-def>
+
+<class name="Employee" ...>
+...
+ <many-to-one name="department" column="dept_id"
class="Department"/>
+ <property name="effectiveStartDate" type="date"
column="eff_start_dt"/>
+ <property name="effectiveEndDate" type="date"
column="eff_end_dt"/>
+...
+ <!--
+ Note that this assumes non-terminal records have an eff_end_dt set to
+ a max db date for simplicity-sake
+
+
+ -->
+ <filter name="effectiveDate"
+ condition=":asOfDate BETWEEN eff_start_dt and eff_end_dt"/>
+</class>
+
+<class name="Department" ...>
+...
+ <set name="employees" lazy="true">
+ <key column="dept_id"/>
+ <one-to-many class="Employee"/>
+ <filter name="effectiveDate"
+ condition=":asOfDate BETWEEN eff_start_dt and eff_end_dt"/>
+ </set>
+</class>]]></programlisting>
+
+ <para>
+ ��Ɍ��݂̗L�����R�[�h��ԋp���邱�Ƃ�ۏ��邽�߂ɁA
+ �P���ɁA�Ј��f�[�^�̌������O�ɃZ�b�V������̃t�B���^��L���ɂ��܂��B
+
+
+ </para>
+
+<programlisting><![CDATA[Session session = ...;
+session.enabledFilter("effectiveDate").setParameter("asOfDate", new
Date());
+List results = session.createQuery("from Employee as e where e.salary >
:targetSalary")
+ .setLong("targetSalary", new Long(1000000))
+ .list();
+]]></programlisting>
+
+ <para>
+ ��L��HQL�ł́A���ʂ̋����̐���ɂ��Ė����I�ɐG�ꂽ�����ł����A
+
�L���ɂȂ��Ă���t�B���^�̂������ŁA���̃N�G���͋�����100���h���ȏ�̌���̎Ј�������Ԃ��܂��B
+ </para>
+
+ <para>
+ (HQL�����[�h�t�F�b�`�Łj�O���������t�B���^��g�����Ȃ�A
+ �����̕����ɒ��ӂ��Ă��������B
+
+ ����͍��O�������̂��߂ɐݒ肷��̂��ł���S�ł��B
+ ��ʓI�ɁA���Z�q�̌�J�������ɑ����čŏ��̃p�����[�^��z�u���Ă��������B
+ </para>
+
+ </sect1>
+
+</chapter>
+
Copied:
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/inheritance_mapping.xml
(from rev 14075,
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/inheritance_mapping.xml)
===================================================================
---
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/inheritance_mapping.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/inheritance_mapping.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,487 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="inheritance">
+ <title>�p���}�b�s���O</title>
+
+ <sect1 id="inheritance-strategies" revision="3">
+ <title>3�̐헪</title>
+
+ <para>
+ Hibernate��3�̊�{�I�Ȍp���̃}�b�s���O�헪��T�|�[�g���܂��B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ �N���X�K�w���Ƃ̃e�[�u���itable-per-class-hierarchy�j
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ �T�u�N���X���Ƃ̃e�[�u���itable-per-subclass�j
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ��ۃN���X���Ƃ̃e�[�u���itable-per-concrete-class�j
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ������4�ڂɁAHibernate�͂킸���ɈقȂ鐫���������|�����[�t�B�Y����T�|�[�g���܂��B
+ </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><class></literal> �v�f���
+ <literal><subclass></literal>
�}�b�s���O�A<literal><joined-subclass></literal> �}�b�s���O�A
+ <literal><union-subclass></literal>
�}�b�s���O�̓����g�p��T�|�[�g���Ă��܂���B
+ <literal><subclass></literal> �v�f��
<literal><join></literal> �v�f��g�ݍ��킹�邱�ƂŁA
+ ���� <literal><class></literal> �v�f��ł�
table-per-hierarchy �헪��
+ table-per-subclass �헪�̓����g�p�͉\�ł��B���̗���Ă��������B
+ </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
+
+ �P�̃}�b�s���O�t�@�C����ŏ��ԕt����s���Ƃ��́A
+ �ˑR�Ƃ��āA�T�u�N���X���`����O�ɃX�[�p�[�N���X���`����K�v������܂��B)
+ </para>
+
+ <programlisting><![CDATA[
+ <hibernate-mapping>
+ <subclass name="DomesticCat" extends="Cat"
discriminator-value="D">
+ <property name="name" type="string"/>
+ </subclass>
+ </hibernate-mapping>]]></programlisting>
+
+
+ <sect2 id="inheritance-tableperclass" >
+ <title>�N���X�K�w���Ƃ̃e�[�u���itable-per-class-hierarchy�j</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
+ </para>
+
+ <programlisting><![CDATA[<class name="Payment"
table="PAYMENT">
+ <id name="id" type="long" column="PAYMENT_ID">
+ <generator class="native"/>
+ </id>
+ <discriminator column="PAYMENT_TYPE" type="string"/>
+ <property name="amount" column="AMOUNT"/>
+ ...
+ <subclass name="CreditCardPayment"
discriminator-value="CREDIT">
+ <property name="creditCardType" column="CCTYPE"/>
+ ...
+ </subclass>
+ <subclass name="CashPayment" discriminator-value="CASH">
+ ...
+ </subclass>
+ <subclass name="ChequePayment"
discriminator-value="CHEQUE">
+ ...
+ </subclass>
+</class>]]></programlisting>
+
+ <para>
+ ���傤�Lj�̃e�[�u�����K�v�ł��B
+ ���̃}�b�s���O�헪�ɂ͈�傫�Ȑ���������܂��B
+ <literal>CCTYPE</literal> �̂悤�ȁA�T�u�N���X�Ő錾���ꂽ�J������
<literal>NOT NULL</literal>
+ ������Ă܂���B
+ </para>
+
+ </sect2>
+
+ <sect2 id="inheritance-tablepersubclass">
+ <title>�T�u�N���X���Ƃ̃e�[�u���itable-per-subclass�j</title>
+
+ <para>
+ table-per-subclass �}�b�s���O�͈ȉ��̂悤�ɂȂ�܂��B
+ </para>
+
+ <programlisting><![CDATA[<class name="Payment"
table="PAYMENT">
+ <id name="id" type="long" column="PAYMENT_ID">
+ <generator class="native"/>
+ </id>
+ <property name="amount" column="AMOUNT"/>
+ ...
+ <joined-subclass name="CreditCardPayment"
table="CREDIT_PAYMENT">
+ <key column="PAYMENT_ID"/>
+ <property name="creditCardType" column="CCTYPE"/>
+ ...
+ </joined-subclass>
+ <joined-subclass name="CashPayment" table="CASH_PAYMENT">
+ <key column="PAYMENT_ID"/>
+ ...
+ </joined-subclass>
+ <joined-subclass name="ChequePayment"
table="CHEQUE_PAYMENT">
+ <key column="PAYMENT_ID"/>
+ ...
+ </joined-subclass>
+</class>]]></programlisting>
+
+ <para>
+ ���̃}�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
+ </para>
+
+ </sect2>
+
+ <sect2 id="inheritance-tablepersubclass-discriminator"
revision="2">
+ <title>�ٕʎq��p���� 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><subclass></literal> ��
<literal><join></literal>
+ ��ȉ��̂悤�ɑg�ݍ��킹�Ďg���Ă��������B
+ </para>
+
+ <programlisting><![CDATA[<class name="Payment"
table="PAYMENT">
+ <id name="id" type="long" column="PAYMENT_ID">
+ <generator class="native"/>
+ </id>
+ <discriminator column="PAYMENT_TYPE" type="string"/>
+ <property name="amount" column="AMOUNT"/>
+ ...
+ <subclass name="CreditCardPayment"
discriminator-value="CREDIT">
+ <join table="CREDIT_PAYMENT">
+ <key column="PAYMENT_ID"/>
+ <property name="creditCardType" column="CCTYPE"/>
+ ...
+ </join>
+ </subclass>
+ <subclass name="CashPayment" discriminator-value="CASH">
+ <join table="CASH_PAYMENT">
+ <key column="PAYMENT_ID"/>
+ ...
+ </join>
+ </subclass>
+ <subclass name="ChequePayment"
discriminator-value="CHEQUE">
+ <join table="CHEQUE_PAYMENT" fetch="select">
+ <key column="PAYMENT_ID"/>
+ ...
+ </join>
+ </subclass>
+</class>]]></programlisting>
+
+ <para>
+ �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
+ </para>
+
+ </sect2>
+
+ <sect2 id="inheritance-mixing-tableperclass-tablepersubclass">
+ <title>table-per-subclass �� table-per-class-hierarchy �̍���</title>
+
+ <para>
+ ���̃A�v���[�`��g�p����ƁAtable-per-hierarchy �� table-per-subclass �헪��
+ �g�ݍ��킹�鎖��\�ł��B
+ </para>
+
+ <programlisting><![CDATA[<class name="Payment"
table="PAYMENT">
+ <id name="id" type="long" column="PAYMENT_ID">
+ <generator class="native"/>
+ </id>
+ <discriminator column="PAYMENT_TYPE" type="string"/>
+ <property name="amount" column="AMOUNT"/>
+ ...
+ <subclass name="CreditCardPayment"
discriminator-value="CREDIT">
+ <join table="CREDIT_PAYMENT">
+ <property name="creditCardType" column="CCTYPE"/>
+ ...
+ </join>
+ </subclass>
+ <subclass name="CashPayment" discriminator-value="CASH">
+ ...
+ </subclass>
+ <subclass name="ChequePayment"
discriminator-value="CHEQUE">
+ ...
+ </subclass>
+</class>]]></programlisting>
+
+ <para>
+ ������̃}�b�s���O�헪�ł����Ă�A���[�g�ł��� <literal>Payment</literal>
�N���X�ւ�
+ �|�����[�t�B�b�N�Ȋ֘A��
<literal><many-to-one></literal> ��g���ă}�b�s���O���܂��B
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="payment"
column="PAYMENT_ID" class="Payment"/>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="inheritance-tableperconcrete" revision="2">
+ <title>��ۃN���X���Ƃ̃e�[�u���itable-per-concrete-class�j</title>
+
+ <para>
+ table-per-concrete-class �헪�̃}�b�s���O�ɑ���A�v���[�`�́A2����܂��B
+ 1�ڂ� <literal><union-subclass></literal>
�𗘗p������@�ł��B
+ </para>
+
+ <programlisting><![CDATA[<class name="Payment">
+ <id name="id" type="long" column="PAYMENT_ID">
+ <generator class="sequence"/>
+ </id>
+ <property name="amount" column="AMOUNT"/>
+ ...
+ <union-subclass name="CreditCardPayment"
table="CREDIT_PAYMENT">
+ <property name="creditCardType" column="CCTYPE"/>
+ ...
+ </union-subclass>
+ <union-subclass name="CashPayment" table="CASH_PAYMENT">
+ ...
+ </union-subclass>
+ <union-subclass name="ChequePayment"
table="CHEQUE_PAYMENT">
+ ...
+ </union-subclass>
+</class>]]></programlisting>
+
+ <para>
+ �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
+ </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
+ <union-subclass> ��g���� table-per-concrete-class
�헪�ł͎��ʎq�����헪��g�p�ł��܂���B
+ ��L�[�����邽�߂̃V�[�h�́A�S�Ă� union subclass �̊K�w��ŋ��L����K�v�����邩��ł��B
+ </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
+ </para>
+
+ </sect2>
+
+ <sect2 id="inheritance-tableperconcreate-polymorphism">
+ <title>�ÖٓI�|�����[�t�B�Y����p���� table-per-concrete-class</title>
+
+ <para>
+ �����̃A�v���[�`�͈ÖٓI�|�����[�t�B�Y���̎g�p�ł��B
+ </para>
+
+ <programlisting><![CDATA[<class name="CreditCardPayment"
table="CREDIT_PAYMENT">
+ <id name="id" type="long"
column="CREDIT_PAYMENT_ID">
+ <generator class="native"/>
+ </id>
+ <property name="amount" column="CREDIT_AMOUNT"/>
+ ...
+</class>
+
+<class name="CashPayment" table="CASH_PAYMENT">
+ <id name="id" type="long"
column="CASH_PAYMENT_ID">
+ <generator class="native"/>
+ </id>
+ <property name="amount" column="CASH_AMOUNT"/>
+ ...
+</class>
+
+<class name="ChequePayment" table="CHEQUE_PAYMENT">
+ <id name="id" type="long"
column="CHEQUE_PAYMENT_ID">
+ <generator class="native"/>
+ </id>
+ <property name="amount" column="CHEQUE_AMOUNT"/>
+ ...
+</class>]]></programlisting>
+
+ <para>
+ <literal>Payment</literal>
�C���^�[�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>[
<!ENTITY allproperties SYSTEM "allproperties.xml">
]</literal>
+ �ƁA�}�b�s���O�ɂ�����
<literal>&allproperties;</literal>�j
+ </para>
+
+ <para>
+ ���̃A�v���[�`�̌��_�́AHibernate���|�����[�t�B�b�N�ȃN�G���̎��s����SQL
<literal>UNION</literal>
+ �����Ȃ��_�ł��B
+ </para>
+
+ <para>
+ ���̃}�b�s���O�헪�ɑ��ẮA<literal>Payment</literal>
�ւ̃|�����[�t�B�b�N�Ȋ֘A��
+ �ʏ�A<literal><any></literal>
��g���ă}�b�s���O����܂��B
+ </para>
+
+ <programlisting><![CDATA[<any name="payment"
meta-type="string" id-type="long">
+ <meta-value value="CREDIT" class="CreditCardPayment"/>
+ <meta-value value="CASH" class="CashPayment"/>
+ <meta-value value="CHEQUE" class="ChequePayment"/>
+ <column name="PAYMENT_CLASS"/>
+ <column name="PAYMENT_ID"/>
+</any>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="inheritace-mixingpolymorphism">
+ <title>���̌p���}�b�s���O�ƈÖٓI�|�����[�t�B�Y���̑g�ݍ��킹</title>
+
+ <para>
+ ���̃}�b�s���O�ɂ��Ă̍X�Ȃ钍�ӓ_������܂��B
+ �T�u�N���X�����g�� <literal><class></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
+ </para>
+
+ <programlisting><![CDATA[<class name="CreditCardPayment"
table="CREDIT_PAYMENT">
+ <id name="id" type="long"
column="CREDIT_PAYMENT_ID">
+ <generator class="native"/>
+ </id>
+ <discriminator column="CREDIT_CARD" type="string"/>
+ <property name="amount" column="CREDIT_AMOUNT"/>
+ ...
+ <subclass name="MasterCardPayment"
discriminator-value="MDC"/>
+ <subclass name="VisaPayment" discriminator-value="VISA"/>
+</class>
+
+<class name="NonelectronicTransaction"
table="NONELECTRONIC_TXN">
+ <id name="id" type="long" column="TXN_ID">
+ <generator class="native"/>
+ </id>
+ ...
+ <joined-subclass name="CashPayment" table="CASH_PAYMENT">
+ <key column="PAYMENT_ID"/>
+ <property name="amount" column="CASH_AMOUNT"/>
+ ...
+ </joined-subclass>
+ <joined-subclass name="ChequePayment"
table="CHEQUE_PAYMENT">
+ <key column="PAYMENT_ID"/>
+ <property name="amount" column="CHEQUE_AMOUNT"/>
+ ...
+ </joined-subclass>
+</class>]]></programlisting>
+
+ <para>
+ �����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
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="inheritance-limitations">
+ <title>����</title>
+
+ <para>
+ table-per-concrete-class �}�b�s���O�헪�ւ́u�ÖٓI�|�����[�t�B�Y���v�A�v���[�`�ɂ�
+
�������̐���������܂��B<literal><union-subclass></literal>
�}�b�s���O�ɑ��Ă�
+ ������߂̐���������܂��B
+ </para>
+
+ <para>
+ ���̃e�[�u���ɁAHibernate�ɂ�����table-per-concrete-class�}�b�s���O��
+ ������ÖٓI�|�����[�t�B�Y���̐��������܂��B
+ </para>
+
+ <table frame="topbot">
+ <title>�p���}�b�s���O�̋@�\</title>
+ <tgroup cols='8' align='left' colsep='1'
rowsep='1'>
+ <colspec colname='c1' colwidth="1*"/>
+ <colspec colname='c2' colwidth="1*"/>
+ <colspec colname='c3' colwidth="1*"/>
+ <colspec colname='c4' colwidth="1*"/>
+ <colspec colname='c5' colwidth="1*"/>
+ <colspec colname='c6' colwidth="1*"/>
+ <colspec colname='c7' colwidth="1*"/>
+ <colspec colname='c8' colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>�p���헪</entry>
+ <entry>���Έ�̃|�����[�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>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>table per class-hierarchy</entry>
+
<entry><literal><many-to-one></literal></entry>
+
<entry><literal><one-to-one></literal></entry>
+
<entry><literal><one-to-many></literal></entry>
+
<entry><literal><many-to-many></literal></entry>
+ <entry><literal>s.get(Payment.class,
id)</literal></entry>
+ <entry><literal>from Payment p</literal></entry>
+ <entry><literal>from Order o join o.payment
p</literal></entry>
+ <entry><emphasis>�T�|�[�g</emphasis></entry>
+ </row>
+ <row>
+ <entry>table per subclass</entry>
+
<entry><literal><many-to-one></literal></entry>
+
<entry><literal><one-to-one></literal></entry>
+
<entry><literal><one-to-many></literal></entry>
+
<entry><literal><many-to-many></literal></entry>
+ <entry><literal>s.get(Payment.class,
id)</literal></entry>
+ <entry><literal>from Payment p</literal></entry>
+ <entry><literal>from Order o join o.payment
p</literal></entry>
+ <entry><emphasis>�T�|�[�g</emphasis></entry>
+ </row>
+ <row>
+ <entry>table per concrete-class (union-subclass)</entry>
+
<entry><literal><many-to-one></literal></entry>
+
<entry><literal><one-to-one></literal></entry>
+ <entry><literal><one-to-many></literal>
(for <literal>inverse="true"</literal> only)</entry>
+
<entry><literal><many-to-many></literal></entry>
+ <entry><literal>s.get(Payment.class,
id)</literal></entry>
+ <entry><literal>from Payment p</literal></entry>
+ <entry><literal>from Order o join o.payment
p</literal></entry>
+ <entry><emphasis>�T�|�[�g</emphasis></entry>
+ </row>
+ <row>
+ <entry>table per concrete class (implicit
polymorphism)</entry>
+
<entry><literal><any></literal></entry>
+
<entry><emphasis>�T�|�[�g���Ă��܂���</emphasis></entry>
+
<entry><emphasis>�T�|�[�g���Ă��܂���</emphasis></entry>
+
<entry><literal><many-to-any></literal></entry>
+ <entry><literal>s.createCriteria(Payment.class).add(
Restrictions.idEq(id) ).uniqueResult()</literal></entry>
+ <entry><literal>from Payment p</literal></entry>
+
<entry><emphasis>�T�|�[�g���Ă��܂���</emphasis></entry>
+
<entry><emphasis>�T�|�[�g���Ă��܂���</emphasis></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </sect1>
+
+</chapter>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/performance.xml
(from rev 14075,
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/performance.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/performance.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/performance.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,1378 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="performance">
+ <title>�p�t�H�[�}���X�̉��P</title>
+
+ <sect1 id="performance-fetching" revision="2">
+ <title>�t�F�b�`�헪</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
+ </para>
+
+ <para>
+ Hibernate3�͎��Ɏ����t�F�b�`�헪���`���Ă��܂��B
+ </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
+ </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
+ </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
+ </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
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ Hibernate�͎��Ɏ����헪�Ƃ��ʂ��܂��B
+ </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
+ </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�̓���ł�)
+ </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
+ </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
+ </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
+ </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
+ </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
+ </para>
+
+ <sect2 id="performance-fetching-lazy">
+ <title>�x���֘A�̓���</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
+ </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
+ </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
+ </para>
+
+ <programlisting><![CDATA[s = sessions.openSession();
+Transaction tx = s.beginTransaction();
+
+User u = (User) s.createQuery("from User u where u.name=:userName")
+ .setString("userName", userName).uniqueResult();
+Map permissions = u.getPermissions();
+
+tx.commit();
+s.close();
+
+Integer accessLevel = (Integer) permissions.get("accounts"); //
Error!]]></programlisting>
+
+ <para>
+ <literal>Session</literal>
���N���[�Y���ꂽ�Ƃ��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
+ </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
+ </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
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-fetching-custom" revision="4">
+ <title>�t�F�b�`�헪�̃`���[�j���O</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
+ </para>
+
+ <programlisting><![CDATA[<set name="permissions"
+ fetch="join">
+ <key column="userId"/>
+ <one-to-many class="Permission"/>
+</set]]></programlisting>
+
+ <programlisting><![CDATA[<many-to-one name="mother"
class="Cat" fetch="join"/>]]></programlisting>
+
+ <para>
+ �}�b�s���O��`�Œ�`���� <literal>�t�F�b�`</literal>
�헪�͎��̂�̂ɉe�����܂��B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <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��
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>�T�u�Z���N�g</literal> �t�F�b�`��g��HQL�N�G��
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ���Ƃ��ǂ�ȃt�F�b�`�헪��g�����Ƃ��Ă�A�x���ł͂Ȃ��O���t�̓������ɓǂݍ��܂�邱�Ƃ�
+ �ۏ���܂��B�܂�A�����HQL�N�G������s���邽�߂ɂ�������SELECT�����������s�����
+ ���Ƃ�����̂Œ��ӂ��Ă��������B
+ </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
+ </para>
+
+ <para>
+ ��� <literal>get()</literal> ��
<literal>load()</literal> �Ŏg����
+ �t�F�b�`�헪��ς������Ɗ������Ƃ��ɂ́A�P����
+ <literal>Criteria</literal> �N�G����g�����������B��F
+ </para>
+
+ <programlisting><![CDATA[User user = (User)
session.createCriteria(User.class)
+ .setFetchMode("permissions", FetchMode.JOIN)
+ .add( Restrictions.idEq(userId) )
+ .uniqueResult();]]></programlisting>
+
+ <para>
+ �i����͂�������ORM�\�����[�V������"fetch
plan"�ƌĂ�ł����̂Ɠ����ł��B�j
+ </para>
+
+ <para>
+ N+1�Z���N�g������邽�߂̂܂������Ⴄ���@�́A��2���x���L���b�V����g�����Ƃł��B
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-fetching-proxies" revision="2">
+ <title>�P��[�֘A�v���L�V</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
+ </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
+ </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>
+ </para>
+
+ <para>
+
�|�����[�t�B�Y���̃N���X�ɑ��Ă��̕��@��K�p����Ƃ��ɂ������l�����邱�Ƃ�����܂��B
+ ��F
+ </para>
+
+ <programlisting><![CDATA[<class name="Cat"
proxy="Cat">
+ ......
+ <subclass name="DomesticCat">
+ .....
+ </subclass>
+</class>]]></programlisting>
+
+ <para>
+ ���ɁA <literal>Cat</literal> �̃C���X�^���X��
<literal>DomesticCat</literal>
+ �ɃL���X�g�ł��܂���B���Ƃ���ƂȂ�C���X�^���X��
<literal>DomesticCat</literal>
+ �ł������Ƃ��Ă�ł��B
+ </para>
+
+ <programlisting><![CDATA[Cat cat = (Cat) session.load(Cat.class,
id); // instantiate a proxy (does not hit the db)
+if ( cat.isDomesticCat() ) { // hit the db to initialize the proxy
+ DomesticCat dc = (DomesticCat) cat; // Error!
+ ....
+}]]></programlisting>
+
+ <para>
+ ���ɁA�v���L�V�� <literal>==</literal>
�͐������Ȃ����Ƃ�����܂��B
+ </para>
+
+ <programlisting><![CDATA[Cat cat = (Cat) session.load(Cat.class,
id); // instantiate a Cat proxy
+DomesticCat dc =
+ (DomesticCat) session.load(DomesticCat.class, id); // acquire new DomesticCat
proxy!
+System.out.println(cat==dc); //
false]]></programlisting>
+
+ <para>
+
�������A����͌������ق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
+ </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
+ </para>
+
+ <programlisting><![CDATA[<class name="CatImpl"
proxy="Cat">
+ ......
+ <subclass name="DomesticCatImpl" proxy="DomesticCat">
+ .....
+ </subclass>
+</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
+ </para>
+
+ <programlisting><![CDATA[Cat cat = (Cat) session.load(CatImpl.class,
catid);
+Iterator iter = session.createQuery("from CatImpl as cat where
cat.name='fritz'").iterate();
+Cat fritz = (Cat) iter.next();]]></programlisting>
+
+ <para>
+ �֘A��x������������܂��B����̓v���p�e�B�� <literal>Cat</literal>
�^�Ő錾���Ȃ����
+ �Ȃ�Ȃ����Ƃ�Ӗ����܂��B <literal>CatImpl</literal> �ł͂���܂���B
+ </para>
+
+ <para>
+ �v���L�V�̏������� <emphasis>�K�v�Ƃ��Ȃ�</emphasis>
�������݂��܂��B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>equals()</literal> �i�i���N���X��
<literal>equals()</literal> ��
+ �I�[�o�[���C�h���Ȃ��Ƃ��j
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>hashCode()</literal> �i�i���N���X��
<literal>hashCode()</literal> ��
+ �I�[�o�[���C�h���Ȃ��Ƃ��j
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ���ʎq��getter���\�b�h
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ Hibernate�� <literal>equals()</literal> ��
<literal>hashCode()</literal> ��I�[�o�[���C�h����
+ �i���N���X���o���܂��B
+ </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
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-fetching-initialization"
revision="1">
+ <title>�R���N�V�����ƃv���L�V�̏�����</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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </para>
+
+ <programlisting><![CDATA[s.createFilter( lazyCollection,
"").setFirstResult(0).setMaxResults(10).list();]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="performance-fetching-batch">
+ <title>�o�b�`�t�F�b�`�̎g�p</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
+ </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
+ </para>
+
+ <programlisting><![CDATA[<class name="Person"
batch-size="10">...</class>]]></programlisting>
+
+ <para>
+ Hibernate�̓N�G����R������s����悤�ɂȂ�܂��B�p�^�[����10, 10, 5�ł��B
+ </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
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <set name="cats" batch-size="3">
+ ...
+ </set>
+</class>]]></programlisting>
+
+ <para>
+ <literal>batch-size</literal> ��3�Ȃ̂ŁAHibernate��4���
<literal>SELECT</literal>
+ ��3�A3�A3�A1���[�h���܂��B�J��Ԃ��ƁA�����̒l�͓����
<literal>Session</literal>
+ �̒��̏���������Ă��Ȃ��R���N�V�����̊��Ґ��Ɉˑ����܂��B
+ </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
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-fetching-subselect">
+ <title>�T�u�Z���N�g�t�F�b�`�̎g�p</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
+ </para>
+
+ <!-- TODO: Write more about this -->
+ <!-- ���������� -->
+ </sect2>
+
+ <sect2 id="performance-fetching-lazyproperties">
+ <title>�x���v���p�e�B�t�F�b�`�̎g�p</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
+ </para>
+
+ <para>
+ �x���v���p�e�B�ǂݍ��݂�L���ɂ���ɂ́A�Ώۂ̃v���p�e�B�̃}�b�s���O��
<literal>lazy</literal>
+ ������Z�b�g�����������B
+ </para>
+
+ <programlisting><![CDATA[<class name="Document">
+ <id name="id">
+ <generator class="native"/>
+ </id>
+ <property name="name" not-null="true"
length="50"/>
+ <property name="summary" not-null="true"
length="200" lazy="true"/>
+ <property name="text" not-null="true" length="2000"
lazy="true"/>
+</class>]]></programlisting>
+
+ <para>
+ �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
+ </para>
+
+ <para>
+ �o�C�g�R�[�h�g�ݍ��݂͈ȉ���Ant�^�X�N��g���Ă��������B
+ </para>
+
+ <programlisting><![CDATA[<target name="instrument"
depends="compile">
+ <taskdef name="instrument"
classname="org.hibernate.tool.instrument.InstrumentTask">
+ <classpath path="${jar.path}"/>
+ <classpath path="${classes.dir}"/>
+ <classpath refid="lib.class.path"/>
+ </taskdef>
+
+ <instrument verbose="true">
+ <fileset dir="${testclasses.dir}/org/hibernate/auction/model">
+ <include name="*.class"/>
+ </fileset>
+ </instrument>
+</target>]]></programlisting>
+
+ <para>
+ �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
+ </para>
+
+ <para>
+ HQL�� <literal>fetch all properties</literal>
��g�����ƂŁA���ʂǂ����
+ �v���p�e�B�̑����t�F�b�`���O�������邱�Ƃ��o���܂��B
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="performance-cache" revision="1">
+ <title>��2���x���L���b�V��</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
+ </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
+ </para>
+
+ <table frame="topbot" id="cacheproviders"
revision="1">
+ <title>�L���b�V���v���o�C�_</title>
+ <tgroup cols='5' align='left' colsep='1'
rowsep='1'>
+ <colspec colname='c1' colwidth="1*"/>
+ <colspec colname='c2' colwidth="3*"/>
+ <colspec colname='c3' colwidth="1*"/>
+ <colspec colname='c4' colwidth="1*"/>
+ <colspec colname='c5' colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>�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>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>Hashtable�i���i�p�Ƃ��ĈӐ}���Ă��܂���j</entry>
+
<entry><literal>org.hibernate.cache.HashtableCacheProvider</literal></entry>
+ <entry>������</entry>
+ <entry></entry>
+ <entry>yes</entry>
+ </row>
+ <row>
+ <entry>EHCache</entry>
+
<entry><literal>org.hibernate.cache.EhCacheProvider</literal></entry>
+ <entry>�������A�f�B�X�N</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>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></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>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <sect2 id="performance-cache-mapping" revision="2">
+ <title>�L���b�V���̃}�b�s���O</title>
+
+ <para>
+ �N���X��R���N�V�����̃}�b�s���O��
<literal><cache></literal> �v�f�͈ȉ��̌`���ł��B
+ </para>
+
+ <programlistingco>
+ <areaspec>
+ <area id="cache1" coords="2 70"/>
+ <area id="cache2" coords="3 70"/>
+ <area id="cache3" coords="4 70"/>
+ </areaspec>
+ <programlisting><![CDATA[<cache
+ usage="transactional|read-write|nonstrict-read-write|read-only"
+ region="RegionName"
+ include="all|non-lazy"
+/>]]></programlisting>
+ <calloutlist>
+ <callout arearefs="cache1">
+ <para>
+ <literal>usage</literal> (required) specifies the
caching strategy:
+ <literal>transactional</literal>,
+ <literal>read-write</literal>,
+ <literal>nonstrict-read-write</literal> or
+ <literal>read-only</literal>
+ </para>
+ </callout>
+ <callout arearefs="cache2">
+ <para>
+ <literal>region</literal> (optional, defaults to
the class or
+ collection role name) specifies the name of the second level
cache
+ region
+ </para>
+ </callout>
+ <callout arearefs="cache3">
+ <para>
+ <literal>include</literal> (optional, defaults to
<literal>all</literal>)
+ <literal>non-lazy</literal> specifies that
properties of the entity mapped
+ with <literal>lazy="true"</literal> may
not be cached when attribute-level
+ lazy fetching is enabled
+ </para>
+ </callout>
+ </calloutlist>
+ </programlistingco>
+
+ <para>
+ �܂��́i���悢���@�Ƃ��āH�j�A <literal>hibernate.cfg.xml</literal>
�� <literal><class-cache></literal>
+ �� <literal><collection-cache></literal>
�v�f��w�肷�邱�Ƃ�o���܂��B
+ </para>
+
+ <para>
+ <literal>usage</literal> ������
<emphasis>�L���b�V���̕��헪</emphasis> ��w�肵�܂��B
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-cache-readonly">
+ <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
+ </para>
+
+ <programlisting><![CDATA[<class name="eg.Immutable"
mutable="false">
+ <cache usage="read-only"/>
+ ....
+</class>]]></programlisting>
+
+ </sect2>
+
+
+ <sect2 id="performance-cache-readwrite">
+ <title>read/write�헪</title>
+
+ <para>
+ �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
+ </para>
+
+ <programlisting><![CDATA[<class name="eg.Cat" ....
>
+ <cache usage="read-write"/>
+ ....
+ <set name="kittens" ... >
+ <cache usage="read-write"/>
+ ....
+ </set>
+</class>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="performance-cache-nonstrict">
+ <title>�����ł͂Ȃ�read/write�헪</title>
+
+ <para>
+
�A�v���P�[�V���������܂ɂ����f�[�^��X�V����K�v�͂Ȃ��i���Ȃ킿��̃g�����U�N�V������
+
�����ɓ����A�C�e����X�V���悤�Ƃ��邱�Ƃ͂قƂ�NjN����Ȃ��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
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-cache-transactional">
+ <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
+ </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>
+ <tgroup cols='5' align='left' colsep='1'
rowsep='1'>
+ <colspec colname='c1' colwidth="1*"/>
+ <colspec colname='c2' colwidth="1*"/>
+ <colspec colname='c3' colwidth="1*"/>
+ <colspec colname='c4' colwidth="1*"/>
+ <colspec colname='c5' colwidth="1*"/>
+ <thead>
+ <row>
+ <entry>�L���b�V��</entry>
+ <entry>read-only</entry>
+ <entry>�����ł͂Ȃ�read-write</entry>
+ <entry>read-write</entry>
+ <entry>transactional</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>Hashtable�i���i�p�Ƃ��ĈӐ}���Ă��܂���j</entry>
+ <entry>yes</entry>
+ <entry>yes</entry>
+ <entry>yes</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>EHCache</entry>
+ <entry>yes</entry>
+ <entry>yes</entry>
+ <entry>yes</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>OSCache</entry>
+ <entry>yes</entry>
+ <entry>yes</entry>
+ <entry>yes</entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>SwarmCache</entry>
+ <entry>yes</entry>
+ <entry>yes</entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry>JBoss TreeCache</entry>
+ <entry>yes</entry>
+ <entry></entry>
+ <entry></entry>
+ <entry>yes</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </sect1>
+
+ <sect1 id="performance-sessioncache" revision="2">
+ <title>�L���b�V���̊Ǘ�</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
+ </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
+ </para>
+
+ <programlisting><![CDATA[ScrollableResult cats =
sess.createQuery("from Cat as cat").scroll(); //a huge result set
+while ( cats.next() ) {
+ Cat cat = (Cat) cats.get(0);
+ doSomethingWithACat(cat);
+ sess.evict(cat);
+}]]></programlisting>
+
+ <para>
+ <literal>Session</literal>
�̓C���X�^���X���Z�b�V�����L���b�V���Ɋ܂܂�邩�ǂ����f���邽�߂�
+ <literal>contains()</literal> ���\�b�h����܂��B
+ </para>
+
+ <para>
+
���ׂẴI�u�W�F�N�g��Z�b�V�����L���b�V�����犮�S�Ɏ�菜���ɂ́A<literal>Session.clear()</literal>
+ ��Ăяo���Ă��������B
+ </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
+ </para>
+
+ <programlisting><![CDATA[sessionFactory.evict(Cat.class, catId); //evict
a particular Cat
+sessionFactory.evict(Cat.class); //evict all Cats
+sessionFactory.evictCollection("Cat.kittens", catId); //evict a particular
collection of kittens
+sessionFactory.evictCollection("Cat.kittens"); //evict all kitten
collections]]></programlisting>
+
+ <para>
+ <literal>CacheMode</literal>
�͓���̃Z�b�V�������L���b�V���Ƃǂ̂悤�ɑ��ݍ�p���邩��
+ �w�肵�܂��B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>CacheMode.NORMAL</literal> -
�A�C�e���̓ǂݍ��݂Ə������݂œL���b�V����g���܂�
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>CacheMode.GET</literal> -
�ǂݍ��݂͓L���b�V������s���܂����A�f�[�^��
+ �X�V�����ꍇ�����ēL���b�V���ɏ������݂��܂���B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>CacheMode.PUT</literal> -
�L���b�V���ɃA�C�e���������݂܂����A�ǂݍ��݂ɂ�
+ �L���b�V����g���܂���B
+ </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
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ �L���b�V���̓�e��N�G���L���b�V���̈���邽�߂ɁA
<literal>Statistics</literal> API��
+ �g�����������B
+ </para>
+
+ <programlisting><![CDATA[Map cacheEntries =
sessionFactory.getStatistics()
+ .getSecondLevelCacheStatistics(regionName)
+ .getEntries();]]></programlisting>
+
+ <para>
+ ���v����L���ɂ��āA����ɃI�v�V�����Ƃ��āA�L���b�V���G���g����
+ �l����藝��\�Ȍ`���ŕێ����邱�Ƃ�Hibernate�ɋ������܂��B
+ </para>
+
+ <programlisting><![CDATA[hibernate.generate_statistics true
+hibernate.cache.use_structured_entries true]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="performance-querycache" revision="1">
+ <title>�N�G���L���b�V��</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
+ </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
+ </para>
+
+ <para>
+ �N�G���L���b�V���̔j���|���V�[��ׂ������䂵�����Ƃ��́A
<literal>Query.setCacheRegion()</literal>
+ ��Ăяo���ē���̃N�G���ɑ���L���b�V���̈��w�肷�邱�Ƃ��o���܂��B
+ </para>
+
+ <programlisting><![CDATA[List blogs = sess.createQuery("from Blog
blog where blog.blogger = :blogger")
+ .setEntity("blogger", blogger)
+ .setMaxResults(15)
+ .setCacheable(true)
+ .setCacheRegion("frontpages")
+ .list();]]></programlisting>
+
+ <para>
+ �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
+ </para>
+
+ </sect1>
+��14.1
+ <sect1 id="performance-collections">
+ <title>�R���N�V�����̃p�t�H�[�}���X�̗���</title>
+
+ <para>
+ �R���N�V�����̘b��ɂ͂��łɑ����̎��Ԃ�g���܂����B���̐߂ł�
+ �R���N�V���������s���ɂǂ̂悤�ɐU�������ɂ��Ă̘b���2�A3���グ�܂��B
+ </para>
+
+ <sect2 id="performance-collections-taxonomy">
+ <title>����</title>
+
+ <para>Hibernate��3�̊�{�I�ȃR���N�V�����̎�ނ��`���Ă��܂��B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>�l�̃R���N�V����</para>
+ </listitem>
+ <listitem>
+ <para>��Α��֘A</para>
+ </listitem>
+ <listitem>
+ <para>���Α��֘A</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
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>�C���f�b�N�X�t���R���N�V����</para>
+ </listitem>
+ <listitem>
+ <para>set</para>
+ </listitem>
+ <listitem>
+ <para>bag</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ���ׂẴC���f�b�N�X�t���R���N�V�����imap�Alist�A�z��j��
<literal><key></literal>
+ �� <literal><index></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
+ </para>
+
+ <para>
+ set�� <literal><key></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><set></literal>
�̎�L�[���肽���Ȃ�A���ׂẴJ������
+ <literal>not-null="true"</literal>
��錾���Ȃ���Ȃ�܂���B�j
+ </para>
+
+ <para>
+ <literal><idbag></literal>
�}�b�s���O�͑㗝�L�[���`���܂��B���̂���
+ �X�V�͏�ɔ��Ɍ����I�ł��B������A����͍őP�̃P�[�X�ł��B
+ </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
+ </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
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-collections-mostefficientupdate">
+ <title>�X�V�ɂ���Ƃ�����I�ȃR���N�V����
list�Amap�Aidbag�Aset</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
+ </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
+ </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
+ </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
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-collections-mostefficentinverse">
+ <title>inverse�R���N�V�����ɂ���Ƃ�œK��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
+ </para>
+
+ <programlisting><![CDATA[Parent p = (Parent) sess.load(Parent.class,
id);
+Child c = new Child();
+c.setParent(p);
+p.getChildren().add(c); //no need to fetch the collection!
+sess.flush();]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="performance-collections-oneshotdelete">
+ <title>�ꊇ�폜</title>
+
+ <para>
+ ���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
+ </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
+ </para>
+
+ <para>
+ �������A18�̗v�f��폜����2��c���A���ꂩ��3�V�����v�f��lj�����Ƃ��܂��B
+ ���̂Ƃ���̕��@������܂��B
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>
+ 18�s����폜���āA3�s��lj�����
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ �R���N�V�����S�̂�폜�i <literal>DELETE</literal>
��SQL����j���A������5�̗v�f���ׂĂ�
+ �i����j�lj�����
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ Hibernate�͂��̏ꍇ��2�Ԗڂ̕��@����葬�����낤�Ƃ킩��قnj����͂���܂���B
+ �i������Hibernate�����̂悤�Ɍ������Ƃ�]�܂����Ȃ��ł��傤�B���̂悤�ȐU�镑����
+ �f�[�^�x�[�X�̃g���K�Ȃǂ��������邩�����܂���B�j
+ </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
+ </para>
+
+ <para>
+ ������A�ꊇ�폜�� <literal>inverse="true"</literal>
��w�肵���R���N�V�����ɂ͍s���܂���B
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="performance-monitoring" revision="1">
+ <title>�p�t�H�[�}���X�̃��j�^�����O</title>
+
+ <para>
+ �œK���̓��j�^�����O��p�t�H�[�}���X�������l���Ȃ���Ώ\���ɍs���܂���B
+ Hibernate�͓�������̂��ׂĂ͈̔͂̐��l����܂��B
+ Hibernate�̓��v���� <literal>SessionFactory</literal>
�P�ʂŎ擾�\�ł��B
+ </para>
+
+ <sect2 id="performance-monitoring-sf" revision="2">
+ <title>SessionFactory�̃��j�^�����O</title>
+
+ <para>
+ <literal>SessionFactory</literal>
�̃��g���N�X�ɃA�N�Z�X����ɂ�2�̕��@������܂��B
+ �ŏ��̕��@�́A <literal>sessionFactory.getStatistics()</literal>
��Ăяo���A
+ ������ <literal>Statistics</literal> �̓ǂݍ��݂�\����s���܂��B
+ </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
+ </para>
+
+ <programlisting><![CDATA[// MBean service registration for a
specific SessionFactory
+Hashtable tb = new Hashtable();
+tb.put("type", "statistics");
+tb.put("sessionFactory", "myFinancialApp");
+ObjectName on = new ObjectName("hibernate", tb); // MBean object name
+
+StatisticsService stats = new StatisticsService(); // MBean implementation
+stats.setSessionFactory(sessionFactory); // Bind the stats to a SessionFactory
+server.registerMBean(stats, on); // Register the Mbean on the
server]]></programlisting>
+
+
+<programlisting><![CDATA[// MBean service registration for all
SessionFactory's
+Hashtable tb = new Hashtable();
+tb.put("type", "statistics");
+tb.put("sessionFactory", "all");
+ObjectName on = new ObjectName("hibernate", tb); // MBean object name
+
+StatisticsService stats = new StatisticsService(); // MBean implementation
+server.registerMBean(stats, on); // Register the MBean on the
server]]></programlisting>
+
+ <para>
+ TODO:
����͈Ӗ�������܂���B�ŏ��̃P�[�X�́AMBean�ڕ������Ďg�p���܂��B2�Ԗڂ̃P�[�X�́A
+ �g���O��session factory�������Ă���JNDI����n���Ȃ���Ȃ�܂���B
+
<literal>hibernateStatsBean.setSessionFactoryJNDIName("my/JNDI/Name")</literal>
��g�����������B
+ </para>
+ <para>
+ <literal>SessionFactory</literal>
�ɑ��ă��j�^�����O�̊J�n�i�I���j��s�����Ƃ��o���܂��B
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ �ݒ莞�ɂ́A
<literal>hibernate.generate_statistics</literal> ��
<literal>false</literal> �ɂ��܂�
+ </para>
+ </listitem>
+ </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para>
+ ���s���ɁA
<literal>sf.getStatistics().setStatisticsEnabled(true)</literal> �܂���
+
<literal>hibernateStatsBean.setStatisticsEnabled(true)</literal> ��Ăяo���܂�
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ���v�� <literal>clear()</literal>
���\�b�h��g���Ď蓮�Ń��Z�b�g���邱�Ƃ��o���܂��B
+ �T�}���� <literal>logSummary()</literal>
���\�b�h��g����logger�ɑ��邱�Ƃ��o���܂�
+ �iinfo���x���ł��j�B
+ </para>
+
+ </sect2>
+
+ <sect2 id="performance-monitoring-metrics"
revision="1">
+ <title>���g���N�X</title>
+
+ <para>
+ �����̂�̂�����܂��B���ׂĂ̎g�p�\�ȃJ�E���^��
<literal>Statistics</literal>
+ �C���^�[�t�F�C�X��API�ɏ�����Ă���A3�̕��ނ�����܂��B
+ </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
+ </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
+ </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
+ </para>
+
+ <programlisting><![CDATA[Statistics stats =
HibernateUtil.sessionFactory.getStatistics();
+
+double queryCacheHitCount = stats.getQueryCacheHitCount();
+double queryCacheMissCount = stats.getQueryCacheMissCount();
+double queryCacheHitRatio =
+ queryCacheHitCount / (queryCacheHitCount + queryCacheMissCount);
+
+log.info("Query Hit ratio:" + queryCacheHitRatio);
+
+EntityStatistics entityStats =
+ stats.getEntityStatistics( Cat.class.getName() );
+long changes =
+ entityStats.getInsertCount()
+ + entityStats.getUpdateCount()
+ + entityStats.getDeleteCount();
+log.info(Cat.class.getName() + " changed " + changes + "times"
);]]></programlisting>
+
+ <para>
+ ���ׂẴ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
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+</chapter>
\ No newline at end of file
Copied:
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/persistent_classes.xml
(from rev 14075,
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/persistent_classes.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/persistent_classes.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/persistent_classes.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,539 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="persistent-classes" revision="2">
+ <title>�i���N���X</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
+ </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
+ </para>
+
+ <sect1 id="persistent-classes-pojo">
+ <title>�P����POJO�̗�</title>
+
+ <para>
+ �قƂ�ǂ�Java�A�v���P�[�V�����ɂ̓l�R�Ȃ̓�����\������i���N���X���K�v�ł��B
+ </para>
+
+ <programlisting><![CDATA[package eg;
+import java.util.Set;
+import java.util.Date;
+
+public class Cat {
+ private Long id; // identifier
+
+ private Date birthdate;
+ private Color color;
+ private char sex;
+ private float weight;
+ private int litterId;
+
+ private Cat mother;
+ private Set kittens = new HashSet();
+
+ private void setId(Long id) {
+ this.id=id;
+ }
+ public Long getId() {
+ return id;
+ }
+
+ void setBirthdate(Date date) {
+ birthdate = date;
+ }
+ public Date getBirthdate() {
+ return birthdate;
+ }
+
+ void setWeight(float weight) {
+ this.weight = weight;
+ }
+ public float getWeight() {
+ return weight;
+ }
+
+ public Color getColor() {
+ return color;
+ }
+ void setColor(Color color) {
+ this.color = color;
+ }
+
+ void setSex(char sex) {
+ this.sex=sex;
+ }
+ public char getSex() {
+ return sex;
+ }
+
+ void setLitterId(int id) {
+ this.litterId = id;
+ }
+ public int getLitterId() {
+ return litterId;
+ }
+
+ void setMother(Cat mother) {
+ this.mother = mother;
+ }
+ public Cat getMother() {
+ return mother;
+ }
+ void setKittens(Set kittens) {
+ this.kittens = kittens;
+ }
+ public Set getKittens() {
+ return kittens;
+ }
+
+ // addKitten not needed by Hibernate
+ public void addKitten(Cat kitten) {
+ kitten.setMother(this);
+ kitten.setLitterId( kittens.size() );
+ kittens.add(kitten);
+ }
+}]]></programlisting>
+
+ <para>
+ �]���ׂ�4�̃��[��������܂��F
+ </para>
+
+ <sect2 id="persistent-classes-pojo-constructor"
revision="1">
+ <title>�����̂Ȃ��R���X�g���N�^���������</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
+ </para>
+ </sect2>
+
+ <sect2 id="persistent-classes-pojo-identifier"
revision="2">
+ <title>���ʎq�v���p�e�B��p�ӂ���i�I�v�V�����j</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
+ </para>
+
+ <para>
+ ���ʎq�v���p�e�B�͌����ɂ̓I�v�V�����ł��B
+ �����ȗ����āAHibernate�ɓ���I�ɃI�u�W�F�N�g�̎��ʎq��ǐՂ����邱�Ƃ͉\�ł��B
+ �������������߂͂��܂���B
+ </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
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Session.saveOrUpdate()</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Session.merge()</literal>
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ �i���N���X�ɂ́A��т������O�̎��ʎq�v���p�e�B���`���邱�Ƃ����߂��܂��B
+ �����null�l�����(�܂�v���~�e�B�u�ł͂Ȃ�)�^��g���������悢�ł��傤�B
+ </para>
+ </sect2>
+
+ <sect2 id="persistent-classes-pojo-final">
+ <title>final�N���X�ɂ��Ȃ��i�I�v�V�����j</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
+ </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
+ </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
+ </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>
+
+ <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>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
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="persistent-classes-inheritance">
+ <title>�p���̎���</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
+ </para>
+
+ <programlisting><![CDATA[package eg;
+
+public class DomesticCat extends Cat {
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+ protected void setName(String name) {
+ this.name=name;
+ }
+}]]></programlisting>
+ </sect1>
+
+ <sect1 id="persistent-classes-equalshashcode"
revision="1">
+ <title><literal>equals()</literal> ��
<literal>hashCode()</literal> �̎���</title>
+
+ <para>
+ �ȉ��̏��̏ꍇ�A
+ <literal>equals()</literal> ��
<literal>hashCode()</literal> ���\�b�h��I�[�o�[���C�h���Ȃ���Ȃ�܂���A
+ </para>
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ �i���N���X�̃C���X�^���X�� <literal>Set</literal>
�ɒu���ꍇ�B
+ �i����͑��l�̊֘A��\�����邨�����߂̕��@�ł��j
+ <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
+ </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
+ </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
+ </para>
+
+ <programlisting><![CDATA[public class Cat {
+
+ ...
+ public boolean equals(Object other) {
+ if (this == other) return true;
+ if ( !(other instanceof Cat) ) return false;
+
+ final Cat cat = (Cat) other;
+
+ if ( !cat.getLitterId().equals( getLitterId() ) ) return false;
+ if ( !cat.getMother().equals( getMother() ) ) return false;
+
+ return true;
+ }
+
+ public int hashCode() {
+ int result;
+ result = getMother().hashCode();
+ result = 29 * result + getLitterId();
+ return result;
+ }
+
+}]]></programlisting>
+
+ <para>
+ �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
+ </para>
+
+ </sect1>
+
+ <sect1 id="persistent-classes-dynamicmodels">
+ <title>���I���f��</title>
+
+ <para>
+ <emphasis>�ȉ��̋@�\�͌��ݎ����i�K�ɂ���ƌ��Ȃ���Ă���A
+ �߂������ύX�����\�������邱�Ƃɒ��ӂ��Ă��������B</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
+ </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
+ </para>
+
+ <para>
+ �ȉ��̗�ł� <literal>Map</literal> ��g�����\����Љ�܂��B
+ �܂��}�b�s���O�t�@�C���ŁA�N���X���̑���Ɂi�܂��͂���ɉ����āj
+ <literal>entity-name</literal> ���`���Ȃ���Ȃ�܂���F
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class entity-name="Customer">
+
+ <id name="id"
+ type="long"
+ column="ID">
+ <generator class="sequence"/>
+ </id>
+
+ <property name="name"
+ column="NAME"
+ type="string"/>
+
+ <property name="address"
+ column="ADDRESS"
+ type="string"/>
+
+ <many-to-one name="organization"
+ column="ORGANIZATION_ID"
+ class="Organization"/>
+
+ <bag name="orders"
+ inverse="true"
+ lazy="false"
+ cascade="all">
+ <key column="CUSTOMER_ID"/>
+ <one-to-many class="Order"/>
+ </bag>
+
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ �֘A���^�[�Q�b�g�̃N���X����g���Ē�`���Ă����Ƃ��Ă�A
+ �֘A�̃^�[�Q�b�g�^��POJO�ł͂Ȃ����I�ȃG���e�B�e�B�ł�\��Ȃ����Ƃɒ��ӂ��Ă��������B
+ </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
+ </para>
+
+ <programlisting><![CDATA[Session s = openSession();
+Transaction tx = s.beginTransaction();
+Session s = openSession();
+
+// Create a customer
+Map david = new HashMap();
+david.put("name", "David");
+
+// Create an organization
+Map foobar = new HashMap();
+foobar.put("name", "Foobar Inc.");
+
+// Link both
+david.put("organization", foobar);
+
+// Save both
+s.save("Customer", david);
+s.save("Organization", foobar);
+
+tx.commit();
+s.close();]]></programlisting>
+
+ <para>
+ ���I�ȃ}�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
+ </para>
+
+ <para>
+ �G���e�B�e�B�\�����[�h�� <literal>Session</literal>
���Ƃɐݒ肷�邱�Ƃ�\�ł��B
+ </para>
+
+ <programlisting><![CDATA[Session dynamicSession =
pojoSession.getSession(EntityMode.MAP);
+
+// Create a customer
+Map david = new HashMap();
+david.put("name", "David");
+dynamicSession.save("Customer", david);
+...
+dynamicSession.flush();
+dynamicSession.close()
+...
+// Continue on pojoSession
+]]></programlisting>
+
+
+ <para>
+ <literal>EntityMode</literal> ��g����
<literal>getSession()</literal>
+ �̌Ăяo���� <literal>SessionFactory</literal> �ł͂Ȃ�
<literal>Session</literal>
+ API�ɂ��邱�Ƃɒ��ӂ��Ă��������B
+ ���̕��@�ł́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
+ </para>
+
+ <para>
+ XML�\���̔\�͂ɂ��Ă̂���Ȃ���� <xref linkend="xml"/>
�Ō�����܂��B
+ </para>
+
+ </sect1>
+
+ <sect1 id="persistent-classes-tuplizers" revision="1">
+ <title>Tuplizer</title>
+
+ <para>
+ <literal>org.hibernate.tuple.Tuplizer</literal>
�Ƃ��̃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
+ </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
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+ <class entity-name="Customer">
+ <!--
+ Override the dynamic-map entity-mode
+ tuplizer for the customer entity
+ -->
+ <tuplizer entity-mode="dynamic-map"
+ class="CustomMapTuplizerImpl"/>
+
+ <id name="id" type="long" column="ID">
+ <generator class="sequence"/>
+ </id>
+
+ <!-- other properties -->
+ ...
+ </class>
+</hibernate-mapping>
+
+
+public class CustomMapTuplizerImpl
+ extends org.hibernate.tuple.entity.DynamicMapEntityTuplizer {
+ // override the buildInstantiator() method to plug in our custom map...
+ protected final Instantiator buildInstantiator(
+ org.hibernate.mapping.PersistentClass mappingInfo) {
+ return new CustomMapInstantiator( mappingInfo );
+ }
+
+ private static final class CustomMapInstantiator
+ extends org.hibernate.tuple.DynamicMapInstantitor {
+ // override the generateMap() method to return our custom map...
+ protected final Map generateMap() {
+ return new CustomMap();
+ }
+ }
+}]]></programlisting>
+
+
+ </sect1>
+
+ <para>
+ TODO: �v���p�e�B�ƃv���L�V�p�b�P�[�W�̃��[�U�g���t���[�����[�N�������邱��
+ </para>
+
+</chapter>
+
+
Added: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/preface.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/preface.xml
(rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/preface.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
+ <preface id="preface" revision="2">
+ <title>�O����</title>
+
+ <para>
+
�����̊�Ɗ��ɂ����ā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
+ </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
+ </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
+ </para>
+
+ <para>
+ Hibernate��I�u�W�F�N�g/�����[�V���i���}�b�s���O�A
+ ����ɂ�Java�����߂Ă̕��́A�ȉ��̃X�e�b�v�ɏ]���Ă��������F
+ </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
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <xref linkend="architecture"/>
��ǂ�ŁAHibernate�����p�\�Ȋ��𗝉��Ă��������B
+ </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
+ </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
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ FAQ��Hibernate�E�F�u�T�C�g�ɂ���܂��B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+
�T�[�h�p�[�e�B�̃f���A��A�`���[�g���A����Hibernate�E�F�u�T�C�g�Ƀ����N������܂��B
+ </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
+ </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
+ </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
+ </para>
+<!--
+ <sect1 id="preface-s1" revision="-1">
+
+ <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
+ </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>
+
+ <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
+
+ <mediaobject>
+ <imageobject role="fo">
+ <imagedata fileref="images/mailaddr.gif"
format="GIF" align="center"/>
+ </imageobject>
+ <imageobject role="html">
+ <imagedata fileref="../shared/images/mailaddr.gif"
format="GIF" align="center"/>
+ </imageobject>
+ </mediaobject>
+
+ </para>
+ </sect2>
+ </sect1>
+-->
+ </preface>
\ No newline at end of file
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_criteria.xml
(from rev 14075,
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/query_criteria.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_criteria.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_criteria.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,448 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="querycriteria">
+ <title>Criteria�N�G��</title>
+
+ <para>
+ Hibernate�ɂ́A�����I�Ŋg���\��criteria�N�G��API���p�ӂ���Ă��܂��B
+ </para>
+
+ <sect1 id="querycriteria-creating">
+ <title> <literal>Criteria</literal>
�C���X�^���X�̍쐬</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
+ </para>
+
+ <programlisting><![CDATA[Criteria crit =
sess.createCriteria(Cat.class);
+crit.setMaxResults(50);
+List cats = crit.list();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="querycriteria-narrowing">
+ <title>���U���g�Z�b�g�̍i����</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.Restrictions</literal>
+ �N���X�́A����g�ݍ��݂� <literal>Criterion</literal>
+ �^��擾���邽�߂̃t�@�N�g�����\�b�h�����Ă��܂��B
+ </para>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .add( Restrictions.like("name", "Fritz%") )
+ .add( Restrictions.between("weight", minWeight, maxWeight) )
+ .list();]]></programlisting>
+
+ <para>
+ Restriction�i����j�́A�_���I�ɃO���[�v���ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .add( Restrictions.like("name", "Fritz%") )
+ .add( Restrictions.or(
+ Restrictions.eq( "age", new Integer(0) ),
+ Restrictions.isNull("age")
+ ) )
+ .list();]]></programlisting>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .add( Restrictions.in( "name", new String[] { "Fritz",
"Izi", "Pk" } ) )
+ .add( Restrictions.disjunction()
+ .add( Restrictions.isNull("age") )
+ .add( Restrictions.eq("age", new Integer(0) ) )
+ .add( Restrictions.eq("age", new Integer(1) ) )
+ .add( Restrictions.eq("age", new Integer(2) ) )
+ ) )
+ .list();]]></programlisting>
+
+ <para>
+ ���X����Criterion�^�i<literal>Restrictions</literal>
�̃T�u�N���X�j
+ �͂��Ȃ�͈̔͂ɋy�т܂����A���ɗL�p�Ȃ̂�SQL�ڎw��ł����̂ł��B
+ </para>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .add( Restrictions.sqlRestriction("lower({alias}.name) like lower(?)",
"Fritz%", Hibernate.STRING) )
+ .list();]]></programlisting>
+
+ <para>
+ <literal>{alias}</literal> �Ƃ����v���[�X�z���_�́A
+ �₢���킹����G���e�B�e�B�̍s�̕ʖ��ɂ���Ēu���������܂��B
+ </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
+ </para>
+
+ <programlisting><![CDATA[
+Property age = Property.forName("age");
+List cats = sess.createCriteria(Cat.class)
+ .add( Restrictions.disjunction()
+ .add( age.isNull() )
+ .add( age.eq( new Integer(0) ) )
+ .add( age.eq( new Integer(1) ) )
+ .add( age.eq( new Integer(2) ) )
+ ) )
+ .add( Property.forName("name").in( new String[] { "Fritz",
"Izi", "Pk" } ) )
+ .list();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="querycriteria-ordering">
+ <title>���ʂ̐���</title>
+
+ <para>
+ <literal>org.hibernate.criterion.Order</literal>
+ ��g���Č��ʂ���ёւ��邱�Ƃ��ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .add( Restrictions.like("name", "F%")
+ .addOrder( Order.asc("name") )
+ .addOrder( Order.desc("age") )
+ .setMaxResults(50)
+ .list();]]></programlisting>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .add( Property.forName("name").like("F%") )
+ .addOrder( Property.forName("name").asc() )
+ .addOrder( Property.forName("age").desc() )
+ .setMaxResults(50)
+ .list();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="querycriteria-associations" revision="2">
+ <title>�֘A</title>
+
+ <para>
+ <literal>createCriteria()</literal>
��g���A�֘A��i�r�Q�[�g���邱�ƂŁA
+ �e�ՂɊW����G���e�B�e�B�ɐ����w��ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .add( Restrictions.like("name", "F%") )
+ .createCriteria("kittens")
+ .add( Restrictions.like("name", "F%") )
+ .list();]]></programlisting>
+
+ <para>
+ 2�Ԗڂ� <literal>createCriteria()</literal>
�́A<literal>kittens</literal>
+ �R���N�V�����̗v�f��Q�Ƃ���V���� <literal>Criteria</literal>
+ �C���X�^���X��Ԃ����Ƃɒ��ӂ��Ă��������B
+ </para>
+
+ <para>
+ �ȉ��̂悤�ȕ��@��A�ɂ��L�p�ł��B
+ </para>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .createAlias("kittens", "kt")
+ .createAlias("mate", "mt")
+ .add( Restrictions.eqProperty("kt.name", "mt.name") )
+ .list();]]></programlisting>
+
+ <para>
+ �i<literal>createAlias()</literal> �͐V����
+ <literal>Criteria</literal> �C���X�^���X��쐬���܂���B�j
+ </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
+ </para>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .createCriteria("kittens", "kt")
+ .add( Restrictions.eq("name", "F%") )
+ .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)
+ .list();
+Iterator iter = cats.iterator();
+while ( iter.hasNext() ) {
+ Map map = (Map) iter.next();
+ Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);
+ Cat kitten = (Cat) map.get("kt");
+}]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="querycriteria-dynamicfetching" revision="1">
+ <title>�֘A�̓��I�t�F�b�`</title>
+
+ <para>
+ <literal>setFetchMode()</literal> ��g���A
+ ���s���Ɋ֘A�̕������@��w�肵�Ă�悢�ł��B
+ </para>
+
+ <programlisting><![CDATA[List cats = sess.createCriteria(Cat.class)
+ .add( Restrictions.like("name", "Fritz%") )
+ .setFetchMode("mate", FetchMode.EAGER)
+ .setFetchMode("kittens", FetchMode.EAGER)
+ .list();]]></programlisting>
+
+ <para>
+ ���̃N�G���͊O�������ɂ�� <literal>mate</literal> ��
+ <literal>kittens</literal> �̗�����t�F�b�`���܂��B
+ ��葽���̏��� <xref linkend="performance-fetching"/>
��Q�Ƃ��Ă��������B
+ </para>
+
+ </sect1>
+
+ <sect1 id="querycriteria-examples">
+ <title>�N�G���̗�</title>
+
+ <para>
+ <literal>org.hibernate.criterion.Example</literal> �N���X�́A
+ �^����ꂽ�C���X�^���X����N�G���N���C�e���I����\�z�ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[Cat cat = new Cat();
+cat.setSex('F');
+cat.setColor(Color.BLACK);
+List results = session.createCriteria(Cat.class)
+ .add( Example.create(cat) )
+ .list();]]></programlisting>
+
+ <para>
+ �o�[�W�����v���p�e�B�A���ʎq�A�֘A�͖�������܂��B
+ �f�t�H���g�ł�null�l�̃v���p�e�B�͏��O����܂��B
+ </para>
+
+ <para>
+ �ǂ̂悤�� <literal>Example</literal> ��K�p���邩
+ �������邱�Ƃ��ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[Example example = Example.create(cat)
+ .excludeZeroes() //exclude zero valued properties
+ .excludeProperty("color") //exclude the property named "color"
+ .ignoreCase() //perform case insensitive string comparisons
+ .enableLike(); //use like for string comparisons
+List results = session.createCriteria(Cat.class)
+ .add(example)
+ .list();]]></programlisting>
+
+ <para>
+ �֘A�I�u�W�F�N�g��criteria��w�肷�邽�߂ɁAExample��g�����Ƃ�\�ł��B
+ </para>
+
+ <programlisting><![CDATA[List results =
session.createCriteria(Cat.class)
+ .add( Example.create(cat) )
+ .createCriteria("mate")
+ .add( Example.create( cat.getMate() ) )
+ .list();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="querycriteria-projection">
+ <title>�ˉe�A�W��A�O���[�v��</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
+ </para>
+
+ <programlisting><![CDATA[List results =
session.createCriteria(Cat.class)
+ .setProjection( Projections.rowCount() )
+ .add( Restrictions.eq("color", Color.BLACK) )
+ .list();]]></programlisting>
+
+ <programlisting><![CDATA[List results =
session.createCriteria(Cat.class)
+ .setProjection( Projections.projectionList()
+ .add( Projections.rowCount() )
+ .add( Projections.avg("weight") )
+ .add( Projections.max("weight") )
+ .add( Projections.groupProperty("color") )
+ )
+ .list();]]></programlisting>
+
+ <para>
+ �K�v�ł����Ă�Acriteria�N�G���Ɂugroup by�v������K�v�͂���܂���B
+ ������Projection�^�� <emphasis>�O���[�v���ˉe</emphasis>
�Ƃ��Ē�`����A
+ SQL�� <literal>group by</literal> �߂ɂ����܂��B
+ </para>
+
+ <para>
+ �C�ӂŎˉe�ɕʖ���t�����邽�߁A�ˉe�����l��restriction��ordering�����Q�Ƃł��܂��B
+ �ʖ������Q�̈قȂ���@�����܂��B
+ </para>
+
+ <programlisting><![CDATA[List results =
session.createCriteria(Cat.class)
+ .setProjection( Projections.alias( Projections.groupProperty("color"),
"colr" ) )
+ .addOrder( Order.asc("colr") )
+ .list();]]></programlisting>
+
+ <programlisting><![CDATA[List results =
session.createCriteria(Cat.class)
+ .setProjection( Projections.groupProperty("color").as("colr") )
+ .addOrder( Order.asc("colr") )
+ .list();]]></programlisting>
+
+ <para>
+ <literal>alias()</literal> �� <literal>as()</literal>
���\�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
+ </para>
+
+ <programlisting><![CDATA[List results =
session.createCriteria(Cat.class)
+ .setProjection( Projections.projectionList()
+ .add( Projections.rowCount(), "catCountByColor" )
+ .add( Projections.avg("weight"), "avgWeight" )
+ .add( Projections.max("weight"), "maxWeight" )
+ .add( Projections.groupProperty("color"), "color" )
+ )
+ .addOrder( Order.desc("catCountByColor") )
+ .addOrder( Order.desc("avgWeight") )
+ .list();]]></programlisting>
+
+ <programlisting><![CDATA[List results =
session.createCriteria(Domestic.class, "cat")
+ .createAlias("kittens", "kit")
+ .setProjection( Projections.projectionList()
+ .add( Projections.property("cat.name"), "catName" )
+ .add( Projections.property("kit.name"), "kitName" )
+ )
+ .addOrder( Order.asc("catName") )
+ .addOrder( Order.asc("kitName") )
+ .list();]]></programlisting>
+
+ <para>
+ �ˉe�̎��� <literal>Property.forName()</literal> ��g�p�ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[List results =
session.createCriteria(Cat.class)
+ .setProjection( Property.forName("name") )
+ .add( Property.forName("color").eq(Color.BLACK) )
+ .list();]]></programlisting>
+
+ <programlisting><![CDATA[List results =
session.createCriteria(Cat.class)
+ .setProjection( Projections.projectionList()
+ .add( Projections.rowCount().as("catCountByColor") )
+ .add( Property.forName("weight").avg().as("avgWeight") )
+ .add( Property.forName("weight").max().as("maxWeight") )
+ .add( Property.forName("color").group().as("color" )
+ )
+ .addOrder( Order.desc("catCountByColor") )
+ .addOrder( Order.desc("avgWeight") )
+ .list();]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="querycriteria-detachedqueries">
+ <title>�N�G������уT�u�N�G���̕���</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
+ </para>
+
+ <programlisting><![CDATA[DetachedCriteria query =
DetachedCriteria.forClass(Cat.class)
+ .add( Property.forName("sex").eq('F') );
+
+Session session = ....;
+Transaction txn = session.beginTransaction();
+List results = query.getExecutableCriteria(session).setMaxResults(100).list();
+txn.commit();
+session.close();]]></programlisting>
+
+ <para>
+ <literal>DetachedCriteria</literal>
�́A�T�u�N�G����\�����邽�߂ɂ�g���܂��B
+ �T�u�N�G����Criterion�C���X�^���X�́A
+ <literal>Subqueries</literal> �������
<literal>Property</literal> ���瓾���܂��B
+ </para>
+
+ <programlisting><![CDATA[DetachedCriteria avgWeight =
DetachedCriteria.forClass(Cat.class)
+ .setProjection( Property.forName("weight").avg() );
+session.createCriteria(Cat.class)
+ .add( Property.forName("weight").gt(avgWeight) )
+ .list();]]></programlisting>
+
+ <programlisting><![CDATA[DetachedCriteria weights =
DetachedCriteria.forClass(Cat.class)
+ .setProjection( Property.forName("weight") );
+session.createCriteria(Cat.class)
+ .add( Subqueries.geAll("weight", weights) )
+ .list();]]></programlisting>
+
+ <para>
+ ���݊W������T�u�N�G���ł�����\�ł��B
+ </para>
+
+ <programlisting><![CDATA[DetachedCriteria avgWeightForSex =
DetachedCriteria.forClass(Cat.class, "cat2")
+ .setProjection( Property.forName("weight").avg() )
+ .add( Property.forName("cat2.sex").eqProperty("cat.sex") );
+session.createCriteria(Cat.class, "cat")
+ .add( Property.forName("weight").gt(avgWeightForSex) )
+ .list();]]></programlisting>
+
+ </sect1>
+
+ <!--TODO: ResultSetTransformer + aliasing. AliasToBeanTransformer allow
returning arbitrary
+ user objects - similar to setResultClass in JDO2. General use of
ResultTransformer
+ could also be explained. -->
+
+ <sect1 id="query-criteria-naturalid">
+ <title>���R���ʎq�ɂ��N�G��</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
+ </para>
+
+ <para>
+ �ŏ��ɁA<literal><natural-id></literal> ��g���āA
+ �G���e�B�e�B�̎��R�L�[��}�b�v���Ă��������B
+ �����āA�L���b�V����L���ɂ��܂��B
+ </para>
+
+ <programlisting><![CDATA[<class name="User">
+ <cache usage="read-write"/>
+ <id name="id">
+ <generator class="increment"/>
+ </id>
+ <natural-id>
+ <property name="name"/>
+ <property name="org"/>
+ </natural-id>
+ <property name="password"/>
+</class>]]></programlisting>
+
+ <para>
+ ���ӁF <emphasis>�ύX�����</emphasis> ���R�L�[���G���e�B�e�B��
+ ���̋@�\��g���̂́A�Ӑ}����Ă��Ȃ��g�����ł��B
+ </para>
+
+ <para>
+ ���ɁAHibernate�N�G���L���b�V����L���ɂ��܂��B
+ </para>
+
+ <para>
+ ����ŁA<literal>Restrictions.naturalId()</literal> �ɂ��A
+ �������I�ȃL���b�V���A���S���Y����g�p�ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[session.createCriteria(User.class)
+ .add( Restrictions.naturalId()
+ .set("name", "gavin")
+ .set("org", "hb")
+ ).setCacheable(true)
+ .uniqueResult();]]></programlisting>
+
+ </sect1>
+
+</chapter>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_hql.xml (from
rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/query_hql.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_hql.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_hql.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,1131 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="queryhql">
+ <title>HQL: The Hibernate Query Language</title>
+
+ <para>
+ Hibernate��SQL�ɔ��ɂ悭����(�Ӑ}�I�Ɏ�����)���͂Ȗ₢���킹���������Ă��܂��B
+ ������SQL�Ɏ����\���ɘf�킳��Ȃ��ł��������BHQL�͊��S�ɃI�u�W�F�N�g�w���ł���A
+ �p���A�|�����[�t�B�Y���A�֘A�Ƃ������T�O�𗝉��܂��B
+ </para>
+
+ <sect1 id="queryhql-casesensitivity">
+ <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
+ </para>
+
+ <para>
+ ���̃}�j���A���ł͏�������HQL�L�[���[�h��g�p���܂��B
+ �啶���̃L�[���[�h�̃N�G���̕����ǂ݂₷���Ɗ����郆�[�U�[�����Ǝv���܂��B
+ �ł����AJava�R�[�h��ɖ��ߍ��܂ꂽ�Ƃ��ɂ͌��Â炢�Ǝv���܂��B
+ </para>
+
+ </sect1>
+
+ <sect1 id="queryhql-from">
+ <title>from��</title>
+
+ <para>
+ ����Ƃ�P����Hibernate�N�G���͎��̌`���ł��B
+ </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
+ </para>
+
+ <programlisting><![CDATA[from Cat]]></programlisting>
+
+ <para>
+
�قƂ�ǂ̏ꍇ�N�G���̂ق��̕����Ł@<literal>Cat</literal>�@��Q�Ƃ���̂ŁA�ʖ����蓖�Ă�K�v������ł��傤�B
+ </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
+ </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
+ </para>
+
+ </sect1>
+
+ <sect1 id="queryhql-joins" revision="2">
+ <title>�֘A�ƌ���</title>
+
+ <para>
+
�֘A����G���e�B�e�B���邢�͒l�R���N�V�����̗v�f�ɂ�A<literal>����</literal>
��g���ĕʖ����蓖�Ă邱�Ƃ��o���܂��B
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat
+ inner join cat.mate as mate
+ left outer join cat.kittens as kitten]]></programlisting>
+
+ <programlisting><![CDATA[from Cat as cat left join cat.mate.kittens as
kittens]]></programlisting>
+
+ <programlisting><![CDATA[from Formula form full join form.parameter
param]]></programlisting>
+
+ <para>
+ �T�|�[�g���Ă��錋���̃^�C�v��ANSI SQL�Ɠ����ł��B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>inner join</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>left outer join</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>right outer join</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>full join</literal> (�����Ă��̏ꍇ�g���Â炢)
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ <literal>inner join</literal>�A<literal>left outer
join</literal>�A<literal>right outer
join</literal>�ɂ͏ȗ��`��g�����Ƃ�ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat
+ join cat.mate as mate
+ left join cat.kittens as kitten]]></programlisting>
+
+ <para>
+ HQL�� <literal>with</literal>
�L�[���[�h��g���ƁA��������t�������邱�Ƃ��ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat
+ left join cat.kittens as kitten
+ with kitten.bodyWeight > 10.0]]></programlisting>
+
+ <para>
+
�����ā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
+
+ <xref linkend="performance-fetching"/> �ɂ�葽���̏����܂��B
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat
+ inner join fetch cat.mate
+ 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
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat
+ inner join fetch cat.mate
+ left join fetch cat.kittens child
+ left join fetch child.kittens]]></programlisting>
+
+ <para>
+ <literal>fetch</literal> �\����
<literal>iterate()</literal>
+ ��g�����N�G���Ăяo���Ŏg�p�ł��Ȃ����Ƃɒ��ӂ��Ă�������
+ �i����� <literal>scroll()</literal> �͎g�p�ł��܂��j�B
+
+ �܂��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> �́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
+ </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
+ </para>
+
+ <programlisting><![CDATA[from Document fetch all properties order by
name]]></programlisting>
+ <programlisting><![CDATA[from Document doc fetch all properties where
lower(doc.name) like '%cats%']]></programlisting>
+
+ </sect1>
+
+ <sect1 id="queryhql-joins-forms">
+ <title>�����\���̌`��</title>
+
+ <para>
+ HQL�͂Q�̊֘A�����`����T�|�[�g���܂��F<literal>�ÖٓI</literal> ��
<literal>�����I</literal>�B
+ </para>
+
+ <para>
+ ����܂ł̃Z�N�V�����ł����������g�����͂��ׂ�
<literal>�����I��</literal> �`���ŁA
+ from�߂Ŗ����I��join�L�[���[�h��g���Ă��܂��B
+ ���̌`���������߂��܂��B
+ </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
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat where cat.mate.name like
'%s%']]></programlisting>
+ </sect1>
+
+ <sect1 id="queryhql-select">
+ <title>Select��</title>
+
+ <para>
+ <literal>select</literal>
�߂͈ȉ��̂悤�ɂǂ̃I�u�W�F�N�g�Ƒ�����N�G�����U���g�Z�b�g�ɕԂ�����I���܂��B:
+ </para>
+
+ <programlisting><![CDATA[select mate
+from Cat as cat
+ inner join cat.mate as mate]]></programlisting>
+
+ <para>
+ ��L�̃N�G���͑��� <literal>Cat</literal> ��
<literal>mate</literal> ��I���܂��B
+ ���ۂɂ͎��̂悤�ɁA���Ȍ��ɕ\���ł��܂��B:
+ </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
+where cat.name like 'fri%']]></programlisting>
+
+ <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
+ </para>
+
+ <programlisting><![CDATA[select mother, offspr, mate.name
+from DomesticCat as mother
+ inner join mother.mate as mate
+ left outer join mother.kittens as offspr]]></programlisting>
+
+ <para>
+ ������� <literal>List</literal> �Ƃ��āA
+ </para>
+
+ <programlisting><![CDATA[select new list(mother, offspr, mate.name)
+from DomesticCat as mother
+ inner join mother.mate as mate
+ left outer join mother.kittens as offspr]]></programlisting>
+
+ <para>
+ �܂��́A�^�C�v�Z�[�t��Java�I�u�W�F�N�g��Ԃ��܂��B
+ </para>
+
+ <programlisting><![CDATA[select new Family(mother, mate, offspr)
+from DomesticCat as mother
+ join mother.mate as mate
+ left join mother.kittens as offspr]]></programlisting>
+
+ <para>
+ ���邢�� <literal>Family</literal>
�N���X���K�ȃR���X�g���N�^�����Ă���Ƃ���Ȃ�A
+ </para>
+
+ <para>
+ select�߂� <literal>as</literal> ��g���ĕʖ�����邱�Ƃ�ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[select max(bodyWeight) as max, min(bodyWeight)
as min, count(*) as n
+from Cat cat]]></programlisting>
+
+ <para>
+ <literal>select new map</literal> �ƈꏏ�Ɏg���Ƃ��ɍł�𗧂��܂��F
+ </para>
+
+ <programlisting><![CDATA[select new map( max(bodyWeight) as max,
min(bodyWeight) as min, count(*) as n )
+from Cat cat]]></programlisting>
+
+ <para>
+ ���̃N�G���͕ʖ�����select�����l�� <literal>Map</literal> ��Ԃ��܂��B
+ </para>
+
+ </sect1>
+
+ <sect1 id="queryhql-aggregation">
+ <title>�W���</title>
+
+ <para>
+ HQL�̃N�G���̓v���p�e�B�̏W����̌��ʂ�Ԃ��܂��F
+ </para>
+
+ <programlisting><![CDATA[select avg(cat.weight), sum(cat.weight),
max(cat.weight), count(cat)
+from Cat cat]]></programlisting>
+
+<!-- NO LONGER SUPPORTED
+ <para>
+ Collections may also appear inside aggregate functions in the
<literal>select</literal>
+ clause.
+ </para>
+
+ <programlisting><![CDATA[select cat, count( elements(cat.kittens) )
+from Cat cat group by cat]]></programlisting>
+-->
+
+ <para>
+ �T�|�[�g���Ă���W����͈ȉ��̂�̂ł��B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>avg(...), sum(...), min(...),
max(...)</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>count(*)</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>count(...), count(distinct ...),
count(all...)</literal>
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ select�߂ɂ����ĎZ�p����A�A���Ə��F���ꂽSQL����g�����Ƃ��ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[select cat.weight + sum(kitten.weight)
+from Cat cat
+ join cat.kittens kitten
+group by cat.id, cat.weight]]></programlisting>
+
+ <programlisting><![CDATA[select firstName||' '||initial||'
'||upper(lastName) from Person]]></programlisting>
+
+ <para>
+ SQL�Ɠ����Ӗ����� <literal>distinct</literal> ��
<literal>all</literal> �L�[���[�h��g�����Ƃ��ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[select distinct cat.name from Cat cat
+
+select count(distinct cat.name), count(cat) from Cat cat]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="queryhql-polymorphism">
+ <title>�|�����[�t�B�b�N�ȃN�G��</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���ׂĕԂ��܂�:
+ </para>
+
+ <programlisting><![CDATA[from java.lang.Object
o]]></programlisting>
+
+ <para>
+ <literal>Named</literal>
�C���^�[�t�F�C�X�͗l�X�ȉi���N���X�ɂ���Ď�������܂��B:
+ </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
+ </para>
+
+ </sect1>
+
+ <sect1 id="queryhql-where">
+ <title>where��</title>
+
+ <para>
+ <literal>where</literal>
�߂͕Ԃ����C���X�^���X�̃��X�g��i�邱�Ƃ��ł��܂��B
+ ����ʖ����Ȃ��ꍇ�A���O�Ńv���p�e�B��Q�Ƃ��܂��B
+ </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
+ </para>
+
+ <programlisting><![CDATA[select foo
+from Foo foo, Bar bar
+where foo.startDate = bar.date]]></programlisting>
+
+ <para>
+ ���HQL�́A<literal>Foo</literal> ��
<literal>startDate</literal> �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
+ </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
+ </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
+ </para>
+
+ <para>
+ <literal>=</literal>
���Z�q�͈ȉ��̂悤�ɁA�v���p�e�B�����łȂ��C���X�^���X���r���邽�߂ɂ�g���܂��B�F
+ </para>
+
+ <programlisting><![CDATA[from Cat cat, Cat rival where cat.mate =
rival.mate]]></programlisting>
+
+ <programlisting><![CDATA[select cat, mate
+from Cat cat, Cat mate
+where cat.mate = mate]]></programlisting>
+
+ <para>
+ <literal>id</literal> (������)�͓��ʂȃ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)
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat where cat.id = 123
+
+from Cat as cat where cat.mate.id = 69]]></programlisting>
+
+ <para>
+ 2�Ԗڂ̃N�G���͌����I�ł��B�e�[�u���������K�v����܂���I
+ </para>
+
+ <para>
+ �܂��������ʎq�̃v���p�e�B��g�p�ł��܂��B������
<literal>Person</literal> ��
+ <literal>country</literal> ��
<literal>medicareNumber</literal> ����Ȃ镡�����ʎq���Ɖ��肵�܂��B
+ </para>
+
+ <programlisting><![CDATA[from bank.Person person
+where person.id.country = 'AU'
+ and person.id.medicareNumber = 123456]]></programlisting>
+
+ <programlisting><![CDATA[from bank.Account account
+where account.owner.id.country = 'AU'
+ and account.owner.id.medicareNumber = 123456]]></programlisting>
+
+ <para>
+ �����x�����܂����A2�Ԗڂ̃N�G���ɂ̓e�[�u���������K�v����܂���B
+ </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
+ </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
+ </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><any></literal>
�Ń}�b�s���O���ꂽ�v���p�e�B�ł�)�B
+ </para>
+
+ <programlisting><![CDATA[from AuditLog log, Payment payment
+where log.item.class = 'Payment' and log.item.id =
payment.id]]></programlisting>
+
+ <para>
+ <literal>log.item.class</literal> ��
<literal>payment.class</literal> ��
+ ��L�̃N�G�����őS���قȂ�f�[�^�x�[�X�J�����̒l��Q�Ƃ���Ƃ������Ƃɒ��ӂ��Ă��������B
+ </para>
+
+ </sect1>
+
+ <sect1 id="queryhql-expressions">
+ <title>Expressions ��</title>
+
+ <para>
+ SQL�� <literal>where</literal>
�߂ŋL�q���邱�Ƃ��o���鎮�̂قƂ�ǂ�HQL�ł�L�q�ł��܂��B:
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ �Z�p���Z�q�F<literal>+, -, *, /</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ 2����r���Z�q�F<literal>=, >=, <=,
<>, !=, like</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ �_�����Z�q�F<literal>and, or, not</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ �O���[�v������\�����ʁF<literal>( )</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>in</literal>,
+ <literal>not in</literal>,
+ <literal>between</literal>,
+ <literal>is null</literal>,
+ <literal>is not null</literal>,
+ <literal>is empty</literal>,
+ <literal>is not empty</literal>,
+ <literal>member of</literal> and
+ <literal>not member of</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ "�V���v��"��case <literal>case ... when ... then ...
else ... end</literal>�A
+ "�T���I"��case <literal>case when ... then ... else
... end</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ �X�g�����O�̘A�� <literal>...||...</literal> �܂���
<literal>concat(...,...)</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>current_date()</literal>,
<literal>current_time()</literal>,
+ <literal>current_timestamp()</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>second(...)</literal>,
<literal>minute(...)</literal>,
+ <literal>hour(...)</literal>,
<literal>day(...)</literal>,
+ <literal>month(...)</literal>,
<literal>year(...)</literal>,
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ EJB-QL 3.0�Œ�`����Ă�����≉�Z�q: <literal>substring(), trim(),
+ lower(), upper(), length(), locate(), abs(), sqrt(),
bit_length()</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>coalesce()</literal> ��
<literal>nullif()</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ �����⎞�Ԃ̒l��String�ɃR���o�[�g����
<literal>str()</literal>�j
+ </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
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ���������C���f�b�N�X�t���̃R���N�V�����̕ʖ��ɓK�p�����HQL��
+ <literal>index()</literal> ���B
+ </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
+ </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
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ JDBC�X�^�C���̈ʒu�p�����[�^ <literal>?</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ ���O�t���p�����[�^: <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>,
+ <literal>'1970-01-01 10:00:01.0'</literal>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Java�� <literal>public static final</literal>
�萔�F<literal>eg.Color.TABBY</literal>
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ <literal>in</literal> �� <literal>between</literal>
�͈ȉ��̂悤�Ɏg�p�ł��܂��B:
+ </para>
+
+ <programlisting><![CDATA[from DomesticCat cat where cat.name between
'A' and 'B']]></programlisting>
+
+ <programlisting><![CDATA[from DomesticCat cat where cat.name in (
'Foo', 'Bar', 'Baz' )]]></programlisting>
+
+ <para>
+ �܂��A�ے�`�ŋL�q���邱�Ƃ�ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[from DomesticCat cat where cat.name not between
'A' and 'B']]></programlisting>
+
+ <programlisting><![CDATA[from DomesticCat cat where cat.name not in (
'Foo', 'Bar', 'Baz' )]]></programlisting>
+
+ <para>
+ ���l�� <literal>is null</literal> �� <literal>is not
null</literal> ��null�l��e�X�g���邽�߂Ɏg�p�ł��܂��B
+ </para>
+
+ <para>
+ Hibernate�ݒ�t�@�C����HQL query
substitutions���`����Aboolean�l���̒��ŊȒP�Ɏg�p�ł��܁B�F
+ </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:
+ </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:
+ </para>
+
+ <programlisting><![CDATA[from Cat cat where cat.kittens.size >
0]]></programlisting>
+
+ <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
+ </para>
+
+ <programlisting><![CDATA[from Calendar cal where
maxelement(cal.holidays) > current_date]]></programlisting>
+
+ <programlisting><![CDATA[from Order order where maxindex(order.items)
> 100]]></programlisting>
+
+ <programlisting><![CDATA[from Order order where minelement(order.items)
> 10000]]></programlisting>
+
+ <para>
+
�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
+ </para>
+
+ <programlisting><![CDATA[select mother from Cat as mother, Cat as kit
+where kit in elements(foo.kittens)]]></programlisting>
+
+ <programlisting><![CDATA[select p from NameList list, Person p
+where p.name = some elements(list.names)]]></programlisting>
+
+ <programlisting><![CDATA[from Cat cat where exists
elements(cat.kittens)]]></programlisting>
+
+ <programlisting><![CDATA[from Player p where 3 > all
elements(p.scores)]]></programlisting>
+
+ <programlisting><![CDATA[from Show show where 'fizard' in
indices(show.acts)]]></programlisting>
+
+ <para>
+ <literal>size</literal>, <literal>elements</literal>,
<literal>indices</literal>,
+ <literal>minindex</literal>,
<literal>maxindex</literal>, <literal>minelement</literal>,
+ <literal>maxelement</literal>
��Hibernate3��where�߂����ŗ��p�\�ł��邱�Ƃɒ��ӂ��Ă��������B
+ </para>
+
+ <para>
+ �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
+ </para>
+
+ <programlisting><![CDATA[from Order order where order.items[0].id =
1234]]></programlisting>
+
+ <programlisting><![CDATA[select person from Person person, Calendar
calendar
+where calendar.holidays['national day'] = person.birthDay
+ and person.nationality.calendar = calendar]]></programlisting>
+
+ <programlisting><![CDATA[select item from Item item, Order order
+where order.items[ order.deliveredItemIndices[0] ] = item and order.id =
11]]></programlisting>
+
+ <programlisting><![CDATA[select item from Item item, Order order
+where order.items[ maxindex(order.items) ] = item and order.id =
11]]></programlisting>
+
+ <para>
+ <literal>[]</literal> ����̎��́A�Z�p���ł�\���܂���B
+ </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
+ </para>
+
+ <programlisting><![CDATA[select item, index(item) from Order order
+ join order.items item
+where index(item) < 5]]></programlisting>
+
+ <para>
+ �x�[�X�ƂȂ�f�[�^�x�[�X���T�|�[�g���Ă���X�J���[SQL�����g�p�ł��܂�
+ </para>
+
+ <programlisting><![CDATA[from DomesticCat cat where upper(cat.name) like
'FRI%']]></programlisting>
+
+ <para>
+ ����܂��S�Ă𗝉��Ă��Ȃ��Ȃ�A���̃N�G����SQL�łǂꂾ�������A�ǂ݂Â炭�o���邩�l���Ă��������B:
+
+ </para>
+
+ <programlisting><![CDATA[select cust
+from Product prod,
+ Store store
+ inner join store.customers cust
+where prod.name = 'widget'
+ and store.location.name in ( 'Melbourne', 'Sydney' )
+ and prod = all elements(cust.currentOrder.lineItems)]]></programlisting>
+
+ <para>
+ <emphasis>�q���g:</emphasis> �Ⴆ���̂悤�ɏo���܂��B
+ </para>
+
+ <programlisting><![CDATA[SELECT cust.name, cust.address, cust.phone,
cust.id, cust.current_order
+FROM customers cust,
+ stores store,
+ locations loc,
+ store_customers sc,
+ product prod
+WHERE prod.name = 'widget'
+ AND store.loc_id = loc.id
+ AND loc.name IN ( 'Melbourne', 'Sydney' )
+ AND sc.store_id = store.id
+ AND sc.cust_id = cust.id
+ AND prod.id = ALL(
+ SELECT item.prod_id
+ FROM line_items item, orders o
+ WHERE item.order_id = o.id
+ AND cust.current_order = o.id
+ )]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="queryhql-ordering">
+ <title>order by��</title>
+
+ <para>
+ �N�G�����Ԃ�list�́A�Ԃ����N���X��R���|�[�l���g�̔C�ӂ̑����ɂ���ĕ��בւ����܂��B�F
+ </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
+ </para>
+ </sect1>
+
+ <sect1 id="queryhql-grouping">
+ <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)
+from Cat cat
+group by cat.color]]></programlisting>
+
+ <programlisting><![CDATA[select foo.id, avg(name), max(name)
+from Foo foo join foo.names name
+group by foo.id]]></programlisting>
+
+ <para>
+ <literal>having</literal> �߂�g���܂��B
+ </para>
+
+ <programlisting><![CDATA[select cat.color, sum(cat.weight), count(cat)
+from Cat cat
+group by cat.color
+having cat.color in (eg.Color.TABBY, eg.Color.BLACK)]]></programlisting>
+
+ <para>
+ ����g�p����f�[�^�x�[�X���T�|�[�g���Ă���Ȃ�A
+ <literal>having</literal> �� <literal>order
by</literal> �߂�SQL���ƏW������g���܂�
+ �i�Ⴆ��MySQL�ɂ͂���܂���j�B
+ </para>
+
+ <programlisting><![CDATA[select cat
+from Cat cat
+ join cat.kittens kitten
+group by cat
+having avg(kitten.weight) > 100
+order by count(kitten) asc, sum(kitten.weight) desc]]></programlisting>
+
+ <para>
+ <literal>group by</literal> �߂� <literal>order
by</literal> �߂�
+ �Z�p����܂ނ��Ƃ��ł��Ȃ����Ƃɒ��ӂ��Ă��������B
+ </para>
+
+ </sect1>
+
+ <sect1 id="queryhql-subqueries" revision="2">
+ <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
+ </para>
+
+ <programlisting><![CDATA[from Cat as fatcat
+where fatcat.weight > (
+ select avg(cat.weight) from DomesticCat cat
+)]]></programlisting>
+
+ <programlisting><![CDATA[from DomesticCat as cat
+where cat.name = some (
+ select name.nickName from Name as name
+)]]></programlisting>
+
+ <programlisting><![CDATA[from Cat as cat
+where not exists (
+ from Cat as mate where mate.mate = cat
+)]]></programlisting>
+
+ <programlisting><![CDATA[from DomesticCat as cat
+where cat.name not in (
+ select name.nickName from Name as name
+)]]></programlisting>
+
+ <programlisting><![CDATA[select cat.id, (select max(kit.weight) from
cat.kitten kit)
+from Cat as cat]]></programlisting>
+
+ <para>
+ HQL���₢���킹�́Aselect�܂���where�߂����Ŏg���邱�Ƃɒ��ӂ��Ă��������B
+ </para>
+
+ <para>
+ select���X�g�ɕ����̎������₢���킹�ɂ́A�^�v����g�����Ƃ��ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat
+where not ( cat.name, cat.color ) in (
+ select cat.name, cat.color from DomesticCat cat
+)]]></programlisting>
+
+ <para>
+ �������̃f�[�^�x�[�X�iOracle��HSQL�ɂ͂���܂���j�ł́A
+ ���̃R���e�L�X�g�ł�^�v�����g���܂��B
+ �Ⴆ�A�N�G���R���|�[�l���g�╡�����[�U�^�ɂ����Ăł��B
+ </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
+ </para>
+
+ </sect1>
+
+ <sect1 id="queryhql-examples">
+ <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�ł��邱�Ƃɒ��ӂ��Ă�������!
+ </para>
+
+ <para>
+ �ȉ��̃N�G���͓���̌ڋq�Ɨ^����ꂽ�ŏ��̍��v�l�ɑ��関���������̒���ID�A
+ ���i�̐��A�����̍��v���v�l�Ő��ĕԂ��܂��B
+ ���i���肷��ہA���݂̃J�^���O��g���܂��B���ʂƂ��ĕԂ����SQL�N�G����
+ <literal>ORDER</literal>,
<literal>ORDER_LINE</literal>, <literal>PRODUCT</literal>,
+ <literal>CATALOG</literal> �����
<literal>PRICE</literal> �e�[�u���ɑ�4�̓��������
+ (�֘A���Ȃ�)���₢���킹�����܂��B
+ </para>
+
+ <programlisting><![CDATA[select order.id, sum(price.amount),
count(item)
+from Order as order
+ join order.lineItems as item
+ join item.product as product,
+ Catalog as catalog
+ join catalog.prices as price
+where order.paid = false
+ and order.customer = :customer
+ and price.product = product
+ and catalog.effectiveDate < sysdate
+ and catalog.effectiveDate >= all (
+ select cat.effectiveDate
+ from Catalog as cat
+ where cat.effectiveDate < sysdate
+ )
+group by order
+having sum(price.amount) > :minAmount
+order by sum(price.amount) desc]]></programlisting>
+
+ <para>
+ ���ċ���ȃN�G���Ȃ̂ł��傤!
���i���͕��₢���킹���܂�g���܂���B���������Ď��̃N�G���͎��ۂɂ͈ȉ��̂悤�ɂȂ�܂��B:
+ </para>
+
+ <programlisting><![CDATA[select order.id, sum(price.amount),
count(item)
+from Order as order
+ join order.lineItems as item
+ join item.product as product,
+ Catalog as catalog
+ join catalog.prices as price
+where order.paid = false
+ and order.customer = :customer
+ and price.product = product
+ and catalog = :currentCatalog
+group by order
+having sum(price.amount) > :minAmount
+order by sum(price.amount) desc]]></programlisting>
+
+ <para>
+ ���̃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
+ </para>
+
+ <programlisting><![CDATA[select count(payment), status.name
+from Payment as payment
+ join payment.currentStatus as status
+ join payment.statusChanges as statusChange
+where payment.status.name <> PaymentStatus.AWAITING_APPROVAL
+ or (
+ statusChange.timeStamp = (
+ select max(change.timeStamp)
+ from PaymentStatusChange change
+ where change.payment = payment
+ )
+ and statusChange.user <> :currentUser
+ )
+group by status.name, status.sortOrder
+order by status.sortOrder]]></programlisting>
+
+ <para>
+ �������set�̑����list�Ƃ��� <literal>statusChanges</literal>
�R���N�V������
+ �}�b�s���O�����Ȃ�A�͂邩�ɊȒP�ɃN�G����L�q�ł���ł��傤�B
+ </para>
+
+ <programlisting><![CDATA[select count(payment), status.name
+from Payment as payment
+ join payment.currentStatus as status
+where payment.status.name <> PaymentStatus.AWAITING_APPROVAL
+ or payment.statusChanges[ maxIndex(payment.statusChanges) ].user <>
:currentUser
+group by status.name, status.sortOrder
+order by status.sortOrder]]></programlisting>
+
+ <para>
+ ���̃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
+ </para>
+
+ <programlisting><![CDATA[select account, payment
+from Account as account
+ left outer join account.payments as payment
+where :currentUser in elements(account.holder.users)
+ and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, PaymentStatus.UNPAID)
+order by account.type.sortOrder, account.accountNumber,
payment.dueDate]]></programlisting>
+
+ <para>
+ �������̃f�[�^�x�[�X�ɂ��ẮA(�֘A������ꂽ)���₢���킹�̎g�p�����K�v������ł��傤�B
+ </para>
+
+ <programlisting><![CDATA[select account, payment
+from Account as account
+ join account.holder.users as user
+ left outer join account.payments as payment
+where :currentUser = user
+ and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, PaymentStatus.UNPAID)
+order by account.type.sortOrder, account.accountNumber,
payment.dueDate]]></programlisting>
+
+ </sect1>
+
+ <sect1 id="queryhql-bulk" revision="2">
+ <title>��ʂ�UPDATE��DELETE</title>
+
+ <para>
+ HQL�͍��� <literal>update</literal> ��
<literal>delete</literal>�A<literal>insert ... select
...</literal>
+ �X�e�[�g�����g��HQL�ɓ���邱�Ƃ�T�|�[�g���Ă��܂��B
+ <xref linkend="batch-direct"/> �ɏڍׂ�����܂��B
+ </para>
+ </sect1>
+
+ <sect1 id="queryhql-tipstricks">
+ <title>Tips & 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
+from User as usr
+ left join usr.messages as msg
+group by usr.id, usr.name
+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�����ݒ�ł��܂�:
+ </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
+from User usr.name
+ join usr.messages msg
+group by usr.id, usr.name
+having count(msg) >= 1]]></programlisting>
+
+ <para>
+ ����������Ă��邹���ŏ�̉��@��message�̌�����
+ �[���� <literal>User</literal>
��Ԃ����Ƃ��ł��Ȃ��Ȃ�A�ȉ��̌`�����g���܂��B
+ </para>
+
+ <programlisting><![CDATA[select usr.id, usr.name
+from User as usr
+ left join usr.messages as msg
+group by usr.id, usr.name
+having count(msg) = 0]]></programlisting>
+
+ <para>
+ JavaBean�̃v���p�e�B�́A���O�t���̃N�G���p�����[�^�Ɍ��т��邱�Ƃ��o���܂��B�F
+ </para>
+
+ <programlisting><![CDATA[Query q = s.createQuery("from foo Foo as
foo where foo.name=:name and foo.size=:size");
+q.setProperties(fooBean); // fooBean has getName() and getSize()
+List foos = q.list();]]></programlisting>
+
+ <para>
+ �R���N�V�����̓t�B���^�t�� <literal>Query</literal>
�C���^�[�t�F�C�X��g�p���邱�ƂŃy�[�W����邱�Ƃ��ł��܂��B:
+ </para>
+
+ <programlisting><![CDATA[Query q = s.createFilter( collection,
"" ); // the trivial filter
+q.setMaxResults(PAGE_SIZE);
+q.setFirstResult(PAGE_SIZE * pageNumber);
+List page = q.list();]]></programlisting>
+
+ <para>
+ �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>
+
+ </sect1>
+
+</chapter>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_sql.xml (from
rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/query_sql.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_sql.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/query_sql.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,724 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="querysql" revision="2">
+ <title>�l�C�e�B�uSQL</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>Hibernate3�ł́A�����A�X�V�A�폜�A�ǂݍ��ݏ����̂悤�Ȃ��ׂĂ�
+ SQL�i�X�g�A�h�v���V�[�W����܂ށj��菑���ł��܂��B</para>
+
+ <sect1 id="querysql-creating" revision="4">
+ <title><literal>SQLQuery</literal> �̎g�p</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>
+
+ <sect2>
+ <title>�X�J���[�̃N�G��</title>
+
+ <para>�ł��{�I��SQL�N�G���̓X�J���[�i�l�j�̃��X�g�邱�Ƃł��B</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><literal>ResultSetMetadata</literal>
��g�p����I�[�o�[�w�b�h����邽�߁A
+ ������͒P�ɉ����Ԃ���邩���m�ɂ��邽�߁A<literal>addScalar()</literal>
+ ��g���܂��B</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM
CATS")
+ .addScalar("ID", Hibernate.LONG)
+ .addScalar("NAME", Hibernate.STRING)
+ .addScalar("BIRTHDATE", Hibernate.DATE)
+]]></programlisting>
+
+ <para>���̃N�G���Ŏw�肳��Ă����̂��L�Ɏ����܂��B</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>SQL�N�G��������</para>
+ </listitem>
+
+ <listitem>
+ <para>�Ԃ����J�����ƌ^</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>�X�J���[�̌^����Ȃ����Ƃ�ł��܂��B</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM
CATS")
+ .addScalar("ID", Hibernate.LONG)
+ .addScalar("NAME")
+ .addScalar("BIRTHDATE")
+]]></programlisting>
+
+ <para>
+ ����͖{���I�ɑO�Ɠ����N�G���ł����A�A
+ NAME �� BIRTHDATE �̌^���߂邽�߂� <literal>ResultSetMetaData</literal>
+ ��g�p���܂��B����AID �̌^�͖����I�Ɏw�肳��Ă��܂��B
+ </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
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>�G���e�B�e�B�̃N�G��</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>
+
+ <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>
+
+ <itemizedlist>
+ <listitem>
+ <para>SQL�N�G��������</para>
+ </listitem>
+
+ <listitem>
+ <para>�N�G�����Ԃ��G���e�B�e�B��SQL�e�[�u���̕ʖ�
+ </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>�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>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT ID, NAME,
BIRTHDATE, DOG_ID FROM CATS").addEntity(Cat.class);
+]]></programlisting>
+
+ <para>����ɂ�� cat.getDog() ���������@�\���܂��B</para>
+ </sect2>
+
+ <sect2>
+ <title>�֘A�ƃR���N�V�����̑���</title>
+
+ <para>�v���L�V���������邽�߂̗]���ȏ�������邽�߁A
+ <literal>Dog</literal> �̒��ő��������ł��܂��B
+ ����� <literal>addJoin()</literal> ���\�b�h�ɂ��s���܂��B
+ �֘A������̓R���N�V�����Ɍ����ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT c.ID, NAME,
BIRTHDATE, DOG_ID, D_ID, D_NAME FROM CATS c, DOGS d WHERE c.DOG_ID = d.D_ID")
+ .addEntity("cat", Cat.class)
+ .addJoin("cat.dog");
+]]></programlisting>
+
+ <para>���̗�̒��ŁA�Ԃ���� <literal>Cat</literal> �́A
+ �f�[�^�x�[�X�ւ̗]�������Ȃ��ŁA
+ ���S�ɏ��������ꂽ <literal>dog</literal> �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>
+
+ <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>
+ </sect2>
+
+ <sect2>
+ <title>�����G���e�B�e�B�̎擾</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>���L�̂悤�ȁi���s�������ȁj�N�G���ł́A
+ �J�����ʖ��C���W�F�N�V�����icolumn alias injection�j���K�v�ł��B</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT c.*, m.* FROM
CATS c, CATS m WHERE c.MOTHER_ID = m.ID")
+ .addEntity("cat", Cat.class)
+ .addEntity("mother", Cat.class)
+]]></programlisting>
+
+ <para>���̃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>���L�̌`���́A�J���������d�����Ă���v�ł��B</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT {cat.*},
{mother.*} FROM CATS c, CATS m WHERE c.MOTHER_ID = m.ID")
+ .addEntity("cat", Cat.class)
+ .addEntity("mother", Cat.class)
+]]></programlisting>
+
+ <para>���̃N�G���Ŏw�肳��Ă����̂��L�Ɏ����܂��B</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>SQL�N�G��������
+ �iHibernate���J�����̕ʖ���}�����邽�߂̃v���[�X�z���_��܂ށj</para>
+ </listitem>
+
+ <listitem>
+ <para>�N�G���ɂ���ĕԂ����G���e�B�e�B</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>
+
+ <programlisting><![CDATA[String sql = "SELECT ID as {c.id}, NAME as
{c.name}, " +
+ "BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother.*} " +
+ "FROM CAT_LOG c, CAT_LOG m WHERE {c.mother} = c.ID";
+
+List loggedCats = sess.createSQLQuery(sql)
+ .addEntity("cat", Cat.class)
+ .addEntity("mother", Cat.class).list()
+]]></programlisting>
+
+ <sect3 id="querysql-aliasreferences" revision="2">
+ <title>�ʖ��ƃv���p�e�B�̃��t�@�����X</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>�ʖ��C���W�F�N�V�����Ƃ��Ďg�p�ł����̂��\�Ɏ����܂��B
+ ���ӁF���\�̕ʖ��͈��ł��B
+ ���ꂼ��̕ʖ��͈�ӂł���A�g�p����ۂɂ͂����炭�قȂ閼�O�����܂��B</para>
+
+ <table frame="topbot" id="aliasinjection-summary">
+ <title>�ʖ��ɑ}�����閼�O</title>
+
+ <tgroup cols="3">
+ <colspec colwidth="1*" />
+
+ <colspec colwidth="1*" />
+
+ <colspec colwidth="2.5*" />
+
+ <thead>
+ <row>
+ <entry>���</entry>
+ <entry>�\��</entry>
+ <entry>��</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>�P���ȃv���p�e�B</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><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><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><literal>{[aliasname].*}</literal></entry>
+ <entry><literal>{item.*}</literal></entry>
+ </row>
+ <row>
+ <entry>�R���N�V�����̃L�[</entry>
+
<entry><literal>{[aliasname].key}</literal></entry>
+ <entry><literal>ORGID as
{coll.key}</literal></entry>
+ </row>
+ <row>
+ <entry>�R���N�V������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><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><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><literal>{[aliasname].element.*}</literal></entry>
+
<entry><literal>{coll.element.*}</literal></entry>
+ </row>
+ <row>
+ <entry>�R���N�V�����̑S�v���p�e�B</entry>
+
<entry><literal>{[aliasname].*}</literal></entry>
+ <entry><literal>{coll.*}</literal></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>�Ǘ�����Ă��Ȃ��G���e�B�e�B�̎擾</title>
+
+ <para>�l�C�e�B�uSQL�N�G���� ResultTransformer ��K�p�ł��܂��B
+ ���L�̂悤�ɁA�Ⴆ�A�Ǘ�����Ă��Ȃ��G���e�B�e�B��Ԃ��܂��B</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT NAME, BIRTHDATE
FROM CATS")
+
.setResultTransformer(Transformers.aliasToBean(CatDTO.class))]]></programlisting>
+
+ <para>���̃N�G���Ŏw�肳��Ă����̂��L�Ɏ����܂��B</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>SQL�N�G��������</para>
+ </listitem>
+
+ <listitem>
+ <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>
+ </sect2>
+
+ <sect2>
+ <title>�p���̐���</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>
+ </sect2>
+
+ <sect2>
+ <title>�p�����[�^</title>
+
+ <para>�l�C�e�B�uSQL�N�G���́A�ȉ��̂悤�ɁA
+ ���O�t���p�����[�^�i:name�j�Ɠ��l�Ɉʒu�p�����[�^��T�|�[�g���܂��B</para>
+
+ <programlisting><![CDATA[Query query = sess.createSQLQuery("SELECT *
FROM CATS WHERE NAME like ?").addEntity(Cat.class);
+List pusList = query.setString(0, "Pus%").list();
+
+query = sess.createSQLQuery("SELECT * FROM CATS WHERE NAME like
:name").addEntity(Cat.class);
+List pusList = query.setString("name", "Pus%").list();
]]></programlisting>
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="querysql-namedqueries" revision="3">
+ <title>���O�t��SQL�N�G��</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>
+
+ <programlisting><![CDATA[<sql-query name="persons">
+ <return alias="person" class="eg.Person"/>
+ SELECT person.NAME AS {person.name},
+ person.AGE AS {person.age},
+ person.SEX AS {person.sex}
+ FROM PERSON person
+ WHERE person.NAME LIKE :namePattern
+</sql-query>]]></programlisting>
+
+ <programlisting><![CDATA[List people =
sess.getNamedQuery("persons")
+ .setString("namePattern", namePattern)
+ .setMaxResults(50)
+ .list();]]></programlisting>
+
+ <para>�֘A�������邽�߂ƃR���N�V��������������N�G�����`���邽�߂ɁA���ꂼ��
+ <literal><return-join></literal> ��
<literal><load-collection></literal>
+ �v�f��g���܂��B</para>
+
+ <programlisting><![CDATA[<sql-query name="personsWith">
+ <return alias="person" class="eg.Person"/>
+ <return-join alias="address"
property="person.mailingAddress"/>
+ SELECT person.NAME AS {person.name},
+ person.AGE AS {person.age},
+ person.SEX AS {person.sex},
+ address.STREET AS {address.street},
+ address.CITY AS {address.city},
+ address.STATE AS {address.state},
+ address.ZIP AS {address.zip}
+ FROM PERSON person
+ JOIN ADDRESS address
+ ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'
+ WHERE person.NAME LIKE :namePattern
+</sql-query>]]></programlisting>
+
+ <para>���O�t��SQL�N�G���̓X�J���l��Ԃ����Ƃ�ł��܂��B
+ <literal><return-scalar></literal> �v�f��g���āA
+ ��̕ʖ���Hibernate�̌^��錾���Ȃ���Ȃ�܂���B</para>
+
+ <programlisting><![CDATA[<sql-query name="mySqlQuery">
+ <return-scalar column="name" type="string"/>
+ <return-scalar column="age" type="long"/>
+ SELECT p.NAME AS name,
+ p.AGE AS age,
+ FROM PERSON p WHERE p.NAME LIKE 'Hiber%'
+</sql-query>]]></programlisting>
+
+
+ <para>���U���g�Z�b�g�̃}�b�s���O����
<literal><resultset></literal>
+ �ɊO�o�����邱�Ƃ��ł��܂��B
+ �����̖��O�t���N�G���ōė��p������A<literal>setResultSetMapping()</literal>
+ API��ʂ��čė��p������ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[<resultset name="personAddress">
+ <return alias="person" class="eg.Person"/>
+ <return-join alias="address"
property="person.mailingAddress"/>
+</resultset>
+
+<sql-query name="personsWith" resultset-ref="personAddress">
+ SELECT person.NAME AS {person.name},
+ person.AGE AS {person.age},
+ person.SEX AS {person.sex},
+ address.STREET AS {address.street},
+ address.CITY AS {address.city},
+ address.STATE AS {address.state},
+ address.ZIP AS {address.zip}
+ FROM PERSON person
+ JOIN ADDRESS address
+ ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'
+ WHERE person.NAME LIKE :namePattern
+</sql-query>]]></programlisting>
+
+ <para>����ɁAhbm�t�@�C����̃��U���g�Z�b�g�̃}�b�s���O����
+ ����Java�R�[�h�̒��Ŏg�p�ł��܂��B</para>
+
+ <programlisting><![CDATA[List cats = sess.createSQLQuery(
+ "select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother =
cat.id"
+ )
+ .setResultSetMapping("catAndKitten")
+ .list();]]></programlisting>
+
+ <sect2 id="propertyresults">
+ <title>��Ɨ�̕ʖ����I�Ɏw�肷�邽�߂� return-property ��g��</title>
+
+ <para>�ʖ���}�����邽�߂� <literal>{}</literal> �\����g������ɁA
+ <literal><return-property></literal> ��g���A
+ �ǂ̗�̕ʖ���g���̂����ł��܂��B</para>
+
+ <programlisting><![CDATA[<sql-query name="mySqlQuery">
+ <return alias="person" class="eg.Person">
+ <return-property name="name" column="myName"/>
+ <return-property name="age" column="myAge"/>
+ <return-property name="sex" column="mySex"/>
+ </return>
+ SELECT person.NAME AS myName,
+ person.AGE AS myAge,
+ person.SEX AS mySex,
+ FROM PERSON person WHERE person.NAME LIKE :name
+</sql-query>
+]]></programlisting>
+
+ <para><literal><return-property></literal>
�͕����̗������܂��B
+ ����́A������̃v���p�e�B���ߍׂ�������ł��Ȃ��Ƃ����A
+ <literal>{}</literal> �\���̐���������܂��B</para>
+
+ <programlisting><![CDATA[<sql-query
name="organizationCurrentEmployments">
+ <return alias="emp" class="Employment">
+ <return-property name="salary">
+ <return-column name="VALUE"/>
+ <return-column name="CURRENCY"/>
+ </return-property>
+ <return-property name="endDate" column="myEndDate"/>
+ </return>
+ SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer},
+ STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate},
+ REGIONCODE as {emp.regionCode}, EID AS {emp.id}, VALUE, CURRENCY
+ FROM EMPLOYMENT
+ WHERE EMPLOYER = :id AND ENDDATE IS NULL
+ ORDER BY STARTDATE ASC
+</sql-query>]]></programlisting>
+
+ <para>���̗�ł́A�}���̂��߂� <literal>{}</literal> �\���Ƃ�������ɁA
+ <literal><return-property></literal>
��g���Ă��邱�Ƃɒ��ӂ��Ă��������B
+ ��ƃv���p�e�B��ǂ̂悤�ɎQ�Ƃ��邩��I�ׂ܂��B</para>
+
+ <para>�}�b�s���O�� discriminator ���܂܂�Ă���ꍇ�A
+ discriminator �̗��w�肷�邽�߂ɁA<return-discriminator>
+ ��g��Ȃ���Ȃ�܂���B</para>
+ </sect2>
+
+ <sect2 id="sp_query" revision="1">
+ <title>�₢���킹���邽�߂ɃX�g�A�h�v���V�[�W����g��</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>
+
+ <programlisting><![CDATA[CREATE OR REPLACE FUNCTION selectAllEmployments
+ RETURN SYS_REFCURSOR
+AS
+ st_cursor SYS_REFCURSOR;
+BEGIN
+ OPEN st_cursor FOR
+ SELECT EMPLOYEE, EMPLOYER,
+ STARTDATE, ENDDATE,
+ REGIONCODE, EID, VALUE, CURRENCY
+ FROM EMPLOYMENT;
+ RETURN st_cursor;
+ END;]]></programlisting>
+
+ <para>Hibernate�ł��̃N�G����g�����߂ɂ́A
+ ���O�t���N�G���Ń}�b�s���O����K�v������܂��B</para>
+
+ <programlisting><![CDATA[<sql-query
name="selectAllEmployees_SP" callable="true">
+ <return alias="emp" class="Employment">
+ <return-property name="employee" column="EMPLOYEE"/>
+ <return-property name="employer" column="EMPLOYER"/>
+ <return-property name="startDate" column="STARTDATE"/>
+ <return-property name="endDate" column="ENDDATE"/>
+ <return-property name="regionCode"
column="REGIONCODE"/>
+ <return-property name="id" column="EID"/>
+ <return-property name="salary">
+ <return-column name="VALUE"/>
+ <return-column name="CURRENCY"/>
+ </return-property>
+ </return>
+ { ? = call selectAllEmployments() }
+</sql-query>]]></programlisting>
+
+ <para>���ӁF���̂Ƃ���A�X�g�A�h�v���V�[�W���̓X�J���ƃG���e�B�e�B��Ԃ��݂̂ł��B
+ <literal><return-join></literal> ��
<literal><load-collection></literal>
+ �̓T�|�[�g����Ă��܂���B</para>
+
+ <sect3 id="querysql-limits-storedprocedures"
revision="1">
+ <title>�X�g�A�h�v���V�[�W����g����ł̃��[���Ɛ���</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><literal>setFirstResult()/setMaxResults()</literal>
��g���āA
+ �X�g�A�h�v���V�[�W���N�G����y�[�W�������邱�Ƃ͂ł��܂���B</para>
+
+ <para>��������Ăяo�����́A�W���ł���SQL92�ɏ]�����Ƃł��B
+ <literal>{ ? = call functionName(<parameters>)
}</literal> ��
+ <literal>{ ? = call procedureName(<parameters>)
}</literal> �ł��B
+ �l�C�e�B�u�ȌĂяo���\���̓T�|�[�g����Ă��܂���B</para>
+
+ <para>Oracle�ɂ͉��L�̃��[�����K�p����܂��B</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>
+ </listitem>
+ </itemizedlist>
+
+ <para>Sybase��MS SQL�T�[�o�[�ɓK�p����郋�[�����L�Ɏ����܂��B</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>
+ </listitem>
+
+ <listitem>
+ <para>�v���V�[�W���̒��� <literal>SET NOCOUNT ON</literal>
��L���ɂł���A
+ �����炭�������悭�Ȃ�ł��傤�B
+ �������A����͕K�v���ł͂���܂���B</para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+ </sect2>
+ </sect1>
+
+ <sect1 id="querysql-cud">
+ <title>�쐬�A�X�V�A�폜�̂��߂̃J�X�^��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><sql-insert></literal>�A
+ <literal><sql-delete></literal>�A
+ <literal><sql-update></literal>
�Ƃ����}�b�s���O�^�O���D�悳��܂��B</para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id">
+ <generator class="increment"/>
+ </id>
+ <property name="name" not-null="true"/>
+ <sql-insert>INSERT INTO PERSON (NAME, ID) VALUES ( UPPER(?), ?
)</sql-insert>
+ <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE ID=?</sql-update>
+ <sql-delete>DELETE FROM PERSON WHERE ID=?</sql-delete>
+</class>]]></programlisting>
+
+ <para>SQL�ڃf�[�^�x�[�X�Ŏ��s���邽�߁A�D�݂̕������R�Ɏg�p�ł��܂��B
+ �f�[�^�x�[�X�Ǝ���SQL��g���A���R�}�b�s���O�̃|�[�^�r���e�B��������܂��B</para>
+
+ <para><literal>callable</literal> ������Z�b�g����A
+ �X�g�A�h�v���V�[�W����g�p�ł��܂��B</para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id">
+ <generator class="increment"/>
+ </id>
+ <property name="name" not-null="true"/>
+ <sql-insert callable="true">{call createPerson (?,
?)}</sql-insert>
+ <sql-delete callable="true">{? = call deletePerson
(?)}</sql-delete>
+ <sql-update callable="true">{? = call updatePerson (?,
?)}</sql-update>
+</class>]]></programlisting>
+
+ <para>���̂Ƃ���A�ʒu�p�����[�^�̏��Ԃ͂ƂĂ�d�v�ł��B
+ ���Ȃ킿�AHibernate�����҂��鏇���łȂ���Ȃ�܂���B</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>�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>
+
+ <programlisting><![CDATA[CREATE OR REPLACE FUNCTION updatePerson (uid IN
NUMBER, uname IN VARCHAR2)
+ RETURN NUMBER IS
+BEGIN
+
+ update PERSON
+ set
+ NAME = uname,
+ where
+ ID = uid;
+
+ return SQL%ROWCOUNT;
+
+END updatePerson;]]></programlisting>
+ </sect1>
+
+ <sect1 id="querysql-load">
+ <title>���[�h�̂��߂̃J�X�^��SQL</title>
+
+
<para>�G���e�B�e�B��ǂݍ��ނ��߂̓Ǝ���SQL�i�������HQL�j�N�G����錾�ł��܂��B</para>
+
+ <programlisting><![CDATA[<sql-query name="person">
+ <return alias="pers" class="Person"
lock-mode="upgrade"/>
+ SELECT NAME AS {pers.name}, ID AS {pers.id}
+ FROM PERSON
+ WHERE ID=?
+ FOR UPDATE
+</sql-query>]]></programlisting>
+
+ <para>����́A�܂��Ɂi�ȑO�c�_�����j���O�t���N�G���̐錾�ł��B
+ ���̖��O�t���N�G����N���X�̃}�b�s���O����Q�Ƃł��܂��B</para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id">
+ <generator class="increment"/>
+ </id>
+ <property name="name" not-null="true"/>
+ <loader query-ref="person"/>
+</class>]]></programlisting>
+
+
+ <para>����̓X�g�A�h�v���V�[�W���ł�������삵�܂��B</para>
+
+ <para>���̂悤�ɁA�R���N�V�������[�h���邽�߂̃N�G��������`���Ă悢�ł��B</para>
+
+ <programlisting><![CDATA[<set name="employments"
inverse="true">
+ <key/>
+ <one-to-many class="Employment"/>
+ <loader query-ref="employments"/>
+</set>]]></programlisting>
+
+ <programlisting><![CDATA[<sql-query name="employments">
+ <load-collection alias="emp" role="Person.employments"/>
+ SELECT {emp.*}
+ FROM EMPLOYMENT emp
+ WHERE EMPLOYER = :id
+ ORDER BY STARTDATE ASC, EMPLOYEE ASC
+</sql-query>]]></programlisting>
+
+ <para>���̂悤�ɁA�����t�F�b�`�ɂ��R���N�V�������[�h����
+ �G���e�B�e�B���[�_�[���`�ł��܂��B</para>
+
+ <programlisting><![CDATA[<sql-query name="person">
+ <return alias="pers" class="Person"/>
+ <return-join alias="emp" property="pers.employments"/>
+ SELECT NAME AS {pers.*}, {emp.*}
+ FROM PERSON pers
+ LEFT OUTER JOIN EMPLOYMENT emp
+ ON pers.ID = emp.PERSON_ID
+ WHERE ID=?
+</sql-query>]]></programlisting>
+ </sect1>
+
+</chapter>
\ No newline at end of file
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/session_api.xml
(from rev 14075,
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/session_api.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/session_api.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/session_api.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,1120 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="objectstate">
+ <title>�I�u�W�F�N�g����</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
+ </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
+ </para>
+
+ <sect1 id="objectstate-overview">
+ <title>Hibernate�ɂ�����I�u�W�F�N�g�̏��</title>
+
+ <para>
+ Hibernate�͎��̂悤�ȃI�u�W�F�N�g�̏�Ԃ��`���A�T�|�[�g���Ă��܂��B
+ </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
+ </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
+ </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
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ ���ꂩ��A��ԂƏ�ԑJ�ځi�����āA�J�ڂ̂��������ƂȂ�Hibernate�̃��\�b�h�j�ɂ���
�A�ڍׂɏq�ׂ܂��B
+ </para>
+
+ </sect1>
+
+ <sect1 id="objectstate-makingpersistent" revision="1">
+ <title>�I�u�W�F�N�g��i����Ԃɂ���</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
+ </para>
+
+
+ <programlisting><![CDATA[DomesticCat fritz = new DomesticCat();
+fritz.setColor(Color.GINGER);
+fritz.setSex('M');
+fritz.setName("Fritz");
+Long generatedId = (Long) sess.save(fritz);]]></programlisting>
+
+ <para>
+ <literal>Cat</literal> �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
+ </para>
+
+ <para>
+ ����ɁA���ʎq������ɂƂ� <literal>save()</literal>
+ ���\�b�h��g���āA ���ʎq���蓖�Ă邱�Ƃ�ł��܂��B
+ </para>
+
+
+ <programlisting><![CDATA[DomesticCat pk = new DomesticCat();
+pk.setColor(Color.TABBY);
+pk.setSex('F');
+pk.setName("PK");
+pk.setKittens( new HashSet() );
+pk.addKitten(fritz);
+sess.save( pk, new Long(1234) );]]></programlisting>
+
+ <para>
+ �i��������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>
+
+ <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>
+
+ </sect1>
+
+ <sect1 id="objectstate-loading">
+ <title>�I�u�W�F�N�g�̃��[�h</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>
+
+
+ <programlisting><![CDATA[Cat fritz = (Cat) sess.load(Cat.class,
generatedId);]]></programlisting>
+
+
+ <programlisting><![CDATA[// you need to wrap primitive identifiers
+long id = 1234;
+DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long(id)
);]]></programlisting>
+ <para>
+ ���邢�́A�ȉ��̂悤�ɁA�����̃C���X�^���X�ɏ�Ԃ��[�h���邱�Ƃ�ł��܂��B </para>
+
+
+ <programlisting><![CDATA[Cat cat = new DomesticCat();
+// load pk's state into cat
+sess.load( cat, new Long(pkId) );
+Set kittens = cat.getKittens();]]></programlisting>
+
+ <para>
+ DB�ɊY������s�������ꍇ�A <literal>load()</literal> �͉s�\�ȗ�O��
�����邱�Ƃɒ��ӂ��܂��傤�B
+ ���̃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>
+
+ <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>
+
+
+ <programlisting><![CDATA[Cat cat = (Cat) sess.get(Cat.class, id);
+if (cat==null) {
+ cat = new Cat();
+ sess.save(cat, id);
+}
+return cat;]]></programlisting>
+
+ <para>
+ <literal>LockMode</literal> ��g���A
+ <literal>SELECT ... FOR UPDATE</literal>�Ƃ���SQL��
�g���ăI�u�W�F�N�g���[�h���邱�Ƃ��ł��܂��B
+ �ڍׂȏ��́AAPI�h�L�������g��Q�Ƃ��Ă��������B </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>
+
+ <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>
+
+
+ <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>
+
+ </sect1>
+
+ <sect1 id="objectstate-querying" revision="1">
+ <title>�N�G��</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>
+
+ <sect2 id="objectstate-querying-executing"
revision="1">
+ <title>�N�G���̎��s</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>
+
+
+ <programlisting><![CDATA[List cats = session.createQuery(
+ "from Cat as cat where cat.birthdate < ?")
+ .setDate(0, date)
+ .list();
+
+List mothers = session.createQuery(
+ "select mother from Cat as cat join cat.mother as mother where cat.name =
?")
+ .setString(0, name)
+ .list();
+
+List kittens = session.createQuery(
+ "from Cat as cat where cat.mother = ?")
+ .setEntity(0, pk)
+ .list();
+
+Cat mother = (Cat) session.createQuery(
+ "select cat.mother from Cat as cat where cat = ?")
+ .setEntity(0, izi)
+ .uniqueResult();]]
+
+Query mothersWithKittens = (Cat) session.createQuery(
+ "select mother from Cat as mother left join fetch mother.kittens");
+Set uniqueMothers = new HashSet(mothersWithKittens.list());
+
+ ]]></programlisting>
+
+ <para>
+ �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>
+
+ <sect3 id="objectstate-querying-executing-iterate">
+ <title>���ʂ�C�e���[�g����</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>
+
+
+ <programlisting><![CDATA[// fetch ids
+Iterator iter = sess.createQuery("from eg.Qux q order by
q.likeliness").iterate();
+while ( iter.hasNext() ) {
+ Qux qux = (Qux) iter.next(); // fetch the object
+ // something we couldnt express in the query
+ if ( qux.calculateComplicatedAlgorithm() ) {
+ // delete the current instance
+ iter.remove();
+ // dont need to process the rest
+ break;
+ }
+}]]></programlisting>
+ </sect3>
+
+ <sect3 id="objectstate-querying-executing-tuples">
+ <title>�I�u�W�F�N�g�̑g�ituple�j��Ԃ��N�G��</title>
+ <para>
+ Hibernate�̃N�G���ł́A���X�A�I�u�W�F�N�g�̑g��Ԃ����Ƃ�����܂��B
���̏ꍇ�́A�e�^�v���͔z��Ƃ��ĕԂ���܂��B
+ </para>
+
+
+ <programlisting><![CDATA[Iterator kittensAndMothers =
sess.createQuery(
+ "select kitten, mother from Cat kitten join kitten.mother mother")
+ .list()
+ .iterator();
+
+while ( kittensAndMothers.hasNext() ) {
+ Object[] tuple = (Object[]) kittensAndMothers.next();
+ Cat kitten = (Cat) tuple[0];
+ Cat mother = (Cat) tuple[1];
+ ....
+}]]></programlisting>
+
+ </sect3>
+
+ <sect3 id="objectstate-querying-executing-scalar"
revision="1">
+ <title>�X�J���[�̌���</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>
+
+
+ <programlisting><![CDATA[Iterator results = sess.createQuery(
+ "select cat.color, min(cat.birthdate), count(cat) from Cat cat " +
+ "group by cat.color")
+ .list()
+ .iterator();
+
+while ( results.hasNext() ) {
+ Object[] row = (Object[]) results.next();
+ Color type = (Color) row[0];
+ Date oldest = (Date) row[1];
+ Integer count = (Integer) row[2];
+ .....
+}]]></programlisting>
+
+ </sect3>
+
+ <sect3 id="objectstate-querying-executing-parameters">
+ <title>�p�����[�^�̃o�C���h</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>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para> ���O�t���p�����[�^�́A�N�G��������ɓo�ꂷ�鏇�ԂƖ��W�ł�
</para>
+ </listitem>
+ <listitem>
+ <para> �����N�G����ɕ�����o�ꂷ�邱�Ƃ��ł��܂� </para>
+ </listitem>
+ <listitem>
+ <para> �������g�������܂� </para>
+ </listitem>
+ </itemizedlist>
+
+
+ <programlisting><![CDATA[//named parameter (preferred)
+Query q = sess.createQuery("from DomesticCat cat where cat.name = :name");
+q.setString("name", "Fritz");
+Iterator cats = q.iterate();]]></programlisting>
+
+
+ <programlisting><![CDATA[//positional parameter
+Query q = sess.createQuery("from DomesticCat cat where cat.name = ?");
+q.setString(0, "Izi");
+Iterator cats = q.iterate();]]></programlisting>
+
+
+ <programlisting><![CDATA[//named parameter list
+List names = new ArrayList();
+names.add("Izi");
+names.add("Fritz");
+Query q = sess.createQuery("from DomesticCat cat where cat.name in
(:namesList)");
+q.setParameterList("namesList", names);
+List cats = q.list();]]></programlisting>
+
+ </sect3>
+
+ <sect3 id="objectstate-querying-executing-pagination">
+ <title>�y�[�W����
+ </title>
+
+ <para>
+ ResultSet�ɐ����i�����������ő�s���╜���������ŏ��̍s�j�������K�v������A
+ �ȉ��̂悤�ɁA <literal>Query</literal>
�C���^�[�t�F�C�X�̃��\�b�h��g���܂��B </para>
+
+
+ <programlisting><![CDATA[Query q = sess.createQuery("from
DomesticCat cat");
+q.setFirstResult(20);
+q.setMaxResults(10);
+List cats = q.list();]]></programlisting>
+
+ <para>
�����t���̃N�G����DBMS�̃l�C�e�B�u��SQL�ɕϊ�������@��AHibernate�͒m���Ă��܂��B
+ </para>
+
+ </sect3>
+
+ <sect3 id="objectstate-querying-executing-scrolling">
+ <title>�X�N���[���\�ȃC�e���[�V����</title>
+
+ <para>
+ JDBC�h���C�o���X�N���[���\��
<literal>ResultSet</literal> ��T�|�[�g������A
+ <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>
+
+
+ <programlisting><![CDATA[Query q = sess.createQuery("select
cat.name, cat from DomesticCat cat " +
+ "order by cat.name");
+ScrollableResults cats = q.scroll();
+if ( cats.first() ) {
+
+ // find the first name on each page of an alphabetical list of cats by name
+ firstNamesOfPages = new ArrayList();
+ do {
+ String name = cats.getString(0);
+ firstNamesOfPages.add(name);
+ }
+ while ( cats.scroll(PAGE_SIZE) );
+
+ // Now get the first page of cats
+ pageOfCats = new ArrayList();
+ cats.beforeFirst();
+ int i=0;
+ while( ( PAGE_SIZE > i++ ) && cats.next() ) pageOfCats.add( cats.get(1)
);
+
+}
+cats.close()]]></programlisting>
+
+ <para>
+
���̋@�\�ɂ̓I�[�v����Ԃ̃f�[�^�x�[�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>
+
+ </sect3>
+
+ <sect3 id="objectstate-querying-executing-named"
revision="1">
+ <title>���O�t���N�G���̊O�o��</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>
+
+
+ <programlisting><![CDATA[<query
name="ByNameAndMaximumWeight"><![CDATA[
+ from eg.DomesticCat as cat
+ where cat.name = ?
+ and cat.weight > ?
+] ]></query>]]></programlisting>
+
+ <para>�p�����[�^�̃o�C���f�B���O�Ǝ��s�́A�ȉ��̂悤�ȃv���O�����ōs���܂��B
</para>
+
+
+ <programlisting><![CDATA[Query q =
sess.getNamedQuery("ByNameAndMaximumWeight");
+q.setString(0, name);
+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>
+ <literal><hibernate-mapping></literal>
�̒��̃N�G����`�́A�N�G���ɑ���
+ ���j�[�N�Ȗ��O���K�v�Ȃ��Ƃɂ���ӂ��Ă��������B����ɑ��āA
<literal><class></literal> �̒���
+
�N�G����`�́A�N���X�̊��S���薼���O�ɕt������̂ŁA�����I�Ƀ��j�[�N�Ȗ��O�ɂȂ�܂��B
+ ��F <literal>eg.Cat.ByNameAndMaximumWeight</literal>
+ </para>
+ </sect3>
+ </sect2>
+
+ <sect2 id="objectstate-filtering" revision="1">
+ <title>�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>
+
+
+ <programlisting><![CDATA[Collection blackKittens =
session.createFilter(
+ pk.getKittens(),
+ "where this.color = ?")
+ .setParameter( Color.BLACK, Hibernate.custom(ColorUserType.class) )
+ .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>
+
+ <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>
+
+
+ <programlisting><![CDATA[Collection blackKittenMates =
session.createFilter(
+ pk.getKittens(),
+ "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>
+
+
+ <programlisting><![CDATA[Collection tenKittens =
session.createFilter(
+ mother.getKittens(), "")
+ .setFirstResult(0).setMaxResults(10)
+ .list();]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="objecstate-querying-criteria" revision="1">
+ <title>�N���C�e���A�̃N�G��</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>
+
+
+ <programlisting><![CDATA[Criteria crit =
session.createCriteria(Cat.class);
+crit.add( Restrictions.eq( "color", eg.Color.BLACK ) );
+crit.setMaxResults(10);
+List cats = crit.list();]]></programlisting>
+
+ <para> <literal>Criteria</literal> ��
+ <literal>Example</literal> API�̏ڍׂ́A <xref
linkend="querycriteria"/>
+ �ɏq�ׂ��Ă��܂��B </para>
+
+ </sect2>
+
+ <sect2 id="objectstate-querying-nativesql"
revision="2">
+ <title>�l�C�e�B�uSQL�̃N�G��</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>
+
+ <programlisting><![CDATA[List cats =
session.createSQLQuery("SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM<10")
+ .addEntity("cat", Cat.class)
+.list();]]></programlisting>
+
+ <programlisting><![CDATA[List cats = session.createSQLQuery(
+ "SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, " +
+ "{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... " +
+ "FROM CAT {cat} WHERE ROWNUM<10")
+ .addEntity("cat", Cat.class)
+.list()]]></programlisting>
+
+ <para>
+
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>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="objectstate-modifying" revision="1">
+ <title>�i���I�u�W�F�N�g�̏C��</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>
+
+
+ <programlisting><![CDATA[DomesticCat cat = (DomesticCat) sess.load(
Cat.class, new Long(69) );
+cat.setName("PK");
+sess.flush(); // changes to cat are automatically detected and persisted
+]]></programlisting>
+
+ <para>
+ �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>
+
+ <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>
+ </para>
+
+ </sect1>
+
+ <sect1 id="objectstate-detached" revision="2">
+ <title>�����I�u�W�F�N�g�̏C��</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>
+
+ <para>
+ Hibernate�́A <literal>Session.update()</literal> ��
+ <literal>Session.merge()</literal> ���\�b�h��
+ �g���āA�����C���X�^���X��Ēlj����邱�ƂŁA���̃��f���ɑΉ����܂��B </para>
+
+
+ <programlisting><![CDATA[// in the first session
+Cat cat = (Cat) firstSession.load(Cat.class, catId);
+Cat potentialMate = new Cat();
+firstSession.save(potentialMate);
+
+// in a higher layer of the application
+cat.setMate(potentialMate);
+
+// later, in a new session
+secondSession.update(cat); // update cat
+secondSession.update(mate); // update mate]]></programlisting>
+
+ <para>
+ ���ʎq<literal>catId</literal> ����
<literal>Cat</literal> ���A����
+ <literal>secondSession</literal>
�Ń��[�h����Ă����ꍇ�́A�Ēlj����悤�Ƃ����Ƃ��ɁA��O���������܂��B
+ </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>
+
+ <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>
+
+ <para>
+ ���\�b�h�ł�܂��A�V�����Z�b�V�����ɃI�u�W�F�N�g��Ċ֘A�t���ł��܂��B
�������A�����C���X�^���X�͖��C���łȂ���Ȃ�܂���B
+ </para>
+
+
+ <programlisting><![CDATA[//just reassociate:
+sess.lock(fritz, LockMode.NONE);
+//do a version check, then reassociate:
+sess.lock(izi, LockMode.READ);
+//do a version check, using SELECT ... FOR UPDATE, then reassociate:
+sess.lock(pk, LockMode.UPGRADE);]]></programlisting>
+
+ <para>
+ <literal>lock()</literal> �́A���܂��܂�
+ <literal>LockMode</literal> �ƂƂ�Ɏg�����Ƃ��ł��܂��B
+ �ڍׂ́AAPI�h�L�������g�ƃg�����U�N�V���������̏͂�Q�Ƃ��Ă��������B
+ �Ēlj��̂Ƃ��ɂ����A <literal>lock()</literal> ���g����킯�ł͂���܂���B
</para>
+
+ <para>
+ ���Ԃ̒�����ƒP�ʂ́A���̑��̃��f���́A<xref
linked="transactions-optimistic"/> �ŏq�ׂĂ��܂��B </para>
+
+ </sect1>
+
+ <sect1 id="objectstate-saveorupdate">
+ <title>�����I�ȏ�Ԍ��o</title>
+
+ <para>
+ Hibernate�̃��[�U�͎���2�̃P�[�X�̂ǂ���ɂ�g����ė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>
+
+
+ <programlisting><![CDATA[// in the first session
+Cat cat = (Cat) firstSession.load(Cat.class, catID);
+
+// in a higher tier of the application
+Cat mate = new Cat();
+cat.setMate(mate);
+
+// later, in a new session
+secondSession.saveOrUpdate(cat); // update existing state (cat has a non-null id)
+secondSession.saveOrUpdate(mate); // save the new instance (mate has a null
id)]]></programlisting>
+
+ <para>
+ <literal>saveOrUpdate()</literal> �̎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>
+
+ <para>
+ �ʏ�A <literal>update()</literal> ��
<literal>saveOrUpdate()</literal>
+ �͎��̃V�i���I�� �g���܂��B </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>�A�v���P�[�V�������ŏ��̃Z�b�V�����ŃI�u�W�F�N�g���[�h���܂��B
</para>
+ </listitem>
+ <listitem>
+ <para>�I�u�W�F�N�g��UI�w�ɑ����܂��B </para>
+ </listitem>
+ <listitem>
+ <para>�I�u�W�F�N�g�ɑ��ĕύX���������܂��B
+ </para>
+ </listitem>
+ <listitem>
+ <para> �I�u�W�F�N�g���r�W�l�X���W�b�N�w�ɑ����܂��B </para>
+ </listitem>
+ <listitem>
+ <para>
+ �A�v���P�[�V�����́A2�Ԗڂ̃Z�b�V������
<literal>update()</literal>
+ ��ĂԂ��ƂŁA�����̕ύX��i�������܂��B </para>
+ </listitem>
+ </itemizedlist>
+
+ <para> <literal>saveOrUpdate()</literal> �͈ȉ��̂��Ƃ�s���܂��B
</para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>�I�u�W�F�N�g�����̃Z�b�V�����ŁA���łɉi��������Ă���A������܂���B
</para>
+ </listitem>
+ <listitem>
+ <para>
+ ���̃Z�b�V�����Ɋ֘A�Â��Ă���ʂ̃I�u�W�F�N�g���������ʎq�����Ă���Ȃ�A
��O�𓊂��܂��B </para>
+ </listitem>
+ <listitem>
+ <para>
+ �I�u�W�F�N�g�̎��ʎq���l�����Ȃ��Ȃ�A
<literal>save()</literal> ���܂��B </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>
+ </listitem>
+ <listitem>
+ <para>
+ �I�u�W�F�N�g���i
<literal><version></literal> ��
+ <literal><timestamp></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>
+ </listitem>
+ <listitem>
+ <para>
+ �����łȂ��ꍇ�́A���̃I�u�W�F�N�g��
<literal>update()</literal> ���܂��B </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ �����āA <literal>merge()</literal> �͈ȉ��̂悤�ɂƂĂ�قȂ�܂��B
</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>
+ </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>
+ </listitem>
+ <listitem>
+ <para>�i�����C���X�^���X���Ԃ���܂��B </para>
+ </listitem>
+ <listitem>
+ <para> �����Ƃ��ė^�����C���X�^���X�̓Z�b�V�����Ɗ֘A�����܂���B
����́A������Ԃ̂܂܂ł��B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ </sect1>
+
+ <sect1 id="objectstate-deleting" revision="1">
+ <title>�i���I�u�W�F�N�g�̍폜</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>
+
+ <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>
+
+ </sect1>
+
+ <sect1 id="objectstate-replicating" revision="1">
+ <title>�قȂ��̃f�[�^�X�g�A�Ԃł̃I�u�W�F�N�g�̃��v���P�[�V����</title>
+
+ <para>
+ �i���C���X�^���X�̃O���t��ʂ̃f�[�^�X�g�A�ɉi��������ꍇ�ɁA
+ ���ʎq�̒l��Đ��������ɂ��ނƕ֗��ȏꍇ������܂��B </para>
+
+
+ <programlisting><![CDATA[//retrieve a cat from one database
+Session session1 = factory1.openSession();
+Transaction tx1 = session1.beginTransaction();
+Cat cat = session1.get(Cat.class, catId);
+tx1.commit();
+session1.close();
+
+//reconcile with a second database
+Session session2 = factory2.openSession();
+Transaction tx2 = session2.beginTransaction();
+session2.replicate(cat, ReplicationMode.LATEST_VERSION);
+tx2.commit();
+session2.close();]]></programlisting>
+
+ <para>
+ ���v���P�[�V������̃f�[�^�x�[�X�ɍs�����ɂ���ꍇ�A
<literal>replicate()</literal>
+ ���Փ˂�ǂ̂悤�Ɉ������� <literal>ReplicationMode</literal> �Ŏw�肵�܂��B
</para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>ReplicationMode.IGNORE</literal> -
+ �������ʎq���s���f�[�^�x�[�X�ɑ��݂���Ȃ�A ���̃I�u�W�F�N�g�����܂��B
</para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>ReplicationMode.OVERWRITE</literal> -
�������ʎq�������̍s��
+ ���ׂď㏑�����܂��B </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>ReplicationMode.EXCEPTION</literal> -
+ �������ʎq���s���f�[�^�x�[�X�ɑ��݂���Ȃ�A ��O�𓊂��܂��B </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>ReplicationMode.LATEST_VERSION</literal> -
+ �s�ɕۑ�����Ă���o�[�W�����ԍ����A
�����̃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>
+
+ </sect1>
+
+ <sect1 id="objectstate-flushing">
+ <title>�Z�b�V�����̃t���b�V��</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>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para> �N�G������s����O </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>org.hibernate.Transaction.commit()</literal>
����s�����Ƃ�
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Session.flush()</literal> ����s�����Ƃ�
</para>
+ </listitem>
+ </itemizedlist>
+
+ <para> SQL���͈ȉ��̏��ԂŔ��s����܂��B
+ </para>
+
+ <orderedlist spacing="compact">
+ <listitem>
+ <para>
+ ���ׂẴG���e�B�e�B�̑}���B����́A
<literal>Session.save()</literal> ��g���ăZ�[�u����
+ �I�u�W�F�N�g�̏��Ɏ��s���Ă����܂��B </para>
+ </listitem>
+ <listitem>
+ <para> ���ׂẴG���e�B�e�B�̍X�V </para>
+ </listitem>
+ <listitem>
+ <para> ���ׂẴR���N�V�����̍폜 </para>
+ </listitem>
+ <listitem>
+ <para>
+ ���ׂẴR���N�V�����̗v�f�ɑ���폜�A�X�V�A�}�� </para>
+ </listitem>
+ <listitem>
+ <para>���ׂẴR���N�V�����̑}�� </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>
+ </listitem>
+ </orderedlist>
+
+ <para>
+ (�P��O������܂��B <literal>native</literal> ID
������g�����I�u�W�F�N�g�́A
+ ����炪�Z�[�u���ꂽ�Ƃ��ɑ}������܂��B�j </para>
+
+ <para>
+ �����I��
+ <literal>flush()</literal> ����Ƃ������āA
<emphasis>����</emphasis>
+ <literal>Session</literal> ��JDBC��R�[������̂��ɂ���
+ ��ΓI�ȕۏ͂���܂���B�������A����炪���s�����
<emphasis>����</emphasis> ������ �ۏ���܂��B
+ �܂��AHibernate �́A <literal>Query.list(..)</literal>
���Â��f�[�^��Ԉ�����f�[�^�Ԃ��Ȃ����Ƃ�
+ �ۏ��Ă��܂��B </para>
+
+ <para>
+ �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
+ </para>
+
+
+ <programlisting><![CDATA[sess = sf.openSession();
+Transaction tx = sess.beginTransaction();
+sess.setFlushMode(FlushMode.COMMIT); // allow queries to return stale state
+
+Cat izi = (Cat) sess.load(Cat.class, id);
+izi.setName(iznizi);
+
+// might return stale data
+sess.find("from Cat as cat left outer join cat.kittens kitten");
+
+// change to izi is not flushed!
+...
+tx.commit(); // flush occurs
+sess.close();]]></programlisting>
+
+ <para>�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>
+
+ </sect1>
+
+ <sect1 id="objectstate-transitive" revision="1">
+ <title>�A���I�ȉi����</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>
+ ����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>
+
+ <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��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,
+ 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>
+
+
+ <programlisting><![CDATA[<one-to-one name="person"
cascade="persist"/>]]></programlisting>
+
+ <para> �J�X�P�[�h�X�^�C���́A�g�ݍ��킹�邱�Ƃ��ł��܂��B </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
+ </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>
+
+ <para>�������߁F </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ ���ʁA <literal><many-to-one></literal> ��
+ <literal><many-to-many></literal>
�֘A�ɑ��ẮA
+ �J�X�P�[�h��ݒ肷��Ӗ��͂���܂���B
<literal><one-to-one></literal> ��
+ <literal><one-to-many></literal>
�֘A�ɑ��ẮA
+ �J�X�P�[�h����ɗ����Ƃ�����܂��B </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>
+ </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>
+ </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>
+ ����Ɂ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><one-to-many></literal> �֘A�� �����Ăł��B
+ �e�q�W�̃J�X�P�[�h����̐��m�ȈӖ��͈ȉ��̂悤�ɂȂ�܂��B </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ �e��
+ <literal>persist()</literal> �ɓn���ꂽ�Ȃ�A ���ׂĂ̎q��
+ <literal>persist()</literal> �ɓn����܂��B </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>merge()</literal> �ɓn���ꂽ�Ȃ�A ���ׂĂ̎q��
+ <literal>merge()</literal> �ɓn����܂��B </para>
+ </listitem>
+ <listitem>
+ <para>
+ �e�� <literal>save()</literal>
+ �A <literal>update()</literal>
+ �A <literal>saveOrUpdate()</literal>
�ɓn���ꂽ�Ȃ�A���ׂĂ̎q��
+ <literal>saveOrUpdate()</literal> �ɓn����܂��B
</para>
+ </listitem>
+ <listitem>
+ <para>
+ �ꎞ�I�܂��͕�����Ԃ̎q���A�i�������ꂽ�e�ɎQ�Ƃ��ꂽ�Ȃ�A
+ <literal>saveOrUpdate()</literal> �ɓn����܂��B
</para>
+ </listitem>
+ <listitem>
+ <para>
+ �e���폜���ꂽ�Ȃ�A���ׂĂ̎q�́A <literal>delete()</literal>
�ɓn����܂��B </para>
+ </listitem>
+ <listitem>
+ <para>
+ �q���i�������ꂽ�e����Q�Ƃ���Ȃ��Ȃ����Ƃ��́A
<emphasis>���ɉ���N����܂���</emphasis> �B
+ ����ā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>
+ </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>
+ </sect1>
+
+ <sect1 id="objectstate-metadata">
+ <title>���^�f�[�^�̎g�p</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>
+
+
+ <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
+ </para>
+
+
+ <programlisting><![CDATA[Cat fritz = ......;
+ClassMetadata catMeta = sessionfactory.getClassMetadata(Cat.class);
+
+Object[] propertyValues = catMeta.getPropertyValues(fritz);
+String[] propertyNames = catMeta.getPropertyNames();
+Type[] propertyTypes = catMeta.getPropertyTypes();
+
+// get a Map of all properties which are not collections or associations
+Map namedValues = new HashMap();
+for ( int i=0; i<propertyNames.length; i++ ) {
+ if ( !propertyTypes[i].isEntityType() && !propertyTypes[i].isCollectionType()
) {
+ namedValues.put( propertyNames[i], propertyValues[i] );
+ }
+}]]></programlisting>
+
+ </sect1>
+
+</chapter>
\ No newline at end of file
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/toolset_guide.xml
(from rev 14075,
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/toolset_guide.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/toolset_guide.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/toolset_guide.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,634 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="toolsetguide" revision="2">
+ <title>Toolset Guide
+
+ �c�[���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
+ </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
+ </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
+ </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
+ </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
+ </para></listitem>
+ <listitem><para>
+ <emphasis>Ant Tasks:</emphasis>
+ </para></listitem>
+
+ </itemizedlist>
+
+ <para>
+ ���ڂ������� <emphasis>Hibernate Tools</emphasis>
�p�b�P�[�W�Ƃ��̃h�L�������g��Q�Ƃ��Ă��������B
+ </para>
+
+ <para>
+ �������AHibernate�̃��C���p�b�P�[�W��
<emphasis>SchemaExport</emphasis> �A
+ �ʖ� <literal>hbm2ddl</literal>
��܂݂܂�(Hibernate��ŃI���U�t���C�Ŏg�p�ł��܂�)�B
+ </para>
+
+ <sect1 id="toolsetguide-s1" revision="2">
+ <title>�X�L�[�}�̎�������</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
+ </para>
+
+ <para>
+
DDL�̓x���_�[�ˑ��Ȃ̂ŁA���̃c�[����g���Ƃ��́A<literal>hibernate.dialect</literal>
+ �v���p�e�B��SQL�� <literal>����</literal> ��w��
<emphasis>���Ȃ���Ȃ�܂���</emphasis> �B
+ </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>
+
+ <para>
+ ������Hibernate�̃}�b�s���O�v�f�ł́A�I�v�V������
<literal>length</literal> �Ƃ������̑������`���Ă��܂��B
+
���̑����ŃJ��������ݒ肷�邱�Ƃ��ł��܂�(�܂���NUMERIC/DECIMAL�^�̃f�[�^�̐��x��ݒ�ł��܂�)�B
+ </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
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="bar"
column="barId" not-null="true"/>]]></programlisting>
+
+ <programlisting><![CDATA[<element column="serialNumber"
type="long" not-null="true"
unique="true"/>]]></programlisting>
+
+ <para>
+ <literal>unique-key</literal>
�����̓J������O���[�v�����Ĉ�̃L�[����ɂ��邽�߂Ɏg���܂��B
+ ���݁A<literal>unique-key</literal> �����Ŏw�肳�ꂽ�l�͐���̎w��ɂ�
<emphasis>�g��ꂸ</emphasis> �A
+ �}�b�s���O�t�@�C���ŃJ������O���[�v�����邱�Ƃɂ̂ݎg���܂��B
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="org"
column="orgId" unique-key="OrgEmployeeId"/>
+<property name="employeeId"
unique-key="OrgEmployeeId"/>]]></programlisting>
+
+
+
+ <para>
+ <literal>index</literal>
�����̓}�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
+ </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
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="bar"
column="barId"
foreign-key="FKFooBar"/>]]></programlisting>
+
+ <para>
+ �����̃}�b�s���O�v�f�́A�q
<literal><column></literal>
�v�f��L�q�ł��܂��B����͕����J�����^�̃}�b�s���O�ɂ͓��ɗL�p�ł��B
+ </para>
+
+ <programlisting><![CDATA[<property name="name"
type="my.customtypes.Name"/>
+ <column name="last" not-null="true" index="bar_idx"
length="30"/>
+ <column name="first" not-null="true" index="bar_idx"
length="20"/>
+ <column name="initial"/>
+</property>]]></programlisting>
+
+ <para>
+ <literal>default</literal> �����̓J�����̃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
+ </para>
+
+ <programlisting><![CDATA[<property name="credits"
type="integer" insert="false">
+ <column name="credits" default="10"/>
+</property>]]></programlisting>
+
+ <programlisting><![CDATA[<version name="version"
type="integer" insert="false">
+ <column name="version" default="0"/>
+</property>]]></programlisting>
+
+ <para>
+ <literal>sql-type</literal>
�����ŁA�f�t�H���g��Hibernate�^����SQL�̃f�[�^�^�ւ̃}�b�s���O��I�[�o�[���C�h�ł��܂��B
+ </para>
+
+
+ <programlisting><![CDATA[<property name="balance"
type="float">
+ <column name="balance" sql-type="decimal(13,3)"/>
+</property>]]></programlisting>
+
+
+ <para>
+ <literal>check</literal> �����Ń`�F�b�N�����w�肷�邱�Ƃ��ł��܂��B
+ </para>
+
+ <programlisting><![CDATA[<property name="foo"
type="integer">
+ <column name="foo" check="foo > 10"/>
+</property>]]></programlisting>
+
+ <programlisting><![CDATA[<class name="Foo"
table="foos" check="bar < 100.0">
+ ...
+ <property name="bar" type="float"/>
+</class>]]></programlisting>
+
+
+ <table frame="topbot" id="schemattributes-summary"
revision="2">
+ <title>�܂Ƃ�</title>
+ <tgroup cols="3">
+ <colspec colwidth="1*"/>
+ <colspec colwidth="1*"/>
+ <colspec colwidth="2.5*"/>
+ <thead>
+ <row>
+ <entry>����</entry>
+ <entry>�l</entry>
+ <entry>���</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+
<entry><literal>length</literal></entry>
+ <entry>���l</entry>
+ <entry>�J�����̒���</entry>
+ </row>
+
+ <row>
+
<entry><literal>precision</literal></entry>
+ <entry>���l</entry>
+
<entry>�J������DECIMAL�^�̐��x�iprecision�j</entry>
+ </row>
+
+ <row>
+
<entry><literal>scale</literal></entry>
+ <entry>���l</entry>
+
<entry>�J������DECIMAL�^�̃X�P�[���iscale�j</entry>
+ </row>
+
+ <row>
+
<entry><literal>not-null</literal></entry>
+
<entry><literal>true|false</literal></entry>
+ <entry>�J������null�l����Ȃ����Ƃ�w�肵�܂�
+ </entry>
+ </row>
+ <row>
+
<entry><literal>unique</literal></entry>
+
<entry><literal>true|false</literal></entry>
+ <entry>�J���������j�[�N��������Ƃ�w�肵�܂�
+ </entry>
+ </row>
+ <row>
+
<entry><literal>index</literal></entry>
+ <entry><literal>�C���f�b�N�X��</literal>
</entry>
+ <entry>(�����J������)�C���f�b�N�X�̖��O��w�肵�܂�
+ </entry>
+ </row>
+ <row>
+
<entry><literal>unique-key</literal></entry>
+
<entry><literal>���j�[�N�L�[��</literal></entry>
+ <entry>�����J�����̃��j�[�N����̖��O��w�肵�܂�
+ </entry>
+ </row>
+ <row>
+
<entry><literal>foreign-key</literal></entry>
+
<entry><literal>�O���L�[��</literal></entry>
+ <entry>
+
<one-to-one>�A<many-to-one>�A<many-to-many>�}�b�s���O�v�f��g���āA
+ �֘A�ɑ��������ꂽ�O���L�[����̖��O��w�肵�܂��B
+ <literal>SchemaExport</literal> ��
<literal>inverse="true"</literal> ����l�����Ȃ����Ƃɒ��ӂ��Ă��������B
+ </entry>
+ </row>
+ <row>
+
<entry><literal>sql-type</literal></entry>
+
<entry><literal>SQL�̃J�����^</literal></entry>
+
+ <entry>
+ �f�t�H���g�̃J�����^��I�[�o�[���C�h���܂�(
<literal><column></literal> �v�f�̑����̂�)
+ </entry>
+ </row>
+
+ <row>
+
<entry><literal>default</literal></entry>
+ <entry>SQL��</entry>
+
+ <entry>
+ �J�����̃f�t�H���g�l��w�肵�܂�
+ </entry>
+ </row>
+
+ <row>
+
<entry><literal>check</literal></entry>
+ <entry>SQL��</entry>
+
+ <entry>
+ �J�������e�[�u����SQL�̃`�F�b�N�����쐬���܂�
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ <literal><comment></literal>
�v�f�Ő�������X�L�[�}�ɃR�����g��w�肷�邱�Ƃ��ł��܂��B
+
+ </para>
+
+ <programlisting><![CDATA[<class name="Customer"
table="CurCust">
+ <comment>Current customers only</comment>
+ ...
+</class>]]></programlisting>
+
+ <programlisting><![CDATA[<property name="balance">
+ <column name="bal">
+ <comment>Balance in USD</comment>
+ </column>
+</property>]]></programlisting>
+
+ <para>
+ ����ɂ��A��������DDL�� <literal>comment on table</literal> ��
<literal>comment on column</literal> ����������܂��B
+ </para>
+
+ </sect2>
+
+ <sect2 id="toolsetguide-s1-3" revision="2">
+ <title>�c�[���̎��s</title>
+
+ <para>
+ <literal>SchemaExport</literal>
�͕W���o�͂ɑ���DDL�X�N���v�g�����o���ADDL������s���������܂��B
+ </para>
+
+ <para>
+ <literal>java -cp </literal>
<emphasis>hibernate_classpaths</emphasis>
+ <literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal>
<emphasis>options mapping_files</emphasis>
+ </para>
+
+ <table frame="topbot">
+ <title> <literal>SchemaExport</literal> Command Line
Options
+
+ <literal>SchemaExport</literal> �̃R�}���h���C���I�v�V����
+ </title>
+ <tgroup cols="2">
+ <colspec colwidth="1.5*"/>
+ <colspec colwidth="2*"/>
+ <thead>
+ <row>
+ <entry>�I�v�V����</entry>
+ <entry>���</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> <literal>--quiet</literal>
</entry>
+ <entry>�X�N���v�g��W���o�͂ɏo�͂��܂���</entry>
+ </row>
+ <row>
+ <entry> <literal>--drop</literal>
</entry>
+ <entry>�e�[�u���̍폜������s���܂�</entry>
+ </row>
+
+ <row>
+ <entry> <literal>--create</literal>
</entry>
+ <entry>�e�[�u���̐����݂̂�s���܂��B
+ </entry>
+ </row>
+
+ <row>
+ <entry> <literal>--text</literal>
</entry>
+ <entry>�f�[�^�x�[�X�ɃG�N�X�|�[�g���܂���</entry>
+ </row>
+ <row>
+ <entry>
<literal>--output=my_schema.ddl</literal> </entry>
+ <entry> DDL�X�N���v�g��t�@�C���ɏo�͂��܂�</entry>
+ </row>
+
+ <row>
+ <entry>
<literal>--naming=eg.MyNamingStrategy</literal> </entry>
+ <entry> <literal>NamingStrategy</literal>
��I���܂�
+ </entry>
+ </row>
+
+ <row>
+
<entry><literal>--config=hibernate.cfg.xml</literal> </entry>
+
<entry>XML�t�@�C������Hibernate�̒�`����ǂݍ��݂܂�</entry>
+ </row>
+ <row>
+ <entry>
<literal>--properties=hibernate.properties</literal> </entry>
+
<entry>�t�@�C������f�[�^�x�[�X�v���p�e�B��ǂݍ��݂܂�</entry>
+ </row>
+ <row>
+ <entry> <literal>--format</literal>
</entry>
+
<entry>�X�N���v�g��ɐ�������SQL��ǂ݂₷���悤�Ƀt�H�[�}�b�g���܂�</entry>
+ </row>
+ <row>
+ <entry> <literal>--delimiter=x</literal>
</entry>
+ <entry>�X�N���v�g�̍s��蕶����ݒ肵�܂�</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ �A�v���P�[�V������ <literal>SchemaExport</literal>
��g�ݍ��ނ��Ƃ�ł��܂��F
+ </para>
+
+ <programlisting><![CDATA[Configuration cfg = ....;
+new SchemaExport(cfg).create(false, true);]]></programlisting>
+
+ </sect2>
+
+
+ <sect2 id="toolsetguide-s1-4">
+ <title>�v���p�e�B</title>
+
+ <para>
+ ���̂悤�ɁA�f�[�^�x�[�X�̃v���p�e�B��w�肷�邱�Ƃ��ł��܂��B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para><literal>-D</literal>
<emphasis><property></emphasis>
��g���āA�V�X�e���v���p�e�B�Ƃ���
+ </para>
+ </listitem>
+ <listitem>
+ <para><literal>hibernate.properties</literal>
�t�@�C�����
+ </para>
+ </listitem>
+ <listitem>
+ <para> <literal>--properties</literal>
��g���Ďw�肵���v���p�e�B�t�@�C�����
+
+ </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>
+ <tgroup cols="2">
+ <colspec colwidth="1.5*"/>
+ <colspec colwidth="2*"/>
+ <thead>
+ <row>
+ <entry>�v���p�e�B��
+ </entry>
+ <entry>���
+ </entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
<literal>hibernate.connection.driver_class</literal> </entry>
+ <entry>jdbc�̃h���C�o�[�N���X
+ </entry>
+ </row>
+ <row>
+ <entry>
<literal>hibernate.connection.url</literal> </entry>
+ <entry>jdbc��url
+ </entry>
+ </row>
+ <row>
+ <entry>
<literal>hibernate.connection.username</literal> </entry>
+ <entry>�f�[�^�x�[�X�̃��[�U
+ </entry>
+ </row>
+ <row>
+ <entry>
<literal>hibernate.connection.password</literal> </entry>
+ <entry>���[�U�p�X���[�h
+ </entry>
+ </row>
+ <row>
+ <entry> <literal>hibernate.dialect</literal>
</entry>
+ <entry>�f�[�^�x�[�X����
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </sect2>
+
+ <sect2 id="toolsetguide-s1-5">
+ <title>Ant��g�p����</title>
+
+ <para>
+ Ant�̃r���h�X�N���v�g���� <literal>SchemaExport</literal>
��Ăяo�����Ƃ��ł��܂��B:
+ </para>
+
+ <programlisting><![CDATA[<target
name="schemaexport">
+ <taskdef name="schemaexport"
+ classname="org.hibernate.tool.hbm2ddl.SchemaExportTask"
+ classpathref="class.path"/>
+
+ <schemaexport
+ properties="hibernate.properties"
+ quiet="no"
+ text="no"
+ drop="no"
+ delimiter=";"
+ output="schema-export.sql">
+ <fileset dir="src">
+ <include name="**/*.hbm.xml"/>
+ </fileset>
+ </schemaexport>
+</target>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="toolsetguide-s1-6" revision="2">
+ <title>�C���N�������^���ȃX�L�[�}�X�V
+ </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
+ </para>
+
+ <para>
+ <literal>java -cp </literal>
<emphasis>hibernate_classpaths</emphasis>
+ <literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal>
<emphasis>options mapping_files</emphasis>
+ </para>
+
+ <table frame="topbot">
+ <title> <literal>SchemaUpdate</literal>
�̃R�}���h���C����I�v�V����</title>
+ <tgroup cols="2">
+ <colspec colwidth="1.5*"/>
+ <colspec colwidth="2*"/>
+ <thead>
+ <row>
+ <entry>�I�v�V����</entry>
+ <entry>���</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry> <literal>--quiet</literal>
</entry>
+ <entry>�W���o�͂ɃX�N���v�g��o�͂��܂���</entry>
+ </row>
+
+ <row>
+ <entry> <literal>--text</literal>
</entry>
+ <entry>�f�[�^�x�[�X�ɃX�N���v�g��G�N�X�|�[�g���܂���
+ </entry>
+ </row>
+ <row>
+ <entry>
<literal>--naming=eg.MyNamingStrategy</literal> </entry>
+ <entry><literal>NamingStrategy</literal>
��I���܂��B
+ </entry>
+ </row>
+
+ <row>
+ <entry>
<literal>--properties=hibernate.properties</literal> </entry>
+ <entry>�t�@�C������f�[�^�x�[�X�v���p�e�B��ǂݍ��݂܂�
+ </entry>
+ </row>
+
+ <row>
+ <entry>
<literal>--config=hibernate.cfg.xml</literal> </entry>
+ <entry><literal>.cfg.xml</literal>
�t�@�C����w�肵�܂�
+ </entry>
+ </row>
+
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ �A�v���P�[�V������ <literal>SchemaUpdate</literal>
��g�ݍ��ނ��Ƃ��ł��܂��B�F
+ </para>
+
+ <programlisting><![CDATA[Configuration cfg = ....;
+new SchemaUpdate(cfg).execute(false);]]></programlisting>
+
+ </sect2>
+
+
+ <sect2 id="toolsetguide-s1-7">
+ <title>�C���N�������^���ȃX�L�[�}�X�V�ɑ���Ant�̎g�p</title>
+
+ <para>
+ Ant�X�N���v�g���� <literal>SchemaUpdate</literal>
��Ăяo�����Ƃ��ł��܂��F
+ </para>
+
+ <programlisting><![CDATA[<target
name="schemaupdate">
+ <taskdef name="schemaupdate"
+ classname="org.hibernate.tool.hbm2ddl.SchemaUpdateTask"
+ classpathref="class.path"/>
+
+ <schemaupdate
+ properties="hibernate.properties"
+ quiet="no">
+ <fileset dir="src">
+ <include name="**/*.hbm.xml"/>
+ </fileset>
+ </schemaupdate>
+</target>]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="toolsetguide-s1-8" revision="1">
+ <title>Schema validation</title>
+
+ <para>
+ <literal>SchemaValidator</literal>
�c�[���́A�����̃f�[�^�x�[�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
+ </para>
+
+ <para>
+ <literal>java -cp </literal>
<emphasis>hibernate_classpaths</emphasis>
+ <literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal>
<emphasis>options mapping_files</emphasis>
+ </para>
+
+ <table frame="topbot">
+ <title> <literal>SchemaValidator</literal>
�̃R�}���h���C���E�I�v�V����
+ </title>
+ <tgroup cols="2">
+ <colspec colwidth="1.5*"/>
+ <colspec colwidth="2*"/>
+ <thead>
+ <row>
+ <entry>�I�v�V����</entry>
+ <entry>���</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>
<literal>--naming=eg.MyNamingStrategy</literal> </entry>
+ <entry><literal>NamingStrategy</literal>
��I���܂�
+ </entry>
+ </row>
+ <row>
+ <entry>
<literal>--properties=hibernate.properties</literal> </entry>
+ <entry>�t�@�C������f�[�^�x�[�X�̃v���p�e�B��ǂݍ��݂܂�
+ </entry>
+ </row>
+ <row>
+ <entry>
<literal>--config=hibernate.cfg.xml</literal> </entry>
+ <entry><literal>.cfg.xml</literal>
�t�@�C����w�肵�܂�
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>
+ <literal>SchemaValidator</literal>
��A�v���P�[�V�����ɑg�ݍ��ނ��Ƃ��o���܂�:
+ </para>
+
+ <programlisting><![CDATA[Configuration cfg = ....;
+new SchemaValidator(cfg).validate();]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="toolsetguide-s1-9">
+ <title>�X�L�[�}�̃o���f�[�V������Ant��g�p���܂�</title>
+
+ <para>
+ Ant�X�N���v�g���� <literal>SchemaValidator</literal>
��Ăяo���܂�:
+ </para>
+
+ <programlisting><![CDATA[<target
name="schemavalidate">
+ <taskdef name="schemavalidator"
+ classname="org.hibernate.tool.hbm2ddl.SchemaValidatorTask"
+ classpathref="class.path"/>
+
+ <schemavalidator
+ properties="hibernate.properties">
+ <fileset dir="src">
+ <include name="**/*.hbm.xml"/>
+ </fileset>
+ </schemavalidator>
+</target>]]></programlisting>
+
+ </sect2>
+
+ </sect1>
+
+</chapter>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/transactions.xml
(from rev 14075,
core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/transactions.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/transactions.xml
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/content/transactions.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,1276 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="transactions" revision="2">
+ <title>�g�����U�N�V�����ƕ��s��</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
+ </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
+ </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
+ </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�����
+ <literal>Session</literal>
+ �Ƃ������x��Hibernate���s���������s����̋c�_��n�߂܂��B
+ </para>
+
+ <sect1 id="transactions-basics" revision="1">
+ <title>session�X�R�[�v��transaction�X�R�[�v</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
+ </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
+ </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
+ </para>
+
+ <sect2 id="transactions-basics-uow" revision="1">
+ <title>��ƒP�ʁiUnit of work�j</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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </para>
+
+ </sect2>
+
+ <sect2 id="transactions-basics-apptx" revision="1">
+ <title>�����Θb</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
+
+ Web�ƃG���^�[�v���C�Y�A�v���P�[�V�����ł́A�f�[�^�x�[�X�g�����U�N�V������
+ ���[�U�Ƃ̑��ݍ�p�ɂ܂œn�邱�Ƃ͋�����܂���B
+
+ ���̗��悭�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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+ </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
+
+ �ʏ� <literal>Session</literal>
�����I�Ƀt���b�V���������A
+ �����I�Ƀt���b�V�����܂��B
+ </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
+ </para>
+
+ </sect2>
+
+ <sect2 id="transactions-basics-identity">
+ <title>�I�u�W�F�N�g���ʎq��l����</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
+ </para>
+
+ <variablelist spacing="compact">
+ <varlistentry>
+ <term>�f�[�^�x�[�X���ʎq</term>
+ <listitem>
+ <para>
+ <literal>foo.getId().equals( bar.getId()
)</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>JVM���ʎq</term>
+ <listitem>
+ <para>
+ <literal>foo==bar</literal>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>
+ <emphasis>�X��</emphasis>
<literal>Session</literal> �ɒ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
+ </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
+ </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
+ </para>
+
+ </sect2>
+
+ <sect2 id="transactions-basics-issues">
+ <title>��ʓI�Ȗ��</title>
+
+ <para>
+ <emphasis>session-per-user-session</emphasis> ��
+ <emphasis>session-per-application</emphasis> �A���`�p�^�[��
+ �͎g���Ă͂����܂���i������A�܂�ɗ�O������܂��j�B
+ ���ӁF���L�̖��̂������́A���������p�^�[���Ƃ��Ă�o�����܂��B
+ �v���肷��O�ɁA���̈Ӗ��𗝉���悤�ɂ��Ă��������B
+ </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
+ </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
+ </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
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="transactions-demarcation">
+ <title>�f�[�^�x�[�X�g�����U�N�V�������E</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
+ </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
+
+ �ʏ�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
+ </para>
+
+ <para>
+ �������Ȃ���A�Ǘ�����Ă��Ȃ����\�[�X�E���[�J���Ȋ���
+ JTA�Ɉˑ������V�X�e���iCMT�ł͂Ȃ�BMT�j�̗����ɁA
+ �i�����w��|�[�^�u���ɕۂ̂́A�����Ζ]�܂������Ƃł��B
+
+ �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
+ </para>
+
+ <para>
+ �ʏ�A<literal>Session</literal> �I���́A�S�̈قȂ�t�F�[�Y��܂݂܂��B
+ </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>
+
+ <para>
+ Hibernate�i�����w��Ǘ�����Ă��Ȃ����Ŏ�������ꍇ�́A
+
+ �ʏ�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
+
+ �Z�b�V�����^�g�����U�N�V��������̃C�f�B�I���͎��̂悤�ɂȂ�܂��B
+ </para>
+
+ <programlisting><![CDATA[// Non-managed environment idiom
+Session sess = factory.openSession();
+Transaction tx = null;
+try {
+ tx = sess.beginTransaction();
+
+ // do some work
+ ...
+
+ tx.commit();
+}
+catch (RuntimeException e) {
+ if (tx != null) tx.rollback();
+ throw e; // or display error message
+}
+finally {
+ sess.close();
+}]]></programlisting>
+
+ <para>
+ �����I�� <literal>Session</literal> ��
<literal>flush()</literal> ��Ăяo���ׂ��ł͂Ȃ��A
+ <literal>commit()</literal>
��Ăяo�����Ƃɂ��A�����I�ɓ��������������s����܂�
+ �i�Z�b�V������ <xref
linkend="objectstate-flushing">FlushMode</xref> �Ɉˑ����Ă���j�B
+
+ <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
+
+
��L��Java�R�[�h�̓|�[�^�u���ł���A�Ǘ�����Ă��Ȃ�����JTA���̗����Ŏ��s�ł��܂��B
+ </para>
+
+ <para>
+ ���K�����̂������́AHibernate�ɗ\�ߑg�ݍ��܂�Ă���
+ �ucurrent session�v�R���e�L�X�g�Ǘ��ł��B
+ ���t�Ő�������艺�L�����ق��������ł��傤�B
+ </para>
+
+ <programlisting><![CDATA[// Non-managed environment idiom with
getCurrentSession()
+try {
+ factory.getCurrentSession().beginTransaction();
+
+ // do some work
+ ...
+
+ factory.getCurrentSession().getTransaction().commit();
+}
+catch (RuntimeException e) {
+ factory.getCurrentSession().getTransaction().rollback();
+ throw e; // or display error message
+}]]></programlisting>
+
+ <para>
+ ���K�̃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
+ </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
+ </para>
+
+ </sect2>
+
+ <sect2 id="transactions-demarcation-jta" revision="3">
+ <title>JTA��g�p����</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��g�킸�ɁA�X�^���h�A������JTA���������邱�Ƃ�ł��܂��B
+ JTA�����̂��߂ɁAHibernate�͂Q�̐헪����܂��B
+ </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
+ </para>
+
+ <programlisting><![CDATA[// BMT idiom
+Session sess = factory.openSession();
+Transaction tx = null;
+try {
+ tx = sess.beginTransaction();
+
+ // do some work
+ ...
+
+ tx.commit();
+}
+catch (RuntimeException e) {
+ if (tx != null) tx.rollback();
+ throw e; // or display error message
+}
+finally {
+ sess.close();
+}]]></programlisting>
+
+ <para>
+ �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
+ </para>
+
+ <programlisting><![CDATA[// BMT idiom with getCurrentSession()
+try {
+ UserTransaction tx = (UserTransaction)new InitialContext()
+ .lookup("java:comp/UserTransaction");
+
+ tx.begin();
+
+ // Do some work on Session bound to transaction
+ factory.getCurrentSession().load(...);
+ factory.getCurrentSession().persist(...);
+
+ tx.commit();
+}
+catch (RuntimeException e) {
+ tx.rollback();
+ throw e; // or display error message
+}]]></programlisting>
+
+ <para>
+
CMT�ł́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
+ </para>
+
+ <programlisting><![CDATA[// CMT idiom
+ Session sess = factory.getCurrentSession();
+
+ // do some work
+ ...
+]]></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>
+ </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
+
<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
+ </para>
+
+ <para>
+ <literal>getCurrentSession()</literal>
�I�y���[�V�����́AJTA���ł͂P�̌��_�����܂��B
+
+ �f�t�H���g�Ŏg���� <literal>after_statement</literal>
�R�l�N�V���������[�X���[�h��g�p�����ŁA
+ �x�����P����܂��B
+
+ 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
+
+ <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
+
+ �i������A�����̃A�v���P�[�V�����ł́AJTA��CMT�R�[�h��
<literal>scroll()</literal>
+ �� <literal>iterate()</literal> �̎g�p�����̂͗e�Ղł��B�j
+ </para>
+
+ </sect2>
+
+ <sect2 id="transactions-demarcation-exceptions">
+ <title>��O�n���h�����O</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
+ </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
+ </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
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>JDBCConnectionException</literal> -
+ ��b�ƂȂ�JDBC�ʐM�̃G���[��\���܂��B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>SQLGrammarException</literal> -
+ ���s����SQL�̕��@������͍\���̖���\���܂��B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>ConstraintViolationException</literal> -
+ ���炩�̌`���̊��S������ᔽ��\���܂��B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>LockAcquisitionException</literal> -
+ �v�����ꂽ�������{����̂ɕK�v�ȃ��b�N���x����ۂ̃G���[��\���܂��B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>GenericJDBCException</literal> -
+ ���̃J�e�S���Ɉ�v���Ȃ�������ʓI�ȗ�O�ł��B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2 id="transactions-demarcation-timeout">
+ <title>�g�����U�N�V�����̃^�C���A�E�g</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
+ </para>
+
+ <programlisting><![CDATA[
+Session sess = factory.openSession();
+try {
+ //set transaction timeout to 3 seconds
+ sess.getTransaction().setTimeout(3);
+ sess.getTransaction().begin();
+
+ // do some work
+ ...
+
+ sess.getTransaction().commit()
+}
+catch (RuntimeException e) {
+ sess.getTransaction().rollback();
+ throw e; // or display error message
+}
+finally {
+ sess.close();
+}]]></programlisting>
+
+ <para>
+ CMT�r�[���̒��ł� <literal>setTimeout()</literal> ��
+ �Ăяo���Ȃ����Ƃɒ��ӂ��Ă��������B
+ �g�����U�N�V�����^�C���A�E�g�͐錾�I�ɒ�`�����ׂ��ł��B
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="transactions-optimistic">
+ <title>�y�ϓI�������s����</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
+ </para>
+
+ <sect2 id="transactions-optimistic-manual">
+ <title>�A�v���P�[�V�����ɂ��o�[�W�����`�F�b�N</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
+ </para>
+
+ <programlisting><![CDATA[// foo is an instance loaded by a previous
Session
+session = factory.openSession();
+Transaction t = session.beginTransaction();
+
+int oldVersion = foo.getVersion();
+session.load( foo, foo.getKey() ); // load the current state
+if ( oldVersion != foo.getVersion() ) throw new StaleObjectStateException();
+foo.setProperty("bar");
+
+t.commit();
+session.close();]]></programlisting>
+
+ <para>
+ <literal><version></literal>
��g���āA<literal>version</literal>
+ �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
+ </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
+ </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
+ </para>
+
+ </sect2>
+
+ <sect2 id="transactions-optimistic-longsession">
+ <title>�g���Z�b�V�����Ǝ����o�[�W���j���O</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
+ </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
+ </para>
+
+ <programlisting><![CDATA[// foo is an instance loaded earlier by the
old session
+Transaction t = session.beginTransaction(); // Obtain a new JDBC connection, start
transaction
+
+foo.setProperty("bar");
+
+session.flush(); // Only for last transaction in conversation
+t.commit(); // Also return JDBC connection
+session.close(); // Only for last transaction in
conversation]]></programlisting>
+
+ <para>
+ <literal>foo</literal> �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
+
+ �ʏ�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
+ </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
+
+ �P�̑Θb�̂��߂����� <literal>Session</literal> ��g���ׂ��ł��B
+ �Ȃ��Ȃ�A�����ɐV�N�łȂ��f�[�^�����߂ł��B
+ </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
+ </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
+ </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
+ </para>
+
+ </sect2>
+
+ <sect2 id="transactions-optimistic-detached">
+ <title>�f�^�b�`���ꂽ�I�u�W�F�N�g�Ǝ����o�[�W���j���O</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
+ </para>
+
+ <programlisting><![CDATA[// foo is an instance loaded by a previous
Session
+foo.setProperty("bar");
+session = factory.openSession();
+Transaction t = session.beginTransaction();
+session.saveOrUpdate(foo); // Use merge() if "foo" might have been loaded
already
+t.commit();
+session.close();]]></programlisting>
+
+ <para>
+
���̏ꍇ���͂�AHibernate�̓t���b�V������ۂɁA�C���X�^���X�̃o�[�W������`�F�b�N���܂��B
+ �X�V�̋��������������ꍇ�ɂ́A��O�𓊂��܂��B
+ </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
+ </para>
+
+ </sect2>
+
+ <sect2 id="transactions-optimistic-customizing">
+ <title>�����o�[�W���j���O�̃J�X�^�}�C�Y</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
+ </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><class></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
+ </para>
+
+ <para>
+ �Ƃ��ǂ��A�s��ꂽ�ύX���d�Ȃ�Ȃ�����A�����ɍs��ꂽ�ύX�����邱�Ƃ��ł��܂��B
+ <literal><class></literal> �}�b�s���O��
<literal>optimistic-lock="dirty"</literal>
+ ��ݒ肵���ꍇ�A�t���b�V������ۂɁAHibernate�̓_�[�e�B�t�B�[���h�݂̂��r���܂��B
+ </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><class></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
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="transactions-locking">
+ <title>�ߊϓI���b�N</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
+ </para>
+
+ <para>
+ Hibernate�͂���f�[�^�x�[�X�̃��b�N�̎d�g�݂�g���܂��B
+ ��������̃I�u�W�F�N�g�����ă��b�N���܂���I
+ </para>
+
+ <para>
+ <literal>LockMode</literal>
�N���X�́AHibernate���l���ł���قȂ郍�b�N���x�����`���܂��B
+ �ȉ��̎d�g�݂ɂ��A���b�N��l���ł��܂��B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>LockMode.WRITE</literal> �́A
+ Hibernate���s��X�V������͑}������ۂɎ����I�ɓ����܂��B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>LockMode.UPGRADE</literal> �́A
+ �f�[�^�x�[�X�ŃT�|�[�g����Ă��镶�@ <literal>SELECT ... FOR
UPDATE</literal>
+ ��g�����A�����I�ȃ��[�U�[�v���ɂ�蓾���邩�����܂���B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>LockMode.UPGRADE_NOWAIT</literal> �́A
+ Oracle �� <literal>SELECT ... FOR UPDATE NOWAIT</literal>
��g�����A
+ �����I�ȃ��[�U�[�v���ɂ�蓾���邩�����܂���B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>LockMode.READ</literal> �́A
+ Repeatable
Read�������Serializable�̕������x���ŁA�f�[�^��ǂۂɎ����I�ɓ����܂��B
+ �����炭�A�����I�ȃ��[�U�[�v���ɂ��A�Ď擾����܂��B
+ </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
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ �u�����I�ȃ��[�U�[�v���v�Ƃ́A���L�̕��@�̂P�Ō����\���܂��B
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>LockMode</literal> ��w�肵��
<literal>Session.load()</literal> �̌Ăяo���B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Session.lock()</literal> �̌Ăяo���B
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>Query.setLockMode()</literal> �̌Ăяo���B
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ <literal>UPGRADE</literal> �������
<literal>UPGRADE_NOWAIT</literal> ���w�肳�ꂽ
+ <literal>Session.load()</literal> ���Ăяo����A
+ ���v�����ꂽ�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
+ </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
+ </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
+ </para>
+
+ </sect1>
+
+ <sect1 id="transactions-connection-release">
+ <title>�R�l�N�V�����J�����[�h</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
+ </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
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>AFTER_TRANSACTION</literal> -
+ <literal>org.hibernate.Transaction</literal>
������������A
+ �R�l�N�V������J�����܂��B
+ </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
+ </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
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>auto</literal> �i�f�t�H���g�j - �����I�����
+
<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
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>on_close</literal> -
ConnectionReleaseMode.ON_CLOSE��g���܂��B
+ ���̐ݒ�͌���݊��̂��߂Ɏc����Ă��܂����A�g��Ȃ����Ƃ������߂܂��B
+ </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
+ </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
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ </sect1>
+
+</chapter>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/tutorial.xml (from
rev 14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/tutorial.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/tutorial.xml
(rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/tutorial.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,1600 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="tutorial">
+ <title>Hibernate�̓���</title>
+
+ <sect1 id="tutorial-intro" revision="1">
+ <title>�O����</title>
+
+ <para>
+ ���̏͂�Hibernate���߂Ďg�����[�U�����̓���I�ȃ`���[�g���A���ł��B
+ �C���������f�[�^�x�[�X��g���ȒP�ȃR�}���h���C���A�v���P�[�V��������n�߁A
+ �����킩��₷�������ŊJ����i�߂܂��B
+ </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
+ </para>
+
+ <para>
+ �`���[�g���A���̃\�[�X�R�[�h��Hibernate�f�B�X�g���r���[�V������
+ <literal>doc/reference/tutorial/</literal> �ɂ���܂��B
+ </para>
+
+ </sect1>
+
+ <sect1 id="tutorial-firstapp" revision="2">
+ <title>�p�[�g1 - ���߂Ă�Hibernate�A�v���P�[�V����</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
+ </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
+ </para>
+
+ <programlisting><![CDATA[.
++lib
+ antlr.jar
+ cglib.jar
+ asm.jar
+ asm-attrs.jars
+ commons-collections.jar
+ commons-logging.jar
+ hibernate3.jar
+ jta.jar
+ dom4j.jar
+ log4j.jar ]]></programlisting>
+
+ <para>
+ ���ꂪ <emphasis>�{�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
+ </para>
+
+ <para>
+ ���Ƀf�[�^�x�[�X�Ɋi�[����C�x���g��\���N���X��쐬���܂��B
+ </para>
+
+ <sect2 id="tutorial-firstapp-firstclass" revision="1">
+ <title>�ŏ��̃N���X</title>
+
+ <para>
+ �ŏ��̉i���N���X�́A�v���p�e�B���������V���v����JavaBean�ł��F
+ </para>
+
+ <programlisting><![CDATA[package events;
+
+import java.util.Date;
+
+public class Event {
+ private Long id;
+
+ private String title;
+ private Date date;
+
+ public Event() {}
+
+ public Long getId() {
+ return id;
+ }
+
+ private void setId(Long id) {
+ this.id = id;
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public void setDate(Date date) {
+ this.date = date;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+}]]></programlisting>
+
+ <para>
+ �����̂Ƃ���A���̃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
+ </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
+ </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
+ </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
+ </para>
+
+ <programlisting><![CDATA[.
++lib
+ <Hibernate and third-party libraries>
++src
+ +events
+ Event.java]]></programlisting>
+
+ <para>
+ ���̃X�e�b�v�ł́AHibernate�ɂ��̉i���N���X�̏������܂��B
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-firstapp-mapping" revision="1">
+ <title>�}�b�s���O�t�@�C��</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
+ </para>
+
+ <para>
+ �}�b�s���O�t�@�C���̊�{�I�ȍ\���͂��̂悤�ɂȂ�܂��F
+ </para>
+
+ <programlisting><![CDATA[<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+ "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping>
+[...]
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ Hibernate DTD�����ɐ������Ă��邱�Ƃɒ��ڂ��Ă��������B
+
����DTD�́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
+ </para>
+
+ <para>
+ �ȍ~�̗�ł̓R�[�h��Z�����邽�߂�DTD�錾��ȗ����܂��B
+ ���R�ł�������̓I�v�V�����ł͂���܂���B
+ </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
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="events.Event" table="EVENTS">
+
+ </class>
+
+</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
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="events.Event" table="EVENTS">
+ <id name="id" column="EVENT_ID">
+ <generator class="native"/>
+ </id>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ <literal>id</literal> �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
+ </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[
+<hibernate-mapping>
+
+ <class name="events.Event" table="EVENTS">
+ <id name="id" column="EVENT_ID">
+ <generator class="native"/>
+ </id>
+ <property name="date" type="timestamp"
column="EVENT_DATE"/>
+ <property name="title"/>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ <literal>id</literal> �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
+ </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
+ </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�^�����ʼn����悤�Ƃ��܂��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
+ </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
+ </para>
+
+ <programlisting><![CDATA[.
++lib
+ <Hibernate and third-party libraries>
++src
+ +events
+ Event.java
+ Event.hbm.xml]]></programlisting>
+
+ <para>
+ Hibernate�̎�v�Ȑݒ�𑱂��܂��B
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-firstapp-configuration"
revision="2">
+ <title>Hibernate�̐ݒ�</title>
+
+ <para>
+
�����܂łʼ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
+ </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
+ </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
+ </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
+ </para>
+
+ <programlisting><![CDATA[<?xml version='1.0'
encoding='utf-8'?>
+<!DOCTYPE hibernate-configuration PUBLIC
+ "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+ "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+
+ <session-factory>
+
+ <!-- Database connection settings -->
+ <property
name="connection.driver_class">org.hsqldb.jdbcDriver</property>
+ <property
name="connection.url">jdbc:hsqldb:hsql://localhost</property>
+ <property name="connection.username">sa</property>
+ <property name="connection.password"></property>
+
+ <!-- JDBC connection pool (use the built-in) -->
+ <property name="connection.pool_size">1</property>
+
+ <!-- SQL dialect -->
+ <property
name="dialect">org.hibernate.dialect.HSQLDialect</property>
+
+ <!-- Enable Hibernate's automatic session context management -->
+ <property
name="current_session_context_class">thread</property>
+
+ <!-- Disable the second-level cache -->
+ <property
name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
+
+ <!-- Echo all executed SQL to stdout -->
+ <property name="show_sql">true</property>
+
+ <!-- Drop and re-create the database schema on startup -->
+ <property name="hbm2ddl.auto">create</property>
+
+ <mapping resource="events/Event.hbm.xml"/>
+
+ </session-factory>
+
+</hibernate-configuration>]]></programlisting>
+
+ <para>
+ ����XML�̐ݒ肪�قȂ�DTD��g�����Ƃɒ��ӂ��Ă��������B
+ ����̃f�[�^�x�[�X����O���[�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><session-factory></literal>
��g���ݒ�ɂ��Ă��������B
+ </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
+ </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
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-firstapp-ant" revision="1">
+ <title>Ant�ɂ��r���h</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�...
+ ����_�E�����[�h�����������B
+ Ant�̃C���X�g�[�����@�͂����ł͐�����܂���̂ŁA
+ <ulink
url="http://ant.apache.org/manual/index.html">Ant�}�j���A��&...
+ ��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
+ </para>
+
+ <para>
+ ��{�I�ȃr���h�t�@�C���͂��̂悤�ɂȂ�܂��F
+ </para>
+
+ <programlisting><![CDATA[<project
name="hibernate-tutorial" default="compile">
+
+ <property name="sourcedir" value="${basedir}/src"/>
+ <property name="targetdir" value="${basedir}/bin"/>
+ <property name="librarydir" value="${basedir}/lib"/>
+
+ <path id="libraries">
+ <fileset dir="${librarydir}">
+ <include name="*.jar"/>
+ </fileset>
+ </path>
+
+ <target name="clean">
+ <delete dir="${targetdir}"/>
+ <mkdir dir="${targetdir}"/>
+ </target>
+
+ <target name="compile" depends="clean, copy-resources">
+ <javac srcdir="${sourcedir}"
+ destdir="${targetdir}"
+ classpathref="libraries"/>
+ </target>
+
+ <target name="copy-resources">
+ <copy todir="${targetdir}">
+ <fileset dir="${sourcedir}">
+ <exclude name="**/*.java"/>
+ </fileset>
+ </copy>
+ </target>
+
+</project>]]></programlisting>
+
+ <para>
+ ����� <literal>.jar</literal>
�ŏI���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
+ </para>
+
+ <programlisting><![CDATA[C:\hibernateTutorial\>ant
+Buildfile: build.xml
+
+copy-resources:
+ [copy] Copying 2 files to C:\hibernateTutorial\bin
+
+compile:
+ [javac] Compiling 1 source file to C:\hibernateTutorial\bin
+
+BUILD SUCCESSFUL
+Total time: 1 second ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="tutorial-firstapp-helpers" revision="3">
+ <title>�X�^�[�g�A�b�v�ƃw���p</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
+ </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
+ </para>
+
+ <programlisting><![CDATA[package util;
+
+import org.hibernate.*;
+import org.hibernate.cfg.*;
+
+public class HibernateUtil {
+
+ private static final SessionFactory sessionFactory;
+
+ static {
+ try {
+ // Create the SessionFactory from hibernate.cfg.xml
+ sessionFactory = new Configuration().configure().buildSessionFactory();
+ } catch (Throwable ex) {
+ // Make sure you log the exception, as it might be swallowed
+ System.err.println("Initial SessionFactory creation failed." +
ex);
+ throw new ExceptionInInitializerError(ex);
+ }
+ }
+
+ public static SessionFactory getSessionFactory() {
+ return sessionFactory;
+ }
+
+}]]></programlisting>
+
+ <para>
+
���̃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
+ </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
+ </para>
+
+ <para>
+ <literal>HibernateUtil.java</literal>
��J���\�[�X�f�B���N�g���ɂ��� <literal>events</literal> �p�b�P�[�W��
+ �ׂɔz�u���Ă��������B
+ </para>
+
+ <programlisting><![CDATA[.
++lib
+ <Hibernate and third-party libraries>
++src
+ +events
+ Event.java
+ Event.hbm.xml
+ +util
+ HibernateUtil.java
+ hibernate.cfg.xml
++data
+build.xml]]></programlisting>
+
+ <para>
+ ����͖��Ȃ��ă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
+ </para>
+
+ <para>
+ �`���[�g���A���̃C���t���͊��S�ł��B
+ Hibernate��g���Ď��ۂ̍�Ƃ��鏀���������܂����B
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-firstapp-workingpersistence"
revision="4">
+ <title>�I�u�W�F�N�g�̃��[�h�Ɗi�[</title>
+
+ <para>
+ ���ɃI�u�W�F�N�g�̃��[�h�Ɗi�[��Hibernate��g�����Ƃ��ł��܂��B
+ <literal>main()</literal> ���\�b�h����
<literal>EventManager</literal>
+ �N���X�����܂��F
+ </para>
+
+ <programlisting><![CDATA[package events;
+import org.hibernate.Session;
+
+import java.util.Date;
+
+import util.HibernateUtil;
+
+public class EventManager {
+
+ public static void main(String[] args) {
+ EventManager mgr = new EventManager();
+
+ if (args[0].equals("store")) {
+ mgr.createAndStoreEvent("My Event", new Date());
+ }
+
+ HibernateUtil.getSessionFactory().close();
+ }
+
+ private void createAndStoreEvent(String title, Date theDate) {
+
+ Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+
+ session.beginTransaction();
+
+ Event theEvent = new Event();
+ theEvent.setTitle(title);
+ theEvent.setDate(theDate);
+
+ session.save(theEvent);
+
+ session.getTransaction().commit();
+ }
+
+}]]></programlisting>
+
+ <para>
+ �V���� <literal>Event</literal>
�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
+ </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
+ </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
+ </para>
+
+ <para>
+ �g�����U�N�V�����̈����Ƌ��E�̏ڂ������ɂ��ẮA
+ <xref linkend="transactions"/> �����������B
+ ���̗�ł̓G���[������[���o�b�N��������܂��B
+ </para>
+
+ <para>
+ ���̍ŏ��̃��[�`������s����ɂ́AAnt�̃r���h�t�@�C���ɌĂяo���\�ȃ^�[�Q�b�g��
+ �lj����Ȃ���Ȃ�܂���F
+ </para>
+
+ <programlisting><![CDATA[<target name="run"
depends="compile">
+ <java fork="true" classname="events.EventManager"
classpathref="libraries">
+ <classpath path="${targetdir}"/>
+ <arg value="${action}"/>
+ </java>
+</target>]]></programlisting>
+
+ <para>
+ <literal>action</literal>
�����̒l�́A�^�[�Q�b�g��ĂԂƂ��ɃR�}���h���C���Őݒ肵�܂��F
+ </para>
+
+ <programlisting><![CDATA[C:\hibernateTutorial\>ant run
-Daction=store]]></programlisting>
+
+ <para>
+ �R���p�C������ƁAHibernate���X�^�[�g���A���Ȃ��̐ݒ�ɂ��܂����A
+ �����̃��O�o�͂�����͂��ł��B
+ ���̍Ō�ɂ͈ȉ��̍s������ł��傤�F
+ </para>
+
+ <programlisting><![CDATA[[java] Hibernate: insert into EVENTS
(EVENT_DATE, title, EVENT_ID) values (?, ?, ?)]]></programlisting>
+
+ <para>
+ �����Hibernate�����s���� <literal>INSERT</literal> �ŁA
+ �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
+ </para>
+
+ <para>
+ ����ł͓����悤�Ɋi�[���ꂽ�C�x���g�̈ꗗ���悤�Ǝv���܂��B
+ ���̂��߃��C�����\�b�h�ɃI�v�V������lj����܂��F
+ </para>
+
+ <programlisting><![CDATA[if (args[0].equals("store")) {
+ mgr.createAndStoreEvent("My Event", new Date());
+}
+else if (args[0].equals("list")) {
+ List events = mgr.listEvents();
+ for (int i = 0; i < events.size(); i++) {
+ Event theEvent = (Event) events.get(i);
+ System.out.println("Event: " + theEvent.getTitle() +
+ " Time: " + theEvent.getDate());
+ }
+}]]></programlisting>
+
+ <para>
+ �V���� <literal>listEvents()���\�b�h</literal> ��lj����܂��B
+ </para>
+
+ <programlisting><![CDATA[private List listEvents() {
+
+ Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+
+ session.beginTransaction();
+
+ List result = session.createQuery("from Event").list();
+
+ session.getTransaction().commit();
+
+ return result;
+}]]></programlisting>
+
+ <para>
+ �����ł��邱�Ƃ́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
+ </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
+ </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
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ �� <literal>-Daction=list</literal> �Ǝw�肵��Ant��ĂԂƁA
+ ����܂Ŋi�[�����C�x���g��������͂��ł��B
+ <literal>store</literal> �A�N�V�����𐔉�ȏ�ĂԂ��Ƃ�\�ł��B
+ </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
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="tutorial-associations">
+ <title>�p�[�g2 - �֘A�̃}�b�s���O</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>
+
+ <para>
+ �ŏ��� <literal>Person</literal> �N���X�͒P���ł��F
+ </para>
+
+ <programlisting><![CDATA[package events;
+
+public class Person {
+
+ private Long id;
+ private int age;
+ private String firstname;
+ private String lastname;
+
+ public Person() {}
+
+ // Accessor methods for all properties, private setter for 'id'
+
+}]]></programlisting>
+
+ <para>
+ <literal>Person.hbm.xml</literal>
�Ƃ����V�����}�b�s���O�t�@�C����쐬���Ă�������
+ �i�t�@�C���̍ŏ���DTD�ւ̎Q�Ƃ�Y�ꂸ�ɓ���Ă��������j�F
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+
+ <class name="events.Person" table="PERSON">
+ <id name="id" column="PERSON_ID">
+ <generator class="native"/>
+ </id>
+ <property name="age"/>
+ <property name="firstname"/>
+ <property name="lastname"/>
+ </class>
+
+</hibernate-mapping>]]></programlisting>
+
+ <para>
+ �Ō��Hibernate�̐ݒ�ɐV�����}�b�s���O��lj����Ă��������F
+ </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
+ </para>
+ </sect2>
+
+ <sect2 id="tutorial-associations-unidirset"
revision="3">
+ <title>�P����Set�x�[�X�֘A</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
+ </para>
+
+ <para>
+ <literal>Set</literal> �Ŏ��������P�����A���l�֘A���K�v�ł��B
+ Java�N���X��ɑΉ�����R�[�h�����ă}�b�s���O���܂��傤�F
+ </para>
+
+ <programlisting><![CDATA[public class Person {
+
+ private Set events = new HashSet();
+
+ public Set getEvents() {
+ return events;
+ }
+
+ public void setEvents(Set events) {
+ this.events = events;
+ }
+}]]></programlisting>
+
+ <para>
+ ���̊֘A��}�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
+ </para>
+
+ <programlisting><![CDATA[<class name="events.Person"
table="PERSON">
+ <id name="id" column="PERSON_ID">
+ <generator class="native"/>
+ </id>
+ <property name="age"/>
+ <property name="firstname"/>
+ <property name="lastname"/>
+
+ <set name="events" table="PERSON_EVENT">
+ <key column="PERSON_ID"/>
+ <many-to-many column="EVENT_ID" class="events.Event"/>
+ </set>
+
+</class>]]></programlisting>
+
+ <para>
+ Hibernate�͂���Ƃ������ނ̃R���N�V�����}�b�s���O��T�|�[�g���Ă��܂����A
+ �ł��ʓI�Ȃ�̂� <literal><set></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><key></literal> �v�f�ŁA
+ �C�x���g���̃J��������
<literal><many-to-many></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
+ </para>
+
+ <para>
+ ���̂��߂��̃}�b�s���O�̃f�[�^�x�[�X�X�L�[�}�͈ȉ��̂悤�ɂȂ�܂��B�F
+ </para>
+
+ <programlisting><![CDATA[
+ _____________ __________________
+ | | | | _____________
+ | EVENTS | | PERSON_EVENT | | |
+ |_____________| |__________________| | PERSON |
+ | | | | |_____________|
+ | *EVENT_ID | <--> | *EVENT_ID | | |
+ | EVENT_DATE | | *PERSON_ID | <--> | *PERSON_ID |
+ | TITLE | |__________________| | AGE |
+ |_____________| | FIRSTNAME |
+ | LASTNAME |
+ |_____________|
+ ]]></programlisting>
+
+ </sect2>
+
+ <sect2 id="tutorial-associations-working"
revision="2">
+ <title>�֘A������</title>
+
+ <para>
+ <literal>EventManager</literal>
�̐V�������\�b�h�Ől�X�ƃC�x���g��ꏏ�ɂ��܂��傤�F
+ </para>
+
+ <programlisting><![CDATA[private void addPersonToEvent(Long
personId, Long eventId) {
+
+ Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+ session.beginTransaction();
+
+ Person aPerson = (Person) session.load(Person.class, personId);
+ Event anEvent = (Event) session.load(Event.class, eventId);
+
+ aPerson.getEvents().add(anEvent);
+
+ session.getTransaction().commit();
+}]]></programlisting>
+
+ <para>
+ <literal>Person</literal> ��
<literal>Event</literal> ���[�h������A
+ ���ʂ̃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
+ </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
+ </para>
+
+ <programlisting><![CDATA[private void addPersonToEvent(Long
personId, Long eventId) {
+
+ Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+ session.beginTransaction();
+
+ Person aPerson = (Person) session
+ .createQuery("select p from Person p left join fetch p.events where p.id
= :pid")
+ .setParameter("pid", personId)
+ .uniqueResult(); // Eager fetch the collection so we can use it detached
+
+ Event anEvent = (Event) session.load(Event.class, eventId);
+
+ session.getTransaction().commit();
+
+ // End of first unit of work
+
+ aPerson.getEvents().add(anEvent); // aPerson (and its collection) is detached
+
+ // Begin second unit of work
+
+ Session session2 = HibernateUtil.getSessionFactory().getCurrentSession();
+ session2.beginTransaction();
+
+ session2.update(aPerson); // Reattachment of aPerson
+
+ session2.getTransaction().commit();
+}]]></programlisting>
+
+ <para>
+ <literal>update</literal>
�̌Ăяo���͕����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
+ </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
+ </para>
+
+ <programlisting><![CDATA[else if
(args[0].equals("addpersontoevent")) {
+ Long eventId = mgr.createAndStoreEvent("My Event", new Date());
+ Long personId = mgr.createAndStorePerson("Foo", "Bar");
+ mgr.addPersonToEvent(personId, eventId);
+ System.out.println("Added person " + personId + " to event " +
eventId);
+}]]></programlisting>
+
+ <para>
+ ����͓����悤�ɏ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
+ </para>
+
+ <para>
+ �l�^�̃R���N�V������v���邱�Ƃ�ł��܂��B
+ ����͑��̃G���e�B�e�B�ւ̎Q�Ƃ̃R���N�V�����Ƃ͊T�O�I�ɔ��ɈقȂ�܂����A
+ Java�ł͂قƂ�Ǔ����悤�Ɍ����܂��B
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-associations-valuecollections">
+ <title>�l�̃R���N�V����</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
+ </para>
+ <programlisting><![CDATA[private Set emailAddresses = new
HashSet();
+
+public Set getEmailAddresses() {
+ return emailAddresses;
+}
+
+public void setEmailAddresses(Set emailAddresses) {
+ this.emailAddresses = emailAddresses;
+}]]></programlisting>
+
+ <para>
+ ���� <literal>Set</literal> �̃}�b�s���O�ł��F
+ </para>
+
+ <programlisting><![CDATA[<set name="emailAddresses"
table="PERSON_EMAIL_ADDR">
+ <key column="PERSON_ID"/>
+ <element type="string" column="EMAIL_ADDR"/>
+</set>]]></programlisting>
+
+ <para>
+ �O�̃}�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
+ </para>
+
+ <para>
+ �X�V�����X�L�[�}�����������F
+ </para>
+
+ <programlisting><![CDATA[
+ _____________ __________________
+ | | | | _____________
+ | EVENTS | | PERSON_EVENT | | |
___________________
+ |_____________| |__________________| | PERSON | |
|
+ | | | | |_____________| | PERSON_EMAIL_ADDR
|
+ | *EVENT_ID | <--> | *EVENT_ID | | |
|___________________|
+ | EVENT_DATE | | *PERSON_ID | <--> | *PERSON_ID | <--> |
*PERSON_ID |
+ | TITLE | |__________________| | AGE | | *EMAIL_ADDR
|
+ |_____________| | FIRSTNAME |
|___________________|
+ | LASTNAME |
+ |_____________|
+ ]]></programlisting>
+
+ <para>
+
�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
+ </para>
+
+ <para>
+ �ȑO�l�ƃC�x���g��֘A�Â����Ƃ��ƑS�������悤�ɁA
+ ���⎎���ɃR���N�V�����ɗv�f��lj����邱�Ƃ��ł���悤�ɂȂ�܂����B
+ �����Ƃ�Java�ł͓����R�[�h�ł��B
+ </para>
+
+ <programlisting><![CDATA[private void addEmailToPerson(Long
personId, String emailAddress) {
+
+ Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+ session.beginTransaction();
+
+ Person aPerson = (Person) session.load(Person.class, personId);
+
+ // The getEmailAddresses() might trigger a lazy load of the collection
+ aPerson.getEmailAddresses().add(emailAddress);
+
+ session.getTransaction().commit();
+}]]></programlisting>
+
+ <para>
+ ����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
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-associations-bidirectional"
revision="1">
+ <title>�o�����֘A</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
+ </para>
+
+ <para>
+ �܂� <literal>Event</literal>
�C�x���g�N���X�ɎQ���҂̃R���N�V������lj����܂��F
+ </para>
+
+ <programlisting><![CDATA[private Set participants = new HashSet();
+
+public Set getParticipants() {
+ return participants;
+}
+
+public void setParticipants(Set participants) {
+ this.participants = participants;
+}]]></programlisting>
+
+ <para>
+ ����ł� <literal>Event.hbm.xml</literal>
�Ŋ֘A�̂����瑤��}�b�s���O���Ă��������B
+ </para>
+
+ <programlisting><![CDATA[<set name="participants"
table="PERSON_EVENT" inverse="true">
+ <key column="EVENT_ID"/>
+ <many-to-many column="PERSON_ID" class="events.Person"/>
+</set>]]></programlisting>
+
+ <para>
+ �����̂Ƃ���A������̃}�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
+ </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
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-associations-usingbidir">
+ <title>�o���������N�̓���</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
+ </para>
+
+ <para>
+ �����̊J���҂͐T�d�Ƀv���O��������̂ŁA
+ �G���e�B�e�B�̗����ɐ������֘A��ݒ肷�郊���N�Ǘ����\�b�h��쐬���܂��B
+ �Ⴆ�� <literal>Person</literal> �ł͈ȉ��̂悤�ɂȂ�܂��B�F
+ </para>
+
+ <programlisting><![CDATA[protected Set getEvents() {
+ return events;
+}
+
+protected void setEvents(Set events) {
+ this.events = events;
+}
+
+public void addToEvent(Event event) {
+ this.getEvents().add(event);
+ event.getParticipants().add(this);
+}
+
+public void removeFromEvent(Event event) {
+ this.getEvents().remove(event);
+ event.getParticipants().remove(this);
+}]]></programlisting>
+
+ <para>
+
�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
+ </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
+ </para>
+
+ </sect2>
+
+ <para>
+ �ł͂��������Web�A�v���P�[�V�����ɂ��Ă݂܂��傤�B
+ </para>
+
+ </sect1>
+
+ <sect1 id="tutorial-webapp">
+ <title>�p�[�g3 - EventManager Web�A�v���P�[�V����</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
+ </para>
+
+ <sect2 id="tutorial-webapp-servlet" revision="1">
+ <title>��{�I��Servlet�̋L�q</title>
+
+ <para>
+ �V�����N���X��A�\�[�X�f�B���N�g���� <literal>events</literal>
�p�b�P�[�W�ɍ쐬���Ă��������B
+ </para>
+
+ <programlisting><![CDATA[package events;
+
+// Imports
+
+public class EventManagerServlet extends HttpServlet {
+
+ // Servlet code
+}]]></programlisting>
+
+ <para>
+ Servlet��HTTP�� <literal>GET</literal>
���N�G�X�g�݂̂�������̂ŁA
+ <literal>doGet()</literal> ��������܂��B
+ </para>
+
+ <programlisting><![CDATA[protected void doGet(HttpServletRequest
request,
+ HttpServletResponse response)
+ throws ServletException, IOException {
+
+ SimpleDateFormat dateFormatter = new SimpleDateFormat("dd.MM.yyyy");
+
+ try {
+ // Begin unit of work
+ HibernateUtil.getSessionFactory()
+ .getCurrentSession().beginTransaction();
+
+ // Process request and render page...
+
+ // End unit of work
+ HibernateUtil.getSessionFactory()
+ .getCurrentSession().getTransaction().commit();
+
+ } catch (Exception ex) {
+ HibernateUtil.getSessionFactory()
+ .getCurrentSession().getTransaction().rollback();
+ throw new ServletException(ex);
+ }
+
+}]]></programlisting>
+
+ <para>
+ ����� <emphasis>session-per-request</emphasis>
�Ƃ����p�^�[���ł��B
+ Servlet�����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
+ </para>
+
+ <para>
+ ���ɁA���N�G�X�g�̃A�N�V�����͏�������A���X�|���X�ł���HTML���`�悳��܂��B
+ ����ɂ��Ă͂����ɐ�����܂��B
+ </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
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-webapp-processing" revision="1">
+ <title>�����ƕ`��</title>
+
+ <para>
+ �ł́A���N�G�X�g�̏����ƃy�[�W�̕`���������܂��B
+ </para>
+
+<programlisting><![CDATA[// Write HTML header
+PrintWriter out = response.getWriter();
+out.println("<html><head><title>Event
Manager</title></head><body>");
+
+// Handle actions
+if ( "store".equals(request.getParameter("action")) ) {
+
+ String eventTitle = request.getParameter("eventTitle");
+ String eventDate = request.getParameter("eventDate");
+
+ if ( "".equals(eventTitle) || "".equals(eventDate) ) {
+ out.println("<b><i>Please enter event title and
date.</i></b>");
+ } else {
+ createAndStoreEvent(eventTitle, dateFormatter.parse(eventDate));
+ out.println("<b><i>Added event.</i></b>");
+ }
+}
+
+// Print page
+printEventForm(out);
+listEvents(out, dateFormatter);
+
+// Write HTML footer
+out.println("</body></html>");
+out.flush();
+out.close();]]></programlisting>
+
+ <para>
+
Java��HTML�����݂���R�[�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
+ </para>
+
+ <programlisting><![CDATA[private void printEventForm(PrintWriter
out) {
+ out.println("<h2>Add new event:</h2>");
+ out.println("<form>");
+ out.println("Title: <input name='eventTitle'
length='50'/><br/>");
+ out.println("Date (e.g. 24.12.2009): <input name='eventDate'
length='10'/><br/>");
+ out.println("<input type='submit' name='action'
value='store'/>");
+ out.println("</form>");
+}]]></programlisting>
+
+ <para>
+ <literal>listEvents()</literal>
���\�b�h�́A���݂̃X���b�h�Ɍ��т�
+ Hibernate�� <literal>Session</literal>
��g�p���āA�N�G������s���܂��B
+ </para>
+
+ <programlisting><![CDATA[private void listEvents(PrintWriter out,
SimpleDateFormat dateFormatter) {
+
+ List result = HibernateUtil.getSessionFactory()
+ .getCurrentSession().createCriteria(Event.class).list();
+ if (result.size() > 0) {
+ out.println("<h2>Events in database:</h2>");
+ out.println("<table border='1'>");
+ out.println("<tr>");
+ out.println("<th>Event title</th>");
+ out.println("<th>Event date</th>");
+ out.println("</tr>");
+ for (Iterator it = result.iterator(); it.hasNext();) {
+ Event event = (Event) it.next();
+ out.println("<tr>");
+ out.println("<td>" + event.getTitle() +
"</td>");
+ out.println("<td>" + dateFormatter.format(event.getDate()) +
"</td>");
+ out.println("</tr>");
+ }
+ out.println("</table>");
+ }
+}]]></programlisting>
+
+ <para>
+ �Ō�ɁA <literal>store</literal> �A�N�V������
<literal>createAndStoreEvent()</literal> ���\�b�h��
+ �Ăяo���܂��B���̃��\�b�h�ł���݂̃X���b�h��
<literal>Session</literal> �𗘗p���܂��B
+ </para>
+
+ <programlisting><![CDATA[protected void createAndStoreEvent(String
title, Date theDate) {
+ Event theEvent = new Event();
+ theEvent.setTitle(title);
+ theEvent.setDate(theDate);
+
+ HibernateUtil.getSessionFactory()
+ .getCurrentSession().save(theEvent);
+}]]></programlisting>
+
+ <para>
+ ����ŃT�[�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
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-webapp-deploy">
+ <title>�f�v���C�ƃe�X�g</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
+ </para>
+
+<programlisting><![CDATA[<target name="war"
depends="compile">
+ <war destfile="hibernate-tutorial.war" webxml="web.xml">
+ <lib dir="${librarydir}">
+ <exclude name="jsdk*.jar"/>
+ </lib>
+
+ <classes dir="${targetdir}"/>
+ </war>
+</target>]]></programlisting>
+
+ <para>
+ ���̃^�[�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
+ </para>
+
+ <programlisting><![CDATA[<?xml version="1.0"
encoding="UTF-8"?>
+<web-app version="2.4"
+
xmlns="http://java.sun.com/xml/ns/j2ee"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+
+ <servlet>
+ <servlet-name>Event Manager</servlet-name>
+ <servlet-class>events.EventManagerServlet</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Event Manager</servlet-name>
+ <url-pattern>/eventmanager</url-pattern>
+ </servlet-mapping>
+</web-app>]]></programlisting>
+
+ <para>
+ 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
+ </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
+ </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
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="tutorial-summary" revision="1">
+ <title>�v��</title>
+
+ <para>
+ ���̃`���[�g���A���ł́A�ȒP�ȃX�^���h�A���[����Hibernate�A�v���P�[�V������
+ ���K�͂�Web�A�v���P�[�V�����������߂̊�{��Љ�܂����B
+ </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
+ </para>
+
+ <para>
+
����Ɂi���ʂȁj�`���[�g���A�����K�v�Ȃ�AHibernate�E�F�u�T�C�g��Y�ꂸ�Ƀ`�F�b�N���Ă��������B
+ </para>
+
+ </sect1>
+
+</chapter>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/content/xml.xml (from rev
14075, core/trunk/documentation/manual/ja-JP/src/main/docbook/modules/xml.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/content/xml.xml
(rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/content/xml.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,299 @@
+<?xml version="1.0" encoding="Shift_JIS"?>
+<chapter id="xml">
+ <title>XML�}�b�s���O</title>
+
+
<para><emphasis>XML�}�b�s���O��Hibernate3.0�ł͎����I�ȋ@�\�ł���A���Ɋ����I�ɊJ�����ł��B</emphasis></para>
+
+ <sect1 id="xml-intro" revision="1">
+ <title>XML�f�[�^�ł̍��</title>
+
+ <para>
+ Hibernate�ł͉i������POJO��g���č�Ƃ���̂Ƃقړ����悤�Ȃ����ŁA
+ �i������XML�f�[�^��g���č�Ƃł��܂��B
+ </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
+
+ �܂�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
+
+ </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
+ </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
+
+ </para>
+
+ <sect2 id="xml-intro-mapping">
+ <title>XML�ƃN���X�̃}�b�s���O���Ɏw�肷��</title>
+
+ <para>
+ �����POJO��XML���Ƀ}�b�s���O�����ł��B�F
+ </para>
+
+ <programlisting><![CDATA[<class name="Account"
+ table="ACCOUNTS"
+ node="account">
+
+ <id name="accountId"
+ column="ACCOUNT_ID"
+ node="@id"/>
+
+ <many-to-one name="customer"
+ column="CUSTOMER_ID"
+ node="customer/@id"
+ embed-xml="false"/>
+
+ <property name="balance"
+ column="BALANCE"
+ node="balance"/>
+
+ ...
+
+</class>]]></programlisting>
+ </sect2>
+
+ <sect2 id="xml-onlyxml">
+ <title>XML�}�b�s���O������w�肷��</title>
+
+ <para>
+ �����POJO�N���X���Ȃ��}�b�s���O�̗�ł��B�F
+ </para>
+
+ <programlisting><![CDATA[<class entity-name="Account"
+ table="ACCOUNTS"
+ node="account">
+
+ <id name="id"
+ column="ACCOUNT_ID"
+ node="@id"
+ type="string"/>
+
+ <many-to-one name="customerId"
+ column="CUSTOMER_ID"
+ node="customer/@id"
+ embed-xml="false"
+ entity-name="Customer"/>
+
+ <property name="balance"
+ column="BALANCE"
+ node="balance"
+ type="big_decimal"/>
+
+ ...
+
+</class>]]></programlisting>
+
+ <para>
+ ���̃}�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
+
+ �v���p�e�B�̖��O�́AHQL�N�G���[��ŎQ�Ƃł��鏃���Ș_���\���ł��B
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="xml-mapping" revision="1">
+ <title>XML�}�b�s���O�̃��^�f�[�^</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
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>"element-name"</literal> -
�w�肵��XML�v�f�փ}�b�s���O���܂�
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>"@attribute-name"</literal> -
�w�肵��XML�����փ}�b�s���O���܂�
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>"."</literal> -�@�e�v�f�փ}�b�s���O���܂�
+ </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
+ </para>
+
+ <para>
+ ���܂�ɑ����̊֘A�ɑ���
+ <literal>embed-xml="true"</literal>
�Ƃ����܂܂ɂ���̂͒��ӂ��ׂ��ł��B
+ XML�͏z���܂������܂���B
+ </para>
+
+ <programlisting><![CDATA[<class name="Customer"
+ table="CUSTOMER"
+ node="customer">
+
+ <id name="id"
+ column="CUST_ID"
+ node="@id"/>
+
+ <map name="accounts"
+ node="."
+ embed-xml="true">
+ <key column="CUSTOMER_ID"
+ not-null="true"/>
+ <map-key column="SHORT_DESC"
+ node="@short-desc"
+ type="string"/>
+ <one-to-many entity-name="Account"
+ embed-xml="false"
+ node="account"/>
+ </map>
+
+ <component name="name"
+ node="name">
+ <property name="firstName"
+ node="first-name"/>
+ <property name="initial"
+ node="initial"/>
+ <property name="lastName"
+ node="last-name"/>
+ </component>
+
+ ...
+
+</class>]]></programlisting>
+
+ <para>
+ ���̗�ł́A���ۂ�account�̃f�[�^�ł͂Ȃ��A
+ account��id�̃R���N�V�����ߍ��ނ��Ƃɂ��܂����B
+ ������HQL�N�G���ł��F
+ </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">
+ <account short-desc="Savings">987632567</account>
+ <account short-desc="Credit Card">985612323</account>
+ <name>
+ <first-name>Gavin</first-name>
+ <initial>A</initial>
+ <last-name>King</last-name>
+ </name>
+ ...
+</customer>]]></programlisting>
+
+ <para>
+ <literal><one-to-many></literal> �}�b�s���O��
+ <literal>embed-xml="true"</literal> �Ɛݒ肵���ꍇ�A
+ �f�[�^�͂��̂悤�ɂȂ�ł��傤�B
+ </para>
+
+ <programlisting><![CDATA[<customer id="123456789">
+ <account id="987632567" short-desc="Savings">
+ <customer id="123456789"/>
+ <balance>100.29</balance>
+ </account>
+ <account id="985612323" short-desc="Credit Card">
+ <customer id="123456789"/>
+ <balance>-2370.34</balance>
+ </account>
+ <name>
+ <first-name>Gavin</first-name>
+ <initial>A</initial>
+ <last-name>King</last-name>
+ </name>
+ ...
+</customer>]]></programlisting>
+
+ </sect1>
+
+
+ <sect1 id="xml-manipulation" revision="1">
+ <title>XML�f�[�^����</title>
+
+ <para>
+ XML�h�L�������g��A�A�v���P�[�V������ōēǂݍ��݂�X�V���Ă݂܂��傤�B
+ �ȉ��ł�dom4j�̃Z�b�V������擾���邱�Ƃōs���܂��B�F
+ </para>
+
+ <programlisting><![CDATA[Document doc = ....;
+
+Session session = factory.openSession();
+Session dom4jSession = session.getSession(EntityMode.DOM4J);
+Transaction tx = session.beginTransaction();
+
+List results = dom4jSession
+ .createQuery("from Customer c left join fetch c.accounts where c.lastName like
:lastName")
+ .list();
+for ( int i=0; i<results.size(); i++ ) {
+ //add the customer data to the XML document
+ Element customer = (Element) results.get(i);
+ doc.getRootElement().add(customer);
+}
+
+tx.commit();
+session.close();]]></programlisting>
+
+ <programlisting><![CDATA[Session session = factory.openSession();
+Session dom4jSession = session.getSession(EntityMode.DOM4J);
+Transaction tx = session.beginTransaction();
+
+Element cust = (Element) dom4jSession.get("Customer", customerId);
+for ( int i=0; i<results.size(); i++ ) {
+ Element customer = (Element) results.get(i);
+ //change the customer name in the XML and database
+ Element name = customer.element("name");
+ name.element("first-name").setText(firstName);
+ name.element("initial").setText(initial);
+ name.element("last-name").setText(lastName);
+}
+
+tx.commit();
+session.close();]]></programlisting>
+
+ <para>
+ XML�x�[�X�̃f�[�^�̃C���|�[�g/�G�N�X�|�[�g��������邽�߂ɁA
+ Hibernate�� <literal>replicate()</literal> ������̋@�\���т���̂�
+ �ɂ߂ėL���ł��B
+ </para>
+
+ </sect1>
+
+</chapter>
+
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/AuthorWork.png (from
rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/AuthorWork.png)
===================================================================
(Binary files differ)
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/AuthorWork.zargo
(from rev 14073,
core/trunk/documentation/manual/en-US/src/main/docbook/images/AuthorWork.zargo)
===================================================================
(Binary files differ)
Copied:
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/CustomerOrderProduct.png
(from rev 14073,
core/trunk/documentation/manual/en-US/src/main/docbook/images/CustomerOrderProduct.png)
===================================================================
(Binary files differ)
Copied:
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/CustomerOrderProduct.zargo
(from rev 14073,
core/trunk/documentation/manual/en-US/src/main/docbook/images/CustomerOrderProduct.zargo)
===================================================================
(Binary files differ)
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/EmployerEmployee.png
(from rev 14073,
core/trunk/documentation/manual/en-US/src/main/docbook/images/EmployerEmployee.png)
===================================================================
(Binary files differ)
Copied:
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/EmployerEmployee.zargo (from
rev 14073,
core/trunk/documentation/manual/en-US/src/main/docbook/images/EmployerEmployee.zargo)
===================================================================
(Binary files differ)
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/full_cream.png (from
rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/full_cream.png)
===================================================================
(Binary files differ)
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/full_cream.svg (from
rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/full_cream.svg)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/images/full_cream.svg
(rev 0)
+++
core/trunk/documentation/manual/ja-JP/src/main/docbook/images/full_cream.svg 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,429 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
+[
+ <!ATTLIST svg
+ xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
+]>
+<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<svg
+
xmlns="http://www.w3.org/2000/svg"
+
xmlns:xlink="http://www.w3.org/1999/xlink"
+ width="354.331"
+ height="336.614"
+ id="svg1">
+ <defs
+ id="defs3">
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop128" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop129" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient130"
+ xlink:href="#linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad" />
+ <radialGradient
+ cx="0.5"
+ cy="0.5"
+ fx="0.5"
+ fy="0.5"
+ r="0.5"
+ id="radialGradient131"
+ xlink:href="#linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad" />
+ </defs>
+ <g
+ transform="matrix(0.823795,0,0,0.823795,0.120302,5.25349)"
+ style="font-size:12;"
+ id="g659">
+ <rect
+ width="212.257"
+ height="57.2441"
+ x="17.9576"
+ y="100.132"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect137" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ transform="matrix(0.743454,0,0,0.482981,6.46949,52.2178)"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect132" />
+ </g>
+ <rect
+ width="325.86"
+ height="63.6537"
+ x="17.4083"
+ y="15.194"
+ style="font-size:12;fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect136" />
+ <rect
+ width="325.86"
+ height="63.6537"
+ x="13.6713"
+ y="12.4966"
+ style="font-size:12;fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect126" />
+ <g
+ transform="matrix(1.14345,0,0,0.729078,-1.67818,105.325)"
+ style="font-size:12;"
+ id="g164">
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="16.6979"
+ y="222.966"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect138" />
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="14.7335"
+ y="221.002"
+ transform="translate(-1.30962,-1.30992)"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect133" />
+ </g>
+ <text
+ x="170.824753"
+ y="58.402939"
+ transform="scale(0.823795,0.823795)"
+
style="font-size:18;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text183">
+ <tspan
+ x="170.824997"
+ y="58.402901"
+ id="tspan360">
+Application</tspan>
+ </text>
+ <text
+ x="178.076340"
+ y="364.281433"
+ transform="scale(0.823795,0.823795)"
+
style="font-size:18;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text197">
+ <tspan
+ x="178.076004"
+ y="364.281006"
+ id="tspan421">
+Database</tspan>
+ </text>
+ <text
+ x="68.605331"
+ y="138.524582"
+ transform="scale(0.823795,0.823795)"
+
style="font-size:16;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text216">
+ <tspan
+ x="68.605301"
+ y="138.524994"
+ id="tspan384">
+SessionFactory</tspan>
+ </text>
+ <rect
+ width="67.0014"
+ height="101.35"
+ x="196.927"
+ y="89.2389"
+ style="font-size:12;fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect387" />
+ <rect
+ width="67.0014"
+ height="101.35"
+ x="194.633"
+ y="86.4389"
+ style="font-size:12;fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect388" />
+ <text
+ x="249.108841"
+ y="173.885559"
+ transform="scale(0.823795,0.823795)"
+
style="font-size:16;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text389">
+ <tspan
+ x="249.108994"
+ y="173.886002"
+ id="tspan392">
+Session</tspan>
+ </text>
+ <rect
+ width="73.0355"
+ height="101.35"
+ x="270.995"
+ y="90.0018"
+ style="font-size:12;fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect395" />
+ <rect
+ width="73.0355"
+ height="101.35"
+ x="267.869"
+ y="87.2018"
+ style="font-size:12;fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect396" />
+ <text
+ x="328.593658"
+ y="174.715622"
+ transform="scale(0.823795,0.823795)"
+
style="font-size:16;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text397">
+ <tspan
+ x="328.593994"
+ y="174.716003"
+ id="tspan563">
+Transaction</tspan>
+ </text>
+ <g
+ transform="matrix(0.29544,0,0,0.397877,9.70533,103.96)"
+ style="font-size:12;"
+ id="g565">
+ <rect
+ width="285.502"
+ height="118.523"
+ x="16.6979"
+ y="99.2053"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect566" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect567" />
+ </g>
+ <text
+ x="25.592752"
+ y="204.497803"
+ transform="scale(0.823795,0.823795)"
+
style="font-size:10;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text568">
+ <tspan
+ x="25.592800"
+ y="204.498001"
+ id="tspan662">
+TransactionFactory</tspan>
+ </text>
+ <g
+ transform="matrix(0.298082,0,0,0.397877,99.6898,103.96)"
+ style="font-size:12;"
+ id="g573">
+ <rect
+ width="285.502"
+ height="118.523"
+ x="16.6979"
+ y="99.2053"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect574" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect575" />
+ </g>
+ <text
+ x="134.030670"
+ y="205.532791"
+ transform="scale(0.823795,0.823795)"
+
style="font-size:10;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text576">
+ <tspan
+ x="134.031006"
+ y="205.533005"
+ id="tspan664">
+ConnectionProvider</tspan>
+ </text>
+ <g
+ transform="matrix(1.14345,0,0,0.729078,-1.67818,38.9539)"
+ style="font-size:12;"
+ id="g587">
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="16.6979"
+ y="222.966"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect588" />
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="14.7335"
+ y="221.002"
+ transform="translate(-1.30962,-1.30992)"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect589" />
+ </g>
+ <rect
+ width="90.951"
+ height="44.4829"
+ x="25.6196"
+ y="206.028"
+ style="font-size:12;fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect594" />
+ <rect
+ width="90.951"
+ height="44.4829"
+ x="24.4229"
+ y="204.135"
+ style="font-size:12;fill:#b3b3b3;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect595" />
+ <text
+ x="85.575645"
+ y="282.300354"
+ transform="scale(0.823795,0.823795)"
+
style="font-size:18;font-weight:normal;stroke-width:1pt;font-family:Helvetica;text-anchor:middle;"
+ id="text596">
+ <tspan
+ x="85.575600"
+ y="282.299988"
+ id="tspan607">
+JNDI</tspan>
+ </text>
+ <rect
+ width="90.951"
+ height="44.4829"
+ x="236.937"
+ y="206.791"
+ style="font-size:12;fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect610" />
+ <rect
+ width="90.951"
+ height="44.4829"
+ x="235.741"
+ y="204.898"
+ style="font-size:12;fill:#b3b3b3;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect611" />
+ <text
+ x="342.093201"
+ y="283.226410"
+ transform="scale(0.823795,0.823795)"
+
style="font-size:18;font-weight:normal;stroke-width:1pt;font-family:Helvetica;text-anchor:middle;"
+ id="text612">
+ <tspan
+ x="342.092987"
+ y="283.226013"
+ id="tspan621">
+JTA</tspan>
+ </text>
+ <rect
+ width="90.951"
+ height="44.4829"
+ x="130.134"
+ y="206.791"
+ style="font-size:12;fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect616" />
+ <rect
+ width="90.951"
+ height="44.4829"
+ x="128.937"
+ y="204.898"
+ style="font-size:12;fill:#b3b3b3;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect617" />
+ <text
+ x="212.445343"
+ y="283.226410"
+ transform="scale(0.823795,0.823795)"
+
style="font-size:18;font-weight:normal;stroke-width:1pt;font-family:Helvetica;text-anchor:middle;"
+ id="text618">
+ <tspan
+ x="212.445007"
+ y="283.226013"
+ id="tspan623">
+JDBC</tspan>
+ </text>
+ <g
+ transform="matrix(0.823795,0,0,0.823795,0.120302,6.19341)"
+ style="font-size:12;"
+ id="g637">
+ <g
+ transform="matrix(0.499515,0,0,0.415467,-0.237339,5.61339)"
+ id="g167">
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="61.8805"
+ y="68.4288"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect134" />
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="59.2613"
+ y="65.8095"
+ style="fill:#e0e0e0;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect135" />
+ </g>
+ <text
+ x="33.749969"
+ y="50.589706"
+
style="font-size:11;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text188">
+ <tspan
+ x="33.750000"
+ y="50.589699"
+ id="tspan635">
+Transient Objects</tspan>
+ </text>
+ </g>
+ <g
+ transform="matrix(0.823795,0,0,0.823795,0.120302,5.25349)"
+ style="font-size:12;"
+ id="g644">
+ <g
+ transform="matrix(0.297486,0,0,0.516482,230.251,36.9178)"
+ id="g364">
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="61.8805"
+ y="68.4288"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect365" />
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="59.2613"
+ y="65.8095"
+ style="fill:#e0e0e0;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect366" />
+ </g>
+ <text
+ x="277.123230"
+ y="85.155571"
+
style="font-size:11;font-weight:normal;stroke-width:1pt;font-family:Helvetica;text-anchor:middle;"
+ id="text367">
+ <tspan
+ x="277.122986"
+ y="85.155602"
+ id="tspan631">
+Persistent</tspan>
+ <tspan
+ x="277.122986"
+ y="96.155602"
+ id="tspan633">
+Objects</tspan>
+ </text>
+ </g>
+</svg>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/hibernate_logo_a.png
(from rev 14073,
core/trunk/documentation/manual/en-US/src/main/docbook/images/hibernate_logo_a.png)
===================================================================
(Binary files differ)
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/lite.png (from rev
14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/lite.png)
===================================================================
(Binary files differ)
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/lite.svg (from rev
14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/lite.svg)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/images/lite.svg
(rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/images/lite.svg 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,334 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
+[
+ <!ATTLIST svg
+ xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
+]>
+<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<svg
+
xmlns="http://www.w3.org/2000/svg"
+
xmlns:xlink="http://www.w3.org/1999/xlink"
+ width="318.898"
+ height="248.031"
+ id="svg1">
+ <defs
+ id="defs3">
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop128" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop129" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient130"
+ xlink:href="#linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad" />
+ <radialGradient
+ cx="0.5"
+ cy="0.5"
+ fx="0.5"
+ fy="0.5"
+ r="0.5"
+ id="radialGradient131"
+ xlink:href="#linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad" />
+ </defs>
+ <rect
+ width="291.837"
+ height="57.0074"
+ x="17.3169"
+ y="18.646"
+ style="font-size:12;fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect136" />
+ <rect
+ width="291.837"
+ height="57.0074"
+ x="13.9703"
+ y="16.2302"
+ style="font-size:12;fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect126" />
+ <g
+ transform="matrix(0.326107,0,0,0.765831,9.59261,8.98517)"
+ style="font-size:12;"
+ id="g161">
+ <rect
+ width="285.502"
+ height="118.523"
+ x="16.6979"
+ y="99.2053"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect137" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect132" />
+ </g>
+ <g
+ transform="matrix(1.02406,0,0,0.652953,0.223384,39.9254)"
+ style="font-size:12;"
+ id="g164">
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="16.6979"
+ y="222.966"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect138" />
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="14.7335"
+ y="221.002"
+ transform="translate(-1.30962,-1.30992)"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect133" />
+ </g>
+ <g
+ transform="matrix(0.449834,0,0,0.338463,-3.15909,9.73319)"
+ style="font-size:12;"
+ id="g167">
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="61.8805"
+ y="68.4288"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect134" />
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="59.2613"
+ y="65.8095"
+ style="fill:#e0e0e0;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect135" />
+ </g>
+ <text
+ x="302.277679"
+ y="65.943230"
+ transform="scale(0.73778,0.73778)"
+
style="font-size:18;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text183">
+ <tspan
+ x="302.277954"
+ y="65.943184"
+ id="tspan360">
+Application</tspan>
+ </text>
+ <text
+ x="36.235924"
+ y="63.796055"
+ transform="scale(0.73778,0.73778)"
+
style="font-size:14;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text188">
+ <tspan
+ x="36.235950"
+ y="63.796051"
+ id="tspan427">
+Transient Objects</tspan>
+ </text>
+ <text
+ x="180.416245"
+ y="290.543701"
+ transform="scale(0.73778,0.73778)"
+
style="font-size:18;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text197">
+ <tspan
+ x="180.415939"
+ y="290.543549"
+ id="tspan421">
+Database</tspan>
+ </text>
+ <text
+ x="25.037701"
+ y="179.154755"
+ transform="scale(0.73778,0.73778)"
+
style="font-size:16;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text216">
+ <tspan
+ x="25.037655"
+ y="179.154648"
+ id="tspan384">
+SessionFactory</tspan>
+ </text>
+ <g
+ transform="matrix(0.252763,0,0,0.765831,109.104,8.98517)"
+ style="font-size:12;"
+ id="g386">
+ <rect
+ width="285.502"
+ height="118.523"
+ x="16.6979"
+ y="99.2053"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect387" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect388" />
+ </g>
+ <g
+ transform="matrix(0.297394,0,0,0.572692,101.502,21.6359)"
+ style="font-size:12;"
+ id="g364">
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="61.8805"
+ y="68.4288"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect365" />
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="59.2613"
+ y="65.8095"
+ style="fill:#e0e0e0;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect366" />
+ </g>
+ <text
+ x="202.746506"
+ y="102.992203"
+ transform="scale(0.73778,0.73778)"
+
style="font-size:14;font-weight:normal;stroke-width:1pt;font-family:Helvetica;text-anchor:middle;"
+ id="text367">
+ <tspan
+ x="202.746948"
+ y="102.992249"
+ id="tspan423">
+Persistent</tspan>
+ <tspan
+ x="202.746948"
+ y="116.992355"
+ id="tspan425">
+Objects</tspan>
+ </text>
+ <text
+ x="174.458496"
+ y="180.080795"
+ transform="scale(0.73778,0.73778)"
+
style="font-size:16;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text389">
+ <tspan
+ x="174.458618"
+ y="180.080338"
+ id="tspan392">
+Session</tspan>
+ </text>
+ <g
+ transform="matrix(0.127369,0,0,0.765831,188.675,8.98517)"
+ style="font-size:12;"
+ id="g394">
+ <rect
+ width="285.502"
+ height="118.523"
+ x="16.6979"
+ y="99.2053"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect395" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect396" />
+ </g>
+ <text
+ x="260.413269"
+ y="179.154739"
+ transform="scale(0.73778,0.73778)"
+
style="font-size:16;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text397">
+ <tspan
+ x="260.412964"
+ y="179.154343"
+ id="tspan400">
+JDBC</tspan>
+ </text>
+ <g
+ transform="matrix(0.127369,0,0,0.765831,229.156,8.98517)"
+ style="font-size:12;"
+ id="g405">
+ <rect
+ width="285.502"
+ height="118.523"
+ x="16.6979"
+ y="99.2053"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect406" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect407" />
+ </g>
+ <text
+ x="320.606903"
+ y="179.154739"
+ transform="scale(0.73778,0.73778)"
+
style="font-size:16;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text408">
+ <tspan
+ x="320.606964"
+ y="179.154343"
+ id="tspan417">
+JNDI</tspan>
+ </text>
+ <g
+ transform="matrix(0.127369,0,0,0.765831,269.281,8.98517)"
+ style="font-size:12;"
+ id="g411">
+ <rect
+ width="285.502"
+ height="118.523"
+ x="16.6979"
+ y="99.2053"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect412" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect413" />
+ </g>
+ <text
+ x="377.096313"
+ y="179.154739"
+ transform="scale(0.73778,0.73778)"
+
style="font-size:16;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text414">
+ <tspan
+ x="377.096008"
+ y="179.154999"
+ id="tspan145">
+JTA</tspan>
+ </text>
+</svg>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/overview.png (from
rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/overview.png)
===================================================================
(Binary files differ)
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/images/overview.svg (from
rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/images/overview.svg)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/images/overview.svg
(rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/images/overview.svg 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,250 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"
+[
+ <!ATTLIST svg
+ xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
+]>
+<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<svg
+
xmlns="http://www.w3.org/2000/svg"
+
xmlns:xlink="http://www.w3.org/1999/xlink"
+ width="248.031"
+ height="248.031"
+ id="svg1">
+ <defs
+ id="defs3">
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop128" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="1"
+ id="stop129" />
+ </linearGradient>
+ <linearGradient
+ x1="0"
+ y1="0"
+ x2="1"
+ y2="0"
+ id="linearGradient130"
+ xlink:href="#linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad" />
+ <radialGradient
+ cx="0.5"
+ cy="0.5"
+ fx="0.5"
+ fy="0.5"
+ r="0.5"
+ id="radialGradient131"
+ xlink:href="#linearGradient127"
+ gradientUnits="objectBoundingBox"
+ spreadMethod="pad" />
+ </defs>
+ <g
+ transform="matrix(0.771934,0,0,0.771934,4.36019,-3.02123)"
+ style="font-size:12;"
+ id="g158">
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="16.6979"
+ y="17.3527"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect136" />
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="14.7335"
+ y="15.3883"
+ transform="translate(-1.30962,-1.30992)"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect126" />
+ </g>
+ <g
+ transform="matrix(0.771934,0,0,0.771934,4.36019,3.04452)"
+ style="font-size:12;"
+ id="g161">
+ <rect
+ width="285.502"
+ height="118.523"
+ x="16.6979"
+ y="99.2053"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect137" />
+ <rect
+ width="285.502"
+ height="118.523"
+ x="13.4238"
+ y="95.9309"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect132" />
+ </g>
+ <g
+ transform="matrix(0.771934,0,0,0.771934,4.36019,8.0993)"
+ style="font-size:12;"
+ id="g164">
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="16.6979"
+ y="222.966"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect138" />
+ <rect
+ width="285.502"
+ height="77.2688"
+ x="14.7335"
+ y="221.002"
+ transform="translate(-1.30962,-1.30992)"
+ style="fill:#d2d2d2;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect133" />
+ </g>
+ <g
+ transform="matrix(0.771934,0,0,0.543505,2.59104,21.1103)"
+ style="font-size:12;"
+ id="g167">
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="61.8805"
+ y="68.4288"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect134" />
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="59.2613"
+ y="65.8095"
+ style="fill:#e0e0e0;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect135" />
+ </g>
+ <text
+ x="105.392174"
+ y="56.568123"
+ transform="scale(0.771934,0.771934)"
+
style="font-size:24;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text183">
+ <tspan
+ x="105.392273"
+ y="56.568146"
+ id="tspan186">
+Application</tspan>
+ </text>
+ <text
+ x="81.820183"
+ y="103.149330"
+ transform="scale(0.771934,0.771934)"
+
style="font-size:20;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text188">
+ <tspan
+ x="81.820213"
+ y="103.149727"
+ id="tspan206">
+Persistent Objects</tspan>
+ </text>
+ <text
+ x="111.548180"
+ y="278.927887"
+ transform="scale(0.771934,0.771934)"
+
style="font-size:24;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text197">
+ <tspan
+ x="111.547874"
+ y="278.927551"
+ id="tspan200">
+Database</tspan>
+ </text>
+ <text
+ x="94.436180"
+ y="153.805740"
+ transform="scale(0.771934,0.771934)"
+
style="font-size:24;font-weight:normal;stroke-width:1pt;font-family:Helvetica;"
+ id="text216">
+ <tspan
+ x="94.436180"
+ y="153.805740"
+ id="tspan221">
+HIBERNATE</tspan>
+ </text>
+ <g
+ transform="matrix(0.771934,0,0,0.771934,2.59083,1.02261)"
+ style="font-size:12;"
+ id="g254">
+ <g
+ transform="translate(4.58374,2.61928)"
+ id="g176">
+ <g
+ transform="matrix(0.571429,0,0,0.67347,-10.6174,117.093)"
+ id="g170">
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="61.8805"
+ y="68.4288"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect171" />
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="59.2613"
+ y="65.8095"
+ style="fill:#e0e0e0;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect172" />
+ </g>
+ <g
+ transform="matrix(0.571429,0,0,0.67347,138.682,117.093)"
+ id="g173">
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="61.8805"
+ y="68.4288"
+ style="fill:#757575;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect174" />
+ <rect
+ width="199.065"
+ height="61.5532"
+ x="59.2613"
+ y="65.8095"
+ style="fill:#e0e0e0;fill-rule:evenodd;stroke-width:1pt;"
+ id="rect175" />
+ </g>
+ </g>
+ <text
+ x="47.259438"
+ y="182.367538"
+ style="font-weight:bold;stroke-width:1pt;font-family:Courier;"
+ id="text191">
+ <tspan
+ x="47.259399"
+ y="182.367996"
+ id="tspan212">
+hibernate.</tspan>
+ <tspan
+ x="47.259399"
+ y="194.367996"
+ id="tspan214">
+properties</tspan>
+ </text>
+ <text
+ x="198.523010"
+ y="188.260941"
+ style="font-weight:normal;stroke-width:1pt;font-family:helvetica;"
+ id="text194">
+ <tspan
+ id="tspan195">
+XML Mapping</tspan>
+ </text>
+ </g>
+</svg>
Copied: core/trunk/documentation/manual/ja-JP/src/main/docbook/legal_notice.xml (from rev
14073, core/trunk/documentation/manual/en-US/src/main/docbook/legal_notice.xml)
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/legal_notice.xml
(rev 0)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/legal_notice.xml 2007-10-09
19:02:00 UTC (rev 14076)
@@ -0,0 +1,52 @@
+<?xml version='1.0'?>
+<!DOCTYPE legalnotice PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
+<!--
+ ~ Copyright (c) 2007, Red Hat Middleware, LLC. All rights reserved.
+ ~
+ ~ This copyrighted material is made available to anyone wishing to use, modify,
+ ~ copy, or redistribute it subject to the terms and conditions of the GNU
+ ~ Lesser General Public License, v. 2.1. This program is distributed in the
+ ~ hope that it will be useful, but WITHOUT A WARRANTY; without even the implied
+ ~ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ ~ Lesser General Public License for more details. You should have received a
+ ~ copy of the GNU Lesser General Public License, v.2.1 along with this
+ ~ distribution; if not, write to the Free Software Foundation, Inc.,
+ ~ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ ~
+ ~ Red Hat Author(s): Steve Ebersole
+ -->
+<legalnotice id="Legal_Notice">
+ <title>Legal Notice</title>
+ <para>
+ <address>
+ <street>1801 Varsity Drive</street>
+ <city>Raleigh</city>,
<state>NC</state><postcode>27606-2072</postcode><country>USA</country>
+ <phone>Phone: +1 919 754 3700</phone>
+ <phone>Phone: 888 733 4281</phone>
+ <fax>Fax: +1 919 754 3701</fax>
+ <pob>PO Box 13588</pob><city>Research Triangle
Park</city>,
<state>NC</state><postcode>27709</postcode><country>USA</country>
+ </address>
+ </para>
+ <para>
+ Copyright <trademark class="copyright"></trademark> 2007 by
Red Hat, Inc. This material may be distributed only subject to the terms and conditions
set forth in the Open Publication License, V1.0 or later (the latest version is presently
available at <ulink
url="http://www.opencontent.org/openpub/">http://www.opencon...>).
+ </para>
+ <para>
+ Distribution of substantively modified versions of this document is prohibited
without the explicit permission of the copyright holder.
+ </para>
+ <para>
+ Distribution of the work or derivative of the work in any standard (paper) book
form for commercial purposes is prohibited unless prior permission is obtained from the
copyright holder.
+ </para>
+ <para>
+ Red Hat and the Red Hat "Shadow Man" logo are registered trademarks of
Red Hat, Inc. in the United States and other countries.
+ </para>
+ <para>
+ All other trademarks referenced herein are the property of their respective owners.
+ </para>
+ <para>
+ The GPG fingerprint of the security(a)redhat.com key is:
+ </para>
+ <para>
+ CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E
+ </para>
+</legalnotice>
\ No newline at end of file
Deleted: core/trunk/documentation/manual/ja-JP/src/main/docbook/master.xml
===================================================================
--- core/trunk/documentation/manual/ja-JP/src/main/docbook/master.xml 2007-10-09 18:45:36
UTC (rev 14075)
+++ core/trunk/documentation/manual/ja-JP/src/main/docbook/master.xml 2007-10-09 19:02:00
UTC (rev 14076)
@@ -1,231 +0,0 @@
-<?xml version="1.0" encoding="Shift_JIS"?>
-<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3CR3//EN"
- "../support/docbook-dtd/docbookx.dtd"
-[
-<!ENTITY tutorial SYSTEM "modules/tutorial.xml">
-<!ENTITY architecture SYSTEM "modules/architecture.xml">
-<!ENTITY configuration SYSTEM "modules/configuration.xml">
-<!ENTITY persistent-classes SYSTEM "modules/persistent_classes.xml">
-<!ENTITY basic-mapping SYSTEM "modules/basic_mapping.xml">
-<!ENTITY collection-mapping SYSTEM "modules/collection_mapping.xml">
-<!ENTITY association-mapping SYSTEM
"modules/association_mapping.xml">
-<!ENTITY component-mapping SYSTEM "modules/component_mapping.xml">
-<!ENTITY inheritance-mapping SYSTEM
"modules/inheritance_mapping.xml">
-<!ENTITY session-api SYSTEM "modules/session_api.xml">
-<!ENTITY transactions SYSTEM "modules/transactions.xml">
-<!ENTITY events SYSTEM "modules/events.xml">
-<!ENTITY batch SYSTEM "modules/batch.xml">
-<!ENTITY query-hql SYSTEM "modules/query_hql.xml">
-<!ENTITY query-criteria SYSTEM "modules/query_criteria.xml">
-<!ENTITY query-sql SYSTEM "modules/query_sql.xml">
-<!ENTITY filters SYSTEM "modules/filters.xml">
-<!ENTITY xml SYSTEM "modules/xml.xml">
-<!ENTITY performance SYSTEM "modules/performance.xml">
-<!ENTITY toolset-guide SYSTEM "modules/toolset_guide.xml">
-<!ENTITY example-parentchild SYSTEM
"modules/example_parentchild.xml">
-<!ENTITY example-weblog SYSTEM "modules/example_weblog.xml">
-<!ENTITY example-mappings SYSTEM "modules/example_mappings.xml">
-<!ENTITY best-practices SYSTEM "modules/best_practices.xml">
-]>
-
-<book lang="ja">
-
- <bookinfo>
- <title>HIBERNATE - Relational Persistence for Idiomatic Java</title>
- <subtitle>Hibernate Reference Documentation</subtitle>
- <releaseinfo>3.2 cr3</releaseinfo>
- </bookinfo>
-
- <toc/>
-
- <preface id="preface" revision="2">
- <title>�O����</title>
-
- <para>
-
�����̊�Ɗ��ɂ����ā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
- </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
- </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
- </para>
-
- <para>
- Hibernate��I�u�W�F�N�g/�����[�V���i���}�b�s���O�A
- ����ɂ�Java�����߂Ă̕��́A�ȉ��̃X�e�b�v�ɏ]���Ă��������F
- </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
- </para>
- </listitem>
- <listitem>
- <para>
- <xref linkend="architecture"/>
��ǂ�ŁAHibernate�����p�\�Ȋ��𗝉��Ă��������B
- </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
- </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
- </para>
- </listitem>
- <listitem>
- <para>
- FAQ��Hibernate�E�F�u�T�C�g�ɂ���܂��B
- </para>
- </listitem>
- <listitem>
- <para>
-
�T�[�h�p�[�e�B�̃f���A��A�`���[�g���A����Hibernate�E�F�u�T�C�g�Ƀ����N������܂��B
- </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
- </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
- </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
- </para>
-
- <sect1 id="preface-s1" revision="-1">
-
- <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
- </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>
-
- <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
-
- <mediaobject>
- <imageobject role="fo">
- <imagedata fileref="images/mailaddr.gif"
format="GIF" align="center"/>
- </imageobject>
- <imageobject role="html">
- <imagedata fileref="../shared/images/mailaddr.gif"
format="GIF" align="center"/>
- </imageobject>
- </mediaobject>
-
- </para>
- </sect2>
- </sect1>
-
- </preface>
-
- &tutorial;
-
- &architecture;
-
- &configuration;
-
- &persistent-classes;
-
- &basic-mapping;
- &collection-mapping;
- &association-mapping;
- &component-mapping;
- &inheritance-mapping;
-
- &session-api;
- &transactions;
- &events;
- &batch;
-
- &query-hql;
- &query-criteria;
- &query-sql;
- &filters;
- &xml;
-
- &performance;
-
- &toolset-guide;
-
- &example-parentchild;
- &example-weblog;
- &example-mappings;
-
- &best-practices;
-
-</book>
-