[hibernate-commits] Hibernate SVN: r14079 - in core/trunk/documentation/manual/ko-KR/src/main: docbook and 2 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Oct 9 15:14:23 EDT 2007


Author: steve.ebersole at jboss.com
Date: 2007-10-09 15:14:22 -0400 (Tue, 09 Oct 2007)
New Revision: 14079

Added:
   core/trunk/documentation/manual/ko-KR/src/main/docbook/Hibernate_Reference.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/architecture.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/association_mapping.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/basic_mapping.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/batch.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/best_practices.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/collection_mapping.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/component_mapping.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/configuration.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/events.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/example_mappings.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/example_parentchild.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/example_weblog.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/filters.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/inheritance_mapping.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/performance.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/persistent_classes.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/preface.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/query_criteria.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/query_hql.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/query_sql.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/quickstart.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/session_api.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/toolset_guide.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/transactions.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/tutorial.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/content/xml.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/images/
   core/trunk/documentation/manual/ko-KR/src/main/docbook/images/AuthorWork.png
   core/trunk/documentation/manual/ko-KR/src/main/docbook/images/AuthorWork.zargo
   core/trunk/documentation/manual/ko-KR/src/main/docbook/images/CustomerOrderProduct.png
   core/trunk/documentation/manual/ko-KR/src/main/docbook/images/CustomerOrderProduct.zargo
   core/trunk/documentation/manual/ko-KR/src/main/docbook/images/EmployerEmployee.png
   core/trunk/documentation/manual/ko-KR/src/main/docbook/images/EmployerEmployee.zargo
   core/trunk/documentation/manual/ko-KR/src/main/docbook/images/full_cream.png
   core/trunk/documentation/manual/ko-KR/src/main/docbook/images/full_cream.svg
   core/trunk/documentation/manual/ko-KR/src/main/docbook/images/hibernate_logo_a.png
   core/trunk/documentation/manual/ko-KR/src/main/docbook/images/lite.png
   core/trunk/documentation/manual/ko-KR/src/main/docbook/images/lite.svg
   core/trunk/documentation/manual/ko-KR/src/main/docbook/images/overview.png
   core/trunk/documentation/manual/ko-KR/src/main/docbook/images/overview.svg
   core/trunk/documentation/manual/ko-KR/src/main/docbook/legal_notice.xml
Removed:
   core/trunk/documentation/manual/ko-KR/src/main/docbook/master.xml
   core/trunk/documentation/manual/ko-KR/src/main/docbook/modules/
   core/trunk/documentation/manual/ko-KR/src/main/resources/
Log:
new docbook layout (prep for translations migration to PO)

