[hibernate-commits] Hibernate SVN: r10956 - in branches/Branch_3_2/Hibernate3/doc/reference/ko: . fop modules styles
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Fri Dec 8 03:07:55 EST 2006
Author: christian.bauer at jboss.com
Date: 2006-12-08 03:07:27 -0500 (Fri, 08 Dec 2006)
New Revision: 10956
Modified:
branches/Branch_3_2/Hibernate3/doc/reference/ko/README-KO.txt
branches/Branch_3_2/Hibernate3/doc/reference/ko/fop/userconfig.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/master.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/architecture.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/association_mapping.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/basic_mapping.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/batch.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/collection_mapping.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/component_mapping.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/configuration.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/events.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/example_mappings.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/inheritance_mapping.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/performance.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/persistent_classes.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/query_criteria.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/query_hql.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/query_sql.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/session_api.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/transactions.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/tutorial.xml
branches/Branch_3_2/Hibernate3/doc/reference/ko/styles/fopdf.xsl
Log:
Synchronized KO translation between 3.2 branch and trunk
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/README-KO.txt
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/README-KO.txt 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/README-KO.txt 2006-12-08 08:07:27 UTC (rev 10956)
@@ -9,28 +9,56 @@
Blog : http://blog.naver.com/jdkim528/
[Down/Config/Build]
- cvs Ŭ¶óÀ̾ðÆ®¸¦ °®°í ÀÖ´Ù¸é,
- 1)¿¬°á À¯Çü : pserve/extssh Áß Çϳª¸¦ ¼±ÅÃÇÕ´Ï´Ù
- 2)»ç¿ëÀÚÀ̸§ : anonymous
- 3)È£½ºÆ® : cvs.sourceforge.net
- 4)Æ÷Æ® : ±âº»°ª
- 5)ÀúÀå¼Ò°æ·Î : /cvsroot/hibernate
- 6)¸ðµâ : Hibernate3/doc/reference
- À§¿Í °°ÀÌ ¿¬°á Á¤º¸¸¦ ÀÔ·Â ÇϽŠÈÄ REFERENCE Àüü¸¦ ³»·Á¹ÞÀ¸¼Åµµ µÇÁö¸¸,
- ÇÑ±Û ¹ø¿ªº»¸¸ ÇÊ¿äÇÏ½Ã´Ù¸é ´ÙÀ½°ú °°ÀÌ Çϼŵµ µË´Ï´Ù.
- [°¡]. °øÅë ¸ðµâ ¹Þ±â
- À§¿¡¼ 6)¸ðµâÀ» Hibernate3/doc/reference/support·Î ÁöÁ¤ÇϽðí
- ·ÎÄà ÄÄÇ»ÅÍÀÇ µð·ºÅ丮 [·ÎÄà °æ·Î]/reference/ ÇÏ¿¡ ¹Þ½À´Ï´Ù
- [³ª]. Çѱۺ» ¸ðµâ ¹Þ±â
- À§¿¡¼ 6)¸ðµâÀ» Hibernate3/doc/reference/ko·Î ÁöÁ¤ÇÏ°í
- ·ÎÄà ÄÄÇ»ÅÍÀÇ µð·ºÅ丮 [·ÎÄà °æ·Î]/reference/ ÇÏ¿¡ ¹Þ½À´Ï´Ù.
- [´Ù]. ºôµå ÆÄÀÏ ¹Þ±â
- ±×·± ´ÙÀ½ /doc/reference/build.xml ÆÄÀÏÀ» ³»·Á ¹ÞÀº ´ÙÀ½
+ * ±âÁ¸ÀÇ CVS¿¡¼ SVNÀ¸·Î ¹Ù²î¸é¼ ½Å±Ô »ç¿ëÀÚµéÀ» À§ÇÑ ±æÀâÀ̸¦ ÀÛ¼ºÇÒ ÇÊ¿ä°¡
+ »ý°å³×¿ä...
+
+ ÇÊÀÚ´Â °³ÀÎÀûÀ¸·Î TortoiseSVN°ú Subclipse¸¦ »ç¿ëÇÏ°í ÀÖÀ¸³ª Subclpse¸¦ Áß½ÉÀ¸·Î
+ ¼³¸íÇÒ±î ÇÕ´Ï´Ù.(¼±È£ÇÏ´Â svn Ŭ¶óÀ̾ðÆ®°¡ ÀÖ´Ù¸é ÇØ´ç Ŭ¶óÀ̾ðÆ®ÀÇ ¼³Á¤¿¡
+ µû¶ó ¼³Á¤ÇÑ ÈÄ¿¡ »ç¿ëÇϼŵµ µÉ °ÍÀÔ´Ï´Ù.)
+
+ [Subclipse ¼³Ä¡]
+
+ Subclipse¸¦ ¼³Ä¡ÇÏ´Â ¹æ¹ýÀº http://subclipse.tigris.org/install.html À» ÂüÁ¶ÇÏ¿©
+ eclipseÀÇ µµ¿ò¸»>¼ÒÇÁÆ®¿þ¾î°»½Å>ã±â ¹× ¼³Ä¡ ¸Þ´º¸¦ ÅëÇØ ½±°Ô ¼³Ä¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.
+
+ [Subclipse Checkout]
+ 0) Subclipse ¼³Ä¡°¡ ³¡³µÀ¸¸é ÀÌŬ¸³½º¸¦ Àç½ÃÀÛÇϽʽÿÀ.
+ 1) ÀÌŬ¸³½ºÀÇ Perspective ¿±â¿¡¼ SVN Repository exploringÀ» ¿¾î ÀúÀå¼Ò¸¦ µî·ÏÇÏ¿© »ç¿ëÇϰųª
+ ÀÌŬ¸³½ºÀÇ ÆÐÅ°Áö Ž»ö±â¿¡¼ ¸¶¿ì½º ¿À¸¥ÂÊ Æ˾÷ ¸Þ´º¿¡¼ "ÇÁ·ÎÁ§Æ®"¸¦ »ý¼º½Ãŵ´Ï´Ù.
+ ¿©±â¼´Â "ÇÁ·ÎÁ§Æ®" »ý¼º ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù.
+ 2) ÀÌŬ¸³½ºÀÇ ÆÐÅ°Áö Ž»ö±â¿¡¼ ¸¶¿ì½º ¿À¸¥ÂÊ Æ˾÷ ¸Þ´º¿¡¼ "ÇÁ·ÎÁ§Æ®"¸¦ Ŭ¸¯ÇÑ´Ù
+ 3) Æ˾÷ âÀÇ "SVN" ³ëµå¿¡¼ "Checkout Projects from SVN"À» ¼±ÅÃÇÑ´Ù
+ 4) "´ÙÀ½" ¹öÆ°À» Ŭ¸¯ÇÑ´Ù
+ 5) "Create a new respository location"À» ¼±ÅÃÇÑ´Ù
+ 6) ´ÙÀ½" ¹öÆ°À» Ŭ¸¯ÇÑ´Ù
+ 7) Location url¿¡ "http://anonhibernate.labs.jboss.com/trunk/Hibernate3" ¶Ç´Â
+ "https://hibernate.labs.jboss.com/repos/hibernate/trunk" À» ÀÔ·ÂÇÕ´Ï´Ù.
+ 8) "Hibernate3" ³ëµå´Â ¼±ÅÃÇϰųª ÇÏÀ§ÀÇ Æ¯Á¤ ³ëµå¸¦ ¼±ÅÃÇÏ°í "¿Ï·á" ¹öÆ°À» Ŭ¸¯ÇÑ´Ù.
+ 9) ÇÁ·ÎÁ§Æ® ¸íÀ» hibernate3 µîÀÇ ¿øÇÏ´Â À̸§À¸·Î ¸í¸íÇÑ´Ù.
+ 10) checkoutÀÌ ½ÇÇàµË´Ï´Ù.
+
+ [TortoiseSVN ¼³Ä¡]
+ TortoiseSVN Ŭ¶óÀ̾ðÆ®¸¦ ¼³Ä¡Çϼ̴ٸé, ½Ã½ºÅÛÀ» Àç½ÃÀÛ ÇϽʽÿÀ.
+ 1)·¹ÆÄÁöÅ丮¸¦ À§ÇÑ Æú´õ¸¦ Çϳª »ý¼º½Ãŵ´Ï´Ù.(D:\repo)
+ 2)À©µµ¿ìŽ»ö±â¿¡¼ D:\repo¸¦ ¸¶¿ì½º ¿À¸¥ÂÊ Å¬¸¯ÇÑ ÈÄ TortoiseSVN ¸Þ´º¿¡¼
+ "Create repository Here..."¸¦ Ŭ¸¯Çϸé Æ˾÷ÀÌ ¶ß´Âµ¥,
+ ÆÄÀϽýºÅÛ/¹öŬ¸®DB Çü½Ä Áß Çϳª¸¦ ¼±ÅÃÇÏ°í OK ¹öÆ°À» ´©¸£¼¼¿ä.
+ 3)hibernate¸¦ ³»·Á ¹Þ±â À§ÇÑ Æú´õ¸¦ Çϳª »ý¼º½ÃÅ°¼¼¿ä(D:\repo\Hibernate3)
+ 4)D:\repo\hibernate Æú´õ¸¦ ¸¶¿ì½º ¿À¸¥ÂÊ Å¬¸¯ÇÑ ÈÄ,
+ TortoiseSVN Æ˾÷ ¸Þ´º¿¡¼ CheckOutÀ» Ŭ¸¯ÇϽʽÿÀ.
+ 5)URL repository¿¡ "http://anonhibernate.labs.jboss.com/trunk/Hibernate3" ¶Ç´Â
+ "https://hibernate.labs.jboss.com/repos/hibernate/trunk" ¸¦ ÀÔ·ÂÇÏ°í,
+ OK ¹öÆ°À» Ŭ¸¯ÇϽʽÿÀ
+ 6)¸ðµÎ ³»·Á¹ÞÀ¸½Å ´ÙÀ½¿¡ D:\repo\Hibernate3\doc\reference·Î À̵¿ÇÕ´Ï´Ù.
+ 7)ÀÌÁ¦ ºôµåÇÏ½Ã¸é µË´Ï´Ù.
+
+ *) ÇÑ±Û ¹ø¿ªº»¸¸ ÇÊ¿äÇÏ½Ã´Ù¸é ´ÙÀ½°ú °°ÀÌ Çϼŵµ µË´Ï´Ù.
+ /doc/reference/build.xml ÆÄÀÏÀ»
¾Æ·¡ ¿¹¿Í °°ÀÌ ÇÑ±Û ¹ø¿ªº» ¿ÜÀÇ ºÎºÐµéÀ» ÁÖ¼®Ã³¸®ÇÕ´Ï´Ù.
- [¶ó]. ºôµåÇϱâ
+ [°¡]. ºôµåÇϱâ
±×·± ´ÙÀ½ [·ÎÄà °æ·Î]/reference/ ¿¡¼ ant all.doc·Î ºôµåÇÏ½Ã¸é µË´Ï´Ù.
ºôµå ½Ã°£Àº 2ºÐ °¡·® ¼Ò¿äµË´Ï´Ù.
- [¸¶]. ¹®¼ º¸±â
+ [³ª]. ¹®¼ º¸±â
µð·ºÅ丮 [·ÎÄà °æ·Î]/reference/build/ko/ µð·ºÅ丮¿¡ ºôµåµÈ ¹®¼¸¦ º¸½Ã±â ¹Ù¶ø´Ï´Ù.
±×·³ ÇÏÀ̹ö³×ÀÌÆ®¿Í ÇÔ²² Áñ°Å¿î ½Ã°£À» º¸³»¼¼¿ä.
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/fop/userconfig.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/fop/userconfig.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/fop/userconfig.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -92,17 +92,17 @@
<font-triplet name="Mincho" style="italic" weight="bold"/>
</font>
-->
- <font metrics-file="Gulim.xml" kerning="yes" embed-file="gulim.ttc">
- <font-triplet name="Gulim" style="normal" weight="normal"/>
- <font-triplet name="Gulim" style="normal" weight="bold"/>
- <font-triplet name="Gulim" style="italic" weight="normal"/>
- <font-triplet name="Gulim" style="italic" weight="bold"/>
+ <font metrics-file="Hankc.xml" kerning="yes" embed-file="Hankc.ttf">
+ <font-triplet name="Hankc" style="normal" weight="normal"/>
+ <font-triplet name="Hankc" style="normal" weight="bold"/>
+ <font-triplet name="Hankc" style="italic" weight="normal"/>
+ <font-triplet name="Hankc" style="italic" weight="bold"/>
</font>
-<font metrics-file="Gaeul.xml" kerning="yes" embed-file="Gaeul.ttf">
-<font-triplet name="ê°ìì²´" style="normal" weight="normal"/>
-<font-triplet name="ê°ìì²´" style="normal" weight="bold"/>
-<font-triplet name="ê°ìì²´" style="italic" weight="normal"/>
-<font-triplet name="ê°ìì²´" style="italic" weight="bold"/>
+<font metrics-file="Bangwool.xml" kerning="yes" embed-file="Bangwool.ttf">
+<font-triplet name="Bangwool" style="normal" weight="normal"/>
+<font-triplet name="Bangwool" style="normal" weight="bold"/>
+<font-triplet name="Bangwool" style="italic" weight="normal"/>
+<font-triplet name="Bangwool" style="italic" weight="bold"/>
</font>
</fonts>
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/master.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/master.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/master.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -33,7 +33,7 @@
<bookinfo lang="ko">
<title>HIBERNATE - ê°ì±ìë ìë°ë¥¼ ìí ê´ê³ ìì</title>
<subtitle>íì´ë²ë¤ì´í¸ 참조 문ì</subtitle>
- <releaseinfo lang="ko">3.1</releaseinfo>
+ <releaseinfo lang="ko">3.2 cr3</releaseinfo>
</bookinfo>
<toc lang="ko" />
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/architecture.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/architecture.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/architecture.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -78,19 +78,19 @@
</listitem>
</varlistentry>
<varlistentry>
- <term>Persistent objects and collections</term>
+ <term>ìì ê°ì²´ë¤ê³¼ ì½ë ì
ë¤</term>
<listitem>
<para>
persistent ìíì ë¹ì§ëì¤ ê¸°ë¥ì í¬í¨íë ìëª
ì´ ì§§ê³ , ë¨ì¼ ì°ë ëì¸ ê°ì²´ë¤. ì´ê²ë¤ì íµìì JavaBeans/POJOë¤ì¼
ì ìê³ , ì¤ì§ ê·¸ê²ë¤ì ëí ì¤ì§ í¹ë³í ê²ì ê·¸ê²ë¤ì´ íì¬ (ì ííê² í ê°ì) <literal>Session</literal>ê³¼ ì°ê´ëì´
ìë¤ë ì ì´ë¤. <literal>Session</literal>ì´ ë«íìë§ì, ê·¸ê²ë¤ì ë¶ë¦¬ë (detached ìíê° ë ) ê²ì´ê³ ì´í리ì¼ì´ì
- ë ì´ì´ìì ì¬ì©íë ê²ì´ ìì ë¡ìì§ë¤(ì를 ë¤ë©´. í리ì í
ì´ì
ì¼ë¡ì ë°ì´í° ì ì¡ ê°ì²´ë¤ë¡ì ì§ì ì ì¼ë¡ ê·¸ë¦¬ê³ í리ì í
ì´ì
ì¼ë¡ë¶í°
- ë°ì´í° ì ì¡ ê°ì²´ë¤ë¡ì ì§ì ì¼ë¡).
+ ë ì´ì´ìì ì¬ì©íë ê²ì´ ìì ë¡ìì§ë¤(ì를 ë¤ë©´. ì§ì ì ì¼ë¡ í리ì í
ì´ì
ê³ì¸µì¼ë¡
+ ë°ì´í° ì ì¡ ê°ì²´ë¤ë¡ì ê·¸ë¦¬ê³ ì§ì ì ì¼ë¡ í리ì í
ì´ì
ê³ì¸µì¼ë¡ë¶í° ë°ì´í° ì ì¡ ê°ì²´ë¤ë¡ì).
</para>
</listitem>
</varlistentry>
<varlistentry>
- <term>Transient and detached objects and collections</term>
+ <term>ì ì´(Transient, íì 주-ê³¼ë) ê°ì²´ë¤ê³¼ ì½ë ì
ë¤</term>
<listitem>
<para>
<literal>Session</literal>ê³¼ íì¬ ì°ê´ëì´ ìì§ ìì ìì í´ëì¤ë¤ì ì¸ì¤í´ì¤ë¤. ê·¸ê²ë¤ì ì´í리ì¼ì´ì
ì ìí´ ì´ê¸°í
@@ -236,7 +236,7 @@
</para>
</sect1>
- <sect1 id="architecture-current-session" revision="1">
+ <sect1 id="architecture-current-session" revision="2">
<title>컨í
ì¤í¸ ìì ì¸ì
ë¤</title>
<para>
Hibernate를 ì¬ì©íë ëë¶ë¶ì ì´í리ì¼ì´ì
ë¤ì ì´ë¤ ììì "컨í
ì¤í¸ìì(contextual)" ì¸ì
ë¤ì íìë¡ íë¤. ì¬ê¸°ì
@@ -264,7 +264,7 @@
<para>
ê·¸ê²ì ê³ì½ì ëí ìì¸í ë
¼ìë <literal>org.hibernate.context.CurrentSessionContext</literal> ì¸í°íì´ì¤ì
ê´í javadocs를 ë³´ë¼. ê·¸ê²ì íëì ë©ìë, <literal>currentSession()</literal>를 ì ìíë©°, ê·¸ 구íì
- íì¬ì 컨í
ì¤í¸ ìì ì¸ì
ì ì¶ì í ì±
ìì´ ìë¤. ë¹ê³µìì ì¼ë¡, Hibernateë ì´ ì¸í°íì´ì¤ì ëí 구 ê°ì 구íë¤ì ë¶ìì ì¼ë¡
+ íì¬ì 컨í
ì¤í¸ ìì ì¸ì
ì ì¶ì í ì±
ìì´ ìë¤. ë¹ê³µìì ì¼ë¡, Hibernateë ì´ ì¸í°íì´ì¤ì ëí ì¸ ê°ì 구íë¤ì ë¶ìì ì¼ë¡
í¬í¨íê³ ìë¤.
</para>
@@ -284,7 +284,7 @@
</listitem>
</itemizedlist>
<para>
- ë 구íë¤ì <emphasis>session-per-request</emphasis>ë¡ ìë ¤ì§ê³ ì¬ì©ëê³ ìë
+ ì²ìì ë 구íë¤ì <emphasis>session-per-request</emphasis>ë¡ ìë ¤ì§ê³ ì¬ì©ëê³ ìë
"íëì ì¸ì
- íëì ë°ì´í°ë² ì´ì¤ í¸ëìì
" íë¡ê·¸ëë° ëª¨íì ì ê³µíë¤. íëì Hibernate ì¸ì
ì ììê³¼ ëì
ë°ì´í°ë² ì´ì¤ í¸ëìì
ì ì¡´ì 기ê°ì ìí´ ì ìëë¤. ë§ì¼ (ì를 ë¤ë©´ ìì J2SEìì ëë JTA/UserTransaction/BMTì ê²½ì°ì)
ë¹ì ì´ íë¡ê·¸ë¨ ìì í¸ëìì
ê²½ê³êµ¬ë¶ì ì¬ì©í ê²½ì°, ë¹ì ì ë¹ì ì ì½ëë¡ë¶í° 기본 í¸ëìì
ìì¤í
ì ìíìí¤ëë°
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/association_mapping.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/association_mapping.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/association_mapping.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -48,8 +48,7 @@
</id>
</class>]]></programlisting>
<programlisting><![CDATA[
-create table Person ( personId bigint not null primary key,
- addressId bigint not null )
+create table Person ( personId bigint not null primary key, addressId bigint not null )
create table Address ( addressId bigint not null primary key )
]]></programlisting>
@@ -79,8 +78,7 @@
</id>
</class>]]></programlisting>
<programlisting><![CDATA[
-create table Person ( personId bigint not null primary key,
- addressId bigint not null unique )
+create table Person ( personId bigint not null primary key, addressId bigint not null unique )
create table Address ( addressId bigint not null primary key )
]]></programlisting>
@@ -135,8 +133,7 @@
</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 )
+create table Address ( addressId bigint not null primary key, personId bigint not null )
]]></programlisting>
<para>
@@ -177,8 +174,7 @@
</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 PersonAddress ( personId not null, addressId bigint not null primary key )
create table Address ( addressId bigint not null primary key )
]]></programlisting>
@@ -211,8 +207,7 @@
</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 PersonAddress ( personId bigint not null primary key, addressId bigint not null )
create table Address ( addressId bigint not null primary key )
]]></programlisting>
@@ -247,8 +242,7 @@
</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 PersonAddress ( personId bigint not null primary key, addressId bigint not null unique )
create table Address ( addressId bigint not null primary key )
]]></programlisting>
@@ -279,9 +273,7 @@
</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 PersonAddress ( personId bigint not null, addressId bigint not null, primary key (personId, addressId) )
create table Address ( addressId bigint not null primary key )
]]></programlisting>
@@ -319,8 +311,7 @@
</class>]]></programlisting>
<programlisting><![CDATA[
-create table Person ( personId bigint not null primary key,
- addressId bigint not null )
+create table Person ( personId bigint not null primary key, addressId bigint not null )
create table Address ( addressId bigint not null primary key )
]]></programlisting>
@@ -386,8 +377,7 @@
property-ref="address"/>
</class>]]></programlisting>
<programlisting><![CDATA[
-create table Person ( personId bigint not null primary key,
- addressId bigint not null unique )
+create table Person ( personId bigint not null primary key, addressId bigint not null unique )
create table Address ( addressId bigint not null primary key )
]]></programlisting>
@@ -459,8 +449,7 @@
</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 PersonAddress ( personId bigint not null, addressId bigint not null primary key )
create table Address ( addressId bigint not null primary key )
]]></programlisting>
@@ -505,8 +494,7 @@
</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 PersonAddress ( personId bigint not null primary key, addressId bigint not null unique )
create table Address ( addressId bigint not null primary key )
]]></programlisting>
@@ -543,9 +531,7 @@
<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 PersonAddress ( personId bigint not null, addressId bigint not null, primary key (personId, addressId) )
create table Address ( addressId bigint not null primary key )
]]></programlisting>
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/basic_mapping.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/basic_mapping.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/basic_mapping.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -92,7 +92,7 @@
- <sect2 id="mapping-declaration-doctype" revision="2">
+ <sect2 id="mapping-declaration-doctype" revision="3">
<title>Doctype</title>
<para>
@@ -102,6 +102,56 @@
ë¹ì ì´ ì¸í°ë· ì°ê²°ì ì¬ì©íë 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">
@@ -692,6 +742,17 @@
</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><literal>sequence-identity</literal></term>
+ <listitem>
+ <para>
+ ì¤ì ê° ìì±ì ìí´ ë°ì´í°ë² ì´ì¤ ìíì¤ë¥¼ íì©íì§ë§, ìì±ë ìë³ì ê°ì insert ë¬¸ì¥ ì¤íì ë¶ë¶ì¼ë¡ì
+ ì¤ì ë¡ ë°íìí¤ê¸° ìí´ ì´ê²ì JDBC3 getGeneratedKeysì ê²°í©ìí¨ í¹íë ìíì¤ ìì± ë°©ë. ì´ ë°©ëë
+ JDK 1.4ì ëìíë Oracle 10g ëë¼ì´ë²ë¤ ìììë§ ì§ìëë ê±°ì¹ë¡ ìë ¤ì ¸ ìë¤. ì´ë¤ insert 문ì¥ë¤ì
+ ëí 주ìë¤ì Oracle ëë¼ì´ë²ë¤ ë´ì ìë ë²ê·¸ ë문ì ì¬ì©ë¶ê°ë¥íê² ëì´ ììì ë
¸í¸íë¼.
+ </para>
+ </listitem>
+ </varlistentry>
</variablelist>
</para>
@@ -1082,7 +1143,7 @@
</para>
</sect2>
- <sect2 id="mapping-declaration-timestamp" revision="3" >
+ <sect2 id="mapping-declaration-timestamp" revision="4" >
<title>timestamp (ìµì
)</title>
<para>
@@ -1090,7 +1151,7 @@
ë²ì íì ëí ë체물ë¡ì ê³ ìëìë¤. Timestampì ê³ ì íê² optimistic ì ê¸ì ëí ë¤ì ìì í 구íì´ë¤. íì§ë§ ëëë¡
ì´í리ì¼ì´ì
ì ë¤ë¥¸ ë°©ë²ë¤ë¡ timestampë¤ì ì¬ì©í ìë ìë¤.
</para>
-
+
<programlistingco>
<areaspec>
<area id="timestamp1" coords="2 70"/>
@@ -1123,7 +1184,7 @@
ê°ì§ ìë°ë¹ì¦ ì¤íì¼ì íë¡í¼í° ì´ë¦.
</para>
</callout>
- <callout arearefs="timestamp3">
+ <callout arearefs="timestamp3">
<para>
<literal>access</literal> (ìµì
- ëí´í¸ë <literal>property</literal>):
Hibernateê° íë¡í¼í° ê°ì ì ê·¼íëë° ì¬ì©í ë°©ë.
@@ -1140,18 +1201,18 @@
<callout arearefs="timestamp5">
<para>
<literal>source</literal> (ìµì
- ëí´í¸ë <literal>vm</literal>):
- Hibernateë ì´ë ì¥ìë¡ë¶í° timestamp ê°ì ê²ìí ê²ì¸ê°? ë°ì´í°ë² ì´ì¤ë¡ë¶í°ì¸ê° íì¬ì JVMì¼ë¡ë¶í°ì¸ê°?
- Hibernateê° "ë¤ì ê°"ì ê²°ì í기 ìí´ ë°ì´í°ë² ì´ì¤ì ì ìí´ì¼ í기 ë문ì ë°ì´í°ë² ì´ì¤ 기ë°ì
- timestampë¤ì ì¤ë²í¤ë를 ì´ëíì§ë§, í´ë¬ì¤í°ë§ë íê²½ë¤ì ì©ëë¡ ë ìì í ê²ì´ë¤. ëí 모ë
+ Hibernateë ì´ëì timestamp ê°ì ê²ìí ê²ì¸ê°? ë°ì´í°ë² ì´ì¤ë¡ë¶í°ì¸ê° íì¬ì JVMì¼ë¡ë¶í°ì¸ê°?
+ ë°ì´í°ë² ì´ì¤ 기ë°ì timestampë¤ì Hibernateê° "ë¤ì ê°"ì ê²°ì í기 ìí´ ë°ì´í°ë² ì´ì¤ì ì ìí´ì¼
+ í기 ë문ì ì¤ë²í¤ë를 ì´ëíì§ë§, í´ë¬ì¤í°ë§ë íê²½ë¤ììì ì©ëë¡ ë³´ë¤ ë ìì í ê²ì´ë¤. ëí 모ë
<literal>Dialect</literal>ë¤ì´ ë°ì´í°ë² ì´ì¤ì íì¬ì timestampì ëí ê²ìì ì§ìíë ê²ì¼ë¡ ìë ¤ì ¸
- ìë ë°ë©´ì, ë¤ë¥¸ <literal>Dialect</literal>ë¤ì ì ë°ë ê²°í ë문ì ì ê¸ì ìì´ ì¬ì©ì ëí´ ìì íì§ ìì
+ ìì§ ìì§ë§, ë¤ë¥¸ <literal>Dialect</literal>ë¤ì ì ë°ë ê²°í ë문ì ì ê¸ì ìì´ ì¬ì©ì´ ìì íì§ ìì
ì ììì ë
¸í¸íë¼(ì를 ë¤ë©´ ì¤ë¼í´ 8).
</para>
</callout>
<callout arearefs="timestamp6">
<para>
<literal>generated</literal> (ìµì
- ëí´í¸ë <literal>never</literal>):
- ì´ timestamp íë¡í¼í° ê°ì´ ë°ì´í°ë² ì´ì¤ì ìí´ ì¤ì ë¡ ì°ì¶ëëì§ë¥¼ ì§ì íë¤.
+ ì´ timestamp íë¡í¼í° ê°ì´ ë°ì´í°ë² ì´ì¤ì ìí´ ì¤ì ë¡ ìì±ë¨ì ì§ì íë¤.
<xref linkend="mapping-generated">ì°ì¶ëë íë¡í¼í°ë¤</xref>ì ëí ë
¼ìë¤ ë³´ë¼.
</para>
</callout>
@@ -2202,7 +2263,8 @@
<title>join</title>
<para>
- <literal><join></literal> ìì를 ì¬ì©íë©´, í ê°ì í´ëì¤ì íë¡í¼í°ë¤ì ëª ê°ì í
ì´ë¸ë¤ë¡ 매íìí¤ë ê²ì´
+ <literal><join></literal> í
ì´ë¸ë¤ ì¬ì´ì 1ëì¼ ê´ê³ê° ì¡´ì¬í ë,
+ ìì를 ì¬ì©íì¬ íëì í´ëì¤ì ìí íë¡í¼í°ë¤ì ëª ê°ì í
ì´ë¸ë¤ë¡ 매íìí¤ë ê²ì´
ê°ë¥íë¤.
</para>
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/batch.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/batch.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/batch.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -28,8 +28,6 @@
<para>
ë¹ì ì ëí second-level ìºì를 ê°ì§ ìí¸ìì©ì´ ìì íê² ë¶ê°ë¥í íë¡ì¸ì¤ ë´ìì ì´ë° ì¢
ë¥ì ìì
ì ííê³ ì¶ì´í ìë ìë¤:
- You also might like to do this kind of work in a process where interaction with
- the second-level cache is completely disabled:
</para>
<programlisting><![CDATA[hibernate.cache.use_second_level_cache false]]></programlisting>
@@ -94,7 +92,6 @@
session.close();]]></programlisting>
</sect1>
-
<sect1 id="batch-statelesssession">
<title>StatelessSession ì¸í°íì´ì¤</title>
@@ -140,7 +137,7 @@
</sect1>
- <sect1 id="batch-direct" revision="2">
+ <sect1 id="batch-direct" revision="3">
<title>DML-ì¤íì¼ ì°ì°ë¤</title>
<para>
@@ -151,9 +148,9 @@
(<xref linkend="queryhql">HQL</xref>)를 íµí´ ì¤íëë ëë SQL-ì¤íì¼ì DML ë¬¸ì¥ ì¤íì ìí ë©ìëë¤ì ì ê³µíë¤.
</para>
- <para>
- <literal>UPDATE</literal>ì <literal>DELETE</literal> 문ì¥ë¤ì ì ì¬-구문ì ë¤ìê³¼ ê°ë¤:
- <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE where_conditions)?</literal>. ë
¸í¸í ëª ê°ì§ :
+ <para>
+ <literal>UPDATE</literal>ì <literal>DELETE</literal> 문ì¥ë¤ì ëí ì ì¬ êµ¬ë¬¸ì ë¤ìê³¼ ê°ë¤:
+ <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE where_conditions)?</literal>. ë
¸í¸í ëª ê°ì§:
</para>
<itemizedlist spacing="compact">
@@ -201,10 +198,34 @@
session.close();]]></programlisting>
<para>
- í ê°ì HQL <literal>DELETE</literal>를 ì¤íí기 ìí´, ëì¼í <literal>Query.executeUpdate()</literal> ë©ìë를
+ HQL <literal>UPDATE</literal> 문ì¥ë¤ì ëí´í¸ë¡ ìí¥ë°ë ìí°í°ë¤ì ëí
+ <xref linkend="mapping-declaration-version">version</xref> ëë
+ <xref linkend="mapping-declaration-timestamp">timestamp</xref> íë¡í¼í° ê°ë¤ì ìí¥ì ì£¼ì§ ìëë¤;
+ ì´ê²ì EJB3 ëª
ì¸ììì ì ì§ëê³ ìë¤. íì§ë§ ë¹ì ì íì´ë²ë¤ì´í¸ë¡ íì¬ê¸ <literal>versioned update</literal>ì
+ ì¬ì©ì íµí´ <literal>version</literal> ëë <literal>timestamp</literal> íë¡í¼í° ê°ë¤ì ì ì íê²
+ ì¬ì¤ì íëë¡ ê°ì í ì ìë¤. ì´ê²ì <literal>UPDATE</literal> í¤ìë ë¤ì <literal>VERSIONED</literal> í¤ìë를
+ ì¶ê°ìì¼ì ì±ì·¨ëë¤.
+ </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>
+ ë§ì¶¤í version íì
ë¤(<literal>org.hibernate.usertype.UserVersionType</literal>)ì
+ <literal>update versioned</literal> 문ì¥ê³¼ í¨ê» ì¬ì©íë ê²ì´ íì©ëì§ ììì ë
¸í¸íë¼.
+ </para>
+
+ <para>
+ HQL <literal>DELETE</literal>를 ì¤ííë ¤ë©´, ê°ì ë©ìë <literal>Query.executeUpdate()</literal>를
ì¬ì©íë¼:
</para>
-
+
<programlisting><![CDATA[Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/collection_mapping.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/collection_mapping.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/collection_mapping.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -107,7 +107,7 @@
schema="schema_name"
lazy="true|extra|false"
inverse="true|false"
- cascade="all|none|save-update|delete|all-delete-orphan"
+ 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"
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/component_mapping.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/component_mapping.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/component_mapping.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -184,8 +184,7 @@
<property name="purchaseDate"/>
<property name="price"/>
<property name="quantity"/>
- <many-to-one name="item" class="eg.Item"/>
- <!-- class attribute is optional -->
+ <many-to-one name="item" class="eg.Item"/> <!-- class attribute is optional -->
</composite-element>
</set>
</class>]]></programlisting>
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/configuration.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/configuration.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/configuration.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -653,9 +653,16 @@
ì íí ê²ì´ë¤.
<para>
<emphasis role="strong">eg.</emphasis>
- <literal>on_close</literal> (ëí´í¸) | <literal>after_transaction</literal> |
- <literal>after_statement</literal> | <literal>auto</literal>
+ <literal>auto</literal> (ëí´í¸) | <literal>on_close</literal> |
+ <literal>after_transaction</literal> | <literal>after_statement</literal>
</para>
+ <para>
+ ì´ ì¤ì ì´ <literal>SessionFactory.openSession</literal>ë¡ë¶í° ë°íë <literal>Session</literal>ë¤ìë§
+ ìí¥ì ì¤ë¤ë ì ì ë
¸í¸íë¼. <literal>SessionFactory.getCurrentSession</literal>ì íµí´ ì»ì´ì§
+ <literal>Session</literal>ë¤ì ê²½ì°, ì¬ì©í기 ìí´ êµ¬ì±ë <literal>CurrentSessionContext</literal> 구íì´
+ ê·¸ë¤ <literal>Session</literal>ë¤ì ëí ì°ê²° í´ì 를 ì ì´íë¤. <xref linkend="architecture-current-session"/>를
+ ë³´ë¼.
+ </para>
</entry>
</row>
<row>
@@ -864,7 +871,7 @@
</tgroup>
</table>
- <table frame="topbot" id="configuration-misc-properties" revision="9">
+ <table frame="topbot" id="configuration-misc-properties" revision="10">
<title>ì¬ë¬ê°ì§ íë¡í¼í°ë¤</title>
<tgroup cols="2">
<colspec colname="c1" colwidth="1*"/>
@@ -882,12 +889,12 @@
</entry>
<entry>
"íì¬" <literal>Session</literal>ì ììí를 ìí íëì (ë§ì¶¤) ë°©ë를
- ê³µê¸íë¤. ë¹ëëì´ ìë ë°©ëë¤ì ëí ì¶ê° ì ë³´ë
+ ì ê³µíë¤. ë¹ëëì´ ìë ë°©ëë¤ì ëí ì¶ê° ì ë³´ë
<xref linkend="architecture-current-session"/>를 ë³´ë¼.
<para>
<emphasis role="strong">ì.</emphasis>
- <literal>jta</literal> | <literal>thread</literal> |
- <literal>custom.Class</literal>
+ <literal>jta</literal> | <literal>thread</literal> |
+ <literal>managed</literal> | <literal>custom.Class</literal>
</para>
</entry>
</row>
@@ -899,7 +906,7 @@
Chooses the HQL íì 구íì ì ííë¤.
<para>
<emphasis role="strong">ì.</emphasis>
- <literal>org.hibernate.hql.ast.ASTQueryTranslatorFactory</literal> ëë
+ <literal>org.hibernate.hql.ast.ASTQueryTranslatorFactory</literal> or
<literal>org.hibernate.hql.classic.ClassicQueryTranslatorFactory</literal>
</para>
</entry>
@@ -909,7 +916,8 @@
<literal>hibernate.query.substitutions</literal>
</entry>
<entry>
- Hibernate ì§ìë¤ ë´ì í í°ë¤ë¡ë¶í° SQL í í°ë¤ë¡ì 매í(ì를 ë¤ì´ í í°ë¤ì í¨ì ì´ë¦ ëë 리í°ë´ ì´ë¦ì¼ ì ìë¤).
+ Hibernate ì§ìë¤ ë´ì í í°ë¤ë¡ë¶í° SQL í í°ë¤ë¡ì 매í
+ (ì를 ë¤ì´ í í°ë¤ì í¨ì ì´ë¦ ëë 리í°ë´ ì´ë¦ì¼ ì ìë¤).
<para>
<emphasis role="strong">ì.</emphasis>
<literal>hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC</literal>
@@ -921,8 +929,10 @@
<literal>hibernate.hbm2ddl.auto</literal>
</entry>
<entry>
- <literal>SessionFactory</literal>ê° ìì±ë ë ì¤í¤ë§ DDLì ë°ì´í°ë² ì´ì¤ë¡ ìëì ì¼ë¡ ì í¨ì± ê²ì¬íê±°ë ë´ë³´ë´ê¸° íë¤. <literal>create-drop</literal>ì ê²½ì°,
- <literal>SessionFactory</literal>ê° ëª
ìì ì¼ë¡ ë«íì§ ë,, ë°ì´í°ë² ì´ì¤ ì¤í¤ë§ê° ëë¡ë ê²ì´ë¤.
+ <literal>SessionFactory</literal>ê° ìì±ë ë, ìëì ì¼ë¡ ì í¨ì±ì ê²ì¬íê±°ë
+ schema DDLì ë°ì´í°ë² ì´ì¤ë¡ ë´ë³´ë´ê¸° íë¤. <literal>create-drop</literal>ì ê²½ì°,
+ <literal>SessionFactory</literal>ê° ëª
ìì ì¼ë¡ ë«íì§ ë ë°ì´í°ë² ì´ì¤ ì¤í¤ë§ê°
+ ëë¡ë ê²ì´ë¤.
<para>
<emphasis role="strong">ì.</emphasis>
<literal>validate</literal> | <literal>update</literal> |
@@ -935,8 +945,10 @@
<literal>hibernate.cglib.use_reflection_optimizer</literal>
</entry>
<entry>
- ë°íì reflection ëì ì CGLIBì ì¬ì©ì ê°ë¥íëë¡ ë§ë ë¤(ìì¤í
ë 벨 íë¡í¼í°). Reflectionì 문ì ê° ë°ìí ìì ëëë¡ ì ì©í ì ìê³ ,
- ë¹ì ì´ optimizer를 ì¬ì©íì§ ìì ê²½ì°ì¡°ì°¨ë Hibernateë íì íìë¡ í¨ì ì ìíë¼. ë¹ì ì <literal>hibernate.cfg.xml</literal>
+ ë°íì reflection ëì ì CGLIBì ì¬ì©ì ê°ë¥íëë¡ ë§ë ë¤(ìì¤í
ë 벨 íë¡í¼í°).
+ Reflectionì 문ì ê° ë°ìí ìì ëëë¡ ì ì©í ì ìê³ ,
+ ë¹ì ì´ optimizer를 ì¬ì©íì§ ìì ê²½ì°ì¡°ì°¨ë Hibernateë íì íìë¡ í¨ì ì ìíë¼.
+ ë¹ì ì <literal>hibernate.cfg.xml</literal>
ìì ì´ íë¡í¼í°ë¥¼ ì¤ì í ì ìë¤.
<para>
<emphasis role="strong">ì.</emphasis>
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/events.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/events.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/events.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -6,7 +6,7 @@
ê·¸ë¦¬ê³ Hibernateì íì¥ ê¸°ë¥ì 구íì íì©í´ì¤ë¤.
</para>
- <sect1 id="objectstate-interceptors" revision="2">
+ <sect1 id="objectstate-interceptors" revision="3">
<title>ì¸í°ì
í°ë¤</title>
<para>
@@ -106,9 +106,16 @@
}]]></programlisting>
<para>
- ì¸ì
ì´ ìì±ë ë ì¸í°ì
í°ê° ì§ì ë ê²ì´ë¤.
+ ì¸í°ì
í°ë¤ì ë¤ì ë ê°ì í¹ì§ë¤ë¡ ëíëë¤: <literal>Session</literal>-ììí 그리ê³
+ <literal>SessionFactory</literal>-ììí.
</para>
+ <para>
+ <literal>Session</literal>-ììì ì¸í°ì
í°ë ì¸ì
ì´ íëì <literal>Interceptor</literal>를 ìì©íë
+ ì¤ë²ë¡ëë SessionFactory.openSession() ë©ìëë¤ ì¤ íë를 ì¬ì©íì¬ ì´ë¦´ ë
+ ì§ì ëë¤.
+ </para>
+
<programlisting><![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]></programlisting>
<para>
@@ -116,23 +123,34 @@
ì´ ê²½ì°ì, ì¸í°ì
í°ë threadsafeì´ì´ì¼ íë¤.
</para>
+ <programlisting><![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]></programlisting>
+
+ <para>
+ <literal>SessionFactory</literal>-ììì ì¸í°ì
í°ë <literal>SessionFactory</literal>ì ë¹ëí기ì ìì
+ <literal>Configuration</literal> ê°ì²´ì ë±ë¡ëë¤. ì´ ê²½ì°ì, ê³µê¸ëë ì¸í°ì
í°ë ê·¸ <literal>SessionFactory</literal>ë¡ë¶í°
+ ì´ë ¤ì§ 모ë ì¸ì
ë¤ì ì ì©ë ê²ì´ë¤; íëì ì¸ì
ì´ ì¬ì©í ì¸í°ì
í°ë¥¼ ëª
ìì ì¼ë¡ ì§ì íì¬ ì´ë¦¬ì§ ìë í ì´ê²ì ì°¸ì´ë¤.
+ <literal>SessionFactory</literal>-ììì ì¸í°ì
í°ë¤ì ì¸ì
-ì§ì ì ì¸ ìí를 ì ì¥íì§ ìëë¡ ì£¼ìíì¬ ì°ë ë-ìì í´ì¼ íë¤.
+ ìëíë©´ ë¤ì¤ ì¸ì
ë¤ì (ì ì ì ì¼ë¡) ì´ ì¸í°ì
í°ë¥¼ ëìì ì¼ë¡ ì¬ì©í ê²ì´ê¸° ë문ì´ë¤.
+ </para>
+
<programlisting><![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]></programlisting>
</sect1>
- <sect1 id="objectstate-events" revision="3">
+ <sect1 id="objectstate-events" revision="4">
<title>ì´ë²¤í¸ ìì¤í
</title>
<para>
- ë§ì¼ ë¹ì ì´ ë¹ì ì ìì ê³ì¸µìì í¹ë³í ì´ë²¤í¸ë¤ì ëí´ ë°ìí´ì¼ íë¤ë©´, ë¹ì ì ëí Hibernate3 <emphasis>ì´ë²¤í¸</emphasis>
+ ë§ì¼ ë¹ì ì´ ë¹ì ì ìì ê³ì¸µìì í¹ì ì´ë²¤í¸ë¤ì ëí´ ë°ìí´ì¼ íë¤ë©´, ë¹ì ì ëí Hibernate3 <emphasis>event</emphasis>
ìí¤í
ì²ë¥¼ ì¬ì©í ìë ìë¤. ì´ë²¤í¸ ìì¤í
ì ë¶ê°ë¬¼ë¡ ì¬ì©ë ì ìê±°ë ì¸í°ì
í°ë¤ì ëí ëì²´ë¬¼ë¡ ì¬ì©ë ì ìë¤.
</para>
<para>
- 본ì§ì ì¼ë¡ <literal>Session</literal> ì¸í°íì´ì¤ì 모ë ë©ìëë¤ì ì´ë²¤í¸ì ìë¡ ê´ë ¨ëì´ ìë¤. ë¹ì ì <literal>LoadEvent</literal>,
+ 본ì§ì ì¼ë¡ <literal>Session</literal> ì¸í°íì´ì¤ì 모ë ë©ìëë¤ì ì´ë²¤í¸ì ìë¡ ê´ë ¨ëì´ ìë¤.
+ ë¹ì ì <literal>LoadEvent</literal>,
<literal>FlushEvent</literal>, ë±ì ê°ëë¤ (ì ìë ì´ë²¤í¸ íì
ë¤ì ì ì²´ 리ì¤í¸ì ëí´ìë XML êµ¬ì± íì¼ DTD ëë
<literal>org.hibernate.event</literal> í¨í¤ì§ë¥¼ 참조íë¼). íëì ìì²ì´ ì´ë¤ ë©ìëë¤ ì¤ íëì ìí´ ë§ë¤ì´ì§ ë,
- Hibernate <literal>Session</literal>ì ì ì í ì´ë²¤í¸ë¥¼ ìì±ìí¤ê³ ê·¸ê²ì ê·¸ íì
ì ëí 구ì±ë ì´ë²¤í¸ 리ì¤ëìê² ì ë¬íë¤.
+ Hibernate <literal>Session</literal>ì ì ì í ì´ë²¤í¸ë¥¼ ìì±ìí¤ê³ ê·¸ê²ì ê·¸ íì
ì 구ì±ë ì´ë²¤í¸ 리ì¤ëìê² ì ë¬íë¤.
ë°ì±ìì´, ì´ë¤ 리ì¤ëë¤ì ê·¸ë¤ ë©ìëë¤ì´ íì ê·ê²°ëìë ëì¼í íë¡ì¸ì±ì 구ííë¤. íì§ë§ ë¹ì ì´ ë¦¬ì¤ë ì¸í°íì´ì¤ë¤ ì¤ íëì ë§ì¶¤ì
구ííë ê²ì´ ìì ë¡ê³ (ì를 ë¤ì´ <literal>LoadEvent</literal>ë <literal>LoadEventListener</literal> ì¸í°íì´ì¤ì
ë±ë¡ë 구íì ìí´ ì²ë¦¬ëë¤), ê·¸ ê²½ì°ì ê·¸ë¤ êµ¬íì <literal>Session</literal>ì ëí´ íí´ì§ ììì <literal>load()</literal>
@@ -146,10 +164,10 @@
<para>
ë§ì¶¤í 리ì¤ëë ê·¸ê²ì´ í¸ìì ì¸ ê¸°ì í´ëì¤ë¤(ëë 리ì¤ëë¤ì´ ì´ ì©ëë¡ finalì´ ìë ê²ì¼ë¡ ì ì¸ëë¯ë¡ Hibernate
- out-of-the-boxì ìí´ ì¬ì©ë ëí´í¸ ì´ë²¤í¸ 리ì¤ëë¤) ì¤ íë를 ì²ë¦¬íê³ ì ê·¸ë¦¬ê³ /ëë íì¥íê³ ì ìíë ì´ë²¤í¸ë¤ì ëí´
+ out-of-the-boxì ìí´ ì¬ì©ë ëí´í¸ ì´ë²¤í¸ 리ì¤ëë¤) ì¤ íë를 ì²ë¦¬íê³ /íê±°ë íì¥íê³ ì ìíë ì´ë²¤í¸ë¤ì ëí´
ì ì í ì¸í°íì´ì¤ë¥¼ 구íí´ì¼ íë¤. ë§ì¶¤í 리ì¤ëë¤ì <literal>Configuration</literal> ê°ì²´ë¥¼ íµí´ íë¡ê·¸ë¨ ìì¼ë¡
ë±ë¡ë ì ìê±°ë, Hibernate êµ¬ì± XML ìì ì§ì ë ì ìë¤ (properties íì¼ì íµí ì ì¸ì ì¸ êµ¬ì±ì ì§ìëì§ ìëë¤).
- ë¤ìì ë§ì¶¤í load ì´ë²¤í¸ 리ì¤ëì ëí ìì ì´ë¤:
+ ë¤ìì ë§ì¶¤í load ì´ë²¤í¸ 리ì¤ëì ëí ìì ì´ë¤:
</para>
<programlisting><![CDATA[public class MyLoadListener implements LoadEventListener {
@@ -185,13 +203,13 @@
cfg.EventListeners().setLoadEventListeners(stack);]]></programlisting>
<para>
- ì ì¸ì ì¼ë¡ ë±ë¡ë 리ì¤ëë¤ì ì¸ì¤í´ì¤ë¤ì ê³µì í ì ìë¤. ë§ì¼ ëì¼í í´ëì¤ ì´ë¦ì´ ì¬ë¬ <literal><listener/></literal>
+ ì ì¸ì ì¼ë¡ ë±ë¡ë 리ì¤ëë¤ì ì¸ì¤í´ì¤ë¤ì ê³µì í ì ìë¤. ë§ì¼ ëì¼í í´ëì¤ ì´ë¦ì´ ì¬ë¬ ê°ì <literal><listener/></literal>
ììë¤ìì ì¬ì©ë ê²½ì°, ê°ê°ì 참조ë ê·¸ í´ëì¤ì ëí ë³ëì ì¸ì¤í´ì¤ë¡ ê·ê²°ë ê²ì´ë¤. ë§ì¼ ë¹ì ì´ ë¦¬ì¤ë íì
ë¤ ì¬ì´ìì 리ì¤ë ì¸ì¤í´ì¤ë¤ì
ê³µì í ê°ì©ì±ì íìë¡ í ê²½ì° ë¹ì ì íë¡ê·¸ëë° ë°©ìì ë±ë¡ ì ê·¼ë²ì ì¬ì©í´ì¼ íë¤.
</para>
<para>
- 컨í¼ê·¸ë ì´ì
ëìì ì ì¸í°íì´ì¤ë¥¼ 구ííê³ í¹ì íì
ì ì§ì íëê°? ë¬¼ë¡ ë¦¬ì¤ë 구íì ì¬ë¬ ê°ì ì´ë²¤í¸ 리ì¤ë ì¸í°íì´ì¤ë¤ì
+ êµ¬ì± ëìì ì ì¸í°íì´ì¤ë¥¼ 구ííê³ í¹ì íì
ì ì§ì íëê°? ë¬¼ë¡ ë¦¬ì¤ë 구íì ì¬ë¬ ê°ì ì´ë²¤í¸ 리ì¤ë ì¸í°íì´ì¤ë¤ì
구íí ì ìë¤. ë±ë¡ ëìì ì¶ê°ì ì¼ë¡ íì
ì ì ìíë ê²ì 컨í¼ê·¸ë ì´ì
ëìì ë§ì¶¤í 리ì¤ëë¤ì ì¬ì© ì¬ë¶ë¥¼ ì íìí¤ë ê²ì
ë ì½ê² í´ì¤ë¤.
</para>
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/example_mappings.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/example_mappings.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/example_mappings.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -538,7 +538,7 @@
</class>
]]></programlisting>
</sect2>
-
+
<sect2 id="example-mappings-content-discrimination">
<title>ë´ì© ê¸°ë° íë³</title>
<programlisting><![CDATA[<class name="Person"
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/inheritance_mapping.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/inheritance_mapping.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/inheritance_mapping.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -63,6 +63,7 @@
</subclass>
</hibernate-mapping>]]></programlisting>
+
<sect2 id="inheritance-tableperclass" >
<title>Table per class hierarchy</title>
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/performance.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/performance.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/performance.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -576,11 +576,24 @@
ë§ë£ëëë¡ êµ¬ì±ëì´ ììì§ë¼ë) ë ë¤ë¥¸ ì´í리ì¼ì´ì
ì ìí´ ìì ì ì¥ìì ëí´ íí´ì§ ë³ê²½ë¤ì ê²°ì½ ìì§ ëª»íë¤.
</para>
- <para>
+ <para revision="1">
ëí´í¸ë¡, Hibernateë JVM-ë 벨ì ìºì±ì EHCache를 ì¬ì©íë¤. (JCS ì§ìì ì´ì ì§ë¶íê² ëìê³ Hibernateì ì¥ë ë²ì ìì
ì ê±°ë ê²ì´ë¤.) ë¹ì ì <literal>hibernate.cache.provider_class</literal> íë¡í¼í°ë¥¼ ì¬ì©íì¬
<literal>org.hibernate.cache.CacheProvider</literal>를 구ííë í´ëì¤ì ì´ë¦ì ì§ì í¨ì¼ë¡ì¨ ë¤ë¥¸ 구íì ì íí ìë
ìë¤.
+ You have the option to tell Hibernate which caching implementation to use by
+ specifying the name of a class that implements <literal>org.hibernate.cache.CacheProvider</literal>
+ using the property <literal>hibernate.cache.provider_class</literal>. Hibernate
+ comes bundled with a number of built-in integrations with open-source cache providers
+ (listed below); additionally, you could implement your own and plug it in as
+ outlined above. Note that versions prior to 3.2 defaulted to use EhCache as the
+ default cache provider; that is no longer the case as of 3.2.
+ ë¹ì ì <literal>hibernate.cache.provider_class</literal> íë¡í¼í°ë¥¼ ì¬ì©íì¬
+ <literal>org.hibernate.cache.CacheProvider</literal>를 구ííë í´ëì¤ì ì´ë¦ì ì§ì í¨ì¼ë¡ì¨ ì´ë ìºì± 구íì
+ ì¬ì©í ê²ì¸ì§ë¥¼ Hibernateìê² ìë ¤ì£¼ë ìµì
ì ê°ëë¤. Hibernateë (ìëì ì´ê±°ë) ì¤í-ìì¤ íë¡ë°ì´ëë¤ì ê°ì§
+ ë§ì ë¹ëëì´ ìë íµí©ë¤ì ë²ë¤ë¡ ê°ê³ ìë¤; ì¶ê°ì ì¼ë¡ ë¹ì ì ììì ì¸ê¸íë¯ì´ ê·¸ê²ì ë¹ì ìì ì ê²ì 구íí ì ìê³ ê·¸ê²ì
+ íë¬ê·¸ ìí¬ ì ìë¤. 3.2 ì´ë² ë²ì ë¤ì ëíí¸ ìºì íë¡ë°ì´ëë¡ì EhCache를 ì¬ì©íëë¡ ëí¬ë¦ë¡ ë´ì¥ëì´ ììì ë
¸í¸íë¼;
+ ë²ì 3.2ì ê²½ì°ì ê·¸ê²ì ëì´ì ëí´í¸ ë´ì¥ì´ ìëë¤.
</para>
<table frame="topbot" id="cacheproviders" revision="1">
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/persistent_classes.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/persistent_classes.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/persistent_classes.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -104,6 +104,7 @@
ì¤ìí ë¤ ê°ì 주ì ê·ì¹ë¤ì´ ë¤ìì ìë¤:
</para>
+
<sect2 id="persistent-classes-pojo-constructor" revision="1">
<title>ìê·ë¨¼í¸ ìë ìì±ì를 구ííë¼ </title>
@@ -228,7 +229,8 @@
<title><literal>equals()</literal>ì <literal>hashCode()</literal> 구íí기</title>
<para>
- ë§ì¼ ë¹ì ì´
+ ë§ì¼ ë¹ì ì´ ë¤ìì ê²½ì°ë¼ë©´, ë¹ì ì <literal>equals()</literal>ì <literal>hashCode()</literal>
+ ë©ìëë¤ì ì¤ë²ë¼ì´ë ìì¼ì¼ íë¤.
</para>
<itemizedlist spacing="compact">
<listitem>
@@ -244,11 +246,8 @@
</para>
</listitem>
</itemizedlist>
+
<para>
- ê²½ì°ì ë¹ì ì <literal>equals()</literal>ì <literal>hashCode()</literal> ë©ìëë¤ì ì¤ë²ë¼ì´ë ìì¼ì¼ íë¤.
- </para>
-
- <para>
Hibernateë í¹ì session ë²ì ë´ììë§ persistent identity(ë°ì´í°ë² ì´ì¤ í)ê³¼ Java identityì ê°ìì ë³´ì¥íë¤.
ë°ë¼ì ì°ë¦¬ê° ë¤ë¥¸ ì¸ì
ë¤ìì ê²ìë ì¸ì¤í´ì¤ë¤ì í¼í©ìí¤ìë§ì, ì°ë¦¬ê° <literal>Set</literal>ë¤ì ëí´ ì ì미íê²
ë§ë¤ê³ ì ìí ê²½ì°, ì°ë¦¬ë <literal>equals()</literal>ì <literal>hashCode()</literal>를 구íí´ì¼ íë¤.
@@ -432,7 +431,7 @@
</sect1>
- <sect1 id="persistent-classes-tuplizers" revision="0">
+ <sect1 id="persistent-classes-tuplizers" revision="1">
<title>Tuplizerë¤</title>
<para>
@@ -442,8 +441,8 @@
ê·¸ë° ë°ì´í° 구조ë¡ë¶í° ê°ë¤ì ì¶ì¶ìí¤ë ë°©ë² ê·¸ë¦¬ê³ ê·¸ë° ë°ì´í°êµ¬ì¡° ìì¼ë¡ ê°ë¤ì ì½ì
ìí¤ë ë°©ë²ì ìê³ ìë ê²ì´ë¤.
ì를 ë¤ì´, POJO ìí°í° 모ëì ê²½ì°, ëìíë tuplizerë ê·¸ê²ì ìì±ì를 íµí´ POJO를 ìì±ìí¤ë ë°©ë², ê·¸ë¦¬ê³ ì ìë
íë¡í¼í° ì ê·¼ìë¤ì ì¬ì©íì¬ POJO íë¡í¼í°ë¤ì ì ê·¼íë ë°©ë²ì ìë¤.
- <literal>org.hibernate.tuple.EntityTuplizer</literal> ì¸í°íì´ì¤ì
- <literal>org.hibernate.tuple.ComponentTuplizer</literal> ì¸í°íì´ì¤ì ìí´ ííëë ë ê°ì§ ê³ ê¸ ì íì
+ <literal>org.hibernate.tuple.entity.EntityTuplizer</literal> ì¸í°íì´ì¤ì
+ <literal>org.hibernate.tuple.component.ComponentTuplizer</literal> ì¸í°íì´ì¤ì ìí´ ííëë ë ê°ì§ ê³ ê¸ ì íì
Tuplizerë¤ì´ ì¡´ì¬íë¤. <literal>EntityTuplizer</literal>ë¤ì ìí°í°ë¤ì ê´í´ìë ìì ì¸ê¸ë ê³ì½ë¤ì 매íí
ì±
ìì´ ìë ë°ë©´ì, <literal>ComponentTuplizer</literal>ë¤ì ì»´í¬ëí¸ë¤ì ëí´ìë ëì¼í ê²ì ííë¤.
</para>
@@ -476,7 +475,7 @@
public class CustomMapTuplizerImpl
- extends org.hibernate.tuple.DynamicMapEntityTuplizer {
+ 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) {
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/query_criteria.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/query_criteria.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/query_criteria.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -364,7 +364,6 @@
</sect1>
-
<!--TODO: ResultSetTransformer + aliasing. AliasToBeanTransformerë -JDO2ìì setResultClassì ì ì¬í- ììì ì¸
ì¬ì©ì ê°ì²´ë¤ì ë°ííë ê²ì íì©íë¤. ResultTransformerì ëí ì¼ë°ì ì¸ ì¬ì©ì´ ëí ì¤ëª
ë ì ìë¤. -->
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/query_hql.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/query_hql.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/query_hql.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -1,5 +1,5 @@
<chapter id="queryhql">
- <title>HQL: Hibernate Query Language</title>
+ <title>HQL: íì´ë²ë¤ì´í¸ ì§ì ì¸ì´(Hibernate Query Language)</title>
<para>
Hibernateë (ì주 ìëì ì¼ë¡) SQLê³¼ ë§¤ì° í¡ì¬íê² ë³´ì´ë ê·¹í ê°ë ¥í ì§ì ì¸ì´ë¥¼ 구ë¹íê³ ìë¤. ê·¸ë¬ë ê·¸ 구문ì ìí´ ì°ë¡±ë¹íì§ ë§ë¼;
@@ -126,7 +126,7 @@
<programlisting><![CDATA[from Cat as cat
left join cat.kittens as kitten
with kitten.bodyWeight > 10.0]]></programlisting>
-
+
<para>
ê²ë¤ê°, "fetch" joinì ê°ë¤ì ê°ì§ ì½ë ì
ë¤ì´ë ì°ê´ê´ê³ë¤ì´ í ê°ì select를 ì¬ì©íì¬, ê·¸ê²ë¤ì ë¶ëª¨ ê°ì²´ë¤ì ë°ë¼ ì´ê¸°í ëë
ê²ì íì©í´ì¤ë¤. ì´ê²ì ì½ë ì
ì ê²½ì°ì í¹í ì ì©íë¤. ê·¸ê²ì ì°ê´ê´ê³ë¤ê³¼ ì½ë ì
ë¤ì ëí 매í íì¼ì outer joinê³¼ lazy ì ì¸ë¤ì
@@ -147,7 +147,7 @@
inner join fetch cat.mate
left join fetch cat.kittens child
left join fetch child.kittens]]></programlisting>
-
+
<para>
(ë¹ë¡ <literal>scroll()</literal>ì´ ì¬ì©ë ì ììì§ë¼ë) <literal>fetch</literal> 구조체ë
<literal>iterate()</literal>를 ì¬ì©íì¬ í¸ì¶ëë ì§ìë¤ ë´ì ì¬ì©ë ì ììì ë
¸í¸íë¼. ì´ë¤ ì¤í¼ë ì´ì
ë¤ì´ ê²°ê³¼ íë¤ì
@@ -167,9 +167,9 @@
<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>join 구문ì íìë¤</title>
@@ -566,39 +566,27 @@
</listitem>
<listitem>
<para>
- ì¡°ì¸ë ì¸ë±ì±ë ì½ë ì
ì aliasë¤ì ì ì©ëë, HQL <literal>index()</literal> í¨ì
- </para>
- </listitem>
- <listitem>
- <para>
- ì½ë ì
ê°ì ê°ì§ ê²½ë¡ ííìë¤ì ì·¨íë HQL í¨ìë¤ : <literal>some, all, exists, any, in</literal>ì
- ì¬ì©íì¬ ì ëí ë ì ìë í¹ë³í <literal>elements()</literal>ì <literal>indices</literal>
- í¨ìë¤ê³¼ í¨ê» <literal>size(), minelement(), maxelement(), minindex(), maxindex()</literal>.
- </para>
- </listitem>
- <listitem>
- <para>
<literal>cast(... as ...)</literal>, ì¬ê¸°ì ëë² ì§¸ ìê·ë¨¼í¸ë Hibernate íì
ì ì´ë¦ì´ê³ ,
- ANSI <literal>cast()</literal>ì <literal>extract()</literal>ê° ê¸°ë³¸ ë°ì´í°ë² ì´ì¤ì ìí´ ì§ìë ê²½ì°ìë
- <literal>extract(... from ...)</literal>
+ ANSI <literal>cast()</literal>ì <literal>extract()</literal>ê° ê¸°ë° ë°ì´í°ë² ì´ì¤ì ìí´
+ ì§ìë ê²½ì°ìë <literal>extract(... from ...)</literal>.
</para>
</listitem>
<listitem>
<para>
- ì¡°ì¸ë ì¸ë±ì±ë ì½ë ì
ì aliasë¤ì ì ì©íë HQL <literal>index()</literal> í¨ì
+ ì¡°ì¸ë ì¸ë±ì±ë ì½ë ì
ì aliasë¤ì ì ì©ëë, HQL <literal>index()</literal> í¨ì
</para>
</listitem>
<listitem>
<para>
- ì½ë ì
ê° ê²½ë¡ ííìë¤ì ì·¨íë HQL í¨ìë¤: <literal>some, all, exists, any, in</literal>ì ì¬ì©íì¬
- ìì´ íì ë ì ìë í¹ë³í <literal>elements()</literal> ë° <literal>indices</literal> í¨ìë¤ê³¼ í¨ê»
- <literal>size(), minelement(), maxelement(), minindex(), maxindex()</literal> í¨ìë¤.
+ ì½ë ì
ê°ì ê°ì§ ê²½ë¡ ííìë¤ì ì·¨íë HQL í¨ìë¤ : <literal>some, all, exists, any, in</literal>ì
+ ì¬ì©íì¬ ì ëí ë ì ìë í¹ë³í <literal>elements()</literal>ì <literal>indices</literal>
+ í¨ìë¤ê³¼ í¨ê» <literal>size(), minelement(), maxelement(), minindex(), maxindex()</literal>.
</para>
</listitem>
<listitem>
<para>
<literal>sign()</literal>, <literal>trunc()</literal>, <literal>rtrim()</literal>,
- <literal>sin()</literal>ê³¼ ê°ì´ ììì ë°ì´í°ë² ì´ì¤-ì§ì SQL ì¤ì¹¼ë¼ í¨ì
+ <literal>sin()</literal>ê³¼ ê°ì´ ììì ë°ì´í°ë² ì´ì¤ ì§ì SQL ì¤ì¹¼ë¼ í¨ì
</para>
</listitem>
<listitem>
@@ -867,6 +855,10 @@
<para>
select 리ì¤í¸ ë´ì ìë íë ì´ìì ííìì ê°ì§ ìë¸ì§ìë¤ì ê²½ì°ì ë¹ì ì tuple ìì±ì를 ì¬ì©í ì ìë¤:
</para>
+
+ <para>
+ select ëª©ë¡ ë´ì íë ì´ìì ííìì ê°ì§ ìë¸ì§ìë¤ì ê²½ì°, ë¹ì ì íí(tuple) 구조를 ì¬ì©í ì ìë¤:
+ </para>
<programlisting><![CDATA[from Cat as cat
where not ( cat.name, cat.color ) in (
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/query_sql.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/query_sql.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/query_sql.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -1,216 +1,366 @@
<?xml version="1.0" encoding="UTF-8"?>
<chapter id="querysql" revision="2">
- <title>Native SQL</title>
+ <title>Native SQL</title>
- <para>
- ë¹ì ì ëí ë¹ì ì ë°ì´í°ë² ì´ì¤ì native SQL dialectë¡ ì§ìë¤ì ííí ìë ìë¤. ë¹ì ì´ ì¤ë¼í´ì ì§ì íí¸ë¤ ëë
- <literal>CONNECT</literal> í¤ìëì ê°ì ë°ì´í°ë² ì´ì¤ ì§ì ì ì¸ í¹ì§ë¤ì íì©íê³ ì ìí ê²½ì°ì ì´ê²ì´ ì ì©íë¤.
- ê·¸ê²ì ëí ì§ì ì ì¸ SQL/JDBC 기ë°ì ì´í리ì¼ì´ì
ì¼ë¡ë¶í° Hibernateë¡ì ë³´ë¤ ëª
ë£í ì´ì ê²½ë¡ë¥¼ ì ê³µíë¤.
- </para>
+ <para>ë¹ì ì ëí ë¹ì ì ë°ì´í°ë² ì´ì¤ì native SQL dialectë¡ ì§ìë¤ì ííí ìë ìë¤.
+ ë¹ì ì´ ì¤ë¼í´ì ì§ì íí¸ë¤ ëë <literal>CONNECT</literal> í¤ìëì ê°ì
+ ë°ì´í°ë² ì´ì¤ ì§ì ì ì¸ í¹ì§ë¤ì íì©íê³ ì ìí ê²½ì°ì ì´ê²ì´ ì ì©íë¤.
+ ê·¸ê²ì ëí ì§ì ì ì¸ SQL/JDBC 기ë°ì ì´í리ì¼ì´ì
ì¼ë¡ë¶í° Hibernateë¡ì ë³´ë¤ ëª
ë£í
+ ì´ì ê²½ë¡ë¥¼ ì ê³µíë¤.</para>
- <para>
- Hibernate3ì ëí 모ë create, update, delete, load ì¤í¼ë ì´ì
ë¤ì ëí´ (ë´ì¥ íë¡ìì ë¤ì í¬í¨íì¬) ìì¼ë¡ ìì±ë SQLì
- ì§ì íë ê²ì ë¹ì ìê² íì©í´ì¤ë¤.
- </para>
+ <para>Hibernate3ì ëí 모ë create, update, delete, load ì¤í¼ë ì´ì
ë¤ì ëí´
+ (ë´ì¥ íë¡ìì ë¤ì í¬í¨íì¬) ìì¼ë¡ ìì±ë SQLì ì§ì íë ê²ì ë¹ì ìê² íì©í´ì¤ë¤.</para>
- <sect1 id="querysql-creating" revision="3">
- <title><literal>SQLQuery</literal> ì¬ì©í기</title>
+ <sect1 id="querysql-creating" revision="4">
+ <title><literal>SQLQuery</literal> ì¬ì©í기</title>
- <para>
- native SQL ì§ìë¤ì ì¤íì <literal>SQLQuery</literal> ì¸í°íì´ì¤ë¥¼ íµí´ ì ì´ëë©°, ê·¸ê²ì
- <literal>Session.createSQLQuery()</literal>ì í¸ì¶íì¬ íëëë¤. ê·¹í ê°ë¨í ê²½ì°ë¤ìì ,
- ì°ë¦¬ë ë¤ì íìì ì¬ì©í ì ìë¤:
- </para>
+ <para>native SQL ì§ìë¤ì ì¤íì <literal>SQLQuery</literal> ì¸í°íì´ì¤ë¥¼ íµí´
+ ì ì´ëë©°, ê·¸ê²ì <literal>Session.createSQLQuery()</literal>ì í¸ì¶íì¬
+ íëëë¤. ë¤ìì ì´ API를 ì§ìì ì¬ì©íë ë°©ë²ì ì¤ëª
íë¤.</para>
- <programlisting><![CDATA[List cats = sess.createSQLQuery("select * from cats")
- .addEntity(Cat.class)
- .list();]]></programlisting>
-
- <para>ì´ ì§ìë ë¤ìì ì§ì íë¤:</para>
+ <sect2>
+ <title>ì¤ì¹¼ë¼ ì§ìë¤</title>
- <itemizedlist>
+ <para>ê°ì¥ 기본ì ì¸ SQL ì§ìë ì¤ì¹¼ë¼ë¤(ê°ë¤)ì 목ë¡ì ì»ë
+ ê²ì´ë¤.</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM CATS").list();
+sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").list();
+]]></programlisting>
+
+ <para>ì´ê²ë¤ì ëë¤ CATS í
ì´ë¸ ë´ì ìë ê°ê°ì 컬ë¼ì ëí ì¤ì¹¼ë¼ ê°ë¤ì ê°ì§ Object
+ ë°°ì´ë¤ì List를 ë°íí ê²ì´ë¤. Hibernateë ë°íëë ì¤ì¹¼ë¼ ê°ë¤ì ì¤ì ììì íì
ë¤ì
+ ëì¶íëë° ResultSetMetadata를 ì¬ì©í ê²ì´ë¤.</para>
+
+ <para><literal>ResultSetMetadata</literal> ì¬ì©ì ì¤ë²í¤ë를 í¼íê±°ë
+ ê°ë¨íê²ë ë°íëë ê²ì ë³´ë¤ ëª
ìì ì´ê²ë í기 ìí´ ì°ë¦¬ë
+ <literal>addScalar()</literal>를 ì¬ì©í ì ìë¤.</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM CATS")
+ .addScalar("ID", Hibernate.LONG)
+ .addScalar("NAME", Hibernate.STRING)
+ .addScalar("BIRTHDATE", Hibernate.DATE)
+]]></programlisting>
+
+ <para>ì´ ì§ìë ë¤ìì ì§ì íë¤:</para>
+
+ <itemizedlist>
<listitem>
- <para>
- SQL ì§ì 문ìì´
- </para>
+ <para>SQL ì§ì 문ìì´</para>
</listitem>
+
<listitem>
- <para>
- ê·¸ ì§ìì ìí´ ë°íëë ìí°í°
- </para>
+ <para>ë°íí 컬ë¼ë¤ê³¼ íì
ë¤</para>
</listitem>
- </itemizedlist>
+ </itemizedlist>
- <para>
- ì¬ê¸°ì, ê²°ê³¼ ì
ì»¬ë¼ ì´ë¦ë¤ì 매í 문ì ë´ì ì§ì ë ì»¬ë¼ ì´ë¦ë¤ê³¼ ëì¼í ê²ì¼ë¡ ê°ì ëë¤. ì´ê²ì ì¡°ì¸ ë¤ì¤ í
ì´ë¸ë¤ì ê°ì§
- SQL ì§ìë¤ì ëí´ ë¬¸ì ê° ë ì ìë¤. ìëíë©´ ëì¼í ì»¬ë¼ ì´ë¦ë¤ì´ íë ì´ìì í
ì´ë¸ ë¤ ë´ì ëíë ìë ì기 ë문ì´ë¤.
- ë¤ì íìì ì»¬ë¼ ì´ë¦ ì¤ë³µì ëí´ ì·¨ì½íì§ ìë¤:
- </para>
+ <para>ì´ê²ì ì¬ì í Object ë°°ì´ë¤ì ë°íí ê²ì´ì§ë§, ì´ì ê·¸ê²ì
+ <literal>ResultSetMetdata</literal>를 ì¬ì©íì§ ìì ê²ì´ê³ ëì ì
+ ê¸°ë° ê²°ê³¼ì
ì¼ë¡ë¶í° ID, NAME ê·¸ë¦¬ê³ BIRTHDATE 컬ë¼ì ê°ê° Long, String
+ ê·¸ë¦¬ê³ Short íì
ì¼ë¡ ë°íí ê²ì´ë¤. ì¬ì§ì´ ê·¸ ì§ìê° <literal>*</literal>를
+ ì¬ì©íê³ ì¸ ê°ì ì´ê±°ë 컬ë¼ë¤ ë³´ë¤ ë ë§ì ê²ì ë°íí ì ììì§ë¼ë, ì´ê²ì
+ ëí ì¤ì§ ì´ë¤ ì¸ ê°ì 컬ë¼ë¤ ë§ì´ ë°íë ê²ìì ì미íë¤.</para>
- <programlisting><![CDATA[List cats = sess.createSQLQuery("select {cat.*} from cats cat")
- .addEntity("cat", Cat.class)
- .list();]]></programlisting>
+ <para>ì¤ì¹¼ë¼ë¤ ì¤ ëªëª ëë ì ë¶ì ëí íì
ì 보를 ë¨ê²¨ëë ê²ì´ ê°ë¥íë¤.</para>
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM CATS")
+ .addScalar("ID", Hibernate.LONG)
+ .addScalar("NAME")
+ .addScalar("BIRTHDATE")
+]]></programlisting>
+
+ <para>ì´ê²ì 본ì§ì ì¼ë¡ ìì ê²ê³¼ ëì¼í ì§ìì´ì§ë§, ì´ì
+ <literal>ResultSetMetaData</literal>ë IDì íì
ì´ ëª
ìì ì¼ë¡ ì§ì ëì´ ìì¼ë¯ë¡
+ NAMEê³¼ BIRTHDATEì íì
ì ê²°ì íëë° ì¬ì©ëë¤.</para>
+
+ <para>java.sql.Types returned from ResultSetMetaDataì´ Hibernate
+ íì
ë¤ë¡ 매íëë ë°©ë²ì Dialectì ìí´ ì ì´ëë¤. ë§ì¼ í¹ì íì
ì´ ë§¤íëì§ ìê±°ë
+ ììëë íì
ì¼ë¡ ê·ê²°ëì§ ìì ê²½ì°ì Dialect ë´ì ìë
+ <literal>registerHibernateType</literal>ì ëí í¸ì¶ë¤ì íµí´ ê·¸ê²ì
+ ë§ì¶¤í ìí¤ë ê²ì´ ê°ë¥íë¤.</para>
+ </sect2>
+
+ <sect2>
+ <title>Entity ì§ìë¤</title>
+
+ <para>ìì ì§ìë¤ì ì¤ì¹¼ë¼ ê°ë¤ì ë°ííë ê², ê²°ê³¼ì
ë¤ë¡ë¶í° "ìëì" ê°ë¤ì
+ 기본ì ì¼ë¡ ë°ííë ê²ì ëí ì ë¶ìë¤. ë¤ìì <literal>addEntity()</literal>를
+ íµí´ native sql ì§ìë¡ë¶í° ìí°í° ê°ì²´ë¤ì ì»ë ë°©ë²ì ë³´ì¬ì¤ë¤.</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM CATS").addEntity(Cat.class);
+sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").addEntity(Cat.class);
+]]></programlisting>
+
<para>ì´ ì§ìë ë¤ìì ì§ì íë¤:</para>
-
+
<itemizedlist>
<listitem>
- <para>
- Hibernateê° ì»¬ë¼ aliasë¤ì ëì
í기 ìí, placeholder를 ê°ì§, SQL ì§ì 문ìì´
- </para>
+ <para>SQL ì§ì 문ìì´</para>
</listitem>
+
<listitem>
- <para>
- ê·¸ ì§ìì ìí´ ë°íë ìí°í°ì ê·¸ê²ì SQL í
ì´ë¸ alias
- </para>
+ <para>ê·¸ ì§ìì ìí´ ë°íëë ìí°í°</para>
</listitem>
- </itemizedlist>
-
- <para>
- <literal>addEntity()</literal> ë©ìëë SQL í
ì´ë¸ alias를 ë°íë ìí°í° í´ëì¤ì ì°ê´ì§ì°ê³ ,
- ì§ì ê²°ê³¼ ì
ì íí를 ê²°ì íë¤.
- </para>
-
- <para>
- <literal>addJoin()</literal> ë©ìëë ë¤ë¥¸ ìí°í°ë¤ê³¼ ì½ë ì
ë¤ì ëí ì°ê´ë¤ì ë¡ëìí¤ëë° ì¬ì©ë ì ìë¤.
- </para>
-
- <programlisting><![CDATA[List cats = sess.createSQLQuery(
- "select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id"
- )
- .addEntity("cat", Cat.class)
- .addJoin("kitten", "cat.kittens")
- .list();]]></programlisting>
-
- <para>
- native SQL ì§ìë ê°ë¨í ì¤ì¹¼ë¼ ê°ì ë°ííê±°ë ì¤ì¹¼ë¼ë¤ê³¼ ìí°í°ë¤ì ì¡°í©ì ë°íí ìë ìë¤.
- </para>
+ </itemizedlist>
- <programlisting><![CDATA[Double max = (Double) sess.createSQLQuery("select max(cat.weight) as maxWeight from cats cat")
- .addScalar("maxWeight", Hibernate.DOUBLE);
- .uniqueResult();]]></programlisting>
-
- <para>ë¹ì ì ë¹ì ì hbm íì¼ë¤ ë´ì ê²°ê³¼ì
매í ì 보를 ëìì ê¸ë¡ ì¤ëª
í ì ìê³ ë¹ì ì ì§ìë¤ì ìí´ ê·¸ê²ë¤ì
- ì¬ì©í ì ìë¤.</para>
+ <para>Catì´ ì»¬ë¼ ID, NAME ê·¸ë¦¬ê³ BIRTHDATEë¡ì 매íëë¤ê³ ê°ì íë©´,
+ ìì ì§ìë¤ì ëë¤ ê°ê°ì ììê° íëì Cat ìí°í°ì¸ íëì List를 ë°íí ê²ì´ë¤.</para>
- <programlisting><![CDATA[List cats = sess.createSQLQuery(
- "select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id"
- )
- .setResultSetMapping("catAndKitten")
- .list();]]></programlisting>
+ <para>ë§ì¼ ê·¸ ìí°í°ê° ë ë¤ë¥¸ ìí°í°ì ëí´ <literal>many-to-one</literal>ë¡
+ 매íëì´ ìë¤ë©´ ëí native ì§ì를 ì¤íí ë ì´ê²ì ë°ííë ê²ì´ íìì ê³ , ê·¸ ë°ì ê²½ì°
+ ë°ì´í°ë² ì´ì¤ ì§ì ì ì¸ "컬ë¼ì´ ë°ê²¬ëì§ ìììµëë¤" ì¤ë¥ê° ì¼ì´ë ê²ì´ë¤. ì¶ê°ì ì¸
+ 컬ë¼ì * í기를 ì¬ì©í ìëì ì¼ë¡ ë°íë ê²ì´ì§ë§, ì°ë¦¬ë ë¤ì <literal>Dog</literal>ì
+ ëí <literal>many-to-one</literal> ìì ììì²ë¼ ëª
ìì ì¸ ê²ì ë ì í¸íë¤:</para>
- </sect1>
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE, DOG_ID FROM CATS").addEntity(Cat.class);
+]]></programlisting>
- <sect1 id="querysql-aliasreferences">
- <title>Alias 참조ì íë¡í¼í° 참조</title>
+ <para>ì´ê²ì cat.getDog()ì´ ê³ ì íê² ê¸°ë¥íë ê²ì íì©íë¤.</para>
+ </sect2>
- <para>
- ììì ì¬ì©ë <literal>{cat.*}</literal> í기ë "모ë íë¡í¼í°"ì ëí ì½ì´ì´ë¤. ë¤ë¥¸ ë°©ë²ì¼ë¡, ë¹ì ì ëª
ìì ì¼ë¡ 컬ë¼ë¤ì
- 리ì¤í¸í ì ìì§ë§, ì¬ì§ì´ ì´ ê²½ì° ì¡°ì°¨ë ì°ë¦¬ë Hibernateë¡ íì¬ê¸ ê°ê°ì íë¡í¼í°ì ëí´ SQL ì»¬ë¼ aliasë¤ì ë¼ìë£ëë¡ í´ì¼ íë¤.
- ì»¬ë¼ aliasì ëí placeholderë í
ì´ë¸ alias ììì´ê° ë¶ì íë¡í¼í° ì´ë¦ì´ë¤. ë¤ì ìì ìì, ì°ë¦¬ë 매í ë©íë°ì´í°ì ì ì¸ë
- ê²ì ëí´ ë¤ë¥¸ í
ì´ë¸ (<literal>cat_log</literal>)ë¡ë¶í° <literal>Cat</literal>ë¤ì ê²ìíë¤. ì°ë¦¬ë ì¬ì§ì´ ì°ë¦¬ê°
- ì¢ìí ê²½ì° where ì ìì íë¡í¼í° aliasë¤ì ì¬ì©í ìë ììì 주목íë¼.
- </para>
- <para>
- The <literal>{}</literal>-syntax is <emphasis>not</emphasis> required for named queries.
- See <xref linkend="querysql-namedqueries"/>
- </para>
-
- <programlisting><![CDATA[String sql = "select cat.originalId as {cat.id}, " +
- "cat.mateid as {cat.mate}, cat.sex as {cat.sex}, " +
- "cat.weight*10 as {cat.weight}, cat.name as {cat.name} " +
- "from cat_log cat where {cat.mate} = :catId"
+ <sect2>
+ <title>ì°ê´ë¤ê³¼ ì½ë ì
ë¤ì ì²ë¦¬í기</title>
+ <para>íë½ì를 ì´ê¸°í ìí´ì ìì´ ê°ë¥í í¹ë³í ë¼ì´ëí¸ë¦½ì í¼í기 ìí´ì
+ <literal>Dog</literal>ìì eagerly joinìí¤ë ê²ì´ ê°ì¼íë¤. ì´ê²ì
+ <literal>addJoin()</literal> ë©ìë를 íµí´ íí´ì§ëë°, ê·¸ê²ì
+ ì°ê´ì´ë ì½ë ì
ë´ìì ì¡°ì¸ìí¤ë ê²ì ë¹ì ìê² íì©í´ì¤ë¤.</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT c.ID, NAME, BIRTHDATE, DOG_ID, D_ID, D_NAME FROM CATS c, DOGS d WHERE c.DOG_ID = d.D_ID")
+ .addEntity("cat", Cat.class)
+ .addJoin("cat.dog");
+]]></programlisting>
+
+ <para>ì´ ìì ìì ë°íëë <literal>Cat</literal>ë¤ì ë°ì´í°ë² ì´ì¤ì
+ ëí ììì í¹ë³í ë¼ì´ëí¬ë¦½ ìì´ ì ì²´ì ì¼ë¡ ì´ê¸°íë ê·¸ê²ë¤ì <literal>dog</literal>
+ íë¡í¼í°ë¥¼ ê°ëë¤. ì°ë¦¬ê° joinì ëì íë¡í¼í° ê²½ë¡ë¥¼ ì§ì íë ê²ì ê°ë¥íëë¡ í기 ìí´
+ íëì alias ì´ë¦("cat")ì ì¶ê°íìì 주ì§íë¼. ëì ì ì를 ë¤ì´ <literal>Cat</literal>ì´
+ <literal>Dog</literal>ì ëí´ one-to-many를 ê°ì§ ê²½ì°, ì½ë ì
ë¤ì ëí´ ëì¼í eager joiningì
+ ííë ê²ì´ ê°ë¥íë¤.</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>
+
+ <p>ì´ ë¨ê³ìì ì°ë¦¬ë Hibernateìì native ì§ìë¤ì ì¬ì©ê°ë¥íëë¡ ë§ë¤ê¸° ìí´
+ sql ì§ìë¤ì ê°íìí¤ì§ë ê²ì ììíì§ ìê³ ìë native ì§ìë¤ë¡ì ê°ë¥í ê²ì íê³ì
+ ëë¬íê³ ìë¤; 문ì ì ë¤ì ëì¼í íì
ì ì¬ë¬ ìí°í°ë¤ì ë°íí ë ëë ëí´í¸ alias/column
+ ì´ë¦ë¤ì´ 충ë¶íì§ ìì ë ë°ìí기 ììíë¤.</p>
+ </sect2>
+
+ <sect2>
+ <title>ì¬ë¬ ê°ì ìí°í°ë¤ì ë°íí기</title>
+
+ <para>ì§ê¸ê¹ì§ ê²°ê³¼ ì
ì»¬ë¼ ì´ë¦ë¤ì 매í 문ì ë´ì ì§ì ë ì»¬ë¼ ì´ë¦ë¤ê³¼ ëì¼íë¤ê³ ê°ì ëì´ ìë¤.
+ ëì¼í 컬ë¼ì´ íë ì´ìì í
ì´ë¸ ë´ìì ëíë ì ì기 ë문ì, ì´ê²ì ì¬ë¬ ê°ì í
ì´ë¸ë¤ì ì¡°ì¸ìí¤ë
+ SQL ì§ìë¤ì ëí´ ë¬¸ì ê° ë ì ìë¤.</para>
+
+ <para>ì»¬ë¼ alias 주ì
ì ë¤ì ì§ì(ìë§ ì¤í¨í ê²ì´ë¤)ìì íìíë¤:</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT c.*, m.* FROM CATS c, CATS m WHERE c.MOTHER_ID = c.ID")
+ .addEntity("cat", Cat.class)
+ .addEntity("mother", Cat.class)
+]]></programlisting>
+
+ <para>ì´ ì§ìì 목ì ì ë¨ì í ë¹ ë ê°ì Cat ì¸ì¤í´ì¤ë¤, íëì cat ê·¸ë¦¬ê³ ê·¸ê²ì mother를
+ ë°ííë ê²ì´ë¤. ìëíë©´ ê·¸ê²ë¤ì´ ëì¼í ì»¬ë¼ ì´ë¦ë¤ë¡ 매íëì´ ì기 ë문ì ì´ê²ì ì¤í¨í ê²ì´ê³
+ ë°ì´ë² ì´ì¤ ììì ë°íë ì»¬ë¼ aliasë¤ì ìë§ ë§¤íë¤ ë´ì ì§ì ë 컬ë¼ë¤("ID" ì "NAME")ê³¼ ê°ì§ ìì
+ "c.ID", "c.NAME" ë±ì íìì¼ ê²ì´ë¤.</para>
+
+ <para>ë¤ì íìì ì»¬ë¼ ì´ë¦ ì¤ë³µ ì·¨ì½ì ì ê°ì§ ìëë¤:</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT {cat.*}, {mother.*} FROM CATS c, CATS m WHERE c.MOTHER_ID = c.ID")
+ .addEntity("cat", Cat.class)
+ .addEntity("mother", Cat.class)
+]]></programlisting>
+
+ <para>ì´ ì§ìë ë¤ìì ì§ì íë¤:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>ì»¬ë¼ aliasë¤ì 주ì
í기 ìí Hibernateì© placeholderë¤ì ê°ì§ SQL ì§ì 문ìì´</para>
+ </listitem>
+
+ <listitem>
+ <para>ê·¸ ì§ìì ìí´ ë°íëë ìí°í°ë¤</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>ìì ì¬ì©ë {cat.*} ê³¼ {mother.*} í기ë "모ë íë¡í¼í°ë¤"ì ëí ìëµì´ë¤.
+ ë¤ë¥¸ ë°©ë²ì¼ë¡ ë¹ì ì 컬ë¼ë¤ì ëª
ìì ì¼ë¡ ì´ê±°í ìë ìì§ë§, ì´ ê²½ì°ì ì°ë¦¬ë Hibernateë¡ íì¬ê¸
+ SQL ì»¬ë¼ aliasë¤ì ê°ê°ì 컬ë¼ì 주ì
ìí¤ëë¡ ê°ì íë¤. ì»¬ë¼ alias를 ìí placeholderë ë¨ì§
+ ê·¸ í
ì´ë¸ aliasì ìí´ ììë íë¡í¼í° ì´ë¦ì´ë¤. ë¤ì ìì ìì, ì°ë¦¬ë ë¤ë¥¸ í
ì´ë¸(cat_log)ë¡ë¶í°
+ 매í ë©íë°ì´í° ë´ì ì ì¸ë ê²ì¼ë¡ì Catë¤ê³¼ ê·¸ê²ë¤ì motherë¤ì ê²ìíë¤. ì°ë¦¬ë ì°ë¦¬ê° ì¢ë¤ë©´
+ ì¬ì§ì´ where ì ë´ì íë¡í¼í° alias를 ì¬ì©í ìë ììì 주ì§íë¼.</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)
- .setLong("catId", catId)
- .list();]]></programlisting>
+ .addEntity("cat", Cat.class)
+ .addEntity("mother", Cat.class).list()
+]]></programlisting>
+ <sect3 id="querysql-aliasreferences" revision="2">
+ <title>alias 참조ì íë¡í¼í° 참조</title>
+
+ <para>ëë¶ë¶ì ê²½ì°ì ìì alias 주ì
ì´ íìíì§ë§, composite íë¡í¼í°ë¤, ìì íë³ìë¤
+ (inheritance discriminators), ì½ë ì
ë±ê³¼ ê°ì ë³´ë¤ ë³µì¡í 매íë¤ê³¼ ê´ë ¨ë ì§ìë¤ì ê²½ì°ìë
+ ê³ ì í aliasë¤ì 주ì
ìí¤ë ê²ì Hibernateìê² íì©íëë° ì¬ì©ë ëªëª í¹ë³í aliasë¤ì´ ì¡´ì¬íë¤.</para>
+
+ <para>ë¤ì í
ì´ë¸ì alias 주ì
ì ì¬ì©íë ë¤ë¥¸ ê°ë¥ì±ë¤ì ë³´ì¬ì¤ë¤. ë
¸í¸: ê²°ê³¼ ë´ì ìë alias ì´ë¦ë¤ì´
+ ìì ì´ë©°, ê°ê°ì aliasë ì¬ì©ë ë íëì ì ì¼í ì´ë¦ê³¼ ìë§ ë¤ë¥¸ ì´ë¦ì ê°ì§ ê²ì´ë¤.</para>
+
+ <table frame="topbot" id="aliasinjection-summary">
+ <title>alias 주ì
ì´ë¦ë¤</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>ê°ë¨í íë¡í¼í°</entry>
+ <entry><literal>{[aliasname].[propertyname]</literal></entry>
+
+ <entry><literal>A_NAME as {item.name}</literal></entry>
+ </row>
+
+ <row>
+ <entry>composite íë¡í¼í°</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>ìí°í°ì íë³ì(Discriminator)</entry>
+ <entry><literal>{[aliasname].class}</literal></entry>
+
+ <entry><literal>DISC as {item.class}</literal></entry>
+ </row>
+
+ <row>
+ <entry>ìí°í°ì 모ë íë¡í¼í°ë¤</entry>
+ <entry><literal>{[aliasname].*}</literal></entry>
+
+ <entry><literal>{item.*}</literal></entry>
+ </row>
+
+ <row>
+ <entry>ì½ë ì
í¤</entry>
+ <entry><literal>{[aliasname].key}</literal></entry>
+
+ <entry><literal>ORGID as {coll.key}</literal></entry>
+ </row>
+
+ <row>
+ <entry>ì½ë ì
ì id</entry>
+ <entry><literal>{[aliasname].id}</literal></entry>
+
+ <entry><literal>EMPID as {coll.id}</literal></entry>
+ </row>
+
+ <row>
+ <entry>ì½ë ì
ì ìì</entry>
+ <entry><literal>{[aliasname].element}</literal></entry>
+
+ <entry><literal>XID as {coll.element}</literal></entry>
+ <entry></entry>
+ </row>
+
+ <row>
+ <entry>ì½ë ì
ë´ì ìë ììì íë¡í¼í°</entry>
+ <entry><literal>{[aliasname].element.[propertyname]}</literal></entry>
+
+ <entry><literal>NAME as {coll.element.name}</literal></entry>
+ </row>
+
+ <row>
+ <entry>ì½ë ì
ë´ì ìë ììì 모ë íë¡í¼í°ë¤</entry>
+ <entry><literal>{[aliasname].element.*}</literal></entry>
+
+ <entry><literal>{coll.element.*}</literal></entry>
+ </row>
+
+ <row>
+ <entry>ì½ë ì
ì 모ë íë¡í¼í°ë¤</entry>
+ <entry><literal>{[aliasname].*}</literal></entry>
+
+ <entry><literal>{coll.*}</literal></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>non-managed ìí°í°ë¤ì ë°íí기</title>
+
+ <para>native sql ì§ìì ResultTransformer를 ì ì©íë ê²ì´ ê°ë¥íë¤. ì를 ë¤ì´
+ non-managed ìí°í°ë¤ì ë°íí기 ìí´ ResultTransformer를 íì©íë ê².</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
+ .setResultTransformer(Transformers.aliasToBean(CatDTO.class))]]></programlisting>
+
+ <para>ì´ ì§ìë ë¤ìì ì§ì íë¤:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>SQL ì§ì 문ìì´</para>
+ </listitem>
+
+ <listitem>
+ <para>ê²°ê³¼ ë³íì(transformer)</para>
+ </listitem>
+ </itemizedlist>
+
<para>
- <emphasis>ë
¸í¸:</emphasis> ë§ì¼ ë¹ì ì´ ê°ê°ì íë¡í¼í°ë¥¼ ëª
ìì ì¼ë¡ 리ì¤í¸í ê²½ì°, ë¹ì ì ê·¸ í´ëì¤ì
- <emphasis>ê·¸ê²ì ìë¸í´ëì¤ë¤</emphasis>ì 모ë íë¡í¼í°ë¤ì í¬í¨í´ì¼ íë¤!
+ ìì ì§ìë ì´ê¸°íëì´ ìê³ NAMEê³¼ BIRTHNAMEì ê°ë¤ì <literal>CatDTO</literal>ì
+ ëìíë íë¡í¼í°ë¤ê³¼ íëë¤ ìì¼ë¡ 주ì
ìí¨ <literal>CatDTO</literal>ì 리ì¤í¸ë¥¼ ë°íí ê²ì´ë¤.
</para>
- <para>
- ë¤ì í
ì´ë¸ì alias injectionì ì¬ì©íë ë¤ë¥¸ ê°ë¥ì±ë¤ì ë³´ì¬ì¤ë¤. ë
¸í¸ : ê²°ê³¼ ë´ìì alias ì´ë¦ë¤ì´ ìì ë¤ì´ë©°, ê°ê°ì aliasë
- ì¬ì©ë ìì íëì ì ì¼í ê·¸ë¦¬ê³ ê°ë¥í ë¤ë¥¸ ì´ë¦ì ê°ì§ ê²ì´ë¤.
- </para>
+ </sect2>
- <table frame="topbot" id="aliasinjection-summary">
- <title>Alias injection ì´ë¦ë¤</title>
-
- <tgroup cols="4">
- <colspec colwidth="1*"/>
-
- <colspec colwidth="1*"/>
-
- <colspec colwidth="2.5*"/>
-
- <thead>
- <row>
- <entry>ì¤ëª
</entry>
- <entry>구문</entry>
- <entry>ìì </entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>ê°ë¨í íë¡í¼í°</entry>
- <entry><literal>{[aliasname].[propertyname]</literal></entry>
- <entry><literal>A_NAME as {item.name}</literal></entry>
- </row>
- <row>
- <entry>composite íë¡í¼í°</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>ìí°í°ì íë³ì(Discriminator)</entry>
- <entry><literal>{[aliasname].class}</literal></entry>
- <entry><literal>DISC as {item.class}</literal></entry>
- </row>
- <row>
- <entry>ìí°í°ì 모ë íë¡í¼í°ë¤</entry>
- <entry><literal>{[aliasname].*}</literal></entry>
- <entry><literal>{item.*}</literal></entry>
- </row>
- <row>
- <entry>ì½ë ì
í¤</entry>
- <entry><literal>{[aliasname].key}</literal></entry>
- <entry><literal>ORGID as {coll.key}</literal></entry>
- </row>
- <row>
- <entry>ì½ë ì
ì id</entry>
- <entry><literal>{[aliasname].id}</literal></entry>
- <entry><literal>EMPID as {coll.id}</literal></entry>
- </row>
- <row>
- <entry>ì½ë ì
ì ìì</entry>
- <entry><literal>{[aliasname].element}</literal></entry>
- <entry><literal>XID as {coll.element}</literal></entry>
- <entry></entry>
- </row>
- <row>
- <entry>ì½ë ì
ë´ì ìë ììì íë¡í¼í°</entry>
- <entry><literal>{[aliasname].element.[propertyname]}</literal></entry>
- <entry><literal>NAME as {coll.element.name}</literal></entry>
- </row>
-
- <row>
- <entry>ì½ë ì
ë´ì ìë ììì 모ë íë¡í¼í°ë¤</entry>
- <entry><literal>{[aliasname].element.*}</literal></entry>
- <entry><literal>{coll.element.*}</literal></entry>
- </row>
- <row>
- <entry>ì½ë ì
ì 모ë íë¡í¼í°ë¤</entry>
- <entry><literal>{[aliasname].*}</literal></entry>
- <entry><literal>{coll.*}</literal></entry>
- </row>
- </tbody>
- </tgroup>
- </table>
+ <sect2>
+ <title>ìì ì²ë¦¬í기</title>
+ <para>ììì ë¶ë¶ì¼ë¡ì 매íëë ìí°í°ë¤ì ì§ìíë native sql ì§ìë¤ì baseclassì
+ 모ë íë¡í¼í°ë¤ì í¬í¨í´ì¼ íê³ ê·¸ 모ë ê²ì´ ìë¸í´ëì¤í ëì´ì¼ íë¤.</para>
+ </sect2>
+
+ <sect2>
+ <title>íë¼ë¯¸í°ë¤</title>
+
+ <para>Native sql ì§ìë¤ì ìì¹ íë¼ë¯¸í°ë¤ ë¿ë§ ìëë¼ ëª
ëª
ë íë¼ë¯¸í°ë¤ì ì§ìíë¤:</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>ëª
ëª
ë SQL ì§ìë¤</title>
@@ -219,7 +369,7 @@
<literal>addEntity()</literal> í¸ì¶ì íìë¡ íì§ <emphasis>ìëë¤</emphasis>.
</para>
- <programlisting><![CDATA[<sql-query name="persons">
+ <programlisting><![CDATA[<sql-query name="persons">
<return alias="person" class="eg.Person"/>
SELECT person.NAME AS {person.name},
person.AGE AS {person.age},
@@ -228,16 +378,17 @@
WHERE person.NAME LIKE :namePattern
</sql-query>]]></programlisting>
- <programlisting><![CDATA[List people = sess.getNamedQuery("persons")
+ <programlisting><![CDATA[List people = sess.getNamedQuery("persons")
.setString("namePattern", namePattern)
.setMaxResults(50)
.list();]]></programlisting>
- <para>
- The <literal><return-join></literal> ììì <literal><load-collection></literal>
- ììë ì°ê´ë¤ì ì¡°ì¸ìí¤ê³ ì½ë ì
ë¤ì ê°ê° ì´ê¸°í ìí¤ë ì§ìë¤ì ì ìíëë° ì¬ì©ëë¤.
- </para>
+
+ <para><literal><return-join></literal> ììì
+ <literal><load-collection></literal>
+ ììë ì°ê´ë¤ì ì¡°ì¸ìí¤ê³ ì½ë ì
ë¤ì ê°ê° ì´ê¸°í ìí¤ë ì§ìë¤ì
+ ì ìíëë° ì¬ì©ëë¤.</para>
- <programlisting><![CDATA[<sql-query name="personsWith">
+ <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},
@@ -253,12 +404,11 @@
WHERE person.NAME LIKE :namePattern
</sql-query>]]></programlisting>
- <para>
- ëª
ëª
ë SQL ì§ìë ì¤ì¹¼ë¼ ê°ì ë°íí ìë ìë¤. ë¹ì ì <literal><return-scalar></literal> ìì를 ì¬ì©íì¬
- ì»¬ë¼ aliasì Hibernate íì
ì ì ì¸í´ì¼ íë¤:
- </para>
+ <para>ëª
ëª
ë SQL ì§ìë ì¤ì¹¼ë¼ ê°ì ë°íí ìë ìë¤. ë¹ì ì
+ <literal><return-scalar></literal> ìì를 ì¬ì©íì¬
+ ì»¬ë¼ aliasì Hibernate íì
ì ì ì¸í´ì¼ íë¤:</para>
- <programlisting><![CDATA[<sql-query name="mySqlQuery">
+ <programlisting><![CDATA[<sql-query name="mySqlQuery">
<return-scalar column="name" type="string"/>
<return-scalar column="age" type="long"/>
SELECT p.NAME AS name,
@@ -288,16 +438,23 @@
WHERE person.NAME LIKE :namePattern
</sql-query>]]></programlisting>
- <sect2 id="propertyresults">
- <title>ëª
ìì ì¼ë¡ column/alias ì´ë¦ë¤ì ì§ì íëë° return-property ì¬ì©í기</title>
+ <para>ë¤ë¥¸ë°©ë²ì¼ë¡ ë¹ì ì ë¹ì ì hbm íì¼ë¤ ë´ì ì§ì ìë° ì½ëë¡ ë ê²°ê³¼ì
매í ì 보를 ì¬ì©í ì ìë¤.</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>ëª
ìì ì¼ë¡ column/alias ì´ë¦ë¤ì ì§ì íëë° return-property ì¬ì©í기</title>
+
+ <para>Hibernateë¡ íì¬ê¸ ê·¸ê² ìì ì aliasë¤ì ë¼ìë£ëë¡ í기 ìí´
+ <literal>{}</literal>-구문ì ì¬ì©íë ê² ëì ì,
+ <literal><return-property></literal>ë¡ì ë¹ì ì ì¬ì©í
+ ì»¬ë¼ aliasë¤ì´ 무ìì¸ì§ë¥¼ Hibernateìê² ëª
ìì ì¼ë¡ ìë ¤ì¤ ì ìë¤.</para>
- <para>
- Hibernateë¡ íì¬ê¸ ê·¸ê² ìì ì aliasë¤ì ë¼ìë£ëë¡ í기 ìí´ <literal>{}</literal>-구문ì ì¬ì©íë ê² ëì ì,
- <literal><return-property></literal>ë¡ì ë¹ì ì ì¬ì©í ì»¬ë¼ aliasë¤ì´ 무ìì¸ì§ë¥¼ Hibernateìê² ëª
ìì ì¼ë¡
- ìë ¤ì¤ ì ìë¤.
- </para>
-
- <programlisting><![CDATA[<sql-query name="mySqlQuery">
+ <programlisting><![CDATA[<sql-query name="mySqlQuery">
<return alias="person" class="eg.Person">
<return-property name="name" column="myName"/>
<return-property name="age" column="myAge"/>
@@ -310,12 +467,11 @@
</sql-query>
]]></programlisting>
- <para>
- <literal><return-property></literal>ë ëí ë¤ì¤ 컬ë¼ë¤ì ëí´ ëìíë¤. ì´ê²ì ë¤ì¤-ì»¬ë¼ íë¡í¼í°ë¤ì
- ëí fine grained ì ì´ë¥¼ íì©í ì ìë <literal>{}</literal>-구문ì ê°ì§ ì ì½ì í´ê²°í´ì¤ë¤.
- </para>
-
- <programlisting><![CDATA[<sql-query name="organizationCurrentEmployments">
+ <para><literal><return-property></literal>ë ëí ë¤ì¤ 컬ë¼ë¤ì ëí´ ëìíë¤.
+ ì´ê²ì ë¤ì¤-ì»¬ë¼ íë¡í¼í°ë¤ì ëí fine grained ì ì´ë¥¼ íì©í ì ìë
+ <literal>{}</literal>-구문ì ê°ì§ ì ì½ì í´ê²°í´ì¤ë¤.</para>
+
+ <programlisting><![CDATA[<sql-query name="organizationCurrentEmployments">
<return alias="emp" class="Employment">
<return-property name="salary">
<return-column name="VALUE"/>
@@ -330,28 +486,22 @@
WHERE EMPLOYER = :id AND ENDDATE IS NULL
ORDER BY STARTDATE ASC
</sql-query>]]></programlisting>
-
- <para>
- ì´ ìì ìì ì°ë¦¬ë ë¼ìë£ê¸°(injection)를 ìí´ <literal>{}</literal>-구문과 í¨ê» <literal><return-property></literal>를
- ì¬ì©íìì 주목íë¼. ì¬ì©ìë¤ì´ 컬ë¼ê³¼ íë¡í¼í°ë¤ì 참조íê³ ì ìíë ë°©ë²ì ì ííë ê²ì ì¬ì©ìë¤ìê² íì©í´ì¤ì¼ë¡ì¨.
- </para>
- <para>
- ë§ì¼ ë¹ì ì 매íì´ í ê°ì íë³ì(discriminator )를 ê°ì§ ê²½ì° ë¹ì ì íë³ì 컬ë¼ì ì§ì íëë°
- <literal><return-discriminator></literal>를 ì¬ì©í´ì¼ íë¤.
- </para>
- </sect2>
+ <para>ì´ ìì ìì ì°ë¦¬ë ë¼ìë£ê¸°(injection)를 ìí´ <literal>{}</literal>-구문과 í¨ê» <literal><return-property></literal>를
+ ì¬ì©íìì 주목íë¼. ì¬ì©ìë¤ì´ 컬ë¼ê³¼ íë¡í¼í°ë¤ì 참조íê³ ì ìíë ë°©ë²ì ì ííë ê²ì ì¬ì©ìë¤ìê² íì©í´ì¤ì¼ë¡ì¨.</para>
+
+ <para>ë§ì¼ ë¹ì ì 매íì´ í ê°ì íë³ì(discriminator )를 ê°ì§ ê²½ì° ë¹ì ì íë³ì 컬ë¼ì ì§ì íëë°
+ <literal><return-discriminator></literal>를 ì¬ì©í´ì¼ íë¤.</para>
+ </sect2>
- <sect2 id="sp_query" revision="1">
- <title>ì§ì를 ìí ë´ì¥ íë¡ìì ì¬ì©í기</title>
-
- <para>
- Hibernate 3ì ë´ì¥ íë¡ìì ë¤ê³¼ í¨ìë¤ì íµí ì§ì ì§ìì ëì
íë¤. ëë¶ë¶ì ë¤ì 문ìë ìì 모ëì ëì¼íê² ì ì©ëë¤.
- ë´ì¥ íë¡ìì /í¨ìë Hibernateì ëìíë ê²ì´ ê°ë¥íëë¡ ì²« ë²ì§¸ out-íë¼ë¯¸í°ë¡ì í ê°ì ê²°ê³¼ì
ì ë°íí´ì¼ íë¤.
- Oracle9 ì´ìì ë²ì ìì ê·¸ë° ë´ì¥ íë¡ìì ì ëí ìì ë ë¤ìê³¼ ê°ë¤:
- </para>
-
- <programlisting><![CDATA[CREATE OR REPLACE FUNCTION selectAllEmployments
+ <sect2 id="sp_query" revision="1">
+ <title>ì§ì를 ìí ë´ì¥ íë¡ìì ì¬ì©í기</title>
+
+ <para>Hibernate 3ì ë´ì¥ íë¡ìì ë¤ê³¼ í¨ìë¤ì íµí ì§ì ì§ìì ëì
íë¤. ëë¶ë¶ì ë¤ì 문ìë ìì 모ëì ëì¼íê² ì ì©ëë¤.
+ ë´ì¥ íë¡ìì /í¨ìë Hibernateì ëìíë ê²ì´ ê°ë¥íëë¡ ì²« ë²ì§¸ out-íë¼ë¯¸í°ë¡ì í ê°ì ê²°ê³¼ì
ì ë°íí´ì¼ íë¤.
+ Oracle9 ì´ìì ë²ì ìì ê·¸ë° ë´ì¥ íë¡ìì ì ëí ìì ë ë¤ìê³¼ ê°ë¤:</para>
+
+ <programlisting><![CDATA[CREATE OR REPLACE FUNCTION selectAllEmployments
RETURN SYS_REFCURSOR
AS
st_cursor SYS_REFCURSOR;
@@ -363,12 +513,11 @@
FROM EMPLOYMENT;
RETURN st_cursor;
END;]]></programlisting>
-
- <para>
- Hibernateìì ì´ ì§ì를 ì¬ì©í기 ìí´ ë¹ì ì íëì ëª
ëª
ë ì§ì(a named query)를 íµí´ ê·¸ê²ì 매íí íìê° ìë¤.
- </para>
-
- <programlisting><![CDATA[<sql-query name="selectAllEmployees_SP" callable="true">
+
+ <para>Hibernateìì ì´ ì§ì를 ì¬ì©í기 ìí´ ë¹ì ì íëì ëª
ëª
ë ì§ì(a named query)를 íµí´
+ ê·¸ê²ì 매íí íìê° ìë¤.</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"/>
@@ -383,78 +532,61 @@
</return>
{ ? = call selectAllEmployments() }
</sql-query>]]></programlisting>
-
- <para>
- ë´ì¥ íë¡ìì ë¤ì íì¬ ì¤ì¹¼ë¼ë¤ê³¼ ìí°í°ë¤ ë§ì ë°íí¨ì 주목íë¼. <literal><return-join></literal>ê³¼
- <literal><load-collection></literal>ì ì§ìëì§ ìëë¤.
- </para>
-
- <sect3 id="querysql-limits-storedprocedures" revision="1">
- <title>ë´ì¥ íë¡ìì ë¤ì ì¬ì©íë ê·ì¹ë¤/ì ì½ë¤</title>
-
- <para>
- Hibernateìì ë´ì¥ íë¡ìì ë¤ì ì¬ì©í기 ìí´ì íë¡ìì ë¤/í¨ìë¤ì ë¤ì ëªëª ê·ì¹ë¤ì ë°ë¼ì¼ íë¤. ë§ì¼ ê·¸ê²ë¤ì´ ê·¸ë¤ ê·ì¹ë¤ì
- ë°ë¥´ì§ ìì ê²½ì° ê·¸ê²ë¤ì Hibernateì í¨ê» ì¬ì© ë¶ê°ë¥íë¤. ë§ì¼ ë¹ì ì´ ì¬ì í ì´ë¤ íë¡ìì ë¤ì ì¬ì©íê³ ì ìí ê²½ì°,
- ë¹ì ì <literal>session.connection()</literal>ì íµí´ ê·¸ê²ë¤ì ì¤íìì¼ì¼ íë¤. ë°ì´í°ë² ì´ì¤ 벤ëë¤ì´ ë¤ë¥¸ ë´ì¥
- íë¡ìì ìë¯¸ë¡ /구문ì ê°ê³ ì기 ë문ì, ê·ì¹ë¤ì ê°ê°ì ë°ì´í°ë² ì´ì¤ì ë°ë¼ ì°¨ì´ê° ëë¤.
- </para>
- <para>
- ë´ì¥ íë¡ìì ì§ìë¤ì <literal>setFirstResult()/setMaxResults()</literal>ë¡ì ìª½ë§¤ê¹ ë ì ìë¤.
- </para>
+ <para>ë´ì¥ íë¡ìì ë¤ì íì¬ ì¤ì¹¼ë¼ë¤ê³¼ ìí°í°ë¤ ë§ì ë°íí¨ì 주목íë¼. <literal><return-join></literal>ê³¼
+ <literal><load-collection></literal>ì ì§ìëì§ ìëë¤.</para>
- <para>ê¶ì¥ëë í¸ì¶ íìì íì¤ SQL92ì´ë¤: <literal>{ ? = call
+ <sect3 id="querysql-limits-storedprocedures" revision="1">
+ <title>ë´ì¥ íë¡ìì ë¤ì ì¬ì©íë ê·ì¹ë¤/ì ì½ë¤</title>
+
+ <para>Hibernateìì ë´ì¥ íë¡ìì ë¤ì ì¬ì©í기 ìí´ì íë¡ìì ë¤/í¨ìë¤ì ë¤ì ëªëª ê·ì¹ë¤ì ë°ë¼ì¼ íë¤. ë§ì¼ ê·¸ê²ë¤ì´ ê·¸ë¤ ê·ì¹ë¤ì
+ ë°ë¥´ì§ ìì ê²½ì° ê·¸ê²ë¤ì Hibernateì í¨ê» ì¬ì© ë¶ê°ë¥íë¤. ë§ì¼ ë¹ì ì´ ì¬ì í ì´ë¤ íë¡ìì ë¤ì ì¬ì©íê³ ì ìí ê²½ì°,
+ ë¹ì ì <literal>session.connection()</literal>ì íµí´ ê·¸ê²ë¤ì ì¤íìì¼ì¼ íë¤. ë°ì´í°ë² ì´ì¤ 벤ëë¤ì´ ë¤ë¥¸ ë´ì¥
+ íë¡ìì ìë¯¸ë¡ /구문ì ê°ê³ ì기 ë문ì, ê·ì¹ë¤ì ê°ê°ì ë°ì´í°ë² ì´ì¤ì ë°ë¼ ì°¨ì´ê° ëë¤.</para>
+
+ <para>ë´ì¥ íë¡ìì ì§ìë¤ì <literal>setFirstResult()/setMaxResults()</literal>ë¡ì ìª½ë§¤ê¹ ë ì ìë¤.</para>
+
+ <para>ê¶ì¥ëë í¸ì¶ íìì íì¤ SQL92ì´ë¤: <literal>{ ? = call
functionName(<parameters>) }</literal> ëë <literal>{ ? = call
procedureName(<parameters>}</literal>. Native í¸ì¶ 구문ì ì§ìëì§ ìëë¤.</para>
- <para>
- Oracleì ê²½ì° ë¤ì ê·ì¹ë¤ì´ ì ì©ëë¤:
- </para>
-
- <itemizedlist spacing="compact">
- <listitem>
- <para>íëì í¨ìë íëì ê²°ê³¼ ì
ì ë°íí´ì¼ íë¤. íë¡ìì ì 첫 ë²ì§¸ íë¼ë¯¸í°ë íëì ê²°ê³¼ ì
ì ë°ííë
- íëì <literal>OUT</literal>ì´ì´ì¼ íë¤. ì´ê²ì Oracle 9 ëë 10ìì íëì <literal>SYS_REFCURSOR</literal>를
- ì¬ì©íì¬ íí´ì§ë¤. Oracleìì ë¹ì ì´ <literal>REF CURSOR</literal> íì
ì ì ìí íìê° ìë¤ë©´, Oracle ë³´ê³ ì를 ë³´ë¼.
- </para>
- </listitem>
- </itemizedlist>
-
- <para>
- Sybase ëë MS SQL serverì ê²½ì° ë¤ì ê·ì¹ë¤ì´ ì ì©ëë¤:
- </para>
-
- <itemizedlist spacing="compact">
- <listitem>
- <para>
- íë¡ìì ë í ê°ì ê²°ê³¼ ì
ì ë°íí´ì¼ íë¤. ì´ë¤ ìë²ë¤ì´ ì¬ë¬ ê°ì ê²°ê³¼ì
ë¤ê³¼ ì
ë°ì´í¸ ì¹´ì´í¸ë¤ì ë°í í ì ìë¤/í ê²ì´ì´ë¯ë¡,
- Hibernateë ê²°ê³¼ë¤ì ë°ë³µ ìíí ê²ì´ê³ ê·¸ê²ì ë°í ê°ì¼ë¡ì íëì ê²°ê³¼ ì
ì¸ ì²« ë²ì§¸ 결과를 ì·¨í ê²ì´ë¤. ê·¸ ë°ì 모ë ê²ì
- í기ë ê²ì´ë¤.
- </para>
- </listitem>
- <listitem>
- <para>
- ë§ì¼ ë¹ì ì´ ë¹ì ì íë¡ìì ë´ì <literal>SET NOCOUNT ON</literal>ì ì´ì© ê°ë¥íê² í ì ìë¤ë©´ ê·¸ê²ì ìë§
- ë³´ë¤ í¨ì¨ì ì´ê² ë ê²ì´ì§ë§ ì´ê²ì íì ì¡°ê±´ì´ ìëë¤.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
- </sect2>
+ <para>Oracleì ê²½ì° ë¤ì ê·ì¹ë¤ì´ ì ì©ëë¤:</para>
- </sect1>
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>íëì í¨ìë íëì ê²°ê³¼ ì
ì ë°íí´ì¼ íë¤. íë¡ìì ì 첫 ë²ì§¸ íë¼ë¯¸í°ë íëì ê²°ê³¼ ì
ì ë°ííë
+ íëì <literal>OUT</literal>ì´ì´ì¼ íë¤. ì´ê²ì Oracle 9 ëë 10ìì íëì
+ <literal>SYS_REFCURSOR</literal>를 ì¬ì©íì¬ íí´ì§ë¤. Oracleìì ë¹ì ì
+ <literal>REF CURSOR</literal> íì
ì ì ìí íìê° ìëë°, Oracle ë³´ê³ ì를 ë³´ë¼.</para>
+ </listitem>
+ </itemizedlist>
- <sect1 id="querysql-cud">
- <title>create, update ê·¸ë¦¬ê³ delete를 ìí ë§ì¶¤í SQL</title>
+ <para>Sybase ëë MS SQL serverì ê²½ì° ë¤ì ê·ì¹ë¤ì´ ì ì©ëë¤:</para>
- <para>
- Hibernate3ë create, update, delete ì¤í¼ë ì´ì
ë¤ì ìí ë§ì¶¤í 문ì¥ë¤ì ì¬ì©í ì ìë¤. Hibernateìì í´ëì¤ì ì½ë ì
- ìììë¤ì êµ¬ì± ìì ìì±ë 문ìì´ë¤ì ì§í©(insertsql, deletesql, updatesql ë±)ì ì´ë¯¸ í¬í¨íê³ ìë¤.
- <literal><sql-insert></literal>, <literal><sql-delete></literal>,
- <literal><sql-update></literal> 매í íê·¸ë¤ì ì´ë¤ 문ìì´ë¤ì ì¤ë²ë¼ì´ë ìí¨ë¤:
- </para>
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>íë¡ìì ë í ê°ì ê²°ê³¼ ì
ì ë°íí´ì¼ íë¤. ì´ë¤ ìë²ë¤ì´ ì¬ë¬ ê°ì ê²°ê³¼ì
ë¤ê³¼ ì
ë°ì´í¸ ì¹´ì´í¸ë¤ì ë°í í ì ìë¤/í ê²ì´ì´ë¯ë¡,
+ Hibernateë ê²°ê³¼ë¤ì ë°ë³µ ìíí ê²ì´ê³ ê·¸ê²ì ë°í ê°ì¼ë¡ì íëì ê²°ê³¼ ì
ì¸ ì²« ë²ì§¸ 결과를 ì·¨í ê²ì´ë¤. ê·¸ ë°ì 모ë ê²ì
+ í기ë ê²ì´ë¤.</para>
+ </listitem>
+ <listitem>
+ <para>ë§ì¼ ë¹ì ì´ ë¹ì ì íë¡ìì ë´ì <literal>SET NOCOUNT ON</literal>ì ì´ì© ê°ë¥íê² í ì ìë¤ë©´ ê·¸ê²ì ìë§
+ ë³´ë¤ í¨ì¨ì ì´ê² ë ê²ì´ì§ë§ ì´ê²ì íì ì¡°ê±´ì´ ìëë¤.</para>
+ </listitem>
+ </itemizedlist>
+ </sect3>
+ </sect2>
+ </sect1>
- <programlisting><![CDATA[<class name="Person">
+ <sect1 id="querysql-cud">
+ <title>create, update ê·¸ë¦¬ê³ delete를 ìí ë§ì¶¤í SQL</title>
+
+ <para>Hibernate3ë create, update, delete ì¤í¼ë ì´ì
ë¤ì ìí ë§ì¶¤í 문ì¥ë¤ì ì¬ì©í ì ìë¤. Hibernateìì í´ëì¤ì ì½ë ì
+ ìììë¤ì êµ¬ì± ìì ìì±ë 문ìì´ë¤ì ì§í©(insertsql, deletesql, updatesql ë±)ì ì´ë¯¸ í¬í¨íê³ ìë¤.
+ <literal><sql-insert></literal>, <literal><sql-delete></literal>,
+ <literal><sql-update></literal> 매í íê·¸ë¤ì ì´ë¤ 문ìì´ë¤ì ì¤ë²ë¼ì´ë ìí¨ë¤:</para>
+
+ <programlisting><![CDATA[<class name="Person">
<id name="id">
<generator class="increment"/>
</id>
@@ -464,14 +596,10 @@
<sql-delete>DELETE FROM PERSON WHERE ID=?</sql-delete>
</class>]]></programlisting>
- <para>
- SQLì´ ë¹ì ì ë°ì´í°ë² ì´ì¤ ë´ìì ì§ì ì¤íëì´ì, ë¹ì ì´ ì¢ìíë ììì dialect를 ì¬ì©íë ê²ì´ ìì ë¡ë¤. ë§ì¼ ë¹ì ì´ ë°ì´í°ë² ì´ì¤
- ì§ì ì ì¸ SQLì ì¬ì©í ê²½ì° ì´ê²ì ë¬¼ë¡ ë¹ì ì 매íì ì´ìì±ì ê°ììí¬ ê²ì´ë¤.
- </para>
+ <para>SQLì´ ë¹ì ì ë°ì´í°ë² ì´ì¤ ë´ìì ì§ì ì¤íëì´ì, ë¹ì ì´ ì¢ìíë ììì dialect를 ì¬ì©íë ê²ì´ ìì ë¡ë¤. ë§ì¼ ë¹ì ì´ ë°ì´í°ë² ì´ì¤
+ ì§ì ì ì¸ SQLì ì¬ì©í ê²½ì° ì´ê²ì ë¬¼ë¡ ë¹ì ì 매íì ì´ìì±ì ê°ììí¬ ê²ì´ë¤.</para>
- <para>
- ë§ì¼ <literal>callable</literal> ìì±ì´ ì¤ì ëë©´ ë´ì¥ íë¡ìì ë¤ì´ ì§ìëë¤:
- </para>
+ <para>ë§ì¼ <literal>callable</literal> ìì±ì´ ì¤ì ëë©´ ë´ì¥ íë¡ìì ë¤ì´ ì§ìëë¤:</para>
<programlisting><![CDATA[<class name="Person">
<id name="id">
@@ -483,24 +611,19 @@
<sql-update callable="true">{? = call updatePerson (?, ?)}</sql-update>
</class>]]></programlisting>
- <para>
- ìì¹ íë¼ë¯¸í°ë¤ì Hibernateê° ê·¸ê²ë¤ì 기ëíë ê²ê³¼ ê°ì ììê° ëì´ì¼ íë¯ë¡, ìì¹ íë¼ë¯¸í°ë¤ì ììë íì¬ ì ëì ì¼ë¡ ì¤ìíë¤.
- </para>
-
- <para>
- ë¹ì ì <literal>org.hiberate.persister.entity</literal> ë ë²¨ë¡ ëë²ê·¸ ë¡ê¹
ì ì¬ì© ê°ë¥íê² í¨ì¼ë¡ì¨ ììë ìì를 ë³¼ ì
- ìë¤. ì´ ë 벨ì ì´ì© ê°ë¥íê² íë©´ Hibernateë ìí°í°ë¤ì ìì±ìí¤ê³ , ì
ë°ì´í¸íê³ , ìì íëë° ì¬ì©ëë ì ì ì¸ SQLì ì¶ë ¥í ê²ì´ë¤.
- (ììëë 결과를 ë³´ë ¤ë©´, Hibernate ìì±ë ì ì ì¸ sqlì ì¤ë²ë¼ì´ë ìí¤ê² 매í íì¼ë¤ ìì ë¹ì ì ë§ì¶¤í SQLì í¬í¨ìí¤ì§ ìëë¡ ì¼ëì
- ëë¼.)
- </para>
+ <para>ìì¹ íë¼ë¯¸í°ë¤ì Hibernateê° ê·¸ê²ë¤ì 기ëíë ê²ê³¼ ê°ì ììê° ëì´ì¼ íë¯ë¡,
+ ìì¹ íë¼ë¯¸í°ë¤ì ììë íì¬ ì ëì ì¼ë¡ ì¤ìíë¤.</para>
- <para>
- Hibernateê° ë¬¸ì¥ì ì±ê³µì ìí´ ëªëª ì¤í ì ì²´í¬ë¤ì ííë¯ë¡, ë´ì¥ íë¡ìì ë¤ì ëë¶ë¶ì ê²½ì°ë¤(ì½ê¸°:ë¤ë¥¸ ê²½ì°ë¤ ë³´ë¤ ê·¸ê²ì ë ì
- ííë¤)ìì insertëê³ /ì
ë°ì´í¸ëê³ /ìì ë íë¤ì ê°ì를 ë°ííëë° íìíë¤. Hibernateë íì CUD ì¤í¼ë ì´ì
ë¤ì ëí ì«ì
- ì¶ë ¥ íë¼ë¯¸í°ë¡ì 첫 ë²ì§¸ ë¬¸ì¥ íë¼ë¯¸í°ë¥¼ ë±ë¡ìí¨ë¤:
- </para>
+ <para>ë¹ì ì <literal>org.hiberate.persister.entity</literal> ë ë²¨ë¡ ëë²ê·¸ ë¡ê¹
ì ì¬ì© ê°ë¥íê² í¨ì¼ë¡ì¨ ììë ìì를 ë³¼ ì
+ ìë¤. ì´ ë 벨ì ì´ì© ê°ë¥íê² íë©´ Hibernateë ìí°í°ë¤ì ìì±ìí¤ê³ , ì
ë°ì´í¸íê³ , ìì íëë° ì¬ì©ëë ì ì ì¸ SQLì ì¶ë ¥í ê²ì´ë¤.
+ (ììëë 결과를 ë³´ë ¤ë©´, Hibernate ìì±ë ì ì ì¸ sqlì ì¤ë²ë¼ì´ë ìí¤ê² 매í íì¼ë¤ ìì ë¹ì ì ë§ì¶¤í SQLì í¬í¨ìí¤ì§ ìëë¡ ì¼ëì
+ ëë¼.)</para>
- <programlisting><![CDATA[CREATE OR REPLACE FUNCTION updatePerson (uid IN NUMBER, uname IN VARCHAR2)
+ <para>Hibernateê° ë¬¸ì¥ì ì±ê³µì ìí´ ëªëª ì¤í ì ì²´í¬ë¤ì ííë¯ë¡, ë´ì¥ íë¡ìì ë¤ì ëë¶ë¶ì ê²½ì°ë¤(ì½ê¸°:ë¤ë¥¸ ê²½ì°ë¤ ë³´ë¤ ê·¸ê²ì ë ì
+ ííë¤)ìì insertëê³ /ì
ë°ì´í¸ëê³ /ìì ë íë¤ì ê°ì를 ë°ííëë° íìíë¤. Hibernateë íì CUD ì¤í¼ë ì´ì
ë¤ì ëí ì«ì
+ ì¶ë ¥ íë¼ë¯¸í°ë¡ì 첫 ë²ì§¸ ë¬¸ì¥ íë¼ë¯¸í°ë¥¼ ë±ë¡ìí¨ë¤:</para>
+
+ <programlisting><![CDATA[CREATE OR REPLACE FUNCTION updatePerson (uid IN NUMBER, uname IN VARCHAR2)
RETURN NUMBER IS
BEGIN
@@ -513,18 +636,14 @@
return SQL%ROWCOUNT;
END updatePerson;]]></programlisting>
+ </sect1>
-
- </sect1>
+ <sect1 id="querysql-load">
+ <title>ë¡ë©ì ìí ë§ì¶¤í SQL</title>
- <sect1 id="querysql-load">
- <title>ë¡ë©ì ìí ë§ì¶¤í SQL</title>
+ <para>ë¹ì ì ëí ìí°í° ë¡ë©ì ìí ë¹ì ìì ì SQL (ëë HQL)ì ì ì¸í ìë ìë¤:</para>
- <para>
- ë¹ì ì ëí ìí°í° ë¡ë©ì ìí ë¹ì ìì ì SQL (ëë HQL)ì ì ì¸í ìë ìë¤:
- </para>
-
- <programlisting><![CDATA[<sql-query name="person">
+ <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
@@ -532,11 +651,9 @@
FOR UPDATE
</sql-query>]]></programlisting>
- <para>
- ì´ê²ì ìì ë
¼ìíë¯ì´ ë¨ì§ ëª
ëª
ë ì§ì ì ì¸ì´ë¤. ë¹ì ì class 매í ìì ì´ ëª
ëª
ë ì§ì를 참조í ì ìë¤:
- </para>
+ <para>ì´ê²ì ìì ë
¼ìíë¯ì´ ë¨ì§ ëª
ëª
ë ì§ì ì ì¸ì´ë¤. ë¹ì ì class 매í ìì ì´ ëª
ëª
ë ì§ì를 참조í ì ìë¤:</para>
- <programlisting><![CDATA[<class name="Person">
+ <programlisting><![CDATA[<class name="Person">
<id name="id">
<generator class="increment"/>
</id>
@@ -544,20 +661,16 @@
<loader query-ref="person"/>
</class>]]></programlisting>
- <para>
- ì´ê²ì ì¬ì§ì´ ë´ì¥ íë¡ìì ë¤ì ëìíë¤.
- </para>
+ <para>ì´ê²ì ì¬ì§ì´ ë´ì¥ íë¡ìì ë¤ì ëìíë¤.</para>
- <para>
- ë¹ì ì ì½ë ì
ë¡ë©ì ìí í ê°ì ì§ì를 ì ìí ìë ìë¤:
- </para>
+ <para>ë¹ì ì ì½ë ì
ë¡ë©ì ìí í ê°ì ì§ì를 ì ìí ìë ìë¤:</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.*}
@@ -566,9 +679,7 @@
ORDER BY STARTDATE ASC, EMPLOYEE ASC
</sql-query>]]></programlisting>
- <para>
- ë¹ì ì ì¬ì§ì´ ì¡°ì¸ íì¹ì ìí´ íëì ì½ë ì
ì ë¡ëìí¤ë íëì ìí°í°ë¥¼ ì ìí ì ìë¤:
- </para>
+ <para>ë¹ì ì ì¬ì§ì´ ì¡°ì¸ íì¹ì ìí´ íëì ì½ë ì
ì ë¡ëìí¤ë íëì ìí°í°ë¥¼ ì ìí ì ìë¤:</para>
<programlisting><![CDATA[<sql-query name="person">
<return alias="pers" class="Person"/>
@@ -579,7 +690,5 @@
ON pers.ID = emp.PERSON_ID
WHERE ID=?
</sql-query>]]></programlisting>
-
- </sect1>
-
+ </sect1>
</chapter>
\ No newline at end of file
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/session_api.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/session_api.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/session_api.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -413,7 +413,7 @@
</sect3>
- <sect3 id="objectstate-querying-executing-named">
+ <sect3 id="objectstate-querying-executing-named" revision="1">
<title>ëª
ëª
ë ì§ìë¤ì 구체í ìí¤ê¸°</title>
<para>
@@ -421,7 +421,7 @@
í¬í¨í ê²½ì°ì <literal>CDATA</literal> ì¹ì
ì ì¬ì©íë ê²ì 기ìµíë¼))
</para>
- <programlisting><![CDATA[<query name="eg.DomesticCat.by.name.and.minimum.weight"><![CDATA[
+ <programlisting><![CDATA[<query name="ByNameAndMaximumWeight"><![CDATA[
from eg.DomesticCat as cat
where cat.name = ?
and cat.weight > ?
@@ -431,7 +431,7 @@
íë¼ë¯¸í° ë°ì¸ë©ê³¼ ì¤íì íë¡ê·¸ë¨ ìì¼ë¡ íí´ì§ë¤:
</para>
- <programlisting><![CDATA[Query q = sess.getNamedQuery("eg.DomesticCat.by.name.and.minimum.weight");
+ <programlisting><![CDATA[Query q = sess.getNamedQuery("ByNameAndMaximumWeight");
q.setString(0, name);
q.setInt(1, minWeight);
List cats = q.list();]]></programlisting>
@@ -440,6 +440,13 @@
ì¤ì íë¡ê·¸ë¨ ì½ëë ì¬ì©ëë ì§ì ì¸ì´ì ë
립ì ì´ê³ , ë¹ì ì ëí ë©íë°ì´í°ë¡ native SQL ì§ìë¤ì ì ìí ìë ìê±°ë
ê·¸ê²ë¤ì 매í íì¼ë¤ ìì 기존 ì§ìë¤ì ìì¹ì§ìì¼ë¡ì¨ 기존 ì§ìë¤ì Hibernateë¡ ì´ì ìí¬ ìë ììì ë
¸í¸íë¼.
</para>
+
+ <para>
+ ëí <literal><hibernate-mapping></literal> ìì ë´ìì íëì ì§ì ì ì¸ì ê·¸ ì§ìì ëí
+ ì ì ì ì¼ ì´ë¦ì íìë¡ íê³ , ë°ë©´ì <literal><class></literal> ìì ë´ììì ì§ì ì ì¸ì
+ í´ëì¤ ì´ë¦ì¼ë¡ ìì§ëì´ë¦ì 첨ê°íì¬ ìëì ì¼ë¡ ì ì¼íê² ë§ë¤ì´ì§ë¤.
+ ì를 ë¤ì´ <literal>eg.Cat.ByNameAndMaximumWeight</literal>.
+ </para>
</sect3>
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/transactions.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/transactions.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/transactions.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -317,10 +317,7 @@
ìë¤.
</para>
- <para>
- However, it is often desirable to keep your persistence layer portable between non-managed
- resource-local environments, and systems that can rely on JTA but use BMT instead of CMT.
- In both cases you'd use programmatic transaction demaracation.
+ <para>
íì§ë§, CMT ëì BMT를 ì¬ì©íë JTAì ìì¡´í ì ìë ìì¤í
ë¤, ê·¸ë¦¬ê³ ê´ë¦¬ëì§ ìë resource-local íê²½ë¤ ì¬ì´ìì
ë¹ì ì ìì ê³ì¸µì ì´ìì±ì ì ì§ìí¤ë ê²ì´ ì주 í¬ë§ëë¤. ë ê²½ì°ë¤ìì ë¹ì ì íë¡ê·¸ë¨ ìì í¸ëìì
ê²½ê³ì¤ì ì ì¬ì©í ê²ì´ë¤.
Hibernateë ë¹ì ì ë°°ì¹ íê²½ì ê³ ì í í¸ëìì
ìì¤í
ìì¼ë¡ ë³íëë <literal>Transaction</literal>ì´ë¼ ëª
ëª
ëë
@@ -488,7 +485,7 @@
tx.rollback();
throw e; // or display error message
}]]></programlisting>
-
+
<para>
CMTì ê²½ì°, í¸ëìì
ê´í [ê²½ê³ ì¤ì ]ì íë¡ê·¸ë¨ ìì´ ìë, session bean ë°°ì¹ ëì¤í¬ë¦½í°ë¤ ììì íí´ì§ë¤.
ê·¸ë¬ë¯ë¡ ì½ëë ë¤ìì¼ë¡ ê°ìëë¤:
@@ -621,7 +618,7 @@
sess.getTransaction().commit()
}
catch (RuntimeException e) {
- sess.getTransaction().rollback();
+ sess.getTransaction().rollback();
throw e; // or display error message
}
finally {
@@ -716,7 +713,6 @@
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> ê°ì²´ë ê·¸ê²ì´ ë¡ëëìë <literal>Session</literal>ì´ ì´ë ê²ì¸ì§ë¥¼ ì¬ì í ìê³ ìë¤.
ì´ì ì¸ì
ììì íëì ìë¡ì´ ë°ì´í°ë² ì´ì¤ í¸ëìì
ì ììíë ê²ì íëì ìë¡ì´ 커ë¥ì
ì íëíê³ ê·¸ ì¸ì
ì ìë¹íë¤.
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/tutorial.xml
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/tutorial.xml 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/modules/tutorial.xml 2006-12-08 08:07:27 UTC (rev 10956)
@@ -1,20 +1,25 @@
<chapter id="tutorial">
<title>Hibernate ê°ì</title>
- <sect1 id="tutorial-intro">
+ <sect1 id="tutorial-intro" revision="1">
<title>머리ë§</title>
<para>
ì´ ì¥ì Hibernate ì´ì¬ì를 ìí ê°ë¡ ì ì¸ íí 리ì¼ì´ë¤. ì°ë¦¬ë ë©ëª¨ë¦¬-ë´ ë°ì´í°ë² ì´ì¤ë¥¼
ì¬ì©íë ê°ë¨í ëª
ë ¹ ë¼ì¸ ì´í리ì¼ì´ì
ì¼ë¡ ììíê³ ë¨ê³ë¤ì ì´í´íëë¡ ì½ê² ê·¸ê²ì ê°ë°íë¤.
-
</para>
<para>
ì´ íí 리ì¼ì Hibernate ì ê· ì¬ì©ìë¤ì ìëíê³ ìì§ë§ Javaì SQL ì§ìì íìë¡ íë¤.
- ê·¸ê²ì Michael Gloeglì´ ìì±í íí 리ì¼ì 기ì´íë¤.
+ ê·¸ê²ì Michael Gloeglì´ ìì±í íí 리ì¼ì 기ì´íë©°, ì°ë¦¬ê° ëª
ëª
íë ì 3ì ë¼ì´ë¸ë¬ë¦¬ë¤ì
+ JDK 1.4ì 5.0 ë²ì ì©ì´ë¤. ë¹ì ì JDK1.3ì ëí´ ë¤ë¥¸ ë¼ì´ë¸ë¬ë¦¬ë¤ì íìë¡ í ìë ìë¤.
</para>
+ <para>
+ íí 리ì¼ì© ìì¤ë <literal>doc/reference/tutorial/</literal> ëë í 리 ë´ì ìë
+ ë°°í¬ë³¸ ë´ì í¬í¨ëì´ ìë¤.
+ </para>
+
</sect1>
<sect1 id="tutorial-firstapp" revision="2">
@@ -62,22 +67,24 @@
ë¤ìì¼ë¡ ì°ë¦¬ë ì°ë¦¬ê° ë°ì´í°ë² ì´ì¤ ìì ì ì¥ìí¤ê³ ì ìíë ì´ë²¤í¸ë¥¼ íííë í ê°ì í´ëì¤ë¥¼ ìì±ìí¨ë¤.
</para>
- <sect2 id="tutorial-firstapp-firstclass">
+ <sect2 id="tutorial-firstapp-firstclass" revision="1">
<title>첫 ë²ì§¸ í´ëì¤</title>
<para>
ì°ë¦¬ì 첫 ë²ì§¸ ìì í´ëì¤ë ëªëª íë¡í¼í°ë¤ì ê°ì§ ê°ë¨í ìë°ë¹ì¦ í´ëì¤ì´ë¤:
</para>
- <programlisting><![CDATA[import java.util.Date;
+ <programlisting><![CDATA[package events;
+import java.util.Date;
+
public class Event {
private Long id;
private String title;
private Date date;
- Event() {}
+ public Event() {}
public Long getId() {
return id;
@@ -107,18 +114,19 @@
<para>
ë¹ì ì ì´ í´ëì¤ê° íë¡í¼í° getterì setter ë©ìëë¤ì ëí íì¤ ìë°ë¹ì¦ ëª
ëª
ë²ë¤ ë¿ë§ ìëë¼ íëë¤ì ëí
private ê°ìì±ì ì¬ì©íê³ ììì ì ì ìë¤. ì´ê²ì ê¶ì¥ëë ì¤ê³ì´ì§ë§, íìì ì´ì§ë ìë¤. Hibernateë
- ëí íëë¤ì ì§ì ì ê·¼í ì ìì¼ë©°, accessor ë©ìëë¤ì ì´ì ì ê°ê±´í 리í©í ë§ì´ë¤.
+ ëí íëë¤ì ì§ì ì ê·¼í ì ìì¼ë©°, accessor ë©ìëë¤ì ì´ì ì ê°ê±´í 리í©í ë§ì´ë¤. ìê·ë¨¼í¸ ìë ìì±ìë
+ reflectionì íµí´ ì´ í´ëì¤ì ê°ì²´ë¥¼ ì´ê¸°í ìí¬ íìê° ìë¤.
</para>
<para>
- <literal>id</literal> íë¡í¼í°ë í¹ë³í ì´ë²¤í¸ë¥¼ ìí ì ì¼ ìë³ì를 ìì íë¤. ë§ì¼ ì°ë¦¬ê° Hibernateì
- ì ì²´ í¹ì§ì ì¬ì©íê³ ì ìí ê²½ì° ëª¨ë ìì ìí°í° í´ëì¤ë¤(ë³´ë¤ ë ì¤ìí ì¢
ì í´ëì¤ë¤ ëí ì¡´ì¬íë¤)ì ê·¸ë°
- ìë³ì íë¡í¼í°ë¥¼ íìë¡ í ê²ì´ë¤. ì¬ì¤ ëë¶ë¶ì ì´í리ì¼ì´ì
ë¤(í¹í ì¹ ì´í리ì¼ì´ì
ë¤)ì ìë³ìì ìí´
- ê°ì²´ë¤ì 구ë¶ì§ì íìê° ìì´ì, ë¹ì ì ì´ê²ì ì´ë¤ ì íì´ë¼ê¸° ë³´ë¤ë íëì í¹ì§ì¼ë¡ ê°ì£¼í ê²ì´ë¤. íì§ë§
- ì°ë¦¬ë ëê° ê°ì²´ì íë±(identity)를 ì²ë¦¬íì§ ìì¼ë¯ë¡, setter ë©ìëë privateì´ì´ì¼ íë¤. ê°ì²´ê° ì ì¥ë ë,
- Hibernateë ë¨ì§ ìë³ì를 í ë¹í ê²ì´ë¤. ë¹ì ì Hibernateê° public, private, protected ì ê·¼ì ë©ìëë¤
- ë¿ë§ ìëë¼ (public, private, protected) íëë¤ìë ì§ì ì ê·¼í ì ììì ì ì ìë¤. ì íì ë¹ì ìê² ë¬ë ¤
- ìì¼ë©°, ë¹ì ì ë¹ì ì ì´í리ì¼ì´ì
ì¤ê³ì ì í©íëë¡ ê·¸ê²ì ë¶í©ìí¬ ì ìë¤.
+ <literal>id</literal> íë¡í¼í°ë í¹ë³í ì´ë²¤í¸ë¥¼ ìí ì ì¼ ìë³ì를 ìì íë¤. 모ë ìì ìí°í° í´ëì¤ë¤
+ (ë³´ë¤ ë ì¤ìí ì¢
ì í´ëì¤ë¤ë ì¡´ì¬íë¤)ì ì°ë¦¬ê° Hibernateì ì ì²´ í¹ì§ ì§í©ì ì¬ì©íê³ ì ìí ê²½ì°ì
+ ê·¸ë° ìë³ì íë¡í¼í°ë¥¼ íìë¡ í ê²ì´ë¤. ì¬ì¤ ëë¶ë¶ì ì´í리ì¼ì´ì
ë¤(í¹í ì¹ ì´í리ì¼ì´ì
ë¤)ì ìë³ìì ìí´
+ ê°ì²´ë¤ì 구ë¶ì§ì íìê° ìì´ì, ë¹ì ì ì´ê²ì ì´ë¤ ì ì½ì ì´ë¼ê¸° ë³´ë¤ë íëì í¹ì§ì¼ë¡ ê°ì£¼í ê²ì´ë¤. íì§ë§
+ ì°ë¦¬ë ëê° ê°ì²´ì íë±(identity)를 ì²ë¦¬íì§ ìì¼ë¯ë¡, setter ë©ìëë privateì´ì´ì¼ íë¤. ê°ì²´ê° ì ì¥ë ë,
+ Hibernateë ë¨ì§ ìë³ìë¤ì í ë¹í ê²ì´ë¤. ë¹ì ì Hibernateê° public, private, protected ì ê·¼ì ë©ìëë¤
+ ë¿ë§ ìëë¼ (public, private, protected) íëë¤ìë ì§ì ì ê·¼í ì ììì ì ì ìë¤. ì íì ë¹ì ìê² ë¬ë ¤
+ ìì¼ë©°, ë¹ì ì ë¹ì ì ì´í리ì¼ì´ì
ì¤ê³ì ì í©íëë¡ ê·¸ê²ì ë¶í©ìí¬ ì ìë¤.
</para>
<para>
@@ -128,7 +136,7 @@
</para>
<para>
- ì´ Java ë
¸ì¤ íì¼ì ê°ë° í´ë ë´ì <literal>src</literal>ë¡ ëª
ëª
ë ëë í 리 ìì ìë ìì¹ì§ìë¼. ì´ì
+ ì´ Java ìì¤ íì¼ì ê°ë° í´ë ë´ì <literal>src</literal>ë¡ ëª
ëª
ë ëë í 리 ìì ìë ìì¹ì§ìë¼. ì´ì
ê·¸ ëë í 리ë ë¤ìê³¼ ê°ì ê²ì´ë¤:
</para>
@@ -136,7 +144,8 @@
+lib
<Hibernate and third-party libraries>
+src
- Event.java]]></programlisting>
+ +events
+ Event.java]]></programlisting>
<para>
ë¤ì ë¨ê³ìì, ì°ë¦¬ë Hiberanteìê² ì´ ìì í´ëì¤ì ëí´ ìë ¤ ì¤ë¤.
@@ -144,8 +153,8 @@
</sect2>
- <sect2 id="tutorial-firstapp-mapping">
- <title>매í íì¼</title>
+ <sect2 id="tutorial-firstapp-mapping" revision="1">
+ <title>The mapping file</title>
<para>
Hibernateë ìì í¬ëì¤ë¤ì ëí ê°ì²´ë¤ì ë¡ëìí¤ê³ ì ì¥ìí¤ë ë°©ë²ì ì íìê° ìë¤.
@@ -189,7 +198,7 @@
<programlisting><![CDATA[<hibernate-mapping>
- <class name="Event" table="EVENTS">
+ <class name="events.Event" table="EVENTS">
</class>
@@ -204,9 +213,9 @@
<programlisting><![CDATA[<hibernate-mapping>
- <class name="Event" table="EVENTS">
+ <class name="events.Event" table="EVENTS">
<id name="id" column="EVENT_ID">
- <generator class="increment"/>
+ <generator class="native"/>
</id>
</class>
@@ -230,9 +239,9 @@
<programlisting><![CDATA[
<hibernate-mapping>
- <class name="Event" table="EVENTS">
+ <class name="events.Event" table="EVENTS">
<id name="id" column="EVENT_ID">
- <generator class="increment"/>
+ <generator class="native"/>
</id>
<property name="date" type="timestamp" column="EVENT_DATE"/>
<property name="title"/>
@@ -242,7 +251,9 @@
<para>
<literal>id</literal> ììì ê²½ì°ì²ë¼, <literal>property</literal> ììì <literal>name</literal>
- ìì±ì ì¬ì©í getter ë° setter ë©ìëë¤ì´ ì´ë ê²ì¸ì§ë¥¼ Hibernateìê² ìë ¤ì¤ë¤.
+ ìì±ì ì¬ì©í getter ë° setter ë©ìëë¤ì´ ì´ë ê²ì¸ì§ë¥¼ Hibernateìê² ìë ¤ì¤ë¤. ë°ë¼ì ì´ ê²½ì°ì Hibernateë
+ <literal>getDate()/setDate()</literal> ë¿ë§ ìëë¼ <literal>getTitle()/setTitle()</literal>ì
+ ì°¾ê² ë ê²ì´ë¤.
</para>
<para>
@@ -262,8 +273,9 @@
ê·¸ ì체를 ê²°ì íë ¤ê³ ìëí ê²ì´ë¤. ëªëª ê²½ì°ë¤ìì (Java í´ëì¤ì ëí Reflectionì ì¬ì©íë) ì´ ìëì ì¸ ê²ì¶ì
ë¹ì ì´ ììíê±°ë íìë¡ íë ëí´í¸ë¥¼ ê°ì§ ìì ìë ìë¤. ì´ê²ì <literal>date</literal> íë¡í¼í°ë¥¼ ê°ì§
ê²½ì°ì´ë¤. Hibernateë ê·¸ íë¡í¼í°ê° SQL <literal>date</literal> 컬ë¼, <literal>timestamp</literal>
- ì»¬ë¼ ëë <literal>time</literal> ì»¬ë¼ ì¤ ì´ë ê²ì¼ë¡ 매íëì´ì¼ íëì§ë¥¼ ì ìê° ìë¤. ì°ë¦¬ë <literal>timestamp</literal>를
- ê°ì§ íë¡í¼í°ë¥¼ 매íí¨ì¼ë¡ì¨ ì ì²´ ë ì§ì ìê° ì 보를 ë³´ì¡´íê³ ì¶ë¤ê³ ì ì¸íë¤.
+ ì»¬ë¼ ëë <literal>time</literal> ì»¬ë¼ ì¤ ì´ë ê²ì¼ë¡ 매íëì´ì¼ íëì§ë¥¼ ì ìê° ìë¤. ì°ë¦¬ë
+ <literal>timestamp</literal> 컨ë²í°ë¥¼ ê°ì§ íë¡í¼í°ë¥¼ 매íí¨ì¼ë¡ì¨ ì ì²´ ë ì§ì ìê° ì 보를 ë³´ì¡´íê³ ì¶ë¤ê³
+ ì ì¸íë¤.
</para>
<para>
@@ -277,8 +289,9 @@
+lib
<Hibernate and third-party libraries>
+src
- Event.java
- Event.hbm.xml]]></programlisting>
+ +events
+ Event.java
+ Event.hbm.xml]]></programlisting>
<para>
ì°ë¦¬ë Hibernateì ë©ì¸ 구ì±ì ê³ì ííë¤.
@@ -299,7 +312,7 @@
<para>
ê°ë° ëë í 리ì 루í¸ì <literal>data</literal>ë¡ ëª
ëª
ë ëë í 리를 ìì±ìì¼ë¼ - ì´ ëë í 리ë
HSQL DBê° ê·¸ê²ì ë°ì´í° íì¼ë¤ì ì ì¥íê² ë ì¥ìì´ë¤. ì´ì ì´ ë°ì´í° ëë í 리ìì
- <literal>java -classpath lib/hsqldb.jar org.hsqldb.Server</literal>를 ì¤íìì¼ì
+ <literal>java -classpath ../lib/hsqldb.jar org.hsqldb.Server</literal>를 ì¤íìì¼ì
ë°ì´í°ë² ì´ì¤ë¥¼ ìììì¼ë¼. ë¹ì ì ê·¸ê²ì´ ììëê³ ì´ê²ì ì°ë¦¬ì ì´í리ì¼ì´ì
ì´ ëì¤ì ì°ê²°íê² ë ì¥ìì¸,
íëì TCP/IP ìì¼ì ë°ì¸ë ëë ê²ì ë³¼ ì ìë¤. ë§ì¼ ì´ íí ë¦¬ì¼ ëìì ë¹ì ì´ ì ë°ì´í°ë² ì´ì¤ë¡
ììíê³ ì ìí ê²½ì°, HSQL DB를 ì
§ë¤ì´ìí¤ê³ (ì¼ëì°ìì <literal>CTRL + C</literal>를 ëë¬ë¼),
@@ -332,26 +345,29 @@
<!-- Database connection settings -->
<property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
- <property name="connection.url">jdbc:hsqldb:data/tutorial</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>
- <!-- For a HSQL 1.8 in-memory database, this is required -->
- <property name="connection.shutdown">true</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="Event.hbm.xml"/>
+ <mapping resource="events/Event.hbm.xml"/>
</session-factory>
@@ -382,7 +398,7 @@
</sect2>
- <sect2 id="tutorial-firstapp-ant">
+ <sect2 id="tutorial-firstapp-ant" revision="1">
<title>Antë¡ ë¹ëí기</title>
<para>
@@ -393,16 +409,6 @@
ëª
ëª
ëê³ ê°ë° ëë í 리 ìì ì§ì ìì¹ë ê²ì´ë¤.
</para>
- <note>
- <title>Ant ì¤ì¹</title>
- <para>
- ëí´í¸ë¡ Ant ë°°í¬ë³¸ì (FAQì ì¤ëª
ëìë¯ì´) 깨ì´ì ¸ ìì¼ë©°, ì를 ë¤ì´, ë§ì¼ ë¹ì ì´ ë¹ì ì ë¹ë íì¼ ë´ë¶ìì
- JUnit를 ì¬ì©íê³ ì ìí ê²½ì° ë¹ì ì ìí´ ì ì ëì´ì¼ íë¤. JUnit íì¤í¬ ìì
ì íí기 ìí´(ì°ë¦¬ë ì´
- íí 리ì¼ìì ê·¸ê²ì íìë¡ íì§ ìì ê²ì´ë¤), junit.jar를 <literal>ANT_HOME/lib</literal>ì ë³µì¬íê±°ë
- <literal>ANT_HOME/lib/ant-junit.jar</literal> íë¬ê·¸ì¸ ì¤í
ì ì ê±°íë¼.
- </para>
- </note>
-
<para>
기본 ë¹ë íì¼ì ë¤ìê³¼ ê°ë¤:
</para>
@@ -460,7 +466,7 @@
</sect2>
- <sect2 id="tutorial-firstapp-helpers" revision="1">
+ <sect2 id="tutorial-firstapp-helpers" revision="3">
<title>ììê³¼ helperë¤</title>
<para>
@@ -478,12 +484,14 @@
ì ì©íë©°, ì°ë¦¬ë íì¬ì ìì
ë¨ì를 íì¬ì ì°ë ëì ì°ê´ì§ì ì ì§íë¤. 구íì ì´í´ë³´ì:
</para>
- <programlisting><![CDATA[import org.hibernate.*;
+ <programlisting><![CDATA[package util;
+
+import org.hibernate.*;
import org.hibernate.cfg.*;
public class HibernateUtil {
- public static final SessionFactory sessionFactory;
+ private static final SessionFactory sessionFactory;
static {
try {
@@ -496,25 +504,10 @@
}
}
- public static final ThreadLocal session = new ThreadLocal();
-
- public static Session getCurrentSession() throws HibernateException {
- Session s = (Session) session.get();
- // Open a new Session, if this thread has none yet
- if (s == null) {
- s = sessionFactory.openSession();
- // Store it in the ThreadLocal variable
- session.set(s);
- }
- return s;
+ public static SessionFactory getSessionFactory() {
+ return sessionFactory;
}
- public static void closeSession() throws HibernateException {
- Session s = (Session) session.get();
- if (s != null)
- s.close();
- session.set(null);
- }
}]]></programlisting>
<para>
@@ -545,9 +538,11 @@
+lib
<Hibernate and third-party libraries>
+src
- Event.java
- Event.hbm.xml
- HibernateUtil.java
+ +events
+ Event.java
+ Event.hbm.xml
+ +util
+ HibernateUtil.java
hibernate.cfg.xml
+data
build.xml]]></programlisting>
@@ -567,7 +562,7 @@
</sect2>
- <sect2 id="tutorial-firstapp-workingpersistence" revision="2">
+ <sect2 id="tutorial-firstapp-workingpersistence" revision="4">
<title>ê°ì²´ ë¡ë©ê³¼ ê°ì²´ ì ì¥</title>
<para>
@@ -575,11 +570,13 @@
ë©ìë를 ê°ì§ í ê°ì <literal>EventManager</literal> í´ëì¤ë¥¼ ìì±íë¤:
</para>
- <programlisting><![CDATA[import org.hibernate.Transaction;
+ <programlisting><![CDATA[package events;
import org.hibernate.Session;
import java.util.Date;
+import util.HibernateUtil;
+
public class EventManager {
public static void main(String[] args) {
@@ -589,28 +586,24 @@
mgr.createAndStoreEvent("My Event", new Date());
}
- HibernateUtil.sessionFactory.close();
+ HibernateUtil.getSessionFactory().close();
}
-}]]></programlisting>
+ private void createAndStoreEvent(String title, Date theDate) {
- <para>
- ì°ë¦¬ë ëª
ë ¹ ë¼ì¸ì¼ë¡ë¶í° ëªëª ìê·ë¨¼í¸ë¤ì ì½ì´ë¤ì´ê³ , ë§ì¼ 첫 ë²ì§¸ ìê·ë¨¼í¸ê° "store"ì´ë©´, ì°ë¦¬ë
- ìë¡ì´ Event를 ìì±ìí¤ê³ ì ì¥ìí¨ë¤:
- </para>
+ Session session = HibernateUtil.getSessionFactory().getCurrentSession();
- <programlisting><![CDATA[private void createAndStoreEvent(String title, Date theDate) {
- Session session = HibernateUtil.getCurrentSession();
- Transaction tx = session.beginTransaction();
+ session.beginTransaction();
- Event theEvent = new Event();
- theEvent.setTitle(title);
- theEvent.setDate(theDate);
+ Event theEvent = new Event();
+ theEvent.setTitle(title);
+ theEvent.setDate(theDate);
- session.save(theEvent);
+ session.save(theEvent);
- tx.commit();
- HibernateUtil.closeSession();
+ session.getTransaction().commit();
+ }
+
}]]></programlisting>
<para>
@@ -621,30 +614,39 @@
</para>
<para>
- <literal>Session</literal>ì í ê°ì ìì
ë¨ìì´ë¤. ë¹ì ì ì°ë¦¬ê° ì¶ê°ì ì¸ API, <literal>Transaction</literal>dmf
- ê°ê³ ììì ëëì ìë ìë¤. ì´ê²ì ìì
ë¨ìê° í ê°ì ë°ì´í°ë² ì´ì¤ í¸ëìì
ë³´ë¤ "ë 긴" ê²½ì°ì¼ ì ììì ì미íë¤
- -ì¹ ì´í리ì¼ì´ì
ììì ì¬ë¬ ê°ì Http ìì²/ìëµ ì£¼ê¸°ë¤(ì를 ë¤ë©´ ë§ë²ì¬ ëíìì)ì 걸ì¹ë ìì
ë¨ì를 ììíë¼.
- ì§ê¸ ì°ë¦¬ë ê·¸ê²ë¤ì ê°ë¨íê² ì ì§í ê²ì´ê³ <literal>Session</literal>ê³¼ <literal>Transaction</literal>
- ì¬ì´ì í ê°ì one-to-one ì
ìì ê°ì í ê²ì´ë¤.
+ <literal>Session</literal>ì í ê°ì ìì
ë¨ìì´ë¤. ì§ê¸ë¶í° ì°ë¦¬ë ë¨ì¨í¨ì ì ì§í ê²ì´ê³
+ Hibernate <literal>Session</literal>ê³¼ ë°ì´í°ë² ì´ì¤ í¸ëìì
ì¬ì´ì ì¼-ë-ì¼ ê³¼ë¦½í(granularity)ì ê°ì í ê²ì´ë¤.
+ ì¤ì ê¸°ë° í¸ëìì
ìì¤í
ì¼ë¡ë¶í° ì°ë¦¬ì ìì¤ë¥¼ ìíìí¤ê¸° ìí´(ì´ ê²½ì° íµìì JDBCì´ì§ë§, ê·¸ê²ì ëí JTAìë ì¤íëë¤)
+ ì°ë¦¬ë Hibernate <literal>Session</literal> ììì ì´ì© ê°ë¥í <literal>Transaction</literal> API를
+ ì¬ì©íë¤.
</para>
<para>
- <literal>Transaction.begin()</literal>ê³¼ <literal>commit()</literal>ì 무ìì ííëê°?
- ì못ëë ê²½ì°ë¤ìì <literal>rollback()</literal>ì ì´ëì ìëê°? Hibernate
- <literal>Transaction</literal> APIë ì¤ì ìµì
ì´ì§ë§, ì°ë¦¬ë í¸ìì ì´ìì±ì ìí´ ê·¸ê²ì ì¬ì©íë¤.
- (ì를 ë¤ì´ <literal>session.connection.commit()</literal>ì í¸ì¶í¨ì¼ë¡ì¨)ë§ì¼ ë¹ì ìì ì´
- ë°ì´í°ë² ì´ì¤ í¸ëìì
ì ì²ë¦¬íë¤ë©´, ë¹ì ì ì´ ì§ì ì ì¸ ê´ë¦¬ëì§ ìë JDBCë¡ í¹ë³í ë°°ì¹ íê²½ì ê·¸ ì½ë를
- ë°ì¸ëìì¼°ë¤. ë¹ì ì Hibernate êµ¬ì± ììì <literal>Transaction</literal>ì ìí í©í 리를 ì¤ì í¨ì¼ë¡ì¨,
- ë¹ì ì ë¹ì ì ìì ê³ì¸µì ì´ëììë ë°°ì¹í ì ìë¤. í¸ëìì
ì²ë¦¬ì ê´í ì ëí ì¶ê° ì ë³´ë
- <xref linkend="transactions"/>를 ì´í´ë³´ë¼. ì°ë¦¬ë ëí ì´ ìì ìì ì¤ë¥ í¸ë¤ë§ê³¼ 롤백ì ìëµíë¤.
+ <literal>sessionFactory.getCurrentSession()</literal>ì 무ìì ííëê°? 먼ì
+ ë¹ì ì ë¹ì ì´ (<literal>HibernateUtil</literal> ëë¶ì ì½ê²) <literal>SessionFactory</literal>ì
+ ë¹ì ì´ ìì íê³ ìë¤ë©´, ìíë ë§í¼ ì´ëìë ì¬ë¬ë² ê·¸ê²ì í¸ì¶í ì ìë¤.
+ <literal>getCurrentSession()</literal> ë©ìëë íì "íì¬ì" ìì
ë¨ì를 ë°ííë¤. ì°ë¦¬ê°
+ <literal>hibernate.cfg.xml</literal> ë´ìì ì´ ë§¤ì»¤ëì¦ì ëí êµ¬ì± ìµì
ì "thread"ë¡ ì íìì¼°ìì 기ìµíëê°?
+ ê·¸ë¬ë¯ë¡ íì¬ ìì
ë¨ìì ììì ì°ë¦¬ì ì´í리ì¼ì´ì
ì ì¤íìí¤ë íì¬ì Java ì°ë ëì´ë¤. íì§ë§ ì´ê²ì
+ ì ë¶ê° ì§ì¤ì ìëë¤. ê·¸ê²ì´ ì²ìì¼ë¡ íìë¡ ëê³ , <literal>getCurrentSession()</literal>ì 첫ë²ì§¸ë¡
+ í¸ì¶í ë <literal>Session</literal>ì´ ììëë¤. ê·¸ë í째ì ì°ë ëì ëí´ Hibernateì ìí´ ë°ì¸ë ëë¤.
+ í¸ëìì
ì´ ì¢
ë£ë ë ì»¤ë° ëê±°ë 롤백ëê³ , Hibernateë ëí ì°ë ëë¡ë¶í° <literal>Session</literal>ì
+ ë°ì¸ë í´ì ìí¤ê³ ë¹ì ì ìí´ ê·¸ê²ì ë«ëë¤. ë§ì¼ ë¹ì ì´ <literal>getCurrentSession()</literal>ì ë¤ì
+ í¸ì¶íë¤ë©´, ë¹ì ì ìë¡ì´ <literal>Session</literal>ì ì»ê³ ìë¡ì´ ìì
ë¨ì를 ììí ì ìë¤. ì´
+ <emphasis>thread-bound</emphasis> íë¡ê·¸ëë° ëª¨íì Hibernate를 ì¬ì©íë ê°ì¥ ëì¤ì ì¸ ë°©ë²ì´ë¤.
</para>
<para>
+ í¸ëìì
í¸ë¤ë§ê³¼ ê²½ê³êµ¬ë¶ì ëí ì¶ê° ì ë³´ë <xref linkend="transactions"/>ì ì´í´ë³´ë¼.
+ ì°ë¦¬ë ëí ìì ìì ìì ììì ì¤ë¥ ì²ë¦¬ì 롤백ì ìëµíë¤.
+ </para>
+
+ <para>
ì´ ì²« ë²ì§¸ 루í´ì ì¤íí기 ìí´ì ì°ë¦¬ë í¸ì¶ ê°ë¥í ëìì Ant ë¹ë íì¼ì ì¶ê°í´ì¼ íë¤:
</para>
<programlisting><![CDATA[<target name="run" depends="compile">
- <java classname="EventManager" classpathref="libraries">
+ <java fork="true" classname="events.EventManager" classpathref="libraries">
<classpath path="${targetdir}"/>
<arg value="${action}"/>
</java>
@@ -691,13 +693,14 @@
</para>
<programlisting><![CDATA[private List listEvents() {
- Session session = HibernateUtil.getCurrentSession();
- Transaction tx = session.beginTransaction();
+ Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+
+ session.beginTransaction();
+
List result = session.createQuery("from Event").list();
- tx.commit();
- session.close();
+ session.getTransaction().commit();
return result;
}]]></programlisting>
@@ -722,9 +725,9 @@
</listitem>
<listitem>
<para>
- ì´ì ë¹ì ì <literal>hibernate.cfg.xml</literal> íì¼ ììì íë¡í¼í°ë¥¼ 주ìì²ë¦¬í¨ì¼ë¡ì¨ hbm2ddlì
- ì¬ì©ë¶ê°ë¥íê² íë¼. ëê° ë¹ì ì ì§ìëë ë¨ì í
ì¤í
ìì ê·¸ê²ì ì¬ì© ê°ë¥íê² ë´ë²ë ¤ëì´ë ëì§ë§, ë ë¤ë¥¸
- hbm2ddlì ì¤íì ë¹ì ì´ ì ì¥íë 모ë ê²ì <emphasis>ëë¡</emphasis>ìí¬ ê²ì´ë¤ - <literal>create</literal>
+ ì´ì ë¹ì ì <literal>hibernate.cfg.xml</literal> íì¼ ììì ê·¸ íë¡í¼í°ë¥¼ 주ìì²ë¦¬í¨ì¼ë¡ì¨ hbm2ddlì
+ ì¬ì©ë¶ê°ë¥íê² íë¼. ëê° ë¹ì ì ì§ìëë ë¨ì í
ì¤í
ììë ê·¸ê²ì ì¬ì© ê°ë¥íê² ë´ë²ë ¤ëì´ë ëì§ë§, ë ë¤ë¥¸
+ hbm2ddlì ì¤íì ë¹ì ì´ ì ì¥íë 모ë ê²ì <emphasis>drop</emphasis>ìí¬ ê²ì´ë¤ - <literal>create</literal>
êµ¬ì± ì¤ì ì ì¤ì ë¡ "ì¤í¤ë§ë¡ë¶í° 모ë í
ì´ë¸ë¤ì ëë¡ìí¤ê³ ëì, SessionFactoryê° ë¹ëë ë 모ë í
ì´ë¸ë¤ì
ë¤ì ìì±ìí¤ë ê²"ì¼ë¡ ë³íëë¤.
</para>
@@ -755,35 +758,38 @@
ì°ë¦¬ë ì°ë¦¬ì ì´í리ì¼ì´ì
ì ì¬ëë¤ì ì¶ê°íê³ ê·¸ë¤ì´ ì°¸ì¬íë ì´ë²¤í¸ë¤ì 목ë¡ì ì ì¥í ê²ì´ë¤.
</para>
- <sect2 id="tutorial-associations-mappinguser">
+ <sect2 id="tutorial-associations-mappinguser" revision="1">
<title>Person í´ëì¤ ë§¤íí기</title>
<para>
í´ëì¤ì 첫 ë²ì§¸ ì¥ë©´ì ê°ë¨íë¤:
</para>
- <programlisting><![CDATA[public class Person {
+ <programlisting><![CDATA[package events;
+public class Person {
+
private Long id;
private int age;
private String firstname;
private String lastname;
- Person() {}
+ public Person() {}
// Accessor methods for all properties, private setter for 'id'
}]]></programlisting>
<para>
- <literal>Person.hbm.xml</literal>ë¡ ëª
ëª
ë ìë¡ì´ 매í íì¼ì ìì±ìì¼ë¼:
+ <literal>Person.hbm.xml</literal>ë¡ ëª
ëª
ëë ìë¡ì´ 매í íì¼ì ìì±ìì¼ë¼
+ (맨ìì DTD 참조를 ìì§ë§ë¼):
</para>
<programlisting><![CDATA[<hibernate-mapping>
- <class name="Person" table="PERSON">
+ <class name="events.Person" table="PERSON">
<id name="id" column="PERSON_ID">
- <generator class="increment"/>
+ <generator class="native"/>
</id>
<property name="age"/>
<property name="firstname"/>
@@ -796,9 +802,8 @@
ë§ì§ë§ì¼ë¡ ìë¡ì´ 매íì Hibernateì 구ì±ì ì¶ê°íë¼:
</para>
- <programlisting><![CDATA[ <mapping resource="Event.hbm.xml"/>
- <mapping resource="Person.hbm.xml"/>
-]]></programlisting>
+ <programlisting><![CDATA[<mapping resource="events/Event.hbm.xml"/>
+<mapping resource="events/Person.hbm.xml"/>]]></programlisting>
<para>
ì´ì ì°ë¦¬ë ì´ë¤ ë ê°ì ìí°í°ë¤ ì¬ì´ì í ê°ì ì°ê´ì ìì±ìí¬ ê²ì´ë¤. ëª
ë°±íê², ê°ì¸ë¤ì ì´ë²¤í¸ë¤ì
@@ -845,29 +850,6 @@
ì¬ì©íë¤:
</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>
- ì´ ì°ê´ì 매íìí¤ê¸° ì ì, ë¤ë¥¸ 측ì ëí´ ìê°í´ë³´ì. ëª
ë£íê² ì°ë¦¬ë ì´ê²ì ë¨ë°©í¥ì¼ë¡ ì ì§ìí¬ ì ìë¤. ëë
- ë§ì¼ ì°ë¦¬ê° ìë°©í¥ì¼ë¡ ë¤ë¹ê²ì´í¸íë ê²ì ê°ë¥íëë¡ íê³ ì ìí ê²½ì°ì, ì°ë¦¬ë <literal>Event</literal> ìì
- ë ë¤ë¥¸ ì½ë ì
ì ìì±ìí¬ ì ìë¤. ì를 ë¤ë©´.<literal>anEvent.getParticipants()</literal>. ì´ê²ì
- 기ë¥ì ì¸ ê´ì ìì íìì ì´ì§ ìë¤. ë¹ì ì í¹ì ì´ë²¤í¸ì ëí ì°¸ì¬ìë¤ì ê²ìí기 ìí´ íëì ëª
ìì ì¸ ì§ì를 íì
- ì¤íìí¬ ì ìë¤. ì´ê²ì ë¹ì ìê² ì¤ê³ìì ì íì¼ë¡ ë¨ê²¨ëì§ë§, ì´ ë
¼ììì ëª
ë£í´ì§ë ê²ì ê·¸ ì°ê´ì ë¤ì¤ì±ì´ë¤:
- ì 측ë¤ì´ "many" ê°ì ê°ì§ ê²½ì°, ì°ë¦¬ë ì´ê²ì <emphasis>many-to-many</emphasis> ì°ê´ì´ë¼ ëª
ëª
íë¤. ê·¸ë¬ë¯ë¡,
- ì°ë¦¬ë Hibernateì many-to-many 매íì ì¬ì©íë¤:
- </para>
-
<programlisting><![CDATA[<class name="events.Person" table="PERSON">
<id name="id" column="PERSON_ID">
<generator class="native"/>
@@ -882,6 +864,7 @@
</set>
</class>]]></programlisting>
+
<para>
Hibernateë 모ë ì¢
ë¥ì ì½ë ì
매íë¤, ê°ì¥ ê³µíµì ì¸ <literal><set></literal>ì ì§ìíë¤. many-to-many
ì°ê´ (ëë <emphasis>n:m</emphasis> ìí°í° ê´ê³)ì ê²½ì°, í ê°ì ì°ê´ í
ì´ë¸ì´ íìíë¤. ì´ í
ì´ë¸ ë´ì ìë ê°ê°ì
@@ -912,7 +895,7 @@
</sect2>
- <sect2 id="tutorial-associations-working" revision="1">
+ <sect2 id="tutorial-associations-working" revision="2">
<title>ì°ê´ë¤ì ìì
í기</title>
<para>
@@ -920,16 +903,16 @@
</para>
<programlisting><![CDATA[private void addPersonToEvent(Long personId, Long eventId) {
- Session session = HibernateUtil.getCurrentSession();
- Transaction tx = session.beginTransaction();
+ 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);
- tx.commit();
- HibernateUtil.closeSession();
+ session.getTransaction().commit();
}]]></programlisting>
<para>
@@ -940,7 +923,9 @@
íë¡í¼í°ë¥¼ ë³ê²½í¨ì¼ë¡ì¨ ê·¸ê²ì ìëí ì ìë¤. ê·¸ê²ë¤ì´ <emphasis>ìì(persistent)</emphasis> ìíì ìë ëì, ì¦ í¹ì Hibernate
<literal>Session</literal>ì ë°ì¸ëëì´ ìë ëì(ì를 ë¤ë©´. ê·¸ê²ë¤ì ìì
ë¨ì ìì ë°©ê¸ ë¡ëëìê±°ë ì ì¥ëìë¤),
Hibernateë ììì ë³ê²½ë¤ì 모ëí°ë§íê³ ì°ê¸° ì´ë©´ì ííë¡ SQLì ì¤íìí¨ë¤. ë©ëª¨ë¦¬ ìí를 ë°ì´í°ë² ì´ì¤ì ë기í ìí¤ë
- ê³¼ì ì ëê° ì¤ì§ ìì
ë¨ìì ëììì´ê³ , <emphasis>flushing</emphasis>ì´ë¼ ëª
ëª
ëë¤.
+ ê³¼ì ì ëê° ì¤ì§ ìì
ë¨ìì ëììì´ê³ , <emphasis>flushing</emphasis>ì´ë¼ ëª
ëª
ëë¤. ì°ë¦¬ì ì½ëìì, ìì
ë¨ìë
+ <literal>CurrentSessionContext</literal> í´ëì¤ì ëí <literal>thread</literal> êµ¬ì± ìµì
ì ìí´ ì ìë
+ ëë¡ - ë°ì´í°ë² ì´ì¤ í¸ëìì
ì 커ë°(ëë 롤백)ì¼ë¡ ëì´ëë¤.
</para>
<para>
@@ -949,41 +934,54 @@
<emphasis>detached</emphasis>ë¼ê³ ë¶ë¥¸ë¤). (ë§¤ì° ì¬ì¤ì ì´ì§ ìì) ì½ë ë´ìì ì´ê²ì ë¤ìê³¼ ê°ì ì ìë¤:
</para>
- <programlisting><![CDATA[ private void addPersonToEvent(Long personId, Long eventId) {
+ <programlisting><![CDATA[private void addPersonToEvent(Long personId, Long eventId) {
- Session session = HibernateUtil.getCurrentSession();
- Transaction tx = session.beginTransaction();
+ Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+ session.beginTransaction();
- Person aPerson = (Person) session.load(Person.class, personId);
- Event anEvent = (Event) session.load(Event.class, eventId);
+ 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
- tx.commit();
- HibernateUtil.closeSession();
+ Event anEvent = (Event) session.load(Event.class, eventId);
- aPerson.getEvents().add(anEvent); // aPerson is detached
+ session.getTransaction().commit();
- Session session2 = HibernateUtil.getCurrentSession();
- Transaction tx2 = session.beginTransaction();
+ // End of first unit of work
- session2.update(aPerson); // Reattachment of aPerson
+ aPerson.getEvents().add(anEvent); // aPerson (and its collection) is detached
- tx2.commit();
- HibernateUtil.closeSession();
- }
-]]></programlisting>
+ // 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>ì ëí í¸ì¶ì í ê°ì detached ê°ì²´ë¥¼ ììí ìí¤ê³ , ë¹ì ì ê·¸ê²ì´ ìë¡ì´ ìì
ë¨ìì
+ <literal>update</literal>ì ëí í¸ì¶ì í ê°ì detached ê°ì²´ë¥¼ ë¤ì ììí ìí¤ê³ , ë¹ì ì ê·¸ê²ì´ ìë¡ì´ ìì
ë¨ìì
ë°ì¸ëëë¤ê³ ë§í ì ìê³ , ë°ë¼ì detached ëìì ë¹ì ì´ ê·¸ê²ì ëí´ íí ììì ë³ê²½ë¤ì´ ë°ì´í°ë² ì´ì¤ì ì ì¥ë ì ìë¤.
+ ì´ê²ì ë¹ì ì´ ê·¸ ìí°í° ê°ì²´ì ì½ë ì
ì ëí´ ííë ììì ë³ê²½ë¤(ì¶ê°/ìì )를 í¬í¨íë¤.
</para>
<para>
- ë¬¼ë¡ , ì´ê²ì ì°ë¦¬ì íì¬ ìí©ìì ë§ì´ ì¬ì©ëì§ ìì§ë§, ê·¸ê²ì ë¹ì ì´ ë¹ì ìì ì ì´í리ì¼ì´ì
ìì¼ë¡ ì¤ê³í ì ìë ì¤ìí
- ê°ë
ì´ë¤. ì§ê¸ í ê°ì ìë¡ì´ ì¡ì
ì <literal>EventManager</literal>ì main ë©ìëì ì¶ê°íê³ ëª
ë ¹ ë¼ì¸ìì ê·¸ê²ì
+ ë¬¼ë¡ , ì°ë¦¬ì íì¬ ìí©ìì ì´ê²ì ë§ì´ ì¬ì©ëì§ ìì§ë§, ê·¸ê²ì ë¹ì ì´ ë¹ì ìì ì ì´í리ì¼ì´ì
ë´ë¡ ì¤ê³í ì ìë ì¤ìí
+ ê°ë
ì´ë¤. ì§ê¸ <literal>EventManager</literal>ì main ë©ìëì í ê°ì ìë¡ì´ ì¡ì
ì ì¶ê°íê³ ëª
ë ¹ ë¼ì¸ìì ê·¸ê²ì
í¸ì¶íì¬ ì´ ì°ìµì ìë£íë¼. ë§ì¼ ë¹ì ì´ íëª
ì ê°ì¸ê³¼ í ê°ì ì´ë²¤í¸ì ëí ìë³ìë¤ì íìë¡ í ê²½ì° - <literal>save()</literal>
- ë©ìëê° ê·¸ê²ì ë°íìí¨ë¤.
+ ë©ìëê° ê·¸ê²ì ë°íìí¨ë¤(ë¹ì ì ê·¸ ìë³ì를 ë°íìí¤ë ìì ë©ìëë¤ ì¤ ëªëªì ë³ê²½ìì¼ì¼ í ê²ì´ë¤):
</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>
ì´ê²ì ë ê°ì ëë±íê² ì¤ìí í´ëì¤ë¤, ë ê°ì ìí°í°ë¤ ì¬ì´ìì í ê°ì ì°ê´ì ê´í ìì ìë¤. ìì ì¸ê¸íë¯ì´, ì íì ì¸ ëª¨í ë´ìë
ë¤ë¥¸ í´ëì¤ë¤ê³¼ íì´ë¤ì´ ì¡´ì¬íëë°, ëê° "ë ì¤ìíë¤". ë¹ì ì ì´ë¯¸ <literal>int</literal> ëë <literal>String</literal>ê³¼
@@ -1065,9 +1063,29 @@
ê·¸ê²ì Javaìì ëì¼í ì½ëì´ë¤.
</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>
+ ì§ê¸ ì°ë¦¬ë ì½ë ì
ì ì´ê¸°í ìí¤ëë° <emphasis>fetch</emphasis> ì§ì를 ì¬ì©íì§ ììë¤.
+ ê·¸ë¬ë¯ë¡ ì½ë ì
ì getter ë©ìëì ëí í¸ì¶ì ì½ë ì
ì ì´ê¸°í ìí¤ê¸° ìí´ ì¶ê°ì ì¸ select를 í¸ë¦¬ê±° ìí¬
+ ê²ì´ì´ì, ì°ë¦¬ë ê·¸ê²ì ìì를 ì¶ê°ìí¬ ì ìë¤. SQL ë¡ê·¸ë¥¼ ê´ì°°íê³ ì´ê²ì eager fetchë¡ ìµì í ìí¤ë ¤ê³
+ ìëíë¼.
+ </para>
+
</sect2>
- <sect2 id="tutorial-associations-bidirectional">
+ <sect2 id="tutorial-associations-bidirectional" revision="1">
<title>Bi-directional associations</title>
<para>
@@ -1097,7 +1115,7 @@
<programlisting><![CDATA[<set name="participants" table="PERSON_EVENT" inverse="true">
<key column="EVENT_ID"/>
- <many-to-many column="PERSON_ID" class="Person"/>
+ <many-to-many column="PERSON_ID" class="events.Person"/>
</set>]]></programlisting>
<para>
@@ -1183,7 +1201,7 @@
ê·¸ê²ì ìë¡ì´ ì´ë²¤í¸ë¤ì ì
ë ¥í기 ìí HTML formì ì ê³µíë¤.
</para>
- <sect2 id="tutorial-webapp-servlet">
+ <sect2 id="tutorial-webapp-servlet" revision="1">
<title>기본 ìë¸ë¦¿ ìì±í기</title>
<para>
@@ -1198,18 +1216,10 @@
public class EventManagerServlet extends HttpServlet {
- private final SimpleDateFormat dateFormatter =
- new SimpleDateFormat("dd.MM.yyyy");
-
// Servlet code
}]]></programlisting>
<para>
- <literal>dateFormatter</literal>ë ëì¤ì 문ìì´ë¤ë¡ë¶í° ê·¸ë¦¬ê³ ë¬¸ìì´ë¡ <literal>Date</literal> ê°ì²´ë¤ì
- ë³ííëë° ëì¤ì ì¬ì©íê² ë ë구ì´ë¤. ìë¸ë¦¿ì 멤ë²ë¡ì ì¤ì§ í ê°ì formatter를 ê°ë ê²ì´ ë리ì ë§ë¤.
- </para>
-
- <para>
ìë¸ë¦¿ì HTTP <literal>GET</literal> ìì²ë¤ ë§ì ì²ë¦¬íë¯ë¡, ì°ë¦¬ê° 구ííë ë©ìëë <literal>doGet()</literal>ì´ë¤:
</para>
@@ -1217,6 +1227,8 @@
HttpServletResponse response)
throws ServletException, IOException {
+ SimpleDateFormat dateFormatter = new SimpleDateFormat("dd.MM.yyyy");
+
try {
// Begin unit of work
HibernateUtil.getSessionFactory()
@@ -1259,7 +1271,7 @@
</sect2>
- <sect2 id="tutorial-webapp-processing">
+ <sect2 id="tutorial-webapp-processing" revision="1">
<title>íë¡ì¸ì±ê³¼ ë ëë§</title>
<para>
@@ -1286,7 +1298,7 @@
// Print page
printEventForm(out);
-listEvents(out);
+listEvents(out, dateFormatter);
// Write HTML footer
out.println("</body></html>");
@@ -1315,7 +1327,8 @@
ì°ë ëì ê²°í©ë Hibernate <literal>Session</literal>ì ì¬ì©íë¤:
</para>
- <programlisting><![CDATA[private void listEvents(PrintWriter out) {
+ <programlisting><![CDATA[private void listEvents(PrintWriter out, SimpleDateFormat dateFormatter) {
+
List result = HibernateUtil.getSessionFactory()
.getCurrentSession().createCriteria(Event.class).list();
if (result.size() > 0) {
Modified: branches/Branch_3_2/Hibernate3/doc/reference/ko/styles/fopdf.xsl
===================================================================
--- branches/Branch_3_2/Hibernate3/doc/reference/ko/styles/fopdf.xsl 2006-12-08 08:01:55 UTC (rev 10955)
+++ branches/Branch_3_2/Hibernate3/doc/reference/ko/styles/fopdf.xsl 2006-12-08 08:07:27 UTC (rev 10956)
@@ -43,10 +43,10 @@
<fo:block>
<fo:external-graphic src="file:images/hibernate_logo_a.png"/>
</fo:block>
- <fo:block font-family="ê°ìì²´" font-size="24pt" padding-before="10mm">
+ <fo:block font-family="Bangwool" font-size="18pt" padding-before="10mm">
<xsl:value-of select="bookinfo/subtitle"/>
</fo:block>
- <fo:block font-family="ê°ìì²´" font-size="14pt" padding="10mm">
+ <fo:block font-family="Bangwool" font-size="12pt" padding="10mm">
ë²ì :
<xsl:value-of select="bookinfo/releaseinfo"/>
</fo:block>
@@ -92,7 +92,7 @@
<xsl:variable name="Version">
<xsl:choose>
<xsl:when test="//releaseinfo">
- <xsl:text>íì´ë²ë¤ì´í¸ </xsl:text>
+ <xsl:text>íì´ë²ë¤ì´í¸</xsl:text>
<xsl:value-of select="//releaseinfo"/>
</xsl:when>
<xsl:otherwise>
@@ -256,10 +256,10 @@
################################################### -->
<!-- Default Font size -->
- <xsl:param name="body.font.master">11</xsl:param>
+ <xsl:param name="body.font.master">10</xsl:param>
<!-- Line height in body text -->
- <xsl:param name="line-height">1.4</xsl:param>
+ <xsl:param name="line-height">1.6</xsl:param>
<!-- Monospaced fonts are smaller than regular text -->
<xsl:attribute-set name="monospace.properties">
@@ -311,7 +311,6 @@
<l:template name="sect4" text="the section called %t"/>
<l:template name="sect5" text="the section called %t"/>
</l:context>
-
</l:l10n>
</l:i18n>
@@ -516,9 +515,9 @@
<!-- Korean related Settings -->
<xsl:param name="hyphenate">false</xsl:param>
- <xsl:param name="body.font.family">Gulim</xsl:param>
- <!-- xsl:param name="monospace.font.family">ê°ìì²´</xsl:param-->
- <xsl:param name="title.font.family">ê°ìì²´</xsl:param>
+ <xsl:param name="body.font.family">Hankc</xsl:param>
+ <!-- xsl:param name="monospace.font.family">Bangwool</xsl:param-->
+ <xsl:param name="title.font.family">Bangwool</xsl:param>
<xsl:param name="saxon.character.representation" select="native"/>
<xsl:param name="callout.unicode" select="1"/>
<xsl:param name="callout.unicode.start.character" select="10102"/>
More information about the hibernate-commits
mailing list