|
Hibernate example source code file (tutorial.po)
This example Hibernate source code file (tutorial.po) is included in the DevDaily.com
"Java Source Code
Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.
The Hibernate tutorial.po source code
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2010-02-04T04:51:22\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Tag: title
#, no-c-format
msgid "Tutorial"
msgstr ""
#. Tag: para
#, no-c-format
msgid ""
"Intended for new users, this chapter provides an step-by-step introduction "
"to Hibernate, starting with a simple application using an in-memory "
"database. The tutorial is based on an earlier tutorial developed by Michael "
"Gloegl. All code is contained in the <filename>tutorials/web "
"directory of the project source."
msgstr ""
#. Tag: para
#, no-c-format
msgid ""
"This tutorial expects the user have knowledge of both Java and SQL. If you "
"have a limited knowledge of JAVA or SQL, it is advised that you start with a "
"good introduction to that technology prior to attempting to learn Hibernate."
msgstr ""
#. Tag: para
#, no-c-format
msgid ""
"The distribution contains another example application under the "
"<filename>tutorial/eg project source directory."
msgstr ""
#. Tag: title
#, no-c-format
msgid "Part 1 - The first Hibernate Application"
msgstr "파트 1 - 첫 번째 Hibernate 어플리케ì´ì…˜"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"For this example, we will set up a small database application that can store "
"events we want to attend and information about the host(s) of these events."
msgstr ""
"우리가 우리가 ìˆ˜ë°˜í•˜ê³ ìž ì›í•˜ëŠ” ì´ë²¤íŠ¸ë“¤ì„ ì €ìž¥í• ìˆ˜ 있는 ìž‘ì€ ë°ì´í„°ë² ì´ìŠ¤ "
"어플리케ì´ì…˜ê³¼ ì´ë“¤ ì´ë²¤íŠ¸ë“¤ì˜ í˜¸ìŠ¤íŠ¸ë“¤ì— ëŒ€í•œ ì •ë³´ë¥¼ 필요로 í•œë‹¤ê³ ê°€ì •í•˜ìž."
#. Tag: para
#, no-c-format
msgid ""
"Although you can use whatever database you feel comfortable using, we will "
"use <ulink url=\"http://hsqldb.org/\">HSQLDB (an in-memory, Java "
"database) to avoid describing installation/setup of any particular database "
"servers."
msgstr ""
#. Tag: title
#, no-c-format
msgid "Setup"
msgstr ""
#. Tag: para
#, no-c-format
msgid ""
"The first thing we need to do is to set up the development environment. We "
"will be using the \"standard layout\" advocated by alot of build tools such "
"as <ulink url=\"http://maven.org\">Maven. Maven, in particular, has "
"a good resource describing this <ulink url=\"http://maven.apache.org/guides/"
"introduction/introduction-to-the-standard-directory-layout.html\">layout</"
"ulink>. As this tutorial is to be a web application, we will be creating and "
"making use of <filename>src/main/java, src/main/"
"resources</filename> and src/main/webapp directories."
msgstr ""
#. Tag: para
#, no-c-format
msgid ""
"We will be using Maven in this tutorial, taking advantage of its transitive "
"dependency management capabilities as well as the ability of many IDEs to "
"automatically set up a project for us based on the maven descriptor."
msgstr ""
#. Tag: para
#, no-c-format
msgid ""
"It is not a requirement to use Maven. If you wish to use something else to "
"build this tutoial (such as Ant), the layout will remain the same. The only "
"change is that you will need to manually account for all the needed "
"dependencies. If you use something like <ulink url=\"http://ant.apache.org/"
"ivy/\">Ivy</ulink> providing transitive dependency management you would "
"still use the dependencies mentioned below. Otherwise, you'd need to grab "
"<emphasis>all dependencies, both explicit and transitive, and add "
"them to the project's classpath. If working from the Hibernate distribution "
"bundle, this would mean <filename>hibernate3.jar, all artifacts "
"in the <filename>lib/required directory and all files from either "
"the <filename>lib/bytecode/cglib or lib/bytecode/"
"javassist</filename> directory; additionally you will need both the servlet-"
"api jar and one of the slf4j logging backends."
msgstr ""
#. Tag: para
#, no-c-format
msgid ""
"Save this file as <filename>pom.xml in the project root directory."
msgstr ""
#. Tag: title
#, no-c-format
msgid "The first class"
msgstr "첫 번째 í´ëž˜ìŠ¤"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"Next, we create a class that represents the event we want to store in the "
"database; it is a simple JavaBean class with some properties:"
msgstr ""
"다ìŒìœ¼ë¡œ 우리는 우리가 ë°ì´í„°ë² ì´ìŠ¤ ì†ì— ì €ìž¥ì‹œí‚¤ê³ ìž ì›í•˜ëŠ” ì´ë²¤íŠ¸ë¥¼ 표현하"
"는 í•œ ê°œì˜ í´ëž˜ìŠ¤ë¥¼ ìƒì„±ì‹œí‚¨ë‹¤."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"This class uses standard JavaBean naming conventions for property getter and "
"setter methods, as well as private visibility for the fields. Although this "
"is the recommended design, it is not required. Hibernate can also access "
"fields directly, the benefit of accessor methods is robustness for "
"refactoring."
msgstr ""
"ë‹¹ì‹ ì€ ì´ í´ëž˜ìŠ¤ê°€ 프로í¼í‹° getter와 setter ë©”ì†Œë“œë“¤ì— ëŒ€í•œ 표준 ìžë°”빈즈 명"
"명법들 ë¿ë§Œ ì•„ë‹ˆë¼ í•„ë“œë“¤ì— ëŒ€í•œ private ê°€ì‹œì„±ì„ ì‚¬ìš©í•˜ê³ ìžˆìŒì„ ì•Œ 수 있"
"다. ì´ê²ƒì€ 권장ë˜ëŠ” 설계ì´ì§€ë§Œ, 필수ì ì´ì§€ëŠ” 않다. Hibernate는 ë˜í•œ í•„ë“œë“¤ì— "
"ì§ì ‘ ì ‘ê·¼í• ìˆ˜ 있으며, accessor ë©”ì†Œë“œë“¤ì˜ ì´ì ì€ ê°•ê±´í•œ ë¦¬íŒ©í† ë§ì´ë‹¤. 아규먼"
"트 없는 ìƒì„±ìžëŠ” reflectionì„ í†µí•´ ì´ í´ëž˜ìŠ¤ì˜ ê°ì²´ë¥¼ 초기화 시킬 필요가 있"
"다."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"The <literal>id property holds a unique identifier value for a "
"particular event. All persistent entity classes (there are less important "
"dependent classes as well) will need such an identifier property if we want "
"to use the full feature set of Hibernate. In fact, most applications, "
"especially web applications, need to distinguish objects by identifier, so "
"you should consider this a feature rather than a limitation. However, we "
"usually do not manipulate the identity of an object, hence the setter method "
"should be private. Only Hibernate will assign identifiers when an object is "
"saved. Hibernate can access public, private, and protected accessor methods, "
"as well as public, private and protected fields directly. The choice is up "
"to you and you can match it to fit your application design."
msgstr ""
"<literal>id 프로í¼í‹°ëŠ” 특별한 ì´ë²¤íŠ¸ë¥¼ 위한 ìœ ì¼ ì‹ë³„ìžë¥¼ ì†Œìœ í•œ"
"다. ëª¨ë“ ì˜ì† 엔티티 í´ëž˜ìŠ¤ë“¤ (보다 ëœ ì¤‘ìš”í•œ ì¢…ì† í´ëž˜ìŠ¤ë“¤ë„ 존재한다)ì€ ìš°"
"리가 Hibernateì˜ ì „ì²´ 특징 ì§‘í•©ì„ ì‚¬ìš©í•˜ê³ ìž ì›í• ê²½ìš°ì— ê·¸ëŸ° ì‹ë³„ìž í”„ë¡œí¼í‹°"
"를 필요로 í• ê²ƒì´ë‹¤. 사실 ëŒ€ë¶€ë¶„ì˜ ì–´í”Œë¦¬ì¼€ì´ì…˜ë“¤(특히 웹 어플리케ì´ì…˜ë“¤)ì€ "
"ì‹ë³„ìžì— ì˜í•´ ê°ì²´ë“¤ì„ êµ¬ë¶„ì§€ì„ í•„ìš”ê°€ 있어서, ë‹¹ì‹ ì€ ì´ê²ƒì„ ì–´ë–¤ ì œì•½ì ì´ë¼"
"기 보다는 í•˜ë‚˜ì˜ íŠ¹ì§•ìœ¼ë¡œ ê°„ì£¼í• ê²ƒì´ë‹¤. 하지만 우리는 대개 ê°ì²´ì˜ í•ë“±"
"(identity)를 처리하지 않으므로, setter 메소드는 privateì´ì–´ì•¼ 한다. ê°ì²´ê°€ ì €"
"장ë ë•Œ, Hibernate는 단지 ì‹ë³„ìžë“¤ì„ í• ë‹¹í• ê²ƒì´ë‹¤. ë‹¹ì‹ ì€ Hibernateê°€ "
"public, private, protected ì ‘ê·¼ìž ë©”ì†Œë“œë“¤ ë¿ë§Œ ì•„ë‹ˆë¼ (public, private, "
"protected) 필드들ì—ë„ ì§ì ‘ ì ‘ê·¼í• ìˆ˜ 있ìŒì„ ì•Œ 수 있다. ì„ íƒì€ ë‹¹ì‹ ì—게 ë‹¬ë ¤ "
"있으며, ë‹¹ì‹ ì€ ë‹¹ì‹ ì˜ ì–´í”Œë¦¬ì¼€ì´ì…˜ ì„¤ê³„ì— ì 합하ë„ë¡ ê·¸ê²ƒì„ ë¶€í•©ì‹œí‚¬ 수 있다."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"The no-argument constructor is a requirement for all persistent classes; "
"Hibernate has to create objects for you, using Java Reflection. The "
"constructor can be private, however package or public visibility is required "
"for runtime proxy generation and efficient data retrieval without bytecode "
"instrumentation."
msgstr ""
"아규먼트 없는 ìƒì„±ìžëŠ” ëª¨ë“ ì˜ì† í´ëž˜ìŠ¤ë“¤ì— 대한 필요조건ì´ë‹¤; Hibernate는 당"
"ì‹ ì„ ìœ„í•´ Java Reflectionì„ ì‚¬ìš©í•˜ì—¬ ê°ì²´ë“¤ì„ ìƒì„±ì‹œì¼œì•¼ 한다. 하지만 ìƒì„±ìž"
"는 private ì¼ ìˆ˜ ìžˆê³ , 패키지 ê°€ì‹œì„±ì€ ëŸ°íƒ€ìž„ 프ë½ì‹œ ìƒì„±ê³¼ ë°”ì´íŠ¸ì½”ë“œ 방편 "
"없는 효율ì ì¸ ë°ì´í„° ê²€ìƒ‰ì— í•„ìš”í•˜ë‹¤."
#. Tag: para
#, no-c-format
msgid ""
"Save this file to the <filename>src/main/java/org/hibernate/tutorial/domain (it is also included in the "
"<filename>hibernate3.jar, if using the distribution bundle)."
msgstr ""
"Hibernate DTD는 매우 ì •êµí•˜ë‹¤. ë‹¹ì‹ ì€ ë‹¹ì‹ ì˜ íŽ¸ì§‘ê¸° ë˜ëŠ” IDE ë‚´ì—ì„œ XML 매핑 "
"요소들과 ì†ì„±ë“¤ì— 대한 ìžë™ 완성 ê¸°ëŠ¥ì„ ìœ„í•´ ê·¸ê²ƒì„ ì‚¬ìš©í• ìˆ˜ 있다. ë‹¹ì‹ ì€ ë˜"
"í•œ ë‹¹ì‹ ì˜ í…스트 편집기 ë‚´ì— DTD 파ì¼ì„ ì—´ 수 ìžˆì„ ê²ƒì´ë‹¤ - ê·¸ê²ƒì€ ëª¨ë“ ìš”ì†Œ"
"들과 ì†ì„±ë“¤ì— 대한 ì „ì²´ìƒì„ ì–»ê³ ë””í´íŠ¸ë“¤ ë¿ë§Œ ì•„ë‹ˆë¼ ëª‡ëª‡ 주ì„ë“¤ì„ ë³´ëŠ” ê°€"
"장 ì†ì‰¬ìš´ 방법ì´ë‹¤. Hibernate는 웹으로부터 DTD 파ì¼ì„ 로드시키지 않지만, 먼"
"ì € 어플리케ì´ì…˜ì˜ classpath 경로로부터 ê·¸ê²ƒì„ ë¨¼ì € ë£©ì—…í• ê²ƒìž„ì„ ë…¸íŠ¸í•˜ë¼. "
"DTD 파ì¼ì€ <literal>hibernate3.jar ì†ì— í¬í•¨ë˜ì–´ ìžˆì„ ë¿ë§Œ ì•„ë‹ˆë¼ "
"Hibernate ë°°í¬ë³¸ì˜ <literal>src/ ë””ë ‰í† ë¦¬ ì†ì— í¬í•¨ë˜ì–´ 있다."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"We will omit the DTD declaration in future examples to shorten the code. It "
"is, of course, not optional."
msgstr ""
"우리는 코드를 간략화 시키기 위해 ìž¥ëž˜ì˜ ì˜ˆì œì—ì„œ DTD ì„ ì–¸ì„ ìƒëžµí• 것ì´ë‹¤. ê·¸"
"ê²ƒì€ ë¬¼ë¡ ì˜µì…˜ì´ ì•„ë‹ˆë‹¤."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"Between the two <literal>hibernate-mapping tags, include a "
"<literal>class element. All persistent entity classes (again, "
"there might be dependent classes later on, which are not first-class "
"entities) need a mapping to a table in the SQL database:"
msgstr ""
"ë‘ ê°œì˜ <literal>hibernate-mapping 태그들 사ì´ì— class to the table EVENTS. Each "
"instance is now represented by a row in that table. Now we can continue by "
"mapping the unique identifier property to the tables primary key. As we do "
"not want to care about handling this identifier, we configure Hibernate's "
"identifier generation strategy for a surrogate primary key column:"
msgstr ""
"지금까지 우리는 ê·¸ í…Œì´ë¸” ë‚´ì— ìžˆëŠ” í•œ í–‰ì— ì˜í•´ í‘œí˜„ëœ ê°ê°ì˜ ì¸ìŠ¤í„´ìŠ¤ì¸, í´"
"ëž˜ìŠ¤ì˜ ê°ì²´ë¥¼ ì˜ì†í™” ì‹œí‚¤ê³ ë¡œë“œì‹œí‚¤ëŠ” ë°©ë²•ì„ Hibernateì—게 ì•Œë ¤ì£¼ì—ˆë‹¤. ì´ì œ "
"ìš°ë¦°ëŠ í…Œì´ë¸” 프ë¼ì´ë¨¸ë¦¬ í‚¤ì— ëŒ€í•œ ìœ ì¼ ì‹ë³„ìž í”„ë¡œí¼í‹° ë§¤í•‘ì„ ê³„ì† í–‰í•œë‹¤. "
"게다가 우리는 ì´ ì‹ë³„ìžë¥¼ 처리하는 ê²ƒì— ì£¼ì˜ë¥¼ 기울ì´ê³ ìž ì›í•˜ì§€ 않으므로, ìš°"
"리는 대용 키 프ë¼ì´ë¨¸ë¦¬ 키 ì»¬ëŸ¼ì— ëŒ€í•œ Hibernateì˜ ì‹ë³„ìž ìƒì„± ë°©ë„를 구성한"
"다:"
#. Tag: para
#, no-c-format
msgid ""
"The <literal>id element is the declaration of the identifier "
"property. The <literal>name=\"id\" mapping attribute declares the "
"name of the JavaBean property and tells Hibernate to use the <literal>getId()"
"</literal> and setId() methods to access the property. "
"The column attribute tells Hibernate which column of the <literal>EVENTS element specifies the identifier "
"generation strategy (aka how are identifier values generated?). In this case "
"we choose <literal>native, which offers a level of portability "
"depending on the configured database dialect. Hibernate supports database "
"generated, globally unique, as well as application assigned, identifiers. "
"Identifier value generation is also one of Hibernate's many extension points "
"and you can plugin in your own strategy."
msgstr ""
#. Tag: para
#, no-c-format
msgid ""
"<literal>native is no longer consider the best strategy in terms "
"of portability. for further discussion, see <xref linkend=\"portability-idgen"
"\" />"
msgstr ""
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"Lastly, we need to tell Hibernate about the remaining entity class "
"properties. By default, no properties of the class are considered persistent:"
msgstr ""
"마지막으로 우리는 매핑 íŒŒì¼ ì†ì—ì„œ í´ëž˜ìŠ¤ì˜ ì˜ì† 프로í¼í‹°ë“¤ì— 대한 ì„ ì–¸ë“¤ì„ "
"í¬í•¨í•œë‹¤. ë””í´íŠ¸ë¡œ, í´ëž˜ìŠ¤ì˜ 프로í¼í‹°ë“¤ì€ ì˜ì†ì ì¸ ê²ƒìœ¼ë¡œ 간주ë˜ì§€ 않는다:"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"Similar to the <literal>id element, the name "
"attribute of the <literal>property element tells Hibernate which "
"getter and setter methods to use. In this case, Hibernate will search for "
"<literal>getDate(), setDate(), getTitle"
"()</literal> and setTitle() methods."
msgstr ""
"<literal>id ìš”ì†Œì˜ ê²½ìš°ì²˜ëŸ¼, property ìš”ì†Œì˜ "
"<literal>name ì†ì„±ì€ ì‚¬ìš©í• getter ë° setter ë©”ì†Œë“œë“¤ì´ ì–´ëŠ ê²ƒì¸ì§€"
"를 Hibernateì—게 ì•Œë ¤ì¤€ë‹¤. ë”°ë¼ì„œ ì´ ê²½ìš°ì— Hibernate는 <literal>getDate()/"
"setDate()</literal> ë¿ë§Œ ì•„ë‹ˆë¼ getTitle()/setTitle()ì„ ì°¾"
"게 ë 것ì´ë‹¤."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"Why does the <literal>date property mapping include the "
"<literal>column attribute, but the title does "
"not? Without the <literal>column attribute, Hibernate by default "
"uses the property name as the column name. This works for <literal>titledate is a reserved keyword in most "
"databases so you will need to map it to a different name."
msgstr ""
"<literal>date 프로í¼í‹° ë§¤í•‘ì€ column ì†ì„±ì„ í¬í•¨"
"하는ë°, 왜 <literal>titleì€ column ì†ì„±ì„ í¬í•¨í•˜"
"지 않는가? <literal>column ì†ì„±ì´ ì—†ì„ ê²½ìš° Hibernate는 ë””í´íŠ¸ë¡œ 컬"
"럼 ì´ë¦„으로서 프로í¼í‹° ì´ë¦„ì„ ì‚¬ìš©í•œë‹¤. ì´ê²ƒì€ ì— ëŒ€í•´ 잘 ë™ìž‘한다. 하지만 "
"<literal>date는 ëŒ€ë¶€ë¶„ì˜ ë°ì´í„°ë² ì´ìŠ¤ì—ì„œ ì˜ˆì•½ëœ í‚¤ì›Œë“œì´ì–´ì„œ, 우리"
"는 ê·¸ê²ƒì„ ë‹¤ë¥¸ ì´ë¦„으로 ë” ì¢‹ê²Œ 매핑 시킨다."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"The <literal>title mapping also lacks a type "
"attribute. The types declared and used in the mapping files are not Java "
"data types; they are not SQL database types either. These types are called "
"<emphasis>Hibernate mapping types, converters which can translate "
"from Java to SQL data types and vice versa. Again, Hibernate will try to "
"determine the correct conversion and mapping type itself if the "
"<literal>type attribute is not present in the mapping. In some "
"cases this automatic detection using Reflection on the Java class might not "
"have the default you expect or need. This is the case with the "
"<literal>date property. Hibernate cannot know if the property, "
"which is of <literal>java.util.Date, should map to a SQL "
"<literal>date, timestamp, or time converter."
msgstr ""
"ë‹¤ìŒ í¥ë¯¸ë¡œìš´ ì ì€ <literal>title 매핑 ë˜í•œ type 프로í¼í‹°ë¥¼ 가진 경우"
"ì´ë‹¤. Hibernate는 ê·¸ 프로í¼í‹°ê°€ SQL <literal>date 컬럼, "
"<literal>timestamp 컬럼 ë˜ëŠ” time 컬럼 중 ì–´ëŠ "
"것으로 매핑ë˜ì–´ì•¼ 하는지를 ì•Œ 수가 없다. 우리는 <literal>timestamp "
"컨버터를 가진 프로í¼í‹°ë¥¼ ë§¤í•‘í•¨ìœ¼ë¡œì¨ ì „ì²´ ë‚ ì§œì™€ 시간 ì •ë³´ë¥¼ ë³´ì¡´í•˜ê³ ì‹¶ë‹¤"
"ê³ ì„ ì–¸í•œë‹¤."
#. Tag: para
#, no-c-format
msgid ""
"Hibernate makes this mapping type determination using reflection when the "
"mapping files are processed. This can take time and resources, so if startup "
"performance is important you should consider explicitly defining the type to "
"use."
msgstr ""
#. Tag: para
#, no-c-format
msgid ""
"Save this mapping file as <filename>src/main/resources/org/hibernate/"
"tutorial/domain/Event.hbm.xml</filename>."
msgstr ""
#. Tag: title
#, no-c-format
msgid "Hibernate configuration"
msgstr "Hibernate 구성"
#. Tag: para
#, no-c-format
msgid ""
"At this point, you should have the persistent class and its mapping file in "
"place. It is now time to configure Hibernate. First let's set up HSQLDB to "
"run in \"server mode\""
msgstr ""
#. Tag: para
#, no-c-format
msgid "We do this do that the data remains between runs."
msgstr ""
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"We will utilize the Maven exec plugin to launch the HSQLDB server by "
"running: <command> mvn exec:java -Dexec.mainClass=\"org.hsqldb.Server\" -"
"Dexec.args=\"-database.0 file:target/data/tutorial\"</command> You will see "
"it start up and bind to a TCP/IP socket; this is where our application will "
"connect later. If you want to start with a fresh database during this "
"tutorial, shutdown HSQLDB, delete all files in the <filename>target/dataë¡œ ëª…ëª…ëœ ë””ë ‰í† ë¦¬ë¥¼ ìƒì„±ì‹œì¼œ"
"ë¼ - ì´ ë””ë ‰í† ë¦¬ëŠ” HSQL DBê°€ ê·¸ê²ƒì˜ ë°ì´í„° 파ì¼ë“¤ì„ ì €ìž¥í•˜ê²Œ ë 장소ì´ë‹¤. ì´"
"ì œ ì´ ë°ì´í„° ë””ë ‰í† ë¦¬ì—ì„œ <literal>java -classpath ../lib/hsqldb.jar org."
"hsqldb.Server</literal>를 실행시켜서 ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 시작시켜ë¼. ë‹¹ì‹ ì€ ê·¸ê²ƒ"
"ì´ ì‹œìž‘ë˜ê³ ì´ê²ƒì€ ìš°ë¦¬ì˜ ì–´í”Œë¦¬ì¼€ì´ì…˜ì´ ë‚˜ì¤‘ì— ì—°ê²°í•˜ê²Œ ë 장소ì¸, í•˜ë‚˜ì˜ "
"TCP/IP ì†Œì¼“ì— ë°”ì¸ë“œ ë˜ëŠ” ê²ƒì„ ë³¼ 수 있다. ë§Œì¼ ì´ íŠœí† ë¦¬ì–¼ ë™ì•ˆì— ë‹¹ì‹ ì´ ìƒˆ "
"ë°ì´í„°ë² ì´ìŠ¤ë¡œ ì‹œìž‘í•˜ê³ ìž ì›í• 경우, HSQL DB를 ì…§ë‹¤ìš´ì‹œí‚¤ê³ (왼ë„ìš°ì—ì„œ "
"<literal>CTRL + C를 눌러ë¼), data/ ë””ë ‰í† ë¦¬ ë‚´"
"ì— ìžˆëŠ” ëª¨ë“ íŒŒì¼ë“¤ì„ ì‚ì œí•˜ê³ ë‹¤ì‹œ HSQL DB를 시작하ë¼."
#. Tag: para
#, no-c-format
msgid ""
"Hibernate will be connecting to the database on behalf of your application, "
"so it needs to know how to obtain connections. For this tutorial we will be "
"using a standalone connection pool (as opposed to a <interfacename>javax.sql."
"DataSource</interfacename>). Hibernate comes with support for two third-"
"party open source JDBC connection pools: <ulink url=\"https://sourceforge."
"net/projects/c3p0\">c3p0</ulink> and . However, we will be using the Hibernate built-in "
"connection pool for this tutorial."
msgstr ""
#. Tag: para
#, no-c-format
msgid ""
"The built-in Hibernate connection pool is in no way intended for production "
"use. It lacks several features found on any decent connection pool."
msgstr ""
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"For Hibernate's configuration, we can use a simple <literal>hibernate."
"properties</literal> file, a more sophisticated hibernate.cfg.xmlhibernate.cfg."
"xml</literal> 파ì¼, ë˜ëŠ” 심지어 ì™„ì „í•œ 프로그램 ìƒì˜ ì„¤ì •ì„ ì‚¬ìš©í• ìˆ˜ 있다. "
"ëŒ€ë¶€ë¶„ì˜ ì‚¬ìš©ìžë“¤ì€ XMl 구성 파ì¼ì„ ì„ í˜¸í•œë‹¤:"
#. Tag: para
#, no-c-format
msgid "Notice that this configuration file specifies a different DTD"
msgstr ""
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"You configure Hibernate's <literal>SessionFactory. SessionFactory "
"is a global factory responsible for a particular database. If you have "
"several databases, for easier startup you should use several <literal><"
"session-factory></literal> configurations in several configuration files."
msgstr ""
"ì´ XML êµ¬ì„±ì´ ë‹¤ë¥¸ DTD를 ì‚¬ìš©í•¨ì„ ë…¸íŠ¸í•˜ë¼. 우리는 Hibernateì˜ "
"<literal>SessionFactory -íŠ¹ì • ë°ì´í„°ë² ì´ìŠ¤ì— 대해 ì±…ìž„ì´ ìžˆëŠ” ì „ì— "
"íŒ©í† ë¦¬-를 구성한다. ë§Œì¼ ë‹¹ì‹ ì´ ì—¬ëŸ¬ ë°ì´í„°ë² ì´ìŠ¤ë“¤ì„ ê°–ê³ ìžˆë‹¤ë©´, (보다 쉬"
"ìš´ ì‹œìž‘ì„ ìœ„í•´) 몇 ê°œì˜ êµ¬ì„± 파ì¼ë“¤ ì†ì— 여러 ê°œì˜ <literal><session-"
"factory></literal> êµ¬ì„±ë“¤ì„ ì‚¬ìš©í•˜ë¼."
#. Tag: para
#, no-c-format
msgid ""
"The first four <literal>property elements contain the necessary "
"configuration for the JDBC connection. The dialect <literal>property "
"option turns on automatic generation of database schemas directly into the "
"database. This can also be turned off by removing the configuration option, "
"or redirected to a file with the help of the <literal>SchemaExport "
"Ant task. Finally, add the mapping file(s) for persistent classes to the "
"configuration."
msgstr ""
"ì²˜ìŒ ë„¤ ê°œì˜ <literal>property ìš”ì†Œë“¤ì€ JDBC ì»¤ë„¥ì…˜ì„ ìœ„í•œ 필수 구"
"ì„±ì„ í¬í•¨í•œë‹¤. dialect <literal>property 요소는 Hibernateê°€ ë°œìƒì‹œ"
"키는 특별한 SQL ì´í˜•(ç•°å½¢)ì„ ì§€ì •í•œë‹¤. <literal>hbm2ddl.auto 옵션"
"ì€ -ì§ì ‘ ë°ì´í„°ë² ì´ìŠ¤ ì†ìœ¼ë¡œ- ë°ì´í„°ë² ì´ìŠ¤ ìŠ¤í‚¤ë§ˆì˜ ìžë™ì ì¸ ìƒì„±ì„ 활성화 ì‹œ"
"킨다. ë¬¼ë¡ ì´ê²ƒì€ (config ì˜µì…˜ì„ ì œê±°í•¨ìœ¼ë¡œì¨) 비활성화 시킬 수 있거나 "
"<literal>SchemaExport Ant 태스í¬ì˜ ë„움으로 파ì¼ë¡œ 리다ì´ë ‰íŠ¸ ë "
"수 있다. 마지막으로 우리는 ì˜ì† í´ëž˜ìŠ¤ë“¤ì„ 위한 매핑 파ì¼(들)ì„ ì¶”ê°€ì‹œí‚¨ë‹¤."
#. Tag: para
#, no-c-format
msgid ""
"Save this file as <filename>hibernate.cfg.xml into the "
"<filename>src/main/resources directory."
msgstr ""
#. Tag: title
#, fuzzy, no-c-format
msgid "Building with Maven"
msgstr "Ant로 빌드하기"
#. Tag: para
#, no-c-format
msgid ""
"We will now build the tutorial with Maven. You will need to have Maven "
"installed; it is available from the <ulink url=\"http://maven.apache.org/"
"download.html\">Maven download page</ulink>. Maven will read the /"
"pom.xml</filename> file we created earlier and know how to perform some "
"basic project tasks. First, lets run the <literal>compile goal to "
"make sure we can compile everything so far:"
msgstr ""
#. Tag: title
#, no-c-format
msgid "Startup and helpers"
msgstr "시작과 helper들"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"It is time to load and store some <literal>Event objects, but "
"first you have to complete the setup with some infrastructure code. You have "
"to startup Hibernate by building a global <interfacename>org.hibernate."
"SessionFactory</interfacename> object and storing it somewhere for easy "
"access in application code. A <interfacename>org.hibernate.SessionFactoryorg.hibernate.Sessionorg.hibernate.Session is a thread-safe "
"global object that is instantiated once."
msgstr ""
"몇몇 <literal>Event ê°ì²´ë“¤ì„ ë¡œë“œì‹œí‚¤ê³ ì €ìž¥í• ì°¨ë¡€ì´ì§€ë§Œ, ë¨¼ì € ìš°"
"리는 ì–´ë–¤ ì¸í”„ë¼ìŠ¤íŠ¸ëŸì²˜ 코드로 ì„¤ì •ì„ ì™„ë£Œí•´ì•¼ 한다. 우리는 Hibernate를 시작"
"해야 한다. ì´ ì‹œìž‘ì€ ì „ì— <literal>SessionFactory ê°ì²´ë¥¼ ë¹Œë“œí•˜ê³ "
"어플리케ì´ì…˜ ë‚´ì—ì„œ ìš©ì´í•œ ì ‘ê·¼ì„ ìœ„í•´ ê·¸ê²ƒì„ ì–´ë–¤ ê³³ì— ì €ìž¥í•˜ëŠ” ê²ƒì„ í¬í•¨í•œ"
"다. <literal>SessionFactory는 새로운 Session들"
"ì„ ì—´ 수 있다. <literal>Sessionì€ ìž‘ì—…ì˜ ë‹¨ì¼-ì“°ë ˆë“œ 단위를 표현하"
"ë©°, <literal>SessionFactory는 한번 초기화 ë˜ëŠ” í•˜ë‚˜ì˜ thread-safe "
"ì „ì— ê°ì²´ì´ë‹¤."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"We will create a <literal>HibernateUtil helper class that takes "
"care of startup and makes accessing the <interfacename>org.hibernate."
"SessionFactory</interfacename> more convenient."
msgstr ""
"우리는 ì‹œìž‘ì„ ì²˜ë¦¬í•˜ê³ <literal>Session 처리를 편리하게 해주는 "
"<literal>HibernateUtil helper í´ëž˜ìŠ¤ë¥¼ ìƒì„±ì‹œí‚¬ 것ì´ë‹¤. ì´ë¥¸ë°” "
"<emphasis>ThreadLocal Session íŒ¨í„´ì´ ì—¬ê¸°ì„œ ìœ ìš©í•˜ë©°, 우리는 현재"
"ì˜ ìž‘ì—… 단위를 í˜„ìž¬ì˜ ì“°ë ˆë“œì™€ 연관지워 ìœ ì§€í•œë‹¤. êµ¬í˜„ì„ ì‚´íŽ´ë³´ìž:"
#. Tag: para
#, no-c-format
msgid ""
"Save this code as <filename>src/main/java/org/hibernate/tutorial/util/"
"HibernateUtil.java</filename>"
msgstr ""
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"This class not only produces the global <interfacename>org.hibernate."
"SessionFactory</interfacename> reference in its static initializer; it also "
"hides the fact that it uses a static singleton. We might just as well have "
"looked up the <interfacename>org.hibernate.SessionFactory "
"reference from JNDI in an application server or any other location for that "
"matter."
msgstr ""
"ì´ í´ëž˜ìŠ¤ëŠ” (í´ëž˜ìŠ¤ê°€ 로드ë ë•Œ JVMì— ì˜í•´ 한번 호출ë˜ëŠ”) ê·¸ê²ƒì˜ static 초기"
"ìž ë‚´ì— ì „ì— <literal>SessionFactory를 ì‚°ì¶œí• ë¿ë§Œ ì•„ë‹ˆë¼ ë˜í•œ 현"
"재 ì“°ë ˆë“œì— ëŒ€í•œ <literal>Sessionì„ ì†Œìœ í•˜ëŠ” ThreadLocalHibernateUtil.getCurrentSession() "
"a name in your configuration, Hibernate will try to bind it to JNDI under "
"that name after it has been built. Another, better option is to use a JMX "
"deployment and let the JMX-capable container instantiate and bind a "
"<literal>HibernateService to JNDI. Such advanced options are "
"discussed later."
msgstr ""
"ë‹¹ì‹ ì´ ì´ helper를 사용하기 ì „ì— thread-local ë³€ìˆ˜ë“¤ì— ëŒ€í•œ Java ê°œë…ì„ í™•ì‹¤"
"히 ì´í•´í•˜ë„ë¡ í•˜ë¼. 보다 ê°•ë ¥í•œ <literal>HibernateUtil helper는 "
"http://caveatemptor.hibernate.org/ì— ìžˆëŠ” <literal>CaveatEmptor ë¿"
"만 ì•„ë‹ˆë¼ \"Java Persistence with Hibernate\" ì±…ì—ì„œ ì°¾ì„ ìˆ˜ 있다. ë‹¹ì‹ ì´ "
"J2EE 어플리케ì´ì…˜ 서버 ë‚´ì— Hibernate를 ë°°ì¹˜í• ê²½ìš°ì— ì´ í´ëž˜ìŠ¤ëŠ” 필수ì ì´ì§€ "
"않다: í•˜ë‚˜ì˜ <literal>Sessionì€ í˜„ìž¬ì˜ JTA 트랜ìžì…˜ì— ìžë™ì 으로 ë°”"
"ì¸ë“œ ë 것ì´ê³ ë‹¹ì‹ ì€ JNDI를 통해 <literal>SessionFactory를 ë£©ì—…í• "
"수 있다. ë§Œì¼ ë‹¹ì‹ ì´ JBoss AS를 ì‚¬ìš©í• ê²½ìš°, Hibernate는 관리ë˜ëŠ” 시스템 서비"
"스로서 배치ë 수 ìžˆê³ <literal>SessionFactory를 JNDI ì´ë¦„ì— ìžë™ì "
"으로 ë°”ì¸ë“œì‹œí‚¬ 수 ìžˆì„ ê²ƒì´ë‹¤."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"You now need to configure a logging system. Hibernate uses commons logging "
"and provides two choices: Log4j and JDK 1.4 logging. Most developers prefer "
"Log4j: copy <literal>log4j.properties from the Hibernate "
"distribution in the <literal>etc/ directory to your srchibernate.cfg.xml. If you "
"prefer to have more verbose output than that provided in the example "
"configuration, you can change the settings. By default, only the Hibernate "
"startup message is shown on stdout."
msgstr ""
"ì´ê²ƒì€ ë¬¸ì œ ì—†ì´ ë‹¤ì‹œ ì»´íŒŒì¼ ë 것ì´ë‹¤. 우리는 마지막으로 로깅 ì‹œìŠ¤í…œì„ êµ¬ì„±"
"í• í•„ìš”ê°€ 있다 - Hibernate는 commons logging를 ì‚¬ìš©í•˜ê³ Log4j와 JDK 1.4 사ì´"
"ì˜ ì„ íƒì€ ë‹¹ì‹ ì˜ ëª«ìœ¼ë¡œ 남겨둔다. ëŒ€ë¶€ë¶„ì˜ ê°œë°œìžë“¤ì€ Log4j를 ì„ í˜¸í•œë‹¤: "
"Hibernate ë°°í¬ë³¸ì— 있는 <literal>log4j.properties(ì´ê²ƒì€ ë””ë ‰í† ë¦¬ "
"<literal>etc/ ë‚´ì— ìžˆë‹¤)를 src ë””ë ‰í† ë¦¬ë¡œ 복사하"
"ê³ , 다ìŒìœ¼ë¡œ <literal>hibernate.cfg.xmlì„ ë³µì‚¬í•˜ë¼. ì˜ˆì œ êµ¬ì„±ì„ ì‚´"
"íŽ´ë³´ê³ ë‹¹ì‹ ì´ ë” ë§Žì€ verbose ì¶œë ¥ì„ ì›í• ê²½ìš°ì— ì„¤ì •ë“¤ì„ ë³€ê²½í•˜ë¼. ë””í´íŠ¸ë¡œ "
"Hibernate 시작 메시지는 stdout ìƒì— 보여진다."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"The tutorial infrastructure is complete and you are now ready to do some "
"real work with Hibernate."
msgstr ""
"íŠœí† ë¦¬ì–¼ ì¸í”„ë¼ìŠ¤íŠ¸ëŸì²˜ëŠ” ì™„ì „í•˜ë‹¤ - ê·¸ë¦¬ê³ ìš°ë¦¬ëŠ” Hibernateë¡œ ì–´ë–¤ ì‹¤ì œ ìž‘ì—…"
"ì„ í–‰í• ì¤€ë¹„ê°€ ë˜ì–´ 있다."
#. Tag: title
#, no-c-format
msgid "Loading and storing objects"
msgstr "ê°ì²´ 로딩과 ê°ì²´ ì €ìž¥"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"We are now ready to start doing some real worjk with Hibernate. Let's start "
"by writing an <literal>EventManager class with a main() 메소드를 가진 í•œ ê°œì˜ "
"<literal>EventManager í´ëž˜ìŠ¤ë¥¼ 작성한다:"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"In <literal>createAndStoreEvent() we created a new Event on the "
"database."
msgstr ""
"우리는 í•œ ê°œì˜ ìƒˆë¡œìš´ <literal>Event ê°ì²´ë¥¼ ìƒì„±ì‹œí‚¤ê³ , ê·¸ê²ƒì„ "
"Hibernateì—게 건네준다. Hibernate는 ì´ì œ SQLì„ ì²˜ë¦¬í•˜ê³ ë°ì´í„°ë² ì´ìŠ¤ ìƒì—ì„œ "
"<literal>INSERTë“¤ì„ ì‹¤í–‰ì‹œí‚¨ë‹¤. -우리가 ì´ê²ƒì„ 실행하기 ì „ì— ì½”ë“œ"
"를 처리하는- <literal>Sessionê³¼ Transactionì„ ì‚´"
"펴보ìž."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"A <interface>org.hibernate.Session is designed to represent a "
"single unit of work (a single atmoic piece of work to be performed). For now "
"we will keep things simple and assume a one-to-one granularity between a "
"Hibernate <interface>org.hibernate.Session and a database "
"transaction. To shield our code from the actual underlying transaction "
"system we use the Hibernate <interfacename>org.hibernate.Transactionì€ í•œ ê°œì˜ ìž‘ì—… 단위ì´ë‹¤. 지금부터 우리는 ë‹¨ìˆ¨í•¨ì„ "
"ìœ ì§€í• ê²ƒì´ê³ Hibernate <literal>Sessionê³¼ ë°ì´í„°ë² ì´ìŠ¤ 트랜ìžì…˜ 사"
"ì´ì˜ ì¼-대-ì¼ ê³¼ë¦½í˜•(granularity)ì„ ê°€ì •í• ê²ƒì´ë‹¤. ì‹¤ì œ 기반 트랜ìžì…˜ 시스템"
"으로부터 ìš°ë¦¬ì˜ ì†ŒìŠ¤ë¥¼ ì€í시키기 위해(ì´ ê²½ìš° 통ìƒì˜ JDBCì´ì§€ë§Œ, ê·¸ê²ƒì€ ë˜"
"í•œ JTAì—ë„ ì‹¤í–‰ëœë‹¤) 우리는 Hibernate <literal>Session ìƒì—ì„œ ì´ìš© "
"가능한 <literal>Transaction API를 사용한다."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"What does <literal>sessionFactory.getCurrentSession() do? First, "
"you can call it as many times and anywhere you like once you get hold of "
"your <interfacename>org.hibernate.SessionFactory. The "
"<literal>getCurrentSession() method always returns the \"current\" "
"unit of work. Remember that we switched the configuration option for this "
"mechanism to \"thread\" in our <filename>src/main/resources/hibernate.cfg."
"xml</filename>? Due to that setting, the context of a current unit of work "
"is bound to the current Java thread that executes the application."
msgstr ""
"<literal>sessionFactory.getCurrentSession()ì€ ë¬´ì—‡ì„ í–‰í•˜ëŠ”ê°€? 먼"
"ì € ë‹¹ì‹ ì€ ë‹¹ì‹ ì´ (<literal>HibernateUtil ë•ë¶„ì— ì‰½ê²Œ) "
"<literal>SessionFactoryì„ ë‹¹ì‹ ì´ ì†Œìœ í•˜ê³ ìžˆë‹¤ë©´, ì›í•˜ëŠ” ë§Œí¼ ì–´ë””"
"ì„œë“ ì—¬ëŸ¬ë²ˆ ê·¸ê²ƒì„ í˜¸ì¶œí• ìˆ˜ 있다. <literal>getCurrentSession() ë©”"
"소드는 í•ìƒ \"현재ì˜\" ìž‘ì—… 단위를 반환한다. 우리가 <literal>hibernate.cfg."
"xml</literal> ë‚´ì—ì„œ ì´ ë§¤ì»¤ë‹ˆì¦˜ì— ëŒ€í•œ 구성 ì˜µì…˜ì„ \"thread\"ë¡œ ì „í™˜ì‹œì¼°ìŒ"
"ì„ ê¸°ì–µí•˜ëŠ”ê°€? 그러므로 ìž‘ì—…ì˜ í˜„ìž¬ 단위는 ìš°ë¦¬ì˜ ì–´í”Œë¦¬ì¼€ì´ì…˜ì„ 실행시키는 "
"현재 ìžë°” ì“°ë ˆë“œì— ë¬¶ì—¬ 있다. 하지만 ì´ê²ƒì€ ì „ì²´ ê·¸ë¦¼ì´ ì•„ë‹ˆë©°, ë‹¹ì‹ ì€ ë˜í•œ "
"scope(ì˜ì—), ìž‘ì—… 단위가 시작ë 때와 ìž‘ì—… 단위가 종료ë 때를 ê³ ë ¤í•´ì•¼ 한다."
#. Tag: para
#, no-c-format
msgid ""
"Hibernate offers three methods of current session tracking. The \"thread\" "
"based method is not intended for production use; it is merely useful for "
"prototyping and tutorials such as this one. Current session tracking is "
"discussed in more detail later on."
msgstr ""
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"A <interface>org.hibernate.Session begins when the first call to "
"<literal>getCurrentSession() is made for the current thread. It is "
"then bound by Hibernate to the current thread. When the transaction ends, "
"either through commit or rollback, Hibernate automatically unbinds the "
"<interface>org.hibernate.Session from the thread and closes it "
"for you. If you call <literal>getCurrentSession() again, you get a "
"new <interface>org.hibernate.Session and can start a new unit of "
"work."
msgstr ""
"<literal>Sessionì€ ê·¸ê²ƒì´ ì²˜ìŒìœ¼ë¡œ 필요로 ë˜ê³ "
"<literal>getCurrentSession()ì— ëŒ€í•œ 첫 번째 í˜¸ì¶œì´ ì´ë£¨ì–´ì§ˆ ë•Œ 시작"
"ëœë‹¤. 그때 ê·¸ê²ƒì€ Hibernateì— ì˜í•´ í˜„ìž¬ì˜ ì“°ë ˆë“œì— ë°”ì¸ë“œ ëœë‹¤. 커밋ë˜ë“ 롤백"
"ë˜ë“ ê°„ì— íŠ¸ëžœìžì…˜ì´ 종료ë˜ê³ , Hibernateê°€ ìžë™ì 으로 ê·¸ ì“°ë ˆë“œë¡œë¶€í„° "
"<literal>Sessionì„ ë°”ì¸ë“œ í•´ì œì‹œí‚¤ê³ ë‹¹ì‹ ì„ ìœ„í•´ ì„¸ì…˜ì„ ë‹«ëŠ”ë‹¤. 만"
"ì¼ ë‹¹ì‹ ì´ <literal>getCurrentSession()ì„ ë‹¤ì‹œ 호출한다면, ë‹¹ì‹ ì€ ìƒˆ"
"로운 <literal>Sessionì„ ì–»ê³ ìƒˆë¡œìš´ 작업단위를 ì‹œìž‘í• ìˆ˜ 있다. ì´ "
"<emphasis>thread-bound í”„ë¡œê·¸ëž˜ë° ëª¨í˜•ì€ Hibernate를 사용하는 ê°€"
"장 대중ì ì¸ ë°©ë²•ì´ë‹¤. 왜ëƒí•˜ë©´ ê·¸ê²ƒì€ ë‹¹ì‹ ì˜ ì½”ë“œë¥¼ ìœ ì—°í•˜ê²Œ 계층화시키는 것"
"ì„ í—ˆìš©í•´ì£¼ê¸° 때문ì´ë‹¤(트랜ìžì…˜ 경계 ë¶„í• ì½”ë“œëŠ” ë°ì´íŠ¸ ì ‘ê·¼ 코드와 구별지워"
"질 수 있는ë°, 우리는 ì´ íŠœí† ë¦¬ì–¼ì˜ ë’·ë¶€ë¶„ì—ì„œ ì´ê²ƒì„ 다룰 것ì´ë‹¤.)."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"Related to the unit of work scope, should the Hibernate <interface>org."
"hibernate.Session</interface> be used to execute one or several database "
"operations? The above example uses one <interface>org.hibernate.Session is flexible but you "
"should never design your application to use a new Hibernate <interface>org."
"hibernate.Session</interface> for every database "
"operation. Even though it is used in the following examples, consider "
"<emphasis>session-per-operation an anti-pattern. A real web "
"application is shown later in the tutorial which will help illustrate this."
msgstr ""
"ìž‘ì—… ì˜ì—ì˜ ë‹¨ìœ„ì™€ ê´€ë ¨í•˜ì—¬, Hibernate <literal>Sessionì€ í•˜ë‚˜ ë˜"
"는 여러 ê°œì˜ ë°ì´í„°ë² ì´ìŠ¤ 오í¼ë ˆì´ì…˜ë“¤ì„ ì‹¤í–‰ì‹œí‚¤ëŠ”ë° ì‚¬ìš©ë 수 있는가? ìœ„ì˜ "
"ì˜ˆì œëŠ” í•˜ë‚˜ì˜ ì˜¤í¼ë ˆì´ì…˜ì— í•œ ê°œì˜ <literal>Sessionì„ ì‚¬ìš©í•˜ê³ ìžˆ"
"다. ì´ê²ƒì€ 순진한 ì¼ì¹˜ì´ë©°, ì˜ˆì œëŠ” ì–´ë–¤ 다른 ì ‘ê·¼ë²•ì„ ë³´ì—¬ì£¼ê¸°ì—는 충분히 ë³µ"
"잡하지 않다. Hibernate <literal>Sessionì˜ scope(ì˜ì—)ì€ ìœ ì—°í•˜ì§€ë§Œ "
"ë‹¹ì‹ ì€ ê²°ì½” <emphasis>ëª¨ë“ ë°ì´í„°ë² ì´ìŠ¤ 오í¼ë ˆì´ì…˜ ê°ê°ì— 대해 새"
"로운 Hibernate <literal>Sessionì„ ì‚¬ìš©í•˜ë„ë¡ ë‹¹ì‹ ì˜ ì–´í”Œë¦¬ì¼€ì´ì…˜ì„ "
"ì„¤ê³„í• ìˆ˜ 없다. ë”°ë¼ì„œ 심지어 ë‹¹ì‹ ì´ ë‹¤ìŒì˜ (매우 사소한) ì˜ˆì œë“¤ì—ì„œ 여러 번 "
"ê·¸ê²ƒì„ ë³¼ 수 있ì„지ë¼ë„ <emphasis>session-per-operationì„ í•˜ë‚˜ì˜ "
"안티-패턴으로 간주하ë¼. ì‹¤ì œ (웹) 어플리케ì´ì…˜ì€ ì´ íŠœí† ë¦¬ì–¼ì˜ ë’·ë¶€ë¶„ì— ë³´ì—¬"
"진다."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"See <xref linkend=\"transactions\" /> for more information about transaction "
"handling and demarcation. The previous example also skipped any error "
"handling and rollback."
msgstr ""
"트랜ìžì…˜ 핸들ë§ê³¼ ê²½ê³„êµ¬ë¶„ì— ëŒ€í•œ 추가 ì •ë³´ëŠ” <xref linkend=\"transactions\"/"
">ì„ ì‚´íŽ´ë³´ë¼. 우리는 ë˜í•œ ì•žì˜ ì˜ˆì œì—ì„œ ìž„ì˜ì˜ 오류 처리와 ë¡¤ë°±ì„ ìƒëžµí–ˆë‹¤."
#. Tag: para
#, no-c-format
msgid ""
"To run this, we will make use of the Maven exec plugin to call our class "
"with the necessary classpath setup: <command>mvn exec:java -Dexec.mainClass="
"\"org.hibernate.tutorial.EventManager\" -Dexec.args=\"store\"</command>"
msgstr ""
#. Tag: para
#, no-c-format
msgid "You may need to perform <command>mvn compile first."
msgstr ""
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"You should see Hibernate starting up and, depending on your configuration, "
"lots of log output. Towards the end, the following line will be displayed:"
msgstr ""
"컴파ì¼, êµ¬ì„±ì— ë”°ë¥¸ Hibernate 시작 후ì—, ë‹¹ì‹ ì€ ë§Žì€ ë¡œê·¸ ì¶œë ¥ì„ ë³´ê²Œ ë 것ì´"
"다. ëì—ì„œ ë‹¹ì‹ ì€ ë‹¤ìŒ ë¼ì¸ì„ ë°œê²¬í• ê²ƒì´ë‹¤:"
#. Tag: para
#, no-c-format
msgid "This is the <literal>INSERT executed by Hibernate."
msgstr ""
#. Tag: para
#, fuzzy, no-c-format
msgid "To list stored events an option is added to the main method:"
msgstr ""
"ì´ì œ 우리는 마찬가지로 ì €ìž¥ëœ ì´ë²¤íŠ¸ë“¤ì„ ì—´ê±°í•˜ê³ ìž ì›í•˜ë©°, 우리는 main 메소"
"ë“œì— í•œ ê°œì˜ ì˜µì…˜ì„ ì¶”ê°€í•œë‹¤:"
#. Tag: para
#, fuzzy, no-c-format
msgid "A new <literal>listEvents() method is also added:"
msgstr ""
"우리는 ë˜í•œ 새로운 <literal>listEvents() method 메소드를 추가 시킨"
"다:"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"Here, we are using a Hibernate Query Language (HQL) query to load all "
"existing <literal>Event objects from the database. Hibernate will "
"generate the appropriate SQL, send it to the database and populate "
"<literal>Event objects with the data. You can create more complex "
"queries with HQL. See <xref linkend=\"queryhql\" /> for more information."
msgstr ""
"여기서 우리가 í–‰í• ê²ƒì€ ë°ì´í„°ë² ì´ìŠ¤ë¡œë¶€í„° ëª¨ë“ ì¡´ìž¬í•˜ëŠ” <literal>Event ê°ì²´ë“¤ì— 거주시킬 것ì´ë‹¤. ë‹¹ì‹ ì€ "
"ë¬¼ë¡ HQL로서 보다 복잡한 질ì˜ë“¤ì„ ìƒì„±ì‹œí‚¬ 수 있다."
#. Tag: para
#, no-c-format
msgid ""
"Now we can call our new functionality, again using the Maven exec plugin: "
"<command>mvn exec:java -Dexec.mainClass=\"org.hibernate.tutorial.EventManager"
"\" -Dexec.args=\"list\"</command>"
msgstr ""
#. Tag: title
#, no-c-format
msgid "Part 2 - Mapping associations"
msgstr "파트 2 - ì—°ê´€ë“¤ì„ ë§¤í•‘í•˜ê¸°"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"So far we have mapped a single persistent entity class to a table in "
"isolation. Let's expand on that a bit and add some class associations. We "
"will add people to the application and store a list of events in which they "
"participate."
msgstr ""
"우리는 í•œ ê°œì˜ ì˜ì† 엔티티 í´ëž˜ìŠ¤ë¥¼ í•œ ê°œì˜ í…Œì´ë¸”ë¡œ 매핑했다. ì´ê²ƒ 위ì—ì„œ 빌"
"ë“œí•˜ê³ ëª‡ëª‡ í´ëž˜ìŠ¤ ì—°ê´€ë“¤ì„ ì¶”ê°€ì‹œí‚¤ìž. ë¨¼ì € 우리는 ìš°ë¦¬ì˜ ì–´í”Œë¦¬ì¼€ì´ì…˜ì— 사"
"ëžŒë“¤ì„ ì¶”ê°€í•˜ê³ ê·¸ë“¤ì´ ì°¸ì—¬í•˜ëŠ” ì´ë²¤íŠ¸ë“¤ì˜ 목ë¡ì„ ì €ìž¥í• ê²ƒì´ë‹¤."
#. Tag: title
#, no-c-format
msgid "Mapping the Person class"
msgstr "Person í´ëž˜ìŠ¤ 매핑하기"
#. Tag: para
#, fuzzy, no-c-format
msgid "The first cut of the <literal>Person class looks like this:"
msgstr "í´ëž˜ìŠ¤ì˜ 첫 번째 ìž¥ë©´ì€ ê°„ë‹¨í•˜ë‹¤:"
#. Tag: para
#, no-c-format
msgid ""
"Save this to a file named <filename>src/main/java/org/hibernate/tutorial/"
"domain/Person.java</filename>"
msgstr ""
#. Tag: para
#, no-c-format
msgid ""
"Next, create the new mapping file as <filename>src/main/resources/org/"
"hibernate/tutorial/domain/Person.hbm.xml</filename>"
msgstr ""
#. Tag: para
#, no-c-format
msgid "Finally, add the new mapping to Hibernate's configuration:"
msgstr "마지막으로 새로운 ë§¤í•‘ì„ Hibernateì˜ êµ¬ì„±ì— ì¶”ê°€í•˜ë¼:"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"Create an association between these two entities. Persons can participate in "
"events, and events have participants. The design questions you have to deal "
"with are: directionality, multiplicity, and collection behavior."
msgstr ""
"ì´ì œ 우리는 ì´ë“¤ ë‘ ê°œì˜ ì—”í‹°í‹°ë“¤ 사ì´ì— í•œ ê°œì˜ ì—°ê´€ì„ ìƒì„±ì‹œí‚¬ 것ì´ë‹¤. 명백"
"하게, ê°œì¸ë“¤ì€ ì´ë²¤íŠ¸ë“¤ì— ì°¸ì—¬í• ìˆ˜ ìžˆê³ , ì´ë²¤íŠ¸ë“¤ì€ 참여ìžë“¤ì„ 갖는다. 우리"
"ê°€ 다루어야 하는 설계 ì§ˆë¬¸ë“¤ì€ ë‹¤ìŒê³¼ 같다 : 방향성(directionality), 다중성"
"(multiplicity), ê·¸ë¦¬ê³ ì½œë ‰ì…˜ 특징."
#. Tag: title
#, no-c-format
msgid "A unidirectional Set-based association"
msgstr "단방향 Set-ê¸°ë°˜ì˜ ì—°ê´€"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"By adding a collection of events to the <literal>Person class, you "
"can easily navigate to the events for a particular person, without executing "
"an explicit query - by calling <literal>Person#getEvents. Multi-"
"valued associations are represented in Hibernate by one of the Java "
"Collection Framework contracts; here we choose a <interfacename>java.util."
"Set</interfacename> because the collection will not contain duplicate "
"elements and the ordering is not relevant to our examples:"
msgstr ""
"우리는 <literal>Person í´ëž˜ìŠ¤ì— ì´ë²¤íŠ¸ë“¤ì„ 가진 í•œ ê°œì˜ ì½œë ‰ì…˜ì„ ì¶”"
"ê°€í• ê²ƒì´ë‹¤. ê·¸ 방법으로 우리는 명시ì ì¸ ì§ˆì˜-<literal>aPerson.getEvents(), if we wanted to be able to navigate it from both "
"directions. This is not necessary, from a functional perspective. You can "
"always execute an explicit query to retrieve the participants for a "
"particular event. This is a design choice left to you, but what is clear "
"from this discussion is the multiplicity of the association: \"many\" valued "
"on both sides is called a <emphasis>many-to-many association. "
"Hence, we use Hibernate's many-to-many mapping:"
msgstr ""
"우리가 ì´ ì—°ê´€ì„ ë§¤í•‘í•˜ê¸° ì „ì—, 다른 ì¸¡ì— ëŒ€í•´ ìƒê°í•˜ë¼. 명백하게 우리는 ì´ê²ƒ"
"ì„ ë‹¨ì§€ 단방향으로 ìœ ì§€ì‹œí‚¬ 수 있다. ë˜ëŠ” 우리가 ê·¸ê²ƒì„ ì–‘ë°©í–¥ìœ¼ë¡œ 네비게ì´íŠ¸"
"하는 것-예를 들어 <literal>anEvent.getParticipants()-ì´ ê°€ëŠ¥í•˜ë„ë¡ "
"ì›í• 경우ì—, <literal>Event측 ìƒì— ë˜ ë‹¤ë¥¸ ì½œë ‰ì…˜ì„ ìƒì„±ì‹œí‚¬ 수 있"
"다. ì´ê²ƒì€ ë‹¹ì‹ ì—게 남겨진 설계 ì„ íƒì´ì§€ë§Œ, ì´ ë…¼ì˜ì—ì„œ 명료한 ì ì€ ì—°ê´€ì˜ ë‹¤"
"중성ì´ë‹¤: ì–‘ 측 ìƒì—ì„œ \"다중\" ê°’ì„ ê°–ëŠ” 경우, 우리는 ì´ê²ƒì„ <emphasis>many-"
"to-many</emphasis> ì—°ê´€ì´ë¼ê³ 명명한다. 그러므로 우리는 Hibernateì˜ many-to-"
"many ë§¤í•‘ì„ ì‚¬ìš©í•œë‹¤:"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"Hibernate supports a broad range of collection mappings, a <literal>setn:"
"m</emphasis> entity relationship, an association table is required. Each row "
"in this table represents a link between a person and an event. The table "
"name is decalred using the <literal>table attribute of the "
"<literal>set element. The identifier column name in the "
"association, for the person side, is defined with the <literal>key "
"element, the column name for the event's side with the <literal>columnmany-to-many. You also have to "
"tell Hibernate the class of the objects in your collection (the class on the "
"other side of the collection of references)."
msgstr ""
"Hibernate는 ëª¨ë“ ì¢…ë¥˜ì˜ ì½œë ‰ì…˜ 매핑들, 가장 공통ì ì¸ <literal><set>n:m 엔티티 "
"관계)ì˜ ê²½ìš°, í•œ ê°œì˜ ì—°ê´€ í…Œì´ë¸”ì´ í•„ìš”í•˜ë‹¤. ì´ í…Œì´ë¸” ë‚´ì— ìžˆëŠ” ê°ê°ì˜ í–‰"
"ì€ í•œ ëª…ì˜ ê°œì¸ê³¼ í•œ ê°œì˜ ì´ë²¤íŠ¸ 사ì´ì˜ ë§í¬ë¥¼ 표현한다. í…Œì´ë¸” ì´ë¦„ì€ "
"<literal>set ìš”ì†Œì˜ table ì†ì„±ìœ¼ë¡œ 구성ëœë‹¤. ì—°"
"ê´€ ë‚´ì˜ ì‹ë³„ìž ì»¬ëŸ¼ ì´ë¦„ì€ ê°œì¸ ì¸¡ì— ëŒ€í•´ <literal><key> 요소"
"ë¡œ ì •ì˜ë˜ê³ ì´ë²¤íŠ¸ ì¸¡ì— ëŒ€í•œ 컬럼 ì´ë¦„ì€ <literal><many-to-many>column ì†ì„±ìœ¼ë¡œ ì •ì˜ëœë‹¤. ë‹¹ì‹ ì€ ë˜í•œ ë‹¹ì‹ ì˜ ì½œ"
"ë ‰ì…˜ ë‚´ì— ìžˆëŠ” ê°ì²´ë“¤ì˜ í´ëž˜ìŠ¤(ì •í™•í•˜ê²Œ : ì°¸ì¡°ë“¤ì„ ê°€ì§„ ì½œë ‰ì…˜ì˜ ë‹¤ë¥¸ 측 ìƒ"
"ì— ìžˆëŠ” í´ëž˜ìŠ¤)를 Hibernateì—게 ì•Œë ¤ì£¼ì–´ì•¼ 한다."
#. Tag: para
#, no-c-format
msgid "The database schema for this mapping is therefore:"
msgstr "ë”°ë¼ì„œ ì´ ë§¤í•‘ì„ ìœ„í•œ ë°ì´í„°ë² ì´ìŠ¤ 스키마는 다ìŒê³¼ 같다:"
#. Tag: title
#, no-c-format
msgid "Working the association"
msgstr "ì—°ê´€ë“¤ì— ìž‘ì—…í•˜ê¸°"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"Now we will bring some people and events together in a new method in "
"<literal>EventManager:"
msgstr ""
"<literal>EventManager ì†ì— 있는 í•œ ê°œì˜ ìƒˆë¡œìš´ 메소드 ë‚´ì— ëª‡ëª‡ 사"
"람들과 ì´ë²¤íŠ¸ë“¤ì„ 함께 ê°€ì ¸ì˜¤ìž:"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"After loading a <literal>Person and an Event, "
"simply modify the collection using the normal collection methods. There is "
"no explicit call to <literal>update() or save() state, that is, bound to a particular "
"Hibernate <interfacename>org.hibernate.Session, Hibernate "
"monitors any changes and executes SQL in a write-behind fashion. The process "
"of synchronizing the memory state with the database, usually only at the end "
"of a unit of work, is called <emphasis>flushing. In our code, the "
"unit of work ends with a commit, or rollback, of the database transaction."
msgstr ""
"<literal>Personê³¼ Event를 로드시킨 후ì—, ì •ê·œ 콜"
"ë ‰ì…˜ ë©”ì†Œë“œë“¤ì„ ì‚¬ìš©í•˜ì—¬ ì½œë ‰ì…˜ì„ ê°„ë‹¨í•˜ê²Œ 변경하ë¼. ë‹¹ì‹ ì´ ì•Œ 수 있듯ì´, "
"<literal>update() ë˜ëŠ” save()ì— ëŒ€í•œ 명시ì ì¸ í˜¸"
"ì¶œì´ ì¡´ìž¬í•˜ì§€ ì•Šê³ , 변경ë˜ì—ˆê³ ì €ìž¥í• í•„ìš”ê°€ 있는 ì½œë ‰ì…˜ì„ Hibernateê°€ ìžë™ì "
"으로 검출해낸다. ì´ê²ƒì€ <emphasis>ìžë™ì ì¸ dirty 체킹ì´ë¼ ë¶ˆë ¤ì§€"
"ë©°, ë‹¹ì‹ ì€ ë˜í•œ ë‹¹ì‹ ì˜ ìž„ì˜ì˜ ê°ì²´ë“¤ì— 대한 name ë˜ëŠ” date 프로í¼í‹°ë¥¼ 변경함"
"ìœ¼ë¡œì¨ ê·¸ê²ƒì„ ì‹œë„í• ìˆ˜ 있다. ê·¸ê²ƒë“¤ì´ <emphasis>ì˜ì†(persistent) "
"ìƒíƒœì— 있는 ë™ì•ˆ, 즉 íŠ¹ì • Hibernate <literal>Sessionì— ë°”ì¸ë“œë˜ì–´ "
"있는 ë™ì•ˆ(예를 들면. ê·¸ê²ƒë“¤ì€ ìž‘ì—… 단위 ì†ì— 방금 로드ë˜ì—ˆê±°ë‚˜ ì €ìž¥ë˜ì—ˆë‹¤), "
"Hibernate는 ìž„ì˜ì˜ ë³€ê²½ë“¤ì„ ëª¨ë‹ˆí„°ë§í•˜ê³ 쓰기 ì´ë©´ì˜ 형태로 SQLì„ ì‹¤í–‰ì‹œí‚¨"
"다. 메모리 ìƒíƒœë¥¼ ë°ì´í„°ë² ì´ìŠ¤ì™€ ë™ê¸°í™” 시키는 ê³¼ì •ì€ ëŒ€ê°œ ì˜¤ì§ ìž‘ì—… ë‹¨ìœ„ì˜ "
"ëì—ì„œì´ê³ , <emphasis>flushingì´ë¼ 명명ëœë‹¤. ìš°ë¦¬ì˜ ì½”ë“œì—ì„œ, ìž‘"
"ì—… 단위는 <literal>CurrentSessionContext í´ëž˜ìŠ¤ì— 대한 "
"<literal>thread 구성 ì˜µì…˜ì— ì˜í•´ ì •ì˜ëœ 대로 - ë°ì´í„°ë² ì´ìŠ¤ 트랜ìž"
"ì…˜ì˜ ì»¤ë°‹(ë˜ëŠ” 롤백)으로 ëì´ë‚œë‹¤."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"You can load person and event in different units of work. Or you can modify "
"an object outside of a <interfacename>org.hibernate.Session, "
"when it is not in persistent state (if it was persistent before, this state "
"is called <emphasis>detached). You can even modify a collection "
"when it is detached:"
msgstr ""
"ë¬¼ë¡ ë‹¹ì‹ ì€ ë‹¤ë¥¸ ìž‘ì—… 단위 ì†ì— ê°œì¸ê³¼ ì´ë²¤íŠ¸ë¥¼ 로드시킬 수 ë„ ìžˆë‹¤. ë˜ëŠ” 당"
"ì‹ ì€ í•˜ë‚˜ì˜ ê°ì²´ê·¸ ì˜ì† ìƒíƒœì— 있지 ì•Šì„ ë•Œ <literal>Sessionì˜ ì™¸ë¶€"
"ì—ì„œ ê°ì²´ë¥¼ 변경시킬 ìˆ˜ë„ ìžˆë‹¤(ë§Œì¼ ê°ì²´ê°€ ì´ì „ì— ì˜ì†í™” ë˜ì—ˆë‹¤ë©´, 우리는 ì´ "
"ìƒíƒœë¥¼ <emphasis>detachedë¼ê³ 부른다). (매우 사실ì ì´ì§€ ì•Šì€) ì½”"
"ë“œ ë‚´ì—ì„œ ì´ê²ƒì€ 다ìŒê³¼ ê°™ì„ ìˆ˜ 있다:"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"The call to <literal>update makes a detached object persistent "
"again by binding it to a new unit of work, so any modifications you made to "
"it while detached can be saved to the database. This includes any "
"modifications (additions/deletions) you made to a collection of that entity "
"object."
msgstr ""
"<literal>updateì— ëŒ€í•œ í˜¸ì¶œì€ í•œ ê°œì˜ detached ê°ì²´ë¥¼ 다시 ì˜ì†í™” "
"ì‹œí‚¤ê³ , ë‹¹ì‹ ì€ ê·¸ê²ƒì´ ìƒˆë¡œìš´ ìž‘ì—… ë‹¨ìœ„ì— ë°”ì¸ë“œëœë‹¤ê³ ë§í• 수 ìžˆê³ , ë”°ë¼ì„œ "
"detached ë™ì•ˆì— ë‹¹ì‹ ì´ ê·¸ê²ƒì— ëŒ€í•´ 행한 ìž„ì˜ì˜ ë³€ê²½ë“¤ì´ ë°ì´í„°ë² ì´ìŠ¤ì— ì €ìž¥"
"ë 수 있다. ì´ê²ƒì€ ë‹¹ì‹ ì´ ê·¸ 엔티티 ê°ì²´ì˜ ì½œë ‰ì…˜ì— ëŒ€í•´ í–‰í–ˆë˜ ìž„ì˜ì˜ 변경들"
"(추가/ì‚ì œ)를 í¬í•¨í•œë‹¤."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"This is not much use in our example, but it is an important concept you can "
"incorporate into your own application. Complete this exercise by adding a "
"new action to the main method of the <literal>EventManager and "
"call it from the command line. If you need the identifiers of a person and "
"an event - the <literal>save() method returns it (you might have "
"to modify some of the previous methods to return that identifier):"
msgstr ""
"ë¬¼ë¡ , ìš°ë¦¬ì˜ í˜„ìž¬ ìƒí™©ì—ì„œ ì´ê²ƒì€ ë§Žì´ ì‚¬ìš©ë˜ì§€ 않지만, ê·¸ê²ƒì€ ë‹¹ì‹ ì´ ë‹¹ì‹ ìž"
"ì‹ ì˜ ì–´í”Œë¦¬ì¼€ì´ì…˜ ë‚´ë¡œ ì„¤ê³„í• ìˆ˜ 있는 중요한 ê°œë…ì´ë‹¤. 지금 "
"<literal>EventManagerì˜ main ë©”ì†Œë“œì— í•œ ê°œì˜ ìƒˆë¡œìš´ ì•¡ì…˜ì„ ì¶”ê°€í•˜"
"ê³ ëª…ë ¹ ë¼ì¸ì—ì„œ ê·¸ê²ƒì„ í˜¸ì¶œí•˜ì—¬ ì´ ì—°ìŠµì„ ì™„ë£Œí•˜ë¼. ë§Œì¼ ë‹¹ì‹ ì´ í•œëª…ì˜ ê°œì¸"
"ê³¼ í•œ ê°œì˜ ì´ë²¤íŠ¸ì— 대한 ì‹ë³„ìžë“¤ì„ 필요로 í• ê²½ìš° - <literal>save() or a java.lang.String. We "
"call these classes <emphasis>value types, and their instances "
"<emphasis>depend on a particular entity. Instances of these types "
"do not have their own identity, nor are they shared between entities. Two "
"persons do not reference the same <literal>firstname object, even "
"if they have the same first name. Value types cannot only be found in the "
"JDK , but you can also write dependent classes yourself such as an "
"<literal>Address or MonetaryAmount class. In "
"fact, in a Hibernate application all JDK classes are considered value types."
msgstr ""
"ì´ê²ƒì€ ë‘ ê°œì˜ ë™ë“±í•˜ê²Œ 중요한 í´ëž˜ìŠ¤ë“¤, ë‘ ê°œì˜ ì—”í‹°í‹°ë“¤ 사ì´ì—ì„œ í•œ ê°œì˜ ì—°"
"ê´€ì— ê´€í•œ ì˜ˆì œì˜€ë‹¤. ì•žì„œ 언급했듯ì´, ì „í˜•ì ì¸ ëª¨í˜• ë‚´ì—는 다른 í´ëž˜ìŠ¤ë“¤ê³¼ 타"
"ì´ë“¤ì´ 존재하는ë°, 대개 \"ëœ ì¤‘ìš”í•˜ë‹¤\". ë‹¹ì‹ ì€ ì´ë¯¸ <literal>int "
"ë˜ëŠ” <literal>Stringê³¼ ê°™ì€ ì–´ë–¤ ê²ƒì„ ì´ë¯¸ 보았다. 우리는 ì´ë“¤ í´ëž˜"
"ìŠ¤ë“¤ì„ <emphasis>ê°’ 타입들(value types)ì´ë¼ ëª…ëª…í•˜ê³ , 그들 ì¸ìŠ¤í„´"
"ìŠ¤ë“¤ì€ íŠ¹ì • ì—”í‹°í‹°ì— <emphasis>ì˜ì¡´í•œë‹¤(depend). ì´ë“¤ íƒ€ìž…ë“¤ì„ ê°€"
"진 ì¸ìŠ¤í„´ìŠ¤ë“¤ì€ 그것들 ìžì‹ ì˜ ì‹ë³„성(identity)를 갖지 않거나, ê·¸ê²ƒë“¤ì€ ì—”í‹°í‹°"
"들 사ì´ì—ì„œ ê³µìœ ë˜ì§€ë„ 않는다(ë‘ê°œì˜ personë“¤ì€ ì‹¬ì§€ì–´ ê·¸ê²ƒë“¤ì´ ê°™ì€ ì²« 번째 "
"ì´ë¦„ì„ ê°–ëŠ” 경우ì—ë„ ë™ì¼í•œ <literal>firstnameì„ ì°¸ì¡°í•˜ì§€ 않는"
"다 ). ë¬¼ë¡ ê°’ íƒ€ìž…ë“¤ì€ JDK ë‚´ì—ì„œ 발견ë ë¿ë§Œ 아니ë¼(사실, Hibernate 어플리케"
"ì´ì…˜ì—ì„œ ëª¨ë“ JDK í´ëž˜ìŠ¤ë“¤ì€ ê°’ 타입들로 간주ëœë‹¤), ë‹¹ì‹ ì€ ë˜í•œ ë‹¹ì‹ ìŠ¤ìŠ¤ë¡œ "
"ì¢…ì† í´ëž˜ìŠ¤ë“¤, 예를 들면 <literal>Address ë˜ëŠ” "
"<literal>MonetaryAmountì„ ìž‘ì„±í• ìˆ˜ 있다."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"You can also design a collection of value types. This is conceptually "
"different from a collection of references to other entities, but looks "
"almost the same in Java."
msgstr ""
"ë‹¹ì‹ ì€ ë˜í•œ ê°’ íƒ€ìž…ë“¤ì„ ì„¤ê³„í• ìˆ˜ 있다. ì´ê²ƒì€ 다른 ì—”í‹°í‹°ë“¤ì— ëŒ€í•œ ì°¸ì¡°ë“¤ì„ "
"가진 ì½œë ‰ì…˜ê³¼ëŠ” ê°œë…ì 으로 매우 다르지만, Javaì—서는 대개 ë™ì¼í•œ 것으로 ë³´ì—¬"
"진다."
#. Tag: title
#, no-c-format
msgid "Collection of values"
msgstr "ê°’ë“¤ì„ ê°€ì§„ ì½œë ‰ì…˜"
#. Tag: para
#, no-c-format
msgid ""
"Let's add a collection of email addresses to the <literal>Person "
"entity. This will be represented as a <interfacename>java.util.Setjava.lang.String instances:"
msgstr ""
#. Tag: para
#, fuzzy, no-c-format
msgid "The mapping of this <literal>Set is as follows:"
msgstr "ì´ <literal>Setì— ëŒ€í•œ ë§¤í•‘ì€ ë‹¤ìŒê³¼ 같다:"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"The difference compared with the earlier mapping is the use of the "
"<literal>element part which tells Hibernate that the collection "
"does not contain references to another entity, but is rather a collection "
"whose elements are values types, here specifically of type <literal>string attribute of the set element defines the foreign-key column name in the "
"collection table. The <literal>column attribute in the "
"<literal>element element defines the column name where the email "
"address values will actually be stored."
msgstr ""
"ì•žì˜ ë§¤í•‘ê³¼ 비êµí•œ ì°¨ì´ì ì€ <literal>element 부분ì¸ë°, ê·¸ê²ƒì€ ê·¸ 콜"
"ë ‰ì…˜ì´ ë˜ ë‹¤ë¥¸ ì—”í‹°í‹°ì— ëŒ€í•œ ì°¸ì¡°ë“¤ì„ í¬í•¨í•˜ì§€ ì•Šì„ ê²ƒì´ì§€ë§Œ "
"<literal>String(ì†Œë¬¸ìž ì´ë¦„ì€ ê·¸ê²ƒì´ Hibernate 매핑 타입/변환ìžìž„"
"ì„ ë‹¹ì‹ ì—게 ë§í•´ì¤€ë‹¤) íƒ€ìž…ì˜ ìš”ì†Œë“¤ì„ ê°€ì§„ í•œ ê°œì˜ ì½œë ‰ì…˜ì„ í¬í•¨í• ê²ƒìž„ì„ "
"Hibernateì—게 ì•Œë ¤ì¤€ë‹¤. ì¼ë‹¨ 다시 <literal>set ìš”ì†Œì˜ "
"<literal>table ì†ì„±ì€ ê·¸ ì½œë ‰ì…˜ì— ëŒ€í•œ í…Œì´ë¸” ì´ë¦„ì„ ê²°ì •í•œë‹¤. "
"<literal>key 요소는 ì½œë ‰ì…˜ í…Œì´ë¸” ë‚´ì—ì„œ foreign-key 컬럼 ì´ë¦„ì„ ì •"
"ì˜í•œë‹¤. <literal>element 요소 ë‚´ì— ìžˆëŠ” column "
"ì†ì„±ì€ <literal>String ê°’ë“¤ì´ ì‹¤ì œë¡œ ì €ìž¥ë 컬럼 ì´ë¦„ì„ ì •ì˜í•œë‹¤."
#. Tag: para
#, fuzzy, no-c-format
msgid "Here is the updated schema:"
msgstr "ì—…ë°ì´íŠ¸ëœ 스키마를 살펴보ë¼:"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"You can see that the primary key of the collection table is in fact a "
"composite key that uses both columns. This also implies that there cannot be "
"duplicate email addresses per person, which is exactly the semantics we need "
"for a set in Java."
msgstr ""
"ë‹¹ì‹ ì€ ì½œë ‰ì…˜ í…Œì´ë¸”ì˜ í”„ë¼ì´ë¨¸ë¦¬ 키가 ì‚¬ì‹¤ì€ ë‘ ì»¬ëŸ¼ë“¤ì„ ì‚¬ìš©í•˜ëŠ” í•œ ê°œì˜ í•©"
"성 키(composite key)ìž„ì„ ì•Œ 수 있다. ì´ê²ƒì€ ë˜í•œ ê°œì¸ì— 대해 email 주소가 중"
"ë³µë 수 ì—†ìŒì„ ì˜ë¯¸í•˜ë©°, ê·¸ê²ƒì€ ì •í™•í•˜ê²Œ 우리가 Javaì—ì„œ setì„ í•„ìš”ë¡œ 하는 ì˜"
"ë¯¸ë¡ ì´ë‹¤."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"You can now try to add elements to this collection, just like we did before "
"by linking persons and events. It is the same code in Java:"
msgstr ""
"마치 ê°œì¸ë“¤ê³¼ ì´ë²¤íŠ¸ë“¤ì„ ë§í¬ì‹œì¼œì„œ ì´ì „ì— ìš°ë¦¬ê°€ í–‰í–ˆë˜ ê²ƒì²˜ëŸ¼ ì´ì œ ë‹¹ì‹ ì€ "
"ìš”ì†Œë“¤ì„ ì‹œë„í•˜ê³ ì´ ì½œë ‰ì…˜ì— ì¶”ê°€í• ìˆ˜ 있다. ê·¸ê²ƒì€ Javaì—ì„œ ë™ì¼í•œ 코드ì´"
"다."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"This time we did not use a <emphasis>fetch query to initialize "
"the collection. Monitor the SQL log and try to optimize this with an eager "
"fetch."
msgstr ""
"지금 우리는 ì½œë ‰ì…˜ì„ ì´ˆê¸°í™” ì‹œí‚¤ëŠ”ë° <emphasis>fetch 질ì˜ë¥¼ 사용하"
"지 않았다. 그러므로 ì½œë ‰ì…˜ì˜ getter ë©”ì†Œë“œì— ëŒ€í•œ í˜¸ì¶œì€ ì½œë ‰ì…˜ì„ ì´ˆê¸°í™” 시키"
"기 위해 추가ì ì¸ select를 트리거 시킬 것ì´ì–´ì„œ, 우리는 ê·¸ê²ƒì— ìš”ì†Œë¥¼ 추가시"
"킬 수 있다. SQL 로그를 ê´€ì°°í•˜ê³ ì´ê²ƒì„ eager fetchë¡œ 최ì í™” ì‹œí‚¤ë ¤ê³ ì‹œë„하"
"ë¼."
#. Tag: title
#, no-c-format
msgid "Bi-directional associations"
msgstr "Bi-directional associations"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"Next you will map a bi-directional association. You will make the "
"association between person and event work from both sides in Java. The "
"database schema does not change, so you will still have many-to-many "
"multiplicity."
msgstr ""
"다ìŒìœ¼ë¡œ 우리는 ì–‘ë°©í–¥ ì—°ê´€ì„ ë§¤í•‘ì‹œí‚¬ ì˜ˆì •ì´ë‹¤-ê°œì¸ê³¼ ì´ë²¤íŠ¸ 사ì´ì— ì—°ê´€ì„ "
"만드는 ê²ƒì€ Javaì—ì„œ ì–‘ 측들ì—ì„œ ë™ìž‘한다. ë¬¼ë¡ ë°ì´í„°ë² ì´ìŠ¤ 스키마는 변경ë˜"
"지 ì•Šê³ , 우리는 ì—¬ì „ížˆ many-to-many ë‹¤ì¤‘ì„±ì„ ê°–ëŠ”ë‹¤. 관계형 ë°ì´í„°ë² ì´ìŠ¤ëŠ” 네"
"íŠ¸ì› í”„ë¡œê·¸ëž˜ë° ì–¸ì–´ 보다 훨씬 ë” ìœ ì—°í•˜ì—¬ì„œ, ê·¸ê²ƒì€ ë„¤ë¹„ê²Œì´ì…˜ 방향과 ê°™ì€ "
"ì–´ë–¤ ê²ƒì„ í•„ìš”ë¡œ 하지 않는다 - ë°ì´í„°ëŠ” ì–´ë–¤ 가능한 바업ㅂ으로 보여질 수 있"
"ê³ ê²€ìƒ‰ë 수 있다."
#. Tag: para
#, no-c-format
msgid ""
"A relational database is more flexible than a network programming language, "
"in that it does not need a navigation direction; data can be viewed and "
"retrieved in any possible way."
msgstr ""
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"First, add a collection of participants to the <literal>Event "
"class:"
msgstr ""
"ë¨¼ì €, 참여ìžë“¤ì„ 가진 í•œ ê°œì˜ ì½œë ‰ì…˜ì„ <literal>Event Event í´ëž˜ìŠ¤"
"ì— ì¶”ê°€ì‹œì¼œë¼:"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"Now map this side of the association in <literal>Event.hbm.xml."
msgstr "ì´ì œ <literal>Event.hbm.xml ë‚´ì— ì—°ê´€ì˜ ì´ ìª½ë„ ë§¤í•‘í•˜ë¼."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"These are normal <literal>set mappings in both mapping documents. "
"Notice that the column names in <literal>key and many-to-"
"many</literal> swap in both mapping documents. The most important addition "
"here is the <literal>inverse=\"true\" attribute in the "
"<literal>set element of the Event's collection "
"mapping."
msgstr ""
"ë‹¹ì‹ ì´ ë³¼ 수 있듯ì´, ì´ê²ƒë“¤ì€ ë‘ ë§¤í•‘ 문서들 ë‚´ì—ì„œ ì •ê·œ <literal>setkey와 many-to-many"
"ì—ì„œ 컬럼 ì´ë¦„ë“¤ì€ ë‘ ë§¤í•‘ 문서들ì—ì„œ 바뀌어진다. 여기서 가장 중요한 부가물"
"ì€ <literal>Eventì˜ ì½œë ‰ì…˜ ë§¤í•‘ì— ê´€í•œ set 요소 "
"ë‚´ì— ìžˆëŠ” <literal>inverse=\"true\" ì†ì„±ì´ë‹¤."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"What this means is that Hibernate should take the other side, the "
"<literal>Person class, when it needs to find out information about "
"the link between the two. This will be a lot easier to understand once you "
"see how the bi-directional link between our two entities is created."
msgstr ""
"ì´ê²ƒì´ ì˜ë¯¸í•˜ëŠ” 바는 Hibernateê°€ 둘 사ì´ì˜ ë§í¬ì— 대한 ì •ë³´ë¥¼ ì•Œ 필요가 ìžˆì„ "
"ë•Œ 다른 측-<literal>Person í´ëž˜ìŠ¤-를 ì·¨í• ê²ƒì´ë¼ëŠ” ì ì´ë‹¤. ì¼ë‹¨ 당"
"ì‹ ì´ ìš°ë¦¬ì˜ ë‘ ì—”í‹°í‹°ë“¤ 사ì´ì— ì–‘ë°©í–¥ ë§í¬ê°€ ìƒì„±ë˜ëŠ” ë°©ë²•ì„ ì•ˆë‹¤ë©´ ì´ê²ƒì€ ì´"
"해하기가 훨씬 ë” ì‰¬ìš¸ 것ì´ë‹¤."
#. Tag: title
#, no-c-format
msgid "Working bi-directional links"
msgstr "ì–‘ë°©í–¥ ë§í¬ë“¤ì— 작업하기"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"First, keep in mind that Hibernate does not affect normal Java semantics. "
"How did we create a link between a <literal>Person and an "
"<literal>Event in the unidirectional example? You add an instance "
"of <literal>Event to the collection of event references, of an "
"instance of <literal>Person. If you want to make this link bi-"
"directional, you have to do the same on the other side by adding a "
"<literal>Person reference to the collection in an Eventê³¼ Event 사ì´"
"ì— ì–´ë–»ê²Œ í•œ ê°œì˜ ë§í¬ë¥¼ ìƒì„±ì‹œì¼°ëŠ”ê°€? 우리는 <literal>Event 타입"
"ì˜ ì¸ìŠ¤í„´ìŠ¤ë¥¼ <literal>Person íƒ€ìž…ì˜ ì´ë²¤íŠ¸ ì°¸ì¡°ë“¤ì„ ê°€ì§„ ì½œë ‰ì…˜ì— "
"추가시켰다. ë”°ë¼ì„œ 명백하게 우리가 ì´ ë§í¬ë¥¼ 양방향으로 ë™ìž‘하ë„ë¡ ë§Œë“¤ê³ ìž "
"ì›í•œë‹¤ë©´, 우리는 다른 측 ìƒì—ì„œ -í•˜ë‚˜ì˜ <literal>Person 참조를 하나"
"ì˜ <literal>Event ë‚´ì— ìžˆëŠ” ì½œë ‰ì…˜ì— ì¶”ê°€ì‹œí‚´ìœ¼ë¡œì¨- ë™ì¼í•œ ê²ƒì„ í–‰"
"해야 한다. ì´ \"ì–‘ 측 ìƒì— ë§í¬ ì„¤ì •í•˜ê¸°\"는 ì ˆëŒ€ì 으로 필수ì ì´ê³ ë‹¹ì‹ ì€ ê·¸"
"ê²ƒì„ í–‰í•˜ëŠ” ê²ƒì„ ê²°ì½” 잊지 ë§ì•„야 한다."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"Many developers program defensively and create link management methods to "
"correctly set both sides (for example, in <literal>Person):"
msgstr ""
"ë§Žì€ ê°œë°œìžë“¤ì€ ë°©ë¹„ì±…ì„ í”„ë¡œê·¸ëž¨í•˜ê³ ì–‘ ì¸¡ë“¤ì„ ì •í™•í•˜ê²Œ ì„¤ì •í•˜ê¸° 위한 하나"
"ì˜ ë§í¬ 관리 ë©”ì†Œë“œë“¤ì„ ìƒì„±ì‹œí‚¨ë‹¤. 예를 들면 <literal>Personì—ì„œ :"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"The get and set methods for the collection are now protected. This allows "
"classes in the same package and subclasses to still access the methods, but "
"prevents everybody else from altering the collections directly. Repeat the "
"steps for the collection on the other side."
msgstr ""
"ì½œë ‰ì…˜ì— ëŒ€í•œ get ë° set ë©”ì†Œë“œë“œì€ ì´ì œ protectedìž„ì„ ì¸ì§€í•˜ë¼ - ì´ê²ƒì€ ë™ì¼"
"í•œ 패키지 ë‚´ì— ìžˆëŠ” í´ëž˜ìŠ¤ë“¤ê³¼ 서브í´ëž˜ìŠ¤ë“¤ì´ ê·¸ ë©”ì†Œë“œë“¤ì— ì ‘ê·¼í•˜ëŠ” ê²ƒì„ í—ˆ"
"용해주지만, ê·¸ ë°–ì˜ ëª¨ë“ ê²ƒë“¤ì´ ê·¸ ì½œë ‰ì…˜ë“¤ì„ (ë¬¼ë¡ , 대개) ì§ì ‘ 만지는 ê²ƒì„ "
"금지시킨다. ë‹¹ì‹ ì€ ë‹¤ë¥¸ 측 ìƒì— 있는 ì½œë ‰ì…˜ì— ëŒ€í•´ ë™ì¼í•œ ê²ƒì„ í–‰í• ê²ƒì´ë‹¤."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"What about the <literal>inverse mapping attribute? For you, and "
"for Java, a bi-directional link is simply a matter of setting the references "
"on both sides correctly. Hibernate, however, does not have enough "
"information to correctly arrange SQL <literal>INSERT and "
"<literal>UPDATE statements (to avoid constraint violations). "
"Making one side of the association <literal>inverse tells "
"Hibernate to consider it a <emphasis>mirror of the other side. "
"That is all that is necessary for Hibernate to resolve any issues that arise "
"when transforming a directional navigation model to a SQL database schema. "
"The rules are straightforward: all bi-directional associations need one side "
"as <literal>inverse. In a one-to-many association it has to be the "
"many-side, and in many-to-many association you can select either side."
msgstr ""
"<literal>inverse 매핑 ì†ì„±ì€ 무엇ì¸ê°€? ë‹¹ì‹ ì˜ ê²½ìš°, ê·¸ë¦¬ê³ Javaì˜ "
"경우, í•œ ê°œì˜ ì–‘ë°©í–¥ ë§í¬ëŠ” 단순히 ì–‘ ì¸¡ë“¤ì— ëŒ€í•œ ì°¸ì¡°ë“¤ì„ ì •í™•í•˜ê²Œ ì„¤ì •í•˜ëŠ” "
"ë¬¸ì œì´ë‹¤. 하지만 Hibernate는 (ì»¨ìŠ¤íŠ¸ë ˆì¸íŠ¸ 위배를 피하기 위해서) SQL "
"<literal>INSERT 문장과 UPDATE ë¬¸ìž¥ì„ ì •í™•í•˜ê²Œ 마"
"ë ¨í•˜ê¸°ì— ì¶©ë¶„í•œ ì •ë³´ë¥¼ ê°–ê³ ìžˆì§€ 않으며, ì–‘ë°©í–¥ ì—°ê´€ë“¤ì„ ì˜¬ë°”ë¥´ê²Œ 처리하기 위"
"í•´ ì–´ë–¤ ë„ì›€ì„ í•„ìš”ë¡œ 한다. ì—°ê´€ì˜ í•œ ì¸¡ì„ <literal>inverseë¡œ 만드"
"는 ê²ƒì€ ê¸°ë³¸ì 으로 ê·¸ê²ƒì„ ë¬´ì‹œí•˜ê³ ê·¸ê²ƒì„ ë‹¤ë¥¸ ì¸¡ì˜ <emphasis>거울(mirror)ì¼ í•„ìš”ê°€ 있다. one-to-"
"many ì—°ê´€ì—ì„œ ê·¸ê²ƒì€ many-측ì´ì–´ì•¼ í•˜ê³ , many-to-many ì—°ê´€ì—ì„œ ë‹¹ì‹ ì€ ì–´ëŠ ì¸¡"
"ì´ë“ ì„ íƒí• 수 있으며 ì°¨ì´ì ì€ ì—†ë‹¤."
#. Tag: title
#, no-c-format
msgid "Part 3 - The EventManager web application"
msgstr "파트 3 - EventManager 웹 어플리케ì´ì…˜"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"A Hibernate web application uses <literal>Session and "
"<literal>Transaction almost like a standalone application. "
"However, some common patterns are useful. You can now write an "
"<literal>EventManagerServlet. This servlet can list all events "
"stored in the database, and it provides an HTML form to enter new events."
msgstr ""
"Hibernate 웹 어플리케ì´ì…˜ì€ ëŒ€ë¶€ë¶„ì˜ ìŠ¤íƒ ë“œì–¼ë¡ ì–´í”Œë¦¬ì¼€ì´ì…˜ê³¼ ê°™ì´ "
"<literal>Sessionê³¼ Transactionì„ ì‚¬ìš©í•œë‹¤. 하지"
"만 몇몇 공통 íŒ¨í„´ë“¤ì´ ìœ ìš©í•˜ë‹¤. 우리는 ì´ì œ <literal>EventManagerServlet requests, we will only implement the "
"<literal>doGet() method:"
msgstr ""
"ì„œë¸”ë¦¿ì€ HTTP <literal>GET ìš”ì²ë“¤ ë§Œì„ ì²˜ë¦¬í•˜ë¯€ë¡œ, 우리가 구현하는 "
"메소드는 <literal>doGet()ì´ë‹¤:"
#. Tag: para
#, no-c-format
msgid ""
"Save this servlet as <filename>src/main/java/org/hibernate/tutorial/web/"
"EventManagerServlet.java</filename>"
msgstr ""
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"The pattern applied here is called <emphasis>session-per-request. "
"When a request hits the servlet, a new Hibernate <literal>Session "
"is opened through the first call to <literal>getCurrentSession() "
"on the <literal>SessionFactory. A database transaction is then "
"started. All data access occurs inside a transaction irrespective of whether "
"the data is read or written. Do not use the auto-commit mode in applications."
msgstr ""
"우리가 여기서 ì 용하는 íŒ¨í„´ì€ <emphasis>session-per-requestì´ë‹¤. "
"í•˜ë‚˜ì˜ ìš”ì²ì´ ì„œë¸”ë¦¿ì— ë„ë‹¬í• ë•Œ, í•˜ë‚˜ì˜ ìƒˆë¡œìš´ Hibernate <literal>SessionSessionFactory ìƒì˜ getCurrentSession"
"()</literal>ì— ëŒ€í•œ 첫번째 í˜¸ì¶œì„ í†µí•´ 열린다. 그때 í•˜ë‚˜ì˜ ë°ì´í„°ë² ì´ìŠ¤ 트랜"
"ìžì…˜ì´ 시작ë˜ê³ , ëª¨ë“ ë°ì´í„° ì ‘ê·¼ì´ í•˜ë‚˜ì˜ íŠ¸ëžœìžì…˜ ë‚´ì—ì„œ ë°œìƒí•˜ëŠ” í•œ, ë°ì´"
"í„°ê°€ ì½í˜€ì§€ê±°ë‚˜ 기ë¡ë˜ëŠ”ë° ë¬¸ì œê°€ 없다(우리는 어플리케ì´ì…˜ë“¤ ë‚´ì—ì„œ auto-"
"commit 모드를 사용하지 않는다)."
#. Tag: para
#, no-c-format
msgid ""
"Do <emphasis>not use a new Hibernate Session "
"for every database operation. Use one Hibernate <literal>Session "
"that is scoped to the whole request. Use <literal>getCurrentSession()ë§ë¼. ì „ì²´ ìš”ì²ì— 대해 ì˜ì—지워진 "
"í•œ ê°œì˜ Hibernate <literal>Sessionì„ ì‚¬ìš©í•˜ë¼. ê·¸ê²ƒì´ ìžë™ì 으로 현"
"ìž¬ì˜ ìžë°” ì“°ë ˆë“œì— ë°”ì¸ë“œë˜ë„ë¡ <literal>getCurrentSession()ì„ ì‚¬ìš©"
"하ë¼."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"Next, the possible actions of the request are processed and the response "
"HTML is rendered. We will get to that part soon."
msgstr ""
"다ìŒìœ¼ë¡œ, ìš”ì²ì˜ 가능한 ì•¡ì…˜ë“¤ì´ ì²˜ë¦¬ë˜ê³ ì‘답 HTMLì´ ë Œë”ë§ëœë‹¤. 우리는 곧"
"장 그부분으로 ê°ˆ 것ì´ë‹¤."
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"Finally, the unit of work ends when processing and rendering are complete. "
"If any problems occurred during processing or rendering, an exception will "
"be thrown and the database transaction rolled back. This completes the "
"<literal>session-per-request pattern. Instead of the transaction "
"demarcation code in every servlet, you could also write a servlet filter. "
"See the Hibernate website and Wiki for more information about this pattern "
"called <emphasis>Open Session in View. You will need it as soon "
"as you consider rendering your view in JSP, not in a servlet."
msgstr ""
"마지막으로, 프로세싱과 ë Œë”ë§ì´ 완료ë ë•Œ ìž‘ì—… 단위가 종료ëœë‹¤. ë§Œì¼ ì–´ë–¤ 문"
"ì œê°€ 프로세싱과 ë Œë”ë§ ë™ì•ˆì— ë°œìƒë 경우, í•˜ë‚˜ì˜ ì˜ˆì™¸ìƒí™©ì´ ë˜ì ¸ì§ˆ 것ì´ê³ ë°"
"ì´í„°ë² ì´ìŠ¤ 트랜ìžì…˜ì€ 롤백ë 것ì´ë‹¤. ì´ê²ƒì€ <literal>session-per-request method uses the Hibernate "
"<literal>Session bound to the current thread to execute a query:"
msgstr ""
"<literal>listEvents() 메소드는 í•˜ë‚˜ì˜ ì§ˆì˜ë¥¼ 실행하기 위해서 현재"
"ì˜ ì“°ë ˆë“œì— ê²°í•©ëœ Hibernate <literal>Sessionì„ ì‚¬ìš©í•œë‹¤:"
#. Tag: para
#, no-c-format
msgid ""
"Finally, the <literal>store action is dispatched to the "
"<literal>createAndStoreEvent() method, which also uses the "
"<literal>Session of the current thread:"
msgstr ""
"마지막으로, <literal>store ì•¡ì…˜ì€ createAndStoreEvent()Session and Transaction. As "
"earlier in the standalone application, Hibernate can automatically bind "
"these objects to the current thread of execution. This gives you the freedom "
"to layer your code and access the <literal>SessionFactory in any "
"way you like. Usually you would use a more sophisticated design and move the "
"data access code into data access objects (the DAO pattern). See the "
"Hibernate Wiki for more examples."
msgstr ""
"즉 ì„œë¸”ë¦¿ì´ ì™„ì„±ëœë‹¤. ì„œë¸”ë¦¿ì— ëŒ€í•œ ìš”ì²ì€ í•˜ë‚˜ì˜ ë‹¨ì¼ <literal>SessionTransaction ë‚´ì—ì„œ 처리ë 것ì´ë‹¤. ì´ì „처럼 ìŠ¤íƒ "
"ë“œì–¼ë¡ ì–´í”Œë¦¬ì¼€ì´ì…˜ì—ì„œ, Hibernate는 ì´ë“¤ ê°ì²´ë“¤ì„ 실행 ì¤‘ì¸ í˜„ìž¬ ì“°ë ˆë“œì— ìž"
"ë™ì 으로 ë°”ì¸ë“œì‹œí‚¬ 수 있다. ì´ê²ƒì€ ë‹¹ì‹ ì˜ ì½”ë“œë¥¼ 계층화 ì‹œí‚¤ê³ ë‹¹ì‹ ì´ ì¢‹ì•„í•˜"
"는 ìž„ì˜ì˜ 방법으로 <literal>SessionFactoryì— ì ‘ê·¼í•˜ëŠ” ìžìœ 를 ë‹¹ì‹ ì—"
"게 부여한다. 대개 ë‹¹ì‹ ì€ ë³´ë‹¤ ì„¸ë ¨ëœ ì„¤ê³„ë¥¼ ì‚¬ìš©í• ê²ƒì´ê³ ë°ì´í„° ì ‘ê·¼ 코드를 "
"ë°ì´í„° ì ‘ê·¼ ê°ì²´ë“¤ ë‚´ë¡œ ì´ë™ì‹œí‚¬ 것ì´ë‹¤(DAO 패턴). 추가 ì˜ˆì œë“¤ì€ Hibernate 위"
"키를 ë³´ë¼."
#. Tag: title
#, no-c-format
msgid "Deploying and testing"
msgstr "배치하기 ê·¸ë¦¬ê³ í…ŒìŠ¤íŠ¸í•˜ê¸°"
#. Tag: para
#, no-c-format
msgid ""
"To deploy this application for testing we must create a Web ARchive (WAR). "
"First we must define the WAR descriptor as <filename>src/main/webapp/WEB-INF/"
"web.xml</filename>"
msgstr ""
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"To build and deploy call <literal>mvn package in your project "
"directory and copy the <filename>hibernate-tutorial.war file into "
"your Tomcat <filename>webapps directory."
msgstr ""
"ë¹Œë“œí•˜ê³ ë°°ì¹˜í•˜ê¸° 위해 ë‹¹ì‹ ì˜ í”„ë¡œì 트 ë””ë ‰í† ë¦¬ ë‚´ì—ì„œ <literal>ant warhibernate-tutorial.war 파ì¼ì„ ë‹¹ì‹ ì˜ "
"Tomcat <literal>webapp ë””ë ‰í† ë¦¬ë¡œ 복사하ë¼. ë§Œì¼ ë‹¹ì‹ ì´ Tomcatì„ ì„¤"
"치하지 않았다면, ê·¸ê²ƒì„ ë‚´ë ¤ë°›ì•„ 설치 ì§€ì¹¨ë“¤ì„ ë”°ë¥´ë¼. ë‹¹ì‹ ì€ ì´ ì–´í”Œë¦¬ì¼€ì´ì…˜"
"ì„ ë°°ì¹˜í•˜ê¸° 위해 ìž„ì˜ì˜ Tomcat êµ¬ì„±ì„ ë³€ê²½í•˜ì§€ 않아야 한다."
#. Tag: para
#, no-c-format
msgid ""
"If you do not have Tomcat installed, download it from <ulink url=\"http://"
"tomcat.apache.org/\" /> and follow the installation instructions. Our "
"application requires no changes to the standard Tomcat configuration."
msgstr ""
#. Tag: para
#, no-c-format
msgid ""
"Once deployed and Tomcat is running, access the application at "
"<literal>http://localhost:8080/hibernate-tutorial/eventmanager. "
"Make sure you watch the Tomcat log to see Hibernate initialize when the "
"first request hits your servlet (the static initializer in "
"<literal>HibernateUtil is called) and to get the detailed output "
"if any exceptions occurs."
msgstr ""
"ì¼ë‹¨ ë°°ì¹˜í–ˆê³ Tomcatì´ ì‹¤í–‰ì¤‘ì´ë©´, <literal>http://localhost:8080/hibernate-"
"tutorial/eventmanager</literal>ë¡œ 어플리케ì´ì…˜ì— ì ‘ê·¼í•˜ë¼. 첫 번째 ìš”ì²ì´ 당"
"ì‹ ì˜ ì„œë¸”ë¦¿ì— ë„ë‹¬í• ë•Œ Hibernateê°€ 초기화(<literal>HibernateUtil "
"ë‚´ì— ìžˆëŠ” static initializerê°€ 호출ëœë‹¤) ë˜ëŠ” ê²ƒì„ ë³´ê¸° 위해 ê·¸ë¦¬ê³ ë§Œì¼ ì–´"
"ë–¤ 예외ìƒí™©ë“¤ì´ ë°œìƒí• 경우 ìƒì„¸í•œ ì¶œë ¥ì„ ì–»ê¸° 위해서 Tomcat 로그를 지켜보ë„"
"ë¡ í•˜ë¼."
#. Tag: title
#, no-c-format
msgid "Summary"
msgstr "요약"
#. Tag: para
#, fuzzy, no-c-format
msgid ""
"This tutorial covered the basics of writing a simple standalone Hibernate "
"application and a small web application. More tutorials are available from "
"the Hibernate <ulink url=\"http://hibernate.org\">website."
msgstr ""
"ì´ íŠœí† ë¦¬ì–¼ì€ ê°„ë‹¨í•œ ìŠ¤íƒ ë“œì–¼ë¡ Hibernate 어플리케ì´ì…˜ê³¼ í•˜ë‚˜ì˜ ìž‘ì€ ì›¹ 어플"
"리케ì´ì…˜ì„ 작성하는 기초를 다루었다."
#~ msgid "Introduction to Hibernate"
#~ msgstr "Hibernate 개요"
#~ msgid "Preface"
#~ msgstr "머리ë§"
#~ msgid ""
#~ "This chapter is an introductory tutorial for new users of Hibernate. We "
#~ "start with a simple command line application using an in-memory database "
#~ "and develop it in easy to understand steps."
#~ msgstr ""
#~ "ì´ ìž¥ì€ Hibernate 초심ìžë¥¼ 위한 ê°œë¡ ì ì¸ íŠœí† ë¦¬ì–¼ì´ë‹¤. 우리는 메모리-ë‚´ ë°"
#~ "ì´í„°ë² ì´ìŠ¤ë¥¼ 사용하는 간단한 ëª…ë ¹ ë¼ì¸ 어플리케ì´ì…˜ìœ¼ë¡œ ì‹œìž‘í•˜ê³ ë‹¨ê³„ë“¤ì„ "
#~ "ì´í•´í•˜ë„ë¡ ì‰½ê²Œ ê·¸ê²ƒì„ ê°œë°œí•œë‹¤."
#~ msgid ""
#~ "This tutorial is intended for new users of Hibernate but requires Java "
#~ "and SQL knowledge. It is based on a tutorial by Michael Gloegl, the third-"
#~ "party libraries we name are for JDK 1.4 and 5.0. You might need others "
#~ "for JDK 1.3."
#~ msgstr ""
#~ "ì´ íŠœí† ë¦¬ì–¼ì€ Hibernate ì‹ ê·œ 사용ìžë“¤ì„ ì˜ë„í•˜ê³ ìžˆì§€ë§Œ Java와 SQL 지ì‹ì„ "
#~ "필요로 한다. ê·¸ê²ƒì€ Michael Gloeglì´ ìž‘ì„±í•œ íŠœí† ë¦¬ì–¼ì— ê¸°ì´ˆí•˜ë©°, 우리가 명"
#~ "명하는 ì œ 3ì˜ ë¼ì´ë¸ŒëŸ¬ë¦¬ë“¤ì€ JDK 1.4와 5.0 ë²„ì „ìš©ì´ë‹¤. ë‹¹ì‹ ì€ JDK1.3ì— ëŒ€"
#~ "í•´ 다른 ë¼ì´ë¸ŒëŸ¬ë¦¬ë“¤ì„ 필요로 í• ìˆ˜ë„ ìžˆë‹¤."
#~ msgid ""
#~ "The source code for the tutorial is included in the distribution in the "
#~ "<literal>doc/reference/tutorial/ directory."
#~ msgstr ""
#~ "íŠœí† ë¦¬ì–¼ìš© 소스는 <literal>doc/reference/tutorial/ ë””ë ‰í† ë¦¬ ë‚´"
#~ "ì— ìžˆëŠ” ë°°í¬ë³¸ ë‚´ì— í¬í•¨ë˜ì–´ 있다."
#~ msgid ""
#~ "First, we'll create a simple console-based Hibernate application. We use "
#~ "an Java database (HSQL DB), so we do not have to install any database "
#~ "server."
#~ msgstr ""
#~ "ë¨¼ì €, 우리는 í•œ ê°œì˜ ê°„ë‹¨í•œ 콘솔-기반 Hibernate 어플리케ì´ì…˜ì„ ìƒì„±ì‹œí‚¬ 것"
#~ "ì´ë‹¤. 우리는 메모리-ë‚´ ë°ì´í„°ë² ì´ìŠ¤(HSQL DB)를 사용하므로, 우리는 ì–´ë–¤ ë°"
#~ "ì´í„°ë² ì´ìŠ¤ 서버를 설치하지 ì•Šì•„ë„ ëœë‹¤."
#~ msgid ""
#~ "The first thing we do, is set up our development directory and put all "
#~ "the Java libraries we need into it. Download the Hibernate distribution "
#~ "from the Hibernate website. Extract the package and place all required "
#~ "libraries found in <literal>/lib into into the /lib ë””ë ‰í† ë¦¬ ì†ì— 위치지워ë¼. 그것"
#~ "ì€ ë‹¤ìŒê³¼ ê°™ì„ ê²ƒì´ë‹¤:"
#~ msgid ""
#~ "This is the minimum set of required libraries (note that we also copied "
#~ "hibernate3.jar, the main archive) for Hibernate <emphasis>at the time of "
#~ "writing</emphasis>. The Hibernate release you are using might require "
#~ "more or less libraries. See the <literal>README.txt file in the "
#~ "<literal>lib/ directory of the Hibernate distribution for more "
#~ "information about required and optional third-party libraries. (Actually, "
#~ "Log4j is not required but preferred by many developers.)"
#~ msgstr ""
#~ "ì´ê²ƒì€ <emphasis>ê¸€ì˜ ìž‘ì„± ì‹œì ì—ì„œ Hibernateì— í•„ìˆ˜ì ì¸ ìµœì†Œí•œ"
#~ "ì˜ ì„¸íŠ¸ì´ë‹¤(우리는 ë˜í•œ ë©”ì¸ ì•„ì¹´ì´ë¸Œì¸ hibernate3.jar를 복사했ìŒì„ 노트하"
#~ "ë¼). ë‹¹ì‹ ì´ ì‚¬ìš© ì¤‘ì¸ Hibernate ë°°í¬ë³¸ì´ ë” ë§Žê±°ë‚˜ 보다 ì ì€ ë¼ì´ë¸ŒëŸ¬ë¦¬ë“¤"
#~ "ì„ í•„ìš”ë¡œ í• ìˆ˜ë„ ìžˆë‹¤. 필수 ë¼ì´ë¸ŒëŸ¬ë¦¬ë“¤ê³¼ ì„ íƒì ì¸ ì œ3ì˜ ë¼ì´ë¸ŒëŸ¬ë¦¬ë“¤ì— "
#~ "대한 추가 ì •ë³´ëŠ” Hibernate ë°°í¬ë³¸ì˜ <literal>lib/ ë””ë ‰í† ë¦¬ ë‚´ì— "
#~ "있는 <literal>README.txt 파ì¼ì„ ë³´ë¼. (ì‹¤ì œë¡œ, Log4j는 필수는 ì•„"
#~ "니지만 ë§Žì€ ê°œë°œìžë“¤ì— ì˜í•´ ì„ í˜¸ëœë‹¤.)"
#~ msgid ""
#~ "Our first persistent class is a simple JavaBean class with some "
#~ "properties:"
#~ msgstr ""
#~ "ìš°ë¦¬ì˜ ì²« 번째 ì˜ì† í´ëž˜ìŠ¤ëŠ” 몇몇 프로í¼í‹°ë“¤ì„ 가진 간단한 ìžë°”빈즈 í´ëž˜ìŠ¤"
#~ "ì´ë‹¤:"
#~ msgid ""
#~ "Place this Java source file in a directory called <literal>src "
#~ "in the development folder, and in its correct package. The directory "
#~ "should now look like this:"
#~ msgstr ""
#~ "ì´ Java 소스 파ì¼ì„ 개발 í´ë” ë‚´ì˜ <literal>srcë¡œ ëª…ëª…ëœ ë””ë ‰í† "
#~ "리 ì†ì— 있는 위치지워ë¼. ì´ì œ ê·¸ ë””ë ‰í† ë¦¬ëŠ” 다ìŒê³¼ ê°™ì„ ê²ƒì´ë‹¤:"
#~ msgid "In the next step, we tell Hibernate about this persistent class."
#~ msgstr ""
#~ "ë‹¤ìŒ ë‹¨ê³„ì—ì„œ, 우리는 Hiberanteì—게 ì´ ì˜ì† í´ëž˜ìŠ¤ì— 대해 ì•Œë ¤ 준다."
#~ msgid ""
#~ "The <literal>id element is the declaration of the identifer "
#~ "property, <literal>name=\"id\" declares the name of the Java "
#~ "property - Hibernate will use the getter and setter methods to access the "
#~ "property. The column attribute tells Hibernate which column of the "
#~ "<literal>EVENTS table we use for this primary key. The nested "
#~ "<literal>generator element specifies the identifier generation "
#~ "strategy, in this case we used <literal>native, which picks the "
#~ "best strategy depending on the configured database (dialect). Hibernate "
#~ "supports database generated, globally unique, as well as application "
#~ "assigned identifiers (or any strategy you have written an extension for)."
#~ msgstr ""
#~ "<literal>id 요소는 ì‹ë³„ìž í”„ë¡œí¼í‹°ì˜ ì„ ì–¸ì´ê³ , name="
#~ "\"id\"</literal>는 Java 프로í¼í‹°ì˜ ì´ë¦„ì„ ì„ ì–¸í•œë‹¤ - Hibernate는 ê·¸ 프로í¼"
#~ "í‹°ì— ì ‘ê·¼í•˜ëŠ”ë° getter ë° setter ë©”ì†Œë“œë“¤ì„ ì‚¬ìš©í• ê²ƒì´ë‹¤. column ì†ì„±ì€ "
#~ "우리가 <literal>EVENTS í…Œì´ë¸”ì˜ ì–´ëŠ ì»¬ëŸ¼ì„ ì´ í”„ë¼ì´ë¨¸ë¦¬ 키로 "
#~ "사용하는지를 Hibernateì—게 ì•Œë ¤ì¤€ë‹¤. ë‚´í¬ëœ <literal>generator "
#~ "요소는 ì‹ë³„ìž ìƒì„± ë°©ë„를 ì§€ì •í•˜ë©°, ì´ ê²½ìš°ì— ìš°ë¦¬ëŠ” <literal>increment, "
#~ "right in the directory next to the <literal>Event Java class "
#~ "source file. The naming of mapping files can be arbitrary, however the "
#~ "<literal>hbm.xml suffix is a convention in the Hibernate "
#~ "developer community. The directory structure should now look like this:"
#~ msgstr ""
#~ "ë‹¤ìŒ ë§¤í•‘ 파ì¼ì€ <literal>Event Java í´ëž˜ìŠ¤ 소스 파ì¼ê³¼ ê°™ì€ ë””"
#~ "ë ‰í† ë¦¬ ì†ì— <literal>Event.hbm.xml로서 ì €ìž¥ë 것ì´ë‹¤. 매핑 파ì¼"
#~ "ë“¤ì— ëŒ€í•œ 네ì´ë°ì€ ìž„ì˜ì ì¼ ìˆ˜ 있지만, ì ‘ë¯¸ì‚¬ <literal>hbm.xml"
#~ "ì€ Hibernate ê°œë°œìž ê³µë™ì²´ ë‚´ì—ì„œ ì»¨ë²¤ì…˜ì´ ë˜ì—ˆë‹¤. ë””ë ‰í† ë¦¬ 구조는 ì´ì œ 다"
#~ "ìŒê³¼ ê°™ì„ ê²ƒì´ë‹¤:"
#~ msgid "We continue with the main configuration of Hibernate."
#~ msgstr "우리는 Hibernateì˜ ë©”ì¸ êµ¬ì„±ì„ ê³„ì† í–‰í•œë‹¤."
#~ msgid ""
#~ "We now have a persistent class and its mapping file in place. It is time "
#~ "to configure Hibernate. Before we do this, we will need a database. HSQL "
#~ "DB, a java-based SQL DBMS, can be downloaded from the HSQL DB website"
#~ "(http://hsqldb.org/). Actually, you only need the <literal>hsqldb.jarlib/ ë§Œì„ í•„ìš”ë¡œ 한다. 개발 í´ë”ì˜ "
#~ "<literal>lib/ ë””ë ‰í† ë¦¬ ì†ì— ì´ íŒŒì¼ì„ 위치지워ë¼."
#~ msgid ""
#~ "Hibernate is the layer in your application which connects to this "
#~ "database, so it needs connection information. The connections are made "
#~ "through a JDBC connection pool, which we also have to configure. The "
#~ "Hibernate distribution contains several open source JDBC connection "
#~ "pooling tools, but will use the Hibernate built-in connection pool for "
#~ "this tutorial. Note that you have to copy the required library into your "
#~ "classpath and use different connection pooling settings if you want to "
#~ "use a production-quality third party JDBC pooling software."
#~ msgstr ""
#~ "Hibernate는 ë‹¹ì‹ ì˜ ì–´í”Œë¦¬ì¼€ì´ì…˜ ë‚´ì—ì„œ ì´ ë°ì´í„°ë² ì´ìŠ¤ì— 연결하는 계층ì´"
#~ "ê³ , ë”°ë¼ì„œ ê·¸ê²ƒì€ ì»¤ë„¥ì…˜ ì •ë³´ë¥¼ 필요로 한다. ì»¤ë„¥ì…˜ë“¤ì€ ë§ˆì°¬ê°€ì§€ë¡œ 구성ë˜"
#~ "어야 하는 í•˜ë‚˜ì˜ JDBC 커넥션 í’€ì„ í†µí•´ 행해진다. Hibernate ë°°í¬ë³¸ì€ 몇몇 "
#~ "오픈 소스 JDBC 커넥션 í’€ë§ ë„êµ¬ë“¤ì„ í¬í•¨í•˜ê³ 있지만, ì´ íŠœí† ë¦¬ì–¼ì—서는 "
#~ "Hibernateì— ì˜í•´ 미리 ë¹Œë“œëœ ì»¤ë„¥ì…˜ í’€ë§ì„ ì‚¬ìš©í• ê²ƒì´ë‹¤. ë‹¹ì‹ ì´ í•„ìˆ˜ ë¼ì´"
#~ "브러리를 ë‹¹ì‹ ì˜ classpath ì†ì— 복사해야 í•˜ê³ ë§Œì¼ ë‹¹ì‹ ì´ ì œí’ˆ-íŠ¹ì§•ì˜ ì œ3"
#~ "ì˜ JDBC í’€ë§ ì†Œí”„íŠ¸ì›¨ì–´ë¥¼ ì‚¬ìš©í•˜ê³ ìž ì›í• 경우ì—는 다른 커넥션 í’€ë§ ì„¤ì •ë“¤"
#~ "ì„ ì‚¬ìš©í•´ì•¼ í•¨ì„ ë…¸íŠ¸í•˜ë¼."
#~ msgid ""
#~ "Copy this file into the source directory, so it will end up in the root "
#~ "of the classpath. Hibernate automatically looks for a file called "
#~ "<literal>hibernate.cfg.xml in the root of the classpath, on "
#~ "startup."
#~ msgstr ""
#~ "ì´ íŒŒì¼ì„ 소스 ë””ë ‰í† ë¦¬ ì†ìœ¼ë¡œ ë³µì‚¬í•˜ê³ , ë”°ë¼ì„œ ê·¸ê²ƒì€ classpathì˜ ë£¨íŠ¸ì—"
#~ "ì„œ ëë‚ ê²ƒì´ë‹¤. Hibernate는 시작 ì‹œì— classpathì˜ ë£¨íŠ¸ì—ì„œ "
#~ "<literal>hibernate.cfg.xmlë¡œ ëª…ëª…ëœ íŒŒì¼ì„ ìžë™ì 으로 찾는다."
#~ msgid ""
#~ "We'll now build the tutorial with Ant. You will need to have Ant "
#~ "installed - get it from the <ulink url=\"http://ant.apache.org/"
#~ "bindownload.cgi\">Ant download page</ulink>. How to install Ant will not "
#~ "be covered here. Please refer to the <ulink url=\"http://ant.apache.org/"
#~ "manual/index.html\">Ant manual</ulink>. After you have installed Ant, we "
#~ "can start to create the buildfile. It will be called <literal>build.xmlë¡œ 명명ë˜ê³ ê°œ"
#~ "ë°œ ë””ë ‰í† ë¦¬ ì†ì— ì§ì ‘ 위치ë 것ì´ë‹¤."
#~ msgid "A basic build file looks like this:"
#~ msgstr "기본 빌드 파ì¼ì€ 다ìŒê³¼ 같다:"
#~ msgid ""
#~ "This will tell Ant to add all files in the lib directory ending with "
#~ "<literal>.jar to the classpath used for compilation. It will "
#~ "also copy all non-Java source files to the target directory, e.g. "
#~ "configuration and Hibernate mapping files. If you now run Ant, you should "
#~ "get this output:"
#~ msgstr ""
#~ "ì´ê²ƒì€ <literal>.jarë¡œ ë나는 lib ë””ë ‰í† ë¦¬ ë‚´ì— ìžˆëŠ” ëª¨ë“ íŒŒì¼ë“¤"
#~ "ì„ ì»´íŒŒì¼ì— 사용ë˜ëŠ” classpathì— ì¶”ê°€í•˜ë„ë¡ Antì—게 ì•Œë ¤ì¤„ 것ì´ë‹¤. ê·¸ê²ƒì€ "
#~ "ë˜í•œ ëª¨ë“ ë¹„-Java 소스 파ì¼ë“¤ì„ ëŒ€ìƒ ë””ë ‰í† ë¦¬ë¡œ ë³µì‚¬í• ê²ƒì´ë‹¤. 예를 들면, "
#~ "구성 ë° Hibernate 매핑 파ì¼ë“¤. ë§Œì¼ ë‹¹ì‹ ì´ Ant를 ì´ì œ ì‹¤í–‰í• ê²½ìš°, ë‹¹ì‹ ì€ "
#~ "ë‹¤ìŒ ì¶œë ¥ì„ ì–»ê²Œ ë 것ì´ë‹¤:"
#~ msgid ""
#~ "Place <literal>HibernateUtil.java in the development source "
#~ "directory, in a package next to <literal>events:"
#~ msgstr ""
#~ "개발 소스 ë””ë ‰í† ë¦¬ ì†ì— <literal>HibernateUtil.java 를 위치지우"
#~ "ê³ , 다ìŒìœ¼ë¡œ <literal>Event.java를 위치지워ë¼:"
#~ msgid ""
#~ "To run this first routine we have to add a callable target to the Ant "
#~ "build file:"
#~ msgstr ""
#~ "ì´ ì²« 번째 ë£¨í‹´ì„ ì‹¤í–‰í•˜ê¸° 위해서 우리는 호출 가능한 대ìƒì„ Ant 빌드 파ì¼"
#~ "ì— ì¶”ê°€í•´ì•¼ 한다:"
#~ msgid ""
#~ "The value of the <literal>action argument is set on the command "
#~ "line when calling the target:"
#~ msgstr ""
#~ "<literal>action ì•„ê·œë¨¼íŠ¸ì˜ ê°’ì€ ëŒ€ìƒì„ í˜¸ì¶œí• ë•Œ ëª…ë ¹ ë¼ì¸ ìƒì—"
#~ "ì„œ ì„¤ì •ëœë‹¤:"
#~ msgid ""
#~ "This is the <literal>INSERT executed by Hibernate, the question "
#~ "marks represent JDBC bind parameters. To see the values bound as "
#~ "arguments, or to reduce the verbosity of the log, check your "
#~ "<literal>log4j.properties."
#~ msgstr ""
#~ "ì´ê²ƒì€ Hibernateì— ì˜í•´ ì‹¤í–‰ëœ <literal>INSERTì´ê³ , 물ìŒí‘œ 기호"
#~ "는 JDBC ë°”ì¸ë“œ 파ë¼ë¯¸í„°ë“¤ì„ 나타낸다. 아규먼트로서 ë°”ì¸ë“œ ëœ ê°’ë“¤ì„ ë³´ê±°"
#~ "나 장황한 로그를 줄ì´ë ¤ë©´ ë‹¹ì‹ ì˜ <literal>log4j.properties를 ì²´"
#~ "í¬í•˜ë¼."
#~ msgid "Now, to execute and test all of this, follow these steps:"
#~ msgstr "ì´ì œ ì´ ëª¨ë“ ê²ƒì„ ì‹¤í–‰í•˜ê³ í…ŒìŠ¤íŠ¸í•˜ê¸° 위해, ë‹¤ìŒ ë‹¨ê³„ë“¤ì„ ë”°ë¥´ë¼:"
#~ msgid ""
#~ "Run <literal>ant run -Daction=store to store something into the "
#~ "database and, of course, to generate the database schema before through "
#~ "hbm2ddl."
#~ msgstr ""
#~ "ë°ì´í„°ë² ì´ìŠ¤ ì†ìœ¼ë¡œ ì–´ë–¤ ê²ƒì„ ì €ìž¥í•˜ê³ ë¬¼ë¡ ì•žì„œ hbm2ddlì„ í†µí•´ ë°ì´í„°ë² ì´"
#~ "스 스키마를 산출시키기 위해 <literal>ant run -Daction=store를 실"
#~ "행하ë¼."
#~ msgid ""
#~ "Now disable hbm2ddl by commenting out the property in your "
#~ "<literal>hibernate.cfg.xml file. Usually you only leave it "
#~ "turned on in continous unit testing, but another run of hbm2ddl would "
#~ "<emphasis>drop everything you have stored - the "
#~ "<literal>create configuration setting actually translates into "
#~ "\"drop all tables from the schema, then re-create all tables, when the "
#~ "SessionFactory is build\"."
#~ msgstr ""
#~ "ì´ì œ ë‹¹ì‹ ì˜ <literal>hibernate.cfg.xml íŒŒì¼ ì†ì—ì„œ ê·¸ 프로í¼í‹°"
#~ "를 주ì„ì²˜ë¦¬í•¨ìœ¼ë¡œì¨ hbm2ddlì„ ì‚¬ìš©ë¶ˆê°€ëŠ¥í•˜ê²Œ 하ë¼. 대개 ë‹¹ì‹ ì€ ì§€ì†ë˜ëŠ” 단"
#~ "위 테스팅ì—서는 ê·¸ê²ƒì„ ì‚¬ìš© 가능하게 ë‚´ë²„ë ¤ë‘ì–´ë„ ë˜ì§€ë§Œ, ë˜ ë‹¤ë¥¸ hbm2ddl"
#~ "ì˜ ì‹¤í–‰ì€ ë‹¹ì‹ ì´ ì €ìž¥í–ˆë˜ ëª¨ë“ ê²ƒì„ <emphasis>drop시킬 것ì´ë‹¤ "
#~ "- <literal>create 구성 ì„¤ì •ì€ ì‹¤ì œë¡œ \"스키마로부터 ëª¨ë“ í…Œì´ë¸”"
#~ "ë“¤ì„ ë“œë¡ì‹œí‚¤ê³ 나서, SessionFactoryê°€ 빌드ë ë•Œ ëª¨ë“ í…Œì´ë¸”ë“¤ì„ ë‹¤ì‹œ ìƒì„±"
#~ "시키는 것\"으로 변환ëœë‹¤."
#~ msgid ""
#~ "If you now call Ant with <literal>-Daction=list, you should see "
#~ "the events you have stored so far. You can of course also call the "
#~ "<literal>store action a few times more."
#~ msgstr ""
#~ "ë§Œì¼ ë‹¹ì‹ ì´ ì§€ê¸ˆ <literal>-Daction=listë¡œ Ant를 í˜¸ì¶œí• ê²½ìš°, 당"
#~ "ì‹ ì€ ë‹¹ì‹ ì´ ì§€ê¸ˆê¹Œì§€ ì €ìž¥í–ˆë˜ ì´ë²¤íŠ¸ë“¤ì„ 보게 ë 것ì´ë‹¤. ë¬¼ë¡ ë‹¹ì‹ ì€ ë˜í•œ "
#~ "여러 번 <literal>store ì•¡ì…˜ì„ í˜¸ì¶œí• ìˆ˜ 있다."
#~ msgid ""
#~ "Note: Most new Hibernate users fail at this point and we see questions "
#~ "about <emphasis>Table not found error messages regularly. "
#~ "However, if you follow the steps outlined above you will not have this "
#~ "problem, as hbm2ddl creates the database schema on the first run, and "
#~ "subsequent application restarts will use this schema. If you change the "
#~ "mapping and/or database schema, you have to re-enable hbm2ddl once again."
#~ msgstr ""
#~ "노트 : ëŒ€ë¶€ë¶„ì˜ Hibernate 사용ìžë“¤ì€ ì´ ì§€ì ì—ì„œ ì‹¤íŒ¨í•˜ê³ ìš°ë¦¬ëŠ” ì •ê¸°ì 으"
#~ "ë¡œ <emphasis>Table not found 오류 ë©”ì‹œì§€ë“¤ì— ê´€í•œ ì§ˆë¬¸ì„ ë°›ëŠ”"
#~ "다. 하지만 ë§Œì¼ ë‹¹ì‹ ì´ ìœ„ì— ì¡°ëª…ëœ ë‹¨ê²Œë“¤ì„ ë”°ë¥¼ 경우 ë‹¹ì‹ ì€ ì´ ë¬¸ì œë¥¼ 겪"
#~ "지 ì•Šì„ ê²ƒì´ê³ , hbm2ddlì´ ì²˜ìŒ ì‹¤í–‰ ì‹œì— ë°ì´í„°ë² ì´ìŠ¤ 스키마를 ìƒì„±ì‹œí‚¤ë¯€"
#~ "ë¡œ, ì°¨í›„ì˜ ì–´í”Œë¦¬ì¼€ì´ì…˜ ìž¬ì‹œìž‘ì€ ì´ ìŠ¤í‚¤ë§ˆë¥¼ ì‚¬ìš©í• ê²ƒì´ë‹¤. ë§Œì¼ ë‹¹ì‹ ì´ ë§¤"
#~ "í•‘ ê·¸ë¦¬ê³ /ë˜ëŠ” ë°ì´í„°ë² ì´ìŠ¤ 스키마를 ë³€ê²½í• ê²½ìš°ì—, ë‹¹ì‹ ì€ ë‹¤ì‹œ 한번 ë” "
#~ "hbm2ddlì„ ì´ìš© 가능하ë„ë¡ í•´ì•¼ 한다."
#~ msgid ""
#~ "Create a new mapping file called <literal>Person.hbm.xml (don't "
#~ "forget the DTD reference at the top):"
#~ msgstr ""
#~ "<literal>Person.hbm.xmlë¡œ 명명ë˜ëŠ” 새로운 매핑 파ì¼ì„ ìƒì„±ì‹œì¼œ"
#~ "ë¼ (ë§¨ìœ„ì— DTD 참조를 잊지ë§ë¼):"
#~ msgid ""
#~ "We need a unidirectional, many-valued associations, implemented with a "
#~ "<literal>Set. Let's write the code for this in the Java classes "
#~ "and then map it:"
#~ msgstr ""
#~ "우리는 í•˜ë‚˜ì˜ <literal>Set으로 구현ëœ, í•˜ë‚˜ì˜ ë‹¨ë°©í–¥, 다중값 ì—°"
#~ "ê´€ë“¤ì„ í•„ìš”ë¡œ 한다. Java í´ëž˜ìŠ¤ë“¤ ë‚´ì— ì´ë¥¼ 위한 코드를 ìž‘ì„±í•˜ê³ ê·¸ëŸ° 다"
#~ "ìŒ ê·¸ê²ƒì„ ë§¤í•‘ì‹œí‚¤ìž:"
#~ msgid ""
#~ "We add a collection of value typed objects to the <literal>Person, and the collection is again a Set "
#~ "ì—”í‹°í‹°ì— ì¶”ê°€ì‹œí‚¨ë‹¤. 우리는 email 주소를 ì €ìž¥í•˜ê³ ìž ì›í•˜ë¯€ë¡œ, 우리가 사용"
#~ "하는 íƒ€ìž…ì€ <literal>Stringì´ê³ , ê·¸ ì½œë ‰ì…˜ì€ ë‹¤ì‹œ í•œ ê°œì˜ "
#~ "<literal>Setì´ë‹¤:"
#~ msgid "Let's turn this into a small web application."
#~ msgstr "Let's turn this into a small web application."
#~ msgid ""
#~ "Create a new class in your source directory, in the <literal>events는 ìš°ë¦¬ì˜ ì„±ìž¥í•˜ëŠ” 어플리케ì´ì…˜ì„ ë”ì´ìƒ ê°"
#~ "당하지 못한다. ë‹¹ì‹ ì˜ ì†ŒìŠ¤ ë””ë ‰í† ë¦¬ì—ì„œ <literal>events 패키지 "
#~ "ë‚´ì— ìƒˆë¡œìš´ í´ëž˜ìŠ¤ë¥¼ ìƒì„±ì‹œì¼œë¼:"
#~ msgid ""
#~ "To deploy this application you have to create a web archive, a WAR. Add "
#~ "the following Ant target to your <literal>build.xml:"
#~ msgstr ""
#~ "ì´ ì–´í”Œë¦¬ì¼€ì´ì…˜ì„ 배치하기 위해서 ë‹¹ì‹ ì€ í•˜ë‚˜ì˜ ì›¹ ì•„ì¹´ì´ë¸Œ, WAR를 ìƒì„±ì‹œ"
#~ "켜야 한다. ë‹¤ìŒ Ant targetì„ ë‹¹ì‹ ì˜ <literal>build.xml ë‚´ì— ì¶”ê°€"
#~ "하ë¼:"
#~ msgid ""
#~ "This target creates a file called <literal>hibernate-tutorial.war descriptor, which is expected in the base "
#~ "directory of your project:"
#~ msgstr ""
#~ "ì´ targetì€ ë‹¹ì‹ ì˜ í”„ë¡œì 트 ë””ë ‰í† ë¦¬ ë‚´ì— <literal>hibernate-tutorial."
#~ "war</literal>ë¡œ ëª…ëª…ëœ í•˜ë‚˜ì˜ íŒŒì¼ì„ ìƒì„±ì‹œí‚¨ë‹¤. ê·¸ê²ƒì€ ë‹¹ì‹ ì˜ í”„ë¡œì íŠ¸ì˜ "
#~ "기본 ë””ë ‰í† ë¦¬ ë‚´ì— ê¸°ëŒ€ë˜ëŠ” ëª¨ë“ ë¼ì´ë¸ŒëŸ¬ë¦¬ë“¤ê³¼ <literal>web.xml. This is the "
#~ "Java servlet development kit, if you don't have this library already, get "
#~ "it from the Sun website and copy it to your library directory. However, "
#~ "it will be only used for compliation and excluded from the WAR package."
#~ msgstr ""
#~ "ë‹¹ì‹ ì´ ì›¹ 어플리케ì´ì…˜ì„ 컴파ì¼í•˜ê³ 배치하기 ì „ì—, í•˜ë‚˜ì˜ ë¶€ê°€ì ì¸ ë¼ì´ë¸Œ"
#~ "러리가 í•„ìš”í•¨ì„ ë…¸íŠ¸í•˜ë¼: <literal>jsdk.jar. ë‹¹ì‹ ì´ ì´ë¯¸ ì´ ë¼ì´"
#~ "브러리를 ê°–ê³ ìžˆì§€ ì•Šì„ ê²½ìš°, ì´ê²ƒì€ Java servlet development kitì´ë©°, "
#~ "Sun 웹 사ì´íŠ¸ë¡œë¶€í„° ê·¸ê²ƒì„ ì–»ì–´ì„œ ê·¸ê²ƒì„ ë‹¹ì‹ ì˜ ë¼ì´ë¸ŒëŸ¬ë¦¬ ë””ë ‰í† ë¦¬ì— ë³µì‚¬"
#~ "하ë¼. 하지만 ê·¸ê²ƒì€ ì˜¤ì§ ì»´íŒŒì¼ ì‹œì—만 사용ë 것ì´ê³ WAR 패키지ì—서는 ì œì™¸"
#~ "ëœë‹¤."
#~ msgid ""
#~ "If you already feel confident with Hibernate, continue browsing through "
#~ "the reference documentation table of contents for topics you find "
#~ "interesting - most asked are transactional processing (<xref linkend="
#~ "\"transactions\"/>), fetch performance (<xref linkend=\"performance\"/>), "
#~ "or the usage of the API (<xref linkend=\"objectstate\"/>) and the query "
#~ "features (<xref linkend=\"objectstate-querying\"/>)."
#~ msgstr ""
#~ "ë§Œì¼ ë‹¹ì‹ ì´ ì´ë¯¸ Hibernateì— ìžì‹ ì´ ìžˆë‹¤ê³ ëŠë‚€ë‹¤ë©´, ë‹¹ì‹ ì´ í¥ë¯¸ë¥¼ 찾는 주"
#~ "ì œë“¤ì— ëŒ€í•œ 참조 문서 목차를 ê³„ì† ë¸Œë¼ìš°ì§•í•˜ë¼ - 가장 ë§Žì´ ìš”ì²ë˜ëŠ” ê²ƒì€ "
#~ "트랜ìžì…˜ 처리(<xref linkend=\"transactions\"/>), 페치 í¼í¬ë¨¼ìŠ¤()," ë˜ëŠ”="" api="" 사용법(<xref="" linkend="\"objectstate\"/"" ">),="" ê·¸ë¦¬ê³ ="" 질ì˜="" 특징들(<xref="">)ì´ë‹¤."
#~ msgid ""
#~ "Don't forget to check the Hibernate website for more (specialized) "
#~ "tutorials."
#~ msgstr ""
#~ "ë” ë§Žì€(특화ëœ) íŠœí† ë¦¬ì–¼ë“¤ì— ëŒ€í•´ì„œëŠ” Hibernate 웹 사ì´íŠ¸ë¥¼ ì²´í¬í•˜ëŠ” ê²ƒì„ "
#~ "잊지 ë§ë¼."
Other Hibernate examples (source code examples)
Here is a short list of links related to this Hibernate tutorial.po source code file:
|