Copied: core/trunk/documentation/manual/ko-KR/src/main/docbook/Hibernate_Reference.xml (from rev 14073, core/trunk/documentation/manual/en-US/src/main/docbook/Hibernate_Reference.xml)
===================================================================
--- core/trunk/documentation/manual/ko-KR/src/main/docbook/Hibernate_Reference.xml	                        (rev 0)
+++ core/trunk/documentation/manual/ko-KR/src/main/docbook/Hibernate_Reference.xml	2007-10-09 19:14:22 UTC (rev 14079)
@@ -0,0 +1,72 @@
+<?xml version='1.0' encoding="UTF-8"?>
+
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+        <!ENTITY versionNumber "3.3.0.alpha1">
+        <!ENTITY copyrightYear "2004">
+        <!ENTITY copyrightHolder "Red Hat Middleware, LLC.">
+]>
+
+<book>
+
+    <bookinfo>
+        <title>HIBERNATE - 개성있는 자바를 위한 관계 영속</title>
+        <subtitle>하이버네이트 참조 문서</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>&copyrightYear;</year>
+            <holder>&copyrightHolder;</holder>
+        </copyright>
+        <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/ko-KR/src/main/docbook/content/architecture.xml (from rev 14078, core/trunk/documentation/manual/ko-KR/src/main/docbook/modules/architecture.xml)
===================================================================
--- core/trunk/documentation/manual/ko-KR/src/main/docbook/content/architecture.xml	                        (rev 0)
+++ core/trunk/documentation/manual/ko-KR/src/main/docbook/content/architecture.xml	2007-10-09 19:14:22 UTC (rev 14079)
@@ -0,0 +1,323 @@
+<!--
+  ~ 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
+  -->
+<chapter id="architecture">
+
+    <title>아키텍처</title>
+
+    <sect1 id="architecture-overview" revision="1">
+        <title>개요</title>
+        
+        <para>
+            Hibernate 아키텍처에 대한 (매우) 높은 수준의 개요::
+        </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를 보여준다.
+        </para>
+
+        <para>
+                        우리는 런타임 아키텍처에 대한 보다 상세한 뷰를 보여주고 싶다. 불행하게도, Hibernate는 유연하며 
+                        몇 가지 접근법들을 제공한다. 우리는 두 가지 극단을 보여줄 것이다. "경량급" 아키텍처는 그것 자신의 
+            JDBC 커넥션들을 제공하고 그것 자신의 트랜잭션들을 관리하는 어플리케이션을 갖는다. 이 접근법은 
+            Hibernate의 API의 최소 부분집합을 사용한다:
+        </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>
+            "전체 정수" 아키텍처는 기본 JDBC/JTA로부터 어플리케이션을 추상화 시키고 Hibernate로 하여금 
+                        상세한 것을 처리하게 한다.
+        </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>
+                        다음은 다이어그램들 내에 있는 객체들에 대한 몇가지 정의들이다:
+
+            <variablelist spacing="compact">
+                <varlistentry>
+                    <term>SessionFactory (<literal>org.hibernate.SessionFactory</literal>)</term>
+                    <listitem>
+                        <para>
+                                                        단일 데이터베이스에 대한 컴파일된 매핑들의 threadsafe (불변의) 캐시. Session과 ConnectionProvider의 
+                                                        클라이언트를 위한 팩토리. 프로세스 레벨 또는 클러스터 레벨에서 트랜잭션들 사이에 재사용 가능한 데이터의 선택적인
+                            (second-level) 캐시를 보관할 수도 있다.
+                        </para>
+                    </listitem>
+                </varlistentry>
+                <varlistentry>
+                    <term>Session (<literal>org.hibernate.Session</literal>)</term>
+                    <listitem>
+                        <para>
+                                                        어플리케이션과 영속 저장소 사이의 대화를 표현하는 단일 쓰레드이고, 수명이 짧은 객체.  JDBC 커넥션을 포장한다. 
+                            <literal>Transaction</literal> 용 팩토리. 객체 그래프를 네비게이트 하거나 식별자로 객체들을 룩업할 때 
+                                                        사용되는 영속 객체들에 대한 필수적인(첫 번째 레벨의) 캐시를 보관한다.
+                        </para>
+                    </listitem>
+                </varlistentry>
+                <varlistentry>
+                    <term>영속 객체들과 콜렉션들</term>
+                    <listitem>
+                        <para>
+                            persistent 상태와 비지니스 기능을 포함하는 수명이 짧고, 단일 쓰레드인 객체들. 이것들은 통상의 JavaBeans/POJO들일 
+                                                        수 있고, 오직 그것들에 대한 오직 특별한 것은 그것들이 현재 (정확하게 한 개의) <literal>Session</literal>과  연관되어 
+                                                        있다는 점이다. <literal>Session</literal>이 닫히자마자, 그것들은 분리될(detached 상태가 될) 것이고 어플리케이션 
+                                                        레이어에서 사용하는 것이 자유로와진다(예를 들면. 직접적으로 프리젠테이션 계층으로 
+                                                        데이터 전송 객체들로서 그리고 직접적으로 프리젠테이션 계층으로부터 데이터 전송 객체들로서).
+                        </para>
+                    </listitem>
+                </varlistentry>
+                <varlistentry>
+                    <term>전이(Transient, 필자 주-과도) 객체들과 콜렉션들</term>
+                    <listitem>
+                        <para>
+                            <literal>Session</literal>과 현재 연관되어 있지 않은 영속 클래스들의 인스턴스들. 그것들은 어플리케이션에 의해 초기화
+                                                        되었고 (아직) 영속화 되지 않았거나 그것들은 닫혀진<literal>Session</literal>에 의해 초기화 되었을 수도 있다.
+                        </para>
+                    </listitem>
+                </varlistentry>
+                <varlistentry>
+                    <term>Transaction (<literal>org.hibernate.Transaction</literal>)</term>
+                    <listitem>
+                        <para>
+                            (옵션) 작업의 원자 단위를 지정하기 위해 어플리케이션에 의해 사용되는 단일 쓰레드이고, 수명이 짧은 객체. 기본 JDBC, JTA 
+                                                        또는 CORBA 트랜잭션으로부터 어플리케이션을 추상화 시킨다. 몇몇 경우들에서 하나의 <literal>Session</literal>은 
+                                                        여러 개의 <literal>Transaction</literal>들에 걸칠 수 있다. 하지만 기본 API 또는 <literal>Transaction</literal>을 
+                                                        사용하는 트랜잭션 경계 설정은 결코 옵션이 아니다!
+                        </para>
+                    </listitem>
+                </varlistentry>
+                <varlistentry>
+                    <term>ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</literal>)</term>
+                    <listitem>
+                        <para>
+                            (옵션) JDBC 커넥션들에 대한 팩토리(그리고 그것들의 pool). 기본 <literal>Datasource</literal> 또는 
+                            <literal>DriverManager</literal>로부터 어플리케이션을 추상화 시킨다. 어플리케이션에 노출되지는 않지만 
+                                                        개발자에 의해 확장/구현 된다.
+                        </para>
+                    </listitem>
+                </varlistentry>
+                <varlistentry>
+                    <term>TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)</term>
+                    <listitem>
+                        <para>
+                            (옵션) <literal>Transaction</literal> 인스턴스들에 대한 팩토리. 어플리케이션에 노출되지는 않지만 개발자에 의해 
+                                                        확장/구현 된다. 
+                        </para>
+                    </listitem>
+                </varlistentry>
+                <varlistentry>
+                    <term><emphasis>Extension Interfaces</emphasis></term>
+                    <listitem>
+                        <para>
+                            Hibernate는 당신의 영속 계층의 특성을 맞춤화 시키기 위해 당신이 구현할 수 있는 선택적인 확장 인터페이스들을 제공한다. 
+                                                        상세한 것은 API 문서를 보라.
+                        </para>
+                    </listitem>
+                </varlistentry>
+            </variablelist>
+        </para>
+
+        <para>
+                        주어진 "경량급" 아키텍처의 경우, 어플리케이션은 JTA 또는 JDBC와 직접 대화하기 위해서 <literal>Transaction</literal>/<literal>TransactionFactory</literal> 
+                        그리고/또는 <literal>ConnectionProvider</literal> API들을 무시한다.
+        </para>
+    </sect1>
+
+    <sect1 id="architecture-states" revision="1">
+        <title>인스턴스 상태들</title>
+        <para>
+                        영속 클래스들의 인스턴스는 세개의 상태들 중 하나 일 수 있다. 그것들(상태들)은  영속  컨텍스트(<emphasis>persistence context</emphasis>)에 
+                        대해 정의된다. Hibernate <literal>Session</literal> 객체는 영속 컨텍스트이다:
+        </para>
+        
+       <variablelist spacing="compact">
+            <varlistentry>
+                <term>transient</term>
+                <listitem>
+                    <para>
+                                                인스턴스는 임의의 컨텍스트와 연관되어 있지 않고, 결코 연관된 적이 없었다. 그것은 영속 식별자(프라이머리 키 값)을 갖지 않는다.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term>persistent</term>
+                <listitem>
+                    <para>
+                                                인스턴스는 현재 영속 컨텍스트와 연관되어 있다. 그것은 영속 식별자(프라이머리 키 값) 그리고 아마 데이터베이스 내에 있는 대응하는 
+                                                행을 갖는다. 특별한 영속 컨텍스트의 경우, Hibernate는 영속 identity가 Java identity(객체의 메모리 내 위치)와 같다는 점을 
+                        <emphasis>보증한다</emphasis>.
+                    </para>
+                </listitem>
+            </varlistentry>
+            <varlistentry>
+                <term>detached</term>
+                <listitem>
+                    <para>
+                                                인스턴스는 영속 컨텍스트와 한번 연관되었지만, 그 컨텍스트가 닫혔거나, 그 인스턴스가 또 다른 프로세스로 직렬화 되었다. 그것은 영속 
+                        identity 그리고, 아마 데이터베이스 내에 대응하는 행을 갖는다. detached 인스턴스들의 경우, Hibernate는 영속 identity과 
+                        Java identity 사이의 관계를 보증하지 않는다.
+                    </para>
+                </listitem>
+            </varlistentry>
+        </variablelist>
+    </sect1>    
+
+    <sect1 id="architecture-jmx" revision="1">
+        <title>JMX 통합</title>
+
+        <para>
+            JMX는 자바 컴포넌트 관리를 위한 J2EE 표준이다. Hibernate는 JMX 표준 서비스를 통해 관리될 수도 있다. 우리는 배포본 내에 MBean 구현, 
+            <literal>org.hibernate.jmx.HibernateService</literal>를 제공한다.
+        </para>
+
+        <para>
+            JBoss 어플리케이션 서버 상에 Hibernae를 JMX 서비스로서 배치하는 방법에 대한 예제는 JBoss 사용자 가이드를 보길 바란다. JBoss 
+                        어플리케이션 서버 상에서, 만일 당신이 JMX를 사용하여 배치할 경우 당신은 또한 다음 이점들을 얻는다:
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    <emphasis>Session 관리:</emphasis> Hibernate <literal>Session</literal>의 생명주기가 JTA 트랜잭션의 
+                                        영역 내에 자동적으로 바인드 될 수 있다. 이것은 당신이 더이상 <literal>Session</literal>을 수작업으로 열고 닫지 않아도 
+                                        됨을 의미하고, 이것은 JBoss EJB 인터셉터의 업무가 된다.  당신은 또한 더 이상 당신의 코드 어느 곳에서든 트랜잭션 경계설정에 
+                                        대해 걱정하지 않아도 된다(당신이 물론 이식성 있는 영속 계층을 작성하고자 원하지 않는한, 이를 위해 옵션 Hibernate <literal>Transaction</literal> 
+                    API를 사용하라). 당신은 <literal>Session</literal>에 접근하기 위해 <literal>HibernateContext</literal>를 호출한다.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    <emphasis>HAR 배치:</emphasis> 대개 당신은 JBoss 서비스 배치 디스크립터를 사용하여 Hibernate JMX 서비스를 
+                    (EAR 과/또는 SAR 파일로) 배치하고, 그것은 Hibernate <literal>SessionFactory</literal>의 통상적인 구성 
+                                       옵션들 모두를 지원한다. 하지만 당신은 여전히 모든 당신의 매핑 파일들을 배치 디스크립터 속에 명명해야 한다. 만일 당신이 
+                                       옵션 HAR 배치를 사용하고자 결정하는 경우, JBoss는 당신의 HAR 파일 내에 있는 모든 매핑 파일들을 자동적으로 검출해낼 것이다.
+                </para>
+            </listitem>
+        </itemizedlist>
+
+        <para>
+                        이들 옵션들에 대한 추가 정보는 JBoss 어플리케이션 서버 사용자 가이드를 참조하라.
+        </para>
+
+        <para>
+            JMX 서비스로서 이용 가능한 또다른 특징은 런타임 Hibernate 통계이다. 
+            <xref linkend="configuration-optional-statistics"/>를 보라.
+        </para>
+    </sect1>
+
+    <sect1 id="architecture-jca" revision="1">
+        <title>JCA 지원</title>
+        <para>
+            Hibernate는 JCA 커넥터로서 구성될 수도 있다. 상세한 것은 웹 사이트를 보길 바란다. Hibernate JCA 지원은 여전히 실험적으로 
+                        검토 중에 있음을 노트하길 바란다.
+        </para>
+    </sect1>
+
+    <sect1 id="architecture-current-session" revision="2">
+        <title>컨텍스트 상의 세션들</title>
+        <para>
+	        Hibernate를 사용하는 대부분의 어플리케이션들은 어떤 양식의 "컨텍스트상의(contextual)" 세션들을 필요로 한다. 여기서 
+	                주어진 세션은 주어진 컨텍스트의 영역에 걸쳐 활동을 한다. 하지만 어플리케이션들을 가로질러 컨텍스트를 구성하는 것에 대한 정의는 
+	                일반적으로 다르다; 그리고 다른 컨텍스트들은 현재라고 하는 개념에 대해 다른 영역들을 정의한다. 버전 3.0 전의 Hibernate를 
+	                사용하는 어플리케이션들은 자가생산된 <literal>ThreadLocal</literal>-기반의 컨텍스상의 세션들, 
+	        <literal>HibernateUtil</literal>과 같은 helper 클래스들을 활용했거나  
+	                프락시/인터셉션 기반의 컨텍스트상의 세션들을 제공해주었던 (Spring 또는 Pico와 같은 )제 3의 프레임웍들을 활용하는 경향이 있었다.
+        </para>
+	    <para>
+		        버전 3.0.1에서부터 시작하여, Hibernate는 <literal>SessionFactory.getCurrentSession()</literal> 메소드를 
+		        추가했다. 초기에 이것은 <literal>JTA</literal> 트랜잭션들을 사용하는 것을 전제했다. 여기서 <literal>JTA</literal>
+		        트랜잭션은 현재 세션의 영역과 컨텍스트를 정의했다. Hibernate 팀은 성숙된 다수의 스탠드얼론 <literal>JTA TransactionManager</literal>
+		        구현들이 발표되면, (전부는 아니겠지만) 대부분의 어플리케이션들이 그것들이 <literal>J2EE</literal> 컨테이너 내로 배치되든 
+		        그렇지 않든 간에 <literal>JTA</literal> 트랜잭션 관리를 사용하게 될 것이라고 주장한다. 그것에 기초하여, <literal>JTA</literal>에 기반한 
+		        컨텍스트상의 세션들은 언젠가 당신이 사용을 필요로 하게 될 전부다.
+	    </para>
+	    <para>
+		        하지만 버전 3.1 이후로 <literal>SessionFactory.getCurrentSession()</literal> 이면의 처리과정은
+		        이제 플러그 가능하다. 그것을 끝내기 위해, 하나의 새로운 확장 인터페이스
+		    (<literal>org.hibernate.context.CurrentSessionContext</literal>)와 
+		        하나의 새로운 구성 파라미터(<literal>hibernate.current_session_context_class</literal>)가 현재 세션들을 
+		        정의하는 영역과 컨텍스트의 플러그 가능성을 허용하기 위해 추가되었다.
+	    </para>
+	    <para>
+		        그것의 계약에 대한 상세한 논의는 <literal>org.hibernate.context.CurrentSessionContext</literal> 인터페이스에 
+		        관한 javadocs를 보라. 그것은 하나의 메소드, <literal>currentSession()</literal>를 정의하며, 그 구현은 
+		        현재의 컨텍스트 상의 세션을 추적할 책임이 있다. 비공식적으로, Hibernate는 이 인터페이스에 대한 세 개의 구현들을 부수적으로 
+		        포함하고 있다.
+	    </para>
+	    
+		<itemizedlist>
+			<listitem>
+				<para>
+					<literal>org.hibernate.context.JTASessionContext</literal> - 현재의 세션들은 하나의 
+					<literal>JTA</literal>에 의해 추적되고 영역화 된다. 여기서 처리과정은 이전의 JTA-전용 접근과 정확하게 
+					동일하다. 상세한 것은 javadocs를 보라.
+				</para>
+			</listitem>
+			<listitem>
+				<para>
+					<literal>org.hibernate.context.ThreadLocalSessionContext</literal> - 현재의 세션들은 
+					실행 쓰레드에 의해 추적된다. 상세한 것은 다시 javadocs를 보라.
+				</para>
+			</listitem>
+		</itemizedlist>
+	    <para>
+                        처음의 두 구현들은 <emphasis>session-per-request</emphasis>로 알려지고 사용되고 있는 
+            "하나의 세션 - 하나의 데이터베이스 트랜잭션" 프로그래밍 모형을 제공한다. 하나의 Hibernate 세션의 시작과 끝은 
+                        데이터베이스 트랜잭션의 존속 기간에 의해 정의된다. 만일 (예를 들면 순수 J2SE에서 또는 JTA/UserTransaction/BMT의 경우에)
+                        당신이 프로그램 상의 트랜잭션 경계구분을 사용할 경우, 당신은 당신의 코드로부터 기본 트랜잭션 시스템을 은폐시키는데 
+            Hibernate <literal>Transaction</literal> API를 사용하는 것이 권장된다. 만일 당신이 CMT를 지원하는 
+                        하나의 EJB 컨테이너에서 실행할 경우, 트랜잭션 경계들이 선언적으로 정의되고 당신은 당신의 코드 내에 어떤 트랜잭션도 
+                        세션 경계구분 오퍼레이션들을 필요로 하지 않는다. 추가 정보와 코드 예제들은 <xref linkend="transactions"/>를 참조하라.
+	    </para>
+	    
+	    <para>
+		    <literal>hibernate.current_session_context_class</literal> 구성 파라미터는 
+		    <literal>org.hibernate.context.CurrentSessionContext</literal> 구현이 사용될 것임을 정의한다. 역호환을 위해. 
+		        만일 이 구성 파라미터가 설정되지 않았지만 하나의 <literal>org.hibernate.transaction.TransactionManagerLookup</literal>이 
+		        구성되어 있을 경우, Hibernate는 <literal>org.hibernate.context.JTASessionContext</literal>를 사용할 것임을 
+		        노트하라. 일반적으로, 이 파라미터의 값은 단지 사용할 구현 클래스를 명명할 것이다; 하지만 두 가지 비공식적인 구현들로서 두 개의 
+		        대응하는 짧은 이름들 "jta"와 "thread"이 존재한다.
+		</para>
+		
+    </sect1>
+
+</chapter>
+

Copied: core/trunk/documentation/manual/ko-KR/src/main/docbook/content/association_mapping.xml (from rev 14078, core/trunk/documentation/manual/ko-KR/src/main/docbook/modules/association_mapping.xml)
===================================================================
--- core/trunk/documentation/manual/ko-KR/src/main/docbook/content/association_mapping.xml	                        (rev 0)
+++ core/trunk/documentation/manual/ko-KR/src/main/docbook/content/association_mapping.xml	2007-10-09 19:14:22 UTC (rev 14079)
@@ -0,0 +1,603 @@
+<chapter id="associations">
+
+    <title>연관 매핑들</title>
+
+    <sect1 id="assoc-intro" revision="1">
+        <title>개요</title>
+        
+        <para>
+                        연관 매핑들은 올바른 것을 얻기가 종종 가장 어려운 것이다. 이 절에서 우리는 단방향 매핑들에서 시작하고, 그런 다음 양방향 경우들을 
+                        검토함으로써, 하나씩 표준적인 경우들을 상세히 논의할 것이다. 우리는 모든 예제들에서 <literal>Person</literal>과 
+            <literal>Address</literal>를 사용할 것이다.
+        </para>
+        
+        <para>
+        	우리는 연관들을 중재하는 join 테이블로 매핑시킬 것인지 여부에 따라, 그리고 multiplicity(다중성)에 따라 연관들을 분류할 것이다.
+        </para>
+        
+        <para>
+        	null 허용 가능한 foreign 키들은 전통적인 데이터 모델링에서 좋은 실례로 간주되지 않아서, 모든 우리의 예제들은 not null 
+            foreign 키들을 사용한다. 이것은 Hibernate에서 필수가 아니고, 당신이 null 허용 가능 컨스트레인트들을 드롭시킬 경우 매핑들은  
+                        모두 동작할 것이다.
+        </para>
+        
+    </sect1>
+
+    <sect1 id="assoc-unidirectional" revision="1">
+        <title>단방향 연관들</title>
+        
+        <sect2 id="assoc-unidirectional-m21">
+        <title>many to one</title>
+        
+        <para>
+            <emphasis>단방향 many-to-one 연관</emphasis>은 가장 공통적인 종류의 단방향 연관이다.
+        </para>
+        
+        <programlisting><![CDATA[<class name="Person">
+    <id name="id" column="personId">
+        <generator class="native"/>
+    </id>
+    <many-to-one name="address" 
+        column="addressId"
+        not-null="true"/>
+</class>
+
+<class name="Address">
+    <id name="id" column="addressId">
+        <generator class="native"/>
+    </id>
+</class>]]></programlisting>
+        <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key, addressId bigint not null )
+create table Address ( addressId bigint not null primary key )
+        ]]></programlisting>
+        
+        </sect2>
+
+        <sect2 id="assoc-unidirectional-121">
+        <title>one to one</title>
+        
+        <para>
+            <emphasis>foreign 키에 대한 단방향 one-to-one 연관은 대개 아주 동일하다.</emphasis> 유일한 차이점은 
+                        컬럼 유일(unique) 컨스트레인트이다.
+        </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>하나의 프라이머리 키에 대한 단방향 one-to-one 연관</emphasis>은 대개 특별한 id 생성기를 사용한다. 
+            (이 예제에서 연관의 방향이 역전되었음을 주목하라.)
+        </para>
+        
+       <programlisting><![CDATA[<class name="Person">
+    <id name="id" column="personId">
+        <generator class="native"/>
+    </id>
+</class>
+
+<class name="Address">
+    <id name="id" column="personId">
+        <generator class="foreign">
+            <param name="property">person</param>
+        </generator>
+    </id>
+    <one-to-one name="person" constrained="true"/>
+</class>]]></programlisting>
+        <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table Address ( personId bigint not null primary key )
+        ]]></programlisting>
+        
+        </sect2>
+        
+        <sect2 id="assoc-unidirectional-12m">
+        <title>one to many</title>
+        
+        <para>
+            <emphasis>하나의 foreign 키에 대한 단방향 one-to-many 연관</emphasis>은 매우 색다른 경우이고, 실제로 권장되지 않는다.
+        </para>
+        
+        <programlisting><![CDATA[<class name="Person">
+    <id name="id" column="personId">
+        <generator class="native"/>
+    </id>
+    <set name="addresses">
+        <key column="personId" 
+            not-null="true"/>
+        <one-to-many class="Address"/>
+    </set>
+</class>
+
+<class name="Address">
+    <id name="id" column="addressId">
+        <generator class="native"/>
+    </id>
+</class>]]></programlisting>
+        <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table Address ( addressId bigint not null primary key, personId bigint not null )
+        ]]></programlisting>
+        
+        <para>
+                        우리는 이런 종류의 연관에 대해 하나의 join 테이블을 사용하는 것이 더 좋다고 생각한다.
+        </para>
+        
+        </sect2>
+    
+    </sect1>
+
+    <sect1 id="assoc-unidirectional-join" revision="1">
+        <title>join 테이블들에 대한 단방향 연관들</title>
+        
+        <sect2 id="assoc-unidirectional-join-12m">
+        <title>one to many</title>
+        
+        <para>
+            <emphasis>하나의 join 테이블에 대한 단방향 one-to-many 연관</emphasis>이 보다 더 선호된다. <literal>unique="true"</literal>를 
+                        지정함으로써 우리는 many-to-many에서 one-to-many로 아중성(multiplicity)를 변경시켰음을 주목하라.
+        </para>
+        
+        <programlisting><![CDATA[<class name="Person">
+    <id name="id" column="personId">
+        <generator class="native"/>
+    </id>
+    <set name="addresses" table="PersonAddress">
+        <key column="personId"/>
+        <many-to-many column="addressId"
+            unique="true"
+            class="Address"/>
+    </set>
+</class>
+
+<class name="Address">
+    <id name="id" column="addressId">
+        <generator class="native"/>
+    </id>
+</class>]]></programlisting>
+        <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId not null, addressId bigint not null primary key )
+create table Address ( addressId bigint not null primary key )
+        ]]></programlisting>
+        
+        </sect2>
+
+        <sect2 id="assoc-unidirectional-join-m21">
+        <title>many to one</title>
+        
+        <para>
+            <emphasis>하나의 join 테이블에 대한 단방향 many-to-one 연관</emphasis>은 그 연관이 선택적일 때 매우 공통적이다.
+        </para>
+        
+        <programlisting><![CDATA[<class name="Person">
+    <id name="id" column="personId">
+        <generator class="native"/>
+    </id>
+    <join table="PersonAddress" 
+        optional="true">
+        <key column="personId" unique="true"/>
+        <many-to-one name="address"
+            column="addressId" 
+            not-null="true"/>
+    </join>
+</class>
+
+<class name="Address">
+    <id name="id" column="addressId">
+        <generator class="native"/>
+    </id>
+</class>]]></programlisting>
+        <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null primary key, addressId bigint not null )
+create table Address ( addressId bigint not null primary key )
+        ]]></programlisting>
+        
+        </sect2>
+
+        <sect2 id="assoc-unidirectional-join-121">
+        <title>one to one</title>
+        
+        <para>
+            <emphasis>하나의 join 테이블에 대한 단방향 one-to-one 연관</emphasis>은 극히 통상적이지 않지만 가능하다.
+        </para>
+        
+        <programlisting><![CDATA[<class name="Person">
+    <id name="id" column="personId">
+        <generator class="native"/>
+    </id>
+    <join table="PersonAddress" 
+        optional="true">
+        <key column="personId" 
+            unique="true"/>
+        <many-to-one name="address"
+            column="addressId" 
+            not-null="true"
+            unique="true"/>
+    </join>
+</class>
+
+<class name="Address">
+    <id name="id" column="addressId">
+        <generator class="native"/>
+    </id>
+</class>]]></programlisting>
+        <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null primary key, addressId bigint not null unique )
+create table Address ( addressId bigint not null primary key )
+        ]]></programlisting>
+        
+        </sect2>
+
+        <sect2 id="assoc-unidirectional-join-m2m">
+        <title>many to many</title>
+        
+        <para>
+                        마지막으로, 우리는 <emphasis>단방향 many-to-many 연관</emphasis>을  갖는다. 
+        </para>
+        
+        <programlisting><![CDATA[<class name="Person">
+    <id name="id" column="personId">
+        <generator class="native"/>
+    </id>
+    <set name="addresses" table="PersonAddress">
+        <key column="personId"/>
+        <many-to-many column="addressId"
+            class="Address"/>
+    </set>
+</class>
+
+<class name="Address">
+    <id name="id" column="addressId">
+        <generator class="native"/>
+    </id>
+</class>]]></programlisting>
+        <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null, addressId bigint not null, primary key (personId, addressId) )
+create table Address ( addressId bigint not null primary key )
+        ]]></programlisting>
+        
+        </sect2>
+
+    </sect1>
+
+    <sect1 id="assoc-bidirectional" revision="1">
+        <title>양방향 연관들</title>
+        
+        <sect2 id="assoc-bidirectional-m21" revision="2">
+        <title>one to many / many to one</title>
+        
+        <para>
+            <emphasis>양방향 many-to-one 연관</emphasis>은 가장 공통된 종류의 연관이다.(이것은 표준 부모/자식 관계이다. )
+        </para>
+        
+        <programlisting><![CDATA[<class name="Person">
+    <id name="id" column="personId">
+        <generator class="native"/>
+    </id>
+    <many-to-one name="address" 
+        column="addressId"
+        not-null="true"/>
+</class>
+
+<class name="Address">
+    <id name="id" column="addressId">
+        <generator class="native"/>
+    </id>
+    <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>(또는 다른 인덱싱 된 콜렉션)을 사용할 경우 당신은 foreign key의 
+            <literal>key</literal> 컬럼을 <literal>not null</literal>로 설정하고, Hibernate로 하여금 
+                        각각의 요소의 인덱스를 유지관리하기 위해 (<literal>update="false"</literal>와 
+            <literal>insert="false"</literal>를 설정함으로써 다른 측을 가상적으로 inverse로 만들어) 
+                        그 콜렉션들 측으로부터  연관을 관리하도록 할 필요가 있다:
+        </para>
+
+        <programlisting><![CDATA[<class name="Person">
+   <id name="id"/>
+   ...
+   <many-to-one name="address"
+      column="addressId"
+      not-null="true"
+      insert="false"
+      update="false"/>
+</class>
+
+<class name="Address">
+   <id name="id"/>
+   ...
+   <list name="people">
+      <key column="addressId" not-null="true"/>
+      <list-index column="peopleIdx"/>
+      <one-to-many class="Person"/>
+   </list>
+</class>]]></programlisting>
+
+            <para>
+                                만일 기본 외래 키 컬럼이 <literal>NOT NULL</literal>일 경우 콜렉션 매핑의 <literal>&lt;key&gt;</literal>
+                                요소 상에 <literal>not-null="true"</literal>를 정의하는 것이 중요하다. 내포된 
+                <literal>&lt;column&gt;</literal> 요소 상에 <literal>not-null="true"</literal>를 
+                                선언하지 말고, <literal>&lt;key&gt;</literal> 요소 상에 선언하라.
+            </para>
+
+        </sect2>
+        
+        <sect2 id="assoc-bidirectional-121">
+        <title>one to one</title>
+        
+        <para>
+            <emphasis>foreign에 대한 양방향 one-to-one 연관</emphasis>은 꽤 공통적이다.
+        </para>
+        
+       <programlisting><![CDATA[<class name="Person">
+    <id name="id" column="personId">
+        <generator class="native"/>
+    </id>
+    <many-to-one name="address" 
+        column="addressId" 
+        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>하나의 프라이머리 키에 대한 양방향 one-to-one 연관</emphasis>은 특별한 id 생성기를 사용한다.
+        </para>
+        
+       <programlisting><![CDATA[<class name="Person">
+    <id name="id" column="personId">
+        <generator class="native"/>
+    </id>
+    <one-to-one name="address"/>
+</class>
+
+<class name="Address">
+    <id name="id" column="personId">
+        <generator class="foreign">
+            <param name="property">person</param>
+        </generator>
+    </id>
+    <one-to-one name="person" 
+        constrained="true"/>
+</class>]]></programlisting>
+        <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table Address ( personId bigint not null primary key )
+        ]]></programlisting>
+        
+        </sect2>
+        
+    </sect1>
+
+    <sect1 id="assoc-bidirectional-join" revision="1">
+        <title>join 테이블들에 대한 양방향 연관들</title>
+        
+        <sect2 id="assoc-bidirectional-join-12m">
+        <title>one to many / many to one</title>
+        
+        <para>
+            <emphasis>하나의 join 테이블에 대한 양방향 one-to-many 연관</emphasis>. <literal>inverse="true"</literal>는 
+                        연관의 어느 쪽 끝이든 콜렉션 측으로 또는 join 측으로 갈 수 있다.
+        </para>
+        
+        <programlisting><![CDATA[<class name="Person">
+    <id name="id" column="personId">
+        <generator class="native"/>
+    </id>
+    <set name="addresses" 
+        table="PersonAddress">
+        <key column="personId"/>
+        <many-to-many column="addressId"
+            unique="true"
+            class="Address"/>
+    </set>
+</class>
+
+<class name="Address">
+    <id name="id" column="addressId">
+        <generator class="native"/>
+    </id>
+    <join table="PersonAddress" 
+        inverse="true" 
+        optional="true">
+        <key column="addressId"/>
+        <many-to-one name="person"
+            column="personId"
+            not-null="true"/>
+    </join>
+</class>]]></programlisting>
+        <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null, addressId bigint not null primary key )
+create table Address ( addressId bigint not null primary key )
+        ]]></programlisting>
+        
+        </sect2>
+
+         <sect2 id="assoc-bidirectional-join-121">
+        <title>one to one</title>
+        
+        <para>
+            <emphasis>하나의 join 테이블에 대한 양방향 one-to-one 연관</emphasis>은 극히 통상적이지 않지만, 가능하다.
+        </para>
+        
+        <programlisting><![CDATA[<class name="Person">
+    <id name="id" column="personId">
+        <generator class="native"/>
+    </id>
+    <join table="PersonAddress" 
+        optional="true">
+        <key column="personId" 
+            unique="true"/>
+        <many-to-one name="address"
+            column="addressId" 
+            not-null="true"
+            unique="true"/>
+    </join>
+</class>
+
+<class name="Address">
+    <id name="id" column="addressId">
+        <generator class="native"/>
+    </id>
+    <join table="PersonAddress" 
+        optional="true"
+        inverse="true">
+        <key column="addressId" 
+            unique="true"/>
+        <many-to-one name="person"
+            column="personId" 
+            not-null="true"
+            unique="true"/>
+    </join>
+</class>]]></programlisting>
+        <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null primary key, addressId bigint not null unique )
+create table Address ( addressId bigint not null primary key )
+        ]]></programlisting>
+
+        </sect2>
+        
+        <sect2 id="assoc-bidirectional-join-m2m" revision="1">
+        <title>many to many</title>
+        
+        <para>
+                        마지막으로, 우리는 하나의 <emphasis>양방향 many-to-many 연관</emphasis>을 갖는다.
+        </para>
+        
+        <programlisting><![CDATA[<class name="Person">
+    <id name="id" column="personId">
+        <generator class="native"/>
+    </id>
+    <set name="addresses" table="PersonAddress">
+        <key column="personId"/>
+        <many-to-many column="addressId"
+            class="Address"/>
+    </set>
+</class>
+
+<class name="Address">
+    <id name="id" column="addressId">
+        <generator class="native"/>
+    </id>
+    <set name="people" inverse="true" table="PersonAddress">
+        <key column="addressId"/>
+        <many-to-many column="personId"
+            class="Person"/>
+    </set>
+</class>]]></programlisting>
+
+        <programlisting><![CDATA[
+create table Person ( personId bigint not null primary key )
+create table PersonAddress ( personId bigint not null, addressId bigint not null, primary key (personId, addressId) )
+create table Address ( addressId bigint not null primary key )
+        ]]></programlisting>
+        
+        </sect2>
+        
+    </sect1>
+    
+    <sect1 id="assoc-complex">
+        <title>보다 복잡한  연관 매핑들</title>
+        
+        <para>
+                        보다 복잡한 연관 조인들은 <emphasis>극기</emphasis> 드물다. 
+            Hibernate는 매핑 문서들 내에 삽입된 SQL 조각들을 사용하여 보다 복잡한 상황을 처리하는 것을 
+                        가능하도록 해준다. 예를 들어, 만일  계좌 내역 정보 데이터를 가진 하나이 테이블이   
+            <literal>accountNumber</literal>, <literal>effectiveEndDate</literal> 
+                        그리고 <literal>effectiveStartDate</literal> 컬럼들을 정의할 경우, 다음과 같이 매핑된다:
+        </para>
+        
+        <programlisting><![CDATA[<properties name="currentAccountKey">
+    <property name="accountNumber" type="string" not-null="true"/>
+    <property name="currentAccount" type="boolean">
+        <formula>case when effectiveEndDate is null then 1 else 0 end</formula>
+    </property>
+</properties>
+<property name="effectiveEndDate" type="date"/>
+<property name="effectiveStateDate" type="date" not-null="true"/>]]></programlisting>
+
+        <para>
+                        그때 우리는 다음을 사용하여 하나의 연관을 <emphasis>현재</emphasis> 인스턴스
+            (null <literal>effectiveEndDate</literal>을 가진 인스턴스)로 매핑시킬 수 있다:
+        </para>
+        
+        <programlisting><![CDATA[<many-to-one name="currentAccountInfo" 
+        property-ref="currentAccountKey"
+        class="AccountInfo">
+    <column name="accountNumber"/>
+    <formula>'1'</formula>
+</many-to-one>]]></programlisting>
+
+        <para>
+                        보다 복잡한 예제에서, <literal>Employee</literal>와 <literal>Organization</literal> 사이의 
+                        연관이 전체 고용 내역 데이터를 가진 <literal>Employment</literal> 테이블 내에 유지된다고 가정하자. 
+                        그때 종업원의 <emphasis>가장 최근의</emphasis> 고용주에 대한 하나의 연관(가장 최근의 
+            <literal>startDate</literal>를 갖고 있는 것)이 다음 방법으로 매핑될 수 있다:
+        </para>
+        
+        <programlisting><![CDATA[<join>
+    <key column="employeeId"/>
+    <subselect>
+        select employeeId, orgId 
+        from Employments 
+        group by orgId 
+        having startDate = max(startDate)
+    </subselect>
+    <many-to-one name="mostRecentEmployer" 
+            class="Organization" 
+            column="orgId"/>
+</join>]]></programlisting>
+
+        <para>
+                        당신은 이 기능으로 아주 생산성을 얻을 수 있지만, 그것은 대개 HQL 또는 criteria 질의를 사용하여 이들 종류의 경우들을 
+                        처리하는 것이 보다 실용적이다.
+        </para>
+
+    </sect1>
+
+
+</chapter>
+

Copied: core/trunk/documentation/manual/ko-KR/src/main/docbook/content/basic_mapping.xml (from rev 14078, core/trunk/documentation/manual/ko-KR/src/main/docbook/modules/basic_mapping.xml)
===================================================================
--- core/trunk/documentation/manual/ko-KR/src/main/docbook/content/basic_mapping.xml	                        (rev 0)
+++ core/trunk/documentation/manual/ko-KR/src/main/docbook/content/basic_mapping.xml	2007-10-09 19:14:22 UTC (rev 14079)
@@ -0,0 +1,3202 @@
+<chapter id="mapping">
+    <title>기본 O/R 매핑</title>
+
+    <sect1 id="mapping-declaration" revision="1">
+        <title>매핑 선언</title>
+
+        <para>
+                        객체/관계형 매핑들은 대개 XML 문서 내에 정의된다. 매핑 문서는 가독성이 있고 수작업 편집이 가능하도록 
+                        설계되어 있다. 매핑 언어는 매핑들이 테이블 선언들이 아닌, 영속 클래스 선언들로 생성된다는 의미에서 
+                        자바 중심적이다. 
+        </para>
+        
+        <para>
+                        심지어 많은 Hibernate 사용자들이 수작업으로 XML을 작성하고자 선택할지라도, XDoclet, Middlegen, 
+                        그리고 AndroMDA를 포함하는, 매핑 문서를 생성시키는 많은 도구들이 존재한다는 점을 노트하라. 
+        </para>
+
+        <para>
+                        예제 매핑으로 시작하자:
+        </para>
+
+        <programlisting id="mapping-declaration-ex1" revision="1"><![CDATA[<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping package="eg">
+
+        <class name="Cat" 
+            table="cats"
+            discriminator-value="C">
+                
+                <id name="id">
+                        <generator class="native"/>
+                </id>
+
+                <discriminator column="subclass" 
+                     type="character"/>
+
+                <property name="weight"/>
+
+                <property name="birthdate"
+                    type="date" 
+                    not-null="true" 
+                    update="false"/>
+
+                <property name="color"
+                    type="eg.types.ColorUserType"
+                    not-null="true"
+                    update="false"/>
+
+                <property name="sex"
+                    not-null="true" 
+                    update="false"/>
+
+                <property name="litterId"
+                    column="litterId"
+                    update="false"/>
+
+                <many-to-one name="mother"
+                    column="mother_id"
+                    update="false"/>
+
+                <set name="kittens"
+                    inverse="true"
+                    order-by="litter_id">
+                        <key column="mother_id"/>
+                        <one-to-many class="Cat"/>
+                </set>
+
+                <subclass name="DomesticCat"
+                    discriminator-value="D">
+
+                        <property name="name" 
+                            type="string"/>
+
+                </subclass>
+
+        </class>
+
+        <class name="Dog">
+                <!-- mapping for Dog could go here -->
+        </class>
+
+</hibernate-mapping>]]></programlisting>
+
+        <para>
+                          우리는 이제 매핑 문서의 내용을 논의할 것이다. 우리는 Hibernate에 의해 실행 시에 사용되는 문서 요소들과 
+                          속성들 만을 설명할 것이다. 매핑 문서는 또한 스키마 내보내기 도구에 의해 내보내진 데이터베이스 스키마에 
+                          영향을 주는 어떤 특별한 옵션 속성들과 요소들을 포함한다. (예를 들어 <literal>not-null</literal> 속성.)
+        </para>
+
+
+
+        <sect2 id="mapping-declaration-doctype" revision="3">
+            <title>Doctype</title>
+
+            <para>
+                모든 XML 매핑들은 doctype이 보이게 선언해야 한다. 실제 DTD는 위의 URL에서, 
+        <literal>hibernate-x.x.x/src/org/hibernate</literal> 디렉토리 내에서 또는 <literal>hibernate3.jar</literal> 
+                내에서 찾을 수 있다. Hibernate는 항상 첫 번째로 그것의 classpath 속에서 DTD를 찾게 될 것이다. 만일 
+                당신이 인터넷 연결을 사용하는 DTD에 대한 룩업들을 겪게 될 경우, 당신의 classpath의 컨텐츠에 대해 당신의 DTD 선언을 
+                체크하라.
+            </para>
+            
+            <sect3 id="mapping-declaration-entity-resolution">
+                <title>EntityResolver</title>
+                <para>
+                                        앞서 언급했듯이, Hibernate는 먼저 그것의 classpath에서 DTD들을 해석하려고 시도할 것이다. 
+                    Hibernate가 이것을 행하는 방법은 그것이 xml 파일들을 읽어들이는데 사용하는 SAXReader에 맞춤형  
+                    <literal>org.xml.sax.EntityResolver</literal> 구현을 등록하는 것이다. 이 맞춤형 
+                    <literal>EntityResolver</literal>는 두 개의 다른 systemId namespace들을 인지해낸다.
+                </para>
+                <itemizedlist>
+                    <listitem>
+                        <para>
+                            <literal>hibernate namespace</literal>는  resolver가 
+                            <literal>http://hibernate.sourceforge.net/</literal>로 시작하는 하나의 
+                            systemId와 만날때마다 인지된다; resolver는 Hibernate 클래스들을 로드시켰던 클래스로더를 통해 
+                                                        이들 엔티티들을 해석하려고 시도한다.
+                        </para>
+                    </listitem>
+                    <listitem>
+                        <para>
+                            <literal>user namespace</literal>는 resolver가  <literal>classpath://</literal> 
+                            URL 프로토콜을 사용하는 systemId를 만날때마다 인지된다; resolver는 (1)현재 쓰레드 컨텍스트 
+                                                        클래스로더와 (2)Hibernate 클래스들을 로드시켰던 클래스로더를 통해 이들 엔티티들을 해석하려고 
+                                                        시도할 것이다.
+                        </para>
+                    </listitem>
+                </itemizedlist>
+                <para>
+                    user namespacing을 활용하는 예제:
+                </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> 패키지 내에 있는 리소스이고 
+                                        맞춤형 <xref linkend="mapping-types-custom">typedef</xref>를 포함한다.
+                </para>
+            </sect3>
+        </sect2>
+
+        <sect2 id="mapping-declaration-mapping" revision="3">
+            <title>hibernate-mapping</title>
+
+            <para>
+                                이 요소는 몇 개의 선택적인 속성들을 갖는다. <literal>schema</literal> 속성과 <literal>catalog</literal> 
+                                속성은 이 매핑 내에서 참조된 테이블들이 명명된 schema 와/또는 catalog에 속한다는 점을 지정한다. 만일 지정될 경우, 
+                                테이블 이름들은 주어진 schema 이름과 catalog 이름에 의해 한정(수식)될 것이다. 누락될 경우, 테이블 이름들은  
+                                한정되지((수식어가 붙지) 않을 것이다. <literal>default-cascade</literal> 속성은 <literal>cascade</literal> 
+                                속성을 지정하지 않은 프로퍼티들과 콜렉션들에 대해 전제될 <literal>cascade</literal> 스타일이 무엇인지를 지정한다. 
+                <literal>auto-import</literal> 속성은 디폴트로 우리가 질의 언어 속에서 수식어가 붙지 않은(unqualified) 
+                                클래스 이름들을 사용하게 할 것이다.
+            </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> (옵션): 데이터베이스 스키마의 이름.
+                         </para>
+                     </callout>
+                     <callout arearefs="hm2">
+                         <para>
+                             <literal>catalog</literal> (옵션): 데이터베이스 카다록의 이름.
+                         </para>
+                     </callout>
+                     <callout arearefs="hm3">
+                         <para>
+                             <literal>default-cascade</literal> (옵션 - 디폴트는 <literal>none</literal>): 
+                                                          디폴트 cascade 스타일.
+                         </para>
+                     </callout>
+                     <callout arearefs="hm4">
+                         <para>
+                             <literal>default-access</literal> (옵션 - 디폴트는 <literal>property</literal>):
+                             Hibernate가 모든 프로퍼티들에 액세스하는데 사용하게 될 방도. <literal>PropertyAccessor</literal>에 
+                                                          대한  맞춤형 구현일 수 있다.
+                         </para>
+                     </callout>
+                     <callout arearefs="hm5">
+                         <para>
+                             <literal>default-lazy</literal> (옵션 - 디폴트는 <literal>true</literal>):
+                             class 및 collection 매핑들의 지정되지 않은 <literal>lazy</literal> 속성들에 대한 디폴트 값.
+                         </para>
+                     </callout>
+                     <callout arearefs="hm6">
+                         <para>
+                             <literal>auto-import</literal> (옵션 - 디폴트는 <literal>true</literal>):
+                                                          우리가 질의 언어 내에 (이 매핑에서 클래스들에 대해) 수식어가 붙지 않은 클래스 이름들을 사용할 수 있는지를 
+                                                          지정한다.
+                         </para>
+                     </callout>
+                     <callout arearefs="hm7">
+                         <para>
+                             <literal>package</literal> (옵션): 매핑 문서 내에서 수식어가 붙지 않은 클래스 이름들에 대해 
+                                                          가정할 패키지 접두어를 지정한다.
+                         </para>
+                     </callout>
+                 </calloutlist>
+             </programlistingco>
+             
+             <para>
+                                  만일 당신이 동일한 (수식어가 붙지 않은) 이름을 가진 두 개의 영속 클래스들을 갖고 있다면, 당신은 <literal>auto-import="false"</literal>를 
+                                  설정해야 한다. 만일 당신이 두 개의 클래스들에 동일한 "imported" 이름을  할당하려고 시도할 경우에 Hibernate는 예외상황을 던질 것이다.
+             </para>
+
+             <para>
+                                  위에 보여진 것처럼 <literal>hibernate-mapping</literal> 요소는 몇몇 영속 <literal>&lt;class&gt;</literal> 매핑들을 내부에 포함하는 
+                                  것을 허용해준다는 점을 노트하라. 하지만 한 개의 매핑 파일 속에 한 개의 영속 클래스(또는 한 개의 클래스 계층구조) 만을 매핑하고 영속 서브 클래스 뒤에 
+                                  그것을 명명하는 것이 좋은 연습이다 (그리고 몇몇 도구들에 의해 기대된다). 예를 들면 <literal>Cat.hbm.xml</literal>, 
+                 <literal>Dog.hbm.xml</literal> 또는 상속을 사용할 경우에는 <literal>Animal.hbm.xml</literal>.
+             </para>
+ 
+        </sect2>
+
+        <sect2 id="mapping-declaration-class" revision="3">
+            <title>class</title>
+
+            <para>
+                                당신은 <literal>class</literal> 요소를 사용하여 영속 클래스를 선언할 수도 있다:
+            </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"
+        node="element-name"
+/>]]></programlisting>
+                <calloutlist>
+                    <callout arearefs="class1">
+                        <para>
+                            <literal>name</literal> (옵션): 영속 클래스(또는 인터페이스)의 전체 수식어가 붙은 Java 클래스 이름. 
+                                                        만일 이 속성이 누락될 경우, 매핑이 non-POJO 엔티티라고 가정된다.
+                        </para>
+                    </callout>
+                    <callout arearefs="class2">
+                        <para>
+                            <literal>table</literal> (옵션 - 디폴트는 수식어가 붙지 않은 클래스명): 그것의 데이터베이스 테이블의 이름.
+                        </para>
+                    </callout>
+                    <callout arearefs="class3">
+                        <para>
+                            <literal>discriminator-value</literal> (옵션 - 디폴트는 클래스 이름): 다형성(polymorphic) 특징에 사용되는, 
+                                                        개별 서브 클래스들를 구별짓는 값. 허용가능한 값들은<literal>null</literal>과  <literal>not null</literal>을 포함한다.
+                        </para>
+                    </callout>
+                    <callout arearefs="class4">
+                        <para>
+                            <literal>mutable</literal> (옵션 - 디폴트는 <literal>true</literal>): 클래스들의 인스턴스들이 가변적인지를
+                            (가변적이지 않은지를) 지정한다.
+                        </para>
+                    </callout>    
+                    <callout arearefs="class5">
+                        <para>
+                            <literal>schema</literal> (옵션): 루트 <literal>&lt;hibernate-mapping&gt;</literal> 요소에 의해 지정된 
+                                                        스키마 이름을 오버라이드 시킨다.
+                        </para>
+                    </callout>                
+                    <callout arearefs="class6">
+                        <para>
+                            <literal>catalog</literal> (옵션): 루트 <literal>&lt;hibernate-mapping&gt;</literal> 요소에 의해 지정된 
+                                                        카다록 이름을 오버라이드 시킨다.
+                        </para>
+                    </callout>                
+                    <callout arearefs="class7">
+                        <para>
+                            <literal>proxy</literal> (옵션): lazy initializing proxy들에 사용할 인터페이스를 지정한다. 당신은 클래스 
+                                                        그 자체의 이름을 지정할 수 도 있다.
+                        </para>
+                    </callout>    
+                    <callout arearefs="class8">
+                        <para>
+                            <literal>dynamic-update</literal> (옵션 - 디폴트는 <literal>false</literal>): 
+                            <literal>UPDATE</literal> SQL이 실행 시에 생성되고 그들 컬럼들의 값들이 변경된 그들 컬럼들 만을 
+                                                        포함할 것인지를 지정한다.
+                        </para>
+                    </callout>    
+                    <callout arearefs="class9">
+                        <para>
+                            <literal>dynamic-insert</literal> (옵션 - 디폴트는 <literal>false</literal>): 
+                                                        생성될 <literal>INSERT</literal>이 실행 시에 생성되고 그들 컬럼들의 값이 null이 아닌 컬럼들 만을 
+                                                        포함할 것인지를 지정한다.
+                        </para>
+                    </callout>    
+                    <callout arearefs="class10">
+                        <para>
+                            <literal>select-before-update</literal> (옵션 - 디폴트는 <literal>false</literal>): 
+                                                        객체가 실제로 변경되는 것이 확실하지 않는 한, Hibernate가 SQL <literal>UPDATE</literal>를 
+                            <emphasis>결코</emphasis> 실행하지 않을 것임을 지정한다. 어떤 경우들에서(실제로 transient 
+                                                        객체가 <literal>update()</literal>를 사용하여 새로운 session에 연관되었을 때에만), 이것은 
+                                                        하나의 <literal>UPDATE</literal>가 실제로 필요한 경우인지 여부를 결정하기 위해 Hibernate는 
+                                                        특별한 SQL <literal>SELECT</literal>를 실행할 것임을 의미한다.
+                        </para>
+                    </callout>    
+                    <callout arearefs="class11">
+                        <para>
+                            <literal>polymorphism</literal> (옵션 - 디폴트는 <literal>implicit</literal>): 
+                            implicit 질의 다형성이나 explicit 질의 다형성 중 어느 것이 사용될 것인지를 결정한다.
+                        </para>
+                    </callout>    
+                    <callout arearefs="class12">
+                        <para>
+                            <literal>where</literal> (옵션) 이 클래스의 객체들을 검색할 때 사용될 임의적인 SQL 
+                            <literal>WHERE</literal> 조건을 지정한다
+                        </para>
+                    </callout>                 
+                    <callout arearefs="class13">
+                        <para>
+                            <literal>persister</literal> (옵션): 맞춤형 <literal>ClassPersister</literal>를 지정한다.
+                        </para>
+                    </callout>                 
+                    <callout arearefs="class14">
+                        <para>
+                            <literal>batch-size</literal> (옵션 - 디폴트는 <literal>1</literal>) 식별자에 의해 이 클래스의 
+                                                        인스턴스들을 페치시키는 "배치 사이즈"를 지정한다.
+                        </para>
+                    </callout>                 
+                   <callout arearefs="class15">
+                        <para>
+                            <literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>version</literal>): 
+                            optimistic 잠금 방도를 결정한다.
+                        </para>
+                    </callout>    
+                    <callout arearefs="class16">
+                        <para>
+                            <literal>lazy</literal> (옵션): <literal>lazy="false"</literal>를 설정함으로써 
+                            Lazy fetching이 전체적으로 사용불가능하게 될 수 있다.
+                        </para>
+                    </callout>    
+                    <callout arearefs="class17">
+                        <para>
+                            <literal>entity-name</literal>(옵션, 디폴트는 클래스 이름): Hibernate3는 하나의 클래스가 
+                            (잠정적으로 다른 테이블들로) 여러번 매핑되는 것을 허용해주고, Java 레벨에서 Map 또는 XML에 의해 표현
+                                                        되는 엔티티 매핑들을 허용한다. 이들 경우들에서, 당신은 그 엔티티에 대한 명시적인 임의의 이름을 제공해야 한다.
+                            <literal>entity-name</literal> (옵션): Hibernate3는  하나의 클래스가 (잠정적으로 다른 테이블들로) 
+                                                        여러 번 매핑되는 것을 허용하며, 자바 레벨에서 Map들 또는 XML에 의해 표현되는 엔티티 매핑들을 허용한다. 
+                                                        이들 경우들에서, 당신은 그 엔티티들에 대한 명시적인 임의의 이름을 제공해야 한다. 추가 정보는 
+                            <xref linkend="persistent-classes-dynamicmodels"/>과 <xref linkend="xml"/>을 보라.
+                        </para>
+                    </callout>
+                    <callout arearefs="class18">
+                        <para>
+                            <literal>check</literal> (옵션): 자동적인 스키마 생성을 위한 다중-행 <emphasis>check</emphasis> 
+                            constraint를 생성시키는데 사용되는 SQL 표현식.
+                        </para>
+                    </callout>
+                    <callout arearefs="class19">
+                        <para>
+                            <literal>rowid</literal> (옵션): Hibernate는 지원되는 데이터베이스들, 예를 들어 Oracle 상에서 이른바 
+                            ROWID들을 사용할 수 있고, Hibernate는 당신이 이 옵션을 <literal>rowid</literal>로 설정하는 경우에 빠른 
+                                                        업데이트를 위한 특별한 <literal>rowid</literal> 컬럼을 사용할 수 있다. ROWID는 구현 상세이고 저장된 
+                                                        튜플(tuple)의 물리적이니 위치를 표현한다.
+                        </para>
+                    </callout>
+                    <callout arearefs="class20">
+                        <para>
+                            <literal>subselect</literal> (옵션): 불변의 읽기 전용 엔티티를 데이터베이스 subselect로 매핑시킨다. 
+                                                        당신이 기본 테이블 대신에 뷰를 갖고자 원할 경우에 유용하지만, 사용을 자제하라. 추가 정보는 아래를 보라.
+                        </para>
+                    </callout>
+                    <callout arearefs="class21">
+                        <para>
+                            <literal>abstract</literal> (옵션): <literal>&lt;union-subclass&gt;</literal> 계층 구조들 내에서 
+                            abstract 슈퍼클래스들을 마크하는데 사용된다.
+                        </para>
+                    </callout>
+                </calloutlist>
+            </programlistingco>
+           
+            <para>
+                                명명된 영속 ᓘ