Hibernate SVN: r14157 - annotations/trunk/src/java/org/hibernate/cfg.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2007-10-29 17:28:37 -0400 (Mon, 29 Oct 2007)
New Revision: 14157
Modified:
annotations/trunk/src/java/org/hibernate/cfg/AnnotationConfiguration.java
Log:
ANN-671 log Validator not present only once
Modified: annotations/trunk/src/java/org/hibernate/cfg/AnnotationConfiguration.java
===================================================================
--- annotations/trunk/src/java/org/hibernate/cfg/AnnotationConfiguration.java 2007-10-28 16:51:03 UTC (rev 14156)
+++ annotations/trunk/src/java/org/hibernate/cfg/AnnotationConfiguration.java 2007-10-29 21:28:37 UTC (rev 14157)
@@ -93,6 +93,7 @@
private boolean inSecondPass = false;
private transient ReflectionManager reflectionManager;
private boolean isDefaultProcessed = false;
+ private boolean isValidatorNotPresentLogged;
public AnnotationConfiguration() {
super();
@@ -338,6 +339,7 @@
"true" )
.equalsIgnoreCase( "true" );
+ //TODO search for the method only once and cache it?
Constructor validatorCtr = null;
Method applyMethod = null;
try {
@@ -350,7 +352,10 @@
applyMethod = classValidator.getMethod( "apply", PersistentClass.class );
}
catch (ClassNotFoundException e) {
- log.info( "Hibernate Validator not found: ignoring" );
+ if ( !isValidatorNotPresentLogged ) {
+ log.info( "Hibernate Validator not found: ignoring" );
+ }
+ isValidatorNotPresentLogged = true;
}
catch (NoSuchMethodException e) {
throw new AnnotationException( e );
18 years, 5 months
Hibernate SVN: r14156 - core/trunk/core/src/main/java/org/hibernate/cfg.
by hibernate-commits@lists.jboss.org
Author: d.plentz
Date: 2007-10-28 12:51:03 -0400 (Sun, 28 Oct 2007)
New Revision: 14156
Modified:
core/trunk/core/src/main/java/org/hibernate/cfg/HbmBinder.java
Log:
[HHH-1916] param values in generator element should be trimmed during HbmBinding
Modified: core/trunk/core/src/main/java/org/hibernate/cfg/HbmBinder.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/cfg/HbmBinder.java 2007-10-28 16:50:46 UTC (rev 14155)
+++ core/trunk/core/src/main/java/org/hibernate/cfg/HbmBinder.java 2007-10-28 16:51:03 UTC (rev 14156)
@@ -1996,7 +1996,7 @@
Iterator iter = subnode.elementIterator( "param" );
while ( iter.hasNext() ) {
Element childNode = (Element) iter.next();
- params.setProperty( childNode.attributeValue( "name" ), childNode.getText() );
+ params.setProperty( childNode.attributeValue( "name" ), childNode.getTextTrim() );
}
model.setIdentifierGeneratorProperties( params );
18 years, 6 months
Hibernate SVN: r14155 - core/branches/Branch_3_2/src/org/hibernate/cfg.
by hibernate-commits@lists.jboss.org
Author: d.plentz
Date: 2007-10-28 12:50:46 -0400 (Sun, 28 Oct 2007)
New Revision: 14155
Modified:
core/branches/Branch_3_2/src/org/hibernate/cfg/HbmBinder.java
Log:
[HHH-1916] param values in generator element should be trimmed during HbmBinding
Modified: core/branches/Branch_3_2/src/org/hibernate/cfg/HbmBinder.java
===================================================================
--- core/branches/Branch_3_2/src/org/hibernate/cfg/HbmBinder.java 2007-10-27 12:56:49 UTC (rev 14154)
+++ core/branches/Branch_3_2/src/org/hibernate/cfg/HbmBinder.java 2007-10-28 16:50:46 UTC (rev 14155)
@@ -1997,7 +1997,7 @@
Iterator iter = subnode.elementIterator( "param" );
while ( iter.hasNext() ) {
Element childNode = (Element) iter.next();
- params.setProperty( childNode.attributeValue( "name" ), childNode.getText() );
+ params.setProperty( childNode.attributeValue( "name" ), childNode.getTextTrim() );
}
model.setIdentifierGeneratorProperties( params );
18 years, 6 months
Hibernate SVN: r14154 - core/trunk/documentation/manual/translations/es-ES/content.
by hibernate-commits@lists.jboss.org
Author: xhuang(a)jboss.com
Date: 2007-10-27 08:56:49 -0400 (Sat, 27 Oct 2007)
New Revision: 14154
Modified:
core/trunk/documentation/manual/translations/es-ES/content/architecture.po
core/trunk/documentation/manual/translations/es-ES/content/association_mapping.po
core/trunk/documentation/manual/translations/es-ES/content/basic_mapping.po
core/trunk/documentation/manual/translations/es-ES/content/batch.po
core/trunk/documentation/manual/translations/es-ES/content/best_practices.po
core/trunk/documentation/manual/translations/es-ES/content/collection_mapping.po
core/trunk/documentation/manual/translations/es-ES/content/component_mapping.po
core/trunk/documentation/manual/translations/es-ES/content/configuration.po
core/trunk/documentation/manual/translations/es-ES/content/events.po
core/trunk/documentation/manual/translations/es-ES/content/example_mappings.po
core/trunk/documentation/manual/translations/es-ES/content/example_parentchild.po
core/trunk/documentation/manual/translations/es-ES/content/example_weblog.po
core/trunk/documentation/manual/translations/es-ES/content/filters.po
core/trunk/documentation/manual/translations/es-ES/content/inheritance_mapping.po
core/trunk/documentation/manual/translations/es-ES/content/performance.po
core/trunk/documentation/manual/translations/es-ES/content/persistent_classes.po
core/trunk/documentation/manual/translations/es-ES/content/preface.po
core/trunk/documentation/manual/translations/es-ES/content/query_criteria.po
core/trunk/documentation/manual/translations/es-ES/content/query_hql.po
core/trunk/documentation/manual/translations/es-ES/content/query_sql.po
core/trunk/documentation/manual/translations/es-ES/content/session_api.po
core/trunk/documentation/manual/translations/es-ES/content/toolset_guide.po
core/trunk/documentation/manual/translations/es-ES/content/transactions.po
core/trunk/documentation/manual/translations/es-ES/content/tutorial.po
core/trunk/documentation/manual/translations/es-ES/content/xml.po
Log:
PO generated via es-ES XML and English XML
Modified: core/trunk/documentation/manual/translations/es-ES/content/architecture.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/architecture.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/architecture.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,216 +1,580 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:21
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: architecture.xml:21
+#, no-c-format
msgid "Architecture"
msgstr "Arquitectura"
-#: index.docbook:24
+#. Tag: title
+#: architecture.xml:24
+#, no-c-format
msgid "Overview"
-msgstr "Visión General"
+msgstr "Visión General"
-#: index.docbook:26
+#. Tag: para
+#: architecture.xml:26
+#, no-c-format
msgid "A (very) high-level view of the Hibernate architecture:"
-msgstr "Una visión a (muy) alto nivel de la arquitectura de Hibernate:"
+msgstr "Una visión a (muy) alto nivel de la arquitectura de Hibernate:"
-#: index.docbook:39
-msgid "This diagram shows Hibernate using the database and configuration data to provide persistence services (and persistent objects) to the application."
-msgstr "Este diagrama muestra a Hibernate usando la base de datos y los datos de configuración para proveer servicios de persistencia (y objetos persistentes) a la aplicación."
+#. Tag: para
+#: architecture.xml:39
+#, no-c-format
+msgid ""
+"This diagram shows Hibernate using the database and configuration data to "
+"provide persistence services (and persistent objects) to the application."
+msgstr ""
+"Este diagrama muestra a Hibernate usando la base de datos y los datos de "
+"configuración para proveer servicios de persistencia (y objetos "
+"persistentes) a la aplicación."
-#: index.docbook:44
-msgid "We would like to show a more detailed view of the runtime architecture. Unfortunately, Hibernate is flexible and supports several approaches. We will show the two extremes. The \"lite\" architecture has the application provide its own JDBC connections and manage its own transactions. This approach uses a minimal subset of Hibernate's APIs:"
-msgstr "Nos gustaría mostrar una vista más detallada de la arquitectura de tiempo de ejecución. Desafortunadamente, Hibernate es flexible y soporta diferentes enfoques. Mostraremos los dos extremos. En la arquitectura \"sencilla\", es la aplicación la que provee su propias conexiones JDBC y gestiona sus propias transacciones. Este enfoque usa un mínimo subconjunto de la API de Hibernate:"
+#. Tag: para
+#: architecture.xml:44
+#, no-c-format
+msgid ""
+"We would like to show a more detailed view of the runtime architecture. "
+"Unfortunately, Hibernate is flexible and supports several approaches. We "
+"will show the two extremes. The \"lite\" architecture has the application "
+"provide its own JDBC connections and manage its own transactions. This "
+"approach uses a minimal subset of Hibernate's APIs:"
+msgstr ""
+"Nos gustaría mostrar una vista más detallada de la arquitectura de tiempo de "
+"ejecución. Desafortunadamente, Hibernate es flexible y soporta diferentes "
+"enfoques. Mostraremos los dos extremos. En la arquitectura \"sencilla\", es "
+"la aplicación la que provee su propias conexiones JDBC y gestiona sus "
+"propias transacciones. Este enfoque usa un mínimo subconjunto de la API de "
+"Hibernate:"
-#: index.docbook:61
-msgid "The \"full cream\" architecture abstracts the application away from the underlying JDBC/JTA APIs and lets Hibernate take care of the details."
-msgstr "La arquitectura \"full cream\" abstrae a la aplicación de las APIs de JDBC/JTA y deja que Hibernate se encargue de los detalles."
+#. Tag: para
+#: architecture.xml:61
+#, no-c-format
+msgid ""
+"The \"full cream\" architecture abstracts the application away from the "
+"underlying JDBC/JTA APIs and lets Hibernate take care of the details."
+msgstr ""
+"La arquitectura \"full cream\" abstrae a la aplicación de las APIs de JDBC/"
+"JTA y deja que Hibernate se encargue de los detalles."
-#: index.docbook:75
+#. Tag: para
+#: architecture.xml:75
+#, fuzzy, no-c-format
msgid "Heres some definitions of the objects in the diagrams:"
-msgstr "He aquí algunas definiciones de los objetos en los diagramas:"
+msgstr ""
+"He aquí algunas definiciones de los objetos en los diagramas: <placeholder-1/"
+">"
-#: index.docbook:80
+#. Tag: term
+#: architecture.xml:80
+#, no-c-format
msgid "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
msgstr "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
-#: index.docbook:82
-msgid "A threadsafe (immutable) cache of compiled mappings for a single database. A factory for <literal>Session</literal> and a client of <literal>ConnectionProvider</literal>. Might hold an optional (second-level) cache of data that is reusable between transactions, at a process- or cluster-level."
-msgstr "Caché threadsafe (inmutable) de mapeos compilados para una sola base de datos. Es una fábrica de <literal>Session</literal> y un cliente de <literal>ConnectionProvider</literal>. Opcionalmente, puede mantener una caché (de segundo nivel) de datos reusables entre transacciones, a un nivel de proceso o de cluster."
+#. Tag: para
+#: architecture.xml:82
+#, no-c-format
+msgid ""
+"A threadsafe (immutable) cache of compiled mappings for a single database. A "
+"factory for <literal>Session</literal> and a client of "
+"<literal>ConnectionProvider</literal>. Might hold an optional (second-level) "
+"cache of data that is reusable between transactions, at a process- or "
+"cluster-level."
+msgstr ""
+"Caché threadsafe (inmutable) de mapeos compilados para una sola base de "
+"datos. Es una fábrica de <literal>Session</literal> y un cliente de "
+"<literal>ConnectionProvider</literal>. Opcionalmente, puede mantener una "
+"caché (de segundo nivel) de datos reusables entre transacciones, a un nivel "
+"de proceso o de cluster."
-#: index.docbook:92
+#. Tag: term
+#: architecture.xml:92
+#, no-c-format
msgid "Session (<literal>org.hibernate.Session</literal>)"
msgstr "Session (<literal>org.hibernate.Session</literal>)"
-#: index.docbook:94
-msgid "A single-threaded, short-lived object representing a conversation between the application and the persistent store. Wraps a JDBC connection. Factory for <literal>Transaction</literal>. Holds a mandatory (first-level) cache of persistent objects, used when navigating the object graph or looking up objects by identifier."
-msgstr "Objeto mono-hebra, de corta vida que representa una conversación entre la aplicación y el almacenamiento persistente. Envuelve una conexión JDBC. Es una fábrica de <literal>Transaction</literal>. Mantiene una caché requerida (de primer nivel) de objetos persistentes, usada mientras se navega el grafo de objetos o se recuperen objetos por identificador."
+#. Tag: para
+#: architecture.xml:94
+#, no-c-format
+msgid ""
+"A single-threaded, short-lived object representing a conversation between "
+"the application and the persistent store. Wraps a JDBC connection. Factory "
+"for <literal>Transaction</literal>. Holds a mandatory (first-level) cache of "
+"persistent objects, used when navigating the object graph or looking up "
+"objects by identifier."
+msgstr ""
+"Objeto mono-hebra, de corta vida que representa una conversación entre la "
+"aplicación y el almacenamiento persistente. Envuelve una conexión JDBC. Es "
+"una fábrica de <literal>Transaction</literal>. Mantiene una caché requerida "
+"(de primer nivel) de objetos persistentes, usada mientras se navega el grafo "
+"de objetos o se recuperen objetos por identificador."
-#: index.docbook:104
+#. Tag: term
+#: architecture.xml:104
+#, no-c-format
msgid "Persistent objects and collections"
msgstr "Objetos y colecciones persistentes"
-#: index.docbook:106
-msgid "Short-lived, single threaded objects containing persistent state and business function. These might be ordinary JavaBeans/POJOs, the only special thing about them is that they are currently associated with (exactly one) <literal>Session</literal>. As soon as the <literal>Session</literal> is closed, they will be detached and free to use in any application layer (e.g. directly as data transfer objects to and from presentation)."
-msgstr "Objetos de corta vida, mono-hebra conteniendo estado persistente y funciónalidad de negocio. Estos pueden ser JavaBeans/POJOs (Plain Old Java Objects, o sea, cualquier objeto Java), la única cosa especial en ellos es que estan asociados actualmente con una (y sólo una) <literal>Session</literal>. Tan pronto como la <literal>Session</literal> sea cerrada, serán separados y estarán libres para ser usados en cualquier capa de aplicación. (por ejemplo, directamente como objetos de transferencia de datos hacia y desde la capa de presentación)."
+#. Tag: para
+#: architecture.xml:106
+#, no-c-format
+msgid ""
+"Short-lived, single threaded objects containing persistent state and "
+"business function. These might be ordinary JavaBeans/POJOs, the only special "
+"thing about them is that they are currently associated with (exactly one) "
+"<literal>Session</literal>. As soon as the <literal>Session</literal> is "
+"closed, they will be detached and free to use in any application layer (e.g. "
+"directly as data transfer objects to and from presentation)."
+msgstr ""
+"Objetos de corta vida, mono-hebra conteniendo estado persistente y "
+"funciónalidad de negocio. Estos pueden ser JavaBeans/POJOs (Plain Old Java "
+"Objects, o sea, cualquier objeto Java), la única cosa especial en ellos es "
+"que estan asociados actualmente con una (y sólo una) <literal>Session</"
+"literal>. Tan pronto como la <literal>Session</literal> sea cerrada, serán "
+"separados y estarán libres para ser usados en cualquier capa de aplicación. "
+"(por ejemplo, directamente como objetos de transferencia de datos hacia y "
+"desde la capa de presentación)."
-#: index.docbook:117
+#. Tag: term
+#: architecture.xml:117
+#, no-c-format
msgid "Transient and detached objects and collections"
msgstr "Objetos y colecciones transitorios y separados"
-#: index.docbook:119
-msgid "Instances of persistent classes that are not currently associated with a <literal>Session</literal>. They may have been instantiated by the application and not (yet) persisted or they may have been instantiated by a closed <literal>Session</literal>."
-msgstr "Instancias de clases persistentes que no estan acutualmente asociadas con una <literal>Session</literal>. Pueden haber sido instanciadas por la aplicación y (aún) no haber sido hechas persistentes, o pueden haber sido instanciadas por una <literal>Session</literal> cerrada."
+#. Tag: para
+#: architecture.xml:119
+#, no-c-format
+msgid ""
+"Instances of persistent classes that are not currently associated with a "
+"<literal>Session</literal>. They may have been instantiated by the "
+"application and not (yet) persisted or they may have been instantiated by a "
+"closed <literal>Session</literal>."
+msgstr ""
+"Instancias de clases persistentes que no estan acutualmente asociadas con "
+"una <literal>Session</literal>. Pueden haber sido instanciadas por la "
+"aplicación y (aún) no haber sido hechas persistentes, o pueden haber sido "
+"instanciadas por una <literal>Session</literal> cerrada."
-#: index.docbook:128
+#. Tag: term
+#: architecture.xml:128
+#, no-c-format
msgid "Transaction (<literal>org.hibernate.Transaction</literal>)"
msgstr "Transaction (<literal>org.hibernate.Transaction</literal>)"
-#: index.docbook:130
-msgid "(Optional) A single-threaded, short-lived object used by the application to specify atomic units of work. Abstracts application from underlying JDBC, JTA or CORBA transaction. A <literal>Session</literal> might span several <literal>Transaction</literal>s in some cases. However, transaction demarcation, either using the underlying API or <literal>Transaction</literal>, is never optional!"
-msgstr "(Opcional) Un objeto de corta vida, mono-hebra, usado por la aplicación para especificar unidades atómicas de trabajo. Abstrae a la aplicación de las subyacentes transacciones JDBC, JTA o CORBA. En algunos casos, una <literal>Session</literal> puede extenderse sobre varias <literal>Transaction</literal>s. Sin embargo, la demarcación de la transacción, ya sea usando la API subyacente o <literal>Transaction</literal>, nunca es opcional!"
+#. Tag: para
+#: architecture.xml:130
+#, no-c-format
+msgid ""
+"(Optional) A single-threaded, short-lived object used by the application to "
+"specify atomic units of work. Abstracts application from underlying JDBC, "
+"JTA or CORBA transaction. A <literal>Session</literal> might span several "
+"<literal>Transaction</literal>s in some cases. However, transaction "
+"demarcation, either using the underlying API or <literal>Transaction</"
+"literal>, is never optional!"
+msgstr ""
+"(Opcional) Un objeto de corta vida, mono-hebra, usado por la aplicación para "
+"especificar unidades atómicas de trabajo. Abstrae a la aplicación de las "
+"subyacentes transacciones JDBC, JTA o CORBA. En algunos casos, una "
+"<literal>Session</literal> puede extenderse sobre varias "
+"<literal>Transaction</literal>s. Sin embargo, la demarcación de la "
+"transacción, ya sea usando la API subyacente o <literal>Transaction</"
+"literal>, nunca es opcional!"
-#: index.docbook:141
-msgid "ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</literal>)"
-msgstr "ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</literal>)"
+#. Tag: term
+#: architecture.xml:141
+#, no-c-format
+msgid ""
+"ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</"
+"literal>)"
+msgstr ""
+"ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</"
+"literal>)"
-#: index.docbook:143
-msgid "(Optional) A factory for (and pool of) JDBC connections. Abstracts application from underlying <literal>Datasource</literal> or <literal>DriverManager</literal>. Not exposed to application, but can be extended/implemented by the developer."
-msgstr "(Opcional) Una fábrica (y pool) de conexiones JDBC. Abstrae a la aplicación del <literal>Datasource</literal> o <literal>DriverManager</literal> subyacente. No se expone a la aplicación, pero puede ser extendido/implementado por el desarrollador."
+#. Tag: para
+#: architecture.xml:143
+#, no-c-format
+msgid ""
+"(Optional) A factory for (and pool of) JDBC connections. Abstracts "
+"application from underlying <literal>Datasource</literal> or "
+"<literal>DriverManager</literal>. Not exposed to application, but can be "
+"extended/implemented by the developer."
+msgstr ""
+"(Opcional) Una fábrica (y pool) de conexiones JDBC. Abstrae a la aplicación "
+"del <literal>Datasource</literal> o <literal>DriverManager</literal> "
+"subyacente. No se expone a la aplicación, pero puede ser extendido/"
+"implementado por el desarrollador."
-#: index.docbook:151
-msgid "TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
-msgstr "TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
+#. Tag: term
+#: architecture.xml:151
+#, no-c-format
+msgid ""
+"TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
+msgstr ""
+"TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
-#: index.docbook:153
-msgid "(Optional) A factory for <literal>Transaction</literal> instances. Not exposed to the application, but can be extended/implemented by the developer."
-msgstr "(Opcional) Una fábrica de instancias de <literal>Transaction</literal>. No se expone a la aplicación, pero puede ser extendido/implementado por el desarrollador."
+#. Tag: para
+#: architecture.xml:153
+#, no-c-format
+msgid ""
+"(Optional) A factory for <literal>Transaction</literal> instances. Not "
+"exposed to the application, but can be extended/implemented by the developer."
+msgstr ""
+"(Opcional) Una fábrica de instancias de <literal>Transaction</literal>. No "
+"se expone a la aplicación, pero puede ser extendido/implementado por el "
+"desarrollador."
-#: index.docbook:160
+#. Tag: emphasis
+#: architecture.xml:160
+#, no-c-format
msgid "Extension Interfaces"
-msgstr "Interfaces de Extensión"
+msgstr "Interfaces de Extensión"
-#: index.docbook:162
-msgid "Hibernate offers many optional extension interfaces you can implement to customize the behavior of your persistence layer. See the API documentation for details."
-msgstr "Hibernate ofrece muchas interfaces de extensión opcional que puedes implementar para modificar a medida el comportamiento de tu capa de persistencia. Para más detalles, mira la documentación de la API."
+#. Tag: para
+#: architecture.xml:162
+#, no-c-format
+msgid ""
+"Hibernate offers many optional extension interfaces you can implement to "
+"customize the behavior of your persistence layer. See the API documentation "
+"for details."
+msgstr ""
+"Hibernate ofrece muchas interfaces de extensión opcional que puedes "
+"implementar para modificar a medida el comportamiento de tu capa de "
+"persistencia. Para más detalles, mira la documentación de la API."
-#: index.docbook:171
-msgid "Given a \"lite\" architecture, the application bypasses the <literal>Transaction</literal>/<literal>TransactionFactory</literal> and/or <literal>ConnectionProvider</literal> APIs to talk to JTA or JDBC directly."
-msgstr "Dada una arquitectura \"sencilla\", la aplicación pasa por alto las APIs de <literal>Transaction</literal>/<literal>TransactionFactory</literal> y/o <literal>ConnectionProvider</literal>, para hablar directamente a JTA o JDBC."
+#. Tag: para
+#: architecture.xml:171
+#, no-c-format
+msgid ""
+"Given a \"lite\" architecture, the application bypasses the "
+"<literal>Transaction</literal>/<literal>TransactionFactory</literal> and/or "
+"<literal>ConnectionProvider</literal> APIs to talk to JTA or JDBC directly."
+msgstr ""
+"Dada una arquitectura \"sencilla\", la aplicación pasa por alto las APIs de "
+"<literal>Transaction</literal>/<literal>TransactionFactory</literal> y/o "
+"<literal>ConnectionProvider</literal>, para hablar directamente a JTA o JDBC."
-#: index.docbook:179
+#. Tag: title
+#: architecture.xml:179
+#, no-c-format
msgid "Instance states"
msgstr "Estados de instancia"
-#: index.docbook:180
-msgid "An instance of a persistent classes may be in one of three different states, which are defined with respect to a <emphasis>persistence context</emphasis>. The Hibernate <literal>Session</literal> object is the persistence context:"
-msgstr "Una instancia de una clase persistente puede estar en uno de tres estados diferentes, definidos respecto de su <emphasis>contexto de persistencia</emphasis>. El objeto <literal>Session</literal> de Hibernate es el contexto de persistencia:"
+#. Tag: para
+#: architecture.xml:180
+#, no-c-format
+msgid ""
+"An instance of a persistent classes may be in one of three different states, "
+"which are defined with respect to a <emphasis>persistence context</"
+"emphasis>. The Hibernate <literal>Session</literal> object is the "
+"persistence context:"
+msgstr ""
+"Una instancia de una clase persistente puede estar en uno de tres estados "
+"diferentes, definidos respecto de su <emphasis>contexto de persistencia</"
+"emphasis>. El objeto <literal>Session</literal> de Hibernate es el contexto "
+"de persistencia:"
-#: index.docbook:188
+#. Tag: term
+#: architecture.xml:188
+#, no-c-format
msgid "transient"
msgstr "transitorio"
-#: index.docbook:190
-msgid "The instance is not, and has never been associated with any persistence context. It has no persistent identity (primary key value)."
-msgstr "La instancia no está y nunca estuvo asociada con un contexto de persistencia. No tiene identidad persistente (valor de clave primaria)."
+#. Tag: para
+#: architecture.xml:190
+#, no-c-format
+msgid ""
+"The instance is not, and has never been associated with any persistence "
+"context. It has no persistent identity (primary key value)."
+msgstr ""
+"La instancia no está y nunca estuvo asociada con un contexto de "
+"persistencia. No tiene identidad persistente (valor de clave primaria)."
-#: index.docbook:198
+#. Tag: term
+#: architecture.xml:198
+#, no-c-format
msgid "persistent"
msgstr "persistente"
-#: index.docbook:200
-msgid "The instance is currently associated with a persistence context. It has a persistent identity (primary key value) and, perhaps, a corresponding row in the database. For a particular persistence context, Hibernate <emphasis>guarantees</emphasis> that persistent identity is equivalent to Java identity (in-memory location of the object)."
-msgstr "La instancia está actualmente asociada con un contexto de persistencia. Tiene una identidad persistente (valor de clave primaria) y, quizás, una fila correspondiente en la base de datos. Para un contexto de persistencia en particular, Hibernate <emphasis>garantiza</emphasis> que la identidad persistente es equivalente a la identidad Java (localización en memoria del objeto)."
+#. Tag: para
+#: architecture.xml:200
+#, no-c-format
+msgid ""
+"The instance is currently associated with a persistence context. It has a "
+"persistent identity (primary key value) and, perhaps, a corresponding row in "
+"the database. For a particular persistence context, Hibernate "
+"<emphasis>guarantees</emphasis> that persistent identity is equivalent to "
+"Java identity (in-memory location of the object)."
+msgstr ""
+"La instancia está actualmente asociada con un contexto de persistencia. "
+"Tiene una identidad persistente (valor de clave primaria) y, quizás, una "
+"fila correspondiente en la base de datos. Para un contexto de persistencia "
+"en particular, Hibernate <emphasis>garantiza</emphasis> que la identidad "
+"persistente es equivalente a la identidad Java (localización en memoria del "
+"objeto)."
-#: index.docbook:212
+#. Tag: term
+#: architecture.xml:212
+#, no-c-format
msgid "detached"
msgstr "separado"
-#: index.docbook:214
-msgid "The instance was once associated with a persistence context, but that context was closed, or the instance was serialized to another process. It has a persistent identity and, perhaps, a corrsponding row in the database. For detached instances, Hibernate makes no guarantees about the relationship between persistent identity and Java identity."
-msgstr "La instancia estuvo una vez asociada con un contexto de persistencia, pero ese contexto fue cerrado, o la instancia fue serializada a otro proceso. Tiene una identidad persistente y, quizás, una fila correspondiente en la base de datos. Para las instancias separadas, Hibernate no establece ninguna garantía sobre la relación entre identidad persistente e identidad Java."
+#. Tag: para
+#: architecture.xml:214
+#, no-c-format
+msgid ""
+"The instance was once associated with a persistence context, but that "
+"context was closed, or the instance was serialized to another process. It "
+"has a persistent identity and, perhaps, a corrsponding row in the database. "
+"For detached instances, Hibernate makes no guarantees about the relationship "
+"between persistent identity and Java identity."
+msgstr ""
+"La instancia estuvo una vez asociada con un contexto de persistencia, pero "
+"ese contexto fue cerrado, o la instancia fue serializada a otro proceso. "
+"Tiene una identidad persistente y, quizás, una fila correspondiente en la "
+"base de datos. Para las instancias separadas, Hibernate no establece ninguna "
+"garantía sobre la relación entre identidad persistente e identidad Java."
-#: index.docbook:229
+#. Tag: title
+#: architecture.xml:229
+#, no-c-format
msgid "JMX Integration"
-msgstr "Integración JMX"
+msgstr "Integración JMX"
-#: index.docbook:231
-msgid "JMX is the J2EE standard for management of Java components. Hibernate may be managed via a JMX standard service. We provide an MBean implementation in the distribution, <literal>org.hibernate.jmx.HibernateService</literal>."
-msgstr "JMX es el estándar J2EE para la gestión de componentes Java. Hibernate puede ser gestionado por medio de un servicio estándar JMX. Proveemos una implementación de MBean en la distribución, <literal>org.hibernate.jmx.HibernateService</literal>."
+#. Tag: para
+#: architecture.xml:231
+#, no-c-format
+msgid ""
+"JMX is the J2EE standard for management of Java components. Hibernate may be "
+"managed via a JMX standard service. We provide an MBean implementation in "
+"the distribution, <literal>org.hibernate.jmx.HibernateService</literal>."
+msgstr ""
+"JMX es el estándar J2EE para la gestión de componentes Java. Hibernate puede "
+"ser gestionado por medio de un servicio estándar JMX. Proveemos una "
+"implementación de MBean en la distribución, <literal>org.hibernate.jmx."
+"HibernateService</literal>."
-#: index.docbook:237
-msgid "For an example how to deploy Hibernate as a JMX service on the JBoss Application Server, please see the JBoss User Guide. On JBoss AS, you also get these benefits if you deploy using JMX:"
-msgstr "Para ejemplo de cómo desplegar Hibernate como un servicio JMX en un Servidor de Aplicaciones JBoss, por favor, mira la Guía del Usuario de JBoss. En JBoss AS, tienes además estos beneficios si despliegas usando JMX:"
+#. Tag: para
+#: architecture.xml:237
+#, no-c-format
+msgid ""
+"For an example how to deploy Hibernate as a JMX service on the JBoss "
+"Application Server, please see the JBoss User Guide. On JBoss AS, you also "
+"get these benefits if you deploy using JMX:"
+msgstr ""
+"Para ejemplo de cómo desplegar Hibernate como un servicio JMX en un Servidor "
+"de Aplicaciones JBoss, por favor, mira la Guía del Usuario de JBoss. En "
+"JBoss AS, tienes además estos beneficios si despliegas usando JMX:"
-#: index.docbook:245
-msgid "<emphasis>Session Management:</emphasis> The Hibernate <literal>Session</literal>'s life cycle can be automatically bound to the scope of a JTA transaction. This means you no longer have to manually open and close the <literal>Session</literal>, this becomes the job of a JBoss EJB interceptor. You also don't have to worry about transaction demarcation in your code anymore (unless you'd like to write a portable persistence layer of course, use the optional Hibernate <literal>Transaction</literal> API for this). You call the <literal>HibernateContext</literal> to access a <literal>Session</literal>."
-msgstr "<emphasis>Gestión de Sesión:</emphasis> El ciclo de vida de la <literal>Session</literal> de Hibernate puede estar automáticamente ligado al ámbito de una transacción JTA. Esto significa que ya no tienes que abrir ni cerrar la <literal>Session</literal> manualmente, esto pasa a ser trabajo de un interceptor EJB de JBoss. Además tampoco tienes que preocuparte más de la demarcación de la transacción (a menos que que quieras escribir una capa de persitencia portable, por supuesto, usa la API de <literal>Transaction</literal> de Hibernate para esto). Para acceder a una <literal>Session</literal> llama al <literal>HibernateContext</literal>."
+#. Tag: para
+#: architecture.xml:245
+#, no-c-format
+msgid ""
+"<emphasis>Session Management:</emphasis> The Hibernate <literal>Session</"
+"literal>'s life cycle can be automatically bound to the scope of a JTA "
+"transaction. This means you no longer have to manually open and close the "
+"<literal>Session</literal>, this becomes the job of a JBoss EJB interceptor. "
+"You also don't have to worry about transaction demarcation in your code "
+"anymore (unless you'd like to write a portable persistence layer of course, "
+"use the optional Hibernate <literal>Transaction</literal> API for this). You "
+"call the <literal>HibernateContext</literal> to access a <literal>Session</"
+"literal>."
+msgstr ""
+"<emphasis>Gestión de Sesión:</emphasis> El ciclo de vida de la "
+"<literal>Session</literal> de Hibernate puede estar automáticamente ligado "
+"al ámbito de una transacción JTA. Esto significa que ya no tienes que abrir "
+"ni cerrar la <literal>Session</literal> manualmente, esto pasa a ser trabajo "
+"de un interceptor EJB de JBoss. Además tampoco tienes que preocuparte más de "
+"la demarcación de la transacción (a menos que que quieras escribir una capa "
+"de persitencia portable, por supuesto, usa la API de <literal>Transaction</"
+"literal> de Hibernate para esto). Para acceder a una <literal>Session</"
+"literal> llama al <literal>HibernateContext</literal>."
-#: index.docbook:257
-msgid "<emphasis>HAR deployment:</emphasis> Usually you deploy the Hibernate JMX service using a JBoss service deployment descriptor (in an EAR and/or SAR file), it supports all the usual configuration options of a Hibernate <literal>SessionFactory</literal>. However, you still have to name all your mapping files in the deployment descriptor. If you decide to use the optional HAR deployment, JBoss will automatically detect all mapping files in your HAR file."
-msgstr "<emphasis>Despliegue de HAR:</emphasis> Usualmente despliegas el servicio JMX de Hibernate usando un descriptor de despliegue de servicio de JBoss (en un fichero EAR y/o SAR), que soporta todas las opciones de configuración usuales de una <literal>SessionFactory</literal> de Hibernate. Sin embargo, todavía tienes que nombrar todos tus ficheros de mapeo en el descriptor de despliegue. Si decides usar el depliegue de HAR opcional, JBoss detectará automáticamente todos los ficheros de mapeo en tu fichero HAR."
+#. Tag: para
+#: architecture.xml:257
+#, no-c-format
+msgid ""
+"<emphasis>HAR deployment:</emphasis> Usually you deploy the Hibernate JMX "
+"service using a JBoss service deployment descriptor (in an EAR and/or SAR "
+"file), it supports all the usual configuration options of a Hibernate "
+"<literal>SessionFactory</literal>. However, you still have to name all your "
+"mapping files in the deployment descriptor. If you decide to use the "
+"optional HAR deployment, JBoss will automatically detect all mapping files "
+"in your HAR file."
+msgstr ""
+"<emphasis>Despliegue de HAR:</emphasis> Usualmente despliegas el servicio "
+"JMX de Hibernate usando un descriptor de despliegue de servicio de JBoss (en "
+"un fichero EAR y/o SAR), que soporta todas las opciones de configuración "
+"usuales de una <literal>SessionFactory</literal> de Hibernate. Sin embargo, "
+"todavía tienes que nombrar todos tus ficheros de mapeo en el descriptor de "
+"despliegue. Si decides usar el depliegue de HAR opcional, JBoss detectará "
+"automáticamente todos los ficheros de mapeo en tu fichero HAR."
-#: index.docbook:268
-msgid "Consult the JBoss AS user guide for more information about these options."
-msgstr "Para más información sobre estas opciones, consulta la Guía de Usuario del JBoss AS."
+#. Tag: para
+#: architecture.xml:268
+#, no-c-format
+msgid ""
+"Consult the JBoss AS user guide for more information about these options."
+msgstr ""
+"Para más información sobre estas opciones, consulta la Guía de Usuario del "
+"JBoss AS."
-#: index.docbook:272
-msgid "Another feature available as a JMX service are runtime Hibernate statistics. See <xref linkend=\"configuration-optional-statistics\"/>."
-msgstr "Otra funcionalidad disponible como un servicio JMX son las estadísticas en tiempo de ejecución de Hibernate. Mira <xref linkend=\"configuration-optional-statistics\"/>."
+#. Tag: para
+#: architecture.xml:272
+#, no-c-format
+msgid ""
+"Another feature available as a JMX service are runtime Hibernate statistics. "
+"See <xref linkend=\"configuration-optional-statistics\"/>."
+msgstr ""
+"Otra funcionalidad disponible como un servicio JMX son las estadísticas en "
+"tiempo de ejecución de Hibernate. Mira <xref linkend=\"configuration-"
+"optional-statistics\"/>."
-#: index.docbook:279
+#. Tag: title
+#: architecture.xml:279
+#, no-c-format
msgid "JCA Support"
msgstr "Soporte JCA:"
-#: index.docbook:280
-msgid "Hibernate may also be configured as a JCA connector. Please see the website for more details. Please note that Hibernate JCA support is still considered experimental."
-msgstr "Hiberate puede además ser configurado como un conector JCA. Por favor mira el sitio web para más detalles. Por favor ten en cuenta que el soporte de JCA de Hibernate está aún considerado experimental."
+#. Tag: para
+#: architecture.xml:280
+#, no-c-format
+msgid ""
+"Hibernate may also be configured as a JCA connector. Please see the website "
+"for more details. Please note that Hibernate JCA support is still considered "
+"experimental."
+msgstr ""
+"Hiberate puede además ser configurado como un conector JCA. Por favor mira "
+"el sitio web para más detalles. Por favor ten en cuenta que el soporte de "
+"JCA de Hibernate está aún considerado experimental."
-#: index.docbook:287
+#. Tag: title
+#: architecture.xml:287
+#, no-c-format
msgid "Contextual Sessions"
-msgstr ""
+msgstr "translator-credits"
-#: index.docbook:288
-msgid "Most applications using Hibernate need some form of \"contextual\" sessions, where a given session is in effect throughout the scope of a given context. However, across applications the definition of what constitutes a context is typically different; and different contexts define different scopes to the notion of current. Applications using Hibernate prior to version 3.0 tended to utilize either home-grown <literal>ThreadLocal</literal>-based contextual sessions, helper classes such as <literal>HibernateUtil</literal>, or utilized third-party frameworks (such as Spring or Pico) which provided proxy/interception-based contextual sessions."
+#. Tag: para
+#: architecture.xml:288
+#, no-c-format
+msgid ""
+"Most applications using Hibernate need some form of \"contextual\" sessions, "
+"where a given session is in effect throughout the scope of a given context. "
+"However, across applications the definition of what constitutes a context is "
+"typically different; and different contexts define different scopes to the "
+"notion of current. Applications using Hibernate prior to version 3.0 tended "
+"to utilize either home-grown <literal>ThreadLocal</literal>-based contextual "
+"sessions, helper classes such as <literal>HibernateUtil</literal>, or "
+"utilized third-party frameworks (such as Spring or Pico) which provided "
+"proxy/interception-based contextual sessions."
msgstr ""
-#: index.docbook:297
-msgid "Starting with version 3.0.1, Hibernate added the <literal>SessionFactory.getCurrentSession()</literal> method. Initially, this assumed usage of <literal>JTA</literal> transactions, where the <literal>JTA</literal> transaction defined both the scope and context of a current session. The Hibernate team maintains that, given the maturity of the numerous stand-alone <literal>JTA TransactionManager</literal> implementations out there, most (if not all) applications should be using <literal>JTA</literal> transaction management whether or not they are deployed into a <literal>J2EE</literal> container. Based on that, the <literal>JTA</literal>-based contextual sessions is all you should ever need to use."
+#. Tag: para
+#: architecture.xml:297
+#, no-c-format
+msgid ""
+"Starting with version 3.0.1, Hibernate added the <literal>SessionFactory."
+"getCurrentSession()</literal> method. Initially, this assumed usage of "
+"<literal>JTA</literal> transactions, where the <literal>JTA</literal> "
+"transaction defined both the scope and context of a current session. The "
+"Hibernate team maintains that, given the maturity of the numerous stand-"
+"alone <literal>JTA TransactionManager</literal> implementations out there, "
+"most (if not all) applications should be using <literal>JTA</literal> "
+"transaction management whether or not they are deployed into a "
+"<literal>J2EE</literal> container. Based on that, the <literal>JTA</literal>-"
+"based contextual sessions is all you should ever need to use."
msgstr ""
-#: index.docbook:307
-msgid "However, as of version 3.1, the processing behind <literal>SessionFactory.getCurrentSession()</literal> is now pluggable. To that end, a new extension interface (<literal>org.hibernate.context.CurrentSessionContext</literal>) and a new configuration parameter (<literal>hibernate.current_session_context_class</literal>) have been added to allow pluggability of the scope and context of defining current sessions."
+#. Tag: para
+#: architecture.xml:307
+#, no-c-format
+msgid ""
+"However, as of version 3.1, the processing behind <literal>SessionFactory."
+"getCurrentSession()</literal> is now pluggable. To that end, a new extension "
+"interface (<literal>org.hibernate.context.CurrentSessionContext</literal>) "
+"and a new configuration parameter (<literal>hibernate."
+"current_session_context_class</literal>) have been added to allow "
+"pluggability of the scope and context of defining current sessions."
msgstr ""
-#: index.docbook:314
-msgid "See the Javadocs for the <literal>org.hibernate.context.CurrentSessionContext</literal> interface for a detailed discussion of its contract. It defines a single method, <literal>currentSession()</literal>, by which the implementation is responsible for tracking the current contextual session. Out-of-the-box, Hibernate comes with three implementations of this interface."
+#. Tag: para
+#: architecture.xml:314
+#, no-c-format
+msgid ""
+"See the Javadocs for the <literal>org.hibernate.context."
+"CurrentSessionContext</literal> interface for a detailed discussion of its "
+"contract. It defines a single method, <literal>currentSession()</literal>, "
+"by which the implementation is responsible for tracking the current "
+"contextual session. Out-of-the-box, Hibernate comes with three "
+"implementations of this interface."
msgstr ""
-#: index.docbook:324
-msgid "<literal>org.hibernate.context.JTASessionContext</literal> - current sessions are tracked and scoped by a <literal>JTA</literal> transaction. The processing here is exactly the same as in the older JTA-only approach. See the Javadocs for details."
+#. Tag: para
+#: architecture.xml:324
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.JTASessionContext</literal> - current "
+"sessions are tracked and scoped by a <literal>JTA</literal> transaction. The "
+"processing here is exactly the same as in the older JTA-only approach. See "
+"the Javadocs for details."
msgstr ""
-#: index.docbook:332
-msgid "<literal>org.hibernate.context.ThreadLocalSessionContext</literal> - current sessions are tracked by thread of execution. Again, see the Javadocs for details."
+#. Tag: para
+#: architecture.xml:332
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.ThreadLocalSessionContext</literal> - current "
+"sessions are tracked by thread of execution. Again, see the Javadocs for "
+"details."
msgstr ""
-#: index.docbook:338
-msgid "<literal>org.hibernate.context.ManagedSessionContext</literal> - current sessions are tracked by thread of execution. However, you are responsible to bind and unbind a <literal>Session</literal> instance with static methods on this class, it does never open, flush, or close a <literal>Session</literal>."
+#. Tag: para
+#: architecture.xml:338
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.ManagedSessionContext</literal> - current "
+"sessions are tracked by thread of execution. However, you are responsible to "
+"bind and unbind a <literal>Session</literal> instance with static methods on "
+"this class, it does never open, flush, or close a <literal>Session</literal>."
msgstr ""
-#: index.docbook:347
-msgid "The first two implementations provide a \"one session - one database transaction\" programming model, also known and used as <emphasis>session-per-request</emphasis>. The beginning and end of a Hibernate session is defined by the duration of a database transaction. If you use programatic transaction demarcation in plain JSE without JTA, you are adviced to use the Hibernate <literal>Transaction</literal> API to hide the underlying transaction system from your code. If you use JTA, use the JTA interfaces to demarcate transactions. If you execute in an EJB container that supports CMT, transaction boundaries are defined declaratively and you don't need any transaction or session demarcation operations in your code. Refer to <xref linkend=\"transactions\"/> for more information and code examples."
+#. Tag: para
+#: architecture.xml:347
+#, no-c-format
+msgid ""
+"The first two implementations provide a \"one session - one database "
+"transaction\" programming model, also known and used as <emphasis>session-"
+"per-request</emphasis>. The beginning and end of a Hibernate session is "
+"defined by the duration of a database transaction. If you use programatic "
+"transaction demarcation in plain JSE without JTA, you are adviced to use the "
+"Hibernate <literal>Transaction</literal> API to hide the underlying "
+"transaction system from your code. If you use JTA, use the JTA interfaces to "
+"demarcate transactions. If you execute in an EJB container that supports "
+"CMT, transaction boundaries are defined declaratively and you don't need any "
+"transaction or session demarcation operations in your code. Refer to <xref "
+"linkend=\"transactions\"/> for more information and code examples."
msgstr ""
-#: index.docbook:359
-msgid "The <literal>hibernate.current_session_context_class</literal> configuration parameter defines which <literal>org.hibernate.context.CurrentSessionContext</literal> implementation should be used. Note that for backwards compatibility, if this config param is not set but a <literal>org.hibernate.transaction.TransactionManagerLookup</literal> is configured, Hibernate will use the <literal>org.hibernate.context.JTASessionContext</literal>. Typically, the value of this parameter would just name the implementation class to use; for the three out-of-the-box implementations, however, there are three corresponding short names, \"jta\", \"thread\", and \"managed\"."
+#. Tag: para
+#: architecture.xml:359
+#, no-c-format
+msgid ""
+"The <literal>hibernate.current_session_context_class</literal> configuration "
+"parameter defines which <literal>org.hibernate.context."
+"CurrentSessionContext</literal> implementation should be used. Note that for "
+"backwards compatibility, if this config param is not set but a <literal>org."
+"hibernate.transaction.TransactionManagerLookup</literal> is configured, "
+"Hibernate will use the <literal>org.hibernate.context.JTASessionContext</"
+"literal>. Typically, the value of this parameter would just name the "
+"implementation class to use; for the three out-of-the-box implementations, "
+"however, there are three corresponding short names, \"jta\", \"thread\", and "
+"\"managed\"."
msgstr ""
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
Modified: core/trunk/documentation/manual/translations/es-ES/content/association_mapping.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/association_mapping.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/association_mapping.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,881 +1,873 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:6
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: association_mapping.xml:6
+#, no-c-format
msgid "Association Mappings"
-msgstr "Mapeos de Asociación"
+msgstr "Mapeos de Asociación"
-#: index.docbook:9
+#. Tag: title
+#: association_mapping.xml:9
+#, no-c-format
msgid "Introduction"
-msgstr "Introducción"
+msgstr "Introducción"
-#: index.docbook:11
-msgid "Association mappings are the often most difficult thing to get right. In this section we'll go through the canonical cases one by one, starting with unidirectional mappings, and then considering the bidirectional cases. We'll use <literal>Person</literal> and <literal>Address</literal> in all the examples."
-msgstr "Los mapeos de asociación son frecuentemente las cosas mas difíciles de hacer correctamente. En esta sección iremos a través de los casos canónicos uno a uno, comenzando con los mapeos unidireccionales, y considerando luego los casos bidireccionales. Usaremos <literal>Person</literal> y <literal>Address</literal> en todos los ejemplos."
+#. Tag: para
+#: association_mapping.xml:11
+#, no-c-format
+msgid ""
+"Association mappings are the often most difficult thing to get right. In "
+"this section we'll go through the canonical cases one by one, starting with "
+"unidirectional mappings, and then considering the bidirectional cases. We'll "
+"use <literal>Person</literal> and <literal>Address</literal> in all the "
+"examples."
+msgstr ""
+"Los mapeos de asociación son frecuentemente las cosas mas difíciles de hacer "
+"correctamente. En esta sección iremos a través de los casos canónicos uno a "
+"uno, comenzando con los mapeos unidireccionales, y considerando luego los "
+"casos bidireccionales. Usaremos <literal>Person</literal> y "
+"<literal>Address</literal> en todos los ejemplos."
-#: index.docbook:19
-msgid "We'll classify associations by whether or not they map to an intervening join table, and by multiplicity."
-msgstr "Clasificaremos las asociaciones por cuanto mapeen o no a una tabla de unión interviniente, y por su multiplicidad."
+#. Tag: para
+#: association_mapping.xml:19
+#, no-c-format
+msgid ""
+"We'll classify associations by whether or not they map to an intervening "
+"join table, and by multiplicity."
+msgstr ""
+"Clasificaremos las asociaciones por cuanto mapeen o no a una tabla de unión "
+"interviniente, y por su multiplicidad."
-#: index.docbook:24
-msgid "Nullable foreign keys are not considered good practice in traditional data modelling, so all our examples use not null foreign keys. This is not a requirement of Hibernate, and the mappings will all work if you drop the nullability constraints."
-msgstr "Las claves foráneas que aceptan valores nulos (en adelante, nullables) no son consideradas una buena práctica en el modelado tradicional de datos, así que todos nuestros ejemplos usan claves foráneas no nullables. Esto no es un requerimiento de Hibernate, y todos los mapeos funcionarán si quitas las restricciones de nulabilidad."
+#. Tag: para
+#: association_mapping.xml:24
+#, no-c-format
+msgid ""
+"Nullable foreign keys are not considered good practice in traditional data "
+"modelling, so all our examples use not null foreign keys. This is not a "
+"requirement of Hibernate, and the mappings will all work if you drop the "
+"nullability constraints."
+msgstr ""
+"Las claves foráneas que aceptan valores nulos (en adelante, nullables) no "
+"son consideradas una buena práctica en el modelado tradicional de datos, así "
+"que todos nuestros ejemplos usan claves foráneas no nullables. Esto no es un "
+"requerimiento de Hibernate, y todos los mapeos funcionarán si quitas las "
+"restricciones de nulabilidad."
-#: index.docbook:34
+#. Tag: title
+#: association_mapping.xml:34
+#, no-c-format
msgid "Unidirectional associations"
msgstr "Asociaciones Unidireccionales"
-#: index.docbook:37, index.docbook:108
+#. Tag: title
+#: association_mapping.xml:37 association_mapping.xml:108
+#, no-c-format
msgid "many to one"
msgstr "muchos a uno"
-#: index.docbook:39
-msgid "A <emphasis>unidirectional many-to-one association</emphasis> is the most common kind of unidirectional association."
-msgstr "Una <emphasis>asociación unidireccional muchos-a-uno</emphasis> es el tipo más común de asociaciones unidireccionales."
+#. Tag: para
+#: association_mapping.xml:39
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional many-to-one association</emphasis> is the most "
+"common kind of unidirectional association."
+msgstr ""
+"Una <emphasis>asociación unidireccional muchos-a-uno</emphasis> es el tipo "
+"más común de asociaciones unidireccionales."
-#: index.docbook:44
+#. Tag: programlisting
+#: association_mapping.xml:44
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <many-to-one name=\"address\" \n"
- " column=\"addressId\"\n"
- " not-null=\"true\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <many-to-one name=\"address\" \n"
+" column=\"addressId\"\n"
+" not-null=\"true\"/>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <many-to-one name=\"address\" \n"
- " column=\"addressId\"\n"
- " not-null=\"true\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
-#: index.docbook:45, index.docbook:161
+#. Tag: programlisting
+#: association_mapping.xml:45 association_mapping.xml:161
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key, addressId bigint not null )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key, addressId bigint "
+"not null )\n"
+"create table Address ( addressId bigint not null primary key )\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key, addressId bigint not null )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
-#: index.docbook:50, index.docbook:121, index.docbook:185, index.docbook:225
+#. Tag: title
+#: association_mapping.xml:50 association_mapping.xml:121
+#: association_mapping.xml:185 association_mapping.xml:225
+#, no-c-format
msgid "one to one"
msgstr "uno a uno"
-#: index.docbook:52
-msgid "A <emphasis>unidirectional one-to-one association on a foreign key</emphasis> is almost identical. The only difference is the column unique constraint."
-msgstr "Una <emphasis>asociación unidireccional uno-a-uno en una clave primaria</emphasis> es casi idéntica. La única diferencia es la restricción de unicidad de la columna."
+#. Tag: para
+#: association_mapping.xml:52
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a foreign key</"
+"emphasis> is almost identical. The only difference is the column unique "
+"constraint."
+msgstr ""
+"Una <emphasis>asociación unidireccional uno-a-uno en una clave primaria</"
+"emphasis> es casi idéntica. La única diferencia es la restricción de "
+"unicidad de la columna."
-#: index.docbook:57
+#. Tag: programlisting
+#: association_mapping.xml:57
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <many-to-one name=\"address\" \n"
- " column=\"addressId\" \n"
- " unique=\"true\"\n"
- " not-null=\"true\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <many-to-one name=\"address\" \n"
+" column=\"addressId\" \n"
+" unique=\"true\"\n"
+" not-null=\"true\"/>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <many-to-one name=\"address\" \n"
- " column=\"addressId\" \n"
- " unique=\"true\"\n"
- " not-null=\"true\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
-#: index.docbook:58, index.docbook:193
+#. Tag: programlisting
+#: association_mapping.xml:58 association_mapping.xml:193
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key, addressId bigint not null unique )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key, addressId bigint "
+"not null unique )\n"
+"create table Address ( addressId bigint not null primary key )\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key, addressId bigint not null unique )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
-#: index.docbook:60
-msgid "A <emphasis>unidirectional one-to-one association on a primary key</emphasis> usually uses a special id generator. (Notice that we've reversed the direction of the association in this example.)"
-msgstr "Usualmente, una <emphasis>asociación unidireccional uno-a-uno en una clave primaria</emphasis> usa un generador de id especial. (Observa que hemos invertido el sentido de la asociación en este ejemplo)."
+#. Tag: para
+#: association_mapping.xml:60
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a primary key</"
+"emphasis> usually uses a special id generator. (Notice that we've reversed "
+"the direction of the association in this example.)"
+msgstr ""
+"Usualmente, una <emphasis>asociación unidireccional uno-a-uno en una clave "
+"primaria</emphasis> usa un generador de id especial. (Observa que hemos "
+"invertido el sentido de la asociación en este ejemplo)."
-#: index.docbook:66
+#. Tag: programlisting
+#: association_mapping.xml:66
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"foreign\">\n"
- " <param name=\"property\">person</param>\n"
- " </generator>\n"
- " </id>\n"
- " <one-to-one name=\"person\" constrained=\"true\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"foreign\">\n"
+" <param name=\"property\">person</param>\n"
+" </generator>\n"
+" </id>\n"
+" <one-to-one name=\"person\" constrained=\"true\"/>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"foreign\">\n"
- " <param name=\"property\">person</param>\n"
- " </generator>\n"
- " </id>\n"
- " <one-to-one name=\"person\" constrained=\"true\"/>\n"
- "</class>]]>"
-#: index.docbook:67, index.docbook:201
+#. Tag: programlisting
+#: association_mapping.xml:67 association_mapping.xml:201
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table Address ( personId bigint not null primary key )\n"
- " ]]>"
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key )\n"
+"create table Address ( personId bigint not null primary key )\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table Address ( personId bigint not null primary key )\n"
- " ]]>"
-#: index.docbook:72, index.docbook:94
+#. Tag: title
+#: association_mapping.xml:72 association_mapping.xml:94
+#, no-c-format
msgid "one to many"
msgstr "uno a muchos"
-#: index.docbook:74
-msgid "A <emphasis>unidirectional one-to-many association on a foreign key</emphasis> is a very unusual case, and is not really recommended."
-msgstr "Una <emphasis>asociación unidireccional uno-a-muchos en una clave foránea</emphasis> es un caso muy inusual, y realmente no está recomendada."
+#. Tag: para
+#: association_mapping.xml:74
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-many association on a foreign key</"
+"emphasis> is a very unusual case, and is not really recommended."
+msgstr ""
+"Una <emphasis>asociación unidireccional uno-a-muchos en una clave foránea</"
+"emphasis> es un caso muy inusual, y realmente no está recomendada."
-#: index.docbook:79
+#. Tag: programlisting
+#: association_mapping.xml:79
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\">\n"
- " <key column=\"personId\" \n"
- " not-null=\"true\"/>\n"
- " <one-to-many class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <set name=\"addresses\">\n"
+" <key column=\"personId\" \n"
+" not-null=\"true\"/>\n"
+" <one-to-many class=\"Address\"/>\n"
+" </set>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\">\n"
- " <key column=\"personId\" \n"
- " not-null=\"true\"/>\n"
- " <one-to-many class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
-#: index.docbook:80
+#. Tag: programlisting
+#: association_mapping.xml:80
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table Address ( addressId bigint not null primary key, personId bigint not null )\n"
- " ]]>"
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key )\n"
+"create table Address ( addressId bigint not null primary key, personId "
+"bigint not null )\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table Address ( addressId bigint not null primary key, personId bigint not null )\n"
- " ]]>"
-#: index.docbook:82
+#. Tag: para
+#: association_mapping.xml:82
+#, no-c-format
msgid "We think it's better to use a join table for this kind of association."
-msgstr "Creemos que es mejor usar una tabla de unión para este tipo de asociación."
+msgstr ""
+"Creemos que es mejor usar una tabla de unión para este tipo de asociación."
-#: index.docbook:91
+#. Tag: title
+#: association_mapping.xml:91
+#, no-c-format
msgid "Unidirectional associations with join tables"
-msgstr "Asociaciones unidireccionales con tablas de unión"
+msgstr "Asociaciones unidireccionales con tablas de unión"
-#: index.docbook:96
-msgid "A <emphasis>unidirectional one-to-many association on a join table</emphasis> is much preferred. Notice that by specifying <literal>unique=\"true\"</literal>, we have changed the multiplicity from many-to-many to one-to-many."
-msgstr "Una <emphasis>asociación unidireccional uno-a-muchos en una tabla de unión</emphasis> es más preferible. Observa que especificando <literal>unique=\"true\"</literal>, hemos cambiado la multiplicidad de muchos-a-muchos a uno-a-muchos."
+#. Tag: para
+#: association_mapping.xml:96
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-many association on a join table</"
+"emphasis> is much preferred. Notice that by specifying <literal>unique=\"true"
+"\"</literal>, we have changed the multiplicity from many-to-many to one-to-"
+"many."
+msgstr ""
+"Una <emphasis>asociación unidireccional uno-a-muchos en una tabla de unión</"
+"emphasis> es más preferible. Observa que especificando <literal>unique=\"true"
+"\"</literal>, hemos cambiado la multiplicidad de muchos-a-muchos a uno-a-"
+"muchos."
-#: index.docbook:102
+#. Tag: programlisting
+#: association_mapping.xml:102
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\" table=\"PersonAddress\">\n"
- " <key column=\"personId\"/>\n"
- " <many-to-many column=\"addressId\"\n"
- " unique=\"true\"\n"
- " class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <set name=\"addresses\" table=\"PersonAddress\">\n"
+" <key column=\"personId\"/>\n"
+" <many-to-many column=\"addressId\"\n"
+" unique=\"true\"\n"
+" class=\"Address\"/>\n"
+" </set>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\" table=\"PersonAddress\">\n"
- " <key column=\"personId\"/>\n"
- " <many-to-many column=\"addressId\"\n"
- " unique=\"true\"\n"
- " class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
-#: index.docbook:103
+#. Tag: programlisting
+#: association_mapping.xml:103
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId not null, addressId bigint not null primary key )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key )\n"
+"create table PersonAddress ( personId not null, addressId bigint not null "
+"primary key )\n"
+"create table Address ( addressId bigint not null primary key )\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId not null, addressId bigint not null primary key )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
-#: index.docbook:110
-msgid "A <emphasis>unidirectional many-to-one association on a join table</emphasis> is quite common when the association is optional."
-msgstr "Una <emphasis>asociación unidireccional muchos-a-uno en una tabla de unión</emphasis> es bastante común cuando la asociación es opcional."
+#. Tag: para
+#: association_mapping.xml:110
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional many-to-one association on a join table</"
+"emphasis> is quite common when the association is optional."
+msgstr ""
+"Una <emphasis>asociación unidireccional muchos-a-uno en una tabla de unión</"
+"emphasis> es bastante común cuando la asociación es opcional."
-#: index.docbook:115
+#. Tag: programlisting
+#: association_mapping.xml:115
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " optional=\"true\">\n"
- " <key column=\"personId\" unique=\"true\"/>\n"
- " <many-to-one name=\"address\"\n"
- " column=\"addressId\" \n"
- " not-null=\"true\"/>\n"
- " </join>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <join table=\"PersonAddress\" \n"
+" optional=\"true\">\n"
+" <key column=\"personId\" unique=\"true\"/>\n"
+" <many-to-one name=\"address\"\n"
+" column=\"addressId\" \n"
+" not-null=\"true\"/>\n"
+" </join>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " optional=\"true\">\n"
- " <key column=\"personId\" unique=\"true\"/>\n"
- " <many-to-one name=\"address\"\n"
- " column=\"addressId\" \n"
- " not-null=\"true\"/>\n"
- " </join>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
-#: index.docbook:116
+#. Tag: programlisting
+#: association_mapping.xml:116
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId bigint not null primary key, addressId bigint not null )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key )\n"
+"create table PersonAddress ( personId bigint not null primary key, addressId "
+"bigint not null )\n"
+"create table Address ( addressId bigint not null primary key )\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId bigint not null primary key, addressId bigint not null )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
-#: index.docbook:123
-msgid "A <emphasis>unidirectional one-to-one association on a join table</emphasis> is extremely unusual, but possible."
-msgstr "Una <emphasis>asociación unidireccional uno-a-uno en una tabla de unión</emphasis> es inusual en extremo, pero posible."
+#. Tag: para
+#: association_mapping.xml:123
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a join table</emphasis> "
+"is extremely unusual, but possible."
+msgstr ""
+"Una <emphasis>asociación unidireccional uno-a-uno en una tabla de unión</"
+"emphasis> es inusual en extremo, pero posible."
-#: index.docbook:128
+#. Tag: programlisting
+#: association_mapping.xml:128
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " optional=\"true\">\n"
- " <key column=\"personId\" \n"
- " unique=\"true\"/>\n"
- " <many-to-one name=\"address\"\n"
- " column=\"addressId\" \n"
- " not-null=\"true\"\n"
- " unique=\"true\"/>\n"
- " </join>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <join table=\"PersonAddress\" \n"
+" optional=\"true\">\n"
+" <key column=\"personId\" \n"
+" unique=\"true\"/>\n"
+" <many-to-one name=\"address\"\n"
+" column=\"addressId\" \n"
+" not-null=\"true\"\n"
+" unique=\"true\"/>\n"
+" </join>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " optional=\"true\">\n"
- " <key column=\"personId\" \n"
- " unique=\"true\"/>\n"
- " <many-to-one name=\"address\"\n"
- " column=\"addressId\" \n"
- " not-null=\"true\"\n"
- " unique=\"true\"/>\n"
- " </join>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
-#: index.docbook:129, index.docbook:233
+#. Tag: programlisting
+#: association_mapping.xml:129 association_mapping.xml:233
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId bigint not null primary key, addressId bigint not null unique )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key )\n"
+"create table PersonAddress ( personId bigint not null primary key, addressId "
+"bigint not null unique )\n"
+"create table Address ( addressId bigint not null primary key )\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId bigint not null primary key, addressId bigint not null unique )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
-#: index.docbook:134, index.docbook:238
+#. Tag: title
+#: association_mapping.xml:134 association_mapping.xml:238
+#, no-c-format
msgid "many to many"
msgstr "muchos a muchos"
-#: index.docbook:136
-msgid "Finally, we have a <emphasis>unidirectional many-to-many association</emphasis>."
-msgstr "Finalmente, tenemos una <emphasis>asociación unidireccional muchos-a-muchos</emphasis>"
+#. Tag: para
+#: association_mapping.xml:136
+#, no-c-format
+msgid ""
+"Finally, we have a <emphasis>unidirectional many-to-many association</"
+"emphasis>."
+msgstr ""
+"Finalmente, tenemos una <emphasis>asociación unidireccional muchos-a-muchos</"
+"emphasis>"
-#: index.docbook:140
+#. Tag: programlisting
+#: association_mapping.xml:140
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\" table=\"PersonAddress\">\n"
- " <key column=\"personId\"/>\n"
- " <many-to-many column=\"addressId\"\n"
- " class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <set name=\"addresses\" table=\"PersonAddress\">\n"
+" <key column=\"personId\"/>\n"
+" <many-to-many column=\"addressId\"\n"
+" class=\"Address\"/>\n"
+" </set>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\" table=\"PersonAddress\">\n"
- " <key column=\"personId\"/>\n"
- " <many-to-many column=\"addressId\"\n"
- " class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
-#: index.docbook:141, index.docbook:246
+#. Tag: programlisting
+#: association_mapping.xml:141 association_mapping.xml:246
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId bigint not null, addressId bigint not null, primary key (personId, addressId) )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key )\n"
+"create table PersonAddress ( personId bigint not null, addressId bigint not "
+"null, primary key (personId, addressId) )\n"
+"create table Address ( addressId bigint not null primary key )\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId bigint not null, addressId bigint not null, primary key (personId, addressId) )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
-#: index.docbook:148
+#. Tag: title
+#: association_mapping.xml:148
+#, no-c-format
msgid "Bidirectional associations"
msgstr "Asociaciones Bidireccionales"
-#: index.docbook:151, index.docbook:211
+#. Tag: title
+#: association_mapping.xml:151 association_mapping.xml:211
+#, no-c-format
msgid "one to many / many to one"
msgstr "uno a muchos / muchos a uno"
-#: index.docbook:153
-msgid "A <emphasis>bidirectional many-to-one association</emphasis> is the most common kind of association. (This is the standard parent/child relationship.)"
-msgstr "Una <emphasis>asociación bidireccional muchos-a-uno</emphasis> es el tipo más común de asociación. (Esta es la relación estándar padre/hijo.)"
+#. Tag: para
+#: association_mapping.xml:153
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional many-to-one association</emphasis> is the most "
+"common kind of association. (This is the standard parent/child relationship.)"
+msgstr ""
+"Una <emphasis>asociación bidireccional muchos-a-uno</emphasis> es el tipo "
+"más común de asociación. (Esta es la relación estándar padre/hijo.)"
-#: index.docbook:159
+#. Tag: programlisting
+#: association_mapping.xml:159
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <many-to-one name=\"address\" \n"
- " column=\"addressId\"\n"
- " not-null=\"true\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"people\" inverse=\"true\">\n"
- " <key column=\"addressId\"/>\n"
- " <one-to-many class=\"Person\"/>\n"
- " </set>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <many-to-one name=\"address\" \n"
+" column=\"addressId\"\n"
+" not-null=\"true\"/>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <set name=\"people\" inverse=\"true\">\n"
+" <key column=\"addressId\"/>\n"
+" <one-to-many class=\"Person\"/>\n"
+" </set>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <many-to-one name=\"address\" \n"
- " column=\"addressId\"\n"
- " not-null=\"true\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"people\" inverse=\"true\">\n"
- " <key column=\"addressId\"/>\n"
- " <one-to-many class=\"Person\"/>\n"
- " </set>\n"
- "</class>]]>"
-#: index.docbook:163
-msgid "If you use a <literal>List</literal> (or other indexed collection) you need to set the <literal>key</literal> column of the foreign key to <literal>not null</literal>, and let Hibernate manage the association from the collections side to maintain the index of each element (making the other side virtually inverse by setting <literal>update=\"false\"</literal> and <literal>insert=\"false\"</literal>):"
-msgstr "uno a uno"
+#. Tag: para
+#: association_mapping.xml:163
+#, no-c-format
+msgid ""
+"If you use a <literal>List</literal> (or other indexed collection) you need "
+"to set the <literal>key</literal> column of the foreign key to <literal>not "
+"null</literal>, and let Hibernate manage the association from the "
+"collections side to maintain the index of each element (making the other "
+"side virtually inverse by setting <literal>update=\"false\"</literal> and "
+"<literal>insert=\"false\"</literal>):"
+msgstr ""
+"UNTRANSLATED! If you use a <literal>List</literal> (or other indexed "
+"collection) you need to set the <literal>key</literal> column of the foreign "
+"key to <literal>not null</literal>, and let Hibernate manage the association "
+"from the collections side to maintain the index of each element (making the "
+"other side virtually inverse by setting <literal>update=\"false\"</literal> "
+"and <literal>insert=\"false\"</literal>):"
-#: index.docbook:171
+#. Tag: programlisting
+#: association_mapping.xml:171
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\"/>\n"
- " ...\n"
- " <many-to-one name=\"address\"\n"
- " column=\"addressId\"\n"
- " not-null=\"true\"\n"
- " insert=\"false\"\n"
- " update=\"false\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\"/>\n"
- " ...\n"
- " <list name=\"people\">\n"
- " <key column=\"addressId\" not-null=\"true\"/>\n"
- " <list-index column=\"peopleIdx\"/>\n"
- " <one-to-many class=\"Person\"/>\n"
- " </list>\n"
- "</class>]]>"
-msgstr "Una <emphasis>asociación bidireccional uno-a-uno en una clave foránea</emphasis> es bastante común."
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\"/>\n"
+" ...\n"
+" <many-to-one name=\"address\"\n"
+" column=\"addressId\"\n"
+" not-null=\"true\"\n"
+" insert=\"false\"\n"
+" update=\"false\"/>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\"/>\n"
+" ...\n"
+" <list name=\"people\">\n"
+" <key column=\"addressId\" not-null=\"true\"/>\n"
+" <list-index column=\"peopleIdx\"/>\n"
+" <one-to-many class=\"Person\"/>\n"
+" </list>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:173
-msgid "It is important that you define <literal>not-null=\"true\"</literal> on the <literal><key></literal> element of the collection mapping if the underlying foreign key column is <literal>NOT NULL</literal>. Don't only declare <literal>not-null=\"true\"</literal> on a possible nested <literal><column></literal> element, but on the <literal><key></literal> element."
+#. Tag: para
+#: association_mapping.xml:173
+#, no-c-format
+msgid ""
+"It is important that you define <literal>not-null=\"true\"</literal> on the "
+"<literal><key></literal> element of the collection mapping if the "
+"underlying foreign key column is <literal>NOT NULL</literal>. Don't only "
+"declare <literal>not-null=\"true\"</literal> on a possible nested "
+"<literal><column></literal> element, but on the <literal><key></"
+"literal> element."
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <many-to-one name=\"address\" \n"
- " column=\"addressId\" \n"
- " unique=\"true\"\n"
- " not-null=\"true\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <one-to-one name=\"person\" \n"
- " property-ref=\"address\"/>\n"
- "</class>]]>"
+"UNTRANSLATED! It is important that you define <literal>not-null=\"true\"</"
+"literal> on the <literal><key></literal> element of the collection "
+"mapping if the underlying foreign key column is <literal>NOT NULL</literal>. "
+"Don't only declare <literal>not-null=\"true\"</literal> on a possible nested "
+"<literal><column></literal> element, but on the <literal><key></"
+"literal> element."
-#: index.docbook:187
-msgid "A <emphasis>bidirectional one-to-one association on a foreign key</emphasis> is quite common."
-msgstr "Una <emphasis>asociación bidireccional uno-a-uno en una clave primaria</emphasis> usa el generador de id especial."
+#. Tag: para
+#: association_mapping.xml:187
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a foreign key</emphasis> "
+"is quite common."
+msgstr ""
+"Una <emphasis>asociación bidireccional uno-a-uno en una clave foránea</"
+"emphasis> es bastante común."
-#: index.docbook:192
+#. Tag: programlisting
+#: association_mapping.xml:192
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <many-to-one name=\"address\" \n"
- " column=\"addressId\" \n"
- " unique=\"true\"\n"
- " not-null=\"true\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <one-to-one name=\"person\" \n"
- " property-ref=\"address\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <many-to-one name=\"address\" \n"
+" column=\"addressId\" \n"
+" unique=\"true\"\n"
+" not-null=\"true\"/>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <one-to-one name=\"person\" \n"
+" property-ref=\"address\"/>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <one-to-one name=\"address\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"foreign\">\n"
- " <param name=\"property\">person</param>\n"
- " </generator>\n"
- " </id>\n"
- " <one-to-one name=\"person\" \n"
- " constrained=\"true\"/>\n"
- "</class>]]>"
-#: index.docbook:195
-msgid "A <emphasis>bidirectional one-to-one association on a primary key</emphasis> uses the special id generator."
-msgstr "Asociaciones bidireccionales con tablas de unión"
+#. Tag: para
+#: association_mapping.xml:195
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a primary key</emphasis> "
+"uses the special id generator."
+msgstr ""
+"Una <emphasis>asociación bidireccional uno-a-uno en una clave primaria</"
+"emphasis> usa el generador de id especial."
-#: index.docbook:200
+#. Tag: programlisting
+#: association_mapping.xml:200
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <one-to-one name=\"address\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"foreign\">\n"
- " <param name=\"property\">person</param>\n"
- " </generator>\n"
- " </id>\n"
- " <one-to-one name=\"person\" \n"
- " constrained=\"true\"/>\n"
- "</class>]]>"
-msgstr "uno a muchos / muchos a uno"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <one-to-one name=\"address\"/>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"foreign\">\n"
+" <param name=\"property\">person</param>\n"
+" </generator>\n"
+" </id>\n"
+" <one-to-one name=\"person\" \n"
+" constrained=\"true\"/>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:208
+#. Tag: title
+#: association_mapping.xml:208
+#, no-c-format
msgid "Bidirectional associations with join tables"
+msgstr "Asociaciones bidireccionales con tablas de unión"
+
+#. Tag: para
+#: association_mapping.xml:213
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-many association on a join table</"
+"emphasis>. Note that the <literal>inverse=\"true\"</literal> can go on "
+"either end of the association, on the collection, or on the join."
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\" \n"
- " table=\"PersonAddress\">\n"
- " <key column=\"personId\"/>\n"
- " <many-to-many column=\"addressId\"\n"
- " unique=\"true\"\n"
- " class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " inverse=\"true\" \n"
- " optional=\"true\">\n"
- " <key column=\"addressId\"/>\n"
- " <many-to-one name=\"person\"\n"
- " column=\"personId\"\n"
- " not-null=\"true\"/>\n"
- " </join>\n"
- "</class>]]>"
+"Una <emphasis>asociación bidireccional uno-a-muchos en una tabla de unión</"
+"emphasis>. Observa que el <literal>inverse=\"true\"</literal> puede ir a "
+"cualquier lado de la asociación, en la colección, o en la unión."
-#: index.docbook:213
-msgid "A <emphasis>bidirectional one-to-many association on a join table</emphasis>. Note that the <literal>inverse=\"true\"</literal> can go on either end of the association, on the collection, or on the join."
-msgstr "uno a uno"
+#. Tag: programlisting
+#: association_mapping.xml:219
+#, no-c-format
+msgid ""
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <set name=\"addresses\" \n"
+" table=\"PersonAddress\">\n"
+" <key column=\"personId\"/>\n"
+" <many-to-many column=\"addressId\"\n"
+" unique=\"true\"\n"
+" class=\"Address\"/>\n"
+" </set>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <join table=\"PersonAddress\" \n"
+" inverse=\"true\" \n"
+" optional=\"true\">\n"
+" <key column=\"addressId\"/>\n"
+" <many-to-one name=\"person\"\n"
+" column=\"personId\"\n"
+" not-null=\"true\"/>\n"
+" </join>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:219
+#. Tag: programlisting
+#: association_mapping.xml:220
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\" \n"
- " table=\"PersonAddress\">\n"
- " <key column=\"personId\"/>\n"
- " <many-to-many column=\"addressId\"\n"
- " unique=\"true\"\n"
- " class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " inverse=\"true\" \n"
- " optional=\"true\">\n"
- " <key column=\"addressId\"/>\n"
- " <many-to-one name=\"person\"\n"
- " column=\"personId\"\n"
- " not-null=\"true\"/>\n"
- " </join>\n"
- "</class>]]>"
-msgstr "Una <emphasis>asociación bidireccional uno-a-uno en una tabla de unión</emphasis> es inusual en extremo, pero posible."
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key )\n"
+"create table PersonAddress ( personId bigint not null, addressId bigint not "
+"null primary key )\n"
+"create table Address ( addressId bigint not null primary key )\n"
+" ]]>"
+msgstr ""
-#: index.docbook:220
+#. Tag: para
+#: association_mapping.xml:227
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId bigint not null, addressId bigint not null primary key )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
+"A <emphasis>bidirectional one-to-one association on a join table</emphasis> "
+"is extremely unusual, but possible."
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " optional=\"true\">\n"
- " <key column=\"personId\" \n"
- " unique=\"true\"/>\n"
- " <many-to-one name=\"address\"\n"
- " column=\"addressId\" \n"
- " not-null=\"true\"\n"
- " unique=\"true\"/>\n"
- " </join>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " optional=\"true\"\n"
- " inverse=\"true\">\n"
- " <key column=\"addressId\" \n"
- " unique=\"true\"/>\n"
- " <many-to-one name=\"address\"\n"
- " column=\"personId\" \n"
- " not-null=\"true\"\n"
- " unique=\"true\"/>\n"
- " </join>\n"
- "</class>]]>"
+"Una <emphasis>asociación bidireccional uno-a-uno en una tabla de unión</"
+"emphasis> es inusual en extremo, pero posible."
-#: index.docbook:227
-msgid "A <emphasis>bidirectional one-to-one association on a join table</emphasis> is extremely unusual, but possible."
-msgstr "muchos a muchos"
-
-#: index.docbook:232
+#. Tag: programlisting
+#: association_mapping.xml:232
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " optional=\"true\">\n"
- " <key column=\"personId\" \n"
- " unique=\"true\"/>\n"
- " <many-to-one name=\"address\"\n"
- " column=\"addressId\" \n"
- " not-null=\"true\"\n"
- " unique=\"true\"/>\n"
- " </join>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " optional=\"true\"\n"
- " inverse=\"true\">\n"
- " <key column=\"addressId\" \n"
- " unique=\"true\"/>\n"
- " <many-to-one name=\"person\"\n"
- " column=\"personId\" \n"
- " not-null=\"true\"\n"
- " unique=\"true\"/>\n"
- " </join>\n"
- "</class>]]>"
-msgstr "Finalmente, tenemos una <emphasis>asociación bidireccional muchos-a-muchos</emphasis>."
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <join table=\"PersonAddress\" \n"
+" optional=\"true\">\n"
+" <key column=\"personId\" \n"
+" unique=\"true\"/>\n"
+" <many-to-one name=\"address\"\n"
+" column=\"addressId\" \n"
+" not-null=\"true\"\n"
+" unique=\"true\"/>\n"
+" </join>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <join table=\"PersonAddress\" \n"
+" optional=\"true\"\n"
+" inverse=\"true\">\n"
+" <key column=\"addressId\" \n"
+" unique=\"true\"/>\n"
+" <many-to-one name=\"person\"\n"
+" column=\"personId\" \n"
+" not-null=\"true\"\n"
+" unique=\"true\"/>\n"
+" </join>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:240
-msgid "Finally, we have a <emphasis>bidirectional many-to-many association</emphasis>."
+#. Tag: para
+#: association_mapping.xml:240
+#, no-c-format
+msgid ""
+"Finally, we have a <emphasis>bidirectional many-to-many association</"
+"emphasis>."
msgstr ""
+"Finalmente, tenemos una <emphasis>asociación bidireccional muchos-a-muchos</"
+"emphasis>."
-#: index.docbook:244
+#. Tag: programlisting
+#: association_mapping.xml:244
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\" table=\"PersonAddress\">\n"
- " <key column=\"personId\"/>\n"
- " <many-to-many column=\"addressId\"\n"
- " class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"people\" inverse=\"true\" table=\"PersonAddress\">\n"
- " <key column=\"addressId\"/>\n"
- " <many-to-many column=\"personId\"\n"
- " class=\"Person\"/>\n"
- " </set>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <set name=\"addresses\" table=\"PersonAddress\">\n"
+" <key column=\"personId\"/>\n"
+" <many-to-many column=\"addressId\"\n"
+" class=\"Address\"/>\n"
+" </set>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <set name=\"people\" inverse=\"true\" table=\"PersonAddress\">\n"
+" <key column=\"addressId\"/>\n"
+" <many-to-many column=\"personId\"\n"
+" class=\"Person\"/>\n"
+" </set>\n"
+"</class>]]>"
msgstr ""
-#: index.docbook:253
+#. Tag: title
+#: association_mapping.xml:253
+#, no-c-format
msgid "More complex association mappings"
-msgstr ""
+msgstr "translator-credits"
-#: index.docbook:255
-msgid "More complex association joins are <emphasis>extremely</emphasis> rare. Hibernate makes it possible to handle more complex situations using SQL fragments embedded in the mapping document. For example, if a table with historical account information data defines <literal>accountNumber</literal>, <literal>effectiveEndDate</literal> and <literal>effectiveStartDate</literal>columns, mapped as follows:"
+#. Tag: para
+#: association_mapping.xml:255
+#, no-c-format
+msgid ""
+"More complex association joins are <emphasis>extremely</emphasis> rare. "
+"Hibernate makes it possible to handle more complex situations using SQL "
+"fragments embedded in the mapping document. For example, if a table with "
+"historical account information data defines <literal>accountNumber</"
+"literal>, <literal>effectiveEndDate</literal> and "
+"<literal>effectiveStartDate</literal>columns, mapped as follows:"
msgstr ""
-#: index.docbook:264
+#. Tag: programlisting
+#: association_mapping.xml:264
+#, no-c-format
msgid ""
- "<![CDATA[<properties name=\"currentAccountKey\">\n"
- " <property name=\"accountNumber\" type=\"string\" not-null=\"true\"/>\n"
- " <property name=\"currentAccount\" type=\"boolean\">\n"
- " <formula>case when effectiveEndDate is null then 1 else 0 end</formula>\n"
- " </property>\n"
- "</properties>\n"
- "<property name=\"effectiveEndDate\" type=\"date\"/>\n"
- "<property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/>]]>"
+"<![CDATA[<properties name=\"currentAccountKey\">\n"
+" <property name=\"accountNumber\" type=\"string\" not-null=\"true\"/>\n"
+" <property name=\"currentAccount\" type=\"boolean\">\n"
+" <formula>case when effectiveEndDate is null then 1 else 0 end</"
+"formula>\n"
+" </property>\n"
+"</properties>\n"
+"<property name=\"effectiveEndDate\" type=\"date\"/>\n"
+"<property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/>]]>"
msgstr ""
-#: index.docbook:266
-msgid "Then we can map an association to the <emphasis>current</emphasis> instance (the one with null <literal>effectiveEndDate</literal>) using:"
+#. Tag: para
+#: association_mapping.xml:266
+#, no-c-format
+msgid ""
+"Then we can map an association to the <emphasis>current</emphasis> instance "
+"(the one with null <literal>effectiveEndDate</literal>) using:"
msgstr ""
-#: index.docbook:271
+#. Tag: programlisting
+#: association_mapping.xml:271
+#, no-c-format
msgid ""
- "<![CDATA[<many-to-one name=\"currentAccountInfo\" \n"
- " property-ref=\"currentAccountKey\"\n"
- " class=\"AccountInfo\">\n"
- " <column name=\"accountNumber\"/>\n"
- " <formula>'1'</formula>\n"
- "</many-to-one>]]>"
+"<![CDATA[<many-to-one name=\"currentAccountInfo\" \n"
+" property-ref=\"currentAccountKey\"\n"
+" class=\"AccountInfo\">\n"
+" <column name=\"accountNumber\"/>\n"
+" <formula>'1'</formula>\n"
+"</many-to-one>]]>"
msgstr ""
-#: index.docbook:273
-msgid "In a more complex example, imagine that the association between <literal>Employee</literal> and <literal>Organization</literal> is maintained in an <literal>Employment</literal> table full of historical employment data. Then an association to the employee's <emphasis>most recent</emphasis> employer (the one with the most recent <literal>startDate</literal>) might be mapped this way:"
+#. Tag: para
+#: association_mapping.xml:273
+#, no-c-format
+msgid ""
+"In a more complex example, imagine that the association between "
+"<literal>Employee</literal> and <literal>Organization</literal> is "
+"maintained in an <literal>Employment</literal> table full of historical "
+"employment data. Then an association to the employee's <emphasis>most "
+"recent</emphasis> employer (the one with the most recent <literal>startDate</"
+"literal>) might be mapped this way:"
msgstr ""
-#: index.docbook:281
+#. Tag: programlisting
+#: association_mapping.xml:281
+#, no-c-format
msgid ""
- "<![CDATA[<join>\n"
- " <key column=\"employeeId\"/>\n"
- " <subselect>\n"
- " select employeeId, orgId \n"
- " from Employments \n"
- " group by orgId \n"
- " having startDate = max(startDate)\n"
- " </subselect>\n"
- " <many-to-one name=\"mostRecentEmployer\" \n"
- " class=\"Organization\" \n"
- " column=\"orgId\"/>\n"
- "</join>]]>"
+"<![CDATA[<join>\n"
+" <key column=\"employeeId\"/>\n"
+" <subselect>\n"
+" select employeeId, orgId \n"
+" from Employments \n"
+" group by orgId \n"
+" having startDate = max(startDate)\n"
+" </subselect>\n"
+" <many-to-one name=\"mostRecentEmployer\" \n"
+" class=\"Organization\" \n"
+" column=\"orgId\"/>\n"
+"</join>]]>"
msgstr ""
-#: index.docbook:283
-msgid "You can get quite creative with this functionality, but it is usually more practical to handle these kinds of cases using HQL or a criteria query."
+#. Tag: para
+#: association_mapping.xml:283
+#, no-c-format
+msgid ""
+"You can get quite creative with this functionality, but it is usually more "
+"practical to handle these kinds of cases using HQL or a criteria query."
msgstr ""
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
Modified: core/trunk/documentation/manual/translations/es-ES/content/basic_mapping.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/basic_mapping.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/basic_mapping.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,3067 +1,5724 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: basic_mapping.xml:5
+#, no-c-format
msgid "Basic O/R Mapping"
-msgstr "Mapeo O/R Básico"
+msgstr "Mapeo O/R Básico"
-#: index.docbook:8
+#. Tag: title
+#: basic_mapping.xml:8
+#, no-c-format
msgid "Mapping declaration"
-msgstr "Declaración de mapeo"
+msgstr "Declaración de mapeo"
-#: index.docbook:10
-msgid "Object/relational mappings are usually defined in an XML document. The mapping document is designed to be readable and hand-editable. The mapping language is Java-centric, meaning that mappings are constructed around persistent class declarations, not table declarations."
-msgstr "Los mapeos objeto/relacional se definen usualmente en un documento XML. El documento de mapeo está diseñado para ser leíble y editable a mano. El lenguaje de mapeo es Java-céntrico, o sea que los mapeos se construyen alrededor de declaraciones de clases persistentes, no declaraciones de tablas."
+#. Tag: para
+#: basic_mapping.xml:10
+#, no-c-format
+msgid ""
+"Object/relational mappings are usually defined in an XML document. The "
+"mapping document is designed to be readable and hand-editable. The mapping "
+"language is Java-centric, meaning that mappings are constructed around "
+"persistent class declarations, not table declarations."
+msgstr ""
+"Los mapeos objeto/relacional se definen usualmente en un documento XML. El "
+"documento de mapeo está diseñado para ser leíble y editable a mano. El "
+"lenguaje de mapeo es Java-céntrico, o sea que los mapeos se construyen "
+"alrededor de declaraciones de clases persistentes, no declaraciones de "
+"tablas."
-#: index.docbook:17
-msgid "Note that, even though many Hibernate users choose to write the XML by hand, a number of tools exist to generate the mapping document, including XDoclet, Middlegen and AndroMDA."
-msgstr "Observa que, incluso aunque muchos usuarios de Hibernate eligen escribir el XML a mano, existe una cantidad de herramientas para generar el documento de mapeo, incluyendo XDoclet, Middlegen y AndroMDA."
+#. Tag: para
+#: basic_mapping.xml:17
+#, no-c-format
+msgid ""
+"Note that, even though many Hibernate users choose to write the XML by hand, "
+"a number of tools exist to generate the mapping document, including XDoclet, "
+"Middlegen and AndroMDA."
+msgstr ""
+"Observa que, incluso aunque muchos usuarios de Hibernate eligen escribir el "
+"XML a mano, existe una cantidad de herramientas para generar el documento de "
+"mapeo, incluyendo XDoclet, Middlegen y AndroMDA."
-#: index.docbook:23
+#. Tag: para
+#: basic_mapping.xml:23
+#, no-c-format
msgid "Lets kick off with an example mapping:"
msgstr "Comencemos por un mapeo de ejemplo:"
-#: index.docbook:27
+#. Tag: programlisting
+#: basic_mapping.xml:27
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping package=\"eg\">\n"
- "\n"
- " <class name=\"Cat\"\n"
- " table=\"cats\"\n"
- " discriminator-value=\"C\">\n"
- "\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "\n"
- " <discriminator column=\"subclass\"\n"
- " type=\"character\"/>\n"
- "\n"
- " <property name=\"weight\"/>\n"
- "\n"
- " <property name=\"birthdate\"\n"
- " type=\"date\"\n"
- " not-null=\"true\"\n"
- " update=\"false\"/>\n"
- "\n"
- " <property name=\"color\"\n"
- " type=\"eg.types.ColorUserType\"\n"
- " not-null=\"true\"\n"
- " update=\"false\"/>\n"
- "\n"
- " <property name=\"sex\"\n"
- " not-null=\"true\"\n"
- " update=\"false\"/>\n"
- "\n"
- " <property name=\"litterId\"\n"
- " column=\"litterId\"\n"
- " update=\"false\"/>\n"
- "\n"
- " <many-to-one name=\"mother\"\n"
- " column=\"mother_id\"\n"
- " update=\"false\"/>\n"
- "\n"
- " <set name=\"kittens\"\n"
- " inverse=\"true\"\n"
- " order-by=\"litter_id\">\n"
- " <key column=\"mother_id\"/>\n"
- " <one-to-many class=\"Cat\"/>\n"
- " </set>\n"
- "\n"
- " <subclass name=\"DomesticCat\"\n"
- " discriminator-value=\"D\">\n"
- "\n"
- " <property name=\"name\"\n"
- " type=\"string\"/>\n"
- "\n"
- " </subclass>\n"
- "\n"
- " </class>\n"
- "\n"
- " <class name=\"Dog\">\n"
- " <!-- mapping for Dog could go here -->\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<?xml version=\"1.0\"?>\n"
+"<!DOCTYPE hibernate-mapping PUBLIC\n"
+" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+" \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+"\n"
+"<hibernate-mapping package=\"eg\">\n"
+"\n"
+" <class name=\"Cat\"\n"
+" table=\"cats\"\n"
+" discriminator-value=\"C\">\n"
+"\n"
+" <id name=\"id\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"\n"
+" <discriminator column=\"subclass\"\n"
+" type=\"character\"/>\n"
+"\n"
+" <property name=\"weight\"/>\n"
+"\n"
+" <property name=\"birthdate\"\n"
+" type=\"date\"\n"
+" not-null=\"true\"\n"
+" update=\"false\"/>\n"
+"\n"
+" <property name=\"color\"\n"
+" type=\"eg.types.ColorUserType\"\n"
+" not-null=\"true\"\n"
+" update=\"false\"/>\n"
+"\n"
+" <property name=\"sex\"\n"
+" not-null=\"true\"\n"
+" update=\"false\"/>\n"
+"\n"
+" <property name=\"litterId\"\n"
+" column=\"litterId\"\n"
+" update=\"false\"/>\n"
+"\n"
+" <many-to-one name=\"mother\"\n"
+" column=\"mother_id\"\n"
+" update=\"false\"/>\n"
+"\n"
+" <set name=\"kittens\"\n"
+" inverse=\"true\"\n"
+" order-by=\"litter_id\">\n"
+" <key column=\"mother_id\"/>\n"
+" <one-to-many class=\"Cat\"/>\n"
+" </set>\n"
+"\n"
+" <subclass name=\"DomesticCat\"\n"
+" discriminator-value=\"D\">\n"
+"\n"
+" <property name=\"name\"\n"
+" type=\"string\"/>\n"
+"\n"
+" </subclass>\n"
+"\n"
+" </class>\n"
+"\n"
+" <class name=\"Dog\">\n"
+" <!-- mapping for Dog could go here -->\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping package=\"eg\">\n"
- "\n"
- " <class name=\"Cat\" \n"
- " table=\"cats\"\n"
- " discriminator-value=\"C\">\n"
- " \n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "\n"
- " <discriminator column=\"subclass\" \n"
- " type=\"character\"/>\n"
- "\n"
- " <property name=\"weight\"/>\n"
- "\n"
- " <property name=\"birthdate\"\n"
- " type=\"date\" \n"
- " not-null=\"true\" \n"
- " update=\"false\"/>\n"
- "\n"
- " <property name=\"color\"\n"
- " type=\"eg.types.ColorUserType\"\n"
- " not-null=\"true\"\n"
- " update=\"false\"/>\n"
- "\n"
- " <property name=\"sex\"\n"
- " not-null=\"true\" \n"
- " update=\"false\"/>\n"
- "\n"
- " <property name=\"litterId\"\n"
- " column=\"litterId\"\n"
- " update=\"false\"/>\n"
- "\n"
- " <many-to-one name=\"mother\"\n"
- " column=\"mother_id\"\n"
- " update=\"false\"/>\n"
- "\n"
- " <set name=\"kittens\"\n"
- " inverse=\"true\"\n"
- " order-by=\"litter_id\">\n"
- " <key column=\"mother_id\"/>\n"
- " <one-to-many class=\"Cat\"/>\n"
- " </set>\n"
- "\n"
- " <subclass name=\"DomesticCat\"\n"
- " discriminator-value=\"D\">\n"
- "\n"
- " <property name=\"name\" \n"
- " type=\"string\"/>\n"
- "\n"
- " </subclass>\n"
- "\n"
- " </class>\n"
- "\n"
- " <class name=\"Dog\">\n"
- " <!-- mapping for Dog could go here -->\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:29
-msgid "We will now discuss the content of the mapping document. We will only describe the document elements and attributes that are used by Hibernate at runtime. The mapping document also contains some extra optional attributes and elements that affect the database schemas exported by the schema export tool. (For example the <literal> not-null</literal> attribute.)"
-msgstr "Discutiremos ahora el contenido del documento de mapeo. Describiremos sólo los elementos y atributos que son usados por Hibernate en tiempo de ejecución. El documento de mapeo contiene además algunos atributos y elementos extra opcionales que afectan los esquemas de base de datos exportados por la herramienta de exportación de esquemas. (Por ejemplo, el atributo <literal>not-null</literal>.)"
+#. Tag: para
+#: basic_mapping.xml:29
+#, no-c-format
+msgid ""
+"We will now discuss the content of the mapping document. We will only "
+"describe the document elements and attributes that are used by Hibernate at "
+"runtime. The mapping document also contains some extra optional attributes "
+"and elements that affect the database schemas exported by the schema export "
+"tool. (For example the <literal> not-null</literal> attribute.)"
+msgstr ""
+"Discutiremos ahora el contenido del documento de mapeo. Describiremos sólo "
+"los elementos y atributos que son usados por Hibernate en tiempo de "
+"ejecución. El documento de mapeo contiene además algunos atributos y "
+"elementos extra opcionales que afectan los esquemas de base de datos "
+"exportados por la herramienta de exportación de esquemas. (Por ejemplo, el "
+"atributo <literal>not-null</literal>.)"
-#: index.docbook:40
+#. Tag: title
+#: basic_mapping.xml:40
+#, no-c-format
msgid "Doctype"
msgstr "Doctype"
-#: index.docbook:42
-msgid "All XML mappings should declare the doctype shown. The actual DTD may be found at the URL above, in the directory <literal>hibernate-x.x.x/src/org/hibernate </literal> or in <literal>hibernate3.jar</literal>. Hibernate will always look for the DTD in its classpath first. If you experience lookups of the DTD using an Internet connection, check your DTD declaration against the contents of your claspath."
-msgstr "Todos los mapeos XML deben declarar el doctype mostrado. El DTD actual puede ser encontrado en el URL mencionado arriba, en el directorio <literal>hibernate-x.x.x/src/org/hibernate</literal>, o en <literal>hibernate3.jar</literal>. Hibernate siempre buscará el DTD primero en el classpath. Si experimentas búsquedas del DTD usando una conexión de Internet, chequea tu declaración de DTD contra la contenida en el classpath."
+#. Tag: para
+#: basic_mapping.xml:42
+#, no-c-format
+msgid ""
+"All XML mappings should declare the doctype shown. The actual DTD may be "
+"found at the URL above, in the directory <literal>hibernate-x.x.x/src/org/"
+"hibernate </literal> or in <literal>hibernate3.jar</literal>. Hibernate will "
+"always look for the DTD in its classpath first. If you experience lookups of "
+"the DTD using an Internet connection, check your DTD declaration against the "
+"contents of your claspath."
+msgstr ""
+"Todos los mapeos XML deben declarar el doctype mostrado. El DTD actual puede "
+"ser encontrado en el URL mencionado arriba, en el directorio "
+"<literal>hibernate-x.x.x/src/org/hibernate</literal>, o en "
+"<literal>hibernate3.jar</literal>. Hibernate siempre buscará el DTD primero "
+"en el classpath. Si experimentas búsquedas del DTD usando una conexión de "
+"Internet, chequea tu declaración de DTD contra la contenida en el classpath."
-#: index.docbook:52
+#. Tag: title
+#: basic_mapping.xml:52
+#, no-c-format
msgid "EntityResolver"
-msgstr "hibernate-mapping"
+msgstr "UNTRANSLATED! EntityResolver"
-#: index.docbook:53
-msgid "As mentioned previously, Hibernate will first attempt to resolve DTDs in its classpath. The manner in which it does this is by registering a custom <literal>org.xml.sax.EntityResolver</literal> implementation with the SAXReader it uses to read in the xml files. This custom <literal>EntityResolver</literal> recognizes two different systemId namespaces."
-msgstr "Este elemento tiene muchos atributos opcionales. Los atributos <literal>schema</literal> y <literal>catalog</literal> especifican que las tablas a las que se refiere en el mapeo pertenecen al esquema y/o catálogo mencionado(s). De especificarse, los nombres de tablas serán cualificados por el nombre de esquema y catálogo dados. De omitirse, los nombres de tablas no serán cualificados. El atributo <literal>default-cascade</literal> especifica qué estilo de cascada debe asumirse para las propiedades y colecciones que no especifican un atributo <literal>cascade</literal>. El atributo <literal>auto-import</literal> nos permite usar nombres de clase sin cualificar en el lenguaje de consulta, por defecto."
+#. Tag: para
+#: basic_mapping.xml:53
+#, no-c-format
+msgid ""
+"As mentioned previously, Hibernate will first attempt to resolve DTDs in its "
+"classpath. The manner in which it does this is by registering a custom "
+"<literal>org.xml.sax.EntityResolver</literal> implementation with the "
+"SAXReader it uses to read in the xml files. This custom "
+"<literal>EntityResolver</literal> recognizes two different systemId "
+"namespaces."
+msgstr ""
+"As mentioned previously, Hibernate will first attempt to resolve DTDs in its "
+"classpath. The manner in which it does this is by registering a custom "
+"<literal>org.xml.sax.EntityResolver</literal> implementation with the "
+"SAXReader it uses to read in the xml files. This custom "
+"<literal>EntityResolver</literal> recognizes two different systemId "
+"namespaces."
-#: index.docbook:61
-msgid "a <literal>hibernate namespace</literal> is recognized whenever the resolver encounteres a systemId starting with <literal>http://hibernate.sourceforge.net/</literal>; the resolver attempts to resolve these entities via the classlaoder which loaded the Hibernate classes."
+#. Tag: para
+#: basic_mapping.xml:61
+#, no-c-format
+msgid ""
+"a <literal>hibernate namespace</literal> is recognized whenever the resolver "
+"encounteres a systemId starting with <literal>http://hibernate.sourceforge."
+"net/</literal>; the resolver attempts to resolve these entities via the "
+"classlaoder which loaded the Hibernate classes."
msgstr ""
- "<![CDATA[<hibernate-mapping\n"
- " schema=\"schemaName\"\n"
- " catalog=\"catalogName\"\n"
- " default-cascade=\"cascade_style\"\n"
- " default-access=\"field|property|ClassName\"\n"
- " default-lazy=\"true|false\"\n"
- " auto-import=\"true|false\"\n"
- " package=\"package.name\"\n"
- " />]]>"
+"a <literal>hibernate namespace</literal> is recognized whenever the resolver "
+"encounteres a systemId starting with <literal>http://hibernate.sourceforge."
+"net/</literal>; the resolver attempts to resolve these entities via the "
+"classlaoder which loaded the Hibernate classes."
-#: index.docbook:70
-msgid "a <literal>user namespace</literal> is recognized whenever the resolver encounteres a systemId using a <literal>classpath://</literal> URL protocol; the resolver will attempt to resolve these entities via (1) the current thread context classloader and (2) the classloader which loaded the Hibernate classes."
-msgstr "<literal>schema</literal> (opcional): El nombre de un esquema de la base de datos."
+#. Tag: para
+#: basic_mapping.xml:70
+#, no-c-format
+msgid ""
+"a <literal>user namespace</literal> is recognized whenever the resolver "
+"encounteres a systemId using a <literal>classpath://</literal> URL protocol; "
+"the resolver will attempt to resolve these entities via (1) the current "
+"thread context classloader and (2) the classloader which loaded the "
+"Hibernate classes."
+msgstr ""
+"a <literal>user namespace</literal> is recognized whenever the resolver "
+"encounteres a systemId using a <literal>classpath://</literal> URL protocol; "
+"the resolver will attempt to resolve these entities via (1) the current "
+"thread context classloader and (2) the classloader which loaded the "
+"Hibernate classes."
-#: index.docbook:79
+#. Tag: para
+#: basic_mapping.xml:79
+#, no-c-format
msgid "An example of utilizing user namespacing:"
-msgstr "<literal>catalog</literal> (opcional): El nombre de un catálogo de la base de datos."
+msgstr "An example of utilizing user namespacing:"
-#: index.docbook:82
+#. Tag: programlisting
+#: basic_mapping.xml:82
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\" [\n"
- " <!ENTITY types SYSTEM \"classpath://your/domain/types.xml\">\n"
- "]>\n"
- "\n"
- "<hibernate-mapping package=\"your.domain\">\n"
- " <class name=\"MyEntity\">\n"
- " <id name=\"id\" type=\"my-custom-id-type\">\n"
- " ...\n"
- " </id>\n"
- " <class>\n"
- " &types;\n"
- "</hibernate-mapping>]]>"
-msgstr "<literal>default-cascade</literal> (opcional - por defecto a <literal>none</literal>): Un estilo de cascada por defecto."
+"<![CDATA[<?xml version=\"1.0\"?>\n"
+"<!DOCTYPE hibernate-mapping PUBLIC\n"
+" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+" \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\" [\n"
+" <!ENTITY types SYSTEM \"classpath://your/domain/types.xml\">\n"
+"]>\n"
+"\n"
+"<hibernate-mapping package=\"your.domain\">\n"
+" <class name=\"MyEntity\">\n"
+" <id name=\"id\" type=\"my-custom-id-type\">\n"
+" ...\n"
+" </id>\n"
+" <class>\n"
+" &types;\n"
+"</hibernate-mapping>]]>"
+msgstr ""
-#: index.docbook:83
-msgid "Where <literal>types.xml</literal> is a resource in the <literal>your.domain</literal> package and contains a custom <xref linkend=\"mapping-types-custom\"/>typedef."
-msgstr "<literal>default-access</literal> (opcional - por defecto a <literal>property</literal>): La estrategia que Hibernate debe usar para acceder a todas las propiedades. Puede ser una implementación personalizada de <literal>PropertyAccessor</literal>."
+#. Tag: para
+#: basic_mapping.xml:83
+#, no-c-format
+msgid ""
+"Where <literal>types.xml</literal> is a resource in the <literal>your."
+"domain</literal> package and contains a custom <link linkend=\"mapping-types-"
+"custom\">typedef</link>."
+msgstr ""
+"Where <literal>types.xml</literal> is a resource in the <literal>your."
+"domain</literal> package and contains a custom <link linkend=\"mapping-types-"
+"custom\">typedef</link>."
-#: index.docbook:91
+#. Tag: title
+#: basic_mapping.xml:91
+#, no-c-format
msgid "hibernate-mapping"
-msgstr "<literal>default-lazy</literal> (opcional - por defecto a <literal>true</literal>): El valor por defecto para los atributos <literal>lazy</literal> de mapeos de clase y colleción no especificados."
+msgstr "hibernate-mapping"
-#: index.docbook:93
-msgid "This element has several optional attributes. The <literal>schema</literal> and <literal>catalog</literal> attributes specify that tables referred to in this mapping belong to the named schema and/or catalog. If specified, tablenames will be qualified by the given schema and catalog names. If missing, tablenames will be unqualified. The <literal>default-cascade</literal> attribute specifies what cascade style should be assumed for properties and collections which do not specify a <literal>cascade</literal> attribute. The <literal>auto-import</literal> attribute lets us use unqualified class names in the query language, by default."
-msgstr "<literal>auto-import</literal> (opcional - por defecto a <literal>true</literal>): Especifica si podemos usar nombres de clases no cualificados (de clases en este mapeo) en el lenguaje de consulta."
+#. Tag: para
+#: basic_mapping.xml:93
+#, no-c-format
+msgid ""
+"This element has several optional attributes. The <literal>schema</literal> "
+"and <literal>catalog</literal> attributes specify that tables referred to in "
+"this mapping belong to the named schema and/or catalog. If specified, "
+"tablenames will be qualified by the given schema and catalog names. If "
+"missing, tablenames will be unqualified. The <literal>default-cascade</"
+"literal> attribute specifies what cascade style should be assumed for "
+"properties and collections which do not specify a <literal>cascade</literal> "
+"attribute. The <literal>auto-import</literal> attribute lets us use "
+"unqualified class names in the query language, by default."
+msgstr ""
+"Este elemento tiene muchos atributos opcionales. Los atributos "
+"<literal>schema</literal> y <literal>catalog</literal> especifican que las "
+"tablas a las que se refiere en el mapeo pertenecen al esquema y/o catálogo "
+"mencionado(s). De especificarse, los nombres de tablas serán cualificados "
+"por el nombre de esquema y catálogo dados. De omitirse, los nombres de "
+"tablas no serán cualificados. El atributo <literal>default-cascade</literal> "
+"especifica qué estilo de cascada debe asumirse para las propiedades y "
+"colecciones que no especifican un atributo <literal>cascade</literal>. El "
+"atributo <literal>auto-import</literal> nos permite usar nombres de clase "
+"sin cualificar en el lenguaje de consulta, por defecto."
-#: index.docbook:114
+#. Tag: programlisting
+#: basic_mapping.xml:114
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping\n"
- " schema=\"schemaName\"\n"
- " catalog=\"catalogName\"\n"
- " default-cascade=\"cascade_style\"\n"
- " default-access=\"field|property|ClassName\"\n"
- " default-lazy=\"true|false\"\n"
- " auto-import=\"true|false\"\n"
- " package=\"package.name\"\n"
- " />]]>"
-msgstr "<literal>package</literal> (opcional): Especifica un prefijo de paquete a asumir para los nombres no cualificados de clase en el documento de mapeo."
+"<![CDATA[<hibernate-mapping\n"
+" schema=\"schemaName\"\n"
+" catalog=\"catalogName\"\n"
+" default-cascade=\"cascade_style\"\n"
+" default-access=\"field|property|ClassName\"\n"
+" default-lazy=\"true|false\"\n"
+" auto-import=\"true|false\"\n"
+" package=\"package.name\"\n"
+" />]]>"
+msgstr ""
-#: index.docbook:117
+#. Tag: para
+#: basic_mapping.xml:117
+#, no-c-format
msgid "<literal>schema</literal> (optional): The name of a database schema."
-msgstr "Si tienes dos clases persistentes con el mismo nombre (sin cualificar), debes establecer <literal>auto-import=\"false\"</literal>. Hibernate lanzará una excepción si intentas asignar dos clases al mismo nombre \"importado\"."
+msgstr ""
+"<literal>schema</literal> (opcional): El nombre de un esquema de la base de "
+"datos."
-#: index.docbook:122
+#. Tag: para
+#: basic_mapping.xml:122
+#, no-c-format
msgid "<literal>catalog</literal> (optional): The name of a database catalog."
-msgstr "Observa que el elemento <literal>hibernate-mapping</literal> te permite anidar muchos mapeos <literal><class></literal> persistentes, como se muestra arriba. Sin embargo, es una buena práctica (y se espera de algunas herramientas) mapear sólo a una sola clase persistente (o a una sola jerarquía de clases) en un fichero de mapeo y nombrarlo después de la superclase persistente; por ejemplo, <literal>Cat.hbm.xml</literal>, <literal>Dog.hbm.xml</literal>, o, si se usa herencia, <literal>Animal.hbm.xml</literal>."
+msgstr ""
+"<literal>catalog</literal> (opcional): El nombre de un catálogo de la base "
+"de datos."
-#: index.docbook:127
-msgid "<literal>default-cascade</literal> (optional - defaults to <literal>none</literal>): A default cascade style."
-msgstr "<title>class</title>"
+#. Tag: para
+#: basic_mapping.xml:127
+#, no-c-format
+msgid ""
+"<literal>default-cascade</literal> (optional - defaults to <literal>none</"
+"literal>): A default cascade style."
+msgstr ""
+"<literal>default-cascade</literal> (opcional - por defecto a <literal>none</"
+"literal>): Un estilo de cascada por defecto."
-#: index.docbook:133
-msgid "<literal>default-access</literal> (optional - defaults to <literal>property</literal>): The strategy Hibernate should use for accessing all properties. Can be a custom implementation of <literal>PropertyAccessor</literal>."
-msgstr "Puedes declarar una clase persistente usando el elemento <literal>class</literal>:"
+#. Tag: para
+#: basic_mapping.xml:133
+#, no-c-format
+msgid ""
+"<literal>default-access</literal> (optional - defaults to <literal>property</"
+"literal>): The strategy Hibernate should use for accessing all properties. "
+"Can be a custom implementation of <literal>PropertyAccessor</literal>."
+msgstr ""
+"<literal>default-access</literal> (opcional - por defecto a "
+"<literal>property</literal>): La estrategia que Hibernate debe usar para "
+"acceder a todas las propiedades. Puede ser una implementación personalizada "
+"de <literal>PropertyAccessor</literal>."
-#: index.docbook:140
-msgid "<literal>default-lazy</literal> (optional - defaults to <literal>true</literal>): The default value for unspecifed <literal>lazy</literal> attributes of class and collection mappings."
+#. Tag: para
+#: basic_mapping.xml:140
+#, no-c-format
+msgid ""
+"<literal>default-lazy</literal> (optional - defaults to <literal>true</"
+"literal>): The default value for unspecifed <literal>lazy</literal> "
+"attributes of class and collection mappings."
msgstr ""
- "<![CDATA[<class\n"
- " name=\"ClassName\"\n"
- " table=\"tableName\"\n"
- " discriminator-value=\"discriminator_value\"\n"
- " mutable=\"true|false\"\n"
- " schema=\"owner\"\n"
- " catalog=\"catalog\"\n"
- " proxy=\"ProxyInterface\"\n"
- " dynamic-update=\"true|false\"\n"
- " dynamic-insert=\"true|false\"\n"
- " select-before-update=\"true|false\"\n"
- " polymorphism=\"implicit|explicit\"\n"
- " where=\"arbitrary sql where condition\"\n"
- " persister=\"PersisterClass\"\n"
- " batch-size=\"N\"\n"
- " optimistic-lock=\"none|version|dirty|all\"\n"
- " lazy=\"true|false\"\n"
- " entity-name=\"EntityName\"\n"
- " check=\"arbitrary sql check condition\"\n"
- " rowid=\"rowid\"\n"
- " subselect=\"SQL expression\"\n"
- " abstract=\"true|false\"\n"
- " node=\"element-name\"\n"
- "/>]]>"
+"<literal>default-lazy</literal> (opcional - por defecto a <literal>true</"
+"literal>): El valor por defecto para los atributos <literal>lazy</literal> "
+"de mapeos de clase y colleción no especificados."
-#: index.docbook:147
-msgid "<literal>auto-import</literal> (optional - defaults to <literal>true</literal>): Specifies whether we can use unqualified class names (of classes in this mapping) in the query language."
-msgstr "<literal>name</literal> (opcional): El nombre completamente cualificado de la clase Java persistente (o interface). Si este atributo es omitido, se asume que el mapeo es para una entidad non-POJO."
+#. Tag: para
+#: basic_mapping.xml:147
+#, no-c-format
+msgid ""
+"<literal>auto-import</literal> (optional - defaults to <literal>true</"
+"literal>): Specifies whether we can use unqualified class names (of classes "
+"in this mapping) in the query language."
+msgstr ""
+"<literal>auto-import</literal> (opcional - por defecto a <literal>true</"
+"literal>): Especifica si podemos usar nombres de clases no cualificados (de "
+"clases en este mapeo) en el lenguaje de consulta."
-#: index.docbook:154
-msgid "<literal>package</literal> (optional): Specifies a package prefix to assume for unqualified class names in the mapping document."
-msgstr "<literal>table</literal> (opcional - por defecto al nombre no cualificado de la clase): El nombre de su tabla en base de datos."
+#. Tag: para
+#: basic_mapping.xml:154
+#, no-c-format
+msgid ""
+"<literal>package</literal> (optional): Specifies a package prefix to assume "
+"for unqualified class names in the mapping document."
+msgstr ""
+"<literal>package</literal> (opcional): Especifica un prefijo de paquete a "
+"asumir para los nombres no cualificados de clase en el documento de mapeo."
-#: index.docbook:162
-msgid "If you have two persistent classes with the same (unqualified) name, you should set <literal>auto-import=\"false\"</literal>. Hibernate will throw an exception if you attempt to assign two classes to the same \"imported\" name."
-msgstr "<literal>discriminator-value</literal> (opcional - por defecto al nombre de la clase): Un valor que distingue subclases individuales, usado para el comportamiento polimórfico. Los valores aceptables incluyen <literal>null</literal> y <literal>not null</literal>."
+#. Tag: para
+#: basic_mapping.xml:162
+#, no-c-format
+msgid ""
+"If you have two persistent classes with the same (unqualified) name, you "
+"should set <literal>auto-import=\"false\"</literal>. Hibernate will throw an "
+"exception if you attempt to assign two classes to the same \"imported\" name."
+msgstr ""
+"Si tienes dos clases persistentes con el mismo nombre (sin cualificar), "
+"debes establecer <literal>auto-import=\"false\"</literal>. Hibernate lanzará "
+"una excepción si intentas asignar dos clases al mismo nombre \"importado\"."
-#: index.docbook:168
-msgid "Note that the <literal>hibernate-mapping</literal> element allows you to nest several persistent <literal><class></literal> mappings, as shown above. It is however good practice (and expected by some tools) to map only a single persistent class (or a single class hierarchy) in one mapping file and name it after the persistent superclass, e.g. <literal>Cat.hbm.xml</literal>, <literal>Dog.hbm.xml</literal>, or if using inheritance, <literal>Animal.hbm.xml</literal>."
-msgstr "<literal>mutable</literal> (opcional, por defecto a <literal>true</literal>): Especifica que las instancias de la clase (no) son mutables."
+#. Tag: para
+#: basic_mapping.xml:168
+#, no-c-format
+msgid ""
+"Note that the <literal>hibernate-mapping</literal> element allows you to "
+"nest several persistent <literal><class></literal> mappings, as shown "
+"above. It is however good practice (and expected by some tools) to map only "
+"a single persistent class (or a single class hierarchy) in one mapping file "
+"and name it after the persistent superclass, e.g. <literal>Cat.hbm.xml</"
+"literal>, <literal>Dog.hbm.xml</literal>, or if using inheritance, "
+"<literal>Animal.hbm.xml</literal>."
+msgstr ""
+"Observa que el elemento <literal>hibernate-mapping</literal> te permite "
+"anidar muchos mapeos <literal><class></literal> persistentes, como se "
+"muestra arriba. Sin embargo, es una buena práctica (y se espera de algunas "
+"herramientas) mapear sólo a una sola clase persistente (o a una sola "
+"jerarquía de clases) en un fichero de mapeo y nombrarlo después de la "
+"superclase persistente; por ejemplo, <literal>Cat.hbm.xml</literal>, "
+"<literal>Dog.hbm.xml</literal>, o, si se usa herencia, <literal>Animal.hbm."
+"xml</literal>."
-#: index.docbook:181
+#. Tag: title
+#: basic_mapping.xml:181
+#, no-c-format
msgid "<title>class</title>"
-msgstr "<literal>schema</literal> (opcional): Sobreescribe el nombre de esquema especificado por el elemento raíz <literal><hibernate-mapping></literal>."
+msgstr ""
-#: index.docbook:183
-msgid "You may declare a persistent class using the <literal>class</literal> element:"
-msgstr "<literal>catalog</literal> (opcional): Sobreescribe el nombre de catálogo especificado por el elemento raíz <literal><hibernate-mapping></literal>."
+#. Tag: para
+#: basic_mapping.xml:183
+#, no-c-format
+msgid ""
+"You may declare a persistent class using the <literal>class</literal> "
+"element:"
+msgstr ""
+"Puedes declarar una clase persistente usando el elemento <literal>class</"
+"literal>:"
-#: index.docbook:211
+#. Tag: programlisting
+#: basic_mapping.xml:211
+#, no-c-format
msgid ""
- "<![CDATA[<class\n"
- " name=\"ClassName\"\n"
- " table=\"tableName\"\n"
- " discriminator-value=\"discriminator_value\"\n"
- " mutable=\"true|false\"\n"
- " schema=\"owner\"\n"
- " catalog=\"catalog\"\n"
- " proxy=\"ProxyInterface\"\n"
- " dynamic-update=\"true|false\"\n"
- " dynamic-insert=\"true|false\"\n"
- " select-before-update=\"true|false\"\n"
- " polymorphism=\"implicit|explicit\"\n"
- " where=\"arbitrary sql where condition\"\n"
- " persister=\"PersisterClass\"\n"
- " batch-size=\"N\"\n"
- " optimistic-lock=\"none|version|dirty|all\"\n"
- " lazy=\"true|false\"\n"
- " entity-name=\"EntityName\"\n"
- " check=\"arbitrary sql check condition\"\n"
- " rowid=\"rowid\"\n"
- " subselect=\"SQL expression\"\n"
- " abstract=\"true|false\"\n"
- " node=\"element-name\"\n"
- "/>]]>"
-msgstr "<literal>proxy</literal> (opcional): Especifica una interface a usar para proxies de inicialización perezosa. Puedes especificar el nombre mismo de la clase."
+"<![CDATA[<class\n"
+" name=\"ClassName\"\n"
+" table=\"tableName\"\n"
+" discriminator-value=\"discriminator_value\"\n"
+" mutable=\"true|false\"\n"
+" schema=\"owner\"\n"
+" catalog=\"catalog\"\n"
+" proxy=\"ProxyInterface\"\n"
+" dynamic-update=\"true|false\"\n"
+" dynamic-insert=\"true|false\"\n"
+" select-before-update=\"true|false\"\n"
+" polymorphism=\"implicit|explicit\"\n"
+" where=\"arbitrary sql where condition\"\n"
+" persister=\"PersisterClass\"\n"
+" batch-size=\"N\"\n"
+" optimistic-lock=\"none|version|dirty|all\"\n"
+" lazy=\"true|false\"\n"
+" entity-name=\"EntityName\"\n"
+" check=\"arbitrary sql check condition\"\n"
+" rowid=\"rowid\"\n"
+" subselect=\"SQL expression\"\n"
+" abstract=\"true|false\"\n"
+" node=\"element-name\"\n"
+"/>]]>"
+msgstr ""
-#: index.docbook:214
-msgid "<literal>name</literal> (optional): The fully qualified Java class name of the persistent class (or interface). If this attribute is missing, it is assumed that the mapping is for a non-POJO entity."
-msgstr "<literal>dynamic-update</literal> (opcional, por defecto a <literal>false</literal>): Especifica que el SQL <literal>UPDATE</literal> debe ser generado en tiempo de ejecución y contener solamente aquellas columnas cuyo valor haya cambiado."
+#. Tag: para
+#: basic_mapping.xml:214
+#, no-c-format
+msgid ""
+"<literal>name</literal> (optional): The fully qualified Java class name of "
+"the persistent class (or interface). If this attribute is missing, it is "
+"assumed that the mapping is for a non-POJO entity."
+msgstr ""
+"<literal>name</literal> (opcional): El nombre completamente cualificado de "
+"la clase Java persistente (o interface). Si este atributo es omitido, se "
+"asume que el mapeo es para una entidad non-POJO."
-#: index.docbook:221
-msgid "<literal>table</literal> (optional - defaults to the unqualified class name): The name of its database table."
-msgstr "<literal>dynamic-insert</literal> (opcional, por defecto a <literal>false</literal>): Especifica que el SQL <literal>INSERT</literal> debe ser generado en tiempo de ejecución y contener solamente aquellas columnas cuyo valores no son nulos."
+#. Tag: para
+#: basic_mapping.xml:221
+#, no-c-format
+msgid ""
+"<literal>table</literal> (optional - defaults to the unqualified class "
+"name): The name of its database table."
+msgstr ""
+"<literal>table</literal> (opcional - por defecto al nombre no cualificado de "
+"la clase): El nombre de su tabla en base de datos."
-#: index.docbook:227
-msgid "<literal>discriminator-value</literal> (optional - defaults to the class name): A value that distiguishes individual subclasses, used for polymorphic behaviour. Acceptable values include <literal>null</literal> and <literal>not null</literal>."
-msgstr "<literal>select-before-update</literal> (opcional, por defecto a <literal>false</literal>): Especifica que Hibernate <emphasis>nunca</emphasis> debe realizar un SQL <literal>UPDATE</literal> a menos que se tenga certeza que un objeto haya sido modificado realmente. En ciertos casos, (realmente, sólo cuando un objeto transitorio ha sido asociado con una sesión nueva usando <literal>update()</literal>), esto significa que Hibernate realizará una SQL <literal>SELECT</literal> extra para determinar si un <literal>UPDATE</literal> es realmente requerido."
+#. Tag: para
+#: basic_mapping.xml:227
+#, no-c-format
+msgid ""
+"<literal>discriminator-value</literal> (optional - defaults to the class "
+"name): A value that distiguishes individual subclasses, used for polymorphic "
+"behaviour. Acceptable values include <literal>null</literal> and "
+"<literal>not null</literal>."
+msgstr ""
+"<literal>discriminator-value</literal> (opcional - por defecto al nombre de "
+"la clase): Un valor que distingue subclases individuales, usado para el "
+"comportamiento polimórfico. Los valores aceptables incluyen <literal>null</"
+"literal> y <literal>not null</literal>."
-#: index.docbook:234
-msgid "<literal>mutable</literal> (optional, defaults to <literal>true</literal>): Specifies that instances of the class are (not) mutable."
-msgstr "<literal>polymorphism</literal> (opcional, por defecto a <literal>implicit</literal>): Determina si se usa polimorfismo de consulta implícito o explícito."
+#. Tag: para
+#: basic_mapping.xml:234
+#, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional, defaults to <literal>true</literal>): "
+"Specifies that instances of the class are (not) mutable."
+msgstr ""
+"<literal>mutable</literal> (opcional, por defecto a <literal>true</"
+"literal>): Especifica que las instancias de la clase (no) son mutables."
-#: index.docbook:240, index.docbook:2204
-msgid "<literal>schema</literal> (optional): Override the schema name specified by the root <literal><hibernate-mapping></literal> element."
-msgstr "<literal>where</literal> (opcional) especifica una condición SQL <literal>WHERE</literal> arbitraria paraa ser usada al recuperar objetos de esta clase."
+#. Tag: para
+#: basic_mapping.xml:240 basic_mapping.xml:2204
+#, fuzzy, no-c-format
+msgid ""
+"<literal>schema</literal> (optional): Override the schema name specified by "
+"the root <literal><hibernate-mapping></literal> element."
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>schema</literal> (opcional): Sobreescribe el nombre de esquema "
+"especificado por el elemento raíz <literal><hibernate-mapping></"
+"literal>.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>schema</literal> (opcional): Sobrescribe el nombre de esquema "
+"especificado por el elemento raíz <literal><hibernate-mapping></"
+"literal>."
-#: index.docbook:246, index.docbook:2210
-msgid "<literal>catalog</literal> (optional): Override the catalog name specified by the root <literal><hibernate-mapping></literal> element."
-msgstr "<literal>persister</literal> (opcional): Especifica un <literal>ClassPersister</literal> personalizado."
+#. Tag: para
+#: basic_mapping.xml:246 basic_mapping.xml:2210
+#, fuzzy, no-c-format
+msgid ""
+"<literal>catalog</literal> (optional): Override the catalog name specified "
+"by the root <literal><hibernate-mapping></literal> element."
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>catalog</literal> (opcional): Sobreescribe el nombre de catálogo "
+"especificado por el elemento raíz <literal><hibernate-mapping></"
+"literal>.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>catalog</literal> (opcional): Sobrescribe el nombre de catálogo "
+"especificado por el elemento raíz <literal><hibernate-mapping></"
+"literal>."
-#: index.docbook:252
-msgid "<literal>proxy</literal> (optional): Specifies an interface to use for lazy initializing proxies. You may specify the name of the class itself."
-msgstr "<literal>batch-size</literal> (opcional, por defecto a <literal>1</literal>) especifica un \"tamaño de lote\" para traer instancias de esta clase por identificador."
+#. Tag: para
+#: basic_mapping.xml:252
+#, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): Specifies an interface to use for lazy "
+"initializing proxies. You may specify the name of the class itself."
+msgstr ""
+"<literal>proxy</literal> (opcional): Especifica una interface a usar para "
+"proxies de inicialización perezosa. Puedes especificar el nombre mismo de la "
+"clase."
-#: index.docbook:258
-msgid "<literal>dynamic-update</literal> (optional, defaults to <literal>false</literal>): Specifies that <literal>UPDATE</literal> SQL should be generated at runtime and contain only those columns whose values have changed."
-msgstr "<literal>optimistic-lock</literal> (opcional, por defecto a <literal>version</literal>): Determina la estrategia optimista de bloqueo."
+#. Tag: para
+#: basic_mapping.xml:258
+#, no-c-format
+msgid ""
+"<literal>dynamic-update</literal> (optional, defaults to <literal>false</"
+"literal>): Specifies that <literal>UPDATE</literal> SQL should be generated "
+"at runtime and contain only those columns whose values have changed."
+msgstr ""
+"<literal>dynamic-update</literal> (opcional, por defecto a <literal>false</"
+"literal>): Especifica que el SQL <literal>UPDATE</literal> debe ser generado "
+"en tiempo de ejecución y contener solamente aquellas columnas cuyo valor "
+"haya cambiado."
-#: index.docbook:265
-msgid "<literal>dynamic-insert</literal> (optional, defaults to <literal>false</literal>): Specifies that <literal>INSERT</literal> SQL should be generated at runtime and contain only the columns whose values are not null."
-msgstr "<literal>lazy</literal> (opcional): La recuperación perezosa puede ser deshabilitada por completo estableciendo <literal>lazy=\"false\"</literal>."
+#. Tag: para
+#: basic_mapping.xml:265
+#, no-c-format
+msgid ""
+"<literal>dynamic-insert</literal> (optional, defaults to <literal>false</"
+"literal>): Specifies that <literal>INSERT</literal> SQL should be generated "
+"at runtime and contain only the columns whose values are not null."
+msgstr ""
+"<literal>dynamic-insert</literal> (opcional, por defecto a <literal>false</"
+"literal>): Especifica que el SQL <literal>INSERT</literal> debe ser generado "
+"en tiempo de ejecución y contener solamente aquellas columnas cuyo valores "
+"no son nulos."
-#: index.docbook:272
-msgid "<literal>select-before-update</literal> (optional, defaults to <literal>false</literal>): Specifies that Hibernate should <emphasis>never</emphasis> perform an SQL <literal>UPDATE</literal> unless it is certain that an object is actually modified. In certain cases (actually, only when a transient object has been associated with a new session using <literal>update()</literal>), this means that Hibernate will perform an extra SQL <literal>SELECT</literal> to determine if an <literal>UPDATE</literal> is actually required."
-msgstr "<literal>entity-name</literal> (opcional): Hibernate3 permite que una clase sea mapeada varias veces (potencialmente a tablas diferentes), y permite que los mapeos de entidad sean representados por Maps o XML al nivel de Java. En estos casos, debes proveer un nombre explícito arbitrario para la entidad. Para más información, mira <xref linkend=\"persistent-classes-dynamicmodels\"/> y <xref linkend=\"xml\"/>."
+#. Tag: para
+#: basic_mapping.xml:272
+#, no-c-format
+msgid ""
+"<literal>select-before-update</literal> (optional, defaults to "
+"<literal>false</literal>): Specifies that Hibernate should <emphasis>never</"
+"emphasis> perform an SQL <literal>UPDATE</literal> unless it is certain that "
+"an object is actually modified. In certain cases (actually, only when a "
+"transient object has been associated with a new session using <literal>update"
+"()</literal>), this means that Hibernate will perform an extra SQL "
+"<literal>SELECT</literal> to determine if an <literal>UPDATE</literal> is "
+"actually required."
+msgstr ""
+"<literal>select-before-update</literal> (opcional, por defecto a "
+"<literal>false</literal>): Especifica que Hibernate <emphasis>nunca</"
+"emphasis> debe realizar un SQL <literal>UPDATE</literal> a menos que se "
+"tenga certeza que un objeto haya sido modificado realmente. En ciertos "
+"casos, (realmente, sólo cuando un objeto transitorio ha sido asociado con "
+"una sesión nueva usando <literal>update()</literal>), esto significa que "
+"Hibernate realizará una SQL <literal>SELECT</literal> extra para determinar "
+"si un <literal>UPDATE</literal> es realmente requerido."
-#: index.docbook:282
-msgid "<literal>polymorphism</literal> (optional, defaults to <literal>implicit</literal>): Determines whether implicit or explicit query polymorphism is used."
-msgstr "<literal>check</literal> (opcional): Una expresión SQL usada para generar una restricción <emphasis>check</emphasis> multi-fila para la generación automática de esquema."
+#. Tag: para
+#: basic_mapping.xml:282
+#, no-c-format
+msgid ""
+"<literal>polymorphism</literal> (optional, defaults to <literal>implicit</"
+"literal>): Determines whether implicit or explicit query polymorphism is "
+"used."
+msgstr ""
+"<literal>polymorphism</literal> (opcional, por defecto a <literal>implicit</"
+"literal>): Determina si se usa polimorfismo de consulta implícito o "
+"explícito."
-#: index.docbook:288
-msgid "<literal>where</literal> (optional) specify an arbitrary SQL <literal>WHERE</literal> condition to be used when retrieving objects of this class"
-msgstr "<literal>rowid</literal> (opcional): Hibernate puede usar los llamados ROWIDs en las bases de datos que los soporten. Por ejemplo, en Oracle, Hibernate puede usar la columna extra <literal>rowid</literal> para actualizaciones rápidas si estableces esta opción a <literal>rowid</literal>. Un ROWID es un detalle de implementación y representa la posición física de la tupla almacenada."
+#. Tag: para
+#: basic_mapping.xml:288
+#, no-c-format
+msgid ""
+"<literal>where</literal> (optional) specify an arbitrary SQL <literal>WHERE</"
+"literal> condition to be used when retrieving objects of this class"
+msgstr ""
+"<literal>where</literal> (opcional) especifica una condición SQL "
+"<literal>WHERE</literal> arbitraria paraa ser usada al recuperar objetos de "
+"esta clase."
-#: index.docbook:294
-msgid "<literal>persister</literal> (optional): Specifies a custom <literal>ClassPersister</literal>."
-msgstr "<literal>subselect</literal> (opcional): Mapea una entidad inmutable y de sólo lectura a una subselect de base de datos. Es útil si quieres tener una vista en vez de una tabla base, pero no tienes vistas. Mira debajo para más información."
+#. Tag: para
+#: basic_mapping.xml:294
+#, no-c-format
+msgid ""
+"<literal>persister</literal> (optional): Specifies a custom "
+"<literal>ClassPersister</literal>."
+msgstr ""
+"<literal>persister</literal> (opcional): Especifica un "
+"<literal>ClassPersister</literal> personalizado."
-#: index.docbook:299
-msgid "<literal>batch-size</literal> (optional, defaults to <literal>1</literal>) specify a \"batch size\" for fetching instances of this class by identifier."
-msgstr "<literal>abstract</literal> (opcional): Usado para marcar superclases abstractas en jerarquías <literal><union-subclass></literal>."
+#. Tag: para
+#: basic_mapping.xml:299
+#, no-c-format
+msgid ""
+"<literal>batch-size</literal> (optional, defaults to <literal>1</literal>) "
+"specify a \"batch size\" for fetching instances of this class by identifier."
+msgstr ""
+"<literal>batch-size</literal> (opcional, por defecto a <literal>1</literal>) "
+"especifica un \"tamaño de lote\" para traer instancias de esta clase por "
+"identificador."
-#: index.docbook:305
-msgid "<literal>optimistic-lock</literal> (optional, defaults to <literal>version</literal>): Determines the optimistic locking strategy."
-msgstr "Es perfectamente aceptable que la clase persistente mencionada sea una interface. Entonces declararías clases que implementan esa interface usando el elemento <literal><subclass></literal>. Puedes persistir cualquier clase interna <emphasis>estática</emphasis>. Debes especificar el nombre de la clase usando la forma estándar. Por ejemplo, <literal>eg.Foo$Bar</literal>."
+#. Tag: para
+#: basic_mapping.xml:305
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional, defaults to <literal>version</"
+"literal>): Determines the optimistic locking strategy."
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional, por defecto a "
+"<literal>version</literal>): Determina la estrategia optimista de bloqueo."
-#: index.docbook:311
-msgid "<literal>lazy</literal> (optional): Lazy fetching may be completely disabled by setting <literal>lazy=\"false\"</literal>."
-msgstr "Las clases inmutables, <literal>mutable=\"false\"</literal>, no pueden ser actualizadas o borradas por la aplicación. Esto permite a Hibernate hacer ciertas optimizaciones menores de rendimiento."
+#. Tag: para
+#: basic_mapping.xml:311
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional): Lazy fetching may be completely disabled "
+"by setting <literal>lazy=\"false\"</literal>."
+msgstr ""
+"<literal>lazy</literal> (opcional): La recuperación perezosa puede ser "
+"deshabilitada por completo estableciendo <literal>lazy=\"false\"</literal>."
-#: index.docbook:317
-msgid "<literal>entity-name</literal> (optional, defaults to the class name): Hibernate3 allows a class to be mapped multiple times (to different tables, potentially), and allows entity mappings that are represented by Maps or XML at the Java level. In these cases, you should provide an explicit arbitrary name for the entity. See <xref linkend=\"persistent-classes-dynamicmodels\"/> and <xref linkend=\"xml\"/> for more information."
-msgstr "El atributo opcional <literal>proxy</literal> habilita la inicialización postergada de instancias persistentes de la clase. Hibernate inicialmente retornará proxies CGLIB que implementan la interface mencionada. El objeto persistente real será cargado cuando se invoque un método del proxy. Mira \"Proxies para Inicialización Postergada\" debajo."
+#. Tag: para
+#: basic_mapping.xml:317
+#, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional, defaults to the class name): "
+"Hibernate3 allows a class to be mapped multiple times (to different tables, "
+"potentially), and allows entity mappings that are represented by Maps or XML "
+"at the Java level. In these cases, you should provide an explicit arbitrary "
+"name for the entity. See <xref linkend=\"persistent-classes-dynamicmodels\"/"
+"> and <xref linkend=\"xml\"/> for more information."
+msgstr ""
+"<literal>entity-name</literal> (opcional): Hibernate3 permite que una clase "
+"sea mapeada varias veces (potencialmente a tablas diferentes), y permite que "
+"los mapeos de entidad sean representados por Maps o XML al nivel de Java. En "
+"estos casos, debes proveer un nombre explícito arbitrario para la entidad. "
+"Para más información, mira <xref linkend=\"persistent-classes-dynamicmodels"
+"\"/> y <xref linkend=\"xml\"/>."
-#: index.docbook:327
-msgid "<literal>check</literal> (optional): A SQL expression used to generate a multi-row <emphasis>check</emphasis> constraint for automatic schema generation."
-msgstr "Por polimorfismo <emphasis>implícito</emphasis> se entiende que las instancias de la clase serán devueltas por una consulta que mencione cualquier superclase, o interface implementada, o la clase misma; y que las instancias de cualquier subclase de la clase serán devueltas por una clase que mencione a la clase en sí. Por polimorfismo <emphasis>explícito</emphasis> se entiende que instancias de la clase serán devueltas sólo por consultas que mencionen explícitamente la clase; y que las consultas que mencionen la clase devolverán sólo instancias de subclases mapeadas dentro de esta declaración <literal><class></literal> como una <literal><subclass></literal> o <literal><joined-subclass></literal>. Para la mayoría de los propósitos el defecto, <literal>polymorphism=\"implicit\"</literal>, resulta apropiado. El polimorfismo explícito es útil cuando !
dos clases diferentes están mapeadas a la misma tabla (esto permite tener una clase \"liviana\" que contenga un subconjunto de columnas de la tabla)."
+#. Tag: para
+#: basic_mapping.xml:327
+#, no-c-format
+msgid ""
+"<literal>check</literal> (optional): A SQL expression used to generate a "
+"multi-row <emphasis>check</emphasis> constraint for automatic schema "
+"generation."
+msgstr ""
+"<literal>check</literal> (opcional): Una expresión SQL usada para generar "
+"una restricción <emphasis>check</emphasis> multi-fila para la generación "
+"automática de esquema."
-#: index.docbook:333
-msgid "<literal>rowid</literal> (optional): Hibernate can use so called ROWIDs on databases which support. E.g. on Oracle, Hibernate can use the <literal>rowid</literal> extra column for fast updates if you set this option to <literal>rowid</literal>. A ROWID is an implementation detail and represents the physical location of a stored tuple."
-msgstr "El atributo <literal>persister</literal> te permite personalizar la estrategia de persistencia para la clase. Puedes, por ejemplo, especificar tu propia subclase de <literal>org.hibernate.persister.EntityPersister</literal> o incluso puedes proveer una implementación completamente nueva de la interface <literal>org.hibernate.persister.ClassPersister</literal> que implemente la persistencia por medio, por ejemplo, de llamadas a procedimientos almacenados, serialización a ficheros planos o LDAP. Para un ejemplo simple (de persistencia a una <literal>Hashtable</literal>) mira <literal>org.hibernate.test.CustomPersister</literal>."
+#. Tag: para
+#: basic_mapping.xml:333
+#, no-c-format
+msgid ""
+"<literal>rowid</literal> (optional): Hibernate can use so called ROWIDs on "
+"databases which support. E.g. on Oracle, Hibernate can use the "
+"<literal>rowid</literal> extra column for fast updates if you set this "
+"option to <literal>rowid</literal>. A ROWID is an implementation detail and "
+"represents the physical location of a stored tuple."
+msgstr ""
+"<literal>rowid</literal> (opcional): Hibernate puede usar los llamados "
+"ROWIDs en las bases de datos que los soporten. Por ejemplo, en Oracle, "
+"Hibernate puede usar la columna extra <literal>rowid</literal> para "
+"actualizaciones rápidas si estableces esta opción a <literal>rowid</"
+"literal>. Un ROWID es un detalle de implementación y representa la posición "
+"física de la tupla almacenada."
-#: index.docbook:341
-msgid "<literal>subselect</literal> (optional): Maps an immutable and read-only entity to a database subselect. Useful if you want to have a view instead of a base table, but don't. See below for more information."
-msgstr "Observa que los valores de <literal>dynamic-update</literal> y <literal>dynamic-insert</literal> no son heredados por las subclases y por lo tanto deben especificarse en los elementos <literal><subclass></literal> o <literal><joined-subclass></literal>. Estos ajustes pueden incrementar el rendimiento en algunos casos, pero podrían mermarlo en otros. Ten juicio en su uso."
+#. Tag: para
+#: basic_mapping.xml:341
+#, no-c-format
+msgid ""
+"<literal>subselect</literal> (optional): Maps an immutable and read-only "
+"entity to a database subselect. Useful if you want to have a view instead of "
+"a base table, but don't. See below for more information."
+msgstr ""
+"<literal>subselect</literal> (opcional): Mapea una entidad inmutable y de "
+"sólo lectura a una subselect de base de datos. Es útil si quieres tener una "
+"vista en vez de una tabla base, pero no tienes vistas. Mira debajo para más "
+"información."
-#: index.docbook:348
-msgid "<literal>abstract</literal> (optional): Used to mark abstract superclasses in <literal><union-subclass></literal> hierarchies."
-msgstr "Generalmente el uso de <literal>select-before-update</literal> disminuirá el rendimiento. Es muy útil prevenir que se llame innecesariamente a un disparador de actualización de base de datos al volver a unir un grafo de instancias separadas a una <literal>Session</literal>."
+#. Tag: para
+#: basic_mapping.xml:348
+#, no-c-format
+msgid ""
+"<literal>abstract</literal> (optional): Used to mark abstract superclasses "
+"in <literal><union-subclass></literal> hierarchies."
+msgstr ""
+"<literal>abstract</literal> (opcional): Usado para marcar superclases "
+"abstractas en jerarquías <literal><union-subclass></literal>."
-#: index.docbook:356
-msgid "It is perfectly acceptable for the named persistent class to be an interface. You would then declare implementing classes of that interface using the <literal><subclass></literal> element. You may persist any <emphasis>static</emphasis> inner class. You should specify the class name using the standard form ie. <literal>eg.Foo$Bar</literal>."
-msgstr "Si habilitas <literal>dynamic-update</literal>, tendrás opción de estrategias de bloqueo optimistas:"
+#. Tag: para
+#: basic_mapping.xml:356
+#, no-c-format
+msgid ""
+"It is perfectly acceptable for the named persistent class to be an "
+"interface. You would then declare implementing classes of that interface "
+"using the <literal><subclass></literal> element. You may persist any "
+"<emphasis>static</emphasis> inner class. You should specify the class name "
+"using the standard form ie. <literal>eg.Foo$Bar</literal>."
+msgstr ""
+"Es perfectamente aceptable que la clase persistente mencionada sea una "
+"interface. Entonces declararías clases que implementan esa interface usando "
+"el elemento <literal><subclass></literal>. Puedes persistir cualquier "
+"clase interna <emphasis>estática</emphasis>. Debes especificar el nombre de "
+"la clase usando la forma estándar. Por ejemplo, <literal>eg.Foo$Bar</"
+"literal>."
-#: index.docbook:363
-msgid "Immutable classes, <literal>mutable=\"false\"</literal>, may not be updated or deleted by the application. This allows Hibernate to make some minor performance optimizations."
-msgstr "<literal>version</literal> chequea las columnas de versión/timestamp"
+#. Tag: para
+#: basic_mapping.xml:363
+#, no-c-format
+msgid ""
+"Immutable classes, <literal>mutable=\"false\"</literal>, may not be updated "
+"or deleted by the application. This allows Hibernate to make some minor "
+"performance optimizations."
+msgstr ""
+"Las clases inmutables, <literal>mutable=\"false\"</literal>, no pueden ser "
+"actualizadas o borradas por la aplicación. Esto permite a Hibernate hacer "
+"ciertas optimizaciones menores de rendimiento."
-#: index.docbook:368
-msgid "The optional <literal>proxy</literal> attribute enables lazy initialization of persistent instances of the class. Hibernate will initially return CGLIB proxies which implement the named interface. The actual persistent object will be loaded when a method of the proxy is invoked. See \"Initializing collections and proxies\" below."
-msgstr "<literal>all</literal> chequea todas las columnas"
+#. Tag: para
+#: basic_mapping.xml:368
+#, no-c-format
+msgid ""
+"The optional <literal>proxy</literal> attribute enables lazy initialization "
+"of persistent instances of the class. Hibernate will initially return CGLIB "
+"proxies which implement the named interface. The actual persistent object "
+"will be loaded when a method of the proxy is invoked. See \"Initializing "
+"collections and proxies\" below."
+msgstr ""
+"El atributo opcional <literal>proxy</literal> habilita la inicialización "
+"postergada de instancias persistentes de la clase. Hibernate inicialmente "
+"retornará proxies CGLIB que implementan la interface mencionada. El objeto "
+"persistente real será cargado cuando se invoque un método del proxy. Mira "
+"\"Proxies para Inicialización Postergada\" debajo."
-#: index.docbook:375
-msgid "<emphasis>Implicit</emphasis> polymorphism means that instances of the class will be returned by a query that names any superclass or implemented interface or the class and that instances of any subclass of the class will be returned by a query that names the class itself. <emphasis>Explicit</emphasis> polymorphism means that class instances will be returned only by queries that explicitly name that class and that queries that name the class will return only instances of subclasses mapped inside this <literal><class></literal> declaration as a <literal><subclass></literal> or <literal><joined-subclass></literal>. For most purposes the default, <literal>polymorphism=\"implicit\"</literal>, is appropriate. Explicit polymorphism is useful when two different classes are mapped to the same table (this allows a \"lightweight\" class that contains a subset of the table columns)."
-msgstr "<literal>dirty</literal> chequea las columnas modificadas, permitiendo algunas actualizaciones concurrentes"
+#. Tag: para
+#: basic_mapping.xml:375
+#, no-c-format
+msgid ""
+"<emphasis>Implicit</emphasis> polymorphism means that instances of the class "
+"will be returned by a query that names any superclass or implemented "
+"interface or the class and that instances of any subclass of the class will "
+"be returned by a query that names the class itself. <emphasis>Explicit</"
+"emphasis> polymorphism means that class instances will be returned only by "
+"queries that explicitly name that class and that queries that name the class "
+"will return only instances of subclasses mapped inside this <literal><"
+"class></literal> declaration as a <literal><subclass></literal> or "
+"<literal><joined-subclass></literal>. For most purposes the default, "
+"<literal>polymorphism=\"implicit\"</literal>, is appropriate. Explicit "
+"polymorphism is useful when two different classes are mapped to the same "
+"table (this allows a \"lightweight\" class that contains a subset of the "
+"table columns)."
+msgstr ""
+"Por polimorfismo <emphasis>implícito</emphasis> se entiende que las "
+"instancias de la clase serán devueltas por una consulta que mencione "
+"cualquier superclase, o interface implementada, o la clase misma; y que las "
+"instancias de cualquier subclase de la clase serán devueltas por una clase "
+"que mencione a la clase en sí. Por polimorfismo <emphasis>explícito</"
+"emphasis> se entiende que instancias de la clase serán devueltas sólo por "
+"consultas que mencionen explícitamente la clase; y que las consultas que "
+"mencionen la clase devolverán sólo instancias de subclases mapeadas dentro "
+"de esta declaración <literal><class></literal> como una <literal><"
+"subclass></literal> o <literal><joined-subclass></literal>. Para la "
+"mayoría de los propósitos el defecto, <literal>polymorphism=\"implicit\"</"
+"literal>, resulta apropiado. El polimorfismo explícito es útil cuando dos "
+"clases diferentes están mapeadas a la misma tabla (esto permite tener una "
+"clase \"liviana\" que contenga un subconjunto de columnas de la tabla)."
-#: index.docbook:387
-msgid "The <literal>persister</literal> attribute lets you customize the persistence strategy used for the class. You may, for example, specify your own subclass of <literal>org.hibernate.persister.EntityPersister</literal> or you might even provide a completely new implementation of the interface <literal>org.hibernate.persister.ClassPersister</literal> that implements persistence via, for example, stored procedure calls, serialization to flat files or LDAP. See <literal>org.hibernate.test.CustomPersister</literal> for a simple example (of \"persistence\" to a <literal>Hashtable</literal>)."
-msgstr "<literal>none</literal> no usa bloqueo optimista"
+#. Tag: para
+#: basic_mapping.xml:387
+#, no-c-format
+msgid ""
+"The <literal>persister</literal> attribute lets you customize the "
+"persistence strategy used for the class. You may, for example, specify your "
+"own subclass of <literal>org.hibernate.persister.EntityPersister</literal> "
+"or you might even provide a completely new implementation of the interface "
+"<literal>org.hibernate.persister.ClassPersister</literal> that implements "
+"persistence via, for example, stored procedure calls, serialization to flat "
+"files or LDAP. See <literal>org.hibernate.test.CustomPersister</literal> for "
+"a simple example (of \"persistence\" to a <literal>Hashtable</literal>)."
+msgstr ""
+"El atributo <literal>persister</literal> te permite personalizar la "
+"estrategia de persistencia para la clase. Puedes, por ejemplo, especificar "
+"tu propia subclase de <literal>org.hibernate.persister.EntityPersister</"
+"literal> o incluso puedes proveer una implementación completamente nueva de "
+"la interface <literal>org.hibernate.persister.ClassPersister</literal> que "
+"implemente la persistencia por medio, por ejemplo, de llamadas a "
+"procedimientos almacenados, serialización a ficheros planos o LDAP. Para un "
+"ejemplo simple (de persistencia a una <literal>Hashtable</literal>) mira "
+"<literal>org.hibernate.test.CustomPersister</literal>."
-#: index.docbook:398
-msgid "Note that the <literal>dynamic-update</literal> and <literal>dynamic-insert</literal> settings are not inherited by subclasses and so may also be specified on the <literal><subclass></literal> or <literal><joined-subclass></literal> elements. These settings may increase performance in some cases, but might actually decrease performance in others. Use judiciously."
-msgstr "Recomendamos <emphasis>muy</emphasis> fuertemente que uses columnas de versión/timestamp para bloqueo optimista con Hibernate. Esta es la estrategia óptima con respecto al rendimiento y es la única estrategia que maneja correctamente las modificaciones hechas a las instancias separadas. (por ejemplo, cuando se usa <literal>Session.merge()</literal>)."
+#. Tag: para
+#: basic_mapping.xml:398
+#, no-c-format
+msgid ""
+"Note that the <literal>dynamic-update</literal> and <literal>dynamic-insert</"
+"literal> settings are not inherited by subclasses and so may also be "
+"specified on the <literal><subclass></literal> or <literal><joined-"
+"subclass></literal> elements. These settings may increase performance in "
+"some cases, but might actually decrease performance in others. Use "
+"judiciously."
+msgstr ""
+"Observa que los valores de <literal>dynamic-update</literal> y "
+"<literal>dynamic-insert</literal> no son heredados por las subclases y por "
+"lo tanto deben especificarse en los elementos <literal><subclass></"
+"literal> o <literal><joined-subclass></literal>. Estos ajustes pueden "
+"incrementar el rendimiento en algunos casos, pero podrían mermarlo en otros. "
+"Ten juicio en su uso."
-#: index.docbook:406
-msgid "Use of <literal>select-before-update</literal> will usually decrease performance. It is very useful to prevent a database update trigger being called unnecessarily if you reattach a graph of detached instances to a <literal>Session</literal>."
-msgstr "Para un mapeo de Hibernate, no hay diferencia entre una vista y una tabla base. Como se supone esto es transparente a nivel de base de datos (observa que algunos DBMS no soportan correctamente las vistas, especialmente con las actualizaciones). A veces quieres usar una vista, pero no puedes crear una en la base de datos (por ejemplo, con un esquema heredado). En este caso, puedes mapear una entidad inmutable de sólo lectura a una expresión de subconsulta SQL dada."
+#. Tag: para
+#: basic_mapping.xml:406
+#, no-c-format
+msgid ""
+"Use of <literal>select-before-update</literal> will usually decrease "
+"performance. It is very useful to prevent a database update trigger being "
+"called unnecessarily if you reattach a graph of detached instances to a "
+"<literal>Session</literal>."
+msgstr ""
+"Generalmente el uso de <literal>select-before-update</literal> disminuirá el "
+"rendimiento. Es muy útil prevenir que se llame innecesariamente a un "
+"disparador de actualización de base de datos al volver a unir un grafo de "
+"instancias separadas a una <literal>Session</literal>."
-#: index.docbook:412
-msgid "If you enable <literal>dynamic-update</literal>, you will have a choice of optimistic locking strategies:"
+#. Tag: para
+#: basic_mapping.xml:412
+#, no-c-format
+msgid ""
+"If you enable <literal>dynamic-update</literal>, you will have a choice of "
+"optimistic locking strategies:"
msgstr ""
- "<![CDATA[<class name=\"Summary\">\n"
- " <subselect>\n"
- " select item.name, max(bid.amount), count(*)\n"
- " from item\n"
- " join bid on bid.item_id = item.id\n"
- " group by item.name\n"
- " </subselect>\n"
- " <synchronize table=\"item\"/>\n"
- " <synchronize table=\"bid\"/>\n"
- " <id name=\"name\"/>\n"
- " ...\n"
- "</class>]]>"
+"Si habilitas <literal>dynamic-update</literal>, tendrás opción de "
+"estrategias de bloqueo optimistas:"
-#: index.docbook:418
+#. Tag: para
+#: basic_mapping.xml:418
+#, no-c-format
msgid "<literal>version</literal> check the version/timestamp columns"
-msgstr "Declara las tablas con las que sincronizar esta entidad, asegurando que el auto-flush ocurre correctamente, y que las consultas contra la entidad derivada no devuelven datos desactualizados. El <literal><subselect></literal> está disponible tanto como un atributo o como un elemento anidado de mapeo."
+msgstr "<literal>version</literal> chequea las columnas de versión/timestamp"
-#: index.docbook:423
+#. Tag: para
+#: basic_mapping.xml:423
+#, no-c-format
msgid "<literal>all</literal> check all columns"
-msgstr "<title>id</title>"
+msgstr "<literal>all</literal> chequea todas las columnas"
-#: index.docbook:428
-msgid "<literal>dirty</literal> check the changed columns, allowing some concurrent updates"
-msgstr "Las clases mapeadas <emphasis>deben</emphasis> declarar la columna de clave primaria de la tabla de la base de datos. En la mayoría de los casos tendrá también una propiedad estilo Javabeans que tenga el identificador único de una instancia. El elemento <literal><id></literal> define el mapeo de esa propiedad a la columna de clave primaria."
+#. Tag: para
+#: basic_mapping.xml:428
+#, no-c-format
+msgid ""
+"<literal>dirty</literal> check the changed columns, allowing some concurrent "
+"updates"
+msgstr ""
+"<literal>dirty</literal> chequea las columnas modificadas, permitiendo "
+"algunas actualizaciones concurrentes"
-#: index.docbook:433
+#. Tag: para
+#: basic_mapping.xml:433
+#, no-c-format
msgid "<literal>none</literal> do not use optimistic locking"
+msgstr "<literal>none</literal> no usa bloqueo optimista"
+
+#. Tag: para
+#: basic_mapping.xml:438
+#, no-c-format
+msgid ""
+"We <emphasis>very</emphasis> strongly recommend that you use version/"
+"timestamp columns for optimistic locking with Hibernate. This is the optimal "
+"strategy with respect to performance and is the only strategy that correctly "
+"handles modifications made to detached instances (ie. when <literal>Session."
+"merge()</literal> is used)."
msgstr ""
- "<![CDATA[<id\n"
- " name=\"propertyName\"\n"
- " type=\"typename\"\n"
- " column=\"column_name\"\n"
- " unsaved-value=\"null|any|none|undefined|id_value\"\n"
- " access=\"field|property|ClassName\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\">\n"
- "\n"
- " <generator class=\"generatorClass\"/>\n"
- "</id>]]>"
+"Recomendamos <emphasis>muy</emphasis> fuertemente que uses columnas de "
+"versión/timestamp para bloqueo optimista con Hibernate. Esta es la "
+"estrategia óptima con respecto al rendimiento y es la única estrategia que "
+"maneja correctamente las modificaciones hechas a las instancias separadas. "
+"(por ejemplo, cuando se usa <literal>Session.merge()</literal>)."
-#: index.docbook:438
-msgid "We <emphasis>very</emphasis> strongly recommend that you use version/timestamp columns for optimistic locking with Hibernate. This is the optimal strategy with respect to performance and is the only strategy that correctly handles modifications made to detached instances (ie. when <literal>Session.merge()</literal> is used)."
-msgstr "<literal>name</literal> (opcional): El nombre de la propiedad del indentificador."
+#. Tag: para
+#: basic_mapping.xml:445
+#, no-c-format
+msgid ""
+"There is no difference between a view and a base table for a Hibernate "
+"mapping, as expected this is transparent at the database level (note that "
+"some DBMS don't support views properly, especially with updates). Sometimes "
+"you want to use a view, but can't create one in the database (ie. with a "
+"legacy schema). In this case, you can map an immutable and read-only entity "
+"to a given SQL subselect expression:"
+msgstr ""
+"Para un mapeo de Hibernate, no hay diferencia entre una vista y una tabla "
+"base. Como se supone esto es transparente a nivel de base de datos (observa "
+"que algunos DBMS no soportan correctamente las vistas, especialmente con las "
+"actualizaciones). A veces quieres usar una vista, pero no puedes crear una "
+"en la base de datos (por ejemplo, con un esquema heredado). En este caso, "
+"puedes mapear una entidad inmutable de sólo lectura a una expresión de "
+"subconsulta SQL dada."
-#: index.docbook:445
-msgid "There is no difference between a view and a base table for a Hibernate mapping, as expected this is transparent at the database level (note that some DBMS don't support views properly, especially with updates). Sometimes you want to use a view, but can't create one in the database (ie. with a legacy schema). In this case, you can map an immutable and read-only entity to a given SQL subselect expression:"
-msgstr "<literal>type</literal> (opcional): Un nombre que indica el tipo Hibernate."
+#. Tag: programlisting
+#: basic_mapping.xml:453
+#, no-c-format
+msgid ""
+"<![CDATA[<class name=\"Summary\">\n"
+" <subselect>\n"
+" select item.name, max(bid.amount), count(*)\n"
+" from item\n"
+" join bid on bid.item_id = item.id\n"
+" group by item.name\n"
+" </subselect>\n"
+" <synchronize table=\"item\"/>\n"
+" <synchronize table=\"bid\"/>\n"
+" <id name=\"name\"/>\n"
+" ...\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:453
+#. Tag: para
+#: basic_mapping.xml:455
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Summary\">\n"
- " <subselect>\n"
- " select item.name, max(bid.amount), count(*)\n"
- " from item\n"
- " join bid on bid.item_id = item.id\n"
- " group by item.name\n"
- " </subselect>\n"
- " <synchronize table=\"item\"/>\n"
- " <synchronize table=\"bid\"/>\n"
- " <id name=\"name\"/>\n"
- " ...\n"
- "</class>]]>"
-msgstr "<literal>column</literal> (opcional - por defecto al nombre de la propiedad): El nombre de la columna de clave primaria."
+"Declare the tables to synchronize this entity with, ensuring that auto-flush "
+"happens correctly, and that queries against the derived entity do not return "
+"stale data. The <literal><subselect></literal> is available as both as "
+"an attribute and a nested mapping element."
+msgstr ""
+"Declara las tablas con las que sincronizar esta entidad, asegurando que el "
+"auto-flush ocurre correctamente, y que las consultas contra la entidad "
+"derivada no devuelven datos desactualizados. El <literal><subselect></"
+"literal> está disponible tanto como un atributo o como un elemento anidado "
+"de mapeo."
-#: index.docbook:455
-msgid "Declare the tables to synchronize this entity with, ensuring that auto-flush happens correctly, and that queries against the derived entity do not return stale data. The <literal><subselect></literal> is available as both as an attribute and a nested mapping element."
-msgstr "<literal>unsaved-value</literal> (opcional - por defecto al valor \"sensible\"): Una valor de la propiedad identificadora que indica que una instancia está recién instanciada (sin salvar), distinguiéndola de instancias separadas que fueran salvadas o cargadas en una sesión previa."
-
-#: index.docbook:465
+#. Tag: title
+#: basic_mapping.xml:465
+#, no-c-format
msgid "<title>id</title>"
-msgstr "<literal>access</literal> (opcional - por defecto a <literal>property</literal>): La estrategia que Hibernate debe usar para acceder al valor de la propiedad."
+msgstr ""
-#: index.docbook:467
-msgid "Mapped classes <emphasis>must</emphasis> declare the primary key column of the database table. Most classes will also have a JavaBeans-style property holding the unique identifier of an instance. The <literal><id></literal> element defines the mapping from that property to the primary key column."
-msgstr "Si se omite el atributo <literal>name</literal>, se asume que la clase no tiene propiedad identificadora."
+#. Tag: para
+#: basic_mapping.xml:467
+#, no-c-format
+msgid ""
+"Mapped classes <emphasis>must</emphasis> declare the primary key column of "
+"the database table. Most classes will also have a JavaBeans-style property "
+"holding the unique identifier of an instance. The <literal><id></"
+"literal> element defines the mapping from that property to the primary key "
+"column."
+msgstr ""
+"Las clases mapeadas <emphasis>deben</emphasis> declarar la columna de clave "
+"primaria de la tabla de la base de datos. En la mayoría de los casos tendrá "
+"también una propiedad estilo Javabeans que tenga el identificador único de "
+"una instancia. El elemento <literal><id></literal> define el mapeo de "
+"esa propiedad a la columna de clave primaria."
-#: index.docbook:482
+#. Tag: programlisting
+#: basic_mapping.xml:482
+#, no-c-format
msgid ""
- "<![CDATA[<id\n"
- " name=\"propertyName\"\n"
- " type=\"typename\"\n"
- " column=\"column_name\"\n"
- " unsaved-value=\"null|any|none|undefined|id_value\"\n"
- " access=\"field|property|ClassName\">\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- "\n"
- " <generator class=\"generatorClass\"/>\n"
- "</id>]]>"
-msgstr "El atributo <literal>unsaved-value</literal> es importante! Si la propiedad identificadora de tu clase no tiene por defecto el valor por defecto normal de Java (null o cero), entonces debes especificar el valor por defecto real."
+"<![CDATA[<id\n"
+" name=\"propertyName\"\n"
+" type=\"typename\"\n"
+" column=\"column_name\"\n"
+" unsaved-value=\"null|any|none|undefined|id_value\"\n"
+" access=\"field|property|ClassName\">\n"
+" node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
+"\n"
+" <generator class=\"generatorClass\"/>\n"
+"</id>]]>"
+msgstr ""
-#: index.docbook:485
-msgid "<literal>name</literal> (optional): The name of the identifier property."
-msgstr "Hay una declaración <literal><composite-id></literal> alternativa para permitir acceso a datos heredados con claves compuestas. Desalentamos fuertemente su uso para cualquier otra cosa."
+#. Tag: para
+#: basic_mapping.xml:485
+#, no-c-format
+msgid ""
+"<literal>name</literal> (optional): The name of the identifier property."
+msgstr ""
+"<literal>name</literal> (opcional): El nombre de la propiedad del "
+"indentificador."
-#: index.docbook:490
-msgid "<literal>type</literal> (optional): A name that indicates the Hibernate type."
-msgstr "Generator"
+#. Tag: para
+#: basic_mapping.xml:490
+#, no-c-format
+msgid ""
+"<literal>type</literal> (optional): A name that indicates the Hibernate type."
+msgstr ""
+"<literal>type</literal> (opcional): Un nombre que indica el tipo Hibernate."
-#: index.docbook:495
-msgid "<literal>column</literal> (optional - defaults to the property name): The name of the primary key column."
-msgstr "El elemento hijo opcional <literal><generator></literal> nombra una clase Java usada en generar identificadores únicos para instancias de la clase persistente. De requerirse algún parámetro para configurar o inicializar la instancia del generador, se pasa usando el elemento <literal><param></literal>."
+#. Tag: para
+#: basic_mapping.xml:495
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): The "
+"name of the primary key column."
+msgstr ""
+"<literal>column</literal> (opcional - por defecto al nombre de la "
+"propiedad): El nombre de la columna de clave primaria."
-#: index.docbook:501
-msgid "<literal>unsaved-value</literal> (optional - defaults to a \"sensible\" value): An identifier property value that indicates that an instance is newly instantiated (unsaved), distinguishing it from detached instances that were saved or loaded in a previous session."
+#. Tag: para
+#: basic_mapping.xml:501
+#, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to a \"sensible\" "
+"value): An identifier property value that indicates that an instance is "
+"newly instantiated (unsaved), distinguishing it from detached instances that "
+"were saved or loaded in a previous session."
msgstr ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
- " <generator class=\"org.hibernate.id.TableHiLoGenerator\">\n"
- " <param name=\"table\">uid_table</param>\n"
- " <param name=\"column\">next_hi_value_column</param>\n"
- " </generator>\n"
- "</id>]]>"
+"<literal>unsaved-value</literal> (opcional - por defecto al valor \"sensible"
+"\"): Una valor de la propiedad identificadora que indica que una instancia "
+"está recién instanciada (sin salvar), distinguiéndola de instancias "
+"separadas que fueran salvadas o cargadas en una sesión previa."
-#: index.docbook:509, index.docbook:1017, index.docbook:1156, index.docbook:1238, index.docbook:1345, index.docbook:1534, index.docbook:1708, index.docbook:1878, index.docbook:2457
-msgid "<literal>access</literal> (optional - defaults to <literal>property</literal>): The strategy Hibernate should use for accessing the property value."
-msgstr "Todos los generadores implementan la interface <literal>org.hibernate.id.IdentifierGenerator</literal>. Esta es una interface muy simple; algunas aplicaciones pueden escoger proveer sus propias implementaciones especializadas. Sin embargo, Hibernate provee un rango de implementaciones prefabricadas. Hay nombres alias de atajo para los generadores prefabricados:"
+#. Tag: para
+#: basic_mapping.xml:509 basic_mapping.xml:1017 basic_mapping.xml:1156
+#: basic_mapping.xml:1238 basic_mapping.xml:1345 basic_mapping.xml:1534
+#: basic_mapping.xml:1708 basic_mapping.xml:1878 basic_mapping.xml:2457
+#, fuzzy, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): The strategy Hibernate should use for accessing the property "
+"value."
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (opcional - por defecto a <literal>property</"
+"literal>): La estrategia que Hibernate debe usar para acceder al valor de la "
+"propiedad.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): The strategy Hibernate should use for accessing the property "
+"value.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (opcional - por defecto a <literal>property</"
+"literal>): La estrategia que Hibernate debe usar para acceder al valor de la "
+"propiedad.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (opcional - por defecto a <literal>property</"
+"literal>): La estrategia que Hibernate debe usar para acceder al valor de la "
+"propiedad.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (opcional - por defecto a <literal>property</"
+"literal>): La estrategia que Hibernate debe usar para acceder al valor de la "
+"propiedad.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (opcional - por defecto a <literal>property</"
+"literal>): La estrategia que Hibernate debe usar para acceder al valor de la "
+"propiedad.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (opcional - por defecto a <literal>property</"
+"literal>): La estrategia que Hibernate debe usar para acceder al valor de la "
+"propiedad.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (opcional - por defecto a <literal>property</"
+"literal>): La estrategia que Hibernate debe usar para acceder al valor de la "
+"propiedad.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (opcional - por defecto a <literal>property</"
+"literal>): La estrategia que Hibernate debe usar para acceder al valor de la "
+"propiedad."
-#: index.docbook:517
-msgid "If the <literal>name</literal> attribute is missing, it is assumed that the class has no identifier property."
-msgstr "increment"
+#. Tag: para
+#: basic_mapping.xml:517
+#, no-c-format
+msgid ""
+"If the <literal>name</literal> attribute is missing, it is assumed that the "
+"class has no identifier property."
+msgstr ""
+"Si se omite el atributo <literal>name</literal>, se asume que la clase no "
+"tiene propiedad identificadora."
-#: index.docbook:522
-msgid "The <literal>unsaved-value</literal> attribute is almost never needed in Hibernate3."
-msgstr "genera indentificadores de tipo <literal>long</literal>, <literal>short</literal> o <literal>int</literal> que sólo son únicos cuando ningún otro proceso está insertando datos en la misma tabla. <emphasis>No usar en un cluster.</emphasis>"
+#. Tag: para
+#: basic_mapping.xml:522
+#, no-c-format
+msgid ""
+"The <literal>unsaved-value</literal> attribute is almost never needed in "
+"Hibernate3."
+msgstr ""
+"El atributo <literal>unsaved-value</literal> es importante! Si la propiedad "
+"identificadora de tu clase no tiene por defecto el valor por defecto normal "
+"de Java (null o cero), entonces debes especificar el valor por defecto real."
-#: index.docbook:526
-msgid "There is an alternative <literal><composite-id></literal> declaration to allow access to legacy data with composite keys. We strongly discourage its use for anything else."
-msgstr "identity"
+#. Tag: para
+#: basic_mapping.xml:526
+#, no-c-format
+msgid ""
+"There is an alternative <literal><composite-id></literal> declaration "
+"to allow access to legacy data with composite keys. We strongly discourage "
+"its use for anything else."
+msgstr ""
+"Hay una declaración <literal><composite-id></literal> alternativa para "
+"permitir acceso a datos heredados con claves compuestas. Desalentamos "
+"fuertemente su uso para cualquier otra cosa."
-#: index.docbook:532
+#. Tag: title
+#: basic_mapping.xml:532
+#, no-c-format
msgid "Generator"
-msgstr "soporta columnas de identidad en DB2, MySQL, MS SQL Server, Sybase y HypersonicSQL. El identificador devuelto es de tipo <literal>long</literal>, <literal>short</literal> o <literal>int</literal>."
+msgstr "Generator"
-#: index.docbook:534
-msgid "The optional <literal><generator></literal> child element names a Java class used to generate unique identifiers for instances of the persistent class. If any parameters are required to configure or initialize the generator instance, they are passed using the <literal><param></literal> element."
-msgstr "sequence"
+#. Tag: para
+#: basic_mapping.xml:534
+#, no-c-format
+msgid ""
+"The optional <literal><generator></literal> child element names a Java "
+"class used to generate unique identifiers for instances of the persistent "
+"class. If any parameters are required to configure or initialize the "
+"generator instance, they are passed using the <literal><param></"
+"literal> element."
+msgstr ""
+"El elemento hijo opcional <literal><generator></literal> nombra una "
+"clase Java usada en generar identificadores únicos para instancias de la "
+"clase persistente. De requerirse algún parámetro para configurar o "
+"inicializar la instancia del generador, se pasa usando el elemento "
+"<literal><param></literal>."
-#: index.docbook:541
+#. Tag: programlisting
+#: basic_mapping.xml:541
+#, no-c-format
msgid ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
- " <generator class=\"org.hibernate.id.TableHiLoGenerator\">\n"
- " <param name=\"table\">uid_table</param>\n"
- " <param name=\"column\">next_hi_value_column</param>\n"
- " </generator>\n"
- "</id>]]>"
-msgstr "usa una secuencia en DB2, PostgreSQL, Oracle, SAP DB, McKoi o un generador en Interbase. El identificador devuelto es de tipo <literal>long</literal>, <literal>short</literal> o <literal>int</literal>."
+"<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+" <generator class=\"org.hibernate.id.TableHiLoGenerator\">\n"
+" <param name=\"table\">uid_table</param>\n"
+" <param name=\"column\">next_hi_value_column</param>\n"
+" </generator>\n"
+"</id>]]>"
+msgstr ""
-#: index.docbook:543
-msgid "All generators implement the interface <literal>org.hibernate.id.IdentifierGenerator</literal>. This is a very simple interface; some applications may choose to provide their own specialized implementations. However, Hibernate provides a range of built-in implementations. There are shortcut names for the built-in generators:"
-msgstr "hilo"
+#. Tag: para
+#: basic_mapping.xml:543
+#, fuzzy, no-c-format
+msgid ""
+"All generators implement the interface <literal>org.hibernate.id."
+"IdentifierGenerator</literal>. This is a very simple interface; some "
+"applications may choose to provide their own specialized implementations. "
+"However, Hibernate provides a range of built-in implementations. There are "
+"shortcut names for the built-in generators:"
+msgstr ""
+"Todos los generadores implementan la interface <literal>org.hibernate.id."
+"IdentifierGenerator</literal>. Esta es una interface muy simple; algunas "
+"aplicaciones pueden escoger proveer sus propias implementaciones "
+"especializadas. Sin embargo, Hibernate provee un rango de implementaciones "
+"prefabricadas. Hay nombres alias de atajo para los generadores "
+"prefabricados: <placeholder-1/>"
-#: index.docbook:551
+#. Tag: literal
+#: basic_mapping.xml:551
+#, no-c-format
msgid "increment"
-msgstr "usa un algoritmo alto/bajo para generar eficientemente identificadores de tipo <literal>long</literal>, <literal>short</literal> o <literal>int</literal>, dada una tabla y columna como fuente de valores altos (por defecto <literal>hibernate_unique_key</literal> y <literal>next_hi</literal> respectivamente). El algoritmo alto/bajo genera identificadores que son únicos sólo para una base de datos particular."
+msgstr "increment"
-#: index.docbook:553
-msgid "generates identifiers of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal> that are unique only when no other process is inserting data into the same table. <emphasis>Do not use in a cluster.</emphasis>"
-msgstr "seqhilo"
+#. Tag: para
+#: basic_mapping.xml:553
+#, no-c-format
+msgid ""
+"generates identifiers of type <literal>long</literal>, <literal>short</"
+"literal> or <literal>int</literal> that are unique only when no other "
+"process is inserting data into the same table. <emphasis>Do not use in a "
+"cluster.</emphasis>"
+msgstr ""
+"genera indentificadores de tipo <literal>long</literal>, <literal>short</"
+"literal> o <literal>int</literal> que sólo son únicos cuando ningún otro "
+"proceso está insertando datos en la misma tabla. <emphasis>No usar en un "
+"cluster.</emphasis>"
-#: index.docbook:562
+#. Tag: literal
+#: basic_mapping.xml:562
+#, no-c-format
msgid "identity"
-msgstr "usa un algoritmo alto/bajo para generar eficientemente identificadores de tipo <literal>long</literal>, <literal>short</literal> o <literal>int</literal>, dada una secuencia de base de datos."
+msgstr "identity"
-#: index.docbook:564
-msgid "supports identity columns in DB2, MySQL, MS SQL Server, Sybase and HypersonicSQL. The returned identifier is of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal>."
-msgstr "uuid"
+#. Tag: para
+#: basic_mapping.xml:564
+#, no-c-format
+msgid ""
+"supports identity columns in DB2, MySQL, MS SQL Server, Sybase and "
+"HypersonicSQL. The returned identifier is of type <literal>long</literal>, "
+"<literal>short</literal> or <literal>int</literal>."
+msgstr ""
+"soporta columnas de identidad en DB2, MySQL, MS SQL Server, Sybase y "
+"HypersonicSQL. El identificador devuelto es de tipo <literal>long</literal>, "
+"<literal>short</literal> o <literal>int</literal>."
-#: index.docbook:572
+#. Tag: literal
+#: basic_mapping.xml:572
+#, no-c-format
msgid "sequence"
-msgstr "usa un algoritmo UUID de 128 bits para generar identificadore de tipo cadena, únicos en una ref (se usa la direccón IP). El UUID se codifica como una cadena hexadecimal de 32 dígitos de largo."
+msgstr "sequence"
-#: index.docbook:574
-msgid "uses a sequence in DB2, PostgreSQL, Oracle, SAP DB, McKoi or a generator in Interbase. The returned identifier is of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal>"
-msgstr "guid"
+#. Tag: para
+#: basic_mapping.xml:574
+#, no-c-format
+msgid ""
+"uses a sequence in DB2, PostgreSQL, Oracle, SAP DB, McKoi or a generator in "
+"Interbase. The returned identifier is of type <literal>long</literal>, "
+"<literal>short</literal> or <literal>int</literal>"
+msgstr ""
+"usa una secuencia en DB2, PostgreSQL, Oracle, SAP DB, McKoi o un generador "
+"en Interbase. El identificador devuelto es de tipo <literal>long</literal>, "
+"<literal>short</literal> o <literal>int</literal>."
-#: index.docbook:582
+#. Tag: literal
+#: basic_mapping.xml:582
+#, no-c-format
msgid "hilo"
-msgstr "usa una cadena GUID generada por base de datos en MS SQL Server y MySQL."
+msgstr "hilo"
-#: index.docbook:584
-msgid "uses a hi/lo algorithm to efficiently generate identifiers of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal>, given a table and column (by default <literal>hibernate_unique_key</literal> and <literal>next_hi</literal> respectively) as a source of hi values. The hi/lo algorithm generates identifiers that are unique only for a particular database."
-msgstr "native"
+#. Tag: para
+#: basic_mapping.xml:584
+#, no-c-format
+msgid ""
+"uses a hi/lo algorithm to efficiently generate identifiers of type "
+"<literal>long</literal>, <literal>short</literal> or <literal>int</literal>, "
+"given a table and column (by default <literal>hibernate_unique_key</literal> "
+"and <literal>next_hi</literal> respectively) as a source of hi values. The "
+"hi/lo algorithm generates identifiers that are unique only for a particular "
+"database."
+msgstr ""
+"usa un algoritmo alto/bajo para generar eficientemente identificadores de "
+"tipo <literal>long</literal>, <literal>short</literal> o <literal>int</"
+"literal>, dada una tabla y columna como fuente de valores altos (por defecto "
+"<literal>hibernate_unique_key</literal> y <literal>next_hi</literal> "
+"respectivamente). El algoritmo alto/bajo genera identificadores que son "
+"únicos sólo para una base de datos particular."
-#: index.docbook:594
+#. Tag: literal
+#: basic_mapping.xml:594
+#, no-c-format
msgid "seqhilo"
-msgstr "selecciona <literal>identity</literal>, <literal>sequence</literal> o <literal>hilo</literal> dependiendo de las capacidades de la base de datos subyacente."
+msgstr "seqhilo"
-#: index.docbook:596
-msgid "uses a hi/lo algorithm to efficiently generate identifiers of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal>, given a named database sequence."
-msgstr "assigned"
+#. Tag: para
+#: basic_mapping.xml:596
+#, no-c-format
+msgid ""
+"uses a hi/lo algorithm to efficiently generate identifiers of type "
+"<literal>long</literal>, <literal>short</literal> or <literal>int</literal>, "
+"given a named database sequence."
+msgstr ""
+"usa un algoritmo alto/bajo para generar eficientemente identificadores de "
+"tipo <literal>long</literal>, <literal>short</literal> o <literal>int</"
+"literal>, dada una secuencia de base de datos."
-#: index.docbook:604
+#. Tag: literal
+#: basic_mapping.xml:604
+#, no-c-format
msgid "uuid"
-msgstr "deja a la aplicación asignar un identificador al objeto antes de que se llame a <literal>save()</literal>. Esta es la estrategia por defecto si no se especifica un elemento <literal><generator></literal>."
+msgstr "uuid"
-#: index.docbook:606
-msgid "uses a 128-bit UUID algorithm to generate identifiers of type string, unique within a network (the IP address is used). The UUID is encoded as a string of hexadecimal digits of length 32."
-msgstr "select"
+#. Tag: para
+#: basic_mapping.xml:606
+#, no-c-format
+msgid ""
+"uses a 128-bit UUID algorithm to generate identifiers of type string, unique "
+"within a network (the IP address is used). The UUID is encoded as a string "
+"of hexadecimal digits of length 32."
+msgstr ""
+"usa un algoritmo UUID de 128 bits para generar identificadore de tipo "
+"cadena, únicos en una ref (se usa la direccón IP). El UUID se codifica como "
+"una cadena hexadecimal de 32 dígitos de largo."
-#: index.docbook:614
+#. Tag: literal
+#: basic_mapping.xml:614
+#, no-c-format
msgid "guid"
-msgstr "recupera una clave primaria asignada por un disparador de base de datos seleccionando la fila por alguna clave única y recuperando el valor de la clave primaria."
+msgstr "guid"
-#: index.docbook:616
+#. Tag: para
+#: basic_mapping.xml:616
+#, no-c-format
msgid "uses a database-generated GUID string on MS SQL Server and MySQL."
-msgstr "foreign"
+msgstr ""
+"usa una cadena GUID generada por base de datos en MS SQL Server y MySQL."
-#: index.docbook:622
+#. Tag: literal
+#: basic_mapping.xml:622
+#, no-c-format
msgid "native"
-msgstr "usa el identificador de otro objeto asociado. Generalmente usado en conjuncón a una asociacón de clave primaria <literal><uno-a-uno></literal>"
+msgstr "native"
-#: index.docbook:624
-msgid "picks <literal>identity</literal>, <literal>sequence</literal> or <literal>hilo</literal> depending upon the capabilities of the underlying database."
-msgstr "Algoritmo alto/bajo"
+#. Tag: para
+#: basic_mapping.xml:624
+#, no-c-format
+msgid ""
+"picks <literal>identity</literal>, <literal>sequence</literal> or "
+"<literal>hilo</literal> depending upon the capabilities of the underlying "
+"database."
+msgstr ""
+"selecciona <literal>identity</literal>, <literal>sequence</literal> o "
+"<literal>hilo</literal> dependiendo de las capacidades de la base de datos "
+"subyacente."
-#: index.docbook:632
+#. Tag: literal
+#: basic_mapping.xml:632
+#, no-c-format
msgid "assigned"
-msgstr "Los generadores <literal>hilo</literal> y <literal>seqhilo</literal> proveen dos implementaciones alternativas del algoritmo alto/bajo, un enfoque favorito en generación de identificadores. La primera implementación requiere de una tabla \"especial\" de base de datos para tener el siguiente valor \"alto\" disponible. La segunda usa una secuencia del estilo de Oracle (donde se soporte)."
+msgstr "assigned"
-#: index.docbook:634
-msgid "lets the application to assign an identifier to the object before <literal>save()</literal> is called. This is the default strategy if no <literal><generator></literal> element is specified."
+#. Tag: para
+#: basic_mapping.xml:634
+#, no-c-format
+msgid ""
+"lets the application to assign an identifier to the object before "
+"<literal>save()</literal> is called. This is the default strategy if no "
+"<literal><generator></literal> element is specified."
msgstr ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
- " <generator class=\"hilo\">\n"
- " <param name=\"table\">hi_value</param>\n"
- " <param name=\"column\">next_value</param>\n"
- " <param name=\"max_lo\">100</param>\n"
- " </generator>\n"
- "</id>]]>"
+"deja a la aplicación asignar un identificador al objeto antes de que se "
+"llame a <literal>save()</literal>. Esta es la estrategia por defecto si no "
+"se especifica un elemento <literal><generator></literal>."
-#: index.docbook:642
+#. Tag: literal
+#: basic_mapping.xml:642
+#, no-c-format
msgid "select"
+msgstr "select"
+
+#. Tag: para
+#: basic_mapping.xml:644
+#, no-c-format
+msgid ""
+"retrieves a primary key assigned by a database trigger by selecting the row "
+"by some unique key and retrieving the primary key value."
msgstr ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
- " <generator class=\"seqhilo\">\n"
- " <param name=\"sequence\">hi_value</param>\n"
- " <param name=\"max_lo\">100</param>\n"
- " </generator>\n"
- "</id>]]>"
+"recupera una clave primaria asignada por un disparador de base de datos "
+"seleccionando la fila por alguna clave única y recuperando el valor de la "
+"clave primaria."
-#: index.docbook:644
-msgid "retrieves a primary key assigned by a database trigger by selecting the row by some unique key and retrieving the primary key value."
-msgstr "Desafortunadamente, no puedes usar <literal>hilo</literal> cuando le proveas tu propia <literal>Connection</literal> a Hibernate. Cuando Hibernate está usando un datasource del servidor de aplicaciones para obtener conexiones alistadas con JTA, debes configurar correctamente el <literal>hibernate.transaction.manager_lookup_class</literal>."
-
-#: index.docbook:651
+#. Tag: literal
+#: basic_mapping.xml:651
+#, no-c-format
msgid "foreign"
-msgstr "Algoritmo UUID"
+msgstr "foreign"
-#: index.docbook:653
-msgid "uses the identifier of another associated object. Usually used in conjunction with a <literal><one-to-one></literal> primary key association."
-msgstr "El UUID contiene: la dirección IP, el instante de arranque de la JVM (con una precisión de un cuarto de segundo), el tiempo de sistema y un valor de contador (único en la JVM). No es posible obtener una dirección MAC o una dirección de memoria desde código Java, así que esto es lo mejor que podemos hacer sin usar JNI."
+#. Tag: para
+#: basic_mapping.xml:653
+#, no-c-format
+msgid ""
+"uses the identifier of another associated object. Usually used in "
+"conjunction with a <literal><one-to-one></literal> primary key "
+"association."
+msgstr ""
+"usa el identificador de otro objeto asociado. Generalmente usado en "
+"conjuncón a una asociacón de clave primaria <literal><uno-a-uno></"
+"literal>"
-#: index.docbook:660
+#. Tag: literal
+#: basic_mapping.xml:660
+#, no-c-format
msgid "sequence-identity"
-msgstr "Columnas de identidad y secuencias"
+msgstr "UNTRANSLATED! sequence-identity"
-#: index.docbook:662
-msgid "a specialized sequence generation strategy which utilizes a database sequence for the actual value generation, but combines this with JDBC3 getGeneratedKeys to actually return the generated identifier value as part of the insert statement execution. This strategy is only known to be supported on Oracle 10g drivers targetted for JDK 1.4. Note comments on these insert statements are disabled due to a bug in the Oracle drivers."
-msgstr "Para las bases de datos que soportan columnas de identidad (DB2, MySQL, Sybase, MS SQL), puedes usar generación de claves <literal>identity</literal>. Para las bases de datos que soportan secuencias (DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB) puedes usar la generación de claves del estilo <literal>sequence</literal>. Ambas estrategias requieren dos consultas SQL para insertar un nuevo objeto."
+#. Tag: para
+#: basic_mapping.xml:662
+#, no-c-format
+msgid ""
+"a specialized sequence generation strategy which utilizes a database "
+"sequence for the actual value generation, but combines this with JDBC3 "
+"getGeneratedKeys to actually return the generated identifier value as part "
+"of the insert statement execution. This strategy is only known to be "
+"supported on Oracle 10g drivers targetted for JDK 1.4. Note comments on "
+"these insert statements are disabled due to a bug in the Oracle drivers."
+msgstr ""
+"a specialized sequence generation strategy which utilizes a database "
+"sequence for the actual value generation, but combines this with JDBC3 "
+"getGeneratedKeys to actually return the generated identifier value as part "
+"of the insert statement execution. This strategy is only known to be "
+"supported on Oracle 10g drivers targetted for JDK 1.4. Note comments on "
+"these insert statements are disabled due to a bug in the Oracle drivers."
-#: index.docbook:679
+#. Tag: title
+#: basic_mapping.xml:679
+#, no-c-format
msgid "Hi/lo algorithm"
+msgstr "Algoritmo alto/bajo"
+
+#. Tag: para
+#: basic_mapping.xml:680
+#, no-c-format
+msgid ""
+"The <literal>hilo</literal> and <literal>seqhilo</literal> generators "
+"provide two alternate implementations of the hi/lo algorithm, a favorite "
+"approach to identifier generation. The first implementation requires a "
+"\"special\" database table to hold the next available \"hi\" value. The "
+"second uses an Oracle-style sequence (where supported)."
msgstr ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
- " <generator class=\"sequence\">\n"
- " <param name=\"sequence\">person_id_sequence</param>\n"
- " </generator>\n"
- "</id>]]>"
+"Los generadores <literal>hilo</literal> y <literal>seqhilo</literal> proveen "
+"dos implementaciones alternativas del algoritmo alto/bajo, un enfoque "
+"favorito en generación de identificadores. La primera implementación "
+"requiere de una tabla \"especial\" de base de datos para tener el siguiente "
+"valor \"alto\" disponible. La segunda usa una secuencia del estilo de Oracle "
+"(donde se soporte)."
-#: index.docbook:680
-msgid "The <literal>hilo</literal> and <literal>seqhilo</literal> generators provide two alternate implementations of the hi/lo algorithm, a favorite approach to identifier generation. The first implementation requires a \"special\" database table to hold the next available \"hi\" value. The second uses an Oracle-style sequence (where supported)."
+#. Tag: programlisting
+#: basic_mapping.xml:687
+#, no-c-format
+msgid ""
+"<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+" <generator class=\"hilo\">\n"
+" <param name=\"table\">hi_value</param>\n"
+" <param name=\"column\">next_value</param>\n"
+" <param name=\"max_lo\">100</param>\n"
+" </generator>\n"
+"</id>]]>"
msgstr ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\" unsaved-value=\"0\">\n"
- " <generator class=\"identity\"/>\n"
- "</id>]]>"
-#: index.docbook:687
+#. Tag: programlisting
+#: basic_mapping.xml:689
+#, no-c-format
msgid ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
- " <generator class=\"hilo\">\n"
- " <param name=\"table\">hi_value</param>\n"
- " <param name=\"column\">next_value</param>\n"
- " <param name=\"max_lo\">100</param>\n"
- " </generator>\n"
- "</id>]]>"
-msgstr "Para desarrollos multiplataforma, la estrategia <literal>native</literal> eiligirá de entre las estrategias <literal>identity</literal>, <literal>sequence</literal> y <literal>hilo</literal>, dependiendo de las capacidades de la base de datos subyacentes."
+"<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+" <generator class=\"seqhilo\">\n"
+" <param name=\"sequence\">hi_value</param>\n"
+" <param name=\"max_lo\">100</param>\n"
+" </generator>\n"
+"</id>]]>"
+msgstr ""
-#: index.docbook:689
+#. Tag: para
+#: basic_mapping.xml:691
+#, no-c-format
msgid ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
- " <generator class=\"seqhilo\">\n"
- " <param name=\"sequence\">hi_value</param>\n"
- " <param name=\"max_lo\">100</param>\n"
- " </generator>\n"
- "</id>]]>"
-msgstr "Identificadores asignados"
+"Unfortunately, you can't use <literal>hilo</literal> when supplying your own "
+"<literal>Connection</literal> to Hibernate. When Hibernate is using an "
+"application server datasource to obtain connections enlisted with JTA, you "
+"must properly configure the <literal>hibernate.transaction."
+"manager_lookup_class</literal>."
+msgstr ""
+"Desafortunadamente, no puedes usar <literal>hilo</literal> cuando le proveas "
+"tu propia <literal>Connection</literal> a Hibernate. Cuando Hibernate está "
+"usando un datasource del servidor de aplicaciones para obtener conexiones "
+"alistadas con JTA, debes configurar correctamente el <literal>hibernate."
+"transaction.manager_lookup_class</literal>."
-#: index.docbook:691
-msgid "Unfortunately, you can't use <literal>hilo</literal> when supplying your own <literal>Connection</literal> to Hibernate. When Hibernate is using an application server datasource to obtain connections enlisted with JTA, you must properly configure the <literal>hibernate.transaction.manager_lookup_class</literal>."
-msgstr "Si quieres que la aplicación asigne los identificadores (en contraposición a que los genere Hibernate), puedes usar el generador <literal>assigned</literal>. Este generador especial usará el valor identificador ya asignado a la propiedad identificadora del objeto. Este generador se usa cuandola clave primaria es una clave natural en vez de una clave sustituta. Este es el comportamiento por defecto si no especificas un elemento <literal><generator></literal>."
-
-#: index.docbook:700
+#. Tag: title
+#: basic_mapping.xml:700
+#, no-c-format
msgid "UUID algorithm"
-msgstr "Elegir el generador <literal>assigned</literal> hace que Hibernate use <literal>unsaved-value=\"undefined\"</literal>, forzando a Hibernate a ir a la base de datos para determinar si una instancia es transitoria o separada, a menos que haya una propiedad de versión o timestamp, o que tu definas <literal>Interceptor.isUnsaved()</literal>."
+msgstr "Algoritmo UUID"
-#: index.docbook:701
-msgid "The UUID contains: IP address, startup time of the JVM (accurate to a quarter second), system time and a counter value (unique within the JVM). It's not possible to obtain a MAC address or memory address from Java code, so this is the best we can do without using JNI."
-msgstr "Claves primarias asignadas por disparadores"
+#. Tag: para
+#: basic_mapping.xml:701
+#, no-c-format
+msgid ""
+"The UUID contains: IP address, startup time of the JVM (accurate to a "
+"quarter second), system time and a counter value (unique within the JVM). "
+"It's not possible to obtain a MAC address or memory address from Java code, "
+"so this is the best we can do without using JNI."
+msgstr ""
+"El UUID contiene: la dirección IP, el instante de arranque de la JVM (con "
+"una precisión de un cuarto de segundo), el tiempo de sistema y un valor de "
+"contador (único en la JVM). No es posible obtener una dirección MAC o una "
+"dirección de memoria desde código Java, así que esto es lo mejor que podemos "
+"hacer sin usar JNI."
-#: index.docbook:710
+#. Tag: title
+#: basic_mapping.xml:710
+#, no-c-format
msgid "Identity columns and sequences"
-msgstr "Para esquemas heredados solamente (Hibernate no genera DDL con disparadores)."
+msgstr "Columnas de identidad y secuencias"
-#: index.docbook:711
-msgid "For databases which support identity columns (DB2, MySQL, Sybase, MS SQL), you may use <literal>identity</literal> key generation. For databases that support sequences (DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB) you may use <literal>sequence</literal> style key generation. Both these strategies require two SQL queries to insert a new object."
+#. Tag: para
+#: basic_mapping.xml:711
+#, no-c-format
+msgid ""
+"For databases which support identity columns (DB2, MySQL, Sybase, MS SQL), "
+"you may use <literal>identity</literal> key generation. For databases that "
+"support sequences (DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB) you "
+"may use <literal>sequence</literal> style key generation. Both these "
+"strategies require two SQL queries to insert a new object."
msgstr ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
- " <generator class=\"select\">\n"
- " <param name=\"key\">socialSecurityNumber</param>\n"
- " </generator>\n"
- "</id>]]>"
+"Para las bases de datos que soportan columnas de identidad (DB2, MySQL, "
+"Sybase, MS SQL), puedes usar generación de claves <literal>identity</"
+"literal>. Para las bases de datos que soportan secuencias (DB2, Oracle, "
+"PostgreSQL, Interbase, McKoi, SAP DB) puedes usar la generación de claves "
+"del estilo <literal>sequence</literal>. Ambas estrategias requieren dos "
+"consultas SQL para insertar un nuevo objeto."
-#: index.docbook:719
+#. Tag: programlisting
+#: basic_mapping.xml:719
+#, no-c-format
msgid ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
- " <generator class=\"sequence\">\n"
- " <param name=\"sequence\">person_id_sequence</param>\n"
- " </generator>\n"
- "</id>]]>"
-msgstr "En el ejemplo de arriba, hay una propiedad ánica llamada <literal>socialSecurityNumber</literal> definida por la clase, como una clave natural, y una clave sustituta llamada <literal>person_id</literal> cuyo valor es generado por un disparador."
+"<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
+" <generator class=\"sequence\">\n"
+" <param name=\"sequence\">person_id_sequence</param>\n"
+" </generator>\n"
+"</id>]]>"
+msgstr ""
-#: index.docbook:721
+#. Tag: programlisting
+#: basic_mapping.xml:721
+#, no-c-format
msgid ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\" unsaved-value=\"0\">\n"
- " <generator class=\"identity\"/>\n"
- "</id>]]>"
-msgstr "composite-id"
+"<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\" unsaved-value=\"0"
+"\">\n"
+" <generator class=\"identity\"/>\n"
+"</id>]]>"
+msgstr ""
-#: index.docbook:723
-msgid "For cross-platform development, the <literal>native</literal> strategy will choose from the <literal>identity</literal>, <literal>sequence</literal> and <literal>hilo</literal> strategies, dependant upon the capabilities of the underlying database."
+#. Tag: para
+#: basic_mapping.xml:723
+#, no-c-format
+msgid ""
+"For cross-platform development, the <literal>native</literal> strategy will "
+"choose from the <literal>identity</literal>, <literal>sequence</literal> and "
+"<literal>hilo</literal> strategies, dependant upon the capabilities of the "
+"underlying database."
msgstr ""
- "<![CDATA[<composite-id\n"
- " name=\"propertyName\"\n"
- " class=\"ClassName\"\n"
- " unsaved-value=\"undefined|any|none\"\n"
- " access=\"field|property|ClassName\"\n"
- " node=\"element-name|.\">\n"
- "\n"
- " <key-property name=\"propertyName\" type=\"typename\" column=\"column_name\"/>\n"
- " <key-many-to-one name=\"propertyName class=\"ClassName\" column=\"column_name\"/>\n"
- " ......\n"
- "</composite-id>]]>"
+"Para desarrollos multiplataforma, la estrategia <literal>native</literal> "
+"eiligirá de entre las estrategias <literal>identity</literal>, "
+"<literal>sequence</literal> y <literal>hilo</literal>, dependiendo de las "
+"capacidades de la base de datos subyacentes."
-#: index.docbook:732
+#. Tag: title
+#: basic_mapping.xml:732
+#, no-c-format
msgid "Assigned identifiers"
-msgstr "Para una tabla con clave compuesta, puedes mapear múltiples propiedades de la clase como propiedades identificadoras. El elemento <literal><composite-id></literal> acepta los mapeos de propiedad <literal><key-property></literal> y los mapeos <literal><key-many-to-one></literal> como elementos hijo."
+msgstr "Identificadores asignados"
-#: index.docbook:733
-msgid "If you want the application to assign identifiers (as opposed to having Hibernate generate them), you may use the <literal>assigned</literal> generator. This special generator will use the identifier value already assigned to the object's identifier property. This generator is used when the primary key is a natural key instead of a surrogate key. This is the default behavior if you do no specify a <literal><generator></literal> element."
+#. Tag: para
+#: basic_mapping.xml:733
+#, no-c-format
+msgid ""
+"If you want the application to assign identifiers (as opposed to having "
+"Hibernate generate them), you may use the <literal>assigned</literal> "
+"generator. This special generator will use the identifier value already "
+"assigned to the object's identifier property. This generator is used when "
+"the primary key is a natural key instead of a surrogate key. This is the "
+"default behavior if you do no specify a <literal><generator></literal> "
+"element."
msgstr ""
- "<![CDATA[<composite-id>\n"
- " <key-property name=\"medicareNumber\"/>\n"
- " <key-property name=\"dependent\"/>\n"
- "</composite-id>]]>"
+"Si quieres que la aplicación asigne los identificadores (en contraposición a "
+"que los genere Hibernate), puedes usar el generador <literal>assigned</"
+"literal>. Este generador especial usará el valor identificador ya asignado a "
+"la propiedad identificadora del objeto. Este generador se usa cuandola clave "
+"primaria es una clave natural en vez de una clave sustituta. Este es el "
+"comportamiento por defecto si no especificas un elemento <literal><"
+"generator></literal>."
-#: index.docbook:742
-msgid "Choosing the <literal>assigned</literal> generator makes Hibernate use <literal>unsaved-value=\"undefined\"</literal>, forcing Hibernate to go to the database to determine if an instance is transient or detached, unless there is a version or timestamp property, or you define <literal>Interceptor.isUnsaved()</literal>."
-msgstr "Tu clase persistente <emphasis>debe</emphasis> sobreescribir <literal>equals()</literal> y <literal>hashCode()</literal> para implementar igualdad de identificador compuesto. Debe también implementar <literal>Serializable</literal>."
+#. Tag: para
+#: basic_mapping.xml:742
+#, no-c-format
+msgid ""
+"Choosing the <literal>assigned</literal> generator makes Hibernate use "
+"<literal>unsaved-value=\"undefined\"</literal>, forcing Hibernate to go to "
+"the database to determine if an instance is transient or detached, unless "
+"there is a version or timestamp property, or you define <literal>Interceptor."
+"isUnsaved()</literal>."
+msgstr ""
+"Elegir el generador <literal>assigned</literal> hace que Hibernate use "
+"<literal>unsaved-value=\"undefined\"</literal>, forzando a Hibernate a ir a "
+"la base de datos para determinar si una instancia es transitoria o separada, "
+"a menos que haya una propiedad de versión o timestamp, o que tu definas "
+"<literal>Interceptor.isUnsaved()</literal>."
-#: index.docbook:752
+#. Tag: title
+#: basic_mapping.xml:752
+#, no-c-format
msgid "Primary keys assigned by triggers"
-msgstr "Desafortunadamente, este enfoque de identificadores compuestos significa que un objeto persistente es su propio identificador. No existe otra \"asa\" conveniente más que el objeto mismo. Debes instanciar una instancia de la clase misma y poblar sus propiedades identificadoras antes que puedas <literal>load()</literal> el estado persistente asociado a una clave compuesta. Describiremos un enfoque mucho más conveniente donde el identificador compuesto está implementado como una clase separada en <xref linkend=\"components-compositeid\"/>. Los atributos descriptos debajo solamente se aplican a este enfoque alternativo:"
+msgstr "Claves primarias asignadas por disparadores"
-#: index.docbook:753
-msgid "For legacy schemas only (Hibernate does not generate DDL with triggers)."
-msgstr "<literal>name</literal> (opcional): Una propiedad de tipo componente que tiene el identificador compuesto (ver siguiente sección)."
+#. Tag: para
+#: basic_mapping.xml:753
+#, no-c-format
+msgid ""
+"For legacy schemas only (Hibernate does not generate DDL with triggers)."
+msgstr ""
+"Para esquemas heredados solamente (Hibernate no genera DDL con disparadores)."
-#: index.docbook:757
+#. Tag: programlisting
+#: basic_mapping.xml:757
+#, no-c-format
msgid ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
- " <generator class=\"select\">\n"
- " <param name=\"key\">socialSecurityNumber</param>\n"
- " </generator>\n"
- "</id>]]>"
-msgstr "<literal>class</literal> (opcional - por defecto al tipo de la propiedad determinado por reflección): La clase del componente usado como identificador compuesto (ver siguiente sección)."
+"<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
+" <generator class=\"select\">\n"
+" <param name=\"key\">socialSecurityNumber</param>\n"
+" </generator>\n"
+"</id>]]>"
+msgstr ""
-#: index.docbook:759
-msgid "In the above example, there is a unique valued property named <literal>socialSecurityNumber</literal> defined by the class, as a natural key, and a surrogate key named <literal>person_id</literal> whose value is generated by a trigger."
-msgstr "<literal>unsaved-value</literal> (opcional - por defecto a <literal>undefined</literal>): Indica que las instancias transitorias deben ser consideradas como recién instanciadas, si se establece a <literal>any</literal>, o separadas, si se establece a <literal>none</literal>. Lo mejor Indicates that transient instances should be considered newly instantiated, if set to <literal>any</literal>, or detached, if set to <literal>none</literal>. Lo mejor en todos los casos es dejar el valor por defecto."
+#. Tag: para
+#: basic_mapping.xml:759
+#, no-c-format
+msgid ""
+"In the above example, there is a unique valued property named "
+"<literal>socialSecurityNumber</literal> defined by the class, as a natural "
+"key, and a surrogate key named <literal>person_id</literal> whose value is "
+"generated by a trigger."
+msgstr ""
+"En el ejemplo de arriba, hay una propiedad ánica llamada "
+"<literal>socialSecurityNumber</literal> definida por la clase, como una "
+"clave natural, y una clave sustituta llamada <literal>person_id</literal> "
+"cuyo valor es generado por un disparador."
-#: index.docbook:771
+#. Tag: title
+#: basic_mapping.xml:771
+#, no-c-format
msgid "Enhanced identifier generators"
-msgstr "discriminator"
+msgstr "Enhanced identifier generators"
-#: index.docbook:773
-msgid "Starting with release 3.2.3, there are 2 new generators which represent a re-thinking of 2 different aspects of identifier generation. The first aspect is database portability; the second is optimization (not having to query the database for every request for a new identifier value). These two new generators are intended to take the place of some of the named generators described above (starting in 3.3.x); however, they are included in the current releases and can be referenced by FQN."
-msgstr "El elemento <literal><discriminator></literal> es requerido para la persistencia polimórfica usando la estrategia de mapeo de tabla-por-jerarquía-de-clases y declara una columna discriminadora de la tabla. La columna discriminidora contiene valores de marca que le dicen a la capa de persistencia qué subclase instanciar para una fila en particular. Un conjunto restringido de tipos puede ser usado: <literal>string</literal>, <literal>character</literal>, <literal>integer</literal>, <literal>byte</literal>, <literal>short</literal>, <literal>boolean</literal>, <literal>yes_no</literal>, <literal>true_false</literal>."
+#. Tag: para
+#: basic_mapping.xml:773
+#, no-c-format
+msgid ""
+"Starting with release 3.2.3, there are 2 new generators which represent a re-"
+"thinking of 2 different aspects of identifier generation. The first aspect "
+"is database portability; the second is optimization (not having to query the "
+"database for every request for a new identifier value). These two new "
+"generators are intended to take the place of some of the named generators "
+"described above (starting in 3.3.x); however, they are included in the "
+"current releases and can be referenced by FQN."
+msgstr ""
+"Starting with release 3.2.3, there are 2 new generators which represent a re-"
+"thinking of 2 different aspects of identifier generation. The first aspect "
+"is database portability; the second is optimization (not having to query the "
+"database for every request for a new identifier value). These two new "
+"generators are intended to take the place of some of the named generators "
+"described above (starting in 3.3.x); however, they are included in the "
+"current releases and can be referenced by FQN."
-#: index.docbook:781
-msgid "The first of these new generators is <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</literal> which is intended firstly as a replacement for the <literal>sequence</literal> generator and secondly as a better portability generator than <literal>native</literal> (because <literal>native</literal> (generally) chooses between <literal>identity</literal> and <literal>sequence</literal> which have largely different semantics which can cause subtle isssues in applications eyeing portability). <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</literal> however achieves portability in a different manner. It chooses between using a table or a sequence in the database to store its incrementing values depending on the capabilities of the dialect being used. The difference between this and <literal>native</literal> is that table-based and sequence-based storage have the same exact semantic (in fact sequences are exactly what Hibernate tries to emmulate with its!
table-based generators). This generator has a number of configuration parameters:"
+#. Tag: para
+#: basic_mapping.xml:781
+#, fuzzy, no-c-format
+msgid ""
+"The first of these new generators is <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal> which is intended firstly as a replacement "
+"for the <literal>sequence</literal> generator and secondly as a better "
+"portability generator than <literal>native</literal> (because "
+"<literal>native</literal> (generally) chooses between <literal>identity</"
+"literal> and <literal>sequence</literal> which have largely different "
+"semantics which can cause subtle isssues in applications eyeing "
+"portability). <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</"
+"literal> however achieves portability in a different manner. It chooses "
+"between using a table or a sequence in the database to store its "
+"incrementing values depending on the capabilities of the dialect being used. "
+"The difference between this and <literal>native</literal> is that table-"
+"based and sequence-based storage have the same exact semantic (in fact "
+"sequences are exactly what Hibernate tries to emmulate with its table-based "
+"generators). This generator has a number of configuration parameters:"
msgstr ""
- "<![CDATA[<discriminator\n"
- " column=\"discriminator_column\"\n"
- " type=\"discriminator_type\"\n"
- " force=\"true|false\"\n"
- " insert=\"true|false\"\n"
- " formula=\"arbitrary sql expression\"\n"
- "/>]]>"
+"The first of these new generators is <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal> which is intended firstly as a replacement "
+"for the <literal>sequence</literal> generator and secondly as a better "
+"portability generator than <literal>native</literal> (because "
+"<literal>native</literal> (generally) chooses between <literal>identity</"
+"literal> and <literal>sequence</literal> which have largely different "
+"semantics which can cause subtle isssues in applications eyeing "
+"portability). <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</"
+"literal> however achieves portability in a different manner. It chooses "
+"between using a table or a sequence in the database to store its "
+"incrementing values depending on the capabilities of the dialect being used. "
+"The difference between this and <literal>native</literal> is that table-"
+"based and sequence-based storage have the same exact semantic (in fact "
+"sequences are exactly what Hibernate tries to emmulate with its table-based "
+"generators). This generator has a number of configuration parameters: "
+"<placeholder-1/>"
-#: index.docbook:795
-msgid "<literal>sequence_name</literal> (optional, defaults to <literal>hibernate_sequence</literal>): The name of the sequence (or table) to be used."
-msgstr "<literal>column</literal> (opcional - por defecto a <literal>class</literal>) el nombre de la columna discriminadora."
+#. Tag: para
+#: basic_mapping.xml:795
+#, no-c-format
+msgid ""
+"<literal>sequence_name</literal> (optional, defaults to "
+"<literal>hibernate_sequence</literal>): The name of the sequence (or table) "
+"to be used."
+msgstr ""
+"<literal>sequence_name</literal> (optional, defaults to "
+"<literal>hibernate_sequence</literal>): The name of the sequence (or table) "
+"to be used."
-#: index.docbook:801
-msgid "<literal>initial_value</literal> (optional, defaults to <literal>1</literal>): The initial value to be retrieved from the sequence/table. In sequence creation terms, this is analogous to the clause typical named \"STARTS WITH\"."
-msgstr "<literal>type</literal> (opcional - por defecto a <literal>string</literal>) un nombre que indique el tipo Hibernate"
+#. Tag: para
+#: basic_mapping.xml:801
+#, no-c-format
+msgid ""
+"<literal>initial_value</literal> (optional, defaults to <literal>1</"
+"literal>): The initial value to be retrieved from the sequence/table. In "
+"sequence creation terms, this is analogous to the clause typical named "
+"\"STARTS WITH\"."
+msgstr ""
+"<literal>initial_value</literal> (optional, defaults to <literal>1</"
+"literal>): The initial value to be retrieved from the sequence/table. In "
+"sequence creation terms, this is analogous to the clause typical named "
+"\"STARTS WITH\"."
-#: index.docbook:808
-msgid "<literal>increment_size</literal> (optional, defaults to <literal>1</literal>): The value by which subsequent calls to the sequence/table should differ. In sequence creation terms, this is analogous to the clause typical named \"INCREMENT BY\"."
-msgstr "<literal>force</literal> (optconal - por defecto a <literal>false</literal>) \"fuerza\" a Hibernate a especificar valores discriminadores permitidos incluso cuando se recuperan todas las instancias de la clase raíz."
+#. Tag: para
+#: basic_mapping.xml:808
+#, no-c-format
+msgid ""
+"<literal>increment_size</literal> (optional, defaults to <literal>1</"
+"literal>): The value by which subsequent calls to the sequence/table should "
+"differ. In sequence creation terms, this is analogous to the clause typical "
+"named \"INCREMENT BY\"."
+msgstr ""
+"<literal>increment_size</literal> (optional, defaults to <literal>1</"
+"literal>): The value by which subsequent calls to the sequence/table should "
+"differ. In sequence creation terms, this is analogous to the clause typical "
+"named \"INCREMENT BY\"."
-#: index.docbook:815
-msgid "<literal>force_table_use</literal> (optional, defaults to <literal>false</literal>): Should we force the use of a table as the backing structure even though the dialect might support sequence?"
-msgstr "<literal>insert</literal> (opcional - por defecto a <literal>true</literal>) establezca este a <literal>false</literal> si tu columna discriminadora es también parte de un identificador mapeado compuesto. (Le dice a Hibernate que no incluya la columna en los SQL <literal>INSERT</literal>s.)"
+#. Tag: para
+#: basic_mapping.xml:815
+#, no-c-format
+msgid ""
+"<literal>force_table_use</literal> (optional, defaults to <literal>false</"
+"literal>): Should we force the use of a table as the backing structure even "
+"though the dialect might support sequence?"
+msgstr ""
+"<literal>force_table_use</literal> (optional, defaults to <literal>false</"
+"literal>): Should we force the use of a table as the backing structure even "
+"though the dialect might support sequence?"
-#: index.docbook:822
-msgid "<literal>value_column</literal> (optional, defaults to <literal>next_val</literal>): Only relevant for table structures! The name of the column on the table which is used to hold the value."
-msgstr "<literal>formula</literal> (opcional) una expresión SQL arbitraria que es ejecutada cuando un tipo tenga que ser evaluado. Permite dicriminación basada en el contenido."
+#. Tag: para
+#: basic_mapping.xml:822
+#, no-c-format
+msgid ""
+"<literal>value_column</literal> (optional, defaults to <literal>next_val</"
+"literal>): Only relevant for table structures! The name of the column on the "
+"table which is used to hold the value."
+msgstr ""
+"<literal>value_column</literal> (optional, defaults to <literal>next_val</"
+"literal>): Only relevant for table structures! The name of the column on the "
+"table which is used to hold the value."
-#: index.docbook:829
-msgid "<literal>optimizer</literal> (optional, defaults to <literal>none</literal>): See"
-msgstr "Los valores reales de la columna discriminadora están especificados por el atributo <literal>discriminator-value</literal> de los elementos <literal><class></literal> y <literal><subclass></literal>."
+#. Tag: para
+#: basic_mapping.xml:829
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimizer</literal> (optional, defaults to <literal>none</"
+"literal>): See"
+msgstr ""
+"<literal>cascade</literal> (opcional- por defecto a <literal>none</"
+"literal>): el estilo de cascada."
-#: index.docbook:836
-msgid "The second of these new generators is <literal>org.hibernate.id.enhanced.TableGenerator</literal> which is intended firstly as a replacement for the <literal>table</literal> generator (although it actually functions much more like <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal>) and secondly as a re-implementation of <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal> utilizing the notion of pluggable optimiziers. Essentially this generator defines a table capable of holding a number of different increment values simultaneously by using multiple distinctly keyed rows. This generator has a number of configuration parameters:"
-msgstr "El atributo <literal>force</literal> es (sólo) útil si la tabla contiene filas con valores discriminadores \"extra\" que no están mapeados a la clase persistente. Generalmente este no es el caso."
+#. Tag: para
+#: basic_mapping.xml:836
+#, fuzzy, no-c-format
+msgid ""
+"The second of these new generators is <literal>org.hibernate.id.enhanced."
+"TableGenerator</literal> which is intended firstly as a replacement for the "
+"<literal>table</literal> generator (although it actually functions much more "
+"like <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal>) and "
+"secondly as a re-implementation of <literal>org.hibernate.id."
+"MultipleHiLoPerTableGenerator</literal> utilizing the notion of pluggable "
+"optimiziers. Essentially this generator defines a table capable of holding a "
+"number of different increment values simultaneously by using multiple "
+"distinctly keyed rows. This generator has a number of configuration "
+"parameters:"
+msgstr ""
+"The second of these new generators is <literal>org.hibernate.id.enhanced."
+"TableGenerator</literal> which is intended firstly as a replacement for the "
+"<literal>table</literal> generator (although it actually functions much more "
+"like <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal>) and "
+"secondly as a re-implementation of <literal>org.hibernate.id."
+"MultipleHiLoPerTableGenerator</literal> utilizing the notion of pluggable "
+"optimiziers. Essentially this generator defines a table capable of holding a "
+"number of different increment values simultaneously by using multiple "
+"distinctly keyed rows. This generator has a number of configuration "
+"parameters: <placeholder-1/>"
-#: index.docbook:846
-msgid "<literal>table_name</literal> (optional, defaults to <literal>hibernate_sequences</literal>): The name of the table to be used."
-msgstr "Usando el atributo <literal>formula</literal> puedes declarar una expresión SQL arbitraria que será usada para evaluar el tipo de una fila:"
+#. Tag: para
+#: basic_mapping.xml:846
+#, no-c-format
+msgid ""
+"<literal>table_name</literal> (optional, defaults to "
+"<literal>hibernate_sequences</literal>): The name of the table to be used."
+msgstr ""
+"<literal>table_name</literal> (optional, defaults to "
+"<literal>hibernate_sequences</literal>): The name of the table to be used."
-#: index.docbook:852
-msgid "<literal>value_column_name</literal> (optional, defaults to <literal>next_val</literal>): The name of the column on the table which is used to hold the value."
+#. Tag: para
+#: basic_mapping.xml:852
+#, no-c-format
+msgid ""
+"<literal>value_column_name</literal> (optional, defaults to "
+"<literal>next_val</literal>): The name of the column on the table which is "
+"used to hold the value."
msgstr ""
- "<![CDATA[<discriminator\n"
- " formula=\"case when CLASS_TYPE in ('a', 'b', 'c') then 0 else 1 end\"\n"
- " type=\"integer\"/>]]>"
+"<literal>value_column_name</literal> (optional, defaults to "
+"<literal>next_val</literal>): The name of the column on the table which is "
+"used to hold the value."
-#: index.docbook:858
-msgid "<literal>segment_column_name</literal> (optional, defaults to <literal>sequence_name</literal>): The name of the column on the table which is used to hold the \"segement key\". This is the value which distinctly identifies which increment value to use."
-msgstr "version (opcional)"
+#. Tag: para
+#: basic_mapping.xml:858
+#, no-c-format
+msgid ""
+"<literal>segment_column_name</literal> (optional, defaults to "
+"<literal>sequence_name</literal>): The name of the column on the table which "
+"is used to hold the \"segement key\". This is the value which distinctly "
+"identifies which increment value to use."
+msgstr ""
+"<literal>segment_column_name</literal> (optional, defaults to "
+"<literal>sequence_name</literal>): The name of the column on the table which "
+"is used to hold the \"segement key\". This is the value which distinctly "
+"identifies which increment value to use."
-#: index.docbook:865
-msgid "<literal>segment_value</literal> (optional, defaults to <literal>default</literal>): The \"segment key\" value for the segment from which we want to pull increment values for this generator."
-msgstr "El elemento <literal><version></literal> es opcional e indica que la tabla contiene datos versionados. Esto es particularmente útil si planeas usar <emphasis>transacciones largas</emphasis> (ver debajo)."
+#. Tag: para
+#: basic_mapping.xml:865
+#, no-c-format
+msgid ""
+"<literal>segment_value</literal> (optional, defaults to <literal>default</"
+"literal>): The \"segment key\" value for the segment from which we want to "
+"pull increment values for this generator."
+msgstr ""
+"<literal>segment_value</literal> (optional, defaults to <literal>default</"
+"literal>): The \"segment key\" value for the segment from which we want to "
+"pull increment values for this generator."
-#: index.docbook:872
-msgid "<literal>segment_value_length</literal> (optional, defaults to <literal>255</literal>): Used for schema generation; the column size to create this segment key column."
+#. Tag: para
+#: basic_mapping.xml:872
+#, no-c-format
+msgid ""
+"<literal>segment_value_length</literal> (optional, defaults to <literal>255</"
+"literal>): Used for schema generation; the column size to create this "
+"segment key column."
msgstr ""
- "<![CDATA[<version\n"
- " column=\"version_column\"\n"
- " name=\"propertyName\"\n"
- " type=\"typename\"\n"
- " access=\"field|property|ClassName\"\n"
- " unsaved-value=\"null|negative|undefined\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- "/>]]>"
+"<literal>segment_value_length</literal> (optional, defaults to <literal>255</"
+"literal>): Used for schema generation; the column size to create this "
+"segment key column."
-#: index.docbook:878
-msgid "<literal>initial_value</literal> (optional, defaults to <literal>1</literal>): The initial value to be retrieved from the table."
-msgstr "<literal>column</literal> (opcional - por defecto al nombre de la propiedad): El nombre de la columna que tiene el número de versión."
+#. Tag: para
+#: basic_mapping.xml:878
+#, no-c-format
+msgid ""
+"<literal>initial_value</literal> (optional, defaults to <literal>1</"
+"literal>): The initial value to be retrieved from the table."
+msgstr ""
+"<literal>initial_value</literal> (optional, defaults to <literal>1</"
+"literal>): The initial value to be retrieved from the table."
-#: index.docbook:884
-msgid "<literal>increment_size</literal> (optional, defaults to <literal>1</literal>): The value by which subsequent calls to the table should differ."
-msgstr "<literal>name</literal>: El nombre de una propiedad de la clase persistente."
+#. Tag: para
+#: basic_mapping.xml:884
+#, no-c-format
+msgid ""
+"<literal>increment_size</literal> (optional, defaults to <literal>1</"
+"literal>): The value by which subsequent calls to the table should differ."
+msgstr ""
+"<literal>increment_size</literal> (optional, defaults to <literal>1</"
+"literal>): The value by which subsequent calls to the table should differ."
-#: index.docbook:890
-msgid "<literal>optimizer</literal> (optional, defaults to <literal></literal>): See"
-msgstr "<literal>type</literal> (opcional - por defecto a <literal>integer</literal>): El tipo del nú.mero de vesión."
+#. Tag: para
+#: basic_mapping.xml:890
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimizer</literal> (optional, defaults to <literal></literal>): See"
+msgstr ""
+"<literal>cascade</literal> (opcional- por defecto a <literal>none</"
+"literal>): el estilo de cascada."
-#: index.docbook:900
+#. Tag: title
+#: basic_mapping.xml:900
+#, no-c-format
msgid "Identifier generator optimization"
-msgstr "<literal>access</literal> (opcional - por defecto a <literal>property</literal>): La estrategia que Hibernate debe usar para acceder al valor de la propiedad."
+msgstr "Identifier generator optimization"
-#: index.docbook:901
-msgid "For identifier generators which store values in the database, it is inefficient for them to hit the database on each and every call to generate a new identifier value. Instead, you'd ideally want to group a bunch of them in memory and only hit the database when you have exhausted your in-memory value group. This is the role of the pluggable optimizers. Currently only the two enhanced generators (<xref linkend=\"mapping-declaration-id-enhanced\"/> support this notion."
-msgstr "<literal>unsaved-value</literal> (opcional - por defecto a <literal>undefined</literal>): Un valor de la propiedad de versión que indica que una instancia está recién instanciada (sin guardar), distinguiéndola de instancias separadas que fueran guardadas o cargadas en una sesión previa. (<literal>undefined</literal> especifica que debe usarse el valor de la propiedad identificadora.)"
+#. Tag: para
+#: basic_mapping.xml:901
+#, fuzzy, no-c-format
+msgid ""
+"For identifier generators which store values in the database, it is "
+"inefficient for them to hit the database on each and every call to generate "
+"a new identifier value. Instead, you'd ideally want to group a bunch of them "
+"in memory and only hit the database when you have exhausted your in-memory "
+"value group. This is the role of the pluggable optimizers. Currently only "
+"the two enhanced generators (<xref linkend=\"mapping-declaration-id-enhanced"
+"\"/> support this notion."
+msgstr ""
+"For identifier generators which store values in the database, it is "
+"inefficient for them to hit the database on each and every call to generate "
+"a new identifier value. Instead, you'd ideally want to group a bunch of them "
+"in memory and only hit the database when you have exhausted your in-memory "
+"value group. This is the role of the pluggable optimizers. Currently only "
+"the two enhanced generators (<xref linkend=\"mapping-declaration-id-enhanced"
+"\"/> support this notion. <placeholder-1/>"
-#: index.docbook:909
-msgid "<literal>none</literal> (generally this is the default if no optimizer was specified): This says to not perform any optimizations, and hit the database each and every request."
-msgstr "Los números de versión deben ser de tipo <literal>long</literal>, <literal>integer</literal>, <literal>short</literal>, <literal>timestamp</literal> o <literal>calendar</literal> de Hibernate."
+#. Tag: para
+#: basic_mapping.xml:909
+#, no-c-format
+msgid ""
+"<literal>none</literal> (generally this is the default if no optimizer was "
+"specified): This says to not perform any optimizations, and hit the database "
+"each and every request."
+msgstr ""
+"<literal>none</literal> (generally this is the default if no optimizer was "
+"specified): This says to not perform any optimizations, and hit the database "
+"each and every request."
-#: index.docbook:915
-msgid "<literal>hilo</literal>: applies a hi/lo algorithm around the database retrieved values. The values from the database for this optimizer are expected to be sequential. The values retrieved from the database structure for this optimizer indicates the \"group number\"; the <literal>increment_size</literal> is multiplied by that value in memory to define a group \"hi value\"."
-msgstr "Una propiedad de versión o timestamp nunca debe ser nula para una instancia separada, de modo que Hibernate detectará cualquier instancia con una versión o timestamp nulo como transitoria, sin importar qué otras estrategias <literal>unsaved-value</literal> se hayan especificado. <emphasis>Declarar una propiedad de versón o timestamp nulable es una forma fácil de evitar cualquier problema con la re-unión transitiva en Hibernate, especialmente útil para que usa identificadores asignados o claves compuestas!</emphasis>"
+#. Tag: para
+#: basic_mapping.xml:915
+#, no-c-format
+msgid ""
+"<literal>hilo</literal>: applies a hi/lo algorithm around the database "
+"retrieved values. The values from the database for this optimizer are "
+"expected to be sequential. The values retrieved from the database structure "
+"for this optimizer indicates the \"group number\"; the "
+"<literal>increment_size</literal> is multiplied by that value in memory to "
+"define a group \"hi value\"."
+msgstr ""
+"<literal>hilo</literal>: applies a hi/lo algorithm around the database "
+"retrieved values. The values from the database for this optimizer are "
+"expected to be sequential. The values retrieved from the database structure "
+"for this optimizer indicates the \"group number\"; the "
+"<literal>increment_size</literal> is multiplied by that value in memory to "
+"define a group \"hi value\"."
-#: index.docbook:924
-msgid "<literal>pooled</literal>: like was discussed for <literal>hilo</literal>, this optimizers attempts to minimize the number of hits to the database. Here, however, we simply store the starting value for the \"next group\" into the database structure rather than a sequential value in combination with an in-memory grouping algorithm. <literal>increment_size</literal> here refers to the values coming from the database."
-msgstr "timestamp (opcional)"
+#. Tag: para
+#: basic_mapping.xml:924
+#, no-c-format
+msgid ""
+"<literal>pooled</literal>: like was discussed for <literal>hilo</literal>, "
+"this optimizers attempts to minimize the number of hits to the database. "
+"Here, however, we simply store the starting value for the \"next group\" "
+"into the database structure rather than a sequential value in combination "
+"with an in-memory grouping algorithm. <literal>increment_size</literal> here "
+"refers to the values coming from the database."
+msgstr ""
+"<literal>pooled</literal>: like was discussed for <literal>hilo</literal>, "
+"this optimizers attempts to minimize the number of hits to the database. "
+"Here, however, we simply store the starting value for the \"next group\" "
+"into the database structure rather than a sequential value in combination "
+"with an in-memory grouping algorithm. <literal>increment_size</literal> here "
+"refers to the values coming from the database."
-#: index.docbook:937
+#. Tag: title
+#: basic_mapping.xml:937
+#, no-c-format
msgid "composite-id"
-msgstr "El elemento opcional <literal><timestamp></literal> indica que la tabla contiene datos con sellos de tiempo. Esto esta concebido como una alternativa al versionado. Los timestamps (sellos de tiempo) son por su naturaleza una implementación menos segura de bloqueo optimista. Sin embrago, a veces la aplicación puede usar los timestamps en otras formas."
+msgstr "composite-id"
-#: index.docbook:939
+#. Tag: programlisting
+#: basic_mapping.xml:939
+#, no-c-format
msgid ""
- "<![CDATA[<composite-id\n"
- " name=\"propertyName\"\n"
- " class=\"ClassName\"\n"
- " mapped=\"true|false\"\n"
- " access=\"field|property|ClassName\">\n"
- " node=\"element-name|.\"\n"
- "\n"
- " <key-property name=\"propertyName\" type=\"typename\" column=\"column_name\"/>\n"
- " <key-many-to-one name=\"propertyName class=\"ClassName\" column=\"column_name\"/>\n"
- " ......\n"
- "</composite-id>]]>"
+"<![CDATA[<composite-id\n"
+" name=\"propertyName\"\n"
+" class=\"ClassName\"\n"
+" mapped=\"true|false\"\n"
+" access=\"field|property|ClassName\">\n"
+" node=\"element-name|.\"\n"
+"\n"
+" <key-property name=\"propertyName\" type=\"typename\" column="
+"\"column_name\"/>\n"
+" <key-many-to-one name=\"propertyName class=\"ClassName\" column="
+"\"column_name\"/>\n"
+" ......\n"
+"</composite-id>]]>"
msgstr ""
- "<![CDATA[<timestamp\n"
- " column=\"timestamp_column\"\n"
- " name=\"propertyName\"\n"
- " access=\"field|property|ClassName\"\n"
- " unsaved-value=\"null|undefined\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- "/>]]>"
-#: index.docbook:941
-msgid "For a table with a composite key, you may map multiple properties of the class as identifier properties. The <literal><composite-id></literal> element accepts <literal><key-property></literal> property mappings and <literal><key-many-to-one></literal> mappings as child elements."
-msgstr "<literal>column</literal> (opcional - por defecto al nombre de la propiedad): El nombre de una columna que tiene el timestamp."
+#. Tag: para
+#: basic_mapping.xml:941
+#, no-c-format
+msgid ""
+"For a table with a composite key, you may map multiple properties of the "
+"class as identifier properties. The <literal><composite-id></literal> "
+"element accepts <literal><key-property></literal> property mappings "
+"and <literal><key-many-to-one></literal> mappings as child elements."
+msgstr ""
+"Para una tabla con clave compuesta, puedes mapear múltiples propiedades de "
+"la clase como propiedades identificadoras. El elemento <literal><"
+"composite-id></literal> acepta los mapeos de propiedad <literal><key-"
+"property></literal> y los mapeos <literal><key-many-to-one></"
+"literal> como elementos hijo."
-#: index.docbook:948
+#. Tag: programlisting
+#: basic_mapping.xml:948
+#, no-c-format
msgid ""
- "<![CDATA[<composite-id>\n"
- " <key-property name=\"medicareNumber\"/>\n"
- " <key-property name=\"dependent\"/>\n"
- "</composite-id>]]>"
-msgstr "<literal>name</literal>: El nombre de una propiedad del estilo JavaBeans de tipo Java <literal>Date</literal> o <literal>Timestamp</literal> de la clase persistente."
+"<![CDATA[<composite-id>\n"
+" <key-property name=\"medicareNumber\"/>\n"
+" <key-property name=\"dependent\"/>\n"
+"</composite-id>]]>"
+msgstr ""
-#: index.docbook:950
-msgid "Your persistent class <emphasis>must</emphasis> override <literal>equals()</literal> and <literal>hashCode()</literal> to implement composite identifier equality. It must also implements <literal>Serializable</literal>."
-msgstr "<literal>access</literal> (opcional - por defecto a <literal>property</literal>): La estrategia que Hibernate debe usar para acceder al valor de la propiedad."
+#. Tag: para
+#: basic_mapping.xml:950
+#, no-c-format
+msgid ""
+"Your persistent class <emphasis>must</emphasis> override <literal>equals()</"
+"literal> and <literal>hashCode()</literal> to implement composite identifier "
+"equality. It must also implements <literal>Serializable</literal>."
+msgstr ""
+"Tu clase persistente <emphasis>debe</emphasis> sobreescribir <literal>equals"
+"()</literal> y <literal>hashCode()</literal> para implementar igualdad de "
+"identificador compuesto. Debe también implementar <literal>Serializable</"
+"literal>."
-#: index.docbook:956
-msgid "Unfortunately, this approach to composite identifiers means that a persistent object is its own identifier. There is no convenient \"handle\" other than the object itself. You must instantiate an instance of the persistent class itself and populate its identifier properties before you can <literal>load()</literal> the persistent state associated with a composite key. We call this approach an <emphasis>embedded</emphasis> composite identifier, and discourage it for serious applications."
-msgstr "<literal>unsaved-value</literal> (opcional - por defecto a <literal>null</literal>): Un valor de propiedad de versión que indica que una instancia está recién instanciada (sin guardar), distinguiéndola de instancias separadas que hayan sido guardadas o cargadas en una sesión previa. (<literal>undefined</literal> especifica que debe usarse el valor de la propiedad identificadora.)"
+#. Tag: para
+#: basic_mapping.xml:956
+#, no-c-format
+msgid ""
+"Unfortunately, this approach to composite identifiers means that a "
+"persistent object is its own identifier. There is no convenient \"handle\" "
+"other than the object itself. You must instantiate an instance of the "
+"persistent class itself and populate its identifier properties before you "
+"can <literal>load()</literal> the persistent state associated with a "
+"composite key. We call this approach an <emphasis>embedded</emphasis> "
+"composite identifier, and discourage it for serious applications."
+msgstr ""
+"Desafortunadamente, este enfoque de identificadores compuestos significa que "
+"un objeto persistente es su propio identificador. No existe otra \"asa\" "
+"conveniente más que el objeto mismo. Debes instanciar una instancia de la "
+"clase misma y poblar sus propiedades identificadoras antes que puedas "
+"<literal>load()</literal> el estado persistente asociado a una clave "
+"compuesta. Describiremos un enfoque mucho más conveniente donde el "
+"identificador compuesto está implementado como una clase separada en <xref "
+"linkend=\"components-compositeid\"/>. Los atributos descriptos debajo "
+"solamente se aplican a este enfoque alternativo:"
-#: index.docbook:965
-msgid "A second approach is what we call a <emphasis>mapped</emphasis> composite identifier, where the identifier properties named inside the <literal><composite-id></literal> element are duplicated on both the persistent class and a separate identifier class."
-msgstr "Note that <literal><timestamp></literal> is equivalent to <literal><version type=\"timestamp\"></literal>."
+#. Tag: para
+#: basic_mapping.xml:965
+#, no-c-format
+msgid ""
+"A second approach is what we call a <emphasis>mapped</emphasis> composite "
+"identifier, where the identifier properties named inside the <literal><"
+"composite-id></literal> element are duplicated on both the persistent "
+"class and a separate identifier class."
+msgstr ""
+"A second approach is what we call a <emphasis>mapped</emphasis> composite "
+"identifier, where the identifier properties named inside the <literal><"
+"composite-id></literal> element are duplicated on both the persistent "
+"class and a separate identifier class."
-#: index.docbook:971
+#. Tag: programlisting
+#: basic_mapping.xml:971
+#, no-c-format
msgid ""
- "<![CDATA[<composite-id class=\"MedicareId\" mapped=\"true\">\n"
- " <key-property name=\"medicareNumber\"/>\n"
- " <key-property name=\"dependent\"/>\n"
- "</composite-id>]]>"
-msgstr "property"
+"<![CDATA[<composite-id class=\"MedicareId\" mapped=\"true\">\n"
+" <key-property name=\"medicareNumber\"/>\n"
+" <key-property name=\"dependent\"/>\n"
+"</composite-id>]]>"
+msgstr ""
-#: index.docbook:973
-msgid "In this example, both the composite identifier class, <literal>MedicareId</literal>, and the entity class itself have properties named <literal>medicareNumber</literal> and <literal>dependent</literal>. The identifier class must override <literal>equals()</literal> and <literal>hashCode()</literal> and implement. <literal>Serializable</literal>. The disadvantage of this approach is quite obvious—code duplication."
-msgstr "El elemento <literal><property></literal> declara una propiedad persistente estilo JavaBean de la clase."
+#. Tag: para
+#: basic_mapping.xml:973
+#, no-c-format
+msgid ""
+"In this example, both the composite identifier class, <literal>MedicareId</"
+"literal>, and the entity class itself have properties named "
+"<literal>medicareNumber</literal> and <literal>dependent</literal>. The "
+"identifier class must override <literal>equals()</literal> and "
+"<literal>hashCode()</literal> and implement. <literal>Serializable</"
+"literal>. The disadvantage of this approach is quite obvious—code "
+"duplication."
+msgstr ""
+"In this example, both the composite identifier class, <literal>MedicareId</"
+"literal>, and the entity class itself have properties named "
+"<literal>medicareNumber</literal> and <literal>dependent</literal>. The "
+"identifier class must override <literal>equals()</literal> and "
+"<literal>hashCode()</literal> and implement. <literal>Serializable</"
+"literal>. The disadvantage of this approach is quite obvious—code "
+"duplication."
-#: index.docbook:982
-msgid "The following attributes are used to specify a mapped composite identifier:"
+#. Tag: para
+#: basic_mapping.xml:982
+#, no-c-format
+msgid ""
+"The following attributes are used to specify a mapped composite identifier:"
msgstr ""
- "<![CDATA[<property\n"
- " name=\"propertyName\"\n"
- " column=\"column_name\"\n"
- " type=\"typename\"\n"
- " update=\"true|false\"\n"
- " insert=\"true|false\"\n"
- " formula=\"arbitrary SQL expression\"\n"
- " access=\"field|property|ClassName\"\n"
- " lazy=\"true|false\"\n"
- " unique=\"true|false\"\n"
- " not-null=\"true|false\"\n"
- " optimistic-lock=\"true|false\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- " index=\"index_name\"\n"
- " unique_key=\"unique_key_id\"\n"
- " length=\"L\"\n"
- " precision=\"P\"\n"
- " scale=\"S\"\n"
- "/>]]>"
+"The following attributes are used to specify a mapped composite identifier:"
-#: index.docbook:988
-msgid "<literal>mapped</literal> (optional, defaults to <literal>false</literal>): indicates that a mapped composite identifier is used, and that the contained property mappings refer to both the entity class and the composite identifier class."
-msgstr "<literal>name</literal>: el nombre de la propiedad, con la letra inicial en minúsculas."
+#. Tag: para
+#: basic_mapping.xml:988
+#, no-c-format
+msgid ""
+"<literal>mapped</literal> (optional, defaults to <literal>false</literal>): "
+"indicates that a mapped composite identifier is used, and that the contained "
+"property mappings refer to both the entity class and the composite "
+"identifier class."
+msgstr ""
+"<literal>mapped</literal> (optional, defaults to <literal>false</literal>): "
+"indicates that a mapped composite identifier is used, and that the contained "
+"property mappings refer to both the entity class and the composite "
+"identifier class."
-#: index.docbook:996
-msgid "<literal>class</literal> (optional, but required for a mapped composite identifier): The class used as a composite identifier."
-msgstr "<literal>column</literal> (opcional - por defecto al nombre de la propiedad): el nombre de la columna de tabla de base de datos mapeada. Esto puede también ser especificado con elemento(s) <literal><column></literal> anidado(s)."
+#. Tag: para
+#: basic_mapping.xml:996
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional, but required for a mapped composite "
+"identifier): The class used as a composite identifier."
+msgstr ""
+"<literal>class</literal> (optional, but required for a mapped composite "
+"identifier): The class used as a composite identifier."
-#: index.docbook:1003
-msgid "We will describe a third, even more convenient approach where the composite identifier is implemented as a component class in <xref linkend=\"components-compositeid\"/>. The attributes described below apply only to this alternative approach:"
-msgstr "<literal>type</literal> (opcional): un nombre que indica el nobre Hibernate."
+#. Tag: para
+#: basic_mapping.xml:1003
+#, no-c-format
+msgid ""
+"We will describe a third, even more convenient approach where the composite "
+"identifier is implemented as a component class in <xref linkend=\"components-"
+"compositeid\"/>. The attributes described below apply only to this "
+"alternative approach:"
+msgstr ""
+"We will describe a third, even more convenient approach where the composite "
+"identifier is implemented as a component class in <xref linkend=\"components-"
+"compositeid\"/>. The attributes described below apply only to this "
+"alternative approach:"
-#: index.docbook:1011
-msgid "<literal>name</literal> (optional, required for this approach): A property of component type that holds the composite identifier (see chapter 9)."
-msgstr "<literal>update, insert</literal> (opcional - por defecto a <literal>true</literal>) : especifica que las columnas mapeadas deben ser incluídas en las sentencias SQL <literal>UPDATE</literal> y/o <literal>INSERT</literal> . Especificando ambas a <literal>false</literal> permite una propiedad \"derivada\" cuyo valor es inicializado desde alguna otra propiedad que mapee a la misma columna (o columnas) o por un disparador u otra aplicación."
+#. Tag: para
+#: basic_mapping.xml:1011
+#, no-c-format
+msgid ""
+"<literal>name</literal> (optional, required for this approach): A property "
+"of component type that holds the composite identifier (see chapter 9)."
+msgstr ""
+"<literal>name</literal> (opcional): Una propiedad de tipo componente que "
+"tiene el identificador compuesto (ver siguiente sección)."
-#: index.docbook:1023
-msgid "<literal>class</literal> (optional - defaults to the property type determined by reflection): The component class used as a composite identifier (see next section)."
-msgstr "<literal>access</literal> (opcional - por defecto a <literal>property</literal>): La estrategia que Hibernate debe usar para acceder al valor de la propiedad."
+#. Tag: para
+#: basic_mapping.xml:1023
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): The component class used as a composite "
+"identifier (see next section)."
+msgstr ""
+"<literal>class</literal> (opcional - por defecto al tipo de la propiedad "
+"determinado por reflección): La clase del componente usado como "
+"identificador compuesto (ver siguiente sección)."
-#: index.docbook:1030
-msgid "This third approach, an <emphasis>identifier component</emphasis> is the one we recommend for almost all applications."
-msgstr "<literal>lazy</literal> (opcional - por defecto a <literal>false</literal>): Especifica que esta propiedad debe ser traída perezosamente cuando la variable de instancia sea accedida por primera vez (requiere instrumentación en tiempo de compilación)."
+#. Tag: para
+#: basic_mapping.xml:1030
+#, no-c-format
+msgid ""
+"This third approach, an <emphasis>identifier component</emphasis> is the one "
+"we recommend for almost all applications."
+msgstr ""
+"This third approach, an <emphasis>identifier component</emphasis> is the one "
+"we recommend for almost all applications."
-#: index.docbook:1038
+#. Tag: title
+#: basic_mapping.xml:1038
+#, no-c-format
msgid "discriminator"
-msgstr "<literal>unique</literal> (opcional): Habilita la generació DDL de una restricción de unicidad para las columnas. Además, permite que ésta sea un blanco objetivo de una <literal>property-ref</literal>."
+msgstr "discriminator"
-#: index.docbook:1040
-msgid "The <literal><discriminator></literal> element is required for polymorphic persistence using the table-per-class-hierarchy mapping strategy and declares a discriminator column of the table. The discriminator column contains marker values that tell the persistence layer what subclass to instantiate for a particular row. A restricted set of types may be used: <literal>string</literal>, <literal>character</literal>, <literal>integer</literal>, <literal>byte</literal>, <literal>short</literal>, <literal>boolean</literal>, <literal>yes_no</literal>, <literal>true_false</literal>."
-msgstr "<literal>not-null</literal> (opcional): Habilita la generació DDL de una restricción de nulabilidad para las columnas."
+#. Tag: para
+#: basic_mapping.xml:1040
+#, no-c-format
+msgid ""
+"The <literal><discriminator></literal> element is required for "
+"polymorphic persistence using the table-per-class-hierarchy mapping strategy "
+"and declares a discriminator column of the table. The discriminator column "
+"contains marker values that tell the persistence layer what subclass to "
+"instantiate for a particular row. A restricted set of types may be used: "
+"<literal>string</literal>, <literal>character</literal>, <literal>integer</"
+"literal>, <literal>byte</literal>, <literal>short</literal>, "
+"<literal>boolean</literal>, <literal>yes_no</literal>, <literal>true_false</"
+"literal>."
+msgstr ""
+"El elemento <literal><discriminator></literal> es requerido para la "
+"persistencia polimórfica usando la estrategia de mapeo de tabla-por-"
+"jerarquía-de-clases y declara una columna discriminadora de la tabla. La "
+"columna discriminidora contiene valores de marca que le dicen a la capa de "
+"persistencia qué subclase instanciar para una fila en particular. Un "
+"conjunto restringido de tipos puede ser usado: <literal>string</literal>, "
+"<literal>character</literal>, <literal>integer</literal>, <literal>byte</"
+"literal>, <literal>short</literal>, <literal>boolean</literal>, "
+"<literal>yes_no</literal>, <literal>true_false</literal>."
-#: index.docbook:1058
+#. Tag: programlisting
+#: basic_mapping.xml:1058
+#, no-c-format
msgid ""
- "<![CDATA[<discriminator\n"
- " column=\"discriminator_column\"\n"
- " type=\"discriminator_type\"\n"
- " force=\"true|false\"\n"
- " insert=\"true|false\"\n"
- " formula=\"arbitrary sql expression\"\n"
- "/>]]>"
-msgstr "<literal>optimistic-lock</literal> (opcional - por defecto a <literal>true</literal>): Especifica que las actualizaciones a esta propiedad requieran o no de la obtención de un bloqueo optimista. En otras palabras, determina si debe ocurrir un incremento de versión cuando la propiedad este sucia (desactualizada)."
+"<![CDATA[<discriminator\n"
+" column=\"discriminator_column\"\n"
+" type=\"discriminator_type\"\n"
+" force=\"true|false\"\n"
+" insert=\"true|false\"\n"
+" formula=\"arbitrary sql expression\"\n"
+"/>]]>"
+msgstr ""
-#: index.docbook:1061
-msgid "<literal>column</literal> (optional - defaults to <literal>class</literal>) the name of the discriminator column."
-msgstr "<emphasis>typename</emphasis> puede ser:"
+#. Tag: para
+#: basic_mapping.xml:1061
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to <literal>class</literal>) "
+"the name of the discriminator column."
+msgstr ""
+"<literal>column</literal> (opcional - por defecto a <literal>class</"
+"literal>) el nombre de la columna discriminadora."
-#: index.docbook:1067
-msgid "<literal>type</literal> (optional - defaults to <literal>string</literal>) a name that indicates the Hibernate type"
-msgstr "El nombre de un tipo básico Hibernate (por ejemplo, <literal>integer, string, character, date, timestamp, float, binary, serializable, object, blob</literal>)."
+#. Tag: para
+#: basic_mapping.xml:1067
+#, no-c-format
+msgid ""
+"<literal>type</literal> (optional - defaults to <literal>string</literal>) a "
+"name that indicates the Hibernate type"
+msgstr ""
+"<literal>type</literal> (opcional - por defecto a <literal>string</literal>) "
+"un nombre que indique el tipo Hibernate"
-#: index.docbook:1073
-msgid "<literal>force</literal> (optional - defaults to <literal>false</literal>) \"force\" Hibernate to specify allowed discriminator values even when retrieving all instances of the root class."
-msgstr "El nombre de una clase Java de tipo básico (por ejemplo, <literal>int, float, char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</literal>)."
+#. Tag: para
+#: basic_mapping.xml:1073
+#, no-c-format
+msgid ""
+"<literal>force</literal> (optional - defaults to <literal>false</literal>) "
+"\"force\" Hibernate to specify allowed discriminator values even when "
+"retrieving all instances of the root class."
+msgstr ""
+"<literal>force</literal> (optconal - por defecto a <literal>false</literal>) "
+"\"fuerza\" a Hibernate a especificar valores discriminadores permitidos "
+"incluso cuando se recuperan todas las instancias de la clase raíz."
-#: index.docbook:1080
-msgid "<literal>insert</literal> (optional - defaults to <literal>true</literal>) set this to <literal>false</literal> if your discriminator column is also part of a mapped composite identifier. (Tells Hibernate to not include the column in SQL <literal>INSERT</literal>s.)"
-msgstr "El nombre de una clase Java serializable."
+#. Tag: para
+#: basic_mapping.xml:1080
+#, no-c-format
+msgid ""
+"<literal>insert</literal> (optional - defaults to <literal>true</literal>) "
+"set this to <literal>false</literal> if your discriminator column is also "
+"part of a mapped composite identifier. (Tells Hibernate to not include the "
+"column in SQL <literal>INSERT</literal>s.)"
+msgstr ""
+"<literal>insert</literal> (opcional - por defecto a <literal>true</literal>) "
+"establezca este a <literal>false</literal> si tu columna discriminadora es "
+"también parte de un identificador mapeado compuesto. (Le dice a Hibernate "
+"que no incluya la columna en los SQL <literal>INSERT</literal>s.)"
-#: index.docbook:1088
-msgid "<literal>formula</literal> (optional) an arbitrary SQL expression that is executed when a type has to be evaluated. Allows content-based discrimination."
-msgstr "El nombre de un tipo personalizado (por ejemplo, <literal>com.illflow.type.MyCustomType</literal>)."
+#. Tag: para
+#: basic_mapping.xml:1088
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional) an arbitrary SQL expression that is "
+"executed when a type has to be evaluated. Allows content-based "
+"discrimination."
+msgstr ""
+"<literal>formula</literal> (opcional) una expresión SQL arbitraria que es "
+"ejecutada cuando un tipo tenga que ser evaluado. Permite dicriminación "
+"basada en el contenido."
-#: index.docbook:1096
-msgid "Actual values of the discriminator column are specified by the <literal>discriminator-value</literal> attribute of the <literal><class></literal> and <literal><subclass></literal> elements."
-msgstr "Si no especificas un tipo, Hibernate usará reflección sobre la propiedad mencionada para deducir el tipo Hibernate correcto. Hibernate intentará interpretar el nombre de la clase de retorno del getter de la propiedad usando las reglas 2, 3 y 4 en ese orden. Sin embargo, esto no siempre suficiente. En ciertos casos, necesitarás aún el atributo <literal>type</literal>. (Por ejemplo, para distinguir entre <literal>Hibernate.DATE</literal> y <literal>Hibernate.TIMESTAMP</literal>, o especificar un tipo personalizado.)"
+#. Tag: para
+#: basic_mapping.xml:1096
+#, no-c-format
+msgid ""
+"Actual values of the discriminator column are specified by the "
+"<literal>discriminator-value</literal> attribute of the <literal><"
+"class></literal> and <literal><subclass></literal> elements."
+msgstr ""
+"Los valores reales de la columna discriminadora están especificados por el "
+"atributo <literal>discriminator-value</literal> de los elementos "
+"<literal><class></literal> y <literal><subclass></literal>."
-#: index.docbook:1102
-msgid "The <literal>force</literal> attribute is (only) useful if the table contains rows with \"extra\" discriminator values that are not mapped to a persistent class. This will not usually be the case."
-msgstr "El atributo <literal>access</literal> te deja controlar cómo Hibernate accederá a la propiedad en tiempo de ejecución. Por defecto, Hibernate llamará al par de getter/setter de la propiedad. Si especificas <literal>access=\"field\"</literal>, Hibernate se saltará el par get/set y accederá al campo directamente usando reflección. Puedes especificar tu propia estrategia de acceso a la propiedad mencionando una clase que implemente la interface <literal>org.hibernate.property.PropertyAccessor</literal>."
+#. Tag: para
+#: basic_mapping.xml:1102
+#, no-c-format
+msgid ""
+"The <literal>force</literal> attribute is (only) useful if the table "
+"contains rows with \"extra\" discriminator values that are not mapped to a "
+"persistent class. This will not usually be the case."
+msgstr ""
+"El atributo <literal>force</literal> es (sólo) útil si la tabla contiene "
+"filas con valores discriminadores \"extra\" que no están mapeados a la clase "
+"persistente. Generalmente este no es el caso."
-#: index.docbook:1108
-msgid "Using the <literal>formula</literal> attribute you can declare an arbitrary SQL expression that will be used to evaluate the type of a row:"
-msgstr "Una aspecto especialmente poderoso son las propiedades derivadas. Estas propiedades son por definición de sólo lectura, el valor de la propiedad es computado en tiempo de carga. Tu declaras la computación como una expresión SQL, y ésta se traduce a cláusula de subconsulta <literal>SELECT</literal> en la consulta SQL que cargue una instancia:"
+#. Tag: para
+#: basic_mapping.xml:1108
+#, no-c-format
+msgid ""
+"Using the <literal>formula</literal> attribute you can declare an arbitrary "
+"SQL expression that will be used to evaluate the type of a row:"
+msgstr ""
+"Usando el atributo <literal>formula</literal> puedes declarar una expresión "
+"SQL arbitraria que será usada para evaluar el tipo de una fila:"
-#: index.docbook:1113
+#. Tag: programlisting
+#: basic_mapping.xml:1113
+#, no-c-format
msgid ""
- "<![CDATA[<discriminator\n"
- " formula=\"case when CLASS_TYPE in ('a', 'b', 'c') then 0 else 1 end\"\n"
- " type=\"integer\"/>]]>"
+"<![CDATA[<discriminator\n"
+" formula=\"case when CLASS_TYPE in ('a', 'b', 'c') then 0 else 1 end\"\n"
+" type=\"integer\"/>]]>"
msgstr ""
- "<![CDATA[\n"
- "<property name=\"totalPrice\"\n"
- " formula=\"( SELECT SUM (li.quantity*p.price) FROM LineItem li, Product p\n"
- " WHERE li.productId = p.productId\n"
- " AND li.customerId = customerId\n"
- " AND li.orderNumber = orderNumber )\"/>]]>"
-#: index.docbook:1118
+#. Tag: title
+#: basic_mapping.xml:1118
+#, no-c-format
msgid "version (optional)"
-msgstr "Observa que puedes referenciar la propia tabla de las entidades sin declarar un alias o una columna particular (<literal>customerId</literal> en el ejemplo dado). Observa además que puedes usar el elemento anidado de mapeo <literal><formula></literal> si no te gusta usar el atributo."
+msgstr "version (opcional)"
-#: index.docbook:1120
-msgid "The <literal><version></literal> element is optional and indicates that the table contains versioned data. This is particularly useful if you plan to use <emphasis>long transactions</emphasis> (see below)."
-msgstr "many-to-one"
+#. Tag: para
+#: basic_mapping.xml:1120
+#, no-c-format
+msgid ""
+"The <literal><version></literal> element is optional and indicates "
+"that the table contains versioned data. This is particularly useful if you "
+"plan to use <emphasis>long transactions</emphasis> (see below)."
+msgstr ""
+"El elemento <literal><version></literal> es opcional e indica que la "
+"tabla contiene datos versionados. Esto es particularmente útil si planeas "
+"usar <emphasis>transacciones largas</emphasis> (ver debajo)."
-#: index.docbook:1136
+#. Tag: programlisting
+#: basic_mapping.xml:1136
+#, no-c-format
msgid ""
- "<![CDATA[<version\n"
- " column=\"version_column\"\n"
- " name=\"propertyName\"\n"
- " type=\"typename\"\n"
- " access=\"field|property|ClassName\"\n"
- " unsaved-value=\"null|negative|undefined\"\n"
- " generated=\"never|always\"\n"
- " insert=\"true|false\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- "/>]]>"
-msgstr "Una asociación ordinaria a otra clase persistente se declara usando el elemento <literal>many-to-one</literal>. El modelo relacional es una asociación muchos-a-uno: una clave foránea en una tabla está referenciando la columna (o columnas) de la clave primaria de la tabla objetivo."
+"<![CDATA[<version\n"
+" column=\"version_column\"\n"
+" name=\"propertyName\"\n"
+" type=\"typename\"\n"
+" access=\"field|property|ClassName\"\n"
+" unsaved-value=\"null|negative|undefined\"\n"
+" generated=\"never|always\"\n"
+" insert=\"true|false\"\n"
+" node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
+"/>]]>"
+msgstr ""
-#: index.docbook:1139
-msgid "<literal>column</literal> (optional - defaults to the property name): The name of the column holding the version number."
+#. Tag: para
+#: basic_mapping.xml:1139
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): The "
+"name of the column holding the version number."
msgstr ""
- "<![CDATA[<many-to-one\n"
- " name=\"propertyName\"\n"
- " column=\"column_name\"\n"
- " class=\"ClassName\"\n"
- " cascade=\"cascade_style\"\n"
- " fetch=\"join|select\"\n"
- " update=\"true|false\"\n"
- " insert=\"true|false\"\n"
- " property-ref=\"propertyNameFromAssociatedClass\"\n"
- " access=\"field|property|ClassName\"\n"
- " unique=\"true|false\"\n"
- " not-null=\"true|false\"\n"
- " optimistic-lock=\"true|false\"\n"
- " lazy=\"true|proxy|false\"\n"
- " not-found=\"ignore|exception\"\n"
- " entity-name=\"EntityName\"\n"
- " formula=\"cualquier expresión SQL\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- " embed-xml=\"true|false\"\n"
- " index=\"index_name\"\n"
- " unique_key=\"unique_key_id\"\n"
- " foreign-key=\"foreign_key_name\"\n"
- "/>]]>"
+"<literal>column</literal> (opcional - por defecto al nombre de la "
+"propiedad): El nombre de la columna que tiene el número de versión."
-#: index.docbook:1145
-msgid "<literal>name</literal>: The name of a property of the persistent class."
-msgstr "<literal>name</literal>: El nombre de la propiedad."
+#. Tag: para
+#: basic_mapping.xml:1145
+#, no-c-format
+msgid ""
+"<literal>name</literal>: The name of a property of the persistent class."
+msgstr ""
+"<literal>name</literal>: El nombre de una propiedad de la clase persistente."
-#: index.docbook:1150
-msgid "<literal>type</literal> (optional - defaults to <literal>integer</literal>): The type of the version number."
-msgstr "<literal>column</literal> (opcional): El nombre de la columna clave foránea. También puede ser especificado por uno o varios elementos anidados <literal><column></literal>."
+#. Tag: para
+#: basic_mapping.xml:1150
+#, no-c-format
+msgid ""
+"<literal>type</literal> (optional - defaults to <literal>integer</literal>): "
+"The type of the version number."
+msgstr ""
+"<literal>type</literal> (opcional - por defecto a <literal>integer</"
+"literal>): El tipo del nú.mero de vesión."
-#: index.docbook:1162
-msgid "<literal>unsaved-value</literal> (optional - defaults to <literal>undefined</literal>): A version property value that indicates that an instance is newly instantiated (unsaved), distinguishing it from detached instances that were saved or loaded in a previous session. (<literal>undefined</literal> specifies that the identifier property value should be used.)"
-msgstr "<literal>cascade</literal> (opcional): Especifica qué operaciones deben ir en cascada desde el objeto padre al objeto asociado"
+#. Tag: para
+#: basic_mapping.xml:1162
+#, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to <literal>undefined</"
+"literal>): A version property value that indicates that an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session. (<literal>undefined</literal> "
+"specifies that the identifier property value should be used.)"
+msgstr ""
+"<literal>unsaved-value</literal> (opcional - por defecto a "
+"<literal>undefined</literal>): Un valor de la propiedad de versión que "
+"indica que una instancia está recién instanciada (sin guardar), "
+"distinguiéndola de instancias separadas que fueran guardadas o cargadas en "
+"una sesión previa. (<literal>undefined</literal> especifica que debe usarse "
+"el valor de la propiedad identificadora.)"
-#: index.docbook:1171
-msgid "<literal>generated</literal> (optional - defaults to <literal>never</literal>): Specifies that this version property value is actually generated by the database. See the discussion of <xref linkend=\"mapping-generated\"/>generated properties."
-msgstr "<literal>fetch</literal> (opcional - por defecto a 1<literal>select</literal>): Escoge entre recuperación outer-join o por selección secuencial."
+#. Tag: para
+#: basic_mapping.xml:1171
+#, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): Specifies that this version property value is actually generated "
+"by the database. See the discussion of <link linkend=\"mapping-generated"
+"\">generated properties</link>."
+msgstr ""
+"UNTRANSLATED! <literal>generated</literal> (optional - defaults to "
+"<literal>never</literal>): Specifies that this version property value is "
+"actually generated by the database. See the discussion of <link linkend="
+"\"mapping-generated\">generated properties</link>."
-#: index.docbook:1178
-msgid "<literal>insert</literal> (optional - defaults to <literal>true</literal>): Specifies whether the version column should be included in SQL insert statements. May be set to <literal>false</literal> if and only if the database column is defined with a default value of <literal>0</literal>."
-msgstr "<literal>update, insert</literal> (opcional - por defecto a <literal>true</literal>) especifica que las columnas mapeadas deben ser incluídas en las sentencias SQL <literal>UPDATE</literal> y/o <literal>INSERT</literal>. Establecer ambas a <literal>false</literal> permite una asociación puramente \"derivada\" cuyo valor es inicializado desde alguna otra propiedad que mapea a las misma columna (o columnas), o por un disparador, o por otra aplicación."
+#. Tag: para
+#: basic_mapping.xml:1178
+#, no-c-format
+msgid ""
+"<literal>insert</literal> (optional - defaults to <literal>true</literal>): "
+"Specifies whether the version column should be included in SQL insert "
+"statements. May be set to <literal>false</literal> if and only if the "
+"database column is defined with a default value of <literal>0</literal>."
+msgstr ""
+"UNTRANSLATED! <literal>insert</literal> (optional - defaults to "
+"<literal>true</literal>): Specifies whether the version column should be "
+"included in SQL insert statements. May be set to <literal>false</literal> if "
+"and only if the database column is defined with a default value of "
+"<literal>0</literal>."
-#: index.docbook:1188
-msgid "Version numbers may be of Hibernate type <literal>long</literal>, <literal>integer</literal>, <literal>short</literal>, <literal>timestamp</literal> or <literal>calendar</literal>."
-msgstr "<literal>property-ref</literal>: (opcional) El nombre de la propiedad de la clase asociada que está unida a la clave foránea. Si no se especifica, se usa la clave primaria de la clase asociada."
+#. Tag: para
+#: basic_mapping.xml:1188
+#, no-c-format
+msgid ""
+"Version numbers may be of Hibernate type <literal>long</literal>, "
+"<literal>integer</literal>, <literal>short</literal>, <literal>timestamp</"
+"literal> or <literal>calendar</literal>."
+msgstr ""
+"Los números de versión deben ser de tipo <literal>long</literal>, "
+"<literal>integer</literal>, <literal>short</literal>, <literal>timestamp</"
+"literal> o <literal>calendar</literal> de Hibernate."
-#: index.docbook:1193
-msgid "A version or timestamp property should never be null for a detached instance, so Hibernate will detect any instance with a null version or timestamp as transient, no matter what other <literal>unsaved-value</literal> strategies are specified. <emphasis>Declaring a nullable version or timestamp property is an easy way to avoid any problems with transitive reattachment in Hibernate, especially useful for people using assigned identifiers or composite keys!</emphasis>"
-msgstr "<literal>access</literal> (opcional - por defecto a <literal>property</literal>): La estrategia que Hibernate debe usar para acceder al valor de la propiedad."
+#. Tag: para
+#: basic_mapping.xml:1193
+#, no-c-format
+msgid ""
+"A version or timestamp property should never be null for a detached "
+"instance, so Hibernate will detect any instance with a null version or "
+"timestamp as transient, no matter what other <literal>unsaved-value</"
+"literal> strategies are specified. <emphasis>Declaring a nullable version or "
+"timestamp property is an easy way to avoid any problems with transitive "
+"reattachment in Hibernate, especially useful for people using assigned "
+"identifiers or composite keys!</emphasis>"
+msgstr ""
+"Una propiedad de versión o timestamp nunca debe ser nula para una instancia "
+"separada, de modo que Hibernate detectará cualquier instancia con una "
+"versión o timestamp nulo como transitoria, sin importar qué otras "
+"estrategias <literal>unsaved-value</literal> se hayan especificado. "
+"<emphasis>Declarar una propiedad de versón o timestamp nulable es una forma "
+"fácil de evitar cualquier problema con la re-unión transitiva en Hibernate, "
+"especialmente útil para que usa identificadores asignados o claves "
+"compuestas!</emphasis>"
-#: index.docbook:1204
+#. Tag: title
+#: basic_mapping.xml:1204
+#, no-c-format
msgid "timestamp (optional)"
-msgstr "<literal>unique</literal> (opcional): Habilita la generación DDL de una restricción de unicidad para la columna de clave foránea. Además, permite que ésta sea el objetivo de una <literal>property-ref</literal>. Esto hace efectivamente la multiplicidad de la asociación uno a uno."
+msgstr "timestamp (opcional)"
-#: index.docbook:1206
-msgid "The optional <literal><timestamp></literal> element indicates that the table contains timestamped data. This is intended as an alternative to versioning. Timestamps are by nature a less safe implementation of optimistic locking. However, sometimes the application might use the timestamps in other ways."
-msgstr "<literal>not-null</literal> (opcional): Habilita la generación DDL de una restricción de nulabilidad para las columnas de clave foránea."
+#. Tag: para
+#: basic_mapping.xml:1206
+#, no-c-format
+msgid ""
+"The optional <literal><timestamp></literal> element indicates that the "
+"table contains timestamped data. This is intended as an alternative to "
+"versioning. Timestamps are by nature a less safe implementation of "
+"optimistic locking. However, sometimes the application might use the "
+"timestamps in other ways."
+msgstr ""
+"El elemento opcional <literal><timestamp></literal> indica que la "
+"tabla contiene datos con sellos de tiempo. Esto esta concebido como una "
+"alternativa al versionado. Los timestamps (sellos de tiempo) son por su "
+"naturaleza una implementación menos segura de bloqueo optimista. Sin "
+"embrago, a veces la aplicación puede usar los timestamps en otras formas."
-#: index.docbook:1222
+#. Tag: programlisting
+#: basic_mapping.xml:1222
+#, no-c-format
msgid ""
- "<![CDATA[<timestamp\n"
- " column=\"timestamp_column\"\n"
- " name=\"propertyName\"\n"
- " access=\"field|property|ClassName\"\n"
- " unsaved-value=\"null|undefined\"\n"
- " source=\"vm|db\"\n"
- " generated=\"never|always\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- "/>]]>"
-msgstr "<literal>optimistic-lock</literal> (opcional - por defecto a <literal>true</literal>): Especifica que las actualizaciones a esta propiedad requieran o no la obtención del bloqueo optimista. En otras palabras, determina si debe darse un incremento de versión cuando esta propiedad esté desactualizada."
+"<![CDATA[<timestamp\n"
+" column=\"timestamp_column\"\n"
+" name=\"propertyName\"\n"
+" access=\"field|property|ClassName\"\n"
+" unsaved-value=\"null|undefined\"\n"
+" source=\"vm|db\"\n"
+" generated=\"never|always\"\n"
+" node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
+"/>]]>"
+msgstr ""
-#: index.docbook:1225
-msgid "<literal>column</literal> (optional - defaults to the property name): The name of a column holding the timestamp."
-msgstr "<literal>lazy</literal> (opcional - por defecto a <literal>proxy</literal>): Por defecto, las asociaciones de punto único van con proxies. <literal>lazy=\"true\"</literal> especifica que esta propiedad debe ser traída perezosamente cuando la variable de instancia sea accedida por primera vez (requiere instrumentación del bytecode en tiempo de compilación). <literal>lazy=\"false\"</literal> especifica que la asociación siempre será recuperada tempranamente."
+#. Tag: para
+#: basic_mapping.xml:1225
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): The "
+"name of a column holding the timestamp."
+msgstr ""
+"<literal>column</literal> (opcional - por defecto al nombre de la "
+"propiedad): El nombre de una columna que tiene el timestamp."
-#: index.docbook:1231
-msgid "<literal>name</literal>: The name of a JavaBeans style property of Java type <literal>Date</literal> or <literal>Timestamp</literal> of the persistent class."
-msgstr "<literal>not-found</literal> (opcional - por defecto a <literal>exception</literal>): Especifica cómo deben manejarse las claves foráneas que referencien filas inexistentes: <literal>ignore</literal> tratará una fila perdida como una asociación nula."
+#. Tag: para
+#: basic_mapping.xml:1231
+#, no-c-format
+msgid ""
+"<literal>name</literal>: The name of a JavaBeans style property of Java type "
+"<literal>Date</literal> or <literal>Timestamp</literal> of the persistent "
+"class."
+msgstr ""
+"<literal>name</literal>: El nombre de una propiedad del estilo JavaBeans de "
+"tipo Java <literal>Date</literal> o <literal>Timestamp</literal> de la clase "
+"persistente."
-#: index.docbook:1244
-msgid "<literal>unsaved-value</literal> (optional - defaults to <literal>null</literal>): A version property value that indicates that an instance is newly instantiated (unsaved), distinguishing it from detached instances that were saved or loaded in a previous session. (<literal>undefined</literal> specifies that the identifier property value should be used.)"
-msgstr "<literal>formula</literal> (opcional): una expresión SQL que define el valor para una clave foránea <emphasis>computada</emphasis>."
+#. Tag: para
+#: basic_mapping.xml:1244
+#, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to <literal>null</"
+"literal>): A version property value that indicates that an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session. (<literal>undefined</literal> "
+"specifies that the identifier property value should be used.)"
+msgstr ""
+"<literal>unsaved-value</literal> (opcional - por defecto a <literal>null</"
+"literal>): Un valor de propiedad de versión que indica que una instancia "
+"está recién instanciada (sin guardar), distinguiéndola de instancias "
+"separadas que hayan sido guardadas o cargadas en una sesión previa. "
+"(<literal>undefined</literal> especifica que debe usarse el valor de la "
+"propiedad identificadora.)"
-#: index.docbook:1253
-msgid "<literal>source</literal> (optional - defaults to <literal>vm</literal>): From where should Hibernate retrieve the timestamp value? From the database, or from the current JVM? Database-based timestamps incur an overhead because Hibernate must hit the database in order to determine the \"next value\", but will be safer for use in clustered environments. Note also, that not all <literal>Dialect</literal>s are known to support retrieving of the database's current timestamp, while others might be unsafe for usage in locking due to lack of precision (Oracle 8 for example)."
-msgstr "Establecer el valor del atributo <literal>cascade</literal> a cualquier valor significativo distinto de <literal>none</literal> propagará ciertas operaciones al objeto asociado. Los valores significativos son los nombres de las operaciones básicas de Hibernate, <literal>persist, merge, delete, save-update, evict, replicate, lock, refresh</literal>, así como los valores especiales <literal>delete-orphan</literal> y <literal>all</literal> y combinaciones de operaciones separadas por coma, por ejemplo, <literal>cascade=\"persist,merge,evict\"</literal> o <literal>cascade=\"all,delete-orphan\"</literal>. Para una explicación completa, ver <xref linkend=\"objectstate-transitive\"/>."
+#. Tag: para
+#: basic_mapping.xml:1253
+#, no-c-format
+msgid ""
+"<literal>source</literal> (optional - defaults to <literal>vm</literal>): "
+"From where should Hibernate retrieve the timestamp value? From the database, "
+"or from the current JVM? Database-based timestamps incur an overhead because "
+"Hibernate must hit the database in order to determine the \"next value\", "
+"but will be safer for use in clustered environments. Note also, that not all "
+"<literal>Dialect</literal>s are known to support retrieving of the "
+"database's current timestamp, while others might be unsafe for usage in "
+"locking due to lack of precision (Oracle 8 for example)."
+msgstr ""
+"UNTRANSLATED! <literal>source</literal> (optional - defaults to <literal>vm</"
+"literal>): From where should Hibernate retrieve the timestamp value? From "
+"the database, or from the current JVM? Database-based timestamps incur an "
+"overhead because Hibernate must hit the database in order to determine the "
+"\"next value\", but will be safer for use in clustered environments. Note "
+"also, that not all <literal>Dialect</literal>s are known to support "
+"retrieving of the database's current timestamp, while others might be unsafe "
+"for usage in locking due to lack of precision (Oracle 8 for example)."
-#: index.docbook:1265
-msgid "<literal>generated</literal> (optional - defaults to <literal>never</literal>): Specifies that this timestamp property value is actually generated by the database. See the discussion of <xref linkend=\"mapping-generated\"/>generated properties."
-msgstr "Una declaración típica <literal>muchos-a-uno</literal> se parece a esto:"
+#. Tag: para
+#: basic_mapping.xml:1265
+#, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): Specifies that this timestamp property value is actually "
+"generated by the database. See the discussion of <link linkend=\"mapping-"
+"generated\">generated properties</link>."
+msgstr ""
+"UNTRANSLATED! <literal>generated</literal> (optional - defaults to "
+"<literal>never</literal>): Specifies that this timestamp property value is "
+"actually generated by the database. See the discussion of <link linkend="
+"\"mapping-generated\">generated properties</link>."
-#: index.docbook:1274
-msgid "Note that <literal><timestamp></literal> is equivalent to <literal><version type=\"timestamp\"></literal>. And <literal><timestamp source=\"db\"></literal> is equivalent to <literal><version type=\"dbtimestamp\"></literal>"
-msgstr "<![CDATA[<many-to-one name=\"product\" class=\"Product\" column=\"PRODUCT_ID\"/>]]>"
+#. Tag: para
+#: basic_mapping.xml:1274
+#, no-c-format
+msgid ""
+"Note that <literal><timestamp></literal> is equivalent to <literal><"
+"version type=\"timestamp\"></literal>. And <literal><timestamp source="
+"\"db\"></literal> is equivalent to <literal><version type=\"dbtimestamp"
+"\"></literal>"
+msgstr ""
+"Note that <literal><timestamp></literal> is equivalent to <literal><"
+"version type=\"timestamp\"></literal>."
-#: index.docbook:1284
+#. Tag: title
+#: basic_mapping.xml:1284
+#, no-c-format
msgid "property"
-msgstr "El atributo <literal>property-ref</literal> debe ser usado solamente para el mapeo de datos heredados donde una clave foránea referencia una clave única de la tabla asociada, distinta de la clave primaria. Este es un modelo relacional feo. Por ejemplo, supón que la clase <literal>Product</literal> tuviera un número único serial que no es la clave primaria. (El atributo <literal>unique</literal> controla la generación de DDL con la herramienta SchemaExport.)"
+msgstr "property"
-#: index.docbook:1286
-msgid "The <literal><property></literal> element declares a persistent, JavaBean style property of the class."
-msgstr "<![CDATA[<property name=\"serialNumber\" unique=\"true\" type=\"string\" column=\"SERIAL_NUMBER\"/>]]>"
+#. Tag: para
+#: basic_mapping.xml:1286
+#, no-c-format
+msgid ""
+"The <literal><property></literal> element declares a persistent, "
+"JavaBean style property of the class."
+msgstr ""
+"El elemento <literal><property></literal> declara una propiedad "
+"persistente estilo JavaBean de la clase."
-#: index.docbook:1308
+#. Tag: programlisting
+#: basic_mapping.xml:1308
+#, no-c-format
msgid ""
- "<![CDATA[<property\n"
- " name=\"propertyName\"\n"
- " column=\"column_name\"\n"
- " type=\"typename\"\n"
- " update=\"true|false\"\n"
- " insert=\"true|false\"\n"
- " formula=\"arbitrary SQL expression\"\n"
- " access=\"field|property|ClassName\"\n"
- " lazy=\"true|false\"\n"
- " unique=\"true|false\"\n"
- " not-null=\"true|false\"\n"
- " optimistic-lock=\"true|false\"\n"
- " generated=\"never|insert|always\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- " index=\"index_name\"\n"
- " unique_key=\"unique_key_id\"\n"
- " length=\"L\"\n"
- " precision=\"P\"\n"
- " scale=\"S\"\n"
- "/>]]>"
-msgstr "Entonces el mapeo para <literal>OrderItem</literal> debería usar:"
+"<![CDATA[<property\n"
+" name=\"propertyName\"\n"
+" column=\"column_name\"\n"
+" type=\"typename\"\n"
+" update=\"true|false\"\n"
+" insert=\"true|false\"\n"
+" formula=\"arbitrary SQL expression\"\n"
+" access=\"field|property|ClassName\"\n"
+" lazy=\"true|false\"\n"
+" unique=\"true|false\"\n"
+" not-null=\"true|false\"\n"
+" optimistic-lock=\"true|false\"\n"
+" generated=\"never|insert|always\"\n"
+" node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
+" index=\"index_name\"\n"
+" unique_key=\"unique_key_id\"\n"
+" length=\"L\"\n"
+" precision=\"P\"\n"
+" scale=\"S\"\n"
+"/>]]>"
+msgstr ""
-#: index.docbook:1311
-msgid "<literal>name</literal>: the name of the property, with an initial lowercase letter."
-msgstr "<![CDATA[<many-to-one name=\"product\" property-ref=\"serialNumber\" column=\"PRODUCT_SERIAL_NUMBER\"/>]]>"
+#. Tag: para
+#: basic_mapping.xml:1311
+#, no-c-format
+msgid ""
+"<literal>name</literal>: the name of the property, with an initial lowercase "
+"letter."
+msgstr ""
+"<literal>name</literal>: el nombre de la propiedad, con la letra inicial en "
+"minúsculas."
-#: index.docbook:1317
-msgid "<literal>column</literal> (optional - defaults to the property name): the name of the mapped database table column. This may also be specified by nested <literal><column></literal> element(s)."
-msgstr "Sin embargo, esto no esta ciertamente alentado."
+#. Tag: para
+#: basic_mapping.xml:1317
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of the mapped database table column. This may also be specified by "
+"nested <literal><column></literal> element(s)."
+msgstr ""
+"<literal>column</literal> (opcional - por defecto al nombre de la "
+"propiedad): el nombre de la columna de tabla de base de datos mapeada. Esto "
+"puede también ser especificado con elemento(s) <literal><column></"
+"literal> anidado(s)."
-#: index.docbook:1324
-msgid "<literal>type</literal> (optional): a name that indicates the Hibernate type."
-msgstr "Si la clave única referenciada abarca múltiples propiedades de la entidad asociada, debes mapear las propiedades dentro de un elemento <literal><properties></literal>."
+#. Tag: para
+#: basic_mapping.xml:1324
+#, no-c-format
+msgid ""
+"<literal>type</literal> (optional): a name that indicates the Hibernate type."
+msgstr ""
+"<literal>type</literal> (opcional): un nombre que indica el nobre Hibernate."
-#: index.docbook:1329
-msgid "<literal>update, insert</literal> (optional - defaults to <literal>true</literal>) : specifies that the mapped columns should be included in SQL <literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. Setting both to <literal>false</literal> allows a pure \"derived\" property whose value is initialized from some other property that maps to the same colum(s) or by a trigger or other application."
-msgstr "one-to-one"
+#. Tag: para
+#: basic_mapping.xml:1329
+#, no-c-format
+msgid ""
+"<literal>update, insert</literal> (optional - defaults to <literal>true</"
+"literal>) : specifies that the mapped columns should be included in SQL "
+"<literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. "
+"Setting both to <literal>false</literal> allows a pure \"derived\" property "
+"whose value is initialized from some other property that maps to the same "
+"colum(s) or by a trigger or other application."
+msgstr ""
+"<literal>update, insert</literal> (opcional - por defecto a <literal>true</"
+"literal>) : especifica que las columnas mapeadas deben ser incluídas en las "
+"sentencias SQL <literal>UPDATE</literal> y/o <literal>INSERT</literal> . "
+"Especificando ambas a <literal>false</literal> permite una propiedad "
+"\"derivada\" cuyo valor es inicializado desde alguna otra propiedad que "
+"mapee a la misma columna (o columnas) o por un disparador u otra aplicación."
-#: index.docbook:1338
-msgid "<literal>formula</literal> (optional): an SQL expression that defines the value for a <emphasis>computed</emphasis> property. Computed properties do not have a column mapping of their own."
-msgstr "Una asociación uno-a-uno a otra clase persistente se declara usando un elemento <literal>one-to-one</literal>."
+#. Tag: para
+#: basic_mapping.xml:1338
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL expression that defines the "
+"value for a <emphasis>computed</emphasis> property. Computed properties do "
+"not have a column mapping of their own."
+msgstr ""
+"<literal>formula</literal> (opcional): una expresión SQL que define el valor "
+"para una propiedad <emphasis>computada</emphasis>. Las propiedades "
+"computadas no tienen una columna mapeada propia."
-#: index.docbook:1351
-msgid "<literal>lazy</literal> (optional - defaults to <literal>false</literal>): Specifies that this property should be fetched lazily when the instance variable is first accessed (requires build-time bytecode instrumentation)."
-msgstr "<literal>name</literal>: El nombre de la propiedad."
+#. Tag: para
+#: basic_mapping.xml:1351
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>false</literal>): "
+"Specifies that this property should be fetched lazily when the instance "
+"variable is first accessed (requires build-time bytecode instrumentation)."
+msgstr ""
+"<literal>lazy</literal> (opcional - por defecto a <literal>false</literal>): "
+"Especifica que esta propiedad debe ser traída perezosamente cuando la "
+"variable de instancia sea accedida por primera vez (requiere instrumentación "
+"en tiempo de compilación)."
-#: index.docbook:1358
-msgid "<literal>unique</literal> (optional): Enable the DDL generation of a unique constraint for the columns. Also, allow this to be the target of a <literal>property-ref</literal>."
-msgstr "<literal>class</literal> (opcional - por defecto al tipo de la propiedad determinado por reflección): El nombre de la clase asociada."
+#. Tag: para
+#: basic_mapping.xml:1358
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): Enable the DDL generation of a unique "
+"constraint for the columns. Also, allow this to be the target of a "
+"<literal>property-ref</literal>."
+msgstr ""
+"<literal>unique</literal> (opcional): Habilita la generació DDL de una "
+"restricción de unicidad para las columnas. Además, permite que ésta sea un "
+"blanco objetivo de una <literal>property-ref</literal>."
-#: index.docbook:1365
-msgid "<literal>not-null</literal> (optional): Enable the DDL generation of a nullability constraint for the columns."
-msgstr "<literal>cascade</literal> (opcional) especifica qué operaciones deben ir en cascada desde el objeto padre al objeto asociado."
+#. Tag: para
+#: basic_mapping.xml:1365
+#, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): Enable the DDL generation of a "
+"nullability constraint for the columns."
+msgstr ""
+"<literal>not-null</literal> (opcional): Habilita la generació DDL de una "
+"restricción de nulabilidad para las columnas."
-#: index.docbook:1371
-msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): Specifies that updates to this property do or do not require acquisition of the optimistic lock. In other words, determines if a version increment should occur when this property is dirty."
-msgstr "<literal>constrained</literal> (opcional) especifica que una restricción de clave foránea de la tabla mapeada referencia a la tabla de la clase asociada. Esta opción afecta el orden en que van en cascada <literal>save()</literal> y <literal>delete()</literal>, y determina cuándo la asociación pueden ser virtualizados por proxies (es también usado por la herramienta de exportación de esquemas)."
+#. Tag: para
+#: basic_mapping.xml:1371
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): Specifies that updates to this property do or do not require "
+"acquisition of the optimistic lock. In other words, determines if a version "
+"increment should occur when this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional - por defecto a <literal>true</"
+"literal>): Especifica que las actualizaciones a esta propiedad requieran o "
+"no de la obtención de un bloqueo optimista. En otras palabras, determina si "
+"debe ocurrir un incremento de versión cuando la propiedad este sucia "
+"(desactualizada)."
-#: index.docbook:1379
-msgid "<literal>generated</literal> (optional - defaults to <literal>never</literal>): Specifies that this property value is actually generated by the database. See the discussion of <xref linkend=\"mapping-generated\"/>generated properties."
-msgstr "<literal>fetch</literal> (opcional - por defecto <literal>select</literal>): Elige entre recuperación outer-join o recuperación por consulta secuencial."
+#. Tag: para
+#: basic_mapping.xml:1379
+#, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): Specifies that this property value is actually generated by the "
+"database. See the discussion of <link linkend=\"mapping-generated"
+"\">generated properties</link>."
+msgstr ""
+"UNTRANSLATED! <literal>generated</literal> (optional - defaults to "
+"<literal>never</literal>): Specifies that this property value is actually "
+"generated by the database. See the discussion of <link linkend=\"mapping-"
+"generated\">generated properties</link>."
-#: index.docbook:1388
+#. Tag: para
+#: basic_mapping.xml:1388
+#, no-c-format
msgid "<emphasis>typename</emphasis> could be:"
-msgstr "<literal>property-ref</literal>: (opcional) El nombre de una propiedad de la clase asociada que esté unida a la clave primaria de esta clase. Si no se especifica, se usa la clave primaria de la clase asociada."
+msgstr "<emphasis>typename</emphasis> puede ser:"
-#: index.docbook:1394
-msgid "The name of a Hibernate basic type (eg. <literal>integer, string, character, date, timestamp, float, binary, serializable, object, blob</literal>)."
-msgstr "<literal>access</literal> (opcional - por defecto a <literal>property</literal>): La estrategia que Hibernate debe usar para acceder al valor de la propiedad."
+#. Tag: para
+#: basic_mapping.xml:1394
+#, no-c-format
+msgid ""
+"The name of a Hibernate basic type (eg. <literal>integer, string, character, "
+"date, timestamp, float, binary, serializable, object, blob</literal>)."
+msgstr ""
+"El nombre de un tipo básico Hibernate (por ejemplo, <literal>integer, "
+"string, character, date, timestamp, float, binary, serializable, object, "
+"blob</literal>)."
-#: index.docbook:1400
-msgid "The name of a Java class with a default basic type (eg. <literal>int, float, char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</literal>)."
-msgstr "<literal>formula</literal> (opcional): Casi todas las asociaciones uno-a-uno mapean a la clave primaria de la entidad propietaria. En el raro caso en que este no sea el caso, puedes especificar alguna otra columna, o columnas, o expresión para unir usando una fórmula SQL. (Para un ejemplo ver <literal>org.hibernate.test.onetooneformula</literal>)."
+#. Tag: para
+#: basic_mapping.xml:1400
+#, no-c-format
+msgid ""
+"The name of a Java class with a default basic type (eg. <literal>int, float, "
+"char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</"
+"literal>)."
+msgstr ""
+"El nombre de una clase Java de tipo básico (por ejemplo, <literal>int, "
+"float, char, java.lang.String, java.util.Date, java.lang.Integer, java.sql."
+"Clob</literal>)."
-#: index.docbook:1406
+#. Tag: para
+#: basic_mapping.xml:1406
+#, no-c-format
msgid "The name of a serializable Java class."
-msgstr "<literal>lazy</literal> (opcional - por defecto a <literal>proxy</literal>): Por defecto, las asociaciones de punto único van con proxies. <literal>lazy=\"true\"</literal> especifica que esta propiedad debe ser traída perezosamente cuando la variable de instancia sea accedida por primera vez (requiere instrumentación del bytecode en tiempo de compilación). <literal>lazy=\"false\"</literal> especifica que la asociación siempre será recuperada tempranamente. <emphasis>Observa que si <literal>constrained=\"false\"</literal>, la aplicación de proxies es imposible e Hibernate traerá temprano la asociación!</emphasis>"
+msgstr "El nombre de una clase Java serializable."
-#: index.docbook:1411
-msgid "The class name of a custom type (eg. <literal>com.illflow.type.MyCustomType</literal>)."
-msgstr "Hay dos variedades de asociaciones uno-a-uno:"
+#. Tag: para
+#: basic_mapping.xml:1411
+#, no-c-format
+msgid ""
+"The class name of a custom type (eg. <literal>com.illflow.type.MyCustomType</"
+"literal>)."
+msgstr ""
+"El nombre de un tipo personalizado (por ejemplo, <literal>com.illflow.type."
+"MyCustomType</literal>)."
-#: index.docbook:1417
-msgid "If you do not specify a type, Hibernate will use reflection upon the named property to take a guess at the correct Hibernate type. Hibernate will try to interpret the name of the return class of the property getter using rules 2, 3, 4 in that order. However, this is not always enough. In certain cases you will still need the <literal>type</literal> attribute. (For example, to distinguish between <literal>Hibernate.DATE</literal> and <literal>Hibernate.TIMESTAMP</literal>, or to specify a custom type.)"
-msgstr "asociaciones de clave primaria"
+#. Tag: para
+#: basic_mapping.xml:1417
+#, no-c-format
+msgid ""
+"If you do not specify a type, Hibernate will use reflection upon the named "
+"property to take a guess at the correct Hibernate type. Hibernate will try "
+"to interpret the name of the return class of the property getter using rules "
+"2, 3, 4 in that order. However, this is not always enough. In certain cases "
+"you will still need the <literal>type</literal> attribute. (For example, to "
+"distinguish between <literal>Hibernate.DATE</literal> and <literal>Hibernate."
+"TIMESTAMP</literal>, or to specify a custom type.)"
+msgstr ""
+"Si no especificas un tipo, Hibernate usará reflección sobre la propiedad "
+"mencionada para deducir el tipo Hibernate correcto. Hibernate intentará "
+"interpretar el nombre de la clase de retorno del getter de la propiedad "
+"usando las reglas 2, 3 y 4 en ese orden. Sin embargo, esto no siempre "
+"suficiente. En ciertos casos, necesitarás aún el atributo <literal>type</"
+"literal>. (Por ejemplo, para distinguir entre <literal>Hibernate.DATE</"
+"literal> y <literal>Hibernate.TIMESTAMP</literal>, o especificar un tipo "
+"personalizado.)"
-#: index.docbook:1427
-msgid "The <literal>access</literal> attribute lets you control how Hibernate will access the property at runtime. By default, Hibernate will call the property get/set pair. If you specify <literal>access=\"field\"</literal>, Hibernate will bypass the get/set pair and access the field directly, using reflection. You may specify your own strategy for property access by naming a class that implements the interface <literal>org.hibernate.property.PropertyAccessor</literal>."
-msgstr "asociaciones de clave foráneas única"
+#. Tag: para
+#: basic_mapping.xml:1427
+#, no-c-format
+msgid ""
+"The <literal>access</literal> attribute lets you control how Hibernate will "
+"access the property at runtime. By default, Hibernate will call the property "
+"get/set pair. If you specify <literal>access=\"field\"</literal>, Hibernate "
+"will bypass the get/set pair and access the field directly, using "
+"reflection. You may specify your own strategy for property access by naming "
+"a class that implements the interface <literal>org.hibernate.property."
+"PropertyAccessor</literal>."
+msgstr ""
+"El atributo <literal>access</literal> te deja controlar cómo Hibernate "
+"accederá a la propiedad en tiempo de ejecución. Por defecto, Hibernate "
+"llamará al par de getter/setter de la propiedad. Si especificas "
+"<literal>access=\"field\"</literal>, Hibernate se saltará el par get/set y "
+"accederá al campo directamente usando reflección. Puedes especificar tu "
+"propia estrategia de acceso a la propiedad mencionando una clase que "
+"implemente la interface <literal>org.hibernate.property.PropertyAccessor</"
+"literal>."
-#: index.docbook:1436
-msgid "An especially powerful feature are derived properties. These properties are by definition read-only, the property value is computed at load time. You declare the computation as a SQL expression, this translates to a <literal>SELECT</literal> clause subquery in the SQL query that loads an instance:"
-msgstr "Las asociaciones de clave primaria no necesitan una columna de tabla extra; si dos filas están relacionadas por la asociación entonces las dos filas de tablas comparten el mismo valor de clave primaria. Por lo tanto, si quieres que dos objetos estén relacionados por una asociación de clave primaria, debes asegurarte que se les asigne el mismo valor de identificador!"
+#. Tag: para
+#: basic_mapping.xml:1436
+#, no-c-format
+msgid ""
+"An especially powerful feature are derived properties. These properties are "
+"by definition read-only, the property value is computed at load time. You "
+"declare the computation as a SQL expression, this translates to a "
+"<literal>SELECT</literal> clause subquery in the SQL query that loads an "
+"instance:"
+msgstr ""
+"Una aspecto especialmente poderoso son las propiedades derivadas. Estas "
+"propiedades son por definición de sólo lectura, el valor de la propiedad es "
+"computado en tiempo de carga. Tu declaras la computación como una expresión "
+"SQL, y ésta se traduce a cláusula de subconsulta <literal>SELECT</literal> "
+"en la consulta SQL que cargue una instancia:"
-#: index.docbook:1443
+#. Tag: programlisting
+#: basic_mapping.xml:1443
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "<property name=\"totalPrice\"\n"
- " formula=\"( SELECT SUM (li.quantity*p.price) FROM LineItem li, Product p\n"
- " WHERE li.productId = p.productId\n"
- " AND li.customerId = customerId\n"
- " AND li.orderNumber = orderNumber )\"/>]]>"
-msgstr "Para una asociación de clave primaria, añade los siguientes mapeos a <literal>Employee</literal> y <literal>Person</literal>, respectivamente."
+"<![CDATA[\n"
+"<property name=\"totalPrice\"\n"
+" formula=\"( SELECT SUM (li.quantity*p.price) FROM LineItem li, Product "
+"p\n"
+" WHERE li.productId = p.productId\n"
+" AND li.customerId = customerId\n"
+" AND li.orderNumber = orderNumber )\"/>]]>"
+msgstr ""
-#: index.docbook:1445
-msgid "Note that you can reference the entities own table by not declaring an alias on a particular column (<literal>customerId</literal> in the given example). Also note that you can use the nested <literal><formula></literal> mapping element if you don't like to use the attribute."
-msgstr "<![CDATA[<one-to-one name=\"person\" class=\"Person\"/>]]>"
+#. Tag: para
+#: basic_mapping.xml:1445
+#, no-c-format
+msgid ""
+"Note that you can reference the entities own table by not declaring an alias "
+"on a particular column (<literal>customerId</literal> in the given example). "
+"Also note that you can use the nested <literal><formula></literal> "
+"mapping element if you don't like to use the attribute."
+msgstr ""
+"Observa que puedes referenciar la propia tabla de las entidades sin declarar "
+"un alias o una columna particular (<literal>customerId</literal> en el "
+"ejemplo dado). Observa además que puedes usar el elemento anidado de mapeo "
+"<literal><formula></literal> si no te gusta usar el atributo."
-#: index.docbook:1455
+#. Tag: title
+#: basic_mapping.xml:1455
+#, no-c-format
msgid "many-to-one"
-msgstr "<![CDATA[<one-to-one name=\"employee\" class=\"Employee\" constrained=\"true\"/>]]>"
+msgstr "many-to-one"
-#: index.docbook:1457
-msgid "An ordinary association to another persistent class is declared using a <literal>many-to-one</literal> element. The relational model is a many-to-one association: a foreign key in one table is referencing the primary key column(s) of the target table."
-msgstr "Ahora debemos asegurarnos que las claves primarias de las filas relacionadas en las tablas PERSON y EMPLOYEE sean iguales. Usamos una estrategia especial de generación de identificador de Hibernate llamada <literal>foreign</literal>:"
+#. Tag: para
+#: basic_mapping.xml:1457
+#, no-c-format
+msgid ""
+"An ordinary association to another persistent class is declared using a "
+"<literal>many-to-one</literal> element. The relational model is a many-to-"
+"one association: a foreign key in one table is referencing the primary key "
+"column(s) of the target table."
+msgstr ""
+"Una asociación ordinaria a otra clase persistente se declara usando el "
+"elemento <literal>many-to-one</literal>. El modelo relacional es una "
+"asociación muchos-a-uno: una clave foránea en una tabla está referenciando "
+"la columna (o columnas) de la clave primaria de la tabla objetivo."
-#: index.docbook:1485
+#. Tag: programlisting
+#: basic_mapping.xml:1485
+#, no-c-format
msgid ""
- "<![CDATA[<many-to-one\n"
- " name=\"propertyName\"\n"
- " column=\"column_name\"\n"
- " class=\"ClassName\"\n"
- " cascade=\"cascade_style\"\n"
- " fetch=\"join|select\"\n"
- " update=\"true|false\"\n"
- " insert=\"true|false\"\n"
- " property-ref=\"propertyNameFromAssociatedClass\"\n"
- " access=\"field|property|ClassName\"\n"
- " unique=\"true|false\"\n"
- " not-null=\"true|false\"\n"
- " optimistic-lock=\"true|false\"\n"
- " lazy=\"proxy|no-proxy|false\"\n"
- " not-found=\"ignore|exception\"\n"
- " entity-name=\"EntityName\"\n"
- " formula=\"arbitrary SQL expression\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- " embed-xml=\"true|false\"\n"
- " index=\"index_name\"\n"
- " unique_key=\"unique_key_id\"\n"
- " foreign-key=\"foreign_key_name\"\n"
- "/>]]>"
+"<![CDATA[<many-to-one\n"
+" name=\"propertyName\"\n"
+" column=\"column_name\"\n"
+" class=\"ClassName\"\n"
+" cascade=\"cascade_style\"\n"
+" fetch=\"join|select\"\n"
+" update=\"true|false\"\n"
+" insert=\"true|false\"\n"
+" property-ref=\"propertyNameFromAssociatedClass\"\n"
+" access=\"field|property|ClassName\"\n"
+" unique=\"true|false\"\n"
+" not-null=\"true|false\"\n"
+" optimistic-lock=\"true|false\"\n"
+" lazy=\"proxy|no-proxy|false\"\n"
+" not-found=\"ignore|exception\"\n"
+" entity-name=\"EntityName\"\n"
+" formula=\"arbitrary SQL expression\"\n"
+" node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
+" embed-xml=\"true|false\"\n"
+" index=\"index_name\"\n"
+" unique_key=\"unique_key_id\"\n"
+" foreign-key=\"foreign_key_name\"\n"
+"/>]]>"
msgstr ""
- "<![CDATA[<class name=\"person\" table=\"PERSON\">\n"
- " <id name=\"id\" column=\"PERSON_ID\">\n"
- " <generator class=\"foreign\">\n"
- " <param name=\"property\">employee</param>\n"
- " </generator>\n"
- " </id>\n"
- " ...\n"
- " <one-to-one name=\"employee\"\n"
- " class=\"Employee\"\n"
- " constrained=\"true\"/>\n"
- "</class>]]>"
-#: index.docbook:1488, index.docbook:1669, index.docbook:1855
+#. Tag: para
+#: basic_mapping.xml:1488 basic_mapping.xml:1669 basic_mapping.xml:1855
+#, no-c-format
msgid "<literal>name</literal>: The name of the property."
-msgstr "A una instancia recién salvada de <literal>Person</literal> se le asigna entonces el mismo valor de clave primaria con que la instancia <literal>Employee</literal> referida por la propiedad <literal>employee</literal> de esta <literal>Person</literal>."
+msgstr "<literal>name</literal>: El nombre de la propiedad."
-#: index.docbook:1493, index.docbook:2284
-msgid "<literal>column</literal> (optional): The name of the foreign key column. This may also be specified by nested <literal><column></literal> element(s)."
-msgstr "Alternativamente, una clave foránea con una restricción de unicidad, desde <literal>Employee</literal> a <literal>Person</literal>, puede ser expresada como:"
+#. Tag: para
+#: basic_mapping.xml:1493 basic_mapping.xml:2284
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional): The name of the foreign key column. "
+"This may also be specified by nested <literal><column></literal> "
+"element(s)."
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>column</literal> (opcional): El nombre de la columna clave foránea. "
+"También puede ser especificado por uno o varios elementos anidados "
+"<literal><column></literal>.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>column</literal> (opcional): El nombre de columna de la clave "
+"foránea. Puede ser también especificado por elemento(s) anidado(s) "
+"<literal><column></literal>."
-#: index.docbook:1500, index.docbook:1674
-msgid "<literal>class</literal> (optional - defaults to the property type determined by reflection): The name of the associated class."
-msgstr "<![CDATA[<many-to-one name=\"person\" class=\"Person\" column=\"PERSON_ID\" unique=\"true\"/>]]>"
+#. Tag: para
+#: basic_mapping.xml:1500 basic_mapping.xml:1674
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): The name of the associated class."
+msgstr ""
+"<literal>class</literal> (opcional - por defecto al tipo de la propiedad "
+"determinado por reflección): El nombre de la clase asociada."
-#: index.docbook:1506
-msgid "<literal>cascade</literal> (optional): Specifies which operations should be cascaded from the parent object to the associated object."
-msgstr "Y esta asociación puede hacerse bidireccional agregando lo siguiente al mapeo de <literal>Person</literal> :"
+#. Tag: para
+#: basic_mapping.xml:1506
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional): Specifies which operations should be "
+"cascaded from the parent object to the associated object."
+msgstr ""
+"<literal>cascade</literal> (opcional): Especifica qué operaciones deben ir "
+"en cascada desde el objeto padre al objeto asociado"
-#: index.docbook:1512, index.docbook:1695
-msgid "<literal>fetch</literal> (optional - defaults to <literal>select</literal>): Chooses between outer-join fetching or sequential select fetching."
-msgstr "<![CDATA[<one-to-one name=\"employee\" class=\"Employee\" property-ref=\"person\"/>]]>"
+#. Tag: para
+#: basic_mapping.xml:1512 basic_mapping.xml:1695
+#, fuzzy, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>select</literal>): "
+"Chooses between outer-join fetching or sequential select fetching."
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>fetch</literal> (opcional - por defecto a 1<literal>select</"
+"literal>): Escoge entre recuperación outer-join o por selección secuencial.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>fetch</literal> (opcional - por defecto <literal>select</literal>): "
+"Elige entre recuperación outer-join o recuperación por consulta secuencial."
-#: index.docbook:1518
-msgid "<literal>update, insert</literal> (optional - defaults to <literal>true</literal>) specifies that the mapped columns should be included in SQL <literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. Setting both to <literal>false</literal> allows a pure \"derived\" association whose value is initialized from some other property that maps to the same colum(s) or by a trigger or other application."
-msgstr "natural-id"
+#. Tag: para
+#: basic_mapping.xml:1518
+#, no-c-format
+msgid ""
+"<literal>update, insert</literal> (optional - defaults to <literal>true</"
+"literal>) specifies that the mapped columns should be included in SQL "
+"<literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. "
+"Setting both to <literal>false</literal> allows a pure \"derived\" "
+"association whose value is initialized from some other property that maps to "
+"the same colum(s) or by a trigger or other application."
+msgstr ""
+"<literal>update, insert</literal> (opcional - por defecto a <literal>true</"
+"literal>) especifica que las columnas mapeadas deben ser incluídas en las "
+"sentencias SQL <literal>UPDATE</literal> y/o <literal>INSERT</literal>. "
+"Establecer ambas a <literal>false</literal> permite una asociación puramente "
+"\"derivada\" cuyo valor es inicializado desde alguna otra propiedad que "
+"mapea a las misma columna (o columnas), o por un disparador, o por otra "
+"aplicación."
-#: index.docbook:1527
-msgid "<literal>property-ref</literal>: (optional) The name of a property of the associated class that is joined to this foreign key. If not specified, the primary key of the associated class is used."
+#. Tag: para
+#: basic_mapping.xml:1527
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal>: (optional) The name of a property of the "
+"associated class that is joined to this foreign key. If not specified, the "
+"primary key of the associated class is used."
msgstr ""
- "<![CDATA[<natural-id mutable=\"true|false\"/>\n"
- " <property ... />\n"
- " <many-to-one ... />\n"
- " ......\n"
- "</natural-id>]]>"
+"<literal>property-ref</literal>: (opcional) El nombre de la propiedad de la "
+"clase asociada que está unida a la clave foránea. Si no se especifica, se "
+"usa la clave primaria de la clase asociada."
-#: index.docbook:1540
-msgid "<literal>unique</literal> (optional): Enable the DDL generation of a unique constraint for the foreign-key column. Also, allow this to be the target of a <literal>property-ref</literal>. This makes the association multiplicity effectively one to one."
-msgstr "Recomendamos fuertemente que implementes <literal>equals()</literal> y <literal>hashCode()</literal> para comparar las propiedades de clave natural de la entidad."
+#. Tag: para
+#: basic_mapping.xml:1540
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): Enable the DDL generation of a unique "
+"constraint for the foreign-key column. Also, allow this to be the target of "
+"a <literal>property-ref</literal>. This makes the association multiplicity "
+"effectively one to one."
+msgstr ""
+"<literal>unique</literal> (opcional): Habilita la generación DDL de una "
+"restricción de unicidad para la columna de clave foránea. Además, permite "
+"que ésta sea el objetivo de una <literal>property-ref</literal>. Esto hace "
+"efectivamente la multiplicidad de la asociación uno a uno."
-#: index.docbook:1548
-msgid "<literal>not-null</literal> (optional): Enable the DDL generation of a nullability constraint for the foreign key columns."
-msgstr "Este mapeo no está concebido para usar con entidades con claves primarias naturales."
+#. Tag: para
+#: basic_mapping.xml:1548
+#, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): Enable the DDL generation of a "
+"nullability constraint for the foreign key columns."
+msgstr ""
+"<literal>not-null</literal> (opcional): Habilita la generación DDL de una "
+"restricción de nulabilidad para las columnas de clave foránea."
-#: index.docbook:1554
-msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): Specifies that updates to this property do or do not require acquisition of the optimistic lock. In other words, dertermines if a version increment should occur when this property is dirty."
-msgstr "<literal>mutable</literal> (opcional, por defecto a <literal>false</literal>): Por defecto, se asume que las propiedades de identificadores naturales son inmutables (constantes)."
+#. Tag: para
+#: basic_mapping.xml:1554
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): Specifies that updates to this property do or do not require "
+"acquisition of the optimistic lock. In other words, dertermines if a version "
+"increment should occur when this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional - por defecto a <literal>true</"
+"literal>): Especifica que las actualizaciones a esta propiedad requieran o "
+"no la obtención del bloqueo optimista. En otras palabras, determina si debe "
+"darse un incremento de versión cuando esta propiedad esté desactualizada."
-#: index.docbook:1562
-msgid "<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): By default, single point associations are proxied. <literal>lazy=\"no-proxy\"</literal> specifies that the property should be fetched lazily when the instance variable is first accessed (requires build-time bytecode instrumentation). <literal>lazy=\"false\"</literal> specifies that the association will always be eagerly fetched."
-msgstr "component, dynamic-component"
+#. Tag: para
+#: basic_mapping.xml:1562
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): "
+"By default, single point associations are proxied. <literal>lazy=\"no-proxy"
+"\"</literal> specifies that the property should be fetched lazily when the "
+"instance variable is first accessed (requires build-time bytecode "
+"instrumentation). <literal>lazy=\"false\"</literal> specifies that the "
+"association will always be eagerly fetched."
+msgstr ""
+"<literal>lazy</literal> (opcional - por defecto a <literal>proxy</literal>): "
+"Por defecto, las asociaciones de punto único van con proxies. <literal>lazy="
+"\"true\"</literal> especifica que esta propiedad debe ser traída "
+"perezosamente cuando la variable de instancia sea accedida por primera vez "
+"(requiere instrumentación del bytecode en tiempo de compilación). "
+"<literal>lazy=\"false\"</literal> especifica que la asociación siempre será "
+"recuperada tempranamente."
-#: index.docbook:1572
-msgid "<literal>not-found</literal> (optional - defaults to <literal>exception</literal>): Specifies how foreign keys that reference missing rows will be handled: <literal>ignore</literal> will treat a missing row as a null association."
-msgstr "El elemento <literal><component></literal> mapea propiedades de un objeto hijo a columnas de la tabla de la clase padre. Los componentes pueden a su vez declarar sus propias propiedades, componentes o colecciones. Ver debajo \"Componentes\"."
+#. Tag: para
+#: basic_mapping.xml:1572
+#, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): Specifies how foreign keys that reference missing rows will be "
+"handled: <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (opcional - por defecto a <literal>exception</"
+"literal>): Especifica cómo deben manejarse las claves foráneas que "
+"referencien filas inexistentes: <literal>ignore</literal> tratará una fila "
+"perdida como una asociación nula."
-#: index.docbook:1579, index.docbook:1733
-msgid "<literal>entity-name</literal> (optional): The entity name of the associated class."
+#. Tag: para
+#: basic_mapping.xml:1579 basic_mapping.xml:1733
+#, fuzzy, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional): The entity name of the associated "
+"class."
msgstr ""
- "<![CDATA[<component \n"
- " name=\"propertyName\" \n"
- " class=\"className\"\n"
- " insert=\"true|false\"\n"
- " update=\"true|false\"\n"
- " access=\"field|property|ClassName\"\n"
- " lazy=\"true|false\"\n"
- " optimistic-lock=\"true|false\"\n"
- " unique=\"true|false\"\n"
- " node=\"element-name|.\"\n"
- ">\n"
- " \n"
- " <property ...../>\n"
- " <many-to-one .... />\n"
- " ........\n"
- "</component>]]>"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>entity-name</literal> (opcional): El nombre de entidad de la clase "
+"asociada.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>entity-name</literal> (optional): The entity name of the associated "
+"class."
-#: index.docbook:1585
-msgid "<literal>formula</literal> (optional): an SQL expression that defines the value for a <emphasis>computed</emphasis> foreign key."
-msgstr "<literal>name</literal>: El nombre de la propiedad."
+#. Tag: para
+#: basic_mapping.xml:1585
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL expression that defines the "
+"value for a <emphasis>computed</emphasis> foreign key."
+msgstr ""
+"<literal>formula</literal> (opcional): una expresión SQL que define el valor "
+"para una clave foránea <emphasis>computada</emphasis>."
-#: index.docbook:1592
-msgid "Setting a value of the <literal>cascade</literal> attribute to any meaningful value other than <literal>none</literal> will propagate certain operations to the associated object. The meaningful values are the names of Hibernate's basic operations, <literal>persist, merge, delete, save-update, evict, replicate, lock, refresh</literal>, as well as the special values <literal>delete-orphan</literal> and <literal>all</literal> and comma-separated combinations of operation names, for example, <literal>cascade=\"persist,merge,evict\"</literal> or <literal>cascade=\"all,delete-orphan\"</literal>. See <xref linkend=\"objectstate-transitive\"/> for a full explanation. Note that single valued associations (many-to-one and one-to-one associations) do not support orphan delete."
-msgstr "<literal>class</literal> (opcional - por defecto al tipo de la propiedad determinado por reflección): El nombre de la clase del componente (hijo)."
+#. Tag: para
+#: basic_mapping.xml:1592
+#, no-c-format
+msgid ""
+"Setting a value of the <literal>cascade</literal> attribute to any "
+"meaningful value other than <literal>none</literal> will propagate certain "
+"operations to the associated object. The meaningful values are the names of "
+"Hibernate's basic operations, <literal>persist, merge, delete, save-update, "
+"evict, replicate, lock, refresh</literal>, as well as the special values "
+"<literal>delete-orphan</literal> and <literal>all</literal> and comma-"
+"separated combinations of operation names, for example, <literal>cascade="
+"\"persist,merge,evict\"</literal> or <literal>cascade=\"all,delete-orphan\"</"
+"literal>. See <xref linkend=\"objectstate-transitive\"/> for a full "
+"explanation. Note that single valued associations (many-to-one and one-to-"
+"one associations) do not support orphan delete."
+msgstr ""
+"Establecer el valor del atributo <literal>cascade</literal> a cualquier "
+"valor significativo distinto de <literal>none</literal> propagará ciertas "
+"operaciones al objeto asociado. Los valores significativos son los nombres "
+"de las operaciones básicas de Hibernate, <literal>persist, merge, delete, "
+"save-update, evict, replicate, lock, refresh</literal>, así como los valores "
+"especiales <literal>delete-orphan</literal> y <literal>all</literal> y "
+"combinaciones de operaciones separadas por coma, por ejemplo, "
+"<literal>cascade=\"persist,merge,evict\"</literal> o <literal>cascade=\"all,"
+"delete-orphan\"</literal>. Para una explicación completa, ver <xref linkend="
+"\"objectstate-transitive\"/>."
-#: index.docbook:1605
-msgid "A typical <literal>many-to-one</literal> declaration looks as simple as this:"
-msgstr "<literal>insert</literal>: Aparecen las columnas mapeadas en <literal>INSERT</literal>s SQL?"
+#. Tag: para
+#: basic_mapping.xml:1605
+#, no-c-format
+msgid ""
+"A typical <literal>many-to-one</literal> declaration looks as simple as this:"
+msgstr ""
+"Una declaración típica <literal>muchos-a-uno</literal> se parece a esto:"
-#: index.docbook:1609
-msgid "<![CDATA[<many-to-one name=\"product\" class=\"Product\" column=\"PRODUCT_ID\"/>]]>"
-msgstr "<literal>update</literal>: Aparecen las columnas mapeadas en <literal>UPDATE</literal>s SQL?"
+#. Tag: programlisting
+#: basic_mapping.xml:1609
+#, no-c-format
+msgid ""
+"<![CDATA[<many-to-one name=\"product\" class=\"Product\" column=\"PRODUCT_ID"
+"\"/>]]>"
+msgstr ""
-#: index.docbook:1611
-msgid "The <literal>property-ref</literal> attribute should only be used for mapping legacy data where a foreign key refers to a unique key of the associated table other than the primary key. This is an ugly relational model. For example, suppose the <literal>Product</literal> class had a unique serial number, that is not the primary key. (The <literal>unique</literal> attribute controls Hibernate's DDL generation with the SchemaExport tool.)"
-msgstr "<literal>access</literal> (opcional - por defecto a <literal>property</literal>): La estrategia que Hibernate debe usar para acceder al valor de la propiedad."
+#. Tag: para
+#: basic_mapping.xml:1611
+#, no-c-format
+msgid ""
+"The <literal>property-ref</literal> attribute should only be used for "
+"mapping legacy data where a foreign key refers to a unique key of the "
+"associated table other than the primary key. This is an ugly relational "
+"model. For example, suppose the <literal>Product</literal> class had a "
+"unique serial number, that is not the primary key. (The <literal>unique</"
+"literal> attribute controls Hibernate's DDL generation with the SchemaExport "
+"tool.)"
+msgstr ""
+"El atributo <literal>property-ref</literal> debe ser usado solamente para el "
+"mapeo de datos heredados donde una clave foránea referencia una clave única "
+"de la tabla asociada, distinta de la clave primaria. Este es un modelo "
+"relacional feo. Por ejemplo, supón que la clase <literal>Product</literal> "
+"tuviera un número único serial que no es la clave primaria. (El atributo "
+"<literal>unique</literal> controla la generación de DDL con la herramienta "
+"SchemaExport.)"
-#: index.docbook:1620
-msgid "<![CDATA[<property name=\"serialNumber\" unique=\"true\" type=\"string\" column=\"SERIAL_NUMBER\"/>]]>"
-msgstr "<literal>lazy</literal> (opcional - por defecto a <literal>false</literal>): Especifica que este componente debe ser recuperado perezosamente cuando la variable de instancia sea accedida por primera vez (requiere instrumentación de bytecode en tiempo de compilación)."
+#. Tag: programlisting
+#: basic_mapping.xml:1620
+#, no-c-format
+msgid ""
+"<![CDATA[<property name=\"serialNumber\" unique=\"true\" type=\"string\" "
+"column=\"SERIAL_NUMBER\"/>]]>"
+msgstr ""
-#: index.docbook:1622
+#. Tag: para
+#: basic_mapping.xml:1622
+#, no-c-format
msgid "Then the mapping for <literal>OrderItem</literal> might use:"
-msgstr "<literal>optimistic-lock</literal> (opcional - por defecto a <literal>true</literal>): Especifica si las actualizaciones de este componente requieren o no la adquisición de un bloqueo optimista. En otras palabras, determina si debe ocurrir un incremento de versión cuando esta propiedad está desactualizada."
+msgstr "Entonces el mapeo para <literal>OrderItem</literal> debería usar:"
-#: index.docbook:1626
-msgid "<![CDATA[<many-to-one name=\"product\" property-ref=\"serialNumber\" column=\"PRODUCT_SERIAL_NUMBER\"/>]]>"
-msgstr "<literal>unique</literal> (opcional - por defecto a <literal>false</literal>): Especifica que existe una restricción de unicidad sobre todas las columnas mapeadas del componente."
+#. Tag: programlisting
+#: basic_mapping.xml:1626
+#, no-c-format
+msgid ""
+"<![CDATA[<many-to-one name=\"product\" property-ref=\"serialNumber\" column="
+"\"PRODUCT_SERIAL_NUMBER\"/>]]>"
+msgstr ""
-#: index.docbook:1628
+#. Tag: para
+#: basic_mapping.xml:1628
+#, no-c-format
msgid "This is certainly not encouraged, however."
-msgstr "Las etiquetas hijas <literal><property></literal> mapean propiedades de la clase hija columnas de la tabla."
+msgstr "Sin embargo, esto no esta ciertamente alentado."
-#: index.docbook:1632
-msgid "If the referenced unique key comprises multiple properties of the associated entity, you should map the referenced properties inside a named <literal><properties></literal> element."
-msgstr "El elemento <literal><component></literal> permite un subelemento <literal><parent></literal> que mapea una propiedad de la clase del componente como una referencia de regreso a la entidad contenedora."
+#. Tag: para
+#: basic_mapping.xml:1632
+#, no-c-format
+msgid ""
+"If the referenced unique key comprises multiple properties of the associated "
+"entity, you should map the referenced properties inside a named <literal><"
+"properties></literal> element."
+msgstr ""
+"Si la clave única referenciada abarca múltiples propiedades de la entidad "
+"asociada, debes mapear las propiedades dentro de un elemento <literal><"
+"properties></literal>."
-#: index.docbook:1637
-msgid "If the referenced unique key is the property of a component, you may specify a property path:"
-msgstr "El elemento <literal><dynamic-component></literal> permite que un <literal>Map</literal> sea mapeado como un componente, donde los nombres de las propiedades se corresponden a las claves del mapa, ver <xref linkend=\"components-dynamic\"/>."
+#. Tag: para
+#: basic_mapping.xml:1637
+#, no-c-format
+msgid ""
+"If the referenced unique key is the property of a component, you may specify "
+"a property path:"
+msgstr ""
+"UNTRANSLATED! If the referenced unique key is the property of a component, "
+"you may specify a property path:"
-#: index.docbook:1641
-msgid "<![CDATA[<many-to-one name=\"owner\" property-ref=\"identity.ssn\" column=\"OWNER_SSN\"/>]]>"
-msgstr "properties"
+#. Tag: programlisting
+#: basic_mapping.xml:1641
+#, no-c-format
+msgid ""
+"<![CDATA[<many-to-one name=\"owner\" property-ref=\"identity.ssn\" column="
+"\"OWNER_SSN\"/>]]>"
+msgstr ""
-#: index.docbook:1646
+#. Tag: title
+#: basic_mapping.xml:1646
+#, no-c-format
msgid "one-to-one"
-msgstr "El elemento <literal><properties></literal> permite la definición de un grupo de propiedades lógico con nombre de una clase. El uso más importante de la contrucción es que permite que una combinación de propiedades sea objetivo de una <literal>property-ref</literal>. Es también una forma conveniente de definir una restricción de unicidad multicolumna."
+msgstr "one-to-one"
-#: index.docbook:1648
-msgid "A one-to-one association to another persistent class is declared using a <literal>one-to-one</literal> element."
+#. Tag: para
+#: basic_mapping.xml:1648
+#, no-c-format
+msgid ""
+"A one-to-one association to another persistent class is declared using a "
+"<literal>one-to-one</literal> element."
msgstr ""
- "<![CDATA[<properties \n"
- " name=\"logicalName\" \n"
- " insert=\"true|false\"\n"
- " update=\"true|false\"\n"
- " optimistic-lock=\"true|false\"\n"
- " unique=\"true|false\"\n"
- ">\n"
- " \n"
- " <property ...../>\n"
- " <many-to-one .... />\n"
- " ........\n"
- "</properties>]]>"
+"Una asociación uno-a-uno a otra clase persistente se declara usando un "
+"elemento <literal>one-to-one</literal>."
-#: index.docbook:1666
+#. Tag: programlisting
+#: basic_mapping.xml:1666
+#, no-c-format
msgid ""
- "<![CDATA[<one-to-one\n"
- " name=\"propertyName\"\n"
- " class=\"ClassName\"\n"
- " cascade=\"cascade_style\"\n"
- " constrained=\"true|false\"\n"
- " fetch=\"join|select\"\n"
- " property-ref=\"propertyNameFromAssociatedClass\"\n"
- " access=\"field|property|ClassName\"\n"
- " formula=\"any SQL expression\"\n"
- " lazy=\"proxy|no-proxy|false\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- " embed-xml=\"true|false\"\n"
- " foreign-key=\"foreign_key_name\"\n"
- "/>]]>"
-msgstr "<literal>name</literal>: El nombre lógico del agrupamiento - <emphasis>no</emphasis> un nombre de propiedad real."
+"<![CDATA[<one-to-one\n"
+" name=\"propertyName\"\n"
+" class=\"ClassName\"\n"
+" cascade=\"cascade_style\"\n"
+" constrained=\"true|false\"\n"
+" fetch=\"join|select\"\n"
+" property-ref=\"propertyNameFromAssociatedClass\"\n"
+" access=\"field|property|ClassName\"\n"
+" formula=\"any SQL expression\"\n"
+" lazy=\"proxy|no-proxy|false\"\n"
+" entity-name=\"EntityName\"\n"
+" node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
+" embed-xml=\"true|false\"\n"
+" foreign-key=\"foreign_key_name\"\n"
+"/>]]>"
+msgstr ""
-#: index.docbook:1680
-msgid "<literal>cascade</literal> (optional) specifies which operations should be cascaded from the parent object to the associated object."
-msgstr "<literal>optimistic-lock</literal> (opcional - por defecto a <literal>true</literal>): Especifica si las actualizaciones de estas propiedades requieren o no de la adquisición de un bloqueo optimista. En otras palabras, determina si debe ocurrir un incremento de versión cuando estas propiedades están desactualizadas."
+#. Tag: para
+#: basic_mapping.xml:1680
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional) specifies which operations should be "
+"cascaded from the parent object to the associated object."
+msgstr ""
+"<literal>cascade</literal> (opcional) especifica qué operaciones deben ir en "
+"cascada desde el objeto padre al objeto asociado."
-#: index.docbook:1686
-msgid "<literal>constrained</literal> (optional) specifies that a foreign key constraint on the primary key of the mapped table references the table of the associated class. This option affects the order in which <literal>save()</literal> and <literal>delete()</literal> are cascaded, and determines whether the association may be proxied (it is also used by the schema export tool)."
-msgstr "<literal>unique</literal> (opcional - por defecto a <literal>false</literal>): Especifica que existe una restricción de unicidad sobre todas las columnas mapeadas del componente."
+#. Tag: para
+#: basic_mapping.xml:1686
+#, no-c-format
+msgid ""
+"<literal>constrained</literal> (optional) specifies that a foreign key "
+"constraint on the primary key of the mapped table references the table of "
+"the associated class. This option affects the order in which <literal>save()"
+"</literal> and <literal>delete()</literal> are cascaded, and determines "
+"whether the association may be proxied (it is also used by the schema export "
+"tool)."
+msgstr ""
+"<literal>constrained</literal> (opcional) especifica que una restricción de "
+"clave foránea de la tabla mapeada referencia a la tabla de la clase "
+"asociada. Esta opción afecta el orden en que van en cascada <literal>save()</"
+"literal> y <literal>delete()</literal>, y determina cuándo la asociación "
+"pueden ser virtualizados por proxies (es también usado por la herramienta de "
+"exportación de esquemas)."
-#: index.docbook:1701
-msgid "<literal>property-ref</literal>: (optional) The name of a property of the associated class that is joined to the primary key of this class. If not specified, the primary key of the associated class is used."
+#. Tag: para
+#: basic_mapping.xml:1701
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal>: (optional) The name of a property of the "
+"associated class that is joined to the primary key of this class. If not "
+"specified, the primary key of the associated class is used."
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"personNumber\"/>\n"
- " ...\n"
- " <properties name=\"name\" \n"
- " unique=\"true\" update=\"false\">\n"
- " <property name=\"firstName\"/>\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"lastName\"/>\n"
- " </properties>\n"
- "</class>]]>"
+"<literal>property-ref</literal>: (opcional) El nombre de una propiedad de la "
+"clase asociada que esté unida a la clave primaria de esta clase. Si no se "
+"especifica, se usa la clave primaria de la clase asociada."
-#: index.docbook:1714
-msgid "<literal>formula</literal> (optional): Almost all one to one associations map to the primary key of the owning entity. In the rare case that this is not the case, you may specify a some other column, columns or expression to join on using an SQL formula. (See <literal>org.hibernate.test.onetooneformula</literal> for an example.)"
+#. Tag: para
+#: basic_mapping.xml:1714
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): Almost all one to one associations "
+"map to the primary key of the owning entity. In the rare case that this is "
+"not the case, you may specify a some other column, columns or expression to "
+"join on using an SQL formula. (See <literal>org.hibernate.test."
+"onetooneformula</literal> for an example.)"
msgstr ""
- "<![CDATA[<many-to-one name=\"person\" \n"
- " class=\"Person\" property-ref=\"name\">\n"
- " <column name=\"firstName\"/>\n"
- " <column name=\"initial\"/>\n"
- " <column name=\"lastName\"/>\n"
- "</many-to-one>]]>"
+"<literal>formula</literal> (opcional): Casi todas las asociaciones uno-a-uno "
+"mapean a la clave primaria de la entidad propietaria. En el raro caso en que "
+"este no sea el caso, puedes especificar alguna otra columna, o columnas, o "
+"expresión para unir usando una fórmula SQL. (Para un ejemplo ver "
+"<literal>org.hibernate.test.onetooneformula</literal>)."
-#: index.docbook:1722
-msgid "<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): By default, single point associations are proxied. <literal>lazy=\"no-proxy\"</literal> specifies that the property should be fetched lazily when the instance variable is first accessed (requires build-time bytecode instrumentation). <literal>lazy=\"false\"</literal> specifies that the association will always be eagerly fetched. <emphasis>Note that if <literal>constrained=\"false\"</literal>, proxying is impossible and Hibernate will eager fetch the association!</emphasis>"
-msgstr "No recomendamos el uso de este tipo de cosas fuera del contexto del mapeo de datos heredados."
+#. Tag: para
+#: basic_mapping.xml:1722
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): "
+"By default, single point associations are proxied. <literal>lazy=\"no-proxy"
+"\"</literal> specifies that the property should be fetched lazily when the "
+"instance variable is first accessed (requires build-time bytecode "
+"instrumentation). <literal>lazy=\"false\"</literal> specifies that the "
+"association will always be eagerly fetched. <emphasis>Note that if "
+"<literal>constrained=\"false\"</literal>, proxying is impossible and "
+"Hibernate will eager fetch the association!</emphasis>"
+msgstr ""
+"<literal>lazy</literal> (opcional - por defecto a <literal>proxy</literal>): "
+"Por defecto, las asociaciones de punto único van con proxies. <literal>lazy="
+"\"true\"</literal> especifica que esta propiedad debe ser traída "
+"perezosamente cuando la variable de instancia sea accedida por primera vez "
+"(requiere instrumentación del bytecode en tiempo de compilación). "
+"<literal>lazy=\"false\"</literal> especifica que la asociación siempre será "
+"recuperada tempranamente. <emphasis>Observa que si <literal>constrained="
+"\"false\"</literal>, la aplicación de proxies es imposible e Hibernate "
+"traerá temprano la asociación!</emphasis>"
-#: index.docbook:1740
+#. Tag: para
+#: basic_mapping.xml:1740
+#, no-c-format
msgid "There are two varieties of one-to-one association:"
-msgstr "Finalmente, la persistencia polimórfica requiere la declaración de la clase persistente raíz. Para la estrategia de mapeo tabla-por-jerarquía-de-clases, se usa la declaración de <literal><subclass></literal>."
+msgstr "Hay dos variedades de asociaciones uno-a-uno:"
-#: index.docbook:1744
+#. Tag: para
+#: basic_mapping.xml:1744
+#, no-c-format
msgid "primary key associations"
-msgstr ""
- "<![CDATA[<subclass\n"
- " name=\"ClassName\"\n"
- " discriminator-value=\"discriminator_value\"\n"
- " proxy=\"ProxyInterface\"\n"
- " lazy=\"true|false\"\n"
- " dynamic-update=\"true|false\"\n"
- " dynamic-insert=\"true|false\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name\">\n"
- "\n"
- " <property .... />\n"
- " .....\n"
- "</subclass>]]>"
+msgstr "asociaciones de clave primaria"
-#: index.docbook:1747
+#. Tag: para
+#: basic_mapping.xml:1747
+#, no-c-format
msgid "unique foreign key associations"
-msgstr "<literal>name</literal>: El nombre de clase cualificado completamente de la subclase."
+msgstr "asociaciones de clave foráneas única"
-#: index.docbook:1752
-msgid "Primary key associations don't need an extra table column; if two rows are related by the association then the two table rows share the same primary key value. So if you want two objects to be related by a primary key association, you must make sure that they are assigned the same identifier value!"
-msgstr "<literal>discriminator-value</literal> (opcional - por defecto al nombre de la clase): Un valor que distingue a subclases individuales."
+#. Tag: para
+#: basic_mapping.xml:1752
+#, no-c-format
+msgid ""
+"Primary key associations don't need an extra table column; if two rows are "
+"related by the association then the two table rows share the same primary "
+"key value. So if you want two objects to be related by a primary key "
+"association, you must make sure that they are assigned the same identifier "
+"value!"
+msgstr ""
+"Las asociaciones de clave primaria no necesitan una columna de tabla extra; "
+"si dos filas están relacionadas por la asociación entonces las dos filas de "
+"tablas comparten el mismo valor de clave primaria. Por lo tanto, si quieres "
+"que dos objetos estén relacionados por una asociación de clave primaria, "
+"debes asegurarte que se les asigne el mismo valor de identificador!"
-#: index.docbook:1759
-msgid "For a primary key association, add the following mappings to <literal>Employee</literal> and <literal>Person</literal>, respectively."
-msgstr "<literal>proxy</literal> (opcional): Especifica una clase o interface a usar para proxies de inicialización perezosa."
+#. Tag: para
+#: basic_mapping.xml:1759
+#, no-c-format
+msgid ""
+"For a primary key association, add the following mappings to "
+"<literal>Employee</literal> and <literal>Person</literal>, respectively."
+msgstr ""
+"Para una asociación de clave primaria, añade los siguientes mapeos a "
+"<literal>Employee</literal> y <literal>Person</literal>, respectivamente."
-#: index.docbook:1764
+#. Tag: programlisting
+#: basic_mapping.xml:1764
+#, no-c-format
msgid "<![CDATA[<one-to-one name=\"person\" class=\"Person\"/>]]>"
-msgstr "<literal>lazy</literal> (opcional, por defecto a <literal>true</literal>): Establecer <literal>lazy=\"false\"</literal> deshabilita el uso de recuperación perezosa."
+msgstr ""
-#: index.docbook:1765
-msgid "<![CDATA[<one-to-one name=\"employee\" class=\"Employee\" constrained=\"true\"/>]]>"
-msgstr "Cada subclase debe declarar sus propias propiedades persistentes y subclases. Se asume que las propiedades <literal><version></literal> y <literal><id></literal> son heredadas de la clase raíz. Cada subclase en una jerarquía debe definir un <literal>discriminator-value</literal> único. Si no se especifica ninguno, se usa el nombre completamente cualificado de clase Java."
+#. Tag: programlisting
+#: basic_mapping.xml:1765
+#, no-c-format
+msgid ""
+"<![CDATA[<one-to-one name=\"employee\" class=\"Employee\" constrained=\"true"
+"\"/>]]>"
+msgstr ""
-#: index.docbook:1767
-msgid "Now we must ensure that the primary keys of related rows in the PERSON and EMPLOYEE tables are equal. We use a special Hibernate identifier generation strategy called <literal>foreign</literal>:"
-msgstr "Es posible definir mapeos <literal>subclass</literal>, <literal>union-subclass</literal>, y <literal>joined-subclass</literal> en documentos de mapeo separados, directamente debajo de <literal>hibernate-mapping</literal>. Esto te permite extender una jerarquía de clases con sólo agregar un nuevo fichero de mapeo. Debes especificar un atributo <literal>extends</literal> en el mapeo de la subclase, mencionando una superclase previamente mapeada. Nota: Previamente esta funcionalidad hacía importante el orden de los documentos de mapeo. Desde Hibernate3, el orden de los ficheros de mapeo no importa cuando se usa la palabra reservada extends. El orden dentro de un mismo fichero de mapeo todavía necesita ser definido como superclases antes de subclases."
+#. Tag: para
+#: basic_mapping.xml:1767
+#, no-c-format
+msgid ""
+"Now we must ensure that the primary keys of related rows in the PERSON and "
+"EMPLOYEE tables are equal. We use a special Hibernate identifier generation "
+"strategy called <literal>foreign</literal>:"
+msgstr ""
+"Ahora debemos asegurarnos que las claves primarias de las filas relacionadas "
+"en las tablas PERSON y EMPLOYEE sean iguales. Usamos una estrategia especial "
+"de generación de identificador de Hibernate llamada <literal>foreign</"
+"literal>:"
-#: index.docbook:1773
+#. Tag: programlisting
+#: basic_mapping.xml:1773
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"person\" table=\"PERSON\">\n"
- " <id name=\"id\" column=\"PERSON_ID\">\n"
- " <generator class=\"foreign\">\n"
- " <param name=\"property\">employee</param>\n"
- " </generator>\n"
- " </id>\n"
- " ...\n"
- " <one-to-one name=\"employee\"\n"
- " class=\"Employee\"\n"
- " constrained=\"true\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"person\" table=\"PERSON\">\n"
+" <id name=\"id\" column=\"PERSON_ID\">\n"
+" <generator class=\"foreign\">\n"
+" <param name=\"property\">employee</param>\n"
+" </generator>\n"
+" </id>\n"
+" ...\n"
+" <one-to-one name=\"employee\"\n"
+" class=\"Employee\"\n"
+" constrained=\"true\"/>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[\n"
- "<hibernate-mapping>\n"
- " <subclass name=\"DomesticCat\" extends=\"Cat\" discriminator-value=\"D\">\n"
- " <property name=\"name\" type=\"string\"/>\n"
- " </subclass>\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:1775
-msgid "A newly saved instance of <literal>Person</literal> is then assigned the same primary key value as the <literal>Employee</literal> instance refered with the <literal>employee</literal> property of that <literal>Person</literal>."
-msgstr "Para información acerca de mapeos de herencia, ver <xref linkend=\"inheritance\"/>."
+#. Tag: para
+#: basic_mapping.xml:1775
+#, no-c-format
+msgid ""
+"A newly saved instance of <literal>Person</literal> is then assigned the "
+"same primary key value as the <literal>Employee</literal> instance refered "
+"with the <literal>employee</literal> property of that <literal>Person</"
+"literal>."
+msgstr ""
+"A una instancia recién salvada de <literal>Person</literal> se le asigna "
+"entonces el mismo valor de clave primaria con que la instancia "
+"<literal>Employee</literal> referida por la propiedad <literal>employee</"
+"literal> de esta <literal>Person</literal>."
-#: index.docbook:1781
-msgid "Alternatively, a foreign key with a unique constraint, from <literal>Employee</literal> to <literal>Person</literal>, may be expressed as:"
-msgstr "joined-subclass"
+#. Tag: para
+#: basic_mapping.xml:1781
+#, no-c-format
+msgid ""
+"Alternatively, a foreign key with a unique constraint, from "
+"<literal>Employee</literal> to <literal>Person</literal>, may be expressed "
+"as:"
+msgstr ""
+"Alternativamente, una clave foránea con una restricción de unicidad, desde "
+"<literal>Employee</literal> a <literal>Person</literal>, puede ser expresada "
+"como:"
-#: index.docbook:1786
-msgid "<![CDATA[<many-to-one name=\"person\" class=\"Person\" column=\"PERSON_ID\" unique=\"true\"/>]]>"
-msgstr "Alternativamente, cada subclase puede ser mapeada a su propia tabla (estrategia de mapeo tabla-por-subclase). El estado heredado se recupera uniendo con la tabla de la superclase. Usamos el elemento <literal><joined-subclass></literal>."
+#. Tag: programlisting
+#: basic_mapping.xml:1786
+#, no-c-format
+msgid ""
+"<![CDATA[<many-to-one name=\"person\" class=\"Person\" column=\"PERSON_ID\" "
+"unique=\"true\"/>]]>"
+msgstr ""
-#: index.docbook:1788
-msgid "And this association may be made bidirectional by adding the following to the <literal>Person</literal> mapping:"
+#. Tag: para
+#: basic_mapping.xml:1788
+#, no-c-format
+msgid ""
+"And this association may be made bidirectional by adding the following to "
+"the <literal>Person</literal> mapping:"
msgstr ""
- "<![CDATA[<joined-subclass\n"
- " name=\"ClassName\"\n"
- " table=\"tablename\"\n"
- " proxy=\"ProxyInterface\"\n"
- " lazy=\"true|false\"\n"
- " dynamic-update=\"true|false\"\n"
- " dynamic-insert=\"true|false\"\n"
- " schema=\"schema\"\n"
- " catalog=\"catalog\"\n"
- " extends=\"SuperclassName\"\n"
- " persister=\"ClassName\"\n"
- " subselect=\"SQL expression\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name\">\n"
- "\n"
- " <key .... >\n"
- "\n"
- " <property .... />\n"
- " .....\n"
- "</joined-subclass>]]>"
+"Y esta asociación puede hacerse bidireccional agregando lo siguiente al "
+"mapeo de <literal>Person</literal> :"
-#: index.docbook:1793
-msgid "<![CDATA[<one-to-one name=\"employee\" class=\"Employee\" property-ref=\"person\"/>]]>"
-msgstr "<literal>name</literal>: El nombre de clase completamente cualificado de la subclase."
+#. Tag: programlisting
+#: basic_mapping.xml:1793
+#, no-c-format
+msgid ""
+"<![CDATA[<one-to-one name=\"employee\" class=\"Employee\" property-ref="
+"\"person\"/>]]>"
+msgstr ""
-#: index.docbook:1798
+#. Tag: title
+#: basic_mapping.xml:1798
+#, no-c-format
msgid "natural-id"
-msgstr "<literal>table</literal>: El nombre de tabla de la subclase."
+msgstr "natural-id"
-#: index.docbook:1800
+#. Tag: programlisting
+#: basic_mapping.xml:1800
+#, no-c-format
msgid ""
- "<![CDATA[<natural-id mutable=\"true|false\"/>\n"
- " <property ... />\n"
- " <many-to-one ... />\n"
- " ......\n"
- "</natural-id>]]>"
-msgstr "<literal>proxy</literal> (opcional): Especifica una clase o interface a usar para proxies de inicializacón perezosa."
+"<![CDATA[<natural-id mutable=\"true|false\"/>\n"
+" <property ... />\n"
+" <many-to-one ... />\n"
+" ......\n"
+"</natural-id>]]>"
+msgstr ""
-#: index.docbook:1802
-msgid "Even though we recommend the use of surrogate keys as primary keys, you should still try to identify natural keys for all entities. A natural key is a property or combination of properties that is unique and non-null. If it is also immutable, even better. Map the properties of the natural key inside the <literal><natural-id></literal> element. Hibernate will generate the necessary unique key and nullability constraints, and your mapping will be more self-documenting."
-msgstr "<literal>lazy</literal> (opcional, por defecto a <literal>true</literal>): Establecer <literal>lazy=\"false\"</literal> deshabilita el uso de recuperación perezosa."
+#. Tag: para
+#: basic_mapping.xml:1802
+#, no-c-format
+msgid ""
+"Even though we recommend the use of surrogate keys as primary keys, you "
+"should still try to identify natural keys for all entities. A natural key is "
+"a property or combination of properties that is unique and non-null. If it "
+"is also immutable, even better. Map the properties of the natural key inside "
+"the <literal><natural-id></literal> element. Hibernate will generate "
+"the necessary unique key and nullability constraints, and your mapping will "
+"be more self-documenting."
+msgstr ""
+"Aunque recomendamos el uso de claves delegadas como claves primarias, "
+"todavía debes intentar identificar claves naturales para todas las "
+"entidades. Una clave natural es una propiedad o combinación de propiedades "
+"que es única y no nula. Si además es inmutable, mejor aún. Mapea las "
+"propiedades de la clave natural dentro del elemento <literal><natural-"
+"id></literal>. Hibernate generará las restricciones de clave única y "
+"nulabilidad necesarias, y tu mapeo será más auto-documentado."
-#: index.docbook:1811
-msgid "We strongly recommend that you implement <literal>equals()</literal> and <literal>hashCode()</literal> to compare the natural key properties of the entity."
-msgstr "No se requiere de una columna discriminadora para esta estrategia de mapeo. Cada subclase debe, sin embargo, declarar una columna de tabla que tenga el identificador del objeto usando el elemento <literal><key></literal>. El mapeo del comienzo del capítulo debería ser reescrito como:"
+#. Tag: para
+#: basic_mapping.xml:1811
+#, no-c-format
+msgid ""
+"We strongly recommend that you implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> to compare the natural key properties of the "
+"entity."
+msgstr ""
+"Recomendamos fuertemente que implementes <literal>equals()</literal> y "
+"<literal>hashCode()</literal> para comparar las propiedades de clave natural "
+"de la entidad."
-#: index.docbook:1816
-msgid "This mapping is not intended for use with entities with natural primary keys."
+#. Tag: para
+#: basic_mapping.xml:1816
+#, no-c-format
+msgid ""
+"This mapping is not intended for use with entities with natural primary keys."
msgstr ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping package=\"eg\">\n"
- "\n"
- " <class name=\"Cat\" table=\"CATS\">\n"
- " <id name=\"id\" column=\"uid\" type=\"long\">\n"
- " <generator class=\"hilo\"/>\n"
- " </id>\n"
- " <property name=\"birthdate\" type=\"date\"/>\n"
- " <property name=\"color\" not-null=\"true\"/>\n"
- " <property name=\"sex\" not-null=\"true\"/>\n"
- " <property name=\"weight\"/>\n"
- " <many-to-one name=\"mate\"/>\n"
- " <set name=\"kittens\">\n"
- " <key column=\"MOTHER\"/>\n"
- " <one-to-many class=\"Cat\"/>\n"
- " </set>\n"
- " <joined-subclass name=\"DomesticCat\" table=\"DOMESTIC_CATS\">\n"
- " <key column=\"CAT\"/>\n"
- " <property name=\"name\" type=\"string\"/>\n"
- " </joined-subclass>\n"
- " </class>\n"
- "\n"
- " <class name=\"eg.Dog\">\n"
- " <!-- mapping for Dog could go here -->\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"Este mapeo no está concebido para usar con entidades con claves primarias "
+"naturales."
-#: index.docbook:1822
-msgid "<literal>mutable</literal> (optional, defaults to <literal>false</literal>): By default, natural identifier properties as assumed to be immutable (constant)."
-msgstr "Para información acerca de mapeos de herencia, ver <xref linkend=\"inheritance\"/>."
+#. Tag: para
+#: basic_mapping.xml:1822
+#, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional, defaults to <literal>false</literal>): "
+"By default, natural identifier properties as assumed to be immutable "
+"(constant)."
+msgstr ""
+"<literal>mutable</literal> (opcional, por defecto a <literal>false</"
+"literal>): Por defecto, se asume que las propiedades de identificadores "
+"naturales son inmutables (constantes)."
-#: index.docbook:1832
+#. Tag: title
+#: basic_mapping.xml:1832
+#, no-c-format
msgid "component, dynamic-component"
-msgstr "union-subclass"
+msgstr "component, dynamic-component"
-#: index.docbook:1834
-msgid "The <literal><component></literal> element maps properties of a child object to columns of the table of a parent class. Components may, in turn, declare their own properties, components or collections. See \"Components\" below."
-msgstr "Una tercera opción es mapear sólo las clases concretas de una jerarquía de clases a tablas, (la estrategia tabla-por-clase-concreta) donde cada tabla define todo el estado persistente de la clase, incluyendo el estado heredado. En Hibernate, no es absolutamente necesario mapear dichas jerarquías de herencia. Puedes simplemente mapear cada clase con una declaración <literal><class></literal> separada. Sin embargo, si deseas usar asociaciones polimórficas (por ejemplo, una asociación a la superclase de tu jerarquía), debes usar el mapeo <literal><union-subclass></literal>."
+#. Tag: para
+#: basic_mapping.xml:1834
+#, no-c-format
+msgid ""
+"The <literal><component></literal> element maps properties of a child "
+"object to columns of the table of a parent class. Components may, in turn, "
+"declare their own properties, components or collections. See \"Components\" "
+"below."
+msgstr ""
+"El elemento <literal><component></literal> mapea propiedades de un "
+"objeto hijo a columnas de la tabla de la clase padre. Los componentes pueden "
+"a su vez declarar sus propias propiedades, componentes o colecciones. Ver "
+"debajo \"Componentes\"."
-#: index.docbook:1852
+#. Tag: programlisting
+#: basic_mapping.xml:1852
+#, no-c-format
msgid ""
- "<![CDATA[<component\n"
- " name=\"propertyName\"\n"
- " class=\"className\"\n"
- " insert=\"true|false\"\n"
- " update=\"true|false\"\n"
- " access=\"field|property|ClassName\"\n"
- " lazy=\"true|false\"\n"
- " optimistic-lock=\"true|false\"\n"
- " unique=\"true|false\"\n"
- " node=\"element-name|.\"\n"
- ">\n"
- "\n"
- " <property ...../>\n"
- " <many-to-one .... />\n"
- " ........\n"
- "</component>]]>"
+"<![CDATA[<component\n"
+" name=\"propertyName\"\n"
+" class=\"className\"\n"
+" insert=\"true|false\"\n"
+" update=\"true|false\"\n"
+" access=\"field|property|ClassName\"\n"
+" lazy=\"true|false\"\n"
+" optimistic-lock=\"true|false\"\n"
+" unique=\"true|false\"\n"
+" node=\"element-name|.\"\n"
+">\n"
+"\n"
+" <property ...../>\n"
+" <many-to-one .... />\n"
+" ........\n"
+"</component>]]>"
msgstr ""
- "<![CDATA[<union-subclass\n"
- " name=\"ClassName\"\n"
- " table=\"tablename\"\n"
- " proxy=\"ProxyInterface\"\n"
- " lazy=\"true|false\"\n"
- " dynamic-update=\"true|false\"\n"
- " dynamic-insert=\"true|false\"\n"
- " schema=\"schema\"\n"
- " catalog=\"catalog\"\n"
- " extends=\"SuperclassName\"\n"
- " abstract=\"true|false\"\n"
- " persister=\"ClassName\"\n"
- " subselect=\"SQL expression\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name\">\n"
- "\n"
- " <property .... />\n"
- " .....\n"
- "</union-subclass>]]>"
-#: index.docbook:1860
-msgid "<literal>class</literal> (optional - defaults to the property type determined by reflection): The name of the component (child) class."
-msgstr "<literal>table</literal>: El nombre de tabla de la subclase."
+#. Tag: para
+#: basic_mapping.xml:1860
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): The name of the component (child) class."
+msgstr ""
+"<literal>class</literal> (opcional - por defecto al tipo de la propiedad "
+"determinado por reflección): El nombre de la clase del componente (hijo)."
-#: index.docbook:1866, index.docbook:1955
-msgid "<literal>insert</literal>: Do the mapped columns appear in SQL <literal>INSERT</literal>s?"
-msgstr "<literal>proxy</literal> (optional): Especifica una clase o interface a usar para proxies de inicializacón perezosa."
+#. Tag: para
+#: basic_mapping.xml:1866 basic_mapping.xml:1955
+#, no-c-format
+msgid ""
+"<literal>insert</literal>: Do the mapped columns appear in SQL "
+"<literal>INSERT</literal>s?"
+msgstr ""
+"<literal>insert</literal>: Aparecen las columnas mapeadas en "
+"<literal>INSERT</literal>s SQL?"
-#: index.docbook:1872, index.docbook:1961
-msgid "<literal>update</literal>: Do the mapped columns appear in SQL <literal>UPDATE</literal>s?"
-msgstr "<literal>lazy</literal> (opcional, por defecto a <literal>true</literal>): Establecer <literal>lazy=\"false\"</literal> deshabilita el uso de recuperación perezosa."
+#. Tag: para
+#: basic_mapping.xml:1872 basic_mapping.xml:1961
+#, no-c-format
+msgid ""
+"<literal>update</literal>: Do the mapped columns appear in SQL "
+"<literal>UPDATE</literal>s?"
+msgstr ""
+"<literal>update</literal>: Aparecen las columnas mapeadas en "
+"<literal>UPDATE</literal>s SQL?"
-#: index.docbook:1884
-msgid "<literal>lazy</literal> (optional - defaults to <literal>false</literal>): Specifies that this component should be fetched lazily when the instance variable is first accessed (requires build-time bytecode instrumentation)."
-msgstr "Para información acerca de mapeos de herencia, ver <xref linkend=\"inheritance\"/>."
+#. Tag: para
+#: basic_mapping.xml:1884
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>false</literal>): "
+"Specifies that this component should be fetched lazily when the instance "
+"variable is first accessed (requires build-time bytecode instrumentation)."
+msgstr ""
+"<literal>lazy</literal> (opcional - por defecto a <literal>false</literal>): "
+"Especifica que este componente debe ser recuperado perezosamente cuando la "
+"variable de instancia sea accedida por primera vez (requiere instrumentación "
+"de bytecode en tiempo de compilación)."
-#: index.docbook:1891
-msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): Specifies that updates to this component do or do not require acquisition of the optimistic lock. In other words, determines if a version increment should occur when this property is dirty."
-msgstr "join"
+#. Tag: para
+#: basic_mapping.xml:1891
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): Specifies that updates to this component do or do not require "
+"acquisition of the optimistic lock. In other words, determines if a version "
+"increment should occur when this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional - por defecto a <literal>true</"
+"literal>): Especifica si las actualizaciones de este componente requieren o "
+"no la adquisición de un bloqueo optimista. En otras palabras, determina si "
+"debe ocurrir un incremento de versión cuando esta propiedad está "
+"desactualizada."
-#: index.docbook:1899, index.docbook:1975
-msgid "<literal>unique</literal> (optional - defaults to <literal>false</literal>): Specifies that a unique constraint exists upon all mapped columns of the component."
-msgstr "Usando el elemento <literal><join></literal>, es posible mapear propiedades de una clase a varias tablas."
+#. Tag: para
+#: basic_mapping.xml:1899 basic_mapping.xml:1975
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional - defaults to <literal>false</literal>): "
+"Specifies that a unique constraint exists upon all mapped columns of the "
+"component."
+msgstr ""
+"<literal>unique</literal> (opcional - por defecto a <literal>false</"
+"literal>): Especifica que existe una restricción de unicidad sobre todas las "
+"columnas mapeadas del componente."
-#: index.docbook:1908
-msgid "The child <literal><property></literal> tags map properties of the child class to table columns."
+#. Tag: para
+#: basic_mapping.xml:1908
+#, no-c-format
+msgid ""
+"The child <literal><property></literal> tags map properties of the "
+"child class to table columns."
msgstr ""
- "<![CDATA[<join\n"
- " table=\"tablename\"\n"
- " schema=\"owner\"\n"
- " catalog=\"catalog\"\n"
- " fetch=\"join|select\"\n"
- " inverse=\"true|false\"\n"
- " optional=\"true|false\">\n"
- " \n"
- " <key ... />\n"
- " \n"
- " <property ... />\n"
- " ...\n"
- "</join>]]>"
+"Las etiquetas hijas <literal><property></literal> mapean propiedades "
+"de la clase hija columnas de la tabla."
-#: index.docbook:1913
-msgid "The <literal><component></literal> element allows a <literal><parent></literal> subelement that maps a property of the component class as a reference back to the containing entity."
-msgstr "<literal>table</literal>: El nombre de la clase unida."
+#. Tag: para
+#: basic_mapping.xml:1913
+#, no-c-format
+msgid ""
+"The <literal><component></literal> element allows a <literal><"
+"parent></literal> subelement that maps a property of the component class "
+"as a reference back to the containing entity."
+msgstr ""
+"El elemento <literal><component></literal> permite un subelemento "
+"<literal><parent></literal> que mapea una propiedad de la clase del "
+"componente como una referencia de regreso a la entidad contenedora."
-#: index.docbook:1919
-msgid "The <literal><dynamic-component></literal> element allows a <literal>Map</literal> to be mapped as a component, where the property names refer to keys of the map, see <xref linkend=\"components-dynamic\"/>."
-msgstr "<literal>schema</literal> (opcional): Sobrescribe el nombre de esquema especificado por el elemento raíz <literal><hibernate-mapping></literal>."
+#. Tag: para
+#: basic_mapping.xml:1919
+#, no-c-format
+msgid ""
+"The <literal><dynamic-component></literal> element allows a "
+"<literal>Map</literal> to be mapped as a component, where the property names "
+"refer to keys of the map, see <xref linkend=\"components-dynamic\"/>."
+msgstr ""
+"El elemento <literal><dynamic-component></literal> permite que un "
+"<literal>Map</literal> sea mapeado como un componente, donde los nombres de "
+"las propiedades se corresponden a las claves del mapa, ver <xref linkend="
+"\"components-dynamic\"/>."
-#: index.docbook:1928
+#. Tag: title
+#: basic_mapping.xml:1928
+#, no-c-format
msgid "properties"
-msgstr "<literal>catalog</literal> (opcional): Sobrescribe el nombre de catálogo especificado por el elemento raíz <literal><hibernate-mapping></literal>."
+msgstr "properties"
-#: index.docbook:1930
-msgid "The <literal><properties></literal> element allows the definition of a named, logical grouping of properties of a class. The most important use of the construct is that it allows a combination of properties to be the target of a <literal>property-ref</literal>. It is also a convenient way to define a multi-column unique constraint."
-msgstr "<literal>fetch</literal> (opcional - por defecto a <literal>join</literal>): Si se establece a <literal>join</literal>, por defecto, Hibernate usará una unión interior (inner join) para recuperar un <literal><join></literal> definido por una clase o sus superclases y una unión externa (outer join) para un <literal><join></literal> definido por una subclase. Si se establece a <literal>select</literal>, entonces Hibernate usará una select secuencial para un <literal><join></literal> definido en una subclase, que será publicada sólo si una fila resulta representar una instancia de la subclase. Las uniones interiores todavía serán usados para recuperar un <literal><join></literal> definido por la clase y sus superclases."
+#. Tag: para
+#: basic_mapping.xml:1930
+#, no-c-format
+msgid ""
+"The <literal><properties></literal> element allows the definition of a "
+"named, logical grouping of properties of a class. The most important use of "
+"the construct is that it allows a combination of properties to be the target "
+"of a <literal>property-ref</literal>. It is also a convenient way to define "
+"a multi-column unique constraint."
+msgstr ""
+"El elemento <literal><properties></literal> permite la definición de "
+"un grupo de propiedades lógico con nombre de una clase. El uso más "
+"importante de la contrucción es que permite que una combinación de "
+"propiedades sea objetivo de una <literal>property-ref</literal>. Es también "
+"una forma conveniente de definir una restricción de unicidad multicolumna."
-#: index.docbook:1946
+#. Tag: programlisting
+#: basic_mapping.xml:1946
+#, no-c-format
msgid ""
- "<![CDATA[<properties\n"
- " name=\"logicalName\"\n"
- " insert=\"true|false\"\n"
- " update=\"true|false\"\n"
- " optimistic-lock=\"true|false\"\n"
- " unique=\"true|false\"\n"
- ">\n"
- "\n"
- " <property ...../>\n"
- " <many-to-one .... />\n"
- " ........\n"
- "</properties>]]>"
-msgstr "<literal>inverse</literal> (opcional - por defecto a <literal>false</literal>): De habilitarse, Hibernate no intentará insertar o actualizar las propiedades definidas por esta unión."
+"<![CDATA[<properties\n"
+" name=\"logicalName\"\n"
+" insert=\"true|false\"\n"
+" update=\"true|false\"\n"
+" optimistic-lock=\"true|false\"\n"
+" unique=\"true|false\"\n"
+">\n"
+"\n"
+" <property ...../>\n"
+" <many-to-one .... />\n"
+" ........\n"
+"</properties>]]>"
+msgstr ""
-#: index.docbook:1949
-msgid "<literal>name</literal>: The logical name of the grouping - <emphasis>not</emphasis> an actual property name."
-msgstr "<literal>optional</literal> (opcional - por defecto a <literal>false</literal>): De habilitarse, Hibernate insertará una fila sólo si las propiedades definidas por esta unión son no nulas y siempre usará una unión externa para recuperar las propiedades."
+#. Tag: para
+#: basic_mapping.xml:1949
+#, no-c-format
+msgid ""
+"<literal>name</literal>: The logical name of the grouping - <emphasis>not</"
+"emphasis> an actual property name."
+msgstr ""
+"<literal>name</literal>: El nombre lógico del agrupamiento - <emphasis>no</"
+"emphasis> un nombre de propiedad real."
-#: index.docbook:1967
-msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): Specifies that updates to these properties do or do not require acquisition of the optimistic lock. In other words, determines if a version increment should occur when these properties are dirty."
-msgstr "Esta funcionalidad es a menudo solamente útil para modelos de datos heredados; recomendamos menos tablas que clases un modelo de dominio más granularizado. Sin embargo, es útil para cambiar entre estrategias de mapeo de herencias en una misma jerarquía, como se explica luego."
+#. Tag: para
+#: basic_mapping.xml:1967
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): Specifies that updates to these properties do or do not require "
+"acquisition of the optimistic lock. In other words, determines if a version "
+"increment should occur when these properties are dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional - por defecto a <literal>true</"
+"literal>): Especifica si las actualizaciones de estas propiedades requieren "
+"o no de la adquisición de un bloqueo optimista. En otras palabras, determina "
+"si debe ocurrir un incremento de versión cuando estas propiedades están "
+"desactualizadas."
-#: index.docbook:1984
-msgid "For example, if we have the following <literal><properties></literal> mapping:"
-msgstr "Hasta ahora hemos visto el elemento <literal><key></literal> pocas veces. Aparece en cualquier sitio en que el elemento padre de mapeo defina una unión a una nueva tabla, y define la clave foránea en la tabla unida, que referencia la clave primaria de la tabla original."
+#. Tag: para
+#: basic_mapping.xml:1984
+#, no-c-format
+msgid ""
+"For example, if we have the following <literal><properties></literal> "
+"mapping:"
+msgstr ""
+"Por ejemplo, si tenemos el siguiente mapeo de <literal><properties></"
+"literal>:"
-#: index.docbook:1988
+#. Tag: programlisting
+#: basic_mapping.xml:1988
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"personNumber\"/>\n"
- " ...\n"
- " <properties name=\"name\"\n"
- " unique=\"true\" update=\"false\">\n"
- " <property name=\"firstName\"/>\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"lastName\"/>\n"
- " </properties>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"personNumber\"/>\n"
+" ...\n"
+" <properties name=\"name\"\n"
+" unique=\"true\" update=\"false\">\n"
+" <property name=\"firstName\"/>\n"
+" <property name=\"initial\"/>\n"
+" <property name=\"lastName\"/>\n"
+" </properties>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<key\n"
- " column=\"columnname\"\n"
- " on-delete=\"noaction|cascade\"\n"
- " property-ref=\"propertyName\"\n"
- " not-null=\"true|false\"\n"
- " update=\"true|false\"\n"
- " unique=\"true|false\"\n"
- "/>]]>"
-#: index.docbook:1990
-msgid "Then we might have some legacy data association which refers to this unique key of the <literal>Person</literal> table, instead of to the primary key:"
-msgstr "<literal>column</literal> (opcional): El nombre de columna de la clave foránea. Puede ser también especificado por elemento(s) anidado(s) <literal><column></literal>."
+#. Tag: para
+#: basic_mapping.xml:1990
+#, no-c-format
+msgid ""
+"Then we might have some legacy data association which refers to this unique "
+"key of the <literal>Person</literal> table, instead of to the primary key:"
+msgstr ""
+"Entonces puede que tengamos alguna asociación de datos heredados que se "
+"refiera a esta clave única de la tabla de <literal>Person</literal>, en vez "
+"de la clave primaria:"
-#: index.docbook:1995
+#. Tag: programlisting
+#: basic_mapping.xml:1995
+#, no-c-format
msgid ""
- "<![CDATA[<many-to-one name=\"person\"\n"
- " class=\"Person\" property-ref=\"name\">\n"
- " <column name=\"firstName\"/>\n"
- " <column name=\"initial\"/>\n"
- " <column name=\"lastName\"/>\n"
- "</many-to-one>]]>"
-msgstr "<literal>on-delete</literal> (opcional, por defecto a <literal>noaction</literal>): Especifica si la restricción de clave foránea tiene el borrado en cascada habilitado a nivel de base de datos."
+"<![CDATA[<many-to-one name=\"person\"\n"
+" class=\"Person\" property-ref=\"name\">\n"
+" <column name=\"firstName\"/>\n"
+" <column name=\"initial\"/>\n"
+" <column name=\"lastName\"/>\n"
+"</many-to-one>]]>"
+msgstr ""
-#: index.docbook:1997
-msgid "We don't recommend the use of this kind of thing outside the context of mapping legacy data."
-msgstr "<literal>property-ref</literal> (opcional): Especifica que la clave foránea referencia columnas que no son del la clave primaria de la tabla original. (Provisto para datos heredados.)"
+#. Tag: para
+#: basic_mapping.xml:1997
+#, no-c-format
+msgid ""
+"We don't recommend the use of this kind of thing outside the context of "
+"mapping legacy data."
+msgstr ""
+"No recomendamos el uso de este tipo de cosas fuera del contexto del mapeo de "
+"datos heredados."
-#: index.docbook:2005
+#. Tag: title
+#: basic_mapping.xml:2005
+#, no-c-format
msgid "subclass"
-msgstr "<literal>not-null</literal> (opcional): Especifica que las columnas de la clave foránea son no nulables (esto está implicado si la clave foránea es también parte de la clave primaria)."
+msgstr "subclass"
-#: index.docbook:2007
-msgid "Finally, polymorphic persistence requires the declaration of each subclass of the root persistent class. For the table-per-class-hierarchy mapping strategy, the <literal><subclass></literal> declaration is used."
-msgstr "<literal>update</literal> (opcional): Especifica que la clave foránea nunca debe ser actualizada (esto está implicado si la clave foránea es también parte de la clave primaria)."
+#. Tag: para
+#: basic_mapping.xml:2007
+#, no-c-format
+msgid ""
+"Finally, polymorphic persistence requires the declaration of each subclass "
+"of the root persistent class. For the table-per-class-hierarchy mapping "
+"strategy, the <literal><subclass></literal> declaration is used."
+msgstr ""
+"Finalmente, la persistencia polimórfica requiere la declaración de la clase "
+"persistente raíz. Para la estrategia de mapeo tabla-por-jerarquía-de-clases, "
+"se usa la declaración de <literal><subclass></literal>."
-#: index.docbook:2020
+#. Tag: programlisting
+#: basic_mapping.xml:2020
+#, no-c-format
msgid ""
- "<![CDATA[<subclass\n"
- " name=\"ClassName\"\n"
- " discriminator-value=\"discriminator_value\"\n"
- " proxy=\"ProxyInterface\"\n"
- " lazy=\"true|false\"\n"
- " dynamic-update=\"true|false\"\n"
- " dynamic-insert=\"true|false\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name\"\n"
- " extends=\"SuperclassName\">\n"
- "\n"
- " <property .... />\n"
- " .....\n"
- "</subclass>]]>"
-msgstr "<literal>unique</literal> (opcional): Especifica que la clave foránea debe tener una restricción de unicidad (esto está implicado si la clave foránea es también la clave primaria)."
+"<![CDATA[<subclass\n"
+" name=\"ClassName\"\n"
+" discriminator-value=\"discriminator_value\"\n"
+" proxy=\"ProxyInterface\"\n"
+" lazy=\"true|false\"\n"
+" dynamic-update=\"true|false\"\n"
+" dynamic-insert=\"true|false\"\n"
+" entity-name=\"EntityName\"\n"
+" node=\"element-name\"\n"
+" extends=\"SuperclassName\">\n"
+"\n"
+" <property .... />\n"
+" .....\n"
+"</subclass>]]>"
+msgstr ""
-#: index.docbook:2023, index.docbook:2081, index.docbook:2144
-msgid "<literal>name</literal>: The fully qualified class name of the subclass."
-msgstr "Recomendamos que, para los sistemas en donde el rendimiento sea importante, todas las claves deben ser definidas <literal>on-delete=\"cascade\"</literal>, e Hibernate usará una restricción <literal>ON CASCADE DELETE</literal> a nivel de base de datos, en vez de muchas sentencias <literal>DELETE</literal> individuales. Ten en cuenta que esta funcionalidad se salta la habitual estrategia de bloqueo optimista de Hibernate para datos versionados."
+#. Tag: para
+#: basic_mapping.xml:2023 basic_mapping.xml:2081 basic_mapping.xml:2144
+#, fuzzy, no-c-format
+msgid ""
+"<literal>name</literal>: The fully qualified class name of the subclass."
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>name</literal>: El nombre de clase cualificado completamente de la "
+"subclase.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>name</literal>: El nombre de clase completamente cualificado de la "
+"subclase.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>name</literal>: El nombre de clase completamente cualificado de la "
+"subclase."
-#: index.docbook:2028
-msgid "<literal>discriminator-value</literal> (optional - defaults to the class name): A value that distiguishes individual subclasses."
-msgstr "Los atributos <literal>not-null</literal> y <literal>update</literal> son útiles al mapear una asociación uno a muchos unidireccional. Si mapeas una uno a muchos unidireccional a una clave foránea no nulable, <emphasis>debes</emphasis> declarar la columna clave usando <literal><key not-null=\"true\"></literal>."
+#. Tag: para
+#: basic_mapping.xml:2028
+#, no-c-format
+msgid ""
+"<literal>discriminator-value</literal> (optional - defaults to the class "
+"name): A value that distiguishes individual subclasses."
+msgstr ""
+"<literal>discriminator-value</literal> (opcional - por defecto al nombre de "
+"la clase): Un valor que distingue a subclases individuales."
-#: index.docbook:2034, index.docbook:2091, index.docbook:2154
-msgid "<literal>proxy</literal> (optional): Specifies a class or interface to use for lazy initializing proxies."
-msgstr "los elementos column y formula"
+#. Tag: para
+#: basic_mapping.xml:2034 basic_mapping.xml:2091 basic_mapping.xml:2154
+#, fuzzy, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): Specifies a class or interface to use "
+"for lazy initializing proxies."
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>proxy</literal> (opcional): Especifica una clase o interface a usar "
+"para proxies de inicialización perezosa.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>proxy</literal> (opcional): Especifica una clase o interface a usar "
+"para proxies de inicializacón perezosa.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>proxy</literal> (optional): Especifica una clase o interface a usar "
+"para proxies de inicializacón perezosa."
-#: index.docbook:2040, index.docbook:2097, index.docbook:2160
-msgid "<literal>lazy</literal> (optional, defaults to <literal>true</literal>): Setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
-msgstr "Cualquier elemento de mapeo que acepte un atributo <literal>column</literal> aceptará alternativamente un subelemento <literal><column></literal>. De forma similar, <literal><formula></literal> es una alternativa al atributo <literal>formula</literal>."
+#. Tag: para
+#: basic_mapping.xml:2040 basic_mapping.xml:2097 basic_mapping.xml:2160
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional, defaults to <literal>true</literal>): "
+"Setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
+msgstr ""
+"<literal>lazy</literal> (opcional, por defecto a <literal>true</literal>): "
+"Establecer <literal>lazy=\"false\"</literal> deshabilita el uso de "
+"recuperación perezosa."
-#: index.docbook:2048
-msgid "Each subclass should declare its own persistent properties and subclasses. <literal><version></literal> and <literal><id></literal> properties are assumed to be inherited from the root class. Each subclass in a heirarchy must define a unique <literal>discriminator-value</literal>. If none is specified, the fully qualified Java class name is used."
+#. Tag: para
+#: basic_mapping.xml:2048
+#, no-c-format
+msgid ""
+"Each subclass should declare its own persistent properties and subclasses. "
+"<literal><version></literal> and <literal><id></literal> "
+"properties are assumed to be inherited from the root class. Each subclass in "
+"a heirarchy must define a unique <literal>discriminator-value</literal>. If "
+"none is specified, the fully qualified Java class name is used."
msgstr ""
- "<![CDATA[<column\n"
- " name=\"column_name\"\n"
- " length=\"N\"\n"
- " precision=\"N\"\n"
- " scale=\"N\"\n"
- " not-null=\"true|false\"\n"
- " unique=\"true|false\"\n"
- " unique-key=\"multicolumn_unique_key_name\"\n"
- " index=\"index_name\"\n"
- " sql-type=\"sql_type_name\"\n"
- " check=\"SQL expression\"/>]]>"
+"UNTRANSLATED! Each subclass should declare its own persistent properties and "
+"subclasses. <literal><version></literal> and <literal><id></"
+"literal> properties are assumed to be inherited from the root class. Each "
+"subclass in a heirarchy must define a unique <literal>discriminator-value</"
+"literal>. If none is specified, the fully qualified Java class name is used."
-#: index.docbook:2056, index.docbook:2114, index.docbook:2172
-msgid "For information about inheritance mappings, see <xref linkend=\"inheritance\"/>."
-msgstr "<![CDATA[<formula>expresión SQL</formula>]]>"
+#. Tag: para
+#: basic_mapping.xml:2056 basic_mapping.xml:2114 basic_mapping.xml:2172
+#, no-c-format
+msgid ""
+"For information about inheritance mappings, see <xref linkend=\"inheritance"
+"\"/>."
+msgstr ""
+"Para información acerca de mapeos de herencia, ver <xref linkend="
+"\"inheritance\"/>."
-#: index.docbook:2063
+#. Tag: title
+#: basic_mapping.xml:2063
+#, no-c-format
msgid "joined-subclass"
-msgstr "Los atributos <literal>column</literal> y <literal>formula</literal> pueden incluso ser combinados dentro del mismo mapeo de propiedad o asociación para expresar, por ejemplo, condiciones de unión exóticas."
+msgstr "joined-subclass"
-#: index.docbook:2065
-msgid "Alternatively, each subclass may be mapped to its own table (table-per-subclass mapping strategy). Inherited state is retrieved by joining with the table of the superclass. We use the <literal><joined-subclass></literal> element."
+#. Tag: para
+#: basic_mapping.xml:2065
+#, no-c-format
+msgid ""
+"Alternatively, each subclass may be mapped to its own table (table-per-"
+"subclass mapping strategy). Inherited state is retrieved by joining with the "
+"table of the superclass. We use the <literal><joined-subclass></"
+"literal> element."
msgstr ""
- "<![CDATA[<many-to-one name=\"homeAddress\" class=\"Address\"\n"
- " insert=\"false\" update=\"false\">\n"
- " <column name=\"person_id\" not-null=\"true\" length=\"10\"/>\n"
- " <formula>'MAILING'</formula>\n"
- "</many-to-one>]]>"
+"Alternativamente, cada subclase puede ser mapeada a su propia tabla "
+"(estrategia de mapeo tabla-por-subclase). El estado heredado se recupera "
+"uniendo con la tabla de la superclase. Usamos el elemento <literal><"
+"joined-subclass></literal>."
-#: index.docbook:2078
+#. Tag: programlisting
+#: basic_mapping.xml:2078
+#, no-c-format
msgid ""
- "<![CDATA[<joined-subclass\n"
- " name=\"ClassName\"\n"
- " table=\"tablename\"\n"
- " proxy=\"ProxyInterface\"\n"
- " lazy=\"true|false\"\n"
- " dynamic-update=\"true|false\"\n"
- " dynamic-insert=\"true|false\"\n"
- " schema=\"schema\"\n"
- " catalog=\"catalog\"\n"
- " extends=\"SuperclassName\"\n"
- " persister=\"ClassName\"\n"
- " subselect=\"SQL expression\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name\">\n"
- "\n"
- " <key .... >\n"
- "\n"
- " <property .... />\n"
- " .....\n"
- "</joined-subclass>]]>"
-msgstr "import"
+"<![CDATA[<joined-subclass\n"
+" name=\"ClassName\"\n"
+" table=\"tablename\"\n"
+" proxy=\"ProxyInterface\"\n"
+" lazy=\"true|false\"\n"
+" dynamic-update=\"true|false\"\n"
+" dynamic-insert=\"true|false\"\n"
+" schema=\"schema\"\n"
+" catalog=\"catalog\"\n"
+" extends=\"SuperclassName\"\n"
+" persister=\"ClassName\"\n"
+" subselect=\"SQL expression\"\n"
+" entity-name=\"EntityName\"\n"
+" node=\"element-name\">\n"
+"\n"
+" <key .... >\n"
+"\n"
+" <property .... />\n"
+" .....\n"
+"</joined-subclass>]]>"
+msgstr ""
-#: index.docbook:2086, index.docbook:2149
+#. Tag: para
+#: basic_mapping.xml:2086 basic_mapping.xml:2149
+#, no-c-format
msgid "<literal>table</literal>: The name of the subclass table."
-msgstr "<![CDATA[<import class=\"java.lang.Object\" rename=\"Universe\"/>]]>"
+msgstr "<literal>table</literal>: El nombre de tabla de la subclase."
-#: index.docbook:2105
-msgid "No discriminator column is required for this mapping strategy. Each subclass must, however, declare a table column holding the object identifier using the <literal><key></literal> element. The mapping at the start of the chapter would be re-written as:"
-msgstr "<literal>rename</literal> (opcional - por defecto al nombre de clase sin cualificar): Un nombre que será usado en el leguaje de consulta."
+#. Tag: para
+#: basic_mapping.xml:2105
+#, no-c-format
+msgid ""
+"No discriminator column is required for this mapping strategy. Each subclass "
+"must, however, declare a table column holding the object identifier using "
+"the <literal><key></literal> element. The mapping at the start of the "
+"chapter would be re-written as:"
+msgstr ""
+"No se requiere de una columna discriminadora para esta estrategia de mapeo. "
+"Cada subclase debe, sin embargo, declarar una columna de tabla que tenga el "
+"identificador del objeto usando el elemento <literal><key></literal>. "
+"El mapeo del comienzo del capítulo debería ser reescrito como:"
-#: index.docbook:2112
+#. Tag: programlisting
+#: basic_mapping.xml:2112
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping package=\"eg\">\n"
- "\n"
- " <class name=\"Cat\" table=\"CATS\">\n"
- " <id name=\"id\" column=\"uid\" type=\"long\">\n"
- " <generator class=\"hilo\"/>\n"
- " </id>\n"
- " <property name=\"birthdate\" type=\"date\"/>\n"
- " <property name=\"color\" not-null=\"true\"/>\n"
- " <property name=\"sex\" not-null=\"true\"/>\n"
- " <property name=\"weight\"/>\n"
- " <many-to-one name=\"mate\"/>\n"
- " <set name=\"kittens\">\n"
- " <key column=\"MOTHER\"/>\n"
- " <one-to-many class=\"Cat\"/>\n"
- " </set>\n"
- " <joined-subclass name=\"DomesticCat\" table=\"DOMESTIC_CATS\">\n"
- " <key column=\"CAT\"/>\n"
- " <property name=\"name\" type=\"string\"/>\n"
- " </joined-subclass>\n"
- " </class>\n"
- "\n"
- " <class name=\"eg.Dog\">\n"
- " <!-- mapping for Dog could go here -->\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-msgstr "<title>any</title>"
+"<![CDATA[<?xml version=\"1.0\"?>\n"
+"<!DOCTYPE hibernate-mapping PUBLIC\n"
+" \"-//Hibernate/Hibernate Mapping DTD//EN\"\n"
+" \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+"\n"
+"<hibernate-mapping package=\"eg\">\n"
+"\n"
+" <class name=\"Cat\" table=\"CATS\">\n"
+" <id name=\"id\" column=\"uid\" type=\"long\">\n"
+" <generator class=\"hilo\"/>\n"
+" </id>\n"
+" <property name=\"birthdate\" type=\"date\"/>\n"
+" <property name=\"color\" not-null=\"true\"/>\n"
+" <property name=\"sex\" not-null=\"true\"/>\n"
+" <property name=\"weight\"/>\n"
+" <many-to-one name=\"mate\"/>\n"
+" <set name=\"kittens\">\n"
+" <key column=\"MOTHER\"/>\n"
+" <one-to-many class=\"Cat\"/>\n"
+" </set>\n"
+" <joined-subclass name=\"DomesticCat\" table=\"DOMESTIC_CATS"
+"\">\n"
+" <key column=\"CAT\"/>\n"
+" <property name=\"name\" type=\"string\"/>\n"
+" </joined-subclass>\n"
+" </class>\n"
+"\n"
+" <class name=\"eg.Dog\">\n"
+" <!-- mapping for Dog could go here -->\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
+msgstr ""
-#: index.docbook:2121
+#. Tag: title
+#: basic_mapping.xml:2121
+#, no-c-format
msgid "union-subclass"
-msgstr "El atributo <literal>meta-type</literal> permite a la aplicación especificar un tipo personalizado que mapee columnas de base de datos a clases persistentes que tengan propiedades identificadoras del tipo especificado por <literal>id-type</literal>. Debes especificar el mapeo de valores del meta-type a nombres de clase."
+msgstr "union-subclass"
-#: index.docbook:2123
-msgid "A third option is to map only the concrete classes of an inheritance hierarchy to tables, (the table-per-concrete-class strategy) where each table defines all persistent state of the class, including inherited state. In Hibernate, it is not absolutely necessary to explicitly map such inheritance hierarchies. You can simply map each class with a separate <literal><class></literal> declaration. However, if you wish use polymorphic associations (e.g. an association to the superclass of your hierarchy), you need to use the <literal><union-subclass></literal> mapping."
+#. Tag: para
+#: basic_mapping.xml:2123
+#, no-c-format
+msgid ""
+"A third option is to map only the concrete classes of an inheritance "
+"hierarchy to tables, (the table-per-concrete-class strategy) where each "
+"table defines all persistent state of the class, including inherited state. "
+"In Hibernate, it is not absolutely necessary to explicitly map such "
+"inheritance hierarchies. You can simply map each class with a separate "
+"<literal><class></literal> declaration. However, if you wish use "
+"polymorphic associations (e.g. an association to the superclass of your "
+"hierarchy), you need to use the <literal><union-subclass></literal> "
+"mapping."
msgstr ""
- "<![CDATA[<any name=\"being\" id-type=\"long\" meta-type=\"string\">\n"
- " <meta-value value=\"TBL_ANIMAL\" class=\"Animal\"/>\n"
- " <meta-value value=\"TBL_HUMAN\" class=\"Human\"/>\n"
- " <meta-value value=\"TBL_ALIEN\" class=\"Alien\"/>\n"
- " <column name=\"table_name\"/>\n"
- " <column name=\"id\"/>\n"
- "</any>]]>"
+"Una tercera opción es mapear sólo las clases concretas de una jerarquía de "
+"clases a tablas, (la estrategia tabla-por-clase-concreta) donde cada tabla "
+"define todo el estado persistente de la clase, incluyendo el estado "
+"heredado. En Hibernate, no es absolutamente necesario mapear dichas "
+"jerarquías de herencia. Puedes simplemente mapear cada clase con una "
+"declaración <literal><class></literal> separada. Sin embargo, si "
+"deseas usar asociaciones polimórficas (por ejemplo, una asociación a la "
+"superclase de tu jerarquía), debes usar el mapeo <literal><union-"
+"subclass></literal>."
-#: index.docbook:2141
+#. Tag: programlisting
+#: basic_mapping.xml:2141
+#, no-c-format
msgid ""
- "<![CDATA[<union-subclass\n"
- " name=\"ClassName\"\n"
- " table=\"tablename\"\n"
- " proxy=\"ProxyInterface\"\n"
- " lazy=\"true|false\"\n"
- " dynamic-update=\"true|false\"\n"
- " dynamic-insert=\"true|false\"\n"
- " schema=\"schema\"\n"
- " catalog=\"catalog\"\n"
- " extends=\"SuperclassName\"\n"
- " abstract=\"true|false\"\n"
- " persister=\"ClassName\"\n"
- " subselect=\"SQL expression\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name\">\n"
- "\n"
- " <property .... />\n"
- " .....\n"
- "</union-subclass>]]>"
+"<![CDATA[<union-subclass\n"
+" name=\"ClassName\"\n"
+" table=\"tablename\"\n"
+" proxy=\"ProxyInterface\"\n"
+" lazy=\"true|false\"\n"
+" dynamic-update=\"true|false\"\n"
+" dynamic-insert=\"true|false\"\n"
+" schema=\"schema\"\n"
+" catalog=\"catalog\"\n"
+" extends=\"SuperclassName\"\n"
+" abstract=\"true|false\"\n"
+" persister=\"ClassName\"\n"
+" subselect=\"SQL expression\"\n"
+" entity-name=\"EntityName\"\n"
+" node=\"element-name\">\n"
+"\n"
+" <property .... />\n"
+" .....\n"
+"</union-subclass>]]>"
msgstr ""
- "<![CDATA[<any\n"
- " name=\"propertyName\"\n"
- " id-type=\"idtypename\"\n"
- " meta-type=\"metatypename\"\n"
- " cascade=\"cascade_style\"\n"
- " access=\"field|property|ClassName\"\n"
- " optimistic-lock=\"true|false\"\n"
- ">\n"
- " <meta-value ... />\n"
- " <meta-value ... />\n"
- " .....\n"
- " <column .... />\n"
- " <column .... />\n"
- " .....\n"
- "</any>]]>"
-#: index.docbook:2168
-msgid "No discriminator column or key column is required for this mapping strategy."
-msgstr "<literal>access</literal> (opcional - por defecto a <literal>property</literal>): La estrategia que Hibernate debe usar para acceder al valor de la propiedad."
+#. Tag: para
+#: basic_mapping.xml:2168
+#, no-c-format
+msgid ""
+"No discriminator column or key column is required for this mapping strategy."
+msgstr ""
+"No se requiere columna o columna clave discriminadora para esta estrategia "
+"de mapeo."
-#: index.docbook:2179
+#. Tag: title
+#: basic_mapping.xml:2179
+#, no-c-format
msgid "join"
-msgstr "Tipos de Hibernate"
+msgstr "join"
-#: index.docbook:2181
-msgid "Using the <literal><join></literal> element, it is possible to map properties of one class to several tables, when there's a 1-to-1 relationship between the tables."
-msgstr "Entidades y Valores"
+#. Tag: para
+#: basic_mapping.xml:2181
+#, no-c-format
+msgid ""
+"Using the <literal><join></literal> element, it is possible to map "
+"properties of one class to several tables, when there's a 1-to-1 "
+"relationship between the tables."
+msgstr ""
+"Usando el elemento <literal><join></literal>, es posible mapear "
+"propiedades de una clase a varias tablas."
-#: index.docbook:2195
+#. Tag: programlisting
+#: basic_mapping.xml:2195
+#, no-c-format
msgid ""
- "<![CDATA[<join\n"
- " table=\"tablename\"\n"
- " schema=\"owner\"\n"
- " catalog=\"catalog\"\n"
- " fetch=\"join|select\"\n"
- " inverse=\"true|false\"\n"
- " optional=\"true|false\">\n"
- "\n"
- " <key ... />\n"
- "\n"
- " <property ... />\n"
- " ...\n"
- "</join>]]>"
-msgstr "Para entender el comportamiento de varios objetos a nivel de lenguaje Java con respecto al servicio de persistencia, necesitamos clasificarlos en dos grupos:"
+"<![CDATA[<join\n"
+" table=\"tablename\"\n"
+" schema=\"owner\"\n"
+" catalog=\"catalog\"\n"
+" fetch=\"join|select\"\n"
+" inverse=\"true|false\"\n"
+" optional=\"true|false\">\n"
+"\n"
+" <key ... />\n"
+"\n"
+" <property ... />\n"
+" ...\n"
+"</join>]]>"
+msgstr ""
-#: index.docbook:2199
+#. Tag: para
+#: basic_mapping.xml:2199
+#, no-c-format
msgid "<literal>table</literal>: The name of the joined table."
-msgstr "Una <emphasis>entidad</emphasis> existe independientemente de cualquier otros objetos que referencien a la entidad. Contrasta esto con el model habitual de Java donde un objeto desreferenciado es recolectado como basura. Las entidades deben ser salvadas y borradas explícitamente (excepto que las grabaciones y borrados puedan ser <emphasis>tratados en cascada</emphasis> desde una entidad padre a sus hijos). Esto es diferente al modelo de persistencia de objetos por alcance - y se corresponde más de cerca a cómo los objetos de aplicación son usados habitualmente en grandes sistemas. Las entidades soportan referencias circulares y compartidas, que tambié pueden ser versionadas."
+msgstr "<literal>table</literal>: El nombre de la clase unida."
-#: index.docbook:2216
-msgid "<literal>fetch</literal> (optional - defaults to <literal>join</literal>): If set to <literal>join</literal>, the default, Hibernate will use an inner join to retrieve a <literal><join></literal> defined by a class or its superclasses and an outer join for a <literal><join></literal> defined by a subclass. If set to <literal>select</literal> then Hibernate will use a sequential select for a <literal><join></literal> defined on a subclass, which will be issued only if a row turns out to represent an instance of the subclass. Inner joins will still be used to retrieve a <literal><join></literal> defined by the class and its superclasses."
-msgstr "Volveremos a visitar ambos conceptos a lo largo de la documentación."
+#. Tag: para
+#: basic_mapping.xml:2216
+#, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>join</literal>): "
+"If set to <literal>join</literal>, the default, Hibernate will use an inner "
+"join to retrieve a <literal><join></literal> defined by a class or its "
+"superclasses and an outer join for a <literal><join></literal> defined "
+"by a subclass. If set to <literal>select</literal> then Hibernate will use a "
+"sequential select for a <literal><join></literal> defined on a "
+"subclass, which will be issued only if a row turns out to represent an "
+"instance of the subclass. Inner joins will still be used to retrieve a "
+"<literal><join></literal> defined by the class and its superclasses."
+msgstr ""
+"<literal>fetch</literal> (opcional - por defecto a <literal>join</literal>): "
+"Si se establece a <literal>join</literal>, por defecto, Hibernate usará una "
+"unión interior (inner join) para recuperar un <literal><join></"
+"literal> definido por una clase o sus superclases y una unión externa (outer "
+"join) para un <literal><join></literal> definido por una subclase. Si "
+"se establece a <literal>select</literal>, entonces Hibernate usará una "
+"select secuencial para un <literal><join></literal> definido en una "
+"subclase, que será publicada sólo si una fila resulta representar una "
+"instancia de la subclase. Las uniones interiores todavía serán usados para "
+"recuperar un <literal><join></literal> definido por la clase y sus "
+"superclases."
-#: index.docbook:2229
-msgid "<literal>inverse</literal> (optional - defaults to <literal>false</literal>): If enabled, Hibernate will not try to insert or update the properties defined by this join."
-msgstr "EL desafío es mapear el sistema de tipos de Java (y la definición de entidades y tipos de valor de los desarrolladores) al sistema de tipos de SQL/base de datos. EL puente entre ambos sistemas es provisto por Hibernate: para las entidades usamos <literal><class></literal>, <literal><subclass></literal>, etc. Para los tipos de valor usamos <literal><property></literal>, <literal><component></literal>, etc, usualmente con un atributo <literal>type</literal>. El valor de este atributo es el nombre de un <emphasis>tipo de mapeo</emphasis> de Hibernate. Hibernate provee de fábrica muchos mapeos (para tipos de valores del JDK estándar). Puedes escribir tus propios mapeos de tipo, así como implementar tus estrategias de conversión personalizadas, como veremos luego."
+#. Tag: para
+#: basic_mapping.xml:2229
+#, no-c-format
+msgid ""
+"<literal>inverse</literal> (optional - defaults to <literal>false</"
+"literal>): If enabled, Hibernate will not try to insert or update the "
+"properties defined by this join."
+msgstr ""
+"<literal>inverse</literal> (opcional - por defecto a <literal>false</"
+"literal>): De habilitarse, Hibernate no intentará insertar o actualizar las "
+"propiedades definidas por esta unión."
-#: index.docbook:2236
-msgid "<literal>optional</literal> (optional - defaults to <literal>false</literal>): If enabled, Hibernate will insert a row only if the properties defined by this join are non-null and will always use an outer join to retrieve the properties."
-msgstr "Todos los tipos prefabricados de Hibernate soportan semántica de nulos excepto las colecciones."
+#. Tag: para
+#: basic_mapping.xml:2236
+#, no-c-format
+msgid ""
+"<literal>optional</literal> (optional - defaults to <literal>false</"
+"literal>): If enabled, Hibernate will insert a row only if the properties "
+"defined by this join are non-null and will always use an outer join to "
+"retrieve the properties."
+msgstr ""
+"<literal>optional</literal> (opcional - por defecto a <literal>false</"
+"literal>): De habilitarse, Hibernate insertará una fila sólo si las "
+"propiedades definidas por esta unión son no nulas y siempre usará una unión "
+"externa para recuperar las propiedades."
-#: index.docbook:2245
-msgid "For example, the address information for a person can be mapped to a separate table (while preserving value type semantics for all properties):"
-msgstr "Tipos de valores básicos"
+#. Tag: para
+#: basic_mapping.xml:2245
+#, no-c-format
+msgid ""
+"For example, the address information for a person can be mapped to a "
+"separate table (while preserving value type semantics for all properties):"
+msgstr ""
+"Por ejemplo, la información domiciliaria de una persona puede ser mapeada a "
+"una tabla separada (preservando a la vez la semántica de tipo de valor para "
+"todas las propiedades):"
-#: index.docbook:2250
+#. Tag: programlisting
+#: basic_mapping.xml:2250
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\"\n"
- " table=\"PERSON\">\n"
- "\n"
- " <id name=\"id\" column=\"PERSON_ID\">...</id>\n"
- "\n"
- " <join table=\"ADDRESS\">\n"
- " <key column=\"ADDRESS_ID\"/>\n"
- " <property name=\"address\"/>\n"
- " <property name=\"zip\"/>\n"
- " <property name=\"country\"/>\n"
- " </join>\n"
- " ...]]>"
-msgstr "Los <emphasis>tipos de mapeo básicos</emphasis> prefabricados pueden ser categorizado a grandes rasgos en:"
+"<![CDATA[<class name=\"Person\"\n"
+" table=\"PERSON\">\n"
+"\n"
+" <id name=\"id\" column=\"PERSON_ID\">...</id>\n"
+"\n"
+" <join table=\"ADDRESS\">\n"
+" <key column=\"ADDRESS_ID\"/>\n"
+" <property name=\"address\"/>\n"
+" <property name=\"zip\"/>\n"
+" <property name=\"country\"/>\n"
+" </join>\n"
+" ...]]>"
+msgstr ""
-#: index.docbook:2252
-msgid "This feature is often only useful for legacy data models, we recommend fewer tables than classes and a fine-grained domain model. However, it is useful for switching between inheritance mapping strategies in a single hierarchy, as explained later."
-msgstr "integer, long, short, float, double, character, byte, boolean, yes_no, true_false"
+#. Tag: para
+#: basic_mapping.xml:2252
+#, no-c-format
+msgid ""
+"This feature is often only useful for legacy data models, we recommend fewer "
+"tables than classes and a fine-grained domain model. However, it is useful "
+"for switching between inheritance mapping strategies in a single hierarchy, "
+"as explained later."
+msgstr ""
+"Esta funcionalidad es a menudo solamente útil para modelos de datos "
+"heredados; recomendamos menos tablas que clases un modelo de dominio más "
+"granularizado. Sin embargo, es útil para cambiar entre estrategias de mapeo "
+"de herencias en una misma jerarquía, como se explica luego."
-#: index.docbook:2262
+#. Tag: title
+#: basic_mapping.xml:2262
+#, no-c-format
msgid "<title>key</title>"
-msgstr "Mapeos de tipos primitivos de Java o clases de envoltura a la tipos de columna SQL (especícifica del vendedor). <literal>boolean, yes_no</literal> y <literal>true_false</literal> son codificaciones alternativas a <literal>boolean</literal> de Java o <literal>java.lang.Boolean</literal>."
+msgstr ""
-#: index.docbook:2264
-msgid "We've seen the <literal><key></literal> element crop up a few times now. It appears anywhere the parent mapping element defines a join to a new table, and defines the foreign key in the joined table, that references the primary key of the original table."
-msgstr "string"
+#. Tag: para
+#: basic_mapping.xml:2264
+#, no-c-format
+msgid ""
+"We've seen the <literal><key></literal> element crop up a few times "
+"now. It appears anywhere the parent mapping element defines a join to a new "
+"table, and defines the foreign key in the joined table, that references the "
+"primary key of the original table."
+msgstr ""
+"Hasta ahora hemos visto el elemento <literal><key></literal> pocas "
+"veces. Aparece en cualquier sitio en que el elemento padre de mapeo defina "
+"una unión a una nueva tabla, y define la clave foránea en la tabla unida, "
+"que referencia la clave primaria de la tabla original."
-#: index.docbook:2280
+#. Tag: programlisting
+#: basic_mapping.xml:2280
+#, no-c-format
msgid ""
- "<![CDATA[<key\n"
- " column=\"columnname\"\n"
- " on-delete=\"noaction|cascade\"\n"
- " property-ref=\"propertyName\"\n"
- " not-null=\"true|false\"\n"
- " update=\"true|false\"\n"
- " unique=\"true|false\"\n"
- "/>]]>"
-msgstr "Un mapeo del tipo <literal>java.lang.String</literal> a <literal>VARCHAR</literal> (u Oracle <literal>VAARCHAR2</literal>)."
+"<![CDATA[<key\n"
+" column=\"columnname\"\n"
+" on-delete=\"noaction|cascade\"\n"
+" property-ref=\"propertyName\"\n"
+" not-null=\"true|false\"\n"
+" update=\"true|false\"\n"
+" unique=\"true|false\"\n"
+"/>]]>"
+msgstr ""
-#: index.docbook:2291
-msgid "<literal>on-delete</literal> (optional, defaults to <literal>noaction</literal>): Specifies whether the foreign key constraint has database-level cascade delete enabled."
-msgstr "Mapeos de tipo desde <literal>java.util.Date</literal> y sus subclases a tipos SQL <literal>DATE</literal>, <literal>TIME</literal> y <literal>TIMESTAMP</literal> (o equivalente)."
+#. Tag: para
+#: basic_mapping.xml:2291
+#, no-c-format
+msgid ""
+"<literal>on-delete</literal> (optional, defaults to <literal>noaction</"
+"literal>): Specifies whether the foreign key constraint has database-level "
+"cascade delete enabled."
+msgstr ""
+"<literal>on-delete</literal> (opcional, por defecto a <literal>noaction</"
+"literal>): Especifica si la restricción de clave foránea tiene el borrado en "
+"cascada habilitado a nivel de base de datos."
-#: index.docbook:2298
-msgid "<literal>property-ref</literal> (optional): Specifies that the foreign key refers to columns that are not the primary key of the orginal table. (Provided for legacy data.)"
-msgstr "calendar, calendar_date"
+#. Tag: para
+#: basic_mapping.xml:2298
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): Specifies that the foreign key "
+"refers to columns that are not the primary key of the orginal table. "
+"(Provided for legacy data.)"
+msgstr ""
+"<literal>property-ref</literal> (opcional): Especifica que la clave foránea "
+"referencia columnas que no son del la clave primaria de la tabla original. "
+"(Provisto para datos heredados.)"
-#: index.docbook:2305
-msgid "<literal>not-null</literal> (optional): Specifies that the foreign key columns are not nullable (this is implied whenever the foreign key is also part of the primary key)."
-msgstr "Mapeos de tipo desde <literal>java.util.Date</literal> y sus subclases a tipos SQL <literal>TIMESTAMP</literal> y <literal>DATE</literal> (o equivalente)."
+#. Tag: para
+#: basic_mapping.xml:2305
+#, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): Specifies that the foreign key "
+"columns are not nullable (this is implied whenever the foreign key is also "
+"part of the primary key)."
+msgstr ""
+"<literal>not-null</literal> (opcional): Especifica que las columnas de la "
+"clave foránea son no nulables (esto está implicado si la clave foránea es "
+"también parte de la clave primaria)."
-#: index.docbook:2312
-msgid "<literal>update</literal> (optional): Specifies that the foreign key should never be updated (this is implied whenever the foreign key is also part of the primary key)."
-msgstr "big_decimal, big_integer"
+#. Tag: para
+#: basic_mapping.xml:2312
+#, no-c-format
+msgid ""
+"<literal>update</literal> (optional): Specifies that the foreign key should "
+"never be updated (this is implied whenever the foreign key is also part of "
+"the primary key)."
+msgstr ""
+"<literal>update</literal> (opcional): Especifica que la clave foránea nunca "
+"debe ser actualizada (esto está implicado si la clave foránea es también "
+"parte de la clave primaria)."
-#: index.docbook:2319
-msgid "<literal>unique</literal> (optional): Specifies that the foreign key should have a unique constraint (this is implied whenever the foreign key is also the primary key)."
-msgstr "Mapeos de tipo desde <literal>java.math.BigDecimal</literal> y <literal>java.math.BigInteger</literal> a <literal>NUMERIC</literal> (o <literal>NUMBER</literal> de Oracle)."
+#. Tag: para
+#: basic_mapping.xml:2319
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): Specifies that the foreign key should "
+"have a unique constraint (this is implied whenever the foreign key is also "
+"the primary key)."
+msgstr ""
+"<literal>unique</literal> (opcional): Especifica que la clave foránea debe "
+"tener una restricción de unicidad (esto está implicado si la clave foránea "
+"es también la clave primaria)."
-#: index.docbook:2327
-msgid "We recommend that for systems where delete performance is important, all keys should be defined <literal>on-delete=\"cascade\"</literal>, and Hibernate will use a database-level <literal>ON CASCADE DELETE</literal> constraint, instead of many individual <literal>DELETE</literal> statements. Be aware that this feature bypasses Hibernate's usual optimistic locking strategy for versioned data."
-msgstr "locale, timezone, currency"
+#. Tag: para
+#: basic_mapping.xml:2327
+#, no-c-format
+msgid ""
+"We recommend that for systems where delete performance is important, all "
+"keys should be defined <literal>on-delete=\"cascade\"</literal>, and "
+"Hibernate will use a database-level <literal>ON CASCADE DELETE</literal> "
+"constraint, instead of many individual <literal>DELETE</literal> statements. "
+"Be aware that this feature bypasses Hibernate's usual optimistic locking "
+"strategy for versioned data."
+msgstr ""
+"Recomendamos que, para los sistemas en donde el rendimiento sea importante, "
+"todas las claves deben ser definidas <literal>on-delete=\"cascade\"</"
+"literal>, e Hibernate usará una restricción <literal>ON CASCADE DELETE</"
+"literal> a nivel de base de datos, en vez de muchas sentencias "
+"<literal>DELETE</literal> individuales. Ten en cuenta que esta funcionalidad "
+"se salta la habitual estrategia de bloqueo optimista de Hibernate para datos "
+"versionados."
-#: index.docbook:2335
-msgid "The <literal>not-null</literal> and <literal>update</literal> attributes are useful when mapping a unidirectional one to many association. If you map a unidirectional one to many to a non-nullable foreign key, you <emphasis>must</emphasis> declare the key column using <literal><key not-null=\"true\"></literal>."
-msgstr "Mapeos de tipo desde <literal>java.util.Locale</literal>, <literal>java.util.TimeZone</literal> y <literal>java.util.Currency</literal> a <literal>VARCHAR</literal> (o <literal>VARCHAR2</literal> de Oracle). Las instancias de <literal>Locale</literal> y <literal>Currency</literal> son mapeadas a sus códigos ISO. Las instancias de <literal>TimeZone</literal> son mapeadas a sus <literal>ID</literal>."
+#. Tag: para
+#: basic_mapping.xml:2335
+#, no-c-format
+msgid ""
+"The <literal>not-null</literal> and <literal>update</literal> attributes are "
+"useful when mapping a unidirectional one to many association. If you map a "
+"unidirectional one to many to a non-nullable foreign key, you "
+"<emphasis>must</emphasis> declare the key column using <literal><key not-"
+"null=\"true\"></literal>."
+msgstr ""
+"Los atributos <literal>not-null</literal> y <literal>update</literal> son "
+"útiles al mapear una asociación uno a muchos unidireccional. Si mapeas una "
+"uno a muchos unidireccional a una clave foránea no nulable, <emphasis>debes</"
+"emphasis> declarar la columna clave usando <literal><key not-null=\"true"
+"\"></literal>."
-#: index.docbook:2345
+#. Tag: title
+#: basic_mapping.xml:2345
+#, no-c-format
msgid "column and formula elements"
-msgstr "<literal>class</literal>"
+msgstr "los elementos column y formula"
-#: index.docbook:2346
-msgid "Any mapping element which accepts a <literal>column</literal> attribute will alternatively accept a <literal><column></literal> subelement. Likewise, <literal><formula></literal> is an alternative to the <literal>formula</literal> attribute."
-msgstr "Un mapeo de tipo <literal>java.lang.Class</literal> a <literal>VARCHAR</literal> (o <literal>VARCHAR2</literal> de Oracle). Una <literal>Class</literal> es mapeara a su nombre completamente cualificado."
+#. Tag: para
+#: basic_mapping.xml:2346
+#, no-c-format
+msgid ""
+"Any mapping element which accepts a <literal>column</literal> attribute will "
+"alternatively accept a <literal><column></literal> subelement. "
+"Likewise, <literal><formula></literal> is an alternative to the "
+"<literal>formula</literal> attribute."
+msgstr ""
+"Cualquier elemento de mapeo que acepte un atributo <literal>column</literal> "
+"aceptará alternativamente un subelemento <literal><column></literal>. "
+"De forma similar, <literal><formula></literal> es una alternativa al "
+"atributo <literal>formula</literal>."
-#: index.docbook:2352
+#. Tag: programlisting
+#: basic_mapping.xml:2352
+#, no-c-format
msgid ""
- "<![CDATA[<column\n"
- " name=\"column_name\"\n"
- " length=\"N\"\n"
- " precision=\"N\"\n"
- " scale=\"N\"\n"
- " not-null=\"true|false\"\n"
- " unique=\"true|false\"\n"
- " unique-key=\"multicolumn_unique_key_name\"\n"
- " index=\"index_name\"\n"
- " sql-type=\"sql_type_name\"\n"
- " check=\"SQL expression\"\n"
- " default=\"SQL expression\"/>]]>"
-msgstr "binary"
+"<![CDATA[<column\n"
+" name=\"column_name\"\n"
+" length=\"N\"\n"
+" precision=\"N\"\n"
+" scale=\"N\"\n"
+" not-null=\"true|false\"\n"
+" unique=\"true|false\"\n"
+" unique-key=\"multicolumn_unique_key_name\"\n"
+" index=\"index_name\"\n"
+" sql-type=\"sql_type_name\"\n"
+" check=\"SQL expression\"\n"
+" default=\"SQL expression\"/>]]>"
+msgstr ""
-#: index.docbook:2354
+#. Tag: programlisting
+#: basic_mapping.xml:2354
+#, no-c-format
msgid "<![CDATA[<formula>SQL expression</formula>]]>"
-msgstr "Mapea arreglos de bytes a un tipo binario SQL apropiado."
+msgstr ""
-#: index.docbook:2356
-msgid "<literal>column</literal> and <literal>formula</literal> attributes may even be combined within the same property or association mapping to express, for example, exotic join conditions."
-msgstr "text"
+#. Tag: para
+#: basic_mapping.xml:2356
+#, no-c-format
+msgid ""
+"<literal>column</literal> and <literal>formula</literal> attributes may even "
+"be combined within the same property or association mapping to express, for "
+"example, exotic join conditions."
+msgstr ""
+"Los atributos <literal>column</literal> y <literal>formula</literal> pueden "
+"incluso ser combinados dentro del mismo mapeo de propiedad o asociación para "
+"expresar, por ejemplo, condiciones de unión exóticas."
-#: index.docbook:2362
+#. Tag: programlisting
+#: basic_mapping.xml:2362
+#, no-c-format
msgid ""
- "<![CDATA[<many-to-one name=\"homeAddress\" class=\"Address\"\n"
- " insert=\"false\" update=\"false\">\n"
- " <column name=\"person_id\" not-null=\"true\" length=\"10\"/>\n"
- " <formula>'MAILING'</formula>\n"
- "</many-to-one>]]>"
-msgstr "Mapea cadenas largas Java al tipo SQL <literal>CLOB</literal> o <literal>TEXT</literal>."
+"<![CDATA[<many-to-one name=\"homeAddress\" class=\"Address\"\n"
+" insert=\"false\" update=\"false\">\n"
+" <column name=\"person_id\" not-null=\"true\" length=\"10\"/>\n"
+" <formula>'MAILING'</formula>\n"
+"</many-to-one>]]>"
+msgstr ""
-#: index.docbook:2367
+#. Tag: title
+#: basic_mapping.xml:2367
+#, no-c-format
msgid "import"
-msgstr "serializable"
+msgstr "import"
-#: index.docbook:2369
-msgid "Suppose your application has two persistent classes with the same name, and you don't want to specify the fully qualified (package) name in Hibernate queries. Classes may be \"imported\" explicitly, rather than relying upon <literal>auto-import=\"true\"</literal>. You may even import classes and interfaces that are not explicitly mapped."
-msgstr "Mapea tipos serializables Java a un tipo binario SQL apropiado. Puedes además indicar el tipo <literal>serializable</literal> de Hibernate con el nombre de una clase o interface serializable Java que no sea por defecto un tipo básico."
+#. Tag: para
+#: basic_mapping.xml:2369
+#, no-c-format
+msgid ""
+"Suppose your application has two persistent classes with the same name, and "
+"you don't want to specify the fully qualified (package) name in Hibernate "
+"queries. Classes may be \"imported\" explicitly, rather than relying upon "
+"<literal>auto-import=\"true\"</literal>. You may even import classes and "
+"interfaces that are not explicitly mapped."
+msgstr ""
+"Supón que tu aplicación tiene dos clases persistentes con el mismo nombre, y "
+"no quieres especificar el nombre completamenta cualificado (paquete) en las "
+"consultas Hibernate. Las clases pueden ser \"importadas\" explícitamente, en "
+"vez de confiar en <literal>auto-import=\"true\"</literal>. Puedes incluso "
+"importar clases e interfaces que no estén mapeadas explícitamente."
-#: index.docbook:2376
+#. Tag: programlisting
+#: basic_mapping.xml:2376
+#, no-c-format
msgid "<![CDATA[<import class=\"java.lang.Object\" rename=\"Universe\"/>]]>"
-msgstr "clob, blob"
+msgstr ""
-#: index.docbook:2383
+#. Tag: programlisting
+#: basic_mapping.xml:2383
+#, no-c-format
msgid ""
- "<![CDATA[<import\n"
- " class=\"ClassName\"\n"
- " rename=\"ShortName\"\n"
- "/>]]>"
-msgstr "Mapeos de tipo para las clases JDBC <literal>java.sql.Clob</literal> y <literal>java.sql.Blob</literal>. Estos tipos pueden ser inconvenientes para algunas aplicaciones, pues el objeto blob o clob no puede ser reusado fuera de una transacción (Además, el soporte del driver suele ser malo e inconsistente)."
+"<![CDATA[<import\n"
+" class=\"ClassName\"\n"
+" rename=\"ShortName\"\n"
+"/>]]>"
+msgstr ""
-#: index.docbook:2386
-msgid "<literal>class</literal>: The fully qualified class name of of any Java class."
-msgstr "Los identificadores únicos de entidades y collecciones pueden ser de cualquier tipo básico excepto <literal>binary</literal>, <literal>blob</literal> y <literal>clob</literal>. (Los identificadores compuestos están también permitidos, ver debajo.)"
+#. Tag: para
+#: basic_mapping.xml:2386
+#, no-c-format
+msgid ""
+"<literal>class</literal>: The fully qualified class name of of any Java "
+"class."
+msgstr ""
+"<literal>class</literal>: El nombre de clase completamente cualificado de "
+"cualquier clase Java."
-#: index.docbook:2391
-msgid "<literal>rename</literal> (optional - defaults to the unqualified class name): A name that may be used in the query language."
-msgstr "Los tipos de valor básicos tienen sus constantes <literal>Type</literal> correspondientes definidas en <literal>org.hibernate.Hibernate</literal>. Por ejemplo, <literal>Hibernate.STRING</literal> representa el tipo <literal>string</literal>."
+#. Tag: para
+#: basic_mapping.xml:2391
+#, no-c-format
+msgid ""
+"<literal>rename</literal> (optional - defaults to the unqualified class "
+"name): A name that may be used in the query language."
+msgstr ""
+"<literal>rename</literal> (opcional - por defecto al nombre de clase sin "
+"cualificar): Un nombre que será usado en el leguaje de consulta."
-#: index.docbook:2402
+#. Tag: title
+#: basic_mapping.xml:2402
+#, no-c-format
msgid "<title>any</title>"
-msgstr "Tipos de valor personalizados"
+msgstr ""
-#: index.docbook:2404
-msgid "There is one further type of property mapping. The <literal><any></literal> mapping element defines a polymorphic association to classes from multiple tables. This type of mapping always requires more than one column. The first column holds the type of the associated entity. The remaining columns hold the identifier. It is impossible to specify a foreign key constraint for this kind of association, so this is most certainly not meant as the usual way of mapping (polymorphic) associations. You should use this only in very special cases (eg. audit logs, user session data, etc)."
-msgstr "Es relativamente fácil para los desarrolladores crear sus propios tipos de valor. Por ejemplo, podrías querer persistir propiedades del tipo <literal>java.lang.BigInteger</literal> a columnas <literal>VARCHAR</literal>. Hibernate no provee un tipo de fábrica para esto. Pero los tipos personalizados no están limitados a mapear una propiedad (o elemento de colección) a una sola columna de tabla. Así, por ejemplo, podrías tener una propiedad Java <literal>getName()</literal>/<literal>setName()</literal> de tipo <literal>java.lang.String</literal> que fuera persistida a las columnas <literal>FIRST_NAME</literal>, <literal>INITIAL</literal>, <literal>SURNAME</literal>."
+#. Tag: para
+#: basic_mapping.xml:2404
+#, no-c-format
+msgid ""
+"There is one further type of property mapping. The <literal><any></"
+"literal> mapping element defines a polymorphic association to classes from "
+"multiple tables. This type of mapping always requires more than one column. "
+"The first column holds the type of the associated entity. The remaining "
+"columns hold the identifier. It is impossible to specify a foreign key "
+"constraint for this kind of association, so this is most certainly not meant "
+"as the usual way of mapping (polymorphic) associations. You should use this "
+"only in very special cases (eg. audit logs, user session data, etc)."
+msgstr ""
+"Hay un tipo más de mapeo de propiedad. El elemento de mapeo <literal><"
+"any></literal> define una asociacián polimórfica a clases desde múltiples "
+"tablas. Este tipo de mapeo siempre requiere más de una columna. La primera "
+"columna contiene el tipo de la entidad asociada. Las columnas restantes "
+"contienen el identificador. Es imposible especificar una restricción de "
+"clave foránea para este tipo de asociación, por lo que esto ciertamente no "
+"está concebido como la forma habitual de mapear asociaciones (polimórficas). "
+"Sólo debes usar esto en casos muy especiales (por ejemplo, trazas de "
+"auditoréa, datos de sesión de usuario, etc)."
-#: index.docbook:2414
-msgid "The <literal>meta-type</literal> attribute lets the application specify a custom type that maps database column values to persistent classes which have identifier properties of the type specified by <literal>id-type</literal>. You must specify the mapping from values of the meta-type to class names."
-msgstr "Para implementar un tipo personalizado, implementa bien <literal>org.hibernate.UserType</literal> o <literal>org.hibernate.CompositeUserType</literal> y declara las propiedades usando el nombre de clase completamente cualificado del tipo. Revisa <literal>org.hibernate.test.DoubleStringType</literal> para ver qué tipo de cosas son posibles."
+#. Tag: para
+#: basic_mapping.xml:2414
+#, no-c-format
+msgid ""
+"The <literal>meta-type</literal> attribute lets the application specify a "
+"custom type that maps database column values to persistent classes which "
+"have identifier properties of the type specified by <literal>id-type</"
+"literal>. You must specify the mapping from values of the meta-type to class "
+"names."
+msgstr ""
+"El atributo <literal>meta-type</literal> permite a la aplicación especificar "
+"un tipo personalizado que mapee columnas de base de datos a clases "
+"persistentes que tengan propiedades identificadoras del tipo especificado "
+"por <literal>id-type</literal>. Debes especificar el mapeo de valores del "
+"meta-type a nombres de clase."
-#: index.docbook:2421
+#. Tag: programlisting
+#: basic_mapping.xml:2421
+#, no-c-format
msgid ""
- "<![CDATA[<any name=\"being\" id-type=\"long\" meta-type=\"string\">\n"
- " <meta-value value=\"TBL_ANIMAL\" class=\"Animal\"/>\n"
- " <meta-value value=\"TBL_HUMAN\" class=\"Human\"/>\n"
- " <meta-value value=\"TBL_ALIEN\" class=\"Alien\"/>\n"
- " <column name=\"table_name\"/>\n"
- " <column name=\"id\"/>\n"
- "</any>]]>"
+"<![CDATA[<any name=\"being\" id-type=\"long\" meta-type=\"string\">\n"
+" <meta-value value=\"TBL_ANIMAL\" class=\"Animal\"/>\n"
+" <meta-value value=\"TBL_HUMAN\" class=\"Human\"/>\n"
+" <meta-value value=\"TBL_ALIEN\" class=\"Alien\"/>\n"
+" <column name=\"table_name\"/>\n"
+" <column name=\"id\"/>\n"
+"</any>]]>"
msgstr ""
- "<![CDATA[<property name=\"twoStrings\" type=\"org.hibernate.test.DoubleStringType\">\n"
- " <column name=\"first_string\"/>\n"
- " <column name=\"second_string\"/>\n"
- "</property>]]>"
-#: index.docbook:2432
+#. Tag: programlisting
+#: basic_mapping.xml:2432
+#, no-c-format
msgid ""
- "<![CDATA[<any\n"
- " name=\"propertyName\"\n"
- " id-type=\"idtypename\"\n"
- " meta-type=\"metatypename\"\n"
- " cascade=\"cascade_style\"\n"
- " access=\"field|property|ClassName\"\n"
- " optimistic-lock=\"true|false\"\n"
- ">\n"
- " <meta-value ... />\n"
- " <meta-value ... />\n"
- " .....\n"
- " <column .... />\n"
- " <column .... />\n"
- " .....\n"
- "</any>]]>"
-msgstr "Observa el uso de etiquetas <literal><column></literal> para mapear una propiedad a múltiples columnas."
+"<![CDATA[<any\n"
+" name=\"propertyName\"\n"
+" id-type=\"idtypename\"\n"
+" meta-type=\"metatypename\"\n"
+" cascade=\"cascade_style\"\n"
+" access=\"field|property|ClassName\"\n"
+" optimistic-lock=\"true|false\"\n"
+">\n"
+" <meta-value ... />\n"
+" <meta-value ... />\n"
+" .....\n"
+" <column .... />\n"
+" <column .... />\n"
+" .....\n"
+"</any>]]>"
+msgstr ""
-#: index.docbook:2435
+#. Tag: para
+#: basic_mapping.xml:2435
+#, no-c-format
msgid "<literal>name</literal>: the property name."
-msgstr "Las interfaces <literal>CompositeUserType</literal>, <literal>EnhancedUserType</literal>, <literal>UserCollectionType</literal>, y <literal>UserVersionType</literal> proveen soporte a usos más especializados."
+msgstr "<literal>name</literal>: el nombre de la propiedad."
-#: index.docbook:2440
+#. Tag: para
+#: basic_mapping.xml:2440
+#, no-c-format
msgid "<literal>id-type</literal>: the identifier type."
-msgstr "Puedes incluso proveer de parámetros a un <literal>UserType</literal> en el fichero de mapeo. Para hacer esto, tu <literal>UserType</literal> debe implementar la interface <literal>org.hibernate.usertype.ParameterizedType</literal>. Para proveer de parámetros a tu tipo personalizado, puedes usar el elemento <literal><type></literal> en tus ficheros de mapeo."
+msgstr "<literal>id-type</literal>: el tipo del identificador."
-#: index.docbook:2445
-msgid "<literal>meta-type</literal> (optional - defaults to <literal>string</literal>): Any type that is allowed for a discriminator mapping."
+#. Tag: para
+#: basic_mapping.xml:2445
+#, no-c-format
+msgid ""
+"<literal>meta-type</literal> (optional - defaults to <literal>string</"
+"literal>): Any type that is allowed for a discriminator mapping."
msgstr ""
- "<![CDATA[<property name=\"priority\">\n"
- " <type name=\"com.mycompany.usertypes.DefaultValueIntegerType\">\n"
- " <param name=\"default\">0</param>\n"
- " </type>\n"
- "</property>]]>"
+"<literal>meta-type</literal> (opcional - por defecto a <literal>string</"
+"literal>): Cualquier tipo que sea permitido para un mapeo de discriminador."
-#: index.docbook:2451
-msgid "<literal>cascade</literal> (optional- defaults to <literal>none</literal>): the cascade style."
-msgstr "Ahora el <literal>UserType</literal> puede recuperar el valor del parámetro llamado <literal>default</literal> del objeto <literal>Properties</literal> que se le pasa."
+#. Tag: para
+#: basic_mapping.xml:2451
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional- defaults to <literal>none</literal>): "
+"the cascade style."
+msgstr ""
+"<literal>cascade</literal> (opcional- por defecto a <literal>none</"
+"literal>): el estilo de cascada."
-#: index.docbook:2463
-msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): Specifies that updates to this property do or do not require acquisition of the optimistic lock. In other words, define if a version increment should occur if this property is dirty."
+#. Tag: para
+#: basic_mapping.xml:2463
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): Specifies that updates to this property do or do not require "
+"acquisition of the optimistic lock. In other words, define if a version "
+"increment should occur if this property is dirty."
msgstr ""
- "<![CDATA[<typedef class=\"com.mycompany.usertypes.DefaultValueIntegerType\" name=\"default_zero\">\n"
- " <param name=\"default\">0</param>\n"
- "</typedef>]]>"
+"<literal>optimistic-lock</literal> (opcional - por defecto a <literal>true</"
+"literal>): Especifica si las actualizaciones de esta propiedad requieren o "
+"no de la adquisición del bloqueo optimista. En otras palabras, determina si "
+"debe ocurrir un incremento de versión cuando esta propiedad está "
+"desactualizada."
-#: index.docbook:2478
+#. Tag: title
+#: basic_mapping.xml:2478
+#, no-c-format
msgid "Hibernate Types"
-msgstr "<![CDATA[<property name=\"priority\" type=\"default_zero\"/>]]>"
+msgstr "Tipos de Hibernate"
-#: index.docbook:2481
+#. Tag: title
+#: basic_mapping.xml:2481
+#, no-c-format
msgid "Entities and values"
-msgstr "también es posible sobrescribir los parámetros provistos en un typedef sobre una base caso por caso usando parámetros de tipo en el mapeo de la propiedad."
+msgstr "Entidades y Valores"
-#: index.docbook:2483
-msgid "To understand the behaviour of various Java language-level objects with respect to the persistence service, we need to classify them into two groups:"
-msgstr "Aunque el rico espectro de tipos prefabricados y soporte de componentes de Hibernate significa que raramente <emphasis>necesites</emphasis> usar un tipo personalizado; sin embargo se considera una buena forma usar tipos personalizados para clases (no-entidades) que aparezcan frecuentemente en tu aplicación. Por ejemplo, una clase <literal>MonetaryAmount</literal> es una buena candidata para un <literal>CompositeUserType</literal>, incluso cuando puede ser facilmente mapeada como un componente. Un motivo para esto es la abstracción. Con un tipo personalizado, tus documentos de mapeo estará impermeabilizados contra posibles cambios futuros en la forma de representar valores monetarios."
+#. Tag: para
+#: basic_mapping.xml:2483
+#, no-c-format
+msgid ""
+"To understand the behaviour of various Java language-level objects with "
+"respect to the persistence service, we need to classify them into two groups:"
+msgstr ""
+"Para entender el comportamiento de varios objetos a nivel de lenguaje Java "
+"con respecto al servicio de persistencia, necesitamos clasificarlos en dos "
+"grupos:"
-#: index.docbook:2488
-msgid "An <emphasis>entity</emphasis> exists independently of any other objects holding references to the entity. Contrast this with the usual Java model where an unreferenced object is garbage collected. Entities must be explicitly saved and deleted (except that saves and deletions may be <emphasis>cascaded</emphasis> from a parent entity to its children). This is different from the ODMG model of object persistence by reachablity - and corresponds more closely to how application objects are usually used in large systems. Entities support circular and shared references. They may also be versioned."
-msgstr "Mapeando una clase más de una vez"
+#. Tag: para
+#: basic_mapping.xml:2488
+#, no-c-format
+msgid ""
+"An <emphasis>entity</emphasis> exists independently of any other objects "
+"holding references to the entity. Contrast this with the usual Java model "
+"where an unreferenced object is garbage collected. Entities must be "
+"explicitly saved and deleted (except that saves and deletions may be "
+"<emphasis>cascaded</emphasis> from a parent entity to its children). This is "
+"different from the ODMG model of object persistence by reachablity - and "
+"corresponds more closely to how application objects are usually used in "
+"large systems. Entities support circular and shared references. They may "
+"also be versioned."
+msgstr ""
+"Una <emphasis>entidad</emphasis> existe independientemente de cualquier "
+"otros objetos que referencien a la entidad. Contrasta esto con el model "
+"habitual de Java donde un objeto desreferenciado es recolectado como basura. "
+"Las entidades deben ser salvadas y borradas explícitamente (excepto que las "
+"grabaciones y borrados puedan ser <emphasis>tratados en cascada</emphasis> "
+"desde una entidad padre a sus hijos). Esto es diferente al modelo de "
+"persistencia de objetos por alcance - y se corresponde más de cerca a cómo "
+"los objetos de aplicación son usados habitualmente en grandes sistemas. Las "
+"entidades soportan referencias circulares y compartidas, que tambié pueden "
+"ser versionadas."
-#: index.docbook:2499
-msgid "An entity's persistent state consists of references to other entities and instances of <emphasis>value</emphasis> types. Values are primitives, collections (not what's inside a collection), components and certain immutable objects. Unlike entities, values (in particular collections and components) <emphasis>are</emphasis> persisted and deleted by reachability. Since value objects (and primitives) are persisted and deleted along with their containing entity they may not be independently versioned. Values have no independent identity, so they cannot be shared by two entities or collections."
-msgstr "Es posible proveer más de un mapeo para una clase persistente en particular. En este caso debes especificar un <emphasis>nombre de entidad</emphasis> para desambiguar entr las instancias de las dos entidades mapeadas. (Por defectom, el nombre de la entidad es el mismo que el nombre de la clase.) Hibernate te deja especificar el nombre de entidad al trabajar con objetos persistentes, al escribir consultas, o al mapear asociaciones a la entidad mencionada."
+#. Tag: para
+#: basic_mapping.xml:2499
+#, no-c-format
+msgid ""
+"An entity's persistent state consists of references to other entities and "
+"instances of <emphasis>value</emphasis> types. Values are primitives, "
+"collections (not what's inside a collection), components and certain "
+"immutable objects. Unlike entities, values (in particular collections and "
+"components) <emphasis>are</emphasis> persisted and deleted by reachability. "
+"Since value objects (and primitives) are persisted and deleted along with "
+"their containing entity they may not be independently versioned. Values have "
+"no independent identity, so they cannot be shared by two entities or "
+"collections."
+msgstr ""
+"El estado persistente de una entidad consiste en referencias a otras "
+"entidades e instancias de tipo <emphasis>valor</emphasis>. Los valores son "
+"primitivos, colecciones (no lo que está dentro de la colección), componentes "
+"y ciertos objetos inmutables. A diferencia de las entidades, los valores (en "
+"particular las colecciones y los componentes) <emphasis>son</emphasis> "
+"hechos persitentes y borrados por alcance. Como los objetos valor (y "
+"primitivos) son persistidos y borrados junto a sus entidades contenedoras, "
+"no pueden ser versionados independientemente. Los valores no tienen "
+"identidad independiente, por los que no pueden ser compartidos por dos "
+"entidades o colleciones."
-#: index.docbook:2510
-msgid "Up until now, we've been using the term \"persistent class\" to refer to entities. We will continue to do that. Strictly speaking, however, not all user-defined classes with persistent state are entities. A <emphasis>component</emphasis> is a user defined class with value semantics. A Java property of type <literal>java.lang.String</literal> also has value semantics. Given this definition, we can say that all types (classes) provided by the JDK have value type semantics in Java, while user-defined types may be mapped with entity or value type semantics. This decision is up to the application developer. A good hint for an entity class in a domain model are shared references to a single instance of that class, while composition or aggregation usually translates to a value type."
+#. Tag: para
+#: basic_mapping.xml:2510
+#, no-c-format
+msgid ""
+"Up until now, we've been using the term \"persistent class\" to refer to "
+"entities. We will continue to do that. Strictly speaking, however, not all "
+"user-defined classes with persistent state are entities. A "
+"<emphasis>component</emphasis> is a user defined class with value semantics. "
+"A Java property of type <literal>java.lang.String</literal> also has value "
+"semantics. Given this definition, we can say that all types (classes) "
+"provided by the JDK have value type semantics in Java, while user-defined "
+"types may be mapped with entity or value type semantics. This decision is up "
+"to the application developer. A good hint for an entity class in a domain "
+"model are shared references to a single instance of that class, while "
+"composition or aggregation usually translates to a value type."
msgstr ""
- "<![CDATA[<class name=\"Contract\" table=\"Contracts\" \n"
- " entity-name=\"CurrentContract\">\n"
- " ...\n"
- " <set name=\"history\" inverse=\"true\" \n"
- " order-by=\"effectiveEndDate desc\">\n"
- " <key column=\"currentContractId\"/>\n"
- " <one-to-many entity-name=\"HistoricalContract\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Contract\" table=\"ContractHistory\" \n"
- " entity-name=\"HistoricalContract\">\n"
- " ...\n"
- " <many-to-one name=\"currentContract\" \n"
- " column=\"currentContractId\" \n"
- " entity-name=\"CurrentContract\"/>\n"
- "</class>]]>"
+"Hasta ahora, hemos estado usando el término \"clase persistente\" para "
+"referirnos a entidades. Continuaremos haciéndolo. Hablando estrictamente, "
+"sin embargo, no todas la clases con estado persistente definidas por el "
+"usuario son entidades. Un <emphasis>componente</emphasis> es una clase "
+"definida por el usuario con semántica de valor. Una propiedad Java de tipo "
+"<literal>java.lang.String</literal> también tiene semántica de valor. Dada "
+"esta definición, podemos decir que todos los tipo (clases) provistos por el "
+"JDK tienen una semántica de tipo valor en Java, mientras que los tipos "
+"definidos por el usuario pueden ser mapeados con semántica de tipo valor o "
+"de entidad. La desición corre por cuenta del desarrollador de la aplicación. "
+"Un buen consejo para una clase entidad en un modelo de dominio son las "
+"referencias compartidas a una sola instancia de esa clase, mientras que la "
+"composición o agregación usualmente se traducen a un tipo de valor."
-#: index.docbook:2524
+#. Tag: para
+#: basic_mapping.xml:2524
+#, no-c-format
msgid "We'll revisit both concepts throughout the documentation."
-msgstr "Observa cómo las asociaciones ahora se especifican usando <literal>entity-name</literal> en vez de <literal>class</literal>."
+msgstr "Volveremos a visitar ambos conceptos a lo largo de la documentación."
-#: index.docbook:2528
-msgid "The challenge is to map the Java type system (and the developers' definition of entities and value types) to the SQL/database type system. The bridge between both systems is provided by Hibernate: for entities we use <literal><class></literal>, <literal><subclass></literal> and so on. For value types we use <literal><property></literal>, <literal><component></literal>, etc, usually with a <literal>type</literal> attribute. The value of this attribute is the name of a Hibernate <emphasis>mapping type</emphasis>. Hibernate provides many mappings (for standard JDK value types) out of the box. You can write your own mapping types and implement your custom conversion strategies as well, as you'll see later."
-msgstr "identificadores SQL encomillados"
+#. Tag: para
+#: basic_mapping.xml:2528
+#, no-c-format
+msgid ""
+"The challenge is to map the Java type system (and the developers' definition "
+"of entities and value types) to the SQL/database type system. The bridge "
+"between both systems is provided by Hibernate: for entities we use "
+"<literal><class></literal>, <literal><subclass></literal> and so "
+"on. For value types we use <literal><property></literal>, <literal><"
+"component></literal>, etc, usually with a <literal>type</literal> "
+"attribute. The value of this attribute is the name of a Hibernate "
+"<emphasis>mapping type</emphasis>. Hibernate provides many mappings (for "
+"standard JDK value types) out of the box. You can write your own mapping "
+"types and implement your custom conversion strategies as well, as you'll see "
+"later."
+msgstr ""
+"EL desafío es mapear el sistema de tipos de Java (y la definición de "
+"entidades y tipos de valor de los desarrolladores) al sistema de tipos de "
+"SQL/base de datos. EL puente entre ambos sistemas es provisto por Hibernate: "
+"para las entidades usamos <literal><class></literal>, <literal><"
+"subclass></literal>, etc. Para los tipos de valor usamos <literal><"
+"property></literal>, <literal><component></literal>, etc, "
+"usualmente con un atributo <literal>type</literal>. El valor de este "
+"atributo es el nombre de un <emphasis>tipo de mapeo</emphasis> de Hibernate. "
+"Hibernate provee de fábrica muchos mapeos (para tipos de valores del JDK "
+"estándar). Puedes escribir tus propios mapeos de tipo, así como implementar "
+"tus estrategias de conversión personalizadas, como veremos luego."
-#: index.docbook:2541
+#. Tag: para
+#: basic_mapping.xml:2541
+#, no-c-format
msgid "All built-in Hibernate types except collections support null semantics."
-msgstr "Puedes forzar a Hibernate a encomillar un identificador en el SQL generado encerrando el nombre de tabla o columna entre backticks en el documento de mapeo. Hibernate usará el estilo de encomillado para el <literal>Dialect</literal> SQL (usualmente comillas dobles, excepto corchetes para SQL Server y backsticks para MySQL)."
+msgstr ""
+"Todos los tipos prefabricados de Hibernate soportan semántica de nulos "
+"excepto las colecciones."
-#: index.docbook:2548
+#. Tag: title
+#: basic_mapping.xml:2548
+#, no-c-format
msgid "Basic value types"
+msgstr "Tipos de valores básicos"
+
+#. Tag: para
+#: basic_mapping.xml:2550
+#, fuzzy, no-c-format
+msgid ""
+"The built-in <emphasis>basic mapping types</emphasis> may be roughly "
+"categorized into"
msgstr ""
- "<![CDATA[<class name=\"LineItem\" table=\"`Line Item`\">\n"
- " <id name=\"id\" column=\"`Item Id`\"/><generator class=\"assigned\"/></id>\n"
- " <property name=\"itemNumber\" column=\"`Item #`\"/>\n"
- " ...\n"
- "</class>]]>"
+"Los <emphasis>tipos de mapeo básicos</emphasis> prefabricados pueden ser "
+"categorizado a grandes rasgos en: <placeholder-1/>"
-#: index.docbook:2550
-msgid "The built-in <emphasis>basic mapping types</emphasis> may be roughly categorized into"
-msgstr "Alternativas de metadatos"
+#. Tag: literal
+#: basic_mapping.xml:2555
+#, no-c-format
+msgid ""
+"integer, long, short, float, double, character, byte, boolean, yes_no, "
+"true_false"
+msgstr ""
+"integer, long, short, float, double, character, byte, boolean, yes_no, "
+"true_false"
-#: index.docbook:2555
-msgid "integer, long, short, float, double, character, byte, boolean, yes_no, true_false"
-msgstr "XML no es para todos, asá que hay algunas formas alternativas de definir metadatos de mapeo O/R en Hibernate."
+#. Tag: para
+#: basic_mapping.xml:2558
+#, no-c-format
+msgid ""
+"Type mappings from Java primitives or wrapper classes to appropriate (vendor-"
+"specific) SQL column types. <literal>boolean, yes_no</literal> and "
+"<literal>true_false</literal> are all alternative encodings for a Java "
+"<literal>boolean</literal> or <literal>java.lang.Boolean</literal>."
+msgstr ""
+"Mapeos de tipos primitivos de Java o clases de envoltura a la tipos de "
+"columna SQL (especícifica del vendedor). <literal>boolean, yes_no</literal> "
+"y <literal>true_false</literal> son codificaciones alternativas a "
+"<literal>boolean</literal> de Java o <literal>java.lang.Boolean</literal>."
-#: index.docbook:2558
-msgid "Type mappings from Java primitives or wrapper classes to appropriate (vendor-specific) SQL column types. <literal>boolean, yes_no</literal> and <literal>true_false</literal> are all alternative encodings for a Java <literal>boolean</literal> or <literal>java.lang.Boolean</literal>."
-msgstr "Usando marcado de XDoclet"
-
-#: index.docbook:2567
+#. Tag: literal
+#: basic_mapping.xml:2567
+#, no-c-format
msgid "string"
-msgstr "Muchos usuarios de Hibernate prefieren embeber la información de mapeo directamente en el código fuente usando las <literal>@hibernate.etiquetas</literal> XDoclet. No cubriremos este enfoque en este documento, pues estrictamente es considerado parte de XDoclet. Sin embargo, incluímos el siguiente ejemplo de la clase <literal>Cat</literal> con mapeos XDoclet."
+msgstr "string"
-#: index.docbook:2569
-msgid "A type mapping from <literal>java.lang.String</literal> to <literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>)."
+#. Tag: para
+#: basic_mapping.xml:2569
+#, no-c-format
+msgid ""
+"A type mapping from <literal>java.lang.String</literal> to <literal>VARCHAR</"
+"literal> (or Oracle <literal>VARCHAR2</literal>)."
msgstr ""
- "<![CDATA[package eg;\n"
- "import java.util.Set;\n"
- "import java.util.Date;\n"
- "\n"
- "/**\n"
- " * @hibernate.class\n"
- " * table=\"CATS\"\n"
- " */\n"
- "public class Cat {\n"
- " private Long id; // identifier\n"
- " private Date birthdate;\n"
- " private Cat mother;\n"
- " private Set kittens\n"
- " private Color color;\n"
- " private char sex;\n"
- " private float weight;\n"
- "\n"
- " /*\n"
- " * @hibernate.id\n"
- " * generator-class=\"native\"\n"
- " * column=\"CAT_ID\"\n"
- " */\n"
- " public Long getId() {\n"
- " return id;\n"
- " }\n"
- " private void setId(Long id) {\n"
- " this.id=id;\n"
- " }\n"
- "\n"
- " /**\n"
- " * @hibernate.many-to-one\n"
- " * column=\"PARENT_ID\"\n"
- " */\n"
- " public Cat getMother() {\n"
- " return mother;\n"
- " }\n"
- " void setMother(Cat mother) {\n"
- " this.mother = mother;\n"
- " }\n"
- "\n"
- " /**\n"
- " * @hibernate.property\n"
- " * column=\"BIRTH_DATE\"\n"
- " */\n"
- " public Date getBirthdate() {\n"
- " return birthdate;\n"
- " }\n"
- " void setBirthdate(Date date) {\n"
- " birthdate = date;\n"
- " }\n"
- " /**\n"
- " * @hibernate.property\n"
- " * column=\"WEIGHT\"\n"
- " */\n"
- " public float getWeight() {\n"
- " return weight;\n"
- " }\n"
- " void setWeight(float weight) {\n"
- " this.weight = weight;\n"
- " }\n"
- "\n"
- " /**\n"
- " * @hibernate.property\n"
- " * column=\"COLOR\"\n"
- " * not-null=\"true\"\n"
- " */\n"
- " public Color getColor() {\n"
- " return color;\n"
- " }\n"
- " void setColor(Color color) {\n"
- " this.color = color;\n"
- " }\n"
- " /**\n"
- " * @hibernate.set\n"
- " * inverse=\"true\"\n"
- " * order-by=\"BIRTH_DATE\"\n"
- " * @hibernate.collection-key\n"
- " * column=\"PARENT_ID\"\n"
- " * @hibernate.collection-one-to-many\n"
- " */\n"
- " public Set getKittens() {\n"
- " return kittens;\n"
- " }\n"
- " void setKittens(Set kittens) {\n"
- " this.kittens = kittens;\n"
- " }\n"
- " // addKitten not needed by Hibernate\n"
- " public void addKitten(Cat kitten) {\n"
- " kittens.add(kitten);\n"
- " }\n"
- "\n"
- " /**\n"
- " * @hibernate.property\n"
- " * column=\"SEX\"\n"
- " * not-null=\"true\"\n"
- " * update=\"false\"\n"
- " */\n"
- " public char getSex() {\n"
- " return sex;\n"
- " }\n"
- " void setSex(char sex) {\n"
- " this.sex=sex;\n"
- " }\n"
- "}]]>"
+"Un mapeo del tipo <literal>java.lang.String</literal> a <literal>VARCHAR</"
+"literal> (u Oracle <literal>VAARCHAR2</literal>)."
-#: index.docbook:2576
+#. Tag: literal
+#: basic_mapping.xml:2576
+#, no-c-format
msgid "date, time, timestamp"
-msgstr "Para más ejemplos de XDoclet e Hibernate ver en el sitio web de Hibernate."
+msgstr "date, time, timestamp"
-#: index.docbook:2578
-msgid "Type mappings from <literal>java.util.Date</literal> and its subclasses to SQL types <literal>DATE</literal>, <literal>TIME</literal> and <literal>TIMESTAMP</literal> (or equivalent)."
-msgstr "Usando anotaciones JDK 5.0"
+#. Tag: para
+#: basic_mapping.xml:2578
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Date</literal> and its subclasses to "
+"SQL types <literal>DATE</literal>, <literal>TIME</literal> and "
+"<literal>TIMESTAMP</literal> (or equivalent)."
+msgstr ""
+"Mapeos de tipo desde <literal>java.util.Date</literal> y sus subclases a "
+"tipos SQL <literal>DATE</literal>, <literal>TIME</literal> y "
+"<literal>TIMESTAMP</literal> (o equivalente)."
-#: index.docbook:2586
+#. Tag: literal
+#: basic_mapping.xml:2586
+#, no-c-format
msgid "calendar, calendar_date"
-msgstr "El JDK 5.0 introdujo anotaciones del estilo XDoclet a nivel del lenguaje, con chequeo seguro de tipos en tiempo de compilación. Este mecanismo es más potente y que las anotaciones XDoclet, y mejor soportado por herramientas e IDEs. IntelliJ IDEA, por ejemplo, soporta auto-compleción y resaltado de sintaxis de anotaciones JDK 5.0. La nueva revisión de la especificación de EJB (JSR-220) usa anotaciones JDK 5.0 como el mecanismo primario de metadatos para beans de entidad. Hibernate3 implementa el <literal>EntityManager</literal> del JSR-220 (la API de persistencia), y el soporte para metadatos de mapeo está disponible vía el paquete <emphasis>Hibernate Annotations</emphasis>, como una descarga por separado. Tanto metadatos de EJB3 (JSR-220) como de Hibernate3 están soportados."
+msgstr "calendar, calendar_date"
-#: index.docbook:2588
-msgid "Type mappings from <literal>java.util.Calendar</literal> to SQL types <literal>TIMESTAMP</literal> and <literal>DATE</literal> (or equivalent)."
-msgstr "Este es un ejemplo de una clase POJO anotada como un bean de entidad EJB:"
+#. Tag: para
+#: basic_mapping.xml:2588
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Calendar</literal> to SQL types "
+"<literal>TIMESTAMP</literal> and <literal>DATE</literal> (or equivalent)."
+msgstr ""
+"Mapeos de tipo desde <literal>java.util.Date</literal> y sus subclases a "
+"tipos SQL <literal>TIMESTAMP</literal> y <literal>DATE</literal> (o "
+"equivalente)."
-#: index.docbook:2596
+#. Tag: literal
+#: basic_mapping.xml:2596
+#, no-c-format
msgid "big_decimal, big_integer"
+msgstr "big_decimal, big_integer"
+
+#. Tag: para
+#: basic_mapping.xml:2598
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.math.BigDecimal</literal> and <literal>java."
+"math.BigInteger</literal> to <literal>NUMERIC</literal> (or Oracle "
+"<literal>NUMBER</literal>)."
msgstr ""
- "<![CDATA[@Entity(access = AccessType.FIELD)\n"
- "public class Customer implements Serializable {\n"
- "\n"
- " @Id;\n"
- " Long id;\n"
- "\n"
- " String firstName;\n"
- " String lastName;\n"
- " Date birthday;\n"
- "\n"
- " @Transient\n"
- " Integer age;\n"
- "\n"
- " @Embedded\n"
- " private Address homeAddress;\n"
- "\n"
- " @OneToMany(cascade=CascadeType.ALL)\n"
- "\n"
- " @JoinColumn(name=\"CUSTOMER_ID\")\n"
- " Set<Order> orders;\n"
- "\n"
- " // Getter/setter and business methods\n"
- "}]]>"
+"Mapeos de tipo desde <literal>java.math.BigDecimal</literal> y <literal>java."
+"math.BigInteger</literal> a <literal>NUMERIC</literal> (o <literal>NUMBER</"
+"literal> de Oracle)."
-#: index.docbook:2598
-msgid "Type mappings from <literal>java.math.BigDecimal</literal> and <literal>java.math.BigInteger</literal> to <literal>NUMERIC</literal> (or Oracle <literal>NUMBER</literal>)."
-msgstr "Ten en cuenta que el soporte a anotaciones JDK 5.0 (y JSR-220) es todavía un trabajo en progreso y no completado. Por favor, para más detalles refiérete al modulo de Anotaciones de Hibernate."
-
-#: index.docbook:2606
+#. Tag: literal
+#: basic_mapping.xml:2606
+#, no-c-format
msgid "locale, timezone, currency"
-msgstr ""
+msgstr "locale, timezone, currency"
-#: index.docbook:2608
-msgid "Type mappings from <literal>java.util.Locale</literal>, <literal>java.util.TimeZone</literal> and <literal>java.util.Currency</literal> to <literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>). Instances of <literal>Locale</literal> and <literal>Currency</literal> are mapped to their ISO codes. Instances of <literal>TimeZone</literal> are mapped to their <literal>ID</literal>."
+#. Tag: para
+#: basic_mapping.xml:2608
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Locale</literal>, <literal>java.util."
+"TimeZone</literal> and <literal>java.util.Currency</literal> to "
+"<literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>). "
+"Instances of <literal>Locale</literal> and <literal>Currency</literal> are "
+"mapped to their ISO codes. Instances of <literal>TimeZone</literal> are "
+"mapped to their <literal>ID</literal>."
msgstr ""
+"Mapeos de tipo desde <literal>java.util.Locale</literal>, <literal>java.util."
+"TimeZone</literal> y <literal>java.util.Currency</literal> a "
+"<literal>VARCHAR</literal> (o <literal>VARCHAR2</literal> de Oracle). Las "
+"instancias de <literal>Locale</literal> y <literal>Currency</literal> son "
+"mapeadas a sus códigos ISO. Las instancias de <literal>TimeZone</literal> "
+"son mapeadas a sus <literal>ID</literal>."
-#: index.docbook:2620
+#. Tag: literal
+#: basic_mapping.xml:2620
+#, fuzzy, no-c-format
msgid "<literal>class</literal>"
-msgstr ""
+msgstr "<literal>all</literal> chequea todas las columnas"
-#: index.docbook:2622
-msgid "A type mapping from <literal>java.lang.Class</literal> to <literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>). A <literal>Class</literal> is mapped to its fully qualified name."
+#. Tag: para
+#: basic_mapping.xml:2622
+#, no-c-format
+msgid ""
+"A type mapping from <literal>java.lang.Class</literal> to <literal>VARCHAR</"
+"literal> (or Oracle <literal>VARCHAR2</literal>). A <literal>Class</literal> "
+"is mapped to its fully qualified name."
msgstr ""
+"Un mapeo de tipo <literal>java.lang.Class</literal> a <literal>VARCHAR</"
+"literal> (o <literal>VARCHAR2</literal> de Oracle). Una <literal>Class</"
+"literal> es mapeara a su nombre completamente cualificado."
-#: index.docbook:2630
+#. Tag: literal
+#: basic_mapping.xml:2630
+#, no-c-format
msgid "binary"
-msgstr ""
+msgstr "binary"
-#: index.docbook:2632
+#. Tag: para
+#: basic_mapping.xml:2632
+#, no-c-format
msgid "Maps byte arrays to an appropriate SQL binary type."
-msgstr ""
+msgstr "Mapea arreglos de bytes a un tipo binario SQL apropiado."
-#: index.docbook:2638
+#. Tag: literal
+#: basic_mapping.xml:2638
+#, no-c-format
msgid "text"
-msgstr ""
+msgstr "text"
-#: index.docbook:2640
-msgid "Maps long Java strings to a SQL <literal>CLOB</literal> or <literal>TEXT</literal> type."
+#. Tag: para
+#: basic_mapping.xml:2640
+#, no-c-format
+msgid ""
+"Maps long Java strings to a SQL <literal>CLOB</literal> or <literal>TEXT</"
+"literal> type."
msgstr ""
+"Mapea cadenas largas Java al tipo SQL <literal>CLOB</literal> o "
+"<literal>TEXT</literal>."
-#: index.docbook:2647
+#. Tag: literal
+#: basic_mapping.xml:2647
+#, no-c-format
msgid "serializable"
-msgstr ""
+msgstr "serializable"
-#: index.docbook:2649
-msgid "Maps serializable Java types to an appropriate SQL binary type. You may also indicate the Hibernate type <literal>serializable</literal> with the name of a serializable Java class or interface that does not default to a basic type."
+#. Tag: para
+#: basic_mapping.xml:2649
+#, no-c-format
+msgid ""
+"Maps serializable Java types to an appropriate SQL binary type. You may also "
+"indicate the Hibernate type <literal>serializable</literal> with the name of "
+"a serializable Java class or interface that does not default to a basic type."
msgstr ""
+"Mapea tipos serializables Java a un tipo binario SQL apropiado. Puedes "
+"además indicar el tipo <literal>serializable</literal> de Hibernate con el "
+"nombre de una clase o interface serializable Java que no sea por defecto un "
+"tipo básico."
-#: index.docbook:2658
+#. Tag: literal
+#: basic_mapping.xml:2658
+#, no-c-format
msgid "clob, blob"
-msgstr ""
+msgstr "clob, blob"
-#: index.docbook:2660
-msgid "Type mappings for the JDBC classes <literal>java.sql.Clob</literal> and <literal>java.sql.Blob</literal>. These types may be inconvenient for some applications, since the blob or clob object may not be reused outside of a transaction. (Furthermore, driver support is patchy and inconsistent.)"
+#. Tag: para
+#: basic_mapping.xml:2660
+#, no-c-format
+msgid ""
+"Type mappings for the JDBC classes <literal>java.sql.Clob</literal> and "
+"<literal>java.sql.Blob</literal>. These types may be inconvenient for some "
+"applications, since the blob or clob object may not be reused outside of a "
+"transaction. (Furthermore, driver support is patchy and inconsistent.)"
msgstr ""
+"Mapeos de tipo para las clases JDBC <literal>java.sql.Clob</literal> y "
+"<literal>java.sql.Blob</literal>. Estos tipos pueden ser inconvenientes para "
+"algunas aplicaciones, pues el objeto blob o clob no puede ser reusado fuera "
+"de una transacción (Además, el soporte del driver suele ser malo e "
+"inconsistente)."
-#: index.docbook:2670
-msgid "imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, imm_serializable, imm_binary"
+#. Tag: literal
+#: basic_mapping.xml:2670
+#, no-c-format
+msgid ""
+"imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, "
+"imm_serializable, imm_binary"
msgstr ""
+"UNTRANSLATED! imm_date, imm_time, imm_timestamp, imm_calendar, "
+"imm_calendar_date, imm_serializable, imm_binary"
-#: index.docbook:2674
-msgid "Type mappings for what are usually considered mutable Java types, where Hibernate makes certain optimizations appropriate only for immutable Java types, and the application treats the object as immutable. For example, you should not call <literal>Date.setTime()</literal> for an instance mapped as <literal>imm_timestamp</literal>. To change the value of the property, and have that change made persistent, the application must assign a new (nonidentical) object to the property."
+#. Tag: para
+#: basic_mapping.xml:2674
+#, no-c-format
+msgid ""
+"Type mappings for what are usually considered mutable Java types, where "
+"Hibernate makes certain optimizations appropriate only for immutable Java "
+"types, and the application treats the object as immutable. For example, you "
+"should not call <literal>Date.setTime()</literal> for an instance mapped as "
+"<literal>imm_timestamp</literal>. To change the value of the property, and "
+"have that change made persistent, the application must assign a new "
+"(nonidentical) object to the property."
msgstr ""
+"Type mappings for what are usually considered mutable Java types, where "
+"Hibernate makes certain optimizations appropriate only for immutable Java "
+"types, and the application treats the object as immutable. For example, you "
+"should not call <literal>Date.setTime()</literal> for an instance mapped as "
+"<literal>imm_timestamp</literal>. To change the value of the property, and "
+"have that change made persistent, the application must assign a new "
+"(nonidentical) object to the property."
-#: index.docbook:2689
-msgid "Unique identifiers of entities and collections may be of any basic type except <literal>binary</literal>, <literal>blob</literal> and <literal>clob</literal>. (Composite identifiers are also allowed, see below.)"
+#. Tag: para
+#: basic_mapping.xml:2689
+#, no-c-format
+msgid ""
+"Unique identifiers of entities and collections may be of any basic type "
+"except <literal>binary</literal>, <literal>blob</literal> and <literal>clob</"
+"literal>. (Composite identifiers are also allowed, see below.)"
msgstr ""
+"Los identificadores únicos de entidades y collecciones pueden ser de "
+"cualquier tipo básico excepto <literal>binary</literal>, <literal>blob</"
+"literal> y <literal>clob</literal>. (Los identificadores compuestos están "
+"también permitidos, ver debajo.)"
-#: index.docbook:2695
-msgid "The basic value types have corresponding <literal>Type</literal> constants defined on <literal>org.hibernate.Hibernate</literal>. For example, <literal>Hibernate.STRING</literal> represents the <literal>string</literal> type."
+#. Tag: para
+#: basic_mapping.xml:2695
+#, no-c-format
+msgid ""
+"The basic value types have corresponding <literal>Type</literal> constants "
+"defined on <literal>org.hibernate.Hibernate</literal>. For example, "
+"<literal>Hibernate.STRING</literal> represents the <literal>string</literal> "
+"type."
msgstr ""
+"Los tipos de valor básicos tienen sus constantes <literal>Type</literal> "
+"correspondientes definidas en <literal>org.hibernate.Hibernate</literal>. "
+"Por ejemplo, <literal>Hibernate.STRING</literal> representa el tipo "
+"<literal>string</literal>."
-#: index.docbook:2704
+#. Tag: title
+#: basic_mapping.xml:2704
+#, no-c-format
msgid "Custom value types"
-msgstr ""
+msgstr "Tipos de valor personalizados"
-#: index.docbook:2706
-msgid "It is relatively easy for developers to create their own value types. For example, you might want to persist properties of type <literal>java.lang.BigInteger</literal> to <literal>VARCHAR</literal> columns. Hibernate does not provide a built-in type for this. But custom types are not limited to mapping a property (or collection element) to a single table column. So, for example, you might have a Java property <literal>getName()</literal>/<literal>setName()</literal> of type <literal>java.lang.String</literal> that is persisted to the columns <literal>FIRST_NAME</literal>, <literal>INITIAL</literal>, <literal>SURNAME</literal>."
+#. Tag: para
+#: basic_mapping.xml:2706
+#, no-c-format
+msgid ""
+"It is relatively easy for developers to create their own value types. For "
+"example, you might want to persist properties of type <literal>java.lang."
+"BigInteger</literal> to <literal>VARCHAR</literal> columns. Hibernate does "
+"not provide a built-in type for this. But custom types are not limited to "
+"mapping a property (or collection element) to a single table column. So, for "
+"example, you might have a Java property <literal>getName()</literal>/"
+"<literal>setName()</literal> of type <literal>java.lang.String</literal> "
+"that is persisted to the columns <literal>FIRST_NAME</literal>, "
+"<literal>INITIAL</literal>, <literal>SURNAME</literal>."
msgstr ""
+"Es relativamente fácil para los desarrolladores crear sus propios tipos de "
+"valor. Por ejemplo, podrías querer persistir propiedades del tipo "
+"<literal>java.lang.BigInteger</literal> a columnas <literal>VARCHAR</"
+"literal>. Hibernate no provee un tipo de fábrica para esto. Pero los tipos "
+"personalizados no están limitados a mapear una propiedad (o elemento de "
+"colección) a una sola columna de tabla. Así, por ejemplo, podrías tener una "
+"propiedad Java <literal>getName()</literal>/<literal>setName()</literal> de "
+"tipo <literal>java.lang.String</literal> que fuera persistida a las columnas "
+"<literal>FIRST_NAME</literal>, <literal>INITIAL</literal>, <literal>SURNAME</"
+"literal>."
-#: index.docbook:2717
-msgid "To implement a custom type, implement either <literal>org.hibernate.UserType</literal> or <literal>org.hibernate.CompositeUserType</literal> and declare properties using the fully qualified classname of the type. Check out <literal>org.hibernate.test.DoubleStringType</literal> to see the kind of things that are possible."
+#. Tag: para
+#: basic_mapping.xml:2717
+#, no-c-format
+msgid ""
+"To implement a custom type, implement either <literal>org.hibernate."
+"UserType</literal> or <literal>org.hibernate.CompositeUserType</literal> and "
+"declare properties using the fully qualified classname of the type. Check "
+"out <literal>org.hibernate.test.DoubleStringType</literal> to see the kind "
+"of things that are possible."
msgstr ""
+"Para implementar un tipo personalizado, implementa bien <literal>org."
+"hibernate.UserType</literal> o <literal>org.hibernate.CompositeUserType</"
+"literal> y declara las propiedades usando el nombre de clase completamente "
+"cualificado del tipo. Revisa <literal>org.hibernate.test.DoubleStringType</"
+"literal> para ver qué tipo de cosas son posibles."
-#: index.docbook:2725
+#. Tag: programlisting
+#: basic_mapping.xml:2725
+#, no-c-format
msgid ""
- "<![CDATA[<property name=\"twoStrings\" type=\"org.hibernate.test.DoubleStringType\">\n"
- " <column name=\"first_string\"/>\n"
- " <column name=\"second_string\"/>\n"
- "</property>]]>"
+"<![CDATA[<property name=\"twoStrings\" type=\"org.hibernate.test."
+"DoubleStringType\">\n"
+" <column name=\"first_string\"/>\n"
+" <column name=\"second_string\"/>\n"
+"</property>]]>"
msgstr ""
-#: index.docbook:2727
-msgid "Notice the use of <literal><column></literal> tags to map a property to multiple columns."
+#. Tag: para
+#: basic_mapping.xml:2727
+#, no-c-format
+msgid ""
+"Notice the use of <literal><column></literal> tags to map a property "
+"to multiple columns."
msgstr ""
+"Observa el uso de etiquetas <literal><column></literal> para mapear "
+"una propiedad a múltiples columnas."
-#: index.docbook:2732
-msgid "The <literal>CompositeUserType</literal>, <literal>EnhancedUserType</literal>, <literal>UserCollectionType</literal>, and <literal>UserVersionType</literal> interfaces provide support for more specialized uses."
+#. Tag: para
+#: basic_mapping.xml:2732
+#, no-c-format
+msgid ""
+"The <literal>CompositeUserType</literal>, <literal>EnhancedUserType</"
+"literal>, <literal>UserCollectionType</literal>, and "
+"<literal>UserVersionType</literal> interfaces provide support for more "
+"specialized uses."
msgstr ""
+"Las interfaces <literal>CompositeUserType</literal>, "
+"<literal>EnhancedUserType</literal>, <literal>UserCollectionType</literal>, "
+"y <literal>UserVersionType</literal> proveen soporte a usos más "
+"especializados."
-#: index.docbook:2738
-msgid "You may even supply parameters to a <literal>UserType</literal> in the mapping file. To do this, your <literal>UserType</literal> must implement the <literal>org.hibernate.usertype.ParameterizedType</literal> interface. To supply parameters to your custom type, you can use the <literal><type></literal> element in your mapping files."
+#. Tag: para
+#: basic_mapping.xml:2738
+#, no-c-format
+msgid ""
+"You may even supply parameters to a <literal>UserType</literal> in the "
+"mapping file. To do this, your <literal>UserType</literal> must implement "
+"the <literal>org.hibernate.usertype.ParameterizedType</literal> interface. "
+"To supply parameters to your custom type, you can use the <literal><"
+"type></literal> element in your mapping files."
msgstr ""
+"Puedes incluso proveer de parámetros a un <literal>UserType</literal> en el "
+"fichero de mapeo. Para hacer esto, tu <literal>UserType</literal> debe "
+"implementar la interface <literal>org.hibernate.usertype.ParameterizedType</"
+"literal>. Para proveer de parámetros a tu tipo personalizado, puedes usar el "
+"elemento <literal><type></literal> en tus ficheros de mapeo."
-#: index.docbook:2746
+#. Tag: programlisting
+#: basic_mapping.xml:2746
+#, no-c-format
msgid ""
- "<![CDATA[<property name=\"priority\">\n"
- " <type name=\"com.mycompany.usertypes.DefaultValueIntegerType\">\n"
- " <param name=\"default\">0</param>\n"
- " </type>\n"
- "</property>]]>"
+"<![CDATA[<property name=\"priority\">\n"
+" <type name=\"com.mycompany.usertypes.DefaultValueIntegerType\">\n"
+" <param name=\"default\">0</param>\n"
+" </type>\n"
+"</property>]]>"
msgstr ""
-#: index.docbook:2748
-msgid "The <literal>UserType</literal> can now retrieve the value for the parameter named <literal>default</literal> from the <literal>Properties</literal> object passed to it."
+#. Tag: para
+#: basic_mapping.xml:2748
+#, no-c-format
+msgid ""
+"The <literal>UserType</literal> can now retrieve the value for the parameter "
+"named <literal>default</literal> from the <literal>Properties</literal> "
+"object passed to it."
msgstr ""
+"Ahora el <literal>UserType</literal> puede recuperar el valor del parámetro "
+"llamado <literal>default</literal> del objeto <literal>Properties</literal> "
+"que se le pasa."
-#: index.docbook:2753
-msgid "If you use a certain <literal>UserType</literal> very often, it may be useful to define a shorter name for it. You can do this using the <literal><typedef></literal> element. Typedefs assign a name to a custom type, and may also contain a list of default parameter values if the type is parameterized."
+#. Tag: para
+#: basic_mapping.xml:2753
+#, no-c-format
+msgid ""
+"If you use a certain <literal>UserType</literal> very often, it may be "
+"useful to define a shorter name for it. You can do this using the "
+"<literal><typedef></literal> element. Typedefs assign a name to a "
+"custom type, and may also contain a list of default parameter values if the "
+"type is parameterized."
msgstr ""
+"Si usas cierto <literal>UserType</literal> muy frecuentemente, puede ser "
+"útil definir un nombre corto para é. Puedes hacer esto usando el elemento "
+"<literal><typedef></literal>. Los typedefs asignan un nombre a un tipo "
+"personalizado, y pueden también contener una lista de valores por defecto de "
+"parámetros si el tipo fuese parametrizado."
-#: index.docbook:2760
+#. Tag: programlisting
+#: basic_mapping.xml:2760
+#, no-c-format
msgid ""
- "<![CDATA[<typedef class=\"com.mycompany.usertypes.DefaultValueIntegerType\" name=\"default_zero\">\n"
- " <param name=\"default\">0</param>\n"
- "</typedef>]]>"
+"<![CDATA[<typedef class=\"com.mycompany.usertypes.DefaultValueIntegerType\" "
+"name=\"default_zero\">\n"
+" <param name=\"default\">0</param>\n"
+"</typedef>]]>"
msgstr ""
-#: index.docbook:2762
+#. Tag: programlisting
+#: basic_mapping.xml:2762
+#, no-c-format
msgid "<![CDATA[<property name=\"priority\" type=\"default_zero\"/>]]>"
msgstr ""
-#: index.docbook:2764
-msgid "It is also possible to override the parameters supplied in a typedef on a case-by-case basis by using type parameters on the property mapping."
+#. Tag: para
+#: basic_mapping.xml:2764
+#, no-c-format
+msgid ""
+"It is also possible to override the parameters supplied in a typedef on a "
+"case-by-case basis by using type parameters on the property mapping."
msgstr ""
+"también es posible sobrescribir los parámetros provistos en un typedef sobre "
+"una base caso por caso usando parámetros de tipo en el mapeo de la propiedad."
-#: index.docbook:2769
-msgid "Even though Hibernate's rich range of built-in types and support for components means you will very rarely <emphasis>need</emphasis> to use a custom type, it is nevertheless considered good form to use custom types for (non-entity) classes that occur frequently in your application. For example, a <literal>MonetaryAmount</literal> class is a good candidate for a <literal>CompositeUserType</literal>, even though it could easily be mapped as a component. One motivation for this is abstraction. With a custom type, your mapping documents would be future-proofed against possible changes in your way of representing monetary values."
+#. Tag: para
+#: basic_mapping.xml:2769
+#, no-c-format
+msgid ""
+"Even though Hibernate's rich range of built-in types and support for "
+"components means you will very rarely <emphasis>need</emphasis> to use a "
+"custom type, it is nevertheless considered good form to use custom types for "
+"(non-entity) classes that occur frequently in your application. For example, "
+"a <literal>MonetaryAmount</literal> class is a good candidate for a "
+"<literal>CompositeUserType</literal>, even though it could easily be mapped "
+"as a component. One motivation for this is abstraction. With a custom type, "
+"your mapping documents would be future-proofed against possible changes in "
+"your way of representing monetary values."
msgstr ""
+"Aunque el rico espectro de tipos prefabricados y soporte de componentes de "
+"Hibernate significa que raramente <emphasis>necesites</emphasis> usar un "
+"tipo personalizado; sin embargo se considera una buena forma usar tipos "
+"personalizados para clases (no-entidades) que aparezcan frecuentemente en tu "
+"aplicación. Por ejemplo, una clase <literal>MonetaryAmount</literal> es una "
+"buena candidata para un <literal>CompositeUserType</literal>, incluso cuando "
+"puede ser facilmente mapeada como un componente. Un motivo para esto es la "
+"abstracción. Con un tipo personalizado, tus documentos de mapeo estará "
+"impermeabilizados contra posibles cambios futuros en la forma de representar "
+"valores monetarios."
-#: index.docbook:2785
+#. Tag: title
+#: basic_mapping.xml:2785
+#, no-c-format
msgid "Mapping a class more than once"
-msgstr ""
+msgstr "Mapeando una clase más de una vez"
-#: index.docbook:2786
-msgid "It is possible to provide more than one mapping for a particular persistent class. In this case you must specify an <emphasis>entity name</emphasis> do disambiguate between instances of the two mapped entities. (By default, the entity name is the same as the class name.) Hibernate lets you specify the entity name when working with persistent objects, when writing queries, or when mapping associations to the named entity."
+#. Tag: para
+#: basic_mapping.xml:2786
+#, no-c-format
+msgid ""
+"It is possible to provide more than one mapping for a particular persistent "
+"class. In this case you must specify an <emphasis>entity name</emphasis> do "
+"disambiguate between instances of the two mapped entities. (By default, the "
+"entity name is the same as the class name.) Hibernate lets you specify the "
+"entity name when working with persistent objects, when writing queries, or "
+"when mapping associations to the named entity."
msgstr ""
+"Es posible proveer más de un mapeo para una clase persistente en particular. "
+"En este caso debes especificar un <emphasis>nombre de entidad</emphasis> "
+"para desambiguar entr las instancias de las dos entidades mapeadas. (Por "
+"defectom, el nombre de la entidad es el mismo que el nombre de la clase.) "
+"Hibernate te deja especificar el nombre de entidad al trabajar con objetos "
+"persistentes, al escribir consultas, o al mapear asociaciones a la entidad "
+"mencionada."
-#: index.docbook:2794
+#. Tag: programlisting
+#: basic_mapping.xml:2794
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Contract\" table=\"Contracts\"\n"
- " entity-name=\"CurrentContract\">\n"
- " ...\n"
- " <set name=\"history\" inverse=\"true\"\n"
- " order-by=\"effectiveEndDate desc\">\n"
- " <key column=\"currentContractId\"/>\n"
- " <one-to-many entity-name=\"HistoricalContract\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Contract\" table=\"ContractHistory\"\n"
- " entity-name=\"HistoricalContract\">\n"
- " ...\n"
- " <many-to-one name=\"currentContract\"\n"
- " column=\"currentContractId\"\n"
- " entity-name=\"CurrentContract\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Contract\" table=\"Contracts\"\n"
+" entity-name=\"CurrentContract\">\n"
+" ...\n"
+" <set name=\"history\" inverse=\"true\"\n"
+" order-by=\"effectiveEndDate desc\">\n"
+" <key column=\"currentContractId\"/>\n"
+" <one-to-many entity-name=\"HistoricalContract\"/>\n"
+" </set>\n"
+"</class>\n"
+"\n"
+"<class name=\"Contract\" table=\"ContractHistory\"\n"
+" entity-name=\"HistoricalContract\">\n"
+" ...\n"
+" <many-to-one name=\"currentContract\"\n"
+" column=\"currentContractId\"\n"
+" entity-name=\"CurrentContract\"/>\n"
+"</class>]]>"
msgstr ""
-#: index.docbook:2796
-msgid "Notice how associations are now specified using <literal>entity-name</literal> instead of <literal>class</literal>."
+#. Tag: para
+#: basic_mapping.xml:2796
+#, no-c-format
+msgid ""
+"Notice how associations are now specified using <literal>entity-name</"
+"literal> instead of <literal>class</literal>."
msgstr ""
+"Observa cómo las asociaciones ahora se especifican usando <literal>entity-"
+"name</literal> en vez de <literal>class</literal>."
-#: index.docbook:2804
+#. Tag: title
+#: basic_mapping.xml:2804
+#, no-c-format
msgid "SQL quoted identifiers"
-msgstr ""
+msgstr "identificadores SQL encomillados"
-#: index.docbook:2805
-msgid "You may force Hibernate to quote an identifier in the generated SQL by enclosing the table or column name in backticks in the mapping document. Hibernate will use the correct quotation style for the SQL <literal>Dialect</literal> (usually double quotes, but brackets for SQL Server and backticks for MySQL)."
+#. Tag: para
+#: basic_mapping.xml:2805
+#, no-c-format
+msgid ""
+"You may force Hibernate to quote an identifier in the generated SQL by "
+"enclosing the table or column name in backticks in the mapping document. "
+"Hibernate will use the correct quotation style for the SQL <literal>Dialect</"
+"literal> (usually double quotes, but brackets for SQL Server and backticks "
+"for MySQL)."
msgstr ""
+"Puedes forzar a Hibernate a encomillar un identificador en el SQL generado "
+"encerrando el nombre de tabla o columna entre backticks en el documento de "
+"mapeo. Hibernate usará el estilo de encomillado para el <literal>Dialect</"
+"literal> SQL (usualmente comillas dobles, excepto corchetes para SQL Server "
+"y backsticks para MySQL)."
-#: index.docbook:2812
+#. Tag: programlisting
+#: basic_mapping.xml:2812
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"LineItem\" table=\"`Line Item`\">\n"
- " <id name=\"id\" column=\"`Item Id`\"/><generator class=\"assigned\"/></id>\n"
- " <property name=\"itemNumber\" column=\"`Item #`\"/>\n"
- " ...\n"
- "</class>]]>"
+"<![CDATA[<class name=\"LineItem\" table=\"`Line Item`\">\n"
+" <id name=\"id\" column=\"`Item Id`\"/><generator class=\"assigned\"/></"
+"id>\n"
+" <property name=\"itemNumber\" column=\"`Item #`\"/>\n"
+" ...\n"
+"</class>]]>"
msgstr ""
-#: index.docbook:2818
+#. Tag: title
+#: basic_mapping.xml:2818
+#, no-c-format
msgid "Metadata alternatives"
-msgstr ""
+msgstr "Alternativas de metadatos"
-#: index.docbook:2820
-msgid "XML isn't for everyone, and so there are some alternative ways to define O/R mapping metadata in Hibernate."
+#. Tag: para
+#: basic_mapping.xml:2820
+#, no-c-format
+msgid ""
+"XML isn't for everyone, and so there are some alternative ways to define O/R "
+"mapping metadata in Hibernate."
msgstr ""
+"XML no es para todos, asá que hay algunas formas alternativas de definir "
+"metadatos de mapeo O/R en Hibernate."
-#: index.docbook:2825
+#. Tag: title
+#: basic_mapping.xml:2825
+#, no-c-format
msgid "Using XDoclet markup"
-msgstr ""
+msgstr "Usando marcado de XDoclet"
-#: index.docbook:2827
-msgid "Many Hibernate users prefer to embed mapping information directly in sourcecode using XDoclet <literal>@hibernate.tags</literal>. We will not cover this approach in this document, since strictly it is considered part of XDoclet. However, we include the following example of the <literal>Cat</literal> class with XDoclet mappings."
+#. Tag: para
+#: basic_mapping.xml:2827
+#, no-c-format
+msgid ""
+"Many Hibernate users prefer to embed mapping information directly in "
+"sourcecode using XDoclet <literal>@hibernate.tags</literal>. We will not "
+"cover this approach in this document, since strictly it is considered part "
+"of XDoclet. However, we include the following example of the <literal>Cat</"
+"literal> class with XDoclet mappings."
msgstr ""
+"Muchos usuarios de Hibernate prefieren embeber la información de mapeo "
+"directamente en el código fuente usando las <literal>@hibernate.etiquetas</"
+"literal> XDoclet. No cubriremos este enfoque en este documento, pues "
+"estrictamente es considerado parte de XDoclet. Sin embargo, incluímos el "
+"siguiente ejemplo de la clase <literal>Cat</literal> con mapeos XDoclet."
-#: index.docbook:2834
+#. Tag: programlisting
+#: basic_mapping.xml:2834
+#, no-c-format
msgid ""
- "<![CDATA[package eg;\n"
- "import java.util.Set;\n"
- "import java.util.Date;\n"
- "\n"
- "/**\n"
- " * @hibernate.class\n"
- " * table=\"CATS\"\n"
- " */\n"
- "public class Cat {\n"
- " private Long id; // identifier\n"
- " private Date birthdate;\n"
- " private Cat mother;\n"
- " private Set kittens\n"
- " private Color color;\n"
- " private char sex;\n"
- " private float weight;\n"
- "\n"
- " /*\n"
- " * @hibernate.id\n"
- " * generator-class=\"native\"\n"
- " * column=\"CAT_ID\"\n"
- " */\n"
- " public Long getId() {\n"
- " return id;\n"
- " }\n"
- " private void setId(Long id) {\n"
- " this.id=id;\n"
- " }\n"
- "\n"
- " /**\n"
- " * @hibernate.many-to-one\n"
- " * column=\"PARENT_ID\"\n"
- " */\n"
- " public Cat getMother() {\n"
- " return mother;\n"
- " }\n"
- " void setMother(Cat mother) {\n"
- " this.mother = mother;\n"
- " }\n"
- "\n"
- " /**\n"
- " * @hibernate.property\n"
- " * column=\"BIRTH_DATE\"\n"
- " */\n"
- " public Date getBirthdate() {\n"
- " return birthdate;\n"
- " }\n"
- " void setBirthdate(Date date) {\n"
- " birthdate = date;\n"
- " }\n"
- " /**\n"
- " * @hibernate.property\n"
- " * column=\"WEIGHT\"\n"
- " */\n"
- " public float getWeight() {\n"
- " return weight;\n"
- " }\n"
- " void setWeight(float weight) {\n"
- " this.weight = weight;\n"
- " }\n"
- "\n"
- " /**\n"
- " * @hibernate.property\n"
- " * column=\"COLOR\"\n"
- " * not-null=\"true\"\n"
- " */\n"
- " public Color getColor() {\n"
- " return color;\n"
- " }\n"
- " void setColor(Color color) {\n"
- " this.color = color;\n"
- " }\n"
- " /**\n"
- " * @hibernate.set\n"
- " * inverse=\"true\"\n"
- " * order-by=\"BIRTH_DATE\"\n"
- " * @hibernate.collection-key\n"
- " * column=\"PARENT_ID\"\n"
- " * @hibernate.collection-one-to-many\n"
- " */\n"
- " public Set getKittens() {\n"
- " return kittens;\n"
- " }\n"
- " void setKittens(Set kittens) {\n"
- " this.kittens = kittens;\n"
- " }\n"
- " // addKitten not needed by Hibernate\n"
- " public void addKitten(Cat kitten) {\n"
- " kittens.add(kitten);\n"
- " }\n"
- "\n"
- " /**\n"
- " * @hibernate.property\n"
- " * column=\"SEX\"\n"
- " * not-null=\"true\"\n"
- " * update=\"false\"\n"
- " */\n"
- " public char getSex() {\n"
- " return sex;\n"
- " }\n"
- " void setSex(char sex) {\n"
- " this.sex=sex;\n"
- " }\n"
- "}]]>"
+"<![CDATA[package eg;\n"
+"import java.util.Set;\n"
+"import java.util.Date;\n"
+"\n"
+"/**\n"
+" * @hibernate.class\n"
+" * table=\"CATS\"\n"
+" */\n"
+"public class Cat {\n"
+" private Long id; // identifier\n"
+" private Date birthdate;\n"
+" private Cat mother;\n"
+" private Set kittens\n"
+" private Color color;\n"
+" private char sex;\n"
+" private float weight;\n"
+"\n"
+" /*\n"
+" * @hibernate.id\n"
+" * generator-class=\"native\"\n"
+" * column=\"CAT_ID\"\n"
+" */\n"
+" public Long getId() {\n"
+" return id;\n"
+" }\n"
+" private void setId(Long id) {\n"
+" this.id=id;\n"
+" }\n"
+"\n"
+" /**\n"
+" * @hibernate.many-to-one\n"
+" * column=\"PARENT_ID\"\n"
+" */\n"
+" public Cat getMother() {\n"
+" return mother;\n"
+" }\n"
+" void setMother(Cat mother) {\n"
+" this.mother = mother;\n"
+" }\n"
+"\n"
+" /**\n"
+" * @hibernate.property\n"
+" * column=\"BIRTH_DATE\"\n"
+" */\n"
+" public Date getBirthdate() {\n"
+" return birthdate;\n"
+" }\n"
+" void setBirthdate(Date date) {\n"
+" birthdate = date;\n"
+" }\n"
+" /**\n"
+" * @hibernate.property\n"
+" * column=\"WEIGHT\"\n"
+" */\n"
+" public float getWeight() {\n"
+" return weight;\n"
+" }\n"
+" void setWeight(float weight) {\n"
+" this.weight = weight;\n"
+" }\n"
+"\n"
+" /**\n"
+" * @hibernate.property\n"
+" * column=\"COLOR\"\n"
+" * not-null=\"true\"\n"
+" */\n"
+" public Color getColor() {\n"
+" return color;\n"
+" }\n"
+" void setColor(Color color) {\n"
+" this.color = color;\n"
+" }\n"
+" /**\n"
+" * @hibernate.set\n"
+" * inverse=\"true\"\n"
+" * order-by=\"BIRTH_DATE\"\n"
+" * @hibernate.collection-key\n"
+" * column=\"PARENT_ID\"\n"
+" * @hibernate.collection-one-to-many\n"
+" */\n"
+" public Set getKittens() {\n"
+" return kittens;\n"
+" }\n"
+" void setKittens(Set kittens) {\n"
+" this.kittens = kittens;\n"
+" }\n"
+" // addKitten not needed by Hibernate\n"
+" public void addKitten(Cat kitten) {\n"
+" kittens.add(kitten);\n"
+" }\n"
+"\n"
+" /**\n"
+" * @hibernate.property\n"
+" * column=\"SEX\"\n"
+" * not-null=\"true\"\n"
+" * update=\"false\"\n"
+" */\n"
+" public char getSex() {\n"
+" return sex;\n"
+" }\n"
+" void setSex(char sex) {\n"
+" this.sex=sex;\n"
+" }\n"
+"}]]>"
msgstr ""
-#: index.docbook:2836
+#. Tag: para
+#: basic_mapping.xml:2836
+#, no-c-format
msgid "See the Hibernate web site for more examples of XDoclet and Hibernate."
msgstr ""
+"Para más ejemplos de XDoclet e Hibernate ver en el sitio web de Hibernate."
-#: index.docbook:2843
+#. Tag: title
+#: basic_mapping.xml:2843
+#, no-c-format
msgid "Using JDK 5.0 Annotations"
-msgstr ""
+msgstr "Usando anotaciones JDK 5.0"
-#: index.docbook:2845
-msgid "JDK 5.0 introduced XDoclet-style annotations at the language level, type-safe and checked at compile time. This mechnism is more powerful than XDoclet annotations and better supported by tools and IDEs. IntelliJ IDEA, for example, supports auto-completion and syntax highlighting of JDK 5.0 annotations. The new revision of the EJB specification (JSR-220) uses JDK 5.0 annotations as the primary metadata mechanism for entity beans. Hibernate3 implements the <literal>EntityManager</literal> of JSR-220 (the persistence API), support for mapping metadata is available via the <emphasis>Hibernate Annotations</emphasis> package, as a separate download. Both EJB3 (JSR-220) and Hibernate3 metadata is supported."
+#. Tag: para
+#: basic_mapping.xml:2845
+#, no-c-format
+msgid ""
+"JDK 5.0 introduced XDoclet-style annotations at the language level, type-"
+"safe and checked at compile time. This mechnism is more powerful than "
+"XDoclet annotations and better supported by tools and IDEs. IntelliJ IDEA, "
+"for example, supports auto-completion and syntax highlighting of JDK 5.0 "
+"annotations. The new revision of the EJB specification (JSR-220) uses JDK "
+"5.0 annotations as the primary metadata mechanism for entity beans. "
+"Hibernate3 implements the <literal>EntityManager</literal> of JSR-220 (the "
+"persistence API), support for mapping metadata is available via the "
+"<emphasis>Hibernate Annotations</emphasis> package, as a separate download. "
+"Both EJB3 (JSR-220) and Hibernate3 metadata is supported."
msgstr ""
+"El JDK 5.0 introdujo anotaciones del estilo XDoclet a nivel del lenguaje, "
+"con chequeo seguro de tipos en tiempo de compilación. Este mecanismo es más "
+"potente y que las anotaciones XDoclet, y mejor soportado por herramientas e "
+"IDEs. IntelliJ IDEA, por ejemplo, soporta auto-compleción y resaltado de "
+"sintaxis de anotaciones JDK 5.0. La nueva revisión de la especificación de "
+"EJB (JSR-220) usa anotaciones JDK 5.0 como el mecanismo primario de "
+"metadatos para beans de entidad. Hibernate3 implementa el "
+"<literal>EntityManager</literal> del JSR-220 (la API de persistencia), y el "
+"soporte para metadatos de mapeo está disponible vía el paquete "
+"<emphasis>Hibernate Annotations</emphasis>, como una descarga por separado. "
+"Tanto metadatos de EJB3 (JSR-220) como de Hibernate3 están soportados."
-#: index.docbook:2856
+#. Tag: para
+#: basic_mapping.xml:2856
+#, no-c-format
msgid "This is an example of a POJO class annotated as an EJB entity bean:"
msgstr ""
+"Este es un ejemplo de una clase POJO anotada como un bean de entidad EJB:"
-#: index.docbook:2860
+#. Tag: programlisting
+#: basic_mapping.xml:2860
+#, no-c-format
msgid ""
- "<![CDATA[@Entity(access = AccessType.FIELD)\n"
- "public class Customer implements Serializable {\n"
- "\n"
- " @Id;\n"
- " Long id;\n"
- "\n"
- " String firstName;\n"
- " String lastName;\n"
- " Date birthday;\n"
- "\n"
- " @Transient\n"
- " Integer age;\n"
- "\n"
- " @Embedded\n"
- " private Address homeAddress;\n"
- "\n"
- " @OneToMany(cascade=CascadeType.ALL)\n"
- " @JoinColumn(name=\"CUSTOMER_ID\")\n"
- " Set<Order> orders;\n"
- "\n"
- " // Getter/setter and business methods\n"
- "}]]>"
+"<![CDATA[@Entity(access = AccessType.FIELD)\n"
+"public class Customer implements Serializable {\n"
+"\n"
+" @Id;\n"
+" Long id;\n"
+"\n"
+" String firstName;\n"
+" String lastName;\n"
+" Date birthday;\n"
+"\n"
+" @Transient\n"
+" Integer age;\n"
+"\n"
+" @Embedded\n"
+" private Address homeAddress;\n"
+"\n"
+" @OneToMany(cascade=CascadeType.ALL)\n"
+" @JoinColumn(name=\"CUSTOMER_ID\")\n"
+" Set<Order> orders;\n"
+"\n"
+" // Getter/setter and business methods\n"
+"}]]>"
msgstr ""
-#: index.docbook:2862
-msgid "Note that support for JDK 5.0 Annotations (and JSR-220) is still work in progress and not completed. Please refer to the Hibernate Annotations module for more details."
+#. Tag: para
+#: basic_mapping.xml:2862
+#, no-c-format
+msgid ""
+"Note that support for JDK 5.0 Annotations (and JSR-220) is still work in "
+"progress and not completed. Please refer to the Hibernate Annotations module "
+"for more details."
msgstr ""
+"Ten en cuenta que el soporte a anotaciones JDK 5.0 (y JSR-220) es todavía un "
+"trabajo en progreso y no completado. Por favor, para más detalles refiérete "
+"al modulo de Anotaciones de Hibernate."
-#: index.docbook:2871
+#. Tag: title
+#: basic_mapping.xml:2871
+#, no-c-format
msgid "Generated Properties"
-msgstr ""
+msgstr "translator-credits"
-#: index.docbook:2872
-msgid "Generated properties are properties which have their values generated by the database. Typically, Hibernate applications needed to <literal>refresh</literal> objects which contain any properties for which the database was generating values. Marking properties as generated, however, lets the application delegate this responsibility to Hibernate. Essentially, whenever Hibernate issues an SQL INSERT or UPDATE for an entity which has defined generated properties, it immediately issues a select afterwards to retrieve the generated values."
+#. Tag: para
+#: basic_mapping.xml:2872
+#, no-c-format
+msgid ""
+"Generated properties are properties which have their values generated by the "
+"database. Typically, Hibernate applications needed to <literal>refresh</"
+"literal> objects which contain any properties for which the database was "
+"generating values. Marking properties as generated, however, lets the "
+"application delegate this responsibility to Hibernate. Essentially, whenever "
+"Hibernate issues an SQL INSERT or UPDATE for an entity which has defined "
+"generated properties, it immediately issues a select afterwards to retrieve "
+"the generated values."
msgstr ""
-#: index.docbook:2881
-msgid "Properties marked as generated must additionally be non-insertable and non-updateable. Only <xref linkend=\"mapping-declaration-version\"/>versions, <xref linkend=\"mapping-declaration-timestamp\"/>timestamps, and <xref linkend=\"mapping-declaration-property\"/>simple properties can be marked as generated."
+#. Tag: para
+#: basic_mapping.xml:2881
+#, no-c-format
+msgid ""
+"Properties marked as generated must additionally be non-insertable and non-"
+"updateable. Only <link linkend=\"mapping-declaration-version\">versions</"
+"link>, <link linkend=\"mapping-declaration-timestamp\">timestamps</link>, "
+"and <link linkend=\"mapping-declaration-property\">simple properties</link> "
+"can be marked as generated."
msgstr ""
-#: index.docbook:2888
-msgid "<literal>never</literal> (the default) - means that the given property value is not generated within the database."
+#. Tag: para
+#: basic_mapping.xml:2888
+#, no-c-format
+msgid ""
+"<literal>never</literal> (the default) - means that the given property value "
+"is not generated within the database."
msgstr ""
-#: index.docbook:2892
-msgid "<literal>insert</literal> - states that the given property value is generated on insert, but is not regenerated on subsequent updates. Things like created-date would fall into this category. Note that even thought <xref linkend=\"mapping-declaration-version\"/>version and <xref linkend=\"mapping-declaration-timestamp\"/>timestamp properties can be marked as generated, this option is not available there..."
+#. Tag: para
+#: basic_mapping.xml:2892
+#, no-c-format
+msgid ""
+"<literal>insert</literal> - states that the given property value is "
+"generated on insert, but is not regenerated on subsequent updates. Things "
+"like created-date would fall into this category. Note that even thought "
+"<link linkend=\"mapping-declaration-version\">version</link> and <link "
+"linkend=\"mapping-declaration-timestamp\">timestamp</link> properties can be "
+"marked as generated, this option is not available there..."
msgstr ""
-#: index.docbook:2900
-msgid "<literal>always</literal> - states that the property value is generated both on insert and on update."
+#. Tag: para
+#: basic_mapping.xml:2900
+#, no-c-format
+msgid ""
+"<literal>always</literal> - states that the property value is generated both "
+"on insert and on update."
msgstr ""
-#: index.docbook:2907
+#. Tag: title
+#: basic_mapping.xml:2907
+#, no-c-format
msgid "Auxiliary Database Objects"
msgstr ""
-#: index.docbook:2908
-msgid "Allows CREATE and DROP of arbitrary database objects, in conjunction with Hibernate's schema evolution tools, to provide the ability to fully define a user schema within the Hibernate mapping files. Although designed specifically for creating and dropping things like triggers or stored procedures, really any SQL command that can be run via a <literal>java.sql.Statement.execute()</literal> method is valid here (ALTERs, INSERTS, etc). There are essentially two modes for defining auxiliary database objects..."
+#. Tag: para
+#: basic_mapping.xml:2908
+#, no-c-format
+msgid ""
+"Allows CREATE and DROP of arbitrary database objects, in conjunction with "
+"Hibernate's schema evolution tools, to provide the ability to fully define a "
+"user schema within the Hibernate mapping files. Although designed "
+"specifically for creating and dropping things like triggers or stored "
+"procedures, really any SQL command that can be run via a <literal>java.sql."
+"Statement.execute()</literal> method is valid here (ALTERs, INSERTS, etc). "
+"There are essentially two modes for defining auxiliary database objects..."
msgstr ""
-#: index.docbook:2917
-msgid "The first mode is to explicitly list the CREATE and DROP commands out in the mapping file:"
+#. Tag: para
+#: basic_mapping.xml:2917
+#, no-c-format
+msgid ""
+"The first mode is to explicitly list the CREATE and DROP commands out in the "
+"mapping file:"
msgstr ""
-#: index.docbook:2921
+#. Tag: programlisting
+#: basic_mapping.xml:2921
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- " ...\n"
- " <database-object>\n"
- " <create>CREATE TRIGGER my_trigger ...</create>\n"
- " <drop>DROP TRIGGER my_trigger</drop>\n"
- " </database-object>\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+" ...\n"
+" <database-object>\n"
+" <create>CREATE TRIGGER my_trigger ...</create>\n"
+" <drop>DROP TRIGGER my_trigger</drop>\n"
+" </database-object>\n"
+"</hibernate-mapping>]]>"
msgstr ""
-#: index.docbook:2922
-msgid "The second mode is to supply a custom class which knows how to construct the CREATE and DROP commands. This custom class must implement the <literal>org.hibernate.mapping.AuxiliaryDatabaseObject</literal> interface."
+#. Tag: para
+#: basic_mapping.xml:2922
+#, no-c-format
+msgid ""
+"The second mode is to supply a custom class which knows how to construct the "
+"CREATE and DROP commands. This custom class must implement the <literal>org."
+"hibernate.mapping.AuxiliaryDatabaseObject</literal> interface."
msgstr ""
-#: index.docbook:2927
+#. Tag: programlisting
+#: basic_mapping.xml:2927
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- " ...\n"
- " <database-object>\n"
- " <definition class=\"MyTriggerDefinition\"/>\n"
- " </database-object>\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+" ...\n"
+" <database-object>\n"
+" <definition class=\"MyTriggerDefinition\"/>\n"
+" </database-object>\n"
+"</hibernate-mapping>]]>"
msgstr ""
-#: index.docbook:2928
-msgid "Additionally, these database objects can be optionally scoped such that they only apply when certain dialects are used."
+#. Tag: para
+#: basic_mapping.xml:2928
+#, no-c-format
+msgid ""
+"Additionally, these database objects can be optionally scoped such that they "
+"only apply when certain dialects are used."
msgstr ""
-#: index.docbook:2932
+#. Tag: programlisting
+#: basic_mapping.xml:2932
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- " ...\n"
- " <database-object>\n"
- " <definition class=\"MyTriggerDefinition\"/>\n"
- " <dialect-scope name=\"org.hibernate.dialect.Oracle9Dialect\"/>\n"
- " <dialect-scope name=\"org.hibernate.dialect.OracleDialect\"/>\n"
- " </database-object>\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+" ...\n"
+" <database-object>\n"
+" <definition class=\"MyTriggerDefinition\"/>\n"
+" <dialect-scope name=\"org.hibernate.dialect.Oracle9Dialect\"/>\n"
+" <dialect-scope name=\"org.hibernate.dialect.OracleDialect\"/>\n"
+" </database-object>\n"
+"</hibernate-mapping>]]>"
msgstr ""
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+#~ msgid "class"
+#~ msgstr "class"
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+#~ msgid "id"
+#~ msgstr "id"
+#~ msgid ""
+#~ "<literal>optimizer</literal> (optional, defaults to <literal>none</"
+#~ "literal>): See <xref linkend=\"mapping-declaration-id-enhanced-optimizers"
+#~ "\"/>"
+#~ msgstr ""
+#~ "<literal>optimizer</literal> (optional, defaults to <literal>none</"
+#~ "literal>): See <xref linkend=\"mapping-declaration-id-enhanced-optimizers"
+#~ "\"/>"
+
+#~ msgid ""
+#~ "<literal>optimizer</literal> (optional, defaults to <literal/>): See "
+#~ "<xref linkend=\"mapping-declaration-id-enhanced-optimizers\"/>"
+#~ msgstr ""
+#~ "<literal>optimizer</literal> (optional, defaults to <literal/>): See "
+#~ "<xref linkend=\"mapping-declaration-id-enhanced-optimizers\"/>"
+
+#~ msgid "key"
+#~ msgstr "key"
+
+#~ msgid "any"
+#~ msgstr "any"
Modified: core/trunk/documentation/manual/translations/es-ES/content/batch.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/batch.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/batch.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,342 +1,606 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: batch.xml:5
+#, no-c-format
msgid "Batch processing"
msgstr "Procesamiento por lotes"
-#: index.docbook:7
-msgid "A naive approach to inserting 100 000 rows in the database using Hibernate might look like this:"
-msgstr "Un enfoque ingenuo para insertar 100.000 filas en la base de datos usando Hibernate podría verse así:"
+#. Tag: para
+#: batch.xml:7
+#, no-c-format
+msgid ""
+"A naive approach to inserting 100 000 rows in the database using Hibernate "
+"might look like this:"
+msgstr ""
+"Un enfoque ingenuo para insertar 100.000 filas en la base de datos usando "
+"Hibernate podría verse así:"
-#: index.docbook:12
+#. Tag: programlisting
+#: batch.xml:12
+#, no-c-format
msgid ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- "for ( int i=0; i<100000; i++ ) {\n"
- " Customer customer = new Customer(.....);\n"
- " session.save(customer);\n"
- "}\n"
- "tx.commit();\n"
- "session.close();]]>"
+"<![CDATA[Session session = sessionFactory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+"for ( int i=0; i<100000; i++ ) {\n"
+" Customer customer = new Customer(.....);\n"
+" session.save(customer);\n"
+"}\n"
+"tx.commit();\n"
+"session.close();]]>"
msgstr ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- "for ( int i=0; i<100000; i++ ) {\n"
- " Customer customer = new Customer(.....);\n"
- " session.save(customer);\n"
- "}\n"
- "tx.commit();\n"
- "session.close();]]>"
-#: index.docbook:14
-msgid "This would fall over with an <literal>OutOfMemoryException</literal> somewhere around the 50 000th row. That's because Hibernate caches all the newly inserted <literal>Customer</literal> instances in the session-level cache."
-msgstr "Esto podría caer sobre una <literal>OutOfMemoryException</literal> en algún sitio cerca de la fila 50.000. Esto es porque Hibernate tiene en caché todas las instancias de <literal>Customer</literal> recién instanciadas en el caché de nivel de sesión."
+#. Tag: para
+#: batch.xml:14
+#, no-c-format
+msgid ""
+"This would fall over with an <literal>OutOfMemoryException</literal> "
+"somewhere around the 50 000th row. That's because Hibernate caches all the "
+"newly inserted <literal>Customer</literal> instances in the session-level "
+"cache."
+msgstr ""
+"Esto podría caer sobre una <literal>OutOfMemoryException</literal> en algún "
+"sitio cerca de la fila 50.000. Esto es porque Hibernate tiene en caché todas "
+"las instancias de <literal>Customer</literal> recién instanciadas en el "
+"caché de nivel de sesión."
-#: index.docbook:20
-msgid "In this chapter we'll show you how to avoid this problem. First, however, if you are doing batch processing, it is absolutely critical that you enable the use of JDBC batching, if you intend to achieve reasonable performance. Set the JDBC batch size to a reasonable number (say, 10-50):"
-msgstr "En este capítulo te mostraremos cómo evitar este problema. Primero, sin embargo, si estás haciendo procesamiento por lotes (batch processing), es absolutamente crítico que habilites el uso de loteo JDBC, si pretendes lograr un rendimiento razonable. Establece el tamaño de lote JDBC a un número razonable (digamos 10-50):"
+#. Tag: para
+#: batch.xml:20
+#, no-c-format
+msgid ""
+"In this chapter we'll show you how to avoid this problem. First, however, if "
+"you are doing batch processing, it is absolutely critical that you enable "
+"the use of JDBC batching, if you intend to achieve reasonable performance. "
+"Set the JDBC batch size to a reasonable number (say, 10-50):"
+msgstr ""
+"En este capítulo te mostraremos cómo evitar este problema. Primero, sin "
+"embargo, si estás haciendo procesamiento por lotes (batch processing), es "
+"absolutamente crítico que habilites el uso de loteo JDBC, si pretendes "
+"lograr un rendimiento razonable. Establece el tamaño de lote JDBC a un "
+"número razonable (digamos 10-50):"
-#: index.docbook:27
+#. Tag: programlisting
+#: batch.xml:27
+#, no-c-format
msgid "<![CDATA[hibernate.jdbc.batch_size 20]]>"
-msgstr "<![CDATA[hibernate.jdbc.batch_size 20]]>"
+msgstr ""
-#: index.docbook:29
-msgid "Note that Hibernate disables insert batching at the JDBC level transparently if you use an <literal>identiy</literal> identifier generator."
-msgstr "Podrías además querer hacer este tipo de trabajo en un proceso donde la interacción con el caché de segundo nivel esté completamente deshabilitado:"
+#. Tag: para
+#: batch.xml:29
+#, no-c-format
+msgid ""
+"Note that Hibernate disables insert batching at the JDBC level transparently "
+"if you use an <literal>identiy</literal> identifier generator."
+msgstr ""
+"UNTRANSLATED! Note that Hibernate disables insert batching at the JDBC level "
+"transparently if you use an <literal>identiy</literal> identifier generator."
-#: index.docbook:34
-msgid "You also might like to do this kind of work in a process where interaction with the second-level cache is completely disabled:"
-msgstr "<![CDATA[hibernate.cache.use_second_level_cache false]]>"
+#. Tag: para
+#: batch.xml:34
+#, no-c-format
+msgid ""
+"You also might like to do this kind of work in a process where interaction "
+"with the second-level cache is completely disabled:"
+msgstr ""
+"Podrías además querer hacer este tipo de trabajo en un proceso donde la "
+"interacción con el caché de segundo nivel esté completamente deshabilitado:"
-#: index.docbook:39
+#. Tag: programlisting
+#: batch.xml:39
+#, no-c-format
msgid "<![CDATA[hibernate.cache.use_second_level_cache false]]>"
-msgstr "Inserciones en lote"
+msgstr ""
-#: index.docbook:41
-msgid "However, this is not absolutely necessary, since we can explicitly set the <literal>CacheMode</literal> to disable interaction with the second-level cache."
-msgstr "Al hacer persistentes objetos nuevos, debes limpiar con <literal>flush()</literal> y llamar a <literal>clear()</literal> en la sesión regularmente, para controlar el tamaño del caché de primer nivel."
+#. Tag: para
+#: batch.xml:41
+#, no-c-format
+msgid ""
+"However, this is not absolutely necessary, since we can explicitly set the "
+"<literal>CacheMode</literal> to disable interaction with the second-level "
+"cache."
+msgstr ""
+"UNTRANSLATED! However, this is not absolutely necessary, since we can "
+"explicitly set the <literal>CacheMode</literal> to disable interaction with "
+"the second-level cache."
-#: index.docbook:47
+#. Tag: title
+#: batch.xml:47
+#, no-c-format
msgid "Batch inserts"
+msgstr "Inserciones en lote"
+
+#. Tag: para
+#: batch.xml:49
+#, no-c-format
+msgid ""
+"When making new objects persistent, you must <literal>flush()</literal> and "
+"then <literal>clear()</literal> the session regularly, to control the size "
+"of the first-level cache."
msgstr ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- " \n"
- "for ( int i=0; i<100000; i++ ) {\n"
- " Customer customer = new Customer(.....);\n"
- " session.save(customer);\n"
- " if ( i % 20 == 0 ) { //20, same as the JDBC batch size\n"
- " //flush a batch of inserts and release memory:\n"
- " session.flush();\n"
- " session.clear();\n"
- " }\n"
- "}\n"
- " \n"
- "tx.commit();\n"
- "session.close();]]>"
+"Al hacer persistentes objetos nuevos, debes limpiar con <literal>flush()</"
+"literal> y llamar a <literal>clear()</literal> en la sesión regularmente, "
+"para controlar el tamaño del caché de primer nivel."
-#: index.docbook:49
-msgid "When making new objects persistent, you must <literal>flush()</literal> and then <literal>clear()</literal> the session regularly, to control the size of the first-level cache."
+#. Tag: programlisting
+#: batch.xml:55
+#, no-c-format
+msgid ""
+"<![CDATA[Session session = sessionFactory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+" \n"
+"for ( int i=0; i<100000; i++ ) {\n"
+" Customer customer = new Customer(.....);\n"
+" session.save(customer);\n"
+" if ( i % 20 == 0 ) { //20, same as the JDBC batch size\n"
+" //flush a batch of inserts and release memory:\n"
+" session.flush();\n"
+" session.clear();\n"
+" }\n"
+"}\n"
+" \n"
+"tx.commit();\n"
+"session.close();]]>"
+msgstr ""
+
+#. Tag: title
+#: batch.xml:60
+#, no-c-format
+msgid "Batch updates"
msgstr "Actualizaciones en lote"
-#: index.docbook:55
+#. Tag: para
+#: batch.xml:62
+#, no-c-format
msgid ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- " \n"
- "for ( int i=0; i<100000; i++ ) {\n"
- " Customer customer = new Customer(.....);\n"
- " session.save(customer);\n"
- " if ( i % 20 == 0 ) { //20, same as the JDBC batch size\n"
- " //flush a batch of inserts and release memory:\n"
- " session.flush();\n"
- " session.clear();\n"
- " }\n"
- "}\n"
- " \n"
- "tx.commit();\n"
- "session.close();]]>"
-msgstr "Para recuperar y actualizar datos se aplican las mismas ideas. Adicionalmente, necesitas usar <literal>scroll()</literal> para sacar ventaja de los cursores del lado del servidor en consultas que devuelvan muchas filas de datos."
-
-#: index.docbook:60
-msgid "Batch updates"
+"For retrieving and updating data the same ideas apply. In addition, you need "
+"to use <literal>scroll()</literal> to take advantage of server-side cursors "
+"for queries that return many rows of data."
msgstr ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- " \n"
- "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
- " .setCacheMode(CacheMode.IGNORE)\n"
- " .scroll(ScrollMode.FORWARD_ONLY);\n"
- "int count=0;\n"
- "while ( customers.next() ) {\n"
- " Customer customer = (Customer) customers.get(0);\n"
- " customer.updateStuff(...);\n"
- " if ( ++count % 20 == 0 ) {\n"
- " //flush a batch of updates and release memory:\n"
- " session.flush();\n"
- " session.clear();\n"
- " }\n"
- "}\n"
- " \n"
- "tx.commit();\n"
- "session.close();]]>"
+"Para recuperar y actualizar datos se aplican las mismas ideas. "
+"Adicionalmente, necesitas usar <literal>scroll()</literal> para sacar "
+"ventaja de los cursores del lado del servidor en consultas que devuelvan "
+"muchas filas de datos."
-#: index.docbook:62
-msgid "For retrieving and updating data the same ideas apply. In addition, you need to use <literal>scroll()</literal> to take advantage of server-side cursors for queries that return many rows of data."
-msgstr "update/delete en masa"
-
-#: index.docbook:68
+#. Tag: programlisting
+#: batch.xml:68
+#, no-c-format
msgid ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- " \n"
- "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
- " .setCacheMode(CacheMode.IGNORE)\n"
- " .scroll(ScrollMode.FORWARD_ONLY);\n"
- "int count=0;\n"
- "while ( customers.next() ) {\n"
- " Customer customer = (Customer) customers.get(0);\n"
- " customer.updateStuff(...);\n"
- " if ( ++count % 20 == 0 ) {\n"
- " //flush a batch of updates and release memory:\n"
- " session.flush();\n"
- " session.clear();\n"
- " }\n"
- "}\n"
- " \n"
- "tx.commit();\n"
- "session.close();]]>"
-msgstr "Como ya se ha discutido, el mapeo objeto/relacional automático y transparente se refiere al manejo de estado de objetos. Esto implica que el estado del objeto está disponible en memoria, por lo tanto actualizar o borrar (usando <literal>UPDATE</literal> y <literal>DELETE</literal> de SQL) datos directamente en la base de datos no afectará el estado en memoria. Sin embargo, Hibernate provee métodos para la ejecución de sentencias del estilo de <literal>UPDATE</literal> y <literal>DELETE</literal> de SQL que se realizan a través del Lenguaje de Consulta de Hibernate (Hibernate Query Language o <xref linkend=\"queryhql\"/>HQL)."
+"<![CDATA[Session session = sessionFactory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+" \n"
+"ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+" .setCacheMode(CacheMode.IGNORE)\n"
+" .scroll(ScrollMode.FORWARD_ONLY);\n"
+"int count=0;\n"
+"while ( customers.next() ) {\n"
+" Customer customer = (Customer) customers.get(0);\n"
+" customer.updateStuff(...);\n"
+" if ( ++count % 20 == 0 ) {\n"
+" //flush a batch of updates and release memory:\n"
+" session.flush();\n"
+" session.clear();\n"
+" }\n"
+"}\n"
+" \n"
+"tx.commit();\n"
+"session.close();]]>"
+msgstr ""
-#: index.docbook:73
+#. Tag: title
+#: batch.xml:73
+#, no-c-format
msgid "The StatelessSession interface"
-msgstr "La pseudo-sintáxis para sentencias <literal>UPDATE</literal> y <literal>DELETE</literal> es: <literal>( UPDATE | DELETE ) FROM? ClassName (WHERE WHERE_CONDITIONS)?</literal>. Algunos puntos a tener en cuenta:"
+msgstr "UNTRANSLATED! The StatelessSession interface"
-#: index.docbook:74
-msgid "Alternatively, Hibernate provides a command-oriented API that may be used for streaming data to and from the database in the form of detached objects. A <literal>StatelessSession</literal> has no persistence context associated with it and does not provide many of the higher-level life cycle semantics. In particular, a stateless session does not implement a first-level cache nor interact with any second-level or query cache. It does not implement transactional write-behind or automatic dirty checking. Operations performed using a stateless session do not ever cascade to associated instances. Collections are ignored by a stateless session. Operations performed via a stateless session bypass Hibernate's event model and interceptors. Stateless sessions are vulnerable to data aliasing effects, due to the lack of a first-level cache. A stateless session is a lower-level abstraction, much closer to the underlying JDBC."
-msgstr "En la cláusula-from, la palabra clave FROM es opcional"
+#. Tag: para
+#: batch.xml:74
+#, no-c-format
+msgid ""
+"Alternatively, Hibernate provides a command-oriented API that may be used "
+"for streaming data to and from the database in the form of detached objects. "
+"A <literal>StatelessSession</literal> has no persistence context associated "
+"with it and does not provide many of the higher-level life cycle semantics. "
+"In particular, a stateless session does not implement a first-level cache "
+"nor interact with any second-level or query cache. It does not implement "
+"transactional write-behind or automatic dirty checking. Operations performed "
+"using a stateless session do not ever cascade to associated instances. "
+"Collections are ignored by a stateless session. Operations performed via a "
+"stateless session bypass Hibernate's event model and interceptors. Stateless "
+"sessions are vulnerable to data aliasing effects, due to the lack of a first-"
+"level cache. A stateless session is a lower-level abstraction, much closer "
+"to the underlying JDBC."
+msgstr ""
+"Alternatively, Hibernate provides a command-oriented API that may be used "
+"for streaming data to and from the database in the form of detached objects. "
+"A <literal>StatelessSession</literal> has no persistence context associated "
+"with it and does not provide many of the higher-level life cycle semantics. "
+"In particular, a stateless session does not implement a first-level cache "
+"nor interact with any second-level or query cache. It does not implement "
+"transactional write-behind or automatic dirty checking. Operations performed "
+"using a stateless session do not ever cascade to associated instances. "
+"Collections are ignored by a stateless session. Operations performed via a "
+"stateless session bypass Hibernate's event model and interceptors. Stateless "
+"sessions are vulnerable to data aliasing effects, due to the lack of a first-"
+"level cache. A stateless session is a lower-level abstraction, much closer "
+"to the underlying JDBC."
-#: index.docbook:89
+#. Tag: programlisting
+#: batch.xml:89
+#, no-c-format
msgid ""
- "<![CDATA[StatelessSession session = sessionFactory.openStatelessSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- " \n"
- "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
- " .scroll(ScrollMode.FORWARD_ONLY);\n"
- "while ( customers.next() ) {\n"
- " Customer customer = (Customer) customers.get(0);\n"
- " customer.updateStuff(...);\n"
- " session.update(customer);\n"
- "}\n"
- " \n"
- "tx.commit();\n"
- "session.close();]]>"
-msgstr "Puede haber sólo una clase mencionada en la cláusula-from, y <emphasis>no puede</emphasis> tener un alias."
+"<![CDATA[StatelessSession session = sessionFactory.openStatelessSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+" \n"
+"ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+" .scroll(ScrollMode.FORWARD_ONLY);\n"
+"while ( customers.next() ) {\n"
+" Customer customer = (Customer) customers.get(0);\n"
+" customer.updateStuff(...);\n"
+" session.update(customer);\n"
+"}\n"
+" \n"
+"tx.commit();\n"
+"session.close();]]>"
+msgstr ""
-#: index.docbook:91
-msgid "Note that in this code example, the <literal>Customer</literal> instances returned by the query are immediately detached. They are never associated with any persistence context."
-msgstr "No puede especificarse ningún join (bien implícito o explícito) en una consulta masiva de HQL. Pueden usarse subconsultas en la cláusula-where."
+#. Tag: para
+#: batch.xml:91
+#, no-c-format
+msgid ""
+"Note that in this code example, the <literal>Customer</literal> instances "
+"returned by the query are immediately detached. They are never associated "
+"with any persistence context."
+msgstr ""
+"Note that in this code example, the <literal>Customer</literal> instances "
+"returned by the query are immediately detached. They are never associated "
+"with any persistence context."
-#: index.docbook:97
-msgid "The <literal>insert(), update()</literal> and <literal>delete()</literal> operations defined by the <literal>StatelessSession</literal> interface are considered to be direct database row-level operations, which result in immediate execution of a SQL <literal>INSERT, UPDATE</literal> or <literal>DELETE</literal> respectively. Thus, they have very different semantics to the <literal>save(), saveOrUpdate()</literal> and <literal>delete()</literal> operations defined by the <literal>Session</literal> interface."
-msgstr "La cláusula-where es también opcional."
+#. Tag: para
+#: batch.xml:97
+#, no-c-format
+msgid ""
+"The <literal>insert(), update()</literal> and <literal>delete()</literal> "
+"operations defined by the <literal>StatelessSession</literal> interface are "
+"considered to be direct database row-level operations, which result in "
+"immediate execution of a SQL <literal>INSERT, UPDATE</literal> or "
+"<literal>DELETE</literal> respectively. Thus, they have very different "
+"semantics to the <literal>save(), saveOrUpdate()</literal> and "
+"<literal>delete()</literal> operations defined by the <literal>Session</"
+"literal> interface."
+msgstr ""
+"The <literal>insert(), update()</literal> and <literal>delete()</literal> "
+"operations defined by the <literal>StatelessSession</literal> interface are "
+"considered to be direct database row-level operations, which result in "
+"immediate execution of a SQL <literal>INSERT, UPDATE</literal> or "
+"<literal>DELETE</literal> respectively. Thus, they have very different "
+"semantics to the <literal>save(), saveOrUpdate()</literal> and "
+"<literal>delete()</literal> operations defined by the <literal>Session</"
+"literal> interface."
-#: index.docbook:110
+#. Tag: title
+#: batch.xml:110
+#, no-c-format
msgid "DML-style operations"
-msgstr "Como un ejemplo, para ejecutar un <literal>UPDATE</literal> HQL, usa el método <literal>Query.executeUpdate()</literal>:"
+msgstr "update/delete en masa"
-#: index.docbook:112
-msgid "As already discussed, automatic and transparent object/relational mapping is concerned with the management of object state. This implies that the object state is available in memory, hence manipulating (using the SQL <literal>Data Manipulation Language</literal> (DML) statements: <literal>INSERT</literal>, <literal>UPDATE</literal>, <literal>DELETE</literal>) data directly in the database will not affect in-memory state. However, Hibernate provides methods for bulk SQL-style DML statement execution which are performed through the Hibernate Query Language (<xref linkend=\"queryhql\"/>HQL)."
+#. Tag: para
+#: batch.xml:112
+#, no-c-format
+msgid ""
+"As already discussed, automatic and transparent object/relational mapping is "
+"concerned with the management of object state. This implies that the object "
+"state is available in memory, hence manipulating (using the SQL "
+"<literal>Data Manipulation Language</literal> (DML) statements: "
+"<literal>INSERT</literal>, <literal>UPDATE</literal>, <literal>DELETE</"
+"literal>) data directly in the database will not affect in-memory state. "
+"However, Hibernate provides methods for bulk SQL-style DML statement "
+"execution which are performed through the Hibernate Query Language (<link "
+"linkend=\"queryhql\">HQL</link>)."
msgstr ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- " Transaction tx = session.beginTransaction();\n"
- "\n"
- " String hqlUpdate = \"update Customer set name = :newName where name = :oldName\";\n"
- " int updatedEntities = s.createQuery( hqlUpdate )\n"
- " .setString( \"newName\", newName )\n"
- " .setString( \"oldName\", oldName )\n"
- " .executeUpdate();\n"
- " tx.commit();\n"
- " session.close();]]>"
+"Como ya se ha discutido, el mapeo objeto/relacional automático y "
+"transparente se refiere al manejo de estado de objetos. Esto implica que el "
+"estado del objeto está disponible en memoria, por lo tanto actualizar o "
+"borrar (usando <literal>UPDATE</literal> y <literal>DELETE</literal> de SQL) "
+"datos directamente en la base de datos no afectará el estado en memoria. Sin "
+"embargo, Hibernate provee métodos para la ejecución de sentencias del estilo "
+"de <literal>UPDATE</literal> y <literal>DELETE</literal> de SQL que se "
+"realizan a través del Lenguaje de Consulta de Hibernate (Hibernate Query "
+"Language o <xref linkend=\"queryhql\">HQL</xref>)."
-#: index.docbook:122
-msgid "The pseudo-syntax for <literal>UPDATE</literal> and <literal>DELETE</literal> statements is: <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE where_conditions)?</literal>. Some points to note:"
-msgstr "Para ejecutar un <literal>DELETE</literal> HQL, usa el mismo método <literal>Query.executeUpdate()</literal> (el método está nombrado para aquellos familiarizados con <literal>PreparedStatement.executeUpdate()</literal> de JDBC):"
+#. Tag: para
+#: batch.xml:122
+#, no-c-format
+msgid ""
+"The pseudo-syntax for <literal>UPDATE</literal> and <literal>DELETE</"
+"literal> statements is: <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE "
+"where_conditions)?</literal>. Some points to note:"
+msgstr ""
+"La pseudo-sintáxis para sentencias <literal>UPDATE</literal> y "
+"<literal>DELETE</literal> es: <literal>( UPDATE | DELETE ) FROM? ClassName "
+"(WHERE WHERE_CONDITIONS)?</literal>. Algunos puntos a tener en cuenta:"
-#: index.docbook:130
+#. Tag: para
+#: batch.xml:130
+#, no-c-format
msgid "In the from-clause, the FROM keyword is optional"
+msgstr "En la cláusula-from, la palabra clave FROM es opcional"
+
+#. Tag: para
+#: batch.xml:135
+#, no-c-format
+msgid ""
+"There can only be a single entity named in the from-clause; it can "
+"optionally be aliased. If the entity name is aliased, then any property "
+"references must be qualified using that alias; if the entity name is not "
+"aliased, then it is illegal for any property references to be qualified."
msgstr ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- " Transaction tx = session.beginTransaction();\n"
- "\n"
- " String hqlDelete = \"delete Customer where name = :oldName\";\n"
- " int deletedEntities = s.createQuery( hqlDelete )\n"
- " .setString( \"oldName\", oldName )\n"
- " .executeUpdate();\n"
- " tx.commit();\n"
- " session.close();]]>"
+"There can only be a single entity named in the from-clause; it can "
+"optionally be aliased. If the entity name is aliased, then any property "
+"references must be qualified using that alias; if the entity name is not "
+"aliased, then it is illegal for any property references to be qualified."
-#: index.docbook:135
-msgid "There can only be a single entity named in the from-clause; it can optionally be aliased. If the entity name is aliased, then any property references must be qualified using that alias; if the entity name is not aliased, then it is illegal for any property references to be qualified."
-msgstr "El valor <literal>int</literal> devuelto por el método <literal>Query.executeUpdate()</literal> indica el número de entidades afectadas por la operación. Considera que esto puede o no correlacionarse al número de filas afectadas en la base de datos. Una operación masiva HQL podría resultar en que se ejecuten múltiples sentencias de SQL reales, para joined-subclass, por ejemplo. El número devuelto indica el número de entidades reales afectadas por la sentencia. Volviendo al ejemplo de joined-subclass, un borrado contra una de las subclases puede resultar realmente en borrados contra no sólo la tabla a la que está mapeada esa subclase, sino también la tabla \"raíz\" y potencialmente tablas de joined-subclass más debajo en la jerarquía de herencia."
+#. Tag: para
+#: batch.xml:143
+#, no-c-format
+msgid ""
+"No <link linkend=\"queryhql-joins-forms\">joins</link> (either implicit or "
+"explicit) can be specified in a bulk HQL query. Sub-queries may be used in "
+"the where-clause; the subqueries, themselves, may contain joins."
+msgstr ""
+"No <link linkend=\"queryhql-joins-forms\">joins</link> (either implicit or "
+"explicit) can be specified in a bulk HQL query. Sub-queries may be used in "
+"the where-clause; the subqueries, themselves, may contain joins."
-#: index.docbook:143
-msgid "No <xref linkend=\"queryhql-joins-forms\"/>joins (either implicit or explicit) can be specified in a bulk HQL query. Sub-queries may be used in the where-clause; the subqueries, themselves, may contain joins."
-msgstr "Ten en cuenta que existen actualmente unas pocas limitaciones con las operaciones HQL masivas, que serán atendidas en lanzamientos futuros; consulta la hoja de ruta de JIRA para más detalles."
-
-#: index.docbook:150
+#. Tag: para
+#: batch.xml:150
+#, no-c-format
msgid "The where-clause is also optional."
-msgstr ""
+msgstr "La cláusula-where es también opcional."
-#: index.docbook:156
-msgid "As an example, to execute an HQL <literal>UPDATE</literal>, use the <literal>Query.executeUpdate()</literal> method (the method is named for those familiar with JDBC's <literal>PreparedStatement.executeUpdate()</literal>):"
+#. Tag: para
+#: batch.xml:156
+#, no-c-format
+msgid ""
+"As an example, to execute an HQL <literal>UPDATE</literal>, use the "
+"<literal>Query.executeUpdate()</literal> method (the method is named for "
+"those familiar with JDBC's <literal>PreparedStatement.executeUpdate()</"
+"literal>):"
msgstr ""
+"Como un ejemplo, para ejecutar un <literal>UPDATE</literal> HQL, usa el "
+"método <literal>Query.executeUpdate()</literal>(the method is named for "
+"those familiar with JDBC's <literal>PreparedStatement.executeUpdate()</"
+"literal>):"
-#: index.docbook:162
+#. Tag: programlisting
+#: batch.xml:162
+#, no-c-format
msgid ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- "\n"
- "String hqlUpdate = \"update Customer c set c.name = :newName where c.name = :oldName\";\n"
- "// or String hqlUpdate = \"update Customer set name = :newName where name = :oldName\";\n"
- "int updatedEntities = s.createQuery( hqlUpdate )\n"
- " .setString( \"newName\", newName )\n"
- " .setString( \"oldName\", oldName )\n"
- " .executeUpdate();\n"
- "tx.commit();\n"
- "session.close();]]>"
+"<![CDATA[Session session = sessionFactory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+"\n"
+"String hqlUpdate = \"update Customer c set c.name = :newName where c.name = :"
+"oldName\";\n"
+"// or String hqlUpdate = \"update Customer set name = :newName where name = :"
+"oldName\";\n"
+"int updatedEntities = s.createQuery( hqlUpdate )\n"
+" .setString( \"newName\", newName )\n"
+" .setString( \"oldName\", oldName )\n"
+" .executeUpdate();\n"
+"tx.commit();\n"
+"session.close();]]>"
msgstr ""
-#: index.docbook:164
-msgid "HQL <literal>UPDATE</literal> statements, by default do not effect the <xref linkend=\"mapping-declaration-version\"/>version or the <xref linkend=\"mapping-declaration-timestamp\"/>timestamp property values for the affected entities; this is in keeping with the EJB3 specification. However, you can force Hibernate to properly reset the <literal>version</literal> or <literal>timestamp</literal> property values through the use of a <literal>versioned update</literal>. This is achieved by adding the <literal>VERSIONED</literal> keyword after the <literal>UPDATE</literal> keyword."
+#. Tag: para
+#: batch.xml:164
+#, no-c-format
+msgid ""
+"HQL <literal>UPDATE</literal> statements, by default do not effect the <link "
+"linkend=\"mapping-declaration-version\">version</link> or the <link linkend="
+"\"mapping-declaration-timestamp\">timestamp</link> property values for the "
+"affected entities; this is in keeping with the EJB3 specification. However, "
+"you can force Hibernate to properly reset the <literal>version</literal> or "
+"<literal>timestamp</literal> property values through the use of a "
+"<literal>versioned update</literal>. This is achieved by adding the "
+"<literal>VERSIONED</literal> keyword after the <literal>UPDATE</literal> "
+"keyword."
msgstr ""
+"HQL <literal>UPDATE</literal> statements, by default do not effect the <link "
+"linkend=\"mapping-declaration-version\">version</link> or the <link linkend="
+"\"mapping-declaration-timestamp\">timestamp</link> property values for the "
+"affected entities; this is in keeping with the EJB3 specification. However, "
+"you can force Hibernate to properly reset the <literal>version</literal> or "
+"<literal>timestamp</literal> property values through the use of a "
+"<literal>versioned update</literal>. This is achieved by adding the "
+"<literal>VERSIONED</literal> keyword after the <literal>UPDATE</literal> "
+"keyword."
-#: index.docbook:174
+#. Tag: programlisting
+#: batch.xml:174
+#, no-c-format
msgid ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- "String hqlVersionedUpdate = \"update versioned Customer set name = :newName where name = :oldName\";\n"
- "int updatedEntities = s.createQuery( hqlUpdate )\n"
- " .setString( \"newName\", newName )\n"
- " .setString( \"oldName\", oldName )\n"
- " .executeUpdate();\n"
- "tx.commit();\n"
- "session.close();]]>"
+"<![CDATA[Session session = sessionFactory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+"String hqlVersionedUpdate = \"update versioned Customer set name = :newName "
+"where name = :oldName\";\n"
+"int updatedEntities = s.createQuery( hqlUpdate )\n"
+" .setString( \"newName\", newName )\n"
+" .setString( \"oldName\", oldName )\n"
+" .executeUpdate();\n"
+"tx.commit();\n"
+"session.close();]]>"
msgstr ""
-#: index.docbook:176
-msgid "Note that custom version types (<literal>org.hibernate.usertype.UserVersionType</literal>) are not allowed in conjunction with a <literal>update versioned</literal> statement."
+#. Tag: para
+#: batch.xml:176
+#, no-c-format
+msgid ""
+"Note that custom version types (<literal>org.hibernate.usertype."
+"UserVersionType</literal>) are not allowed in conjunction with a "
+"<literal>update versioned</literal> statement."
msgstr ""
+"Note that custom version types (<literal>org.hibernate.usertype."
+"UserVersionType</literal>) are not allowed in conjunction with a "
+"<literal>update versioned</literal> statement."
-#: index.docbook:181
-msgid "To execute an HQL <literal>DELETE</literal>, use the same <literal>Query.executeUpdate()</literal> method:"
+#. Tag: para
+#: batch.xml:181
+#, no-c-format
+msgid ""
+"To execute an HQL <literal>DELETE</literal>, use the same <literal>Query."
+"executeUpdate()</literal> method:"
msgstr ""
+"Para ejecutar un <literal>DELETE</literal> HQL, usa el mismo método "
+"<literal>Query.executeUpdate()</literal>:"
-#: index.docbook:186
+#. Tag: programlisting
+#: batch.xml:186
+#, no-c-format
msgid ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- "\n"
- "String hqlDelete = \"delete Customer c where c.name = :oldName\";\n"
- "// or String hqlDelete = \"delete Customer where name = :oldName\";\n"
- "int deletedEntities = s.createQuery( hqlDelete )\n"
- " .setString( \"oldName\", oldName )\n"
- " .executeUpdate();\n"
- "tx.commit();\n"
- "session.close();]]>"
+"<![CDATA[Session session = sessionFactory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+"\n"
+"String hqlDelete = \"delete Customer c where c.name = :oldName\";\n"
+"// or String hqlDelete = \"delete Customer where name = :oldName\";\n"
+"int deletedEntities = s.createQuery( hqlDelete )\n"
+" .setString( \"oldName\", oldName )\n"
+" .executeUpdate();\n"
+"tx.commit();\n"
+"session.close();]]>"
msgstr ""
-#: index.docbook:188
-msgid "The <literal>int</literal> value returned by the <literal>Query.executeUpdate()</literal> method indicate the number of entities effected by the operation. Consider this may or may not correlate to the number of rows effected in the database. An HQL bulk operation might result in multiple actual SQL statements being executed, for joined-subclass, for example. The returned number indicates the number of actual entities affected by the statement. Going back to the example of joined-subclass, a delete against one of the subclasses may actually result in deletes against not just the table to which that subclass is mapped, but also the \"root\" table and potentially joined-subclass tables further down the inheritence hierarchy."
+#. Tag: para
+#: batch.xml:188
+#, no-c-format
+msgid ""
+"The <literal>int</literal> value returned by the <literal>Query.executeUpdate"
+"()</literal> method indicate the number of entities effected by the "
+"operation. Consider this may or may not correlate to the number of rows "
+"effected in the database. An HQL bulk operation might result in multiple "
+"actual SQL statements being executed, for joined-subclass, for example. The "
+"returned number indicates the number of actual entities affected by the "
+"statement. Going back to the example of joined-subclass, a delete against "
+"one of the subclasses may actually result in deletes against not just the "
+"table to which that subclass is mapped, but also the \"root\" table and "
+"potentially joined-subclass tables further down the inheritence hierarchy."
msgstr ""
+"El valor <literal>int</literal> devuelto por el método <literal>Query."
+"executeUpdate()</literal> indica el número de entidades afectadas por la "
+"operación. Considera que esto puede o no correlacionarse al número de filas "
+"afectadas en la base de datos. Una operación masiva HQL podría resultar en "
+"que se ejecuten múltiples sentencias de SQL reales, para joined-subclass, "
+"por ejemplo. El número devuelto indica el número de entidades reales "
+"afectadas por la sentencia. Volviendo al ejemplo de joined-subclass, un "
+"borrado contra una de las subclases puede resultar realmente en borrados "
+"contra no sólo la tabla a la que está mapeada esa subclase, sino también la "
+"tabla \"raíz\" y potencialmente tablas de joined-subclass más debajo en la "
+"jerarquía de herencia."
-#: index.docbook:199
-msgid "The pseudo-syntax for <literal>INSERT</literal> statements is: <literal>INSERT INTO EntityName properties_list select_statement</literal>. Some points to note:"
+#. Tag: para
+#: batch.xml:199
+#, no-c-format
+msgid ""
+"The pseudo-syntax for <literal>INSERT</literal> statements is: "
+"<literal>INSERT INTO EntityName properties_list select_statement</literal>. "
+"Some points to note:"
msgstr ""
+"Ten en cuenta que existen actualmente unas pocas limitaciones con las "
+"operaciones HQL masivas, que serán atendidas en lanzamientos futuros; "
+"consulta la hoja de ruta de JIRA para más detalles."
-#: index.docbook:207
-msgid "Only the INSERT INTO ... SELECT ... form is supported; not the INSERT INTO ... VALUES ... form."
-msgstr ""
+#. Tag: para
+#: batch.xml:207
+#, no-c-format
+msgid ""
+"Only the INSERT INTO ... SELECT ... form is supported; not the INSERT "
+"INTO ... VALUES ... form."
+msgstr "translator-credits"
-#: index.docbook:210
-msgid "The properties_list is analogous to the <literal>column speficiation</literal> in the SQL <literal>INSERT</literal> statement. For entities involved in mapped inheritence, only properties directly defined on that given class-level can be used in the properties_list. Superclass properties are not allowed; and subclass properties do not make sense. In other words, <literal>INSERT</literal> statements are inherently non-polymorphic."
+#. Tag: para
+#: batch.xml:210
+#, no-c-format
+msgid ""
+"The properties_list is analogous to the <literal>column speficiation</"
+"literal> in the SQL <literal>INSERT</literal> statement. For entities "
+"involved in mapped inheritence, only properties directly defined on that "
+"given class-level can be used in the properties_list. Superclass properties "
+"are not allowed; and subclass properties do not make sense. In other words, "
+"<literal>INSERT</literal> statements are inherently non-polymorphic."
msgstr ""
-#: index.docbook:220
-msgid "select_statement can be any valid HQL select query, with the caveat that the return types must match the types expected by the insert. Currently, this is checked during query compilation rather than allowing the check to relegate to the database. Note however that this might cause problems between Hibernate <literal>Type</literal>s which are <emphasis>equivalent</emphasis> as opposed to <emphasis>equal</emphasis>. This might cause issues with mismatches between a property defined as a <literal>org.hibernate.type.DateType</literal> and a property defined as a <literal>org.hibernate.type.TimestampType</literal>, even though the database might not make a distinction or might be able to handle the conversion."
+#. Tag: para
+#: batch.xml:220
+#, no-c-format
+msgid ""
+"select_statement can be any valid HQL select query, with the caveat that the "
+"return types must match the types expected by the insert. Currently, this is "
+"checked during query compilation rather than allowing the check to relegate "
+"to the database. Note however that this might cause problems between "
+"Hibernate <literal>Type</literal>s which are <emphasis>equivalent</emphasis> "
+"as opposed to <emphasis>equal</emphasis>. This might cause issues with "
+"mismatches between a property defined as a <literal>org.hibernate.type."
+"DateType</literal> and a property defined as a <literal>org.hibernate.type."
+"TimestampType</literal>, even though the database might not make a "
+"distinction or might be able to handle the conversion."
msgstr ""
-#: index.docbook:232
-msgid "For the id property, the insert statement gives you two options. You can either explicitly specify the id property in the properties_list (in which case its value is taken from the corresponding select expression) or omit it from the properties_list (in which case a generated value is used). This later option is only available when using id generators that operate in the database; attempting to use this option with any \"in memory\" type generators will cause an exception during parsing. Note that for the purposes of this discussion, in-database generators are considered to be <literal>org.hibernate.id.SequenceGenerator</literal> (and its subclasses) and any implementors of <literal>org.hibernate.id.PostInsertIdentifierGenerator</literal>. The most notable exception here is <literal>org.hibernate.id.TableHiLoGenerator</literal>, which cannot be used because it does not expose a selectable way to get its values."
+#. Tag: para
+#: batch.xml:232
+#, no-c-format
+msgid ""
+"For the id property, the insert statement gives you two options. You can "
+"either explicitly specify the id property in the properties_list (in which "
+"case its value is taken from the corresponding select expression) or omit it "
+"from the properties_list (in which case a generated value is used). This "
+"later option is only available when using id generators that operate in the "
+"database; attempting to use this option with any \"in memory\" type "
+"generators will cause an exception during parsing. Note that for the "
+"purposes of this discussion, in-database generators are considered to be "
+"<literal>org.hibernate.id.SequenceGenerator</literal> (and its subclasses) "
+"and any implementors of <literal>org.hibernate.id."
+"PostInsertIdentifierGenerator</literal>. The most notable exception here is "
+"<literal>org.hibernate.id.TableHiLoGenerator</literal>, which cannot be used "
+"because it does not expose a selectable way to get its values."
msgstr ""
-#: index.docbook:247
-msgid "For properties mapped as either <literal>version</literal> or <literal>timestamp</literal>, the insert statement gives you two options. You can either specify the property in the properties_list (in which case its value is taken from the corresponding select expressions) or omit it from the properties_list (in which case the <literal>seed value</literal> defined by the <literal>org.hibernate.type.VersionType</literal> is used)."
+#. Tag: para
+#: batch.xml:247
+#, no-c-format
+msgid ""
+"For properties mapped as either <literal>version</literal> or "
+"<literal>timestamp</literal>, the insert statement gives you two options. "
+"You can either specify the property in the properties_list (in which case "
+"its value is taken from the corresponding select expressions) or omit it "
+"from the properties_list (in which case the <literal>seed value</literal> "
+"defined by the <literal>org.hibernate.type.VersionType</literal> is used)."
msgstr ""
-#: index.docbook:257
+#. Tag: para
+#: batch.xml:257
+#, no-c-format
msgid "An example HQL <literal>INSERT</literal> statement execution:"
msgstr ""
-#: index.docbook:261
+#. Tag: programlisting
+#: batch.xml:261
+#, no-c-format
msgid ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- "\n"
- "String hqlInsert = \"insert into DelinquentAccount (id, name) select c.id, c.name from Customer c where ...\";\n"
- "int createdEntities = s.createQuery( hqlInsert )\n"
- " .executeUpdate();\n"
- "tx.commit();\n"
- "session.close();]]>"
+"<![CDATA[Session session = sessionFactory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+"\n"
+"String hqlInsert = \"insert into DelinquentAccount (id, name) select c.id, c."
+"name from Customer c where ...\";\n"
+"int createdEntities = s.createQuery( hqlInsert )\n"
+" .executeUpdate();\n"
+"tx.commit();\n"
+"session.close();]]>"
msgstr ""
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
Modified: core/trunk/documentation/manual/translations/es-ES/content/best_practices.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/best_practices.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/best_practices.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,168 +1,460 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: best_practices.xml:5
+#, no-c-format
msgid "Best Practices"
-msgstr "Mejores Prácticas"
+msgstr "Mejores Prácticas"
-#: index.docbook:9
-msgid "Write fine-grained classes and map them using <literal><component></literal>."
-msgstr "Escribe clase finamente granularizadas y mapealas usando <literal><component></literal>."
+#. Tag: term
+#: best_practices.xml:9
+#, no-c-format
+msgid ""
+"Write fine-grained classes and map them using <literal><component></"
+"literal>."
+msgstr ""
+"Escribe clase finamente granularizadas y mapealas usando <literal><"
+"component></literal>."
-#: index.docbook:11
-msgid "Use an <literal>Address</literal> class to encapsulate <literal>street</literal>, <literal>suburb</literal>, <literal>state</literal>, <literal>postcode</literal>. This encourages code reuse and simplifies refactoring."
-msgstr "Usa una clase <literal>Dirección</literal> para encapsular <literal>calle</literal>, <literal>distrito</literal>, <literal>estado</literal>, <literal>código postal</literal>. Esto alienta la reutilización de código y simplifica el refactoring."
+#. Tag: para
+#: best_practices.xml:11
+#, no-c-format
+msgid ""
+"Use an <literal>Address</literal> class to encapsulate <literal>street</"
+"literal>, <literal>suburb</literal>, <literal>state</literal>, "
+"<literal>postcode</literal>. This encourages code reuse and simplifies "
+"refactoring."
+msgstr ""
+"Usa una clase <literal>Dirección</literal> para encapsular <literal>calle</"
+"literal>, <literal>distrito</literal>, <literal>estado</literal>, "
+"<literal>código postal</literal>. Esto alienta la reutilización de código y "
+"simplifica el refactoring."
-#: index.docbook:19
+#. Tag: term
+#: best_practices.xml:19
+#, no-c-format
msgid "Declare identifier properties on persistent classes."
msgstr "Declara las propiedades identificadoras en clases persistentes."
-#: index.docbook:21
-msgid "Hibernate makes identifier properties optional. There are all sorts of reasons why you should use them. We recommend that identifiers be 'synthetic' (generated, with no business meaning)."
-msgstr "Hibernate hace opcionales las propiedades identificadoras. Existen todo tipo de razones por las que debes usarlas. Recomendamos que los identificadores sean 'sintéticos' (generados, sin ningún significado de negocio)."
+#. Tag: para
+#: best_practices.xml:21
+#, no-c-format
+msgid ""
+"Hibernate makes identifier properties optional. There are all sorts of "
+"reasons why you should use them. We recommend that identifiers be "
+"'synthetic' (generated, with no business meaning)."
+msgstr ""
+"Hibernate hace opcionales las propiedades identificadoras. Existen todo tipo "
+"de razones por las que debes usarlas. Recomendamos que los identificadores "
+"sean 'sintéticos' (generados, sin ningún significado de negocio)."
-#: index.docbook:29
+#. Tag: term
+#: best_practices.xml:29
+#, no-c-format
msgid "Identify natural keys."
msgstr "Identifica las claves naturales."
-#: index.docbook:31
-msgid "Identify natural keys for all entities, and map them using <literal><natural-id></literal>. Implement <literal>equals()</literal> and <literal>hashCode()</literal> to compare the properties that make up the natural key."
-msgstr "Identifica las claves naturales de todas las entidades, y mapealas usando <literal><natural-id></literal>. Implementa <literal>equals()</literal> y <literal>hashCode()</literal> para comparar las propiedades que componen la clave natural."
+#. Tag: para
+#: best_practices.xml:31
+#, no-c-format
+msgid ""
+"Identify natural keys for all entities, and map them using <literal><"
+"natural-id></literal>. Implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> to compare the properties that make up the "
+"natural key."
+msgstr ""
+"Identifica las claves naturales de todas las entidades, y mapealas usando "
+"<literal><natural-id></literal>. Implementa <literal>equals()</"
+"literal> y <literal>hashCode()</literal> para comparar las propiedades que "
+"componen la clave natural."
-#: index.docbook:39
+#. Tag: term
+#: best_practices.xml:39
+#, no-c-format
msgid "Place each class mapping in its own file."
msgstr "Coloca cada mapeo de clase en su propio fichero."
-#: index.docbook:41
-msgid "Don't use a single monolithic mapping document. Map <literal>com.eg.Foo</literal> in the file <literal>com/eg/Foo.hbm.xml</literal>. This makes particularly good sense in a team environment."
-msgstr "No uses un solo documento monolítico de mapeo. Mapea <literal>com.eg.Foo</literal> en el fichero <literal>com/eg/Foo.hbm.xml</literal>. Esto tiene sentido particularmente en un ambiente de equipo."
+#. Tag: para
+#: best_practices.xml:41
+#, no-c-format
+msgid ""
+"Don't use a single monolithic mapping document. Map <literal>com.eg.Foo</"
+"literal> in the file <literal>com/eg/Foo.hbm.xml</literal>. This makes "
+"particularly good sense in a team environment."
+msgstr ""
+"No uses un solo documento monolítico de mapeo. Mapea <literal>com.eg.Foo</"
+"literal> en el fichero <literal>com/eg/Foo.hbm.xml</literal>. Esto tiene "
+"sentido particularmente en un ambiente de equipo."
-#: index.docbook:49
+#. Tag: term
+#: best_practices.xml:49
+#, no-c-format
msgid "Load mappings as resources."
msgstr "Carga los mapeos como recursos."
-#: index.docbook:51
+#. Tag: para
+#: best_practices.xml:51
+#, no-c-format
msgid "Deploy the mappings along with the classes they map."
msgstr "Despliega los mapeos junto a las clases que mapean."
-#: index.docbook:57
+#. Tag: term
+#: best_practices.xml:57
+#, no-c-format
msgid "Consider externalising query strings."
msgstr "Considera externalizar las cadenas de consulta."
-#: index.docbook:59
-msgid "This is a good practice if your queries call non-ANSI-standard SQL functions. Externalising the query strings to mapping files will make the application more portable."
-msgstr "Esta es una buena práctica si tus consultas llaman a funciones SQL que no son del estándar ANSI. Externalizar las cadenas de consulta a ficheros de mapeo hará la aplicación más portable."
+#. Tag: para
+#: best_practices.xml:59
+#, no-c-format
+msgid ""
+"This is a good practice if your queries call non-ANSI-standard SQL "
+"functions. Externalising the query strings to mapping files will make the "
+"application more portable."
+msgstr ""
+"Esta es una buena práctica si tus consultas llaman a funciones SQL que no "
+"son del estándar ANSI. Externalizar las cadenas de consulta a ficheros de "
+"mapeo hará la aplicación más portable."
-#: index.docbook:67
+#. Tag: term
+#: best_practices.xml:67
+#, no-c-format
msgid "Use bind variables."
msgstr "Usa variables de ligado."
-#: index.docbook:69
-msgid "As in JDBC, always replace non-constant values by \"?\". Never use string manipulation to bind a non-constant value in a query! Even better, consider using named parameters in queries."
-msgstr "Igual que en JDBC, siempre remplaza valores no constantes con \"?\". ¡Nunca uses manipulación de cadenas para ligar un valor no constante en una consulta! Incluso mejor, considera usar parámetros con nombre en las consultas."
+#. Tag: para
+#: best_practices.xml:69
+#, no-c-format
+msgid ""
+"As in JDBC, always replace non-constant values by \"?\". Never use string "
+"manipulation to bind a non-constant value in a query! Even better, consider "
+"using named parameters in queries."
+msgstr ""
+"Igual que en JDBC, siempre remplaza valores no constantes con \"?\". ¡Nunca "
+"uses manipulación de cadenas para ligar un valor no constante en una "
+"consulta! Incluso mejor, considera usar parámetros con nombre en las "
+"consultas."
-#: index.docbook:77
+#. Tag: term
+#: best_practices.xml:77
+#, no-c-format
msgid "Don't manage your own JDBC connections."
msgstr "No manejes tus propias conexiones JDBC."
-#: index.docbook:79
-msgid "Hibernate lets the application manage JDBC connections. This approach should be considered a last-resort. If you can't use the built-in connections providers, consider providing your own implementation of <literal>org.hibernate.connection.ConnectionProvider</literal>."
-msgstr "Hibernate deja a la aplicación administre las conexiones JDBC. Este enfoque debe considerarse como último recurso. Si no puedes usar los provedores de conexión prefabricados, considera prover tu propia implementación de <literal>org.hibernate.connection.ConnectionProvider</literal>."
+#. Tag: para
+#: best_practices.xml:79
+#, no-c-format
+msgid ""
+"Hibernate lets the application manage JDBC connections. This approach should "
+"be considered a last-resort. If you can't use the built-in connections "
+"providers, consider providing your own implementation of <literal>org."
+"hibernate.connection.ConnectionProvider</literal>."
+msgstr ""
+"Hibernate deja a la aplicación administre las conexiones JDBC. Este enfoque "
+"debe considerarse como último recurso. Si no puedes usar los provedores de "
+"conexión prefabricados, considera prover tu propia implementación de "
+"<literal>org.hibernate.connection.ConnectionProvider</literal>."
-#: index.docbook:87
+#. Tag: term
+#: best_practices.xml:87
+#, no-c-format
msgid "Consider using a custom type."
msgstr "Considera usar un tipo personalizado."
-#: index.docbook:89
-msgid "Suppose you have a Java type, say from some library, that needs to be persisted but doesn't provide the accessors needed to map it as a component. You should consider implementing <literal>org.hibernate.UserType</literal>. This approach frees the application code from implementing transformations to / from a Hibernate type."
-msgstr "Supón que tienes un tipo Java, digamos de alguna biblioteca, que necesita hacerse persistente pero no provee los métodos de acceso necesarios para mapearlo como un componente. Debes considerar implementar <literal>org.hibernate.UserType</literal>. Este enfoque libera al código de aplicación de implementar transformaciones a / desde un tipo Hibernate."
+#. Tag: para
+#: best_practices.xml:89
+#, no-c-format
+msgid ""
+"Suppose you have a Java type, say from some library, that needs to be "
+"persisted but doesn't provide the accessors needed to map it as a component. "
+"You should consider implementing <literal>org.hibernate.UserType</literal>. "
+"This approach frees the application code from implementing transformations "
+"to / from a Hibernate type."
+msgstr ""
+"Supón que tienes un tipo Java, digamos de alguna biblioteca, que necesita "
+"hacerse persistente pero no provee los métodos de acceso necesarios para "
+"mapearlo como un componente. Debes considerar implementar <literal>org."
+"hibernate.UserType</literal>. Este enfoque libera al código de aplicación de "
+"implementar transformaciones a / desde un tipo Hibernate."
-#: index.docbook:98
+#. Tag: term
+#: best_practices.xml:98
+#, no-c-format
msgid "Use hand-coded JDBC in bottlenecks."
msgstr "Usa JDBC codificado a mano en cuellos de botella."
-#: index.docbook:100
-msgid "In performance-critical areas of the system, some kinds of operations might benefit from direct JDBC. But please, wait until you <emphasis>know</emphasis> something is a bottleneck. And don't assume that direct JDBC is necessarily faster. If you need to use direct JDBC, it might be worth opening a Hibernate <literal>Session</literal> and using that JDBC connection. That way you can still use the same transaction strategy and underlying connection provider."
-msgstr "En áreas del sistema de rendimiento crítico, algunos tipos de operaciones podrían beneficiarse del JDBC directo. Pero por favor, espero hasta que <emphasis>sepas</emphasis> que algo es un cuello de botella. Y no asumas que el JDBC directo es necesariamente más rápido. Si necesitas usar JDBC directo, podría ser valioso abrir una <literal>Session</literal> de Hibernate y usar esa conexión JDBC. De esta forma puedes usar aún la misma estrategia de transacción y el mismo proveedor de conexiones subyacente."
+#. Tag: para
+#: best_practices.xml:100
+#, no-c-format
+msgid ""
+"In performance-critical areas of the system, some kinds of operations might "
+"benefit from direct JDBC. But please, wait until you <emphasis>know</"
+"emphasis> something is a bottleneck. And don't assume that direct JDBC is "
+"necessarily faster. If you need to use direct JDBC, it might be worth "
+"opening a Hibernate <literal>Session</literal> and using that JDBC "
+"connection. That way you can still use the same transaction strategy and "
+"underlying connection provider."
+msgstr ""
+"En áreas del sistema de rendimiento crítico, algunos tipos de operaciones "
+"podrían beneficiarse del JDBC directo. Pero por favor, espero hasta que "
+"<emphasis>sepas</emphasis> que algo es un cuello de botella. Y no asumas que "
+"el JDBC directo es necesariamente más rápido. Si necesitas usar JDBC "
+"directo, podría ser valioso abrir una <literal>Session</literal> de "
+"Hibernate y usar esa conexión JDBC. De esta forma puedes usar aún la misma "
+"estrategia de transacción y el mismo proveedor de conexiones subyacente."
-#: index.docbook:110
+#. Tag: term
+#: best_practices.xml:110
+#, no-c-format
msgid "Understand <literal>Session</literal> flushing."
msgstr "Comprende la limpieza (flushing) de <literal>Session</literal>."
-#: index.docbook:112
-msgid "From time to time the Session synchronizes its persistent state with the database. Performance will be affected if this process occurs too often. You may sometimes minimize unnecessary flushing by disabling automatic flushing or even by changing the order of queries and other operations within a particular transaction."
-msgstr "De vez en cuando la sesión sincroniza su estado persistente con la base de datos. El rendimiento se verá afectado si este proceso ocurre demasiado frecuentemente. A veces puedes minimizar limpieza innecesaria deshabilitando la limpieza automática o incluso cambiando el orden de las consultas u otras operaciones en una transacción en particular."
+#. Tag: para
+#: best_practices.xml:112
+#, no-c-format
+msgid ""
+"From time to time the Session synchronizes its persistent state with the "
+"database. Performance will be affected if this process occurs too often. You "
+"may sometimes minimize unnecessary flushing by disabling automatic flushing "
+"or even by changing the order of queries and other operations within a "
+"particular transaction."
+msgstr ""
+"De vez en cuando la sesión sincroniza su estado persistente con la base de "
+"datos. El rendimiento se verá afectado si este proceso ocurre demasiado "
+"frecuentemente. A veces puedes minimizar limpieza innecesaria deshabilitando "
+"la limpieza automática o incluso cambiando el orden de las consultas u otras "
+"operaciones en una transacción en particular."
-#: index.docbook:121
+#. Tag: term
+#: best_practices.xml:121
+#, no-c-format
msgid "In a three tiered architecture, consider using detached objects."
-msgstr "En una aplicación en tres gradas, considera usar objetos separados."
+msgstr "En una aplicación en tres gradas, considera usar objetos separados."
-#: index.docbook:123
-msgid "When using a servlet / session bean architecture, you could pass persistent objects loaded in the session bean to and from the servlet / JSP layer. Use a new session to service each request. Use <literal>Session.merge()</literal> or <literal>Session.saveOrUpdate()</literal> to synchronize objects with the database."
-msgstr "Al usar una arquitectura de servlet / sesión, puedes pasar objetos persistentes en el bean de sesión hacia y desde la capa de servlet / JSP. Usa una sesión nueva para atender el servicio de cada petición. Usa <literal>Session.merge()</literal> o <literal>Session.saveOrUpdate()</literal> para sincronizar los objetos con la base de datos."
+#. Tag: para
+#: best_practices.xml:123
+#, no-c-format
+msgid ""
+"When using a servlet / session bean architecture, you could pass persistent "
+"objects loaded in the session bean to and from the servlet / JSP layer. Use "
+"a new session to service each request. Use <literal>Session.merge()</"
+"literal> or <literal>Session.saveOrUpdate()</literal> to synchronize objects "
+"with the database."
+msgstr ""
+"Al usar una arquitectura de servlet / sesión, puedes pasar objetos "
+"persistentes en el bean de sesión hacia y desde la capa de servlet / JSP. "
+"Usa una sesión nueva para atender el servicio de cada petición. Usa "
+"<literal>Session.merge()</literal> o <literal>Session.saveOrUpdate()</"
+"literal> para sincronizar los objetos con la base de datos."
-#: index.docbook:132
+#. Tag: term
+#: best_practices.xml:132
+#, no-c-format
msgid "In a two tiered architecture, consider using long persistence contexts."
-msgstr "En una arquitectura en dos gradas, considera usar contexto de persistencia largos."
+msgstr ""
+"En una arquitectura en dos gradas, considera usar contexto de persistencia "
+"largos."
-#: index.docbook:134
-msgid "Database Transactions have to be as short as possible for best scalability. However, it is often neccessary to implement long running <emphasis>application transactions</emphasis>, a single unit-of-work from the point of view of a user. An application transaction might span several client request/response cycles. It is common to use detached objects to implement application transactions. An alternative, extremely appropriate in two tiered architecture, is to maintain a single open persistence contact (session) for the whole life cycle of the application transaction and simply disconnect from the JDBC connection at the end of each request and reconnect at the beginning of the subsequent request. Never share a single session across more than one application transaction, or you will be working with stale data."
-msgstr "Las transacciones de base de datos tienen que ser tan cortas como sea posible. Sin embargo, frecuentemente es necesario implementar <emphasis>transacciones de aplicación</emphasis> ejecutándose en largo, una sola unidad de trabajo desde el punto de vista de un usuario. Una transacción de aplicación puede abarcar muchos ciclos petición/respuesta del cliente. Es común usar objetos separados para implementar transacciones de aplicación. Una alternativa, extremadamente apropiada en arquitecturas en dos gradas, es mantener un solo contacto de persistencia abierto (sesión) para todo el ciclo de vida de la transacción de aplicación y simplemente desconectar de la conexión JDBC al final de cada petición, y reconectar al comienzo de la petición subsecuente. Nunca compartas una única sesión a través de más de una transacción de aplicación, o est!
arás trabajando con datos añejos."
+#. Tag: para
+#: best_practices.xml:134
+#, no-c-format
+msgid ""
+"Database Transactions have to be as short as possible for best scalability. "
+"However, it is often neccessary to implement long running "
+"<emphasis>application transactions</emphasis>, a single unit-of-work from "
+"the point of view of a user. An application transaction might span several "
+"client request/response cycles. It is common to use detached objects to "
+"implement application transactions. An alternative, extremely appropriate in "
+"two tiered architecture, is to maintain a single open persistence contact "
+"(session) for the whole life cycle of the application transaction and simply "
+"disconnect from the JDBC connection at the end of each request and reconnect "
+"at the beginning of the subsequent request. Never share a single session "
+"across more than one application transaction, or you will be working with "
+"stale data."
+msgstr ""
+"Las transacciones de base de datos tienen que ser tan cortas como sea "
+"posible. Sin embargo, frecuentemente es necesario implementar "
+"<emphasis>transacciones de aplicación</emphasis> ejecutándose en largo, una "
+"sola unidad de trabajo desde el punto de vista de un usuario. Una "
+"transacción de aplicación puede abarcar muchos ciclos petición/respuesta del "
+"cliente. Es común usar objetos separados para implementar transacciones de "
+"aplicación. Una alternativa, extremadamente apropiada en arquitecturas en "
+"dos gradas, es mantener un solo contacto de persistencia abierto (sesión) "
+"para todo el ciclo de vida de la transacción de aplicación y simplemente "
+"desconectar de la conexión JDBC al final de cada petición, y reconectar al "
+"comienzo de la petición subsecuente. Nunca compartas una única sesión a "
+"través de más de una transacción de aplicación, o estarás trabajando con "
+"datos añejos."
-#: index.docbook:148
+#. Tag: term
+#: best_practices.xml:148
+#, no-c-format
msgid "Don't treat exceptions as recoverable."
msgstr "No trates la excepciones como recuperables."
-#: index.docbook:150
-msgid "This is more of a necessary practice than a \"best\" practice. When an exception occurs, roll back the <literal>Transaction</literal> and close the <literal>Session</literal>. If you don't, Hibernate can't guarantee that in-memory state accurately represents persistent state. As a special case of this, do not use <literal>Session.load()</literal> to determine if an instance with the given identifier exists on the database; use <literal>Session.get()</literal> or a query instead."
-msgstr "Esto es más una práctica necesaria que una \"mejor\" práctica. Cuando ocurra una excepción, deshaz (rollback) la <literal>Transaction</literal> y cierra la <literal>Session</literal>. Si no lo haces, Hibernate no puede garantizar que el estado en memoria representa con exactitud el estado persistente. Como un caso especial de esto, no uses <literal>Session.load()</literal> para determinar si una instancia con el identificador dado existe en la base de datos. En cambio, usa <literal>Session.get()</literal> o una consulta."
+#. Tag: para
+#: best_practices.xml:150
+#, no-c-format
+msgid ""
+"This is more of a necessary practice than a \"best\" practice. When an "
+"exception occurs, roll back the <literal>Transaction</literal> and close the "
+"<literal>Session</literal>. If you don't, Hibernate can't guarantee that in-"
+"memory state accurately represents persistent state. As a special case of "
+"this, do not use <literal>Session.load()</literal> to determine if an "
+"instance with the given identifier exists on the database; use "
+"<literal>Session.get()</literal> or a query instead."
+msgstr ""
+"Esto es más una práctica necesaria que una \"mejor\" práctica. Cuando ocurra "
+"una excepción, deshaz (rollback) la <literal>Transaction</literal> y cierra "
+"la <literal>Session</literal>. Si no lo haces, Hibernate no puede garantizar "
+"que el estado en memoria representa con exactitud el estado persistente. "
+"Como un caso especial de esto, no uses <literal>Session.load()</literal> "
+"para determinar si una instancia con el identificador dado existe en la base "
+"de datos. En cambio, usa <literal>Session.get()</literal> o una consulta."
-#: index.docbook:160
+#. Tag: term
+#: best_practices.xml:160
+#, no-c-format
msgid "Prefer lazy fetching for associations."
-msgstr "Prefiere la recuperación perezosa para las asociaciones."
+msgstr "Prefiere la recuperación perezosa para las asociaciones."
-#: index.docbook:162
-msgid "Use eager fetching sparingly. Use proxies and lazy collections for most associations to classes that are not likely to be completely held in the second-level cache. For associations to cached classes, where there is an a extremely high probability of a cache hit, explicitly disable eager fetching using <literal>lazy=\"false\"</literal>. When an join fetching is appropriate to a particular use case, use a query with a <literal>left join fetch</literal>."
-msgstr "Usa escasamente la recuperación temprana. Usa proxies y colecciones perezosas para la mayoría de asociaciones a clases probablemente no estén mantenidas en el caché de segundo nivel. Para las asociaciones a clases en caché, donde hay una probabilidad de acceso a caché extremadamente alta, deshabilita explícitamente la recuperación temprana usando <literal>lazy=\"false\"</literal>. Cuando sea apropiada la recuperación por unión (join fetching) para un caso de uso en particular, usa una consulta con un <literal>left join fetch</literal>."
+#. Tag: para
+#: best_practices.xml:162
+#, no-c-format
+msgid ""
+"Use eager fetching sparingly. Use proxies and lazy collections for most "
+"associations to classes that are not likely to be completely held in the "
+"second-level cache. For associations to cached classes, where there is an a "
+"extremely high probability of a cache hit, explicitly disable eager fetching "
+"using <literal>lazy=\"false\"</literal>. When an join fetching is "
+"appropriate to a particular use case, use a query with a <literal>left join "
+"fetch</literal>."
+msgstr ""
+"Usa escasamente la recuperación temprana. Usa proxies y colecciones "
+"perezosas para la mayoría de asociaciones a clases probablemente no estén "
+"mantenidas en el caché de segundo nivel. Para las asociaciones a clases en "
+"caché, donde hay una probabilidad de acceso a caché extremadamente alta, "
+"deshabilita explícitamente la recuperación temprana usando <literal>lazy="
+"\"false\"</literal>. Cuando sea apropiada la recuperación por unión (join "
+"fetching) para un caso de uso en particular, usa una consulta con un "
+"<literal>left join fetch</literal>."
-#: index.docbook:172
-msgid "Use the <emphasis>open session in view</emphasis> pattern, or a disciplined <emphasis>assembly phase</emphasis> to avoid problems with unfetched data."
-msgstr "Usa el patrón <emphasis>sesión abierta en vista</emphasis>, o una <emphasis>fase de ensamblado</emphasis> disciplinada para evitar problemas con datos no recuperados."
+#. Tag: term
+#: best_practices.xml:172
+#, no-c-format
+msgid ""
+"Use the <emphasis>open session in view</emphasis> pattern, or a disciplined "
+"<emphasis>assembly phase</emphasis> to avoid problems with unfetched data."
+msgstr ""
+"Usa el patrón <emphasis>sesión abierta en vista</emphasis>, o una "
+"<emphasis>fase de ensamblado</emphasis> disciplinada para evitar problemas "
+"con datos no recuperados."
-#: index.docbook:177
-msgid "Hibernate frees the developer from writing tedious <emphasis>Data Transfer Objects</emphasis> (DTO). In a traditional EJB architecture, DTOs serve dual purposes: first, they work around the problem that entity beans are not serializable; second, they implicitly define an assembly phase where all data to be used by the view is fetched and marshalled into the DTOs before returning control to the presentation tier. Hibernate eliminates the first purpose. However, you will still need an assembly phase (think of your business methods as having a strict contract with the presentation tier about what data is available in the detached objects) unless you are prepared to hold the persistence context (the session) open across the view rendering process. This is not a limitation of Hibernate! It is a fundamental requirement of safe transactional data access."
-msgstr "Hibernate liberal al desarrollador de escribir <emphasis>Objetos de Transferencia de Datos (Data Transfer Objects)</emphasis> (DTO). En una arquitectura tradicional de EJB, los DTOs tienen un propósito doble: primero, atacan el problema que los beans de entidad no son serializables. Segundo, definen implícitamente una fase de ensamblado cuando se recuperan y se forman (marshalling) todos los datos a usar por la vista en los DTOs antes de devolver el control a la grada de presentación. Hibernate elimina el primer propósito. Sin embargo, aún necesitas una fase de ensamblado (piensa en tus métodos de negocio como si tuviesen un contrato estricto con la grada de presentación sobre qué datos están disponibles en los objetos separados) a menos que estés preparado para tener el contexto de persistencia (la sesión) abierto a través del proceso de renderización de la vista. ¡Est!
a no es una limitación de Hibernate! Es un requerimiento fundamental de acceso seguro a datos transaccionales."
+#. Tag: para
+#: best_practices.xml:177
+#, no-c-format
+msgid ""
+"Hibernate frees the developer from writing tedious <emphasis>Data Transfer "
+"Objects</emphasis> (DTO). In a traditional EJB architecture, DTOs serve dual "
+"purposes: first, they work around the problem that entity beans are not "
+"serializable; second, they implicitly define an assembly phase where all "
+"data to be used by the view is fetched and marshalled into the DTOs before "
+"returning control to the presentation tier. Hibernate eliminates the first "
+"purpose. However, you will still need an assembly phase (think of your "
+"business methods as having a strict contract with the presentation tier "
+"about what data is available in the detached objects) unless you are "
+"prepared to hold the persistence context (the session) open across the view "
+"rendering process. This is not a limitation of Hibernate! It is a "
+"fundamental requirement of safe transactional data access."
+msgstr ""
+"Hibernate liberal al desarrollador de escribir <emphasis>Objetos de "
+"Transferencia de Datos (Data Transfer Objects)</emphasis> (DTO). En una "
+"arquitectura tradicional de EJB, los DTOs tienen un propósito doble: "
+"primero, atacan el problema que los beans de entidad no son serializables. "
+"Segundo, definen implícitamente una fase de ensamblado cuando se recuperan y "
+"se forman (marshalling) todos los datos a usar por la vista en los DTOs "
+"antes de devolver el control a la grada de presentación. Hibernate elimina "
+"el primer propósito. Sin embargo, aún necesitas una fase de ensamblado "
+"(piensa en tus métodos de negocio como si tuviesen un contrato estricto con "
+"la grada de presentación sobre qué datos están disponibles en los objetos "
+"separados) a menos que estés preparado para tener el contexto de "
+"persistencia (la sesión) abierto a través del proceso de renderización de la "
+"vista. ¡Esta no es una limitación de Hibernate! Es un requerimiento "
+"fundamental de acceso seguro a datos transaccionales."
-#: index.docbook:191
+#. Tag: term
+#: best_practices.xml:191
+#, no-c-format
msgid "Consider abstracting your business logic from Hibernate."
-msgstr "Considera abstraer tu lógica de negocio de Hibernate"
+msgstr "Considera abstraer tu lógica de negocio de Hibernate"
-#: index.docbook:193
-msgid "Hide (Hibernate) data-access code behind an interface. Combine the <emphasis>DAO</emphasis> and <emphasis>Thread Local Session</emphasis> patterns. You can even have some classes persisted by handcoded JDBC, associated to Hibernate via a <literal>UserType</literal>. (This advice is intended for \"sufficiently large\" applications; it is not appropriate for an application with five tables!)"
-msgstr "Oculta el código de acceso a datos (Hibernate) detrás de una interface. Combina los patrones <emphasis>DAO</emphasis> y <emphasis>Sesión de Hebra Local</emphasis>. Incluso puedes tener algunas clases hechas persistentes por JDBC escrito a mano, asociadas a Hibernate por medio de un <literal>UserType</literal>. (Este consejo está pensado para aplicaciones \"suficientemente grandes\"; ¡no es apropiado para una aplicación con cinco tablas!)"
+#. Tag: para
+#: best_practices.xml:193
+#, no-c-format
+msgid ""
+"Hide (Hibernate) data-access code behind an interface. Combine the "
+"<emphasis>DAO</emphasis> and <emphasis>Thread Local Session</emphasis> "
+"patterns. You can even have some classes persisted by handcoded JDBC, "
+"associated to Hibernate via a <literal>UserType</literal>. (This advice is "
+"intended for \"sufficiently large\" applications; it is not appropriate for "
+"an application with five tables!)"
+msgstr ""
+"Oculta el código de acceso a datos (Hibernate) detrás de una interface. "
+"Combina los patrones <emphasis>DAO</emphasis> y <emphasis>Sesión de Hebra "
+"Local</emphasis>. Incluso puedes tener algunas clases hechas persistentes "
+"por JDBC escrito a mano, asociadas a Hibernate por medio de un "
+"<literal>UserType</literal>. (Este consejo está pensado para aplicaciones "
+"\"suficientemente grandes\"; ¡no es apropiado para una aplicación con cinco "
+"tablas!)"
-#: index.docbook:203
+#. Tag: term
+#: best_practices.xml:203
+#, no-c-format
msgid "Don't use exotic association mappings."
-msgstr "No uses mapeos de asociación exóticos."
+msgstr "No uses mapeos de asociación exóticos."
-#: index.docbook:205
-msgid "Good usecases for a real many-to-many associations are rare. Most of the time you need additional information stored in the \"link table\". In this case, it is much better to use two one-to-many associations to an intermediate link class. In fact, we think that most associations are one-to-many and many-to-one, you should be careful when using any other association style and ask yourself if it is really neccessary."
-msgstr "Son raros los casos de uso de asociaciones reales muchos-a-muchos. La mayor parte del tiempo necesitas información adicional almacenada en una \"tabla de enlace\". En este caso, es mucho mejor usar dos asociaciones uno-a-muchos a una clase de enlace intermedia. De hecho, pensamos que la mayoría de asociaciones son uno-a-muchos y muchos-a-uno, debes ser cuidadoso al usr cualquier otro estilo de asociación y preguntarte si es realmente necesario."
+#. Tag: para
+#: best_practices.xml:205
+#, no-c-format
+msgid ""
+"Good usecases for a real many-to-many associations are rare. Most of the "
+"time you need additional information stored in the \"link table\". In this "
+"case, it is much better to use two one-to-many associations to an "
+"intermediate link class. In fact, we think that most associations are one-to-"
+"many and many-to-one, you should be careful when using any other association "
+"style and ask yourself if it is really neccessary."
+msgstr ""
+"Son raros los casos de uso de asociaciones reales muchos-a-muchos. La mayor "
+"parte del tiempo necesitas información adicional almacenada en una \"tabla "
+"de enlace\". En este caso, es mucho mejor usar dos asociaciones uno-a-muchos "
+"a una clase de enlace intermedia. De hecho, pensamos que la mayoría de "
+"asociaciones son uno-a-muchos y muchos-a-uno, debes ser cuidadoso al usr "
+"cualquier otro estilo de asociación y preguntarte si es realmente necesario."
-#: index.docbook:215
+#. Tag: term
+#: best_practices.xml:215
+#, no-c-format
msgid "Prefer bidirectional associations."
msgstr "Prefiere las asociaciones bidireccionales."
-#: index.docbook:217
-msgid "Unidirectional associations are more difficult to query. In a large application, almost all associations must be navigable in both directions in queries."
-msgstr "Las asociaciones unidireccionales son más difíciles de consultar. En una aplicación grande, casi todas las asociaciones deben ser navegables en ambas direcciones en consultas."
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: para
+#: best_practices.xml:217
+#, no-c-format
+msgid ""
+"Unidirectional associations are more difficult to query. In a large "
+"application, almost all associations must be navigable in both directions in "
+"queries."
+msgstr ""
+"Las asociaciones unidireccionales son más difíciles de consultar. En una "
+"aplicación grande, casi todas las asociaciones deben ser navegables en ambas "
+"direcciones en consultas."
Modified: core/trunk/documentation/manual/translations/es-ES/content/collection_mapping.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/collection_mapping.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/collection_mapping.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,1285 +1,1931 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: collection_mapping.xml:5
+#, no-c-format
msgid "Collection Mapping"
msgstr "Mapeo de Colecciones"
-#: index.docbook:8
+#. Tag: title
+#: collection_mapping.xml:8
+#, no-c-format
msgid "Persistent collections"
msgstr "Colecciones persistentes"
-#: index.docbook:10
-msgid "Hibernate requires that persistent collection-valued fields be declared as an interface type, for example:"
-msgstr "Hibernate requiere que los campos valuados en colección persistentes sean declarados como un tipo de interface, por ejemplo:"
+#. Tag: para
+#: collection_mapping.xml:10
+#, no-c-format
+msgid ""
+"Hibernate requires that persistent collection-valued fields be declared as "
+"an interface type, for example:"
+msgstr ""
+"Hibernate requiere que los campos valuados en colección persistentes sean "
+"declarados como un tipo de interface, por ejemplo:"
-#: index.docbook:15
+#. Tag: programlisting
+#: collection_mapping.xml:15
+#, no-c-format
msgid ""
- "<![CDATA[public class Product {\n"
- " private String serialNumber;\n"
- " private Set parts = new HashSet();\n"
- " \n"
- " public Set getParts() { return parts; }\n"
- " void setParts(Set parts) { this.parts = parts; }\n"
- " public String getSerialNumber() { return serialNumber; }\n"
- " void setSerialNumber(String sn) { serialNumber = sn; }\n"
- "}]]>"
+"<![CDATA[public class Product {\n"
+" private String serialNumber;\n"
+" private Set parts = new HashSet();\n"
+" \n"
+" public Set getParts() { return parts; }\n"
+" void setParts(Set parts) { this.parts = parts; }\n"
+" public String getSerialNumber() { return serialNumber; }\n"
+" void setSerialNumber(String sn) { serialNumber = sn; }\n"
+"}]]>"
msgstr ""
- "<![CDATA[public class Product {\n"
- " private String serialNumber;\n"
- " private Set parts = new HashSet();\n"
- " \n"
- " public Set getParts() { return parts; }\n"
- " void setParts(Set parts) { this.parts = parts; }\n"
- " public String getSerialNumber() { return serialNumber; }\n"
- " void setSerialNumber(String sn) { serialNumber = sn; }\n"
- "}]]>"
-#: index.docbook:17
-msgid "The actual interface might be <literal>java.util.Set</literal>, <literal>java.util.Collection</literal>, <literal>java.util.List</literal>, <literal>java.util.Map</literal>, <literal>java.util.SortedSet</literal>, <literal>java.util.SortedMap</literal> or ... anything you like! (Where \"anything you like\" means you will have to write an implementation of <literal>org.hibernate.usertype.UserCollectionType</literal>.)"
-msgstr "La interface real podría ser <literal>java.util.Set</literal>, <literal>java.util.Collection</literal>, <literal>java.util.List</literal>, <literal>java.util.Map</literal>, <literal>java.util.SortedSet</literal>, <literal>java.util.SortedMap</literal> o ... lo que te guste! (Donde \"lo que te guste\" significa que tendrás que escribir una implementación de <literal>org.hibernate.usertype.UserCollectionType</literal>.)"
+#. Tag: para
+#: collection_mapping.xml:17
+#, no-c-format
+msgid ""
+"The actual interface might be <literal>java.util.Set</literal>, "
+"<literal>java.util.Collection</literal>, <literal>java.util.List</literal>, "
+"<literal>java.util.Map</literal>, <literal>java.util.SortedSet</literal>, "
+"<literal>java.util.SortedMap</literal> or ... anything you like! (Where "
+"\"anything you like\" means you will have to write an implementation of "
+"<literal>org.hibernate.usertype.UserCollectionType</literal>.)"
+msgstr ""
+"La interface real podría ser <literal>java.util.Set</literal>, <literal>java."
+"util.Collection</literal>, <literal>java.util.List</literal>, <literal>java."
+"util.Map</literal>, <literal>java.util.SortedSet</literal>, <literal>java."
+"util.SortedMap</literal> o ... lo que te guste! (Donde \"lo que te guste\" "
+"significa que tendrás que escribir una implementación de <literal>org."
+"hibernate.usertype.UserCollectionType</literal>.)"
-#: index.docbook:26
-msgid "Notice how we initialized the instance variable with an instance of <literal>HashSet</literal>. This is the best way to initialize collection valued properties of newly instantiated (non-persistent) instances. When you make the instance persistent - by calling <literal>persist()</literal>, for example - Hibernate will actually replace the <literal>HashSet</literal> with an instance of Hibernate's own implementation of <literal>Set</literal>. Watch out for errors like this:"
-msgstr "Nota cómo hemos inicializado la variable de instancia de <literal>HashSet</literal>. Esta es la mejor forma de inicializar propiedades valuadas en colección de instancias recién instanciadas (no persistentes). Cuando haces persistente la instancia - llamando a <literal>persist()</literal>, por ejemplo - Hibernate realmente remplazará el <literal>HashSet</literal> con una instancia de una implementación de <literal>Set</literal> propia de Hibernate. Observa errores como este:"
+#. Tag: para
+#: collection_mapping.xml:26
+#, no-c-format
+msgid ""
+"Notice how we initialized the instance variable with an instance of "
+"<literal>HashSet</literal>. This is the best way to initialize collection "
+"valued properties of newly instantiated (non-persistent) instances. When you "
+"make the instance persistent - by calling <literal>persist()</literal>, for "
+"example - Hibernate will actually replace the <literal>HashSet</literal> "
+"with an instance of Hibernate's own implementation of <literal>Set</"
+"literal>. Watch out for errors like this:"
+msgstr ""
+"Nota cómo hemos inicializado la variable de instancia de <literal>HashSet</"
+"literal>. Esta es la mejor forma de inicializar propiedades valuadas en "
+"colección de instancias recién instanciadas (no persistentes). Cuando haces "
+"persistente la instancia - llamando a <literal>persist()</literal>, por "
+"ejemplo - Hibernate realmente remplazará el <literal>HashSet</literal> con "
+"una instancia de una implementación de <literal>Set</literal> propia de "
+"Hibernate. Observa errores como este:"
-#: index.docbook:36
+#. Tag: programlisting
+#: collection_mapping.xml:36
+#, no-c-format
msgid ""
- "<![CDATA[Cat cat = new DomesticCat();\n"
- "Cat kitten = new DomesticCat();\n"
- "....\n"
- "Set kittens = new HashSet();\n"
- "kittens.add(kitten);\n"
- "cat.setKittens(kittens);\n"
- "session.persist(cat);\n"
- "kittens = cat.getKittens(); // Okay, kittens collection is a Set\n"
- "(HashSet) cat.getKittens(); // Error!]]>"
+"<![CDATA[Cat cat = new DomesticCat();\n"
+"Cat kitten = new DomesticCat();\n"
+"....\n"
+"Set kittens = new HashSet();\n"
+"kittens.add(kitten);\n"
+"cat.setKittens(kittens);\n"
+"session.persist(cat);\n"
+"kittens = cat.getKittens(); // Okay, kittens collection is a Set\n"
+"(HashSet) cat.getKittens(); // Error!]]>"
msgstr ""
- "<![CDATA[Cat cat = new DomesticCat();\n"
- "Cat kitten = new DomesticCat();\n"
- "....\n"
- "Set kittens = new HashSet();\n"
- "kittens.add(kitten);\n"
- "cat.setKittens(kittens);\n"
- "session.persist(cat);\n"
- "kittens = cat.getKittens(); // Okay, kittens collection is a Set\n"
- "(HashSet) cat.getKittens(); // Error!]]>"
-#: index.docbook:38
-msgid "The persistent collections injected by Hibernate behave like <literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</literal>, <literal>TreeSet</literal> or <literal>ArrayList</literal>, depending upon the interface type."
-msgstr "Las colecciones persistentes inyectadas por Hibernate se comportan como <literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</literal>, <literal>TreeSet</literal> o <literal>ArrayList</literal>, dependiendo del tipo de interface."
+#. Tag: para
+#: collection_mapping.xml:38
+#, no-c-format
+msgid ""
+"The persistent collections injected by Hibernate behave like "
+"<literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</"
+"literal>, <literal>TreeSet</literal> or <literal>ArrayList</literal>, "
+"depending upon the interface type."
+msgstr ""
+"Las colecciones persistentes inyectadas por Hibernate se comportan como "
+"<literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</"
+"literal>, <literal>TreeSet</literal> o <literal>ArrayList</literal>, "
+"dependiendo del tipo de interface."
-#: index.docbook:45
-msgid "Collections instances have the usual behavior of value types. They are automatically persisted when referenced by a persistent object and automatically deleted when unreferenced. If a collection is passed from one persistent object to another, its elements might be moved from one table to another. Two entities may not share a reference to the same collection instance. Due to the underlying relational model, collection-valued properties do not support null value semantics; Hibernate does not distinguish between a null collection reference and an empty collection."
-msgstr "Las instancias de colecciones tienen el comportamiento usual de tipos de valor. Son automáticamente persistidas al ser referenciadas por un objeto persistente y automáticamente borradas al desreferenciarse. Si una colección es pasada de un objeto persistente a otro, sus elementos serían movidos de una tabla a otra. Dos entidades pueden no compartir una referencia a la misma instancia de colección. Debido al modelo relacional subyacente, las propiedades valuadas en colección no soportan la semántica de valor nulo. Hibernate no distingue entre una referencia de colección nula y una colección vacía."
+#. Tag: para
+#: collection_mapping.xml:45
+#, no-c-format
+msgid ""
+"Collections instances have the usual behavior of value types. They are "
+"automatically persisted when referenced by a persistent object and "
+"automatically deleted when unreferenced. If a collection is passed from one "
+"persistent object to another, its elements might be moved from one table to "
+"another. Two entities may not share a reference to the same collection "
+"instance. Due to the underlying relational model, collection-valued "
+"properties do not support null value semantics; Hibernate does not "
+"distinguish between a null collection reference and an empty collection."
+msgstr ""
+"Las instancias de colecciones tienen el comportamiento usual de tipos de "
+"valor. Son automáticamente persistidas al ser referenciadas por un objeto "
+"persistente y automáticamente borradas al desreferenciarse. Si una colección "
+"es pasada de un objeto persistente a otro, sus elementos serían movidos de "
+"una tabla a otra. Dos entidades pueden no compartir una referencia a la "
+"misma instancia de colección. Debido al modelo relacional subyacente, las "
+"propiedades valuadas en colección no soportan la semántica de valor nulo. "
+"Hibernate no distingue entre una referencia de colección nula y una "
+"colección vacía."
-#: index.docbook:56
-msgid "You shouldn't have to worry much about any of this. Use persistent collections the same way you use ordinary Java collections. Just make sure you understand the semantics of bidirectional associations (discussed later)."
-msgstr "No debes tener que preocuparte demasiado por esto. Usa las colecciones persistentes de la misma forma en que usas colecciones de Java ordinarias. Sólo asegúrate que entiendes la semántica de las asociaciones bidireccionales (discutida luego)."
+#. Tag: para
+#: collection_mapping.xml:56
+#, no-c-format
+msgid ""
+"You shouldn't have to worry much about any of this. Use persistent "
+"collections the same way you use ordinary Java collections. Just make sure "
+"you understand the semantics of bidirectional associations (discussed later)."
+msgstr ""
+"No debes tener que preocuparte demasiado por esto. Usa las colecciones "
+"persistentes de la misma forma en que usas colecciones de Java ordinarias. "
+"Sólo asegúrate que entiendes la semántica de las asociaciones "
+"bidireccionales (discutida luego)."
-#: index.docbook:65
+#. Tag: title
+#: collection_mapping.xml:65
+#, no-c-format
msgid "Collection mappings"
-msgstr "Mapeos de colección"
+msgstr "Mapeos de colección"
-#: index.docbook:67
-msgid "The Hibernate mapping element used for mapping a collection depends upon the type of the interface. For example, a <literal><set></literal> element is used for mapping properties of type <literal>Set</literal>."
-msgstr "El elemento de mapeo de Hibernate usado para mapear una colección depende del tipo de la interface. Por ejemplom un elemento <literal><set></literal> se usa para mapear propiedades de tipo <literal>Set</literal>."
+#. Tag: para
+#: collection_mapping.xml:67
+#, no-c-format
+msgid ""
+"The Hibernate mapping element used for mapping a collection depends upon the "
+"type of the interface. For example, a <literal><set></literal> element "
+"is used for mapping properties of type <literal>Set</literal>."
+msgstr ""
+"El elemento de mapeo de Hibernate usado para mapear una colección depende "
+"del tipo de la interface. Por ejemplom un elemento <literal><set></"
+"literal> se usa para mapear propiedades de tipo <literal>Set</literal>."
-#: index.docbook:73
+#. Tag: programlisting
+#: collection_mapping.xml:73
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Product\">\n"
- " <id name=\"serialNumber\" column=\"productSerialNumber\"/>\n"
- " <set name=\"parts\">\n"
- " <key column=\"productSerialNumber\" not-null=\"true\"/>\n"
- " <one-to-many class=\"Part\"/>\n"
- " </set>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Product\">\n"
+" <id name=\"serialNumber\" column=\"productSerialNumber\"/>\n"
+" <set name=\"parts\">\n"
+" <key column=\"productSerialNumber\" not-null=\"true\"/>\n"
+" <one-to-many class=\"Part\"/>\n"
+" </set>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Product\">\n"
- " <id name=\"serialNumber\" column=\"productSerialNumber\"/>\n"
- " <set name=\"parts\">\n"
- " <key column=\"productSerialNumber\" not-null=\"true\"/>\n"
- " <one-to-many class=\"Part\"/>\n"
- " </set>\n"
- "</class>]]>"
-#: index.docbook:75
-msgid "Apart from <literal><set></literal>, there is also <literal><list></literal>, <literal><map></literal>, <literal><bag></literal>, <literal><array></literal> and <literal><primitive-array></literal> mapping elements. The <literal><map></literal> element is representative:"
-msgstr "Aparte de <literal><set></literal>, existen además los elementos de mapeo <literal><list></literal>, <literal><map></literal>, <literal><bag></literal>, <literal><array></literal> y <literal><primitive-array></literal>. El elemento <literal><map></literal> es representativo:"
+#. Tag: para
+#: collection_mapping.xml:75
+#, no-c-format
+msgid ""
+"Apart from <literal><set></literal>, there is also <literal><"
+"list></literal>, <literal><map></literal>, <literal><bag></"
+"literal>, <literal><array></literal> and <literal><primitive-"
+"array></literal> mapping elements. The <literal><map></literal> "
+"element is representative:"
+msgstr ""
+"Aparte de <literal><set></literal>, existen además los elementos de "
+"mapeo <literal><list></literal>, <literal><map></literal>, "
+"<literal><bag></literal>, <literal><array></literal> y "
+"<literal><primitive-array></literal>. El elemento <literal><map>"
+"</literal> es representativo:"
-#: index.docbook:100
+#. Tag: programlisting
+#: collection_mapping.xml:100
+#, no-c-format
msgid ""
- "<![CDATA[<map\n"
- " name=\"propertyName\"\n"
- " table=\"table_name\"\n"
- " schema=\"schema_name\"\n"
- " lazy=\"true|extra|false\"\n"
- " inverse=\"true|false\"\n"
- " cascade=\"all|none|save-update|delete|all-delete-orphan|delete-orphan\"\n"
- " sort=\"unsorted|natural|comparatorClass\"\n"
- " order-by=\"column_name asc|desc\"\n"
- " where=\"arbitrary sql where condition\"\n"
- " fetch=\"join|select|subselect\"\n"
- " batch-size=\"N\"\n"
- " access=\"field|property|ClassName\"\n"
- " optimistic-lock=\"true|false\"\n"
- " mutable=\"true|false\"\n"
- " node=\"element-name|.\"\n"
- " embed-xml=\"true|false\"\n"
- ">\n"
- "\n"
- " <key .... />\n"
- " <map-key .... />\n"
- " <element .... />\n"
- "</map>]]>"
+"<![CDATA[<map\n"
+" name=\"propertyName\"\n"
+" table=\"table_name\"\n"
+" schema=\"schema_name\"\n"
+" lazy=\"true|extra|false\"\n"
+" inverse=\"true|false\"\n"
+" cascade=\"all|none|save-update|delete|all-delete-orphan|delete-orphan\"\n"
+" sort=\"unsorted|natural|comparatorClass\"\n"
+" order-by=\"column_name asc|desc\"\n"
+" where=\"arbitrary sql where condition\"\n"
+" fetch=\"join|select|subselect\"\n"
+" batch-size=\"N\"\n"
+" access=\"field|property|ClassName\"\n"
+" optimistic-lock=\"true|false\"\n"
+" mutable=\"true|false\"\n"
+" node=\"element-name|.\"\n"
+" embed-xml=\"true|false\"\n"
+">\n"
+"\n"
+" <key .... />\n"
+" <map-key .... />\n"
+" <element .... />\n"
+"</map>]]>"
msgstr ""
- "<![CDATA[<map\n"
- " name=\"propertyName\"\n"
- " table=\"table_name\"\n"
- " schema=\"schema_name\"\n"
- " lazy=\"true|false\"\n"
- " inverse=\"true|false\"\n"
- " cascade=\"all|none|save-update|delete|all-delete-orphan\"\n"
- " sort=\"unsorted|natural|comparatorClass\"\n"
- " order-by=\"column_name asc|desc\"\n"
- " where=\"arbitrary sql where condition\"\n"
- " fetch=\"join|select|subselect\"\n"
- " batch-size=\"N\"\n"
- " access=\"field|property|ClassName\"\n"
- " optimistic-lock=\"true|false\"\n"
- " node=\"element-name|.\"\n"
- " embed-xml=\"true|false\"\n"
- ">\n"
- "\n"
- " <key .... />\n"
- " <map-key .... />\n"
- " <element .... />\n"
- "</map>]]>"
-#: index.docbook:103
+#. Tag: para
+#: collection_mapping.xml:103
+#, no-c-format
msgid "<literal>name</literal> the collection property name"
-msgstr "<literal>name</literal> el nombre de la propiedad de colección"
+msgstr "<literal>name</literal> el nombre de la propiedad de colección"
-#: index.docbook:108
-msgid "<literal>table</literal> (optional - defaults to property name) the name of the collection table (not used for one-to-many associations)"
-msgstr "<literal>table</literal> (opcional - por defecto al nombre de la propiedad) el nombre de la tabla de coleciión (no usado para asociaciones uno-a-muchos)"
+#. Tag: para
+#: collection_mapping.xml:108
+#, no-c-format
+msgid ""
+"<literal>table</literal> (optional - defaults to property name) the name of "
+"the collection table (not used for one-to-many associations)"
+msgstr ""
+"<literal>table</literal> (opcional - por defecto al nombre de la propiedad) "
+"el nombre de la tabla de coleciión (no usado para asociaciones uno-a-muchos)"
-#: index.docbook:114
-msgid "<literal>schema</literal> (optional) the name of a table schema to override the schema declared on the root element"
-msgstr "<literal>schema</literal> (opcional) el nombre de un esquema de tablas para sobrescribir el esquema declarado en el elemento raíz"
+#. Tag: para
+#: collection_mapping.xml:114
+#, no-c-format
+msgid ""
+"<literal>schema</literal> (optional) the name of a table schema to override "
+"the schema declared on the root element"
+msgstr ""
+"<literal>schema</literal> (opcional) el nombre de un esquema de tablas para "
+"sobrescribir el esquema declarado en el elemento raíz"
-#: index.docbook:120
-msgid "<literal>lazy</literal> (optional - defaults to <literal>true</literal>) may be used to disable lazy fetching and specify that the association is always eagerly fetched, or to enable \"extra-lazy\" fetching where most operations do not initialize the collection (suitable for very large collections)"
-msgstr "<literal>lazy</literal> (opcional - por defecto a <literal>true</literal>) puede ser usado para deshabilitar la recuperación perezosa y especificar que la asociación es siempre recuperada tempranamente (no disponible para arrays)"
+#. Tag: para
+#: collection_mapping.xml:120
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>true</literal>) may "
+"be used to disable lazy fetching and specify that the association is always "
+"eagerly fetched, or to enable \"extra-lazy\" fetching where most operations "
+"do not initialize the collection (suitable for very large collections)"
+msgstr ""
+"<literal>lazy</literal> (opcional - por defecto a <literal>true</literal>) "
+"puede ser usado para deshabilitar la recuperación perezosa y especificar que "
+"la asociación es siempre recuperada tempranamente (no disponible para arrays)"
-#: index.docbook:129
-msgid "<literal>inverse</literal> (optional - defaults to <literal>false</literal>) mark this collection as the \"inverse\" end of a bidirectional association"
-msgstr "<literal>inverse</literal> (opcional - por defecto a <literal>false</literal>) marca esta colección como el extremo \"inverso\" de una asociación bidireccional."
+#. Tag: para
+#: collection_mapping.xml:129
+#, no-c-format
+msgid ""
+"<literal>inverse</literal> (optional - defaults to <literal>false</literal>) "
+"mark this collection as the \"inverse\" end of a bidirectional association"
+msgstr ""
+"<literal>inverse</literal> (opcional - por defecto a <literal>false</"
+"literal>) marca esta colección como el extremo \"inverso\" de una asociación "
+"bidireccional."
-#: index.docbook:135
-msgid "<literal>cascade</literal> (optional - defaults to <literal>none</literal>) enable operations to cascade to child entities"
-msgstr "<literal>cascade</literal> (opcional - por defecto a <literal>none</literal>) habilita operaciones en cascada a entidades hijas"
+#. Tag: para
+#: collection_mapping.xml:135
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional - defaults to <literal>none</literal>) "
+"enable operations to cascade to child entities"
+msgstr ""
+"<literal>cascade</literal> (opcional - por defecto a <literal>none</"
+"literal>) habilita operaciones en cascada a entidades hijas"
-#: index.docbook:141
-msgid "<literal>sort</literal> (optional) specify a sorted collection with <literal>natural</literal> sort order, or a given comparator class"
-msgstr "<literal>sort</literal> (opcional) especifica una colección con ordenamiento <literal>natural</literal>, o una clase comparadora dada"
+#. Tag: para
+#: collection_mapping.xml:141
+#, no-c-format
+msgid ""
+"<literal>sort</literal> (optional) specify a sorted collection with "
+"<literal>natural</literal> sort order, or a given comparator class"
+msgstr ""
+"<literal>sort</literal> (opcional) especifica una colección con ordenamiento "
+"<literal>natural</literal>, o una clase comparadora dada"
-#: index.docbook:147
-msgid "<literal>order-by</literal> (optional, JDK1.4 only) specify a table column (or columns) that define the iteration order of the <literal>Map</literal>, <literal>Set</literal> or bag, together with an optional <literal>asc</literal> or <literal>desc</literal>"
-msgstr "<literal>order-by</literal> (opcional, sólo JDK1.4) especifica una columna de tabla (o columnas) que definen el orden de iteración del <literal>Map</literal>, <literal>Set</literal> o bag, junto a un <literal>asc</literal> o <literal>desc</literal> opcional."
+#. Tag: para
+#: collection_mapping.xml:147
+#, no-c-format
+msgid ""
+"<literal>order-by</literal> (optional, JDK1.4 only) specify a table column "
+"(or columns) that define the iteration order of the <literal>Map</literal>, "
+"<literal>Set</literal> or bag, together with an optional <literal>asc</"
+"literal> or <literal>desc</literal>"
+msgstr ""
+"<literal>order-by</literal> (opcional, sólo JDK1.4) especifica una columna "
+"de tabla (o columnas) que definen el orden de iteración del <literal>Map</"
+"literal>, <literal>Set</literal> o bag, junto a un <literal>asc</literal> o "
+"<literal>desc</literal> opcional."
-#: index.docbook:154
-msgid "<literal>where</literal> (optional) specify an arbitrary SQL <literal>WHERE</literal> condition to be used when retrieving or removing the collection (useful if the collection should contain only a subset of the available data)"
-msgstr "<literal>where</literal> (opcional) especifica una condición <literal>WHERE</literal> de SQL arbitrario para ser usada al recuperar o quitar la colección (útil si la colección debe contener sólo un subconjunto de los datos disponibles)"
+#. Tag: para
+#: collection_mapping.xml:154
+#, no-c-format
+msgid ""
+"<literal>where</literal> (optional) specify an arbitrary SQL <literal>WHERE</"
+"literal> condition to be used when retrieving or removing the collection "
+"(useful if the collection should contain only a subset of the available data)"
+msgstr ""
+"<literal>where</literal> (opcional) especifica una condición <literal>WHERE</"
+"literal> de SQL arbitrario para ser usada al recuperar o quitar la colección "
+"(útil si la colección debe contener sólo un subconjunto de los datos "
+"disponibles)"
-#: index.docbook:161
-msgid "<literal>fetch</literal> (optional, defaults to <literal>select</literal>) Choose between outer-join fetching, fetching by sequential select, and fetching by sequential subselect."
-msgstr "<literal>fetch</literal> (opcional, por defecto a <literal>select</literal>) Elige entre recuperación por unión externa (outer-join), recuperar por selección secuencial, y recuperación por subselección secuencial."
+#. Tag: para
+#: collection_mapping.xml:161
+#, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional, defaults to <literal>select</literal>) "
+"Choose between outer-join fetching, fetching by sequential select, and "
+"fetching by sequential subselect."
+msgstr ""
+"<literal>fetch</literal> (opcional, por defecto a <literal>select</literal>) "
+"Elige entre recuperación por unión externa (outer-join), recuperar por "
+"selección secuencial, y recuperación por subselección secuencial."
-#: index.docbook:168
-msgid "<literal>batch-size</literal> (optional, defaults to <literal>1</literal>) specify a \"batch size\" for lazily fetching instances of this collection."
-msgstr "<literal>batch-size</literal> (opcional, por defecto a <literal>1</literal>) especifica un \"tamaño de lote\" para la recuperar perezosamente instancias de esta colección."
+#. Tag: para
+#: collection_mapping.xml:168
+#, no-c-format
+msgid ""
+"<literal>batch-size</literal> (optional, defaults to <literal>1</literal>) "
+"specify a \"batch size\" for lazily fetching instances of this collection."
+msgstr ""
+"<literal>batch-size</literal> (opcional, por defecto a <literal>1</literal>) "
+"especifica un \"tamaño de lote\" para la recuperar perezosamente instancias "
+"de esta colección."
-#: index.docbook:174
-msgid "<literal>access</literal> (optional - defaults to <literal>property</literal>): The strategy Hibernate should use for accessing the collection property value."
-msgstr "<literal>access</literal> (opcional - por defecto a <literal>property</literal>): La estrategia que debe usar Hibernate para acceder al valor de la propiedad."
+#. Tag: para
+#: collection_mapping.xml:174
+#, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): The strategy Hibernate should use for accessing the collection "
+"property value."
+msgstr ""
+"<literal>access</literal> (opcional - por defecto a <literal>property</"
+"literal>): La estrategia que debe usar Hibernate para acceder al valor de la "
+"propiedad."
-#: index.docbook:180
-msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): Species that changes to the state of the collection results in increment of the owning entity's version. (For one to many associations, it is often reasonable to disable this setting.)"
-msgstr "<literal>optimistic-lock</literal> (opcional - por defecto a <literal>true</literal>): Especifica que los cambios de estado de la colección resultan en incrementos de versión de la entidad dueña. (Para asociaciones uno a muchos, frecuentemente es razonable deshabilitar esta opción.)"
+#. Tag: para
+#: collection_mapping.xml:180
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): Species that changes to the state of the collection results in "
+"increment of the owning entity's version. (For one to many associations, it "
+"is often reasonable to disable this setting.)"
+msgstr ""
+"<literal>optimistic-lock</literal> (opcional - por defecto a <literal>true</"
+"literal>): Especifica que los cambios de estado de la colección resultan en "
+"incrementos de versión de la entidad dueña. (Para asociaciones uno a muchos, "
+"frecuentemente es razonable deshabilitar esta opción.)"
-#: index.docbook:188
-msgid "<literal>mutable</literal> (optional - defaults to <literal>true</literal>): A value of <literal>false</literal> specifies that the elements of the collection never change (a minor performance optimization in some cases)."
-msgstr "Claves foráneas de collección"
+#. Tag: para
+#: collection_mapping.xml:188
+#, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional - defaults to <literal>true</literal>): "
+"A value of <literal>false</literal> specifies that the elements of the "
+"collection never change (a minor performance optimization in some cases)."
+msgstr ""
+"<literal>mutable</literal> (optional - defaults to <literal>true</literal>): "
+"A value of <literal>false</literal> specifies that the elements of the "
+"collection never change (a minor performance optimization in some cases)."
-#: index.docbook:198
+#. Tag: title
+#: collection_mapping.xml:198
+#, no-c-format
msgid "Collection foreign keys"
-msgstr "Las instancias de colección se distinguen en la base de datos por la clave foránea de la entidad que posee la colección. Se hace referencia a esta clave foránea como la <emphasis>columna clave de colección</emphasis> (o columnas) de la tabla de colección. La columna clave de la colección es mapeada por el elemento <literal><key></literal>."
+msgstr "Claves foráneas de collección"
-#: index.docbook:200
-msgid "Collection instances are distinguished in the database by the foreign key of the entity that owns the collection. This foreign key is referred to as the <emphasis>collection key column</emphasis> (or columns) of the collection table. The collection key column is mapped by the <literal><key></literal> element."
-msgstr "Puede haber una restricción de nulabilidad sobre la columna de clave foránea. Para la mayoría de colecciones, esto está implicado. Para asociaciones unidireccionales uno a muchos, la columna de clave foránea es nulable por defecto, de modo que podrías necesitar especificar <literal>not-null=\"true\"</literal>."
+#. Tag: para
+#: collection_mapping.xml:200
+#, no-c-format
+msgid ""
+"Collection instances are distinguished in the database by the foreign key of "
+"the entity that owns the collection. This foreign key is referred to as the "
+"<emphasis>collection key column</emphasis> (or columns) of the collection "
+"table. The collection key column is mapped by the <literal><key></"
+"literal> element."
+msgstr ""
+"Las instancias de colección se distinguen en la base de datos por la clave "
+"foránea de la entidad que posee la colección. Se hace referencia a esta "
+"clave foránea como la <emphasis>columna clave de colección</emphasis> (o "
+"columnas) de la tabla de colección. La columna clave de la colección es "
+"mapeada por el elemento <literal><key></literal>."
-#: index.docbook:208
-msgid "There may be a nullability constraint on the foreign key column. For most collections, this is implied. For unidirectional one to many associations, the foreign key column is nullable by default, so you might need to specify <literal>not-null=\"true\"</literal>."
-msgstr "<![CDATA[<key column=\"productSerialNumber\" not-null=\"true\"/>]]>"
+#. Tag: para
+#: collection_mapping.xml:208
+#, no-c-format
+msgid ""
+"There may be a nullability constraint on the foreign key column. For most "
+"collections, this is implied. For unidirectional one to many associations, "
+"the foreign key column is nullable by default, so you might need to specify "
+"<literal>not-null=\"true\"</literal>."
+msgstr ""
+"Puede haber una restricción de nulabilidad sobre la columna de clave "
+"foránea. Para la mayoría de colecciones, esto está implicado. Para "
+"asociaciones unidireccionales uno a muchos, la columna de clave foránea es "
+"nulable por defecto, de modo que podrías necesitar especificar <literal>not-"
+"null=\"true\"</literal>."
-#: index.docbook:215
+#. Tag: programlisting
+#: collection_mapping.xml:215
+#, no-c-format
msgid "<![CDATA[<key column=\"productSerialNumber\" not-null=\"true\"/>]]>"
-msgstr "La restricción de clave foránea puede usar <literal>ON DELETE CASCADE</literal>."
+msgstr ""
-#: index.docbook:217
-msgid "The foreign key constraint may use <literal>ON DELETE CASCADE</literal>."
-msgstr "<![CDATA[<key column=\"productSerialNumber\" on-delete=\"cascade\"/>]]>"
+#. Tag: para
+#: collection_mapping.xml:217
+#, no-c-format
+msgid ""
+"The foreign key constraint may use <literal>ON DELETE CASCADE</literal>."
+msgstr ""
+"La restricción de clave foránea puede usar <literal>ON DELETE CASCADE</"
+"literal>."
-#: index.docbook:221
+#. Tag: programlisting
+#: collection_mapping.xml:221
+#, no-c-format
msgid "<![CDATA[<key column=\"productSerialNumber\" on-delete=\"cascade\"/>]]>"
-msgstr "Mira el capítulo anterior por una definición completa del elemento <literal><key></literal>."
+msgstr ""
-#: index.docbook:223
-msgid "See the previous chapter for a full definition of the <literal><key></literal> element."
-msgstr "Elementos de collección"
+#. Tag: para
+#: collection_mapping.xml:223
+#, no-c-format
+msgid ""
+"See the previous chapter for a full definition of the <literal><key></"
+"literal> element."
+msgstr ""
+"Mira el capítulo anterior por una definición completa del elemento "
+"<literal><key></literal>."
-#: index.docbook:231
+#. Tag: title
+#: collection_mapping.xml:231
+#, no-c-format
msgid "Collection elements"
-msgstr "Las colecciones pueden contener casi cualquier tipo de Hibernate, incluyendo todos los tipos básicos, componentes, y por supuesto, referencias a otras entidades. Esta es una distinción importante: un objeto en una colección puede ser manejado con una semántica de \"valor\" (su ciclo de vida depende completamente del propietario de la colección) o podría ser una referencia a otra entidad, con su propio ciclo de vida. En el último caso, sólo el estado del \"enlace\" entre los dos objetos se considera mantenido por la colección."
+msgstr "Elementos de collección"
-#: index.docbook:233
-msgid "Collections may contain almost any other Hibernate type, including all basic types, custom types, components, and of course, references to other entities. This is an important distinction: an object in a collection might be handled with \"value\" semantics (its life cycle fully depends on the collection owner) or it might be a reference to another entity, with its own life cycle. In the latter case, only the \"link\" between the two objects is considered to be state held by the collection."
-msgstr "Se hace referencia al tipo contenido como el <emphasis>tipo de elemento de la colección</emphasis>. Los elementos de colección son mapeados por <literal><element></literal> o <literal><composite-element></literal>, o en el caso de referencias de entidades, con <literal><one-to-many></literal> o <literal><many-to-many></literal>. Las dos primeras mapean elementos con semántica de valor, los dos siguientes son usados para mapear asociaciones de entidades."
+#. Tag: para
+#: collection_mapping.xml:233
+#, no-c-format
+msgid ""
+"Collections may contain almost any other Hibernate type, including all basic "
+"types, custom types, components, and of course, references to other "
+"entities. This is an important distinction: an object in a collection might "
+"be handled with \"value\" semantics (its life cycle fully depends on the "
+"collection owner) or it might be a reference to another entity, with its own "
+"life cycle. In the latter case, only the \"link\" between the two objects is "
+"considered to be state held by the collection."
+msgstr ""
+"Las colecciones pueden contener casi cualquier tipo de Hibernate, incluyendo "
+"todos los tipos básicos, componentes, y por supuesto, referencias a otras "
+"entidades. Esta es una distinción importante: un objeto en una colección "
+"puede ser manejado con una semántica de \"valor\" (su ciclo de vida depende "
+"completamente del propietario de la colección) o podría ser una referencia a "
+"otra entidad, con su propio ciclo de vida. En el último caso, sólo el estado "
+"del \"enlace\" entre los dos objetos se considera mantenido por la colección."
-#: index.docbook:242
-msgid "The contained type is referred to as the <emphasis>collection element type</emphasis>. Collection elements are mapped by <literal><element></literal> or <literal><composite-element></literal>, or in the case of entity references, with <literal><one-to-many></literal> or <literal><many-to-many></literal>. The first two map elements with value semantics, the next two are used to map entity associations."
-msgstr "Colecciones indexadas"
+#. Tag: para
+#: collection_mapping.xml:242
+#, no-c-format
+msgid ""
+"The contained type is referred to as the <emphasis>collection element type</"
+"emphasis>. Collection elements are mapped by <literal><element></"
+"literal> or <literal><composite-element></literal>, or in the case of "
+"entity references, with <literal><one-to-many></literal> or "
+"<literal><many-to-many></literal>. The first two map elements with "
+"value semantics, the next two are used to map entity associations."
+msgstr ""
+"Se hace referencia al tipo contenido como el <emphasis>tipo de elemento de "
+"la colección</emphasis>. Los elementos de colección son mapeados por "
+"<literal><element></literal> o <literal><composite-element></"
+"literal>, o en el caso de referencias de entidades, con <literal><one-to-"
+"many></literal> o <literal><many-to-many></literal>. Las dos "
+"primeras mapean elementos con semántica de valor, los dos siguientes son "
+"usados para mapear asociaciones de entidades."
-#: index.docbook:254
+#. Tag: title
+#: collection_mapping.xml:254
+#, no-c-format
msgid "Indexed collections"
-msgstr "Todos los mapeos de colección, excepto aquellos con semántica de set o bag, necesitan una <emphasis>columna índice</emphasis> en la tabla de colección, una columna que mapea a un índice de array, o índice de <literal>List</literal>, o clave de <literal>Map</literal>. El índice de un <literal>Map</literal> puede ser de cualquier tipo básico, mapeado con <literal><map-key></literal>, o puede ser una referencia de entidad, mapeada con <literal><map-key-many-to-many></literal>, o puede ser un tipo compuesto, mapeado con <literal><composite-map-key></literal>. El índice de un array o lista es siempre de tipo <literal>integer</literal> y se mapea usando el elemento <literal><list-index></literal>. La columna mapeada contiene enteros secuenciales (numerados desde cero, por defecto)."
+msgstr "Colecciones indexadas"
-#: index.docbook:256
-msgid "All collection mappings, except those with set and bag semantics, need an <emphasis>index column</emphasis> in the collection table - a column that maps to an array index, or <literal>List</literal> index, or <literal>Map</literal> key. The index of a <literal>Map</literal> may be of any basic type, mapped with <literal><map-key></literal>, it may be an entity reference mapped with <literal><map-key-many-to-many></literal>, or it may be a composite type, mapped with <literal><composite-map-key></literal>. The index of an array or list is always of type <literal>integer</literal> and is mapped using the <literal><list-index></literal> element. The mapped column contains sequential integers (numbered from zero, by default)."
+#. Tag: para
+#: collection_mapping.xml:256
+#, no-c-format
+msgid ""
+"All collection mappings, except those with set and bag semantics, need an "
+"<emphasis>index column</emphasis> in the collection table - a column that "
+"maps to an array index, or <literal>List</literal> index, or <literal>Map</"
+"literal> key. The index of a <literal>Map</literal> may be of any basic "
+"type, mapped with <literal><map-key></literal>, it may be an entity "
+"reference mapped with <literal><map-key-many-to-many></literal>, or it "
+"may be a composite type, mapped with <literal><composite-map-key></"
+"literal>. The index of an array or list is always of type <literal>integer</"
+"literal> and is mapped using the <literal><list-index></literal> "
+"element. The mapped column contains sequential integers (numbered from zero, "
+"by default)."
msgstr ""
- "<programlistingco> <areaspec> <area id=\"index1\" coords=\"2 45\"/> <area id=\"index2\" coords=\"3 45\"/> </areaspec> <programlisting><![CDATA[<list-index \n"
- " column=\"column_name\"\n"
- " base=\"0|1|...\"/>]]></programlisting> <calloutlist> <callout arearefs=\"index1\"> <para> <literal>column_name</literal> (requerido): El nombre de la columna que tiene los valores índice de la colección. </para> </callout> <callout arearefs=\"index1\"> <para> <literal>base</literal> (opcional, por defecto a <literal>0</literal>): El valor de la columna índice que corresponde al primer elemento de la lista o array. </para> </callout> </calloutlist> </programlistingco> <programlistingco> <areaspec> <area id=\"mapkey1\" coords=\"2 45\"/> <area id=\"mapkey2\" coords=\"3 45\"/> <area id=\"mapkey3\" coords=\"4 45\"/> </areaspec> <programlisting><![CDATA[<map-key \n"
- " column=\"column_name\"\n"
- " formula=\"any SQL expression\"\n"
- " type=\"type_name\"\n"
- " node=\"@attribute-name\"\n"
- " length=\"N\"/>]]></programlisting> <calloutlist> <callout arearefs=\"mapkey1\"> <para> <literal>column</literal> (opcional): El nombre de la columna que tiene los valores índice de la colección. </para> </callout> <callout arearefs=\"mapkey2\"> <para> <literal>formula</literal> (opcional): Una fórmula SQL usada para evaluar la clave del mapa. </para> </callout> <callout arearefs=\"mapkey3\"> <para> <literal>type</literal> (requerido): el tipo de las claves del mapa. </para> </callout> </calloutlist> </programlistingco> <programlistingco> <areaspec> <area id=\"indexmanytomany1\" coords=\"2 45\"/> <area id=\"indexmanytomany2\" coords=\"3 45\"/> <area id=\"indexmanytomany3\" coords=\"3 45\"/> </areaspec> <programlisting><![CDATA[<map-key-many-to-many\n"
- " column=\"column_name\"\n"
- " formula=\"any SQL expression\"\n"
- " class=\"ClassName\"\n"
- "/>]]></programlisting> <calloutlist> <callout arearefs=\"indexmanytomany1\"> <para> <literal>column</literal> (opcional): El nombre de la columna clave foránea para los valores índice de la colección. </para> </callout> <callout arearefs=\"indexmanytomany2\"> <para> <literal>formula</literal> (opcional): Una fórmula SQL usada para evaluar la clave foránea de la clave del mapa. </para> </callout> <callout arearefs=\"indexmanytomany3\"> <para> <literal>class</literal> (requerido): La clase de entidad usada como clave del mapa. </para> </callout> </calloutlist> </programlistingco>"
+"Todos los mapeos de colección, excepto aquellos con semántica de set o bag, "
+"necesitan una <emphasis>columna índice</emphasis> en la tabla de colección, "
+"una columna que mapea a un índice de array, o índice de <literal>List</"
+"literal>, o clave de <literal>Map</literal>. El índice de un <literal>Map</"
+"literal> puede ser de cualquier tipo básico, mapeado con <literal><map-"
+"key></literal>, o puede ser una referencia de entidad, mapeada con "
+"<literal><map-key-many-to-many></literal>, o puede ser un tipo "
+"compuesto, mapeado con <literal><composite-map-key></literal>. El "
+"índice de un array o lista es siempre de tipo <literal>integer</literal> y "
+"se mapea usando el elemento <literal><list-index></literal>. La "
+"columna mapeada contiene enteros secuenciales (numerados desde cero, por "
+"defecto)."
-#: index.docbook:267
+#. Tag: sect2
+#: collection_mapping.xml:267
+#, no-c-format
msgid ""
- "<programlistingco> <areaspec> <area id=\"index1\" coords=\"2 45\"/> <area id=\"index2\" coords=\"3 45\"/> </areaspec> <programlisting><![CDATA[<list-index \n"
- " column=\"column_name\"\n"
- " base=\"0|1|...\"/>]]></programlisting> <calloutlist> <callout arearefs=\"index1\"> <para> <literal>column_name</literal> (required): The name of the column holding the collection index values. </para> </callout> <callout arearefs=\"index1\"> <para> <literal>base</literal> (optional, defaults to <literal>0</literal>): The value of the index column that corresponds to the first element of the list or array. </para> </callout> </calloutlist> </programlistingco> <programlistingco> <areaspec> <area id=\"mapkey1\" coords=\"2 45\"/> <area id=\"mapkey2\" coords=\"3 45\"/> <area id=\"mapkey3\" coords=\"4 45\"/> </areaspec> <programlisting><![CDATA[<map-key \n"
- " column=\"column_name\"\n"
- " formula=\"any SQL expression\"\n"
- " type=\"type_name\"\n"
- " node=\"@attribute-name\"\n"
- " length=\"N\"/>]]></programlisting> <calloutlist> <callout arearefs=\"mapkey1\"> <para> <literal>column</literal> (optional): The name of the column holding the collection index values. </para> </callout> <callout arearefs=\"mapkey2\"> <para> <literal>formula</literal> (optional): A SQL formula used to evaluate the key of the map. </para> </callout> <callout arearefs=\"mapkey3\"> <para> <literal>type</literal> (reguired): The type of the map keys. </para> </callout> </calloutlist> </programlistingco> <programlistingco> <areaspec> <area id=\"indexmanytomany1\" coords=\"2 45\"/> <area id=\"indexmanytomany2\" coords=\"3 45\"/> <area id=\"indexmanytomany3\" coords=\"3 45\"/> </areaspec> <programlisting><![CDATA[<map-key-many-to-many\n"
- " column=\"column_name\"\n"
- " formula=\"any SQL expression\"\n"
- " class=\"ClassName\"\n"
- "/>]]></programlisting> <calloutlist> <callout arearefs=\"indexmanytomany1\"> <para> <literal>column</literal> (optional): The name of the foreign key column for the collection index values. </para> </callout> <callout arearefs=\"indexmanytomany2\"> <para> <literal>formula</literal> (optional): A SQL formula used to evaluate the foreign key of the map key. </para> </callout> <callout arearefs=\"indexmanytomany3\"> <para> <literal>class</literal> (required): The entity class used as the map key. </para> </callout> </calloutlist> </programlistingco>"
-msgstr "Si tu tabla no tiene una columna índice, y deseas aún usar <literal>List</literal> como tipo de propiedad, debes mapear la propiedad como un <emphasis><bag></emphasis> de Hibernate. Un bag (bolsa) no retiene su orden al ser recuperado de la base de datos, pero puede ser ordenado o clasificado opcionalmente."
+"<programlistingco> <areaspec> <area id=\"index1\" coords=\"2 45\"/> <area id="
+"\"index2\" coords=\"3 45\"/> </areaspec> <programlisting><![CDATA[<list-"
+"index \n"
+" column=\"column_name\"\n"
+" base=\"0|1|...\"/>]]></programlisting> <calloutlist> <callout "
+"arearefs=\"index1\"> <para> <literal>column_name</literal> (required): The "
+"name of the column holding the collection index values. </para> </callout> "
+"<callout arearefs=\"index1\"> <para> <literal>base</literal> (optional, "
+"defaults to <literal>0</literal>): The value of the index column that "
+"corresponds to the first element of the list or array. </para> </callout> </"
+"calloutlist> </programlistingco> <programlistingco> <areaspec> <area id="
+"\"mapkey1\" coords=\"2 45\"/> <area id=\"mapkey2\" coords=\"3 45\"/> <area "
+"id=\"mapkey3\" coords=\"4 45\"/> </areaspec> <programlisting><![CDATA[<map-"
+"key \n"
+" column=\"column_name\"\n"
+" formula=\"any SQL expression\"\n"
+" type=\"type_name\"\n"
+" node=\"@attribute-name\"\n"
+" length=\"N\"/>]]></programlisting> <calloutlist> <callout arearefs="
+"\"mapkey1\"> <para> <literal>column</literal> (optional): The name of the "
+"column holding the collection index values. </para> </callout> <callout "
+"arearefs=\"mapkey2\"> <para> <literal>formula</literal> (optional): A SQL "
+"formula used to evaluate the key of the map. </para> </callout> <callout "
+"arearefs=\"mapkey3\"> <para> <literal>type</literal> (reguired): The type of "
+"the map keys. </para> </callout> </calloutlist> </programlistingco> "
+"<programlistingco> <areaspec> <area id=\"indexmanytomany1\" coords=\"2 45\"/"
+"> <area id=\"indexmanytomany2\" coords=\"3 45\"/> <area id=\"indexmanytomany3"
+"\" coords=\"3 45\"/> </areaspec> <programlisting><![CDATA[<map-key-many-to-"
+"many\n"
+" column=\"column_name\"\n"
+" formula=\"any SQL expression\"\n"
+" class=\"ClassName\"\n"
+"/>]]></programlisting> <calloutlist> <callout arearefs=\"indexmanytomany1\"> "
+"<para> <literal>column</literal> (optional): The name of the foreign key "
+"column for the collection index values. </para> </callout> <callout arearefs="
+"\"indexmanytomany2\"> <para> <literal>formula</literal> (optional): A SQL "
+"formula used to evaluate the foreign key of the map key. </para> </callout> "
+"<callout arearefs=\"indexmanytomany3\"> <para> <literal>class</literal> "
+"(required): The entity class used as the map key. </para> </callout> </"
+"calloutlist> </programlistingco>"
+msgstr ""
-#: index.docbook:348
-msgid "If your table doesn't have an index column, and you still wish to use <literal>List</literal> as the property type, you should map the property as a Hibernate <emphasis><bag></emphasis>. A bag does not retain its order when it is retrieved from the database, but it may be optionally sorted or ordered."
-msgstr "Hay absolutamente un rango de mapeos que pueden ser generados para colecciones, cubriendo muchos modelos relacionales comunes. Te sugerimos que experimentes con la herramienta de generación de esquemas para obtener una idea de cómo varias declaraciones de mapeo se traducen a tablas de base de datos."
+#. Tag: para
+#: collection_mapping.xml:348
+#, no-c-format
+msgid ""
+"If your table doesn't have an index column, and you still wish to use "
+"<literal>List</literal> as the property type, you should map the property as "
+"a Hibernate <emphasis><bag></emphasis>. A bag does not retain its "
+"order when it is retrieved from the database, but it may be optionally "
+"sorted or ordered."
+msgstr ""
+"Si tu tabla no tiene una columna índice, y deseas aún usar <literal>List</"
+"literal> como tipo de propiedad, debes mapear la propiedad como un "
+"<emphasis><bag></emphasis> de Hibernate. Un bag (bolsa) no retiene su "
+"orden al ser recuperado de la base de datos, pero puede ser ordenado o "
+"clasificado opcionalmente."
-#: index.docbook:357
-msgid "There are quite a range of mappings that can be generated for collections, covering many common relational models. We suggest you experiment with the schema generation tool to get a feeling for how various mapping declarations translate to database tables."
-msgstr "Colecciones de valores y asociaciones muchos-a-muchos"
+#. Tag: para
+#: collection_mapping.xml:357
+#, no-c-format
+msgid ""
+"There are quite a range of mappings that can be generated for collections, "
+"covering many common relational models. We suggest you experiment with the "
+"schema generation tool to get a feeling for how various mapping declarations "
+"translate to database tables."
+msgstr ""
+"Hay absolutamente un rango de mapeos que pueden ser generados para "
+"colecciones, cubriendo muchos modelos relacionales comunes. Te sugerimos que "
+"experimentes con la herramienta de generación de esquemas para obtener una "
+"idea de cómo varias declaraciones de mapeo se traducen a tablas de base de "
+"datos."
-#: index.docbook:364
+#. Tag: title
+#: collection_mapping.xml:364
+#, no-c-format
msgid "Collections of values and many-to-many associations"
-msgstr "Cualquier colección de valores o asociación muchos a muchos requiere una <emphasis>tabla de colección</emphasis> dedicada con una columna o columnas de clave foránea, <emphasis>columna de elemento de colección</emphasis> o columnas y posiblemente una columna o columnas índice."
+msgstr "Colecciones de valores y asociaciones muchos-a-muchos"
-#: index.docbook:366
-msgid "Any collection of values or many-to-many association requires a dedicated <emphasis>collection table</emphasis> with a foreign key column or columns, <emphasis>collection element column</emphasis> or columns and possibly an index column or columns."
-msgstr "Para una colección de valores, usamos la etiqueta <literal><element></literal>."
+#. Tag: para
+#: collection_mapping.xml:366
+#, no-c-format
+msgid ""
+"Any collection of values or many-to-many association requires a dedicated "
+"<emphasis>collection table</emphasis> with a foreign key column or columns, "
+"<emphasis>collection element column</emphasis> or columns and possibly an "
+"index column or columns."
+msgstr ""
+"Cualquier colección de valores o asociación muchos a muchos requiere una "
+"<emphasis>tabla de colección</emphasis> dedicada con una columna o columnas "
+"de clave foránea, <emphasis>columna de elemento de colección</emphasis> o "
+"columnas y posiblemente una columna o columnas índice."
-#: index.docbook:373
-msgid "For a collection of values, we use the <literal><element></literal> tag."
+#. Tag: para
+#: collection_mapping.xml:373
+#, no-c-format
+msgid ""
+"For a collection of values, we use the <literal><element></literal> "
+"tag."
msgstr ""
- "<programlistingco> <areaspec> <area id=\"element1b\" coords=\"2 50\"/> <area id=\"element2b\" coords=\"3 50\"/> <area id=\"element3b\" coords=\"4 50\"/> </areaspec> <programlisting><![CDATA[<element\n"
- " column=\"column_name\"\n"
- " formula=\"any SQL expression\"\n"
- " type=\"typename\"\n"
- " length=\"L\"\n"
- " precision=\"P\"\n"
- " scale=\"S\"\n"
- " not-null=\"true|false\"\n"
- " unique=\"true|false\"\n"
- " node=\"element-name\"\n"
- "/>]]></programlisting> <calloutlist> <callout arearefs=\"element1b\"> <para> <literal>column</literal> (opcional): El nombre de la columna que tiene los valores de los elementos de la colección. </para> </callout> <callout arearefs=\"element2b\"> <para> <literal>formula</literal> (opcional): Una fórmula SQL usada para evaluar el elemento. </para> </callout> <callout arearefs=\"element3b\"> <para> <literal>type</literal> (requerido): El tipo del elemento de colección. </para> </callout> </calloutlist> </programlistingco> <para> Una <emphasis>asociación muchos-a-muchos</emphasis> se especifica usando el elemento <literal><many-to-many></literal>. </para> <programlistingco> <areaspec> <area id=\"manytomany1\" coords=\"2 60\"/> <area id=\"manytomany2\" coords=\"3 60\"/> <area id=\"manytomany3\" coords=\"4 60\"/> <area id=\"manytomany4\" coords=\"5 60\"/> <area id=\"manytomany5\" coords=\"6 60\"/> <area id=\"manytomany6\" coords=\"7 60\"/!
> <area id=\"manytomany7\" coords=\"8 60\"/> </areaspec> <programlisting><![CDATA[<many-to-many\n"
- " column=\"column_name\"\n"
- " formula=\"any SQL expression\"\n"
- " class=\"ClassName\"\n"
- " fetch=\"select|join\"\n"
- " unique=\"true|false\"\n"
- " not-found=\"ignore|exception\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name\"\n"
- " embed-xml=\"true|false\"\n"
- " />]]></programlisting> <calloutlist> <callout arearefs=\"manytomany1\"> <para> <literal>column</literal> (opcional): El nombre de la columna de clave foránea del elemento. </para> </callout> <callout arearefs=\"manytomany2\"> <para> <literal>formula</literal> (opcional): Una fórmula SQL opcional usada para evaluar el valor de clave foránea del elemento. </para> </callout> <callout arearefs=\"manytomany3\"> <para> <literal>class</literal> (requerido): El nombre de la clase asociada. </para> </callout> <callout arearefs=\"manytomany4\"> <para> <literal>fetch</literal> (opcional - por defecto a <literal>join</literal>): habilita la recuperación por unión externa o selección secuencial para esta asociación. Este es un caso especial; para una recuperación completamente temprana (en un solo <literal>SELECT</literal>) de una entidad y sus relaciones muchos-a-muchos a otras entidades, deberías habilitar la re!
cuperación <literal>join</literal> no sólo de la colección misma, sino también con este atributo en el elemento anidado <literal><many-to-many></literal>. </para> </callout> <callout arearefs=\"manytomany5\"> <para> <literal>unique</literal> (opcional): Habilita la generación DDL de una restricción de unicidad para la columna clave foránea. Esto hace la multiplicidad de la asociación efectivamente uno a muchos. </para> </callout> <callout arearefs=\"manytomany6\"> <para> <literal>not-found</literal> (opcional - por defecto a <literal>exception</literal>): Especifica cómo serán manejadas las claves foráneas que referencian filas perdidas: <literal>ignore</literal> tratará una fila perdida como una asociación nula. </para> </callout> <callout arearefs=\"manytomany7\"> <para> <literal>entity-name</literal> (opcional): El nombre de entidad de la clase asociada, como una alternativa !
a <literal>class</literal>. </para> </callout> </calloutlist> </progra
mlistingco>"
+"Para una colección de valores, usamos la etiqueta <literal><element></"
+"literal>."
-#: index.docbook:375
+#. Tag: sect2
+#: collection_mapping.xml:375
+#, no-c-format
msgid ""
- "<programlistingco> <areaspec> <area id=\"element1b\" coords=\"2 50\"/> <area id=\"element2b\" coords=\"3 50\"/> <area id=\"element3b\" coords=\"4 50\"/> </areaspec> <programlisting><![CDATA[<element\n"
- " column=\"column_name\"\n"
- " formula=\"any SQL expression\"\n"
- " type=\"typename\"\n"
- " length=\"L\"\n"
- " precision=\"P\"\n"
- " scale=\"S\"\n"
- " not-null=\"true|false\"\n"
- " unique=\"true|false\"\n"
- " node=\"element-name\"\n"
- "/>]]></programlisting> <calloutlist> <callout arearefs=\"element1b\"> <para> <literal>column</literal> (optional): The name of the column holding the collection element values. </para> </callout> <callout arearefs=\"element2b\"> <para> <literal>formula</literal> (optional): An SQL formula used to evaluate the element. </para> </callout> <callout arearefs=\"element3b\"> <para> <literal>type</literal> (required): The type of the collection element. </para> </callout> </calloutlist> </programlistingco> <para> A <emphasis>many-to-many association</emphasis> is specified using the <literal><many-to-many></literal> element. </para> <programlistingco> <areaspec> <area id=\"manytomany1\" coords=\"2 60\"/> <area id=\"manytomany2\" coords=\"3 60\"/> <area id=\"manytomany3\" coords=\"4 60\"/> <area id=\"manytomany4\" coords=\"5 60\"/> <area id=\"manytomany5\" coords=\"6 60\"/> <area id=\"manytomany6\" coords=\"7 60\"/> <area id=\"manytomany7\" coords=\"8 60\"/> <area id=\!
"manytomany8\" coords=\"9 60\"/> </areaspec> <programlisting><![CDATA[<many-to-many\n"
- " column=\"column_name\"\n"
- " formula=\"any SQL expression\"\n"
- " class=\"ClassName\"\n"
- " fetch=\"select|join\"\n"
- " unique=\"true|false\"\n"
- " not-found=\"ignore|exception\"\n"
- " entity-name=\"EntityName\"\n"
- " property-ref=\"propertyNameFromAssociatedClass\"\n"
- " node=\"element-name\"\n"
- " embed-xml=\"true|false\"\n"
- " />]]></programlisting> <calloutlist> <callout arearefs=\"manytomany1\"> <para> <literal>column</literal> (optional): The name of the element foreign key column. </para> </callout> <callout arearefs=\"manytomany2\"> <para> <literal>formula</literal> (optional): An SQL formula used to evaluate the element foreign key value. </para> </callout> <callout arearefs=\"manytomany3\"> <para> <literal>class</literal> (required): The name of the associated class. </para> </callout> <callout arearefs=\"manytomany4\"> <para> <literal>fetch</literal> (optional - defaults to <literal>join</literal>): enables outer-join or sequential select fetching for this association. This is a special case; for full eager fetching (in a single <literal>SELECT</literal>) of an entity and its many-to-many relationships to other entities, you would enable <literal>join</literal> fetching not only of the collection itself, but also with this attribute on the <literal><many-to-many></literal!
> nested element. </para> </callout> <callout arearefs=\"manytomany5\"> <para> <literal>unique</literal> (optional): Enable the DDL generation of a unique constraint for the foreign-key column. This makes the association multiplicity effectively one to many. </para> </callout> <callout arearefs=\"manytomany6\"> <para> <literal>not-found</literal> (optional - defaults to <literal>exception</literal>): Specifies how foreign keys that reference missing rows will be handled: <literal>ignore</literal> will treat a missing row as a null association. </para> </callout> <callout arearefs=\"manytomany7\"> <para> <literal>entity-name</literal> (optional): The entity name of the associated class, as an alternative to <literal>class</literal>. </para> </callout> <callout arearefs=\"manytomany8\"> <para> <literal>property-ref</literal>: (optional) The name of a property of the associated class that is joined to this foreign key. If not specified, the primary key of the associated class !
is used. </para> </callout> </calloutlist> </programlistingco>"
+"<programlistingco> <areaspec> <area id=\"element1b\" coords=\"2 50\"/> <area "
+"id=\"element2b\" coords=\"3 50\"/> <area id=\"element3b\" coords=\"4 50\"/> "
+"</areaspec> <programlisting><![CDATA[<element\n"
+" column=\"column_name\"\n"
+" formula=\"any SQL expression\"\n"
+" type=\"typename\"\n"
+" length=\"L\"\n"
+" precision=\"P\"\n"
+" scale=\"S\"\n"
+" not-null=\"true|false\"\n"
+" unique=\"true|false\"\n"
+" node=\"element-name\"\n"
+"/>]]></programlisting> <calloutlist> <callout arearefs=\"element1b\"> <para> "
+"<literal>column</literal> (optional): The name of the column holding the "
+"collection element values. </para> </callout> <callout arearefs=\"element2b"
+"\"> <para> <literal>formula</literal> (optional): An SQL formula used to "
+"evaluate the element. </para> </callout> <callout arearefs=\"element3b\"> "
+"<para> <literal>type</literal> (required): The type of the collection "
+"element. </para> </callout> </calloutlist> </programlistingco> <para> A "
+"<emphasis>many-to-many association</emphasis> is specified using the "
+"<literal><many-to-many></literal> element. </para> <programlistingco> "
+"<areaspec> <area id=\"manytomany1\" coords=\"2 60\"/> <area id=\"manytomany2"
+"\" coords=\"3 60\"/> <area id=\"manytomany3\" coords=\"4 60\"/> <area id="
+"\"manytomany4\" coords=\"5 60\"/> <area id=\"manytomany5\" coords=\"6 60\"/> "
+"<area id=\"manytomany6\" coords=\"7 60\"/> <area id=\"manytomany7\" coords="
+"\"8 60\"/> <area id=\"manytomany8\" coords=\"9 60\"/> </areaspec> "
+"<programlisting><![CDATA[<many-to-many\n"
+" column=\"column_name\"\n"
+" formula=\"any SQL expression\"\n"
+" class=\"ClassName\"\n"
+" fetch=\"select|join\"\n"
+" unique=\"true|false\"\n"
+" not-found=\"ignore|exception\"\n"
+" entity-name=\"EntityName\"\n"
+" property-ref=\"propertyNameFromAssociatedClass\"\n"
+" node=\"element-name\"\n"
+" embed-xml=\"true|false\"\n"
+" />]]></programlisting> <calloutlist> <callout arearefs=\"manytomany1\"> "
+"<para> <literal>column</literal> (optional): The name of the element foreign "
+"key column. </para> </callout> <callout arearefs=\"manytomany2\"> <para> "
+"<literal>formula</literal> (optional): An SQL formula used to evaluate the "
+"element foreign key value. </para> </callout> <callout arearefs=\"manytomany3"
+"\"> <para> <literal>class</literal> (required): The name of the associated "
+"class. </para> </callout> <callout arearefs=\"manytomany4\"> <para> "
+"<literal>fetch</literal> (optional - defaults to <literal>join</literal>): "
+"enables outer-join or sequential select fetching for this association. This "
+"is a special case; for full eager fetching (in a single <literal>SELECT</"
+"literal>) of an entity and its many-to-many relationships to other entities, "
+"you would enable <literal>join</literal> fetching not only of the collection "
+"itself, but also with this attribute on the <literal><many-to-many></"
+"literal> nested element. </para> </callout> <callout arearefs=\"manytomany5"
+"\"> <para> <literal>unique</literal> (optional): Enable the DDL generation "
+"of a unique constraint for the foreign-key column. This makes the "
+"association multiplicity effectively one to many. </para> </callout> "
+"<callout arearefs=\"manytomany6\"> <para> <literal>not-found</literal> "
+"(optional - defaults to <literal>exception</literal>): Specifies how foreign "
+"keys that reference missing rows will be handled: <literal>ignore</literal> "
+"will treat a missing row as a null association. </para> </callout> <callout "
+"arearefs=\"manytomany7\"> <para> <literal>entity-name</literal> (optional): "
+"The entity name of the associated class, as an alternative to "
+"<literal>class</literal>. </para> </callout> <callout arearefs=\"manytomany8"
+"\"> <para> <literal>property-ref</literal>: (optional) The name of a "
+"property of the associated class that is joined to this foreign key. If not "
+"specified, the primary key of the associated class is used. </para> </"
+"callout> </calloutlist> </programlistingco>"
+msgstr ""
+
+#. Tag: para
+#: collection_mapping.xml:480
+#, no-c-format
+msgid "Some examples, first, a set of strings:"
msgstr "Algunos ejemplos, primero, un conjunto de cadenas:"
-#: index.docbook:480
-msgid "Some examples, first, a set of strings:"
+#. Tag: programlisting
+#: collection_mapping.xml:484
+#, no-c-format
+msgid ""
+"<![CDATA[<set name=\"names\" table=\"person_names\">\n"
+" <key column=\"person_id\"/>\n"
+" <element column=\"person_name\" type=\"string\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"names\" table=\"person_names\">\n"
- " <key column=\"person_id\"/>\n"
- " <element column=\"person_name\" type=\"string\"/>\n"
- "</set>]]>"
-#: index.docbook:484
+#. Tag: para
+#: collection_mapping.xml:486
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"names\" table=\"person_names\">\n"
- " <key column=\"person_id\"/>\n"
- " <element column=\"person_name\" type=\"string\"/>\n"
- "</set>]]>"
-msgstr "Un bag conteniendo enteros (con un orden de iteración determinado por el atributo <literal>order-by</literal>):"
-
-#: index.docbook:486
-msgid "A bag containing integers (with an iteration order determined by the <literal>order-by</literal> attribute):"
+"A bag containing integers (with an iteration order determined by the "
+"<literal>order-by</literal> attribute):"
msgstr ""
- "<![CDATA[<bag name=\"sizes\" \n"
- " table=\"item_sizes\" \n"
- " order-by=\"size asc\">\n"
- " <key column=\"item_id\"/>\n"
- " <element column=\"size\" type=\"integer\"/>\n"
- "</bag>]]>"
+"Un bag conteniendo enteros (con un orden de iteración determinado por el "
+"atributo <literal>order-by</literal>):"
-#: index.docbook:491
+#. Tag: programlisting
+#: collection_mapping.xml:491
+#, no-c-format
msgid ""
- "<![CDATA[<bag name=\"sizes\" \n"
- " table=\"item_sizes\" \n"
- " order-by=\"size asc\">\n"
- " <key column=\"item_id\"/>\n"
- " <element column=\"size\" type=\"integer\"/>\n"
- "</bag>]]>"
-msgstr "Un array de entidades - en este caso, una asociación muchos a muchos:"
+"<![CDATA[<bag name=\"sizes\" \n"
+" table=\"item_sizes\" \n"
+" order-by=\"size asc\">\n"
+" <key column=\"item_id\"/>\n"
+" <element column=\"size\" type=\"integer\"/>\n"
+"</bag>]]>"
+msgstr ""
-#: index.docbook:493
+#. Tag: para
+#: collection_mapping.xml:493
+#, no-c-format
msgid "An array of entities - in this case, a many to many association:"
-msgstr ""
- "<![CDATA[<array name=\"addresses\" \n"
- " table=\"PersonAddress\" \n"
- " cascade=\"persist\">\n"
- " <key column=\"personId\"/>\n"
- " <list-index column=\"sortOrder\"/>\n"
- " <many-to-many column=\"addressId\" class=\"Address\"/>\n"
- "</array>]]>"
+msgstr "Un array de entidades - en este caso, una asociación muchos a muchos:"
-#: index.docbook:497
+#. Tag: programlisting
+#: collection_mapping.xml:497
+#, no-c-format
msgid ""
- "<![CDATA[<array name=\"addresses\" \n"
- " table=\"PersonAddress\" \n"
- " cascade=\"persist\">\n"
- " <key column=\"personId\"/>\n"
- " <list-index column=\"sortOrder\"/>\n"
- " <many-to-many column=\"addressId\" class=\"Address\"/>\n"
- "</array>]]>"
-msgstr "Un mapa de índices de cadenas a fechas:"
+"<![CDATA[<array name=\"addresses\" \n"
+" table=\"PersonAddress\" \n"
+" cascade=\"persist\">\n"
+" <key column=\"personId\"/>\n"
+" <list-index column=\"sortOrder\"/>\n"
+" <many-to-many column=\"addressId\" class=\"Address\"/>\n"
+"</array>]]>"
+msgstr ""
-#: index.docbook:499
+#. Tag: para
+#: collection_mapping.xml:499
+#, no-c-format
msgid "A map from string indices to dates:"
-msgstr ""
- "<![CDATA[<map name=\"holidays\" \n"
- " table=\"holidays\" \n"
- " schema=\"dbo\" \n"
- " order-by=\"hol_name asc\">\n"
- " <key column=\"id\"/>\n"
- " <map-key column=\"hol_name\" type=\"string\"/>\n"
- " <element column=\"hol_date\" type=\"date\"/>\n"
- "</map>]]>"
+msgstr "Un mapa de índices de cadenas a fechas:"
-#: index.docbook:503
+#. Tag: programlisting
+#: collection_mapping.xml:503
+#, no-c-format
msgid ""
- "<![CDATA[<map name=\"holidays\" \n"
- " table=\"holidays\" \n"
- " schema=\"dbo\" \n"
- " order-by=\"hol_name asc\">\n"
- " <key column=\"id\"/>\n"
- " <map-key column=\"hol_name\" type=\"string\"/>\n"
- " <element column=\"hol_date\" type=\"date\"/>\n"
- "</map>]]>"
-msgstr "Una lista de componentes (discutidos en el próximo capítulo):"
+"<![CDATA[<map name=\"holidays\" \n"
+" table=\"holidays\" \n"
+" schema=\"dbo\" \n"
+" order-by=\"hol_name asc\">\n"
+" <key column=\"id\"/>\n"
+" <map-key column=\"hol_name\" type=\"string\"/>\n"
+" <element column=\"hol_date\" type=\"date\"/>\n"
+"</map>]]>"
+msgstr ""
-#: index.docbook:505
+#. Tag: para
+#: collection_mapping.xml:505
+#, no-c-format
msgid "A list of components (discussed in the next chapter):"
-msgstr ""
- "<![CDATA[<list name=\"carComponents\" \n"
- " table=\"CarComponents\">\n"
- " <key column=\"carId\"/>\n"
- " <list-index column=\"sortOrder\"/>\n"
- " <composite-element class=\"CarComponent\">\n"
- " <property name=\"price\"/>\n"
- " <property name=\"type\"/>\n"
- " <property name=\"serialNumber\" column=\"serialNum\"/>\n"
- " </composite-element>\n"
- "</list>]]>"
+msgstr "Una lista de componentes (discutidos en el próximo capítulo):"
-#: index.docbook:509
+#. Tag: programlisting
+#: collection_mapping.xml:509
+#, no-c-format
msgid ""
- "<![CDATA[<list name=\"carComponents\" \n"
- " table=\"CarComponents\">\n"
- " <key column=\"carId\"/>\n"
- " <list-index column=\"sortOrder\"/>\n"
- " <composite-element class=\"CarComponent\">\n"
- " <property name=\"price\"/>\n"
- " <property name=\"type\"/>\n"
- " <property name=\"serialNumber\" column=\"serialNum\"/>\n"
- " </composite-element>\n"
- "</list>]]>"
-msgstr "Asociaciones uno-a-muchos"
+"<![CDATA[<list name=\"carComponents\" \n"
+" table=\"CarComponents\">\n"
+" <key column=\"carId\"/>\n"
+" <list-index column=\"sortOrder\"/>\n"
+" <composite-element class=\"CarComponent\">\n"
+" <property name=\"price\"/>\n"
+" <property name=\"type\"/>\n"
+" <property name=\"serialNumber\" column=\"serialNum\"/>\n"
+" </composite-element>\n"
+"</list>]]>"
+msgstr ""
-#: index.docbook:514
+#. Tag: title
+#: collection_mapping.xml:514
+#, no-c-format
msgid "One-to-many associations"
-msgstr "Una <emphasis>asociación uno a muchos</emphasis> enlaza las tablas de dos clases por medio de una clave foránea, sin intervención de tabla de colección alguna. Este mapeo pierde cierta semántica de colecciones Java normales:"
+msgstr "Asociaciones uno-a-muchos"
-#: index.docbook:516
-msgid "A <emphasis>one to many association</emphasis> links the tables of two classes via a foreign key, with no intervening collection table. This mapping loses certain semantics of normal Java collections:"
-msgstr "Una instancia de la clase entidad contenida no puede pertenecer a más de una instancia de la colección."
+#. Tag: para
+#: collection_mapping.xml:516
+#, no-c-format
+msgid ""
+"A <emphasis>one to many association</emphasis> links the tables of two "
+"classes via a foreign key, with no intervening collection table. This "
+"mapping loses certain semantics of normal Java collections:"
+msgstr ""
+"Una <emphasis>asociación uno a muchos</emphasis> enlaza las tablas de dos "
+"clases por medio de una clave foránea, sin intervención de tabla de "
+"colección alguna. Este mapeo pierde cierta semántica de colecciones Java "
+"normales:"
-#: index.docbook:524
-msgid "An instance of the contained entity class may not belong to more than one instance of the collection"
-msgstr "Una instancia de la clase entidad contenida no puede aparecer en más de un valor del índice de colección."
+#. Tag: para
+#: collection_mapping.xml:524
+#, no-c-format
+msgid ""
+"An instance of the contained entity class may not belong to more than one "
+"instance of the collection"
+msgstr ""
+"Una instancia de la clase entidad contenida no puede pertenecer a más de una "
+"instancia de la colección."
-#: index.docbook:530
-msgid "An instance of the contained entity class may not appear at more than one value of the collection index"
-msgstr "Una asociación de <literal>Product</literal> a <literal>Part</literal> requiere la existencia de una columna clave foránea y posiblemente una columna índice a la tabla <literal>Part</literal>. Una etiqueta <literal><one-to-many></literal> indica que ésta es una asociación uno a muchos."
+#. Tag: para
+#: collection_mapping.xml:530
+#, no-c-format
+msgid ""
+"An instance of the contained entity class may not appear at more than one "
+"value of the collection index"
+msgstr ""
+"Una instancia de la clase entidad contenida no puede aparecer en más de un "
+"valor del índice de colección."
-#: index.docbook:537
-msgid "An association from <literal>Product</literal> to <literal>Part</literal> requires existence of a foreign key column and possibly an index column to the <literal>Part</literal> table. A <literal><one-to-many></literal> tag indicates that this is a one to many association."
+#. Tag: para
+#: collection_mapping.xml:537
+#, no-c-format
+msgid ""
+"An association from <literal>Product</literal> to <literal>Part</literal> "
+"requires existence of a foreign key column and possibly an index column to "
+"the <literal>Part</literal> table. A <literal><one-to-many></literal> "
+"tag indicates that this is a one to many association."
msgstr ""
- "<![CDATA[<one-to-many \n"
- " class=\"ClassName\"\n"
- " not-found=\"ignore|exception\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name\"\n"
- " embed-xml=\"true|false\"\n"
- " />]]>"
+"Una asociación de <literal>Product</literal> a <literal>Part</literal> "
+"requiere la existencia de una columna clave foránea y posiblemente una "
+"columna índice a la tabla <literal>Part</literal>. Una etiqueta <literal><"
+"one-to-many></literal> indica que ésta es una asociación uno a muchos."
-#: index.docbook:550
+#. Tag: programlisting
+#: collection_mapping.xml:550
+#, no-c-format
msgid ""
- "<![CDATA[<one-to-many \n"
- " class=\"ClassName\"\n"
- " not-found=\"ignore|exception\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name\"\n"
- " embed-xml=\"true|false\"\n"
- " />]]>"
-msgstr "<literal>class</literal> (requerido): El nombre de la clase asociada."
+"<![CDATA[<one-to-many \n"
+" class=\"ClassName\"\n"
+" not-found=\"ignore|exception\"\n"
+" entity-name=\"EntityName\"\n"
+" node=\"element-name\"\n"
+" embed-xml=\"true|false\"\n"
+" />]]>"
+msgstr ""
-#: index.docbook:553
+#. Tag: para
+#: collection_mapping.xml:553
+#, no-c-format
msgid "<literal>class</literal> (required): The name of the associated class."
-msgstr "<literal>not-found</literal> (opcional - por defecto a <literal>exception</literal>): Especifica cómo serán manejados los identificadores en caché que referencien filas perdidas: <literal>ignore</literal> tratará una fila perdida como una asociación nula."
+msgstr "<literal>class</literal> (requerido): El nombre de la clase asociada."
-#: index.docbook:558
-msgid "<literal>not-found</literal> (optional - defaults to <literal>exception</literal>): Specifies how cached identifiers that reference missing rows will be handled: <literal>ignore</literal> will treat a missing row as a null association."
-msgstr "<literal>entity-name</literal> (opcional): El nombre de entidad de la clase asociada, como una alternativa a <literal>class</literal>."
+#. Tag: para
+#: collection_mapping.xml:558
+#, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): Specifies how cached identifiers that reference missing rows will "
+"be handled: <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (opcional - por defecto a <literal>exception</"
+"literal>): Especifica cómo serán manejados los identificadores en caché que "
+"referencien filas perdidas: <literal>ignore</literal> tratará una fila "
+"perdida como una asociación nula."
-#: index.docbook:565
-msgid "<literal>entity-name</literal> (optional): The entity name of the associated class, as an alternative to <literal>class</literal>."
-msgstr "Observa que el elemento <literal><one-to-many></literal> no necesita declarar ninguna columna. Ni es necesario especificar el nombre de <literal>table</literal> en ningún sitio."
+#. Tag: para
+#: collection_mapping.xml:565
+#, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional): The entity name of the associated "
+"class, as an alternative to <literal>class</literal>."
+msgstr ""
+"<literal>entity-name</literal> (opcional): El nombre de entidad de la clase "
+"asociada, como una alternativa a <literal>class</literal>."
-#: index.docbook:573
-msgid "Notice that the <literal><one-to-many></literal> element does not need to declare any columns. Nor is it necessary to specify the <literal>table</literal> name anywhere."
-msgstr "<emphasis>Nota muy importante:</emphasis> Si la columna clave foránea de una asociación <literal><one-to-many></literal> es declarada <literal>NOT NULL</literal>, debes declarar el mapeo de <literal><key></literal> <literal>not-null=\"true\"</literal> o <emphasis>usar una asociación bidireccional</emphasis> con el mapeo de colección marcado <literal>inverse=\"true\"</literal>. Ver la discusión sobre asociaciones bidireccionales más adelante en este capítulo."
+#. Tag: para
+#: collection_mapping.xml:573
+#, no-c-format
+msgid ""
+"Notice that the <literal><one-to-many></literal> element does not need "
+"to declare any columns. Nor is it necessary to specify the <literal>table</"
+"literal> name anywhere."
+msgstr ""
+"Observa que el elemento <literal><one-to-many></literal> no necesita "
+"declarar ninguna columna. Ni es necesario especificar el nombre de "
+"<literal>table</literal> en ningún sitio."
-#: index.docbook:579
-msgid "<emphasis>Very important note:</emphasis> If the foreign key column of a <literal><one-to-many></literal> association is declared <literal>NOT NULL</literal>, you must declare the <literal><key></literal> mapping <literal>not-null=\"true\"</literal> or <emphasis>use a bidirectional association</emphasis> with the collection mapping marked <literal>inverse=\"true\"</literal>. See the discussion of bidirectional associations later in this chapter."
-msgstr "Este ejemplo muestra un mapa de entidades <literal>Part</literal> por nombre (donde <literal>partName</literal> es una propiedad persistente de <literal>Part</literal>). Observa el uso de un índice basado en fórmula."
+#. Tag: para
+#: collection_mapping.xml:579
+#, no-c-format
+msgid ""
+"<emphasis>Very important note:</emphasis> If the foreign key column of a "
+"<literal><one-to-many></literal> association is declared <literal>NOT "
+"NULL</literal>, you must declare the <literal><key></literal> mapping "
+"<literal>not-null=\"true\"</literal> or <emphasis>use a bidirectional "
+"association</emphasis> with the collection mapping marked <literal>inverse="
+"\"true\"</literal>. See the discussion of bidirectional associations later "
+"in this chapter."
+msgstr ""
+"<emphasis>Nota muy importante:</emphasis> Si la columna clave foránea de una "
+"asociación <literal><one-to-many></literal> es declarada <literal>NOT "
+"NULL</literal>, debes declarar el mapeo de <literal><key></"
+"literal><literal>not-null=\"true\"</literal> o <emphasis>usar una asociación "
+"bidireccional</emphasis> con el mapeo de colección marcado <literal>inverse="
+"\"true\"</literal>. Ver la discusión sobre asociaciones bidireccionales más "
+"adelante en este capítulo."
-#: index.docbook:588
-msgid "This example shows a map of <literal>Part</literal> entities by name (where <literal>partName</literal> is a persistent property of <literal>Part</literal>). Notice the use of a formula-based index."
+#. Tag: para
+#: collection_mapping.xml:588
+#, no-c-format
+msgid ""
+"This example shows a map of <literal>Part</literal> entities by name (where "
+"<literal>partName</literal> is a persistent property of <literal>Part</"
+"literal>). Notice the use of a formula-based index."
msgstr ""
- "<![CDATA[<map name=\"parts\"\n"
- " cascade=\"all\">\n"
- " <key column=\"productId\" not-null=\"true\"/>\n"
- " <map-key formula=\"partName\"/>\n"
- " <one-to-many class=\"Part\"/>\n"
- "</map>]]>"
+"Este ejemplo muestra un mapa de entidades <literal>Part</literal> por nombre "
+"(donde <literal>partName</literal> es una propiedad persistente de "
+"<literal>Part</literal>). Observa el uso de un índice basado en fórmula."
-#: index.docbook:594
+#. Tag: programlisting
+#: collection_mapping.xml:594
+#, no-c-format
msgid ""
- "<![CDATA[<map name=\"parts\"\n"
- " cascade=\"all\">\n"
- " <key column=\"productId\" not-null=\"true\"/>\n"
- " <map-key formula=\"partName\"/>\n"
- " <one-to-many class=\"Part\"/>\n"
- "</map>]]>"
-msgstr "Mapeos de colección avanzados"
+"<![CDATA[<map name=\"parts\"\n"
+" cascade=\"all\">\n"
+" <key column=\"productId\" not-null=\"true\"/>\n"
+" <map-key formula=\"partName\"/>\n"
+" <one-to-many class=\"Part\"/>\n"
+"</map>]]>"
+msgstr ""
-#: index.docbook:600
+#. Tag: title
+#: collection_mapping.xml:600
+#, no-c-format
msgid "Advanced collection mappings"
-msgstr "Colecciones ordenadas"
+msgstr "Mapeos de colección avanzados"
-#: index.docbook:603
+#. Tag: title
+#: collection_mapping.xml:603
+#, no-c-format
msgid "Sorted collections"
-msgstr "Hibernate soporta colecciones implementando <literal>java.util.SortedMap</literal> y <literal>java.util.SortedSet</literal>. Debes especificar un comparador en el fichero de mapeo:"
+msgstr "Colecciones ordenadas"
-#: index.docbook:605
-msgid "Hibernate supports collections implementing <literal>java.util.SortedMap</literal> and <literal>java.util.SortedSet</literal>. You must specify a comparator in the mapping file:"
+#. Tag: para
+#: collection_mapping.xml:605
+#, no-c-format
+msgid ""
+"Hibernate supports collections implementing <literal>java.util.SortedMap</"
+"literal> and <literal>java.util.SortedSet</literal>. You must specify a "
+"comparator in the mapping file:"
msgstr ""
- "<![CDATA[<set name=\"aliases\" \n"
- " table=\"person_aliases\" \n"
- " sort=\"natural\">\n"
- " <key column=\"person\"/>\n"
- " <element column=\"name\" type=\"string\"/>\n"
- "</set>\n"
- "\n"
- "<map name=\"holidays\" sort=\"my.custom.HolidayComparator\">\n"
- " <key column=\"year_id\"/>\n"
- " <map-key column=\"hol_name\" type=\"string\"/>\n"
- " <element column=\"hol_date\" type=\"date\"/>\n"
- "</map>]]>"
+"Hibernate soporta colecciones implementando <literal>java.util.SortedMap</"
+"literal> y <literal>java.util.SortedSet</literal>. Debes especificar un "
+"comparador en el fichero de mapeo:"
-#: index.docbook:610
+#. Tag: programlisting
+#: collection_mapping.xml:610
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"aliases\" \n"
- " table=\"person_aliases\" \n"
- " sort=\"natural\">\n"
- " <key column=\"person\"/>\n"
- " <element column=\"name\" type=\"string\"/>\n"
- "</set>\n"
- "\n"
- "<map name=\"holidays\" sort=\"my.custom.HolidayComparator\">\n"
- " <key column=\"year_id\"/>\n"
- " <map-key column=\"hol_name\" type=\"string\"/>\n"
- " <element column=\"hol_date\" type=\"date\"/>\n"
- "</map>]]>"
-msgstr "Los valores permitidos del atributo <literal>sort</literal> son <literal>unsorted</literal>, <literal>natural</literal> y el nombre de una clase que implemente <literal>java.util.Comparator</literal>."
+"<![CDATA[<set name=\"aliases\" \n"
+" table=\"person_aliases\" \n"
+" sort=\"natural\">\n"
+" <key column=\"person\"/>\n"
+" <element column=\"name\" type=\"string\"/>\n"
+"</set>\n"
+"\n"
+"<map name=\"holidays\" sort=\"my.custom.HolidayComparator\">\n"
+" <key column=\"year_id\"/>\n"
+" <map-key column=\"hol_name\" type=\"string\"/>\n"
+" <element column=\"hol_date\" type=\"date\"/>\n"
+"</map>]]>"
+msgstr ""
-#: index.docbook:612
-msgid "Allowed values of the <literal>sort</literal> attribute are <literal>unsorted</literal>, <literal>natural</literal> and the name of a class implementing <literal>java.util.Comparator</literal>."
-msgstr "Las colecciones ordenadas realmente se comportan como <literal>java.util.TreeSet</literal> o <literal>java.util.TreeMap</literal>."
+#. Tag: para
+#: collection_mapping.xml:612
+#, no-c-format
+msgid ""
+"Allowed values of the <literal>sort</literal> attribute are "
+"<literal>unsorted</literal>, <literal>natural</literal> and the name of a "
+"class implementing <literal>java.util.Comparator</literal>."
+msgstr ""
+"Los valores permitidos del atributo <literal>sort</literal> son "
+"<literal>unsorted</literal>, <literal>natural</literal> y el nombre de una "
+"clase que implemente <literal>java.util.Comparator</literal>."
-#: index.docbook:618
-msgid "Sorted collections actually behave like <literal>java.util.TreeSet</literal> or <literal>java.util.TreeMap</literal>."
-msgstr "Si quieres que la misma base de datos ordene los elementos de colección usa el atributo <literal>order-by</literal> de los mapeos <literal>set</literal>, <literal>bag</literal> o <literal>map</literal>. Esta solución está disponible sólo bajo el JDK 1.4 o superior (está implementado usando <literal>LinkedHashSet</literal> o <literal>LinkedHashMap</literal>). Esto realiza la ordenación en la consulta SQL, no en memoria."
+#. Tag: para
+#: collection_mapping.xml:618
+#, no-c-format
+msgid ""
+"Sorted collections actually behave like <literal>java.util.TreeSet</literal> "
+"or <literal>java.util.TreeMap</literal>."
+msgstr ""
+"Las colecciones ordenadas realmente se comportan como <literal>java.util."
+"TreeSet</literal> o <literal>java.util.TreeMap</literal>."
-#: index.docbook:623
-msgid "If you want the database itself to order the collection elements use the <literal>order-by</literal> attribute of <literal>set</literal>, <literal>bag</literal> or <literal>map</literal> mappings. This solution is only available under JDK 1.4 or higher (it is implemented using <literal>LinkedHashSet</literal> or <literal>LinkedHashMap</literal>). This performs the ordering in the SQL query, not in memory."
+#. Tag: para
+#: collection_mapping.xml:623
+#, no-c-format
+msgid ""
+"If you want the database itself to order the collection elements use the "
+"<literal>order-by</literal> attribute of <literal>set</literal>, "
+"<literal>bag</literal> or <literal>map</literal> mappings. This solution is "
+"only available under JDK 1.4 or higher (it is implemented using "
+"<literal>LinkedHashSet</literal> or <literal>LinkedHashMap</literal>). This "
+"performs the ordering in the SQL query, not in memory."
msgstr ""
- "<![CDATA[<set name=\"aliases\" table=\"person_aliases\" order-by=\"lower(name) asc\">\n"
- " <key column=\"person\"/>\n"
- " <element column=\"name\" type=\"string\"/>\n"
- "</set>\n"
- "\n"
- "<map name=\"holidays\" order-by=\"hol_date, hol_name\">\n"
- " <key column=\"year_id\"/>\n"
- " <map-key column=\"hol_name\" type=\"string\"/>\n"
- " <element column=\"hol_date type=\"date\"/>\n"
- "</map>]]>"
+"Si quieres que la misma base de datos ordene los elementos de colección usa "
+"el atributo <literal>order-by</literal> de los mapeos <literal>set</"
+"literal>, <literal>bag</literal> o <literal>map</literal>. Esta solución "
+"está disponible sólo bajo el JDK 1.4 o superior (está implementado usando "
+"<literal>LinkedHashSet</literal> o <literal>LinkedHashMap</literal>). Esto "
+"realiza la ordenación en la consulta SQL, no en memoria."
-#: index.docbook:632
+#. Tag: programlisting
+#: collection_mapping.xml:632
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"aliases\" table=\"person_aliases\" order-by=\"lower(name) asc\">\n"
- " <key column=\"person\"/>\n"
- " <element column=\"name\" type=\"string\"/>\n"
- "</set>\n"
- "\n"
- "<map name=\"holidays\" order-by=\"hol_date, hol_name\">\n"
- " <key column=\"year_id\"/>\n"
- " <map-key column=\"hol_name\" type=\"string\"/>\n"
- " <element column=\"hol_date type=\"date\"/>\n"
- "</map>]]>"
-msgstr "Observa que el valor del atributo <literal>order-by</literal> es una ordenación SQL, no una ordenación HQL!"
+"<![CDATA[<set name=\"aliases\" table=\"person_aliases\" order-by=\"lower"
+"(name) asc\">\n"
+" <key column=\"person\"/>\n"
+" <element column=\"name\" type=\"string\"/>\n"
+"</set>\n"
+"\n"
+"<map name=\"holidays\" order-by=\"hol_date, hol_name\">\n"
+" <key column=\"year_id\"/>\n"
+" <map-key column=\"hol_name\" type=\"string\"/>\n"
+" <element column=\"hol_date type=\"date\"/>\n"
+"</map>]]>"
+msgstr ""
-#: index.docbook:634
-msgid "Note that the value of the <literal>order-by</literal> attribute is an SQL ordering, not a HQL ordering!"
-msgstr "Las asociaciones pueden incluso ser ordenadas por algún criterio arbitrario en tiempo de ejecución usando un <literal>filter()</literal> de colección."
+#. Tag: para
+#: collection_mapping.xml:634
+#, no-c-format
+msgid ""
+"Note that the value of the <literal>order-by</literal> attribute is an SQL "
+"ordering, not a HQL ordering!"
+msgstr ""
+"Observa que el valor del atributo <literal>order-by</literal> es una "
+"ordenación SQL, no una ordenación HQL!"
-#: index.docbook:639
-msgid "Associations may even be sorted by some arbitrary criteria at runtime using a collection <literal>filter()</literal>."
-msgstr "<![CDATA[sortedUsers = s.createFilter( group.getUsers(), \"order by this.name\" ).list();]]>"
+#. Tag: para
+#: collection_mapping.xml:639
+#, no-c-format
+msgid ""
+"Associations may even be sorted by some arbitrary criteria at runtime using "
+"a collection <literal>filter()</literal>."
+msgstr ""
+"Las asociaciones pueden incluso ser ordenadas por algún criterio arbitrario "
+"en tiempo de ejecución usando un <literal>filter()</literal> de colección."
-#: index.docbook:644
-msgid "<![CDATA[sortedUsers = s.createFilter( group.getUsers(), \"order by this.name\" ).list();]]>"
-msgstr "Asociaciones bidireccionales"
+#. Tag: programlisting
+#: collection_mapping.xml:644
+#, no-c-format
+msgid ""
+"<![CDATA[sortedUsers = s.createFilter( group.getUsers(), \"order by this.name"
+"\" ).list();]]>"
+msgstr ""
-#: index.docbook:649
+#. Tag: title
+#: collection_mapping.xml:649
+#, no-c-format
msgid "Bidirectional associations"
-msgstr "Una <emphasis>asociación bidireccional</emphasis> permite la nevegación desde ambos \"extremos\" de la asociación. Son soportados dos tipos de asociación bidireccional:"
+msgstr "Asociaciones bidireccionales"
-#: index.docbook:651
-msgid "A <emphasis>bidirectional association</emphasis> allows navigation from both \"ends\" of the association. Two kinds of bidirectional association are supported:"
-msgstr "uno-a-muchos"
+#. Tag: para
+#: collection_mapping.xml:651
+#, fuzzy, no-c-format
+msgid ""
+"A <emphasis>bidirectional association</emphasis> allows navigation from both "
+"\"ends\" of the association. Two kinds of bidirectional association are "
+"supported:"
+msgstr ""
+"Una <emphasis>asociación bidireccional</emphasis> permite la nevegación "
+"desde ambos \"extremos\" de la asociación. Son soportados dos tipos de "
+"asociación bidireccional: <placeholder-1/>"
-#: index.docbook:658
+#. Tag: term
+#: collection_mapping.xml:658
+#, no-c-format
msgid "one-to-many"
-msgstr "set o bag valorados en un extremo, monovaluados al otro"
+msgstr "uno-a-muchos"
-#: index.docbook:660
+#. Tag: para
+#: collection_mapping.xml:660
+#, no-c-format
msgid "set or bag valued at one end, single-valued at the other"
-msgstr "muchos-a-muchos"
+msgstr "set o bag valorados en un extremo, monovaluados al otro"
-#: index.docbook:666
+#. Tag: term
+#: collection_mapping.xml:666
+#, no-c-format
msgid "many-to-many"
-msgstr "set o bag valorados a ambos extremos"
+msgstr "muchos-a-muchos"
-#: index.docbook:668
+#. Tag: para
+#: collection_mapping.xml:668
+#, no-c-format
msgid "set or bag valued at both ends"
-msgstr "Puedes especificar una asociación bidireccional muchos-a-muchos simplemente mapeando dos asociaciones muchos-a-muchos a la misma tabla de base de datos y declarando un extremo como <emphasis>inverse</emphasis> (cuál de ellos es tu elección, pero no puede ser una colección indexada)."
+msgstr "set o bag valorados a ambos extremos"
-#: index.docbook:677
-msgid "You may specify a bidirectional many-to-many association simply by mapping two many-to-many associations to the same database table and declaring one end as <emphasis>inverse</emphasis> (which one is your choice, but it can not be an indexed collection)."
-msgstr "He aquí un ejemplo de una asociación bidireccional muchos-a-muchos; cada categoría puede tener muchos ítems y cada ítem puede estar en muchas categorías:"
+#. Tag: para
+#: collection_mapping.xml:677
+#, no-c-format
+msgid ""
+"You may specify a bidirectional many-to-many association simply by mapping "
+"two many-to-many associations to the same database table and declaring one "
+"end as <emphasis>inverse</emphasis> (which one is your choice, but it can "
+"not be an indexed collection)."
+msgstr ""
+"Puedes especificar una asociación bidireccional muchos-a-muchos simplemente "
+"mapeando dos asociaciones muchos-a-muchos a la misma tabla de base de datos "
+"y declarando un extremo como <emphasis>inverse</emphasis> (cuál de ellos es "
+"tu elección, pero no puede ser una colección indexada)."
-#: index.docbook:684
-msgid "Here's an example of a bidirectional many-to-many association; each category can have many items and each item can be in many categories:"
+#. Tag: para
+#: collection_mapping.xml:684
+#, no-c-format
+msgid ""
+"Here's an example of a bidirectional many-to-many association; each category "
+"can have many items and each item can be in many categories:"
msgstr ""
- "<![CDATA[<class name=\"Category\">\n"
- " <id name=\"id\" column=\"CATEGORY_ID\"/>\n"
- " ...\n"
- " <bag name=\"items\" table=\"CATEGORY_ITEM\">\n"
- " <key column=\"CATEGORY_ID\"/>\n"
- " <many-to-many class=\"Item\" column=\"ITEM_ID\"/>\n"
- " </bag>\n"
- "</class>\n"
- "\n"
- "<class name=\"Item\">\n"
- " <id name=\"id\" column=\"ITEM_ID\"/>
-\n"
- " ...\n"
- "\n"
- " <!-- inverse end -->\n"
- " <bag name=\"categories\" table=\"CATEGORY_ITEM\" inverse=\"true\">\n"
- " <key column=\"ITEM_ID\"/>\n"
- " <many-to-many class=\"Category\" column=\"CATEGORY_ID\"/>\n"
- " </bag>\n"
- "</class>]]>"
+"He aquí un ejemplo de una asociación bidireccional muchos-a-muchos; cada "
+"categoría puede tener muchos ítems y cada ítem puede estar en muchas "
+"categorías:"
-#: index.docbook:689
+#. Tag: programlisting
+#: collection_mapping.xml:689
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Category\">\n"
- " <id name=\"id\" column=\"CATEGORY_ID\"/>\n"
- " ...\n"
- " <bag name=\"items\" table=\"CATEGORY_ITEM\">\n"
- " <key column=\"CATEGORY_ID\"/>\n"
- " <many-to-many class=\"Item\" column=\"ITEM_ID\"/>\n"
- " </bag>\n"
- "</class>\n"
- "\n"
- "<class name=\"Item\">\n"
- " <id name=\"id\" column=\"ITEM_ID\"/>\n"
- " ...\n"
- "\n"
- " <!-- inverse end -->\n"
- " <bag name=\"categories\" table=\"CATEGORY_ITEM\" inverse=\"true\">\n"
- " <key column=\"ITEM_ID\"/>\n"
- " <many-to-many class=\"Category\" column=\"CATEGORY_ID\"/>\n"
- " </bag>\n"
- "</class>]]>"
-msgstr "Los cambios hechos sólo al extremo inverso de la asociación <emphasis>no</emphasis> son persistidos. Esto significa que Hibernate tiene dos representaciones en memoria para cada asociación bidireccional, una enlaza de A a B y otra enlaza de B a A. Esto es más fácil de entender si piensas en el modelo de objetos de Java y cómo creamos una relación muchos-a-muchos en Java:"
+"<![CDATA[<class name=\"Category\">\n"
+" <id name=\"id\" column=\"CATEGORY_ID\"/>\n"
+" ...\n"
+" <bag name=\"items\" table=\"CATEGORY_ITEM\">\n"
+" <key column=\"CATEGORY_ID\"/>\n"
+" <many-to-many class=\"Item\" column=\"ITEM_ID\"/>\n"
+" </bag>\n"
+"</class>\n"
+"\n"
+"<class name=\"Item\">\n"
+" <id name=\"id\" column=\"ITEM_ID\"/>\n"
+" ...\n"
+"\n"
+" <!-- inverse end -->\n"
+" <bag name=\"categories\" table=\"CATEGORY_ITEM\" inverse=\"true\">\n"
+" <key column=\"ITEM_ID\"/>\n"
+" <many-to-many class=\"Category\" column=\"CATEGORY_ID\"/>\n"
+" </bag>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:691
-msgid "Changes made only to the inverse end of the association are <emphasis>not</emphasis> persisted. This means that Hibernate has two representations in memory for every bidirectional association, one link from A to B and another link from B to A. This is easier to understand if you think about the Java object model and how we create a many-to-many relationship in Java:"
+#. Tag: para
+#: collection_mapping.xml:691
+#, no-c-format
+msgid ""
+"Changes made only to the inverse end of the association are <emphasis>not</"
+"emphasis> persisted. This means that Hibernate has two representations in "
+"memory for every bidirectional association, one link from A to B and another "
+"link from B to A. This is easier to understand if you think about the Java "
+"object model and how we create a many-to-many relationship in Java:"
msgstr ""
- "<![CDATA[\n"
- "category.getItems().add(item); // The category now \"knows\" about the relationship\n"
- "item.getCategories().add(category); // The item now \"knows\" about the relationship\n"
- "\n"
- "session.persist(item); // The relationship won't be saved!\n"
- "session.persist(category); // The relationship will be saved]]>"
+"Los cambios hechos sólo al extremo inverso de la asociación <emphasis>no</"
+"emphasis> son persistidos. Esto significa que Hibernate tiene dos "
+"representaciones en memoria para cada asociación bidireccional, una enlaza "
+"de A a B y otra enlaza de B a A. Esto es más fácil de entender si piensas en "
+"el modelo de objetos de Java y cómo creamos una relación muchos-a-muchos en "
+"Java:"
-#: index.docbook:699
+#. Tag: programlisting
+#: collection_mapping.xml:699
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "category.getItems().add(item); // The category now \"knows\" about the relationship\n"
- "item.getCategories().add(category); // The item now \"knows\" about the relationship\n"
- "\n"
- "session.persist(item); // The relationship won't be saved!\n"
- "session.persist(category); // The relationship will be saved]]>"
-msgstr "El lado no-inverso se usa para salvar la representación en memoria a la base de datos."
+"<![CDATA[\n"
+"category.getItems().add(item); // The category now \"knows\" about "
+"the relationship\n"
+"item.getCategories().add(category); // The item now \"knows\" about the "
+"relationship\n"
+"\n"
+"session.persist(item); // The relationship won't be "
+"saved!\n"
+"session.persist(category); // The relationship will be saved]]>"
+msgstr ""
-#: index.docbook:701
-msgid "The non-inverse side is used to save the in-memory representation to the database."
-msgstr "Puedes definir una asociación bidireccional uno-a-muchos mapeando una asociación uno-a-muchos a la misma columna (o columnas) de tabla como una asociación muchos-a-uno y declarando el extremo multivaluado <literal>inverse=\"true\"</literal>."
+#. Tag: para
+#: collection_mapping.xml:701
+#, no-c-format
+msgid ""
+"The non-inverse side is used to save the in-memory representation to the "
+"database."
+msgstr ""
+"El lado no-inverso se usa para salvar la representación en memoria a la base "
+"de datos."
-#: index.docbook:705
-msgid "You may define a bidirectional one-to-many association by mapping a one-to-many association to the same table column(s) as a many-to-one association and declaring the many-valued end <literal>inverse=\"true\"</literal>."
+#. Tag: para
+#: collection_mapping.xml:705
+#, no-c-format
+msgid ""
+"You may define a bidirectional one-to-many association by mapping a one-to-"
+"many association to the same table column(s) as a many-to-one association "
+"and declaring the many-valued end <literal>inverse=\"true\"</literal>."
msgstr ""
- "<![CDATA[<class name=\"Parent\">\n"
- " <id name=\"id\" column=\"parent_id\"/>\n"
- " ....\n"
- " <set name=\"children\" inverse=\"true\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"eg.Child\">\n"
- " <id name=\"id\" column=\"id\"/>\n"
- " ....\n"
- " <many-to-one name=\"parent\" \n"
- " class=\"Parent\" \n"
- " column=\"parent_id\"\n"
- " not-null=\"true\"/>\n"
- "</class>]]>"
+"Puedes definir una asociación bidireccional uno-a-muchos mapeando una "
+"asociación uno-a-muchos a la misma columna (o columnas) de tabla como una "
+"asociación muchos-a-uno y declarando el extremo multivaluado "
+"<literal>inverse=\"true\"</literal>."
-#: index.docbook:711
+#. Tag: programlisting
+#: collection_mapping.xml:711
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Parent\">\n"
- " <id name=\"id\" column=\"parent_id\"/>\n"
- " ....\n"
- " <set name=\"children\" inverse=\"true\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Child\">\n"
- " <id name=\"id\" column=\"child_id\"/>\n"
- " ....\n"
- " <many-to-one name=\"parent\" \n"
- " class=\"Parent\" \n"
- " column=\"parent_id\"\n"
- " not-null=\"true\"/>\n"
- "</class>]]>"
-msgstr "Mapear un extremo de una asociación con <literal>inverse=\"true\"</literal> no afecta la operación de cascadas; éstos son conceptos ortogonales!"
+"<![CDATA[<class name=\"Parent\">\n"
+" <id name=\"id\" column=\"parent_id\"/>\n"
+" ....\n"
+" <set name=\"children\" inverse=\"true\">\n"
+" <key column=\"parent_id\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+" </set>\n"
+"</class>\n"
+"\n"
+"<class name=\"Child\">\n"
+" <id name=\"id\" column=\"child_id\"/>\n"
+" ....\n"
+" <many-to-one name=\"parent\" \n"
+" class=\"Parent\" \n"
+" column=\"parent_id\"\n"
+" not-null=\"true\"/>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:713
-msgid "Mapping one end of an association with <literal>inverse=\"true\"</literal> doesn't affect the operation of cascades, these are orthogonal concepts!"
-msgstr "Asociaciones bidireccionales con colecciones indexadas"
+#. Tag: para
+#: collection_mapping.xml:713
+#, no-c-format
+msgid ""
+"Mapping one end of an association with <literal>inverse=\"true\"</literal> "
+"doesn't affect the operation of cascades, these are orthogonal concepts!"
+msgstr ""
+"Mapear un extremo de una asociación con <literal>inverse=\"true\"</literal> "
+"no afecta la operación de cascadas; éstos son conceptos ortogonales!"
-#: index.docbook:721
+#. Tag: title
+#: collection_mapping.xml:721
+#, no-c-format
msgid "Bidirectional associations with indexed collections"
-msgstr "Requiere especial consideración una asociación bidireccional donde un extremo esté representado como una <literal><list></literal> o <literal><map></literal>. Si hay una propiedad de la clase hija que mapee a la columna índice, no hay problema, podemos seguir usando <literal>inverse=\"true\"</literal> en el mapeo de la colección:"
+msgstr "Asociaciones bidireccionales con colecciones indexadas"
-#: index.docbook:722
-msgid "A bidirectional association where one end is represented as a <literal><list></literal> or <literal><map></literal> requires special consideration. If there is a property of the child class which maps to the index column, no problem, we can continue using <literal>inverse=\"true\"</literal> on the collection mapping:"
+#. Tag: para
+#: collection_mapping.xml:722
+#, no-c-format
+msgid ""
+"A bidirectional association where one end is represented as a <literal><"
+"list></literal> or <literal><map></literal> requires special "
+"consideration. If there is a property of the child class which maps to the "
+"index column, no problem, we can continue using <literal>inverse=\"true\"</"
+"literal> on the collection mapping:"
msgstr ""
- "<![CDATA[<class name=\"Parent\">\n"
- " <id name=\"id\" column=\"parent_id\"/>\n"
- " ....\n"
- " <map name=\"children\" inverse=\"true\">\n"
- " <key column=\"parent_id\"/>\n"
- " <map-key column=\"name\" \n"
- " type=\"string\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </map>\n"
- "</class>\n"
- "\n"
- "<class name=\"Child\">\n"
- " <id name=\"id\" column=\"child_id\"/>\n"
- " ....\n"
- " <property name=\"name\" \n"
- " not-null=\"true\"/>\n"
- " <many-to-one name=\"parent\" \n"
- " class=\"Parent\" \n"
- " column=\"parent_id\"\n"
- " not-null=\"true\"/>\n"
- "</class>]]>"
+"Requiere especial consideración una asociación bidireccional donde un "
+"extremo esté representado como una <literal><list></literal> o "
+"<literal><map></literal>. Si hay una propiedad de la clase hija que "
+"mapee a la columna índice, no hay problema, podemos seguir usando "
+"<literal>inverse=\"true\"</literal> en el mapeo de la colección:"
-#: index.docbook:729
+#. Tag: programlisting
+#: collection_mapping.xml:729
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Parent\">\n"
- " <id name=\"id\" column=\"parent_id\"/>\n"
- " ....\n"
- " <map name=\"children\" inverse=\"true\">\n"
- " <key column=\"parent_id\"/>\n"
- " <map-key column=\"name\" \n"
- " type=\"string\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </map>\n"
- "</class>\n"
- "\n"
- "<class name=\"Child\">\n"
- " <id name=\"id\" column=\"child_id\"/>\n"
- " ....\n"
- " <property name=\"name\" \n"
- " not-null=\"true\"/>\n"
- " <many-to-one name=\"parent\" \n"
- " class=\"Parent\" \n"
- " column=\"parent_id\"\n"
- " not-null=\"true\"/>\n"
- "</class>]]>"
-msgstr "Pero, si no existe tal proiedad en la clase hija, no podemos pensar en la asociación como verdaderamente bidireccional (hay información en un extremo de la asociación que no está disponible en el otro extremo). En este caso, no podemos mapear la colección con <literal>inverse=\"true\"</literal>. En cambio, podríamos usar el siguiente mapeo:"
+"<![CDATA[<class name=\"Parent\">\n"
+" <id name=\"id\" column=\"parent_id\"/>\n"
+" ....\n"
+" <map name=\"children\" inverse=\"true\">\n"
+" <key column=\"parent_id\"/>\n"
+" <map-key column=\"name\" \n"
+" type=\"string\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+" </map>\n"
+"</class>\n"
+"\n"
+"<class name=\"Child\">\n"
+" <id name=\"id\" column=\"child_id\"/>\n"
+" ....\n"
+" <property name=\"name\" \n"
+" not-null=\"true\"/>\n"
+" <many-to-one name=\"parent\" \n"
+" class=\"Parent\" \n"
+" column=\"parent_id\"\n"
+" not-null=\"true\"/>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:731
-msgid "But, if there is no such property on the child class, we can't think of the association as truly bidirectional (there is information available at one end of the association that is not available at the other end). In this case, we can't map the collection <literal>inverse=\"true\"</literal>. Instead, we could use the following mapping:"
+#. Tag: para
+#: collection_mapping.xml:731
+#, no-c-format
+msgid ""
+"But, if there is no such property on the child class, we can't think of the "
+"association as truly bidirectional (there is information available at one "
+"end of the association that is not available at the other end). In this "
+"case, we can't map the collection <literal>inverse=\"true\"</literal>. "
+"Instead, we could use the following mapping:"
msgstr ""
- "<![CDATA[<class name=\"Parent\">\n"
- " <id name=\"id\" column=\"parent_id\"/>\n"
- " ....\n"
- " <map name=\"children\">\n"
- " <key column=\"parent_id\"\n"
- " not-null=\"true\"/>\n"
- " <map-key column=\"name\" \n"
- " type=\"string\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </map>\n"
- "</class>\n"
- "\n"
- "<class name=\"Child\">\n"
- " <id name=\"id\" column=\"child_id\"/>\n"
- " ....\n"
- " <many-to-one name=\"parent\" \n"
- " class=\"Parent\" \n"
- " column=\"parent_id\"\n"
- " insert=\"false\"\n"
- " update=\"false\"\n"
- " not-null=\"true\"/>\n"
- "</class>]]>"
+"Pero, si no existe tal proiedad en la clase hija, no podemos pensar en la "
+"asociación como verdaderamente bidireccional (hay información en un extremo "
+"de la asociación que no está disponible en el otro extremo). En este caso, "
+"no podemos mapear la colección con <literal>inverse=\"true\"</literal>. En "
+"cambio, podríamos usar el siguiente mapeo:"
-#: index.docbook:738
+#. Tag: programlisting
+#: collection_mapping.xml:738
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Parent\">\n"
- " <id name=\"id\" column=\"parent_id\"/>\n"
- " ....\n"
- " <map name=\"children\">\n"
- " <key column=\"parent_id\"\n"
- " not-null=\"true\"/>\n"
- " <map-key column=\"name\" \n"
- " type=\"string\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </map>\n"
- "</class>\n"
- "\n"
- "<class name=\"Child\">\n"
- " <id name=\"id\" column=\"child_id\"/>\n"
- " ....\n"
- " <many-to-one name=\"parent\" \n"
- " class=\"Parent\" \n"
- " column=\"parent_id\"\n"
- " insert=\"false\"\n"
- " update=\"false\"\n"
- " not-null=\"true\"/>\n"
- "</class>]]>"
-msgstr "Nota que, en este mapeo, el extremo de la asociación valuado en colección es responsable de las actualizaciones a la clave foránea."
+"<![CDATA[<class name=\"Parent\">\n"
+" <id name=\"id\" column=\"parent_id\"/>\n"
+" ....\n"
+" <map name=\"children\">\n"
+" <key column=\"parent_id\"\n"
+" not-null=\"true\"/>\n"
+" <map-key column=\"name\" \n"
+" type=\"string\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+" </map>\n"
+"</class>\n"
+"\n"
+"<class name=\"Child\">\n"
+" <id name=\"id\" column=\"child_id\"/>\n"
+" ....\n"
+" <many-to-one name=\"parent\" \n"
+" class=\"Parent\" \n"
+" column=\"parent_id\"\n"
+" insert=\"false\"\n"
+" update=\"false\"\n"
+" not-null=\"true\"/>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:740
-msgid "Note that in this mapping, the collection-valued end of the association is responsible for updates to the foreign key. TODO: Does this really result in some unnecessary update statements?"
-msgstr "Asociaciones ternarias"
+#. Tag: para
+#: collection_mapping.xml:740
+#, no-c-format
+msgid ""
+"Note that in this mapping, the collection-valued end of the association is "
+"responsible for updates to the foreign key. TODO: Does this really result in "
+"some unnecessary update statements?"
+msgstr ""
+"Nota que, en este mapeo, el extremo de la asociación valuado en colección es "
+"responsable de las actualizaciones a la clave foránea."
-#: index.docbook:748
+#. Tag: title
+#: collection_mapping.xml:748
+#, no-c-format
msgid "Ternary associations"
-msgstr "Hay tres enfoques posibles para mapear una asociación ternaria. Una es usar un <literal>Map</literal> con una asociación como su índice:"
+msgstr "Asociaciones ternarias"
-#: index.docbook:750
-msgid "There are three possible approaches to mapping a ternary association. One is to use a <literal>Map</literal> with an association as its index:"
+#. Tag: para
+#: collection_mapping.xml:750
+#, no-c-format
+msgid ""
+"There are three possible approaches to mapping a ternary association. One is "
+"to use a <literal>Map</literal> with an association as its index:"
msgstr ""
- "<![CDATA[<map name=\"contracts\">\n"
- " <key column=\"employer_id\" not-null=\"true\"/>\n"
- " <map-key-many-to-many column=\"employee_id\" class=\"Employee\"/>\n"
- " <one-to-many class=\"Contract\"/>\n"
- "</map>]]>"
+"Hay tres enfoques posibles para mapear una asociación ternaria. Una es usar "
+"un <literal>Map</literal> con una asociación como su índice:"
-#: index.docbook:755
+#. Tag: programlisting
+#: collection_mapping.xml:755
+#, no-c-format
msgid ""
- "<![CDATA[<map name=\"contracts\">\n"
- " <key column=\"employer_id\" not-null=\"true\"/>\n"
- " <map-key-many-to-many column=\"employee_id\" class=\"Employee\"/>\n"
- " <one-to-many class=\"Contract\"/>\n"
- "</map>]]>"
+"<![CDATA[<map name=\"contracts\">\n"
+" <key column=\"employer_id\" not-null=\"true\"/>\n"
+" <map-key-many-to-many column=\"employee_id\" class=\"Employee\"/>\n"
+" <one-to-many class=\"Contract\"/>\n"
+"</map>]]>"
msgstr ""
- "<![CDATA[<map name=\"connections\">\n"
- " <key column=\"incoming_node_id\"/>\n"
- " <map-key-many-to-many column=\"outgoing_node_id\" class=\"Node\"/>\n"
- " <many-to-many column=\"connection_id\" class=\"Connection\"/>\n"
- "</map>]]>"
-#: index.docbook:757
+#. Tag: programlisting
+#: collection_mapping.xml:757
+#, no-c-format
msgid ""
- "<![CDATA[<map name=\"connections\">\n"
- " <key column=\"incoming_node_id\"/>\n"
- " <map-key-many-to-many column=\"outgoing_node_id\" class=\"Node\"/>\n"
- " <many-to-many column=\"connection_id\" class=\"Connection\"/>\n"
- "</map>]]>"
-msgstr "Un segundo enfoque es simplemente remodelar la asociación como una clase de entidad. Este es el enfoque que usamos más comunmente."
+"<![CDATA[<map name=\"connections\">\n"
+" <key column=\"incoming_node_id\"/>\n"
+" <map-key-many-to-many column=\"outgoing_node_id\" class=\"Node\"/>\n"
+" <many-to-many column=\"connection_id\" class=\"Connection\"/>\n"
+"</map>]]>"
+msgstr ""
-#: index.docbook:759
-msgid "A second approach is to simply remodel the association as an entity class. This is the approach we use most commonly."
-msgstr "Una alternativa final es usar elementos compuestos, que discutiremos más adelante."
+#. Tag: para
+#: collection_mapping.xml:759
+#, no-c-format
+msgid ""
+"A second approach is to simply remodel the association as an entity class. "
+"This is the approach we use most commonly."
+msgstr ""
+"Un segundo enfoque es simplemente remodelar la asociación como una clase de "
+"entidad. Este es el enfoque que usamos más comunmente."
-#: index.docbook:764
-msgid "A final alternative is to use composite elements, which we will discuss later."
-msgstr "Usando un <idbag>"
+#. Tag: para
+#: collection_mapping.xml:764
+#, no-c-format
+msgid ""
+"A final alternative is to use composite elements, which we will discuss "
+"later."
+msgstr ""
+"Una alternativa final es usar elementos compuestos, que discutiremos más "
+"adelante."
-#: index.docbook:771
+#. Tag: literal
+#: collection_mapping.xml:771
+#, no-c-format
msgid "Using an <idbag>"
-msgstr "Si has adoptado completamente nuestra visión de que las claves compuestas son una cosa mala y que las entidades deben tener identificadores sitéticos (claves delegadas), entonces podrías encontrar un poco raro que todas las asociaciones muchos a muchos y las colecciones de valores que hemos mostrado hasta ahora mapeen a tablas con claves compuestas! Ahora, este punto es discutible; una tabla de pura asociación no parece beneficiarse demasiado de una clave delegada (aunque sí <emphasis>podría</emphasis> una colección de valores compuestos). Sin embargo, Hibernate provee una funcionalidad que te permite mapear asociaciones muchos a muchos y colecciones de valores a una tabla con una clave delegada."
+msgstr "Usando un <idbag>"
-#: index.docbook:773
-msgid "If you've fully embraced our view that composite keys are a bad thing and that entities should have synthetic identifiers (surrogate keys), then you might find it a bit odd that the many to many associations and collections of values that we've shown so far all map to tables with composite keys! Now, this point is quite arguable; a pure association table doesn't seem to benefit much from a surrogate key (though a collection of composite values <emphasis>might</emphasis>). Nevertheless, Hibernate provides a feature that allows you to map many to many associations and collections of values to a table with a surrogate key."
-msgstr "El elemento <literal><idbag></literal> te permite mapear una <literal>List</literal> (o <literal>Collection</literal>) con semántica de bag."
+#. Tag: para
+#: collection_mapping.xml:773
+#, no-c-format
+msgid ""
+"If you've fully embraced our view that composite keys are a bad thing and "
+"that entities should have synthetic identifiers (surrogate keys), then you "
+"might find it a bit odd that the many to many associations and collections "
+"of values that we've shown so far all map to tables with composite keys! "
+"Now, this point is quite arguable; a pure association table doesn't seem to "
+"benefit much from a surrogate key (though a collection of composite values "
+"<emphasis>might</emphasis>). Nevertheless, Hibernate provides a feature that "
+"allows you to map many to many associations and collections of values to a "
+"table with a surrogate key."
+msgstr ""
+"Si has adoptado completamente nuestra visión de que las claves compuestas "
+"son una cosa mala y que las entidades deben tener identificadores sitéticos "
+"(claves delegadas), entonces podrías encontrar un poco raro que todas las "
+"asociaciones muchos a muchos y las colecciones de valores que hemos mostrado "
+"hasta ahora mapeen a tablas con claves compuestas! Ahora, este punto es "
+"discutible; una tabla de pura asociación no parece beneficiarse demasiado de "
+"una clave delegada (aunque sí <emphasis>podría</emphasis> una colección de "
+"valores compuestos). Sin embargo, Hibernate provee una funcionalidad que te "
+"permite mapear asociaciones muchos a muchos y colecciones de valores a una "
+"tabla con una clave delegada."
-#: index.docbook:784
-msgid "The <literal><idbag></literal> element lets you map a <literal>List</literal> (or <literal>Collection</literal>) with bag semantics."
+#. Tag: para
+#: collection_mapping.xml:784
+#, no-c-format
+msgid ""
+"The <literal><idbag></literal> element lets you map a <literal>List</"
+"literal> (or <literal>Collection</literal>) with bag semantics."
msgstr ""
- "<![CDATA[<idbag name=\"lovers\" table=\"LOVERS\">\n"
- " <collection-id column=\"ID\" type=\"long\">\n"
- " <generator class=\"sequence\"/>\n"
- " </collection-id>\n"
- " <key column=\"PERSON1\"/>\n"
- " <many-to-many column=\"PERSON2\" class=\"Person\" fetch=\"join\"/>\n"
- "</idbag>]]>"
+"El elemento <literal><idbag></literal> te permite mapear una "
+"<literal>List</literal> (o <literal>Collection</literal>) con semántica de "
+"bag."
-#: index.docbook:789
+#. Tag: programlisting
+#: collection_mapping.xml:789
+#, no-c-format
msgid ""
- "<![CDATA[<idbag name=\"lovers\" table=\"LOVERS\">\n"
- " <collection-id column=\"ID\" type=\"long\">\n"
- " <generator class=\"sequence\"/>\n"
- " </collection-id>\n"
- " <key column=\"PERSON1\"/>\n"
- " <many-to-many column=\"PERSON2\" class=\"Person\" fetch=\"join\"/>\n"
- "</idbag>]]>"
-msgstr "Como puedes ver, un <literal><idbag></literal> tiene un generador de id sintético, igual que una clase de entidad! Una clave delegada diferente se asigna a cada fila de la colección. Hibernate no provee ningún mecanismo para descubrir el valor de clave delegada de una fila en particular, sin embargo."
+"<![CDATA[<idbag name=\"lovers\" table=\"LOVERS\">\n"
+" <collection-id column=\"ID\" type=\"long\">\n"
+" <generator class=\"sequence\"/>\n"
+" </collection-id>\n"
+" <key column=\"PERSON1\"/>\n"
+" <many-to-many column=\"PERSON2\" class=\"Person\" fetch=\"join\"/>\n"
+"</idbag>]]>"
+msgstr ""
-#: index.docbook:791
-msgid "As you can see, an <literal><idbag></literal> has a synthetic id generator, just like an entity class! A different surrogate key is assigned to each collection row. Hibernate does not provide any mechanism to discover the surrogate key value of a particular row, however."
-msgstr "Observa que el rendimiento de actualización de un <literal><idbag></literal> es <emphasis>mucho</emphasis> mejor que el de un <literal><bag></literal> regular! Hibernate puede localizar filas individuales eficientemente y actualizarlas o borrarlas individualmente, igual que si fuese una lista, mapa o conjunto."
+#. Tag: para
+#: collection_mapping.xml:791
+#, no-c-format
+msgid ""
+"As you can see, an <literal><idbag></literal> has a synthetic id "
+"generator, just like an entity class! A different surrogate key is assigned "
+"to each collection row. Hibernate does not provide any mechanism to discover "
+"the surrogate key value of a particular row, however."
+msgstr ""
+"Como puedes ver, un <literal><idbag></literal> tiene un generador de "
+"id sintético, igual que una clase de entidad! Una clave delegada diferente "
+"se asigna a cada fila de la colección. Hibernate no provee ningún mecanismo "
+"para descubrir el valor de clave delegada de una fila en particular, sin "
+"embargo."
-#: index.docbook:798
-msgid "Note that the update performance of an <literal><idbag></literal> is <emphasis>much</emphasis> better than a regular <literal><bag></literal>! Hibernate can locate individual rows efficiently and update or delete them individually, just like a list, map or set."
-msgstr "En la implementación actual, la estrategia de generación de identificador <literal>native</literal> no está soportada para identificadores de colecciones <literal><idbag></literal>."
+#. Tag: para
+#: collection_mapping.xml:798
+#, no-c-format
+msgid ""
+"Note that the update performance of an <literal><idbag></literal> is "
+"<emphasis>much</emphasis> better than a regular <literal><bag></"
+"literal>! Hibernate can locate individual rows efficiently and update or "
+"delete them individually, just like a list, map or set."
+msgstr ""
+"Observa que el rendimiento de actualización de un <literal><idbag></"
+"literal> es <emphasis>mucho</emphasis> mejor que el de un <literal><"
+"bag></literal> regular! Hibernate puede localizar filas individuales "
+"eficientemente y actualizarlas o borrarlas individualmente, igual que si "
+"fuese una lista, mapa o conjunto."
-#: index.docbook:805
-msgid "In the current implementation, the <literal>native</literal> identifier generation strategy is not supported for <literal><idbag></literal> collection identifiers."
-msgstr "Ejemplos de colección"
+#. Tag: para
+#: collection_mapping.xml:805
+#, no-c-format
+msgid ""
+"In the current implementation, the <literal>native</literal> identifier "
+"generation strategy is not supported for <literal><idbag></literal> "
+"collection identifiers."
+msgstr ""
+"En la implementación actual, la estrategia de generación de identificador "
+"<literal>native</literal> no está soportada para identificadores de "
+"colecciones <literal><idbag></literal>."
-#: index.docbook:829
+#. Tag: title
+#: collection_mapping.xml:829
+#, no-c-format
msgid "Collection examples"
-msgstr "Las secciones previas son bastantes confusas. Así que miremos un ejemplo. Esta clase:"
+msgstr "Ejemplos de colección"
-#: index.docbook:831
-msgid "The previous sections are pretty confusing. So lets look at an example. This class:"
+#. Tag: para
+#: collection_mapping.xml:831
+#, no-c-format
+msgid ""
+"The previous sections are pretty confusing. So lets look at an example. This "
+"class:"
msgstr ""
- "<![CDATA[package eg;\n"
- "import java.util.Set;\n"
- "\n"
- "public class Parent {\n"
- " private long id;\n"
- " private Set children;\n"
- "\n"
- " public long getId() { return id; }\n"
- " private void setId(long id) { this.id=id; }\n"
- "\n"
- " private Set getChildren() { return children; }\n"
- " private void setChildren(Set children) { this.children=children; }\n"
- "\n"
- " ....\n"
- " ....\n"
- "}]]>"
+"Las secciones previas son bastantes confusas. Así que miremos un ejemplo. "
+"Esta clase:"
-#: index.docbook:836
+#. Tag: programlisting
+#: collection_mapping.xml:836
+#, no-c-format
msgid ""
- "<![CDATA[package eg;\n"
- "import java.util.Set;\n"
- "\n"
- "public class Parent {\n"
- " private long id;\n"
- " private Set children;\n"
- "\n"
- " public long getId() { return id; }\n"
- " private void setId(long id) { this.id=id; }\n"
- "\n"
- " private Set getChildren() { return children; }\n"
- " private void setChildren(Set children) { this.children=children; }\n"
- "\n"
- " ....\n"
- " ....\n"
- "}]]>"
-msgstr "tiene una colección de instancias de <literal>Child</literal>. Si cada hijo tiene como mucho un padre, el mapeo más natural es una asociación uno-a-muchos:"
+"<![CDATA[package eg;\n"
+"import java.util.Set;\n"
+"\n"
+"public class Parent {\n"
+" private long id;\n"
+" private Set children;\n"
+"\n"
+" public long getId() { return id; }\n"
+" private void setId(long id) { this.id=id; }\n"
+"\n"
+" private Set getChildren() { return children; }\n"
+" private void setChildren(Set children) { this.children=children; }\n"
+"\n"
+" ....\n"
+" ....\n"
+"}]]>"
+msgstr ""
-#: index.docbook:838
-msgid "has a collection of <literal>Child</literal> instances. If each child has at most one parent, the most natural mapping is a one-to-many association:"
+#. Tag: para
+#: collection_mapping.xml:838
+#, no-c-format
+msgid ""
+"has a collection of <literal>Child</literal> instances. If each child has at "
+"most one parent, the most natural mapping is a one-to-many association:"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Parent\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <set name=\"children\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Child\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"tiene una colección de instancias de <literal>Child</literal>. Si cada hijo "
+"tiene como mucho un padre, el mapeo más natural es una asociación uno-a-"
+"muchos:"
-#: index.docbook:844
+#. Tag: programlisting
+#: collection_mapping.xml:844
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Parent\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <set name=\"children\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Child\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"Parent\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <set name=\"children\">\n"
+" <key column=\"parent_id\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+" </set>\n"
+" </class>\n"
+"\n"
+" <class name=\"Child\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <property name=\"name\"/>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
+msgstr ""
+
+#. Tag: para
+#: collection_mapping.xml:846
+#, no-c-format
+msgid "This maps to the following table definitions:"
msgstr "Esto mapea a las siguientes definiciones de tablas:"
-#: index.docbook:846
-msgid "This maps to the following table definitions:"
+#. Tag: programlisting
+#: collection_mapping.xml:850
+#, no-c-format
+msgid ""
+"<![CDATA[create table parent ( id bigint not null primary key )\n"
+"create table child ( id bigint not null primary key, name varchar(255), "
+"parent_id bigint )\n"
+"alter table child add constraint childfk0 (parent_id) references parent]]>"
msgstr ""
- "<![CDATA[create table parent ( id bigint not null primary key )\n"
- "create table child ( id bigint not null primary key, name varchar(255), parent_id bigint )\n"
- "alter table child add constraint childfk0 (parent_id) references parent]]>"
-#: index.docbook:850
+#. Tag: para
+#: collection_mapping.xml:852
+#, no-c-format
msgid ""
- "<![CDATA[create table parent ( id bigint not null primary key )\n"
- "create table child ( id bigint not null primary key, name varchar(255), parent_id bigint )\n"
- "alter table child add constraint childfk0 (parent_id) references parent]]>"
-msgstr "Si el padre es <emphasis>requerido</emphasis>, usa una asociación bidireccional uno-a-muchos:"
-
-#: index.docbook:852
-msgid "If the parent is <emphasis>required</emphasis>, use a bidirectional one-to-many association:"
+"If the parent is <emphasis>required</emphasis>, use a bidirectional one-to-"
+"many association:"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Parent\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <set name=\"children\" inverse=\"true\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Child\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " <many-to-one name=\"parent\" class=\"Parent\" column=\"parent_id\" not-null=\"true\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"Si el padre es <emphasis>requerido</emphasis>, usa una asociación "
+"bidireccional uno-a-muchos:"
-#: index.docbook:857
+#. Tag: programlisting
+#: collection_mapping.xml:857
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Parent\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <set name=\"children\" inverse=\"true\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Child\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " <many-to-one name=\"parent\" class=\"Parent\" column=\"parent_id\" not-null=\"true\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-msgstr "Observa la restricción <literal>NOT NULL</literal>:"
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"Parent\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <set name=\"children\" inverse=\"true\">\n"
+" <key column=\"parent_id\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+" </set>\n"
+" </class>\n"
+"\n"
+" <class name=\"Child\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <property name=\"name\"/>\n"
+" <many-to-one name=\"parent\" class=\"Parent\" column=\"parent_id\" "
+"not-null=\"true\"/>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
+msgstr ""
-#: index.docbook:859
+#. Tag: para
+#: collection_mapping.xml:859
+#, no-c-format
msgid "Notice the <literal>NOT NULL</literal> constraint:"
+msgstr "Observa la restricción <literal>NOT NULL</literal>:"
+
+#. Tag: programlisting
+#: collection_mapping.xml:863
+#, no-c-format
+msgid ""
+"<![CDATA[create table parent ( id bigint not null primary key )\n"
+"create table child ( id bigint not null\n"
+" primary key,\n"
+" name varchar(255),\n"
+" parent_id bigint not null )\n"
+"alter table child add constraint childfk0 (parent_id) references parent]]>"
msgstr ""
- "<![CDATA[create table parent ( id bigint not null primary key )\n"
- "create table child ( id bigint not null\n"
- " primary key,\n"
- " name varchar(255),\n"
- " parent_id bigint not null )\n"
- "alter table child add constraint childfk0 (parent_id) references parent]]>"
-#: index.docbook:863
+#. Tag: para
+#: collection_mapping.xml:865
+#, no-c-format
msgid ""
- "<![CDATA[create table parent ( id bigint not null primary key )\n"
- "create table child ( id bigint not null\n"
- " primary key,\n"
- " name varchar(255),\n"
- " parent_id bigint not null )\n"
- "alter table child add constraint childfk0 (parent_id) references parent]]>"
-msgstr "Alternativamente, si absolutamente insistes que esta asociación debe ser unidireccional, puedes declarar la restricción <literal>NOT NULL</literal> en el mapeo de <literal><key></literal>:"
+"Alternatively, if you absolutely insist that this association should be "
+"unidirectional, you can declare the <literal>NOT NULL</literal> constraint "
+"on the <literal><key></literal> mapping:"
+msgstr ""
+"Alternativamente, si absolutamente insistes que esta asociación debe ser "
+"unidireccional, puedes declarar la restricción <literal>NOT NULL</literal> "
+"en el mapeo de <literal><key></literal>:"
-#: index.docbook:865
-msgid "Alternatively, if you absolutely insist that this association should be unidirectional, you can declare the <literal>NOT NULL</literal> constraint on the <literal><key></literal> mapping:"
+#. Tag: programlisting
+#: collection_mapping.xml:871
+#, no-c-format
+msgid ""
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"Parent\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <set name=\"children\">\n"
+" <key column=\"parent_id\" not-null=\"true\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+" </set>\n"
+" </class>\n"
+"\n"
+" <class name=\"Child\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <property name=\"name\"/>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Parent\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <set name=\"children\">\n"
- " <key column=\"parent_id\" not-null=\"true\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Child\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:871
+#. Tag: para
+#: collection_mapping.xml:873
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Parent\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <set name=\"children\">\n"
- " <key column=\"parent_id\" not-null=\"true\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Child\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-msgstr "En la otra mano, si un hijo pudiera tener múltiples padres, sería apropiada una asociación muchos-a-muchos:"
+"On the other hand, if a child might have multiple parents, a many-to-many "
+"association is appropriate:"
+msgstr ""
+"En la otra mano, si un hijo pudiera tener múltiples padres, sería apropiada "
+"una asociación muchos-a-muchos:"
-#: index.docbook:873
-msgid "On the other hand, if a child might have multiple parents, a many-to-many association is appropriate:"
+#. Tag: programlisting
+#: collection_mapping.xml:878
+#, no-c-format
+msgid ""
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"Parent\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <set name=\"children\" table=\"childset\">\n"
+" <key column=\"parent_id\"/>\n"
+" <many-to-many class=\"Child\" column=\"child_id\"/>\n"
+" </set>\n"
+" </class>\n"
+"\n"
+" <class name=\"Child\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <property name=\"name\"/>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Parent\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <set name=\"children\" table=\"childset\">\n"
- " <key column=\"parent_id\"/>\n"
- " <many-to-many class=\"Child\" column=\"child_id\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Child\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:878
-msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Parent\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <set name=\"children\" table=\"childset\">\n"
- " <key column=\"parent_id\"/>\n"
- " <many-to-many class=\"Child\" column=\"child_id\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Child\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+#. Tag: para
+#: collection_mapping.xml:880
+#, no-c-format
+msgid "Table definitions:"
msgstr "Definiciones de tabla:"
-#: index.docbook:880
-msgid "Table definitions:"
+#. Tag: programlisting
+#: collection_mapping.xml:884
+#, no-c-format
+msgid ""
+"<![CDATA[create table parent ( id bigint not null primary key )\n"
+"create table child ( id bigint not null primary key, name varchar(255) )\n"
+"create table childset ( parent_id bigint not null,\n"
+" child_id bigint not null,\n"
+" primary key ( parent_id, child_id ) )\n"
+"alter table childset add constraint childsetfk0 (parent_id) references "
+"parent\n"
+"alter table childset add constraint childsetfk1 (child_id) references child]]"
+">"
msgstr ""
- "<![CDATA[create table parent ( id bigint not null primary key )\n"
- "create table child ( id bigint not null primary key, name varchar(255) )\n"
- "create table childset ( parent_id bigint not null,\n"
- " child_id bigint not null,\n"
- " primary key ( parent_id, child_id ) )\n"
- "alter table childset add constraint childsetfk0 (parent_id) references parent\n"
- "alter table childset add constraint childsetfk1 (child_id) references child]]>"
-#: index.docbook:884
+#. Tag: para
+#: collection_mapping.xml:886
+#, no-c-format
msgid ""
- "<![CDATA[create table parent ( id bigint not null primary key )\n"
- "create table child ( id bigint not null primary key, name varchar(255) )\n"
- "create table childset ( parent_id bigint not null,\n"
- " child_id bigint not null,\n"
- " primary key ( parent_id, child_id ) )\n"
- "alter table childset add constraint childsetfk0 (parent_id) references parent\n"
- "alter table childset add constraint childsetfk1 (child_id) references child]]>"
-msgstr "Para más ejemplos y un paseo completo a través del mapeo de relaciones padre/hijo, ver <xref linkend=\"example-parentchild\"/>."
+"For more examples and a complete walk-through a parent/child relationship "
+"mapping, see <xref linkend=\"example-parentchild\"/>."
+msgstr ""
+"Para más ejemplos y un paseo completo a través del mapeo de relaciones padre/"
+"hijo, ver <xref linkend=\"example-parentchild\"/>."
-#: index.docbook:886
-msgid "For more examples and a complete walk-through a parent/child relationship mapping, see <xref linkend=\"example-parentchild\"/>."
-msgstr "Son posibles mapeos de asociación aún más complejos. Catalogaremos todas las posibilidades en el próximo capítulo."
-
-#: index.docbook:891
-msgid "Even more exotic association mappings are possible, we will catalog all possibilities in the next chapter."
+#. Tag: para
+#: collection_mapping.xml:891
+#, no-c-format
+msgid ""
+"Even more exotic association mappings are possible, we will catalog all "
+"possibilities in the next chapter."
msgstr ""
+"Son posibles mapeos de asociación aún más complejos. Catalogaremos todas las "
+"posibilidades en el próximo capítulo."
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+#~ msgid ""
+#~ "<literal>column_name</literal> (required): The name of the column holding "
+#~ "the collection index values."
+#~ msgstr ""
+#~ "<literal>column_name</literal> (requerido): El nombre de la columna que "
+#~ "tiene los valores índice de la colección."
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+#~ msgid ""
+#~ "<literal>base</literal> (optional, defaults to <literal>0</literal>): The "
+#~ "value of the index column that corresponds to the first element of the "
+#~ "list or array."
+#~ msgstr ""
+#~ "<literal>base</literal> (opcional, por defecto a <literal>0</literal>): "
+#~ "El valor de la columna índice que corresponde al primer elemento de la "
+#~ "lista o array."
+#~ msgid ""
+#~ "<literal>column</literal> (optional): The name of the column holding the "
+#~ "collection index values."
+#~ msgstr ""
+#~ "<literal>column</literal> (opcional): El nombre de la columna que tiene "
+#~ "los valores índice de la colección."
+
+#~ msgid ""
+#~ "<literal>formula</literal> (optional): A SQL formula used to evaluate the "
+#~ "key of the map."
+#~ msgstr ""
+#~ "<literal>formula</literal> (opcional): Una fórmula SQL usada para evaluar "
+#~ "la clave del mapa."
+
+#~ msgid "<literal>type</literal> (reguired): The type of the map keys."
+#~ msgstr ""
+#~ "<literal>type</literal> (requerido): el tipo de las claves del mapa."
+
+#~ msgid ""
+#~ "<literal>column</literal> (optional): The name of the foreign key column "
+#~ "for the collection index values."
+#~ msgstr ""
+#~ "<literal>column</literal> (opcional): El nombre de la columna clave "
+#~ "foránea para los valores índice de la colección."
+
+#~ msgid ""
+#~ "<literal>formula</literal> (optional): A SQL formula used to evaluate the "
+#~ "foreign key of the map key."
+#~ msgstr ""
+#~ "<literal>formula</literal> (opcional): Una fórmula SQL usada para evaluar "
+#~ "la clave foránea de la clave del mapa."
+
+#~ msgid ""
+#~ "<literal>class</literal> (required): The entity class used as the map key."
+#~ msgstr ""
+#~ "<literal>class</literal> (requerido): La clase de entidad usada como "
+#~ "clave del mapa."
+
+#~ msgid ""
+#~ "<literal>column</literal> (optional): The name of the column holding the "
+#~ "collection element values."
+#~ msgstr ""
+#~ "<literal>column</literal> (opcional): El nombre de la columna que tiene "
+#~ "los valores de los elementos de la colección."
+
+#~ msgid ""
+#~ "<literal>formula</literal> (optional): An SQL formula used to evaluate "
+#~ "the element."
+#~ msgstr ""
+#~ "<literal>formula</literal> (opcional): Una fórmula SQL usada para evaluar "
+#~ "el elemento."
+
+#~ msgid ""
+#~ "<literal>type</literal> (required): The type of the collection element."
+#~ msgstr ""
+#~ "<literal>type</literal> (requerido): El tipo del elemento de colección."
+
+#~ msgid ""
+#~ "A <emphasis>many-to-many association</emphasis> is specified using the "
+#~ "<literal><many-to-many></literal> element."
+#~ msgstr ""
+#~ "Una <emphasis>asociación muchos-a-muchos</emphasis> se especifica usando "
+#~ "el elemento <literal><many-to-many></literal>."
+
+#~ msgid ""
+#~ "<literal>column</literal> (optional): The name of the element foreign key "
+#~ "column."
+#~ msgstr ""
+#~ "<literal>column</literal> (opcional): El nombre de la columna de clave "
+#~ "foránea del elemento."
+
+#~ msgid ""
+#~ "<literal>formula</literal> (optional): An SQL formula used to evaluate "
+#~ "the element foreign key value."
+#~ msgstr ""
+#~ "<literal>formula</literal> (opcional): Una fórmula SQL opcional usada "
+#~ "para evaluar el valor de clave foránea del elemento."
+
+#~ msgid ""
+#~ "<literal>fetch</literal> (optional - defaults to <literal>join</"
+#~ "literal>): enables outer-join or sequential select fetching for this "
+#~ "association. This is a special case; for full eager fetching (in a single "
+#~ "<literal>SELECT</literal>) of an entity and its many-to-many "
+#~ "relationships to other entities, you would enable <literal>join</literal> "
+#~ "fetching not only of the collection itself, but also with this attribute "
+#~ "on the <literal><many-to-many></literal> nested element."
+#~ msgstr ""
+#~ "<literal>fetch</literal> (opcional - por defecto a <literal>join</"
+#~ "literal>): habilita la recuperación por unión externa o selección "
+#~ "secuencial para esta asociación. Este es un caso especial; para una "
+#~ "recuperación completamente temprana (en un solo <literal>SELECT</"
+#~ "literal>) de una entidad y sus relaciones muchos-a-muchos a otras "
+#~ "entidades, deberías habilitar la recuperación <literal>join</literal> no "
+#~ "sólo de la colección misma, sino también con este atributo en el elemento "
+#~ "anidado <literal><many-to-many></literal>."
+
+#~ msgid ""
+#~ "<literal>unique</literal> (optional): Enable the DDL generation of a "
+#~ "unique constraint for the foreign-key column. This makes the association "
+#~ "multiplicity effectively one to many."
+#~ msgstr ""
+#~ "<literal>unique</literal> (opcional): Habilita la generación DDL de una "
+#~ "restricción de unicidad para la columna clave foránea. Esto hace la "
+#~ "multiplicidad de la asociación efectivamente uno a muchos."
+
+#~ msgid ""
+#~ "<literal>not-found</literal> (optional - defaults to <literal>exception</"
+#~ "literal>): Specifies how foreign keys that reference missing rows will be "
+#~ "handled: <literal>ignore</literal> will treat a missing row as a null "
+#~ "association."
+#~ msgstr ""
+#~ "<literal>not-found</literal> (opcional - por defecto a "
+#~ "<literal>exception</literal>): Especifica cómo serán manejadas las claves "
+#~ "foráneas que referencian filas perdidas: <literal>ignore</literal> "
+#~ "tratará una fila perdida como una asociación nula."
+
+#~ msgid ""
+#~ "<literal>property-ref</literal>: (optional) The name of a property of the "
+#~ "associated class that is joined to this foreign key. If not specified, "
+#~ "the primary key of the associated class is used."
+#~ msgstr ""
+#~ "UNTRANSLATED! <literal>property-ref</literal>: (optional) The name of a "
+#~ "property of the associated class that is joined to this foreign key. If "
+#~ "not specified, the primary key of the associated class is used."
Modified: core/trunk/documentation/manual/translations/es-ES/content/component_mapping.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/component_mapping.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/component_mapping.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,532 +1,684 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: component_mapping.xml:5
+#, no-c-format
msgid "Component Mapping"
msgstr "Mapeo de Componentes"
-#: index.docbook:7
-msgid "The notion of a <emphasis>component</emphasis> is re-used in several different contexts, for different purposes, throughout Hibernate."
-msgstr "La noción de un <emphasis>componente</emphasis> es reusada en muchos contextos diferentes, para propósitos diferentes, a través de Hibernate."
+#. Tag: para
+#: component_mapping.xml:7
+#, no-c-format
+msgid ""
+"The notion of a <emphasis>component</emphasis> is re-used in several "
+"different contexts, for different purposes, throughout Hibernate."
+msgstr ""
+"La noción de un <emphasis>componente</emphasis> es reusada en muchos "
+"contextos diferentes, para propósitos diferentes, a través de Hibernate."
-#: index.docbook:13
+#. Tag: title
+#: component_mapping.xml:13
+#, no-c-format
msgid "Dependent objects"
msgstr "Objetos dependientes"
-#: index.docbook:15
-msgid "A component is a contained object that is persisted as a value type, not an entity reference. The term \"component\" refers to the object-oriented notion of composition (not to architecture-level components). For example, you might model a person like this:"
-msgstr "Un componente es un objeto contenido que es persistido como un tipo de valor, no una referencia de entidad. El término \"componente\" hace referencia a la noción orientada a objetos de composición (no a componentes a nivel de arquitectura). Por ejemplo, podrías modelar una persona como:"
+#. Tag: para
+#: component_mapping.xml:15
+#, no-c-format
+msgid ""
+"A component is a contained object that is persisted as a value type, not an "
+"entity reference. The term \"component\" refers to the object-oriented "
+"notion of composition (not to architecture-level components). For example, "
+"you might model a person like this:"
+msgstr ""
+"Un componente es un objeto contenido que es persistido como un tipo de "
+"valor, no una referencia de entidad. El término \"componente\" hace "
+"referencia a la noción orientada a objetos de composición (no a componentes "
+"a nivel de arquitectura). Por ejemplo, podrías modelar una persona como:"
-#: index.docbook:21
+#. Tag: programlisting
+#: component_mapping.xml:21
+#, no-c-format
msgid ""
- "<![CDATA[public class Person {\n"
- " private java.util.Date birthday;\n"
- " private Name name;\n"
- " private String key;\n"
- " public String getKey() {\n"
- " return key;\n"
- " }\n"
- " private void setKey(String key) {\n"
- " this.key=key;\n"
- " }\n"
- " public java.util.Date getBirthday() {\n"
- " return birthday;\n"
- " }\n"
- " public void setBirthday(java.util.Date birthday) {\n"
- " this.birthday = birthday;\n"
- " }\n"
- " public Name getName() {\n"
- " return name;\n"
- " }\n"
- " public void setName(Name name) {\n"
- " this.name = name;\n"
- " }\n"
- " ......\n"
- " ......\n"
- "}]]>"
+"<![CDATA[public class Person {\n"
+" private java.util.Date birthday;\n"
+" private Name name;\n"
+" private String key;\n"
+" public String getKey() {\n"
+" return key;\n"
+" }\n"
+" private void setKey(String key) {\n"
+" this.key=key;\n"
+" }\n"
+" public java.util.Date getBirthday() {\n"
+" return birthday;\n"
+" }\n"
+" public void setBirthday(java.util.Date birthday) {\n"
+" this.birthday = birthday;\n"
+" }\n"
+" public Name getName() {\n"
+" return name;\n"
+" }\n"
+" public void setName(Name name) {\n"
+" this.name = name;\n"
+" }\n"
+" ......\n"
+" ......\n"
+"}]]>"
msgstr ""
- "<![CDATA[public class Person {\n"
- " private java.util.Date birthday;\n"
- " private Name name;\n"
- " private String key;\n"
- " public String getKey() {\n"
- " return key;\n"
- " }\n"
- " private void setKey(String key) {\n"
- " this.key=key;\n"
- " }\n"
- " public java.util.Date getBirthday() {\n"
- " return birthday;\n"
- " }\n"
- " public void setBirthday(java.util.Date birthday) {\n"
- " this.birthday = birthday;\n"
- " }\n"
- " public Name getName() {\n"
- " return name;\n"
- " }\n"
- " public void setName(Name name) {\n"
- " this.name = name;\n"
- " }\n"
- " ......\n"
- " ......\n"
- "}]]>"
-#: index.docbook:23
+#. Tag: programlisting
+#: component_mapping.xml:23
+#, no-c-format
msgid ""
- "<![CDATA[public class Name {\n"
- " char initial;\n"
- " String first;\n"
- " String last;\n"
- " public String getFirst() {\n"
- " return first;\n"
- " }\n"
- " void setFirst(String first) {\n"
- " this.first = first;\n"
- " }\n"
- " public String getLast() {\n"
- " return last;\n"
- " }\n"
- " void setLast(String last) {\n"
- " this.last = last;\n"
- " }\n"
- " public char getInitial() {\n"
- " return initial;\n"
- " }\n"
- " void setInitial(char initial) {\n"
- " this.initial = initial;\n"
- " }\n"
- "}]]>"
+"<![CDATA[public class Name {\n"
+" char initial;\n"
+" String first;\n"
+" String last;\n"
+" public String getFirst() {\n"
+" return first;\n"
+" }\n"
+" void setFirst(String first) {\n"
+" this.first = first;\n"
+" }\n"
+" public String getLast() {\n"
+" return last;\n"
+" }\n"
+" void setLast(String last) {\n"
+" this.last = last;\n"
+" }\n"
+" public char getInitial() {\n"
+" return initial;\n"
+" }\n"
+" void setInitial(char initial) {\n"
+" this.initial = initial;\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[public class Name {\n"
- " char initial;\n"
- " String first;\n"
- " String last;\n"
- " public String getFirst() {\n"
- " return first;\n"
- " }\n"
- " void setFirst(String first) {\n"
- " this.first = first;\n"
- " }\n"
- " public String getLast() {\n"
- " return last;\n"
- " }\n"
- " void setLast(String last) {\n"
- " this.last = last;\n"
- " }\n"
- " public char getInitial() {\n"
- " return initial;\n"
- " }\n"
- " void setInitial(char initial) {\n"
- " this.initial = initial;\n"
- " }\n"
- "}]]>"
-#: index.docbook:25
-msgid "Now <literal>Name</literal> may be persisted as a component of <literal>Person</literal>. Notice that <literal>Name</literal> defines getter and setter methods for its persistent properties, but doesn't need to declare any interfaces or identifier properties."
-msgstr "Ahora <literal>Name</literal> puede ser persistido como un componente de <literal>Person</literal>. Observa que <literal>Name</literal> define métodos getter y setter para sus propiedades persistentes, pero no necesita declarar ninguna interface ni propiedades identificadoras."
+#. Tag: para
+#: component_mapping.xml:25
+#, no-c-format
+msgid ""
+"Now <literal>Name</literal> may be persisted as a component of "
+"<literal>Person</literal>. Notice that <literal>Name</literal> defines "
+"getter and setter methods for its persistent properties, but doesn't need to "
+"declare any interfaces or identifier properties."
+msgstr ""
+"Ahora <literal>Name</literal> puede ser persistido como un componente de "
+"<literal>Person</literal>. Observa que <literal>Name</literal> define "
+"métodos getter y setter para sus propiedades persistentes, pero no necesita "
+"declarar ninguna interface ni propiedades identificadoras."
-#: index.docbook:32
+#. Tag: para
+#: component_mapping.xml:32
+#, no-c-format
msgid "Our Hibernate mapping would look like:"
-msgstr "Nuestro mapeo de Hibernate se vería así:"
+msgstr "Nuestro mapeo de Hibernate se vería así:"
-#: index.docbook:36
+#. Tag: programlisting
+#: component_mapping.xml:36
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
- " <id name=\"Key\" column=\"pid\" type=\"string\">\n"
- " <generator class=\"uuid\"/>\n"
- " </id>\n"
- " <property name=\"birthday\" type=\"date\"/>\n"
- " <component name=\"Name\" class=\"eg.Name\"> <!-- class attribute optional -->\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"first\"/>\n"
- " <property name=\"last\"/>\n"
- " </component>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
+" <id name=\"Key\" column=\"pid\" type=\"string\">\n"
+" <generator class=\"uuid\"/>\n"
+" </id>\n"
+" <property name=\"birthday\" type=\"date\"/>\n"
+" <component name=\"Name\" class=\"eg.Name\"> <!-- class attribute "
+"optional -->\n"
+" <property name=\"initial\"/>\n"
+" <property name=\"first\"/>\n"
+" <property name=\"last\"/>\n"
+" </component>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
- " <id name=\"Key\" column=\"pid\" type=\"string\">\n"
- " <generator class=\"uuid.hex\"/>\n"
- " </id>\n"
- " <property name=\"birthday\" type=\"date\"/>\n"
- " <component name=\"Name\" class=\"eg.Name\"> <!-- class attribute optional -->\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"first\"/>\n"
- " <property name=\"last\"/>\n"
- " </component>\n"
- "</class>]]>"
-#: index.docbook:38
-msgid "The person table would have the columns <literal>pid</literal>, <literal>birthday</literal>, <literal>initial</literal>, <literal>first</literal> and <literal>last</literal>."
-msgstr "La tabla person tendría las columnas <literal>pid</literal>, <literal>birthday</literal>, <literal>initial</literal>, <literal>first</literal> y <literal>last</literal>."
+#. Tag: para
+#: component_mapping.xml:38
+#, no-c-format
+msgid ""
+"The person table would have the columns <literal>pid</literal>, "
+"<literal>birthday</literal>, <literal>initial</literal>, <literal>first</"
+"literal> and <literal>last</literal>."
+msgstr ""
+"La tabla person tendría las columnas <literal>pid</literal>, "
+"<literal>birthday</literal>, <literal>initial</literal>, <literal>first</"
+"literal> y <literal>last</literal>."
-#: index.docbook:46
-msgid "Like all value types, components do not support shared references. In other words, two persons could have the same name, but the two person objects would contain two independent name ojects, only \"the same\" by value. The null value semantics of a component are <emphasis>ad hoc</emphasis>. When reloading the containing object, Hibernate will assume that if all component columns are null, then the entire component is null. This should be okay for most purposes."
-msgstr "Como todos los tipos de valor, los componentes no soportan referencias compartidas. En otras palabras, dos personas pueden tener el mismo nombre, pero los dos objetos persona contendrían dos objetos nombre independientes, sólo \"iguales\" en valor. La semántica de valor nulo de un componente es <emphasis>ad hoc</emphasis>. Cuando se recargue el objeto contenedor, Hibernate asumirá que si todas las columnas del componente son nulas, el componente entero es nulo. Esto debe estar bien para la mayoría de propósitos."
+#. Tag: para
+#: component_mapping.xml:46
+#, no-c-format
+msgid ""
+"Like all value types, components do not support shared references. In other "
+"words, two persons could have the same name, but the two person objects "
+"would contain two independent name ojects, only \"the same\" by value. The "
+"null value semantics of a component are <emphasis>ad hoc</emphasis>. When "
+"reloading the containing object, Hibernate will assume that if all component "
+"columns are null, then the entire component is null. This should be okay for "
+"most purposes."
+msgstr ""
+"Como todos los tipos de valor, los componentes no soportan referencias "
+"compartidas. En otras palabras, dos personas pueden tener el mismo nombre, "
+"pero los dos objetos persona contendrían dos objetos nombre independientes, "
+"sólo \"iguales\" en valor. La semántica de valor nulo de un componente es "
+"<emphasis>ad hoc</emphasis>. Cuando se recargue el objeto contenedor, "
+"Hibernate asumirá que si todas las columnas del componente son nulas, el "
+"componente entero es nulo. Esto debe estar bien para la mayoría de "
+"propósitos."
-#: index.docbook:55
-msgid "The properties of a component may be of any Hibernate type (collections, many-to-one associations, other components, etc). Nested components should <emphasis>not</emphasis> be considered an exotic usage. Hibernate is intended to support a very fine-grained object model."
-msgstr "Las propiedades de un componentes pueden ser de cualquier tipo de Hibernate (colecciones, muchos-a-uno, asociaciones, otros componentes, etc). Los componentes anidados <emphasis>no</emphasis> deben ser considerados un uso exótico. Hibernate está concebido para soportar un modelo de objetos granularizado en fino."
+#. Tag: para
+#: component_mapping.xml:55
+#, no-c-format
+msgid ""
+"The properties of a component may be of any Hibernate type (collections, "
+"many-to-one associations, other components, etc). Nested components should "
+"<emphasis>not</emphasis> be considered an exotic usage. Hibernate is "
+"intended to support a very fine-grained object model."
+msgstr ""
+"Las propiedades de un componentes pueden ser de cualquier tipo de Hibernate "
+"(colecciones, muchos-a-uno, asociaciones, otros componentes, etc). Los "
+"componentes anidados <emphasis>no</emphasis> deben ser considerados un uso "
+"exótico. Hibernate está concebido para soportar un modelo de objetos "
+"granularizado en fino."
-#: index.docbook:62
-msgid "The <literal><component></literal> element allows a <literal><parent></literal> subelement that maps a property of the component class as a reference back to the containing entity."
-msgstr "El elemento <literal><component></literal> permite un subelemento <literal><parent></literal> que mapee una propiedad de la clase del componente como una referencia de regreso a la entidad contenedora."
+#. Tag: para
+#: component_mapping.xml:62
+#, no-c-format
+msgid ""
+"The <literal><component></literal> element allows a <literal><"
+"parent></literal> subelement that maps a property of the component class "
+"as a reference back to the containing entity."
+msgstr ""
+"El elemento <literal><component></literal> permite un subelemento "
+"<literal><parent></literal> que mapee una propiedad de la clase del "
+"componente como una referencia de regreso a la entidad contenedora."
-#: index.docbook:68
+#. Tag: programlisting
+#: component_mapping.xml:68
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
- " <id name=\"Key\" column=\"pid\" type=\"string\">\n"
- " <generator class=\"uuid\"/>\n"
- " </id>\n"
- " <property name=\"birthday\" type=\"date\"/>\n"
- " <component name=\"Name\" class=\"eg.Name\" unique=\"true\">\n"
- " <parent name=\"namedPerson\"/> <!-- reference back to the Person -->\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"first\"/>\n"
- " <property name=\"last\"/>\n"
- " </component>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
+" <id name=\"Key\" column=\"pid\" type=\"string\">\n"
+" <generator class=\"uuid\"/>\n"
+" </id>\n"
+" <property name=\"birthday\" type=\"date\"/>\n"
+" <component name=\"Name\" class=\"eg.Name\" unique=\"true\">\n"
+" <parent name=\"namedPerson\"/> <!-- reference back to the Person --"
+">\n"
+" <property name=\"initial\"/>\n"
+" <property name=\"first\"/>\n"
+" <property name=\"last\"/>\n"
+" </component>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
- " <id name=\"Key\" column=\"pid\" type=\"string\">\n"
- " <generator class=\"uuid.hex\"/>\n"
- " </id>\n"
- " <property name=\"birthday\" type=\"date\"/>\n"
- " <component name=\"Name\" class=\"eg.Name\" unique=\"true\">\n"
- " <parent name=\"namedPerson\"/> <!-- reference back to the Person -->\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"first\"/>\n"
- " <property name=\"last\"/>\n"
- " </component>\n"
- "</class>]]>"
-#: index.docbook:73
+#. Tag: title
+#: component_mapping.xml:73
+#, no-c-format
msgid "Collections of dependent objects"
msgstr "Colecciones de objetos dependientes"
-#: index.docbook:75
-msgid "Collections of components are supported (eg. an array of type <literal>Name</literal>). Declare your component collection by replacing the <literal><element></literal> tag with a <literal><composite-element></literal> tag."
-msgstr "Las colecciones de componentes están soportadas (por ejemplo, un array de tipo <literal>Name</literal>). Declara tu colección de componentes remplazando la etiqueta <literal><element></literal> por una etiqueta <literal><composite-element></literal>."
+#. Tag: para
+#: component_mapping.xml:75
+#, no-c-format
+msgid ""
+"Collections of components are supported (eg. an array of type <literal>Name</"
+"literal>). Declare your component collection by replacing the <literal><"
+"element></literal> tag with a <literal><composite-element></"
+"literal> tag."
+msgstr ""
+"Las colecciones de componentes están soportadas (por ejemplo, un array de "
+"tipo <literal>Name</literal>). Declara tu colección de componentes "
+"remplazando la etiqueta <literal><element></literal> por una etiqueta "
+"<literal><composite-element></literal>."
-#: index.docbook:82
+#. Tag: programlisting
+#: component_mapping.xml:82
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"someNames\" table=\"some_names\" lazy=\"true\">\n"
- " <key column=\"id\"/>\n"
- " <composite-element class=\"eg.Name\"> <!-- class attribute required -->\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"first\"/>\n"
- " <property name=\"last\"/>\n"
- " </composite-element>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"someNames\" table=\"some_names\" lazy=\"true\">\n"
+" <key column=\"id\"/>\n"
+" <composite-element class=\"eg.Name\"> <!-- class attribute required -->\n"
+" <property name=\"initial\"/>\n"
+" <property name=\"first\"/>\n"
+" <property name=\"last\"/>\n"
+" </composite-element>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"someNames\" table=\"some_names\" lazy=\"true\">\n"
- " <key column=\"id\"/>\n"
- " <composite-element class=\"eg.Name\"> <!-- class attribute required -->\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"first\"/>\n"
- " <property name=\"last\"/>\n"
- " </composite-element>\n"
- "</set>]]>"
-#: index.docbook:84
-msgid "Note: if you define a <literal>Set</literal> of composite elements, it is very important to implement <literal>equals()</literal> and <literal>hashCode()</literal> correctly."
-msgstr "Nota: si defines un <literal>Set</literal> de elementos compuestos, es muy importante implementar <literal>equals()</literal> y <literal>hashCode()</literal> correctamente."
+#. Tag: para
+#: component_mapping.xml:84
+#, no-c-format
+msgid ""
+"Note: if you define a <literal>Set</literal> of composite elements, it is "
+"very important to implement <literal>equals()</literal> and <literal>hashCode"
+"()</literal> correctly."
+msgstr ""
+"Nota: si defines un <literal>Set</literal> de elementos compuestos, es muy "
+"importante implementar <literal>equals()</literal> y <literal>hashCode()</"
+"literal> correctamente."
-#: index.docbook:90
-msgid "Composite elements may contain components but not collections. If your composite element itself contains components, use the <literal><nested-composite-element></literal> tag. This is a pretty exotic case - a collection of components which themselves have components. By this stage you should be asking yourself if a one-to-many association is more appropriate. Try remodelling the composite element as an entity - but note that even though the Java model is the same, the relational model and persistence semantics are still slightly different."
-msgstr "Los elementos compuestos pueden contener componentes pero no colecciones. Si tu elemento compuesto contiene a su vez componentes, usa la etiqueta <literal><nested-composite-element></literal>. Este es un caso bastante exótico - una colección de componentes que a su vez tienen componentes. A esta altura debes estar preguntándote si una asociación uno-a-muchos es más apropiada. Intenta remodelar el elemento compuesto como una entidad - pero observa que aunque el modelo Java es el mismo, el modelo relacional y la semántica de persistencia siguen siendo ligeramente diferentes."
+#. Tag: para
+#: component_mapping.xml:90
+#, no-c-format
+msgid ""
+"Composite elements may contain components but not collections. If your "
+"composite element itself contains components, use the <literal><nested-"
+"composite-element></literal> tag. This is a pretty exotic case - a "
+"collection of components which themselves have components. By this stage you "
+"should be asking yourself if a one-to-many association is more appropriate. "
+"Try remodelling the composite element as an entity - but note that even "
+"though the Java model is the same, the relational model and persistence "
+"semantics are still slightly different."
+msgstr ""
+"Los elementos compuestos pueden contener componentes pero no colecciones. Si "
+"tu elemento compuesto contiene a su vez componentes, usa la etiqueta "
+"<literal><nested-composite-element></literal>. Este es un caso "
+"bastante exótico - una colección de componentes que a su vez tienen "
+"componentes. A esta altura debes estar preguntándote si una asociación uno-a-"
+"muchos es más apropiada. Intenta remodelar el elemento compuesto como una "
+"entidad - pero observa que aunque el modelo Java es el mismo, el modelo "
+"relacional y la semántica de persistencia siguen siendo ligeramente "
+"diferentes."
-#: index.docbook:102
-msgid "Please note that a composite element mapping doesn't support null-able properties if you're using a <literal><set></literal>. Hibernate has to use each columns value to identify a record when deleting objects (there is no separate primary key column in the composite element table), which is not possible with null values. You have to either use only not-null properties in a composite-element or choose a <literal><list></literal>, <literal><map></literal>, <literal><bag></literal> or <literal><idbag></literal>."
-msgstr "Por favor observa que un mapeo de elemento compuesto no soporta propiedades nulables si estás usando un <literal><set></literal>. Hibernate tiene que usar cada columna para identificar un registro al borrar objetos (no hay una columna clave primaria separada en la tabla del elemento compuesto), lo que es imposible con valores nulos. Tienes que, o bien usar sólo propiedades no nulas en un elemento compuesto o elegir un <literal><list></literal>, <literal><map></literal>, <literal><bag></literal> o <literal><idbag></literal>."
+#. Tag: para
+#: component_mapping.xml:102
+#, no-c-format
+msgid ""
+"Please note that a composite element mapping doesn't support null-able "
+"properties if you're using a <literal><set></literal>. Hibernate has "
+"to use each columns value to identify a record when deleting objects (there "
+"is no separate primary key column in the composite element table), which is "
+"not possible with null values. You have to either use only not-null "
+"properties in a composite-element or choose a <literal><list></"
+"literal>, <literal><map></literal>, <literal><bag></literal> or "
+"<literal><idbag></literal>."
+msgstr ""
+"Por favor observa que un mapeo de elemento compuesto no soporta propiedades "
+"nulables si estás usando un <literal><set></literal>. Hibernate tiene "
+"que usar cada columna para identificar un registro al borrar objetos (no hay "
+"una columna clave primaria separada en la tabla del elemento compuesto), lo "
+"que es imposible con valores nulos. Tienes que, o bien usar sólo propiedades "
+"no nulas en un elemento compuesto o elegir un <literal><list></"
+"literal>, <literal><map></literal>, <literal><bag></literal> o "
+"<literal><idbag></literal>."
-#: index.docbook:113
-msgid "A special case of a composite element is a composite element with a nested <literal><many-to-one></literal> element. A mapping like this allows you to map extra columns of a many-to-many association table to the composite element class. The following is a many-to-many association from <literal>Order</literal> to <literal>Item</literal> where <literal>purchaseDate</literal>, <literal>price</literal> and <literal>quantity</literal> are properties of the association:"
-msgstr "Un caso especial de un elemento compuesto es un elemento compuesto con un elemento anidado <literal><many-to-one></literal>. Un mapeo como este te permite mapear columnas extra de una tabla de asociación muchos-a-muchos a la clase del elemento compuesto. La siguiente es una asociación muchos-a-muchos de <literal>Order</literal> a <literal>Item</literal> donde <literal>purchaseDate</literal>, <literal>price</literal> y <literal>quantity</literal> son propiedades de la asociación:"
+#. Tag: para
+#: component_mapping.xml:113
+#, no-c-format
+msgid ""
+"A special case of a composite element is a composite element with a nested "
+"<literal><many-to-one></literal> element. A mapping like this allows "
+"you to map extra columns of a many-to-many association table to the "
+"composite element class. The following is a many-to-many association from "
+"<literal>Order</literal> to <literal>Item</literal> where "
+"<literal>purchaseDate</literal>, <literal>price</literal> and "
+"<literal>quantity</literal> are properties of the association:"
+msgstr ""
+"Un caso especial de un elemento compuesto es un elemento compuesto con un "
+"elemento anidado <literal><many-to-one></literal>. Un mapeo como este "
+"te permite mapear columnas extra de una tabla de asociación muchos-a-muchos "
+"a la clase del elemento compuesto. La siguiente es una asociación muchos-a-"
+"muchos de <literal>Order</literal> a <literal>Item</literal> donde "
+"<literal>purchaseDate</literal>, <literal>price</literal> y "
+"<literal>quantity</literal> son propiedades de la asociación:"
-#: index.docbook:123
+#. Tag: programlisting
+#: component_mapping.xml:123
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"eg.Order\" .... >\n"
- " ....\n"
- " <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
- " <key column=\"order_id\">\n"
- " <composite-element class=\"eg.Purchase\">\n"
- " <property name=\"purchaseDate\"/>\n"
- " <property name=\"price\"/>\n"
- " <property name=\"quantity\"/>\n"
- " <many-to-one name=\"item\" class=\"eg.Item\"/> <!-- class attribute is optional -->\n"
- " </composite-element>\n"
- " </set>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"eg.Order\" .... >\n"
+" ....\n"
+" <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
+" <key column=\"order_id\">\n"
+" <composite-element class=\"eg.Purchase\">\n"
+" <property name=\"purchaseDate\"/>\n"
+" <property name=\"price\"/>\n"
+" <property name=\"quantity\"/>\n"
+" <many-to-one name=\"item\" class=\"eg.Item\"/> <!-- class "
+"attribute is optional -->\n"
+" </composite-element>\n"
+" </set>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"eg.Order\" .... >\n"
- " ....\n"
- " <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
- " <key column=\"order_id\">\n"
- " <composite-element class=\"eg.Purchase\">\n"
- " <property name=\"purchaseDate\"/>\n"
- " <property name=\"price\"/>\n"
- " <property name=\"quantity\"/>\n"
- " <many-to-one name=\"item\" class=\"eg.Item\"/> <!-- class attribute is optional -->\n"
- " </composite-element>\n"
- " </set>\n"
- "</class>]]>"
-#: index.docbook:125
-msgid "Of course, there can't be a reference to the purchae on the other side, for bidirectional association navigation. Remember that components are value types and don't allow shared references. A single <literal>Purchase</literal> can be in the set of an <literal>Order</literal>, but it can't be referenced by the <literal>Item</literal> at the same time."
-msgstr "Por supuesto, no puede haber una referencia a la compra del otro lado para la navegación bidireccional de la asociación. Recuerda que los componentes son tipos de valor no permiten referencias compartidas. Una sola <literal>Purchase</literal> puede estar en el conjunto de una <literal>Order</literal>, pero no puede ser referenciada por el <literal>Item</literal> al mismo tiempo."
+#. Tag: para
+#: component_mapping.xml:125
+#, no-c-format
+msgid ""
+"Of course, there can't be a reference to the purchae on the other side, for "
+"bidirectional association navigation. Remember that components are value "
+"types and don't allow shared references. A single <literal>Purchase</"
+"literal> can be in the set of an <literal>Order</literal>, but it can't be "
+"referenced by the <literal>Item</literal> at the same time."
+msgstr ""
+"Por supuesto, no puede haber una referencia a la compra del otro lado para "
+"la navegación bidireccional de la asociación. Recuerda que los componentes "
+"son tipos de valor no permiten referencias compartidas. Una sola "
+"<literal>Purchase</literal> puede estar en el conjunto de una "
+"<literal>Order</literal>, pero no puede ser referenciada por el "
+"<literal>Item</literal> al mismo tiempo."
-#: index.docbook:133
+#. Tag: para
+#: component_mapping.xml:133
+#, no-c-format
msgid "Even ternary (or quaternary, etc) associations are possible:"
msgstr "Incluso son posibles las asociaciones ternarias (o cuaternarias, etc):"
-#: index.docbook:135
+#. Tag: programlisting
+#: component_mapping.xml:135
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"eg.Order\" .... >\n"
- " ....\n"
- " <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
- " <key column=\"order_id\">\n"
- " <composite-element class=\"eg.OrderLine\">\n"
- " <many-to-one name=\"purchaseDetails class=\"eg.Purchase\"/>\n"
- " <many-to-one name=\"item\" class=\"eg.Item\"/>\n"
- " </composite-element>\n"
- " </set>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"eg.Order\" .... >\n"
+" ....\n"
+" <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
+" <key column=\"order_id\">\n"
+" <composite-element class=\"eg.OrderLine\">\n"
+" <many-to-one name=\"purchaseDetails class=\"eg.Purchase\"/>\n"
+" <many-to-one name=\"item\" class=\"eg.Item\"/>\n"
+" </composite-element>\n"
+" </set>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"eg.Order\" .... >\n"
- " ....\n"
- " <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
- " <key column=\"order_id\">\n"
- " <composite-element class=\"eg.OrderLine\">\n"
- " <many-to-one name=\"purchaseDetails class=\"eg.Purchase\"/>\n"
- " <many-to-one name=\"item\" class=\"eg.Item\"/>\n"
- " </composite-element>\n"
- " </set>\n"
- "</class>]]>"
-#: index.docbook:137
-msgid "Composite elements may appear in queries using the same syntax as associations to other entities."
-msgstr "Los elementos compuestos pueden aparecer en consultas usando la misma sintáxis que las asociaciones a otras entidades."
+#. Tag: para
+#: component_mapping.xml:137
+#, no-c-format
+msgid ""
+"Composite elements may appear in queries using the same syntax as "
+"associations to other entities."
+msgstr ""
+"Los elementos compuestos pueden aparecer en consultas usando la misma "
+"sintáxis que las asociaciones a otras entidades."
-#: index.docbook:145
+#. Tag: title
+#: component_mapping.xml:145
+#, no-c-format
msgid "Components as Map indices"
-msgstr "Componentes como índices de Map"
+msgstr "Componentes como índices de Map"
-#: index.docbook:147
-msgid "The <literal><composite-map-key></literal> element lets you map a component class as the key of a <literal>Map</literal>. Make sure you override <literal>hashCode()</literal> and <literal>equals()</literal> correctly on the component class."
-msgstr "El elemento <literal><composite-map-key></literal> te permite mapear una clase componente como la clave de un <literal>Map</literal>. Asegúrate que sobrescribes <literal>hashCode()</literal> y <literal>equals()</literal> correctamente en la clase componente."
+#. Tag: para
+#: component_mapping.xml:147
+#, no-c-format
+msgid ""
+"The <literal><composite-map-key></literal> element lets you map a "
+"component class as the key of a <literal>Map</literal>. Make sure you "
+"override <literal>hashCode()</literal> and <literal>equals()</literal> "
+"correctly on the component class."
+msgstr ""
+"El elemento <literal><composite-map-key></literal> te permite mapear "
+"una clase componente como la clave de un <literal>Map</literal>. Asegúrate "
+"que sobrescribes <literal>hashCode()</literal> y <literal>equals()</literal> "
+"correctamente en la clase componente."
-#: index.docbook:156
+#. Tag: title
+#: component_mapping.xml:156
+#, no-c-format
msgid "Components as composite identifiers"
msgstr "Componentes como identificadores compuestos"
-#: index.docbook:158
-msgid "You may use a component as an identifier of an entity class. Your component class must satisfy certain requirements:"
-msgstr "Puedes usar un componente como un identidicador de una clase entidad. Tu clase componente debe satisfacer ciertos requerimientos:"
+#. Tag: para
+#: component_mapping.xml:158
+#, no-c-format
+msgid ""
+"You may use a component as an identifier of an entity class. Your component "
+"class must satisfy certain requirements:"
+msgstr ""
+"Puedes usar un componente como un identidicador de una clase entidad. Tu "
+"clase componente debe satisfacer ciertos requerimientos:"
-#: index.docbook:165
+#. Tag: para
+#: component_mapping.xml:165
+#, no-c-format
msgid "It must implement <literal>java.io.Serializable</literal>."
msgstr "Debe implementar <literal>java.io.Serializable</literal>."
-#: index.docbook:170
-msgid "It must re-implement <literal>equals()</literal> and <literal>hashCode()</literal>, consistently with the database's notion of composite key equality."
-msgstr "Debe re-implementar <literal>equals()</literal> y <literal>hashCode()</literal>, consistentemente con la noción de base de datos de igualdad de clave compuesta."
+#. Tag: para
+#: component_mapping.xml:170
+#, no-c-format
+msgid ""
+"It must re-implement <literal>equals()</literal> and <literal>hashCode()</"
+"literal>, consistently with the database's notion of composite key equality."
+msgstr ""
+"Debe re-implementar <literal>equals()</literal> y <literal>hashCode()</"
+"literal>, consistentemente con la noción de base de datos de igualdad de "
+"clave compuesta."
-#: index.docbook:179
-msgid "Note: in Hibernate3, the second requirement is not an absolutely hard requirement of Hibernate. But do it anyway."
-msgstr "Nota: en Hibernat3, el segundo requerimiento no es absolutamente un requerimiento rígido de Hibernate. Pero de todas formas, házlo."
+#. Tag: emphasis
+#: component_mapping.xml:179
+#, no-c-format
+msgid ""
+"Note: in Hibernate3, the second requirement is not an absolutely hard "
+"requirement of Hibernate. But do it anyway."
+msgstr ""
+"Nota: en Hibernat3, el segundo requerimiento no es absolutamente un "
+"requerimiento rígido de Hibernate. Pero de todas formas, házlo."
-#: index.docbook:183
-msgid "You can't use an <literal>IdentifierGenerator</literal> to generate composite keys. Instead the application must assign its own identifiers."
-msgstr "No puedes usar un <literal>IdentifierGenerator</literal> para generar claves compuestas. La aplicación debe, en cambio, asignar sus propios identificadores."
+#. Tag: para
+#: component_mapping.xml:183
+#, no-c-format
+msgid ""
+"You can't use an <literal>IdentifierGenerator</literal> to generate "
+"composite keys. Instead the application must assign its own identifiers."
+msgstr ""
+"No puedes usar un <literal>IdentifierGenerator</literal> para generar claves "
+"compuestas. La aplicación debe, en cambio, asignar sus propios "
+"identificadores."
-#: index.docbook:188
-msgid "Use the <literal><composite-id></literal> tag (with nested <literal><key-property></literal> elements) in place of the usual <literal><id></literal> declaration. For example, the <literal>OrderLine</literal> class has a primary key that depends upon the (composite) primary key of <literal>Order</literal>."
-msgstr "Usa la etiqueta <literal><composite-id></literal> (con elementos anidados <literal><key-property></literal>) en lugar de la usual declaración <literal><id></literal>. Por ejemplo, la clase <literal>OrderLine</literal> tiene una clave primaria que depende de la clave primaria (compuesta) de <literal>Order</literal>."
+#. Tag: para
+#: component_mapping.xml:188
+#, no-c-format
+msgid ""
+"Use the <literal><composite-id></literal> tag (with nested "
+"<literal><key-property></literal> elements) in place of the usual "
+"<literal><id></literal> declaration. For example, the "
+"<literal>OrderLine</literal> class has a primary key that depends upon the "
+"(composite) primary key of <literal>Order</literal>."
+msgstr ""
+"Usa la etiqueta <literal><composite-id></literal> (con elementos "
+"anidados <literal><key-property></literal>) en lugar de la usual "
+"declaración <literal><id></literal>. Por ejemplo, la clase "
+"<literal>OrderLine</literal> tiene una clave primaria que depende de la "
+"clave primaria (compuesta) de <literal>Order</literal>."
-#: index.docbook:196
+#. Tag: programlisting
+#: component_mapping.xml:196
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"OrderLine\">\n"
- " \n"
- " <composite-id name=\"id\" class=\"OrderLineId\">\n"
- " <key-property name=\"lineId\"/>\n"
- " <key-property name=\"orderId\"/>\n"
- " <key-property name=\"customerId\"/>\n"
- " </composite-id>\n"
- " \n"
- " <property name=\"name\"/>\n"
- " \n"
- " <many-to-one name=\"order\" class=\"Order\"\n"
- " insert=\"false\" update=\"false\">\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- " </many-to-one>\n"
- " ....\n"
- " \n"
- "</class>]]>"
+"<![CDATA[<class name=\"OrderLine\">\n"
+" \n"
+" <composite-id name=\"id\" class=\"OrderLineId\">\n"
+" <key-property name=\"lineId\"/>\n"
+" <key-property name=\"orderId\"/>\n"
+" <key-property name=\"customerId\"/>\n"
+" </composite-id>\n"
+" \n"
+" <property name=\"name\"/>\n"
+" \n"
+" <many-to-one name=\"order\" class=\"Order\"\n"
+" insert=\"false\" update=\"false\">\n"
+" <column name=\"orderId\"/>\n"
+" <column name=\"customerId\"/>\n"
+" </many-to-one>\n"
+" ....\n"
+" \n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"OrderLine\">\n"
- " \n"
- " <composite-id name=\"id\" class=\"OrderLineId\">\n"
- " <key-property name=\"lineId\"/>\n"
- " <key-property name=\"orderId\"/>\n"
- " <key-property name=\"customerId\"/>\n"
- " </composite-id>\n"
- " \n"
- " <property name=\"name\"/>\n"
- " \n"
- " <many-to-one name=\"order\" class=\"Order\"\n"
- " insert=\"false\" update=\"false\">\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- " </many-to-one>\n"
- " ....\n"
- " \n"
- "</class>]]>"
-#: index.docbook:198
-msgid "Now, any foreign keys referencing the <literal>OrderLine</literal> table are also composite. You must declare this in your mappings for other classes. An association to <literal>OrderLine</literal> would be mapped like this:"
-msgstr "Ahora, cualquier clave foránea que referencie la tabla de <literal>OrderLine</literal> es también compuesta. Debes declarar esto en tus mapeos de otras clases. Una asociación a <literal>OrderLine</literal> sería mapeado así:"
+#. Tag: para
+#: component_mapping.xml:198
+#, no-c-format
+msgid ""
+"Now, any foreign keys referencing the <literal>OrderLine</literal> table are "
+"also composite. You must declare this in your mappings for other classes. An "
+"association to <literal>OrderLine</literal> would be mapped like this:"
+msgstr ""
+"Ahora, cualquier clave foránea que referencie la tabla de "
+"<literal>OrderLine</literal> es también compuesta. Debes declarar esto en "
+"tus mapeos de otras clases. Una asociación a <literal>OrderLine</literal> "
+"sería mapeado así:"
-#: index.docbook:204
+#. Tag: programlisting
+#: component_mapping.xml:204
+#, no-c-format
msgid ""
- "<![CDATA[<many-to-one name=\"orderLine\" class=\"OrderLine\">\n"
- "<!-- the \"class\" attribute is optional, as usual -->\n"
- " <column name=\"lineId\"/>\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- "</many-to-one>]]>"
+"<![CDATA[<many-to-one name=\"orderLine\" class=\"OrderLine\">\n"
+"<!-- the \"class\" attribute is optional, as usual -->\n"
+" <column name=\"lineId\"/>\n"
+" <column name=\"orderId\"/>\n"
+" <column name=\"customerId\"/>\n"
+"</many-to-one>]]>"
msgstr ""
- "<![CDATA[<many-to-one name=\"orderLine\" class=\"OrderLine\">\n"
- "<!-- the \"class\" attribute is optional, as usual -->\n"
- " <column name=\"lineId\"/>\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- "</many-to-one>]]>"
-#: index.docbook:206
-msgid "(Note that the <literal><column></literal> tag is an alternative to the <literal>column</literal> attribute everywhere.)"
-msgstr "(Nota que la etiqueta <literal><column></literal> es una alternativa al atributo <literal>column</literal> en cualquier sitio.)"
+#. Tag: para
+#: component_mapping.xml:206
+#, no-c-format
+msgid ""
+"(Note that the <literal><column></literal> tag is an alternative to "
+"the <literal>column</literal> attribute everywhere.)"
+msgstr ""
+"(Nota que la etiqueta <literal><column></literal> es una alternativa "
+"al atributo <literal>column</literal> en cualquier sitio.)"
-#: index.docbook:211
-msgid "A <literal>many-to-many</literal> association to <literal>OrderLine</literal> also uses the composite foreign key:"
-msgstr "Una asociación <literal>muchos-a-muchos</literal> a <literal>OrderLine</literal> también usa la clave foránea compuesta:"
+#. Tag: para
+#: component_mapping.xml:211
+#, no-c-format
+msgid ""
+"A <literal>many-to-many</literal> association to <literal>OrderLine</"
+"literal> also uses the composite foreign key:"
+msgstr ""
+"Una asociación <literal>muchos-a-muchos</literal> a <literal>OrderLine</"
+"literal> también usa la clave foránea compuesta:"
-#: index.docbook:216
+#. Tag: programlisting
+#: component_mapping.xml:216
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"undeliveredOrderLines\">\n"
- " <key column name=\"warehouseId\"/>\n"
- " <many-to-many class=\"OrderLine\">\n"
- " <column name=\"lineId\"/>\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- " </many-to-many>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"undeliveredOrderLines\">\n"
+" <key column name=\"warehouseId\"/>\n"
+" <many-to-many class=\"OrderLine\">\n"
+" <column name=\"lineId\"/>\n"
+" <column name=\"orderId\"/>\n"
+" <column name=\"customerId\"/>\n"
+" </many-to-many>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"undeliveredOrderLines\">\n"
- " <key column name=\"warehouseId\"/>\n"
- " <many-to-many class=\"OrderLine\">\n"
- " <column name=\"lineId\"/>\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- " </many-to-many>\n"
- "</set>]]>"
-#: index.docbook:218
-msgid "The collection of <literal>OrderLine</literal>s in <literal>Order</literal> would use:"
-msgstr "La colección de <literal>OrderLine</literal>s en <literal>Order</literal> usaría:"
+#. Tag: para
+#: component_mapping.xml:218
+#, no-c-format
+msgid ""
+"The collection of <literal>OrderLine</literal>s in <literal>Order</literal> "
+"would use:"
+msgstr ""
+"La colección de <literal>OrderLine</literal>s en <literal>Order</literal> "
+"usaría:"
-#: index.docbook:223
+#. Tag: programlisting
+#: component_mapping.xml:223
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"orderLines\" inverse=\"true\">\n"
- " <key>\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- " </key>\n"
- " <one-to-many class=\"OrderLine\"/>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"orderLines\" inverse=\"true\">\n"
+" <key>\n"
+" <column name=\"orderId\"/>\n"
+" <column name=\"customerId\"/>\n"
+" </key>\n"
+" <one-to-many class=\"OrderLine\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"orderLines\" inverse=\"true\">\n"
- " <key>\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- " </key>\n"
- " <one-to-many class=\"OrderLine\"/>\n"
- "</set>]]>"
-#: index.docbook:225
-msgid "(The <literal><one-to-many></literal> element, as usual, declares no columns.)"
-msgstr "(El elemento <literal><one-to-many></literal>, como es usual, no declara columnas.)"
+#. Tag: para
+#: component_mapping.xml:225
+#, no-c-format
+msgid ""
+"(The <literal><one-to-many></literal> element, as usual, declares no "
+"columns.)"
+msgstr ""
+"(El elemento <literal><one-to-many></literal>, como es usual, no "
+"declara columnas.)"
-#: index.docbook:229
-msgid "If <literal>OrderLine</literal> itself owns a collection, it also has a composite foreign key."
-msgstr "Si <literal>OrderLine</literal> posee una colección por sí misma, tiene también una clave foránea compuesta."
+#. Tag: para
+#: component_mapping.xml:229
+#, no-c-format
+msgid ""
+"If <literal>OrderLine</literal> itself owns a collection, it also has a "
+"composite foreign key."
+msgstr ""
+"Si <literal>OrderLine</literal> posee una colección por sí misma, tiene "
+"también una clave foránea compuesta."
-#: index.docbook:234
+#. Tag: programlisting
+#: component_mapping.xml:234
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"OrderLine\">\n"
- " ....\n"
- " ....\n"
- " <list name=\"deliveryAttempts\">\n"
- " <key> <!-- a collection inherits the composite key type -->\n"
- " <column name=\"lineId\"/>\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- " </key>\n"
- " <list-index column=\"attemptId\" base=\"1\"/>\n"
- " <composite-element class=\"DeliveryAttempt\">\n"
- " ...\n"
- " </composite-element>\n"
- " </set>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"OrderLine\">\n"
+" ....\n"
+" ....\n"
+" <list name=\"deliveryAttempts\">\n"
+" <key> <!-- a collection inherits the composite key type -->\n"
+" <column name=\"lineId\"/>\n"
+" <column name=\"orderId\"/>\n"
+" <column name=\"customerId\"/>\n"
+" </key>\n"
+" <list-index column=\"attemptId\" base=\"1\"/>\n"
+" <composite-element class=\"DeliveryAttempt\">\n"
+" ...\n"
+" </composite-element>\n"
+" </set>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"OrderLine\">\n"
- " ....\n"
- " ....\n"
- " <list name=\"deliveryAttempts\">\n"
- " <key> <!-- a collection inherits the composite key type -->\n"
- " <column name=\"lineId\"/>\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- " </key>\n"
- " <list-index column=\"attemptId\" base=\"1\"/>\n"
- " <composite-element class=\"DeliveryAttempt\">\n"
- " ...\n"
- " </composite-element>\n"
- " </set>\n"
- "</class>]]>"
-#: index.docbook:239
+#. Tag: title
+#: component_mapping.xml:239
+#, no-c-format
msgid "Dynamic components"
-msgstr "Componentes dinámicos"
+msgstr "Componentes dinámicos"
-#: index.docbook:241
+#. Tag: para
+#: component_mapping.xml:241
+#, no-c-format
msgid "You may even map a property of type <literal>Map</literal>:"
msgstr "Puedes incluso mapear una propiedad de tipo <literal>Map</literal>:"
-#: index.docbook:245
+#. Tag: programlisting
+#: component_mapping.xml:245
+#, no-c-format
msgid ""
- "<![CDATA[<dynamic-component name=\"userAttributes\">\n"
- " <property name=\"foo\" column=\"FOO\" type=\"string\"/>\n"
- " <property name=\"bar\" column=\"BAR\" type=\"integer\"/>\n"
- " <many-to-one name=\"baz\" class=\"Baz\" column=\"BAZ_ID\"/>\n"
- "</dynamic-component>]]>"
+"<![CDATA[<dynamic-component name=\"userAttributes\">\n"
+" <property name=\"foo\" column=\"FOO\" type=\"string\"/>\n"
+" <property name=\"bar\" column=\"BAR\" type=\"integer\"/>\n"
+" <many-to-one name=\"baz\" class=\"Baz\" column=\"BAZ_ID\"/>\n"
+"</dynamic-component>]]>"
msgstr ""
- "<![CDATA[<dynamic-component name=\"userAttributes\">\n"
- " <property name=\"foo\" column=\"FOO\" type=\"string\"/>\n"
- " <property name=\"bar\" column=\"BAR\" type=\"integer\"/>\n"
- " <many-to-one name=\"baz\" class=\"Baz\" column=\"BAZ_ID\"/>\n"
- "</dynamic-component>]]>"
-#: index.docbook:247
-msgid "The semantics of a <literal><dynamic-component></literal> mapping are identical to <literal><component></literal>. The advantage of this kind of mapping is the ability to determine the actual properties of the bean at deployment time, just by editing the mapping document. Runtime manipulation of the mapping document is also possible, using a DOM parser. Even better, you can access (and change) Hibernate's configuration-time metamodel via the <literal>Configuration</literal> object."
-msgstr "La semántica de un mapeo <literal><dynamic-component></literal> es ídentica a la de <literal><component></literal>. La ventaja de este tipo de mapeos es la habilidad para determinar las propiedades reales del bean en tiempo de despliegue, sólo con editar el documento de mapeo. La manipulación del documento de mapeo en tiempo de ejecución es también posible, usando un analizador DOM. Incluso mejor, puedes acceder (y cambiar) el metamodelo de tiempo de configuración de Hibernate por medio del objeto <literal>Configuration</literal>."
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: para
+#: component_mapping.xml:247
+#, no-c-format
+msgid ""
+"The semantics of a <literal><dynamic-component></literal> mapping are "
+"identical to <literal><component></literal>. The advantage of this "
+"kind of mapping is the ability to determine the actual properties of the "
+"bean at deployment time, just by editing the mapping document. Runtime "
+"manipulation of the mapping document is also possible, using a DOM parser. "
+"Even better, you can access (and change) Hibernate's configuration-time "
+"metamodel via the <literal>Configuration</literal> object."
+msgstr ""
+"La semántica de un mapeo <literal><dynamic-component></literal> es "
+"ídentica a la de <literal><component></literal>. La ventaja de este "
+"tipo de mapeos es la habilidad para determinar las propiedades reales del "
+"bean en tiempo de despliegue, sólo con editar el documento de mapeo. La "
+"manipulación del documento de mapeo en tiempo de ejecución es también "
+"posible, usando un analizador DOM. Incluso mejor, puedes acceder (y cambiar) "
+"el metamodelo de tiempo de configuración de Hibernate por medio del objeto "
+"<literal>Configuration</literal>."
Modified: core/trunk/documentation/manual/translations/es-ES/content/configuration.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/configuration.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/configuration.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,1598 +1,3898 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: configuration.xml:5
+#, no-c-format
msgid "Configuration"
-msgstr "Configuración"
+msgstr "Configuración"
-#: index.docbook:7
-msgid "Because Hibernate is designed to operate in many different environments, there are a large number of configuration parameters. Fortunately, most have sensible default values and Hibernate is distributed with an example <literal>hibernate.properties</literal> file in <literal>etc/</literal> that shows the various options. Just put the example file in your classpath and customize it."
-msgstr "Debido a que Hibernate está diseñado para operar en muchos entornos diferentes, hay un gran número de parámetros de configuración. Afortunadamente, la mayoría tiene valores por defecto sensibles e Hibernate se distribuye con un fichero <literal>hibernate.properties</literal> de ejemplo en <literal>etc/</literal> que muestra las diversas opciones. Tan sólo pon el fichero de ejemplo en tu classpath y personalízalo."
+#. Tag: para
+#: configuration.xml:7
+#, no-c-format
+msgid ""
+"Because Hibernate is designed to operate in many different environments, "
+"there are a large number of configuration parameters. Fortunately, most have "
+"sensible default values and Hibernate is distributed with an example "
+"<literal>hibernate.properties</literal> file in <literal>etc/</literal> that "
+"shows the various options. Just put the example file in your classpath and "
+"customize it."
+msgstr ""
+"Debido a que Hibernate está diseñado para operar en muchos entornos "
+"diferentes, hay un gran número de parámetros de configuración. "
+"Afortunadamente, la mayoría tiene valores por defecto sensibles e Hibernate "
+"se distribuye con un fichero <literal>hibernate.properties</literal> de "
+"ejemplo en <literal>etc/</literal> que muestra las diversas opciones. Tan "
+"sólo pon el fichero de ejemplo en tu classpath y personalízalo."
-#: index.docbook:16
+#. Tag: title
+#: configuration.xml:16
+#, no-c-format
msgid "Programmatic configuration"
-msgstr "Configuración programática"
+msgstr "Configuración programática"
-#: index.docbook:18
-msgid "An instance of <literal>org.hibernate.cfg.Configuration</literal> represents an entire set of mappings of an application's Java types to an SQL database. The <literal>Configuration</literal> is used to build an (immutable) <literal>SessionFactory</literal>. The mappings are compiled from various XML mapping files."
-msgstr "Una instancia de <literal>org.hibernate.cfg.Configuration</literal> representa un conjunto entero de mapeos de los tipos Java de una aplicación a una base de datos SQL. La <literal>Configuration</literal> es usada para construir una <literal>SessionFactory</literal> (inmutable). Los mapeos se compilan de varios ficheros de mapeo XML."
+#. Tag: para
+#: configuration.xml:18
+#, no-c-format
+msgid ""
+"An instance of <literal>org.hibernate.cfg.Configuration</literal> represents "
+"an entire set of mappings of an application's Java types to an SQL database. "
+"The <literal>Configuration</literal> is used to build an (immutable) "
+"<literal>SessionFactory</literal>. The mappings are compiled from various "
+"XML mapping files."
+msgstr ""
+"Una instancia de <literal>org.hibernate.cfg.Configuration</literal> "
+"representa un conjunto entero de mapeos de los tipos Java de una aplicación "
+"a una base de datos SQL. La <literal>Configuration</literal> es usada para "
+"construir una <literal>SessionFactory</literal> (inmutable). Los mapeos se "
+"compilan de varios ficheros de mapeo XML."
-#: index.docbook:26
-msgid "You may obtain a <literal>Configuration</literal> instance by instantiating it directly and specifying XML mapping documents. If the mapping files are in the classpath, use <literal>addResource()</literal>:"
-msgstr "Puedes obtener una instancia de <literal>Configuration</literal> instanciándola directamente y especificando documentos de mapeo XML. Si los ficheros de mapeo están en el classpath, usa <literal>addResource()</literal>:"
+#. Tag: para
+#: configuration.xml:26
+#, no-c-format
+msgid ""
+"You may obtain a <literal>Configuration</literal> instance by instantiating "
+"it directly and specifying XML mapping documents. If the mapping files are "
+"in the classpath, use <literal>addResource()</literal>:"
+msgstr ""
+"Puedes obtener una instancia de <literal>Configuration</literal> "
+"instanciándola directamente y especificando documentos de mapeo XML. Si los "
+"ficheros de mapeo están en el classpath, usa <literal>addResource()</"
+"literal>:"
-#: index.docbook:32
+#. Tag: programlisting
+#: configuration.xml:32
+#, no-c-format
msgid ""
- "<![CDATA[Configuration cfg = new Configuration()\n"
- " .addResource(\"Item.hbm.xml\")\n"
- " .addResource(\"Bid.hbm.xml\");]]>"
+"<![CDATA[Configuration cfg = new Configuration()\n"
+" .addResource(\"Item.hbm.xml\")\n"
+" .addResource(\"Bid.hbm.xml\");]]>"
msgstr ""
- "<![CDATA[Configuration cfg = new Configuration()\n"
- " .addResource(\"Item.hbm.xml\")\n"
- " .addResource(\"Bid.hbm.xml\");]]>"
-#: index.docbook:34
-msgid "An alternative (sometimes better) way is to specify the mapped class, and let Hibernate find the mapping document for you:"
-msgstr "Una forma alternativa (a veces mejor) es especificar la clase mapeada, y dejar que Hibernate encuentre el documento de mapeo por ti:"
+#. Tag: para
+#: configuration.xml:34
+#, no-c-format
+msgid ""
+"An alternative (sometimes better) way is to specify the mapped class, and "
+"let Hibernate find the mapping document for you:"
+msgstr ""
+"Una forma alternativa (a veces mejor) es especificar la clase mapeada, y "
+"dejar que Hibernate encuentre el documento de mapeo por ti:"
-#: index.docbook:39
+#. Tag: programlisting
+#: configuration.xml:39
+#, no-c-format
msgid ""
- "<![CDATA[Configuration cfg = new Configuration()\n"
- " .addClass(org.hibernate.auction.Item.class)\n"
- " .addClass(org.hibernate.auction.Bid.class);]]>"
+"<![CDATA[Configuration cfg = new Configuration()\n"
+" .addClass(org.hibernate.auction.Item.class)\n"
+" .addClass(org.hibernate.auction.Bid.class);]]>"
msgstr ""
- "<![CDATA[Configuration cfg = new Configuration()\n"
- " .addClass(org.hibernate.auction.Item.class)\n"
- " .addClass(org.hibernate.auction.Bid.class);]]>"
-#: index.docbook:41
-msgid "Then Hibernate will look for mapping files named <literal>/org/hibernate/auction/Item.hbm.xml</literal> and <literal>/org/hibernate/auction/Bid.hbm.xml</literal> in the classpath. This approach eliminates any hardcoded filenames."
-msgstr "Entonces Hibernate buscará ficheros de mapeo llamados <literal>/org/hibernate/auction/Item.hbm.xml</literal> y <literal>/org/hibernate/auction/Bid.hbm.xml</literal> en el classpath. Este enfoque elimina cualquier nombre de fichero en el código."
+#. Tag: para
+#: configuration.xml:41
+#, no-c-format
+msgid ""
+"Then Hibernate will look for mapping files named <literal>/org/hibernate/"
+"auction/Item.hbm.xml</literal> and <literal>/org/hibernate/auction/Bid.hbm."
+"xml</literal> in the classpath. This approach eliminates any hardcoded "
+"filenames."
+msgstr ""
+"Entonces Hibernate buscará ficheros de mapeo llamados <literal>/org/"
+"hibernate/auction/Item.hbm.xml</literal> y <literal>/org/hibernate/auction/"
+"Bid.hbm.xml</literal> en el classpath. Este enfoque elimina cualquier nombre "
+"de fichero en el código."
-#: index.docbook:48
-msgid "A <literal>Configuration</literal> also allows you to specify configuration properties:"
-msgstr "Una <literal>Configuration</literal> también te permite especificar propiedades de configuración:"
+#. Tag: para
+#: configuration.xml:48
+#, no-c-format
+msgid ""
+"A <literal>Configuration</literal> also allows you to specify configuration "
+"properties:"
+msgstr ""
+"Una <literal>Configuration</literal> también te permite especificar "
+"propiedades de configuración:"
-#: index.docbook:53
+#. Tag: programlisting
+#: configuration.xml:53
+#, no-c-format
msgid ""
- "<![CDATA[Configuration cfg = new Configuration()\n"
- " .addClass(org.hibernate.auction.Item.class)\n"
- " .addClass(org.hibernate.auction.Bid.class)\n"
- " .setProperty(\"hibernate.dialect\", \"org.hibernate.dialect.MySQLInnoDBDialect\")\n"
- " .setProperty(\"hibernate.connection.datasource\", \"java:comp/env/jdbc/test\")\n"
- " .setProperty(\"hibernate.order_updates\", \"true\");]]>"
+"<![CDATA[Configuration cfg = new Configuration()\n"
+" .addClass(org.hibernate.auction.Item.class)\n"
+" .addClass(org.hibernate.auction.Bid.class)\n"
+" .setProperty(\"hibernate.dialect\", \"org.hibernate.dialect."
+"MySQLInnoDBDialect\")\n"
+" .setProperty(\"hibernate.connection.datasource\", \"java:comp/env/jdbc/"
+"test\")\n"
+" .setProperty(\"hibernate.order_updates\", \"true\");]]>"
msgstr ""
- "<![CDATA[Configuration cfg = new Configuration()\n"
- " .addClass(org.hibernate.auction.Item.class)\n"
- " .addClass(org.hibernate.auction.Bid.class)\n"
- " .setProperty(\"hibernate.dialect\", \"org.hibernate.dialect.MySQLInnoDBDialect\")\n"
- " .setProperty(\"hibernate.connection.datasource\", \"java:comp/env/jdbc/test\")\n"
- " .setProperty(\"hibernate.order_updates\", \"true\");]]>"
-#: index.docbook:55
-msgid "This is not the only way to pass configuration properties to Hibernate. The various options include:"
-msgstr "Esta no es la única forma de pasar propiedades de configuración a Hibernate. La diversas opciones incluyen:"
+#. Tag: para
+#: configuration.xml:55
+#, no-c-format
+msgid ""
+"This is not the only way to pass configuration properties to Hibernate. The "
+"various options include:"
+msgstr ""
+"Esta no es la única forma de pasar propiedades de configuración a Hibernate. "
+"La diversas opciones incluyen:"
-#: index.docbook:62
-msgid "Pass an instance of <literal>java.util.Properties</literal> to <literal>Configuration.setProperties()</literal>."
-msgstr "Pasar una instancia de <literal>java.util.Properties</literal> a <literal>Configuration.setProperties()</literal>."
+#. Tag: para
+#: configuration.xml:62
+#, no-c-format
+msgid ""
+"Pass an instance of <literal>java.util.Properties</literal> to "
+"<literal>Configuration.setProperties()</literal>."
+msgstr ""
+"Pasar una instancia de <literal>java.util.Properties</literal> a "
+"<literal>Configuration.setProperties()</literal>."
-#: index.docbook:68
-msgid "Place <literal>hibernate.properties</literal> in a root directory of the classpath."
-msgstr "Colocar <literal>hibernate.properties</literal> en un directorio raíz del classpath."
+#. Tag: para
+#: configuration.xml:68
+#, no-c-format
+msgid ""
+"Place <literal>hibernate.properties</literal> in a root directory of the "
+"classpath."
+msgstr ""
+"Colocar <literal>hibernate.properties</literal> en un directorio raíz del "
+"classpath."
-#: index.docbook:74
-msgid "Set <literal>System</literal> properties using <literal>java -Dproperty=value</literal>."
-msgstr "Establecer propiedades <literal>System</literal> usando <literal>java -Dproperty=value</literal>."
+#. Tag: para
+#: configuration.xml:74
+#, no-c-format
+msgid ""
+"Set <literal>System</literal> properties using <literal>java -"
+"Dproperty=value</literal>."
+msgstr ""
+"Establecer propiedades <literal>System</literal> usando <literal>java -"
+"Dproperty=value</literal>."
-#: index.docbook:80
-msgid "Include <literal><property></literal> elements in <literal>hibernate.cfg.xml</literal> (discussed later)."
-msgstr "Incluir elementos <literal><property></literal> en <literal>hibernate.cfg.xml</literal> (discutido luego)."
+#. Tag: para
+#: configuration.xml:80
+#, no-c-format
+msgid ""
+"Include <literal><property></literal> elements in <literal>hibernate."
+"cfg.xml</literal> (discussed later)."
+msgstr ""
+"Incluir elementos <literal><property></literal> en <literal>hibernate."
+"cfg.xml</literal> (discutido luego)."
-#: index.docbook:87
-msgid "<literal>hibernate.properties</literal> is the easiest approach if you want to get started quickly."
-msgstr "<literal>hibernate.properties</literal> es el enfoque más fácil si quieres comenzar rápido."
+#. Tag: para
+#: configuration.xml:87
+#, no-c-format
+msgid ""
+"<literal>hibernate.properties</literal> is the easiest approach if you want "
+"to get started quickly."
+msgstr ""
+"<literal>hibernate.properties</literal> es el enfoque más fácil si quieres "
+"comenzar rápido."
-#: index.docbook:92
-msgid "The <literal>Configuration</literal> is intended as a startup-time object, to be discarded once a <literal>SessionFactory</literal> is created."
-msgstr "La <literal>Configuration</literal> está concebida como un objeto de tiempo de arranque, para ser descartado una vez que una <literal>SessionFactory</literal> es creada."
+#. Tag: para
+#: configuration.xml:92
+#, no-c-format
+msgid ""
+"The <literal>Configuration</literal> is intended as a startup-time object, "
+"to be discarded once a <literal>SessionFactory</literal> is created."
+msgstr ""
+"La <literal>Configuration</literal> está concebida como un objeto de tiempo "
+"de arranque, para ser descartado una vez que una <literal>SessionFactory</"
+"literal> es creada."
-#: index.docbook:100
+#. Tag: title
+#: configuration.xml:100
+#, no-c-format
msgid "Obtaining a SessionFactory"
msgstr "Obteniendo una SessionFactory"
-#: index.docbook:102
-msgid "When all mappings have been parsed by the <literal>Configuration</literal>, the application must obtain a factory for <literal>Session</literal> instances. This factory is intended to be shared by all application threads:"
-msgstr "Cuando todos los mapeos han sido parseados por la <literal>Configuration</literal>, la aplicación debe obtener una fábrica de instancias de <literal>Session</literal>. Esta fábrica está concebida para ser compartida por todas las hebras de aplicación:"
+#. Tag: para
+#: configuration.xml:102
+#, no-c-format
+msgid ""
+"When all mappings have been parsed by the <literal>Configuration</literal>, "
+"the application must obtain a factory for <literal>Session</literal> "
+"instances. This factory is intended to be shared by all application threads:"
+msgstr ""
+"Cuando todos los mapeos han sido parseados por la <literal>Configuration</"
+"literal>, la aplicación debe obtener una fábrica de instancias de "
+"<literal>Session</literal>. Esta fábrica está concebida para ser compartida "
+"por todas las hebras de aplicación:"
-#: index.docbook:108
+#. Tag: programlisting
+#: configuration.xml:108
+#, no-c-format
msgid "<![CDATA[SessionFactory sessions = cfg.buildSessionFactory();]]>"
-msgstr "<![CDATA[SessionFactory sessions = cfg.buildSessionFactory();]]>"
+msgstr ""
-#: index.docbook:110
-msgid "Hibernate does allow your application to instantiate more than one <literal>SessionFactory</literal>. This is useful if you are using more than one database."
-msgstr "Hibernate permite que tu aplicación instancie más de una <literal>SessionFactory</literal>. Esto es útil si estás usando más de una base de datos."
+#. Tag: para
+#: configuration.xml:110
+#, no-c-format
+msgid ""
+"Hibernate does allow your application to instantiate more than one "
+"<literal>SessionFactory</literal>. This is useful if you are using more than "
+"one database."
+msgstr ""
+"Hibernate permite que tu aplicación instancie más de una "
+"<literal>SessionFactory</literal>. Esto es útil si estás usando más de una "
+"base de datos."
-#: index.docbook:119
+#. Tag: title
+#: configuration.xml:119
+#, no-c-format
msgid "JDBC connections"
msgstr "Conexiones JDBC"
-#: index.docbook:121
-msgid "Usually, you want to have the <literal>SessionFactory</literal> create and pool JDBC connections for you. If you take this approach, opening a <literal>Session</literal> is as simple as:"
-msgstr "Usualmente, quieres que la <literal>SessionFactory</literal> cree y almacene en pool conexiones JDBC para ti. Si adoptas este enfoque, abrir una <literal>Session</literal> es tan simple como:"
+#. Tag: para
+#: configuration.xml:121
+#, no-c-format
+msgid ""
+"Usually, you want to have the <literal>SessionFactory</literal> create and "
+"pool JDBC connections for you. If you take this approach, opening a "
+"<literal>Session</literal> is as simple as:"
+msgstr ""
+"Usualmente, quieres que la <literal>SessionFactory</literal> cree y almacene "
+"en pool conexiones JDBC para ti. Si adoptas este enfoque, abrir una "
+"<literal>Session</literal> es tan simple como:"
-#: index.docbook:127
-msgid "<![CDATA[Session session = sessions.openSession(); // open a new Session]]>"
-msgstr "<![CDATA[Session session = sessions.openSession(); // open a new Session]]>"
+#. Tag: programlisting
+#: configuration.xml:127
+#, no-c-format
+msgid ""
+"<![CDATA[Session session = sessions.openSession(); // open a new Session]]>"
+msgstr ""
-#: index.docbook:129
-msgid "As soon as you do something that requires access to the database, a JDBC connection will be obtained from the pool."
-msgstr "En cuanto hagas algo que requiera acceso a la base de datos, se obtendrá una conexión JDBC del pool."
+#. Tag: para
+#: configuration.xml:129
+#, no-c-format
+msgid ""
+"As soon as you do something that requires access to the database, a JDBC "
+"connection will be obtained from the pool."
+msgstr ""
+"En cuanto hagas algo que requiera acceso a la base de datos, se obtendrá una "
+"conexión JDBC del pool."
-#: index.docbook:134
-msgid "For this to work, we need to pass some JDBC connection properties to Hibernate. All Hibernate property names and semantics are defined on the class <literal>org.hibernate.cfg.Environment</literal>. We will now describe the most important settings for JDBC connection configuration."
-msgstr "Para que esto funcione, necesitamos pasar algunas propiedades de conexión JDBC a Hibernate. Todos los nombres de propiedades y su semántica están definidas en la clase <literal>org.hibernate.cfg.Environment</literal>. Describiremos ahora las configuraciones más importantes para la conexión JDBC."
+#. Tag: para
+#: configuration.xml:134
+#, no-c-format
+msgid ""
+"For this to work, we need to pass some JDBC connection properties to "
+"Hibernate. All Hibernate property names and semantics are defined on the "
+"class <literal>org.hibernate.cfg.Environment</literal>. We will now describe "
+"the most important settings for JDBC connection configuration."
+msgstr ""
+"Para que esto funcione, necesitamos pasar algunas propiedades de conexión "
+"JDBC a Hibernate. Todos los nombres de propiedades y su semántica están "
+"definidas en la clase <literal>org.hibernate.cfg.Environment</literal>. "
+"Describiremos ahora las configuraciones más importantes para la conexión "
+"JDBC."
-#: index.docbook:141
-msgid "Hibernate will obtain (and pool) connections using <literal>java.sql.DriverManager</literal> if you set the following properties:"
-msgstr "Hibernate obtendrá (y tendrá en pool) conexiones usando <literal>java.sql.DriverManager</literal> si configuras las siguientes propiedades:"
+#. Tag: para
+#: configuration.xml:141
+#, no-c-format
+msgid ""
+"Hibernate will obtain (and pool) connections using <literal>java.sql."
+"DriverManager</literal> if you set the following properties:"
+msgstr ""
+"Hibernate obtendrá (y tendrá en pool) conexiones usando <literal>java.sql."
+"DriverManager</literal> si configuras las siguientes propiedades:"
-#: index.docbook:147
+#. Tag: title
+#: configuration.xml:147
+#, no-c-format
msgid "Hibernate JDBC Properties"
msgstr "Propiedades JDBC de Hibernate"
-#: index.docbook:153, index.docbook:241, index.docbook:338, index.docbook:529, index.docbook:725, index.docbook:832, index.docbook:920
+#. Tag: entry
+#: configuration.xml:153 configuration.xml:241 configuration.xml:338
+#: configuration.xml:529 configuration.xml:725 configuration.xml:832
+#: configuration.xml:920
+#, no-c-format
msgid "Property name"
msgstr "Nombre de propiedad"
-#: index.docbook:154, index.docbook:242, index.docbook:339, index.docbook:530, index.docbook:726, index.docbook:833, index.docbook:921
+#. Tag: entry
+#: configuration.xml:154 configuration.xml:242 configuration.xml:339
+#: configuration.xml:530 configuration.xml:726 configuration.xml:833
+#: configuration.xml:921
+#, fuzzy, no-c-format
msgid "Purpose"
-msgstr "Propósito"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"Propósito\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"Propósito\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"Propósito\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"Propoósito\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"Propósito\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"Propósito\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"Propósito"
-#: index.docbook:160
+#. Tag: literal
+#: configuration.xml:160
+#, no-c-format
msgid "hibernate.connection.driver_class"
msgstr "hibernate.connection.driver_class"
-#: index.docbook:163
+#. Tag: emphasis
+#: configuration.xml:163
+#, no-c-format
msgid "JDBC driver class"
msgstr "clase del driver jdbc"
-#: index.docbook:168
+#. Tag: literal
+#: configuration.xml:168
+#, no-c-format
msgid "hibernate.connection.url"
msgstr "hibernate.connection.url"
-#: index.docbook:171
+#. Tag: emphasis
+#: configuration.xml:171
+#, no-c-format
msgid "JDBC URL"
msgstr "URL de jdbc"
-#: index.docbook:176, index.docbook:272
+#. Tag: literal
+#: configuration.xml:176 configuration.xml:272
+#, no-c-format
msgid "hibernate.connection.username"
msgstr "hibernate.connection.username"
-#: index.docbook:179
+#. Tag: emphasis
+#: configuration.xml:179
+#, no-c-format
msgid "database user"
msgstr "usuario de base de datos"
-#: index.docbook:184, index.docbook:280
+#. Tag: literal
+#: configuration.xml:184 configuration.xml:280
+#, no-c-format
msgid "hibernate.connection.password"
msgstr "hibernate.connection.password"
-#: index.docbook:187
+#. Tag: emphasis
+#: configuration.xml:187
+#, no-c-format
msgid "database user password"
-msgstr "contraseña del usuario de base de datos"
+msgstr "contraseña del usuario de base de datos"
-#: index.docbook:192
+#. Tag: literal
+#: configuration.xml:192
+#, no-c-format
msgid "hibernate.connection.pool_size"
msgstr "hibernate.connection.pool_size"
-#: index.docbook:195
+#. Tag: emphasis
+#: configuration.xml:195
+#, no-c-format
msgid "maximum number of pooled connections"
-msgstr "número máximo de conexiones manejadas por pooling"
+msgstr "número máximo de conexiones manejadas por pooling"
-#: index.docbook:202
-msgid "Hibernate's own connection pooling algorithm is however quite rudimentary. It is intended to help you get started and is <emphasis>not intended for use in a production system</emphasis> or even for performance testing. You should use a third party pool for best performance and stability. Just replace the <literal>hibernate.connection.pool_size</literal> property with connection pool specific settings. This will turn off Hibernate's internal pool. For example, you might like to use C3P0."
-msgstr "El algoritmo de pooling de conexiones propio de Hibernate es sin embargo algo rudimentario. Está concebido para ayudarte a comenzar y <emphasis>no está concebido para usar en un sistema de producción</emphasis> ni siquiera para pruebas de rendimiento. Debes usar un pool de terceros para un mejor rendimiento y estabilidad. Sólo remplaza la propiedad <literal>hibernate.connection.pool_size</literal> con configuraciones específicas del pool de conexiones. Esto desactivará el pool interno de Hibernate. Por ejemplo, podrías querer usar C3P0."
+#. Tag: para
+#: configuration.xml:202
+#, no-c-format
+msgid ""
+"Hibernate's own connection pooling algorithm is however quite rudimentary. "
+"It is intended to help you get started and is <emphasis>not intended for use "
+"in a production system</emphasis> or even for performance testing. You "
+"should use a third party pool for best performance and stability. Just "
+"replace the <literal>hibernate.connection.pool_size</literal> property with "
+"connection pool specific settings. This will turn off Hibernate's internal "
+"pool. For example, you might like to use C3P0."
+msgstr ""
+"El algoritmo de pooling de conexiones propio de Hibernate es sin embargo "
+"algo rudimentario. Está concebido para ayudarte a comenzar y <emphasis>no "
+"está concebido para usar en un sistema de producción</emphasis> ni siquiera "
+"para pruebas de rendimiento. Debes usar un pool de terceros para un mejor "
+"rendimiento y estabilidad. Sólo remplaza la propiedad <literal>hibernate."
+"connection.pool_size</literal> con configuraciones específicas del pool de "
+"conexiones. Esto desactivará el pool interno de Hibernate. Por ejemplo, "
+"podrías querer usar C3P0."
-#: index.docbook:212
-msgid "C3P0 is an open source JDBC connection pool distributed along with Hibernate in the <literal>lib</literal> directory. Hibernate will use its <literal>C3P0ConnectionProvider</literal> for connection pooling if you set <literal>hibernate.c3p0.*</literal> properties. If you'd like to use Proxool refer to the packaged <literal>hibernate.properties</literal> and the Hibernate web site for more information."
-msgstr "C3P0 es un pool de conexiones JDBC de código abierto distribuido junto a Hibernate en el directorio <literal>lib</literal>. Hibernate usará su <literal>C3P0ConnectionProvider</literal> para pooling de conexiones si estableces propiedades <literal>hibernate.c3p0.*</literal>. Si quieres usar Proxool refiérete al <literal>hibernate.properties</literal> empaquetado y al sitio web de Hibernate para más información."
+#. Tag: para
+#: configuration.xml:212
+#, no-c-format
+msgid ""
+"C3P0 is an open source JDBC connection pool distributed along with Hibernate "
+"in the <literal>lib</literal> directory. Hibernate will use its "
+"<literal>C3P0ConnectionProvider</literal> for connection pooling if you set "
+"<literal>hibernate.c3p0.*</literal> properties. If you'd like to use Proxool "
+"refer to the packaged <literal>hibernate.properties</literal> and the "
+"Hibernate web site for more information."
+msgstr ""
+"C3P0 es un pool de conexiones JDBC de código abierto distribuido junto a "
+"Hibernate en el directorio <literal>lib</literal>. Hibernate usará su "
+"<literal>C3P0ConnectionProvider</literal> para pooling de conexiones si "
+"estableces propiedades <literal>hibernate.c3p0.*</literal>. Si quieres usar "
+"Proxool refiérete al <literal>hibernate.properties</literal> empaquetado y "
+"al sitio web de Hibernate para más información."
-#: index.docbook:221
-msgid "Here is an example <literal>hibernate.properties</literal> file for C3P0:"
-msgstr "Aquí hay un fichero <literal>hibernate.properties</literal> de ejemplo para C3P0:"
+#. Tag: para
+#: configuration.xml:221
+#, no-c-format
+msgid ""
+"Here is an example <literal>hibernate.properties</literal> file for C3P0:"
+msgstr ""
+"Aquí hay un fichero <literal>hibernate.properties</literal> de ejemplo para "
+"C3P0:"
-#: index.docbook:225
+#. Tag: programlisting
+#: configuration.xml:225
+#, no-c-format
msgid ""
- "<![CDATA[hibernate.connection.driver_class = org.postgresql.Driver\n"
- "hibernate.connection.url = jdbc:postgresql://localhost/mydatabase\n"
- "hibernate.connection.username = myuser\n"
- "hibernate.connection.password = secret\n"
- "hibernate.c3p0.min_size=5\n"
- "hibernate.c3p0.max_size=20\n"
- "hibernate.c3p0.timeout=1800\n"
- "hibernate.c3p0.max_statements=50\n"
- "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
+"<![CDATA[hibernate.connection.driver_class = org.postgresql.Driver\n"
+"hibernate.connection.url = jdbc:postgresql://localhost/mydatabase\n"
+"hibernate.connection.username = myuser\n"
+"hibernate.connection.password = secret\n"
+"hibernate.c3p0.min_size=5\n"
+"hibernate.c3p0.max_size=20\n"
+"hibernate.c3p0.timeout=1800\n"
+"hibernate.c3p0.max_statements=50\n"
+"hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
msgstr ""
- "<![CDATA[hibernate.connection.driver_class = org.postgresql.Driver\n"
- "hibernate.connection.url = jdbc:postgresql://localhost/mydatabase\n"
- "hibernate.connection.username = myuser\n"
- "hibernate.connection.password = secret\n"
- "hibernate.c3p0.min_size=5\n"
- "hibernate.c3p0.max_size=20\n"
- "hibernate.c3p0.timeout=1800\n"
- "hibernate.c3p0.max_statements=50\n"
- "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
-#: index.docbook:227
-msgid "For use inside an application server, you should almost always configure Hibernate to obtain connections from an application server <literal>Datasource</literal> registered in JNDI. You'll need to set at least one of the following properties:"
-msgstr "Para su uso en un servidor de aplicaciones, casi siempre debes configurar Hibernate para que obtenga conexiones de un <literal>Datasource</literal> del servidor de aplicaciones registrado en JNDI. Necesitarás establecer al menos una de las siguientes propiedades:"
+#. Tag: para
+#: configuration.xml:227
+#, no-c-format
+msgid ""
+"For use inside an application server, you should almost always configure "
+"Hibernate to obtain connections from an application server "
+"<literal>Datasource</literal> registered in JNDI. You'll need to set at "
+"least one of the following properties:"
+msgstr ""
+"Para su uso en un servidor de aplicaciones, casi siempre debes configurar "
+"Hibernate para que obtenga conexiones de un <literal>Datasource</literal> "
+"del servidor de aplicaciones registrado en JNDI. Necesitarás establecer al "
+"menos una de las siguientes propiedades:"
-#: index.docbook:235
+#. Tag: title
+#: configuration.xml:235
+#, no-c-format
msgid "Hibernate Datasource Properties"
msgstr "Propiedades de Datasource de Hibernate"
-#: index.docbook:248
+#. Tag: literal
+#: configuration.xml:248
+#, no-c-format
msgid "hibernate.connection.datasource"
msgstr "hibernate.connection.datasource"
-#: index.docbook:251
+#. Tag: emphasis
+#: configuration.xml:251
+#, no-c-format
msgid "datasource JNDI name"
msgstr "nombre del datasource JNDI"
-#: index.docbook:256
+#. Tag: literal
+#: configuration.xml:256
+#, no-c-format
msgid "hibernate.jndi.url"
msgstr "hibernate.jndi.url"
-#: index.docbook:258
+#. Tag: entry
+#: configuration.xml:258
+#, fuzzy, no-c-format
msgid "<emphasis>URL of the JNDI provider</emphasis> (optional)"
-msgstr "<emphasis>URL del provedor JNDI</emphasis> (optional)"
+msgstr "URL del provedor JNDI"
-#: index.docbook:264
+#. Tag: literal
+#: configuration.xml:264
+#, no-c-format
msgid "hibernate.jndi.class"
msgstr "hibernate.jndi.class"
-#: index.docbook:266
-msgid "<emphasis>class of the JNDI <literal>InitialContextFactory</literal></emphasis> (optional)"
-msgstr "<emphasis>clase de la <literal>InitialContextFactory</literal> de JNDI</emphasis> (opcional)"
+#. Tag: entry
+#: configuration.xml:266
+#, no-c-format
+msgid ""
+"<emphasis>class of the JNDI <literal>InitialContextFactory</literal></"
+"emphasis> (optional)"
+msgstr ""
-#: index.docbook:274
+#. Tag: entry
+#: configuration.xml:274
+#, no-c-format
msgid "<emphasis>database user</emphasis> (optional)"
-msgstr "<emphasis>usuario de base de datos</emphasis> (opcional)"
+msgstr ""
-#: index.docbook:282
+#. Tag: entry
+#: configuration.xml:282
+#, no-c-format
msgid "<emphasis>database user password</emphasis> (optional)"
-msgstr "<emphasis>contraseña del usuario de base de datos</emphasis> (opcional)"
+msgstr ""
-#: index.docbook:290
-msgid "Here's an example <literal>hibernate.properties</literal> file for an application server provided JNDI datasource:"
-msgstr "He aquí un fichero <literal>hibernate.properties</literal> de ejemplo para un un datasource JNDI provisto por un servidor de aplicaciones."
+#. Tag: para
+#: configuration.xml:290
+#, no-c-format
+msgid ""
+"Here's an example <literal>hibernate.properties</literal> file for an "
+"application server provided JNDI datasource:"
+msgstr ""
+"He aquí un fichero <literal>hibernate.properties</literal> de ejemplo para "
+"un un datasource JNDI provisto por un servidor de aplicaciones."
-#: index.docbook:295
+#. Tag: programlisting
+#: configuration.xml:295
+#, no-c-format
msgid ""
- "<![CDATA[hibernate.connection.datasource = java:/comp/env/jdbc/test\n"
- "hibernate.transaction.factory_class = \\\n"
- " org.hibernate.transaction.JTATransactionFactory\n"
- "hibernate.transaction.manager_lookup_class = \\\n"
- " org.hibernate.transaction.JBossTransactionManagerLookup\n"
- "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
+"<![CDATA[hibernate.connection.datasource = java:/comp/env/jdbc/test\n"
+"hibernate.transaction.factory_class = \\\n"
+" org.hibernate.transaction.JTATransactionFactory\n"
+"hibernate.transaction.manager_lookup_class = \\\n"
+" org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
msgstr ""
- "<![CDATA[hibernate.connection.datasource = java:/comp/env/jdbc/test\n"
- "hibernate.transaction.factory_class = \\\n"
- " org.hibernate.transaction.JTATransactionFactory\n"
- "hibernate.transaction.manager_lookup_class = \\\n"
- " org.hibernate.transaction.JBossTransactionManagerLookup\n"
- "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
-#: index.docbook:297
-msgid "JDBC connections obtained from a JNDI datasource will automatically participate in the container-managed transactions of the application server."
-msgstr "Las conexiones JDBC obtenidas de un datasource JNDI participarán automáticamente en las transacciones del servidor de aplicaciones manejadas por contenedor."
+#. Tag: para
+#: configuration.xml:297
+#, no-c-format
+msgid ""
+"JDBC connections obtained from a JNDI datasource will automatically "
+"participate in the container-managed transactions of the application server."
+msgstr ""
+"Las conexiones JDBC obtenidas de un datasource JNDI participarán "
+"automáticamente en las transacciones del servidor de aplicaciones manejadas "
+"por contenedor."
-#: index.docbook:302
-msgid "Arbitrary connection properties may be given by prepending \"<literal>hibernate.connection</literal>\" to the property name. For example, you may specify a <literal>charSet</literal> using <literal>hibernate.connection.charSet</literal>."
-msgstr "Pueden darse propiedades de conexión arbitrarias anteponiendo \"<literal>hibernate.connnection</literal>\" al nombre de propiedad. Por ejemplo, puedes especificar un <literal>charSet</literal> usando <literal>hibernate.connection.charSet</literal>."
+#. Tag: para
+#: configuration.xml:302
+#, no-c-format
+msgid ""
+"Arbitrary connection properties may be given by prepending "
+"\"<literal>hibernate.connection</literal>\" to the property name. For "
+"example, you may specify a <literal>charSet</literal> using "
+"<literal>hibernate.connection.charSet</literal>."
+msgstr ""
+"Pueden darse propiedades de conexión arbitrarias anteponiendo "
+"\"<literal>hibernate.connnection</literal>\" al nombre de propiedad. Por "
+"ejemplo, puedes especificar un <literal>charSet</literal> usando "
+"<literal>hibernate.connection.charSet</literal>."
-#: index.docbook:308
-msgid "You may define your own plugin strategy for obtaining JDBC connections by implementing the interface <literal>org.hibernate.connection.ConnectionProvider</literal>. You may select a custom implementation by setting <literal>hibernate.connection.provider_class</literal>."
-msgstr "Puedes definir tu propia estrategia de plugin para obtener conexiones JDBC implementando la interface <literal>org.hibernate.connection.ConnectionProvider</literal>. Puedes seleccionar una implementación personalizada estableciendo <literal>hibernate.connection.provider_class</literal>."
+#. Tag: para
+#: configuration.xml:308
+#, no-c-format
+msgid ""
+"You may define your own plugin strategy for obtaining JDBC connections by "
+"implementing the interface <literal>org.hibernate.connection."
+"ConnectionProvider</literal>. You may select a custom implementation by "
+"setting <literal>hibernate.connection.provider_class</literal>."
+msgstr ""
+"Puedes definir tu propia estrategia de plugin para obtener conexiones JDBC "
+"implementando la interface <literal>org.hibernate.connection."
+"ConnectionProvider</literal>. Puedes seleccionar una implementación "
+"personalizada estableciendo <literal>hibernate.connection.provider_class</"
+"literal>."
-#: index.docbook:317
+#. Tag: title
+#: configuration.xml:317
+#, no-c-format
msgid "Optional configuration properties"
-msgstr "Parámetros de configuración opcionales"
+msgstr "Parámetros de configuración opcionales"
-#: index.docbook:319
-msgid "There are a number of other properties that control the behaviour of Hibernate at runtime. All are optional and have reasonable default values."
-msgstr "Hay un número de otras propiedades que controlan el comportamiento de Hibernate en tiempo de ejecución. Todas son opcionales y tienen valores por defecto razonables."
+#. Tag: para
+#: configuration.xml:319
+#, no-c-format
+msgid ""
+"There are a number of other properties that control the behaviour of "
+"Hibernate at runtime. All are optional and have reasonable default values."
+msgstr ""
+"Hay un número de otras propiedades que controlan el comportamiento de "
+"Hibernate en tiempo de ejecución. Todas son opcionales y tienen valores por "
+"defecto razonables."
-#: index.docbook:324
-msgid "<emphasis>Warning: some of these properties are \"system-level\" only.</emphasis> System-level properties can be set only via <literal>java -Dproperty=value</literal> or <literal>hibernate.properties</literal>. They may <emphasis>not</emphasis> be set by the other techniques described above."
-msgstr "<emphasis>Advertencia: algunas de estas propiedades son de \"nivel-de-sistema\" solamente.</emphasis>. Las propiedades a nivel de sistema sólo pueden ser establecidas por medio de <literal>java -Dproperty=value</literal> o <literal>hibernate.properties</literal>. <emphasis>No</emphasis> pueden establecerse por medio de las otras técnicas arriba descritas."
+#. Tag: para
+#: configuration.xml:324
+#, no-c-format
+msgid ""
+"<emphasis>Warning: some of these properties are \"system-level\" only.</"
+"emphasis> System-level properties can be set only via <literal>java -"
+"Dproperty=value</literal> or <literal>hibernate.properties</literal>. They "
+"may <emphasis>not</emphasis> be set by the other techniques described above."
+msgstr ""
+"<emphasis>Advertencia: algunas de estas propiedades son de \"nivel-de-sistema"
+"\" solamente.</emphasis>. Las propiedades a nivel de sistema sólo pueden ser "
+"establecidas por medio de <literal>java -Dproperty=value</literal> o "
+"<literal>hibernate.properties</literal>. <emphasis>No</emphasis> pueden "
+"establecerse por medio de las otras técnicas arriba descritas."
-#: index.docbook:332
+#. Tag: title
+#: configuration.xml:332
+#, no-c-format
msgid "Hibernate Configuration Properties"
-msgstr "Propiedades de Configuración de Hibernate"
+msgstr "Propiedades de Configuración de Hibernate"
-#: index.docbook:345
+#. Tag: literal
+#: configuration.xml:345
+#, no-c-format
msgid "hibernate.dialect"
msgstr "hibernate.dialect"
-#: index.docbook:347
-msgid "The classname of a Hibernate <literal>Dialect</literal> which allows Hibernate to generate SQL optimized for a particular relational database."
-msgstr "El nombre de clase de un <literal>Dialect</literal> de Hibernate que permite a Hibernate generar SQL optimizado para una base de datos relacional en particular."
+#. Tag: entry
+#: configuration.xml:347
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a Hibernate <literal>Dialect</literal> which allows "
+"Hibernate to generate SQL optimized for a particular relational database."
+msgstr ""
+"El nombre de clase de un <placeholder-1/> de Hibernate que permite a "
+"Hibernate generar SQL optimizado para una base de datos relacional en "
+"particular. <placeholder-2/>"
-#: index.docbook:351
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>full.classname.of.Dialect</literal>"
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>full.classname.of.Dialect</literal>"
+#. Tag: para
+#: configuration.xml:351
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>full.classname.of.Dialect</"
+"literal>"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:359
+#. Tag: literal
+#: configuration.xml:359
+#, no-c-format
msgid "hibernate.show_sql"
msgstr "hibernate.show_sql"
-#: index.docbook:361
-msgid "Write all SQL statements to console. This is an alternative to setting the log category <literal>org.hibernate.SQL</literal> to <literal>debug</literal>."
-msgstr "Escribe todas las sentencias SQL a la consola."
+#. Tag: entry
+#: configuration.xml:361
+#, fuzzy, no-c-format
+msgid ""
+"Write all SQL statements to console. This is an alternative to setting the "
+"log category <literal>org.hibernate.SQL</literal> to <literal>debug</"
+"literal>."
+msgstr ""
+"Escribe todas las sentencias SQL a la consola. This is an alternative to "
+"setting the log category <placeholder-1/> to <placeholder-2/>. <placeholder-"
+"3/>"
-#: index.docbook:365, index.docbook:377, index.docbook:471, index.docbook:484, index.docbook:497, index.docbook:510, index.docbook:564, index.docbook:591, index.docbook:605, index.docbook:660, index.docbook:888, index.docbook:903, index.docbook:993
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>true</literal> | <literal>false</literal>"
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>true</literal> | <literal>false</literal>"
+#. Tag: para
+#: configuration.xml:365 configuration.xml:377 configuration.xml:471
+#: configuration.xml:484 configuration.xml:497 configuration.xml:510
+#: configuration.xml:564 configuration.xml:591 configuration.xml:605
+#: configuration.xml:660 configuration.xml:888 configuration.xml:903
+#: configuration.xml:993
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>true</literal> | "
+"<literal>false</literal>"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:373
+#. Tag: literal
+#: configuration.xml:373
+#, no-c-format
msgid "hibernate.format_sql"
-msgstr "hibernate.default_schema"
+msgstr "hibernate.format_sql"
-#: index.docbook:375
+#. Tag: entry
+#: configuration.xml:375
+#, fuzzy, no-c-format
msgid "Pretty print the SQL in the log and console."
-msgstr "Cualifica, en el SQL generado, los nombres de tabla sin cualificar con el esquema/tablespace dado."
+msgstr "Pretty print the SQL in the log and console. <placeholder-1/>"
-#: index.docbook:385
+#. Tag: literal
+#: configuration.xml:385
+#, no-c-format
msgid "hibernate.default_schema"
-msgstr "hibernate.default_catalog"
+msgstr "hibernate.default_schema"
-#: index.docbook:387
-msgid "Qualify unqualified table names with the given schema/tablespace in generated SQL."
-msgstr "Cualifica, en el SQL generado, los nombres de tabla sin cualificar con el catálogo dado."
+#. Tag: entry
+#: configuration.xml:387
+#, fuzzy, no-c-format
+msgid ""
+"Qualify unqualified table names with the given schema/tablespace in "
+"generated SQL."
+msgstr ""
+"Cualifica, en el SQL generado, los nombres de tabla sin cualificar con el "
+"esquema/tablespace dado. <placeholder-1/>"
-#: index.docbook:390
+#. Tag: para
+#: configuration.xml:390
+#, fuzzy, no-c-format
msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>SCHEMA_NAME</literal>"
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>CATALOG_NAME</literal>"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:398
+#. Tag: literal
+#: configuration.xml:398
+#, no-c-format
msgid "hibernate.default_catalog"
-msgstr "hibernate.session_factory_name"
+msgstr "hibernate.default_catalog"
-#: index.docbook:400
-msgid "Qualify unqualified table names with the given catalog in generated SQL."
-msgstr "La <literal>SessionFactory</literal> será ligada a este nombre en JNDI automáticamente después de ser creada."
+#. Tag: entry
+#: configuration.xml:400
+#, fuzzy, no-c-format
+msgid ""
+"Qualify unqualified table names with the given catalog in generated SQL."
+msgstr ""
+"Cualifica, en el SQL generado, los nombres de tabla sin cualificar con el "
+"catálogo dado. <placeholder-1/>"
-#: index.docbook:403
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>CATALOG_NAME</literal>"
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>jndi/composite/name</literal>"
+#. Tag: para
+#: configuration.xml:403
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>CATALOG_NAME</literal>"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:411
+#. Tag: literal
+#: configuration.xml:411
+#, no-c-format
msgid "hibernate.session_factory_name"
-msgstr "hibernate.max_fetch_depth"
+msgstr "hibernate.session_factory_name"
-#: index.docbook:413
-msgid "The <literal>SessionFactory</literal> will be automatically bound to this name in JNDI after it has been created."
-msgstr "Establece una \"profundidad\" máxima del árbol de recuperación por outer join para asociaciones de un extremo solo (uno-a-uno, muchos-a-uno). Un <literal>0</literal> deshabilita la recuperación por outer join por defecto."
+#. Tag: entry
+#: configuration.xml:413
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>SessionFactory</literal> will be automatically bound to this "
+"name in JNDI after it has been created."
+msgstr ""
+"La <placeholder-1/> será ligada a este nombre en JNDI automáticamente "
+"después de ser creada. <placeholder-2/>"
-#: index.docbook:416, index.docbook:859
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>jndi/composite/name</literal>"
-msgstr "<emphasis role=\"strong\">ej.</emphasis> valores recomendados entre <literal>0</literal> y <literal>3</literal>"
+#. Tag: para
+#: configuration.xml:416 configuration.xml:859
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>jndi/composite/name</"
+"literal>"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:424
+#. Tag: literal
+#: configuration.xml:424
+#, no-c-format
msgid "hibernate.max_fetch_depth"
-msgstr "hibernate.default_batch_fetch_size"
+msgstr "hibernate.max_fetch_depth"
-#: index.docbook:426
-msgid "Set a maximum \"depth\" for the outer join fetch tree for single-ended associations (one-to-one, many-to-one). A <literal>0</literal> disables default outer join fetching."
-msgstr "Establece un tamaño por defecto para la recuperación en lote de asociaciones de Hibernate."
+#. Tag: entry
+#: configuration.xml:426
+#, fuzzy, no-c-format
+msgid ""
+"Set a maximum \"depth\" for the outer join fetch tree for single-ended "
+"associations (one-to-one, many-to-one). A <literal>0</literal> disables "
+"default outer join fetching."
+msgstr ""
+"Establece una \"profundidad\" máxima del árbol de recuperación por outer "
+"join para asociaciones de un extremo solo (uno-a-uno, muchos-a-uno). Un "
+"<placeholder-1/> deshabilita la recuperación por outer join por defecto. "
+"<placeholder-2/>"
-#: index.docbook:430
-msgid "<emphasis role=\"strong\">eg.</emphasis> recommended values between <literal>0</literal> and <literal>3</literal>"
-msgstr "<emphasis role=\"strong\">ej.</emphasis> valores recomendados <literal>4</literal>, <literal>8</literal>, <literal>16</literal>"
+#. Tag: para
+#: configuration.xml:430
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> recommended values between "
+"<literal>0</literal> and <literal>3</literal>"
+msgstr ""
+"<emphasis role=\"strong\">ej.</emphasis> valores recomendados entre "
+"<literal>0</literal> y <literal>3</literal>"
-#: index.docbook:439
+#. Tag: literal
+#: configuration.xml:439
+#, no-c-format
msgid "hibernate.default_batch_fetch_size"
-msgstr "hibernate.default_entity_mode"
+msgstr "hibernate.default_batch_fetch_size"
-#: index.docbook:441
+#. Tag: entry
+#: configuration.xml:441
+#, fuzzy, no-c-format
msgid "Set a default size for Hibernate batch fetching of associations."
-msgstr "Establece un modo por defecto de representación de entidades para todas las sesiones abiertas por esta <literal>SessionFactory</literal>"
+msgstr ""
+"Establece un tamaño por defecto para la recuperación en lote de asociaciones "
+"de Hibernate. <placeholder-1/>"
-#: index.docbook:443
-msgid "<emphasis role=\"strong\">eg.</emphasis> recommended values <literal>4</literal>, <literal>8</literal>, <literal>16</literal>"
-msgstr "<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</literal>"
+#. Tag: para
+#: configuration.xml:443
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> recommended values <literal>4</"
+"literal>, <literal>8</literal>, <literal>16</literal>"
+msgstr ""
+"<emphasis role=\"strong\">ej.</emphasis> valores recomendados <literal>4</"
+"literal>, <literal>8</literal>, <literal>16</literal>"
-#: index.docbook:452
+#. Tag: literal
+#: configuration.xml:452
+#, no-c-format
msgid "hibernate.default_entity_mode"
-msgstr "hibernate.order_updates"
+msgstr "hibernate.default_entity_mode"
-#: index.docbook:454
-msgid "Set a default mode for entity representation for all sessions opened from this <literal>SessionFactory</literal>"
-msgstr "Fuerza a Hibernate a ordenar las actualizaciones SQL por el valor de la clave primaria de los items a actualizar. Esto resultará en menos bloqueos muertos de transacción en sistemas altamente concurrentes."
+#. Tag: entry
+#: configuration.xml:454
+#, fuzzy, no-c-format
+msgid ""
+"Set a default mode for entity representation for all sessions opened from "
+"this <literal>SessionFactory</literal>"
+msgstr ""
+"Establece un modo por defecto de representación de entidades para todas las "
+"sesiones abiertas por esta <placeholder-1/><placeholder-2/>"
-#: index.docbook:457
-msgid "<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</literal>"
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>true</literal> | <literal>false</literal>"
+#. Tag: para
+#: configuration.xml:457
+#, no-c-format
+msgid ""
+"<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</"
+"literal>"
+msgstr ""
+"<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</"
+"literal>"
-#: index.docbook:465
+#. Tag: literal
+#: configuration.xml:465
+#, no-c-format
msgid "hibernate.order_updates"
-msgstr "hibernate.generate_statistics"
+msgstr "hibernate.order_updates"
-#: index.docbook:467
-msgid "Force Hibernate to order SQL updates by the primary key value of the items being updated. This will result in fewer transaction deadlocks in highly concurrent systems."
-msgstr "De habilitarse, Hibernate colectará estadísticas útiles para la afinación de rendimiento."
+#. Tag: entry
+#: configuration.xml:467
+#, fuzzy, no-c-format
+msgid ""
+"Force Hibernate to order SQL updates by the primary key value of the items "
+"being updated. This will result in fewer transaction deadlocks in highly "
+"concurrent systems."
+msgstr ""
+"Fuerza a Hibernate a ordenar las actualizaciones SQL por el valor de la "
+"clave primaria de los items a actualizar. Esto resultará en menos bloqueos "
+"muertos de transacción en sistemas altamente concurrentes. <placeholder-1/>"
-#: index.docbook:479
+#. Tag: literal
+#: configuration.xml:479
+#, no-c-format
msgid "hibernate.generate_statistics"
-msgstr "hibernate.use_identifer_rollback"
+msgstr "hibernate.generate_statistics"
-#: index.docbook:481
-msgid "If enabled, Hibernate will collect statistics useful for performance tuning."
-msgstr "De habilitarse, las propiedades identificadoras generadas serán reseteadas a valores por defecto cuando los objetos sean borrados."
+#. Tag: entry
+#: configuration.xml:481
+#, fuzzy, no-c-format
+msgid ""
+"If enabled, Hibernate will collect statistics useful for performance tuning."
+msgstr ""
+"De habilitarse, Hibernate colectará estadísticas útiles para la afinación de "
+"rendimiento. <placeholder-1/>"
-#: index.docbook:492
+#. Tag: literal
+#: configuration.xml:492
+#, no-c-format
msgid "hibernate.use_identifier_rollback"
-msgstr "hibernate.use_sql_comments"
+msgstr "hibernate.use_identifer_rollback"
-#: index.docbook:494
-msgid "If enabled, generated identifier properties will be reset to default values when objects are deleted."
-msgstr "De activarse, Hibernate generará comentarios dentro del SQL, para una más fácil depuración, por defecto a <literal>false</literal>."
+#. Tag: entry
+#: configuration.xml:494
+#, fuzzy, no-c-format
+msgid ""
+"If enabled, generated identifier properties will be reset to default values "
+"when objects are deleted."
+msgstr ""
+"De habilitarse, las propiedades identificadoras generadas serán reseteadas a "
+"valores por defecto cuando los objetos sean borrados. <placeholder-1/>"
-#: index.docbook:505
+#. Tag: literal
+#: configuration.xml:505
+#, no-c-format
msgid "hibernate.use_sql_comments"
-msgstr "Propiedades de JDBC y Conexiones de Hibernate"
+msgstr "hibernate.use_sql_comments"
-#: index.docbook:507
-msgid "If turned on, Hibernate will generate comments inside the SQL, for easier debugging, defaults to <literal>false</literal>."
-msgstr "Nombre de propiedad"
+#. Tag: entry
+#: configuration.xml:507
+#, fuzzy, no-c-format
+msgid ""
+"If turned on, Hibernate will generate comments inside the SQL, for easier "
+"debugging, defaults to <literal>false</literal>."
+msgstr ""
+"De activarse, Hibernate generará comentarios dentro del SQL, para una más "
+"fácil depuración, por defecto a <placeholder-1/>. <placeholder-2/>"
-#: index.docbook:521
+#. Tag: title
+#: configuration.xml:521
+#, no-c-format
msgid "Hibernate JDBC and Connection Properties"
-msgstr "hibernate.jdbc.fetch_size"
+msgstr "Propiedades de JDBC y Conexiones de Hibernate"
-#: index.docbook:536
+#. Tag: literal
+#: configuration.xml:536
+#, no-c-format
msgid "hibernate.jdbc.fetch_size"
-msgstr "Un valor distinto de cero habilita el uso de actualizaciones en lote de JDBC2 por Hibernate."
+msgstr "hibernate.jdbc.fetch_size"
-#: index.docbook:538
-msgid "A non-zero value determines the JDBC fetch size (calls <literal>Statement.setFetchSize()</literal>)."
-msgstr "<emphasis role=\"strong\">ej.</emphasis> valores recomendados entre <literal>5</literal> y <literal>30</literal>"
+#. Tag: entry
+#: configuration.xml:538
+#, fuzzy, no-c-format
+msgid ""
+"A non-zero value determines the JDBC fetch size (calls <literal>Statement."
+"setFetchSize()</literal>)."
+msgstr ""
+"Un valor distinto de cero que determina el tamaño de recuperación de JDBC "
+"(llama a <placeholder-1/>)."
-#: index.docbook:545
+#. Tag: literal
+#: configuration.xml:545
+#, no-c-format
msgid "hibernate.jdbc.batch_size"
-msgstr "hibernate.jdbc.batch_versioned_data"
+msgstr "hibernate.jdbc.batch_size"
-#: index.docbook:547
+#. Tag: entry
+#: configuration.xml:547
+#, fuzzy, no-c-format
msgid "A non-zero value enables use of JDBC2 batch updates by Hibernate."
-msgstr "Establece esta propiedad a <literal>true</literal> si tu driver JDBC devuelve cuentas correctas de filas desde <literal>executeBatch()</literal> (usualmente es seguro activar esta opción). Hibernate usará DML en lote para versionar automáticamente los datos. Por defecto a <literal>false</literal>."
+msgstr ""
+"Un valor distinto de cero habilita el uso de actualizaciones en lote de "
+"JDBC2 por Hibernate. <placeholder-1/>"
-#: index.docbook:549
-msgid "<emphasis role=\"strong\">eg.</emphasis> recommended values between <literal>5</literal> and <literal>30</literal>"
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>true</literal> | <literal>false</literal>"
+#. Tag: para
+#: configuration.xml:549
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> recommended values between "
+"<literal>5</literal> and <literal>30</literal>"
+msgstr ""
+"<emphasis role=\"strong\">ej.</emphasis> valores recomendados entre "
+"<literal>5</literal> y <literal>30</literal>"
-#: index.docbook:557
+#. Tag: literal
+#: configuration.xml:557
+#, no-c-format
msgid "hibernate.jdbc.batch_versioned_data"
-msgstr "hibernate.jdbc.factory_class"
+msgstr "hibernate.jdbc.batch_versioned_data"
-#: index.docbook:559
-msgid "Set this property to <literal>true</literal> if your JDBC driver returns correct row counts from <literal>executeBatch()</literal> (it is usually safe to turn this option on). Hibernate will then use batched DML for automatically versioned data. Defaults to <literal>false</literal>."
-msgstr "Selecciona un <literal>Batcher</literal> personalizado. La mayoría de las aplicaciones no necesitarán esta propiedad de configuración."
+#. Tag: entry
+#: configuration.xml:559
+#, fuzzy, no-c-format
+msgid ""
+"Set this property to <literal>true</literal> if your JDBC driver returns "
+"correct row counts from <literal>executeBatch()</literal> (it is usually "
+"safe to turn this option on). Hibernate will then use batched DML for "
+"automatically versioned data. Defaults to <literal>false</literal>."
+msgstr ""
+"Establece esta propiedad a <placeholder-1/> si tu driver JDBC devuelve "
+"cuentas correctas de filas desde <placeholder-2/> (usualmente es seguro "
+"activar esta opción). Hibernate usará DML en lote para versionar "
+"automáticamente los datos. Por defecto a <placeholder-3/>. <placeholder-4/>"
-#: index.docbook:572
+#. Tag: literal
+#: configuration.xml:572
+#, no-c-format
msgid "hibernate.jdbc.factory_class"
-msgstr "hibernate.jdbc.use_scrollable_resultset"
+msgstr "hibernate.jdbc.factory_class"
-#: index.docbook:574
-msgid "Select a custom <literal>Batcher</literal>. Most applications will not need this configuration property."
-msgstr "Habilita el uso de resultados scrollables de JDBC2 por Hibernate. Esta propiedad sólo es necesaria cuando se usan conexiones JDBC provistas por el usuario, en caso contrario Hibernate usa los metadatos de conexión."
+#. Tag: entry
+#: configuration.xml:574
+#, fuzzy, no-c-format
+msgid ""
+"Select a custom <literal>Batcher</literal>. Most applications will not need "
+"this configuration property."
+msgstr ""
+"Selecciona un <placeholder-1/> personalizado. La mayoría de las aplicaciones "
+"no necesitarán esta propiedad de configuración. <placeholder-2/>"
-#: index.docbook:577
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of.BatcherFactory</literal>"
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>true</literal> | <literal>false</literal>"
+#. Tag: para
+#: configuration.xml:577
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of."
+"BatcherFactory</literal>"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:585
+#. Tag: literal
+#: configuration.xml:585
+#, no-c-format
msgid "hibernate.jdbc.use_scrollable_resultset"
-msgstr "hibernate.jdbc.use_streams_for_binary"
+msgstr "hibernate.jdbc.use_scrollable_resultset"
-#: index.docbook:587
-msgid "Enables use of JDBC2 scrollable resultsets by Hibernate. This property is only necessary when using user supplied JDBC connections, Hibernate uses connection metadata otherwise."
-msgstr "Usa flujos (streams) al escribir/leer tipos <literal>binary</literal> o <literal>serializable</literal> a/desde JDBC (propiedad a nivel de sistema)."
+#. Tag: entry
+#: configuration.xml:587
+#, fuzzy, no-c-format
+msgid ""
+"Enables use of JDBC2 scrollable resultsets by Hibernate. This property is "
+"only necessary when using user supplied JDBC connections, Hibernate uses "
+"connection metadata otherwise."
+msgstr ""
+"Habilita el uso de resultados scrollables de JDBC2 por Hibernate. Esta "
+"propiedad sólo es necesaria cuando se usan conexiones JDBC provistas por el "
+"usuario, en caso contrario Hibernate usa los metadatos de conexión. "
+"<placeholder-1/>"
-#: index.docbook:599
+#. Tag: literal
+#: configuration.xml:599
+#, no-c-format
msgid "hibernate.jdbc.use_streams_for_binary"
-msgstr "hibernate.jdbc.use_get_generated_keys"
+msgstr "hibernate.jdbc.use_streams_for_binary"
-#: index.docbook:601
-msgid "Use streams when writing/reading <literal>binary</literal> or <literal>serializable</literal> types to/from JDBC (system-level property)."
-msgstr "Habilita el uso de <literal>PreparedStatement.getGeneratedKeys()</literal> de JDBC3 para traer claves generadas nativamente después de insertar. Requiere un driver JDBC3+ y un JRE1.4+. Establécela a false si tu driver tiene problemas con los generadores de identificador de Hibernate. Por defecto, se intenta determinar las capacidades del driver usando los metadatos de conexión."
+#. Tag: entry
+#: configuration.xml:601
+#, fuzzy, no-c-format
+msgid ""
+"Use streams when writing/reading <literal>binary</literal> or "
+"<literal>serializable</literal> types to/from JDBC (system-level property)."
+msgstr ""
+"Usa flujos (streams) al escribir/leer tipos <placeholder-1/> o <placeholder-"
+"2/> a/desde JDBC (propiedad a nivel de sistema). <placeholder-3/>"
-#: index.docbook:613
+#. Tag: literal
+#: configuration.xml:613
+#, no-c-format
msgid "hibernate.jdbc.use_get_generated_keys"
-msgstr "hibernate.connection.provider_class"
+msgstr "hibernate.jdbc.use_get_generated_keys"
-#: index.docbook:615
-msgid "Enable use of JDBC3 <literal>PreparedStatement.getGeneratedKeys()</literal> to retrieve natively generated keys after insert. Requires JDBC3+ driver and JRE1.4+, set to false if your driver has problems with the Hibernate identifier generators. By default, tries to determine the driver capabilities using connection metadata."
-msgstr "EL nombre de clase de un <literal>ConnectionProvider</literal> personalizado que provea conexiones JDBC a Hibernate."
+#. Tag: entry
+#: configuration.xml:615
+#, fuzzy, no-c-format
+msgid ""
+"Enable use of JDBC3 <literal>PreparedStatement.getGeneratedKeys()</literal> "
+"to retrieve natively generated keys after insert. Requires JDBC3+ driver and "
+"JRE1.4+, set to false if your driver has problems with the Hibernate "
+"identifier generators. By default, tries to determine the driver "
+"capabilities using connection metadata."
+msgstr ""
+"Habilita el uso de <placeholder-1/> de JDBC3 para traer claves generadas "
+"nativamente después de insertar. Requiere un driver JDBC3+ y un JRE1.4+. "
+"Establécela a false si tu driver tiene problemas con los generadores de "
+"identificador de Hibernate. Por defecto, se intenta determinar las "
+"capacidades del driver usando los metadatos de conexión. <placeholder-2/>"
-#: index.docbook:621, index.docbook:751, index.docbook:763, index.docbook:777, index.docbook:815
+#. Tag: para
+#: configuration.xml:621 configuration.xml:751 configuration.xml:763
+#: configuration.xml:777 configuration.xml:815
+#, fuzzy, no-c-format
msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>true|false</literal>"
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>classname.of.ConnectionProvider</literal>"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:629
+#. Tag: literal
+#: configuration.xml:629
+#, no-c-format
msgid "hibernate.connection.provider_class"
-msgstr "hibernate.connection.isolation"
+msgstr "hibernate.connection.provider_class"
-#: index.docbook:631
-msgid "The classname of a custom <literal>ConnectionProvider</literal> which provides JDBC connections to Hibernate."
-msgstr "Establece el nivel de aislamiento de transacción JDBC. Comprueba <literal>java.sql.Connection</literal> para valores significativos pero observa que la mayoría de las bases de datos no soportan todos los niveles de aislamiento."
+#. Tag: entry
+#: configuration.xml:631
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a custom <literal>ConnectionProvider</literal> which "
+"provides JDBC connections to Hibernate."
+msgstr ""
+"EL nombre de clase de un <placeholder-1/> personalizado que provea "
+"conexiones JDBC a Hibernate. <placeholder-2/>"
-#: index.docbook:634
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of.ConnectionProvider</literal>"
-msgstr "<emphasis role=\"strong\">eg.</emphasis> <literal>1, 2, 4, 8</literal>"
+#. Tag: para
+#: configuration.xml:634
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of."
+"ConnectionProvider</literal>"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:642
+#. Tag: literal
+#: configuration.xml:642
+#, no-c-format
msgid "hibernate.connection.isolation"
-msgstr "hibernate.connection.autocommit"
+msgstr "hibernate.connection.isolation"
-#: index.docbook:644
-msgid "Set the JDBC transaction isolation level. Check <literal>java.sql.Connection</literal> for meaningful values but note that most databases do not support all isolation levels."
-msgstr "Habilita compromiso automático (autocommit) para las conexiones JDBC en pool (no recomendado)."
+#. Tag: entry
+#: configuration.xml:644
+#, fuzzy, no-c-format
+msgid ""
+"Set the JDBC transaction isolation level. Check <literal>java.sql."
+"Connection</literal> for meaningful values but note that most databases do "
+"not support all isolation levels."
+msgstr ""
+"Establece el nivel de aislamiento de transacción JDBC. Comprueba "
+"<placeholder-1/> para valores significativos pero observa que la mayoría de "
+"las bases de datos no soportan todos los niveles de aislamiento. "
+"<placeholder-2/>"
-#: index.docbook:648
+#. Tag: para
+#: configuration.xml:648
+#, fuzzy, no-c-format
msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>1, 2, 4, 8</literal>"
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>true</literal> | <literal>false</literal>"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:656
+#. Tag: literal
+#: configuration.xml:656
+#, no-c-format
msgid "hibernate.connection.autocommit"
-msgstr "hibernate.connection.release_mode"
+msgstr "hibernate.connection.autocommit"
-#: index.docbook:658
+#. Tag: entry
+#: configuration.xml:658
+#, fuzzy, no-c-format
msgid "Enables autocommit for JDBC pooled connections (not recommended)."
-msgstr "Especifica cuándo Hibernate debe liberar las conexiones JDBC. Por defecto, una conexión JDBC es retenida hasta que la sesión es cerrada explícitamente o desconectada. Para un datasource JTA del servidor de aplicaciones, debes usar <literal>after_statement</literal> para liberar agresivamente las conexiones después de cada llamada JDBC. Para una conexión no JTA, frecuentemente tiene sentido liberar la conexión al final de cada transacción, usando <literal>after_transaction</literal>. <literal>auto</literal> eligirá <literal>after_statement</literal> para las estrategias JTA o CMT de transacción y <literal>after_transaction</literal> para la estrategia JDBC de transacción."
+msgstr ""
+"Habilita compromiso automático (autocommit) para las conexiones JDBC en pool "
+"(no recomendado). <placeholder-1/>"
-#: index.docbook:668
+#. Tag: literal
+#: configuration.xml:668
+#, no-c-format
msgid "hibernate.connection.release_mode"
-msgstr "hibernate.connection.<emphasis><propertyName></emphasis>"
+msgstr "hibernate.connection.release_mode"
-#: index.docbook:670
-msgid "Specify when Hibernate should release JDBC connections. By default, a JDBC connection is held until the session is explicitly closed or disconnected. For an application server JTA datasource, you should use <literal>after_statement</literal> to aggressively release connections after every JDBC call. For a non-JTA connection, it often makes sense to release the connection at the end of each transaction, by using <literal>after_transaction</literal>. <literal>auto</literal> will choose <literal>after_statement</literal> for the JTA and CMT transaction strategies and <literal>after_transaction</literal> for the JDBC transaction strategy."
-msgstr "Pasa la propiedad JDBC <literal>propertyName</literal> a <literal>DriverManager.getConnection()</literal>."
+#. Tag: entry
+#: configuration.xml:670
+#, fuzzy, no-c-format
+msgid ""
+"Specify when Hibernate should release JDBC connections. By default, a JDBC "
+"connection is held until the session is explicitly closed or disconnected. "
+"For an application server JTA datasource, you should use "
+"<literal>after_statement</literal> to aggressively release connections after "
+"every JDBC call. For a non-JTA connection, it often makes sense to release "
+"the connection at the end of each transaction, by using "
+"<literal>after_transaction</literal>. <literal>auto</literal> will choose "
+"<literal>after_statement</literal> for the JTA and CMT transaction "
+"strategies and <literal>after_transaction</literal> for the JDBC transaction "
+"strategy."
+msgstr ""
+"Especifica cuándo Hibernate debe liberar las conexiones JDBC. Por defecto, "
+"una conexión JDBC es retenida hasta que la sesión es cerrada explícitamente "
+"o desconectada. Para un datasource JTA del servidor de aplicaciones, debes "
+"usar <placeholder-1/> para liberar agresivamente las conexiones después de "
+"cada llamada JDBC. Para una conexión no JTA, frecuentemente tiene sentido "
+"liberar la conexión al final de cada transacción, usando <placeholder-2/>. "
+"<placeholder-3/> eligirá <placeholder-4/> para las estrategias JTA o CMT de "
+"transacción y <placeholder-5/> para la estrategia JDBC de transacción. "
+"<placeholder-6/><placeholder-7/>"
-#: index.docbook:681
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>auto</literal> (default) | <literal>on_close</literal> | <literal>after_transaction</literal> | <literal>after_statement</literal>"
-msgstr "hibernate.jndi.<emphasis><propertyName></emphasis>"
+#. Tag: para
+#: configuration.xml:681
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>auto</literal> (default) | "
+"<literal>on_close</literal> | <literal>after_transaction</literal> | "
+"<literal>after_statement</literal>"
+msgstr ""
+"<emphasis role=\"strong\">ej.</emphasis><literal>on_close</literal> (por "
+"defecto)| <literal>after_transaction</literal> | <literal>after_statement</"
+"literal> | <literal>auto</literal>"
-#: index.docbook:686
-msgid "Note that this setting only affects <literal>Session</literal>s returned from <literal>SessionFactory.openSession</literal>. For <literal>Session</literal>s obtained through <literal>SessionFactory.getCurrentSession</literal>, the <literal>CurrentSessionContext</literal> implementation configured for use controls the connection release mode for those <literal>Session</literal>s. See"
-msgstr "Pasa la propiedad <literal>propertyName</literal> a <literal>InitialContextFactory</literal> de JNDI."
+#. Tag: para
+#: configuration.xml:686
+#, fuzzy, no-c-format
+msgid ""
+"Note that this setting only affects <literal>Session</literal>s returned "
+"from <literal>SessionFactory.openSession</literal>. For <literal>Session</"
+"literal>s obtained through <literal>SessionFactory.getCurrentSession</"
+"literal>, the <literal>CurrentSessionContext</literal> implementation "
+"configured for use controls the connection release mode for those "
+"<literal>Session</literal>s. See"
+msgstr ""
+"Note that this setting only affects <literal>Session</literal>s returned "
+"from <literal>SessionFactory.openSession</literal>. For <literal>Session</"
+"literal>s obtained through <literal>SessionFactory.getCurrentSession</"
+"literal>, the <literal>CurrentSessionContext</literal> implementation "
+"configured for use controls the connection release mode for those "
+"<literal>Session</literal>s. See <xref linkend=\"architecture-current-session"
+"\"/>"
-#: index.docbook:698
-msgid "hibernate.connection.<emphasis><propertyName></emphasis>"
-msgstr "Propiedades de Caché de Hibernate"
+#. Tag: entry
+#: configuration.xml:697
+#, no-c-format
+msgid ""
+"<literal>hibernate.connection.</literal><emphasis><propertyName></"
+"emphasis>"
+msgstr ""
-#: index.docbook:700
-msgid "Pass the JDBC property <literal>propertyName</literal> to <literal>DriverManager.getConnection()</literal>."
-msgstr "Nombre de propiedad"
+#. Tag: entry
+#: configuration.xml:700
+#, no-c-format
+msgid ""
+"Pass the JDBC property <emphasis><propertyName></emphasis> to "
+"<literal>DriverManager.getConnection()</literal>."
+msgstr ""
-#: index.docbook:707
-msgid "hibernate.jndi.<emphasis><propertyName></emphasis>"
-msgstr "Propósito"
+#. Tag: entry
+#: configuration.xml:706
+#, no-c-format
+msgid ""
+"<literal>hibernate.jndi.</literal><emphasis><propertyName></emphasis>"
+msgstr ""
-#: index.docbook:709
-msgid "Pass the property <literal>propertyName</literal> to the JNDI <literal>InitialContextFactory</literal>."
-msgstr "hibernate.cache.provider_class"
+#. Tag: entry
+#: configuration.xml:709
+#, no-c-format
+msgid ""
+"Pass the property <emphasis><propertyName></emphasis> to the JNDI "
+"<literal>InitialContextFactory</literal>."
+msgstr ""
-#: index.docbook:719
+#. Tag: title
+#: configuration.xml:719
+#, no-c-format
msgid "Hibernate Cache Properties"
-msgstr "El nombre de clase de un <literal>CacheProvider</literal> personalizado."
+msgstr "Propiedades de Caché de Hibernate"
-#: index.docbook:732
+#. Tag: literal
+#: configuration.xml:732
+#, no-c-format
msgid "hibernate.cache.provider_class"
-msgstr "Optimiza la operación del caché de segundo nivel para minimizar escrituras, al costo de lecturas más frecuentes. Esto es más útil para cachés en cluster y, en Hibernate3, está habilitado por defecto para implementaciones de caché en cluster."
+msgstr "hibernate.cache.provider_class"
-#: index.docbook:734
+#. Tag: entry
+#: configuration.xml:734
+#, fuzzy, no-c-format
msgid "The classname of a custom <literal>CacheProvider</literal>."
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>true|false</literal>"
+msgstr ""
+"El nombre de clase de un <placeholder-1/> personalizado. <placeholder-2/>"
-#: index.docbook:736
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of.CacheProvider</literal>"
-msgstr "hibernate.cache.use_query_cache"
+#. Tag: para
+#: configuration.xml:736
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of."
+"CacheProvider</literal>"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:744
+#. Tag: literal
+#: configuration.xml:744
+#, no-c-format
msgid "hibernate.cache.use_minimal_puts"
-msgstr "Habilita el caché de lectura, consultas individuales todavía tienen que ponerse cachables."
+msgstr "hibernate.cache.use_minimal_puts"
-#: index.docbook:746
-msgid "Optimize second-level cache operation to minimize writes, at the cost of more frequent reads. This setting is most useful for clustered caches and, in Hibernate3, is enabled by default for clustered cache implementations."
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>true|false</literal>"
+#. Tag: entry
+#: configuration.xml:746
+#, fuzzy, no-c-format
+msgid ""
+"Optimize second-level cache operation to minimize writes, at the cost of "
+"more frequent reads. This setting is most useful for clustered caches and, "
+"in Hibernate3, is enabled by default for clustered cache implementations."
+msgstr ""
+"Optimiza la operación del caché de segundo nivel para minimizar escrituras, "
+"al costo de lecturas más frecuentes. Esto es más útil para cachés en cluster "
+"y, en Hibernate3, está habilitado por defecto para implementaciones de caché "
+"en cluster. <placeholder-1/>"
-#: index.docbook:759
+#. Tag: literal
+#: configuration.xml:759
+#, no-c-format
msgid "hibernate.cache.use_query_cache"
-msgstr "Puede ser usado para deshabilitar completamente el caché de segundo nivel, que está habilitado por defecto para clases que especifican un mapeo <literal><cache></literal>."
+msgstr "hibernate.cache.use_query_cache"
-#: index.docbook:761
-msgid "Enable the query cache, individual queries still have to be set cachable."
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>true|false</literal>"
+#. Tag: entry
+#: configuration.xml:761
+#, fuzzy, no-c-format
+msgid ""
+"Enable the query cache, individual queries still have to be set cachable."
+msgstr ""
+"Habilita el caché de lectura, consultas individuales todavía tienen que "
+"ponerse cachables. <placeholder-1/>"
-#: index.docbook:771
+#. Tag: literal
+#: configuration.xml:771
+#, no-c-format
msgid "hibernate.cache.use_second_level_cache"
-msgstr "El nombre de clase de una interface <literal>QueryCache</literal> personalizada, por defecto al <literal>StandardQueryCache</literal> prefabricado."
+msgstr "hibernate.cache.use_second_level_cache"
-#: index.docbook:773
-msgid "May be used to completely disable the second level cache, which is enabled by default for classes which specify a <literal><cache></literal> mapping."
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>classname.of.QueryCache</literal>"
+#. Tag: entry
+#: configuration.xml:773
+#, fuzzy, no-c-format
+msgid ""
+"May be used to completely disable the second level cache, which is enabled "
+"by default for classes which specify a <literal><cache></literal> "
+"mapping."
+msgstr ""
+"Puede ser usado para deshabilitar completamente el caché de segundo nivel, "
+"que está habilitado por defecto para clases que especifican un mapeo "
+"<placeholder-1/>. <placeholder-2/>"
-#: index.docbook:785
+#. Tag: literal
+#: configuration.xml:785
+#, no-c-format
msgid "hibernate.cache.query_cache_factory"
-msgstr "Un prefijo a usar para los nombres de región del caché de segundo nivel."
+msgstr "hibernate.cache.query_cache_factory"
-#: index.docbook:787
-msgid "The classname of a custom <literal>QueryCache</literal> interface, defaults to the built-in <literal>StandardQueryCache</literal>."
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>prefix</literal>"
+#. Tag: entry
+#: configuration.xml:787
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a custom <literal>QueryCache</literal> interface, defaults "
+"to the built-in <literal>StandardQueryCache</literal>."
+msgstr ""
+"El nombre de clase de una interface <placeholder-1/> personalizada, por "
+"defecto al <placeholder-2/> prefabricado. <placeholder-3/>"
-#: index.docbook:790
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of.QueryCache</literal>"
-msgstr "hibernate.cache.use_structured_entries"
+#. Tag: para
+#: configuration.xml:790
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of.QueryCache</"
+"literal>"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:798
+#. Tag: literal
+#: configuration.xml:798
+#, no-c-format
msgid "hibernate.cache.region_prefix"
-msgstr "Fuerza a Hibernate a almacenar los datos en el caché de segundo nivel en un formato más amigable al humano."
+msgstr "hibernate.cache.region_prefix"
-#: index.docbook:800
+#. Tag: entry
+#: configuration.xml:800
+#, fuzzy, no-c-format
msgid "A prefix to use for second-level cache region names."
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>true|false</literal>"
+msgstr ""
+"Un prefijo a usar para los nombres de región del caché de segundo nivel. "
+"<placeholder-1/>"
-#: index.docbook:802
+#. Tag: para
+#: configuration.xml:802
+#, fuzzy, no-c-format
msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>prefix</literal>"
-msgstr "Propiedades de Transacción de Hibernate"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:810
+#. Tag: literal
+#: configuration.xml:810
+#, no-c-format
msgid "hibernate.cache.use_structured_entries"
-msgstr "Nombre de propiedad"
+msgstr "hibernate.cache.use_structured_entries"
-#: index.docbook:812
-msgid "Forces Hibernate to store data in the second-level cache in a more human-friendly format."
-msgstr "Propósito"
+#. Tag: entry
+#: configuration.xml:812
+#, fuzzy, no-c-format
+msgid ""
+"Forces Hibernate to store data in the second-level cache in a more human-"
+"friendly format."
+msgstr ""
+"Fuerza a Hibernate a almacenar los datos en el caché de segundo nivel en un "
+"formato más amigable al humano. <placeholder-1/>"
-#: index.docbook:826
+#. Tag: title
+#: configuration.xml:826
+#, no-c-format
msgid "Hibernate Transaction Properties"
-msgstr "El nombre de clase de un <literal>TransactionFactory</literal> a usar con la API de <literal>Transaction</literal> de Hibernate (por defectoa <literal>JDBCTransactionFactory</literal>)."
+msgstr "Propiedades de Transacción de Hibernate"
-#: index.docbook:839
+#. Tag: literal
+#: configuration.xml:839
+#, no-c-format
msgid "hibernate.transaction.factory_class"
-msgstr "Un nombre JNDI usado por <literal>JTATransactionFactory</literal> para obtener la <literal>UserTransaction</literal> JTA del servidor de aplicaciones."
+msgstr "hibernate.transaction.factory_class"
-#: index.docbook:841
-msgid "The classname of a <literal>TransactionFactory</literal> to use with Hibernate <literal>Transaction</literal> API (defaults to <literal>JDBCTransactionFactory</literal>)."
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>jndi/composite/name</literal>"
+#. Tag: entry
+#: configuration.xml:841
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a <literal>TransactionFactory</literal> to use with "
+"Hibernate <literal>Transaction</literal> API (defaults to "
+"<literal>JDBCTransactionFactory</literal>)."
+msgstr ""
+"El nombre de clase de un <placeholder-1/> a usar con la API de <placeholder-"
+"2/> de Hibernate (por defectoa <placeholder-3/>). <placeholder-4/>"
-#: index.docbook:845
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of.TransactionFactory</literal>"
-msgstr "hibernate.transaction.manager_lookup_class"
+#. Tag: para
+#: configuration.xml:845
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of."
+"TransactionFactory</literal>"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:853
+#. Tag: literal
+#: configuration.xml:853
+#, no-c-format
msgid "jta.UserTransaction"
-msgstr "El nombre de clase de un <literal>TransactionManagerLookup</literal> requerido cuando el chaché a nivel de JVM está habilitado o cuando se usa un generador alto/bajo en un entorno JTA."
+msgstr "jta.UserTransaction"
-#: index.docbook:855
-msgid "A JNDI name used by <literal>JTATransactionFactory</literal> to obtain the JTA <literal>UserTransaction</literal> from the application server."
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>classname.of.TransactionManagerLookup</literal>"
+#. Tag: entry
+#: configuration.xml:855
+#, fuzzy, no-c-format
+msgid ""
+"A JNDI name used by <literal>JTATransactionFactory</literal> to obtain the "
+"JTA <literal>UserTransaction</literal> from the application server."
+msgstr ""
+"Un nombre JNDI usado por <placeholder-1/> para obtener la <placeholder-2/> "
+"JTA del servidor de aplicaciones. <placeholder-3/>"
-#: index.docbook:867
+#. Tag: literal
+#: configuration.xml:867
+#, no-c-format
msgid "hibernate.transaction.manager_lookup_class"
-msgstr "De habilitarse, la sesión se limpiará (flushed) automáticamente durante la fase previa a la compleción de la transacción. (Muy útil cuando se usa Hibernate con CMT)."
+msgstr "hibernate.transaction.manager_lookup_class"
-#: index.docbook:869
-msgid "The classname of a <literal>TransactionManagerLookup</literal> - required when JVM-level caching is enabled or when using hilo generator in a JTA environment."
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>true</literal> | <literal>false</literal>"
+#. Tag: entry
+#: configuration.xml:869
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a <literal>TransactionManagerLookup</literal> - required "
+"when JVM-level caching is enabled or when using hilo generator in a JTA "
+"environment."
+msgstr ""
+"El nombre de clase de un <placeholder-1/> requerido cuando el chaché a nivel "
+"de JVM está habilitado o cuando se usa un generador alto/bajo en un entorno "
+"JTA. <placeholder-2/>"
-#: index.docbook:873
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of.TransactionManagerLookup</literal>"
-msgstr "hibernate.transaction.auto_close_session"
+#. Tag: para
+#: configuration.xml:873
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of."
+"TransactionManagerLookup</literal>"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:881
+#. Tag: literal
+#: configuration.xml:881
+#, no-c-format
msgid "hibernate.transaction.flush_before_completion"
-msgstr "De habilitarse, la sesión será cerrada automáticamente durante la fase posterior a la compleción de la transacción. (Muy útil cuando se usa Hibernate con CMT)."
+msgstr "hibernate.transaction.flush_before_completion"
-#: index.docbook:883
-msgid "If enabled, the session will be automatically flushed during the before completion phase of the transaction. Built-in and automatic session context management is preferred, see <xref linkend=\"architecture-current-session\"/>."
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>true</literal> | <literal>false</literal>"
+#. Tag: entry
+#: configuration.xml:883
+#, fuzzy, no-c-format
+msgid ""
+"If enabled, the session will be automatically flushed during the before "
+"completion phase of the transaction. Built-in and automatic session context "
+"management is preferred, see <xref linkend=\"architecture-current-session\"/"
+">."
+msgstr ""
+"De habilitarse, la sesión se limpiará (flushed) automáticamente durante la "
+"fase previa a la compleción de la transacción. (Muy útil cuando se usa "
+"Hibernate con CMT). <placeholder-1/>"
-#: index.docbook:896
+#. Tag: literal
+#: configuration.xml:896
+#, no-c-format
msgid "hibernate.transaction.auto_close_session"
-msgstr "Nombre de propiedad"
+msgstr "hibernate.transaction.auto_close_session"
-#: index.docbook:898
-msgid "If enabled, the session will be automatically closed during the after completion phase of the transaction. Built-in and utomatic session context management is preferred, see <xref linkend=\"architecture-current-session\"/>."
-msgstr "Propósito"
+#. Tag: entry
+#: configuration.xml:898
+#, fuzzy, no-c-format
+msgid ""
+"If enabled, the session will be automatically closed during the after "
+"completion phase of the transaction. Built-in and utomatic session context "
+"management is preferred, see <xref linkend=\"architecture-current-session\"/"
+">."
+msgstr ""
+"De habilitarse, la sesión será cerrada automáticamente durante la fase "
+"posterior a la compleción de la transacción. (Muy útil cuando se usa "
+"Hibernate con CMT).<xref linkend=\"architecture-current-session\"/"
+"><placeholder-1/>"
-#: index.docbook:914
+#. Tag: title
+#: configuration.xml:914
+#, no-c-format
msgid "Miscellaneous Properties"
-msgstr "Elige la implementación de parser HQL."
+msgstr "Propiedades Misceláneas"
-#: index.docbook:927
+#. Tag: literal
+#: configuration.xml:927
+#, no-c-format
msgid "hibernate.current_session_context_class"
-msgstr "Mapeos de símbolos en consultas Hibernate a símbolos SQL. (los símbolos puedem ser nombres de función o literales, por ejemplo)."
+msgstr "hibernate.current_session_context_class"
-#: index.docbook:929
-msgid "Supply a (custom) strategy for the scoping of the \"current\" <literal>Session</literal>. See <xref linkend=\"architecture-current-session\"/> for more information about the built-in strategies."
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC</literal>"
+#. Tag: entry
+#: configuration.xml:929
+#, fuzzy, no-c-format
+msgid ""
+"Supply a (custom) strategy for the scoping of the \"current\" "
+"<literal>Session</literal>. See <xref linkend=\"architecture-current-session"
+"\"/> for more information about the built-in strategies."
+msgstr ""
+"Supply a (custom) strategy for the scoping of the \"current\" <placeholder-1/"
+">. See <xref linkend=\"architecture-current-session\"/> for more information "
+"about the built-in strategies. <placeholder-2/>"
-#: index.docbook:934
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>jta</literal> | <literal>thread</literal> | <literal>managed</literal> | <literal>custom.Class</literal>"
-msgstr "hibernate.hbm2ddl.auto"
+#. Tag: para
+#: configuration.xml:934
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>jta</literal> | "
+"<literal>thread</literal> | <literal>managed</literal> | <literal>custom."
+"Class</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>jta</literal> | "
+"<literal>thread</literal> | <literal>managed</literal> | <literal>custom."
+"Class</literal>"
-#: index.docbook:943
+#. Tag: literal
+#: configuration.xml:943
+#, no-c-format
msgid "hibernate.query.factory_class"
-msgstr "Exporta automáticamente DDL de esquema cuando al crear la <literal>SessionFactory</literal>. Con <literal>create-drop</literal>, el esquema de base de datos será desechado cuando la <literal>SessionFactory</literal> se cierre explícitamente."
+msgstr "hibernate.query.factory_class"
-#: index.docbook:945
+#. Tag: entry
+#: configuration.xml:945
+#, fuzzy, no-c-format
msgid "Chooses the HQL parser implementation."
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>update</literal> | <literal>create</literal> | <literal>create-drop</literal>"
+msgstr "Elige la implementación de parser HQL. <placeholder-1/>"
-#: index.docbook:947
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>org.hibernate.hql.ast.ASTQueryTranslatorFactory</literal> or <literal>org.hibernate.hql.classic.ClassicQueryTranslatorFactory</literal>"
-msgstr "hibernate.cglib.use_reflection_optimizer"
+#. Tag: para
+#: configuration.xml:947
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>org.hibernate.hql.ast."
+"ASTQueryTranslatorFactory</literal> or <literal>org.hibernate.hql.classic."
+"ClassicQueryTranslatorFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">ej.</emphasis><literal>org.hibernate.hql.ast."
+"ASTQueryTranslatorFactory</literal> or <literal>org.hibernate.hql.classic."
+"ClassicQueryTranslatorFactory</literal>"
-#: index.docbook:956
+#. Tag: literal
+#: configuration.xml:956
+#, no-c-format
msgid "hibernate.query.substitutions"
-msgstr "Habilita el uso de CGLIB en vez de refleccón en tiempo de ejecución (propiedad a nivel de sistema). La reflección a veces puede ser útil ante la aparición de problemas. Observa que Hibernate siempre requiere CGLIB incluso si desactivas el optimizador. No puedes establecer esta propiedad en <literal>hibernate.cfg.xml</literal>."
+msgstr "hibernate.query.substitutions"
-#: index.docbook:958
-msgid "Mapping from tokens in Hibernate queries to SQL tokens (tokens might be function or literal names, for example)."
-msgstr "<emphasis role=\"strong\">ej.</emphasis> <literal>true</literal> | <literal>false</literal>"
+#. Tag: entry
+#: configuration.xml:958
+#, fuzzy, no-c-format
+msgid ""
+"Mapping from tokens in Hibernate queries to SQL tokens (tokens might be "
+"function or literal names, for example)."
+msgstr ""
+"Mapeos de símbolos en consultas Hibernate a símbolos SQL. (los símbolos "
+"puedem ser nombres de función o literales, por ejemplo). <placeholder-1/>"
-#: index.docbook:961
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC</literal>"
-msgstr "SQL Dialects"
+#. Tag: para
+#: configuration.xml:961
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>hqlLiteral=SQL_LITERAL, "
+"hqlFunction=SQLFUNC</literal>"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">eg.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<emphasis role=\"strong\">ej.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:969
+#. Tag: literal
+#: configuration.xml:969
+#, no-c-format
msgid "hibernate.hbm2ddl.auto"
-msgstr "You should always set the <literal>hibernate.dialect</literal> property to the correct <literal>org.hibernate.dialect.Dialect</literal> subclass for your database. If you specify a dialect, Hibernate will use sensible defaults for some of the other properties listed above, saving you the effort of specifying them manually."
+msgstr "hibernate.hbm2ddl.auto"
-#: index.docbook:971
-msgid "Automatically validate or export schema DDL to the database when the <literal>SessionFactory</literal> is created. With <literal>create-drop</literal>, the database schema will be dropped when the <literal>SessionFactory</literal> is closed explicitly."
-msgstr "Dialectos SQL de Hibernate(<literal>hibernate.dialect</literal>)"
+#. Tag: entry
+#: configuration.xml:971
+#, fuzzy, no-c-format
+msgid ""
+"Automatically validate or export schema DDL to the database when the "
+"<literal>SessionFactory</literal> is created. With <literal>create-drop</"
+"literal>, the database schema will be dropped when the "
+"<literal>SessionFactory</literal> is closed explicitly."
+msgstr ""
+"Exporta automáticamente DDL de esquema cuando al crear la <placeholder-1/>. "
+"Con <placeholder-2/>, el esquema de base de datos será desechado cuando la "
+"<placeholder-3/> se cierre explícitamente. <placeholder-4/>"
-#: index.docbook:977
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>validate</literal> | <literal>update</literal> | <literal>create</literal> | <literal>create-drop</literal>"
-msgstr "RDBMS"
+#. Tag: para
+#: configuration.xml:977
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>validate</literal> | "
+"<literal>update</literal> | <literal>create</literal> | <literal>create-"
+"drop</literal>"
+msgstr ""
+"<emphasis role=\"strong\">ej.</emphasis><literal>update</literal> | "
+"<literal>create</literal> | <literal>create-drop</literal>"
-#: index.docbook:986
+#. Tag: literal
+#: configuration.xml:986
+#, no-c-format
msgid "hibernate.cglib.use_reflection_optimizer"
-msgstr "Dialecto"
+msgstr "hibernate.cglib.use_reflection_optimizer"
-#: index.docbook:988
-msgid "Enables use of CGLIB instead of runtime reflection (System-level property). Reflection can sometimes be useful when troubleshooting, note that Hibernate always requires CGLIB even if you turn off the optimizer. You can not set this property in <literal>hibernate.cfg.xml</literal>."
-msgstr "<entry>DB2</entry>"
+#. Tag: entry
+#: configuration.xml:988
+#, fuzzy, no-c-format
+msgid ""
+"Enables use of CGLIB instead of runtime reflection (System-level property). "
+"Reflection can sometimes be useful when troubleshooting, note that Hibernate "
+"always requires CGLIB even if you turn off the optimizer. You can not set "
+"this property in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"Habilita el uso de CGLIB en vez de refleccón en tiempo de ejecución "
+"(propiedad a nivel de sistema). La reflección a veces puede ser útil ante la "
+"aparición de problemas. Observa que Hibernate siempre requiere CGLIB incluso "
+"si desactivas el optimizador. No puedes establecer esta propiedad en "
+"<placeholder-1/>. <placeholder-2/>"
-#: index.docbook:1004
+#. Tag: title
+#: configuration.xml:1004
+#, no-c-format
msgid "SQL Dialects"
-msgstr "DB2 AS/400"
+msgstr "SQL Dialects"
-#: index.docbook:1006
-msgid "You should always set the <literal>hibernate.dialect</literal> property to the correct <literal>org.hibernate.dialect.Dialect</literal> subclass for your database. If you specify a dialect, Hibernate will use sensible defaults for some of the other properties listed above, saving you the effort of specifying them manually."
-msgstr "org.hibernate.dialect.DB2400Dialect"
+#. Tag: para
+#: configuration.xml:1006
+#, no-c-format
+msgid ""
+"You should always set the <literal>hibernate.dialect</literal> property to "
+"the correct <literal>org.hibernate.dialect.Dialect</literal> subclass for "
+"your database. If you specify a dialect, Hibernate will use sensible "
+"defaults for some of the other properties listed above, saving you the "
+"effort of specifying them manually."
+msgstr ""
+"You should always set the <literal>hibernate.dialect</literal> property to "
+"the correct <literal>org.hibernate.dialect.Dialect</literal> subclass for "
+"your database. If you specify a dialect, Hibernate will use sensible "
+"defaults for some of the other properties listed above, saving you the "
+"effort of specifying them manually."
-#: index.docbook:1014
+#. Tag: title
+#: configuration.xml:1014
+#, no-c-format
msgid "Hibernate SQL Dialects (<literal>hibernate.dialect</literal>)"
-msgstr "DB2 OS390"
+msgstr "Dialectos SQL de Hibernate(<literal>hibernate.dialect</literal>)"
-#: index.docbook:1022
+#. Tag: entry
+#: configuration.xml:1022
+#, no-c-format
msgid "RDBMS"
-msgstr "org.hibernate.dialect.DB2390Dialect"
+msgstr "RDBMS"
-#: index.docbook:1023
+#. Tag: entry
+#: configuration.xml:1023
+#, fuzzy, no-c-format
msgid "Dialect"
-msgstr "PostgreSQL"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"Dialect\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"Dialecto"
-#: index.docbook:1028
+#. Tag: entry
+#: configuration.xml:1028
+#, no-c-format
msgid "<entry>DB2</entry>"
-msgstr "org.hibernate.dialect.PostgreSQLDialect"
+msgstr ""
-#: index.docbook:1028
+#. Tag: literal
+#: configuration.xml:1028
+#, no-c-format
msgid "org.hibernate.dialect.DB2Dialect"
-msgstr "MySQL"
+msgstr "org.hibernate.dialect.DB2Dialect"
-#: index.docbook:1031
+#. Tag: entry
+#: configuration.xml:1031
+#, no-c-format
msgid "DB2 AS/400"
-msgstr "org.hibernate.dialect.MySQLDialect"
+msgstr "DB2 AS/400"
-#: index.docbook:1031
+#. Tag: literal
+#: configuration.xml:1031
+#, no-c-format
msgid "org.hibernate.dialect.DB2400Dialect"
-msgstr "MySQL con InnoDB"
+msgstr "org.hibernate.dialect.DB2400Dialect"
-#: index.docbook:1034
+#. Tag: entry
+#: configuration.xml:1034
+#, no-c-format
msgid "DB2 OS390"
-msgstr "org.hibernate.dialect.MySQLInnoDBDialect"
+msgstr "DB2 OS390"
-#: index.docbook:1034
+#. Tag: literal
+#: configuration.xml:1034
+#, no-c-format
msgid "org.hibernate.dialect.DB2390Dialect"
-msgstr "MySQL con MyISAM"
+msgstr "org.hibernate.dialect.DB2390Dialect"
-#: index.docbook:1037
+#. Tag: entry
+#: configuration.xml:1037
+#, no-c-format
msgid "PostgreSQL"
-msgstr "org.hibernate.dialect.MySQLMyISAMDialect"
+msgstr "PostgreSQL"
-#: index.docbook:1037
+#. Tag: literal
+#: configuration.xml:1037
+#, no-c-format
msgid "org.hibernate.dialect.PostgreSQLDialect"
-msgstr "Oracle (cualquier versión)"
+msgstr "org.hibernate.dialect.PostgreSQLDialect"
-#: index.docbook:1040
+#. Tag: entry
+#: configuration.xml:1040
+#, no-c-format
msgid "MySQL"
-msgstr "org.hibernate.dialect.OracleDialect"
+msgstr "MySQL"
-#: index.docbook:1040
+#. Tag: literal
+#: configuration.xml:1040
+#, no-c-format
msgid "org.hibernate.dialect.MySQLDialect"
-msgstr "Oracle 9i/10g"
+msgstr "org.hibernate.dialect.MySQLDialect"
-#: index.docbook:1043
+#. Tag: entry
+#: configuration.xml:1043
+#, no-c-format
msgid "MySQL with InnoDB"
-msgstr "org.hibernate.dialect.Oracle9Dialect"
+msgstr "MySQL con InnoDB"
-#: index.docbook:1043
+#. Tag: literal
+#: configuration.xml:1043
+#, no-c-format
msgid "org.hibernate.dialect.MySQLInnoDBDialect"
-msgstr "Sybase"
+msgstr "org.hibernate.dialect.MySQLInnoDBDialect"
-#: index.docbook:1046
+#. Tag: entry
+#: configuration.xml:1046
+#, no-c-format
msgid "MySQL with MyISAM"
-msgstr "org.hibernate.dialect.SybaseDialect"
+msgstr "MySQL con MyISAM"
-#: index.docbook:1046
+#. Tag: literal
+#: configuration.xml:1046
+#, no-c-format
msgid "org.hibernate.dialect.MySQLMyISAMDialect"
-msgstr "Sybase Anywhere"
+msgstr "org.hibernate.dialect.MySQLMyISAMDialect"
-#: index.docbook:1049
+#. Tag: entry
+#: configuration.xml:1049
+#, no-c-format
msgid "Oracle (any version)"
-msgstr "org.hibernate.dialect.SybaseAnywhereDialect"
+msgstr "Oracle (cualquier versión)"
-#: index.docbook:1049
+#. Tag: literal
+#: configuration.xml:1049
+#, no-c-format
msgid "org.hibernate.dialect.OracleDialect"
-msgstr "Microsoft SQL Server"
+msgstr "org.hibernate.dialect.OracleDialect"
-#: index.docbook:1052
+#. Tag: entry
+#: configuration.xml:1052
+#, no-c-format
msgid "Oracle 9i/10g"
-msgstr "org.hibernate.dialect.SQLServerDialect"
+msgstr "Oracle 9i/10g"
-#: index.docbook:1052
+#. Tag: literal
+#: configuration.xml:1052
+#, no-c-format
msgid "org.hibernate.dialect.Oracle9Dialect"
-msgstr "SAP DB"
+msgstr "org.hibernate.dialect.Oracle9Dialect"
-#: index.docbook:1055
+#. Tag: entry
+#: configuration.xml:1055
+#, no-c-format
msgid "Sybase"
-msgstr "org.hibernate.dialect.SAPDBDialect"
+msgstr "Sybase"
-#: index.docbook:1055
+#. Tag: literal
+#: configuration.xml:1055
+#, no-c-format
msgid "org.hibernate.dialect.SybaseDialect"
-msgstr "Informix"
+msgstr "org.hibernate.dialect.SybaseDialect"
-#: index.docbook:1058
+#. Tag: entry
+#: configuration.xml:1058
+#, no-c-format
msgid "Sybase Anywhere"
-msgstr "org.hibernate.dialect.InformixDialect"
+msgstr "Sybase Anywhere"
-#: index.docbook:1058
+#. Tag: literal
+#: configuration.xml:1058
+#, no-c-format
msgid "org.hibernate.dialect.SybaseAnywhereDialect"
-msgstr "HypersonicSQL"
+msgstr "org.hibernate.dialect.SybaseAnywhereDialect"
-#: index.docbook:1061
+#. Tag: entry
+#: configuration.xml:1061
+#, no-c-format
msgid "Microsoft SQL Server"
-msgstr "org.hibernate.dialect.HSQLDialect"
+msgstr "Microsoft SQL Server"
-#: index.docbook:1061
+#. Tag: literal
+#: configuration.xml:1061
+#, no-c-format
msgid "org.hibernate.dialect.SQLServerDialect"
-msgstr "Ingres"
+msgstr "org.hibernate.dialect.SQLServerDialect"
-#: index.docbook:1064
+#. Tag: entry
+#: configuration.xml:1064
+#, no-c-format
msgid "SAP DB"
-msgstr "org.hibernate.dialect.IngresDialect"
+msgstr "SAP DB"
-#: index.docbook:1064
+#. Tag: literal
+#: configuration.xml:1064
+#, no-c-format
msgid "org.hibernate.dialect.SAPDBDialect"
-msgstr "Progress"
+msgstr "org.hibernate.dialect.SAPDBDialect"
-#: index.docbook:1067
+#. Tag: entry
+#: configuration.xml:1067
+#, no-c-format
msgid "Informix"
-msgstr "org.hibernate.dialect.ProgressDialect"
+msgstr "Informix"
-#: index.docbook:1067
+#. Tag: literal
+#: configuration.xml:1067
+#, no-c-format
msgid "org.hibernate.dialect.InformixDialect"
-msgstr "Mckoi SQL"
+msgstr "org.hibernate.dialect.InformixDialect"
-#: index.docbook:1070
+#. Tag: entry
+#: configuration.xml:1070
+#, no-c-format
msgid "HypersonicSQL"
-msgstr "org.hibernate.dialect.MckoiDialect"
+msgstr "HypersonicSQL"
-#: index.docbook:1070
+#. Tag: literal
+#: configuration.xml:1070
+#, no-c-format
msgid "org.hibernate.dialect.HSQLDialect"
-msgstr "Interbase"
+msgstr "org.hibernate.dialect.HSQLDialect"
-#: index.docbook:1073
+#. Tag: entry
+#: configuration.xml:1073
+#, no-c-format
msgid "Ingres"
-msgstr "org.hibernate.dialect.InterbaseDialect"
+msgstr "Ingres"
-#: index.docbook:1073
+#. Tag: literal
+#: configuration.xml:1073
+#, no-c-format
msgid "org.hibernate.dialect.IngresDialect"
-msgstr "Pointbase"
+msgstr "org.hibernate.dialect.IngresDialect"
-#: index.docbook:1076
+#. Tag: entry
+#: configuration.xml:1076
+#, no-c-format
msgid "Progress"
-msgstr "org.hibernate.dialect.PointbaseDialect"
+msgstr "Progress"
-#: index.docbook:1076
+#. Tag: literal
+#: configuration.xml:1076
+#, no-c-format
msgid "org.hibernate.dialect.ProgressDialect"
-msgstr "FrontBase"
+msgstr "org.hibernate.dialect.ProgressDialect"
-#: index.docbook:1079
+#. Tag: entry
+#: configuration.xml:1079
+#, no-c-format
msgid "Mckoi SQL"
-msgstr "org.hibernate.dialect.FrontbaseDialect"
+msgstr "Mckoi SQL"
-#: index.docbook:1079
+#. Tag: literal
+#: configuration.xml:1079
+#, no-c-format
msgid "org.hibernate.dialect.MckoiDialect"
-msgstr "Firebird"
+msgstr "org.hibernate.dialect.MckoiDialect"
-#: index.docbook:1082
+#. Tag: entry
+#: configuration.xml:1082
+#, no-c-format
msgid "Interbase"
-msgstr "org.hibernate.dialect.FirebirdDialect"
+msgstr "Interbase"
-#: index.docbook:1082
+#. Tag: literal
+#: configuration.xml:1082
+#, no-c-format
msgid "org.hibernate.dialect.InterbaseDialect"
-msgstr "Recuperación por Unión Externa (Outer Join Fetching)"
+msgstr "org.hibernate.dialect.InterbaseDialect"
-#: index.docbook:1085
+#. Tag: entry
+#: configuration.xml:1085
+#, no-c-format
msgid "Pointbase"
-msgstr "Si tu base de datos soporta uniones externas del estilo ANSI, Oracle o Sybase, la <emphasis>recuperación por unión externa</emphasis> aumentará frecuentemente el rendimiento limitando el número de llamadas a la base de datos (al costo de más trabajo posiblemente realizado por la base de datos misma). La recuperación por unión externa permite que un grafo completo de objetos conectados por asociaciones muchos-a-uno, uno-a-muchos, muchos-a-muchos y uno-a-uno sea traído en una sola <literal>SELECT</literal> SQL."
+msgstr "Pointbase"
-#: index.docbook:1085
+#. Tag: literal
+#: configuration.xml:1085
+#, no-c-format
msgid "org.hibernate.dialect.PointbaseDialect"
-msgstr "La recuperación por unión externa puede ser deshabilitada <emphasis>globalmente</emphasis> estableciendo la propiedad <literal>hibernate.max_fetch_depth</literal> a <literal>0</literal>. Un valor de <literal>1</literal> o mayor habilita la recuperación por unión externa para asociaciones uno-a-uno y muchos-a-uno que hayan sido mapeadas con <literal>fetch=\"join\"</literal>."
+msgstr "org.hibernate.dialect.PointbaseDialect"
-#: index.docbook:1088
+#. Tag: entry
+#: configuration.xml:1088
+#, no-c-format
msgid "FrontBase"
-msgstr "Ver <xref linkend=\"performance-fetching\"/> para más información."
+msgstr "FrontBase"
-#: index.docbook:1088
+#. Tag: literal
+#: configuration.xml:1088
+#, no-c-format
msgid "org.hibernate.dialect.FrontbaseDialect"
-msgstr "Flujos Binarios"
+msgstr "org.hibernate.dialect.FrontbaseDialect"
-#: index.docbook:1091
+#. Tag: entry
+#: configuration.xml:1091
+#, no-c-format
msgid "Firebird"
-msgstr "Oracle limita el tamaño de arrays de <literal>byte</literal> que puedan ser pasados a/desde su driver JDBC. Si deseas usar instancias grandes de tipo <literal>binary</literal> o <literal>serializable</literal>, debes habilitar <literal>hibernate.jdbc.use_streams_for_binary</literal>. <emphasis>Esta es una propiedad a nivel de sistema solamente.</emphasis>"
+msgstr "Firebird"
-#: index.docbook:1091
+#. Tag: literal
+#: configuration.xml:1091
+#, no-c-format
msgid "org.hibernate.dialect.FirebirdDialect"
-msgstr "Caché de segundo nivel y de lectura"
+msgstr "org.hibernate.dialect.FirebirdDialect"
-#: index.docbook:1100
+#. Tag: title
+#: configuration.xml:1100
+#, no-c-format
msgid "Outer Join Fetching"
-msgstr "Las propiedades prefijadas por <literal>hibernate.cache</literal> te permiten usar un sistema de caché de segundo nivel en el ámbito de un proceso o cluster con Hibernate. Ver <xref linkend=\"performance-cache\"/> para más detalles."
+msgstr "Recuperación por Unión Externa (Outer Join Fetching)"
-#: index.docbook:1102
-msgid "If your database supports ANSI, Oracle or Sybase style outer joins, <emphasis>outer join fetching</emphasis> will often increase performance by limiting the number of round trips to and from the database (at the cost of possibly more work performed by the database itself). Outer join fetching allows a whole graph of objects connected by many-to-one, one-to-many, many-to-many and one-to-one associations to be retrieved in a single SQL <literal>SELECT</literal>."
-msgstr "Sustitución de Lenguaje de Consulta"
+#. Tag: para
+#: configuration.xml:1102
+#, no-c-format
+msgid ""
+"If your database supports ANSI, Oracle or Sybase style outer joins, "
+"<emphasis>outer join fetching</emphasis> will often increase performance by "
+"limiting the number of round trips to and from the database (at the cost of "
+"possibly more work performed by the database itself). Outer join fetching "
+"allows a whole graph of objects connected by many-to-one, one-to-many, many-"
+"to-many and one-to-one associations to be retrieved in a single SQL "
+"<literal>SELECT</literal>."
+msgstr ""
+"Si tu base de datos soporta uniones externas del estilo ANSI, Oracle o "
+"Sybase, la <emphasis>recuperación por unión externa</emphasis> aumentará "
+"frecuentemente el rendimiento limitando el número de llamadas a la base de "
+"datos (al costo de más trabajo posiblemente realizado por la base de datos "
+"misma). La recuperación por unión externa permite que un grafo completo de "
+"objetos conectados por asociaciones muchos-a-uno, uno-a-muchos, muchos-a-"
+"muchos y uno-a-uno sea traído en una sola <literal>SELECT</literal> SQL."
-#: index.docbook:1111
-msgid "Outer join fetching may be disabled <emphasis>globally</emphasis> by setting the property <literal>hibernate.max_fetch_depth</literal> to <literal>0</literal>. A setting of <literal>1</literal> or higher enables outer join fetching for one-to-one and many-to-one associations which have been mapped with <literal>fetch=\"join\"</literal>."
-msgstr "Puedes definir nuevos símbolos de consulta de Hibernate usando <literal>hibernate.query.substitutions</literal>. Por ejemplo:"
+#. Tag: para
+#: configuration.xml:1111
+#, no-c-format
+msgid ""
+"Outer join fetching may be disabled <emphasis>globally</emphasis> by setting "
+"the property <literal>hibernate.max_fetch_depth</literal> to <literal>0</"
+"literal>. A setting of <literal>1</literal> or higher enables outer join "
+"fetching for one-to-one and many-to-one associations which have been mapped "
+"with <literal>fetch=\"join\"</literal>."
+msgstr ""
+"La recuperación por unión externa puede ser deshabilitada "
+"<emphasis>globalmente</emphasis> estableciendo la propiedad "
+"<literal>hibernate.max_fetch_depth</literal> a <literal>0</literal>. Un "
+"valor de <literal>1</literal> o mayor habilita la recuperación por unión "
+"externa para asociaciones uno-a-uno y muchos-a-uno que hayan sido mapeadas "
+"con <literal>fetch=\"join\"</literal>."
-#: index.docbook:1119
+#. Tag: para
+#: configuration.xml:1119
+#, no-c-format
msgid "See <xref linkend=\"performance-fetching\"/> for more information."
-msgstr "hibernate.query.substitutions true=1, false=0"
+msgstr "Ver <xref linkend=\"performance-fetching\"/> para más información."
-#: index.docbook:1126
+#. Tag: title
+#: configuration.xml:1126
+#, no-c-format
msgid "Binary Streams"
-msgstr "causaría que los símbolos <literal>true</literal> y <literal>false</literal> sean traducidos a literales enteros en el SQL generado."
+msgstr "Flujos Binarios"
-#: index.docbook:1128
-msgid "Oracle limits the size of <literal>byte</literal> arrays that may be passed to/from its JDBC driver. If you wish to use large instances of <literal>binary</literal> or <literal>serializable</literal> type, you should enable <literal>hibernate.jdbc.use_streams_for_binary</literal>. <emphasis>This is a system-level setting only.</emphasis>"
-msgstr "hibernate.query.substitutions toLowercase=LOWER"
+#. Tag: para
+#: configuration.xml:1128
+#, no-c-format
+msgid ""
+"Oracle limits the size of <literal>byte</literal> arrays that may be passed "
+"to/from its JDBC driver. If you wish to use large instances of "
+"<literal>binary</literal> or <literal>serializable</literal> type, you "
+"should enable <literal>hibernate.jdbc.use_streams_for_binary</literal>. "
+"<emphasis>This is a system-level setting only.</emphasis>"
+msgstr ""
+"Oracle limita el tamaño de arrays de <literal>byte</literal> que puedan ser "
+"pasados a/desde su driver JDBC. Si deseas usar instancias grandes de tipo "
+"<literal>binary</literal> o <literal>serializable</literal>, debes habilitar "
+"<literal>hibernate.jdbc.use_streams_for_binary</literal>. <emphasis>Esta es "
+"una propiedad a nivel de sistema solamente.</emphasis>"
-#: index.docbook:1139
+#. Tag: title
+#: configuration.xml:1139
+#, no-c-format
msgid "Second-level and query cache"
-msgstr "te permitiría renombrar la función <literal>LOWER</literal> de SQL."
+msgstr "Caché de segundo nivel y de lectura"
-#: index.docbook:1141
-msgid "The properties prefixed by <literal>hibernate.cache</literal> allow you to use a process or cluster scoped second-level cache system with Hibernate. See the <xref linkend=\"performance-cache\"/> for more details."
-msgstr "Hibernate statistics"
+#. Tag: para
+#: configuration.xml:1141
+#, no-c-format
+msgid ""
+"The properties prefixed by <literal>hibernate.cache</literal> allow you to "
+"use a process or cluster scoped second-level cache system with Hibernate. "
+"See the <xref linkend=\"performance-cache\"/> for more details."
+msgstr ""
+"Las propiedades prefijadas por <literal>hibernate.cache</literal> te "
+"permiten usar un sistema de caché de segundo nivel en el ámbito de un "
+"proceso o cluster con Hibernate. Ver <xref linkend=\"performance-cache\"/> "
+"para más detalles."
-#: index.docbook:1151
+#. Tag: title
+#: configuration.xml:1151
+#, no-c-format
msgid "Query Language Substitution"
-msgstr "Si habilitas <literal>hibernate.generate_statistics</literal>, Hibernate expondrá un número de métricas que son útiles al afinar un sistema en ejecución vía <literal>SessionFactory.getStatistics()</literal>. Hibernate puede incluso ser configurado para exponer estas estadísticas vía JMX. Lee el Javadoc de las interfaces en <literal>org.hibernate.stats</literal> para más información."
+msgstr "Sustitución de Lenguaje de Consulta"
-#: index.docbook:1153
-msgid "You may define new Hibernate query tokens using <literal>hibernate.query.substitutions</literal>. For example:"
-msgstr "Registros de mensajes (Logging)"
+#. Tag: para
+#: configuration.xml:1153
+#, no-c-format
+msgid ""
+"You may define new Hibernate query tokens using <literal>hibernate.query."
+"substitutions</literal>. For example:"
+msgstr ""
+"Puedes definir nuevos símbolos de consulta de Hibernate usando "
+"<literal>hibernate.query.substitutions</literal>. Por ejemplo:"
-#: index.docbook:1158
+#. Tag: programlisting
+#: configuration.xml:1158
+#, no-c-format
msgid "hibernate.query.substitutions true=1, false=0"
-msgstr "Hibernate registra varios eventos usando commons-logging de Apache."
+msgstr "hibernate.query.substitutions true=1, false=0"
-#: index.docbook:1160
-msgid "would cause the tokens <literal>true</literal> and <literal>false</literal> to be translated to integer literals in the generated SQL."
-msgstr "El servicio de commons-logging saldrá directamente ya sea a Log4J (si incluyes <literal>log4j.jar</literal> in your classpath) o JDK1.4 logging (al ejecutar bajo JDK1.4 o superior). Puedes descargar Log4J desde <literal>http://logging.apache.org</literal>. Para usar Log4J necesitarás colocar un fichero <literal>log4j.properties</literal> en tu classpath. Un fichero de propiedades de ejemplo se distribuye con Hibernate en el directorio <literal>src/</literal>."
+#. Tag: para
+#: configuration.xml:1160
+#, no-c-format
+msgid ""
+"would cause the tokens <literal>true</literal> and <literal>false</literal> "
+"to be translated to integer literals in the generated SQL."
+msgstr ""
+"causaría que los símbolos <literal>true</literal> y <literal>false</literal> "
+"sean traducidos a literales enteros en el SQL generado."
-#: index.docbook:1165
+#. Tag: programlisting
+#: configuration.xml:1165
+#, no-c-format
msgid "hibernate.query.substitutions toLowercase=LOWER"
-msgstr "Recomendamos fuertemente que te familiarices con los registros de mensajes de Hibernate. Se ha puesto un gran trabajo en hacer los registros de Hibernate tan detallados como se puede, sin hacerlos ilegibles. Es un dispositivo esencial en la resolución de problemas. Las categorías de registro más interesantes son las siguientes:"
+msgstr "hibernate.query.substitutions toLowercase=LOWER"
-#: index.docbook:1167
+#. Tag: para
+#: configuration.xml:1167
+#, no-c-format
msgid "would allow you to rename the SQL <literal>LOWER</literal> function."
-msgstr "Categorías de Registro de Hibernate"
+msgstr "te permitiría renombrar la función <literal>LOWER</literal> de SQL."
-#: index.docbook:1174
+#. Tag: title
+#: configuration.xml:1174
+#, no-c-format
msgid "Hibernate statistics"
-msgstr "Categoría"
+msgstr "Hibernate statistics"
-#: index.docbook:1176
-msgid "If you enable <literal>hibernate.generate_statistics</literal>, Hibernate will expose a number of metrics that are useful when tuning a running system via <literal>SessionFactory.getStatistics()</literal>. Hibernate can even be configured to expose these statistics via JMX. Read the Javadoc of the interfaces in <literal>org.hibernate.stats</literal> for more information."
-msgstr "Función"
+#. Tag: para
+#: configuration.xml:1176
+#, no-c-format
+msgid ""
+"If you enable <literal>hibernate.generate_statistics</literal>, Hibernate "
+"will expose a number of metrics that are useful when tuning a running system "
+"via <literal>SessionFactory.getStatistics()</literal>. Hibernate can even be "
+"configured to expose these statistics via JMX. Read the Javadoc of the "
+"interfaces in <literal>org.hibernate.stats</literal> for more information."
+msgstr ""
+"Si habilitas <literal>hibernate.generate_statistics</literal>, Hibernate "
+"expondrá un número de métricas que son útiles al afinar un sistema en "
+"ejecución vía <literal>SessionFactory.getStatistics()</literal>. Hibernate "
+"puede incluso ser configurado para exponer estas estadísticas vía JMX. Lee "
+"el Javadoc de las interfaces en <literal>org.hibernate.stats</literal> para "
+"más información."
-#: index.docbook:1188
+#. Tag: title
+#: configuration.xml:1188
+#, no-c-format
msgid "Logging"
-msgstr "org.hibernate.SQL"
+msgstr "Registros de mensajes (Logging)"
-#: index.docbook:1190
+#. Tag: para
+#: configuration.xml:1190
+#, no-c-format
msgid "Hibernate logs various events using Apache commons-logging."
-msgstr "Registra todas las sentencias DML de SQL a medida que se ejecutan"
+msgstr "Hibernate registra varios eventos usando commons-logging de Apache."
-#: index.docbook:1194
-msgid "The commons-logging service will direct output to either Apache Log4j (if you include <literal>log4j.jar</literal> in your classpath) or JDK1.4 logging (if running under JDK1.4 or above). You may download Log4j from <literal>http://jakarta.apache.org</literal>. To use Log4j you will need to place a <literal>log4j.properties</literal> file in your classpath, an example properties file is distributed with Hibernate in the <literal>src/</literal> directory."
-msgstr "org.hibernate.type"
+#. Tag: para
+#: configuration.xml:1194
+#, no-c-format
+msgid ""
+"The commons-logging service will direct output to either Apache Log4j (if "
+"you include <literal>log4j.jar</literal> in your classpath) or JDK1.4 "
+"logging (if running under JDK1.4 or above). You may download Log4j from "
+"<literal>http://jakarta.apache.org</literal>. To use Log4j you will need to "
+"place a <literal>log4j.properties</literal> file in your classpath, an "
+"example properties file is distributed with Hibernate in the <literal>src/</"
+"literal> directory."
+msgstr ""
+"El servicio de commons-logging saldrá directamente ya sea a Log4J (si "
+"incluyes <literal>log4j.jar</literal> in your classpath) o JDK1.4 logging "
+"(al ejecutar bajo JDK1.4 o superior). Puedes descargar Log4J desde "
+"<literal>http://logging.apache.org</literal>. Para usar Log4J necesitarás "
+"colocar un fichero <literal>log4j.properties</literal> en tu classpath. Un "
+"fichero de propiedades de ejemplo se distribuye con Hibernate en el "
+"directorio <literal>src/</literal>."
-#: index.docbook:1204
-msgid "We strongly recommend that you familiarize yourself with Hibernate's log messages. A lot of work has been put into making the Hibernate log as detailed as possible, without making it unreadable. It is an essential troubleshooting device. The most interesting log categories are the following:"
-msgstr "Registra todos los parámetros JDBC"
+#. Tag: para
+#: configuration.xml:1204
+#, no-c-format
+msgid ""
+"We strongly recommend that you familiarize yourself with Hibernate's log "
+"messages. A lot of work has been put into making the Hibernate log as "
+"detailed as possible, without making it unreadable. It is an essential "
+"troubleshooting device. The most interesting log categories are the "
+"following:"
+msgstr ""
+"Recomendamos fuertemente que te familiarices con los registros de mensajes "
+"de Hibernate. Se ha puesto un gran trabajo en hacer los registros de "
+"Hibernate tan detallados como se puede, sin hacerlos ilegibles. Es un "
+"dispositivo esencial en la resolución de problemas. Las categorías de "
+"registro más interesantes son las siguientes:"
-#: index.docbook:1213
+#. Tag: title
+#: configuration.xml:1213
+#, no-c-format
msgid "Hibernate Log Categories"
-msgstr "org.hibernate.tool.hbm2ddl"
+msgstr "Categorías de Registro de Hibernate"
-#: index.docbook:1219
+#. Tag: entry
+#: configuration.xml:1219
+#, no-c-format
msgid "Category"
-msgstr "Registra todas las sentencias DDL de SQL a medida que se ejecutan"
+msgstr "Categoría"
-#: index.docbook:1220
+#. Tag: entry
+#: configuration.xml:1220
+#, no-c-format
msgid "Function"
-msgstr "org.hibernate.pretty"
+msgstr "Función"
-#: index.docbook:1225
+#. Tag: literal
+#: configuration.xml:1225
+#, no-c-format
msgid "org.hibernate.SQL"
-msgstr "Registra el estado de todas las entidades (máximo de 20 entidades) asociadas con la sesión en tiempo de limpieza (flush)"
+msgstr "org.hibernate.SQL"
-#: index.docbook:1226
+#. Tag: entry
+#: configuration.xml:1226
+#, no-c-format
msgid "Log all SQL DML statements as they are executed"
-msgstr "org.hibernate.cache"
+msgstr "Registra todas las sentencias DML de SQL a medida que se ejecutan"
-#: index.docbook:1229
+#. Tag: literal
+#: configuration.xml:1229
+#, no-c-format
msgid "org.hibernate.type"
-msgstr "Registra toda la actividad del caché de segundo nivel"
+msgstr "org.hibernate.type"
-#: index.docbook:1230
+#. Tag: entry
+#: configuration.xml:1230
+#, no-c-format
msgid "Log all JDBC parameters"
-msgstr "org.hibernate.transaction"
+msgstr "Registra todos los parámetros JDBC"
-#: index.docbook:1233
+#. Tag: literal
+#: configuration.xml:1233
+#, no-c-format
msgid "org.hibernate.tool.hbm2ddl"
-msgstr "Registra la actividad relacionada con la transacción"
+msgstr "org.hibernate.tool.hbm2ddl"
-#: index.docbook:1234
+#. Tag: entry
+#: configuration.xml:1234
+#, no-c-format
msgid "Log all SQL DDL statements as they are executed"
-msgstr "org.hibernate.jdbc"
+msgstr "Registra todas las sentencias DDL de SQL a medida que se ejecutan"
-#: index.docbook:1237
+#. Tag: literal
+#: configuration.xml:1237
+#, no-c-format
msgid "org.hibernate.pretty"
-msgstr "Registra toda adquisición de recursos JDBC"
+msgstr "org.hibernate.pretty"
-#: index.docbook:1238
-msgid "Log the state of all entities (max 20 entities) associated with the session at flush time"
-msgstr "org.hibernate.hql.ast"
+#. Tag: entry
+#: configuration.xml:1238
+#, no-c-format
+msgid ""
+"Log the state of all entities (max 20 entities) associated with the session "
+"at flush time"
+msgstr ""
+"Registra el estado de todas las entidades (máximo de 20 entidades) asociadas "
+"con la sesión en tiempo de limpieza (flush)"
-#: index.docbook:1244
+#. Tag: literal
+#: configuration.xml:1244
+#, no-c-format
msgid "org.hibernate.cache"
-msgstr "Regista los ASTs de HQL y SQL, así como otra información sobre análisis de consultas."
+msgstr "org.hibernate.cache"
-#: index.docbook:1245
+#. Tag: entry
+#: configuration.xml:1245
+#, no-c-format
msgid "Log all second-level cache activity"
-msgstr "org.hibernate.secure"
+msgstr "Registra toda la actividad del caché de segundo nivel"
-#: index.docbook:1248
+#. Tag: literal
+#: configuration.xml:1248
+#, no-c-format
msgid "org.hibernate.transaction"
-msgstr "Registra todas las peticiones de autorización JAAS"
+msgstr "org.hibernate.transaction"
-#: index.docbook:1249
+#. Tag: entry
+#: configuration.xml:1249
+#, no-c-format
msgid "Log transaction related activity"
-msgstr "org.hibernate"
+msgstr "Registra la actividad relacionada con la transacción"
-#: index.docbook:1252
+#. Tag: literal
+#: configuration.xml:1252
+#, no-c-format
msgid "org.hibernate.jdbc"
-msgstr "Registra todo (mucha información, pero muy útil para la resolución de problemas)"
+msgstr "org.hibernate.jdbc"
-#: index.docbook:1253
+#. Tag: entry
+#: configuration.xml:1253
+#, no-c-format
msgid "Log all JDBC resource acquisition"
-msgstr "Al desarrollar aplicacinoes con Hibernate, casi siempre debes trabajar con <literal>debug</literal> habilitado para la categoría <literal>org.hibernate.SQL</literal> o, alternativamente, la propiedad <literal>hibernate.show_sql</literal> habilitada."
+msgstr "Registra toda adquisición de recursos JDBC"
-#: index.docbook:1256
+#. Tag: literal
+#: configuration.xml:1256
+#, no-c-format
msgid "org.hibernate.hql.ast.AST"
-msgstr "Implementando una <literal>NamingStrategy</literal>"
+msgstr "org.hibernate.hql.ast"
-#: index.docbook:1257
+#. Tag: entry
+#: configuration.xml:1257
+#, no-c-format
msgid "Log HQL and SQL ASTs during query parsing"
-msgstr "La interface <literal>org.hibernate.cfg.NamingStrategy</literal> te permite especificar un \"estándar de nombrado\" para objetos de la base de datos y elementos de esquema."
+msgstr ""
+"Regista los ASTs de HQL y SQL, así como otra información sobre análisis de "
+"consultas."
-#: index.docbook:1262
+#. Tag: literal
+#: configuration.xml:1262
+#, no-c-format
msgid "org.hibernate.secure"
-msgstr "Puedes proveer reglas para generar automáticamente identificadores de base de datos a partir de identificadores JDBC o para procesar nombres \"lógicos\" de columnas y tablas dados en el fichero de mapeo en nombres \"físicos\" de columnas y tablas. Esta funcionalidad ayuda a reducir la verborragia del documento de mapeo, eliminando ruido repetitivo (prefijos <literal>TBL_</literal>, por ejemplo). La estrategia por defecto usada por Hibernate mínima en absoluto."
+msgstr "org.hibernate.secure"
-#: index.docbook:1263
+#. Tag: entry
+#: configuration.xml:1263
+#, no-c-format
msgid "Log all JAAS authorization requests"
-msgstr "Puedes especificar una estrategia diferente llamando a <literal>Configuration.setNamingStrategy()</literal> antes de agregar los mapeos:"
+msgstr "Registra todas las peticiones de autorización JAAS"
-#: index.docbook:1266
+#. Tag: literal
+#: configuration.xml:1266
+#, no-c-format
msgid "org.hibernate"
+msgstr "org.hibernate"
+
+#. Tag: entry
+#: configuration.xml:1267
+#, no-c-format
+msgid ""
+"Log everything (a lot of information, but very useful for troubleshooting)"
msgstr ""
- "<![CDATA[SessionFactory sf = new Configuration()\n"
- " .setNamingStrategy(ImprovedNamingStrategy.INSTANCE)\n"
- " .addFile(\"Item.hbm.xml\")\n"
- " .addFile(\"Bid.hbm.xml\")\n"
- " .buildSessionFactory();]]>"
+"Registra todo (mucha información, pero muy útil para la resolución de "
+"problemas)"
-#: index.docbook:1267
-msgid "Log everything (a lot of information, but very useful for troubleshooting)"
-msgstr "<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> es una estrategia prefabricada que puede ser un punto de partida útil para algunas aplicaciones."
+#. Tag: para
+#: configuration.xml:1276
+#, no-c-format
+msgid ""
+"When developing applications with Hibernate, you should almost always work "
+"with <literal>debug</literal> enabled for the category <literal>org."
+"hibernate.SQL</literal>, or, alternatively, the property <literal>hibernate."
+"show_sql</literal> enabled."
+msgstr ""
+"Al desarrollar aplicacinoes con Hibernate, casi siempre debes trabajar con "
+"<literal>debug</literal> habilitado para la categoría <literal>org.hibernate."
+"SQL</literal> o, alternativamente, la propiedad <literal>hibernate.show_sql</"
+"literal> habilitada."
-#: index.docbook:1276
-msgid "When developing applications with Hibernate, you should almost always work with <literal>debug</literal> enabled for the category <literal>org.hibernate.SQL</literal>, or, alternatively, the property <literal>hibernate.show_sql</literal> enabled."
-msgstr "Fichero de configuración XML"
-
-#: index.docbook:1286
+#. Tag: title
+#: configuration.xml:1286
+#, no-c-format
msgid "Implementing a <literal>NamingStrategy</literal>"
-msgstr "Un enfoque alternativo de configuración es especificar una configuración completa en un fichero llamado <literal>hibernate.cfg.xml</literal>. Este fichero puede ser usado como un remplazo del fichero <literal>hibernate.properties</literal> o, si ambos están presentes, para sobrescribir propiedades."
+msgstr "Implementando una <literal>NamingStrategy</literal>"
-#: index.docbook:1288
-msgid "The interface <literal>org.hibernate.cfg.NamingStrategy</literal> allows you to specify a \"naming standard\" for database objects and schema elements."
-msgstr "El fichero de configuración XML se espera por defecto en la raíz o tu <literal>CLASSPATH</literal>. He aquí un ejemplo:"
+#. Tag: para
+#: configuration.xml:1288
+#, no-c-format
+msgid ""
+"The interface <literal>org.hibernate.cfg.NamingStrategy</literal> allows you "
+"to specify a \"naming standard\" for database objects and schema elements."
+msgstr ""
+"La interface <literal>org.hibernate.cfg.NamingStrategy</literal> te permite "
+"especificar un \"estándar de nombrado\" para objetos de la base de datos y "
+"elementos de esquema."
-#: index.docbook:1293
-msgid "You may provide rules for automatically generating database identifiers from Java identifiers or for processing \"logical\" column and table names given in the mapping file into \"physical\" table and column names. This feature helps reduce the verbosity of the mapping document, eliminating repetitive noise (<literal>TBL_</literal> prefixes, for example). The default strategy used by Hibernate is quite minimal."
+#. Tag: para
+#: configuration.xml:1293
+#, no-c-format
+msgid ""
+"You may provide rules for automatically generating database identifiers from "
+"Java identifiers or for processing \"logical\" column and table names given "
+"in the mapping file into \"physical\" table and column names. This feature "
+"helps reduce the verbosity of the mapping document, eliminating repetitive "
+"noise (<literal>TBL_</literal> prefixes, for example). The default strategy "
+"used by Hibernate is quite minimal."
msgstr ""
- "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
- "<!DOCTYPE hibernate-configuration PUBLIC\n"
- " \"-//Hibernate/Hibernate Configuration DTD//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd\">\n"
- "\n"
- "<hibernate-configuration>\n"
- "\n"
- " <!-- a SessionFactory instance listed as /jndi/name -->\n"
- " <session-factory\n"
- " name=\"java:hibernate/SessionFactory\">\n"
- "\n"
- " <!-- properties -->\n"
- " <property name=\"connection.datasource\">java:/comp/env/jdbc/MyDB</property>\n"
- " <property name=\"dialect\">org.hibernate.dialect.MySQLDialect</property>\n"
- " <property name=\"show_sql\">false</property>\n"
- " <property name=\"transaction.factory_class\">\n"
- " org.hibernate.transaction.JTATransactionFactory\n"
- " </property>\n"
- " <property name=\"jta.UserTransaction\">java:comp/UserTransaction</property>\n"
- "\n"
- " <!-- mapping files -->\n"
- " <mapping resource=\"org/hibernate/auction/Item.hbm.xml\"/>\n"
- " <mapping resource=\"org/hibernate/auction/Bid.hbm.xml\"/>\n"
- "\n"
- " <!-- cache settings -->\n"
- " <class-cache class=\"org.hibernate.auction.Item\" usage=\"read-write\"/>\n"
- " <class-cache class=\"org.hibernate.auction.Bid\" usage=\"read-only\"/>\n"
- " <collection-cache collection=\"org.hibernate.auction.Item.bids\" usage=\"read-write\"/>\n"
- "\n"
- " </session-factory>\n"
- "\n"
- "</hibernate-configuration>]]>"
+"Puedes proveer reglas para generar automáticamente identificadores de base "
+"de datos a partir de identificadores JDBC o para procesar nombres \"lógicos"
+"\" de columnas y tablas dados en el fichero de mapeo en nombres \"físicos\" "
+"de columnas y tablas. Esta funcionalidad ayuda a reducir la verborragia del "
+"documento de mapeo, eliminando ruido repetitivo (prefijos <literal>TBL_</"
+"literal>, por ejemplo). La estrategia por defecto usada por Hibernate mínima "
+"en absoluto."
-#: index.docbook:1302
-msgid "You may specify a different strategy by calling <literal>Configuration.setNamingStrategy()</literal> before adding mappings:"
-msgstr "Como puedes ver, la ventaja de este enfoque es la externalización de los nombres de los fichero de mapeo a configuración. El <literal>hibernate.cfg.xml</literal> es también más conveniente una vez que hayas afinado el caché de Hibernate. Observa que elección tuya usar ya sea <literal>hibernate.properties</literal> o <literal>hibernate.cfg.xml</literal>, ambos son equivalentes, excepto por los beneficios de usar la sintaxis XML arriba mencionados."
+#. Tag: para
+#: configuration.xml:1302
+#, no-c-format
+msgid ""
+"You may specify a different strategy by calling <literal>Configuration."
+"setNamingStrategy()</literal> before adding mappings:"
+msgstr ""
+"Puedes especificar una estrategia diferente llamando a "
+"<literal>Configuration.setNamingStrategy()</literal> antes de agregar los "
+"mapeos:"
-#: index.docbook:1307
+#. Tag: programlisting
+#: configuration.xml:1307
+#, no-c-format
msgid ""
- "<![CDATA[SessionFactory sf = new Configuration()\n"
- " .setNamingStrategy(ImprovedNamingStrategy.INSTANCE)\n"
- " .addFile(\"Item.hbm.xml\")\n"
- " .addFile(\"Bid.hbm.xml\")\n"
- " .buildSessionFactory();]]>"
-msgstr "Con la configuración XML, arrancar Hibernate es tan simple como"
+"<![CDATA[SessionFactory sf = new Configuration()\n"
+" .setNamingStrategy(ImprovedNamingStrategy.INSTANCE)\n"
+" .addFile(\"Item.hbm.xml\")\n"
+" .addFile(\"Bid.hbm.xml\")\n"
+" .buildSessionFactory();]]>"
+msgstr ""
-#: index.docbook:1309
-msgid "<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> is a built-in strategy that might be a useful starting point for some applications."
-msgstr "<![CDATA[SessionFactory sf = new Configuration().configure().buildSessionFactory();]]>"
+#. Tag: para
+#: configuration.xml:1309
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> is a built-in "
+"strategy that might be a useful starting point for some applications."
+msgstr ""
+"<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> es una "
+"estrategia prefabricada que puede ser un punto de partida útil para algunas "
+"aplicaciones."
-#: index.docbook:1317
+#. Tag: title
+#: configuration.xml:1317
+#, no-c-format
msgid "XML configuration file"
-msgstr "Puedes tomar un fichero XML diferente usando"
+msgstr "Fichero de configuración XML"
-#: index.docbook:1319
-msgid "An alternative approach to configuration is to specify a full configuration in a file named <literal>hibernate.cfg.xml</literal>. This file can be used as a replacement for the <literal>hibernate.properties</literal> file or, if both are present, to override properties."
+#. Tag: para
+#: configuration.xml:1319
+#, no-c-format
+msgid ""
+"An alternative approach to configuration is to specify a full configuration "
+"in a file named <literal>hibernate.cfg.xml</literal>. This file can be used "
+"as a replacement for the <literal>hibernate.properties</literal> file or, if "
+"both are present, to override properties."
msgstr ""
- "<![CDATA[SessionFactory sf = new Configuration()\n"
- " .configure(\"catdb.cfg.xml\")\n"
- " .buildSessionFactory();]]>"
+"Un enfoque alternativo de configuración es especificar una configuración "
+"completa en un fichero llamado <literal>hibernate.cfg.xml</literal>. Este "
+"fichero puede ser usado como un remplazo del fichero <literal>hibernate."
+"properties</literal> o, si ambos están presentes, para sobrescribir "
+"propiedades."
-#: index.docbook:1326
-msgid "The XML configuration file is by default expected to be in the root o your <literal>CLASSPATH</literal>. Here is an example:"
-msgstr "Integració con Servidores de Aplicaciones J2EE"
+#. Tag: para
+#: configuration.xml:1326
+#, no-c-format
+msgid ""
+"The XML configuration file is by default expected to be in the root o your "
+"<literal>CLASSPATH</literal>. Here is an example:"
+msgstr ""
+"El fichero de configuración XML se espera por defecto en la raíz o tu "
+"<literal>CLASSPATH</literal>. He aquí un ejemplo:"
-#: index.docbook:1331
+#. Tag: programlisting
+#: configuration.xml:1331
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
- "<!DOCTYPE hibernate-configuration PUBLIC\n"
- " \"-//Hibernate/Hibernate Configuration DTD//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd\">\n"
- "\n"
- "<hibernate-configuration>\n"
- "\n"
- " <!-- a SessionFactory instance listed as /jndi/name -->\n"
- " <session-factory\n"
- " name=\"java:hibernate/SessionFactory\">\n"
- "\n"
- " <!-- properties -->\n"
- " <property name=\"connection.datasource\">java:/comp/env/jdbc/MyDB</property>\n"
- " <property name=\"dialect\">org.hibernate.dialect.MySQLDialect</property>\n"
- " <property name=\"show_sql\">false</property>\n"
- " <property name=\"transaction.factory_class\">\n"
- " org.hibernate.transaction.JTATransactionFactory\n"
- " </property>\n"
- " <property name=\"jta.UserTransaction\">java:comp/UserTransaction</property>\n"
- "\n"
- " <!-- mapping files -->\n"
- " <mapping resource=\"org/hibernate/auction/Item.hbm.xml\"/>\n"
- " <mapping resource=\"org/hibernate/auction/Bid.hbm.xml\"/>\n"
- "\n"
- " <!-- cache settings -->\n"
- " <class-cache class=\"org.hibernate.auction.Item\" usage=\"read-write\"/>\n"
- " <class-cache class=\"org.hibernate.auction.Bid\" usage=\"read-only\"/>\n"
- " <collection-cache collection=\"org.hibernate.auction.Item.bids\" usage=\"read-write\"/>\n"
- "\n"
- " </session-factory>\n"
- "\n"
- "</hibernate-configuration>]]>"
-msgstr "Hibernate tiene los siguientes puntos de integración con la infraestructura J2EE:"
+"<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
+"<!DOCTYPE hibernate-configuration PUBLIC\n"
+" \"-//Hibernate/Hibernate Configuration DTD//EN\"\n"
+" \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd\">\n"
+"\n"
+"<hibernate-configuration>\n"
+"\n"
+" <!-- a SessionFactory instance listed as /jndi/name -->\n"
+" <session-factory\n"
+" name=\"java:hibernate/SessionFactory\">\n"
+"\n"
+" <!-- properties -->\n"
+" <property name=\"connection.datasource\">java:/comp/env/jdbc/MyDB</"
+"property>\n"
+" <property name=\"dialect\">org.hibernate.dialect.MySQLDialect</"
+"property>\n"
+" <property name=\"show_sql\">false</property>\n"
+" <property name=\"transaction.factory_class\">\n"
+" org.hibernate.transaction.JTATransactionFactory\n"
+" </property>\n"
+" <property name=\"jta.UserTransaction\">java:comp/UserTransaction</"
+"property>\n"
+"\n"
+" <!-- mapping files -->\n"
+" <mapping resource=\"org/hibernate/auction/Item.hbm.xml\"/>\n"
+" <mapping resource=\"org/hibernate/auction/Bid.hbm.xml\"/>\n"
+"\n"
+" <!-- cache settings -->\n"
+" <class-cache class=\"org.hibernate.auction.Item\" usage=\"read-write"
+"\"/>\n"
+" <class-cache class=\"org.hibernate.auction.Bid\" usage=\"read-only\"/"
+">\n"
+" <collection-cache collection=\"org.hibernate.auction.Item.bids\" "
+"usage=\"read-write\"/>\n"
+"\n"
+" </session-factory>\n"
+"\n"
+"</hibernate-configuration>]]>"
+msgstr ""
-#: index.docbook:1333
-msgid "As you can see, the advantage of this approach is the externalization of the mapping file names to configuration. The <literal>hibernate.cfg.xml</literal> is also more convenient once you have to tune the Hibernate cache. Note that is your choice to use either <literal>hibernate.properties</literal> or <literal>hibernate.cfg.xml</literal>, both are equivalent, except for the above mentioned benefits of using the XML syntax."
-msgstr "<emphasis>Datasources manejados por contenedor</emphasis>: Hibernate puede usar conexiones JDBC manejadas por el contenedor y provistas a través de JNDI. Usualmente, un <literal>TransactionManager</literal> compatible con JTA y un <literal>ResourceManager</literal> cuidan del manejo de transacciones (CMT), esp. manejo de transacciones distribuídas a través de varios datasources. Puedes también, por supuesto, demarcar los límites de las transacciones programáticamente (BMT) o podrías querer usar para esto la API opcional de <literal>Transaction</literal> de Hibernate para mantener tu código portable."
+#. Tag: para
+#: configuration.xml:1333
+#, no-c-format
+msgid ""
+"As you can see, the advantage of this approach is the externalization of the "
+"mapping file names to configuration. The <literal>hibernate.cfg.xml</"
+"literal> is also more convenient once you have to tune the Hibernate cache. "
+"Note that is your choice to use either <literal>hibernate.properties</"
+"literal> or <literal>hibernate.cfg.xml</literal>, both are equivalent, "
+"except for the above mentioned benefits of using the XML syntax."
+msgstr ""
+"Como puedes ver, la ventaja de este enfoque es la externalización de los "
+"nombres de los fichero de mapeo a configuración. El <literal>hibernate.cfg."
+"xml</literal> es también más conveniente una vez que hayas afinado el caché "
+"de Hibernate. Observa que elección tuya usar ya sea <literal>hibernate."
+"properties</literal> o <literal>hibernate.cfg.xml</literal>, ambos son "
+"equivalentes, excepto por los beneficios de usar la sintaxis XML arriba "
+"mencionados."
-#: index.docbook:1342
+#. Tag: para
+#: configuration.xml:1342
+#, no-c-format
msgid "With the XML configuration, starting Hibernate is then as simple as"
-msgstr "<emphasis>Ligamento Automático JNDI</emphasis>: Hibernate puede ligar sus <literal>SessionFactory</literal> a JNDI después del arranque."
+msgstr "Con la configuración XML, arrancar Hibernate es tan simple como"
-#: index.docbook:1346
-msgid "<![CDATA[SessionFactory sf = new Configuration().configure().buildSessionFactory();]]>"
-msgstr "<emphasis>Ligamento de Sesión JTA:</emphasis> La <literal>Session</literal> de Hibernate puede ser ligada automáticamente al ámbito de transacciones JTA si usas EJBs. Simplemente busca la <literal>SessionFactory</literal> de JNDI y obtén la <literal>Session</literal> actual. Deja que Hibernate cuide de limpiar y cerrar la <literal>Session</literal> cuando se complete tu transacción JTA. La demarcación de transacción es declarativa, en descriptores de despliegue de EJB."
+#. Tag: programlisting
+#: configuration.xml:1346
+#, no-c-format
+msgid ""
+"<![CDATA[SessionFactory sf = new Configuration().configure()."
+"buildSessionFactory();]]>"
+msgstr ""
-#: index.docbook:1348
+#. Tag: para
+#: configuration.xml:1348
+#, no-c-format
msgid "You can pick a different XML configuration file using"
-msgstr "<emphasis>Despliegue JMX:</emphasis> Si tienes un servidor de aplicaciones capaz de JMX (por ejemplo, JBoss AS), puedes optar por desplegar Hibernate como un MBean manejado. Esto te ahorra el código de una línea de arranque para construir tu <literal>SessionFactory</literal> desde una <literal>Configuration</literal>. El contenedor arrancará tu <literal>HibernateService</literal>, e idealmente también cuidará de las dependencias entre servicios (El datasource debe estar disponible antes que arranque Hibernate, etc)."
+msgstr "Puedes tomar un fichero XML diferente usando"
-#: index.docbook:1352
+#. Tag: programlisting
+#: configuration.xml:1352
+#, no-c-format
msgid ""
- "<![CDATA[SessionFactory sf = new Configuration()\n"
- " .configure(\"catdb.cfg.xml\")\n"
- " .buildSessionFactory();]]>"
-msgstr "Dependiendo de tu entorno, podrías tener que establecer la opción de configuración <literal>hibernate.connection.aggressive_release</literal> a true si tu servidor de aplicaciones muestra excepciones \"connection containment\"."
+"<![CDATA[SessionFactory sf = new Configuration()\n"
+" .configure(\"catdb.cfg.xml\")\n"
+" .buildSessionFactory();]]>"
+msgstr ""
-#: index.docbook:1357
+#. Tag: title
+#: configuration.xml:1357
+#, no-c-format
msgid "J2EE Application Server integration"
-msgstr "Configuración de la estrategia de transacción"
+msgstr "Integració con Servidores de Aplicaciones J2EE"
-#: index.docbook:1359
+#. Tag: para
+#: configuration.xml:1359
+#, no-c-format
msgid "Hibernate has the following integration points for J2EE infrastructure:"
-msgstr "La API de <literal>Session</literal> de Hibernate es independiente de cualquier demarcación de transacción en tu arquitectura. Si dejas que Hibernate use JDBC directamente, a través de un pool de conexiones. puedes comenzar y acabar tus transacciones llamando la API de JDBC. Si ejecutas en un servidor de aplicaciones J2EE, podréas querer usar transacciones manejadas por bean y llamar la API de JTA y <literal>UserTransaction</literal> cuando sea necesario."
+msgstr ""
+"Hibernate tiene los siguientes puntos de integración con la infraestructura "
+"J2EE:"
-#: index.docbook:1365
-msgid "<emphasis>Container-managed datasources</emphasis>: Hibernate can use JDBC connections managed by the container and provided through JNDI. Usually, a JTA compatible <literal>TransactionManager</literal> and a <literal>ResourceManager</literal> take care of transaction management (CMT), esp. distributed transaction handling across several datasources. You may of course also demarcate transaction boundaries programmatically (BMT) or you might want to use the optional Hibernate <literal>Transaction</literal> API for this to keep your code portable."
-msgstr "Para mantener tu código portable entre estos dos (y otros) entornos recomendamos la API de <literal>Transaction</literal> de Hibernate, que envuelve y oculta el sistema subyacente. Tienes que especificar una clase fábrica para las instancias de <literal>Transaction</literal> estableciendo la propiedad de configuración <literal>hibernate.transaction.factory_class</literal> de Hibernate."
+#. Tag: para
+#: configuration.xml:1365
+#, no-c-format
+msgid ""
+"<emphasis>Container-managed datasources</emphasis>: Hibernate can use JDBC "
+"connections managed by the container and provided through JNDI. Usually, a "
+"JTA compatible <literal>TransactionManager</literal> and a "
+"<literal>ResourceManager</literal> take care of transaction management "
+"(CMT), esp. distributed transaction handling across several datasources. You "
+"may of course also demarcate transaction boundaries programmatically (BMT) "
+"or you might want to use the optional Hibernate <literal>Transaction</"
+"literal> API for this to keep your code portable."
+msgstr ""
+"<emphasis>Datasources manejados por contenedor</emphasis>: Hibernate puede "
+"usar conexiones JDBC manejadas por el contenedor y provistas a través de "
+"JNDI. Usualmente, un <literal>TransactionManager</literal> compatible con "
+"JTA y un <literal>ResourceManager</literal> cuidan del manejo de "
+"transacciones (CMT), esp. manejo de transacciones distribuídas a través de "
+"varios datasources. Puedes también, por supuesto, demarcar los límites de "
+"las transacciones programáticamente (BMT) o podrías querer usar para esto la "
+"API opcional de <literal>Transaction</literal> de Hibernate para mantener tu "
+"código portable."
-#: index.docbook:1380
-msgid "<emphasis>Automatic JNDI binding</emphasis>: Hibernate can bind its <literal>SessionFactory</literal> to JNDI after startup."
-msgstr "Hay tres elecciones estándar (prefabricadas):"
+#. Tag: para
+#: configuration.xml:1380
+#, no-c-format
+msgid ""
+"<emphasis>Automatic JNDI binding</emphasis>: Hibernate can bind its "
+"<literal>SessionFactory</literal> to JNDI after startup."
+msgstr ""
+"<emphasis>Ligamento Automático JNDI</emphasis>: Hibernate puede ligar sus "
+"<literal>SessionFactory</literal> a JNDI después del arranque."
-#: index.docbook:1389
-msgid "<emphasis>JTA Session binding:</emphasis> The Hibernate <literal>Session</literal> may be automatically bound to the scope of JTA transactions. Simply lookup the <literal>SessionFactory</literal> from JNDI and get the current <literal>Session</literal>. Let Hibernate take care of flushing and closing the <literal>Session</literal> when your JTA transaction completes. Transaction demarcation is either declarative (CMT) or programmatic (BMT/UserTransaction)."
-msgstr "org.hibernate.transaction.JDBCTransactionFactory"
+#. Tag: para
+#: configuration.xml:1389
+#, no-c-format
+msgid ""
+"<emphasis>JTA Session binding:</emphasis> The Hibernate <literal>Session</"
+"literal> may be automatically bound to the scope of JTA transactions. Simply "
+"lookup the <literal>SessionFactory</literal> from JNDI and get the current "
+"<literal>Session</literal>. Let Hibernate take care of flushing and closing "
+"the <literal>Session</literal> when your JTA transaction completes. "
+"Transaction demarcation is either declarative (CMT) or programmatic (BMT/"
+"UserTransaction)."
+msgstr ""
+"<emphasis>Ligamento de Sesión JTA:</emphasis> La <literal>Session</literal> "
+"de Hibernate puede ser ligada automáticamente al ámbito de transacciones JTA "
+"si usas EJBs. Simplemente busca la <literal>SessionFactory</literal> de JNDI "
+"y obtén la <literal>Session</literal> actual. Deja que Hibernate cuide de "
+"limpiar y cerrar la <literal>Session</literal> cuando se complete tu "
+"transacción JTA. La demarcación de transacción es declarativa, en "
+"descriptores de despliegue de EJB."
-#: index.docbook:1402
-msgid "<emphasis>JMX deployment:</emphasis> If you have a JMX capable application server (e.g. JBoss AS), you can chose to deploy Hibernate as a managed MBean. This saves you the one line startup code to build your <literal>SessionFactory</literal> from a <literal>Configuration</literal>. The container will startup your <literal>HibernateService</literal>, and ideally also take care of service dependencies (Datasource has to be available before Hibernate starts, etc)."
-msgstr "delega a transacciones de base de datos (JDBC) (por defecto)"
+#. Tag: para
+#: configuration.xml:1402
+#, no-c-format
+msgid ""
+"<emphasis>JMX deployment:</emphasis> If you have a JMX capable application "
+"server (e.g. JBoss AS), you can chose to deploy Hibernate as a managed "
+"MBean. This saves you the one line startup code to build your "
+"<literal>SessionFactory</literal> from a <literal>Configuration</literal>. "
+"The container will startup your <literal>HibernateService</literal>, and "
+"ideally also take care of service dependencies (Datasource has to be "
+"available before Hibernate starts, etc)."
+msgstr ""
+"<emphasis>Despliegue JMX:</emphasis> Si tienes un servidor de aplicaciones "
+"capaz de JMX (por ejemplo, JBoss AS), puedes optar por desplegar Hibernate "
+"como un MBean manejado. Esto te ahorra el código de una línea de arranque "
+"para construir tu <literal>SessionFactory</literal> desde una "
+"<literal>Configuration</literal>. El contenedor arrancará tu "
+"<literal>HibernateService</literal>, e idealmente también cuidará de las "
+"dependencias entre servicios (El datasource debe estar disponible antes que "
+"arranque Hibernate, etc)."
-#: index.docbook:1413
-msgid "Depending on your environment, you might have to set the configuration option <literal>hibernate.connection.aggressive_release</literal> to true if your application server shows \"connection containment\" exceptions."
-msgstr "org.hibernate.transaction.JTATransactionFactory"
+#. Tag: para
+#: configuration.xml:1413
+#, no-c-format
+msgid ""
+"Depending on your environment, you might have to set the configuration "
+"option <literal>hibernate.connection.aggressive_release</literal> to true if "
+"your application server shows \"connection containment\" exceptions."
+msgstr ""
+"Dependiendo de tu entorno, podrías tener que establecer la opción de "
+"configuración <literal>hibernate.connection.aggressive_release</literal> a "
+"true si tu servidor de aplicaciones muestra excepciones \"connection "
+"containment\"."
-#: index.docbook:1420
+#. Tag: title
+#: configuration.xml:1420
+#, no-c-format
msgid "Transaction strategy configuration"
-msgstr "delega a transacciones manejadas por contenedor si una transacción existente estó por debajo en este contexto (ej. método de un bean de sesión EJB), en otro caso una nueva transacción es comenzada y se usan transacciones manejadas por bean."
+msgstr "Configuración de la estrategia de transacción"
-#: index.docbook:1422
-msgid "The Hibernate <literal>Session</literal> API is independent of any transaction demarcation system in your architecture. If you let Hibernate use JDBC directly, through a connection pool, you may begin and end your transactions by calling the JDBC API. If you run in a J2EE application server, you might want to use bean-managed transactions and call the JTA API and <literal>UserTransaction</literal> when needed."
-msgstr "org.hibernate.transaction.CMTTransactionFactory"
+#. Tag: para
+#: configuration.xml:1422
+#, no-c-format
+msgid ""
+"The Hibernate <literal>Session</literal> API is independent of any "
+"transaction demarcation system in your architecture. If you let Hibernate "
+"use JDBC directly, through a connection pool, you may begin and end your "
+"transactions by calling the JDBC API. If you run in a J2EE application "
+"server, you might want to use bean-managed transactions and call the JTA API "
+"and <literal>UserTransaction</literal> when needed."
+msgstr ""
+"La API de <literal>Session</literal> de Hibernate es independiente de "
+"cualquier demarcación de transacción en tu arquitectura. Si dejas que "
+"Hibernate use JDBC directamente, a través de un pool de conexiones. puedes "
+"comenzar y acabar tus transacciones llamando la API de JDBC. Si ejecutas en "
+"un servidor de aplicaciones J2EE, podréas querer usar transacciones "
+"manejadas por bean y llamar la API de JTA y <literal>UserTransaction</"
+"literal> cuando sea necesario."
-#: index.docbook:1430
-msgid "To keep your code portable between these two (and other) environments we recommend the optional Hibernate <literal>Transaction</literal> API, which wraps and hides the underlying system. You have to specify a factory class for <literal>Transaction</literal> instances by setting the Hibernate configuration property <literal>hibernate.transaction.factory_class</literal>."
-msgstr "delega a transacciones JTA manejadas por contenedor"
+#. Tag: para
+#: configuration.xml:1430
+#, no-c-format
+msgid ""
+"To keep your code portable between these two (and other) environments we "
+"recommend the optional Hibernate <literal>Transaction</literal> API, which "
+"wraps and hides the underlying system. You have to specify a factory class "
+"for <literal>Transaction</literal> instances by setting the Hibernate "
+"configuration property <literal>hibernate.transaction.factory_class</"
+"literal>."
+msgstr ""
+"Para mantener tu código portable entre estos dos (y otros) entornos "
+"recomendamos la API de <literal>Transaction</literal> de Hibernate, que "
+"envuelve y oculta el sistema subyacente. Tienes que especificar una clase "
+"fábrica para las instancias de <literal>Transaction</literal> estableciendo "
+"la propiedad de configuración <literal>hibernate.transaction.factory_class</"
+"literal> de Hibernate."
-#: index.docbook:1437
+#. Tag: para
+#: configuration.xml:1437
+#, no-c-format
msgid "There are three standard (built-in) choices:"
-msgstr "Puedes definir también tus propias estrategias de transacción (para un servicio de transacción CORBA, por ejemplo)."
+msgstr "Hay tres elecciones estándar (prefabricadas):"
-#: index.docbook:1443
+#. Tag: literal
+#: configuration.xml:1443
+#, no-c-format
msgid "org.hibernate.transaction.JDBCTransactionFactory"
-msgstr "Algunas funcionalidades en Hibernate (ej, el caché de segundo nivel, ligamento automático de JTA y Session, etc.) requieren acceso al <literal>TransactionManager</literal> de JTA en un entorno manejado. En un servidor de aplicaciones tienes que especificar cómo Hibernate debe obtener una referencia al <literal>TransactionManager</literal>, pues J2EE no estandariza un solo mecanismo:"
+msgstr "org.hibernate.transaction.JDBCTransactionFactory"
-#: index.docbook:1445
+#. Tag: para
+#: configuration.xml:1445
+#, no-c-format
msgid "delegates to database (JDBC) transactions (default)"
-msgstr "TransactionManagers de JTA"
+msgstr "delega a transacciones de base de datos (JDBC) (por defecto)"
-#: index.docbook:1449
+#. Tag: literal
+#: configuration.xml:1449
+#, no-c-format
msgid "org.hibernate.transaction.JTATransactionFactory"
-msgstr "Transaction Factory"
+msgstr "org.hibernate.transaction.JTATransactionFactory"
-#: index.docbook:1451
-msgid "delegates to container-managed transaction if an existing transaction is underway in this context (e.g. EJB session bean method), otherwise a new transaction is started and bean-managed transaction are used."
-msgstr "Servidor de Aplicaciones"
+#. Tag: para
+#: configuration.xml:1451
+#, no-c-format
+msgid ""
+"delegates to container-managed transaction if an existing transaction is "
+"underway in this context (e.g. EJB session bean method), otherwise a new "
+"transaction is started and bean-managed transaction are used."
+msgstr ""
+"delega a transacciones manejadas por contenedor si una transacción existente "
+"estó por debajo en este contexto (ej. método de un bean de sesión EJB), en "
+"otro caso una nueva transacción es comenzada y se usan transacciones "
+"manejadas por bean."
-#: index.docbook:1459
+#. Tag: literal
+#: configuration.xml:1459
+#, no-c-format
msgid "org.hibernate.transaction.CMTTransactionFactory"
-msgstr "org.hibernate.transaction.JBossTransactionManagerLookup"
+msgstr "org.hibernate.transaction.CMTTransactionFactory"
-#: index.docbook:1461
+#. Tag: para
+#: configuration.xml:1461
+#, no-c-format
msgid "delegates to container-managed JTA transactions"
-msgstr "JBoss"
+msgstr "delega a transacciones JTA manejadas por contenedor"
-#: index.docbook:1466
-msgid "You may also define your own transaction strategies (for a CORBA transaction service, for example)."
-msgstr "org.hibernate.transaction.WeblogicTransactionManagerLookup"
+#. Tag: para
+#: configuration.xml:1466
+#, no-c-format
+msgid ""
+"You may also define your own transaction strategies (for a CORBA transaction "
+"service, for example)."
+msgstr ""
+"Puedes definir también tus propias estrategias de transacción (para un "
+"servicio de transacción CORBA, por ejemplo)."
-#: index.docbook:1471
-msgid "Some features in Hibernate (i.e. the second level cache, Contextual Sessions with JTA, etc.) require access to the JTA <literal>TransactionManager</literal> in a managed environment. In an application server you have to specify how Hibernate should obtain a reference to the <literal>TransactionManager</literal>, since J2EE does not standardize a single mechanism:"
-msgstr "Weblogic"
+#. Tag: para
+#: configuration.xml:1471
+#, no-c-format
+msgid ""
+"Some features in Hibernate (i.e. the second level cache, Contextual Sessions "
+"with JTA, etc.) require access to the JTA <literal>TransactionManager</"
+"literal> in a managed environment. In an application server you have to "
+"specify how Hibernate should obtain a reference to the "
+"<literal>TransactionManager</literal>, since J2EE does not standardize a "
+"single mechanism:"
+msgstr ""
+"Algunas funcionalidades en Hibernate (ej, el caché de segundo nivel, "
+"ligamento automático de JTA y Session, etc.) requieren acceso al "
+"<literal>TransactionManager</literal> de JTA en un entorno manejado. En un "
+"servidor de aplicaciones tienes que especificar cómo Hibernate debe obtener "
+"una referencia al <literal>TransactionManager</literal>, pues J2EE no "
+"estandariza un solo mecanismo:"
-#: index.docbook:1479
+#. Tag: title
+#: configuration.xml:1479
+#, no-c-format
msgid "JTA TransactionManagers"
-msgstr "org.hibernate.transaction.WebSphereTransactionManagerLookup"
+msgstr "TransactionManagers de JTA"
-#: index.docbook:1485
+#. Tag: entry
+#: configuration.xml:1485
+#, no-c-format
msgid "Transaction Factory"
-msgstr "WebSphere"
+msgstr "Transaction Factory"
-#: index.docbook:1486
+#. Tag: entry
+#: configuration.xml:1486
+#, no-c-format
msgid "Application Server"
-msgstr "org.hibernate.transaction.WebSphereExtendedJTATransactionLookup"
+msgstr "Servidor de Aplicaciones"
-#: index.docbook:1491
+#. Tag: literal
+#: configuration.xml:1491
+#, no-c-format
msgid "org.hibernate.transaction.JBossTransactionManagerLookup"
-msgstr "WebSphere 6"
+msgstr "org.hibernate.transaction.JBossTransactionManagerLookup"
-#: index.docbook:1492
+#. Tag: entry
+#: configuration.xml:1492
+#, no-c-format
msgid "JBoss"
-msgstr "org.hibernate.transaction.OrionTransactionManagerLookup"
+msgstr "JBoss"
-#: index.docbook:1495
+#. Tag: literal
+#: configuration.xml:1495
+#, no-c-format
msgid "org.hibernate.transaction.WeblogicTransactionManagerLookup"
-msgstr "Orion"
+msgstr "org.hibernate.transaction.WeblogicTransactionManagerLookup"
-#: index.docbook:1496
+#. Tag: entry
+#: configuration.xml:1496
+#, no-c-format
msgid "Weblogic"
-msgstr "org.hibernate.transaction.ResinTransactionManagerLookup"
+msgstr "Weblogic"
-#: index.docbook:1499
+#. Tag: literal
+#: configuration.xml:1499
+#, no-c-format
msgid "org.hibernate.transaction.WebSphereTransactionManagerLookup"
-msgstr "Resin"
+msgstr "org.hibernate.transaction.WebSphereTransactionManagerLookup"
-#: index.docbook:1500
+#. Tag: entry
+#: configuration.xml:1500
+#, no-c-format
msgid "WebSphere"
-msgstr "org.hibernate.transaction.JOTMTransactionManagerLookup"
+msgstr "WebSphere"
-#: index.docbook:1503
+#. Tag: literal
+#: configuration.xml:1503
+#, no-c-format
msgid "org.hibernate.transaction.WebSphereExtendedJTATransactionLookup"
-msgstr "JOTM"
+msgstr "org.hibernate.transaction.WebSphereExtendedJTATransactionLookup"
-#: index.docbook:1504
+#. Tag: entry
+#: configuration.xml:1504
+#, no-c-format
msgid "WebSphere 6"
-msgstr "org.hibernate.transaction.JOnASTransactionManagerLookup"
+msgstr "WebSphere 6"
-#: index.docbook:1507
+#. Tag: literal
+#: configuration.xml:1507
+#, no-c-format
msgid "org.hibernate.transaction.OrionTransactionManagerLookup"
-msgstr "JOnAS"
+msgstr "org.hibernate.transaction.OrionTransactionManagerLookup"
-#: index.docbook:1508
+#. Tag: entry
+#: configuration.xml:1508
+#, no-c-format
msgid "Orion"
-msgstr "org.hibernate.transaction.JRun4TransactionManagerLookup"
+msgstr "Orion"
-#: index.docbook:1511
+#. Tag: literal
+#: configuration.xml:1511
+#, no-c-format
msgid "org.hibernate.transaction.ResinTransactionManagerLookup"
-msgstr "JRun4"
+msgstr "org.hibernate.transaction.ResinTransactionManagerLookup"
-#: index.docbook:1512
+#. Tag: entry
+#: configuration.xml:1512
+#, no-c-format
msgid "Resin"
-msgstr "org.hibernate.transaction.BESTransactionManagerLookup"
+msgstr "Resin"
-#: index.docbook:1515
+#. Tag: literal
+#: configuration.xml:1515
+#, no-c-format
msgid "org.hibernate.transaction.JOTMTransactionManagerLookup"
-msgstr "Borland ES"
+msgstr "org.hibernate.transaction.JOTMTransactionManagerLookup"
-#: index.docbook:1516
+#. Tag: entry
+#: configuration.xml:1516
+#, no-c-format
msgid "JOTM"
-msgstr "<literal>SessionFactory</literal> ligada a JNDI"
+msgstr "JOTM"
-#: index.docbook:1519
+#. Tag: literal
+#: configuration.xml:1519
+#, no-c-format
msgid "org.hibernate.transaction.JOnASTransactionManagerLookup"
-msgstr "Una <literal>SessionFactory</literal> de Hibernate ligada a JNDI puede simplificar la obtención de la fábrica y la creación de nuevas <literal>Session</literal>s. Observa que esto no está relacionado a un <literal>Datasource</literal> ligado a JNDI, simplemente ambos usan el mismo registro!"
+msgstr "org.hibernate.transaction.JOnASTransactionManagerLookup"
-#: index.docbook:1520
+#. Tag: entry
+#: configuration.xml:1520
+#, no-c-format
msgid "JOnAS"
-msgstr "Si deseas tener la <literal>SessionFactory</literal> ligada a un espacio de nombres de JNDI, especifica un nombre (ej. <literal>java:hibernate/SessionFactory</literal>) usando la propiedad <literal>hibernate.session_factory_name</literal>. Si esta propiedad es omitida, la <literal>SessionFactory</literal> no será ligada a JNDI (Esto es especialmente útil en entornos con una implementació JNDI de sólo lectura por defecto, ej. Tomcat.)"
+msgstr "JOnAS"
-#: index.docbook:1523
+#. Tag: literal
+#: configuration.xml:1523
+#, no-c-format
msgid "org.hibernate.transaction.JRun4TransactionManagerLookup"
-msgstr "Al ligar la <literal>SessionFactory</literal> a JNDI, Hibernate usará los valores de <literal>hibernate.jndi.url</literal>, <literal>hibernate.jndi.class</literal> para instanciar un contexto inicial. Si étos no se especifican, se usará el <literal>InitialContext</literal> por defecto."
+msgstr "org.hibernate.transaction.JRun4TransactionManagerLookup"
-#: index.docbook:1524
+#. Tag: entry
+#: configuration.xml:1524
+#, no-c-format
msgid "JRun4"
-msgstr "Hibernate colocará automáticamente la <literal>SessionFactory</literal> en JNDI después que llames a <literal>cfg.buildSessionFactory()</literal>. Esto significa que tendrás al menos esta llamada en algún código de arranque (o clase de utilidad) en tu aplicación, a menos qie uses el despliegue JMX con el <literal>HibernateService</literal> (discutido luego)."
+msgstr "JRun4"
-#: index.docbook:1527
+#. Tag: literal
+#: configuration.xml:1527
+#, no-c-format
msgid "org.hibernate.transaction.BESTransactionManagerLookup"
-msgstr "Si usas una <literal>SessionFactory</literal> de JNDI, un EJB o cualquier otra clase puede obtener la <literal>SessionFactory</literal> usando una búsqueda JNDI. Observa que esta configuración no es necesaria si usas la clase de ayuda <literal>HibernateUtil</literal> introducida en el capítulo uno, que actúa como un registro Singleton. Sin embargo, <literal>HibernateUtil</literal> es más común en un entorno no manejado."
+msgstr "org.hibernate.transaction.BESTransactionManagerLookup"
-#: index.docbook:1528
+#. Tag: entry
+#: configuration.xml:1528
+#, no-c-format
msgid "Borland ES"
-msgstr "Ligado automático de JTA y Session"
+msgstr "Borland ES"
-#: index.docbook:1537
+#. Tag: title
+#: configuration.xml:1537
+#, no-c-format
msgid "JNDI-bound <literal>SessionFactory</literal>"
-msgstr "Para entornos no manejados hemos sugerido <literal>HibernateUtil</literal> con una <literal>SessionFactory</literal> estática, y administración de la <literal>Session</literal> de Hibernate. Este enfoque no es fácil de usar en un entorno EJB, al poder ejecutarse muchos EJBs dentro de la misma transacción pero no en la misma hebra. Recomendados que ligues la <literal>SessionFactory</literal> a JNDI en un entorno manejado."
+msgstr "<literal>SessionFactory</literal> ligada a JNDI"
-#: index.docbook:1539
-msgid "A JNDI bound Hibernate <literal>SessionFactory</literal> can simplify the lookup of the factory and the creation of new <literal>Session</literal>s. Note that this is not related to a JNDI bound <literal>Datasource</literal>, both simply use the same registry!"
-msgstr "En vez de rodar tu propia utilidad de <literal>ThreadLocal</literal>, usa el método <literal>getCurrentSession()</literal> en la <literal>SessionFactory</literal> para obtener una <literal>Session</literal> de Hibernate. Si no hubiese una <literal>Session</literal> de Hibernate en la transacción JTA actual, se arrancará y asignará una. Ambas opciones de configuración <literal>hibernate.transaction.flush_before_completion</literal> y <literal>hibernate.transaction.auto_close_session</literal>, serán establecidas automáticamente para cada <literal>Session</literal> que obtengas con <literal>getCurrentSession()</literal>, de modo que éstas serán limpiadas (flushed) y cerradas automáticamente cuando el contenedor complete las transacciones JTA."
+#. Tag: para
+#: configuration.xml:1539
+#, no-c-format
+msgid ""
+"A JNDI bound Hibernate <literal>SessionFactory</literal> can simplify the "
+"lookup of the factory and the creation of new <literal>Session</literal>s. "
+"Note that this is not related to a JNDI bound <literal>Datasource</literal>, "
+"both simply use the same registry!"
+msgstr ""
+"Una <literal>SessionFactory</literal> de Hibernate ligada a JNDI puede "
+"simplificar la obtención de la fábrica y la creación de nuevas "
+"<literal>Session</literal>s. Observa que esto no está relacionado a un "
+"<literal>Datasource</literal> ligado a JNDI, simplemente ambos usan el mismo "
+"registro!"
-#: index.docbook:1546
-msgid "If you wish to have the <literal>SessionFactory</literal> bound to a JNDI namespace, specify a name (eg. <literal>java:hibernate/SessionFactory</literal>) using the property <literal>hibernate.session_factory_name</literal>. If this property is omitted, the <literal>SessionFactory</literal> will not be bound to JNDI. (This is especially useful in environments with a read-only JNDI default implementation, e.g. Tomcat.)"
-msgstr "Si tu, por ejemplo, usas el patrón de diseño DAO para escribir tu capa de persistencia, todos los DAO's buscan la <literal>SessionFactory</literal> cuando se necesite y abren la sesión \"actual\". No hay necesidad de pasar las instancias de <literal>SessionFactory</literal> o <literal>Session</literal> alrededor entre el código de control y el código DAO."
+#. Tag: para
+#: configuration.xml:1546
+#, no-c-format
+msgid ""
+"If you wish to have the <literal>SessionFactory</literal> bound to a JNDI "
+"namespace, specify a name (eg. <literal>java:hibernate/SessionFactory</"
+"literal>) using the property <literal>hibernate.session_factory_name</"
+"literal>. If this property is omitted, the <literal>SessionFactory</literal> "
+"will not be bound to JNDI. (This is especially useful in environments with a "
+"read-only JNDI default implementation, e.g. Tomcat.)"
+msgstr ""
+"Si deseas tener la <literal>SessionFactory</literal> ligada a un espacio de "
+"nombres de JNDI, especifica un nombre (ej. <literal>java:hibernate/"
+"SessionFactory</literal>) usando la propiedad <literal>hibernate."
+"session_factory_name</literal>. Si esta propiedad es omitida, la "
+"<literal>SessionFactory</literal> no será ligada a JNDI (Esto es "
+"especialmente útil en entornos con una implementació JNDI de sólo lectura "
+"por defecto, ej. Tomcat.)"
-#: index.docbook:1554
-msgid "When binding the <literal>SessionFactory</literal> to JNDI, Hibernate will use the values of <literal>hibernate.jndi.url</literal>, <literal>hibernate.jndi.class</literal> to instantiate an initial context. If they are not specified, the default <literal>InitialContext</literal> will be used."
-msgstr "Despliegue JMX"
+#. Tag: para
+#: configuration.xml:1554
+#, no-c-format
+msgid ""
+"When binding the <literal>SessionFactory</literal> to JNDI, Hibernate will "
+"use the values of <literal>hibernate.jndi.url</literal>, <literal>hibernate."
+"jndi.class</literal> to instantiate an initial context. If they are not "
+"specified, the default <literal>InitialContext</literal> will be used."
+msgstr ""
+"Al ligar la <literal>SessionFactory</literal> a JNDI, Hibernate usará los "
+"valores de <literal>hibernate.jndi.url</literal>, <literal>hibernate.jndi."
+"class</literal> para instanciar un contexto inicial. Si étos no se "
+"especifican, se usará el <literal>InitialContext</literal> por defecto."
-#: index.docbook:1561
-msgid "Hibernate will automatically place the <literal>SessionFactory</literal> in JNDI after you call <literal>cfg.buildSessionFactory()</literal>. This means you will at least have this call in some startup code (or utility class) in your application, unless you use JMX deployment with the <literal>HibernateService</literal> (discussed later)."
-msgstr "La línea <literal>cfg.buildSessionFactory()</literal> todavía tiene que ser ejecutada en algun sitio para obtener una <literal>SessionFactory</literal> en JNDI. Puedes hacer esto bien en un bloque inicializador <literal>static</literal> (como aquel en <literal>HibernateUtil</literal>) o bien despliegas Hibernate como un <emphasis>servicio manejado</emphasis>."
+#. Tag: para
+#: configuration.xml:1561
+#, no-c-format
+msgid ""
+"Hibernate will automatically place the <literal>SessionFactory</literal> in "
+"JNDI after you call <literal>cfg.buildSessionFactory()</literal>. This means "
+"you will at least have this call in some startup code (or utility class) in "
+"your application, unless you use JMX deployment with the "
+"<literal>HibernateService</literal> (discussed later)."
+msgstr ""
+"Hibernate colocará automáticamente la <literal>SessionFactory</literal> en "
+"JNDI después que llames a <literal>cfg.buildSessionFactory()</literal>. Esto "
+"significa que tendrás al menos esta llamada en algún código de arranque (o "
+"clase de utilidad) en tu aplicación, a menos qie uses el despliegue JMX con "
+"el <literal>HibernateService</literal> (discutido luego)."
-#: index.docbook:1568
-msgid "If you use a JNDI <literal>SessionFactory</literal>, an EJB or any other class may obtain the <literal>SessionFactory</literal> using a JNDI lookup."
-msgstr "Hibernate se distribuye con <literal>org.hibernate.jmx.HibernateService</literal> para despliegue en un servidor de aplicaciones con capacidades JMX, como JBoss AS. El despliegue y la configuracón reales son específicos del vendedor. He aquí un <literal>jboss-service.xml</literal> de ejemplo para JBoss 4.0.x:"
+#. Tag: para
+#: configuration.xml:1568
+#, no-c-format
+msgid ""
+"If you use a JNDI <literal>SessionFactory</literal>, an EJB or any other "
+"class may obtain the <literal>SessionFactory</literal> using a JNDI lookup."
+msgstr ""
+"UNTRANSLATED! If you use a JNDI <literal>SessionFactory</literal>, an EJB or "
+"any other class may obtain the <literal>SessionFactory</literal> using a "
+"JNDI lookup."
-#: index.docbook:1573
-msgid "We recommend that you bind the <literal>SessionFactory</literal> to JNDI in a managed environment and use a <literal>static</literal> singleton otherwise. To shield your application code from these details, we also recommend to hide the actual lookup code for a <literal>SessionFactory</literal> in a helper class, such as <literal>HibernateUtil.getSessionFactory()</literal>. Note that such a class is also a convenient way to startup Hibernate—see chapter 1."
+#. Tag: para
+#: configuration.xml:1573
+#, no-c-format
+msgid ""
+"We recommend that you bind the <literal>SessionFactory</literal> to JNDI in "
+"a managed environment and use a <literal>static</literal> singleton "
+"otherwise. To shield your application code from these details, we also "
+"recommend to hide the actual lookup code for a <literal>SessionFactory</"
+"literal> in a helper class, such as <literal>HibernateUtil.getSessionFactory"
+"()</literal>. Note that such a class is also a convenient way to startup "
+"Hibernate—see chapter 1."
msgstr ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<server>\n"
- "\n"
- "<mbean code=\"org.hibernate.jmx.HibernateService\"\n"
- " name=\"jboss.jca:service=HibernateFactory,name=HibernateFactory\">\n"
- "\n"
- " <!-- Required services -->\n"
- " <depends>jboss.jca:service=RARDeployer</depends>\n"
- " <depends>jboss.jca:service=LocalTxCM,name=HsqlDS</depends>\n"
- "\n"
- " <!-- Bind the Hibernate service to JNDI -->\n"
- " <attribute name=\"JndiName\">java:/hibernate/SessionFactory</attribute>\n"
- "\n"
- " <!-- Datasource settings -->\n"
- " <attribute name=\"Datasource\">java:HsqlDS</attribute>\n"
- " <attribute name=\"Dialect\">org.hibernate.dialect.HSQLDialect</attribute>\n"
- "\n"
- " <!-- Transaction integration -->\n"
- " <attribute name=\"TransactionStrategy\">\n"
- " org.hibernate.transaction.JTATransactionFactory</attribute>\n"
- " <attribute name=\"TransactionManagerLookupStrategy\">\n"
- " org.hibernate.transaction.JBossTransactionManagerLookup</attribute>\n"
- " <attribute name=\"FlushBeforeCompletionEnabled\">true</attribute>\n"
- " <attribute name=\"AutoCloseSessionEnabled\">true</attribute>\n"
- "\n"
- " <!-- Fetching options -->\n"
- " <attribute name=\"MaximumFetchDepth\">5</attribute>\n"
- "\n"
- " <!-- Second-level caching -->\n"
- " <attribute name=\"SecondLevelCacheEnabled\">true</attribute>\n"
- " <attribute name=\"CacheProviderClass\">org.hibernate.cache.EhCacheProvider</attribute>\n"
- " <attribute name=\"QueryCacheEnabled\">true</attribute>\n"
- "\n"
- " <!-- Logging -->\n"
- " <attribute name=\"ShowSqlEnabled\">true</attribute>\n"
- "\n"
- " <!-- Mapping files -->\n"
- " <attribute name=\"MapResources\">auction/Item.hbm.xml,auction/Category.hbm.xml</attribute>\n"
- "\n"
- "</mbean>\n"
- "\n"
- "</server>]]>"
+"Si usas una <literal>SessionFactory</literal> de JNDI, un EJB o cualquier "
+"otra clase puede obtener la <literal>SessionFactory</literal> usando una "
+"búsqueda JNDI. Observa que esta configuración no es necesaria si usas la "
+"clase de ayuda <literal>HibernateUtil</literal> introducida en el capítulo "
+"uno, que actúa como un registro Singleton. Sin embargo, "
+"<literal>HibernateUtil</literal> es más común en un entorno no manejado."
-#: index.docbook:1585
+#. Tag: title
+#: configuration.xml:1585
+#, no-c-format
msgid "Current Session context management with JTA"
-msgstr "Este fichero es desplegado en un directorio llamado <literal>META-INF</literal> y empaquetado en un fichero JAR con la extensión <literal>.sar</literal> (fichero de servicio). También necesitas empaquetar Hibernate, sus bibliotecas de terceros requeridas, tus clases persistentes compiladas, así como tus ficheros de mapeo en el mismo fichero. Tus beans de empresa (usualmente beans de sesión) pueden ser mantenidos en su propio fichero JAR, pero debes incluir este fichero EJB JAR en el fichero de servicio principal para obtener una unidad desplegable (en caliente). Consulta la documentación de JBoss AS para más información sobre el servicio JMX y despliegue de EJB."
+msgstr "Ligado automático de JTA y Session"
-#: index.docbook:1587
-msgid "The easiest way to handle <literal>Session</literal>s and transactions is Hibernates automatic \"current\" <literal>Session</literal> management. See the discussion of <xref linkend=\"architecture-current-session\"/>current sessions. Using the <literal>\"jta\"</literal> session context, if there is no Hibernate <literal>Session</literal> associated with the current JTA transaction, one will be started and associated with that JTA transaction the first time you call <literal>sessionFactory.getCurrentSession()</literal>. The <literal>Session</literal>s retrieved via <literal>getCurrentSession()</literal> in <literal>\"jta\"</literal> context will be set to automatically flush before the transaction completes, close after the transaction completes, and aggressively release JDBC connections after each statement. This allows the <literal>Session</literal>s to be managed by the life cycle of the JTA transaction to which it is associated, keeping user code clean of such man!
agement concerns. Your code can either use JTA programmatically through <literal>UserTransaction</literal>, or (recommended for portable code) use the Hibernate <literal>Transaction</literal> API to set transaction boundaries. If you run in an EJB container, declarative transaction demarcation with CMT is preferred."
+#. Tag: para
+#: configuration.xml:1587
+#, no-c-format
+msgid ""
+"The easiest way to handle <literal>Session</literal>s and transactions is "
+"Hibernates automatic \"current\" <literal>Session</literal> management. See "
+"the discussion of <link linkend=\"architecture-current-session\">current "
+"sessions</link>. Using the <literal>\"jta\"</literal> session context, if "
+"there is no Hibernate <literal>Session</literal> associated with the current "
+"JTA transaction, one will be started and associated with that JTA "
+"transaction the first time you call <literal>sessionFactory.getCurrentSession"
+"()</literal>. The <literal>Session</literal>s retrieved via "
+"<literal>getCurrentSession()</literal> in <literal>\"jta\"</literal> context "
+"will be set to automatically flush before the transaction completes, close "
+"after the transaction completes, and aggressively release JDBC connections "
+"after each statement. This allows the <literal>Session</literal>s to be "
+"managed by the life cycle of the JTA transaction to which it is associated, "
+"keeping user code clean of such management concerns. Your code can either "
+"use JTA programmatically through <literal>UserTransaction</literal>, or "
+"(recommended for portable code) use the Hibernate <literal>Transaction</"
+"literal> API to set transaction boundaries. If you run in an EJB container, "
+"declarative transaction demarcation with CMT is preferred."
msgstr ""
+"UNTRANSLATED! The easiest way to handle <literal>Session</literal>s and "
+"transactions is Hibernates automatic \"current\" <literal>Session</literal> "
+"management. See the discussion of <link linkend=\"architecture-current-"
+"session\">current sessions</link>. Using the <literal>\"jta\"</literal> "
+"session context, if there is no Hibernate <literal>Session</literal> "
+"associated with the current JTA transaction, one will be started and "
+"associated with that JTA transaction the first time you call "
+"<literal>sessionFactory.getCurrentSession()</literal>. The <literal>Session</"
+"literal>s retrieved via <literal>getCurrentSession()</literal> in <literal>"
+"\"jta\"</literal> context will be set to automatically flush before the "
+"transaction completes, close after the transaction completes, and "
+"aggressively release JDBC connections after each statement. This allows the "
+"<literal>Session</literal>s to be managed by the life cycle of the JTA "
+"transaction to which it is associated, keeping user code clean of such "
+"management concerns. Your code can either use JTA programmatically through "
+"<literal>UserTransaction</literal>, or (recommended for portable code) use "
+"the Hibernate <literal>Transaction</literal> API to set transaction "
+"boundaries. If you run in an EJB container, declarative transaction "
+"demarcation with CMT is preferred."
-#: index.docbook:1610
+#. Tag: title
+#: configuration.xml:1610
+#, no-c-format
msgid "JMX deployment"
-msgstr ""
+msgstr "Despliegue JMX"
-#: index.docbook:1612
-msgid "The line <literal>cfg.buildSessionFactory()</literal> still has to be executed somewhere to get a <literal>SessionFactory</literal> into JNDI. You can do this either in a <literal>static</literal> initializer block (like the one in <literal>HibernateUtil</literal>) or you deploy Hibernate as a <emphasis>managed service</emphasis>."
+#. Tag: para
+#: configuration.xml:1612
+#, no-c-format
+msgid ""
+"The line <literal>cfg.buildSessionFactory()</literal> still has to be "
+"executed somewhere to get a <literal>SessionFactory</literal> into JNDI. You "
+"can do this either in a <literal>static</literal> initializer block (like "
+"the one in <literal>HibernateUtil</literal>) or you deploy Hibernate as a "
+"<emphasis>managed service</emphasis>."
msgstr ""
+"La línea <literal>cfg.buildSessionFactory()</literal> todavía tiene que ser "
+"ejecutada en algun sitio para obtener una <literal>SessionFactory</literal> "
+"en JNDI. Puedes hacer esto bien en un bloque inicializador <literal>static</"
+"literal> (como aquel en <literal>HibernateUtil</literal>) o bien despliegas "
+"Hibernate como un <emphasis>servicio manejado</emphasis>."
-#: index.docbook:1620
-msgid "Hibernate is distributed with <literal>org.hibernate.jmx.HibernateService</literal> for deployment on an application server with JMX capabilities, such as JBoss AS. The actual deployment and configuration is vendor specific. Here is an example <literal>jboss-service.xml</literal> for JBoss 4.0.x:"
+#. Tag: para
+#: configuration.xml:1620
+#, no-c-format
+msgid ""
+"Hibernate is distributed with <literal>org.hibernate.jmx.HibernateService</"
+"literal> for deployment on an application server with JMX capabilities, such "
+"as JBoss AS. The actual deployment and configuration is vendor specific. "
+"Here is an example <literal>jboss-service.xml</literal> for JBoss 4.0.x:"
msgstr ""
+"Hibernate se distribuye con <literal>org.hibernate.jmx.HibernateService</"
+"literal> para despliegue en un servidor de aplicaciones con capacidades JMX, "
+"como JBoss AS. El despliegue y la configuracón reales son específicos del "
+"vendedor. He aquí un <literal>jboss-service.xml</literal> de ejemplo para "
+"JBoss 4.0.x:"
-#: index.docbook:1627
+#. Tag: programlisting
+#: configuration.xml:1627
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<server>\n"
- "\n"
- "<mbean code=\"org.hibernate.jmx.HibernateService\"\n"
- " name=\"jboss.jca:service=HibernateFactory,name=HibernateFactory\">\n"
- "\n"
- " <!-- Required services -->\n"
- " <depends>jboss.jca:service=RARDeployer</depends>\n"
- " <depends>jboss.jca:service=LocalTxCM,name=HsqlDS</depends>\n"
- "\n"
- " <!-- Bind the Hibernate service to JNDI -->\n"
- " <attribute name=\"JndiName\">java:/hibernate/SessionFactory</attribute>\n"
- "\n"
- " <!-- Datasource settings -->\n"
- " <attribute name=\"Datasource\">java:HsqlDS</attribute>\n"
- " <attribute name=\"Dialect\">org.hibernate.dialect.HSQLDialect</attribute>\n"
- "\n"
- " <!-- Transaction integration -->\n"
- " <attribute name=\"TransactionStrategy\">\n"
- " org.hibernate.transaction.JTATransactionFactory</attribute>\n"
- " <attribute name=\"TransactionManagerLookupStrategy\">\n"
- " org.hibernate.transaction.JBossTransactionManagerLookup</attribute>\n"
- " <attribute name=\"FlushBeforeCompletionEnabled\">true</attribute>\n"
- " <attribute name=\"AutoCloseSessionEnabled\">true</attribute>\n"
- "\n"
- " <!-- Fetching options -->\n"
- " <attribute name=\"MaximumFetchDepth\">5</attribute>\n"
- "\n"
- " <!-- Second-level caching -->\n"
- " <attribute name=\"SecondLevelCacheEnabled\">true</attribute>\n"
- " <attribute name=\"CacheProviderClass\">org.hibernate.cache.EhCacheProvider</attribute>\n"
- " <attribute name=\"QueryCacheEnabled\">true</attribute>\n"
- "\n"
- " <!-- Logging -->\n"
- " <attribute name=\"ShowSqlEnabled\">true</attribute>\n"
- "\n"
- " <!-- Mapping files -->\n"
- " <attribute name=\"MapResources\">auction/Item.hbm.xml,auction/Category.hbm.xml</attribute>\n"
- "\n"
- "</mbean>\n"
- "\n"
- "</server>]]>"
+"<![CDATA[<?xml version=\"1.0\"?>\n"
+"<server>\n"
+"\n"
+"<mbean code=\"org.hibernate.jmx.HibernateService\"\n"
+" name=\"jboss.jca:service=HibernateFactory,name=HibernateFactory\">\n"
+"\n"
+" <!-- Required services -->\n"
+" <depends>jboss.jca:service=RARDeployer</depends>\n"
+" <depends>jboss.jca:service=LocalTxCM,name=HsqlDS</depends>\n"
+"\n"
+" <!-- Bind the Hibernate service to JNDI -->\n"
+" <attribute name=\"JndiName\">java:/hibernate/SessionFactory</attribute>\n"
+"\n"
+" <!-- Datasource settings -->\n"
+" <attribute name=\"Datasource\">java:HsqlDS</attribute>\n"
+" <attribute name=\"Dialect\">org.hibernate.dialect.HSQLDialect</"
+"attribute>\n"
+"\n"
+" <!-- Transaction integration -->\n"
+" <attribute name=\"TransactionStrategy\">\n"
+" org.hibernate.transaction.JTATransactionFactory</attribute>\n"
+" <attribute name=\"TransactionManagerLookupStrategy\">\n"
+" org.hibernate.transaction.JBossTransactionManagerLookup</attribute>\n"
+" <attribute name=\"FlushBeforeCompletionEnabled\">true</attribute>\n"
+" <attribute name=\"AutoCloseSessionEnabled\">true</attribute>\n"
+"\n"
+" <!-- Fetching options -->\n"
+" <attribute name=\"MaximumFetchDepth\">5</attribute>\n"
+"\n"
+" <!-- Second-level caching -->\n"
+" <attribute name=\"SecondLevelCacheEnabled\">true</attribute>\n"
+" <attribute name=\"CacheProviderClass\">org.hibernate.cache."
+"EhCacheProvider</attribute>\n"
+" <attribute name=\"QueryCacheEnabled\">true</attribute>\n"
+"\n"
+" <!-- Logging -->\n"
+" <attribute name=\"ShowSqlEnabled\">true</attribute>\n"
+"\n"
+" <!-- Mapping files -->\n"
+" <attribute name=\"MapResources\">auction/Item.hbm.xml,auction/Category."
+"hbm.xml</attribute>\n"
+"\n"
+"</mbean>\n"
+"\n"
+"</server>]]>"
msgstr ""
-#: index.docbook:1629
-msgid "This file is deployed in a directory called <literal>META-INF</literal> and packaged in a JAR file with the extension <literal>.sar</literal> (service archive). You also need to package Hibernate, its required third-party libraries, your compiled persistent classes, as well as your mapping files in the same archive. Your enterprise beans (usually session beans) may be kept in their own JAR file, but you may include this EJB JAR file in the main service archive to get a single (hot-)deployable unit. Consult the JBoss AS documentation for more information about JMX service and EJB deployment."
+#. Tag: para
+#: configuration.xml:1629
+#, no-c-format
+msgid ""
+"This file is deployed in a directory called <literal>META-INF</literal> and "
+"packaged in a JAR file with the extension <literal>.sar</literal> (service "
+"archive). You also need to package Hibernate, its required third-party "
+"libraries, your compiled persistent classes, as well as your mapping files "
+"in the same archive. Your enterprise beans (usually session beans) may be "
+"kept in their own JAR file, but you may include this EJB JAR file in the "
+"main service archive to get a single (hot-)deployable unit. Consult the "
+"JBoss AS documentation for more information about JMX service and EJB "
+"deployment."
msgstr ""
+"Este fichero es desplegado en un directorio llamado <literal>META-INF</"
+"literal> y empaquetado en un fichero JAR con la extensión <literal>.sar</"
+"literal> (fichero de servicio). También necesitas empaquetar Hibernate, sus "
+"bibliotecas de terceros requeridas, tus clases persistentes compiladas, así "
+"como tus ficheros de mapeo en el mismo fichero. Tus beans de empresa "
+"(usualmente beans de sesión) pueden ser mantenidos en su propio fichero JAR, "
+"pero debes incluir este fichero EJB JAR en el fichero de servicio principal "
+"para obtener una unidad desplegable (en caliente). Consulta la documentación "
+"de JBoss AS para más información sobre el servicio JMX y despliegue de EJB."
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+#, fuzzy
+#~ msgid "<placeholder-1/> (optional)"
+#~ msgstr ""
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "<placeholder-1/> (optional)\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "<placeholder-1/> (opcional)\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "<placeholder-1/> (opcional)\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "<placeholder-1/> (opcional)"
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+#~ msgid "InitialContextFactory"
+#~ msgstr "InitialContextFactory"
+#~ msgid "class of the JNDI <placeholder-1/>"
+#~ msgstr "clase de la <placeholder-1/> de JNDI"
+
+#, fuzzy
+#~ msgid "eg."
+#~ msgstr ""
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "eg.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej.\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "ej."
+
+#~ msgid "full.classname.of.Dialect"
+#~ msgstr "full.classname.of.Dialect"
+
+#~ msgid "debug"
+#~ msgstr "debug"
+
+#~ msgid "SCHEMA_NAME"
+#~ msgstr "SCHEMA_NAME"
+
+#~ msgid "CATALOG_NAME"
+#~ msgstr "CATALOG_NAME"
+
+#~ msgid "SessionFactory"
+#~ msgstr "SessionFactory"
+
+#~ msgid "jndi/composite/name"
+#~ msgstr "jndi/composite/name"
+
+#~ msgid "0"
+#~ msgstr "0"
+
+#~ msgid "false"
+#~ msgstr "false"
+
+#~ msgid "Statement.setFetchSize()"
+#~ msgstr "Statement.setFetchSize()"
+
+#~ msgid "true"
+#~ msgstr "true"
+
+#~ msgid "executeBatch()"
+#~ msgstr "executeBatch()"
+
+#~ msgid "Batcher"
+#~ msgstr "Batcher"
+
+#~ msgid "classname.of.BatcherFactory"
+#~ msgstr "classname.of.BatcherFactory"
+
+#~ msgid "binary"
+#~ msgstr "binary"
+
+#~ msgid "serializable"
+#~ msgstr "serializable"
+
+#~ msgid "PreparedStatement.getGeneratedKeys()"
+#~ msgstr "PreparedStatement.getGeneratedKeys()"
+
+#~ msgid "true|false"
+#~ msgstr "true|false"
+
+#~ msgid "ConnectionProvider"
+#~ msgstr "ConnectionProvider"
+
+#~ msgid "classname.of.ConnectionProvider"
+#~ msgstr "classname.of.ConnectionProvider"
+
+#~ msgid "java.sql.Connection"
+#~ msgstr "java.sql.Connection"
+
+#~ msgid "1, 2, 4, 8"
+#~ msgstr "1, 2, 4, 8"
+
+#~ msgid "after_statement"
+#~ msgstr "after_statement"
+
+#~ msgid "after_transaction"
+#~ msgstr "after_transaction"
+
+#~ msgid "auto"
+#~ msgstr "auto"
+
+#~ msgid "hibernate.connection."
+#~ msgstr "<propertyName>"
+
+#, fuzzy
+#~ msgid "<propertyName>"
+#~ msgstr ""
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "hibernate.connection.<placeholder-1/>\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "propertyName\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "hibernate.jndi.<placeholder-1/>\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "propertyName"
+
+#~ msgid "DriverManager.getConnection()"
+#~ msgstr "DriverManager.getConnection()"
+
+#~ msgid "Pass the JDBC property <placeholder-1/> to <placeholder-2/>."
+#~ msgstr "Pasa la propiedad JDBC <placeholder-1/> a <placeholder-2/>."
+
+#~ msgid "hibernate.jndi."
+#~ msgstr "<propertyName>"
+
+#~ msgid "Pass the property <placeholder-1/> to the JNDI <placeholder-2/>."
+#~ msgstr "Pasa la propiedad <placeholder-1/> a <placeholder-2/> de JNDI."
+
+#~ msgid "CacheProvider"
+#~ msgstr "CacheProvider"
+
+#~ msgid "classname.of.CacheProvider"
+#~ msgstr "classname.of.CacheProvider"
+
+#~ msgid "<cache>"
+#~ msgstr "<cache>"
+
+#~ msgid "QueryCache"
+#~ msgstr "QueryCache"
+
+#~ msgid "StandardQueryCache"
+#~ msgstr "StandardQueryCache"
+
+#~ msgid "classname.of.QueryCache"
+#~ msgstr "classname.of.QueryCache"
+
+#~ msgid "prefix"
+#~ msgstr "prefix"
+
+#~ msgid "TransactionFactory"
+#~ msgstr "TransactionFactory"
+
+#~ msgid "Transaction"
+#~ msgstr "Transaction"
+
+#~ msgid "JDBCTransactionFactory"
+#~ msgstr "JDBCTransactionFactory"
+
+#~ msgid "classname.of.TransactionFactory"
+#~ msgstr "classname.of.TransactionFactory"
+
+#~ msgid "JTATransactionFactory"
+#~ msgstr "JTATransactionFactory"
+
+#~ msgid "UserTransaction"
+#~ msgstr "UserTransaction"
+
+#~ msgid "TransactionManagerLookup"
+#~ msgstr "TransactionManagerLookup"
+
+#~ msgid "classname.of.TransactionManagerLookup"
+#~ msgstr "classname.of.TransactionManagerLookup"
+
+#~ msgid "Session"
+#~ msgstr "Session"
+
+#~ msgid "hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC"
+#~ msgstr "hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC"
+
+#~ msgid "create-drop"
+#~ msgstr "create-drop"
+
+#~ msgid "hibernate.cfg.xml"
+#~ msgstr "hibernate.cfg.xml"
+
+#~ msgid "DB2"
+#~ msgstr "DB2"
Modified: core/trunk/documentation/manual/translations/es-ES/content/events.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/events.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/events.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,348 +1,478 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: events.xml:5
+#, no-c-format
msgid "Interceptors and events"
msgstr "Interceptores y eventos"
-#: index.docbook:7
-msgid "It is often useful for the application to react to certain events that occur inside Hibernate. This allows implementation of certain kinds of generic functionality, and extension of Hibernate functionality."
-msgstr "Frecuentemente es útil para la aplicación reaccionar a ciertos eventos que ocurran dentro de Hibernate. Esto permite la implementación de ciertos tipos de funcionalidade genérica, y extensión de la funcionalidad de Hibernate."
+#. Tag: para
+#: events.xml:7
+#, no-c-format
+msgid ""
+"It is often useful for the application to react to certain events that occur "
+"inside Hibernate. This allows implementation of certain kinds of generic "
+"functionality, and extension of Hibernate functionality."
+msgstr ""
+"Frecuentemente es útil para la aplicación reaccionar a ciertos eventos que "
+"ocurran dentro de Hibernate. Esto permite la implementación de ciertos tipos "
+"de funcionalidade genérica, y extensión de la funcionalidad de Hibernate."
-#: index.docbook:14
+#. Tag: title
+#: events.xml:14
+#, no-c-format
msgid "Interceptors"
msgstr "Interceptores"
-#: index.docbook:16
-msgid "The <literal>Interceptor</literal> interface provides callbacks from the session to the application allowing the application to inspect and/or manipulate properties of a persistent object before it is saved, updated, deleted or loaded. One possible use for this is to track auditing information. For example, the following <literal>Interceptor</literal> automatically sets the <literal>createTimestamp</literal> when an <literal>Auditable</literal> is created and updates the <literal>lastUpdateTimestamp</literal> property when an <literal>Auditable</literal> is updated."
-msgstr "La interface <literal>Interceptor</literal> provee callbacks desde la sesión a la aplicación permitiendo a ésta última inspeccionar y/o manipular las propiedades de un objeto persistente antes que sea salvado, actualizado, borrado o cargado. Un uso posible de esto es seguir la pista de información de auditoría. Por ejemplo, el siguiente <literal>Interceptor</literal> establece automáticamente el <literal>createTimestamp</literal> cuando un <literal>Auditable</literal> es creado y actualiza la propiedad <literal>lastUpdateTimestamp</literal> cuando un <literal>Auditable</literal> es acutalizado."
+#. Tag: para
+#: events.xml:16
+#, no-c-format
+msgid ""
+"The <literal>Interceptor</literal> interface provides callbacks from the "
+"session to the application allowing the application to inspect and/or "
+"manipulate properties of a persistent object before it is saved, updated, "
+"deleted or loaded. One possible use for this is to track auditing "
+"information. For example, the following <literal>Interceptor</literal> "
+"automatically sets the <literal>createTimestamp</literal> when an "
+"<literal>Auditable</literal> is created and updates the "
+"<literal>lastUpdateTimestamp</literal> property when an <literal>Auditable</"
+"literal> is updated."
+msgstr ""
+"La interface <literal>Interceptor</literal> provee callbacks desde la sesión "
+"a la aplicación permitiendo a ésta última inspeccionar y/o manipular las "
+"propiedades de un objeto persistente antes que sea salvado, actualizado, "
+"borrado o cargado. Un uso posible de esto es seguir la pista de información "
+"de auditoría. Por ejemplo, el siguiente <literal>Interceptor</literal> "
+"establece automáticamente el <literal>createTimestamp</literal> cuando un "
+"<literal>Auditable</literal> es creado y actualiza la propiedad "
+"<literal>lastUpdateTimestamp</literal> cuando un <literal>Auditable</"
+"literal> es acutalizado."
-#: index.docbook:27
-msgid "You may either implement <literal>Interceptor</literal> directly or (better) extend <literal>EmptyInterceptor</literal>."
+#. Tag: para
+#: events.xml:27
+#, no-c-format
+msgid ""
+"You may either implement <literal>Interceptor</literal> directly or (better) "
+"extend <literal>EmptyInterceptor</literal>."
msgstr ""
- "<![CDATA[package org.hibernate.test;\n"
- "\n"
- "import java.io.Serializable;\n"
- "import java.util.Date;\n"
- "import java.util.Iterator;\n"
- "\n"
- "import org.hibernate.Interceptor;\n"
- "import org.hibernate.type.Type;\n"
- "\n"
- "public class AuditInterceptor implements Interceptor, Serializable {\n"
- "\n"
- " private int updates;\n"
- " private int creates;\n"
- "\n"
- " public void onDelete(Object entity,\n"
- " Serializable id,\n"
- " Object[] state,\n"
- " String[] propertyNames,\n"
- " Type[] types) {\n"
- " // do nothing\n"
- " }\n"
- "\n"
- " public boolean onFlushDirty(Object entity,\n"
- " Serializable id,\n"
- " Object[] currentState,\n"
- " Object[] previousState,\n"
- " String[] propertyNames,\n"
- " Type[] types) {\n"
- "\n"
- " if ( entity instanceof Auditable ) {\n"
- " updates++;\n"
- " for ( int i=0; i < propertyNames.length; i++ ) {\n"
- " if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) {\n"
- " currentState[i] = new Date();\n"
- " return true;\n"
- " }\n"
- " }\n"
- " }\n"
- " return false;\n"
- " }\n"
- "\n"
- " public boolean onLoad(Object entity,\n"
- " Serializable id,\n"
- " Object[] state,\n"
- " String[] propertyNames,\n"
- " Type[] types) {\n"
- " return false;\n"
- " }\n"
- "\n"
- " public boolean onSave(Object entity,\n"
- " Serializable id,\n"
- " Object[] state,\n"
- " String[] propertyNames,\n"
- " Type[] types) {\n"
- "\n"
- " if ( entity instanceof Auditable ) {\n"
- " creates++;\n"
- " for ( int i=0; i<propertyNames.length; i++ ) {\n"
- " if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
- " state[i] = new Date();\n"
- " return true;\n"
- " }\n"
- " }\n"
- " }\n"
- " return false;\n"
- " }\n"
- "\n"
- " public void postFlush(Iterator entities) {\n"
- " System.out.println(\"Creations: \" + creates + \", Updates: \" + updates);\n"
- " }\n"
- "\n"
- " public void preFlush(Iterator entities) {\n"
- " updates=0;\n"
- " creates=0;\n"
- " }\n"
- "\n"
- " ...\n"
- "\n"
- "}]]>"
+"UNTRANSLATED! You may either implement <literal>Interceptor</literal> "
+"directly or (better) extend <literal>EmptyInterceptor</literal>."
-#: index.docbook:32
+#. Tag: programlisting
+#: events.xml:32
+#, no-c-format
msgid ""
- "<![CDATA[package org.hibernate.test;\n"
- "\n"
- "import java.io.Serializable;\n"
- "import java.util.Date;\n"
- "import java.util.Iterator;\n"
- "\n"
- "import org.hibernate.EmptyInterceptor;\n"
- "import org.hibernate.Transaction;\n"
- "import org.hibernate.type.Type;\n"
- "\n"
- "public class AuditInterceptor extends EmptyInterceptor {\n"
- "\n"
- " private int updates;\n"
- " private int creates;\n"
- " private int loads;\n"
- "\n"
- " public void onDelete(Object entity,\n"
- " Serializable id,\n"
- " Object[] state,\n"
- " String[] propertyNames,\n"
- " Type[] types) {\n"
- " // do nothing\n"
- " }\n"
- "\n"
- " public boolean onFlushDirty(Object entity,\n"
- " Serializable id,\n"
- " Object[] currentState,\n"
- " Object[] previousState,\n"
- " String[] propertyNames,\n"
- " Type[] types) {\n"
- "\n"
- " if ( entity instanceof Auditable ) {\n"
- " updates++;\n"
- " for ( int i=0; i < propertyNames.length; i++ ) {\n"
- " if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) {\n"
- " currentState[i] = new Date();\n"
- " return true;\n"
- " }\n"
- " }\n"
- " }\n"
- " return false;\n"
- " }\n"
- "\n"
- " public boolean onLoad(Object entity,\n"
- " Serializable id,\n"
- " Object[] state,\n"
- " String[] propertyNames,\n"
- " Type[] types) {\n"
- " if ( entity instanceof Auditable ) {\n"
- " loads++;\n"
- " }\n"
- " return false;\n"
- " }\n"
- "\n"
- " public boolean onSave(Object entity,\n"
- " Serializable id,\n"
- " Object[] state,\n"
- " String[] propertyNames,\n"
- " Type[] types) {\n"
- "\n"
- " if ( entity instanceof Auditable ) {\n"
- " creates++;\n"
- " for ( int i=0; i<propertyNames.length; i++ ) {\n"
- " if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
- " state[i] = new Date();\n"
- " return true;\n"
- " }\n"
- " }\n"
- " }\n"
- " return false;\n"
- " }\n"
- "\n"
- " public void afterTransactionCompletion(Transaction tx) {\n"
- " if ( tx.wasCommitted() ) {\n"
- " System.out.println(\"Creations: \" + creates + \", Updates: \" + updates, \"Loads: \" + loads);\n"
- " }\n"
- " updates=0;\n"
- " creates=0;\n"
- " loads=0;\n"
- " }\n"
- "\n"
- "}]]>"
-msgstr "El interceptor podría ser especificado cuando se crea la sesión:"
+"<![CDATA[package org.hibernate.test;\n"
+"\n"
+"import java.io.Serializable;\n"
+"import java.util.Date;\n"
+"import java.util.Iterator;\n"
+"\n"
+"import org.hibernate.EmptyInterceptor;\n"
+"import org.hibernate.Transaction;\n"
+"import org.hibernate.type.Type;\n"
+"\n"
+"public class AuditInterceptor extends EmptyInterceptor {\n"
+"\n"
+" private int updates;\n"
+" private int creates;\n"
+" private int loads;\n"
+"\n"
+" public void onDelete(Object entity,\n"
+" Serializable id,\n"
+" Object[] state,\n"
+" String[] propertyNames,\n"
+" Type[] types) {\n"
+" // do nothing\n"
+" }\n"
+"\n"
+" public boolean onFlushDirty(Object entity,\n"
+" Serializable id,\n"
+" Object[] currentState,\n"
+" Object[] previousState,\n"
+" String[] propertyNames,\n"
+" Type[] types) {\n"
+"\n"
+" if ( entity instanceof Auditable ) {\n"
+" updates++;\n"
+" for ( int i=0; i < propertyNames.length; i++ ) {\n"
+" if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) {\n"
+" currentState[i] = new Date();\n"
+" return true;\n"
+" }\n"
+" }\n"
+" }\n"
+" return false;\n"
+" }\n"
+"\n"
+" public boolean onLoad(Object entity,\n"
+" Serializable id,\n"
+" Object[] state,\n"
+" String[] propertyNames,\n"
+" Type[] types) {\n"
+" if ( entity instanceof Auditable ) {\n"
+" loads++;\n"
+" }\n"
+" return false;\n"
+" }\n"
+"\n"
+" public boolean onSave(Object entity,\n"
+" Serializable id,\n"
+" Object[] state,\n"
+" String[] propertyNames,\n"
+" Type[] types) {\n"
+"\n"
+" if ( entity instanceof Auditable ) {\n"
+" creates++;\n"
+" for ( int i=0; i<propertyNames.length; i++ ) {\n"
+" if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
+" state[i] = new Date();\n"
+" return true;\n"
+" }\n"
+" }\n"
+" }\n"
+" return false;\n"
+" }\n"
+"\n"
+" public void afterTransactionCompletion(Transaction tx) {\n"
+" if ( tx.wasCommitted() ) {\n"
+" System.out.println(\"Creations: \" + creates + \", Updates: \" + "
+"updates, \"Loads: \" + loads);\n"
+" }\n"
+" updates=0;\n"
+" creates=0;\n"
+" loads=0;\n"
+" }\n"
+"\n"
+"}]]>"
+msgstr ""
-#: index.docbook:34
-msgid "Interceptors come in two flavors: <literal>Session</literal>-scoped and <literal>SessionFactory</literal>-scoped."
-msgstr "<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"
+#. Tag: para
+#: events.xml:34
+#, no-c-format
+msgid ""
+"Interceptors come in two flavors: <literal>Session</literal>-scoped and "
+"<literal>SessionFactory</literal>-scoped."
+msgstr ""
+"UNTRANSLATED! Interceptors come in two flavors: <literal>Session</literal>-"
+"scoped and <literal>SessionFactory</literal>-scoped."
-#: index.docbook:39
-msgid "A <literal>Session</literal>-scoped interceptor is specified when a session is opened using one of the overloaded SessionFactory.openSession() methods accepting an <literal>Interceptor</literal>."
-msgstr "Puedes además establecer un interceptor a un nivel global, usando la <literal>Configuration</literal>:"
+#. Tag: para
+#: events.xml:39
+#, no-c-format
+msgid ""
+"A <literal>Session</literal>-scoped interceptor is specified when a session "
+"is opened using one of the overloaded SessionFactory.openSession() methods "
+"accepting an <literal>Interceptor</literal>."
+msgstr ""
+"UNTRANSLATED! A <literal>Session</literal>-scoped interceptor is specified "
+"when a session is opened using one of the overloaded SessionFactory."
+"openSession() methods accepting an <literal>Interceptor</literal>."
-#: index.docbook:45
+#. Tag: programlisting
+#: events.xml:45
+#, no-c-format
msgid "<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"
-msgstr "<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
+msgstr ""
-#: index.docbook:47
-msgid "A <literal>SessionFactory</literal>-scoped interceptor is registered with the <literal>Configuration</literal> object prior to building the <literal>SessionFactory</literal>. In this case, the supplied interceptor will be applied to all sessions opened from that <literal>SessionFactory</literal>; this is true unless a session is opened explicitly specifying the interceptor to use. <literal>SessionFactory</literal>-scoped interceptors must be thread safe, taking care to not store session-specific state since multiple sessions will use this interceptor (potentially) concurrently."
-msgstr "Sistema de eventos"
+#. Tag: para
+#: events.xml:47
+#, no-c-format
+msgid ""
+"A <literal>SessionFactory</literal>-scoped interceptor is registered with "
+"the <literal>Configuration</literal> object prior to building the "
+"<literal>SessionFactory</literal>. In this case, the supplied interceptor "
+"will be applied to all sessions opened from that <literal>SessionFactory</"
+"literal>; this is true unless a session is opened explicitly specifying the "
+"interceptor to use. <literal>SessionFactory</literal>-scoped interceptors "
+"must be thread safe, taking care to not store session-specific state since "
+"multiple sessions will use this interceptor (potentially) concurrently."
+msgstr ""
+"UNTRANSLATED! A <literal>SessionFactory</literal>-scoped interceptor is "
+"registered with the <literal>Configuration</literal> object prior to "
+"building the <literal>SessionFactory</literal>. In this case, the supplied "
+"interceptor will be applied to all sessions opened from that "
+"<literal>SessionFactory</literal>; this is true unless a session is opened "
+"explicitly specifying the interceptor to use. <literal>SessionFactory</"
+"literal>-scoped interceptors must be thread safe, taking care to not store "
+"session-specific state since multiple sessions will use this interceptor "
+"(potentially) concurrently."
-#: index.docbook:56
-msgid "<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
-msgstr "Si tienes que reaccionar a eventos particulares en tu capa de persistencia, puedes también la arquitectura de <emphasis>eventos</emphasis> de Hibernate3. El sistema de eventos puede ser usado en adición o como un remplazo a los interceptores."
+#. Tag: programlisting
+#: events.xml:56
+#, no-c-format
+msgid ""
+"<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
+msgstr ""
-#: index.docbook:61
+#. Tag: title
+#: events.xml:61
+#, no-c-format
msgid "Event system"
-msgstr "Esencialmente todos los métodos de la interface <literal>Session</literal> se correlacionan con un evento. Tienes un <literal>LoadEvent</literal>, un <literal>FlushEvent</literal>, etc (consulta el DTD del fichero de configuración XML o el paquete <literal>org.hibernate.event</literal> para la lista completa de tipos de evento definidos). Cuando se hace una petición de uno de estos métodos, la <literal>Session</literal> de Hibernate genera un evento apropiado y se lo pasa al oyente (listener) de eventos configurado para ese tipo. De fábrica, estos oyentes implementan el mismo procesamiento en los que siempre resultan aquellos métodos. Sin embargo, eres libre de implementar una personalización de una de las interfaces oyentes (es decir, el <literal>LoadEvent</literal> es procesado por la implementación registrada de la interface <literal>LoadEventListener</literal>), en cuyo caso su implementación ser�!
0ed;a responsable de procesar cualquier petición <literal>load()</literal> hecha a la <literal>Session</literal>."
+msgstr "Sistema de eventos"
-#: index.docbook:63
-msgid "If you have to react to particular events in your persistence layer, you may also use the Hibernate3 <emphasis>event</emphasis> architecture. The event system can be used in addition or as a replacement for interceptors."
-msgstr "Los oyentes deben ser considerados efectivamente singletons; quiere decir, que son compartidos entre las peticiones, y por lo tanto no guardan ningún estado en variables de instancia."
+#. Tag: para
+#: events.xml:63
+#, no-c-format
+msgid ""
+"If you have to react to particular events in your persistence layer, you may "
+"also use the Hibernate3 <emphasis>event</emphasis> architecture. The event "
+"system can be used in addition or as a replacement for interceptors."
+msgstr ""
+"Si tienes que reaccionar a eventos particulares en tu capa de persistencia, "
+"puedes también la arquitectura de <emphasis>eventos</emphasis> de "
+"Hibernate3. El sistema de eventos puede ser usado en adición o como un "
+"remplazo a los interceptores."
-#: index.docbook:69
-msgid "Essentially all of the methods of the <literal>Session</literal> interface correlate to an event. You have a <literal>LoadEvent</literal>, a <literal>FlushEvent</literal>, etc (consult the XML configuration-file DTD or the <literal>org.hibernate.event</literal> package for the full list of defined event types). When a request is made of one of these methods, the Hibernate <literal>Session</literal> generates an appropriate event and passes it to the configured event listeners for that type. Out-of-the-box, these listeners implement the same processing in which those methods always resulted. However, you are free to implement a customization of one of the listener interfaces (i.e., the <literal>LoadEvent</literal> is processed by the registered implemenation of the <literal>LoadEventListener</literal> interface), in which case their implementation would be responsible for processing any <literal>load()</literal> requests made of the <literal>Session</literal>."
-msgstr "Un oyente personalizado debe implementar la interface apropiada para el evento que quiere procesar y/o extender una de las clases base de conveniencia (o incluso los oyentes de eventos por defecto usados por Hibernate de fábrica al ser éstos declarados non-final para este propósito). Los oyentes personalizados pueden ser registrados programáticamente a través del objeto <literal>Configuration</literal>, o especificados en el XML de configuración de Hibernate (la declaración declarativa a través del fichero de propiedades no está soportada). He aquí un ejemplo de un oyente personalizado de eventos load:"
+#. Tag: para
+#: events.xml:69
+#, no-c-format
+msgid ""
+"Essentially all of the methods of the <literal>Session</literal> interface "
+"correlate to an event. You have a <literal>LoadEvent</literal>, a "
+"<literal>FlushEvent</literal>, etc (consult the XML configuration-file DTD "
+"or the <literal>org.hibernate.event</literal> package for the full list of "
+"defined event types). When a request is made of one of these methods, the "
+"Hibernate <literal>Session</literal> generates an appropriate event and "
+"passes it to the configured event listeners for that type. Out-of-the-box, "
+"these listeners implement the same processing in which those methods always "
+"resulted. However, you are free to implement a customization of one of the "
+"listener interfaces (i.e., the <literal>LoadEvent</literal> is processed by "
+"the registered implemenation of the <literal>LoadEventListener</literal> "
+"interface), in which case their implementation would be responsible for "
+"processing any <literal>load()</literal> requests made of the "
+"<literal>Session</literal>."
+msgstr ""
+"Esencialmente todos los métodos de la interface <literal>Session</literal> "
+"se correlacionan con un evento. Tienes un <literal>LoadEvent</literal>, un "
+"<literal>FlushEvent</literal>, etc (consulta el DTD del fichero de "
+"configuración XML o el paquete <literal>org.hibernate.event</literal> para "
+"la lista completa de tipos de evento definidos). Cuando se hace una petición "
+"de uno de estos métodos, la <literal>Session</literal> de Hibernate genera "
+"un evento apropiado y se lo pasa al oyente (listener) de eventos configurado "
+"para ese tipo. De fábrica, estos oyentes implementan el mismo procesamiento "
+"en los que siempre resultan aquellos métodos. Sin embargo, eres libre de "
+"implementar una personalización de una de las interfaces oyentes (es decir, "
+"el <literal>LoadEvent</literal> es procesado por la implementación "
+"registrada de la interface <literal>LoadEventListener</literal>), en cuyo "
+"caso su implementación sería responsable de procesar cualquier petición "
+"<literal>load()</literal> hecha a la <literal>Session</literal>."
-#: index.docbook:84
-msgid "The listeners should be considered effectively singletons; meaning, they are shared between requests, and thus should not save any state as instance variables."
+#. Tag: para
+#: events.xml:84
+#, no-c-format
+msgid ""
+"The listeners should be considered effectively singletons; meaning, they are "
+"shared between requests, and thus should not save any state as instance "
+"variables."
msgstr ""
- "<![CDATA[public class MyLoadListener extends DefaultLoadEventListener {\n"
- " // this is the single method defined by the LoadEventListener interface\n"
- " public Object onLoad(LoadEvent event, LoadEventListener.LoadType loadType)\n"
- " throws HibernateException {\n"
- " if ( !MySecurity.isAuthorized( event.getEntityClassName(), event.getEntityId() ) ) {\n"
- " throw MySecurityException(\"Unauthorized access\");\n"
- " }\n"
- " return super.onLoad(event, loadType);\n"
- " }\n"
- "}]]>"
+"Los oyentes deben ser considerados efectivamente singletons; quiere decir, "
+"que son compartidos entre las peticiones, y por lo tanto no guardan ningún "
+"estado en variables de instancia."
-#: index.docbook:89
-msgid "A custom listener should implement the appropriate interface for the event it wants to process and/or extend one of the convenience base classes (or even the default event listeners used by Hibernate out-of-the-box as these are declared non-final for this purpose). Custom listeners can either be registered programmatically through the <literal>Configuration</literal> object, or specified in the Hibernate configuration XML (declarative configuration through the properties file is not supported). Here's an example of a custom load event listener:"
-msgstr "Necesitas además una entrada de configuración diciéndole a Hibernate que use el oyente en vez del oyente por defecto:"
+#. Tag: para
+#: events.xml:89
+#, no-c-format
+msgid ""
+"A custom listener should implement the appropriate interface for the event "
+"it wants to process and/or extend one of the convenience base classes (or "
+"even the default event listeners used by Hibernate out-of-the-box as these "
+"are declared non-final for this purpose). Custom listeners can either be "
+"registered programmatically through the <literal>Configuration</literal> "
+"object, or specified in the Hibernate configuration XML (declarative "
+"configuration through the properties file is not supported). Here's an "
+"example of a custom load event listener:"
+msgstr ""
+"Un oyente personalizado debe implementar la interface apropiada para el "
+"evento que quiere procesar y/o extender una de las clases base de "
+"conveniencia (o incluso los oyentes de eventos por defecto usados por "
+"Hibernate de fábrica al ser éstos declarados non-final para este propósito). "
+"Los oyentes personalizados pueden ser registrados programáticamente a través "
+"del objeto <literal>Configuration</literal>, o especificados en el XML de "
+"configuración de Hibernate (la declaración declarativa a través del fichero "
+"de propiedades no está soportada). He aquí un ejemplo de un oyente "
+"personalizado de eventos load:"
-#: index.docbook:99
+#. Tag: programlisting
+#: events.xml:99
+#, no-c-format
msgid ""
- "<![CDATA[public class MyLoadListener implements LoadEventListener {\n"
- " // this is the single method defined by the LoadEventListener interface\n"
- " public void onLoad(LoadEvent event, LoadEventListener.LoadType loadType)\n"
- " throws HibernateException {\n"
- " if ( !MySecurity.isAuthorized( event.getEntityClassName(), event.getEntityId() ) ) {\n"
- " throw MySecurityException(\"Unauthorized access\");\n"
- " }\n"
- " }\n"
- "}]]>"
+"<![CDATA[public class MyLoadListener implements LoadEventListener {\n"
+" // this is the single method defined by the LoadEventListener interface\n"
+" public void onLoad(LoadEvent event, LoadEventListener.LoadType "
+"loadType)\n"
+" throws HibernateException {\n"
+" if ( !MySecurity.isAuthorized( event.getEntityClassName(), event."
+"getEntityId() ) ) {\n"
+" throw MySecurityException(\"Unauthorized access\");\n"
+" }\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[<hibernate-configuration>\n"
- " <session-factory>\n"
- " ...\n"
- " <listener type=\"load\" class=\"MyLoadListener\"/>\n"
- " </session-factory>\n"
- "</hibernate-configuration>]]>"
-#: index.docbook:101
-msgid "You also need a configuration entry telling Hibernate to use the listener in addition to the default listener:"
-msgstr "En cambio, puedes registrarlo programáticamente:"
+#. Tag: para
+#: events.xml:101
+#, no-c-format
+msgid ""
+"You also need a configuration entry telling Hibernate to use the listener in "
+"addition to the default listener:"
+msgstr ""
+"Necesitas además una entrada de configuración diciéndole a Hibernate que use "
+"el oyente en vez del oyente por defecto:"
-#: index.docbook:106
+#. Tag: programlisting
+#: events.xml:106
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-configuration>\n"
- " <session-factory>\n"
- " ...\n"
- " <event type=\"load\">\n"
- " <listener class=\"com.eg.MyLoadListener\"/>\n"
- " <listener class=\"org.hibernate.event.def.DefaultLoadEventListener\"/>\n"
- " </event>\n"
- " </session-factory>\n"
- "</hibernate-configuration>]]>"
+"<![CDATA[<hibernate-configuration>\n"
+" <session-factory>\n"
+" ...\n"
+" <event type=\"load\">\n"
+" <listener class=\"com.eg.MyLoadListener\"/>\n"
+" <listener class=\"org.hibernate.event.def."
+"DefaultLoadEventListener\"/>\n"
+" </event>\n"
+" </session-factory>\n"
+"</hibernate-configuration>]]>"
msgstr ""
- "<![CDATA[Configuration cfg = new Configuration();\n"
- "cfg.getSessionEventListenerConfig().setLoadEventListener( new MyLoadListener() );]]>"
-#: index.docbook:108
+#. Tag: para
+#: events.xml:108
+#, no-c-format
msgid "Instead, you may register it programmatically:"
-msgstr "Los oyentes registrados declarativamente no pueden compartir instancias. Si el mismo nombre de clase es usado en múltiples elementos <literal><listener/></literal>, cada referencia resultará en una instancia separada de esa clase. Si necesitas la capacidad de compartir instancias de oyentes entre tipos de oyente debes usar el enfoque de registración programática."
+msgstr "En cambio, puedes registrarlo programáticamente:"
-#: index.docbook:112
+#. Tag: programlisting
+#: events.xml:112
+#, no-c-format
msgid ""
- "<![CDATA[Configuration cfg = new Configuration();\n"
- "LoadEventListener[] stack = { new MyLoadListener(), new DefaultLoadEventListener() };\n"
- "cfg.EventListeners().setLoadEventListeners(stack);]]>"
-msgstr "¿Por qué implementar una interface y definir el tipo espcífico durante la configuración? Bueno, una implementación de oyente podría implementar múltiples interfaces de oyente de eventos. Teniendo el tipo definido adicionalmente durante la registración lo hace más fácil para activar o desactivar oyentes personalizados durante la configuración."
+"<![CDATA[Configuration cfg = new Configuration();\n"
+"LoadEventListener[] stack = { new MyLoadListener(), new "
+"DefaultLoadEventListener() };\n"
+"cfg.EventListeners().setLoadEventListeners(stack);]]>"
+msgstr ""
-#: index.docbook:114
-msgid "Listeners registered declaratively cannot share instances. If the same class name is used in multiple <literal><listener/></literal> elements, each reference will result in a separate instance of that class. If you need the capability to share listener instances between listener types you must use the programmatic registration approach."
-msgstr "Seguridad declarativa de Hibernate"
+#. Tag: para
+#: events.xml:114
+#, no-c-format
+msgid ""
+"Listeners registered declaratively cannot share instances. If the same class "
+"name is used in multiple <literal><listener/></literal> elements, each "
+"reference will result in a separate instance of that class. If you need the "
+"capability to share listener instances between listener types you must use "
+"the programmatic registration approach."
+msgstr ""
+"Los oyentes registrados declarativamente no pueden compartir instancias. Si "
+"el mismo nombre de clase es usado en múltiples elementos <literal><"
+"listener/></literal>, cada referencia resultará en una instancia separada "
+"de esa clase. Si necesitas la capacidad de compartir instancias de oyentes "
+"entre tipos de oyente debes usar el enfoque de registración programática."
-#: index.docbook:122
-msgid "Why implement an interface and define the specific type during configuration? Well, a listener implementation could implement multiple event listener interfaces. Having the type additionally defined during registration makes it easier to turn custom listeners on or off during configuration."
-msgstr "Usualmente, la seguridad declarativa en aplicaciones Hibernate es manejada en una capa de fachada de sesión. Ahora, Hibernate3 permite que ciertas acciones sean permitidas vía JACC, y autorizadas vía JAAS. Esta en una funcionalidad opcional construída encima de la arquitectura de eventos."
+#. Tag: para
+#: events.xml:122
+#, no-c-format
+msgid ""
+"Why implement an interface and define the specific type during "
+"configuration? Well, a listener implementation could implement multiple "
+"event listener interfaces. Having the type additionally defined during "
+"registration makes it easier to turn custom listeners on or off during "
+"configuration."
+msgstr ""
+"¿Por qué implementar una interface y definir el tipo espcífico durante la "
+"configuración? Bueno, una implementación de oyente podría implementar "
+"múltiples interfaces de oyente de eventos. Teniendo el tipo definido "
+"adicionalmente durante la registración lo hace más fácil para activar o "
+"desactivar oyentes personalizados durante la configuración."
-#: index.docbook:132
+#. Tag: title
+#: events.xml:132
+#, no-c-format
msgid "Hibernate declarative security"
-msgstr "Primero, debes configurar los oyentes de eventos apropiados, para habilitar el uso de autorización JAAS."
+msgstr "Seguridad declarativa de Hibernate"
-#: index.docbook:133
-msgid "Usually, declarative security in Hibernate applications is managed in a session facade layer. Now, Hibernate3 allows certain actions to be permissioned via JACC, and authorized via JAAS. This is optional functionality built on top of the event architecture."
+#. Tag: para
+#: events.xml:133
+#, no-c-format
+msgid ""
+"Usually, declarative security in Hibernate applications is managed in a "
+"session facade layer. Now, Hibernate3 allows certain actions to be "
+"permissioned via JACC, and authorized via JAAS. This is optional "
+"functionality built on top of the event architecture."
msgstr ""
- "<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure.JACCPreDeleteEventListener\"/>\n"
- "<listener type=\"pre-update\" class=\"org.hibernate.secure.JACCPreUpdateEventListener\"/>\n"
- "<listener type=\"pre-insert\" class=\"org.hibernate.secure.JACCPreInsertEventListener\"/>\n"
- "<listener type=\"pre-load\" class=\"org.hibernate.secure.JACCPreLoadEventListener\"/>]]>"
+"Usualmente, la seguridad declarativa en aplicaciones Hibernate es manejada "
+"en una capa de fachada de sesión. Ahora, Hibernate3 permite que ciertas "
+"acciones sean permitidas vía JACC, y autorizadas vía JAAS. Esta en una "
+"funcionalidad opcional construída encima de la arquitectura de eventos."
-#: index.docbook:139
-msgid "First, you must configure the appropriate event listeners, to enable the use of JAAS authorization."
-msgstr "Seguido, aún en <literal>hibernate.cfg.xml</literal>, liga los permisos a roles:"
+#. Tag: para
+#: events.xml:139
+#, no-c-format
+msgid ""
+"First, you must configure the appropriate event listeners, to enable the use "
+"of JAAS authorization."
+msgstr ""
+"Primero, debes configurar los oyentes de eventos apropiados, para habilitar "
+"el uso de autorización JAAS."
-#: index.docbook:144
+#. Tag: programlisting
+#: events.xml:144
+#, no-c-format
msgid ""
- "<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure.JACCPreDeleteEventListener\"/>\n"
- "<listener type=\"pre-update\" class=\"org.hibernate.secure.JACCPreUpdateEventListener\"/>\n"
- "<listener type=\"pre-insert\" class=\"org.hibernate.secure.JACCPreInsertEventListener\"/>\n"
- "<listener type=\"pre-load\" class=\"org.hibernate.secure.JACCPreLoadEventListener\"/>]]>"
+"<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure."
+"JACCPreDeleteEventListener\"/>\n"
+"<listener type=\"pre-update\" class=\"org.hibernate.secure."
+"JACCPreUpdateEventListener\"/>\n"
+"<listener type=\"pre-insert\" class=\"org.hibernate.secure."
+"JACCPreInsertEventListener\"/>\n"
+"<listener type=\"pre-load\" class=\"org.hibernate.secure."
+"JACCPreLoadEventListener\"/>]]>"
msgstr ""
- "<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,update,read\"/>\n"
- "<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"
-#: index.docbook:146
-msgid "Note that <literal><listener type=\"...\" class=\"...\"/></literal> is just a shorthand for <literal><event type=\"...\"><listener class=\"...\"/></event></literal> when there is exactly one listener for a particular event type."
-msgstr "Los nombres de role son los roles entendidos por tu proveedor de JACC."
+#. Tag: para
+#: events.xml:146
+#, no-c-format
+msgid ""
+"Note that <literal><listener type=\"...\" class=\"...\"/></literal> is "
+"just a shorthand for <literal><event type=\"...\"><listener class="
+"\"...\"/></event></literal> when there is exactly one listener for "
+"a particular event type."
+msgstr ""
+"UNTRANSLATED! Note that <literal><listener type=\"...\" class=\"...\"/>"
+"</literal> is just a shorthand for <literal><event type=\"...\"><"
+"listener class=\"...\"/></event></literal> when there is exactly "
+"one listener for a particular event type."
-#: index.docbook:152
-msgid "Next, still in <literal>hibernate.cfg.xml</literal>, bind the permissions to roles:"
+#. Tag: para
+#: events.xml:152
+#, no-c-format
+msgid ""
+"Next, still in <literal>hibernate.cfg.xml</literal>, bind the permissions to "
+"roles:"
msgstr ""
+"Seguido, aún en <literal>hibernate.cfg.xml</literal>, liga los permisos a "
+"roles:"
-#: index.docbook:156
+#. Tag: programlisting
+#: events.xml:156
+#, no-c-format
msgid ""
- "<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,update,read\"/>\n"
- "<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"
+"<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,update,"
+"read\"/>\n"
+"<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"
msgstr ""
-#: index.docbook:158
+#. Tag: para
+#: events.xml:158
+#, no-c-format
msgid "The role names are the roles understood by your JACC provider."
-msgstr ""
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+msgstr "Los nombres de role son los roles entendidos por tu proveedor de JACC."
Modified: core/trunk/documentation/manual/translations/es-ES/content/example_mappings.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/example_mappings.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/example_mappings.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,1162 +1,796 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:20
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: example_mappings.xml:20
+#, no-c-format
msgid "Example: Various Mappings"
msgstr "Ejemplo: Varios Mapeos"
-#: index.docbook:22
+#. Tag: para
+#: example_mappings.xml:22
+#, no-c-format
msgid "This chapters shows off some more complex association mappings."
-msgstr "Este capítulo muestra mapeos de asociaciones más complejos."
+msgstr "Este capítulo muestra mapeos de asociaciones más complejos."
-#: index.docbook:27
+#. Tag: title
+#: example_mappings.xml:27
+#, no-c-format
msgid "Employer/Employee"
msgstr "Empleador/Empleado"
-#: index.docbook:29
-msgid "The following model of the relationship between <literal>Employer</literal> and <literal>Employee</literal> uses an actual entity class (<literal>Employment</literal>) to represent the association. This is done because there might be more than one period of employment for the same two parties. Components are used to model monetary values and employee names."
-msgstr "El siguiente modelo de la relación entre <literal>Employer</literal> y <literal>Employee</literal> usa una clase de entidad real (<literal>Employment</literal>) para representar la asociación. Esto se ha hecho esto porque podría haber más de un período de empleo para los mismos dos participantes. Se usan componentes para modelar valores monetarios y nombres de empleado."
+#. Tag: para
+#: example_mappings.xml:29
+#, no-c-format
+msgid ""
+"The following model of the relationship between <literal>Employer</literal> "
+"and <literal>Employee</literal> uses an actual entity class "
+"(<literal>Employment</literal>) to represent the association. This is done "
+"because there might be more than one period of employment for the same two "
+"parties. Components are used to model monetary values and employee names."
+msgstr ""
+"El siguiente modelo de la relación entre <literal>Employer</literal> y "
+"<literal>Employee</literal> usa una clase de entidad real "
+"(<literal>Employment</literal>) para representar la asociación. Esto se ha "
+"hecho esto porque podría haber más de un período de empleo para los mismos "
+"dos participantes. Se usan componentes para modelar valores monetarios y "
+"nombres de empleado."
-#: index.docbook:46
+#. Tag: para
+#: example_mappings.xml:46
+#, no-c-format
msgid "Heres a possible mapping document:"
-msgstr "He aquí un documento de mapeo posible:"
+msgstr "He aquí un documento de mapeo posible:"
-#: index.docbook:50
+#. Tag: programlisting
+#: example_mappings.xml:50
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- " \n"
- " <class name=\"Employer\" table=\"employers\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\">\n"
- " <param name=\"sequence\">employer_id_seq</param>\n"
- " </generator>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- " <class name=\"Employment\" table=\"employment_periods\">\n"
- "\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\">\n"
- " <param name=\"sequence\">employment_id_seq</param>\n"
- " </generator>\n"
- " </id>\n"
- " <property name=\"startDate\" column=\"start_date\"/>\n"
- " <property name=\"endDate\" column=\"end_date\"/>\n"
- "\n"
- " <component name=\"hourlyRate\" class=\"MonetaryAmount\">\n"
- " <property name=\"amount\">\n"
- " <column name=\"hourly_rate\" sql-type=\"NUMERIC(12, 2)\"/>\n"
- " </property>\n"
- " <property name=\"currency\" length=\"12\"/>\n"
- " </component>\n"
- "\n"
- " <many-to-one name=\"employer\" column=\"employer_id\" not-null=\"true\"/>\n"
- " <many-to-one name=\"employee\" column=\"employee_id\" not-null=\"true\"/>\n"
- "\n"
- " </class>\n"
- "\n"
- " <class name=\"Employee\" table=\"employees\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\">\n"
- " <param name=\"sequence\">employee_id_seq</param>\n"
- " </generator>\n"
- " </id>\n"
- " <property name=\"taxfileNumber\"/>\n"
- " <component name=\"name\" class=\"Name\">\n"
- " <property name=\"firstName\"/>\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"lastName\"/>\n"
- " </component>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+" \n"
+" <class name=\"Employer\" table=\"employers\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\">\n"
+" <param name=\"sequence\">employer_id_seq</param>\n"
+" </generator>\n"
+" </id>\n"
+" <property name=\"name\"/>\n"
+" </class>\n"
+"\n"
+" <class name=\"Employment\" table=\"employment_periods\">\n"
+"\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\">\n"
+" <param name=\"sequence\">employment_id_seq</param>\n"
+" </generator>\n"
+" </id>\n"
+" <property name=\"startDate\" column=\"start_date\"/>\n"
+" <property name=\"endDate\" column=\"end_date\"/>\n"
+"\n"
+" <component name=\"hourlyRate\" class=\"MonetaryAmount\">\n"
+" <property name=\"amount\">\n"
+" <column name=\"hourly_rate\" sql-type=\"NUMERIC(12, 2)\"/>\n"
+" </property>\n"
+" <property name=\"currency\" length=\"12\"/>\n"
+" </component>\n"
+"\n"
+" <many-to-one name=\"employer\" column=\"employer_id\" not-null=\"true"
+"\"/>\n"
+" <many-to-one name=\"employee\" column=\"employee_id\" not-null=\"true"
+"\"/>\n"
+"\n"
+" </class>\n"
+"\n"
+" <class name=\"Employee\" table=\"employees\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\">\n"
+" <param name=\"sequence\">employee_id_seq</param>\n"
+" </generator>\n"
+" </id>\n"
+" <property name=\"taxfileNumber\"/>\n"
+" <component name=\"name\" class=\"Name\">\n"
+" <property name=\"firstName\"/>\n"
+" <property name=\"initial\"/>\n"
+" <property name=\"lastName\"/>\n"
+" </component>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- " \n"
- " <class name=\"Employer\" table=\"employers\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\">\n"
- " <param name=\"sequence\">employer_id_seq</param>\n"
- " </generator>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- " <class name=\"Employment\" table=\"employment_periods\">\n"
- "\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\">\n"
- " <param name=\"sequence\">employment_id_seq</param>\n"
- " </generator>\n"
- " </id>\n"
- " <property name=\"startDate\" column=\"start_date\"/>\n"
- " <property name=\"endDate\" column=\"end_date\"/>\n"
- "\n"
- " <component name=\"hourlyRate\" class=\"MonetaryAmount\">\n"
- " <property name=\"amount\">\n"
- " <column name=\"hourly_rate\" sql-type=\"NUMERIC(12, 2)\"/>\n"
- " </property>\n"
- " <property name=\"currency\" length=\"12\"/>\n"
- " </component>\n"
- "\n"
- " <many-to-one name=\"employer\" column=\"employer_id\" not-null=\"true\"/>\n"
- " <many-to-one name=\"employee\" column=\"employee_id\" not-null=\"true\"/>\n"
- "\n"
- " </class>\n"
- "\n"
- " <class name=\"Employee\" table=\"employees\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\">\n"
- " <param name=\"sequence\">employee_id_seq</param>\n"
- " </generator>\n"
- " </id>\n"
- " <property name=\"taxfileNumber\"/>\n"
- " <component name=\"name\" class=\"Name\">\n"
- " <property name=\"firstName\"/>\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"lastName\"/>\n"
- " </component>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:52
-msgid "And heres the table schema generated by <literal>SchemaExport</literal>."
-msgstr "Y he aquí el esquema de tablas generado por <literal>SchemaExport</literal>."
+#. Tag: para
+#: example_mappings.xml:52
+#, no-c-format
+msgid ""
+"And heres the table schema generated by <literal>SchemaExport</literal>."
+msgstr ""
+"Y he aquí el esquema de tablas generado por <literal>SchemaExport</literal>."
-#: index.docbook:56
+#. Tag: programlisting
+#: example_mappings.xml:56
+#, no-c-format
msgid ""
- "<![CDATA[create table employers (\n"
- " id BIGINT not null, \n"
- " name VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table employment_periods (\n"
- " id BIGINT not null,\n"
- " hourly_rate NUMERIC(12, 2),\n"
- " currency VARCHAR(12), \n"
- " employee_id BIGINT not null, \n"
- " employer_id BIGINT not null, \n"
- " end_date TIMESTAMP, \n"
- " start_date TIMESTAMP, \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table employees (\n"
- " id BIGINT not null, \n"
- " firstName VARCHAR(255), \n"
- " initial CHAR(1), \n"
- " lastName VARCHAR(255), \n"
- " taxfileNumber VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "alter table employment_periods \n"
- " add constraint employment_periodsFK0 foreign key (employer_id) references employers\n"
- "alter table employment_periods \n"
- " add constraint employment_periodsFK1 foreign key (employee_id) references employees\n"
- "create sequence employee_id_seq\n"
- "create sequence employment_id_seq\n"
- "create sequence employer_id_seq]]>"
+"<![CDATA[create table employers (\n"
+" id BIGINT not null, \n"
+" name VARCHAR(255), \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"create table employment_periods (\n"
+" id BIGINT not null,\n"
+" hourly_rate NUMERIC(12, 2),\n"
+" currency VARCHAR(12), \n"
+" employee_id BIGINT not null, \n"
+" employer_id BIGINT not null, \n"
+" end_date TIMESTAMP, \n"
+" start_date TIMESTAMP, \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"create table employees (\n"
+" id BIGINT not null, \n"
+" firstName VARCHAR(255), \n"
+" initial CHAR(1), \n"
+" lastName VARCHAR(255), \n"
+" taxfileNumber VARCHAR(255), \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"alter table employment_periods \n"
+" add constraint employment_periodsFK0 foreign key (employer_id) "
+"references employers\n"
+"alter table employment_periods \n"
+" add constraint employment_periodsFK1 foreign key (employee_id) "
+"references employees\n"
+"create sequence employee_id_seq\n"
+"create sequence employment_id_seq\n"
+"create sequence employer_id_seq]]>"
msgstr ""
- "<![CDATA[create table employers (\n"
- " id BIGINT not null, \n"
- " name VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table employment_periods (\n"
- " id BIGINT not null,\n"
- " hourly_rate NUMERIC(12, 2),\n"
- " currency VARCHAR(12), \n"
- " employee_id BIGINT not null, \n"
- " employer_id BIGINT not null, \n"
- " end_date TIMESTAMP, \n"
- " start_date TIMESTAMP, \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table employees (\n"
- " id BIGINT not null, \n"
- " firstName VARCHAR(255), \n"
- " initial CHAR(1), \n"
- " lastName VARCHAR(255), \n"
- " taxfileNumber VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "alter table employment_periods \n"
- " add constraint employment_periodsFK0 foreign key (employer_id) references employers\n"
- "alter table employment_periods \n"
- " add constraint employment_periodsFK1 foreign key (employee_id) references employees\n"
- "create sequence employee_id_seq\n"
- "create sequence employment_id_seq\n"
- "create sequence employer_id_seq]]>"
-#: index.docbook:61
+#. Tag: title
+#: example_mappings.xml:61
+#, no-c-format
msgid "Author/Work"
msgstr "Autor/Obra"
-#: index.docbook:63
-msgid "Consider the following model of the relationships between <literal>Work</literal>, <literal>Author</literal> and <literal>Person</literal>. We represent the relationship between <literal>Work</literal> and <literal>Author</literal> as a many-to-many association. We choose to represent the relationship between <literal>Author</literal> and <literal>Person</literal> as one-to-one association. Another possibility would be to have <literal>Author</literal> extend <literal>Person</literal>."
-msgstr "Considera el siguiente modelo de las relaciones entre <literal>Work</literal>, <literal>Author</literal> y <literal>Person</literal>. Representamos la relación entre <literal>Work</literal> y <literal>Author</literal> como una asociación muchos-a-muchos. Elegimos representar la relación entre <literal>Author</literal> y <literal>Person</literal> como una asociación uno-a-uno. Otra posibilidad hubiese sido que <literal>Author</literal> extendiera <literal>Person</literal>."
+#. Tag: para
+#: example_mappings.xml:63
+#, no-c-format
+msgid ""
+"Consider the following model of the relationships between <literal>Work</"
+"literal>, <literal>Author</literal> and <literal>Person</literal>. We "
+"represent the relationship between <literal>Work</literal> and "
+"<literal>Author</literal> as a many-to-many association. We choose to "
+"represent the relationship between <literal>Author</literal> and "
+"<literal>Person</literal> as one-to-one association. Another possibility "
+"would be to have <literal>Author</literal> extend <literal>Person</literal>."
+msgstr ""
+"Considera el siguiente modelo de las relaciones entre <literal>Work</"
+"literal>, <literal>Author</literal> y <literal>Person</literal>. "
+"Representamos la relación entre <literal>Work</literal> y <literal>Author</"
+"literal> como una asociación muchos-a-muchos. Elegimos representar la "
+"relación entre <literal>Author</literal> y <literal>Person</literal> como "
+"una asociación uno-a-uno. Otra posibilidad hubiese sido que <literal>Author</"
+"literal> extendiera <literal>Person</literal>."
-#: index.docbook:81
-msgid "The following mapping document correctly represents these relationships:"
-msgstr "El siguiente documento de mapeo representa estas relaciones correctamente:"
+#. Tag: para
+#: example_mappings.xml:81
+#, no-c-format
+msgid ""
+"The following mapping document correctly represents these relationships:"
+msgstr ""
+"El siguiente documento de mapeo representa estas relaciones correctamente:"
-#: index.docbook:85
+#. Tag: programlisting
+#: example_mappings.xml:85
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Work\" table=\"works\" discriminator-value=\"W\">\n"
- "\n"
- " <id name=\"id\" column=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"type\" type=\"character\"/>\n"
- "\n"
- " <property name=\"title\"/>\n"
- " <set name=\"authors\" table=\"author_work\">\n"
- " <key column name=\"work_id\"/>\n"
- " <many-to-many class=\"Author\" column name=\"author_id\"/>\n"
- " </set>\n"
- "\n"
- " <subclass name=\"Book\" discriminator-value=\"B\">\n"
- " <property name=\"text\"/>\n"
- " </subclass>\n"
- "\n"
- " <subclass name=\"Song\" discriminator-value=\"S\">\n"
- " <property name=\"tempo\"/>\n"
- " <property name=\"genre\"/>\n"
- " </subclass>\n"
- "\n"
- " </class>\n"
- "\n"
- " <class name=\"Author\" table=\"authors\">\n"
- "\n"
- " <id name=\"id\" column=\"id\">\n"
- " <!-- The Author must have the same identifier as the Person -->\n"
- " <generator class=\"assigned\"/> \n"
- " </id>\n"
- "\n"
- " <property name=\"alias\"/>\n"
- " <one-to-one name=\"person\" constrained=\"true\"/>\n"
- "\n"
- " <set name=\"works\" table=\"author_work\" inverse=\"true\">\n"
- " <key column=\"author_id\"/>\n"
- " <many-to-many class=\"Work\" column=\"work_id\"/>\n"
- " </set>\n"
- "\n"
- " </class>\n"
- "\n"
- " <class name=\"Person\" table=\"persons\">\n"
- " <id name=\"id\" column=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"Work\" table=\"works\" discriminator-value=\"W\">\n"
+"\n"
+" <id name=\"id\" column=\"id\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <discriminator column=\"type\" type=\"character\"/>\n"
+"\n"
+" <property name=\"title\"/>\n"
+" <set name=\"authors\" table=\"author_work\">\n"
+" <key column name=\"work_id\"/>\n"
+" <many-to-many class=\"Author\" column name=\"author_id\"/>\n"
+" </set>\n"
+"\n"
+" <subclass name=\"Book\" discriminator-value=\"B\">\n"
+" <property name=\"text\"/>\n"
+" </subclass>\n"
+"\n"
+" <subclass name=\"Song\" discriminator-value=\"S\">\n"
+" <property name=\"tempo\"/>\n"
+" <property name=\"genre\"/>\n"
+" </subclass>\n"
+"\n"
+" </class>\n"
+"\n"
+" <class name=\"Author\" table=\"authors\">\n"
+"\n"
+" <id name=\"id\" column=\"id\">\n"
+" <!-- The Author must have the same identifier as the Person -->\n"
+" <generator class=\"assigned\"/> \n"
+" </id>\n"
+"\n"
+" <property name=\"alias\"/>\n"
+" <one-to-one name=\"person\" constrained=\"true\"/>\n"
+"\n"
+" <set name=\"works\" table=\"author_work\" inverse=\"true\">\n"
+" <key column=\"author_id\"/>\n"
+" <many-to-many class=\"Work\" column=\"work_id\"/>\n"
+" </set>\n"
+"\n"
+" </class>\n"
+"\n"
+" <class name=\"Person\" table=\"persons\">\n"
+" <id name=\"id\" column=\"id\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"name\"/>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Work\" table=\"works\" discriminator-value=\"W\">\n"
- "\n"
- " <id name=\"id\" column=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"type\" type=\"character\"/>\n"
- "\n"
- " <property name=\"title\"/>\n"
- " <set name=\"authors\" table=\"author_work\">\n"
- " <key column name=\"work_id\"/>\n"
- " <many-to-many class=\"Author\" column name=\"author_id\"/>\n"
- " </set>\n"
- "\n"
- " <subclass name=\"Book\" discriminator-value=\"B\">\n"
- " <property name=\"text\"/>\n"
- " </subclass>\n"
- "\n"
- " <subclass name=\"Song\" discriminator-value=\"S\">\n"
- " <property name=\"tempo\"/>\n"
- " <property name=\"genre\"/>\n"
- " </subclass>\n"
- "\n"
- " </class>\n"
- "\n"
- " <class name=\"Author\" table=\"authors\">\n"
- "\n"
- " <id name=\"id\" column=\"id\">\n"
- " <!-- The Author must have the same identifier as the Person -->\n"
- " <generator class=\"assigned\"/> \n"
- " </id>\n"
- "\n"
- " <property name=\"alias\"/>\n"
- " <one-to-one name=\"person\" constrained=\"true\"/>\n"
- "\n"
- " <set name=\"works\" table=\"author_work\" inverse=\"true\">\n"
- " <key column=\"author_id\"/>\n"
- " <many-to-many class=\"Work\" column=\"work_id\"/>\n"
- " </set>\n"
- "\n"
- " </class>\n"
- "\n"
- " <class name=\"Person\" table=\"persons\">\n"
- " <id name=\"id\" column=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:87
-msgid "There are four tables in this mapping. <literal>works</literal>, <literal>authors</literal> and <literal>persons</literal> hold work, author and person data respectively. <literal>author_work</literal> is an association table linking authors to works. Heres the table schema, as generated by <literal>SchemaExport</literal>."
-msgstr "Hay cuatro tablas en este mapeo. <literal>works</literal>, <literal>authors</literal> y <literal>persons</literal> tienen los datos de obra, autor y persona respectivamente. <literal>author_work</literal> es una tabla de asociación enlazando autores a obras. He aquí el esquema de tablas, tal como fue generado por <literal>SchemaExport</literal>."
+#. Tag: para
+#: example_mappings.xml:87
+#, no-c-format
+msgid ""
+"There are four tables in this mapping. <literal>works</literal>, "
+"<literal>authors</literal> and <literal>persons</literal> hold work, author "
+"and person data respectively. <literal>author_work</literal> is an "
+"association table linking authors to works. Heres the table schema, as "
+"generated by <literal>SchemaExport</literal>."
+msgstr ""
+"Hay cuatro tablas en este mapeo. <literal>works</literal>, <literal>authors</"
+"literal> y <literal>persons</literal> tienen los datos de obra, autor y "
+"persona respectivamente. <literal>author_work</literal> es una tabla de "
+"asociación enlazando autores a obras. He aquí el esquema de tablas, tal como "
+"fue generado por <literal>SchemaExport</literal>."
-#: index.docbook:95
+#. Tag: programlisting
+#: example_mappings.xml:95
+#, no-c-format
msgid ""
- "<![CDATA[create table works (\n"
- " id BIGINT not null generated by default as identity, \n"
- " tempo FLOAT, \n"
- " genre VARCHAR(255), \n"
- " text INTEGER, \n"
- " title VARCHAR(255), \n"
- " type CHAR(1) not null, \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table author_work (\n"
- " author_id BIGINT not null, \n"
- " work_id BIGINT not null, \n"
- " primary key (work_id, author_id)\n"
- ")\n"
- "\n"
- "create table authors (\n"
- " id BIGINT not null generated by default as identity, \n"
- " alias VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table persons (\n"
- " id BIGINT not null generated by default as identity, \n"
- " name VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "alter table authors \n"
- " add constraint authorsFK0 foreign key (id) references persons\n"
- "alter table author_work \n"
- " add constraint author_workFK0 foreign key (author_id) references authors\n"
- "alter table author_work\n"
- " add constraint author_workFK1 foreign key (work_id) references works]]>"
+"<![CDATA[create table works (\n"
+" id BIGINT not null generated by default as identity, \n"
+" tempo FLOAT, \n"
+" genre VARCHAR(255), \n"
+" text INTEGER, \n"
+" title VARCHAR(255), \n"
+" type CHAR(1) not null, \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"create table author_work (\n"
+" author_id BIGINT not null, \n"
+" work_id BIGINT not null, \n"
+" primary key (work_id, author_id)\n"
+")\n"
+"\n"
+"create table authors (\n"
+" id BIGINT not null generated by default as identity, \n"
+" alias VARCHAR(255), \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"create table persons (\n"
+" id BIGINT not null generated by default as identity, \n"
+" name VARCHAR(255), \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"alter table authors \n"
+" add constraint authorsFK0 foreign key (id) references persons\n"
+"alter table author_work \n"
+" add constraint author_workFK0 foreign key (author_id) references "
+"authors\n"
+"alter table author_work\n"
+" add constraint author_workFK1 foreign key (work_id) references works]]>"
msgstr ""
- "<![CDATA[create table works (\n"
- " id BIGINT not null generated by default as identity, \n"
- " tempo FLOAT, \n"
- " genre VARCHAR(255), \n"
- " text INTEGER, \n"
- " title VARCHAR(255), \n"
- " type CHAR(1) not null, \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table author_work (\n"
- " author_id BIGINT not null, \n"
- " work_id BIGINT not null, \n"
- " primary key (work_id, author_id)\n"
- ")\n"
- "\n"
- "create table authors (\n"
- " id BIGINT not null generated by default as identity, \n"
- " alias VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table persons (\n"
- " id BIGINT not null generated by default as identity, \n"
- " name VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "alter table authors \n"
- " add constraint authorsFK0 foreign key (id) references persons\n"
- "alter table author_work \n"
- " add constraint author_workFK0 foreign key (author_id) references authors\n"
- "alter table author_work\n"
- " add constraint author_workFK1 foreign key (work_id) references works]]>"
-#: index.docbook:100
+#. Tag: title
+#: example_mappings.xml:100
+#, no-c-format
msgid "Customer/Order/Product"
msgstr "Cliente/Orden/Producto"
-#: index.docbook:102
-msgid "Now consider a model of the relationships between <literal>Customer</literal>, <literal>Order</literal> and <literal>LineItem</literal> and <literal>Product</literal>. There is a one-to-many association between <literal>Customer</literal> and <literal>Order</literal>, but how should we represent <literal>Order</literal> / <literal>LineItem</literal> / <literal>Product</literal>? I've chosen to map <literal>LineItem</literal> as an association class representing the many-to-many association between <literal>Order</literal> and <literal>Product</literal>. In Hibernate, this is called a composite element."
-msgstr "Ahora considera un modelo de las relaciones entre <literal>Customer</literal>, <literal>Order</literal> y <literal>LineItem</literal> y <literal>Product</literal>. Hay una asociación uno-a-muchos entre <literal>Customer</literal> y <literal>Order</literal>, pero, ¿cómo deberíamos representar <literal>Order</literal> / <literal>LineItem</literal> / <literal>Product</literal>? He elegido mapear <literal>LineItem</literal> como una clase de asociación representando la asociación muchos-a-muchos entre <literal>Order</literal> y <literal>Product</literal>. En Hibernate, esto se llama un elemento compuesto."
+#. Tag: para
+#: example_mappings.xml:102
+#, no-c-format
+msgid ""
+"Now consider a model of the relationships between <literal>Customer</"
+"literal>, <literal>Order</literal> and <literal>LineItem</literal> and "
+"<literal>Product</literal>. There is a one-to-many association between "
+"<literal>Customer</literal> and <literal>Order</literal>, but how should we "
+"represent <literal>Order</literal> / <literal>LineItem</literal> / "
+"<literal>Product</literal>? I've chosen to map <literal>LineItem</literal> "
+"as an association class representing the many-to-many association between "
+"<literal>Order</literal> and <literal>Product</literal>. In Hibernate, this "
+"is called a composite element."
+msgstr ""
+"Ahora considera un modelo de las relaciones entre <literal>Customer</"
+"literal>, <literal>Order</literal> y <literal>LineItem</literal> y "
+"<literal>Product</literal>. Hay una asociación uno-a-muchos entre "
+"<literal>Customer</literal> y <literal>Order</literal>, pero, ¿cómo "
+"deberíamos representar <literal>Order</literal> / <literal>LineItem</"
+"literal> / <literal>Product</literal>? He elegido mapear <literal>LineItem</"
+"literal> como una clase de asociación representando la asociación muchos-a-"
+"muchos entre <literal>Order</literal> y <literal>Product</literal>. En "
+"Hibernate, esto se llama un elemento compuesto."
-#: index.docbook:122
+#. Tag: para
+#: example_mappings.xml:122
+#, no-c-format
msgid "The mapping document:"
msgstr "El documento de mapeo:"
-#: index.docbook:126
+#. Tag: programlisting
+#: example_mappings.xml:126
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Customer\" table=\"customers\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " <set name=\"orders\" inverse=\"true\">\n"
- " <key column=\"customer_id\"/>\n"
- " <one-to-many class=\"Order\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Order\" table=\"orders\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"date\"/>\n"
- " <many-to-one name=\"customer\" column=\"customer_id\"/>\n"
- " <list name=\"lineItems\" table=\"line_items\">\n"
- " <key column=\"order_id\"/>\n"
- " <list-index column=\"line_number\"/>\n"
- " <composite-element class=\"LineItem\">\n"
- " <property name=\"quantity\"/>\n"
- " <many-to-one name=\"product\" column=\"product_id\"/>\n"
- " </composite-element>\n"
- " </list>\n"
- " </class>\n"
- "\n"
- " <class name=\"Product\" table=\"products\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"serialNumber\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"Customer\" table=\"customers\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"name\"/>\n"
+" <set name=\"orders\" inverse=\"true\">\n"
+" <key column=\"customer_id\"/>\n"
+" <one-to-many class=\"Order\"/>\n"
+" </set>\n"
+" </class>\n"
+"\n"
+" <class name=\"Order\" table=\"orders\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"date\"/>\n"
+" <many-to-one name=\"customer\" column=\"customer_id\"/>\n"
+" <list name=\"lineItems\" table=\"line_items\">\n"
+" <key column=\"order_id\"/>\n"
+" <list-index column=\"line_number\"/>\n"
+" <composite-element class=\"LineItem\">\n"
+" <property name=\"quantity\"/>\n"
+" <many-to-one name=\"product\" column=\"product_id\"/>\n"
+" </composite-element>\n"
+" </list>\n"
+" </class>\n"
+"\n"
+" <class name=\"Product\" table=\"products\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"serialNumber\"/>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Customer\" table=\"customers\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " <set name=\"orders\" inverse=\"true\">\n"
- " <key column=\"customer_id\"/>\n"
- " <one-to-many class=\"Order\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Order\" table=\"orders\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"date\"/>\n"
- " <many-to-one name=\"customer\" column=\"customer_id\"/>\n"
- " <list name=\"lineItems\" table=\"line_items\">\n"
- " <key column=\"order_id\"/>\n"
- " <list-index column=\"line_number\"/>\n"
- " <composite-element class=\"LineItem\">\n"
- " <property name=\"quantity\"/>\n"
- " <many-to-one name=\"product\" column=\"product_id\"/>\n"
- " </composite-element>\n"
- " </list>\n"
- " </class>\n"
- "\n"
- " <class name=\"Product\" table=\"products\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"serialNumber\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:128
-msgid "<literal>customers</literal>, <literal>orders</literal>, <literal>line_items</literal> and <literal>products</literal> hold customer, order, order line item and product data respectively. <literal>line_items</literal> also acts as an association table linking orders with products."
-msgstr "<literal>customers</literal>, <literal>orders</literal>, <literal>line_items</literal> y <literal>products</literal> tienen los datos de cliente, orden, ítem de línea de orden y producto respectivamente. Además <literal>line_items</literal> actúa como una tabla de asociación enlazando órdenes con productos."
+#. Tag: para
+#: example_mappings.xml:128
+#, no-c-format
+msgid ""
+"<literal>customers</literal>, <literal>orders</literal>, "
+"<literal>line_items</literal> and <literal>products</literal> hold customer, "
+"order, order line item and product data respectively. <literal>line_items</"
+"literal> also acts as an association table linking orders with products."
+msgstr ""
+"<literal>customers</literal>, <literal>orders</literal>, "
+"<literal>line_items</literal> y <literal>products</literal> tienen los datos "
+"de cliente, orden, ítem de línea de orden y producto respectivamente. Además "
+"<literal>line_items</literal> actúa como una tabla de asociación enlazando "
+"órdenes con productos."
-#: index.docbook:135
+#. Tag: programlisting
+#: example_mappings.xml:135
+#, no-c-format
msgid ""
- "<![CDATA[create table customers (\n"
- " id BIGINT not null generated by default as identity, \n"
- " name VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table orders (\n"
- " id BIGINT not null generated by default as identity, \n"
- " customer_id BIGINT, \n"
- " date TIMESTAMP, \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table line_items (\n"
- " line_number INTEGER not null, \n"
- " order_id BIGINT not null, \n"
- " product_id BIGINT, \n"
- " quantity INTEGER, \n"
- " primary key (order_id, line_number)\n"
- ")\n"
- "\n"
- "create table products (\n"
- " id BIGINT not null generated by default as identity, \n"
- " serialNumber VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "alter table orders \n"
- " add constraint ordersFK0 foreign key (customer_id) references customers\n"
- "alter table line_items\n"
- " add constraint line_itemsFK0 foreign key (product_id) references products\n"
- "alter table line_items\n"
- " add constraint line_itemsFK1 foreign key (order_id) references orders]]>"
+"<![CDATA[create table customers (\n"
+" id BIGINT not null generated by default as identity, \n"
+" name VARCHAR(255), \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"create table orders (\n"
+" id BIGINT not null generated by default as identity, \n"
+" customer_id BIGINT, \n"
+" date TIMESTAMP, \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"create table line_items (\n"
+" line_number INTEGER not null, \n"
+" order_id BIGINT not null, \n"
+" product_id BIGINT, \n"
+" quantity INTEGER, \n"
+" primary key (order_id, line_number)\n"
+")\n"
+"\n"
+"create table products (\n"
+" id BIGINT not null generated by default as identity, \n"
+" serialNumber VARCHAR(255), \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"alter table orders \n"
+" add constraint ordersFK0 foreign key (customer_id) references customers\n"
+"alter table line_items\n"
+" add constraint line_itemsFK0 foreign key (product_id) references "
+"products\n"
+"alter table line_items\n"
+" add constraint line_itemsFK1 foreign key (order_id) references orders]]>"
msgstr ""
- "<![CDATA[create table customers (\n"
- " id BIGINT not null generated by default as identity, \n"
- " name VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table orders (\n"
- " id BIGINT not null generated by default as identity, \n"
- " customer_id BIGINT, \n"
- " date TIMESTAMP, \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table line_items (\n"
- " line_number INTEGER not null, \n"
- " order_id BIGINT not null, \n"
- " product_id BIGINT, \n"
- " quantity INTEGER, \n"
- " primary key (order_id, line_number)\n"
- ")\n"
- "\n"
- "create table products (\n"
- " id BIGINT not null generated by default as identity, \n"
- " serialNumber VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "alter table orders \n"
- " add constraint ordersFK0 foreign key (customer_id) references customers\n"
- "alter table line_items\n"
- " add constraint line_itemsFK0 foreign key (product_id) references products\n"
- "alter table line_items\n"
- " add constraint line_itemsFK1 foreign key (order_id) references orders]]>"
-#: index.docbook:140
+#. Tag: title
+#: example_mappings.xml:140
+#, no-c-format
msgid "Miscellaneous example mappings"
-msgstr "Mapeos misceláneos de ejemplo"
+msgstr "Mapeos misceláneos de ejemplo"
-#: index.docbook:142
-msgid "These examples are all taken from the Hibernate test suite. You will find many other useful example mappings there. Look in the <literal>test</literal> folder of the Hibernate distribution."
-msgstr "Todos estos ejemplos están tomados de la batería de pruebas de Hibernate. Encontrarás muchos otros mapeos de ejemplo útiles allí. Mira en la carpeta <literal>test</literal> de la distribución de Hibernate."
+#. Tag: para
+#: example_mappings.xml:142
+#, no-c-format
+msgid ""
+"These examples are all taken from the Hibernate test suite. You will find "
+"many other useful example mappings there. Look in the <literal>test</"
+"literal> folder of the Hibernate distribution."
+msgstr ""
+"Todos estos ejemplos están tomados de la batería de pruebas de Hibernate. "
+"Encontrarás muchos otros mapeos de ejemplo útiles allí. Mira en la carpeta "
+"<literal>test</literal> de la distribución de Hibernate."
-#: index.docbook:148
+#. Tag: para
+#: example_mappings.xml:148
+#, no-c-format
msgid "TODO: put words around this stuff"
msgstr "POR HACER: poner palabras alrededor de este material"
-#: index.docbook:151
+#. Tag: title
+#: example_mappings.xml:151
+#, no-c-format
msgid "\"Typed\" one-to-one association"
-msgstr "Asociación uno-a-uno \"Tipificada\""
+msgstr "Asociación uno-a-uno \"Tipificada\""
-#: index.docbook:152
+#. Tag: programlisting
+#: example_mappings.xml:152
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"name\"/>\n"
- " <one-to-one name=\"address\" \n"
- " cascade=\"all\">\n"
- " <formula>name</formula>\n"
- " <formula>'HOME'</formula>\n"
- " </one-to-one>\n"
- " <one-to-one name=\"mailingAddress\" \n"
- " cascade=\"all\">\n"
- " <formula>name</formula>\n"
- " <formula>'MAILING'</formula>\n"
- " </one-to-one>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\" batch-size=\"2\" \n"
- " check=\"addressType in ('MAILING', 'HOME', 'BUSINESS')\">\n"
- " <composite-id>\n"
- " <key-many-to-one name=\"person\" \n"
- " column=\"personName\"/>\n"
- " <key-property name=\"type\" \n"
- " column=\"addressType\"/>\n"
- " </composite-id>\n"
- " <property name=\"street\" type=\"text\"/>\n"
- " <property name=\"state\"/>\n"
- " <property name=\"zip\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"name\"/>\n"
+" <one-to-one name=\"address\" \n"
+" cascade=\"all\">\n"
+" <formula>name</formula>\n"
+" <formula>'HOME'</formula>\n"
+" </one-to-one>\n"
+" <one-to-one name=\"mailingAddress\" \n"
+" cascade=\"all\">\n"
+" <formula>name</formula>\n"
+" <formula>'MAILING'</formula>\n"
+" </one-to-one>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\" batch-size=\"2\" \n"
+" check=\"addressType in ('MAILING', 'HOME', 'BUSINESS')\">\n"
+" <composite-id>\n"
+" <key-many-to-one name=\"person\" \n"
+" column=\"personName\"/>\n"
+" <key-property name=\"type\" \n"
+" column=\"addressType\"/>\n"
+" </composite-id>\n"
+" <property name=\"street\" type=\"text\"/>\n"
+" <property name=\"state\"/>\n"
+" <property name=\"zip\"/>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"name\"/>\n"
- " <one-to-one name=\"address\" \n"
- " cascade=\"all\">\n"
- " <formula>name</formula>\n"
- " <formula>'HOME'</formula>\n"
- " </one-to-one>\n"
- " <one-to-one name=\"mailingAddress\" \n"
- " cascade=\"all\">\n"
- " <formula>name</formula>\n"
- " <formula>'MAILING'</formula>\n"
- " </one-to-one>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\" batch-size=\"2\" \n"
- " check=\"addressType in ('MAILING', 'HOME', 'BUSINESS')\">\n"
- " <composite-id>\n"
- " <key-many-to-one name=\"person\" \n"
- " column=\"personName\"/>\n"
- " <key-property name=\"type\" \n"
- " column=\"addressType\"/>\n"
- " </composite-id>\n"
- " <property name=\"street\" type=\"text\"/>\n"
- " <property name=\"state\"/>\n"
- " <property name=\"zip\"/>\n"
- "</class>]]>"
-#: index.docbook:156
+#. Tag: title
+#: example_mappings.xml:156
+#, no-c-format
msgid "Composite key example"
msgstr "Ejemplo de clave compuesta"
-#: index.docbook:157
+#. Tag: programlisting
+#: example_mappings.xml:157
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Customer\">\n"
- "\n"
- " <id name=\"customerId\"\n"
- " length=\"10\">\n"
- " <generator class=\"assigned\"/>\n"
- " </id>\n"
- "\n"
- " <property name=\"name\" not-null=\"true\" length=\"100\"/>\n"
- " <property name=\"address\" not-null=\"true\" length=\"200\"/>\n"
- "\n"
- " <list name=\"orders\"\n"
- " inverse=\"true\"\n"
- " cascade=\"save-update\">\n"
- " <key column=\"customerId\"/>\n"
- " <index column=\"orderNumber\"/>\n"
- " <one-to-many class=\"Order\"/>\n"
- " </list>\n"
- "\n"
- "</class>\n"
- "\n"
- "<class name=\"Order\" table=\"CustomerOrder\" lazy=\"true\">\n"
- " <synchronize table=\"LineItem\"/>\n"
- " <synchronize table=\"Product\"/>\n"
- " \n"
- " <composite-id name=\"id\" \n"
- " class=\"Order$Id\">\n"
- " <key-property name=\"customerId\" length=\"10\"/>\n"
- " <key-property name=\"orderNumber\"/>\n"
- " </composite-id>\n"
- " \n"
- " <property name=\"orderDate\" \n"
- " type=\"calendar_date\"\n"
- " not-null=\"true\"/>\n"
- " \n"
- " <property name=\"total\">\n"
- " <formula>\n"
- " ( select sum(li.quantity*p.price) \n"
- " from LineItem li, Product p \n"
- " where li.productId = p.productId \n"
- " and li.customerId = customerId \n"
- " and li.orderNumber = orderNumber )\n"
- " </formula>\n"
- " </property>\n"
- " \n"
- " <many-to-one name=\"customer\"\n"
- " column=\"customerId\"\n"
- " insert=\"false\"\n"
- " update=\"false\" \n"
- " not-null=\"true\"/>\n"
- " \n"
- " <bag name=\"lineItems\"\n"
- " fetch=\"join\" \n"
- " inverse=\"true\"\n"
- " cascade=\"save-update\">\n"
- " <key>\n"
- " <column name=\"customerId\"/>\n"
- " <column name=\"orderNumber\"/>\n"
- " </key>\n"
- " <one-to-many class=\"LineItem\"/>\n"
- " </bag>\n"
- " \n"
- "</class>\n"
- " \n"
- "<class name=\"LineItem\">\n"
- " \n"
- " <composite-id name=\"id\" \n"
- " class=\"LineItem$Id\">\n"
- " <key-property name=\"customerId\" length=\"10\"/>\n"
- " <key-property name=\"orderNumber\"/>\n"
- " <key-property name=\"productId\" length=\"10\"/>\n"
- " </composite-id>\n"
- " \n"
- " <property name=\"quantity\"/>\n"
- " \n"
- " <many-to-one name=\"order\"\n"
- " insert=\"false\"\n"
- " update=\"false\" \n"
- " not-null=\"true\">\n"
- " <column name=\"customerId\"/>\n"
- " <column name=\"orderNumber\"/>\n"
- " </many-to-one>\n"
- " \n"
- " <many-to-one name=\"product\"\n"
- " insert=\"false\"\n"
- " update=\"false\" \n"
- " not-null=\"true\"\n"
- " column=\"productId\"/>\n"
- " \n"
- "</class>\n"
- "\n"
- "<class name=\"Product\">\n"
- " <synchronize table=\"LineItem\"/>\n"
- "\n"
- " <id name=\"productId\"\n"
- " length=\"10\">\n"
- " <generator class=\"assigned\"/>\n"
- " </id>\n"
- " \n"
- " <property name=\"description\" \n"
- " not-null=\"true\" \n"
- " length=\"200\"/>\n"
- " <property name=\"price\" length=\"3\"/>\n"
- " <property name=\"numberAvailable\"/>\n"
- " \n"
- " <property name=\"numberOrdered\">\n"
- " <formula>\n"
- " ( select sum(li.quantity) \n"
- " from LineItem li \n"
- " where li.productId = productId )\n"
- " </formula>\n"
- " </property>\n"
- " \n"
- "</class>]]>"
+"<![CDATA[<class name=\"Customer\">\n"
+"\n"
+" <id name=\"customerId\"\n"
+" length=\"10\">\n"
+" <generator class=\"assigned\"/>\n"
+" </id>\n"
+"\n"
+" <property name=\"name\" not-null=\"true\" length=\"100\"/>\n"
+" <property name=\"address\" not-null=\"true\" length=\"200\"/>\n"
+"\n"
+" <list name=\"orders\"\n"
+" inverse=\"true\"\n"
+" cascade=\"save-update\">\n"
+" <key column=\"customerId\"/>\n"
+" <index column=\"orderNumber\"/>\n"
+" <one-to-many class=\"Order\"/>\n"
+" </list>\n"
+"\n"
+"</class>\n"
+"\n"
+"<class name=\"Order\" table=\"CustomerOrder\" lazy=\"true\">\n"
+" <synchronize table=\"LineItem\"/>\n"
+" <synchronize table=\"Product\"/>\n"
+" \n"
+" <composite-id name=\"id\" \n"
+" class=\"Order$Id\">\n"
+" <key-property name=\"customerId\" length=\"10\"/>\n"
+" <key-property name=\"orderNumber\"/>\n"
+" </composite-id>\n"
+" \n"
+" <property name=\"orderDate\" \n"
+" type=\"calendar_date\"\n"
+" not-null=\"true\"/>\n"
+" \n"
+" <property name=\"total\">\n"
+" <formula>\n"
+" ( select sum(li.quantity*p.price) \n"
+" from LineItem li, Product p \n"
+" where li.productId = p.productId \n"
+" and li.customerId = customerId \n"
+" and li.orderNumber = orderNumber )\n"
+" </formula>\n"
+" </property>\n"
+" \n"
+" <many-to-one name=\"customer\"\n"
+" column=\"customerId\"\n"
+" insert=\"false\"\n"
+" update=\"false\" \n"
+" not-null=\"true\"/>\n"
+" \n"
+" <bag name=\"lineItems\"\n"
+" fetch=\"join\" \n"
+" inverse=\"true\"\n"
+" cascade=\"save-update\">\n"
+" <key>\n"
+" <column name=\"customerId\"/>\n"
+" <column name=\"orderNumber\"/>\n"
+" </key>\n"
+" <one-to-many class=\"LineItem\"/>\n"
+" </bag>\n"
+" \n"
+"</class>\n"
+" \n"
+"<class name=\"LineItem\">\n"
+" \n"
+" <composite-id name=\"id\" \n"
+" class=\"LineItem$Id\">\n"
+" <key-property name=\"customerId\" length=\"10\"/>\n"
+" <key-property name=\"orderNumber\"/>\n"
+" <key-property name=\"productId\" length=\"10\"/>\n"
+" </composite-id>\n"
+" \n"
+" <property name=\"quantity\"/>\n"
+" \n"
+" <many-to-one name=\"order\"\n"
+" insert=\"false\"\n"
+" update=\"false\" \n"
+" not-null=\"true\">\n"
+" <column name=\"customerId\"/>\n"
+" <column name=\"orderNumber\"/>\n"
+" </many-to-one>\n"
+" \n"
+" <many-to-one name=\"product\"\n"
+" insert=\"false\"\n"
+" update=\"false\" \n"
+" not-null=\"true\"\n"
+" column=\"productId\"/>\n"
+" \n"
+"</class>\n"
+"\n"
+"<class name=\"Product\">\n"
+" <synchronize table=\"LineItem\"/>\n"
+"\n"
+" <id name=\"productId\"\n"
+" length=\"10\">\n"
+" <generator class=\"assigned\"/>\n"
+" </id>\n"
+" \n"
+" <property name=\"description\" \n"
+" not-null=\"true\" \n"
+" length=\"200\"/>\n"
+" <property name=\"price\" length=\"3\"/>\n"
+" <property name=\"numberAvailable\"/>\n"
+" \n"
+" <property name=\"numberOrdered\">\n"
+" <formula>\n"
+" ( select sum(li.quantity) \n"
+" from LineItem li \n"
+" where li.productId = productId )\n"
+" </formula>\n"
+" </property>\n"
+" \n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Customer\">\n"
- "\n"
- " <id name=\"customerId\"\n"
- " length=\"10\">\n"
- " <generator class=\"assigned\"/>\n"
- " </id>\n"
- "\n"
- " <property name=\"name\" not-null=\"true\" length=\"100\"/>\n"
- " <property name=\"address\" not-null=\"true\" length=\"200\"/>\n"
- "\n"
- " <list name=\"orders\"\n"
- " inverse=\"true\"\n"
- " cascade=\"save-update\">\n"
- " <key column=\"customerId\"/>\n"
- " <index column=\"orderNumber\"/>\n"
- " <one-to-many class=\"Order\"/>\n"
- " </list>\n"
- "\n"
- "</class>\n"
- "\n"
- "<class name=\"Order\" table=\"CustomerOrder\" lazy=\"true\">\n"
- " <synchronize table=\"LineItem\"/>\n"
- " <synchronize table=\"Product\"/>\n"
- " \n"
- " <composite-id name=\"id\" \n"
- " class=\"Order$Id\">\n"
- " <key-property name=\"customerId\" length=\"10\"/>\n"
- " <key-property name=\"orderNumber\"/>\n"
- " </composite-id>\n"
- " \n"
- " <property name=\"orderDate\" \n"
- " type=\"calendar_date\"\n"
- " not-null=\"true\"/>\n"
- " \n"
- " <property name=\"total\">\n"
- " <formula>\n"
- " ( select sum(li.quantity*p.price) \n"
- " from LineItem li, Product p \n"
- " where li.productId = p.productId \n"
- " and li.customerId = customerId \n"
- " and li.orderNumber = orderNumber )\n"
- " </formula>\n"
- " </property>\n"
- " \n"
- " <many-to-one name=\"customer\"\n"
- " column=\"customerId\"\n"
- " insert=\"false\"\n"
- " update=\"false\" \n"
- " not-null=\"true\"/>\n"
- " \n"
- " <bag name=\"lineItems\"\n"
- " fetch=\"join\" \n"
- " inverse=\"true\"\n"
- " cascade=\"save-update\">\n"
- " <key>\n"
- " <column name=\"customerId\"/>\n"
- " <column name=\"orderNumber\"/>\n"
- " </key>\n"
- " <one-to-many class=\"LineItem\"/>\n"
- " </bag>\n"
- " \n"
- "</class>\n"
- " \n"
- "<class name=\"LineItem\">\n"
- " \n"
- " <composite-id name=\"id\" \n"
- " class=\"LineItem$Id\">\n"
- " <key-property name=\"customerId\" length=\"10\"/>\n"
- " <key-property name=\"orderNumber\"/>\n"
- " <key-property name=\"productId\" length=\"10\"/>\n"
- " </composite-id>\n"
- " \n"
- " <property name=\"quantity\"/>\n"
- " \n"
- " <many-to-one name=\"order\"\n"
- " insert=\"false\"\n"
- " update=\"false\" \n"
- " not-null=\"true\">\n"
- " <column name=\"customerId\"/>\n"
- " <column name=\"orderNumber\"/>\n"
- " </many-to-one>\n"
- " \n"
- " <many-to-one name=\"product\"\n"
- " insert=\"false\"\n"
- " update=\"false\" \n"
- " not-null=\"true\"\n"
- " column=\"productId\"/>\n"
- " \n"
- "</class>\n"
- "\n"
- "<class name=\"Product\">\n"
- " <synchronize table=\"LineItem\"/>\n"
- "\n"
- " <id name=\"productId\"\n"
- " length=\"10\">\n"
- " <generator class=\"assigned\"/>\n"
- " </id>\n"
- " \n"
- " <property name=\"description\" \n"
- " not-null=\"true\" \n"
- " length=\"200\"/>\n"
- " <property name=\"price\" length=\"3\"/>\n"
- " <property name=\"numberAvailable\"/>\n"
- " \n"
- " <property name=\"numberOrdered\">\n"
- " <formula>\n"
- " ( select sum(li.quantity) \n"
- " from LineItem li \n"
- " where li.productId = productId )\n"
- " </formula>\n"
- " </property>\n"
- " \n"
- "</class>]]>"
-#: index.docbook:161
+#. Tag: title
+#: example_mappings.xml:161
+#, no-c-format
msgid "Many-to-many with shared composite key attribute"
msgstr "Muchos-a-muchos con atributo de clave compuesta compartido"
-#: index.docbook:162
+#. Tag: programlisting
+#: example_mappings.xml:162
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"User\" table=\"`User`\">\n"
- " <composite-id>\n"
- " <key-property name=\"name\"/>\n"
- " <key-property name=\"org\"/>\n"
- " </composite-id>\n"
- " <set name=\"groups\" table=\"UserGroup\">\n"
- " <key>\n"
- " <column name=\"userName\"/>\n"
- " <column name=\"org\"/>\n"
- " </key>\n"
- " <many-to-many class=\"Group\">\n"
- " <column name=\"groupName\"/>\n"
- " <formula>org</formula>\n"
- " </many-to-many>\n"
- " </set>\n"
- "</class>\n"
- " \n"
- "<class name=\"Group\" table=\"`Group`\">\n"
- " <composite-id>\n"
- " <key-property name=\"name\"/>\n"
- " <key-property name=\"org\"/>\n"
- " </composite-id>\n"
- " <property name=\"description\"/>\n"
- " <set name=\"users\" table=\"UserGroup\" inverse=\"true\">\n"
- " <key>\n"
- " <column name=\"groupName\"/>\n"
- " <column name=\"org\"/>\n"
- " </key>\n"
- " <many-to-many class=\"User\">\n"
- " <column name=\"userName\"/>\n"
- " <formula>org</formula>\n"
- " </many-to-many>\n"
- " </set>\n"
- "</class>\n"
- "]]>"
+"<![CDATA[<class name=\"User\" table=\"`User`\">\n"
+" <composite-id>\n"
+" <key-property name=\"name\"/>\n"
+" <key-property name=\"org\"/>\n"
+" </composite-id>\n"
+" <set name=\"groups\" table=\"UserGroup\">\n"
+" <key>\n"
+" <column name=\"userName\"/>\n"
+" <column name=\"org\"/>\n"
+" </key>\n"
+" <many-to-many class=\"Group\">\n"
+" <column name=\"groupName\"/>\n"
+" <formula>org</formula>\n"
+" </many-to-many>\n"
+" </set>\n"
+"</class>\n"
+" \n"
+"<class name=\"Group\" table=\"`Group`\">\n"
+" <composite-id>\n"
+" <key-property name=\"name\"/>\n"
+" <key-property name=\"org\"/>\n"
+" </composite-id>\n"
+" <property name=\"description\"/>\n"
+" <set name=\"users\" table=\"UserGroup\" inverse=\"true\">\n"
+" <key>\n"
+" <column name=\"groupName\"/>\n"
+" <column name=\"org\"/>\n"
+" </key>\n"
+" <many-to-many class=\"User\">\n"
+" <column name=\"userName\"/>\n"
+" <formula>org</formula>\n"
+" </many-to-many>\n"
+" </set>\n"
+"</class>\n"
+"]]>"
msgstr ""
- "<![CDATA[<class name=\"User\" table=\"`User`\">\n"
- " <composite-id>\n"
- " <key-property name=\"name\"/>\n"
- " <key-property name=\"org\"/>\n"
- " </composite-id>\n"
- " <set name=\"groups\" table=\"UserGroup\">\n"
- " <key>\n"
- " <column name=\"userName\"/>\n"
- " <column name=\"org\"/>\n"
- " </key>\n"
- " <many-to-many class=\"Group\">\n"
- " <column name=\"groupName\"/>\n"
- " <formula>org</formula>\n"
- " </many-to-many>\n"
- " </set>\n"
- "</class>\n"
- " \n"
- "<class name=\"Group\" table=\"`Group`\">\n"
- " <composite-id>\n"
- " <key-property name=\"name\"/>\n"
- " <key-property name=\"org\"/>\n"
- " </composite-id>\n"
- " <property name=\"description\"/>\n"
- " <set name=\"users\" table=\"UserGroup\" inverse=\"true\">\n"
- " <key>\n"
- " <column name=\"groupName\"/>\n"
- " <column name=\"org\"/>\n"
- " </key>\n"
- " <many-to-many class=\"User\">\n"
- " <column name=\"userName\"/>\n"
- " <formula>org</formula>\n"
- " </many-to-many>\n"
- " </set>\n"
- "</class>\n"
- "]]>"
-#: index.docbook:166
+#. Tag: title
+#: example_mappings.xml:166
+#, no-c-format
msgid "Content based discrimination"
-msgstr "Discriminación basada en contenido"
+msgstr "Discriminación basada en contenido"
-#: index.docbook:167
+#. Tag: programlisting
+#: example_mappings.xml:167
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\"\n"
- " discriminator-value=\"P\">\n"
- " \n"
- " <id name=\"id\" \n"
- " column=\"person_id\" \n"
- " unsaved-value=\"0\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " \n"
- " \n"
- " <discriminator \n"
- " type=\"character\">\n"
- " <formula>\n"
- " case \n"
- " when title is not null then 'E' \n"
- " when salesperson is not null then 'C' \n"
- " else 'P' \n"
- " end\n"
- " </formula>\n"
- " </discriminator>\n"
- "\n"
- " <property name=\"name\" \n"
- " not-null=\"true\"\n"
- " length=\"80\"/>\n"
- " \n"
- " <property name=\"sex\" \n"
- " not-null=\"true\"\n"
- " update=\"false\"/>\n"
- " \n"
- " <component name=\"address\">\n"
- " <property name=\"address\"/>\n"
- " <property name=\"zip\"/>\n"
- " <property name=\"country\"/>\n"
- " </component>\n"
- " \n"
- " <subclass name=\"Employee\" \n"
- " discriminator-value=\"E\">\n"
- " <property name=\"title\"\n"
- " length=\"20\"/>\n"
- " <property name=\"salary\"/>\n"
- " <many-to-one name=\"manager\"/>\n"
- " </subclass>\n"
- " \n"
- " <subclass name=\"Customer\" \n"
- " discriminator-value=\"C\">\n"
- " <property name=\"comments\"/>\n"
- " <many-to-one name=\"salesperson\"/>\n"
- " </subclass>\n"
- " \n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\"\n"
+" discriminator-value=\"P\">\n"
+" \n"
+" <id name=\"id\" \n"
+" column=\"person_id\" \n"
+" unsaved-value=\"0\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" \n"
+" \n"
+" <discriminator \n"
+" type=\"character\">\n"
+" <formula>\n"
+" case \n"
+" when title is not null then 'E' \n"
+" when salesperson is not null then 'C' \n"
+" else 'P' \n"
+" end\n"
+" </formula>\n"
+" </discriminator>\n"
+"\n"
+" <property name=\"name\" \n"
+" not-null=\"true\"\n"
+" length=\"80\"/>\n"
+" \n"
+" <property name=\"sex\" \n"
+" not-null=\"true\"\n"
+" update=\"false\"/>\n"
+" \n"
+" <component name=\"address\">\n"
+" <property name=\"address\"/>\n"
+" <property name=\"zip\"/>\n"
+" <property name=\"country\"/>\n"
+" </component>\n"
+" \n"
+" <subclass name=\"Employee\" \n"
+" discriminator-value=\"E\">\n"
+" <property name=\"title\"\n"
+" length=\"20\"/>\n"
+" <property name=\"salary\"/>\n"
+" <many-to-one name=\"manager\"/>\n"
+" </subclass>\n"
+" \n"
+" <subclass name=\"Customer\" \n"
+" discriminator-value=\"C\">\n"
+" <property name=\"comments\"/>\n"
+" <many-to-one name=\"salesperson\"/>\n"
+" </subclass>\n"
+" \n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\"\n"
- " discriminator-value=\"P\">\n"
- " \n"
- " <id name=\"id\" \n"
- " column=\"person_id\" \n"
- " unsaved-value=\"0\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " \n"
- " \n"
- " <discriminator \n"
- " type=\"character\">\n"
- " <formula>\n"
- " case \n"
- " when title is not null then 'E' \n"
- " when salesperson is not null then 'C' \n"
- " else 'P' \n"
- " end\n"
- " </formula>\n"
- " </discriminator>\n"
- "\n"
- " <property name=\"name\" \n"
- " not-null=\"true\"\n"
- " length=\"80\"/>\n"
- " \n"
- " <property name=\"sex\" \n"
- " not-null=\"true\"\n"
- " update=\"false\"/>\n"
- " \n"
- " <component name=\"address\">\n"
- " <property name=\"address\"/>\n"
- " <property name=\"zip\"/>\n"
- " <property name=\"country\"/>\n"
- " </component>\n"
- " \n"
- " <subclass name=\"Employee\" \n"
- " discriminator-value=\"E\">\n"
- " <property name=\"title\"\n"
- " length=\"20\"/>\n"
- " <property name=\"salary\"/>\n"
- " <many-to-one name=\"manager\"/>\n"
- " </subclass>\n"
- " \n"
- " <subclass name=\"Customer\" \n"
- " discriminator-value=\"C\">\n"
- " <property name=\"comments\"/>\n"
- " <many-to-one name=\"salesperson\"/>\n"
- " </subclass>\n"
- " \n"
- "</class>]]>"
-#: index.docbook:171
+#. Tag: title
+#: example_mappings.xml:171
+#, no-c-format
msgid "Associations on alternate keys"
msgstr "Asociaciones sobre claves alternativas"
-#: index.docbook:172
+#. Tag: programlisting
+#: example_mappings.xml:172
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " \n"
- " <id name=\"id\">\n"
- " <generator class=\"hilo\"/>\n"
- " </id>\n"
- " \n"
- " <property name=\"name\" length=\"100\"/>\n"
- " \n"
- " <one-to-one name=\"address\" \n"
- " property-ref=\"person\"\n"
- " cascade=\"all\"\n"
- " fetch=\"join\"/>\n"
- " \n"
- " <set name=\"accounts\" \n"
- " inverse=\"true\">\n"
- " <key column=\"userId\"\n"
- " property-ref=\"userId\"/>\n"
- " <one-to-many class=\"Account\"/>\n"
- " </set>\n"
- " \n"
- " <property name=\"userId\" length=\"8\"/>\n"
- "\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- "\n"
- " <id name=\"id\">\n"
- " <generator class=\"hilo\"/>\n"
- " </id>\n"
- "\n"
- " <property name=\"address\" length=\"300\"/>\n"
- " <property name=\"zip\" length=\"5\"/>\n"
- " <property name=\"country\" length=\"25\"/>\n"
- " <many-to-one name=\"person\" unique=\"true\" not-null=\"true\"/>\n"
- "\n"
- "</class>\n"
- "\n"
- "<class name=\"Account\">\n"
- " <id name=\"accountId\" length=\"32\">\n"
- " <generator class=\"uuid\"/>\n"
- " </id>\n"
- " \n"
- " <many-to-one name=\"user\"\n"
- " column=\"userId\"\n"
- " property-ref=\"userId\"/>\n"
- " \n"
- " <property name=\"type\" not-null=\"true\"/>\n"
- " \n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" \n"
+" <id name=\"id\">\n"
+" <generator class=\"hilo\"/>\n"
+" </id>\n"
+" \n"
+" <property name=\"name\" length=\"100\"/>\n"
+" \n"
+" <one-to-one name=\"address\" \n"
+" property-ref=\"person\"\n"
+" cascade=\"all\"\n"
+" fetch=\"join\"/>\n"
+" \n"
+" <set name=\"accounts\" \n"
+" inverse=\"true\">\n"
+" <key column=\"userId\"\n"
+" property-ref=\"userId\"/>\n"
+" <one-to-many class=\"Account\"/>\n"
+" </set>\n"
+" \n"
+" <property name=\"userId\" length=\"8\"/>\n"
+"\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+"\n"
+" <id name=\"id\">\n"
+" <generator class=\"hilo\"/>\n"
+" </id>\n"
+"\n"
+" <property name=\"address\" length=\"300\"/>\n"
+" <property name=\"zip\" length=\"5\"/>\n"
+" <property name=\"country\" length=\"25\"/>\n"
+" <many-to-one name=\"person\" unique=\"true\" not-null=\"true\"/>\n"
+"\n"
+"</class>\n"
+"\n"
+"<class name=\"Account\">\n"
+" <id name=\"accountId\" length=\"32\">\n"
+" <generator class=\"uuid\"/>\n"
+" </id>\n"
+" \n"
+" <many-to-one name=\"user\"\n"
+" column=\"userId\"\n"
+" property-ref=\"userId\"/>\n"
+" \n"
+" <property name=\"type\" not-null=\"true\"/>\n"
+" \n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " \n"
- " <id name=\"id\">\n"
- " <generator class=\"hilo\"/>\n"
- " </id>\n"
- " \n"
- " <property name=\"name\" length=\"100\"/>\n"
- " \n"
- " <one-to-one name=\"address\" \n"
- " property-ref=\"person\"\n"
- " cascade=\"all\"\n"
- " fetch=\"join\"/>\n"
- " \n"
- " <set name=\"accounts\" \n"
- " inverse=\"true\">\n"
- " <key column=\"userId\"\n"
- " property-ref=\"userId\"/>\n"
- " <one-to-many class=\"Account\"/>\n"
- " </set>\n"
- " \n"
- " <property name=\"userId\" length=\"8\"/>\n"
- "\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- "\n"
- " <id name=\"id\">\n"
- " <generator class=\"hilo\"/>\n"
- " </id>\n"
- "\n"
- " <property name=\"address\" length=\"300\"/>\n"
- " <property name=\"zip\" length=\"5\"/>\n"
- " <property name=\"country\" length=\"25\"/>\n"
- " <many-to-one name=\"person\" unique=\"true\" not-null=\"true\"/>\n"
- "\n"
- "</class>\n"
- "\n"
- "<class name=\"Account\">\n"
- " <id name=\"accountId\" length=\"32\">\n"
- " <generator class=\"uuid.hex\"/>\n"
- " </id>\n"
- " \n"
- " <many-to-one name=\"user\"\n"
- " column=\"userId\"\n"
- " property-ref=\"userId\"/>\n"
- " \n"
- " <property name=\"type\" not-null=\"true\"/>\n"
- " \n"
- "</class>]]>"
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
Modified: core/trunk/documentation/manual/translations/es-ES/content/example_parentchild.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/example_parentchild.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/example_parentchild.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,350 +1,609 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: example_parentchild.xml:5
+#, no-c-format
msgid "Example: Parent/Child"
msgstr "Ejemplo: Padre/Hijo"
-#: index.docbook:7
-msgid "One of the very first things that new users try to do with Hibernate is to model a parent / child type relationship. There are two different approaches to this. For various reasons the most convenient approach, especially for new users, is to model both <literal>Parent</literal> and <literal>Child</literal> as entity classes with a <literal><one-to-many></literal> association from <literal>Parent</literal> to <literal>Child</literal>. (The alternative approach is to declare the <literal>Child</literal> as a <literal><composite-element></literal>.) Now, it turns out that default semantics of a one to many association (in Hibernate) are much less close to the usual semantics of a parent / child relationship than those of a composite element mapping. We will explain how to use a <emphasis>bidirectional one to many association with cascades</emphasis> to model a parent / child relationship efficiently and elegantly. It's not at all difficult!"
-msgstr "Una de las primerísimas cosas que los usuarios nuevos intentan hacer con Hibernate es modelar una relación de tipo padre / hijo. Para esto hay dos enfoques diferentes. Por varias razones, el enfoque más conveniente, especialmente para usuarios nuevos, es modelar tanto <literal>Parent</literal> como <literal>Child</literal> como clases de entidad con una asociación <literal><one-to-many></literal> desde <literal>Parent</literal> a <literal>Child</literal>. (El enfoque alternativo es declarar el <literal>Child</literal> como un <literal><composite-element></literal>.) Ahora, resulta que la semántica por defecto de una asociación uno a muchos (en Hibernate) es mucho menos cercana a la semántica usual de una relación padre / hijo que aquellas de un mapeo de elementos compuestos. Explicaremos cómo usar una <emphasis>asociación uno a muchos bidireccional con tratamiento en cascada</emphasis>!
para modelar una relación padre / hijo eficiente y elegantemente. ¡No es para nada difícil!"
+#. Tag: para
+#: example_parentchild.xml:7
+#, no-c-format
+msgid ""
+"One of the very first things that new users try to do with Hibernate is to "
+"model a parent / child type relationship. There are two different approaches "
+"to this. For various reasons the most convenient approach, especially for "
+"new users, is to model both <literal>Parent</literal> and <literal>Child</"
+"literal> as entity classes with a <literal><one-to-many></literal> "
+"association from <literal>Parent</literal> to <literal>Child</literal>. (The "
+"alternative approach is to declare the <literal>Child</literal> as a "
+"<literal><composite-element></literal>.) Now, it turns out that "
+"default semantics of a one to many association (in Hibernate) are much less "
+"close to the usual semantics of a parent / child relationship than those of "
+"a composite element mapping. We will explain how to use a "
+"<emphasis>bidirectional one to many association with cascades</emphasis> to "
+"model a parent / child relationship efficiently and elegantly. It's not at "
+"all difficult!"
+msgstr ""
+"Una de las primerísimas cosas que los usuarios nuevos intentan hacer con "
+"Hibernate es modelar una relación de tipo padre / hijo. Para esto hay dos "
+"enfoques diferentes. Por varias razones, el enfoque más conveniente, "
+"especialmente para usuarios nuevos, es modelar tanto <literal>Parent</"
+"literal> como <literal>Child</literal> como clases de entidad con una "
+"asociación <literal><one-to-many></literal> desde <literal>Parent</"
+"literal> a <literal>Child</literal>. (El enfoque alternativo es declarar el "
+"<literal>Child</literal> como un <literal><composite-element></"
+"literal>.) Ahora, resulta que la semántica por defecto de una asociación uno "
+"a muchos (en Hibernate) es mucho menos cercana a la semántica usual de una "
+"relación padre / hijo que aquellas de un mapeo de elementos compuestos. "
+"Explicaremos cómo usar una <emphasis>asociación uno a muchos bidireccional "
+"con tratamiento en cascada</emphasis> para modelar una relación padre / hijo "
+"eficiente y elegantemente. ¡No es para nada difícil!"
-#: index.docbook:21
+#. Tag: title
+#: example_parentchild.xml:21
+#, no-c-format
msgid "A note about collections"
msgstr "Una nota sobre las colecciones"
-#: index.docbook:23
-msgid "Hibernate collections are considered to be a logical part of their owning entity; never of the contained entities. This is a crucial distinction! It has the following consequences:"
-msgstr "Se considera que las colecciones de Hibernate son una parte lógica de la entidad que las posee; nunca de las entidades contenidas. ¡Esta es una distinción crucial! Esto tiene las siguientes consecuencias:"
+#. Tag: para
+#: example_parentchild.xml:23
+#, no-c-format
+msgid ""
+"Hibernate collections are considered to be a logical part of their owning "
+"entity; never of the contained entities. This is a crucial distinction! It "
+"has the following consequences:"
+msgstr ""
+"Se considera que las colecciones de Hibernate son una parte lógica de la "
+"entidad que las posee; nunca de las entidades contenidas. ¡Esta es una "
+"distinción crucial! Esto tiene las siguientes consecuencias:"
-#: index.docbook:30
-msgid "When we remove / add an object from / to a collection, the version number of the collection owner is incremented."
-msgstr "Cuando se quita / añade un objeto desde / a una colección, se incrementa el número de versión del dueño de la colección."
+#. Tag: para
+#: example_parentchild.xml:30
+#, no-c-format
+msgid ""
+"When we remove / add an object from / to a collection, the version number of "
+"the collection owner is incremented."
+msgstr ""
+"Cuando se quita / añade un objeto desde / a una colección, se incrementa el "
+"número de versión del dueño de la colección."
-#: index.docbook:36
-msgid "If an object that was removed from a collection is an instance of a value type (eg, a composite element), that object will cease to be persistent and its state will be completely removed from the database. Likewise, adding a value type instance to the collection will cause its state to be immediately persistent."
-msgstr "Si un objeto que fue quitado de una colección es una instancia de un tipo de valor (por ejemplo, un elemento compuesto), ese objeta cesará de ser persistente y su estado será completamente quitado de la base de datos. Asimismo, añadir una instancia de tipo de valor a la colección causará que su estado sea inmediatamente persistente."
+#. Tag: para
+#: example_parentchild.xml:36
+#, no-c-format
+msgid ""
+"If an object that was removed from a collection is an instance of a value "
+"type (eg, a composite element), that object will cease to be persistent and "
+"its state will be completely removed from the database. Likewise, adding a "
+"value type instance to the collection will cause its state to be immediately "
+"persistent."
+msgstr ""
+"Si un objeto que fue quitado de una colección es una instancia de un tipo de "
+"valor (por ejemplo, un elemento compuesto), ese objeta cesará de ser "
+"persistente y su estado será completamente quitado de la base de datos. "
+"Asimismo, añadir una instancia de tipo de valor a la colección causará que "
+"su estado sea inmediatamente persistente."
-#: index.docbook:44
-msgid "On the other hand, if an entity is removed from a collection (a one-to-many or many-to-many association), it will not be deleted, by default. This behaviour is completely consistent - a change to the internal state of another entity should not cause the associated entity to vanish! Likewise, adding an entity to a collection does not cause that entity to become persistent, by default."
-msgstr "Por otro lado, si se quita una entidad de una colección (una asociación uno-a-muchos o muchos-a-muchos), no será borrado, por defecto. Este comportamiento es completamente consistente. ¡Un cambio en el estado interno de otra entidad no hace desaparecer la entidad asociada! Asimismo, añadir una entidad a una colección no causa que la entidad se vuelva persistente, por defecto."
+#. Tag: para
+#: example_parentchild.xml:44
+#, no-c-format
+msgid ""
+"On the other hand, if an entity is removed from a collection (a one-to-many "
+"or many-to-many association), it will not be deleted, by default. This "
+"behaviour is completely consistent - a change to the internal state of "
+"another entity should not cause the associated entity to vanish! Likewise, "
+"adding an entity to a collection does not cause that entity to become "
+"persistent, by default."
+msgstr ""
+"Por otro lado, si se quita una entidad de una colección (una asociación uno-"
+"a-muchos o muchos-a-muchos), no será borrado, por defecto. Este "
+"comportamiento es completamente consistente. ¡Un cambio en el estado interno "
+"de otra entidad no hace desaparecer la entidad asociada! Asimismo, añadir "
+"una entidad a una colección no causa que la entidad se vuelva persistente, "
+"por defecto."
-#: index.docbook:54
-msgid "Instead, the default behaviour is that adding an entity to a collection merely creates a link between the two entities, while removing it removes the link. This is very appropriate for all sorts of cases. Where it is not appropriate at all is the case of a parent / child relationship, where the life of the child is bound to the life cycle of the parent."
-msgstr "En cambio, el comportamiento por defecto es que al añadir una entidad a una colección se crea meramente un enlace entre las dos entidades, mientras que al quitarla se quita el enlace. Esto es muy apropiado para todos los tipos de casos. Donde no es para nada apropiado es en el caso de una relación padre / hijo. donde la vida del hijo está ligada al ciclo de vida del padre."
+#. Tag: para
+#: example_parentchild.xml:54
+#, no-c-format
+msgid ""
+"Instead, the default behaviour is that adding an entity to a collection "
+"merely creates a link between the two entities, while removing it removes "
+"the link. This is very appropriate for all sorts of cases. Where it is not "
+"appropriate at all is the case of a parent / child relationship, where the "
+"life of the child is bound to the life cycle of the parent."
+msgstr ""
+"En cambio, el comportamiento por defecto es que al añadir una entidad a una "
+"colección se crea meramente un enlace entre las dos entidades, mientras que "
+"al quitarla se quita el enlace. Esto es muy apropiado para todos los tipos "
+"de casos. Donde no es para nada apropiado es en el caso de una relación "
+"padre / hijo. donde la vida del hijo está ligada al ciclo de vida del padre."
-#: index.docbook:64
+#. Tag: title
+#: example_parentchild.xml:64
+#, no-c-format
msgid "Bidirectional one-to-many"
msgstr "Uno-a-muchos bidirectional"
-#: index.docbook:66
-msgid "Suppose we start with a simple <literal><one-to-many></literal> association from <literal>Parent</literal> to <literal>Child</literal>."
-msgstr "Supón que empezamos con una asociación simple <literal><one-to-many></literal> desde <literal>Parent</literal> a <literal>Child</literal>."
+#. Tag: para
+#: example_parentchild.xml:66
+#, no-c-format
+msgid ""
+"Suppose we start with a simple <literal><one-to-many></literal> "
+"association from <literal>Parent</literal> to <literal>Child</literal>."
+msgstr ""
+"Supón que empezamos con una asociación simple <literal><one-to-many></"
+"literal> desde <literal>Parent</literal> a <literal>Child</literal>."
-#: index.docbook:71
+#. Tag: programlisting
+#: example_parentchild.xml:71
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"children\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"children\">\n"
+" <key column=\"parent_id\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"children\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
-#: index.docbook:73
+#. Tag: para
+#: example_parentchild.xml:73
+#, no-c-format
msgid "If we were to execute the following code"
-msgstr "Si ejecutásemos el siguiente código"
+msgstr "Si ejecutásemos el siguiente código"
-#: index.docbook:77
+#. Tag: programlisting
+#: example_parentchild.xml:77
+#, no-c-format
msgid ""
- "<![CDATA[Parent p = .....;\n"
- "Child c = new Child();\n"
- "p.getChildren().add(c);\n"
- "session.save(c);\n"
- "session.flush();]]>"
+"<![CDATA[Parent p = .....;\n"
+"Child c = new Child();\n"
+"p.getChildren().add(c);\n"
+"session.save(c);\n"
+"session.flush();]]>"
msgstr ""
- "<![CDATA[Parent p = .....;\n"
- "Child c = new Child();\n"
- "p.getChildren().add(c);\n"
- "session.save(c);\n"
- "session.flush();]]>"
-#: index.docbook:79
+#. Tag: para
+#: example_parentchild.xml:79
+#, no-c-format
msgid "Hibernate would issue two SQL statements:"
-msgstr "Hibernate publicaría dos sentencias SQL:"
+msgstr "Hibernate publicaría dos sentencias SQL:"
-#: index.docbook:85
-msgid "an <literal>INSERT</literal> to create the record for <literal>c</literal>"
-msgstr "un <literal>INSERT</literal> para crear el registro de <literal>c</literal>"
+#. Tag: para
+#: example_parentchild.xml:85
+#, no-c-format
+msgid ""
+"an <literal>INSERT</literal> to create the record for <literal>c</literal>"
+msgstr ""
+"un <literal>INSERT</literal> para crear el registro de <literal>c</literal>"
-#: index.docbook:88
-msgid "an <literal>UPDATE</literal> to create the link from <literal>p</literal> to <literal>c</literal>"
-msgstr "un <literal>UPDATE</literal> para crear el enlace desde <literal>p</literal> a <literal>c</literal>"
+#. Tag: para
+#: example_parentchild.xml:88
+#, no-c-format
+msgid ""
+"an <literal>UPDATE</literal> to create the link from <literal>p</literal> to "
+"<literal>c</literal>"
+msgstr ""
+"un <literal>UPDATE</literal> para crear el enlace desde <literal>p</literal> "
+"a <literal>c</literal>"
-#: index.docbook:95
-msgid "This is not only inefficient, but also violates any <literal>NOT NULL</literal> constraint on the <literal>parent_id</literal> column. We can fix the nullability constraint violation by specifying <literal>not-null=\"true\"</literal> in the collection mapping:"
-msgstr "Esto no es sólo ineficiente, sino que además viola cualquier restricción <literal>NOT NULL</literal> en la columna <literal>parent_id</literal>. Podemos reparar la violación de restricción de nulabilidad especificando <literal>not-null=\"true\"</literal> en el mapeo de la colección:"
+#. Tag: para
+#: example_parentchild.xml:95
+#, no-c-format
+msgid ""
+"This is not only inefficient, but also violates any <literal>NOT NULL</"
+"literal> constraint on the <literal>parent_id</literal> column. We can fix "
+"the nullability constraint violation by specifying <literal>not-null=\"true"
+"\"</literal> in the collection mapping:"
+msgstr ""
+"Esto no es sólo ineficiente, sino que además viola cualquier restricción "
+"<literal>NOT NULL</literal> en la columna <literal>parent_id</literal>. "
+"Podemos reparar la violación de restricción de nulabilidad especificando "
+"<literal>not-null=\"true\"</literal> en el mapeo de la colección:"
-#: index.docbook:101
+#. Tag: programlisting
+#: example_parentchild.xml:101
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"children\">\n"
- " <key column=\"parent_id\" not-null=\"true\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"children\">\n"
+" <key column=\"parent_id\" not-null=\"true\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"children\">\n"
- " <key column=\"parent_id\" not-null=\"true\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
-#: index.docbook:103
+#. Tag: para
+#: example_parentchild.xml:103
+#, no-c-format
msgid "However, this is not the recommended solution."
-msgstr "Sin embargo, esta no es la solución recomendada."
+msgstr "Sin embargo, esta no es la solución recomendada."
-#: index.docbook:106
-msgid "The underlying cause of this behaviour is that the link (the foreign key <literal>parent_id</literal>) from <literal>p</literal> to <literal>c</literal> is not considered part of the state of the <literal>Child</literal> object and is therefore not created in the <literal>INSERT</literal>. So the solution is to make the link part of the <literal>Child</literal> mapping."
-msgstr "El caso subyacente de este comportamiento es que el enlace (la clave foránea <literal>parent_id</literal>) de <literal>p</literal> a <literal>c</literal> no es considerado parte del estado del objeto <literal>Child</literal> y por lo tanto no es creada en el <literal>INSERT</literal>. De modo que la solución es hacer el enlace parte del mapeo del <literal>Child</literal>."
+#. Tag: para
+#: example_parentchild.xml:106
+#, no-c-format
+msgid ""
+"The underlying cause of this behaviour is that the link (the foreign key "
+"<literal>parent_id</literal>) from <literal>p</literal> to <literal>c</"
+"literal> is not considered part of the state of the <literal>Child</literal> "
+"object and is therefore not created in the <literal>INSERT</literal>. So the "
+"solution is to make the link part of the <literal>Child</literal> mapping."
+msgstr ""
+"El caso subyacente de este comportamiento es que el enlace (la clave foránea "
+"<literal>parent_id</literal>) de <literal>p</literal> a <literal>c</literal> "
+"no es considerado parte del estado del objeto <literal>Child</literal> y por "
+"lo tanto no es creada en el <literal>INSERT</literal>. De modo que la "
+"solución es hacer el enlace parte del mapeo del <literal>Child</literal>."
-#: index.docbook:113
-msgid "<![CDATA[<many-to-one name=\"parent\" column=\"parent_id\" not-null=\"true\"/>]]>"
-msgstr "<![CDATA[<many-to-one name=\"parent\" column=\"parent_id\" not-null=\"true\"/>]]>"
+#. Tag: programlisting
+#: example_parentchild.xml:113
+#, no-c-format
+msgid ""
+"<![CDATA[<many-to-one name=\"parent\" column=\"parent_id\" not-null=\"true\"/"
+">]]>"
+msgstr ""
-#: index.docbook:115
-msgid "(We also need to add the <literal>parent</literal> property to the <literal>Child</literal> class.)"
-msgstr "(Necesitamos además añadir la propiedad <literal>parent</literal> a la clase <literal>Child</literal>.)"
+#. Tag: para
+#: example_parentchild.xml:115
+#, no-c-format
+msgid ""
+"(We also need to add the <literal>parent</literal> property to the "
+"<literal>Child</literal> class.)"
+msgstr ""
+"(Necesitamos además añadir la propiedad <literal>parent</literal> a la clase "
+"<literal>Child</literal>.)"
-#: index.docbook:119
-msgid "Now that the <literal>Child</literal> entity is managing the state of the link, we tell the collection not to update the link. We use the <literal>inverse</literal> attribute."
-msgstr "Ahora que la entidad <literal>Child</literal> está gestionando el estado del enlace, le decimos a la colección que no actualice el enlace. Usamos el atributo <literal>inverse</literal>."
+#. Tag: para
+#: example_parentchild.xml:119
+#, no-c-format
+msgid ""
+"Now that the <literal>Child</literal> entity is managing the state of the "
+"link, we tell the collection not to update the link. We use the "
+"<literal>inverse</literal> attribute."
+msgstr ""
+"Ahora que la entidad <literal>Child</literal> está gestionando el estado del "
+"enlace, le decimos a la colección que no actualice el enlace. Usamos el "
+"atributo <literal>inverse</literal>."
-#: index.docbook:124
+#. Tag: programlisting
+#: example_parentchild.xml:124
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"children\" inverse=\"true\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"children\" inverse=\"true\">\n"
+" <key column=\"parent_id\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"children\" inverse=\"true\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
-#: index.docbook:126
+#. Tag: para
+#: example_parentchild.xml:126
+#, no-c-format
msgid "The following code would be used to add a new <literal>Child</literal>"
-msgstr "El siguiente código podría ser usado para añadir un nuevo <literal>Child</literal>"
+msgstr ""
+"El siguiente código podría ser usado para añadir un nuevo <literal>Child</"
+"literal>"
-#: index.docbook:130
+#. Tag: programlisting
+#: example_parentchild.xml:130
+#, no-c-format
msgid ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = new Child();\n"
- "c.setParent(p);\n"
- "p.getChildren().add(c);\n"
- "session.save(c);\n"
- "session.flush();]]>"
+"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+"Child c = new Child();\n"
+"c.setParent(p);\n"
+"p.getChildren().add(c);\n"
+"session.save(c);\n"
+"session.flush();]]>"
msgstr ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = new Child();\n"
- "c.setParent(p);\n"
- "p.getChildren().add(c);\n"
- "session.save(c);\n"
- "session.flush();]]>"
-#: index.docbook:132
+#. Tag: para
+#: example_parentchild.xml:132
+#, no-c-format
msgid "And now, only one SQL <literal>INSERT</literal> would be issued!"
-msgstr "Y ahora, ¡Sólo se publicaría un <literal>INSERT</literal> de SQL!"
+msgstr "Y ahora, ¡Sólo se publicaría un <literal>INSERT</literal> de SQL!"
-#: index.docbook:136
-msgid "To tighten things up a bit, we could create an <literal>addChild()</literal> method of <literal>Parent</literal>."
-msgstr "Para ajustar un poco más las cosas, podríamos crear un método <literal>addChild()</literal> en <literal>Parent</literal>."
+#. Tag: para
+#: example_parentchild.xml:136
+#, no-c-format
+msgid ""
+"To tighten things up a bit, we could create an <literal>addChild()</literal> "
+"method of <literal>Parent</literal>."
+msgstr ""
+"Para ajustar un poco más las cosas, podríamos crear un método "
+"<literal>addChild()</literal> en <literal>Parent</literal>."
-#: index.docbook:141
+#. Tag: programlisting
+#: example_parentchild.xml:141
+#, no-c-format
msgid ""
- "<![CDATA[public void addChild(Child c) {\n"
- " c.setParent(this);\n"
- " children.add(c);\n"
- "}]]>"
+"<![CDATA[public void addChild(Child c) {\n"
+" c.setParent(this);\n"
+" children.add(c);\n"
+"}]]>"
msgstr ""
- "<![CDATA[public void addChild(Child c) {\n"
- " c.setParent(this);\n"
- " children.add(c);\n"
- "}]]>"
-#: index.docbook:143
+#. Tag: para
+#: example_parentchild.xml:143
+#, no-c-format
msgid "Now, the code to add a <literal>Child</literal> looks like"
-msgstr "Ahora, el código para añadir un <literal>Child</literal> se ve así"
+msgstr "Ahora, el código para añadir un <literal>Child</literal> se ve así"
-#: index.docbook:147
+#. Tag: programlisting
+#: example_parentchild.xml:147
+#, no-c-format
msgid ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = new Child();\n"
- "p.addChild(c);\n"
- "session.save(c);\n"
- "session.flush();]]>"
+"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+"Child c = new Child();\n"
+"p.addChild(c);\n"
+"session.save(c);\n"
+"session.flush();]]>"
msgstr ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = new Child();\n"
- "p.addChild(c);\n"
- "session.save(c);\n"
- "session.flush();]]>"
-#: index.docbook:152
+#. Tag: title
+#: example_parentchild.xml:152
+#, no-c-format
msgid "Cascading life cycle"
msgstr "Ciclo de vida en cascada"
-#: index.docbook:154
-msgid "The explicit call to <literal>save()</literal> is still annoying. We will address this by using cascades."
-msgstr "La llamada explícita a <literal>save()</literal> es aún molesta. Apuntaremos a esto usando tratamientos en cascada."
+#. Tag: para
+#: example_parentchild.xml:154
+#, no-c-format
+msgid ""
+"The explicit call to <literal>save()</literal> is still annoying. We will "
+"address this by using cascades."
+msgstr ""
+"La llamada explícita a <literal>save()</literal> es aún molesta. Apuntaremos "
+"a esto usando tratamientos en cascada."
-#: index.docbook:159
+#. Tag: programlisting
+#: example_parentchild.xml:159
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all\">\n"
+" <key column=\"parent_id\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
-#: index.docbook:161
+#. Tag: para
+#: example_parentchild.xml:161
+#, no-c-format
msgid "This simplifies the code above to"
-msgstr "Esto simplifica el código anterior a"
+msgstr "Esto simplifica el código anterior a"
-#: index.docbook:165
+#. Tag: programlisting
+#: example_parentchild.xml:165
+#, no-c-format
msgid ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = new Child();\n"
- "p.addChild(c);\n"
- "session.flush();]]>"
+"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+"Child c = new Child();\n"
+"p.addChild(c);\n"
+"session.flush();]]>"
msgstr ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = new Child();\n"
- "p.addChild(c);\n"
- "session.flush();]]>"
-#: index.docbook:167
-msgid "Similarly, we don't need to iterate over the children when saving or deleting a <literal>Parent</literal>. The following removes <literal>p</literal> and all its children from the database."
-msgstr "Similarmente, no necesitamos iterar los hijos al salvar o borrar un <literal>Parent</literal>. Lo siguiente quita <literal>p</literal> y todos sus hijos de la base de datos."
+#. Tag: para
+#: example_parentchild.xml:167
+#, no-c-format
+msgid ""
+"Similarly, we don't need to iterate over the children when saving or "
+"deleting a <literal>Parent</literal>. The following removes <literal>p</"
+"literal> and all its children from the database."
+msgstr ""
+"Similarmente, no necesitamos iterar los hijos al salvar o borrar un "
+"<literal>Parent</literal>. Lo siguiente quita <literal>p</literal> y todos "
+"sus hijos de la base de datos."
-#: index.docbook:172
+#. Tag: programlisting
+#: example_parentchild.xml:172
+#, no-c-format
msgid ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "session.delete(p);\n"
- "session.flush();]]>"
+"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+"session.delete(p);\n"
+"session.flush();]]>"
msgstr ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "session.delete(p);\n"
- "session.flush();]]>"
-#: index.docbook:174
+#. Tag: para
+#: example_parentchild.xml:174
+#, no-c-format
msgid "However, this code"
-msgstr "Sin embargo, este código"
+msgstr "Sin embargo, este código"
-#: index.docbook:178
+#. Tag: programlisting
+#: example_parentchild.xml:178
+#, no-c-format
msgid ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = (Child) p.getChildren().iterator().next();\n"
- "p.getChildren().remove(c);\n"
- "c.setParent(null);\n"
- "session.flush();]]>"
+"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+"Child c = (Child) p.getChildren().iterator().next();\n"
+"p.getChildren().remove(c);\n"
+"c.setParent(null);\n"
+"session.flush();]]>"
msgstr ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = (Child) p.getChildren().iterator().next();\n"
- "p.getChildren().remove(c);\n"
- "c.setParent(null);\n"
- "session.flush();]]>"
-#: index.docbook:180
-msgid "will not remove <literal>c</literal> from the database; it will ony remove the link to <literal>p</literal> (and cause a <literal>NOT NULL</literal> constraint violation, in this case). You need to explicitly <literal>delete()</literal> the <literal>Child</literal>."
-msgstr "no quitará <literal>c</literal> de la base de datos; sólo quitará el enlace a <literal>p</literal> (y causará una violación a una restricción <literal>NOT NULL</literal>). Necesitas borrar el hijo explícitamente llamando a <literal>delete()</literal>."
+#. Tag: para
+#: example_parentchild.xml:180
+#, no-c-format
+msgid ""
+"will not remove <literal>c</literal> from the database; it will ony remove "
+"the link to <literal>p</literal> (and cause a <literal>NOT NULL</literal> "
+"constraint violation, in this case). You need to explicitly <literal>delete()"
+"</literal> the <literal>Child</literal>."
+msgstr ""
+"no quitará <literal>c</literal> de la base de datos; sólo quitará el enlace "
+"a <literal>p</literal> (y causará una violación a una restricción "
+"<literal>NOT NULL</literal>). Necesitas borrar el hijo explícitamente "
+"llamando a <literal>delete()</literal>."
-#: index.docbook:186
+#. Tag: programlisting
+#: example_parentchild.xml:186
+#, no-c-format
msgid ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = (Child) p.getChildren().iterator().next();\n"
- "p.getChildren().remove(c);\n"
- "session.delete(c);\n"
- "session.flush();]]>"
+"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+"Child c = (Child) p.getChildren().iterator().next();\n"
+"p.getChildren().remove(c);\n"
+"session.delete(c);\n"
+"session.flush();]]>"
msgstr ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = (Child) p.getChildren().iterator().next();\n"
- "p.getChildren().remove(c);\n"
- "session.delete(c);\n"
- "session.flush();]]>"
-#: index.docbook:188
-msgid "Now, in our case, a <literal>Child</literal> can't really exist without its parent. So if we remove a <literal>Child</literal> from the collection, we really do want it to be deleted. For this, we must use <literal>cascade=\"all-delete-orphan\"</literal>."
-msgstr "Ahora, en nuestro caso, un <literal>Child</literal> no puede existir realmente sin su padre. De modo que si quitamos un <literal>Child</literal> de la colección, realmente queremos que sea borrado. Para esto, debemos usar <literal>cascade=\"all-delete-orphan\"</literal>."
+#. Tag: para
+#: example_parentchild.xml:188
+#, no-c-format
+msgid ""
+"Now, in our case, a <literal>Child</literal> can't really exist without its "
+"parent. So if we remove a <literal>Child</literal> from the collection, we "
+"really do want it to be deleted. For this, we must use <literal>cascade="
+"\"all-delete-orphan\"</literal>."
+msgstr ""
+"Ahora, en nuestro caso, un <literal>Child</literal> no puede existir "
+"realmente sin su padre. De modo que si quitamos un <literal>Child</literal> "
+"de la colección, realmente queremos que sea borrado. Para esto, debemos usar "
+"<literal>cascade=\"all-delete-orphan\"</literal>."
-#: index.docbook:194
+#. Tag: programlisting
+#: example_parentchild.xml:194
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all-delete-orphan\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all-delete-orphan"
+"\">\n"
+" <key column=\"parent_id\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all-delete-orphan\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
-#: index.docbook:196
-msgid "Note: even though the collection mapping specifies <literal>inverse=\"true\"</literal>, cascades are still processed by iterating the collection elements. So if you require that an object be saved, deleted or updated by cascade, you must add it to the collection. It is not enough to simply call <literal>setParent()</literal>."
-msgstr "Nota: aunque el mapeo de la colección especifique <literal>inverse=\"true\"</literal>, el tratamiento en cascada se procesa aún al iterar los elementos de colección. De modo que si requieres que un objeto sea salvado, borrado o actualizado en cascada, debes añadirlo a la colección. No es suficiente con simplemente llamar a <literal>setParent()</literal>."
+#. Tag: para
+#: example_parentchild.xml:196
+#, no-c-format
+msgid ""
+"Note: even though the collection mapping specifies <literal>inverse=\"true"
+"\"</literal>, cascades are still processed by iterating the collection "
+"elements. So if you require that an object be saved, deleted or updated by "
+"cascade, you must add it to the collection. It is not enough to simply call "
+"<literal>setParent()</literal>."
+msgstr ""
+"Nota: aunque el mapeo de la colección especifique <literal>inverse=\"true\"</"
+"literal>, el tratamiento en cascada se procesa aún al iterar los elementos "
+"de colección. De modo que si requieres que un objeto sea salvado, borrado o "
+"actualizado en cascada, debes añadirlo a la colección. No es suficiente con "
+"simplemente llamar a <literal>setParent()</literal>."
-#: index.docbook:206
+#. Tag: title
+#: example_parentchild.xml:206
+#, no-c-format
msgid "Cascades and <literal>unsaved-value</literal>"
msgstr "Tratamiento en cascada y <literal>unsaved-value</literal>"
-#: index.docbook:208
-msgid "Suppose we loaded up a <literal>Parent</literal> in one <literal>Session</literal>, made some changes in a UI action and wish to persist these changes in a new session by calling <literal>update()</literal>. The <literal>Parent</literal> will contain a collection of childen and, since cascading update is enabled, Hibernate needs to know which children are newly instantiated and which represent existing rows in the database. Lets assume that both <literal>Parent</literal> and <literal>Child</literal> have genenerated identifier properties of type <literal>Long</literal>. Hibernate will use the identifier and version/timestamp property value to determine which of the children are new. (See <xref linkend=\"objectstate-saveorupdate\"/>.) <emphasis>In Hibernate3, it is no longer necessary to specify an <literal>unsaved-value</literal> explicitly.</emphasis>"
-msgstr "Supón que hemos cargado un <literal>Parent</literal> en una <literal>Session</literal>, hemos hecho algunos cambios en una acción de UI y deseamos hacer persistentes estos cambios en una nueva sesión llamando a <literal>update()</literal>. El <literal>Parent</literal> contendrá una colección de hijos y, ya que está habilitado el tratamiento en cascada, Hibernate necesita saber qué hijos están recién instanciados y cuáles representan filas existentes en la base de datos. Asumamos que tanto <literal>Parent</literal> como <literal>Child</literal> tienen propiedades identificadoras generadas de tipo <literal>Long</literal>. Hibernate usará el identificador y el valor de la propiedad de versión/timestamp para determinar cuáles de los hijos son nuevos. (Ver <xref linkend=\"objectstate-saveorupdate\"/>.) <emphasis>En Hibernate3, no es más necesario especificar un <literal>unsa!
ved-value</literal> explícitamente.</emphasis>"
+#. Tag: para
+#: example_parentchild.xml:208
+#, no-c-format
+msgid ""
+"Suppose we loaded up a <literal>Parent</literal> in one <literal>Session</"
+"literal>, made some changes in a UI action and wish to persist these changes "
+"in a new session by calling <literal>update()</literal>. The "
+"<literal>Parent</literal> will contain a collection of childen and, since "
+"cascading update is enabled, Hibernate needs to know which children are "
+"newly instantiated and which represent existing rows in the database. Lets "
+"assume that both <literal>Parent</literal> and <literal>Child</literal> have "
+"genenerated identifier properties of type <literal>Long</literal>. Hibernate "
+"will use the identifier and version/timestamp property value to determine "
+"which of the children are new. (See <xref linkend=\"objectstate-saveorupdate"
+"\"/>.) <emphasis>In Hibernate3, it is no longer necessary to specify an "
+"<literal>unsaved-value</literal> explicitly.</emphasis>"
+msgstr ""
+"Supón que hemos cargado un <literal>Parent</literal> en una "
+"<literal>Session</literal>, hemos hecho algunos cambios en una acción de UI "
+"y deseamos hacer persistentes estos cambios en una nueva sesión llamando a "
+"<literal>update()</literal>. El <literal>Parent</literal> contendrá una "
+"colección de hijos y, ya que está habilitado el tratamiento en cascada, "
+"Hibernate necesita saber qué hijos están recién instanciados y cuáles "
+"representan filas existentes en la base de datos. Asumamos que tanto "
+"<literal>Parent</literal> como <literal>Child</literal> tienen propiedades "
+"identificadoras generadas de tipo <literal>Long</literal>. Hibernate usará "
+"el identificador y el valor de la propiedad de versión/timestamp para "
+"determinar cuáles de los hijos son nuevos. (Ver <xref linkend=\"objectstate-"
+"saveorupdate\"/>.) <emphasis>En Hibernate3, no es más necesario especificar "
+"un <literal>unsaved-value</literal> explícitamente.</emphasis>"
-#: index.docbook:220
-msgid "The following code will update <literal>parent</literal> and <literal>child</literal> and insert <literal>newChild</literal>."
-msgstr "The following code will update <literal>parent</literal> and <literal>child</literal> and insert <literal>newChild</literal>."
+#. Tag: para
+#: example_parentchild.xml:220
+#, no-c-format
+msgid ""
+"The following code will update <literal>parent</literal> and <literal>child</"
+"literal> and insert <literal>newChild</literal>."
+msgstr ""
+"The following code will update <literal>parent</literal> and <literal>child</"
+"literal> and insert <literal>newChild</literal>."
-#: index.docbook:225
+#. Tag: programlisting
+#: example_parentchild.xml:225
+#, no-c-format
msgid ""
- "<![CDATA[//parent and child were both loaded in a previous session\n"
- "parent.addChild(child);\n"
- "Child newChild = new Child();\n"
- "parent.addChild(newChild);\n"
- "session.update(parent);\n"
- "session.flush();]]>"
+"<![CDATA[//parent and child were both loaded in a previous session\n"
+"parent.addChild(child);\n"
+"Child newChild = new Child();\n"
+"parent.addChild(newChild);\n"
+"session.update(parent);\n"
+"session.flush();]]>"
msgstr ""
- "<![CDATA[//parent and child were both loaded in a previous session\n"
- "parent.addChild(child);\n"
- "Child newChild = new Child();\n"
- "parent.addChild(newChild);\n"
- "session.update(parent);\n"
- "session.flush();]]>"
-#: index.docbook:227
-msgid "Well, that's all very well for the case of a generated identifier, but what about assigned identifiers and composite identifiers? This is more difficult, since Hibernate can't use the identifier property to distinguish between a newly instantiated object (with an identifier assigned by the user) and an object loaded in a previous session. In this case, Hibernate will either use the timestamp or version property, or will actually query the second-level cache or, worst case, the database, to see if the row exists."
-msgstr "Bueno, todo eso está muy bien para el caso de un identificador generado, pero ¿qué de los identificadores asignados y de los identificadores compuestos? Esto es más difícil, ya que Hibernate no puede usar la propiedad identificadora para distinguir entre un objeto recién instanciado (con un identificador asignado por el usuario) y un objeto cargado en una sesión previa. En este caso, Hibernate bien usará la propiedad de versión o timestamp, o bien consultará realmente el caché de segundo nivel, o bien, en el peor de los casos, la base de datos, para ver si existe la fila."
+#. Tag: para
+#: example_parentchild.xml:227
+#, no-c-format
+msgid ""
+"Well, that's all very well for the case of a generated identifier, but what "
+"about assigned identifiers and composite identifiers? This is more "
+"difficult, since Hibernate can't use the identifier property to distinguish "
+"between a newly instantiated object (with an identifier assigned by the "
+"user) and an object loaded in a previous session. In this case, Hibernate "
+"will either use the timestamp or version property, or will actually query "
+"the second-level cache or, worst case, the database, to see if the row "
+"exists."
+msgstr ""
+"Bueno, todo eso está muy bien para el caso de un identificador generado, "
+"pero ¿qué de los identificadores asignados y de los identificadores "
+"compuestos? Esto es más difícil, ya que Hibernate no puede usar la propiedad "
+"identificadora para distinguir entre un objeto recién instanciado (con un "
+"identificador asignado por el usuario) y un objeto cargado en una sesión "
+"previa. En este caso, Hibernate bien usará la propiedad de versión o "
+"timestamp, o bien consultará realmente el caché de segundo nivel, o bien, en "
+"el peor de los casos, la base de datos, para ver si existe la fila."
-#: index.docbook:260
+#. Tag: title
+#: example_parentchild.xml:260
+#, no-c-format
msgid "Conclusion"
-msgstr "Conclusión"
+msgstr "Conclusión"
-#: index.docbook:262
-msgid "There is quite a bit to digest here and it might look confusing first time around. However, in practice, it all works out very nicely. Most Hibernate applications use the parent / child pattern in many places."
-msgstr "Hay que resumir un poco aquí y podría parecer confuso a la primera vez. Sin embargo, en la práctica, todo funciona muy agradablemente. La mayoría de las aplicaciones de Hibernate usan el patrón padre / hijo en muchos sitios."
+#. Tag: para
+#: example_parentchild.xml:262
+#, no-c-format
+msgid ""
+"There is quite a bit to digest here and it might look confusing first time "
+"around. However, in practice, it all works out very nicely. Most Hibernate "
+"applications use the parent / child pattern in many places."
+msgstr ""
+"Hay que resumir un poco aquí y podría parecer confuso a la primera vez. Sin "
+"embargo, en la práctica, todo funciona muy agradablemente. La mayoría de las "
+"aplicaciones de Hibernate usan el patrón padre / hijo en muchos sitios."
-#: index.docbook:267
-msgid "We mentioned an alternative in the first paragraph. None of the above issues exist in the case of <literal><composite-element></literal> mappings, which have exactly the semantics of a parent / child relationship. Unfortunately, there are two big limitations to composite element classes: composite elements may not own collections, and they should not be the child of any entity other than the unique parent."
-msgstr "Hemos mencionado una alternativa en el primer párrafo. Ninguno de los temas anteriores existe en el caso de los mapeos <literal><composite-element></literal>, que tienen exactamente la semántica de una relación padre / hijo. Desafortunadamente, hay dos grandes limitaciones para las clases de elementos compuestos: los elementos compuestos no pueden poseer sus propias colecciones, y no deben ser el hijo de cualquier otra entidad que no sea su padre único."
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: para
+#: example_parentchild.xml:267
+#, no-c-format
+msgid ""
+"We mentioned an alternative in the first paragraph. None of the above issues "
+"exist in the case of <literal><composite-element></literal> mappings, "
+"which have exactly the semantics of a parent / child relationship. "
+"Unfortunately, there are two big limitations to composite element classes: "
+"composite elements may not own collections, and they should not be the child "
+"of any entity other than the unique parent."
+msgstr ""
+"Hemos mencionado una alternativa en el primer párrafo. Ninguno de los temas "
+"anteriores existe en el caso de los mapeos <literal><composite-element>"
+"</literal>, que tienen exactamente la semántica de una relación padre / "
+"hijo. Desafortunadamente, hay dos grandes limitaciones para las clases de "
+"elementos compuestos: los elementos compuestos no pueden poseer sus propias "
+"colecciones, y no deben ser el hijo de cualquier otra entidad que no sea su "
+"padre único."
Modified: core/trunk/documentation/manual/translations/es-ES/content/example_weblog.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/example_weblog.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/example_weblog.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,840 +1,484 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: example_weblog.xml:5
+#, no-c-format
msgid "Example: Weblog Application"
-msgstr "Ejemplo: Aplicación de Weblog"
+msgstr "Ejemplo: Aplicación de Weblog"
-#: index.docbook:8
+#. Tag: title
+#: example_weblog.xml:8
+#, no-c-format
msgid "Persistent Classes"
msgstr "Clases Persistentes"
-#: index.docbook:10
-msgid "The persistent classes represent a weblog, and an item posted in a weblog. They are to be modelled as a standard parent/child relationship, but we will use an ordered bag, instead of a set."
-msgstr "Las clases persistentes representan un weblog, y un ítem enviado a un weblog. Van a ser modelados como una relación padre/hijo estñndar, pero usaremos un bag ordenado, en vez de un conjunto (set)."
+#. Tag: para
+#: example_weblog.xml:10
+#, no-c-format
+msgid ""
+"The persistent classes represent a weblog, and an item posted in a weblog. "
+"They are to be modelled as a standard parent/child relationship, but we will "
+"use an ordered bag, instead of a set."
+msgstr ""
+"Las clases persistentes representan un weblog, y un ítem enviado a un "
+"weblog. Van a ser modelados como una relación padre/hijo estñndar, pero "
+"usaremos un bag ordenado, en vez de un conjunto (set)."
-#: index.docbook:16
+#. Tag: programlisting
+#: example_weblog.xml:16
+#, no-c-format
msgid ""
- "<![CDATA[package eg;\n"
- "\n"
- "import java.util.List;\n"
- "\n"
- "public class Blog {\n"
- " private Long _id;\n"
- " private String _name;\n"
- " private List _items;\n"
- "\n"
- " public Long getId() {\n"
- " return _id;\n"
- " }\n"
- " public List getItems() {\n"
- " return _items;\n"
- " }\n"
- " public String getName() {\n"
- " return _name;\n"
- " }\n"
- " public void setId(Long long1) {\n"
- " _id = long1;\n"
- " }\n"
- " public void setItems(List list) {\n"
- " _items = list;\n"
- " }\n"
- " public void setName(String string) {\n"
- " _name = string;\n"
- " }\n"
- "}]]>"
+"<![CDATA[package eg;\n"
+"\n"
+"import java.util.List;\n"
+"\n"
+"public class Blog {\n"
+" private Long _id;\n"
+" private String _name;\n"
+" private List _items;\n"
+"\n"
+" public Long getId() {\n"
+" return _id;\n"
+" }\n"
+" public List getItems() {\n"
+" return _items;\n"
+" }\n"
+" public String getName() {\n"
+" return _name;\n"
+" }\n"
+" public void setId(Long long1) {\n"
+" _id = long1;\n"
+" }\n"
+" public void setItems(List list) {\n"
+" _items = list;\n"
+" }\n"
+" public void setName(String string) {\n"
+" _name = string;\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[package eg;\n"
- "\n"
- "import java.util.List;\n"
- "\n"
- "public class Blog {\n"
- " private Long _id;\n"
- " private String _name;\n"
- " private List _items;\n"
- "\n"
- " public Long getId() {\n"
- " return _id;\n"
- " }\n"
- " public List getItems() {\n"
- " return _items;\n"
- " }\n"
- " public String getName() {\n"
- " return _name;\n"
- " }\n"
- " public void setId(Long long1) {\n"
- " _id = long1;\n"
- " }\n"
- " public void setItems(List list) {\n"
- " _items = list;\n"
- " }\n"
- " public void setName(String string) {\n"
- " _name = string;\n"
- " }\n"
- "}]]>"
-#: index.docbook:18
+#. Tag: programlisting
+#: example_weblog.xml:18
+#, no-c-format
msgid ""
- "<![CDATA[package eg;\n"
- "\n"
- "import java.text.DateFormat;\n"
- "import java.util.Calendar;\n"
- "\n"
- "public class BlogItem {\n"
- " private Long _id;\n"
- " private Calendar _datetime;\n"
- " private String _text;\n"
- " private String _title;\n"
- " private Blog _blog;\n"
- "\n"
- " public Blog getBlog() {\n"
- " return _blog;\n"
- " }\n"
- " public Calendar getDatetime() {\n"
- " return _datetime;\n"
- " }\n"
- " public Long getId() {\n"
- " return _id;\n"
- " }\n"
- " public String getText() {\n"
- " return _text;\n"
- " }\n"
- " public String getTitle() {\n"
- " return _title;\n"
- " }\n"
- " public void setBlog(Blog blog) {\n"
- " _blog = blog;\n"
- " }\n"
- " public void setDatetime(Calendar calendar) {\n"
- " _datetime = calendar;\n"
- " }\n"
- " public void setId(Long long1) {\n"
- " _id = long1;\n"
- " }\n"
- " public void setText(String string) {\n"
- " _text = string;\n"
- " }\n"
- " public void setTitle(String string) {\n"
- " _title = string;\n"
- " }\n"
- "}]]>"
+"<![CDATA[package eg;\n"
+"\n"
+"import java.text.DateFormat;\n"
+"import java.util.Calendar;\n"
+"\n"
+"public class BlogItem {\n"
+" private Long _id;\n"
+" private Calendar _datetime;\n"
+" private String _text;\n"
+" private String _title;\n"
+" private Blog _blog;\n"
+"\n"
+" public Blog getBlog() {\n"
+" return _blog;\n"
+" }\n"
+" public Calendar getDatetime() {\n"
+" return _datetime;\n"
+" }\n"
+" public Long getId() {\n"
+" return _id;\n"
+" }\n"
+" public String getText() {\n"
+" return _text;\n"
+" }\n"
+" public String getTitle() {\n"
+" return _title;\n"
+" }\n"
+" public void setBlog(Blog blog) {\n"
+" _blog = blog;\n"
+" }\n"
+" public void setDatetime(Calendar calendar) {\n"
+" _datetime = calendar;\n"
+" }\n"
+" public void setId(Long long1) {\n"
+" _id = long1;\n"
+" }\n"
+" public void setText(String string) {\n"
+" _text = string;\n"
+" }\n"
+" public void setTitle(String string) {\n"
+" _title = string;\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[package eg;\n"
- "\n"
- "import java.text.DateFormat;\n"
- "import java.util.Calendar;\n"
- "\n"
- "public class BlogItem {\n"
- " private Long _id;\n"
- " private Calendar _datetime;\n"
- " private String _text;\n"
- " private String _title;\n"
- " private Blog _blog;\n"
- "\n"
- " public Blog getBlog() {\n"
- " return _blog;\n"
- " }\n"
- " public Calendar getDatetime() {\n"
- " return _datetime;\n"
- " }\n"
- " public Long getId() {\n"
- " return _id;\n"
- " }\n"
- " public String getText() {\n"
- " return _text;\n"
- " }\n"
- " public String getTitle() {\n"
- " return _title;\n"
- " }\n"
- " public void setBlog(Blog blog) {\n"
- " _blog = blog;\n"
- " }\n"
- " public void setDatetime(Calendar calendar) {\n"
- " _datetime = calendar;\n"
- " }\n"
- " public void setId(Long long1) {\n"
- " _id = long1;\n"
- " }\n"
- " public void setText(String string) {\n"
- " _text = string;\n"
- " }\n"
- " public void setTitle(String string) {\n"
- " _title = string;\n"
- " }\n"
- "}]]>"
-#: index.docbook:23
+#. Tag: title
+#: example_weblog.xml:23
+#, no-c-format
msgid "Hibernate Mappings"
msgstr "Mapeos de Hibernate"
-#: index.docbook:25
+#. Tag: para
+#: example_weblog.xml:25
+#, no-c-format
msgid "The XML mappings should now be quite straightforward."
msgstr "Los mapeos XML ahora deben ser absolutamente directos."
-#: index.docbook:29
+#. Tag: programlisting
+#: example_weblog.xml:29
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping package=\"eg\">\n"
- "\n"
- " <class\n"
- " name=\"Blog\"\n"
- " table=\"BLOGS\">\n"
- "\n"
- " <id\n"
- " name=\"id\"\n"
- " column=\"BLOG_ID\">\n"
- "\n"
- " <generator class=\"native\"/>\n"
- "\n"
- " </id>\n"
- "\n"
- " <property\n"
- " name=\"name\"\n"
- " column=\"NAME\"\n"
- " not-null=\"true\"\n"
- " unique=\"true\"/>\n"
- "\n"
- " <bag\n"
- " name=\"items\"\n"
- " inverse=\"true\"\n"
- " order-by=\"DATE_TIME\"\n"
- " cascade=\"all\">\n"
- "\n"
- " <key column=\"BLOG_ID\"/>\n"
- " <one-to-many class=\"BlogItem\"/>\n"
- "\n"
- " </bag>\n"
- "\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<?xml version=\"1.0\"?>\n"
+"<!DOCTYPE hibernate-mapping PUBLIC\n"
+" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+" \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+"\n"
+"<hibernate-mapping package=\"eg\">\n"
+"\n"
+" <class\n"
+" name=\"Blog\"\n"
+" table=\"BLOGS\">\n"
+"\n"
+" <id\n"
+" name=\"id\"\n"
+" column=\"BLOG_ID\">\n"
+"\n"
+" <generator class=\"native\"/>\n"
+"\n"
+" </id>\n"
+"\n"
+" <property\n"
+" name=\"name\"\n"
+" column=\"NAME\"\n"
+" not-null=\"true\"\n"
+" unique=\"true\"/>\n"
+"\n"
+" <bag\n"
+" name=\"items\"\n"
+" inverse=\"true\"\n"
+" order-by=\"DATE_TIME\"\n"
+" cascade=\"all\">\n"
+"\n"
+" <key column=\"BLOG_ID\"/>\n"
+" <one-to-many class=\"BlogItem\"/>\n"
+"\n"
+" </bag>\n"
+"\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping package=\"eg\">\n"
- "\n"
- " <class\n"
- " name=\"Blog\"\n"
- " table=\"BLOGS\">\n"
- "\n"
- " <id\n"
- " name=\"id\"\n"
- " column=\"BLOG_ID\">\n"
- "\n"
- " <generator class=\"native\"/>\n"
- "\n"
- " </id>\n"
- "\n"
- " <property\n"
- " name=\"name\"\n"
- " column=\"NAME\"\n"
- " not-null=\"true\"\n"
- " unique=\"true\"/>\n"
- "\n"
- " <bag\n"
- " name=\"items\"\n"
- " inverse=\"true\"\n"
- " order-by=\"DATE_TIME\"\n"
- " cascade=\"all\">\n"
- "\n"
- " <key column=\"BLOG_ID\"/>\n"
- " <one-to-many class=\"BlogItem\"/>\n"
- "\n"
- " </bag>\n"
- "\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:31
+#. Tag: programlisting
+#: example_weblog.xml:31
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping package=\"eg\">\n"
- "\n"
- " <class\n"
- " name=\"BlogItem\"\n"
- " table=\"BLOG_ITEMS\"\n"
- " dynamic-update=\"true\">\n"
- "\n"
- " <id\n"
- " name=\"id\"\n"
- " column=\"BLOG_ITEM_ID\">\n"
- "\n"
- " <generator class=\"native\"/>\n"
- "\n"
- " </id>\n"
- "\n"
- " <property\n"
- " name=\"title\"\n"
- " column=\"TITLE\"\n"
- " not-null=\"true\"/>\n"
- "\n"
- " <property\n"
- " name=\"text\"\n"
- " column=\"TEXT\"\n"
- " not-null=\"true\"/>\n"
- "\n"
- " <property\n"
- " name=\"datetime\"\n"
- " column=\"DATE_TIME\"\n"
- " not-null=\"true\"/>\n"
- "\n"
- " <many-to-one\n"
- " name=\"blog\"\n"
- " column=\"BLOG_ID\"\n"
- " not-null=\"true\"/>\n"
- "\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<?xml version=\"1.0\"?>\n"
+"<!DOCTYPE hibernate-mapping PUBLIC\n"
+" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+" \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+"\n"
+"<hibernate-mapping package=\"eg\">\n"
+"\n"
+" <class\n"
+" name=\"BlogItem\"\n"
+" table=\"BLOG_ITEMS\"\n"
+" dynamic-update=\"true\">\n"
+"\n"
+" <id\n"
+" name=\"id\"\n"
+" column=\"BLOG_ITEM_ID\">\n"
+"\n"
+" <generator class=\"native\"/>\n"
+"\n"
+" </id>\n"
+"\n"
+" <property\n"
+" name=\"title\"\n"
+" column=\"TITLE\"\n"
+" not-null=\"true\"/>\n"
+"\n"
+" <property\n"
+" name=\"text\"\n"
+" column=\"TEXT\"\n"
+" not-null=\"true\"/>\n"
+"\n"
+" <property\n"
+" name=\"datetime\"\n"
+" column=\"DATE_TIME\"\n"
+" not-null=\"true\"/>\n"
+"\n"
+" <many-to-one\n"
+" name=\"blog\"\n"
+" column=\"BLOG_ID\"\n"
+" not-null=\"true\"/>\n"
+"\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping package=\"eg\">\n"
- "\n"
- " <class\n"
- " name=\"BlogItem\"\n"
- " table=\"BLOG_ITEMS\"\n"
- " dynamic-update=\"true\">\n"
- "\n"
- " <id\n"
- " name=\"id\"\n"
- " column=\"BLOG_ITEM_ID\">\n"
- "\n"
- " <generator class=\"native\"/>\n"
- "\n"
- " </id>\n"
- "\n"
- " <property\n"
- " name=\"title\"\n"
- " column=\"TITLE\"\n"
- " not-null=\"true\"/>\n"
- "\n"
- " <property\n"
- " name=\"text\"\n"
- " column=\"TEXT\"\n"
- " not-null=\"true\"/>\n"
- "\n"
- " <property\n"
- " name=\"datetime\"\n"
- " column=\"DATE_TIME\"\n"
- " not-null=\"true\"/>\n"
- "\n"
- " <many-to-one\n"
- " name=\"blog\"\n"
- " column=\"BLOG_ID\"\n"
- " not-null=\"true\"/>\n"
- "\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:36
+#. Tag: title
+#: example_weblog.xml:36
+#, no-c-format
msgid "Hibernate Code"
-msgstr "Código Hibernate"
+msgstr "Código Hibernate"
-#: index.docbook:38
-msgid "The following class demonstrates some of the kinds of things we can do with these classes, using Hibernate."
-msgstr "La siguiente clase demuestra algunos de los tipos de cosas que podemos haces con estas clases, usando Hibernate."
-
-#: index.docbook:43
+#. Tag: para
+#: example_weblog.xml:38
+#, no-c-format
msgid ""
- "<![CDATA[package eg;\n"
- "\n"
- "import java.util.ArrayList;\n"
- "import java.util.Calendar;\n"
- "import java.util.Iterator;\n"
- "import java.util.List;\n"
- "\n"
- "import org.hibernate.HibernateException;\n"
- "import org.hibernate.Query;\n"
- "import org.hibernate.Session;\n"
- "import org.hibernate.SessionFactory;\n"
- "import org.hibernate.Transaction;\n"
- "import org.hibernate.cfg.Configuration;\n"
- "import org.hibernate.tool.hbm2ddl.SchemaExport;\n"
- "\n"
- "public class BlogMain {\n"
- " \n"
- " private SessionFactory _sessions;\n"
- " \n"
- " public void configure() throws HibernateException {\n"
- " _sessions = new Configuration()\n"
- " .addClass(Blog.class)\n"
- " .addClass(BlogItem.class)\n"
- " .buildSessionFactory();\n"
- " }\n"
- " \n"
- " public void exportTables() throws HibernateException {\n"
- " Configuration cfg = new Configuration()\n"
- " .addClass(Blog.class)\n"
- " .addClass(BlogItem.class);\n"
- " new SchemaExport(cfg).create(true, true);\n"
- " }\n"
- " \n"
- " public Blog createBlog(String name) throws HibernateException {\n"
- " \n"
- " Blog blog = new Blog();\n"
- " blog.setName(name);\n"
- " blog.setItems( new ArrayList() );\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " session.persist(blog);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return blog;\n"
- " }\n"
- " \n"
- " public BlogItem createBlogItem(Blog blog, String title, String text)\n"
- " throws HibernateException {\n"
- " \n"
- " BlogItem item = new BlogItem();\n"
- " item.setTitle(title);\n"
- " item.setText(text);\n"
- " item.setBlog(blog);\n"
- " item.setDatetime( Calendar.getInstance() );\n"
- " blog.getItems().add(item);\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " session.update(blog);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return item;\n"
- " }\n"
- " \n"
- " public BlogItem createBlogItem(Long blogid, String title, String text)\n"
- " throws HibernateException {\n"
- " \n"
- " BlogItem item = new BlogItem();\n"
- " item.setTitle(title);\n"
- " item.setText(text);\n"
- " item.setDatetime( Calendar.getInstance() );\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " Blog blog = (Blog) session.load(Blog.class, blogid);\n"
- " item.setBlog(blog);\n"
- " blog.getItems().add(item);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return item;\n"
- " }\n"
- " \n"
- " public void updateBlogItem(BlogItem item, String text)\n"
- " throws HibernateException {\n"
- " \n"
- " item.setText(text);\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " session.update(item);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " }\n"
- " \n"
- " public void updateBlogItem(Long itemid, String text)\n"
- " throws HibernateException {\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " BlogItem item = (BlogItem) session.load(BlogItem.class, itemid);\n"
- " item.setText(text);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " }\n"
- " \n"
- " public List listAllBlogNamesAndItemCounts(int max)\n"
- " throws HibernateException {\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " List result = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " Query q = session.createQuery(\n"
- " \"select blog.id, blog.name, count(blogItem) \" +\n"
- " \"from Blog as blog \" +\n"
- " \"left outer join blog.items as blogItem \" +\n"
- " \"group by blog.name, blog.id \" +\n"
- " \"order by max(blogItem.datetime)\"\n"
- " );\n"
- " q.setMaxResults(max);\n"
- " result = q.list();\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return result;\n"
- " }\n"
- " \n"
- " public Blog getBlogAndAllItems(Long blogid)\n"
- " throws HibernateException {\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " Blog blog = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " Query q = session.createQuery(\n"
- " \"from Blog as blog \" +\n"
- " \"left outer join fetch blog.items \" +\n"
- " \"where blog.id = :blogid\"\n"
- " );\n"
- " q.setParameter(\"blogid\", blogid);\n"
- " blog = (Blog) q.uniqueResult();\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return blog;\n"
- " }\n"
- " \n"
- " public List listBlogsAndRecentItems() throws HibernateException {\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " List result = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " Query q = session.createQuery(\n"
- " \"from Blog as blog \" +\n"
- " \"inner join blog.items as blogItem \" +\n"
- " \"where blogItem.datetime > :minDate\"\n"
- " );\n"
- "\n"
- " Calendar cal = Calendar.getInstance();\n"
- " cal.roll(Calendar.MONTH, false);\n"
- " q.setCalendar(\"minDate\", cal);\n"
- " \n"
- " result = q.list();\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return result;\n"
- " }\n"
- "}]]>"
+"The following class demonstrates some of the kinds of things we can do with "
+"these classes, using Hibernate."
msgstr ""
- "<![CDATA[package eg;\n"
- "\n"
- "import java.util.ArrayList;\n"
- "import java.util.Calendar;\n"
- "import java.util.Iterator;\n"
- "import java.util.List;\n"
- "\n"
- "import org.hibernate.HibernateException;\n"
- "import org.hibernate.Query;\n"
- "import org.hibernate.Session;\n"
- "import org.hibernate.SessionFactory;\n"
- "import org.hibernate.Transaction;\n"
- "import org.hibernate.cfg.Configuration;\n"
- "import org.hibernate.tool.hbm2ddl.SchemaExport;\n"
- "\n"
- "public class BlogMain {\n"
- " \n"
- " private SessionFactory _sessions;\n"
- " \n"
- " public void configure() throws HibernateException {\n"
- " _sessions = new Configuration()\n"
- " .addClass(Blog.class)\n"
- " .addClass(BlogItem.class)\n"
- " .buildSessionFactory();\n"
- " }\n"
- " \n"
- " public void exportTables() throws HibernateException {\n"
- " Configuration cfg = new Configuration()\n"
- " .addClass(Blog.class)\n"
- " .addClass(BlogItem.class);\n"
- " new SchemaExport(cfg).create(true, true);\n"
- " }\n"
- " \n"
- " public Blog createBlog(String name) throws HibernateException {\n"
- " \n"
- " Blog blog = new Blog();\n"
- " blog.setName(name);\n"
- " blog.setItems( new ArrayList() );\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " session.persist(blog);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return blog;\n"
- " }\n"
- " \n"
- " public BlogItem createBlogItem(Blog blog, String title, String text)\n"
- " throws HibernateException {\n"
- " \n"
- " BlogItem item = new BlogItem();\n"
- " item.setTitle(title);\n"
- " item.setText(text);\n"
- " item.setBlog(blog);\n"
- " item.setDatetime( Calendar.getInstance() );\n"
- " blog.getItems().add(item);\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " session.update(blog);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return item;\n"
- " }\n"
- " \n"
- " public BlogItem createBlogItem(Long blogid, String title, String text)\n"
- " throws HibernateException {\n"
- " \n"
- " BlogItem item = new BlogItem();\n"
- " item.setTitle(title);\n"
- " item.setText(text);\n"
- " item.setDatetime( Calendar.getInstance() );\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " Blog blog = (Blog) session.load(Blog.class, blogid);\n"
- " item.setBlog(blog);\n"
- " blog.getItems().add(item);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return item;\n"
- " }\n"
- " \n"
- " public void updateBlogItem(BlogItem item, String text)\n"
- " throws HibernateException {\n"
- " \n"
- " item.setText(text);\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " session.update(item);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " }\n"
- " \n"
- " public void updateBlogItem(Long itemid, String text)\n"
- " throws HibernateException {\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " BlogItem item = (BlogItem) session.load(BlogItem.class, itemid);\n"
- " item.setText(text);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " }\n"
- " \n"
- " public List listAllBlogNamesAndItemCounts(int max)\n"
- " throws HibernateException {\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " List result = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " Query q = session.createQuery(\n"
- " \"select blog.id, blog.name, count(blogItem) \" +\n"
- " \"from Blog as blog \" +\n"
- " \"left outer join blog.items as blogItem \" +\n"
- " \"group by blog.name, blog.id \" +\n"
- " \"order by max(blogItem.datetime)\"\n"
- " );\n"
- " q.setMaxResults(max);\n"
- " result = q.list();\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return result;\n"
- " }\n"
- " \n"
- " public Blog getBlogAndAllItems(Long blogid)\n"
- " throws HibernateException {\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " Blog blog = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " Query q = session.createQuery(\n"
- " \"from Blog as blog \" +\n"
- " \"left outer join fetch blog.items \" +\n"
- " \"where blog.id = :blogid\"\n"
- " );\n"
- " q.setParameter(\"blogid\", blogid);\n"
- " blog = (Blog) q.uniqueResult();\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return blog;\n"
- " }\n"
- " \n"
- " public List listBlogsAndRecentItems() throws HibernateException {\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " List result = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " Query q = session.createQuery(\n"
- " \"from Blog as blog \" +\n"
- " \"inner join blog.items as blogItem \" +\n"
- " \"where blogItem.datetime > :minDate\"\n"
- " );\n"
- "\n"
- " Calendar cal = Calendar.getInstance();\n"
- " cal.roll(Calendar.MONTH, false);\n"
- " q.setCalendar(\"minDate\", cal);\n"
- " \n"
- " result = q.list();\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return result;\n"
- " }\n"
- "}]]>"
+"La siguiente clase demuestra algunos de los tipos de cosas que podemos haces "
+"con estas clases, usando Hibernate."
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: programlisting
+#: example_weblog.xml:43
+#, no-c-format
+msgid ""
+"<![CDATA[package eg;\n"
+"\n"
+"import java.util.ArrayList;\n"
+"import java.util.Calendar;\n"
+"import java.util.Iterator;\n"
+"import java.util.List;\n"
+"\n"
+"import org.hibernate.HibernateException;\n"
+"import org.hibernate.Query;\n"
+"import org.hibernate.Session;\n"
+"import org.hibernate.SessionFactory;\n"
+"import org.hibernate.Transaction;\n"
+"import org.hibernate.cfg.Configuration;\n"
+"import org.hibernate.tool.hbm2ddl.SchemaExport;\n"
+"\n"
+"public class BlogMain {\n"
+" \n"
+" private SessionFactory _sessions;\n"
+" \n"
+" public void configure() throws HibernateException {\n"
+" _sessions = new Configuration()\n"
+" .addClass(Blog.class)\n"
+" .addClass(BlogItem.class)\n"
+" .buildSessionFactory();\n"
+" }\n"
+" \n"
+" public void exportTables() throws HibernateException {\n"
+" Configuration cfg = new Configuration()\n"
+" .addClass(Blog.class)\n"
+" .addClass(BlogItem.class);\n"
+" new SchemaExport(cfg).create(true, true);\n"
+" }\n"
+" \n"
+" public Blog createBlog(String name) throws HibernateException {\n"
+" \n"
+" Blog blog = new Blog();\n"
+" blog.setName(name);\n"
+" blog.setItems( new ArrayList() );\n"
+" \n"
+" Session session = _sessions.openSession();\n"
+" Transaction tx = null;\n"
+" try {\n"
+" tx = session.beginTransaction();\n"
+" session.persist(blog);\n"
+" tx.commit();\n"
+" }\n"
+" catch (HibernateException he) {\n"
+" if (tx!=null) tx.rollback();\n"
+" throw he;\n"
+" }\n"
+" finally {\n"
+" session.close();\n"
+" }\n"
+" return blog;\n"
+" }\n"
+" \n"
+" public BlogItem createBlogItem(Blog blog, String title, String text)\n"
+" throws HibernateException {\n"
+" \n"
+" BlogItem item = new BlogItem();\n"
+" item.setTitle(title);\n"
+" item.setText(text);\n"
+" item.setBlog(blog);\n"
+" item.setDatetime( Calendar.getInstance() );\n"
+" blog.getItems().add(item);\n"
+" \n"
+" Session session = _sessions.openSession();\n"
+" Transaction tx = null;\n"
+" try {\n"
+" tx = session.beginTransaction();\n"
+" session.update(blog);\n"
+" tx.commit();\n"
+" }\n"
+" catch (HibernateException he) {\n"
+" if (tx!=null) tx.rollback();\n"
+" throw he;\n"
+" }\n"
+" finally {\n"
+" session.close();\n"
+" }\n"
+" return item;\n"
+" }\n"
+" \n"
+" public BlogItem createBlogItem(Long blogid, String title, String text)\n"
+" throws HibernateException {\n"
+" \n"
+" BlogItem item = new BlogItem();\n"
+" item.setTitle(title);\n"
+" item.setText(text);\n"
+" item.setDatetime( Calendar.getInstance() );\n"
+" \n"
+" Session session = _sessions.openSession();\n"
+" Transaction tx = null;\n"
+" try {\n"
+" tx = session.beginTransaction();\n"
+" Blog blog = (Blog) session.load(Blog.class, blogid);\n"
+" item.setBlog(blog);\n"
+" blog.getItems().add(item);\n"
+" tx.commit();\n"
+" }\n"
+" catch (HibernateException he) {\n"
+" if (tx!=null) tx.rollback();\n"
+" throw he;\n"
+" }\n"
+" finally {\n"
+" session.close();\n"
+" }\n"
+" return item;\n"
+" }\n"
+" \n"
+" public void updateBlogItem(BlogItem item, String text)\n"
+" throws HibernateException {\n"
+" \n"
+" item.setText(text);\n"
+" \n"
+" Session session = _sessions.openSession();\n"
+" Transaction tx = null;\n"
+" try {\n"
+" tx = session.beginTransaction();\n"
+" session.update(item);\n"
+" tx.commit();\n"
+" }\n"
+" catch (HibernateException he) {\n"
+" if (tx!=null) tx.rollback();\n"
+" throw he;\n"
+" }\n"
+" finally {\n"
+" session.close();\n"
+" }\n"
+" }\n"
+" \n"
+" public void updateBlogItem(Long itemid, String text)\n"
+" throws HibernateException {\n"
+" \n"
+" Session session = _sessions.openSession();\n"
+" Transaction tx = null;\n"
+" try {\n"
+" tx = session.beginTransaction();\n"
+" BlogItem item = (BlogItem) session.load(BlogItem.class, "
+"itemid);\n"
+" item.setText(text);\n"
+" tx.commit();\n"
+" }\n"
+" catch (HibernateException he) {\n"
+" if (tx!=null) tx.rollback();\n"
+" throw he;\n"
+" }\n"
+" finally {\n"
+" session.close();\n"
+" }\n"
+" }\n"
+" \n"
+" public List listAllBlogNamesAndItemCounts(int max)\n"
+" throws HibernateException {\n"
+" \n"
+" Session session = _sessions.openSession();\n"
+" Transaction tx = null;\n"
+" List result = null;\n"
+" try {\n"
+" tx = session.beginTransaction();\n"
+" Query q = session.createQuery(\n"
+" \"select blog.id, blog.name, count(blogItem) \" +\n"
+" \"from Blog as blog \" +\n"
+" \"left outer join blog.items as blogItem \" +\n"
+" \"group by blog.name, blog.id \" +\n"
+" \"order by max(blogItem.datetime)\"\n"
+" );\n"
+" q.setMaxResults(max);\n"
+" result = q.list();\n"
+" tx.commit();\n"
+" }\n"
+" catch (HibernateException he) {\n"
+" if (tx!=null) tx.rollback();\n"
+" throw he;\n"
+" }\n"
+" finally {\n"
+" session.close();\n"
+" }\n"
+" return result;\n"
+" }\n"
+" \n"
+" public Blog getBlogAndAllItems(Long blogid)\n"
+" throws HibernateException {\n"
+" \n"
+" Session session = _sessions.openSession();\n"
+" Transaction tx = null;\n"
+" Blog blog = null;\n"
+" try {\n"
+" tx = session.beginTransaction();\n"
+" Query q = session.createQuery(\n"
+" \"from Blog as blog \" +\n"
+" \"left outer join fetch blog.items \" +\n"
+" \"where blog.id = :blogid\"\n"
+" );\n"
+" q.setParameter(\"blogid\", blogid);\n"
+" blog = (Blog) q.uniqueResult();\n"
+" tx.commit();\n"
+" }\n"
+" catch (HibernateException he) {\n"
+" if (tx!=null) tx.rollback();\n"
+" throw he;\n"
+" }\n"
+" finally {\n"
+" session.close();\n"
+" }\n"
+" return blog;\n"
+" }\n"
+" \n"
+" public List listBlogsAndRecentItems() throws HibernateException {\n"
+" \n"
+" Session session = _sessions.openSession();\n"
+" Transaction tx = null;\n"
+" List result = null;\n"
+" try {\n"
+" tx = session.beginTransaction();\n"
+" Query q = session.createQuery(\n"
+" \"from Blog as blog \" +\n"
+" \"inner join blog.items as blogItem \" +\n"
+" \"where blogItem.datetime > :minDate\"\n"
+" );\n"
+"\n"
+" Calendar cal = Calendar.getInstance();\n"
+" cal.roll(Calendar.MONTH, false);\n"
+" q.setCalendar(\"minDate\", cal);\n"
+" \n"
+" result = q.list();\n"
+" tx.commit();\n"
+" }\n"
+" catch (HibernateException he) {\n"
+" if (tx!=null) tx.rollback();\n"
+" throw he;\n"
+" }\n"
+" finally {\n"
+" session.close();\n"
+" }\n"
+" return result;\n"
+" }\n"
+"}]]>"
+msgstr ""
Modified: core/trunk/documentation/manual/translations/es-ES/content/filters.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/filters.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/filters.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,192 +1,294 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: filters.xml:5
+#, no-c-format
msgid "Filtering data"
msgstr "Filtrando datos"
-#: index.docbook:7
-msgid "Hibernate3 provides an innovative new approach to handling data with \"visibility\" rules. A <emphasis>Hibernate filter</emphasis> is a global, named, parameterized filter that may be enabled or disabled for a particular Hibernate session."
-msgstr "Hibernate3 provee un nuevo enfoque innovador para manejar datos con reglas de \"visibilidad\". Un <emphasis>filtro de Hibernate</emphasis> es un filtro global, con nombre y parametrizado que puede ser habilitado o deshabilitado para una sesión de Hibernate en particular."
+#. Tag: para
+#: filters.xml:7
+#, no-c-format
+msgid ""
+"Hibernate3 provides an innovative new approach to handling data with "
+"\"visibility\" rules. A <emphasis>Hibernate filter</emphasis> is a global, "
+"named, parameterized filter that may be enabled or disabled for a particular "
+"Hibernate session."
+msgstr ""
+"Hibernate3 provee un nuevo enfoque innovador para manejar datos con reglas "
+"de \"visibilidad\". Un <emphasis>filtro de Hibernate</emphasis> es un filtro "
+"global, con nombre y parametrizado que puede ser habilitado o deshabilitado "
+"para una sesión de Hibernate en particular."
-#: index.docbook:14
+#. Tag: title
+#: filters.xml:14
+#, no-c-format
msgid "Hibernate filters"
msgstr "Filtros de Hibernate"
-#: index.docbook:16
-msgid "Hibernate3 adds the ability to pre-define filter criteria and attach those filters at both a class and a collection level. A filter criteria is the ability to define a restriction clause very similiar to the existing \"where\" attribute available on the class and various collection elements. Except these filter conditions can be parameterized. The application can then make the decision at runtime whether given filters should be enabled and what their parameter values should be. Filters can be used like database views, but parameterized inside the application."
-msgstr "Hibernate3 añade la habilidad de predefinir criterios de filtros y unir esos filtros tanto a nivel de una clase como de una colección. Un criterio de filtro es la habilidad de definir una cláusula de restricción muy similar al atributo existente \"where\" disponible en el elemento class y varios elementos de colección. Excepto en que estos filtros pueden ser parametrizados. La aplicación puede tomar la decisión en tiempo de ejecución de qué filtros deben estar habilitados y cuáles deben ser sus parámetros. Los filtros pueden ser usados como vistas de base de datos, pero parametrizados dentro de la aplicación."
+#. Tag: para
+#: filters.xml:16
+#, no-c-format
+msgid ""
+"Hibernate3 adds the ability to pre-define filter criteria and attach those "
+"filters at both a class and a collection level. A filter criteria is the "
+"ability to define a restriction clause very similiar to the existing \"where"
+"\" attribute available on the class and various collection elements. Except "
+"these filter conditions can be parameterized. The application can then make "
+"the decision at runtime whether given filters should be enabled and what "
+"their parameter values should be. Filters can be used like database views, "
+"but parameterized inside the application."
+msgstr ""
+"Hibernate3 añade la habilidad de predefinir criterios de filtros y unir esos "
+"filtros tanto a nivel de una clase como de una colección. Un criterio de "
+"filtro es la habilidad de definir una cláusula de restricción muy similar al "
+"atributo existente \"where\" disponible en el elemento class y varios "
+"elementos de colección. Excepto en que estos filtros pueden ser "
+"parametrizados. La aplicación puede tomar la decisión en tiempo de ejecución "
+"de qué filtros deben estar habilitados y cuáles deben ser sus parámetros. "
+"Los filtros pueden ser usados como vistas de base de datos, pero "
+"parametrizados dentro de la aplicación."
-#: index.docbook:26
-msgid "In order to use filters, they must first be defined and then attached to the appropriate mapping elements. To define a filter, use the <literal><filter-def/></literal> element within a <literal><hibernate-mapping/></literal> element:"
-msgstr "Para usar los filtros, éstos deben primero ser definidos y luego unidos a los elementos de mapeo apropiados. Para definir un filtro, usa el elemento <literal><filter-def/></literal> dentro de un elemento <literal><hibernate-mapping/></literal>:"
+#. Tag: para
+#: filters.xml:26
+#, no-c-format
+msgid ""
+"In order to use filters, they must first be defined and then attached to the "
+"appropriate mapping elements. To define a filter, use the <literal><"
+"filter-def/></literal> element within a <literal><hibernate-mapping/"
+"></literal> element:"
+msgstr ""
+"Para usar los filtros, éstos deben primero ser definidos y luego unidos a "
+"los elementos de mapeo apropiados. Para definir un filtro, usa el elemento "
+"<literal><filter-def/></literal> dentro de un elemento <literal><"
+"hibernate-mapping/></literal>:"
-#: index.docbook:32
+#. Tag: programlisting
+#: filters.xml:32
+#, no-c-format
msgid ""
- "<![CDATA[<filter-def name=\"myFilter\">\n"
- " <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
- "</filter-def>]]>"
+"<![CDATA[<filter-def name=\"myFilter\">\n"
+" <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
+"</filter-def>]]>"
msgstr ""
- "<![CDATA[<filter-def name=\"myFilter\">\n"
- " <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
- "</filter-def>]]>"
-#: index.docbook:34
+#. Tag: para
+#: filters.xml:34
+#, no-c-format
msgid "Then, this filter can be attached to a class:"
msgstr "Entonces este filtro puede ser unido a una clase:"
-#: index.docbook:38
+#. Tag: programlisting
+#: filters.xml:38
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"myClass\" ...>\n"
- " ...\n"
- " <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"myClass\" ...>\n"
+" ...\n"
+" <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN"
+"\"/>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"myClass\" ...>\n"
- " ...\n"
- " <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN\"/>\n"
- "</class>]]>"
-#: index.docbook:40
+#. Tag: para
+#: filters.xml:40
+#, no-c-format
msgid "or, to a collection:"
msgstr "o a una colección:"
-#: index.docbook:44
+#. Tag: programlisting
+#: filters.xml:44
+#, no-c-format
msgid ""
- "<![CDATA[<set ...>\n"
- " <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN\"/>\n"
- "</set>]]>"
+"<![CDATA[<set ...>\n"
+" <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN"
+"\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set ...>\n"
- " <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN\"/>\n"
- "</set>]]>"
-#: index.docbook:46
+#. Tag: para
+#: filters.xml:46
+#, no-c-format
msgid "or, even to both (or multiples of each) at the same time."
msgstr "o incluso a ambos (o muchos de cada uno) al mismo tiempo."
-#: index.docbook:50
-msgid "The methods on <literal>Session</literal> are: <literal>enableFilter(String filterName)</literal>, <literal>getEnabledFilter(String filterName)</literal>, and <literal>disableFilter(String filterName)</literal>. By default, filters are <emphasis>not</emphasis> enabled for a given session; they must be explcitly enabled through use of the <literal>Session.enabledFilter()</literal> method, which returns an instance of the <literal>Filter</literal> interface. Using the simple filter defined above, this would look like:"
-msgstr "Los métodos en <literal>Session</literal> son: <literal>enableFilter(String filterName)</literal>, <literal>getEnabledFilter(String filterName)</literal>, y <literal>disableFilter(String filterName)</literal>. Por defecto, los filtros <emphasis>no</emphasis> están habilitados para una sesión dada; deben ser habilitados explícitamente por medio del uso del método <literal>Session.enableFilter()</literal>, que devuelve una instancia de la interface <literal>Filter</literal>. Usando el filtro simple definido arriba, esto se vería así:"
+#. Tag: para
+#: filters.xml:50
+#, no-c-format
+msgid ""
+"The methods on <literal>Session</literal> are: <literal>enableFilter(String "
+"filterName)</literal>, <literal>getEnabledFilter(String filterName)</"
+"literal>, and <literal>disableFilter(String filterName)</literal>. By "
+"default, filters are <emphasis>not</emphasis> enabled for a given session; "
+"they must be explcitly enabled through use of the <literal>Session."
+"enabledFilter()</literal> method, which returns an instance of the "
+"<literal>Filter</literal> interface. Using the simple filter defined above, "
+"this would look like:"
+msgstr ""
+"Los métodos en <literal>Session</literal> son: <literal>enableFilter(String "
+"filterName)</literal>, <literal>getEnabledFilter(String filterName)</"
+"literal>, y <literal>disableFilter(String filterName)</literal>. Por "
+"defecto, los filtros <emphasis>no</emphasis> están habilitados para una "
+"sesión dada; deben ser habilitados explícitamente por medio del uso del "
+"método <literal>Session.enableFilter()</literal>, que devuelve una instancia "
+"de la interface <literal>Filter</literal>. Usando el filtro simple definido "
+"arriba, esto se vería así:"
-#: index.docbook:59
-msgid "<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam\", \"some-value\");]]>"
-msgstr "<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam\", \"some-value\");]]>"
+#. Tag: programlisting
+#: filters.xml:59
+#, no-c-format
+msgid ""
+"<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam\", "
+"\"some-value\");]]>"
+msgstr ""
-#: index.docbook:61
-msgid "Note that methods on the org.hibernate.Filter interface do allow the method-chaining common to much of Hibernate."
-msgstr "Nota que los métodos en la interface org.hibernate.Filter permiten el encadenamiento de métodos común en gran parte de Hibernate."
+#. Tag: para
+#: filters.xml:61
+#, no-c-format
+msgid ""
+"Note that methods on the org.hibernate.Filter interface do allow the method-"
+"chaining common to much of Hibernate."
+msgstr ""
+"Nota que los métodos en la interface org.hibernate.Filter permiten el "
+"encadenamiento de métodos común en gran parte de Hibernate."
-#: index.docbook:65
-msgid "A full example, using temporal data with an effective record date pattern:"
-msgstr "Un ejemplo completo, usando datos temporales con un patrón efectivo de fechas de registro:"
+#. Tag: para
+#: filters.xml:65
+#, no-c-format
+msgid ""
+"A full example, using temporal data with an effective record date pattern:"
+msgstr ""
+"Un ejemplo completo, usando datos temporales con un patrón efectivo de "
+"fechas de registro:"
-#: index.docbook:69
+#. Tag: programlisting
+#: filters.xml:69
+#, no-c-format
msgid ""
- "<![CDATA[<filter-def name=\"effectiveDate\">\n"
- " <filter-param name=\"asOfDate\" type=\"date\"/>\n"
- "</filter-def>\n"
- "\n"
- "<class name=\"Employee\" ...>\n"
- "...\n"
- " <many-to-one name=\"department\" column=\"dept_id\" class=\"Department\"/>\n"
- " <property name=\"effectiveStartDate\" type=\"date\" column=\"eff_start_dt\"/>\n"
- " <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt\"/>\n"
- "...\n"
- " <!--\n"
- " Note that this assumes non-terminal records have an eff_end_dt set to\n"
- " a max db date for simplicity-sake\n"
- " -->\n"
- " <filter name=\"effectiveDate\"\n"
- " condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Department\" ...>\n"
- "...\n"
- " <set name=\"employees\" lazy=\"true\">\n"
- " <key column=\"dept_id\"/>\n"
- " <one-to-many class=\"Employee\"/>\n"
- " <filter name=\"effectiveDate\"\n"
- " condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/>\n"
- " </set>\n"
- "</class>]]>"
+"<![CDATA[<filter-def name=\"effectiveDate\">\n"
+" <filter-param name=\"asOfDate\" type=\"date\"/>\n"
+"</filter-def>\n"
+"\n"
+"<class name=\"Employee\" ...>\n"
+"...\n"
+" <many-to-one name=\"department\" column=\"dept_id\" class=\"Department\"/"
+">\n"
+" <property name=\"effectiveStartDate\" type=\"date\" column=\"eff_start_dt"
+"\"/>\n"
+" <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt\"/"
+">\n"
+"...\n"
+" <!--\n"
+" Note that this assumes non-terminal records have an eff_end_dt set "
+"to\n"
+" a max db date for simplicity-sake\n"
+" -->\n"
+" <filter name=\"effectiveDate\"\n"
+" condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/>\n"
+"</class>\n"
+"\n"
+"<class name=\"Department\" ...>\n"
+"...\n"
+" <set name=\"employees\" lazy=\"true\">\n"
+" <key column=\"dept_id\"/>\n"
+" <one-to-many class=\"Employee\"/>\n"
+" <filter name=\"effectiveDate\"\n"
+" condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/"
+">\n"
+" </set>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<filter-def name=\"effectiveDate\">\n"
- " <filter-param name=\"asOfDate\" type=\"date\"/>\n"
- "</filter-def>\n"
- "\n"
- "<class name=\"Employee\" ...>\n"
- "...\n"
- " <many-to-one name=\"department\" column=\"dept_id\" class=\"Department\"/>\n"
- " <property name=\"effectiveStartDate\" type=\"date\" column=\"eff_start_dt\"/>\n"
- " <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt\"/>\n"
- "...\n"
- " <!--\n"
- " Note that this assumes non-terminal records have an eff_end_dt set to\n"
- " a max db date for simplicity-sake\n"
- " -->\n"
- " <filter name=\"effectiveDate\"\n"
- " condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Department\" ...>\n"
- "...\n"
- " <set name=\"employees\" lazy=\"true\">\n"
- " <key column=\"dept_id\"/>\n"
- " <one-to-many class=\"Employee\"/>\n"
- " <filter name=\"effectiveDate\"\n"
- " condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/>\n"
- " </set>\n"
- "</class>]]>"
-#: index.docbook:71
-msgid "Then, in order to ensure that you always get back currently effective records, simply enable the filter on the session prior to retrieving employee data:"
-msgstr "Entonces, en orden de asegurar que siempre tendrás de vuelta registros actualmente efectivos, simplemente habilita el filtro en la sesión previo a recuperar los datos de empleados:"
-
-#: index.docbook:76
+#. Tag: para
+#: filters.xml:71
+#, no-c-format
msgid ""
- "<![CDATA[Session session = ...;\n"
- "session.enabledFilter(\"effectiveDate\").setParameter(\"asOfDate\", new Date());\n"
- "List results = session.createQuery(\"from Employee as e where e.salary > :targetSalary\")\n"
- " .setLong(\"targetSalary\", new Long(1000000))\n"
- " .list();\n"
- "]]>"
+"Then, in order to ensure that you always get back currently effective "
+"records, simply enable the filter on the session prior to retrieving "
+"employee data:"
msgstr ""
- "<![CDATA[Session session = ...;\n"
- "session.enabledFilter(\"effectiveDate\").setParameter(\"asOfDate\", new Date());\n"
- "List results = session.createQuery(\"from Employee as e where e.salary > :targetSalary\")\n"
- " .setLong(\"targetSalary\", new Long(1000000))\n"
- " .list();\n"
- "]]>"
+"Entonces, en orden de asegurar que siempre tendrás de vuelta registros "
+"actualmente efectivos, simplemente habilita el filtro en la sesión previo a "
+"recuperar los datos de empleados:"
-#: index.docbook:78
-msgid "In the HQL above, even though we only explicitly mentioned a salary constraint on the results, because of the enabled filter the query will return only currently active employees who have a salary greater than a million dollars."
-msgstr "En el HQL de arriba, aunque sólo hemos mencionado explícitamente una restricción de salario en los resultados, debido al filtro habilitado la consulta sólo devolverá empleados actualmente activos que tengan un salario mayor que un millón de dólares."
-
-#: index.docbook:84
-msgid "Note: if you plan on using filters with outer joining (either through HQL or load fetching) be careful of the direction of the condition expression. Its safest to set this up for left outer joining; in general, place the parameter first followed by the column name(s) after the operator."
-msgstr "Nota: si planeas usar filtros con unión externa (outer joining) (bien a través de HQL, o bien de recuperación de carga) sé cuidadoso en la dirección de expresión de la condición. Lo más seguro es establecer esto para unión externa izquierda (left outer joining). En general, coloca el primer parámetro seguido del nombre(s) de columna(s) después del operador."
-
-#: index.docbook:91
-msgid "After being defined a filter might be attached to multiple entities and/or collections each with its own condition. That can be tedious when the conditions are the same each time. Thus <literal><filter-def/></literal> allows defining a default condition, either as an attribute or CDATA:"
+#. Tag: programlisting
+#: filters.xml:76
+#, no-c-format
+msgid ""
+"<![CDATA[Session session = ...;\n"
+"session.enabledFilter(\"effectiveDate\").setParameter(\"asOfDate\", new Date"
+"());\n"
+"List results = session.createQuery(\"from Employee as e where e.salary > :"
+"targetSalary\")\n"
+" .setLong(\"targetSalary\", new Long(1000000))\n"
+" .list();\n"
+"]]>"
msgstr ""
-#: index.docbook:98
+#. Tag: para
+#: filters.xml:78
+#, no-c-format
msgid ""
- "<![CDATA[<filter-def name=\"myFilter\" condition=\"abc > xyz\">...</filter-def>\n"
- "<filter-def name=\"myOtherFilter\">abc=xyz</filter-def>]]>"
+"In the HQL above, even though we only explicitly mentioned a salary "
+"constraint on the results, because of the enabled filter the query will "
+"return only currently active employees who have a salary greater than a "
+"million dollars."
msgstr ""
+"En el HQL de arriba, aunque sólo hemos mencionado explícitamente una "
+"restricción de salario en los resultados, debido al filtro habilitado la "
+"consulta sólo devolverá empleados actualmente activos que tengan un salario "
+"mayor que un millón de dólares."
-#: index.docbook:100
-msgid "This default condition will then be used whenever the filter is attached to something without specifying a condition. Note that this means you can give a specific condition as part of the attachment of the filter which overrides the default condition in that particular case."
+#. Tag: para
+#: filters.xml:84
+#, no-c-format
+msgid ""
+"Note: if you plan on using filters with outer joining (either through HQL or "
+"load fetching) be careful of the direction of the condition expression. Its "
+"safest to set this up for left outer joining; in general, place the "
+"parameter first followed by the column name(s) after the operator."
msgstr ""
+"Nota: si planeas usar filtros con unión externa (outer joining) (bien a "
+"través de HQL, o bien de recuperación de carga) sé cuidadoso en la dirección "
+"de expresión de la condición. Lo más seguro es establecer esto para unión "
+"externa izquierda (left outer joining). En general, coloca el primer "
+"parámetro seguido del nombre(s) de columna(s) después del operador."
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+#. Tag: para
+#: filters.xml:91
+#, no-c-format
+msgid ""
+"After being defined a filter might be attached to multiple entities and/or "
+"collections each with its own condition. That can be tedious when the "
+"conditions are the same each time. Thus <literal><filter-def/></"
+"literal> allows defining a default condition, either as an attribute or "
+"CDATA:"
+msgstr "translator-credits"
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+#. Tag: programlisting
+#: filters.xml:98
+#, no-c-format
+msgid ""
+"<![CDATA[<filter-def name=\"myFilter\" condition=\"abc > xyz\">...</filter-"
+"def>\n"
+"<filter-def name=\"myOtherFilter\">abc=xyz</filter-def>]]>"
+msgstr ""
+#. Tag: para
+#: filters.xml:100
+#, no-c-format
+msgid ""
+"This default condition will then be used whenever the filter is attached to "
+"something without specifying a condition. Note that this means you can give "
+"a specific condition as part of the attachment of the filter which overrides "
+"the default condition in that particular case."
+msgstr ""
Modified: core/trunk/documentation/manual/translations/es-ES/content/inheritance_mapping.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/inheritance_mapping.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/inheritance_mapping.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,636 +1,845 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: inheritance_mapping.xml:5
+#, no-c-format
msgid "Inheritance Mapping"
msgstr "Mapeo de Herencia"
-#: index.docbook:8
+#. Tag: title
+#: inheritance_mapping.xml:8
+#, no-c-format
msgid "The Three Strategies"
msgstr "Las Tres Estrategias"
-#: index.docbook:10
+#. Tag: para
+#: inheritance_mapping.xml:10
+#, no-c-format
msgid "Hibernate supports the three basic inheritance mapping strategies:"
-msgstr "Hibernate soporta las tres estrategias básicas de mapeo de herencia:"
+msgstr "Hibernate soporta las tres estrategias básicas de mapeo de herencia:"
-#: index.docbook:16
+#. Tag: para
+#: inheritance_mapping.xml:16
+#, no-c-format
msgid "table per class hierarchy"
-msgstr "<para>tabla por jerarquía de clases</para>"
+msgstr "tabla por jerarquía de clases"
-#: index.docbook:21
+#. Tag: para
+#: inheritance_mapping.xml:21
+#, fuzzy, no-c-format
msgid "<para>table per subclass</para>"
-msgstr "<para>tabla por subclase</para>"
+msgstr "tabla por subclase"
-#: index.docbook:26
+#. Tag: para
+#: inheritance_mapping.xml:26
+#, no-c-format
msgid "table per concrete class"
msgstr "tabla por clase concreta"
-#: index.docbook:32
-msgid "In addition, Hibernate supports a fourth, slightly different kind of polymorphism:"
-msgstr "En adición, Hibernate soporta un cuarto, ligeramente diferente tipo de polimorfismo:"
+#. Tag: para
+#: inheritance_mapping.xml:32
+#, no-c-format
+msgid ""
+"In addition, Hibernate supports a fourth, slightly different kind of "
+"polymorphism:"
+msgstr ""
+"En adición, Hibernate soporta un cuarto, ligeramente diferente tipo de "
+"polimorfismo:"
-#: index.docbook:39
+#. Tag: para
+#: inheritance_mapping.xml:39
+#, no-c-format
msgid "implicit polymorphism"
-msgstr "polimorfismo implícito"
+msgstr "polimorfismo implícito"
-#: index.docbook:45
-msgid "It is possible to use different mapping strategies for different branches of the same inheritance hierarchy, and then make use of implicit polymorphism to achieve polymorphism across the whole hierarchy. However, Hibernate does not support mixing <literal><subclass></literal>, and <literal><joined-subclass></literal> and <literal><union-subclass></literal> mappings under the same root <literal><class></literal> element. It is possible to mix together the table per hierarchy and table per subclass strategies, under the the same <literal><class></literal> element, by combining the <literal><subclass></literal> and <literal><join></literal> elements (see below)."
-msgstr "Es posible usar estrategias de mapeo diferentes para diferentes ramificaciones de la misma jerarquía de herencia, y entonces usar polimorfismo implícito para conseguir polimorfismo a través de toda la jerarquía. Sin embargo, Hibernate no soporta la mezcla de mapeos <literal><subclass></literal>, y <literal><joined-subclass></literal> y <literal><union-subclass></literal> bajo el mismo elemento <literal><class></literal> raíz. Es posible mezclar juntas las estrategias de tabla por jerarquía y tabla por subclase, bajo el mismo elemento <literal><class></literal>, combinando los elementos <literal><subclass></literal> y <literal><join></literal> (ver debajo)."
+#. Tag: para
+#: inheritance_mapping.xml:45
+#, no-c-format
+msgid ""
+"It is possible to use different mapping strategies for different branches of "
+"the same inheritance hierarchy, and then make use of implicit polymorphism "
+"to achieve polymorphism across the whole hierarchy. However, Hibernate does "
+"not support mixing <literal><subclass></literal>, and <literal><"
+"joined-subclass></literal> and <literal><union-subclass></literal> "
+"mappings under the same root <literal><class></literal> element. It is "
+"possible to mix together the table per hierarchy and table per subclass "
+"strategies, under the the same <literal><class></literal> element, by "
+"combining the <literal><subclass></literal> and <literal><join></"
+"literal> elements (see below)."
+msgstr ""
+"UNTRANSLATED! It is possible to define <literal>subclass</literal>, "
+"<literal>union-subclass</literal>, and <literal>joined-subclass</literal> "
+"mappings in separate mapping documents, directly beneath <literal>hibernate-"
+"mapping</literal>. This allows you to extend a class hierachy just by adding "
+"a new mapping file. You must specify an <literal>extends</literal> attribute "
+"in the subclass mapping, naming a previously mapped superclass. Note: "
+"Previously this feature made the ordering of the mapping documents "
+"important. Since Hibernate3, the ordering of mapping files does not matter "
+"when using the extends keyword. The ordering inside a single mapping file "
+"still needs to be defined as superclasses before subclasses."
-#: index.docbook:59
-msgid "It is possible to define <literal>subclass</literal>, <literal>union-subclass</literal>, and <literal>joined-subclass</literal> mappings in separate mapping documents, directly beneath <literal>hibernate-mapping</literal>. This allows you to extend a class hierachy just by adding a new mapping file. You must specify an <literal>extends</literal> attribute in the subclass mapping, naming a previously mapped superclass. Note: Previously this feature made the ordering of the mapping documents important. Since Hibernate3, the ordering of mapping files does not matter when using the extends keyword. The ordering inside a single mapping file still needs to be defined as superclasses before subclasses."
-msgstr "Tabla por jerarquía de clases"
+#. Tag: para
+#: inheritance_mapping.xml:59
+#, no-c-format
+msgid ""
+"It is possible to define <literal>subclass</literal>, <literal>union-"
+"subclass</literal>, and <literal>joined-subclass</literal> mappings in "
+"separate mapping documents, directly beneath <literal>hibernate-mapping</"
+"literal>. This allows you to extend a class hierachy just by adding a new "
+"mapping file. You must specify an <literal>extends</literal> attribute in "
+"the subclass mapping, naming a previously mapped superclass. Note: "
+"Previously this feature made the ordering of the mapping documents "
+"important. Since Hibernate3, the ordering of mapping files does not matter "
+"when using the extends keyword. The ordering inside a single mapping file "
+"still needs to be defined as superclasses before subclasses."
+msgstr ""
+"Es posible usar estrategias de mapeo diferentes para diferentes "
+"ramificaciones de la misma jerarquía de herencia, y entonces usar "
+"polimorfismo implícito para conseguir polimorfismo a través de toda la "
+"jerarquía. Sin embargo, Hibernate no soporta la mezcla de mapeos "
+"<literal><subclass></literal>, y <literal><joined-subclass></"
+"literal> y <literal><union-subclass></literal> bajo el mismo elemento "
+"<literal><class></literal> raíz. Es posible mezclar juntas las "
+"estrategias de tabla por jerarquía y tabla por subclase, bajo el mismo "
+"elemento <literal><class></literal>, combinando los elementos "
+"<literal><subclass></literal> y <literal><join></literal> (ver "
+"debajo)."
-#: index.docbook:70
+#. Tag: programlisting
+#: inheritance_mapping.xml:70
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- " <hibernate-mapping>\n"
- " <subclass name=\"DomesticCat\" extends=\"Cat\" discriminator-value=\"D\">\n"
- " <property name=\"name\" type=\"string\"/>\n"
- " </subclass>\n"
- " </hibernate-mapping>]]>"
-msgstr "Supón que tenemos una interface <literal>Payment</literal>, con los implementadores <literal>CreditCardPayment</literal>, <literal>CashPayment</literal>, <literal>ChequePayment</literal>. El mapeo de tabla por jerarquía se vería así:"
+"<![CDATA[\n"
+" <hibernate-mapping>\n"
+" <subclass name=\"DomesticCat\" extends=\"Cat\" discriminator-value=\"D"
+"\">\n"
+" <property name=\"name\" type=\"string\"/>\n"
+" </subclass>\n"
+" </hibernate-mapping>]]>"
+msgstr ""
-#: index.docbook:74
+#. Tag: title
+#: inheritance_mapping.xml:74
+#, no-c-format
msgid "Table per class hierarchy"
+msgstr "Tabla por jerarquía de clases"
+
+#. Tag: para
+#: inheritance_mapping.xml:76
+#, no-c-format
+msgid ""
+"Suppose we have an interface <literal>Payment</literal>, with implementors "
+"<literal>CreditCardPayment</literal>, <literal>CashPayment</literal>, "
+"<literal>ChequePayment</literal>. The table per hierarchy mapping would look "
+"like:"
msgstr ""
- "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </subclass>\n"
- " <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
- " ...\n"
- " </subclass>\n"
- " <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
- " ...\n"
- " </subclass>\n"
- "</class>]]>"
+"Supón que tenemos una interface <literal>Payment</literal>, con los "
+"implementadores <literal>CreditCardPayment</literal>, <literal>CashPayment</"
+"literal>, <literal>ChequePayment</literal>. El mapeo de tabla por jerarquía "
+"se vería así:"
-#: index.docbook:76
-msgid "Suppose we have an interface <literal>Payment</literal>, with implementors <literal>CreditCardPayment</literal>, <literal>CashPayment</literal>, <literal>ChequePayment</literal>. The table per hierarchy mapping would look like:"
-msgstr "Se requiere exactamente una tabla. Hay una gran limitación de esta estrategia de mapeo: las columnas declaradas por las subclases, como <literal>CCTYPE</literal>, no pueden tener restricciones <literal>NOT NULL</literal>."
+#. Tag: programlisting
+#: inheritance_mapping.xml:83
+#, no-c-format
+msgid ""
+"<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+" <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
+" <property name=\"amount\" column=\"AMOUNT\"/>\n"
+" ...\n"
+" <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
+" <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+" ...\n"
+" </subclass>\n"
+" <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
+" ...\n"
+" </subclass>\n"
+" <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
+" ...\n"
+" </subclass>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:83
+#. Tag: para
+#: inheritance_mapping.xml:85
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </subclass>\n"
- " <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
- " ...\n"
- " </subclass>\n"
- " <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
- " ...\n"
- " </subclass>\n"
- "</class>]]>"
-msgstr "Tabla por subclase"
+"Exactly one table is required. There is one big limitation of this mapping "
+"strategy: columns declared by the subclasses, such as <literal>CCTYPE</"
+"literal>, may not have <literal>NOT NULL</literal> constraints."
+msgstr ""
+"Se requiere exactamente una tabla. Hay una gran limitación de esta "
+"estrategia de mapeo: las columnas declaradas por las subclases, como "
+"<literal>CCTYPE</literal>, no pueden tener restricciones <literal>NOT NULL</"
+"literal>."
-#: index.docbook:85
-msgid "Exactly one table is required. There is one big limitation of this mapping strategy: columns declared by the subclasses, such as <literal>CCTYPE</literal>, may not have <literal>NOT NULL</literal> constraints."
-msgstr "Un mapeo de tabla por sublclase se vería así:"
-
-#: index.docbook:94
+#. Tag: title
+#: inheritance_mapping.xml:94
+#, no-c-format
msgid "Table per subclass"
-msgstr ""
- "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <joined-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- " <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- " <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- "</class>]]>"
+msgstr "Tabla por subclase"
-#: index.docbook:96
+#. Tag: para
+#: inheritance_mapping.xml:96
+#, no-c-format
msgid "A table per subclass mapping would look like:"
-msgstr "Se requieren cuatro tablas. Las tres tablas de subclase tienen asociaciones de clave primaria a la tabla de superclase (de modo que en el modelo relacional es realmente una asociación uno-a-uno)."
+msgstr "Un mapeo de tabla por sublclase se vería así:"
-#: index.docbook:100
+#. Tag: programlisting
+#: inheritance_mapping.xml:100
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <joined-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- " <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- " <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- "</class>]]>"
-msgstr "Tabla por subclase, usando un discriminador"
+"<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+" <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"amount\" column=\"AMOUNT\"/>\n"
+" ...\n"
+" <joined-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
+" <key column=\"PAYMENT_ID\"/>\n"
+" <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+" ...\n"
+" </joined-subclass>\n"
+" <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+" <key column=\"PAYMENT_ID\"/>\n"
+" ...\n"
+" </joined-subclass>\n"
+" <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+" <key column=\"PAYMENT_ID\"/>\n"
+" ...\n"
+" </joined-subclass>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:102
-msgid "Four tables are required. The three subclass tables have primary key associations to the superclass table (so the relational model is actually a one-to-one association)."
-msgstr "Observa que la implementación de Hibernate de tabla por subclase no requiere ninguna columna discriminadora. Otros mapeadores objeto/relacional usan una implementación diferente de tabla por subclase que requiere una columna discriminadora de tipo en la tabla de superclase. Este enfoque es mucho más difícil de implementar pero discutiblemente más correcto desde un punto de vista relacional. Si quisieras usar una columna discriminadora con la estrategia de tabla por subclase, puedes combinar el uso de <literal><subclass></literal> y <literal><join></literal>, como sigue:"
+#. Tag: para
+#: inheritance_mapping.xml:102
+#, no-c-format
+msgid ""
+"Four tables are required. The three subclass tables have primary key "
+"associations to the superclass table (so the relational model is actually a "
+"one-to-one association)."
+msgstr ""
+"Se requieren cuatro tablas. Las tres tablas de subclase tienen asociaciones "
+"de clave primaria a la tabla de superclase (de modo que en el modelo "
+"relacional es realmente una asociación uno-a-uno)."
-#: index.docbook:111
+#. Tag: title
+#: inheritance_mapping.xml:111
+#, no-c-format
msgid "Table per subclass, using a discriminator"
+msgstr "Tabla por subclase, usando un discriminador"
+
+#. Tag: para
+#: inheritance_mapping.xml:113
+#, no-c-format
+msgid ""
+"Note that Hibernate's implementation of table per subclass requires no "
+"discriminator column. Other object/relational mappers use a different "
+"implementation of table per subclass which requires a type discriminator "
+"column in the superclass table. The approach taken by Hibernate is much more "
+"difficult to implement but arguably more correct from a relational point of "
+"view. If you would like to use a discriminator column with the table per "
+"subclass strategy, you may combine the use of <literal><subclass></"
+"literal> and <literal><join></literal>, as follow:"
msgstr ""
- "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
- " <join table=\"CREDIT_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </join>\n"
- " </subclass>\n"
- " <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
- " <join table=\"CASH_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " ...\n"
- " </join>\n"
- " </subclass>\n"
- " <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
- " <join table=\"CHEQUE_PAYMENT\" fetch=\"select\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " ...\n"
- " </join>\n"
- " </subclass>\n"
- "</class>]]>"
+"Observa que la implementación de Hibernate de tabla por subclase no requiere "
+"ninguna columna discriminadora. Otros mapeadores objeto/relacional usan una "
+"implementación diferente de tabla por subclase que requiere una columna "
+"discriminadora de tipo en la tabla de superclase. Este enfoque es mucho más "
+"difícil de implementar pero discutiblemente más correcto desde un punto de "
+"vista relacional. Si quisieras usar una columna discriminadora con la "
+"estrategia de tabla por subclase, puedes combinar el uso de <literal><"
+"subclass></literal> y <literal><join></literal>, como sigue:"
-#: index.docbook:113
-msgid "Note that Hibernate's implementation of table per subclass requires no discriminator column. Other object/relational mappers use a different implementation of table per subclass which requires a type discriminator column in the superclass table. The approach taken by Hibernate is much more difficult to implement but arguably more correct from a relational point of view. If you would like to use a discriminator column with the table per subclass strategy, you may combine the use of <literal><subclass></literal> and <literal><join></literal>, as follow:"
-msgstr "la declaración opcional <literal>fetch=\"select\"</literal> dice a Hibernate que no recupere los datos de la subclase <literal>ChequePayment</literal> usando una unión externa (outer join) al consultar la superclase."
+#. Tag: programlisting
+#: inheritance_mapping.xml:125
+#, no-c-format
+msgid ""
+"<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+" <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
+" <property name=\"amount\" column=\"AMOUNT\"/>\n"
+" ...\n"
+" <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
+" <join table=\"CREDIT_PAYMENT\">\n"
+" <key column=\"PAYMENT_ID\"/>\n"
+" <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+" ...\n"
+" </join>\n"
+" </subclass>\n"
+" <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
+" <join table=\"CASH_PAYMENT\">\n"
+" <key column=\"PAYMENT_ID\"/>\n"
+" ...\n"
+" </join>\n"
+" </subclass>\n"
+" <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
+" <join table=\"CHEQUE_PAYMENT\" fetch=\"select\">\n"
+" <key column=\"PAYMENT_ID\"/>\n"
+" ...\n"
+" </join>\n"
+" </subclass>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:125
+#. Tag: para
+#: inheritance_mapping.xml:127
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
- " <join table=\"CREDIT_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </join>\n"
- " </subclass>\n"
- " <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
- " <join table=\"CASH_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " ...\n"
- " </join>\n"
- " </subclass>\n"
- " <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
- " <join table=\"CHEQUE_PAYMENT\" fetch=\"select\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " ...\n"
- " </join>\n"
- " </subclass>\n"
- "</class>]]>"
-msgstr "Mezclando tabla por jerarquía de clases con tabla por subclase"
+"The optional <literal>fetch=\"select\"</literal> declaration tells Hibernate "
+"not to fetch the <literal>ChequePayment</literal> subclass data using an "
+"outer join when querying the superclass."
+msgstr ""
+"la declaración opcional <literal>fetch=\"select\"</literal> dice a Hibernate "
+"que no recupere los datos de la subclase <literal>ChequePayment</literal> "
+"usando una unión externa (outer join) al consultar la superclase."
-#: index.docbook:127
-msgid "The optional <literal>fetch=\"select\"</literal> declaration tells Hibernate not to fetch the <literal>ChequePayment</literal> subclass data using an outer join when querying the superclass."
-msgstr "Puedes incluso mezclar las estrategias de tabla po jerarquía y tabla por subclase usando este enfoque:"
+#. Tag: title
+#: inheritance_mapping.xml:136
+#, no-c-format
+msgid "Mixing table per class hierarchy with table per subclass"
+msgstr "Mezclando tabla por jerarquía de clases con tabla por subclase"
-#: index.docbook:136
-msgid "Mixing table per class hierarchy with table per subclass"
+#. Tag: para
+#: inheritance_mapping.xml:138
+#, no-c-format
+msgid ""
+"You may even mix the table per hierarchy and table per subclass strategies "
+"using this approach:"
msgstr ""
- "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
- " <join table=\"CREDIT_PAYMENT\">\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </join>\n"
- " </subclass>\n"
- " <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
- " ...\n"
- " </subclass>\n"
- " <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
- " ...\n"
- " </subclass>\n"
- "</class>]]>"
+"Puedes incluso mezclar las estrategias de tabla po jerarquía y tabla por "
+"subclase usando este enfoque:"
-#: index.docbook:138
-msgid "You may even mix the table per hierarchy and table per subclass strategies using this approach:"
-msgstr "Para cualquiera de estas estrategias de mapeo, una asociación polimórfica a la clase raíz <literal>Payment</literal> es mapeada usando <literal><many-to-one></literal>."
+#. Tag: programlisting
+#: inheritance_mapping.xml:143
+#, no-c-format
+msgid ""
+"<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+" <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
+" <property name=\"amount\" column=\"AMOUNT\"/>\n"
+" ...\n"
+" <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
+" <join table=\"CREDIT_PAYMENT\">\n"
+" <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+" ...\n"
+" </join>\n"
+" </subclass>\n"
+" <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
+" ...\n"
+" </subclass>\n"
+" <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
+" ...\n"
+" </subclass>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:143
+#. Tag: para
+#: inheritance_mapping.xml:145
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
- " <join table=\"CREDIT_PAYMENT\">\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </join>\n"
- " </subclass>\n"
- " <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
- " ...\n"
- " </subclass>\n"
- " <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
- " ...\n"
- " </subclass>\n"
- "</class>]]>"
-msgstr "<![CDATA[<many-to-one name=\"payment\" column=\"PAYMENT_ID\" class=\"Payment\"/>]]>"
+"For any of these mapping strategies, a polymorphic association to the root "
+"<literal>Payment</literal> class is mapped using <literal><many-to-one>"
+"</literal>."
+msgstr ""
+"Para cualquiera de estas estrategias de mapeo, una asociación polimórfica a "
+"la clase raíz <literal>Payment</literal> es mapeada usando <literal><many-"
+"to-one></literal>."
-#: index.docbook:145
-msgid "For any of these mapping strategies, a polymorphic association to the root <literal>Payment</literal> class is mapped using <literal><many-to-one></literal>."
+#. Tag: programlisting
+#: inheritance_mapping.xml:151
+#, no-c-format
+msgid ""
+"<![CDATA[<many-to-one name=\"payment\" column=\"PAYMENT_ID\" class=\"Payment"
+"\"/>]]>"
+msgstr ""
+
+#. Tag: title
+#: inheritance_mapping.xml:156
+#, no-c-format
+msgid "Table per concrete class"
msgstr "Tabla por clase concreta"
-#: index.docbook:151
-msgid "<![CDATA[<many-to-one name=\"payment\" column=\"PAYMENT_ID\" class=\"Payment\"/>]]>"
-msgstr "Podríamos ir de dos maneras a la estrategia de mapeo de tabla por clase concreta. La primera es usar <literal><union-subclass></literal>."
+#. Tag: para
+#: inheritance_mapping.xml:158
+#, no-c-format
+msgid ""
+"There are two ways we could go about mapping the table per concrete class "
+"strategy. The first is to use <literal><union-subclass></literal>."
+msgstr ""
+"Podríamos ir de dos maneras a la estrategia de mapeo de tabla por clase "
+"concreta. La primera es usar <literal><union-subclass></literal>."
-#: index.docbook:156
-msgid "Table per concrete class"
+#. Tag: programlisting
+#: inheritance_mapping.xml:163
+#, no-c-format
+msgid ""
+"<![CDATA[<class name=\"Payment\">\n"
+" <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <property name=\"amount\" column=\"AMOUNT\"/>\n"
+" ...\n"
+" <union-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
+" <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+" ...\n"
+" </union-subclass>\n"
+" <union-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+" ...\n"
+" </union-subclass>\n"
+" <union-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+" ...\n"
+" </union-subclass>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Payment\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <union-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </union-subclass>\n"
- " <union-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
- " ...\n"
- " </union-subclass>\n"
- " <union-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
- " ...\n"
- " </union-subclass>\n"
- "</class>]]>"
-#: index.docbook:158
-msgid "There are two ways we could go about mapping the table per concrete class strategy. The first is to use <literal><union-subclass></literal>."
-msgstr "Están implicadas tres tablas. Cada tabla define columnas para todas las propiedades de la clase, inccluyendo las propiedades heredadas."
+#. Tag: para
+#: inheritance_mapping.xml:165
+#, no-c-format
+msgid ""
+"Three tables are involved for the subclasses. Each table defines columns for "
+"all properties of the class, including inherited properties."
+msgstr ""
+"Están implicadas tres tablas. Cada tabla define columnas para todas las "
+"propiedades de la clase, inccluyendo las propiedades heredadas."
-#: index.docbook:163
+#. Tag: para
+#: inheritance_mapping.xml:170
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Payment\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <union-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </union-subclass>\n"
- " <union-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
- " ...\n"
- " </union-subclass>\n"
- " <union-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
- " ...\n"
- " </union-subclass>\n"
- "</class>]]>"
-msgstr "La limitación de este enfoque es que si una propiedad es mapeada en la superclase, el nombre de columna debe ser el mismo en todas las tablas de subclase. (Podríamos relajar esto en un lanzamiento futuro de Hibernate.) La estrategia de generador de indentidad no está permitida en la herencia de unión de subclase, de hecho la semilla de clave primaria tiene que ser compartida a través de todas las subclases unidas de una jerarquía."
+"The limitation of this approach is that if a property is mapped on the "
+"superclass, the column name must be the same on all subclass tables. (We "
+"might relax this in a future release of Hibernate.) The identity generator "
+"strategy is not allowed in union subclass inheritance, indeed the primary "
+"key seed has to be shared accross all unioned subclasses of a hierarchy."
+msgstr ""
+"La limitación de este enfoque es que si una propiedad es mapeada en la "
+"superclase, el nombre de columna debe ser el mismo en todas las tablas de "
+"subclase. (Podríamos relajar esto en un lanzamiento futuro de Hibernate.) La "
+"estrategia de generador de indentidad no está permitida en la herencia de "
+"unión de subclase, de hecho la semilla de clave primaria tiene que ser "
+"compartida a través de todas las subclases unidas de una jerarquía."
-#: index.docbook:165
-msgid "Three tables are involved for the subclasses. Each table defines columns for all properties of the class, including inherited properties."
-msgstr "Tabla por clase concreta, usando polimorfismo implícito"
-
-#: index.docbook:170
-msgid "The limitation of this approach is that if a property is mapped on the superclass, the column name must be the same on all subclass tables. (We might relax this in a future release of Hibernate.) The identity generator strategy is not allowed in union subclass inheritance, indeed the primary key seed has to be shared accross all unioned subclasses of a hierarchy."
-msgstr "Un enfoque alternativo es hacer uso de polimorfismo implícito:"
-
-#: index.docbook:179
-msgid "If your superclass is abstract, map it with <literal>abstract=\"true\"</literal>. Of course, if it is not abstract, an additional table (defaults to <literal>PAYMENT</literal> in the example above) is needed to hold instances of the superclass."
+#. Tag: para
+#: inheritance_mapping.xml:179
+#, no-c-format
+msgid ""
+"If your superclass is abstract, map it with <literal>abstract=\"true\"</"
+"literal>. Of course, if it is not abstract, an additional table (defaults to "
+"<literal>PAYMENT</literal> in the example above) is needed to hold instances "
+"of the superclass."
msgstr ""
- "<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
- " ...\n"
- "</class>\n"
- "\n"
- "<class name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"CASH_PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
- " ...\n"
- "</class>\n"
- "\n"
- "<class name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"CHEQUE_PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
- " ...\n"
- "</class>]]>"
+"UNTRANSLATED! If your superclass is abstract, map it with <literal>abstract="
+"\"true\"</literal>. Of course, if it is not abstract, an additional table "
+"(defaults to <literal>PAYMENT</literal> in the example above) is needed to "
+"hold instances of the superclass."
-#: index.docbook:189
+#. Tag: title
+#: inheritance_mapping.xml:189
+#, no-c-format
msgid "Table per concrete class, using implicit polymorphism"
-msgstr "Nota que en ningún sitio mencionamos la interface <literal>Payment</literal> explícitamente. Nota además que las propiedades de <literal>Payment</literal> son mapeadas en cada una de las subclases. Si quieres evitar duplicación, considera usar entidades XML. (por ejemplo, <literal>[ <!ENTITY allproperties SYSTEM \"allproperties.xml\"> ]</literal> en la declaración <literal>DOCTYPE</literal> y <literal>&allproperties;</literal> en el mapeo)."
+msgstr "Tabla por clase concreta, usando polimorfismo implícito"
-#: index.docbook:191
+#. Tag: para
+#: inheritance_mapping.xml:191
+#, no-c-format
msgid "An alternative approach is to make use of implicit polymorphism:"
-msgstr "La desventaja de este enfoque es que Hibernate no genera <literal>UNION</literal>s de SQL al realizar consultas polimórficas."
+msgstr "Un enfoque alternativo es hacer uso de polimorfismo implícito:"
-#: index.docbook:195
+#. Tag: programlisting
+#: inheritance_mapping.xml:195
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
- " ...\n"
- "</class>\n"
- "\n"
- "<class name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"CASH_PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
- " ...\n"
- "</class>\n"
- "\n"
- "<class name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"CHEQUE_PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
- " ...\n"
- "</class>]]>"
-msgstr "Para esta estrategia de mapeo, una asociación polimórfica a <literal>Payment</literal> es mapeada generalmente usando <literal><any></literal>."
+"<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
+" <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
+" ...\n"
+"</class>\n"
+"\n"
+"<class name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+" <id name=\"id\" type=\"long\" column=\"CASH_PAYMENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
+" ...\n"
+"</class>\n"
+"\n"
+"<class name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+" <id name=\"id\" type=\"long\" column=\"CHEQUE_PAYMENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
+" ...\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:197
-msgid "Notice that nowhere do we mention the <literal>Payment</literal> interface explicitly. Also notice that properties of <literal>Payment</literal> are mapped in each of the subclasses. If you want to avoid duplication, consider using XML entities (e.g. <literal>[ <!ENTITY allproperties SYSTEM \"allproperties.xml\"> ]</literal> in the <literal>DOCTYPE</literal> declartion and <literal>&allproperties;</literal> in the mapping)."
+#. Tag: para
+#: inheritance_mapping.xml:197
+#, no-c-format
+msgid ""
+"Notice that nowhere do we mention the <literal>Payment</literal> interface "
+"explicitly. Also notice that properties of <literal>Payment</literal> are "
+"mapped in each of the subclasses. If you want to avoid duplication, consider "
+"using XML entities (e.g. <literal>[ <!ENTITY allproperties SYSTEM "
+"\"allproperties.xml\"> ]</literal> in the <literal>DOCTYPE</literal> "
+"declartion and <literal>&allproperties;</literal> in the mapping)."
msgstr ""
- "<![CDATA[<any name=\"payment\" meta-type=\"string\" id-type=\"long\">\n"
- " <meta-value value=\"CREDIT\" class=\"CreditCardPayment\"/>\n"
- " <meta-value value=\"CASH\" class=\"CashPayment\"/>\n"
- " <meta-value value=\"CHEQUE\" class=\"ChequePayment\"/>\n"
- " <column name=\"PAYMENT_CLASS\"/>\n"
- " <column name=\"PAYMENT_ID\"/>\n"
- "</any>]]>"
+"Nota que en ningún sitio mencionamos la interface <literal>Payment</literal> "
+"explícitamente. Nota además que las propiedades de <literal>Payment</"
+"literal> son mapeadas en cada una de las subclases. Si quieres evitar "
+"duplicación, considera usar entidades XML. (por ejemplo, <literal>[ <!"
+"ENTITY allproperties SYSTEM \"allproperties.xml\"> ]</literal> en la "
+"declaración <literal>DOCTYPE</literal> y <literal>&allproperties;</"
+"literal> en el mapeo)."
-#: index.docbook:207
-msgid "The disadvantage of this approach is that Hibernate does not generate SQL <literal>UNION</literal>s when performing polymorphic queries."
-msgstr "Mezclando polimorfismo implícito con otros mapeos de herencia"
+#. Tag: para
+#: inheritance_mapping.xml:207
+#, no-c-format
+msgid ""
+"The disadvantage of this approach is that Hibernate does not generate SQL "
+"<literal>UNION</literal>s when performing polymorphic queries."
+msgstr ""
+"La desventaja de este enfoque es que Hibernate no genera <literal>UNION</"
+"literal>s de SQL al realizar consultas polimórficas."
-#: index.docbook:212
-msgid "For this mapping strategy, a polymorphic association to <literal>Payment</literal> is usually mapped using <literal><any></literal>."
-msgstr "Hay una cosa más por notar acerca de este mapeo. Ya que las subclases se mapean cada una en su propio elemento <literal><class></literal> (y ya que <literal>Payment</literal> es sólo una interface), cada una de las subclases podría ser parte de otra jerarquía de herencia! (Y todavía puedes seguir usando consultas polimórficas contra la interface <literal>Payment</literal>.)"
+#. Tag: para
+#: inheritance_mapping.xml:212
+#, no-c-format
+msgid ""
+"For this mapping strategy, a polymorphic association to <literal>Payment</"
+"literal> is usually mapped using <literal><any></literal>."
+msgstr ""
+"Para esta estrategia de mapeo, una asociación polimórfica a "
+"<literal>Payment</literal> es mapeada generalmente usando <literal><"
+"any></literal>."
-#: index.docbook:217
+#. Tag: programlisting
+#: inheritance_mapping.xml:217
+#, no-c-format
msgid ""
- "<![CDATA[<any name=\"payment\" meta-type=\"string\" id-type=\"long\">\n"
- " <meta-value value=\"CREDIT\" class=\"CreditCardPayment\"/>\n"
- " <meta-value value=\"CASH\" class=\"CashPayment\"/>\n"
- " <meta-value value=\"CHEQUE\" class=\"ChequePayment\"/>\n"
- " <column name=\"PAYMENT_CLASS\"/>\n"
- " <column name=\"PAYMENT_ID\"/>\n"
- "</any>]]>"
+"<![CDATA[<any name=\"payment\" meta-type=\"string\" id-type=\"long\">\n"
+" <meta-value value=\"CREDIT\" class=\"CreditCardPayment\"/>\n"
+" <meta-value value=\"CASH\" class=\"CashPayment\"/>\n"
+" <meta-value value=\"CHEQUE\" class=\"ChequePayment\"/>\n"
+" <column name=\"PAYMENT_CLASS\"/>\n"
+" <column name=\"PAYMENT_ID\"/>\n"
+"</any>]]>"
msgstr ""
- "<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"CREDIT_CARD\" type=\"string\"/>\n"
- " <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
- " ...\n"
- " <subclass name=\"MasterCardPayment\" discriminator-value=\"MDC\"/>\n"
- " <subclass name=\"VisaPayment\" discriminator-value=\"VISA\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"NonelectronicTransaction\" table=\"NONELECTRONIC_TXN\">\n"
- " <id name=\"id\" type=\"long\" column=\"TXN_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " ...\n"
- " <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- " <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- "</class>]]>"
-#: index.docbook:222
+#. Tag: title
+#: inheritance_mapping.xml:222
+#, no-c-format
msgid "Mixing implicit polymorphism with other inheritance mappings"
-msgstr "Una vez más, no mencionamos a <literal>Payment</literal> explícitamente. Si ejecutamos una consulta contra la interface <literal>Payment</literal> - por ejemplo, <literal>from Payment</literal> - Hibernate devuelve automáticamente instancias de <literal>CreditCardPayment</literal> (y sus subclases, ya que ellas también implementan <literal>Payment</literal>), <literal>CashPayment</literal> y <literal>ChequePayment</literal> pero no instancias de <literal>NonelectronicTransaction</literal>."
+msgstr "Mezclando polimorfismo implícito con otros mapeos de herencia"
-#: index.docbook:224
-msgid "There is one further thing to notice about this mapping. Since the subclasses are each mapped in their own <literal><class></literal> element (and since <literal>Payment</literal> is just an interface), each of the subclasses could easily be part of another inheritance hierarchy! (And you can still use polymorphic queries against the <literal>Payment</literal> interface.)"
-msgstr "Limitaciones"
+#. Tag: para
+#: inheritance_mapping.xml:224
+#, no-c-format
+msgid ""
+"There is one further thing to notice about this mapping. Since the "
+"subclasses are each mapped in their own <literal><class></literal> "
+"element (and since <literal>Payment</literal> is just an interface), each of "
+"the subclasses could easily be part of another inheritance hierarchy! (And "
+"you can still use polymorphic queries against the <literal>Payment</literal> "
+"interface.)"
+msgstr ""
+"Hay una cosa más por notar acerca de este mapeo. Ya que las subclases se "
+"mapean cada una en su propio elemento <literal><class></literal> (y ya "
+"que <literal>Payment</literal> es sólo una interface), cada una de las "
+"subclases podría ser parte de otra jerarquía de herencia! (Y todavía puedes "
+"seguir usando consultas polimórficas contra la interface <literal>Payment</"
+"literal>.)"
-#: index.docbook:232
+#. Tag: programlisting
+#: inheritance_mapping.xml:232
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"CREDIT_CARD\" type=\"string\"/>\n"
- " <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
- " ...\n"
- " <subclass name=\"MasterCardPayment\" discriminator-value=\"MDC\"/>\n"
- " <subclass name=\"VisaPayment\" discriminator-value=\"VISA\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"NonelectronicTransaction\" table=\"NONELECTRONIC_TXN\">\n"
- " <id name=\"id\" type=\"long\" column=\"TXN_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " ...\n"
- " <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- " <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- "</class>]]>"
-msgstr "Existen ciertas limitaciones al enfoque de \"polimorfismo implícito\" en la estrategia de mapeo de tabla por clase concreta. Existen limitaciones algo menos restrictivas a los mapeos <literal><union-subclass></literal>."
+"<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
+" <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <discriminator column=\"CREDIT_CARD\" type=\"string\"/>\n"
+" <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
+" ...\n"
+" <subclass name=\"MasterCardPayment\" discriminator-value=\"MDC\"/>\n"
+" <subclass name=\"VisaPayment\" discriminator-value=\"VISA\"/>\n"
+"</class>\n"
+"\n"
+"<class name=\"NonelectronicTransaction\" table=\"NONELECTRONIC_TXN\">\n"
+" <id name=\"id\" type=\"long\" column=\"TXN_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" ...\n"
+" <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+" <key column=\"PAYMENT_ID\"/>\n"
+" <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
+" ...\n"
+" </joined-subclass>\n"
+" <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+" <key column=\"PAYMENT_ID\"/>\n"
+" <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
+" ...\n"
+" </joined-subclass>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:234
-msgid "Once again, we don't mention <literal>Payment</literal> explicitly. If we execute a query against the <literal>Payment</literal> interface - for example, <literal>from Payment</literal> - Hibernate automatically returns instances of <literal>CreditCardPayment</literal> (and its subclasses, since they also implement <literal>Payment</literal>), <literal>CashPayment</literal> and <literal>ChequePayment</literal> but not instances of <literal>NonelectronicTransaction</literal>."
-msgstr "La siguiente tabla muestra las limitaciones de mapeos de tabla por clase concreta, y de polmorfismo implícito, en Hibernate."
+#. Tag: para
+#: inheritance_mapping.xml:234
+#, no-c-format
+msgid ""
+"Once again, we don't mention <literal>Payment</literal> explicitly. If we "
+"execute a query against the <literal>Payment</literal> interface - for "
+"example, <literal>from Payment</literal> - Hibernate automatically returns "
+"instances of <literal>CreditCardPayment</literal> (and its subclasses, since "
+"they also implement <literal>Payment</literal>), <literal>CashPayment</"
+"literal> and <literal>ChequePayment</literal> but not instances of "
+"<literal>NonelectronicTransaction</literal>."
+msgstr ""
+"Una vez más, no mencionamos a <literal>Payment</literal> explícitamente. Si "
+"ejecutamos una consulta contra la interface <literal>Payment</literal> - por "
+"ejemplo, <literal>from Payment</literal> - Hibernate devuelve "
+"automáticamente instancias de <literal>CreditCardPayment</literal> (y sus "
+"subclases, ya que ellas también implementan <literal>Payment</literal>), "
+"<literal>CashPayment</literal> y <literal>ChequePayment</literal> pero no "
+"instancias de <literal>NonelectronicTransaction</literal>."
-#: index.docbook:249
+#. Tag: title
+#: inheritance_mapping.xml:249
+#, no-c-format
msgid "Limitations"
-msgstr "Funcionalidades de mapeo de herencia"
+msgstr "Limitaciones"
-#: index.docbook:251
-msgid "There are certain limitations to the \"implicit polymorphism\" approach to the table per concrete-class mapping strategy. There are somewhat less restrictive limitations to <literal><union-subclass></literal> mappings."
-msgstr "Estrategia de herencia"
+#. Tag: para
+#: inheritance_mapping.xml:251
+#, no-c-format
+msgid ""
+"There are certain limitations to the \"implicit polymorphism\" approach to "
+"the table per concrete-class mapping strategy. There are somewhat less "
+"restrictive limitations to <literal><union-subclass></literal> "
+"mappings."
+msgstr ""
+"Existen ciertas limitaciones al enfoque de \"polimorfismo implícito\" en la "
+"estrategia de mapeo de tabla por clase concreta. Existen limitaciones algo "
+"menos restrictivas a los mapeos <literal><union-subclass></literal>."
-#: index.docbook:258
-msgid "The following table shows the limitations of table per concrete-class mappings, and of implicit polymorphism, in Hibernate."
-msgstr "muchos-a-uno polimórfica"
+#. Tag: para
+#: inheritance_mapping.xml:258
+#, no-c-format
+msgid ""
+"The following table shows the limitations of table per concrete-class "
+"mappings, and of implicit polymorphism, in Hibernate."
+msgstr ""
+"La siguiente tabla muestra las limitaciones de mapeos de tabla por clase "
+"concreta, y de polmorfismo implícito, en Hibernate."
-#: index.docbook:264
+#. Tag: title
+#: inheritance_mapping.xml:264
+#, no-c-format
msgid "Features of inheritance mappings"
-msgstr "uno-a-uno polimórfica"
+msgstr "Funcionalidades de mapeo de herencia"
-#: index.docbook:276
+#. Tag: entry
+#: inheritance_mapping.xml:276
+#, no-c-format
msgid "Inheritance strategy"
-msgstr "uno-a-muchos polimórfica"
+msgstr "Estrategia de herencia"
-#: index.docbook:277
+#. Tag: entry
+#: inheritance_mapping.xml:277
+#, no-c-format
msgid "Polymorphic many-to-one"
-msgstr "mushos-a-muchos polimórfica"
+msgstr "muchos-a-uno polimórfica"
-#: index.docbook:278
+#. Tag: entry
+#: inheritance_mapping.xml:278
+#, no-c-format
msgid "Polymorphic one-to-one"
-msgstr "<literal>load()/get()</literal> polimórficos"
+msgstr "uno-a-uno polimórfica"
-#: index.docbook:279
+#. Tag: entry
+#: inheritance_mapping.xml:279
+#, no-c-format
msgid "Polymorphic one-to-many"
-msgstr "Consultas polimórficas"
+msgstr "uno-a-muchos polimórfica"
-#: index.docbook:280
+#. Tag: entry
+#: inheritance_mapping.xml:280
+#, no-c-format
msgid "Polymorphic many-to-many"
-msgstr "Uniones polimórficas"
+msgstr "mushos-a-muchos polimórfica"
-#: index.docbook:281
+#. Tag: entry
+#: inheritance_mapping.xml:281
+#, no-c-format
msgid "Polymorphic <literal>load()/get()</literal>"
-msgstr "Recuperación por unión externa (outer join)"
+msgstr ""
-#: index.docbook:282
+#. Tag: entry
+#: inheritance_mapping.xml:282
+#, no-c-format
msgid "Polymorphic queries"
-msgstr "<entry>tabla por jerarquía de clases</entry>"
+msgstr "Consultas polimórficas"
-#: index.docbook:283
+#. Tag: entry
+#: inheritance_mapping.xml:283
+#, no-c-format
msgid "Polymorphic joins"
-msgstr "<many-to-one>"
+msgstr "Uniones polimórficas"
-#: index.docbook:284
+#. Tag: entry
+#: inheritance_mapping.xml:284
+#, no-c-format
msgid "Outer join fetching"
-msgstr "<one-to-one>"
+msgstr "Recuperación por unión externa (outer join)"
-#: index.docbook:289
+#. Tag: entry
+#: inheritance_mapping.xml:289
+#, no-c-format
msgid "table per class-hierarchy"
-msgstr "<one-to-many>"
+msgstr "tabla por jerarquía de clases"
-#: index.docbook:290, index.docbook:301, index.docbook:312
+#. Tag: literal
+#: inheritance_mapping.xml:290 inheritance_mapping.xml:301
+#: inheritance_mapping.xml:312
+#, no-c-format
msgid "<many-to-one>"
-msgstr "<many-to-many>"
+msgstr "<many-to-one>"
-#: index.docbook:291, index.docbook:302, index.docbook:313
+#. Tag: literal
+#: inheritance_mapping.xml:291 inheritance_mapping.xml:302
+#: inheritance_mapping.xml:313
+#, no-c-format
msgid "<one-to-one>"
-msgstr "s.get(Payment.class, id)"
+msgstr "<one-to-one>"
-#: index.docbook:292, index.docbook:303
+#. Tag: literal
+#: inheritance_mapping.xml:292 inheritance_mapping.xml:303
+#, no-c-format
msgid "<one-to-many>"
-msgstr "from Payment p"
+msgstr "<one-to-many>"
-#: index.docbook:293, index.docbook:304, index.docbook:315
+#. Tag: literal
+#: inheritance_mapping.xml:293 inheritance_mapping.xml:304
+#: inheritance_mapping.xml:315
+#, no-c-format
msgid "<many-to-many>"
-msgstr "from Order o join o.payment p"
+msgstr "<many-to-many>"
-#: index.docbook:294, index.docbook:305, index.docbook:316
+#. Tag: literal
+#: inheritance_mapping.xml:294 inheritance_mapping.xml:305
+#: inheritance_mapping.xml:316
+#, no-c-format
msgid "s.get(Payment.class, id)"
-msgstr "soportada"
+msgstr "s.get(Payment.class, id)"
-#: index.docbook:295, index.docbook:306, index.docbook:317, index.docbook:328
+#. Tag: literal
+#: inheritance_mapping.xml:295 inheritance_mapping.xml:306
+#: inheritance_mapping.xml:317 inheritance_mapping.xml:328
+#, no-c-format
msgid "from Payment p"
-msgstr "<entry>tabla por subclase</entry>"
+msgstr "from Payment p"
-#: index.docbook:296, index.docbook:307, index.docbook:318
+#. Tag: literal
+#: inheritance_mapping.xml:296 inheritance_mapping.xml:307
+#: inheritance_mapping.xml:318
+#, no-c-format
msgid "from Order o join o.payment p"
-msgstr "<many-to-one>"
+msgstr "from Order o join o.payment p"
-#: index.docbook:297, index.docbook:308, index.docbook:319
+#. Tag: emphasis
+#: inheritance_mapping.xml:297 inheritance_mapping.xml:308
+#: inheritance_mapping.xml:319
+#, no-c-format
msgid "supported"
-msgstr "<one-to-one>"
+msgstr "soportada"
-#: index.docbook:300
+#. Tag: entry
+#: inheritance_mapping.xml:300
+#, fuzzy, no-c-format
msgid "<entry>table per subclass</entry>"
-msgstr "<one-to-many>"
+msgstr "tabla por subclase"
-#: index.docbook:311
+#. Tag: entry
+#: inheritance_mapping.xml:311
+#, no-c-format
msgid "table per concrete-class (union-subclass)"
-msgstr "<literal><one-to-many></literal> (para <literal>inverse=\"true\"</literal> solamente)"
+msgstr "tabla por clase concreta (union-subclass)"
-#: index.docbook:314
-msgid "<literal><one-to-many></literal> (for <literal>inverse=\"true\"</literal> only)"
-msgstr "from Payment p"
+#. Tag: entry
+#: inheritance_mapping.xml:314
+#, no-c-format
+msgid ""
+"<literal><one-to-many></literal> (for <literal>inverse=\"true\"</"
+"literal> only)"
+msgstr ""
-#: index.docbook:322
+#. Tag: entry
+#: inheritance_mapping.xml:322
+#, no-c-format
msgid "table per concrete class (implicit polymorphism)"
-msgstr "no soportada"
+msgstr "tabla por clase concreta (polimorfismo implícito)"
-#: index.docbook:323
+#. Tag: literal
+#: inheritance_mapping.xml:323
+#, no-c-format
msgid "<any>"
-msgstr "<many-to-any>"
+msgstr "<any>"
-#: index.docbook:324, index.docbook:325, index.docbook:329, index.docbook:330
+#. Tag: emphasis
+#: inheritance_mapping.xml:324 inheritance_mapping.xml:325
+#: inheritance_mapping.xml:329 inheritance_mapping.xml:330
+#, fuzzy, no-c-format
msgid "not supported"
-msgstr "s.createCriteria(Payment.class).add( Restrictions.idEq(id) ).uniqueResult()"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"no soportada\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"no soportada\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"no suportadas\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"no soportada"
-#: index.docbook:326
+#. Tag: literal
+#: inheritance_mapping.xml:326
+#, no-c-format
msgid "<many-to-any>"
-msgstr "no suportadas"
+msgstr "<many-to-any>"
-#: index.docbook:327
-msgid "s.createCriteria(Payment.class).add( Restrictions.idEq(id) ).uniqueResult()"
-msgstr "no soportada"
+#. Tag: literal
+#: inheritance_mapping.xml:327
+#, no-c-format
+msgid ""
+"s.createCriteria(Payment.class).add( Restrictions.idEq(id) ).uniqueResult()"
+msgstr ""
+"s.createCriteria(Payment.class).add( Restrictions.idEq(id) ).uniqueResult()"
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+#~ msgid "load()/get()"
+#~ msgstr "load()/get()"
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+#~ msgid "Polymorphic <placeholder-1/>"
+#~ msgstr "<placeholder-1/> polimórficos"
+#~ msgid "inverse=\"true\""
+#~ msgstr "inverse=\"true\""
+
+#~ msgid "<placeholder-1/> (for <placeholder-2/> only)"
+#~ msgstr "<placeholder-1/> (para <placeholder-2/> solamente)"
Modified: core/trunk/documentation/manual/translations/es-ES/content/performance.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/performance.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/performance.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,1208 +1,2621 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: performance.xml:5
+#, no-c-format
msgid "Improving performance"
msgstr "Mejorando el rendimiento"
-#: index.docbook:8
+#. Tag: title
+#: performance.xml:8
+#, no-c-format
msgid "Fetching strategies"
-msgstr "Estrategias de recuperación"
+msgstr "Estrategias de recuperación"
-#: index.docbook:10
-msgid "A <emphasis>fetching strategy</emphasis> is the strategy Hibernate will use for retrieving associated objects if the application needs to navigate the association. Fetch strategies may be declared in the O/R mapping metadata, or over-ridden by a particular HQL or <literal>Criteria</literal> query."
-msgstr "Una <emphasis>estrategia de recuperación</emphasis> es la estrategia que usará Hibernate para recuperar los objetos asociados cuando la aplicación necesite navegar la asociación. Las estrategias de recuperación pueden ser declaradas en los metadatos de mapeo O/R, o sobrescritas por una consulta HQL o <literal>Criteria</literal> en particular."
+#. Tag: para
+#: performance.xml:10
+#, no-c-format
+msgid ""
+"A <emphasis>fetching strategy</emphasis> is the strategy Hibernate will use "
+"for retrieving associated objects if the application needs to navigate the "
+"association. Fetch strategies may be declared in the O/R mapping metadata, "
+"or over-ridden by a particular HQL or <literal>Criteria</literal> query."
+msgstr ""
+"Una <emphasis>estrategia de recuperación</emphasis> es la estrategia que "
+"usará Hibernate para recuperar los objetos asociados cuando la aplicación "
+"necesite navegar la asociación. Las estrategias de recuperación pueden ser "
+"declaradas en los metadatos de mapeo O/R, o sobrescritas por una consulta "
+"HQL o <literal>Criteria</literal> en particular."
-#: index.docbook:17
+#. Tag: para
+#: performance.xml:17
+#, no-c-format
msgid "Hibernate3 defines the following fetching strategies:"
-msgstr "Hibernate3 define las siguientes estrategias de recuperación:"
+msgstr "Hibernate3 define las siguientes estrategias de recuperación:"
-#: index.docbook:23
-msgid "<emphasis>Join fetching</emphasis> - Hibernate retrieves the associated instance or collection in the same <literal>SELECT</literal>, using an <literal>OUTER JOIN</literal>."
-msgstr "<emphasis>Recuperación por unión (join fetching)</emphasis> - Hibernate recupera la instancia asociada o colección en la misma <literal>SELECT</literal>, usando una <literal>OUTER JOIN</literal>."
+#. Tag: para
+#: performance.xml:23
+#, no-c-format
+msgid ""
+"<emphasis>Join fetching</emphasis> - Hibernate retrieves the associated "
+"instance or collection in the same <literal>SELECT</literal>, using an "
+"<literal>OUTER JOIN</literal>."
+msgstr ""
+"<emphasis>Recuperación por unión (join fetching)</emphasis> - Hibernate "
+"recupera la instancia asociada o colección en la misma <literal>SELECT</"
+"literal>, usando una <literal>OUTER JOIN</literal>."
-#: index.docbook:30
-msgid "<emphasis>Select fetching</emphasis> - a second <literal>SELECT</literal> is used to retrieve the associated entity or collection. Unless you explicitly disable lazy fetching by specifying <literal>lazy=\"false\"</literal>, this second select will only be executed when you actually access the association."
-msgstr "<emphasis>Recuperación por selección (select fetching)</emphasis> - se usa una segunda <literal>SELECT</literal> para recuperar la entidad asociada o colección. A menos que deshabilites explícitamente la recuperación perezosa especificando <literal>lazy=\"false\"</literal>, la segunda selección sólo será ejecutada cuando realmente accedas a la asociación."
+#. Tag: para
+#: performance.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Select fetching</emphasis> - a second <literal>SELECT</literal> is "
+"used to retrieve the associated entity or collection. Unless you explicitly "
+"disable lazy fetching by specifying <literal>lazy=\"false\"</literal>, this "
+"second select will only be executed when you actually access the association."
+msgstr ""
+"<emphasis>Recuperación por selección (select fetching)</emphasis> - se usa "
+"una segunda <literal>SELECT</literal> para recuperar la entidad asociada o "
+"colección. A menos que deshabilites explícitamente la recuperación perezosa "
+"especificando <literal>lazy=\"false\"</literal>, la segunda selección sólo "
+"será ejecutada cuando realmente accedas a la asociación."
-#: index.docbook:39
-msgid "<emphasis>Subselect fetching</emphasis> - a second <literal>SELECT</literal> is used to retrieve the associated collections for all entities retrieved in a previous query or fetch. Unless you explicitly disable lazy fetching by specifying <literal>lazy=\"false\"</literal>, this second select will only be executed when you actually access the association."
-msgstr "<emphasis>Recuperación por subselección (subselect fetching)</emphasis> - se usa una segunda <literal>SELECT</literal> para recuperar las colecciones asociadas de todas las entidades recuperadas en una consulta o recuperación previa. A menos que deshabilites explícitamente la recuperación perezosa especificando <literal>lazy=\"false\"</literal>, esta segunda selección sólo será ejecutada cuando realmente accedas a la asociación."
+#. Tag: para
+#: performance.xml:39
+#, no-c-format
+msgid ""
+"<emphasis>Subselect fetching</emphasis> - a second <literal>SELECT</literal> "
+"is used to retrieve the associated collections for all entities retrieved in "
+"a previous query or fetch. Unless you explicitly disable lazy fetching by "
+"specifying <literal>lazy=\"false\"</literal>, this second select will only "
+"be executed when you actually access the association."
+msgstr ""
+"<emphasis>Recuperación por subselección (subselect fetching)</emphasis> - se "
+"usa una segunda <literal>SELECT</literal> para recuperar las colecciones "
+"asociadas de todas las entidades recuperadas en una consulta o recuperación "
+"previa. A menos que deshabilites explícitamente la recuperación perezosa "
+"especificando <literal>lazy=\"false\"</literal>, esta segunda selección sólo "
+"será ejecutada cuando realmente accedas a la asociación."
-#: index.docbook:48
-msgid "<emphasis>Batch fetching</emphasis> - an optimization strategy for select fetching - Hibernate retrieves a batch of entity instances or collections in a single <literal>SELECT</literal>, by specifying a list of primary keys or foreign keys."
-msgstr "<emphasis>Recuperación en lote</emphasis> - una estrategia de optimización para la recuperación por selección - Hibernate recupera un lote de instancias de entidad o colecciones en una sola <literal>SELECT</literal>, especificando una lista de claves primarias o de claves foráneas."
+#. Tag: para
+#: performance.xml:48
+#, no-c-format
+msgid ""
+"<emphasis>Batch fetching</emphasis> - an optimization strategy for select "
+"fetching - Hibernate retrieves a batch of entity instances or collections in "
+"a single <literal>SELECT</literal>, by specifying a list of primary keys or "
+"foreign keys."
+msgstr ""
+"<emphasis>Recuperación en lote</emphasis> - una estrategia de optimización "
+"para la recuperación por selección - Hibernate recupera un lote de "
+"instancias de entidad o colecciones en una sola <literal>SELECT</literal>, "
+"especificando una lista de claves primarias o de claves foráneas."
-#: index.docbook:57
+#. Tag: para
+#: performance.xml:57
+#, no-c-format
msgid "Hibernate also distinguishes between:"
-msgstr "Hibernate también distingue entre:"
+msgstr "Hibernate también distingue entre:"
-#: index.docbook:63
-msgid "<emphasis>Immediate fetching</emphasis> - an association, collection or attribute is fetched immediately, when the owner is loaded."
-msgstr "<emphasis>Recuperación inmediata</emphasis> - una asociación, colección o atributo es recuperado inmediatamente, cuando el dueño es cargado."
+#. Tag: para
+#: performance.xml:63
+#, no-c-format
+msgid ""
+"<emphasis>Immediate fetching</emphasis> - an association, collection or "
+"attribute is fetched immediately, when the owner is loaded."
+msgstr ""
+"<emphasis>Recuperación inmediata</emphasis> - una asociación, colección o "
+"atributo es recuperado inmediatamente, cuando el dueño es cargado."
-#: index.docbook:69
-msgid "<emphasis>Lazy collection fetching</emphasis> - a collection is fetched when the application invokes an operation upon that collection. (This is the default for collections.)"
-msgstr "<emphasis>Recuperación perezosa de colecciones</emphasis> - se recupera una colección cuando la aplicación invoca una operación sobre la colección. (Esto es por defecto para las colecciones.)"
+#. Tag: para
+#: performance.xml:69
+#, no-c-format
+msgid ""
+"<emphasis>Lazy collection fetching</emphasis> - a collection is fetched when "
+"the application invokes an operation upon that collection. (This is the "
+"default for collections.)"
+msgstr ""
+"<emphasis>Recuperación perezosa de colecciones</emphasis> - se recupera una "
+"colección cuando la aplicación invoca una operación sobre la colección. "
+"(Esto es por defecto para las colecciones.)"
-#: index.docbook:76
-msgid "<emphasis>\"Extra-lazy\" collection fetching</emphasis> - individual elements of the collection are accessed from the database as needed. Hibernate tries not to fetch the whole collection into memory unless absolutely needed (suitable for very large collections)"
-msgstr "<emphasis>Recuperación por proxy</emphasis> - se recupera una asociación monovaluada cuando se invoca un método que no sea el getter del identificador sobre el objeto asociado."
+#. Tag: para
+#: performance.xml:76
+#, no-c-format
+msgid ""
+"<emphasis>\"Extra-lazy\" collection fetching</emphasis> - individual "
+"elements of the collection are accessed from the database as needed. "
+"Hibernate tries not to fetch the whole collection into memory unless "
+"absolutely needed (suitable for very large collections)"
+msgstr ""
+"<emphasis>\"Extra-lazy\" collection fetching</emphasis> - individual "
+"elements of the collection are accessed from the database as needed. "
+"Hibernate tries not to fetch the whole collection into memory unless "
+"absolutely needed (suitable for very large collections)"
-#: index.docbook:84
-msgid "<emphasis>Proxy fetching</emphasis> - a single-valued association is fetched when a method other than the identifier getter is invoked upon the associated object."
-msgstr "<emphasis>Recuperación perezosa de atributos</emphasis> - se recupera un atributo o una asociación monovaluada cuando se accede a la variable de instancia (requiere instrumentación del bytecode en tiempo de ejecución). Este enfoque es raramente necesario."
+#. Tag: para
+#: performance.xml:84
+#, no-c-format
+msgid ""
+"<emphasis>Proxy fetching</emphasis> - a single-valued association is fetched "
+"when a method other than the identifier getter is invoked upon the "
+"associated object."
+msgstr ""
+"<emphasis>Proxy fetching</emphasis> - a single-valued association is fetched "
+"when a method other than the identifier getter is invoked upon the "
+"associated object."
-#: index.docbook:91
-msgid "<emphasis>\"No-proxy\" fetching</emphasis> - a single-valued association is fetched when the instance variable is accessed. Compared to proxy fetching, this approach is less lazy (the association is fetched even when only the identifier is accessed) but more transparent, since no proxy is visible to the application. This approach requires buildtime bytecode instrumentation and is rarely necessary."
-msgstr "Aquí tenemos dos nociones ortogonales: <emphasis>cuándo</emphasis> se recupera la aplicación, y <emphasis>cómo</emphasis> es recuperada (qué SQL es usado). ¡No las confundas! Usamos <literal>fetch</literal> para afinar el rendimiento. Podemos usar <literal>lazy</literal> para definir un contrato sobre qué datos están siempre disponibles en cualquier instancia separada de una clase en particular."
+#. Tag: para
+#: performance.xml:91
+#, no-c-format
+msgid ""
+"<emphasis>\"No-proxy\" fetching</emphasis> - a single-valued association is "
+"fetched when the instance variable is accessed. Compared to proxy fetching, "
+"this approach is less lazy (the association is fetched even when only the "
+"identifier is accessed) but more transparent, since no proxy is visible to "
+"the application. This approach requires buildtime bytecode instrumentation "
+"and is rarely necessary."
+msgstr ""
+"<emphasis>Recuperación por proxy</emphasis> - se recupera una asociación "
+"monovaluada cuando se invoca un método que no sea el getter del "
+"identificador sobre el objeto asociado."
-#: index.docbook:101
-msgid "<emphasis>Lazy attribute fetching</emphasis> - an attribute or single valued association is fetched when the instance variable is accessed. This approach requires buildtime bytecode instrumentation and is rarely necessary."
-msgstr "Trabajando con asociaciones perezosas"
+#. Tag: para
+#: performance.xml:101
+#, no-c-format
+msgid ""
+"<emphasis>Lazy attribute fetching</emphasis> - an attribute or single valued "
+"association is fetched when the instance variable is accessed. This approach "
+"requires buildtime bytecode instrumentation and is rarely necessary."
+msgstr ""
+"<emphasis>Recuperación perezosa de atributos</emphasis> - se recupera un "
+"atributo o una asociación monovaluada cuando se accede a la variable de "
+"instancia (requiere instrumentación del bytecode en tiempo de ejecución). "
+"Este enfoque es raramente necesario."
-#: index.docbook:110
-msgid "We have two orthogonal notions here: <emphasis>when</emphasis> is the association fetched, and <emphasis>how</emphasis> is it fetched (what SQL is used). Don't confuse them! We use <literal>fetch</literal> to tune performance. We may use <literal>lazy</literal> to define a contract for what data is always available in any detached instance of a particular class."
-msgstr "Por defecto, Hibernate3 usa una recuperación perezosa por selección para colecciones y una recuperación por proxy perezosa para asociaciones monovaluadas. Estas políticas por defecto tienen sentido para casi todas las asociaciones en casi todas las aplicaciones."
+#. Tag: para
+#: performance.xml:110
+#, no-c-format
+msgid ""
+"We have two orthogonal notions here: <emphasis>when</emphasis> is the "
+"association fetched, and <emphasis>how</emphasis> is it fetched (what SQL is "
+"used). Don't confuse them! We use <literal>fetch</literal> to tune "
+"performance. We may use <literal>lazy</literal> to define a contract for "
+"what data is always available in any detached instance of a particular class."
+msgstr ""
+"Aquí tenemos dos nociones ortogonales: <emphasis>cuándo</emphasis> se "
+"recupera la aplicación, y <emphasis>cómo</emphasis> es recuperada (qué SQL "
+"es usado). ¡No las confundas! Usamos <literal>fetch</literal> para afinar el "
+"rendimiento. Podemos usar <literal>lazy</literal> para definir un contrato "
+"sobre qué datos están siempre disponibles en cualquier instancia separada de "
+"una clase en particular."
-#: index.docbook:119
+#. Tag: title
+#: performance.xml:119
+#, no-c-format
msgid "Working with lazy associations"
-msgstr "<emphasis>Nota:</emphasis> si estableces <literal>hibernate.default_batch_fetch_size</literal>, Hibernate usará la optimización de recuperación en lotes para recuperación perezosa (esta optimización también puede ser habilitada a un nivel más granularizado)."
+msgstr "Trabajando con asociaciones perezosas"
-#: index.docbook:121
-msgid "By default, Hibernate3 uses lazy select fetching for collections and lazy proxy fetching for single-valued associations. These defaults make sense for almost all associations in almost all applications."
-msgstr "Sin embargo, la recuperación perezosa plantea un problema del que tienes que estar al tanto. Acceder a una asociación perezosa fuera del contexto de una sesión de Hibernate abierta resultará en una excepción. Por ejemplo:"
+#. Tag: para
+#: performance.xml:121
+#, no-c-format
+msgid ""
+"By default, Hibernate3 uses lazy select fetching for collections and lazy "
+"proxy fetching for single-valued associations. These defaults make sense for "
+"almost all associations in almost all applications."
+msgstr ""
+"Por defecto, Hibernate3 usa una recuperación perezosa por selección para "
+"colecciones y una recuperación por proxy perezosa para asociaciones "
+"monovaluadas. Estas políticas por defecto tienen sentido para casi todas las "
+"asociaciones en casi todas las aplicaciones."
-#: index.docbook:127
-msgid "<emphasis>Note:</emphasis> if you set <literal>hibernate.default_batch_fetch_size</literal>, Hibernate will use the batch fetch optimization for lazy fetching (this optimization may also be enabled at a more granular level)."
+#. Tag: para
+#: performance.xml:127
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> if you set <literal>hibernate."
+"default_batch_fetch_size</literal>, Hibernate will use the batch fetch "
+"optimization for lazy fetching (this optimization may also be enabled at a "
+"more granular level)."
msgstr ""
- "<![CDATA[s = sessions.openSession();\n"
- "Transaction tx = s.beginTransaction();\n"
- " \n"
- "User u = (User) s.createQuery(\"from User u where u.name=:userName\")\n"
- " .setString(\"userName\", userName).uniqueResult();\n"
- "Map permissions = u.getPermissions();\n"
- "\n"
- "tx.commit();\n"
- "s.close();\n"
- "\n"
- "Integer accessLevel = (Integer) permissions.get(\"accounts\"); // Error!]]>"
+"<emphasis>Nota:</emphasis> si estableces <literal>hibernate."
+"default_batch_fetch_size</literal>, Hibernate usará la optimización de "
+"recuperación en lotes para recuperación perezosa (esta optimización también "
+"puede ser habilitada a un nivel más granularizado)."
-#: index.docbook:134
-msgid "However, lazy fetching poses one problem that you must be aware of. Access to a lazy association outside of the context of an open Hibernate session will result in an exception. For example:"
-msgstr "Ya que la colección de permisos no fue inicializada cuando se cerró la <literal>Session</literal>, la colección no será capaz de cargar su estado. <emphasis>Hibernate no soporta la inicialización perezosa de objetos separados</emphasis>. La solución es mover el código que lee de la colección a justo antes que la transacción sea comprometida."
+#. Tag: para
+#: performance.xml:134
+#, no-c-format
+msgid ""
+"However, lazy fetching poses one problem that you must be aware of. Access "
+"to a lazy association outside of the context of an open Hibernate session "
+"will result in an exception. For example:"
+msgstr ""
+"Sin embargo, la recuperación perezosa plantea un problema del que tienes que "
+"estar al tanto. Acceder a una asociación perezosa fuera del contexto de una "
+"sesión de Hibernate abierta resultará en una excepción. Por ejemplo:"
-#: index.docbook:140
+#. Tag: programlisting
+#: performance.xml:140
+#, no-c-format
msgid ""
- "<![CDATA[s = sessions.openSession();\n"
- "Transaction tx = s.beginTransaction();\n"
- " \n"
- "User u = (User) s.createQuery(\"from User u where u.name=:userName\")\n"
- " .setString(\"userName\", userName).uniqueResult();\n"
- "Map permissions = u.getPermissions();\n"
- "\n"
- "tx.commit();\n"
- "s.close();\n"
- "\n"
- "Integer accessLevel = (Integer) permissions.get(\"accounts\"); // Error!]]>"
-msgstr "Alternativamente, podríamos usar una colección no perezosa o asociación, especificando <literal>lazy=\"false\"</literal> para el mapeo de asociación. Sin embargo, está pensado que la inicialización perezosa sea usada para casi todas las colecciones y asociaciones. ¡Si defines demasiadas asociaciones no perezosas en tu modelo de objetos, Hibernate terminará necesitando recuperar la base de datos entera en cada transacción!"
+"<![CDATA[s = sessions.openSession();\n"
+"Transaction tx = s.beginTransaction();\n"
+" \n"
+"User u = (User) s.createQuery(\"from User u where u.name=:userName\")\n"
+" .setString(\"userName\", userName).uniqueResult();\n"
+"Map permissions = u.getPermissions();\n"
+"\n"
+"tx.commit();\n"
+"s.close();\n"
+"\n"
+"Integer accessLevel = (Integer) permissions.get(\"accounts\"); // Error!]]>"
+msgstr ""
-#: index.docbook:142
-msgid "Since the permissions collection was not initialized when the <literal>Session</literal> was closed, the collection will not be able to load its state. <emphasis>Hibernate does not support lazy initialization for detached objects</emphasis>. The fix is to move the code that reads from the collection to just before the transaction is committed."
-msgstr "Por otro lado, frecuentemente necesitamos elegir la recuperación por unión (que es no perezosa por naturaleza) en vez de la recuperación por selección en una transacción en particular. Veremos ahora cómo personalizar la estrategia de recuperación. En Hibernate3, los mecanismos para elegir una estrategia de recuperación son idénticas a las de las asociaciones monovaluadas y colecciones."
+#. Tag: para
+#: performance.xml:142
+#, no-c-format
+msgid ""
+"Since the permissions collection was not initialized when the "
+"<literal>Session</literal> was closed, the collection will not be able to "
+"load its state. <emphasis>Hibernate does not support lazy initialization for "
+"detached objects</emphasis>. The fix is to move the code that reads from the "
+"collection to just before the transaction is committed."
+msgstr ""
+"Ya que la colección de permisos no fue inicializada cuando se cerró la "
+"<literal>Session</literal>, la colección no será capaz de cargar su estado. "
+"<emphasis>Hibernate no soporta la inicialización perezosa de objetos "
+"separados</emphasis>. La solución es mover el código que lee de la colección "
+"a justo antes que la transacción sea comprometida."
-#: index.docbook:150
-msgid "Alternatively, we could use a non-lazy collection or association, by specifying <literal>lazy=\"false\"</literal> for the association mapping. However, it is intended that lazy initialization be used for almost all collections and associations. If you define too many non-lazy associations in your object model, Hibernate will end up needing to fetch the entire database into memory in every transaction!"
-msgstr "Afinando las estrategias de recuperación"
+#. Tag: para
+#: performance.xml:150
+#, no-c-format
+msgid ""
+"Alternatively, we could use a non-lazy collection or association, by "
+"specifying <literal>lazy=\"false\"</literal> for the association mapping. "
+"However, it is intended that lazy initialization be used for almost all "
+"collections and associations. If you define too many non-lazy associations "
+"in your object model, Hibernate will end up needing to fetch the entire "
+"database into memory in every transaction!"
+msgstr ""
+"Alternativamente, podríamos usar una colección no perezosa o asociación, "
+"especificando <literal>lazy=\"false\"</literal> para el mapeo de asociación. "
+"Sin embargo, está pensado que la inicialización perezosa sea usada para casi "
+"todas las colecciones y asociaciones. ¡Si defines demasiadas asociaciones no "
+"perezosas en tu modelo de objetos, Hibernate terminará necesitando recuperar "
+"la base de datos entera en cada transacción!"
-#: index.docbook:159
-msgid "On the other hand, we often want to choose join fetching (which is non-lazy by nature) instead of select fetching in a particular transaction. We'll now see how to customize the fetching strategy. In Hibernate3, the mechanisms for choosing a fetch strategy are identical for single-valued associations and collections."
-msgstr "La recuperación por selección (la preestablecida) es extremadamente vulnerable a problemas de selección N+1, de modo querríamos habilitar la recuperación por unión (join fetching) en el documento de mapeo:"
+#. Tag: para
+#: performance.xml:159
+#, no-c-format
+msgid ""
+"On the other hand, we often want to choose join fetching (which is non-lazy "
+"by nature) instead of select fetching in a particular transaction. We'll now "
+"see how to customize the fetching strategy. In Hibernate3, the mechanisms "
+"for choosing a fetch strategy are identical for single-valued associations "
+"and collections."
+msgstr ""
+"Por otro lado, frecuentemente necesitamos elegir la recuperación por unión "
+"(que es no perezosa por naturaleza) en vez de la recuperación por selección "
+"en una transacción en particular. Veremos ahora cómo personalizar la "
+"estrategia de recuperación. En Hibernate3, los mecanismos para elegir una "
+"estrategia de recuperación son idénticas a las de las asociaciones "
+"monovaluadas y colecciones."
-#: index.docbook:170
+#. Tag: title
+#: performance.xml:170
+#, no-c-format
msgid "Tuning fetch strategies"
+msgstr "Afinando las estrategias de recuperación"
+
+#. Tag: para
+#: performance.xml:172
+#, no-c-format
+msgid ""
+"Select fetching (the default) is extremely vulnerable to N+1 selects "
+"problems, so we might want to enable join fetching in the mapping document:"
msgstr ""
- "<![CDATA[<set name=\"permissions\" \n"
- " fetch=\"join\">\n"
- " <key column=\"userId\"/>\n"
- " <one-to-many class=\"Permission\"/>\n"
- "</set]]>"
+"La recuperación por selección (la preestablecida) es extremadamente "
+"vulnerable a problemas de selección N+1, de modo querríamos habilitar la "
+"recuperación por unión (join fetching) en el documento de mapeo:"
-#: index.docbook:172
-msgid "Select fetching (the default) is extremely vulnerable to N+1 selects problems, so we might want to enable join fetching in the mapping document:"
-msgstr "<![CDATA[<many-to-one name=\"mother\" class=\"Cat\" fetch=\"join\"/>]]>"
-
-#: index.docbook:177
+#. Tag: programlisting
+#: performance.xml:177
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"permissions\" \n"
- " fetch=\"join\">\n"
- " <key column=\"userId\"/>\n"
- " <one-to-many class=\"Permission\"/>\n"
- "</set]]>"
-msgstr "La estrategia de recuperación definida en el documento de mapeo afecta a:"
+"<![CDATA[<set name=\"permissions\" \n"
+" fetch=\"join\">\n"
+" <key column=\"userId\"/>\n"
+" <one-to-many class=\"Permission\"/>\n"
+"</set]]>"
+msgstr ""
-#: index.docbook:179
+#. Tag: programlisting
+#: performance.xml:179
+#, no-c-format
msgid "<![CDATA[<many-to-one name=\"mother\" class=\"Cat\" fetch=\"join\"/>]]>"
-msgstr "las recuperaciones vía <literal>get()</literal> o <literal>load()</literal>"
+msgstr ""
-#: index.docbook:181
-msgid "The <literal>fetch</literal> strategy defined in the mapping document affects:"
-msgstr "las recuperaciones que ocurren implícitamente cuando se navega una asociación (recuperación perezosa)"
+#. Tag: para
+#: performance.xml:181
+#, no-c-format
+msgid ""
+"The <literal>fetch</literal> strategy defined in the mapping document "
+"affects:"
+msgstr ""
+"La estrategia de recuperación definida en el documento de mapeo afecta a:"
-#: index.docbook:187
+#. Tag: para
+#: performance.xml:187
+#, no-c-format
msgid "retrieval via <literal>get()</literal> or <literal>load()</literal>"
-msgstr "las consultas de <literal>Criteria</literal>"
+msgstr ""
+"las recuperaciones vía <literal>get()</literal> o <literal>load()</literal>"
-#: index.docbook:192
+#. Tag: para
+#: performance.xml:192
+#, no-c-format
msgid "retrieval that happens implicitly when an association is navigated"
-msgstr "Usualmente, no usamos el documento de mapeo para personalizar la recuperación. En cambio, mantenemos el comportamiento por defecto, y lo sobrescribimos para una transacción en particular, usando <literal>left join fetch</literal> en HQL. Esto le dice a Hibernate que recupere la asociación tempranamente en la primera selección, usando una unión externa. En la API de consulta de <literal>Criteria</literal>, usarías <literal>setFetchMode(FetchMode.JOIN)</literal>."
+msgstr ""
+"las recuperaciones que ocurren implícitamente cuando se navega una "
+"asociación (recuperación perezosa)"
-#: index.docbook:197
+#. Tag: para
+#: performance.xml:197
+#, no-c-format
msgid "<literal>Criteria</literal> queries"
-msgstr "Si acaso lo deseases, podrías cambiar la estrategia de recuperación usada por <literal>get()</literal> or <literal>load()</literal>; simplemente usa una consulta <literal>Criteria</literal>, por ejemplo:"
+msgstr "las consultas de <literal>Criteria</literal>"
-#: index.docbook:202
+#. Tag: para
+#: performance.xml:202
+#, no-c-format
msgid "HQL queries if <literal>subselect</literal> fetching is used"
+msgstr "HQL queries if <literal>subselect</literal> fetching is used"
+
+#. Tag: para
+#: performance.xml:208
+#, no-c-format
+msgid ""
+"No matter what fetching strategy you use, the defined non-lazy graph is "
+"guaranteed to be loaded into memory. Note that this might result in several "
+"immediate selects being used to execute a particular HQL query."
msgstr ""
- "<![CDATA[User user = (User) session.createCriteria(User.class)\n"
- " .setFetchMode(\"permissions\", FetchMode.JOIN)\n"
- " .add( Restrictions.idEq(userId) )\n"
- " .uniqueResult();]]>"
+"No matter what fetching strategy you use, the defined non-lazy graph is "
+"guaranteed to be loaded into memory. Note that this might result in several "
+"immediate selects being used to execute a particular HQL query."
-#: index.docbook:208
-msgid "No matter what fetching strategy you use, the defined non-lazy graph is guaranteed to be loaded into memory. Note that this might result in several immediate selects being used to execute a particular HQL query."
-msgstr "(Esto es el equivalente de Hibernate de lo que otras soluciones ORM llaman un \"plan de recuperación\".)"
+#. Tag: para
+#: performance.xml:214
+#, no-c-format
+msgid ""
+"Usually, we don't use the mapping document to customize fetching. Instead, "
+"we keep the default behavior, and override it for a particular transaction, "
+"using <literal>left join fetch</literal> in HQL. This tells Hibernate to "
+"fetch the association eagerly in the first select, using an outer join. In "
+"the <literal>Criteria</literal> query API, you would use "
+"<literal>setFetchMode(FetchMode.JOIN)</literal>."
+msgstr ""
+"Usualmente, no usamos el documento de mapeo para personalizar la "
+"recuperación. En cambio, mantenemos el comportamiento por defecto, y lo "
+"sobrescribimos para una transacción en particular, usando <literal>left join "
+"fetch</literal> en HQL. Esto le dice a Hibernate que recupere la asociación "
+"tempranamente en la primera selección, usando una unión externa. En la API "
+"de consulta de <literal>Criteria</literal>, usarías <literal>setFetchMode"
+"(FetchMode.JOIN)</literal>."
-#: index.docbook:214
-msgid "Usually, we don't use the mapping document to customize fetching. Instead, we keep the default behavior, and override it for a particular transaction, using <literal>left join fetch</literal> in HQL. This tells Hibernate to fetch the association eagerly in the first select, using an outer join. In the <literal>Criteria</literal> query API, you would use <literal>setFetchMode(FetchMode.JOIN)</literal>."
-msgstr "Una forma completamente diferente de evitar problemas con selecciones N+1 es usar el caché de segundo nivel."
+#. Tag: para
+#: performance.xml:223
+#, no-c-format
+msgid ""
+"If you ever feel like you wish you could change the fetching strategy used "
+"by <literal>get()</literal> or <literal>load()</literal>, simply use a "
+"<literal>Criteria</literal> query, for example:"
+msgstr ""
+"Si acaso lo deseases, podrías cambiar la estrategia de recuperación usada "
+"por <literal>get()</literal> or <literal>load()</literal>; simplemente usa "
+"una consulta <literal>Criteria</literal>, por ejemplo:"
-#: index.docbook:223
-msgid "If you ever feel like you wish you could change the fetching strategy used by <literal>get()</literal> or <literal>load()</literal>, simply use a <literal>Criteria</literal> query, for example:"
-msgstr "Proxies de asociaciones de un solo extremo"
+#. Tag: programlisting
+#: performance.xml:229
+#, no-c-format
+msgid ""
+"<![CDATA[User user = (User) session.createCriteria(User.class)\n"
+" .setFetchMode(\"permissions\", FetchMode.JOIN)\n"
+" .add( Restrictions.idEq(userId) )\n"
+" .uniqueResult();]]>"
+msgstr ""
-#: index.docbook:229
+#. Tag: para
+#: performance.xml:231
+#, no-c-format
msgid ""
- "<![CDATA[User user = (User) session.createCriteria(User.class)\n"
- " .setFetchMode(\"permissions\", FetchMode.JOIN)\n"
- " .add( Restrictions.idEq(userId) )\n"
- " .uniqueResult();]]>"
-msgstr "La recuperación perezosa de colecciones está implementada usando la implementación de colecciones persistentes propia de Hibernate. Sin embargo, se necesita un mecanismo diferente para un comportamiento perezoso en las asociaciones de un solo extremo. La entidad objetivo de la asociación debe ser tratada con proxies. Hibernate implementa proxies de inicialización perezosa para objetos persistentes usando mejora del bytecode en tiempo de ejecución (por medio de la excelente biblioteca CGLIB)."
+"(This is Hibernate's equivalent of what some ORM solutions call a \"fetch "
+"plan\".)"
+msgstr ""
+"(Esto es el equivalente de Hibernate de lo que otras soluciones ORM llaman "
+"un \"plan de recuperación\".)"
-#: index.docbook:231
-msgid "(This is Hibernate's equivalent of what some ORM solutions call a \"fetch plan\".)"
-msgstr "Por defecto, Hibernate3 genera proxies (en el arranque) para todas las clases persistentes y los usa para habilitar la recuperación perezosa de asociaciones <literal>muchos-a-uno</literal> y <literal>uno-a-uno</literal>."
+#. Tag: para
+#: performance.xml:235
+#, no-c-format
+msgid ""
+"A completely different way to avoid problems with N+1 selects is to use the "
+"second-level cache."
+msgstr ""
+"Una forma completamente diferente de evitar problemas con selecciones N+1 es "
+"usar el caché de segundo nivel."
-#: index.docbook:235
-msgid "A completely different way to avoid problems with N+1 selects is to use the second-level cache."
-msgstr "El fichero de mapeo puede declarar una interface a usar como interface de proxy para esa clase, con el atributo <literal>proxy</literal>. Por defecto, Hibernate usa una subclase de la clase. <emphasis>Nota que la clase tratada con proxies debe implementar un constructor por defecto con al menos visibilidad de paquete. ¡Recomendamos este constructor para todas las clases persistentes!</emphasis>"
-
-#: index.docbook:243
+#. Tag: title
+#: performance.xml:243
+#, no-c-format
msgid "Single-ended association proxies"
-msgstr "Hay algunos puntos a tener en cuenta al extender este enfoque a clases polimórficas, por ejemplo."
+msgstr "Proxies de asociaciones de un solo extremo"
-#: index.docbook:245
-msgid "Lazy fetching for collections is implemented using Hibernate's own implementation of persistent collections. However, a different mechanism is needed for lazy behavior in single-ended associations. The target entity of the association must be proxied. Hibernate implements lazy initializing proxies for persistent objects using runtime bytecode enhancement (via the excellent CGLIB library)."
+#. Tag: para
+#: performance.xml:245
+#, no-c-format
+msgid ""
+"Lazy fetching for collections is implemented using Hibernate's own "
+"implementation of persistent collections. However, a different mechanism is "
+"needed for lazy behavior in single-ended associations. The target entity of "
+"the association must be proxied. Hibernate implements lazy initializing "
+"proxies for persistent objects using runtime bytecode enhancement (via the "
+"excellent CGLIB library)."
msgstr ""
- "<![CDATA[<class name=\"Cat\" proxy=\"Cat\">\n"
- " ......\n"
- " <subclass name=\"DomesticCat\">\n"
- " .....\n"
- " </subclass>\n"
- "</class>]]>"
+"La recuperación perezosa de colecciones está implementada usando la "
+"implementación de colecciones persistentes propia de Hibernate. Sin embargo, "
+"se necesita un mecanismo diferente para un comportamiento perezoso en las "
+"asociaciones de un solo extremo. La entidad objetivo de la asociación debe "
+"ser tratada con proxies. Hibernate implementa proxies de inicialización "
+"perezosa para objetos persistentes usando mejora del bytecode en tiempo de "
+"ejecución (por medio de la excelente biblioteca CGLIB)."
-#: index.docbook:253
-msgid "By default, Hibernate3 generates proxies (at startup) for all persistent classes and uses them to enable lazy fetching of <literal>many-to-one</literal> and <literal>one-to-one</literal> associations."
-msgstr "Primero, las instancias de <literal>Cat</literal> nunca serán objeto de un cast a <literal>DomesticCat</literal>, incluso aunque la instancia subyacente sea instancia de <literal>DomesticCat</literal>:"
+#. Tag: para
+#: performance.xml:253
+#, no-c-format
+msgid ""
+"By default, Hibernate3 generates proxies (at startup) for all persistent "
+"classes and uses them to enable lazy fetching of <literal>many-to-one</"
+"literal> and <literal>one-to-one</literal> associations."
+msgstr ""
+"Por defecto, Hibernate3 genera proxies (en el arranque) para todas las "
+"clases persistentes y los usa para habilitar la recuperación perezosa de "
+"asociaciones <literal>muchos-a-uno</literal> y <literal>uno-a-uno</literal>."
-#: index.docbook:259
-msgid "The mapping file may declare an interface to use as the proxy interface for that class, with the <literal>proxy</literal> attribute. By default, Hibernate uses a subclass of the class. <emphasis>Note that the proxied class must implement a default constructor with at least package visibility. We recommend this constructor for all persistent classes!</emphasis>"
+#. Tag: para
+#: performance.xml:259
+#, no-c-format
+msgid ""
+"The mapping file may declare an interface to use as the proxy interface for "
+"that class, with the <literal>proxy</literal> attribute. By default, "
+"Hibernate uses a subclass of the class. <emphasis>Note that the proxied "
+"class must implement a default constructor with at least package visibility. "
+"We recommend this constructor for all persistent classes!</emphasis>"
msgstr ""
- "<![CDATA[Cat cat = (Cat) session.load(Cat.class, id); // instantiate a proxy (does not hit the db)\n"
- "if ( cat.isDomesticCat() ) { // hit the db to initialize the proxy\n"
- " DomesticCat dc = (DomesticCat) cat; // Error!\n"
- " ....\n"
- "}]]>"
+"El fichero de mapeo puede declarar una interface a usar como interface de "
+"proxy para esa clase, con el atributo <literal>proxy</literal>. Por defecto, "
+"Hibernate usa una subclase de la clase. <emphasis>Nota que la clase tratada "
+"con proxies debe implementar un constructor por defecto con al menos "
+"visibilidad de paquete. ¡Recomendamos este constructor para todas las clases "
+"persistentes!</emphasis>"
-#: index.docbook:266
-msgid "There are some gotchas to be aware of when extending this approach to polymorphic classes, eg."
-msgstr "Segundo, es posible romper con el operador <literal>==</literal> de un proxy."
+#. Tag: para
+#: performance.xml:266
+#, no-c-format
+msgid ""
+"There are some gotchas to be aware of when extending this approach to "
+"polymorphic classes, eg."
+msgstr ""
+"Hay algunos puntos a tener en cuenta al extender este enfoque a clases "
+"polimórficas, por ejemplo."
-#: index.docbook:271
+#. Tag: programlisting
+#: performance.xml:271
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Cat\" proxy=\"Cat\">\n"
- " ......\n"
- " <subclass name=\"DomesticCat\">\n"
- " .....\n"
- " </subclass>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Cat\" proxy=\"Cat\">\n"
+" ......\n"
+" <subclass name=\"DomesticCat\">\n"
+" .....\n"
+" </subclass>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[Cat cat = (Cat) session.load(Cat.class, id); // instantiate a Cat proxy\n"
- "DomesticCat dc = \n"
- " (DomesticCat) session.load(DomesticCat.class, id); // acquire new DomesticCat proxy!\n"
- "System.out.println(cat==dc); // false]]>"
-#: index.docbook:273
-msgid "Firstly, instances of <literal>Cat</literal> will never be castable to <literal>DomesticCat</literal>, even if the underlying instance is an instance of <literal>DomesticCat</literal>:"
-msgstr "Sin embargo, la situación no en absoluta tan mala como parece. Aunque tenemos ahora dos referencias a objetos proxy diferentes, la instancia subyacente será aún el mismo objeto:"
+#. Tag: para
+#: performance.xml:273
+#, no-c-format
+msgid ""
+"Firstly, instances of <literal>Cat</literal> will never be castable to "
+"<literal>DomesticCat</literal>, even if the underlying instance is an "
+"instance of <literal>DomesticCat</literal>:"
+msgstr ""
+"Primero, las instancias de <literal>Cat</literal> nunca serán objeto de un "
+"cast a <literal>DomesticCat</literal>, incluso aunque la instancia "
+"subyacente sea instancia de <literal>DomesticCat</literal>:"
-#: index.docbook:279
+#. Tag: programlisting
+#: performance.xml:279
+#, no-c-format
msgid ""
- "<![CDATA[Cat cat = (Cat) session.load(Cat.class, id); // instantiate a proxy (does not hit the db)\n"
- "if ( cat.isDomesticCat() ) { // hit the db to initialize the proxy\n"
- " DomesticCat dc = (DomesticCat) cat; // Error!\n"
- " ....\n"
- "}]]>"
+"<![CDATA[Cat cat = (Cat) session.load(Cat.class, id); // instantiate a "
+"proxy (does not hit the db)\n"
+"if ( cat.isDomesticCat() ) { // hit the db to initialize "
+"the proxy\n"
+" DomesticCat dc = (DomesticCat) cat; // Error!\n"
+" ....\n"
+"}]]>"
msgstr ""
- "<![CDATA[cat.setWeight(11.0); // hit the db to initialize the proxy\n"
- "System.out.println( dc.getWeight() ); // 11.0]]>"
-#: index.docbook:281
+#. Tag: para
+#: performance.xml:281
+#, no-c-format
msgid "Secondly, it is possible to break proxy <literal>==</literal>."
-msgstr "Tercero, no debes usar un proxy CGLIB para una clase <literal>final</literal> o una clase con algún método <literal>final</literal>."
+msgstr ""
+"Segundo, es posible romper con el operador <literal>==</literal> de un proxy."
-#: index.docbook:285
+#. Tag: programlisting
+#: performance.xml:285
+#, no-c-format
msgid ""
- "<![CDATA[Cat cat = (Cat) session.load(Cat.class, id); // instantiate a Cat proxy\n"
- "DomesticCat dc = \n"
- " (DomesticCat) session.load(DomesticCat.class, id); // acquire new DomesticCat proxy!\n"
- "System.out.println(cat==dc); // false]]>"
-msgstr "Finalmente, si tu objeto persistente adquiere cualquier recurso bajo instanciación (por ejemplo, en inicializadores o constructores por defecto), entonces esos recursos serán adquiridos también por el proxy. La clase del proxy es una subclase real de la clase persistente."
+"<![CDATA[Cat cat = (Cat) session.load(Cat.class, id); // "
+"instantiate a Cat proxy\n"
+"DomesticCat dc = \n"
+" (DomesticCat) session.load(DomesticCat.class, id); // acquire new "
+"DomesticCat proxy!\n"
+"System.out.println(cat==dc); // false]]>"
+msgstr ""
-#: index.docbook:287
-msgid "However, the situation is not quite as bad as it looks. Even though we now have two references to different proxy objects, the underlying instance will still be the same object:"
-msgstr "Estos problemas se deben a limitaciones fundamentales en el modelo de herencia única de Java. Si deseas evitar estos problemas cada una de tus clases persistentes deben implementar una interface que declare sus métodos de negocio. Debes especificar estas interfaces en el fichero de mapeo. Por ejemplo:"
+#. Tag: para
+#: performance.xml:287
+#, no-c-format
+msgid ""
+"However, the situation is not quite as bad as it looks. Even though we now "
+"have two references to different proxy objects, the underlying instance will "
+"still be the same object:"
+msgstr ""
+"Sin embargo, la situación no en absoluta tan mala como parece. Aunque "
+"tenemos ahora dos referencias a objetos proxy diferentes, la instancia "
+"subyacente será aún el mismo objeto:"
-#: index.docbook:292
+#. Tag: programlisting
+#: performance.xml:292
+#, no-c-format
msgid ""
- "<![CDATA[cat.setWeight(11.0); // hit the db to initialize the proxy\n"
- "System.out.println( dc.getWeight() ); // 11.0]]>"
+"<![CDATA[cat.setWeight(11.0); // hit the db to initialize the proxy\n"
+"System.out.println( dc.getWeight() ); // 11.0]]>"
msgstr ""
- "<![CDATA[<class name=\"CatImpl\" proxy=\"Cat\">\n"
- " ......\n"
- " <subclass name=\"DomesticCatImpl\" proxy=\"DomesticCat\">\n"
- " .....\n"
- " </subclass>\n"
- "</class>]]>"
-#: index.docbook:294
-msgid "Third, you may not use a CGLIB proxy for a <literal>final</literal> class or a class with any <literal>final</literal> methods."
-msgstr "donde <literal>CatImpl</literal> implementa la interface <literal>Cat</literal> y <literal>DomesticCatImpl</literal> implementa la interface <literal>DomesticCat</literal>. Entonces <literal>load()</literal> o <literal>iterate()</literal> pueden devolver instancias de <literal>Cat</literal> y <literal>DomesticCat</literal>. (Nota que <literal>list()</literal> usualmente no devuelve proxies.)"
+#. Tag: para
+#: performance.xml:294
+#, no-c-format
+msgid ""
+"Third, you may not use a CGLIB proxy for a <literal>final</literal> class or "
+"a class with any <literal>final</literal> methods."
+msgstr ""
+"Tercero, no debes usar un proxy CGLIB para una clase <literal>final</"
+"literal> o una clase con algún método <literal>final</literal>."
-#: index.docbook:299
-msgid "Finally, if your persistent object acquires any resources upon instantiation (eg. in initializers or default constructor), then those resources will also be acquired by the proxy. The proxy class is an actual subclass of the persistent class."
+#. Tag: para
+#: performance.xml:299
+#, no-c-format
+msgid ""
+"Finally, if your persistent object acquires any resources upon instantiation "
+"(eg. in initializers or default constructor), then those resources will also "
+"be acquired by the proxy. The proxy class is an actual subclass of the "
+"persistent class."
msgstr ""
- "<![CDATA[Cat cat = (Cat) session.load(CatImpl.class, catid);\n"
- "Iterator iter = session.createQuery(\"from CatImpl as cat where cat.name='fritz'\").iterate();\n"
- "Cat fritz = (Cat) iter.next();]]>"
+"Finalmente, si tu objeto persistente adquiere cualquier recurso bajo "
+"instanciación (por ejemplo, en inicializadores o constructores por defecto), "
+"entonces esos recursos serán adquiridos también por el proxy. La clase del "
+"proxy es una subclase real de la clase persistente."
-#: index.docbook:305
-msgid "These problems are all due to fundamental limitations in Java's single inheritance model. If you wish to avoid these problems your persistent classes must each implement an interface that declares its business methods. You should specify these interfaces in the mapping file. eg."
-msgstr "Las relaciones también son inicializadas perezosamente. Esto significa que debes declarar cualquier propiedad como de tipo <literal>Cat</literal>, no <literal>CatImpl</literal>."
+#. Tag: para
+#: performance.xml:305
+#, no-c-format
+msgid ""
+"These problems are all due to fundamental limitations in Java's single "
+"inheritance model. If you wish to avoid these problems your persistent "
+"classes must each implement an interface that declares its business methods. "
+"You should specify these interfaces in the mapping file. eg."
+msgstr ""
+"Estos problemas se deben a limitaciones fundamentales en el modelo de "
+"herencia única de Java. Si deseas evitar estos problemas cada una de tus "
+"clases persistentes deben implementar una interface que declare sus métodos "
+"de negocio. Debes especificar estas interfaces en el fichero de mapeo. Por "
+"ejemplo:"
-#: index.docbook:311
+#. Tag: programlisting
+#: performance.xml:311
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"CatImpl\" proxy=\"Cat\">\n"
- " ......\n"
- " <subclass name=\"DomesticCatImpl\" proxy=\"DomesticCat\">\n"
- " .....\n"
- " </subclass>\n"
- "</class>]]>"
-msgstr "Ciertas operaciones <emphasis>no</emphasis> requieren inicialización de proxies."
+"<![CDATA[<class name=\"CatImpl\" proxy=\"Cat\">\n"
+" ......\n"
+" <subclass name=\"DomesticCatImpl\" proxy=\"DomesticCat\">\n"
+" .....\n"
+" </subclass>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:313
-msgid "where <literal>CatImpl</literal> implements the interface <literal>Cat</literal> and <literal>DomesticCatImpl</literal> implements the interface <literal>DomesticCat</literal>. Then proxies for instances of <literal>Cat</literal> and <literal>DomesticCat</literal> may be returned by <literal>load()</literal> or <literal>iterate()</literal>. (Note that <literal>list()</literal> does not usually return proxies.)"
-msgstr "<literal>equals()</literal>, si la clase persistente no sobrescribe <literal>equals()</literal>"
+#. Tag: para
+#: performance.xml:313
+#, no-c-format
+msgid ""
+"where <literal>CatImpl</literal> implements the interface <literal>Cat</"
+"literal> and <literal>DomesticCatImpl</literal> implements the interface "
+"<literal>DomesticCat</literal>. Then proxies for instances of <literal>Cat</"
+"literal> and <literal>DomesticCat</literal> may be returned by <literal>load"
+"()</literal> or <literal>iterate()</literal>. (Note that <literal>list()</"
+"literal> does not usually return proxies.)"
+msgstr ""
+"donde <literal>CatImpl</literal> implementa la interface <literal>Cat</"
+"literal> y <literal>DomesticCatImpl</literal> implementa la interface "
+"<literal>DomesticCat</literal>. Entonces <literal>load()</literal> o "
+"<literal>iterate()</literal> pueden devolver instancias de <literal>Cat</"
+"literal> y <literal>DomesticCat</literal>. (Nota que <literal>list()</"
+"literal> usualmente no devuelve proxies.)"
-#: index.docbook:321
+#. Tag: programlisting
+#: performance.xml:321
+#, no-c-format
msgid ""
- "<![CDATA[Cat cat = (Cat) session.load(CatImpl.class, catid);\n"
- "Iterator iter = session.createQuery(\"from CatImpl as cat where cat.name='fritz'\").iterate();\n"
- "Cat fritz = (Cat) iter.next();]]>"
-msgstr "<literal>hashCode()</literal>, si la clase persistente no sobrescribe <literal>hashCode()</literal>"
+"<![CDATA[Cat cat = (Cat) session.load(CatImpl.class, catid);\n"
+"Iterator iter = session.createQuery(\"from CatImpl as cat where cat."
+"name='fritz'\").iterate();\n"
+"Cat fritz = (Cat) iter.next();]]>"
+msgstr ""
-#: index.docbook:323
-msgid "Relationships are also lazily initialized. This means you must declare any properties to be of type <literal>Cat</literal>, not <literal>CatImpl</literal>."
-msgstr "El método getter del identificador"
+#. Tag: para
+#: performance.xml:323
+#, no-c-format
+msgid ""
+"Relationships are also lazily initialized. This means you must declare any "
+"properties to be of type <literal>Cat</literal>, not <literal>CatImpl</"
+"literal>."
+msgstr ""
+"Las relaciones también son inicializadas perezosamente. Esto significa que "
+"debes declarar cualquier propiedad como de tipo <literal>Cat</literal>, no "
+"<literal>CatImpl</literal>."
-#: index.docbook:328
-msgid "Certain operations do <emphasis>not</emphasis> require proxy initialization"
-msgstr "Hibernate detectará las clase persistentes que sobrescriban <literal>equals()</literal> o <literal>hashCode()</literal>."
+#. Tag: para
+#: performance.xml:328
+#, no-c-format
+msgid ""
+"Certain operations do <emphasis>not</emphasis> require proxy initialization"
+msgstr ""
+"Ciertas operaciones <emphasis>no</emphasis> requieren inicialización de "
+"proxies."
-#: index.docbook:334
-msgid "<literal>equals()</literal>, if the persistent class does not override <literal>equals()</literal>"
-msgstr "Inicializando colecciones y proxies"
+#. Tag: para
+#: performance.xml:334
+#, no-c-format
+msgid ""
+"<literal>equals()</literal>, if the persistent class does not override "
+"<literal>equals()</literal>"
+msgstr ""
+"<literal>equals()</literal>, si la clase persistente no sobrescribe "
+"<literal>equals()</literal>"
-#: index.docbook:340
-msgid "<literal>hashCode()</literal>, if the persistent class does not override <literal>hashCode()</literal>"
-msgstr "Una <literal>LazyInitializationException</literal> será lanzada por Hibernate si una colección o proxy sin inicializar es accedido fuera del ámbito de la <literal>Session</literal>, es decir, cuando la entidad que posee la colección o que tiene la referencia al proxy esté en el estado separada."
+#. Tag: para
+#: performance.xml:340
+#, no-c-format
+msgid ""
+"<literal>hashCode()</literal>, if the persistent class does not override "
+"<literal>hashCode()</literal>"
+msgstr ""
+"<literal>hashCode()</literal>, si la clase persistente no sobrescribe "
+"<literal>hashCode()</literal>"
-#: index.docbook:346
+#. Tag: para
+#: performance.xml:346
+#, no-c-format
msgid "The identifier getter method"
-msgstr "A veces necesitamos asegurarnos que un proxy o colección esté inicializado antes de cerrar la <literal>Session</literal>. Por supuesto, siempre podemos forzar la inicialización llamando a <literal>cat.getSex()</literal> o <literal>cat.getKittens().size()</literal>, por ejemplo. Pero esto es confuso a lectores del código y no es conveniente para código genérico."
+msgstr "El método getter del identificador"
-#: index.docbook:352
-msgid "Hibernate will detect persistent classes that override <literal>equals()</literal> or <literal>hashCode()</literal>."
-msgstr "Los métodos estáticos <literal>Hibernate.initialize()</literal> y <literal>Hibernate.isInitialized()</literal> proveen a la aplicación de una forma conveniente de trabajar con colecciones o proxies inicializados perezosamente. <literal>Hibernate.initialize(cat)</literal> forzará la inicialización de un proxy, <literal>cat</literal>, en tanto su <literal>Session</literal> esté todavía abierta. <literal>Hibernate.initialize( cat.getKittens() )</literal> tiene un efecto similar para la colección de gatitos."
+#. Tag: para
+#: performance.xml:352
+#, no-c-format
+msgid ""
+"Hibernate will detect persistent classes that override <literal>equals()</"
+"literal> or <literal>hashCode()</literal>."
+msgstr ""
+"Hibernate detectará las clase persistentes que sobrescriban <literal>equals()"
+"</literal> o <literal>hashCode()</literal>."
-#: index.docbook:357
-msgid "By choosing <literal>lazy=\"no-proxy\"</literal> instead of the default <literal>lazy=\"proxy\"</literal>, we can avoid the problems associated with typecasting. However, we will require buildtime bytecode instrumentation, and all operations will result in immediate proxy initialization."
-msgstr "Otra opción es mantener la <literal>Session</literal> abierta hasta que todas las colecciones y proxies necesarios hayan sido cargados. En algunas arquitecturas de aplicación, particularmente en aquellas donde el código que accede a los datos usando Hibernate, y el código que los usa están en capas de aplicación diferentes o procesos físicos diferentes, puede ser un problema asegurar que la <literal>Session</literal> esté abierta cuando se inicializa una colección. Existen dos formas básicas de tratar este tema:"
+#. Tag: para
+#: performance.xml:357
+#, no-c-format
+msgid ""
+"By choosing <literal>lazy=\"no-proxy\"</literal> instead of the default "
+"<literal>lazy=\"proxy\"</literal>, we can avoid the problems associated with "
+"typecasting. However, we will require buildtime bytecode instrumentation, "
+"and all operations will result in immediate proxy initialization."
+msgstr ""
+"UNTRANSLATED!!! By choosing <literal>lazy=\"no-proxy\"</literal> instead of "
+"the default <literal>lazy=\"proxy\"</literal>, we can avoid the problems "
+"associated with typecasting. However, we will require buildtime bytecode "
+"instrumentation, and all operations will result in immediate proxy "
+"initialization."
-#: index.docbook:367
+#. Tag: title
+#: performance.xml:367
+#, no-c-format
msgid "Initializing collections and proxies"
-msgstr "En una aplicación basada web, puede usarse un filtro de servlets para cerrar la <literal>Session</literal> sólo bien al final de una petición de usuario, una vez que el rendering de la vista esté completa (el patrón <emphasis>Sesión Abierta en Vista (Open Session in View)</emphasis>). Por supuesto, estos sitios requieren una fuerte demanda de corrección del manejo de excepciones de tu infraestructura de aplicación. Es de una importancia vital que la <literal>Session</literal> esté cerrada y la transacción terminada antes de volver al usuario, incluso cuando ocurra una excepción durante el rendering de la página. Para este enfoque, el filtro de servlet tiene que ser capaz de accceder la <literal>Session</literal>. Recomendamos que se use una variable <literal>ThreadLocal</literal> para tener la <literal>Session</literal> actual (ver el capítulo 1, <xref linkend=\"quickstart-pla!
yingwithcats\"/>, para una implementación de ejemplo)."
+msgstr "Inicializando colecciones y proxies"
-#: index.docbook:369
-msgid "A <literal>LazyInitializationException</literal> will be thrown by Hibernate if an uninitialized collection or proxy is accessed outside of the scope of the <literal>Session</literal>, ie. when the entity owning the collection or having the reference to the proxy is in the detached state."
-msgstr "En una aplciación con una grada de negocios separada, la lógica de negocio debe \"preparar\" todas las colecciones que se vayan a necesitar por la grada web antes de volver. Esto significa que la grada de negocios debe cargar todos los datos y devolver a la grada de presentación web todos los datos que se requieran para un caso de uso en particular ya inicializados. Usualmente, la aplicación llama a <literal>Hibernate.initialize()</literal> para cada colección que se necesitará en la grada web (esta llamada debe ocurrir antes que la sesión sea cerrada) o recupera la colección tempranamente usando una consulta de Hibernate con una cláusula <literal>FETCH</literal> o una <literal>FetchMode.JOIN</literal> en <literal>Criteria</literal>. Esto es usualmente más fácil si adoptas el patrón <emphasis>Comando</emphasis> en vez de un <emphasis>Fachada de Sesión</emphasis>."
+#. Tag: para
+#: performance.xml:369
+#, no-c-format
+msgid ""
+"A <literal>LazyInitializationException</literal> will be thrown by Hibernate "
+"if an uninitialized collection or proxy is accessed outside of the scope of "
+"the <literal>Session</literal>, ie. when the entity owning the collection or "
+"having the reference to the proxy is in the detached state."
+msgstr ""
+"Una <literal>LazyInitializationException</literal> será lanzada por "
+"Hibernate si una colección o proxy sin inicializar es accedido fuera del "
+"ámbito de la <literal>Session</literal>, es decir, cuando la entidad que "
+"posee la colección o que tiene la referencia al proxy esté en el estado "
+"separada."
-#: index.docbook:375
-msgid "Sometimes we need to ensure that a proxy or collection is initialized before closing the <literal>Session</literal>. Of course, we can alway force initialization by calling <literal>cat.getSex()</literal> or <literal>cat.getKittens().size()</literal>, for example. But that is confusing to readers of the code and is not convenient for generic code."
-msgstr "Puedes también adjuntar un objeto cargado previamente a una nueva <literal>Session</literal> con <literal>merge()</literal> o <literal>lock()</literal> antes de acceder a colecciones no inicializadas (u otros proxies). ¡No, Hibernate no, y ciertamente <emphasis>no debe</emphasis> hacer esto automáticamente, ya que introduciría semánticas de transacción ad hoc!"
+#. Tag: para
+#: performance.xml:375
+#, no-c-format
+msgid ""
+"Sometimes we need to ensure that a proxy or collection is initialized before "
+"closing the <literal>Session</literal>. Of course, we can alway force "
+"initialization by calling <literal>cat.getSex()</literal> or <literal>cat."
+"getKittens().size()</literal>, for example. But that is confusing to readers "
+"of the code and is not convenient for generic code."
+msgstr ""
+"A veces necesitamos asegurarnos que un proxy o colección esté inicializado "
+"antes de cerrar la <literal>Session</literal>. Por supuesto, siempre podemos "
+"forzar la inicialización llamando a <literal>cat.getSex()</literal> o "
+"<literal>cat.getKittens().size()</literal>, por ejemplo. Pero esto es "
+"confuso a lectores del código y no es conveniente para código genérico."
-#: index.docbook:382
-msgid "The static methods <literal>Hibernate.initialize()</literal> and <literal>Hibernate.isInitialized()</literal> provide the application with a convenient way of working with lazily initialized collections or proxies. <literal>Hibernate.initialize(cat)</literal> will force the initialization of a proxy, <literal>cat</literal>, as long as its <literal>Session</literal> is still open. <literal>Hibernate.initialize( cat.getKittens() )</literal> has a similar effect for the collection of kittens."
-msgstr "A veces no quieres inicializar una colección grande, pero necesitas aún alguna informacion sobre ella (como su tamaño) o un subconjunto de los datos."
+#. Tag: para
+#: performance.xml:382
+#, no-c-format
+msgid ""
+"The static methods <literal>Hibernate.initialize()</literal> and "
+"<literal>Hibernate.isInitialized()</literal> provide the application with a "
+"convenient way of working with lazily initialized collections or proxies. "
+"<literal>Hibernate.initialize(cat)</literal> will force the initialization "
+"of a proxy, <literal>cat</literal>, as long as its <literal>Session</"
+"literal> is still open. <literal>Hibernate.initialize( cat.getKittens() )</"
+"literal> has a similar effect for the collection of kittens."
+msgstr ""
+"Los métodos estáticos <literal>Hibernate.initialize()</literal> y "
+"<literal>Hibernate.isInitialized()</literal> proveen a la aplicación de una "
+"forma conveniente de trabajar con colecciones o proxies inicializados "
+"perezosamente. <literal>Hibernate.initialize(cat)</literal> forzará la "
+"inicialización de un proxy, <literal>cat</literal>, en tanto su "
+"<literal>Session</literal> esté todavía abierta. <literal>Hibernate."
+"initialize( cat.getKittens() )</literal> tiene un efecto similar para la "
+"colección de gatitos."
-#: index.docbook:391
-msgid "Another option is to keep the <literal>Session</literal> open until all needed collections and proxies have been loaded. In some application architectures, particularly where the code that accesses data using Hibernate, and the code that uses it are in different application layers or different physical processes, it can be a problem to ensure that the <literal>Session</literal> is open when a collection is initialized. There are two basic ways to deal with this issue:"
-msgstr "Puedes usar un filtro de colecciones para obtener el tamaño de una colección sin inicializarla:"
+#. Tag: para
+#: performance.xml:391
+#, no-c-format
+msgid ""
+"Another option is to keep the <literal>Session</literal> open until all "
+"needed collections and proxies have been loaded. In some application "
+"architectures, particularly where the code that accesses data using "
+"Hibernate, and the code that uses it are in different application layers or "
+"different physical processes, it can be a problem to ensure that the "
+"<literal>Session</literal> is open when a collection is initialized. There "
+"are two basic ways to deal with this issue:"
+msgstr ""
+"Otra opción es mantener la <literal>Session</literal> abierta hasta que "
+"todas las colecciones y proxies necesarios hayan sido cargados. En algunas "
+"arquitecturas de aplicación, particularmente en aquellas donde el código que "
+"accede a los datos usando Hibernate, y el código que los usa están en capas "
+"de aplicación diferentes o procesos físicos diferentes, puede ser un "
+"problema asegurar que la <literal>Session</literal> esté abierta cuando se "
+"inicializa una colección. Existen dos formas básicas de tratar este tema:"
-#: index.docbook:402
-msgid "In a web-based application, a servlet filter can be used to close the <literal>Session</literal> only at the very end of a user request, once the rendering of the view is complete (the <emphasis>Open Session in View</emphasis> pattern). Of course, this places heavy demands on the correctness of the exception handling of your application infrastructure. It is vitally important that the <literal>Session</literal> is closed and the transaction ended before returning to the user, even when an exception occurs during rendering of the view. See the Hibernate Wiki for examples of this \"Open Session in View\" pattern."
-msgstr "<![CDATA[( (Integer) s.createFilter( collection, \"select count(*)\" ).list().get(0) ).intValue()]]>"
+#. Tag: para
+#: performance.xml:402
+#, no-c-format
+msgid ""
+"In a web-based application, a servlet filter can be used to close the "
+"<literal>Session</literal> only at the very end of a user request, once the "
+"rendering of the view is complete (the <emphasis>Open Session in View</"
+"emphasis> pattern). Of course, this places heavy demands on the correctness "
+"of the exception handling of your application infrastructure. It is vitally "
+"important that the <literal>Session</literal> is closed and the transaction "
+"ended before returning to the user, even when an exception occurs during "
+"rendering of the view. See the Hibernate Wiki for examples of this \"Open "
+"Session in View\" pattern."
+msgstr ""
+"En una aplicación basada web, puede usarse un filtro de servlets para cerrar "
+"la <literal>Session</literal> sólo bien al final de una petición de usuario, "
+"una vez que el rendering de la vista esté completa (el patrón "
+"<emphasis>Sesión Abierta en Vista (Open Session in View)</emphasis>). Por "
+"supuesto, estos sitios requieren una fuerte demanda de corrección del manejo "
+"de excepciones de tu infraestructura de aplicación. Es de una importancia "
+"vital que la <literal>Session</literal> esté cerrada y la transacción "
+"terminada antes de volver al usuario, incluso cuando ocurra una excepción "
+"durante el rendering de la página. Para este enfoque, el filtro de servlet "
+"tiene que ser capaz de accceder la <literal>Session</literal>. Recomendamos "
+"que se use una variable <literal>ThreadLocal</literal> para tener la "
+"<literal>Session</literal> actual (ver el capítulo 1, <xref linkend="
+"\"quickstart-playingwithcats\"/>, para una implementación de ejemplo)."
-#: index.docbook:415
-msgid "In an application with a separate business tier, the business logic must \"prepare\" all collections that will be needed by the web tier before returning. This means that the business tier should load all the data and return all the data already initialized to the presentation/web tier that is required for a particular use case. Usually, the application calls <literal>Hibernate.initialize()</literal> for each collection that will be needed in the web tier (this call must occur before the session is closed) or retrieves the collection eagerly using a Hibernate query with a <literal>FETCH</literal> clause or a <literal>FetchMode.JOIN</literal> in <literal>Criteria</literal>. This is usually easier if you adopt the <emphasis>Command</emphasis> pattern instead of a <emphasis>Session Facade</emphasis>."
-msgstr "El método <literal>createFilter()</literal> se usa también para recuperar eficientemente subconjuntos de una colección sin necesidad de inicializar toda la colección:"
+#. Tag: para
+#: performance.xml:415
+#, no-c-format
+msgid ""
+"In an application with a separate business tier, the business logic must "
+"\"prepare\" all collections that will be needed by the web tier before "
+"returning. This means that the business tier should load all the data and "
+"return all the data already initialized to the presentation/web tier that is "
+"required for a particular use case. Usually, the application calls "
+"<literal>Hibernate.initialize()</literal> for each collection that will be "
+"needed in the web tier (this call must occur before the session is closed) "
+"or retrieves the collection eagerly using a Hibernate query with a "
+"<literal>FETCH</literal> clause or a <literal>FetchMode.JOIN</literal> in "
+"<literal>Criteria</literal>. This is usually easier if you adopt the "
+"<emphasis>Command</emphasis> pattern instead of a <emphasis>Session Facade</"
+"emphasis>."
+msgstr ""
+"En una aplciación con una grada de negocios separada, la lógica de negocio "
+"debe \"preparar\" todas las colecciones que se vayan a necesitar por la "
+"grada web antes de volver. Esto significa que la grada de negocios debe "
+"cargar todos los datos y devolver a la grada de presentación web todos los "
+"datos que se requieran para un caso de uso en particular ya inicializados. "
+"Usualmente, la aplicación llama a <literal>Hibernate.initialize()</literal> "
+"para cada colección que se necesitará en la grada web (esta llamada debe "
+"ocurrir antes que la sesión sea cerrada) o recupera la colección "
+"tempranamente usando una consulta de Hibernate con una cláusula "
+"<literal>FETCH</literal> o una <literal>FetchMode.JOIN</literal> en "
+"<literal>Criteria</literal>. Esto es usualmente más fácil si adoptas el "
+"patrón <emphasis>Comando</emphasis> en vez de un <emphasis>Fachada de "
+"Sesión</emphasis>."
-#: index.docbook:430
-msgid "You may also attach a previously loaded object to a new <literal>Session</literal> with <literal>merge()</literal> or <literal>lock()</literal> before accessing uninitialized collections (or other proxies). No, Hibernate does not, and certainly <emphasis>should</emphasis> not do this automatically, since it would introduce ad hoc transaction semantics!"
-msgstr "<![CDATA[s.createFilter( lazyCollection, \"\").setFirstResult(0).setMaxResults(10).list();]]>"
+#. Tag: para
+#: performance.xml:430
+#, no-c-format
+msgid ""
+"You may also attach a previously loaded object to a new <literal>Session</"
+"literal> with <literal>merge()</literal> or <literal>lock()</literal> before "
+"accessing uninitialized collections (or other proxies). No, Hibernate does "
+"not, and certainly <emphasis>should</emphasis> not do this automatically, "
+"since it would introduce ad hoc transaction semantics!"
+msgstr ""
+"Puedes también adjuntar un objeto cargado previamente a una nueva "
+"<literal>Session</literal> con <literal>merge()</literal> o <literal>lock()</"
+"literal> antes de acceder a colecciones no inicializadas (u otros proxies). "
+"¡No, Hibernate no, y ciertamente <emphasis>no debe</emphasis> hacer esto "
+"automáticamente, ya que introduciría semánticas de transacción ad hoc!"
-#: index.docbook:440
-msgid "Sometimes you don't want to initialize a large collection, but still need some information about it (like its size) or a subset of the data."
-msgstr "Usando recuperación en lotes"
+#. Tag: para
+#: performance.xml:440
+#, no-c-format
+msgid ""
+"Sometimes you don't want to initialize a large collection, but still need "
+"some information about it (like its size) or a subset of the data."
+msgstr ""
+"A veces no quieres inicializar una colección grande, pero necesitas aún "
+"alguna informacion sobre ella (como su tamaño) o un subconjunto de los datos."
-#: index.docbook:445
-msgid "You can use a collection filter to get the size of a collection without initializing it:"
-msgstr "Hibernate puede hacer un uso eficiente de la recuperación en lotes, esto es, Hibernate puede cargar muchos proxies sin inicializar si se accede a un proxy (o colecciones). La recuperación en lotes es una optimización de la estrategia de recuperación por selección perezosa. Hay dos formas en que puedes afinar la recuperación en lotes: a nivel de la clase o de la colección."
+#. Tag: para
+#: performance.xml:445
+#, no-c-format
+msgid ""
+"You can use a collection filter to get the size of a collection without "
+"initializing it:"
+msgstr ""
+"Puedes usar un filtro de colecciones para obtener el tamaño de una colección "
+"sin inicializarla:"
-#: index.docbook:449
-msgid "<![CDATA[( (Integer) s.createFilter( collection, \"select count(*)\" ).list().get(0) ).intValue()]]>"
-msgstr "La recuperación en lotes para clases/entidades es más fácil de entender. Imagina que tienes la siguiente situación en tiempo de ejecución: Tienes 25 instancias de <literal>Cat</literal> cargadas en una <literal>Session</literal>, cada <literal>Cat</literal> tiene una referencia a su <literal>owner</literal>, una <literal>Person</literal>. La clase <literal>Person</literal> está mapeada con un proxy, <literal>lazy=\"true\"</literal>. Si ahora iteras a través de todos los gatos y llamas a <literal>getOwner()</literal> para cada uno, Hibernate por defecto ejecutará 25 sentencias <literal>SELECT</literal> para traer los dueños tratados con proxies. Puedes afinar este comportamiento especificando un <literal>batch-size</literal> en el mapeo de <literal>Person</literal>:"
+#. Tag: programlisting
+#: performance.xml:449
+#, no-c-format
+msgid ""
+"<![CDATA[( (Integer) s.createFilter( collection, \"select count(*)\" ).list"
+"().get(0) ).intValue()]]>"
+msgstr ""
-#: index.docbook:451
-msgid "The <literal>createFilter()</literal> method is also used to efficiently retrieve subsets of a collection without needing to initialize the whole collection:"
-msgstr "<![CDATA[<class name=\"Person\" batch-size=\"10\">...</class>]]>"
+#. Tag: para
+#: performance.xml:451
+#, no-c-format
+msgid ""
+"The <literal>createFilter()</literal> method is also used to efficiently "
+"retrieve subsets of a collection without needing to initialize the whole "
+"collection:"
+msgstr ""
+"El método <literal>createFilter()</literal> se usa también para recuperar "
+"eficientemente subconjuntos de una colección sin necesidad de inicializar "
+"toda la colección:"
-#: index.docbook:456
-msgid "<![CDATA[s.createFilter( lazyCollection, \"\").setFirstResult(0).setMaxResults(10).list();]]>"
-msgstr "Hibernate ahora ejecutará sólo tres consultas, el patrón es 10, 10, 5."
+#. Tag: programlisting
+#: performance.xml:456
+#, no-c-format
+msgid ""
+"<![CDATA[s.createFilter( lazyCollection, \"\").setFirstResult(0)."
+"setMaxResults(10).list();]]>"
+msgstr ""
-#: index.docbook:461
+#. Tag: title
+#: performance.xml:461
+#, no-c-format
msgid "Using batch fetching"
-msgstr "También puedes habilitar la recuperación en lotes para colecciones. Por ejemplo, si cada <literal>Person</literal> tiene una colección perezosa de <literal>Cat</literal>s, y hay 10 personas actualmente cargadas en la <literal>Session</literal>, iterar a través de las 10 personas generará 10 <literal>SELECT</literal>s, una para cada llamada a <literal>getCats()</literal>. Si habilitas la recuperación en lotes para la colección de <literal>cats</literal> en el mapeo de <literal>Person</literal>, Hibernate puede recuperar por adelantado las colecciones:"
+msgstr "Usando recuperación en lotes"
-#: index.docbook:463
-msgid "Hibernate can make efficient use of batch fetching, that is, Hibernate can load several uninitialized proxies if one proxy is accessed (or collections. Batch fetching is an optimization of the lazy select fetching strategy. There are two ways you can tune batch fetching: on the class and the collection level."
+#. Tag: para
+#: performance.xml:463
+#, no-c-format
+msgid ""
+"Hibernate can make efficient use of batch fetching, that is, Hibernate can "
+"load several uninitialized proxies if one proxy is accessed (or collections. "
+"Batch fetching is an optimization of the lazy select fetching strategy. "
+"There are two ways you can tune batch fetching: on the class and the "
+"collection level."
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <set name=\"cats\" batch-size=\"3\">\n"
- " ...\n"
- " </set>\n"
- "</class>]]>"
+"Hibernate puede hacer un uso eficiente de la recuperación en lotes, esto es, "
+"Hibernate puede cargar muchos proxies sin inicializar si se accede a un "
+"proxy (o colecciones). La recuperación en lotes es una optimización de la "
+"estrategia de recuperación por selección perezosa. Hay dos formas en que "
+"puedes afinar la recuperación en lotes: a nivel de la clase o de la "
+"colección."
-#: index.docbook:469
-msgid "Batch fetching for classes/entities is easier to understand. Imagine you have the following situation at runtime: You have 25 <literal>Cat</literal> instances loaded in a <literal>Session</literal>, each <literal>Cat</literal> has a reference to its <literal>owner</literal>, a <literal>Person</literal>. The <literal>Person</literal> class is mapped with a proxy, <literal>lazy=\"true\"</literal>. If you now iterate through all cats and call <literal>getOwner()</literal> on each, Hibernate will by default execute 25 <literal>SELECT</literal> statements, to retrieve the proxied owners. You can tune this behavior by specifying a <literal>batch-size</literal> in the mapping of <literal>Person</literal>:"
-msgstr "Con un <literal>batch-size</literal> de 3, Hibernate cargará 3, 3, 3, 1 colecciones en cuatro <literal>SELECT</literal>s. Una vez más, el valor del atributo depende del número esperado de colecciones sin inicializar en una <literal>Session</literal> en particular."
+#. Tag: para
+#: performance.xml:469
+#, no-c-format
+msgid ""
+"Batch fetching for classes/entities is easier to understand. Imagine you "
+"have the following situation at runtime: You have 25 <literal>Cat</literal> "
+"instances loaded in a <literal>Session</literal>, each <literal>Cat</"
+"literal> has a reference to its <literal>owner</literal>, a <literal>Person</"
+"literal>. The <literal>Person</literal> class is mapped with a proxy, "
+"<literal>lazy=\"true\"</literal>. If you now iterate through all cats and "
+"call <literal>getOwner()</literal> on each, Hibernate will by default "
+"execute 25 <literal>SELECT</literal> statements, to retrieve the proxied "
+"owners. You can tune this behavior by specifying a <literal>batch-size</"
+"literal> in the mapping of <literal>Person</literal>:"
+msgstr ""
+"La recuperación en lotes para clases/entidades es más fácil de entender. "
+"Imagina que tienes la siguiente situación en tiempo de ejecución: Tienes 25 "
+"instancias de <literal>Cat</literal> cargadas en una <literal>Session</"
+"literal>, cada <literal>Cat</literal> tiene una referencia a su "
+"<literal>owner</literal>, una <literal>Person</literal>. La clase "
+"<literal>Person</literal> está mapeada con un proxy, <literal>lazy=\"true\"</"
+"literal>. Si ahora iteras a través de todos los gatos y llamas a "
+"<literal>getOwner()</literal> para cada uno, Hibernate por defecto ejecutará "
+"25 sentencias <literal>SELECT</literal> para traer los dueños tratados con "
+"proxies. Puedes afinar este comportamiento especificando un <literal>batch-"
+"size</literal> en el mapeo de <literal>Person</literal>:"
-#: index.docbook:479
+#. Tag: programlisting
+#: performance.xml:479
+#, no-c-format
msgid "<![CDATA[<class name=\"Person\" batch-size=\"10\">...</class>]]>"
-msgstr "La recuperación de coleccione en lotes es particularmente útil si tienes un árbol anidado de ítems, es decir, el típico patrón de cuenta de materiales. (Aunque un <emphasis>conjunto anidado</emphasis> o una <emphasis>ruta materializada</emphasis> podría ser una mejor opción para árboles que sean de lectura en la mayoría de los casos.)"
+msgstr ""
-#: index.docbook:481
-msgid "Hibernate will now execute only three queries, the pattern is 10, 10, 5."
-msgstr "Usando recuperación por subselección"
+#. Tag: para
+#: performance.xml:481
+#, no-c-format
+msgid ""
+"Hibernate will now execute only three queries, the pattern is 10, 10, 5."
+msgstr "Hibernate ahora ejecutará sólo tres consultas, el patrón es 10, 10, 5."
-#: index.docbook:485
-msgid "You may also enable batch fetching of collections. For example, if each <literal>Person</literal> has a lazy collection of <literal>Cat</literal>s, and 10 persons are currently loaded in the <literal>Sesssion</literal>, iterating through all persons will generate 10 <literal>SELECT</literal>s, one for every call to <literal>getCats()</literal>. If you enable batch fetching for the <literal>cats</literal> collection in the mapping of <literal>Person</literal>, Hibernate can pre-fetch collections:"
-msgstr "Si una colección perezosa o proxy monovaluado tiene que ser recuperado, Hibernate los carga a todos, volviendo a ejecutar la consulta original en una subselección. Esto funciona de la misma forma que la recuperación en lotes, sin carga fragmentaria."
+#. Tag: para
+#: performance.xml:485
+#, no-c-format
+msgid ""
+"You may also enable batch fetching of collections. For example, if each "
+"<literal>Person</literal> has a lazy collection of <literal>Cat</literal>s, "
+"and 10 persons are currently loaded in the <literal>Sesssion</literal>, "
+"iterating through all persons will generate 10 <literal>SELECT</literal>s, "
+"one for every call to <literal>getCats()</literal>. If you enable batch "
+"fetching for the <literal>cats</literal> collection in the mapping of "
+"<literal>Person</literal>, Hibernate can pre-fetch collections:"
+msgstr ""
+"También puedes habilitar la recuperación en lotes para colecciones. Por "
+"ejemplo, si cada <literal>Person</literal> tiene una colección perezosa de "
+"<literal>Cat</literal>s, y hay 10 personas actualmente cargadas en la "
+"<literal>Session</literal>, iterar a través de las 10 personas generará 10 "
+"<literal>SELECT</literal>s, una para cada llamada a <literal>getCats()</"
+"literal>. Si habilitas la recuperación en lotes para la colección de "
+"<literal>cats</literal> en el mapeo de <literal>Person</literal>, Hibernate "
+"puede recuperar por adelantado las colecciones:"
-#: index.docbook:494
+#. Tag: programlisting
+#: performance.xml:494
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <set name=\"cats\" batch-size=\"3\">\n"
- " ...\n"
- " </set>\n"
- "</class>]]>"
-msgstr "Usando recuperación perezosa de propiedades"
+"<![CDATA[<class name=\"Person\">\n"
+" <set name=\"cats\" batch-size=\"3\">\n"
+" ...\n"
+" </set>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:496
-msgid "With a <literal>batch-size</literal> of 3, Hibernate will load 3, 3, 3, 1 collections in four <literal>SELECT</literal>s. Again, the value of the attribute depends on the expected number of uninitialized collections in a particular <literal>Session</literal>."
-msgstr "Hibernate3 soporta la recuperación perezosa de propiedades individuales. Esta técnica de optimización es también conocida como <emphasis>grupos de recuperación (fetch groups)</emphasis>. Por favor, nota que éste es mayormente un aspecto de marketing, ya que en la práctica, optimizar lecturas de filas es mucho más importante que la optimización de lectura de columnas. Sin embargo, cargar sólo algunas propiedades de una clase podría ser útil en casos extremos, cuando tablas heredadas tienen cientos de columnas y el modelo de datos no puede ser mejorado."
+#. Tag: para
+#: performance.xml:496
+#, no-c-format
+msgid ""
+"With a <literal>batch-size</literal> of 3, Hibernate will load 3, 3, 3, 1 "
+"collections in four <literal>SELECT</literal>s. Again, the value of the "
+"attribute depends on the expected number of uninitialized collections in a "
+"particular <literal>Session</literal>."
+msgstr ""
+"Con un <literal>batch-size</literal> de 3, Hibernate cargará 3, 3, 3, 1 "
+"colecciones en cuatro <literal>SELECT</literal>s. Una vez más, el valor del "
+"atributo depende del número esperado de colecciones sin inicializar en una "
+"<literal>Session</literal> en particular."
-#: index.docbook:502
-msgid "Batch fetching of collections is particularly useful if you have a nested tree of items, ie. the typical bill-of-materials pattern. (Although a <emphasis>nested set</emphasis> or a <emphasis>materialized path</emphasis> might be a better option for read-mostly trees.)"
-msgstr "Para habilitar la carga perezosa de propiedades, establece el atributo <literal>lazy</literal> en tus mapeos de propiedades:"
+#. Tag: para
+#: performance.xml:502
+#, no-c-format
+msgid ""
+"Batch fetching of collections is particularly useful if you have a nested "
+"tree of items, ie. the typical bill-of-materials pattern. (Although a "
+"<emphasis>nested set</emphasis> or a <emphasis>materialized path</emphasis> "
+"might be a better option for read-mostly trees.)"
+msgstr ""
+"La recuperación de coleccione en lotes es particularmente útil si tienes un "
+"árbol anidado de ítems, es decir, el típico patrón de cuenta de materiales. "
+"(Aunque un <emphasis>conjunto anidado</emphasis> o una <emphasis>ruta "
+"materializada</emphasis> podría ser una mejor opción para árboles que sean "
+"de lectura en la mayoría de los casos.)"
-#: index.docbook:511
+#. Tag: title
+#: performance.xml:511
+#, no-c-format
msgid "Using subselect fetching"
+msgstr "Usando recuperación por subselección"
+
+#. Tag: para
+#: performance.xml:513
+#, no-c-format
+msgid ""
+"If one lazy collection or single-valued proxy has to be fetched, Hibernate "
+"loads all of them, re-running the original query in a subselect. This works "
+"in the same way as batch-fetching, without the piecemeal loading."
msgstr ""
- "<![CDATA[<class name=\"Document\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"name\" not-null=\"true\" length=\"50\"/>\n"
- " <property name=\"summary\" not-null=\"true\" length=\"200\" lazy=\"true\"/>\n"
- " <property name=\"text\" not-null=\"true\" length=\"2000\" lazy=\"true\"/>\n"
- "</class>]]>"
+"Si una colección perezosa o proxy monovaluado tiene que ser recuperado, "
+"Hibernate los carga a todos, volviendo a ejecutar la consulta original en "
+"una subselección. Esto funciona de la misma forma que la recuperación en "
+"lotes, sin carga fragmentaria."
-#: index.docbook:513
-msgid "If one lazy collection or single-valued proxy has to be fetched, Hibernate loads all of them, re-running the original query in a subselect. This works in the same way as batch-fetching, without the piecemeal loading."
-msgstr "¡La carga perezosa de propiedades requiere la instrumentación del bytecode en tiempo de construcción! Si tus clases persistentes no son mejoradas, Hibernate ignorará silenciosamente la configuración perezosa de propiedades y caerá en recuperación inmediata."
-
-#: index.docbook:524
+#. Tag: title
+#: performance.xml:524
+#, no-c-format
msgid "Using lazy property fetching"
-msgstr "Para la instrumentación del bytecode, usa la siguiente tarea Ant:"
+msgstr "Usando recuperación perezosa de propiedades"
-#: index.docbook:526
-msgid "Hibernate3 supports the lazy fetching of individual properties. This optimization technique is also known as <emphasis>fetch groups</emphasis>. Please note that this is mostly a marketing feature, as in practice, optimizing row reads is much more important than optimization of column reads. However, only loading some properties of a class might be useful in extreme cases, when legacy tables have hundreds of columns and the data model can not be improved."
+#. Tag: para
+#: performance.xml:526
+#, no-c-format
+msgid ""
+"Hibernate3 supports the lazy fetching of individual properties. This "
+"optimization technique is also known as <emphasis>fetch groups</emphasis>. "
+"Please note that this is mostly a marketing feature, as in practice, "
+"optimizing row reads is much more important than optimization of column "
+"reads. However, only loading some properties of a class might be useful in "
+"extreme cases, when legacy tables have hundreds of columns and the data "
+"model can not be improved."
msgstr ""
- "<![CDATA[<target name=\"instrument\" depends=\"compile\">\n"
- " <taskdef name=\"instrument\" classname=\"org.hibernate.tool.instrument.InstrumentTask\">\n"
- " <classpath path=\"${jar.path}\"/>\n"
- " <classpath path=\"${classes.dir}\"/>\n"
- " <classpath refid=\"lib.class.path\"/>\n"
- " </taskdef>\n"
- "\n"
- " <instrument verbose=\"true\">\n"
- " <fileset dir=\"${testclasses.dir}/org/hibernate/auction/model\">\n"
- " <include name=\"*.class\"/>\n"
- " </fileset>\n"
- " </instrument>\n"
- "</target>]]>"
+"Hibernate3 soporta la recuperación perezosa de propiedades individuales. "
+"Esta técnica de optimización es también conocida como <emphasis>grupos de "
+"recuperación (fetch groups)</emphasis>. Por favor, nota que éste es "
+"mayormente un aspecto de marketing, ya que en la práctica, optimizar "
+"lecturas de filas es mucho más importante que la optimización de lectura de "
+"columnas. Sin embargo, cargar sólo algunas propiedades de una clase podría "
+"ser útil en casos extremos, cuando tablas heredadas tienen cientos de "
+"columnas y el modelo de datos no puede ser mejorado."
-#: index.docbook:535
-msgid "To enable lazy property loading, set the <literal>lazy</literal> attribute on your particular property mappings:"
-msgstr "Una forma diferente (¿mejor?) de evitar lecturas innecesarias de columnas, al menos para transacciones de sólo lectura es usar las funcionalidades de proyección de consultas HQL o Criteria. Esto evita la necesidad de procesar el bytecode en tiempo de construcción y ciertamente es una solución preferida."
+#. Tag: para
+#: performance.xml:535
+#, no-c-format
+msgid ""
+"To enable lazy property loading, set the <literal>lazy</literal> attribute "
+"on your particular property mappings:"
+msgstr ""
+"Para habilitar la carga perezosa de propiedades, establece el atributo "
+"<literal>lazy</literal> en tus mapeos de propiedades:"
-#: index.docbook:540
+#. Tag: programlisting
+#: performance.xml:540
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Document\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"name\" not-null=\"true\" length=\"50\"/>\n"
- " <property name=\"summary\" not-null=\"true\" length=\"200\" lazy=\"true\"/>\n"
- " <property name=\"text\" not-null=\"true\" length=\"2000\" lazy=\"true\"/>\n"
- "</class>]]>"
-msgstr "Puedes forzar la usual recuperación temprana de propiedades usando <literal>fetch all properties</literal> en HQL."
+"<![CDATA[<class name=\"Document\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"name\" not-null=\"true\" length=\"50\"/>\n"
+" <property name=\"summary\" not-null=\"true\" length=\"200\" lazy=\"true"
+"\"/>\n"
+" <property name=\"text\" not-null=\"true\" length=\"2000\" lazy=\"true\"/"
+">\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:542
-msgid "Lazy property loading requires buildtime bytecode instrumentation! If your persistent classes are not enhanced, Hibernate will silently ignore lazy property settings and fall back to immediate fetching."
-msgstr "El Caché de Segundo Nivel"
+#. Tag: para
+#: performance.xml:542
+#, no-c-format
+msgid ""
+"Lazy property loading requires buildtime bytecode instrumentation! If your "
+"persistent classes are not enhanced, Hibernate will silently ignore lazy "
+"property settings and fall back to immediate fetching."
+msgstr ""
+"¡La carga perezosa de propiedades requiere la instrumentación del bytecode "
+"en tiempo de construcción! Si tus clases persistentes no son mejoradas, "
+"Hibernate ignorará silenciosamente la configuración perezosa de propiedades "
+"y caerá en recuperación inmediata."
-#: index.docbook:548
+#. Tag: para
+#: performance.xml:548
+#, no-c-format
msgid "For bytecode instrumentation, use the following Ant task:"
-msgstr "Una <literal>Session</literal> de Hibernate es una caché de datos persistentes a nivel de transacción. Es posible configurar un cluster o caché a nivel de JVM (a nivel de <literal>SessionFactory</literal>) sobre una base de clase-a-clase o colección-a-colección. Puedes incluso enchufar una caché en cluster. Sé cuidadoso. Las cachés nunca están al tanto de los cambios hechos por otra aplicación al almacén persistente (aunque pueden ser configurados para expirar regularmente los datos en caché)."
+msgstr "Para la instrumentación del bytecode, usa la siguiente tarea Ant:"
-#: index.docbook:552
+#. Tag: programlisting
+#: performance.xml:552
+#, no-c-format
msgid ""
- "<![CDATA[<target name=\"instrument\" depends=\"compile\">\n"
- " <taskdef name=\"instrument\" classname=\"org.hibernate.tool.instrument.InstrumentTask\">\n"
- " <classpath path=\"${jar.path}\"/>\n"
- " <classpath path=\"${classes.dir}\"/>\n"
- " <classpath refid=\"lib.class.path\"/>\n"
- " </taskdef>\n"
- "\n"
- " <instrument verbose=\"true\">\n"
- " <fileset dir=\"${testclasses.dir}/org/hibernate/auction/model\">\n"
- " <include name=\"*.class\"/>\n"
- " </fileset>\n"
- " </instrument>\n"
- "</target>]]>"
-msgstr "Por defecto, Hibernate usa EHCache para caching a nivel de JVM. (El soporte a JCS ahora está despreciado y será quitado en una futura versión de Hibernate.) Puedes elegir una implementación diferente estableciendo el nombre de una clase que implemente <literal>org.hibernate.cache.CacheProvider</literal> usando la propiedad <literal>hibernate.cache.provider_class</literal>."
+"<![CDATA[<target name=\"instrument\" depends=\"compile\">\n"
+" <taskdef name=\"instrument\" classname=\"org.hibernate.tool.instrument."
+"InstrumentTask\">\n"
+" <classpath path=\"${jar.path}\"/>\n"
+" <classpath path=\"${classes.dir}\"/>\n"
+" <classpath refid=\"lib.class.path\"/>\n"
+" </taskdef>\n"
+"\n"
+" <instrument verbose=\"true\">\n"
+" <fileset dir=\"${testclasses.dir}/org/hibernate/auction/model\">\n"
+" <include name=\"*.class\"/>\n"
+" </fileset>\n"
+" </instrument>\n"
+"</target>]]>"
+msgstr ""
-#: index.docbook:554
-msgid "A different (better?) way to avoid unnecessary column reads, at least for read-only transactions is to use the projection features of HQL or Criteria queries. This avoids the need for buildtime bytecode processing and is certainly a prefered solution."
-msgstr "Proveedores de Caché"
+#. Tag: para
+#: performance.xml:554
+#, no-c-format
+msgid ""
+"A different (better?) way to avoid unnecessary column reads, at least for "
+"read-only transactions is to use the projection features of HQL or Criteria "
+"queries. This avoids the need for buildtime bytecode processing and is "
+"certainly a prefered solution."
+msgstr ""
+"Una forma diferente (¿mejor?) de evitar lecturas innecesarias de columnas, "
+"al menos para transacciones de sólo lectura es usar las funcionalidades de "
+"proyección de consultas HQL o Criteria. Esto evita la necesidad de procesar "
+"el bytecode en tiempo de construcción y ciertamente es una solución "
+"preferida."
-#: index.docbook:561
-msgid "You may force the usual eager fetching of properties using <literal>fetch all properties</literal> in HQL."
-msgstr "Caché"
+#. Tag: para
+#: performance.xml:561
+#, no-c-format
+msgid ""
+"You may force the usual eager fetching of properties using <literal>fetch "
+"all properties</literal> in HQL."
+msgstr ""
+"Puedes forzar la usual recuperación temprana de propiedades usando "
+"<literal>fetch all properties</literal> en HQL."
-#: index.docbook:571
+#. Tag: title
+#: performance.xml:571
+#, no-c-format
msgid "The Second Level Cache"
-msgstr "clase del Provedor"
+msgstr "El Caché de Segundo Nivel"
-#: index.docbook:573
-msgid "A Hibernate <literal>Session</literal> is a transaction-level cache of persistent data. It is possible to configure a cluster or JVM-level (<literal>SessionFactory</literal>-level) cache on a class-by-class and collection-by-collection basis. You may even plug in a clustered cache. Be careful. Caches are never aware of changes made to the persistent store by another application (though they may be configured to regularly expire cached data)."
-msgstr "Tipo"
+#. Tag: para
+#: performance.xml:573
+#, no-c-format
+msgid ""
+"A Hibernate <literal>Session</literal> is a transaction-level cache of "
+"persistent data. It is possible to configure a cluster or JVM-level "
+"(<literal>SessionFactory</literal>-level) cache on a class-by-class and "
+"collection-by-collection basis. You may even plug in a clustered cache. Be "
+"careful. Caches are never aware of changes made to the persistent store by "
+"another application (though they may be configured to regularly expire "
+"cached data)."
+msgstr ""
+"Una <literal>Session</literal> de Hibernate es una caché de datos "
+"persistentes a nivel de transacción. Es posible configurar un cluster o "
+"caché a nivel de JVM (a nivel de <literal>SessionFactory</literal>) sobre "
+"una base de clase-a-clase o colección-a-colección. Puedes incluso enchufar "
+"una caché en cluster. Sé cuidadoso. Las cachés nunca están al tanto de los "
+"cambios hechos por otra aplicación al almacén persistente (aunque pueden ser "
+"configurados para expirar regularmente los datos en caché)."
-#: index.docbook:581
-msgid "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."
-msgstr "Cluster Seguro"
+#. Tag: para
+#: performance.xml:581
+#, no-c-format
+msgid ""
+"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."
+msgstr ""
+"Por defecto, Hibernate usa EHCache para caching a nivel de JVM. (El soporte "
+"a JCS ahora está despreciado y será quitado en una futura versión de "
+"Hibernate.) Puedes elegir una implementación diferente estableciendo el "
+"nombre de una clase que implemente <literal>org.hibernate.cache."
+"CacheProvider</literal> usando la propiedad <literal>hibernate.cache."
+"provider_class</literal>."
-#: index.docbook:592
+#. Tag: title
+#: performance.xml:592
+#, no-c-format
msgid "Cache Providers"
-msgstr "Caché de Consultas Soportado"
+msgstr "Proveedores de Caché"
-#: index.docbook:601, index.docbook:774
+#. Tag: entry
+#: performance.xml:601 performance.xml:774
+#, no-c-format
msgid "Cache"
-msgstr "Hashtable (no pensado para uso en producción)"
+msgstr "Caché"
-#: index.docbook:602
+#. Tag: entry
+#: performance.xml:602
+#, no-c-format
msgid "Provider class"
-msgstr "org.hibernate.cache.HashtableCacheProvider"
+msgstr "clase del Provedor"
-#: index.docbook:603
+#. Tag: entry
+#: performance.xml:603
+#, no-c-format
msgid "Type"
-msgstr "memoria"
+msgstr "Tipo"
-#: index.docbook:604
+#. Tag: entry
+#: performance.xml:604
+#, no-c-format
msgid "Cluster Safe"
-msgstr "sí"
+msgstr "Cluster Seguro"
-#: index.docbook:605
+#. Tag: entry
+#: performance.xml:605
+#, no-c-format
msgid "Query Cache Supported"
-msgstr "EHCache"
+msgstr "Caché de Consultas Soportado"
-#: index.docbook:610, index.docbook:783
+#. Tag: entry
+#: performance.xml:610 performance.xml:783
+#, no-c-format
msgid "Hashtable (not intended for production use)"
-msgstr "org.hibernate.cache.EhCacheProvider"
+msgstr "Hashtable (no pensado para uso en producción)"
-#: index.docbook:611
+#. Tag: literal
+#: performance.xml:611
+#, no-c-format
msgid "org.hibernate.cache.HashtableCacheProvider"
-msgstr "memoria, disco"
+msgstr "org.hibernate.cache.HashtableCacheProvider"
-#: index.docbook:612
+#. Tag: entry
+#: performance.xml:612
+#, no-c-format
msgid "memory"
-msgstr "sí"
+msgstr "memoria"
-#: index.docbook:614, index.docbook:621, index.docbook:628, index.docbook:784, index.docbook:785, index.docbook:786, index.docbook:791, index.docbook:792, index.docbook:793, index.docbook:798, index.docbook:799, index.docbook:800, index.docbook:805, index.docbook:806, index.docbook:812, index.docbook:815
+#. Tag: entry
+#: performance.xml:614 performance.xml:621 performance.xml:628
+#: performance.xml:784 performance.xml:785 performance.xml:786
+#: performance.xml:791 performance.xml:792 performance.xml:793
+#: performance.xml:798 performance.xml:799 performance.xml:800
+#: performance.xml:805 performance.xml:806 performance.xml:812
+#: performance.xml:815
+#, no-c-format
msgid "<entry>yes</entry>"
-msgstr "OSCache"
+msgstr ""
-#: index.docbook:617, index.docbook:790
+#. Tag: entry
+#: performance.xml:617 performance.xml:790
+#, no-c-format
msgid "EHCache"
-msgstr "org.hibernate.cache.OSCacheProvider"
+msgstr "EHCache"
-#: index.docbook:618
+#. Tag: literal
+#: performance.xml:618
+#, no-c-format
msgid "org.hibernate.cache.EhCacheProvider"
-msgstr "memoria, disco"
+msgstr "org.hibernate.cache.EhCacheProvider"
-#: index.docbook:619, index.docbook:626
+#. Tag: entry
+#: performance.xml:619 performance.xml:626
+#, no-c-format
msgid "memory, disk"
-msgstr "sí"
+msgstr "memoria, disco"
-#: index.docbook:624, index.docbook:797
+#. Tag: entry
+#: performance.xml:624 performance.xml:797
+#, no-c-format
msgid "OSCache"
-msgstr "org.hibernate.cache.SwarmCacheProvider"
+msgstr "OSCache"
-#: index.docbook:625
+#. Tag: literal
+#: performance.xml:625
+#, no-c-format
msgid "org.hibernate.cache.OSCacheProvider"
-msgstr "clusterizado (ip multicast)"
+msgstr "org.hibernate.cache.OSCacheProvider"
-#: index.docbook:631, index.docbook:804
+#. Tag: entry
+#: performance.xml:631 performance.xml:804
+#, no-c-format
msgid "SwarmCache"
-msgstr "org.hibernate.cache.TreeCacheProvider"
+msgstr "SwarmCache"
-#: index.docbook:632
+#. Tag: literal
+#: performance.xml:632
+#, no-c-format
msgid "org.hibernate.cache.SwarmCacheProvider"
-msgstr "clusterizado (ip multicast), transaccional"
+msgstr "org.hibernate.cache.SwarmCacheProvider"
-#: index.docbook:633
+#. Tag: entry
+#: performance.xml:633
+#, no-c-format
msgid "clustered (ip multicast)"
-msgstr "sí (replicación)"
+msgstr "clusterizado (ip multicast)"
-#: index.docbook:634
+#. Tag: entry
+#: performance.xml:634
+#, no-c-format
msgid "yes (clustered invalidation)"
-msgstr "sí (requiere sincronización de reloj)"
+msgstr "sí (invalidación en cluster)"
-#: index.docbook:638, index.docbook:811
+#. Tag: entry
+#: performance.xml:638 performance.xml:811
+#, fuzzy, no-c-format
msgid "JBoss TreeCache"
-msgstr "Mapeos de caché"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"TreeCache de JBoss\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"JBoss TreeCache"
-#: index.docbook:639
+#. Tag: literal
+#: performance.xml:639
+#, no-c-format
msgid "org.hibernate.cache.TreeCacheProvider"
-msgstr "El elemento <literal><cache></literal> de una mapeo de clase o colección tiene la siguiente forma:"
+msgstr "org.hibernate.cache.TreeCacheProvider"
-#: index.docbook:640
+#. Tag: entry
+#: performance.xml:640
+#, no-c-format
msgid "clustered (ip multicast), transactional"
-msgstr ""
- "<![CDATA[<cache \n"
- " usage=\"transactional|read-write|nonstrict-read-write|read-only\"\n"
- "/>]]>"
+msgstr "clusterizado (ip multicast), transaccional"
-#: index.docbook:641
+#. Tag: entry
+#: performance.xml:641
+#, no-c-format
msgid "yes (replication)"
-msgstr "<literal>usage</literal> especifica la estrategia de caching: <literal>transactional</literal>, <literal>read-write</literal>, <literal>nonstrict-read-write</literal> o <literal>read-only</literal>"
+msgstr "sí (replicación)"
-#: index.docbook:642
+#. Tag: entry
+#: performance.xml:642
+#, no-c-format
msgid "yes (clock sync req.)"
-msgstr "Alternativamente (¿preferiblemente?), puedes especificar los elementos <literal><class-cache></literal> y <literal><collection-cache></literal> en <literal>hibernate.cfg.xml</literal>."
+msgstr "sí (requiere sincronización de reloj)"
-#: index.docbook:649
+#. Tag: title
+#: performance.xml:649
+#, no-c-format
msgid "Cache mappings"
-msgstr "El atributo <literal>usage</literal> especifica una <emphasis>estrategia de concurrencia al caché</emphasis>."
+msgstr "Mapeos de caché"
-#: index.docbook:651
-msgid "The <literal><cache></literal> element of a class or collection mapping has the following form:"
-msgstr "Estrategia: sólo lectura (read only)"
+#. Tag: para
+#: performance.xml:651
+#, no-c-format
+msgid ""
+"The <literal><cache></literal> element of a class or collection "
+"mapping has the following form:"
+msgstr ""
+"El elemento <literal><cache></literal> de una mapeo de clase o "
+"colección tiene la siguiente forma:"
-#: index.docbook:662
+#. Tag: programlisting
+#: performance.xml:662
+#, no-c-format
msgid ""
- "<![CDATA[<cache \n"
- " usage=\"transactional|read-write|nonstrict-read-write|read-only\"\n"
- " region=\"RegionName\"\n"
- " include=\"all|non-lazy\"\n"
- "/>]]>"
-msgstr "Si tu aplicación necesita leer pero nunca modificar las instancias de una clase persistente, puede usarse un caché <literal>read-only</literal>. Esta es la mejor y más simple estrategia. Es incluso perfectamente segura de usar en un cluster."
+"<![CDATA[<cache \n"
+" usage=\"transactional|read-write|nonstrict-read-write|read-only\"\n"
+" region=\"RegionName\"\n"
+" include=\"all|non-lazy\"\n"
+"/>]]>"
+msgstr ""
-#: index.docbook:665
-msgid "<literal>usage</literal> (required) specifies the caching strategy: <literal>transactional</literal>, <literal>read-write</literal>, <literal>nonstrict-read-write</literal> or <literal>read-only</literal>"
+#. Tag: para
+#: performance.xml:665
+#, no-c-format
+msgid ""
+"<literal>usage</literal> (required) specifies the caching strategy: "
+"<literal>transactional</literal>, <literal>read-write</literal>, "
+"<literal>nonstrict-read-write</literal> or <literal>read-only</literal>"
msgstr ""
- "<![CDATA[<class name=\"eg.Immutable\" mutable=\"false\">\n"
- " <cache usage=\"read-only\"/>\n"
- " ....\n"
- "</class>]]>"
+"<literal>usage</literal> especifica la estrategia de caching: "
+"<literal>transactional</literal>, <literal>read-write</literal>, "
+"<literal>nonstrict-read-write</literal> o <literal>read-only</literal>"
-#: index.docbook:674
-msgid "<literal>region</literal> (optional, defaults to the class or collection role name) specifies the name of the second level cache region"
-msgstr "Estrategia: lectura/escritura (read/write)"
+#. Tag: para
+#: performance.xml:674
+#, no-c-format
+msgid ""
+"<literal>region</literal> (optional, defaults to the class or collection "
+"role name) specifies the name of the second level cache region"
+msgstr ""
+"<literal>region</literal> (optional, defaults to the class or collection "
+"role name) specifies the name of the second level cache region"
-#: index.docbook:681
-msgid "<literal>include</literal> (optional, defaults to <literal>all</literal>) <literal>non-lazy</literal> specifies that properties of the entity mapped with <literal>lazy=\"true\"</literal> may not be cached when attribute-level lazy fetching is enabled"
-msgstr "Si la aplicación necesita actualizar datos, un caché <literal>read-write</literal> podría ser apropiado. Esta estrategia de caché nunca debe ser usada si se requiere nivel de aislamiento serializable de transacciones. Si el caché es usado en un entorno JTA, debes especificar la propiedad <literal>hibernate.transaction.manager_lookup_class</literal>, mencionando una estrategia para obtener el <literal>TransactionManager</literal> de JTA. En otros entornos, debes asegurarte que la transacción esté completada cuando se llame a <literal>Session.close()</literal> o <literal>Session.disconnect()</literal>. Si deseas usar esta estrategia en un cluster, debes asegurarte que la implementación de caché subyacente soporta bloqueos. Los provedores de caché internos predeterminados <emphasis>no</emphasis> no lo soportan."
+#. Tag: para
+#: performance.xml:681
+#, no-c-format
+msgid ""
+"<literal>include</literal> (optional, defaults to <literal>all</literal>) "
+"<literal>non-lazy</literal> specifies that properties of the entity mapped "
+"with <literal>lazy=\"true\"</literal> may not be cached when attribute-level "
+"lazy fetching is enabled"
+msgstr ""
+"<literal>include</literal> (optional, defaults to <literal>all</literal>) "
+"<literal>non-lazy</literal> specifies that properties of the entity mapped "
+"with <literal>lazy=\"true\"</literal> may not be cached when attribute-level "
+"lazy fetching is enabled"
-#: index.docbook:691
-msgid "Alternatively (preferrably?), you may specify <literal><class-cache></literal> and <literal><collection-cache></literal> elements in <literal>hibernate.cfg.xml</literal>."
+#. Tag: para
+#: performance.xml:691
+#, no-c-format
+msgid ""
+"Alternatively (preferrably?), you may specify <literal><class-cache></"
+"literal> and <literal><collection-cache></literal> elements in "
+"<literal>hibernate.cfg.xml</literal>."
msgstr ""
- "<![CDATA[<class name=\"eg.Cat\" .... >\n"
- " <cache usage=\"read-write\"/>\n"
- " ....\n"
- " <set name=\"kittens\" ... >\n"
- " <cache usage=\"read-write\"/>\n"
- " ....\n"
- " </set>\n"
- "</class>]]>"
+"Alternativamente (¿preferiblemente?), puedes especificar los elementos "
+"<literal><class-cache></literal> y <literal><collection-cache></"
+"literal> en <literal>hibernate.cfg.xml</literal>."
-#: index.docbook:696
-msgid "The <literal>usage</literal> attribute specifies a <emphasis>cache concurrency strategy</emphasis>."
-msgstr "Estrategia: lectura/escritura no estricta (nonstrict read/write)"
+#. Tag: para
+#: performance.xml:696
+#, no-c-format
+msgid ""
+"The <literal>usage</literal> attribute specifies a <emphasis>cache "
+"concurrency strategy</emphasis>."
+msgstr ""
+"El atributo <literal>usage</literal> especifica una <emphasis>estrategia de "
+"concurrencia al caché</emphasis>."
-#: index.docbook:703
+#. Tag: title
+#: performance.xml:703
+#, no-c-format
msgid "Strategy: read only"
-msgstr "Si la aplicación necesita sólo ocasionalmente actualizar datos (es decir, es extremadamente inprobable que dos transacciones intenten actualizar el mismo ítem simultáneamente) y no se requiere de un aislamiento de transacciones estricto, un caché <literal>nonstrict-read-write</literal> podría ser apropiado. Si se usa el caché en un entorno JTA, debes especificar <literal>hibernate.transaction.manager_lookup_class</literal>. En otros entornos, debes asegurarte que la transacción se haya completado cuando se llame a <literal>Session.close()</literal> o <literal>Session.disconnect()</literal>."
+msgstr "Estrategia: sólo lectura (read only)"
-#: index.docbook:705
-msgid "If your application needs to read but never modify instances of a persistent class, a <literal>read-only</literal> cache may be used. This is the simplest and best performing strategy. It's even perfectly safe for use in a cluster."
-msgstr "Estrategia: transaccional"
+#. Tag: para
+#: performance.xml:705
+#, no-c-format
+msgid ""
+"If your application needs to read but never modify instances of a persistent "
+"class, a <literal>read-only</literal> cache may be used. This is the "
+"simplest and best performing strategy. It's even perfectly safe for use in a "
+"cluster."
+msgstr ""
+"Si tu aplicación necesita leer pero nunca modificar las instancias de una "
+"clase persistente, puede usarse un caché <literal>read-only</literal>. Esta "
+"es la mejor y más simple estrategia. Es incluso perfectamente segura de usar "
+"en un cluster."
-#: index.docbook:711
+#. Tag: programlisting
+#: performance.xml:711
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"eg.Immutable\" mutable=\"false\">\n"
- " <cache usage=\"read-only\"/>\n"
- " ....\n"
- "</class>]]>"
-msgstr "La estrategia de caché <literal>transactional</literal> brinda soporte a provedores de cachés completamente transaccionales como TreeCache de JBoss. Un caché así, puede sólo ser usado en un entorno JTA y debes especificar <literal>hibernate.transaction.manager_lookup_class</literal>."
+"<![CDATA[<class name=\"eg.Immutable\" mutable=\"false\">\n"
+" <cache usage=\"read-only\"/>\n"
+" ....\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:717
+#. Tag: title
+#: performance.xml:717
+#, no-c-format
msgid "Strategy: read/write"
-msgstr "Ninguno de los provedores de caché soporta todas las estrategias de concurrencia al caché. La siguiente tabla muestra qué provedores son compatibles con qué estrategias de concurrencia."
+msgstr "Estrategia: lectura/escritura (read/write)"
-#: index.docbook:719
-msgid "If the application needs to update data, a <literal>read-write</literal> cache might be appropriate. This cache strategy should never be used if serializable transaction isolation level is required. If the cache is used in a JTA environment, you must specify the property <literal>hibernate.transaction.manager_lookup_class</literal>, naming a strategy for obtaining the JTA <literal>TransactionManager</literal>. In other environments, you should ensure that the transaction is completed when <literal>Session.close()</literal> or <literal>Session.disconnect()</literal> is called. If you wish to use this strategy in a cluster, you should ensure that the underlying cache implementation supports locking. The built-in cache providers do <emphasis>not</emphasis>."
-msgstr "Soporte a Estrategia de Concurrencia a Caché"
+#. Tag: para
+#: performance.xml:719
+#, no-c-format
+msgid ""
+"If the application needs to update data, a <literal>read-write</literal> "
+"cache might be appropriate. This cache strategy should never be used if "
+"serializable transaction isolation level is required. If the cache is used "
+"in a JTA environment, you must specify the property <literal>hibernate."
+"transaction.manager_lookup_class</literal>, naming a strategy for obtaining "
+"the JTA <literal>TransactionManager</literal>. In other environments, you "
+"should ensure that the transaction is completed when <literal>Session.close()"
+"</literal> or <literal>Session.disconnect()</literal> is called. If you wish "
+"to use this strategy in a cluster, you should ensure that the underlying "
+"cache implementation supports locking. The built-in cache providers do "
+"<emphasis>not</emphasis>."
+msgstr ""
+"Si la aplicación necesita actualizar datos, un caché <literal>read-write</"
+"literal> podría ser apropiado. Esta estrategia de caché nunca debe ser usada "
+"si se requiere nivel de aislamiento serializable de transacciones. Si el "
+"caché es usado en un entorno JTA, debes especificar la propiedad "
+"<literal>hibernate.transaction.manager_lookup_class</literal>, mencionando "
+"una estrategia para obtener el <literal>TransactionManager</literal> de JTA. "
+"En otros entornos, debes asegurarte que la transacción esté completada "
+"cuando se llame a <literal>Session.close()</literal> o <literal>Session."
+"disconnect()</literal>. Si deseas usar esta estrategia en un cluster, debes "
+"asegurarte que la implementación de caché subyacente soporta bloqueos. Los "
+"provedores de caché internos predeterminados <emphasis>no</emphasis> no lo "
+"soportan."
-#: index.docbook:730
+#. Tag: programlisting
+#: performance.xml:730
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"eg.Cat\" .... >\n"
- " <cache usage=\"read-write\"/>\n"
- " ....\n"
- " <set name=\"kittens\" ... >\n"
- " <cache usage=\"read-write\"/>\n"
- " ....\n"
- " </set>\n"
- "</class>]]>"
-msgstr "Caché"
+"<![CDATA[<class name=\"eg.Cat\" .... >\n"
+" <cache usage=\"read-write\"/>\n"
+" ....\n"
+" <set name=\"kittens\" ... >\n"
+" <cache usage=\"read-write\"/>\n"
+" ....\n"
+" </set>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:735
+#. Tag: title
+#: performance.xml:735
+#, no-c-format
msgid "Strategy: nonstrict read/write"
-msgstr "read-only"
+msgstr "Estrategia: lectura/escritura no estricta (nonstrict read/write)"
-#: index.docbook:737
-msgid "If the application only occasionally needs to update data (ie. if it is extremely unlikely that two transactions would try to update the same item simultaneously) and strict transaction isolation is not required, a <literal>nonstrict-read-write</literal> cache might be appropriate. If the cache is used in a JTA environment, you must specify <literal>hibernate.transaction.manager_lookup_class</literal>. In other environments, you should ensure that the transaction is completed when <literal>Session.close()</literal> or <literal>Session.disconnect()</literal> is called."
-msgstr "nonstrict-read-write"
+#. Tag: para
+#: performance.xml:737
+#, no-c-format
+msgid ""
+"If the application only occasionally needs to update data (ie. if it is "
+"extremely unlikely that two transactions would try to update the same item "
+"simultaneously) and strict transaction isolation is not required, a "
+"<literal>nonstrict-read-write</literal> cache might be appropriate. If the "
+"cache is used in a JTA environment, you must specify <literal>hibernate."
+"transaction.manager_lookup_class</literal>. In other environments, you "
+"should ensure that the transaction is completed when <literal>Session.close()"
+"</literal> or <literal>Session.disconnect()</literal> is called."
+msgstr ""
+"Si la aplicación necesita sólo ocasionalmente actualizar datos (es decir, es "
+"extremadamente inprobable que dos transacciones intenten actualizar el mismo "
+"ítem simultáneamente) y no se requiere de un aislamiento de transacciones "
+"estricto, un caché <literal>nonstrict-read-write</literal> podría ser "
+"apropiado. Si se usa el caché en un entorno JTA, debes especificar "
+"<literal>hibernate.transaction.manager_lookup_class</literal>. En otros "
+"entornos, debes asegurarte que la transacción se haya completado cuando se "
+"llame a <literal>Session.close()</literal> o <literal>Session.disconnect()</"
+"literal>."
-#: index.docbook:749
+#. Tag: title
+#: performance.xml:749
+#, no-c-format
msgid "Strategy: transactional"
-msgstr "read-write"
+msgstr "Estrategia: transaccional"
-#: index.docbook:751
-msgid "The <literal>transactional</literal> cache strategy provides support for fully transactional cache providers such as JBoss TreeCache. Such a cache may only be used in a JTA environment and you must specify <literal>hibernate.transaction.manager_lookup_class</literal>."
-msgstr "transactional"
+#. Tag: para
+#: performance.xml:751
+#, no-c-format
+msgid ""
+"The <literal>transactional</literal> cache strategy provides support for "
+"fully transactional cache providers such as JBoss TreeCache. Such a cache "
+"may only be used in a JTA environment and you must specify "
+"<literal>hibernate.transaction.manager_lookup_class</literal>."
+msgstr ""
+"La estrategia de caché <literal>transactional</literal> brinda soporte a "
+"provedores de cachés completamente transaccionales como TreeCache de JBoss. "
+"Un caché así, puede sólo ser usado en un entorno JTA y debes especificar "
+"<literal>hibernate.transaction.manager_lookup_class</literal>."
-#: index.docbook:759
-msgid "None of the cache providers support all of the cache concurrency strategies. The following table shows which providers are compatible with which concurrency strategies."
-msgstr "Hashtable (no pensado para uso en producción)"
+#. Tag: para
+#: performance.xml:759
+#, no-c-format
+msgid ""
+"None of the cache providers support all of the cache concurrency strategies. "
+"The following table shows which providers are compatible with which "
+"concurrency strategies."
+msgstr ""
+"Ninguno de los provedores de caché soporta todas las estrategias de "
+"concurrencia al caché. La siguiente tabla muestra qué provedores son "
+"compatibles con qué estrategias de concurrencia."
-#: index.docbook:765
+#. Tag: title
+#: performance.xml:765
+#, no-c-format
msgid "Cache Concurrency Strategy Support"
-msgstr "sí"
+msgstr "Soporte a Estrategia de Concurrencia a Caché"
-#: index.docbook:775
+#. Tag: entry
+#: performance.xml:775
+#, no-c-format
msgid "read-only"
-msgstr "sí"
+msgstr "read-only"
-#: index.docbook:776
+#. Tag: entry
+#: performance.xml:776
+#, no-c-format
msgid "nonstrict-read-write"
-msgstr "EHCache"
+msgstr "nonstrict-read-write"
-#: index.docbook:777
+#. Tag: entry
+#: performance.xml:777
+#, no-c-format
msgid "read-write"
-msgstr "sí"
+msgstr "read-write"
-#: index.docbook:778
+#. Tag: entry
+#: performance.xml:778
+#, no-c-format
msgid "transactional"
-msgstr "sí"
+msgstr "transactional"
-#: index.docbook:824
+#. Tag: title
+#: performance.xml:824
+#, no-c-format
msgid "Managing the caches"
+msgstr "Gestionando los cachés"
+
+#. Tag: para
+#: performance.xml:826
+#, no-c-format
+msgid ""
+"Whenever you pass an object to <literal>save()</literal>, <literal>update()</"
+"literal> or <literal>saveOrUpdate()</literal> and whenever you retrieve an "
+"object using <literal>load()</literal>, <literal>get()</literal>, "
+"<literal>list()</literal>, <literal>iterate()</literal> or <literal>scroll()"
+"</literal>, that object is added to the internal cache of the "
+"<literal>Session</literal>."
msgstr ""
- "<![CDATA[sessionFactory.evict(Cat.class, catId); //evict a particular Cat\n"
- "sessionFactory.evict(Cat.class); //evict all Cats\n"
- "sessionFactory.evictCollection(\"Cat.kittens\", catId); //evict a particular collection of kittens\n"
- "sessionFactory.evictCollection(\"Cat.kittens\"); //evict all kitten collections]]>"
+"Siempre que pases un objeto a <literal>save()</literal>, <literal>update()</"
+"literal> o <literal>saveOrUpdate()</literal> y siempre que recuperes un "
+"objeto usando <literal>load()</literal>, <literal>get()</literal>, "
+"<literal>list()</literal>, <literal>iterate()</literal> o <literal>scroll()</"
+"literal>, ese objeto es agregado al caché interno de la <literal>Session</"
+"literal>."
-#: index.docbook:826
-msgid "Whenever you pass an object to <literal>save()</literal>, <literal>update()</literal> or <literal>saveOrUpdate()</literal> and whenever you retrieve an object using <literal>load()</literal>, <literal>get()</literal>, <literal>list()</literal>, <literal>iterate()</literal> or <literal>scroll()</literal>, that object is added to the internal cache of the <literal>Session</literal>."
-msgstr "El <literal>CacheMode</literal> controla cómo una sesión en particular interactúa con el caché de segundo nivel."
+#. Tag: para
+#: performance.xml:833
+#, no-c-format
+msgid ""
+"When <literal>flush()</literal> is subsequently called, the state of that "
+"object will be synchronized with the database. If you do not want this "
+"synchronization to occur or if you are processing a huge number of objects "
+"and need to manage memory efficiently, the <literal>evict()</literal> method "
+"may be used to remove the object and its collections from the first-level "
+"cache."
+msgstr ""
+"Cuando subsecuentemente se llame a <literal>flush()</literal>, el estado de "
+"ese objeto será sincronizado con la base de datos. Si no quieres que ocurra "
+"esta sincronización o si estás procesando un número enorme de objetos y "
+"necesitas gestionar la memoria eficientemente, puede usarse el método "
+"<literal>evict()</literal> para quitar el objeto y sus colecciones del caché "
+"de primer nivel."
-#: index.docbook:833
-msgid "When <literal>flush()</literal> is subsequently called, the state of that object will be synchronized with the database. If you do not want this synchronization to occur or if you are processing a huge number of objects and need to manage memory efficiently, the <literal>evict()</literal> method may be used to remove the object and its collections from the first-level cache."
-msgstr "<literal>CacheMode.NORMAL</literal> - lee ítems desde y escribe ítems hacia el caché de segundo nivel"
+#. Tag: programlisting
+#: performance.xml:841
+#, no-c-format
+msgid ""
+"<![CDATA[ScrollableResult cats = sess.createQuery(\"from Cat as cat\").scroll"
+"(); //a huge result set\n"
+"while ( cats.next() ) {\n"
+" Cat cat = (Cat) cats.get(0);\n"
+" doSomethingWithACat(cat);\n"
+" sess.evict(cat);\n"
+"}]]>"
+msgstr ""
-#: index.docbook:841
+#. Tag: para
+#: performance.xml:843
+#, no-c-format
msgid ""
- "<![CDATA[ScrollableResult cats = sess.createQuery(\"from Cat as cat\").scroll(); //a huge result set\n"
- "while ( cats.next() ) {\n"
- " Cat cat = (Cat) cats.get(0);\n"
- " doSomethingWithACat(cat);\n"
- " sess.evict(cat);\n"
- "}]]>"
-msgstr "<literal>CacheMode.GET</literal> - lee ítems del caché de segundo nivel, pero no escribe al caché de segundo nivel excepto al actualizar datos"
+"The <literal>Session</literal> also provides a <literal>contains()</literal> "
+"method to determine if an instance belongs to the session cache."
+msgstr ""
+"La <literal>Session</literal> también provee un método <literal>contains()</"
+"literal> para determinar si una instancia pertenece al caché de la sesión."
-#: index.docbook:843
-msgid "The <literal>Session</literal> also provides a <literal>contains()</literal> method to determine if an instance belongs to the session cache."
-msgstr "<literal>CacheMode.PUT</literal> - escribe ítems al caché de segundo nivel, pero no lee del caché de segundo nivel"
+#. Tag: para
+#: performance.xml:848
+#, no-c-format
+msgid ""
+"To completely evict all objects from the session cache, call "
+"<literal>Session.clear()</literal>"
+msgstr ""
+"Para desahuciar (evict) todos los objetos del caché de sesión, llama a "
+"<literal>Session.clear()</literal>."
-#: index.docbook:848
-msgid "To completely evict all objects from the session cache, call <literal>Session.clear()</literal>"
-msgstr "<literal>CacheMode.REFRESH</literal> - escribe ítems al caché de segundo nivel, pero no lee del caché de segundo nivel, saltándose el efecto de <literal>hibernate.cache.use_minimal_puts</literal>, forzando un refresco del caché de segundo nivel para todos los ítems leídos de la base de datos"
+#. Tag: para
+#: performance.xml:852
+#, no-c-format
+msgid ""
+"For the second-level cache, there are methods defined on "
+"<literal>SessionFactory</literal> for evicting the cached state of an "
+"instance, entire class, collection instance or entire collection role."
+msgstr ""
+"Para el caché de segundo nivel, hay métodos definidos en "
+"<literal>SessionFactory</literal> para desahuciar el estado en caché de una "
+"instancia, clase entera, instancia de colección o rol enter de colección."
-#: index.docbook:852
-msgid "For the second-level cache, there are methods defined on <literal>SessionFactory</literal> for evicting the cached state of an instance, entire class, collection instance or entire collection role."
-msgstr "Para navegar por los contenidos de una región de caché de segundo nivel o de consultas, usa la API de <literal>Statistics</literal>:"
+#. Tag: programlisting
+#: performance.xml:858
+#, no-c-format
+msgid ""
+"<![CDATA[sessionFactory.evict(Cat.class, catId); //evict a particular Cat\n"
+"sessionFactory.evict(Cat.class); //evict all Cats\n"
+"sessionFactory.evictCollection(\"Cat.kittens\", catId); //evict a particular "
+"collection of kittens\n"
+"sessionFactory.evictCollection(\"Cat.kittens\"); //evict all kitten "
+"collections]]>"
+msgstr ""
-#: index.docbook:858
+#. Tag: para
+#: performance.xml:860
+#, no-c-format
msgid ""
- "<![CDATA[sessionFactory.evict(Cat.class, catId); //evict a particular Cat\n"
- "sessionFactory.evict(Cat.class); //evict all Cats\n"
- "sessionFactory.evictCollection(\"Cat.kittens\", catId); //evict a particular collection of kittens\n"
- "sessionFactory.evictCollection(\"Cat.kittens\"); //evict all kitten collections]]>"
+"The <literal>CacheMode</literal> controls how a particular session interacts "
+"with the second-level cache."
msgstr ""
- "<![CDATA[Map cacheEntries = sessionFactory.getStatistics()\n"
- " .getSecondLevelCacheStatistics(regionName)\n"
- " .getEntries();]]>"
+"El <literal>CacheMode</literal> controla cómo una sesión en particular "
+"interactúa con el caché de segundo nivel."
-#: index.docbook:860
-msgid "The <literal>CacheMode</literal> controls how a particular session interacts with the second-level cache."
-msgstr "Necesitarás habilitar las estadísticas y, opcionalmente, forzar a Hibernate para que guarde las entradas del caché en un formato más entendible por humanos:"
+#. Tag: para
+#: performance.xml:867
+#, no-c-format
+msgid ""
+"<literal>CacheMode.NORMAL</literal> - read items from and write items to the "
+"second-level cache"
+msgstr ""
+"<literal>CacheMode.NORMAL</literal> - lee ítems desde y escribe ítems hacia "
+"el caché de segundo nivel"
-#: index.docbook:867
-msgid "<literal>CacheMode.NORMAL</literal> - read items from and write items to the second-level cache"
+#. Tag: para
+#: performance.xml:872
+#, no-c-format
+msgid ""
+"<literal>CacheMode.GET</literal> - read items from the second-level cache, "
+"but don't write to the second-level cache except when updating data"
msgstr ""
- "<![CDATA[hibernate.generate_statistics true\n"
- "hibernate.cache.use_structured_entries true]]>"
+"<literal>CacheMode.GET</literal> - lee ítems del caché de segundo nivel, "
+"pero no escribe al caché de segundo nivel excepto al actualizar datos"
-#: index.docbook:872
-msgid "<literal>CacheMode.GET</literal> - read items from the second-level cache, but don't write to the second-level cache except when updating data"
-msgstr "El Caché de Consultas"
+#. Tag: para
+#: performance.xml:878
+#, no-c-format
+msgid ""
+"<literal>CacheMode.PUT</literal> - write items to the second-level cache, "
+"but don't read from the second-level cache"
+msgstr ""
+"<literal>CacheMode.PUT</literal> - escribe ítems al caché de segundo nivel, "
+"pero no lee del caché de segundo nivel"
-#: index.docbook:878
-msgid "<literal>CacheMode.PUT</literal> - write items to the second-level cache, but don't read from the second-level cache"
-msgstr "Los conjuntos resultado de consultas también pueden tratarse en caché. Esto sólo es útil para consultas que se ejecutan frecuentemente con los mismos parámetros. Para usar el caché de consultas primero debes habilitarlo:"
+#. Tag: para
+#: performance.xml:884
+#, no-c-format
+msgid ""
+"<literal>CacheMode.REFRESH</literal> - write items to the second-level "
+"cache, but don't read from the second-level cache, bypass the effect of "
+"<literal>hibernate.cache.use_minimal_puts</literal>, forcing a refresh of "
+"the second-level cache for all items read from the database"
+msgstr ""
+"<literal>CacheMode.REFRESH</literal> - escribe ítems al caché de segundo "
+"nivel, pero no lee del caché de segundo nivel, saltándose el efecto de "
+"<literal>hibernate.cache.use_minimal_puts</literal>, forzando un refresco "
+"del caché de segundo nivel para todos los ítems leídos de la base de datos"
-#: index.docbook:884
-msgid "<literal>CacheMode.REFRESH</literal> - write items to the second-level cache, but don't read from the second-level cache, bypass the effect of <literal>hibernate.cache.use_minimal_puts</literal>, forcing a refresh of the second-level cache for all items read from the database"
-msgstr "<![CDATA[hibernate.cache.use_query_cache true]]>"
+#. Tag: para
+#: performance.xml:892
+#, no-c-format
+msgid ""
+"To browse the contents of a second-level or query cache region, use the "
+"<literal>Statistics</literal> API:"
+msgstr ""
+"Para navegar por los contenidos de una región de caché de segundo nivel o de "
+"consultas, usa la API de <literal>Statistics</literal>:"
-#: index.docbook:892
-msgid "To browse the contents of a second-level or query cache region, use the <literal>Statistics</literal> API:"
-msgstr "Esta configuración causa la creación de dos nuevas regiones de caché - una teniendo en caché conjuntos resultado de consulta (<literal>org.hibernate.cache.StandardQueryCache</literal>), el otro teniendo timestamps de las actualizaciones más recientes a tablas consultables (<literal>org.hibernate.cache.UpdateTimestampsCache</literal>). Nota que el caché de consultas no pone en caché el estado de las entidades reales en el conjunto resultado; sólo tiene en caché valores indentificadores y resultados de tipo de valor. De modo que el caché de consultas siempre debe ser usado en conjunción con el caché de segundo nivel."
+#. Tag: programlisting
+#: performance.xml:897
+#, no-c-format
+msgid ""
+"<![CDATA[Map cacheEntries = sessionFactory.getStatistics()\n"
+" .getSecondLevelCacheStatistics(regionName)\n"
+" .getEntries();]]>"
+msgstr ""
-#: index.docbook:897
+#. Tag: para
+#: performance.xml:899
+#, no-c-format
msgid ""
- "<![CDATA[Map cacheEntries = sessionFactory.getStatistics()\n"
- " .getSecondLevelCacheStatistics(regionName)\n"
- " .getEntries();]]>"
-msgstr "La mayoría de consultas no se benefician del tratamiento en caché, de modo que por defecto las consultas no son tratadas en caché. Para habilitar el tratamiento en caché, llama a <literal>Query.setCacheable(true)</literal>. Esta llamada permite a la consulta buscar resultados existentes en caché o agregar sus resultados al caché cuando se ejecuta."
+"You'll need to enable statistics, and, optionally, force Hibernate to keep "
+"the cache entries in a more human-understandable format:"
+msgstr ""
+"Necesitarás habilitar las estadísticas y, opcionalmente, forzar a Hibernate "
+"para que guarde las entradas del caché en un formato más entendible por "
+"humanos:"
-#: index.docbook:899
-msgid "You'll need to enable statistics, and, optionally, force Hibernate to keep the cache entries in a more human-understandable format:"
-msgstr "Si requieres un control finamente granularizado sobre las políticas de expiración del caché de consultas, puedes especificar una región de caché con nombre para una consulta en particular llamando a <literal>Query.setCacheRegion()</literal>."
-
-#: index.docbook:904
+#. Tag: programlisting
+#: performance.xml:904
+#, no-c-format
msgid ""
- "<![CDATA[hibernate.generate_statistics true\n"
- "hibernate.cache.use_structured_entries true]]>"
+"<![CDATA[hibernate.generate_statistics true\n"
+"hibernate.cache.use_structured_entries true]]>"
msgstr ""
- "<![CDATA[List blogs = sess.createQuery(\"from Blog blog where blog.blogger = :blogger\")\n"
- " .setEntity(\"blogger\", blogger)\n"
- " .setMaxResults(15)\n"
- " .setCacheable(true)\n"
- " .setCacheRegion(\"frontpages\")\n"
- " .list();]]>"
-#: index.docbook:909
+#. Tag: title
+#: performance.xml:909
+#, no-c-format
msgid "The Query Cache"
-msgstr "Si la consulta debe forzar un refresco de si región del caché de consultas, debes llamar a <literal>Query.setCacheMode(CacheMode.REFRESH)</literal>. Esto es particularmente útil en casos donde los datos subyacentes pueden haber sido actualizados por medio de un proceso separado (es decir, no modificados a través de Hibernate) y permite a la aplicación refrescar selectivamente conjuntos resultado de consultas en particular. Esto es una alternativa más eficient al desahuciamiento de una región del caché de consultas vía <literal>SessionFactory.evictQueries()</literal>."
+msgstr "El Caché de Consultas"
-#: index.docbook:911
-msgid "Query result sets may also be cached. This is only useful for queries that are run frequently with the same parameters. To use the query cache you must first enable it:"
-msgstr "Entendiendo el rendimiento de Colecciones"
+#. Tag: para
+#: performance.xml:911
+#, no-c-format
+msgid ""
+"Query result sets may also be cached. This is only useful for queries that "
+"are run frequently with the same parameters. To use the query cache you must "
+"first enable it:"
+msgstr ""
+"Los conjuntos resultado de consultas también pueden tratarse en caché. Esto "
+"sólo es útil para consultas que se ejecutan frecuentemente con los mismos "
+"parámetros. Para usar el caché de consultas primero debes habilitarlo:"
-#: index.docbook:916
+#. Tag: programlisting
+#: performance.xml:916
+#, no-c-format
msgid "<![CDATA[hibernate.cache.use_query_cache true]]>"
-msgstr "Ya hemos llevado un buen tiempo hablando sobre colecciones. En esta sección resaltaremos un par de temas más sobre cómo las colecciones se comportan en tiempo de ejecución."
+msgstr ""
-#: index.docbook:918
-msgid "This setting causes the creation of two new cache regions - one holding cached query result sets (<literal>org.hibernate.cache.StandardQueryCache</literal>), the other holding timestamps of the most recent updates to queryable tables (<literal>org.hibernate.cache.UpdateTimestampsCache</literal>). Note that the query cache does not cache the state of the actual entities in the result set; it caches only identifier values and results of value type. So the query cache should always be used in conjunction with the second-level cache."
-msgstr "Taxonomia"
+#. Tag: para
+#: performance.xml:918
+#, no-c-format
+msgid ""
+"This setting causes the creation of two new cache regions - one holding "
+"cached query result sets (<literal>org.hibernate.cache.StandardQueryCache</"
+"literal>), the other holding timestamps of the most recent updates to "
+"queryable tables (<literal>org.hibernate.cache.UpdateTimestampsCache</"
+"literal>). Note that the query cache does not cache the state of the actual "
+"entities in the result set; it caches only identifier values and results of "
+"value type. So the query cache should always be used in conjunction with the "
+"second-level cache."
+msgstr ""
+"Esta configuración causa la creación de dos nuevas regiones de caché - una "
+"teniendo en caché conjuntos resultado de consulta (<literal>org.hibernate."
+"cache.StandardQueryCache</literal>), el otro teniendo timestamps de las "
+"actualizaciones más recientes a tablas consultables (<literal>org.hibernate."
+"cache.UpdateTimestampsCache</literal>). Nota que el caché de consultas no "
+"pone en caché el estado de las entidades reales en el conjunto resultado; "
+"sólo tiene en caché valores indentificadores y resultados de tipo de valor. "
+"De modo que el caché de consultas siempre debe ser usado en conjunción con "
+"el caché de segundo nivel."
-#: index.docbook:928
-msgid "Most queries do not benefit from caching, so by default queries are not cached. To enable caching, call <literal>Query.setCacheable(true)</literal>. This call allows the query to look for existing cache results or add its results to the cache when it is executed."
-msgstr "Hibernate define tres tipos básicos de colecciones:"
+#. Tag: para
+#: performance.xml:928
+#, no-c-format
+msgid ""
+"Most queries do not benefit from caching, so by default queries are not "
+"cached. To enable caching, call <literal>Query.setCacheable(true)</literal>. "
+"This call allows the query to look for existing cache results or add its "
+"results to the cache when it is executed."
+msgstr ""
+"La mayoría de consultas no se benefician del tratamiento en caché, de modo "
+"que por defecto las consultas no son tratadas en caché. Para habilitar el "
+"tratamiento en caché, llama a <literal>Query.setCacheable(true)</literal>. "
+"Esta llamada permite a la consulta buscar resultados existentes en caché o "
+"agregar sus resultados al caché cuando se ejecuta."
-#: index.docbook:935
-msgid "If you require fine-grained control over query cache expiration policies, you may specify a named cache region for a particular query by calling <literal>Query.setCacheRegion()</literal>."
-msgstr "colecciones de valores"
+#. Tag: para
+#: performance.xml:935
+#, no-c-format
+msgid ""
+"If you require fine-grained control over query cache expiration policies, "
+"you may specify a named cache region for a particular query by calling "
+"<literal>Query.setCacheRegion()</literal>."
+msgstr ""
+"Si requieres un control finamente granularizado sobre las políticas de "
+"expiración del caché de consultas, puedes especificar una región de caché "
+"con nombre para una consulta en particular llamando a <literal>Query."
+"setCacheRegion()</literal>."
-#: index.docbook:941
+#. Tag: programlisting
+#: performance.xml:941
+#, no-c-format
msgid ""
- "<![CDATA[List blogs = sess.createQuery(\"from Blog blog where blog.blogger = :blogger\")\n"
- " .setEntity(\"blogger\", blogger)\n"
- " .setMaxResults(15)\n"
- " .setCacheable(true)\n"
- " .setCacheRegion(\"frontpages\")\n"
- " .list();]]>"
-msgstr "asociaciones uno a muchos"
+"<![CDATA[List blogs = sess.createQuery(\"from Blog blog where blog.blogger "
+"= :blogger\")\n"
+" .setEntity(\"blogger\", blogger)\n"
+" .setMaxResults(15)\n"
+" .setCacheable(true)\n"
+" .setCacheRegion(\"frontpages\")\n"
+" .list();]]>"
+msgstr ""
-#: index.docbook:943
-msgid "If the query should force a refresh of its query cache region, you should call <literal>Query.setCacheMode(CacheMode.REFRESH)</literal>. This is particularly useful in cases where underlying data may have been updated via a separate process (i.e., not modified through Hibernate) and allows the application to selectively refresh particular query result sets. This is a more efficient alternative to eviction of a query cache region via <literal>SessionFactory.evictQueries()</literal>."
-msgstr "asociaciones muchos a muchos"
+#. Tag: para
+#: performance.xml:943
+#, no-c-format
+msgid ""
+"If the query should force a refresh of its query cache region, you should "
+"call <literal>Query.setCacheMode(CacheMode.REFRESH)</literal>. This is "
+"particularly useful in cases where underlying data may have been updated via "
+"a separate process (i.e., not modified through Hibernate) and allows the "
+"application to selectively refresh particular query result sets. This is a "
+"more efficient alternative to eviction of a query cache region via "
+"<literal>SessionFactory.evictQueries()</literal>."
+msgstr ""
+"Si la consulta debe forzar un refresco de si región del caché de consultas, "
+"debes llamar a <literal>Query.setCacheMode(CacheMode.REFRESH)</literal>. "
+"Esto es particularmente útil en casos donde los datos subyacentes pueden "
+"haber sido actualizados por medio de un proceso separado (es decir, no "
+"modificados a través de Hibernate) y permite a la aplicación refrescar "
+"selectivamente conjuntos resultado de consultas en particular. Esto es una "
+"alternativa más eficient al desahuciamiento de una región del caché de "
+"consultas vía <literal>SessionFactory.evictQueries()</literal>."
-#: index.docbook:955
+#. Tag: title
+#: performance.xml:955
+#, no-c-format
msgid "Understanding Collection performance"
-msgstr "Esta clasificación distingue las varias tablas y relaciones de clave foránea pero no nos dice absolutamente todo lo que necesitamos saber sobre el modelo relacional. Para entender completamente la estructura relacional y las características de rendimiento, debemos considerar la estructura de la clave primaria que es usada por Hibernate para actualizar o borrar filas de colección. Esto sugiere la siguiente clasificación:"
+msgstr "Entendiendo el rendimiento de Colecciones"
-#: index.docbook:957
-msgid "We've already spent quite some time talking about collections. In this section we will highlight a couple more issues about how collections behave at runtime."
-msgstr "colecciones indexadas"
+#. Tag: para
+#: performance.xml:957
+#, no-c-format
+msgid ""
+"We've already spent quite some time talking about collections. In this "
+"section we will highlight a couple more issues about how collections behave "
+"at runtime."
+msgstr ""
+"Ya hemos llevado un buen tiempo hablando sobre colecciones. En esta sección "
+"resaltaremos un par de temas más sobre cómo las colecciones se comportan en "
+"tiempo de ejecución."
-#: index.docbook:964
+#. Tag: title
+#: performance.xml:964
+#, no-c-format
msgid "Taxonomy"
-msgstr "conjuntos (sets)"
+msgstr "Taxonomia"
-#: index.docbook:966
+#. Tag: para
+#: performance.xml:966
+#, no-c-format
msgid "Hibernate defines three basic kinds of collections:"
-msgstr "bolsas (bags)"
+msgstr "Hibernate define tres tipos básicos de colecciones:"
-#: index.docbook:970
+#. Tag: para
+#: performance.xml:970
+#, no-c-format
msgid "collections of values"
-msgstr "Todas las colecciones indexadas (mapas, listas, arrays) tienen una clave primaria consistente de las columnas <literal><key></literal> y <literal><index></literal>. En este caso las actualizaciones de colecciones son usualmente extremadamente eficientes. La clave primaria puede ser indexada fácilmente y una fila en particular puede ser localizada cuando Hibernate intenta actualizarla o borrarla."
+msgstr "colecciones de valores"
-#: index.docbook:973
+#. Tag: para
+#: performance.xml:973
+#, no-c-format
msgid "one to many associations"
-msgstr "Los conjuntos (sets) tienen una clave primaria consistente en <literal><key></literal> y columnas de elemento. Esto puede ser menos eficiente para algunos tipos de elemento de colección, particularmente elementos compuestos o texto largo, o campos binarios. La base de datos puede no ser capaz de indexar una clave primaria compleja eficientemente. Por otra parte, para asociaciones uno a muchos o muchos a muchos, particularmente en el caso de identificadores sintéticos, es probable que sólo sea tan eficiente. (Nota al márgen: si quieres que <literal>SchemaExport</literal> realmente cree la clave primaria de un <literal><set></literal> por ti, debes declarar todas las columnas como <literal>not-null=\"true\"</literal>.)"
+msgstr "asociaciones uno a muchos"
-#: index.docbook:976
+#. Tag: para
+#: performance.xml:976
+#, no-c-format
msgid "many to many associations"
-msgstr "Los mapeos de <literal><idbag></literal> definen una clave delegada, de modo que siempre resulten eficientes de actualizar. De hecho, son el mejor caso."
+msgstr "asociaciones muchos a muchos"
-#: index.docbook:980
-msgid "This classification distinguishes the various table and foreign key relationships but does not tell us quite everything we need to know about the relational model. To fully understand the relational structure and performance characteristics, we must also consider the structure of the primary key that is used by Hibernate to update or delete collection rows. This suggests the following classification:"
-msgstr "Los bags son el peor caso. Ya que un bag permite valores de elementos duplicados y no tiene ninguna columna índice, no puede definirse ninguna clave primaria. Hibernate no tiene forma de distinguir entre filas duplicadas. Hibernate resuelve este problema quitando completamente (en un solo <literal>DELETE</literal>) y recreando la colección siempre que cambia. Esto podría ser muy ineficiente."
+#. Tag: para
+#: performance.xml:980
+#, no-c-format
+msgid ""
+"This classification distinguishes the various table and foreign key "
+"relationships but does not tell us quite everything we need to know about "
+"the relational model. To fully understand the relational structure and "
+"performance characteristics, we must also consider the structure of the "
+"primary key that is used by Hibernate to update or delete collection rows. "
+"This suggests the following classification:"
+msgstr ""
+"Esta clasificación distingue las varias tablas y relaciones de clave foránea "
+"pero no nos dice absolutamente todo lo que necesitamos saber sobre el modelo "
+"relacional. Para entender completamente la estructura relacional y las "
+"características de rendimiento, debemos considerar la estructura de la clave "
+"primaria que es usada por Hibernate para actualizar o borrar filas de "
+"colección. Esto sugiere la siguiente clasificación:"
-#: index.docbook:991
+#. Tag: para
+#: performance.xml:991
+#, no-c-format
msgid "indexed collections"
-msgstr "Nota que para una asociación uno-a-muchos, la \"clave primaria\" puede no ser la clave primaria física de la tabla de base de datos; pero incluso en este caso, la clasificación anterior es útil todavía. (Aún refleja cómo Hibernate \"localiza\" filas individuales de la colección.)"
+msgstr "colecciones indexadas"
-#: index.docbook:994
+#. Tag: para
+#: performance.xml:994
+#, no-c-format
msgid "sets"
-msgstr "Las listas, mapas, idbags y conjuntos son las colecciones más eficientes de actualizar"
+msgstr "conjuntos (sets)"
-#: index.docbook:997
+#. Tag: para
+#: performance.xml:997
+#, no-c-format
msgid "bags"
-msgstr "Desde la discusión anterior, debe quedar claro que las colecciones indexadas y (usualmente) los conjuntos permiten la operación más eficiente en términos de añadir, quitar y actualizar elementos."
+msgstr "bolsas (bags)"
-#: index.docbook:1001
-msgid "All indexed collections (maps, lists, arrays) have a primary key consisting of the <literal><key></literal> and <literal><index></literal> columns. In this case collection updates are usually extremely efficient - the primary key may be efficiently indexed and a particular row may be efficiently located when Hibernate tries to update or delete it."
-msgstr "Hay, discutiblemente, una ventaja más que las colecciones indexadas tienen sobre otros conjuntos para las asociaciones muchos a muchos o colecciones de valores. Debido a la estructura de un <literal>Set</literal>, Hibernate ni siquiera actualiza una fila con <literal>UPDATE</literal> cuando se \"cambia\" un elemento. Los cambios a un <literal>Set</literal> siempre funcionan por medio de <literal>INSERT</literal> y <literal>DELETE</literal> (de filas individuales). Una vez más, esta consideración no se aplica a las asociaciones uno a muchos."
+#. Tag: para
+#: performance.xml:1001
+#, no-c-format
+msgid ""
+"All indexed collections (maps, lists, arrays) have a primary key consisting "
+"of the <literal><key></literal> and <literal><index></literal> "
+"columns. In this case collection updates are usually extremely efficient - "
+"the primary key may be efficiently indexed and a particular row may be "
+"efficiently located when Hibernate tries to update or delete it."
+msgstr ""
+"Todas las colecciones indexadas (mapas, listas, arrays) tienen una clave "
+"primaria consistente de las columnas <literal><key></literal> y "
+"<literal><index></literal>. En este caso las actualizaciones de "
+"colecciones son usualmente extremadamente eficientes. La clave primaria "
+"puede ser indexada fácilmente y una fila en particular puede ser localizada "
+"cuando Hibernate intenta actualizarla o borrarla."
-#: index.docbook:1009
-msgid "Sets have a primary key consisting of <literal><key></literal> and element columns. This may be less efficient for some types of collection element, particularly composite elements or large text or binary fields; the database may not be able to index a complex primary key as efficently. On the other hand, for one to many or many to many associations, particularly in the case of synthetic identifiers, it is likely to be just as efficient. (Side-note: if you want <literal>SchemaExport</literal> to actually create the primary key of a <literal><set></literal> for you, you must declare all columns as <literal>not-null=\"true\"</literal>.)"
-msgstr "Después de observar que los arrays no pueden ser perezosos, podríamos concluir que las listas, mapas e idbags son los tipos más eficientes de colecciones (no inversas), con los conjuntos (sets) no muy por detrás. Se espera que los sets sean el tipo más común de colección en las aplicaciones de Hibernate. Esto es debido a que la semántica de los sets es la más natural en el modelo relacional."
+#. Tag: para
+#: performance.xml:1009
+#, no-c-format
+msgid ""
+"Sets have a primary key consisting of <literal><key></literal> and "
+"element columns. This may be less efficient for some types of collection "
+"element, particularly composite elements or large text or binary fields; the "
+"database may not be able to index a complex primary key as efficently. On "
+"the other hand, for one to many or many to many associations, particularly "
+"in the case of synthetic identifiers, it is likely to be just as efficient. "
+"(Side-note: if you want <literal>SchemaExport</literal> to actually create "
+"the primary key of a <literal><set></literal> for you, you must "
+"declare all columns as <literal>not-null=\"true\"</literal>.)"
+msgstr ""
+"Los conjuntos (sets) tienen una clave primaria consistente en <literal><"
+"key></literal> y columnas de elemento. Esto puede ser menos eficiente "
+"para algunos tipos de elemento de colección, particularmente elementos "
+"compuestos o texto largo, o campos binarios. La base de datos puede no ser "
+"capaz de indexar una clave primaria compleja eficientemente. Por otra parte, "
+"para asociaciones uno a muchos o muchos a muchos, particularmente en el caso "
+"de identificadores sintéticos, es probable que sólo sea tan eficiente. (Nota "
+"al márgen: si quieres que <literal>SchemaExport</literal> realmente cree la "
+"clave primaria de un <literal><set></literal> por ti, debes declarar "
+"todas las columnas como <literal>not-null=\"true\"</literal>.)"
-#: index.docbook:1020
-msgid "<literal><idbag></literal> mappings define a surrogate key, so they are always very efficient to update. In fact, they are the best case."
-msgstr "Sin embargo, en modelos de dominio de Hibernate bien dieñados, usualmente vemos que la mayoría de las colecciones son de hecho asociaciones uno-a-muchos con <literal>inverse=\"true\"</literal>. Para estas asociaciones, la actualización es manejada por el extremo muchos-a-uno de la asociación, y las consideraciones de este tipo sobre el rendimiento de actualización de colecciones simplemente no se aplican."
+#. Tag: para
+#: performance.xml:1020
+#, no-c-format
+msgid ""
+"<literal><idbag></literal> mappings define a surrogate key, so they "
+"are always very efficient to update. In fact, they are the best case."
+msgstr ""
+"Los mapeos de <literal><idbag></literal> definen una clave delegada, "
+"de modo que siempre resulten eficientes de actualizar. De hecho, son el "
+"mejor caso."
-#: index.docbook:1025
-msgid "Bags are the worst case. Since a bag permits duplicate element values and has no index column, no primary key may be defined. Hibernate has no way of distinguishing between duplicate rows. Hibernate resolves this problem by completely removing (in a single <literal>DELETE</literal>) and recreating the collection whenever it changes. This might be very inefficient."
-msgstr "Los Bags y las listas son las colecciones inversas más eficientes"
+#. Tag: para
+#: performance.xml:1025
+#, no-c-format
+msgid ""
+"Bags are the worst case. Since a bag permits duplicate element values and "
+"has no index column, no primary key may be defined. Hibernate has no way of "
+"distinguishing between duplicate rows. Hibernate resolves this problem by "
+"completely removing (in a single <literal>DELETE</literal>) and recreating "
+"the collection whenever it changes. This might be very inefficient."
+msgstr ""
+"Los bags son el peor caso. Ya que un bag permite valores de elementos "
+"duplicados y no tiene ninguna columna índice, no puede definirse ninguna "
+"clave primaria. Hibernate no tiene forma de distinguir entre filas "
+"duplicadas. Hibernate resuelve este problema quitando completamente (en un "
+"solo <literal>DELETE</literal>) y recreando la colección siempre que cambia. "
+"Esto podría ser muy ineficiente."
-#: index.docbook:1033
-msgid "Note that for a one-to-many association, the \"primary key\" may not be the physical primary key of the database table - but even in this case, the above classification is still useful. (It still reflects how Hibernate \"locates\" individual rows of the collection.)"
-msgstr "Justo antes que tires a la zanja los bags para siempre, hay un caso en particular en el que los bags son muchos más eficientes que los conjuntos. Para una colección con <literal>inverse=\"true\"</literal> (el idioma estándar de relaciones uno-a-muchos bidireccionales, por ejemplo) ¡podemos añadir elementos a un bag o lista sin necesidad de inicializar (fetch) los elementos del bag! Esto se debe a que <literal>Collection.add()</literal> o <literal>Collection.addAll()</literal> siempre deben devolver true para un bag o <literal>List</literal> (no como un <literal>Set</literal>). Esto puede hacer el siguiente código común mucho más rápido."
+#. Tag: para
+#: performance.xml:1033
+#, no-c-format
+msgid ""
+"Note that for a one-to-many association, the \"primary key\" may not be the "
+"physical primary key of the database table - but even in this case, the "
+"above classification is still useful. (It still reflects how Hibernate "
+"\"locates\" individual rows of the collection.)"
+msgstr ""
+"Nota que para una asociación uno-a-muchos, la \"clave primaria\" puede no "
+"ser la clave primaria física de la tabla de base de datos; pero incluso en "
+"este caso, la clasificación anterior es útil todavía. (Aún refleja cómo "
+"Hibernate \"localiza\" filas individuales de la colección.)"
-#: index.docbook:1043
-msgid "Lists, maps, idbags and sets are the most efficient collections to update"
+#. Tag: title
+#: performance.xml:1043
+#, no-c-format
+msgid ""
+"Lists, maps, idbags and sets are the most efficient collections to update"
msgstr ""
- "<![CDATA[Parent p = (Parent) sess.load(Parent.class, id);\n"
- " Child c = new Child();\n"
- " c.setParent(p);\n"
- " p.getChildren().add(c); //no need to fetch the collection!\n"
- " sess.flush();]]>"
+"Las listas, mapas, idbags y conjuntos son las colecciones más eficientes de "
+"actualizar"
-#: index.docbook:1045
-msgid "From the discussion above, it should be clear that indexed collections and (usually) sets allow the most efficient operation in terms of adding, removing and updating elements."
-msgstr "Borrado de un solo tiro"
+#. Tag: para
+#: performance.xml:1045
+#, no-c-format
+msgid ""
+"From the discussion above, it should be clear that indexed collections and "
+"(usually) sets allow the most efficient operation in terms of adding, "
+"removing and updating elements."
+msgstr ""
+"Desde la discusión anterior, debe quedar claro que las colecciones indexadas "
+"y (usualmente) los conjuntos permiten la operación más eficiente en términos "
+"de añadir, quitar y actualizar elementos."
-#: index.docbook:1051
-msgid "There is, arguably, one more advantage that indexed collections have over sets for many to many associations or collections of values. Because of the structure of a <literal>Set</literal>, Hibernate doesn't ever <literal>UPDATE</literal> a row when an element is \"changed\". Changes to a <literal>Set</literal> always work via <literal>INSERT</literal> and <literal>DELETE</literal> (of individual rows). Once again, this consideration does not apply to one to many associations."
-msgstr "Ocasionalmente, borrar los elementos de una colección uno a uno puede ser extremadamente ineficiente. Hibernate no es completamente estúpido, de modo que sabe no hacer eso, en el caso de una colección nueva-vacía (si has llamado a <literal>list.clear()</literal>, por ejemplo). En este caso, Hibernate publicará una sola <literal>DELETE</literal>, ¡y listo!"
+#. Tag: para
+#: performance.xml:1051
+#, no-c-format
+msgid ""
+"There is, arguably, one more advantage that indexed collections have over "
+"sets for many to many associations or collections of values. Because of the "
+"structure of a <literal>Set</literal>, Hibernate doesn't ever "
+"<literal>UPDATE</literal> a row when an element is \"changed\". Changes to a "
+"<literal>Set</literal> always work via <literal>INSERT</literal> and "
+"<literal>DELETE</literal> (of individual rows). Once again, this "
+"consideration does not apply to one to many associations."
+msgstr ""
+"Hay, discutiblemente, una ventaja más que las colecciones indexadas tienen "
+"sobre otros conjuntos para las asociaciones muchos a muchos o colecciones de "
+"valores. Debido a la estructura de un <literal>Set</literal>, Hibernate ni "
+"siquiera actualiza una fila con <literal>UPDATE</literal> cuando se \"cambia"
+"\" un elemento. Los cambios a un <literal>Set</literal> siempre funcionan "
+"por medio de <literal>INSERT</literal> y <literal>DELETE</literal> (de filas "
+"individuales). Una vez más, esta consideración no se aplica a las "
+"asociaciones uno a muchos."
-#: index.docbook:1060
-msgid "After observing that arrays cannot be lazy, we would conclude that lists, maps and idbags are the most performant (non-inverse) collection types, with sets not far behind. Sets are expected to be the most common kind of collection in Hibernate applications. This is because the \"set\" semantics are most natural in the relational model."
-msgstr "Supón que añadimos un solo elemento a una colección de tamaño veinte y luego quitamos dos elementos. Hibernate publicará una sentencia <literal>INSERT</literal> y dos sentencias <literal>DELETE</literal> (a menos que la colección sea un bag). Esto es ciertamente deseable."
+#. Tag: para
+#: performance.xml:1060
+#, no-c-format
+msgid ""
+"After observing that arrays cannot be lazy, we would conclude that lists, "
+"maps and idbags are the most performant (non-inverse) collection types, with "
+"sets not far behind. Sets are expected to be the most common kind of "
+"collection in Hibernate applications. This is because the \"set\" semantics "
+"are most natural in the relational model."
+msgstr ""
+"Después de observar que los arrays no pueden ser perezosos, podríamos "
+"concluir que las listas, mapas e idbags son los tipos más eficientes de "
+"colecciones (no inversas), con los conjuntos (sets) no muy por detrás. Se "
+"espera que los sets sean el tipo más común de colección en las aplicaciones "
+"de Hibernate. Esto es debido a que la semántica de los sets es la más "
+"natural en el modelo relacional."
-#: index.docbook:1068
-msgid "However, in well-designed Hibernate domain models, we usually see that most collections are in fact one-to-many associations with <literal>inverse=\"true\"</literal>. For these associations, the update is handled by the many-to-one end of the association, and so considerations of collection update performance simply do not apply."
-msgstr "Sin embargo, supón que quitamos dieciocho elementos, dejando dos y luego añadimos tres nuevos elementos. Hay dos formas posibles de proceder"
+#. Tag: para
+#: performance.xml:1068
+#, no-c-format
+msgid ""
+"However, in well-designed Hibernate domain models, we usually see that most "
+"collections are in fact one-to-many associations with <literal>inverse=\"true"
+"\"</literal>. For these associations, the update is handled by the many-to-"
+"one end of the association, and so considerations of collection update "
+"performance simply do not apply."
+msgstr ""
+"Sin embargo, en modelos de dominio de Hibernate bien dieñados, usualmente "
+"vemos que la mayoría de las colecciones son de hecho asociaciones uno-a-"
+"muchos con <literal>inverse=\"true\"</literal>. Para estas asociaciones, la "
+"actualización es manejada por el extremo muchos-a-uno de la asociación, y "
+"las consideraciones de este tipo sobre el rendimiento de actualización de "
+"colecciones simplemente no se aplican."
-#: index.docbook:1078
+#. Tag: title
+#: performance.xml:1078
+#, no-c-format
msgid "Bags and lists are the most efficient inverse collections"
-msgstr "borrar dieciocho filas una a una y luego insertar tres filas"
+msgstr "Los Bags y las listas son las colecciones inversas más eficientes"
-#: index.docbook:1080
-msgid "Just before you ditch bags forever, there is a particular case in which bags (and also lists) are much more performant than sets. For a collection with <literal>inverse=\"true\"</literal> (the standard bidirectional one-to-many relationship idiom, for example) we can add elements to a bag or list without needing to initialize (fetch) the bag elements! This is because <literal>Collection.add()</literal> or <literal>Collection.addAll()</literal> must always return true for a bag or <literal>List</literal> (unlike a <literal>Set</literal>). This can make the following common code much faster."
-msgstr "quitar toda la colección (en un solo <literal>DELETE</literal> de SQL) e insertar todos los cinco elementos actuales (uno a uno)"
+#. Tag: para
+#: performance.xml:1080
+#, no-c-format
+msgid ""
+"Just before you ditch bags forever, there is a particular case in which bags "
+"(and also lists) are much more performant than sets. For a collection with "
+"<literal>inverse=\"true\"</literal> (the standard bidirectional one-to-many "
+"relationship idiom, for example) we can add elements to a bag or list "
+"without needing to initialize (fetch) the bag elements! This is because "
+"<literal>Collection.add()</literal> or <literal>Collection.addAll()</"
+"literal> must always return true for a bag or <literal>List</literal> "
+"(unlike a <literal>Set</literal>). This can make the following common code "
+"much faster."
+msgstr ""
+"Justo antes que tires a la zanja los bags para siempre, hay un caso en "
+"particular en el que los bags son muchos más eficientes que los conjuntos. "
+"Para una colección con <literal>inverse=\"true\"</literal> (el idioma "
+"estándar de relaciones uno-a-muchos bidireccionales, por ejemplo) ¡podemos "
+"añadir elementos a un bag o lista sin necesidad de inicializar (fetch) los "
+"elementos del bag! Esto se debe a que <literal>Collection.add()</literal> o "
+"<literal>Collection.addAll()</literal> siempre deben devolver true para un "
+"bag o <literal>List</literal> (no como un <literal>Set</literal>). Esto "
+"puede hacer el siguiente código común mucho más rápido."
-#: index.docbook:1090
+#. Tag: programlisting
+#: performance.xml:1090
+#, no-c-format
msgid ""
- "<![CDATA[Parent p = (Parent) sess.load(Parent.class, id);\n"
- "Child c = new Child();\n"
- "c.setParent(p);\n"
- "p.getChildren().add(c); //no need to fetch the collection!\n"
- "sess.flush();]]>"
-msgstr "Hibernate no es lo suficientemente inteligente para saber que la segunda opción es probablemente más rápida en este caso. (Y que sería probablemente indeseable para Hibernate ser tan inteligente; este comportamiento podría confundir a disparadores de base de datos, etc.)"
+"<![CDATA[Parent p = (Parent) sess.load(Parent.class, id);\n"
+"Child c = new Child();\n"
+"c.setParent(p);\n"
+"p.getChildren().add(c); //no need to fetch the collection!\n"
+"sess.flush();]]>"
+msgstr ""
-#: index.docbook:1095
+#. Tag: title
+#: performance.xml:1095
+#, no-c-format
msgid "One shot delete"
-msgstr "Afortunadamente, puedes forzar este comportamiento (es decir, la segunda estrategia) en cualquier momento descartando (es decir, desreferenciando) la colección original y devolviendo una colección nuevamente instanciada con todos los elementos actuales. Esto puede ser muy útil y potente de vez en cuando."
+msgstr "Borrado de un solo tiro"
-#: index.docbook:1097
-msgid "Occasionally, deleting collection elements one by one can be extremely inefficient. Hibernate isn't completely stupid, so it knows not to do that in the case of an newly-empty collection (if you called <literal>list.clear()</literal>, for example). In this case, Hibernate will issue a single <literal>DELETE</literal> and we are done!"
-msgstr "Por supuesto, el borrado-de-un-solo-tiro no se aplica a colecciones mapeadas <literal>inverse=\"true\"</literal>."
+#. Tag: para
+#: performance.xml:1097
+#, no-c-format
+msgid ""
+"Occasionally, deleting collection elements one by one can be extremely "
+"inefficient. Hibernate isn't completely stupid, so it knows not to do that "
+"in the case of an newly-empty collection (if you called <literal>list.clear()"
+"</literal>, for example). In this case, Hibernate will issue a single "
+"<literal>DELETE</literal> and we are done!"
+msgstr ""
+"Ocasionalmente, borrar los elementos de una colección uno a uno puede ser "
+"extremadamente ineficiente. Hibernate no es completamente estúpido, de modo "
+"que sabe no hacer eso, en el caso de una colección nueva-vacía (si has "
+"llamado a <literal>list.clear()</literal>, por ejemplo). En este caso, "
+"Hibernate publicará una sola <literal>DELETE</literal>, ¡y listo!"
-#: index.docbook:1104
-msgid "Suppose we add a single element to a collection of size twenty and then remove two elements. Hibernate will issue one <literal>INSERT</literal> statement and two <literal>DELETE</literal> statements (unless the collection is a bag). This is certainly desirable."
-msgstr "Monitoreando el rendimiento"
+#. Tag: para
+#: performance.xml:1104
+#, no-c-format
+msgid ""
+"Suppose we add a single element to a collection of size twenty and then "
+"remove two elements. Hibernate will issue one <literal>INSERT</literal> "
+"statement and two <literal>DELETE</literal> statements (unless the "
+"collection is a bag). This is certainly desirable."
+msgstr ""
+"Supón que añadimos un solo elemento a una colección de tamaño veinte y luego "
+"quitamos dos elementos. Hibernate publicará una sentencia <literal>INSERT</"
+"literal> y dos sentencias <literal>DELETE</literal> (a menos que la "
+"colección sea un bag). Esto es ciertamente deseable."
-#: index.docbook:1110
-msgid "However, suppose that we remove eighteen elements, leaving two and then add thee new elements. There are two possible ways to proceed"
-msgstr "La optimización no es de mucho uso sin el monitoreo y el acceso a números de rendimiento. Hibernate provee un rango completo de figuras sobre sus operaciones internas. Las estadísticas en Hibernate están disponibles por <literal>SessionFactory</literal>."
+#. Tag: para
+#: performance.xml:1110
+#, no-c-format
+msgid ""
+"However, suppose that we remove eighteen elements, leaving two and then add "
+"thee new elements. There are two possible ways to proceed"
+msgstr ""
+"Sin embargo, supón que quitamos dieciocho elementos, dejando dos y luego "
+"añadimos tres nuevos elementos. Hay dos formas posibles de proceder"
-#: index.docbook:1117
+#. Tag: para
+#: performance.xml:1117
+#, no-c-format
msgid "delete eighteen rows one by one and then insert three rows"
-msgstr "Monitoreando una SessionFactory"
+msgstr "borrar dieciocho filas una a una y luego insertar tres filas"
-#: index.docbook:1120
-msgid "remove the whole collection (in one SQL <literal>DELETE</literal>) and insert all five current elements (one by one)"
-msgstr "Puedes acceder a las métricas de <literal>SessionFactory</literal> de dos formas. Tu primera opción es llamar a <literal>sessionFactory.getStatistics()</literal> y leer o mostrar por pantalla la <literal>Statistics</literal> por ti mismo."
+#. Tag: para
+#: performance.xml:1120
+#, no-c-format
+msgid ""
+"remove the whole collection (in one SQL <literal>DELETE</literal>) and "
+"insert all five current elements (one by one)"
+msgstr ""
+"quitar toda la colección (en un solo <literal>DELETE</literal> de SQL) e "
+"insertar todos los cinco elementos actuales (uno a uno)"
-#: index.docbook:1125
-msgid "Hibernate isn't smart enough to know that the second option is probably quicker in this case. (And it would probably be undesirable for Hibernate to be that smart; such behaviour might confuse database triggers, etc.)"
-msgstr "Hibernate puede también usar JMX para publicar las métricas si habilitas el MBean <literal>StatisticsService</literal>. Puede habilitar un solo MBean para todas tus <literal>SessionFactory</literal> o una por fábrica. Mira el siguiente código para ejemplos de configuración minimalistas:"
+#. Tag: para
+#: performance.xml:1125
+#, no-c-format
+msgid ""
+"Hibernate isn't smart enough to know that the second option is probably "
+"quicker in this case. (And it would probably be undesirable for Hibernate to "
+"be that smart; such behaviour might confuse database triggers, etc.)"
+msgstr ""
+"Hibernate no es lo suficientemente inteligente para saber que la segunda "
+"opción es probablemente más rápida en este caso. (Y que sería probablemente "
+"indeseable para Hibernate ser tan inteligente; este comportamiento podría "
+"confundir a disparadores de base de datos, etc.)"
-#: index.docbook:1131
-msgid "Fortunately, you can force this behaviour (ie. the second strategy) at any time by discarding (ie. dereferencing) the original collection and returning a newly instantiated collection with all the current elements. This can be very useful and powerful from time to time."
+#. Tag: para
+#: performance.xml:1131
+#, no-c-format
+msgid ""
+"Fortunately, you can force this behaviour (ie. the second strategy) at any "
+"time by discarding (ie. dereferencing) the original collection and returning "
+"a newly instantiated collection with all the current elements. This can be "
+"very useful and powerful from time to time."
msgstr ""
- "<![CDATA[// MBean service registration for a specific SessionFactory\n"
- "Hashtable tb = new Hashtable();\n"
- "tb.put(\"type\", \"statistics\");\n"
- "tb.put(\"sessionFactory\", \"myFinancialApp\");\n"
- "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
- "\n"
- "StatisticsService stats = new StatisticsService(); // MBean implementation\n"
- "stats.setSessionFactory(sessionFactory); // Bind the stats to a SessionFactory\n"
- "server.registerMBean(stats, on); // Register the Mbean on the server]]>"
+"Afortunadamente, puedes forzar este comportamiento (es decir, la segunda "
+"estrategia) en cualquier momento descartando (es decir, desreferenciando) la "
+"colección original y devolviendo una colección nuevamente instanciada con "
+"todos los elementos actuales. Esto puede ser muy útil y potente de vez en "
+"cuando."
-#: index.docbook:1137
-msgid "Of course, one-shot-delete does not apply to collections mapped <literal>inverse=\"true\"</literal>."
+#. Tag: para
+#: performance.xml:1137
+#, no-c-format
+msgid ""
+"Of course, one-shot-delete does not apply to collections mapped "
+"<literal>inverse=\"true\"</literal>."
msgstr ""
- "<![CDATA[// MBean service registration for all SessionFactory's\n"
- "Hashtable tb = new Hashtable();\n"
- "tb.put(\"type\", \"statistics\");\n"
- "tb.put(\"sessionFactory\", \"all\");\n"
- "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
- "\n"
- "StatisticsService stats = new StatisticsService(); // MBean implementation\n"
- "server.registerMBean(stats, on); // Register the MBean on the server]]>"
+"Por supuesto, el borrado-de-un-solo-tiro no se aplica a colecciones mapeadas "
+"<literal>inverse=\"true\"</literal>."
-#: index.docbook:1146
+#. Tag: title
+#: performance.xml:1146
+#, no-c-format
msgid "Monitoring performance"
-msgstr "POR HACER: Esto no tiene sentido: En el primer caso, recuperamos y usamos el MBean directamente. En el segundo, debemos proporcionar el nombre JNDI en el que se guarda la fábrica de sesiones antes de usarlo. Usa <literal>hibernateStatsBean.setSessionFactoryJNDIName(\"my/JNDI/Name\")</literal>"
+msgstr "Monitoreando el rendimiento"
-#: index.docbook:1148
-msgid "Optimization is not much use without monitoring and access to performance numbers. Hibernate provides a full range of figures about its internal operations. Statistics in Hibernate are available per <literal>SessionFactory</literal>."
-msgstr "Puedes (des)activar el monitoreo de una <literal>SessionFactory</literal>"
+#. Tag: para
+#: performance.xml:1148
+#, no-c-format
+msgid ""
+"Optimization is not much use without monitoring and access to performance "
+"numbers. Hibernate provides a full range of figures about its internal "
+"operations. Statistics in Hibernate are available per "
+"<literal>SessionFactory</literal>."
+msgstr ""
+"La optimización no es de mucho uso sin el monitoreo y el acceso a números de "
+"rendimiento. Hibernate provee un rango completo de figuras sobre sus "
+"operaciones internas. Las estadísticas en Hibernate están disponibles por "
+"<literal>SessionFactory</literal>."
-#: index.docbook:1155
+#. Tag: title
+#: performance.xml:1155
+#, no-c-format
msgid "Monitoring a SessionFactory"
-msgstr "en tiempo de configuración, establece <literal>hibernate.generate_statistics</literal> a <literal>false</literal>"
+msgstr "Monitoreando una SessionFactory"
-#: index.docbook:1157
-msgid "You can access <literal>SessionFactory</literal> metrics in two ways. Your first option is to call <literal>sessionFactory.getStatistics()</literal> and read or display the <literal>Statistics</literal> yourself."
-msgstr "en tiempo de ejecución: <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> o <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal>"
+#. Tag: para
+#: performance.xml:1157
+#, no-c-format
+msgid ""
+"You can access <literal>SessionFactory</literal> metrics in two ways. Your "
+"first option is to call <literal>sessionFactory.getStatistics()</literal> "
+"and read or display the <literal>Statistics</literal> yourself."
+msgstr ""
+"Puedes acceder a las métricas de <literal>SessionFactory</literal> de dos "
+"formas. Tu primera opción es llamar a <literal>sessionFactory.getStatistics()"
+"</literal> y leer o mostrar por pantalla la <literal>Statistics</literal> "
+"por ti mismo."
-#: index.docbook:1163
-msgid "Hibernate can also use JMX to publish metrics if you enable the <literal>StatisticsService</literal> MBean. You may enable a single MBean for all your <literal>SessionFactory</literal> or one per factory. See the following code for minimalistic configuration examples:"
-msgstr "Las estadísticas pueden ser reajustadas programáticamente usando el método <literal>clear()</literal>. Puede enviarse un resumen a un logger (nivel info) usando el método <literal>logSummary()</literal>."
+#. Tag: para
+#: performance.xml:1163
+#, no-c-format
+msgid ""
+"Hibernate can also use JMX to publish metrics if you enable the "
+"<literal>StatisticsService</literal> MBean. You may enable a single MBean "
+"for all your <literal>SessionFactory</literal> or one per factory. See the "
+"following code for minimalistic configuration examples:"
+msgstr ""
+"Hibernate puede también usar JMX para publicar las métricas si habilitas el "
+"MBean <literal>StatisticsService</literal>. Puede habilitar un solo MBean "
+"para todas tus <literal>SessionFactory</literal> o una por fábrica. Mira el "
+"siguiente código para ejemplos de configuración minimalistas:"
-#: index.docbook:1170
+#. Tag: programlisting
+#: performance.xml:1170
+#, no-c-format
msgid ""
- "<![CDATA[// MBean service registration for a specific SessionFactory\n"
- "Hashtable tb = new Hashtable();\n"
- "tb.put(\"type\", \"statistics\");\n"
- "tb.put(\"sessionFactory\", \"myFinancialApp\");\n"
- "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
- "\n"
- "StatisticsService stats = new StatisticsService(); // MBean implementation\n"
- "stats.setSessionFactory(sessionFactory); // Bind the stats to a SessionFactory\n"
- "server.registerMBean(stats, on); // Register the Mbean on the server]]>"
-msgstr "Métricas"
+"<![CDATA[// MBean service registration for a specific SessionFactory\n"
+"Hashtable tb = new Hashtable();\n"
+"tb.put(\"type\", \"statistics\");\n"
+"tb.put(\"sessionFactory\", \"myFinancialApp\");\n"
+"ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
+"\n"
+"StatisticsService stats = new StatisticsService(); // MBean implementation\n"
+"stats.setSessionFactory(sessionFactory); // Bind the stats to a "
+"SessionFactory\n"
+"server.registerMBean(stats, on); // Register the Mbean on the server]]>"
+msgstr ""
-#: index.docbook:1173
+#. Tag: programlisting
+#: performance.xml:1173
+#, no-c-format
msgid ""
- "<![CDATA[// MBean service registration for all SessionFactory's\n"
- "Hashtable tb = new Hashtable();\n"
- "tb.put(\"type\", \"statistics\");\n"
- "tb.put(\"sessionFactory\", \"all\");\n"
- "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
- "\n"
- "StatisticsService stats = new StatisticsService(); // MBean implementation\n"
- "server.registerMBean(stats, on); // Register the MBean on the server]]>"
-msgstr "Hibernate provee un número de métricas, desde información muy básica a la especializada sólo relevante en ciertos escenarios. Todos los contadores disponibles se describen en la API de la interface <literal>Statistics</literal>, en tres categorías:"
+"<![CDATA[// MBean service registration for all SessionFactory's\n"
+"Hashtable tb = new Hashtable();\n"
+"tb.put(\"type\", \"statistics\");\n"
+"tb.put(\"sessionFactory\", \"all\");\n"
+"ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
+"\n"
+"StatisticsService stats = new StatisticsService(); // MBean implementation\n"
+"server.registerMBean(stats, on); // Register the MBean on the server]]>"
+msgstr ""
-#: index.docbook:1175
-msgid "TODO: This doesn't make sense: In the first case, we retrieve and use the MBean directly. In the second one, we must give the JNDI name in which the session factory is held before using it. Use <literal>hibernateStatsBean.setSessionFactoryJNDIName(\"my/JNDI/Name\")</literal>"
-msgstr "Métricas relacionadas al uso general de <literal>Session</literal> usage, tales como número de sesiones abiertas, conexiones JDBC recuperadas, etc,"
+#. Tag: para
+#: performance.xml:1175
+#, no-c-format
+msgid ""
+"TODO: This doesn't make sense: In the first case, we retrieve and use the "
+"MBean directly. In the second one, we must give the JNDI name in which the "
+"session factory is held before using it. Use <literal>hibernateStatsBean."
+"setSessionFactoryJNDIName(\"my/JNDI/Name\")</literal>"
+msgstr ""
+"POR HACER: Esto no tiene sentido: En el primer caso, recuperamos y usamos el "
+"MBean directamente. En el segundo, debemos proporcionar el nombre JNDI en el "
+"que se guarda la fábrica de sesiones antes de usarlo. Usa "
+"<literal>hibernateStatsBean.setSessionFactoryJNDIName(\"my/JNDI/Name\")</"
+"literal>"
-#: index.docbook:1180
-msgid "You can (de)activate the monitoring for a <literal>SessionFactory</literal>"
-msgstr "Métricas relacionadas a las entidades, colecciones, consultas, y cachés como un todo. (también conocidas como métricas globales)."
+#. Tag: para
+#: performance.xml:1180
+#, no-c-format
+msgid ""
+"You can (de)activate the monitoring for a <literal>SessionFactory</literal>"
+msgstr ""
+"Puedes (des)activar el monitoreo de una <literal>SessionFactory</literal>"
-#: index.docbook:1185
-msgid "at configuration time, set <literal>hibernate.generate_statistics</literal> to <literal>false</literal>"
-msgstr "Métricas detalladas relacionadas a una entidad, colección, consulta o región de caché en particular."
+#. Tag: para
+#: performance.xml:1185
+#, no-c-format
+msgid ""
+"at configuration time, set <literal>hibernate.generate_statistics</literal> "
+"to <literal>false</literal>"
+msgstr ""
+"en tiempo de configuración, establece <literal>hibernate."
+"generate_statistics</literal> a <literal>false</literal>"
-#: index.docbook:1192
-msgid "at runtime: <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> or <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal>"
-msgstr "Por ejemplo, puedes comprobar el acceso, pérdida, y radio de colocación de entidades, colecciones y consultas en el caché, y el tiempo promedio que necesita una consulta. Ten en cuenta que el número de milisegundos está sujeto a aproximación en Java. Hibernate está pegado a la precisión de la JVM, en algunas plataformas esto podría incuso ser tener sólo una exactitud de 10 segundos."
+#. Tag: para
+#: performance.xml:1192
+#, no-c-format
+msgid ""
+"at runtime: <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> "
+"or <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal>"
+msgstr ""
+"en tiempo de ejecución: <literal>sf.getStatistics().setStatisticsEnabled"
+"(true)</literal> o <literal>hibernateStatsBean.setStatisticsEnabled(true)</"
+"literal>"
-#: index.docbook:1199
-msgid "Statistics can be reset programatically using the <literal>clear()</literal> method. A summary can be sent to a logger (info level) using the <literal>logSummary()</literal> method."
-msgstr "Se usan getters simples para acceder a las métricas globales (es decir, no pegadas a una entidad, colección, región de caché, etc, en particular). Puedes acceder a las métricas de una entidad, colección, región de caché en particular a través de su nombre, y a través de su representación HQL o SQL para las consultas. Por favor refiérete al Javadoc de la API de <literal>Statistics</literal>, <literal>EntityStatistics</literal>, <literal>CollectionStatistics</literal>, <literal>SecondLevelCacheStatistics</literal>, y <literal>QueryStatistics</literal> para más información. El siguiente código muestra un ejemplo sencillo:"
+#. Tag: para
+#: performance.xml:1199
+#, no-c-format
+msgid ""
+"Statistics can be reset programatically using the <literal>clear()</literal> "
+"method. A summary can be sent to a logger (info level) using the "
+"<literal>logSummary()</literal> method."
+msgstr ""
+"Las estadísticas pueden ser reajustadas programáticamente usando el método "
+"<literal>clear()</literal>. Puede enviarse un resumen a un logger (nivel "
+"info) usando el método <literal>logSummary()</literal>."
-#: index.docbook:1208
+#. Tag: title
+#: performance.xml:1208
+#, no-c-format
msgid "Metrics"
+msgstr "Métricas"
+
+#. Tag: para
+#: performance.xml:1210
+#, no-c-format
+msgid ""
+"Hibernate provides a number of metrics, from very basic to the specialized "
+"information only relevant in certain scenarios. All available counters are "
+"described in the <literal>Statistics</literal> interface API, in three "
+"categories:"
msgstr ""
- "<![CDATA[Statistics stats = HibernateUtil.sessionFactory.getStatistics();\n"
- "\n"
- "double queryCacheHitCount = stats.getQueryCacheHitCount();\n"
- "double queryCacheMissCount = stats.getQueryCacheMissCount();\n"
- "double queryCacheHitRatio =\n"
- " queryCacheHitCount / (queryCacheHitCount + queryCacheMissCount);\n"
- "\n"
- "log.info(\"Query Hit ratio:\" + queryCacheHitRatio);\n"
- "\n"
- "EntityStatistics entityStats =\n"
- " stats.getEntityStatistics( Cat.class.getName() );\n"
- "long changes =\n"
- " entityStats.getInsertCount()\n"
- " + entityStats.getUpdateCount()\n"
- " + entityStats.getDeleteCount();\n"
- "log.info(Cat.class.getName() + \" changed \" + changes + \"times\" );]]>"
+"Hibernate provee un número de métricas, desde información muy básica a la "
+"especializada sólo relevante en ciertos escenarios. Todos los contadores "
+"disponibles se describen en la API de la interface <literal>Statistics</"
+"literal>, en tres categorías:"
-#: index.docbook:1210
-msgid "Hibernate provides a number of metrics, from very basic to the specialized information only relevant in certain scenarios. All available counters are described in the <literal>Statistics</literal> interface API, in three categories:"
-msgstr "Para trabajar sobre todas las entidades, colecciones, consultas y regiones de cachés, puedes recuperar la lista de nombres de entidades, colecciones, consultas y regiones de cachés con los siguientes métodos: <literal>getQueries()</literal>, <literal>getEntityNames()</literal>, <literal>getCollectionRoleNames()</literal>, y <literal>getSecondLevelCacheRegionNames()</literal>."
-
-#: index.docbook:1217
-msgid "Metrics related to the general <literal>Session</literal> usage, such as number of open sessions, retrieved JDBC connections, etc."
+#. Tag: para
+#: performance.xml:1217
+#, no-c-format
+msgid ""
+"Metrics related to the general <literal>Session</literal> usage, such as "
+"number of open sessions, retrieved JDBC connections, etc."
msgstr ""
+"Métricas relacionadas al uso general de <literal>Session</literal> usage, "
+"tales como número de sesiones abiertas, conexiones JDBC recuperadas, etc,"
-#: index.docbook:1223
-msgid "Metrics related to he entities, collections, queries, and caches as a whole (aka global metrics),"
+#. Tag: para
+#: performance.xml:1223
+#, no-c-format
+msgid ""
+"Metrics related to he entities, collections, queries, and caches as a whole "
+"(aka global metrics),"
msgstr ""
+"Métricas relacionadas a las entidades, colecciones, consultas, y cachés como "
+"un todo. (también conocidas como métricas globales)."
-#: index.docbook:1229
-msgid "Detailed metrics related to a particular entity, collection, query or cache region."
+#. Tag: para
+#: performance.xml:1229
+#, no-c-format
+msgid ""
+"Detailed metrics related to a particular entity, collection, query or cache "
+"region."
msgstr ""
+"Métricas detalladas relacionadas a una entidad, colección, consulta o región "
+"de caché en particular."
-#: index.docbook:1236
-msgid "For exampl,e you can check the cache hit, miss, and put ratio of entities, collections and queries, and the average time a query needs. Beware that the number of milliseconds is subject to approximation in Java. Hibernate is tied to the JVM precision, on some platforms this might even only be accurate to 10 seconds."
+#. Tag: para
+#: performance.xml:1236
+#, no-c-format
+msgid ""
+"For exampl,e you can check the cache hit, miss, and put ratio of entities, "
+"collections and queries, and the average time a query needs. Beware that the "
+"number of milliseconds is subject to approximation in Java. Hibernate is "
+"tied to the JVM precision, on some platforms this might even only be "
+"accurate to 10 seconds."
msgstr ""
+"Por ejemplo, puedes comprobar el acceso, pérdida, y radio de colocación de "
+"entidades, colecciones y consultas en el caché, y el tiempo promedio que "
+"necesita una consulta. Ten en cuenta que el número de milisegundos está "
+"sujeto a aproximación en Java. Hibernate está pegado a la precisión de la "
+"JVM, en algunas plataformas esto podría incuso ser tener sólo una exactitud "
+"de 10 segundos."
-#: index.docbook:1243
-msgid "Simple getters are used to access the global metrics (i.e. not tied to a particular entity, collection, cache region, etc.). You can access the metrics of a particular entity, collection or cache region through its name, and through its HQL or SQL representation for queries. Please refer to the <literal>Statistics</literal>, <literal>EntityStatistics</literal>, <literal>CollectionStatistics</literal>, <literal>SecondLevelCacheStatistics</literal>, and <literal>QueryStatistics</literal> API Javadoc for more information. The following code shows a simple example:"
+#. Tag: para
+#: performance.xml:1243
+#, no-c-format
+msgid ""
+"Simple getters are used to access the global metrics (i.e. not tied to a "
+"particular entity, collection, cache region, etc.). You can access the "
+"metrics of a particular entity, collection or cache region through its name, "
+"and through its HQL or SQL representation for queries. Please refer to the "
+"<literal>Statistics</literal>, <literal>EntityStatistics</literal>, "
+"<literal>CollectionStatistics</literal>, "
+"<literal>SecondLevelCacheStatistics</literal>, and <literal>QueryStatistics</"
+"literal> API Javadoc for more information. The following code shows a simple "
+"example:"
msgstr ""
+"Se usan getters simples para acceder a las métricas globales (es decir, no "
+"pegadas a una entidad, colección, región de caché, etc, en particular). "
+"Puedes acceder a las métricas de una entidad, colección, región de caché en "
+"particular a través de su nombre, y a través de su representación HQL o SQL "
+"para las consultas. Por favor refiérete al Javadoc de la API de "
+"<literal>Statistics</literal>, <literal>EntityStatistics</literal>, "
+"<literal>CollectionStatistics</literal>, "
+"<literal>SecondLevelCacheStatistics</literal>, y <literal>QueryStatistics</"
+"literal> para más información. El siguiente código muestra un ejemplo "
+"sencillo:"
-#: index.docbook:1253
+#. Tag: programlisting
+#: performance.xml:1253
+#, no-c-format
msgid ""
- "<![CDATA[Statistics stats = HibernateUtil.sessionFactory.getStatistics();\n"
- "\n"
- "double queryCacheHitCount = stats.getQueryCacheHitCount();\n"
- "double queryCacheMissCount = stats.getQueryCacheMissCount();\n"
- "double queryCacheHitRatio =\n"
- " queryCacheHitCount / (queryCacheHitCount + queryCacheMissCount);\n"
- "\n"
- "log.info(\"Query Hit ratio:\" + queryCacheHitRatio);\n"
- "\n"
- "EntityStatistics entityStats =\n"
- " stats.getEntityStatistics( Cat.class.getName() );\n"
- "long changes =\n"
- " entityStats.getInsertCount()\n"
- " + entityStats.getUpdateCount()\n"
- " + entityStats.getDeleteCount();\n"
- "log.info(Cat.class.getName() + \" changed \" + changes + \"times\" );]]>"
+"<![CDATA[Statistics stats = HibernateUtil.sessionFactory.getStatistics();\n"
+"\n"
+"double queryCacheHitCount = stats.getQueryCacheHitCount();\n"
+"double queryCacheMissCount = stats.getQueryCacheMissCount();\n"
+"double queryCacheHitRatio =\n"
+" queryCacheHitCount / (queryCacheHitCount + queryCacheMissCount);\n"
+"\n"
+"log.info(\"Query Hit ratio:\" + queryCacheHitRatio);\n"
+"\n"
+"EntityStatistics entityStats =\n"
+" stats.getEntityStatistics( Cat.class.getName() );\n"
+"long changes =\n"
+" entityStats.getInsertCount()\n"
+" + entityStats.getUpdateCount()\n"
+" + entityStats.getDeleteCount();\n"
+"log.info(Cat.class.getName() + \" changed \" + changes + \"times\" );]]>"
msgstr ""
-#: index.docbook:1255
-msgid "To work on all entities, collections, queries and region caches, you can retrieve the list of names of entities, collections, queries and region caches with the following methods: <literal>getQueries()</literal>, <literal>getEntityNames()</literal>, <literal>getCollectionRoleNames()</literal>, and <literal>getSecondLevelCacheRegionNames()</literal>."
+#. Tag: para
+#: performance.xml:1255
+#, no-c-format
+msgid ""
+"To work on all entities, collections, queries and region caches, you can "
+"retrieve the list of names of entities, collections, queries and region "
+"caches with the following methods: <literal>getQueries()</literal>, "
+"<literal>getEntityNames()</literal>, <literal>getCollectionRoleNames()</"
+"literal>, and <literal>getSecondLevelCacheRegionNames()</literal>."
msgstr ""
+"Para trabajar sobre todas las entidades, colecciones, consultas y regiones "
+"de cachés, puedes recuperar la lista de nombres de entidades, colecciones, "
+"consultas y regiones de cachés con los siguientes métodos: "
+"<literal>getQueries()</literal>, <literal>getEntityNames()</literal>, "
+"<literal>getCollectionRoleNames()</literal>, y "
+"<literal>getSecondLevelCacheRegionNames()</literal>."
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#~ msgid "yes"
+#~ msgstr "sí"
Modified: core/trunk/documentation/manual/translations/es-ES/content/persistent_classes.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/persistent_classes.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/persistent_classes.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,625 +1,873 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: persistent_classes.xml:5
+#, no-c-format
msgid "Persistent Classes"
msgstr "Clases Persistentes"
-#: index.docbook:7
-msgid "Persistent classes are classes in an application that implement the entities of the business problem (e.g. Customer and Order in an E-commerce application). Not all instances of a persistent class are considered to be in the persistent state - an instance may instead be transient or detached."
-msgstr "Clases presistentes son clases en una aplicación que implementan las entidades del problema de negocio (por ejemplo, Customer y Order en una aplicación de comercio electrónico). No todas las instancias de una clase persistente se considera que estén en el estado persistente, una instancia puede en cambio ser transitoria o estar separada."
+#. Tag: para
+#: persistent_classes.xml:7
+#, no-c-format
+msgid ""
+"Persistent classes are classes in an application that implement the entities "
+"of the business problem (e.g. Customer and Order in an E-commerce "
+"application). Not all instances of a persistent class are considered to be "
+"in the persistent state - an instance may instead be transient or detached."
+msgstr ""
+"Clases presistentes son clases en una aplicación que implementan las "
+"entidades del problema de negocio (por ejemplo, Customer y Order en una "
+"aplicación de comercio electrónico). No todas las instancias de una clase "
+"persistente se considera que estén en el estado persistente, una instancia "
+"puede en cambio ser transitoria o estar separada."
-#: index.docbook:14
-msgid "Hibernate works best if these classes follow some simple rules, also known as the Plain Old Java Object (POJO) programming model. However, none of these rules are hard requirements. Indeed, Hibernate3 assumes very little about the nature of your persistent objects. You may express a domain model in other ways: using trees of <literal>Map</literal> instances, for example."
-msgstr "Hibernate funciona mejor si las clases siguen algunas simples reglas, también conocidas como el modelo de programación de Viejas Clases Java Planas (Plain Old Java Object o POJO). Sin embargo, ninguna de estas reglas son requerimientos rígidos. En cambio, Hibernate3 asume muy poco acerca de la naturaleza de tus objetos persistentes. Puedes expresar un modelo de dominio en otras formas: usando árboles de instancias de <literal>Map</literal>, por ejemplo."
+#. Tag: para
+#: persistent_classes.xml:14
+#, no-c-format
+msgid ""
+"Hibernate works best if these classes follow some simple rules, also known "
+"as the Plain Old Java Object (POJO) programming model. However, none of "
+"these rules are hard requirements. Indeed, Hibernate3 assumes very little "
+"about the nature of your persistent objects. You may express a domain model "
+"in other ways: using trees of <literal>Map</literal> instances, for example."
+msgstr ""
+"Hibernate funciona mejor si las clases siguen algunas simples reglas, "
+"también conocidas como el modelo de programación de Viejas Clases Java "
+"Planas (Plain Old Java Object o POJO). Sin embargo, ninguna de estas reglas "
+"son requerimientos rígidos. En cambio, Hibernate3 asume muy poco acerca de "
+"la naturaleza de tus objetos persistentes. Puedes expresar un modelo de "
+"dominio en otras formas: usando árboles de instancias de <literal>Map</"
+"literal>, por ejemplo."
-#: index.docbook:23
+#. Tag: title
+#: persistent_classes.xml:23
+#, no-c-format
msgid "A simple POJO example"
msgstr "Un ejemplo simple de POJO"
-#: index.docbook:25
+#. Tag: para
+#: persistent_classes.xml:25
+#, no-c-format
msgid "Most Java applications require a persistent class representing felines."
-msgstr "La mayoría de aplicaciones Java requieren una clase representando felinos."
+msgstr ""
+"La mayoría de aplicaciones Java requieren una clase representando felinos."
-#: index.docbook:29
+#. Tag: programlisting
+#: persistent_classes.xml:29
+#, no-c-format
msgid ""
- "<![CDATA[package eg;\n"
- "import java.util.Set;\n"
- "import java.util.Date;\n"
- "\n"
- "public class Cat {\n"
- " private Long id; // identifier\n"
- "\n"
- " private Date birthdate;\n"
- " private Color color;\n"
- " private char sex;\n"
- " private float weight;\n"
- " private int litterId;\n"
- "\n"
- " private Cat mother;\n"
- " private Set kittens = new HashSet();\n"
- "\n"
- " private void setId(Long id) {\n"
- " this.id=id;\n"
- " }\n"
- " public Long getId() {\n"
- " return id;\n"
- " }\n"
- "\n"
- " void setBirthdate(Date date) {\n"
- " birthdate = date;\n"
- " }\n"
- " public Date getBirthdate() {\n"
- " return birthdate;\n"
- " }\n"
- "\n"
- " void setWeight(float weight) {\n"
- " this.weight = weight;\n"
- " }\n"
- " public float getWeight() {\n"
- " return weight;\n"
- " }\n"
- "\n"
- " public Color getColor() {\n"
- " return color;\n"
- " }\n"
- " void setColor(Color color) {\n"
- " this.color = color;\n"
- " }\n"
- "\n"
- " void setSex(char sex) {\n"
- " this.sex=sex;\n"
- " }\n"
- " public char getSex() {\n"
- " return sex;\n"
- " }\n"
- "\n"
- " void setLitterId(int id) {\n"
- " this.litterId = id;\n"
- " }\n"
- " public int getLitterId() {\n"
- " return litterId;\n"
- " }\n"
- "\n"
- " void setMother(Cat mother) {\n"
- " this.mother = mother;\n"
- " }\n"
- " public Cat getMother() {\n"
- " return mother;\n"
- " }\n"
- " void setKittens(Set kittens) {\n"
- " this.kittens = kittens;\n"
- " }\n"
- " public Set getKittens() {\n"
- " return kittens;\n"
- " }\n"
- " \n"
- " // addKitten not needed by Hibernate\n"
- " public void addKitten(Cat kitten) {\n"
- " kitten.setMother(this);\n"
- " kitten.setLitterId( kittens.size() ); \n"
- " kittens.add(kitten);\n"
- " }\n"
- "}]]>"
+"<![CDATA[package eg;\n"
+"import java.util.Set;\n"
+"import java.util.Date;\n"
+"\n"
+"public class Cat {\n"
+" private Long id; // identifier\n"
+"\n"
+" private Date birthdate;\n"
+" private Color color;\n"
+" private char sex;\n"
+" private float weight;\n"
+" private int litterId;\n"
+"\n"
+" private Cat mother;\n"
+" private Set kittens = new HashSet();\n"
+"\n"
+" private void setId(Long id) {\n"
+" this.id=id;\n"
+" }\n"
+" public Long getId() {\n"
+" return id;\n"
+" }\n"
+"\n"
+" void setBirthdate(Date date) {\n"
+" birthdate = date;\n"
+" }\n"
+" public Date getBirthdate() {\n"
+" return birthdate;\n"
+" }\n"
+"\n"
+" void setWeight(float weight) {\n"
+" this.weight = weight;\n"
+" }\n"
+" public float getWeight() {\n"
+" return weight;\n"
+" }\n"
+"\n"
+" public Color getColor() {\n"
+" return color;\n"
+" }\n"
+" void setColor(Color color) {\n"
+" this.color = color;\n"
+" }\n"
+"\n"
+" void setSex(char sex) {\n"
+" this.sex=sex;\n"
+" }\n"
+" public char getSex() {\n"
+" return sex;\n"
+" }\n"
+"\n"
+" void setLitterId(int id) {\n"
+" this.litterId = id;\n"
+" }\n"
+" public int getLitterId() {\n"
+" return litterId;\n"
+" }\n"
+"\n"
+" void setMother(Cat mother) {\n"
+" this.mother = mother;\n"
+" }\n"
+" public Cat getMother() {\n"
+" return mother;\n"
+" }\n"
+" void setKittens(Set kittens) {\n"
+" this.kittens = kittens;\n"
+" }\n"
+" public Set getKittens() {\n"
+" return kittens;\n"
+" }\n"
+" \n"
+" // addKitten not needed by Hibernate\n"
+" public void addKitten(Cat kitten) {\n"
+" kitten.setMother(this);\n"
+" kitten.setLitterId( kittens.size() ); \n"
+" kittens.add(kitten);\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[package eg;\n"
- "import java.util.Set;\n"
- "import java.util.Date;\n"
- "\n"
- "public class Cat {\n"
- " private Long id; // identifier\n"
- "\n"
- " private Date birthdate;\n"
- " private Color color;\n"
- " private char sex;\n"
- " private float weight;\n"
- " private int litterId;\n"
- "\n"
- " private Cat mother;\n"
- " private Set kittens = new HashSet();\n"
- "\n"
- " private void setId(Long id) {\n"
- " this.id=id;\n"
- " }\n"
- " public Long getId() {\n"
- " return id;\n"
- " }\n"
- "\n"
- " void setBirthdate(Date date) {\n"
- " birthdate = date;\n"
- " }\n"
- " public Date getBirthdate() {\n"
- " return birthdate;\n"
- " }\n"
- "\n"
- " void setWeight(float weight) {\n"
- " this.weight = weight;\n"
- " }\n"
- " public float getWeight() {\n"
- " return weight;\n"
- " }\n"
- "\n"
- " public Color getColor() {\n"
- " return color;\n"
- " }\n"
- " void setColor(Color color) {\n"
- " this.color = color;\n"
- " }\n"
- "\n"
- " void setSex(char sex) {\n"
- " this.sex=sex;\n"
- " }\n"
- " public char getSex() {\n"
- " return sex;\n"
- " }\n"
- "\n"
- " void setLitterId(int id) {\n"
- " this.litterId = id;\n"
- " }\n"
- " public int getLitterId() {\n"
- " return litterId;\n"
- " }\n"
- "\n"
- " void setMother(Cat mother) {\n"
- " this.mother = mother;\n"
- " }\n"
- " public Cat getMother() {\n"
- " return mother;\n"
- " }\n"
- " void setKittens(Set kittens) {\n"
- " this.kittens = kittens;\n"
- " }\n"
- " public Set getKittens() {\n"
- " return kittens;\n"
- " }\n"
- " \n"
- " // addKitten not needed by Hibernate\n"
- " public void addKitten(Cat kitten) {\n"
- " kitten.setMother(this);\n"
- " kitten.setLitterId( kittens.size() ); \n"
- " kittens.add(kitten);\n"
- " }\n"
- "}]]>"
-#: index.docbook:31
+#. Tag: para
+#: persistent_classes.xml:31
+#, no-c-format
msgid "There are four main rules to follow here:"
-msgstr "Aquí hay cuatro reglas principales a seguir:"
+msgstr "Aquí hay cuatro reglas principales a seguir:"
-#: index.docbook:37
+#. Tag: title
+#: persistent_classes.xml:37
+#, no-c-format
msgid "Implement a no-argument constructor"
msgstr "Implementa un constructor sin argumentos"
-#: index.docbook:39
-msgid "<literal>Cat</literal> has a no-argument constructor. All persistent classes must have a default constructor (which may be non-public) so that Hibernate can instantiate them using <literal>Constructor.newInstance()</literal>. We strongly recommend having a default constructor with at least <emphasis>package</emphasis> visibility for runtime proxy generation in Hibernate."
-msgstr "<literal>Cat</literal> tiene un contructor sin argumentos. Todas las clases persistentes deben tener un constructor por defecto (que puede no ser público) de modo que Hibernate pueda instanciarlas usando <literal>Constructor.newInstance()</literal>. Recomendamos fuertemente tener un constructor por defecto con al menos visibilidad de <emphasis>package</emphasis> para la generación de proxies en tiempo de ejecución en Hibernate."
+#. Tag: para
+#: persistent_classes.xml:39
+#, no-c-format
+msgid ""
+"<literal>Cat</literal> has a no-argument constructor. All persistent classes "
+"must have a default constructor (which may be non-public) so that Hibernate "
+"can instantiate them using <literal>Constructor.newInstance()</literal>. We "
+"strongly recommend having a default constructor with at least "
+"<emphasis>package</emphasis> visibility for runtime proxy generation in "
+"Hibernate."
+msgstr ""
+"<literal>Cat</literal> tiene un contructor sin argumentos. Todas las clases "
+"persistentes deben tener un constructor por defecto (que puede no ser "
+"público) de modo que Hibernate pueda instanciarlas usando "
+"<literal>Constructor.newInstance()</literal>. Recomendamos fuertemente tener "
+"un constructor por defecto con al menos visibilidad de <emphasis>package</"
+"emphasis> para la generación de proxies en tiempo de ejecución en Hibernate."
-#: index.docbook:49
+#. Tag: title
+#: persistent_classes.xml:49
+#, no-c-format
msgid "Provide an identifier property (optional)"
msgstr "Provee una propiedad identificadora (opcional)"
-#: index.docbook:51
-msgid "<literal>Cat</literal> has a property called <literal>id</literal>. This property maps to the primary key column of a database table. The property might have been called anything, and its type might have been any primitive type, any primitive \"wrapper\" type, <literal>java.lang.String</literal> or <literal>java.util.Date</literal>. (If your legacy database table has composite keys, you can even use a user-defined class with properties of these types - see the section on composite identifiers later.)"
-msgstr "<literal>Cat</literal> tiene una propiedad llamada <literal>id</literal>. Esta propiedad mapea a la columna clave primaria de la tabla de base de datos. La propiedad podría llamarse cualquierCosa, y su tipo podría haber sido cualquier tipo primitivo, cualquier tipo de \"envoltura\" primitivo, <literal>java.lang.String</literal> o <literal>java.util.Date</literal>. (Si tu tabla de base de datos heredada tiene claves compuestas, puedes incluso usar una clase definida por el usuario con propiedades de estos tipos, ver la sección sobre identificadores compuestos luego.)"
+#. Tag: para
+#: persistent_classes.xml:51
+#, no-c-format
+msgid ""
+"<literal>Cat</literal> has a property called <literal>id</literal>. This "
+"property maps to the primary key column of a database table. The property "
+"might have been called anything, and its type might have been any primitive "
+"type, any primitive \"wrapper\" type, <literal>java.lang.String</literal> or "
+"<literal>java.util.Date</literal>. (If your legacy database table has "
+"composite keys, you can even use a user-defined class with properties of "
+"these types - see the section on composite identifiers later.)"
+msgstr ""
+"<literal>Cat</literal> tiene una propiedad llamada <literal>id</literal>. "
+"Esta propiedad mapea a la columna clave primaria de la tabla de base de "
+"datos. La propiedad podría llamarse cualquierCosa, y su tipo podría haber "
+"sido cualquier tipo primitivo, cualquier tipo de \"envoltura\" primitivo, "
+"<literal>java.lang.String</literal> o <literal>java.util.Date</literal>. (Si "
+"tu tabla de base de datos heredada tiene claves compuestas, puedes incluso "
+"usar una clase definida por el usuario con propiedades de estos tipos, ver "
+"la sección sobre identificadores compuestos luego.)"
-#: index.docbook:60
-msgid "The identifier property is strictly optional. You can leave them off and let Hibernate keep track of object identifiers internally. We do not recommend this, however."
-msgstr "La propiedad identificadora es estrictamente opcional. Puedes olvidarla y dejar que Hibernate siga internamente la pista de los identificadores del objeto. Sin embargo, no recomendamos esto."
+#. Tag: para
+#: persistent_classes.xml:60
+#, no-c-format
+msgid ""
+"The identifier property is strictly optional. You can leave them off and let "
+"Hibernate keep track of object identifiers internally. We do not recommend "
+"this, however."
+msgstr ""
+"La propiedad identificadora es estrictamente opcional. Puedes olvidarla y "
+"dejar que Hibernate siga internamente la pista de los identificadores del "
+"objeto. Sin embargo, no recomendamos esto."
-#: index.docbook:65
-msgid "In fact, some functionality is available only to classes which declare an identifier property:"
-msgstr "De hecho, alguna funcionalidad está disponible sólo para clases que declaran una propiedad identificadora:"
+#. Tag: para
+#: persistent_classes.xml:65
+#, no-c-format
+msgid ""
+"In fact, some functionality is available only to classes which declare an "
+"identifier property:"
+msgstr ""
+"De hecho, alguna funcionalidad está disponible sólo para clases que declaran "
+"una propiedad identificadora:"
-#: index.docbook:72
-msgid "Transitive reattachment for detached objects (cascade update or cascade merge) - see"
-msgstr "Reasociación transitiva de objetos separados (actualizaciones o fusiones en cascada) - ver"
+#. Tag: para
+#: persistent_classes.xml:72
+#, fuzzy, no-c-format
+msgid ""
+"Transitive reattachment for detached objects (cascade update or cascade "
+"merge) - see"
+msgstr ""
+"Reasociación transitiva de objetos separados (actualizaciones o fusiones en "
+"cascada) - ver <xref linkend=\"objectstate-transitive\"/>"
-#: index.docbook:79
+#. Tag: literal
+#: persistent_classes.xml:79
+#, no-c-format
msgid "Session.saveOrUpdate()"
msgstr "Session.saveOrUpdate()"
-#: index.docbook:84
+#. Tag: literal
+#: persistent_classes.xml:84
+#, no-c-format
msgid "Session.merge()"
msgstr "Session.merge()"
-#: index.docbook:89
-msgid "We recommend you declare consistently-named identifier properties on persistent classes. We further recommend that you use a nullable (ie. non-primitive) type."
-msgstr "Recomendamos que declares propiedades identificadoras nombradas-consistentemente en clases persistentes. Mas aún, recomendamos que uses un tipo nulable (es decir, no primitivo)."
+#. Tag: para
+#: persistent_classes.xml:89
+#, no-c-format
+msgid ""
+"We recommend you declare consistently-named identifier properties on "
+"persistent classes. We further recommend that you use a nullable (ie. non-"
+"primitive) type."
+msgstr ""
+"Recomendamos que declares propiedades identificadoras nombradas-"
+"consistentemente en clases persistentes. Mas aún, recomendamos que uses un "
+"tipo nulable (es decir, no primitivo)."
-#: index.docbook:96
+#. Tag: title
+#: persistent_classes.xml:96
+#, no-c-format
msgid "Prefer non-final classes (optional)"
msgstr "Prefiere las clases no finales (opcional)"
-#: index.docbook:97
-msgid "A central feature of Hibernate, <emphasis>proxies</emphasis>, depends upon the persistent class being either non-final, or the implementation of an interface that declares all public methods."
-msgstr "Un aspecto central de Hibernate, <emphasis>proxies</emphasis>, depende de que las clases persistentes sean ya no finales, o sean ya la implementación de una interface que declare todos los métodos públicos."
+#. Tag: para
+#: persistent_classes.xml:97
+#, no-c-format
+msgid ""
+"A central feature of Hibernate, <emphasis>proxies</emphasis>, depends upon "
+"the persistent class being either non-final, or the implementation of an "
+"interface that declares all public methods."
+msgstr ""
+"Un aspecto central de Hibernate, <emphasis>proxies</emphasis>, depende de "
+"que las clases persistentes sean ya no finales, o sean ya la implementación "
+"de una interface que declare todos los métodos públicos."
-#: index.docbook:102
-msgid "You can persist <literal>final</literal> classes that do not implement an interface with Hibernate, but you won't be able to use proxies for lazy association fetching - which will limit your options for performance tuning."
-msgstr "Puedes persistir con Hibernate clases <literal>final</literal> que no implementen una interface, pero no serás capaz de usar proxies para recuperación perezosa de asociaciones, lo que limitará tus opciones para afinar el rendimiento."
+#. Tag: para
+#: persistent_classes.xml:102
+#, no-c-format
+msgid ""
+"You can persist <literal>final</literal> classes that do not implement an "
+"interface with Hibernate, but you won't be able to use proxies for lazy "
+"association fetching - which will limit your options for performance tuning."
+msgstr ""
+"Puedes persistir con Hibernate clases <literal>final</literal> que no "
+"implementen una interface, pero no serás capaz de usar proxies para "
+"recuperación perezosa de asociaciones, lo que limitará tus opciones para "
+"afinar el rendimiento."
-#: index.docbook:107
-msgid "You should also avoid declaring <literal>public final</literal> methods on the non-final classes. If you want to use a class with a <literal>public final</literal> method, you must explicitly disable proxying by setting <literal>lazy=\"false\"</literal>."
-msgstr "Debes también evitar declarar métodos <literal>public final</literal> en clases non-final. Si quieres usar una clase con un método <literal>public final</literal>, debes deshabilitar explícitamente el uso de proxies estableciendo <literal>lazy=\"false\"</literal>."
+#. Tag: para
+#: persistent_classes.xml:107
+#, no-c-format
+msgid ""
+"You should also avoid declaring <literal>public final</literal> methods on "
+"the non-final classes. If you want to use a class with a <literal>public "
+"final</literal> method, you must explicitly disable proxying by setting "
+"<literal>lazy=\"false\"</literal>."
+msgstr ""
+"Debes también evitar declarar métodos <literal>public final</literal> en "
+"clases non-final. Si quieres usar una clase con un método <literal>public "
+"final</literal>, debes deshabilitar explícitamente el uso de proxies "
+"estableciendo <literal>lazy=\"false\"</literal>."
-#: index.docbook:115
+#. Tag: title
+#: persistent_classes.xml:115
+#, no-c-format
msgid "Declare accessors and mutators for persistent fields (optional)"
-msgstr "Declara métodos de acceso y modificación para los campos persistentes (opcional)"
+msgstr ""
+"Declara métodos de acceso y modificación para los campos persistentes "
+"(opcional)"
-#: index.docbook:117
-msgid "<literal>Cat</literal> declares accessor methods for all its persistent fields. Many other ORM tools directly persist instance variables. We believe it is better to provide an indirection between the relational schema and internal data structures of the class. By default, Hibernate persists JavaBeans style properties, and recognizes method names of the form <literal>getFoo</literal>, <literal>isFoo</literal> and <literal>setFoo</literal>. You may switch to direct field access for particular properties, if needed."
-msgstr "<literal>Cat</literal> declara métodos de acceso para todos sus campos persistente. Muchas otras herramientas ORM persisten directamente variables de instancia. Creemos que es mejor proveer una indirección entre el esquema relacional y las estructuras internas de la clase. Por defecto, Hibernate persiste propiedades del estilo JavaBeans, y reconoce nombres de método de la forma <literal>getFoo</literal>, <literal>isFoo</literal> y <literal>setFoo</literal>. Puedes cambiar a acceso directo a campos para propiedades en particular, de ser necesario."
+#. Tag: para
+#: persistent_classes.xml:117
+#, no-c-format
+msgid ""
+"<literal>Cat</literal> declares accessor methods for all its persistent "
+"fields. Many other ORM tools directly persist instance variables. We believe "
+"it is better to provide an indirection between the relational schema and "
+"internal data structures of the class. By default, Hibernate persists "
+"JavaBeans style properties, and recognizes method names of the form "
+"<literal>getFoo</literal>, <literal>isFoo</literal> and <literal>setFoo</"
+"literal>. You may switch to direct field access for particular properties, "
+"if needed."
+msgstr ""
+"<literal>Cat</literal> declara métodos de acceso para todos sus campos "
+"persistente. Muchas otras herramientas ORM persisten directamente variables "
+"de instancia. Creemos que es mejor proveer una indirección entre el esquema "
+"relacional y las estructuras internas de la clase. Por defecto, Hibernate "
+"persiste propiedades del estilo JavaBeans, y reconoce nombres de método de "
+"la forma <literal>getFoo</literal>, <literal>isFoo</literal> y "
+"<literal>setFoo</literal>. Puedes cambiar a acceso directo a campos para "
+"propiedades en particular, de ser necesario."
-#: index.docbook:127
-msgid "Properties need <emphasis>not</emphasis> be declared public - Hibernate can persist a property with a default, <literal>protected</literal> or <literal>private</literal> get / set pair."
-msgstr "Las propiedades <emphasis>no</emphasis> necesitan ser declaradas públicas. Hibernate puede persistir una propiedad con un par get / set <literal>protected</literal> o <literal>private</literal>."
+#. Tag: para
+#: persistent_classes.xml:127
+#, no-c-format
+msgid ""
+"Properties need <emphasis>not</emphasis> be declared public - Hibernate can "
+"persist a property with a default, <literal>protected</literal> or "
+"<literal>private</literal> get / set pair."
+msgstr ""
+"Las propiedades <emphasis>no</emphasis> necesitan ser declaradas públicas. "
+"Hibernate puede persistir una propiedad con un par get / set "
+"<literal>protected</literal> o <literal>private</literal>."
-#: index.docbook:138
+#. Tag: title
+#: persistent_classes.xml:138
+#, no-c-format
msgid "Implementing inheritance"
msgstr "Implementando herencia"
-#: index.docbook:140
-msgid "A subclass must also observe the first and second rules. It inherits its identifier property from the superclass, <literal>Cat</literal>."
-msgstr "Una subclase puede a su vez observar la primera y segunda regla. Hereda su propiedad identificadora de la superclase, <literal>Cat</literal>."
+#. Tag: para
+#: persistent_classes.xml:140
+#, no-c-format
+msgid ""
+"A subclass must also observe the first and second rules. It inherits its "
+"identifier property from the superclass, <literal>Cat</literal>."
+msgstr ""
+"Una subclase puede a su vez observar la primera y segunda regla. Hereda su "
+"propiedad identificadora de la superclase, <literal>Cat</literal>."
-#: index.docbook:145
+#. Tag: programlisting
+#: persistent_classes.xml:145
+#, no-c-format
msgid ""
- "<![CDATA[package eg;\n"
- "\n"
- "public class DomesticCat extends Cat {\n"
- " private String name;\n"
- "\n"
- " public String getName() {\n"
- " return name;\n"
- " }\n"
- " protected void setName(String name) {\n"
- " this.name=name;\n"
- " }\n"
- "}]]>"
+"<![CDATA[package eg;\n"
+"\n"
+"public class DomesticCat extends Cat {\n"
+" private String name;\n"
+"\n"
+" public String getName() {\n"
+" return name;\n"
+" }\n"
+" protected void setName(String name) {\n"
+" this.name=name;\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[package eg;\n"
- "\n"
- "public class DomesticCat extends Cat {\n"
- " private String name;\n"
- "\n"
- " public String getName() {\n"
- " return name;\n"
- " }\n"
- " protected void setName(String name) {\n"
- " this.name=name;\n"
- " }\n"
- "}]]>"
-#: index.docbook:149
-msgid "Implementing <literal>equals()</literal> and <literal>hashCode()</literal>"
-msgstr "Implementando <literal>equals()</literal> y <literal>hashCode()</literal>"
+#. Tag: title
+#: persistent_classes.xml:149
+#, no-c-format
+msgid ""
+"Implementing <literal>equals()</literal> and <literal>hashCode()</literal>"
+msgstr ""
+"Implementando <literal>equals()</literal> y <literal>hashCode()</literal>"
-#: index.docbook:151
-msgid "You have to override the <literal>equals()</literal> and <literal>hashCode()</literal> methods if you"
-msgstr "Tienes que sobrescribir los métodos <literal>equals()</literal> y <literal>hashCode()</literal> si :"
+#. Tag: para
+#: persistent_classes.xml:151
+#, no-c-format
+msgid ""
+"You have to override the <literal>equals()</literal> and <literal>hashCode()"
+"</literal> methods if you"
+msgstr ""
+"Tienes que sobrescribir los métodos <literal>equals()</literal> y "
+"<literal>hashCode()</literal> si :"
-#: index.docbook:157
-msgid "intend to put instances of persistent classes in a <literal>Set</literal> (the recommended way to represent many-valued associations) <emphasis>and</emphasis>"
-msgstr "piensas poner instancias de clases persistentes en un <literal>Set</literal> (la forma recomendada de representar asociaciones multivaluadas) <emphasis>y</emphasis>"
+#. Tag: para
+#: persistent_classes.xml:157
+#, no-c-format
+msgid ""
+"intend to put instances of persistent classes in a <literal>Set</literal> "
+"(the recommended way to represent many-valued associations) <emphasis>and</"
+"emphasis>"
+msgstr ""
+"piensas poner instancias de clases persistentes en un <literal>Set</literal> "
+"(la forma recomendada de representar asociaciones multivaluadas) "
+"<emphasis>y</emphasis>"
-#: index.docbook:164
+#. Tag: para
+#: persistent_classes.xml:164
+#, no-c-format
msgid "intend to use reattachment of detached instances"
-msgstr "piensas usar reasociación de instancias separadas."
+msgstr "piensas usar reasociación de instancias separadas."
-#: index.docbook:170
-msgid "Hibernate guarantees equivalence of persistent identity (database row) and Java identity only inside a particular session scope. So as soon as we mix instances retrieved in different sessions, we must implement <literal>equals()</literal> and <literal>hashCode()</literal> if we wish to have meaningful semantics for <literal>Set</literal>s."
-msgstr "Hibernate garantiza la equivalencia de identidad persistente (fila de base de datos) y identidad Java sólo dentro del ámbito de una sesión en particular. De modo que en el momento que mezclamos instancias recuperadas en sesiones diferentes, debemos implementar <literal>equals()</literal> y <literal>hashCode()</literal> si deseamos tener una semántica significativa de <literal>Set</literal>s."
+#. Tag: para
+#: persistent_classes.xml:170
+#, no-c-format
+msgid ""
+"Hibernate guarantees equivalence of persistent identity (database row) and "
+"Java identity only inside a particular session scope. So as soon as we mix "
+"instances retrieved in different sessions, we must implement <literal>equals"
+"()</literal> and <literal>hashCode()</literal> if we wish to have meaningful "
+"semantics for <literal>Set</literal>s."
+msgstr ""
+"Hibernate garantiza la equivalencia de identidad persistente (fila de base "
+"de datos) y identidad Java sólo dentro del ámbito de una sesión en "
+"particular. De modo que en el momento que mezclamos instancias recuperadas "
+"en sesiones diferentes, debemos implementar <literal>equals()</literal> y "
+"<literal>hashCode()</literal> si deseamos tener una semántica significativa "
+"de <literal>Set</literal>s."
-#: index.docbook:178
-msgid "The most obvious way is to implement <literal>equals()</literal>/<literal>hashCode()</literal> by comparing the identifier value of both objects. If the value is the same, both must be the same database row, they are therefore equal (if both are added to a <literal>Set</literal>, we will only have one element in the <literal>Set</literal>). Unfortunately, we can't use that approach with generated identifiers! Hibernate will only assign identifier values to objects that are persistent, a newly created instance will not have any identifier value! Furthermore, if an instance is unsaved and currently in a <literal>Set</literal>, saving it will assign an identifier value to the object. If <literal>equals()</literal> and <literal>hashCode()</literal> are based on the identifier value, the hash code would change, breaking the contract of the <literal>Set</literal>. See the Hibernate website for a full discussion of this problem. Note that this is not a Hibernate issue, but !
normal Java semantics of object identity and equality."
-msgstr "La forma más obvia es implementar <literal>equals()</literal>/<literal>hashCode()</literal> comparando el valor identificador de ambos objetos. Si el valor es el mismo, ambos deben ser la misma fila de base de datos, por lo tanto son iguales (si ambos son agregados a un <literal>Set</literal>, sólo tendremos un elemento en el <literal>Set</literal>). Desafortunadamente, no podemos usar este enfoque con identificadores generados! Hibernate sólo asignará valores identificadores a objetos que son persistentes, una instancia recién creada no tendrá ningún valor identificador! Además, si una instancia no está salvada y está actualmente en un <literal>Set</literal>, salvarla asignará un valor identificador al objeto. Si <literal>equals()</literal> and <literal>hashCode()</literal> están basados en el valor identificador, el código hash podría cambiar, rompiendo el contrato de!
<literal>Set</literal>. Ver el sitio web de Hibernate para una discusión completa de este problema. Observa que esto no es una incidencia de Hibernate, sino la semántica normal de Java de identidad de objeto e igualdad."
+#. Tag: para
+#: persistent_classes.xml:178
+#, no-c-format
+msgid ""
+"The most obvious way is to implement <literal>equals()</literal>/"
+"<literal>hashCode()</literal> by comparing the identifier value of both "
+"objects. If the value is the same, both must be the same database row, they "
+"are therefore equal (if both are added to a <literal>Set</literal>, we will "
+"only have one element in the <literal>Set</literal>). Unfortunately, we "
+"can't use that approach with generated identifiers! Hibernate will only "
+"assign identifier values to objects that are persistent, a newly created "
+"instance will not have any identifier value! Furthermore, if an instance is "
+"unsaved and currently in a <literal>Set</literal>, saving it will assign an "
+"identifier value to the object. If <literal>equals()</literal> and "
+"<literal>hashCode()</literal> are based on the identifier value, the hash "
+"code would change, breaking the contract of the <literal>Set</literal>. See "
+"the Hibernate website for a full discussion of this problem. Note that this "
+"is not a Hibernate issue, but normal Java semantics of object identity and "
+"equality."
+msgstr ""
+"La forma más obvia es implementar <literal>equals()</literal>/"
+"<literal>hashCode()</literal> comparando el valor identificador de ambos "
+"objetos. Si el valor es el mismo, ambos deben ser la misma fila de base de "
+"datos, por lo tanto son iguales (si ambos son agregados a un <literal>Set</"
+"literal>, sólo tendremos un elemento en el <literal>Set</literal>). "
+"Desafortunadamente, no podemos usar este enfoque con identificadores "
+"generados! Hibernate sólo asignará valores identificadores a objetos que son "
+"persistentes, una instancia recién creada no tendrá ningún valor "
+"identificador! Además, si una instancia no está salvada y está actualmente "
+"en un <literal>Set</literal>, salvarla asignará un valor identificador al "
+"objeto. Si <literal>equals()</literal> and <literal>hashCode()</literal> "
+"están basados en el valor identificador, el código hash podría cambiar, "
+"rompiendo el contrato de <literal>Set</literal>. Ver el sitio web de "
+"Hibernate para una discusión completa de este problema. Observa que esto no "
+"es una incidencia de Hibernate, sino la semántica normal de Java de "
+"identidad de objeto e igualdad."
-#: index.docbook:192
-msgid "We recommend implementing <literal>equals()</literal> and <literal>hashCode()</literal> using <emphasis>Business key equality</emphasis>. Business key equality means that the <literal>equals()</literal> method compares only the properties that form the business key, a key that would identify our instance in the real world (a <emphasis>natural</emphasis> candidate key):"
-msgstr "Recomendamos implementar <literal>equals()</literal> y <literal>hashCode()</literal> usando <emphasis>igualdad de clave de negocio (Business key equality)</emphasis>. Igualdad de clave de negocio significa que el método <literal>equals()</literal> compara sólo las propiedades que forman la clave de negocio, una clave que podría identificar nuestra instancia en el mundo real (una clave candidata <emphasis>natural</emphasis>):"
+#. Tag: para
+#: persistent_classes.xml:192
+#, no-c-format
+msgid ""
+"We recommend implementing <literal>equals()</literal> and <literal>hashCode()"
+"</literal> using <emphasis>Business key equality</emphasis>. Business key "
+"equality means that the <literal>equals()</literal> method compares only the "
+"properties that form the business key, a key that would identify our "
+"instance in the real world (a <emphasis>natural</emphasis> candidate key):"
+msgstr ""
+"Recomendamos implementar <literal>equals()</literal> y <literal>hashCode()</"
+"literal> usando <emphasis>igualdad de clave de negocio (Business key "
+"equality)</emphasis>. Igualdad de clave de negocio significa que el método "
+"<literal>equals()</literal> compara sólo las propiedades que forman la clave "
+"de negocio, una clave que podría identificar nuestra instancia en el mundo "
+"real (una clave candidata <emphasis>natural</emphasis>):"
-#: index.docbook:200
+#. Tag: programlisting
+#: persistent_classes.xml:200
+#, no-c-format
msgid ""
- "<![CDATA[public class Cat {\n"
- "\n"
- " ...\n"
- " public boolean equals(Object other) {\n"
- " if (this == other) return true;\n"
- " if ( !(other instanceof Cat) ) return false;\n"
- "\n"
- " final Cat cat = (Cat) other;\n"
- "\n"
- " if ( !cat.getLitterId().equals( getLitterId() ) ) return false;\n"
- " if ( !cat.getMother().equals( getMother() ) ) return false;\n"
- "\n"
- " return true;\n"
- " }\n"
- "\n"
- " public int hashCode() {\n"
- " int result;\n"
- " result = getMother().hashCode();\n"
- " result = 29 * result + getLitterId();\n"
- " return result;\n"
- " }\n"
- "\n"
- "}]]>"
+"<![CDATA[public class Cat {\n"
+"\n"
+" ...\n"
+" public boolean equals(Object other) {\n"
+" if (this == other) return true;\n"
+" if ( !(other instanceof Cat) ) return false;\n"
+"\n"
+" final Cat cat = (Cat) other;\n"
+"\n"
+" if ( !cat.getLitterId().equals( getLitterId() ) ) return false;\n"
+" if ( !cat.getMother().equals( getMother() ) ) return false;\n"
+"\n"
+" return true;\n"
+" }\n"
+"\n"
+" public int hashCode() {\n"
+" int result;\n"
+" result = getMother().hashCode();\n"
+" result = 29 * result + getLitterId();\n"
+" return result;\n"
+" }\n"
+"\n"
+"}]]>"
msgstr ""
- "<![CDATA[public class Cat {\n"
- "\n"
- " ...\n"
- " public boolean equals(Object other) {\n"
- " if (this == other) return true;\n"
- " if ( !(other instanceof Cat) ) return false;\n"
- "\n"
- " final Cat cat = (Cat) other;\n"
- "\n"
- " if ( !cat.getLitterId().equals( getLitterId() ) ) return false;\n"
- " if ( !cat.getMother().equals( getMother() ) ) return false;\n"
- "\n"
- " return true;\n"
- " }\n"
- "\n"
- " public int hashCode() {\n"
- " int result;\n"
- " result = getMother().hashCode();\n"
- " result = 29 * result + getLitterId();\n"
- " return result;\n"
- " }\n"
- "\n"
- "}]]>"
-#: index.docbook:202
-msgid "Note that a business key does not have to be as solid as a database primary key candidate (see <xref linkend=\"transactions-basics-identity\"/>). Immutable or unique properties are usually good candidates for a business key."
-msgstr "Nota que una clave de negocio no tiene que ser tan sólida como una clave primaria candidata de base de datos (ver <xref linkend=\"transactions-basics-identity\"/>). Las propiedades inmutables o únicas son usualmente buenas candidatas para una clave de negocio."
+#. Tag: para
+#: persistent_classes.xml:202
+#, no-c-format
+msgid ""
+"Note that a business key does not have to be as solid as a database primary "
+"key candidate (see <xref linkend=\"transactions-basics-identity\"/>). "
+"Immutable or unique properties are usually good candidates for a business "
+"key."
+msgstr ""
+"Nota que una clave de negocio no tiene que ser tan sólida como una clave "
+"primaria candidata de base de datos (ver <xref linkend=\"transactions-basics-"
+"identity\"/>). Las propiedades inmutables o únicas son usualmente buenas "
+"candidatas para una clave de negocio."
-#: index.docbook:212
+#. Tag: title
+#: persistent_classes.xml:212
+#, no-c-format
msgid "Dynamic models"
-msgstr "Modelos dinámicos"
+msgstr "Modelos dinámicos"
-#: index.docbook:215
-msgid "Note that the following features are currently considered experimental and may change in the near future."
-msgstr "Ten en cuenta que las siguientes funcionalidades están consideradas actualmente experimentales y pueden cambiar en el futuro cercano."
+#. Tag: emphasis
+#: persistent_classes.xml:215
+#, no-c-format
+msgid ""
+"Note that the following features are currently considered experimental and "
+"may change in the near future."
+msgstr ""
+"Ten en cuenta que las siguientes funcionalidades están consideradas "
+"actualmente experimentales y pueden cambiar en el futuro cercano."
-#: index.docbook:219
-msgid "Persistent entities don't necessarily have to be represented as POJO classes or as JavaBean objects at runtime. Hibernate also supports dynamic models (using <literal>Map</literal>s of <literal>Map</literal>s at runtime) and the representation of entities as DOM4J trees. With this approach, you don't write persistent classes, only mapping files."
-msgstr "Las entidades persistentes no necesariamente tienen que estar representadas como clases POJO o como objetos JavaBean en tiempo de ejecución. Hibernate soporta además modelos dinámicos (usando <literal>Map</literal>s de <literal>Map</literal>s en tiempo de ejecución) y la representación de entidades como árboles de DOM4J. Con este enfoque no escribes clases persistentes, sólo ficheros de mapeo."
+#. Tag: para
+#: persistent_classes.xml:219
+#, no-c-format
+msgid ""
+"Persistent entities don't necessarily have to be represented as POJO classes "
+"or as JavaBean objects at runtime. Hibernate also supports dynamic models "
+"(using <literal>Map</literal>s of <literal>Map</literal>s at runtime) and "
+"the representation of entities as DOM4J trees. With this approach, you don't "
+"write persistent classes, only mapping files."
+msgstr ""
+"Las entidades persistentes no necesariamente tienen que estar representadas "
+"como clases POJO o como objetos JavaBean en tiempo de ejecución. Hibernate "
+"soporta además modelos dinámicos (usando <literal>Map</literal>s de "
+"<literal>Map</literal>s en tiempo de ejecución) y la representación de "
+"entidades como árboles de DOM4J. Con este enfoque no escribes clases "
+"persistentes, sólo ficheros de mapeo."
-#: index.docbook:227
-msgid "By default, Hibernate works in normal POJO mode. You may set a default entity representation mode for a particular <literal>SessionFactory</literal> using the <literal>default_entity_mode</literal> configuration option (see <xref linkend=\"configuration-optional-properties\"/>."
-msgstr "Por defecto, Hibernate funciona en modo POJO normal. Puedes establecer una representación de entidad por defecto para una <literal>SessionFactory</literal> en particular usando la opción de configuración <literal>default_entity_mode</literal> (ver <xref linkend=\"configuration-optional-properties\"/>)."
+#. Tag: para
+#: persistent_classes.xml:227
+#, no-c-format
+msgid ""
+"By default, Hibernate works in normal POJO mode. You may set a default "
+"entity representation mode for a particular <literal>SessionFactory</"
+"literal> using the <literal>default_entity_mode</literal> configuration "
+"option (see <xref linkend=\"configuration-optional-properties\"/>."
+msgstr ""
+"Por defecto, Hibernate funciona en modo POJO normal. Puedes establecer una "
+"representación de entidad por defecto para una <literal>SessionFactory</"
+"literal> en particular usando la opción de configuración "
+"<literal>default_entity_mode</literal> (ver <xref linkend=\"configuration-"
+"optional-properties\"/>)."
-#: index.docbook:234
-msgid "The following examples demonstrates the representation using <literal>Map</literal>s. First, in the mapping file, an <literal>entity-name</literal> has to be declared instead of (or in addition to) a class name:"
-msgstr "Los siguientes ejemplos demuestran la representación usando <literal>Map</literal>s. Primero, en el fichero de mapeo, tiene que declararse un <literal>entity-name</literal> en vez de (o como agregado a) un nombre de clase:"
+#. Tag: para
+#: persistent_classes.xml:234
+#, no-c-format
+msgid ""
+"The following examples demonstrates the representation using <literal>Map</"
+"literal>s. First, in the mapping file, an <literal>entity-name</literal> has "
+"to be declared instead of (or in addition to) a class name:"
+msgstr ""
+"Los siguientes ejemplos demuestran la representación usando <literal>Map</"
+"literal>s. Primero, en el fichero de mapeo, tiene que declararse un "
+"<literal>entity-name</literal> en vez de (o como agregado a) un nombre de "
+"clase:"
-#: index.docbook:240
+#. Tag: programlisting
+#: persistent_classes.xml:240
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class entity-name=\"Customer\">\n"
- "\n"
- " <id name=\"id\"\n"
- " type=\"long\"\n"
- " column=\"ID\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- "\n"
- " <property name=\"name\"\n"
- " column=\"NAME\"\n"
- " type=\"string\"/>\n"
- "\n"
- " <property name=\"address\"\n"
- " column=\"ADDRESS\"\n"
- " type=\"string\"/>\n"
- "\n"
- " <many-to-one name=\"organization\"\n"
- " column=\"ORGANIZATION_ID\"\n"
- " class=\"Organization\"/>\n"
- "\n"
- " <bag name=\"orders\"\n"
- " inverse=\"true\"\n"
- " lazy=\"false\"\n"
- " cascade=\"all\">\n"
- " <key column=\"CUSTOMER_ID\"/>\n"
- " <one-to-many class=\"Order\"/>\n"
- " </bag>\n"
- "\n"
- " </class>\n"
- " \n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class entity-name=\"Customer\">\n"
+"\n"
+" <id name=\"id\"\n"
+" type=\"long\"\n"
+" column=\"ID\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+"\n"
+" <property name=\"name\"\n"
+" column=\"NAME\"\n"
+" type=\"string\"/>\n"
+"\n"
+" <property name=\"address\"\n"
+" column=\"ADDRESS\"\n"
+" type=\"string\"/>\n"
+"\n"
+" <many-to-one name=\"organization\"\n"
+" column=\"ORGANIZATION_ID\"\n"
+" class=\"Organization\"/>\n"
+"\n"
+" <bag name=\"orders\"\n"
+" inverse=\"true\"\n"
+" lazy=\"false\"\n"
+" cascade=\"all\">\n"
+" <key column=\"CUSTOMER_ID\"/>\n"
+" <one-to-many class=\"Order\"/>\n"
+" </bag>\n"
+"\n"
+" </class>\n"
+" \n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class entity-name=\"Customer\">\n"
- "\n"
- " <id name=\"id\"\n"
- " type=\"long\"\n"
- " column=\"ID\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- "\n"
- " <property name=\"name\"\n"
- " column=\"NAME\"\n"
- " type=\"string\"/>\n"
- "\n"
- " <property name=\"address\"\n"
- " column=\"ADDRESS\"\n"
- " type=\"string\"/>\n"
- "\n"
- " <many-to-one name=\"organization\"\n"
- " column=\"ORGANIZATION_ID\"\n"
- " class=\"Organization\"/>\n"
- "\n"
- " <bag name=\"orders\"\n"
- " inverse=\"true\"\n"
- " lazy=\"false\"\n"
- " cascade=\"all\">\n"
- " <key column=\"CUSTOMER_ID\"/>\n"
- " <one-to-many class=\"Order\"/>\n"
- " </bag>\n"
- "\n"
- " </class>\n"
- " \n"
- "</hibernate-mapping>]]>"
-#: index.docbook:242
-msgid "Note that even though associations are declared using target class names, the target type of an associations may also be a dynamic entity instead of a POJO."
-msgstr "Ten en cuenta que aunque las asociaciones se declaran usando nombres de clase objetivo, el tipo objetivo de una asociación puede ser además una entidad dinámica en vez de un POJO."
+#. Tag: para
+#: persistent_classes.xml:242
+#, no-c-format
+msgid ""
+"Note that even though associations are declared using target class names, "
+"the target type of an associations may also be a dynamic entity instead of a "
+"POJO."
+msgstr ""
+"Ten en cuenta que aunque las asociaciones se declaran usando nombres de "
+"clase objetivo, el tipo objetivo de una asociación puede ser además una "
+"entidad dinámica en vez de un POJO."
-#: index.docbook:249
-msgid "After setting the default entity mode to <literal>dynamic-map</literal> for the <literal>SessionFactory</literal>, we can at runtime work with <literal>Map</literal>s of <literal>Map</literal>s:"
-msgstr "Después de establecer el modo de entidad por defecto a <literal>dynamic-map</literal> para la <literal>SessionFactory</literal>, podemos trabajar en tiempo de ejecución con <literal>Map</literal>s de <literal>Map</literal>s:"
+#. Tag: para
+#: persistent_classes.xml:249
+#, no-c-format
+msgid ""
+"After setting the default entity mode to <literal>dynamic-map</literal> for "
+"the <literal>SessionFactory</literal>, we can at runtime work with "
+"<literal>Map</literal>s of <literal>Map</literal>s:"
+msgstr ""
+"Después de establecer el modo de entidad por defecto a <literal>dynamic-map</"
+"literal> para la <literal>SessionFactory</literal>, podemos trabajar en "
+"tiempo de ejecución con <literal>Map</literal>s de <literal>Map</literal>s:"
-#: index.docbook:255
+#. Tag: programlisting
+#: persistent_classes.xml:255
+#, no-c-format
msgid ""
- "<![CDATA[Session s = openSession();\n"
- "Transaction tx = s.beginTransaction();\n"
- "Session s = openSession();\n"
- "\n"
- "// Create a customer\n"
- "Map david = new HashMap();\n"
- "david.put(\"name\", \"David\");\n"
- "\n"
- "// Create an organization\n"
- "Map foobar = new HashMap();\n"
- "foobar.put(\"name\", \"Foobar Inc.\");\n"
- "\n"
- "// Link both\n"
- "david.put(\"organization\", foobar);\n"
- "\n"
- "// Save both\n"
- "s.save(\"Customer\", david);\n"
- "s.save(\"Organization\", foobar);\n"
- "\n"
- "tx.commit();\n"
- "s.close();]]>"
+"<![CDATA[Session s = openSession();\n"
+"Transaction tx = s.beginTransaction();\n"
+"Session s = openSession();\n"
+"\n"
+"// Create a customer\n"
+"Map david = new HashMap();\n"
+"david.put(\"name\", \"David\");\n"
+"\n"
+"// Create an organization\n"
+"Map foobar = new HashMap();\n"
+"foobar.put(\"name\", \"Foobar Inc.\");\n"
+"\n"
+"// Link both\n"
+"david.put(\"organization\", foobar);\n"
+"\n"
+"// Save both\n"
+"s.save(\"Customer\", david);\n"
+"s.save(\"Organization\", foobar);\n"
+"\n"
+"tx.commit();\n"
+"s.close();]]>"
msgstr ""
- "<![CDATA[Session s = openSession();\n"
- "Transaction tx = s.beginTransaction();\n"
- "Session s = openSession();\n"
- "\n"
- "// Create a customer\n"
- "Map david = new HashMap();\n"
- "david.put(\"name\", \"David\");\n"
- "\n"
- "// Create an organization\n"
- "Map foobar = new HashMap();\n"
- "foobar.put(\"name\", \"Foobar Inc.\");\n"
- "\n"
- "// Link both\n"
- "david.put(\"organization\", foobar);\n"
- "\n"
- "// Save both\n"
- "s.save(\"Customer\", david);\n"
- "s.save(\"Organization\", foobar);\n"
- "\n"
- "tx.commit();\n"
- "s.close();]]>"
-#: index.docbook:257
-msgid "The advantages of a dynamic mapping are quick turnaround time for prototyping without the need for entity class implementation. However, you lose compile-time type checking and will very likely deal with many exceptions at runtime. Thanks to the Hibernate mapping, the database schema can easily be normalized and sound, allowing to add a proper domain model implementation on top later on."
-msgstr "Las ventajas de un mapeo dinámico es rápido tiempo de ciclo de prototipado sin la necesidad de implementación de clases de entidad. Sin embargo, pierdes chequeo de tipos en tiempo de compilación y muy probablemente tratarás con muchas excepciones en tiempo de ejecución. Gracias al mapeo de Hibernate, el esquema de base de datos puede estar facilmente sano y normalizado, permitiendo agregar una implementación apropiada del modelo de dominio más tarde."
+#. Tag: para
+#: persistent_classes.xml:257
+#, no-c-format
+msgid ""
+"The advantages of a dynamic mapping are quick turnaround time for "
+"prototyping without the need for entity class implementation. However, you "
+"lose compile-time type checking and will very likely deal with many "
+"exceptions at runtime. Thanks to the Hibernate mapping, the database schema "
+"can easily be normalized and sound, allowing to add a proper domain model "
+"implementation on top later on."
+msgstr ""
+"Las ventajas de un mapeo dinámico es rápido tiempo de ciclo de prototipado "
+"sin la necesidad de implementación de clases de entidad. Sin embargo, "
+"pierdes chequeo de tipos en tiempo de compilación y muy probablemente "
+"tratarás con muchas excepciones en tiempo de ejecución. Gracias al mapeo de "
+"Hibernate, el esquema de base de datos puede estar facilmente sano y "
+"normalizado, permitiendo agregar una implementación apropiada del modelo de "
+"dominio más tarde."
-#: index.docbook:265
-msgid "Entity representation modes can also be set on a per <literal>Session</literal> basis:"
-msgstr "Los modos de representación de entidad pueden ser establecidos por <literal>Session</literal>:"
+#. Tag: para
+#: persistent_classes.xml:265
+#, no-c-format
+msgid ""
+"Entity representation modes can also be set on a per <literal>Session</"
+"literal> basis:"
+msgstr ""
+"Los modos de representación de entidad pueden ser establecidos por "
+"<literal>Session</literal>:"
-#: index.docbook:270
+#. Tag: programlisting
+#: persistent_classes.xml:270
+#, no-c-format
msgid ""
- "<![CDATA[Session dynamicSession = pojoSession.getSession(EntityMode.MAP);\n"
- "\n"
- "// Create a customer\n"
- "Map david = new HashMap();\n"
- "david.put(\"name\", \"David\");\n"
- "dynamicSession.save(\"Customer\", david);\n"
- "...\n"
- "dynamicSession.flush();\n"
- "dynamicSession.close()\n"
- "...\n"
- "// Continue on pojoSession\n"
- "]]>"
+"<![CDATA[Session dynamicSession = pojoSession.getSession(EntityMode.MAP);\n"
+"\n"
+"// Create a customer\n"
+"Map david = new HashMap();\n"
+"david.put(\"name\", \"David\");\n"
+"dynamicSession.save(\"Customer\", david);\n"
+"...\n"
+"dynamicSession.flush();\n"
+"dynamicSession.close()\n"
+"...\n"
+"// Continue on pojoSession\n"
+"]]>"
msgstr ""
- "<![CDATA[Session dynamicSession = pojoSession.getSession(EntityMode.MAP);\n"
- "\n"
- "// Create a customer\n"
- "Map david = new HashMap();\n"
- "david.put(\"name\", \"David\");\n"
- "dynamicSession.save(\"Customer\", david);\n"
- "...\n"
- "dynamicSession.flush();\n"
- "dynamicSession.close()\n"
- "...\n"
- "// Continue on pojoSession\n"
- "]]>"
-#: index.docbook:273
-msgid "Please note that the call to <literal>getSession()</literal> using an <literal>EntityMode</literal> is on the <literal>Session</literal> API, not the <literal>SessionFactory</literal>. That way, the new <literal>Session</literal> shares the underlying JDBC connection, transaction, and other context information. This means you don't have tocall <literal>flush()</literal> and <literal>close()</literal> on the secondary <literal>Session</literal>, and also leave the transaction and connection handling to the primary unit of work."
-msgstr "Por favor, ten en cuenta que la llamada a <literal>getSession()</literal> usando un <literal>EntityMode</literal> está en la API de <literal>Session</literal>, no en la de <literal>SessionFactory</literal>. De esta forma, la nueva <literal>Session</literal> comparte la conexión JDBC, transacción y otra información de contexto. Esto significa que no tienes que llamar a <literal>flush()</literal> ni a <literal>close()</literal> en la <literal>Session</literal> secundaria, y tembién dejar el manejo de la transacción y de la conexión a la unidad de trabajo primaria."
+#. Tag: para
+#: persistent_classes.xml:273
+#, no-c-format
+msgid ""
+"Please note that the call to <literal>getSession()</literal> using an "
+"<literal>EntityMode</literal> is on the <literal>Session</literal> API, not "
+"the <literal>SessionFactory</literal>. That way, the new <literal>Session</"
+"literal> shares the underlying JDBC connection, transaction, and other "
+"context information. This means you don't have tocall <literal>flush()</"
+"literal> and <literal>close()</literal> on the secondary <literal>Session</"
+"literal>, and also leave the transaction and connection handling to the "
+"primary unit of work."
+msgstr ""
+"Por favor, ten en cuenta que la llamada a <literal>getSession()</literal> "
+"usando un <literal>EntityMode</literal> está en la API de <literal>Session</"
+"literal>, no en la de <literal>SessionFactory</literal>. De esta forma, la "
+"nueva <literal>Session</literal> comparte la conexión JDBC, transacción y "
+"otra información de contexto. Esto significa que no tienes que llamar a "
+"<literal>flush()</literal> ni a <literal>close()</literal> en la "
+"<literal>Session</literal> secundaria, y tembién dejar el manejo de la "
+"transacción y de la conexión a la unidad de trabajo primaria."
-#: index.docbook:283
-msgid "More information about the XML representation capabilities can be found in <xref linkend=\"xml\"/>."
-msgstr "Puede encontrarse más información sobre las capacidades de representación XML en <xref linkend=\"xml\"/>."
+#. Tag: para
+#: persistent_classes.xml:283
+#, no-c-format
+msgid ""
+"More information about the XML representation capabilities can be found in "
+"<xref linkend=\"xml\"/>."
+msgstr ""
+"Puede encontrarse más información sobre las capacidades de representación "
+"XML en <xref linkend=\"xml\"/>."
-#: index.docbook:291
+#. Tag: title
+#: persistent_classes.xml:291
+#, no-c-format
msgid "Tuplizers"
-msgstr "PORHACER: Documentar el framework de extensiones del usuario en los paquetes de propiedad y proxies."
+msgstr "UNTRANSLATED!!! Tuplizers"
-#: index.docbook:293
-msgid "<literal>org.hibernate.tuple.Tuplizer</literal>, and its sub-interfaces, are responsible for managing a particular representation of a piece of data, given that representation's <literal>org.hibernate.EntityMode</literal>. If a given piece of data is thought of as a data structure, then a tuplizer is the thing which knows how to create such a data structure and how to extract values from and inject values into such a data structure. For example, for the POJO entity mode, the correpsonding tuplizer knows how create the POJO through its constructor and how to access the POJO properties using the defined property accessors. There are two high-level types of Tuplizers, represented by the <literal>org.hibernate.tuple.entity.EntityTuplizer</literal> and <literal>org.hibernate.tuple.component.ComponentTuplizer</literal> interfaces. <literal>EntityTuplizer</literal>s are responsible for managing the above mentioned contracts in regards to entities, while <literal>ComponentTu!
plizer</literal>s do the same for components."
+#. Tag: para
+#: persistent_classes.xml:293
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.tuple.Tuplizer</literal>, and its sub-interfaces, are "
+"responsible for managing a particular representation of a piece of data, "
+"given that representation's <literal>org.hibernate.EntityMode</literal>. If "
+"a given piece of data is thought of as a data structure, then a tuplizer is "
+"the thing which knows how to create such a data structure and how to extract "
+"values from and inject values into such a data structure. For example, for "
+"the POJO entity mode, the correpsonding tuplizer knows how create the POJO "
+"through its constructor and how to access the POJO properties using the "
+"defined property accessors. There are two high-level types of Tuplizers, "
+"represented by the <literal>org.hibernate.tuple.entity.EntityTuplizer</"
+"literal> and <literal>org.hibernate.tuple.component.ComponentTuplizer</"
+"literal> interfaces. <literal>EntityTuplizer</literal>s are responsible for "
+"managing the above mentioned contracts in regards to entities, while "
+"<literal>ComponentTuplizer</literal>s do the same for components."
msgstr ""
+"<literal>org.hibernate.tuple.Tuplizer</literal>, and its sub-interfaces, are "
+"responsible for managing a particular representation of a piece of data, "
+"given that representation's <literal>org.hibernate.EntityMode</literal>. If "
+"a given piece of data is thought of as a data structure, then a tuplizer is "
+"the thing which knows how to create such a data structure and how to extract "
+"values from and inject values into such a data structure. For example, for "
+"the POJO entity mode, the correpsonding tuplizer knows how create the POJO "
+"through its constructor and how to access the POJO properties using the "
+"defined property accessors. There are two high-level types of Tuplizers, "
+"represented by the <literal>org.hibernate.tuple.entity.EntityTuplizer</"
+"literal> and <literal>org.hibernate.tuple.component.ComponentTuplizer</"
+"literal> interfaces. <literal>EntityTuplizer</literal>s are responsible for "
+"managing the above mentioned contracts in regards to entities, while "
+"<literal>ComponentTuplizer</literal>s do the same for components."
-#: index.docbook:308
-msgid "Users may also plug in their own tuplizers. Perhaps you require that a <literal>java.util.Map</literal> implementation other than <literal>java.util.HashMap</literal> be used while in the dynamic-map entity-mode; or perhaps you need to define a different proxy generation strategy than the one used by default. Both would be achieved by defining a custom tuplizer implementation. Tuplizers definitions are attached to the entity or component mapping they are meant to manage. Going back to the example of our customer entity:"
+#. Tag: para
+#: persistent_classes.xml:308
+#, no-c-format
+msgid ""
+"Users may also plug in their own tuplizers. Perhaps you require that a "
+"<literal>java.util.Map</literal> implementation other than <literal>java."
+"util.HashMap</literal> be used while in the dynamic-map entity-mode; or "
+"perhaps you need to define a different proxy generation strategy than the "
+"one used by default. Both would be achieved by defining a custom tuplizer "
+"implementation. Tuplizers definitions are attached to the entity or "
+"component mapping they are meant to manage. Going back to the example of our "
+"customer entity:"
msgstr ""
+"Users may also plug in their own tuplizers. Perhaps you require that a "
+"<literal>java.util.Map</literal> implementation other than <literal>java."
+"util.HashMap</literal> be used while in the dynamic-map entity-mode; or "
+"perhaps you need to define a different proxy generation strategy than the "
+"one used by default. Both would be achieved by defining a custom tuplizer "
+"implementation. Tuplizers definitions are attached to the entity or "
+"component mapping they are meant to manage. Going back to the example of our "
+"customer entity:"
-#: index.docbook:317
+#. Tag: programlisting
+#: persistent_classes.xml:317
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- " <class entity-name=\"Customer\">\n"
- " <!--\n"
- " Override the dynamic-map entity-mode\n"
- " tuplizer for the customer entity\n"
- " -->\n"
- " <tuplizer entity-mode=\"dynamic-map\"\n"
- " class=\"CustomMapTuplizerImpl\"/>\n"
- "\n"
- " <id name=\"id\" type=\"long\" column=\"ID\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- "\n"
- " <!-- other properties -->\n"
- " ...\n"
- " </class>\n"
- "</hibernate-mapping>\n"
- "\n"
- "\n"
- "public class CustomMapTuplizerImpl\n"
- " extends org.hibernate.tuple.entity.DynamicMapEntityTuplizer {\n"
- " // override the buildInstantiator() method to plug in our custom map...\n"
- " protected final Instantiator buildInstantiator(\n"
- " org.hibernate.mapping.PersistentClass mappingInfo) {\n"
- " return new CustomMapInstantiator( mappingInfo );\n"
- " }\n"
- "\n"
- " private static final class CustomMapInstantiator\n"
- " extends org.hibernate.tuple.DynamicMapInstantitor {\n"
- " // override the generateMap() method to return our custom map...\n"
- " protected final Map generateMap() {\n"
- " return new CustomMap();\n"
- " }\n"
- " }\n"
- "}]]>"
+"<![CDATA[<hibernate-mapping>\n"
+" <class entity-name=\"Customer\">\n"
+" <!--\n"
+" Override the dynamic-map entity-mode\n"
+" tuplizer for the customer entity\n"
+" -->\n"
+" <tuplizer entity-mode=\"dynamic-map\"\n"
+" class=\"CustomMapTuplizerImpl\"/>\n"
+"\n"
+" <id name=\"id\" type=\"long\" column=\"ID\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+"\n"
+" <!-- other properties -->\n"
+" ...\n"
+" </class>\n"
+"</hibernate-mapping>\n"
+"\n"
+"\n"
+"public class CustomMapTuplizerImpl\n"
+" extends org.hibernate.tuple.entity.DynamicMapEntityTuplizer {\n"
+" // override the buildInstantiator() method to plug in our custom map...\n"
+" protected final Instantiator buildInstantiator(\n"
+" org.hibernate.mapping.PersistentClass mappingInfo) {\n"
+" return new CustomMapInstantiator( mappingInfo );\n"
+" }\n"
+"\n"
+" private static final class CustomMapInstantiator\n"
+" extends org.hibernate.tuple.DynamicMapInstantitor {\n"
+" // override the generateMap() method to return our custom map...\n"
+" protected final Map generateMap() {\n"
+" return new CustomMap();\n"
+" }\n"
+" }\n"
+"}]]>"
msgstr ""
-#: index.docbook:322
-msgid "TODO: Document user-extension framework in the property and proxy packages"
+#. Tag: para
+#: persistent_classes.xml:322
+#, no-c-format
+msgid ""
+"TODO: Document user-extension framework in the property and proxy packages"
msgstr ""
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+"PORHACER: Documentar el framework de extensiones del usuario en los paquetes "
+"de propiedad y proxies."
Modified: core/trunk/documentation/manual/translations/es-ES/content/preface.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/preface.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/preface.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,68 +1,201 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:21
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: preface.xml:21
+#, no-c-format
msgid "Preface"
msgstr "Prefacio"
-#: index.docbook:23
-msgid "Working with object-oriented software and a relational database can be cumbersome and time consuming in today's enterprise environments. Hibernate is an object/relational mapping tool for Java environments. The term object/relational mapping (ORM) refers to the technique of mapping a data representation from an object model to a relational data model with a SQL-based schema."
-msgstr "Trabajar con software orientado a objetos y una base de datos relacional puede ser incómodo y consumir tiempo en los entornos de empresa de hoy. Hibernate es una herramienta de mapeo objeto/relacional para entornos Java. El término mapeo objeto/relacional (MOR) hace referencia a la técnica de mapear una representación de datos desde un modelo de objetos a un modelo de datos relacional con un esquema basado en SQL."
+#. Tag: para
+#: preface.xml:23
+#, no-c-format
+msgid ""
+"Working with object-oriented software and a relational database can be "
+"cumbersome and time consuming in today's enterprise environments. Hibernate "
+"is an object/relational mapping tool for Java environments. The term object/"
+"relational mapping (ORM) refers to the technique of mapping a data "
+"representation from an object model to a relational data model with a SQL-"
+"based schema."
+msgstr ""
+"Trabajar con software orientado a objetos y una base de datos relacional "
+"puede ser incómodo y consumir tiempo en los entornos de empresa de hoy. "
+"Hibernate es una herramienta de mapeo objeto/relacional para entornos Java. "
+"El término mapeo objeto/relacional (MOR) hace referencia a la técnica de "
+"mapear una representación de datos desde un modelo de objetos a un modelo de "
+"datos relacional con un esquema basado en SQL."
-#: index.docbook:31
-msgid "Hibernate not only takes care of the mapping from Java classes to database tables (and from Java data types to SQL data types), but also provides data query and retrieval facilities and can significantly reduce development time otherwise spent with manual data handling in SQL and JDBC."
-msgstr "Hibernate no sólo se encarga de mapear de clases Java a tablas de base de datos (y de tipos de datos de Java a tipos de datos SQL), sino que también provee facilidades de consulta y recuperación de datos y puede reducir significativamente el tiempo de desarrollo que de otra forma se gasta en el manejo de los datos en SQL y JDBC."
+#. Tag: para
+#: preface.xml:31
+#, no-c-format
+msgid ""
+"Hibernate not only takes care of the mapping from Java classes to database "
+"tables (and from Java data types to SQL data types), but also provides data "
+"query and retrieval facilities and can significantly reduce development time "
+"otherwise spent with manual data handling in SQL and JDBC."
+msgstr ""
+"Hibernate no sólo se encarga de mapear de clases Java a tablas de base de "
+"datos (y de tipos de datos de Java a tipos de datos SQL), sino que también "
+"provee facilidades de consulta y recuperación de datos y puede reducir "
+"significativamente el tiempo de desarrollo que de otra forma se gasta en el "
+"manejo de los datos en SQL y JDBC."
-#: index.docbook:38
-msgid "Hibernates goal is to relieve the developer from 95 percent of common data persistence related programming tasks. Hibernate may not be the best solution for data-centric applications that only use stored-procedures to implement the business logic in the database, it is most useful with object-oriented domain models and business logic in the Java-based middle-tier. However, Hibernate can certainly help you to remove or encapsulate vendor-specific SQL code and will help with the common task of result set translation from a tabular representation to a graph of objects."
-msgstr "La meta de Hibernate es relevar al desarrollador del 95 por ciento de las tareas comunes relacionadas a la programación de la persistencia de los datos. Hibernate puede no ser la mejor solución para aplicaciones que usan solamente procedimientos almacenados para implementar la lógica de negocio en la base de datos, es mas útil con modelos de dominio orientados a objetos y lógica de negocio en middle-tier basada en Java. Sin embargo, Hibernate ciertamente puede ayudarte a quitar o encapsular código SQL específico de vendedor y ayudará con la tarea común de traducción de resultados desde una representación tabular a un grafo de objetos."
+#. Tag: para
+#: preface.xml:38
+#, no-c-format
+msgid ""
+"Hibernates goal is to relieve the developer from 95 percent of common data "
+"persistence related programming tasks. Hibernate may not be the best "
+"solution for data-centric applications that only use stored-procedures to "
+"implement the business logic in the database, it is most useful with object-"
+"oriented domain models and business logic in the Java-based middle-tier. "
+"However, Hibernate can certainly help you to remove or encapsulate vendor-"
+"specific SQL code and will help with the common task of result set "
+"translation from a tabular representation to a graph of objects."
+msgstr ""
+"La meta de Hibernate es relevar al desarrollador del 95 por ciento de las "
+"tareas comunes relacionadas a la programación de la persistencia de los "
+"datos. Hibernate puede no ser la mejor solución para aplicaciones que usan "
+"solamente procedimientos almacenados para implementar la lógica de negocio "
+"en la base de datos, es mas útil con modelos de dominio orientados a objetos "
+"y lógica de negocio en middle-tier basada en Java. Sin embargo, Hibernate "
+"ciertamente puede ayudarte a quitar o encapsular código SQL específico de "
+"vendedor y ayudará con la tarea común de traducción de resultados desde una "
+"representación tabular a un grafo de objetos."
-#: index.docbook:48
-msgid "If you are new to Hibernate and Object/Relational Mapping or even Java, please follow these steps:"
-msgstr "Si eres nuevo en Hibernate y lo del Mapeo Objeto/Relacional o incluso en Java, sigue por favor estos pasos:"
+#. Tag: para
+#: preface.xml:48
+#, no-c-format
+msgid ""
+"If you are new to Hibernate and Object/Relational Mapping or even Java, "
+"please follow these steps:"
+msgstr ""
+"Si eres nuevo en Hibernate y lo del Mapeo Objeto/Relacional o incluso en "
+"Java, sigue por favor estos pasos:"
-#: index.docbook:55
-msgid "Read <xref linkend=\"tutorial\"/> for a tutorial with step-by-step instructions. The source code for the tutorial is included in the distribution in the <literal>doc/reference/tutorial/</literal> directory."
-msgstr "Lee <xref linkend=\"quickstart\"/> para un tutorial de 30 minutos, usando Tomcat."
+#. Tag: para
+#: preface.xml:55
+#, no-c-format
+msgid ""
+"Read <xref linkend=\"tutorial\"/> for a tutorial with step-by-step "
+"instructions. The source code for the tutorial is included in the "
+"distribution in the <literal>doc/reference/tutorial/</literal> directory."
+msgstr ""
+"Lee <xref linkend=\"quickstart\"/> para un tutorial de 30 minutos, usando "
+"Tomcat."
-#: index.docbook:63
-msgid "Read <xref linkend=\"architecture\"/> to understand the environments where Hibernate can be used."
-msgstr "Lee <xref linkend=\"architecture\"/> para entender los entornos en los que puede ser usado Hibernate."
+#. Tag: para
+#: preface.xml:63
+#, no-c-format
+msgid ""
+"Read <xref linkend=\"architecture\"/> to understand the environments where "
+"Hibernate can be used."
+msgstr ""
+"Lee <xref linkend=\"architecture\"/> para entender los entornos en los que "
+"puede ser usado Hibernate."
-#: index.docbook:69
-msgid "Have a look at the <literal>eg/</literal> directory in the Hibernate distribution, it contains a simple standalone application. Copy your JDBC driver to the <literal>lib/</literal> directory and edit <literal>etc/hibernate.properties</literal>, specifying correct values for your database. From a command prompt in the distribution directory, type <literal>ant eg</literal> (using Ant), or under Windows, type <literal>build eg</literal>."
-msgstr "Dale una mirada al directorio <literal>eg/</literal> en la distribución de Hibernate, contiene una aplicación independiente simple. Copia tu driver JDBC al directorio <literal>lib/</literal> y edita <literal>etc/hibernate.properties</literal>, especificando los valores correctos para tu base de datos. Desde línea de comandos en el directorio de la distribución, tipea <literal>ant eg</literal> (usando Ant), o bajo Windows, tipea <literal>build eg</literal>."
+#. Tag: para
+#: preface.xml:69
+#, no-c-format
+msgid ""
+"Have a look at the <literal>eg/</literal> directory in the Hibernate "
+"distribution, it contains a simple standalone application. Copy your JDBC "
+"driver to the <literal>lib/</literal> directory and edit <literal>etc/"
+"hibernate.properties</literal>, specifying correct values for your database. "
+"From a command prompt in the distribution directory, type <literal>ant eg</"
+"literal> (using Ant), or under Windows, type <literal>build eg</literal>."
+msgstr ""
+"Dale una mirada al directorio <literal>eg/</literal> en la distribución de "
+"Hibernate, contiene una aplicación independiente simple. Copia tu driver "
+"JDBC al directorio <literal>lib/</literal> y edita <literal>etc/hibernate."
+"properties</literal>, especificando los valores correctos para tu base de "
+"datos. Desde línea de comandos en el directorio de la distribución, tipea "
+"<literal>ant eg</literal> (usando Ant), o bajo Windows, tipea <literal>build "
+"eg</literal>."
-#: index.docbook:80
-msgid "Use this reference documentation as your primary source of information. Consider reading <emphasis>Java Persistence with Hibernate</emphasis> (http://www.manning.com/bauer2) if you need more help with application design or if you prefer a step-by-step tutorial. Also visit http://caveatemptor.hibernate.org and download the example application for Java Persistence with Hibernate."
-msgstr "Usa esta documentación de referencia como tu fuente de información primaria. Ten en consideración leer <emphasis>Java Persistence with Hibernate</emphasis> (http://www.manning.com/bauer2) si necesitas mas ayuda con el diseño de aplicaciones o si prefieres un tutorial paso a paso. Visita también http://caveatemptor.hibernate.org y descarga la aplicación de ejemplo para Java Persistence with Hibernate."
+#. Tag: para
+#: preface.xml:80
+#, no-c-format
+msgid ""
+"Use this reference documentation as your primary source of information. "
+"Consider reading <emphasis>Java Persistence with Hibernate</emphasis> "
+"(http://www.manning.com/bauer2) if you need more help with application "
+"design or if you prefer a step-by-step tutorial. Also visit http://"
+"caveatemptor.hibernate.org and download the example application for Java "
+"Persistence with Hibernate."
+msgstr ""
+"Usa esta documentación de referencia como tu fuente de información primaria. "
+"Ten en consideración leer <emphasis>Java Persistence with Hibernate</"
+"emphasis> (http://www.manning.com/bauer2) si necesitas mas ayuda con el "
+"diseño de aplicaciones o si prefieres un tutorial paso a paso. Visita "
+"también http://caveatemptor.hibernate.org y descarga la aplicación de "
+"ejemplo para Java Persistence with Hibernate."
-#: index.docbook:90
+#. Tag: para
+#: preface.xml:90
+#, no-c-format
msgid "FAQs are answered on the Hibernate website."
msgstr "Los FAQs son respondidos en el sitio web de Hibernate."
-#: index.docbook:95
-msgid "Third party demos, examples, and tutorials are linked on the Hibernate website."
-msgstr "En el sitio web de Hibernate hay enlaces a demos de terceros, ejemplos y tutoriales."
+#. Tag: para
+#: preface.xml:95
+#, no-c-format
+msgid ""
+"Third party demos, examples, and tutorials are linked on the Hibernate "
+"website."
+msgstr ""
+"En el sitio web de Hibernate hay enlaces a demos de terceros, ejemplos y "
+"tutoriales."
-#: index.docbook:101
-msgid "The Community Area on the Hibernate website is a good resource for design patterns and various integration solutions (Tomcat, JBoss AS, Struts, EJB, etc.)."
-msgstr "El Area de Comunidad en el sitio web de Hibernate es una buena fuente de patrones de diseño y varias soluciones de integración (Tomcat, JBoss, Struts, EJB, etc.)."
+#. Tag: para
+#: preface.xml:101
+#, no-c-format
+msgid ""
+"The Community Area on the Hibernate website is a good resource for design "
+"patterns and various integration solutions (Tomcat, JBoss AS, Struts, EJB, "
+"etc.)."
+msgstr ""
+"El Area de Comunidad en el sitio web de Hibernate es una buena fuente de "
+"patrones de diseño y varias soluciones de integración (Tomcat, JBoss, "
+"Struts, EJB, etc.)."
-#: index.docbook:109
-msgid "If you have questions, use the user forum linked on the Hibernate website. We also provide a JIRA issue trackings system for bug reports and feature requests. If you are interested in the development of Hibernate, join the developer mailing list. If you are interested in translating this documentation into your language, contact us on the developer mailing list."
-msgstr "Si tienes preguntas, usa el foro de usuarios enlazado en el sitio web de Hibernate. También proveemos un sistema de seguimiento JIRA para reportes de defectos y peticiones de nuevas características. Si estas interesado en el desarrollo de Hibernate, únete a la lista de correo de desarrolladores. Si estas interesado en traducir esta documentación a tu lenguaje, contáctanos en la lista de correo de desarrolladores."
+#. Tag: para
+#: preface.xml:109
+#, no-c-format
+msgid ""
+"If you have questions, use the user forum linked on the Hibernate website. "
+"We also provide a JIRA issue trackings system for bug reports and feature "
+"requests. If you are interested in the development of Hibernate, join the "
+"developer mailing list. If you are interested in translating this "
+"documentation into your language, contact us on the developer mailing list."
+msgstr ""
+"Si tienes preguntas, usa el foro de usuarios enlazado en el sitio web de "
+"Hibernate. También proveemos un sistema de seguimiento JIRA para reportes de "
+"defectos y peticiones de nuevas características. Si estas interesado en el "
+"desarrollo de Hibernate, únete a la lista de correo de desarrolladores. Si "
+"estas interesado en traducir esta documentación a tu lenguaje, contáctanos "
+"en la lista de correo de desarrolladores."
-#: index.docbook:117
-msgid "Commercial development support, production support, and training for Hibernate is available through JBoss Inc. (see http://www.hibernate.org/SupportTraining/). Hibernate is a Professional Open Source project and a critical component of the JBoss Enterprise Middleware System (JEMS) suite of products."
-msgstr "A través de JBoss Inc. (see http://www.hibernate.org/SupportTraining/) hay disponibilidad de soporte comercial de desarrollo, soporte de producción y entrenamiento en Hibernate. Hibernate es un proyecto de la suite de productos de código abierto JBoss Professional."
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: para
+#: preface.xml:117
+#, no-c-format
+msgid ""
+"Commercial development support, production support, and training for "
+"Hibernate is available through JBoss Inc. (see http://www.hibernate.org/"
+"SupportTraining/). Hibernate is a Professional Open Source project and a "
+"critical component of the JBoss Enterprise Middleware System (JEMS) suite of "
+"products."
+msgstr ""
+"A través de JBoss Inc. (see http://www.hibernate.org/SupportTraining/) hay "
+"disponibilidad de soporte comercial de desarrollo, soporte de producción y "
+"entrenamiento en Hibernate. Hibernate es un proyecto de la suite de "
+"productos de código abierto JBoss Professional."
Modified: core/trunk/documentation/manual/translations/es-ES/content/query_criteria.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/query_criteria.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/query_criteria.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,672 +1,778 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: query_criteria.xml:5
+#, no-c-format
msgid "Criteria Queries"
msgstr "Consultas por Criterios"
-#: index.docbook:7
+#. Tag: para
+#: query_criteria.xml:7
+#, no-c-format
msgid "Hibernate features an intuitive, extensible criteria query API."
-msgstr "Acompaña a Hibernate una API de consultas por criterios intuitiva y extensible."
+msgstr ""
+"Acompaña a Hibernate una API de consultas por criterios intuitiva y "
+"extensible."
-#: index.docbook:12
+#. Tag: title
+#: query_criteria.xml:12
+#, no-c-format
msgid "Creating a <literal>Criteria</literal> instance"
msgstr "Creando una instancia de <literal>Criteria</literal>"
-#: index.docbook:14
-msgid "The interface <literal>org.hibernate.Criteria</literal> represents a query against a particular persistent class. The <literal>Session</literal> is a factory for <literal>Criteria</literal> instances."
-msgstr "La interface <literal>org.hibernate.Criteria</literal> representa una consulta contra una clase persistente en particular. La <literal>Session</literal> es una fábrica de instancias de <literal>Criteria</literal>."
+#. Tag: para
+#: query_criteria.xml:14
+#, no-c-format
+msgid ""
+"The interface <literal>org.hibernate.Criteria</literal> represents a query "
+"against a particular persistent class. The <literal>Session</literal> is a "
+"factory for <literal>Criteria</literal> instances."
+msgstr ""
+"La interface <literal>org.hibernate.Criteria</literal> representa una "
+"consulta contra una clase persistente en particular. La <literal>Session</"
+"literal> es una fábrica de instancias de <literal>Criteria</literal>."
-#: index.docbook:20
+#. Tag: programlisting
+#: query_criteria.xml:20
+#, no-c-format
msgid ""
- "<![CDATA[Criteria crit = sess.createCriteria(Cat.class);\n"
- "crit.setMaxResults(50);\n"
- "List cats = crit.list();]]>"
+"<![CDATA[Criteria crit = sess.createCriteria(Cat.class);\n"
+"crit.setMaxResults(50);\n"
+"List cats = crit.list();]]>"
msgstr ""
- "<![CDATA[Criteria crit = sess.createCriteria(Cat.class);\n"
- "crit.setMaxResults(50);\n"
- "List cats = crit.list();]]>"
-#: index.docbook:25
+#. Tag: title
+#: query_criteria.xml:25
+#, no-c-format
msgid "Narrowing the result set"
msgstr "Estrechando el conjunto resultado"
-#: index.docbook:27
-msgid "An individual query criterion is an instance of the interface <literal>org.hibernate.criterion.Criterion</literal>. The class <literal>org.hibernate.criterion.Restrictions</literal> defines factory methods for obtaining certain built-in <literal>Criterion</literal> types."
-msgstr "Un criterio individual de consulta es una instancia de la interface <literal>org.hibernate.criterion.Criterion</literal>. La clase <literal>org.hibernate.criterion.Restrictions</literal> define métodos de fábrica para obtener ciertos tipos prefabricados de <literal>Criterion</literal>."
+#. Tag: para
+#: query_criteria.xml:27
+#, no-c-format
+msgid ""
+"An individual query criterion is an instance of the interface <literal>org."
+"hibernate.criterion.Criterion</literal>. The class <literal>org.hibernate."
+"criterion.Restrictions</literal> defines factory methods for obtaining "
+"certain built-in <literal>Criterion</literal> types."
+msgstr ""
+"Un criterio individual de consulta es una instancia de la interface "
+"<literal>org.hibernate.criterion.Criterion</literal>. La clase <literal>org."
+"hibernate.criterion.Restrictions</literal> define métodos de fábrica para "
+"obtener ciertos tipos prefabricados de <literal>Criterion</literal>."
-#: index.docbook:35
+#. Tag: programlisting
+#: query_criteria.xml:35
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
- " .add( Restrictions.between(\"weight\", minWeight, maxWeight) )\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
+" .add( Restrictions.between(\"weight\", minWeight, maxWeight) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
- " .add( Restrictions.between(\"weight\", minWeight, maxWeight) )\n"
- " .list();]]>"
-#: index.docbook:37
+#. Tag: para
+#: query_criteria.xml:37
+#, no-c-format
msgid "Restrictions may be grouped logically."
-msgstr "Las restricciones pueden ser agrupadas lógicamente."
+msgstr "Las restricciones pueden ser agrupadas lógicamente."
-#: index.docbook:41
+#. Tag: programlisting
+#: query_criteria.xml:41
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
- " .add( Restrictions.or(\n"
- " Restrictions.eq( \"age\", new Integer(0) ),\n"
- " Restrictions.isNull(\"age\")\n"
- " ) )\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
+" .add( Restrictions.or(\n"
+" Restrictions.eq( \"age\", new Integer(0) ),\n"
+" Restrictions.isNull(\"age\")\n"
+" ) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
- " .add( Restrictions.or(\n"
- " Restrictions.eq( \"age\", new Integer(0) ),\n"
- " Restrictions.isNull(\"age\")\n"
- " ) )\n"
- " .list();]]>"
-#: index.docbook:43
+#. Tag: programlisting
+#: query_criteria.xml:43
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.in( \"name\", new String[] { \"Fritz\", \"Izi\", \"Pk\" } ) )\n"
- " .add( Restrictions.disjunction()\n"
- " .add( Restrictions.isNull(\"age\") )\n"
- " .add( Restrictions.eq(\"age\", new Integer(0) ) )\n"
- " .add( Restrictions.eq(\"age\", new Integer(1) ) )\n"
- " .add( Restrictions.eq(\"age\", new Integer(2) ) )\n"
- " ) )\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .add( Restrictions.in( \"name\", new String[] { \"Fritz\", \"Izi\", \"Pk"
+"\" } ) )\n"
+" .add( Restrictions.disjunction()\n"
+" .add( Restrictions.isNull(\"age\") )\n"
+" .add( Restrictions.eq(\"age\", new Integer(0) ) )\n"
+" .add( Restrictions.eq(\"age\", new Integer(1) ) )\n"
+" .add( Restrictions.eq(\"age\", new Integer(2) ) )\n"
+" ) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.in( \"name\", new String[] { \"Fritz\", \"Izi\", \"Pk\" } ) )\n"
- " .add( Restrictions.disjunction()\n"
- " .add( Restrictions.isNull(\"age\") )\n"
- " .add( Restrictions.eq(\"age\", new Integer(0) ) )\n"
- " .add( Restrictions.eq(\"age\", new Integer(1) ) )\n"
- " .add( Restrictions.eq(\"age\", new Integer(2) ) )\n"
- " ) )\n"
- " .list();]]>"
-#: index.docbook:45
-msgid "There are quite a range of built-in criterion types (<literal>Restrictions</literal> subclasses), but one that is especially useful lets you specify SQL directly."
-msgstr "Hay un gran rango de tipos de criterio prefabricados (subclases de <literal>Restrictions</literal>), pero uno que es especialmente útil te deja especificar SQL directamente."
+#. Tag: para
+#: query_criteria.xml:45
+#, no-c-format
+msgid ""
+"There are quite a range of built-in criterion types (<literal>Restrictions</"
+"literal> subclasses), but one that is especially useful lets you specify SQL "
+"directly."
+msgstr ""
+"Hay un gran rango de tipos de criterio prefabricados (subclases de "
+"<literal>Restrictions</literal>), pero uno que es especialmente útil te deja "
+"especificar SQL directamente."
-#: index.docbook:50
+#. Tag: programlisting
+#: query_criteria.xml:50
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.sqlRestriction(\"lower({alias}.name) like lower(?)\", \"Fritz%\", Hibernate.STRING) )\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .add( Restrictions.sqlRestriction(\"lower({alias}.name) like lower(?)\", "
+"\"Fritz%\", Hibernate.STRING) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.sql(\"lower({alias}.name) like lower(?)\", \"Fritz%\", Hibernate.STRING) )\n"
- " .list();]]>"
-#: index.docbook:52
-msgid "The <literal>{alias}</literal> placeholder with be replaced by the row alias of the queried entity."
-msgstr "El sitio <literal>{alias}</literal> será remplazado por el alias de fila de la entidad consultada."
+#. Tag: para
+#: query_criteria.xml:52
+#, no-c-format
+msgid ""
+"The <literal>{alias}</literal> placeholder with be replaced by the row alias "
+"of the queried entity."
+msgstr ""
+"El sitio <literal>{alias}</literal> será remplazado por el alias de fila de "
+"la entidad consultada."
-#: index.docbook:57
-msgid "An alternative approach to obtaining a criterion is to get it from a <literal>Property</literal> instance. You can create a <literal>Property</literal> by calling <literal>Property.forName()</literal>."
-msgstr "Un enfoque alternativo para obtener un criterio es tomarlo de una instancia de <literal>Property</literal>. Puedes crear una <literal>Property</literal> llamando a <literal>Property.forName()</literal>."
+#. Tag: para
+#: query_criteria.xml:57
+#, no-c-format
+msgid ""
+"An alternative approach to obtaining a criterion is to get it from a "
+"<literal>Property</literal> instance. You can create a <literal>Property</"
+"literal> by calling <literal>Property.forName()</literal>."
+msgstr ""
+"Un enfoque alternativo para obtener un criterio es tomarlo de una instancia "
+"de <literal>Property</literal>. Puedes crear una <literal>Property</literal> "
+"llamando a <literal>Property.forName()</literal>."
-#: index.docbook:63
+#. Tag: programlisting
+#: query_criteria.xml:63
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "Property age = Property.forName(\"age\");\n"
- "List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.disjunction()\n"
- " .add( age.isNull() )\n"
- " .add( age.eq( new Integer(0) ) )\n"
- " .add( age.eq( new Integer(1) ) )\n"
- " .add( age.eq( new Integer(2) ) )\n"
- " ) )\n"
- " .add( Property.forName(\"name\").in( new String[] { \"Fritz\", \"Izi\", \"Pk\" } ) )\n"
- " .list();]]>"
+"<![CDATA[\n"
+"Property age = Property.forName(\"age\");\n"
+"List cats = sess.createCriteria(Cat.class)\n"
+" .add( Restrictions.disjunction()\n"
+" .add( age.isNull() )\n"
+" .add( age.eq( new Integer(0) ) )\n"
+" .add( age.eq( new Integer(1) ) )\n"
+" .add( age.eq( new Integer(2) ) )\n"
+" ) )\n"
+" .add( Property.forName(\"name\").in( new String[] { \"Fritz\", \"Izi\", "
+"\"Pk\" } ) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[\n"
- "Property age = Property.forName(\"age\");\n"
- "List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.disjunction()\n"
- " .add( age.isNull() )\n"
- " .add( age.eq( new Integer(0) ) )\n"
- " .add( age.eq( new Integer(1) ) )\n"
- " .add( age.eq( new Integer(2) ) )\n"
- " ) )\n"
- " .add( Property.forName(\"name\").in( new String[] { \"Fritz\", \"Izi\", \"Pk\" } ) )\n"
- " .list();]]>"
-#: index.docbook:68
+#. Tag: title
+#: query_criteria.xml:68
+#, no-c-format
msgid "Ordering the results"
msgstr "Ordenando los resultados"
-#: index.docbook:70
-msgid "You may order the results using <literal>org.hibernate.criterion.Order</literal>."
-msgstr "Puedes ordenar los resultados usando <literal>org.hibernate.criterion.Order</literal>."
+#. Tag: para
+#: query_criteria.xml:70
+#, no-c-format
+msgid ""
+"You may order the results using <literal>org.hibernate.criterion.Order</"
+"literal>."
+msgstr ""
+"Puedes ordenar los resultados usando <literal>org.hibernate.criterion.Order</"
+"literal>."
-#: index.docbook:74
+#. Tag: programlisting
+#: query_criteria.xml:74
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"F%\")\n"
- " .addOrder( Order.asc(\"name\") )\n"
- " .addOrder( Order.desc(\"age\") )\n"
- " .setMaxResults(50)\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .add( Restrictions.like(\"name\", \"F%\")\n"
+" .addOrder( Order.asc(\"name\") )\n"
+" .addOrder( Order.desc(\"age\") )\n"
+" .setMaxResults(50)\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"F%\")\n"
- " .addOrder( Order.asc(\"name\") )\n"
- " .addOrder( Order.desc(\"age\") )\n"
- " .setMaxResults(50)\n"
- " .list();]]>"
-#: index.docbook:76
+#. Tag: programlisting
+#: query_criteria.xml:76
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Property.forName(\"name\").like(\"F%\") )\n"
- " .addOrder( Property.forName(\"name\").asc() )\n"
- " .addOrder( Property.forName(\"age\").desc() )\n"
- " .setMaxResults(50)\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .add( Property.forName(\"name\").like(\"F%\") )\n"
+" .addOrder( Property.forName(\"name\").asc() )\n"
+" .addOrder( Property.forName(\"age\").desc() )\n"
+" .setMaxResults(50)\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Property.forName(\"name\").like(\"F%\") )\n"
- " .addOrder( Property.forName(\"name\").asc() )\n"
- " .addOrder( Property.forName(\"age\").desc() )\n"
- " .setMaxResults(50)\n"
- " .list();]]>"
-#: index.docbook:81
+#. Tag: title
+#: query_criteria.xml:81
+#, no-c-format
msgid "Associations"
msgstr "Asociaciones"
-#: index.docbook:83
-msgid "You may easily specify constraints upon related entities by navigating associations using <literal>createCriteria()</literal>."
-msgstr "Puedes especificar fácilmente restricciones sobre las entidades relacionadas al navegar asociaciones usando <literal>createCriteria()</literal>."
+#. Tag: para
+#: query_criteria.xml:83
+#, no-c-format
+msgid ""
+"You may easily specify constraints upon related entities by navigating "
+"associations using <literal>createCriteria()</literal>."
+msgstr ""
+"Puedes especificar fácilmente restricciones sobre las entidades relacionadas "
+"al navegar asociaciones usando <literal>createCriteria()</literal>."
-#: index.docbook:88
+#. Tag: programlisting
+#: query_criteria.xml:88
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"F%\") )\n"
- " .createCriteria(\"kittens\")\n"
- " .add( Restrictions.like(\"name\", \"F%\") )\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .add( Restrictions.like(\"name\", \"F%\") )\n"
+" .createCriteria(\"kittens\")\n"
+" .add( Restrictions.like(\"name\", \"F%\") )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"F%\")\n"
- " .createCriteria(\"kittens\")\n"
- " .add( Restrictions.like(\"name\", \"F%\")\n"
- " .list();]]>"
-#: index.docbook:90
-msgid "note that the second <literal>createCriteria()</literal> returns a new instance of <literal>Criteria</literal>, which refers to the elements of the <literal>kittens</literal> collection."
-msgstr "nota que el segundo <literal>createCriteria()</literal> devuelve una nueva instancia de <literal>Criteria</literal>, que hace referencia a los elementos de la colección <literal>kittens</literal>."
+#. Tag: para
+#: query_criteria.xml:90
+#, no-c-format
+msgid ""
+"note that the second <literal>createCriteria()</literal> returns a new "
+"instance of <literal>Criteria</literal>, which refers to the elements of the "
+"<literal>kittens</literal> collection."
+msgstr ""
+"nota que el segundo <literal>createCriteria()</literal> devuelve una nueva "
+"instancia de <literal>Criteria</literal>, que hace referencia a los "
+"elementos de la colección <literal>kittens</literal>."
-#: index.docbook:96
+#. Tag: para
+#: query_criteria.xml:96
+#, no-c-format
msgid "The following, alternate form is useful in certain circumstances."
msgstr "La siguiente forma alternativa es útil en ciertas circunstancias."
-#: index.docbook:100
+#. Tag: programlisting
+#: query_criteria.xml:100
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .createAlias(\"kittens\", \"kt\")\n"
- " .createAlias(\"mate\", \"mt\")\n"
- " .add( Restrictions.eqProperty(\"kt.name\", \"mt.name\") )\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .createAlias(\"kittens\", \"kt\")\n"
+" .createAlias(\"mate\", \"mt\")\n"
+" .add( Restrictions.eqProperty(\"kt.name\", \"mt.name\") )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .createAlias(\"kittens\", \"kt\")\n"
- " .createAlias(\"mate\", \"mt\")\n"
- " .add( Restrictions.eqProperty(\"kt.name\", \"mt.name\") )\n"
- " .list();]]>"
-#: index.docbook:102
-msgid "(<literal>createAlias()</literal> does not create a new instance of <literal>Criteria</literal>.)"
-msgstr "(<literal>createAlias()</literal> no crea una nueva instancia de <literal>Criteria</literal>.)"
+#. Tag: para
+#: query_criteria.xml:102
+#, no-c-format
+msgid ""
+"(<literal>createAlias()</literal> does not create a new instance of "
+"<literal>Criteria</literal>.)"
+msgstr ""
+"(<literal>createAlias()</literal> no crea una nueva instancia de "
+"<literal>Criteria</literal>.)"
-#: index.docbook:107
-msgid "Note that the kittens collections held by the <literal>Cat</literal> instances returned by the previous two queries are <emphasis>not</emphasis> pre-filtered by the criteria! If you wish to retrieve just the kittens that match the criteria, you must use a <literal>ResultTransformer</literal>."
-msgstr "¡Observa que las colecciones de gatitos tenidas por las instancias de <literal>Cat</literal> devueltas por las dos consultas previas <emphasis>no</emphasis> están prefiltradas por los criterios! Si deseas recuperar sólo los gatitos que emparejen los criterios, debes usar <literal>returnMaps()</literal>."
+#. Tag: para
+#: query_criteria.xml:107
+#, no-c-format
+msgid ""
+"Note that the kittens collections held by the <literal>Cat</literal> "
+"instances returned by the previous two queries are <emphasis>not</emphasis> "
+"pre-filtered by the criteria! If you wish to retrieve just the kittens that "
+"match the criteria, you must use a <literal>ResultTransformer</literal>."
+msgstr ""
+"¡Observa que las colecciones de gatitos tenidas por las instancias de "
+"<literal>Cat</literal> devueltas por las dos consultas previas <emphasis>no</"
+"emphasis> están prefiltradas por los criterios! Si deseas recuperar sólo los "
+"gatitos que emparejen los criterios, debes usar <literal>returnMaps()</"
+"literal>."
-#: index.docbook:114
+#. Tag: programlisting
+#: query_criteria.xml:114
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .createCriteria(\"kittens\", \"kt\")\n"
- " .add( Restrictions.eq(\"name\", \"F%\") )\n"
- " .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)\n"
- " .list();\n"
- "Iterator iter = cats.iterator();\n"
- "while ( iter.hasNext() ) {\n"
- " Map map = (Map) iter.next();\n"
- " Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);\n"
- " Cat kitten = (Cat) map.get(\"kt\");\n"
- "}]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .createCriteria(\"kittens\", \"kt\")\n"
+" .add( Restrictions.eq(\"name\", \"F%\") )\n"
+" .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)\n"
+" .list();\n"
+"Iterator iter = cats.iterator();\n"
+"while ( iter.hasNext() ) {\n"
+" Map map = (Map) iter.next();\n"
+" Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);\n"
+" Cat kitten = (Cat) map.get(\"kt\");\n"
+"}]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .createCriteria(\"kittens\", \"kt\")\n"
- " .add( Restrictions.eq(\"name\", \"F%\") )\n"
- " .returnMaps()\n"
- " .list();\n"
- "Iterator iter = cats.iterator();\n"
- "while ( iter.hasNext() ) {\n"
- " Map map = (Map) iter.next();\n"
- " Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);\n"
- " Cat kitten = (Cat) map.get(\"kt\");\n"
- "}]]>"
-#: index.docbook:119
+#. Tag: title
+#: query_criteria.xml:119
+#, no-c-format
msgid "Dynamic association fetching"
-msgstr "Recuperación dinámica de asociaciones"
+msgstr "Recuperación dinámica de asociaciones"
-#: index.docbook:121
-msgid "You may specify association fetching semantics at runtime using <literal>setFetchMode()</literal>."
-msgstr "Puedes especificar la semántica de recuperación de asociaciones en tiempo de ejecución usando <literal>setFetchMode()</literal>."
+#. Tag: para
+#: query_criteria.xml:121
+#, no-c-format
+msgid ""
+"You may specify association fetching semantics at runtime using "
+"<literal>setFetchMode()</literal>."
+msgstr ""
+"Puedes especificar la semántica de recuperación de asociaciones en tiempo de "
+"ejecución usando <literal>setFetchMode()</literal>."
-#: index.docbook:126
+#. Tag: programlisting
+#: query_criteria.xml:126
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
- " .setFetchMode(\"mate\", FetchMode.EAGER)\n"
- " .setFetchMode(\"kittens\", FetchMode.EAGER)\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
+" .setFetchMode(\"mate\", FetchMode.EAGER)\n"
+" .setFetchMode(\"kittens\", FetchMode.EAGER)\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
- " .setFetchMode(\"mate\", FetchMode.EAGER)\n"
- " .setFetchMode(\"kittens\", FetchMode.EAGER)\n"
- " .list();]]>"
-#: index.docbook:128
-msgid "This query will fetch both <literal>mate</literal> and <literal>kittens</literal> by outer join. See <xref linkend=\"performance-fetching\"/> for more information."
-msgstr "Esta consulta recuperará tanto <literal>mate</literal> como <literal>kittens</literal> por unión exterior (outer join). Ver <xref linkend=\"performance-fetching\"/> para más información."
+#. Tag: para
+#: query_criteria.xml:128
+#, no-c-format
+msgid ""
+"This query will fetch both <literal>mate</literal> and <literal>kittens</"
+"literal> by outer join. See <xref linkend=\"performance-fetching\"/> for "
+"more information."
+msgstr ""
+"Esta consulta recuperará tanto <literal>mate</literal> como "
+"<literal>kittens</literal> por unión exterior (outer join). Ver <xref "
+"linkend=\"performance-fetching\"/> para más información."
-#: index.docbook:136
+#. Tag: title
+#: query_criteria.xml:136
+#, no-c-format
msgid "Example queries"
msgstr "Consultas por ejemplos"
-#: index.docbook:138
-msgid "The class <literal>org.hibernate.criterion.Example</literal> allows you to construct a query criterion from a given instance."
-msgstr "La clase <literal>org.hibernate.criterion.Example</literal> te permite construir un criterio de consulta a partir de una instancia dada."
+#. Tag: para
+#: query_criteria.xml:138
+#, no-c-format
+msgid ""
+"The class <literal>org.hibernate.criterion.Example</literal> allows you to "
+"construct a query criterion from a given instance."
+msgstr ""
+"La clase <literal>org.hibernate.criterion.Example</literal> te permite "
+"construir un criterio de consulta a partir de una instancia dada."
-#: index.docbook:143
+#. Tag: programlisting
+#: query_criteria.xml:143
+#, no-c-format
msgid ""
- "<![CDATA[Cat cat = new Cat();\n"
- "cat.setSex('F');\n"
- "cat.setColor(Color.BLACK);\n"
- "List results = session.createCriteria(Cat.class)\n"
- " .add( Example.create(cat) )\n"
- " .list();]]>"
+"<![CDATA[Cat cat = new Cat();\n"
+"cat.setSex('F');\n"
+"cat.setColor(Color.BLACK);\n"
+"List results = session.createCriteria(Cat.class)\n"
+" .add( Example.create(cat) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[Cat cat = new Cat();\n"
- "cat.setSex('F');\n"
- "cat.setColor(Color.BLACK);\n"
- "List results = session.createCriteria(Cat.class)\n"
- " .add( Example.create(cat) )\n"
- " .list();]]>"
-#: index.docbook:145
-msgid "Version properties, identifiers and associations are ignored. By default, null valued properties are excluded."
-msgstr "Las propiedades de versión, los identificadores y las asociaciones son ignorados. Por defecto, las propiedades valuadas a nulo son excluídas."
+#. Tag: para
+#: query_criteria.xml:145
+#, no-c-format
+msgid ""
+"Version properties, identifiers and associations are ignored. By default, "
+"null valued properties are excluded."
+msgstr ""
+"Las propiedades de versión, los identificadores y las asociaciones son "
+"ignorados. Por defecto, las propiedades valuadas a nulo son excluídas."
-#: index.docbook:150
+#. Tag: para
+#: query_criteria.xml:150
+#, no-c-format
msgid "You can adjust how the <literal>Example</literal> is applied."
-msgstr "Puedes ajustar cómo se aplica el <literal>Example</literal>."
+msgstr "Puedes ajustar cómo se aplica el <literal>Example</literal>."
-#: index.docbook:154
+#. Tag: programlisting
+#: query_criteria.xml:154
+#, no-c-format
msgid ""
- "<![CDATA[Example example = Example.create(cat)\n"
- " .excludeZeroes() //exclude zero valued properties\n"
- " .excludeProperty(\"color\") //exclude the property named \"color\"\n"
- " .ignoreCase() //perform case insensitive string comparisons\n"
- " .enableLike(); //use like for string comparisons\n"
- "List results = session.createCriteria(Cat.class)\n"
- " .add(example)\n"
- " .list();]]>"
+"<![CDATA[Example example = Example.create(cat)\n"
+" .excludeZeroes() //exclude zero valued properties\n"
+" .excludeProperty(\"color\") //exclude the property named \"color\"\n"
+" .ignoreCase() //perform case insensitive string "
+"comparisons\n"
+" .enableLike(); //use like for string comparisons\n"
+"List results = session.createCriteria(Cat.class)\n"
+" .add(example)\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[Example example = Example.create(cat)\n"
- " .excludeZeroes() //exclude zero valued properties\n"
- " .excludeProperty(\"color\") //exclude the property named \"color\"\n"
- " .ignoreCase() //perform case insensitive string comparisons\n"
- " .enableLike(); //use like for string comparisons\n"
- "List results = session.createCriteria(Cat.class)\n"
- " .add(example)\n"
- " .list();]]>"
-#: index.docbook:156
+#. Tag: para
+#: query_criteria.xml:156
+#, no-c-format
msgid "You can even use examples to place criteria upon associated objects."
-msgstr "Puedes incluso usar ejemplos para colocar criterios sobre objetos asociados."
+msgstr ""
+"Puedes incluso usar ejemplos para colocar criterios sobre objetos asociados."
-#: index.docbook:160
+#. Tag: programlisting
+#: query_criteria.xml:160
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .add( Example.create(cat) )\n"
- " .createCriteria(\"mate\")\n"
- " .add( Example.create( cat.getMate() ) )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Cat.class)\n"
+" .add( Example.create(cat) )\n"
+" .createCriteria(\"mate\")\n"
+" .add( Example.create( cat.getMate() ) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .add( Example.create(cat) )\n"
- " .createCriteria(\"mate\")\n"
- " .add( Example.create( cat.getMate() ) )\n"
- " .list();]]>"
-#: index.docbook:165
+#. Tag: title
+#: query_criteria.xml:165
+#, no-c-format
msgid "Projections, aggregation and grouping"
-msgstr "Proyecciones, agregación y agrupamiento"
+msgstr "Proyecciones, agregación y agrupamiento"
-#: index.docbook:166
-msgid "The class <literal>org.hibernate.criterion.Projections</literal> is a factory for <literal>Projection</literal> instances. We apply a projection to a query by calling <literal>setProjection()</literal>."
-msgstr "La clase <literal>org.hibernate.criterion.Projections</literal> es una fábrica de instancias de <literal>Projection</literal>. Aplicamos una proyección a una consulta llamando a <literal>setProjection()</literal>."
+#. Tag: para
+#: query_criteria.xml:166
+#, no-c-format
+msgid ""
+"The class <literal>org.hibernate.criterion.Projections</literal> is a "
+"factory for <literal>Projection</literal> instances. We apply a projection "
+"to a query by calling <literal>setProjection()</literal>."
+msgstr ""
+"La clase <literal>org.hibernate.criterion.Projections</literal> es una "
+"fábrica de instancias de <literal>Projection</literal>. Aplicamos una "
+"proyección a una consulta llamando a <literal>setProjection()</literal>."
-#: index.docbook:172
+#. Tag: programlisting
+#: query_criteria.xml:172
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.rowCount() )\n"
- " .add( Restrictions.eq(\"color\", Color.BLACK) )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Cat.class)\n"
+" .setProjection( Projections.rowCount() )\n"
+" .add( Restrictions.eq(\"color\", Color.BLACK) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.rowCount() )\n"
- " .add( Restrictions.eq(\"color\", Color.BLACK) )\n"
- " .list();]]>"
-#: index.docbook:174
+#. Tag: programlisting
+#: query_criteria.xml:174
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.projectionList()\n"
- " .add( Projections.rowCount() )\n"
- " .add( Projections.avg(\"weight\") )\n"
- " .add( Projections.max(\"weight\") )\n"
- " .add( Projections.groupProperty(\"color\") )\n"
- " )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Cat.class)\n"
+" .setProjection( Projections.projectionList()\n"
+" .add( Projections.rowCount() )\n"
+" .add( Projections.avg(\"weight\") )\n"
+" .add( Projections.max(\"weight\") )\n"
+" .add( Projections.groupProperty(\"color\") )\n"
+" )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.projectionList()\n"
- " .add( Projections.rowCount() )\n"
- " .add( Projections.avg(\"weight\") )\n"
- " .add( Projections.max(\"weight\") )\n"
- " .add( Projections.groupProperty(\"color\") )\n"
- " )\n"
- " .list();]]>"
-#: index.docbook:176
-msgid "There is no explicit \"group by\" necessary in a criteria query. Certain projection types are defined to be <emphasis>grouping projections</emphasis>, which also appear in the SQL <literal>group by</literal> clause."
-msgstr "No es necesario ningún \"group by\" explícito en una consulta por criterios. Ciertos tipos de proyecciones son definidos para ser <emphasis>proyecciones agrupadas</emphasis>, que además aparecen en la cláusula SQL <literal>group by</literal>."
+#. Tag: para
+#: query_criteria.xml:176
+#, no-c-format
+msgid ""
+"There is no explicit \"group by\" necessary in a criteria query. Certain "
+"projection types are defined to be <emphasis>grouping projections</"
+"emphasis>, which also appear in the SQL <literal>group by</literal> clause."
+msgstr ""
+"No es necesario ningún \"group by\" explícito en una consulta por criterios. "
+"Ciertos tipos de proyecciones son definidos para ser <emphasis>proyecciones "
+"agrupadas</emphasis>, que además aparecen en la cláusula SQL <literal>group "
+"by</literal>."
-#: index.docbook:182
-msgid "An alias may optionally be assigned to a projection, so that the projected value may be referred to in restrictions or orderings. Here are two different ways to do this:"
-msgstr "Puede opcionalmente asignarse un alias a una proyección, de modo que el valor proyectado pueda ser referido en restricciones u ordenamientos. Aquí hay dos formas diferentes de hacer esto:"
+#. Tag: para
+#: query_criteria.xml:182
+#, no-c-format
+msgid ""
+"An alias may optionally be assigned to a projection, so that the projected "
+"value may be referred to in restrictions or orderings. Here are two "
+"different ways to do this:"
+msgstr ""
+"Puede opcionalmente asignarse un alias a una proyección, de modo que el "
+"valor proyectado pueda ser referido en restricciones u ordenamientos. Aquí "
+"hay dos formas diferentes de hacer esto:"
-#: index.docbook:188
+#. Tag: programlisting
+#: query_criteria.xml:188
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.alias( Projections.groupProperty(\"color\"), \"colr\" ) )\n"
- " .addOrder( Order.asc(\"colr\") )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Cat.class)\n"
+" .setProjection( Projections.alias( Projections.groupProperty(\"color\"), "
+"\"colr\" ) )\n"
+" .addOrder( Order.asc(\"colr\") )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.alias( Projections.groupProperty(\"color\"), \"colr\" ) )\n"
- " .addOrder( Order.asc(\"colr\") )\n"
- " .list();]]>"
-#: index.docbook:190
+#. Tag: programlisting
+#: query_criteria.xml:190
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.groupProperty(\"color\").as(\"colr\") )\n"
- " .addOrder( Order.asc(\"colr\") )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Cat.class)\n"
+" .setProjection( Projections.groupProperty(\"color\").as(\"colr\") )\n"
+" .addOrder( Order.asc(\"colr\") )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.groupProperty(\"color\").as(\"colr\") )\n"
- " .addOrder( Order.asc(\"colr\") )\n"
- " .list();]]>"
-#: index.docbook:192
-msgid "The <literal>alias()</literal> and <literal>as()</literal> methods simply wrap a projection instance in another, aliased, instance of <literal>Projection</literal>. As a shortcut, you can assign an alias when you add the projection to a projection list:"
-msgstr "Los métodos <literal>alias()</literal> y <literal>as()</literal> simplemente envuelven una instancia de proyección en otra instancia de <literal>Projection</literal> con alias. Como un atajo, puedes asignar un alias cuando agregas la proyección a una lista de proyecciones:"
+#. Tag: para
+#: query_criteria.xml:192
+#, no-c-format
+msgid ""
+"The <literal>alias()</literal> and <literal>as()</literal> methods simply "
+"wrap a projection instance in another, aliased, instance of "
+"<literal>Projection</literal>. As a shortcut, you can assign an alias when "
+"you add the projection to a projection list:"
+msgstr ""
+"Los métodos <literal>alias()</literal> y <literal>as()</literal> simplemente "
+"envuelven una instancia de proyección en otra instancia de "
+"<literal>Projection</literal> con alias. Como un atajo, puedes asignar un "
+"alias cuando agregas la proyección a una lista de proyecciones:"
-#: index.docbook:199
+#. Tag: programlisting
+#: query_criteria.xml:199
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.projectionList()\n"
- " .add( Projections.rowCount(), \"catCountByColor\" )\n"
- " .add( Projections.avg(\"weight\"), \"avgWeight\" )\n"
- " .add( Projections.max(\"weight\"), \"maxWeight\" )\n"
- " .add( Projections.groupProperty(\"color\"), \"color\" )\n"
- " )\n"
- " .addOrder( Order.desc(\"catCountByColor\") )\n"
- " .addOrder( Order.desc(\"avgWeight\") )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Cat.class)\n"
+" .setProjection( Projections.projectionList()\n"
+" .add( Projections.rowCount(), \"catCountByColor\" )\n"
+" .add( Projections.avg(\"weight\"), \"avgWeight\" )\n"
+" .add( Projections.max(\"weight\"), \"maxWeight\" )\n"
+" .add( Projections.groupProperty(\"color\"), \"color\" )\n"
+" )\n"
+" .addOrder( Order.desc(\"catCountByColor\") )\n"
+" .addOrder( Order.desc(\"avgWeight\") )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.projectionList()\n"
- " .add( Projections.rowCount(), \"catCountByColor\" )\n"
- " .add( Projections.avg(\"weight\"), \"avgWeight\" )\n"
- " .add( Projections.max(\"weight\"), \"maxWeight\" )\n"
- " .add( Projections.groupProperty(\"color\"), \"color\" )\n"
- " )\n"
- " .addOrder( Order.desc(\"catCountByColor\") )\n"
- " .addOrder( Order.desc(\"avgWeight\") )\n"
- " .list();]]>"
-#: index.docbook:201
+#. Tag: programlisting
+#: query_criteria.xml:201
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Domestic.class, \"cat\")\n"
- " .createAlias(\"kittens\", \"kit\")\n"
- " .setProjection( Projections.projectionList()\n"
- " .add( Projections.property(\"cat.name\"), \"catName\" )\n"
- " .add( Projections.property(\"kit.name\"), \"kitName\" )\n"
- " )\n"
- " .addOrder( Order.asc(\"catName\") )\n"
- " .addOrder( Order.asc(\"kitName\") )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Domestic.class, \"cat\")\n"
+" .createAlias(\"kittens\", \"kit\")\n"
+" .setProjection( Projections.projectionList()\n"
+" .add( Projections.property(\"cat.name\"), \"catName\" )\n"
+" .add( Projections.property(\"kit.name\"), \"kitName\" )\n"
+" )\n"
+" .addOrder( Order.asc(\"catName\") )\n"
+" .addOrder( Order.asc(\"kitName\") )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Domestic.class, \"cat\")\n"
- " .createAlias(\"kittens\", \"kit\")\n"
- " .setProjection( Projections.projectionList()\n"
- " .add( Projections.property(\"cat.name\"), \"catName\" )\n"
- " .add( Projections.property(\"kit.name\"), \"kitName\" )\n"
- " )\n"
- " .addOrder( Order.asc(\"catName\") )\n"
- " .addOrder( Order.asc(\"kitName\") )\n"
- " .list();]]>"
-#: index.docbook:203
-msgid "You can also use <literal>Property.forName()</literal> to express projections:"
-msgstr "Puedes también usar <literal>Property.forName()</literal> para expresar proyecciones:"
+#. Tag: para
+#: query_criteria.xml:203
+#, no-c-format
+msgid ""
+"You can also use <literal>Property.forName()</literal> to express "
+"projections:"
+msgstr ""
+"Puedes también usar <literal>Property.forName()</literal> para expresar "
+"proyecciones:"
-#: index.docbook:207
+#. Tag: programlisting
+#: query_criteria.xml:207
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Property.forName(\"name\") )\n"
- " .add( Property.forName(\"color\").eq(Color.BLACK) )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Cat.class)\n"
+" .setProjection( Property.forName(\"name\") )\n"
+" .add( Property.forName(\"color\").eq(Color.BLACK) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Property.forName(\"name\") )\n"
- " .add( Property.forName(\"color\").eq(Color.BLACK) )\n"
- " .list();]]>"
-#: index.docbook:209
+#. Tag: programlisting
+#: query_criteria.xml:209
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.projectionList()\n"
- " .add( Projections.rowCount().as(\"catCountByColor\") )\n"
- " .add( Property.forName(\"weight\").avg().as(\"avgWeight\") )\n"
- " .add( Property.forName(\"weight\").max().as(\"maxWeight\") )\n"
- " .add( Property.forName(\"color\").group().as(\"color\" )\n"
- " )\n"
- " .addOrder( Order.desc(\"catCountByColor\") )\n"
- " .addOrder( Order.desc(\"avgWeight\") )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Cat.class)\n"
+" .setProjection( Projections.projectionList()\n"
+" .add( Projections.rowCount().as(\"catCountByColor\") )\n"
+" .add( Property.forName(\"weight\").avg().as(\"avgWeight\") )\n"
+" .add( Property.forName(\"weight\").max().as(\"maxWeight\") )\n"
+" .add( Property.forName(\"color\").group().as(\"color\" )\n"
+" )\n"
+" .addOrder( Order.desc(\"catCountByColor\") )\n"
+" .addOrder( Order.desc(\"avgWeight\") )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.projectionList()\n"
- " .add( Projections.rowCount().as(\"catCountByColor\") )\n"
- " .add( Property.forName(\"weight\").avg().as(\"avgWeight\") )\n"
- " .add( Property.forName(\"weight\").max().as(\"maxWeight\") )\n"
- " .add( Property.forName(\"color\").group().as(\"color\" )\n"
- " )\n"
- " .addOrder( Order.desc(\"catCountByColor\") )\n"
- " .addOrder( Order.desc(\"avgWeight\") )\n"
- " .list();]]>"
-#: index.docbook:214
+#. Tag: title
+#: query_criteria.xml:214
+#, no-c-format
msgid "Detached queries and subqueries"
msgstr "Consultas y subconsultas separadas"
-#: index.docbook:215
-msgid "The <literal>DetachedCriteria</literal> class lets you create a query outside the scope of a session, and then later execute it using some arbitrary <literal>Session</literal>."
-msgstr "La clase <literal>DetachedCriteria</literal> te deja crear una consulta fuera del ámbito de una sesión, y entonces ejecutarla luego usando alguna <literal>Session</literal> arbitraria."
+#. Tag: para
+#: query_criteria.xml:215
+#, no-c-format
+msgid ""
+"The <literal>DetachedCriteria</literal> class lets you create a query "
+"outside the scope of a session, and then later execute it using some "
+"arbitrary <literal>Session</literal>."
+msgstr ""
+"La clase <literal>DetachedCriteria</literal> te deja crear una consulta "
+"fuera del ámbito de una sesión, y entonces ejecutarla luego usando alguna "
+"<literal>Session</literal> arbitraria."
-#: index.docbook:220
+#. Tag: programlisting
+#: query_criteria.xml:220
+#, no-c-format
msgid ""
- "<![CDATA[DetachedCriteria query = DetachedCriteria.forClass(Cat.class)\n"
- " .add( Property.forName(\"sex\").eq('F') );\n"
- " \n"
- "Session session = ....;\n"
- "Transaction txn = session.beginTransaction();\n"
- "List results = query.getExecutableCriteria(session).setMaxResults(100).list();\n"
- "txn.commit();\n"
- "session.close();]]>"
+"<![CDATA[DetachedCriteria query = DetachedCriteria.forClass(Cat.class)\n"
+" .add( Property.forName(\"sex\").eq('F') );\n"
+" \n"
+"Session session = ....;\n"
+"Transaction txn = session.beginTransaction();\n"
+"List results = query.getExecutableCriteria(session).setMaxResults(100).list"
+"();\n"
+"txn.commit();\n"
+"session.close();]]>"
msgstr ""
- "<![CDATA[DetachedCriteria query = DetachedCriteria.forClass(Cat.class)\n"
- " .add( Property.forName(\"sex\").eq('F') );\n"
- " \n"
- "Session session = ....;\n"
- "Transaction txn = session.beginTransaction();\n"
- "List results = query.getExecutableCriteria(session).setMaxResults(100).list();\n"
- "txn.commit();\n"
- "session.close();]]>"
-#: index.docbook:222
-msgid "A <literal>DetachedCriteria</literal> may also be used to express a subquery. Criterion instances involving subqueries may be obtained via <literal>Subqueries</literal> or <literal>Property</literal>."
-msgstr "También una <literal>DetachedCriteria</literal> puede usarse para expresar una subconsulta. Las instancias de Criterion implicando subconsultas pueden obtenerse vía <literal>Subqueries</literal> o <literal>Property</literal>."
+#. Tag: para
+#: query_criteria.xml:222
+#, no-c-format
+msgid ""
+"A <literal>DetachedCriteria</literal> may also be used to express a "
+"subquery. Criterion instances involving subqueries may be obtained via "
+"<literal>Subqueries</literal> or <literal>Property</literal>."
+msgstr ""
+"También una <literal>DetachedCriteria</literal> puede usarse para expresar "
+"una subconsulta. Las instancias de Criterion implicando subconsultas pueden "
+"obtenerse vía <literal>Subqueries</literal> o <literal>Property</literal>."
-#: index.docbook:228
+#. Tag: programlisting
+#: query_criteria.xml:228
+#, no-c-format
msgid ""
- "<![CDATA[DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)\n"
- " .setProjection( Property.forName(\"weight\").avg() );\n"
- "session.createCriteria(Cat.class)\n"
- " .add( Property.forName(\"weight\").gt(avgWeight) )\n"
- " .list();]]>"
+"<![CDATA[DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)\n"
+" .setProjection( Property.forName(\"weight\").avg() );\n"
+"session.createCriteria(Cat.class)\n"
+" .add( Property.forName(\"weight\").gt(avgWeight) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)\n"
- " .setProjection( Property.forName(\"weight\").avg() );\n"
- "session.createCriteria(Cat.class)\n"
- " .add( Property.forName(\"weight\").gt(avgWeight) )\n"
- " .list();]]>"
-#: index.docbook:230
+#. Tag: programlisting
+#: query_criteria.xml:230
+#, no-c-format
msgid ""
- "<![CDATA[DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)\n"
- " .setProjection( Property.forName(\"weight\") );\n"
- "session.createCriteria(Cat.class)\n"
- " .add( Subqueries.geAll(\"weight\", weights) )\n"
- " .list();]]>"
+"<![CDATA[DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)\n"
+" .setProjection( Property.forName(\"weight\") );\n"
+"session.createCriteria(Cat.class)\n"
+" .add( Subqueries.geAll(\"weight\", weights) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)\n"
- " .setProjection( Property.forName(\"weight\") );\n"
- "session.createCriteria(Cat.class)\n"
- " .add( Subqueries.geAll(\"weight\", weights) )\n"
- " .list();]]>"
-#: index.docbook:232
+#. Tag: para
+#: query_criteria.xml:232
+#, no-c-format
msgid "Even correlated subqueries are possible:"
msgstr "Incluso son posibles las subconsultas correlacionadas:"
-#: index.docbook:236
+#. Tag: programlisting
+#: query_criteria.xml:236
+#, no-c-format
msgid ""
- "<![CDATA[DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat.class, \"cat2\")\n"
- " .setProjection( Property.forName(\"weight\").avg() )\n"
- " .add( Property.forName(\"cat2.sex\").eqProperty(\"cat.sex\") );\n"
- "session.createCriteria(Cat.class, \"cat\")\n"
- " .add( Property.forName(\"weight\").gt(avgWeightForSex) )\n"
- " .list();]]>"
+"<![CDATA[DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat."
+"class, \"cat2\")\n"
+" .setProjection( Property.forName(\"weight\").avg() )\n"
+" .add( Property.forName(\"cat2.sex\").eqProperty(\"cat.sex\") );\n"
+"session.createCriteria(Cat.class, \"cat\")\n"
+" .add( Property.forName(\"weight\").gt(avgWeightForSex) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat.class, \"cat2\")\n"
- " .setProjection( Property.forName(\"weight\").avg() )\n"
- " .add( Property.forName(\"cat2.sex\").eqProperty(\"cat.sex\") );\n"
- "session.createCriteria(Cat.class, \"cat\")\n"
- " .add( Property.forName(\"weight\").gt(avgWeightForSex) )\n"
- " .list();]]>"
-#: index.docbook:245
+#. Tag: title
+#: query_criteria.xml:245
+#, no-c-format
msgid "Queries by natural identifier"
msgstr "Consultas por identificador natural"
-#: index.docbook:247
-msgid "For most queries, including criteria queries, the query cache is not very efficient, because query cache invalidation occurs too frequently. However, there is one special kind of query where we can optimize the cache invalidation algorithm: lookups by a constant natural key. In some applications, this kind of query occurs frequently. The criteria API provides special provision for this use case."
-msgstr "Para la mayoría de consultas, incluyendo las consultas por criterios, el caché de consulta no es muy eficiente, debido a que la invalidación del caché de consulta ocurre demasiado frecuentemente. Sin embargo, hay un tipo especial de consulta donde podemos optimizar el algoritmo de invalidación de caché: búsquedas por una clave natural constante. En algunas aplicaciones, este tipo de consulta, ocurre frecuentemente. La API de criterios brinda especial provisión para este caso de uso."
+#. Tag: para
+#: query_criteria.xml:247
+#, no-c-format
+msgid ""
+"For most queries, including criteria queries, the query cache is not very "
+"efficient, because query cache invalidation occurs too frequently. However, "
+"there is one special kind of query where we can optimize the cache "
+"invalidation algorithm: lookups by a constant natural key. In some "
+"applications, this kind of query occurs frequently. The criteria API "
+"provides special provision for this use case."
+msgstr ""
+"Para la mayoría de consultas, incluyendo las consultas por criterios, el "
+"caché de consulta no es muy eficiente, debido a que la invalidación del "
+"caché de consulta ocurre demasiado frecuentemente. Sin embargo, hay un tipo "
+"especial de consulta donde podemos optimizar el algoritmo de invalidación de "
+"caché: búsquedas por una clave natural constante. En algunas aplicaciones, "
+"este tipo de consulta, ocurre frecuentemente. La API de criterios brinda "
+"especial provisión para este caso de uso."
-#: index.docbook:255
-msgid "First, you should map the natural key of your entity using <literal><natural-id></literal>, and enable use of the second-level cache."
-msgstr "Primero, debes mapear la clave natural de tu entidad usando <literal><natural-id></literal>, y habilitar el uso del caché de segundo nivel."
+#. Tag: para
+#: query_criteria.xml:255
+#, no-c-format
+msgid ""
+"First, you should map the natural key of your entity using <literal><"
+"natural-id></literal>, and enable use of the second-level cache."
+msgstr ""
+"Primero, debes mapear la clave natural de tu entidad usando <literal><"
+"natural-id></literal>, y habilitar el uso del caché de segundo nivel."
-#: index.docbook:260
+#. Tag: programlisting
+#: query_criteria.xml:260
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"User\">\n"
- " <cache usage=\"read-write\"/>\n"
- " <id name=\"id\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <natural-id>\n"
- " <property name=\"name\"/>\n"
- " <property name=\"org\"/>\n"
- " </natural-id>\n"
- " <property name=\"password\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"User\">\n"
+" <cache usage=\"read-write\"/>\n"
+" <id name=\"id\">\n"
+" <generator class=\"increment\"/>\n"
+" </id>\n"
+" <natural-id>\n"
+" <property name=\"name\"/>\n"
+" <property name=\"org\"/>\n"
+" </natural-id>\n"
+" <property name=\"password\"/>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"User\">\n"
- " <cache usage=\"read-write\"/>\n"
- " <id name=\"id\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <natural-id>\n"
- " <property name=\"name\"/>\n"
- " <property name=\"org\"/>\n"
- " </natural-id>\n"
- " <property name=\"password\"/>\n"
- "</class>]]>"
-#: index.docbook:262
-msgid "Note that this functionality is not intended for use with entities with <emphasis>mutable</emphasis> natural keys."
-msgstr "Nota que esta funcionalidad no está pensada para uso con entidades con claves naturales <emphasis>mutable</emphasis>."
+#. Tag: para
+#: query_criteria.xml:262
+#, no-c-format
+msgid ""
+"Note that this functionality is not intended for use with entities with "
+"<emphasis>mutable</emphasis> natural keys."
+msgstr ""
+"Nota que esta funcionalidad no está pensada para uso con entidades con "
+"claves naturales <emphasis>mutable</emphasis>."
-#: index.docbook:267
+#. Tag: para
+#: query_criteria.xml:267
+#, no-c-format
msgid "Next, enable the Hibernate query cache."
-msgstr "Seguido, habilita el caché de consulta de Hibernate."
+msgstr "Seguido, habilita el caché de consulta de Hibernate."
-#: index.docbook:271
-msgid "Now, <literal>Restrictions.naturalId()</literal> allows us to make use of the more efficient cache algorithm."
-msgstr "Ahora, <literal>Restrictions.naturalId()</literal> nos permite hacer uso de el algoritmo de caché más eficiente."
+#. Tag: para
+#: query_criteria.xml:271
+#, no-c-format
+msgid ""
+"Now, <literal>Restrictions.naturalId()</literal> allows us to make use of "
+"the more efficient cache algorithm."
+msgstr ""
+"Ahora, <literal>Restrictions.naturalId()</literal> nos permite hacer uso de "
+"el algoritmo de caché más eficiente."
-#: index.docbook:276
+#. Tag: programlisting
+#: query_criteria.xml:276
+#, no-c-format
msgid ""
- "<![CDATA[session.createCriteria(User.class)\n"
- " .add( Restrictions.naturalId()\n"
- " .set(\"name\", \"gavin\")\n"
- " .set(\"org\", \"hb\") \n"
- " ).setCacheable(true)\n"
- " .uniqueResult();]]>"
+"<![CDATA[session.createCriteria(User.class)\n"
+" .add( Restrictions.naturalId()\n"
+" .set(\"name\", \"gavin\")\n"
+" .set(\"org\", \"hb\") \n"
+" ).setCacheable(true)\n"
+" .uniqueResult();]]>"
msgstr ""
- "<![CDATA[session.createCriteria(User.class)\n"
- " .add( Restrictions.naturalId()\n"
- " .set(\"name\", \"gavin\")\n"
- " .set(\"org\", \"hb\") \n"
- " ).setCacheable(true)\n"
- " .uniqueResult();]]>"
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
Modified: core/trunk/documentation/manual/translations/es-ES/content/query_hql.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/query_hql.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/query_hql.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,1510 +1,2426 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: query_hql.xml:5
+#, no-c-format
msgid "HQL: The Hibernate Query Language"
msgstr "HQL: El Lenguaje de Consulta de Hibernate"
-#: index.docbook:7
-msgid "Hibernate is equipped with an extremely powerful query language that (quite intentionally) looks very much like SQL. But don't be fooled by the syntax; HQL is fully object-oriented, understanding notions like inheritence, polymorphism and association."
-msgstr "Hibernate está equipado con un lenguaje de consulta extremadamente potente que (intencionalmente en absoluto) se parece muchísimo a SQL. Pero no te engañes por la sintaxis; HQL es completamente orientado a objetos, entendiendo nociones como herencia, polimorfismo y asociación."
+#. Tag: para
+#: query_hql.xml:7
+#, no-c-format
+msgid ""
+"Hibernate is equipped with an extremely powerful query language that (quite "
+"intentionally) looks very much like SQL. But don't be fooled by the syntax; "
+"HQL is fully object-oriented, understanding notions like inheritence, "
+"polymorphism and association."
+msgstr ""
+"Hibernate está equipado con un lenguaje de consulta extremadamente potente "
+"que (intencionalmente en absoluto) se parece muchísimo a SQL. Pero no te "
+"engañes por la sintaxis; HQL es completamente orientado a objetos, "
+"entendiendo nociones como herencia, polimorfismo y asociación."
-#: index.docbook:14
+#. Tag: title
+#: query_hql.xml:14
+#, no-c-format
msgid "Case Sensitivity"
-msgstr "Sensibilidad a Mayúsculas"
+msgstr "Sensibilidad a Mayúsculas"
-#: index.docbook:16
-msgid "Queries are case-insensitive, except for names of Java classes and properties. So <literal>SeLeCT</literal> is the same as <literal>sELEct</literal> is the same as <literal>SELECT</literal> but <literal>org.hibernate.eg.FOO</literal> is not <literal>org.hibernate.eg.Foo</literal> and <literal>foo.barSet</literal> is not <literal>foo.BARSET</literal>."
-msgstr "Las consultas son insensibles a mayúsculas, excepto para nombres de clases Java y propiedades. De modo que <literal>SeLeCT</literal> es lo mismo que <literal>sELEct</literal> e igual a <literal>SELECT</literal>, pero <literal>org.hibernate.eg.FOO</literal> no lo es a <literal>org.hibernate.eg.Foo</literal> y <literal>foo.barSet</literal> no es igual a <literal>foo.BARSET</literal>."
+#. Tag: para
+#: query_hql.xml:16
+#, no-c-format
+msgid ""
+"Queries are case-insensitive, except for names of Java classes and "
+"properties. So <literal>SeLeCT</literal> is the same as <literal>sELEct</"
+"literal> is the same as <literal>SELECT</literal> but <literal>org.hibernate."
+"eg.FOO</literal> is not <literal>org.hibernate.eg.Foo</literal> and "
+"<literal>foo.barSet</literal> is not <literal>foo.BARSET</literal>."
+msgstr ""
+"Las consultas son insensibles a mayúsculas, excepto para nombres de clases "
+"Java y propiedades. De modo que <literal>SeLeCT</literal> es lo mismo que "
+"<literal>sELEct</literal> e igual a <literal>SELECT</literal>, pero "
+"<literal>org.hibernate.eg.FOO</literal> no lo es a <literal>org.hibernate.eg."
+"Foo</literal> y <literal>foo.barSet</literal> no es igual a <literal>foo."
+"BARSET</literal>."
-#: index.docbook:27
-msgid "This manual uses lowercase HQL keywords. Some users find queries with uppercase keywords more readable, but we find this convention ugly when embedded in Java code."
-msgstr "Este manual usa palabras clave HQL en minúsculas. Algunos usuarios encuentran las consultas con palabras clave en mayúsculas más leíbles, pero encontramos esta convención fea cuando se encaja en código Java."
+#. Tag: para
+#: query_hql.xml:27
+#, no-c-format
+msgid ""
+"This manual uses lowercase HQL keywords. Some users find queries with "
+"uppercase keywords more readable, but we find this convention ugly when "
+"embedded in Java code."
+msgstr ""
+"Este manual usa palabras clave HQL en minúsculas. Algunos usuarios "
+"encuentran las consultas con palabras clave en mayúsculas más leíbles, pero "
+"encontramos esta convención fea cuando se encaja en código Java."
-#: index.docbook:35
+#. Tag: title
+#: query_hql.xml:35
+#, no-c-format
msgid "The from clause"
-msgstr "La cláusula from"
+msgstr "La cláusula from"
-#: index.docbook:37
+#. Tag: para
+#: query_hql.xml:37
+#, no-c-format
msgid "The simplest possible Hibernate query is of the form:"
-msgstr "La consulta más simple posible de Hibernate es de la forma:"
+msgstr "La consulta más simple posible de Hibernate es de la forma:"
-#: index.docbook:41
+#. Tag: programlisting
+#: query_hql.xml:41
+#, no-c-format
msgid "<![CDATA[from eg.Cat]]>"
-msgstr "<![CDATA[from eg.Cat]]>"
+msgstr ""
-#: index.docbook:43
-msgid "which simply returns all instances of the class <literal>eg.Cat</literal>. We don't usually need to qualify the class name, since <literal>auto-import</literal> is the default. So we almost always just write:"
-msgstr "que simplemente devuelve todas las instancias de la clase <literal>eg.Cat</literal>. Usualmente no necesitamos cualificar el nombre de la clase, ya que <literal>auto-import</literal> está por defecto. De modo que casi siempre escribimos solamente:"
+#. Tag: para
+#: query_hql.xml:43
+#, no-c-format
+msgid ""
+"which simply returns all instances of the class <literal>eg.Cat</literal>. "
+"We don't usually need to qualify the class name, since <literal>auto-import</"
+"literal> is the default. So we almost always just write:"
+msgstr ""
+"que simplemente devuelve todas las instancias de la clase <literal>eg.Cat</"
+"literal>. Usualmente no necesitamos cualificar el nombre de la clase, ya que "
+"<literal>auto-import</literal> está por defecto. De modo que casi siempre "
+"escribimos solamente:"
-#: index.docbook:49
+#. Tag: programlisting
+#: query_hql.xml:49
+#, no-c-format
msgid "<![CDATA[from Cat]]>"
-msgstr "<![CDATA[from Cat]]>"
+msgstr ""
-#: index.docbook:51
-msgid "Most of the time, you will need to assign an <emphasis>alias</emphasis>, since you will want to refer to the <literal>Cat</literal> in other parts of the query."
-msgstr "La mayoría del tiempo, necesitarás asignar un <emphasis>alias</emphasis>, ya que querrás referirte al <literal>Cat</literal> en otras partes de la consulta."
+#. Tag: para
+#: query_hql.xml:51
+#, no-c-format
+msgid ""
+"Most of the time, you will need to assign an <emphasis>alias</emphasis>, "
+"since you will want to refer to the <literal>Cat</literal> in other parts of "
+"the query."
+msgstr ""
+"La mayoría del tiempo, necesitarás asignar un <emphasis>alias</emphasis>, ya "
+"que querrás referirte al <literal>Cat</literal> en otras partes de la "
+"consulta."
-#: index.docbook:57, index.docbook:372
+#. Tag: programlisting
+#: query_hql.xml:57 query_hql.xml:372
+#, no-c-format
msgid "<![CDATA[from Cat as cat]]>"
-msgstr "<![CDATA[from Cat as cat]]>"
+msgstr ""
-#: index.docbook:59
-msgid "This query assigns the alias <literal>cat</literal> to <literal>Cat</literal> instances, so we could use that alias later in the query. The <literal>as</literal> keyword is optional; we could also write:"
-msgstr "Esta consulta asigna el alias <literal>cat</literal> a las instancias de <literal>Cat</literal>, de modo que podríamos usar ese alias luego en la consulta. La palabra clave <literal>as</literal> es opcional; también podríamos escribir:"
+#. Tag: para
+#: query_hql.xml:59
+#, no-c-format
+msgid ""
+"This query assigns the alias <literal>cat</literal> to <literal>Cat</"
+"literal> instances, so we could use that alias later in the query. The "
+"<literal>as</literal> keyword is optional; we could also write:"
+msgstr ""
+"Esta consulta asigna el alias <literal>cat</literal> a las instancias de "
+"<literal>Cat</literal>, de modo que podríamos usar ese alias luego en la "
+"consulta. La palabra clave <literal>as</literal> es opcional; también "
+"podríamos escribir:"
-#: index.docbook:65
+#. Tag: programlisting
+#: query_hql.xml:65
+#, no-c-format
msgid "<![CDATA[from Cat cat]]>"
-msgstr "<![CDATA[from Cat cat]]>"
+msgstr ""
-#: index.docbook:67
-msgid "Multiple classes may appear, resulting in a cartesian product or \"cross\" join."
-msgstr "Pueden aparecer múltiples clases, resultando en un producto cartesiano o unión \"cruzada\" (cross join)."
+#. Tag: para
+#: query_hql.xml:67
+#, no-c-format
+msgid ""
+"Multiple classes may appear, resulting in a cartesian product or \"cross\" "
+"join."
+msgstr ""
+"Pueden aparecer múltiples clases, resultando en un producto cartesiano o "
+"unión \"cruzada\" (cross join)."
-#: index.docbook:71
+#. Tag: programlisting
+#: query_hql.xml:71
+#, no-c-format
msgid "<![CDATA[from Formula, Parameter]]>"
-msgstr "<![CDATA[from Formula, Parameter]]>"
+msgstr ""
-#: index.docbook:72
+#. Tag: programlisting
+#: query_hql.xml:72
+#, no-c-format
msgid "<![CDATA[from Formula as form, Parameter as param]]>"
-msgstr "<![CDATA[from Formula as form, Parameter as param]]>"
+msgstr ""
-#: index.docbook:74
-msgid "It is considered good practice to name query aliases using an initial lowercase, consistent with Java naming standards for local variables (eg. <literal>domesticCat</literal>)."
-msgstr "Se considera buena práctica el nombrar los alias de consulta usando una inicial en minúsculas, consistente con los estándares de nombrado de Java para variables locales (por ejemplo, <literal>domesticCat</literal>)."
+#. Tag: para
+#: query_hql.xml:74
+#, no-c-format
+msgid ""
+"It is considered good practice to name query aliases using an initial "
+"lowercase, consistent with Java naming standards for local variables (eg. "
+"<literal>domesticCat</literal>)."
+msgstr ""
+"Se considera buena práctica el nombrar los alias de consulta usando una "
+"inicial en minúsculas, consistente con los estándares de nombrado de Java "
+"para variables locales (por ejemplo, <literal>domesticCat</literal>)."
-#: index.docbook:83
+#. Tag: title
+#: query_hql.xml:83
+#, no-c-format
msgid "Associations and joins"
msgstr "Asociaciones y uniones (joins)"
-#: index.docbook:85
-msgid "We may also assign aliases to associated entities, or even to elements of a collection of values, using a <literal>join</literal>."
-msgstr "Podemos también asignar aliases a entidades asociadas, e incluso a elementos de una colección de valores, usando una <literal>join</literal>."
+#. Tag: para
+#: query_hql.xml:85
+#, no-c-format
+msgid ""
+"We may also assign aliases to associated entities, or even to elements of a "
+"collection of values, using a <literal>join</literal>."
+msgstr ""
+"Podemos también asignar aliases a entidades asociadas, e incluso a elementos "
+"de una colección de valores, usando una <literal>join</literal>."
-#: index.docbook:90
+#. Tag: programlisting
+#: query_hql.xml:90
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as cat\n"
- " inner join cat.mate as mate\n"
- " left outer join cat.kittens as kitten]]>"
+"<![CDATA[from Cat as cat\n"
+" inner join cat.mate as mate\n"
+" left outer join cat.kittens as kitten]]>"
msgstr ""
- "<![CDATA[from Cat as cat \n"
- " inner join cat.mate as mate\n"
- " left outer join cat.kittens as kitten]]>"
-#: index.docbook:92
+#. Tag: programlisting
+#: query_hql.xml:92
+#, no-c-format
msgid "<![CDATA[from Cat as cat left join cat.mate.kittens as kittens]]>"
-msgstr "<![CDATA[from Cat as cat left join cat.mate.kittens as kittens]]>"
+msgstr ""
-#: index.docbook:94
+#. Tag: programlisting
+#: query_hql.xml:94
+#, no-c-format
msgid "<![CDATA[from Formula form full join form.parameter param]]>"
-msgstr "<![CDATA[from Formula form full join form.parameter param]]>"
+msgstr ""
-#: index.docbook:96
+#. Tag: para
+#: query_hql.xml:96
+#, no-c-format
msgid "The supported join types are borrowed from ANSI SQL"
msgstr "Los tipos de join soportados son prestados de ANSI SQL"
-#: index.docbook:103
+#. Tag: literal
+#: query_hql.xml:103
+#, no-c-format
msgid "inner join"
msgstr "inner join"
-#: index.docbook:108
+#. Tag: literal
+#: query_hql.xml:108
+#, no-c-format
msgid "left outer join"
msgstr "left outer join"
-#: index.docbook:113
+#. Tag: literal
+#: query_hql.xml:113
+#, no-c-format
msgid "right outer join"
msgstr "right outer join"
-#: index.docbook:117
+#. Tag: para
+#: query_hql.xml:117
+#, no-c-format
msgid "<literal>full join</literal> (not usually useful)"
-msgstr "<literal>full join</literal> (no útil usualmente)"
+msgstr "<literal>full join</literal> (no útil usualmente)"
-#: index.docbook:123
-msgid "The <literal>inner join</literal>, <literal>left outer join</literal> and <literal>right outer join</literal> constructs may be abbreviated."
-msgstr "Las construcciones <literal>inner join</literal>, <literal>left outer join</literal> y <literal>right outer join</literal> pueden ser abreviadas."
+#. Tag: para
+#: query_hql.xml:123
+#, no-c-format
+msgid ""
+"The <literal>inner join</literal>, <literal>left outer join</literal> and "
+"<literal>right outer join</literal> constructs may be abbreviated."
+msgstr ""
+"Las construcciones <literal>inner join</literal>, <literal>left outer join</"
+"literal> y <literal>right outer join</literal> pueden ser abreviadas."
-#: index.docbook:128
+#. Tag: programlisting
+#: query_hql.xml:128
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as cat\n"
- " join cat.mate as mate\n"
- " left join cat.kittens as kitten]]>"
+"<![CDATA[from Cat as cat\n"
+" join cat.mate as mate\n"
+" left join cat.kittens as kitten]]>"
msgstr ""
- "<![CDATA[from Cat as cat \n"
- " join cat.mate as mate\n"
- " left join cat.kittens as kitten]]>"
-#: index.docbook:130
-msgid "You may supply extra join conditions using the HQL <literal>with</literal> keyword."
-msgstr "Puedes proveer condiciones de unión extra usando la palabra clave <literal>with</literal> de HQL."
+#. Tag: para
+#: query_hql.xml:130
+#, no-c-format
+msgid ""
+"You may supply extra join conditions using the HQL <literal>with</literal> "
+"keyword."
+msgstr ""
+"Puedes proveer condiciones de unión extra usando la palabra clave "
+"<literal>with</literal> de HQL."
-#: index.docbook:135
+#. Tag: programlisting
+#: query_hql.xml:135
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as cat\n"
- " left join cat.kittens as kitten\n"
- " with kitten.bodyWeight > 10.0]]>"
+"<![CDATA[from Cat as cat\n"
+" left join cat.kittens as kitten\n"
+" with kitten.bodyWeight > 10.0]]>"
msgstr ""
- "<![CDATA[from Cat as cat \n"
- " left join cat.kittens as kitten \n"
- " with kitten.bodyWeight > 10.0]]>"
-#: index.docbook:137
-msgid "In addition, a \"fetch\" join allows associations or collections of values to be initialized along with their parent objects, using a single select. This is particularly useful in the case of a collection. It effectively overrides the outer join and lazy declarations of the mapping file for associations and collections. See <xref linkend=\"performance-fetching\"/> for more information."
-msgstr "En adición, un \"fetch\" join permite a las asociaciones o colecciones de valores ser inicializadas junto a sus objetos padres, usando una sola selección. Esto es particularmente útil en el case de una colección. Efectivamente sobrescribe el outer join y las declaraciones perezosas (lazy) del fichero de mapeo para asociaciones y colecciones. Ver <xref linkend=\"performance-fetching\"/> para más información."
+#. Tag: para
+#: query_hql.xml:137
+#, no-c-format
+msgid ""
+"In addition, a \"fetch\" join allows associations or collections of values "
+"to be initialized along with their parent objects, using a single select. "
+"This is particularly useful in the case of a collection. It effectively "
+"overrides the outer join and lazy declarations of the mapping file for "
+"associations and collections. See <xref linkend=\"performance-fetching\"/> "
+"for more information."
+msgstr ""
+"En adición, un \"fetch\" join permite a las asociaciones o colecciones de "
+"valores ser inicializadas junto a sus objetos padres, usando una sola "
+"selección. Esto es particularmente útil en el case de una colección. "
+"Efectivamente sobrescribe el outer join y las declaraciones perezosas (lazy) "
+"del fichero de mapeo para asociaciones y colecciones. Ver <xref linkend="
+"\"performance-fetching\"/> para más información."
-#: index.docbook:145
+#. Tag: programlisting
+#: query_hql.xml:145
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as cat\n"
- " inner join fetch cat.mate\n"
- " left join fetch cat.kittens]]>"
+"<![CDATA[from Cat as cat\n"
+" inner join fetch cat.mate\n"
+" left join fetch cat.kittens]]>"
msgstr ""
- "<![CDATA[from Cat as cat \n"
- " inner join fetch cat.mate\n"
- " left join fetch cat.kittens]]>"
-#: index.docbook:147
-msgid "A fetch join does not usually need to assign an alias, because the associated objects should not be used in the <literal>where</literal> clause (or any other clause). Also, the associated objects are not returned directly in the query results. Instead, they may be accessed via the parent object. The only reason we might need an alias is if we are recursively join fetching a further collection:"
-msgstr "Usualmente a un fetch join no se necesita asignársele un alias, porque los objetos asociados no deben ser usados en la cláusula <literal>where</literal> (ni en cualquier otra cláusula). Además, los objetos asociados no son devueltos directamente en los resultados de consulta. En cambio, pueden ser accedidos vía el objeto padre. La única razón por la que necesitaríamos un alias es estamos uniendo recursivamente otra colección:"
+#. Tag: para
+#: query_hql.xml:147
+#, no-c-format
+msgid ""
+"A fetch join does not usually need to assign an alias, because the "
+"associated objects should not be used in the <literal>where</literal> clause "
+"(or any other clause). Also, the associated objects are not returned "
+"directly in the query results. Instead, they may be accessed via the parent "
+"object. The only reason we might need an alias is if we are recursively join "
+"fetching a further collection:"
+msgstr ""
+"Usualmente a un fetch join no se necesita asignársele un alias, porque los "
+"objetos asociados no deben ser usados en la cláusula <literal>where</"
+"literal> (ni en cualquier otra cláusula). Además, los objetos asociados no "
+"son devueltos directamente en los resultados de consulta. En cambio, pueden "
+"ser accedidos vía el objeto padre. La única razón por la que necesitaríamos "
+"un alias es estamos uniendo recursivamente otra colección:"
-#: index.docbook:155
+#. Tag: programlisting
+#: query_hql.xml:155
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as cat\n"
- " inner join fetch cat.mate\n"
- " left join fetch cat.kittens child\n"
- " left join fetch child.kittens]]>"
+"<![CDATA[from Cat as cat\n"
+" inner join fetch cat.mate\n"
+" left join fetch cat.kittens child\n"
+" left join fetch child.kittens]]>"
msgstr ""
- "<![CDATA[from Cat as cat \n"
- " inner join fetch cat.mate\n"
- " left join fetch cat.kittens child\n"
- " left join fetch child.kittens]]>"
-#: index.docbook:157
-msgid "Note that the <literal>fetch</literal> construct may not be used in queries called using <literal>iterate()</literal> (though <literal>scroll()</literal> can be used). Nor should <literal>fetch</literal> be used together with <literal>setMaxResults()</literal> or <literal>setFirstResult()</literal> as these operations are based on the result rows, which usually contain duplicates for eager collection fetching, hence, the number of rows is not what you'd expect. Nor may <literal>fetch</literal> be used together with an ad hoc <literal>with</literal> condition. It is possible to create a cartesian product by join fetching more than one collection in a query, so take care in this case. Join fetching multiple collection roles also sometimes gives unexpected results for bag mappings, so be careful about how you formulate your queries in this case. Finally, note that <literal>full join fetch</literal> and <literal>right join fetch</literal> are not meaningful."
-msgstr "Nota que la construcción <literal>fetch</literal> no puede usarse en consultas llamadas usando <literal>scroll()</literal> o <literal>iterate()</literal>. Ni debe usarse <literal>fetch</literal> junto con <literal>setMaxResults()</literal> o <literal>setFirstResult()</literal>. Tampoco puede usarse <literal>fetch</literal> junto a una condición <literal>with</literal> ad hoc. Es posible crear un producto cartesiano trayendo por join más de una colección en una colección, así que ten cuidado en este caso. Traer por join múltiples roles de colección también da a veces resultados inesperados para mapeos de bag, así que sé cuidadoso sobre cómo formular tus consultas en este caso. Finalmente, nota que <literal>full join fetch</literal> y <literal>right join fetch</literal> no son significativos."
+#. Tag: para
+#: query_hql.xml:157
+#, no-c-format
+msgid ""
+"Note that the <literal>fetch</literal> construct may not be used in queries "
+"called using <literal>iterate()</literal> (though <literal>scroll()</"
+"literal> can be used). Nor should <literal>fetch</literal> be used together "
+"with <literal>setMaxResults()</literal> or <literal>setFirstResult()</"
+"literal> as these operations are based on the result rows, which usually "
+"contain duplicates for eager collection fetching, hence, the number of rows "
+"is not what you'd expect. Nor may <literal>fetch</literal> be used together "
+"with an ad hoc <literal>with</literal> condition. It is possible to create a "
+"cartesian product by join fetching more than one collection in a query, so "
+"take care in this case. Join fetching multiple collection roles also "
+"sometimes gives unexpected results for bag mappings, so be careful about how "
+"you formulate your queries in this case. Finally, note that <literal>full "
+"join fetch</literal> and <literal>right join fetch</literal> are not "
+"meaningful."
+msgstr ""
+"Nota que la construcción <literal>fetch</literal> no puede usarse en "
+"consultas llamadas usando <literal>scroll()</literal> o <literal>iterate()</"
+"literal>. Ni debe usarse <literal>fetch</literal> junto con "
+"<literal>setMaxResults()</literal> o <literal>setFirstResult()</literal>. "
+"Tampoco puede usarse <literal>fetch</literal> junto a una condición "
+"<literal>with</literal> ad hoc. Es posible crear un producto cartesiano "
+"trayendo por join más de una colección en una colección, así que ten cuidado "
+"en este caso. Traer por join múltiples roles de colección también da a veces "
+"resultados inesperados para mapeos de bag, así que sé cuidadoso sobre cómo "
+"formular tus consultas en este caso. Finalmente, nota que <literal>full join "
+"fetch</literal> y <literal>right join fetch</literal> no son significativos."
-#: index.docbook:172
-msgid "If you are using property-level lazy fetching (with bytecode instrumentation), it is possible to force Hibernate to fetch the lazy properties immediately (in the first query) using <literal>fetch all properties</literal>."
-msgstr "Si estás usando recuperación perezosa a nivel de propiedad (con instrumentación de bytecode), es posible forzar a Hibernate a traer las propiedades perezosas inmediatamente (en la primera consulta) usando <literal>fetch all properties</literal>."
+#. Tag: para
+#: query_hql.xml:172
+#, no-c-format
+msgid ""
+"If you are using property-level lazy fetching (with bytecode "
+"instrumentation), it is possible to force Hibernate to fetch the lazy "
+"properties immediately (in the first query) using <literal>fetch all "
+"properties</literal>."
+msgstr ""
+"Si estás usando recuperación perezosa a nivel de propiedad (con "
+"instrumentación de bytecode), es posible forzar a Hibernate a traer las "
+"propiedades perezosas inmediatamente (en la primera consulta) usando "
+"<literal>fetch all properties</literal>."
-#: index.docbook:178
+#. Tag: programlisting
+#: query_hql.xml:178
+#, no-c-format
msgid "<![CDATA[from Document fetch all properties order by name]]>"
-msgstr "<![CDATA[from Document fetch all properties order by name]]>"
+msgstr ""
-#: index.docbook:179
-msgid "<![CDATA[from Document doc fetch all properties where lower(doc.name) like '%cats%']]>"
-msgstr "<![CDATA[from Document doc fetch all properties where lower(doc.name) like '%cats%']]>"
+#. Tag: programlisting
+#: query_hql.xml:179
+#, no-c-format
+msgid ""
+"<![CDATA[from Document doc fetch all properties where lower(doc.name) like '%"
+"cats%']]>"
+msgstr ""
-#: index.docbook:184
+#. Tag: title
+#: query_hql.xml:184
+#, no-c-format
msgid "Forms of join syntax"
-msgstr "La cláusula select"
+msgstr "UNTRANSLATED!!! Forms of join syntax"
-#: index.docbook:186
-msgid "HQL supports two forms of association joining: <literal>implicit</literal> and <literal>explicit</literal>."
-msgstr "La cláusula <literal>select</literal> escoge qué objetos y propiedades devolver in el conjunto resultado de la consulta. Considera:"
+#. Tag: para
+#: query_hql.xml:186
+#, no-c-format
+msgid ""
+"HQL supports two forms of association joining: <literal>implicit</literal> "
+"and <literal>explicit</literal>."
+msgstr ""
+"HQL supports two forms of association joining: <literal>implicit</literal> "
+"and <literal>explicit</literal>."
-#: index.docbook:190
-msgid "The queries shown in the previous section all use the <literal>explicit</literal> form where the join keyword is explicitly used in the from clause. This is the recommended form."
+#. Tag: para
+#: query_hql.xml:190
+#, no-c-format
+msgid ""
+"The queries shown in the previous section all use the <literal>explicit</"
+"literal> form where the join keyword is explicitly used in the from clause. "
+"This is the recommended form."
msgstr ""
- "<![CDATA[select mate \n"
- "from Cat as cat \n"
- " inner join cat.mate as mate]]>"
+"The queries shown in the previous section all use the <literal>explicit</"
+"literal> form where the join keyword is explicitly used in the from clause. "
+"This is the recommended form."
-#: index.docbook:195
-msgid "The <literal>implicit</literal> form does not use the join keyword. Instead, the associations are \"dereferenced\" using dot-notation. <literal>implicit</literal> joins can appear in any of the HQL clauses. <literal>implicit</literal> join result in inner joins in the resulting SQL statement."
-msgstr "La consulta seleccionará <literal>mate</literal>s de otros <literal>Cat</literal>s. Realmente, puedes expresar esta consulta en un forma más compacta como:"
+#. Tag: para
+#: query_hql.xml:195
+#, no-c-format
+msgid ""
+"The <literal>implicit</literal> form does not use the join keyword. Instead, "
+"the associations are \"dereferenced\" using dot-notation. <literal>implicit</"
+"literal> joins can appear in any of the HQL clauses. <literal>implicit</"
+"literal> join result in inner joins in the resulting SQL statement."
+msgstr ""
+"The <literal>implicit</literal> form does not use the join keyword. Instead, "
+"the associations are \"dereferenced\" using dot-notation. <literal>implicit</"
+"literal> joins can appear in any of the HQL clauses. <literal>implicit</"
+"literal> join result in inner joins in the resulting SQL statement."
-#: index.docbook:202
+#. Tag: programlisting
+#: query_hql.xml:202
+#, no-c-format
msgid "<![CDATA[from Cat as cat where cat.mate.name like '%s%']]>"
-msgstr "<![CDATA[select cat.mate from Cat cat]]>"
+msgstr ""
-#: index.docbook:206
+#. Tag: title
+#: query_hql.xml:206
+#, no-c-format
msgid "Refering to identifier property"
-msgstr "Las consultas pueden devolver propiedades de cualquier tipo de valor incluyendo propiedades de tipo componente:"
+msgstr "Refering to identifier property"
-#: index.docbook:208
-msgid "There are, generally speaking, 2 ways to refer to an entity's identifier property:"
+#. Tag: para
+#: query_hql.xml:208
+#, no-c-format
+msgid ""
+"There are, generally speaking, 2 ways to refer to an entity's identifier "
+"property:"
msgstr ""
- "<![CDATA[select cat.name from DomesticCat cat\n"
- "where cat.name like 'fri%']]>"
+"There are, generally speaking, 2 ways to refer to an entity's identifier "
+"property:"
-#: index.docbook:213
-msgid "The special property (lowercase) <literal>id</literal> may be used to reference the identifier property of an entity <emphasis>provided that entity does not define a non-identifier property named id</emphasis>."
-msgstr "<![CDATA[select cust.name.firstName from Customer as cust]]>"
+#. Tag: para
+#: query_hql.xml:213
+#, no-c-format
+msgid ""
+"The special property (lowercase) <literal>id</literal> may be used to "
+"reference the identifier property of an entity <emphasis>provided that "
+"entity does not define a non-identifier property named id</emphasis>."
+msgstr ""
+"The special property (lowercase) <literal>id</literal> may be used to "
+"reference the identifier property of an entity <emphasis>provided that "
+"entity does not define a non-identifier property named id</emphasis>."
-#: index.docbook:220
-msgid "If the entity defines a named identifier property, you may use that property name."
-msgstr "Las consultas pueden devolver múltiples objetos y/o propiedades como un array de tipo <literal>Object[]</literal>,"
+#. Tag: para
+#: query_hql.xml:220
+#, no-c-format
+msgid ""
+"If the entity defines a named identifier property, you may use that property "
+"name."
+msgstr ""
+"If the entity defines a named identifier property, you may use that property "
+"name."
-#: index.docbook:226
-msgid "References to composite identifier properties follow the same naming rules. If the entity has a non-identifier property named id, the composite identifier property can only be referenced by its defined named; otherwise, the special <literal>id</literal> property can be used to rerference the identifier property."
+#. Tag: para
+#: query_hql.xml:226
+#, no-c-format
+msgid ""
+"References to composite identifier properties follow the same naming rules. "
+"If the entity has a non-identifier property named id, the composite "
+"identifier property can only be referenced by its defined named; otherwise, "
+"the special <literal>id</literal> property can be used to rerference the "
+"identifier property."
msgstr ""
- "<![CDATA[select mother, offspr, mate.name \n"
- "from DomesticCat as mother\n"
- " inner join mother.mate as mate\n"
- " left outer join mother.kittens as offspr]]>"
+"References to composite identifier properties follow the same naming rules. "
+"If the entity has a non-identifier property named id, the composite "
+"identifier property can only be referenced by its defined named; otherwise, "
+"the special <literal>id</literal> property can be used to rerference the "
+"identifier property."
-#: index.docbook:233
-msgid "Note: this has changed significantly starting in version 3.2.2. In previous versions, <literal>id</literal> <emphasis>always</emphasis> referred to the identifier property no matter what its actual name. A ramification of that decision was that non-identifier properties named <literal>id</literal> could never be referenced in Hibernate queries."
-msgstr "o como una <literal>List</literal>,"
+#. Tag: para
+#: query_hql.xml:233
+#, fuzzy, no-c-format
+msgid ""
+"Note: this has changed significantly starting in version 3.2.2. In previous "
+"versions, <literal>id</literal> <emphasis>always</emphasis> referred to the "
+"identifier property no matter what its actual name. A ramification of that "
+"decision was that non-identifier properties named <literal>id</literal> "
+"could never be referenced in Hibernate queries."
+msgstr ""
+"Note: this has changed significantly starting in version 3.2.2. In previous "
+"versions, <literal>id</literal><emphasis>always</emphasis> referred to the "
+"identifier property no matter what its actual name. A ramification of that "
+"decision was that non-identifier properties named <literal>id</literal> "
+"could never be referenced in Hibernate queries."
-#: index.docbook:242
+#. Tag: title
+#: query_hql.xml:242
+#, no-c-format
msgid "The select clause"
+msgstr "La cláusula select"
+
+#. Tag: para
+#: query_hql.xml:244
+#, no-c-format
+msgid ""
+"The <literal>select</literal> clause picks which objects and properties to "
+"return in the query result set. Consider:"
msgstr ""
- "<![CDATA[select new list(mother, offspr, mate.name)\n"
- "from DomesticCat as mother\n"
- " inner join mother.mate as mate\n"
- " left outer join mother.kittens as offspr]]>"
+"La cláusula <literal>select</literal> escoge qué objetos y propiedades "
+"devolver in el conjunto resultado de la consulta. Considera:"
-#: index.docbook:244
-msgid "The <literal>select</literal> clause picks which objects and properties to return in the query result set. Consider:"
-msgstr "o como un objeto real Java de tipo seguro,"
+#. Tag: programlisting
+#: query_hql.xml:249
+#, no-c-format
+msgid ""
+"<![CDATA[select mate\n"
+"from Cat as cat\n"
+" inner join cat.mate as mate]]>"
+msgstr ""
-#: index.docbook:249
+#. Tag: para
+#: query_hql.xml:251
+#, no-c-format
msgid ""
- "<![CDATA[select mate\n"
- "from Cat as cat\n"
- " inner join cat.mate as mate]]>"
+"The query will select <literal>mate</literal>s of other <literal>Cat</"
+"literal>s. Actually, you may express this query more compactly as:"
msgstr ""
- "<![CDATA[select new Family(mother, mate, offspr)\n"
- "from DomesticCat as mother\n"
- " join mother.mate as mate\n"
- " left join mother.kittens as offspr]]>"
+"La consulta seleccionará <literal>mate</literal>s de otros <literal>Cat</"
+"literal>s. Realmente, puedes expresar esta consulta en un forma más compacta "
+"como:"
-#: index.docbook:251
-msgid "The query will select <literal>mate</literal>s of other <literal>Cat</literal>s. Actually, you may express this query more compactly as:"
-msgstr "asumiendo que la clase <literal>Family</literal> tiene un constructor apropiado."
-
-#: index.docbook:256
+#. Tag: programlisting
+#: query_hql.xml:256
+#, no-c-format
msgid "<![CDATA[select cat.mate from Cat cat]]>"
-msgstr "Puedes asignar aliases para seleccionar expresiones usando <literal>as</literal>:"
+msgstr ""
-#: index.docbook:258
-msgid "Queries may return properties of any value type including properties of component type:"
+#. Tag: para
+#: query_hql.xml:258
+#, no-c-format
+msgid ""
+"Queries may return properties of any value type including properties of "
+"component type:"
msgstr ""
- "<![CDATA[select max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n\n"
- "from Cat cat]]>"
+"Las consultas pueden devolver propiedades de cualquier tipo de valor "
+"incluyendo propiedades de tipo componente:"
-#: index.docbook:262
+#. Tag: programlisting
+#: query_hql.xml:262
+#, no-c-format
msgid ""
- "<![CDATA[select cat.name from DomesticCat cat\n"
- "where cat.name like 'fri%']]>"
-msgstr "Esto es lo más útil cuando se usa junto con <literal>select new map</literal>:"
+"<![CDATA[select cat.name from DomesticCat cat\n"
+"where cat.name like 'fri%']]>"
+msgstr ""
-#: index.docbook:264
+#. Tag: programlisting
+#: query_hql.xml:264
+#, no-c-format
msgid "<![CDATA[select cust.name.firstName from Customer as cust]]>"
msgstr ""
- "<![CDATA[select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n )\n"
- "from Cat cat]]>"
-#: index.docbook:266
-msgid "Queries may return multiple objects and/or properties as an array of type <literal>Object[]</literal>,"
-msgstr "Esta consulta devuelve un <literal>Map</literal> de aliases a valores seleccionados."
+#. Tag: para
+#: query_hql.xml:266
+#, no-c-format
+msgid ""
+"Queries may return multiple objects and/or properties as an array of type "
+"<literal>Object[]</literal>,"
+msgstr ""
+"Las consultas pueden devolver múltiples objetos y/o propiedades como un "
+"array de tipo <literal>Object[]</literal>,"
-#: index.docbook:271
+#. Tag: programlisting
+#: query_hql.xml:271
+#, no-c-format
msgid ""
- "<![CDATA[select mother, offspr, mate.name\n"
- "from DomesticCat as mother\n"
- " inner join mother.mate as mate\n"
- " left outer join mother.kittens as offspr]]>"
-msgstr "Funciones de agregación"
+"<![CDATA[select mother, offspr, mate.name\n"
+"from DomesticCat as mother\n"
+" inner join mother.mate as mate\n"
+" left outer join mother.kittens as offspr]]>"
+msgstr ""
-#: index.docbook:273
+#. Tag: para
+#: query_hql.xml:273
+#, no-c-format
msgid "or as a <literal>List</literal>,"
-msgstr "Las consultas HQL pueden incluso devolver resultados de funciones de agregación sobre propiedades:"
+msgstr "o como una <literal>List</literal>,"
-#: index.docbook:277
+#. Tag: programlisting
+#: query_hql.xml:277
+#, no-c-format
msgid ""
- "<![CDATA[select new list(mother, offspr, mate.name)\n"
- "from DomesticCat as mother\n"
- " inner join mother.mate as mate\n"
- " left outer join mother.kittens as offspr]]>"
+"<![CDATA[select new list(mother, offspr, mate.name)\n"
+"from DomesticCat as mother\n"
+" inner join mother.mate as mate\n"
+" left outer join mother.kittens as offspr]]>"
msgstr ""
- "<![CDATA[select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat)\n"
- "from Cat cat]]>"
-#: index.docbook:279
+#. Tag: para
+#: query_hql.xml:279
+#, no-c-format
msgid "or as an actual typesafe Java object,"
-msgstr "Las funciones de agregación soportadas son"
+msgstr "o como un objeto real Java de tipo seguro,"
-#: index.docbook:283
+#. Tag: programlisting
+#: query_hql.xml:283
+#, no-c-format
msgid ""
- "<![CDATA[select new Family(mother, mate, offspr)\n"
- "from DomesticCat as mother\n"
- " join mother.mate as mate\n"
- " left join mother.kittens as offspr]]>"
-msgstr "avg(...), sum(...), min(...), max(...)"
+"<![CDATA[select new Family(mother, mate, offspr)\n"
+"from DomesticCat as mother\n"
+" join mother.mate as mate\n"
+" left join mother.kittens as offspr]]>"
+msgstr ""
-#: index.docbook:285
-msgid "assuming that the class <literal>Family</literal> has an appropriate constructor."
-msgstr "count(*)"
+#. Tag: para
+#: query_hql.xml:285
+#, no-c-format
+msgid ""
+"assuming that the class <literal>Family</literal> has an appropriate "
+"constructor."
+msgstr ""
+"asumiendo que la clase <literal>Family</literal> tiene un constructor "
+"apropiado."
-#: index.docbook:289
-msgid "You may assign aliases to selected expressions using <literal>as</literal>:"
-msgstr "count(...), count(distinct ...), count(all...)"
+#. Tag: para
+#: query_hql.xml:289
+#, no-c-format
+msgid ""
+"You may assign aliases to selected expressions using <literal>as</literal>:"
+msgstr ""
+"Puedes asignar aliases para seleccionar expresiones usando <literal>as</"
+"literal>:"
-#: index.docbook:293
+#. Tag: programlisting
+#: query_hql.xml:293
+#, no-c-format
msgid ""
- "<![CDATA[select max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n\n"
- "from Cat cat]]>"
-msgstr "Puedes usar operadores aritméticos, concatenación, y funciones SQL reconocidas en la cláusula select:"
+"<![CDATA[select max(bodyWeight) as max, min(bodyWeight) as min, count(*) as "
+"n\n"
+"from Cat cat]]>"
+msgstr ""
-#: index.docbook:295
-msgid "This is most useful when used together with <literal>select new map</literal>:"
+#. Tag: para
+#: query_hql.xml:295
+#, no-c-format
+msgid ""
+"This is most useful when used together with <literal>select new map</"
+"literal>:"
msgstr ""
- "<![CDATA[select cat.weight + sum(kitten.weight) \n"
- "from Cat cat \n"
- " join cat.kittens kitten\n"
- "group by cat.id, cat.weight]]>"
+"Esto es lo más útil cuando se usa junto con <literal>select new map</"
+"literal>:"
-#: index.docbook:299
+#. Tag: programlisting
+#: query_hql.xml:299
+#, no-c-format
msgid ""
- "<![CDATA[select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n )\n"
- "from Cat cat]]>"
-msgstr "<![CDATA[select firstName||' '||initial||' '||upper(lastName) from Person]]>"
+"<![CDATA[select new map( max(bodyWeight) as max, min(bodyWeight) as min, "
+"count(*) as n )\n"
+"from Cat cat]]>"
+msgstr ""
-#: index.docbook:301
-msgid "This query returns a <literal>Map</literal> from aliases to selected values."
-msgstr "Las palabras clave <literal>distinct</literal> y <literal>all</literal> pueden ser usadas y tienen las misma semántica que en SQL."
+#. Tag: para
+#: query_hql.xml:301
+#, no-c-format
+msgid ""
+"This query returns a <literal>Map</literal> from aliases to selected values."
+msgstr ""
+"Esta consulta devuelve un <literal>Map</literal> de aliases a valores "
+"seleccionados."
-#: index.docbook:308
+#. Tag: title
+#: query_hql.xml:308
+#, no-c-format
msgid "Aggregate functions"
+msgstr "Funciones de agregación"
+
+#. Tag: para
+#: query_hql.xml:310
+#, no-c-format
+msgid ""
+"HQL queries may even return the results of aggregate functions on properties:"
msgstr ""
- "<![CDATA[select distinct cat.name from Cat cat\n"
- "\n"
- "select count(distinct cat.name), count(cat) from Cat cat]]>"
+"Las consultas HQL pueden incluso devolver resultados de funciones de "
+"agregación sobre propiedades:"
-#: index.docbook:310
-msgid "HQL queries may even return the results of aggregate functions on properties:"
-msgstr "Consultas polimórficas"
-
-#: index.docbook:314
+#. Tag: programlisting
+#: query_hql.xml:314
+#, no-c-format
msgid ""
- "<![CDATA[select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat)\n"
- "from Cat cat]]>"
-msgstr "Una consulta como:"
+"<![CDATA[select avg(cat.weight), sum(cat.weight), max(cat.weight), count"
+"(cat)\n"
+"from Cat cat]]>"
+msgstr ""
-#: index.docbook:325
+#. Tag: para
+#: query_hql.xml:325
+#, no-c-format
msgid "The supported aggregate functions are"
-msgstr "<![CDATA[from Cat as cat]]>"
+msgstr "Las funciones de agregación soportadas son"
-#: index.docbook:332
+#. Tag: literal
+#: query_hql.xml:332
+#, no-c-format
msgid "avg(...), sum(...), min(...), max(...)"
-msgstr "devuelve instancias no sólo de <literal>Cat</literal>, sino también de subclases como <literal>DomesticCat</literal>. Las consultas de Hibernate pueden mencionar <emphasis>cualquier</emphasis> clase o interface Java en la cláusula <literal>from</literal>. La consulta devolverá instancias de todas las clases persistentes que extiendan esa clase o implementen la interface. La siguiente consulta devolvería todos los objetos persistentes."
+msgstr "avg(...), sum(...), min(...), max(...)"
-#: index.docbook:337
+#. Tag: literal
+#: query_hql.xml:337
+#, no-c-format
msgid "count(*)"
-msgstr "<![CDATA[from java.lang.Object o]]>"
+msgstr "count(*)"
-#: index.docbook:342
+#. Tag: literal
+#: query_hql.xml:342
+#, no-c-format
msgid "count(...), count(distinct ...), count(all...)"
-msgstr "La interface <literal>Named</literal> podría ser implementada por varias clases persistentes:"
+msgstr "count(...), count(distinct ...), count(all...)"
-#: index.docbook:347
-msgid "You may use arithmetic operators, concatenation, and recognized SQL functions in the select clause:"
-msgstr "<![CDATA[from Named n, Named m where n.name = m.name]]>"
+#. Tag: para
+#: query_hql.xml:347
+#, no-c-format
+msgid ""
+"You may use arithmetic operators, concatenation, and recognized SQL "
+"functions in the select clause:"
+msgstr ""
+"Puedes usar operadores aritméticos, concatenación, y funciones SQL "
+"reconocidas en la cláusula select:"
-#: index.docbook:352
+#. Tag: programlisting
+#: query_hql.xml:352
+#, no-c-format
msgid ""
- "<![CDATA[select cat.weight + sum(kitten.weight)\n"
- "from Cat cat\n"
- " join cat.kittens kitten\n"
- "group by cat.id, cat.weight]]>"
-msgstr "Nota que estas dos últimas consultas requerirán más de un <literal>SELECT</literal> SQL. Esto significa que la cláusula <literal>order by</literal> no ordenará correctamente todo el conjunto resultado. (Significa además que no puedes llamar estas consulta usando <literal>Query.scroll()</literal>.)"
+"<![CDATA[select cat.weight + sum(kitten.weight)\n"
+"from Cat cat\n"
+" join cat.kittens kitten\n"
+"group by cat.id, cat.weight]]>"
+msgstr ""
-#: index.docbook:354
-msgid "<![CDATA[select firstName||' '||initial||' '||upper(lastName) from Person]]>"
-msgstr "La cláusula where"
+#. Tag: programlisting
+#: query_hql.xml:354
+#, no-c-format
+msgid ""
+"<![CDATA[select firstName||' '||initial||' '||upper(lastName) from Person]]>"
+msgstr ""
-#: index.docbook:356
-msgid "The <literal>distinct</literal> and <literal>all</literal> keywords may be used and have the same semantics as in SQL."
-msgstr "La cláusula where te permite estrechar la lista de instancias devueltas. Si no existe ningún alias. puedes referirte a las propiedades por nombre:"
+#. Tag: para
+#: query_hql.xml:356
+#, no-c-format
+msgid ""
+"The <literal>distinct</literal> and <literal>all</literal> keywords may be "
+"used and have the same semantics as in SQL."
+msgstr ""
+"Las palabras clave <literal>distinct</literal> y <literal>all</literal> "
+"pueden ser usadas y tienen las misma semántica que en SQL."
-#: index.docbook:361
+#. Tag: programlisting
+#: query_hql.xml:361
+#, no-c-format
msgid ""
- "<![CDATA[select distinct cat.name from Cat cat\n"
- "\n"
- "select count(distinct cat.name), count(cat) from Cat cat]]>"
-msgstr "<![CDATA[from Cat where name='Fritz']]>"
+"<![CDATA[select distinct cat.name from Cat cat\n"
+"\n"
+"select count(distinct cat.name), count(cat) from Cat cat]]>"
+msgstr ""
-#: index.docbook:366
+#. Tag: title
+#: query_hql.xml:366
+#, no-c-format
msgid "Polymorphic queries"
-msgstr "Si existe un alias, usan un nombre cualificado de propiedad:"
+msgstr "Consultas polimórficas"
-#: index.docbook:368
+#. Tag: para
+#: query_hql.xml:368
+#, no-c-format
msgid "A query like:"
-msgstr "<![CDATA[from Cat as cat where cat.name='Fritz']]>"
+msgstr "Una consulta como:"
-#: index.docbook:374
-msgid "returns instances not only of <literal>Cat</literal>, but also of subclasses like <literal>DomesticCat</literal>. Hibernate queries may name <emphasis>any</emphasis> Java class or interface in the <literal>from</literal> clause. The query will return instances of all persistent classes that extend that class or implement the interface. The following query would return all persistent objects:"
+#. Tag: para
+#: query_hql.xml:374
+#, no-c-format
+msgid ""
+"returns instances not only of <literal>Cat</literal>, but also of subclasses "
+"like <literal>DomesticCat</literal>. Hibernate queries may name "
+"<emphasis>any</emphasis> Java class or interface in the <literal>from</"
+"literal> clause. The query will return instances of all persistent classes "
+"that extend that class or implement the interface. The following query would "
+"return all persistent objects:"
msgstr ""
- "<![CDATA[select foo \n"
- "from Foo foo, Bar bar\n"
- "where foo.startDate = bar.date]]>"
+"devuelve instancias no sólo de <literal>Cat</literal>, sino también de "
+"subclases como <literal>DomesticCat</literal>. Las consultas de Hibernate "
+"pueden mencionar <emphasis>cualquier</emphasis> clase o interface Java en la "
+"cláusula <literal>from</literal>. La consulta devolverá instancias de todas "
+"las clases persistentes que extiendan esa clase o implementen la interface. "
+"La siguiente consulta devolvería todos los objetos persistentes."
-#: index.docbook:382
+#. Tag: programlisting
+#: query_hql.xml:382
+#, no-c-format
msgid "<![CDATA[from java.lang.Object o]]>"
-msgstr "devolverá todas las instancias de <literal>Foo</literal> para las cuales exista una instancia de <literal>bar</literal> con una propiedad <literal>date</literal> igual a la propiedad <literal>startDate</literal> del <literal>Foo</literal>. Las expresiones de ruta compuestas hacen la cláusula <literal>where</literal> extremadamente potente. Considera:"
+msgstr ""
-#: index.docbook:384
-msgid "The interface <literal>Named</literal> might be implemented by various persistent classes:"
-msgstr "<![CDATA[from Cat cat where cat.mate.name is not null]]>"
+#. Tag: para
+#: query_hql.xml:384
+#, no-c-format
+msgid ""
+"The interface <literal>Named</literal> might be implemented by various "
+"persistent classes:"
+msgstr ""
+"La interface <literal>Named</literal> podría ser implementada por varias "
+"clases persistentes:"
-#: index.docbook:389
+#. Tag: programlisting
+#: query_hql.xml:389
+#, no-c-format
msgid "<![CDATA[from Named n, Named m where n.name = m.name]]>"
-msgstr "Esta consulta se traduce en una consulta SQL con una unión de tabla (interna). Si fueses a escribir algo como"
+msgstr ""
-#: index.docbook:391
-msgid "Note that these last two queries will require more than one SQL <literal>SELECT</literal>. This means that the <literal>order by</literal> clause does not correctly order the whole result set. (It also means you can't call these queries using <literal>Query.scroll()</literal>.)"
+#. Tag: para
+#: query_hql.xml:391
+#, no-c-format
+msgid ""
+"Note that these last two queries will require more than one SQL "
+"<literal>SELECT</literal>. This means that the <literal>order by</literal> "
+"clause does not correctly order the whole result set. (It also means you "
+"can't call these queries using <literal>Query.scroll()</literal>.)"
msgstr ""
- "<![CDATA[from Foo foo \n"
- "where foo.bar.baz.customer.address.city is not null]]>"
+"Nota que estas dos últimas consultas requerirán más de un <literal>SELECT</"
+"literal> SQL. Esto significa que la cláusula <literal>order by</literal> no "
+"ordenará correctamente todo el conjunto resultado. (Significa además que no "
+"puedes llamar estas consulta usando <literal>Query.scroll()</literal>.)"
-#: index.docbook:400
+#. Tag: title
+#: query_hql.xml:400
+#, no-c-format
msgid "The where clause"
-msgstr "terminarías con una consulta que requeriría cuatro uniones de tablas en SQL."
+msgstr "La cláusula where"
-#: index.docbook:402
-msgid "The <literal>where</literal> clause allows you to narrow the list of instances returned. If no alias exists, you may refer to properties by name:"
-msgstr "El operador <literal>=</literal> puede ser usado para comparar no sólo propiedades, sino también instancias:"
+#. Tag: para
+#: query_hql.xml:402
+#, no-c-format
+msgid ""
+"The <literal>where</literal> clause allows you to narrow the list of "
+"instances returned. If no alias exists, you may refer to properties by name:"
+msgstr ""
+"La cláusula where te permite estrechar la lista de instancias devueltas. Si "
+"no existe ningún alias. puedes referirte a las propiedades por nombre:"
-#: index.docbook:407
+#. Tag: programlisting
+#: query_hql.xml:407
+#, no-c-format
msgid "<![CDATA[from Cat where name='Fritz']]>"
-msgstr "<![CDATA[from Cat cat, Cat rival where cat.mate = rival.mate]]>"
+msgstr ""
-#: index.docbook:409
+#. Tag: para
+#: query_hql.xml:409
+#, no-c-format
msgid "If there is an alias, use a qualified property name:"
-msgstr ""
- "<![CDATA[select cat, mate \n"
- "from Cat cat, Cat mate\n"
- "where cat.mate = mate]]>"
+msgstr "Si existe un alias, usan un nombre cualificado de propiedad:"
-#: index.docbook:413
+#. Tag: programlisting
+#: query_hql.xml:413
+#, no-c-format
msgid "<![CDATA[from Cat as cat where cat.name='Fritz']]>"
-msgstr "La propiedad especial (en minúsculas) <literal>id</literal> puede ser usada para referenciar el identificador único de un objeto. (También puedes usar su nombre de propiedad.)"
+msgstr ""
-#: index.docbook:415
+#. Tag: para
+#: query_hql.xml:415
+#, no-c-format
msgid "returns instances of <literal>Cat</literal> named 'Fritz'."
+msgstr "devuelve las instancias de <literal>Cat</literal> llamadas 'Fritz'."
+
+#. Tag: programlisting
+#: query_hql.xml:419
+#, no-c-format
+msgid ""
+"<![CDATA[select foo\n"
+"from Foo foo, Bar bar\n"
+"where foo.startDate = bar.date]]>"
msgstr ""
- "<![CDATA[from Cat as cat where cat.id = 123\n"
- "\n"
- "from Cat as cat where cat.mate.id = 69]]>"
-#: index.docbook:419
+#. Tag: para
+#: query_hql.xml:421
+#, no-c-format
msgid ""
- "<![CDATA[select foo\n"
- "from Foo foo, Bar bar\n"
- "where foo.startDate = bar.date]]>"
-msgstr "La segunda consulta es eficiente. ¡No se requiere ninguna unión de tablas!"
+"will return all instances of <literal>Foo</literal> for which there exists "
+"an instance of <literal>bar</literal> with a <literal>date</literal> "
+"property equal to the <literal>startDate</literal> property of the "
+"<literal>Foo</literal>. Compound path expressions make the <literal>where</"
+"literal> clause extremely powerful. Consider:"
+msgstr ""
+"devolverá todas las instancias de <literal>Foo</literal> para las cuales "
+"exista una instancia de <literal>bar</literal> con una propiedad "
+"<literal>date</literal> igual a la propiedad <literal>startDate</literal> "
+"del <literal>Foo</literal>. Las expresiones de ruta compuestas hacen la "
+"cláusula <literal>where</literal> extremadamente potente. Considera:"
-#: index.docbook:421
-msgid "will return all instances of <literal>Foo</literal> for which there exists an instance of <literal>bar</literal> with a <literal>date</literal> property equal to the <literal>startDate</literal> property of the <literal>Foo</literal>. Compound path expressions make the <literal>where</literal> clause extremely powerful. Consider:"
-msgstr "También pueden ser usadas las propiedades de identificadores compuestos. Supón que <literal>Person</literal> tiene un identificador compuesto consistente en <literal>country</literal> y <literal>medicareNumber</literal>."
-
-#: index.docbook:430
+#. Tag: programlisting
+#: query_hql.xml:430
+#, no-c-format
msgid "<![CDATA[from Cat cat where cat.mate.name is not null]]>"
msgstr ""
- "<![CDATA[from bank.Person person\n"
- "where person.id.country = 'AU' \n"
- " and person.id.medicareNumber = 123456]]>"
-#: index.docbook:432
-msgid "This query translates to an SQL query with a table (inner) join. If you were to write something like"
+#. Tag: para
+#: query_hql.xml:432
+#, no-c-format
+msgid ""
+"This query translates to an SQL query with a table (inner) join. If you were "
+"to write something like"
msgstr ""
- "<![CDATA[from bank.Account account\n"
- "where account.owner.id.country = 'AU' \n"
- " and account.owner.id.medicareNumber = 123456]]>"
+"Esta consulta se traduce en una consulta SQL con una unión de tabla "
+"(interna). Si fueses a escribir algo como"
-#: index.docbook:437
+#. Tag: programlisting
+#: query_hql.xml:437
+#, no-c-format
msgid ""
- "<![CDATA[from Foo foo\n"
- "where foo.bar.baz.customer.address.city is not null]]>"
-msgstr "Una vez más, la segunda consulta no requiere ninguna unión de tablas."
+"<![CDATA[from Foo foo\n"
+"where foo.bar.baz.customer.address.city is not null]]>"
+msgstr ""
-#: index.docbook:439
-msgid "you would end up with a query that would require four table joins in SQL."
-msgstr "Asimismo, la propiedad especial <literal>class</literal> acccede al valor discriminador de una instancia en el caso de persistencia polimórfica. Un nombre de clase Java embebido en la cláusula where será traducido a su valor discriminador."
+#. Tag: para
+#: query_hql.xml:439
+#, no-c-format
+msgid ""
+"you would end up with a query that would require four table joins in SQL."
+msgstr ""
+"terminarías con una consulta que requeriría cuatro uniones de tablas en SQL."
-#: index.docbook:443
-msgid "The <literal>=</literal> operator may be used to compare not only properties, but also instances:"
-msgstr "<![CDATA[from Cat cat where cat.class = DomesticCat]]>"
+#. Tag: para
+#: query_hql.xml:443
+#, no-c-format
+msgid ""
+"The <literal>=</literal> operator may be used to compare not only "
+"properties, but also instances:"
+msgstr ""
+"El operador <literal>=</literal> puede ser usado para comparar no sólo "
+"propiedades, sino también instancias:"
-#: index.docbook:448
+#. Tag: programlisting
+#: query_hql.xml:448
+#, no-c-format
msgid "<![CDATA[from Cat cat, Cat rival where cat.mate = rival.mate]]>"
-msgstr "Puedes también especificar propiedades de componentes o tipos compuestos de usuario (y de componentes de componentes, etc). Nunca intentes usar una expresión de ruta que termine en una propiedad de tipo componente (al contrario de una propiedad de un componente). Por ejemplo, si <literal>store.owner</literal> es una entidad con un componente <literal>address</literal>"
+msgstr ""
-#: index.docbook:450
+#. Tag: programlisting
+#: query_hql.xml:450
+#, no-c-format
msgid ""
- "<![CDATA[select cat, mate\n"
- "from Cat cat, Cat mate\n"
- "where cat.mate = mate]]>"
+"<![CDATA[select cat, mate\n"
+"from Cat cat, Cat mate\n"
+"where cat.mate = mate]]>"
msgstr ""
- "<![CDATA[store.owner.address.city // okay\n"
- "store.owner.address // error!]]>"
-#: index.docbook:452
-msgid "The special property (lowercase) <literal>id</literal> may be used to reference the unique identifier of an object. See <xref linkend=\"queryhql-identifier-property\"/> for more information."
-msgstr "Un tipo \"any\" tiene las propiedades especiales <literal>id</literal> y <literal>class</literal>, permiténdonos expresar un join en la siguiente forma (donde <literal>AuditLog.item</literal> es una propiedad mapeada con <literal><any></literal>)."
+#. Tag: para
+#: query_hql.xml:452
+#, no-c-format
+msgid ""
+"The special property (lowercase) <literal>id</literal> may be used to "
+"reference the unique identifier of an object. See <xref linkend=\"queryhql-"
+"identifier-property\"/> for more information."
+msgstr ""
+"La propiedad especial (en minúsculas) <literal>id</literal> puede ser usada "
+"para referenciar el identificador único de un objeto. (También puedes usar "
+"su nombre de propiedad.)"
-#: index.docbook:458
+#. Tag: programlisting
+#: query_hql.xml:458
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as cat where cat.id = 123\n"
- "\n"
- "from Cat as cat where cat.mate.id = 69]]>"
+"<![CDATA[from Cat as cat where cat.id = 123\n"
+"\n"
+"from Cat as cat where cat.mate.id = 69]]>"
msgstr ""
- "<![CDATA[from AuditLog log, Payment payment \n"
- "where log.item.class = 'Payment' and log.item.id = payment.id]]>"
-#: index.docbook:460
+#. Tag: para
+#: query_hql.xml:460
+#, no-c-format
msgid "The second query is efficient. No table join is required!"
-msgstr "Nota que <literal>log.item.class</literal> y <literal>payment.class</literal> harían referencia a los valores de columnas de base de datos completamente diferentes en la consulta anterior."
+msgstr ""
+"La segunda consulta es eficiente. ¡No se requiere ninguna unión de tablas!"
-#: index.docbook:464
-msgid "Properties of composite identifiers may also be used. Suppose <literal>Person</literal> has a composite identifier consisting of <literal>country</literal> and <literal>medicareNumber</literal>. Again, see <xref linkend=\"queryhql-identifier-property\"/> for more information regarding referencing identifier properties."
-msgstr "Expresiones"
+#. Tag: para
+#: query_hql.xml:464
+#, no-c-format
+msgid ""
+"Properties of composite identifiers may also be used. Suppose "
+"<literal>Person</literal> has a composite identifier consisting of "
+"<literal>country</literal> and <literal>medicareNumber</literal>. Again, see "
+"<xref linkend=\"queryhql-identifier-property\"/> for more information "
+"regarding referencing identifier properties."
+msgstr ""
+"También pueden ser usadas las propiedades de identificadores compuestos. "
+"Supón que <literal>Person</literal> tiene un identificador compuesto "
+"consistente en <literal>country</literal> y <literal>medicareNumber</"
+"literal>."
-#: index.docbook:471
+#. Tag: programlisting
+#: query_hql.xml:471
+#, no-c-format
msgid ""
- "<![CDATA[from bank.Person person\n"
- "where person.id.country = 'AU'\n"
- " and person.id.medicareNumber = 123456]]>"
-msgstr "Las expresiones permitidas en la cláusula <literal>where</literal> incluyen la mayoría del tipo de cosas que podrías escribir en SQL:"
+"<![CDATA[from bank.Person person\n"
+"where person.id.country = 'AU'\n"
+" and person.id.medicareNumber = 123456]]>"
+msgstr ""
-#: index.docbook:473
+#. Tag: programlisting
+#: query_hql.xml:473
+#, no-c-format
msgid ""
- "<![CDATA[from bank.Account account\n"
- "where account.owner.id.country = 'AU'\n"
- " and account.owner.id.medicareNumber = 123456]]>"
-msgstr "operadores matemáticos <literal>+, -, *, /</literal>"
+"<![CDATA[from bank.Account account\n"
+"where account.owner.id.country = 'AU'\n"
+" and account.owner.id.medicareNumber = 123456]]>"
+msgstr ""
-#: index.docbook:475
+#. Tag: para
+#: query_hql.xml:475
+#, no-c-format
msgid "Once again, the second query requires no table join."
-msgstr "operadores de comparación binarios <literal>=, >=, <=, <>, !=, like</literal>"
+msgstr "Una vez más, la segunda consulta no requiere ninguna unión de tablas."
-#: index.docbook:479
-msgid "Likewise, the special property <literal>class</literal> accesses the discriminator value of an instance in the case of polymorphic persistence. A Java class name embedded in the where clause will be translated to its discriminator value."
-msgstr "operadores lógicos <literal>and, or, not</literal>"
+#. Tag: para
+#: query_hql.xml:479
+#, no-c-format
+msgid ""
+"Likewise, the special property <literal>class</literal> accesses the "
+"discriminator value of an instance in the case of polymorphic persistence. A "
+"Java class name embedded in the where clause will be translated to its "
+"discriminator value."
+msgstr ""
+"Asimismo, la propiedad especial <literal>class</literal> acccede al valor "
+"discriminador de una instancia en el caso de persistencia polimórfica. Un "
+"nombre de clase Java embebido en la cláusula where será traducido a su valor "
+"discriminador."
-#: index.docbook:485
+#. Tag: programlisting
+#: query_hql.xml:485
+#, no-c-format
msgid "<![CDATA[from Cat cat where cat.class = DomesticCat]]>"
-msgstr "Paréntesis <literal>( )</literal>, indicando agrupación"
+msgstr ""
-#: index.docbook:487
-msgid "You may also use components or composite user types, or properties of said component types. See <xref linkend=\"queryhql-coomponents\"/> for more details."
-msgstr "<literal>in</literal>, <literal>not in</literal>, <literal>between</literal>, <literal>is null</literal>, <literal>is not null</literal>, <literal>is empty</literal>, <literal>is not empty</literal>, <literal>member of</literal> y <literal>not member of</literal>"
+#. Tag: para
+#: query_hql.xml:487
+#, no-c-format
+msgid ""
+"You may also use components or composite user types, or properties of said "
+"component types. See <xref linkend=\"queryhql-components\"/> for more "
+"details."
+msgstr ""
+"Puedes también especificar propiedades de componentes o tipos compuestos de "
+"usuario (y de componentes de componentes, etc). Nunca intentes usar una "
+"expresión de ruta que termine en una propiedad de tipo componente (al "
+"contrario de una propiedad de un componente). Por ejemplo, si <literal>store."
+"owner</literal> es una entidad con un componente <literal>address</literal>"
-#: index.docbook:492
-msgid "An \"any\" type has the special properties <literal>id</literal> and <literal>class</literal>, allowing us to express a join in the following way (where <literal>AuditLog.item</literal> is a property mapped with <literal><any></literal>)."
-msgstr "Caso \"simple\", <literal>case ... when ... then ... else ... end</literal>, y caso \"buscado\", <literal>case when ... then ... else ... end</literal>"
+#. Tag: para
+#: query_hql.xml:492
+#, no-c-format
+msgid ""
+"An \"any\" type has the special properties <literal>id</literal> and "
+"<literal>class</literal>, allowing us to express a join in the following way "
+"(where <literal>AuditLog.item</literal> is a property mapped with "
+"<literal><any></literal>)."
+msgstr ""
+"Un tipo \"any\" tiene las propiedades especiales <literal>id</literal> y "
+"<literal>class</literal>, permiténdonos expresar un join en la siguiente "
+"forma (donde <literal>AuditLog.item</literal> es una propiedad mapeada con "
+"<literal><any></literal>)."
-#: index.docbook:498
+#. Tag: programlisting
+#: query_hql.xml:498
+#, no-c-format
msgid ""
- "<![CDATA[from AuditLog log, Payment payment\n"
- "where log.item.class = 'Payment' and log.item.id = payment.id]]>"
-msgstr "concatenación de cadenas <literal>...||...</literal> o <literal>concat(...,...)</literal>"
+"<![CDATA[from AuditLog log, Payment payment\n"
+"where log.item.class = 'Payment' and log.item.id = payment.id]]>"
+msgstr ""
-#: index.docbook:500
-msgid "Notice that <literal>log.item.class</literal> and <literal>payment.class</literal> would refer to the values of completely different database columns in the above query."
-msgstr "<literal>current_date()</literal>, <literal>current_time()</literal>, <literal>current_timestamp()</literal>"
+#. Tag: para
+#: query_hql.xml:500
+#, no-c-format
+msgid ""
+"Notice that <literal>log.item.class</literal> and <literal>payment.class</"
+"literal> would refer to the values of completely different database columns "
+"in the above query."
+msgstr ""
+"Nota que <literal>log.item.class</literal> y <literal>payment.class</"
+"literal> harían referencia a los valores de columnas de base de datos "
+"completamente diferentes en la consulta anterior."
-#: index.docbook:508
+#. Tag: title
+#: query_hql.xml:508
+#, no-c-format
msgid "Expressions"
-msgstr "<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, <literal>year(...)</literal>,"
+msgstr "Expresiones"
-#: index.docbook:510
-msgid "Expressions allowed in the <literal>where</literal> clause include most of the kind of things you could write in SQL:"
-msgstr "Cualquier función u operador definido por EJB-QL 3.0: <literal>substring(), trim(), lower(), upper(), length(), locate(), abs(), sqrt(), bit_length(), mod()</literal>"
+#. Tag: para
+#: query_hql.xml:510
+#, no-c-format
+msgid ""
+"Expressions allowed in the <literal>where</literal> clause include most of "
+"the kind of things you could write in SQL:"
+msgstr ""
+"Las expresiones permitidas en la cláusula <literal>where</literal> incluyen "
+"la mayoría del tipo de cosas que podrías escribir en SQL:"
-#: index.docbook:517
+#. Tag: para
+#: query_hql.xml:517
+#, no-c-format
msgid "mathematical operators <literal>+, -, *, /</literal>"
-msgstr "<literal>coalesce()</literal> y <literal>nullif()</literal>"
+msgstr "operadores matemáticos <literal>+, -, *, /</literal>"
-#: index.docbook:522
-msgid "binary comparison operators <literal>=, >=, <=, <>, !=, like</literal>"
-msgstr "<literal>str()</literal> para convertir valores numéricos o temporales a una cadena legible."
+#. Tag: para
+#: query_hql.xml:522
+#, no-c-format
+msgid ""
+"binary comparison operators <literal>=, >=, <=, <>, !=, like</"
+"literal>"
+msgstr ""
+"operadores de comparación binarios <literal>=, >=, <=, <>, !=, "
+"like</literal>"
-#: index.docbook:527
+#. Tag: para
+#: query_hql.xml:527
+#, no-c-format
msgid "logical operations <literal>and, or, not</literal>"
-msgstr "<literal>cast(... as ...)</literal>, donde el segundo argumento es el nombre de un tipo Hibernate , y <literal>extract(... from ...)</literal> si <literal>cast()</literal> y <literal>extract()</literal> fuesen soportados por la base de datos subyacente."
+msgstr "operadores lógicos <literal>and, or, not</literal>"
-#: index.docbook:532
+#. Tag: para
+#: query_hql.xml:532
+#, no-c-format
msgid "Parentheses <literal>( )</literal>, indicating grouping"
-msgstr "la función <literal>index()</literal> de HQL, que se aplica a alias de una colección indexada unida."
+msgstr "Paréntesis <literal>( )</literal>, indicando agrupación"
-#: index.docbook:537
-msgid "<literal>in</literal>, <literal>not in</literal>, <literal>between</literal>, <literal>is null</literal>, <literal>is not null</literal>, <literal>is empty</literal>, <literal>is not empty</literal>, <literal>member of</literal> and <literal>not member of</literal>"
-msgstr "funciones de HQL que tomen expresiones de ruta valuadas en colecciones: <literal>size(), minelement(), maxelement(), minindex(), maxindex()</literal>, junto a las funciones especiales <literal>elements()</literal> and <literal>indices</literal> que pueden ser cuantificadas usando <literal>some, all, exists, any, in</literal>."
+#. Tag: para
+#: query_hql.xml:537
+#, no-c-format
+msgid ""
+"<literal>in</literal>, <literal>not in</literal>, <literal>between</"
+"literal>, <literal>is null</literal>, <literal>is not null</literal>, "
+"<literal>is empty</literal>, <literal>is not empty</literal>, "
+"<literal>member of</literal> and <literal>not member of</literal>"
+msgstr ""
+"<literal>in</literal>, <literal>not in</literal>, <literal>between</"
+"literal>, <literal>is null</literal>, <literal>is not null</literal>, "
+"<literal>is empty</literal>, <literal>is not empty</literal>, "
+"<literal>member of</literal> y <literal>not member of</literal>"
-#: index.docbook:550
-msgid "\"Simple\" case, <literal>case ... when ... then ... else ... end</literal>, and \"searched\" case, <literal>case when ... then ... else ... end</literal>"
-msgstr "Cualquier función escalar SQL soportada por la base de datos como <literal>sign()</literal>, <literal>trunc()</literal>, <literal>rtrim()</literal>, <literal>sin()</literal>"
+#. Tag: para
+#: query_hql.xml:550
+#, no-c-format
+msgid ""
+"\"Simple\" case, <literal>case ... when ... then ... else ... end</literal>, "
+"and \"searched\" case, <literal>case when ... then ... else ... end</literal>"
+msgstr ""
+"Caso \"simple\", <literal>case ... when ... then ... else ... end</literal>, "
+"y caso \"buscado\", <literal>case when ... then ... else ... end</literal>"
-#: index.docbook:556
-msgid "string concatenation <literal>...||...</literal> or <literal>concat(...,...)</literal>"
-msgstr "parámetros posicionales JDBC <literal>?</literal>"
+#. Tag: para
+#: query_hql.xml:556
+#, no-c-format
+msgid ""
+"string concatenation <literal>...||...</literal> or <literal>concat(...,...)"
+"</literal>"
+msgstr ""
+"concatenación de cadenas <literal>...||...</literal> o <literal>concat"
+"(...,...)</literal>"
-#: index.docbook:561
-msgid "<literal>current_date()</literal>, <literal>current_time()</literal>, <literal>current_timestamp()</literal>"
-msgstr "parámetros con nombre <literal>:name</literal>, <literal>:start_date</literal>, <literal>:x1</literal>"
+#. Tag: para
+#: query_hql.xml:561
+#, no-c-format
+msgid ""
+"<literal>current_date()</literal>, <literal>current_time()</literal>, "
+"<literal>current_timestamp()</literal>"
+msgstr ""
+"<literal>current_date()</literal>, <literal>current_time()</literal>, "
+"<literal>current_timestamp()</literal>"
-#: index.docbook:567
-msgid "<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, <literal>year(...)</literal>,"
-msgstr "literales SQL <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
+#. Tag: para
+#: query_hql.xml:567
+#, no-c-format
+msgid ""
+"<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour"
+"(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, "
+"<literal>year(...)</literal>,"
+msgstr ""
+"<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour"
+"(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, "
+"<literal>year(...)</literal>,"
-#: index.docbook:574
-msgid "Any function or operator defined by EJB-QL 3.0: <literal>substring(), trim(), lower(), upper(), length(), locate(), abs(), sqrt(), bit_length(), mod()</literal>"
-msgstr "constantes Java <literal>public static final</literal> <literal>eg.Color.TABBY</literal>"
+#. Tag: para
+#: query_hql.xml:574
+#, no-c-format
+msgid ""
+"Any function or operator defined by EJB-QL 3.0: <literal>substring(), trim"
+"(), lower(), upper(), length(), locate(), abs(), sqrt(), bit_length(), mod()"
+"</literal>"
+msgstr ""
+"Cualquier función u operador definido por EJB-QL 3.0: <literal>substring(), "
+"trim(), lower(), upper(), length(), locate(), abs(), sqrt(), bit_length(), "
+"mod()</literal>"
-#: index.docbook:580
+#. Tag: para
+#: query_hql.xml:580
+#, no-c-format
msgid "<literal>coalesce()</literal> and <literal>nullif()</literal>"
-msgstr "<literal>in</literal> y <literal>between</literal> pueden usarse como sigue:"
+msgstr "<literal>coalesce()</literal> y <literal>nullif()</literal>"
-#: index.docbook:585
-msgid "<literal>str()</literal> for converting numeric or temporal values to a readable string"
-msgstr "<![CDATA[from DomesticCat cat where cat.name between 'A' and 'B']]>"
+#. Tag: para
+#: query_hql.xml:585
+#, no-c-format
+msgid ""
+"<literal>str()</literal> for converting numeric or temporal values to a "
+"readable string"
+msgstr ""
+"<literal>str()</literal> para convertir valores numéricos o temporales a una "
+"cadena legible."
-#: index.docbook:591
-msgid "<literal>cast(... as ...)</literal>, where the second argument is the name of a Hibernate type, and <literal>extract(... from ...)</literal> if ANSI <literal>cast()</literal> and <literal>extract()</literal> is supported by the underlying database"
-msgstr "<![CDATA[from DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )]]>"
+#. Tag: para
+#: query_hql.xml:591
+#, no-c-format
+msgid ""
+"<literal>cast(... as ...)</literal>, where the second argument is the name "
+"of a Hibernate type, and <literal>extract(... from ...)</literal> if ANSI "
+"<literal>cast()</literal> and <literal>extract()</literal> is supported by "
+"the underlying database"
+msgstr ""
+"<literal>cast(... as ...)</literal>, donde el segundo argumento es el nombre "
+"de un tipo Hibernate , y <literal>extract(... from ...)</literal> si "
+"<literal>cast()</literal> y <literal>extract()</literal> fuesen soportados "
+"por la base de datos subyacente."
-#: index.docbook:599
-msgid "the HQL <literal>index()</literal> function, that applies to aliases of a joined indexed collection"
-msgstr "y pueden escribirse las formas negadas"
+#. Tag: para
+#: query_hql.xml:599
+#, no-c-format
+msgid ""
+"the HQL <literal>index()</literal> function, that applies to aliases of a "
+"joined indexed collection"
+msgstr ""
+"la función <literal>index()</literal> de HQL, que se aplica a alias de una "
+"colección indexada unida."
-#: index.docbook:605
-msgid "HQL functions that take collection-valued path expressions: <literal>size(), minelement(), maxelement(), minindex(), maxindex()</literal>, along with the special <literal>elements()</literal> and <literal>indices</literal> functions which may be quantified using <literal>some, all, exists, any, in</literal>."
-msgstr "<![CDATA[from DomesticCat cat where cat.name not between 'A' and 'B']]>"
+#. Tag: para
+#: query_hql.xml:605
+#, no-c-format
+msgid ""
+"HQL functions that take collection-valued path expressions: <literal>size(), "
+"minelement(), maxelement(), minindex(), maxindex()</literal>, along with the "
+"special <literal>elements()</literal> and <literal>indices</literal> "
+"functions which may be quantified using <literal>some, all, exists, any, in</"
+"literal>."
+msgstr ""
+"funciones de HQL que tomen expresiones de ruta valuadas en colecciones: "
+"<literal>size(), minelement(), maxelement(), minindex(), maxindex()</"
+"literal>, junto a las funciones especiales <literal>elements()</literal> and "
+"<literal>indices</literal> que pueden ser cuantificadas usando "
+"<literal>some, all, exists, any, in</literal>."
-#: index.docbook:613
-msgid "Any database-supported SQL scalar function like <literal>sign()</literal>, <literal>trunc()</literal>, <literal>rtrim()</literal>, <literal>sin()</literal>"
-msgstr "<![CDATA[from DomesticCat cat where cat.name not in ( 'Foo', 'Bar', 'Baz' )]]>"
+#. Tag: para
+#: query_hql.xml:613
+#, no-c-format
+msgid ""
+"Any database-supported SQL scalar function like <literal>sign()</literal>, "
+"<literal>trunc()</literal>, <literal>rtrim()</literal>, <literal>sin()</"
+"literal>"
+msgstr ""
+"Cualquier función escalar SQL soportada por la base de datos como "
+"<literal>sign()</literal>, <literal>trunc()</literal>, <literal>rtrim()</"
+"literal>, <literal>sin()</literal>"
-#: index.docbook:619
+#. Tag: para
+#: query_hql.xml:619
+#, no-c-format
msgid "JDBC-style positional parameters <literal>?</literal>"
-msgstr "Asimismo, <literal>is null</literal> y <literal>is not null</literal> pueden ser usadas para comprobar valores nulos."
+msgstr "parámetros posicionales JDBC <literal>?</literal>"
-#: index.docbook:624
-msgid "named parameters <literal>:name</literal>, <literal>:start_date</literal>, <literal>:x1</literal>"
-msgstr "Los booleanos pueden ser fácilmente usados en expresiones declarando substituciones de consulta HQL en la configuración de Hibernate:"
+#. Tag: para
+#: query_hql.xml:624
+#, no-c-format
+msgid ""
+"named parameters <literal>:name</literal>, <literal>:start_date</literal>, "
+"<literal>:x1</literal>"
+msgstr ""
+"parámetros con nombre <literal>:name</literal>, <literal>:start_date</"
+"literal>, <literal>:x1</literal>"
-#: index.docbook:629
-msgid "SQL literals <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
-msgstr "<![CDATA[<property name=\"hibernate.query.substitutions\">true 1, false 0</property>]]>"
+#. Tag: para
+#: query_hql.xml:629
+#, no-c-format
+msgid ""
+"SQL literals <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E"
+"+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
+msgstr ""
+"literales SQL <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E"
+"+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
-#: index.docbook:635
-msgid "Java <literal>public static final</literal> constants <literal>eg.Color.TABBY</literal>"
-msgstr "Esto remplazará las palabras clave <literal>true</literal> y <literal>false</literal> con los literales <literal>1</literal> y <literal>0</literal> en el SQL traducido de este HQL:"
+#. Tag: para
+#: query_hql.xml:635
+#, no-c-format
+msgid ""
+"Java <literal>public static final</literal> constants <literal>eg.Color."
+"TABBY</literal>"
+msgstr ""
+"constantes Java <literal>public static final</literal><literal>eg.Color."
+"TABBY</literal>"
-#: index.docbook:641
-msgid "<literal>in</literal> and <literal>between</literal> may be used as follows:"
-msgstr "<![CDATA[from Cat cat where cat.alive = true]]>"
+#. Tag: para
+#: query_hql.xml:641
+#, no-c-format
+msgid ""
+"<literal>in</literal> and <literal>between</literal> may be used as follows:"
+msgstr ""
+"<literal>in</literal> y <literal>between</literal> pueden usarse como sigue:"
-#: index.docbook:645
+#. Tag: programlisting
+#: query_hql.xml:645
+#, no-c-format
msgid "<![CDATA[from DomesticCat cat where cat.name between 'A' and 'B']]>"
-msgstr "Puedes comprobar el tamaño de una colección con la propiedad especial <literal>size</literal>, o la función especial <literal>size()</literal>."
+msgstr ""
-#: index.docbook:647
-msgid "<![CDATA[from DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )]]>"
-msgstr "<![CDATA[from Cat cat where cat.kittens.size > 0]]>"
+#. Tag: programlisting
+#: query_hql.xml:647
+#, no-c-format
+msgid ""
+"<![CDATA[from DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )]]>"
+msgstr ""
-#: index.docbook:649
+#. Tag: para
+#: query_hql.xml:649
+#, no-c-format
msgid "and the negated forms may be written"
-msgstr "<![CDATA[from Cat cat where size(cat.kittens) > 0]]>"
+msgstr "y pueden escribirse las formas negadas"
-#: index.docbook:653
+#. Tag: programlisting
+#: query_hql.xml:653
+#, no-c-format
msgid "<![CDATA[from DomesticCat cat where cat.name not between 'A' and 'B']]>"
-msgstr "Para colecciones indexadas, puedes referirte a los índices máximo y mínimo usando las funciones <literal>minindex</literal> y <literal>maxindex</literal>. Similarmente, puedes referirte a los elementos máximo y mínimo de una colección de tipo básico usando las funciones <literal>minelement</literal> y <literal>maxelement</literal>."
+msgstr ""
-#: index.docbook:655
-msgid "<![CDATA[from DomesticCat cat where cat.name not in ( 'Foo', 'Bar', 'Baz' )]]>"
-msgstr "<![CDATA[from Calendar cal where maxelement(cal.holidays) > current_date]]>"
+#. Tag: programlisting
+#: query_hql.xml:655
+#, no-c-format
+msgid ""
+"<![CDATA[from DomesticCat cat where cat.name not in ( 'Foo', 'Bar', 'Baz' )]]"
+">"
+msgstr ""
-#: index.docbook:657
-msgid "Likewise, <literal>is null</literal> and <literal>is not null</literal> may be used to test for null values."
-msgstr "<![CDATA[from Order order where maxindex(order.items) > 100]]>"
+#. Tag: para
+#: query_hql.xml:657
+#, no-c-format
+msgid ""
+"Likewise, <literal>is null</literal> and <literal>is not null</literal> may "
+"be used to test for null values."
+msgstr ""
+"Asimismo, <literal>is null</literal> y <literal>is not null</literal> pueden "
+"ser usadas para comprobar valores nulos."
-#: index.docbook:662
-msgid "Booleans may be easily used in expressions by declaring HQL query substitutions in Hibernate configuration:"
-msgstr "<![CDATA[from Order order where minelement(order.items) > 10000]]>"
+#. Tag: para
+#: query_hql.xml:662
+#, no-c-format
+msgid ""
+"Booleans may be easily used in expressions by declaring HQL query "
+"substitutions in Hibernate configuration:"
+msgstr ""
+"Los booleanos pueden ser fácilmente usados en expresiones declarando "
+"substituciones de consulta HQL en la configuración de Hibernate:"
-#: index.docbook:667
-msgid "<![CDATA[<property name=\"hibernate.query.substitutions\">true 1, false 0</property>]]>"
-msgstr "Las funciones SQL <literal>any, some, all, exists, in</literal> están soportadas cuando se les pasa el conjunto de elementos o índices de una colección (funciones <literal>elements</literal> y <literal>indices</literal>) o el resultado de una subconsulta (ver debajo)."
+#. Tag: programlisting
+#: query_hql.xml:667
+#, no-c-format
+msgid ""
+"<![CDATA[<property name=\"hibernate.query.substitutions\">true 1, false 0</"
+"property>]]>"
+msgstr ""
-#: index.docbook:669
-msgid "This will replace the keywords <literal>true</literal> and <literal>false</literal> with the literals <literal>1</literal> and <literal>0</literal> in the translated SQL from this HQL:"
+#. Tag: para
+#: query_hql.xml:669
+#, no-c-format
+msgid ""
+"This will replace the keywords <literal>true</literal> and <literal>false</"
+"literal> with the literals <literal>1</literal> and <literal>0</literal> in "
+"the translated SQL from this HQL:"
msgstr ""
- "<![CDATA[select mother from Cat as mother, Cat as kit\n"
- "where kit in elements(foo.kittens)]]>"
+"Esto remplazará las palabras clave <literal>true</literal> y <literal>false</"
+"literal> con los literales <literal>1</literal> y <literal>0</literal> en el "
+"SQL traducido de este HQL:"
-#: index.docbook:674
+#. Tag: programlisting
+#: query_hql.xml:674
+#, no-c-format
msgid "<![CDATA[from Cat cat where cat.alive = true]]>"
msgstr ""
- "<![CDATA[select p from NameList list, Person p\n"
- "where p.name = some elements(list.names)]]>"
-#: index.docbook:676
-msgid "You may test the size of a collection with the special property <literal>size</literal>, or the special <literal>size()</literal> function."
-msgstr "<![CDATA[from Cat cat where exists elements(cat.kittens)]]>"
+#. Tag: para
+#: query_hql.xml:676
+#, no-c-format
+msgid ""
+"You may test the size of a collection with the special property "
+"<literal>size</literal>, or the special <literal>size()</literal> function."
+msgstr ""
+"Puedes comprobar el tamaño de una colección con la propiedad especial "
+"<literal>size</literal>, o la función especial <literal>size()</literal>."
-#: index.docbook:681
+#. Tag: programlisting
+#: query_hql.xml:681
+#, no-c-format
msgid "<![CDATA[from Cat cat where cat.kittens.size > 0]]>"
-msgstr "<![CDATA[from Player p where 3 > all elements(p.scores)]]>"
+msgstr ""
-#: index.docbook:683
+#. Tag: programlisting
+#: query_hql.xml:683
+#, no-c-format
msgid "<![CDATA[from Cat cat where size(cat.kittens) > 0]]>"
-msgstr "<![CDATA[from Show show where 'fizard' in indices(show.acts)]]>"
+msgstr ""
-#: index.docbook:685
-msgid "For indexed collections, you may refer to the minimum and maximum indices using <literal>minindex</literal> and <literal>maxindex</literal> functions. Similarly, you may refer to the minimum and maximum elements of a collection of basic type using the <literal>minelement</literal> and <literal>maxelement</literal> functions."
-msgstr "Nota que estas construcciones - <literal>size</literal>, <literal>elements</literal>, <literal>indices</literal>, <literal>minindex</literal>, <literal>maxindex</literal>, <literal>minelement</literal>, <literal>maxelement</literal> - pueden ser usadas solamente en la cláusula where en Hibernate3."
+#. Tag: para
+#: query_hql.xml:685
+#, no-c-format
+msgid ""
+"For indexed collections, you may refer to the minimum and maximum indices "
+"using <literal>minindex</literal> and <literal>maxindex</literal> functions. "
+"Similarly, you may refer to the minimum and maximum elements of a collection "
+"of basic type using the <literal>minelement</literal> and "
+"<literal>maxelement</literal> functions."
+msgstr ""
+"Para colecciones indexadas, puedes referirte a los índices máximo y mínimo "
+"usando las funciones <literal>minindex</literal> y <literal>maxindex</"
+"literal>. Similarmente, puedes referirte a los elementos máximo y mínimo de "
+"una colección de tipo básico usando las funciones <literal>minelement</"
+"literal> y <literal>maxelement</literal>."
-#: index.docbook:693
-msgid "<![CDATA[from Calendar cal where maxelement(cal.holidays) > current_date]]>"
-msgstr "Los elementos de colecciones indexadas (arrays, listas, mapas) pueden ser referidos por índice (en una cláusula where solamente):"
+#. Tag: programlisting
+#: query_hql.xml:693
+#, no-c-format
+msgid ""
+"<![CDATA[from Calendar cal where maxelement(cal.holidays) > current_date]]>"
+msgstr ""
-#: index.docbook:695
+#. Tag: programlisting
+#: query_hql.xml:695
+#, no-c-format
msgid "<![CDATA[from Order order where maxindex(order.items) > 100]]>"
-msgstr "<![CDATA[from Order order where order.items[0].id = 1234]]>"
+msgstr ""
-#: index.docbook:697
+#. Tag: programlisting
+#: query_hql.xml:697
+#, no-c-format
msgid "<![CDATA[from Order order where minelement(order.items) > 10000]]>"
msgstr ""
- "<![CDATA[select person from Person person, Calendar calendar\n"
- "where calendar.holidays['national day'] = person.birthDay\n"
- " and person.nationality.calendar = calendar]]>"
-#: index.docbook:699
-msgid "The SQL functions <literal>any, some, all, exists, in</literal> are supported when passed the element or index set of a collection (<literal>elements</literal> and <literal>indices</literal> functions) or the result of a subquery (see below)."
+#. Tag: para
+#: query_hql.xml:699
+#, no-c-format
+msgid ""
+"The SQL functions <literal>any, some, all, exists, in</literal> are "
+"supported when passed the element or index set of a collection "
+"(<literal>elements</literal> and <literal>indices</literal> functions) or "
+"the result of a subquery (see below)."
msgstr ""
- "<![CDATA[select item from Item item, Order order\n"
- "where order.items[ order.deliveredItemIndices[0] ] = item and order.id = 11]]>"
+"Las funciones SQL <literal>any, some, all, exists, in</literal> están "
+"soportadas cuando se les pasa el conjunto de elementos o índices de una "
+"colección (funciones <literal>elements</literal> y <literal>indices</"
+"literal>) o el resultado de una subconsulta (ver debajo)."
-#: index.docbook:705
+#. Tag: programlisting
+#: query_hql.xml:705
+#, no-c-format
msgid ""
- "<![CDATA[select mother from Cat as mother, Cat as kit\n"
- "where kit in elements(foo.kittens)]]>"
+"<![CDATA[select mother from Cat as mother, Cat as kit\n"
+"where kit in elements(foo.kittens)]]>"
msgstr ""
- "<![CDATA[select item from Item item, Order order\n"
- "where order.items[ maxindex(order.items) ] = item and order.id = 11]]>"
-#: index.docbook:707
+#. Tag: programlisting
+#: query_hql.xml:707
+#, no-c-format
msgid ""
- "<![CDATA[select p from NameList list, Person p\n"
- "where p.name = some elements(list.names)]]>"
-msgstr "La expresión dentro de <literal>[]</literal> puede incluso ser una expresión aritmética."
+"<![CDATA[select p from NameList list, Person p\n"
+"where p.name = some elements(list.names)]]>"
+msgstr ""
-#: index.docbook:709
+#. Tag: programlisting
+#: query_hql.xml:709
+#, no-c-format
msgid "<![CDATA[from Cat cat where exists elements(cat.kittens)]]>"
msgstr ""
- "<![CDATA[select item from Item item, Order order\n"
- "where order.items[ size(order.items) - 1 ] = item]]>"
-#: index.docbook:711
+#. Tag: programlisting
+#: query_hql.xml:711
+#, no-c-format
msgid "<![CDATA[from Player p where 3 > all elements(p.scores)]]>"
-msgstr "HQL provee además el función prefabricada <literal>index()</literal>, para elementos de una asociación uno-a-muchos o colección de valores."
+msgstr ""
-#: index.docbook:713
+#. Tag: programlisting
+#: query_hql.xml:713
+#, no-c-format
msgid "<![CDATA[from Show show where 'fizard' in indices(show.acts)]]>"
msgstr ""
- "<![CDATA[select item, index(item) from Order order \n"
- " join order.items item\n"
- "where index(item) < 5]]>"
-#: index.docbook:715
-msgid "Note that these constructs - <literal>size</literal>, <literal>elements</literal>, <literal>indices</literal>, <literal>minindex</literal>, <literal>maxindex</literal>, <literal>minelement</literal>, <literal>maxelement</literal> - may only be used in the where clause in Hibernate3."
-msgstr "Pueden usarse las funciones SQL escalares soportadas por la base de datos subyacente"
+#. Tag: para
+#: query_hql.xml:715
+#, no-c-format
+msgid ""
+"Note that these constructs - <literal>size</literal>, <literal>elements</"
+"literal>, <literal>indices</literal>, <literal>minindex</literal>, "
+"<literal>maxindex</literal>, <literal>minelement</literal>, "
+"<literal>maxelement</literal> - may only be used in the where clause in "
+"Hibernate3."
+msgstr ""
+"Nota que estas construcciones - <literal>size</literal>, <literal>elements</"
+"literal>, <literal>indices</literal>, <literal>minindex</literal>, "
+"<literal>maxindex</literal>, <literal>minelement</literal>, "
+"<literal>maxelement</literal> - pueden ser usadas solamente en la cláusula "
+"where en Hibernate3."
-#: index.docbook:722
-msgid "Elements of indexed collections (arrays, lists, maps) may be referred to by index (in a where clause only):"
-msgstr "<![CDATA[from DomesticCat cat where upper(cat.name) like 'FRI%']]>"
+#. Tag: para
+#: query_hql.xml:722
+#, no-c-format
+msgid ""
+"Elements of indexed collections (arrays, lists, maps) may be referred to by "
+"index (in a where clause only):"
+msgstr ""
+"Los elementos de colecciones indexadas (arrays, listas, mapas) pueden ser "
+"referidos por índice (en una cláusula where solamente):"
-#: index.docbook:727
+#. Tag: programlisting
+#: query_hql.xml:727
+#, no-c-format
msgid "<![CDATA[from Order order where order.items[0].id = 1234]]>"
-msgstr "Si aún no estás convencido de todo esto, piensa cuánto más largo y menos leíble sería la siguiente consulta en SQL:"
+msgstr ""
-#: index.docbook:729
+#. Tag: programlisting
+#: query_hql.xml:729
+#, no-c-format
msgid ""
- "<![CDATA[select person from Person person, Calendar calendar\n"
- "where calendar.holidays['national day'] = person.birthDay\n"
- " and person.nationality.calendar = calendar]]>"
+"<![CDATA[select person from Person person, Calendar calendar\n"
+"where calendar.holidays['national day'] = person.birthDay\n"
+" and person.nationality.calendar = calendar]]>"
msgstr ""
- "<![CDATA[select cust\n"
- "from Product prod,\n"
- " Store store\n"
- " inner join store.customers cust\n"
- "where prod.name = 'widget'\n"
- " and store.location.name in ( 'Melbourne', 'Sydney' )\n"
- " and prod = all elements(cust.currentOrder.lineItems)]]>"
-#: index.docbook:731
+#. Tag: programlisting
+#: query_hql.xml:731
+#, no-c-format
msgid ""
- "<![CDATA[select item from Item item, Order order\n"
- "where order.items[ order.deliveredItemIndices[0] ] = item and order.id = 11]]>"
-msgstr "<emphasis>Ayuda:</emphasis> algo como"
+"<![CDATA[select item from Item item, Order order\n"
+"where order.items[ order.deliveredItemIndices[0] ] = item and order.id = 11]]"
+">"
+msgstr ""
-#: index.docbook:733
+#. Tag: programlisting
+#: query_hql.xml:733
+#, no-c-format
msgid ""
- "<![CDATA[select item from Item item, Order order\n"
- "where order.items[ maxindex(order.items) ] = item and order.id = 11]]>"
+"<![CDATA[select item from Item item, Order order\n"
+"where order.items[ maxindex(order.items) ] = item and order.id = 11]]>"
msgstr ""
- "<![CDATA[SELECT cust.name, cust.address, cust.phone, cust.id, cust.current_order\n"
- "FROM customers cust,\n"
- " stores store,\n"
- " locations loc,\n"
- " store_customers sc,\n"
- " product prod\n"
- "WHERE prod.name = 'widget'\n"
- " AND store.loc_id = loc.id\n"
- " AND loc.name IN ( 'Melbourne', 'Sydney' )\n"
- " AND sc.store_id = store.id\n"
- " AND sc.cust_id = cust.id\n"
- " AND prod.id = ALL(\n"
- " SELECT item.prod_id\n"
- " FROM line_items item, orders o\n"
- " WHERE item.order_id = o.id\n"
- " AND cust.current_order = o.id\n"
- " )]]>"
-#: index.docbook:735
-msgid "The expression inside <literal>[]</literal> may even be an arithmetic expression."
-msgstr "La cláusula order by"
+#. Tag: para
+#: query_hql.xml:735
+#, no-c-format
+msgid ""
+"The expression inside <literal>[]</literal> may even be an arithmetic "
+"expression."
+msgstr ""
+"La expresión dentro de <literal>[]</literal> puede incluso ser una expresión "
+"aritmética."
-#: index.docbook:739
+#. Tag: programlisting
+#: query_hql.xml:739
+#, no-c-format
msgid ""
- "<![CDATA[select item from Item item, Order order\n"
- "where order.items[ size(order.items) - 1 ] = item]]>"
-msgstr "La lista devuelta por una consulta puede ser ordenada por cualquier propiedad de una clase devuelta o componentes:"
+"<![CDATA[select item from Item item, Order order\n"
+"where order.items[ size(order.items) - 1 ] = item]]>"
+msgstr ""
-#: index.docbook:741
-msgid "HQL also provides the built-in <literal>index()</literal> function, for elements of a one-to-many association or collection of values."
+#. Tag: para
+#: query_hql.xml:741
+#, no-c-format
+msgid ""
+"HQL also provides the built-in <literal>index()</literal> function, for "
+"elements of a one-to-many association or collection of values."
msgstr ""
- "<![CDATA[from DomesticCat cat\n"
- "order by cat.name asc, cat.weight desc, cat.birthdate]]>"
+"HQL provee además el función prefabricada <literal>index()</literal>, para "
+"elementos de una asociación uno-a-muchos o colección de valores."
-#: index.docbook:746
+#. Tag: programlisting
+#: query_hql.xml:746
+#, no-c-format
msgid ""
- "<![CDATA[select item, index(item) from Order order\n"
- " join order.items item\n"
- "where index(item) < 5]]>"
-msgstr "Los <literal>asc</literal> o <literal>desc</literal> opcionales indican ordenamiento ascendente o descendente respectivamente."
+"<![CDATA[select item, index(item) from Order order\n"
+" join order.items item\n"
+"where index(item) < 5]]>"
+msgstr ""
-#: index.docbook:748
+#. Tag: para
+#: query_hql.xml:748
+#, no-c-format
msgid "Scalar SQL functions supported by the underlying database may be used"
-msgstr "La cláusula group by"
+msgstr ""
+"Pueden usarse las funciones SQL escalares soportadas por la base de datos "
+"subyacente"
-#: index.docbook:752
+#. Tag: programlisting
+#: query_hql.xml:752
+#, no-c-format
msgid "<![CDATA[from DomesticCat cat where upper(cat.name) like 'FRI%']]>"
-msgstr "Una consulta que devuelve valores agregados puede ser agrupada por cualquier propiedad de una clase devuelta o componentes:"
+msgstr ""
-#: index.docbook:754
-msgid "If you are not yet convinced by all this, think how much longer and less readable the following query would be in SQL:"
+#. Tag: para
+#: query_hql.xml:754
+#, no-c-format
+msgid ""
+"If you are not yet convinced by all this, think how much longer and less "
+"readable the following query would be in SQL:"
msgstr ""
- "<![CDATA[select cat.color, sum(cat.weight), count(cat) \n"
- "from Cat cat\n"
- "group by cat.color]]>"
+"Si aún no estás convencido de todo esto, piensa cuánto más largo y menos "
+"leíble sería la siguiente consulta en SQL:"
-#: index.docbook:759
+#. Tag: programlisting
+#: query_hql.xml:759
+#, no-c-format
msgid ""
- "<![CDATA[select cust\n"
- "from Product prod,\n"
- " Store store\n"
- " inner join store.customers cust\n"
- "where prod.name = 'widget'\n"
- " and store.location.name in ( 'Melbourne', 'Sydney' )\n"
- " and prod = all elements(cust.currentOrder.lineItems)]]>"
+"<![CDATA[select cust\n"
+"from Product prod,\n"
+" Store store\n"
+" inner join store.customers cust\n"
+"where prod.name = 'widget'\n"
+" and store.location.name in ( 'Melbourne', 'Sydney' )\n"
+" and prod = all elements(cust.currentOrder.lineItems)]]>"
msgstr ""
- "<![CDATA[select foo.id, avg(name), max(name) \n"
- "from Foo foo join foo.names name\n"
- "group by foo.id]]>"
-#: index.docbook:761
+#. Tag: para
+#: query_hql.xml:761
+#, no-c-format
msgid "<emphasis>Hint:</emphasis> something like"
-msgstr "Se permite también una cláusula <literal>having</literal>."
+msgstr "<emphasis>Ayuda:</emphasis> algo como"
-#: index.docbook:765
+#. Tag: programlisting
+#: query_hql.xml:765
+#, no-c-format
msgid ""
- "<![CDATA[SELECT cust.name, cust.address, cust.phone, cust.id, cust.current_order\n"
- "FROM customers cust,\n"
- " stores store,\n"
- " locations loc,\n"
- " store_customers sc,\n"
- " product prod\n"
- "WHERE prod.name = 'widget'\n"
- " AND store.loc_id = loc.id\n"
- " AND loc.name IN ( 'Melbourne', 'Sydney' )\n"
- " AND sc.store_id = store.id\n"
- " AND sc.cust_id = cust.id\n"
- " AND prod.id = ALL(\n"
- " SELECT item.prod_id\n"
- " FROM line_items item, orders o\n"
- " WHERE item.order_id = o.id\n"
- " AND cust.current_order = o.id\n"
- " )]]>"
+"<![CDATA[SELECT cust.name, cust.address, cust.phone, cust.id, cust."
+"current_order\n"
+"FROM customers cust,\n"
+" stores store,\n"
+" locations loc,\n"
+" store_customers sc,\n"
+" product prod\n"
+"WHERE prod.name = 'widget'\n"
+" AND store.loc_id = loc.id\n"
+" AND loc.name IN ( 'Melbourne', 'Sydney' )\n"
+" AND sc.store_id = store.id\n"
+" AND sc.cust_id = cust.id\n"
+" AND prod.id = ALL(\n"
+" SELECT item.prod_id\n"
+" FROM line_items item, orders o\n"
+" WHERE item.order_id = o.id\n"
+" AND cust.current_order = o.id\n"
+" )]]>"
msgstr ""
- "<![CDATA[select cat.color, sum(cat.weight), count(cat) \n"
- "from Cat cat\n"
- "group by cat.color \n"
- "having cat.color in (eg.Color.TABBY, eg.Color.BLACK)]]>"
-#: index.docbook:770
+#. Tag: title
+#: query_hql.xml:770
+#, no-c-format
msgid "The order by clause"
-msgstr "Las funciones y funciones de agregación SQL están permitidas en las cláusulas <literal>having</literal> y <literal>order by</literal>, si están soportadas por la base de datos subyacente (por ejemplo, no en MySQL)."
+msgstr "La cláusula order by"
-#: index.docbook:772
-msgid "The list returned by a query may be ordered by any property of a returned class or components:"
+#. Tag: para
+#: query_hql.xml:772
+#, no-c-format
+msgid ""
+"The list returned by a query may be ordered by any property of a returned "
+"class or components:"
msgstr ""
- "<![CDATA[select cat\n"
- "from Cat cat\n"
- " join cat.kittens kitten\n"
- "group by cat\n"
- "having avg(kitten.weight) > 100\n"
- "order by count(kitten) asc, sum(kitten.weight) desc]]>"
+"La lista devuelta por una consulta puede ser ordenada por cualquier "
+"propiedad de una clase devuelta o componentes:"
-#: index.docbook:776
+#. Tag: programlisting
+#: query_hql.xml:776
+#, no-c-format
msgid ""
- "<![CDATA[from DomesticCat cat\n"
- "order by cat.name asc, cat.weight desc, cat.birthdate]]>"
-msgstr "Nota que ni la cláusula <literal>group by</literal> ni la cláusula <literal>order by</literal> pueden contener expresiones aritméticas."
+"<![CDATA[from DomesticCat cat\n"
+"order by cat.name asc, cat.weight desc, cat.birthdate]]>"
+msgstr ""
-#: index.docbook:778
-msgid "The optional <literal>asc</literal> or <literal>desc</literal> indicate ascending or descending order respectively."
-msgstr "Subconsultas"
+#. Tag: para
+#: query_hql.xml:778
+#, no-c-format
+msgid ""
+"The optional <literal>asc</literal> or <literal>desc</literal> indicate "
+"ascending or descending order respectively."
+msgstr ""
+"Los <literal>asc</literal> o <literal>desc</literal> opcionales indican "
+"ordenamiento ascendente o descendente respectivamente."
-#: index.docbook:785
+#. Tag: title
+#: query_hql.xml:785
+#, no-c-format
msgid "The group by clause"
-msgstr "Para bases de datos que soportan subconsultas, Hibernate soporta subconsultas dentro de consultas. Una subconsulta debe ser encerrada entre paréntesis (frecuentemente por una llamada a una función de agregación SQL). Incluso se permiten subconsultas correlacionadas (subconsultas que hacen referencia a un alias en la consulta exterior)."
+msgstr "La cláusula group by"
-#: index.docbook:787
-msgid "A query that returns aggregate values may be grouped by any property of a returned class or components:"
+#. Tag: para
+#: query_hql.xml:787
+#, no-c-format
+msgid ""
+"A query that returns aggregate values may be grouped by any property of a "
+"returned class or components:"
msgstr ""
- "<![CDATA[from Cat as fatcat \n"
- "where fatcat.weight > ( \n"
- " select avg(cat.weight) from DomesticCat cat \n"
- ")]]>"
+"Una consulta que devuelve valores agregados puede ser agrupada por cualquier "
+"propiedad de una clase devuelta o componentes:"
-#: index.docbook:791
+#. Tag: programlisting
+#: query_hql.xml:791
+#, no-c-format
msgid ""
- "<![CDATA[select cat.color, sum(cat.weight), count(cat)\n"
- "from Cat cat\n"
- "group by cat.color]]>"
+"<![CDATA[select cat.color, sum(cat.weight), count(cat)\n"
+"from Cat cat\n"
+"group by cat.color]]>"
msgstr ""
- "<![CDATA[from DomesticCat as cat \n"
- "where cat.name = some ( \n"
- " select name.nickName from Name as name \n"
- ")]]>"
-#: index.docbook:793
+#. Tag: programlisting
+#: query_hql.xml:793
+#, no-c-format
msgid ""
- "<![CDATA[select foo.id, avg(name), max(name)\n"
- "from Foo foo join foo.names name\n"
- "group by foo.id]]>"
+"<![CDATA[select foo.id, avg(name), max(name)\n"
+"from Foo foo join foo.names name\n"
+"group by foo.id]]>"
msgstr ""
- "<![CDATA[from Cat as cat \n"
- "where not exists ( \n"
- " from Cat as mate where mate.mate = cat \n"
- ")]]>"
-#: index.docbook:795
+#. Tag: para
+#: query_hql.xml:795
+#, no-c-format
msgid "A <literal>having</literal> clause is also allowed."
+msgstr "Se permite también una cláusula <literal>having</literal>."
+
+#. Tag: programlisting
+#: query_hql.xml:799
+#, no-c-format
+msgid ""
+"<![CDATA[select cat.color, sum(cat.weight), count(cat)\n"
+"from Cat cat\n"
+"group by cat.color\n"
+"having cat.color in (eg.Color.TABBY, eg.Color.BLACK)]]>"
msgstr ""
- "<![CDATA[from DomesticCat as cat \n"
- "where cat.name not in ( \n"
- " select name.nickName from Name as name \n"
- ")]]>"
-#: index.docbook:799
+#. Tag: para
+#: query_hql.xml:801
+#, no-c-format
msgid ""
- "<![CDATA[select cat.color, sum(cat.weight), count(cat)\n"
- "from Cat cat\n"
- "group by cat.color\n"
- "having cat.color in (eg.Color.TABBY, eg.Color.BLACK)]]>"
-msgstr "Para las subconsultas con más de una expresión en la lista de selección, puedes usar un constructor de tuplas:"
+"SQL functions and aggregate functions are allowed in the <literal>having</"
+"literal> and <literal>order by</literal> clauses, if supported by the "
+"underlying database (eg. not in MySQL)."
+msgstr ""
+"Las funciones y funciones de agregación SQL están permitidas en las "
+"cláusulas <literal>having</literal> y <literal>order by</literal>, si están "
+"soportadas por la base de datos subyacente (por ejemplo, no en MySQL)."
-#: index.docbook:801
-msgid "SQL functions and aggregate functions are allowed in the <literal>having</literal> and <literal>order by</literal> clauses, if supported by the underlying database (eg. not in MySQL)."
+#. Tag: programlisting
+#: query_hql.xml:807
+#, no-c-format
+msgid ""
+"<![CDATA[select cat\n"
+"from Cat cat\n"
+" join cat.kittens kitten\n"
+"group by cat.id, cat.name, cat.other, cat.properties\n"
+"having avg(kitten.weight) > 100\n"
+"order by count(kitten) asc, sum(kitten.weight) desc]]>"
msgstr ""
- "<![CDATA[from Cat as cat \n"
- "where not ( cat.name, cat.color ) in ( \n"
- " select cat.name, cat.color from DomesticCat cat \n"
- ")]]>"
-#: index.docbook:807
+#. Tag: para
+#: query_hql.xml:809
+#, no-c-format
msgid ""
- "<![CDATA[select cat\n"
- "from Cat cat\n"
- " join cat.kittens kitten\n"
- "group by cat.id, cat.name, cat.other, cat.properties\n"
- "having avg(kitten.weight) > 100\n"
- "order by count(kitten) asc, sum(kitten.weight) desc]]>"
-msgstr "Nota que en algunas bases de datos (pero no en Oracle o HSQL), puedes usar constructores de tuplar en otros contextos, por ejemplo al consultar componentes o tipos de usuario compuestos:"
+"Note that neither the <literal>group by</literal> clause nor the "
+"<literal>order by</literal> clause may contain arithmetic expressions. Also "
+"note that Hibernate currently does not expand a grouped entity, so you can't "
+"write <literal>group by cat</literal> if all properties of <literal>cat</"
+"literal> are non-aggregated. You have to list all non-aggregated properties "
+"explicitly."
+msgstr ""
+"Nota que ni la cláusula <literal>group by</literal> ni la cláusula "
+"<literal>order by</literal> pueden contener expresiones aritméticas."
-#: index.docbook:809
-msgid "Note that neither the <literal>group by</literal> clause nor the <literal>order by</literal> clause may contain arithmetic expressions. Also note that Hibernate currently does not expand a grouped entity, so you can't write <literal>group by cat</literal> if all properties of <literal>cat</literal> are non-aggregated. You have to list all non-aggregated properties explicitly."
-msgstr "<![CDATA[from Person where name = ('Gavin', 'A', 'King')]]>"
-
-#: index.docbook:821
+#. Tag: title
+#: query_hql.xml:821
+#, no-c-format
msgid "Subqueries"
-msgstr "Que es equivalente a la más verborrágica:"
+msgstr "Subconsultas"
-#: index.docbook:823
-msgid "For databases that support subselects, Hibernate supports subqueries within queries. A subquery must be surrounded by parentheses (often by an SQL aggregate function call). Even correlated subqueries (subqueries that refer to an alias in the outer query) are allowed."
-msgstr "<![CDATA[from Person where name.first = 'Gavin' and name.initial = 'A' and name.last = 'King')]]>"
+#. Tag: para
+#: query_hql.xml:823
+#, no-c-format
+msgid ""
+"For databases that support subselects, Hibernate supports subqueries within "
+"queries. A subquery must be surrounded by parentheses (often by an SQL "
+"aggregate function call). Even correlated subqueries (subqueries that refer "
+"to an alias in the outer query) are allowed."
+msgstr ""
+"Para bases de datos que soportan subconsultas, Hibernate soporta "
+"subconsultas dentro de consultas. Una subconsulta debe ser encerrada entre "
+"paréntesis (frecuentemente por una llamada a una función de agregación SQL). "
+"Incluso se permiten subconsultas correlacionadas (subconsultas que hacen "
+"referencia a un alias en la consulta exterior)."
-#: index.docbook:829
+#. Tag: programlisting
+#: query_hql.xml:829
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as fatcat\n"
- "where fatcat.weight > (\n"
- " select avg(cat.weight) from DomesticCat cat\n"
- ")]]>"
-msgstr "Existen dos buenas razones por las cuales podrías no querer hacer este tipo de cosa: primero, no es completamente portable entre plataformas de base de datos; segundo, la consulta ahora es dependiente del orden de propiedades en el documento de mapeo."
+"<![CDATA[from Cat as fatcat\n"
+"where fatcat.weight > (\n"
+" select avg(cat.weight) from DomesticCat cat\n"
+")]]>"
+msgstr ""
-#: index.docbook:831
+#. Tag: programlisting
+#: query_hql.xml:831
+#, no-c-format
msgid ""
- "<![CDATA[from DomesticCat as cat\n"
- "where cat.name = some (\n"
- " select name.nickName from Name as name\n"
- ")]]>"
-msgstr "Ejemplos de HQL"
+"<![CDATA[from DomesticCat as cat\n"
+"where cat.name = some (\n"
+" select name.nickName from Name as name\n"
+")]]>"
+msgstr ""
-#: index.docbook:833
+#. Tag: programlisting
+#: query_hql.xml:833
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as cat\n"
- "where not exists (\n"
- " from Cat as mate where mate.mate = cat\n"
- ")]]>"
-msgstr "Las consultas de Hibernate pueden ser abolutamente potentes y complejas, De hecho, el poder del lenguaje de consulta es uno de los puntos principales de venta de Hibernate. He aquí algunos consultas de ejemplo muy similares a consultas que he usado en un proyecto reciente. ¡Nota que la mayoría de las consultas que escribirás som mucho más simples que estas!"
+"<![CDATA[from Cat as cat\n"
+"where not exists (\n"
+" from Cat as mate where mate.mate = cat\n"
+")]]>"
+msgstr ""
-#: index.docbook:835
+#. Tag: programlisting
+#: query_hql.xml:835
+#, no-c-format
msgid ""
- "<![CDATA[from DomesticCat as cat\n"
- "where cat.name not in (\n"
- " select name.nickName from Name as name\n"
- ")]]>"
-msgstr "La siguiente consulta devuelve el order id, número de items y valor total de la orden para todas las ordenes inpagas de un cliente en particular y valor total mínimo dados, ordenando los resultados por valor total. Al determinar los precios, usa el catálogo actual. La consulta SQL resultante, contra las tablas <literal>ORDER</literal>, <literal>ORDER_LINE</literal>, <literal>PRODUCT</literal>, <literal>CATALOG</literal> and <literal>PRICE</literal> tiene cuatro joins interiores y una subselect (no correlacionada)."
+"<![CDATA[from DomesticCat as cat\n"
+"where cat.name not in (\n"
+" select name.nickName from Name as name\n"
+")]]>"
+msgstr ""
-#: index.docbook:837
+#. Tag: programlisting
+#: query_hql.xml:837
+#, no-c-format
msgid ""
- "<![CDATA[select cat.id, (select max(kit.weight) from cat.kitten kit)\n"
- "from Cat as cat]]>"
+"<![CDATA[select cat.id, (select max(kit.weight) from cat.kitten kit)\n"
+"from Cat as cat]]>"
msgstr ""
- "<![CDATA[select order.id, sum(price.amount), count(item)\n"
- "from Order as order\n"
- " join order.lineItems as item\n"
- " join item.product as product,\n"
- " Catalog as catalog\n"
- " join catalog.prices as price\n"
- "where order.paid = false\n"
- " and order.customer = :customer\n"
- " and price.product = product\n"
- " and catalog.effectiveDate < sysdate\n"
- " and catalog.effectiveDate >= all (\n"
- " select cat.effectiveDate \n"
- " from Catalog as cat\n"
- " where cat.effectiveDate < sysdate\n"
- " )\n"
- "group by order\n"
- "having sum(price.amount) > :minAmount\n"
- "order by sum(price.amount) desc]]>"
-#: index.docbook:839
+#. Tag: para
+#: query_hql.xml:839
+#, no-c-format
msgid "Note that HQL subqueries may occur only in the select or where clauses."
-msgstr "¡Qué monstruo! Realmente, en la vida real, no estoy muy afilado en subconsultas, de modo que mi consulta fue realmente algo como esto:"
+msgstr ""
+"Note that HQL subqueries may occur only in the select or where clauses."
-#: index.docbook:843
-msgid "Note that subqueries can also utilize <literal>row value constructor</literal> syntax. See <xref linkend=\"queryhql-tuple\"/> for more details."
+#. Tag: para
+#: query_hql.xml:843
+#, no-c-format
+msgid ""
+"Note that subqueries can also utilize <literal>row value constructor</"
+"literal> syntax. See <xref linkend=\"queryhql-tuple\"/> for more details."
msgstr ""
- "<![CDATA[select order.id, sum(price.amount), count(item)\n"
- "from Order as order\n"
- " join order.lineItems as item\n"
- " join item.product as product,\n"
- " Catalog as catalog\n"
- " join catalog.prices as price\n"
- "where order.paid = false\n"
- " and order.customer = :customer\n"
- " and price.product = product\n"
- " and catalog = :currentCatalog\n"
- "group by order\n"
- "having sum(price.amount) > :minAmount\n"
- "order by sum(price.amount) desc]]>"
+"Note that subqueries can also utilize <literal>row value constructor</"
+"literal> syntax. See <xref linkend=\"queryhql-tuple\"/> for more details."
-#: index.docbook:851
+#. Tag: title
+#: query_hql.xml:851
+#, no-c-format
msgid "HQL examples"
-msgstr "La próxima consulta cuenta el número de pagos en cada estado, excluyendo todos los pagos en el estado <literal>AWAITING_APPROVAL</literal> donde el estado más reciente fue hecho por el usuario actual. Se traduce en una consulta SQL con dos joins interiores y una subselect correlacionada contra las tablas <literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal> y <literal>PAYMENT_STATUS_CHANGE</literal>."
+msgstr "Ejemplos de HQL"
-#: index.docbook:853
-msgid "Hibernate queries can be quite powerful and complex. In fact, the power of the query language is one of Hibernate's main selling points. Here are some example queries very similar to queries that I used on a recent project. Note that most queries you will write are much simpler than these!"
+#. Tag: para
+#: query_hql.xml:853
+#, no-c-format
+msgid ""
+"Hibernate queries can be quite powerful and complex. In fact, the power of "
+"the query language is one of Hibernate's main selling points. Here are some "
+"example queries very similar to queries that I used on a recent project. "
+"Note that most queries you will write are much simpler than these!"
msgstr ""
- "<![CDATA[select count(payment), status.name \n"
- "from Payment as payment \n"
- " join payment.currentStatus as status\n"
- " join payment.statusChanges as statusChange\n"
- "where payment.status.name <> PaymentStatus.AWAITING_APPROVAL\n"
- " or (\n"
- " statusChange.timeStamp = ( \n"
- " select max(change.timeStamp) \n"
- " from PaymentStatusChange change \n"
- " where change.payment = payment\n"
- " )\n"
- " and statusChange.user <> :currentUser\n"
- " )\n"
- "group by status.name, status.sortOrder\n"
- "order by status.sortOrder]]>"
+"Las consultas de Hibernate pueden ser abolutamente potentes y complejas, De "
+"hecho, el poder del lenguaje de consulta es uno de los puntos principales de "
+"venta de Hibernate. He aquí algunos consultas de ejemplo muy similares a "
+"consultas que he usado en un proyecto reciente. ¡Nota que la mayoría de las "
+"consultas que escribirás som mucho más simples que estas!"
-#: index.docbook:859
-msgid "The following query returns the order id, number of items and total value of the order for all unpaid orders for a particular customer and given minimum total value, ordering the results by total value. In determining the prices, it uses the current catalog. The resulting SQL query, against the <literal>ORDER</literal>, <literal>ORDER_LINE</literal>, <literal>PRODUCT</literal>, <literal>CATALOG</literal> and <literal>PRICE</literal> tables has four inner joins and an (uncorrelated) subselect."
-msgstr "Si hubiese mapeado la colección <literal>statusChanges</literal> como una lista, en vez de un conjunto, la consulta habría sido mucho más simple de escribir."
+#. Tag: para
+#: query_hql.xml:859
+#, no-c-format
+msgid ""
+"The following query returns the order id, number of items and total value of "
+"the order for all unpaid orders for a particular customer and given minimum "
+"total value, ordering the results by total value. In determining the prices, "
+"it uses the current catalog. The resulting SQL query, against the "
+"<literal>ORDER</literal>, <literal>ORDER_LINE</literal>, <literal>PRODUCT</"
+"literal>, <literal>CATALOG</literal> and <literal>PRICE</literal> tables has "
+"four inner joins and an (uncorrelated) subselect."
+msgstr ""
+"La siguiente consulta devuelve el order id, número de items y valor total de "
+"la orden para todas las ordenes inpagas de un cliente en particular y valor "
+"total mínimo dados, ordenando los resultados por valor total. Al determinar "
+"los precios, usa el catálogo actual. La consulta SQL resultante, contra las "
+"tablas <literal>ORDER</literal>, <literal>ORDER_LINE</literal>, "
+"<literal>PRODUCT</literal>, <literal>CATALOG</literal> and <literal>PRICE</"
+"literal> tiene cuatro joins interiores y una subselect (no correlacionada)."
-#: index.docbook:868
+#. Tag: programlisting
+#: query_hql.xml:868
+#, no-c-format
msgid ""
- "<![CDATA[select order.id, sum(price.amount), count(item)\n"
- "from Order as order\n"
- " join order.lineItems as item\n"
- " join item.product as product,\n"
- " Catalog as catalog\n"
- " join catalog.prices as price\n"
- "where order.paid = false\n"
- " and order.customer = :customer\n"
- " and price.product = product\n"
- " and catalog.effectiveDate < sysdate\n"
- " and catalog.effectiveDate >= all (\n"
- " select cat.effectiveDate\n"
- " from Catalog as cat\n"
- " where cat.effectiveDate < sysdate\n"
- " )\n"
- "group by order\n"
- "having sum(price.amount) > :minAmount\n"
- "order by sum(price.amount) desc]]>"
+"<![CDATA[select order.id, sum(price.amount), count(item)\n"
+"from Order as order\n"
+" join order.lineItems as item\n"
+" join item.product as product,\n"
+" Catalog as catalog\n"
+" join catalog.prices as price\n"
+"where order.paid = false\n"
+" and order.customer = :customer\n"
+" and price.product = product\n"
+" and catalog.effectiveDate < sysdate\n"
+" and catalog.effectiveDate >= all (\n"
+" select cat.effectiveDate\n"
+" from Catalog as cat\n"
+" where cat.effectiveDate < sysdate\n"
+" )\n"
+"group by order\n"
+"having sum(price.amount) > :minAmount\n"
+"order by sum(price.amount) desc]]>"
msgstr ""
- "<![CDATA[select count(payment), status.name \n"
- "from Payment as payment\n"
- " join payment.currentStatus as status\n"
- "where payment.status.name <> PaymentStatus.AWAITING_APPROVAL\n"
- " or payment.statusChanges[ maxIndex(payment.statusChanges) ].user <> :currentUser\n"
- "group by status.name, status.sortOrder\n"
- "order by status.sortOrder]]>"
-#: index.docbook:870
-msgid "What a monster! Actually, in real life, I'm not very keen on subqueries, so my query was really more like this:"
-msgstr "La próxima consulta usa la función <literal>isNull()</literal> de MS SQL Server para devolver todas las cuentas y pagos inpagos de la organización a la que pertenece el usuario actual. Se traduce en una consulta SQL con tres joins interiores, un join exterior y una subconsulta contra las tablas <literal>ACCOUNT</literal>, <literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal>, <literal>ACCOUNT_TYPE</literal>, <literal>ORGANIZATION</literal> y <literal>ORG_USER</literal>."
+#. Tag: para
+#: query_hql.xml:870
+#, no-c-format
+msgid ""
+"What a monster! Actually, in real life, I'm not very keen on subqueries, so "
+"my query was really more like this:"
+msgstr ""
+"¡Qué monstruo! Realmente, en la vida real, no estoy muy afilado en "
+"subconsultas, de modo que mi consulta fue realmente algo como esto:"
-#: index.docbook:875
+#. Tag: programlisting
+#: query_hql.xml:875
+#, no-c-format
msgid ""
- "<![CDATA[select order.id, sum(price.amount), count(item)\n"
- "from Order as order\n"
- " join order.lineItems as item\n"
- " join item.product as product,\n"
- " Catalog as catalog\n"
- " join catalog.prices as price\n"
- "where order.paid = false\n"
- " and order.customer = :customer\n"
- " and price.product = product\n"
- " and catalog = :currentCatalog\n"
- "group by order\n"
- "having sum(price.amount) > :minAmount\n"
- "order by sum(price.amount) desc]]>"
+"<![CDATA[select order.id, sum(price.amount), count(item)\n"
+"from Order as order\n"
+" join order.lineItems as item\n"
+" join item.product as product,\n"
+" Catalog as catalog\n"
+" join catalog.prices as price\n"
+"where order.paid = false\n"
+" and order.customer = :customer\n"
+" and price.product = product\n"
+" and catalog = :currentCatalog\n"
+"group by order\n"
+"having sum(price.amount) > :minAmount\n"
+"order by sum(price.amount) desc]]>"
msgstr ""
- "<![CDATA[select account, payment\n"
- "from Account as account\n"
- " left outer join account.payments as payment\n"
- "where :currentUser in elements(account.holder.users)\n"
- " and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, PaymentStatus.UNPAID)\n"
- "order by account.type.sortOrder, account.accountNumber, payment.dueDate]]>"
-#: index.docbook:877
-msgid "The next query counts the number of payments in each status, excluding all payments in the <literal>AWAITING_APPROVAL</literal> status where the most recent status change was made by the current user. It translates to an SQL query with two inner joins and a correlated subselect against the <literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal> and <literal>PAYMENT_STATUS_CHANGE</literal> tables."
-msgstr "Para algunas bases de datos, necesitaríamos eliminar la subselect (correlacionada)."
+#. Tag: para
+#: query_hql.xml:877
+#, no-c-format
+msgid ""
+"The next query counts the number of payments in each status, excluding all "
+"payments in the <literal>AWAITING_APPROVAL</literal> status where the most "
+"recent status change was made by the current user. It translates to an SQL "
+"query with two inner joins and a correlated subselect against the "
+"<literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal> and "
+"<literal>PAYMENT_STATUS_CHANGE</literal> tables."
+msgstr ""
+"La próxima consulta cuenta el número de pagos en cada estado, excluyendo "
+"todos los pagos en el estado <literal>AWAITING_APPROVAL</literal> donde el "
+"estado más reciente fue hecho por el usuario actual. Se traduce en una "
+"consulta SQL con dos joins interiores y una subselect correlacionada contra "
+"las tablas <literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal> y "
+"<literal>PAYMENT_STATUS_CHANGE</literal>."
-#: index.docbook:885
+#. Tag: programlisting
+#: query_hql.xml:885
+#, no-c-format
msgid ""
- "<![CDATA[select count(payment), status.name\n"
- "from Payment as payment\n"
- " join payment.currentStatus as status\n"
- " join payment.statusChanges as statusChange\n"
- "where payment.status.name <> PaymentStatus.AWAITING_APPROVAL\n"
- " or (\n"
- " statusChange.timeStamp = (\n"
- " select max(change.timeStamp)\n"
- " from PaymentStatusChange change\n"
- " where change.payment = payment\n"
- " )\n"
- " and statusChange.user <> :currentUser\n"
- " )\n"
- "group by status.name, status.sortOrder\n"
- "order by status.sortOrder]]>"
+"<![CDATA[select count(payment), status.name\n"
+"from Payment as payment\n"
+" join payment.currentStatus as status\n"
+" join payment.statusChanges as statusChange\n"
+"where payment.status.name <> PaymentStatus.AWAITING_APPROVAL\n"
+" or (\n"
+" statusChange.timeStamp = (\n"
+" select max(change.timeStamp)\n"
+" from PaymentStatusChange change\n"
+" where change.payment = payment\n"
+" )\n"
+" and statusChange.user <> :currentUser\n"
+" )\n"
+"group by status.name, status.sortOrder\n"
+"order by status.sortOrder]]>"
msgstr ""
- "<![CDATA[select account, payment\n"
- "from Account as account\n"
- " join account.holder.users as user\n"
- " left outer join account.payments as payment\n"
- "where :currentUser = user\n"
- " and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, PaymentStatus.UNPAID)\n"
- "order by account.type.sortOrder, account.accountNumber, payment.dueDate]]>"
-#: index.docbook:887
-msgid "If I would have mapped the <literal>statusChanges</literal> collection as a list, instead of a set, the query would have been much simpler to write."
-msgstr "Sentencias UPDATE y DELETE masivas"
+#. Tag: para
+#: query_hql.xml:887
+#, no-c-format
+msgid ""
+"If I would have mapped the <literal>statusChanges</literal> collection as a "
+"list, instead of a set, the query would have been much simpler to write."
+msgstr ""
+"Si hubiese mapeado la colección <literal>statusChanges</literal> como una "
+"lista, en vez de un conjunto, la consulta habría sido mucho más simple de "
+"escribir."
-#: index.docbook:892
+#. Tag: programlisting
+#: query_hql.xml:892
+#, no-c-format
msgid ""
- "<![CDATA[select count(payment), status.name\n"
- "from Payment as payment\n"
- " join payment.currentStatus as status\n"
- "where payment.status.name <> PaymentStatus.AWAITING_APPROVAL\n"
- " or payment.statusChanges[ maxIndex(payment.statusChanges) ].user <> :currentUser\n"
- "group by status.name, status.sortOrder\n"
- "order by status.sortOrder]]>"
-msgstr "HQL soporta ahora sentencias UPDATE y DELETE en HQL. Ver <xref linkend=\"batch-direct\"/> para detalles."
+"<![CDATA[select count(payment), status.name\n"
+"from Payment as payment\n"
+" join payment.currentStatus as status\n"
+"where payment.status.name <> PaymentStatus.AWAITING_APPROVAL\n"
+" or payment.statusChanges[ maxIndex(payment.statusChanges) ].user <> :"
+"currentUser\n"
+"group by status.name, status.sortOrder\n"
+"order by status.sortOrder]]>"
+msgstr ""
-#: index.docbook:894
-msgid "The next query uses the MS SQL Server <literal>isNull()</literal> function to return all the accounts and unpaid payments for the organization to which the current user belongs. It translates to an SQL query with three inner joins, an outer join and a subselect against the <literal>ACCOUNT</literal>, <literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal>, <literal>ACCOUNT_TYPE</literal>, <literal>ORGANIZATION</literal> and <literal>ORG_USER</literal> tables."
-msgstr "Consejos y Trucos"
+#. Tag: para
+#: query_hql.xml:894
+#, no-c-format
+msgid ""
+"The next query uses the MS SQL Server <literal>isNull()</literal> function "
+"to return all the accounts and unpaid payments for the organization to which "
+"the current user belongs. It translates to an SQL query with three inner "
+"joins, an outer join and a subselect against the <literal>ACCOUNT</literal>, "
+"<literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal>, "
+"<literal>ACCOUNT_TYPE</literal>, <literal>ORGANIZATION</literal> and "
+"<literal>ORG_USER</literal> tables."
+msgstr ""
+"La próxima consulta usa la función <literal>isNull()</literal> de MS SQL "
+"Server para devolver todas las cuentas y pagos inpagos de la organización a "
+"la que pertenece el usuario actual. Se traduce en una consulta SQL con tres "
+"joins interiores, un join exterior y una subconsulta contra las tablas "
+"<literal>ACCOUNT</literal>, <literal>PAYMENT</literal>, "
+"<literal>PAYMENT_STATUS</literal>, <literal>ACCOUNT_TYPE</literal>, "
+"<literal>ORGANIZATION</literal> y <literal>ORG_USER</literal>."
-#: index.docbook:903
+#. Tag: programlisting
+#: query_hql.xml:903
+#, no-c-format
msgid ""
- "<![CDATA[select account, payment\n"
- "from Account as account\n"
- " left outer join account.payments as payment\n"
- "where :currentUser in elements(account.holder.users)\n"
- " and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, PaymentStatus.UNPAID)\n"
- "order by account.type.sortOrder, account.accountNumber, payment.dueDate]]>"
-msgstr "Puedes contar el número de resultados de una consulta sin devolverlos realmente:"
+"<![CDATA[select account, payment\n"
+"from Account as account\n"
+" left outer join account.payments as payment\n"
+"where :currentUser in elements(account.holder.users)\n"
+" and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, "
+"PaymentStatus.UNPAID)\n"
+"order by account.type.sortOrder, account.accountNumber, payment.dueDate]]>"
+msgstr ""
-#: index.docbook:905
-msgid "For some databases, we would need to do away with the (correlated) subselect."
-msgstr "<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\").iterate().next() ).intValue()]]>"
+#. Tag: para
+#: query_hql.xml:905
+#, no-c-format
+msgid ""
+"For some databases, we would need to do away with the (correlated) subselect."
+msgstr ""
+"Para algunas bases de datos, necesitaríamos eliminar la subselect "
+"(correlacionada)."
-#: index.docbook:909
+#. Tag: programlisting
+#: query_hql.xml:909
+#, no-c-format
msgid ""
- "<![CDATA[select account, payment\n"
- "from Account as account\n"
- " join account.holder.users as user\n"
- " left outer join account.payments as payment\n"
- "where :currentUser = user\n"
- " and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, PaymentStatus.UNPAID)\n"
- "order by account.type.sortOrder, account.accountNumber, payment.dueDate]]>"
-msgstr "Para ordenar un resultado por el tamaño de una colección, usa la siguiente consulta:"
+"<![CDATA[select account, payment\n"
+"from Account as account\n"
+" join account.holder.users as user\n"
+" left outer join account.payments as payment\n"
+"where :currentUser = user\n"
+" and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, "
+"PaymentStatus.UNPAID)\n"
+"order by account.type.sortOrder, account.accountNumber, payment.dueDate]]>"
+msgstr ""
-#: index.docbook:914
+#. Tag: title
+#: query_hql.xml:914
+#, no-c-format
msgid "Bulk update and delete"
+msgstr "Sentencias UPDATE y DELETE masivas"
+
+#. Tag: para
+#: query_hql.xml:916
+#, no-c-format
+msgid ""
+"HQL now supports <literal>update</literal>, <literal>delete</literal> and "
+"<literal>insert ... select ...</literal> statements. See <xref linkend="
+"\"batch-direct\"/> for details."
msgstr ""
- "<![CDATA[select usr.id, usr.name\n"
- "from User as usr \n"
- " left join usr.messages as msg\n"
- "group by usr.id, usr.name\n"
- "order by count(msg)]]>"
+"HQL soporta ahora sentencias UPDATE y DELETE en HQL. Ver <xref linkend="
+"\"batch-direct\"/> para detalles."
-#: index.docbook:916
-msgid "HQL now supports <literal>update</literal>, <literal>delete</literal> and <literal>insert ... select ...</literal> statements. See <xref linkend=\"batch-direct\"/> for details."
-msgstr "Si tu base de datos soporta subselects, puedes colocar una condición sobre el tamaño de selección en la cláusula where de tu consulta:"
-
-#: index.docbook:924
+#. Tag: title
+#: query_hql.xml:924
+#, no-c-format
msgid "Tips & Tricks"
-msgstr "<![CDATA[from User usr where size(usr.messages) >= 1]]>"
+msgstr "Consejos y Trucos"
-#: index.docbook:926
-msgid "You can count the number of query results without actually returning them:"
-msgstr "Si tu base de datos no soporta subselects, usa la siguiente consulta:"
+#. Tag: para
+#: query_hql.xml:926
+#, no-c-format
+msgid ""
+"You can count the number of query results without actually returning them:"
+msgstr ""
+"Puedes contar el número de resultados de una consulta sin devolverlos "
+"realmente:"
-#: index.docbook:930
-msgid "<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\").iterate().next() ).intValue()]]>"
+#. Tag: programlisting
+#: query_hql.xml:930
+#, no-c-format
+msgid ""
+"<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\")."
+"iterate().next() ).intValue()]]>"
msgstr ""
- "<![CDATA[select usr.id, usr.name\n"
- "from User usr.name\n"
- " join usr.messages msg\n"
- "group by usr.id, usr.name\n"
- "having count(msg) >= 1]]>"
-#: index.docbook:932
+#. Tag: para
+#: query_hql.xml:932
+#, no-c-format
msgid "To order a result by the size of a collection, use the following query:"
-msgstr "Como esta solución no puede devolver un <literal>User</literal> con cero mensajes debido a la unión interior, la siguiente forma es también útil:"
+msgstr ""
+"Para ordenar un resultado por el tamaño de una colección, usa la siguiente "
+"consulta:"
-#: index.docbook:936
+#. Tag: programlisting
+#: query_hql.xml:936
+#, no-c-format
msgid ""
- "<![CDATA[select usr.id, usr.name\n"
- "from User as usr\n"
- " left join usr.messages as msg\n"
- "group by usr.id, usr.name\n"
- "order by count(msg)]]>"
+"<![CDATA[select usr.id, usr.name\n"
+"from User as usr\n"
+" left join usr.messages as msg\n"
+"group by usr.id, usr.name\n"
+"order by count(msg)]]>"
msgstr ""
- "<![CDATA[select usr.id, usr.name\n"
- "from User as usr\n"
- " left join usr.messages as msg\n"
- "group by usr.id, usr.name\n"
- "having count(msg) = 0]]>"
-#: index.docbook:938
-msgid "If your database supports subselects, you can place a condition upon selection size in the where clause of your query:"
-msgstr "Las propiedades de un JavaBean pueden ser ligadas al parámetros de consulta con nombre:"
+#. Tag: para
+#: query_hql.xml:938
+#, no-c-format
+msgid ""
+"If your database supports subselects, you can place a condition upon "
+"selection size in the where clause of your query:"
+msgstr ""
+"Si tu base de datos soporta subselects, puedes colocar una condición sobre "
+"el tamaño de selección en la cláusula where de tu consulta:"
-#: index.docbook:943
+#. Tag: programlisting
+#: query_hql.xml:943
+#, no-c-format
msgid "<![CDATA[from User usr where size(usr.messages) >= 1]]>"
msgstr ""
- "<![CDATA[Query q = s.createQuery(\"from foo Foo as foo where foo.name=:name and foo.size=:size\");\n"
- "q.setProperties(fooBean); // fooBean has getName() and getSize()\n"
- "List foos = q.list();]]>"
-#: index.docbook:945
+#. Tag: para
+#: query_hql.xml:945
+#, no-c-format
msgid "If your database doesn't support subselects, use the following query:"
-msgstr "Las colecciones son paginables usando la interface <literal>Query</literal> con un filtro:"
+msgstr "Si tu base de datos no soporta subselects, usa la siguiente consulta:"
-#: index.docbook:949
+#. Tag: programlisting
+#: query_hql.xml:949
+#, no-c-format
msgid ""
- "<![CDATA[select usr.id, usr.name\n"
- "from User usr.name\n"
- " join usr.messages msg\n"
- "group by usr.id, usr.name\n"
- "having count(msg) >= 1]]>"
+"<![CDATA[select usr.id, usr.name\n"
+"from User usr.name\n"
+" join usr.messages msg\n"
+"group by usr.id, usr.name\n"
+"having count(msg) >= 1]]>"
msgstr ""
- "<![CDATA[Query q = s.createFilter( collection, \"\" ); // the trivial filter\n"
- "q.setMaxResults(PAGE_SIZE);\n"
- "q.setFirstResult(PAGE_SIZE * pageNumber);\n"
- "List page = q.list();]]>"
-#: index.docbook:951
-msgid "As this solution can't return a <literal>User</literal> with zero messages because of the inner join, the following form is also useful:"
-msgstr "Los elementos de colección pueden ser ordenados o agrupados usando un filtro de consulta:"
+#. Tag: para
+#: query_hql.xml:951
+#, no-c-format
+msgid ""
+"As this solution can't return a <literal>User</literal> with zero messages "
+"because of the inner join, the following form is also useful:"
+msgstr ""
+"Como esta solución no puede devolver un <literal>User</literal> con cero "
+"mensajes debido a la unión interior, la siguiente forma es también útil:"
-#: index.docbook:956
+#. Tag: programlisting
+#: query_hql.xml:956
+#, no-c-format
msgid ""
- "<![CDATA[select usr.id, usr.name\n"
- "from User as usr\n"
- " left join usr.messages as msg\n"
- "group by usr.id, usr.name\n"
- "having count(msg) = 0]]>"
+"<![CDATA[select usr.id, usr.name\n"
+"from User as usr\n"
+" left join usr.messages as msg\n"
+"group by usr.id, usr.name\n"
+"having count(msg) = 0]]>"
msgstr ""
- "<![CDATA[Collection orderedCollection = s.filter( collection, \"order by this.amount\" );\n"
- "Collection counts = s.filter( collection, \"select this.type, count(this) group by this.type\" );]]>"
-#: index.docbook:958
+#. Tag: para
+#: query_hql.xml:958
+#, no-c-format
msgid "Properties of a JavaBean can be bound to named query parameters:"
-msgstr "Puedes hallar el tamaño de una colección sin inicializarla:"
+msgstr ""
+"Las propiedades de un JavaBean pueden ser ligadas al parámetros de consulta "
+"con nombre:"
-#: index.docbook:962
+#. Tag: programlisting
+#: query_hql.xml:962
+#, no-c-format
msgid ""
- "<![CDATA[Query q = s.createQuery(\"from foo Foo as foo where foo.name=:name and foo.size=:size\");\n"
- "q.setProperties(fooBean); // fooBean has getName() and getSize()\n"
- "List foos = q.list();]]>"
-msgstr "<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\").iterate().next() ).intValue();]]>"
+"<![CDATA[Query q = s.createQuery(\"from foo Foo as foo where foo.name=:name "
+"and foo.size=:size\");\n"
+"q.setProperties(fooBean); // fooBean has getName() and getSize()\n"
+"List foos = q.list();]]>"
+msgstr ""
-#: index.docbook:964
-msgid "Collections are pageable by using the <literal>Query</literal> interface with a filter:"
+#. Tag: para
+#: query_hql.xml:964
+#, no-c-format
+msgid ""
+"Collections are pageable by using the <literal>Query</literal> interface "
+"with a filter:"
msgstr ""
+"Las colecciones son paginables usando la interface <literal>Query</literal> "
+"con un filtro:"
-#: index.docbook:968
+#. Tag: programlisting
+#: query_hql.xml:968
+#, no-c-format
msgid ""
- "<![CDATA[Query q = s.createFilter( collection, \"\" ); // the trivial filter\n"
- "q.setMaxResults(PAGE_SIZE);\n"
- "q.setFirstResult(PAGE_SIZE * pageNumber);\n"
- "List page = q.list();]]>"
+"<![CDATA[Query q = s.createFilter( collection, \"\" ); // the trivial "
+"filter\n"
+"q.setMaxResults(PAGE_SIZE);\n"
+"q.setFirstResult(PAGE_SIZE * pageNumber);\n"
+"List page = q.list();]]>"
msgstr ""
-#: index.docbook:970
+#. Tag: para
+#: query_hql.xml:970
+#, no-c-format
msgid "Collection elements may be ordered or grouped using a query filter:"
msgstr ""
+"Los elementos de colección pueden ser ordenados o agrupados usando un filtro "
+"de consulta:"
-#: index.docbook:974
+#. Tag: programlisting
+#: query_hql.xml:974
+#, no-c-format
msgid ""
- "<![CDATA[Collection orderedCollection = s.filter( collection, \"order by this.amount\" );\n"
- "Collection counts = s.filter( collection, \"select this.type, count(this) group by this.type\" );]]>"
+"<![CDATA[Collection orderedCollection = s.filter( collection, \"order by "
+"this.amount\" );\n"
+"Collection counts = s.filter( collection, \"select this.type, count(this) "
+"group by this.type\" );]]>"
msgstr ""
-#: index.docbook:976
+#. Tag: para
+#: query_hql.xml:976
+#, no-c-format
msgid "You can find the size of a collection without initializing it:"
-msgstr ""
+msgstr "Puedes hallar el tamaño de una colección sin inicializarla:"
-#: index.docbook:980
-msgid "<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\").iterate().next() ).intValue();]]>"
+#. Tag: programlisting
+#: query_hql.xml:980
+#, no-c-format
+msgid ""
+"<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\")."
+"iterate().next() ).intValue();]]>"
msgstr ""
-#: index.docbook:985
+#. Tag: title
+#: query_hql.xml:985
+#, no-c-format
msgid "Components"
-msgstr ""
+msgstr "translator-credits"
-#: index.docbook:987
-msgid "Components might be used in just about every way that simple value types can be used in HQL queries. They can appear in the <literal>select</literal> clause:"
+#. Tag: para
+#: query_hql.xml:987
+#, no-c-format
+msgid ""
+"Components might be used in just about every way that simple value types can "
+"be used in HQL queries. They can appear in the <literal>select</literal> "
+"clause:"
msgstr ""
-#: index.docbook:992, index.docbook:1038
+#. Tag: programlisting
+#: query_hql.xml:992 query_hql.xml:1038
+#, no-c-format
msgid "<![CDATA[select p.name from from Person p]]>"
msgstr ""
-#: index.docbook:993
+#. Tag: programlisting
+#: query_hql.xml:993
+#, no-c-format
msgid "<![CDATA[select p.name.first from from Person p]]>"
msgstr ""
-#: index.docbook:995
-msgid "where the Person's name property is a component. Components can also be used in the <literal>where</literal> clause:"
+#. Tag: para
+#: query_hql.xml:995
+#, no-c-format
+msgid ""
+"where the Person's name property is a component. Components can also be used "
+"in the <literal>where</literal> clause:"
msgstr ""
-#: index.docbook:1000
+#. Tag: programlisting
+#: query_hql.xml:1000
+#, no-c-format
msgid "<![CDATA[from from Person p where p.name = :name]]>"
msgstr ""
-#: index.docbook:1001
+#. Tag: programlisting
+#: query_hql.xml:1001
+#, no-c-format
msgid "<![CDATA[from from Person p where p.name.first = :firstName]]>"
msgstr ""
-#: index.docbook:1003
+#. Tag: para
+#: query_hql.xml:1003
+#, no-c-format
msgid "Components can also be used in the <literal>order by</literal> clause:"
msgstr ""
-#: index.docbook:1007
+#. Tag: programlisting
+#: query_hql.xml:1007
+#, no-c-format
msgid "<![CDATA[from from Person p order by p.name]]>"
msgstr ""
-#: index.docbook:1008
+#. Tag: programlisting
+#: query_hql.xml:1008
+#, no-c-format
msgid "<![CDATA[from from Person p order by p.name.first]]>"
msgstr ""
-#: index.docbook:1010
-msgid "Another common use of components is in <xref linkend=\"queryhql-tuple\"/>row value constructors."
+#. Tag: para
+#: query_hql.xml:1010
+#, no-c-format
+msgid ""
+"Another common use of components is in <link linkend=\"queryhql-tuple\">row "
+"value constructors</link>."
msgstr ""
-#: index.docbook:1016
+#. Tag: title
+#: query_hql.xml:1016
+#, no-c-format
msgid "Row value constructor syntax"
msgstr ""
-#: index.docbook:1018
-msgid "HQL supports the use of ANSI SQL <literal>row value constructor</literal> syntax (sometimes called <literal>tuple</literal> syntax), even though the underlying database may not support that notion. Here we are generally referring to multi-valued comparisons, typically associated with components. Consider an entity Person which defines a name component:"
+#. Tag: para
+#: query_hql.xml:1018
+#, no-c-format
+msgid ""
+"HQL supports the use of ANSI SQL <literal>row value constructor</literal> "
+"syntax (sometimes called <literal>tuple</literal> syntax), even though the "
+"underlying database may not support that notion. Here we are generally "
+"referring to multi-valued comparisons, typically associated with components. "
+"Consider an entity Person which defines a name component:"
msgstr ""
-#: index.docbook:1025
-msgid "<![CDATA[from Person p where p.name.first='John' and p.name.last='Jingleheimer-Schmidt']]>"
+#. Tag: programlisting
+#: query_hql.xml:1025
+#, no-c-format
+msgid ""
+"<![CDATA[from Person p where p.name.first='John' and p.name."
+"last='Jingleheimer-Schmidt']]>"
msgstr ""
-#: index.docbook:1027
-msgid "That's valid syntax, although a little verbose. It be nice to make this a bit more concise and use <literal>row value constructor</literal> syntax:"
+#. Tag: para
+#: query_hql.xml:1027
+#, no-c-format
+msgid ""
+"That's valid syntax, although a little verbose. It be nice to make this a "
+"bit more concise and use <literal>row value constructor</literal> syntax:"
msgstr ""
-#: index.docbook:1032
+#. Tag: programlisting
+#: query_hql.xml:1032
+#, no-c-format
msgid "<![CDATA[from Person p where p.name=('John', 'Jingleheimer-Schmidt')]]>"
msgstr ""
-#: index.docbook:1034
-msgid "It can also be useful to specify this in the <literal>select</literal> clause:"
+#. Tag: para
+#: query_hql.xml:1034
+#, no-c-format
+msgid ""
+"It can also be useful to specify this in the <literal>select</literal> "
+"clause:"
msgstr ""
-#: index.docbook:1040
-msgid "Another time using <literal>row value constructor</literal> syntax can be beneficial is when using subqueries needing to compare against multiple values:"
+#. Tag: para
+#: query_hql.xml:1040
+#, no-c-format
+msgid ""
+"Another time using <literal>row value constructor</literal> syntax can be "
+"beneficial is when using subqueries needing to compare against multiple "
+"values:"
msgstr ""
-#: index.docbook:1045
+#. Tag: programlisting
+#: query_hql.xml:1045
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as cat\n"
- "where not ( cat.name, cat.color ) in (\n"
- " select cat.name, cat.color from DomesticCat cat\n"
- ")]]>"
+"<![CDATA[from Cat as cat\n"
+"where not ( cat.name, cat.color ) in (\n"
+" select cat.name, cat.color from DomesticCat cat\n"
+")]]>"
msgstr ""
-#: index.docbook:1047
-msgid "One thing to consider when deciding if you want to use this syntax is that the query will be dependent upon the ordering of the component sub-properties in the metadata."
+#. Tag: para
+#: query_hql.xml:1047
+#, no-c-format
+msgid ""
+"One thing to consider when deciding if you want to use this syntax is that "
+"the query will be dependent upon the ordering of the component sub-"
+"properties in the metadata."
msgstr ""
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
Modified: core/trunk/documentation/manual/translations/es-ES/content/query_sql.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/query_sql.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/query_sql.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,990 +1,1487 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: query_sql.xml:5
+#, no-c-format
msgid "Native SQL"
msgstr "SQL Nativo"
-#: index.docbook:7
-msgid "You may also express queries in the native SQL dialect of your database. This is useful if you want to utilize database specific features such as query hints or the <literal>CONNECT</literal> keyword in Oracle. It also provides a clean migration path from a direct SQL/JDBC based application to Hibernate."
-msgstr "Puedes también expresar consultas en el dialecto SQL nativo de tu base de datos. Esto es útil si quieres utilizar aspectos específicos de base de datos tal como consejos (hints) de consulta o la palabra clave <literal>CONNECT</literal> en Oracle. Provee además una clara ruta de migración desde una aplicación basada en SQL/JDBC directo a Hibernate."
+#. Tag: para
+#: query_sql.xml:7
+#, no-c-format
+msgid ""
+"You may also express queries in the native SQL dialect of your database. "
+"This is useful if you want to utilize database specific features such as "
+"query hints or the <literal>CONNECT</literal> keyword in Oracle. It also "
+"provides a clean migration path from a direct SQL/JDBC based application to "
+"Hibernate."
+msgstr ""
+"Puedes también expresar consultas en el dialecto SQL nativo de tu base de "
+"datos. Esto es útil si quieres utilizar aspectos específicos de base de "
+"datos tal como consejos (hints) de consulta o la palabra clave "
+"<literal>CONNECT</literal> en Oracle. Provee además una clara ruta de "
+"migración desde una aplicación basada en SQL/JDBC directo a Hibernate."
-#: index.docbook:13
-msgid "Hibernate3 allows you to specify handwritten SQL (including stored procedures) for all create, update, delete, and load operations."
-msgstr "Hibernate3 te permite especificar SQL escrito a mano (incluyendo procedimientos almacenados) para todas las operaciones de creación, actualización, borrado y carga."
+#. Tag: para
+#: query_sql.xml:13
+#, no-c-format
+msgid ""
+"Hibernate3 allows you to specify handwritten SQL (including stored "
+"procedures) for all create, update, delete, and load operations."
+msgstr ""
+"Hibernate3 te permite especificar SQL escrito a mano (incluyendo "
+"procedimientos almacenados) para todas las operaciones de creación, "
+"actualización, borrado y carga."
-#: index.docbook:17
+#. Tag: title
+#: query_sql.xml:17
+#, no-c-format
msgid "Using a <literal>SQLQuery</literal>"
-msgstr "Creando una <literal>Query</literal> de SQL nativo"
+msgstr "Using a <literal>SQLQuery</literal>"
-#: index.docbook:19
-msgid "Execution of native SQL queries is controlled via the <literal>SQLQuery</literal> interface, which is obtained by calling <literal>Session.createSQLQuery()</literal>. The following describes how to use this API for querying."
-msgstr "Las consultas SQL se controlan por medio de la interface <literal>SQLQuery</literal>, que se obtiene llamando a <literal>Session.createSQLQuery()</literal>."
+#. Tag: para
+#: query_sql.xml:19
+#, no-c-format
+msgid ""
+"Execution of native SQL queries is controlled via the <literal>SQLQuery</"
+"literal> interface, which is obtained by calling <literal>Session."
+"createSQLQuery()</literal>. The following describes how to use this API for "
+"querying."
+msgstr ""
+"Execution of native SQL queries is controlled via the <literal>SQLQuery</"
+"literal> interface, which is obtained by calling <literal>Session."
+"createSQLQuery()</literal>. The following describes how to use this API for "
+"querying."
-#: index.docbook:25
+#. Tag: title
+#: query_sql.xml:25
+#, no-c-format
msgid "Scalar queries"
-msgstr ""
- "<![CDATA[List cats = sess.createSQLQuery(\"select {cat.*} from cats cat\")\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .setMaxResults(50)\n"
- " .list();]]>"
+msgstr "Scalar queries"
-#: index.docbook:27
+#. Tag: para
+#: query_sql.xml:27
+#, no-c-format
msgid "The most basic SQL query is to get a list of scalars (values)."
-msgstr "Esta consulta especificada:"
+msgstr "The most basic SQL query is to get a list of scalars (values)."
-#: index.docbook:30
+#. Tag: programlisting
+#: query_sql.xml:30
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\").list();\n"
- "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").list();\n"
- "]]>"
-msgstr "la cadena de consulta SQL, con un lugar para que Hibernate inyecte los alias de columnas"
+"<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\").list();\n"
+"sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").list();\n"
+"]]>"
+msgstr ""
-#: index.docbook:32
-msgid "These will both return a List of Object arrays (Object[]) with scalar values for each column in the CATS table. Hibernate will use ResultSetMetadata to deduce the actual order and types of the returned scalar values."
-msgstr "la entidad devuelta por la consulta, y sus alias de tablas SQL"
+#. Tag: para
+#: query_sql.xml:32
+#, no-c-format
+msgid ""
+"These will both return a List of Object arrays (Object[]) with scalar values "
+"for each column in the CATS table. Hibernate will use ResultSetMetadata to "
+"deduce the actual order and types of the returned scalar values."
+msgstr ""
+"These will both return a List of Object arrays (Object[]) with scalar values "
+"for each column in the CATS table. Hibernate will use ResultSetMetadata to "
+"deduce the actual order and types of the returned scalar values."
-#: index.docbook:37
-msgid "To avoid the overhead of using <literal>ResultSetMetadata</literal> or simply to be more explicit in what is returned one can use <literal>addScalar()</literal>."
-msgstr "El método <literal>addEntity()</literal> asocia alias de tablas SQL con clases de entidad, y determina la forma del conjunto resultado de la consulta."
+#. Tag: para
+#: query_sql.xml:37
+#, no-c-format
+msgid ""
+"To avoid the overhead of using <literal>ResultSetMetadata</literal> or "
+"simply to be more explicit in what is returned one can use <literal>addScalar"
+"()</literal>."
+msgstr ""
+"To avoid the overhead of using <literal>ResultSetMetadata</literal> or "
+"simply to be more explicit in what is returned one can use <literal>addScalar"
+"()</literal>."
-#: index.docbook:41
+#. Tag: programlisting
+#: query_sql.xml:41
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
- " .addScalar(\"ID\", Hibernate.LONG)\n"
- " .addScalar(\"NAME\", Hibernate.STRING)\n"
- " .addScalar(\"BIRTHDATE\", Hibernate.DATE)\n"
- "]]>"
-msgstr "El método <literal>addJoin()</literal> puede ser usado para cargar asociaciones a otras entidades y colecciones."
+"<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
+" .addScalar(\"ID\", Hibernate.LONG)\n"
+" .addScalar(\"NAME\", Hibernate.STRING)\n"
+" .addScalar(\"BIRTHDATE\", Hibernate.DATE)\n"
+"]]>"
+msgstr ""
-#: index.docbook:43, index.docbook:89, index.docbook:170, index.docbook:321
+#. Tag: para
+#: query_sql.xml:43 query_sql.xml:89 query_sql.xml:170 query_sql.xml:321
+#, no-c-format
msgid "This query specified:"
-msgstr ""
- "<![CDATA[List cats = sess.createSQLQuery(\n"
- " \"select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id\"\n"
- " )\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .addJoin(\"kitten\", \"cat.kittens\")\n"
- " .list();]]>"
+msgstr "This query specified:"
-#: index.docbook:47, index.docbook:93, index.docbook:325
+#. Tag: para
+#: query_sql.xml:47 query_sql.xml:93 query_sql.xml:325
+#, no-c-format
msgid "the SQL query string"
-msgstr "Una consulta SQL nativa podría devolver un valor escalar simple o una combinación de escalares y entidades."
+msgstr "the SQL query string"
-#: index.docbook:51
+#. Tag: para
+#: query_sql.xml:51
+#, no-c-format
msgid "the columns and types to return"
+msgstr "the columns and types to return"
+
+#. Tag: para
+#: query_sql.xml:55
+#, no-c-format
+msgid ""
+"This will still return Object arrays, but now it will not use "
+"<literal>ResultSetMetdata</literal> but will instead explicitly get the ID, "
+"NAME and BIRTHDATE column as respectively a Long, String and a Short from "
+"the underlying resultset. This also means that only these three columns will "
+"be returned, even though the query is using <literal>*</literal> and could "
+"return more than the three listed columns."
msgstr ""
- "<![CDATA[Double max = (Double) sess.createSQLQuery(\"select max(cat.weight) as maxWeight from cats cat\")\n"
- " .addScalar(\"maxWeight\", Hibernate.DOUBLE);\n"
- " .uniqueResult();]]>"
+"This will still return Object arrays, but now it will not use "
+"<literal>ResultSetMetdata</literal> but will instead explicitly get the ID, "
+"NAME and BIRTHDATE column as respectively a Long, String and a Short from "
+"the underlying resultset. This also means that only these three columns will "
+"be returned, even though the query is using <literal>*</literal> and could "
+"return more than the three listed columns."
-#: index.docbook:55
-msgid "This will still return Object arrays, but now it will not use <literal>ResultSetMetdata</literal> but will instead explicitly get the ID, NAME and BIRTHDATE column as respectively a Long, String and a Short from the underlying resultset. This also means that only these three columns will be returned, even though the query is using <literal>*</literal> and could return more than the three listed columns."
-msgstr "Alias y referencias de propiedad"
+#. Tag: para
+#: query_sql.xml:63
+#, no-c-format
+msgid ""
+"It is possible to leave out the type information for all or some of the "
+"scalars."
+msgstr ""
+"It is possible to leave out the type information for all or some of the "
+"scalars."
-#: index.docbook:63
-msgid "It is possible to leave out the type information for all or some of the scalars."
-msgstr "La notación <literal>{cat.*}</literal> usada arriba es un atajo para \"todas las propiedades\". Alternativamente, puedes listar las columnas explícitamente, pero incluso en este caso dejamos que Hibernate inyecte los alias de columnas SQL para cada propiedad. El lugar para un alias de columna es sólo el nombre de propiedad cualificado por el alias de la tabla. En el siguiente ejemplo, recuperamos <literal>Cat</literal>s de una tabla diferente (<literal>cat_log</literal>) a una declarada en los metadatos de mapeo. Nota que podríamos incluso usar los alias de propiedad en la cláusula where si quisieramos."
+#. Tag: programlisting
+#: query_sql.xml:66
+#, no-c-format
+msgid ""
+"<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
+" .addScalar(\"ID\", Hibernate.LONG)\n"
+" .addScalar(\"NAME\")\n"
+" .addScalar(\"BIRTHDATE\")\n"
+"]]>"
+msgstr ""
-#: index.docbook:66
+#. Tag: para
+#: query_sql.xml:68
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
- " .addScalar(\"ID\", Hibernate.LONG)\n"
- " .addScalar(\"NAME\")\n"
- " .addScalar(\"BIRTHDATE\")\n"
- "]]>"
-msgstr "La sintáxis <literal>{}</literal> <emphasis>no</emphasis> es requerida para consultas con nombre. Ver"
+"This is essentially the same query as before, but now "
+"<literal>ResultSetMetaData</literal> is used to decide the type of NAME and "
+"BIRTHDATE where as the type of ID is explicitly specified."
+msgstr ""
+"This is essentially the same query as before, but now "
+"<literal>ResultSetMetaData</literal> is used to decide the type of NAME and "
+"BIRTHDATE where as the type of ID is explicitly specified."
-#: index.docbook:68
-msgid "This is essentially the same query as before, but now <literal>ResultSetMetaData</literal> is used to decide the type of NAME and BIRTHDATE where as the type of ID is explicitly specified."
+#. Tag: para
+#: query_sql.xml:72
+#, no-c-format
+msgid ""
+"How the java.sql.Types returned from ResultSetMetaData is mapped to "
+"Hibernate types is controlled by the Dialect. If a specific type is not "
+"mapped or does not result in the expected type it is possible to customize "
+"it via calls to <literal>registerHibernateType</literal> in the Dialect."
msgstr ""
- "<![CDATA[String sql = \"select cat.originalId as {cat.id}, \" +\n"
- " \"cat.mateid as {cat.mate}, cat.sex as {cat.sex}, \" +\n"
- " \"cat.weight*10 as {cat.weight}, cat.name as {cat.name} \" +\n"
- " \"from cat_log cat where {cat.mate} = :catId\"\n"
- " \n"
- "List loggedCats = sess.createSQLQuery(sql)\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .setLong(\"catId\", catId)\n"
- " .list();]]>"
+"How the java.sql.Types returned from ResultSetMetaData is mapped to "
+"Hibernate types is controlled by the Dialect. If a specific type is not "
+"mapped or does not result in the expected type it is possible to customize "
+"it via calls to <literal>registerHibernateType</literal> in the Dialect."
-#: index.docbook:72
-msgid "How the java.sql.Types returned from ResultSetMetaData is mapped to Hibernate types is controlled by the Dialect. If a specific type is not mapped or does not result in the expected type it is possible to customize it via calls to <literal>registerHibernateType</literal> in the Dialect."
-msgstr "<emphasis>Nota:</emphasis> si listas cada propiedad explícitamente, ¡debes incluir todas las propiedades de la clase <emphasis>y sus subclases</emphasis>!"
-
-#: index.docbook:80
+#. Tag: title
+#: query_sql.xml:80
+#, no-c-format
msgid "Entity queries"
-msgstr "Consultas SQL con nombre"
+msgstr "Entity queries"
-#: index.docbook:82
-msgid "The above queries were all about returning scalar values, basically returning the \"raw\" values from the resultset. The following shows how to get entity objects from a native sql query via <literal>addEntity()</literal>."
-msgstr "Las consultas SQL con nombre pueden definirse en el documento de mapeo y llamadas exactamente en la misma forma en que a una consulta HQL con nombre. En este caso, <emphasis>no</emphasis> necesitamos llamar a <literal>addEntity()</literal>."
+#. Tag: para
+#: query_sql.xml:82
+#, no-c-format
+msgid ""
+"The above queries were all about returning scalar values, basically "
+"returning the \"raw\" values from the resultset. The following shows how to "
+"get entity objects from a native sql query via <literal>addEntity()</"
+"literal>."
+msgstr ""
+"The above queries were all about returning scalar values, basically "
+"returning the \"raw\" values from the resultset. The following shows how to "
+"get entity objects from a native sql query via <literal>addEntity()</"
+"literal>."
-#: index.docbook:87
+#. Tag: programlisting
+#: query_sql.xml:87
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\").addEntity(Cat.class);\n"
- "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").addEntity(Cat.class);\n"
- "]]>"
+"<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\").addEntity(Cat.class);\n"
+"sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").addEntity(Cat."
+"class);\n"
+"]]>"
msgstr ""
- "<![CDATA[<sql-query name=\"persons\">\n"
- " <return alias=\"person\" class=\"eg.Person\"/>\n"
- " SELECT person.NAME AS {person.name},\n"
- " person.AGE AS {person.age},\n"
- " person.SEX AS {person.sex}\n"
- " FROM PERSON person \n"
- " WHERE person.NAME LIKE :namePattern\n"
- "</sql-query>]]>"
-#: index.docbook:97
+#. Tag: para
+#: query_sql.xml:97
+#, no-c-format
msgid "the entity returned by the query"
+msgstr "the entity returned by the query"
+
+#. Tag: para
+#: query_sql.xml:101
+#, no-c-format
+msgid ""
+"Assuming that Cat is mapped as a class with the columns ID, NAME and "
+"BIRTHDATE the above queries will both return a List where each element is a "
+"Cat entity."
msgstr ""
- "<![CDATA[<sql-query name=\"personsWith\">\n"
- " <return alias=\"person\" class=\"eg.Person\"/>\n"
- " <return-join alias=\"address\" property=\"person.mailingAddress\"/>\n"
- " SELECT person.NAME AS {person.name},\n"
- " person.AGE AS {person.age},\n"
- " person.SEX AS {person.sex},\n"
- " address.STREET AS {address.street},\n"
- " address.CITY AS {address.city},\n"
- " address.STATE AS {address.state},\n"
- " address.ZIP AS {address.zip}\n"
- " FROM PERSON person \n"
- " JOIN ADDRESS address\n"
- " ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
- " WHERE person.NAME LIKE :namePattern\n"
- "</sql-query>]]>"
+"Assuming that Cat is mapped as a class with the columns ID, NAME and "
+"BIRTHDATE the above queries will both return a List where each element is a "
+"Cat entity."
-#: index.docbook:101
-msgid "Assuming that Cat is mapped as a class with the columns ID, NAME and BIRTHDATE the above queries will both return a List where each element is a Cat entity."
-msgstr "Una consulta SQL con nombre puede devolver un valor escalar. Debes especificar el alias de columna y tipo Hibernate usando el elementp <literal><return-scalar></literal>:"
-
-#: index.docbook:105
-msgid "If the entity is mapped with a <literal>many-to-one</literal> to another entity it is required to also return this when performing the native query, otherwise a database specific \"column not found\" error will occur. The additional columns will automatically be returned when using the * notation, but we prefer to be explicit as in the following example for a <literal>many-to-one</literal> to a <literal>Dog</literal>:"
+#. Tag: para
+#: query_sql.xml:105
+#, no-c-format
+msgid ""
+"If the entity is mapped with a <literal>many-to-one</literal> to another "
+"entity it is required to also return this when performing the native query, "
+"otherwise a database specific \"column not found\" error will occur. The "
+"additional columns will automatically be returned when using the * notation, "
+"but we prefer to be explicit as in the following example for a <literal>many-"
+"to-one</literal> to a <literal>Dog</literal>:"
msgstr ""
- "<![CDATA[<sql-query name=\"mySqlQuery\">\n"
- " <return-scalar column=\"name\" type=\"string\"/>\n"
- " <return-scalar column=\"age\" type=\"long\"/>\n"
- " SELECT p.NAME AS name,\n"
- " p.AGE AS age,\n"
- " FROM PERSON p WHERE p.NAME LIKE 'Hiber%'\n"
- "</sql-query>]]>"
+"If the entity is mapped with a <literal>many-to-one</literal> to another "
+"entity it is required to also return this when performing the native query, "
+"otherwise a database specific \"column not found\" error will occur. The "
+"additional columns will automatically be returned when using the * notation, "
+"but we prefer to be explicit as in the following example for a <literal>many-"
+"to-one</literal> to a <literal>Dog</literal>:"
-#: index.docbook:113
+#. Tag: programlisting
+#: query_sql.xml:113
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, DOG_ID FROM CATS\").addEntity(Cat.class);\n"
- "]]>"
-msgstr "Usando return-property para especificar explícitamente nombres de columna/alias"
+"<![CDATA[sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, DOG_ID FROM CATS"
+"\").addEntity(Cat.class);\n"
+"]]>"
+msgstr ""
-#: index.docbook:115
+#. Tag: para
+#: query_sql.xml:115
+#, no-c-format
msgid "This will allow cat.getDog() to function properly."
-msgstr "Con <literal><return-property></literal> puedes decirle explícitamente a Hibernate qué alias de columna usar, en vez de usar la sintáxis <literal>{}</literal> para dejar que Hibernate inyecte sus propios alias."
+msgstr "This will allow cat.getDog() to function properly."
-#: index.docbook:119
+#. Tag: title
+#: query_sql.xml:119
+#, no-c-format
msgid "Handling associations and collections"
+msgstr "Handling associations and collections"
+
+#. Tag: para
+#: query_sql.xml:121
+#, no-c-format
+msgid ""
+"It is possible to eagerly join in the <literal>Dog</literal> to avoid the "
+"possible extra roundtrip for initializing the proxy. This is done via the "
+"<literal>addJoin()</literal> method, which allows you to join in an "
+"association or collection."
msgstr ""
- "<![CDATA[<sql-query name=\"mySqlQuery\">\n"
- " <return alias=\"person\" class=\"eg.Person\">\n"
- " <return-property name=\"name\" column=\"myName\"/>\n"
- " <return-property name=\"age\" column=\"myAge\"/>\n"
- " <return-property name=\"sex\" column=\"mySex\"/>\n"
- " </return>\n"
- " SELECT person.NAME AS myName,\n"
- " person.AGE AS myAge,\n"
- " person.SEX AS mySex,\n"
- " FROM PERSON person WHERE person.NAME LIKE :name\n"
- "</sql-query>\n"
- "]]>"
+"It is possible to eagerly join in the <literal>Dog</literal> to avoid the "
+"possible extra roundtrip for initializing the proxy. This is done via the "
+"<literal>addJoin()</literal> method, which allows you to join in an "
+"association or collection."
-#: index.docbook:121
-msgid "It is possible to eagerly join in the <literal>Dog</literal> to avoid the possible extra roundtrip for initializing the proxy. This is done via the <literal>addJoin()</literal> method, which allows you to join in an association or collection."
-msgstr "<literal><return-property></literal> también trabaja con múltiples columnas. Esto resuelve una limitación de la sintáxis <literal>{}</literal>, la cual no puede permitir un control fino de propiedades multi-columna."
+#. Tag: programlisting
+#: query_sql.xml:126
+#, no-c-format
+msgid ""
+"<![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\")\n"
+" .addEntity(\"cat\", Cat.class)\n"
+" .addJoin(\"cat.dog\");\n"
+"]]>"
+msgstr ""
-#: index.docbook:126
+#. Tag: para
+#: query_sql.xml:128
+#, no-c-format
msgid ""
- "<![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\")\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .addJoin(\"cat.dog\");\n"
- "]]>"
+"In this example the returned <literal>Cat</literal>'s will have their "
+"<literal>dog</literal> property fully initialized without any extra "
+"roundtrip to the database. Notice that we added a alias name (\"cat\") to be "
+"able to specify the target property path of the join. It is possible to do "
+"the same eager joining for collections, e.g. if the <literal>Cat</literal> "
+"had a one-to-many to <literal>Dog</literal> instead."
msgstr ""
- "<![CDATA[<sql-query name=\"organizationCurrentEmployments\">\n"
- " <return alias=\"emp\" class=\"Employment\"> \n"
- " <return-property name=\"salary\"> \n"
- " <return-column name=\"VALUE\"/>\n"
- " <return-column name=\"CURRENCY\"/> \n"
- " </return-property>\n"
- " <return-property name=\"endDate\" column=\"myEndDate\"/>\n"
- " </return>\n"
- " SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer}, \n"
- " STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate},\n"
- " REGIONCODE as {emp.regionCode}, EID AS {emp.id}, VALUE, CURRENCY\n"
- " FROM EMPLOYMENT\n"
- " WHERE EMPLOYER = :id AND ENDDATE IS NULL\n"
- " ORDER BY STARTDATE ASC\n"
- "</sql-query>]]>"
+"In this example the returned <literal>Cat</literal>'s will have their "
+"<literal>dog</literal> property fully initialized without any extra "
+"roundtrip to the database. Notice that we added a alias name (\"cat\") to be "
+"able to specify the target property path of the join. It is possible to do "
+"the same eager joining for collections, e.g. if the <literal>Cat</literal> "
+"had a one-to-many to <literal>Dog</literal> instead."
-#: index.docbook:128
-msgid "In this example the returned <literal>Cat</literal>'s will have their <literal>dog</literal> property fully initialized without any extra roundtrip to the database. Notice that we added a alias name (\"cat\") to be able to specify the target property path of the join. It is possible to do the same eager joining for collections, e.g. if the <literal>Cat</literal> had a one-to-many to <literal>Dog</literal> instead."
-msgstr "Nota que en este ejemplo hemos usado <literal><return-property></literal> en combinación con la sintáxis <literal>{}</literal> para inyección, permitiendo a los usuarios elejir cómo quieren referirse a las columnas y propiedades."
+#. Tag: programlisting
+#: query_sql.xml:136
+#, no-c-format
+msgid ""
+"<![CDATA[sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, D_ID, D_NAME, "
+"CAT_ID FROM CATS c, DOGS d WHERE c.ID = d.CAT_ID\")\n"
+" .addEntity(\"cat\", Cat.class)\n"
+" .addJoin(\"cat.dogs\");\n"
+"]]>"
+msgstr ""
-#: index.docbook:136
+#. Tag: para
+#: query_sql.xml:138
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, D_ID, D_NAME, CAT_ID FROM CATS c, DOGS d WHERE c.ID = d.CAT_ID\")\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .addJoin(\"cat.dogs\");\n"
- "]]>"
-msgstr "Si tu mapeo tiene un discriminador debes usar <literal><return-discriminator></literal> para especificar la columna discriminadora."
+"At this stage we are reaching the limits of what is possible with native "
+"queries without starting to enhance the sql queries to make them usable in "
+"Hibernate; the problems starts to arise when returning multiple entities of "
+"the same type or when the default alias/column names are not enough."
+msgstr ""
+"At this stage we are reaching the limits of what is possible with native "
+"queries without starting to enhance the sql queries to make them usable in "
+"Hibernate; the problems starts to arise when returning multiple entities of "
+"the same type or when the default alias/column names are not enough."
-#: index.docbook:138
-msgid "At this stage we are reaching the limits of what is possible with native queries without starting to enhance the sql queries to make them usable in Hibernate; the problems starts to arise when returning multiple entities of the same type or when the default alias/column names are not enough."
-msgstr "Usando procedimientos almacenados para consultar"
-
-#: index.docbook:146
+#. Tag: title
+#: query_sql.xml:146
+#, no-c-format
msgid "Returning multiple entities"
-msgstr "Hibernate3 introduce soporte para consultas vía procedimientos almacenados. Los procedimientos almacenados deben devolver un conjunto resultado como el primer parámetro de salida para ser capaces de funcionar con Hibernate. Un ejemplo de uno procedimiento almacenado en Oracle 9 o superior es así:"
+msgstr "Returning multiple entities"
-#: index.docbook:148
-msgid "Until now the result set column names are assumed to be the same as the column names specified in the mapping document. This can be problematic for SQL queries which join multiple tables, since the same column names may appear in more than one table."
+#. Tag: para
+#: query_sql.xml:148
+#, no-c-format
+msgid ""
+"Until now the result set column names are assumed to be the same as the "
+"column names specified in the mapping document. This can be problematic for "
+"SQL queries which join multiple tables, since the same column names may "
+"appear in more than one table."
msgstr ""
- "<![CDATA[CREATE OR REPLACE FUNCTION selectAllEmployments \n"
- " RETURN SYS_REFCURSOR \n"
- "AS \n"
- " st_cursor SYS_REFCURSOR; \n"
- "BEGIN \n"
- " OPEN st_cursor FOR \n"
- " SELECT EMPLOYEE, EMPLOYER, \n"
- " STARTDATE, ENDDATE, \n"
- " REGIONCODE, EID, VALUE, CURRENCY \n"
- " FROM EMPLOYMENT; \n"
- " RETURN st_cursor; \n"
- " END;]]>"
+"Until now the result set column names are assumed to be the same as the "
+"column names specified in the mapping document. This can be problematic for "
+"SQL queries which join multiple tables, since the same column names may "
+"appear in more than one table."
-#: index.docbook:153
-msgid "Column alias injection is needed in the following query (which most likely will fail):"
-msgstr "Para usar esta consulta en Hibernate necesitas mapearla por medio de una consulta con nombre."
+#. Tag: para
+#: query_sql.xml:153
+#, no-c-format
+msgid ""
+"Column alias injection is needed in the following query (which most likely "
+"will fail):"
+msgstr ""
+"Column alias injection is needed in the following query (which most likely "
+"will fail):"
-#: index.docbook:156
+#. Tag: programlisting
+#: query_sql.xml:156
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT c.*, m.* FROM CATS c, CATS m WHERE c.MOTHER_ID = c.ID\")\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .addEntity(\"mother\", Cat.class)\n"
- "]]>"
+"<![CDATA[sess.createSQLQuery(\"SELECT c.*, m.* FROM CATS c, CATS m WHERE c."
+"MOTHER_ID = c.ID\")\n"
+" .addEntity(\"cat\", Cat.class)\n"
+" .addEntity(\"mother\", Cat.class)\n"
+"]]>"
msgstr ""
- "<![CDATA[<sql-query name=\"selectAllEmployees_SP\" callable=\"true\">\n"
- " <return alias=\"emp\" class=\"Employment\">\n"
- " <return-property name=\"employee\" column=\"EMPLOYEE\"/>\n"
- " <return-property name=\"employer\" column=\"EMPLOYER\"/> \n"
- " <return-property name=\"startDate\" column=\"STARTDATE\"/>\n"
- " <return-property name=\"endDate\" column=\"ENDDATE\"/> \n"
- " <return-property name=\"regionCode\" column=\"REGIONCODE\"/> \n"
- " <return-property name=\"id\" column=\"EID\"/> \n"
- " <return-property name=\"salary\"> \n"
- " <return-column name=\"VALUE\"/>\n"
- " <return-column name=\"CURRENCY\"/> \n"
- " </return-property>\n"
- " </return>\n"
- " { ? = call selectAllEmployments() }\n"
- "</sql-query>]]>"
-#: index.docbook:158
-msgid "The intention for this query is to return two Cat instances per row, a cat and its mother. This will fail since there is a conflict of names since they are mapped to the same column names and on some databases the returned column aliases will most likely be on the form \"c.ID\", \"c.NAME\", etc. which are not equal to the columns specificed in the mappings (\"ID\" and \"NAME\")."
-msgstr "Nota que los procedimientos almacenados sólo devuelven escalares y entidades. No están soportados <literal><return-join></literal> y <literal><load-collection></literal>."
+#. Tag: para
+#: query_sql.xml:158
+#, no-c-format
+msgid ""
+"The intention for this query is to return two Cat instances per row, a cat "
+"and its mother. This will fail since there is a conflict of names since they "
+"are mapped to the same column names and on some databases the returned "
+"column aliases will most likely be on the form \"c.ID\", \"c.NAME\", etc. "
+"which are not equal to the columns specificed in the mappings (\"ID\" and "
+"\"NAME\")."
+msgstr ""
+"The intention for this query is to return two Cat instances per row, a cat "
+"and its mother. This will fail since there is a conflict of names since they "
+"are mapped to the same column names and on some databases the returned "
+"column aliases will most likely be on the form \"c.ID\", \"c.NAME\", etc. "
+"which are not equal to the columns specificed in the mappings (\"ID\" and "
+"\"NAME\")."
-#: index.docbook:165
+#. Tag: para
+#: query_sql.xml:165
+#, no-c-format
msgid "The following form is not vulnerable to column name duplication:"
-msgstr "Reglas/limitaciones para usar procedimientos almacenados"
+msgstr "The following form is not vulnerable to column name duplication:"
-#: index.docbook:168
+#. Tag: programlisting
+#: query_sql.xml:168
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT {cat.*}, {mother.*} FROM CATS c, CATS m WHERE c.MOTHER_ID = c.ID\")\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .addEntity(\"mother\", Cat.class)\n"
- "]]>"
-msgstr "Para usar procedimientos almacenados con Hibernate los procedimientos tienen que seguir algunas reglas. Si no siguen esas reglas no son usables por Hibernate. Si aún quisieras usar estos procedimientos tendrías que ejecutarlos por medio de <literal>session.connection()</literal>. Las reglas son diferentes para cada base de datos, ya que los vendedores de base de datos tienen diferentes semánticas/sintáxis de procedimientos almacenados."
+"<![CDATA[sess.createSQLQuery(\"SELECT {cat.*}, {mother.*} FROM CATS c, CATS "
+"m WHERE c.MOTHER_ID = c.ID\")\n"
+" .addEntity(\"cat\", Cat.class)\n"
+" .addEntity(\"mother\", Cat.class)\n"
+"]]>"
+msgstr ""
-#: index.docbook:174
-msgid "the SQL query string, with placeholders for Hibernate to inject column aliases"
-msgstr "Para Oracle se aplican las siguientes reglas:"
+#. Tag: para
+#: query_sql.xml:174
+#, no-c-format
+msgid ""
+"the SQL query string, with placeholders for Hibernate to inject column "
+"aliases"
+msgstr ""
+"the SQL query string, with placeholders for Hibernate to inject column "
+"aliases"
-#: index.docbook:179
+#. Tag: para
+#: query_sql.xml:179
+#, no-c-format
msgid "the entities returned by the query"
-msgstr "El procedimiento debe devolver un conjunto resultado. Esto se hace devolviendo un <literal>SYS_REFCURSOR</literal> en Oracle 9 o 10. En Oracle necesitas definir un tipo <literal>REF CURSOR</literal>."
+msgstr "the entities returned by the query"
-#: index.docbook:183
-msgid "The {cat.*} and {mother.*} notation used above is a shorthand for \"all properties\". Alternatively, you may list the columns explicity, but even in this case we let Hibernate inject the SQL column aliases for each property. The placeholder for a column alias is just the property name qualified by the table alias. In the following example, we retrieve Cats and their mothers from a different table (cat_log) to the one declared in the mapping metadata. Notice that we may even use the property aliases in the where clause if we like."
-msgstr "La forma recomendada es <literal>{ ? = call procName(<parameters>) }</literal> o <literal>{ ? = call procName }</literal> (esto es más una regla de Oracle que una regla de Hibernate)."
+#. Tag: para
+#: query_sql.xml:183
+#, no-c-format
+msgid ""
+"The {cat.*} and {mother.*} notation used above is a shorthand for \"all "
+"properties\". Alternatively, you may list the columns explicity, but even in "
+"this case we let Hibernate inject the SQL column aliases for each property. "
+"The placeholder for a column alias is just the property name qualified by "
+"the table alias. In the following example, we retrieve Cats and their "
+"mothers from a different table (cat_log) to the one declared in the mapping "
+"metadata. Notice that we may even use the property aliases in the where "
+"clause if we like."
+msgstr ""
+"The {cat.*} and {mother.*} notation used above is a shorthand for \"all "
+"properties\". Alternatively, you may list the columns explicity, but even in "
+"this case we let Hibernate inject the SQL column aliases for each property. "
+"The placeholder for a column alias is just the property name qualified by "
+"the table alias. In the following example, we retrieve Cats and their "
+"mothers from a different table (cat_log) to the one declared in the mapping "
+"metadata. Notice that we may even use the property aliases in the where "
+"clause if we like."
-#: index.docbook:192
+#. Tag: programlisting
+#: query_sql.xml:192
+#, no-c-format
msgid ""
- "<![CDATA[String sql = \"SELECT ID as {c.id}, NAME as {c.name}, \" + \n"
- " \"BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother.*} \" +\n"
- " \"FROM CAT_LOG c, CAT_LOG m WHERE {c.mother} = c.ID\";\n"
- "\n"
- "List loggedCats = sess.createSQLQuery(sql)\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .addEntity(\"mother\", Cat.class).list()\n"
- "]]>"
-msgstr "Para Sybase o MS SQL server se aplican las siguientes reglas:"
+"<![CDATA[String sql = \"SELECT ID as {c.id}, NAME as {c.name}, \" + \n"
+" \"BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother.*} "
+"\" +\n"
+" \"FROM CAT_LOG c, CAT_LOG m WHERE {c.mother} = c.ID\";\n"
+"\n"
+"List loggedCats = sess.createSQLQuery(sql)\n"
+" .addEntity(\"cat\", Cat.class)\n"
+" .addEntity(\"mother\", Cat.class).list()\n"
+"]]>"
+msgstr ""
-#: index.docbook:195
+#. Tag: title
+#: query_sql.xml:195
+#, no-c-format
msgid "Alias and property references"
-msgstr "El procedimiento debe devolver un conjunto resultado. Nota que ya que estos servidores pueden y devolverán múltiples conjuntos resultados y cuentas de actualización, Hibernate iterará los resultados y tomará el primer resultado que sea un conjunto resultado como su valor a devolver. Todo lo demás será descartado."
+msgstr "Alias and property references"
-#: index.docbook:197
-msgid "For most cases the above alias injection is needed, but for queries relating to more complex mappings like composite properties, inheritance discriminators, collections etc. there are some specific aliases to use to allow Hibernate to inject the proper aliases."
-msgstr "Si habilitas <literal>SET NOCOUNT ON</literal> en tu procedimiento será probablemente más eficiente, pero esto no es un requerimiento."
+#. Tag: para
+#: query_sql.xml:197
+#, no-c-format
+msgid ""
+"For most cases the above alias injection is needed, but for queries relating "
+"to more complex mappings like composite properties, inheritance "
+"discriminators, collections etc. there are some specific aliases to use to "
+"allow Hibernate to inject the proper aliases."
+msgstr ""
+"For most cases the above alias injection is needed, but for queries relating "
+"to more complex mappings like composite properties, inheritance "
+"discriminators, collections etc. there are some specific aliases to use to "
+"allow Hibernate to inject the proper aliases."
-#: index.docbook:202
-msgid "The following table shows the different possibilities of using the alias injection. Note: the alias names in the result are examples, each alias will have a unique and probably different name when used."
-msgstr "SQL personalizado para crear, actualizar y borrar"
+#. Tag: para
+#: query_sql.xml:202
+#, no-c-format
+msgid ""
+"The following table shows the different possibilities of using the alias "
+"injection. Note: the alias names in the result are examples, each alias will "
+"have a unique and probably different name when used."
+msgstr ""
+"The following table shows the different possibilities of using the alias "
+"injection. Note: the alias names in the result are examples, each alias will "
+"have a unique and probably different name when used."
-#: index.docbook:208
+#. Tag: title
+#: query_sql.xml:208
+#, no-c-format
msgid "Alias injection names"
-msgstr "Hibernate3 puede usar sentencias SQL personalizadas para las operaciones de crear, actualizar y borrar. Los persistidores de clases y colecciones en Hibernate ya contienen un conjunto de cadenas generadas en tiempo de configuración (insertsql, deletesql, updatesql, etc.). Las etiquetas de mapeo <literal><sql-insert></literal>, <literal><sql-delete></literal>, y <literal><sql-update></literal> sobrescriben estas cadenas:"
+msgstr "Alias injection names"
-#: index.docbook:219
+#. Tag: entry
+#: query_sql.xml:219
+#, no-c-format
msgid "Description"
-msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <property name=\"name\" not-null=\"true\"/>\n"
- " <sql-insert>INSERT INTO PERSON (NAME, ID) VALUES ( UPPER(?), ? )</sql-insert>\n"
- " <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE ID=?</sql-update>\n"
- " <sql-delete>DELETE FROM PERSON WHERE ID=?</sql-delete>\n"
- "</class>]]>"
+msgstr "Description"
-#: index.docbook:221
+#. Tag: entry
+#: query_sql.xml:221
+#, no-c-format
msgid "Syntax"
-msgstr "El SQL se ejecuta directamente en tu base de datos, de modo que eres libre de usar cualquier dialecto que quieras. Esto reducirá, por supuesto, la portabilidad de tu mapeo si usas SQL específico de la base de datos."
+msgstr "Syntax"
-#: index.docbook:223
+#. Tag: entry
+#: query_sql.xml:223
+#, no-c-format
msgid "Example"
-msgstr "Los procedimientos almacenados son soportados si está establecido el atributo <literal>callable</literal>:"
+msgstr "Example"
-#: index.docbook:229
+#. Tag: entry
+#: query_sql.xml:229
+#, no-c-format
msgid "A simple property"
-msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <property name=\"name\" not-null=\"true\"/>\n"
- " <sql-insert callable=\"true\">{call createPerson (?, ?)}</sql-insert>\n"
- " <sql-delete callable=\"true\">{? = call deletePerson (?)}</sql-delete>\n"
- " <sql-update callable=\"true\">{? = call updatePerson (?, ?)}</sql-update>\n"
- "</class>]]>"
+msgstr "A simple property"
-#: index.docbook:231
+#. Tag: literal
+#: query_sql.xml:231
+#, no-c-format
msgid "{[aliasname].[propertyname]"
-msgstr "El orden de los parámetros posicionales son actualmente vitales, ya que deben estar en la misma secuencia en que las espera Hibernate."
+msgstr "{[aliasname].[propertyname]"
-#: index.docbook:233
+#. Tag: literal
+#: query_sql.xml:233
+#, no-c-format
msgid "A_NAME as {item.name}"
-msgstr "Puedes ver el orden esperado habilitando el registro de depuración para el nivel <literal>org.hibernate.persister.entity</literal>. Con este nivel habilitado, Hibernate imprimirá el SQL estático que se usa para crear, actualizar, borrar, etc. las entidades. (Para ver la secuencia esperada, recuerda no incluir tu SQL personalizado en los ficheros de mapeo ya que sobrescribirán el sql estático generado por Hibernate.)"
+msgstr "A_NAME as {item.name}"
-#: index.docbook:237
+#. Tag: entry
+#: query_sql.xml:237
+#, no-c-format
msgid "A composite property"
-msgstr "Los procedimientos almacenados son, en la mayoría de los casos (léase, mejor hacerlo que no hacerlo), obligados a devolver el número de filas insertadas/actualizadas/borradas, ya que Hibernate tiene algunas comprobaciones en tiempo de ejecución del éxito de la sentencia. Hibernate siempre registra el primer parámetro de la sentencia como un parámetro de salida numérico para las operaciones CUD:"
+msgstr "A composite property"
-#: index.docbook:239
+#. Tag: literal
+#: query_sql.xml:239
+#, no-c-format
msgid "{[aliasname].[componentname].[propertyname]}"
-msgstr ""
- "<![CDATA[CREATE OR REPLACE FUNCTION updatePerson (uid IN NUMBER, uname IN VARCHAR2)\n"
- " RETURN NUMBER IS\n"
- "BEGIN\n"
- "\n"
- " update PERSON\n"
- " set\n"
- " NAME = uname,\n"
- " where\n"
- " ID = uid;\n"
- "\n"
- " return SQL%ROWCOUNT;\n"
- "\n"
- "END updatePerson;]]>"
+msgstr "{[aliasname].[componentname].[propertyname]}"
-#: index.docbook:241
+#. Tag: literal
+#: query_sql.xml:241
+#, no-c-format
msgid "CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}"
-msgstr "SQL personalizado para carga"
+msgstr "CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}"
-#: index.docbook:246
+#. Tag: entry
+#: query_sql.xml:246
+#, no-c-format
msgid "Discriminator of an entity"
-msgstr "Puedes también declarar tu propias consultas SQL (o HQL) para cargar entidades:"
+msgstr "Discriminator of an entity"
-#: index.docbook:248
+#. Tag: literal
+#: query_sql.xml:248
+#, no-c-format
msgid "{[aliasname].class}"
-msgstr ""
- "<![CDATA[<sql-query name=\"person\">\n"
- " <return alias=\"pers\" class=\"Person\" lock-mode=\"upgrade\"/>\n"
- " SELECT NAME AS {pers.name}, ID AS {pers.id} \n"
- " FROM PERSON \n"
- " WHERE ID=? \n"
- " FOR UPDATE\n"
- "</sql-query>]]>"
+msgstr "{[aliasname].class}"
-#: index.docbook:250
+#. Tag: literal
+#: query_sql.xml:250
+#, no-c-format
msgid "DISC as {item.class}"
-msgstr "Esto es sólo una declaración de consulta con nombrem como se ha discutido anteriormente. Puedes hacer referencia a esta consulta con nombre en un mapeo de clase:"
+msgstr "DISC as {item.class}"
-#: index.docbook:254
+#. Tag: entry
+#: query_sql.xml:254
+#, no-c-format
msgid "All properties of an entity"
-msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <property name=\"name\" not-null=\"true\"/>\n"
- " <loader query-ref=\"person\"/>\n"
- "</class>]]>"
+msgstr "All properties of an entity"
-#: index.docbook:256, index.docbook:304
+#. Tag: literal
+#: query_sql.xml:256 query_sql.xml:304
+#, no-c-format
msgid "{[aliasname].*}"
-msgstr "Esto incluso funciona con procedimientos almacenados."
+msgstr "{[aliasname].*}"
-#: index.docbook:258
+#. Tag: literal
+#: query_sql.xml:258
+#, no-c-format
msgid "{item.*}"
-msgstr "Puedes incluso definit una consulta para la carga de colecciones:"
+msgstr "{item.*}"
-#: index.docbook:262
+#. Tag: entry
+#: query_sql.xml:262
+#, no-c-format
msgid "A collection key"
-msgstr ""
- "<![CDATA[<set name=\"employments\" inverse=\"true\">\n"
- " <key/>\n"
- " <one-to-many class=\"Employment\"/>\n"
- " <loader query-ref=\"employments\"/>\n"
- "</set>]]>"
+msgstr "A collection key"
-#: index.docbook:264
+#. Tag: literal
+#: query_sql.xml:264
+#, no-c-format
msgid "{[aliasname].key}"
-msgstr ""
- "<![CDATA[<sql-query name=\"employments\">\n"
- " <load-collection alias=\"emp\" role=\"Person.employments\"/>\n"
- " SELECT {emp.*}\n"
- " FROM EMPLOYMENT emp\n"
- " WHERE EMPLOYER = :id\n"
- " ORDER BY STARTDATE ASC, EMPLOYEE ASC\n"
- "</sql-query>]]>"
+msgstr "{[aliasname].key}"
-#: index.docbook:266
+#. Tag: literal
+#: query_sql.xml:266
+#, no-c-format
msgid "ORGID as {coll.key}"
-msgstr "Podrías incluso definir un cargador de entidades que cargue una colección por recuperación por unión (join fetching):"
+msgstr "ORGID as {coll.key}"
-#: index.docbook:270
+#. Tag: entry
+#: query_sql.xml:270
+#, no-c-format
msgid "The id of an collection"
-msgstr ""
- "<![CDATA[<sql-query name=\"person\">\n"
- " <return alias=\"pers\" class=\"Person\"/>\n"
- " <return-join alias=\"emp\" property=\"pers.employments\"/> \n"
- " SELECT NAME AS {pers.*}, {emp.*}\n"
- " FROM PERSON pers\n"
- " LEFT OUTER JOIN EMPLOYMENT emp \n"
- " ON pers.ID = emp.PERSON_ID\n"
- " WHERE ID=?\n"
- "</sql-query>]]>"
+msgstr "The id of an collection"
-#: index.docbook:272
+#. Tag: literal
+#: query_sql.xml:272
+#, no-c-format
msgid "{[aliasname].id}"
-msgstr ""
+msgstr "{[aliasname].id}"
-#: index.docbook:274
+#. Tag: literal
+#: query_sql.xml:274
+#, no-c-format
msgid "EMPID as {coll.id}"
-msgstr ""
+msgstr "EMPID as {coll.id}"
-#: index.docbook:278
+#. Tag: entry
+#: query_sql.xml:278
+#, no-c-format
msgid "The element of an collection"
-msgstr ""
+msgstr "The element of an collection"
-#: index.docbook:280
+#. Tag: literal
+#: query_sql.xml:280
+#, no-c-format
msgid "{[aliasname].element}"
-msgstr ""
+msgstr "{[aliasname].element}"
-#: index.docbook:282
+#. Tag: literal
+#: query_sql.xml:282
+#, no-c-format
msgid "XID as {coll.element}"
-msgstr ""
+msgstr "XID as {coll.element}"
-#: index.docbook:286
+#. Tag: entry
+#: query_sql.xml:286
+#, no-c-format
msgid "roperty of the element in the collection"
-msgstr ""
+msgstr "roperty of the element in the collection"
-#: index.docbook:288
+#. Tag: literal
+#: query_sql.xml:288
+#, no-c-format
msgid "{[aliasname].element.[propertyname]}"
-msgstr ""
+msgstr "{[aliasname].element.[propertyname]}"
-#: index.docbook:290
+#. Tag: literal
+#: query_sql.xml:290
+#, no-c-format
msgid "NAME as {coll.element.name}"
-msgstr ""
+msgstr "NAME as {coll.element.name}"
-#: index.docbook:294
+#. Tag: entry
+#: query_sql.xml:294
+#, no-c-format
msgid "All properties of the element in the collection"
-msgstr ""
+msgstr "All properties of the element in the collection"
-#: index.docbook:296
+#. Tag: literal
+#: query_sql.xml:296
+#, no-c-format
msgid "{[aliasname].element.*}"
-msgstr ""
+msgstr "{[aliasname].element.*}"
-#: index.docbook:298
+#. Tag: literal
+#: query_sql.xml:298
+#, no-c-format
msgid "{coll.element.*}"
-msgstr ""
+msgstr "{coll.element.*}"
-#: index.docbook:302
+#. Tag: entry
+#: query_sql.xml:302
+#, no-c-format
msgid "All properties of the the collection"
-msgstr ""
+msgstr "All properties of the the collection"
-#: index.docbook:306
+#. Tag: literal
+#: query_sql.xml:306
+#, no-c-format
msgid "{coll.*}"
-msgstr ""
+msgstr "{coll.*}"
-#: index.docbook:315
+#. Tag: title
+#: query_sql.xml:315
+#, no-c-format
msgid "Returning non-managed entities"
-msgstr ""
+msgstr "Returning non-managed entities"
-#: index.docbook:317
-msgid "It is possible to apply a ResultTransformer to native sql queries. Allowing it to e.g. return non-managed entities."
+#. Tag: para
+#: query_sql.xml:317
+#, no-c-format
+msgid ""
+"It is possible to apply a ResultTransformer to native sql queries. Allowing "
+"it to e.g. return non-managed entities."
msgstr ""
+"It is possible to apply a ResultTransformer to native sql queries. Allowing "
+"it to e.g. return non-managed entities."
-#: index.docbook:319
+#. Tag: programlisting
+#: query_sql.xml:319
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT NAME, BIRTHDATE FROM CATS\")\n"
- " .setResultTransformer(Transformers.aliasToBean(CatDTO.class))]]>"
+"<![CDATA[sess.createSQLQuery(\"SELECT NAME, BIRTHDATE FROM CATS\")\n"
+" .setResultTransformer(Transformers.aliasToBean(CatDTO.class))]]>"
msgstr ""
-#: index.docbook:329
+#. Tag: para
+#: query_sql.xml:329
+#, no-c-format
msgid "a result transformer"
-msgstr ""
+msgstr "a result transformer"
-#: index.docbook:333
-msgid "The above query will return a list of <literal>CatDTO</literal> which has been instantiated and injected the values of NAME and BIRTHNAME into its corresponding properties or fields."
+#. Tag: para
+#: query_sql.xml:333
+#, no-c-format
+msgid ""
+"The above query will return a list of <literal>CatDTO</literal> which has "
+"been instantiated and injected the values of NAME and BIRTHNAME into its "
+"corresponding properties or fields."
msgstr ""
+"The above query will return a list of <literal>CatDTO</literal> which has "
+"been instantiated and injected the values of NAME and BIRTHNAME into its "
+"corresponding properties or fields."
-#: index.docbook:340
+#. Tag: title
+#: query_sql.xml:340
+#, no-c-format
msgid "Handling inheritance"
-msgstr ""
+msgstr "Handling inheritance"
-#: index.docbook:342
-msgid "Native sql queries which query for entities that is mapped as part of an inheritance must include all properties for the baseclass and all it subclasses."
+#. Tag: para
+#: query_sql.xml:342
+#, no-c-format
+msgid ""
+"Native sql queries which query for entities that is mapped as part of an "
+"inheritance must include all properties for the baseclass and all it "
+"subclasses."
msgstr ""
+"Native sql queries which query for entities that is mapped as part of an "
+"inheritance must include all properties for the baseclass and all it "
+"subclasses."
-#: index.docbook:348
+#. Tag: title
+#: query_sql.xml:348
+#, no-c-format
msgid "Parameters"
-msgstr ""
+msgstr "Parameters"
-#: index.docbook:350
+#. Tag: para
+#: query_sql.xml:350
+#, no-c-format
msgid "Native sql queries support positional as well as named parameters:"
-msgstr ""
+msgstr "Native sql queries support positional as well as named parameters:"
-#: index.docbook:353
+#. Tag: programlisting
+#: query_sql.xml:353
+#, no-c-format
msgid ""
- "<![CDATA[Query query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME like ?\").addEntity(Cat.class);\n"
- "List pusList = query.setString(0, \"Pus%\").list();\n"
- " \n"
- "query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME like :name\").addEntity(Cat.class);\n"
- "List pusList = query.setString(\"name\", \"Pus%\").list(); ]]>"
+"<![CDATA[Query query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME "
+"like ?\").addEntity(Cat.class);\n"
+"List pusList = query.setString(0, \"Pus%\").list();\n"
+" \n"
+"query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME like :name\")."
+"addEntity(Cat.class);\n"
+"List pusList = query.setString(\"name\", \"Pus%\").list(); ]]>"
msgstr ""
-#: index.docbook:361
+#. Tag: title
+#: query_sql.xml:361
+#, no-c-format
msgid "Named SQL queries"
-msgstr ""
+msgstr "Consultas SQL con nombre"
-#: index.docbook:363
-msgid "Named SQL queries may be defined in the mapping document and called in exactly the same way as a named HQL query. In this case, we do <emphasis>not</emphasis> need to call <literal>addEntity()</literal>."
+#. Tag: para
+#: query_sql.xml:363
+#, no-c-format
+msgid ""
+"Named SQL queries may be defined in the mapping document and called in "
+"exactly the same way as a named HQL query. In this case, we do "
+"<emphasis>not</emphasis> need to call <literal>addEntity()</literal>."
msgstr ""
+"Las consultas SQL con nombre pueden definirse en el documento de mapeo y "
+"llamadas exactamente en la misma forma en que a una consulta HQL con nombre. "
+"En este caso, <emphasis>no</emphasis> necesitamos llamar a <literal>addEntity"
+"()</literal>."
-#: index.docbook:368
+#. Tag: programlisting
+#: query_sql.xml:368
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"persons\">\n"
- " <return alias=\"person\" class=\"eg.Person\"/>\n"
- " SELECT person.NAME AS {person.name},\n"
- " person.AGE AS {person.age},\n"
- " person.SEX AS {person.sex}\n"
- " FROM PERSON person\n"
- " WHERE person.NAME LIKE :namePattern\n"
- "</sql-query>]]>"
+"<![CDATA[<sql-query name=\"persons\">\n"
+" <return alias=\"person\" class=\"eg.Person\"/>\n"
+" SELECT person.NAME AS {person.name},\n"
+" person.AGE AS {person.age},\n"
+" person.SEX AS {person.sex}\n"
+" FROM PERSON person\n"
+" WHERE person.NAME LIKE :namePattern\n"
+"</sql-query>]]>"
msgstr ""
-#: index.docbook:370
+#. Tag: programlisting
+#: query_sql.xml:370
+#, no-c-format
msgid ""
- "<![CDATA[List people = sess.getNamedQuery(\"persons\")\n"
- " .setString(\"namePattern\", namePattern)\n"
- " .setMaxResults(50)\n"
- " .list();]]>"
+"<![CDATA[List people = sess.getNamedQuery(\"persons\")\n"
+" .setString(\"namePattern\", namePattern)\n"
+" .setMaxResults(50)\n"
+" .list();]]>"
msgstr ""
-#: index.docbook:372
-msgid "The <literal><return-join></literal> and <literal><load-collection></literal> elements are used to join associations and define queries which initialize collections, respectively."
+#. Tag: para
+#: query_sql.xml:372
+#, no-c-format
+msgid ""
+"The <literal><return-join></literal> and <literal><load-"
+"collection></literal> elements are used to join associations and define "
+"queries which initialize collections, respectively."
msgstr ""
+"Los elementos <literal><return-join></literal> y <literal><load-"
+"collection></literal> se usan para unir asociaciones y definir consultas "
+"que inicialicen colecciones, respectivamente."
-#: index.docbook:377
+#. Tag: programlisting
+#: query_sql.xml:377
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"personsWith\">\n"
- " <return alias=\"person\" class=\"eg.Person\"/>\n"
- " <return-join alias=\"address\" property=\"person.mailingAddress\"/>\n"
- " SELECT person.NAME AS {person.name},\n"
- " person.AGE AS {person.age},\n"
- " person.SEX AS {person.sex},\n"
- " address.STREET AS {address.street},\n"
- " address.CITY AS {address.city},\n"
- " address.STATE AS {address.state},\n"
- " address.ZIP AS {address.zip}\n"
- " FROM PERSON person\n"
- " JOIN ADDRESS address\n"
- " ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
- " WHERE person.NAME LIKE :namePattern\n"
- "</sql-query>]]>"
+"<![CDATA[<sql-query name=\"personsWith\">\n"
+" <return alias=\"person\" class=\"eg.Person\"/>\n"
+" <return-join alias=\"address\" property=\"person.mailingAddress\"/>\n"
+" SELECT person.NAME AS {person.name},\n"
+" person.AGE AS {person.age},\n"
+" person.SEX AS {person.sex},\n"
+" address.STREET AS {address.street},\n"
+" address.CITY AS {address.city},\n"
+" address.STATE AS {address.state},\n"
+" address.ZIP AS {address.zip}\n"
+" FROM PERSON person\n"
+" JOIN ADDRESS address\n"
+" ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
+" WHERE person.NAME LIKE :namePattern\n"
+"</sql-query>]]>"
msgstr ""
-#: index.docbook:379
-msgid "A named SQL query may return a scalar value. You must declare the column alias and Hibernate type using the <literal><return-scalar></literal> element:"
+#. Tag: para
+#: query_sql.xml:379
+#, no-c-format
+msgid ""
+"A named SQL query may return a scalar value. You must declare the column "
+"alias and Hibernate type using the <literal><return-scalar></literal> "
+"element:"
msgstr ""
+"Una consulta SQL con nombre puede devolver un valor escalar. Debes "
+"especificar el alias de columna y tipo Hibernate usando el elementp "
+"<literal><return-scalar></literal>:"
-#: index.docbook:383
+#. Tag: programlisting
+#: query_sql.xml:383
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"mySqlQuery\">\n"
- " <return-scalar column=\"name\" type=\"string\"/>\n"
- " <return-scalar column=\"age\" type=\"long\"/>\n"
- " SELECT p.NAME AS name,\n"
- " p.AGE AS age,\n"
- " FROM PERSON p WHERE p.NAME LIKE 'Hiber%'\n"
- "</sql-query>]]>"
+"<![CDATA[<sql-query name=\"mySqlQuery\">\n"
+" <return-scalar column=\"name\" type=\"string\"/>\n"
+" <return-scalar column=\"age\" type=\"long\"/>\n"
+" SELECT p.NAME AS name,\n"
+" p.AGE AS age,\n"
+" FROM PERSON p WHERE p.NAME LIKE 'Hiber%'\n"
+"</sql-query>]]>"
msgstr ""
-#: index.docbook:385
-msgid "You can externalize the resultset mapping informations in a <literal><resultset></literal> element to either reuse them accross several named queries or through the <literal>setResultSetMapping()</literal> API."
+#. Tag: para
+#: query_sql.xml:385
+#, no-c-format
+msgid ""
+"You can externalize the resultset mapping informations in a <literal><"
+"resultset></literal> element to either reuse them accross several named "
+"queries or through the <literal>setResultSetMapping()</literal> API."
msgstr ""
+"You can externalize the resultset mapping informations in a <literal><"
+"resultset></literal> element to either reuse them accross several named "
+"queries or through the <literal>setResultSetMapping()</literal> API."
-#: index.docbook:390
+#. Tag: programlisting
+#: query_sql.xml:390
+#, no-c-format
msgid ""
- "<![CDATA[<resultset name=\"personAddress\">\n"
- " <return alias=\"person\" class=\"eg.Person\"/>\n"
- " <return-join alias=\"address\" property=\"person.mailingAddress\"/>\n"
- "</resultset>\n"
- "\n"
- "<sql-query name=\"personsWith\" resultset-ref=\"personAddress\">\n"
- " SELECT person.NAME AS {person.name},\n"
- " person.AGE AS {person.age},\n"
- " person.SEX AS {person.sex},\n"
- " address.STREET AS {address.street},\n"
- " address.CITY AS {address.city},\n"
- " address.STATE AS {address.state},\n"
- " address.ZIP AS {address.zip}\n"
- " FROM PERSON person\n"
- " JOIN ADDRESS address\n"
- " ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
- " WHERE person.NAME LIKE :namePattern\n"
- "</sql-query>]]>"
+"<![CDATA[<resultset name=\"personAddress\">\n"
+" <return alias=\"person\" class=\"eg.Person\"/>\n"
+" <return-join alias=\"address\" property=\"person.mailingAddress\"/>\n"
+"</resultset>\n"
+"\n"
+"<sql-query name=\"personsWith\" resultset-ref=\"personAddress\">\n"
+" SELECT person.NAME AS {person.name},\n"
+" person.AGE AS {person.age},\n"
+" person.SEX AS {person.sex},\n"
+" address.STREET AS {address.street},\n"
+" address.CITY AS {address.city},\n"
+" address.STATE AS {address.state},\n"
+" address.ZIP AS {address.zip}\n"
+" FROM PERSON person\n"
+" JOIN ADDRESS address\n"
+" ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
+" WHERE person.NAME LIKE :namePattern\n"
+"</sql-query>]]>"
msgstr ""
-#: index.docbook:392
-msgid "You can alternatively use the resultset mapping information in your hbm files directly in java code."
+#. Tag: para
+#: query_sql.xml:392
+#, no-c-format
+msgid ""
+"You can alternatively use the resultset mapping information in your hbm "
+"files directly in java code."
msgstr ""
+"You can alternatively use the resultset mapping information in your hbm "
+"files directly in java code."
-#: index.docbook:395
+#. Tag: programlisting
+#: query_sql.xml:395
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createSQLQuery(\n"
- " \"select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id\"\n"
- " )\n"
- " .setResultSetMapping(\"catAndKitten\")\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createSQLQuery(\n"
+" \"select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten."
+"mother = cat.id\"\n"
+" )\n"
+" .setResultSetMapping(\"catAndKitten\")\n"
+" .list();]]>"
msgstr ""
-#: index.docbook:398
+#. Tag: title
+#: query_sql.xml:398
+#, no-c-format
msgid "Using return-property to explicitly specify column/alias names"
msgstr ""
+"Usando return-property para especificar explícitamente nombres de columna/"
+"alias"
-#: index.docbook:401
-msgid "With <literal><return-property></literal> you can explicitly tell Hibernate what column aliases to use, instead of using the <literal>{}</literal>-syntax to let Hibernate inject its own aliases."
+#. Tag: para
+#: query_sql.xml:401
+#, no-c-format
+msgid ""
+"With <literal><return-property></literal> you can explicitly tell "
+"Hibernate what column aliases to use, instead of using the <literal>{}</"
+"literal>-syntax to let Hibernate inject its own aliases."
msgstr ""
+"Con <literal><return-property></literal> puedes decirle explícitamente "
+"a Hibernate qué alias de columna usar, en vez de usar la sintáxis <literal>{}"
+"</literal> para dejar que Hibernate inyecte sus propios alias."
-#: index.docbook:406
+#. Tag: programlisting
+#: query_sql.xml:406
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"mySqlQuery\">\n"
- " <return alias=\"person\" class=\"eg.Person\">\n"
- " <return-property name=\"name\" column=\"myName\"/>\n"
- " <return-property name=\"age\" column=\"myAge\"/>\n"
- " <return-property name=\"sex\" column=\"mySex\"/>\n"
- " </return>\n"
- " SELECT person.NAME AS myName,\n"
- " person.AGE AS myAge,\n"
- " person.SEX AS mySex,\n"
- " FROM PERSON person WHERE person.NAME LIKE :name\n"
- "</sql-query>\n"
- "]]>"
+"<![CDATA[<sql-query name=\"mySqlQuery\">\n"
+" <return alias=\"person\" class=\"eg.Person\">\n"
+" <return-property name=\"name\" column=\"myName\"/>\n"
+" <return-property name=\"age\" column=\"myAge\"/>\n"
+" <return-property name=\"sex\" column=\"mySex\"/>\n"
+" </return>\n"
+" SELECT person.NAME AS myName,\n"
+" person.AGE AS myAge,\n"
+" person.SEX AS mySex,\n"
+" FROM PERSON person WHERE person.NAME LIKE :name\n"
+"</sql-query>\n"
+"]]>"
msgstr ""
-#: index.docbook:408
-msgid "<literal><return-property></literal> also works with multiple columns. This solves a limitation with the <literal>{}</literal>-syntax which can not allow fine grained control of multi-column properties."
+#. Tag: para
+#: query_sql.xml:408
+#, no-c-format
+msgid ""
+"<literal><return-property></literal> also works with multiple columns. "
+"This solves a limitation with the <literal>{}</literal>-syntax which can not "
+"allow fine grained control of multi-column properties."
msgstr ""
+"<literal><return-property></literal> también trabaja con múltiples "
+"columnas. Esto resuelve una limitación de la sintáxis <literal>{}</literal>, "
+"la cual no puede permitir un control fino de propiedades multi-columna."
-#: index.docbook:413
+#. Tag: programlisting
+#: query_sql.xml:413
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"organizationCurrentEmployments\">\n"
- " <return alias=\"emp\" class=\"Employment\">\n"
- " <return-property name=\"salary\">\n"
- " <return-column name=\"VALUE\"/>\n"
- " <return-column name=\"CURRENCY\"/>\n"
- " </return-property>\n"
- " <return-property name=\"endDate\" column=\"myEndDate\"/>\n"
- " </return>\n"
- " SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer},\n"
- " STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate},\n"
- " REGIONCODE as {emp.regionCode}, EID AS {emp.id}, VALUE, CURRENCY\n"
- " FROM EMPLOYMENT\n"
- " WHERE EMPLOYER = :id AND ENDDATE IS NULL\n"
- " ORDER BY STARTDATE ASC\n"
- "</sql-query>]]>"
+"<![CDATA[<sql-query name=\"organizationCurrentEmployments\">\n"
+" <return alias=\"emp\" class=\"Employment\">\n"
+" <return-property name=\"salary\">\n"
+" <return-column name=\"VALUE\"/>\n"
+" <return-column name=\"CURRENCY\"/>\n"
+" </return-property>\n"
+" <return-property name=\"endDate\" column=\"myEndDate\"/>\n"
+" </return>\n"
+" SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer},\n"
+" STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate},\n"
+" REGIONCODE as {emp.regionCode}, EID AS {emp.id}, VALUE, CURRENCY\n"
+" FROM EMPLOYMENT\n"
+" WHERE EMPLOYER = :id AND ENDDATE IS NULL\n"
+" ORDER BY STARTDATE ASC\n"
+"</sql-query>]]>"
msgstr ""
-#: index.docbook:415
-msgid "Notice that in this example we used <literal><return-property></literal> in combination with the <literal>{}</literal>-syntax for injection. Allowing users to choose how they want to refer column and properties."
+#. Tag: para
+#: query_sql.xml:415
+#, no-c-format
+msgid ""
+"Notice that in this example we used <literal><return-property></"
+"literal> in combination with the <literal>{}</literal>-syntax for injection. "
+"Allowing users to choose how they want to refer column and properties."
msgstr ""
+"Nota que en este ejemplo hemos usado <literal><return-property></"
+"literal> en combinación con la sintáxis <literal>{}</literal> para "
+"inyección, permitiendo a los usuarios elejir cómo quieren referirse a las "
+"columnas y propiedades."
-#: index.docbook:420
-msgid "If your mapping has a discriminator you must use <literal><return-discriminator></literal> to specify the discriminator column."
+#. Tag: para
+#: query_sql.xml:420
+#, no-c-format
+msgid ""
+"If your mapping has a discriminator you must use <literal><return-"
+"discriminator></literal> to specify the discriminator column."
msgstr ""
+"Si tu mapeo tiene un discriminador debes usar <literal><return-"
+"discriminator></literal> para especificar la columna discriminadora."
-#: index.docbook:426
+#. Tag: title
+#: query_sql.xml:426
+#, no-c-format
msgid "Using stored procedures for querying"
-msgstr ""
+msgstr "Usando procedimientos almacenados para consultar"
-#: index.docbook:428
-msgid "Hibernate 3 introduces support for queries via stored procedures and functions. Most of the following documentation is equivalent for both. The stored procedure/function must return a resultset as the first out-parameter to be able to work with Hibernate. An example of such a stored function in Oracle 9 and higher is as follows:"
+#. Tag: para
+#: query_sql.xml:428
+#, no-c-format
+msgid ""
+"Hibernate 3 introduces support for queries via stored procedures and "
+"functions. Most of the following documentation is equivalent for both. The "
+"stored procedure/function must return a resultset as the first out-parameter "
+"to be able to work with Hibernate. An example of such a stored function in "
+"Oracle 9 and higher is as follows:"
msgstr ""
+"Hibernate3 introduce soporte para consultas vía procedimientos almacenados. "
+"Los procedimientos almacenados deben devolver un conjunto resultado como el "
+"primer parámetro de salida para ser capaces de funcionar con Hibernate. Un "
+"ejemplo de uno procedimiento almacenado en Oracle 9 o superior es así:"
-#: index.docbook:434
+#. Tag: programlisting
+#: query_sql.xml:434
+#, no-c-format
msgid ""
- "<![CDATA[CREATE OR REPLACE FUNCTION selectAllEmployments\n"
- " RETURN SYS_REFCURSOR\n"
- "AS\n"
- " st_cursor SYS_REFCURSOR;\n"
- "BEGIN\n"
- " OPEN st_cursor FOR\n"
- " SELECT EMPLOYEE, EMPLOYER,\n"
- " STARTDATE, ENDDATE,\n"
- " REGIONCODE, EID, VALUE, CURRENCY\n"
- " FROM EMPLOYMENT;\n"
- " RETURN st_cursor;\n"
- " END;]]>"
+"<![CDATA[CREATE OR REPLACE FUNCTION selectAllEmployments\n"
+" RETURN SYS_REFCURSOR\n"
+"AS\n"
+" st_cursor SYS_REFCURSOR;\n"
+"BEGIN\n"
+" OPEN st_cursor FOR\n"
+" SELECT EMPLOYEE, EMPLOYER,\n"
+" STARTDATE, ENDDATE,\n"
+" REGIONCODE, EID, VALUE, CURRENCY\n"
+" FROM EMPLOYMENT;\n"
+" RETURN st_cursor;\n"
+" END;]]>"
msgstr ""
-#: index.docbook:436
+#. Tag: para
+#: query_sql.xml:436
+#, no-c-format
msgid "To use this query in Hibernate you need to map it via a named query."
msgstr ""
+"Para usar esta consulta en Hibernate necesitas mapearla por medio de una "
+"consulta con nombre."
-#: index.docbook:439
+#. Tag: programlisting
+#: query_sql.xml:439
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"selectAllEmployees_SP\" callable=\"true\">\n"
- " <return alias=\"emp\" class=\"Employment\">\n"
- " <return-property name=\"employee\" column=\"EMPLOYEE\"/>\n"
- " <return-property name=\"employer\" column=\"EMPLOYER\"/>\n"
- " <return-property name=\"startDate\" column=\"STARTDATE\"/>\n"
- " <return-property name=\"endDate\" column=\"ENDDATE\"/>\n"
- " <return-property name=\"regionCode\" column=\"REGIONCODE\"/>\n"
- " <return-property name=\"id\" column=\"EID\"/>\n"
- " <return-property name=\"salary\">\n"
- " <return-column name=\"VALUE\"/>\n"
- " <return-column name=\"CURRENCY\"/>\n"
- " </return-property>\n"
- " </return>\n"
- " { ? = call selectAllEmployments() }\n"
- "</sql-query>]]>"
+"<![CDATA[<sql-query name=\"selectAllEmployees_SP\" callable=\"true\">\n"
+" <return alias=\"emp\" class=\"Employment\">\n"
+" <return-property name=\"employee\" column=\"EMPLOYEE\"/>\n"
+" <return-property name=\"employer\" column=\"EMPLOYER\"/>\n"
+" <return-property name=\"startDate\" column=\"STARTDATE\"/>\n"
+" <return-property name=\"endDate\" column=\"ENDDATE\"/>\n"
+" <return-property name=\"regionCode\" column=\"REGIONCODE\"/>\n"
+" <return-property name=\"id\" column=\"EID\"/>\n"
+" <return-property name=\"salary\">\n"
+" <return-column name=\"VALUE\"/>\n"
+" <return-column name=\"CURRENCY\"/>\n"
+" </return-property>\n"
+" </return>\n"
+" { ? = call selectAllEmployments() }\n"
+"</sql-query>]]>"
msgstr ""
-#: index.docbook:441
-msgid "Notice stored procedures currently only return scalars and entities. <literal><return-join></literal> and <literal><load-collection></literal> are not supported."
+#. Tag: para
+#: query_sql.xml:441
+#, no-c-format
+msgid ""
+"Notice stored procedures currently only return scalars and entities. "
+"<literal><return-join></literal> and <literal><load-collection></"
+"literal> are not supported."
msgstr ""
+"Nota que los procedimientos almacenados sólo devuelven escalares y "
+"entidades. No están soportados <literal><return-join></literal> y "
+"<literal><load-collection></literal>."
-#: index.docbook:446
+#. Tag: title
+#: query_sql.xml:446
+#, no-c-format
msgid "Rules/limitations for using stored procedures"
-msgstr ""
+msgstr "Reglas/limitaciones para usar procedimientos almacenados"
-#: index.docbook:448
-msgid "To use stored procedures with Hibernate the procedures/functions have to follow some rules. If they do not follow those rules they are not usable with Hibernate. If you still want to use these procedures you have to execute them via <literal>session.connection()</literal>. The rules are different for each database, since database vendors have different stored procedure semantics/syntax."
+#. Tag: para
+#: query_sql.xml:448
+#, no-c-format
+msgid ""
+"To use stored procedures with Hibernate the procedures/functions have to "
+"follow some rules. If they do not follow those rules they are not usable "
+"with Hibernate. If you still want to use these procedures you have to "
+"execute them via <literal>session.connection()</literal>. The rules are "
+"different for each database, since database vendors have different stored "
+"procedure semantics/syntax."
msgstr ""
+"Para usar procedimientos almacenados con Hibernate los procedimientos tienen "
+"que seguir algunas reglas. Si no siguen esas reglas no son usables por "
+"Hibernate. Si aún quisieras usar estos procedimientos tendrías que "
+"ejecutarlos por medio de <literal>session.connection()</literal>. Las reglas "
+"son diferentes para cada base de datos, ya que los vendedores de base de "
+"datos tienen diferentes semánticas/sintáxis de procedimientos almacenados."
-#: index.docbook:455
-msgid "Stored procedure queries can't be paged with <literal>setFirstResult()/setMaxResults()</literal>."
+#. Tag: para
+#: query_sql.xml:455
+#, no-c-format
+msgid ""
+"Stored procedure queries can't be paged with <literal>setFirstResult()/"
+"setMaxResults()</literal>."
msgstr ""
+"Las consultas de procedimientos almacenados no pueden ser paginadas con "
+"<literal>setFirstResult()/setMaxResults()</literal>."
-#: index.docbook:458
-msgid "Recommended call form is standard SQL92: <literal>{ ? = call functionName(<parameters>) }</literal> or <literal>{ ? = call procedureName(<parameters>}</literal>. Native call syntax is not supported."
-msgstr ""
+#. Tag: para
+#: query_sql.xml:458
+#, no-c-format
+msgid ""
+"Recommended call form is standard SQL92: <literal>{ ? = call functionName"
+"(<parameters>) }</literal> or <literal>{ ? = call procedureName(<"
+"parameters>}</literal>. Native call syntax is not supported."
+msgstr "Para Oracle se aplican las siguientes reglas:"
-#: index.docbook:463
+#. Tag: para
+#: query_sql.xml:463
+#, no-c-format
msgid "For Oracle the following rules apply:"
msgstr ""
+"El procedimiento debe devolver un conjunto resultado. Esto se hace "
+"devolviendo un <literal>SYS_REFCURSOR</literal> en Oracle 9 o 10. En Oracle "
+"necesitas definir un tipo <literal>REF CURSOR</literal>."
-#: index.docbook:467
-msgid "A function must return a result set. The first parameter of a procedure must be an <literal>OUT</literal> that returns a result set. This is done by using a <literal>SYS_REFCURSOR</literal> type in Oracle 9 or 10. In Oracle you need to define a <literal>REF CURSOR</literal> type, see Oracle literature."
+#. Tag: para
+#: query_sql.xml:467
+#, no-c-format
+msgid ""
+"A function must return a result set. The first parameter of a procedure must "
+"be an <literal>OUT</literal> that returns a result set. This is done by "
+"using a <literal>SYS_REFCURSOR</literal> type in Oracle 9 or 10. In Oracle "
+"you need to define a <literal>REF CURSOR</literal> type, see Oracle "
+"literature."
msgstr ""
+"La forma recomendada es <literal>{ ? = call procName(<parameters>) }</"
+"literal> o <literal>{ ? = call procName }</literal> (esto es más una regla "
+"de Oracle que una regla de Hibernate)."
-#: index.docbook:476
+#. Tag: para
+#: query_sql.xml:476
+#, no-c-format
msgid "For Sybase or MS SQL server the following rules apply:"
-msgstr ""
+msgstr "Para Sybase o MS SQL server se aplican las siguientes reglas:"
-#: index.docbook:480
-msgid "The procedure must return a result set. Note that since these servers can/will return multiple result sets and update counts, Hibernate will iterate the results and take the first result that is a result set as its return value. Everything else will be discarded."
+#. Tag: para
+#: query_sql.xml:480
+#, no-c-format
+msgid ""
+"The procedure must return a result set. Note that since these servers can/"
+"will return multiple result sets and update counts, Hibernate will iterate "
+"the results and take the first result that is a result set as its return "
+"value. Everything else will be discarded."
msgstr ""
+"El procedimiento debe devolver un conjunto resultado. Nota que ya que estos "
+"servidores pueden y devolverán múltiples conjuntos resultados y cuentas de "
+"actualización, Hibernate iterará los resultados y tomará el primer resultado "
+"que sea un conjunto resultado como su valor a devolver. Todo lo demás será "
+"descartado."
-#: index.docbook:488
-msgid "If you can enable <literal>SET NOCOUNT ON</literal> in your procedure it will probably be more efficient, but this is not a requirement."
+#. Tag: para
+#: query_sql.xml:488
+#, no-c-format
+msgid ""
+"If you can enable <literal>SET NOCOUNT ON</literal> in your procedure it "
+"will probably be more efficient, but this is not a requirement."
msgstr ""
+"Si habilitas <literal>SET NOCOUNT ON</literal> en tu procedimiento será "
+"probablemente más eficiente, pero esto no es un requerimiento."
-#: index.docbook:498
+#. Tag: title
+#: query_sql.xml:498
+#, no-c-format
msgid "Custom SQL for create, update and delete"
-msgstr ""
+msgstr "SQL personalizado para crear, actualizar y borrar"
-#: index.docbook:500
-msgid "Hibernate3 can use custom SQL statements for create, update, and delete operations. The class and collection persisters in Hibernate already contain a set of configuration time generated strings (insertsql, deletesql, updatesql etc.). The mapping tags <literal><sql-insert></literal>, <literal><sql-delete></literal>, and <literal><sql-update></literal> override these strings:"
+#. Tag: para
+#: query_sql.xml:500
+#, no-c-format
+msgid ""
+"Hibernate3 can use custom SQL statements for create, update, and delete "
+"operations. The class and collection persisters in Hibernate already contain "
+"a set of configuration time generated strings (insertsql, deletesql, "
+"updatesql etc.). The mapping tags <literal><sql-insert></literal>, "
+"<literal><sql-delete></literal>, and <literal><sql-update></"
+"literal> override these strings:"
msgstr ""
+"Hibernate3 puede usar sentencias SQL personalizadas para las operaciones de "
+"crear, actualizar y borrar. Los persistidores de clases y colecciones en "
+"Hibernate ya contienen un conjunto de cadenas generadas en tiempo de "
+"configuración (insertsql, deletesql, updatesql, etc.). Las etiquetas de "
+"mapeo <literal><sql-insert></literal>, <literal><sql-delete></"
+"literal>, y <literal><sql-update></literal> sobrescriben estas cadenas:"
-#: index.docbook:508
+#. Tag: programlisting
+#: query_sql.xml:508
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <property name=\"name\" not-null=\"true\"/>\n"
- " <sql-insert>INSERT INTO PERSON (NAME, ID) VALUES ( UPPER(?), ? )</sql-insert>\n"
- " <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE ID=?</sql-update>\n"
- " <sql-delete>DELETE FROM PERSON WHERE ID=?</sql-delete>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"increment\"/>\n"
+" </id>\n"
+" <property name=\"name\" not-null=\"true\"/>\n"
+" <sql-insert>INSERT INTO PERSON (NAME, ID) VALUES ( UPPER(?), ? )</sql-"
+"insert>\n"
+" <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE ID=?</sql-update>\n"
+" <sql-delete>DELETE FROM PERSON WHERE ID=?</sql-delete>\n"
+"</class>]]>"
msgstr ""
-#: index.docbook:510
-msgid "The SQL is directly executed in your database, so you are free to use any dialect you like. This will of course reduce the portability of your mapping if you use database specific SQL."
+#. Tag: para
+#: query_sql.xml:510
+#, no-c-format
+msgid ""
+"The SQL is directly executed in your database, so you are free to use any "
+"dialect you like. This will of course reduce the portability of your mapping "
+"if you use database specific SQL."
msgstr ""
+"El SQL se ejecuta directamente en tu base de datos, de modo que eres libre "
+"de usar cualquier dialecto que quieras. Esto reducirá, por supuesto, la "
+"portabilidad de tu mapeo si usas SQL específico de la base de datos."
-#: index.docbook:514
-msgid "Stored procedures are supported if the <literal>callable</literal> attribute is set:"
+#. Tag: para
+#: query_sql.xml:514
+#, no-c-format
+msgid ""
+"Stored procedures are supported if the <literal>callable</literal> attribute "
+"is set:"
msgstr ""
+"Los procedimientos almacenados son soportados si está establecido el "
+"atributo <literal>callable</literal>:"
-#: index.docbook:517
+#. Tag: programlisting
+#: query_sql.xml:517
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <property name=\"name\" not-null=\"true\"/>\n"
- " <sql-insert callable=\"true\">{call createPerson (?, ?)}</sql-insert>\n"
- " <sql-delete callable=\"true\">{? = call deletePerson (?)}</sql-delete>\n"
- " <sql-update callable=\"true\">{? = call updatePerson (?, ?)}</sql-update>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"increment\"/>\n"
+" </id>\n"
+" <property name=\"name\" not-null=\"true\"/>\n"
+" <sql-insert callable=\"true\">{call createPerson (?, ?)}</sql-insert>\n"
+" <sql-delete callable=\"true\">{? = call deletePerson (?)}</sql-delete>\n"
+" <sql-update callable=\"true\">{? = call updatePerson (?, ?)}</sql-"
+"update>\n"
+"</class>]]>"
msgstr ""
-#: index.docbook:519
-msgid "The order of the positional parameters are currently vital, as they must be in the same sequence as Hibernate expects them."
+#. Tag: para
+#: query_sql.xml:519
+#, no-c-format
+msgid ""
+"The order of the positional parameters are currently vital, as they must be "
+"in the same sequence as Hibernate expects them."
msgstr ""
+"El orden de los parámetros posicionales son actualmente vitales, ya que "
+"deben estar en la misma secuencia en que las espera Hibernate."
-#: index.docbook:522
-msgid "You can see the expected order by enabling debug logging for the <literal>org.hibernate.persister.entity</literal> level. With this level enabled Hibernate will print out the static SQL that is used to create, update, delete etc. entities. (To see the expected sequence, remember to not include your custom SQL in the mapping files as that will override the Hibernate generated static sql.)"
+#. Tag: para
+#: query_sql.xml:522
+#, no-c-format
+msgid ""
+"You can see the expected order by enabling debug logging for the "
+"<literal>org.hibernate.persister.entity</literal> level. With this level "
+"enabled Hibernate will print out the static SQL that is used to create, "
+"update, delete etc. entities. (To see the expected sequence, remember to not "
+"include your custom SQL in the mapping files as that will override the "
+"Hibernate generated static sql.)"
msgstr ""
+"Puedes ver el orden esperado habilitando el registro de depuración para el "
+"nivel <literal>org.hibernate.persister.entity</literal>. Con este nivel "
+"habilitado, Hibernate imprimirá el SQL estático que se usa para crear, "
+"actualizar, borrar, etc. las entidades. (Para ver la secuencia esperada, "
+"recuerda no incluir tu SQL personalizado en los ficheros de mapeo ya que "
+"sobrescribirán el sql estático generado por Hibernate.)"
-#: index.docbook:529
-msgid "The stored procedures are in most cases (read: better do it than not) required to return the number of rows inserted/updated/deleted, as Hibernate has some runtime checks for the success of the statement. Hibernate always registers the first statement parameter as a numeric output parameter for the CUD operations:"
+#. Tag: para
+#: query_sql.xml:529
+#, no-c-format
+msgid ""
+"The stored procedures are in most cases (read: better do it than not) "
+"required to return the number of rows inserted/updated/deleted, as Hibernate "
+"has some runtime checks for the success of the statement. Hibernate always "
+"registers the first statement parameter as a numeric output parameter for "
+"the CUD operations:"
msgstr ""
+"Los procedimientos almacenados son, en la mayoría de los casos (léase, mejor "
+"hacerlo que no hacerlo), obligados a devolver el número de filas insertadas/"
+"actualizadas/borradas, ya que Hibernate tiene algunas comprobaciones en "
+"tiempo de ejecución del éxito de la sentencia. Hibernate siempre registra el "
+"primer parámetro de la sentencia como un parámetro de salida numérico para "
+"las operaciones CUD:"
-#: index.docbook:535
+#. Tag: programlisting
+#: query_sql.xml:535
+#, no-c-format
msgid ""
- "<![CDATA[CREATE OR REPLACE FUNCTION updatePerson (uid IN NUMBER, uname IN VARCHAR2)\n"
- " RETURN NUMBER IS\n"
- "BEGIN\n"
- "\n"
- " update PERSON\n"
- " set\n"
- " NAME = uname,\n"
- " where\n"
- " ID = uid;\n"
- "\n"
- " return SQL%ROWCOUNT;\n"
- "\n"
- "END updatePerson;]]>"
+"<![CDATA[CREATE OR REPLACE FUNCTION updatePerson (uid IN NUMBER, uname IN "
+"VARCHAR2)\n"
+" RETURN NUMBER IS\n"
+"BEGIN\n"
+"\n"
+" update PERSON\n"
+" set\n"
+" NAME = uname,\n"
+" where\n"
+" ID = uid;\n"
+"\n"
+" return SQL%ROWCOUNT;\n"
+"\n"
+"END updatePerson;]]>"
msgstr ""
-#: index.docbook:539
+#. Tag: title
+#: query_sql.xml:539
+#, no-c-format
msgid "Custom SQL for loading"
-msgstr ""
+msgstr "SQL personalizado para carga"
-#: index.docbook:541
+#. Tag: para
+#: query_sql.xml:541
+#, no-c-format
msgid "You may also declare your own SQL (or HQL) queries for entity loading:"
msgstr ""
+"Puedes también declarar tu propias consultas SQL (o HQL) para cargar "
+"entidades:"
-#: index.docbook:544
+#. Tag: programlisting
+#: query_sql.xml:544
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"person\">\n"
- " <return alias=\"pers\" class=\"Person\" lock-mode=\"upgrade\"/>\n"
- " SELECT NAME AS {pers.name}, ID AS {pers.id}\n"
- " FROM PERSON\n"
- " WHERE ID=?\n"
- " FOR UPDATE\n"
- "</sql-query>]]>"
+"<![CDATA[<sql-query name=\"person\">\n"
+" <return alias=\"pers\" class=\"Person\" lock-mode=\"upgrade\"/>\n"
+" SELECT NAME AS {pers.name}, ID AS {pers.id}\n"
+" FROM PERSON\n"
+" WHERE ID=?\n"
+" FOR UPDATE\n"
+"</sql-query>]]>"
msgstr ""
-#: index.docbook:546
-msgid "This is just a named query declaration, as discussed earlier. You may reference this named query in a class mapping:"
+#. Tag: para
+#: query_sql.xml:546
+#, no-c-format
+msgid ""
+"This is just a named query declaration, as discussed earlier. You may "
+"reference this named query in a class mapping:"
msgstr ""
+"Esto es sólo una declaración de consulta con nombrem como se ha discutido "
+"anteriormente. Puedes hacer referencia a esta consulta con nombre en un "
+"mapeo de clase:"
-#: index.docbook:549
+#. Tag: programlisting
+#: query_sql.xml:549
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <property name=\"name\" not-null=\"true\"/>\n"
- " <loader query-ref=\"person\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"increment\"/>\n"
+" </id>\n"
+" <property name=\"name\" not-null=\"true\"/>\n"
+" <loader query-ref=\"person\"/>\n"
+"</class>]]>"
msgstr ""
-#: index.docbook:551
+#. Tag: para
+#: query_sql.xml:551
+#, no-c-format
msgid "This even works with stored procedures."
-msgstr ""
+msgstr "Esto incluso funciona con procedimientos almacenados."
-#: index.docbook:553
+#. Tag: para
+#: query_sql.xml:553
+#, no-c-format
msgid "You may even define a query for collection loading:"
-msgstr ""
+msgstr "Puedes incluso definit una consulta para la carga de colecciones:"
-#: index.docbook:555
+#. Tag: programlisting
+#: query_sql.xml:555
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"employments\" inverse=\"true\">\n"
- " <key/>\n"
- " <one-to-many class=\"Employment\"/>\n"
- " <loader query-ref=\"employments\"/>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"employments\" inverse=\"true\">\n"
+" <key/>\n"
+" <one-to-many class=\"Employment\"/>\n"
+" <loader query-ref=\"employments\"/>\n"
+"</set>]]>"
msgstr ""
-#: index.docbook:557
+#. Tag: programlisting
+#: query_sql.xml:557
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"employments\">\n"
- " <load-collection alias=\"emp\" role=\"Person.employments\"/>\n"
- " SELECT {emp.*}\n"
- " FROM EMPLOYMENT emp\n"
- " WHERE EMPLOYER = :id\n"
- " ORDER BY STARTDATE ASC, EMPLOYEE ASC\n"
- "</sql-query>]]>"
+"<![CDATA[<sql-query name=\"employments\">\n"
+" <load-collection alias=\"emp\" role=\"Person.employments\"/>\n"
+" SELECT {emp.*}\n"
+" FROM EMPLOYMENT emp\n"
+" WHERE EMPLOYER = :id\n"
+" ORDER BY STARTDATE ASC, EMPLOYEE ASC\n"
+"</sql-query>]]>"
msgstr ""
-#: index.docbook:559
-msgid "You could even define an entity loader that loads a collection by join fetching:"
+#. Tag: para
+#: query_sql.xml:559
+#, no-c-format
+msgid ""
+"You could even define an entity loader that loads a collection by join "
+"fetching:"
msgstr ""
+"Podrías incluso definir un cargador de entidades que cargue una colección "
+"por recuperación por unión (join fetching):"
-#: index.docbook:562
+#. Tag: programlisting
+#: query_sql.xml:562
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"person\">\n"
- " <return alias=\"pers\" class=\"Person\"/>\n"
- " <return-join alias=\"emp\" property=\"pers.employments\"/>\n"
- " SELECT NAME AS {pers.*}, {emp.*}\n"
- " FROM PERSON pers\n"
- " LEFT OUTER JOIN EMPLOYMENT emp\n"
- " ON pers.ID = emp.PERSON_ID\n"
- " WHERE ID=?\n"
- "</sql-query>]]>"
+"<![CDATA[<sql-query name=\"person\">\n"
+" <return alias=\"pers\" class=\"Person\"/>\n"
+" <return-join alias=\"emp\" property=\"pers.employments\"/>\n"
+" SELECT NAME AS {pers.*}, {emp.*}\n"
+" FROM PERSON pers\n"
+" LEFT OUTER JOIN EMPLOYMENT emp\n"
+" ON pers.ID = emp.PERSON_ID\n"
+" WHERE ID=?\n"
+"</sql-query>]]>"
msgstr ""
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
Modified: core/trunk/documentation/manual/translations/es-ES/content/session_api.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/session_api.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/session_api.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,1220 +1,2241 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: session_api.xml:5
+#, no-c-format
msgid "Working with objects"
msgstr "Trabajando con objetos"
-#: index.docbook:7
-msgid "Hibernate is a full object/relational mapping solution that not only shields the developer from the details of the underlying database management system, but also offers <emphasis>state management</emphasis> of objects. This is, contrary to the management of SQL <literal>statements</literal> in common JDBC/SQL persistence layers, a very natural object-oriented view of persistence in Java applications."
-msgstr "Hibernate es una solución completa de mapeo objeto/relacional que no sólo abstrae al desarrollador de los detalles del sistema de manejo de base datos subyacente, sino que además ofrece <emphasis>manejo de estado</emphasis> de objetos. Esto es, al contrario del manejo de <literal>sentencias</literal> SQL en capas comunes de persistencia JDBC/SQL, una vista de la persistencia en aplicaciones Java muy natural y orientada a objetos."
+#. Tag: para
+#: session_api.xml:7
+#, no-c-format
+msgid ""
+"Hibernate is a full object/relational mapping solution that not only shields "
+"the developer from the details of the underlying database management system, "
+"but also offers <emphasis>state management</emphasis> of objects. This is, "
+"contrary to the management of SQL <literal>statements</literal> in common "
+"JDBC/SQL persistence layers, a very natural object-oriented view of "
+"persistence in Java applications."
+msgstr ""
+"Hibernate es una solución completa de mapeo objeto/relacional que no sólo "
+"abstrae al desarrollador de los detalles del sistema de manejo de base datos "
+"subyacente, sino que además ofrece <emphasis>manejo de estado</emphasis> de "
+"objetos. Esto es, al contrario del manejo de <literal>sentencias</literal> "
+"SQL en capas comunes de persistencia JDBC/SQL, una vista de la persistencia "
+"en aplicaciones Java muy natural y orientada a objetos."
-#: index.docbook:16
-msgid "In other words, Hibernate application developers should always think about the <emphasis>state</emphasis> of their objects, and not necessarily about the execution of SQL statements. This part is taken care of by Hibernate and is only relevant for the application developer when tuning the performance of the system."
-msgstr "En otras palabras, los desarroladores de aplicaciones Hibernate deben siempre pensar en el <emphasis>estado</emphasis> de sus objetos, y no necesariamente en la ejecución de sentencias SQL. Esta parte es cuidada por Hibernate y es sólo relevante para el desarrollador de la aplicación al afinar el rendimiento del sistema."
+#. Tag: para
+#: session_api.xml:16
+#, no-c-format
+msgid ""
+"In other words, Hibernate application developers should always think about "
+"the <emphasis>state</emphasis> of their objects, and not necessarily about "
+"the execution of SQL statements. This part is taken care of by Hibernate and "
+"is only relevant for the application developer when tuning the performance "
+"of the system."
+msgstr ""
+"En otras palabras, los desarroladores de aplicaciones Hibernate deben "
+"siempre pensar en el <emphasis>estado</emphasis> de sus objetos, y no "
+"necesariamente en la ejecución de sentencias SQL. Esta parte es cuidada por "
+"Hibernate y es sólo relevante para el desarrollador de la aplicación al "
+"afinar el rendimiento del sistema."
-#: index.docbook:24
+#. Tag: title
+#: session_api.xml:24
+#, no-c-format
msgid "Hibernate object states"
msgstr "Estados de objeto de Hibernate"
-#: index.docbook:26
+#. Tag: para
+#: session_api.xml:26
+#, no-c-format
msgid "Hibernate defines and supports the following object states:"
msgstr "Hibernate define y soporta los siguientes estados de objeto:"
-#: index.docbook:32
-msgid "<emphasis>Transient</emphasis> - an object is transient if it has just been instantiated using the <literal>new</literal> operator, and it is not associated with a Hibernate <literal>Session</literal>. It has no persistent representation in the database and no identifier value has been assigned. Transient instances will be destroyed by the garbage collector if the application doesn't hold a reference anymore. Use the Hibernate <literal>Session</literal> to make an object persistent (and let Hibernate take care of the SQL statements that need to be executed for this transition)."
-msgstr "<emphasis>Transitorio</emphasis> - un objeto es transitorio si ha sido recién instanciado usando el operador <literal>new</literal>, y no está asociado a una <literal>Session</literal> de Hibernate. No tiene una representación persistente en la base de datos y no se le ha asignado un valor identificador. Las instancias transitorias serán destruídas por el recolector de basura si la aplicación no mantiene más una referencia. Usa la <literal>Session</literal> de Hibernate para hacer un objeto persistente (y deja que Hibernate cuide de las sentencias SQL que necesitan ejecutarse para esta transición)."
+#. Tag: para
+#: session_api.xml:32
+#, no-c-format
+msgid ""
+"<emphasis>Transient</emphasis> - an object is transient if it has just been "
+"instantiated using the <literal>new</literal> operator, and it is not "
+"associated with a Hibernate <literal>Session</literal>. It has no persistent "
+"representation in the database and no identifier value has been assigned. "
+"Transient instances will be destroyed by the garbage collector if the "
+"application doesn't hold a reference anymore. Use the Hibernate "
+"<literal>Session</literal> to make an object persistent (and let Hibernate "
+"take care of the SQL statements that need to be executed for this "
+"transition)."
+msgstr ""
+"<emphasis>Transitorio</emphasis> - un objeto es transitorio si ha sido "
+"recién instanciado usando el operador <literal>new</literal>, y no está "
+"asociado a una <literal>Session</literal> de Hibernate. No tiene una "
+"representación persistente en la base de datos y no se le ha asignado un "
+"valor identificador. Las instancias transitorias serán destruídas por el "
+"recolector de basura si la aplicación no mantiene más una referencia. Usa la "
+"<literal>Session</literal> de Hibernate para hacer un objeto persistente (y "
+"deja que Hibernate cuide de las sentencias SQL que necesitan ejecutarse para "
+"esta transición)."
-#: index.docbook:44
-msgid "<emphasis>Persistent</emphasis> - a persistent instance has a representation in the database and an identifier value. It might just have been saved or loaded, however, it is by definition in the scope of a <literal>Session</literal>. Hibernate will detect any changes made to an object in persistent state and synchronize the state with the database when the unit of work completes. Developers don't execute manual <literal>UPDATE</literal> statements, or <literal>DELETE</literal> statements when an object should be made transient."
-msgstr "<emphasis>Persistente</emphasis> - una instancia persistente tiene una representación en la base de datos y un valor identificador. Puede haber sido salvado o cargado, sin embargo, está por definición en el ámbito de una <literal>Session</literal>. Hibernate detectará cualquier cambio hecho a un objeto en estado persistentey sincronizará el estado con la base de datos cuando se complete la unidad de trabajo. Los desarrolladores no ejecutan sentencias <literal>UPDATE</literal> manuales, o sentencias <literal>DELETE</literal> cuando un objeto debe ser hecho transitorio."
+#. Tag: para
+#: session_api.xml:44
+#, no-c-format
+msgid ""
+"<emphasis>Persistent</emphasis> - a persistent instance has a representation "
+"in the database and an identifier value. It might just have been saved or "
+"loaded, however, it is by definition in the scope of a <literal>Session</"
+"literal>. Hibernate will detect any changes made to an object in persistent "
+"state and synchronize the state with the database when the unit of work "
+"completes. Developers don't execute manual <literal>UPDATE</literal> "
+"statements, or <literal>DELETE</literal> statements when an object should be "
+"made transient."
+msgstr ""
+"<emphasis>Persistente</emphasis> - una instancia persistente tiene una "
+"representación en la base de datos y un valor identificador. Puede haber "
+"sido salvado o cargado, sin embargo, está por definición en el ámbito de una "
+"<literal>Session</literal>. Hibernate detectará cualquier cambio hecho a un "
+"objeto en estado persistentey sincronizará el estado con la base de datos "
+"cuando se complete la unidad de trabajo. Los desarrolladores no ejecutan "
+"sentencias <literal>UPDATE</literal> manuales, o sentencias <literal>DELETE</"
+"literal> cuando un objeto debe ser hecho transitorio."
-#: index.docbook:55
-msgid "<emphasis>Detached</emphasis> - a detached instance is an object that has been persistent, but its <literal>Session</literal> has been closed. The reference to the object is still valid, of course, and the detached instance might even be modified in this state. A detached instance can be reattached to a new <literal>Session</literal> at a later point in time, making it (and all the modifications) persistent again. This feature enables a programming model for long running units of work that require user think-time. We call them <emphasis>application transactions</emphasis>, i.e. a unit of work from the point of view of the user."
-msgstr "<emphasis>Separado (detached)</emphasis> - una instancia separada es un objeto que ha sido hecho persistente, pero su <literal>Session</literal> ha sido cerrada. La referencia al objeto todavía es válida, por supuesto, y la instancia separada podría incluso ser modificada en este estado. Una instancia separada puede ser re-unida a una nueva <literal>Session</literal> en un punto posterior en el tiempo, haciéndola persistente de nuevo (con todas las modificaciones). Este aspecto habilita un modelo de programación para unidades de trabajo de ejecución larga que requieren tiempo-para-pensar del usuario. Las llamamos <emphasis>transaccciones de aplicación</emphasis>, es decir, una unidad de trabajo desde el punto de vista del usuario."
+#. Tag: para
+#: session_api.xml:55
+#, no-c-format
+msgid ""
+"<emphasis>Detached</emphasis> - a detached instance is an object that has "
+"been persistent, but its <literal>Session</literal> has been closed. The "
+"reference to the object is still valid, of course, and the detached instance "
+"might even be modified in this state. A detached instance can be reattached "
+"to a new <literal>Session</literal> at a later point in time, making it (and "
+"all the modifications) persistent again. This feature enables a programming "
+"model for long running units of work that require user think-time. We call "
+"them <emphasis>application transactions</emphasis>, i.e. a unit of work from "
+"the point of view of the user."
+msgstr ""
+"<emphasis>Separado (detached)</emphasis> - una instancia separada es un "
+"objeto que ha sido hecho persistente, pero su <literal>Session</literal> ha "
+"sido cerrada. La referencia al objeto todavía es válida, por supuesto, y la "
+"instancia separada podría incluso ser modificada en este estado. Una "
+"instancia separada puede ser re-unida a una nueva <literal>Session</literal> "
+"en un punto posterior en el tiempo, haciéndola persistente de nuevo (con "
+"todas las modificaciones). Este aspecto habilita un modelo de programación "
+"para unidades de trabajo de ejecución larga que requieren tiempo-para-pensar "
+"del usuario. Las llamamos <emphasis>transaccciones de aplicación</emphasis>, "
+"es decir, una unidad de trabajo desde el punto de vista del usuario."
-#: index.docbook:69
-msgid "We'll now discuss the states and state transitions (and the Hibernate methods that trigger a transition) in more detail."
-msgstr "Discutiremos ahora los estados y transiciones de estados (y los métodos de Hibernate que disparan una transición) en más detalle:"
+#. Tag: para
+#: session_api.xml:69
+#, no-c-format
+msgid ""
+"We'll now discuss the states and state transitions (and the Hibernate "
+"methods that trigger a transition) in more detail."
+msgstr ""
+"Discutiremos ahora los estados y transiciones de estados (y los métodos de "
+"Hibernate que disparan una transición) en más detalle:"
-#: index.docbook:77
+#. Tag: title
+#: session_api.xml:77
+#, no-c-format
msgid "Making objects persistent"
msgstr "Haciendo los objetos persistentes"
-#: index.docbook:79
-msgid "Newly instantiated instances of a a persistent class are considered <emphasis>transient</emphasis> by Hibernate. We can make a transient instance <emphasis>persistent</emphasis> by associating it with a session:"
-msgstr "Las instancias recién instanciadas de una clase persistente son consideradas <emphasis>transitorias</emphasis> por Hibernate. Podemos hacer una instancia transitoria <emphasis>persistente</emphasis> asociándola con una sesión:"
+#. Tag: para
+#: session_api.xml:79
+#, no-c-format
+msgid ""
+"Newly instantiated instances of a a persistent class are considered "
+"<emphasis>transient</emphasis> by Hibernate. We can make a transient "
+"instance <emphasis>persistent</emphasis> by associating it with a session:"
+msgstr ""
+"Las instancias recién instanciadas de una clase persistente son consideradas "
+"<emphasis>transitorias</emphasis> por Hibernate. Podemos hacer una instancia "
+"transitoria <emphasis>persistente</emphasis> asociándola con una sesión:"
-#: index.docbook:86
+#. Tag: programlisting
+#: session_api.xml:86
+#, no-c-format
msgid ""
- "<![CDATA[DomesticCat fritz = new DomesticCat();\n"
- "fritz.setColor(Color.GINGER);\n"
- "fritz.setSex('M');\n"
- "fritz.setName(\"Fritz\");\n"
- "Long generatedId = (Long) sess.save(fritz);]]>"
+"<![CDATA[DomesticCat fritz = new DomesticCat();\n"
+"fritz.setColor(Color.GINGER);\n"
+"fritz.setSex('M');\n"
+"fritz.setName(\"Fritz\");\n"
+"Long generatedId = (Long) sess.save(fritz);]]>"
msgstr ""
- "<![CDATA[DomesticCat fritz = new DomesticCat();\n"
- "fritz.setColor(Color.GINGER);\n"
- "fritz.setSex('M');\n"
- "fritz.setName(\"Fritz\");\n"
- "Long generatedId = (Long) sess.save(fritz);]]>"
-#: index.docbook:88
-msgid "If <literal>Cat</literal> has a generated identifier, the identifier is generated and assigned to the <literal>cat</literal> when <literal>save()</literal> is called. If <literal>Cat</literal> has an <literal>assigned</literal> identifier, or a composite key, the identifier should be assigned to the <literal>cat</literal> instance before calling <literal>save()</literal>. You may also use <literal>persist()</literal> instead of <literal>save()</literal>, with the semantics defined in the EJB3 early draft."
-msgstr "Si <literal>Cat</literal> tiene un identificador generado, el identificador es generado y asignado al <literal>cat</literal> cuando se llama a <literal>save()</literal>. Si <literal>Cat</literal> tiene un identificador <literal>assigned</literal>, o una clave compuesta, el identificador debe ser asignado a la instancia de <literal>cat</literal> antes de llamar a <literal>save()</literal>. Puedes también usar <literal>persist()</literal> en vez de <literal>save()</literal>, con la semántica definida en el temprano borrador de EJB3."
+#. Tag: para
+#: session_api.xml:88
+#, no-c-format
+msgid ""
+"If <literal>Cat</literal> has a generated identifier, the identifier is "
+"generated and assigned to the <literal>cat</literal> when <literal>save()</"
+"literal> is called. If <literal>Cat</literal> has an <literal>assigned</"
+"literal> identifier, or a composite key, the identifier should be assigned "
+"to the <literal>cat</literal> instance before calling <literal>save()</"
+"literal>. You may also use <literal>persist()</literal> instead of "
+"<literal>save()</literal>, with the semantics defined in the EJB3 early "
+"draft."
+msgstr ""
+"Si <literal>Cat</literal> tiene un identificador generado, el identificador "
+"es generado y asignado al <literal>cat</literal> cuando se llama a "
+"<literal>save()</literal>. Si <literal>Cat</literal> tiene un identificador "
+"<literal>assigned</literal>, o una clave compuesta, el identificador debe "
+"ser asignado a la instancia de <literal>cat</literal> antes de llamar a "
+"<literal>save()</literal>. Puedes también usar <literal>persist()</literal> "
+"en vez de <literal>save()</literal>, con la semántica definida en el "
+"temprano borrador de EJB3."
-#: index.docbook:100
-msgid "<literal>persist()</literal> makes a transient instance persistent. However, it doesn't guarantee that the identifier value will be assigned to the persistent instance immediately, the assignment might happen at flush time. <literal>persist()</literal> also guarantees that it will not execute an <literal>INSERT</literal> statement if it is called outside of transaction boundaries. This is useful in long-running conversations with an extended Session/persistence context."
-msgstr "Alternativamente, puedes asignar el identificador usando una versión sobrecargada de <literal>save()</literal>."
+#. Tag: para
+#: session_api.xml:100
+#, no-c-format
+msgid ""
+"<literal>persist()</literal> makes a transient instance persistent. However, "
+"it doesn't guarantee that the identifier value will be assigned to the "
+"persistent instance immediately, the assignment might happen at flush time. "
+"<literal>persist()</literal> also guarantees that it will not execute an "
+"<literal>INSERT</literal> statement if it is called outside of transaction "
+"boundaries. This is useful in long-running conversations with an extended "
+"Session/persistence context."
+msgstr ""
+"UNTRANSLATED!!! <literal>persist()</literal> makes a transient instance "
+"persistent. However, it doesn't guarantee that the identifier value will be "
+"assigned to the persistent instance immediately, the assignment might happen "
+"at flush time. <literal>persist()</literal> also guarantees that it will not "
+"execute an <literal>INSERT</literal> statement if it is called outside of "
+"transaction boundaries. This is useful in long-running conversations with an "
+"extended Session/persistence context."
-#: index.docbook:111
-msgid "<literal>save()</literal> does guarantee to return an identifier. If an INSERT has to be executed to get the identifier ( e.g. \"identity\" generator, not \"sequence\"), this INSERT happens immediately, no matter if you are inside or outside of a transaction. This is problematic in a long-running conversation with an extended Session/persistence context."
+#. Tag: para
+#: session_api.xml:111
+#, no-c-format
+msgid ""
+"<literal>save()</literal> does guarantee to return an identifier. If an "
+"INSERT has to be executed to get the identifier ( e.g. \"identity\" "
+"generator, not \"sequence\"), this INSERT happens immediately, no matter if "
+"you are inside or outside of a transaction. This is problematic in a long-"
+"running conversation with an extended Session/persistence context."
msgstr ""
- "<![CDATA[DomesticCat pk = new DomesticCat();\n"
- "pk.setColor(Color.TABBY);\n"
- "pk.setSex('F');\n"
- "pk.setName(\"PK\");\n"
- "pk.setKittens( new HashSet() );\n"
- "pk.addKitten(fritz);\n"
- "sess.save( pk, new Long(1234) );]]>"
+"<literal>save()</literal> does guarantee to return an identifier. If an "
+"INSERT has to be executed to get the identifier ( e.g. \"identity\" "
+"generator, not \"sequence\"), this INSERT happens immediately, no matter if "
+"you are inside or outside of a transaction. This is problematic in a long-"
+"running conversation with an extended Session/persistence context."
-#: index.docbook:121
-msgid "Alternatively, you may assign the identifier using an overloaded version of <literal>save()</literal>."
-msgstr "Si el objeto que haces persistente tiene objetos asociados (por ejemplo, la colección <literal>kittens</literal> en el ejemplo anterior), estos objetos pueden ser hechos persistentes en cualquier orden que quieras a menos que tengas una restricción <literal>NOT NULL</literal> sobre una columna clave foránea. Nunca hay riesgo de violar restricciones de clave foránea. Sin embargo, podrías violar una restricción <literal>NOT NULL</literal> si llamas a <literal>save()</literal> sobre objetos en orden erróneo."
+#. Tag: para
+#: session_api.xml:121
+#, no-c-format
+msgid ""
+"Alternatively, you may assign the identifier using an overloaded version of "
+"<literal>save()</literal>."
+msgstr ""
+"Alternativamente, puedes asignar el identificador usando una versión "
+"sobrecargada de <literal>save()</literal>."
-#: index.docbook:126
+#. Tag: programlisting
+#: session_api.xml:126
+#, no-c-format
msgid ""
- "<![CDATA[DomesticCat pk = new DomesticCat();\n"
- "pk.setColor(Color.TABBY);\n"
- "pk.setSex('F');\n"
- "pk.setName(\"PK\");\n"
- "pk.setKittens( new HashSet() );\n"
- "pk.addKitten(fritz);\n"
- "sess.save( pk, new Long(1234) );]]>"
-msgstr "Usualmente no te preocupas con este detalle, pues muy probablemente usarás la funcionalidad de <emphasis>persistencia transitiva</emphasis> de Hibernate para salvar los objetos asociados automáticamente. Entonces, ni siquiera ocurren violaciones de restricciones <literal>NOT NULL</literal> - Hibernate cuidará de todo. La persistencia transitiva se discute más adelante en este capítulo."
+"<![CDATA[DomesticCat pk = new DomesticCat();\n"
+"pk.setColor(Color.TABBY);\n"
+"pk.setSex('F');\n"
+"pk.setName(\"PK\");\n"
+"pk.setKittens( new HashSet() );\n"
+"pk.addKitten(fritz);\n"
+"sess.save( pk, new Long(1234) );]]>"
+msgstr ""
-#: index.docbook:128
-msgid "If the object you make persistent has associated objects (e.g. the <literal>kittens</literal> collection in the previous example), these objects may be made persistent in any order you like unless you have a <literal>NOT NULL</literal> constraint upon a foreign key column. There is never a risk of violating foreign key constraints. However, you might violate a <literal>NOT NULL</literal> constraint if you <literal>save()</literal> the objects in the wrong order."
-msgstr "Cargando un objeto"
+#. Tag: para
+#: session_api.xml:128
+#, no-c-format
+msgid ""
+"If the object you make persistent has associated objects (e.g. the "
+"<literal>kittens</literal> collection in the previous example), these "
+"objects may be made persistent in any order you like unless you have a "
+"<literal>NOT NULL</literal> constraint upon a foreign key column. There is "
+"never a risk of violating foreign key constraints. However, you might "
+"violate a <literal>NOT NULL</literal> constraint if you <literal>save()</"
+"literal> the objects in the wrong order."
+msgstr ""
+"Si el objeto que haces persistente tiene objetos asociados (por ejemplo, la "
+"colección <literal>kittens</literal> en el ejemplo anterior), estos objetos "
+"pueden ser hechos persistentes en cualquier orden que quieras a menos que "
+"tengas una restricción <literal>NOT NULL</literal> sobre una columna clave "
+"foránea. Nunca hay riesgo de violar restricciones de clave foránea. Sin "
+"embargo, podrías violar una restricción <literal>NOT NULL</literal> si "
+"llamas a <literal>save()</literal> sobre objetos en orden erróneo."
-#: index.docbook:138
-msgid "Usually you don't bother with this detail, as you'll very likely use Hibernate's <emphasis>transitive persistence</emphasis> feature to save the associated objects automatically. Then, even <literal>NOT NULL</literal> constraint violations don't occur - Hibernate will take care of everything. Transitive persistence is discussed later in this chapter."
-msgstr "Los métodos <literal>load()</literal> de <literal>Session</literal> te brindan una forma de traer una instancia persistente si ya saves su identificador. <literal>load()</literal> toma un objeto clase y cargará el estado dentro de una instancia recién instanciada de esta clase, en estado persistente."
+#. Tag: para
+#: session_api.xml:138
+#, no-c-format
+msgid ""
+"Usually you don't bother with this detail, as you'll very likely use "
+"Hibernate's <emphasis>transitive persistence</emphasis> feature to save the "
+"associated objects automatically. Then, even <literal>NOT NULL</literal> "
+"constraint violations don't occur - Hibernate will take care of everything. "
+"Transitive persistence is discussed later in this chapter."
+msgstr ""
+"Usualmente no te preocupas con este detalle, pues muy probablemente usarás "
+"la funcionalidad de <emphasis>persistencia transitiva</emphasis> de "
+"Hibernate para salvar los objetos asociados automáticamente. Entonces, ni "
+"siquiera ocurren violaciones de restricciones <literal>NOT NULL</literal> - "
+"Hibernate cuidará de todo. La persistencia transitiva se discute más "
+"adelante en este capítulo."
-#: index.docbook:149
+#. Tag: title
+#: session_api.xml:149
+#, no-c-format
msgid "Loading an object"
-msgstr "<![CDATA[Cat fritz = (Cat) sess.load(Cat.class, generatedId);]]>"
+msgstr "Cargando un objeto"
-#: index.docbook:151
-msgid "The <literal>load()</literal> methods of <literal>Session</literal> gives you a way to retrieve a persistent instance if you already know its identifier. <literal>load()</literal> takes a class object and will load the state into a newly instantiated instance of that class, in persistent state."
+#. Tag: para
+#: session_api.xml:151
+#, no-c-format
+msgid ""
+"The <literal>load()</literal> methods of <literal>Session</literal> gives "
+"you a way to retrieve a persistent instance if you already know its "
+"identifier. <literal>load()</literal> takes a class object and will load the "
+"state into a newly instantiated instance of that class, in persistent state."
msgstr ""
- "<![CDATA[// you need to wrap primitive identifiers\n"
- "long id = 1234;\n"
- "DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long(id) );]]>"
+"Los métodos <literal>load()</literal> de <literal>Session</literal> te "
+"brindan una forma de traer una instancia persistente si ya saves su "
+"identificador. <literal>load()</literal> toma un objeto clase y cargará el "
+"estado dentro de una instancia recién instanciada de esta clase, en estado "
+"persistente."
-#: index.docbook:158
+#. Tag: programlisting
+#: session_api.xml:158
+#, no-c-format
msgid "<![CDATA[Cat fritz = (Cat) sess.load(Cat.class, generatedId);]]>"
-msgstr "Alternativamente, puedes cargar estado dentro de una instancia dada:"
+msgstr ""
-#: index.docbook:160
+#. Tag: programlisting
+#: session_api.xml:160
+#, no-c-format
msgid ""
- "<![CDATA[// you need to wrap primitive identifiers\n"
- "long id = 1234;\n"
- "DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long(id) );]]>"
+"<![CDATA[// you need to wrap primitive identifiers\n"
+"long id = 1234;\n"
+"DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long"
+"(id) );]]>"
msgstr ""
- "<![CDATA[Cat cat = new DomesticCat();\n"
- "// load pk's state into cat\n"
- "sess.load( cat, new Long(pkId) );\n"
- "Set kittens = cat.getKittens();]]>"
-#: index.docbook:162
+#. Tag: para
+#: session_api.xml:162
+#, no-c-format
msgid "Alternatively, you can load state into a given instance:"
-msgstr "Nota que <literal>load()</literal> lanzará una excepción irrecuperable si no hay una fila correspondiente en base de datos. Si la clase es mapeada con un proxy, <literal>load()</literal> sólo devuelve un proxy no inicializado y no llamará realmente a la base de datos hasta que invoques un método del proxy. Este comportamiento es muy útil si deseas crear una asociación a un objeto sin cargarlo realmente de la base de datos. Permite además que múltiples instancias sean cargadas como un lote si se define <literal>batch-size</literal> para el mapeo de la clase."
+msgstr "Alternativamente, puedes cargar estado dentro de una instancia dada:"
-#: index.docbook:166
+#. Tag: programlisting
+#: session_api.xml:166
+#, no-c-format
msgid ""
- "<![CDATA[Cat cat = new DomesticCat();\n"
- "// load pk's state into cat\n"
- "sess.load( cat, new Long(pkId) );\n"
- "Set kittens = cat.getKittens();]]>"
-msgstr "Si no tienes certeza que exista una fila correspondiente, debes usar el método <literal>get()</literal>, que llama a la base de datos inmediatamente y devuelve nulo si no existe una fila correspondiente."
+"<![CDATA[Cat cat = new DomesticCat();\n"
+"// load pk's state into cat\n"
+"sess.load( cat, new Long(pkId) );\n"
+"Set kittens = cat.getKittens();]]>"
+msgstr ""
-#: index.docbook:168
-msgid "Note that <literal>load()</literal> will throw an unrecoverable exception if there is no matching database row. If the class is mapped with a proxy, <literal>load()</literal> just returns an uninitialized proxy and does not actually hit the database until you invoke a method of the proxy. This behaviour is very useful if you wish to create an association to an object without actually loading it from the database. It also allows multiple instances to be loaded as a batch if <literal>batch-size</literal> is defined for the class mapping."
+#. Tag: para
+#: session_api.xml:168
+#, no-c-format
+msgid ""
+"Note that <literal>load()</literal> will throw an unrecoverable exception if "
+"there is no matching database row. If the class is mapped with a proxy, "
+"<literal>load()</literal> just returns an uninitialized proxy and does not "
+"actually hit the database until you invoke a method of the proxy. This "
+"behaviour is very useful if you wish to create an association to an object "
+"without actually loading it from the database. It also allows multiple "
+"instances to be loaded as a batch if <literal>batch-size</literal> is "
+"defined for the class mapping."
msgstr ""
- "<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id);\n"
- "if (cat==null) {\n"
- " cat = new Cat();\n"
- " sess.save(cat, id);\n"
- "}\n"
- "return cat;]]>"
+"Nota que <literal>load()</literal> lanzará una excepción irrecuperable si no "
+"hay una fila correspondiente en base de datos. Si la clase es mapeada con un "
+"proxy, <literal>load()</literal> sólo devuelve un proxy no inicializado y no "
+"llamará realmente a la base de datos hasta que invoques un método del proxy. "
+"Este comportamiento es muy útil si deseas crear una asociación a un objeto "
+"sin cargarlo realmente de la base de datos. Permite además que múltiples "
+"instancias sean cargadas como un lote si se define <literal>batch-size</"
+"literal> para el mapeo de la clase."
-#: index.docbook:179
-msgid "If you are not certain that a matching row exists, you should use the <literal>get()</literal> method, which hits the database immediately and returns null if there is no matching row."
-msgstr "Puedes incluso cargar un objeto usando un <literal>SELECT ... FOR UPDATE</literal> de SQL, usando un <literal>LockMode</literal>. Ver la documentación de la API para más información."
+#. Tag: para
+#: session_api.xml:179
+#, no-c-format
+msgid ""
+"If you are not certain that a matching row exists, you should use the "
+"<literal>get()</literal> method, which hits the database immediately and "
+"returns null if there is no matching row."
+msgstr ""
+"Si no tienes certeza que exista una fila correspondiente, debes usar el "
+"método <literal>get()</literal>, que llama a la base de datos inmediatamente "
+"y devuelve nulo si no existe una fila correspondiente."
-#: index.docbook:185
+#. Tag: programlisting
+#: session_api.xml:185
+#, no-c-format
msgid ""
- "<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id);\n"
- "if (cat==null) {\n"
- " cat = new Cat();\n"
- " sess.save(cat, id);\n"
- "}\n"
- "return cat;]]>"
-msgstr "<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id, LockMode.UPGRADE);]]>"
+"<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id);\n"
+"if (cat==null) {\n"
+" cat = new Cat();\n"
+" sess.save(cat, id);\n"
+"}\n"
+"return cat;]]>"
+msgstr ""
-#: index.docbook:187
-msgid "You may even load an object using an SQL <literal>SELECT ... FOR UPDATE</literal>, using a <literal>LockMode</literal>. See the API documentation for more information."
-msgstr "Ten en cuenta que <emphasis>ninguna</emphasis> instancia asociada o colección contenida es selecciona <literal>FOR UPDATE</literal>, a menos que decidas especificar <literal>lock</literal> o <literal>all</literal> como un estilo de cascada para la asociación."
+#. Tag: para
+#: session_api.xml:187
+#, no-c-format
+msgid ""
+"You may even load an object using an SQL <literal>SELECT ... FOR UPDATE</"
+"literal>, using a <literal>LockMode</literal>. See the API documentation for "
+"more information."
+msgstr ""
+"Puedes incluso cargar un objeto usando un <literal>SELECT ... FOR UPDATE</"
+"literal> de SQL, usando un <literal>LockMode</literal>. Ver la documentación "
+"de la API para más información."
-#: index.docbook:192
+#. Tag: programlisting
+#: session_api.xml:192
+#, no-c-format
msgid "<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id, LockMode.UPGRADE);]]>"
-msgstr "Es posible volver a cargar un objeto y todas sus colecciones en cualquier momento, usando el método <literal>refresh()</literal>. Esto es útil cuando se usan disparadores de base de datos para inicializar algunas de las propiedades del objeto."
+msgstr ""
-#: index.docbook:194
-msgid "Note that any associated instances or contained collections are <emphasis>not</emphasis> selected <literal>FOR UPDATE</literal>, unless you decide to specify <literal>lock</literal> or <literal>all</literal> as a cascade style for the association."
+#. Tag: para
+#: session_api.xml:194
+#, no-c-format
+msgid ""
+"Note that any associated instances or contained collections are "
+"<emphasis>not</emphasis> selected <literal>FOR UPDATE</literal>, unless you "
+"decide to specify <literal>lock</literal> or <literal>all</literal> as a "
+"cascade style for the association."
msgstr ""
- "<![CDATA[sess.save(cat);\n"
- "sess.flush(); //force the SQL INSERT\n"
- "sess.refresh(cat); //re-read the state (after the trigger executes)]]>"
+"Ten en cuenta que <emphasis>ninguna</emphasis> instancia asociada o "
+"colección contenida es selecciona <literal>FOR UPDATE</literal>, a menos que "
+"decidas especificar <literal>lock</literal> o <literal>all</literal> como un "
+"estilo de cascada para la asociación."
-#: index.docbook:201
-msgid "It is possible to re-load an object and all its collections at any time, using the <literal>refresh()</literal> method. This is useful when database triggers are used to initialize some of the properties of the object."
-msgstr "Una cuestión importante aparece usualmente en este punto: ¿Cuánto carga Hibernate de la base de datos y cuántos <literal>SELECT</literal>s de SQL usará? Esto depende de la <emphasis>estrategia de recuperación</emphasis> y se explica en <xref linkend=\"performance-fetching\"/>."
+#. Tag: para
+#: session_api.xml:201
+#, no-c-format
+msgid ""
+"It is possible to re-load an object and all its collections at any time, "
+"using the <literal>refresh()</literal> method. This is useful when database "
+"triggers are used to initialize some of the properties of the object."
+msgstr ""
+"Es posible volver a cargar un objeto y todas sus colecciones en cualquier "
+"momento, usando el método <literal>refresh()</literal>. Esto es útil cuando "
+"se usan disparadores de base de datos para inicializar algunas de las "
+"propiedades del objeto."
-#: index.docbook:207
+#. Tag: programlisting
+#: session_api.xml:207
+#, no-c-format
msgid ""
- "<![CDATA[sess.save(cat);\n"
- "sess.flush(); //force the SQL INSERT\n"
- "sess.refresh(cat); //re-read the state (after the trigger executes)]]>"
-msgstr "Consultando"
+"<![CDATA[sess.save(cat);\n"
+"sess.flush(); //force the SQL INSERT\n"
+"sess.refresh(cat); //re-read the state (after the trigger executes)]]>"
+msgstr ""
-#: index.docbook:209
-msgid "An important question usually appears at this point: How much does Hibernate load from the database and how many SQL <literal>SELECT</literal>s will it use? This depends on the <emphasis>fetching strategy</emphasis> and is explained in <xref linkend=\"performance-fetching\"/>."
-msgstr "Si no sabes los identificadores de los objetos que estás buscando, necesitas una consulta. Hibernate soporta un lenguaje de consulta orientado a objetos (HQL) fácil de usar pero potente. Para la creación de consultas programáticas, Hibernate soporta una funcionalidad sofisticada de consulta de Criteria y Example (QBC and QBE). También puedes expresar tu consulta en el SQL nativo de tu base de datos, con soporte opcional de Hibernate para la conversión del conjunto resultado en objetos."
+#. Tag: para
+#: session_api.xml:209
+#, no-c-format
+msgid ""
+"An important question usually appears at this point: How much does Hibernate "
+"load from the database and how many SQL <literal>SELECT</literal>s will it "
+"use? This depends on the <emphasis>fetching strategy</emphasis> and is "
+"explained in <xref linkend=\"performance-fetching\"/>."
+msgstr ""
+"Una cuestión importante aparece usualmente en este punto: ¿Cuánto carga "
+"Hibernate de la base de datos y cuántos <literal>SELECT</literal>s de SQL "
+"usará? Esto depende de la <emphasis>estrategia de recuperación</emphasis> y "
+"se explica en <xref linkend=\"performance-fetching\"/>."
-#: index.docbook:219
+#. Tag: title
+#: session_api.xml:219
+#, no-c-format
msgid "Querying"
-msgstr "Ejecutando consultas"
+msgstr "Consultando"
-#: index.docbook:221
-msgid "If you don't know the identifiers of the objects you are looking for, you need a query. Hibernate supports an easy-to-use but powerful object oriented query language (HQL). For programmatic query creation, Hibernate supports a sophisticated Criteria and Example query feature (QBC and QBE). You may also express your query in the native SQL of your database, with optional support from Hibernate for result set conversion into objects."
-msgstr "Las consultas HQL y SQL nativas son representadas con una instancia de <literal>org.hibernate.Query</literal>. Esta interface ofrece métodos para la ligación de parámetros, manejo del conjunto resultado, y para la ejecución de la consulta real. Siempre obtienes una <literal>Query</literal> usando la <literal>Session</literal> actual:"
+#. Tag: para
+#: session_api.xml:221
+#, no-c-format
+msgid ""
+"If you don't know the identifiers of the objects you are looking for, you "
+"need a query. Hibernate supports an easy-to-use but powerful object oriented "
+"query language (HQL). For programmatic query creation, Hibernate supports a "
+"sophisticated Criteria and Example query feature (QBC and QBE). You may also "
+"express your query in the native SQL of your database, with optional support "
+"from Hibernate for result set conversion into objects."
+msgstr ""
+"Si no sabes los identificadores de los objetos que estás buscando, necesitas "
+"una consulta. Hibernate soporta un lenguaje de consulta orientado a objetos "
+"(HQL) fácil de usar pero potente. Para la creación de consultas "
+"programáticas, Hibernate soporta una funcionalidad sofisticada de consulta "
+"de Criteria y Example (QBC and QBE). También puedes expresar tu consulta en "
+"el SQL nativo de tu base de datos, con soporte opcional de Hibernate para la "
+"conversión del conjunto resultado en objetos."
-#: index.docbook:231
+#. Tag: title
+#: session_api.xml:231
+#, no-c-format
msgid "Executing queries"
+msgstr "Ejecutando consultas"
+
+#. Tag: para
+#: session_api.xml:233
+#, no-c-format
+msgid ""
+"HQL and native SQL queries are represented with an instance of <literal>org."
+"hibernate.Query</literal>. This interface offers methods for parameter "
+"binding, result set handling, and for the execution of the actual query. You "
+"always obtain a <literal>Query</literal> using the current <literal>Session</"
+"literal>:"
msgstr ""
- "<![CDATA[List cats = session.createQuery(\n"
- " \"from Cat as cat where cat.birthdate < ?\")\n"
- " .setDate(0, date)\n"
- " .list();\n"
- "\n"
- "List mothers = session.createQuery(\n"
- " \"select mother from Cat as cat join cat.mother as mother where cat.name = ?\")\n"
- " .setString(0, name)\n"
- " .list();\n"
- "\n"
- "List kittens = session.createQuery(\n"
- " \"from Cat as cat where cat.mother = ?\")\n"
- " .setEntity(0, pk)\n"
- " .list();\n"
- "\n"
- "Cat mother = (Cat) session.createQuery(\n"
- " \"select cat.mother from Cat as cat where cat = ?\")\n"
- " .setEntity(0, izi)\n"
- " .uniqueResult();]]>"
+"Las consultas HQL y SQL nativas son representadas con una instancia de "
+"<literal>org.hibernate.Query</literal>. Esta interface ofrece métodos para "
+"la ligación de parámetros, manejo del conjunto resultado, y para la "
+"ejecución de la consulta real. Siempre obtienes una <literal>Query</literal> "
+"usando la <literal>Session</literal> actual:"
-#: index.docbook:233
-msgid "HQL and native SQL queries are represented with an instance of <literal>org.hibernate.Query</literal>. This interface offers methods for parameter binding, result set handling, and for the execution of the actual query. You always obtain a <literal>Query</literal> using the current <literal>Session</literal>:"
-msgstr "Una consulta se ejecuta usualmente invocando a <literal>list()</literal>, el resultado de la consulta será cargado completamente dentro de una colección en memoria. Las instancias de entidad traídas por una consulta están en estado persistente. El método <literal>uniqueResult()</literal> ofrece un atajo si sabes que tu consulta devolverá sólo un objeto."
+#. Tag: programlisting
+#: session_api.xml:240
+#, no-c-format
+msgid ""
+"<![CDATA[List cats = session.createQuery(\n"
+" \"from Cat as cat where cat.birthdate < ?\")\n"
+" .setDate(0, date)\n"
+" .list();\n"
+"\n"
+"List mothers = session.createQuery(\n"
+" \"select mother from Cat as cat join cat.mother as mother where cat.name "
+"= ?\")\n"
+" .setString(0, name)\n"
+" .list();\n"
+"\n"
+"List kittens = session.createQuery(\n"
+" \"from Cat as cat where cat.mother = ?\")\n"
+" .setEntity(0, pk)\n"
+" .list();\n"
+"\n"
+"Cat mother = (Cat) session.createQuery(\n"
+" \"select cat.mother from Cat as cat where cat = ?\")\n"
+" .setEntity(0, izi)\n"
+" .uniqueResult();]]\n"
+"\n"
+"Query mothersWithKittens = (Cat) session.createQuery(\n"
+" \"select mother from Cat as mother left join fetch mother.kittens\");\n"
+"Set uniqueMothers = new HashSet(mothersWithKittens.list());]]>"
+msgstr ""
-#: index.docbook:240
+#. Tag: para
+#: session_api.xml:242
+#, no-c-format
msgid ""
- "<![CDATA[List cats = session.createQuery(\n"
- " \"from Cat as cat where cat.birthdate < ?\")\n"
- " .setDate(0, date)\n"
- " .list();\n"
- "\n"
- "List mothers = session.createQuery(\n"
- " \"select mother from Cat as cat join cat.mother as mother where cat.name = ?\")\n"
- " .setString(0, name)\n"
- " .list();\n"
- "\n"
- "List kittens = session.createQuery(\n"
- " \"from Cat as cat where cat.mother = ?\")\n"
- " .setEntity(0, pk)\n"
- " .list();\n"
- "\n"
- "Cat mother = (Cat) session.createQuery(\n"
- " \"select cat.mother from Cat as cat where cat = ?\")\n"
- " .setEntity(0, izi)\n"
- " .uniqueResult();]]\n"
- "\n"
- "Query mothersWithKittens = (Cat) session.createQuery(\n"
- " \"select mother from Cat as mother left join fetch mother.kittens\");\n"
- "Set uniqueMothers = new HashSet(mothersWithKittens.list());]]>"
+"A query is usually executed by invoking <literal>list()</literal>, the "
+"result of the query will be loaded completely into a collection in memory. "
+"Entity instances retrieved by a query are in persistent state. The "
+"<literal>uniqueResult()</literal> method offers a shortcut if you know your "
+"query will only return a single object. Note that queries that make use of "
+"eager fetching of collections usually return duplicates of the root objects "
+"(but with their collections initialized). You can filter these duplicates "
+"simply through a <literal>Set</literal>."
+msgstr ""
+"Una consulta se ejecuta usualmente invocando a <literal>list()</literal>, el "
+"resultado de la consulta será cargado completamente dentro de una colección "
+"en memoria. Las instancias de entidad traídas por una consulta están en "
+"estado persistente. El método <literal>uniqueResult()</literal> ofrece un "
+"atajo si sabes que tu consulta devolverá sólo un objeto."
+
+#. Tag: title
+#: session_api.xml:254
+#, no-c-format
+msgid "Iterating results"
msgstr "Iterando los resultados"
-#: index.docbook:242
-msgid "A query is usually executed by invoking <literal>list()</literal>, the result of the query will be loaded completely into a collection in memory. Entity instances retrieved by a query are in persistent state. The <literal>uniqueResult()</literal> method offers a shortcut if you know your query will only return a single object. Note that queries that make use of eager fetching of collections usually return duplicates of the root objects (but with their collections initialized). You can filter these duplicates simply through a <literal>Set</literal>."
-msgstr "Ocasionalmente, podrías ser capaz de lograr mejor rendimiento al ejecutar la consulta usando el método <literal>iterate()</literal>. Esto sólo será en el caso que esperes que las instancias reales de entidad devueltas por la consulta estén ya en la sesión o caché de segundo nivel. Si todavía no están en caché, <literal>iterate()</literal> será más lento que <literal>list()</literal> y podría requerir muchas llamadas a la base de datos para una consulta simple, usualmente <emphasis>1</emphasis> para la selección inicial que solamente devuelve identificadores, y <emphasis>n</emphasis> selecciones adicionales para inicializar las instancias reales."
+#. Tag: para
+#: session_api.xml:256
+#, no-c-format
+msgid ""
+"Occasionally, you might be able to achieve better performance by executing "
+"the query using the <literal>iterate()</literal> method. This will only "
+"usually be the case if you expect that the actual entity instances returned "
+"by the query will already be in the session or second-level cache. If they "
+"are not already cached, <literal>iterate()</literal> will be slower than "
+"<literal>list()</literal> and might require many database hits for a simple "
+"query, usually <emphasis>1</emphasis> for the initial select which only "
+"returns identifiers, and <emphasis>n</emphasis> additional selects to "
+"initialize the actual instances."
+msgstr ""
+"Ocasionalmente, podrías ser capaz de lograr mejor rendimiento al ejecutar la "
+"consulta usando el método <literal>iterate()</literal>. Esto sólo será en el "
+"caso que esperes que las instancias reales de entidad devueltas por la "
+"consulta estén ya en la sesión o caché de segundo nivel. Si todavía no están "
+"en caché, <literal>iterate()</literal> será más lento que <literal>list()</"
+"literal> y podría requerir muchas llamadas a la base de datos para una "
+"consulta simple, usualmente <emphasis>1</emphasis> para la selección inicial "
+"que solamente devuelve identificadores, y <emphasis>n</emphasis> selecciones "
+"adicionales para inicializar las instancias reales."
-#: index.docbook:254
-msgid "Iterating results"
+#. Tag: programlisting
+#: session_api.xml:268
+#, no-c-format
+msgid ""
+"<![CDATA[// fetch ids\n"
+"Iterator iter = sess.createQuery(\"from eg.Qux q order by q.likeliness\")."
+"iterate();\n"
+"while ( iter.hasNext() ) {\n"
+" Qux qux = (Qux) iter.next(); // fetch the object\n"
+" // something we couldnt express in the query\n"
+" if ( qux.calculateComplicatedAlgorithm() ) {\n"
+" // delete the current instance\n"
+" iter.remove();\n"
+" // dont need to process the rest\n"
+" break;\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[// fetch ids\n"
- "Iterator iter = sess.createQuery(\"from eg.Qux q order by q.likeliness\").iterate();\n"
- "while ( iter.hasNext() ) {\n"
- " Qux qux = (Qux) iter.next(); // fetch the object\n"
- " // something we couldnt express in the query\n"
- " if ( qux.calculateComplicatedAlgorithm() ) {\n"
- " // delete the current instance\n"
- " iter.remove();\n"
- " // dont need to process the rest\n"
- " break;\n"
- " }\n"
- "}]]>"
-#: index.docbook:256
-msgid "Occasionally, you might be able to achieve better performance by executing the query using the <literal>iterate()</literal> method. This will only usually be the case if you expect that the actual entity instances returned by the query will already be in the session or second-level cache. If they are not already cached, <literal>iterate()</literal> will be slower than <literal>list()</literal> and might require many database hits for a simple query, usually <emphasis>1</emphasis> for the initial select which only returns identifiers, and <emphasis>n</emphasis> additional selects to initialize the actual instances."
+#. Tag: title
+#: session_api.xml:272
+#, no-c-format
+msgid "Queries that return tuples"
msgstr "Consultas que devuelven tuplas"
-#: index.docbook:268
+#. Tag: para
+#: session_api.xml:274
+#, no-c-format
msgid ""
- "<![CDATA[// fetch ids\n"
- "Iterator iter = sess.createQuery(\"from eg.Qux q order by q.likeliness\").iterate();\n"
- "while ( iter.hasNext() ) {\n"
- " Qux qux = (Qux) iter.next(); // fetch the object\n"
- " // something we couldnt express in the query\n"
- " if ( qux.calculateComplicatedAlgorithm() ) {\n"
- " // delete the current instance\n"
- " iter.remove();\n"
- " // dont need to process the rest\n"
- " break;\n"
- " }\n"
- "}]]>"
-msgstr "Las consultas de Hibernate a veces devuelven tuplas de objetos, en cuyo caso cada tupla se devuelve como un array:"
+"Hibernate queries sometimes return tuples of objects, in which case each "
+"tuple is returned as an array:"
+msgstr ""
+"Las consultas de Hibernate a veces devuelven tuplas de objetos, en cuyo caso "
+"cada tupla se devuelve como un array:"
-#: index.docbook:272
-msgid "Queries that return tuples"
+#. Tag: programlisting
+#: session_api.xml:279
+#, no-c-format
+msgid ""
+"<![CDATA[Iterator kittensAndMothers = sess.createQuery(\n"
+" \"select kitten, mother from Cat kitten join kitten.mother mother"
+"\")\n"
+" .list()\n"
+" .iterator();\n"
+"\n"
+"while ( kittensAndMothers.hasNext() ) {\n"
+" Object[] tuple = (Object[]) kittensAndMothers.next();\n"
+" Cat kitten = (Cat) tuple[0];\n"
+" Cat mother = (Cat) tuple[1];\n"
+" ....\n"
+"}]]>"
msgstr ""
- "<![CDATA[Iterator kittensAndMothers = sess.createQuery(\n"
- " \"select kitten, mother from Cat kitten join kitten.mother mother\")\n"
- " .list()\n"
- " .iterator();\n"
- "\n"
- "while ( kittensAndMothers.hasNext() ) {\n"
- " Object[] tuple = (Object[]) kittensAndMothers.next();\n"
- " Cat kitten = (Cat) tuple[0];
-\n"
- " Cat mother = (Cat) tuple[1];
-\n"
- " ....\n"
- "}]]>"
-#: index.docbook:274
-msgid "Hibernate queries sometimes return tuples of objects, in which case each tuple is returned as an array:"
+#. Tag: title
+#: session_api.xml:284
+#, no-c-format
+msgid "Scalar results"
msgstr "Resultados escalares"
-#: index.docbook:279
+#. Tag: para
+#: session_api.xml:286
+#, no-c-format
msgid ""
- "<![CDATA[Iterator kittensAndMothers = sess.createQuery(\n"
- " \"select kitten, mother from Cat kitten join kitten.mother mother\")\n"
- " .list()\n"
- " .iterator();\n"
- "\n"
- "while ( kittensAndMothers.hasNext() ) {\n"
- " Object[] tuple = (Object[]) kittensAndMothers.next();\n"
- " Cat kitten = (Cat) tuple[0];\n"
- " Cat mother = (Cat) tuple[1];\n"
- " ....\n"
- "}]]>"
-msgstr "Las consultas pueden especificar una propiedad de una clase en la cláusula <literal>select</literal>. Pueden incluso llamar a funciones de agregación SQL. Las propiedades o agregaciones son considerados resultados \"escalares\" (y no entidades en estado persistente)."
-
-#: index.docbook:284
-msgid "Scalar results"
+"Queries may specify a property of a class in the <literal>select</literal> "
+"clause. They may even call SQL aggregate functions. Properties or aggregates "
+"are considered \"scalar\" results (and not entities in persistent state)."
msgstr ""
- "<![CDATA[Iterator results = sess.createQuery(\n"
- " \"select cat.color, min(cat.birthdate), count(cat) from Cat cat \" +\n"
- " \"group by cat.color\")\n"
- " .list()\n"
- " .iterator();\n"
- "\n"
- "while ( results.hasNext() ) {\n"
- " Object[] row = results.next();\n"
- " Color type = (Color) row[0];\n"
- " Date oldest = (Date) row[1];\n"
- " Integer count = (Integer) row[2];\n"
- " .....\n"
- "}]]>"
+"Las consultas pueden especificar una propiedad de una clase en la cláusula "
+"<literal>select</literal>. Pueden incluso llamar a funciones de agregación "
+"SQL. Las propiedades o agregaciones son considerados resultados \"escalares"
+"\" (y no entidades en estado persistente)."
-#: index.docbook:286
-msgid "Queries may specify a property of a class in the <literal>select</literal> clause. They may even call SQL aggregate functions. Properties or aggregates are considered \"scalar\" results (and not entities in persistent state)."
-msgstr "Ligación de parámetros"
-
-#: index.docbook:292
+#. Tag: programlisting
+#: session_api.xml:292
+#, no-c-format
msgid ""
- "<![CDATA[Iterator results = sess.createQuery(\n"
- " \"select cat.color, min(cat.birthdate), count(cat) from Cat cat \" +\n"
- " \"group by cat.color\")\n"
- " .list()\n"
- " .iterator();\n"
- "\n"
- "while ( results.hasNext() ) {\n"
- " Object[] row = (Object[]) results.next();\n"
- " Color type = (Color) row[0];\n"
- " Date oldest = (Date) row[1];\n"
- " Integer count = (Integer) row[2];\n"
- " .....\n"
- "}]]>"
-msgstr "Se proveen métodos en <literal>Query</literal> para ligar valores a parámetros con nombre o parámetros <literal>?</literal> de estilo JDBC. <emphasis>Al contrario de JDBC, Hibernate numera los parámetros desde cero.</emphasis> Los parámetros con nombre son identificadores de la forma <literal>:name</literal> en la cadena de la consulta. Las ventajas de los parámetros con nombre son:"
+"<![CDATA[Iterator results = sess.createQuery(\n"
+" \"select cat.color, min(cat.birthdate), count(cat) from Cat cat \" "
+"+\n"
+" \"group by cat.color\")\n"
+" .list()\n"
+" .iterator();\n"
+"\n"
+"while ( results.hasNext() ) {\n"
+" Object[] row = (Object[]) results.next();\n"
+" Color type = (Color) row[0];\n"
+" Date oldest = (Date) row[1];\n"
+" Integer count = (Integer) row[2];\n"
+" .....\n"
+"}]]>"
+msgstr ""
-#: index.docbook:297
+#. Tag: title
+#: session_api.xml:297
+#, no-c-format
msgid "Bind parameters"
-msgstr "los parámetros con nombre son insensibles al orden en que aparecen en la cadena de consulta"
+msgstr "Ligación de parámetros"
-#: index.docbook:299
-msgid "Methods on <literal>Query</literal> are provided for binding values to named parameters or JDBC-style <literal>?</literal> parameters. <emphasis>Contrary to JDBC, Hibernate numbers parameters from zero.</emphasis> Named parameters are identifiers of the form <literal>:name</literal> in the query string. The advantages of named parameters are:"
-msgstr "pueden aparecer múltiples veces en la misma consulta"
+#. Tag: para
+#: session_api.xml:299
+#, no-c-format
+msgid ""
+"Methods on <literal>Query</literal> are provided for binding values to named "
+"parameters or JDBC-style <literal>?</literal> parameters. <emphasis>Contrary "
+"to JDBC, Hibernate numbers parameters from zero.</emphasis> Named parameters "
+"are identifiers of the form <literal>:name</literal> in the query string. "
+"The advantages of named parameters are:"
+msgstr ""
+"Se proveen métodos en <literal>Query</literal> para ligar valores a "
+"parámetros con nombre o parámetros <literal>?</literal> de estilo JDBC. "
+"<emphasis>Al contrario de JDBC, Hibernate numera los parámetros desde cero.</"
+"emphasis> Los parámetros con nombre son identificadores de la forma "
+"<literal>:name</literal> en la cadena de la consulta. Las ventajas de los "
+"parámetros con nombre son:"
-#: index.docbook:309
-msgid "named parameters are insensitive to the order they occur in the query string"
-msgstr "son auto-documentados"
+#. Tag: para
+#: session_api.xml:309
+#, no-c-format
+msgid ""
+"named parameters are insensitive to the order they occur in the query string"
+msgstr ""
+"los parámetros con nombre son insensibles al orden en que aparecen en la "
+"cadena de consulta"
-#: index.docbook:315
+#. Tag: para
+#: session_api.xml:315
+#, no-c-format
msgid "they may occur multiple times in the same query"
-msgstr ""
- "<![CDATA[//named parameter (preferred)\n"
- "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = :name\");\n"
- "q.setString(\"name\", \"Fritz\");\n"
- "Iterator cats = q.iterate();]]>"
+msgstr "pueden aparecer múltiples veces en la misma consulta"
-#: index.docbook:320
+#. Tag: para
+#: session_api.xml:320
+#, no-c-format
msgid "they are self-documenting"
-msgstr ""
- "<![CDATA[//positional parameter\n"
- "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = ?\");\n"
- "q.setString(0, \"Izi\");\n"
- "Iterator cats = q.iterate();]]>"
+msgstr "son auto-documentados"
-#: index.docbook:326
+#. Tag: programlisting
+#: session_api.xml:326
+#, no-c-format
msgid ""
- "<![CDATA[//named parameter (preferred)\n"
- "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = :name\");\n"
- "q.setString(\"name\", \"Fritz\");\n"
- "Iterator cats = q.iterate();]]>"
+"<![CDATA[//named parameter (preferred)\n"
+"Query q = sess.createQuery(\"from DomesticCat cat where cat.name = :name"
+"\");\n"
+"q.setString(\"name\", \"Fritz\");\n"
+"Iterator cats = q.iterate();]]>"
msgstr ""
- "<![CDATA[//named parameter list\n"
- "List names = new ArrayList();\n"
- "names.add(\"Izi\");\n"
- "names.add(\"Fritz\");\n"
- "Query q = sess.createQuery(\"from DomesticCat cat where cat.name in (:namesList)\");\n"
- "q.setParameterList(\"namesList\", names);\n"
- "List cats = q.list();]]>"
-#: index.docbook:328
+#. Tag: programlisting
+#: session_api.xml:328
+#, no-c-format
msgid ""
- "<![CDATA[//positional parameter\n"
- "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = ?\");\n"
- "q.setString(0, \"Izi\");\n"
- "Iterator cats = q.iterate();]]>"
-msgstr "Paginación"
+"<![CDATA[//positional parameter\n"
+"Query q = sess.createQuery(\"from DomesticCat cat where cat.name = ?\");\n"
+"q.setString(0, \"Izi\");\n"
+"Iterator cats = q.iterate();]]>"
+msgstr ""
-#: index.docbook:330
+#. Tag: programlisting
+#: session_api.xml:330
+#, no-c-format
msgid ""
- "<![CDATA[//named parameter list\n"
- "List names = new ArrayList();\n"
- "names.add(\"Izi\");\n"
- "names.add(\"Fritz\");\n"
- "Query q = sess.createQuery(\"from DomesticCat cat where cat.name in (:namesList)\");\n"
- "q.setParameterList(\"namesList\", names);\n"
- "List cats = q.list();]]>"
-msgstr "Si necesitas especificar límites sobre tu conjunto resultado (el número máximo de filas que quieras traer y/o la primera fila que quieras traer) debes usar los métodos de la interface <literal>Query</literal>:"
+"<![CDATA[//named parameter list\n"
+"List names = new ArrayList();\n"
+"names.add(\"Izi\");\n"
+"names.add(\"Fritz\");\n"
+"Query q = sess.createQuery(\"from DomesticCat cat where cat.name in (:"
+"namesList)\");\n"
+"q.setParameterList(\"namesList\", names);\n"
+"List cats = q.list();]]>"
+msgstr ""
-#: index.docbook:335
+#. Tag: title
+#: session_api.xml:335
+#, no-c-format
msgid "Pagination"
+msgstr "Paginación"
+
+#. Tag: para
+#: session_api.xml:337
+#, no-c-format
+msgid ""
+"If you need to specify bounds upon your result set (the maximum number of "
+"rows you want to retrieve and / or the first row you want to retrieve) you "
+"should use methods of the <literal>Query</literal> interface:"
msgstr ""
- "<![CDATA[Query q = sess.createQuery(\"from DomesticCat cat\");\n"
- "q.setFirstResult(20);\n"
- "q.setMaxResults(10);\n"
- "List cats = q.list();]]>"
+"Si necesitas especificar límites sobre tu conjunto resultado (el número "
+"máximo de filas que quieras traer y/o la primera fila que quieras traer) "
+"debes usar los métodos de la interface <literal>Query</literal>:"
-#: index.docbook:337
-msgid "If you need to specify bounds upon your result set (the maximum number of rows you want to retrieve and / or the first row you want to retrieve) you should use methods of the <literal>Query</literal> interface:"
-msgstr "Hibernate sabe cómo traducir este límite de consulta al SQL nativo de tu DBMS."
+#. Tag: programlisting
+#: session_api.xml:343
+#, no-c-format
+msgid ""
+"<![CDATA[Query q = sess.createQuery(\"from DomesticCat cat\");\n"
+"q.setFirstResult(20);\n"
+"q.setMaxResults(10);\n"
+"List cats = q.list();]]>"
+msgstr ""
-#: index.docbook:343
+#. Tag: para
+#: session_api.xml:345
+#, no-c-format
msgid ""
- "<![CDATA[Query q = sess.createQuery(\"from DomesticCat cat\");\n"
- "q.setFirstResult(20);\n"
- "q.setMaxResults(10);\n"
- "List cats = q.list();]]>"
-msgstr "Iteración scrollable"
+"Hibernate knows how to translate this limit query into the native SQL of "
+"your DBMS."
+msgstr ""
+"Hibernate sabe cómo traducir este límite de consulta al SQL nativo de tu "
+"DBMS."
-#: index.docbook:345
-msgid "Hibernate knows how to translate this limit query into the native SQL of your DBMS."
-msgstr "Si tu driver JDBC soporta <literal>ResultSet</literal>s scrollables, la interface <literal>Query</literal> puede ser usada para obtener un objeto <literal>ScrollableResults</literal>, que permite una navegación flexible de los resultados de consulta."
+#. Tag: title
+#: session_api.xml:353
+#, no-c-format
+msgid "Scrollable iteration"
+msgstr "Iteración scrollable"
-#: index.docbook:353
-msgid "Scrollable iteration"
+#. Tag: para
+#: session_api.xml:355
+#, no-c-format
+msgid ""
+"If your JDBC driver supports scrollable <literal>ResultSet</literal>s, the "
+"<literal>Query</literal> interface may be used to obtain a "
+"<literal>ScrollableResults</literal> object, which allows flexible "
+"navigation of the query results."
msgstr ""
- "<![CDATA[Query q = sess.createQuery(\"select cat.name, cat from DomesticCat cat \" +\n"
- " \"order by cat.name\");\n"
- "ScrollableResults cats = q.scroll();\n"
- "if ( cats.first() ) {\n"
- "\n"
- " // find the first name on each page of an alphabetical list of cats by name\n"
- " firstNamesOfPages = new ArrayList();\n"
- " do {\n"
- " String name = cats.getString(0);\n"
- " firstNamesOfPages.add(name);\n"
- " }\n"
- " while ( cats.scroll(PAGE_SIZE) );\n"
- "\n"
- " // Now get the first page of cats\n"
- " pageOfCats = new ArrayList();\n"
- " cats.beforeFirst();\n"
- " int i=0;\n"
- " while( ( PAGE_SIZE > i++ ) && cats.next() ) pageOfCats.add( cats.get(1) );\n"
- "\n"
- "}\n"
- "cats.close()]]>"
+"Si tu driver JDBC soporta <literal>ResultSet</literal>s scrollables, la "
+"interface <literal>Query</literal> puede ser usada para obtener un objeto "
+"<literal>ScrollableResults</literal>, que permite una navegación flexible de "
+"los resultados de consulta."
-#: index.docbook:355
-msgid "If your JDBC driver supports scrollable <literal>ResultSet</literal>s, the <literal>Query</literal> interface may be used to obtain a <literal>ScrollableResults</literal> object, which allows flexible navigation of the query results."
-msgstr "Nota que se requiere una conexión de base de datos abierta (y cursor) para esta funcionalidad, usa <literal>setMaxResult()</literal>/<literal>setFirstResult()</literal> si necesitas la funcionalidad de paginación fuera de línea."
+#. Tag: programlisting
+#: session_api.xml:362
+#, no-c-format
+msgid ""
+"<![CDATA[Query q = sess.createQuery(\"select cat.name, cat from DomesticCat "
+"cat \" +\n"
+" \"order by cat.name\");\n"
+"ScrollableResults cats = q.scroll();\n"
+"if ( cats.first() ) {\n"
+"\n"
+" // find the first name on each page of an alphabetical list of cats by "
+"name\n"
+" firstNamesOfPages = new ArrayList();\n"
+" do {\n"
+" String name = cats.getString(0);\n"
+" firstNamesOfPages.add(name);\n"
+" }\n"
+" while ( cats.scroll(PAGE_SIZE) );\n"
+"\n"
+" // Now get the first page of cats\n"
+" pageOfCats = new ArrayList();\n"
+" cats.beforeFirst();\n"
+" int i=0;\n"
+" while( ( PAGE_SIZE > i++ ) && cats.next() ) pageOfCats.add( cats.get"
+"(1) );\n"
+"\n"
+"}\n"
+"cats.close()]]>"
+msgstr ""
-#: index.docbook:362
+#. Tag: para
+#: session_api.xml:364
+#, no-c-format
msgid ""
- "<![CDATA[Query q = sess.createQuery(\"select cat.name, cat from DomesticCat cat \" +\n"
- " \"order by cat.name\");\n"
- "ScrollableResults cats = q.scroll();\n"
- "if ( cats.first() ) {\n"
- "\n"
- " // find the first name on each page of an alphabetical list of cats by name\n"
- " firstNamesOfPages = new ArrayList();\n"
- " do {\n"
- " String name = cats.getString(0);\n"
- " firstNamesOfPages.add(name);\n"
- " }\n"
- " while ( cats.scroll(PAGE_SIZE) );\n"
- "\n"
- " // Now get the first page of cats\n"
- " pageOfCats = new ArrayList();\n"
- " cats.beforeFirst();\n"
- " int i=0;\n"
- " while( ( PAGE_SIZE > i++ ) && cats.next() ) pageOfCats.add( cats.get(1) );\n"
- "\n"
- "}\n"
- "cats.close()]]>"
+"Note that an open database connection (and cursor) is required for this "
+"functionality, use <literal>setMaxResult()</literal>/<literal>setFirstResult"
+"()</literal> if you need offline pagination functionality."
+msgstr ""
+"Nota que se requiere una conexión de base de datos abierta (y cursor) para "
+"esta funcionalidad, usa <literal>setMaxResult()</literal>/"
+"<literal>setFirstResult()</literal> si necesitas la funcionalidad de "
+"paginación fuera de línea."
+
+#. Tag: title
+#: session_api.xml:373
+#, no-c-format
+msgid "Externalizing named queries"
msgstr "Externalizando consultas con nombre"
-#: index.docbook:364
-msgid "Note that an open database connection (and cursor) is required for this functionality, use <literal>setMaxResult()</literal>/<literal>setFirstResult()</literal> if you need offline pagination functionality."
-msgstr "Puedes además definir consultas con nombre en el documento de mapeo. (Recuerda usar una sección <literal>CDATA</literal> si tu consulta contiene caracteres que puedan ser interpretados como etiquetado.)"
-
-#: index.docbook:373
-msgid "Externalizing named queries"
+#. Tag: para
+#: session_api.xml:375
+#, no-c-format
+msgid ""
+"You may also define named queries in the mapping document. (Remember to use "
+"a <literal>CDATA</literal> section if your query contains characters that "
+"could be interpreted as markup.)"
msgstr ""
- "<![CDATA[<query name=\"eg.DomesticCat.by.name.and.minimum.weight\"><![CDATA[\n"
- " from eg.DomesticCat as cat\n"
- " where cat.name = ?\n"
- " and cat.weight > ?\n"
- "] ]></query>]]>"
+"Puedes además definir consultas con nombre en el documento de mapeo. "
+"(Recuerda usar una sección <literal>CDATA</literal> si tu consulta contiene "
+"caracteres que puedan ser interpretados como etiquetado.)"
-#: index.docbook:375
-msgid "You may also define named queries in the mapping document. (Remember to use a <literal>CDATA</literal> section if your query contains characters that could be interpreted as markup.)"
-msgstr "La ligación de parámetros y ejecución se hace programáticamente:"
-
-#: index.docbook:381
+#. Tag: programlisting
+#: session_api.xml:381
+#, no-c-format
msgid ""
- "<![CDATA[<query name=\"ByNameAndMaximumWeight\"><![CDATA[\n"
- " from eg.DomesticCat as cat\n"
- " where cat.name = ?\n"
- " and cat.weight > ?\n"
- "] ]></query>]]>"
+"<![CDATA[<query name=\"ByNameAndMaximumWeight\"><![CDATA[\n"
+" from eg.DomesticCat as cat\n"
+" where cat.name = ?\n"
+" and cat.weight > ?\n"
+"] ]></query>]]>"
msgstr ""
- "<![CDATA[Query q = sess.getNamedQuery(\"eg.DomesticCat.by.name.and.minimum.weight\");\n"
- "q.setString(0, name);\n"
- "q.setInt(1, minWeight);\n"
- "List cats = q.list();]]>"
-#: index.docbook:383
+#. Tag: para
+#: session_api.xml:383
+#, no-c-format
msgid "Parameter binding and executing is done programatically:"
-msgstr "Nota que el código real del programa es independiente del lenguaje de consulta usado; puedes además definir consultas SQL nativas en metadatos, o migrar consultas existentes a Hibernate colocándolas en ficheros de mapeo."
+msgstr "La ligación de parámetros y ejecución se hace programáticamente:"
-#: index.docbook:387
+#. Tag: programlisting
+#: session_api.xml:387
+#, no-c-format
msgid ""
- "<![CDATA[Query q = sess.getNamedQuery(\"ByNameAndMaximumWeight\");\n"
- "q.setString(0, name);\n"
- "q.setInt(1, minWeight);\n"
- "List cats = q.list();]]>"
-msgstr "Filtrando colecciones"
+"<![CDATA[Query q = sess.getNamedQuery(\"ByNameAndMaximumWeight\");\n"
+"q.setString(0, name);\n"
+"q.setInt(1, minWeight);\n"
+"List cats = q.list();]]>"
+msgstr ""
-#: index.docbook:389
-msgid "Note that the actual program code is independent of the query language that is used, you may also define native SQL queries in metadata, or migrate existing queries to Hibernate by placing them in mapping files."
-msgstr "Un <emphasis>filtro</emphasis> de colección es un tipo especial de consulta que puede ser aplicado a una colección persistente o array. La cadena de consulta puede referirse a <literal>this</literal>, significando el elemento de colección actual."
+#. Tag: para
+#: session_api.xml:389
+#, no-c-format
+msgid ""
+"Note that the actual program code is independent of the query language that "
+"is used, you may also define native SQL queries in metadata, or migrate "
+"existing queries to Hibernate by placing them in mapping files."
+msgstr ""
+"Nota que el código real del programa es independiente del lenguaje de "
+"consulta usado; puedes además definir consultas SQL nativas en metadatos, o "
+"migrar consultas existentes a Hibernate colocándolas en ficheros de mapeo."
-#: index.docbook:395
-msgid "Also note that a query declaration inside a <literal><hibernate-mapping></literal> element requires a global unique name for the query, while a query declaration inside a <literal><class></literal> element is made unique automatically by prepending the fully qualified name of the class, for example <literal>eg.Cat.ByNameAndMaximumWeight</literal>."
+#. Tag: para
+#: session_api.xml:395
+#, no-c-format
+msgid ""
+"Also note that a query declaration inside a <literal><hibernate-"
+"mapping></literal> element requires a global unique name for the query, "
+"while a query declaration inside a <literal><class></literal> element "
+"is made unique automatically by prepending the fully qualified name of the "
+"class, for example <literal>eg.Cat.ByNameAndMaximumWeight</literal>."
msgstr ""
- "<![CDATA[Collection blackKittens = session.createFilter(\n"
- " pk.getKittens(), \n"
- " \"where this.color = ?\")\n"
- " .setParameter( Color.BLACK, Hibernate.custom(ColorUserType.class) )\n"
- " .list()\n"
- ");]]>"
+"UNTRANSLATED! Also note that a query declaration inside a <literal><"
+"hibernate-mapping></literal> element requires a global unique name for "
+"the query, while a query declaration inside a <literal><class></"
+"literal> element is made unique automatically by prepending the fully "
+"qualified name of the class, for example <literal>eg.Cat."
+"ByNameAndMaximumWeight</literal>."
-#: index.docbook:408
+#. Tag: title
+#: session_api.xml:408
+#, no-c-format
msgid "Filtering collections"
-msgstr "La colección devuelta es considerada un bag, y es una copia de la colección dada. La colección original no es modificada (esto es contrario a la implicación del nombre \"filtro\", pero consistente con el comportamiento esperado)."
+msgstr "Filtrando colecciones"
-#: index.docbook:409
-msgid "A collection <emphasis>filter</emphasis> is a special type of query that may be applied to a persistent collection or array. The query string may refer to <literal>this</literal>, meaning the current collection element."
-msgstr "Observa que los filtros no requieren una cláusula <literal>from</literal> (aunque pueden tener uno si se requiere). Los filtros no están limitados a devolver los elementos de colección por sí mismos."
+#. Tag: para
+#: session_api.xml:409
+#, no-c-format
+msgid ""
+"A collection <emphasis>filter</emphasis> is a special type of query that may "
+"be applied to a persistent collection or array. The query string may refer "
+"to <literal>this</literal>, meaning the current collection element."
+msgstr ""
+"Un <emphasis>filtro</emphasis> de colección es un tipo especial de consulta "
+"que puede ser aplicado a una colección persistente o array. La cadena de "
+"consulta puede referirse a <literal>this</literal>, significando el elemento "
+"de colección actual."
-#: index.docbook:415
+#. Tag: programlisting
+#: session_api.xml:415
+#, no-c-format
msgid ""
- "<![CDATA[Collection blackKittens = session.createFilter(\n"
- " pk.getKittens(), \n"
- " \"where this.color = ?\")\n"
- " .setParameter( Color.BLACK, Hibernate.custom(ColorUserType.class) )\n"
- " .list()\n"
- ");]]>"
+"<![CDATA[Collection blackKittens = session.createFilter(\n"
+" pk.getKittens(), \n"
+" \"where this.color = ?\")\n"
+" .setParameter( Color.BLACK, Hibernate.custom(ColorUserType.class) )\n"
+" .list()\n"
+");]]>"
msgstr ""
- "<![CDATA[Collection blackKittenMates = session.createFilter(\n"
- " pk.getKittens(), \n"
- " \"select this.mate where this.color = eg.Color.BLACK.intValue\")\n"
- " .list();]]>"
-#: index.docbook:417
-msgid "The returned collection is considered a bag, and it's a copy of the given collection. The original collection is not modified (this is contrary to the implication of the name \"filter\", but consistent with expected behavior)."
-msgstr "Incluso una consulta de filtro vacío es útil, por ejemplo, para cargar un subconjunto de elementos en una colección enorme:"
+#. Tag: para
+#: session_api.xml:417
+#, no-c-format
+msgid ""
+"The returned collection is considered a bag, and it's a copy of the given "
+"collection. The original collection is not modified (this is contrary to the "
+"implication of the name \"filter\", but consistent with expected behavior)."
+msgstr ""
+"La colección devuelta es considerada un bag, y es una copia de la colección "
+"dada. La colección original no es modificada (esto es contrario a la "
+"implicación del nombre \"filtro\", pero consistente con el comportamiento "
+"esperado)."
-#: index.docbook:423
-msgid "Observe that filters do not require a <literal>from</literal> clause (though they may have one if required). Filters are not limited to returning the collection elements themselves."
+#. Tag: para
+#: session_api.xml:423
+#, no-c-format
+msgid ""
+"Observe that filters do not require a <literal>from</literal> clause (though "
+"they may have one if required). Filters are not limited to returning the "
+"collection elements themselves."
msgstr ""
- "<![CDATA[Collection tenKittens = session.createFilter(\n"
- " mother.getKittens(), \"\")\n"
- " .setFirstResult(0).setMaxResults(10)\n"
- " .list();]]>"
+"Observa que los filtros no requieren una cláusula <literal>from</literal> "
+"(aunque pueden tener uno si se requiere). Los filtros no están limitados a "
+"devolver los elementos de colección por sí mismos."
-#: index.docbook:428
+#. Tag: programlisting
+#: session_api.xml:428
+#, no-c-format
msgid ""
- "<![CDATA[Collection blackKittenMates = session.createFilter(\n"
- " pk.getKittens(), \n"
- " \"select this.mate where this.color = eg.Color.BLACK.intValue\")\n"
- " .list();]]>"
-msgstr "Consultas de criterios"
+"<![CDATA[Collection blackKittenMates = session.createFilter(\n"
+" pk.getKittens(), \n"
+" \"select this.mate where this.color = eg.Color.BLACK.intValue\")\n"
+" .list();]]>"
+msgstr ""
-#: index.docbook:430
-msgid "Even an empty filter query is useful, e.g. to load a subset of elements in a huge collection:"
-msgstr "HQL es extremadamente potente pero algunos desarrolladores prefieren construir consultas dinámicamente usando una API orientada a objetos, en vez construir cadenas de consulta. Hibernate provee una API intuitiva de consulta <literal>Criteria</literal> para estos casos:"
+#. Tag: para
+#: session_api.xml:430
+#, no-c-format
+msgid ""
+"Even an empty filter query is useful, e.g. to load a subset of elements in a "
+"huge collection:"
+msgstr ""
+"Incluso una consulta de filtro vacío es útil, por ejemplo, para cargar un "
+"subconjunto de elementos en una colección enorme:"
-#: index.docbook:435
+#. Tag: programlisting
+#: session_api.xml:435
+#, no-c-format
msgid ""
- "<![CDATA[Collection tenKittens = session.createFilter(\n"
- " mother.getKittens(), \"\")\n"
- " .setFirstResult(0).setMaxResults(10)\n"
- " .list();]]>"
+"<![CDATA[Collection tenKittens = session.createFilter(\n"
+" mother.getKittens(), \"\")\n"
+" .setFirstResult(0).setMaxResults(10)\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[Criteria crit = session.createCriteria(Cat.class);\n"
- "crit.add( Restrictions.eq( \"color\", eg.Color.BLACK ) );\n"
- "crit.setMaxResults(10);\n"
- "List cats = crit.list();]]>"
-#: index.docbook:440
+#. Tag: title
+#: session_api.xml:440
+#, no-c-format
msgid "Criteria queries"
-msgstr "Las APIs de <literal>Criteria</literal> y la asociada <literal>Example</literal> son discutidas en más detalle en <xref linkend=\"querycriteria\"/>."
+msgstr "Consultas de criterios"
-#: index.docbook:442
-msgid "HQL is extremely powerful but some developers prefer to build queries dynamically, using an object-oriented API, rather than building query strings. Hibernate provides an intuitive <literal>Criteria</literal> query API for these cases:"
-msgstr "Consultas en SQL nativo"
+#. Tag: para
+#: session_api.xml:442
+#, no-c-format
+msgid ""
+"HQL is extremely powerful but some developers prefer to build queries "
+"dynamically, using an object-oriented API, rather than building query "
+"strings. Hibernate provides an intuitive <literal>Criteria</literal> query "
+"API for these cases:"
+msgstr ""
+"HQL es extremadamente potente pero algunos desarrolladores prefieren "
+"construir consultas dinámicamente usando una API orientada a objetos, en vez "
+"construir cadenas de consulta. Hibernate provee una API intuitiva de "
+"consulta <literal>Criteria</literal> para estos casos:"
-#: index.docbook:448
+#. Tag: programlisting
+#: session_api.xml:448
+#, no-c-format
msgid ""
- "<![CDATA[Criteria crit = session.createCriteria(Cat.class);\n"
- "crit.add( Restrictions.eq( \"color\", eg.Color.BLACK ) );\n"
- "crit.setMaxResults(10);\n"
- "List cats = crit.list();]]>"
-msgstr "Puedes expresar una consulta en SQL, usando <literal>createSQLQuery()</literal> y dejando que Hibernate cuide del mapeo de los conjuntos resultado a objetos. Nota que puedes llamar en cualquier momento a <literal>session.connection()</literal> y usar la <literal>Connection</literal> JDBC directamente. Si eliges usar la API de Hibernate, debes encerrar los alias de SQL entre llaves:"
+"<![CDATA[Criteria crit = session.createCriteria(Cat.class);\n"
+"crit.add( Restrictions.eq( \"color\", eg.Color.BLACK ) );\n"
+"crit.setMaxResults(10);\n"
+"List cats = crit.list();]]>"
+msgstr ""
-#: index.docbook:450
-msgid "The <literal>Criteria</literal> and the associated <literal>Example</literal> API are discussed in more detail in <xref linkend=\"querycriteria\"/>."
+#. Tag: para
+#: session_api.xml:450
+#, no-c-format
+msgid ""
+"The <literal>Criteria</literal> and the associated <literal>Example</"
+"literal> API are discussed in more detail in <xref linkend=\"querycriteria\"/"
+">."
msgstr ""
- "<![CDATA[List cats = session.createSQLQuery(\"SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM<10\")
-\n"
- " .addEntity(\"cat\", Cat.class)
-\n"
- ".list();]]>"
+"Las APIs de <literal>Criteria</literal> y la asociada <literal>Example</"
+"literal> son discutidas en más detalle en <xref linkend=\"querycriteria\"/>."
-#: index.docbook:458
+#. Tag: title
+#: session_api.xml:458
+#, no-c-format
msgid "Queries in native SQL"
+msgstr "Consultas en SQL nativo"
+
+#. Tag: para
+#: session_api.xml:460
+#, no-c-format
+msgid ""
+"You may express a query in SQL, using <literal>createSQLQuery()</literal> "
+"and let Hibernate take care of the mapping from result sets to objects. Note "
+"that you may at any time call <literal>session.connection()</literal> and "
+"use the JDBC <literal>Connection</literal> directly. If you chose to use the "
+"Hibernate API, you must enclose SQL aliases in braces:"
msgstr ""
- "<![CDATA[List cats = session.createSQLQuery(
-\n"
- " \"SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, \" +
-\n"
- " \"{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... \" +
-\n"
- " \"FROM CAT {cat} WHERE ROWNUM<10\")
-\n"
- " .addEntity(\"cat\", Cat.class)
-\n"
- ".list()]]>"
+"Puedes expresar una consulta en SQL, usando <literal>createSQLQuery()</"
+"literal> y dejando que Hibernate cuide del mapeo de los conjuntos resultado "
+"a objetos. Nota que puedes llamar en cualquier momento a <literal>session."
+"connection()</literal> y usar la <literal>Connection</literal> JDBC "
+"directamente. Si eliges usar la API de Hibernate, debes encerrar los alias "
+"de SQL entre llaves:"
-#: index.docbook:460
-msgid "You may express a query in SQL, using <literal>createSQLQuery()</literal> and let Hibernate take care of the mapping from result sets to objects. Note that you may at any time call <literal>session.connection()</literal> and use the JDBC <literal>Connection</literal> directly. If you chose to use the Hibernate API, you must enclose SQL aliases in braces:"
-msgstr "Las consultas SQL pueden contener parámetros con nombre y posicionales, al igual que las consultas de Hibernate. Puede encontrarse más información sobre consultas en SQL nativo en <xref linkend=\"querysql\"/>."
+#. Tag: programlisting
+#: session_api.xml:468
+#, no-c-format
+msgid ""
+"<![CDATA[List cats = session.createSQLQuery(\"SELECT {cat.*} FROM CAT {cat} "
+"WHERE ROWNUM<10\")\n"
+" .addEntity(\"cat\", Cat.class)\n"
+".list();]]>"
+msgstr ""
-#: index.docbook:468
+#. Tag: programlisting
+#: session_api.xml:470
+#, no-c-format
msgid ""
- "<![CDATA[List cats = session.createSQLQuery(\"SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM<10\")\n"
- " .addEntity(\"cat\", Cat.class)\n"
- ".list();]]>"
-msgstr "Modificando objetos persistentes"
+"<![CDATA[List cats = session.createSQLQuery(\n"
+" \"SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, \" +\n"
+" \"{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... \" "
+"+\n"
+" \"FROM CAT {cat} WHERE ROWNUM<10\")\n"
+" .addEntity(\"cat\", Cat.class)\n"
+".list()]]>"
+msgstr ""
-#: index.docbook:470
+#. Tag: para
+#: session_api.xml:472
+#, no-c-format
msgid ""
- "<![CDATA[List cats = session.createSQLQuery(\n"
- " \"SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, \" +\n"
- " \"{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... \" +\n"
- " \"FROM CAT {cat} WHERE ROWNUM<10\")\n"
- " .addEntity(\"cat\", Cat.class)\n"
- ".list()]]>"
-msgstr "Las <emphasis>instancias persistentes transaccionales</emphasis> (es decir, objetos cargados, creados o consultados por la <literal>Session</literal>) pueden ser manipulados por la aplicación y cualquier cambio al estado persistente será persistido cuando la <literal>Session</literal> sea <emphasis>limpiada (flushed)</emphasis> (discutido más adelante en este capítulo). No hay necesidad de llamar un método en particular (como <literal>update()</literal>, que tiene un propósito diferente) para hacer persistentes tus modificaciones. De modo que la forma más directa de actualizar el estado de un objeto es cargarlo con <literal>load()</literal>, y entonces manipularlo directamente, mientras la <literal>Session</literal> está abierta:"
-
-#: index.docbook:472
-msgid "SQL queries may contain named and positional parameters, just like Hibernate queries. More information about native SQL queries in Hibernate can be found in <xref linkend=\"querysql\"/>."
+"SQL queries may contain named and positional parameters, just like Hibernate "
+"queries. More information about native SQL queries in Hibernate can be found "
+"in <xref linkend=\"querysql\"/>."
msgstr ""
- "<![CDATA[DomesticCat cat = (DomesticCat) sess.load( Cat.class, new Long(69) );\n"
- "cat.setName(\"PK\");\n"
- "sess.flush(); // changes to cat are automatically detected and persisted]]>"
+"Las consultas SQL pueden contener parámetros con nombre y posicionales, al "
+"igual que las consultas de Hibernate. Puede encontrarse más información "
+"sobre consultas en SQL nativo en <xref linkend=\"querysql\"/>."
-#: index.docbook:483
+#. Tag: title
+#: session_api.xml:483
+#, no-c-format
msgid "Modifying persistent objects"
-msgstr "A veces este modelo de programación es ineficiente pues podría requerir una <literal>SELECT</literal> de SQL (para cargar un objeto) y un <literal>UPDATE</literal> de SQL (para hacer persistentes sus datos actualizados) en la misma sesión. Por lo tanto, Hibernate ofrece un enfoque alternativo, usando instancias separadas (detached)."
+msgstr "Modificando objetos persistentes"
-#: index.docbook:485
-msgid "<emphasis>Transactional persistent instances</emphasis> (ie. objects loaded, saved, created or queried by the <literal>Session</literal>) may be manipulated by the application and any changes to persistent state will be persisted when the <literal>Session</literal> is <emphasis>flushed</emphasis> (discussed later in this chapter). There is no need to call a particular method (like <literal>update()</literal>, which has a different purpose) to make your modifications persistent. So the most straightforward way to update the state of an object is to <literal>load()</literal> it, and then manipulate it directly, while the <literal>Session</literal> is open:"
-msgstr "Nota que Hibernate no ofreve su propia API para ejecución directa de sentencias <literal>UPDATE</literal> o <literal>DELETE</literal>. Hibernate es un servicio de <emphasis>gestión de estado</emphasis>, no tienes que pensar en <literal>sentencias</literal> para usarlo. JDBC es una API perfecta para ejecutar sentencias SQL; puedes obtener una <literal>Connection</literal> JDBC en cualquier momento llamando a <literal>session.connection()</literal>. Además, la noción de operaciones masivas entra en conflicto con el mapeo objeto/relacional en aplicaciones en línea orientadas al procesamiento de transacciones. Versiones futuras de Hibernate pueden, sin embargo, proveer funciones de operación masiva especiales. Ver <xref linkend=\"batch\"/> por algunos trucos de operación en lote (batch) posibles."
+#. Tag: para
+#: session_api.xml:485
+#, no-c-format
+msgid ""
+"<emphasis>Transactional persistent instances</emphasis> (ie. objects loaded, "
+"saved, created or queried by the <literal>Session</literal>) may be "
+"manipulated by the application and any changes to persistent state will be "
+"persisted when the <literal>Session</literal> is <emphasis>flushed</"
+"emphasis> (discussed later in this chapter). There is no need to call a "
+"particular method (like <literal>update()</literal>, which has a different "
+"purpose) to make your modifications persistent. So the most straightforward "
+"way to update the state of an object is to <literal>load()</literal> it, and "
+"then manipulate it directly, while the <literal>Session</literal> is open:"
+msgstr ""
+"Las <emphasis>instancias persistentes transaccionales</emphasis> (es decir, "
+"objetos cargados, creados o consultados por la <literal>Session</literal>) "
+"pueden ser manipulados por la aplicación y cualquier cambio al estado "
+"persistente será persistido cuando la <literal>Session</literal> sea "
+"<emphasis>limpiada (flushed)</emphasis> (discutido más adelante en este "
+"capítulo). No hay necesidad de llamar un método en particular (como "
+"<literal>update()</literal>, que tiene un propósito diferente) para hacer "
+"persistentes tus modificaciones. De modo que la forma más directa de "
+"actualizar el estado de un objeto es cargarlo con <literal>load()</literal>, "
+"y entonces manipularlo directamente, mientras la <literal>Session</literal> "
+"está abierta:"
-#: index.docbook:496
+#. Tag: programlisting
+#: session_api.xml:496
+#, no-c-format
msgid ""
- "<![CDATA[DomesticCat cat = (DomesticCat) sess.load( Cat.class, new Long(69) );\n"
- "cat.setName(\"PK\");\n"
- "sess.flush(); // changes to cat are automatically detected and persisted]]>"
-msgstr "Modificando objetos separados"
+"<![CDATA[DomesticCat cat = (DomesticCat) sess.load( Cat.class, new Long"
+"(69) );\n"
+"cat.setName(\"PK\");\n"
+"sess.flush(); // changes to cat are automatically detected and persisted]]>"
+msgstr ""
-#: index.docbook:498
-msgid "Sometimes this programming model is inefficient since it would require both an SQL <literal>SELECT</literal> (to load an object) and an SQL <literal>UPDATE</literal> (to persist its updated state) in the same session. Therefore Hibernate offers an alternate approach, using detached instances."
-msgstr "Muchas aplicaciones necesitan recuperar un objeto en una transacción, enviarla a la capa de UI para su manipulación, y entonces salvar los cambios en una nueva transacción. Las aplicaciones que usan este tipo de enfoque en un entorno de alta concurrencia usualmente usan datos versionados para asegurar el aislamiento de la unidad de trabajo \"larga\"."
+#. Tag: para
+#: session_api.xml:498
+#, no-c-format
+msgid ""
+"Sometimes this programming model is inefficient since it would require both "
+"an SQL <literal>SELECT</literal> (to load an object) and an SQL "
+"<literal>UPDATE</literal> (to persist its updated state) in the same "
+"session. Therefore Hibernate offers an alternate approach, using detached "
+"instances."
+msgstr ""
+"A veces este modelo de programación es ineficiente pues podría requerir una "
+"<literal>SELECT</literal> de SQL (para cargar un objeto) y un "
+"<literal>UPDATE</literal> de SQL (para hacer persistentes sus datos "
+"actualizados) en la misma sesión. Por lo tanto, Hibernate ofrece un enfoque "
+"alternativo, usando instancias separadas (detached)."
-#: index.docbook:506
-msgid "Note that Hibernate does not offer its own API for direct execution of <literal>UPDATE</literal> or <literal>DELETE</literal> statements. Hibernate is a <emphasis>state management</emphasis> service, you don't have to think in <emphasis>statements</emphasis> to use it. JDBC is a perfect API for executing SQL statements, you can get a JDBC <literal>Connection</literal> at any time by calling <literal>session.connection()</literal>. Furthermore, the notion of mass operations conflicts with object/relational mapping for online transaction processing-oriented applications. Future versions of Hibernate may however provide special mass operation functions. See <xref linkend=\"batch\"/> for some possible batch operation tricks."
-msgstr "Hibernate soporta este modelo al proveer re-unión de instancias separadas usando los métodos <literal>Session.update()</literal> o <literal>Session.merge()</literal>:"
+#. Tag: emphasis
+#: session_api.xml:506
+#, fuzzy, no-c-format
+msgid ""
+"Note that Hibernate does not offer its own API for direct execution of "
+"<literal>UPDATE</literal> or <literal>DELETE</literal> statements. Hibernate "
+"is a <emphasis>state management</emphasis> service, you don't have to think "
+"in <emphasis>statements</emphasis> to use it. JDBC is a perfect API for "
+"executing SQL statements, you can get a JDBC <literal>Connection</literal> "
+"at any time by calling <literal>session.connection()</literal>. Furthermore, "
+"the notion of mass operations conflicts with object/relational mapping for "
+"online transaction processing-oriented applications. Future versions of "
+"Hibernate may however provide special mass operation functions. See <xref "
+"linkend=\"batch\"/> for some possible batch operation tricks."
+msgstr ""
+"Nota que Hibernate no ofreve su propia API para ejecución directa de "
+"sentencias <placeholder-1/> o <placeholder-2/>. Hibernate es un servicio de "
+"<placeholder-3/>, no tienes que pensar en <placeholder-4/> para usarlo. JDBC "
+"es una API perfecta para ejecutar sentencias SQL; puedes obtener una "
+"<placeholder-5/> JDBC en cualquier momento llamando a <placeholder-6/>. "
+"Además, la noción de operaciones masivas entra en conflicto con el mapeo "
+"objeto/relacional en aplicaciones en línea orientadas al procesamiento de "
+"transacciones. Versiones futuras de Hibernate pueden, sin embargo, proveer "
+"funciones de operación masiva especiales. Ver <xref linkend=\"batch\"/> por "
+"algunos trucos de operación en lote (batch) posibles."
-#: index.docbook:521
+#. Tag: title
+#: session_api.xml:521
+#, no-c-format
msgid "Modifying detached objects"
+msgstr "Modificando objetos separados"
+
+#. Tag: para
+#: session_api.xml:523
+#, no-c-format
+msgid ""
+"Many applications need to retrieve an object in one transaction, send it to "
+"the UI layer for manipulation, then save the changes in a new transaction. "
+"Applications that use this kind of approach in a high-concurrency "
+"environment usually use versioned data to ensure isolation for the \"long\" "
+"unit of work."
msgstr ""
- "<![CDATA[// in the first session\n"
- "Cat cat = (Cat) firstSession.load(Cat.class, catId);\n"
- "Cat potentialMate = new Cat();\n"
- "firstSession.save(potentialMate);\n"
- "\n"
- "// in a higher layer of the application\n"
- "cat.setMate(potentialMate);\n"
- "\n"
- "// later, in a new session\n"
- "secondSession.update(cat); // update cat\n"
- "secondSession.update(mate); // update mate]]>"
+"Muchas aplicaciones necesitan recuperar un objeto en una transacción, "
+"enviarla a la capa de UI para su manipulación, y entonces salvar los cambios "
+"en una nueva transacción. Las aplicaciones que usan este tipo de enfoque en "
+"un entorno de alta concurrencia usualmente usan datos versionados para "
+"asegurar el aislamiento de la unidad de trabajo \"larga\"."
-#: index.docbook:523
-msgid "Many applications need to retrieve an object in one transaction, send it to the UI layer for manipulation, then save the changes in a new transaction. Applications that use this kind of approach in a high-concurrency environment usually use versioned data to ensure isolation for the \"long\" unit of work."
-msgstr "Si el <literal>Cat</literal> con identificador <literal>catId</literal> ya hubiera sido cargado por <literal>secondSession</literal> cuando la aplicación intentó volver a unirlo, se habría lanzado una excepción."
+#. Tag: para
+#: session_api.xml:530
+#, no-c-format
+msgid ""
+"Hibernate supports this model by providing for reattachment of detached "
+"instances using the <literal>Session.update()</literal> or <literal>Session."
+"merge()</literal> methods:"
+msgstr ""
+"Hibernate soporta este modelo al proveer re-unión de instancias separadas "
+"usando los métodos <literal>Session.update()</literal> o <literal>Session."
+"merge()</literal>:"
-#: index.docbook:530
-msgid "Hibernate supports this model by providing for reattachment of detached instances using the <literal>Session.update()</literal> or <literal>Session.merge()</literal> methods:"
-msgstr "Usa <literal>update()</literal> si no estás seguro que la sesión tenga una instancia ya persistente con el mismo identificador, y <literal>merge()</literal> si quieres fusionar tus modificaciones en cualquier momento sin consideración del estado de la sesión. En otras palabras, <literal>update()</literal> es usualmente el primer método que llamarías en una sesión fresca, asegurando que la re-unión de tus instancias separadas es la primera operación que se ejecuta."
+#. Tag: programlisting
+#: session_api.xml:536
+#, no-c-format
+msgid ""
+"<![CDATA[// in the first session\n"
+"Cat cat = (Cat) firstSession.load(Cat.class, catId);\n"
+"Cat potentialMate = new Cat();\n"
+"firstSession.save(potentialMate);\n"
+"\n"
+"// in a higher layer of the application\n"
+"cat.setMate(potentialMate);\n"
+"\n"
+"// later, in a new session\n"
+"secondSession.update(cat); // update cat\n"
+"secondSession.update(mate); // update mate]]>"
+msgstr ""
-#: index.docbook:536
+#. Tag: para
+#: session_api.xml:538
+#, no-c-format
msgid ""
- "<![CDATA[// in the first session\n"
- "Cat cat = (Cat) firstSession.load(Cat.class, catId);\n"
- "Cat potentialMate = new Cat();\n"
- "firstSession.save(potentialMate);\n"
- "\n"
- "// in a higher layer of the application\n"
- "cat.setMate(potentialMate);\n"
- "\n"
- "// later, in a new session\n"
- "secondSession.update(cat); // update cat\n"
- "secondSession.update(mate); // update mate]]>"
-msgstr "La aplicación debe actualizar individualmente las instancias separadas alcanzables por la instancia separada dada llamando a <literal>update()</literal>, si y <emphasis>sólo</emphasis> si quiere que sus estados sean también actualizados. Esto puede, por supuesto, ser automatizado usando <emphasis>persistencia transitiva</emphasis>, ver <xref linkend=\"objectstate-transitive\"/>."
+"If the <literal>Cat</literal> with identifier <literal>catId</literal> had "
+"already been loaded by <literal>secondSession</literal> when the application "
+"tried to reattach it, an exception would have been thrown."
+msgstr ""
+"Si el <literal>Cat</literal> con identificador <literal>catId</literal> ya "
+"hubiera sido cargado por <literal>secondSession</literal> cuando la "
+"aplicación intentó volver a unirlo, se habría lanzado una excepción."
-#: index.docbook:538
-msgid "If the <literal>Cat</literal> with identifier <literal>catId</literal> had already been loaded by <literal>secondSession</literal> when the application tried to reattach it, an exception would have been thrown."
-msgstr "El método <literal>lock()</literal> también permite a una aplicación reasociar un objeto con una sesión nueva. Sin embargo, la instancia separada no puede haber sido modificada!"
+#. Tag: para
+#: session_api.xml:544
+#, no-c-format
+msgid ""
+"Use <literal>update()</literal> if you are sure that the session does not "
+"contain an already persistent instance with the same identifier, and "
+"<literal>merge()</literal> if you want to merge your modifications at any "
+"time without consideration of the state of the session. In other words, "
+"<literal>update()</literal> is usually the first method you would call in a "
+"fresh session, ensuring that reattachment of your detached instances is the "
+"first operation that is executed."
+msgstr ""
+"Usa <literal>update()</literal> si no estás seguro que la sesión tenga una "
+"instancia ya persistente con el mismo identificador, y <literal>merge()</"
+"literal> si quieres fusionar tus modificaciones en cualquier momento sin "
+"consideración del estado de la sesión. En otras palabras, <literal>update()</"
+"literal> es usualmente el primer método que llamarías en una sesión fresca, "
+"asegurando que la re-unión de tus instancias separadas es la primera "
+"operación que se ejecuta."
-#: index.docbook:544
-msgid "Use <literal>update()</literal> if you are sure that the session does not contain an already persistent instance with the same identifier, and <literal>merge()</literal> if you want to merge your modifications at any time without consideration of the state of the session. In other words, <literal>update()</literal> is usually the first method you would call in a fresh session, ensuring that reattachment of your detached instances is the first operation that is executed."
+#. Tag: para
+#: session_api.xml:553
+#, no-c-format
+msgid ""
+"The application should individually <literal>update()</literal> detached "
+"instances reachable from the given detached instance if and <emphasis>only</"
+"emphasis> if it wants their state also updated. This can be automated of "
+"course, using <emphasis>transitive persistence</emphasis>, see <xref linkend="
+"\"objectstate-transitive\"/>."
msgstr ""
- "<![CDATA[//just reassociate:\n"
- "sess.lock(fritz, LockMode.NONE);\n"
- "//do a version check, then reassociate:\n"
- "sess.lock(izi, LockMode.READ);\n"
- "//do a version check, using SELECT ... FOR UPDATE, then reassociate:\n"
- "sess.lock(pk, LockMode.UPGRADE);]]>"
+"La aplicación debe actualizar individualmente las instancias separadas "
+"alcanzables por la instancia separada dada llamando a <literal>update()</"
+"literal>, si y <emphasis>sólo</emphasis> si quiere que sus estados sean "
+"también actualizados. Esto puede, por supuesto, ser automatizado usando "
+"<emphasis>persistencia transitiva</emphasis>, ver <xref linkend="
+"\"objectstate-transitive\"/>."
-#: index.docbook:553
-msgid "The application should individually <literal>update()</literal> detached instances reachable from the given detached instance if and <emphasis>only</emphasis> if it wants their state also updated. This can be automated of course, using <emphasis>transitive persistence</emphasis>, see <xref linkend=\"objectstate-transitive\"/>."
-msgstr "Nota que <literal>lock()</literal> puede ser usado con varios <literal>LockMode</literal>s, ver la documentación de la API y el capítulo sobre manejo de transacciones para más información. La re-unión no es el único caso de uso para <literal>lock()</literal>."
+#. Tag: para
+#: session_api.xml:560
+#, no-c-format
+msgid ""
+"The <literal>lock()</literal> method also allows an application to "
+"reassociate an object with a new session. However, the detached instance has "
+"to be unmodified!"
+msgstr ""
+"El método <literal>lock()</literal> también permite a una aplicación "
+"reasociar un objeto con una sesión nueva. Sin embargo, la instancia separada "
+"no puede haber sido modificada!"
-#: index.docbook:560
-msgid "The <literal>lock()</literal> method also allows an application to reassociate an object with a new session. However, the detached instance has to be unmodified!"
-msgstr "Se discuten otros modelos para unidades de trabajo largas en <xref linkend=\"transactions-optimistic\"/>."
+#. Tag: programlisting
+#: session_api.xml:565
+#, no-c-format
+msgid ""
+"<![CDATA[//just reassociate:\n"
+"sess.lock(fritz, LockMode.NONE);\n"
+"//do a version check, then reassociate:\n"
+"sess.lock(izi, LockMode.READ);\n"
+"//do a version check, using SELECT ... FOR UPDATE, then reassociate:\n"
+"sess.lock(pk, LockMode.UPGRADE);]]>"
+msgstr ""
-#: index.docbook:565
+#. Tag: para
+#: session_api.xml:567
+#, no-c-format
msgid ""
- "<![CDATA[//just reassociate:\n"
- "sess.lock(fritz, LockMode.NONE);\n"
- "//do a version check, then reassociate:\n"
- "sess.lock(izi, LockMode.READ);\n"
- "//do a version check, using SELECT ... FOR UPDATE, then reassociate:\n"
- "sess.lock(pk, LockMode.UPGRADE);]]>"
-msgstr "Detección automática de estado"
+"Note that <literal>lock()</literal> can be used with various "
+"<literal>LockMode</literal>s, see the API documentation and the chapter on "
+"transaction handling for more information. Reattachment is not the only "
+"usecase for <literal>lock()</literal>."
+msgstr ""
+"Nota que <literal>lock()</literal> puede ser usado con varios "
+"<literal>LockMode</literal>s, ver la documentación de la API y el capítulo "
+"sobre manejo de transacciones para más información. La re-unión no es el "
+"único caso de uso para <literal>lock()</literal>."
-#: index.docbook:567
-msgid "Note that <literal>lock()</literal> can be used with various <literal>LockMode</literal>s, see the API documentation and the chapter on transaction handling for more information. Reattachment is not the only usecase for <literal>lock()</literal>."
-msgstr "Los usuarios de Hibernate han pedido un método de propósito general que bien salve una instancia transitoria generando un identificador nuevo, o bien actualice/reúna las instancias separadas asociadas con su identificador actual. El método <literal>saveOrUpdate()</literal> implementa esta funcionalidad."
-
-#: index.docbook:574
-msgid "Other models for long units of work are discussed in <xref linkend=\"transactions-optimistic\"/>."
+#. Tag: para
+#: session_api.xml:574
+#, no-c-format
+msgid ""
+"Other models for long units of work are discussed in <xref linkend="
+"\"transactions-optimistic\"/>."
msgstr ""
- "<![CDATA[// in the first session\n"
- "Cat cat = (Cat) firstSession.load(Cat.class, catID);\n"
- "\n"
- "// in a higher tier of the application\n"
- "Cat mate = new Cat();\n"
- "cat.setMate(mate);\n"
- "\n"
- "// later, in a new session\n"
- "secondSession.saveOrUpdate(cat); // update existing state (cat has a non-null id)\n"
- "secondSession.saveOrUpdate(mate); // save the new instance (mate has a null id)]]>"
+"Se discuten otros modelos para unidades de trabajo largas en <xref linkend="
+"\"transactions-optimistic\"/>."
-#: index.docbook:581
+#. Tag: title
+#: session_api.xml:581
+#, no-c-format
msgid "Automatic state detection"
-msgstr "El uso y semántica de <literal>saveOrUpdate()</literal> parece ser confuso para usuarios nuevos. Primeramente, en tanto no estés intentando usar instancias de una sesión en otra sesión nueva, no debes necesitar usar <literal>update()</literal>, <literal>saveOrUpdate()</literal>, o <literal>merge()</literal>. Algunas aplicaciones enteras nunca usarán ninguno de estos métodos."
+msgstr "Detección automática de estado"
-#: index.docbook:583
-msgid "Hibernate users have requested a general purpose method that either saves a transient instance by generating a new identifier or updates/reattaches the detached instances associated with its current identifier. The <literal>saveOrUpdate()</literal> method implements this functionality."
-msgstr "Usualmente <literal>update()</literal> o <literal>saveOrUpdate()</literal> se usan en el siguiente escenario:"
+#. Tag: para
+#: session_api.xml:583
+#, no-c-format
+msgid ""
+"Hibernate users have requested a general purpose method that either saves a "
+"transient instance by generating a new identifier or updates/reattaches the "
+"detached instances associated with its current identifier. The "
+"<literal>saveOrUpdate()</literal> method implements this functionality."
+msgstr ""
+"Los usuarios de Hibernate han pedido un método de propósito general que bien "
+"salve una instancia transitoria generando un identificador nuevo, o bien "
+"actualice/reúna las instancias separadas asociadas con su identificador "
+"actual. El método <literal>saveOrUpdate()</literal> implementa esta "
+"funcionalidad."
-#: index.docbook:590
+#. Tag: programlisting
+#: session_api.xml:590
+#, no-c-format
msgid ""
- "<![CDATA[// in the first session\n"
- "Cat cat = (Cat) firstSession.load(Cat.class, catID);\n"
- "\n"
- "// in a higher tier of the application\n"
- "Cat mate = new Cat();\n"
- "cat.setMate(mate);\n"
- "\n"
- "// later, in a new session\n"
- "secondSession.saveOrUpdate(cat); // update existing state (cat has a non-null id)\n"
- "secondSession.saveOrUpdate(mate); // save the new instance (mate has a null id)]]>"
-msgstr "la aplicación carga un objeto en la primera sesión"
+"<![CDATA[// in the first session\n"
+"Cat cat = (Cat) firstSession.load(Cat.class, catID);\n"
+"\n"
+"// in a higher tier of the application\n"
+"Cat mate = new Cat();\n"
+"cat.setMate(mate);\n"
+"\n"
+"// later, in a new session\n"
+"secondSession.saveOrUpdate(cat); // update existing state (cat has a non-"
+"null id)\n"
+"secondSession.saveOrUpdate(mate); // save the new instance (mate has a null "
+"id)]]>"
+msgstr ""
-#: index.docbook:592
-msgid "The usage and semantics of <literal>saveOrUpdate()</literal> seems to be confusing for new users. Firstly, so long as you are not trying to use instances from one session in another new session, you should not need to use <literal>update()</literal>, <literal>saveOrUpdate()</literal>, or <literal>merge()</literal>. Some whole applications will never use either of these methods."
-msgstr "el objeto es pasado a la capa de UI"
+#. Tag: para
+#: session_api.xml:592
+#, no-c-format
+msgid ""
+"The usage and semantics of <literal>saveOrUpdate()</literal> seems to be "
+"confusing for new users. Firstly, so long as you are not trying to use "
+"instances from one session in another new session, you should not need to "
+"use <literal>update()</literal>, <literal>saveOrUpdate()</literal>, or "
+"<literal>merge()</literal>. Some whole applications will never use either of "
+"these methods."
+msgstr ""
+"El uso y semántica de <literal>saveOrUpdate()</literal> parece ser confuso "
+"para usuarios nuevos. Primeramente, en tanto no estés intentando usar "
+"instancias de una sesión en otra sesión nueva, no debes necesitar usar "
+"<literal>update()</literal>, <literal>saveOrUpdate()</literal>, o "
+"<literal>merge()</literal>. Algunas aplicaciones enteras nunca usarán "
+"ninguno de estos métodos."
-#: index.docbook:600
-msgid "Usually <literal>update()</literal> or <literal>saveOrUpdate()</literal> are used in the following scenario:"
-msgstr "se hacen algunas modificaciones al objeto"
+#. Tag: para
+#: session_api.xml:600
+#, no-c-format
+msgid ""
+"Usually <literal>update()</literal> or <literal>saveOrUpdate()</literal> are "
+"used in the following scenario:"
+msgstr ""
+"Usualmente <literal>update()</literal> o <literal>saveOrUpdate()</literal> "
+"se usan en el siguiente escenario:"
-#: index.docbook:607
+#. Tag: para
+#: session_api.xml:607
+#, no-c-format
msgid "the application loads an object in the first session"
-msgstr "el objeto se pasa abajo de regreso a la capa de negocio"
+msgstr "la aplicación carga un objeto en la primera sesión"
-#: index.docbook:612
+#. Tag: para
+#: session_api.xml:612
+#, no-c-format
msgid "the object is passed up to the UI tier"
-msgstr "la aplicación hace estas modificaciones persistentes llamando a <literal>update()</literal> en una segunda sesión"
+msgstr "el objeto es pasado a la capa de UI"
-#: index.docbook:617
+#. Tag: para
+#: session_api.xml:617
+#, no-c-format
msgid "some modifications are made to the object"
-msgstr "<literal>saveOrUpdate()</literal> hace lo siguiente:"
+msgstr "se hacen algunas modificaciones al objeto"
-#: index.docbook:622
+#. Tag: para
+#: session_api.xml:622
+#, no-c-format
msgid "the object is passed back down to the business logic tier"
-msgstr "si el objeto ya es persistente en esta sesión, no hace nada"
+msgstr "el objeto se pasa abajo de regreso a la capa de negocio"
-#: index.docbook:627
-msgid "the application persists these modifications by calling <literal>update()</literal> in a second session"
-msgstr "si otro objeto asociado con la sesión tiene el mismo identificador, lanza una excepción"
+#. Tag: para
+#: session_api.xml:627
+#, no-c-format
+msgid ""
+"the application persists these modifications by calling <literal>update()</"
+"literal> in a second session"
+msgstr ""
+"la aplicación hace estas modificaciones persistentes llamando a "
+"<literal>update()</literal> en una segunda sesión"
-#: index.docbook:634
+#. Tag: para
+#: session_api.xml:634
+#, no-c-format
msgid "<literal>saveOrUpdate()</literal> does the following:"
-msgstr "si el objeto no tiene ninguna propiedad identificadora, lo salva llamando a <literal>save()</literal>"
+msgstr "<literal>saveOrUpdate()</literal> hace lo siguiente:"
-#: index.docbook:640
+#. Tag: para
+#: session_api.xml:640
+#, no-c-format
msgid "if the object is already persistent in this session, do nothing"
-msgstr "si el identificador del objeto tiene el valor asignado a un objeto recién instanciado, lo salva llamando a <literal>save()</literal>"
+msgstr "si el objeto ya es persistente en esta sesión, no hace nada"
-#: index.docbook:645
-msgid "if another object associated with the session has the same identifier, throw an exception"
-msgstr "si el objeto está versionado (por un <literal><version></literal> o <literal><timestamp></literal>), y el valor de la propiedad de versión es el mismo valor asignado a una objeto recién instanciado, lo salva llamando a <literal>save()</literal>"
+#. Tag: para
+#: session_api.xml:645
+#, no-c-format
+msgid ""
+"if another object associated with the session has the same identifier, throw "
+"an exception"
+msgstr ""
+"si otro objeto asociado con la sesión tiene el mismo identificador, lanza "
+"una excepción"
-#: index.docbook:651
+#. Tag: para
+#: session_api.xml:651
+#, no-c-format
msgid "if the object has no identifier property, <literal>save()</literal> it"
-msgstr "en cualquier otro caso se actualiza el objeto llamando a <literal>update()</literal>"
+msgstr ""
+"si el objeto no tiene ninguna propiedad identificadora, lo salva llamando a "
+"<literal>save()</literal>"
-#: index.docbook:656
-msgid "if the object's identifier has the value assigned to a newly instantiated object, <literal>save()</literal> it"
-msgstr "y <literal>merge()</literal> es muy diferente:"
+#. Tag: para
+#: session_api.xml:656
+#, no-c-format
+msgid ""
+"if the object's identifier has the value assigned to a newly instantiated "
+"object, <literal>save()</literal> it"
+msgstr ""
+"si el identificador del objeto tiene el valor asignado a un objeto recién "
+"instanciado, lo salva llamando a <literal>save()</literal>"
-#: index.docbook:662
-msgid "if the object is versioned (by a <literal><version></literal> or <literal><timestamp></literal>), and the version property value is the same value assigned to a newly instantiated object, <literal>save()</literal> it"
-msgstr "si existe una instancia persistente con el mismo identificador asignado actualmente con la sesión, copia el estado del objeto dado en la instancia persistente"
+#. Tag: para
+#: session_api.xml:662
+#, no-c-format
+msgid ""
+"if the object is versioned (by a <literal><version></literal> or "
+"<literal><timestamp></literal>), and the version property value is the "
+"same value assigned to a newly instantiated object, <literal>save()</"
+"literal> it"
+msgstr ""
+"si el objeto está versionado (por un <literal><version></literal> o "
+"<literal><timestamp></literal>), y el valor de la propiedad de versión "
+"es el mismo valor asignado a una objeto recién instanciado, lo salva "
+"llamando a <literal>save()</literal>"
-#: index.docbook:670
+#. Tag: para
+#: session_api.xml:670
+#, no-c-format
msgid "otherwise <literal>update()</literal> the object"
-msgstr "si no existe ninguna instancia persistente actualmente asociada a la sesión, intente cargarla de la base de datos, o crear una nueva instancia persistente"
+msgstr ""
+"en cualquier otro caso se actualiza el objeto llamando a <literal>update()</"
+"literal>"
-#: index.docbook:676
+#. Tag: para
+#: session_api.xml:676
+#, no-c-format
msgid "and <literal>merge()</literal> is very different:"
-msgstr "la instancia persistente es devuelta"
+msgstr "y <literal>merge()</literal> es muy diferente:"
-#: index.docbook:682
-msgid "if there is a persistent instance with the same identifier currently associated with the session, copy the state of the given object onto the persistent instance"
-msgstr "la instancia dada no resulta ser asociada a la sesión, permanece separada"
+#. Tag: para
+#: session_api.xml:682
+#, no-c-format
+msgid ""
+"if there is a persistent instance with the same identifier currently "
+"associated with the session, copy the state of the given object onto the "
+"persistent instance"
+msgstr ""
+"si existe una instancia persistente con el mismo identificador asignado "
+"actualmente con la sesión, copia el estado del objeto dado en la instancia "
+"persistente"
-#: index.docbook:689
-msgid "if there is no persistent instance currently associated with the session, try to load it from the database, or create a new persistent instance"
-msgstr "Borrando objetos persistentes"
+#. Tag: para
+#: session_api.xml:689
+#, no-c-format
+msgid ""
+"if there is no persistent instance currently associated with the session, "
+"try to load it from the database, or create a new persistent instance"
+msgstr ""
+"si no existe ninguna instancia persistente actualmente asociada a la sesión, "
+"intente cargarla de la base de datos, o crear una nueva instancia persistente"
-#: index.docbook:695
+#. Tag: para
+#: session_api.xml:695
+#, no-c-format
msgid "the persistent instance is returned"
-msgstr "<literal>Session.delete()</literal> quitará el estado de un objeto de la base de datos. Por supuesto, tu aplicación podría tener aún una referencia a un objeto borrado. Lo mejor es pensar en <literal>delete()</literal> como hacer transitoria una instancia persistente."
+msgstr "la instancia persistente es devuelta"
-#: index.docbook:700
-msgid "the given instance does not become associated with the session, it remains detached"
-msgstr "<![CDATA[sess.delete(cat);]]>"
+#. Tag: para
+#: session_api.xml:700
+#, no-c-format
+msgid ""
+"the given instance does not become associated with the session, it remains "
+"detached"
+msgstr ""
+"la instancia dada no resulta ser asociada a la sesión, permanece separada"
-#: index.docbook:710
+#. Tag: title
+#: session_api.xml:710
+#, no-c-format
msgid "Deleting persistent objects"
-msgstr "Puedes borrar los objetos en el orden que gustes, sin riesgo de violaciones de restricción de clave foránea. Aún es posible violar una restricción <literal>NOT NULL</literal> sobre una columna clave foránea borrando objetos en un orden erróneo, por ejemplo, si borras el padre, pero olvidas borrar los hijos."
+msgstr "Borrando objetos persistentes"
-#: index.docbook:712
-msgid "<literal>Session.delete()</literal> will remove an object's state from the database. Of course, your application might still hold a reference to a deleted object. It's best to think of <literal>delete()</literal> as making a persistent instance transient."
-msgstr "Replicando objetos entre dos almacénes de datos diferentes"
+#. Tag: para
+#: session_api.xml:712
+#, no-c-format
+msgid ""
+"<literal>Session.delete()</literal> will remove an object's state from the "
+"database. Of course, your application might still hold a reference to a "
+"deleted object. It's best to think of <literal>delete()</literal> as making "
+"a persistent instance transient."
+msgstr ""
+"<literal>Session.delete()</literal> quitará el estado de un objeto de la "
+"base de datos. Por supuesto, tu aplicación podría tener aún una referencia a "
+"un objeto borrado. Lo mejor es pensar en <literal>delete()</literal> como "
+"hacer transitoria una instancia persistente."
-#: index.docbook:719
+#. Tag: programlisting
+#: session_api.xml:719
+#, no-c-format
msgid "<![CDATA[sess.delete(cat);]]>"
-msgstr "Es ocasionalmente útil ser capaz de tomar un grafo de instancias persistentes y hacerlas persistentes en un almacén de datos diferente, sin regenerar los valores identificadores."
+msgstr ""
-#: index.docbook:721
-msgid "You may delete objects in any order you like, without risk of foreign key constraint violations. It is still possible to violate a <literal>NOT NULL</literal> constraint on a foreign key column by deleting objects in the wrong order, e.g. if you delete the parent, but forget to delete the children."
+#. Tag: para
+#: session_api.xml:721
+#, no-c-format
+msgid ""
+"You may delete objects in any order you like, without risk of foreign key "
+"constraint violations. It is still possible to violate a <literal>NOT NULL</"
+"literal> constraint on a foreign key column by deleting objects in the wrong "
+"order, e.g. if you delete the parent, but forget to delete the children."
msgstr ""
- "<![CDATA[//retrieve a cat from one database\n"
- "Session session1 = factory1.openSession();\n"
- "Transaction tx1 = session1.beginTransaction();\n"
- "Cat cat = session1.get(Cat.class, catId);\n"
- "tx1.commit();\n"
- "session1.close();\n"
- "\n"
- "//reconcile with a second database\n"
- "Session session2 = factory2.openSession();\n"
- "Transaction tx2 = session2.beginTransaction();\n"
- "session2.replicate(cat, ReplicationMode.LATEST_VERSION);\n"
- "tx2.commit();\n"
- "session2.close();]]>"
+"Puedes borrar los objetos en el orden que gustes, sin riesgo de violaciones "
+"de restricción de clave foránea. Aún es posible violar una restricción "
+"<literal>NOT NULL</literal> sobre una columna clave foránea borrando objetos "
+"en un orden erróneo, por ejemplo, si borras el padre, pero olvidas borrar "
+"los hijos."
-#: index.docbook:732
+#. Tag: title
+#: session_api.xml:732
+#, no-c-format
msgid "Replicating object between two different datastores"
-msgstr "El <literal>ReplicationMode</literal> determina cómo <literal>replicate()</literal> tratará los conflictos con filas existentes en la base de datos."
+msgstr "Replicando objetos entre dos almacénes de datos diferentes"
-#: index.docbook:734
-msgid "It is occasionally useful to be able to take a graph of persistent instances and make them persistent in a different datastore, without regenerating identifier values."
-msgstr "<literal>ReplicationMode.IGNORE</literal> - ignora el objeto cuando existe una fila de base de datos con el mismo identificador"
+#. Tag: para
+#: session_api.xml:734
+#, no-c-format
+msgid ""
+"It is occasionally useful to be able to take a graph of persistent instances "
+"and make them persistent in a different datastore, without regenerating "
+"identifier values."
+msgstr ""
+"Es ocasionalmente útil ser capaz de tomar un grafo de instancias "
+"persistentes y hacerlas persistentes en un almacén de datos diferente, sin "
+"regenerar los valores identificadores."
-#: index.docbook:740
+#. Tag: programlisting
+#: session_api.xml:740
+#, no-c-format
msgid ""
- "<![CDATA[//retrieve a cat from one database\n"
- "Session session1 = factory1.openSession();\n"
- "Transaction tx1 = session1.beginTransaction();\n"
- "Cat cat = session1.get(Cat.class, catId);\n"
- "tx1.commit();\n"
- "session1.close();\n"
- "\n"
- "//reconcile with a second database\n"
- "Session session2 = factory2.openSession();\n"
- "Transaction tx2 = session2.beginTransaction();\n"
- "session2.replicate(cat, ReplicationMode.LATEST_VERSION);\n"
- "tx2.commit();\n"
- "session2.close();]]>"
-msgstr "<literal>ReplicationMode.OVERWRITE</literal> - sobrescribe cualquier fila de base de datos existente con el mismo identificador"
+"<![CDATA[//retrieve a cat from one database\n"
+"Session session1 = factory1.openSession();\n"
+"Transaction tx1 = session1.beginTransaction();\n"
+"Cat cat = session1.get(Cat.class, catId);\n"
+"tx1.commit();\n"
+"session1.close();\n"
+"\n"
+"//reconcile with a second database\n"
+"Session session2 = factory2.openSession();\n"
+"Transaction tx2 = session2.beginTransaction();\n"
+"session2.replicate(cat, ReplicationMode.LATEST_VERSION);\n"
+"tx2.commit();\n"
+"session2.close();]]>"
+msgstr ""
-#: index.docbook:742
-msgid "The <literal>ReplicationMode</literal> determines how <literal>replicate()</literal> will deal with conflicts with existing rows in the database."
-msgstr "<literal>ReplicationMode.EXCEPTION</literal> - lanza una excepción si existe una fila de base de datos con el mismo identificador"
+#. Tag: para
+#: session_api.xml:742
+#, no-c-format
+msgid ""
+"The <literal>ReplicationMode</literal> determines how <literal>replicate()</"
+"literal> will deal with conflicts with existing rows in the database."
+msgstr ""
+"El <literal>ReplicationMode</literal> determina cómo <literal>replicate()</"
+"literal> tratará los conflictos con filas existentes en la base de datos."
-#: index.docbook:749
-msgid "<literal>ReplicationMode.IGNORE</literal> - ignore the object when there is an existing database row with the same identifier"
-msgstr "<literal>ReplicationMode.LATEST_VERSION</literal> - sobrescribe la fila si su número de versión es anterior al número de versión del objeto, o en caso contrario ignora el objeto"
+#. Tag: para
+#: session_api.xml:749
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.IGNORE</literal> - ignore the object when there is "
+"an existing database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.IGNORE</literal> - ignora el objeto cuando existe "
+"una fila de base de datos con el mismo identificador"
-#: index.docbook:755
-msgid "<literal>ReplicationMode.OVERWRITE</literal> - overwrite any existing database row with the same identifier"
-msgstr "Los casos de uso para esta funcionalidad incluyen reconciliar datos ingresados en instancias diferentes de bases de datos, actualizar información de configuración de sistema durante actualizaciones de producto, deshacer cambios producidos durante transacciones no-ACID y más."
+#. Tag: para
+#: session_api.xml:755
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.OVERWRITE</literal> - overwrite any existing "
+"database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.OVERWRITE</literal> - sobrescribe cualquier fila de "
+"base de datos existente con el mismo identificador"
-#: index.docbook:761
-msgid "<literal>ReplicationMode.EXCEPTION</literal> - throw an exception if there is an existing database row with the same identifier"
-msgstr "Limpiando (flushing) la sesión"
+#. Tag: para
+#: session_api.xml:761
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.EXCEPTION</literal> - throw an exception if there "
+"is an existing database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.EXCEPTION</literal> - lanza una excepción si existe "
+"una fila de base de datos con el mismo identificador"
-#: index.docbook:767
-msgid "<literal>ReplicationMode.LATEST_VERSION</literal> - overwrite the row if its version number is earlier than the version number of the object, or ignore the object otherwise"
-msgstr "Cada tanto, la <literal>Session</literal> ejecutará las sentencias SQL necesarias para sincronizar el estado de la conexión JDBC con el estado de los objetos mantenidos en menoria. Este proceso, <emphasis>limpieza (flush)</emphasis>, ocurre por defecto en los siguientes puntos"
+#. Tag: para
+#: session_api.xml:767
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.LATEST_VERSION</literal> - overwrite the row if its "
+"version number is earlier than the version number of the object, or ignore "
+"the object otherwise"
+msgstr ""
+"<literal>ReplicationMode.LATEST_VERSION</literal> - sobrescribe la fila si "
+"su número de versión es anterior al número de versión del objeto, o en caso "
+"contrario ignora el objeto"
-#: index.docbook:775
-msgid "Usecases for this feature include reconciling data entered into different database instances, upgrading system configuration information during product upgrades, rolling back changes made during non-ACID transactions and more."
-msgstr "antes de algunas ejecuciones de consulta"
+#. Tag: para
+#: session_api.xml:775
+#, no-c-format
+msgid ""
+"Usecases for this feature include reconciling data entered into different "
+"database instances, upgrading system configuration information during "
+"product upgrades, rolling back changes made during non-ACID transactions and "
+"more."
+msgstr ""
+"Los casos de uso para esta funcionalidad incluyen reconciliar datos "
+"ingresados en instancias diferentes de bases de datos, actualizar "
+"información de configuración de sistema durante actualizaciones de producto, "
+"deshacer cambios producidos durante transacciones no-ACID y más."
-#: index.docbook:784
+#. Tag: title
+#: session_api.xml:784
+#, no-c-format
msgid "Flushing the Session"
-msgstr "desde <literal>org.hibernate.Transaction.commit()</literal>"
+msgstr "Limpiando (flushing) la sesión"
-#: index.docbook:786
-msgid "From time to time the <literal>Session</literal> will execute the SQL statements needed to synchronize the JDBC connection's state with the state of objects held in memory. This process, <emphasis>flush</emphasis>, occurs by default at the following points"
-msgstr "desde <literal>Session.flush()</literal>"
+#. Tag: para
+#: session_api.xml:786
+#, no-c-format
+msgid ""
+"From time to time the <literal>Session</literal> will execute the SQL "
+"statements needed to synchronize the JDBC connection's state with the state "
+"of objects held in memory. This process, <emphasis>flush</emphasis>, occurs "
+"by default at the following points"
+msgstr ""
+"Cada tanto, la <literal>Session</literal> ejecutará las sentencias SQL "
+"necesarias para sincronizar el estado de la conexión JDBC con el estado de "
+"los objetos mantenidos en menoria. Este proceso, <emphasis>limpieza (flush)</"
+"emphasis>, ocurre por defecto en los siguientes puntos"
-#: index.docbook:795
+#. Tag: para
+#: session_api.xml:795
+#, no-c-format
msgid "before some query executions"
-msgstr "Las sentencias SQL son liberadas en el siguiente orden"
+msgstr "antes de algunas ejecuciones de consulta"
-#: index.docbook:800
+#. Tag: para
+#: session_api.xml:800
+#, no-c-format
msgid "from <literal>org.hibernate.Transaction.commit()</literal>"
-msgstr "todas las inserciones de entidades, en el mismo orden que los objetos correspondientes fueron salvados usando <literal>Session.save()</literal>"
+msgstr "desde <literal>org.hibernate.Transaction.commit()</literal>"
-#: index.docbook:805
+#. Tag: para
+#: session_api.xml:805
+#, no-c-format
msgid "from <literal>Session.flush()</literal>"
-msgstr "todas las actualizaciones de entidades"
+msgstr "desde <literal>Session.flush()</literal>"
-#: index.docbook:811
+#. Tag: para
+#: session_api.xml:811
+#, no-c-format
msgid "The SQL statements are issued in the following order"
-msgstr "todas los borrados de colecciones"
+msgstr "Las sentencias SQL son liberadas en el siguiente orden"
-#: index.docbook:817
-msgid "all entity insertions, in the same order the corresponding objects were saved using <literal>Session.save()</literal>"
-msgstr "todos los borrados, actualizaciones e inserciones de elementos de colección"
+#. Tag: para
+#: session_api.xml:817
+#, no-c-format
+msgid ""
+"all entity insertions, in the same order the corresponding objects were "
+"saved using <literal>Session.save()</literal>"
+msgstr ""
+"todas las inserciones de entidades, en el mismo orden que los objetos "
+"correspondientes fueron salvados usando <literal>Session.save()</literal>"
-#: index.docbook:823
+#. Tag: para
+#: session_api.xml:823
+#, no-c-format
msgid "all entity updates"
-msgstr "todas las inserciones de colecciones"
+msgstr "todas las actualizaciones de entidades"
-#: index.docbook:828
+#. Tag: para
+#: session_api.xml:828
+#, no-c-format
msgid "all collection deletions"
-msgstr "todos los borrados de entidades, en el mismo orden que los objetos correspondientes fueron borrados usando <literal>Session.delete()</literal>"
+msgstr "todas los borrados de colecciones"
-#: index.docbook:833
+#. Tag: para
+#: session_api.xml:833
+#, no-c-format
msgid "all collection element deletions, updates and insertions"
-msgstr "(Una excepción es que los objetos que usan generación de ID <literal>native</literal> se insertan cuando son salvados.)"
+msgstr ""
+"todos los borrados, actualizaciones e inserciones de elementos de colección"
-#: index.docbook:838
+#. Tag: para
+#: session_api.xml:838
+#, no-c-format
msgid "all collection insertions"
-msgstr "Excepto cuando llamas explícitamente a <literal>flush()</literal>, no hay en absoluto garantías sobre <emphasis>cuándo</emphasis> la <literal>Session</literal> ejecuta las llamadas JDBC. sólo sobre el <emphasis>orden</emphasis> en que son ejecutadas. Sin embargo, Hibernate garantiza que los métodos <literal>Query.list(..)</literal> nunca devolverán datos añejos o erróneos."
+msgstr "todas las inserciones de colecciones"
-#: index.docbook:843
-msgid "all entity deletions, in the same order the corresponding objects were deleted using <literal>Session.delete()</literal>"
-msgstr "Es posible cambiar el comportamiento por defecto de modo que la limpieza (flush) ocurra menos frecuentemente. La clase <literal>FlushMode</literal> tres modos diferentes: sólo en tiempo de compromiso (y sólo cuando se use la API de <literal>Transaction</literal> de Hibernate), limpieza automática usando la rutina explicada, o nunca limpiar a menos que se llame a <literal>flush()</literal> explícitamente. El último modo es útil para unidades de trabajo largas, donde una <literal>Session</literal> se mantiene abierta y desconectada por largo tiempo (ver <xref linkend=\"transactions-optimistic-longsession\"/>)."
+#. Tag: para
+#: session_api.xml:843
+#, no-c-format
+msgid ""
+"all entity deletions, in the same order the corresponding objects were "
+"deleted using <literal>Session.delete()</literal>"
+msgstr ""
+"todos los borrados de entidades, en el mismo orden que los objetos "
+"correspondientes fueron borrados usando <literal>Session.delete()</literal>"
-#: index.docbook:850
-msgid "(An exception is that objects using <literal>native</literal> ID generation are inserted when they are saved.)"
+#. Tag: para
+#: session_api.xml:850
+#, no-c-format
+msgid ""
+"(An exception is that objects using <literal>native</literal> ID generation "
+"are inserted when they are saved.)"
msgstr ""
- "<![CDATA[sess = sf.openSession();\n"
- "Transaction tx = sess.beginTransaction();\n"
- "sess.setFlushMode(FlushMode.COMMIT); // allow queries to return stale state\n"
- "\n"
- "Cat izi = (Cat) sess.load(Cat.class, id);\n"
- "izi.setName(iznizi);\n"
- "\n"
- "// might return stale data\n"
- "sess.find(\"from Cat as cat left outer join cat.kittens kitten\");\n"
- "\n"
- "// change to izi is not flushed!\n"
- "...\n"
- "tx.commit(); // flush occurs]]>"
+"(Una excepción es que los objetos que usan generación de ID <literal>native</"
+"literal> se insertan cuando son salvados.)"
-#: index.docbook:855
-msgid "Except when you explicity <literal>flush()</literal>, there are absolutely no guarantees about <emphasis>when</emphasis> the <literal>Session</literal> executes the JDBC calls, only the <emphasis>order</emphasis> in which they are executed. However, Hibernate does guarantee that the <literal>Query.list(..)</literal> will never return stale data; nor will they return the wrong data."
-msgstr "Durante la limpieza, puede ocurrir una excepción (por ejemplo, si una operación DML violase una restricción). Ya que el manejo de excepciones implica alguna comprensión del comportamiento transaccional de Hibernate, lo discutimos en <xref linkend=\"transactions\"/>."
+#. Tag: para
+#: session_api.xml:855
+#, no-c-format
+msgid ""
+"Except when you explicity <literal>flush()</literal>, there are absolutely "
+"no guarantees about <emphasis>when</emphasis> the <literal>Session</literal> "
+"executes the JDBC calls, only the <emphasis>order</emphasis> in which they "
+"are executed. However, Hibernate does guarantee that the <literal>Query.list"
+"(..)</literal> will never return stale data; nor will they return the wrong "
+"data."
+msgstr ""
+"Excepto cuando llamas explícitamente a <literal>flush()</literal>, no hay en "
+"absoluto garantías sobre <emphasis>cuándo</emphasis> la <literal>Session</"
+"literal> ejecuta las llamadas JDBC. sólo sobre el <emphasis>orden</emphasis> "
+"en que son ejecutadas. Sin embargo, Hibernate garantiza que los métodos "
+"<literal>Query.list(..)</literal> nunca devolverán datos añejos o erróneos."
-#: index.docbook:863
-msgid "It is possible to change the default behavior so that flush occurs less frequently. The <literal>FlushMode</literal> class defines three different modes: only flush at commit time (and only when the Hibernate <literal>Transaction</literal> API is used), flush automatically using the explained routine, or never flush unless <literal>flush()</literal> is called explicitly. The last mode is useful for long running units of work, where a <literal>Session</literal> is kept open and disconnected for a long time (see <xref linkend=\"transactions-optimistic-longsession\"/>)."
-msgstr "Persistencia transitiva"
+#. Tag: para
+#: session_api.xml:863
+#, no-c-format
+msgid ""
+"It is possible to change the default behavior so that flush occurs less "
+"frequently. The <literal>FlushMode</literal> class defines three different "
+"modes: only flush at commit time (and only when the Hibernate "
+"<literal>Transaction</literal> API is used), flush automatically using the "
+"explained routine, or never flush unless <literal>flush()</literal> is "
+"called explicitly. The last mode is useful for long running units of work, "
+"where a <literal>Session</literal> is kept open and disconnected for a long "
+"time (see <xref linkend=\"transactions-optimistic-longsession\"/>)."
+msgstr ""
+"Es posible cambiar el comportamiento por defecto de modo que la limpieza "
+"(flush) ocurra menos frecuentemente. La clase <literal>FlushMode</literal> "
+"tres modos diferentes: sólo en tiempo de compromiso (y sólo cuando se use la "
+"API de <literal>Transaction</literal> de Hibernate), limpieza automática "
+"usando la rutina explicada, o nunca limpiar a menos que se llame a "
+"<literal>flush()</literal> explícitamente. El último modo es útil para "
+"unidades de trabajo largas, donde una <literal>Session</literal> se mantiene "
+"abierta y desconectada por largo tiempo (ver <xref linkend=\"transactions-"
+"optimistic-longsession\"/>)."
-#: index.docbook:873
+#. Tag: programlisting
+#: session_api.xml:873
+#, no-c-format
msgid ""
- "<![CDATA[sess = sf.openSession();\n"
- "Transaction tx = sess.beginTransaction();\n"
- "sess.setFlushMode(FlushMode.COMMIT); // allow queries to return stale state\n"
- "\n"
- "Cat izi = (Cat) sess.load(Cat.class, id);\n"
- "izi.setName(iznizi);\n"
- "\n"
- "// might return stale data\n"
- "sess.find(\"from Cat as cat left outer join cat.kittens kitten\");\n"
- "\n"
- "// change to izi is not flushed!\n"
- "...\n"
- "tx.commit(); // flush occurs\n"
- "sess.close();]]>"
-msgstr "Es absolutamente incómodo dalvar, borrar, o reunir objetos individuales, especialmente si tratas con un grafo de objetos asociados. Un caso común es una relación padre/hijo. Considera el siguiente ejemplo:"
+"<![CDATA[sess = sf.openSession();\n"
+"Transaction tx = sess.beginTransaction();\n"
+"sess.setFlushMode(FlushMode.COMMIT); // allow queries to return stale state\n"
+"\n"
+"Cat izi = (Cat) sess.load(Cat.class, id);\n"
+"izi.setName(iznizi);\n"
+"\n"
+"// might return stale data\n"
+"sess.find(\"from Cat as cat left outer join cat.kittens kitten\");\n"
+"\n"
+"// change to izi is not flushed!\n"
+"...\n"
+"tx.commit(); // flush occurs\n"
+"sess.close();]]>"
+msgstr ""
-#: index.docbook:875
-msgid "During flush, an exception might occur (e.g. if a DML operation violates a constraint). Since handling exceptions involves some understanding of Hibernate's transactional behavior, we discuss it in <xref linkend=\"transactions\"/>."
-msgstr "Si los hijos en una relación padre/hijo pudieran ser tipificados en valor (por ejemplo, una colección de direcciones o cadenas), sus ciclos de vida dependerían del padre y se requeriría ninguna otra acción para el tratamiento en \"cascada\" de cambios de estado. Cuando el padre es salvado, los objetos hijo tipificados en valor son salvados también, cuando se borra el padre, se borran los hijos, etc. Esto funciona incluso para operaciones como el retiro de un hijo de la colección. Hibernate detectará esto y, ya que los objetos tipificados en valor no pueden tener referencias compartidas, borrará el hijo de la base de datos."
+#. Tag: para
+#: session_api.xml:875
+#, no-c-format
+msgid ""
+"During flush, an exception might occur (e.g. if a DML operation violates a "
+"constraint). Since handling exceptions involves some understanding of "
+"Hibernate's transactional behavior, we discuss it in <xref linkend="
+"\"transactions\"/>."
+msgstr ""
+"Durante la limpieza, puede ocurrir una excepción (por ejemplo, si una "
+"operación DML violase una restricción). Ya que el manejo de excepciones "
+"implica alguna comprensión del comportamiento transaccional de Hibernate, lo "
+"discutimos en <xref linkend=\"transactions\"/>."
-#: index.docbook:884
+#. Tag: title
+#: session_api.xml:884
+#, no-c-format
msgid "Transitive persistence"
-msgstr "Ahora considera el mismo escenario con los objetos padre e hijos siendo entidades, no tipos de valor (por ejemplo, categorías e ítems, o gatos padre e hijos). Las entidades tienen su propio ciclo de vida, soportan referencias compartidas (de modo que quitar una entidad de una colección no significa que sea borrada), y no hay por defecto ningún tratamiento en \"cascada\" de estado de una entidad a otras entidades asociadas. Hibernate no implementa <emphasis>persistencia por alcance</emphasis>."
+msgstr "Persistencia transitiva"
-#: index.docbook:886
-msgid "It is quite cumbersome to save, delete, or reattach individual objects, especially if you deal with a graph of associated objects. A common case is a parent/child relationship. Consider the following example:"
-msgstr "Para cada operación básica de la sesión de Hibernate - incluyendo <literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), evict(), replicate()</literal> - hay un estilo de cascada correspondiente. Respectivamente, los estilos de cascada se llaman <literal>create, merge, save-update, delete, lock, refresh, evict, replicate</literal>. Si quieres que una operación sea tratada en cascada a lo largo de una asociación, debes indicar eso en el documento de mapeo. Por ejemplo:"
+#. Tag: para
+#: session_api.xml:886
+#, no-c-format
+msgid ""
+"It is quite cumbersome to save, delete, or reattach individual objects, "
+"especially if you deal with a graph of associated objects. A common case is "
+"a parent/child relationship. Consider the following example:"
+msgstr ""
+"Es absolutamente incómodo dalvar, borrar, o reunir objetos individuales, "
+"especialmente si tratas con un grafo de objetos asociados. Un caso común es "
+"una relación padre/hijo. Considera el siguiente ejemplo:"
-#: index.docbook:892
-msgid "If the children in a parent/child relationship would be value typed (e.g. a collection of addresses or strings), their life cycle would depend on the parent and no further action would be required for convenient \"cascading\" of state changes. When the parent is saved, the value-typed child objects are saved as well, when the parent is deleted, the children will be deleted, etc. This even works for operations such as the removal of a child from the collection; Hibernate will detect this and, since value-typed objects can't have shared references, delete the child from the database."
-msgstr "<![CDATA[<one-to-one name=\"person\" cascade=\"persist\"/>]]>"
+#. Tag: para
+#: session_api.xml:892
+#, no-c-format
+msgid ""
+"If the children in a parent/child relationship would be value typed (e.g. a "
+"collection of addresses or strings), their life cycle would depend on the "
+"parent and no further action would be required for convenient \"cascading\" "
+"of state changes. When the parent is saved, the value-typed child objects "
+"are saved as well, when the parent is deleted, the children will be deleted, "
+"etc. This even works for operations such as the removal of a child from the "
+"collection; Hibernate will detect this and, since value-typed objects can't "
+"have shared references, delete the child from the database."
+msgstr ""
+"Si los hijos en una relación padre/hijo pudieran ser tipificados en valor "
+"(por ejemplo, una colección de direcciones o cadenas), sus ciclos de vida "
+"dependerían del padre y se requeriría ninguna otra acción para el "
+"tratamiento en \"cascada\" de cambios de estado. Cuando el padre es salvado, "
+"los objetos hijo tipificados en valor son salvados también, cuando se borra "
+"el padre, se borran los hijos, etc. Esto funciona incluso para operaciones "
+"como el retiro de un hijo de la colección. Hibernate detectará esto y, ya "
+"que los objetos tipificados en valor no pueden tener referencias "
+"compartidas, borrará el hijo de la base de datos."
-#: index.docbook:903
-msgid "Now consider the same scenario with parent and child objects being entities, not value-types (e.g. categories and items, or parent and child cats). Entities have their own life cycle, support shared references (so removing an entity from the collection does not mean it can be deleted), and there is by default no cascading of state from one entity to any other associated entities. Hibernate does not implement <emphasis>persistence by reachability</emphasis> by default."
-msgstr "Los estilos de cascada pueden combinarse:"
+#. Tag: para
+#: session_api.xml:903
+#, no-c-format
+msgid ""
+"Now consider the same scenario with parent and child objects being entities, "
+"not value-types (e.g. categories and items, or parent and child cats). "
+"Entities have their own life cycle, support shared references (so removing "
+"an entity from the collection does not mean it can be deleted), and there is "
+"by default no cascading of state from one entity to any other associated "
+"entities. Hibernate does not implement <emphasis>persistence by "
+"reachability</emphasis> by default."
+msgstr ""
+"Ahora considera el mismo escenario con los objetos padre e hijos siendo "
+"entidades, no tipos de valor (por ejemplo, categorías e ítems, o gatos padre "
+"e hijos). Las entidades tienen su propio ciclo de vida, soportan referencias "
+"compartidas (de modo que quitar una entidad de una colección no significa "
+"que sea borrada), y no hay por defecto ningún tratamiento en \"cascada\" de "
+"estado de una entidad a otras entidades asociadas. Hibernate no implementa "
+"<emphasis>persistencia por alcance</emphasis>."
-#: index.docbook:912
-msgid "For each basic operation of the Hibernate session - including <literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), evict(), replicate()</literal> - there is a corresponding cascade style. Respectively, the cascade styles are named <literal>create, merge, save-update, delete, lock, refresh, evict, replicate</literal>. If you want an operation to be cascaded along an association, you must indicate that in the mapping document. For example:"
-msgstr "<![CDATA[<one-to-one name=\"person\" cascade=\"persist,delete,lock\"/>]]>"
+#. Tag: para
+#: session_api.xml:912
+#, no-c-format
+msgid ""
+"For each basic operation of the Hibernate session - including "
+"<literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), "
+"evict(), replicate()</literal> - there is a corresponding cascade style. "
+"Respectively, the cascade styles are named <literal>create, merge, save-"
+"update, delete, lock, refresh, evict, replicate</literal>. If you want an "
+"operation to be cascaded along an association, you must indicate that in the "
+"mapping document. For example:"
+msgstr ""
+"Para cada operación básica de la sesión de Hibernate - incluyendo "
+"<literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), "
+"evict(), replicate()</literal> - hay un estilo de cascada correspondiente. "
+"Respectivamente, los estilos de cascada se llaman <literal>create, merge, "
+"save-update, delete, lock, refresh, evict, replicate</literal>. Si quieres "
+"que una operación sea tratada en cascada a lo largo de una asociación, debes "
+"indicar eso en el documento de mapeo. Por ejemplo:"
-#: index.docbook:921
+#. Tag: programlisting
+#: session_api.xml:921
+#, no-c-format
msgid "<![CDATA[<one-to-one name=\"person\" cascade=\"persist\"/>]]>"
-msgstr "Puedes incluso usar <literal>cascade=\"all\"</literal> para especificar que <emphasis>todas</emphasis> las operaciones deben ser tratadas en cascada a lo largo de la asociación. El por defecto <literal>cascade=\"none\"</literal> especifica que ninguna operación será tratada en cascada."
+msgstr ""
-#: index.docbook:923
+#. Tag: para
+#: session_api.xml:923
+#, no-c-format
msgid "Cascade styles my be combined:"
-msgstr "Un estilo de cascada especial, <literal>delete-orphan</literal>, se aplica sólo a asociaciones uno-a-muchos, e indica que la operación <literal>delete()</literal> debe aplicarse a cualquier objeto hijo que sea quitado de la asociación."
+msgstr "Los estilos de cascada pueden combinarse:"
-#: index.docbook:927
-msgid "<![CDATA[<one-to-one name=\"person\" cascade=\"persist,delete,lock\"/>]]>"
-msgstr "Recomendaciones:"
+#. Tag: programlisting
+#: session_api.xml:927
+#, no-c-format
+msgid ""
+"<![CDATA[<one-to-one name=\"person\" cascade=\"persist,delete,lock\"/>]]>"
+msgstr ""
-#: index.docbook:929
-msgid "You may even use <literal>cascade=\"all\"</literal> to specify that <emphasis>all</emphasis> operations should be cascaded along the association. The default <literal>cascade=\"none\"</literal> specifies that no operations are to be cascaded."
-msgstr "Usualmente no tiene sentido habilitar el tratamiento en cascada a una asociación <literal><many-to-one></literal> o <literal><many-to-many></literal>. El tratamiento en cascada es frecuentemente útil para las asociaciones <literal><one-to-one></literal> y <literal><one-to-many></literal>. associations."
+#. Tag: para
+#: session_api.xml:929
+#, no-c-format
+msgid ""
+"You may even use <literal>cascade=\"all\"</literal> to specify that "
+"<emphasis>all</emphasis> operations should be cascaded along the "
+"association. The default <literal>cascade=\"none\"</literal> specifies that "
+"no operations are to be cascaded."
+msgstr ""
+"Puedes incluso usar <literal>cascade=\"all\"</literal> para especificar que "
+"<emphasis>todas</emphasis> las operaciones deben ser tratadas en cascada a "
+"lo largo de la asociación. El por defecto <literal>cascade=\"none\"</"
+"literal> especifica que ninguna operación será tratada en cascada."
-#: index.docbook:935
-msgid "A special cascade style, <literal>delete-orphan</literal>, applies only to one-to-many associations, and indicates that the <literal>delete()</literal> operation should be applied to any child object that is removed from the association."
-msgstr "Si la esperanza de vida de los objetos hijos está ligada a la eesperanza de vida del objeto padre, házlo un <emphasis>objeto de ciclo de vida</emphasis> especificando <literal>cascade=\"all,delete-orphan\"</literal>."
+#. Tag: para
+#: session_api.xml:935
+#, no-c-format
+msgid ""
+"A special cascade style, <literal>delete-orphan</literal>, applies only to "
+"one-to-many associations, and indicates that the <literal>delete()</literal> "
+"operation should be applied to any child object that is removed from the "
+"association."
+msgstr ""
+"Un estilo de cascada especial, <literal>delete-orphan</literal>, se aplica "
+"sólo a asociaciones uno-a-muchos, e indica que la operación <literal>delete()"
+"</literal> debe aplicarse a cualquier objeto hijo que sea quitado de la "
+"asociación."
-#: index.docbook:942
+#. Tag: para
+#: session_api.xml:942
+#, no-c-format
msgid "Recommendations:"
-msgstr "En otro caso, puede que no necesites tratamiento en cascada en absoluto. Pero si piensas que estarás trabajando frecuentemente con padre e hijos juntos en la misma transacción, y quieres ahorrarte algo de tipeo, considera usar <literal>cascade=\"persist,merge,save-update\"</literal>."
+msgstr "Recomendaciones:"
-#: index.docbook:948
-msgid "It doesn't usually make sense to enable cascade on a <literal><many-to-one></literal> or <literal><many-to-many></literal> association. Cascade is often useful for <literal><one-to-one></literal> and <literal><one-to-many></literal> associations."
-msgstr "Mapear una asociación (ya sea una asociación monovaluada, o una colección) con <literal>cascade=\"all\"</literal> marca la asociación como una relación del estilo <emphasis>padre/hijo</emphasis> donde save/update/delete en el padre resulta en save/update/delete del hijo o hijos."
+#. Tag: para
+#: session_api.xml:948
+#, no-c-format
+msgid ""
+"It doesn't usually make sense to enable cascade on a <literal><many-to-"
+"one></literal> or <literal><many-to-many></literal> association. "
+"Cascade is often useful for <literal><one-to-one></literal> and "
+"<literal><one-to-many></literal> associations."
+msgstr ""
+"Usualmente no tiene sentido habilitar el tratamiento en cascada a una "
+"asociación <literal><many-to-one></literal> o <literal><many-to-"
+"many></literal>. El tratamiento en cascada es frecuentemente útil para "
+"las asociaciones <literal><one-to-one></literal> y <literal><one-to-"
+"many></literal>. associations."
-#: index.docbook:956
-msgid "If the child object's lifespan is bounded by the lifespan of the parent object, make it a <emphasis>life cycle object</emphasis> by specifying <literal>cascade=\"all,delete-orphan\"</literal>."
-msgstr "Además, una mera referencia a un hijo desde un padre persistente resultará en un save/update del hijo. Esta metáfora está incompleta, sin embargo. Un hijo que deje de ser referenciado por su padre <emphasis>no</emphasis> es borrado automáticamente, excepto en el caso de una asociación <literal><one-to-many></literal> mapeada con <literal>cascade=\"delete-orphan\"</literal>. La semántica precisa de las operaciones en cascada para una relación padre/hijo es:"
+#. Tag: para
+#: session_api.xml:956
+#, no-c-format
+msgid ""
+"If the child object's lifespan is bounded by the lifespan of the parent "
+"object, make it a <emphasis>life cycle object</emphasis> by specifying "
+"<literal>cascade=\"all,delete-orphan\"</literal>."
+msgstr ""
+"Si la esperanza de vida de los objetos hijos está ligada a la eesperanza de "
+"vida del objeto padre, házlo un <emphasis>objeto de ciclo de vida</emphasis> "
+"especificando <literal>cascade=\"all,delete-orphan\"</literal>."
-#: index.docbook:963
-msgid "Otherwise, you might not need cascade at all. But if you think that you will often be working with the parent and children together in the same transaction, and you want to save yourself some typing, consider using <literal>cascade=\"persist,merge,save-update\"</literal>."
-msgstr "Si un padre le es pasado a <literal>persist()</literal>, todos los hijos le son pasados a <literal>persist()</literal>"
+#. Tag: para
+#: session_api.xml:963
+#, no-c-format
+msgid ""
+"Otherwise, you might not need cascade at all. But if you think that you will "
+"often be working with the parent and children together in the same "
+"transaction, and you want to save yourself some typing, consider using "
+"<literal>cascade=\"persist,merge,save-update\"</literal>."
+msgstr ""
+"En otro caso, puede que no necesites tratamiento en cascada en absoluto. "
+"Pero si piensas que estarás trabajando frecuentemente con padre e hijos "
+"juntos en la misma transacción, y quieres ahorrarte algo de tipeo, considera "
+"usar <literal>cascade=\"persist,merge,save-update\"</literal>."
-#: index.docbook:971
-msgid "Mapping an association (either a single valued association, or a collection) with <literal>cascade=\"all\"</literal> marks the association as a <emphasis>parent/child</emphasis> style relationship where save/update/delete of the parent results in save/update/delete of the child or children."
-msgstr "Si un padre le es pasado a <literal>merge()</literal>, todos los hijos le son pasados a <literal>merge()</literal>"
+#. Tag: para
+#: session_api.xml:971
+#, no-c-format
+msgid ""
+"Mapping an association (either a single valued association, or a collection) "
+"with <literal>cascade=\"all\"</literal> marks the association as a "
+"<emphasis>parent/child</emphasis> style relationship where save/update/"
+"delete of the parent results in save/update/delete of the child or children."
+msgstr ""
+"Mapear una asociación (ya sea una asociación monovaluada, o una colección) "
+"con <literal>cascade=\"all\"</literal> marca la asociación como una relación "
+"del estilo <emphasis>padre/hijo</emphasis> donde save/update/delete en el "
+"padre resulta en save/update/delete del hijo o hijos."
-#: index.docbook:977
-msgid "Futhermore, a mere reference to a child from a persistent parent will result in save/update of the child. This metaphor is incomplete, however. A child which becomes unreferenced by its parent is <emphasis>not</emphasis> automatically deleted, except in the case of a <literal><one-to-many></literal> association mapped with <literal>cascade=\"delete-orphan\"</literal>. The precise semantics of cascading operations for a parent/child relationship are as follows:"
-msgstr "Si un padre le es pasado a <literal>save()</literal>, <literal>update()</literal> o <literal>saveOrUpdate()</literal>, todos los hijos le son pasados a <literal>saveOrUpdate()</literal>"
+#. Tag: para
+#: session_api.xml:977
+#, no-c-format
+msgid ""
+"Futhermore, a mere reference to a child from a persistent parent will result "
+"in save/update of the child. This metaphor is incomplete, however. A child "
+"which becomes unreferenced by its parent is <emphasis>not</emphasis> "
+"automatically deleted, except in the case of a <literal><one-to-many></"
+"literal> association mapped with <literal>cascade=\"delete-orphan\"</"
+"literal>. The precise semantics of cascading operations for a parent/child "
+"relationship are as follows:"
+msgstr ""
+"Además, una mera referencia a un hijo desde un padre persistente resultará "
+"en un save/update del hijo. Esta metáfora está incompleta, sin embargo. Un "
+"hijo que deje de ser referenciado por su padre <emphasis>no</emphasis> es "
+"borrado automáticamente, excepto en el caso de una asociación <literal><"
+"one-to-many></literal> mapeada con <literal>cascade=\"delete-orphan\"</"
+"literal>. La semántica precisa de las operaciones en cascada para una "
+"relación padre/hijo es:"
-#: index.docbook:988
-msgid "If a parent is passed to <literal>persist()</literal>, all children are passed to <literal>persist()</literal>"
-msgstr "Si un hijo transitorio o separado se vuelve referenciado por un padre persistente, le es pasado a <literal>saveOrUpdate()</literal>"
+#. Tag: para
+#: session_api.xml:988
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>persist()</literal>, all children are "
+"passed to <literal>persist()</literal>"
+msgstr ""
+"Si un padre le es pasado a <literal>persist()</literal>, todos los hijos le "
+"son pasados a <literal>persist()</literal>"
-#: index.docbook:994
-msgid "If a parent is passed to <literal>merge()</literal>, all children are passed to <literal>merge()</literal>"
-msgstr "Si un padre es borrado, todos los hijos le son pasados a <literal>delete()</literal>"
+#. Tag: para
+#: session_api.xml:994
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>merge()</literal>, all children are passed "
+"to <literal>merge()</literal>"
+msgstr ""
+"Si un padre le es pasado a <literal>merge()</literal>, todos los hijos le "
+"son pasados a <literal>merge()</literal>"
-#: index.docbook:1000
-msgid "If a parent is passed to <literal>save()</literal>, <literal>update()</literal> or <literal>saveOrUpdate()</literal>, all children are passed to <literal>saveOrUpdate()</literal>"
-msgstr "Si un hijo deja de ser referenciado por un padre persistente, <emphasis>no ocurre nada especial</emphasis> - la aplicación debe borrar explícitamente el hijo de ser necesario - a menos que <literal>cascade=\"delete-orphan\"</literal>, en cuyo caso el hijo \"huérfano\" es borrado."
+#. Tag: para
+#: session_api.xml:1000
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>save()</literal>, <literal>update()</"
+"literal> or <literal>saveOrUpdate()</literal>, all children are passed to "
+"<literal>saveOrUpdate()</literal>"
+msgstr ""
+"Si un padre le es pasado a <literal>save()</literal>, <literal>update()</"
+"literal> o <literal>saveOrUpdate()</literal>, todos los hijos le son pasados "
+"a <literal>saveOrUpdate()</literal>"
-#: index.docbook:1006
-msgid "If a transient or detached child becomes referenced by a persistent parent, it is passed to <literal>saveOrUpdate()</literal>"
-msgstr "Usando metadatos"
+#. Tag: para
+#: session_api.xml:1006
+#, no-c-format
+msgid ""
+"If a transient or detached child becomes referenced by a persistent parent, "
+"it is passed to <literal>saveOrUpdate()</literal>"
+msgstr ""
+"Si un hijo transitorio o separado se vuelve referenciado por un padre "
+"persistente, le es pasado a <literal>saveOrUpdate()</literal>"
-#: index.docbook:1012
-msgid "If a parent is deleted, all children are passed to <literal>delete()</literal>"
-msgstr "Hibernate requiere de un modelo de meta-nivel muy rico de todas las entidades y tipos de valor. De vez en cuando, este modelo es muy útil para la aplicación misma. Por ejemplo, la aplicación podría usar los metadatos de Hibernate para implementar un algoritmo \"inteligente\" de copia en profundidad que entienda qué objetos deben ser copiados (por ejemplo, tipo de valor mutables) y cuáles no (por ejemplo, tipos de valor inmutables y, posiblemente, entidades asociadas)."
+#. Tag: para
+#: session_api.xml:1012
+#, no-c-format
+msgid ""
+"If a parent is deleted, all children are passed to <literal>delete()</"
+"literal>"
+msgstr ""
+"Si un padre es borrado, todos los hijos le son pasados a <literal>delete()</"
+"literal>"
-#: index.docbook:1017
-msgid "If a child is dereferenced by a persistent parent, <emphasis>nothing special happens</emphasis> - the application should explicitly delete the child if necessary - unless <literal>cascade=\"delete-orphan\"</literal>, in which case the \"orphaned\" child is deleted."
-msgstr "Hibernate expone los metadatos vía las interfaces <literal>ClassMetadata</literal> y <literal>CollectionMetadata</literal> y la jerarquía <literal>Type</literal>. Las instancias de las interfaces de metadatos pueden obtenerse de <literal>SessionFactory</literal>."
+#. Tag: para
+#: session_api.xml:1017
+#, no-c-format
+msgid ""
+"If a child is dereferenced by a persistent parent, <emphasis>nothing special "
+"happens</emphasis> - the application should explicitly delete the child if "
+"necessary - unless <literal>cascade=\"delete-orphan\"</literal>, in which "
+"case the \"orphaned\" child is deleted."
+msgstr ""
+"Si un hijo deja de ser referenciado por un padre persistente, <emphasis>no "
+"ocurre nada especial</emphasis> - la aplicación debe borrar explícitamente "
+"el hijo de ser necesario - a menos que <literal>cascade=\"delete-orphan\"</"
+"literal>, en cuyo caso el hijo \"huérfano\" es borrado."
-#: index.docbook:1026
-msgid "Finally, note that cascading of operations can be applied to an object graph at <emphasis>call time</emphasis> or at <emphasis>flush time</emphasis>. All operations, if enabled, are cascaded to associated entities reachable when the operation is executed. However, <literal>save-upate</literal> and <literal>delete-orphan</literal> are transitive for all associated entities reachable during flush of the <literal>Session</literal>."
+#. Tag: para
+#: session_api.xml:1026
+#, no-c-format
+msgid ""
+"Finally, note that cascading of operations can be applied to an object graph "
+"at <emphasis>call time</emphasis> or at <emphasis>flush time</emphasis>. All "
+"operations, if enabled, are cascaded to associated entities reachable when "
+"the operation is executed. However, <literal>save-upate</literal> and "
+"<literal>delete-orphan</literal> are transitive for all associated entities "
+"reachable during flush of the <literal>Session</literal>."
msgstr ""
- "<![CDATA[Cat fritz = ......;\n"
- "ClassMetadata catMeta = sessionfactory.getClassMetadata(Cat.class);\n"
- "\n"
- "Object[] propertyValues = catMeta.getPropertyValues(fritz);\n"
- "String[] propertyNames = catMeta.getPropertyNames();\n"
- "Type[] propertyTypes = catMeta.getPropertyTypes();\n"
- "\n"
- "// get a Map of all properties which are not collections or associations\n"
- "Map namedValues = new HashMap();\n"
- "for ( int i=0; i<propertyNames.length; i++ ) {\n"
- " if ( !propertyTypes[i].isEntityType() && !propertyTypes[i].isCollectionType() ) {\n"
- " namedValues.put( propertyNames[i], propertyValues[i] );\n"
- " }\n"
- "}]]>"
+"UNTRANSLATED!!! Finally, note that cascading of operations can be applied to "
+"an object graph at <emphasis>call time</emphasis> or at <emphasis>flush "
+"time</emphasis>. All operations, if enabled, are cascaded to associated "
+"entities reachable when the operation is executed. However, <literal>save-"
+"upate</literal> and <literal>delete-orphan</literal> are transitive for all "
+"associated entities reachable during flush of the <literal>Session</literal>."
-#: index.docbook:1038
+#. Tag: title
+#: session_api.xml:1038
+#, no-c-format
msgid "Using metadata"
-msgstr ""
+msgstr "Usando metadatos"
-#: index.docbook:1040
-msgid "Hibernate requires a very rich meta-level model of all entity and value types. From time to time, this model is very useful to the application itself. For example, the application might use Hibernate's metadata to implement a \"smart\" deep-copy algorithm that understands which objects should be copied (eg. mutable value types) and which should not (eg. immutable value types and, possibly, associated entities)."
+#. Tag: para
+#: session_api.xml:1040
+#, no-c-format
+msgid ""
+"Hibernate requires a very rich meta-level model of all entity and value "
+"types. From time to time, this model is very useful to the application "
+"itself. For example, the application might use Hibernate's metadata to "
+"implement a \"smart\" deep-copy algorithm that understands which objects "
+"should be copied (eg. mutable value types) and which should not (eg. "
+"immutable value types and, possibly, associated entities)."
msgstr ""
+"Hibernate requiere de un modelo de meta-nivel muy rico de todas las "
+"entidades y tipos de valor. De vez en cuando, este modelo es muy útil para "
+"la aplicación misma. Por ejemplo, la aplicación podría usar los metadatos de "
+"Hibernate para implementar un algoritmo \"inteligente\" de copia en "
+"profundidad que entienda qué objetos deben ser copiados (por ejemplo, tipo "
+"de valor mutables) y cuáles no (por ejemplo, tipos de valor inmutables y, "
+"posiblemente, entidades asociadas)."
-#: index.docbook:1047
-msgid "Hibernate exposes metadata via the <literal>ClassMetadata</literal> and <literal>CollectionMetadata</literal> interfaces and the <literal>Type</literal> hierarchy. Instances of the metadata interfaces may be obtained from the <literal>SessionFactory</literal>."
+#. Tag: para
+#: session_api.xml:1047
+#, no-c-format
+msgid ""
+"Hibernate exposes metadata via the <literal>ClassMetadata</literal> and "
+"<literal>CollectionMetadata</literal> interfaces and the <literal>Type</"
+"literal> hierarchy. Instances of the metadata interfaces may be obtained "
+"from the <literal>SessionFactory</literal>."
msgstr ""
+"Hibernate expone los metadatos vía las interfaces <literal>ClassMetadata</"
+"literal> y <literal>CollectionMetadata</literal> y la jerarquía "
+"<literal>Type</literal>. Las instancias de las interfaces de metadatos "
+"pueden obtenerse de <literal>SessionFactory</literal>."
-#: index.docbook:1054
+#. Tag: programlisting
+#: session_api.xml:1054
+#, no-c-format
msgid ""
- "<![CDATA[Cat fritz = ......;\n"
- "ClassMetadata catMeta = sessionfactory.getClassMetadata(Cat.class);\n"
- "\n"
- "Object[] propertyValues = catMeta.getPropertyValues(fritz);\n"
- "String[] propertyNames = catMeta.getPropertyNames();\n"
- "Type[] propertyTypes = catMeta.getPropertyTypes();\n"
- "\n"
- "// get a Map of all properties which are not collections or associations\n"
- "Map namedValues = new HashMap();\n"
- "for ( int i=0; i<propertyNames.length; i++ ) {\n"
- " if ( !propertyTypes[i].isEntityType() && !propertyTypes[i].isCollectionType() ) {\n"
- " namedValues.put( propertyNames[i], propertyValues[i] );\n"
- " }\n"
- "}]]>"
+"<![CDATA[Cat fritz = ......;\n"
+"ClassMetadata catMeta = sessionfactory.getClassMetadata(Cat.class);\n"
+"\n"
+"Object[] propertyValues = catMeta.getPropertyValues(fritz);\n"
+"String[] propertyNames = catMeta.getPropertyNames();\n"
+"Type[] propertyTypes = catMeta.getPropertyTypes();\n"
+"\n"
+"// get a Map of all properties which are not collections or associations\n"
+"Map namedValues = new HashMap();\n"
+"for ( int i=0; i<propertyNames.length; i++ ) {\n"
+" if ( !propertyTypes[i].isEntityType() && !propertyTypes[i]."
+"isCollectionType() ) {\n"
+" namedValues.put( propertyNames[i], propertyValues[i] );\n"
+" }\n"
+"}]]>"
msgstr ""
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+#~ msgid "UPDATE"
+#~ msgstr "UPDATE"
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+#~ msgid "DELETE"
+#~ msgstr "DELETE"
+#~ msgid "state management"
+#~ msgstr "gestión de estado"
+
+#~ msgid "statements"
+#~ msgstr "sentencias"
+
+#~ msgid "Connection"
+#~ msgstr "Connection"
+
+#~ msgid "session.connection()"
+#~ msgstr "session.connection()"
Modified: core/trunk/documentation/manual/translations/es-ES/content/toolset_guide.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/toolset_guide.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/toolset_guide.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,725 +1,1180 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: toolset_guide.xml:5
+#, no-c-format
msgid "Toolset Guide"
-msgstr "Guía del Conjunto de Herramientas"
+msgstr "Guía del Conjunto de Herramientas"
-#: index.docbook:7
-msgid "Roundtrip engineering with Hibernate is possible using a set of Eclipse plugins, commandline tools, as well as Ant tasks."
-msgstr "La ingeniería de ida y vuelta con Hibernate es posible usando un conjunto de plugins de Eclipse, herramientas de línea de comandos, así como tareas de Ant."
+#. Tag: para
+#: toolset_guide.xml:7
+#, no-c-format
+msgid ""
+"Roundtrip engineering with Hibernate is possible using a set of Eclipse "
+"plugins, commandline tools, as well as Ant tasks."
+msgstr ""
+"La ingeniería de ida y vuelta con Hibernate es posible usando un conjunto de "
+"plugins de Eclipse, herramientas de línea de comandos, así como tareas de "
+"Ant."
-#: index.docbook:12
-msgid "The <emphasis>Hibernate Tools</emphasis> currently include plugins for the Eclipse IDE as well as Ant tasks for reverse engineering of existing databases:"
-msgstr "Las <emphasis>Herramientas de Hibernate</emphasis> actualmente incluyen plugins para la IDE de Eclipse así como tareas de Ant para la ingeniería inversa de bases de datos existentes:"
+#. Tag: para
+#: toolset_guide.xml:12
+#, no-c-format
+msgid ""
+"The <emphasis>Hibernate Tools</emphasis> currently include plugins for the "
+"Eclipse IDE as well as Ant tasks for reverse engineering of existing "
+"databases:"
+msgstr ""
+"Las <emphasis>Herramientas de Hibernate</emphasis> actualmente incluyen "
+"plugins para la IDE de Eclipse así como tareas de Ant para la ingeniería "
+"inversa de bases de datos existentes:"
-#: index.docbook:18
-msgid "<emphasis>Mapping Editor:</emphasis> An editor for Hibernate XML mapping files, supporting auto-completion and syntax highlighting. It also supports semantic auto-completion for class names and property/field names, making it much more versatile than a normal XML editor."
-msgstr "<emphasis>Editor de Mapeo:</emphasis> Un editor de ficheros de mapeo XML, que soporta autocompleción y resaltado de sintáxis. Soporta también autocompleción semántica de nombres de clases y nombres de campos/propiedades, haciéndolo mucho más versátil que un editor de XML normal."
+#. Tag: para
+#: toolset_guide.xml:18
+#, no-c-format
+msgid ""
+"<emphasis>Mapping Editor:</emphasis> An editor for Hibernate XML mapping "
+"files, supporting auto-completion and syntax highlighting. It also supports "
+"semantic auto-completion for class names and property/field names, making it "
+"much more versatile than a normal XML editor."
+msgstr ""
+"<emphasis>Editor de Mapeo:</emphasis> Un editor de ficheros de mapeo XML, "
+"que soporta autocompleción y resaltado de sintáxis. Soporta también "
+"autocompleción semántica de nombres de clases y nombres de campos/"
+"propiedades, haciéndolo mucho más versátil que un editor de XML normal."
-#: index.docbook:23
-msgid "<emphasis>Console:</emphasis> The console is a new view in Eclipse. In addition to a tree overview of your console configurations, you also get an interactive view of your persistent classes and their relationships. The console allows you to execute HQL queries against your database and browse the result directly in Eclipse."
-msgstr "<emphasis>Consola:</emphasis> La consola es una nueva vista en Eclipse. Además de la vista de árbol de tus configuraciones de consola, tienes también una vista interactiva de tus clases persistentes y sus relaciones. La console te permite ejecutar consultas HQL contra tu base de datos y navegar el resultado directamente en Eclipse."
+#. Tag: para
+#: toolset_guide.xml:23
+#, no-c-format
+msgid ""
+"<emphasis>Console:</emphasis> The console is a new view in Eclipse. In "
+"addition to a tree overview of your console configurations, you also get an "
+"interactive view of your persistent classes and their relationships. The "
+"console allows you to execute HQL queries against your database and browse "
+"the result directly in Eclipse."
+msgstr ""
+"<emphasis>Consola:</emphasis> La consola es una nueva vista en Eclipse. "
+"Además de la vista de árbol de tus configuraciones de consola, tienes "
+"también una vista interactiva de tus clases persistentes y sus relaciones. "
+"La console te permite ejecutar consultas HQL contra tu base de datos y "
+"navegar el resultado directamente en Eclipse."
-#: index.docbook:30
-msgid "<emphasis>Development Wizards:</emphasis> Several wizards are provided with the Hibernate Eclipse tools; you can use a wizard to quickly generate Hibernate configuration (cfg.xml) files, or you may even completely reverse engineer an existing database schema into POJO source files and Hibernate mapping files. The reverse engineering wizard supports customizable templates."
-msgstr "<emphasis>Asistentes de Desarrollo:</emphasis> Se proveen muchos asistentes con las herramientas de Eclipse. Puedes usar un asistente para generar rápidamente ficheros de configuración de Hibernate (cfg.xml), o incluso puedes haceruna ingeniería inversa completa de un esquema de base de datos existente en ficheros de código de POJO y ficheros de mapeo de Hibernate. El asistente de ingeniería inversa soporta plantillas personalizables."
+#. Tag: para
+#: toolset_guide.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Development Wizards:</emphasis> Several wizards are provided with "
+"the Hibernate Eclipse tools; you can use a wizard to quickly generate "
+"Hibernate configuration (cfg.xml) files, or you may even completely reverse "
+"engineer an existing database schema into POJO source files and Hibernate "
+"mapping files. The reverse engineering wizard supports customizable "
+"templates."
+msgstr ""
+"<emphasis>Asistentes de Desarrollo:</emphasis> Se proveen muchos asistentes "
+"con las herramientas de Eclipse. Puedes usar un asistente para generar "
+"rápidamente ficheros de configuración de Hibernate (cfg.xml), o incluso "
+"puedes haceruna ingeniería inversa completa de un esquema de base de datos "
+"existente en ficheros de código de POJO y ficheros de mapeo de Hibernate. El "
+"asistente de ingeniería inversa soporta plantillas personalizables."
-#: index.docbook:38
+#. Tag: emphasis
+#: toolset_guide.xml:38
+#, no-c-format
msgid "Ant Tasks:"
msgstr "Tareas de Ant:"
-#: index.docbook:43
-msgid "Please refer to the <emphasis>Hibernate Tools</emphasis> package and it's documentation for more information."
-msgstr "Por favor refiérete al paquete <emphasis>Herramientas de Hibernate</emphasis> y su documentación para más información."
+#. Tag: para
+#: toolset_guide.xml:43
+#, no-c-format
+msgid ""
+"Please refer to the <emphasis>Hibernate Tools</emphasis> package and it's "
+"documentation for more information."
+msgstr ""
+"Por favor refiérete al paquete <emphasis>Herramientas de Hibernate</"
+"emphasis> y su documentación para más información."
-#: index.docbook:48
-msgid "However, the Hibernate main package comes bundled with an integrated tool (it can even be used from \"inside\" Hibernate on-the-fly): <emphasis>SchemaExport</emphasis> aka <literal>hbm2ddl</literal>."
-msgstr "Sin embargo, el paquete principal de Hibernate viene incluyendo una herramienta integrada (puede ser usada incluso \"dentro\" de Hibernate on-the-fly): <emphasis>SchemaExport</emphasis> también conocido como <literal>hbm2ddl</literal>."
+#. Tag: para
+#: toolset_guide.xml:48
+#, no-c-format
+msgid ""
+"However, the Hibernate main package comes bundled with an integrated tool "
+"(it can even be used from \"inside\" Hibernate on-the-fly): "
+"<emphasis>SchemaExport</emphasis> aka <literal>hbm2ddl</literal>."
+msgstr ""
+"Sin embargo, el paquete principal de Hibernate viene incluyendo una "
+"herramienta integrada (puede ser usada incluso \"dentro\" de Hibernate on-"
+"the-fly): <emphasis>SchemaExport</emphasis> también conocido como "
+"<literal>hbm2ddl</literal>."
-#: index.docbook:55
+#. Tag: title
+#: toolset_guide.xml:55
+#, no-c-format
msgid "Automatic schema generation"
-msgstr "Generación automática de esquemas"
+msgstr "Generación automática de esquemas"
-#: index.docbook:57
-msgid "DDL may be generated from your mapping files by a Hibernate utility. The generated schema includes referential integrity constraints (primary and foreign keys) for entity and collection tables. Tables and sequences are also created for mapped identifier generators."
-msgstr "Una utilidad de Hibernate puede generar DDL desde tus ficheros de mapeo. El esquema generado incluye restricciones de integridad referencial (claves primarias y foráneas) para las tablas de entidades y colecciones. Las tablas y secuencias también son creadas para los generadores de identificadores mapeados."
+#. Tag: para
+#: toolset_guide.xml:57
+#, no-c-format
+msgid ""
+"DDL may be generated from your mapping files by a Hibernate utility. The "
+"generated schema includes referential integrity constraints (primary and "
+"foreign keys) for entity and collection tables. Tables and sequences are "
+"also created for mapped identifier generators."
+msgstr ""
+"Una utilidad de Hibernate puede generar DDL desde tus ficheros de mapeo. El "
+"esquema generado incluye restricciones de integridad referencial (claves "
+"primarias y foráneas) para las tablas de entidades y colecciones. Las tablas "
+"y secuencias también son creadas para los generadores de identificadores "
+"mapeados."
-#: index.docbook:64
-msgid "You <emphasis>must</emphasis> specify a SQL <literal>Dialect</literal> via the <literal>hibernate.dialect</literal> property when using this tool, as DDL is highly vendor specific."
-msgstr "<emphasis>Debes</emphasis> especificar un <literal>Dialecto</literal> SQL vía la propiedad <literal>hibernate.dialect</literal> al usar esta herramienta, ya que el DDL es altamente específico del vendedor."
+#. Tag: para
+#: toolset_guide.xml:64
+#, no-c-format
+msgid ""
+"You <emphasis>must</emphasis> specify a SQL <literal>Dialect</literal> via "
+"the <literal>hibernate.dialect</literal> property when using this tool, as "
+"DDL is highly vendor specific."
+msgstr ""
+"<emphasis>Debes</emphasis> especificar un <literal>Dialecto</literal> SQL "
+"vía la propiedad <literal>hibernate.dialect</literal> al usar esta "
+"herramienta, ya que el DDL es altamente específico del vendedor."
-#: index.docbook:70
+#. Tag: para
+#: toolset_guide.xml:70
+#, no-c-format
msgid "First, customize your mapping files to improve the generated schema."
msgstr "First, customize your mapping files to improve the generated schema."
-#: index.docbook:75
+#. Tag: title
+#: toolset_guide.xml:75
+#, no-c-format
msgid "Customizing the schema"
msgstr "Personalizando el esquema"
-#: index.docbook:77
-msgid "Many Hibernate mapping elements define optional attributes named <literal>length</literal>, <literal>precision</literal> and <literal>scale</literal>. You may set the length, precision and scale of a column with this attribute."
-msgstr "Muchos elementos de mapeo de Hibernate definen un atributo opcional llamado <literal>length</literal>. Con este atributo puedes establecer el tamaño de una columna. (O, para tipos de datos numéricos/decimales, la precisión.)"
+#. Tag: para
+#: toolset_guide.xml:77
+#, no-c-format
+msgid ""
+"Many Hibernate mapping elements define optional attributes named "
+"<literal>length</literal>, <literal>precision</literal> and <literal>scale</"
+"literal>. You may set the length, precision and scale of a column with this "
+"attribute."
+msgstr ""
+"Muchos elementos de mapeo de Hibernate definen un atributo opcional llamado "
+"<literal>length</literal>. Con este atributo puedes establecer el tamaño de "
+"una columna. (O, para tipos de datos numéricos/decimales, la precisión.)"
-#: index.docbook:84
+#. Tag: programlisting
+#: toolset_guide.xml:84
+#, no-c-format
msgid "<![CDATA[<property name=\"zip\" length=\"5\"/>]]>"
-msgstr "Algunas etiquetas también aceptan un atributo <literal>not-null</literal> (para generar una restricción <literal>NOT NULL</literal> en columnas de tablas) y y un atributo <literal>unique</literal> (para generar restricciones <literal>UNIQUE</literal> en columnas de tablas)."
+msgstr ""
-#: index.docbook:85
+#. Tag: programlisting
+#: toolset_guide.xml:85
+#, no-c-format
msgid "<![CDATA[<property name=\"balance\" precision=\"12\" scale=\"2\"/>]]>"
-msgstr "Algunas etiquetas aceptan un atributo <literal>index</literal> para especificar el nombre de un índice para esa columna. Se puede usar un atributo <literal>unique-key</literal> para agrupar columnas en una restricción de clave de una sola unidad. Actualmente, el valor especificado del atributo <literal>unique-key</literal> <emphasis>no</emphasis> es usado para nombrar la restricción, sólo para agrupar las columnas en el fichero de mapeo."
+msgstr ""
-#: index.docbook:87
-msgid "Some tags also accept a <literal>not-null</literal> attribute (for generating a <literal>NOT NULL</literal> constraint on table columns) and a <literal>unique</literal> attribute (for generating <literal>UNIQUE</literal> constraint on table columns)."
-msgstr "Ejemplos:"
+#. Tag: para
+#: toolset_guide.xml:87
+#, no-c-format
+msgid ""
+"Some tags also accept a <literal>not-null</literal> attribute (for "
+"generating a <literal>NOT NULL</literal> constraint on table columns) and a "
+"<literal>unique</literal> attribute (for generating <literal>UNIQUE</"
+"literal> constraint on table columns)."
+msgstr ""
+"Algunas etiquetas también aceptan un atributo <literal>not-null</literal> "
+"(para generar una restricción <literal>NOT NULL</literal> en columnas de "
+"tablas) y y un atributo <literal>unique</literal> (para generar "
+"restricciones <literal>UNIQUE</literal> en columnas de tablas)."
-#: index.docbook:93
-msgid "<![CDATA[<many-to-one name=\"bar\" column=\"barId\" not-null=\"true\"/>]]>"
+#. Tag: programlisting
+#: toolset_guide.xml:93
+#, no-c-format
+msgid ""
+"<![CDATA[<many-to-one name=\"bar\" column=\"barId\" not-null=\"true\"/>]]>"
msgstr ""
- "<![CDATA[<property name=\"foo\" type=\"string\" length=\"64\" not-null=\"true\"/>\n"
- "\n"
- "<many-to-one name=\"bar\" foreign-key=\"fk_foo_bar\" not-null=\"true\"/>\n"
- "\n"
- "<element column=\"serial_number\" type=\"long\" not-null=\"true\" unique=\"true\"/>]]>"
-#: index.docbook:95
-msgid "<![CDATA[<element column=\"serialNumber\" type=\"long\" not-null=\"true\" unique=\"true\"/>]]>"
-msgstr "Alternativamente, estos elementos aceptan tambíen un elemento hijo <literal><column></literal>. Esto es particularmente útil para tipos multicolumnas:"
+#. Tag: programlisting
+#: toolset_guide.xml:95
+#, no-c-format
+msgid ""
+"<![CDATA[<element column=\"serialNumber\" type=\"long\" not-null=\"true\" "
+"unique=\"true\"/>]]>"
+msgstr ""
-#: index.docbook:97
-msgid "A <literal>unique-key</literal> attribute may be used to group columns in a single unique key constraint. Currently, the specified value of the <literal>unique-key</literal> attribute is <emphasis>not</emphasis> used to name the constraint in the generated DDL, only to group the columns in the mapping file."
+#. Tag: para
+#: toolset_guide.xml:97
+#, no-c-format
+msgid ""
+"A <literal>unique-key</literal> attribute may be used to group columns in a "
+"single unique key constraint. Currently, the specified value of the "
+"<literal>unique-key</literal> attribute is <emphasis>not</emphasis> used to "
+"name the constraint in the generated DDL, only to group the columns in the "
+"mapping file."
msgstr ""
- "<![CDATA[<property name=\"foo\" type=\"string\">\n"
- " <column name=\"foo\" length=\"64\" not-null=\"true\" sql-type=\"text\"/>\n"
- "</property>]]>"
+"A <literal>unique-key</literal> attribute may be used to group columns in a "
+"single unique key constraint. Currently, the specified value of the "
+"<literal>unique-key</literal> attribute is <emphasis>not</emphasis> used to "
+"name the constraint in the generated DDL, only to group the columns in the "
+"mapping file."
-#: index.docbook:105
+#. Tag: programlisting
+#: toolset_guide.xml:105
+#, no-c-format
msgid ""
- "<![CDATA[<many-to-one name=\"org\" column=\"orgId\" unique-key=\"OrgEmployeeId\"/>\n"
- "<property name=\"employeeId\" unique-key=\"OrgEmployee\"/>]]>"
+"<![CDATA[<many-to-one name=\"org\" column=\"orgId\" unique-key="
+"\"OrgEmployeeId\"/>\n"
+"<property name=\"employeeId\" unique-key=\"OrgEmployee\"/>]]>"
msgstr ""
- "<![CDATA[<property name=\"bar\" type=\"my.customtypes.MultiColumnType\"/>\n"
- " <column name=\"fee\" not-null=\"true\" index=\"bar_idx\"/>\n"
- " <column name=\"fi\" not-null=\"true\" index=\"bar_idx\"/>\n"
- " <column name=\"fo\" not-null=\"true\" index=\"bar_idx\"/>\n"
- "</property>]]>"
-#: index.docbook:107
-msgid "An <literal>index</literal> attribute specifies the name of an index that will be created using the mapped column or columns. Multiple columns may be grouped into the same index, simply by specifying the same index name."
-msgstr "El atributo <literal>sql-type</literal> permite al usuario sobrescribir el mapeo por defecto de tipo Hibernate a tipo de datos SQL."
+#. Tag: para
+#: toolset_guide.xml:107
+#, no-c-format
+msgid ""
+"An <literal>index</literal> attribute specifies the name of an index that "
+"will be created using the mapped column or columns. Multiple columns may be "
+"grouped into the same index, simply by specifying the same index name."
+msgstr ""
+"An <literal>index</literal> attribute specifies the name of an index that "
+"will be created using the mapped column or columns. Multiple columns may be "
+"grouped into the same index, simply by specifying the same index name."
-#: index.docbook:113
+#. Tag: programlisting
+#: toolset_guide.xml:113
+#, no-c-format
msgid ""
- "<![CDATA[<property name=\"lastName\" index=\"CustName\"/>\n"
- "<property name=\"firstName\" index=\"CustName\"/>]]>"
-msgstr "El atributo <literal>check</literal> te permite especificar una comprobación de restricción."
+"<![CDATA[<property name=\"lastName\" index=\"CustName\"/>\n"
+"<property name=\"firstName\" index=\"CustName\"/>]]>"
+msgstr ""
-#: index.docbook:115
-msgid "A <literal>foreign-key</literal> attribute may be used to override the name of any generated foreign key constraint."
+#. Tag: para
+#: toolset_guide.xml:115
+#, no-c-format
+msgid ""
+"A <literal>foreign-key</literal> attribute may be used to override the name "
+"of any generated foreign key constraint."
msgstr ""
- "<![CDATA[<property name=\"foo\" type=\"integer\">\n"
- " <column name=\"foo\" check=\"foo > 10\"/>\n"
- "</property>]]>"
+"A <literal>foreign-key</literal> attribute may be used to override the name "
+"of any generated foreign key constraint."
-#: index.docbook:120
-msgid "<![CDATA[<many-to-one name=\"bar\" column=\"barId\" foreign-key=\"FKFooBar\"/>]]>"
+#. Tag: programlisting
+#: toolset_guide.xml:120
+#, no-c-format
+msgid ""
+"<![CDATA[<many-to-one name=\"bar\" column=\"barId\" foreign-key=\"FKFooBar\"/"
+">]]>"
msgstr ""
- "<![CDATA[<class name=\"Foo\" table=\"foos\" check=\"bar < 100.0\">\n"
- " ...\n"
- " <property name=\"bar\" type=\"float\"/>\n"
- "</class>]]>"
-#: index.docbook:122
-msgid "Many mapping elements also accept a child <literal><column></literal> element. This is particularly useful for mapping multi-column types:"
-msgstr "Resumen"
+#. Tag: para
+#: toolset_guide.xml:122
+#, no-c-format
+msgid ""
+"Many mapping elements also accept a child <literal><column></literal> "
+"element. This is particularly useful for mapping multi-column types:"
+msgstr ""
+"Many mapping elements also accept a child <literal><column></literal> "
+"element. This is particularly useful for mapping multi-column types:"
-#: index.docbook:127
+#. Tag: programlisting
+#: toolset_guide.xml:127
+#, no-c-format
msgid ""
- "<![CDATA[<property name=\"name\" type=\"my.customtypes.Name\"/>\n"
- " <column name=\"last\" not-null=\"true\" index=\"bar_idx\" length=\"30\"/>\n"
- " <column name=\"first\" not-null=\"true\" index=\"bar_idx\" length=\"20\"/>\n"
- " <column name=\"initial\"/>\n"
- "</property>]]>"
-msgstr "Atributo"
+"<![CDATA[<property name=\"name\" type=\"my.customtypes.Name\"/>\n"
+" <column name=\"last\" not-null=\"true\" index=\"bar_idx\" length=\"30\"/"
+">\n"
+" <column name=\"first\" not-null=\"true\" index=\"bar_idx\" length=\"20\"/"
+">\n"
+" <column name=\"initial\"/>\n"
+"</property>]]>"
+msgstr ""
-#: index.docbook:129
-msgid "The <literal>default</literal> attribute lets you specify a default value for a column (you should assign the same value to the mapped property before saving a new instance of the mapped class)."
-msgstr "Valores"
+#. Tag: para
+#: toolset_guide.xml:129
+#, no-c-format
+msgid ""
+"The <literal>default</literal> attribute lets you specify a default value "
+"for a column (you should assign the same value to the mapped property before "
+"saving a new instance of the mapped class)."
+msgstr ""
+"The <literal>default</literal> attribute lets you specify a default value "
+"for a column (you should assign the same value to the mapped property before "
+"saving a new instance of the mapped class)."
-#: index.docbook:135
+#. Tag: programlisting
+#: toolset_guide.xml:135
+#, no-c-format
msgid ""
- "<![CDATA[<property name=\"credits\" type=\"integer\" insert=\"false\">\n"
- " <column name=\"credits\" default=\"10\"/>\n"
- "</property>]]>"
-msgstr "Interpretación"
+"<![CDATA[<property name=\"credits\" type=\"integer\" insert=\"false\">\n"
+" <column name=\"credits\" default=\"10\"/>\n"
+"</property>]]>"
+msgstr ""
-#: index.docbook:137
+#. Tag: programlisting
+#: toolset_guide.xml:137
+#, no-c-format
msgid ""
- "<![CDATA[<version name=\"version\" type=\"integer\" insert=\"false\">\n"
- " <column name=\"version\" default=\"0\"/>\n"
- "</property>]]>"
-msgstr "length"
+"<![CDATA[<version name=\"version\" type=\"integer\" insert=\"false\">\n"
+" <column name=\"version\" default=\"0\"/>\n"
+"</property>]]>"
+msgstr ""
-#: index.docbook:139
-msgid "The <literal>sql-type</literal> attribute allows the user to override the default mapping of a Hibernate type to SQL datatype."
-msgstr "number"
+#. Tag: para
+#: toolset_guide.xml:139
+#, no-c-format
+msgid ""
+"The <literal>sql-type</literal> attribute allows the user to override the "
+"default mapping of a Hibernate type to SQL datatype."
+msgstr ""
+"El atributo <literal>sql-type</literal> permite al usuario sobrescribir el "
+"mapeo por defecto de tipo Hibernate a tipo de datos SQL."
-#: index.docbook:144
+#. Tag: programlisting
+#: toolset_guide.xml:144
+#, no-c-format
msgid ""
- "<![CDATA[<property name=\"balance\" type=\"float\">\n"
- " <column name=\"balance\" sql-type=\"decimal(13,3)\"/>\n"
- "</property>]]>"
-msgstr "largo de columna/precisión decimal"
+"<![CDATA[<property name=\"balance\" type=\"float\">\n"
+" <column name=\"balance\" sql-type=\"decimal(13,3)\"/>\n"
+"</property>]]>"
+msgstr ""
-#: index.docbook:146
-msgid "The <literal>check</literal> attribute allows you to specify a check constraint."
-msgstr "not-null"
+#. Tag: para
+#: toolset_guide.xml:146
+#, no-c-format
+msgid ""
+"The <literal>check</literal> attribute allows you to specify a check "
+"constraint."
+msgstr ""
+"El atributo <literal>check</literal> te permite especificar una comprobación "
+"de restricción."
-#: index.docbook:150
+#. Tag: programlisting
+#: toolset_guide.xml:150
+#, no-c-format
msgid ""
- "<![CDATA[<property name=\"foo\" type=\"integer\">\n"
- " <column name=\"foo\" check=\"foo > 10\"/>\n"
- "</property>]]>"
-msgstr "true|false"
+"<![CDATA[<property name=\"foo\" type=\"integer\">\n"
+" <column name=\"foo\" check=\"foo > 10\"/>\n"
+"</property>]]>"
+msgstr ""
-#: index.docbook:152
+#. Tag: programlisting
+#: toolset_guide.xml:152
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Foo\" table=\"foos\" check=\"bar < 100.0\">\n"
- " ...\n"
- " <property name=\"bar\" type=\"float\"/>\n"
- "</class>]]>"
-msgstr "especifica que la columna debe ser no nulable"
+"<![CDATA[<class name=\"Foo\" table=\"foos\" check=\"bar < 100.0\">\n"
+" ...\n"
+" <property name=\"bar\" type=\"float\"/>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:156
+#. Tag: title
+#: toolset_guide.xml:156
+#, no-c-format
msgid "Summary"
-msgstr "unique"
+msgstr "Resumen"
-#: index.docbook:163
+#. Tag: entry
+#: toolset_guide.xml:163
+#, no-c-format
msgid "Attribute"
-msgstr "true|false"
+msgstr "Atributo"
-#: index.docbook:164
+#. Tag: entry
+#: toolset_guide.xml:164
+#, no-c-format
msgid "Values"
-msgstr "especifica que la columna debe tener una restricción de unicidad"
+msgstr "Valores"
-#: index.docbook:165
+#. Tag: entry
+#: toolset_guide.xml:165
+#, no-c-format
msgid "Interpretation"
-msgstr "index"
+msgstr "Interpretación"
-#: index.docbook:170
+#. Tag: literal
+#: toolset_guide.xml:170
+#, no-c-format
msgid "length"
-msgstr "index_name"
+msgstr "length"
-#: index.docbook:171, index.docbook:176, index.docbook:181
+#. Tag: entry
+#: toolset_guide.xml:171 toolset_guide.xml:176 toolset_guide.xml:181
+#, no-c-format
msgid "number"
-msgstr "especifica el nombre de un índice (multicolumna)"
+msgstr "number"
-#: index.docbook:172
+#. Tag: entry
+#: toolset_guide.xml:172
+#, no-c-format
msgid "column length"
-msgstr "unique-key"
+msgstr "largo de columna/precisión decimal"
-#: index.docbook:175
+#. Tag: literal
+#: toolset_guide.xml:175
+#, no-c-format
msgid "precision"
-msgstr "unique_key_name"
+msgstr "precision"
-#: index.docbook:177
+#. Tag: entry
+#: toolset_guide.xml:177
+#, no-c-format
msgid "column decimal precision"
-msgstr "foreign-key"
+msgstr "column decimal precision"
-#: index.docbook:180
+#. Tag: literal
+#: toolset_guide.xml:180
+#, no-c-format
msgid "scale"
-msgstr "foreign_key_name"
+msgstr "scale"
-#: index.docbook:182
+#. Tag: entry
+#: toolset_guide.xml:182
+#, no-c-format
msgid "column decimal scale"
-msgstr "sql-type"
+msgstr "column decimal scale"
-#: index.docbook:185
+#. Tag: literal
+#: toolset_guide.xml:185
+#, no-c-format
msgid "not-null"
-msgstr "column_type"
+msgstr "not-null"
-#: index.docbook:186, index.docbook:191
+#. Tag: literal
+#: toolset_guide.xml:186 toolset_guide.xml:191
+#, no-c-format
msgid "true|false"
-msgstr "sobrescribe el tipo de columna por defecto (sólo atributo del elemento <literal><column></literal>)"
+msgstr "true|false"
-#: index.docbook:187
+#. Tag: entry
+#: toolset_guide.xml:187
+#, no-c-format
msgid "specfies that the column should be non-nullable"
-msgstr "check"
+msgstr "especifica que la columna debe ser no nulable"
-#: index.docbook:190
+#. Tag: literal
+#: toolset_guide.xml:190
+#, no-c-format
msgid "unique"
-msgstr "expresión SQL"
+msgstr "unique"
-#: index.docbook:192
+#. Tag: entry
+#: toolset_guide.xml:192
+#, no-c-format
msgid "specifies that the column should have a unique constraint"
-msgstr "El elemento <literal><comment></literal> te permite especificar un comentario para el esquema generado."
+msgstr "especifica que la columna debe tener una restricción de unicidad"
-#: index.docbook:195
+#. Tag: literal
+#: toolset_guide.xml:195
+#, no-c-format
msgid "index"
-msgstr ""
- "<![CDATA[<class name=\"Customer\" table=\"CurCust\">\n"
- " <comment>Current customers only</comment>\n"
- " ...\n"
- "</class>]]>"
+msgstr "index"
-#: index.docbook:196
+#. Tag: literal
+#: toolset_guide.xml:196
+#, no-c-format
msgid "index_name"
-msgstr ""
- "<![CDATA[<property name=\"balance\">\n"
- " <column name=\"bal\">\n"
- " <comment>Balance in USD</comment>\n"
- " </column>\n"
- "</property>]]>"
+msgstr "index_name"
-#: index.docbook:197
+#. Tag: entry
+#: toolset_guide.xml:197
+#, no-c-format
msgid "specifies the name of a (multi-column) index"
-msgstr "Esto resulta en una sentencia <literal>comment on table</literal> o <literal>comment on column</literal> en el DDL generado (donde esté soportado)."
+msgstr "especifica el nombre de un índice (multicolumna)"
-#: index.docbook:200
+#. Tag: literal
+#: toolset_guide.xml:200
+#, no-c-format
msgid "unique-key"
-msgstr "Ejecutando la herramienta"
+msgstr "unique-key"
-#: index.docbook:201
+#. Tag: literal
+#: toolset_guide.xml:201
+#, no-c-format
msgid "unique_key_name"
-msgstr "La herramienta <literal>SchemaExport</literal> escribe un guión DDL a la salida estándar y/o ejecuta las sentencias DDL."
+msgstr "unique_key_name"
-#: index.docbook:202
+#. Tag: entry
+#: toolset_guide.xml:202
+#, no-c-format
msgid "specifies the name of a multi-column unique constraint"
-msgstr "<literal>java -cp </literal><emphasis>classpaths_de_hibernate</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>opciones ficheros_de_mapeo</emphasis>"
+msgstr "especifica el nombre de una restricción de unicidad multicolumna"
-#: index.docbook:205
+#. Tag: literal
+#: toolset_guide.xml:205
+#, no-c-format
msgid "foreign-key"
-msgstr "Opciones de Línea de Comandos de <literal>SchemaExport</literal>"
+msgstr "foreign-key"
-#: index.docbook:206
+#. Tag: literal
+#: toolset_guide.xml:206
+#, no-c-format
msgid "foreign_key_name"
-msgstr "Opción"
+msgstr "foreign_key_name"
-#: index.docbook:207
-msgid "specifies the name of the foreign key constraint generated for an association, for a <literal><one-to-one></literal>, <literal><many-to-one></literal>, <literal><key></literal>, or <literal><many-to-many></literal> mapping element. Note that <literal>inverse=\"true\"</literal> sides will not be considered by <literal>SchemaExport</literal>."
-msgstr "Descripción"
+#. Tag: entry
+#: toolset_guide.xml:207
+#, fuzzy, no-c-format
+msgid ""
+"specifies the name of the foreign key constraint generated for an "
+"association, for a <literal><one-to-one></literal>, <literal><many-"
+"to-one></literal>, <literal><key></literal>, or <literal><many-"
+"to-many></literal> mapping element. Note that <literal>inverse=\"true\"</"
+"literal> sides will not be considered by <literal>SchemaExport</literal>."
+msgstr ""
+"especifica el nombre de la restricción de clave foránea generada por una "
+"asociación, úsalo e <placeholder-1/>, <placeholder-2/>, <placeholder-3/>, or "
+"<placeholder-4/> . Nota que los lados <placeholder-5/> no serán considerados "
+"por <placeholder-6/>."
-#: index.docbook:217
+#. Tag: literal
+#: toolset_guide.xml:217
+#, no-c-format
msgid "sql-type"
-msgstr "--quiet"
+msgstr "sql-type"
-#: index.docbook:218
+#. Tag: literal
+#: toolset_guide.xml:218
+#, no-c-format
msgid "SQL column type"
-msgstr "no enviar a salida estándar el guión"
+msgstr "column_type"
-#: index.docbook:219
-msgid "overrides the default column type (attribute of <literal><column></literal> element only)"
-msgstr "--drop"
+#. Tag: entry
+#: toolset_guide.xml:219
+#, fuzzy, no-c-format
+msgid ""
+"overrides the default column type (attribute of <literal><column></"
+"literal> element only)"
+msgstr ""
+"sobrescribe el tipo de columna por defecto (sólo atributo del elemento "
+"<placeholder-1/>)"
-#: index.docbook:225
+#. Tag: literal
+#: toolset_guide.xml:225
+#, no-c-format
msgid "default"
-msgstr "sólo desechar las tablas"
+msgstr "default"
-#: index.docbook:226, index.docbook:233
+#. Tag: entry
+#: toolset_guide.xml:226 toolset_guide.xml:233
+#, fuzzy, no-c-format
msgid "SQL expression"
-msgstr "--text"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"SQL expression\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"expresión SQL"
-#: index.docbook:227
+#. Tag: entry
+#: toolset_guide.xml:227
+#, no-c-format
msgid "specify a default value for the column"
-msgstr "no exportar a la base de datos"
+msgstr "specify a default value for the column"
-#: index.docbook:232
+#. Tag: literal
+#: toolset_guide.xml:232
+#, no-c-format
msgid "check"
-msgstr "--output=my_schema.ddl"
+msgstr "check"
-#: index.docbook:234
+#. Tag: entry
+#: toolset_guide.xml:234
+#, no-c-format
msgid "create an SQL check constraint on either column or table"
-msgstr "--config=hibernate.cfg.xml"
+msgstr "crea una restricción de comprobación SQL en columna o tabla"
-#: index.docbook:242
-msgid "The <literal><comment></literal> element allows you to specify comments for the generated schema."
-msgstr "lee la configuración de Hibernate de un fichero XML"
+#. Tag: para
+#: toolset_guide.xml:242
+#, no-c-format
+msgid ""
+"The <literal><comment></literal> element allows you to specify "
+"comments for the generated schema."
+msgstr ""
+"El elemento <literal><comment></literal> te permite especificar un "
+"comentario para el esquema generado."
-#: index.docbook:247
+#. Tag: programlisting
+#: toolset_guide.xml:247
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Customer\" table=\"CurCust\">\n"
- " <comment>Current customers only</comment>\n"
- " ...\n"
- "</class>]]>"
-msgstr "--properties=hibernate.properties"
+"<![CDATA[<class name=\"Customer\" table=\"CurCust\">\n"
+" <comment>Current customers only</comment>\n"
+" ...\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:249
+#. Tag: programlisting
+#: toolset_guide.xml:249
+#, no-c-format
msgid ""
- "<![CDATA[<property name=\"balance\">\n"
- " <column name=\"bal\">\n"
- " <comment>Balance in USD</comment>\n"
- " </column>\n"
- "</property>]]>"
-msgstr "lee las propiedades de base de datos de un fichero"
+"<![CDATA[<property name=\"balance\">\n"
+" <column name=\"bal\">\n"
+" <comment>Balance in USD</comment>\n"
+" </column>\n"
+"</property>]]>"
+msgstr ""
-#: index.docbook:251
-msgid "This results in a <literal>comment on table</literal> or <literal>comment on column</literal> statement in the generated DDL (where supported)."
-msgstr "--format"
+#. Tag: para
+#: toolset_guide.xml:251
+#, no-c-format
+msgid ""
+"This results in a <literal>comment on table</literal> or <literal>comment on "
+"column</literal> statement in the generated DDL (where supported)."
+msgstr ""
+"Esto resulta en una sentencia <literal>comment on table</literal> o "
+"<literal>comment on column</literal> en el DDL generado (donde esté "
+"soportado)."
-#: index.docbook:260
+#. Tag: title
+#: toolset_guide.xml:260
+#, no-c-format
msgid "Running the tool"
-msgstr "formatea agradablemente el SQL generado en el guión"
+msgstr "Ejecutando la herramienta"
-#: index.docbook:262
-msgid "The <literal>SchemaExport</literal> tool writes a DDL script to standard out and/or executes the DDL statements."
-msgstr "--delimiter=x"
+#. Tag: para
+#: toolset_guide.xml:262
+#, no-c-format
+msgid ""
+"The <literal>SchemaExport</literal> tool writes a DDL script to standard out "
+"and/or executes the DDL statements."
+msgstr ""
+"La herramienta <literal>SchemaExport</literal> escribe un guión DDL a la "
+"salida estándar y/o ejecuta las sentencias DDL."
-#: index.docbook:267
-msgid "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options mapping_files</emphasis>"
-msgstr "establece un delimitador de fin de línea para el guión"
+#. Tag: para
+#: toolset_guide.xml:267
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options "
+"mapping_files</emphasis>"
+msgstr ""
-#: index.docbook:273
+#. Tag: title
+#: toolset_guide.xml:273
+#, no-c-format
msgid "<literal>SchemaExport</literal> Command Line Options"
-msgstr "Puedes incluso encajar <literal>SchemaExport</literal> en tu aplicación:"
+msgstr "Opciones de Línea de Comandos de <literal>SchemaExport</literal>"
-#: index.docbook:279, index.docbook:429, index.docbook:498
+#. Tag: entry
+#: toolset_guide.xml:279 toolset_guide.xml:429 toolset_guide.xml:498
+#, no-c-format
msgid "Option"
-msgstr ""
- "<![CDATA[Configuration cfg = ....;\n"
- "new SchemaExport(cfg).create(false, true);]]>"
+msgstr "Opción"
-#: index.docbook:280, index.docbook:367, index.docbook:430, index.docbook:499
+#. Tag: entry
+#: toolset_guide.xml:280 toolset_guide.xml:367 toolset_guide.xml:430
+#: toolset_guide.xml:499
+#, no-c-format
msgid "Description"
-msgstr "Propiedades"
+msgstr "Descripción"
-#: index.docbook:285, index.docbook:435
+#. Tag: literal
+#: toolset_guide.xml:285 toolset_guide.xml:435
+#, no-c-format
msgid "--quiet"
-msgstr "Las propiedades de base de datos pueden especificarse"
+msgstr "--quiet"
-#: index.docbook:286, index.docbook:436
+#. Tag: entry
+#: toolset_guide.xml:286 toolset_guide.xml:436
+#, no-c-format
msgid "don't output the script to stdout"
-msgstr "como propiedades de sistema con <literal>-D</literal><emphasis><property></emphasis>"
+msgstr "no enviar a salida estándar el guión"
-#: index.docbook:289
+#. Tag: literal
+#: toolset_guide.xml:289
+#, no-c-format
msgid "--drop"
-msgstr "en <literal>hibernate.properties</literal>"
+msgstr "--drop"
-#: index.docbook:290
+#. Tag: entry
+#: toolset_guide.xml:290
+#, no-c-format
msgid "only drop the tables"
-msgstr "en un fichero de propiedades mencionado con <literal>--properties</literal>"
+msgstr "sólo desechar las tablas"
-#: index.docbook:293
+#. Tag: literal
+#: toolset_guide.xml:293
+#, no-c-format
msgid "--create"
-msgstr "Las propiedades necesarias son:"
+msgstr "--create"
-#: index.docbook:294
+#. Tag: entry
+#: toolset_guide.xml:294
+#, no-c-format
msgid "only create the tables"
-msgstr "Propiedades de Conexión de SchemaExport"
+msgstr "only create the tables"
-#: index.docbook:297, index.docbook:439
+#. Tag: literal
+#: toolset_guide.xml:297 toolset_guide.xml:439
+#, no-c-format
msgid "--text"
-msgstr "Nombre de Propiedad"
+msgstr "--text"
-#: index.docbook:298
+#. Tag: entry
+#: toolset_guide.xml:298
+#, no-c-format
msgid "don't export to the database"
-msgstr "Descripción"
+msgstr "no exportar a la base de datos"
-#: index.docbook:301
+#. Tag: literal
+#: toolset_guide.xml:301
+#, no-c-format
msgid "--output=my_schema.ddl"
-msgstr "hibernate.connection.driver_class"
+msgstr "--output=my_schema.ddl"
-#: index.docbook:302
+#. Tag: entry
+#: toolset_guide.xml:302
+#, no-c-format
msgid "output the ddl script to a file"
-msgstr "clase del driver jdbc"
+msgstr "enviar la salida del guión ddl a un fichero"
-#: index.docbook:305, index.docbook:443, index.docbook:504
+#. Tag: literal
+#: toolset_guide.xml:305 toolset_guide.xml:443 toolset_guide.xml:504
+#, no-c-format
msgid "--naming=eg.MyNamingStrategy"
-msgstr "hibernate.connection.url"
+msgstr "--naming=eg.MyNamingStrategy"
-#: index.docbook:306, index.docbook:444, index.docbook:505
+#. Tag: entry
+#: toolset_guide.xml:306 toolset_guide.xml:444 toolset_guide.xml:505
+#, fuzzy, no-c-format
msgid "select a <literal>NamingStrategy</literal>"
-msgstr "url de jdbc"
+msgstr "en <literal>hibernate.properties</literal>"
-#: index.docbook:309, index.docbook:451, index.docbook:512
+#. Tag: literal
+#: toolset_guide.xml:309 toolset_guide.xml:451 toolset_guide.xml:512
+#, no-c-format
msgid "--config=hibernate.cfg.xml"
-msgstr "hibernate.connection.username"
+msgstr "--config=hibernate.cfg.xml"
-#: index.docbook:310
+#. Tag: entry
+#: toolset_guide.xml:310
+#, no-c-format
msgid "read Hibernate configuration from an XML file"
-msgstr "usuario de base de datos"
+msgstr "lee la configuración de Hibernate de un fichero XML"
-#: index.docbook:313, index.docbook:447, index.docbook:508
+#. Tag: literal
+#: toolset_guide.xml:313 toolset_guide.xml:447 toolset_guide.xml:508
+#, no-c-format
msgid "--properties=hibernate.properties"
-msgstr "hibernate.connection.password"
+msgstr "--properties=hibernate.properties"
-#: index.docbook:314, index.docbook:448, index.docbook:509
+#. Tag: entry
+#: toolset_guide.xml:314 toolset_guide.xml:448 toolset_guide.xml:509
+#, no-c-format
msgid "read database properties from a file"
-msgstr "contraseña de usuario"
+msgstr "lee las propiedades de base de datos de un fichero"
-#: index.docbook:317
+#. Tag: literal
+#: toolset_guide.xml:317
+#, no-c-format
msgid "--format"
-msgstr "hibernate.dialect"
+msgstr "--format"
-#: index.docbook:318
+#. Tag: entry
+#: toolset_guide.xml:318
+#, no-c-format
msgid "format the generated SQL nicely in the script"
-msgstr "dialecto"
+msgstr "formatea agradablemente el SQL generado en el guión"
-#: index.docbook:321
+#. Tag: literal
+#: toolset_guide.xml:321
+#, no-c-format
msgid "--delimiter=;"
-msgstr "Usando Ant"
+msgstr "--delimiter=x"
-#: index.docbook:322
+#. Tag: entry
+#: toolset_guide.xml:322
+#, no-c-format
msgid "set an end of line delimiter for the script"
-msgstr "Puedes llamar a <literal>SchemaExport</literal> desde tu guión de construcción de Ant:"
+msgstr "establece un delimitador de fin de línea para el guión"
-#: index.docbook:328
+#. Tag: para
+#: toolset_guide.xml:328
+#, no-c-format
msgid "You may even embed <literal>SchemaExport</literal> in your application:"
msgstr ""
- "<![CDATA[<target name=\"schemaexport\">\n"
- " <taskdef name=\"schemaexport\"\n"
- " classname=\"org.hibernate.tool.hbm2ddl.SchemaExportTask\"\n"
- " classpathref=\"class.path\"/>\n"
- " \n"
- " <schemaexport\n"
- " properties=\"hibernate.properties\"\n"
- " quiet=\"no\"\n"
- " text=\"no\"\n"
- " drop=\"no\"\n"
- " delimiter=\";\"\n"
- " output=\"schema-export.sql\">\n"
- " <fileset dir=\"src\">\n"
- " <include name=\"**/*.hbm.xml\"/>\n"
- " </fileset>\n"
- " </schemaexport>\n"
- "</target>]]>"
+"Puedes incluso encajar <literal>SchemaExport</literal> en tu aplicación:"
-#: index.docbook:332
+#. Tag: programlisting
+#: toolset_guide.xml:332
+#, no-c-format
msgid ""
- "<![CDATA[Configuration cfg = ....;\n"
- "new SchemaExport(cfg).create(false, true);]]>"
-msgstr "Actualizaciones incrementales de esquema"
+"<![CDATA[Configuration cfg = ....;\n"
+"new SchemaExport(cfg).create(false, true);]]>"
+msgstr ""
-#: index.docbook:337
+#. Tag: title
+#: toolset_guide.xml:337
+#, no-c-format
msgid "Properties"
-msgstr "La herramienta <literal>SchemaUpdate</literal> actualizará un esquema existente con cambios \"incrementales\". Nota que <literal>SchemaUpdate</literal> depende fuertemente de la API de metadatos de JDBC, de modo que no funcionará con todos los drivers JDBC."
+msgstr "Propiedades"
-#: index.docbook:339
+#. Tag: para
+#: toolset_guide.xml:339
+#, no-c-format
msgid "Database properties may be specified"
-msgstr "<literal>java -cp </literal><emphasis>classpaths_de_hibernate</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>opciones ficheros_de_mapeo</emphasis>"
+msgstr "Las propiedades de base de datos pueden especificarse"
-#: index.docbook:345
-msgid "as system properties with <literal>-D</literal><emphasis><property></emphasis>"
-msgstr "Opciones de Línea de Comandos de <literal>SchemaUpdate</literal>"
+#. Tag: para
+#: toolset_guide.xml:345
+#, no-c-format
+msgid ""
+"as system properties with <literal>-D</literal><emphasis><property></"
+"emphasis>"
+msgstr ""
+"como propiedades de sistema con <literal>-D</literal><emphasis><"
+"property></emphasis>"
-#: index.docbook:348
+#. Tag: para
+#: toolset_guide.xml:348
+#, no-c-format
msgid "in <literal>hibernate.properties</literal>"
-msgstr "Opción"
+msgstr "en <literal>hibernate.properties</literal>"
-#: index.docbook:351
+#. Tag: para
+#: toolset_guide.xml:351
+#, no-c-format
msgid "in a named properties file with <literal>--properties</literal>"
-msgstr "Descripción"
+msgstr ""
+"en un fichero de propiedades mencionado con <literal>--properties</literal>"
-#: index.docbook:355
+#. Tag: para
+#: toolset_guide.xml:355
+#, no-c-format
msgid "The needed properties are:"
-msgstr "--quiet"
+msgstr "Las propiedades necesarias son:"
-#: index.docbook:360
+#. Tag: title
+#: toolset_guide.xml:360
+#, no-c-format
msgid "SchemaExport Connection Properties"
-msgstr "no enviar a salida estándar el guión"
+msgstr "Propiedades de Conexión de SchemaExport"
-#: index.docbook:366
+#. Tag: entry
+#: toolset_guide.xml:366
+#, no-c-format
msgid "Property Name"
-msgstr "--properties=hibernate.properties"
+msgstr "Nombre de Propiedad"
-#: index.docbook:372
+#. Tag: literal
+#: toolset_guide.xml:372
+#, no-c-format
msgid "hibernate.connection.driver_class"
-msgstr "Puedes encajar <literal>SchemaUpdate</literal> en tu aplicación:"
+msgstr "hibernate.connection.driver_class"
-#: index.docbook:373
+#. Tag: entry
+#: toolset_guide.xml:373
+#, no-c-format
msgid "jdbc driver class"
-msgstr ""
- "<![CDATA[Configuration cfg = ....;\n"
- "new SchemaUpdate(cfg).execute(false);]]>"
+msgstr "clase del driver jdbc"
-#: index.docbook:376
+#. Tag: literal
+#: toolset_guide.xml:376
+#, no-c-format
msgid "hibernate.connection.url"
-msgstr "Usando Ant para actualizaciones incrementales de esquema"
+msgstr "hibernate.connection.url"
-#: index.docbook:377
+#. Tag: entry
+#: toolset_guide.xml:377
+#, no-c-format
msgid "jdbc url"
-msgstr "Puedes llamar a <literal>SchemaUpdate</literal> desde el guión de Ant:"
+msgstr "url de jdbc"
-#: index.docbook:380
+#. Tag: literal
+#: toolset_guide.xml:380
+#, no-c-format
msgid "hibernate.connection.username"
-msgstr ""
- "<![CDATA[<target name=\"schemaupdate\">\n"
- " <taskdef name=\"schemaupdate\"\n"
- " classname=\"org.hibernate.tool.hbm2ddl.SchemaUpdateTask\"\n"
- " classpathref=\"class.path\"/>\n"
- " \n"
- " <schemaupdate\n"
- " properties=\"hibernate.properties\"\n"
- " quiet=\"no\">\n"
- " <fileset dir=\"src\">\n"
- " <include name=\"**/*.hbm.xml\"/>\n"
- " </fileset>\n"
- " </schemaupdate>\n"
- "</target>]]>"
+msgstr "hibernate.connection.username"
-#: index.docbook:381
+#. Tag: entry
+#: toolset_guide.xml:381
+#, no-c-format
msgid "database user"
-msgstr ""
+msgstr "usuario de base de datos"
-#: index.docbook:384
+#. Tag: literal
+#: toolset_guide.xml:384
+#, no-c-format
msgid "hibernate.connection.password"
-msgstr ""
+msgstr "hibernate.connection.password"
-#: index.docbook:385
+#. Tag: entry
+#: toolset_guide.xml:385
+#, no-c-format
msgid "user password"
-msgstr ""
+msgstr "contraseña de usuario"
-#: index.docbook:388
+#. Tag: literal
+#: toolset_guide.xml:388
+#, no-c-format
msgid "hibernate.dialect"
-msgstr ""
+msgstr "hibernate.dialect"
-#: index.docbook:389
+#. Tag: entry
+#: toolset_guide.xml:389
+#, no-c-format
msgid "dialect"
-msgstr ""
+msgstr "dialecto"
-#: index.docbook:398
+#. Tag: title
+#: toolset_guide.xml:398
+#, no-c-format
msgid "Using Ant"
-msgstr ""
+msgstr "Usando Ant"
-#: index.docbook:400
-msgid "You can call <literal>SchemaExport</literal> from your Ant build script:"
+#. Tag: para
+#: toolset_guide.xml:400
+#, no-c-format
+msgid ""
+"You can call <literal>SchemaExport</literal> from your Ant build script:"
msgstr ""
+"Puedes llamar a <literal>SchemaExport</literal> desde tu guión de "
+"construcción de Ant:"
-#: index.docbook:404
+#. Tag: programlisting
+#: toolset_guide.xml:404
+#, no-c-format
msgid ""
- "<![CDATA[<target name=\"schemaexport\">\n"
- " <taskdef name=\"schemaexport\"\n"
- " classname=\"org.hibernate.tool.hbm2ddl.SchemaExportTask\"\n"
- " classpathref=\"class.path\"/>\n"
- " \n"
- " <schemaexport\n"
- " properties=\"hibernate.properties\"\n"
- " quiet=\"no\"\n"
- " text=\"no\"\n"
- " drop=\"no\"\n"
- " delimiter=\";\"\n"
- " output=\"schema-export.sql\">\n"
- " <fileset dir=\"src\">\n"
- " <include name=\"**/*.hbm.xml\"/>\n"
- " </fileset>\n"
- " </schemaexport>\n"
- "</target>]]>"
+"<![CDATA[<target name=\"schemaexport\">\n"
+" <taskdef name=\"schemaexport\"\n"
+" classname=\"org.hibernate.tool.hbm2ddl.SchemaExportTask\"\n"
+" classpathref=\"class.path\"/>\n"
+" \n"
+" <schemaexport\n"
+" properties=\"hibernate.properties\"\n"
+" quiet=\"no\"\n"
+" text=\"no\"\n"
+" drop=\"no\"\n"
+" delimiter=\";\"\n"
+" output=\"schema-export.sql\">\n"
+" <fileset dir=\"src\">\n"
+" <include name=\"**/*.hbm.xml\"/>\n"
+" </fileset>\n"
+" </schemaexport>\n"
+"</target>]]>"
msgstr ""
-#: index.docbook:409
+#. Tag: title
+#: toolset_guide.xml:409
+#, no-c-format
msgid "Incremental schema updates"
-msgstr ""
+msgstr "Actualizaciones incrementales de esquema"
-#: index.docbook:411
-msgid "The <literal>SchemaUpdate</literal> tool will update an existing schema with \"incremental\" changes. Note that <literal>SchemaUpdate</literal> depends heavily upon the JDBC metadata API, so it will not work with all JDBC drivers."
+#. Tag: para
+#: toolset_guide.xml:411
+#, no-c-format
+msgid ""
+"The <literal>SchemaUpdate</literal> tool will update an existing schema with "
+"\"incremental\" changes. Note that <literal>SchemaUpdate</literal> depends "
+"heavily upon the JDBC metadata API, so it will not work with all JDBC "
+"drivers."
msgstr ""
+"La herramienta <literal>SchemaUpdate</literal> actualizará un esquema "
+"existente con cambios \"incrementales\". Nota que <literal>SchemaUpdate</"
+"literal> depende fuertemente de la API de metadatos de JDBC, de modo que no "
+"funcionará con todos los drivers JDBC."
-#: index.docbook:417
-msgid "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options mapping_files</emphasis>"
+#. Tag: para
+#: toolset_guide.xml:417
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options "
+"mapping_files</emphasis>"
msgstr ""
-#: index.docbook:423
+#. Tag: title
+#: toolset_guide.xml:423
+#, no-c-format
msgid "<literal>SchemaUpdate</literal> Command Line Options"
-msgstr ""
+msgstr "Opciones de Línea de Comandos de <literal>SchemaUpdate</literal>"
-#: index.docbook:440
+#. Tag: entry
+#: toolset_guide.xml:440
+#, no-c-format
msgid "don't export the script to the database"
-msgstr ""
+msgstr "don't export the script to the database"
-#: index.docbook:452, index.docbook:513
+#. Tag: entry
+#: toolset_guide.xml:452 toolset_guide.xml:513
+#, fuzzy, no-c-format
msgid "specify a <literal>.cfg.xml</literal> file"
-msgstr ""
+msgstr "specify a <placeholder-1/> file"
-#: index.docbook:458
+#. Tag: para
+#: toolset_guide.xml:458
+#, no-c-format
msgid "You may embed <literal>SchemaUpdate</literal> in your application:"
-msgstr ""
+msgstr "Puedes encajar <literal>SchemaUpdate</literal> en tu aplicación:"
-#: index.docbook:462
+#. Tag: programlisting
+#: toolset_guide.xml:462
+#, no-c-format
msgid ""
- "<![CDATA[Configuration cfg = ....;\n"
- "new SchemaUpdate(cfg).execute(false);]]>"
+"<![CDATA[Configuration cfg = ....;\n"
+"new SchemaUpdate(cfg).execute(false);]]>"
msgstr ""
-#: index.docbook:467
+#. Tag: title
+#: toolset_guide.xml:467
+#, no-c-format
msgid "Using Ant for incremental schema updates"
-msgstr ""
+msgstr "Usando Ant para actualizaciones incrementales de esquema"
-#: index.docbook:469
+#. Tag: para
+#: toolset_guide.xml:469
+#, no-c-format
msgid "You can call <literal>SchemaUpdate</literal> from the Ant script:"
-msgstr ""
+msgstr "Puedes llamar a <literal>SchemaUpdate</literal> desde el guión de Ant:"
-#: index.docbook:473
+#. Tag: programlisting
+#: toolset_guide.xml:473
+#, no-c-format
msgid ""
- "<![CDATA[<target name=\"schemaupdate\">\n"
- " <taskdef name=\"schemaupdate\"\n"
- " classname=\"org.hibernate.tool.hbm2ddl.SchemaUpdateTask\"\n"
- " classpathref=\"class.path\"/>\n"
- " \n"
- " <schemaupdate\n"
- " properties=\"hibernate.properties\"\n"
- " quiet=\"no\">\n"
- " <fileset dir=\"src\">\n"
- " <include name=\"**/*.hbm.xml\"/>\n"
- " </fileset>\n"
- " </schemaupdate>\n"
- "</target>]]>"
+"<![CDATA[<target name=\"schemaupdate\">\n"
+" <taskdef name=\"schemaupdate\"\n"
+" classname=\"org.hibernate.tool.hbm2ddl.SchemaUpdateTask\"\n"
+" classpathref=\"class.path\"/>\n"
+" \n"
+" <schemaupdate\n"
+" properties=\"hibernate.properties\"\n"
+" quiet=\"no\">\n"
+" <fileset dir=\"src\">\n"
+" <include name=\"**/*.hbm.xml\"/>\n"
+" </fileset>\n"
+" </schemaupdate>\n"
+"</target>]]>"
msgstr ""
-#: index.docbook:478
+#. Tag: title
+#: toolset_guide.xml:478
+#, no-c-format
msgid "Schema validation"
-msgstr ""
+msgstr "translator-credits"
-#: index.docbook:480
-msgid "The <literal>SchemaValidator</literal> tool will validate that the existing database schema \"matches\" your mapping documents. Note that <literal>SchemaValidator</literal> depends heavily upon the JDBC metadata API, so it will not work with all JDBC drivers. This tool is extremely useful for testing."
+#. Tag: para
+#: toolset_guide.xml:480
+#, no-c-format
+msgid ""
+"The <literal>SchemaValidator</literal> tool will validate that the existing "
+"database schema \"matches\" your mapping documents. Note that "
+"<literal>SchemaValidator</literal> depends heavily upon the JDBC metadata "
+"API, so it will not work with all JDBC drivers. This tool is extremely "
+"useful for testing."
msgstr ""
-#: index.docbook:486
-msgid "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> <emphasis>options mapping_files</emphasis>"
+#. Tag: para
+#: toolset_guide.xml:486
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> "
+"<emphasis>options mapping_files</emphasis>"
msgstr ""
-#: index.docbook:492
+#. Tag: title
+#: toolset_guide.xml:492
+#, no-c-format
msgid "<literal>SchemaValidator</literal> Command Line Options"
msgstr ""
-#: index.docbook:519
+#. Tag: para
+#: toolset_guide.xml:519
+#, no-c-format
msgid "You may embed <literal>SchemaValidator</literal> in your application:"
msgstr ""
-#: index.docbook:523
+#. Tag: programlisting
+#: toolset_guide.xml:523
+#, no-c-format
msgid ""
- "<![CDATA[Configuration cfg = ....;\n"
- "new SchemaValidator(cfg).validate();]]>"
+"<![CDATA[Configuration cfg = ....;\n"
+"new SchemaValidator(cfg).validate();]]>"
msgstr ""
-#: index.docbook:528
+#. Tag: title
+#: toolset_guide.xml:528
+#, no-c-format
msgid "Using Ant for schema validation"
msgstr ""
-#: index.docbook:530
+#. Tag: para
+#: toolset_guide.xml:530
+#, no-c-format
msgid "You can call <literal>SchemaValidator</literal> from the Ant script:"
msgstr ""
-#: index.docbook:534
+#. Tag: programlisting
+#: toolset_guide.xml:534
+#, no-c-format
msgid ""
- "<![CDATA[<target name=\"schemavalidate\">\n"
- " <taskdef name=\"schemavalidator\"\n"
- " classname=\"org.hibernate.tool.hbm2ddl.SchemaValidatorTask\"\n"
- " classpathref=\"class.path\"/>\n"
- " \n"
- " <schemavalidator\n"
- " properties=\"hibernate.properties\">\n"
- " <fileset dir=\"src\">\n"
- " <include name=\"**/*.hbm.xml\"/>\n"
- " </fileset>\n"
- " </schemavalidator>\n"
- "</target>]]>"
+"<![CDATA[<target name=\"schemavalidate\">\n"
+" <taskdef name=\"schemavalidator\"\n"
+" classname=\"org.hibernate.tool.hbm2ddl.SchemaValidatorTask\"\n"
+" classpathref=\"class.path\"/>\n"
+" \n"
+" <schemavalidator\n"
+" properties=\"hibernate.properties\">\n"
+" <fileset dir=\"src\">\n"
+" <include name=\"**/*.hbm.xml\"/>\n"
+" </fileset>\n"
+" </schemavalidator>\n"
+"</target>]]>"
msgstr ""
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+#~ msgid "<one-to-one>"
+#~ msgstr "<one-to-one>"
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+#~ msgid "<many-to-one>"
+#~ msgstr "<many-to-one>"
+#~ msgid "<key>"
+#~ msgstr "<key>"
+
+#~ msgid "<many-to-many>"
+#~ msgstr "<many-to-many>"
+
+#~ msgid "inverse=\"true\""
+#~ msgstr "inverse=\"true\""
+
+#~ msgid "SchemaExport"
+#~ msgstr "SchemaExport"
+
+#~ msgid "<column>"
+#~ msgstr "<column>"
+
+#~ msgid "java -cp"
+#~ msgstr "java -cp"
+
+#~ msgid "hibernate_classpaths"
+#~ msgstr "classpaths_de_hibernate"
+
+#~ msgid "org.hibernate.tool.hbm2ddl.SchemaExport"
+#~ msgstr "org.hibernate.tool.hbm2ddl.SchemaExport"
+
+#~ msgid "options mapping_files"
+#~ msgstr "opciones ficheros_de_mapeo"
+
+#~ msgid "NamingStrategy"
+#~ msgstr "NamingStrategy"
+
+#~ msgid "select a <placeholder-1/>"
+#~ msgstr "select a <placeholder-1/>"
+
+#~ msgid "org.hibernate.tool.hbm2ddl.SchemaUpdate"
+#~ msgstr "org.hibernate.tool.hbm2ddl.SchemaUpdate"
+
+#~ msgid ".cfg.xml"
+#~ msgstr ".cfg.xml"
Modified: core/trunk/documentation/manual/translations/es-ES/content/transactions.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/transactions.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/transactions.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,738 +1,2079 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: transactions.xml:5
+#, no-c-format
msgid "Transactions And Concurrency"
msgstr "Transacciones y Concurrencia"
-#: index.docbook:7
-msgid "The most important point about Hibernate and concurrency control is that it is very easy to understand. Hibernate directly uses JDBC connections and JTA resources without adding any additional locking behavior. We highly recommend you spend some time with the JDBC, ANSI, and transaction isolation specification of your database management system."
-msgstr "El punto más importante sobre Hibernate y el control de concurrencia es que muy fácil de comprender. Hibernate usa directamente conexiones JDBC y recursos JTA sin agregar ningún comportamiento de bloqueo adicional. Recomendamos altamente que gastes algo de tiempo con la especificación de JDBC, ANSI, y el aislamiento de transacciones de tu sistema de gestión de base de datos. Hibernate sólo añade versionado automático pero no bloquea objetos en memoria ni cambia el nivel de aislamiento de tus transacciones de base de datos. Básicamente, usa Hibernate como usarías JDBC directo (o JTA/CMT) con tus recursos de base de datos."
+#. Tag: para
+#: transactions.xml:7
+#, no-c-format
+msgid ""
+"The most important point about Hibernate and concurrency control is that it "
+"is very easy to understand. Hibernate directly uses JDBC connections and JTA "
+"resources without adding any additional locking behavior. We highly "
+"recommend you spend some time with the JDBC, ANSI, and transaction isolation "
+"specification of your database management system."
+msgstr ""
+"El punto más importante sobre Hibernate y el control de concurrencia es que "
+"muy fácil de comprender. Hibernate usa directamente conexiones JDBC y "
+"recursos JTA sin agregar ningún comportamiento de bloqueo adicional. "
+"Recomendamos altamente que gastes algo de tiempo con la especificación de "
+"JDBC, ANSI, y el aislamiento de transacciones de tu sistema de gestión de "
+"base de datos. Hibernate sólo añade versionado automático pero no bloquea "
+"objetos en memoria ni cambia el nivel de aislamiento de tus transacciones de "
+"base de datos. Básicamente, usa Hibernate como usarías JDBC directo (o JTA/"
+"CMT) con tus recursos de base de datos."
-#: index.docbook:14
-msgid "Hibernate does not lock objects in memory. Your application can expect the behavior as defined by the isolation level of your database transactions. Note that thanks to the <literal>Session</literal>, which is also a transaction-scoped cache, Hibernate provides repeatable reads for lookup by identifier and entity queries (not reporting queries that return scalar values)."
-msgstr "Sin embargo, además del versionado automático, Hibernate ofrece una API (menor) para bloqueo pesimista de filas, usando la sintáxis <literal>SELECT FOR UPDATE</literal>. Esta API se discute más adelante en este capítulo:"
+#. Tag: para
+#: transactions.xml:14
+#, no-c-format
+msgid ""
+"Hibernate does not lock objects in memory. Your application can expect the "
+"behavior as defined by the isolation level of your database transactions. "
+"Note that thanks to the <literal>Session</literal>, which is also a "
+"transaction-scoped cache, Hibernate provides repeatable reads for lookup by "
+"identifier and entity queries (not reporting queries that return scalar "
+"values)."
+msgstr ""
+"Hibernate does not lock objects in memory. Your application can expect the "
+"behavior as defined by the isolation level of your database transactions. "
+"Note that thanks to the <literal>Session</literal>, which is also a "
+"transaction-scoped cache, Hibernate provides repeatable reads for lookup by "
+"identifier and entity queries (not reporting queries that return scalar "
+"values)."
-#: index.docbook:22
-msgid "In addition to versioning for automatic optimistic concurrency control, Hibernate also offers a (minor) API for pessimistic locking of rows, using the <literal>SELECT FOR UPDATE</literal> syntax. Optimistic concurrency control and this API are discussed later in this chapter."
-msgstr "Comenzamos la discusión del control de concurrencia en Hibernate con la granularidad de <literal>Configuration</literal>, <literal>SessionFactory</literal>, y <literal>Session</literal>, así como la base de datos y las transacciones de aplicación largas."
+#. Tag: para
+#: transactions.xml:22
+#, no-c-format
+msgid ""
+"In addition to versioning for automatic optimistic concurrency control, "
+"Hibernate also offers a (minor) API for pessimistic locking of rows, using "
+"the <literal>SELECT FOR UPDATE</literal> syntax. Optimistic concurrency "
+"control and this API are discussed later in this chapter."
+msgstr ""
+"Sin embargo, además del versionado automático, Hibernate ofrece una API "
+"(menor) para bloqueo pesimista de filas, usando la sintáxis <literal>SELECT "
+"FOR UPDATE</literal>. Esta API se discute más adelante en este capítulo:"
-#: index.docbook:29
-msgid "We start the discussion of concurrency control in Hibernate with the granularity of <literal>Configuration</literal>, <literal>SessionFactory</literal>, and <literal>Session</literal>, as well as database transactions and long conversations."
-msgstr "Ámbitos de sesión y de transacción"
+#. Tag: para
+#: transactions.xml:29
+#, no-c-format
+msgid ""
+"We start the discussion of concurrency control in Hibernate with the "
+"granularity of <literal>Configuration</literal>, <literal>SessionFactory</"
+"literal>, and <literal>Session</literal>, as well as database transactions "
+"and long conversations."
+msgstr ""
+"Comenzamos la discusión del control de concurrencia en Hibernate con la "
+"granularidad de <literal>Configuration</literal>, <literal>SessionFactory</"
+"literal>, y <literal>Session</literal>, así como la base de datos y las "
+"transacciones de aplicación largas."
-#: index.docbook:36
+#. Tag: title
+#: transactions.xml:36
+#, no-c-format
msgid "Session and transaction scopes"
-msgstr "Una <literal>SessionFactory</literal> es un objeto seguro entre hebras caro-de-crear pensado para ser compartido por todas las hebras de la aplicación. Es creado una sola vez, usualmente en el arranque de la aplicación, a partir de una instancia de <literal>Configuration</literal>."
+msgstr "Ámbitos de sesión y de transacción"
-#: index.docbook:38
-msgid "A <literal>SessionFactory</literal> is an expensive-to-create, threadsafe object intended to be shared by all application threads. It is created once, usually on application startup, from a <literal>Configuration</literal> instance."
-msgstr "Una <literal>Session</literal> es un objeto barato, inseguro entre hebras que debe ser usado una sola vez, para un solo proceso de negocio, una sola unidad de trabajo, y luego descartado. Una <literal>Session</literal> no obtendrá una <literal>Connection</literal> JDBC (o un <literal>Datasource</literal>) a menos que sea necesario, de modo que puedas abrir y cerrar seguramente una <literal>Session</literal> incluso si no estás seguro que se necesitará acceso a los datos para servir una petición en particular. (Esto se vuelve importante en cuanto estés implementando alguno de los siguientes patrones usando intercepción de peticiones)."
+#. Tag: para
+#: transactions.xml:38
+#, no-c-format
+msgid ""
+"A <literal>SessionFactory</literal> is an expensive-to-create, threadsafe "
+"object intended to be shared by all application threads. It is created once, "
+"usually on application startup, from a <literal>Configuration</literal> "
+"instance."
+msgstr ""
+"Una <literal>SessionFactory</literal> es un objeto seguro entre hebras caro-"
+"de-crear pensado para ser compartido por todas las hebras de la aplicación. "
+"Es creado una sola vez, usualmente en el arranque de la aplicación, a partir "
+"de una instancia de <literal>Configuration</literal>."
-#: index.docbook:44
-msgid "A <literal>Session</literal> is an inexpensive, non-threadsafe object that should be used once, for a single request, a conversation, single unit of work, and then discarded. A <literal>Session</literal> will not obtain a JDBC <literal>Connection</literal> (or a <literal>Datasource</literal>) unless it is needed, hence consume no resources until used."
-msgstr "Para completar este cuadro tienes que pensar también en las transacciones de base de datos. Una transacción de base de datos tiene que ser tan corta como sea posible, para reducir la contención de bloqueos en la base de datos. Las transacciones largas de base de datos prevendrán a tu aplicación de escalar a una carga altamente concurrente."
+#. Tag: para
+#: transactions.xml:44
+#, no-c-format
+msgid ""
+"A <literal>Session</literal> is an inexpensive, non-threadsafe object that "
+"should be used once, for a single request, a conversation, single unit of "
+"work, and then discarded. A <literal>Session</literal> will not obtain a "
+"JDBC <literal>Connection</literal> (or a <literal>Datasource</literal>) "
+"unless it is needed, hence consume no resources until used."
+msgstr ""
+"Una <literal>Session</literal> es un objeto barato, inseguro entre hebras "
+"que debe ser usado una sola vez, para un solo proceso de negocio, una sola "
+"unidad de trabajo, y luego descartado. Una <literal>Session</literal> no "
+"obtendrá una <literal>Connection</literal> JDBC (o un <literal>Datasource</"
+"literal>) a menos que sea necesario, de modo que puedas abrir y cerrar "
+"seguramente una <literal>Session</literal> incluso si no estás seguro que se "
+"necesitará acceso a los datos para servir una petición en particular. (Esto "
+"se vuelve importante en cuanto estés implementando alguno de los siguientes "
+"patrones usando intercepción de peticiones)."
-#: index.docbook:52
-msgid "To complete this picture you also have to think about database transactions. A database transaction has to be as short as possible, to reduce lock contention in the database. Long database transactions will prevent your application from scaling to highly concurrent load. Hence, it is almost never good design to hold a database transaction open during user think time, until the unit of work is complete."
-msgstr "¿Qué es el ámbito de una unidad de trabajo? ¿Puede una sola <literal>Session</literal> de Hibernate extenderse a través de varias transacciones de base de datos o es ésta una relación uno-a-uno de ámbitos? ¿Cuándo debes abrir y cerrar una <literal>Session</literal> y cómo demarcas los límites de la transacción de base de datos?"
+#. Tag: para
+#: transactions.xml:52
+#, no-c-format
+msgid ""
+"To complete this picture you also have to think about database transactions. "
+"A database transaction has to be as short as possible, to reduce lock "
+"contention in the database. Long database transactions will prevent your "
+"application from scaling to highly concurrent load. Hence, it is almost "
+"never good design to hold a database transaction open during user think "
+"time, until the unit of work is complete."
+msgstr ""
+"Para completar este cuadro tienes que pensar también en las transacciones de "
+"base de datos. Una transacción de base de datos tiene que ser tan corta como "
+"sea posible, para reducir la contención de bloqueos en la base de datos. Las "
+"transacciones largas de base de datos prevendrán a tu aplicación de escalar "
+"a una carga altamente concurrente."
-#: index.docbook:61
-msgid "What is the scope of a unit of work? Can a single Hibernate <literal>Session</literal> span several database transactions or is this a one-to-one relationship of scopes? When should you open and close a <literal>Session</literal> and how do you demarcate the database transaction boundaries?"
-msgstr "Unidad de trabajo"
+#. Tag: para
+#: transactions.xml:61
+#, no-c-format
+msgid ""
+"What is the scope of a unit of work? Can a single Hibernate "
+"<literal>Session</literal> span several database transactions or is this a "
+"one-to-one relationship of scopes? When should you open and close a "
+"<literal>Session</literal> and how do you demarcate the database transaction "
+"boundaries?"
+msgstr ""
+"¿Qué es el ámbito de una unidad de trabajo? ¿Puede una sola "
+"<literal>Session</literal> de Hibernate extenderse a través de varias "
+"transacciones de base de datos o es ésta una relación uno-a-uno de ámbitos? "
+"¿Cuándo debes abrir y cerrar una <literal>Session</literal> y cómo demarcas "
+"los límites de la transacción de base de datos?"
-#: index.docbook:69
+#. Tag: title
+#: transactions.xml:69
+#, no-c-format
msgid "Unit of work"
-msgstr "Primero, no uses el antipatrón <emphasis>sesión-por-operación</emphasis>, esto es, ¡no abras y cierres una <literal>Session</literal> para cada simple llamada a la base de datos en una sola hebra! Por supuesto, lo mismo es verdad para transacciones de base de datos. Las llamadas a base de datos en una aplicación se hacen usando una secuencia prevista, que están agrupadas dentro de unidades de trabajo atómicas. (Nota que esto también significa que el auto-commit después de cada una de las sentencias SQL es inútil en una aplicación, este modo está pensado para trabajo ad-hoc de consola SQL. Hibernate deshabilita, o espera que el servidor de aplicaciones lo haga, el modo auto-commit inmediatamente.)"
+msgstr "Unidad de trabajo"
-#: index.docbook:71
-msgid "First, don't use the <emphasis>session-per-operation</emphasis> antipattern, that is, don't open and close a <literal>Session</literal> for every simple database call in a single thread! Of course, the same is true for database transactions. Database calls in an application are made using a planned sequence, they are grouped into atomic units of work. (Note that this also means that auto-commit after every single SQL statement is useless in an application, this mode is intended for ad-hoc SQL console work. Hibernate disables, or expects the application server to do so, auto-commit mode immediately.) Database transactions are never optional, all communication with a database has to occur inside a transaction, no matter if you read or write data. As explained, auto-commit behavior for reading data should be avoided, as many small transactions are unlikely to perform better than one clearly defined unit of work. The latter is also much more maintainable and extensible."
-msgstr "El patrón más común en una aplicación mutiusuario cliente/servidor es <emphasis>sesión-por-petición</emphasis>. En este modelo, una petición del cliente es enviada al servidor (en donde se ejecuta la capa de persistencia de Hibernate), se abre una nueva <literal>Session</literal> de Hibernate, y todas las operaciones de base de datos se ejecutan en esta unidad de trabajo. Una vez completado el trabajo (y se ha preparado la respuesta para el cliente) la sesión es limpiada y cerrada. Podrías usar una sola transacción de base de datos para servir a petición del cliente, comenzándola y comprometiéndola cuando abres y cierras la <literal>Session</literal>. La relación entre las dos es uno-a-uno y este modelo es a la medida perfecta de muchas aplicaciones."
+#. Tag: para
+#: transactions.xml:71
+#, no-c-format
+msgid ""
+"First, don't use the <emphasis>session-per-operation</emphasis> antipattern, "
+"that is, don't open and close a <literal>Session</literal> for every simple "
+"database call in a single thread! Of course, the same is true for database "
+"transactions. Database calls in an application are made using a planned "
+"sequence, they are grouped into atomic units of work. (Note that this also "
+"means that auto-commit after every single SQL statement is useless in an "
+"application, this mode is intended for ad-hoc SQL console work. Hibernate "
+"disables, or expects the application server to do so, auto-commit mode "
+"immediately.) Database transactions are never optional, all communication "
+"with a database has to occur inside a transaction, no matter if you read or "
+"write data. As explained, auto-commit behavior for reading data should be "
+"avoided, as many small transactions are unlikely to perform better than one "
+"clearly defined unit of work. The latter is also much more maintainable and "
+"extensible."
+msgstr ""
+"Primero, no uses el antipatrón <emphasis>sesión-por-operación</emphasis>, "
+"esto es, ¡no abras y cierres una <literal>Session</literal> para cada simple "
+"llamada a la base de datos en una sola hebra! Por supuesto, lo mismo es "
+"verdad para transacciones de base de datos. Las llamadas a base de datos en "
+"una aplicación se hacen usando una secuencia prevista, que están agrupadas "
+"dentro de unidades de trabajo atómicas. (Nota que esto también significa que "
+"el auto-commit después de cada una de las sentencias SQL es inútil en una "
+"aplicación, este modo está pensado para trabajo ad-hoc de consola SQL. "
+"Hibernate deshabilita, o espera que el servidor de aplicaciones lo haga, el "
+"modo auto-commit inmediatamente.)"
-#: index.docbook:87
-msgid "The most common pattern in a multi-user client/server application is <emphasis>session-per-request</emphasis>. In this model, a request from the client is send to the server (where the Hibernate persistence layer runs), a new Hibernate <literal>Session</literal> is opened, and all database operations are executed in this unit of work. Once the work has been completed (and the response for the client has been prepared), the session is flushed and closed. You would also use a single database transaction to serve the clients request, starting and committing it when you open and close the <literal>Session</literal>. The relationship between the two is one-to-one and this model is a perfect fit for many applications."
-msgstr "El desafío yace en la implementación: no sólo tienen que comenzarse y terminarse correctamente la <literal>Session</literal> y la transacción, sino que además tienen que estar accesibles para las operaciones de acceso a datos. La demarcación de una unidad de trabajo se implementa idealmente usando un interceptor que se ejecuta cuando una petición llama al servidor y anter que la respuesta sea enviada (es decir, un <literal>ServletFilter</literal>). Recomendamos ligar la <literal>Session</literal> a la hebra que atiende la petición, usando una variable <literal>ThreadLocal</literal>. Esto permite un fácil acceso (como acceder a una variable static) en tódo el código que se ejecuta en esta hebra. Dependiendo del mecanismo de demarcación de transacciones de base de datos que elijas, podrías mantener también el contexto de la transacción en una variable <literal>Thre!
adLocal</literal>. Los patrones de implementación para esto son conocidos como <emphasis>Sesión Local de Hebra (ThreadLocal Session)</emphasis> y <emphasis>Sesión Abierta en Vista (Open Session in View)</emphasis>. Puedes extender fácilmente la clase de ayuda <literal>HibernateUtil</literal> mostrada anteriormente para encontrar una forma de implementar un interceptor e instalarlo en tu entorno. Ver el sitio web de Hibernate para consejos y ejemplos."
+#. Tag: para
+#: transactions.xml:87
+#, no-c-format
+msgid ""
+"The most common pattern in a multi-user client/server application is "
+"<emphasis>session-per-request</emphasis>. In this model, a request from the "
+"client is send to the server (where the Hibernate persistence layer runs), a "
+"new Hibernate <literal>Session</literal> is opened, and all database "
+"operations are executed in this unit of work. Once the work has been "
+"completed (and the response for the client has been prepared), the session "
+"is flushed and closed. You would also use a single database transaction to "
+"serve the clients request, starting and committing it when you open and "
+"close the <literal>Session</literal>. The relationship between the two is "
+"one-to-one and this model is a perfect fit for many applications."
+msgstr ""
+"El patrón más común en una aplicación mutiusuario cliente/servidor es "
+"<emphasis>sesión-por-petición</emphasis>. En este modelo, una petición del "
+"cliente es enviada al servidor (en donde se ejecuta la capa de persistencia "
+"de Hibernate), se abre una nueva <literal>Session</literal> de Hibernate, y "
+"todas las operaciones de base de datos se ejecutan en esta unidad de "
+"trabajo. Una vez completado el trabajo (y se ha preparado la respuesta para "
+"el cliente) la sesión es limpiada y cerrada. Podrías usar una sola "
+"transacción de base de datos para servir a petición del cliente, "
+"comenzándola y comprometiéndola cuando abres y cierras la <literal>Session</"
+"literal>. La relación entre las dos es uno-a-uno y este modelo es a la "
+"medida perfecta de muchas aplicaciones."
-#: index.docbook:99
-msgid "The challenge lies in the implementation. Hibernate provides built-in management of the \"current session\" to simplify this pattern. All you have to do is start a transaction when a server request has to be processed, and end the transaction before the response is send to the client. You can do this in any way you like, common solutions are <literal>ServletFilter</literal>, AOP interceptor with a pointcut on the service methods, or a proxy/interception container. An EJB container is a standardized way to implement cross-cutting aspects such as transaction demarcation on EJB session beans, declaratively with CMT. If you decide to use programmatic transaction demarcation, prefer the Hibernate <literal>Transaction</literal> API shown later in this chapter, for ease of use and code portability."
-msgstr "Transacciones de aplicación"
+#. Tag: para
+#: transactions.xml:99
+#, no-c-format
+msgid ""
+"The challenge lies in the implementation. Hibernate provides built-in "
+"management of the \"current session\" to simplify this pattern. All you have "
+"to do is start a transaction when a server request has to be processed, and "
+"end the transaction before the response is send to the client. You can do "
+"this in any way you like, common solutions are <literal>ServletFilter</"
+"literal>, AOP interceptor with a pointcut on the service methods, or a proxy/"
+"interception container. An EJB container is a standardized way to implement "
+"cross-cutting aspects such as transaction demarcation on EJB session beans, "
+"declaratively with CMT. If you decide to use programmatic transaction "
+"demarcation, prefer the Hibernate <literal>Transaction</literal> API shown "
+"later in this chapter, for ease of use and code portability."
+msgstr ""
+"The challenge lies in the implementation. Hibernate provides built-in "
+"management of the \"current session\" to simplify this pattern. All you have "
+"to do is start a transaction when a server request has to be processed, and "
+"end the transaction before the response is send to the client. You can do "
+"this in any way you like, common solutions are <literal>ServletFilter</"
+"literal>, AOP interceptor with a pointcut on the service methods, or a proxy/"
+"interception container. An EJB container is a standardized way to implement "
+"cross-cutting aspects such as transaction demarcation on EJB session beans, "
+"declaratively with CMT. If you decide to use programmatic transaction "
+"demarcation, prefer the Hibernate <literal>Transaction</literal> API shown "
+"later in this chapter, for ease of use and code portability."
-#: index.docbook:112
-msgid "Your application code can access a \"current session\" to process the request by simply calling <literal>sessionFactory.getCurrentSession()</literal> anywhere and as often as needed. You will always get a <literal>Session</literal> scoped to the current database transaction. This has to be configured for either resource-local or JTA environments, see <xref linkend=\"architecture-current-session\"/>."
-msgstr "El patrón sesión-por-petición no es el único concepto útil que puedes usar para diseñar unidades de trabajo. Muchos procesos de negocio requiere una serie completa de interacciones con el usuario intercaladas con accesos a base de datos. En aplicaciones web y de empresa no es aceptable que una transacción de base de datos se extienda a través de la interacción de un usuario. Considera el siguiente ejemplo:"
+#. Tag: para
+#: transactions.xml:112
+#, no-c-format
+msgid ""
+"Your application code can access a \"current session\" to process the "
+"request by simply calling <literal>sessionFactory.getCurrentSession()</"
+"literal> anywhere and as often as needed. You will always get a "
+"<literal>Session</literal> scoped to the current database transaction. This "
+"has to be configured for either resource-local or JTA environments, see "
+"<xref linkend=\"architecture-current-session\"/>."
+msgstr ""
+"Your application code can access a \"current session\" to process the "
+"request by simply calling <literal>sessionFactory.getCurrentSession()</"
+"literal> anywhere and as often as needed. You will always get a "
+"<literal>Session</literal> scoped to the current database transaction. This "
+"has to be configured for either resource-local or JTA environments, see "
+"<xref linkend=\"architecture-current-session\"/>."
-#: index.docbook:120
-msgid "Sometimes it is convenient to extend the scope of a <literal>Session</literal> and database transaction until the \"view has been rendered\". This is especially useful in servlet applications that utilize a separate rendering phase after the request has been processed. Extending the database transaction until view rendering is complete is easy to do if you implement your own interceptor. However, it is not easily doable if you rely on EJBs with container-managed transactions, as a transaction will be completed when an EJB method returns, before rendering of any view can start. See the Hibernate website and forum for tips and examples around this <emphasis>Open Session in View</emphasis> pattern."
-msgstr "Se abre la primera pantalla de un diálogo, los datos vistos por el usuario han sido cargados en una <literal>Session</literal> y transacción de base de datos particular. El usuario es libre de modificar los objetos."
+#. Tag: para
+#: transactions.xml:120
+#, no-c-format
+msgid ""
+"Sometimes it is convenient to extend the scope of a <literal>Session</"
+"literal> and database transaction until the \"view has been rendered\". This "
+"is especially useful in servlet applications that utilize a separate "
+"rendering phase after the request has been processed. Extending the database "
+"transaction until view rendering is complete is easy to do if you implement "
+"your own interceptor. However, it is not easily doable if you rely on EJBs "
+"with container-managed transactions, as a transaction will be completed when "
+"an EJB method returns, before rendering of any view can start. See the "
+"Hibernate website and forum for tips and examples around this <emphasis>Open "
+"Session in View</emphasis> pattern."
+msgstr ""
+"Sometimes it is convenient to extend the scope of a <literal>Session</"
+"literal> and database transaction until the \"view has been rendered\". This "
+"is especially useful in servlet applications that utilize a separate "
+"rendering phase after the request has been processed. Extending the database "
+"transaction until view rendering is complete is easy to do if you implement "
+"your own interceptor. However, it is not easily doable if you rely on EJBs "
+"with container-managed transactions, as a transaction will be completed when "
+"an EJB method returns, before rendering of any view can start. See the "
+"Hibernate website and forum for tips and examples around this <emphasis>Open "
+"Session in View</emphasis> pattern."
-#: index.docbook:135
+#. Tag: title
+#: transactions.xml:135
+#, no-c-format
msgid "Long conversations"
-msgstr "El usuario hace click en \"Salvar\" después de 5 minutos y espera que sus modificaciones sean hechas persistentes. También espera que él sea la única persona editando esta información y que no puede ocurrir ninguna modificación en conflicto."
+msgstr "Transacciones de aplicación"
-#: index.docbook:137
-msgid "The session-per-request pattern is not the only useful concept you can use to design units of work. Many business processes require a whole series of interactions with the user interleaved with database accesses. In web and enterprise applications it is not acceptable for a database transaction to span a user interaction. Consider the following example:"
-msgstr "Llamamos a esto unidad de trabajo, desde el punto de vista del usuario, una larga <emphasis>transacción de aplicación</emphasis> ejecutándose. Hay muchas formas en que puedes implementar esto en tu aplicación."
+#. Tag: para
+#: transactions.xml:137
+#, no-c-format
+msgid ""
+"The session-per-request pattern is not the only useful concept you can use "
+"to design units of work. Many business processes require a whole series of "
+"interactions with the user interleaved with database accesses. In web and "
+"enterprise applications it is not acceptable for a database transaction to "
+"span a user interaction. Consider the following example:"
+msgstr ""
+"El patrón sesión-por-petición no es el único concepto útil que puedes usar "
+"para diseñar unidades de trabajo. Muchos procesos de negocio requiere una "
+"serie completa de interacciones con el usuario intercaladas con accesos a "
+"base de datos. En aplicaciones web y de empresa no es aceptable que una "
+"transacción de base de datos se extienda a través de la interacción de un "
+"usuario. Considera el siguiente ejemplo:"
-#: index.docbook:147
-msgid "The first screen of a dialog opens, the data seen by the user has been loaded in a particular <literal>Session</literal> and database transaction. The user is free to modify the objects."
-msgstr "Una primera implementación ingenua podría mantener abierta la <literal>Session</literal> y la transacción de base de datos durante el tiempo de pensar del usuario, con bloqueos tomados en la base de datos para prevenir la modificación concurrente, y para garantizar aislamiento y atomicidad. Esto es, por supuesto, un antipatrón, ya que la contención de bloqueo no permitiría a la aplicación escalar con el número de usuarios concurrentes."
+#. Tag: para
+#: transactions.xml:147
+#, no-c-format
+msgid ""
+"The first screen of a dialog opens, the data seen by the user has been "
+"loaded in a particular <literal>Session</literal> and database transaction. "
+"The user is free to modify the objects."
+msgstr ""
+"Se abre la primera pantalla de un diálogo, los datos vistos por el usuario "
+"han sido cargados en una <literal>Session</literal> y transacción de base de "
+"datos particular. El usuario es libre de modificar los objetos."
-#: index.docbook:154
-msgid "The user clicks \"Save\" after 5 minutes and expects his modifications to be made persistent; he also expects that he was the only person editing this information and that no conflicting modification can occur."
-msgstr "Claramente, tenemos que usar muchas transacciones de base de datos para implementar la transacción de aplicación. En este caso, mantener el aislamiento de los procesos de negocio se vuelve una responsabilidad parcial de la capa de aplicación. Una sola transacción de aplicación usualmente abarca varias transacciones de base de datos. Será atómica si sólo una de estas transacciones de base de datos (la última) almacena los datos actualizados, todas las otras simplemente leen datos (por ejemplo, en un diálogo estilo-asistente abarcando muchos ciclos petición/respuesta). Esto es más fácil de implementar de lo que suena, especialmente si usas las funcionalidades de Hibernate:"
+#. Tag: para
+#: transactions.xml:154
+#, no-c-format
+msgid ""
+"The user clicks \"Save\" after 5 minutes and expects his modifications to be "
+"made persistent; he also expects that he was the only person editing this "
+"information and that no conflicting modification can occur."
+msgstr ""
+"El usuario hace click en \"Salvar\" después de 5 minutos y espera que sus "
+"modificaciones sean hechas persistentes. También espera que él sea la única "
+"persona editando esta información y que no puede ocurrir ninguna "
+"modificación en conflicto."
-#: index.docbook:162
-msgid "We call this unit of work, from the point of view of the user, a long running <emphasis>conversation</emphasis> (or <emphasis>application transaction</emphasis>). There are many ways how you can implement this in your application."
-msgstr "<emphasis>Versionado Automático</emphasis> - Hibernate puede llevar un control automático de concurrencia optimista por ti, puede detectar automáticamente si una modificación concurrente ha ocurrido durante el tiempo de pensar del usuario."
+#. Tag: para
+#: transactions.xml:162
+#, no-c-format
+msgid ""
+"We call this unit of work, from the point of view of the user, a long "
+"running <emphasis>conversation</emphasis> (or <emphasis>application "
+"transaction</emphasis>). There are many ways how you can implement this in "
+"your application."
+msgstr ""
+"Llamamos a esto unidad de trabajo, desde el punto de vista del usuario, una "
+"larga <emphasis>transacción de aplicación</emphasis> ejecutándose. Hay "
+"muchas formas en que puedes implementar esto en tu aplicación."
-#: index.docbook:168
-msgid "A first naive implementation might keep the <literal>Session</literal> and database transaction open during user think time, with locks held in the database to prevent concurrent modification, and to guarantee isolation and atomicity. This is of course an anti-pattern, since lock contention would not allow the application to scale with the number of concurrent users."
-msgstr "<emphasis>Objetos Separados</emphasis> - Si decides usar el ya discutido patrón de <emphasis>sesión-por-petición</emphasis>, todas las instancias cargadas estarán en estado separado durante el tiempo de pensar del usuario. Hibernate te permite volver a unir los objetos y hacer persistentes las modificaciones. El patrón se llama <emphasis>sesión-por-petición-con-objetos-separados</emphasis>. Se usa versionado automático para aislar las modificaciones concurrentes."
+#. Tag: para
+#: transactions.xml:168
+#, no-c-format
+msgid ""
+"A first naive implementation might keep the <literal>Session</literal> and "
+"database transaction open during user think time, with locks held in the "
+"database to prevent concurrent modification, and to guarantee isolation and "
+"atomicity. This is of course an anti-pattern, since lock contention would "
+"not allow the application to scale with the number of concurrent users."
+msgstr ""
+"Una primera implementación ingenua podría mantener abierta la "
+"<literal>Session</literal> y la transacción de base de datos durante el "
+"tiempo de pensar del usuario, con bloqueos tomados en la base de datos para "
+"prevenir la modificación concurrente, y para garantizar aislamiento y "
+"atomicidad. Esto es, por supuesto, un antipatrón, ya que la contención de "
+"bloqueo no permitiría a la aplicación escalar con el número de usuarios "
+"concurrentes."
-#: index.docbook:176
-msgid "Clearly, we have to use several database transactions to implement the converastion. In this case, maintaining isolation of business processes becomes the partial responsibility of the application tier. A single conversation usually spans several database transactions. It will be atomic if only one of these database transactions (the last one) stores the updated data, all others simply read data (e.g. in a wizard-style dialog spanning several request/response cycles). This is easier to implement than it might sound, especially if you use Hibernate's features:"
-msgstr "<emphasis>Sesión Larga</emphasis> - La <literal>Session</literal> de Hibernate puede ser desconectada de la conexión JDBC subyacente después que se haya sido comprometida la transacción de base de datos, y reconectada cuando ocurra una nueva petición del cliente. Este patrón es conocido como <emphasis>sesión-por-transacción-de-aplicación</emphasis> y hace la re-unión innecesaria. Para aislar las modificaciones concurrentes se usa el versionado automático."
+#. Tag: para
+#: transactions.xml:176
+#, no-c-format
+msgid ""
+"Clearly, we have to use several database transactions to implement the "
+"converastion. In this case, maintaining isolation of business processes "
+"becomes the partial responsibility of the application tier. A single "
+"conversation usually spans several database transactions. It will be atomic "
+"if only one of these database transactions (the last one) stores the updated "
+"data, all others simply read data (e.g. in a wizard-style dialog spanning "
+"several request/response cycles). This is easier to implement than it might "
+"sound, especially if you use Hibernate's features:"
+msgstr ""
+"Claramente, tenemos que usar muchas transacciones de base de datos para "
+"implementar la transacción de aplicación. En este caso, mantener el "
+"aislamiento de los procesos de negocio se vuelve una responsabilidad parcial "
+"de la capa de aplicación. Una sola transacción de aplicación usualmente "
+"abarca varias transacciones de base de datos. Será atómica si sólo una de "
+"estas transacciones de base de datos (la última) almacena los datos "
+"actualizados, todas las otras simplemente leen datos (por ejemplo, en un "
+"diálogo estilo-asistente abarcando muchos ciclos petición/respuesta). Esto "
+"es más fácil de implementar de lo que suena, especialmente si usas las "
+"funcionalidades de Hibernate:"
-#: index.docbook:189
-msgid "<emphasis>Automatic Versioning</emphasis> - Hibernate can do automatic optimistic concurrency control for you, it can automatically detect if a concurrent modification occured during user think time. Usually we only check at the end of the conversation."
-msgstr "Tanto <emphasis>sesión-por-petición-con-objetos-separados</emphasis> como <emphasis>sesión-por-transacción-de-aplicación</emphasis>, ambas tienen ventajas y desventajas, las discutimos más adelante en este capítulo en el contexto del control optimista de concurrencia."
+#. Tag: para
+#: transactions.xml:189
+#, no-c-format
+msgid ""
+"<emphasis>Automatic Versioning</emphasis> - Hibernate can do automatic "
+"optimistic concurrency control for you, it can automatically detect if a "
+"concurrent modification occured during user think time. Usually we only "
+"check at the end of the conversation."
+msgstr ""
+"<emphasis>Versionado Automático</emphasis> - Hibernate puede llevar un "
+"control automático de concurrencia optimista por ti, puede detectar "
+"automáticamente si una modificación concurrente ha ocurrido durante el "
+"tiempo de pensar del usuario."
-#: index.docbook:197
-msgid "<emphasis>Detached Objects</emphasis> - If you decide to use the already discussed <emphasis>session-per-request</emphasis> pattern, all loaded instances will be in detached state during user think time. Hibernate allows you to reattach the objects and persist the modifications, the pattern is called <emphasis>session-per-request-with-detached-objects</emphasis>. Automatic versioning is used to isolate concurrent modifications."
-msgstr "Considerando la identidad del objeto"
+#. Tag: para
+#: transactions.xml:197
+#, no-c-format
+msgid ""
+"<emphasis>Detached Objects</emphasis> - If you decide to use the already "
+"discussed <emphasis>session-per-request</emphasis> pattern, all loaded "
+"instances will be in detached state during user think time. Hibernate allows "
+"you to reattach the objects and persist the modifications, the pattern is "
+"called <emphasis>session-per-request-with-detached-objects</emphasis>. "
+"Automatic versioning is used to isolate concurrent modifications."
+msgstr ""
+"<emphasis>Objetos Separados</emphasis> - Si decides usar el ya discutido "
+"patrón de <emphasis>sesión-por-petición</emphasis>, todas las instancias "
+"cargadas estarán en estado separado durante el tiempo de pensar del usuario. "
+"Hibernate te permite volver a unir los objetos y hacer persistentes las "
+"modificaciones. El patrón se llama <emphasis>sesión-por-petición-con-objetos-"
+"separados</emphasis>. Se usa versionado automático para aislar las "
+"modificaciones concurrentes."
-#: index.docbook:207
-msgid "<emphasis>Extended (or Long) Session</emphasis> - The Hibernate <literal>Session</literal> may be disconnected from the underlying JDBC connection after the database transaction has been committed, and reconnected when a new client request occurs. This pattern is known as <emphasis>session-per-conversation</emphasis> and makes even reattachment unnecessary. Automatic versioning is used to isolate concurrent modifications and the <literal>Session</literal> is usually not allowed to be flushed automatically, but explicitely."
-msgstr "Una aplicación puede acceder concurrentemente a el mismo estado persistente en dos <literal>Session</literal>s diferentes. Sin embargo, una instancia de una clase persistente nunca se comparte entre dos instancias de <literal>Session</literal>. Por lo tanto existen dos nociones diferentes de identidad:"
+#. Tag: para
+#: transactions.xml:207
+#, no-c-format
+msgid ""
+"<emphasis>Extended (or Long) Session</emphasis> - The Hibernate "
+"<literal>Session</literal> may be disconnected from the underlying JDBC "
+"connection after the database transaction has been committed, and "
+"reconnected when a new client request occurs. This pattern is known as "
+"<emphasis>session-per-conversation</emphasis> and makes even reattachment "
+"unnecessary. Automatic versioning is used to isolate concurrent "
+"modifications and the <literal>Session</literal> is usually not allowed to "
+"be flushed automatically, but explicitely."
+msgstr ""
+"<emphasis>Sesión Larga</emphasis> - La <literal>Session</literal> de "
+"Hibernate puede ser desconectada de la conexión JDBC subyacente después que "
+"se haya sido comprometida la transacción de base de datos, y reconectada "
+"cuando ocurra una nueva petición del cliente. Este patrón es conocido como "
+"<emphasis>sesión-por-transacción-de-aplicación</emphasis> y hace la re-unión "
+"innecesaria. Para aislar las modificaciones concurrentes se usa el "
+"versionado automático."
-#: index.docbook:220
-msgid "Both <emphasis>session-per-request-with-detached-objects</emphasis> and <emphasis>session-per-conversation</emphasis> have advantages and disadvantages, we discuss them later in this chapter in the context of optimistic concurrency control."
-msgstr "Identidad de Base de Datos"
+#. Tag: para
+#: transactions.xml:220
+#, no-c-format
+msgid ""
+"Both <emphasis>session-per-request-with-detached-objects</emphasis> and "
+"<emphasis>session-per-conversation</emphasis> have advantages and "
+"disadvantages, we discuss them later in this chapter in the context of "
+"optimistic concurrency control."
+msgstr ""
+"Tanto <emphasis>sesión-por-petición-con-objetos-separados</emphasis> como "
+"<emphasis>sesión-por-transacción-de-aplicación</emphasis>, ambas tienen "
+"ventajas y desventajas, las discutimos más adelante en este capítulo en el "
+"contexto del control optimista de concurrencia."
-#: index.docbook:229
+#. Tag: title
+#: transactions.xml:229
+#, no-c-format
msgid "Considering object identity"
-msgstr "foo.getId().equals( bar.getId() )"
+msgstr "Considerando la identidad del objeto"
-#: index.docbook:231
-msgid "An application may concurrently access the same persistent state in two different <literal>Session</literal>s. However, an instance of a persistent class is never shared between two <literal>Session</literal> instances. Hence there are two different notions of identity:"
-msgstr "Identidad JVM"
+#. Tag: para
+#: transactions.xml:231
+#, no-c-format
+msgid ""
+"An application may concurrently access the same persistent state in two "
+"different <literal>Session</literal>s. However, an instance of a persistent "
+"class is never shared between two <literal>Session</literal> instances. "
+"Hence there are two different notions of identity:"
+msgstr ""
+"Una aplicación puede acceder concurrentemente a el mismo estado persistente "
+"en dos <literal>Session</literal>s diferentes. Sin embargo, una instancia de "
+"una clase persistente nunca se comparte entre dos instancias de "
+"<literal>Session</literal>. Por lo tanto existen dos nociones diferentes de "
+"identidad:"
-#: index.docbook:240
+#. Tag: term
+#: transactions.xml:240
+#, no-c-format
msgid "Database Identity"
-msgstr "foo==bar"
+msgstr "Identidad de Base de Datos"
-#: index.docbook:243
+#. Tag: literal
+#: transactions.xml:243
+#, no-c-format
msgid "foo.getId().equals( bar.getId() )"
-msgstr "Entonces para objetos unidos a una <literal>Session</literal> <emphasis>en particular</emphasis> (es decir en el ámbito de una <literal>Session</literal>) las dos nociones son equivalentes, y la identidad JVM para la identidad de base de datos está garantizada por Hibernate. Sin embargo, mientras la aplicación acceda concurrentemente al \"mismo\" (identidad persistente) objeto de negocio en dos sesiones diferentes, las dos instancias serán realmente \"diferentes\" (identidad JVM). Los conflictos se resuelven (con versionado automático) en tiempo de limpieza (flush) usando un enfoque optimista."
+msgstr "foo.getId().equals( bar.getId() )"
-#: index.docbook:248
+#. Tag: term
+#: transactions.xml:248
+#, no-c-format
msgid "JVM Identity"
-msgstr "Este enfoque deja que Hibernate y la base de datos se preocupen sobre la concurrencia. Además provee la mejor escalabilidad, ya que garantizando la identidad un unidades de trabajo monohebra no se necesitan bloqueos caros u otros medios de sincronización. La aplicación nunca necesita sincronizar sobre ningún objeto de negocio, siempre que se apegue a una sola hebra por <literal>Session</literal>. Dentro de una <literal>Session</literal> la aplicación puede usar con seguridad <literal>==</literal> para comparar objetos."
+msgstr "Identidad JVM"
-#: index.docbook:251
+#. Tag: literal
+#: transactions.xml:251
+#, no-c-format
msgid "foo==bar"
-msgstr "Sin embargo, una aplicación que usa <literal>==</literal> fuera de una <literal>Session</literal>, podría ver resultados inesperados. Esto podría ocurrir incluso en sitios algo inesperados, por ejemplo, si pones dos instancias separadas dentro del mismo <literal>Set</literal>. Ambas podrían tener la misma identidad de base de datos (es decir, representar la misma fila), pero la identidad JVM, por definición, no está garantizada para las instancias en estado separado. El desarrollador tiene que sobrescribir los métodos <literal>equals()</literal> y <literal>hashCode()</literal> en las clases persistentes e implementar su propia noción de igualdad de objetos. Hay una advertencia: Nunca uses el identificador de base de datos para implementar la igualdad, usa una clave de negocio, una combinación de atributos únicos, usualmente inmutables. El identificador de base de datos cambiará si un objeto!
transitorio es hecho persistente. Si la instancia transitoria (usualmente junta a instancias separadas) es mantenida en un <literal>Set</literal>, cambiar el código hash rompe el contrato del <literal>Set</literal>. Los atributos para las claves de negocio no tienen que ser tan estables como las claves primarias de base de datos, sólo tienes que garantizar estabilidad en tanto los objetos estén en el mismo <literal>Set</literal>. Mira el sitio web de Hibernate para una discusión más cuidadosa de este tema. Nota también que éste no es un tema de Hibernate, sino simplemente cómo la identidad y la igualdad de los objetos Java tiene que ser implementada."
+msgstr "foo==bar"
-#: index.docbook:257
-msgid "Then for objects attached to a <emphasis>particular</emphasis> <literal>Session</literal> (i.e. in the scope of a <literal>Session</literal>) the two notions are equivalent, and JVM identity for database identity is guaranteed by Hibernate. However, while the application might concurrently access the \"same\" (persistent identity) business object in two different sessions, the two instances will actually be \"different\" (JVM identity). Conflicts are resolved using (automatic versioning) at flush/commit time, using an optimistic approach."
-msgstr "Temas comunes"
+#. Tag: para
+#: transactions.xml:257
+#, fuzzy, no-c-format
+msgid ""
+"Then for objects attached to a <emphasis>particular</emphasis> "
+"<literal>Session</literal> (i.e. in the scope of a <literal>Session</"
+"literal>) the two notions are equivalent, and JVM identity for database "
+"identity is guaranteed by Hibernate. However, while the application might "
+"concurrently access the \"same\" (persistent identity) business object in "
+"two different sessions, the two instances will actually be \"different"
+"\" (JVM identity). Conflicts are resolved using (automatic versioning) at "
+"flush/commit time, using an optimistic approach."
+msgstr ""
+"Entonces para objetos unidos a una <literal>Session</literal><emphasis>en "
+"particular</emphasis> (es decir en el ámbito de una <literal>Session</"
+"literal>) las dos nociones son equivalentes, y la identidad JVM para la "
+"identidad de base de datos está garantizada por Hibernate. Sin embargo, "
+"mientras la aplicación acceda concurrentemente al \"mismo\" (identidad "
+"persistente) objeto de negocio en dos sesiones diferentes, las dos "
+"instancias serán realmente \"diferentes\" (identidad JVM). Los conflictos se "
+"resuelven (con versionado automático) en tiempo de limpieza (flush) usando "
+"un enfoque optimista."
-#: index.docbook:266
-msgid "This approach leaves Hibernate and the database to worry about concurrency; it also provides the best scalability, since guaranteeing identity in single-threaded units of work only doesn't need expensive locking or other means of synchronization. The application never needs to synchronize on any business object, as long as it sticks to a single thread per <literal>Session</literal>. Within a <literal>Session</literal> the application may safely use <literal>==</literal> to compare objects."
-msgstr "Nunca uses los antipatrones <emphasis>sesión-por-sesión-de-usuario</emphasis> o <emphasis>sesión-por-aplicación</emphasis> (por supuesto, hay raras excepciones a esta regla). Nota que algunis de los siguientes temas podrían también aparecer con los patrones recomendados. Asegúrate que entiendes las implicaciones antes de tomar una decisión de diseño:"
+#. Tag: para
+#: transactions.xml:266
+#, no-c-format
+msgid ""
+"This approach leaves Hibernate and the database to worry about concurrency; "
+"it also provides the best scalability, since guaranteeing identity in single-"
+"threaded units of work only doesn't need expensive locking or other means of "
+"synchronization. The application never needs to synchronize on any business "
+"object, as long as it sticks to a single thread per <literal>Session</"
+"literal>. Within a <literal>Session</literal> the application may safely use "
+"<literal>==</literal> to compare objects."
+msgstr ""
+"Este enfoque deja que Hibernate y la base de datos se preocupen sobre la "
+"concurrencia. Además provee la mejor escalabilidad, ya que garantizando la "
+"identidad un unidades de trabajo monohebra no se necesitan bloqueos caros u "
+"otros medios de sincronización. La aplicación nunca necesita sincronizar "
+"sobre ningún objeto de negocio, siempre que se apegue a una sola hebra por "
+"<literal>Session</literal>. Dentro de una <literal>Session</literal> la "
+"aplicación puede usar con seguridad <literal>==</literal> para comparar "
+"objetos."
-#: index.docbook:275
-msgid "However, an application that uses <literal>==</literal> outside of a <literal>Session</literal>, might see unexpected results. This might occur even in some unexpected places, for example, if you put two detached instances into the same <literal>Set</literal>. Both might have the same database identity (i.e. they represent the same row), but JVM identity is by definition not guaranteed for instances in detached state. The developer has to override the <literal>equals()</literal> and <literal>hashCode()</literal> methods in persistent classes and implement his own notion of object equality. There is one caveat: Never use the database identifier to implement equality, use a business key, a combination of unique, usually immutable, attributes. The database identifier will change if a transient object is made persistent. If the transient instance (usually together with detached instances) is held in a <literal>Set</literal>, changing the hashcode breaks the contract of t!
he <literal>Set</literal>. Attributes for business keys don't have to be as stable as database primary keys, you only have to guarantee stability as long as the objects are in the same <literal>Set</literal>. See the Hibernate website for a more thorough discussion of this issue. Also note that this is not a Hibernate issue, but simply how Java object identity and equality has to be implemented."
-msgstr "Una <literal>Session</literal> no es segura entre hebras. Las cosas que se suponen que funcionan concurrentemente, como peticiones HTTP, beans de sesión, o workers de Swing, provocarán condiciones de competencia si una instancia de <literal>Session</literal> fuese compartida. Si guardas tu <literal>Session</literal> de Hibernate en tu <literal>HttpSession</literal> (discutido más adelante), debes considerar sincronizar el acceso a tu sesión HTTP. De otro modo, un usuario que hace click lo suficientemente rápido puede llegar a usar la misma <literal>Session</literal> en dos hebras ejecutándose concurrentemente."
+#. Tag: para
+#: transactions.xml:275
+#, no-c-format
+msgid ""
+"However, an application that uses <literal>==</literal> outside of a "
+"<literal>Session</literal>, might see unexpected results. This might occur "
+"even in some unexpected places, for example, if you put two detached "
+"instances into the same <literal>Set</literal>. Both might have the same "
+"database identity (i.e. they represent the same row), but JVM identity is by "
+"definition not guaranteed for instances in detached state. The developer has "
+"to override the <literal>equals()</literal> and <literal>hashCode()</"
+"literal> methods in persistent classes and implement his own notion of "
+"object equality. There is one caveat: Never use the database identifier to "
+"implement equality, use a business key, a combination of unique, usually "
+"immutable, attributes. The database identifier will change if a transient "
+"object is made persistent. If the transient instance (usually together with "
+"detached instances) is held in a <literal>Set</literal>, changing the "
+"hashcode breaks the contract of the <literal>Set</literal>. Attributes for "
+"business keys don't have to be as stable as database primary keys, you only "
+"have to guarantee stability as long as the objects are in the same "
+"<literal>Set</literal>. See the Hibernate website for a more thorough "
+"discussion of this issue. Also note that this is not a Hibernate issue, but "
+"simply how Java object identity and equality has to be implemented."
+msgstr ""
+"Sin embargo, una aplicación que usa <literal>==</literal> fuera de una "
+"<literal>Session</literal>, podría ver resultados inesperados. Esto podría "
+"ocurrir incluso en sitios algo inesperados, por ejemplo, si pones dos "
+"instancias separadas dentro del mismo <literal>Set</literal>. Ambas podrían "
+"tener la misma identidad de base de datos (es decir, representar la misma "
+"fila), pero la identidad JVM, por definición, no está garantizada para las "
+"instancias en estado separado. El desarrollador tiene que sobrescribir los "
+"métodos <literal>equals()</literal> y <literal>hashCode()</literal> en las "
+"clases persistentes e implementar su propia noción de igualdad de objetos. "
+"Hay una advertencia: Nunca uses el identificador de base de datos para "
+"implementar la igualdad, usa una clave de negocio, una combinación de "
+"atributos únicos, usualmente inmutables. El identificador de base de datos "
+"cambiará si un objeto transitorio es hecho persistente. Si la instancia "
+"transitoria (usualmente junta a instancias separadas) es mantenida en un "
+"<literal>Set</literal>, cambiar el código hash rompe el contrato del "
+"<literal>Set</literal>. Los atributos para las claves de negocio no tienen "
+"que ser tan estables como las claves primarias de base de datos, sólo tienes "
+"que garantizar estabilidad en tanto los objetos estén en el mismo "
+"<literal>Set</literal>. Mira el sitio web de Hibernate para una discusión "
+"más cuidadosa de este tema. Nota también que éste no es un tema de "
+"Hibernate, sino simplemente cómo la identidad y la igualdad de los objetos "
+"Java tiene que ser implementada."
-#: index.docbook:296
+#. Tag: title
+#: transactions.xml:296
+#, no-c-format
msgid "Common issues"
-msgstr "Una excepción lanzada por Hibernate significa que tienes que deshacer (rollback) tu transacción de base de datos y cerrar la <literal>Session</literal> inmediatamente (discutido en más detalle luego). Si tu <literal>Session</literal> está ligada a la aplicación, tienes que parar la aplicación. Deshacer (rollback) la transacción de base de datos no pone a tus objetos de vuelta al estado en que estaban al comienzo de la transacción. Esto significa que el estado de la base de datos y los objetos de negocio quedan fuera de sincronía. Usualmente esto no es un problema, pues las excepciones no son recuperables y tienes que volver a comenzar después del rollback de todos modos."
+msgstr "Temas comunes"
-#: index.docbook:298
-msgid "Never use the anti-patterns <emphasis>session-per-user-session</emphasis> or <emphasis>session-per-application</emphasis> (of course, there are rare exceptions to this rule). Note that some of the following issues might also appear with the recommended patterns, make sure you understand the implications before making a design decision:"
-msgstr "La <literal>Session</literal> pone en caché todo objeto que esté en estado persistente (vigilado y chequeado por estado sucio por Hibernate). Esto significa que crece sin fin hasta que obtienes una OutOfMemoryException, si la mantienes abierta por un largo tiempo o simplemente cargas demasiados datos. Una solución para esto es llamar a <literal>clear()</literal> y <literal>evict()</literal> para gestionar el caché de la <literal>Session</literal>, pero probalemente debas considerar un procedimiento almacenado si necesitas operaciones de datos masivas. Se muestran algunas soluciones en <xref linkend=\"batch\"/>. Mantener una <literal>Session</literal> abierta por la duración de una sesión de usuario significa también una alta probabilidad de datos añejos."
+#. Tag: para
+#: transactions.xml:298
+#, no-c-format
+msgid ""
+"Never use the anti-patterns <emphasis>session-per-user-session</emphasis> or "
+"<emphasis>session-per-application</emphasis> (of course, there are rare "
+"exceptions to this rule). Note that some of the following issues might also "
+"appear with the recommended patterns, make sure you understand the "
+"implications before making a design decision:"
+msgstr ""
+"Nunca uses los antipatrones <emphasis>sesión-por-sesión-de-usuario</"
+"emphasis> o <emphasis>sesión-por-aplicación</emphasis> (por supuesto, hay "
+"raras excepciones a esta regla). Nota que algunis de los siguientes temas "
+"podrían también aparecer con los patrones recomendados. Asegúrate que "
+"entiendes las implicaciones antes de tomar una decisión de diseño:"
-#: index.docbook:307
-msgid "A <literal>Session</literal> is not thread-safe. Things which are supposed to work concurrently, like HTTP requests, session beans, or Swing workers, will cause race conditions if a <literal>Session</literal> instance would be shared. If you keep your Hibernate <literal>Session</literal> in your <literal>HttpSession</literal> (discussed later), you should consider synchronizing access to your Http session. Otherwise, a user that clicks reload fast enough may use the same <literal>Session</literal> in two concurrently running threads."
-msgstr "Demarcación de la transacción de base de datos"
+#. Tag: para
+#: transactions.xml:307
+#, no-c-format
+msgid ""
+"A <literal>Session</literal> is not thread-safe. Things which are supposed "
+"to work concurrently, like HTTP requests, session beans, or Swing workers, "
+"will cause race conditions if a <literal>Session</literal> instance would be "
+"shared. If you keep your Hibernate <literal>Session</literal> in your "
+"<literal>HttpSession</literal> (discussed later), you should consider "
+"synchronizing access to your Http session. Otherwise, a user that clicks "
+"reload fast enough may use the same <literal>Session</literal> in two "
+"concurrently running threads."
+msgstr ""
+"Una <literal>Session</literal> no es segura entre hebras. Las cosas que se "
+"suponen que funcionan concurrentemente, como peticiones HTTP, beans de "
+"sesión, o workers de Swing, provocarán condiciones de competencia si una "
+"instancia de <literal>Session</literal> fuese compartida. Si guardas tu "
+"<literal>Session</literal> de Hibernate en tu <literal>HttpSession</literal> "
+"(discutido más adelante), debes considerar sincronizar el acceso a tu sesión "
+"HTTP. De otro modo, un usuario que hace click lo suficientemente rápido "
+"puede llegar a usar la misma <literal>Session</literal> en dos hebras "
+"ejecutándose concurrentemente."
-#: index.docbook:318
-msgid "An exception thrown by Hibernate means you have to rollback your database transaction and close the <literal>Session</literal> immediately (discussed later in more detail). If your <literal>Session</literal> is bound to the application, you have to stop the application. Rolling back the database transaction doesn't put your business objects back into the state they were at the start of the transaction. This means the database state and the business objects do get out of sync. Usually this is not a problem, because exceptions are not recoverable and you have to start over after rollback anyway."
-msgstr "Los límites de las transacciones de base de datos (o sistema) son siempre necesarios. Ninguna comunicación con la base de datos puede darse fuera de una transacción de base de datos (esto parece confundir muchos desarrolladores acostumbrados al modo auto-commit). Siempre usa límites de transacción claros, incluso para las operaciones de sólo lectura. Dependiendo del nivel de aislamiento y las capacidades de base de datos, esto podría o no ser requerido, pero no hay un merma si siempre demarcas explícitamente las transacciones."
+#. Tag: para
+#: transactions.xml:318
+#, no-c-format
+msgid ""
+"An exception thrown by Hibernate means you have to rollback your database "
+"transaction and close the <literal>Session</literal> immediately (discussed "
+"later in more detail). If your <literal>Session</literal> is bound to the "
+"application, you have to stop the application. Rolling back the database "
+"transaction doesn't put your business objects back into the state they were "
+"at the start of the transaction. This means the database state and the "
+"business objects do get out of sync. Usually this is not a problem, because "
+"exceptions are not recoverable and you have to start over after rollback "
+"anyway."
+msgstr ""
+"Una excepción lanzada por Hibernate significa que tienes que deshacer "
+"(rollback) tu transacción de base de datos y cerrar la <literal>Session</"
+"literal> inmediatamente (discutido en más detalle luego). Si tu "
+"<literal>Session</literal> está ligada a la aplicación, tienes que parar la "
+"aplicación. Deshacer (rollback) la transacción de base de datos no pone a "
+"tus objetos de vuelta al estado en que estaban al comienzo de la "
+"transacción. Esto significa que el estado de la base de datos y los objetos "
+"de negocio quedan fuera de sincronía. Usualmente esto no es un problema, "
+"pues las excepciones no son recuperables y tienes que volver a comenzar "
+"después del rollback de todos modos."
-#: index.docbook:330
-msgid "The <literal>Session</literal> caches every object that is in persistent state (watched and checked for dirty state by Hibernate). This means it grows endlessly until you get an OutOfMemoryException, if you keep it open for a long time or simply load too much data. One solution for this is to call <literal>clear()</literal> and <literal>evict()</literal> to manage the <literal>Session</literal> cache, but you most likely should consider a Stored Procedure if you need mass data operations. Some solutions are shown in <xref linkend=\"batch\"/>. Keeping a <literal>Session</literal> open for the duration of a user session also means a high probability of stale data."
-msgstr "Una aplicación Hibernate puede ejecutarse en entornos no manejados (es decir, como independiente, Web simple, o aplicaciones Swing) y entornos manejados J2EE. En un entorno no manejado, Hibernate es usualmente responsable de su propio pool de conexiones de base de datos. El desarrollador de aplicaciones tiene que establecer manualmente los límites de transacción, en otras palabras, hacer begin, commit, o rollback las transacciones de base de datos por sí mismo. Un entorno manejado usualmente provee transacciones gestionadas por contenedor, con el ensamble de transacción definido declarativamente en descriptores de despliegue de beans de sesión EJB, por ejemplo. La demarcación programática de transacciones no es más necesario, incluso limpiar (flush) la <literal>Session</literal> es hecho automáticamente."
+#. Tag: para
+#: transactions.xml:330
+#, no-c-format
+msgid ""
+"The <literal>Session</literal> caches every object that is in persistent "
+"state (watched and checked for dirty state by Hibernate). This means it "
+"grows endlessly until you get an OutOfMemoryException, if you keep it open "
+"for a long time or simply load too much data. One solution for this is to "
+"call <literal>clear()</literal> and <literal>evict()</literal> to manage the "
+"<literal>Session</literal> cache, but you most likely should consider a "
+"Stored Procedure if you need mass data operations. Some solutions are shown "
+"in <xref linkend=\"batch\"/>. Keeping a <literal>Session</literal> open for "
+"the duration of a user session also means a high probability of stale data."
+msgstr ""
+"La <literal>Session</literal> pone en caché todo objeto que esté en estado "
+"persistente (vigilado y chequeado por estado sucio por Hibernate). Esto "
+"significa que crece sin fin hasta que obtienes una OutOfMemoryException, si "
+"la mantienes abierta por un largo tiempo o simplemente cargas demasiados "
+"datos. Una solución para esto es llamar a <literal>clear()</literal> y "
+"<literal>evict()</literal> para gestionar el caché de la <literal>Session</"
+"literal>, pero probalemente debas considerar un procedimiento almacenado si "
+"necesitas operaciones de datos masivas. Se muestran algunas soluciones en "
+"<xref linkend=\"batch\"/>. Mantener una <literal>Session</literal> abierta "
+"por la duración de una sesión de usuario significa también una alta "
+"probabilidad de datos añejos."
-#: index.docbook:348
+#. Tag: title
+#: transactions.xml:348
+#, no-c-format
msgid "Database transaction demarcation"
-msgstr "Sin embargo, frecuentemente es deseable mantener portable tu capa de persistencia. Hibernate ofrece una API de envoltura llamada <literal>Transaction</literal> que se traduce al sistema de transacciones nativo de tu entorno de despliegue. Esta API es realmente opcional, pero recomendamos fuertemente su uso salvo que estés en un bean de sesión CMT."
+msgstr "Demarcación de la transacción de base de datos"
-#: index.docbook:350
-msgid "Datatabase (or system) transaction boundaries are always necessary. No communication with the database can occur outside of a database transaction (this seems to confuse many developers who are used to the auto-commit mode). Always use clear transaction boundaries, even for read-only operations. Depending on your isolation level and database capabilities this might not be required but there is no downside if you always demarcate transactions explicitly. Certainly, a single database transaction is going to perform better than many small transactions, even for reading data."
-msgstr "Usualmente, finalizar una <literal>Session</literal> implica cuatro fases distintas:"
+#. Tag: para
+#: transactions.xml:350
+#, no-c-format
+msgid ""
+"Datatabase (or system) transaction boundaries are always necessary. No "
+"communication with the database can occur outside of a database transaction "
+"(this seems to confuse many developers who are used to the auto-commit "
+"mode). Always use clear transaction boundaries, even for read-only "
+"operations. Depending on your isolation level and database capabilities this "
+"might not be required but there is no downside if you always demarcate "
+"transactions explicitly. Certainly, a single database transaction is going "
+"to perform better than many small transactions, even for reading data."
+msgstr ""
+"Los límites de las transacciones de base de datos (o sistema) son siempre "
+"necesarios. Ninguna comunicación con la base de datos puede darse fuera de "
+"una transacción de base de datos (esto parece confundir muchos "
+"desarrolladores acostumbrados al modo auto-commit). Siempre usa límites de "
+"transacción claros, incluso para las operaciones de sólo lectura. "
+"Dependiendo del nivel de aislamiento y las capacidades de base de datos, "
+"esto podría o no ser requerido, pero no hay un merma si siempre demarcas "
+"explícitamente las transacciones."
-#: index.docbook:360
-msgid "A Hibernate application can run in non-managed (i.e. standalone, simple Web- or Swing applications) and managed J2EE environments. In a non-managed environment, Hibernate is usually responsible for its own database connection pool. The application developer has to manually set transaction boundaries, in other words, begin, commit, or rollback database transactions himself. A managed environment usually provides container-managed transactions (CMT), with the transaction assembly defined declaratively in deployment descriptors of EJB session beans, for example. Programmatic transaction demarcation is then no longer necessary."
-msgstr "limpiar (flush) la sesión"
+#. Tag: para
+#: transactions.xml:360
+#, no-c-format
+msgid ""
+"A Hibernate application can run in non-managed (i.e. standalone, simple Web- "
+"or Swing applications) and managed J2EE environments. In a non-managed "
+"environment, Hibernate is usually responsible for its own database "
+"connection pool. The application developer has to manually set transaction "
+"boundaries, in other words, begin, commit, or rollback database transactions "
+"himself. A managed environment usually provides container-managed "
+"transactions (CMT), with the transaction assembly defined declaratively in "
+"deployment descriptors of EJB session beans, for example. Programmatic "
+"transaction demarcation is then no longer necessary."
+msgstr ""
+"Una aplicación Hibernate puede ejecutarse en entornos no manejados (es "
+"decir, como independiente, Web simple, o aplicaciones Swing) y entornos "
+"manejados J2EE. En un entorno no manejado, Hibernate es usualmente "
+"responsable de su propio pool de conexiones de base de datos. El "
+"desarrollador de aplicaciones tiene que establecer manualmente los límites "
+"de transacción, en otras palabras, hacer begin, commit, o rollback las "
+"transacciones de base de datos por sí mismo. Un entorno manejado usualmente "
+"provee transacciones gestionadas por contenedor, con el ensamble de "
+"transacción definido declarativamente en descriptores de despliegue de beans "
+"de sesión EJB, por ejemplo. La demarcación programática de transacciones no "
+"es más necesario, incluso limpiar (flush) la <literal>Session</literal> es "
+"hecho automáticamente."
-#: index.docbook:370
-msgid "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. Hibernate offers a wrapper API called <literal>Transaction</literal> that translates into the native transaction system of your deployment environment. This API is actually optional, but we strongly encourage its use unless you are in a CMT session bean."
-msgstr "comprometer la transacción"
+#. Tag: para
+#: transactions.xml:370
+#, no-c-format
+msgid ""
+"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. Hibernate offers a wrapper API called "
+"<literal>Transaction</literal> that translates into the native transaction "
+"system of your deployment environment. This API is actually optional, but we "
+"strongly encourage its use unless you are in a CMT session bean."
+msgstr ""
+"Sin embargo, frecuentemente es deseable mantener portable tu capa de "
+"persistencia. Hibernate ofrece una API de envoltura llamada "
+"<literal>Transaction</literal> que se traduce al sistema de transacciones "
+"nativo de tu entorno de despliegue. Esta API es realmente opcional, pero "
+"recomendamos fuertemente su uso salvo que estés en un bean de sesión CMT."
-#: index.docbook:379
-msgid "Usually, ending a <literal>Session</literal> involves four distinct phases:"
-msgstr "cerrar la sesión"
+#. Tag: para
+#: transactions.xml:379
+#, no-c-format
+msgid ""
+"Usually, ending a <literal>Session</literal> involves four distinct phases:"
+msgstr ""
+"Usualmente, finalizar una <literal>Session</literal> implica cuatro fases "
+"distintas:"
-#: index.docbook:385
+#. Tag: para
+#: transactions.xml:385
+#, no-c-format
msgid "flush the session"
-msgstr "manejar excepciones"
+msgstr "limpiar (flush) la sesión"
-#: index.docbook:390
+#. Tag: para
+#: transactions.xml:390
+#, no-c-format
msgid "commit the transaction"
-msgstr "Limpiar la sesión ha sido discutido anteriormente, tendremos ahora una mirada más de cerca a la demarcación de transacciones y manejo de excepciones en sendos entornos manejado y no manejados."
+msgstr "comprometer la transacción"
-#: index.docbook:395
+#. Tag: para
+#: transactions.xml:395
+#, no-c-format
msgid "close the session"
-msgstr "Entorno no manejado"
+msgstr "cerrar la sesión"
-#: index.docbook:400
+#. Tag: para
+#: transactions.xml:400
+#, no-c-format
msgid "handle exceptions"
-msgstr "Si una capa de persistencia Hibernate se ejecuta en un entorno no manejado, las conexiones de base de datos son manejadas usualmente por el mecanismo de pooling de Hibernate. El idioma manejo de sesión/transacción se ve así:"
+msgstr "manejar excepciones"
-#: index.docbook:406
-msgid "Flushing the session has been discussed earlier, we'll now have a closer look at transaction demarcation and exception handling in both managed- and non-managed environments."
+#. Tag: para
+#: transactions.xml:406
+#, no-c-format
+msgid ""
+"Flushing the session has been discussed earlier, we'll now have a closer "
+"look at transaction demarcation and exception handling in both managed- and "
+"non-managed environments."
msgstr ""
- "<![CDATA[//Non-managed environment idiom\n"
- "Session sess = factory.openSession();\n"
- "Transaction tx = null;\n"
- "try {\n"
- " tx = sess.beginTransaction();\n"
- "\n"
- " // do some work\n"
- " ...\n"
- "\n"
- " tx.commit();\n"
- "}\n"
- "catch (RuntimeException e) {\n"
- " if (tx != null) tx.rollback();\n"
- " throw e; // or display error message\n"
- "}\n"
- "finally {\n"
- " sess.close();\n"
- "}]]>"
+"Limpiar la sesión ha sido discutido anteriormente, tendremos ahora una "
+"mirada más de cerca a la demarcación de transacciones y manejo de "
+"excepciones en sendos entornos manejado y no manejados."
-#: index.docbook:413
+#. Tag: title
+#: transactions.xml:413
+#, no-c-format
msgid "Non-managed environment"
-msgstr "No tienes que limpiar con <literal>flush()</literal> la <literal>Session</literal> explícitamente - la llamada a <literal>commit()</literal> automáticamente dispara la sincronización."
+msgstr "Entorno no manejado"
-#: index.docbook:415
-msgid "If a Hibernate persistence layer runs in a non-managed environment, database connections are usually handled by simple (i.e. non-DataSource) connection pools from which Hibernate obtains connections as needed. The session/transaction handling idiom looks like this:"
-msgstr "Una llamada a <literal>close()</literal> marca el fin de una sesión. La principal implicación de <literal>close()</literal> es que la conexión JDBC será abandonada por la sesión."
+#. Tag: para
+#: transactions.xml:415
+#, no-c-format
+msgid ""
+"If a Hibernate persistence layer runs in a non-managed environment, database "
+"connections are usually handled by simple (i.e. non-DataSource) connection "
+"pools from which Hibernate obtains connections as needed. The session/"
+"transaction handling idiom looks like this:"
+msgstr ""
+"Si una capa de persistencia Hibernate se ejecuta en un entorno no manejado, "
+"las conexiones de base de datos son manejadas usualmente por el mecanismo de "
+"pooling de Hibernate. El idioma manejo de sesión/transacción se ve así:"
-#: index.docbook:422
+#. Tag: programlisting
+#: transactions.xml:422
+#, no-c-format
msgid ""
- "<![CDATA[// Non-managed environment idiom\n"
- "Session sess = factory.openSession();\n"
- "Transaction tx = null;\n"
- "try {\n"
- " tx = sess.beginTransaction();\n"
- "\n"
- " // do some work\n"
- " ...\n"
- "\n"
- " tx.commit();\n"
- "}\n"
- "catch (RuntimeException e) {\n"
- " if (tx != null) tx.rollback();\n"
- " throw e; // or display error message\n"
- "}\n"
- "finally {\n"
- " sess.close();\n"
- "}]]>"
-msgstr "Este código Java es portable y se ejecuta tanto en entornos no manejados como en entornos JTA."
+"<![CDATA[// Non-managed environment idiom\n"
+"Session sess = factory.openSession();\n"
+"Transaction tx = null;\n"
+"try {\n"
+" tx = sess.beginTransaction();\n"
+"\n"
+" // do some work\n"
+" ...\n"
+"\n"
+" tx.commit();\n"
+"}\n"
+"catch (RuntimeException e) {\n"
+" if (tx != null) tx.rollback();\n"
+" throw e; // or display error message\n"
+"}\n"
+"finally {\n"
+" sess.close();\n"
+"}]]>"
+msgstr ""
-#: index.docbook:424
-msgid "You don't have to <literal>flush()</literal> the <literal>Session</literal> explicitly - the call to <literal>commit()</literal> automatically triggers the synchronization (depending upon the <xref linkend=\"objectstate-flushing\"/>FlushMode for the session. A call to <literal>close()</literal> marks the end of a session. The main implication of <literal>close()</literal> is that the JDBC connection will be relinquished by the session. This Java code is portable and runs in both non-managed and JTA environments."
-msgstr "Muy probablemente nunca veas este idioma en código de negocio en una aplicación normal; las excepciones fatales (sistema) deben siempre ser capturadas en la \"cima\". En otras palabras, el código que ejecuta las llamadas de Hibernate (en la capa de persistencia) y el código que maneja <literal>RuntimeException</literal> (y usualmente sólo puede limpiar y salir) están en capas diferentes. Esto puede ser un desafío de diseñarlo tú mismo y debes usar los servicios de contenedor J2EE/EJB en cuanto estuviesen disponibles. El manejo de excepciones se dicute más adelante en este capítulo."
+#. Tag: para
+#: transactions.xml:424
+#, no-c-format
+msgid ""
+"You don't have to <literal>flush()</literal> the <literal>Session</literal> "
+"explicitly - the call to <literal>commit()</literal> automatically triggers "
+"the synchronization (depending upon the <link linkend=\"objectstate-flushing"
+"\">FlushMode</link> for the session. A call to <literal>close()</literal> "
+"marks the end of a session. The main implication of <literal>close()</"
+"literal> is that the JDBC connection will be relinquished by the session. "
+"This Java code is portable and runs in both non-managed and JTA environments."
+msgstr ""
+"No tienes que limpiar con <literal>flush()</literal> la <literal>Session</"
+"literal> explícitamente - la llamada a <literal>commit()</literal> "
+"automáticamente dispara la sincronización. Una llamada a <literal>close()</"
+"literal> marca el fin de una sesión. La principal implicación de "
+"<literal>close()</literal> es que la conexión JDBC será abandonada por la "
+"sesión."
-#: index.docbook:433
-msgid "A much more flexible solution is Hibernate's built-in \"current session\" context management, as described earlier:"
-msgstr "Nota que debes seleccionar <literal>org.hibernate.transaction.JDBCTransactionFactory</literal> (que es el por defecto)."
+#. Tag: para
+#: transactions.xml:433
+#, no-c-format
+msgid ""
+"A much more flexible solution is Hibernate's built-in \"current session\" "
+"context management, as described earlier:"
+msgstr ""
+"Este código Java es portable y se ejecuta tanto en entornos no manejados "
+"como en entornos JTA."
-#: index.docbook:438
+#. Tag: programlisting
+#: transactions.xml:438
+#, no-c-format
msgid ""
- "<![CDATA[// Non-managed environment idiom with getCurrentSession()\n"
- "try {\n"
- " factory.getCurrentSession().beginTransaction();\n"
- "\n"
- " // do some work\n"
- " ...\n"
- "\n"
- " factory.getCurrentSession().getTransaction().commit();\n"
- "}\n"
- "catch (RuntimeException e) {\n"
- " factory.getCurrentSession().getTransaction().rollback();\n"
- " throw e; // or display error message\n"
- "}]]>"
-msgstr "Usando JTA"
+"<![CDATA[// Non-managed environment idiom with getCurrentSession()\n"
+"try {\n"
+" factory.getCurrentSession().beginTransaction();\n"
+"\n"
+" // do some work\n"
+" ...\n"
+"\n"
+" factory.getCurrentSession().getTransaction().commit();\n"
+"}\n"
+"catch (RuntimeException e) {\n"
+" factory.getCurrentSession().getTransaction().rollback();\n"
+" throw e; // or display error message\n"
+"}]]>"
+msgstr ""
-#: index.docbook:440
-msgid "You will very likely never see these code snippets in a regular application; fatal (system) exceptions should always be caught at the \"top\". In other words, the code that executes Hibernate calls (in the persistence layer) and the code that handles <literal>RuntimeException</literal> (and usually can only clean up and exit) are in different layers. The current context management by Hibernate can significantly simplify this design, as all you need is access to a <literal>SessionFactory</literal>. Exception handling is discussed later in this chapter."
-msgstr "Si tu capa de persistencia se ejecuta en un servidor de aplicaciones (por ejemplo, detrás de beans de sesión EJB), cada conexión de datasource obtenida por Hibernate será parte automáticamente de la transacción JTA global. Hibernate ofrece dos estrategias para esta integración."
+#. Tag: para
+#: transactions.xml:440
+#, no-c-format
+msgid ""
+"You will very likely never see these code snippets in a regular application; "
+"fatal (system) exceptions should always be caught at the \"top\". In other "
+"words, the code that executes Hibernate calls (in the persistence layer) and "
+"the code that handles <literal>RuntimeException</literal> (and usually can "
+"only clean up and exit) are in different layers. The current context "
+"management by Hibernate can significantly simplify this design, as all you "
+"need is access to a <literal>SessionFactory</literal>. Exception handling is "
+"discussed later in this chapter."
+msgstr ""
+"Muy probablemente nunca veas este idioma en código de negocio en una "
+"aplicación normal; las excepciones fatales (sistema) deben siempre ser "
+"capturadas en la \"cima\". En otras palabras, el código que ejecuta las "
+"llamadas de Hibernate (en la capa de persistencia) y el código que maneja "
+"<literal>RuntimeException</literal> (y usualmente sólo puede limpiar y "
+"salir) están en capas diferentes. Esto puede ser un desafío de diseñarlo tú "
+"mismo y debes usar los servicios de contenedor J2EE/EJB en cuanto estuviesen "
+"disponibles. El manejo de excepciones se dicute más adelante en este "
+"capítulo."
-#: index.docbook:450
-msgid "Note that you should select <literal>org.hibernate.transaction.JDBCTransactionFactory</literal> (which is the default), and for the second example <literal>\"thread\"</literal> as your <literal>hibernate.current_session_context_class</literal>."
-msgstr "Si usas transacciones gestionadas-por-bean (BMT) Hibernate le dirá al servidor de aplicaciones que comience y finalice una transacción BMT si usas la API de <literal>Transaction</literal>. De modo que, el código de gestión de la transacción es idéntico al de un entorno no manejado."
+#. Tag: para
+#: transactions.xml:450
+#, no-c-format
+msgid ""
+"Note that you should select <literal>org.hibernate.transaction."
+"JDBCTransactionFactory</literal> (which is the default), and for the second "
+"example <literal>\"thread\"</literal> as your <literal>hibernate."
+"current_session_context_class</literal>."
+msgstr ""
+"Nota que debes seleccionar <literal>org.hibernate.transaction."
+"JDBCTransactionFactory</literal> (que es el por defecto)."
-#: index.docbook:459
+#. Tag: title
+#: transactions.xml:459
+#, no-c-format
msgid "Using JTA"
+msgstr "Usando JTA"
+
+#. Tag: para
+#: transactions.xml:461
+#, no-c-format
+msgid ""
+"If your persistence layer runs in an application server (e.g. behind EJB "
+"session beans), every datasource connection obtained by Hibernate will "
+"automatically be part of the global JTA transaction. You can also install a "
+"standalone JTA implementation and use it without EJB. Hibernate offers two "
+"strategies for JTA integration."
msgstr ""
- "<![CDATA[// BMT idiom\n"
- "Session sess = factory.openSession();\n"
- "Transaction tx = null;\n"
- "try {\n"
- " tx = sess.beginTransaction();\n"
- "\n"
- " // do some work\n"
- " ...\n"
- "\n"
- " tx.commit();\n"
- "}\n"
- "catch (RuntimeException e) {\n"
- " if (tx != null) tx.rollback();\n"
- " throw e; // or display error message\n"
- "}\n"
- "finally {\n"
- " sess.close();\n"
- "}]]>"
+"Si tu capa de persistencia se ejecuta en un servidor de aplicaciones (por "
+"ejemplo, detrás de beans de sesión EJB), cada conexión de datasource "
+"obtenida por Hibernate será parte automáticamente de la transacción JTA "
+"global. Hibernate ofrece dos estrategias para esta integración."
-#: index.docbook:461
-msgid "If your persistence layer runs in an application server (e.g. behind EJB session beans), every datasource connection obtained by Hibernate will automatically be part of the global JTA transaction. You can also install a standalone JTA implementation and use it without EJB. Hibernate offers two strategies for JTA integration."
-msgstr "Con CMT, la demarcación de la transacción se hace en descriptores de despliegue de beans de sesión, no programáticamente. Si no quieres limpiar (flush) y cerrar manualmente la <literal>Session</literal> por ti mismo, solamente establece <literal>hibernate.transaction.flush_before_completion</literal> a <literal>true</literal>, <literal>hibernate.connection.release_mode</literal> a <literal>after_statement</literal> o <literal>auto</literal> y <literal>hibernate.transaction.auto_close_session</literal> a <literal>true</literal>. Hibernate limpiará y cerrará entonces automáticamente la <literal>Session</literal> para ti. Lo único que resta es deshacer (rollback) la transacción cuando ocurra una excepción. Afortunadamente, en un bean CMT, incluso esto ocurre automáticamente, ya que una <literal>RuntimeException</literal> no manejada disparada por un método de un bean de sesión le!
dice al contenedor que ponga a deshacer la transacción global. <emphasis>Esto significa que, en CMT, no necesitas usar en absoluto la API de <literal>Transaction</literal> de Hibernate.</emphasis>"
+#. Tag: para
+#: transactions.xml:468
+#, no-c-format
+msgid ""
+"If you use bean-managed transactions (BMT) Hibernate will tell the "
+"application server to start and end a BMT transaction if you use the "
+"<literal>Transaction</literal> API. So, the transaction management code is "
+"identical to the non-managed environment."
+msgstr ""
+"Si usas transacciones gestionadas-por-bean (BMT) Hibernate le dirá al "
+"servidor de aplicaciones que comience y finalice una transacción BMT si usas "
+"la API de <literal>Transaction</literal>. De modo que, el código de gestión "
+"de la transacción es idéntico al de un entorno no manejado."
-#: index.docbook:468
-msgid "If you use bean-managed transactions (BMT) Hibernate will tell the application server to start and end a BMT transaction if you use the <literal>Transaction</literal> API. So, the transaction management code is identical to the non-managed environment."
-msgstr "Nota que debes elegir <literal>org.hibernate.transaction.JTATransactionFactory</literal> en un bean de sesión BMT, y <literal>org.hibernate.transaction.CMTTransactionFactory</literal> en un bean de sesión CMT, cuando configures la fábrica de transacciones de Hibernate. Recuerda además establecer <literal>org.hibernate.transaction.manager_lookup_class</literal>."
+#. Tag: programlisting
+#: transactions.xml:474
+#, no-c-format
+msgid ""
+"<![CDATA[// BMT idiom\n"
+"Session sess = factory.openSession();\n"
+"Transaction tx = null;\n"
+"try {\n"
+" tx = sess.beginTransaction();\n"
+"\n"
+" // do some work\n"
+" ...\n"
+"\n"
+" tx.commit();\n"
+"}\n"
+"catch (RuntimeException e) {\n"
+" if (tx != null) tx.rollback();\n"
+" throw e; // or display error message\n"
+"}\n"
+"finally {\n"
+" sess.close();\n"
+"}]]>"
+msgstr ""
-#: index.docbook:474
+#. Tag: para
+#: transactions.xml:476
+#, no-c-format
msgid ""
- "<![CDATA[// BMT idiom\n"
- "Session sess = factory.openSession();\n"
- "Transaction tx = null;\n"
- "try {\n"
- " tx = sess.beginTransaction();\n"
- "\n"
- " // do some work\n"
- " ...\n"
- "\n"
- " tx.commit();\n"
- "}\n"
- "catch (RuntimeException e) {\n"
- " if (tx != null) tx.rollback();\n"
- " throw e; // or display error message\n"
- "}\n"
- "finally {\n"
- " sess.close();\n"
- "}]]>"
-msgstr "Si trabajas en un entorno CMT, y usas limpieza (flushing) y cierre automáticos de la sesión, podrías querer también usar la misma sesión en diferentes partes de tu código. Típicamente, en un entorno no manejado, usarías una variable <literal>ThreadLocal</literal> para tener la sesión, pero una sola petición de EJB puede ejecutarse en diferentes hebras (por ejemplo, un bean de sesión llamando a otro bean de sesión). Si no quieres molestarte en pasar tu <literal>Session</literal> por alrededor, la <literal>SessionFactory</literal> provee el método <literal>getCurrentSession()</literal>, que devuelve una sesión que está pegada al contexto de transacción JTA. ¡Esta es la forma más fácil de integrar Hibernate en una aplicación! La sesión \"actual\" siempre tiene habilitados limpieza, cierre y liberación de conexió!
;n automáticos (sin importar la configuración de las propiedades anteriores). Nuestra idioma de gestión de sesión/transacción se reduce a:"
+"If you want to use a transaction-bound <literal>Session</literal>, that is, "
+"the <literal>getCurrentSession()</literal> functionality for easy context "
+"propagation, you will have to use the JTA <literal>UserTransaction</literal> "
+"API directly:"
+msgstr ""
+"Con CMT, la demarcación de la transacción se hace en descriptores de "
+"despliegue de beans de sesión, no programáticamente. Si no quieres limpiar "
+"(flush) y cerrar manualmente la <literal>Session</literal> por ti mismo, "
+"solamente establece <literal>hibernate.transaction.flush_before_completion</"
+"literal> a <literal>true</literal>, <literal>hibernate.connection."
+"release_mode</literal> a <literal>after_statement</literal> o <literal>auto</"
+"literal> y <literal>hibernate.transaction.auto_close_session</literal> a "
+"<literal>true</literal>. Hibernate limpiará y cerrará entonces "
+"automáticamente la <literal>Session</literal> para ti. Lo único que resta es "
+"deshacer (rollback) la transacción cuando ocurra una excepción. "
+"Afortunadamente, en un bean CMT, incluso esto ocurre automáticamente, ya que "
+"una <literal>RuntimeException</literal> no manejada disparada por un método "
+"de un bean de sesión le dice al contenedor que ponga a deshacer la "
+"transacción global. <emphasis>Esto significa que, en CMT, no necesitas usar "
+"en absoluto la API de <literal>Transaction</literal> de Hibernate.</emphasis>"
-#: index.docbook:476
-msgid "If you want to use a transaction-bound <literal>Session</literal>, that is, the <literal>getCurrentSession()</literal> functionality for easy context propagation, you will have to use the JTA <literal>UserTransaction</literal> API directly:"
+#. Tag: programlisting
+#: transactions.xml:482
+#, no-c-format
+msgid ""
+"<![CDATA[// BMT idiom with getCurrentSession()\n"
+"try {\n"
+" UserTransaction tx = (UserTransaction)new InitialContext()\n"
+" .lookup(\"java:comp/UserTransaction\");\n"
+"\n"
+" tx.begin();\n"
+"\n"
+" // Do some work on Session bound to transaction\n"
+" factory.getCurrentSession().load(...);\n"
+" factory.getCurrentSession().persist(...);\n"
+"\n"
+" tx.commit();\n"
+"}\n"
+"catch (RuntimeException e) {\n"
+" tx.rollback();\n"
+" throw e; // or display error message\n"
+"}]]>"
msgstr ""
- "<![CDATA[// CMT idiom\n"
- "Session sess = factory.getCurrentSession();\n"
- "\n"
- "// do some work\n"
- "...\n"
- "\n"
- "]]>"
-#: index.docbook:482
+#. Tag: para
+#: transactions.xml:484
+#, no-c-format
msgid ""
- "<![CDATA[// BMT idiom with getCurrentSession()\n"
- "try {\n"
- " UserTransaction tx = (UserTransaction)new InitialContext()\n"
- " .lookup(\"java:comp/UserTransaction\");\n"
- "\n"
- " tx.begin();\n"
- "\n"
- " // Do some work on Session bound to transaction\n"
- " factory.getCurrentSession().load(...);\n"
- " factory.getCurrentSession().persist(...);\n"
- "\n"
- " tx.commit();\n"
- "}\n"
- "catch (RuntimeException e) {\n"
- " tx.rollback();\n"
- " throw e; // or display error message\n"
- "}]]>"
-msgstr "En otras palabras, todo lo que tienes que hacer en un entorno manejado, es llamar a <literal>SessionFactory.getCurrentSession()</literal>, hacer tu trabajo de acceso a datos, y dejar el resto al contenedor. Los límites de transacción se establecen declarativamente en los descriptores de despliegue de tu bean de sesión. El ciclo de vida de la sesión es manejado completamente por Hibernate."
+"With CMT, transaction demarcation is done in session bean deployment "
+"descriptors, not programatically, hence, the code is reduced to:"
+msgstr ""
+"Nota que debes elegir <literal>org.hibernate.transaction."
+"JTATransactionFactory</literal> en un bean de sesión BMT, y <literal>org."
+"hibernate.transaction.CMTTransactionFactory</literal> en un bean de sesión "
+"CMT, cuando configures la fábrica de transacciones de Hibernate. Recuerda "
+"además establecer <literal>org.hibernate.transaction.manager_lookup_class</"
+"literal>."
-#: index.docbook:484
-msgid "With CMT, transaction demarcation is done in session bean deployment descriptors, not programatically, hence, the code is reduced to:"
-msgstr "Existe una advertencia al uso del modo de liberación de conexión <literal>after_statement</literal>. Debido a una limitación tonta de la especificación de JTA, no es posible para Hibernate limpiar automáticamente ningún <literal>ScrollableResults</literal> no cerrado ni instancias de <literal>Iterator</literal> devueltas por <literal>scroll()</literal> o <literal>iterate()</literal>. <emphasis>Debes</emphasis> liberar el cursor de base de datos subyacente llamando a <literal>ScrollableResults.close()</literal> o <literal>Hibernate.close(Iterator)</literal> explícitamente desde un bloque <literal>finally</literal>. (Por supuesto, la mayoría de las aplicaciones pueden evitarlo fácilmente no usando en absoluto ningún <literal>scroll()</literal> o <literal>iterate()</literal> desde el código CMT.)"
+#. Tag: programlisting
+#: transactions.xml:489
+#, no-c-format
+msgid ""
+"<![CDATA[// CMT idiom\n"
+" Session sess = factory.getCurrentSession();\n"
+"\n"
+" // do some work\n"
+" ...\n"
+"]]>"
+msgstr ""
-#: index.docbook:489
+#. Tag: para
+#: transactions.xml:491
+#, no-c-format
msgid ""
- "<![CDATA[// CMT idiom\n"
- " Session sess = factory.getCurrentSession();\n"
- "\n"
- " // do some work\n"
- " ...\n"
- "]]>"
-msgstr "Manejo de excepciones"
+"In a CMT/EJB even rollback happens automatically, since an unhandled "
+"<literal>RuntimeException</literal> thrown by a session bean method tells "
+"the container to set the global transaction to rollback. <emphasis>This "
+"means you do not need to use the Hibernate <literal>Transaction</literal> "
+"API at all with BMT or CMT, and you get automatic propagation of the "
+"\"current\" Session bound to the transaction.</emphasis>"
+msgstr ""
+"Si trabajas en un entorno CMT, y usas limpieza (flushing) y cierre "
+"automáticos de la sesión, podrías querer también usar la misma sesión en "
+"diferentes partes de tu código. Típicamente, en un entorno no manejado, "
+"usarías una variable <literal>ThreadLocal</literal> para tener la sesión, "
+"pero una sola petición de EJB puede ejecutarse en diferentes hebras (por "
+"ejemplo, un bean de sesión llamando a otro bean de sesión). Si no quieres "
+"molestarte en pasar tu <literal>Session</literal> por alrededor, la "
+"<literal>SessionFactory</literal> provee el método <literal>getCurrentSession"
+"()</literal>, que devuelve una sesión que está pegada al contexto de "
+"transacción JTA. ¡Esta es la forma más fácil de integrar Hibernate en una "
+"aplicación! La sesión \"actual\" siempre tiene habilitados limpieza, cierre "
+"y liberación de conexión automáticos (sin importar la configuración de las "
+"propiedades anteriores). Nuestra idioma de gestión de sesión/transacción se "
+"reduce a:"
-#: index.docbook:491
-msgid "In a CMT/EJB even rollback happens automatically, since an unhandled <literal>RuntimeException</literal> thrown by a session bean method tells the container to set the global transaction to rollback. <emphasis>This means you do not need to use the Hibernate <literal>Transaction</literal> API at all with BMT or CMT, and you get automatic propagation of the \"current\" Session bound to the transaction.</emphasis>"
-msgstr "Si la <literal>Session</literal> lanza una excepción (incluyendo cualquier <literal>SQLException</literal>), debes inmediatamente deshacer (rollback) la transacción de base de datos, llamar a <literal>Session.close()</literal> y descartar la instancia de <literal>Session</literal>. Ciertos métodos de <literal>Session</literal> <emphasis>no</emphasis> dejarán la sesión en un estado consistente. Ninguna excepción lanzada por Hibernate puede ser tratada como recuperable. Asegúrate que la <literal>Session</literal> sea cerrada llamando a <literal>close()</literal> en un bloque <literal>finally</literal>."
+#. Tag: para
+#: transactions.xml:499
+#, no-c-format
+msgid ""
+"Note that you should choose <literal>org.hibernate.transaction."
+"JTATransactionFactory</literal> if you use JTA directly (BMT), and "
+"<literal>org.hibernate.transaction.CMTTransactionFactory</literal> in a CMT "
+"session bean, when you configure Hibernate's transaction factory. Remember "
+"to also set <literal>hibernate.transaction.manager_lookup_class</literal>. "
+"Furthermore, make sure that your <literal>hibernate."
+"current_session_context_class</literal> is either unset (backwards "
+"compatiblity), or set to <literal>\"jta\"</literal>."
+msgstr ""
+"En otras palabras, todo lo que tienes que hacer en un entorno manejado, es "
+"llamar a <literal>SessionFactory.getCurrentSession()</literal>, hacer tu "
+"trabajo de acceso a datos, y dejar el resto al contenedor. Los límites de "
+"transacción se establecen declarativamente en los descriptores de despliegue "
+"de tu bean de sesión. El ciclo de vida de la sesión es manejado "
+"completamente por Hibernate."
-#: index.docbook:499
-msgid "Note that you should choose <literal>org.hibernate.transaction.JTATransactionFactory</literal> if you use JTA directly (BMT), and <literal>org.hibernate.transaction.CMTTransactionFactory</literal> in a CMT session bean, when you configure Hibernate's transaction factory. Remember to also set <literal>hibernate.transaction.manager_lookup_class</literal>. Furthermore, make sure that your <literal>hibernate.current_session_context_class</literal> is either unset (backwards compatiblity), or set to <literal>\"jta\"</literal>."
-msgstr "La <literal>HibernateException</literal>, que envuelve la mayoría de los errores que pueden ocurrir en la capa de persistencia de Hibernate, en una excepción no chequeada (no lo era en versiones anteriores de Hibernate). En nuestra opinión, no debemos forzar al desarrollador de aplicaciones a capturar una excepción irrecuperable en una capa baja. En la mayoría de los sistemas, las excepciones no chequeadas y fatales son manejadas en uno de los primeros cuadros de la pila de llamadas a métodos (es decir, en las capas más altas) y se presenta un mensaje de error al usuario de la aplicación (o se toma alguna otra acción apropiada). Nota que Hibernate podría también lanzar otras excepciones no chequeadas que no sean una <literal>HibernateException</literal>. Una vez más, no son recuperables y debe tomarse una acción apropiada."
+#. Tag: para
+#: transactions.xml:508
+#, no-c-format
+msgid ""
+"The <literal>getCurrentSession()</literal> operation has one downside in a "
+"JTA environment. There is one caveat to the use of <literal>after_statement</"
+"literal> connection release mode, which is then used by default. Due to a "
+"silly limitation of the JTA spec, it is not possible for Hibernate to "
+"automatically clean up any unclosed <literal>ScrollableResults</literal> or "
+"<literal>Iterator</literal> instances returned by <literal>scroll()</"
+"literal> or <literal>iterate()</literal>. You <emphasis>must</emphasis> "
+"release the underlying database cursor by calling <literal>ScrollableResults."
+"close()</literal> or <literal>Hibernate.close(Iterator)</literal> explicity "
+"from a <literal>finally</literal> block. (Of course, most applications can "
+"easily avoid using <literal>scroll()</literal> or <literal>iterate()</"
+"literal> at all from the JTA or CMT code.)"
+msgstr ""
+"Existe una advertencia al uso del modo de liberación de conexión "
+"<literal>after_statement</literal>. Debido a una limitación tonta de la "
+"especificación de JTA, no es posible para Hibernate limpiar automáticamente "
+"ningún <literal>ScrollableResults</literal> no cerrado ni instancias de "
+"<literal>Iterator</literal> devueltas por <literal>scroll()</literal> o "
+"<literal>iterate()</literal>. <emphasis>Debes</emphasis> liberar el cursor "
+"de base de datos subyacente llamando a <literal>ScrollableResults.close()</"
+"literal> o <literal>Hibernate.close(Iterator)</literal> explícitamente desde "
+"un bloque <literal>finally</literal>. (Por supuesto, la mayoría de las "
+"aplicaciones pueden evitarlo fácilmente no usando en absoluto ningún "
+"<literal>scroll()</literal> o <literal>iterate()</literal> desde el código "
+"CMT.)"
-#: index.docbook:508
-msgid "The <literal>getCurrentSession()</literal> operation has one downside in a JTA environment. There is one caveat to the use of <literal>after_statement</literal> connection release mode, which is then used by default. Due to a silly limitation of the JTA spec, it is not possible for Hibernate to automatically clean up any unclosed <literal>ScrollableResults</literal> or <literal>Iterator</literal> instances returned by <literal>scroll()</literal> or <literal>iterate()</literal>. You <emphasis>must</emphasis> release the underlying database cursor by calling <literal>ScrollableResults.close()</literal> or <literal>Hibernate.close(Iterator)</literal> explicity from a <literal>finally</literal> block. (Of course, most applications can easily avoid using <literal>scroll()</literal> or <literal>iterate()</literal> at all from the JTA or CMT code.)"
-msgstr "Hibernate envuelve <literal>SQLException</literal>s lanzadas mientras se interactúa con la base de datos en una <literal>JDBCException</literal>. De hecho, Hibernate intentará convertir la excepción en una subclase de <literal>JDBCException</literal> más significativa. La <literal>SQLException</literal> está siempre disponible vía <literal>JDBCException.getCause()</literal>. Hibernate convierte la <literal>SQLException</literal> en una subclase de <literal>JDBCException</literal> apropiada usando el <literal>SQLExceptionConverter</literal> adjunto a la <literal>SessionFactory</literal>. Por defecto, el <literal>SQLExceptionConverter</literal> está definido para el dialecto configurado; sin embargo, es también posible enchufar una implementación personalizada (ver los javadocs de la clase <literal>SQLExceptionConverterFactory</literal> para los detalles). Los subtipos estándar de <literal>JDBCExcep!
tion</literal> son:"
-
-#: index.docbook:524
+#. Tag: title
+#: transactions.xml:524
+#, no-c-format
msgid "Exception handling"
-msgstr "<literal>JDBCConnectionException</literal> - indica un error con la comunicación JDBC subyacente."
+msgstr "Manejo de excepciones"
-#: index.docbook:526
-msgid "If the <literal>Session</literal> throws an exception (including any <literal>SQLException</literal>), you should immediately rollback the database transaction, call <literal>Session.close()</literal> and discard the <literal>Session</literal> instance. Certain methods of <literal>Session</literal> will <emphasis>not</emphasis> leave the session in a consistent state. No exception thrown by Hibernate can be treated as recoverable. Ensure that the <literal>Session</literal> will be closed by calling <literal>close()</literal> in a <literal>finally</literal> block."
-msgstr "<literal>SQLGrammarException</literal> - indica un problema de gramática o sintáxis con el SQL publicado."
+#. Tag: para
+#: transactions.xml:526
+#, no-c-format
+msgid ""
+"If the <literal>Session</literal> throws an exception (including any "
+"<literal>SQLException</literal>), you should immediately rollback the "
+"database transaction, call <literal>Session.close()</literal> and discard "
+"the <literal>Session</literal> instance. Certain methods of "
+"<literal>Session</literal> will <emphasis>not</emphasis> leave the session "
+"in a consistent state. No exception thrown by Hibernate can be treated as "
+"recoverable. Ensure that the <literal>Session</literal> will be closed by "
+"calling <literal>close()</literal> in a <literal>finally</literal> block."
+msgstr ""
+"Si la <literal>Session</literal> lanza una excepción (incluyendo cualquier "
+"<literal>SQLException</literal>), debes inmediatamente deshacer (rollback) "
+"la transacción de base de datos, llamar a <literal>Session.close()</literal> "
+"y descartar la instancia de <literal>Session</literal>. Ciertos métodos de "
+"<literal>Session</literal><emphasis>no</emphasis> dejarán la sesión en un "
+"estado consistente. Ninguna excepción lanzada por Hibernate puede ser "
+"tratada como recuperable. Asegúrate que la <literal>Session</literal> sea "
+"cerrada llamando a <literal>close()</literal> en un bloque <literal>finally</"
+"literal>."
-#: index.docbook:537
-msgid "The <literal>HibernateException</literal>, which wraps most of the errors that can occur in a Hibernate persistence layer, is an unchecked exception (it wasn't in older versions of Hibernate). In our opinion, we shouldn't force the application developer to catch an unrecoverable exception at a low layer. In most systems, unchecked and fatal exceptions are handled in one of the first frames of the method call stack (i.e. in higher layers) and an error message is presented to the application user (or some other appropriate action is taken). Note that Hibernate might also throw other unchecked exceptions which are not a <literal>HibernateException</literal>. These are, again, not recoverable and appropriate action should be taken."
-msgstr "<literal>ConstraintViolationException</literal> - indica alguna forma de violación de restricción de integridad."
+#. Tag: para
+#: transactions.xml:537
+#, no-c-format
+msgid ""
+"The <literal>HibernateException</literal>, which wraps most of the errors "
+"that can occur in a Hibernate persistence layer, is an unchecked exception "
+"(it wasn't in older versions of Hibernate). In our opinion, we shouldn't "
+"force the application developer to catch an unrecoverable exception at a low "
+"layer. In most systems, unchecked and fatal exceptions are handled in one of "
+"the first frames of the method call stack (i.e. in higher layers) and an "
+"error message is presented to the application user (or some other "
+"appropriate action is taken). Note that Hibernate might also throw other "
+"unchecked exceptions which are not a <literal>HibernateException</literal>. "
+"These are, again, not recoverable and appropriate action should be taken."
+msgstr ""
+"La <literal>HibernateException</literal>, que envuelve la mayoría de los "
+"errores que pueden ocurrir en la capa de persistencia de Hibernate, en una "
+"excepción no chequeada (no lo era en versiones anteriores de Hibernate). En "
+"nuestra opinión, no debemos forzar al desarrollador de aplicaciones a "
+"capturar una excepción irrecuperable en una capa baja. En la mayoría de los "
+"sistemas, las excepciones no chequeadas y fatales son manejadas en uno de "
+"los primeros cuadros de la pila de llamadas a métodos (es decir, en las "
+"capas más altas) y se presenta un mensaje de error al usuario de la "
+"aplicación (o se toma alguna otra acción apropiada). Nota que Hibernate "
+"podría también lanzar otras excepciones no chequeadas que no sean una "
+"<literal>HibernateException</literal>. Una vez más, no son recuperables y "
+"debe tomarse una acción apropiada."
-#: index.docbook:549
-msgid "Hibernate wraps <literal>SQLException</literal>s thrown while interacting with the database in a <literal>JDBCException</literal>. In fact, Hibernate will attempt to convert the eexception into a more meningful subclass of <literal>JDBCException</literal>. The underlying <literal>SQLException</literal> is always available via <literal>JDBCException.getCause()</literal>. Hibernate converts the <literal>SQLException</literal> into an appropriate <literal>JDBCException</literal> subclass using the <literal>SQLExceptionConverter</literal> attached to the <literal>SessionFactory</literal>. By default, the <literal>SQLExceptionConverter</literal> is defined by the configured dialect; however, it is also possible to plug in a custom implementation (see the javadocs for the <literal>SQLExceptionConverterFactory</literal> class for details). The standard <literal>JDBCException</literal> subtypes are:"
-msgstr "<literal>LockAcquisitionException</literal> - indica un error adquiriendo un nivel de bloqueo necesario para realizar una operación solicitada."
+#. Tag: para
+#: transactions.xml:549
+#, no-c-format
+msgid ""
+"Hibernate wraps <literal>SQLException</literal>s thrown while interacting "
+"with the database in a <literal>JDBCException</literal>. In fact, Hibernate "
+"will attempt to convert the eexception into a more meningful subclass of "
+"<literal>JDBCException</literal>. The underlying <literal>SQLException</"
+"literal> is always available via <literal>JDBCException.getCause()</"
+"literal>. Hibernate converts the <literal>SQLException</literal> into an "
+"appropriate <literal>JDBCException</literal> subclass using the "
+"<literal>SQLExceptionConverter</literal> attached to the "
+"<literal>SessionFactory</literal>. By default, the "
+"<literal>SQLExceptionConverter</literal> is defined by the configured "
+"dialect; however, it is also possible to plug in a custom implementation "
+"(see the javadocs for the <literal>SQLExceptionConverterFactory</literal> "
+"class for details). The standard <literal>JDBCException</literal> subtypes "
+"are:"
+msgstr ""
+"Hibernate envuelve <literal>SQLException</literal>s lanzadas mientras se "
+"interactúa con la base de datos en una <literal>JDBCException</literal>. De "
+"hecho, Hibernate intentará convertir la excepción en una subclase de "
+"<literal>JDBCException</literal> más significativa. La "
+"<literal>SQLException</literal> está siempre disponible vía "
+"<literal>JDBCException.getCause()</literal>. Hibernate convierte la "
+"<literal>SQLException</literal> en una subclase de <literal>JDBCException</"
+"literal> apropiada usando el <literal>SQLExceptionConverter</literal> "
+"adjunto a la <literal>SessionFactory</literal>. Por defecto, el "
+"<literal>SQLExceptionConverter</literal> está definido para el dialecto "
+"configurado; sin embargo, es también posible enchufar una implementación "
+"personalizada (ver los javadocs de la clase "
+"<literal>SQLExceptionConverterFactory</literal> para los detalles). Los "
+"subtipos estándar de <literal>JDBCException</literal> son:"
-#: index.docbook:565
-msgid "<literal>JDBCConnectionException</literal> - indicates an error with the underlying JDBC communication."
-msgstr "<literal>GenericJDBCException</literal> - una excepción genérica que no cayó en ninguna de las otras categorías."
+#. Tag: para
+#: transactions.xml:565
+#, no-c-format
+msgid ""
+"<literal>JDBCConnectionException</literal> - indicates an error with the "
+"underlying JDBC communication."
+msgstr ""
+"<literal>JDBCConnectionException</literal> - indica un error con la "
+"comunicación JDBC subyacente."
-#: index.docbook:571
-msgid "<literal>SQLGrammarException</literal> - indicates a grammar or syntax problem with the issued SQL."
-msgstr "Control optimista de concurrencia"
+#. Tag: para
+#: transactions.xml:571
+#, no-c-format
+msgid ""
+"<literal>SQLGrammarException</literal> - indicates a grammar or syntax "
+"problem with the issued SQL."
+msgstr ""
+"<literal>SQLGrammarException</literal> - indica un problema de gramática o "
+"sintáxis con el SQL publicado."
-#: index.docbook:577
-msgid "<literal>ConstraintViolationException</literal> - indicates some form of integrity constraint violation."
-msgstr "El único enfoque que es consistente con alta concurrencia y alta escalabilidad es el control optimista de concurrencia con versionamiento. El chuequeo de versión usa números de versión, o timestamps, para detectar actualizaciones en conflicto (y para prevenir actualizaciones perdidas). Hibernate provee para tres enfoques posibles de escribir código de aplicación que use concurrencia optimista. Los casos de uso que hemos mostrado están en el contexto de transacciones de aplicación largas pero el chequeo de versiones tiene además el beneficio de prevenir actualizaciones perdidas en transacciones de base de datos solas."
+#. Tag: para
+#: transactions.xml:577
+#, no-c-format
+msgid ""
+"<literal>ConstraintViolationException</literal> - indicates some form of "
+"integrity constraint violation."
+msgstr ""
+"<literal>ConstraintViolationException</literal> - indica alguna forma de "
+"violación de restricción de integridad."
-#: index.docbook:583
-msgid "<literal>LockAcquisitionException</literal> - indicates an error acquiring a lock level necessary to perform the requested operation."
-msgstr "Chequeo de versiones de aplicación"
+#. Tag: para
+#: transactions.xml:583
+#, no-c-format
+msgid ""
+"<literal>LockAcquisitionException</literal> - indicates an error acquiring a "
+"lock level necessary to perform the requested operation."
+msgstr ""
+"<literal>LockAcquisitionException</literal> - indica un error adquiriendo un "
+"nivel de bloqueo necesario para realizar una operación solicitada."
-#: index.docbook:589
-msgid "<literal>GenericJDBCException</literal> - a generic exception which did not fall into any of the other categories."
-msgstr "En una implementación sin mucha ayuda de Hibernate, cada interacción con la base de datos ocurre en una nueva <literal>Session</literal> y el desarrollador es responsable de recargar todas las intancias persistentes desde la base de datos antes de manipularlas. Este enfoque fuerza a la aplicación a realizar su propio chequeo de versiones para asegurar el aislamiento de transacciones de base de datos. Es el enfoque más similar a los EJBs de entidad."
+#. Tag: para
+#: transactions.xml:589
+#, no-c-format
+msgid ""
+"<literal>GenericJDBCException</literal> - a generic exception which did not "
+"fall into any of the other categories."
+msgstr ""
+"<literal>GenericJDBCException</literal> - una excepción genérica que no cayó "
+"en ninguna de las otras categorías."
-#: index.docbook:599
+#. Tag: title
+#: transactions.xml:599
+#, no-c-format
msgid "Transaction timeout"
+msgstr "Transaction timeout"
+
+#. Tag: para
+#: transactions.xml:601
+#, no-c-format
+msgid ""
+"One extremely important feature provided by a managed environment like EJB "
+"that is never provided for non-managed code is transaction timeout. "
+"Transaction timeouts ensure that no misbehaving transaction can indefinitely "
+"tie up resources while returning no response to the user. Outside a managed "
+"(JTA) environment, Hibernate cannot fully provide this functionality. "
+"However, Hibernate can at least control data access operations, ensuring "
+"that database level deadlocks and queries with huge result sets are limited "
+"by a defined timeout. In a managed environment, Hibernate can delegate "
+"transaction timeout to JTA. This functioanlity is abstracted by the "
+"Hibernate <literal>Transaction</literal> object."
msgstr ""
- "<![CDATA[// foo is an instance loaded by a previous Session\n"
- "session = factory.openSession();\n"
- "Transaction t = session.beginTransaction();\n"
- "int oldVersion = foo.getVersion();\n"
- "session.load( foo, foo.getKey() ); // load the current state\n"
- "if ( oldVersion != foo.getVersion() ) throw new StaleObjectStateException();\n"
- "foo.setProperty(\"bar\");\n"
- "t.commit();\n"
- "session.close();]]>"
+"One extremely important feature provided by a managed environment like EJB "
+"that is never provided for non-managed code is transaction timeout. "
+"Transaction timeouts ensure that no misbehaving transaction can indefinitely "
+"tie up resources while returning no response to the user. Outside a managed "
+"(JTA) environment, Hibernate cannot fully provide this functionality. "
+"However, Hibernate can at least control data access operations, ensuring "
+"that database level deadlocks and queries with huge result sets are limited "
+"by a defined timeout. In a managed environment, Hibernate can delegate "
+"transaction timeout to JTA. This functioanlity is abstracted by the "
+"Hibernate <literal>Transaction</literal> object."
-#: index.docbook:601
-msgid "One extremely important feature provided by a managed environment like EJB that is never provided for non-managed code is transaction timeout. Transaction timeouts ensure that no misbehaving transaction can indefinitely tie up resources while returning no response to the user. Outside a managed (JTA) environment, Hibernate cannot fully provide this functionality. However, Hibernate can at least control data access operations, ensuring that database level deadlocks and queries with huge result sets are limited by a defined timeout. In a managed environment, Hibernate can delegate transaction timeout to JTA. This functioanlity is abstracted by the Hibernate <literal>Transaction</literal> object."
-msgstr "La propiedad <literal>version</literal> se mapea usando <literal><version></literal>, e Hibernate la incrementará automáticamente durante la limpieza si la entidad está sucia."
+#. Tag: programlisting
+#: transactions.xml:614
+#, no-c-format
+msgid ""
+"<![CDATA[\n"
+"Session sess = factory.openSession();\n"
+"try {\n"
+" //set transaction timeout to 3 seconds\n"
+" sess.getTransaction().setTimeout(3);\n"
+" sess.getTransaction().begin();\n"
+"\n"
+" // do some work\n"
+" ...\n"
+"\n"
+" sess.getTransaction().commit()\n"
+"}\n"
+"catch (RuntimeException e) {\n"
+" sess.getTransaction().rollback();\n"
+" throw e; // or display error message\n"
+"}\n"
+"finally {\n"
+" sess.close();\n"
+"}]]>"
+msgstr ""
-#: index.docbook:614
+#. Tag: para
+#: transactions.xml:616
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "Session sess = factory.openSession();\n"
- "try {\n"
- " //set transaction timeout to 3 seconds\n"
- " sess.getTransaction().setTimeout(3);\n"
- " sess.getTransaction().begin();\n"
- "\n"
- " // do some work\n"
- " ...\n"
- "\n"
- " sess.getTransaction().commit()\n"
- "}\n"
- "catch (RuntimeException e) {\n"
- " sess.getTransaction().rollback();\n"
- " throw e; // or display error message\n"
- "}\n"
- "finally {\n"
- " sess.close();\n"
- "}]]>"
-msgstr "Por supuesto, si estás operando un entorno de baja-concurrencia-de-datos y no requieres chequeo de versiones, puedes usar este enfoque y simplemente saltar el chequeo de versiones. En ese caso, <emphasis>el último compromiso (commit) gana</emphasis> será la estrategia por defecto para tus transacciones de aplicación largas. Ten en mente que esto podría confundir a los usuarios de la aplicación, pues podrían experimentar actualizaciones perdidas sin mensajes de error ni chance de fusionar los cambios conflictivos."
+"Note that <literal>setTimeout()</literal> may not be called in a CMT bean, "
+"where transaction timeouts must be defined declaratively."
+msgstr ""
+"Note that <literal>setTimeout()</literal> may not be called in a CMT bean, "
+"where transaction timeouts must be defined declaratively."
-#: index.docbook:616
-msgid "Note that <literal>setTimeout()</literal> may not be called in a CMT bean, where transaction timeouts must be defined declaratively."
-msgstr "Claramente, el chequeo manual de versiones es factible solamente en circunstancias muy triviales, y no es práctico para la mayoría de aplicaciones. Frecuentemente, no sólo intancias solas, sino grafos completos de objetos modificados tienen que ser chequeados. Hibernate ofrece chequeo de versiones automático con el paradigma de diseño de <literal>Session</literal> larga o de instancias separadas."
-
-#: index.docbook:626
+#. Tag: title
+#: transactions.xml:626
+#, no-c-format
msgid "Optimistic concurrency control"
-msgstr "Sesión larga y versionado automático"
+msgstr "Control optimista de concurrencia"
-#: index.docbook:628
-msgid "The only approach that is consistent with high concurrency and high scalability is optimistic concurrency control with versioning. Version checking uses version numbers, or timestamps, to detect conflicting updates (and to prevent lost updates). Hibernate provides for three possible approaches to writing application code that uses optimistic concurrency. The use cases we show are in the context of long conversations, but version checking also has the benefit of preventing lost updates in single database transactions."
-msgstr "Una sola instancia de <literal>Session</literal> y sus instancias persistentes son usadas para toda la transacción de aplicación. Hibernate chequea las versiones de instancia en el momento de limpieza (flush), lanzando una excepción si se detecta una modificación concurrente. Concierne al desarrollador capturar y manejar esta excepción (las opciones comunes son la oportunidad del usuario de fusionar los cambios, o recomenzar el proceso de negocio sin datos añejos)."
+#. Tag: para
+#: transactions.xml:628
+#, no-c-format
+msgid ""
+"The only approach that is consistent with high concurrency and high "
+"scalability is optimistic concurrency control with versioning. Version "
+"checking uses version numbers, or timestamps, to detect conflicting updates "
+"(and to prevent lost updates). Hibernate provides for three possible "
+"approaches to writing application code that uses optimistic concurrency. The "
+"use cases we show are in the context of long conversations, but version "
+"checking also has the benefit of preventing lost updates in single database "
+"transactions."
+msgstr ""
+"El único enfoque que es consistente con alta concurrencia y alta "
+"escalabilidad es el control optimista de concurrencia con versionamiento. El "
+"chuequeo de versión usa números de versión, o timestamps, para detectar "
+"actualizaciones en conflicto (y para prevenir actualizaciones perdidas). "
+"Hibernate provee para tres enfoques posibles de escribir código de "
+"aplicación que use concurrencia optimista. Los casos de uso que hemos "
+"mostrado están en el contexto de transacciones de aplicación largas pero el "
+"chequeo de versiones tiene además el beneficio de prevenir actualizaciones "
+"perdidas en transacciones de base de datos solas."
-#: index.docbook:639
+#. Tag: title
+#: transactions.xml:639
+#, no-c-format
msgid "Application version checking"
-msgstr "La <literal>Session</literal> se desconecta de cualquier conexión JDBC subyacente al esperar por una interacción del usuario. Este enfoque es el más eficiente en términos de acceso a base de datos. La aplicación no necesita tratar por sí misma con el chequeo de versiones, ni re-uniendo instancias separadas, ni tiene que recargar instancias en cada transacción de base de datos."
+msgstr "Chequeo de versiones de aplicación"
-#: index.docbook:641
-msgid "In an implementation without much help from Hibernate, each interaction with the database occurs in a new <literal>Session</literal> and the developer is responsible for reloading all persistent instances from the database before manipulating them. This approach forces the application to carry out its own version checking to ensure conversation transaction isolation. This approach is the least efficient in terms of database access. It is the approach most similar to entity EJBs."
+#. Tag: para
+#: transactions.xml:641
+#, no-c-format
+msgid ""
+"In an implementation without much help from Hibernate, each interaction with "
+"the database occurs in a new <literal>Session</literal> and the developer is "
+"responsible for reloading all persistent instances from the database before "
+"manipulating them. This approach forces the application to carry out its own "
+"version checking to ensure conversation transaction isolation. This approach "
+"is the least efficient in terms of database access. It is the approach most "
+"similar to entity EJBs."
msgstr ""
- "<![CDATA[// foo is an instance loaded earlier by the Session\n"
- "session.reconnect(); // Obtain a new JDBC connection\n"
- "Transaction t = session.beginTransaction();\n"
- "foo.setProperty(\"bar\");\n"
- "t.commit(); // End database transaction, flushing the change and checking the version\n"
- "session.disconnect(); // Return JDBC connection ]]>"
+"En una implementación sin mucha ayuda de Hibernate, cada interacción con la "
+"base de datos ocurre en una nueva <literal>Session</literal> y el "
+"desarrollador es responsable de recargar todas las intancias persistentes "
+"desde la base de datos antes de manipularlas. Este enfoque fuerza a la "
+"aplicación a realizar su propio chequeo de versiones para asegurar el "
+"aislamiento de transacciones de base de datos. Es el enfoque más similar a "
+"los EJBs de entidad."
-#: index.docbook:650
+#. Tag: programlisting
+#: transactions.xml:650
+#, no-c-format
msgid ""
- "<![CDATA[// foo is an instance loaded by a previous Session\n"
- "session = factory.openSession();\n"
- "Transaction t = session.beginTransaction();\n"
- "\n"
- "int oldVersion = foo.getVersion();\n"
- "session.load( foo, foo.getKey() ); // load the current state\n"
- "if ( oldVersion != foo.getVersion() ) throw new StaleObjectStateException();\n"
- "foo.setProperty(\"bar\");\n"
- "\n"
- "t.commit();\n"
- "session.close();]]>"
-msgstr "El objeto <literal>foo</literal> todavía conoce en qué <literal>Session</literal> fue cargado. <literal>Session.reconnect()</literal> obtiene una nueva conexión (o puedes proveer una) y reasume la sesión. El método <literal>Session.disconnect()</literal> desconectará la sesión de la conexión JDBC y la devolverá la conexión al pool (a menos que hayas provisto la conexión). Después de la reconexión, para forzar un chequeo de versión en datos que no estés actualizando, puedes llamar a <literal>Session.lock()</literal> con <literal>LockMode.READ</literal> sobre cualquier objeto que pudiese haber sido actualizado por otra transacción. No necesitas bloquear ningún dato que <emphasis>sí estés</emphasis> actualizando."
+"<![CDATA[// foo is an instance loaded by a previous Session\n"
+"session = factory.openSession();\n"
+"Transaction t = session.beginTransaction();\n"
+"\n"
+"int oldVersion = foo.getVersion();\n"
+"session.load( foo, foo.getKey() ); // load the current state\n"
+"if ( oldVersion != foo.getVersion() ) throw new StaleObjectStateException"
+"();\n"
+"foo.setProperty(\"bar\");\n"
+"\n"
+"t.commit();\n"
+"session.close();]]>"
+msgstr ""
-#: index.docbook:652
-msgid "The <literal>version</literal> property is mapped using <literal><version></literal>, and Hibernate will automatically increment it during flush if the entity is dirty."
-msgstr "Si las llamadas explícitas a <literal>disconnect()</literal> y <literal>reconnect()</literal> son muy onerosas, puedes usar en cambio <literal>hibernate.connection.release_mode</literal>."
+#. Tag: para
+#: transactions.xml:652
+#, no-c-format
+msgid ""
+"The <literal>version</literal> property is mapped using <literal><"
+"version></literal>, and Hibernate will automatically increment it during "
+"flush if the entity is dirty."
+msgstr ""
+"La propiedad <literal>version</literal> se mapea usando <literal><"
+"version></literal>, e Hibernate la incrementará automáticamente durante "
+"la limpieza si la entidad está sucia."
-#: index.docbook:658
-msgid "Of course, if you are operating in a low-data-concurrency environment and don't require version checking, you may use this approach and just skip the version check. In that case, <emphasis>last commit wins</emphasis> will be the default strategy for your long conversations. Keep in mind that this might confuse the users of the application, as they might experience lost updates without error messages or a chance to merge conflicting changes."
-msgstr "Este patrón es problemático si la <literal>Session</literal> es demasiado grande para ser almacenada durante el tiempo de pensar del usuario, por ejemplo, una <literal>HttpSession</literal> debe mantenerse tan pequeña como sea posible. Ya que la <literal>Session</literal> es también el caché (obligatorio) de primer nivel y contiene todos los objetos cargados, podemos probablemente cargar esta estrategia sólo para unos pocos ciclos petición/respuesta. Esto está de hecho recomendado, ya que la <literal>Session</literal> tendrá pronto también datos añejos."
+#. Tag: para
+#: transactions.xml:658
+#, no-c-format
+msgid ""
+"Of course, if you are operating in a low-data-concurrency environment and "
+"don't require version checking, you may use this approach and just skip the "
+"version check. In that case, <emphasis>last commit wins</emphasis> will be "
+"the default strategy for your long conversations. Keep in mind that this "
+"might confuse the users of the application, as they might experience lost "
+"updates without error messages or a chance to merge conflicting changes."
+msgstr ""
+"Por supuesto, si estás operando un entorno de baja-concurrencia-de-datos y "
+"no requieres chequeo de versiones, puedes usar este enfoque y simplemente "
+"saltar el chequeo de versiones. En ese caso, <emphasis>el último compromiso "
+"(commit) gana</emphasis> será la estrategia por defecto para tus "
+"transacciones de aplicación largas. Ten en mente que esto podría confundir a "
+"los usuarios de la aplicación, pues podrían experimentar actualizaciones "
+"perdidas sin mensajes de error ni chance de fusionar los cambios "
+"conflictivos."
-#: index.docbook:667
-msgid "Clearly, manual version checking is only feasible in very trivial circumstances and not practical for most applications. Often not only single instances, but complete graphs of modified ojects have to be checked. Hibernate offers automatic version checking with either an extended <literal>Session</literal> or detached instances as the design paradigm."
-msgstr "Nota también que debes mantener la <literal>Session</literal> desconectada próxima a la capa de persistencia. En otras palabras, usa una sesión de EJB con estado para tener la <literal>Session</literal> y no transferirla a la capa web para almacenarla en la <literal>HttpSession</literal> (ni incluso serializarla a una capa separada)."
+#. Tag: para
+#: transactions.xml:667
+#, no-c-format
+msgid ""
+"Clearly, manual version checking is only feasible in very trivial "
+"circumstances and not practical for most applications. Often not only single "
+"instances, but complete graphs of modified ojects have to be checked. "
+"Hibernate offers automatic version checking with either an extended "
+"<literal>Session</literal> or detached instances as the design paradigm."
+msgstr ""
+"Claramente, el chequeo manual de versiones es factible solamente en "
+"circunstancias muy triviales, y no es práctico para la mayoría de "
+"aplicaciones. Frecuentemente, no sólo intancias solas, sino grafos completos "
+"de objetos modificados tienen que ser chequeados. Hibernate ofrece chequeo "
+"de versiones automático con el paradigma de diseño de <literal>Session</"
+"literal> larga o de instancias separadas."
-#: index.docbook:678
+#. Tag: title
+#: transactions.xml:678
+#, no-c-format
msgid "Extended session and automatic versioning"
-msgstr "Objetos separados y versionado automático"
+msgstr "Sesión larga y versionado automático"
-#: index.docbook:680
-msgid "A single <literal>Session</literal> instance and its persistent instances are used for the whole conversation, known as <emphasis>session-per-conversation</emphasis>. Hibernate checks instance versions at flush time, throwing an exception if concurrent modification is detected. It's up to the developer to catch and handle this exception (common options are the opportunity for the user to merge changes or to restart the business conversation with non-stale data)."
-msgstr "Cada interacción con el almacén persistente ocurre en una nueva <literal>Session</literal>. Sin embargo, las mismas instancias persistentes son reusadas para cada interacción con la base de datos. La aplicación manipula el estado de las instancias separadas originalmente cargadas en otra <literal>Session</literal> y luego las readjunta usando <literal>Session.update()</literal>, <literal>Session.saveOrUpdate()</literal>, o <literal>Session.merge()</literal>."
+#. Tag: para
+#: transactions.xml:680
+#, no-c-format
+msgid ""
+"A single <literal>Session</literal> instance and its persistent instances "
+"are used for the whole conversation, known as <emphasis>session-per-"
+"conversation</emphasis>. Hibernate checks instance versions at flush time, "
+"throwing an exception if concurrent modification is detected. It's up to the "
+"developer to catch and handle this exception (common options are the "
+"opportunity for the user to merge changes or to restart the business "
+"conversation with non-stale data)."
+msgstr ""
+"Una sola instancia de <literal>Session</literal> y sus instancias "
+"persistentes son usadas para toda la transacción de aplicación. Hibernate "
+"chequea las versiones de instancia en el momento de limpieza (flush), "
+"lanzando una excepción si se detecta una modificación concurrente. Concierne "
+"al desarrollador capturar y manejar esta excepción (las opciones comunes son "
+"la oportunidad del usuario de fusionar los cambios, o recomenzar el proceso "
+"de negocio sin datos añejos)."
-#: index.docbook:689
-msgid "The <literal>Session</literal> is disconnected from any underlying JDBC connection when waiting for user interaction. This approach is the most efficient in terms of database access. The application need not concern itself with version checking or with reattaching detached instances, nor does it have to reload instances in every database transaction."
+#. Tag: para
+#: transactions.xml:689
+#, no-c-format
+msgid ""
+"The <literal>Session</literal> is disconnected from any underlying JDBC "
+"connection when waiting for user interaction. This approach is the most "
+"efficient in terms of database access. The application need not concern "
+"itself with version checking or with reattaching detached instances, nor "
+"does it have to reload instances in every database transaction."
msgstr ""
- "<![CDATA[// foo is an instance loaded by a previous Session\n"
- "foo.setProperty(\"bar\");\n"
- "session = factory.openSession();\n"
- "Transaction t = session.beginTransaction();\n"
- "session.saveOrUpdate(foo); // Use merge() if \"foo\" might have been loaded already\n"
- "t.commit();\n"
- "session.close();]]>"
+"La <literal>Session</literal> se desconecta de cualquier conexión JDBC "
+"subyacente al esperar por una interacción del usuario. Este enfoque es el "
+"más eficiente en términos de acceso a base de datos. La aplicación no "
+"necesita tratar por sí misma con el chequeo de versiones, ni re-uniendo "
+"instancias separadas, ni tiene que recargar instancias en cadatransactions-"
+"demarcation-timeout transacción de base de datos."
-#: index.docbook:697
+#. Tag: programlisting
+#: transactions.xml:697
+#, no-c-format
msgid ""
- "<![CDATA[// foo is an instance loaded earlier by the old session\n"
- "Transaction t = session.beginTransaction(); // Obtain a new JDBC connection, start transaction\n"
- "\n"
- "foo.setProperty(\"bar\");\n"
- "\n"
- "session.flush(); // Only for last transaction in conversation\n"
- "t.commit(); // Also return JDBC connection\n"
- "session.close(); // Only for last transaction in conversation]]>"
-msgstr "De nuevo, Hibernate chequeará las versiones de instancia durante la limpieza (flush), lanzando una excepción si ocurrieron actualizaciones en conflicto."
+"<![CDATA[// foo is an instance loaded earlier by the old session\n"
+"Transaction t = session.beginTransaction(); // Obtain a new JDBC connection, "
+"start transaction\n"
+"\n"
+"foo.setProperty(\"bar\");\n"
+"\n"
+"session.flush(); // Only for last transaction in conversation\n"
+"t.commit(); // Also return JDBC connection\n"
+"session.close(); // Only for last transaction in conversation]]>"
+msgstr ""
-#: index.docbook:698
-msgid "The <literal>foo</literal> object still knows which <literal>Session</literal> it was loaded in. Beginning a new database transaction on an old session obtains a new connection and resumes the session. Committing a database transaction disconnects a session from the JDBC connection and returns the connection to the pool. After reconnection, to force a version check on data you aren't updating, you may call <literal>Session.lock()</literal> with <literal>LockMode.READ</literal> on any objects that might have been updated by another transaction. You don't need to lock any data that you <emphasis>are</emphasis> updating. Usually you would set <literal>FlushMode.MANUAL</literal> on an extended <literal>Session</literal>, so that only the last database transaction cycle is allowed to actually persist all modifications made in this conversation. Hence, only this last database transaction would include the <literal>flush()</literal> operation, and then also <literal>close()!
</literal> the session to end the conversation."
-msgstr "Puedes también llamar a <literal>lock()</literal> en vez de <literal>update()</literal> y usar <literal>LockMode.READ</literal> (realizando un chequeo de versión, puenteando todos los cachés) si estás seguro que el objeto no ha sido modificado."
+#. Tag: para
+#: transactions.xml:698
+#, no-c-format
+msgid ""
+"The <literal>foo</literal> object still knows which <literal>Session</"
+"literal> it was loaded in. Beginning a new database transaction on an old "
+"session obtains a new connection and resumes the session. Committing a "
+"database transaction disconnects a session from the JDBC connection and "
+"returns the connection to the pool. After reconnection, to force a version "
+"check on data you aren't updating, you may call <literal>Session.lock()</"
+"literal> with <literal>LockMode.READ</literal> on any objects that might "
+"have been updated by another transaction. You don't need to lock any data "
+"that you <emphasis>are</emphasis> updating. Usually you would set "
+"<literal>FlushMode.MANUAL</literal> on an extended <literal>Session</"
+"literal>, so that only the last database transaction cycle is allowed to "
+"actually persist all modifications made in this conversation. Hence, only "
+"this last database transaction would include the <literal>flush()</literal> "
+"operation, and then also <literal>close()</literal> the session to end the "
+"conversation."
+msgstr ""
+"El objeto <literal>foo</literal> todavía conoce en qué <literal>Session</"
+"literal> fue cargado. <literal>Session.reconnect()</literal> obtiene una "
+"nueva conexión (o puedes proveer una) y reasume la sesión. El método "
+"<literal>Session.disconnect()</literal> desconectará la sesión de la "
+"conexión JDBC y la devolverá la conexión al pool (a menos que hayas provisto "
+"la conexión). Después de la reconexión, para forzar un chequeo de versión en "
+"datos que no estés actualizando, puedes llamar a <literal>Session.lock()</"
+"literal> con <literal>LockMode.READ</literal> sobre cualquier objeto que "
+"pudiese haber sido actualizado por otra transacción. No necesitas bloquear "
+"ningún dato que <emphasis>sí estés</emphasis> actualizando."
-#: index.docbook:713
-msgid "This pattern is problematic if the <literal>Session</literal> is too big to be stored during user think time, e.g. an <literal>HttpSession</literal> should be kept as small as possible. As the <literal>Session</literal> is also the (mandatory) first-level cache and contains all loaded objects, we can probably use this strategy only for a few request/response cycles. You should use a <literal>Session</literal> only for a single conversation, as it will soon also have stale data."
-msgstr "Personalizando el versionado automático"
+#. Tag: para
+#: transactions.xml:713
+#, no-c-format
+msgid ""
+"This pattern is problematic if the <literal>Session</literal> is too big to "
+"be stored during user think time, e.g. an <literal>HttpSession</literal> "
+"should be kept as small as possible. As the <literal>Session</literal> is "
+"also the (mandatory) first-level cache and contains all loaded objects, we "
+"can probably use this strategy only for a few request/response cycles. You "
+"should use a <literal>Session</literal> only for a single conversation, as "
+"it will soon also have stale data."
+msgstr ""
+"Si las llamadas explícitas a <literal>disconnect()</literal> y "
+"<literal>reconnect()</literal> son muy onerosas, puedes usar en cambio "
+"<literal>hibernate.connection.release_mode</literal>."
-#: index.docbook:723
-msgid "(Note that earlier Hibernate versions required explicit disconnection and reconnection of a <literal>Session</literal>. These methods are deprecated, as beginning and ending a transaction has the same effect.)"
-msgstr "Puedes deshabilitar el incremento de versión automático de Hibernate para propiedades en particular y colecciones estableciendo el atributo de mapeo <literal>optimistic-lock</literal> a <literal>false</literal>. Hibernate entonces no incrementará ya más las versiones si la propiedad está sucia."
+#. Tag: para
+#: transactions.xml:723
+#, no-c-format
+msgid ""
+"(Note that earlier Hibernate versions required explicit disconnection and "
+"reconnection of a <literal>Session</literal>. These methods are deprecated, "
+"as beginning and ending a transaction has the same effect.)"
+msgstr ""
+"Este patrón es problemático si la <literal>Session</literal> es demasiado "
+"grande para ser almacenada durante el tiempo de pensar del usuario, por "
+"ejemplo, una <literal>HttpSession</literal> debe mantenerse tan pequeña como "
+"sea posible. Ya que la <literal>Session</literal> es también el caché "
+"(obligatorio) de primer nivel y contiene todos los objetos cargados, podemos "
+"probablemente cargar esta estrategia sólo para unos pocos ciclos petición/"
+"respuesta. Esto está de hecho recomendado, ya que la <literal>Session</"
+"literal> tendrá pronto también datos añejos."
-#: index.docbook:729
-msgid "Also note that you should keep the disconnected <literal>Session</literal> close to the persistence layer. In other words, use an EJB stateful session bean to hold the <literal>Session</literal> in a three-tier environment, and don't transfer it to the web layer (or even serialize it to a separate tier) to store it in the <literal>HttpSession</literal>."
-msgstr "Los esquemas de base de datos heredados son frecuentemente estáticos y no pueden ser modificados. U otras aplicaciones podrían también acceder la misma base de datos y no saber cómo manejar los números de versión ni incluso timestamps. En ambos casos, el versionado no puede confiarse a una columna en particular en una tabla. Para forzar un chequeo de versiones sin un mapeo de propiedad de versión o timestamp, con una comparación del estado de todos los campos en una fila, activa <literal>optimistic-lock=\"all\"</literal> en el mapeo de <literal><class></literal>. Nota que esto conceptualmente funciona solamente si Hibernate puede comparar el estado viejo y nuevo, es decir, si usas una sola <literal>Session</literal> larga y no sesión-por-petición-con-instancias-separadas."
+#. Tag: para
+#: transactions.xml:729
+#, no-c-format
+msgid ""
+"Also note that you should keep the disconnected <literal>Session</literal> "
+"close to the persistence layer. In other words, use an EJB stateful session "
+"bean to hold the <literal>Session</literal> in a three-tier environment, and "
+"don't transfer it to the web layer (or even serialize it to a separate tier) "
+"to store it in the <literal>HttpSession</literal>."
+msgstr ""
+"Nota también que debes mantener la <literal>Session</literal> desconectada "
+"próxima a la capa de persistencia. En otras palabras, usa una sesión de EJB "
+"con estado para tener la <literal>Session</literal> y no transferirla a la "
+"capa web para almacenarla en la <literal>HttpSession</literal> (ni incluso "
+"serializarla a una capa separada)."
-#: index.docbook:737
-msgid "The extended session pattern, or <emphasis>session-per-conversation</emphasis>, is more difficult to implement with automatic current session context management. You need to supply your own implementation of the <literal>CurrentSessionContext</literal> for this, see the Hibernate Wiki for examples."
-msgstr "A veces las modificaciones concurrentes pueden permitirse, en cuanto los cambios que hayan sido hechos no se traslapen. Si estableces <literal>optimistic-lock=\"dirty\"</literal> al mapear la <literal><class></literal>, Hibernate sólo comparará los campos sucios durante la limpieza."
+#. Tag: para
+#: transactions.xml:737
+#, no-c-format
+msgid ""
+"The extended session pattern, or <emphasis>session-per-conversation</"
+"emphasis>, is more difficult to implement with automatic current session "
+"context management. You need to supply your own implementation of the "
+"<literal>CurrentSessionContext</literal> for this, see the Hibernate Wiki "
+"for examples."
+msgstr ""
+"UNTRANSLATED!!! The extended session pattern, or <emphasis>session-per-"
+"conversation</emphasis>, is more difficult to implement with automatic "
+"current session context management. You need to supply your own "
+"implementation of the <literal>CurrentSessionContext</literal> for this, see "
+"the Hibernate Wiki for examples."
-#: index.docbook:747
+#. Tag: title
+#: transactions.xml:747
+#, no-c-format
msgid "Detached objects and automatic versioning"
-msgstr "En ambos casos, con columnas de versión/timestamp dedicadas o con comparación de campos completa/sucios, Hibernate usa una sola sentencia <literal>UPDATE</literal> (con una cláusula <literal>WHERE</literal> apropiada) por entidad para ejecutar el chequeo de versiones y actualizar la información. Si usas persistencia transitiva para la re-unión en cascada de entidades asociadas, Hibernate podría ejecutar actualizaciones innecesarias. Esto usualmente no es un problema, pero podrían ejecutarse disparadores (triggers) <emphasis>on update</emphasis> en la base de datos incluso cuando no se haya hecho ningún cambio a las instancias separadas. Puedes personalizar este comportamiento estableciendo <literal>select-before-update=\"true\"</literal> en el mapeo de <literal><class></literal>, forzando a Hibernate a <literal>SELECT</literal> la instancia para asegurar que las actualizaciones realmente ocurran, antes de!
actualizar la fila."
+msgstr "Objetos separados y versionado automático"
-#: index.docbook:749
-msgid "Each interaction with the persistent store occurs in a new <literal>Session</literal>. However, the same persistent instances are reused for each interaction with the database. The application manipulates the state of detached instances originally loaded in another <literal>Session</literal> and then reattaches them using <literal>Session.update()</literal>, <literal>Session.saveOrUpdate()</literal>, or <literal>Session.merge()</literal>."
-msgstr "Bloqueo pesimista"
+#. Tag: para
+#: transactions.xml:749
+#, no-c-format
+msgid ""
+"Each interaction with the persistent store occurs in a new <literal>Session</"
+"literal>. However, the same persistent instances are reused for each "
+"interaction with the database. The application manipulates the state of "
+"detached instances originally loaded in another <literal>Session</literal> "
+"and then reattaches them using <literal>Session.update()</literal>, "
+"<literal>Session.saveOrUpdate()</literal>, or <literal>Session.merge()</"
+"literal>."
+msgstr ""
+"Cada interacción con el almacén persistente ocurre en una nueva "
+"<literal>Session</literal>. Sin embargo, las mismas instancias persistentes "
+"son reusadas para cada interacción con la base de datos. La aplicación "
+"manipula el estado de las instancias separadas originalmente cargadas en "
+"otra <literal>Session</literal> y luego las readjunta usando "
+"<literal>Session.update()</literal>, <literal>Session.saveOrUpdate()</"
+"literal>, o <literal>Session.merge()</literal>."
-#: index.docbook:757
+#. Tag: programlisting
+#: transactions.xml:757
+#, no-c-format
msgid ""
- "<![CDATA[// foo is an instance loaded by a previous Session\n"
- "foo.setProperty(\"bar\");\n"
- "session = factory.openSession();\n"
- "Transaction t = session.beginTransaction();\n"
- "session.saveOrUpdate(foo); // Use merge() if \"foo\" might have been loaded already\n"
- "t.commit();\n"
- "session.close();]]>"
-msgstr "No se pretende que los usuarios gasten mucho tiempo preocupándose de las estrategias de bloqueo. Usualmente es suficiente con especificar un nivel de aislamiento para las conexiones JDBC y entonces simplemente dejar que la base de datos haga todo el trabajo. Sin embargo, los usuarios avanzados pueden a veces obtener bloqueos exclusivos pesimistas, o reobtener bloqueos al comienzo de una nueva transacción."
+"<![CDATA[// foo is an instance loaded by a previous Session\n"
+"foo.setProperty(\"bar\");\n"
+"session = factory.openSession();\n"
+"Transaction t = session.beginTransaction();\n"
+"session.saveOrUpdate(foo); // Use merge() if \"foo\" might have been loaded "
+"already\n"
+"t.commit();\n"
+"session.close();]]>"
+msgstr ""
-#: index.docbook:759
-msgid "Again, Hibernate will check instance versions during flush, throwing an exception if conflicting updates occured."
-msgstr "¡Hibernate siempre usará el mecanismo de bloqueo de la base de datos, nunca bloqueo de objetos en memoria!"
+#. Tag: para
+#: transactions.xml:759
+#, no-c-format
+msgid ""
+"Again, Hibernate will check instance versions during flush, throwing an "
+"exception if conflicting updates occured."
+msgstr ""
+"De nuevo, Hibernate chequeará las versiones de instancia durante la limpieza "
+"(flush), lanzando una excepción si ocurrieron actualizaciones en conflicto."
-#: index.docbook:764
-msgid "You may also call <literal>lock()</literal> instead of <literal>update()</literal> and use <literal>LockMode.READ</literal> (performing a version check, bypassing all caches) if you are sure that the object has not been modified."
-msgstr "La clase <literal>LockMode</literal> define los diferentes niveles de bloqueo que pueden ser adquiridos por Hibernate. Un bloqueo se obtiene por los siguientes mecanismos:"
+#. Tag: para
+#: transactions.xml:764
+#, no-c-format
+msgid ""
+"You may also call <literal>lock()</literal> instead of <literal>update()</"
+"literal> and use <literal>LockMode.READ</literal> (performing a version "
+"check, bypassing all caches) if you are sure that the object has not been "
+"modified."
+msgstr ""
+"Puedes también llamar a <literal>lock()</literal> en vez de <literal>update()"
+"</literal> y usar <literal>LockMode.READ</literal> (realizando un chequeo de "
+"versión, puenteando todos los cachés) si estás seguro que el objeto no ha "
+"sido modificado."
-#: index.docbook:773
+#. Tag: title
+#: transactions.xml:773
+#, no-c-format
msgid "Customizing automatic versioning"
-msgstr "<literal>LockMode.WRITE</literal> se adquiere automáticamente cuando Hibernate actualiza o inserta una fila."
+msgstr "Personalizando el versionado automático"
-#: index.docbook:775
-msgid "You may disable Hibernate's automatic version increment for particular properties and collections by setting the <literal>optimistic-lock</literal> mapping attribute to <literal>false</literal>. Hibernate will then no longer increment versions if the property is dirty."
-msgstr "<literal>LockMode.UPGRADE</literal> puede ser adquirido bajo petición explícita del usuario usando <literal>SELECT ... FOR UPDATE</literal> en base de datos que soporten esa sintáxis."
+#. Tag: para
+#: transactions.xml:775
+#, no-c-format
+msgid ""
+"You may disable Hibernate's automatic version increment for particular "
+"properties and collections by setting the <literal>optimistic-lock</literal> "
+"mapping attribute to <literal>false</literal>. Hibernate will then no longer "
+"increment versions if the property is dirty."
+msgstr ""
+"Puedes deshabilitar el incremento de versión automático de Hibernate para "
+"propiedades en particular y colecciones estableciendo el atributo de mapeo "
+"<literal>optimistic-lock</literal> a <literal>false</literal>. Hibernate "
+"entonces no incrementará ya más las versiones si la propiedad está sucia."
-#: index.docbook:782
-msgid "Legacy database schemas are often static and can't be modified. Or, other applications might also access the same database and don't know how to handle version numbers or even timestamps. In both cases, versioning can't rely on a particular column in a table. To force a version check without a version or timestamp property mapping, with a comparison of the state of all fields in a row, turn on <literal>optimistic-lock=\"all\"</literal> in the <literal><class></literal> mapping. Note that this concepetually only works if Hibernate can compare the old and new state, i.e. if you use a single long <literal>Session</literal> and not session-per-request-with-detached-objects."
-msgstr "<literal>LockMode.UPGRADE_NOWAIT</literal> puede ser adquirido bajo petición explícita del usuario usando un <literal>SELECT ... FOR UPDATE NOWAIT</literal> bajo Oracle."
+#. Tag: para
+#: transactions.xml:782
+#, no-c-format
+msgid ""
+"Legacy database schemas are often static and can't be modified. Or, other "
+"applications might also access the same database and don't know how to "
+"handle version numbers or even timestamps. In both cases, versioning can't "
+"rely on a particular column in a table. To force a version check without a "
+"version or timestamp property mapping, with a comparison of the state of all "
+"fields in a row, turn on <literal>optimistic-lock=\"all\"</literal> in the "
+"<literal><class></literal> mapping. Note that this concepetually only "
+"works if Hibernate can compare the old and new state, i.e. if you use a "
+"single long <literal>Session</literal> and not session-per-request-with-"
+"detached-objects."
+msgstr ""
+"Los esquemas de base de datos heredados son frecuentemente estáticos y no "
+"pueden ser modificados. U otras aplicaciones podrían también acceder la "
+"misma base de datos y no saber cómo manejar los números de versión ni "
+"incluso timestamps. En ambos casos, el versionado no puede confiarse a una "
+"columna en particular en una tabla. Para forzar un chequeo de versiones sin "
+"un mapeo de propiedad de versión o timestamp, con una comparación del estado "
+"de todos los campos en una fila, activa <literal>optimistic-lock=\"all\"</"
+"literal> en el mapeo de <literal><class></literal>. Nota que esto "
+"conceptualmente funciona solamente si Hibernate puede comparar el estado "
+"viejo y nuevo, es decir, si usas una sola <literal>Session</literal> larga y "
+"no sesión-por-petición-con-instancias-separadas."
-#: index.docbook:793
-msgid "Sometimes concurrent modification can be permitted as long as the changes that have been made don't overlap. If you set <literal>optimistic-lock=\"dirty\"</literal> when mapping the <literal><class></literal>, Hibernate will only compare dirty fields during flush."
-msgstr "<literal>LockMode.READ</literal> es adquirido automáticamente cuando Hibernate lee datos bajo los niveles de aislamiento Repeatable Read o Serializable. Puede ser readquirido por pedido explícito del usuario."
+#. Tag: para
+#: transactions.xml:793
+#, no-c-format
+msgid ""
+"Sometimes concurrent modification can be permitted as long as the changes "
+"that have been made don't overlap. If you set <literal>optimistic-lock="
+"\"dirty\"</literal> when mapping the <literal><class></literal>, "
+"Hibernate will only compare dirty fields during flush."
+msgstr ""
+"A veces las modificaciones concurrentes pueden permitirse, en cuanto los "
+"cambios que hayan sido hechos no se traslapen. Si estableces "
+"<literal>optimistic-lock=\"dirty\"</literal> al mapear la <literal><"
+"class></literal>, Hibernate sólo comparará los campos sucios durante la "
+"limpieza."
-#: index.docbook:799
-msgid "In both cases, with dedicated version/timestamp columns or with full/dirty field comparison, Hibernate uses a single <literal>UPDATE</literal> statement (with an appropriate <literal>WHERE</literal> clause) per entity to execute the version check and update the information. If you use transitive persistence to cascade reattachment to associated entities, Hibernate might execute uneccessary updates. This is usually not a problem, but <emphasis>on update</emphasis> triggers in the database might be executed even when no changes have been made to detached instances. You can customize this behavior by setting <literal>select-before-update=\"true\"</literal> in the <literal><class></literal> mapping, forcing Hibernate to <literal>SELECT</literal> the instance to ensure that changes did actually occur, before updating the row."
-msgstr "<literal>LockMode.NONE</literal> representa la ausencia de un bloqueo. Todos los objetos se pasan a este modo de bloqueo al final de una <literal>Transaction</literal>. Los objetos asociados con una sesión vía una llamada a <literal>update()</literal> o <literal>saveOrUpdate()</literal> también comienzan en este modo de bloqueo."
+#. Tag: para
+#: transactions.xml:799
+#, no-c-format
+msgid ""
+"In both cases, with dedicated version/timestamp columns or with full/dirty "
+"field comparison, Hibernate uses a single <literal>UPDATE</literal> "
+"statement (with an appropriate <literal>WHERE</literal> clause) per entity "
+"to execute the version check and update the information. If you use "
+"transitive persistence to cascade reattachment to associated entities, "
+"Hibernate might execute uneccessary updates. This is usually not a problem, "
+"but <emphasis>on update</emphasis> triggers in the database might be "
+"executed even when no changes have been made to detached instances. You can "
+"customize this behavior by setting <literal>select-before-update=\"true\"</"
+"literal> in the <literal><class></literal> mapping, forcing Hibernate "
+"to <literal>SELECT</literal> the instance to ensure that changes did "
+"actually occur, before updating the row."
+msgstr ""
+"En ambos casos, con columnas de versión/timestamp dedicadas o con "
+"comparación de campos completa/sucios, Hibernate usa una sola sentencia "
+"<literal>UPDATE</literal> (con una cláusula <literal>WHERE</literal> "
+"apropiada) por entidad para ejecutar el chequeo de versiones y actualizar la "
+"información. Si usas persistencia transitiva para la re-unión en cascada de "
+"entidades asociadas, Hibernate podría ejecutar actualizaciones innecesarias. "
+"Esto usualmente no es un problema, pero podrían ejecutarse disparadores "
+"(triggers) <emphasis>on update</emphasis> en la base de datos incluso cuando "
+"no se haya hecho ningún cambio a las instancias separadas. Puedes "
+"personalizar este comportamiento estableciendo <literal>select-before-update="
+"\"true\"</literal> en el mapeo de <literal><class></literal>, forzando "
+"a Hibernate a <literal>SELECT</literal> la instancia para asegurar que las "
+"actualizaciones realmente ocurran, antes de actualizar la fila."
-#: index.docbook:817
+#. Tag: title
+#: transactions.xml:817
+#, no-c-format
msgid "Pessimistic Locking"
-msgstr "La \"petición explícita del usuario\" se expresa en una de las siguientes formas:"
+msgstr "Bloqueo pesimista"
-#: index.docbook:819
-msgid "It is not intended that users spend much time worring about locking strategies. Its usually enough to specify an isolation level for the JDBC connections and then simply let the database do all the work. However, advanced users may sometimes wish to obtain exclusive pessimistic locks, or re-obtain locks at the start of a new transaction."
-msgstr "Una llamada a <literal>Session.load()</literal>, especificando un <literal>LockMode</literal>."
+#. Tag: para
+#: transactions.xml:819
+#, no-c-format
+msgid ""
+"It is not intended that users spend much time worring about locking "
+"strategies. Its usually enough to specify an isolation level for the JDBC "
+"connections and then simply let the database do all the work. However, "
+"advanced users may sometimes wish to obtain exclusive pessimistic locks, or "
+"re-obtain locks at the start of a new transaction."
+msgstr ""
+"No se pretende que los usuarios gasten mucho tiempo preocupándose de las "
+"estrategias de bloqueo. Usualmente es suficiente con especificar un nivel de "
+"aislamiento para las conexiones JDBC y entonces simplemente dejar que la "
+"base de datos haga todo el trabajo. Sin embargo, los usuarios avanzados "
+"pueden a veces obtener bloqueos exclusivos pesimistas, o reobtener bloqueos "
+"al comienzo de una nueva transacción."
-#: index.docbook:826
-msgid "Hibernate will always use the locking mechanism of the database, never lock objects in memory!"
-msgstr "Una llamada a <literal>Session.lock()</literal>."
+#. Tag: para
+#: transactions.xml:826
+#, no-c-format
+msgid ""
+"Hibernate will always use the locking mechanism of the database, never lock "
+"objects in memory!"
+msgstr ""
+"¡Hibernate siempre usará el mecanismo de bloqueo de la base de datos, nunca "
+"bloqueo de objetos en memoria!"
-#: index.docbook:831
-msgid "The <literal>LockMode</literal> class defines the different lock levels that may be acquired by Hibernate. A lock is obtained by the following mechanisms:"
-msgstr "Una llamada a <literal>Query.setLockMode()</literal>."
+#. Tag: para
+#: transactions.xml:831
+#, no-c-format
+msgid ""
+"The <literal>LockMode</literal> class defines the different lock levels that "
+"may be acquired by Hibernate. A lock is obtained by the following mechanisms:"
+msgstr ""
+"La clase <literal>LockMode</literal> define los diferentes niveles de "
+"bloqueo que pueden ser adquiridos por Hibernate. Un bloqueo se obtiene por "
+"los siguientes mecanismos:"
-#: index.docbook:838
-msgid "<literal>LockMode.WRITE</literal> is acquired automatically when Hibernate updates or inserts a row."
-msgstr "Si se llama a <literal>Session.load()</literal> con <literal>UPGRADE</literal> o <literal>UPGRADE_NOWAIT</literal>, y el objeto pedido no ha sido aún cargado por la sesión, el objeto es cargado usando <literal>SELECT ... FOR UPDATE</literal>. Si se llama a <literal>load()</literal> para un objeto que ya esté cargado con un bloqueo menos restrictivo que el pedido, Hibernate llama a <literal>lock()</literal> para ese objeto."
+#. Tag: para
+#: transactions.xml:838
+#, no-c-format
+msgid ""
+"<literal>LockMode.WRITE</literal> is acquired automatically when Hibernate "
+"updates or inserts a row."
+msgstr ""
+"<literal>LockMode.WRITE</literal> se adquiere automáticamente cuando "
+"Hibernate actualiza o inserta una fila."
-#: index.docbook:844
-msgid "<literal>LockMode.UPGRADE</literal> may be acquired upon explicit user request using <literal>SELECT ... FOR UPDATE</literal> on databases which support that syntax."
-msgstr "<literal>Session.lock()</literal> realiza un chequeo de número de versión si el modo de bloqueo especificado es <literal>READ</literal>, <literal>UPGRADE</literal> o <literal>UPGRADE_NOWAIT</literal>. (En el caso de <literal>UPGRADE</literal> o <literal>UPGRADE_NOWAIT</literal>, se usa <literal>SELECT ... FOR UPDATE</literal>.)"
+#. Tag: para
+#: transactions.xml:844
+#, no-c-format
+msgid ""
+"<literal>LockMode.UPGRADE</literal> may be acquired upon explicit user "
+"request using <literal>SELECT ... FOR UPDATE</literal> on databases which "
+"support that syntax."
+msgstr ""
+"<literal>LockMode.UPGRADE</literal> puede ser adquirido bajo petición "
+"explícita del usuario usando <literal>SELECT ... FOR UPDATE</literal> en "
+"base de datos que soporten esa sintáxis."
-#: index.docbook:850
-msgid "<literal>LockMode.UPGRADE_NOWAIT</literal> may be acquired upon explicit user request using a <literal>SELECT ... FOR UPDATE NOWAIT</literal> under Oracle."
-msgstr "Si la base de datos no soporta el modo de bloqueo solicitado, Hibernate usará un modo alternativo apropiado (en vez de lanzar una excepción). Esto asegura que las aplicaciones serán portables."
+#. Tag: para
+#: transactions.xml:850
+#, no-c-format
+msgid ""
+"<literal>LockMode.UPGRADE_NOWAIT</literal> may be acquired upon explicit "
+"user request using a <literal>SELECT ... FOR UPDATE NOWAIT</literal> under "
+"Oracle."
+msgstr ""
+"<literal>LockMode.UPGRADE_NOWAIT</literal> puede ser adquirido bajo petición "
+"explícita del usuario usando un <literal>SELECT ... FOR UPDATE NOWAIT</"
+"literal> bajo Oracle."
-#: index.docbook:856
-msgid "<literal>LockMode.READ</literal> is acquired automatically when Hibernate reads data under Repeatable Read or Serializable isolation level. May be re-acquired by explicit user request."
+#. Tag: para
+#: transactions.xml:856
+#, no-c-format
+msgid ""
+"<literal>LockMode.READ</literal> is acquired automatically when Hibernate "
+"reads data under Repeatable Read or Serializable isolation level. May be re-"
+"acquired by explicit user request."
msgstr ""
+"<literal>LockMode.READ</literal> es adquirido automáticamente cuando "
+"Hibernate lee datos bajo los niveles de aislamiento Repeatable Read o "
+"Serializable. Puede ser readquirido por pedido explícito del usuario."
-#: index.docbook:863
-msgid "<literal>LockMode.NONE</literal> represents the absence of a lock. All objects switch to this lock mode at the end of a <literal>Transaction</literal>. Objects associated with the session via a call to <literal>update()</literal> or <literal>saveOrUpdate()</literal> also start out in this lock mode."
+#. Tag: para
+#: transactions.xml:863
+#, no-c-format
+msgid ""
+"<literal>LockMode.NONE</literal> represents the absence of a lock. All "
+"objects switch to this lock mode at the end of a <literal>Transaction</"
+"literal>. Objects associated with the session via a call to <literal>update()"
+"</literal> or <literal>saveOrUpdate()</literal> also start out in this lock "
+"mode."
msgstr ""
+"<literal>LockMode.NONE</literal> representa la ausencia de un bloqueo. Todos "
+"los objetos se pasan a este modo de bloqueo al final de una "
+"<literal>Transaction</literal>. Los objetos asociados con una sesión vía una "
+"llamada a <literal>update()</literal> o <literal>saveOrUpdate()</literal> "
+"también comienzan en este modo de bloqueo."
-#: index.docbook:872
-msgid "The \"explicit user request\" is expressed in one of the following ways:"
+#. Tag: para
+#: transactions.xml:872
+#, no-c-format
+msgid ""
+"The \"explicit user request\" is expressed in one of the following ways:"
msgstr ""
+"La \"petición explícita del usuario\" se expresa en una de las siguientes "
+"formas:"
-#: index.docbook:878
-msgid "A call to <literal>Session.load()</literal>, specifying a <literal>LockMode</literal>."
+#. Tag: para
+#: transactions.xml:878
+#, no-c-format
+msgid ""
+"A call to <literal>Session.load()</literal>, specifying a <literal>LockMode</"
+"literal>."
msgstr ""
+"Una llamada a <literal>Session.load()</literal>, especificando un "
+"<literal>LockMode</literal>."
-#: index.docbook:883
+#. Tag: para
+#: transactions.xml:883
+#, no-c-format
msgid "A call to <literal>Session.lock()</literal>."
-msgstr ""
+msgstr "Una llamada a <literal>Session.lock()</literal>."
-#: index.docbook:888
+#. Tag: para
+#: transactions.xml:888
+#, no-c-format
msgid "A call to <literal>Query.setLockMode()</literal>."
-msgstr ""
+msgstr "Una llamada a <literal>Query.setLockMode()</literal>."
-#: index.docbook:894
-msgid "If <literal>Session.load()</literal> is called with <literal>UPGRADE</literal> or <literal>UPGRADE_NOWAIT</literal>, and the requested object was not yet loaded by the session, the object is loaded using <literal>SELECT ... FOR UPDATE</literal>. If <literal>load()</literal> is called for an object that is already loaded with a less restrictive lock than the one requested, Hibernate calls <literal>lock()</literal> for that object."
+#. Tag: para
+#: transactions.xml:894
+#, no-c-format
+msgid ""
+"If <literal>Session.load()</literal> is called with <literal>UPGRADE</"
+"literal> or <literal>UPGRADE_NOWAIT</literal>, and the requested object was "
+"not yet loaded by the session, the object is loaded using "
+"<literal>SELECT ... FOR UPDATE</literal>. If <literal>load()</literal> is "
+"called for an object that is already loaded with a less restrictive lock "
+"than the one requested, Hibernate calls <literal>lock()</literal> for that "
+"object."
msgstr ""
+"Si se llama a <literal>Session.load()</literal> con <literal>UPGRADE</"
+"literal> o <literal>UPGRADE_NOWAIT</literal>, y el objeto pedido no ha sido "
+"aún cargado por la sesión, el objeto es cargado usando <literal>SELECT ... "
+"FOR UPDATE</literal>. Si se llama a <literal>load()</literal> para un objeto "
+"que ya esté cargado con un bloqueo menos restrictivo que el pedido, "
+"Hibernate llama a <literal>lock()</literal> para ese objeto."
-#: index.docbook:903
-msgid "<literal>Session.lock()</literal> performs a version number check if the specified lock mode is <literal>READ</literal>, <literal>UPGRADE</literal> or <literal>UPGRADE_NOWAIT</literal>. (In the case of <literal>UPGRADE</literal> or <literal>UPGRADE_NOWAIT</literal>, <literal>SELECT ... FOR UPDATE</literal> is used.)"
+#. Tag: para
+#: transactions.xml:903
+#, no-c-format
+msgid ""
+"<literal>Session.lock()</literal> performs a version number check if the "
+"specified lock mode is <literal>READ</literal>, <literal>UPGRADE</literal> "
+"or <literal>UPGRADE_NOWAIT</literal>. (In the case of <literal>UPGRADE</"
+"literal> or <literal>UPGRADE_NOWAIT</literal>, <literal>SELECT ... FOR "
+"UPDATE</literal> is used.)"
msgstr ""
+"<literal>Session.lock()</literal> realiza un chequeo de número de versión si "
+"el modo de bloqueo especificado es <literal>READ</literal>, "
+"<literal>UPGRADE</literal> o <literal>UPGRADE_NOWAIT</literal>. (En el caso "
+"de <literal>UPGRADE</literal> o <literal>UPGRADE_NOWAIT</literal>, se usa "
+"<literal>SELECT ... FOR UPDATE</literal>.)"
-#: index.docbook:910
-msgid "If the database does not support the requested lock mode, Hibernate will use an appropriate alternate mode (instead of throwing an exception). This ensures that applications will be portable."
+#. Tag: para
+#: transactions.xml:910
+#, no-c-format
+msgid ""
+"If the database does not support the requested lock mode, Hibernate will use "
+"an appropriate alternate mode (instead of throwing an exception). This "
+"ensures that applications will be portable."
msgstr ""
+"Si la base de datos no soporta el modo de bloqueo solicitado, Hibernate "
+"usará un modo alternativo apropiado (en vez de lanzar una excepción). Esto "
+"asegura que las aplicaciones serán portables."
-#: index.docbook:919
+#. Tag: title
+#: transactions.xml:919
+#, no-c-format
msgid "Connection Release Modes"
-msgstr ""
+msgstr "translator-credits"
-#: index.docbook:921
-msgid "The legacy (2.x) behavior of Hibernate in regards to JDBC connection management was that a <literal>Session</literal> would obtain a connection when it was first needed and then hold unto that connection until the session was closed. Hibernate 3.x introduced the notion of connection release modes to tell a session how to handle its JDBC connections. Note that the following discussion is pertinent only to connections provided through a configured <literal>ConnectionProvider</literal>; user-supplied connections are outside the breadth of this discussion. The different release modes are identified by the enumerated values of <literal>org.hibernate.ConnectionReleaseMode</literal>:"
+#. Tag: para
+#: transactions.xml:921
+#, no-c-format
+msgid ""
+"The legacy (2.x) behavior of Hibernate in regards to JDBC connection "
+"management was that a <literal>Session</literal> would obtain a connection "
+"when it was first needed and then hold unto that connection until the "
+"session was closed. Hibernate 3.x introduced the notion of connection "
+"release modes to tell a session how to handle its JDBC connections. Note "
+"that the following discussion is pertinent only to connections provided "
+"through a configured <literal>ConnectionProvider</literal>; user-supplied "
+"connections are outside the breadth of this discussion. The different "
+"release modes are identified by the enumerated values of <literal>org."
+"hibernate.ConnectionReleaseMode</literal>:"
msgstr ""
-#: index.docbook:935
-msgid "<literal>ON_CLOSE</literal> - is essentially the legacy behavior described above. The Hibernate session obatins a connection when it first needs to perform some JDBC access and holds unto that connection until the session is closed."
+#. Tag: para
+#: transactions.xml:935
+#, no-c-format
+msgid ""
+"<literal>ON_CLOSE</literal> - is essentially the legacy behavior described "
+"above. The Hibernate session obatins a connection when it first needs to "
+"perform some JDBC access and holds unto that connection until the session is "
+"closed."
msgstr ""
-#: index.docbook:942
-msgid "<literal>AFTER_TRANSACTION</literal> - says to release connections after a <literal>org.hibernate.Transaction</literal> has completed."
+#. Tag: para
+#: transactions.xml:942
+#, no-c-format
+msgid ""
+"<literal>AFTER_TRANSACTION</literal> - says to release connections after a "
+"<literal>org.hibernate.Transaction</literal> has completed."
msgstr ""
-#: index.docbook:948
-msgid "<literal>AFTER_STATEMENT</literal> (also referred to as aggressive release) - says to release connections after each and every statement execution. This aggressive releasing is skipped if that statement leaves open resources associated with the given session; currently the only situation where this occurs is through the use of <literal>org.hibernate.ScrollableResults</literal>."
+#. Tag: para
+#: transactions.xml:948
+#, no-c-format
+msgid ""
+"<literal>AFTER_STATEMENT</literal> (also referred to as aggressive release) "
+"- says to release connections after each and every statement execution. This "
+"aggressive releasing is skipped if that statement leaves open resources "
+"associated with the given session; currently the only situation where this "
+"occurs is through the use of <literal>org.hibernate.ScrollableResults</"
+"literal>."
msgstr ""
-#: index.docbook:958
-msgid "The configuration parameter <literal>hibernate.connection.release_mode</literal> is used to specify which release mode to use. The possible values:"
+#. Tag: para
+#: transactions.xml:958
+#, no-c-format
+msgid ""
+"The configuration parameter <literal>hibernate.connection.release_mode</"
+"literal> is used to specify which release mode to use. The possible values:"
msgstr ""
-#: index.docbook:965
-msgid "<literal>auto</literal> (the default) - this choice delegates to the release mode returned by the <literal>org.hibernate.transaction.TransactionFactory.getDefaultReleaseMode()</literal> method. For JTATransactionFactory, this returns ConnectionReleaseMode.AFTER_STATEMENT; for JDBCTransactionFactory, this returns ConnectionReleaseMode.AFTER_TRANSACTION. It is rarely a good idea to change this default behavior as failures due to the value of this setting tend to indicate bugs and/or invalid assumptions in user code."
+#. Tag: para
+#: transactions.xml:965
+#, no-c-format
+msgid ""
+"<literal>auto</literal> (the default) - this choice delegates to the release "
+"mode returned by the <literal>org.hibernate.transaction.TransactionFactory."
+"getDefaultReleaseMode()</literal> method. For JTATransactionFactory, this "
+"returns ConnectionReleaseMode.AFTER_STATEMENT; for JDBCTransactionFactory, "
+"this returns ConnectionReleaseMode.AFTER_TRANSACTION. It is rarely a good "
+"idea to change this default behavior as failures due to the value of this "
+"setting tend to indicate bugs and/or invalid assumptions in user code."
msgstr ""
-#: index.docbook:975
-msgid "<literal>on_close</literal> - says to use ConnectionReleaseMode.ON_CLOSE. This setting is left for backwards compatibility, but its use is highly discouraged."
+#. Tag: para
+#: transactions.xml:975
+#, no-c-format
+msgid ""
+"<literal>on_close</literal> - says to use ConnectionReleaseMode.ON_CLOSE. "
+"This setting is left for backwards compatibility, but its use is highly "
+"discouraged."
msgstr ""
-#: index.docbook:981
-msgid "<literal>after_transaction</literal> - says to use ConnectionReleaseMode.AFTER_TRANSACTION. This setting should not be used in JTA environments. Also note that with ConnectionReleaseMode.AFTER_TRANSACTION, if a session is considered to be in auto-commit mode connections will be released as if the release mode were AFTER_STATEMENT."
+#. Tag: para
+#: transactions.xml:981
+#, no-c-format
+msgid ""
+"<literal>after_transaction</literal> - says to use ConnectionReleaseMode."
+"AFTER_TRANSACTION. This setting should not be used in JTA environments. Also "
+"note that with ConnectionReleaseMode.AFTER_TRANSACTION, if a session is "
+"considered to be in auto-commit mode connections will be released as if the "
+"release mode were AFTER_STATEMENT."
msgstr ""
-#: index.docbook:989
-msgid "<literal>after_statement</literal> - says to use ConnectionReleaseMode.AFTER_STATEMENT. Additionally, the configured <literal>ConnectionProvider</literal> is consulted to see if it supports this setting (<literal>supportsAggressiveRelease()</literal>). If not, the release mode is reset to ConnectionReleaseMode.AFTER_TRANSACTION. This setting is only safe in environments where we can either re-acquire the same underlying JDBC connection each time we make a call into <literal>ConnectionProvider.getConnection()</literal> or in auto-commit environments where it does not matter whether we get back the same connection."
+#. Tag: para
+#: transactions.xml:989
+#, no-c-format
+msgid ""
+"<literal>after_statement</literal> - says to use ConnectionReleaseMode."
+"AFTER_STATEMENT. Additionally, the configured <literal>ConnectionProvider</"
+"literal> is consulted to see if it supports this setting "
+"(<literal>supportsAggressiveRelease()</literal>). If not, the release mode "
+"is reset to ConnectionReleaseMode.AFTER_TRANSACTION. This setting is only "
+"safe in environments where we can either re-acquire the same underlying JDBC "
+"connection each time we make a call into <literal>ConnectionProvider."
+"getConnection()</literal> or in auto-commit environments where it does not "
+"matter whether we get back the same connection."
msgstr ""
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
Modified: core/trunk/documentation/manual/translations/es-ES/content/tutorial.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/tutorial.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/tutorial.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,1747 +1,2805 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:48+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:7
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: tutorial.xml:7
+#, no-c-format
msgid "Introduction to Hibernate"
-msgstr "Introducción a Hibernate"
+msgstr "Introducción a Hibernate"
-#: index.docbook:10
+#. Tag: title
+#: tutorial.xml:10
+#, no-c-format
msgid "Preface"
msgstr "Prefacio"
-#: index.docbook:12
-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 "Este capítulo es un tutorial introductorio de Hibernate. Comenzamos con una aplicación simple de línea de comandos usando un base de datos en-memoria y desarrollándola en fácil para entender los pasos."
+#. Tag: para
+#: tutorial.xml:12
+#, no-c-format
+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 ""
+"Este capítulo es un tutorial introductorio de Hibernate. Comenzamos con una "
+"aplicación simple de línea de comandos usando un base de datos en-memoria y "
+"desarrollándola en fácil para entender los pasos."
-#: index.docbook:18
-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 "Este tutorial está concebido para usuarios nuevos de Hibernate pero requiere conocimiento en Java y SQL. Está basado en un tutorial de Michael Gloegl. Las bibliotecas de terceros que mencionamos son para JDK 1.4 y 5.0. Podrías necesitar otras para JDK 1.3."
+#. Tag: para
+#: tutorial.xml:18
+#, no-c-format
+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 ""
+"Este tutorial está concebido para usuarios nuevos de Hibernate pero requiere "
+"conocimiento en Java y SQL. Está basado en un tutorial de Michael Gloegl. "
+"Las bibliotecas de terceros que mencionamos son para JDK 1.4 y 5.0. Podrías "
+"necesitar otras para JDK 1.3."
-#: index.docbook:24
-msgid "The source code for the tutorial is included in the distribution in the <literal>doc/reference/tutorial/</literal> directory."
-msgstr "Parte 1 - La primera Aplicación Hibernate"
+#. Tag: para
+#: tutorial.xml:24
+#, no-c-format
+msgid ""
+"The source code for the tutorial is included in the distribution in the "
+"<literal>doc/reference/tutorial/</literal> directory."
+msgstr ""
+"UNTRANSLATED!!! The source code for the tutorial is included in the "
+"distribution in the <literal>doc/reference/tutorial/</literal> directory."
-#: index.docbook:32
+#. Tag: title
+#: tutorial.xml:32
+#, no-c-format
msgid "Part 1 - The first Hibernate Application"
-msgstr "Primero, crearemos una aplicación simple de Hibenate basada en consola. Usamos usamos una base de datos en-memoria (HSQL DB), de modo que no necesitamos instalar ningún servidor de base de datos."
+msgstr "Parte 1 - La primera Aplicación Hibernate"
-#: index.docbook:34
-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 "Asumamos que necesitamos una aplicación pequeña de base de datos que pueda almacenar eventos que queremos atender, e información acerca de los hostales de estos eventos."
+#. Tag: para
+#: tutorial.xml:34
+#, no-c-format
+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 ""
+"Primero, crearemos una aplicación simple de Hibenate basada en consola. "
+"Usamos usamos una base de datos en-memoria (HSQL DB), de modo que no "
+"necesitamos instalar ningún servidor de base de datos."
-#: index.docbook:39
-msgid "Let's assume we need a small database application that can store events we want to attend, and information about the hosts of these events."
-msgstr "La primera cosa que hacemos, es armar nuestro directorio de desarrollo y poner en él todas las bibliotecas Java que necesitamos. Descarga la distribución de Hibernate del sitio web de Hibernate. Extrae el paquete y coloca todas las bibliotecas requeridas encontradas en <literal>/lib</literal> dentro del directorio <literal>/lib</literal> de nuestro nuevo directorio de desarrollo de trabajo. Debe asemejarse a esto:"
+#. Tag: para
+#: tutorial.xml:39
+#, no-c-format
+msgid ""
+"Let's assume we need a small database application that can store events we "
+"want to attend, and information about the hosts of these events."
+msgstr ""
+"Asumamos que necesitamos una aplicación pequeña de base de datos que pueda "
+"almacenar eventos que queremos atender, e información acerca de los hostales "
+"de estos eventos."
-#: index.docbook:44
-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</literal> into into the <literal>/lib</literal> directory of your new development working directory. It should look like this:"
+#. Tag: para
+#: tutorial.xml:44
+#, no-c-format
+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</literal> into into the <literal>/lib</literal> "
+"directory of your new development working directory. It should look like "
+"this:"
msgstr ""
- "<![CDATA[.\n"
- "+lib\n"
- " antlr.jar\n"
- " cglib-full.jar\n"
- " asm.jar\n"
- " asm-attrs.jars\n"
- " commons-collections.jar\n"
- " commons-logging.jar\n"
- " ehcache.jar\n"
- " hibernate3.jar\n"
- " jta.jar\n"
- " dom4j.jar\n"
- " log4j.jar ]]>"
+"La primera cosa que hacemos, es armar nuestro directorio de desarrollo y "
+"poner en él todas las bibliotecas Java que necesitamos. Descarga la "
+"distribución de Hibernate del sitio web de Hibernate. Extrae el paquete y "
+"coloca todas las bibliotecas requeridas encontradas en <literal>/lib</"
+"literal> dentro del directorio <literal>/lib</literal> de nuestro nuevo "
+"directorio de desarrollo de trabajo. Debe asemejarse a esto:"
-#: index.docbook:52
+#. Tag: programlisting
+#: tutorial.xml:52
+#, no-c-format
msgid ""
- "<![CDATA[.\n"
- "+lib\n"
- " antlr.jar\n"
- " cglib.jar\n"
- " asm.jar\n"
- " asm-attrs.jars\n"
- " commons-collections.jar\n"
- " commons-logging.jar\n"
- " hibernate3.jar\n"
- " jta.jar\n"
- " dom4j.jar\n"
- " log4j.jar ]]>"
-msgstr "Este es el conjunto mínimo de bibliotecas requeridas para Hibernate (observa que también hemos copiado hibernate3.jar, el fichero principal). Ver el fichero <literal>README.txt</literal> en el directorio <literal>lib/</literal> de la distribución de Hibernate para más información sobre bibliotecas de terceros requeridas y opcionales. (Realmente, Log4J no es requerida aunque preferida por muchos desarrolladores)."
+"<![CDATA[.\n"
+"+lib\n"
+" antlr.jar\n"
+" cglib.jar\n"
+" asm.jar\n"
+" asm-attrs.jars\n"
+" commons-collections.jar\n"
+" commons-logging.jar\n"
+" hibernate3.jar\n"
+" jta.jar\n"
+" dom4j.jar\n"
+" log4j.jar ]]>"
+msgstr ""
-#: index.docbook:54
-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</literal> file in the <literal>lib/</literal> 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 "Por siguiente, creamos una clase que represente el evento que queremos almacenar en base de datos."
+#. Tag: para
+#: tutorial.xml:54
+#, no-c-format
+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</literal> file in the "
+"<literal>lib/</literal> 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 ""
+"Este es el conjunto mínimo de bibliotecas requeridas para Hibernate (observa "
+"que también hemos copiado hibernate3.jar, el fichero principal). Ver el "
+"fichero <literal>README.txt</literal> en el directorio <literal>lib/</"
+"literal> de la distribución de Hibernate para más información sobre "
+"bibliotecas de terceros requeridas y opcionales. (Realmente, Log4J no es "
+"requerida aunque preferida por muchos desarrolladores)."
-#: index.docbook:63
-msgid "Next we create a class that represents the event we want to store in database."
-msgstr "La primera clase"
+#. Tag: para
+#: tutorial.xml:63
+#, no-c-format
+msgid ""
+"Next we create a class that represents the event we want to store in "
+"database."
+msgstr ""
+"Por siguiente, creamos una clase que represente el evento que queremos "
+"almacenar en base de datos."
-#: index.docbook:68
+#. Tag: title
+#: tutorial.xml:68
+#, no-c-format
msgid "The first class"
-msgstr "Nuestra primera clase persistente es un JavaBean simple con algunas propiedades:"
+msgstr "La primera clase"
-#: index.docbook:70
-msgid "Our first persistent class is a simple JavaBean class with some properties:"
+#. Tag: para
+#: tutorial.xml:70
+#, no-c-format
+msgid ""
+"Our first persistent class is a simple JavaBean class with some properties:"
msgstr ""
- "<![CDATA[import java.util.Date;\n"
- "\n"
- "public class Event {\n"
- " private Long id;\n"
- "\n"
- " private String title;\n"
- " private Date date;\n"
- "\n"
- " Event() {}\n"
- "\n"
- " public Long getId() {\n"
- " return id;\n"
- " }\n"
- "\n"
- " private void setId(Long id) {\n"
- " this.id = id;\n"
- " }\n"
- "\n"
- " public Date getDate() {\n"
- " return date;\n"
- " }\n"
- "\n"
- " public void setDate(Date date) {\n"
- " this.date = date;\n"
- " }\n"
- "\n"
- " public String getTitle() {\n"
- " return title;\n"
- " }\n"
- "\n"
- " public void setTitle(String title) {\n"
- " this.title = title;\n"
- " }\n"
- "}]]>"
+"Nuestra primera clase persistente es un JavaBean simple con algunas "
+"propiedades:"
-#: index.docbook:74
+#. Tag: programlisting
+#: tutorial.xml:74
+#, no-c-format
msgid ""
- "<![CDATA[package events;\n"
- "\n"
- "import java.util.Date;\n"
- "\n"
- "public class Event {\n"
- " private Long id;\n"
- "\n"
- " private String title;\n"
- " private Date date;\n"
- "\n"
- " public Event() {}\n"
- "\n"
- " public Long getId() {\n"
- " return id;\n"
- " }\n"
- "\n"
- " private void setId(Long id) {\n"
- " this.id = id;\n"
- " }\n"
- "\n"
- " public Date getDate() {\n"
- " return date;\n"
- " }\n"
- "\n"
- " public void setDate(Date date) {\n"
- " this.date = date;\n"
- " }\n"
- "\n"
- " public String getTitle() {\n"
- " return title;\n"
- " }\n"
- "\n"
- " public void setTitle(String title) {\n"
- " this.title = title;\n"
- " }\n"
- "}]]>"
-msgstr "Puedes ver que esta clase usa las convenciones de nombrado estándar de JavaBean para métodos getter y setter de propiedad, así como visibilidad privada para los campos. Esto es un diseño recomendado, aunque no requerido. Hibernate también puede acceder a los campos directamente; el beneficio de los métodos de acceso es la robustez para la refactorización."
+"<![CDATA[package events;\n"
+"\n"
+"import java.util.Date;\n"
+"\n"
+"public class Event {\n"
+" private Long id;\n"
+"\n"
+" private String title;\n"
+" private Date date;\n"
+"\n"
+" public Event() {}\n"
+"\n"
+" public Long getId() {\n"
+" return id;\n"
+" }\n"
+"\n"
+" private void setId(Long id) {\n"
+" this.id = id;\n"
+" }\n"
+"\n"
+" public Date getDate() {\n"
+" return date;\n"
+" }\n"
+"\n"
+" public void setDate(Date date) {\n"
+" this.date = date;\n"
+" }\n"
+"\n"
+" public String getTitle() {\n"
+" return title;\n"
+" }\n"
+"\n"
+" public void setTitle(String title) {\n"
+" this.title = title;\n"
+" }\n"
+"}]]>"
+msgstr ""
-#: index.docbook:76
-msgid "You can see that this class uses standard JavaBean naming conventions for property getter and setter methods, as well as private visibility for the fields. This is a recommended design - but not required. Hibernate can also access fields directly, the benefit of accessor methods is robustness for refactoring. The no-argument constructor is required to instantiate an object of this class through reflection."
-msgstr "La propiedad <literal>id</literal> tiene un valor único de identificador para un evento en particular. Todas las clase de entidad persistentes ( también hay clases dependientes menos importantes) necesitarán una propiedad identificadora similar si queremos usar el conjunto completo de funcionalidades de Hibernate. De hecho, la mayoría de las aplicaciones (esp. aplicaciones web) necesitan distinguir objetos por identificador, de modo que debes considerar esto como un aspecto en vez de una limitación. Sin embargo, usualmente no manipulamos la identidad de un objeto, por lo tanto el método setter debe ser privado. Sólo Hibernate asignará identificadores cuando un objeto sea salvado. Puedes ver que Hibernate puede acceder a métodos de acceso públicos, privados y protegidos, tanto como directamente a campos (públicos, privados y protegidos). La elección está en ti, y puedes ajustar!
la a tu diseño de aplicación."
+#. Tag: para
+#: tutorial.xml:76
+#, no-c-format
+msgid ""
+"You can see that this class uses standard JavaBean naming conventions for "
+"property getter and setter methods, as well as private visibility for the "
+"fields. This is a recommended design - but not required. Hibernate can also "
+"access fields directly, the benefit of accessor methods is robustness for "
+"refactoring. The no-argument constructor is required to instantiate an "
+"object of this class through reflection."
+msgstr ""
+"Puedes ver que esta clase usa las convenciones de nombrado estándar de "
+"JavaBean para métodos getter y setter de propiedad, así como visibilidad "
+"privada para los campos. Esto es un diseño recomendado, aunque no requerido. "
+"Hibernate también puede acceder a los campos directamente; el beneficio de "
+"los métodos de acceso es la robustez para la refactorización."
-#: index.docbook:84
-msgid "The <literal>id</literal> 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 (esp. web applications) need to distinguish objects by identifier, so you should consider this a feature rather than a limitation. However, we usually don't manipulate the identity of an object, hence the setter method should be private. Only Hibernate will assign identifiers when an object is saved. You can see that Hibernate can access public, private, and protected accessor methods, as well as (public, private, protected) fields directly. The choice is up to you and you can match it to fit your application design."
-msgstr "El constructor sin argumentos es un requerimiento para todas las clases persistentes. Hibernate tiene que crear objetos para ti, usando reflección Java. El constructor puede ser privado, sin embargo, la visibilidad de paquete es requerida para la generación de proxies en tiempo de ejecución y la recuperación de datos sin instrumentación del bytecode."
+#. Tag: para
+#: tutorial.xml:84
+#, no-c-format
+msgid ""
+"The <literal>id</literal> 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 (esp. "
+"web applications) need to distinguish objects by identifier, so you should "
+"consider this a feature rather than a limitation. However, we usually don't "
+"manipulate the identity of an object, hence the setter method should be "
+"private. Only Hibernate will assign identifiers when an object is saved. You "
+"can see that Hibernate can access public, private, and protected accessor "
+"methods, as well as (public, private, protected) fields directly. The choice "
+"is up to you and you can match it to fit your application design."
+msgstr ""
+"La propiedad <literal>id</literal> tiene un valor único de identificador "
+"para un evento en particular. Todas las clase de entidad persistentes "
+"( también hay clases dependientes menos importantes) necesitarán una "
+"propiedad identificadora similar si queremos usar el conjunto completo de "
+"funcionalidades de Hibernate. De hecho, la mayoría de las aplicaciones (esp. "
+"aplicaciones web) necesitan distinguir objetos por identificador, de modo "
+"que debes considerar esto como un aspecto en vez de una limitación. Sin "
+"embargo, usualmente no manipulamos la identidad de un objeto, por lo tanto "
+"el método setter debe ser privado. Sólo Hibernate asignará identificadores "
+"cuando un objeto sea salvado. Puedes ver que Hibernate puede acceder a "
+"métodos de acceso públicos, privados y protegidos, tanto como directamente a "
+"campos (públicos, privados y protegidos). La elección está en ti, y puedes "
+"ajustarla a tu diseño de aplicación."
-#: index.docbook:96
-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 visibility is required for runtime proxy generation and efficient data retrieval without bytecode instrumentation."
-msgstr "Coloca este fichero de código Java en un directorio llamado <literal>src</literal> en la carpeta de desarrollo. El directorio ahora debe verse como esto:"
+#. Tag: para
+#: tutorial.xml:96
+#, 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 visibility is required for "
+"runtime proxy generation and efficient data retrieval without bytecode "
+"instrumentation."
+msgstr ""
+"El constructor sin argumentos es un requerimiento para todas las clases "
+"persistentes. Hibernate tiene que crear objetos para ti, usando reflección "
+"Java. El constructor puede ser privado, sin embargo, la visibilidad de "
+"paquete es requerida para la generación de proxies en tiempo de ejecución y "
+"la recuperación de datos sin instrumentación del bytecode."
-#: index.docbook:103
-msgid "Place this Java source file in a directory called <literal>src</literal> in the development folder, and in its correct package. The directory should now look like this:"
+#. Tag: para
+#: tutorial.xml:103
+#, no-c-format
+msgid ""
+"Place this Java source file in a directory called <literal>src</literal> in "
+"the development folder, and in its correct package. The directory should now "
+"look like this:"
msgstr ""
- "<![CDATA[.\n"
- "+lib\n"
- " <Hibernate and third-party libraries>\n"
- "+src\n"
- " Event.java]]>"
+"Coloca este fichero de código Java en un directorio llamado <literal>src</"
+"literal> en la carpeta de desarrollo. El directorio ahora debe verse como "
+"esto:"
-#: index.docbook:108
+#. Tag: programlisting
+#: tutorial.xml:108
+#, no-c-format
msgid ""
- "<![CDATA[.\n"
- "+lib\n"
- " <Hibernate and third-party libraries>\n"
- "+src\n"
- " +events\n"
- " Event.java]]>"
-msgstr "En el próximo paso, le decimos a Hibernate sobre esta clase persistente."
+"<![CDATA[.\n"
+"+lib\n"
+" <Hibernate and third-party libraries>\n"
+"+src\n"
+" +events\n"
+" Event.java]]>"
+msgstr ""
-#: index.docbook:110
+#. Tag: para
+#: tutorial.xml:110
+#, no-c-format
msgid "In the next step, we tell Hibernate about this persistent class."
-msgstr "El fichero de mapeo"
+msgstr ""
+"En el próximo paso, le decimos a Hibernate sobre esta clase persistente."
-#: index.docbook:117
+#. Tag: title
+#: tutorial.xml:117
+#, no-c-format
msgid "The mapping file"
-msgstr "Hibernate necesita saber cómo cargar y almacenar objetos de la clase persistente. Aquí es donde el fichero de mapeo de Hibernate entra en juego. El fichero de mapeo le dice a Hibernate a qué tabla en la base de datos tiene que acceder, y qué columnas en esta tabla debe usar."
+msgstr "El fichero de mapeo"
-#: index.docbook:119
-msgid "Hibernate needs to know how to load and store objects of the persistent class. This is where the Hibernate mapping file comes into play. The mapping file tells Hibernate what table in the database it has to access, and what columns in that table it should use."
-msgstr "La estructura básica de un fichero de mapeo se parece a esto:"
+#. Tag: para
+#: tutorial.xml:119
+#, no-c-format
+msgid ""
+"Hibernate needs to know how to load and store objects of the persistent "
+"class. This is where the Hibernate mapping file comes into play. The mapping "
+"file tells Hibernate what table in the database it has to access, and what "
+"columns in that table it should use."
+msgstr ""
+"Hibernate necesita saber cómo cargar y almacenar objetos de la clase "
+"persistente. Aquí es donde el fichero de mapeo de Hibernate entra en juego. "
+"El fichero de mapeo le dice a Hibernate a qué tabla en la base de datos "
+"tiene que acceder, y qué columnas en esta tabla debe usar."
-#: index.docbook:126
+#. Tag: para
+#: tutorial.xml:126
+#, no-c-format
msgid "The basic structure of a mapping file looks like this:"
+msgstr "La estructura básica de un fichero de mapeo se parece a esto:"
+
+#. Tag: programlisting
+#: tutorial.xml:130
+#, no-c-format
+msgid ""
+"<![CDATA[<?xml version=\"1.0\"?>\n"
+"<!DOCTYPE hibernate-mapping PUBLIC\n"
+" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+" \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+"\n"
+"<hibernate-mapping>\n"
+"[...]\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping>\n"
- "[...]\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:130
+#. Tag: para
+#: tutorial.xml:132
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping>\n"
- "[...]\n"
- "</hibernate-mapping>]]>"
-msgstr "Observa que el DTD de Hibernate es muy sofisticado. Puedes usarlo para autocompleción de los elementos y atributos XML de mapeo en tu editor o IDE. Debes también abrir el fichero DTD en tu editor de texto. Es la forma más fácil para tener un panorama de todos los elementos y atributos y ver los valores por defectos, así como algunos comentarios. Nota que Hibernate no cargará el fichero DTD de la web, sino que primero buscará en el classpath de la aplicación. El fichero DTD está incluído en <literal>hibernate3.jar</literal> así como también en el directorio <literal>src/</literal> de la distribución de Hibernate."
+"Note that the Hibernate DTD is very sophisticated. You can use it for auto-"
+"completion of XML mapping elements and attributes in your editor or IDE. You "
+"also should open up the DTD file in your text editor - it's the easiest way "
+"to get an overview of all elements and attributes and to see the defaults, "
+"as well as some comments. Note that Hibernate will not load the DTD file "
+"from the web, but first look it up from the classpath of the application. "
+"The DTD file is included in <literal>hibernate3.jar</literal> as well as in "
+"the <literal>src/</literal> directory of the Hibernate distribution."
+msgstr ""
+"Observa que el DTD de Hibernate es muy sofisticado. Puedes usarlo para "
+"autocompleción de los elementos y atributos XML de mapeo en tu editor o IDE. "
+"Debes también abrir el fichero DTD en tu editor de texto. Es la forma más "
+"fácil para tener un panorama de todos los elementos y atributos y ver los "
+"valores por defectos, así como algunos comentarios. Nota que Hibernate no "
+"cargará el fichero DTD de la web, sino que primero buscará en el classpath "
+"de la aplicación. El fichero DTD está incluído en <literal>hibernate3.jar</"
+"literal> así como también en el directorio <literal>src/</literal> de la "
+"distribución de Hibernate."
-#: index.docbook:132
-msgid "Note that the Hibernate DTD is very sophisticated. You can use it for auto-completion of XML mapping elements and attributes in your editor or IDE. You also should open up the DTD file in your text editor - it's the easiest way to get an overview of all elements and attributes and to see the defaults, as well as some comments. Note that Hibernate will not load the DTD file from the web, but first look it up from the classpath of the application. The DTD file is included in <literal>hibernate3.jar</literal> as well as in the <literal>src/</literal> directory of the Hibernate distribution."
-msgstr "Omitiremos la declaración de DTD en futuros ejemplos para acortar el código. Por supuesto, no es opcional."
+#. Tag: para
+#: tutorial.xml:143
+#, no-c-format
+msgid ""
+"We will omit the DTD declaration in future examples to shorten the code. It "
+"is of course not optional."
+msgstr ""
+"Omitiremos la declaración de DTD en futuros ejemplos para acortar el código. "
+"Por supuesto, no es opcional."
-#: index.docbook:143
-msgid "We will omit the DTD declaration in future examples to shorten the code. It is of course not optional."
-msgstr "Entre las dos etiquetas <literal>hibernate-mapping</literal>, incluye un elemento <literal>class</literal>. Todas las clases de entidad persistentes (de nuevo, podría haber más adelante clases dependientes, que no sean entidades de-primera-clase) necesitan dicho mapeo a una tabla en la base de datos SQL:"
+#. Tag: para
+#: tutorial.xml:148
+#, no-c-format
+msgid ""
+"Between the two <literal>hibernate-mapping</literal> tags, include a "
+"<literal>class</literal> element. All persistent entity classes (again, "
+"there might be dependent classes later on, which are not first-class "
+"entities) need such a mapping, to a table in the SQL database:"
+msgstr ""
+"Entre las dos etiquetas <literal>hibernate-mapping</literal>, incluye un "
+"elemento <literal>class</literal>. Todas las clases de entidad persistentes "
+"(de nuevo, podría haber más adelante clases dependientes, que no sean "
+"entidades de-primera-clase) necesitan dicho mapeo a una tabla en la base de "
+"datos SQL:"
-#: index.docbook:148
-msgid "Between the two <literal>hibernate-mapping</literal> tags, include a <literal>class</literal> element. All persistent entity classes (again, there might be dependent classes later on, which are not first-class entities) need such a mapping, to a table in the SQL database:"
+#. Tag: programlisting
+#: tutorial.xml:155
+#, no-c-format
+msgid ""
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"events.Event\" table=\"EVENTS\">\n"
+"\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Event\" table=\"EVENTS\">\n"
- "\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:155
+#. Tag: para
+#: tutorial.xml:157
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"events.Event\" table=\"EVENTS\">\n"
- "\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-msgstr "Hasta ahora dijimos a Hibernate cómo persistir y cargar el objeto de clase <literal>Event</literal> a la tabla <literal>EVENTS</literal>, cada instancia representada por una fila en esta tabla. Ahora continuamos con un mapeo de la propiedad de identificado único a la clave primaria de la tabla. Además, como no queremos cuidar del manejo de este identificador, configuramos la estrategia de generación de identificadores para una columna clave primaria delegada:"
+"So far we told Hibernate how to persist and load object of class "
+"<literal>Event</literal> to the table <literal>EVENTS</literal>, each "
+"instance represented by a row in that table. Now we continue with a mapping "
+"of the unique identifier property to the tables primary key. In addition, as "
+"we don't want to care about handling this identifier, we configure "
+"Hibernate's identifier generation strategy for a surrogate primary key "
+"column:"
+msgstr ""
+"Hasta ahora dijimos a Hibernate cómo persistir y cargar el objeto de clase "
+"<literal>Event</literal> a la tabla <literal>EVENTS</literal>, cada "
+"instancia representada por una fila en esta tabla. Ahora continuamos con un "
+"mapeo de la propiedad de identificado único a la clave primaria de la tabla. "
+"Además, como no queremos cuidar del manejo de este identificador, "
+"configuramos la estrategia de generación de identificadores para una columna "
+"clave primaria delegada:"
-#: index.docbook:157
-msgid "So far we told Hibernate how to persist and load object of class <literal>Event</literal> to the table <literal>EVENTS</literal>, each instance represented by a row in that table. Now we continue with a mapping of the unique identifier property to the tables primary key. In addition, as we don't want to care about handling this identifier, we configure Hibernate's identifier generation strategy for a surrogate primary key column:"
+#. Tag: programlisting
+#: tutorial.xml:165
+#, no-c-format
+msgid ""
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"events.Event\" table=\"EVENTS\">\n"
+" <id name=\"id\" column=\"EVENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Event\" table=\"EVENTS\">\n"
- " <id name=\"id\" column=\"EVENT_ID\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:165
+#. Tag: para
+#: tutorial.xml:167
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"events.Event\" table=\"EVENTS\">\n"
- " <id name=\"id\" column=\"EVENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-msgstr "El elemento <literal>id</literal> el la declaración de la propiedad identificadora, <literal>name=\"id\"</literal> declara el nombre de la propiedad Java. Hibernate usará los métodos getter y setter para acceder a la propiedad. El attributo de columna dice a Hibernate cuál columna de la tabla <literal>EVENTS</literal> usamos para esta clave primaria. El elemento anidado <literal>generator</literal> especifica la estrategia de generación de identificadores, en este caso usamos <literal>increment</literal>, que es un método muy simple de incremento de número en-memoria útil mayormente para testeo (y tutoriales). Hibernate también soporta identificadores generados por base de datos, globalmente únicos, así como también asignados por aplicación (o cualquier estrategia para la que hayas escrito una extensión)."
+"The <literal>id</literal> element is the declaration of the identifer "
+"property, <literal>name=\"id\"</literal> 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</literal> table we use for this primary key. The nested "
+"<literal>generator</literal> element specifies the identifier generation "
+"strategy, in this case we used <literal>native</literal>, 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 ""
+"El elemento <literal>id</literal> el la declaración de la propiedad "
+"identificadora, <literal>name=\"id\"</literal> declara el nombre de la "
+"propiedad Java. Hibernate usará los métodos getter y setter para acceder a "
+"la propiedad. El attributo de columna dice a Hibernate cuál columna de la "
+"tabla <literal>EVENTS</literal> usamos para esta clave primaria. El elemento "
+"anidado <literal>generator</literal> especifica la estrategia de generación "
+"de identificadores, en este caso usamos <literal>increment</literal>, que es "
+"un método muy simple de incremento de número en-memoria útil mayormente para "
+"testeo (y tutoriales). Hibernate también soporta identificadores generados "
+"por base de datos, globalmente únicos, así como también asignados por "
+"aplicación (o cualquier estrategia para la que hayas escrito una extensión)."
-#: index.docbook:167
-msgid "The <literal>id</literal> element is the declaration of the identifer property, <literal>name=\"id\"</literal> 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</literal> table we use for this primary key. The nested <literal>generator</literal> element specifies the identifier generation strategy, in this case we used <literal>native</literal>, 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 "Finalmente incluímos declaraciones para las propiedades persistentes de la clases en el fichero de mapeo. Por defecto, ninguna propiedad de la clase se considera persistente:"
+#. Tag: para
+#: tutorial.xml:180
+#, no-c-format
+msgid ""
+"Finally we include declarations for the persistent properties of the class "
+"in the mapping file. By default, no properties of the class are considered "
+"persistent:"
+msgstr ""
+"Finalmente incluímos declaraciones para las propiedades persistentes de la "
+"clases en el fichero de mapeo. Por defecto, ninguna propiedad de la clase se "
+"considera persistente:"
-#: index.docbook:180
-msgid "Finally we include declarations for the persistent properties of the class in the mapping file. By default, no properties of the class are considered persistent:"
+#. Tag: programlisting
+#: tutorial.xml:186
+#, no-c-format
+msgid ""
+"<![CDATA[\n"
+"<hibernate-mapping>\n"
+"\n"
+" <class name=\"events.Event\" table=\"EVENTS\">\n"
+" <id name=\"id\" column=\"EVENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"date\" type=\"timestamp\" column=\"EVENT_DATE\"/>\n"
+" <property name=\"title\"/>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[\n"
- "<hibernate-mapping>\n"
- "\n"
- " <class name=\"Event\" table=\"EVENTS\">\n"
- " <id name=\"id\" column=\"EVENT_ID\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <property name=\"date\" type=\"timestamp\" column=\"EVENT_DATE\"/>\n"
- " <property name=\"title\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:186
+#. Tag: para
+#: tutorial.xml:188
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "<hibernate-mapping>\n"
- "\n"
- " <class name=\"events.Event\" table=\"EVENTS\">\n"
- " <id name=\"id\" column=\"EVENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"date\" type=\"timestamp\" column=\"EVENT_DATE\"/>\n"
- " <property name=\"title\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-msgstr "Al igual que con el elemento <literal>id</literal>, el atributo <literal>name</literal> del elemento <literal>property</literal> dice a Hibernate cáles métodos getter y setter usar."
+"Just as with the <literal>id</literal> element, the <literal>name</literal> "
+"attribute of the <literal>property</literal> element tells Hibernate which "
+"getter and setter methods to use. So, in this case, Hibernate will look for "
+"<literal>getDate()/setDate()</literal>, as well as <literal>getTitle()/"
+"setTitle()</literal>."
+msgstr ""
+"Al igual que con el elemento <literal>id</literal>, el atributo "
+"<literal>name</literal> del elemento <literal>property</literal> dice a "
+"Hibernate cáles métodos getter y setter usar."
-#: index.docbook:188
-msgid "Just as with the <literal>id</literal> element, the <literal>name</literal> attribute of the <literal>property</literal> element tells Hibernate which getter and setter methods to use. So, in this case, Hibernate will look for <literal>getDate()/setDate()</literal>, as well as <literal>getTitle()/setTitle()</literal>."
-msgstr "¿Por qué el mapeo de la propiedad <literal>date</literal> incluye el atributo <literal>column</literal>, pero el de la de <literal>title</literal> no? Sin el atributo <literal>column</literal> Hibernate usa por defecto el nombre de propiedad como nombre de columna. Esto funciona bien para <literal>title</literal>. Sin embargo, However, <literal>date</literal> es una palabra reservada en la mayoría de las bases de datos, así que mejor la mapeamos a un nombre diferente."
+#. Tag: para
+#: tutorial.xml:195
+#, no-c-format
+msgid ""
+"Why does the <literal>date</literal> property mapping include the "
+"<literal>column</literal> attribute, but the <literal>title</literal> "
+"doesn't? Without the <literal>column</literal> attribute Hibernate by "
+"default uses the property name as the column name. This works fine for "
+"<literal>title</literal>. However, <literal>date</literal> is a reserved "
+"keyword in most database, so we better map it to a different name."
+msgstr ""
+"¿Por qué el mapeo de la propiedad <literal>date</literal> incluye el "
+"atributo <literal>column</literal>, pero el de la de <literal>title</"
+"literal> no? Sin el atributo <literal>column</literal> Hibernate usa por "
+"defecto el nombre de propiedad como nombre de columna. Esto funciona bien "
+"para <literal>title</literal>. Sin embargo, However, <literal>date</literal> "
+"es una palabra reservada en la mayoría de las bases de datos, así que mejor "
+"la mapeamos a un nombre diferente."
-#: index.docbook:195
-msgid "Why does the <literal>date</literal> property mapping include the <literal>column</literal> attribute, but the <literal>title</literal> doesn't? Without the <literal>column</literal> attribute Hibernate by default uses the property name as the column name. This works fine for <literal>title</literal>. However, <literal>date</literal> is a reserved keyword in most database, so we better map it to a different name."
-msgstr "La próxima cosa interesante es que el mapeo de <literal>title</literal> carece de un atributo <literal>type</literal>. Los tipos que declaramos y usamos en el fichero de mapeo no son, como podrías esperar, tipos de datos Java. Tampoco son tipos de base de datos SQL. Estos tipos son los llamados así <emphasis>Tipos de mapeo de Hibernate</emphasis>, convertidores que pueden traducir de tipos Java a SQL y vice versa. De nuevo, Hibernate intentará determinar la conversión y el mapeo mismo de tipo correctos si el atributo <literal>type</literal> no estuviese presente en el mapeo. En algunos casos esta detección automática (usando reflección en la clase Java) puede no tener lo que esperas o necesitas. Este es el caso de la propiedad <literal>date</literal>. Hibernate no puede saber is la propiedad mapeará a una columna <literal>date</literal>, <literal>timestamp</literal> o <literal>time</literal>. Declaramos !
que queremos preservar la información completa de fecha y hora mapeando la propiedad con un <literal>timestamp</literal>."
+#. Tag: para
+#: tutorial.xml:204
+#, no-c-format
+msgid ""
+"The next interesting thing is that the <literal>title</literal> mapping also "
+"lacks a <literal>type</literal> attribute. The types we declare and use in "
+"the mapping files are not, as you might expect, Java data types. They are "
+"also not SQL database types. These types are so called <emphasis>Hibernate "
+"mapping types</emphasis>, 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</literal> "
+"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</literal> "
+"property. Hibernate can't know if the property (which is of <literal>java."
+"util.Date</literal>) should map to a SQL <literal>date</literal>, "
+"<literal>timestamp</literal>, or <literal>time</literal> column. We preserve "
+"full date and time information by mapping the property with a "
+"<literal>timestamp</literal> converter."
+msgstr ""
+"La próxima cosa interesante es que el mapeo de <literal>title</literal> "
+"carece de un atributo <literal>type</literal>. Los tipos que declaramos y "
+"usamos en el fichero de mapeo no son, como podrías esperar, tipos de datos "
+"Java. Tampoco son tipos de base de datos SQL. Estos tipos son los llamados "
+"así <emphasis>Tipos de mapeo de Hibernate</emphasis>, convertidores que "
+"pueden traducir de tipos Java a SQL y vice versa. De nuevo, Hibernate "
+"intentará determinar la conversión y el mapeo mismo de tipo correctos si el "
+"atributo <literal>type</literal> no estuviese presente en el mapeo. En "
+"algunos casos esta detección automática (usando reflección en la clase Java) "
+"puede no tener lo que esperas o necesitas. Este es el caso de la propiedad "
+"<literal>date</literal>. Hibernate no puede saber is la propiedad mapeará a "
+"una columna <literal>date</literal>, <literal>timestamp</literal> o "
+"<literal>time</literal>. Declaramos que queremos preservar la información "
+"completa de fecha y hora mapeando la propiedad con un <literal>timestamp</"
+"literal>."
-#: index.docbook:204
-msgid "The next interesting thing is that the <literal>title</literal> mapping also lacks a <literal>type</literal> attribute. The types we declare and use in the mapping files are not, as you might expect, Java data types. They are also not SQL database types. These types are so called <emphasis>Hibernate mapping types</emphasis>, 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</literal> 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</literal> property. Hibernate can't know if the property (which is of <literal>java.util.Date</literal>) should map to a SQL <literal>date</literal>, <literal>timestamp</literal>, or <literal>time</literal> column. We preserve full date and time information !
by mapping the property with a <literal>timestamp</literal> converter."
-msgstr "Este fichero de mapeo debe ser salvado como <literal>Event.hbm.xml</literal>, justo en el directorio próximo al fichero de código fuente de la clase Java <literal>Event</literal>. El nombrado de los ficheros de mapeo puede ser arbitrario, sin embargo, el sufijo <literal>hbm.xml</literal> se ha vuelto una convención el la comunidad de desarrolladores de Hibernate. La estructura de directorio debe ahora verse como esto:"
-
-#: index.docbook:220
-msgid "This mapping file should be saved as <literal>Event.hbm.xml</literal>, right in the directory next to the <literal>Event</literal> Java class source file. The naming of mapping files can be arbitrary, however the <literal>hbm.xml</literal> suffix is a convention in the Hibernate developer community. The directory structure should now look like this:"
+#. Tag: para
+#: tutorial.xml:220
+#, no-c-format
+msgid ""
+"This mapping file should be saved as <literal>Event.hbm.xml</literal>, right "
+"in the directory next to the <literal>Event</literal> Java class source "
+"file. The naming of mapping files can be arbitrary, however the <literal>hbm."
+"xml</literal> suffix is a convention in the Hibernate developer community. "
+"The directory structure should now look like this:"
msgstr ""
- "<![CDATA[.\n"
- "+lib\n"
- " <Hibernate and third-party libraries>\n"
- "+src\n"
- " Event.java\n"
- " Event.hbm.xml]]>"
+"Este fichero de mapeo debe ser salvado como <literal>Event.hbm.xml</"
+"literal>, justo en el directorio próximo al fichero de código fuente de la "
+"clase Java <literal>Event</literal>. El nombrado de los ficheros de mapeo "
+"puede ser arbitrario, sin embargo, el sufijo <literal>hbm.xml</literal> se "
+"ha vuelto una convención el la comunidad de desarrolladores de Hibernate. La "
+"estructura de directorio debe ahora verse como esto:"
-#: index.docbook:228
+#. Tag: programlisting
+#: tutorial.xml:228
+#, no-c-format
msgid ""
- "<![CDATA[.\n"
- "+lib\n"
- " <Hibernate and third-party libraries>\n"
- "+src\n"
- " +events\n"
- " Event.java\n"
- " Event.hbm.xml]]>"
-msgstr "Continuamos con la configuración principal de Hibernate."
+"<![CDATA[.\n"
+"+lib\n"
+" <Hibernate and third-party libraries>\n"
+"+src\n"
+" +events\n"
+" Event.java\n"
+" Event.hbm.xml]]>"
+msgstr ""
-#: index.docbook:230
+#. Tag: para
+#: tutorial.xml:230
+#, no-c-format
msgid "We continue with the main configuration of Hibernate."
-msgstr "Configuración de Hibernate"
+msgstr "Continuamos con la configuración principal de Hibernate."
-#: index.docbook:237
+#. Tag: title
+#: tutorial.xml:237
+#, no-c-format
msgid "Hibernate configuration"
-msgstr "Tenemos ahora una clase persistente y su fichero de mapeo en su sitio. Es momento de configurar Hibernate. Antes que hagamos esto, necesitaremos una base de datos. HSQL DB, un DBMS SQL en-memoria basado en Java, puede ser descargado del sitio web de HSQL DB. Realmente, de esta descarga sólo necesitas el <literal>hsqldb.jar</literal>. Coloca este fichero en el directorio <literal>lib/</literal> de la carpeta de desarrollo."
+msgstr "Configuración de Hibernate"
-#: index.docbook:239
-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.jar</literal> from this download. Place this file in the <literal>lib/</literal> directory of the development folder."
-msgstr "Crea un directorio llamado <literal>data</literal> en la raíz del directorio de desarrollo. Allí es donde HSQL DB almacenará sus ficheros de datos."
+#. Tag: para
+#: tutorial.xml:239
+#, no-c-format
+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.jar</literal> from "
+"this download. Place this file in the <literal>lib/</literal> directory of "
+"the development folder."
+msgstr ""
+"Tenemos ahora una clase persistente y su fichero de mapeo en su sitio. Es "
+"momento de configurar Hibernate. Antes que hagamos esto, necesitaremos una "
+"base de datos. HSQL DB, un DBMS SQL en-memoria basado en Java, puede ser "
+"descargado del sitio web de HSQL DB. Realmente, de esta descarga sólo "
+"necesitas el <literal>hsqldb.jar</literal>. Coloca este fichero en el "
+"directorio <literal>lib/</literal> de la carpeta de desarrollo."
-#: index.docbook:247
-msgid "Create a directory called <literal>data</literal> in the root of the development directory - this is where HSQL DB will store its data files. Now start the database by running <literal>java -classpath ../lib/hsqldb.jar org.hsqldb.Server</literal> in this data directory. You can 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 HSQL DB (press <literal>CTRL + C</literal> in the window), delete all files in the <literal>data/</literal> directory, and start HSQL DB again."
-msgstr "Hibernate es la capa en tu aplicación que se conecta a esta base de datos, de modo que necesita información de conexión. Las conexiones se hacen a través de un pool de conexiones JDBC, que tambén tenemos que configurar. La distribución de Hibernate contiene muchas herramientas de pooling de conexiones JDBC de código abierto, pero para este tutorial usaremos el pool de conexiones prefabricado dentro de Hibernate. Observa que tienes que copiar la biblioteca requerida en tu classpath y usar diferentes configuraciones de pooling de conexiones si quieres usar un software de pooling JDBC de terceros de calidad de producción."
+#. Tag: para
+#: tutorial.xml:247
+#, no-c-format
+msgid ""
+"Create a directory called <literal>data</literal> in the root of the "
+"development directory - this is where HSQL DB will store its data files. Now "
+"start the database by running <literal>java -classpath ../lib/hsqldb.jar org."
+"hsqldb.Server</literal> in this data directory. You can 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 "
+"HSQL DB (press <literal>CTRL + C</literal> in the window), delete all files "
+"in the <literal>data/</literal> directory, and start HSQL DB again."
+msgstr ""
+"Crea un directorio llamado <literal>data</literal> en la raíz del directorio "
+"de desarrollo. Allí es donde HSQL DB almacenará sus ficheros de datos."
-#: index.docbook:257
-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 "Para la configuración de Hibernate, podemos usar un fichero <literal>hibernate.properties</literal> simple, un fichero <literal>hibernate.cfg.xml</literal> ligeramente más sofisticado, o incluso una configuración completamente programática. La mayoría de los usuarios prefieren el fichero de configuración XML:"
+#. Tag: para
+#: tutorial.xml:257
+#, no-c-format
+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 es la capa en tu aplicación que se conecta a esta base de datos, "
+"de modo que necesita información de conexión. Las conexiones se hacen a "
+"través de un pool de conexiones JDBC, que tambén tenemos que configurar. La "
+"distribución de Hibernate contiene muchas herramientas de pooling de "
+"conexiones JDBC de código abierto, pero para este tutorial usaremos el pool "
+"de conexiones prefabricado dentro de Hibernate. Observa que tienes que "
+"copiar la biblioteca requerida en tu classpath y usar diferentes "
+"configuraciones de pooling de conexiones si quieres usar un software de "
+"pooling JDBC de terceros de calidad de producción."
-#: index.docbook:267
-msgid "For Hibernate's configuration, we can use a simple <literal>hibernate.properties</literal> file, a slightly more sophisticated <literal>hibernate.cfg.xml</literal> file, or even complete programmatic setup. Most users prefer the XML configuration file:"
+#. Tag: para
+#: tutorial.xml:267
+#, no-c-format
+msgid ""
+"For Hibernate's configuration, we can use a simple <literal>hibernate."
+"properties</literal> file, a slightly more sophisticated <literal>hibernate."
+"cfg.xml</literal> file, or even complete programmatic setup. Most users "
+"prefer the XML configuration file:"
msgstr ""
- "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
- "<!DOCTYPE hibernate-configuration PUBLIC\n"
- " \"-//Hibernate/Hibernate Configuration DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd\">\n"
- "\n"
- "<hibernate-configuration>\n"
- "\n"
- " <session-factory>\n"
- "\n"
- " <!-- Database connection settings -->\n"
- " <property name=\"connection.driver_class\">org.hsqldb.jdbcDriver</property>\n"
- " <property name=\"connection.url\">jdbc:hsqldb:data/tutorial</property>\n"
- " <property name=\"connection.username\">sa</property>\n"
- " <property name=\"connection.password\"></property>\n"
- "\n"
- " <!-- JDBC connection pool (use the built-in) -->\n"
- " <property name=\"connection.pool_size\">1</property>\n"
- "\n"
- " <!-- SQL dialect -->\n"
- " <property name=\"dialect\">org.hibernate.dialect.HSQLDialect</property>\n"
- "\n"
- " <!-- Echo all executed SQL to stdout -->\n"
- " <property name=\"show_sql\">true</property>\n"
- "\n"
- " <!-- Drop and re-create the database schema on startup -->\n"
- " <property name=\"hbm2ddl.auto\">create</property>\n"
- "\n"
- " <mapping resource=\"Event.hbm.xml\"/>\n"
- "\n"
- " </session-factory>\n"
- "\n"
- "</hibernate-configuration>]]>"
+"Para la configuración de Hibernate, podemos usar un fichero "
+"<literal>hibernate.properties</literal> simple, un fichero "
+"<literal>hibernate.cfg.xml</literal> ligeramente más sofisticado, o incluso "
+"una configuración completamente programática. La mayoría de los usuarios "
+"prefieren el fichero de configuración XML:"
-#: index.docbook:273
+#. Tag: programlisting
+#: tutorial.xml:273
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
- "<!DOCTYPE hibernate-configuration PUBLIC\n"
- " \"-//Hibernate/Hibernate Configuration DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd\">\n"
- "\n"
- "<hibernate-configuration>\n"
- "\n"
- " <session-factory>\n"
- "\n"
- " <!-- Database connection settings -->\n"
- " <property name=\"connection.driver_class\">org.hsqldb.jdbcDriver</property>\n"
- " <property name=\"connection.url\">jdbc:hsqldb:hsql://localhost</property>\n"
- " <property name=\"connection.username\">sa</property>\n"
- " <property name=\"connection.password\"></property>\n"
- "\n"
- " <!-- JDBC connection pool (use the built-in) -->\n"
- " <property name=\"connection.pool_size\">1</property>\n"
- "\n"
- " <!-- SQL dialect -->\n"
- " <property name=\"dialect\">org.hibernate.dialect.HSQLDialect</property>\n"
- "\n"
- " <!-- Enable Hibernate's automatic session context management -->\n"
- " <property name=\"current_session_context_class\">thread</property>\n"
- "\n"
- " <!-- Disable the second-level cache -->\n"
- " <property name=\"cache.provider_class\">org.hibernate.cache.NoCacheProvider</property>\n"
- "\n"
- " <!-- Echo all executed SQL to stdout -->\n"
- " <property name=\"show_sql\">true</property>\n"
- "\n"
- " <!-- Drop and re-create the database schema on startup -->\n"
- " <property name=\"hbm2ddl.auto\">create</property>\n"
- "\n"
- " <mapping resource=\"events/Event.hbm.xml\"/>\n"
- "\n"
- " </session-factory>\n"
- "\n"
- "</hibernate-configuration>]]>"
-msgstr "Observa que esta configuración XML usa un DTD diferente. Configuramos la <literal>SessionFactory</literal> de Hibernate, una fábrica global responsable de una base de datos en particular. Si tienes varias bases de datos, usa varias configuraciones <literal><session-factory></literal> , usualmente en varios ficheros de configuración (para un arranque más fácil)."
+"<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
+"<!DOCTYPE hibernate-configuration PUBLIC\n"
+" \"-//Hibernate/Hibernate Configuration DTD 3.0//EN\"\n"
+" \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
+"\">\n"
+"\n"
+"<hibernate-configuration>\n"
+"\n"
+" <session-factory>\n"
+"\n"
+" <!-- Database connection settings -->\n"
+" <property name=\"connection.driver_class\">org.hsqldb.jdbcDriver</"
+"property>\n"
+" <property name=\"connection.url\">jdbc:hsqldb:hsql://localhost</"
+"property>\n"
+" <property name=\"connection.username\">sa</property>\n"
+" <property name=\"connection.password\"></property>\n"
+"\n"
+" <!-- JDBC connection pool (use the built-in) -->\n"
+" <property name=\"connection.pool_size\">1</property>\n"
+"\n"
+" <!-- SQL dialect -->\n"
+" <property name=\"dialect\">org.hibernate.dialect.HSQLDialect</"
+"property>\n"
+"\n"
+" <!-- Enable Hibernate's automatic session context management -->\n"
+" <property name=\"current_session_context_class\">thread</property>\n"
+"\n"
+" <!-- Disable the second-level cache -->\n"
+" <property name=\"cache.provider_class\">org.hibernate.cache."
+"NoCacheProvider</property>\n"
+"\n"
+" <!-- Echo all executed SQL to stdout -->\n"
+" <property name=\"show_sql\">true</property>\n"
+"\n"
+" <!-- Drop and re-create the database schema on startup -->\n"
+" <property name=\"hbm2ddl.auto\">create</property>\n"
+"\n"
+" <mapping resource=\"events/Event.hbm.xml\"/>\n"
+"\n"
+" </session-factory>\n"
+"\n"
+"</hibernate-configuration>]]>"
+msgstr ""
-#: index.docbook:275
-msgid "Note that this XML configuration uses a different DTD. We configure Hibernate's <literal>SessionFactory</literal> - a global factory responsible for a particular database. If you have several databases, use several <literal><session-factory></literal> configurations, usually in several configuration files (for easier startup)."
-msgstr "Los primeros cuatro elementos <literal>property</literal> contienen la configuración necesaria para la conexión JDBC. El elemento de dialecto <literal>property</literal> especifica la variante de SQL en particular que genera Hibernate. La opción <literal>hbm2ddl.auto</literal> activa la generación automática de esquemas de base de datos, directamente en la base de datos. Esto, por supuesto, puede desactivarse (quitando la opción config) o redirigido a un fichero con la ayuda de la tarea de Ant <literal>SchemaExport</literal>. Finalmente, agregamos el(los) fichero(s) de mapeo para clases persistentes."
+#. Tag: para
+#: tutorial.xml:275
+#, no-c-format
+msgid ""
+"Note that this XML configuration uses a different DTD. We configure "
+"Hibernate's <literal>SessionFactory</literal> - a global factory responsible "
+"for a particular database. If you have several databases, use several "
+"<literal><session-factory></literal> configurations, usually in "
+"several configuration files (for easier startup)."
+msgstr ""
+"Observa que esta configuración XML usa un DTD diferente. Configuramos la "
+"<literal>SessionFactory</literal> de Hibernate, una fábrica global "
+"responsable de una base de datos en particular. Si tienes varias bases de "
+"datos, usa varias configuraciones <literal><session-factory></"
+"literal> , usualmente en varios ficheros de configuración (para un arranque "
+"más fácil)."
-#: index.docbook:283
-msgid "The first four <literal>property</literal> elements contain the necessary configuration for the JDBC connection. The dialect <literal>property</literal> element specifies the particular SQL variant Hibernate generates. Hibernate's automatic session management for persistence contexts will come in handy as you will soon see. The <literal>hbm2ddl.auto</literal> option turns on automatic generation of database schemas - directly into the database. This can of course also be turned off (by removing the config option) or redirected to a file with the help of the <literal>SchemaExport</literal> Ant task. Finally, we add the mapping file(s) for persistent classes to the configuration."
-msgstr "Copia este fichero dentro del directorio de código fuente, de modo que termine ubicado en la raiíz del classpath. Hibernate busca automáticamente un fichero llamado <literal>hibernate.cfg.xml</literal> en la raíz del classpath al arrancar."
+#. Tag: para
+#: tutorial.xml:283
+#, no-c-format
+msgid ""
+"The first four <literal>property</literal> elements contain the necessary "
+"configuration for the JDBC connection. The dialect <literal>property</"
+"literal> element specifies the particular SQL variant Hibernate generates. "
+"Hibernate's automatic session management for persistence contexts will come "
+"in handy as you will soon see. The <literal>hbm2ddl.auto</literal> option "
+"turns on automatic generation of database schemas - directly into the "
+"database. This can of course also be turned off (by removing the config "
+"option) or redirected to a file with the help of the <literal>SchemaExport</"
+"literal> Ant task. Finally, we add the mapping file(s) for persistent "
+"classes to the configuration."
+msgstr ""
+"Los primeros cuatro elementos <literal>property</literal> contienen la "
+"configuración necesaria para la conexión JDBC. El elemento de dialecto "
+"<literal>property</literal> especifica la variante de SQL en particular que "
+"genera Hibernate. La opción <literal>hbm2ddl.auto</literal> activa la "
+"generación automática de esquemas de base de datos, directamente en la base "
+"de datos. Esto, por supuesto, puede desactivarse (quitando la opción config) "
+"o redirigido a un fichero con la ayuda de la tarea de Ant "
+"<literal>SchemaExport</literal>. Finalmente, agregamos el(los) fichero(s) de "
+"mapeo para clases persistentes."
-#: index.docbook:296
-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</literal> in the root of the classpath, on startup."
-msgstr "Construyendo con Ant"
+#. Tag: para
+#: tutorial.xml:296
+#, no-c-format
+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</literal> in the root of the classpath, on "
+"startup."
+msgstr ""
+"Copia este fichero dentro del directorio de código fuente, de modo que "
+"termine ubicado en la raiíz del classpath. Hibernate busca automáticamente "
+"un fichero llamado <literal>hibernate.cfg.xml</literal> en la raíz del "
+"classpath al arrancar."
-#: index.docbook:305
+#. Tag: title
+#: tutorial.xml:305
+#, no-c-format
msgid "Building with Ant"
-msgstr "Construiremos ahora el tutorial con Ant. Necesitarás tener Ant instalado. Obténlo de <ulink url=\"http://ant.apache.org/bindownload.cgi\">Página de descarga de Ant</ulink>. No se cubrirá aquí cómo instalar Ant. Por favor refiérete al <ulink url=\"http://ant.apache.org/manual/index.html\"> Manual de Ant</ulink>. Después que hayas instalado Ant, podemos comenzar a crear el buildfile. Será llamado <literal>build.xml</literal> y colocado directamente en el directorio de desarrollo."
+msgstr "Construyendo con Ant"
-#: index.docbook:307
-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</literal> and placed directly in the development directory."
-msgstr "Reparar Ant"
+#. Tag: para
+#: tutorial.xml:307
+#, no-c-format
+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</literal> and placed "
+"directly in the development directory."
+msgstr ""
+"Construiremos ahora el tutorial con Ant. Necesitarás tener Ant instalado. "
+"Obténlo de <ulink url=\"http://ant.apache.org/bindownload.cgi\">Página de "
+"descarga de Ant</ulink>. No se cubrirá aquí cómo instalar Ant. Por favor "
+"refiérete al <ulink url=\"http://ant.apache.org/manual/index.html\"> Manual "
+"de Ant</ulink>. Después que hayas instalado Ant, podemos comenzar a crear el "
+"buildfile. Será llamado <literal>build.xml</literal> y colocado directamente "
+"en el directorio de desarrollo."
-#: index.docbook:316
+#. Tag: para
+#: tutorial.xml:316
+#, no-c-format
msgid "A basic build file looks like this:"
-msgstr "Observa que la distribución de Ant está por defecto rota (como se describe en el FAQ de Ant) y tiene que ser reparado por ti, por ejemplo, si quisieras usar JUnit desde dentro de tu fichero de construcción. Para hacer que funcione la tarea de JUnit (no lo necesitaremos en este tutorial), copia junit.jar a <literal>ANT_HOME/lib</literal> o quita el trozo de plugin <literal>ANT_HOME/lib/ant-junit.jar</literal>."
+msgstr "Reparar Ant"
-#: index.docbook:320
+#. Tag: programlisting
+#: tutorial.xml:320
+#, no-c-format
msgid ""
- "<![CDATA[<project name=\"hibernate-tutorial\" default=\"compile\">\n"
- "\n"
- " <property name=\"sourcedir\" value=\"${basedir}/src\"/>\n"
- " <property name=\"targetdir\" value=\"${basedir}/bin\"/>\n"
- " <property name=\"librarydir\" value=\"${basedir}/lib\"/>\n"
- "\n"
- " <path id=\"libraries\">\n"
- " <fileset dir=\"${librarydir}\">\n"
- " <include name=\"*.jar\"/>\n"
- " </fileset>\n"
- " </path>\n"
- "\n"
- " <target name=\"clean\">\n"
- " <delete dir=\"${targetdir}\"/>\n"
- " <mkdir dir=\"${targetdir}\"/>\n"
- " </target>\n"
- "\n"
- " <target name=\"compile\" depends=\"clean, copy-resources\">\n"
- " <javac srcdir=\"${sourcedir}\"\n"
- " destdir=\"${targetdir}\"\n"
- " classpathref=\"libraries\"/>\n"
- " </target>\n"
- "\n"
- " <target name=\"copy-resources\">\n"
- " <copy todir=\"${targetdir}\">\n"
- " <fileset dir=\"${sourcedir}\">\n"
- " <exclude name=\"**/*.java\"/>\n"
- " </fileset>\n"
- " </copy>\n"
- " </target>\n"
- "\n"
- "</project>]]>"
-msgstr "Un fichero de construcción básico se ve como esto:"
+"<![CDATA[<project name=\"hibernate-tutorial\" default=\"compile\">\n"
+"\n"
+" <property name=\"sourcedir\" value=\"${basedir}/src\"/>\n"
+" <property name=\"targetdir\" value=\"${basedir}/bin\"/>\n"
+" <property name=\"librarydir\" value=\"${basedir}/lib\"/>\n"
+"\n"
+" <path id=\"libraries\">\n"
+" <fileset dir=\"${librarydir}\">\n"
+" <include name=\"*.jar\"/>\n"
+" </fileset>\n"
+" </path>\n"
+"\n"
+" <target name=\"clean\">\n"
+" <delete dir=\"${targetdir}\"/>\n"
+" <mkdir dir=\"${targetdir}\"/>\n"
+" </target>\n"
+"\n"
+" <target name=\"compile\" depends=\"clean, copy-resources\">\n"
+" <javac srcdir=\"${sourcedir}\"\n"
+" destdir=\"${targetdir}\"\n"
+" classpathref=\"libraries\"/>\n"
+" </target>\n"
+"\n"
+" <target name=\"copy-resources\">\n"
+" <copy todir=\"${targetdir}\">\n"
+" <fileset dir=\"${sourcedir}\">\n"
+" <exclude name=\"**/*.java\"/>\n"
+" </fileset>\n"
+" </copy>\n"
+" </target>\n"
+"\n"
+"</project>]]>"
+msgstr ""
-#: index.docbook:322
-msgid "This will tell Ant to add all files in the lib directory ending with <literal>.jar</literal> 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:"
+#. Tag: para
+#: tutorial.xml:322
+#, no-c-format
+msgid ""
+"This will tell Ant to add all files in the lib directory ending with "
+"<literal>.jar</literal> 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 ""
- "<![CDATA[<project name=\"hibernate-tutorial\" default=\"compile\">\n"
- "\n"
- " <property name=\"sourcedir\" value=\"${basedir}/src\"/>\n"
- " <property name=\"targetdir\" value=\"${basedir}/bin\"/>\n"
- " <property name=\"librarydir\" value=\"${basedir}/lib\"/>\n"
- "\n"
- " <path id=\"libraries\">\n"
- " <fileset dir=\"${librarydir}\">\n"
- " <include name=\"*.jar\"/>\n"
- " </fileset>\n"
- " </path>\n"
- "\n"
- " <target name=\"clean\">\n"
- " <delete dir=\"${targetdir}\"/>\n"
- " <mkdir dir=\"${targetdir}\"/>\n"
- " </target>\n"
- "\n"
- " <target name=\"compile\" depends=\"clean, copy-resources\">\n"
- " <javac srcdir=\"${sourcedir}\"\n"
- " destdir=\"${targetdir}\"\n"
- " classpathref=\"libraries\"/>\n"
- " </target>\n"
- "\n"
- " <target name=\"copy-resources\">\n"
- " <copy todir=\"${targetdir}\">\n"
- " <fileset dir=\"${sourcedir}\">\n"
- " <exclude name=\"**/*.java\"/>\n"
- " </fileset>\n"
- " </copy>\n"
- " </target>\n"
- "\n"
- "</project>]]>"
+"Observa que la distribución de Ant está por defecto rota (como se describe "
+"en el FAQ de Ant) y tiene que ser reparado por ti, por ejemplo, si quisieras "
+"usar JUnit desde dentro de tu fichero de construcción. Para hacer que "
+"funcione la tarea de JUnit (no lo necesitaremos en este tutorial), copia "
+"junit.jar a <literal>ANT_HOME/lib</literal> o quita el trozo de plugin "
+"<literal>ANT_HOME/lib/ant-junit.jar</literal>."
-#: index.docbook:329
+#. Tag: programlisting
+#: tutorial.xml:329
+#, no-c-format
msgid ""
- "<![CDATA[C:\\hibernateTutorial\\>ant\n"
- "Buildfile: build.xml\n"
- "\n"
- "copy-resources:\n"
- " [copy] Copying 2 files to C:\\hibernateTutorial\\bin\n"
- "\n"
- "compile:\n"
- " [javac] Compiling 1 source file to C:\\hibernateTutorial\\bin\n"
- "\n"
- "BUILD SUCCESSFUL\n"
- "Total time: 1 second ]]>"
-msgstr "Esto dirá a Ant que agregue todos los ficheros en el directorio lib que terminen con <literal>.jar</literal> al classpath usado para la compilación. También copiará todos los ficheros que no sean código Java al directorio objetivo, por ejemplo, ficheros de configuración y mapeos de Hibernate. Si ahora corres Ant, debes obtener esta salida:"
+"<![CDATA[C:\\hibernateTutorial\\>ant\n"
+"Buildfile: build.xml\n"
+"\n"
+"copy-resources:\n"
+" [copy] Copying 2 files to C:\\hibernateTutorial\\bin\n"
+"\n"
+"compile:\n"
+" [javac] Compiling 1 source file to C:\\hibernateTutorial\\bin\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 second ]]>"
+msgstr ""
-#: index.docbook:334
+#. Tag: title
+#: tutorial.xml:334
+#, no-c-format
msgid "Startup and helpers"
+msgstr "Un fichero de construcción básico se ve como esto:"
+
+#. Tag: para
+#: tutorial.xml:336
+#, no-c-format
+msgid ""
+"It's time to load and store some <literal>Event</literal> objects, but first "
+"we have to complete the setup with some infrastructure code. We have to "
+"startup Hibernate. This startup includes building a global "
+"<literal>SessionFactory</literal> object and to store it somewhere for easy "
+"access in application code. A <literal>SessionFactory</literal> can open up "
+"new <literal>Session</literal>'s. A <literal>Session</literal> represents a "
+"single-threaded unit of work, the <literal>SessionFactory</literal> is a "
+"thread-safe global object, instantiated once."
msgstr ""
- "<![CDATA[C:\\hibernateTutorial\\>ant\n"
- "Buildfile: build.xml\n"
- "\n"
- "copy-resources:\n"
- " [copy] Copying 2 files to C:\\hibernateTutorial\\bin\n"
- "\n"
- "compile:\n"
- " [javac] Compiling 1 source file to C:\\hibernateTutorial\\bin\n"
- "\n"
- "BUILD SUCCESSFUL\n"
- "Total time: 1 second ]]>"
+"Esto dirá a Ant que agregue todos los ficheros en el directorio lib que "
+"terminen con <literal>.jar</literal> al classpath usado para la compilación. "
+"También copiará todos los ficheros que no sean código Java al directorio "
+"objetivo, por ejemplo, ficheros de configuración y mapeos de Hibernate. Si "
+"ahora corres Ant, debes obtener esta salida:"
-#: index.docbook:336
-msgid "It's time to load and store some <literal>Event</literal> objects, but first we have to complete the setup with some infrastructure code. We have to startup Hibernate. This startup includes building a global <literal>SessionFactory</literal> object and to store it somewhere for easy access in application code. A <literal>SessionFactory</literal> can open up new <literal>Session</literal>'s. A <literal>Session</literal> represents a single-threaded unit of work, the <literal>SessionFactory</literal> is a thread-safe global object, instantiated once."
+#. Tag: para
+#: tutorial.xml:346
+#, no-c-format
+msgid ""
+"We'll create a <literal>HibernateUtil</literal> helper class which takes "
+"care of startup and makes accessing a <literal>SessionFactory</literal> "
+"convenient. Let's have a look at the implementation:"
msgstr "Arranque y ayudantes"
-#: index.docbook:346
-msgid "We'll create a <literal>HibernateUtil</literal> helper class which takes care of startup and makes accessing a <literal>SessionFactory</literal> convenient. Let's have a look at the implementation:"
-msgstr "Es momento de cargar y almacenar algunos objetos <literal>Event</literal>, pero primero tenemos que completar la configuración de algún código de infraestructura. Tenemos que arrancar Hibernate. Este arranque incluye construir un objeto <literal>SessionFactory</literal> global y almacenarlo en algún sitio de fácil acceso en el código de aplicación. Una <literal>SessionFactory</literal> puede abrir nuevas <literal>Session</literal>'s. Una <literal>Session</literal> representa un unidad de trabajo mono-hebra. La <literal>SessionFactory</literal> es un objeto global seguro entre hebras, instanciado una sola vez."
+#. Tag: programlisting
+#: tutorial.xml:352
+#, no-c-format
+msgid ""
+"<![CDATA[package util;\n"
+"\n"
+"import org.hibernate.*;\n"
+"import org.hibernate.cfg.*;\n"
+"\n"
+"public class HibernateUtil {\n"
+"\n"
+" private static final SessionFactory sessionFactory;\n"
+"\n"
+" static {\n"
+" try {\n"
+" // Create the SessionFactory from hibernate.cfg.xml\n"
+" sessionFactory = new Configuration().configure()."
+"buildSessionFactory();\n"
+" } catch (Throwable ex) {\n"
+" // Make sure you log the exception, as it might be swallowed\n"
+" System.err.println(\"Initial SessionFactory creation failed.\" + "
+"ex);\n"
+" throw new ExceptionInInitializerError(ex);\n"
+" }\n"
+" }\n"
+"\n"
+" public static SessionFactory getSessionFactory() {\n"
+" return sessionFactory;\n"
+" }\n"
+"\n"
+"}]]>"
+msgstr ""
-#: index.docbook:352
+#. Tag: para
+#: tutorial.xml:354
+#, no-c-format
msgid ""
- "<![CDATA[package util;\n"
- "\n"
- "import org.hibernate.*;\n"
- "import org.hibernate.cfg.*;\n"
- "\n"
- "public class HibernateUtil {\n"
- "\n"
- " private static final SessionFactory sessionFactory;\n"
- "\n"
- " static {\n"
- " try {\n"
- " // Create the SessionFactory from hibernate.cfg.xml\n"
- " sessionFactory = new Configuration().configure().buildSessionFactory();\n"
- " } catch (Throwable ex) {\n"
- " // Make sure you log the exception, as it might be swallowed\n"
- " System.err.println(\"Initial SessionFactory creation failed.\" + ex);\n"
- " throw new ExceptionInInitializerError(ex);\n"
- " }\n"
- " }\n"
- "\n"
- " public static SessionFactory getSessionFactory() {\n"
- " return sessionFactory;\n"
- " }\n"
- "\n"
- "}]]>"
-msgstr "Crearemos una clase de ayuda <literal>HibernateUtil</literal> que cuide del arranque y haga conveniente el manejo de <literal>Session</literal>. El así llamado patrón <emphasis>Sesión de Hebra Local (ThreadLocal Session)</emphasis> es útil aquí; mantenemos la unidad de trabajo actual asociada a la hebra actual. Echemos una mirada a la implementación:"
+"This class does not only produce the global <literal>SessionFactory</"
+"literal> in its static initializer (called once by the JVM when the class is "
+"loaded), but also hides the fact that it uses a static singleton. It might "
+"as well lookup the <literal>SessionFactory</literal> from JNDI in an "
+"application server."
+msgstr ""
+"Es momento de cargar y almacenar algunos objetos <literal>Event</literal>, "
+"pero primero tenemos que completar la configuración de algún código de "
+"infraestructura. Tenemos que arrancar Hibernate. Este arranque incluye "
+"construir un objeto <literal>SessionFactory</literal> global y almacenarlo "
+"en algún sitio de fácil acceso en el código de aplicación. Una "
+"<literal>SessionFactory</literal> puede abrir nuevas <literal>Session</"
+"literal>'s. Una <literal>Session</literal> representa un unidad de trabajo "
+"mono-hebra. La <literal>SessionFactory</literal> es un objeto global seguro "
+"entre hebras, instanciado una sola vez."
-#: index.docbook:354
-msgid "This class does not only produce the global <literal>SessionFactory</literal> in its static initializer (called once by the JVM when the class is loaded), but also hides the fact that it uses a static singleton. It might as well lookup the <literal>SessionFactory</literal> from JNDI in an application server."
+#. Tag: para
+#: tutorial.xml:361
+#, no-c-format
+msgid ""
+"If you give the <literal>SessionFactory</literal> a name in your "
+"configuration file, Hibernate will in fact try to bind it to JNDI after it "
+"has been built. To avoid this code completely you could also use JMX "
+"deployment and let the JMX-capable container instantiate and bind a "
+"<literal>HibernateService</literal> to JNDI. These advanced options are "
+"discussed in the Hibernate reference documentation."
msgstr ""
- "<![CDATA[import org.hibernate.*;\n"
- "import org.hibernate.cfg.*;\n"
- "\n"
- "public class HibernateUtil {\n"
- "\n"
- " public static final SessionFactory sessionFactory;\n"
- "\n"
- " static {\n"
- " try {\n"
- " // Create the SessionFactory from hibernate.cfg.xml\n"
- " sessionFactory = new Configuration().configure().buildSessionFactory();\n"
- " } catch (Throwable ex) {\n"
- " // Make sure you log the exception, as it might be swallowed\n"
- " System.err.println(\"Initial SessionFactory creation failed.\" + ex);\n"
- " throw new ExceptionInInitializerError(ex);\n"
- " }\n"
- " }\n"
- "\n"
- " public static final ThreadLocal session = new ThreadLocal();\n"
- "\n"
- " public static Session currentSession() throws HibernateException {\n"
- " Session s = (Session) session.get();\n"
- " // Open a new Session, if this thread has none yet\n"
- " if (s == null) {\n"
- " s = sessionFactory.openSession();\n"
- " // Store it in the ThreadLocal variable\n"
- " session.set(s);\n"
- " }\n"
- " return s;\n"
- " }\n"
- "\n"
- " public static void closeSession() throws HibernateException {\n"
- " Session s = (Session) session.get();\n"
- " if (s != null)\n"
- " s.close();\n"
- " session.set(null);\n"
- " }\n"
- "}]]>"
+"Crearemos una clase de ayuda <literal>HibernateUtil</literal> que cuide del "
+"arranque y haga conveniente el manejo de <literal>Session</literal>. El así "
+"llamado patrón <emphasis>Sesión de Hebra Local (ThreadLocal Session)</"
+"emphasis> es útil aquí; mantenemos la unidad de trabajo actual asociada a la "
+"hebra actual. Echemos una mirada a la implementación:"
-#: index.docbook:361
-msgid "If you give the <literal>SessionFactory</literal> a name in your configuration file, Hibernate will in fact try to bind it to JNDI after it has been built. To avoid this code completely you could also use JMX deployment and let the JMX-capable container instantiate and bind a <literal>HibernateService</literal> to JNDI. These advanced options are discussed in the Hibernate reference documentation."
-msgstr "Esta clase no ólo produce la <literal>SessionFactory</literal> global en su inicializador static (llamado sólo una vez por la JVM al cargar la clase), sino que también tiene una variable <literal>ThreadLocal</literal> para tener la <literal>Session</literal> para la hebra actual. No importa cuándo llames a <literal>HibernateUtil.currentSession()</literal>, siempre devolverá la misma unidad de trabajo de Hibernate en la misma hebra. Una llamada a <literal>HibernateUtil.closeSession()</literal> termina la unidad de trabajo actualmente asociada a la hebra."
+#. Tag: para
+#: tutorial.xml:370
+#, no-c-format
+msgid ""
+"Place <literal>HibernateUtil.java</literal> in the development source "
+"directory, in a package next to <literal>events</literal>:"
+msgstr ""
+"Esta clase no ólo produce la <literal>SessionFactory</literal> global en su "
+"inicializador static (llamado sólo una vez por la JVM al cargar la clase), "
+"sino que también tiene una variable <literal>ThreadLocal</literal> para "
+"tener la <literal>Session</literal> para la hebra actual. No importa cuándo "
+"llames a <literal>HibernateUtil.currentSession()</literal>, siempre "
+"devolverá la misma unidad de trabajo de Hibernate en la misma hebra. Una "
+"llamada a <literal>HibernateUtil.closeSession()</literal> termina la unidad "
+"de trabajo actualmente asociada a la hebra."
-#: index.docbook:370
-msgid "Place <literal>HibernateUtil.java</literal> in the development source directory, in a package next to <literal>events</literal>:"
-msgstr "Asegúrate de entender el concepto Java de una variable local a una hebra antes de usar esta ayuda. Una clase <literal>HibernateUtil</literal> más potente puede encontrarse en <literal>CaveatEmptor</literal>, http://caveatemptor.hibernate.org/, así como en el libro \"Java Persistence with Hibernate\". Observa que esta clase no es necesaria si despliegas Hibernate en un servidor de aplicaciones J2EE: una <literal>Session</literal> será automáticamente ligada a la transacción JTA actual, y puedes buscar la <literal>SessionFactory</literal> a través de JNDI. Si usas JBoss AS, Hibernate puede ser desplegado como un servicio de sistema manejado y automáticamente ligará la <literal>SessionFactory</literal> a un nombre JNDI."
+#. Tag: programlisting
+#: tutorial.xml:375
+#, no-c-format
+msgid ""
+"<![CDATA[.\n"
+"+lib\n"
+" <Hibernate and third-party libraries>\n"
+"+src\n"
+" +events\n"
+" Event.java\n"
+" Event.hbm.xml\n"
+" +util\n"
+" HibernateUtil.java\n"
+" hibernate.cfg.xml\n"
+"+data\n"
+"build.xml]]>"
+msgstr ""
-#: index.docbook:375
+#. Tag: para
+#: tutorial.xml:377
+#, no-c-format
msgid ""
- "<![CDATA[.\n"
- "+lib\n"
- " <Hibernate and third-party libraries>\n"
- "+src\n"
- " +events\n"
- " Event.java\n"
- " Event.hbm.xml\n"
- " +util\n"
- " HibernateUtil.java\n"
- " hibernate.cfg.xml\n"
- "+data\n"
- "build.xml]]>"
-msgstr "Coloca <literal>HibernateUtil.java</literal> en el directorio de fuentes de desarrollo, junto a <literal>Event.java</literal>:"
+"This should again compile without problems. We finally need to configure a "
+"logging system - Hibernate uses commons logging and leaves you the choice "
+"between Log4j and JDK 1.4 logging. Most developers prefer Log4j: copy "
+"<literal>log4j.properties</literal> from the Hibernate distribution (it's in "
+"the <literal>etc/</literal> directory) to your <literal>src</literal> "
+"directory, next to <literal>hibernate.cfg.xml</literal>. Have a look at the "
+"example configuration and change the settings if you like to have more "
+"verbose output. By default, only Hibernate startup message are shown on "
+"stdout."
+msgstr ""
+"Asegúrate de entender el concepto Java de una variable local a una hebra "
+"antes de usar esta ayuda. Una clase <literal>HibernateUtil</literal> más "
+"potente puede encontrarse en <literal>CaveatEmptor</literal>, http://"
+"caveatemptor.hibernate.org/, así como en el libro \"Java Persistence with "
+"Hibernate\". Observa que esta clase no es necesaria si despliegas Hibernate "
+"en un servidor de aplicaciones J2EE: una <literal>Session</literal> será "
+"automáticamente ligada a la transacción JTA actual, y puedes buscar la "
+"<literal>SessionFactory</literal> a través de JNDI. Si usas JBoss AS, "
+"Hibernate puede ser desplegado como un servicio de sistema manejado y "
+"automáticamente ligará la <literal>SessionFactory</literal> a un nombre JNDI."
-#: index.docbook:377
-msgid "This should again compile without problems. We finally need to configure a logging system - Hibernate uses commons logging and leaves you the choice between Log4j and JDK 1.4 logging. Most developers prefer Log4j: copy <literal>log4j.properties</literal> from the Hibernate distribution (it's in the <literal>etc/</literal> directory) to your <literal>src</literal> directory, next to <literal>hibernate.cfg.xml</literal>. Have a look at the example configuration and change the settings if you like to have more verbose output. By default, only Hibernate startup message are shown on stdout."
+#. Tag: para
+#: tutorial.xml:387
+#, no-c-format
+msgid ""
+"The tutorial infrastructure is complete - and we are ready to do some real "
+"work with Hibernate."
msgstr ""
- "<![CDATA[.\n"
- "+lib\n"
- " <Hibernate and third-party libraries>\n"
- "+src\n"
- " Event.java\n"
- " Event.hbm.xml\n"
- " HibernateUtil.java\n"
- " hibernate.cfg.xml\n"
- "+data\n"
- "build.xml]]>"
+"Coloca <literal>HibernateUtil.java</literal> en el directorio de fuentes de "
+"desarrollo, junto a <literal>Event.java</literal>:"
-#: index.docbook:387
-msgid "The tutorial infrastructure is complete - and we are ready to do some real work with Hibernate."
-msgstr "Esto también debe compilar sin problemas. Finalmente necesitamos configurar un sistema de logging (registro). Hibernate usa commons logging y te deja la elección entre Log4J y logging de JDK 1.4. La mayoría de los desarrolladores prefieren Log4J: copia <literal>log4j.properties</literal> de la distribución de Hibernate (está en el directorio <literal>etc/</literal>) a tu directorio <literal>src</literal>, junto a <literal>hibernate.cfg.xml</literal>. Echa una mirada a la configuración de ejemplo y cambia los ajustes si te gusta tener una salida más verborrágica. Por defecto, sólo se muestra el mensaje de arranque de Hibernate en la salida."
-
-#: index.docbook:395
+#. Tag: title
+#: tutorial.xml:395
+#, no-c-format
msgid "Loading and storing objects"
-msgstr "La infraestructura del tutorial está completa, y estamos listos para hacer algún trabajo real con Hibernate."
+msgstr ""
+"Esto también debe compilar sin problemas. Finalmente necesitamos configurar "
+"un sistema de logging (registro). Hibernate usa commons logging y te deja la "
+"elección entre Log4J y logging de JDK 1.4. La mayoría de los desarrolladores "
+"prefieren Log4J: copia <literal>log4j.properties</literal> de la "
+"distribución de Hibernate (está en el directorio <literal>etc/</literal>) a "
+"tu directorio <literal>src</literal>, junto a <literal>hibernate.cfg.xml</"
+"literal>. Echa una mirada a la configuración de ejemplo y cambia los ajustes "
+"si te gusta tener una salida más verborrágica. Por defecto, sólo se muestra "
+"el mensaje de arranque de Hibernate en la salida."
-#: index.docbook:397
-msgid "Finally, we can use Hibernate to load and store objects. We write an <literal>EventManager</literal> class with a <literal>main()</literal> method:"
+#. Tag: para
+#: tutorial.xml:397
+#, no-c-format
+msgid ""
+"Finally, we can use Hibernate to load and store objects. We write an "
+"<literal>EventManager</literal> class with a <literal>main()</literal> "
+"method:"
+msgstr ""
+"La infraestructura del tutorial está completa, y estamos listos para hacer "
+"algún trabajo real con Hibernate."
+
+#. Tag: programlisting
+#: tutorial.xml:402
+#, no-c-format
+msgid ""
+"<![CDATA[package events;\n"
+"import org.hibernate.Session;\n"
+"\n"
+"import java.util.Date;\n"
+"\n"
+"import util.HibernateUtil;\n"
+"\n"
+"public class EventManager {\n"
+"\n"
+" public static void main(String[] args) {\n"
+" EventManager mgr = new EventManager();\n"
+"\n"
+" if (args[0].equals(\"store\")) {\n"
+" mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+" }\n"
+"\n"
+" HibernateUtil.getSessionFactory().close();\n"
+" }\n"
+"\n"
+" private void createAndStoreEvent(String title, Date theDate) {\n"
+"\n"
+" Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+"();\n"
+"\n"
+" session.beginTransaction();\n"
+"\n"
+" Event theEvent = new Event();\n"
+" theEvent.setTitle(title);\n"
+" theEvent.setDate(theDate);\n"
+"\n"
+" session.save(theEvent);\n"
+"\n"
+" session.getTransaction().commit();\n"
+" }\n"
+"\n"
+"}]]>"
+msgstr ""
+
+#. Tag: para
+#: tutorial.xml:404
+#, no-c-format
+msgid ""
+"We create a new <literal>Event</literal> object, and hand it over to "
+"Hibernate. Hibernate now takes care of the SQL and executes <literal>INSERT</"
+"literal>s on the database. Let's have a look at the <literal>Session</"
+"literal> and <literal>Transaction</literal>-handling code before we run this."
msgstr "Cargando y almacenando objetos"
-#: index.docbook:402
+#. Tag: para
+#: tutorial.xml:411
+#, no-c-format
msgid ""
- "<![CDATA[package events;\n"
- "import org.hibernate.Session;\n"
- "\n"
- "import java.util.Date;\n"
- "\n"
- "import util.HibernateUtil;\n"
- "\n"
- "public class EventManager {\n"
- "\n"
- " public static void main(String[] args) {\n"
- " EventManager mgr = new EventManager();\n"
- "\n"
- " if (args[0].equals(\"store\")) {\n"
- " mgr.createAndStoreEvent(\"My Event\", new Date());\n"
- " }\n"
- "\n"
- " HibernateUtil.getSessionFactory().close();\n"
- " }\n"
- "\n"
- " private void createAndStoreEvent(String title, Date theDate) {\n"
- "\n"
- " Session session = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- "\n"
- " session.beginTransaction();\n"
- "\n"
- " Event theEvent = new Event();\n"
- " theEvent.setTitle(title);\n"
- " theEvent.setDate(theDate);\n"
- "\n"
- " session.save(theEvent);\n"
- "\n"
- " session.getTransaction().commit();\n"
- " }\n"
- "\n"
- "}]]>"
-msgstr "Finalmente, podemos usar Hibernate para cargar y almacenar objetos. Escribimos una clase <literal>EventManager</literal> con un método <literal>main()</literal>:"
+"A <literal>Session</literal> is a single unit of work. For now we'll keep "
+"things simple and assume a one-to-one granularity between a Hibernate "
+"<literal>Session</literal> and a database transaction. To shield our code "
+"from the actual underlying transaction system (in this case plain JDBC, but "
+"it could also run with JTA) we use the <literal>Transaction</literal> API "
+"that is available on the Hibernate <literal>Session</literal>."
+msgstr ""
+"Finalmente, podemos usar Hibernate para cargar y almacenar objetos. "
+"Escribimos una clase <literal>EventManager</literal> con un método "
+"<literal>main()</literal>:"
-#: index.docbook:404
-msgid "We create a new <literal>Event</literal> object, and hand it over to Hibernate. Hibernate now takes care of the SQL and executes <literal>INSERT</literal>s on the database. Let's have a look at the <literal>Session</literal> and <literal>Transaction</literal>-handling code before we run this."
+#. Tag: para
+#: tutorial.xml:419
+#, no-c-format
+msgid ""
+"What does <literal>sessionFactory.getCurrentSession()</literal> do? First, "
+"you can call it as many times and anywhere you like, once you get hold of "
+"your <literal>SessionFactory</literal> (easy thanks to "
+"<literal>HibernateUtil</literal>). The <literal>getCurrentSession()</"
+"literal> method always returns the \"current\" unit of work. Remember that "
+"we switched the configuration option for this mechanism to \"thread\" in "
+"<literal>hibernate.cfg.xml</literal>? Hence, the current unit of work is "
+"bound to the current Java thread that executes our application. However, "
+"this is not the full picture, you also have to consider scope, when a unit "
+"of work begins and when it ends."
msgstr ""
- "<![CDATA[import org.hibernate.Transaction;\n"
- "import org.hibernate.Session;\n"
- "\n"
- "import java.util.Date;\n"
- "\n"
- "public class EventManager {\n"
- "\n"
- " public static void main(String[] args) {\n"
- " EventManager mgr = new EventManager();\n"
- "\n"
- " if (args[0].equals(\"store\")) {\n"
- " mgr.createAndStoreEvent(\"My Event\", new Date());\n"
- " }\n"
- "\n"
- " HibernateUtil.sessionFactory.close();\n"
- " }\n"
- "\n"
- "}]]>"
+"Leemos algunos argumentos de la línea de comandos, y si el primer argumento "
+"es \"store\", creamos y almacenamos un nuevo Event:"
-#: index.docbook:411
-msgid "A <literal>Session</literal> is a single unit of work. For now we'll keep things simple and assume a one-to-one granularity between a Hibernate <literal>Session</literal> and a database transaction. To shield our code from the actual underlying transaction system (in this case plain JDBC, but it could also run with JTA) we use the <literal>Transaction</literal> API that is available on the Hibernate <literal>Session</literal>."
-msgstr "Leemos algunos argumentos de la línea de comandos, y si el primer argumento es \"store\", creamos y almacenamos un nuevo Event:"
+#. Tag: para
+#: tutorial.xml:430
+#, no-c-format
+msgid ""
+"A <literal>Session</literal> begins when it is first needed, when the first "
+"call to <literal>getCurrentSession()</literal> is made. It is then bound by "
+"Hibernate to the current thread. When the transaction ends, either through "
+"commit or rollback, Hibernate automatically unbinds the <literal>Session</"
+"literal> from the thread and closes it for you. If you call "
+"<literal>getCurrentSession()</literal> again, you get a new "
+"<literal>Session</literal> and can start a new unit of work. This "
+"<emphasis>thread-bound</emphasis> programming model is the most popular way "
+"of using Hibernate, as it allows flexible layering of your code (transaction "
+"demarcation code can be separated from data access code, we'll do this later "
+"in this tutorial)."
+msgstr ""
+"Creamos un nuevo objeto <literal>Event</literal>, y se lo damos a Hibernate. "
+"Hibernate cuida ahora del SQL y ejecuta <literal>INSERT</literal>s en la "
+"base de datos. Echemos una mirada al código de manejo de <literal>Session</"
+"literal> y <literal>Transaction</literal> antes de ejecutar esto."
-#: index.docbook:419
-msgid "What does <literal>sessionFactory.getCurrentSession()</literal> do? First, you can call it as many times and anywhere you like, once you get hold of your <literal>SessionFactory</literal> (easy thanks to <literal>HibernateUtil</literal>). The <literal>getCurrentSession()</literal> method always returns the \"current\" unit of work. Remember that we switched the configuration option for this mechanism to \"thread\" in <literal>hibernate.cfg.xml</literal>? Hence, the current unit of work is bound to the current Java thread that executes our application. However, this is not the full picture, you also have to consider scope, when a unit of work begins and when it ends."
+#. Tag: para
+#: tutorial.xml:441
+#, no-c-format
+msgid ""
+"Related to the unit of work scope, should the Hibernate <literal>Session</"
+"literal> be used to execute one or several database operations? The above "
+"example uses one <literal>Session</literal> for one operation. This is pure "
+"coincidence, the example is just not complex enough to show any other "
+"approach. The scope of a Hibernate <literal>Session</literal> is flexible "
+"but you should never design your application to use a new Hibernate "
+"<literal>Session</literal> for <emphasis>every</emphasis> database "
+"operation. So even if you see it a few more times in the following (very "
+"trivial) examples, consider <emphasis>session-per-operation</emphasis> an "
+"anti-pattern. A real (web) application is shown later in this tutorial."
msgstr ""
- "<![CDATA[private void createAndStoreEvent(String title, Date theDate) {\n"
- " Session session = HibernateUtil.currentSession();\n"
- " Transaction tx = session.beginTransaction();\n"
- "\n"
- " Event theEvent = new Event();\n"
- " theEvent.setTitle(title);\n"
- " theEvent.setDate(theDate);\n"
- "\n"
- " session.save(theEvent);\n"
- "\n"
- " tx.commit();\n"
- " HibernateUtil.closeSession();\n"
- "}]]>"
+"Una <literal>Session</literal> es una sola unidad de trabajo. Podría "
+"sorprenderte que tengamos una API adicional, <literal>Transaction</literal>. "
+"Esto implica que una unidad de trabajo puede ser \"más larga\" que una sola "
+"transacción de base de datos; imagina una unidad de trabajo que se abarca "
+"varios ciclos petición/respuesta HTTP (por ejemplo, un diálogo asistente) en "
+"una aplicación web. Separar las transacciones de base de datos de \"las "
+"unidades de trabajo de la aplicación desde el punto de vista del usuario\" "
+"es uno de los conceptos básicos de diseño de Hibernate. Llamamos una unidad "
+"de trabajo larga <emphasis>Transacción de Aplicación</emphasis>, usualmente "
+"encapsulando varias transacciones de base de datos más cortas. Por ahora "
+"mantendremos las cosas simples y asumiremos una granularidad uno-a-uno entre "
+"una <literal>Session</literal> y una <literal>Transaction</literal>."
-#: index.docbook:430
-msgid "A <literal>Session</literal> begins when it is first needed, when the first call to <literal>getCurrentSession()</literal> is made. It is then bound by Hibernate to the current thread. When the transaction ends, either through commit or rollback, Hibernate automatically unbinds the <literal>Session</literal> from the thread and closes it for you. If you call <literal>getCurrentSession()</literal> again, you get a new <literal>Session</literal> and can start a new unit of work. This <emphasis>thread-bound</emphasis> programming model is the most popular way of using Hibernate, as it allows flexible layering of your code (transaction demarcation code can be separated from data access code, we'll do this later in this tutorial)."
-msgstr "Creamos un nuevo objeto <literal>Event</literal>, y se lo damos a Hibernate. Hibernate cuida ahora del SQL y ejecuta <literal>INSERT</literal>s en la base de datos. Echemos una mirada al código de manejo de <literal>Session</literal> y <literal>Transaction</literal> antes de ejecutar esto."
+#. Tag: para
+#: tutorial.xml:452
+#, no-c-format
+msgid ""
+"Have a look at <xref linkend=\"transactions\"/> for more information about "
+"transaction handling and demarcation. We also skipped any error handling and "
+"rollback in the previous example."
+msgstr ""
+"¿Qué es lo que hacen <literal>Transaction.begin()</literal> y <literal>commit"
+"()</literal>? ¿Dónde está el rollback en caso que algo vaya mal? La API de "
+"<literal>Transaction</literal> de Hibernate es opcional realmente, pero la "
+"usamos por conveniencia y portabilidad. Si manejases la transacción de base "
+"de datos por ti mismo (por ejemplo, llamando a <literal>session.connection."
+"commit()</literal>), ligarías el código a un entorno de despliegue "
+"particular, en este JDBC directo no manejado. Estableciendo la fábrica de "
+"<literal>Transaction</literal> en tu configuración de Hibernate puedes "
+"desplegar tu capa de persistencia en cualquier sitio. Echa una mirada al "
+"<xref linkend=\"transactions\"/> para más información sobre manejo y "
+"demarcación de transacciones. Hemos saltado también cualquier manejo de "
+"excepciones y rollback en este ejemplo."
-#: index.docbook:441
-msgid "Related to the unit of work scope, should the Hibernate <literal>Session</literal> be used to execute one or several database operations? The above example uses one <literal>Session</literal> for one operation. This is pure coincidence, the example is just not complex enough to show any other approach. The scope of a Hibernate <literal>Session</literal> is flexible but you should never design your application to use a new Hibernate <literal>Session</literal> for <emphasis>every</emphasis> database operation. So even if you see it a few more times in the following (very trivial) examples, consider <emphasis>session-per-operation</emphasis> an anti-pattern. A real (web) application is shown later in this tutorial."
-msgstr "Una <literal>Session</literal> es una sola unidad de trabajo. Podría sorprenderte que tengamos una API adicional, <literal>Transaction</literal>. Esto implica que una unidad de trabajo puede ser \"más larga\" que una sola transacción de base de datos; imagina una unidad de trabajo que se abarca varios ciclos petición/respuesta HTTP (por ejemplo, un diálogo asistente) en una aplicación web. Separar las transacciones de base de datos de \"las unidades de trabajo de la aplicación desde el punto de vista del usuario\" es uno de los conceptos básicos de diseño de Hibernate. Llamamos una unidad de trabajo larga <emphasis>Transacción de Aplicación</emphasis>, usualmente encapsulando varias transacciones de base de datos más cortas. Por ahora mantendremos las cosas simples y asumiremos una granularidad uno-a-uno entre una <literal>Session</literal> y una <literal>Transaction</literal>."
+#. Tag: para
+#: tutorial.xml:458
+#, no-c-format
+msgid ""
+"To run this first routine we have to add a callable target to the Ant build "
+"file:"
+msgstr ""
+"Para ejecutar la primera rutina tenemos que agregar un objetivo llamable al "
+"fichero de construcción de Ant:"
-#: index.docbook:452
-msgid "Have a look at <xref linkend=\"transactions\"/> for more information about transaction handling and demarcation. We also skipped any error handling and rollback in the previous example."
-msgstr "¿Qué es lo que hacen <literal>Transaction.begin()</literal> y <literal>commit()</literal>? ¿Dónde está el rollback en caso que algo vaya mal? La API de <literal>Transaction</literal> de Hibernate es opcional realmente, pero la usamos por conveniencia y portabilidad. Si manejases la transacción de base de datos por ti mismo (por ejemplo, llamando a <literal>session.connection.commit()</literal>), ligarías el código a un entorno de despliegue particular, en este JDBC directo no manejado. Estableciendo la fábrica de <literal>Transaction</literal> en tu configuración de Hibernate puedes desplegar tu capa de persistencia en cualquier sitio. Echa una mirada al <xref linkend=\"transactions\"/> para más información sobre manejo y demarcación de transacciones. Hemos saltado también cualquier manejo de excepciones y rollback en este ejemplo."
+#. Tag: programlisting
+#: tutorial.xml:462
+#, no-c-format
+msgid ""
+"<![CDATA[<target name=\"run\" depends=\"compile\">\n"
+" <java fork=\"true\" classname=\"events.EventManager\" classpathref="
+"\"libraries\">\n"
+" <classpath path=\"${targetdir}\"/>\n"
+" <arg value=\"${action}\"/>\n"
+" </java>\n"
+"</target>]]>"
+msgstr ""
-#: index.docbook:458
-msgid "To run this first routine we have to add a callable target to the Ant build file:"
-msgstr "Para ejecutar la primera rutina tenemos que agregar un objetivo llamable al fichero de construcción de Ant:"
-
-#: index.docbook:462
+#. Tag: para
+#: tutorial.xml:464
+#, no-c-format
msgid ""
- "<![CDATA[<target name=\"run\" depends=\"compile\">\n"
- " <java fork=\"true\" classname=\"events.EventManager\" classpathref=\"libraries\">\n"
- " <classpath path=\"${targetdir}\"/>\n"
- " <arg value=\"${action}\"/>\n"
- " </java>\n"
- "</target>]]>"
+"The value of the <literal>action</literal> argument is set on the command "
+"line when calling the target:"
msgstr ""
- "<![CDATA[<target name=\"run\" depends=\"compile\">\n"
- " <java fork=\"true\" classname=\"EventManager\" classpathref=\"libraries\">\n"
- " <classpath path=\"${targetdir}\"/>\n"
- " <arg value=\"${action}\"/>\n"
- " </java>\n"
- "</target>]]>"
+"El valor del argumento <literal>action</literal> es establecido por línea de "
+"comandos al llamar al objetivo:"
-#: index.docbook:464
-msgid "The value of the <literal>action</literal> argument is set on the command line when calling the target:"
-msgstr "El valor del argumento <literal>action</literal> es establecido por línea de comandos al llamar al objetivo:"
-
-#: index.docbook:469
+#. Tag: programlisting
+#: tutorial.xml:469
+#, no-c-format
msgid "<![CDATA[C:\\hibernateTutorial\\>ant run -Daction=store]]>"
-msgstr "<![CDATA[C:\\hibernateTutorial\\>ant run -Daction=store]]>"
+msgstr ""
-#: index.docbook:471
-msgid "You should see, after compilation, Hibernate starting up and, depending on your configuration, lots of log output. At the end you will find the following line:"
-msgstr "Debes ver, después de la compilación, a Hibernate arrancando y, dependiendo de tu configuración mucha salida de registro (log). Al final encontrarás la siguiente línea:"
+#. Tag: para
+#: tutorial.xml:471
+#, no-c-format
+msgid ""
+"You should see, after compilation, Hibernate starting up and, depending on "
+"your configuration, lots of log output. At the end you will find the "
+"following line:"
+msgstr ""
+"Debes ver, después de la compilación, a Hibernate arrancando y, dependiendo "
+"de tu configuración mucha salida de registro (log). Al final encontrarás la "
+"siguiente línea:"
-#: index.docbook:476
-msgid "<![CDATA[[java] Hibernate: insert into EVENTS (EVENT_DATE, title, EVENT_ID) values (?, ?, ?)]]>"
-msgstr "<![CDATA[[java] Hibernate: insert into EVENTS (EVENT_DATE, title, EVENT_ID) values (?, ?, ?)]]>"
+#. Tag: programlisting
+#: tutorial.xml:476
+#, no-c-format
+msgid ""
+"<![CDATA[[java] Hibernate: insert into EVENTS (EVENT_DATE, title, EVENT_ID) "
+"values (?, ?, ?)]]>"
+msgstr ""
-#: index.docbook:478
-msgid "This is the <literal>INSERT</literal> 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</literal>."
-msgstr "Esta es la <literal>INSERT</literal> ejecutada por Hibernate, los signos de preguntas representan parámetros de ligado JDBC. Para ver los valores ligados como argumentos, o para reducir la verborragia del registro, chequea tu <literal>log4j.properties</literal>."
+#. Tag: para
+#: tutorial.xml:478
+#, no-c-format
+msgid ""
+"This is the <literal>INSERT</literal> 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</"
+"literal>."
+msgstr ""
+"Esta es la <literal>INSERT</literal> ejecutada por Hibernate, los signos de "
+"preguntas representan parámetros de ligado JDBC. Para ver los valores "
+"ligados como argumentos, o para reducir la verborragia del registro, chequea "
+"tu <literal>log4j.properties</literal>."
-#: index.docbook:484
-msgid "Now we'd like to list stored events as well, so we add an option to the main method:"
-msgstr "Ahora quisiéramos listar acontecimientos almacenados también, así que agregamos una opción al método principal:"
+#. Tag: para
+#: tutorial.xml:484
+#, no-c-format
+msgid ""
+"Now we'd like to list stored events as well, so we add an option to the main "
+"method:"
+msgstr ""
+"Ahora quisiéramos listar acontecimientos almacenados también, así que "
+"agregamos una opción al método principal:"
-#: index.docbook:488
+#. Tag: programlisting
+#: tutorial.xml:488
+#, no-c-format
msgid ""
- "<![CDATA[if (args[0].equals(\"store\")) {\n"
- " mgr.createAndStoreEvent(\"My Event\", new Date());\n"
- "}\n"
- "else if (args[0].equals(\"list\")) {\n"
- " List events = mgr.listEvents();\n"
- " for (int i = 0; i < events.size(); i++) {\n"
- " Event theEvent = (Event) events.get(i);\n"
- " System.out.println(\"Event: \" + theEvent.getTitle() +\n"
- " \" Time: \" + theEvent.getDate());\n"
- " }\n"
- "}]]>"
+"<![CDATA[if (args[0].equals(\"store\")) {\n"
+" mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+"}\n"
+"else if (args[0].equals(\"list\")) {\n"
+" List events = mgr.listEvents();\n"
+" for (int i = 0; i < events.size(); i++) {\n"
+" Event theEvent = (Event) events.get(i);\n"
+" System.out.println(\"Event: \" + theEvent.getTitle() +\n"
+" \" Time: \" + theEvent.getDate());\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[if (args[0].equals(\"store\")) {\n"
- " mgr.createAndStoreEvent(\"My Event\", new Date());\n"
- "}\n"
- "else if (args[0].equals(\"list\")) {\n"
- " List events = mgr.listEvents();\n"
- " for (int i = 0; i < events.size(); i++) {\n"
- " Event theEvent = (Event) events.get(i);\n"
- " System.out.println(\"Event: \" + theEvent.getTitle() +\n"
- " \" Time: \" + theEvent.getDate());\n"
- " }\n"
- "}]]>"
-#: index.docbook:490
+#. Tag: para
+#: tutorial.xml:490
+#, no-c-format
msgid "We also add a new <literal>listEvents() method</literal>:"
-msgstr "Agregamos también un nuevo método <literal>listEvents()</literal>:"
+msgstr "Agregamos también un nuevo método <literal>listEvents()</literal>:"
-#: index.docbook:494
+#. Tag: programlisting
+#: tutorial.xml:494
+#, no-c-format
msgid ""
- "<![CDATA[private List listEvents() {\n"
- "\n"
- " Session session = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- "\n"
- " session.beginTransaction();\n"
- "\n"
- " List result = session.createQuery(\"from Event\").list();\n"
- "\n"
- " session.getTransaction().commit();\n"
- "\n"
- " return result;\n"
- "}]]>"
+"<![CDATA[private List listEvents() {\n"
+"\n"
+" Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+"();\n"
+"\n"
+" session.beginTransaction();\n"
+"\n"
+" List result = session.createQuery(\"from Event\").list();\n"
+"\n"
+" session.getTransaction().commit();\n"
+"\n"
+" return result;\n"
+"}]]>"
msgstr ""
- "<![CDATA[private List listEvents() {\n"
- " Session session = HibernateUtil.currentSession();\n"
- " Transaction tx = session.beginTransaction();\n"
- "\n"
- " List result = session.createQuery(\"from Event\").list();\n"
- "\n"
- " tx.commit();\n"
- " session.close();\n"
- "\n"
- " return result;\n"
- "}]]>"
-#: index.docbook:496
-msgid "What we do here is use an HQL (Hibernate Query Language) query to load all existing <literal>Event</literal> objects from the database. Hibernate will generate the appropriate SQL, send it to the database and populate <literal>Event</literal> objects with the data. You can create more complex queries with HQL, of course."
-msgstr "Lo que hacemos aquí es usar una consulta HQL (Lenguaje de Consulta de Hibernate o Hibernate Query Language) para cargar todos los objetos <literal>Event</literal> existentes de la base de datos. Hibernate generará el SQL apropiado, lo enviará a la base de datosy poblará los objetos <literal>Event</literal> con datos. Puedes, por supuesto, crear consultas más complejas con HQL."
+#. Tag: para
+#: tutorial.xml:496
+#, no-c-format
+msgid ""
+"What we do here is use an HQL (Hibernate Query Language) query to load all "
+"existing <literal>Event</literal> objects from the database. Hibernate will "
+"generate the appropriate SQL, send it to the database and populate "
+"<literal>Event</literal> objects with the data. You can create more complex "
+"queries with HQL, of course."
+msgstr ""
+"Lo que hacemos aquí es usar una consulta HQL (Lenguaje de Consulta de "
+"Hibernate o Hibernate Query Language) para cargar todos los objetos "
+"<literal>Event</literal> existentes de la base de datos. Hibernate generará "
+"el SQL apropiado, lo enviará a la base de datosy poblará los objetos "
+"<literal>Event</literal> con datos. Puedes, por supuesto, crear consultas "
+"más complejas con HQL."
-#: index.docbook:503
+#. Tag: para
+#: tutorial.xml:503
+#, no-c-format
msgid "Now, to execute and test all of this, follow these steps:"
-msgstr "Si ahora llamas a Ant con <literal>-Daction=list</literal>, debes ver los eventos que has almacenado hasta ahora. Puede sorprenderte que esto no funcione, al menos si has seguido este tutorial paso por paso; el resultado siempre estará vacío. La razon de esto es la opción <literal>hbm2ddl.auto</literal> en la configuración de Hibernate: Hibernate recreará la base de datos en cada ejecución. Deshabilítala quitando la opción, y verás resultados en tu listado después que llames a la acción <literal>store</literal> unas cuantas veces. La generación y exportación de esquema es útil mayormente en testeo unitario."
+msgstr "Now, to execute and test all of this, follow these steps:"
-#: index.docbook:509
-msgid "Run <literal>ant run -Daction=store</literal> to store something into the database and, of course, to generate the database schema before through hbm2ddl."
-msgstr "Part 2 - Mapeando asociaciones"
+#. Tag: para
+#: tutorial.xml:509
+#, no-c-format
+msgid ""
+"Run <literal>ant run -Daction=store</literal> to store something into the "
+"database and, of course, to generate the database schema before through "
+"hbm2ddl."
+msgstr ""
+"Run <literal>ant run -Daction=store</literal> to store something into the "
+"database and, of course, to generate the database schema before through "
+"hbm2ddl."
-#: index.docbook:515
-msgid "Now disable hbm2ddl by commenting out the property in your <literal>hibernate.cfg.xml</literal> file. Usually you only leave it turned on in continous unit testing, but another run of hbm2ddl would <emphasis>drop</emphasis> everything you have stored - the <literal>create</literal> configuration setting actually translates into \"drop all tables from the schema, then re-create all tables, when the SessionFactory is build\"."
-msgstr "Hemos mapeado un clase de entidad persistente a una tabla. Construyamos sobre esto y agreguemos algunas asociaciones de clase. Primero agregaremos personas a nuestra aplicación, y almacenaremos una lista de eventos en las que participan."
+#. Tag: para
+#: tutorial.xml:515
+#, no-c-format
+msgid ""
+"Now disable hbm2ddl by commenting out the property in your "
+"<literal>hibernate.cfg.xml</literal> file. Usually you only leave it turned "
+"on in continous unit testing, but another run of hbm2ddl would "
+"<emphasis>drop</emphasis> everything you have stored - the <literal>create</"
+"literal> configuration setting actually translates into \"drop all tables "
+"from the schema, then re-create all tables, when the SessionFactory is build"
+"\"."
+msgstr ""
+"Now disable hbm2ddl by commenting out the property in your "
+"<literal>hibernate.cfg.xml</literal> file. Usually you only leave it turned "
+"on in continous unit testing, but another run of hbm2ddl would "
+"<emphasis>drop</emphasis> everything you have stored - the <literal>create</"
+"literal> configuration setting actually translates into \"drop all tables "
+"from the schema, then re-create all tables, when the SessionFactory is build"
+"\"."
-#: index.docbook:525
-msgid "If you now call Ant with <literal>-Daction=list</literal>, you should see the events you have stored so far. You can of course also call the <literal>store</literal> action a few times more."
-msgstr "Mapeando la clase Person"
+#. Tag: para
+#: tutorial.xml:525
+#, no-c-format
+msgid ""
+"If you now call Ant with <literal>-Daction=list</literal>, you should see "
+"the events you have stored so far. You can of course also call the "
+"<literal>store</literal> action a few times more."
+msgstr ""
+"If you now call Ant with <literal>-Daction=list</literal>, you should see "
+"the events you have stored so far. You can of course also call the "
+"<literal>store</literal> action a few times more."
-#: index.docbook:531
-msgid "Note: Most new Hibernate users fail at this point and we see questions about <emphasis>Table not found</emphasis> 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 "El primer corte de la clase <literal>Person</literal> es simple:"
+#. Tag: para
+#: tutorial.xml:531
+#, no-c-format
+msgid ""
+"Note: Most new Hibernate users fail at this point and we see questions about "
+"<emphasis>Table not found</emphasis> 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 ""
+"Note: Most new Hibernate users fail at this point and we see questions about "
+"<emphasis>Table not found</emphasis> 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."
-#: index.docbook:544
+#. Tag: title
+#: tutorial.xml:544
+#, no-c-format
msgid "Part 2 - Mapping associations"
+msgstr "Part 2 - Mapeando asociaciones"
+
+#. Tag: para
+#: tutorial.xml:546
+#, no-c-format
+msgid ""
+"We mapped a persistent entity class to a table. Let's build on this and add "
+"some class associations. First we'll add people to our application, and "
+"store a list of events they participate in."
msgstr ""
- "<![CDATA[public class Person {\n"
- "\n"
- " private Long id;\n"
- " private int age;\n"
- " private String firstname;\n"
- " private String lastname;\n"
- "\n"
- " Person() {}\n"
- "\n"
- " // Accessor methods for all properties, private setter for 'id'\n"
- "\n"
- "}]]>"
+"Hemos mapeado un clase de entidad persistente a una tabla. Construyamos "
+"sobre esto y agreguemos algunas asociaciones de clase. Primero agregaremos "
+"personas a nuestra aplicación, y almacenaremos una lista de eventos en las "
+"que participan."
-#: index.docbook:546
-msgid "We mapped a persistent entity class to a table. Let's build on this and add some class associations. First we'll add people to our application, and store a list of events they participate in."
-msgstr "Crea un fichero de mapeo llamado <literal>Person.hbm.xml</literal>:"
-
-#: index.docbook:552
+#. Tag: title
+#: tutorial.xml:552
+#, no-c-format
msgid "Mapping the Person class"
-msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Person\" table=\"PERSON\">\n"
- " <id name=\"id\" column=\"PERSON_ID\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <property name=\"age\"/>\n"
- " <property name=\"firstname\"/>\n"
- " <property name=\"lastname\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+msgstr "Mapeando la clase Person"
-#: index.docbook:554
+#. Tag: para
+#: tutorial.xml:554
+#, no-c-format
msgid "The first cut of the <literal>Person</literal> class is simple:"
-msgstr "Finalmente, agrega el nuevo mapeo a la configuración de Hibernate:"
+msgstr "El primer corte de la clase <literal>Person</literal> es simple:"
-#: index.docbook:558
+#. Tag: programlisting
+#: tutorial.xml:558
+#, no-c-format
msgid ""
- "<![CDATA[package events;\n"
- "\n"
- "public class Person {\n"
- "\n"
- " private Long id;\n"
- " private int age;\n"
- " private String firstname;\n"
- " private String lastname;\n"
- "\n"
- " public Person() {}\n"
- "\n"
- " // Accessor methods for all properties, private setter for 'id'\n"
- "\n"
- "}]]>"
+"<![CDATA[package events;\n"
+"\n"
+"public class Person {\n"
+"\n"
+" private Long id;\n"
+" private int age;\n"
+" private String firstname;\n"
+" private String lastname;\n"
+"\n"
+" public Person() {}\n"
+"\n"
+" // Accessor methods for all properties, private setter for 'id'\n"
+"\n"
+"}]]>"
msgstr ""
- "<![CDATA[ <mapping resource=\"Event.hbm.xml\"/>\n"
- " <mapping resource=\"Person.hbm.xml\"/>\n"
- "]]>"
-#: index.docbook:560
-msgid "Create a new mapping file called <literal>Person.hbm.xml</literal> (don't forget the DTD reference at the top):"
-msgstr "Crearemos ahora una asociación entre estas dos entidades. Obviamente, las personas pueden participar en eventos, y los eventos tienen participantes. Las cuestiones de diseño con que tenemos que tratar son: direccionalidad, multiplicidad y comportamiento de colección."
+#. Tag: para
+#: tutorial.xml:560
+#, no-c-format
+msgid ""
+"Create a new mapping file called <literal>Person.hbm.xml</literal> (don't "
+"forget the DTD reference at the top):"
+msgstr "Crea un fichero de mapeo llamado <literal>Person.hbm.xml</literal>:"
-#: index.docbook:565
+#. Tag: programlisting
+#: tutorial.xml:565
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"events.Person\" table=\"PERSON\">\n"
- " <id name=\"id\" column=\"PERSON_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"age\"/>\n"
- " <property name=\"firstname\"/>\n"
- " <property name=\"lastname\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-msgstr "Una asociación unidireccional basada en Set"
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"events.Person\" table=\"PERSON\">\n"
+" <id name=\"id\" column=\"PERSON_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"age\"/>\n"
+" <property name=\"firstname\"/>\n"
+" <property name=\"lastname\"/>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
+msgstr ""
-#: index.docbook:567
+#. Tag: para
+#: tutorial.xml:567
+#, no-c-format
msgid "Finally, add the new mapping to Hibernate's configuration:"
-msgstr "Agregaremos una colección de eventos a la clase <literal>Person</literal>. De esta forma podemos navegar facilmente a los eventos de una persona en particular, sin ejecutar una consulta explícita, llamando a <literal>aPerson.getEvents()</literal>. Usamos una colección Java, un <literal>Set</literal>, porque la colección no contendrá elementos duplicados y el ordenamiento no nos es relevante."
+msgstr "Finalmente, agrega el nuevo mapeo a la configuración de Hibernate:"
-#: index.docbook:571
+#. Tag: programlisting
+#: tutorial.xml:571
+#, no-c-format
msgid ""
- "<![CDATA[<mapping resource=\"events/Event.hbm.xml\"/>\n"
- "<mapping resource=\"events/Person.hbm.xml\"/>]]>"
-msgstr "Hasta ahora hemos diseñado asociaciones unidireccionales multivaluadas, implementadas con un <literal>Set</literal>. Escribamos el código para esto en las clases Java y luego lo mapeemos:"
+"<![CDATA[<mapping resource=\"events/Event.hbm.xml\"/>\n"
+"<mapping resource=\"events/Person.hbm.xml\"/>]]>"
+msgstr ""
-#: index.docbook:573
-msgid "We'll now create an association between these two entities. Obviously, persons can participate in events, and events have participants. The design questions we have to deal with are: directionality, multiplicity, and collection behavior."
+#. Tag: para
+#: tutorial.xml:573
+#, no-c-format
+msgid ""
+"We'll now create an association between these two entities. Obviously, "
+"persons can participate in events, and events have participants. The design "
+"questions we have to deal with are: directionality, multiplicity, and "
+"collection behavior."
msgstr ""
- "<![CDATA[public class Person {\n"
- "\n"
- " private Set events = new HashSet();\n"
- "\n"
- " public Set getEvents() {\n"
- " return events;\n"
- " }\n"
- "\n"
- " public void setEvents(Set events) {\n"
- " this.events = events;\n"
- " }\n"
- "}]]>"
+"Crearemos ahora una asociación entre estas dos entidades. Obviamente, las "
+"personas pueden participar en eventos, y los eventos tienen participantes. "
+"Las cuestiones de diseño con que tenemos que tratar son: direccionalidad, "
+"multiplicidad y comportamiento de colección."
-#: index.docbook:583
+#. Tag: title
+#: tutorial.xml:583
+#, no-c-format
msgid "A unidirectional Set-based association"
-msgstr "Antes que mapeemos esta asociación, piensa sobre el otro lado. Claramente, podemos mantener esto solamente unidireccional. O podemos crear otra colección en el <literal>Event</literal>, si queremos ser capaces de navegarlos bidireccionalmente; por ejemplo, <literal>anEvent.getParticipants()</literal>. Esta es una elección de diseño que recae en ti, pero lo que está claro de esta discusión es la multiplicidad de la asociación: \"multi\" valuada a ambos lados, llamamos a esto una asociación <emphasis>muchos-a-muchos</emphasis>. Por lo tanto, usamos un mapeo many-to-many de Hibernate:"
+msgstr "Una asociación unidireccional basada en Set"
-#: index.docbook:585
-msgid "We'll add a collection of events to the <literal>Person</literal> class. That way we can easily navigate to the events for a particular person, without executing an explicit query - by calling <literal>aPerson.getEvents()</literal>. We use a Java collection, a <literal>Set</literal>, because the collection will not contain duplicate elements and the ordering is not relevant for us."
+#. Tag: para
+#: tutorial.xml:585
+#, no-c-format
+msgid ""
+"We'll add a collection of events to the <literal>Person</literal> class. "
+"That way we can easily navigate to the events for a particular person, "
+"without executing an explicit query - by calling <literal>aPerson.getEvents()"
+"</literal>. We use a Java collection, a <literal>Set</literal>, because the "
+"collection will not contain duplicate elements and the ordering is not "
+"relevant for us."
msgstr ""
- "<![CDATA[<class name=\"Person\" table=\"PERSON\">\n"
- " <id name=\"id\" column=\"PERSON_ID\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <property name=\"age\"/>\n"
- " <property name=\"firstname\"/>\n"
- " <property name=\"lastname\"/>\n"
- "\n"
- " <set name=\"events\" table=\"PERSON_EVENT\">\n"
- " <key column=\"PERSON_ID\"/>\n"
- " <many-to-many column=\"EVENT_ID\" class=\"Event\"/>\n"
- " </set>\n"
- "\n"
- "</class>]]>"
+"Agregaremos una colección de eventos a la clase <literal>Person</literal>. "
+"De esta forma podemos navegar facilmente a los eventos de una persona en "
+"particular, sin ejecutar una consulta explícita, llamando a <literal>aPerson."
+"getEvents()</literal>. Usamos una colección Java, un <literal>Set</literal>, "
+"porque la colección no contendrá elementos duplicados y el ordenamiento no "
+"nos es relevante."
-#: index.docbook:592
-msgid "We need a unidirectional, many-valued associations, implemented with a <literal>Set</literal>. Let's write the code for this in the Java classes and then map it:"
-msgstr "Hibernate soporta todo tipo de mapeos de colección, siendo el más común un <literal><set></literal>. Para una asociación muchos-a-muchos (o relación de entidad <emphasis>n:m</emphasis>), se necesita una tabla de asociación. Cada fila en esta tabla representa un enlace entre una persona y un evento. Esta tabla se configura con el atributo <literal>table</literal> del elemento <literal>set</literal>. El nombre de la columna identificadora en la asociación, para el lado de la persona, se define con el elemento <literal><key></literal>. El nombre de columna para el lado del evento se define con el atributo <literal>column</literal> del <literal><many-to-many></literal>. También tienes que decirle a Hibernate la clase de los objetos en tu colección (correcto: la clase del otro lado de la colección de referencias)."
+#. Tag: para
+#: tutorial.xml:592
+#, no-c-format
+msgid ""
+"We need a unidirectional, many-valued associations, implemented with a "
+"<literal>Set</literal>. Let's write the code for this in the Java classes "
+"and then map it:"
+msgstr ""
+"Hasta ahora hemos diseñado asociaciones unidireccionales multivaluadas, "
+"implementadas con un <literal>Set</literal>. Escribamos el código para esto "
+"en las clases Java y luego lo mapeemos:"
-#: index.docbook:597
+#. Tag: programlisting
+#: tutorial.xml:597
+#, no-c-format
msgid ""
- "<![CDATA[public class Person {\n"
- "\n"
- " private Set events = new HashSet();\n"
- "\n"
- " public Set getEvents() {\n"
- " return events;\n"
- " }\n"
- "\n"
- " public void setEvents(Set events) {\n"
- " this.events = events;\n"
- " }\n"
- "}]]>"
-msgstr "El esquema de base de datos para este mapeo es, por lo tanto:"
+"<![CDATA[public class Person {\n"
+"\n"
+" private Set events = new HashSet();\n"
+"\n"
+" public Set getEvents() {\n"
+" return events;\n"
+" }\n"
+"\n"
+" public void setEvents(Set events) {\n"
+" this.events = events;\n"
+" }\n"
+"}]]>"
+msgstr ""
-#: index.docbook:599
-msgid "Before we map this association, think about the other side. Clearly, we could just keep this unidirectional. Or, we could create another collection on the <literal>Event</literal>, if we want to be able to navigate it bi-directional, i.e. <literal>anEvent.getParticipants()</literal>. This is not necessary, from a functional perspective. You could 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, we call this a <emphasis>many-to-many</emphasis> association. Hence, we use Hibernate's many-to-many mapping:"
+#. Tag: para
+#: tutorial.xml:599
+#, no-c-format
+msgid ""
+"Before we map this association, think about the other side. Clearly, we "
+"could just keep this unidirectional. Or, we could create another collection "
+"on the <literal>Event</literal>, if we want to be able to navigate it bi-"
+"directional, i.e. <literal>anEvent.getParticipants()</literal>. This is not "
+"necessary, from a functional perspective. You could 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, we call this "
+"a <emphasis>many-to-many</emphasis> association. Hence, we use Hibernate's "
+"many-to-many mapping:"
msgstr ""
- "<![CDATA[\n"
- " _____________ __________________\n"
- " | | | | _____________\n"
- " | EVENTS | | PERSON_EVENT | | |\n"
- " |_____________| |__________________| | PERSON |\n"
- " | | | | |_____________|\n"
- " | *EVENT_ID | <--> | *EVENT_ID | | |\n"
- " | EVENT_DATE | | *PERSON_ID | <--> | *PERSON_ID |\n"
- " | TITLE | |__________________| | AGE |\n"
- " |_____________| | FIRSTNAME |\n"
- " | LASTNAME |\n"
- " |_____________|\n"
- " ]]>"
+"Antes que mapeemos esta asociación, piensa sobre el otro lado. Claramente, "
+"podemos mantener esto solamente unidireccional. O podemos crear otra "
+"colección en el <literal>Event</literal>, si queremos ser capaces de "
+"navegarlos bidireccionalmente; por ejemplo, <literal>anEvent.getParticipants"
+"()</literal>. Esta es una elección de diseño que recae en ti, pero lo que "
+"está claro de esta discusión es la multiplicidad de la asociación: \"multi\" "
+"valuada a ambos lados, llamamos a esto una asociación <emphasis>muchos-a-"
+"muchos</emphasis>. Por lo tanto, usamos un mapeo many-to-many de Hibernate:"
-#: index.docbook:610
+#. Tag: programlisting
+#: tutorial.xml:610
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"events.Person\" table=\"PERSON\">\n"
- " <id name=\"id\" column=\"PERSON_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"age\"/>\n"
- " <property name=\"firstname\"/>\n"
- " <property name=\"lastname\"/>\n"
- "\n"
- " <set name=\"events\" table=\"PERSON_EVENT\">\n"
- " <key column=\"PERSON_ID\"/>\n"
- " <many-to-many column=\"EVENT_ID\" class=\"events.Event\"/>\n"
- " </set>\n"
- "\n"
- "</class>]]>"
-msgstr "Trabajando la asociación"
+"<![CDATA[<class name=\"events.Person\" table=\"PERSON\">\n"
+" <id name=\"id\" column=\"PERSON_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"age\"/>\n"
+" <property name=\"firstname\"/>\n"
+" <property name=\"lastname\"/>\n"
+"\n"
+" <set name=\"events\" table=\"PERSON_EVENT\">\n"
+" <key column=\"PERSON_ID\"/>\n"
+" <many-to-many column=\"EVENT_ID\" class=\"events.Event\"/>\n"
+" </set>\n"
+"\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:612
-msgid "Hibernate supports all kinds of collection mappings, a <literal><set></literal> being most common. For a many-to-many association (or <emphasis>n:m</emphasis> entity relationship), an association table is needed. Each row in this table represents a link between a person and an event. The table name is configured with the <literal>table</literal> attribute of the <literal>set</literal> element. The identifier column name in the association, for the person's side, is defined with the <literal><key></literal> element, the column name for the event's side with the <literal>column</literal> attribute of the <literal><many-to-many></literal>. You also have to tell Hibernate the class of the objects in your collection (correct: the class on the other side of the collection of references)."
-msgstr "Traigamos alguna gente y eventos juntos en un nuevo método en <literal>EventManager</literal>:"
+#. Tag: para
+#: tutorial.xml:612
+#, no-c-format
+msgid ""
+"Hibernate supports all kinds of collection mappings, a <literal><set></"
+"literal> being most common. For a many-to-many association (or <emphasis>n:"
+"m</emphasis> entity relationship), an association table is needed. Each row "
+"in this table represents a link between a person and an event. The table "
+"name is configured with the <literal>table</literal> attribute of the "
+"<literal>set</literal> element. The identifier column name in the "
+"association, for the person's side, is defined with the <literal><key>"
+"</literal> element, the column name for the event's side with the "
+"<literal>column</literal> attribute of the <literal><many-to-many></"
+"literal>. You also have to tell Hibernate the class of the objects in your "
+"collection (correct: the class on the other side of the collection of "
+"references)."
+msgstr ""
+"Hibernate soporta todo tipo de mapeos de colección, siendo el más común un "
+"<literal><set></literal>. Para una asociación muchos-a-muchos (o "
+"relación de entidad <emphasis>n:m</emphasis>), se necesita una tabla de "
+"asociación. Cada fila en esta tabla representa un enlace entre una persona y "
+"un evento. Esta tabla se configura con el atributo <literal>table</literal> "
+"del elemento <literal>set</literal>. El nombre de la columna identificadora "
+"en la asociación, para el lado de la persona, se define con el elemento "
+"<literal><key></literal>. El nombre de columna para el lado del evento "
+"se define con el atributo <literal>column</literal> del <literal><many-to-"
+"many></literal>. También tienes que decirle a Hibernate la clase de los "
+"objetos en tu colección (correcto: la clase del otro lado de la colección de "
+"referencias)."
-#: index.docbook:624
+#. Tag: para
+#: tutorial.xml:624
+#, no-c-format
msgid "The database schema for this mapping is therefore:"
-msgstr ""
- "<![CDATA[private void addPersonToEvent(Long personId, Long eventId) {\n"
- " Session session = HibernateUtil.currentSession();\n"
- " Transaction tx = session.beginTransaction();\n"
- "\n"
- " Person aPerson = (Person) session.load(Person.class, personId);\n"
- " Event anEvent = (Event) session.load(Event.class, eventId);\n"
- "\n"
- " aPerson.getEvents().add(anEvent);\n"
- "\n"
- " tx.commit();\n"
- " HibernateUtil.closeSession();\n"
- "}]]>"
+msgstr "El esquema de base de datos para este mapeo es, por lo tanto:"
-#: index.docbook:628
+#. Tag: programlisting
+#: tutorial.xml:628
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- " _____________ __________________\n"
- " | | | | _____________\n"
- " | EVENTS | | PERSON_EVENT | | |\n"
- " |_____________| |__________________| | PERSON |\n"
- " | | | | |_____________|\n"
- " | *EVENT_ID | <--> | *EVENT_ID | | |\n"
- " | EVENT_DATE | | *PERSON_ID | <--> | *PERSON_ID |\n"
- " | TITLE | |__________________| | AGE |\n"
- " |_____________| | FIRSTNAME |\n"
- " | LASTNAME |\n"
- " |_____________|\n"
- " ]]>"
-msgstr "Después de cargar una <literal>Person</literal> y un <literal>Event</literal>, simplemente modifica la colección usando sus métodos normales. Como puedes ver, no hay una llamada explícita a <literal>update()</literal> o <literal>save()</literal>. Hibernate detecta automáticamente que la colección ha sido modificada y necesita ser salvada. Esto es llamado <emphasis>chequeo sucio automótico (automatic dirty checking)</emphasis>, y también puedes intentarlo modificando el nombre de la propiedad de fecha de cualquiera de tus objetos. Mientras estén en estado <emphasis>persistente</emphasis>, esto es, ligados a una <literal>Session</literal> de Hibernate particular (es decir, justo han sido cargados o almacenados en una unidad de trabajo), Hibernate monitoriza cualquier cambio y ejecuta SQL en estilo escribe-por-detrás. El proceso de sincronización del estado de memoria con la base de datos, usu!
almente sólo al final de una unidad de trabajo, es llamado <emphasis>limpieza (flushing)</emphasis>."
+"<![CDATA[\n"
+" _____________ __________________\n"
+" | | | | _____________\n"
+" | EVENTS | | PERSON_EVENT | | |\n"
+" |_____________| |__________________| | PERSON |\n"
+" | | | | |_____________|\n"
+" | *EVENT_ID | <--> | *EVENT_ID | | |\n"
+" | EVENT_DATE | | *PERSON_ID | <--> | *PERSON_ID |\n"
+" | TITLE | |__________________| | AGE |\n"
+" |_____________| | FIRSTNAME |\n"
+" | LASTNAME |\n"
+" |_____________|\n"
+" ]]>"
+msgstr ""
-#: index.docbook:633
+#. Tag: title
+#: tutorial.xml:633
+#, no-c-format
msgid "Working the association"
-msgstr "Podrías, por supuesto, cargar persona y evento en unidades de trabajo diferentes. O modificas un objeto fuera de una <literal>Session</literal>, cuando no está en estado persistente (si antes era persistente llamamos a este estado <emphasis>separado (detached) </emphasis>). En código (no muy realista), esto se vería como sigue:"
+msgstr "Trabajando la asociación"
-#: index.docbook:635
-msgid "Let's bring some people and events together in a new method in <literal>EventManager</literal>:"
+#. Tag: para
+#: tutorial.xml:635
+#, no-c-format
+msgid ""
+"Let's bring some people and events together in a new method in "
+"<literal>EventManager</literal>:"
msgstr ""
- "<![CDATA[ private void addPersonToEvent(Long personId, Long eventId) {\n"
- "\n"
- " Session session = HibernateUtil.currentSession();\n"
- " Transaction tx = session.beginTransaction();\n"
- "\n"
- " Person aPerson = (Person) session.load(Person.class, personId);\n"
- " Event anEvent = (Event) session.load(Event.class, eventId);\n"
- "\n"
- " tx.commit();\n"
- " HibernateUtil.closeSession();\n"
- "\n"
- " aPerson.getEvents().add(anEvent); // aPerson is detached\n"
- "\n"
- " Session session2 = HibernateUtil.currentSession();\n"
- " Transaction tx2 = session.beginTransaction();\n"
- "\n"
- " session2.update(aPerson); // Reattachment of aPerson\n"
- "\n"
- " tx2.commit();\n"
- " HibernateUtil.closeSession();\n"
- " }\n"
- "]]>"
+"Traigamos alguna gente y eventos juntos en un nuevo método en "
+"<literal>EventManager</literal>:"
-#: index.docbook:639
+#. Tag: programlisting
+#: tutorial.xml:639
+#, no-c-format
msgid ""
- "<![CDATA[private void addPersonToEvent(Long personId, Long eventId) {\n"
- "\n"
- " Session session = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- " session.beginTransaction();\n"
- "\n"
- " Person aPerson = (Person) session.load(Person.class, personId);\n"
- " Event anEvent = (Event) session.load(Event.class, eventId);\n"
- "\n"
- " aPerson.getEvents().add(anEvent);\n"
- "\n"
- " session.getTransaction().commit();\n"
- "}]]>"
-msgstr "La llamada a <literal>update</literal> hace a un objeto persistente de nuevo, podrías decir que la liga a una nueva unidad de trabajo, de modo que cualquier modificación que le hagas mientras esté separado puede ser salvada a base de datos."
+"<![CDATA[private void addPersonToEvent(Long personId, Long eventId) {\n"
+"\n"
+" Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+"();\n"
+" session.beginTransaction();\n"
+"\n"
+" Person aPerson = (Person) session.load(Person.class, personId);\n"
+" Event anEvent = (Event) session.load(Event.class, eventId);\n"
+"\n"
+" aPerson.getEvents().add(anEvent);\n"
+"\n"
+" session.getTransaction().commit();\n"
+"}]]>"
+msgstr ""
-#: index.docbook:641
-msgid "After loading a <literal>Person</literal> and an <literal>Event</literal>, simply modify the collection using the normal collection methods. As you can see, there is no explicit call to <literal>update()</literal> or <literal>save()</literal>, Hibernate automatically detects that the collection has been modified and needs to be updated. This is called <emphasis>automatic dirty checking</emphasis>, and you can also try it by modifying the name or the date property of any of your objects. As long as they are in <emphasis>persistent</emphasis> state, that is, bound to a particular Hibernate <literal>Session</literal> (i.e. they have been just loaded or saved in a unit of work), 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</emphasis>. In our code, the unit of work ends with a commit (or rollback) of the dat!
abase transaction - as defined by the <literal>thread</literal> configuration option for the <literal>CurrentSessionContext</literal> class."
-msgstr "Bueno, esto no es muy usado en nuestra situación actual, pero es un concepto importante que puedes diseñar en tu propia aplicación. Por ahora, completa este ejercicio agregando una nueva acción al método main de <literal>EventManager</literal> y llámala desde la línea de comandos. Si necesitas los identificadores de una persona o evento, el método <literal>save()</literal> los devuelve."
+#. Tag: para
+#: tutorial.xml:641
+#, no-c-format
+msgid ""
+"After loading a <literal>Person</literal> and an <literal>Event</literal>, "
+"simply modify the collection using the normal collection methods. As you can "
+"see, there is no explicit call to <literal>update()</literal> or "
+"<literal>save()</literal>, Hibernate automatically detects that the "
+"collection has been modified and needs to be updated. This is called "
+"<emphasis>automatic dirty checking</emphasis>, and you can also try it by "
+"modifying the name or the date property of any of your objects. As long as "
+"they are in <emphasis>persistent</emphasis> state, that is, bound to a "
+"particular Hibernate <literal>Session</literal> (i.e. they have been just "
+"loaded or saved in a unit of work), 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</emphasis>. In our code, the unit of work ends "
+"with a commit (or rollback) of the database transaction - as defined by the "
+"<literal>thread</literal> configuration option for the "
+"<literal>CurrentSessionContext</literal> class."
+msgstr ""
+"Después de cargar una <literal>Person</literal> y un <literal>Event</"
+"literal>, simplemente modifica la colección usando sus métodos normales. "
+"Como puedes ver, no hay una llamada explícita a <literal>update()</literal> "
+"o <literal>save()</literal>. Hibernate detecta automáticamente que la "
+"colección ha sido modificada y necesita ser salvada. Esto es llamado "
+"<emphasis>chequeo sucio automótico (automatic dirty checking)</emphasis>, y "
+"también puedes intentarlo modificando el nombre de la propiedad de fecha de "
+"cualquiera de tus objetos. Mientras estén en estado <emphasis>persistente</"
+"emphasis>, esto es, ligados a una <literal>Session</literal> de Hibernate "
+"particular (es decir, justo han sido cargados o almacenados en una unidad de "
+"trabajo), Hibernate monitoriza cualquier cambio y ejecuta SQL en estilo "
+"escribe-por-detrás. El proceso de sincronización del estado de memoria con "
+"la base de datos, usualmente sólo al final de una unidad de trabajo, es "
+"llamado <emphasis>limpieza (flushing)</emphasis>."
-#: index.docbook:656
-msgid "You might of course load person and event in different units of work. Or you modify an object outside of a <literal>Session</literal>, when it is not in persistent state (if it was persistent before, we call this state <emphasis>detached</emphasis>). You can even modify a collection when it is detached:"
-msgstr "Esto fue un ejemplo de una asociación entre dos clases igualmente importantes, dos entidades. Como se ha mencionado anteriormente, hay otras clases y tipos en un modelo típico, usualmente \"menos importantes\". Algunos ya los habrás visto, como un <literal>int</literal> o un <literal>String</literal>. Llamamos a estas clases <emphasis>tipos de valor (value types)</emphasis>, y sus instancias <emphasis>dependen</emphasis> de una entidad en particular. Las instancias de estos tipos no tienen su propia identidad, ni son compartidas entre entidades (dos personas no referencian el mismo objeto <literal>firstname</literal>, incluso si tuvieran el mismo primer nombre). Por supuesto, los tipos de valor no sólo pueden encontrarse en el JDK (de hecho, en una aplicación Hibernate todas las clases del JDK son consideradas tipos de valor), sino que además puedes escribir por ti mismo clases dependientes, por ejemplo, <literal>Address</li!
teral> o <literal>MonetaryAmount</literal>."
+#. Tag: para
+#: tutorial.xml:656
+#, no-c-format
+msgid ""
+"You might of course load person and event in different units of work. Or you "
+"modify an object outside of a <literal>Session</literal>, when it is not in "
+"persistent state (if it was persistent before, we call this state "
+"<emphasis>detached</emphasis>). You can even modify a collection when it is "
+"detached:"
+msgstr ""
+"Podrías, por supuesto, cargar persona y evento en unidades de trabajo "
+"diferentes. O modificas un objeto fuera de una <literal>Session</literal>, "
+"cuando no está en estado persistente (si antes era persistente llamamos a "
+"este estado <emphasis>separado (detached) </emphasis>). En código (no muy "
+"realista), esto se vería como sigue:"
-#: index.docbook:663
+#. Tag: programlisting
+#: tutorial.xml:663
+#, no-c-format
msgid ""
- "<![CDATA[private void addPersonToEvent(Long personId, Long eventId) {\n"
- "\n"
- " Session session = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- " session.beginTransaction();\n"
- "\n"
- " Person aPerson = (Person) session\n"
- " .createQuery(\"select p from Person p left join fetch p.events where p.id = :pid\")\n"
- " .setParameter(\"pid\", personId)\n"
- " .uniqueResult(); // Eager fetch the collection so we can use it detached\n"
- "\n"
- " Event anEvent = (Event) session.load(Event.class, eventId);\n"
- "\n"
- " session.getTransaction().commit();\n"
- "\n"
- " // End of first unit of work\n"
- "\n"
- " aPerson.getEvents().add(anEvent); // aPerson (and its collection) is detached\n"
- "\n"
- " // Begin second unit of work\n"
- "\n"
- " Session session2 = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- " session2.beginTransaction();\n"
- "\n"
- " session2.update(aPerson); // Reattachment of aPerson\n"
- "\n"
- " session2.getTransaction().commit();\n"
- "}]]>"
-msgstr "También puedes diseñar una colección de tipos de valor. Esto es conceptualmente muy diferente de una colección de referencias a otras entidades, pero se ve casi lo mismo en Java."
+"<![CDATA[private void addPersonToEvent(Long personId, Long eventId) {\n"
+"\n"
+" Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+"();\n"
+" session.beginTransaction();\n"
+"\n"
+" Person aPerson = (Person) session\n"
+" .createQuery(\"select p from Person p left join fetch p.events "
+"where p.id = :pid\")\n"
+" .setParameter(\"pid\", personId)\n"
+" .uniqueResult(); // Eager fetch the collection so we can use it "
+"detached\n"
+"\n"
+" Event anEvent = (Event) session.load(Event.class, eventId);\n"
+"\n"
+" session.getTransaction().commit();\n"
+"\n"
+" // End of first unit of work\n"
+"\n"
+" aPerson.getEvents().add(anEvent); // aPerson (and its collection) is "
+"detached\n"
+"\n"
+" // Begin second unit of work\n"
+"\n"
+" Session session2 = HibernateUtil.getSessionFactory().getCurrentSession"
+"();\n"
+" session2.beginTransaction();\n"
+"\n"
+" session2.update(aPerson); // Reattachment of aPerson\n"
+"\n"
+" session2.getTransaction().commit();\n"
+"}]]>"
+msgstr ""
-#: index.docbook:665
-msgid "The call to <literal>update</literal> makes a detached object persistent again, you could say it binds 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 "Colección de valores"
+#. Tag: para
+#: tutorial.xml:665
+#, no-c-format
+msgid ""
+"The call to <literal>update</literal> makes a detached object persistent "
+"again, you could say it binds 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 ""
+"La llamada a <literal>update</literal> hace a un objeto persistente de "
+"nuevo, podrías decir que la liga a una nueva unidad de trabajo, de modo que "
+"cualquier modificación que le hagas mientras esté separado puede ser salvada "
+"a base de datos."
-#: index.docbook:672
-msgid "Well, this is not much use in our current situation, but it's an important concept you can design into your own application. For now, complete this exercise by adding a new action to the <literal>EventManager</literal>'s main method and call it from the command line. If you need the identifiers of a person and an event - the <literal>save()</literal> method returns it (you might have to modify some of the previous methods to return that identifier):"
-msgstr "Agregamos una colección de objetos tipificados en valor a la entidad <literal>Person</literal>. Queremos almacenar direcciones de email, de modo que el tipo que usamos es <literal>String</literal>, y la colección es nuevamente un <literal>Set</literal>:"
+#. Tag: para
+#: tutorial.xml:672
+#, no-c-format
+msgid ""
+"Well, this is not much use in our current situation, but it's an important "
+"concept you can design into your own application. For now, complete this "
+"exercise by adding a new action to the <literal>EventManager</literal>'s "
+"main method and call it from the command line. If you need the identifiers "
+"of a person and an event - the <literal>save()</literal> method returns it "
+"(you might have to modify some of the previous methods to return that "
+"identifier):"
+msgstr ""
+"Bueno, esto no es muy usado en nuestra situación actual, pero es un concepto "
+"importante que puedes diseñar en tu propia aplicación. Por ahora, completa "
+"este ejercicio agregando una nueva acción al método main de "
+"<literal>EventManager</literal> y llámala desde la línea de comandos. Si "
+"necesitas los identificadores de una persona o evento, el método "
+"<literal>save()</literal> los devuelve."
-#: index.docbook:680
+#. Tag: programlisting
+#: tutorial.xml:680
+#, no-c-format
msgid ""
- "<![CDATA[else if (args[0].equals(\"addpersontoevent\")) {\n"
- " Long eventId = mgr.createAndStoreEvent(\"My Event\", new Date());\n"
- " Long personId = mgr.createAndStorePerson(\"Foo\", \"Bar\");\n"
- " mgr.addPersonToEvent(personId, eventId);\n"
- " System.out.println(\"Added person \" + personId + \" to event \" + eventId);\n"
- "}]]>"
+"<![CDATA[else if (args[0].equals(\"addpersontoevent\")) {\n"
+" Long eventId = mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+" Long personId = mgr.createAndStorePerson(\"Foo\", \"Bar\");\n"
+" mgr.addPersonToEvent(personId, eventId);\n"
+" System.out.println(\"Added person \" + personId + \" to event \" + "
+"eventId);\n"
+"}]]>"
msgstr ""
- "<![CDATA[private Set emailAddresses = new HashSet();\n"
- "\n"
- "public Set getEmailAddresses() {\n"
- " return emailAddresses;\n"
- "}\n"
- "\n"
- "public void setEmailAddresses(Set emailAddresses) {\n"
- " this.emailAddresses = emailAddresses;\n"
- "}]]>"
-#: index.docbook:682
-msgid "This was an example of an association between two equally important classes, two entities. As mentioned earlier, there are other classes and types in a typical model, usually \"less important\". Some you have already seen, like an <literal>int</literal> or a <literal>String</literal>. We call these classes <emphasis>value types</emphasis>, and their instances <emphasis>depend</emphasis> on a particular entity. Instances of these types don't have their own identity, nor are they shared between entities (two persons don't reference the same <literal>firstname</literal> object, even if they have the same first name). Of course, value types can not only be found in the JDK (in fact, in a Hibernate application all JDK classes are considered value types), but you can also write dependent classes yourself, <literal>Address</literal> or <literal>MonetaryAmount</literal>, for example."
-msgstr "El mapeo de este <literal>Set</literal>:"
+#. Tag: para
+#: tutorial.xml:682
+#, no-c-format
+msgid ""
+"This was an example of an association between two equally important classes, "
+"two entities. As mentioned earlier, there are other classes and types in a "
+"typical model, usually \"less important\". Some you have already seen, like "
+"an <literal>int</literal> or a <literal>String</literal>. We call these "
+"classes <emphasis>value types</emphasis>, and their instances "
+"<emphasis>depend</emphasis> on a particular entity. Instances of these types "
+"don't have their own identity, nor are they shared between entities (two "
+"persons don't reference the same <literal>firstname</literal> object, even "
+"if they have the same first name). Of course, value types can not only be "
+"found in the JDK (in fact, in a Hibernate application all JDK classes are "
+"considered value types), but you can also write dependent classes yourself, "
+"<literal>Address</literal> or <literal>MonetaryAmount</literal>, for example."
+msgstr ""
+"Esto fue un ejemplo de una asociación entre dos clases igualmente "
+"importantes, dos entidades. Como se ha mencionado anteriormente, hay otras "
+"clases y tipos en un modelo típico, usualmente \"menos importantes\". "
+"Algunos ya los habrás visto, como un <literal>int</literal> o un "
+"<literal>String</literal>. Llamamos a estas clases <emphasis>tipos de valor "
+"(value types)</emphasis>, y sus instancias <emphasis>dependen</emphasis> de "
+"una entidad en particular. Las instancias de estos tipos no tienen su propia "
+"identidad, ni son compartidas entre entidades (dos personas no referencian "
+"el mismo objeto <literal>firstname</literal>, incluso si tuvieran el mismo "
+"primer nombre). Por supuesto, los tipos de valor no sólo pueden encontrarse "
+"en el JDK (de hecho, en una aplicación Hibernate todas las clases del JDK "
+"son consideradas tipos de valor), sino que además puedes escribir por ti "
+"mismo clases dependientes, por ejemplo, <literal>Address</literal> o "
+"<literal>MonetaryAmount</literal>."
-#: index.docbook:695
-msgid "You can also design a collection of value types. This is conceptually very different from a collection of references to other entities, but looks almost the same in Java."
+#. Tag: para
+#: tutorial.xml:695
+#, no-c-format
+msgid ""
+"You can also design a collection of value types. This is conceptually very "
+"different from a collection of references to other entities, but looks "
+"almost the same in Java."
msgstr ""
- "<![CDATA[<set name=\"emailAddresses\" table=\"PERSON_EMAIL_ADDR\">\n"
- " <key column=\"PERSON_ID\"/>\n"
- " <element type=\"string\" column=\"EMAIL_ADDR\"/>\n"
- "</set>]]>"
+"También puedes diseñar una colección de tipos de valor. Esto es "
+"conceptualmente muy diferente de una colección de referencias a otras "
+"entidades, pero se ve casi lo mismo en Java."
-#: index.docbook:703
+#. Tag: title
+#: tutorial.xml:703
+#, no-c-format
msgid "Collection of values"
-msgstr "La diferencia comparada con el mapeo anterior es la parte <literal>element</literal>, que le dice a Hibernate que la colección no contiene referencias a otra entidad, sino una colección de elementos de tipo <literal>String</literal> (el nombre en minúsculas te dice que es un tipo/conversor de mapeo de Hibernate). Una vez más, el atributo <literal>table</literal> del elemento <literal>set</literal> determina el nombre de la tabla para la colección. El elemento <literal>key</literal> define el nombre de la columna clave foránea en la tabla de colección. El atributo <literal>column</literal> en el elemento <literal>element</literal> define el nombre de columna donde realmente serán almacenados los valores <literal>String</literal>."
+msgstr "Colección de valores"
-#: index.docbook:705
-msgid "We add a collection of value typed objects to the <literal>Person</literal> entity. We want to store email addresses, so the type we use is <literal>String</literal>, and the collection is again a <literal>Set</literal>:"
-msgstr "Echa una mirada al esquema actualizado:"
+#. Tag: para
+#: tutorial.xml:705
+#, no-c-format
+msgid ""
+"We add a collection of value typed objects to the <literal>Person</literal> "
+"entity. We want to store email addresses, so the type we use is "
+"<literal>String</literal>, and the collection is again a <literal>Set</"
+"literal>:"
+msgstr ""
+"Agregamos una colección de objetos tipificados en valor a la entidad "
+"<literal>Person</literal>. Queremos almacenar direcciones de email, de modo "
+"que el tipo que usamos es <literal>String</literal>, y la colección es "
+"nuevamente un <literal>Set</literal>:"
-#: index.docbook:710
+#. Tag: programlisting
+#: tutorial.xml:710
+#, no-c-format
msgid ""
- "<![CDATA[private Set emailAddresses = new HashSet();\n"
- "\n"
- "public Set getEmailAddresses() {\n"
- " return emailAddresses;\n"
- "}\n"
- "\n"
- "public void setEmailAddresses(Set emailAddresses) {\n"
- " this.emailAddresses = emailAddresses;\n"
- "}]]>"
+"<![CDATA[private Set emailAddresses = new HashSet();\n"
+"\n"
+"public Set getEmailAddresses() {\n"
+" return emailAddresses;\n"
+"}\n"
+"\n"
+"public void setEmailAddresses(Set emailAddresses) {\n"
+" this.emailAddresses = emailAddresses;\n"
+"}]]>"
msgstr ""
- "<![CDATA[\n"
- " _____________ __________________\n"
- " | | | | _____________\n"
- " | EVENTS | | PERSON_EVENT | | | ___________________\n"
- " |_____________| |__________________| | PERSON | | |\n"
- " | | | | |_____________| | PERSON_EMAIL_ADDR |\n"
- " | *EVENT_ID | <--> | *EVENT_ID | | | |___________________|\n"
- " | EVENT_DATE | | *PERSON_ID | <--> | *PERSON_ID | <--> | *PERSON_ID |\n"
- " | TITLE | |__________________| | AGE | | *EMAIL_ADDR |\n"
- " |_____________| | FIRSTNAME | |___________________|\n"
- " | LASTNAME |\n"
- " |_____________|\n"
- " ]]>"
-#: index.docbook:712
+#. Tag: para
+#: tutorial.xml:712
+#, no-c-format
msgid "The mapping of this <literal>Set</literal>:"
-msgstr "Puedes ver que la clave primaria de la tabla de colección es de hecho una clave compuesta, usando ambas columnas. Esto implica también que no pueden haber direcciones de email duplicadas por persona, que es exactamente la semántica que necesitamos para un conjunto en Java."
+msgstr "El mapeo de este <literal>Set</literal>:"
-#: index.docbook:716
+#. Tag: programlisting
+#: tutorial.xml:716
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"emailAddresses\" table=\"PERSON_EMAIL_ADDR\">\n"
- " <key column=\"PERSON_ID\"/>\n"
- " <element type=\"string\" column=\"EMAIL_ADDR\"/>\n"
- "</set>]]>"
-msgstr "Puedes ahora intentar y agregar elementos a esta colección, al igual que hicimos antes enlazando personas y eventos. Es el mismo código en Java."
+"<![CDATA[<set name=\"emailAddresses\" table=\"PERSON_EMAIL_ADDR\">\n"
+" <key column=\"PERSON_ID\"/>\n"
+" <element type=\"string\" column=\"EMAIL_ADDR\"/>\n"
+"</set>]]>"
+msgstr ""
-#: index.docbook:718
-msgid "The difference compared with the earlier mapping is the <literal>element</literal> part, which tells Hibernate that the collection does not contain references to another entity, but a collection of elements of type <literal>String</literal> (the lowercase name tells you it's a Hibernate mapping type/converter). Once again, the <literal>table</literal> attribute of the <literal>set</literal> element determines the table name for the collection. The <literal>key</literal> element defines the foreign-key column name in the collection table. The <literal>column</literal> attribute in the <literal>element</literal> element defines the column name where the <literal>String</literal> values will actually be stored."
-msgstr "Asociaciones bidireccionales"
+#. Tag: para
+#: tutorial.xml:718
+#, no-c-format
+msgid ""
+"The difference compared with the earlier mapping is the <literal>element</"
+"literal> part, which tells Hibernate that the collection does not contain "
+"references to another entity, but a collection of elements of type "
+"<literal>String</literal> (the lowercase name tells you it's a Hibernate "
+"mapping type/converter). Once again, the <literal>table</literal> attribute "
+"of the <literal>set</literal> element determines the table name for the "
+"collection. The <literal>key</literal> element defines the foreign-key "
+"column name in the collection table. The <literal>column</literal> attribute "
+"in the <literal>element</literal> element defines the column name where the "
+"<literal>String</literal> values will actually be stored."
+msgstr ""
+"La diferencia comparada con el mapeo anterior es la parte <literal>element</"
+"literal>, que le dice a Hibernate que la colección no contiene referencias a "
+"otra entidad, sino una colección de elementos de tipo <literal>String</"
+"literal> (el nombre en minúsculas te dice que es un tipo/conversor de mapeo "
+"de Hibernate). Una vez más, el atributo <literal>table</literal> del "
+"elemento <literal>set</literal> determina el nombre de la tabla para la "
+"colección. El elemento <literal>key</literal> define el nombre de la columna "
+"clave foránea en la tabla de colección. El atributo <literal>column</"
+"literal> en el elemento <literal>element</literal> define el nombre de "
+"columna donde realmente serán almacenados los valores <literal>String</"
+"literal>."
-#: index.docbook:728
+#. Tag: para
+#: tutorial.xml:728
+#, no-c-format
msgid "Have a look at the updated schema:"
-msgstr "A continuacion vamos a mapear una asociación bidireccional, haciendo que la asociación entre persona y evento funcione desde ambos lados en Java. Por supuesto, el esquema de base de datos no cambia; todavía necesitamos multiplicidad muchos-a-muchos. Una base de datos relacional es más flexible que un lenguaje de programación de red, así que no necesita nada parecido a una dirección de navegación; los datos pueden ser vistos y recuperados en cualquier forma posible."
+msgstr "Echa una mirada al esquema actualizado:"
-#: index.docbook:732
+#. Tag: programlisting
+#: tutorial.xml:732
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- " _____________ __________________\n"
- " | | | | _____________\n"
- " | EVENTS | | PERSON_EVENT | | | ___________________\n"
- " |_____________| |__________________| | PERSON | | |\n"
- " | | | | |_____________| | PERSON_EMAIL_ADDR |\n"
- " | *EVENT_ID | <--> | *EVENT_ID | | | |___________________|\n"
- " | EVENT_DATE | | *PERSON_ID | <--> | *PERSON_ID | <--> | *PERSON_ID |\n"
- " | TITLE | |__________________| | AGE | | *EMAIL_ADDR |\n"
- " |_____________| | FIRSTNAME | |___________________|\n"
- " | LASTNAME |\n"
- " |_____________|\n"
- " ]]>"
-msgstr "Primero agrega una colección de participantes a la clase de eventos <literal>Event</literal>:"
+"<![CDATA[\n"
+" _____________ __________________\n"
+" | | | | _____________\n"
+" | EVENTS | | PERSON_EVENT | | | "
+"___________________\n"
+" |_____________| |__________________| | PERSON | "
+"| |\n"
+" | | | | |_____________| | "
+"PERSON_EMAIL_ADDR |\n"
+" | *EVENT_ID | <--> | *EVENT_ID | | | |"
+"___________________|\n"
+" | EVENT_DATE | | *PERSON_ID | <--> | *PERSON_ID | <--> | "
+"*PERSON_ID |\n"
+" | TITLE | |__________________| | AGE | | "
+"*EMAIL_ADDR |\n"
+" |_____________| | FIRSTNAME | |"
+"___________________|\n"
+" | LASTNAME |\n"
+" |_____________|\n"
+" ]]>"
+msgstr ""
-#: index.docbook:734
-msgid "You can see that the primary key of the collection table is in fact a composite key, using both columns. This also implies that there can't be duplicate email addresses per person, which is exactly the semantics we need for a set in Java."
+#. Tag: para
+#: tutorial.xml:734
+#, no-c-format
+msgid ""
+"You can see that the primary key of the collection table is in fact a "
+"composite key, using both columns. This also implies that there can't be "
+"duplicate email addresses per person, which is exactly the semantics we need "
+"for a set in Java."
msgstr ""
- "<![CDATA[private Set participants = new HashSet();\n"
- "\n"
- "public Set getParticipants() {\n"
- " return participants;\n"
- "}\n"
- "\n"
- "public void setParticipants(Set participants) {\n"
- " this.participants = participants;\n"
- "}]]>"
+"Puedes ver que la clave primaria de la tabla de colección es de hecho una "
+"clave compuesta, usando ambas columnas. Esto implica también que no pueden "
+"haber direcciones de email duplicadas por persona, que es exactamente la "
+"semántica que necesitamos para un conjunto en Java."
-#: index.docbook:740
-msgid "You can now try and add elements to this collection, just like we did before by linking persons and events. It's the same code in Java:"
-msgstr "Ahora mapea este lado de la asociación también, en <literal>Event.hbm.xml</literal>."
+#. Tag: para
+#: tutorial.xml:740
+#, no-c-format
+msgid ""
+"You can now try and add elements to this collection, just like we did before "
+"by linking persons and events. It's the same code in Java:"
+msgstr ""
+"Puedes ahora intentar y agregar elementos a esta colección, al igual que "
+"hicimos antes enlazando personas y eventos. Es el mismo código en Java."
-#: index.docbook:745
+#. Tag: programlisting
+#: tutorial.xml:745
+#, no-c-format
msgid ""
- "<![CDATA[private void addEmailToPerson(Long personId, String emailAddress) {\n"
- "\n"
- " Session session = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- " session.beginTransaction();\n"
- "\n"
- " Person aPerson = (Person) session.load(Person.class, personId);\n"
- "\n"
- " // The getEmailAddresses() might trigger a lazy load of the collection\n"
- " aPerson.getEmailAddresses().add(emailAddress);\n"
- "\n"
- " session.getTransaction().commit();\n"
- "}]]>"
+"<![CDATA[private void addEmailToPerson(Long personId, String emailAddress) "
+"{\n"
+"\n"
+" Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+"();\n"
+" session.beginTransaction();\n"
+"\n"
+" Person aPerson = (Person) session.load(Person.class, personId);\n"
+"\n"
+" // The getEmailAddresses() might trigger a lazy load of the collection\n"
+" aPerson.getEmailAddresses().add(emailAddress);\n"
+"\n"
+" session.getTransaction().commit();\n"
+"}]]>"
msgstr ""
- "<![CDATA[<set name=\"participants\" table=\"PERSON_EVENT\" inverse=\"true\">\n"
- " <key column=\"EVENT_ID\"/>\n"
- " <many-to-many column=\"PERSON_ID\" class=\"Person\"/>\n"
- "</set>]]>"
-#: index.docbook:747
-msgid "This time we didnt' use a <emphasis>fetch</emphasis> query to initialize the collection. Hence, the call to its getter method will trigger an additional select to initialize it, so we can add an element to it. Monitor the SQL log and try to optimize this with an eager fetch."
-msgstr "Como ves, estos son mapeos normales de <literal>set</literal> en ambos documentos de mapeo. Nota que los nombres de columnas en <literal>key</literal> y <literal>many-to-many</literal> fueron permutados en ambos documentos de mapeo. Aquí la adición más importante es el atributo <literal>inverse=\"true\"</literal> en el elemento <literal>set</literal> del mapeo de colección de <literal>Event</literal>."
+#. Tag: para
+#: tutorial.xml:747
+#, no-c-format
+msgid ""
+"This time we didnt' use a <emphasis>fetch</emphasis> query to initialize the "
+"collection. Hence, the call to its getter method will trigger an additional "
+"select to initialize it, so we can add an element to it. Monitor the SQL log "
+"and try to optimize this with an eager fetch."
+msgstr ""
+"This time we didnt' use a <emphasis>fetch</emphasis> query to initialize the "
+"collection. Hence, the call to its getter method will trigger an additional "
+"select to initialize it, so we can add an element to it. Monitor the SQL log "
+"and try to optimize this with an eager fetch."
-#: index.docbook:757
+#. Tag: title
+#: tutorial.xml:757
+#, no-c-format
msgid "Bi-directional associations"
-msgstr "Lo que esto significa es que Hibernate debe tomar el otro lado - la clase <literal>Person</literal> - cuando necesite descubrir información sobre el enlace entre las dos. Esto será mucho más fácil de entender una vez que veas cómo se crea el enlace bidireccional entre nuestras dos entidades."
+msgstr "Asociaciones bidireccionales"
-#: index.docbook:759
-msgid "Next we are going to map a bi-directional association - making the association between person and event work from both sides in Java. Of course, the database schema doesn't change, we still have many-to-many multiplicity. A relational database is more flexible than a network programming language, so it doesn't need anything like a navigation direction - data can be viewed and retrieved in any possible way."
-msgstr "Trabajando enlaces bidireccionales"
+#. Tag: para
+#: tutorial.xml:759
+#, no-c-format
+msgid ""
+"Next we are going to map a bi-directional association - making the "
+"association between person and event work from both sides in Java. Of "
+"course, the database schema doesn't change, we still have many-to-many "
+"multiplicity. A relational database is more flexible than a network "
+"programming language, so it doesn't need anything like a navigation "
+"direction - data can be viewed and retrieved in any possible way."
+msgstr ""
+"A continuacion vamos a mapear una asociación bidireccional, haciendo que la "
+"asociación entre persona y evento funcione desde ambos lados en Java. Por "
+"supuesto, el esquema de base de datos no cambia; todavía necesitamos "
+"multiplicidad muchos-a-muchos. Una base de datos relacional es más flexible "
+"que un lenguaje de programación de red, así que no necesita nada parecido a "
+"una dirección de navegación; los datos pueden ser vistos y recuperados en "
+"cualquier forma posible."
-#: index.docbook:767
-msgid "First, add a collection of participants to the <literal>Event</literal> Event class:"
-msgstr "Primero, ten en mente que Hhibernate no afecta la semántica normal de Java. ¿Cómo hemos creado un enlace entre una <literal>Person</literal> y un <literal>Event</literal> en el ejemplo unidireccional? Hemos agregado una instancia de <literal>Event</literal> a la colección de referencias de eventos de una instancia de <literal>Person</literal>. De modo que, obviamente, si queremos que este enlace funcione bidireccionalmente, tenemos que hacer lo mismo del otro lado, agregando una referencia a <literal>Person</literal> a la colección en un <literal>Event</literal>. Este \"establecer el enlace a ambos lados\" es absolutamente necesario y nunca debes olvidar hacerlo."
+#. Tag: para
+#: tutorial.xml:767
+#, no-c-format
+msgid ""
+"First, add a collection of participants to the <literal>Event</literal> "
+"Event class:"
+msgstr ""
+"Primero agrega una colección de participantes a la clase de eventos "
+"<literal>Event</literal>:"
-#: index.docbook:771
+#. Tag: programlisting
+#: tutorial.xml:771
+#, no-c-format
msgid ""
- "<![CDATA[private Set participants = new HashSet();\n"
- "\n"
- "public Set getParticipants() {\n"
- " return participants;\n"
- "}\n"
- "\n"
- "public void setParticipants(Set participants) {\n"
- " this.participants = participants;\n"
- "}]]>"
-msgstr "Muchos desarrolladores programan a la defensiva y crean métodos de manejo de un enlace para establecer correctamente ambos lados, por ejemplo en <literal>Person</literal>:"
+"<![CDATA[private Set participants = new HashSet();\n"
+"\n"
+"public Set getParticipants() {\n"
+" return participants;\n"
+"}\n"
+"\n"
+"public void setParticipants(Set participants) {\n"
+" this.participants = participants;\n"
+"}]]>"
+msgstr ""
-#: index.docbook:773
-msgid "Now map this side of the association too, in <literal>Event.hbm.xml</literal>."
+#. Tag: para
+#: tutorial.xml:773
+#, no-c-format
+msgid ""
+"Now map this side of the association too, in <literal>Event.hbm.xml</"
+"literal>."
msgstr ""
- "<![CDATA[protected Set getEvents() {\n"
- " return events;\n"
- "}\n"
- "\n"
- "protected void setEvents(Set events) {\n"
- " this.events = events;\n"
- "}\n"
- "\n"
- "public void addToEvent(Event event) {\n"
- " this.getEvents().add(event);\n"
- " event.getParticipants().add(this);\n"
- "}\n"
- "\n"
- "public void removeFromEvent(Event event) {\n"
- " this.getEvents().remove(event);\n"
- " event.getParticipants().remove(this);\n"
- "}]]>"
+"Ahora mapea este lado de la asociación también, en <literal>Event.hbm.xml</"
+"literal>."
-#: index.docbook:777
+#. Tag: programlisting
+#: tutorial.xml:777
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"participants\" table=\"PERSON_EVENT\" inverse=\"true\">\n"
- " <key column=\"EVENT_ID\"/>\n"
- " <many-to-many column=\"PERSON_ID\" class=\"events.Person\"/>\n"
- "</set>]]>"
-msgstr "Nota que los métodos get y set para esta colección son ahora protegidos. Esto le permite a clases en el mismo paquete y a subclases acceder aún a los métodos, pero previene a cualquier otro de ensuciarse con la colección directamente (bueno, casi). Probablemente debas hacer lo mismo con la colección al otro lado."
+"<![CDATA[<set name=\"participants\" table=\"PERSON_EVENT\" inverse=\"true"
+"\">\n"
+" <key column=\"EVENT_ID\"/>\n"
+" <many-to-many column=\"PERSON_ID\" class=\"events.Person\"/>\n"
+"</set>]]>"
+msgstr ""
-#: index.docbook:779
-msgid "As you see, these are normal <literal>set</literal> mappings in both mapping documents. Notice that the column names in <literal>key</literal> and <literal>many-to-many</literal> are swapped in both mapping documents. The most important addition here is the <literal>inverse=\"true\"</literal> attribute in the <literal>set</literal> element of the <literal>Event</literal>'s collection mapping."
-msgstr "Y ¿qué del atributo de mapeo <literal>inverse</literal>? Para ti, y para Java, un enlace bidireccional es simplemente cuestión de establecer correctamente las referencias a ambos lados. Hibernate, sin embargo, no tiene suficiente información para arreglar correctamente sentencias <literal>INSERT</literal> y <literal>UPDATE</literal> de SQL (para evitar violación de restricciones), y necesita alguna ayuda para manejar asociaciones bidireccionales apropiadamente. El hacer un lado de la asociación <literal>inverse</literal> le dice a Hibernate que basicamente lo ignore, que lo considere un <emphasis>espejo</emphasis> del otro lado. Esto es todo lo necesario para que Hibernate resuelva todas las incidencias al transformar un modelo de navegación direccional a un esquema SQL de base de datos. Las reglas que tienes que recordar son directas: Todas las asociaciones bidireccionales necesitan uno de los lados como <literal>inverse</!
literal>. En una asociación uno-a-muchos debe ser el lado-de-muchos. En una asociación muchos-a-muchos, puedes tomar cualquier lado, no hay diferencia."
+#. Tag: para
+#: tutorial.xml:779
+#, no-c-format
+msgid ""
+"As you see, these are normal <literal>set</literal> mappings in both mapping "
+"documents. Notice that the column names in <literal>key</literal> and "
+"<literal>many-to-many</literal> are swapped in both mapping documents. The "
+"most important addition here is the <literal>inverse=\"true\"</literal> "
+"attribute in the <literal>set</literal> element of the <literal>Event</"
+"literal>'s collection mapping."
+msgstr ""
+"Como ves, estos son mapeos normales de <literal>set</literal> en ambos "
+"documentos de mapeo. Nota que los nombres de columnas en <literal>key</"
+"literal> y <literal>many-to-many</literal> fueron permutados en ambos "
+"documentos de mapeo. Aquí la adición más importante es el atributo "
+"<literal>inverse=\"true\"</literal> en el elemento <literal>set</literal> "
+"del mapeo de colección de <literal>Event</literal>."
-#: index.docbook:787
-msgid "What this means is that Hibernate should take the other side - the <literal>Person</literal> 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 "Summary"
+#. Tag: para
+#: tutorial.xml:787
+#, no-c-format
+msgid ""
+"What this means is that Hibernate should take the other side - the "
+"<literal>Person</literal> 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 ""
+"Lo que esto significa es que Hibernate debe tomar el otro lado - la clase "
+"<literal>Person</literal> - cuando necesite descubrir información sobre el "
+"enlace entre las dos. Esto será mucho más fácil de entender una vez que veas "
+"cómo se crea el enlace bidireccional entre nuestras dos entidades."
-#: index.docbook:796
+#. Tag: title
+#: tutorial.xml:796
+#, no-c-format
msgid "Working bi-directional links"
-msgstr "Este tutorial cubrió los fundamentos de escribir una simple aplicación independiente de Hibernate."
+msgstr "Trabajando enlaces bidireccionales"
-#: index.docbook:798
-msgid "First, keep in mind that Hibernate does not affect normal Java semantics. How did we create a link between a <literal>Person</literal> and an <literal>Event</literal> in the unidirectional example? We added an instance of <literal>Event</literal> to the collection of event references, of an instance of <literal>Person</literal>. So, obviously, if we want to make this link working bi-directional, we have to do the same on the other side - adding a <literal>Person</literal> reference to the collection in an <literal>Event</literal>. This \"setting the link on both sides\" is absolutely necessary and you should never forget doing it."
-msgstr "Si ya te sientes confidente con Hibernate, continúa navegando a través de la tabla de contenidos de la documentación de referencia para los temas que encuentres interesantes. Los más consultados son procesamiento transaccional (<xref linkend=\"transactions\"/>), rendimiento de recuperación (<xref linkend=\"performance\"/>), o el uso de la API (<xref linkend=\"objectstate\"/>) y las funcionalidades de consulta (<xref linkend=\"objectstate-querying\"/>)."
+#. Tag: para
+#: tutorial.xml:798
+#, 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</literal> and an "
+"<literal>Event</literal> in the unidirectional example? We added an instance "
+"of <literal>Event</literal> to the collection of event references, of an "
+"instance of <literal>Person</literal>. So, obviously, if we want to make "
+"this link working bi-directional, we have to do the same on the other side - "
+"adding a <literal>Person</literal> reference to the collection in an "
+"<literal>Event</literal>. This \"setting the link on both sides\" is "
+"absolutely necessary and you should never forget doing it."
+msgstr ""
+"Primero, ten en mente que Hhibernate no afecta la semántica normal de Java. "
+"¿Cómo hemos creado un enlace entre una <literal>Person</literal> y un "
+"<literal>Event</literal> en el ejemplo unidireccional? Hemos agregado una "
+"instancia de <literal>Event</literal> a la colección de referencias de "
+"eventos de una instancia de <literal>Person</literal>. De modo que, "
+"obviamente, si queremos que este enlace funcione bidireccionalmente, tenemos "
+"que hacer lo mismo del otro lado, agregando una referencia a "
+"<literal>Person</literal> a la colección en un <literal>Event</literal>. "
+"Este \"establecer el enlace a ambos lados\" es absolutamente necesario y "
+"nunca debes olvidar hacerlo."
-#: index.docbook:808
-msgid "Many developers program defensive and create link management methods to correctly set both sides, e.g. in <literal>Person</literal>:"
-msgstr "No olvides chequear el sitio web de Hibernate por más (especializados) tutoriales."
+#. Tag: para
+#: tutorial.xml:808
+#, no-c-format
+msgid ""
+"Many developers program defensive and create link management methods to "
+"correctly set both sides, e.g. in <literal>Person</literal>:"
+msgstr ""
+"Muchos desarrolladores programan a la defensiva y crean métodos de manejo de "
+"un enlace para establecer correctamente ambos lados, por ejemplo en "
+"<literal>Person</literal>:"
-#: index.docbook:813
+#. Tag: programlisting
+#: tutorial.xml:813
+#, no-c-format
msgid ""
- "<![CDATA[protected Set getEvents() {\n"
- " return events;\n"
- "}\n"
- "\n"
- "protected void setEvents(Set events) {\n"
- " this.events = events;\n"
- "}\n"
- "\n"
- "public void addToEvent(Event event) {\n"
- " this.getEvents().add(event);\n"
- " event.getParticipants().add(this);\n"
- "}\n"
- "\n"
- "public void removeFromEvent(Event event) {\n"
- " this.getEvents().remove(event);\n"
- " event.getParticipants().remove(this);\n"
- "}]]>"
+"<![CDATA[protected Set getEvents() {\n"
+" return events;\n"
+"}\n"
+"\n"
+"protected void setEvents(Set events) {\n"
+" this.events = events;\n"
+"}\n"
+"\n"
+"public void addToEvent(Event event) {\n"
+" this.getEvents().add(event);\n"
+" event.getParticipants().add(this);\n"
+"}\n"
+"\n"
+"public void removeFromEvent(Event event) {\n"
+" this.getEvents().remove(event);\n"
+" event.getParticipants().remove(this);\n"
+"}]]>"
msgstr ""
-#: index.docbook:815
-msgid "Notice that 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 messing with the collections directly (well, almost). You should probably do the same with the collection on the other side."
+#. Tag: para
+#: tutorial.xml:815
+#, no-c-format
+msgid ""
+"Notice that 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 messing with the collections "
+"directly (well, almost). You should probably do the same with the collection "
+"on the other side."
msgstr ""
+"Nota que los métodos get y set para esta colección son ahora protegidos. "
+"Esto le permite a clases en el mismo paquete y a subclases acceder aún a los "
+"métodos, pero previene a cualquier otro de ensuciarse con la colección "
+"directamente (bueno, casi). Probablemente debas hacer lo mismo con la "
+"colección al otro lado."
-#: index.docbook:822
-msgid "What about the <literal>inverse</literal> 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 doesn't have enough information to correctly arrange SQL <literal>INSERT</literal> and <literal>UPDATE</literal> statements (to avoid constraint violations), and needs some help to handle bi-directional associations properly. Making one side of the association <literal>inverse</literal> tells Hibernate to basically ignore it, to consider it a <emphasis>mirror</emphasis> of the other side. That's all that is necessary for Hibernate to work out all of the issues when transformation a directional navigation model to a SQL database schema. The rules you have to remember are straightforward: All bi-directional associations need one side as <literal>inverse</literal>. In a one-to-many association it has to be the many-side, in many-to-many association you can pick either side, there!
is no difference."
+#. Tag: para
+#: tutorial.xml:822
+#, no-c-format
+msgid ""
+"What about the <literal>inverse</literal> 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 doesn't have enough information "
+"to correctly arrange SQL <literal>INSERT</literal> and <literal>UPDATE</"
+"literal> statements (to avoid constraint violations), and needs some help to "
+"handle bi-directional associations properly. Making one side of the "
+"association <literal>inverse</literal> tells Hibernate to basically ignore "
+"it, to consider it a <emphasis>mirror</emphasis> of the other side. That's "
+"all that is necessary for Hibernate to work out all of the issues when "
+"transformation a directional navigation model to a SQL database schema. The "
+"rules you have to remember are straightforward: All bi-directional "
+"associations need one side as <literal>inverse</literal>. In a one-to-many "
+"association it has to be the many-side, in many-to-many association you can "
+"pick either side, there is no difference."
msgstr ""
+"Y ¿qué del atributo de mapeo <literal>inverse</literal>? Para ti, y para "
+"Java, un enlace bidireccional es simplemente cuestión de establecer "
+"correctamente las referencias a ambos lados. Hibernate, sin embargo, no "
+"tiene suficiente información para arreglar correctamente sentencias "
+"<literal>INSERT</literal> y <literal>UPDATE</literal> de SQL (para evitar "
+"violación de restricciones), y necesita alguna ayuda para manejar "
+"asociaciones bidireccionales apropiadamente. El hacer un lado de la "
+"asociación <literal>inverse</literal> le dice a Hibernate que basicamente lo "
+"ignore, que lo considere un <emphasis>espejo</emphasis> del otro lado. Esto "
+"es todo lo necesario para que Hibernate resuelva todas las incidencias al "
+"transformar un modelo de navegación direccional a un esquema SQL de base de "
+"datos. Las reglas que tienes que recordar son directas: Todas las "
+"asociaciones bidireccionales necesitan uno de los lados como "
+"<literal>inverse</literal>. En una asociación uno-a-muchos debe ser el lado-"
+"de-muchos. En una asociación muchos-a-muchos, puedes tomar cualquier lado, "
+"no hay diferencia."
-#: index.docbook:837
+#. Tag: para
+#: tutorial.xml:837
+#, no-c-format
msgid "Let's turn this into a small web application."
-msgstr ""
+msgstr "Let's turn this into a small web application."
-#: index.docbook:844
+#. Tag: title
+#: tutorial.xml:844
+#, no-c-format
msgid "Part 3 - The EventManager web application"
-msgstr ""
+msgstr "Part 3 - The EventManager web application"
-#: index.docbook:846
-msgid "A Hibernate web application uses <literal>Session</literal> and <literal>Transaction</literal> almost like a standalone application. However, some common patterns are useful. We now write an <literal>EventManagerServlet</literal>. This servlet can list all events stored in the database, and it provides an HTML form to enter new events."
+#. Tag: para
+#: tutorial.xml:846
+#, no-c-format
+msgid ""
+"A Hibernate web application uses <literal>Session</literal> and "
+"<literal>Transaction</literal> almost like a standalone application. "
+"However, some common patterns are useful. We now write an "
+"<literal>EventManagerServlet</literal>. This servlet can list all events "
+"stored in the database, and it provides an HTML form to enter new events."
msgstr ""
+"A Hibernate web application uses <literal>Session</literal> and "
+"<literal>Transaction</literal> almost like a standalone application. "
+"However, some common patterns are useful. We now write an "
+"<literal>EventManagerServlet</literal>. This servlet can list all events "
+"stored in the database, and it provides an HTML form to enter new events."
-#: index.docbook:854
+#. Tag: title
+#: tutorial.xml:854
+#, no-c-format
msgid "Writing the basic servlet"
-msgstr ""
+msgstr "Writing the basic servlet"
-#: index.docbook:856
-msgid "Create a new class in your source directory, in the <literal>events</literal> package:"
+#. Tag: para
+#: tutorial.xml:856
+#, no-c-format
+msgid ""
+"Create a new class in your source directory, in the <literal>events</"
+"literal> package:"
msgstr ""
+"Create a new class in your source directory, in the <literal>events</"
+"literal> package:"
-#: index.docbook:861
+#. Tag: programlisting
+#: tutorial.xml:861
+#, no-c-format
msgid ""
- "<![CDATA[package events;\n"
- "\n"
- "// Imports\n"
- "\n"
- "public class EventManagerServlet extends HttpServlet {\n"
- "\n"
- " // Servlet code\n"
- "}]]>"
+"<![CDATA[package events;\n"
+"\n"
+"// Imports\n"
+"\n"
+"public class EventManagerServlet extends HttpServlet {\n"
+"\n"
+" // Servlet code\n"
+"}]]>"
msgstr ""
-#: index.docbook:863
-msgid "The servlet handles HTTP <literal>GET</literal> requests only, hence, the method we implement is <literal>doGet()</literal>:"
+#. Tag: para
+#: tutorial.xml:863
+#, no-c-format
+msgid ""
+"The servlet handles HTTP <literal>GET</literal> requests only, hence, the "
+"method we implement is <literal>doGet()</literal>:"
msgstr ""
+"The servlet handles HTTP <literal>GET</literal> requests only, hence, the "
+"method we implement is <literal>doGet()</literal>:"
-#: index.docbook:868
+#. Tag: programlisting
+#: tutorial.xml:868
+#, no-c-format
msgid ""
- "<![CDATA[protected void doGet(HttpServletRequest request,\n"
- " HttpServletResponse response)\n"
- " throws ServletException, IOException {\n"
- "\n"
- " SimpleDateFormat dateFormatter = new SimpleDateFormat(\"dd.MM.yyyy\");\n"
- "\n"
- " try {\n"
- " // Begin unit of work\n"
- " HibernateUtil.getSessionFactory()\n"
- " .getCurrentSession().beginTransaction();\n"
- "\n"
- " // Process request and render page...\n"
- "\n"
- " // End unit of work\n"
- " HibernateUtil.getSessionFactory()\n"
- " .getCurrentSession().getTransaction().commit();\n"
- "\n"
- " } catch (Exception ex) {\n"
- " HibernateUtil.getSessionFactory()\n"
- " .getCurrentSession().getTransaction().rollback();\n"
- " throw new ServletException(ex);\n"
- " }\n"
- "\n"
- "}]]>"
+"<![CDATA[protected void doGet(HttpServletRequest request,\n"
+" HttpServletResponse response)\n"
+" throws ServletException, IOException {\n"
+"\n"
+" SimpleDateFormat dateFormatter = new SimpleDateFormat(\"dd.MM.yyyy\");\n"
+"\n"
+" try {\n"
+" // Begin unit of work\n"
+" HibernateUtil.getSessionFactory()\n"
+" .getCurrentSession().beginTransaction();\n"
+"\n"
+" // Process request and render page...\n"
+"\n"
+" // End unit of work\n"
+" HibernateUtil.getSessionFactory()\n"
+" .getCurrentSession().getTransaction().commit();\n"
+"\n"
+" } catch (Exception ex) {\n"
+" HibernateUtil.getSessionFactory()\n"
+" .getCurrentSession().getTransaction().rollback();\n"
+" throw new ServletException(ex);\n"
+" }\n"
+"\n"
+"}]]>"
msgstr ""
-#: index.docbook:870
-msgid "The pattern we are applying here is called <emphasis>session-per-request</emphasis>. When a request hits the servlet, a new Hibernate <literal>Session</literal> is opened through the first call to <literal>getCurrentSession()</literal> on the <literal>SessionFactory</literal>. Then a database transaction is started—all data access as to occur inside a transaction, no matter if data is read or written (we don't use the auto-commit mode in applications)."
+#. Tag: para
+#: tutorial.xml:870
+#, fuzzy, no-c-format
+msgid ""
+"The pattern we are applying here is called <emphasis>session-per-request</"
+"emphasis>. When a request hits the servlet, a new Hibernate "
+"<literal>Session</literal> is opened through the first call to "
+"<literal>getCurrentSession()</literal> on the <literal>SessionFactory</"
+"literal>. Then a database transaction is started—all data access as to "
+"occur inside a transaction, no matter if data is read or written (we don't "
+"use the auto-commit mode in applications)."
msgstr ""
+"The pattern we are applying here is called <emphasis>session-per-request</"
+"emphasis>. When a request hits the servlet, a new Hibernate "
+"<literal>Session</literal> is opened through the first call to "
+"<literal>getCurrentSession()</literal> on the <literal>SessionFactory</"
+"literal>. Then a database transaction is started—all data access as to "
+"occur inside a transaction, no matter if data is read or written (we don't "
+"use the auto-commit mode in applications)."
-#: index.docbook:879
-msgid "Do <emphasis>not</emphasis> use a new Hibernate <literal>Session</literal> for every database operation. Use one Hibernate <literal>Session</literal> that is scoped to the whole request. Use <literal>getCurrentSession()</literal>, so that it is automatically bound to the current Java thread."
+#. Tag: para
+#: tutorial.xml:879
+#, no-c-format
+msgid ""
+"Do <emphasis>not</emphasis> use a new Hibernate <literal>Session</literal> "
+"for every database operation. Use one Hibernate <literal>Session</literal> "
+"that is scoped to the whole request. Use <literal>getCurrentSession()</"
+"literal>, so that it is automatically bound to the current Java thread."
msgstr ""
+"Do <emphasis>not</emphasis> use a new Hibernate <literal>Session</literal> "
+"for every database operation. Use one Hibernate <literal>Session</literal> "
+"that is scoped to the whole request. Use <literal>getCurrentSession()</"
+"literal>, so that it is automatically bound to the current Java thread."
-#: index.docbook:886
-msgid "Next, the possible actions of the request are processed and the response HTML is rendered. We'll get to that part soon."
+#. Tag: para
+#: tutorial.xml:886
+#, no-c-format
+msgid ""
+"Next, the possible actions of the request are processed and the response "
+"HTML is rendered. We'll get to that part soon."
msgstr ""
+"Next, the possible actions of the request are processed and the response "
+"HTML is rendered. We'll get to that part soon."
-#: index.docbook:891
-msgid "Finally, the unit of work ends when processing and rendering is complete. If any problem occured during processing or rendering, an exception will be thrown and the database transaction rolled back. This completes the <literal>session-per-request</literal> 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</emphasis>—you'll need it as soon as you consider rendering your view in JSP, not in a servlet."
+#. Tag: para
+#: tutorial.xml:891
+#, fuzzy, no-c-format
+msgid ""
+"Finally, the unit of work ends when processing and rendering is complete. If "
+"any problem occured during processing or rendering, an exception will be "
+"thrown and the database transaction rolled back. This completes the "
+"<literal>session-per-request</literal> 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</emphasis>—you'll need it as "
+"soon as you consider rendering your view in JSP, not in a servlet."
msgstr ""
+"Finally, the unit of work ends when processing and rendering is complete. If "
+"any problem occured during processing or rendering, an exception will be "
+"thrown and the database transaction rolled back. This completes the "
+"<literal>session-per-request</literal> 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</emphasis>—you'll need it as "
+"soon as you consider rendering your view in JSP, not in a servlet."
-#: index.docbook:905
+#. Tag: title
+#: tutorial.xml:905
+#, no-c-format
msgid "Processing and rendering"
-msgstr ""
+msgstr "Processing and rendering"
-#: index.docbook:907
-msgid "Let's implement the processing of the request and rendering of the page."
+#. Tag: para
+#: tutorial.xml:907
+#, no-c-format
+msgid ""
+"Let's implement the processing of the request and rendering of the page."
msgstr ""
+"Let's implement the processing of the request and rendering of the page."
-#: index.docbook:911
+#. Tag: programlisting
+#: tutorial.xml:911
+#, no-c-format
msgid ""
- "<![CDATA[// Write HTML header\n"
- "PrintWriter out = response.getWriter();\n"
- "out.println(\"<html><head><title>Event Manager</title></head><body>\");\n"
- "\n"
- "// Handle actions\n"
- "if ( \"store\".equals(request.getParameter(\"action\")) ) {\n"
- "\n"
- " String eventTitle = request.getParameter(\"eventTitle\");\n"
- " String eventDate = request.getParameter(\"eventDate\");\n"
- "\n"
- " if ( \"\".equals(eventTitle) || \"\".equals(eventDate) ) {\n"
- " out.println(\"<b><i>Please enter event title and date.</i></b>\");\n"
- " } else {\n"
- " createAndStoreEvent(eventTitle, dateFormatter.parse(eventDate));\n"
- " out.println(\"<b><i>Added event.</i></b>\");\n"
- " }\n"
- "}\n"
- "\n"
- "// Print page\n"
- "printEventForm(out);\n"
- "listEvents(out, dateFormatter);\n"
- "\n"
- "// Write HTML footer\n"
- "out.println(\"</body></html>\");\n"
- "out.flush();\n"
- "out.close();]]>"
+"<![CDATA[// Write HTML header\n"
+"PrintWriter out = response.getWriter();\n"
+"out.println(\"<html><head><title>Event Manager</title></head><body>\");\n"
+"\n"
+"// Handle actions\n"
+"if ( \"store\".equals(request.getParameter(\"action\")) ) {\n"
+"\n"
+" String eventTitle = request.getParameter(\"eventTitle\");\n"
+" String eventDate = request.getParameter(\"eventDate\");\n"
+"\n"
+" if ( \"\".equals(eventTitle) || \"\".equals(eventDate) ) {\n"
+" out.println(\"<b><i>Please enter event title and date.</i></b>\");\n"
+" } else {\n"
+" createAndStoreEvent(eventTitle, dateFormatter.parse(eventDate));\n"
+" out.println(\"<b><i>Added event.</i></b>\");\n"
+" }\n"
+"}\n"
+"\n"
+"// Print page\n"
+"printEventForm(out);\n"
+"listEvents(out, dateFormatter);\n"
+"\n"
+"// Write HTML footer\n"
+"out.println(\"</body></html>\");\n"
+"out.flush();\n"
+"out.close();]]>"
msgstr ""
-#: index.docbook:913
-msgid "Granted, this coding style with a mix of Java and HTML would not scale in a more complex application—keep in mind that we are only illustrating basic Hibernate concepts in this tutorial. The code prints an HTML header and a footer. Inside this page, an HTML form for event entry and a list of all events in the database are printed. The first method is trivial and only outputs HTML:"
+#. Tag: para
+#: tutorial.xml:913
+#, fuzzy, no-c-format
+msgid ""
+"Granted, this coding style with a mix of Java and HTML would not scale in a "
+"more complex application—keep in mind that we are only illustrating "
+"basic Hibernate concepts in this tutorial. The code prints an HTML header "
+"and a footer. Inside this page, an HTML form for event entry and a list of "
+"all events in the database are printed. The first method is trivial and only "
+"outputs HTML:"
msgstr ""
+"Granted, this coding style with a mix of Java and HTML would not scale in a "
+"more complex application—keep in mind that we are only illustrating "
+"basic Hibernate concepts in this tutorial. The code prints an HTML header "
+"and a footer. Inside this page, an HTML form for event entry and a list of "
+"all events in the database are printed. The first method is trivial and only "
+"outputs HTML:"
-#: index.docbook:922
+#. Tag: programlisting
+#: tutorial.xml:922
+#, no-c-format
msgid ""
- "<![CDATA[private void printEventForm(PrintWriter out) {\n"
- " out.println(\"<h2>Add new event:</h2>\");\n"
- " out.println(\"<form>\");\n"
- " out.println(\"Title: <input name='eventTitle' length='50'/><br/>\");\n"
- " out.println(\"Date (e.g. 24.12.2009): <input name='eventDate' length='10'/><br/>\");\n"
- " out.println(\"<input type='submit' name='action' value='store'/>\");\n"
- " out.println(\"</form>\");\n"
- "}]]>"
+"<![CDATA[private void printEventForm(PrintWriter out) {\n"
+" out.println(\"<h2>Add new event:</h2>\");\n"
+" out.println(\"<form>\");\n"
+" out.println(\"Title: <input name='eventTitle' length='50'/><br/>\");\n"
+" out.println(\"Date (e.g. 24.12.2009): <input name='eventDate' "
+"length='10'/><br/>\");\n"
+" out.println(\"<input type='submit' name='action' value='store'/>\");\n"
+" out.println(\"</form>\");\n"
+"}]]>"
msgstr ""
-#: index.docbook:924
-msgid "The <literal>listEvents()</literal> method uses the Hibernate <literal>Session</literal> bound to the current thread to execute a query:"
+#. Tag: para
+#: tutorial.xml:924
+#, no-c-format
+msgid ""
+"The <literal>listEvents()</literal> method uses the Hibernate "
+"<literal>Session</literal> bound to the current thread to execute a query:"
msgstr ""
+"The <literal>listEvents()</literal> method uses the Hibernate "
+"<literal>Session</literal> bound to the current thread to execute a query:"
-#: index.docbook:930
+#. Tag: programlisting
+#: tutorial.xml:930
+#, no-c-format
msgid ""
- "<![CDATA[private void listEvents(PrintWriter out, SimpleDateFormat dateFormatter) {\n"
- "\n"
- " List result = HibernateUtil.getSessionFactory()\n"
- " .getCurrentSession().createCriteria(Event.class).list();\n"
- " if (result.size() > 0) {\n"
- " out.println(\"<h2>Events in database:</h2>\");\n"
- " out.println(\"<table border='1'>\");\n"
- " out.println(\"<tr>\");\n"
- " out.println(\"<th>Event title</th>\");\n"
- " out.println(\"<th>Event date</th>\");\n"
- " out.println(\"</tr>\");\n"
- " for (Iterator it = result.iterator(); it.hasNext();) {\n"
- " Event event = (Event) it.next();\n"
- " out.println(\"<tr>\");\n"
- " out.println(\"<td>\" + event.getTitle() + \"</td>\");\n"
- " out.println(\"<td>\" + dateFormatter.format(event.getDate()) + \"</td>\");\n"
- " out.println(\"</tr>\");\n"
- " }\n"
- " out.println(\"</table>\");\n"
- " }\n"
- "}]]>"
+"<![CDATA[private void listEvents(PrintWriter out, SimpleDateFormat "
+"dateFormatter) {\n"
+"\n"
+" List result = HibernateUtil.getSessionFactory()\n"
+" .getCurrentSession().createCriteria(Event.class).list"
+"();\n"
+" if (result.size() > 0) {\n"
+" out.println(\"<h2>Events in database:</h2>\");\n"
+" out.println(\"<table border='1'>\");\n"
+" out.println(\"<tr>\");\n"
+" out.println(\"<th>Event title</th>\");\n"
+" out.println(\"<th>Event date</th>\");\n"
+" out.println(\"</tr>\");\n"
+" for (Iterator it = result.iterator(); it.hasNext();) {\n"
+" Event event = (Event) it.next();\n"
+" out.println(\"<tr>\");\n"
+" out.println(\"<td>\" + event.getTitle() + \"</td>\");\n"
+" out.println(\"<td>\" + dateFormatter.format(event.getDate()) + "
+"\"</td>\");\n"
+" out.println(\"</tr>\");\n"
+" }\n"
+" out.println(\"</table>\");\n"
+" }\n"
+"}]]>"
msgstr ""
-#: index.docbook:932
-msgid "Finally, the <literal>store</literal> action is dispatched to the <literal>createAndStoreEvent()</literal> method, which also uses the <literal>Session</literal> of the current thread:"
+#. Tag: para
+#: tutorial.xml:932
+#, no-c-format
+msgid ""
+"Finally, the <literal>store</literal> action is dispatched to the "
+"<literal>createAndStoreEvent()</literal> method, which also uses the "
+"<literal>Session</literal> of the current thread:"
msgstr ""
+"Finally, the <literal>store</literal> action is dispatched to the "
+"<literal>createAndStoreEvent()</literal> method, which also uses the "
+"<literal>Session</literal> of the current thread:"
-#: index.docbook:938
+#. Tag: programlisting
+#: tutorial.xml:938
+#, no-c-format
msgid ""
- "<![CDATA[protected void createAndStoreEvent(String title, Date theDate) {\n"
- " Event theEvent = new Event();\n"
- " theEvent.setTitle(title);\n"
- " theEvent.setDate(theDate);\n"
- "\n"
- " HibernateUtil.getSessionFactory()\n"
- " .getCurrentSession().save(theEvent);\n"
- "}]]>"
+"<![CDATA[protected void createAndStoreEvent(String title, Date theDate) {\n"
+" Event theEvent = new Event();\n"
+" theEvent.setTitle(title);\n"
+" theEvent.setDate(theDate);\n"
+"\n"
+" HibernateUtil.getSessionFactory()\n"
+" .getCurrentSession().save(theEvent);\n"
+"}]]>"
msgstr ""
-#: index.docbook:940
-msgid "That's it, the servlet is complete. A request to the servlet will be processed in a single <literal>Session</literal> and <literal>Transaction</literal>. As earlier in the standalone application, Hibernate can automatically bind these ojects to the current thread of execution. This gives you the freedom to layer your code and access the <literal>SessionFactory</literal> in any way you like. Usually you'd 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."
+#. Tag: para
+#: tutorial.xml:940
+#, no-c-format
+msgid ""
+"That's it, the servlet is complete. A request to the servlet will be "
+"processed in a single <literal>Session</literal> and <literal>Transaction</"
+"literal>. As earlier in the standalone application, Hibernate can "
+"automatically bind these ojects to the current thread of execution. This "
+"gives you the freedom to layer your code and access the "
+"<literal>SessionFactory</literal> in any way you like. Usually you'd 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 ""
+"That's it, the servlet is complete. A request to the servlet will be "
+"processed in a single <literal>Session</literal> and <literal>Transaction</"
+"literal>. As earlier in the standalone application, Hibernate can "
+"automatically bind these ojects to the current thread of execution. This "
+"gives you the freedom to layer your code and access the "
+"<literal>SessionFactory</literal> in any way you like. Usually you'd 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."
-#: index.docbook:954
+#. Tag: title
+#: tutorial.xml:954
+#, no-c-format
msgid "Deploying and testing"
-msgstr ""
+msgstr "Deploying and testing"
-#: index.docbook:956
-msgid "To deploy this application you have to create a web archive, a WAR. Add the following Ant target to your <literal>build.xml</literal>:"
+#. Tag: para
+#: tutorial.xml:956
+#, no-c-format
+msgid ""
+"To deploy this application you have to create a web archive, a WAR. Add the "
+"following Ant target to your <literal>build.xml</literal>:"
msgstr ""
+"To deploy this application you have to create a web archive, a WAR. Add the "
+"following Ant target to your <literal>build.xml</literal>:"
-#: index.docbook:961
+#. Tag: programlisting
+#: tutorial.xml:961
+#, no-c-format
msgid ""
- "<![CDATA[<target name=\"war\" depends=\"compile\">\n"
- " <war destfile=\"hibernate-tutorial.war\" webxml=\"web.xml\">\n"
- " <lib dir=\"${librarydir}\">\n"
- " <exclude name=\"jsdk*.jar\"/>\n"
- " </lib>\n"
- "\n"
- " <classes dir=\"${targetdir}\"/>\n"
- " </war>\n"
- "</target>]]>"
+"<![CDATA[<target name=\"war\" depends=\"compile\">\n"
+" <war destfile=\"hibernate-tutorial.war\" webxml=\"web.xml\">\n"
+" <lib dir=\"${librarydir}\">\n"
+" <exclude name=\"jsdk*.jar\"/>\n"
+" </lib>\n"
+"\n"
+" <classes dir=\"${targetdir}\"/>\n"
+" </war>\n"
+"</target>]]>"
msgstr ""
-#: index.docbook:963
-msgid "This target creates a file called <literal>hibernate-tutorial.war</literal> in your project directory. It packages all libraries and the <literal>web.xml</literal> descriptor, which is expected in the base directory of your project:"
+#. Tag: para
+#: tutorial.xml:963
+#, no-c-format
+msgid ""
+"This target creates a file called <literal>hibernate-tutorial.war</literal> "
+"in your project directory. It packages all libraries and the <literal>web."
+"xml</literal> descriptor, which is expected in the base directory of your "
+"project:"
msgstr ""
+"This target creates a file called <literal>hibernate-tutorial.war</literal> "
+"in your project directory. It packages all libraries and the <literal>web."
+"xml</literal> descriptor, which is expected in the base directory of your "
+"project:"
-#: index.docbook:969
+#. Tag: programlisting
+#: tutorial.xml:969
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
- "<web-app version=\"2.4\"\n"
- " xmlns=\"http://java.sun.com/xml/ns/j2ee\"\n"
- " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
- " xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd\">\n"
- "\n"
- " <servlet>\n"
- " <servlet-name>Event Manager</servlet-name>\n"
- " <servlet-class>events.EventManagerServlet</servlet-class>\n"
- " </servlet>\n"
- "\n"
- " <servlet-mapping>\n"
- " <servlet-name>Event Manager</servlet-name>\n"
- " <url-pattern>/eventmanager</url-pattern>\n"
- " </servlet-mapping>\n"
- "</web-app>]]>"
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<web-app version=\"2.4\"\n"
+" xmlns=\"http://java.sun.com/xml/ns/j2ee\"\n"
+" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+" xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee http://java.sun.com/"
+"xml/ns/j2ee/web-app_2_4.xsd\">\n"
+"\n"
+" <servlet>\n"
+" <servlet-name>Event Manager</servlet-name>\n"
+" <servlet-class>events.EventManagerServlet</servlet-class>\n"
+" </servlet>\n"
+"\n"
+" <servlet-mapping>\n"
+" <servlet-name>Event Manager</servlet-name>\n"
+" <url-pattern>/eventmanager</url-pattern>\n"
+" </servlet-mapping>\n"
+"</web-app>]]>"
msgstr ""
-#: index.docbook:971
-msgid "Before you compile and deploy the web application, note that an additional library is required: <literal>jsdk.jar</literal>. 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."
+#. Tag: para
+#: tutorial.xml:971
+#, no-c-format
+msgid ""
+"Before you compile and deploy the web application, note that an additional "
+"library is required: <literal>jsdk.jar</literal>. 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 ""
+"Before you compile and deploy the web application, note that an additional "
+"library is required: <literal>jsdk.jar</literal>. 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."
-#: index.docbook:979
-msgid "To build and deploy call <literal>ant war</literal> in your project directory and copy the <literal>hibernate-tutorial.war</literal> file into your Tomcat <literal>webapp</literal> directory. If you don't have Tomcat installed, download it and follow the installation instructions. You don't have to change any Tomcat configuration to deploy this application though."
+#. Tag: para
+#: tutorial.xml:979
+#, no-c-format
+msgid ""
+"To build and deploy call <literal>ant war</literal> in your project "
+"directory and copy the <literal>hibernate-tutorial.war</literal> file into "
+"your Tomcat <literal>webapp</literal> directory. If you don't have Tomcat "
+"installed, download it and follow the installation instructions. You don't "
+"have to change any Tomcat configuration to deploy this application though."
msgstr ""
+"To build and deploy call <literal>ant war</literal> in your project "
+"directory and copy the <literal>hibernate-tutorial.war</literal> file into "
+"your Tomcat <literal>webapp</literal> directory. If you don't have Tomcat "
+"installed, download it and follow the installation instructions. You don't "
+"have to change any Tomcat configuration to deploy this application though."
-#: index.docbook:987
-msgid "Once deployed and Tomcat is running, access the application at <literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal>. Make sure you watch the Tomcat log to see Hibernate initialize when the first request hits your servlet (the static initializer in <literal>HibernateUtil</literal> is called) and to get the detailed output if any exceptions occurs."
+#. Tag: para
+#: tutorial.xml:987
+#, no-c-format
+msgid ""
+"Once deployed and Tomcat is running, access the application at "
+"<literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal>. "
+"Make sure you watch the Tomcat log to see Hibernate initialize when the "
+"first request hits your servlet (the static initializer in "
+"<literal>HibernateUtil</literal> is called) and to get the detailed output "
+"if any exceptions occurs."
msgstr ""
+"Once deployed and Tomcat is running, access the application at "
+"<literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal>. "
+"Make sure you watch the Tomcat log to see Hibernate initialize when the "
+"first request hits your servlet (the static initializer in "
+"<literal>HibernateUtil</literal> is called) and to get the detailed output "
+"if any exceptions occurs."
-#: index.docbook:1000
+#. Tag: title
+#: tutorial.xml:1000
+#, no-c-format
msgid "Summary"
-msgstr ""
+msgstr "Summary"
-#: index.docbook:1002
-msgid "This tutorial covered the basics of writing a simple standalone Hibernate application and a small web application."
+#. Tag: para
+#: tutorial.xml:1002
+#, no-c-format
+msgid ""
+"This tutorial covered the basics of writing a simple standalone Hibernate "
+"application and a small web application."
msgstr ""
+"Este tutorial cubrió los fundamentos de escribir una simple aplicación "
+"independiente de Hibernate."
-#: index.docbook:1007
-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\"/>)."
+#. Tag: para
+#: tutorial.xml:1007
+#, no-c-format
+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 ""
+"Si ya te sientes confidente con Hibernate, continúa navegando a través de la "
+"tabla de contenidos de la documentación de referencia para los temas que "
+"encuentres interesantes. Los más consultados son procesamiento transaccional "
+"(<xref linkend=\"transactions\"/>), rendimiento de recuperación (<xref "
+"linkend=\"performance\"/>), o el uso de la API (<xref linkend=\"objectstate"
+"\"/>) y las funcionalidades de consulta (<xref linkend=\"objectstate-querying"
+"\"/>)."
-#: index.docbook:1015
-msgid "Don't forget to check the Hibernate website for more (specialized) tutorials."
+#. Tag: para
+#: tutorial.xml:1015
+#, no-c-format
+msgid ""
+"Don't forget to check the Hibernate website for more (specialized) tutorials."
msgstr ""
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+"No olvides chequear el sitio web de Hibernate por más (especializados) "
+"tutoriales."
Modified: core/trunk/documentation/manual/translations/es-ES/content/xml.po
===================================================================
--- core/trunk/documentation/manual/translations/es-ES/content/xml.po 2007-10-27 12:53:39 UTC (rev 14153)
+++ core/trunk/documentation/manual/translations/es-ES/content/xml.po 2007-10-27 12:56:49 UTC (rev 14154)
@@ -1,420 +1,448 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:48+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: xml.xml:5
+#, no-c-format
msgid "XML Mapping"
msgstr "Mapeo XML"
-#: index.docbook:7
-msgid "Note that this is an experimental feature in Hibernate 3.0 and is under extremely active development."
-msgstr "Nota que esta es una funcionalidad experimental en Hibernate 3.0 y está bajo un desarrollo extremadamente activo."
+#. Tag: emphasis
+#: xml.xml:7
+#, no-c-format
+msgid ""
+"Note that this is an experimental feature in Hibernate 3.0 and is under "
+"extremely active development."
+msgstr ""
+"Nota que esta es una funcionalidad experimental en Hibernate 3.0 y está bajo "
+"un desarrollo extremadamente activo."
-#: index.docbook:13
+#. Tag: title
+#: xml.xml:13
+#, no-c-format
msgid "Working with XML data"
msgstr "Trabajando con datos XML"
-#: index.docbook:15
-msgid "Hibernate lets you work with persistent XML data in much the same way you work with persistent POJOs. A parsed XML tree can be thought of as just another way to represent the relational data at the object level, instead of POJOs."
-msgstr "Hibernate te permite trabajar con datos XML persistentes en casi la misma forma que trabajas con POJOs persistentes. Un árbol XML analizado (parsed) puede ser pensado como sólo otra forma de representar los datos relacionales a nivel de objetos, en vez de POJOs."
+#. Tag: para
+#: xml.xml:15
+#, no-c-format
+msgid ""
+"Hibernate lets you work with persistent XML data in much the same way you "
+"work with persistent POJOs. A parsed XML tree can be thought of as just "
+"another way to represent the relational data at the object level, instead of "
+"POJOs."
+msgstr ""
+"Hibernate te permite trabajar con datos XML persistentes en casi la misma "
+"forma que trabajas con POJOs persistentes. Un árbol XML analizado (parsed) "
+"puede ser pensado como sólo otra forma de representar los datos relacionales "
+"a nivel de objetos, en vez de POJOs."
-#: index.docbook:22
-msgid "Hibernate supports dom4j as API for manipulating XML trees. You can write queries that retrieve dom4j trees from the database and have any modification you make to the tree automatically synchronized to the database. You can even take an XML document, parse it using dom4j, and write it to the database with any of Hibernate's basic operations: <literal>persist(), saveOrUpdate(), merge(), delete(), replicate()</literal> (merging is not yet supported)."
-msgstr "Hibernate soporta dom4j como API para manipular árboles XML. Puedes escribir consultas que traigan árboles dom4j de la base de datos y tener cualquier modificación que hagas al árbol sincronizada automáticamente a la base de datos. Puedes incluso tomar un documento XML, analizarlo usando dom4j, y escribirlo a la base de datos con cualquiera de las operaciones básicas de Hibernate: <literal>persist(), saveOrUpdate(), merge(), delete(), replicate()</literal> (la fusión no está aún soportada)."
+#. Tag: para
+#: xml.xml:22
+#, no-c-format
+msgid ""
+"Hibernate supports dom4j as API for manipulating XML trees. You can write "
+"queries that retrieve dom4j trees from the database and have any "
+"modification you make to the tree automatically synchronized to the "
+"database. You can even take an XML document, parse it using dom4j, and write "
+"it to the database with any of Hibernate's basic operations: <literal>persist"
+"(), saveOrUpdate(), merge(), delete(), replicate()</literal> (merging is not "
+"yet supported)."
+msgstr ""
+"Hibernate soporta dom4j como API para manipular árboles XML. Puedes escribir "
+"consultas que traigan árboles dom4j de la base de datos y tener cualquier "
+"modificación que hagas al árbol sincronizada automáticamente a la base de "
+"datos. Puedes incluso tomar un documento XML, analizarlo usando dom4j, y "
+"escribirlo a la base de datos con cualquiera de las operaciones básicas de "
+"Hibernate: <literal>persist(), saveOrUpdate(), merge(), delete(), replicate()"
+"</literal> (la fusión no está aún soportada)."
-#: index.docbook:32
-msgid "This feature has many applications including data import/export, externalization of entity data via JMS or SOAP and XSLT-based reporting."
-msgstr "Esta funcionalidad tiene muchas aplicaciones incluyendo la importación/exportación de datos, externalización de datos de entidad vía JMS o SOAP y reportes basados en XSLT."
+#. Tag: para
+#: xml.xml:32
+#, no-c-format
+msgid ""
+"This feature has many applications including data import/export, "
+"externalization of entity data via JMS or SOAP and XSLT-based reporting."
+msgstr ""
+"Esta funcionalidad tiene muchas aplicaciones incluyendo la importación/"
+"exportación de datos, externalización de datos de entidad vía JMS o SOAP y "
+"reportes basados en XSLT."
-#: index.docbook:37
-msgid "A single mapping may be used to simultaneously map properties of a class and nodes of an XML document to the database, or, if there is no class to map, it may be used to map just the XML."
-msgstr "Un solo mapeo puede ser usado para mapear simultáneamente las propiedades de una clase y los nodos de un documento XML a la base de datos, o, si no hay ninguna clase a mapear, puede ser usado para mapear sólo el XML."
+#. Tag: para
+#: xml.xml:37
+#, no-c-format
+msgid ""
+"A single mapping may be used to simultaneously map properties of a class and "
+"nodes of an XML document to the database, or, if there is no class to map, "
+"it may be used to map just the XML."
+msgstr ""
+"Un solo mapeo puede ser usado para mapear simultáneamente las propiedades de "
+"una clase y los nodos de un documento XML a la base de datos, o, si no hay "
+"ninguna clase a mapear, puede ser usado para mapear sólo el XML."
-#: index.docbook:44
+#. Tag: title
+#: xml.xml:44
+#, no-c-format
msgid "Specifying XML and class mapping together"
msgstr "Especificando los mapeos de XML y de clase juntos"
-#: index.docbook:46
+#. Tag: para
+#: xml.xml:46
+#, no-c-format
msgid "Here is an example of mapping a POJO and XML simultaneously:"
msgstr "He aquí un ejemplo de mapear un POJO y XML simultáneamente:"
-#: index.docbook:50
+#. Tag: programlisting
+#: xml.xml:50
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Account\" \n"
- " table=\"ACCOUNTS\" \n"
- " node=\"account\">\n"
- " \n"
- " <id name=\"accountId\" \n"
- " column=\"ACCOUNT_ID\" \n"
- " node=\"@id\"/>\n"
- " \n"
- " <many-to-one name=\"customer\" \n"
- " column=\"CUSTOMER_ID\" \n"
- " node=\"customer/@id\" \n"
- " embed-xml=\"false\"/>\n"
- " \n"
- " <property name=\"balance\" \n"
- " column=\"BALANCE\" \n"
- " node=\"balance\"/>\n"
- " \n"
- " ...\n"
- " \n"
- "</class>]]>"
+"<![CDATA[<class name=\"Account\" \n"
+" table=\"ACCOUNTS\" \n"
+" node=\"account\">\n"
+" \n"
+" <id name=\"accountId\" \n"
+" column=\"ACCOUNT_ID\" \n"
+" node=\"@id\"/>\n"
+" \n"
+" <many-to-one name=\"customer\" \n"
+" column=\"CUSTOMER_ID\" \n"
+" node=\"customer/@id\" \n"
+" embed-xml=\"false\"/>\n"
+" \n"
+" <property name=\"balance\" \n"
+" column=\"BALANCE\" \n"
+" node=\"balance\"/>\n"
+" \n"
+" ...\n"
+" \n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Account\" \n"
- " table=\"ACCOUNTS\" \n"
- " node=\"account\">\n"
- " \n"
- " <id name=\"accountId\" \n"
- " column=\"ACCOUNT_ID\" \n"
- " node=\"@id\"/>\n"
- " \n"
- " <many-to-one name=\"customer\" \n"
- " column=\"CUSTOMER_ID\" \n"
- " node=\"customer/@id\" \n"
- " embed-xml=\"false\"/>\n"
- " \n"
- " <property name=\"balance\" \n"
- " column=\"BALANCE\" \n"
- " node=\"balance\"/>\n"
- " \n"
- " ...\n"
- " \n"
- "</class>]]>"
-#: index.docbook:54
+#. Tag: title
+#: xml.xml:54
+#, no-c-format
msgid "Specifying only an XML mapping"
msgstr "Especificando sólo un mapeo XML"
-#: index.docbook:56
+#. Tag: para
+#: xml.xml:56
+#, no-c-format
msgid "Here is an example where there is no POJO class:"
msgstr "He aquí un ejemplo donde no hay ninguna clase POJO:"
-#: index.docbook:60
+#. Tag: programlisting
+#: xml.xml:60
+#, no-c-format
msgid ""
- "<![CDATA[<class entity-name=\"Account\" \n"
- " table=\"ACCOUNTS\" \n"
- " node=\"account\">\n"
- " \n"
- " <id name=\"id\" \n"
- " column=\"ACCOUNT_ID\" \n"
- " node=\"@id\" \n"
- " type=\"string\"/>\n"
- " \n"
- " <many-to-one name=\"customerId\" \n"
- " column=\"CUSTOMER_ID\" \n"
- " node=\"customer/@id\" \n"
- " embed-xml=\"false\" \n"
- " entity-name=\"Customer\"/>\n"
- " \n"
- " <property name=\"balance\" \n"
- " column=\"BALANCE\" \n"
- " node=\"balance\" \n"
- " type=\"big_decimal\"/>\n"
- " \n"
- " ...\n"
- " \n"
- "</class>]]>"
+"<![CDATA[<class entity-name=\"Account\" \n"
+" table=\"ACCOUNTS\" \n"
+" node=\"account\">\n"
+" \n"
+" <id name=\"id\" \n"
+" column=\"ACCOUNT_ID\" \n"
+" node=\"@id\" \n"
+" type=\"string\"/>\n"
+" \n"
+" <many-to-one name=\"customerId\" \n"
+" column=\"CUSTOMER_ID\" \n"
+" node=\"customer/@id\" \n"
+" embed-xml=\"false\" \n"
+" entity-name=\"Customer\"/>\n"
+" \n"
+" <property name=\"balance\" \n"
+" column=\"BALANCE\" \n"
+" node=\"balance\" \n"
+" type=\"big_decimal\"/>\n"
+" \n"
+" ...\n"
+" \n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class entity-name=\"Account\" \n"
- " table=\"ACCOUNTS\" \n"
- " node=\"account\">\n"
- " \n"
- " <id name=\"id\" \n"
- " column=\"ACCOUNT_ID\" \n"
- " node=\"@id\" \n"
- " type=\"string\"/>\n"
- " \n"
- " <many-to-one name=\"customerId\" \n"
- " column=\"CUSTOMER_ID\" \n"
- " node=\"customer/@id\" \n"
- " embed-xml=\"false\" \n"
- " entity-name=\"Customer\"/>\n"
- " \n"
- " <property name=\"balance\" \n"
- " column=\"BALANCE\" \n"
- " node=\"balance\" \n"
- " type=\"big_decimal\"/>\n"
- " \n"
- " ...\n"
- " \n"
- "</class>]]>"
-#: index.docbook:62
-msgid "This mapping allows you to access the data as a dom4j tree, or as a graph of property name/value pairs (java <literal>Map</literal>s). The property names are purely logical constructs that may be referred to in HQL queries."
-msgstr "Este mapeo te permite acceder a los datos como un árbol dom4j, o como un grafo de pares nombre/valor de propiedad (<literal>Map</literal>s de Java). Los nombres de propiedades son construcciones puramente lógicas a las que se puede hacer referencia en consultas HQL."
+#. Tag: para
+#: xml.xml:62
+#, no-c-format
+msgid ""
+"This mapping allows you to access the data as a dom4j tree, or as a graph of "
+"property name/value pairs (java <literal>Map</literal>s). The property names "
+"are purely logical constructs that may be referred to in HQL queries."
+msgstr ""
+"Este mapeo te permite acceder a los datos como un árbol dom4j, o como un "
+"grafo de pares nombre/valor de propiedad (<literal>Map</literal>s de Java). "
+"Los nombres de propiedades son construcciones puramente lógicas a las que se "
+"puede hacer referencia en consultas HQL."
-#: index.docbook:73
+#. Tag: title
+#: xml.xml:73
+#, no-c-format
msgid "XML mapping metadata"
msgstr "Mapeo de metadatos XML"
-#: index.docbook:75
-msgid "Many Hibernate mapping elements accept the <literal>node</literal> attribute. This let's you specify the name of an XML attribute or element that holds the property or entity data. The format of the <literal>node</literal> attribute must be one of the following:"
-msgstr "Muchos elementos de mapeo de Hibernate aceptan el atributo <literal>node</literal>. Esto te permite espcificar el nombre de un atributo o elemento XML que contenga los datos de la propiedad o entidad. El formato del atributo <literal>node</literal> debe ser uno de los siguientes:"
+#. Tag: para
+#: xml.xml:75
+#, no-c-format
+msgid ""
+"Many Hibernate mapping elements accept the <literal>node</literal> "
+"attribute. This let's you specify the name of an XML attribute or element "
+"that holds the property or entity data. The format of the <literal>node</"
+"literal> attribute must be one of the following:"
+msgstr ""
+"Muchos elementos de mapeo de Hibernate aceptan el atributo <literal>node</"
+"literal>. Esto te permite espcificar el nombre de un atributo o elemento XML "
+"que contenga los datos de la propiedad o entidad. El formato del atributo "
+"<literal>node</literal> debe ser uno de los siguientes:"
-#: index.docbook:84
+#. Tag: para
+#: xml.xml:84
+#, no-c-format
msgid "<literal>\"element-name\"</literal> - map to the named XML element"
msgstr "<literal>\"element-name\"</literal> - mapea al elemento XML mencionado"
-#: index.docbook:87
+#. Tag: para
+#: xml.xml:87
+#, no-c-format
msgid "<literal>\"@attribute-name\"</literal> - map to the named XML attribute"
-msgstr "<literal>\"@attribute-name\"</literal> - mapea al atributo XML mencionado"
+msgstr ""
+"<literal>\"@attribute-name\"</literal> - mapea al atributo XML mencionado"
-#: index.docbook:90
+#. Tag: para
+#: xml.xml:90
+#, no-c-format
msgid "<literal>\".\"</literal> - map to the parent element"
msgstr "<literal>\".\"</literal> - mapea al elemento padre"
-#: index.docbook:93
-msgid "<literal>\"element-name/@attribute-name\"</literal> - map to the named attribute of the named element"
-msgstr "<literal>\"element-name/@attribute-name\"</literal> - mapea al atributo mencionado del elemento mencionado"
+#. Tag: para
+#: xml.xml:93
+#, no-c-format
+msgid ""
+"<literal>\"element-name/@attribute-name\"</literal> - map to the named "
+"attribute of the named element"
+msgstr ""
+"<literal>\"element-name/@attribute-name\"</literal> - mapea al atributo "
+"mencionado del elemento mencionado"
-#: index.docbook:100
-msgid "For collections and single valued associations, there is an additional <literal>embed-xml</literal> attribute. If <literal>embed-xml=\"true\"</literal>, the default, the XML tree for the associated entity (or collection of value type) will be embedded directly in the XML tree for the entity that owns the association. Otherwise, if <literal>embed-xml=\"false\"</literal>, then only the referenced identifier value will appear in the XML for single point associations and collections will simply not appear at all."
-msgstr "Para las colecciones y asociaciones monovaluadas, existe un atributo adicional <literal>embed-xml</literal>. Si <literal>embed-xml=\"true\"</literal>, que es el valor por defecto, el árbol XML para la entidad asociada (o colección de tipo de valor) será embebida directamente en el árbol XML para la entidad que posee la asociación. En otro caso, si <literal>embed-xml=\"false\"</literal>, sólo el valor identificador referenciado aparecerá en el XML para asociaciones de punto único y para las colecciones simplemente no aparecerá en absoluto."
+#. Tag: para
+#: xml.xml:100
+#, no-c-format
+msgid ""
+"For collections and single valued associations, there is an additional "
+"<literal>embed-xml</literal> attribute. If <literal>embed-xml=\"true\"</"
+"literal>, the default, the XML tree for the associated entity (or collection "
+"of value type) will be embedded directly in the XML tree for the entity that "
+"owns the association. Otherwise, if <literal>embed-xml=\"false\"</literal>, "
+"then only the referenced identifier value will appear in the XML for single "
+"point associations and collections will simply not appear at all."
+msgstr ""
+"Para las colecciones y asociaciones monovaluadas, existe un atributo "
+"adicional <literal>embed-xml</literal>. Si <literal>embed-xml=\"true\"</"
+"literal>, que es el valor por defecto, el árbol XML para la entidad asociada "
+"(o colección de tipo de valor) será embebida directamente en el árbol XML "
+"para la entidad que posee la asociación. En otro caso, si <literal>embed-xml="
+"\"false\"</literal>, sólo el valor identificador referenciado aparecerá en "
+"el XML para asociaciones de punto único y para las colecciones simplemente "
+"no aparecerá en absoluto."
-#: index.docbook:110
-msgid "You should be careful not to leave <literal>embed-xml=\"true\"</literal> for too many associations, since XML does not deal well with circularity!"
-msgstr "¡Debes ser cuidadoso de no dejar <literal>embed-xml=\"true\"</literal> para demasiadas asociaciones, ya que XML no trata bien la circularidad!"
+#. Tag: para
+#: xml.xml:110
+#, no-c-format
+msgid ""
+"You should be careful not to leave <literal>embed-xml=\"true\"</literal> for "
+"too many associations, since XML does not deal well with circularity!"
+msgstr ""
+"¡Debes ser cuidadoso de no dejar <literal>embed-xml=\"true\"</literal> para "
+"demasiadas asociaciones, ya que XML no trata bien la circularidad!"
-#: index.docbook:115
+#. Tag: programlisting
+#: xml.xml:115
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Customer\" \n"
- " table=\"CUSTOMER\" \n"
- " node=\"customer\">\n"
- " \n"
- " <id name=\"id\" \n"
- " column=\"CUST_ID\" \n"
- " node=\"@id\"/>\n"
- " \n"
- " <map name=\"accounts\" \n"
- " node=\".\" \n"
- " embed-xml=\"true\">\n"
- " <key column=\"CUSTOMER_ID\" \n"
- " not-null=\"true\"/>\n"
- " <map-key column=\"SHORT_DESC\" \n"
- " node=\"@short-desc\" \n"
- " type=\"string\"/>\n"
- " <one-to-many entity-name=\"Account\"\n"
- " embed-xml=\"false\" \n"
- " node=\"account\"/>\n"
- " </map>\n"
- " \n"
- " <component name=\"name\" \n"
- " node=\"name\">\n"
- " <property name=\"firstName\" \n"
- " node=\"first-name\"/>\n"
- " <property name=\"initial\" \n"
- " node=\"initial\"/>\n"
- " <property name=\"lastName\" \n"
- " node=\"last-name\"/>\n"
- " </component>\n"
- " \n"
- " ...\n"
- " \n"
- "</class>]]>"
+"<![CDATA[<class name=\"Customer\" \n"
+" table=\"CUSTOMER\" \n"
+" node=\"customer\">\n"
+" \n"
+" <id name=\"id\" \n"
+" column=\"CUST_ID\" \n"
+" node=\"@id\"/>\n"
+" \n"
+" <map name=\"accounts\" \n"
+" node=\".\" \n"
+" embed-xml=\"true\">\n"
+" <key column=\"CUSTOMER_ID\" \n"
+" not-null=\"true\"/>\n"
+" <map-key column=\"SHORT_DESC\" \n"
+" node=\"@short-desc\" \n"
+" type=\"string\"/>\n"
+" <one-to-many entity-name=\"Account\"\n"
+" embed-xml=\"false\" \n"
+" node=\"account\"/>\n"
+" </map>\n"
+" \n"
+" <component name=\"name\" \n"
+" node=\"name\">\n"
+" <property name=\"firstName\" \n"
+" node=\"first-name\"/>\n"
+" <property name=\"initial\" \n"
+" node=\"initial\"/>\n"
+" <property name=\"lastName\" \n"
+" node=\"last-name\"/>\n"
+" </component>\n"
+" \n"
+" ...\n"
+" \n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Customer\" \n"
- " table=\"CUSTOMER\" \n"
- " node=\"customer\">\n"
- " \n"
- " <id name=\"id\" \n"
- " column=\"CUST_ID\" \n"
- " node=\"@id\"/>\n"
- " \n"
- " <map name=\"accounts\" \n"
- " node=\".\" \n"
- " embed-xml=\"true\">\n"
- " <key column=\"CUSTOMER_ID\" \n"
- " not-null=\"true\"/>\n"
- " <map-key column=\"SHORT_DESC\" \n"
- " node=\"@short-desc\" \n"
- " type=\"string\"/>\n"
- " <one-to-many entity-name=\"Account\"\n"
- " embed-xml=\"false\" \n"
- " node=\"account\"/>\n"
- " </map>\n"
- " \n"
- " <component name=\"name\" \n"
- " node=\"name\">\n"
- " <property name=\"firstName\" \n"
- " node=\"first-name\"/>\n"
- " <property name=\"initial\" \n"
- " node=\"initial\"/>\n"
- " <property name=\"lastName\" \n"
- " node=\"last-name\"/>\n"
- " </component>\n"
- " \n"
- " ...\n"
- " \n"
- "</class>]]>"
-#: index.docbook:117
-msgid "in this case, we have decided to embed the collection of account ids, but not the actual account data. The following HQL query:"
-msgstr "en este caso, hemos decidido embeber la colección de ids de cuenta, pero no los datos reales de cuenta. La siguiente consulta HQL:"
+#. Tag: para
+#: xml.xml:117
+#, no-c-format
+msgid ""
+"in this case, we have decided to embed the collection of account ids, but "
+"not the actual account data. The following HQL query:"
+msgstr ""
+"en este caso, hemos decidido embeber la colección de ids de cuenta, pero no "
+"los datos reales de cuenta. La siguiente consulta HQL:"
-#: index.docbook:122
-msgid "<![CDATA[from Customer c left join fetch c.accounts where c.lastName like :lastName]]>"
-msgstr "<![CDATA[from Customer c left join fetch c.accounts where c.lastName like :lastName]]>"
+#. Tag: programlisting
+#: xml.xml:122
+#, no-c-format
+msgid ""
+"<![CDATA[from Customer c left join fetch c.accounts where c.lastName like :"
+"lastName]]>"
+msgstr ""
-#: index.docbook:124
+#. Tag: para
+#: xml.xml:124
+#, no-c-format
msgid "Would return datasets such as this:"
msgstr "devolvería conjuntos de datos como estos:"
-#: index.docbook:128
+#. Tag: programlisting
+#: xml.xml:128
+#, no-c-format
msgid ""
- "<![CDATA[<customer id=\"123456789\">\n"
- " <account short-desc=\"Savings\">987632567</account>\n"
- " <account short-desc=\"Credit Card\">985612323</account>\n"
- " <name>\n"
- " <first-name>Gavin</first-name>\n"
- " <initial>A</initial>\n"
- " <last-name>King</last-name>\n"
- " </name>\n"
- " ...\n"
- "</customer>]]>"
+"<![CDATA[<customer id=\"123456789\">\n"
+" <account short-desc=\"Savings\">987632567</account>\n"
+" <account short-desc=\"Credit Card\">985612323</account>\n"
+" <name>\n"
+" <first-name>Gavin</first-name>\n"
+" <initial>A</initial>\n"
+" <last-name>King</last-name>\n"
+" </name>\n"
+" ...\n"
+"</customer>]]>"
msgstr ""
- "<![CDATA[<customer id=\"123456789\">\n"
- " <account short-desc=\"Savings\">987632567</account>\n"
- " <account short-desc=\"Credit Card\">985612323</account>\n"
- " <name>\n"
- " <first-name>Gavin</first-name>\n"
- " <initial>A</initial>\n"
- " <last-name>King</last-name>\n"
- " </name>\n"
- " ...\n"
- "</customer>]]>"
-#: index.docbook:130
-msgid "If you set <literal>embed-xml=\"true\"</literal> on the <literal><one-to-many></literal> mapping, the data might look more like this:"
-msgstr "Si estableces <literal>embed-xml=\"true\"</literal> en el mapeo <literal><one-to-many></literal>, los datos podrían verse así:"
+#. Tag: para
+#: xml.xml:130
+#, no-c-format
+msgid ""
+"If you set <literal>embed-xml=\"true\"</literal> on the <literal><one-to-"
+"many></literal> mapping, the data might look more like this:"
+msgstr ""
+"Si estableces <literal>embed-xml=\"true\"</literal> en el mapeo <literal><"
+"one-to-many></literal>, los datos podrían verse así:"
-#: index.docbook:135
+#. Tag: programlisting
+#: xml.xml:135
+#, no-c-format
msgid ""
- "<![CDATA[<customer id=\"123456789\">\n"
- " <account id=\"987632567\" short-desc=\"Savings\">\n"
- " <customer id=\"123456789\"/>\n"
- " <balance>100.29</balance>\n"
- " </account>\n"
- " <account id=\"985612323\" short-desc=\"Credit Card\">\n"
- " <customer id=\"123456789\"/>\n"
- " <balance>-2370.34</balance>\n"
- " </account>\n"
- " <name>\n"
- " <first-name>Gavin</first-name>\n"
- " <initial>A</initial>\n"
- " <last-name>King</last-name>\n"
- " </name>\n"
- " ...\n"
- "</customer>]]>"
+"<![CDATA[<customer id=\"123456789\">\n"
+" <account id=\"987632567\" short-desc=\"Savings\">\n"
+" <customer id=\"123456789\"/>\n"
+" <balance>100.29</balance>\n"
+" </account>\n"
+" <account id=\"985612323\" short-desc=\"Credit Card\">\n"
+" <customer id=\"123456789\"/>\n"
+" <balance>-2370.34</balance>\n"
+" </account>\n"
+" <name>\n"
+" <first-name>Gavin</first-name>\n"
+" <initial>A</initial>\n"
+" <last-name>King</last-name>\n"
+" </name>\n"
+" ...\n"
+"</customer>]]>"
msgstr ""
- "<![CDATA[<customer id=\"123456789\">\n"
- " <account id=\"987632567\" short-desc=\"Savings\">\n"
- " <customer id=\"123456789\"/>\n"
- " <balance>100.29</balance>\n"
- " </account>\n"
- " <account id=\"985612323\" short-desc=\"Credit Card\">\n"
- " <customer id=\"123456789\"/>\n"
- " <balance>-2370.34</balance>\n"
- " </account>\n"
- " <name>\n"
- " <first-name>Gavin</first-name>\n"
- " <initial>A</initial>\n"
- " <last-name>King</last-name>\n"
- " </name>\n"
- " ...\n"
- "</customer>]]>"
-#: index.docbook:141
+#. Tag: title
+#: xml.xml:141
+#, no-c-format
msgid "Manipulating XML data"
msgstr "Manipulando datos XML"
-#: index.docbook:143
-msgid "Let's rearead and update XML documents in the application. We do this by obtaining a dom4j session:"
-msgstr "Vamos a releer y actualizar documentos XML en la aplicación. Hacemos esto obteniendo una sesión dom4j:"
+#. Tag: para
+#: xml.xml:143
+#, no-c-format
+msgid ""
+"Let's rearead and update XML documents in the application. We do this by "
+"obtaining a dom4j session:"
+msgstr ""
+"Vamos a releer y actualizar documentos XML en la aplicación. Hacemos esto "
+"obteniendo una sesión dom4j:"
-#: index.docbook:148
+#. Tag: programlisting
+#: xml.xml:148
+#, no-c-format
msgid ""
- "<![CDATA[Document doc = ....;\n"
- " \n"
- "Session session = factory.openSession();\n"
- "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
- "Transaction tx = session.beginTransaction();\n"
- "\n"
- "List results = dom4jSession\n"
- " .createQuery(\"from Customer c left join fetch c.accounts where c.lastName like :lastName\")\n"
- " .list();\n"
- "for ( int i=0; i<results.size(); i++ ) {\n"
- " //add the customer data to the XML document\n"
- " Element customer = (Element) results.get(i);\n"
- " doc.add(customer);\n"
- "}\n"
- "\n"
- "tx.commit();\n"
- "session.close();]]>"
+"<![CDATA[Document doc = ....;\n"
+" \n"
+"Session session = factory.openSession();\n"
+"Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
+"Transaction tx = session.beginTransaction();\n"
+"\n"
+"List results = dom4jSession\n"
+" .createQuery(\"from Customer c left join fetch c.accounts where c."
+"lastName like :lastName\")\n"
+" .list();\n"
+"for ( int i=0; i<results.size(); i++ ) {\n"
+" //add the customer data to the XML document\n"
+" Element customer = (Element) results.get(i);\n"
+" doc.add(customer);\n"
+"}\n"
+"\n"
+"tx.commit();\n"
+"session.close();]]>"
msgstr ""
- "<![CDATA[Document doc = ....;\n"
- " \n"
- "Session session = factory.openSession();\n"
- "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
- "Transaction tx = session.beginTransaction();\n"
- "\n"
- "List results = dom4jSession\n"
- " .createQuery(\"from Customer c left join fetch c.accounts where c.lastName like :lastName\")\n"
- " .list();\n"
- "for ( int i=0; i<results.size(); i++ ) {\n"
- " //add the customer data to the XML document\n"
- " Element customer = (Element) results.get(i);\n"
- " doc.add(customer);\n"
- "}\n"
- "\n"
- "tx.commit();\n"
- "session.close();]]>"
-#: index.docbook:150
+#. Tag: programlisting
+#: xml.xml:150
+#, no-c-format
msgid ""
- "<![CDATA[Session session = factory.openSession();\n"
- "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
- "Transaction tx = session.beginTransaction();\n"
- "\n"
- "Element cust = (Element) dom4jSession.get(\"Customer\", customerId);\n"
- "for ( int i=0; i<results.size(); i++ ) {\n"
- " Element customer = (Element) results.get(i);\n"
- " //change the customer name in the XML and database\n"
- " Element name = customer.element(\"name\");\n"
- " name.element(\"first-name\").setText(firstName);\n"
- " name.element(\"initial\").setText(initial);\n"
- " name.element(\"last-name\").setText(lastName);\n"
- "}\n"
- "\n"
- "tx.commit();\n"
- "session.close();]]>"
+"<![CDATA[Session session = factory.openSession();\n"
+"Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
+"Transaction tx = session.beginTransaction();\n"
+"\n"
+"Element cust = (Element) dom4jSession.get(\"Customer\", customerId);\n"
+"for ( int i=0; i<results.size(); i++ ) {\n"
+" Element customer = (Element) results.get(i);\n"
+" //change the customer name in the XML and database\n"
+" Element name = customer.element(\"name\");\n"
+" name.element(\"first-name\").setText(firstName);\n"
+" name.element(\"initial\").setText(initial);\n"
+" name.element(\"last-name\").setText(lastName);\n"
+"}\n"
+"\n"
+"tx.commit();\n"
+"session.close();]]>"
msgstr ""
- "<![CDATA[Session session = factory.openSession();\n"
- "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
- "Transaction tx = session.beginTransaction();\n"
- "\n"
- "Element cust = (Element) dom4jSession.get(\"Customer\", customerId);\n"
- "for ( int i=0; i<results.size(); i++ ) {\n"
- " Element customer = (Element) results.get(i);\n"
- " //change the customer name in the XML and database\n"
- " Element name = customer.element(\"name\");\n"
- " name.element(\"first-name\").setText(firstName);\n"
- " name.element(\"initial\").setText(initial);\n"
- " name.element(\"last-name\").setText(lastName);\n"
- "}\n"
- "\n"
- "tx.commit();\n"
- "session.close();]]>"
-#: index.docbook:152
-msgid "It is extremely useful to combine this feature with Hibernate's <literal>replicate()</literal> operation to implement XML-based data import/export."
-msgstr "Es extremadamente útil combinar esta funcionalidad con la operación <literal>replicate()</literal> de Hibernate para implementar la importación/exportación de datos basada en XML."
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: para
+#: xml.xml:152
+#, no-c-format
+msgid ""
+"It is extremely useful to combine this feature with Hibernate's "
+"<literal>replicate()</literal> operation to implement XML-based data import/"
+"export."
+msgstr ""
+"Es extremadamente útil combinar esta funcionalidad con la operación "
+"<literal>replicate()</literal> de Hibernate para implementar la importación/"
+"exportación de datos basada en XML."
18 years, 6 months
Hibernate SVN: r14153 - core/trunk/documentation/manual/es-ES/src/main/docbook/content.
by hibernate-commits@lists.jboss.org
Author: xhuang(a)jboss.com
Date: 2007-10-27 08:53:39 -0400 (Sat, 27 Oct 2007)
New Revision: 14153
Modified:
core/trunk/documentation/manual/es-ES/src/main/docbook/content/association_mapping.xml
core/trunk/documentation/manual/es-ES/src/main/docbook/content/basic_mapping.xml
core/trunk/documentation/manual/es-ES/src/main/docbook/content/batch.xml
core/trunk/documentation/manual/es-ES/src/main/docbook/content/collection_mapping.xml
core/trunk/documentation/manual/es-ES/src/main/docbook/content/configuration.xml
core/trunk/documentation/manual/es-ES/src/main/docbook/content/events.xml
core/trunk/documentation/manual/es-ES/src/main/docbook/content/inheritance_mapping.xml
core/trunk/documentation/manual/es-ES/src/main/docbook/content/performance.xml
core/trunk/documentation/manual/es-ES/src/main/docbook/content/persistent_classes.xml
core/trunk/documentation/manual/es-ES/src/main/docbook/content/query_hql.xml
core/trunk/documentation/manual/es-ES/src/main/docbook/content/query_sql.xml
core/trunk/documentation/manual/es-ES/src/main/docbook/content/session_api.xml
core/trunk/documentation/manual/es-ES/src/main/docbook/content/toolset_guide.xml
core/trunk/documentation/manual/es-ES/src/main/docbook/content/transactions.xml
core/trunk/documentation/manual/es-ES/src/main/docbook/content/tutorial.xml
Log:
Match to latest English XML
Modified: core/trunk/documentation/manual/es-ES/src/main/docbook/content/association_mapping.xml
===================================================================
--- core/trunk/documentation/manual/es-ES/src/main/docbook/content/association_mapping.xml 2007-10-27 03:50:07 UTC (rev 14152)
+++ core/trunk/documentation/manual/es-ES/src/main/docbook/content/association_mapping.xml 2007-10-27 12:53:39 UTC (rev 14153)
@@ -332,6 +332,45 @@
create table Address ( addressId bigint not null primary key )
]]></programlisting>
+
+ <para> UNTRANSLATED!
+ If you use a <literal>List</literal> (or other indexed collection) you need
+ to set the <literal>key</literal> column of the foreign key to <literal>not null</literal>,
+ and let Hibernate manage the association from the collections side to maintain the index
+ of each element (making the other side virtually inverse by setting
+ <literal>update="false"</literal> and <literal>insert="false"</literal>):
+ </para>
+
+ <programlisting><![CDATA[<class name="Person">
+ <id name="id"/>
+ ...
+ <many-to-one name="address"
+ column="addressId"
+ not-null="true"
+ insert="false"
+ update="false"/>
+ </class>
+
+ <class name="Address">
+ <id name="id"/>
+ ...
+ <list name="people">
+ <key column="addressId" not-null="true"/>
+ <list-index column="peopleIdx"/>
+ <one-to-many class="Person"/>
+ </list>
+ </class>]]></programlisting>
+
+ <para>UNTRANSLATED!
+ It is important that you define <literal>not-null="true"</literal> on the
+ <literal><key></literal> element of the collection mapping if the
+ underlying foreign key column is <literal>NOT NULL</literal>. Don't only
+ declare <literal>not-null="true"</literal> on a possible nested
+ <literal><column></literal> element, but on the <literal><key></literal>
+ element.
+ </para>
+
+
</sect2>
<sect2 id="assoc-bidirectional-121">
Modified: core/trunk/documentation/manual/es-ES/src/main/docbook/content/basic_mapping.xml
===================================================================
--- core/trunk/documentation/manual/es-ES/src/main/docbook/content/basic_mapping.xml 2007-10-27 03:50:07 UTC (rev 14152)
+++ core/trunk/documentation/manual/es-ES/src/main/docbook/content/basic_mapping.xml 2007-10-27 12:53:39 UTC (rev 14153)
@@ -111,7 +111,59 @@
búsquedas del DTD usando una conexión de Internet, chequea tu declaración
de DTD contra la contenida en el classpath.
</para>
- </sect2>
+ <sect3 id="mapping-declaration-entity-resolution">
+ <title>UNTRANSLATED! EntityResolver</title>
+ <para>
+ As mentioned previously, Hibernate will first attempt to resolve DTDs in its classpath. The
+ manner in which it does this is by registering a custom <literal>org.xml.sax.EntityResolver</literal>
+ implementation with the SAXReader it uses to read in the xml files. This custom
+ <literal>EntityResolver</literal> recognizes two different systemId namespaces.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ a <literal>hibernate namespace</literal> is recognized whenever the
+ resolver encounteres a systemId starting with
+ <literal>http://hibernate.sourceforge.net/</literal>; the resolver
+ attempts to resolve these entities via the classlaoder which loaded
+ the Hibernate classes.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ a <literal>user namespace</literal> is recognized whenever the
+ resolver encounteres a systemId using a <literal>classpath://</literal>
+ URL protocol; the resolver will attempt to resolve these entities
+ via (1) the current thread context classloader and (2) the
+ classloader which loaded the Hibernate classes.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ An example of utilizing 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>
+ Where <literal>types.xml</literal> is a resource in the <literal>your.domain</literal>
+ package and contains a custom <link linkend="mapping-types-custom">typedef</link>.
+ </para>
+ </sect3>
+
+ </sect2>
<sect2 id="mapping-declaration-mapping" revision="3">
<title>hibernate-mapping</title>
@@ -758,6 +810,21 @@
</para>
</listitem>
</varlistentry>
+
+ <varlistentry>
+ <term><literal>UNTRANSLATED! sequence-identity</literal></term>
+ <listitem>
+ <para>
+ a specialized sequence generation strategy which utilizes a
+ database sequence for the actual value generation, but combines
+ this with JDBC3 getGeneratedKeys to actually return the generated
+ identifier value as part of the insert statement execution. This
+ strategy is only known to be supported on Oracle 10g drivers
+ targetted for JDK 1.4. Note comments on these insert statements
+ are disabled due to a bug in the Oracle drivers.
+ </para>
+ </listitem>
+ </varlistentry>
</variablelist>
</para>
@@ -877,6 +944,172 @@
</sect3>
</sect2>
+ <sect2 id="mapping-declaration-id-enhanced">
+ <title>Enhanced identifier generators</title>
+
+ <para>
+ Starting with release 3.2.3, there are 2 new generators which represent a re-thinking of 2 different
+ aspects of identifier generation. The first aspect is database portability; the second is optimization
+ (not having to query the database for every request for a new identifier value). These two new
+ generators are intended to take the place of some of the named generators described above (starting
+ in 3.3.x); however, they are included in the current releases and can be referenced by FQN.
+ </para>
+
+ <para>
+ The first of these new generators is <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</literal>
+ which is intended firstly as a replacement for the <literal>sequence</literal> generator and secondly as
+ a better portability generator than <literal>native</literal> (because <literal>native</literal>
+ (generally) chooses between <literal>identity</literal> and <literal>sequence</literal> which have
+ largely different semantics which can cause subtle isssues in applications eyeing portability).
+ <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</literal> however achieves portability in
+ a different manner. It chooses between using a table or a sequence in the database to store its
+ incrementing values depending on the capabilities of the dialect being used. The difference between this
+ and <literal>native</literal> is that table-based and sequence-based storage have the same exact
+ semantic (in fact sequences are exactly what Hibernate tries to emmulate with its table-based
+ generators). This generator has a number of configuration parameters:
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>sequence_name</literal> (optional, defaults to <literal>hibernate_sequence</literal>):
+ The name of the sequence (or table) to be used.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>initial_value</literal> (optional, defaults to <literal>1</literal>): The initial
+ value to be retrieved from the sequence/table. In sequence creation terms, this is analogous
+ to the clause typical named "STARTS WITH".
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>increment_size</literal> (optional, defaults to <literal>1</literal>): The value by
+ which subsequent calls to the sequence/table should differ. In sequence creation terms, this
+ is analogous to the clause typical named "INCREMENT BY".
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>force_table_use</literal> (optional, defaults to <literal>false</literal>): Should
+ we force the use of a table as the backing structure even though the dialect might support
+ sequence?
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>value_column</literal> (optional, defaults to <literal>next_val</literal>): Only
+ relevant for table structures! The name of the column on the table which is used to
+ hold the value.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>optimizer</literal> (optional, defaults to <literal>none</literal>):
+ See <xref linkend="mapping-declaration-id-enhanced-optimizers"/>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ The second of these new generators is <literal>org.hibernate.id.enhanced.TableGenerator</literal> which
+ is intended firstly as a replacement for the <literal>table</literal> generator (although it actually
+ functions much more like <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal>) and secondly
+ as a re-implementation of <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal> utilizing the
+ notion of pluggable optimiziers. Essentially this generator defines a table capable of holding
+ a number of different increment values simultaneously by using multiple distinctly keyed rows. This
+ generator has a number of configuration parameters:
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>table_name</literal> (optional, defaults to <literal>hibernate_sequences</literal>):
+ The name of the table to be used.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>value_column_name</literal> (optional, defaults to <literal>next_val</literal>):
+ The name of the column on the table which is used to hold the value.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>segment_column_name</literal> (optional, defaults to <literal>sequence_name</literal>):
+ The name of the column on the table which is used to hold the "segement key". This is the
+ value which distinctly identifies which increment value to use.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>segment_value</literal> (optional, defaults to <literal>default</literal>):
+ The "segment key" value for the segment from which we want to pull increment values for
+ this generator.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>segment_value_length</literal> (optional, defaults to <literal>255</literal>):
+ Used for schema generation; the column size to create this segment key column.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>initial_value</literal> (optional, defaults to <literal>1</literal>):
+ The initial value to be retrieved from the table.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>increment_size</literal> (optional, defaults to <literal>1</literal>):
+ The value by which subsequent calls to the table should differ.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>optimizer</literal> (optional, defaults to <literal></literal>):
+ See <xref linkend="mapping-declaration-id-enhanced-optimizers"/>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect2>
+
+ <sect2 id="mapping-declaration-id-enhanced-optimizers">
+ <title>Identifier generator optimization</title>
+ <para>
+ For identifier generators which store values in the database, it is inefficient for them to hit the
+ database on each and every call to generate a new identifier value. Instead, you'd ideally want to
+ group a bunch of them in memory and only hit the database when you have exhausted your in-memory
+ value group. This is the role of the pluggable optimizers. Currently only the two enhanced generators
+ (<xref linkend="mapping-declaration-id-enhanced"/> support this notion.
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>none</literal> (generally this is the default if no optimizer was specified): This
+ says to not perform any optimizations, and hit the database each and every request.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>hilo</literal>: applies a hi/lo algorithm around the database retrieved values. The
+ values from the database for this optimizer are expected to be sequential. The values
+ retrieved from the database structure for this optimizer indicates the "group number"; the
+ <literal>increment_size</literal> is multiplied by that value in memory to define a group
+ "hi value".
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>pooled</literal>: like was discussed for <literal>hilo</literal>, this optimizers
+ attempts to minimize the number of hits to the database. Here, however, we simply store
+ the starting value for the "next group" into the database structure rather than a sequential
+ value in combination with an in-memory grouping algorithm. <literal>increment_size</literal>
+ here refers to the values coming from the database.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect2>
+
<sect2 id="mapping-declaration-compositeid" revision="2">
<title>composite-id</title>
@@ -920,6 +1153,53 @@
compuesto está implementado como una clase separada en <xref linkend="components-compositeid"/>.
Los atributos descriptos debajo solamente se aplican a este enfoque alternativo:
</para>
+
+ <para>
+ A second approach is what we call a <emphasis>mapped</emphasis> composite identifier,
+ where the identifier properties named inside the <literal><composite-id></literal>
+ element are duplicated on both the persistent class and a separate identifier class.
+ </para>
+
+ <programlisting><![CDATA[<composite-id class="MedicareId" mapped="true">
+ <key-property name="medicareNumber"/>
+ <key-property name="dependent"/>
+ </composite-id>]]></programlisting>
+
+ <para>
+ In this example, both the composite identifier class, <literal>MedicareId</literal>,
+ and the entity class itself have properties named <literal>medicareNumber</literal>
+ and <literal>dependent</literal>. The identifier class must override
+ <literal>equals()</literal> and <literal>hashCode()</literal> and implement.
+ <literal>Serializable</literal>. The disadvantage of this approach is quite
+ obvious—code duplication.
+ </para>
+
+ <para>
+ The following attributes are used to specify a mapped composite identifier:
+ </para>
+
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>mapped</literal> (optional, defaults to <literal>false</literal>):
+ indicates that a mapped composite identifier is used, and that the contained
+ property mappings refer to both the entity class and the composite identifier
+ class.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>class</literal> (optional, but required for a mapped composite identifier):
+ The class used as a composite identifier.
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ We will describe a third, even more convenient approach where the composite identifier
+ is implemented as a component class in <xref linkend="components-compositeid"/>. The
+ attributes described below apply only to this alternative approach:
+ </para>
<itemizedlist spacing="compact">
<listitem>
@@ -927,6 +1207,11 @@
<literal>name</literal> (opcional): Una propiedad de tipo componente que tiene el identificador
compuesto (ver siguiente sección).
</para>
+ </listitem> <listitem>
+ <para>
+ <literal>access</literal> (optional - defaults to <literal>property</literal>):
+ The strategy Hibernate should use for accessing the property value.
+ </para>
</listitem>
<listitem>
<para>
@@ -934,20 +1219,12 @@
por reflección): La clase del componente usado como identificador compuesto (ver siguiente sección).
</para>
</listitem>
- <listitem>
- <para>
- <literal>unsaved-value</literal> (opcional - por defecto a <literal>undefined</literal>):
- Indica que las instancias transitorias deben ser consideradas como recién instanciadas,
- si se establece a <literal>any</literal>, o separadas, si se establece a <literal>none</literal>.
- Lo mejor
-
- Indicates that transient instances should be considered newly instantiated, if set
- to <literal>any</literal>, or detached, if set to <literal>none</literal>.
- Lo mejor en todos los casos es dejar el valor por defecto.
- </para>
- </listitem>
+
</itemizedlist>
-
+ <para>
+ This third approach, an <emphasis>identifier component</emphasis> is the one we recommend
+ for almost all applications.
+ </para>
</sect2>
<sect2 id="mapping-declaration-discriminator" revision="3">
@@ -1099,6 +1376,21 @@
propiedad identificadora.)
</para>
</callout>
+ <callout arearefs="version6">
+ <para> UNTRANSLATED!
+ <literal>generated</literal> (optional - defaults to <literal>never</literal>):
+ Specifies that this version property value is actually generated by the database.
+ See the discussion of <link linkend="mapping-generated">generated properties</link>.
+ </para>
+ </callout>
+ <callout arearefs="version7">
+ <para>UNTRANSLATED!
+ <literal>insert</literal> (optional - defaults to <literal>true</literal>):
+ Specifies whether the version column should be included in SQL insert statements.
+ May be set to <literal>false</literal> if and only if the database column
+ is defined with a default value of <literal>0</literal>.
+ </para>
+ </callout>
</calloutlist>
</programlistingco>
@@ -1172,7 +1464,26 @@
(<literal>undefined</literal> especifica que debe usarse el valor de la propiedad
identificadora.)
</para>
- </callout>
+ </callout> <callout arearefs="timestamp5">
+ <para> UNTRANSLATED!
+ <literal>source</literal> (optional - defaults to <literal>vm</literal>):
+ From where should Hibernate retrieve the timestamp value? From the database,
+ or from the current JVM? Database-based timestamps incur an overhead because
+ Hibernate must hit the database in order to determine the "next value",
+ but will be safer for use in clustered environments. Note also, that not
+ all <literal>Dialect</literal>s are known to support retrieving of the
+ database's current timestamp, while others might be unsafe for usage
+ in locking due to lack of precision (Oracle 8 for example).
+ </para>
+ </callout>
+ <callout arearefs="timestamp6">
+ <para> UNTRANSLATED!
+ <literal>generated</literal> (optional - defaults to <literal>never</literal>):
+ Specifies that this timestamp property value is actually generated by the database.
+ See the discussion of <link linkend="mapping-generated">generated properties</link>.
+ </para>
+ </callout>
+
</calloutlist>
</programlistingco>
@@ -1295,6 +1606,12 @@
de un bloqueo optimista. En otras palabras, determina si debe ocurrir un incremento de versión
cuando la propiedad este sucia (desactualizada).
</para>
+ </callout> <callout arearefs="property12">
+ <para> UNTRANSLATED!
+ <literal>generated</literal> (optional - defaults to <literal>never</literal>):
+ Specifies that this property value is actually generated by the database.
+ See the discussion of <link linkend="mapping-generated">generated properties</link>.
+ </para>
</callout>
</calloutlist>
</programlistingco>
@@ -1580,6 +1897,9 @@
Si la clave única referenciada abarca múltiples propiedades de la entidad asociada,
debes mapear las propiedades dentro de un elemento <literal><properties></literal>.
</para>
+ <para>UNTRANSLATED!
+ If the referenced unique key is the property of a component, you may specify a property path:
+ </para>
</sect2>
@@ -1686,6 +2006,10 @@
la aplicación de proxies es imposible e Hibernate traerá temprano la
asociación!</emphasis>
</para>
+ </callout> <callout arearefs="onetoone10">
+ <para>
+ <literal>entity-name</literal> (optional): The entity name of the associated class.
+ </para>
</callout>
</calloutlist>
</programlistingco>
@@ -2075,33 +2399,13 @@
</calloutlist>
</programlistingco>
- <para>
- Cada subclase debe declarar sus propias propiedades persistentes y subclases.
- Se asume que las propiedades <literal><version></literal> y <literal><id></literal>
- son heredadas de la clase raíz. Cada subclase en una jerarquía debe
- definir un <literal>discriminator-value</literal> único. Si no se especifica ninguno,
- se usa el nombre completamente cualificado de clase Java.
+ <para> UNTRANSLATED!
+ Each subclass should declare its own persistent properties and subclasses.
+ <literal><version></literal> and <literal><id></literal> properties
+ are assumed to be inherited from the root class. Each subclass in a heirarchy must
+ define a unique <literal>discriminator-value</literal>. If none is specified, the
+ fully qualified Java class name is used.
</para>
-
- <para>
- Es posible definir mapeos <literal>subclass</literal>, <literal>union-subclass</literal>,
- y <literal>joined-subclass</literal> en documentos de mapeo separados, directamente debajo
- de <literal>hibernate-mapping</literal>. Esto te permite extender una jerarquía de clases
- con sólo agregar un nuevo fichero de mapeo. Debes especificar un atributo
- <literal>extends</literal> en el mapeo de la subclase, mencionando una superclase previamente mapeada.
- Nota: Previamente esta funcionalidad hacía importante el orden de los documentos de mapeo.
- Desde Hibernate3, el orden de los ficheros de mapeo no importa cuando se usa la palabra reservada
- extends. El orden dentro de un mismo fichero de mapeo todavía necesita ser definido como
- superclases antes de subclases.
- </para>
-
- <programlisting><![CDATA[
-<hibernate-mapping>
- <subclass name="DomesticCat" extends="Cat" discriminator-value="D">
- <property name="name" type="string"/>
- </subclass>
-</hibernate-mapping>]]></programlisting>
-
<para>
Para información acerca de mapeos de herencia, ver <xref linkend="inheritance"/>.
</para>
@@ -2871,7 +3175,24 @@
ser malo e inconsistente).
</para>
</listitem>
- </varlistentry>
+ </varlistentry> <varlistentry>
+ <term>
+ <literal>UNTRANSLATED! imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date,
+ imm_serializable, imm_binary</literal>
+ </term>
+ <listitem>
+ <para>
+ Type mappings for what are usually considered mutable Java types, where
+ Hibernate makes certain optimizations appropriate only for immutable
+ Java types, and the application treats the object as immutable. For
+ example, you should not call <literal>Date.setTime()</literal> for an
+ instance mapped as <literal>imm_timestamp</literal>. To change the
+ value of the property, and have that change made persistent, the
+ application must assign a new (nonidentical) object to the property.
+ </para>
+ </listitem>
+ </varlistentry>
+
</variablelist>
</para>
Modified: core/trunk/documentation/manual/es-ES/src/main/docbook/content/batch.xml
===================================================================
--- core/trunk/documentation/manual/es-ES/src/main/docbook/content/batch.xml 2007-10-27 03:50:07 UTC (rev 14152)
+++ core/trunk/documentation/manual/es-ES/src/main/docbook/content/batch.xml 2007-10-27 12:53:39 UTC (rev 14153)
@@ -31,14 +31,20 @@
</para>
<programlisting><![CDATA[hibernate.jdbc.batch_size 20]]></programlisting>
-
+<para id="disablebatching" revision="1">
+ UNTRANSLATED! Note that Hibernate disables insert batching at the JDBC level transparently if you
+ use an <literal>identiy</literal> identifier generator.
+ </para>
<para>
Podrías además querer hacer este tipo de trabajo en un proceso donde la interacción con el caché de
segundo nivel esté completamente deshabilitado:
</para>
<programlisting><![CDATA[hibernate.cache.use_second_level_cache false]]></programlisting>
-
+<para> UNTRANSLATED!
+ However, this is not absolutely necessary, since we can explicitly set the
+ <literal>CacheMode</literal> to disable interaction with the second-level cache.
+ </para>
<sect1 id="batch-inserts">
<title>Inserciones en lote</title>
@@ -96,7 +102,57 @@
session.close();]]></programlisting>
</sect1>
-
+
+ <sect1 id="batch-statelesssession">
+ <title>UNTRANSLATED! The StatelessSession interface</title>
+ <para>
+ Alternatively, Hibernate provides a command-oriented API that may be used for
+ streaming data to and from the database in the form of detached objects. A
+ <literal>StatelessSession</literal> has no persistence context associated
+ with it and does not provide many of the higher-level life cycle semantics.
+ In particular, a stateless session does not implement a first-level cache nor
+ interact with any second-level or query cache. It does not implement
+ transactional write-behind or automatic dirty checking. Operations performed
+ using a stateless session do not ever cascade to associated instances. Collections
+ are ignored by a stateless session. Operations performed via a stateless session
+ bypass Hibernate's event model and interceptors. Stateless sessions are vulnerable
+ to data aliasing effects, due to the lack of a first-level cache. A stateless
+ session is a lower-level abstraction, much closer to the underlying JDBC.
+ </para>
+
+ <programlisting><![CDATA[StatelessSession session = sessionFactory.openStatelessSession();
+ Transaction tx = session.beginTransaction();
+
+ ScrollableResults customers = session.getNamedQuery("GetCustomers")
+ .scroll(ScrollMode.FORWARD_ONLY);
+ while ( customers.next() ) {
+ Customer customer = (Customer) customers.get(0);
+ customer.updateStuff(...);
+ session.update(customer);
+ }
+
+ tx.commit();
+ session.close();]]></programlisting>
+
+ <para>
+ Note that in this code example, the <literal>Customer</literal> instances returned
+ by the query are immediately detached. They are never associated with any persistence
+ context.
+ </para>
+
+ <para>
+ The <literal>insert(), update()</literal> and <literal>delete()</literal> operations
+ defined by the <literal>StatelessSession</literal> interface are considered to be
+ direct database row-level operations, which result in immediate execution of a SQL
+ <literal>INSERT, UPDATE</literal> or <literal>DELETE</literal> respectively. Thus,
+ they have very different semantics to the <literal>save(), saveOrUpdate()</literal>
+ and <literal>delete()</literal> operations defined by the <literal>Session</literal>
+ interface.
+ </para>
+
+ </sect1>
+
+
<sect1 id="batch-direct">
<title>update/delete en masa</title>
@@ -125,14 +181,17 @@
</listitem>
<listitem>
<para>
- Puede haber sólo una clase mencionada en la cláusula-from, y <emphasis>no puede</emphasis>
- tener un alias.
+ There can only be a single entity named in the from-clause; it can optionally be
+ aliased. If the entity name is aliased, then any property references must
+ be qualified using that alias; if the entity name is not aliased, then it is
+ illegal for any property references to be qualified.
</para>
</listitem>
<listitem>
<para>
- No puede especificarse ningún join (bien implícito o explícito) en una consulta masiva de HQL.
- Pueden usarse subconsultas en la cláusula-where.
+ No <link linkend="queryhql-joins-forms">joins</link> (either implicit or explicit)
+ can be specified in a bulk HQL query. Sub-queries may be used in the where-clause;
+ the subqueries, themselves, may contain joins.
</para>
</listitem>
<listitem>
@@ -144,24 +203,50 @@
<para>
Como un ejemplo, para ejecutar un <literal>UPDATE</literal> HQL, usa el
- método <literal>Query.executeUpdate()</literal>:
+ método <literal>Query.executeUpdate()</literal>(the method is named for
+ those familiar with JDBC's <literal>PreparedStatement.executeUpdate()</literal>):
</para>
- <programlisting><![CDATA[Session session = sessionFactory.openSession();
- Transaction tx = session.beginTransaction();
+
+ <programlisting><![CDATA[Session session = sessionFactory.openSession();
+ Transaction tx = session.beginTransaction();
+
+ String hqlUpdate = "update Customer c set c.name = :newName where c.name = :oldName";
+ // or String hqlUpdate = "update Customer set name = :newName where name = :oldName";
+ int updatedEntities = s.createQuery( hqlUpdate )
+ .setString( "newName", newName )
+ .setString( "oldName", oldName )
+ .executeUpdate();
+ tx.commit();
+ session.close();]]></programlisting>
+
+ <para>
+ HQL <literal>UPDATE</literal> statements, by default do not effect the
+ <link linkend="mapping-declaration-version">version</link>
+ or the <link linkend="mapping-declaration-timestamp">timestamp</link> property values
+ for the affected entities; this is in keeping with the EJB3 specification. However,
+ you can force Hibernate to properly reset the <literal>version</literal> or
+ <literal>timestamp</literal> property values through the use of a <literal>versioned update</literal>.
+ This is achieved by adding the <literal>VERSIONED</literal> keyword after the <literal>UPDATE</literal>
+ keyword.
+ </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>
+ Note that custom version types (<literal>org.hibernate.usertype.UserVersionType</literal>)
+ are not allowed in conjunction with a <literal>update versioned</literal> statement.
+ </para>
- String hqlUpdate = "update Customer set name = :newName where name = :oldName";
- int updatedEntities = s.createQuery( hqlUpdate )
- .setString( "newName", newName )
- .setString( "oldName", oldName )
- .executeUpdate();
- tx.commit();
- session.close();]]></programlisting>
-
<para>
- Para ejecutar un <literal>DELETE</literal> HQL, usa el mismo método <literal>Query.executeUpdate()</literal>
- (el método está nombrado para aquellos familiarizados con
- <literal>PreparedStatement.executeUpdate()</literal> de JDBC):
+ Para ejecutar un <literal>DELETE</literal> HQL, usa el mismo método <literal>Query.executeUpdate()</literal>:
</para>
<programlisting><![CDATA[Session session = sessionFactory.openSession();
Modified: core/trunk/documentation/manual/es-ES/src/main/docbook/content/collection_mapping.xml
===================================================================
--- core/trunk/documentation/manual/es-ES/src/main/docbook/content/collection_mapping.xml 2007-10-27 03:50:07 UTC (rev 14152)
+++ core/trunk/documentation/manual/es-ES/src/main/docbook/content/collection_mapping.xml 2007-10-27 12:53:39 UTC (rev 14153)
@@ -230,13 +230,20 @@
propiedad.
</para>
</callout>
- <callout arearefs="mappingcollection12">
+ <callout arearefs="mappingcollection13">
<para>
<literal>optimistic-lock</literal> (opcional - por defecto a <literal>true</literal>):
Especifica que los cambios de estado de la colección resultan en
incrementos de versión de la entidad dueña. (Para asociaciones
uno a muchos, frecuentemente es razonable deshabilitar esta opción.)
</para>
+ </callout>
+ <callout arearefs="mappingcollection14">
+ <para>
+ <literal>mutable</literal> (optional - defaults to <literal>true</literal>):
+ A value of <literal>false</literal> specifies that the elements of the
+ collection never change (a minor performance optimization in some cases).
+ </para>
</callout>
</calloutlist>
</programlistingco>
@@ -555,7 +562,13 @@
<literal>entity-name</literal> (opcional): El nombre de entidad de la clase
asociada, como una alternativa a <literal>class</literal>.
</para>
- </callout>
+ </callout> <callout arearefs="manytomany8">
+ <para> UNTRANSLATED!
+ <literal>property-ref</literal>: (optional) The name of a property of the associated
+ class that is joined to this foreign key. If not specified, the primary key of
+ the associated class is used.
+ </para>
+ </callout>
</calloutlist>
</programlistingco>
@@ -841,7 +854,7 @@
</class>
<class name="Item">
- <id name="id" column="ITEM_ID"/>
+ <id name="id" column="ITEM_ID"/>
...
<!-- inverse end -->
Modified: core/trunk/documentation/manual/es-ES/src/main/docbook/content/configuration.xml
===================================================================
--- core/trunk/documentation/manual/es-ES/src/main/docbook/content/configuration.xml 2007-10-27 03:50:07 UTC (rev 14152)
+++ core/trunk/documentation/manual/es-ES/src/main/docbook/content/configuration.xml 2007-10-27 12:53:39 UTC (rev 14153)
@@ -392,11 +392,25 @@
</entry>
<entry>
Escribe todas las sentencias SQL a la consola.
- <para>
- <emphasis role="strong">ej.</emphasis>
- <literal>true</literal> | <literal>false</literal>
+ This is an alternative
+ to setting the log category <literal>org.hibernate.SQL</literal>
+ to <literal>debug</literal>.
+ <para>
+ <emphasis role="strong">eg.</emphasis>
+ <literal>true</literal> | <literal>false</literal>
</para>
</entry>
+ </row> <row>
+ <entry>
+ <literal>hibernate.format_sql</literal>
+ </entry>
+ <entry>
+ Pretty print the SQL in the log and console.
+ <para>
+ <emphasis role="strong">eg.</emphasis>
+ <literal>true</literal> | <literal>false</literal>
+ </para>
+ </entry>
</row>
<row>
<entry>
@@ -715,6 +729,13 @@
<emphasis role="strong">ej.</emphasis>
<literal>on_close</literal> (por defecto)| <literal>after_transaction</literal> |
<literal>after_statement</literal> | <literal>auto</literal>
+ </para> <para>
+ Note that this setting only affects <literal>Session</literal>s returned from
+ <literal>SessionFactory.openSession</literal>. For <literal>Session</literal>s
+ obtained through <literal>SessionFactory.getCurrentSession</literal>, the
+ <literal>CurrentSessionContext</literal> implementation configured for use
+ controls the connection release mode for those <literal>Session</literal>s.
+ See <xref linkend="architecture-current-session"/>
</para>
</entry>
</row>
@@ -928,7 +949,7 @@
<entry>
De habilitarse, la sesión será cerrada automáticamente
durante la fase posterior a la compleción de la transacción.
- (Muy útil cuando se usa Hibernate con CMT).
+ (Muy útil cuando se usa Hibernate con CMT).<xref linkend="architecture-current-session"/>
<para>
<emphasis role="strong">ej.</emphasis>
<literal>true</literal> | <literal>false</literal>
@@ -950,7 +971,22 @@
<entry>Propósito</entry>
</row>
</thead>
- <tbody>
+ <tbody> <row>
+ <entry>
+ <literal>hibernate.current_session_context_class</literal>
+ </entry>
+ <entry>
+ Supply a (custom) strategy for the scoping of the "current"
+ <literal>Session</literal>. See
+ <xref linkend="architecture-current-session"/> for more
+ information about the built-in strategies.
+ <para>
+ <emphasis role="strong">eg.</emphasis>
+ <literal>jta</literal> | <literal>thread</literal> |
+ <literal>managed</literal> | <literal>custom.Class</literal>
+ </para>
+ </entry>
+ </row>
<row>
<entry>
<literal>hibernate.query.factory_class</literal>
@@ -1636,7 +1672,10 @@
de arranque (o clase de utilidad) en tu aplicación, a menos qie uses el despliegue
JMX con el <literal>HibernateService</literal> (discutido luego).
</para>
-
+ <para> UNTRANSLATED!
+ If you use a JNDI <literal>SessionFactory</literal>, an EJB or any other class may
+ obtain the <literal>SessionFactory</literal> using a JNDI lookup.
+ </para>
<para>
Si usas una <literal>SessionFactory</literal> de JNDI, un EJB o cualquier otra
clase puede obtener la <literal>SessionFactory</literal> usando una búsqueda
@@ -1651,36 +1690,27 @@
<sect2 id="configuration-j2ee-currentsession" revision="1">
<title>Ligado automático de JTA y Session</title>
- <para>
- Para entornos no manejados hemos sugerido <literal>HibernateUtil</literal> con una
- <literal>SessionFactory</literal> estática, y administración de la
- <literal>Session</literal> de Hibernate. Este enfoque no es fácil de usar
- en un entorno EJB, al poder ejecutarse muchos EJBs dentro de la misma transacción
- pero no en la misma hebra. Recomendados que ligues la <literal>SessionFactory</literal>
- a JNDI en un entorno manejado.
+ <para> UNTRANSLATED!
+ The easiest way to handle <literal>Session</literal>s and transactions is
+ Hibernates automatic "current" <literal>Session</literal> management.
+ See the discussion of <link linkend="architecture-current-session">current sessions</link>.
+ Using the <literal>"jta"</literal> session context, if there is no Hibernate
+ <literal>Session</literal> associated with the current JTA transaction, one will
+ be started and associated with that JTA transaction the first time you call
+ <literal>sessionFactory.getCurrentSession()</literal>. The <literal>Session</literal>s
+ retrieved via <literal>getCurrentSession()</literal> in <literal>"jta"</literal> context
+ will be set to automatically flush before the transaction completes, close
+ after the transaction completes, and aggressively release JDBC connections
+ after each statement. This allows the <literal>Session</literal>s to
+ be managed by the life cycle of the JTA transaction to which it is associated,
+ keeping user code clean of such management concerns. Your code can either use
+ JTA programmatically through <literal>UserTransaction</literal>, or (recommended
+ for portable code) use the Hibernate <literal>Transaction</literal> API to set
+ transaction boundaries. If you run in an EJB container, declarative transaction
+ demarcation with CMT is preferred.
</para>
- <para>
- En vez de rodar tu propia utilidad de <literal>ThreadLocal</literal>,
- usa el método <literal>getCurrentSession()</literal> en la
- <literal>SessionFactory</literal> para obtener una <literal>Session</literal>
- de Hibernate. Si no hubiese una <literal>Session</literal> de Hibernate en la
- transacción JTA actual, se arrancará y asignará una.
- Ambas opciones de configuración <literal>hibernate.transaction.flush_before_completion</literal>
- y <literal>hibernate.transaction.auto_close_session</literal>, serán establecidas
- automáticamente para cada <literal>Session</literal> que obtengas con
- <literal>getCurrentSession()</literal>, de modo que éstas serán
- limpiadas (flushed) y cerradas automáticamente cuando el contenedor complete
- las transacciones JTA.
- </para>
- <para>
- Si tu, por ejemplo, usas el patrón de diseño DAO para escribir tu
- capa de persistencia, todos los DAO's buscan la <literal>SessionFactory</literal>
- cuando se necesite y abren la sesión "actual". No hay necesidad de pasar
- las instancias de <literal>SessionFactory</literal> o <literal>Session</literal>
- alrededor entre el código de control y el código DAO.
- </para>
</sect2>
Modified: core/trunk/documentation/manual/es-ES/src/main/docbook/content/events.xml
===================================================================
--- core/trunk/documentation/manual/es-ES/src/main/docbook/content/events.xml 2007-10-27 03:50:07 UTC (rev 14152)
+++ core/trunk/documentation/manual/es-ES/src/main/docbook/content/events.xml 2007-10-27 12:53:39 UTC (rev 14153)
@@ -22,7 +22,10 @@
creado y actualiza la propiedad <literal>lastUpdateTimestamp</literal> cuando un
<literal>Auditable</literal> es acutalizado.
</para>
-
+ <para> UNTRANSLATED!
+ You may either implement <literal>Interceptor</literal> directly or (better) extend
+ <literal>EmptyInterceptor</literal>.
+ </para>
<programlisting><![CDATA[package org.hibernate.test;
import java.io.Serializable;
@@ -103,14 +106,24 @@
}]]></programlisting>
- <para>
- El interceptor podría ser especificado cuando se crea la sesión:
+ <para> UNTRANSLATED!
+ Interceptors come in two flavors: <literal>Session</literal>-scoped and
+ <literal>SessionFactory</literal>-scoped.
+ </para>
+
+ <para> UNTRANSLATED!
+ A <literal>Session</literal>-scoped interceptor is specified
+ when a session is opened using one of the overloaded SessionFactory.openSession()
+ methods accepting an <literal>Interceptor</literal>.
</para>
-
<programlisting><![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]></programlisting>
-
- <para>
- Puedes además establecer un interceptor a un nivel global, usando la <literal>Configuration</literal>:
+ <para> UNTRANSLATED!
+ A <literal>SessionFactory</literal>-scoped interceptor is registered with the <literal>Configuration</literal>
+ object prior to building the <literal>SessionFactory</literal>. In this case, the supplied interceptor
+ will be applied to all sessions opened from that <literal>SessionFactory</literal>; this is true unless
+ a session is opened explicitly specifying the interceptor to use. <literal>SessionFactory</literal>-scoped
+ interceptors must be thread safe, taking care to not store session-specific state since multiple
+ sessions will use this interceptor (potentially) concurrently.
</para>
<programlisting><![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]></programlisting>
@@ -218,7 +231,11 @@
<listener type="pre-update" class="org.hibernate.secure.JACCPreUpdateEventListener"/>
<listener type="pre-insert" class="org.hibernate.secure.JACCPreInsertEventListener"/>
<listener type="pre-load" class="org.hibernate.secure.JACCPreLoadEventListener"/>]]></programlisting>
-
+<para> UNTRANSLATED!
+ Note that <literal><listener type="..." class="..."/></literal> is just a shorthand
+ for <literal><event type="..."><listener class="..."/></event></literal>
+ when there is exactly one listener for a particular event type.
+ </para>
<para>
Seguido, aún en <literal>hibernate.cfg.xml</literal>, liga los permisos a roles:
</para>
Modified: core/trunk/documentation/manual/es-ES/src/main/docbook/content/inheritance_mapping.xml
===================================================================
--- core/trunk/documentation/manual/es-ES/src/main/docbook/content/inheritance_mapping.xml 2007-10-27 03:50:07 UTC (rev 14152)
+++ core/trunk/documentation/manual/es-ES/src/main/docbook/content/inheritance_mapping.xml 2007-10-27 12:53:39 UTC (rev 14153)
@@ -42,6 +42,24 @@
</listitem>
</itemizedlist>
+
+ <para> UNTRANSLATED!
+ It is possible to define <literal>subclass</literal>, <literal>union-subclass</literal>,
+ and <literal>joined-subclass</literal> mappings in separate mapping documents, directly beneath
+ <literal>hibernate-mapping</literal>. This allows you to extend a class hierachy just by adding
+ a new mapping file. You must specify an <literal>extends</literal> attribute in the subclass mapping,
+ naming a previously mapped superclass. Note: Previously this feature made the ordering of the mapping
+ documents important. Since Hibernate3, the ordering of mapping files does not matter when using the
+ extends keyword. The ordering inside a single mapping file still needs to be defined as superclasses
+ before subclasses.
+ </para>
+
+ <programlisting><![CDATA[
+ <hibernate-mapping>
+ <subclass name="DomesticCat" extends="Cat" discriminator-value="D">
+ <property name="name" type="string"/>
+ </subclass>
+ </hibernate-mapping>]]></programlisting>
<para>
Es posible usar estrategias de mapeo diferentes para diferentes
ramificaciones de la misma jerarquía de herencia, y entonces usar
@@ -258,7 +276,12 @@
de unión de subclase, de hecho la semilla de clave primaria tiene que ser
compartida a través de todas las subclases unidas de una jerarquía.
</para>
-
+ <para> UNTRANSLATED!
+ If your superclass is abstract, map it with <literal>abstract="true"</literal>.
+ Of course, if it is not abstract, an additional table (defaults to
+ <literal>PAYMENT</literal> in the example above) is needed to hold instances
+ of the superclass.
+ </para>
</sect2>
<sect2 id="inheritance-tableperconcreate-polymorphism">
Modified: core/trunk/documentation/manual/es-ES/src/main/docbook/content/performance.xml
===================================================================
--- core/trunk/documentation/manual/es-ES/src/main/docbook/content/performance.xml 2007-10-27 03:50:07 UTC (rev 14152)
+++ core/trunk/documentation/manual/es-ES/src/main/docbook/content/performance.xml 2007-10-27 12:53:39 UTC (rev 14153)
@@ -68,6 +68,20 @@
<emphasis>Recuperación perezosa de colecciones</emphasis> - se recupera una colección cuando la
aplicación invoca una operación sobre la colección. (Esto es por defecto para las colecciones.)
</para>
+ </listitem> <listitem>
+ <para>
+ <emphasis>"Extra-lazy" collection fetching</emphasis> - individual
+ elements of the collection are accessed from the database as needed.
+ Hibernate tries not to fetch the whole collection into memory unless
+ absolutely needed (suitable for very large collections)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <emphasis>Proxy fetching</emphasis> - a single-valued association is
+ fetched when a method other than the identifier getter is invoked
+ upon the associated object.
+ </para>
</listitem>
<listitem>
<para>
@@ -186,9 +200,17 @@
<para>
las consultas de <literal>Criteria</literal>
</para>
+ </listitem> <listitem>
+ <para>
+ HQL queries if <literal>subselect</literal> fetching is used
+ </para>
</listitem>
</itemizedlist>
-
+ <para>
+ No matter what fetching strategy you use, the defined non-lazy graph is guaranteed
+ to be loaded into memory. Note that this might result in several immediate selects
+ being used to execute a particular HQL query.
+ </para>
<para>
Usualmente, no usamos el documento de mapeo para personalizar la recuperación. En cambio, mantenemos el
comportamiento por defecto, y lo sobrescribimos para una transacción en particular, usando
@@ -353,7 +375,12 @@
Hibernate detectará las clase persistentes que sobrescriban <literal>equals()</literal> o
<literal>hashCode()</literal>.
</para>
-
+ <para> UNTRANSLATED!!!
+ By choosing <literal>lazy="no-proxy"</literal> instead of the default
+ <literal>lazy="proxy"</literal>, we can avoid the problems associated with typecasting.
+ However, we will require buildtime bytecode instrumentation, and all operations
+ will result in immediate proxy initialization.
+ </para>
</sect2>
<sect2 id="performance-fetching-initialization">
@@ -673,7 +700,8 @@
<programlistingco>
<areaspec>
- <area id="cache1" coords="2 70"/>
+ <area id="cache1" coords="2 70"/><area id="cache2" coords="3 70"/>
+ <area id="cache3" coords="4 70"/>
</areaspec>
<programlisting><![CDATA[<cache
usage="transactional|read-write|nonstrict-read-write|read-only"
@@ -687,7 +715,21 @@
<literal>nonstrict-read-write</literal> o
<literal>read-only</literal>
</para>
- </callout>
+ </callout> <callout arearefs="cache2">
+ <para>
+ <literal>region</literal> (optional, defaults to the class or
+ collection role name) specifies the name of the second level cache
+ region
+ </para>
+ </callout>
+ <callout arearefs="cache3">
+ <para>
+ <literal>include</literal> (optional, defaults to <literal>all</literal>)
+ <literal>non-lazy</literal> specifies that properties of the entity mapped
+ with <literal>lazy="true"</literal> may not be cached when attribute-level
+ lazy fetching is enabled
+ </para>
+ </callout>
</calloutlist>
</programlistingco>
Modified: core/trunk/documentation/manual/es-ES/src/main/docbook/content/persistent_classes.xml
===================================================================
--- core/trunk/documentation/manual/es-ES/src/main/docbook/content/persistent_classes.xml 2007-10-27 03:50:07 UTC (rev 14152)
+++ core/trunk/documentation/manual/es-ES/src/main/docbook/content/persistent_classes.xml 2007-10-27 12:53:39 UTC (rev 14153)
@@ -471,6 +471,71 @@
</para>
</sect1>
+ <sect1 id="persistent-classes-tuplizers" revision="1">
+ <title>UNTRANSLATED!!! Tuplizers</title>
+
+ <para>
+ <literal>org.hibernate.tuple.Tuplizer</literal>, and its sub-interfaces, are responsible
+ for managing a particular representation of a piece of data, given that representation's
+ <literal>org.hibernate.EntityMode</literal>. If a given piece of data is thought of as
+ a data structure, then a tuplizer is the thing which knows how to create such a data structure
+ and how to extract values from and inject values into such a data structure. For example,
+ for the POJO entity mode, the correpsonding tuplizer knows how create the POJO through its
+ constructor and how to access the POJO properties using the defined property accessors.
+ There are two high-level types of Tuplizers, represented by the
+ <literal>org.hibernate.tuple.entity.EntityTuplizer</literal> and <literal>org.hibernate.tuple.component.ComponentTuplizer</literal>
+ interfaces. <literal>EntityTuplizer</literal>s are responsible for managing the above mentioned
+ contracts in regards to entities, while <literal>ComponentTuplizer</literal>s do the same for
+ components.
+ </para>
+
+ <para>
+ Users may also plug in their own tuplizers. Perhaps you require that a <literal>java.util.Map</literal>
+ implementation other than <literal>java.util.HashMap</literal> be used while in the
+ dynamic-map entity-mode; or perhaps you need to define a different proxy generation strategy
+ than the one used by default. Both would be achieved by defining a custom tuplizer
+ implementation. Tuplizers definitions are attached to the entity or component mapping they
+ are meant to manage. Going back to the example of our customer entity:
+ </para>
+
+ <programlisting><![CDATA[<hibernate-mapping>
+ <class entity-name="Customer">
+ <!--
+ Override the dynamic-map entity-mode
+ tuplizer for the customer entity
+ -->
+ <tuplizer entity-mode="dynamic-map"
+ class="CustomMapTuplizerImpl"/>
+
+ <id name="id" type="long" column="ID">
+ <generator class="sequence"/>
+ </id>
+
+ <!-- other properties -->
+ ...
+ </class>
+ </hibernate-mapping>
+
+
+ public class CustomMapTuplizerImpl
+ extends org.hibernate.tuple.entity.DynamicMapEntityTuplizer {
+ // override the buildInstantiator() method to plug in our custom map...
+ protected final Instantiator buildInstantiator(
+ org.hibernate.mapping.PersistentClass mappingInfo) {
+ return new CustomMapInstantiator( mappingInfo );
+ }
+
+ private static final class CustomMapInstantiator
+ extends org.hibernate.tuple.DynamicMapInstantitor {
+ // override the generateMap() method to return our custom map...
+ protected final Map generateMap() {
+ return new CustomMap();
+ }
+ }
+ }]]></programlisting>
+
+
+ </sect1>
<para>
PORHACER: Documentar el framework de extensiones del usuario en los paquetes
Modified: core/trunk/documentation/manual/es-ES/src/main/docbook/content/query_hql.xml
===================================================================
--- core/trunk/documentation/manual/es-ES/src/main/docbook/content/query_hql.xml 2007-10-27 03:50:07 UTC (rev 14152)
+++ core/trunk/documentation/manual/es-ES/src/main/docbook/content/query_hql.xml 2007-10-27 12:53:39 UTC (rev 14153)
@@ -182,6 +182,65 @@
<programlisting><![CDATA[from Document doc fetch all properties where lower(doc.name) like '%cats%']]></programlisting>
</sect1>
+
+ <sect1 id="queryhql-joins-forms">
+ <title>UNTRANSLATED!!! Forms of join syntax</title>
+
+ <para>
+ HQL supports two forms of association joining: <literal>implicit</literal> and <literal>explicit</literal>.
+ </para>
+
+ <para>
+ The queries shown in the previous section all use the <literal>explicit</literal> form where
+ the join keyword is explicitly used in the from clause. This is the recommended form.
+ </para>
+
+ <para>
+ The <literal>implicit</literal> form does not use the join keyword. Instead, the
+ associations are "dereferenced" using dot-notation. <literal>implicit</literal> joins
+ can appear in any of the HQL clauses. <literal>implicit</literal> join result
+ in inner joins in the resulting SQL statement.
+ </para>
+
+ <programlisting><![CDATA[from Cat as cat where cat.mate.name like '%s%']]></programlisting>
+ </sect1>
+
+ <sect1 id="queryhql-identifier-property">
+ <title>Refering to identifier property</title>
+
+ <para>
+ There are, generally speaking, 2 ways to refer to an entity's identifier property:
+ </para>
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ The special property (lowercase) <literal>id</literal> may be used to reference the identifier
+ property of an entity <emphasis>provided that entity does not define a non-identifier property
+ named id</emphasis>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If the entity defines a named identifier property, you may use that property name.
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ References to composite identifier properties follow the same naming rules. If the
+ entity has a non-identifier property named id, the composite identifier property can only
+ be referenced by its defined named; otherwise, the special <literal>id</literal> property
+ can be used to rerference the identifier property.
+ </para>
+
+ <para>
+ Note: this has changed significantly starting in version 3.2.2. In previous versions,
+ <literal>id</literal> <emphasis>always</emphasis> referred to the identifier property no
+ matter what its actual name. A ramification of that decision was that non-identifier
+ properties named <literal>id</literal> could never be referenced in Hibernate queries.
+ </para>
+ </sect1>
+
<sect1 id="queryhql-select">
<title>La cláusula select</title>
@@ -843,56 +902,38 @@
SQL). Incluso se permiten subconsultas correlacionadas (subconsultas que hacen referencia a un alias en la
consulta exterior).
</para>
-
- <programlisting><![CDATA[from Cat as fatcat
-where fatcat.weight > (
- select avg(cat.weight) from DomesticCat cat
-)]]></programlisting>
-
- <programlisting><![CDATA[from DomesticCat as cat
-where cat.name = some (
- select name.nickName from Name as name
-)]]></programlisting>
-
- <programlisting><![CDATA[from Cat as cat
-where not exists (
- from Cat as mate where mate.mate = cat
-)]]></programlisting>
-
- <programlisting><![CDATA[from DomesticCat as cat
-where cat.name not in (
- select name.nickName from Name as name
-)]]></programlisting>
-
- <para>
- Para las subconsultas con más de una expresión en la lista de selección, puedes usar un constructor
- de tuplas:
- </para>
-
- <programlisting><![CDATA[from Cat as cat
-where not ( cat.name, cat.color ) in (
- select cat.name, cat.color from DomesticCat cat
-)]]></programlisting>
-
- <para>
- Nota que en algunas bases de datos (pero no en Oracle o HSQL), puedes usar constructores de tuplar en
- otros contextos, por ejemplo al consultar componentes o tipos de usuario compuestos:
- </para>
-
- <programlisting><![CDATA[from Person where name = ('Gavin', 'A', 'King')]]></programlisting>
-
- <para>
- Que es equivalente a la más verborrágica:
- </para>
-
- <programlisting><![CDATA[from Person where name.first = 'Gavin' and name.initial = 'A' and name.last = 'King')]]></programlisting>
-
- <para>
- Existen dos buenas razones por las cuales podrías no querer hacer este tipo de cosa: primero, no es
- completamente portable entre plataformas de base de datos; segundo, la consulta ahora es dependiente
- del orden de propiedades en el documento de mapeo.
- </para>
-
+
+ <programlisting><![CDATA[from Cat as fatcat
+ where fatcat.weight > (
+ select avg(cat.weight) from DomesticCat cat
+ )]]></programlisting>
+
+ <programlisting><![CDATA[from DomesticCat as cat
+ where cat.name = some (
+ select name.nickName from Name as name
+ )]]></programlisting>
+
+ <programlisting><![CDATA[from Cat as cat
+ where not exists (
+ from Cat as mate where mate.mate = cat
+ )]]></programlisting>
+
+ <programlisting><![CDATA[from DomesticCat as cat
+ where cat.name not in (
+ select name.nickName from Name as name
+ )]]></programlisting>
+
+ <programlisting><![CDATA[select cat.id, (select max(kit.weight) from cat.kitten kit)
+ from Cat as cat]]></programlisting>
+
+ <para>
+ Note that HQL subqueries may occur only in the select or where clauses.
+ </para>
+
+ <para>
+ Note that subqueries can also utilize <literal>row value constructor</literal> syntax. See
+ <xref linkend="queryhql-tuple"/> for more details.
+ </para>
</sect1>
<sect1 id="queryhql-examples">
Modified: core/trunk/documentation/manual/es-ES/src/main/docbook/content/query_sql.xml
===================================================================
--- core/trunk/documentation/manual/es-ES/src/main/docbook/content/query_sql.xml 2007-10-27 03:50:07 UTC (rev 14152)
+++ core/trunk/documentation/manual/es-ES/src/main/docbook/content/query_sql.xml 2007-10-27 12:53:39 UTC (rev 14153)
@@ -15,98 +15,388 @@
Hibernate3 te permite especificar SQL escrito a mano (incluyendo procedimientos almacenados) para todas
las operaciones de creación, actualización, borrado y carga.
</para>
-
- <sect1 id="querysql-creating">
- <title>Creando una <literal>Query</literal> de SQL nativo</title>
-
- <para>
- Las consultas SQL se controlan por medio de la interface <literal>SQLQuery</literal>, que se obtiene
- llamando a <literal>Session.createSQLQuery()</literal>.
- </para>
-
- <programlisting><![CDATA[List cats = sess.createSQLQuery("select {cat.*} from cats cat")
- .addEntity("cat", Cat.class)
- .setMaxResults(50)
- .list();]]></programlisting>
-
- <para>
- Esta consulta especificada:
- </para>
-
- <itemizedlist>
- <listitem>
- <para>
- la cadena de consulta SQL, con un lugar para que Hibernate inyecte los alias de columnas
- </para>
- </listitem>
- <listitem>
- <para>
- la entidad devuelta por la consulta, y sus alias de tablas SQL
- </para>
- </listitem>
- </itemizedlist>
- <para>
- El método <literal>addEntity()</literal> asocia alias de tablas SQL con clases de entidad,
- y determina la forma del conjunto resultado de la consulta.
- </para>
-
- <para>
- El método <literal>addJoin()</literal> puede ser usado para cargar asociaciones a otras entidades y
- colecciones.
- </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>
- Una consulta SQL nativa podría devolver un valor escalar simple o una combinación de escalares y entidades.
- </para>
-
- <programlisting><![CDATA[Double max = (Double) sess.createSQLQuery("select max(cat.weight) as maxWeight from cats cat")
- .addScalar("maxWeight", Hibernate.DOUBLE);
- .uniqueResult();]]></programlisting>
-
-
+ <sect1 id="querysql-creating" revision="4">
+ <title>Using a <literal>SQLQuery</literal></title>
+
+ <para>Execution of native SQL queries is controlled via the
+ <literal>SQLQuery</literal> interface, which is obtained by calling
+ <literal>Session.createSQLQuery()</literal>. The following describes how
+ to use this API for querying.</para>
+
+ <sect2>
+ <title>Scalar queries</title>
+
+ <para>The most basic SQL query is to get a list of scalars
+ (values).</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM CATS").list();
+ sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").list();
+ ]]></programlisting>
+
+ <para>These will both return a List of Object arrays (Object[]) with
+ scalar values for each column in the CATS table. Hibernate will use
+ ResultSetMetadata to deduce the actual order and types of the returned
+ scalar values.</para>
+
+ <para>To avoid the overhead of using
+ <literal>ResultSetMetadata</literal> or simply to be more explicit in
+ what is returned one can use <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>This query specified:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>the SQL query string</para>
+ </listitem>
+
+ <listitem>
+ <para>the columns and types to return</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>This will still return Object arrays, but now it will not use
+ <literal>ResultSetMetdata</literal> but will instead explicitly get the
+ ID, NAME and BIRTHDATE column as respectively a Long, String and a Short
+ from the underlying resultset. This also means that only these three
+ columns will be returned, even though the query is using
+ <literal>*</literal> and could return more than the three listed
+ columns.</para>
+
+ <para>It is possible to leave out the type information for all or some
+ of the scalars.</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM CATS")
+ .addScalar("ID", Hibernate.LONG)
+ .addScalar("NAME")
+ .addScalar("BIRTHDATE")
+ ]]></programlisting>
+
+ <para>This is essentially the same query as before, but now
+ <literal>ResultSetMetaData</literal> is used to decide the type of NAME
+ and BIRTHDATE where as the type of ID is explicitly specified.</para>
+
+ <para>How the java.sql.Types returned from ResultSetMetaData is mapped
+ to Hibernate types is controlled by the Dialect. If a specific type is
+ not mapped or does not result in the expected type it is possible to
+ customize it via calls to <literal>registerHibernateType</literal> in
+ the Dialect.</para>
+ </sect2>
+
+ <sect2>
+ <title>Entity queries</title>
+
+ <para>The above queries were all about returning scalar values,
+ basically returning the "raw" values from the resultset. The following
+ shows how to get entity objects from a native sql query via
+ <literal>addEntity()</literal>.</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM CATS").addEntity(Cat.class);
+ sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").addEntity(Cat.class);
+ ]]></programlisting>
+
+ <para>This query specified:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>the SQL query string</para>
+ </listitem>
+
+ <listitem>
+ <para>the entity returned by the query</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Assuming that Cat is mapped as a class with the columns ID, NAME
+ and BIRTHDATE the above queries will both return a List where each
+ element is a Cat entity.</para>
+
+ <para>If the entity is mapped with a <literal>many-to-one</literal> to
+ another entity it is required to also return this when performing the
+ native query, otherwise a database specific "column not found" error
+ will occur. The additional columns will automatically be returned when
+ using the * notation, but we prefer to be explicit as in the following
+ example for a <literal>many-to-one</literal> to a
+ <literal>Dog</literal>:</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE, DOG_ID FROM CATS").addEntity(Cat.class);
+ ]]></programlisting>
+
+ <para>This will allow cat.getDog() to function properly.</para>
+ </sect2>
+
+ <sect2>
+ <title>Handling associations and collections</title>
+
+ <para>It is possible to eagerly join in the <literal>Dog</literal> to
+ avoid the possible extra roundtrip for initializing the proxy. This is
+ done via the <literal>addJoin()</literal> method, which allows you to
+ join in an association or collection.</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>In this example the returned <literal>Cat</literal>'s will have
+ their <literal>dog</literal> property fully initialized without any
+ extra roundtrip to the database. Notice that we added a alias name
+ ("cat") to be able to specify the target property path of the join. It
+ is possible to do the same eager joining for collections, e.g. if the
+ <literal>Cat</literal> had a one-to-many to <literal>Dog</literal>
+ instead.</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE, D_ID, D_NAME, CAT_ID FROM CATS c, DOGS d WHERE c.ID = d.CAT_ID")
+ .addEntity("cat", Cat.class)
+ .addJoin("cat.dogs");
+ ]]></programlisting>
+
+ <para>
+ At this stage we are reaching the limits of what is possible with native queries without starting to
+ enhance the sql queries to make them usable in Hibernate; the problems starts to arise when returning
+ multiple entities of the same type or when the default alias/column names are not enough.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Returning multiple entities</title>
+
+ <para>Until now the result set column names are assumed to be the same
+ as the column names specified in the mapping document. This can be
+ problematic for SQL queries which join multiple tables, since the same
+ column names may appear in more than one table.</para>
+
+ <para>Column alias injection is needed in the following query (which
+ most likely will fail):</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>The intention for this query is to return two Cat instances per
+ row, a cat and its mother. This will fail since there is a conflict of
+ names since they are mapped to the same column names and on some
+ databases the returned column aliases will most likely be on the form
+ "c.ID", "c.NAME", etc. which are not equal to the columns specificed in
+ the mappings ("ID" and "NAME").</para>
+
+ <para>The following form is not vulnerable to column name
+ duplication:</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>This query specified:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>the SQL query string, with placeholders for Hibernate to
+ inject column aliases</para>
+ </listitem>
+
+ <listitem>
+ <para>the entities returned by the query</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>The {cat.*} and {mother.*} notation used above is a shorthand for
+ "all properties". Alternatively, you may list the columns explicity, but
+ even in this case we let Hibernate inject the SQL column aliases for
+ each property. The placeholder for a column alias is just the property
+ name qualified by the table alias. In the following example, we retrieve
+ Cats and their mothers from a different table (cat_log) to the one
+ declared in the mapping metadata. Notice that we may even use the
+ property aliases in the where clause if we like.</para>
+
+ <programlisting><![CDATA[String sql = "SELECT ID as {c.id}, NAME as {c.name}, " +
+ "BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother.*} " +
+ "FROM CAT_LOG c, CAT_LOG m WHERE {c.mother} = c.ID";
+
+ List loggedCats = sess.createSQLQuery(sql)
+ .addEntity("cat", Cat.class)
+ .addEntity("mother", Cat.class).list()
+ ]]></programlisting>
+
+ <sect3 id="querysql-aliasreferences" revision="2">
+ <title>Alias and property references</title>
+
+ <para>For most cases the above alias injection is needed, but for
+ queries relating to more complex mappings like composite properties,
+ inheritance discriminators, collections etc. there are some specific
+ aliases to use to allow Hibernate to inject the proper aliases.</para>
+
+ <para>The following table shows the different possibilities of using
+ the alias injection. Note: the alias names in the result are examples,
+ each alias will have a unique and probably different name when
+ used.</para>
+
+ <table frame="topbot" id="aliasinjection-summary">
+ <title>Alias injection names</title>
+
+ <tgroup cols="3">
+ <colspec colwidth="1*" />
+
+ <colspec colwidth="1*" />
+
+ <colspec colwidth="2.5*" />
+
+ <thead>
+ <row>
+ <entry>Description</entry>
+
+ <entry>Syntax</entry>
+
+ <entry>Example</entry>
+ </row>
+ </thead>
+
+ <tbody>
+ <row>
+ <entry>A simple property</entry>
+
+ <entry><literal>{[aliasname].[propertyname]</literal></entry>
+
+ <entry><literal>A_NAME as {item.name}</literal></entry>
+ </row>
+
+ <row>
+ <entry>A composite property</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 of an entity</entry>
+
+ <entry><literal>{[aliasname].class}</literal></entry>
+
+ <entry><literal>DISC as {item.class}</literal></entry>
+ </row>
+
+ <row>
+ <entry>All properties of an entity</entry>
+
+ <entry><literal>{[aliasname].*}</literal></entry>
+
+ <entry><literal>{item.*}</literal></entry>
+ </row>
+
+ <row>
+ <entry>A collection key</entry>
+
+ <entry><literal>{[aliasname].key}</literal></entry>
+
+ <entry><literal>ORGID as {coll.key}</literal></entry>
+ </row>
+
+ <row>
+ <entry>The id of an collection</entry>
+
+ <entry><literal>{[aliasname].id}</literal></entry>
+
+ <entry><literal>EMPID as {coll.id}</literal></entry>
+ </row>
+
+ <row>
+ <entry>The element of an collection</entry>
+
+ <entry><literal>{[aliasname].element}</literal></entry>
+
+ <entry><literal>XID as {coll.element}</literal></entry>
+ </row>
+
+ <row>
+ <entry>roperty of the element in the collection</entry>
+
+ <entry><literal>{[aliasname].element.[propertyname]}</literal></entry>
+
+ <entry><literal>NAME as {coll.element.name}</literal></entry>
+ </row>
+
+ <row>
+ <entry>All properties of the element in the collection</entry>
+
+ <entry><literal>{[aliasname].element.*}</literal></entry>
+
+ <entry><literal>{coll.element.*}</literal></entry>
+ </row>
+
+ <row>
+ <entry>All properties of the the collection</entry>
+
+ <entry><literal>{[aliasname].*}</literal></entry>
+
+ <entry><literal>{coll.*}</literal></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </sect3>
+ </sect2>
+
+ <sect2>
+ <title>Returning non-managed entities</title>
+
+ <para>It is possible to apply a ResultTransformer to native sql queries. Allowing it to e.g. return non-managed entities.</para>
+
+ <programlisting><![CDATA[sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
+ .setResultTransformer(Transformers.aliasToBean(CatDTO.class))]]></programlisting>
+
+ <para>This query specified:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>the SQL query string</para>
+ </listitem>
+
+ <listitem>
+ <para>a result transformer</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ The above query will return a list of <literal>CatDTO</literal> which has been instantiated and injected the values of NAME and BIRTHNAME into its corresponding
+ properties or fields.
+ </para>
+ </sect2>
+
+ <sect2>
+ <title>Handling inheritance</title>
+
+ <para>Native sql queries which query for entities that is mapped as part
+ of an inheritance must include all properties for the baseclass and all
+ it subclasses.</para>
+ </sect2>
+
+ <sect2>
+ <title>Parameters</title>
+
+ <para>Native sql queries support positional as well as named
+ parameters:</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-aliasreferences">
- <title>Alias y referencias de propiedad</title>
-
- <para>
- La notación <literal>{cat.*}</literal> usada arriba es un atajo para "todas las propiedades".
- Alternativamente, puedes listar las columnas explícitamente, pero incluso en este caso dejamos
- que Hibernate inyecte los alias de columnas SQL para cada propiedad. El lugar para un alias de columna
- es sólo el nombre de propiedad cualificado por el alias de la tabla. En el siguiente ejemplo,
- recuperamos <literal>Cat</literal>s de una tabla diferente (<literal>cat_log</literal>) a una
- declarada en los metadatos de mapeo. Nota que podríamos incluso usar los alias de propiedad en la
- cláusula where si quisieramos.
- </para>
- <para>
- La sintáxis <literal>{}</literal> <emphasis>no</emphasis> es requerida para consultas con nombre.
- Ver <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"
-List loggedCats = sess.createSQLQuery(sql)
- .addEntity("cat", Cat.class)
- .setLong("catId", catId)
- .list();]]></programlisting>
-
- <para>
- <emphasis>Nota:</emphasis> si listas cada propiedad explícitamente, ¡debes incluir todas las
- propiedades de la clase <emphasis>y sus subclases</emphasis>!
- </para>
-
- </sect1>
<sect1 id="querysql-namedqueries" revision="2">
<title>Consultas SQL con nombre</title>
@@ -164,7 +454,38 @@
p.AGE AS age,
FROM PERSON p WHERE p.NAME LIKE 'Hiber%'
</sql-query>]]></programlisting>
+<para>You can externalize the resultset mapping informations in a
+ <literal><resultset></literal> element to either reuse them accross
+ several named queries or through the
+ <literal>setResultSetMapping()</literal> API.</para>
+<programlisting><![CDATA[<resultset name="personAddress">
+ <return alias="person" class="eg.Person"/>
+ <return-join alias="address" property="person.mailingAddress"/>
+ </resultset>
+
+ <sql-query name="personsWith" resultset-ref="personAddress">
+ SELECT person.NAME AS {person.name},
+ person.AGE AS {person.age},
+ person.SEX AS {person.sex},
+ address.STREET AS {address.street},
+ address.CITY AS {address.city},
+ address.STATE AS {address.state},
+ address.ZIP AS {address.zip}
+ FROM PERSON person
+ JOIN ADDRESS address
+ ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'
+ WHERE person.NAME LIKE :namePattern
+ </sql-query>]]></programlisting>
+
+<para>You can alternatively use the resultset mapping information in your
+ hbm files directly in java code.</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>Usando return-property para especificar explícitamente nombres de columna/alias</title>
Modified: core/trunk/documentation/manual/es-ES/src/main/docbook/content/session_api.xml
===================================================================
--- core/trunk/documentation/manual/es-ES/src/main/docbook/content/session_api.xml 2007-10-27 03:50:07 UTC (rev 14152)
+++ core/trunk/documentation/manual/es-ES/src/main/docbook/content/session_api.xml 2007-10-27 12:53:39 UTC (rev 14153)
@@ -101,7 +101,28 @@
usar <literal>persist()</literal> en vez de <literal>save()</literal>, con la semántica
definida en el temprano borrador de EJB3.
</para>
-
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para> UNTRANSLATED!!!
+ <literal>persist()</literal> makes a transient instance persistent.
+ However, it doesn't guarantee that the identifier value will be assigned to
+ the persistent instance immediately, the assignment might happen at flush time.
+ <literal>persist()</literal> also guarantees that it will not execute an
+ <literal>INSERT</literal> statement if it is called outside of transaction
+ boundaries. This is useful in long-running conversations with an extended
+ Session/persistence context.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>save()</literal> does guarantee to return an identifier. If an INSERT
+ has to be executed to get the identifier ( e.g. "identity" generator, not
+ "sequence"), this INSERT happens immediately, no matter if you are inside or
+ outside of a transaction. This is problematic in a long-running conversation
+ with an extended Session/persistence context.
+ </para>
+ </listitem>
+ </itemizedlist>
<para>
Alternativamente, puedes asignar el identificador usando una versión sobrecargada
de <literal>save()</literal>.
@@ -312,8 +333,8 @@
while ( kittensAndMothers.hasNext() ) {
Object[] tuple = (Object[]) kittensAndMothers.next();
- Cat kitten = (Cat) tuple[0];
- Cat mother = (Cat) tuple[1];
+ Cat kitten = (Cat) tuple[0];
+ Cat mother = (Cat) tuple[1];
....
}]]></programlisting>
@@ -485,7 +506,13 @@
usado; puedes además definir consultas SQL nativas en metadatos, o migrar
consultas existentes a Hibernate colocándolas en ficheros de mapeo.
</para>
-
+ <para> UNTRANSLATED!
+ Also note that a query declaration inside a <literal><hibernate-mapping></literal>
+ element requires a global unique name for the query, while a query declaration inside a
+ <literal><class></literal> element is made unique automatically by prepending the
+ fully qualified name of the class, for example
+ <literal>eg.Cat.ByNameAndMaximumWeight</literal>.
+ </para>
</sect3>
</sect2>
@@ -567,16 +594,16 @@
Hibernate, debes encerrar los alias de SQL entre llaves:
</para>
- <programlisting><![CDATA[List cats = session.createSQLQuery("SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM<10")
- .addEntity("cat", Cat.class)
-.list();]]></programlisting>
-
- <programlisting><![CDATA[List cats = session.createSQLQuery(
- "SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, " +
- "{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... " +
- "FROM CAT {cat} WHERE ROWNUM<10")
- .addEntity("cat", Cat.class)
-.list()]]></programlisting>
+ <programlisting><![CDATA[List cats = session.createSQLQuery("SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM<10")
+ .addEntity("cat", Cat.class)
+.list();]]></programlisting>
+
+ <programlisting><![CDATA[List cats = session.createSQLQuery(
+ "SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, " +
+ "{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... " +
+ "FROM CAT {cat} WHERE ROWNUM<10")
+ .addEntity("cat", Cat.class)
+.list()]]></programlisting>
<para>
Las consultas SQL pueden contener parámetros con nombre y posicionales, al igual que
@@ -1187,7 +1214,14 @@
</para>
</listitem>
</itemizedlist>
-
+ <para> UNTRANSLATED!!!
+ Finally, note that cascading of operations can be applied to an object graph at
+ <emphasis>call time</emphasis> or at <emphasis>flush time</emphasis>. All operations,
+ if enabled, are cascaded to associated entities reachable when the operation is
+ executed. However, <literal>save-upate</literal> and <literal>delete-orphan</literal>
+ are transitive for all associated entities reachable during flush of the
+ <literal>Session</literal>.
+ </para>
</sect1>
<sect1 id="objectstate-metadata">
Modified: core/trunk/documentation/manual/es-ES/src/main/docbook/content/toolset_guide.xml
===================================================================
--- core/trunk/documentation/manual/es-ES/src/main/docbook/content/toolset_guide.xml 2007-10-27 03:50:07 UTC (rev 14152)
+++ core/trunk/documentation/manual/es-ES/src/main/docbook/content/toolset_guide.xml 2007-10-27 12:53:39 UTC (rev 14153)
@@ -77,46 +77,69 @@
Con este atributo puedes establecer el tamaño de una columna. (O, para tipos de datos
numéricos/decimales, la precisión.)
</para>
-
+ <programlisting><![CDATA[<property name="zip" length="5"/>]]></programlisting>
+ <programlisting><![CDATA[<property name="balance" precision="12" scale="2"/>]]></programlisting>
<para>
Algunas etiquetas también aceptan un atributo <literal>not-null</literal> (para generar una restricción
<literal>NOT NULL</literal> en columnas de tablas) y y un atributo <literal>unique</literal> (para generar
restricciones <literal>UNIQUE</literal> en columnas de tablas).
</para>
+ <programlisting><![CDATA[<many-to-one name="bar" column="barId" not-null="true"/>]]></programlisting>
+
+ <programlisting><![CDATA[<element column="serialNumber" type="long" not-null="true" unique="true"/>]]></programlisting>
+
+ <para>
+ A <literal>unique-key</literal> attribute may be used to group columns in
+ a single unique key constraint. Currently, the specified value of the
+ <literal>unique-key</literal> attribute is <emphasis>not</emphasis> used
+ to name the constraint in the generated DDL, only to group the columns in
+ the mapping file.
+ </para>
+
+ <programlisting><![CDATA[<many-to-one name="org" column="orgId" unique-key="OrgEmployeeId"/>
+<property name="employeeId" unique-key="OrgEmployee"/>]]></programlisting>
+<para>
+ An <literal>index</literal> attribute specifies the name of an index that
+ will be created using the mapped column or columns. Multiple columns may be
+ grouped into the same index, simply by specifying the same index name.
+</para>
- <para>
- Algunas etiquetas aceptan un atributo <literal>index</literal> para especificar el nombre de un índice
- para esa columna. Se puede usar un atributo <literal>unique-key</literal> para agrupar columnas en una
- restricción de clave de una sola unidad. Actualmente, el valor especificado del atributo
- <literal>unique-key</literal> <emphasis>no</emphasis> es usado para nombrar la restricción, sólo para
- agrupar las columnas en el fichero de mapeo.
- </para>
-
- <para>
- Ejemplos:
- </para>
+<programlisting><![CDATA[<property name="lastName" index="CustName"/>
+ <property name="firstName" index="CustName"/>]]></programlisting>
- <programlisting><![CDATA[<property name="foo" type="string" length="64" not-null="true"/>
+<para>
+ A <literal>foreign-key</literal> attribute may be used to override the name
+ of any generated foreign key constraint.
+</para>
-<many-to-one name="bar" foreign-key="fk_foo_bar" not-null="true"/>
+<programlisting><![CDATA[<many-to-one name="bar" column="barId" foreign-key="FKFooBar"/>]]></programlisting>
-<element column="serial_number" type="long" not-null="true" unique="true"/>]]></programlisting>
+<para>
+ Many mapping elements also accept a child <literal><column></literal> element.
+ This is particularly useful for mapping multi-column types:
+</para>
- <para>
- Alternativamente, estos elementos aceptan tambíen un elemento hijo <literal><column></literal>.
- Esto es particularmente útil para tipos multicolumnas:
- </para>
-
- <programlisting><![CDATA[<property name="foo" type="string">
- <column name="foo" length="64" not-null="true" sql-type="text"/>
+<programlisting><![CDATA[<property name="name" type="my.customtypes.Name"/>
+ <column name="last" not-null="true" index="bar_idx" length="30"/>
+ <column name="first" not-null="true" index="bar_idx" length="20"/>
+ <column name="initial"/>
</property>]]></programlisting>
- <programlisting><![CDATA[<property name="bar" type="my.customtypes.MultiColumnType"/>
- <column name="fee" not-null="true" index="bar_idx"/>
- <column name="fi" not-null="true" index="bar_idx"/>
- <column name="fo" not-null="true" index="bar_idx"/>
-</property>]]></programlisting>
+<para>
+ The <literal>default</literal> attribute lets you specify a default value for
+ a column (you should assign the same value to the mapped property before
+ saving a new instance of the mapped class).
+</para>
+<programlisting><![CDATA[<property name="credits" type="integer" insert="false">
+ <column name="credits" default="10"/>
+ </property>]]></programlisting>
+
+<programlisting><![CDATA[<version name="version" type="integer" insert="false">
+ <column name="version" default="0"/>
+ </property>]]></programlisting>
+
+
<para>
El atributo <literal>sql-type</literal> permite al usuario sobrescribir el mapeo por defecto de
tipo Hibernate a tipo de datos SQL.
@@ -155,7 +178,16 @@
<entry>number</entry>
<entry>largo de columna/precisión decimal</entry>
</row>
- <row>
+ <row> <row>
+ <entry><literal>precision</literal></entry>
+ <entry>number</entry>
+ <entry>column decimal precision</entry>
+ </row>
+ <row>
+ <entry><literal>scale</literal></entry>
+ <entry>number</entry>
+ <entry>column decimal scale</entry>
+ </row>
<entry><literal>not-null</literal></entry>
<entry><literal>true|false</literal></entry>
<entry>especifica que la columna debe ser no nulable</entry>
@@ -180,8 +212,9 @@
<entry><literal>foreign_key_name</literal></entry>
<entry>
especifica el nombre de la restricción de clave foránea generada por una
- asociación, úsalo en los elementos de mapeo <one-to-one>, <many-to-one>,
- <key>, y <many-to-many>. Nota que los lados
+ asociación, úsalo e <literal><one-to-one></literal>,
+ <literal><many-to-one></literal>, <literal><key></literal>,
+ or <literal><many-to-many></literal> . Nota que los lados
<literal>inverse="true"</literal> no serán considerados por
<literal>SchemaExport</literal>.
</entry>
@@ -193,6 +226,12 @@
sobrescribe el tipo de columna por defecto (sólo atributo del elemento
<literal><column></literal>)
</entry>
+ </row> <row>
+ <entry><literal>default</literal></entry>
+ <entry>SQL expression</entry>
+ <entry>
+ specify a default value for the column
+ </entry>
</row>
<row>
<entry><literal>check</literal></entry>
@@ -260,6 +299,9 @@
<row>
<entry><literal>--drop</literal></entry>
<entry>sólo desechar las tablas</entry>
+ </row> <row>
+ <entry><literal>--create</literal></entry>
+ <entry>only create the tables</entry>
</row>
<row>
<entry><literal>--text</literal></entry>
@@ -268,6 +310,9 @@
<row>
<entry><literal>--output=my_schema.ddl</literal></entry>
<entry>enviar la salida del guión ddl a un fichero</entry>
+ </row> <row>
+ <entry><literal>--naming=eg.MyNamingStrategy</literal></entry>
+ <entry>select a <literal>NamingStrategy</literal></entry>
</row>
<row>
<entry><literal>--config=hibernate.cfg.xml</literal></entry>
@@ -415,10 +460,20 @@
<row>
<entry><literal>--quiet</literal></entry>
<entry>no enviar a salida estándar el guión</entry>
+ </row> <row>
+ <entry><literal>--text</literal></entry>
+ <entry>don't export the script to the database</entry>
+ </row>
+ <row>
+ <entry><literal>--naming=eg.MyNamingStrategy</literal></entry>
+ <entry>select a <literal>NamingStrategy</literal></entry>
</row>
<row>
<entry><literal>--properties=hibernate.properties</literal></entry>
<entry>lee las propiedades de base de datos de un fichero</entry>
+ </row> <row>
+ <entry><literal>--config=hibernate.cfg.xml</literal></entry>
+ <entry>specify a <literal>.cfg.xml</literal> file</entry>
</row>
</tbody>
</tgroup>
Modified: core/trunk/documentation/manual/es-ES/src/main/docbook/content/transactions.xml
===================================================================
--- core/trunk/documentation/manual/es-ES/src/main/docbook/content/transactions.xml 2007-10-27 03:50:07 UTC (rev 14152)
+++ core/trunk/documentation/manual/es-ES/src/main/docbook/content/transactions.xml 2007-10-27 12:53:39 UTC (rev 14153)
@@ -14,8 +14,14 @@
Básicamente, usa Hibernate como usarías JDBC directo (o JTA/CMT) con tus recursos de base de
datos.
</para>
-
<para>
+ Hibernate does not lock objects in memory. Your application can expect the behavior as
+ defined by the isolation level of your database transactions. Note that thanks to the
+ <literal>Session</literal>, which is also a transaction-scoped cache, Hibernate
+ provides repeatable reads for lookup by identifier and entity queries (not
+ reporting queries that return scalar values).
+ </para>
+ <para>
Sin embargo, además del versionado automático, Hibernate ofrece una API (menor) para
bloqueo pesimista de filas, usando la sintáxis <literal>SELECT FOR UPDATE</literal>.
Esta API se discute más adelante en este capítulo:
@@ -90,22 +96,37 @@
aplicaciones.
</para>
- <para>
- El desafío yace en la implementación: no sólo tienen que comenzarse y terminarse correctamente
- la <literal>Session</literal> y la transacción, sino que además tienen que estar accesibles
- para las operaciones de acceso a datos. La demarcación de una unidad de trabajo se implementa
- idealmente usando un interceptor que se ejecuta cuando una petición llama al servidor y anter que
- la respuesta sea enviada (es decir, un <literal>ServletFilter</literal>). Recomendamos ligar la
- <literal>Session</literal> a la hebra que atiende la petición, usando una variable
- <literal>ThreadLocal</literal>. Esto permite un fácil acceso (como acceder a una variable static)
- en tódo el código que se ejecuta en esta hebra. Dependiendo del mecanismo de demarcación de
- transacciones de base de datos que elijas, podrías mantener también el contexto de la transacción
- en una variable <literal>ThreadLocal</literal>. Los patrones de implementación para esto son
- conocidos como <emphasis>Sesión Local de Hebra (ThreadLocal Session)</emphasis> y
- <emphasis>Sesión Abierta en Vista (Open Session in View)</emphasis>. Puedes extender fácilmente
- la clase de ayuda <literal>HibernateUtil</literal> mostrada anteriormente para encontrar
- una forma de implementar un interceptor e instalarlo en tu entorno. Ver el sitio web de Hibernate
- para consejos y ejemplos.
+ <para>
+ The challenge lies in the implementation. Hibernate provides built-in management of
+ the "current session" to simplify this pattern. All you have to do is start a
+ transaction when a server request has to be processed, and end the transaction
+ before the response is send to the client. You can do this in any way you
+ like, common solutions are <literal>ServletFilter</literal>, AOP interceptor with a
+ pointcut on the service methods, or a proxy/interception container. An EJB container
+ is a standardized way to implement cross-cutting aspects such as transaction
+ demarcation on EJB session beans, declaratively with CMT. If you decide to
+ use programmatic transaction demarcation, prefer the Hibernate <literal>Transaction</literal>
+ API shown later in this chapter, for ease of use and code portability.
+ </para>
+
+ <para>
+ Your application code can access a "current session" to process the request
+ by simply calling <literal>sessionFactory.getCurrentSession()</literal> anywhere
+ and as often as needed. You will always get a <literal>Session</literal> scoped
+ to the current database transaction. This has to be configured for either
+ resource-local or JTA environments, see <xref linkend="architecture-current-session"/>.
+ </para>
+
+ <para>
+ Sometimes it is convenient to extend the scope of a <literal>Session</literal> and
+ database transaction until the "view has been rendered". This is especially useful
+ in servlet applications that utilize a separate rendering phase after the request
+ has been processed. Extending the database transaction until view rendering is
+ complete is easy to do if you implement your own interceptor. However, it is not
+ easily doable if you rely on EJBs with container-managed transactions, as a
+ transaction will be completed when an EJB method returns, before rendering of any
+ view can start. See the Hibernate website and forum for tips and examples around
+ this <emphasis>Open Session in View</emphasis> pattern.
</para>
</sect2>
@@ -421,9 +442,7 @@
<para>
No tienes que limpiar con <literal>flush()</literal> la <literal>Session</literal> explícitamente -
la llamada a <literal>commit()</literal> automáticamente dispara la sincronización.
- </para>
-
- <para>
+
Una llamada a <literal>close()</literal> marca el fin de una sesión. La principal implicación
de <literal>close()</literal> es que la conexión JDBC será abandonada por la sesión.
</para>
@@ -624,6 +643,50 @@
</sect2>
+
+ <sect2 id="transactions-demarcation-timeout">
+ <title>Transaction timeout</title>
+
+ <para>
+ One extremely important feature provided by a managed environment like EJB
+ that is never provided for non-managed code is transaction timeout. Transaction
+ timeouts ensure that no misbehaving transaction can indefinitely tie up
+ resources while returning no response to the user. Outside a managed (JTA)
+ environment, Hibernate cannot fully provide this functionality. However,
+ Hibernate can at least control data access operations, ensuring that database
+ level deadlocks and queries with huge result sets are limited by a defined
+ timeout. In a managed environment, Hibernate can delegate transaction timeout
+ to JTA. This functioanlity is abstracted by the Hibernate
+ <literal>Transaction</literal> object.
+ </para>
+
+ <programlisting><![CDATA[
+ Session sess = factory.openSession();
+ try {
+ //set transaction timeout to 3 seconds
+ sess.getTransaction().setTimeout(3);
+ sess.getTransaction().begin();
+
+ // do some work
+ ...
+
+ sess.getTransaction().commit()
+ }
+ catch (RuntimeException e) {
+ sess.getTransaction().rollback();
+ throw e; // or display error message
+ }
+ finally {
+ sess.close();
+ }]]></programlisting>
+
+ <para>
+ Note that <literal>setTimeout()</literal> may not be called in a CMT bean,
+ where transaction timeouts must be defined declaratively.
+ </para>
+
+ </sect2>
+
</sect1>
@@ -700,7 +763,7 @@
La <literal>Session</literal> se desconecta de cualquier conexión JDBC subyacente
al esperar por una interacción del usuario. Este enfoque es el más eficiente en términos
de acceso a base de datos. La aplicación no necesita tratar por sí misma con el chequeo de
- versiones, ni re-uniendo instancias separadas, ni tiene que recargar instancias en cada
+ versiones, ni re-uniendo instancias separadas, ni tiene que recargar instancias en cadatransactions-demarcation-timeout
transacción de base de datos.
</para>
@@ -742,7 +805,12 @@
<literal>Session</literal> y no transferirla a la capa web para almacenarla en la
<literal>HttpSession</literal> (ni incluso serializarla a una capa separada).
</para>
-
+ <para> UNTRANSLATED!!!
+ The extended session pattern, or <emphasis>session-per-conversation</emphasis>, is
+ more difficult to implement with automatic current session context management.
+ You need to supply your own implementation of the <literal>CurrentSessionContext</literal>
+ for this, see the Hibernate Wiki for examples.
+ </para>
</sect2>
<sect2 id="transactions-optimistic-detached">
Modified: core/trunk/documentation/manual/es-ES/src/main/docbook/content/tutorial.xml
===================================================================
--- core/trunk/documentation/manual/es-ES/src/main/docbook/content/tutorial.xml 2007-10-27 03:50:07 UTC (rev 14152)
+++ core/trunk/documentation/manual/es-ES/src/main/docbook/content/tutorial.xml 2007-10-27 12:53:39 UTC (rev 14153)
@@ -19,6 +19,10 @@
Michael Gloegl. Las bibliotecas de terceros que mencionamos son para JDK 1.4
y 5.0. Podrías necesitar otras para JDK 1.3.
</para>
+ <para> UNTRANSLATED!!!
+ The source code for the tutorial is included in the distribution in the
+ <literal>doc/reference/tutorial/</literal> directory.
+ </para>
</sect1>
@@ -785,18 +789,40 @@
a la base de datosy poblará los objetos <literal>Event</literal> con datos.
Puedes, por supuesto, crear consultas más complejas con HQL.
</para>
-
- <para>
- Si ahora llamas a Ant con <literal>-Daction=list</literal>, debes ver los eventos
- que has almacenado hasta ahora. Puede sorprenderte que esto no funcione, al menos
- si has seguido este tutorial paso por paso; el resultado siempre estará
- vacío. La razon de esto es la opción <literal>hbm2ddl.auto</literal>
- en la configuración de Hibernate: Hibernate recreará la base de datos
- en cada ejecución. Deshabilítala quitando la opción, y verás
- resultados en tu listado después que llames a la acción <literal>store</literal>
- unas cuantas veces. La generación y exportación de esquema es útil
- mayormente en testeo unitario.
+
+ <para>
+ Now, to execute and test all of this, follow these steps:
</para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Run <literal>ant run -Daction=store</literal> to store something into the database
+ and, of course, to generate the database schema before through hbm2ddl.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Now disable hbm2ddl by commenting out the property in your <literal>hibernate.cfg.xml</literal>
+ file. Usually you only leave it turned on in continous unit testing, but another
+ run of hbm2ddl would <emphasis>drop</emphasis> everything you have stored - the
+ <literal>create</literal> configuration setting actually translates into "drop all
+ tables from the schema, then re-create all tables, when the SessionFactory is build".
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ If you now call Ant with <literal>-Daction=list</literal>, you should see the events
+ you have stored so far. You can of course also call the <literal>store</literal> action a few
+ times more.
+ </para>
+
+ <para>
+ Note: Most new Hibernate users fail at this point and we see questions about
+ <emphasis>Table not found</emphasis> 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.
+ </para>
</sect2>
@@ -1119,11 +1145,25 @@
direcciones de email duplicadas por persona, que es exactamente la semántica
que necesitamos para un conjunto en 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>
Puedes ahora intentar y agregar elementos a esta colección, al igual que
- hicimos antes enlazando personas y eventos. Es el mismo código en Java.
- </para>
+ hicimos antes enlazando personas y eventos. Es el mismo código en Java.</para><para>
+ This time we didnt' use a <emphasis>fetch</emphasis> query to initialize the collection.
+ Hence, the call to its getter method will trigger an additional select to initialize
+ it, so we can add an element to it. Monitor the SQL log and try to optimize this with
+ an eager fetch.</para>
</sect2>
@@ -1246,8 +1286,280 @@
</para>
-->
</sect2>
- </sect1>
+ <para>
+ Let's turn this into a small web application.
+ </para>
+</sect1>
+<sect1 id="tutorial-webapp">
+ <title>Part 3 - The EventManager web application</title>
+
+ <para>
+ A Hibernate web application uses <literal>Session</literal> and <literal>Transaction</literal>
+ almost like a standalone application. However, some common patterns are useful. We now write
+ an <literal>EventManagerServlet</literal>. This servlet can list all events stored in the
+ database, and it provides an HTML form to enter new events.
+ </para>
+
+ <sect2 id="tutorial-webapp-servlet" revision="2">
+ <title>Writing the basic servlet</title>
+
+ <para>
+ Create a new class in your source directory, in the <literal>events</literal>
+ package:
+ </para>
+
+ <programlisting><![CDATA[package events;
+
+ // Imports
+
+ public class EventManagerServlet extends HttpServlet {
+
+ // Servlet code
+ }]]></programlisting>
+
+ <para>
+ The servlet handles HTTP <literal>GET</literal> requests only, hence, the method
+ we implement is <literal>doGet()</literal>:
+ </para>
+
+ <programlisting><![CDATA[protected void doGet(HttpServletRequest request,
+ HttpServletResponse response)
+ throws ServletException, IOException {
+
+ SimpleDateFormat dateFormatter = new SimpleDateFormat("dd.MM.yyyy");
+
+ try {
+ // Begin unit of work
+ HibernateUtil.getSessionFactory()
+ .getCurrentSession().beginTransaction();
+
+ // Process request and render page...
+
+ // End unit of work
+ HibernateUtil.getSessionFactory()
+ .getCurrentSession().getTransaction().commit();
+
+ } catch (Exception ex) {
+ HibernateUtil.getSessionFactory()
+ .getCurrentSession().getTransaction().rollback();
+ throw new ServletException(ex);
+ }
+
+ }]]></programlisting>
+
+ <para>
+ The pattern we are applying here is called <emphasis>session-per-request</emphasis>.
+ When a request hits the servlet, a new Hibernate <literal>Session</literal> is
+ opened through the first call to <literal>getCurrentSession()</literal> on the
+ <literal>SessionFactory</literal>. Then a database transaction is started—all
+ data access as to occur inside a transaction, no matter if data is read or written
+ (we don't use the auto-commit mode in applications).
+ </para>
+
+ <para>
+ Do <emphasis>not</emphasis> use a new Hibernate <literal>Session</literal> for
+ every database operation. Use one Hibernate <literal>Session</literal> that is
+ scoped to the whole request. Use <literal>getCurrentSession()</literal>, so that
+ it is automatically bound to the current Java thread.
+ </para>
+
+ <para>
+ Next, the possible actions of the request are processed and the response HTML
+ is rendered. We'll get to that part soon.
+ </para>
+
+ <para>
+ Finally, the unit of work ends when processing and rendering is complete. If any
+ problem occured during processing or rendering, an exception will be thrown
+ and the database transaction rolled back. This completes the
+ <literal>session-per-request</literal> 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</emphasis>—you'll need it as soon
+ as you consider rendering your view in JSP, not in a servlet.
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-webapp-processing" revision="1">
+ <title>Processing and rendering</title>
+
+ <para>
+ Let's implement the processing of the request and rendering of the page.
+ </para>
+
+ <programlisting><![CDATA[// Write HTML header
+ PrintWriter out = response.getWriter();
+ out.println("<html><head><title>Event Manager</title></head><body>");
+
+ // Handle actions
+ if ( "store".equals(request.getParameter("action")) ) {
+
+ String eventTitle = request.getParameter("eventTitle");
+ String eventDate = request.getParameter("eventDate");
+
+ if ( "".equals(eventTitle) || "".equals(eventDate) ) {
+ out.println("<b><i>Please enter event title and date.</i></b>");
+ } else {
+ createAndStoreEvent(eventTitle, dateFormatter.parse(eventDate));
+ out.println("<b><i>Added event.</i></b>");
+ }
+ }
+
+ // Print page
+ printEventForm(out);
+ listEvents(out, dateFormatter);
+
+ // Write HTML footer
+ out.println("</body></html>");
+ out.flush();
+ out.close();]]></programlisting>
+
+ <para>
+ Granted, this coding style with a mix of Java and HTML would not scale
+ in a more complex application—keep in mind that we are only illustrating
+ basic Hibernate concepts in this tutorial. The code prints an HTML
+ header and a footer. Inside this page, an HTML form for event entry and
+ a list of all events in the database are printed. The first method is
+ trivial and only outputs HTML:
+ </para>
+
+ <programlisting><![CDATA[private void printEventForm(PrintWriter out) {
+ out.println("<h2>Add new event:</h2>");
+ out.println("<form>");
+ out.println("Title: <input name='eventTitle' length='50'/><br/>");
+ out.println("Date (e.g. 24.12.2009): <input name='eventDate' length='10'/><br/>");
+ out.println("<input type='submit' name='action' value='store'/>");
+ out.println("</form>");
+ }]]></programlisting>
+
+ <para>
+ The <literal>listEvents()</literal> method uses the Hibernate
+ <literal>Session</literal> bound to the current thread to execute
+ a query:
+ </para>
+
+ <programlisting><![CDATA[private void listEvents(PrintWriter out, SimpleDateFormat dateFormatter) {
+
+ List result = HibernateUtil.getSessionFactory()
+ .getCurrentSession().createCriteria(Event.class).list();
+ if (result.size() > 0) {
+ out.println("<h2>Events in database:</h2>");
+ out.println("<table border='1'>");
+ out.println("<tr>");
+ out.println("<th>Event title</th>");
+ out.println("<th>Event date</th>");
+ out.println("</tr>");
+ for (Iterator it = result.iterator(); it.hasNext();) {
+ Event event = (Event) it.next();
+ out.println("<tr>");
+ out.println("<td>" + event.getTitle() + "</td>");
+ out.println("<td>" + dateFormatter.format(event.getDate()) + "</td>");
+ out.println("</tr>");
+ }
+ out.println("</table>");
+ }
+ }]]></programlisting>
+
+ <para>
+ Finally, the <literal>store</literal> action is dispatched to the
+ <literal>createAndStoreEvent()</literal> method, which also uses
+ the <literal>Session</literal> of the current thread:
+ </para>
+
+ <programlisting><![CDATA[protected void createAndStoreEvent(String title, Date theDate) {
+ Event theEvent = new Event();
+ theEvent.setTitle(title);
+ theEvent.setDate(theDate);
+
+ HibernateUtil.getSessionFactory()
+ .getCurrentSession().save(theEvent);
+ }]]></programlisting>
+
+ <para>
+ That's it, the servlet is complete. A request to the servlet will be processed
+ in a single <literal>Session</literal> and <literal>Transaction</literal>. As
+ earlier in the standalone application, Hibernate can automatically bind these
+ ojects to the current thread of execution. This gives you the freedom to layer
+ your code and access the <literal>SessionFactory</literal> in any way you like.
+ Usually you'd 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.
+ </para>
+
+ </sect2>
+
+ <sect2 id="tutorial-webapp-deploy">
+ <title>Deploying and testing</title>
+
+ <para>
+ To deploy this application you have to create a web archive, a WAR. Add the
+ following Ant target to your <literal>build.xml</literal>:
+ </para>
+
+ <programlisting><![CDATA[<target name="war" depends="compile">
+ <war destfile="hibernate-tutorial.war" webxml="web.xml">
+ <lib dir="${librarydir}">
+ <exclude name="jsdk*.jar"/>
+ </lib>
+
+ <classes dir="${targetdir}"/>
+ </war>
+ </target>]]></programlisting>
+
+ <para>
+ This target creates a file called <literal>hibernate-tutorial.war</literal>
+ in your project directory. It packages all libraries and the <literal>web.xml</literal>
+ descriptor, which is expected in the base directory of your project:
+ </para>
+
+ <programlisting><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
+ <web-app version="2.4"
+ xmlns="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+
+ <servlet>
+ <servlet-name>Event Manager</servlet-name>
+ <servlet-class>events.EventManagerServlet</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Event Manager</servlet-name>
+ <url-pattern>/eventmanager</url-pattern>
+ </servlet-mapping>
+ </web-app>]]></programlisting>
+
+ <para>
+ Before you compile and deploy the web application, note that an additional library
+ is required: <literal>jsdk.jar</literal>. 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.
+ </para>
+
+ <para>
+ To build and deploy call <literal>ant war</literal> in your project directory
+ and copy the <literal>hibernate-tutorial.war</literal> file into your Tomcat
+ <literal>webapp</literal> directory. If you don't have Tomcat installed, download
+ it and follow the installation instructions. You don't have to change any Tomcat
+ configuration to deploy this application though.
+ </para>
+
+ <para>
+ Once deployed and Tomcat is running, access the application at
+ <literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal>. Make
+ sure you watch the Tomcat log to see Hibernate initialize when the first
+ request hits your servlet (the static initializer in <literal>HibernateUtil</literal>
+ is called) and to get the detailed output if any exceptions occurs.
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+
<sect1 id="tutorial-summary">
<title>Summary</title>
18 years, 6 months
Hibernate SVN: r14152 - entitymanager/tags.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2007-10-26 23:50:07 -0400 (Fri, 26 Oct 2007)
New Revision: 14152
Added:
entitymanager/tags/v3_3_2_Beta1/
Log:
HEM 3.3.2.Beta1
Copied: entitymanager/tags/v3_3_2_Beta1 (from rev 14151, entitymanager/trunk)
18 years, 6 months
Hibernate SVN: r14151 - annotations/tags.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2007-10-26 23:49:29 -0400 (Fri, 26 Oct 2007)
New Revision: 14151
Added:
annotations/tags/v3_3_1_Beta1/
Log:
HAN 3.3.1.Beta1
Copied: annotations/tags/v3_3_1_Beta1 (from rev 14150, annotations/trunk)
18 years, 6 months
Hibernate SVN: r14150 - in entitymanager/trunk: src/java/org/hibernate/ejb and 1 other directory.
by hibernate-commits@lists.jboss.org
Author: epbernard
Date: 2007-10-26 23:48:01 -0400 (Fri, 26 Oct 2007)
New Revision: 14150
Modified:
entitymanager/trunk/build.xml
entitymanager/trunk/src/java/org/hibernate/ejb/Version.java
Log:
HEM 3.3.2.Beta1
Modified: entitymanager/trunk/build.xml
===================================================================
--- entitymanager/trunk/build.xml 2007-10-27 03:44:23 UTC (rev 14149)
+++ entitymanager/trunk/build.xml 2007-10-27 03:48:01 UTC (rev 14150)
@@ -17,7 +17,7 @@
<!-- Name of project and version, used to create filenames -->
<property name="Name" value="Hibernate EntityManager"/>
<property name="name" value="hibernate-entitymanager"/>
- <property name="version" value="3.3.1.GA"/>
+ <property name="version" value="3.3.2.Beta1"/>
<property name="javadoc.packagenames" value="org.hibernate.ejb.*"/>
<property name="jdbc.dir" value="jdbc"/>
<property name="copy.test" value="true"/>
Modified: entitymanager/trunk/src/java/org/hibernate/ejb/Version.java
===================================================================
--- entitymanager/trunk/src/java/org/hibernate/ejb/Version.java 2007-10-27 03:44:23 UTC (rev 14149)
+++ entitymanager/trunk/src/java/org/hibernate/ejb/Version.java 2007-10-27 03:48:01 UTC (rev 14150)
@@ -8,7 +8,7 @@
* @author Emmanuel Bernard
*/
public class Version {
- public static final String VERSION = "3.3.1.GA";
+ public static final String VERSION = "3.3.2.Beta1";
private static Log log = LogFactory.getLog( Version.class );
static {
18 years, 6 months
Hibernate SVN: r14149 - core/trunk/documentation/manual/translations/ko-KR/content.
by hibernate-commits@lists.jboss.org
Author: xhuang(a)jboss.com
Date: 2007-10-26 23:44:23 -0400 (Fri, 26 Oct 2007)
New Revision: 14149
Modified:
core/trunk/documentation/manual/translations/ko-KR/content/architecture.po
core/trunk/documentation/manual/translations/ko-KR/content/association_mapping.po
core/trunk/documentation/manual/translations/ko-KR/content/basic_mapping.po
core/trunk/documentation/manual/translations/ko-KR/content/batch.po
core/trunk/documentation/manual/translations/ko-KR/content/best_practices.po
core/trunk/documentation/manual/translations/ko-KR/content/collection_mapping.po
core/trunk/documentation/manual/translations/ko-KR/content/component_mapping.po
core/trunk/documentation/manual/translations/ko-KR/content/configuration.po
core/trunk/documentation/manual/translations/ko-KR/content/events.po
core/trunk/documentation/manual/translations/ko-KR/content/example_mappings.po
core/trunk/documentation/manual/translations/ko-KR/content/example_parentchild.po
core/trunk/documentation/manual/translations/ko-KR/content/example_weblog.po
core/trunk/documentation/manual/translations/ko-KR/content/filters.po
core/trunk/documentation/manual/translations/ko-KR/content/inheritance_mapping.po
core/trunk/documentation/manual/translations/ko-KR/content/performance.po
core/trunk/documentation/manual/translations/ko-KR/content/persistent_classes.po
core/trunk/documentation/manual/translations/ko-KR/content/preface.po
core/trunk/documentation/manual/translations/ko-KR/content/query_criteria.po
core/trunk/documentation/manual/translations/ko-KR/content/query_hql.po
core/trunk/documentation/manual/translations/ko-KR/content/query_sql.po
core/trunk/documentation/manual/translations/ko-KR/content/session_api.po
core/trunk/documentation/manual/translations/ko-KR/content/toolset_guide.po
core/trunk/documentation/manual/translations/ko-KR/content/transactions.po
core/trunk/documentation/manual/translations/ko-KR/content/tutorial.po
core/trunk/documentation/manual/translations/ko-KR/content/xml.po
Log:
Generated via XML and latest English XML
Modified: core/trunk/documentation/manual/translations/ko-KR/content/architecture.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/architecture.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/architecture.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,216 +1,622 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:21
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: architecture.xml:21
+#, no-c-format
msgid "Architecture"
msgstr "아키텍처"
-#: index.docbook:24
+#. Tag: title
+#: architecture.xml:24
+#, no-c-format
msgid "Overview"
-msgstr "<title>개요</title>"
+msgstr "개요"
-#: index.docbook:26
+#. Tag: para
+#: architecture.xml:26
+#, no-c-format
msgid "A (very) high-level view of the Hibernate architecture:"
msgstr "Hibernate 아키텍처에 대한 (매우) 높은 수준의 개요::"
-#: index.docbook:39
-msgid "This diagram shows Hibernate using the database and configuration data to provide persistence services (and persistent objects) to the application."
-msgstr "이 다이어그램은 어플리케이션에 영속화 서비스들(과 영속 객체들)을 제공하기 위해 데이터베이스와 컨피그레이션을 사용하는 Hibernate를 보여준다."
+#. Tag: para
+#: architecture.xml:39
+#, no-c-format
+msgid ""
+"This diagram shows Hibernate using the database and configuration data to "
+"provide persistence services (and persistent objects) to the application."
+msgstr ""
+"이 다이어그램은 어플리케이션에 영속화 서비스들(과 영속 객체들)을 제공하기 위"
+"해 데이터베이스와 컨피그레이션을 사용하는 Hibernate를 보여준다."
-#: index.docbook:44
-msgid "We would like to show a more detailed view of the runtime architecture. Unfortunately, Hibernate is flexible and supports several approaches. We will show the two extremes. The \"lite\" architecture has the application provide its own JDBC connections and manage its own transactions. This approach uses a minimal subset of Hibernate's APIs:"
-msgstr "우리는 런타임 아키텍처에 대한 보다 상세한 뷰를 보여주고 싶다. 불행하게도, Hibernate는 유연하며 몇 가지 접근법들을 제공한다. 우리는 두 가지 극단을 보여줄 것이다. \"경량급\" 아키텍처는 그것 자신의 JDBC 커넥션들을 제공하고 그것 자신의 트랜잭션들을 관리하는 어플리케이션을 갖는다. 이 접근법은 Hibernate의 API의 최소 부분집합을 사용한다:"
+#. Tag: para
+#: architecture.xml:44
+#, no-c-format
+msgid ""
+"We would like to show a more detailed view of the runtime architecture. "
+"Unfortunately, Hibernate is flexible and supports several approaches. We "
+"will show the two extremes. The \"lite\" architecture has the application "
+"provide its own JDBC connections and manage its own transactions. This "
+"approach uses a minimal subset of Hibernate's APIs:"
+msgstr ""
+"우리는 런타임 아키텍처에 대한 보다 상세한 뷰를 보여주고 싶다. 불행하게도, "
+"Hibernate는 유연하며 몇 가지 접근법들을 제공한다. 우리는 두 가지 극단을 보여"
+"줄 것이다. \"경량급\" 아키텍처는 그것 자신의 JDBC 커넥션들을 제공하고 그것 자"
+"신의 트랜잭션들을 관리하는 어플리케이션을 갖는다. 이 접근법은 Hibernate의 API"
+"의 최소 부분집합을 사용한다:"
-#: index.docbook:61
-msgid "The \"full cream\" architecture abstracts the application away from the underlying JDBC/JTA APIs and lets Hibernate take care of the details."
-msgstr "\"전체 정수\" 아키텍처는 기본 JDBC/JTA로부터 어플리케이션을 추상화 시키고 Hibernate로 하여금 상세한 것을 처리하게 한다."
+#. Tag: para
+#: architecture.xml:61
+#, no-c-format
+msgid ""
+"The \"full cream\" architecture abstracts the application away from the "
+"underlying JDBC/JTA APIs and lets Hibernate take care of the details."
+msgstr ""
+"\"전체 정수\" 아키텍처는 기본 JDBC/JTA로부터 어플리케이션을 추상화 시키고 "
+"Hibernate로 하여금 상세한 것을 처리하게 한다."
-#: index.docbook:75
+#. Tag: para
+#: architecture.xml:75
+#, fuzzy, no-c-format
msgid "Heres some definitions of the objects in the diagrams:"
-msgstr "다음은 다이어그램들 내에 있는 객체들에 대한 몇가지 정의들이다:"
+msgstr ""
+"다음은 다이어그램들 내에 있는 객체들에 대한 몇가지 정의들이다: <placeholder-"
+"1/>"
-#: index.docbook:80
+#. Tag: term
+#: architecture.xml:80
+#, no-c-format
msgid "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
msgstr "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
-#: index.docbook:82
-msgid "A threadsafe (immutable) cache of compiled mappings for a single database. A factory for <literal>Session</literal> and a client of <literal>ConnectionProvider</literal>. Might hold an optional (second-level) cache of data that is reusable between transactions, at a process- or cluster-level."
-msgstr "단일 데이터베이스에 대한 컴파일된 매핑들의 threadsafe (불변의) 캐시. Session과 ConnectionProvider의 클라이언트를 위한 팩토리. 프로세스 레벨 또는 클러스터 레벨에서 트랜잭션들 사이에 재사용 가능한 데이터의 선택적인 (second-level) 캐시를 보관할 수도 있다."
+#. Tag: para
+#: architecture.xml:82
+#, no-c-format
+msgid ""
+"A threadsafe (immutable) cache of compiled mappings for a single database. A "
+"factory for <literal>Session</literal> and a client of "
+"<literal>ConnectionProvider</literal>. Might hold an optional (second-level) "
+"cache of data that is reusable between transactions, at a process- or "
+"cluster-level."
+msgstr ""
+"단일 데이터베이스에 대한 컴파일된 매핑들의 threadsafe (불변의) 캐시. Session"
+"과 ConnectionProvider의 클라이언트를 위한 팩토리. 프로세스 레벨 또는 클러스"
+"터 레벨에서 트랜잭션들 사이에 재사용 가능한 데이터의 선택적인 (second-level) "
+"캐시를 보관할 수도 있다."
-#: index.docbook:92
+#. Tag: term
+#: architecture.xml:92
+#, no-c-format
msgid "Session (<literal>org.hibernate.Session</literal>)"
msgstr "Session (<literal>org.hibernate.Session</literal>)"
-#: index.docbook:94
-msgid "A single-threaded, short-lived object representing a conversation between the application and the persistent store. Wraps a JDBC connection. Factory for <literal>Transaction</literal>. Holds a mandatory (first-level) cache of persistent objects, used when navigating the object graph or looking up objects by identifier."
-msgstr "어플리케이션과 영속 저장소 사이의 대화를 표현하는 단일 쓰레드이고, 수명이 짧은 객체. JDBC 커넥션을 포장한다. <literal>Transaction</literal> 용 팩토리. 객체 그래프를 네비게이트 하거나 식별자로 객체들을 룩업할 때 사용되는 영속 객체들에 대한 필수적인(첫 번째 레벨의) 캐시를 보관한다."
+#. Tag: para
+#: architecture.xml:94
+#, no-c-format
+msgid ""
+"A single-threaded, short-lived object representing a conversation between "
+"the application and the persistent store. Wraps a JDBC connection. Factory "
+"for <literal>Transaction</literal>. Holds a mandatory (first-level) cache of "
+"persistent objects, used when navigating the object graph or looking up "
+"objects by identifier."
+msgstr ""
+"어플리케이션과 영속 저장소 사이의 대화를 표현하는 단일 쓰레드이고, 수명이 짧"
+"은 객체. JDBC 커넥션을 포장한다. <literal>Transaction</literal> 용 팩토리. 객"
+"체 그래프를 네비게이트 하거나 식별자로 객체들을 룩업할 때 사용되는 영속 객체"
+"들에 대한 필수적인(첫 번째 레벨의) 캐시를 보관한다."
-#: index.docbook:104
+#. Tag: term
+#: architecture.xml:104
+#, no-c-format
msgid "Persistent objects and collections"
msgstr "영속 객체들과 콜렉션들"
-#: index.docbook:106
-msgid "Short-lived, single threaded objects containing persistent state and business function. These might be ordinary JavaBeans/POJOs, the only special thing about them is that they are currently associated with (exactly one) <literal>Session</literal>. As soon as the <literal>Session</literal> is closed, they will be detached and free to use in any application layer (e.g. directly as data transfer objects to and from presentation)."
-msgstr "persistent 상태와 비지니스 기능을 포함하는 수명이 짧고, 단일 쓰레드인 객체들. 이것들은 통상의 JavaBeans/POJO들일 수 있고, 오직 그것들에 대한 오직 특별한 것은 그것들이 현재 (정확하게 한 개의) <literal>Session</literal>과 연관되어 있다는 점이다. <literal>Session</literal>이 닫히자마자, 그것들은 분리될(detached 상태가 될) 것이고 어플리케이션 레이어에서 사용하는 것이 자유로와진다(예를 들면. 직접적으로 프리젠테이션 계층으로 데이터 전송 객체들로서 그리고 직접적으로 프리젠테이션 계층으로부터 데이터 전송 객체들로서)."
+#. Tag: para
+#: architecture.xml:106
+#, no-c-format
+msgid ""
+"Short-lived, single threaded objects containing persistent state and "
+"business function. These might be ordinary JavaBeans/POJOs, the only special "
+"thing about them is that they are currently associated with (exactly one) "
+"<literal>Session</literal>. As soon as the <literal>Session</literal> is "
+"closed, they will be detached and free to use in any application layer (e.g. "
+"directly as data transfer objects to and from presentation)."
+msgstr ""
+"persistent 상태와 비지니스 기능을 포함하는 수명이 짧고, 단일 쓰레드인 객체"
+"들. 이것들은 통상의 JavaBeans/POJO들일 수 있고, 오직 그것들에 대한 오직 특별"
+"한 것은 그것들이 현재 (정확하게 한 개의) <literal>Session</literal>과 연관되"
+"어 있다는 점이다. <literal>Session</literal>이 닫히자마자, 그것들은 분리될"
+"(detached 상태가 될) 것이고 어플리케이션 레이어에서 사용하는 것이 자유로와진"
+"다(예를 들면. 직접적으로 프리젠테이션 계층으로 데이터 전송 객체들로서 그리고 "
+"직접적으로 프리젠테이션 계층으로부터 데이터 전송 객체들로서)."
-#: index.docbook:117
+#. Tag: term
+#: architecture.xml:117
+#, no-c-format
msgid "Transient and detached objects and collections"
msgstr "전이(Transient, 필자 주-과도) 객체들과 콜렉션들"
-#: index.docbook:119
-msgid "Instances of persistent classes that are not currently associated with a <literal>Session</literal>. They may have been instantiated by the application and not (yet) persisted or they may have been instantiated by a closed <literal>Session</literal>."
-msgstr "<literal>Session</literal>과 현재 연관되어 있지 않은 영속 클래스들의 인스턴스들. 그것들은 어플리케이션에 의해 초기화 되었고 (아직) 영속화 되지 않았거나 그것들은 닫혀진<literal>Session</literal>에 의해 초기화 되었을 수도 있다."
+#. Tag: para
+#: architecture.xml:119
+#, no-c-format
+msgid ""
+"Instances of persistent classes that are not currently associated with a "
+"<literal>Session</literal>. They may have been instantiated by the "
+"application and not (yet) persisted or they may have been instantiated by a "
+"closed <literal>Session</literal>."
+msgstr ""
+"<literal>Session</literal>과 현재 연관되어 있지 않은 영속 클래스들의 인스턴스"
+"들. 그것들은 어플리케이션에 의해 초기화 되었고 (아직) 영속화 되지 않았거나 그"
+"것들은 닫혀진<literal>Session</literal>에 의해 초기화 되었을 수도 있다."
-#: index.docbook:128
+#. Tag: term
+#: architecture.xml:128
+#, no-c-format
msgid "Transaction (<literal>org.hibernate.Transaction</literal>)"
msgstr "Transaction (<literal>org.hibernate.Transaction</literal>)"
-#: index.docbook:130
-msgid "(Optional) A single-threaded, short-lived object used by the application to specify atomic units of work. Abstracts application from underlying JDBC, JTA or CORBA transaction. A <literal>Session</literal> might span several <literal>Transaction</literal>s in some cases. However, transaction demarcation, either using the underlying API or <literal>Transaction</literal>, is never optional!"
-msgstr "(옵션) 작업의 원자 단위를 지정하기 위해 어플리케이션에 의해 사용되는 단일 쓰레드이고, 수명이 짧은 객체. 기본 JDBC, JTA 또는 CORBA 트랜잭션으로부터 어플리케이션을 추상화 시킨다. 몇몇 경우들에서 하나의 <literal>Session</literal>은 여러 개의 <literal>Transaction</literal>들에 걸칠 수 있다. 하지만 기본 API 또는 <literal>Transaction</literal>을 사용하는 트랜잭션 경계 설정은 결코 옵션이 아니다!"
+#. Tag: para
+#: architecture.xml:130
+#, no-c-format
+msgid ""
+"(Optional) A single-threaded, short-lived object used by the application to "
+"specify atomic units of work. Abstracts application from underlying JDBC, "
+"JTA or CORBA transaction. A <literal>Session</literal> might span several "
+"<literal>Transaction</literal>s in some cases. However, transaction "
+"demarcation, either using the underlying API or <literal>Transaction</"
+"literal>, is never optional!"
+msgstr ""
+"(옵션) 작업의 원자 단위를 지정하기 위해 어플리케이션에 의해 사용되는 단일 쓰"
+"레드이고, 수명이 짧은 객체. 기본 JDBC, JTA 또는 CORBA 트랜잭션으로부터 어플리"
+"케이션을 추상화 시킨다. 몇몇 경우들에서 하나의 <literal>Session</literal>은 "
+"여러 개의 <literal>Transaction</literal>들에 걸칠 수 있다. 하지만 기본 API 또"
+"는 <literal>Transaction</literal>을 사용하는 트랜잭션 경계 설정은 결코 옵션"
+"이 아니다!"
-#: index.docbook:141
-msgid "ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</literal>)"
-msgstr "ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</literal>)"
+#. Tag: term
+#: architecture.xml:141
+#, no-c-format
+msgid ""
+"ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</"
+"literal>)"
+msgstr ""
+"ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</"
+"literal>)"
-#: index.docbook:143
-msgid "(Optional) A factory for (and pool of) JDBC connections. Abstracts application from underlying <literal>Datasource</literal> or <literal>DriverManager</literal>. Not exposed to application, but can be extended/implemented by the developer."
-msgstr "(옵션) JDBC 커넥션들에 대한 팩토리(그리고 그것들의 pool). 기본 <literal>Datasource</literal> 또는 <literal>DriverManager</literal>로부터 어플리케이션을 추상화 시킨다. 어플리케이션에 노출되지는 않지만 개발자에 의해 확장/구현 된다."
+#. Tag: para
+#: architecture.xml:143
+#, no-c-format
+msgid ""
+"(Optional) A factory for (and pool of) JDBC connections. Abstracts "
+"application from underlying <literal>Datasource</literal> or "
+"<literal>DriverManager</literal>. Not exposed to application, but can be "
+"extended/implemented by the developer."
+msgstr ""
+"(옵션) JDBC 커넥션들에 대한 팩토리(그리고 그것들의 pool). 기본 "
+"<literal>Datasource</literal> 또는 <literal>DriverManager</literal>로부터 어"
+"플리케이션을 추상화 시킨다. 어플리케이션에 노출되지는 않지만 개발자에 의해 확"
+"장/구현 된다."
-#: index.docbook:151
-msgid "TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
-msgstr "TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
+#. Tag: term
+#: architecture.xml:151
+#, no-c-format
+msgid ""
+"TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
+msgstr ""
+"TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
-#: index.docbook:153
-msgid "(Optional) A factory for <literal>Transaction</literal> instances. Not exposed to the application, but can be extended/implemented by the developer."
-msgstr "(옵션) <literal>Transaction</literal> 인스턴스들에 대한 팩토리. 어플리케이션에 노출되지는 않지만 개발자에 의해 확장/구현 된다."
+#. Tag: para
+#: architecture.xml:153
+#, no-c-format
+msgid ""
+"(Optional) A factory for <literal>Transaction</literal> instances. Not "
+"exposed to the application, but can be extended/implemented by the developer."
+msgstr ""
+"(옵션) <literal>Transaction</literal> 인스턴스들에 대한 팩토리. 어플리케이션"
+"에 노출되지는 않지만 개발자에 의해 확장/구현 된다."
-#: index.docbook:160
+#. Tag: emphasis
+#: architecture.xml:160
+#, no-c-format
msgid "Extension Interfaces"
msgstr "Extension Interfaces"
-#: index.docbook:162
-msgid "Hibernate offers many optional extension interfaces you can implement to customize the behavior of your persistence layer. See the API documentation for details."
-msgstr "Hibernate는 당신의 영속 계층의 특성을 맞춤화 시키기 위해 당신이 구현할 수 있는 선택적인 확장 인터페이스들을 제공한다. 상세한 것은 API 문서를 보라."
+#. Tag: para
+#: architecture.xml:162
+#, no-c-format
+msgid ""
+"Hibernate offers many optional extension interfaces you can implement to "
+"customize the behavior of your persistence layer. See the API documentation "
+"for details."
+msgstr ""
+"Hibernate는 당신의 영속 계층의 특성을 맞춤화 시키기 위해 당신이 구현할 수 있"
+"는 선택적인 확장 인터페이스들을 제공한다. 상세한 것은 API 문서를 보라."
-#: index.docbook:171
-msgid "Given a \"lite\" architecture, the application bypasses the <literal>Transaction</literal>/<literal>TransactionFactory</literal> and/or <literal>ConnectionProvider</literal> APIs to talk to JTA or JDBC directly."
-msgstr "주어진 \"경량급\" 아키텍처의 경우, 어플리케이션은 JTA 또는 JDBC와 직접 대화하기 위해서 <literal>Transaction</literal>/<literal>TransactionFactory</literal> 그리고/또는 <literal>ConnectionProvider</literal> API들을 무시한다."
+#. Tag: para
+#: architecture.xml:171
+#, no-c-format
+msgid ""
+"Given a \"lite\" architecture, the application bypasses the "
+"<literal>Transaction</literal>/<literal>TransactionFactory</literal> and/or "
+"<literal>ConnectionProvider</literal> APIs to talk to JTA or JDBC directly."
+msgstr ""
+"주어진 \"경량급\" 아키텍처의 경우, 어플리케이션은 JTA 또는 JDBC와 직접 대화하"
+"기 위해서 <literal>Transaction</literal>/<literal>TransactionFactory</"
+"literal> 그리고/또는 <literal>ConnectionProvider</literal> API들을 무시한다."
-#: index.docbook:179
+#. Tag: title
+#: architecture.xml:179
+#, no-c-format
msgid "Instance states"
msgstr "인스턴스 상태들"
-#: index.docbook:180
-msgid "An instance of a persistent classes may be in one of three different states, which are defined with respect to a <emphasis>persistence context</emphasis>. The Hibernate <literal>Session</literal> object is the persistence context:"
-msgstr "영속 클래스들의 인스턴스는 세개의 상태들 중 하나 일 수 있다. 그것들(상태들)은 영속 컨텍스트(<emphasis>persistence context</emphasis>)에 대해 정의된다. Hibernate <literal>Session</literal> 객체는 영속 컨텍스트이다:"
+#. Tag: para
+#: architecture.xml:180
+#, no-c-format
+msgid ""
+"An instance of a persistent classes may be in one of three different states, "
+"which are defined with respect to a <emphasis>persistence context</"
+"emphasis>. The Hibernate <literal>Session</literal> object is the "
+"persistence context:"
+msgstr ""
+"영속 클래스들의 인스턴스는 세개의 상태들 중 하나 일 수 있다. 그것들(상태들)"
+"은 영속 컨텍스트(<emphasis>persistence context</emphasis>)에 대해 정의된다. "
+"Hibernate <literal>Session</literal> 객체는 영속 컨텍스트이다:"
-#: index.docbook:188
+#. Tag: term
+#: architecture.xml:188
+#, no-c-format
msgid "transient"
msgstr "transient"
-#: index.docbook:190
-msgid "The instance is not, and has never been associated with any persistence context. It has no persistent identity (primary key value)."
-msgstr "인스턴스는 임의의 컨텍스트와 연관되어 있지 않고, 결코 연관된 적이 없었다. 그것은 영속 식별자(프라이머리 키 값)을 갖지 않는다."
+#. Tag: para
+#: architecture.xml:190
+#, no-c-format
+msgid ""
+"The instance is not, and has never been associated with any persistence "
+"context. It has no persistent identity (primary key value)."
+msgstr ""
+"인스턴스는 임의의 컨텍스트와 연관되어 있지 않고, 결코 연관된 적이 없었다. 그"
+"것은 영속 식별자(프라이머리 키 값)을 갖지 않는다."
-#: index.docbook:198
+#. Tag: term
+#: architecture.xml:198
+#, no-c-format
msgid "persistent"
msgstr "persistent"
-#: index.docbook:200
-msgid "The instance is currently associated with a persistence context. It has a persistent identity (primary key value) and, perhaps, a corresponding row in the database. For a particular persistence context, Hibernate <emphasis>guarantees</emphasis> that persistent identity is equivalent to Java identity (in-memory location of the object)."
-msgstr "인스턴스는 현재 영속 컨텍스트와 연관되어 있다. 그것은 영속 식별자(프라이머리 키 값) 그리고 아마 데이터베이스 내에 있는 대응하는 행을 갖는다. 특별한 영속 컨텍스트의 경우, Hibernate는 영속 identity가 Java identity(객체의 메모리 내 위치)와 같다는 점을 <emphasis>보증한다</emphasis>."
+#. Tag: para
+#: architecture.xml:200
+#, no-c-format
+msgid ""
+"The instance is currently associated with a persistence context. It has a "
+"persistent identity (primary key value) and, perhaps, a corresponding row in "
+"the database. For a particular persistence context, Hibernate "
+"<emphasis>guarantees</emphasis> that persistent identity is equivalent to "
+"Java identity (in-memory location of the object)."
+msgstr ""
+"인스턴스는 현재 영속 컨텍스트와 연관되어 있다. 그것은 영속 식별자(프라이머리 "
+"키 값) 그리고 아마 데이터베이스 내에 있는 대응하는 행을 갖는다. 특별한 영속 "
+"컨텍스트의 경우, Hibernate는 영속 identity가 Java identity(객체의 메모리 내 "
+"위치)와 같다는 점을 <emphasis>보증한다</emphasis>."
-#: index.docbook:212
+#. Tag: term
+#: architecture.xml:212
+#, no-c-format
msgid "detached"
msgstr "detached"
-#: index.docbook:214
-msgid "The instance was once associated with a persistence context, but that context was closed, or the instance was serialized to another process. It has a persistent identity and, perhaps, a corrsponding row in the database. For detached instances, Hibernate makes no guarantees about the relationship between persistent identity and Java identity."
-msgstr "인스턴스는 영속 컨텍스트와 한번 연관되었지만, 그 컨텍스트가 닫혔거나, 그 인스턴스가 또 다른 프로세스로 직렬화 되었다. 그것은 영속 identity 그리고, 아마 데이터베이스 내에 대응하는 행을 갖는다. detached 인스턴스들의 경우, Hibernate는 영속 identity과 Java identity 사이의 관계를 보증하지 않는다."
+#. Tag: para
+#: architecture.xml:214
+#, no-c-format
+msgid ""
+"The instance was once associated with a persistence context, but that "
+"context was closed, or the instance was serialized to another process. It "
+"has a persistent identity and, perhaps, a corrsponding row in the database. "
+"For detached instances, Hibernate makes no guarantees about the relationship "
+"between persistent identity and Java identity."
+msgstr ""
+"인스턴스는 영속 컨텍스트와 한번 연관되었지만, 그 컨텍스트가 닫혔거나, 그 인스"
+"턴스가 또 다른 프로세스로 직렬화 되었다. 그것은 영속 identity 그리고, 아마 데"
+"이터베이스 내에 대응하는 행을 갖는다. detached 인스턴스들의 경우, Hibernate"
+"는 영속 identity과 Java identity 사이의 관계를 보증하지 않는다."
-#: index.docbook:229
+#. Tag: title
+#: architecture.xml:229
+#, no-c-format
msgid "JMX Integration"
msgstr "JMX 통합"
-#: index.docbook:231
-msgid "JMX is the J2EE standard for management of Java components. Hibernate may be managed via a JMX standard service. We provide an MBean implementation in the distribution, <literal>org.hibernate.jmx.HibernateService</literal>."
-msgstr "JMX는 자바 컴포넌트 관리를 위한 J2EE 표준이다. Hibernate는 JMX 표준 서비스를 통해 관리될 수도 있다. 우리는 배포본 내에 MBean 구현, <literal>org.hibernate.jmx.HibernateService</literal>를 제공한다."
+#. Tag: para
+#: architecture.xml:231
+#, no-c-format
+msgid ""
+"JMX is the J2EE standard for management of Java components. Hibernate may be "
+"managed via a JMX standard service. We provide an MBean implementation in "
+"the distribution, <literal>org.hibernate.jmx.HibernateService</literal>."
+msgstr ""
+"JMX는 자바 컴포넌트 관리를 위한 J2EE 표준이다. Hibernate는 JMX 표준 서비스를 "
+"통해 관리될 수도 있다. 우리는 배포본 내에 MBean 구현, <literal>org.hibernate."
+"jmx.HibernateService</literal>를 제공한다."
-#: index.docbook:237
-msgid "For an example how to deploy Hibernate as a JMX service on the JBoss Application Server, please see the JBoss User Guide. On JBoss AS, you also get these benefits if you deploy using JMX:"
-msgstr "JBoss 어플리케이션 서버 상에 Hibernae를 JMX 서비스로서 배치하는 방법에 대한 예제는 JBoss 사용자 가이드를 보길 바란다. JBoss 어플리케이션 서버 상에서, 만일 당신이 JMX를 사용하여 배치할 경우 당신은 또한 다음 이점들을 얻는다:"
+#. Tag: para
+#: architecture.xml:237
+#, no-c-format
+msgid ""
+"For an example how to deploy Hibernate as a JMX service on the JBoss "
+"Application Server, please see the JBoss User Guide. On JBoss AS, you also "
+"get these benefits if you deploy using JMX:"
+msgstr ""
+"JBoss 어플리케이션 서버 상에 Hibernae를 JMX 서비스로서 배치하는 방법에 대한 "
+"예제는 JBoss 사용자 가이드를 보길 바란다. JBoss 어플리케이션 서버 상에서, 만"
+"일 당신이 JMX를 사용하여 배치할 경우 당신은 또한 다음 이점들을 얻는다:"
-#: index.docbook:245
-msgid "<emphasis>Session Management:</emphasis> The Hibernate <literal>Session</literal>'s life cycle can be automatically bound to the scope of a JTA transaction. This means you no longer have to manually open and close the <literal>Session</literal>, this becomes the job of a JBoss EJB interceptor. You also don't have to worry about transaction demarcation in your code anymore (unless you'd like to write a portable persistence layer of course, use the optional Hibernate <literal>Transaction</literal> API for this). You call the <literal>HibernateContext</literal> to access a <literal>Session</literal>."
-msgstr "<emphasis>Session 관리:</emphasis> Hibernate <literal>Session</literal>의 생명주기가 JTA 트랜잭션의 영역 내에 자동적으로 바인드 될 수 있다. 이것은 당신이 더이상 <literal>Session</literal>을 수작업으로 열고 닫지 않아도 됨을 의미하고, 이것은 JBoss EJB 인터셉터의 업무가 된다. 당신은 또한 더 이상 당신의 코드 어느 곳에서든 트랜잭션 경계설정에 대해 걱정하지 않아도 된다(당신이 물론 이식성 있는 영속 계층을 작성하고자 원하지 않는한, 이를 위해 옵션 Hibernate <literal>Transaction</literal> API를 사용하라). 당신은 <literal>Session</literal>에 접근하기 위해 <literal>HibernateContext</literal>를 호출한다."
+#. Tag: para
+#: architecture.xml:245
+#, no-c-format
+msgid ""
+"<emphasis>Session Management:</emphasis> The Hibernate <literal>Session</"
+"literal>'s life cycle can be automatically bound to the scope of a JTA "
+"transaction. This means you no longer have to manually open and close the "
+"<literal>Session</literal>, this becomes the job of a JBoss EJB interceptor. "
+"You also don't have to worry about transaction demarcation in your code "
+"anymore (unless you'd like to write a portable persistence layer of course, "
+"use the optional Hibernate <literal>Transaction</literal> API for this). You "
+"call the <literal>HibernateContext</literal> to access a <literal>Session</"
+"literal>."
+msgstr ""
+"<emphasis>Session 관리:</emphasis> Hibernate <literal>Session</literal>의 생"
+"명주기가 JTA 트랜잭션의 영역 내에 자동적으로 바인드 될 수 있다. 이것은 당신"
+"이 더이상 <literal>Session</literal>을 수작업으로 열고 닫지 않아도 됨을 의미"
+"하고, 이것은 JBoss EJB 인터셉터의 업무가 된다. 당신은 또한 더 이상 당신의 코"
+"드 어느 곳에서든 트랜잭션 경계설정에 대해 걱정하지 않아도 된다(당신이 물론 이"
+"식성 있는 영속 계층을 작성하고자 원하지 않는한, 이를 위해 옵션 Hibernate "
+"<literal>Transaction</literal> API를 사용하라). 당신은 <literal>Session</"
+"literal>에 접근하기 위해 <literal>HibernateContext</literal>를 호출한다."
-#: index.docbook:257
-msgid "<emphasis>HAR deployment:</emphasis> Usually you deploy the Hibernate JMX service using a JBoss service deployment descriptor (in an EAR and/or SAR file), it supports all the usual configuration options of a Hibernate <literal>SessionFactory</literal>. However, you still have to name all your mapping files in the deployment descriptor. If you decide to use the optional HAR deployment, JBoss will automatically detect all mapping files in your HAR file."
-msgstr "<emphasis>HAR 배치:</emphasis> 대개 당신은 JBoss 서비스 배치 디스크립터를 사용하여 Hibernate JMX 서비스를 (EAR 과/또는 SAR 파일로) 배치하고, 그것은 Hibernate <literal>SessionFactory</literal>의 통상적인 구성 옵션들 모두를 지원한다. 하지만 당신은 여전히 모든 당신의 매핑 파일들을 배치 디스크립터 속에 명명해야 한다. 만일 당신이 옵션 HAR 배치를 사용하고자 결정하는 경우, JBoss는 당신의 HAR 파일 내에 있는 모든 매핑 파일들을 자동적으로 검출해낼 것이다."
+#. Tag: para
+#: architecture.xml:257
+#, no-c-format
+msgid ""
+"<emphasis>HAR deployment:</emphasis> Usually you deploy the Hibernate JMX "
+"service using a JBoss service deployment descriptor (in an EAR and/or SAR "
+"file), it supports all the usual configuration options of a Hibernate "
+"<literal>SessionFactory</literal>. However, you still have to name all your "
+"mapping files in the deployment descriptor. If you decide to use the "
+"optional HAR deployment, JBoss will automatically detect all mapping files "
+"in your HAR file."
+msgstr ""
+"<emphasis>HAR 배치:</emphasis> 대개 당신은 JBoss 서비스 배치 디스크립터를 사"
+"용하여 Hibernate JMX 서비스를 (EAR 과/또는 SAR 파일로) 배치하고, 그것은 "
+"Hibernate <literal>SessionFactory</literal>의 통상적인 구성 옵션들 모두를 지"
+"원한다. 하지만 당신은 여전히 모든 당신의 매핑 파일들을 배치 디스크립터 속에 "
+"명명해야 한다. 만일 당신이 옵션 HAR 배치를 사용하고자 결정하는 경우, JBoss는 "
+"당신의 HAR 파일 내에 있는 모든 매핑 파일들을 자동적으로 검출해낼 것이다."
-#: index.docbook:268
-msgid "Consult the JBoss AS user guide for more information about these options."
-msgstr "이들 옵션들에 대한 추가 정보는 JBoss 어플리케이션 서버 사용자 가이드를 참조하라."
+#. Tag: para
+#: architecture.xml:268
+#, no-c-format
+msgid ""
+"Consult the JBoss AS user guide for more information about these options."
+msgstr ""
+"이들 옵션들에 대한 추가 정보는 JBoss 어플리케이션 서버 사용자 가이드를 참조하"
+"라."
-#: index.docbook:272
-msgid "Another feature available as a JMX service are runtime Hibernate statistics. See <xref linkend=\"configuration-optional-statistics\"/>."
-msgstr "JMX 서비스로서 이용 가능한 또다른 특징은 런타임 Hibernate 통계이다. <xref linkend=\"configuration-optional-statistics\"/>를 보라."
+#. Tag: para
+#: architecture.xml:272
+#, no-c-format
+msgid ""
+"Another feature available as a JMX service are runtime Hibernate statistics. "
+"See <xref linkend=\"configuration-optional-statistics\"/>."
+msgstr ""
+"JMX 서비스로서 이용 가능한 또다른 특징은 런타임 Hibernate 통계이다. <xref "
+"linkend=\"configuration-optional-statistics\"/>를 보라."
-#: index.docbook:279
+#. Tag: title
+#: architecture.xml:279
+#, no-c-format
msgid "JCA Support"
msgstr "JCA 지원"
-#: index.docbook:280
-msgid "Hibernate may also be configured as a JCA connector. Please see the website for more details. Please note that Hibernate JCA support is still considered experimental."
-msgstr "Hibernate는 JCA 커넥터로서 구성될 수도 있다. 상세한 것은 웹 사이트를 보길 바란다. Hibernate JCA 지원은 여전히 실험적으로 검토 중에 있음을 노트하길 바란다."
+#. Tag: para
+#: architecture.xml:280
+#, no-c-format
+msgid ""
+"Hibernate may also be configured as a JCA connector. Please see the website "
+"for more details. Please note that Hibernate JCA support is still considered "
+"experimental."
+msgstr ""
+"Hibernate는 JCA 커넥터로서 구성될 수도 있다. 상세한 것은 웹 사이트를 보길 바"
+"란다. Hibernate JCA 지원은 여전히 실험적으로 검토 중에 있음을 노트하길 바란"
+"다."
-#: index.docbook:287
+#. Tag: title
+#: architecture.xml:287
+#, no-c-format
msgid "Contextual Sessions"
msgstr "컨텍스트 상의 세션들"
-#: index.docbook:288
-msgid "Most applications using Hibernate need some form of \"contextual\" sessions, where a given session is in effect throughout the scope of a given context. However, across applications the definition of what constitutes a context is typically different; and different contexts define different scopes to the notion of current. Applications using Hibernate prior to version 3.0 tended to utilize either home-grown <literal>ThreadLocal</literal>-based contextual sessions, helper classes such as <literal>HibernateUtil</literal>, or utilized third-party frameworks (such as Spring or Pico) which provided proxy/interception-based contextual sessions."
-msgstr "Hibernate를 사용하는 대부분의 어플리케이션들은 어떤 양식의 \"컨텍스트상의(contextual)\" 세션들을 필요로 한다. 여기서 주어진 세션은 주어진 컨텍스트의 영역에 걸쳐 활동을 한다. 하지만 어플리케이션들을 가로질러 컨텍스트를 구성하는 것에 대한 정의는 일반적으로 다르다; 그리고 다른 컨텍스트들은 현재라고 하는 개념에 대해 다른 영역들을 정의한다. 버전 3.0 전의 Hibernate를 사용하는 어플리케이션들은 자가생산된 <literal>ThreadLocal</literal>-기반의 컨텍스상의 세션들, <literal>HibernateUtil</literal>과 같은 helper 클래스들을 활용했거나 프락시/인터셉션 기반의 컨텍스트상의 세션들을 제공해주었던 (Spring 또는 Pico와 같은 )제 3의 프레임웍들을 활용하는 경향이 있었다."
+#. Tag: para
+#: architecture.xml:288
+#, no-c-format
+msgid ""
+"Most applications using Hibernate need some form of \"contextual\" sessions, "
+"where a given session is in effect throughout the scope of a given context. "
+"However, across applications the definition of what constitutes a context is "
+"typically different; and different contexts define different scopes to the "
+"notion of current. Applications using Hibernate prior to version 3.0 tended "
+"to utilize either home-grown <literal>ThreadLocal</literal>-based contextual "
+"sessions, helper classes such as <literal>HibernateUtil</literal>, or "
+"utilized third-party frameworks (such as Spring or Pico) which provided "
+"proxy/interception-based contextual sessions."
+msgstr ""
+"Hibernate를 사용하는 대부분의 어플리케이션들은 어떤 양식의 \"컨텍스트상의"
+"(contextual)\" 세션들을 필요로 한다. 여기서 주어진 세션은 주어진 컨텍스트의 "
+"영역에 걸쳐 활동을 한다. 하지만 어플리케이션들을 가로질러 컨텍스트를 구성하"
+"는 것에 대한 정의는 일반적으로 다르다; 그리고 다른 컨텍스트들은 현재라고 하"
+"는 개념에 대해 다른 영역들을 정의한다. 버전 3.0 전의 Hibernate를 사용하는 어"
+"플리케이션들은 자가생산된 <literal>ThreadLocal</literal>-기반의 컨텍스상의 세"
+"션들, <literal>HibernateUtil</literal>과 같은 helper 클래스들을 활용했거나 프"
+"락시/인터셉션 기반의 컨텍스트상의 세션들을 제공해주었던 (Spring 또는 Pico와 "
+"같은 )제 3의 프레임웍들을 활용하는 경향이 있었다."
-#: index.docbook:297
-msgid "Starting with version 3.0.1, Hibernate added the <literal>SessionFactory.getCurrentSession()</literal> method. Initially, this assumed usage of <literal>JTA</literal> transactions, where the <literal>JTA</literal> transaction defined both the scope and context of a current session. The Hibernate team maintains that, given the maturity of the numerous stand-alone <literal>JTA TransactionManager</literal> implementations out there, most (if not all) applications should be using <literal>JTA</literal> transaction management whether or not they are deployed into a <literal>J2EE</literal> container. Based on that, the <literal>JTA</literal>-based contextual sessions is all you should ever need to use."
-msgstr "버전 3.0.1에서부터 시작하여, Hibernate는 <literal>SessionFactory.getCurrentSession()</literal> 메소드를 추가했다. 초기에 이것은 <literal>JTA</literal> 트랜잭션들을 사용하는 것을 전제했다. 여기서 <literal>JTA</literal> 트랜잭션은 현재 세션의 영역과 컨텍스트를 정의했다. Hibernate 팀은 성숙된 다수의 스탠드얼론 <literal>JTA TransactionManager</literal> 구현들이 발표되면, (전부는 아니겠지만) 대부분의 어플리케이션들이 그것들이 <literal>J2EE</literal> 컨테이너 내로 배치되든 그렇지 않든 간에 <literal>JTA</literal> 트랜잭션 관리를 사용하게 될 것이라고 주장한다. 그것에 기초하여, <literal>JTA</literal>에 기반한 컨텍스트상의 세션들은 언젠가 당신이 사용을 필요로 하게 될 전부다."
+#. Tag: para
+#: architecture.xml:297
+#, no-c-format
+msgid ""
+"Starting with version 3.0.1, Hibernate added the <literal>SessionFactory."
+"getCurrentSession()</literal> method. Initially, this assumed usage of "
+"<literal>JTA</literal> transactions, where the <literal>JTA</literal> "
+"transaction defined both the scope and context of a current session. The "
+"Hibernate team maintains that, given the maturity of the numerous stand-"
+"alone <literal>JTA TransactionManager</literal> implementations out there, "
+"most (if not all) applications should be using <literal>JTA</literal> "
+"transaction management whether or not they are deployed into a "
+"<literal>J2EE</literal> container. Based on that, the <literal>JTA</literal>-"
+"based contextual sessions is all you should ever need to use."
+msgstr ""
+"버전 3.0.1에서부터 시작하여, Hibernate는 <literal>SessionFactory."
+"getCurrentSession()</literal> 메소드를 추가했다. 초기에 이것은 <literal>JTA</"
+"literal> 트랜잭션들을 사용하는 것을 전제했다. 여기서 <literal>JTA</literal> "
+"트랜잭션은 현재 세션의 영역과 컨텍스트를 정의했다. Hibernate 팀은 성숙된 다수"
+"의 스탠드얼론 <literal>JTA TransactionManager</literal> 구현들이 발표되면, "
+"(전부는 아니겠지만) 대부분의 어플리케이션들이 그것들이 <literal>J2EE</"
+"literal> 컨테이너 내로 배치되든 그렇지 않든 간에 <literal>JTA</literal> 트랜"
+"잭션 관리를 사용하게 될 것이라고 주장한다. 그것에 기초하여, <literal>JTA</"
+"literal>에 기반한 컨텍스트상의 세션들은 언젠가 당신이 사용을 필요로 하게 될 "
+"전부다."
-#: index.docbook:307
-msgid "However, as of version 3.1, the processing behind <literal>SessionFactory.getCurrentSession()</literal> is now pluggable. To that end, a new extension interface (<literal>org.hibernate.context.CurrentSessionContext</literal>) and a new configuration parameter (<literal>hibernate.current_session_context_class</literal>) have been added to allow pluggability of the scope and context of defining current sessions."
-msgstr "하지만 버전 3.1 이후로 <literal>SessionFactory.getCurrentSession()</literal> 이면의 처리과정은 이제 플러그 가능하다. 그것을 끝내기 위해, 하나의 새로운 확장 인터페이스 (<literal>org.hibernate.context.CurrentSessionContext</literal>)와 하나의 새로운 구성 파라미터(<literal>hibernate.current_session_context_class</literal>)가 현재 세션들을 정의하는 영역과 컨텍스트의 플러그 가능성을 허용하기 위해 추가되었다."
+#. Tag: para
+#: architecture.xml:307
+#, no-c-format
+msgid ""
+"However, as of version 3.1, the processing behind <literal>SessionFactory."
+"getCurrentSession()</literal> is now pluggable. To that end, a new extension "
+"interface (<literal>org.hibernate.context.CurrentSessionContext</literal>) "
+"and a new configuration parameter (<literal>hibernate."
+"current_session_context_class</literal>) have been added to allow "
+"pluggability of the scope and context of defining current sessions."
+msgstr ""
+"하지만 버전 3.1 이후로 <literal>SessionFactory.getCurrentSession()</literal> "
+"이면의 처리과정은 이제 플러그 가능하다. 그것을 끝내기 위해, 하나의 새로운 확"
+"장 인터페이스 (<literal>org.hibernate.context.CurrentSessionContext</"
+"literal>)와 하나의 새로운 구성 파라미터(<literal>hibernate."
+"current_session_context_class</literal>)가 현재 세션들을 정의하는 영역과 컨텍"
+"스트의 플러그 가능성을 허용하기 위해 추가되었다."
-#: index.docbook:314
-msgid "See the Javadocs for the <literal>org.hibernate.context.CurrentSessionContext</literal> interface for a detailed discussion of its contract. It defines a single method, <literal>currentSession()</literal>, by which the implementation is responsible for tracking the current contextual session. Out-of-the-box, Hibernate comes with three implementations of this interface."
-msgstr "그것의 계약에 대한 상세한 논의는 <literal>org.hibernate.context.CurrentSessionContext</literal> 인터페이스에 관한 javadocs를 보라. 그것은 하나의 메소드, <literal>currentSession()</literal>를 정의하며, 그 구현은 현재의 컨텍스트 상의 세션을 추적할 책임이 있다. 비공식적으로, Hibernate는 이 인터페이스에 대한 세 개의 구현들을 부수적으로 포함하고 있다."
+#. Tag: para
+#: architecture.xml:314
+#, no-c-format
+msgid ""
+"See the Javadocs for the <literal>org.hibernate.context."
+"CurrentSessionContext</literal> interface for a detailed discussion of its "
+"contract. It defines a single method, <literal>currentSession()</literal>, "
+"by which the implementation is responsible for tracking the current "
+"contextual session. Out-of-the-box, Hibernate comes with three "
+"implementations of this interface."
+msgstr ""
+"그것의 계약에 대한 상세한 논의는 <literal>org.hibernate.context."
+"CurrentSessionContext</literal> 인터페이스에 관한 javadocs를 보라. 그것은 하"
+"나의 메소드, <literal>currentSession()</literal>를 정의하며, 그 구현은 현재"
+"의 컨텍스트 상의 세션을 추적할 책임이 있다. 비공식적으로, Hibernate는 이 인터"
+"페이스에 대한 세 개의 구현들을 부수적으로 포함하고 있다."
-#: index.docbook:324
-msgid "<literal>org.hibernate.context.JTASessionContext</literal> - current sessions are tracked and scoped by a <literal>JTA</literal> transaction. The processing here is exactly the same as in the older JTA-only approach. See the Javadocs for details."
-msgstr "<literal>org.hibernate.context.JTASessionContext</literal> - 현재의 세션들은 하나의 <literal>JTA</literal>에 의해 추적되고 영역화 된다. 여기서 처리과정은 이전의 JTA-전용 접근과 정확하게 동일하다. 상세한 것은 javadocs를 보라."
+#. Tag: para
+#: architecture.xml:324
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.JTASessionContext</literal> - current "
+"sessions are tracked and scoped by a <literal>JTA</literal> transaction. The "
+"processing here is exactly the same as in the older JTA-only approach. See "
+"the Javadocs for details."
+msgstr ""
+"<literal>org.hibernate.context.JTASessionContext</literal> - 현재의 세션들은 "
+"하나의 <literal>JTA</literal>에 의해 추적되고 영역화 된다. 여기서 처리과정은 "
+"이전의 JTA-전용 접근과 정확하게 동일하다. 상세한 것은 javadocs를 보라."
-#: index.docbook:332
-msgid "<literal>org.hibernate.context.ThreadLocalSessionContext</literal> - current sessions are tracked by thread of execution. Again, see the Javadocs for details."
-msgstr "<literal>org.hibernate.context.ThreadLocalSessionContext</literal> - 현재의 세션들은 실행 쓰레드에 의해 추적된다. 상세한 것은 다시 javadocs를 보라."
+#. Tag: para
+#: architecture.xml:332
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.ThreadLocalSessionContext</literal> - current "
+"sessions are tracked by thread of execution. Again, see the Javadocs for "
+"details."
+msgstr ""
+"<literal>org.hibernate.context.ThreadLocalSessionContext</literal> - 현재의 "
+"세션들은 실행 쓰레드에 의해 추적된다. 상세한 것은 다시 javadocs를 보라."
-#: index.docbook:338
-msgid "<literal>org.hibernate.context.ManagedSessionContext</literal> - current sessions are tracked by thread of execution. However, you are responsible to bind and unbind a <literal>Session</literal> instance with static methods on this class, it does never open, flush, or close a <literal>Session</literal>."
-msgstr "처음의 두 구현들은 <emphasis>session-per-request</emphasis>로 알려지고 사용되고 있는 \"하나의 세션 - 하나의 데이터베이스 트랜잭션\" 프로그래밍 모형을 제공한다. 하나의 Hibernate 세션의 시작과 끝은 데이터베이스 트랜잭션의 존속 기간에 의해 정의된다. 만일 (예를 들면 순수 J2SE에서 또는 JTA/UserTransaction/BMT의 경우에) 당신이 프로그램 상의 트랜잭션 경계구분을 사용할 경우, 당신은 당신의 코드로부터 기본 트랜잭션 시스템을 은폐시키는데 Hibernate <literal>Transaction</literal> API를 사용하는 것이 권장된다. 만일 당신이 CMT를 지원하는 하나의 EJB 컨테이너에서 실행할 경우, 트랜잭션 경계들이 선언적으로 정의되고 당신은 당신의 코드 내에 어떤 트랜잭션도 세션 경계구분 오퍼레이션들을 필요로 하지 않는다. 추가 정보와 코드 예제들은 <xref linken!
d=\"transactions\"/>를 참조하라."
+#. Tag: para
+#: architecture.xml:338
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.context.ManagedSessionContext</literal> - current "
+"sessions are tracked by thread of execution. However, you are responsible to "
+"bind and unbind a <literal>Session</literal> instance with static methods on "
+"this class, it does never open, flush, or close a <literal>Session</literal>."
+msgstr ""
+"NOT TRANSLATED! <literal>org.hibernate.context.ManagedSessionContext</"
+"literal> - current sessions are tracked by thread of execution. However, you "
+"are responsible to bind and unbind a <literal>Session</literal> instance "
+"with static methods on this class, it does never open, flush, or close a "
+"<literal>Session</literal>."
-#: index.docbook:347
-msgid "The first two implementations provide a \"one session - one database transaction\" programming model, also known and used as <emphasis>session-per-request</emphasis>. The beginning and end of a Hibernate session is defined by the duration of a database transaction. If you use programatic transaction demarcation in plain JSE without JTA, you are adviced to use the Hibernate <literal>Transaction</literal> API to hide the underlying transaction system from your code. If you use JTA, use the JTA interfaces to demarcate transactions. If you execute in an EJB container that supports CMT, transaction boundaries are defined declaratively and you don't need any transaction or session demarcation operations in your code. Refer to <xref linkend=\"transactions\"/> for more information and code examples."
-msgstr "<literal>hibernate.current_session_context_class</literal> 구성 파라미터는 <literal>org.hibernate.context.CurrentSessionContext</literal> 구현이 사용될 것임을 정의한다. 역호환을 위해. 만일 이 구성 파라미터가 설정되지 않았지만 하나의 <literal>org.hibernate.transaction.TransactionManagerLookup</literal>이 구성되어 있을 경우, Hibernate는 <literal>org.hibernate.context.JTASessionContext</literal>를 사용할 것임을 노트하라. 일반적으로, 이 파라미터의 값은 단지 사용할 구현 클래스를 명명할 것이다; 하지만 두 가지 비공식적인 구현들로서 두 개의 대응하는 짧은 이름들 \"jta\"와 \"thread\"이 존재한다."
+#. Tag: para
+#: architecture.xml:347
+#, no-c-format
+msgid ""
+"The first two implementations provide a \"one session - one database "
+"transaction\" programming model, also known and used as <emphasis>session-"
+"per-request</emphasis>. The beginning and end of a Hibernate session is "
+"defined by the duration of a database transaction. If you use programatic "
+"transaction demarcation in plain JSE without JTA, you are adviced to use the "
+"Hibernate <literal>Transaction</literal> API to hide the underlying "
+"transaction system from your code. If you use JTA, use the JTA interfaces to "
+"demarcate transactions. If you execute in an EJB container that supports "
+"CMT, transaction boundaries are defined declaratively and you don't need any "
+"transaction or session demarcation operations in your code. Refer to <xref "
+"linkend=\"transactions\"/> for more information and code examples."
+msgstr ""
+"처음의 두 구현들은 <emphasis>session-per-request</emphasis>로 알려지고 사용되"
+"고 있는 \"하나의 세션 - 하나의 데이터베이스 트랜잭션\" 프로그래밍 모형을 제공"
+"한다. 하나의 Hibernate 세션의 시작과 끝은 데이터베이스 트랜잭션의 존속 기간"
+"에 의해 정의된다. 만일 (예를 들면 순수 J2SE에서 또는 JTA/UserTransaction/BMT"
+"의 경우에) 당신이 프로그램 상의 트랜잭션 경계구분을 사용할 경우, 당신은 당신"
+"의 코드로부터 기본 트랜잭션 시스템을 은폐시키는데 Hibernate "
+"<literal>Transaction</literal> API를 사용하는 것이 권장된다. 만일 당신이 CMT"
+"를 지원하는 하나의 EJB 컨테이너에서 실행할 경우, 트랜잭션 경계들이 선언적으"
+"로 정의되고 당신은 당신의 코드 내에 어떤 트랜잭션도 세션 경계구분 오퍼레이션"
+"들을 필요로 하지 않는다. 추가 정보와 코드 예제들은 <xref linkend="
+"\"transactions\"/>를 참조하라."
-#: index.docbook:359
-msgid "The <literal>hibernate.current_session_context_class</literal> configuration parameter defines which <literal>org.hibernate.context.CurrentSessionContext</literal> implementation should be used. Note that for backwards compatibility, if this config param is not set but a <literal>org.hibernate.transaction.TransactionManagerLookup</literal> is configured, Hibernate will use the <literal>org.hibernate.context.JTASessionContext</literal>. Typically, the value of this parameter would just name the implementation class to use; for the three out-of-the-box implementations, however, there are three corresponding short names, \"jta\", \"thread\", and \"managed\"."
+#. Tag: para
+#: architecture.xml:359
+#, no-c-format
+msgid ""
+"The <literal>hibernate.current_session_context_class</literal> configuration "
+"parameter defines which <literal>org.hibernate.context."
+"CurrentSessionContext</literal> implementation should be used. Note that for "
+"backwards compatibility, if this config param is not set but a <literal>org."
+"hibernate.transaction.TransactionManagerLookup</literal> is configured, "
+"Hibernate will use the <literal>org.hibernate.context.JTASessionContext</"
+"literal>. Typically, the value of this parameter would just name the "
+"implementation class to use; for the three out-of-the-box implementations, "
+"however, there are three corresponding short names, \"jta\", \"thread\", and "
+"\"managed\"."
msgstr ""
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+"<literal>hibernate.current_session_context_class</literal> 구성 파라미터는 "
+"<literal>org.hibernate.context.CurrentSessionContext</literal> 구현이 사용될 "
+"것임을 정의한다. 역호환을 위해. 만일 이 구성 파라미터가 설정되지 않았지만 하"
+"나의 <literal>org.hibernate.transaction.TransactionManagerLookup</literal>이 "
+"구성되어 있을 경우, Hibernate는 <literal>org.hibernate.context."
+"JTASessionContext</literal>를 사용할 것임을 노트하라. 일반적으로, 이 파라미터"
+"의 값은 단지 사용할 구현 클래스를 명명할 것이다; 하지만 두 가지 비공식적인 구"
+"현들로서 두 개의 대응하는 짧은 이름들 \"jta\"와 \"thread\"이 존재한다."
Modified: core/trunk/documentation/manual/translations/ko-KR/content/association_mapping.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/association_mapping.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/association_mapping.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,952 +1,883 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:6
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: association_mapping.xml:6
+#, no-c-format
msgid "Association Mappings"
msgstr "연관 매핑들"
-#: index.docbook:9
+#. Tag: title
+#: association_mapping.xml:9
+#, no-c-format
msgid "Introduction"
-msgstr "<title>개요</title>"
+msgstr "개요"
-#: index.docbook:11
-msgid "Association mappings are the often most difficult thing to get right. In this section we'll go through the canonical cases one by one, starting with unidirectional mappings, and then considering the bidirectional cases. We'll use <literal>Person</literal> and <literal>Address</literal> in all the examples."
-msgstr "연관 매핑들은 올바른 것을 얻기가 종종 가장 어려운 것이다. 이 절에서 우리는 단방향 매핑들에서 시작하고, 그런 다음 양방향 경우들을 검토함으로써, 하나씩 표준적인 경우들을 상세히 논의할 것이다. 우리는 모든 예제들에서 <literal>Person</literal>과 <literal>Address</literal>를 사용할 것이다."
+#. Tag: para
+#: association_mapping.xml:11
+#, no-c-format
+msgid ""
+"Association mappings are the often most difficult thing to get right. In "
+"this section we'll go through the canonical cases one by one, starting with "
+"unidirectional mappings, and then considering the bidirectional cases. We'll "
+"use <literal>Person</literal> and <literal>Address</literal> in all the "
+"examples."
+msgstr ""
+"연관 매핑들은 올바른 것을 얻기가 종종 가장 어려운 것이다. 이 절에서 우리는 단"
+"방향 매핑들에서 시작하고, 그런 다음 양방향 경우들을 검토함으로써, 하나씩 표준"
+"적인 경우들을 상세히 논의할 것이다. 우리는 모든 예제들에서 <literal>Person</"
+"literal>과 <literal>Address</literal>를 사용할 것이다."
-#: index.docbook:19
-msgid "We'll classify associations by whether or not they map to an intervening join table, and by multiplicity."
-msgstr "우리는 연관들을 중재하는 join 테이블로 매핑시킬 것인지 여부에 따라, 그리고 multiplicity(다중성)에 따라 연관들을 분류할 것이다."
+#. Tag: para
+#: association_mapping.xml:19
+#, no-c-format
+msgid ""
+"We'll classify associations by whether or not they map to an intervening "
+"join table, and by multiplicity."
+msgstr ""
+"우리는 연관들을 중재하는 join 테이블로 매핑시킬 것인지 여부에 따라, 그리고 "
+"multiplicity(다중성)에 따라 연관들을 분류할 것이다."
-#: index.docbook:24
-msgid "Nullable foreign keys are not considered good practice in traditional data modelling, so all our examples use not null foreign keys. This is not a requirement of Hibernate, and the mappings will all work if you drop the nullability constraints."
-msgstr "null 허용 가능한 foreign 키들은 전통적인 데이터 모델링에서 좋은 실례로 간주되지 않아서, 모든 우리의 예제들은 not null foreign 키들을 사용한다. 이것은 Hibernate에서 필수가 아니고, 당신이 null 허용 가능 컨스트레인트들을 드롭시킬 경우 매핑들은 모두 동작할 것이다."
+#. Tag: para
+#: association_mapping.xml:24
+#, no-c-format
+msgid ""
+"Nullable foreign keys are not considered good practice in traditional data "
+"modelling, so all our examples use not null foreign keys. This is not a "
+"requirement of Hibernate, and the mappings will all work if you drop the "
+"nullability constraints."
+msgstr ""
+"null 허용 가능한 foreign 키들은 전통적인 데이터 모델링에서 좋은 실례로 간주되"
+"지 않아서, 모든 우리의 예제들은 not null foreign 키들을 사용한다. 이것은 "
+"Hibernate에서 필수가 아니고, 당신이 null 허용 가능 컨스트레인트들을 드롭시킬 "
+"경우 매핑들은 모두 동작할 것이다."
-#: index.docbook:34
+#. Tag: title
+#: association_mapping.xml:34
+#, no-c-format
msgid "Unidirectional associations"
msgstr "단방향 연관들"
-#: index.docbook:37, index.docbook:108
+#. Tag: title
+#: association_mapping.xml:37 association_mapping.xml:108
+#, no-c-format
msgid "many to one"
msgstr "many to one"
-#: index.docbook:39
-msgid "A <emphasis>unidirectional many-to-one association</emphasis> is the most common kind of unidirectional association."
-msgstr "<emphasis>단방향 many-to-one 연관</emphasis>은 가장 공통적인 종류의 단방향 연관이다."
+#. Tag: para
+#: association_mapping.xml:39
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional many-to-one association</emphasis> is the most "
+"common kind of unidirectional association."
+msgstr ""
+"<emphasis>단방향 many-to-one 연관</emphasis>은 가장 공통적인 종류의 단방향 연"
+"관이다."
-#: index.docbook:44
+#. Tag: programlisting
+#: association_mapping.xml:44
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <many-to-one name=\"address\" \n"
- " column=\"addressId\"\n"
- " not-null=\"true\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <many-to-one name=\"address\" \n"
+" column=\"addressId\"\n"
+" not-null=\"true\"/>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <many-to-one name=\"address\" \n"
- " column=\"addressId\"\n"
- " not-null=\"true\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
-#: index.docbook:45, index.docbook:161
+#. Tag: programlisting
+#: association_mapping.xml:45 association_mapping.xml:161
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key, addressId bigint not null )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key, addressId bigint "
+"not null )\n"
+"create table Address ( addressId bigint not null primary key )\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key, addressId bigint not null )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
-#: index.docbook:50, index.docbook:121, index.docbook:185, index.docbook:225
+#. Tag: title
+#: association_mapping.xml:50 association_mapping.xml:121
+#: association_mapping.xml:185 association_mapping.xml:225
+#, no-c-format
msgid "one to one"
msgstr "one to one"
-#: index.docbook:52
-msgid "A <emphasis>unidirectional one-to-one association on a foreign key</emphasis> is almost identical. The only difference is the column unique constraint."
-msgstr "<emphasis>foreign 키에 대한 단방향 one-to-one 연관은 대개 아주 동일하다.</emphasis> 유일한 차이점은 컬럼 유일(unique) 컨스트레인트이다."
+#. Tag: para
+#: association_mapping.xml:52
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a foreign key</"
+"emphasis> is almost identical. The only difference is the column unique "
+"constraint."
+msgstr ""
+"<emphasis>foreign 키에 대한 단방향 one-to-one 연관은 대개 아주 동일하다.</"
+"emphasis> 유일한 차이점은 컬럼 유일(unique) 컨스트레인트이다."
-#: index.docbook:57
+#. Tag: programlisting
+#: association_mapping.xml:57
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <many-to-one name=\"address\" \n"
- " column=\"addressId\" \n"
- " unique=\"true\"\n"
- " not-null=\"true\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <many-to-one name=\"address\" \n"
+" column=\"addressId\" \n"
+" unique=\"true\"\n"
+" not-null=\"true\"/>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <many-to-one name=\"address\" \n"
- " column=\"addressId\" \n"
- " unique=\"true\"\n"
- " not-null=\"true\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
-#: index.docbook:58, index.docbook:193
+#. Tag: programlisting
+#: association_mapping.xml:58 association_mapping.xml:193
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key, addressId bigint not null unique )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key, addressId bigint "
+"not null unique )\n"
+"create table Address ( addressId bigint not null primary key )\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key, addressId bigint not null unique )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
-#: index.docbook:60
-msgid "A <emphasis>unidirectional one-to-one association on a primary key</emphasis> usually uses a special id generator. (Notice that we've reversed the direction of the association in this example.)"
-msgstr "<emphasis>하나의 프라이머리 키에 대한 단방향 one-to-one 연관</emphasis>은 대개 특별한 id 생성기를 사용한다. (이 예제에서 연관의 방향이 역전되었음을 주목하라.)"
+#. Tag: para
+#: association_mapping.xml:60
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a primary key</"
+"emphasis> usually uses a special id generator. (Notice that we've reversed "
+"the direction of the association in this example.)"
+msgstr ""
+"<emphasis>하나의 프라이머리 키에 대한 단방향 one-to-one 연관</emphasis>은 대"
+"개 특별한 id 생성기를 사용한다. (이 예제에서 연관의 방향이 역전되었음을 주목"
+"하라.)"
-#: index.docbook:66
+#. Tag: programlisting
+#: association_mapping.xml:66
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"foreign\">\n"
- " <param name=\"property\">person</param>\n"
- " </generator>\n"
- " </id>\n"
- " <one-to-one name=\"person\" constrained=\"true\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"foreign\">\n"
+" <param name=\"property\">person</param>\n"
+" </generator>\n"
+" </id>\n"
+" <one-to-one name=\"person\" constrained=\"true\"/>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"foreign\">\n"
- " <param name=\"property\">person</param>\n"
- " </generator>\n"
- " </id>\n"
- " <one-to-one name=\"person\" constrained=\"true\"/>\n"
- "</class>]]>"
-#: index.docbook:67, index.docbook:201
+#. Tag: programlisting
+#: association_mapping.xml:67 association_mapping.xml:201
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table Address ( personId bigint not null primary key )\n"
- " ]]>"
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key )\n"
+"create table Address ( personId bigint not null primary key )\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table Address ( personId bigint not null primary key )\n"
- " ]]>"
-#: index.docbook:72, index.docbook:94
+#. Tag: title
+#: association_mapping.xml:72 association_mapping.xml:94
+#, no-c-format
msgid "one to many"
msgstr "one to many"
-#: index.docbook:74
-msgid "A <emphasis>unidirectional one-to-many association on a foreign key</emphasis> is a very unusual case, and is not really recommended."
-msgstr "<emphasis>하나의 foreign 키에 대한 단방향 one-to-many 연관</emphasis>은 매우 색다른 경우이고, 실제로 권장되지 않는다."
+#. Tag: para
+#: association_mapping.xml:74
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-many association on a foreign key</"
+"emphasis> is a very unusual case, and is not really recommended."
+msgstr ""
+"<emphasis>하나의 foreign 키에 대한 단방향 one-to-many 연관</emphasis>은 매우 "
+"색다른 경우이고, 실제로 권장되지 않는다."
-#: index.docbook:79
+#. Tag: programlisting
+#: association_mapping.xml:79
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\">\n"
- " <key column=\"personId\" \n"
- " not-null=\"true\"/>\n"
- " <one-to-many class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <set name=\"addresses\">\n"
+" <key column=\"personId\" \n"
+" not-null=\"true\"/>\n"
+" <one-to-many class=\"Address\"/>\n"
+" </set>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\">\n"
- " <key column=\"personId\" \n"
- " not-null=\"true\"/>\n"
- " <one-to-many class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
-#: index.docbook:80
+#. Tag: programlisting
+#: association_mapping.xml:80
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table Address ( addressId bigint not null primary key, personId bigint not null )\n"
- " ]]>"
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key )\n"
+"create table Address ( addressId bigint not null primary key, personId "
+"bigint not null )\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table Address ( addressId bigint not null primary key, personId bigint not null )\n"
- " ]]>"
-#: index.docbook:82
+#. Tag: para
+#: association_mapping.xml:82
+#, no-c-format
msgid "We think it's better to use a join table for this kind of association."
-msgstr "우리는 이런 종류의 연관에 대해 하나의 join 테이블을 사용하는 것이 더 좋다고 생각한다."
+msgstr ""
+"우리는 이런 종류의 연관에 대해 하나의 join 테이블을 사용하는 것이 더 좋다고 "
+"생각한다."
-#: index.docbook:91
+#. Tag: title
+#: association_mapping.xml:91
+#, no-c-format
msgid "Unidirectional associations with join tables"
msgstr "join 테이블들에 대한 단방향 연관들"
-#: index.docbook:96
-msgid "A <emphasis>unidirectional one-to-many association on a join table</emphasis> is much preferred. Notice that by specifying <literal>unique=\"true\"</literal>, we have changed the multiplicity from many-to-many to one-to-many."
-msgstr "<emphasis>하나의 join 테이블에 대한 단방향 one-to-many 연관</emphasis>이 보다 더 선호된다. <literal>unique=\"true\"</literal>를 지정함으로써 우리는 many-to-many에서 one-to-many로 아중성(multiplicity)를 변경시켰음을 주목하라."
+#. Tag: para
+#: association_mapping.xml:96
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-many association on a join table</"
+"emphasis> is much preferred. Notice that by specifying <literal>unique=\"true"
+"\"</literal>, we have changed the multiplicity from many-to-many to one-to-"
+"many."
+msgstr ""
+"<emphasis>하나의 join 테이블에 대한 단방향 one-to-many 연관</emphasis>이 보"
+"다 더 선호된다. <literal>unique=\"true\"</literal>를 지정함으로써 우리는 "
+"many-to-many에서 one-to-many로 아중성(multiplicity)를 변경시켰음을 주목하라."
-#: index.docbook:102
+#. Tag: programlisting
+#: association_mapping.xml:102
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\" table=\"PersonAddress\">\n"
- " <key column=\"personId\"/>\n"
- " <many-to-many column=\"addressId\"\n"
- " unique=\"true\"\n"
- " class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <set name=\"addresses\" table=\"PersonAddress\">\n"
+" <key column=\"personId\"/>\n"
+" <many-to-many column=\"addressId\"\n"
+" unique=\"true\"\n"
+" class=\"Address\"/>\n"
+" </set>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\" table=\"PersonAddress\">\n"
- " <key column=\"personId\"/>\n"
- " <many-to-many column=\"addressId\"\n"
- " unique=\"true\"\n"
- " class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
-#: index.docbook:103
+#. Tag: programlisting
+#: association_mapping.xml:103
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId not null, addressId bigint not null primary key )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key )\n"
+"create table PersonAddress ( personId not null, addressId bigint not null "
+"primary key )\n"
+"create table Address ( addressId bigint not null primary key )\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId not null, addressId bigint not null primary key )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
-#: index.docbook:110
-msgid "A <emphasis>unidirectional many-to-one association on a join table</emphasis> is quite common when the association is optional."
-msgstr "<emphasis>하나의 join 테이블에 대한 단방향 many-to-one 연관</emphasis>은 그 연관이 선택적일 때 매우 공통적이다."
+#. Tag: para
+#: association_mapping.xml:110
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional many-to-one association on a join table</"
+"emphasis> is quite common when the association is optional."
+msgstr ""
+"<emphasis>하나의 join 테이블에 대한 단방향 many-to-one 연관</emphasis>은 그 "
+"연관이 선택적일 때 매우 공통적이다."
-#: index.docbook:115
+#. Tag: programlisting
+#: association_mapping.xml:115
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " optional=\"true\">\n"
- " <key column=\"personId\" unique=\"true\"/>\n"
- " <many-to-one name=\"address\"\n"
- " column=\"addressId\" \n"
- " not-null=\"true\"/>\n"
- " </join>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <join table=\"PersonAddress\" \n"
+" optional=\"true\">\n"
+" <key column=\"personId\" unique=\"true\"/>\n"
+" <many-to-one name=\"address\"\n"
+" column=\"addressId\" \n"
+" not-null=\"true\"/>\n"
+" </join>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " optional=\"true\">\n"
- " <key column=\"personId\" unique=\"true\"/>\n"
- " <many-to-one name=\"address\"\n"
- " column=\"addressId\" \n"
- " not-null=\"true\"/>\n"
- " </join>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
-#: index.docbook:116
+#. Tag: programlisting
+#: association_mapping.xml:116
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId bigint not null primary key, addressId bigint not null )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key )\n"
+"create table PersonAddress ( personId bigint not null primary key, addressId "
+"bigint not null )\n"
+"create table Address ( addressId bigint not null primary key )\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId bigint not null primary key, addressId bigint not null )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
-#: index.docbook:123
-msgid "A <emphasis>unidirectional one-to-one association on a join table</emphasis> is extremely unusual, but possible."
-msgstr "<emphasis>하나의 join 테이블에 대한 단방향 one-to-one 연관</emphasis>은 극히 통상적이지 않지만 가능하다."
+#. Tag: para
+#: association_mapping.xml:123
+#, no-c-format
+msgid ""
+"A <emphasis>unidirectional one-to-one association on a join table</emphasis> "
+"is extremely unusual, but possible."
+msgstr ""
+"<emphasis>하나의 join 테이블에 대한 단방향 one-to-one 연관</emphasis>은 극히 "
+"통상적이지 않지만 가능하다."
-#: index.docbook:128
+#. Tag: programlisting
+#: association_mapping.xml:128
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " optional=\"true\">\n"
- " <key column=\"personId\" \n"
- " unique=\"true\"/>\n"
- " <many-to-one name=\"address\"\n"
- " column=\"addressId\" \n"
- " not-null=\"true\"\n"
- " unique=\"true\"/>\n"
- " </join>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <join table=\"PersonAddress\" \n"
+" optional=\"true\">\n"
+" <key column=\"personId\" \n"
+" unique=\"true\"/>\n"
+" <many-to-one name=\"address\"\n"
+" column=\"addressId\" \n"
+" not-null=\"true\"\n"
+" unique=\"true\"/>\n"
+" </join>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " optional=\"true\">\n"
- " <key column=\"personId\" \n"
- " unique=\"true\"/>\n"
- " <many-to-one name=\"address\"\n"
- " column=\"addressId\" \n"
- " not-null=\"true\"\n"
- " unique=\"true\"/>\n"
- " </join>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
-#: index.docbook:129, index.docbook:233
+#. Tag: programlisting
+#: association_mapping.xml:129 association_mapping.xml:233
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId bigint not null primary key, addressId bigint not null unique )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key )\n"
+"create table PersonAddress ( personId bigint not null primary key, addressId "
+"bigint not null unique )\n"
+"create table Address ( addressId bigint not null primary key )\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId bigint not null primary key, addressId bigint not null unique )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
-#: index.docbook:134, index.docbook:238
+#. Tag: title
+#: association_mapping.xml:134 association_mapping.xml:238
+#, no-c-format
msgid "many to many"
msgstr "many to many"
-#: index.docbook:136
-msgid "Finally, we have a <emphasis>unidirectional many-to-many association</emphasis>."
-msgstr "마지막으로, 우리는 <emphasis>단방향 many-to-many 연관</emphasis>을 갖는다."
+#. Tag: para
+#: association_mapping.xml:136
+#, no-c-format
+msgid ""
+"Finally, we have a <emphasis>unidirectional many-to-many association</"
+"emphasis>."
+msgstr ""
+"마지막으로, 우리는 <emphasis>단방향 many-to-many 연관</emphasis>을 갖는다."
-#: index.docbook:140
+#. Tag: programlisting
+#: association_mapping.xml:140
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\" table=\"PersonAddress\">\n"
- " <key column=\"personId\"/>\n"
- " <many-to-many column=\"addressId\"\n"
- " class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <set name=\"addresses\" table=\"PersonAddress\">\n"
+" <key column=\"personId\"/>\n"
+" <many-to-many column=\"addressId\"\n"
+" class=\"Address\"/>\n"
+" </set>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\" table=\"PersonAddress\">\n"
- " <key column=\"personId\"/>\n"
- " <many-to-many column=\"addressId\"\n"
- " class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "</class>]]>"
-#: index.docbook:141, index.docbook:246
+#. Tag: programlisting
+#: association_mapping.xml:141 association_mapping.xml:246
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId bigint not null, addressId bigint not null, primary key (personId, addressId) )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key )\n"
+"create table PersonAddress ( personId bigint not null, addressId bigint not "
+"null, primary key (personId, addressId) )\n"
+"create table Address ( addressId bigint not null primary key )\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId bigint not null, addressId bigint not null, primary key (personId, addressId) )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
-#: index.docbook:148
+#. Tag: title
+#: association_mapping.xml:148
+#, no-c-format
msgid "Bidirectional associations"
msgstr "양방향 연관들"
-#: index.docbook:151, index.docbook:211
+#. Tag: title
+#: association_mapping.xml:151 association_mapping.xml:211
+#, no-c-format
msgid "one to many / many to one"
msgstr "one to many / many to one"
-#: index.docbook:153
-msgid "A <emphasis>bidirectional many-to-one association</emphasis> is the most common kind of association. (This is the standard parent/child relationship.)"
-msgstr "<emphasis>양방향 many-to-one 연관</emphasis>은 가장 공통된 종류의 연관이다.(이것은 표준 부모/자식 관계이다. )"
+#. Tag: para
+#: association_mapping.xml:153
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional many-to-one association</emphasis> is the most "
+"common kind of association. (This is the standard parent/child relationship.)"
+msgstr ""
+"<emphasis>양방향 many-to-one 연관</emphasis>은 가장 공통된 종류의 연관이다."
+"(이것은 표준 부모/자식 관계이다. )"
-#: index.docbook:159
+#. Tag: programlisting
+#: association_mapping.xml:159
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <many-to-one name=\"address\" \n"
- " column=\"addressId\"\n"
- " not-null=\"true\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"people\" inverse=\"true\">\n"
- " <key column=\"addressId\"/>\n"
- " <one-to-many class=\"Person\"/>\n"
- " </set>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <many-to-one name=\"address\" \n"
+" column=\"addressId\"\n"
+" not-null=\"true\"/>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <set name=\"people\" inverse=\"true\">\n"
+" <key column=\"addressId\"/>\n"
+" <one-to-many class=\"Person\"/>\n"
+" </set>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <many-to-one name=\"address\" \n"
- " column=\"addressId\"\n"
- " not-null=\"true\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"people\" inverse=\"true\">\n"
- " <key column=\"addressId\"/>\n"
- " <one-to-many class=\"Person\"/>\n"
- " </set>\n"
- "</class>]]>"
-#: index.docbook:163
-msgid "If you use a <literal>List</literal> (or other indexed collection) you need to set the <literal>key</literal> column of the foreign key to <literal>not null</literal>, and let Hibernate manage the association from the collections side to maintain the index of each element (making the other side virtually inverse by setting <literal>update=\"false\"</literal> and <literal>insert=\"false\"</literal>):"
-msgstr "만일 당신이 <literal>List</literal>(또는 다른 인덱싱 된 콜렉션)을 사용할 경우 당신은 foreign key의 <literal>key</literal> 컬럼을 <literal>not null</literal>로 설정하고, Hibernate로 하여금 각각의 요소의 인덱스를 유지관리하기 위해 (<literal>update=\"false\"</literal>와 <literal>insert=\"false\"</literal>를 설정함으로써 다른 측을 가상적으로 inverse로 만들어) 그 콜렉션들 측으로부터 연관을 관리하도록 할 필요가 있다:"
+#. Tag: para
+#: association_mapping.xml:163
+#, no-c-format
+msgid ""
+"If you use a <literal>List</literal> (or other indexed collection) you need "
+"to set the <literal>key</literal> column of the foreign key to <literal>not "
+"null</literal>, and let Hibernate manage the association from the "
+"collections side to maintain the index of each element (making the other "
+"side virtually inverse by setting <literal>update=\"false\"</literal> and "
+"<literal>insert=\"false\"</literal>):"
+msgstr ""
+"만일 당신이 <literal>List</literal>(또는 다른 인덱싱 된 콜렉션)을 사용할 경"
+"우 당신은 foreign key의 <literal>key</literal> 컬럼을 <literal>not null</"
+"literal>로 설정하고, Hibernate로 하여금 각각의 요소의 인덱스를 유지관리하기 "
+"위해 (<literal>update=\"false\"</literal>와 <literal>insert=\"false\"</"
+"literal>를 설정함으로써 다른 측을 가상적으로 inverse로 만들어) 그 콜렉션들 측"
+"으로부터 연관을 관리하도록 할 필요가 있다:"
-#: index.docbook:171
+#. Tag: programlisting
+#: association_mapping.xml:171
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\"/>\n"
- " ...\n"
- " <many-to-one name=\"address\"\n"
- " column=\"addressId\"\n"
- " not-null=\"true\"\n"
- " insert=\"false\"\n"
- " update=\"false\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\"/>\n"
- " ...\n"
- " <list name=\"people\">\n"
- " <key column=\"addressId\" not-null=\"true\"/>\n"
- " <list-index column=\"peopleIdx\"/>\n"
- " <one-to-many class=\"Person\"/>\n"
- " </list>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\"/>\n"
+" ...\n"
+" <many-to-one name=\"address\"\n"
+" column=\"addressId\"\n"
+" not-null=\"true\"\n"
+" insert=\"false\"\n"
+" update=\"false\"/>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\"/>\n"
+" ...\n"
+" <list name=\"people\">\n"
+" <key column=\"addressId\" not-null=\"true\"/>\n"
+" <list-index column=\"peopleIdx\"/>\n"
+" <one-to-many class=\"Person\"/>\n"
+" </list>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\"/>\n"
- " ...\n"
- " <many-to-one name=\"address\"\n"
- " column=\"addressId\"\n"
- " not-null=\"true\"\n"
- " insert=\"false\"\n"
- " update=\"false\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\"/>\n"
- " ...\n"
- " <list name=\"people\">\n"
- " <key column=\"addressId\" not-null=\"true\"/>\n"
- " <list-index column=\"peopleIdx\"/>\n"
- " <one-to-many class=\"Person\"/>\n"
- " </list>\n"
- "</class>]]>"
-#: index.docbook:173
-msgid "It is important that you define <literal>not-null=\"true\"</literal> on the <literal><key></literal> element of the collection mapping if the underlying foreign key column is <literal>NOT NULL</literal>. Don't only declare <literal>not-null=\"true\"</literal> on a possible nested <literal><column></literal> element, but on the <literal><key></literal> element."
-msgstr "만일 기본 외래 키 컬럼이 <literal>NOT NULL</literal>일 경우 콜렉션 매핑의 <literal><key></literal> 요소 상에 <literal>not-null=\"true\"</literal>를 정의하는 것이 중요하다. 내포된 <literal><column></literal> 요소 상에 <literal>not-null=\"true\"</literal>를 선언하지 말고, <literal><key></literal> 요소 상에 선언하라."
+#. Tag: para
+#: association_mapping.xml:173
+#, no-c-format
+msgid ""
+"It is important that you define <literal>not-null=\"true\"</literal> on the "
+"<literal><key></literal> element of the collection mapping if the "
+"underlying foreign key column is <literal>NOT NULL</literal>. Don't only "
+"declare <literal>not-null=\"true\"</literal> on a possible nested "
+"<literal><column></literal> element, but on the <literal><key></"
+"literal> element."
+msgstr ""
+"만일 기본 외래 키 컬럼이 <literal>NOT NULL</literal>일 경우 콜렉션 매핑의 "
+"<literal><key></literal> 요소 상에 <literal>not-null=\"true\"</literal>"
+"를 정의하는 것이 중요하다. 내포된 <literal><column></literal> 요소 상"
+"에 <literal>not-null=\"true\"</literal>를 선언하지 말고, <literal><key>"
+"</literal> 요소 상에 선언하라."
-#: index.docbook:187
-msgid "A <emphasis>bidirectional one-to-one association on a foreign key</emphasis> is quite common."
-msgstr "<emphasis>foreign에 대한 양방향 one-to-one 연관</emphasis>은 꽤 공통적이다."
+#. Tag: para
+#: association_mapping.xml:187
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a foreign key</emphasis> "
+"is quite common."
+msgstr ""
+"<emphasis>foreign에 대한 양방향 one-to-one 연관</emphasis>은 꽤 공통적이다."
-#: index.docbook:192
+#. Tag: programlisting
+#: association_mapping.xml:192
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <many-to-one name=\"address\" \n"
- " column=\"addressId\" \n"
- " unique=\"true\"\n"
- " not-null=\"true\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <one-to-one name=\"person\" \n"
- " property-ref=\"address\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <many-to-one name=\"address\" \n"
+" column=\"addressId\" \n"
+" unique=\"true\"\n"
+" not-null=\"true\"/>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <one-to-one name=\"person\" \n"
+" property-ref=\"address\"/>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <many-to-one name=\"address\" \n"
- " column=\"addressId\" \n"
- " unique=\"true\"\n"
- " not-null=\"true\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <one-to-one name=\"person\" \n"
- " property-ref=\"address\"/>\n"
- "</class>]]>"
-#: index.docbook:195
-msgid "A <emphasis>bidirectional one-to-one association on a primary key</emphasis> uses the special id generator."
-msgstr "<emphasis>하나의 프라이머리 키에 대한 양방향 one-to-one 연관</emphasis>은 특별한 id 생성기를 사용한다."
+#. Tag: para
+#: association_mapping.xml:195
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a primary key</emphasis> "
+"uses the special id generator."
+msgstr ""
+"<emphasis>하나의 프라이머리 키에 대한 양방향 one-to-one 연관</emphasis>은 특"
+"별한 id 생성기를 사용한다."
-#: index.docbook:200
+#. Tag: programlisting
+#: association_mapping.xml:200
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <one-to-one name=\"address\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"foreign\">\n"
- " <param name=\"property\">person</param>\n"
- " </generator>\n"
- " </id>\n"
- " <one-to-one name=\"person\" \n"
- " constrained=\"true\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <one-to-one name=\"address\"/>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"foreign\">\n"
+" <param name=\"property\">person</param>\n"
+" </generator>\n"
+" </id>\n"
+" <one-to-one name=\"person\" \n"
+" constrained=\"true\"/>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <one-to-one name=\"address\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"foreign\">\n"
- " <param name=\"property\">person</param>\n"
- " </generator>\n"
- " </id>\n"
- " <one-to-one name=\"person\" \n"
- " constrained=\"true\"/>\n"
- "</class>]]>"
-#: index.docbook:208
+#. Tag: title
+#: association_mapping.xml:208
+#, no-c-format
msgid "Bidirectional associations with join tables"
msgstr "join 테이블들에 대한 양방향 연관들"
-#: index.docbook:213
-msgid "A <emphasis>bidirectional one-to-many association on a join table</emphasis>. Note that the <literal>inverse=\"true\"</literal> can go on either end of the association, on the collection, or on the join."
-msgstr "<emphasis>하나의 join 테이블에 대한 양방향 one-to-many 연관</emphasis>. <literal>inverse=\"true\"</literal>는 연관의 어느 쪽 끝이든 콜렉션 측으로 또는 join 측으로 갈 수 있다."
+#. Tag: para
+#: association_mapping.xml:213
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-many association on a join table</"
+"emphasis>. Note that the <literal>inverse=\"true\"</literal> can go on "
+"either end of the association, on the collection, or on the join."
+msgstr ""
+"<emphasis>하나의 join 테이블에 대한 양방향 one-to-many 연관</emphasis>. "
+"<literal>inverse=\"true\"</literal>는 연관의 어느 쪽 끝이든 콜렉션 측으로 또"
+"는 join 측으로 갈 수 있다."
-#: index.docbook:219
+#. Tag: programlisting
+#: association_mapping.xml:219
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\" \n"
- " table=\"PersonAddress\">\n"
- " <key column=\"personId\"/>\n"
- " <many-to-many column=\"addressId\"\n"
- " unique=\"true\"\n"
- " class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " inverse=\"true\" \n"
- " optional=\"true\">\n"
- " <key column=\"addressId\"/>\n"
- " <many-to-one name=\"person\"\n"
- " column=\"personId\"\n"
- " not-null=\"true\"/>\n"
- " </join>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <set name=\"addresses\" \n"
+" table=\"PersonAddress\">\n"
+" <key column=\"personId\"/>\n"
+" <many-to-many column=\"addressId\"\n"
+" unique=\"true\"\n"
+" class=\"Address\"/>\n"
+" </set>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <join table=\"PersonAddress\" \n"
+" inverse=\"true\" \n"
+" optional=\"true\">\n"
+" <key column=\"addressId\"/>\n"
+" <many-to-one name=\"person\"\n"
+" column=\"personId\"\n"
+" not-null=\"true\"/>\n"
+" </join>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\" \n"
- " table=\"PersonAddress\">\n"
- " <key column=\"personId\"/>\n"
- " <many-to-many column=\"addressId\"\n"
- " unique=\"true\"\n"
- " class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " inverse=\"true\" \n"
- " optional=\"true\">\n"
- " <key column=\"addressId\"/>\n"
- " <many-to-one name=\"person\"\n"
- " column=\"personId\"\n"
- " not-null=\"true\"/>\n"
- " </join>\n"
- "</class>]]>"
-#: index.docbook:220
+#. Tag: programlisting
+#: association_mapping.xml:220
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId bigint not null, addressId bigint not null primary key )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
+"<![CDATA[\n"
+"create table Person ( personId bigint not null primary key )\n"
+"create table PersonAddress ( personId bigint not null, addressId bigint not "
+"null primary key )\n"
+"create table Address ( addressId bigint not null primary key )\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- "create table Person ( personId bigint not null primary key )\n"
- "create table PersonAddress ( personId bigint not null, addressId bigint not null primary key )\n"
- "create table Address ( addressId bigint not null primary key )\n"
- " ]]>"
-#: index.docbook:227
-msgid "A <emphasis>bidirectional one-to-one association on a join table</emphasis> is extremely unusual, but possible."
-msgstr "<emphasis>하나의 join 테이블에 대한 양방향 one-to-one 연관</emphasis>은 극히 통상적이지 않지만, 가능하다."
+#. Tag: para
+#: association_mapping.xml:227
+#, no-c-format
+msgid ""
+"A <emphasis>bidirectional one-to-one association on a join table</emphasis> "
+"is extremely unusual, but possible."
+msgstr ""
+"<emphasis>하나의 join 테이블에 대한 양방향 one-to-one 연관</emphasis>은 극히 "
+"통상적이지 않지만, 가능하다."
-#: index.docbook:232
+#. Tag: programlisting
+#: association_mapping.xml:232
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " optional=\"true\">\n"
- " <key column=\"personId\" \n"
- " unique=\"true\"/>\n"
- " <many-to-one name=\"address\"\n"
- " column=\"addressId\" \n"
- " not-null=\"true\"\n"
- " unique=\"true\"/>\n"
- " </join>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " optional=\"true\"\n"
- " inverse=\"true\">\n"
- " <key column=\"addressId\" \n"
- " unique=\"true\"/>\n"
- " <many-to-one name=\"person\"\n"
- " column=\"personId\" \n"
- " not-null=\"true\"\n"
- " unique=\"true\"/>\n"
- " </join>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <join table=\"PersonAddress\" \n"
+" optional=\"true\">\n"
+" <key column=\"personId\" \n"
+" unique=\"true\"/>\n"
+" <many-to-one name=\"address\"\n"
+" column=\"addressId\" \n"
+" not-null=\"true\"\n"
+" unique=\"true\"/>\n"
+" </join>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <join table=\"PersonAddress\" \n"
+" optional=\"true\"\n"
+" inverse=\"true\">\n"
+" <key column=\"addressId\" \n"
+" unique=\"true\"/>\n"
+" <many-to-one name=\"person\"\n"
+" column=\"personId\" \n"
+" not-null=\"true\"\n"
+" unique=\"true\"/>\n"
+" </join>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " optional=\"true\">\n"
- " <key column=\"personId\" \n"
- " unique=\"true\"/>\n"
- " <many-to-one name=\"address\"\n"
- " column=\"addressId\" \n"
- " not-null=\"true\"\n"
- " unique=\"true\"/>\n"
- " </join>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <join table=\"PersonAddress\" \n"
- " optional=\"true\"\n"
- " inverse=\"true\">\n"
- " <key column=\"addressId\" \n"
- " unique=\"true\"/>\n"
- " <many-to-one name=\"person\"\n"
- " column=\"personId\" \n"
- " not-null=\"true\"\n"
- " unique=\"true\"/>\n"
- " </join>\n"
- "</class>]]>"
-#: index.docbook:240
-msgid "Finally, we have a <emphasis>bidirectional many-to-many association</emphasis>."
-msgstr "마지막으로, 우리는 하나의 <emphasis>양방향 many-to-many 연관</emphasis>을 갖는다."
+#. Tag: para
+#: association_mapping.xml:240
+#, no-c-format
+msgid ""
+"Finally, we have a <emphasis>bidirectional many-to-many association</"
+"emphasis>."
+msgstr ""
+"마지막으로, 우리는 하나의 <emphasis>양방향 many-to-many 연관</emphasis>을 갖"
+"는다."
-#: index.docbook:244
+#. Tag: programlisting
+#: association_mapping.xml:244
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\" table=\"PersonAddress\">\n"
- " <key column=\"personId\"/>\n"
- " <many-to-many column=\"addressId\"\n"
- " class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"people\" inverse=\"true\" table=\"PersonAddress\">\n"
- " <key column=\"addressId\"/>\n"
- " <many-to-many column=\"personId\"\n"
- " class=\"Person\"/>\n"
- " </set>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\" column=\"personId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <set name=\"addresses\" table=\"PersonAddress\">\n"
+" <key column=\"personId\"/>\n"
+" <many-to-many column=\"addressId\"\n"
+" class=\"Address\"/>\n"
+" </set>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+" <id name=\"id\" column=\"addressId\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <set name=\"people\" inverse=\"true\" table=\"PersonAddress\">\n"
+" <key column=\"addressId\"/>\n"
+" <many-to-many column=\"personId\"\n"
+" class=\"Person\"/>\n"
+" </set>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\" column=\"personId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"addresses\" table=\"PersonAddress\">\n"
- " <key column=\"personId\"/>\n"
- " <many-to-many column=\"addressId\"\n"
- " class=\"Address\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- " <id name=\"id\" column=\"addressId\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <set name=\"people\" inverse=\"true\" table=\"PersonAddress\">\n"
- " <key column=\"addressId\"/>\n"
- " <many-to-many column=\"personId\"\n"
- " class=\"Person\"/>\n"
- " </set>\n"
- "</class>]]>"
-#: index.docbook:253
+#. Tag: title
+#: association_mapping.xml:253
+#, no-c-format
msgid "More complex association mappings"
msgstr "보다 복잡한 연관 매핑들"
-#: index.docbook:255
-msgid "More complex association joins are <emphasis>extremely</emphasis> rare. Hibernate makes it possible to handle more complex situations using SQL fragments embedded in the mapping document. For example, if a table with historical account information data defines <literal>accountNumber</literal>, <literal>effectiveEndDate</literal> and <literal>effectiveStartDate</literal>columns, mapped as follows:"
-msgstr "보다 복잡한 연관 조인들은 <emphasis>극기</emphasis> 드물다. Hibernate는 매핑 문서들 내에 삽입된 SQL 조각들을 사용하여 보다 복잡한 상황을 처리하는 것을 가능하도록 해준다. 예를 들어, 만일 계좌 내역 정보 데이터를 가진 하나이 테이블이 <literal>accountNumber</literal>, <literal>effectiveEndDate</literal> 그리고 <literal>effectiveStartDate</literal> 컬럼들을 정의할 경우, 다음과 같이 매핑된다:"
+#. Tag: para
+#: association_mapping.xml:255
+#, no-c-format
+msgid ""
+"More complex association joins are <emphasis>extremely</emphasis> rare. "
+"Hibernate makes it possible to handle more complex situations using SQL "
+"fragments embedded in the mapping document. For example, if a table with "
+"historical account information data defines <literal>accountNumber</"
+"literal>, <literal>effectiveEndDate</literal> and "
+"<literal>effectiveStartDate</literal>columns, mapped as follows:"
+msgstr ""
+"보다 복잡한 연관 조인들은 <emphasis>극기</emphasis> 드물다. Hibernate는 매핑 "
+"문서들 내에 삽입된 SQL 조각들을 사용하여 보다 복잡한 상황을 처리하는 것을 가"
+"능하도록 해준다. 예를 들어, 만일 계좌 내역 정보 데이터를 가진 하나이 테이블"
+"이 <literal>accountNumber</literal>, <literal>effectiveEndDate</literal> 그리"
+"고 <literal>effectiveStartDate</literal> 컬럼들을 정의할 경우, 다음과 같이 매"
+"핑된다:"
-#: index.docbook:264
+#. Tag: programlisting
+#: association_mapping.xml:264
+#, no-c-format
msgid ""
- "<![CDATA[<properties name=\"currentAccountKey\">\n"
- " <property name=\"accountNumber\" type=\"string\" not-null=\"true\"/>\n"
- " <property name=\"currentAccount\" type=\"boolean\">\n"
- " <formula>case when effectiveEndDate is null then 1 else 0 end</formula>\n"
- " </property>\n"
- "</properties>\n"
- "<property name=\"effectiveEndDate\" type=\"date\"/>\n"
- "<property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/>]]>"
+"<![CDATA[<properties name=\"currentAccountKey\">\n"
+" <property name=\"accountNumber\" type=\"string\" not-null=\"true\"/>\n"
+" <property name=\"currentAccount\" type=\"boolean\">\n"
+" <formula>case when effectiveEndDate is null then 1 else 0 end</"
+"formula>\n"
+" </property>\n"
+"</properties>\n"
+"<property name=\"effectiveEndDate\" type=\"date\"/>\n"
+"<property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/>]]>"
msgstr ""
- "<![CDATA[<properties name=\"currentAccountKey\">\n"
- " <property name=\"accountNumber\" type=\"string\" not-null=\"true\"/>\n"
- " <property name=\"currentAccount\" type=\"boolean\">\n"
- " <formula>case when effectiveEndDate is null then 1 else 0 end</formula>\n"
- " </property>\n"
- "</properties>\n"
- "<property name=\"effectiveEndDate\" type=\"date\"/>\n"
- "<property name=\"effectiveStateDate\" type=\"date\" not-null=\"true\"/>]]>"
-#: index.docbook:266
-msgid "Then we can map an association to the <emphasis>current</emphasis> instance (the one with null <literal>effectiveEndDate</literal>) using:"
-msgstr "그때 우리는 다음을 사용하여 하나의 연관을 <emphasis>현재</emphasis> 인스턴스 (null <literal>effectiveEndDate</literal>을 가진 인스턴스)로 매핑시킬 수 있다:"
+#. Tag: para
+#: association_mapping.xml:266
+#, no-c-format
+msgid ""
+"Then we can map an association to the <emphasis>current</emphasis> instance "
+"(the one with null <literal>effectiveEndDate</literal>) using:"
+msgstr ""
+"그때 우리는 다음을 사용하여 하나의 연관을 <emphasis>현재</emphasis> 인스턴스 "
+"(null <literal>effectiveEndDate</literal>을 가진 인스턴스)로 매핑시킬 수 있"
+"다:"
-#: index.docbook:271
+#. Tag: programlisting
+#: association_mapping.xml:271
+#, no-c-format
msgid ""
- "<![CDATA[<many-to-one name=\"currentAccountInfo\" \n"
- " property-ref=\"currentAccountKey\"\n"
- " class=\"AccountInfo\">\n"
- " <column name=\"accountNumber\"/>\n"
- " <formula>'1'</formula>\n"
- "</many-to-one>]]>"
+"<![CDATA[<many-to-one name=\"currentAccountInfo\" \n"
+" property-ref=\"currentAccountKey\"\n"
+" class=\"AccountInfo\">\n"
+" <column name=\"accountNumber\"/>\n"
+" <formula>'1'</formula>\n"
+"</many-to-one>]]>"
msgstr ""
- "<![CDATA[<many-to-one name=\"currentAccountInfo\" \n"
- " property-ref=\"currentAccountKey\"\n"
- " class=\"AccountInfo\">\n"
- " <column name=\"accountNumber\"/>\n"
- " <formula>'1'</formula>\n"
- "</many-to-one>]]>"
-#: index.docbook:273
-msgid "In a more complex example, imagine that the association between <literal>Employee</literal> and <literal>Organization</literal> is maintained in an <literal>Employment</literal> table full of historical employment data. Then an association to the employee's <emphasis>most recent</emphasis> employer (the one with the most recent <literal>startDate</literal>) might be mapped this way:"
-msgstr "보다 복잡한 예제에서, <literal>Employee</literal>와 <literal>Organization</literal> 사이의 연관이 전체 고용 내역 데이터를 가진 <literal>Employment</literal> 테이블 내에 유지된다고 가정하자. 그때 종업원의 <emphasis>가장 최근의</emphasis> 고용주에 대한 하나의 연관(가장 최근의 <literal>startDate</literal>를 갖고 있는 것)이 다음 방법으로 매핑될 수 있다:"
+#. Tag: para
+#: association_mapping.xml:273
+#, no-c-format
+msgid ""
+"In a more complex example, imagine that the association between "
+"<literal>Employee</literal> and <literal>Organization</literal> is "
+"maintained in an <literal>Employment</literal> table full of historical "
+"employment data. Then an association to the employee's <emphasis>most "
+"recent</emphasis> employer (the one with the most recent <literal>startDate</"
+"literal>) might be mapped this way:"
+msgstr ""
+"보다 복잡한 예제에서, <literal>Employee</literal>와 <literal>Organization</"
+"literal> 사이의 연관이 전체 고용 내역 데이터를 가진 <literal>Employment</"
+"literal> 테이블 내에 유지된다고 가정하자. 그때 종업원의 <emphasis>가장 최근의"
+"</emphasis> 고용주에 대한 하나의 연관(가장 최근의 <literal>startDate</"
+"literal>를 갖고 있는 것)이 다음 방법으로 매핑될 수 있다:"
-#: index.docbook:281
+#. Tag: programlisting
+#: association_mapping.xml:281
+#, no-c-format
msgid ""
- "<![CDATA[<join>\n"
- " <key column=\"employeeId\"/>\n"
- " <subselect>\n"
- " select employeeId, orgId \n"
- " from Employments \n"
- " group by orgId \n"
- " having startDate = max(startDate)\n"
- " </subselect>\n"
- " <many-to-one name=\"mostRecentEmployer\" \n"
- " class=\"Organization\" \n"
- " column=\"orgId\"/>\n"
- "</join>]]>"
+"<![CDATA[<join>\n"
+" <key column=\"employeeId\"/>\n"
+" <subselect>\n"
+" select employeeId, orgId \n"
+" from Employments \n"
+" group by orgId \n"
+" having startDate = max(startDate)\n"
+" </subselect>\n"
+" <many-to-one name=\"mostRecentEmployer\" \n"
+" class=\"Organization\" \n"
+" column=\"orgId\"/>\n"
+"</join>]]>"
msgstr ""
- "<![CDATA[<join>\n"
- " <key column=\"employeeId\"/>\n"
- " <subselect>\n"
- " select employeeId, orgId \n"
- " from Employments \n"
- " group by orgId \n"
- " having startDate = max(startDate)\n"
- " </subselect>\n"
- " <many-to-one name=\"mostRecentEmployer\" \n"
- " class=\"Organization\" \n"
- " column=\"orgId\"/>\n"
- "</join>]]>"
-#: index.docbook:283
-msgid "You can get quite creative with this functionality, but it is usually more practical to handle these kinds of cases using HQL or a criteria query."
-msgstr "당신은 이 기능으로 아주 생산성을 얻을 수 있지만, 그것은 대개 HQL 또는 criteria 질의를 사용하여 이들 종류의 경우들을 처리하는 것이 보다 실용적이다."
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: para
+#: association_mapping.xml:283
+#, no-c-format
+msgid ""
+"You can get quite creative with this functionality, but it is usually more "
+"practical to handle these kinds of cases using HQL or a criteria query."
+msgstr ""
+"당신은 이 기능으로 아주 생산성을 얻을 수 있지만, 그것은 대개 HQL 또는 "
+"criteria 질의를 사용하여 이들 종류의 경우들을 처리하는 것이 보다 실용적이다."
Modified: core/trunk/documentation/manual/translations/ko-KR/content/basic_mapping.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/basic_mapping.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/basic_mapping.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,3067 +1,5624 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: basic_mapping.xml:5
+#, no-c-format
msgid "Basic O/R Mapping"
msgstr "기본 O/R 매핑"
-#: index.docbook:8
+#. Tag: title
+#: basic_mapping.xml:8
+#, no-c-format
msgid "Mapping declaration"
msgstr "매핑 선언"
-#: index.docbook:10
-msgid "Object/relational mappings are usually defined in an XML document. The mapping document is designed to be readable and hand-editable. The mapping language is Java-centric, meaning that mappings are constructed around persistent class declarations, not table declarations."
-msgstr "객체/관계형 매핑들은 대개 XML 문서 내에 정의된다. 매핑 문서는 가독성이 있고 수작업 편집이 가능하도록 설계되어 있다. 매핑 언어는 매핑들이 테이블 선언들이 아닌, 영속 클래스 선언들로 생성된다는 의미에서 자바 중심적이다."
+#. Tag: para
+#: basic_mapping.xml:10
+#, no-c-format
+msgid ""
+"Object/relational mappings are usually defined in an XML document. The "
+"mapping document is designed to be readable and hand-editable. The mapping "
+"language is Java-centric, meaning that mappings are constructed around "
+"persistent class declarations, not table declarations."
+msgstr ""
+"객체/관계형 매핑들은 대개 XML 문서 내에 정의된다. 매핑 문서는 가독성이 있고 "
+"수작업 편집이 가능하도록 설계되어 있다. 매핑 언어는 매핑들이 테이블 선언들이 "
+"아닌, 영속 클래스 선언들로 생성된다는 의미에서 자바 중심적이다."
-#: index.docbook:17
-msgid "Note that, even though many Hibernate users choose to write the XML by hand, a number of tools exist to generate the mapping document, including XDoclet, Middlegen and AndroMDA."
-msgstr "심지어 많은 Hibernate 사용자들이 수작업으로 XML을 작성하고자 선택할지라도, XDoclet, Middlegen, 그리고 AndroMDA를 포함하는, 매핑 문서를 생성시키는 많은 도구들이 존재한다는 점을 노트하라."
+#. Tag: para
+#: basic_mapping.xml:17
+#, no-c-format
+msgid ""
+"Note that, even though many Hibernate users choose to write the XML by hand, "
+"a number of tools exist to generate the mapping document, including XDoclet, "
+"Middlegen and AndroMDA."
+msgstr ""
+"심지어 많은 Hibernate 사용자들이 수작업으로 XML을 작성하고자 선택할지라도, "
+"XDoclet, Middlegen, 그리고 AndroMDA를 포함하는, 매핑 문서를 생성시키는 많은 "
+"도구들이 존재한다는 점을 노트하라."
-#: index.docbook:23
+#. Tag: para
+#: basic_mapping.xml:23
+#, no-c-format
msgid "Lets kick off with an example mapping:"
msgstr "예제 매핑으로 시작하자:"
-#: index.docbook:27
+#. Tag: programlisting
+#: basic_mapping.xml:27
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping package=\"eg\">\n"
- "\n"
- " <class name=\"Cat\"\n"
- " table=\"cats\"\n"
- " discriminator-value=\"C\">\n"
- "\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "\n"
- " <discriminator column=\"subclass\"\n"
- " type=\"character\"/>\n"
- "\n"
- " <property name=\"weight\"/>\n"
- "\n"
- " <property name=\"birthdate\"\n"
- " type=\"date\"\n"
- " not-null=\"true\"\n"
- " update=\"false\"/>\n"
- "\n"
- " <property name=\"color\"\n"
- " type=\"eg.types.ColorUserType\"\n"
- " not-null=\"true\"\n"
- " update=\"false\"/>\n"
- "\n"
- " <property name=\"sex\"\n"
- " not-null=\"true\"\n"
- " update=\"false\"/>\n"
- "\n"
- " <property name=\"litterId\"\n"
- " column=\"litterId\"\n"
- " update=\"false\"/>\n"
- "\n"
- " <many-to-one name=\"mother\"\n"
- " column=\"mother_id\"\n"
- " update=\"false\"/>\n"
- "\n"
- " <set name=\"kittens\"\n"
- " inverse=\"true\"\n"
- " order-by=\"litter_id\">\n"
- " <key column=\"mother_id\"/>\n"
- " <one-to-many class=\"Cat\"/>\n"
- " </set>\n"
- "\n"
- " <subclass name=\"DomesticCat\"\n"
- " discriminator-value=\"D\">\n"
- "\n"
- " <property name=\"name\"\n"
- " type=\"string\"/>\n"
- "\n"
- " </subclass>\n"
- "\n"
- " </class>\n"
- "\n"
- " <class name=\"Dog\">\n"
- " <!-- mapping for Dog could go here -->\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<?xml version=\"1.0\"?>\n"
+"<!DOCTYPE hibernate-mapping PUBLIC\n"
+" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+" \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+"\n"
+"<hibernate-mapping package=\"eg\">\n"
+"\n"
+" <class name=\"Cat\"\n"
+" table=\"cats\"\n"
+" discriminator-value=\"C\">\n"
+"\n"
+" <id name=\"id\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+"\n"
+" <discriminator column=\"subclass\"\n"
+" type=\"character\"/>\n"
+"\n"
+" <property name=\"weight\"/>\n"
+"\n"
+" <property name=\"birthdate\"\n"
+" type=\"date\"\n"
+" not-null=\"true\"\n"
+" update=\"false\"/>\n"
+"\n"
+" <property name=\"color\"\n"
+" type=\"eg.types.ColorUserType\"\n"
+" not-null=\"true\"\n"
+" update=\"false\"/>\n"
+"\n"
+" <property name=\"sex\"\n"
+" not-null=\"true\"\n"
+" update=\"false\"/>\n"
+"\n"
+" <property name=\"litterId\"\n"
+" column=\"litterId\"\n"
+" update=\"false\"/>\n"
+"\n"
+" <many-to-one name=\"mother\"\n"
+" column=\"mother_id\"\n"
+" update=\"false\"/>\n"
+"\n"
+" <set name=\"kittens\"\n"
+" inverse=\"true\"\n"
+" order-by=\"litter_id\">\n"
+" <key column=\"mother_id\"/>\n"
+" <one-to-many class=\"Cat\"/>\n"
+" </set>\n"
+"\n"
+" <subclass name=\"DomesticCat\"\n"
+" discriminator-value=\"D\">\n"
+"\n"
+" <property name=\"name\"\n"
+" type=\"string\"/>\n"
+"\n"
+" </subclass>\n"
+"\n"
+" </class>\n"
+"\n"
+" <class name=\"Dog\">\n"
+" <!-- mapping for Dog could go here -->\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping package=\"eg\">\n"
- "\n"
- " <class name=\"Cat\" \n"
- " table=\"cats\"\n"
- " discriminator-value=\"C\">\n"
- " \n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- "\n"
- " <discriminator column=\"subclass\" \n"
- " type=\"character\"/>\n"
- "\n"
- " <property name=\"weight\"/>\n"
- "\n"
- " <property name=\"birthdate\"\n"
- " type=\"date\" \n"
- " not-null=\"true\" \n"
- " update=\"false\"/>\n"
- "\n"
- " <property name=\"color\"\n"
- " type=\"eg.types.ColorUserType\"\n"
- " not-null=\"true\"\n"
- " update=\"false\"/>\n"
- "\n"
- " <property name=\"sex\"\n"
- " not-null=\"true\" \n"
- " update=\"false\"/>\n"
- "\n"
- " <property name=\"litterId\"\n"
- " column=\"litterId\"\n"
- " update=\"false\"/>\n"
- "\n"
- " <many-to-one name=\"mother\"\n"
- " column=\"mother_id\"\n"
- " update=\"false\"/>\n"
- "\n"
- " <set name=\"kittens\"\n"
- " inverse=\"true\"\n"
- " order-by=\"litter_id\">\n"
- " <key column=\"mother_id\"/>\n"
- " <one-to-many class=\"Cat\"/>\n"
- " </set>\n"
- "\n"
- " <subclass name=\"DomesticCat\"\n"
- " discriminator-value=\"D\">\n"
- "\n"
- " <property name=\"name\" \n"
- " type=\"string\"/>\n"
- "\n"
- " </subclass>\n"
- "\n"
- " </class>\n"
- "\n"
- " <class name=\"Dog\">\n"
- " <!-- mapping for Dog could go here -->\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:29
-msgid "We will now discuss the content of the mapping document. We will only describe the document elements and attributes that are used by Hibernate at runtime. The mapping document also contains some extra optional attributes and elements that affect the database schemas exported by the schema export tool. (For example the <literal> not-null</literal> attribute.)"
-msgstr "우리는 이제 매핑 문서의 내용을 논의할 것이다. 우리는 Hibernate에 의해 실행 시에 사용되는 문서 요소들과 속성들 만을 설명할 것이다. 매핑 문서는 또한 스키마 내보내기 도구에 의해 내보내진 데이터베이스 스키마에 영향을 주는 어떤 특별한 옵션 속성들과 요소들을 포함한다. (예를 들어 <literal>not-null</literal> 속성.)"
+#. Tag: para
+#: basic_mapping.xml:29
+#, no-c-format
+msgid ""
+"We will now discuss the content of the mapping document. We will only "
+"describe the document elements and attributes that are used by Hibernate at "
+"runtime. The mapping document also contains some extra optional attributes "
+"and elements that affect the database schemas exported by the schema export "
+"tool. (For example the <literal> not-null</literal> attribute.)"
+msgstr ""
+"우리는 이제 매핑 문서의 내용을 논의할 것이다. 우리는 Hibernate에 의해 실행 시"
+"에 사용되는 문서 요소들과 속성들 만을 설명할 것이다. 매핑 문서는 또한 스키마 "
+"내보내기 도구에 의해 내보내진 데이터베이스 스키마에 영향을 주는 어떤 특별한 "
+"옵션 속성들과 요소들을 포함한다. (예를 들어 <literal>not-null</literal> 속"
+"성.)"
-#: index.docbook:40
+#. Tag: title
+#: basic_mapping.xml:40
+#, no-c-format
msgid "Doctype"
msgstr "Doctype"
-#: index.docbook:42
-msgid "All XML mappings should declare the doctype shown. The actual DTD may be found at the URL above, in the directory <literal>hibernate-x.x.x/src/org/hibernate </literal> or in <literal>hibernate3.jar</literal>. Hibernate will always look for the DTD in its classpath first. If you experience lookups of the DTD using an Internet connection, check your DTD declaration against the contents of your claspath."
-msgstr "모든 XML 매핑들은 doctype이 보이게 선언해야 한다. 실제 DTD는 위의 URL에서, <literal>hibernate-x.x.x/src/org/hibernate</literal> 디렉토리 내에서 또는 <literal>hibernate3.jar</literal> 내에서 찾을 수 있다. Hibernate는 항상 첫 번째로 그것의 classpath 속에서 DTD를 찾게 될 것이다. 만일 당신이 인터넷 연결을 사용하는 DTD에 대한 룩업들을 겪게 될 경우, 당신의 classpath의 컨텐츠에 대해 당신의 DTD 선언을 체크하라."
+#. Tag: para
+#: basic_mapping.xml:42
+#, no-c-format
+msgid ""
+"All XML mappings should declare the doctype shown. The actual DTD may be "
+"found at the URL above, in the directory <literal>hibernate-x.x.x/src/org/"
+"hibernate </literal> or in <literal>hibernate3.jar</literal>. Hibernate will "
+"always look for the DTD in its classpath first. If you experience lookups of "
+"the DTD using an Internet connection, check your DTD declaration against the "
+"contents of your claspath."
+msgstr ""
+"모든 XML 매핑들은 doctype이 보이게 선언해야 한다. 실제 DTD는 위의 URL에서, "
+"<literal>hibernate-x.x.x/src/org/hibernate</literal> 디렉토리 내에서 또는 "
+"<literal>hibernate3.jar</literal> 내에서 찾을 수 있다. Hibernate는 항상 첫 번"
+"째로 그것의 classpath 속에서 DTD를 찾게 될 것이다. 만일 당신이 인터넷 연결을 "
+"사용하는 DTD에 대한 룩업들을 겪게 될 경우, 당신의 classpath의 컨텐츠에 대해 "
+"당신의 DTD 선언을 체크하라."
-#: index.docbook:52
+#. Tag: title
+#: basic_mapping.xml:52
+#, no-c-format
msgid "EntityResolver"
msgstr "EntityResolver"
-#: index.docbook:53
-msgid "As mentioned previously, Hibernate will first attempt to resolve DTDs in its classpath. The manner in which it does this is by registering a custom <literal>org.xml.sax.EntityResolver</literal> implementation with the SAXReader it uses to read in the xml files. This custom <literal>EntityResolver</literal> recognizes two different systemId namespaces."
-msgstr "앞서 언급했듯이, Hibernate는 먼저 그것의 classpath에서 DTD들을 해석하려고 시도할 것이다. Hibernate가 이것을 행하는 방법은 그것이 xml 파일들을 읽어들이는데 사용하는 SAXReader에 맞춤형 <literal>org.xml.sax.EntityResolver</literal> 구현을 등록하는 것이다. 이 맞춤형 <literal>EntityResolver</literal>는 두 개의 다른 systemId namespace들을 인지해낸다."
+#. Tag: para
+#: basic_mapping.xml:53
+#, no-c-format
+msgid ""
+"As mentioned previously, Hibernate will first attempt to resolve DTDs in its "
+"classpath. The manner in which it does this is by registering a custom "
+"<literal>org.xml.sax.EntityResolver</literal> implementation with the "
+"SAXReader it uses to read in the xml files. This custom "
+"<literal>EntityResolver</literal> recognizes two different systemId "
+"namespaces."
+msgstr ""
+"앞서 언급했듯이, Hibernate는 먼저 그것의 classpath에서 DTD들을 해석하려고 시"
+"도할 것이다. Hibernate가 이것을 행하는 방법은 그것이 xml 파일들을 읽어들이는"
+"데 사용하는 SAXReader에 맞춤형 <literal>org.xml.sax.EntityResolver</literal> "
+"구현을 등록하는 것이다. 이 맞춤형 <literal>EntityResolver</literal>는 두 개"
+"의 다른 systemId namespace들을 인지해낸다."
-#: index.docbook:61
-msgid "a <literal>hibernate namespace</literal> is recognized whenever the resolver encounteres a systemId starting with <literal>http://hibernate.sourceforge.net/</literal>; the resolver attempts to resolve these entities via the classlaoder which loaded the Hibernate classes."
-msgstr "<literal>hibernate namespace</literal>는 resolver가 <literal>http://hibernate.sourceforge.net/</literal>로 시작하는 하나의 systemId와 만날때마다 인지된다; resolver는 Hibernate 클래스들을 로드시켰던 클래스로더를 통해 이들 엔티티들을 해석하려고 시도한다."
+#. Tag: para
+#: basic_mapping.xml:61
+#, no-c-format
+msgid ""
+"a <literal>hibernate namespace</literal> is recognized whenever the resolver "
+"encounteres a systemId starting with <literal>http://hibernate.sourceforge."
+"net/</literal>; the resolver attempts to resolve these entities via the "
+"classlaoder which loaded the Hibernate classes."
+msgstr ""
+"<literal>hibernate namespace</literal>는 resolver가 <literal>http://"
+"hibernate.sourceforge.net/</literal>로 시작하는 하나의 systemId와 만날때마다 "
+"인지된다; resolver는 Hibernate 클래스들을 로드시켰던 클래스로더를 통해 이들 "
+"엔티티들을 해석하려고 시도한다."
-#: index.docbook:70
-msgid "a <literal>user namespace</literal> is recognized whenever the resolver encounteres a systemId using a <literal>classpath://</literal> URL protocol; the resolver will attempt to resolve these entities via (1) the current thread context classloader and (2) the classloader which loaded the Hibernate classes."
-msgstr "<literal>user namespace</literal>는 resolver가 <literal>classpath://</literal> URL 프로토콜을 사용하는 systemId를 만날때마다 인지된다; resolver는 (1)현재 쓰레드 컨텍스트 클래스로더와 (2)Hibernate 클래스들을 로드시켰던 클래스로더를 통해 이들 엔티티들을 해석하려고 시도할 것이다."
+#. Tag: para
+#: basic_mapping.xml:70
+#, no-c-format
+msgid ""
+"a <literal>user namespace</literal> is recognized whenever the resolver "
+"encounteres a systemId using a <literal>classpath://</literal> URL protocol; "
+"the resolver will attempt to resolve these entities via (1) the current "
+"thread context classloader and (2) the classloader which loaded the "
+"Hibernate classes."
+msgstr ""
+"<literal>user namespace</literal>는 resolver가 <literal>classpath://</"
+"literal> URL 프로토콜을 사용하는 systemId를 만날때마다 인지된다; resolver는 "
+"(1)현재 쓰레드 컨텍스트 클래스로더와 (2)Hibernate 클래스들을 로드시켰던 클래"
+"스로더를 통해 이들 엔티티들을 해석하려고 시도할 것이다."
-#: index.docbook:79
+#. Tag: para
+#: basic_mapping.xml:79
+#, no-c-format
msgid "An example of utilizing user namespacing:"
msgstr "user namespacing을 활용하는 예제:"
-#: index.docbook:82
+#. Tag: programlisting
+#: basic_mapping.xml:82
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\" [\n"
- " <!ENTITY types SYSTEM \"classpath://your/domain/types.xml\">\n"
- "]>\n"
- "\n"
- "<hibernate-mapping package=\"your.domain\">\n"
- " <class name=\"MyEntity\">\n"
- " <id name=\"id\" type=\"my-custom-id-type\">\n"
- " ...\n"
- " </id>\n"
- " <class>\n"
- " &types;\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<?xml version=\"1.0\"?>\n"
+"<!DOCTYPE hibernate-mapping PUBLIC\n"
+" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+" \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\" [\n"
+" <!ENTITY types SYSTEM \"classpath://your/domain/types.xml\">\n"
+"]>\n"
+"\n"
+"<hibernate-mapping package=\"your.domain\">\n"
+" <class name=\"MyEntity\">\n"
+" <id name=\"id\" type=\"my-custom-id-type\">\n"
+" ...\n"
+" </id>\n"
+" <class>\n"
+" &types;\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\" [\n"
- " <!ENTITY types SYSTEM \"classpath://your/domain/types.xml\">\n"
- "]>\n"
- "\n"
- "<hibernate-mapping package=\"your.domain\">\n"
- " <class name=\"MyEntity\">\n"
- " <id name=\"id\" type=\"my-custom-id-type\">\n"
- " ...\n"
- " </id>\n"
- " <class>\n"
- " &types;\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:83
-msgid "Where <literal>types.xml</literal> is a resource in the <literal>your.domain</literal> package and contains a custom <xref linkend=\"mapping-types-custom\"/>typedef."
-msgstr "여기서 <literal>types.xml</literal>은 <literal>your.domain</literal> 패키지 내에 있는 리소스이고 맞춤형 <xref linkend=\"mapping-types-custom\"/>typedef를 포함한다."
+#. Tag: para
+#: basic_mapping.xml:83
+#, no-c-format
+msgid ""
+"Where <literal>types.xml</literal> is a resource in the <literal>your."
+"domain</literal> package and contains a custom <link linkend=\"mapping-types-"
+"custom\">typedef</link>."
+msgstr ""
+"여기서 <literal>types.xml</literal>은 <literal>your.domain</literal> 패키지 "
+"내에 있는 리소스이고 맞춤형 <xref linkend=\"mapping-types-custom\">typedef</"
+"xref>를 포함한다."
-#: index.docbook:91
+#. Tag: title
+#: basic_mapping.xml:91
+#, no-c-format
msgid "hibernate-mapping"
msgstr "hibernate-mapping"
-#: index.docbook:93
-msgid "This element has several optional attributes. The <literal>schema</literal> and <literal>catalog</literal> attributes specify that tables referred to in this mapping belong to the named schema and/or catalog. If specified, tablenames will be qualified by the given schema and catalog names. If missing, tablenames will be unqualified. The <literal>default-cascade</literal> attribute specifies what cascade style should be assumed for properties and collections which do not specify a <literal>cascade</literal> attribute. The <literal>auto-import</literal> attribute lets us use unqualified class names in the query language, by default."
-msgstr "이 요소는 몇 개의 선택적인 속성들을 갖는다. <literal>schema</literal> 속성과 <literal>catalog</literal> 속성은 이 매핑 내에서 참조된 테이블들이 명명된 schema 와/또는 catalog에 속한다는 점을 지정한다. 만일 지정될 경우, 테이블 이름들은 주어진 schema 이름과 catalog 이름에 의해 한정(수식)될 것이다. 누락될 경우, 테이블 이름들은 한정되지((수식어가 붙지) 않을 것이다. <literal>default-cascade</literal> 속성은 <literal>cascade</literal> 속성을 지정하지 않은 프로퍼티들과 콜렉션들에 대해 전제될 <literal>cascade</literal> 스타일이 무엇인지를 지정한다. <literal>auto-import</literal> 속성은 디폴트로 우리가 질의 언어 속에서 수식어가 붙지 않은(unqualified) 클래스 이름들을 사용하게 할 것이다."
+#. Tag: para
+#: basic_mapping.xml:93
+#, no-c-format
+msgid ""
+"This element has several optional attributes. The <literal>schema</literal> "
+"and <literal>catalog</literal> attributes specify that tables referred to in "
+"this mapping belong to the named schema and/or catalog. If specified, "
+"tablenames will be qualified by the given schema and catalog names. If "
+"missing, tablenames will be unqualified. The <literal>default-cascade</"
+"literal> attribute specifies what cascade style should be assumed for "
+"properties and collections which do not specify a <literal>cascade</literal> "
+"attribute. The <literal>auto-import</literal> attribute lets us use "
+"unqualified class names in the query language, by default."
+msgstr ""
+"이 요소는 몇 개의 선택적인 속성들을 갖는다. <literal>schema</literal> 속성과 "
+"<literal>catalog</literal> 속성은 이 매핑 내에서 참조된 테이블들이 명명된 "
+"schema 와/또는 catalog에 속한다는 점을 지정한다. 만일 지정될 경우, 테이블 이"
+"름들은 주어진 schema 이름과 catalog 이름에 의해 한정(수식)될 것이다. 누락될 "
+"경우, 테이블 이름들은 한정되지((수식어가 붙지) 않을 것이다. <literal>default-"
+"cascade</literal> 속성은 <literal>cascade</literal> 속성을 지정하지 않은 프로"
+"퍼티들과 콜렉션들에 대해 전제될 <literal>cascade</literal> 스타일이 무엇인지"
+"를 지정한다. <literal>auto-import</literal> 속성은 디폴트로 우리가 질의 언어 "
+"속에서 수식어가 붙지 않은(unqualified) 클래스 이름들을 사용하게 할 것이다."
-#: index.docbook:114
+#. Tag: programlisting
+#: basic_mapping.xml:114
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping\n"
- " schema=\"schemaName\"\n"
- " catalog=\"catalogName\"\n"
- " default-cascade=\"cascade_style\"\n"
- " default-access=\"field|property|ClassName\"\n"
- " default-lazy=\"true|false\"\n"
- " auto-import=\"true|false\"\n"
- " package=\"package.name\"\n"
- " />]]>"
+"<![CDATA[<hibernate-mapping\n"
+" schema=\"schemaName\"\n"
+" catalog=\"catalogName\"\n"
+" default-cascade=\"cascade_style\"\n"
+" default-access=\"field|property|ClassName\"\n"
+" default-lazy=\"true|false\"\n"
+" auto-import=\"true|false\"\n"
+" package=\"package.name\"\n"
+" />]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping\n"
- " schema=\"schemaName\"\n"
- " catalog=\"catalogName\"\n"
- " default-cascade=\"cascade_style\"\n"
- " default-access=\"field|property|ClassName\"\n"
- " default-lazy=\"true|false\"\n"
- " auto-import=\"true|false\"\n"
- " package=\"package.name\"\n"
- " />]]>"
-#: index.docbook:117
+#. Tag: para
+#: basic_mapping.xml:117
+#, no-c-format
msgid "<literal>schema</literal> (optional): The name of a database schema."
msgstr "<literal>schema</literal> (옵션): 데이터베이스 스키마의 이름."
-#: index.docbook:122
+#. Tag: para
+#: basic_mapping.xml:122
+#, no-c-format
msgid "<literal>catalog</literal> (optional): The name of a database catalog."
msgstr "<literal>catalog</literal> (옵션): 데이터베이스 카다록의 이름."
-#: index.docbook:127
-msgid "<literal>default-cascade</literal> (optional - defaults to <literal>none</literal>): A default cascade style."
-msgstr "<literal>default-cascade</literal> (옵션 - 디폴트는 <literal>none</literal>): 디폴트 cascade 스타일."
+#. Tag: para
+#: basic_mapping.xml:127
+#, no-c-format
+msgid ""
+"<literal>default-cascade</literal> (optional - defaults to <literal>none</"
+"literal>): A default cascade style."
+msgstr ""
+"<literal>default-cascade</literal> (옵션 - 디폴트는 <literal>none</"
+"literal>): 디폴트 cascade 스타일."
-#: index.docbook:133
-msgid "<literal>default-access</literal> (optional - defaults to <literal>property</literal>): The strategy Hibernate should use for accessing all properties. Can be a custom implementation of <literal>PropertyAccessor</literal>."
-msgstr "<literal>default-access</literal> (옵션 - 디폴트는 <literal>property</literal>): Hibernate가 모든 프로퍼티들에 액세스하는데 사용하게 될 방도. <literal>PropertyAccessor</literal>에 대한 맞춤형 구현일 수 있다."
+#. Tag: para
+#: basic_mapping.xml:133
+#, no-c-format
+msgid ""
+"<literal>default-access</literal> (optional - defaults to <literal>property</"
+"literal>): The strategy Hibernate should use for accessing all properties. "
+"Can be a custom implementation of <literal>PropertyAccessor</literal>."
+msgstr ""
+"<literal>default-access</literal> (옵션 - 디폴트는 <literal>property</"
+"literal>): Hibernate가 모든 프로퍼티들에 액세스하는데 사용하게 될 방도. "
+"<literal>PropertyAccessor</literal>에 대한 맞춤형 구현일 수 있다."
-#: index.docbook:140
-msgid "<literal>default-lazy</literal> (optional - defaults to <literal>true</literal>): The default value for unspecifed <literal>lazy</literal> attributes of class and collection mappings."
-msgstr "<literal>default-lazy</literal> (옵션 - 디폴트는 <literal>true</literal>): class 및 collection 매핑들의 지정되지 않은 <literal>lazy</literal> 속성들에 대한 디폴트 값."
+#. Tag: para
+#: basic_mapping.xml:140
+#, no-c-format
+msgid ""
+"<literal>default-lazy</literal> (optional - defaults to <literal>true</"
+"literal>): The default value for unspecifed <literal>lazy</literal> "
+"attributes of class and collection mappings."
+msgstr ""
+"<literal>default-lazy</literal> (옵션 - 디폴트는 <literal>true</literal>): "
+"class 및 collection 매핑들의 지정되지 않은 <literal>lazy</literal> 속성들에 "
+"대한 디폴트 값."
-#: index.docbook:147
-msgid "<literal>auto-import</literal> (optional - defaults to <literal>true</literal>): Specifies whether we can use unqualified class names (of classes in this mapping) in the query language."
-msgstr "<literal>auto-import</literal> (옵션 - 디폴트는 <literal>true</literal>): 우리가 질의 언어 내에 (이 매핑에서 클래스들에 대해) 수식어가 붙지 않은 클래스 이름들을 사용할 수 있는지를 지정한다."
+#. Tag: para
+#: basic_mapping.xml:147
+#, no-c-format
+msgid ""
+"<literal>auto-import</literal> (optional - defaults to <literal>true</"
+"literal>): Specifies whether we can use unqualified class names (of classes "
+"in this mapping) in the query language."
+msgstr ""
+"<literal>auto-import</literal> (옵션 - 디폴트는 <literal>true</literal>): 우"
+"리가 질의 언어 내에 (이 매핑에서 클래스들에 대해) 수식어가 붙지 않은 클래스 "
+"이름들을 사용할 수 있는지를 지정한다."
-#: index.docbook:154
-msgid "<literal>package</literal> (optional): Specifies a package prefix to assume for unqualified class names in the mapping document."
-msgstr "<literal>package</literal> (옵션): 매핑 문서 내에서 수식어가 붙지 않은 클래스 이름들에 대해 가정할 패키지 접두어를 지정한다."
+#. Tag: para
+#: basic_mapping.xml:154
+#, no-c-format
+msgid ""
+"<literal>package</literal> (optional): Specifies a package prefix to assume "
+"for unqualified class names in the mapping document."
+msgstr ""
+"<literal>package</literal> (옵션): 매핑 문서 내에서 수식어가 붙지 않은 클래"
+"스 이름들에 대해 가정할 패키지 접두어를 지정한다."
-#: index.docbook:162
-msgid "If you have two persistent classes with the same (unqualified) name, you should set <literal>auto-import=\"false\"</literal>. Hibernate will throw an exception if you attempt to assign two classes to the same \"imported\" name."
-msgstr "만일 당신이 동일한 (수식어가 붙지 않은) 이름을 가진 두 개의 영속 클래스들을 갖고 있다면, 당신은 <literal>auto-import=\"false\"</literal>를 설정해야 한다. 만일 당신이 두 개의 클래스들에 동일한 \"imported\" 이름을 할당하려고 시도할 경우에 Hibernate는 예외상황을 던질 것이다."
+#. Tag: para
+#: basic_mapping.xml:162
+#, no-c-format
+msgid ""
+"If you have two persistent classes with the same (unqualified) name, you "
+"should set <literal>auto-import=\"false\"</literal>. Hibernate will throw an "
+"exception if you attempt to assign two classes to the same \"imported\" name."
+msgstr ""
+"만일 당신이 동일한 (수식어가 붙지 않은) 이름을 가진 두 개의 영속 클래스들을 "
+"갖고 있다면, 당신은 <literal>auto-import=\"false\"</literal>를 설정해야 한"
+"다. 만일 당신이 두 개의 클래스들에 동일한 \"imported\" 이름을 할당하려고 시도"
+"할 경우에 Hibernate는 예외상황을 던질 것이다."
-#: index.docbook:168
-msgid "Note that the <literal>hibernate-mapping</literal> element allows you to nest several persistent <literal><class></literal> mappings, as shown above. It is however good practice (and expected by some tools) to map only a single persistent class (or a single class hierarchy) in one mapping file and name it after the persistent superclass, e.g. <literal>Cat.hbm.xml</literal>, <literal>Dog.hbm.xml</literal>, or if using inheritance, <literal>Animal.hbm.xml</literal>."
-msgstr "위에 보여진 것처럼 <literal>hibernate-mapping</literal> 요소는 몇몇 영속 <literal><class></literal> 매핑들을 내부에 포함하는 것을 허용해준다는 점을 노트하라. 하지만 한 개의 매핑 파일 속에 한 개의 영속 클래스(또는 한 개의 클래스 계층구조) 만을 매핑하고 영속 서브 클래스 뒤에 그것을 명명하는 것이 좋은 연습이다 (그리고 몇몇 도구들에 의해 기대된다). 예를 들면 <literal>Cat.hbm.xml</literal>, <literal>Dog.hbm.xml</literal> 또는 상속을 사용할 경우에는 <literal>Animal.hbm.xml</literal>."
+#. Tag: para
+#: basic_mapping.xml:168
+#, no-c-format
+msgid ""
+"Note that the <literal>hibernate-mapping</literal> element allows you to "
+"nest several persistent <literal><class></literal> mappings, as shown "
+"above. It is however good practice (and expected by some tools) to map only "
+"a single persistent class (or a single class hierarchy) in one mapping file "
+"and name it after the persistent superclass, e.g. <literal>Cat.hbm.xml</"
+"literal>, <literal>Dog.hbm.xml</literal>, or if using inheritance, "
+"<literal>Animal.hbm.xml</literal>."
+msgstr ""
+"위에 보여진 것처럼 <literal>hibernate-mapping</literal> 요소는 몇몇 영속 "
+"<literal><class></literal> 매핑들을 내부에 포함하는 것을 허용해준다는 "
+"점을 노트하라. 하지만 한 개의 매핑 파일 속에 한 개의 영속 클래스(또는 한 개"
+"의 클래스 계층구조) 만을 매핑하고 영속 서브 클래스 뒤에 그것을 명명하는 것이 "
+"좋은 연습이다 (그리고 몇몇 도구들에 의해 기대된다). 예를 들면 <literal>Cat."
+"hbm.xml</literal>, <literal>Dog.hbm.xml</literal> 또는 상속을 사용할 경우에"
+"는 <literal>Animal.hbm.xml</literal>."
-#: index.docbook:181
+#. Tag: title
+#: basic_mapping.xml:181
+#, no-c-format
msgid "<title>class</title>"
-msgstr "<title>class</title>"
+msgstr ""
-#: index.docbook:183
-msgid "You may declare a persistent class using the <literal>class</literal> element:"
-msgstr "당신은 <literal>class</literal> 요소를 사용하여 영속 클래스를 선언할 수도 있다:"
+#. Tag: para
+#: basic_mapping.xml:183
+#, no-c-format
+msgid ""
+"You may declare a persistent class using the <literal>class</literal> "
+"element:"
+msgstr ""
+"당신은 <literal>class</literal> 요소를 사용하여 영속 클래스를 선언할 수도 있"
+"다:"
-#: index.docbook:211
+#. Tag: programlisting
+#: basic_mapping.xml:211
+#, no-c-format
msgid ""
- "<![CDATA[<class\n"
- " name=\"ClassName\"\n"
- " table=\"tableName\"\n"
- " discriminator-value=\"discriminator_value\"\n"
- " mutable=\"true|false\"\n"
- " schema=\"owner\"\n"
- " catalog=\"catalog\"\n"
- " proxy=\"ProxyInterface\"\n"
- " dynamic-update=\"true|false\"\n"
- " dynamic-insert=\"true|false\"\n"
- " select-before-update=\"true|false\"\n"
- " polymorphism=\"implicit|explicit\"\n"
- " where=\"arbitrary sql where condition\"\n"
- " persister=\"PersisterClass\"\n"
- " batch-size=\"N\"\n"
- " optimistic-lock=\"none|version|dirty|all\"\n"
- " lazy=\"true|false\"\n"
- " entity-name=\"EntityName\"\n"
- " check=\"arbitrary sql check condition\"\n"
- " rowid=\"rowid\"\n"
- " subselect=\"SQL expression\"\n"
- " abstract=\"true|false\"\n"
- " node=\"element-name\"\n"
- "/>]]>"
+"<![CDATA[<class\n"
+" name=\"ClassName\"\n"
+" table=\"tableName\"\n"
+" discriminator-value=\"discriminator_value\"\n"
+" mutable=\"true|false\"\n"
+" schema=\"owner\"\n"
+" catalog=\"catalog\"\n"
+" proxy=\"ProxyInterface\"\n"
+" dynamic-update=\"true|false\"\n"
+" dynamic-insert=\"true|false\"\n"
+" select-before-update=\"true|false\"\n"
+" polymorphism=\"implicit|explicit\"\n"
+" where=\"arbitrary sql where condition\"\n"
+" persister=\"PersisterClass\"\n"
+" batch-size=\"N\"\n"
+" optimistic-lock=\"none|version|dirty|all\"\n"
+" lazy=\"true|false\"\n"
+" entity-name=\"EntityName\"\n"
+" check=\"arbitrary sql check condition\"\n"
+" rowid=\"rowid\"\n"
+" subselect=\"SQL expression\"\n"
+" abstract=\"true|false\"\n"
+" node=\"element-name\"\n"
+"/>]]>"
msgstr ""
- "<![CDATA[<class\n"
- " name=\"ClassName\"\n"
- " table=\"tableName\"\n"
- " discriminator-value=\"discriminator_value\"\n"
- " mutable=\"true|false\"\n"
- " schema=\"owner\"\n"
- " catalog=\"catalog\"\n"
- " proxy=\"ProxyInterface\"\n"
- " dynamic-update=\"true|false\"\n"
- " dynamic-insert=\"true|false\"\n"
- " select-before-update=\"true|false\"\n"
- " polymorphism=\"implicit|explicit\"\n"
- " where=\"arbitrary sql where condition\"\n"
- " persister=\"PersisterClass\"\n"
- " batch-size=\"N\"\n"
- " optimistic-lock=\"none|version|dirty|all\"\n"
- " lazy=\"true|false\"\n"
- " entity-name=\"EntityName\"\n"
- " check=\"arbitrary sql check condition\"\n"
- " rowid=\"rowid\"\n"
- " subselect=\"SQL expression\"\n"
- " abstract=\"true|false\"\n"
- " node=\"element-name\"\n"
- "/>]]>"
-#: index.docbook:214
-msgid "<literal>name</literal> (optional): The fully qualified Java class name of the persistent class (or interface). If this attribute is missing, it is assumed that the mapping is for a non-POJO entity."
-msgstr "<literal>name</literal> (옵션): 영속 클래스(또는 인터페이스)의 전체 수식어가 붙은 Java 클래스 이름. 만일 이 속성이 누락될 경우, 매핑이 non-POJO 엔티티라고 가정된다."
+#. Tag: para
+#: basic_mapping.xml:214
+#, no-c-format
+msgid ""
+"<literal>name</literal> (optional): The fully qualified Java class name of "
+"the persistent class (or interface). If this attribute is missing, it is "
+"assumed that the mapping is for a non-POJO entity."
+msgstr ""
+"<literal>name</literal> (옵션): 영속 클래스(또는 인터페이스)의 전체 수식어가 "
+"붙은 Java 클래스 이름. 만일 이 속성이 누락될 경우, 매핑이 non-POJO 엔티티라"
+"고 가정된다."
-#: index.docbook:221
-msgid "<literal>table</literal> (optional - defaults to the unqualified class name): The name of its database table."
-msgstr "<literal>table</literal> (옵션 - 디폴트는 수식어가 붙지 않은 클래스명): 그것의 데이터베이스 테이블의 이름."
+#. Tag: para
+#: basic_mapping.xml:221
+#, no-c-format
+msgid ""
+"<literal>table</literal> (optional - defaults to the unqualified class "
+"name): The name of its database table."
+msgstr ""
+"<literal>table</literal> (옵션 - 디폴트는 수식어가 붙지 않은 클래스명): 그것"
+"의 데이터베이스 테이블의 이름."
-#: index.docbook:227
-msgid "<literal>discriminator-value</literal> (optional - defaults to the class name): A value that distiguishes individual subclasses, used for polymorphic behaviour. Acceptable values include <literal>null</literal> and <literal>not null</literal>."
-msgstr "<literal>discriminator-value</literal> (옵션 - 디폴트는 클래스 이름): 다형성(polymorphic) 특징에 사용되는, 개별 서브 클래스들를 구별짓는 값. 허용가능한 값들은<literal>null</literal>과 <literal>not null</literal>을 포함한다."
+#. Tag: para
+#: basic_mapping.xml:227
+#, no-c-format
+msgid ""
+"<literal>discriminator-value</literal> (optional - defaults to the class "
+"name): A value that distiguishes individual subclasses, used for polymorphic "
+"behaviour. Acceptable values include <literal>null</literal> and "
+"<literal>not null</literal>."
+msgstr ""
+"<literal>discriminator-value</literal> (옵션 - 디폴트는 클래스 이름): 다형성"
+"(polymorphic) 특징에 사용되는, 개별 서브 클래스들를 구별짓는 값. 허용가능한 "
+"값들은<literal>null</literal>과 <literal>not null</literal>을 포함한다."
-#: index.docbook:234
-msgid "<literal>mutable</literal> (optional, defaults to <literal>true</literal>): Specifies that instances of the class are (not) mutable."
-msgstr "<literal>mutable</literal> (옵션 - 디폴트는 <literal>true</literal>): 클래스들의 인스턴스들이 가변적인지를 (가변적이지 않은지를) 지정한다."
+#. Tag: para
+#: basic_mapping.xml:234
+#, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional, defaults to <literal>true</literal>): "
+"Specifies that instances of the class are (not) mutable."
+msgstr ""
+"<literal>mutable</literal> (옵션 - 디폴트는 <literal>true</literal>): 클래스"
+"들의 인스턴스들이 가변적인지를 (가변적이지 않은지를) 지정한다."
-#: index.docbook:240, index.docbook:2204
-msgid "<literal>schema</literal> (optional): Override the schema name specified by the root <literal><hibernate-mapping></literal> element."
-msgstr "<literal>schema</literal> (옵션): 루트 <literal><hibernate-mapping></literal> 요소에 의해 지정된 스키마 이름을 오버라이드 시킨다."
+#. Tag: para
+#: basic_mapping.xml:240 basic_mapping.xml:2204
+#, fuzzy, no-c-format
+msgid ""
+"<literal>schema</literal> (optional): Override the schema name specified by "
+"the root <literal><hibernate-mapping></literal> element."
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>schema</literal> (옵션): 루트 <literal><hibernate-mapping></"
+"literal> 요소에 의해 지정된 스키마 이름을 오버라이드 시킨다.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>schema</literal> (옵션): 루트 <literal><hibernate-mapping></"
+"literal> 요소에 의해 지정된 스키마 이름을 오버라이드 시킨다"
-#: index.docbook:246, index.docbook:2210
-msgid "<literal>catalog</literal> (optional): Override the catalog name specified by the root <literal><hibernate-mapping></literal> element."
-msgstr "<literal>catalog</literal> (옵션): 루트 <literal><hibernate-mapping></literal> 요소에 의해 지정된 카다록 이름을 오버라이드 시킨다."
+#. Tag: para
+#: basic_mapping.xml:246 basic_mapping.xml:2210
+#, fuzzy, no-c-format
+msgid ""
+"<literal>catalog</literal> (optional): Override the catalog name specified "
+"by the root <literal><hibernate-mapping></literal> element."
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>catalog</literal> (옵션): 루트 <literal><hibernate-mapping></"
+"literal> 요소에 의해 지정된 카다록 이름을 오버라이드 시킨다.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>catalog</literal> (옵션): 루트 <literal><hibernate-mapping></"
+"literal> 요소에 의해 지정된 카타록 이름을 오버라이드 시킨다."
-#: index.docbook:252
-msgid "<literal>proxy</literal> (optional): Specifies an interface to use for lazy initializing proxies. You may specify the name of the class itself."
-msgstr "<literal>proxy</literal> (옵션): lazy initializing proxy들에 사용할 인터페이스를 지정한다. 당신은 클래스 그 자체의 이름을 지정할 수 도 있다."
+#. Tag: para
+#: basic_mapping.xml:252
+#, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): Specifies an interface to use for lazy "
+"initializing proxies. You may specify the name of the class itself."
+msgstr ""
+"<literal>proxy</literal> (옵션): lazy initializing proxy들에 사용할 인터페이"
+"스를 지정한다. 당신은 클래스 그 자체의 이름을 지정할 수 도 있다."
-#: index.docbook:258
-msgid "<literal>dynamic-update</literal> (optional, defaults to <literal>false</literal>): Specifies that <literal>UPDATE</literal> SQL should be generated at runtime and contain only those columns whose values have changed."
-msgstr "<literal>dynamic-update</literal> (옵션 - 디폴트는 <literal>false</literal>): <literal>UPDATE</literal> SQL이 실행 시에 생성되고 그들 컬럼들의 값들이 변경된 그들 컬럼들 만을 포함할 것인지를 지정한다."
+#. Tag: para
+#: basic_mapping.xml:258
+#, no-c-format
+msgid ""
+"<literal>dynamic-update</literal> (optional, defaults to <literal>false</"
+"literal>): Specifies that <literal>UPDATE</literal> SQL should be generated "
+"at runtime and contain only those columns whose values have changed."
+msgstr ""
+"<literal>dynamic-update</literal> (옵션 - 디폴트는 <literal>false</"
+"literal>): <literal>UPDATE</literal> SQL이 실행 시에 생성되고 그들 컬럼들의 "
+"값들이 변경된 그들 컬럼들 만을 포함할 것인지를 지정한다."
-#: index.docbook:265
-msgid "<literal>dynamic-insert</literal> (optional, defaults to <literal>false</literal>): Specifies that <literal>INSERT</literal> SQL should be generated at runtime and contain only the columns whose values are not null."
-msgstr "<literal>dynamic-insert</literal> (옵션 - 디폴트는 <literal>false</literal>): 생성될 <literal>INSERT</literal>이 실행 시에 생성되고 그들 컬럼들의 값이 null이 아닌 컬럼들 만을 포함할 것인지를 지정한다."
+#. Tag: para
+#: basic_mapping.xml:265
+#, no-c-format
+msgid ""
+"<literal>dynamic-insert</literal> (optional, defaults to <literal>false</"
+"literal>): Specifies that <literal>INSERT</literal> SQL should be generated "
+"at runtime and contain only the columns whose values are not null."
+msgstr ""
+"<literal>dynamic-insert</literal> (옵션 - 디폴트는 <literal>false</"
+"literal>): 생성될 <literal>INSERT</literal>이 실행 시에 생성되고 그들 컬럼들"
+"의 값이 null이 아닌 컬럼들 만을 포함할 것인지를 지정한다."
-#: index.docbook:272
-msgid "<literal>select-before-update</literal> (optional, defaults to <literal>false</literal>): Specifies that Hibernate should <emphasis>never</emphasis> perform an SQL <literal>UPDATE</literal> unless it is certain that an object is actually modified. In certain cases (actually, only when a transient object has been associated with a new session using <literal>update()</literal>), this means that Hibernate will perform an extra SQL <literal>SELECT</literal> to determine if an <literal>UPDATE</literal> is actually required."
-msgstr "<literal>select-before-update</literal> (옵션 - 디폴트는 <literal>false</literal>): 객체가 실제로 변경되는 것이 확실하지 않는 한, Hibernate가 SQL <literal>UPDATE</literal>를 <emphasis>결코</emphasis> 실행하지 않을 것임을 지정한다. 어떤 경우들에서(실제로 transient 객체가 <literal>update()</literal>를 사용하여 새로운 session에 연관되었을 때에만), 이것은 하나의 <literal>UPDATE</literal>가 실제로 필요한 경우인지 여부를 결정하기 위해 Hibernate는 특별한 SQL <literal>SELECT</literal>를 실행할 것임을 의미한다."
+#. Tag: para
+#: basic_mapping.xml:272
+#, no-c-format
+msgid ""
+"<literal>select-before-update</literal> (optional, defaults to "
+"<literal>false</literal>): Specifies that Hibernate should <emphasis>never</"
+"emphasis> perform an SQL <literal>UPDATE</literal> unless it is certain that "
+"an object is actually modified. In certain cases (actually, only when a "
+"transient object has been associated with a new session using <literal>update"
+"()</literal>), this means that Hibernate will perform an extra SQL "
+"<literal>SELECT</literal> to determine if an <literal>UPDATE</literal> is "
+"actually required."
+msgstr ""
+"<literal>select-before-update</literal> (옵션 - 디폴트는 <literal>false</"
+"literal>): 객체가 실제로 변경되는 것이 확실하지 않는 한, Hibernate가 SQL "
+"<literal>UPDATE</literal>를 <emphasis>결코</emphasis> 실행하지 않을 것임을 지"
+"정한다. 어떤 경우들에서(실제로 transient 객체가 <literal>update()</literal>"
+"를 사용하여 새로운 session에 연관되었을 때에만), 이것은 하나의 "
+"<literal>UPDATE</literal>가 실제로 필요한 경우인지 여부를 결정하기 위해 "
+"Hibernate는 특별한 SQL <literal>SELECT</literal>를 실행할 것임을 의미한다."
-#: index.docbook:282
-msgid "<literal>polymorphism</literal> (optional, defaults to <literal>implicit</literal>): Determines whether implicit or explicit query polymorphism is used."
-msgstr "<literal>polymorphism</literal> (옵션 - 디폴트는 <literal>implicit</literal>): implicit 질의 다형성이나 explicit 질의 다형성 중 어느 것이 사용될 것인지를 결정한다."
+#. Tag: para
+#: basic_mapping.xml:282
+#, no-c-format
+msgid ""
+"<literal>polymorphism</literal> (optional, defaults to <literal>implicit</"
+"literal>): Determines whether implicit or explicit query polymorphism is "
+"used."
+msgstr ""
+"<literal>polymorphism</literal> (옵션 - 디폴트는 <literal>implicit</"
+"literal>): implicit 질의 다형성이나 explicit 질의 다형성 중 어느 것이 사용될 "
+"것인지를 결정한다."
-#: index.docbook:288
-msgid "<literal>where</literal> (optional) specify an arbitrary SQL <literal>WHERE</literal> condition to be used when retrieving objects of this class"
-msgstr "<literal>where</literal> (옵션) 이 클래스의 객체들을 검색할 때 사용될 임의적인 SQL <literal>WHERE</literal> 조건을 지정한다"
+#. Tag: para
+#: basic_mapping.xml:288
+#, no-c-format
+msgid ""
+"<literal>where</literal> (optional) specify an arbitrary SQL <literal>WHERE</"
+"literal> condition to be used when retrieving objects of this class"
+msgstr ""
+"<literal>where</literal> (옵션) 이 클래스의 객체들을 검색할 때 사용될 임의적"
+"인 SQL <literal>WHERE</literal> 조건을 지정한다"
-#: index.docbook:294
-msgid "<literal>persister</literal> (optional): Specifies a custom <literal>ClassPersister</literal>."
-msgstr "<literal>persister</literal> (옵션): 맞춤형 <literal>ClassPersister</literal>를 지정한다."
+#. Tag: para
+#: basic_mapping.xml:294
+#, no-c-format
+msgid ""
+"<literal>persister</literal> (optional): Specifies a custom "
+"<literal>ClassPersister</literal>."
+msgstr ""
+"<literal>persister</literal> (옵션): 맞춤형 <literal>ClassPersister</literal>"
+"를 지정한다."
-#: index.docbook:299
-msgid "<literal>batch-size</literal> (optional, defaults to <literal>1</literal>) specify a \"batch size\" for fetching instances of this class by identifier."
-msgstr "<literal>batch-size</literal> (옵션 - 디폴트는 <literal>1</literal>) 식별자에 의해 이 클래스의 인스턴스들을 페치시키는 \"배치 사이즈\"를 지정한다."
+#. Tag: para
+#: basic_mapping.xml:299
+#, no-c-format
+msgid ""
+"<literal>batch-size</literal> (optional, defaults to <literal>1</literal>) "
+"specify a \"batch size\" for fetching instances of this class by identifier."
+msgstr ""
+"<literal>batch-size</literal> (옵션 - 디폴트는 <literal>1</literal>) 식별자"
+"에 의해 이 클래스의 인스턴스들을 페치시키는 \"배치 사이즈\"를 지정한다."
-#: index.docbook:305
-msgid "<literal>optimistic-lock</literal> (optional, defaults to <literal>version</literal>): Determines the optimistic locking strategy."
-msgstr "<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>version</literal>): optimistic 잠금 방도를 결정한다."
+#. Tag: para
+#: basic_mapping.xml:305
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional, defaults to <literal>version</"
+"literal>): Determines the optimistic locking strategy."
+msgstr ""
+"<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>version</"
+"literal>): optimistic 잠금 방도를 결정한다."
-#: index.docbook:311
-msgid "<literal>lazy</literal> (optional): Lazy fetching may be completely disabled by setting <literal>lazy=\"false\"</literal>."
-msgstr "<literal>lazy</literal> (옵션): <literal>lazy=\"false\"</literal>를 설정함으로써 Lazy fetching이 전체적으로 사용불가능하게 될 수 있다."
+#. Tag: para
+#: basic_mapping.xml:311
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional): Lazy fetching may be completely disabled "
+"by setting <literal>lazy=\"false\"</literal>."
+msgstr ""
+"<literal>lazy</literal> (옵션): <literal>lazy=\"false\"</literal>를 설정함으"
+"로써 Lazy fetching이 전체적으로 사용불가능하게 될 수 있다."
-#: index.docbook:317
-msgid "<literal>entity-name</literal> (optional, defaults to the class name): Hibernate3 allows a class to be mapped multiple times (to different tables, potentially), and allows entity mappings that are represented by Maps or XML at the Java level. In these cases, you should provide an explicit arbitrary name for the entity. See <xref linkend=\"persistent-classes-dynamicmodels\"/> and <xref linkend=\"xml\"/> for more information."
-msgstr "<literal>entity-name</literal>(옵션, 디폴트는 클래스 이름): Hibernate3는 하나의 클래스가 (잠정적으로 다른 테이블들로) 여러번 매핑되는 것을 허용해주고, Java 레벨에서 Map 또는 XML에 의해 표현 되는 엔티티 매핑들을 허용한다. 이들 경우들에서, 당신은 그 엔티티에 대한 명시적인 임의의 이름을 제공해야 한다. <literal>entity-name</literal> (옵션): Hibernate3는 하나의 클래스가 (잠정적으로 다른 테이블들로) 여러 번 매핑되는 것을 허용하며, 자바 레벨에서 Map들 또는 XML에 의해 표현되는 엔티티 매핑들을 허용한다. 이들 경우들에서, 당신은 그 엔티티들에 대한 명시적인 임의의 이름을 제공해야 한다. 추가 정보는 <xref linkend=\"persistent-classes-dynamicmodels\"/>과 <xref linkend=\"xml\"/>을 보라."
+#. Tag: para
+#: basic_mapping.xml:317
+#, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional, defaults to the class name): "
+"Hibernate3 allows a class to be mapped multiple times (to different tables, "
+"potentially), and allows entity mappings that are represented by Maps or XML "
+"at the Java level. In these cases, you should provide an explicit arbitrary "
+"name for the entity. See <xref linkend=\"persistent-classes-dynamicmodels\"/"
+"> and <xref linkend=\"xml\"/> for more information."
+msgstr ""
+"<literal>entity-name</literal>(옵션, 디폴트는 클래스 이름): Hibernate3는 하나"
+"의 클래스가 (잠정적으로 다른 테이블들로) 여러번 매핑되는 것을 허용해주고, "
+"Java 레벨에서 Map 또는 XML에 의해 표현 되는 엔티티 매핑들을 허용한다. 이들 경"
+"우들에서, 당신은 그 엔티티에 대한 명시적인 임의의 이름을 제공해야 한다. "
+"<literal>entity-name</literal> (옵션): Hibernate3는 하나의 클래스가 (잠정적으"
+"로 다른 테이블들로) 여러 번 매핑되는 것을 허용하며, 자바 레벨에서 Map들 또는 "
+"XML에 의해 표현되는 엔티티 매핑들을 허용한다. 이들 경우들에서, 당신은 그 엔티"
+"티들에 대한 명시적인 임의의 이름을 제공해야 한다. 추가 정보는 <xref linkend="
+"\"persistent-classes-dynamicmodels\"/>과 <xref linkend=\"xml\"/>을 보라."
-#: index.docbook:327
-msgid "<literal>check</literal> (optional): A SQL expression used to generate a multi-row <emphasis>check</emphasis> constraint for automatic schema generation."
-msgstr "<literal>check</literal> (옵션): 자동적인 스키마 생성을 위한 다중-행 <emphasis>check</emphasis> constraint를 생성시키는데 사용되는 SQL 표현식."
+#. Tag: para
+#: basic_mapping.xml:327
+#, no-c-format
+msgid ""
+"<literal>check</literal> (optional): A SQL expression used to generate a "
+"multi-row <emphasis>check</emphasis> constraint for automatic schema "
+"generation."
+msgstr ""
+"<literal>check</literal> (옵션): 자동적인 스키마 생성을 위한 다중-행 "
+"<emphasis>check</emphasis> constraint를 생성시키는데 사용되는 SQL 표현식."
-#: index.docbook:333
-msgid "<literal>rowid</literal> (optional): Hibernate can use so called ROWIDs on databases which support. E.g. on Oracle, Hibernate can use the <literal>rowid</literal> extra column for fast updates if you set this option to <literal>rowid</literal>. A ROWID is an implementation detail and represents the physical location of a stored tuple."
-msgstr "<literal>rowid</literal> (옵션): Hibernate는 지원되는 데이터베이스들, 예를 들어 Oracle 상에서 이른바 ROWID들을 사용할 수 있고, Hibernate는 당신이 이 옵션을 <literal>rowid</literal>로 설정하는 경우에 빠른 업데이트를 위한 특별한 <literal>rowid</literal> 컬럼을 사용할 수 있다. ROWID는 구현 상세이고 저장된 튜플(tuple)의 물리적이니 위치를 표현한다."
+#. Tag: para
+#: basic_mapping.xml:333
+#, no-c-format
+msgid ""
+"<literal>rowid</literal> (optional): Hibernate can use so called ROWIDs on "
+"databases which support. E.g. on Oracle, Hibernate can use the "
+"<literal>rowid</literal> extra column for fast updates if you set this "
+"option to <literal>rowid</literal>. A ROWID is an implementation detail and "
+"represents the physical location of a stored tuple."
+msgstr ""
+"<literal>rowid</literal> (옵션): Hibernate는 지원되는 데이터베이스들, 예를 들"
+"어 Oracle 상에서 이른바 ROWID들을 사용할 수 있고, Hibernate는 당신이 이 옵션"
+"을 <literal>rowid</literal>로 설정하는 경우에 빠른 업데이트를 위한 특별한 "
+"<literal>rowid</literal> 컬럼을 사용할 수 있다. ROWID는 구현 상세이고 저장된 "
+"튜플(tuple)의 물리적이니 위치를 표현한다."
-#: index.docbook:341
-msgid "<literal>subselect</literal> (optional): Maps an immutable and read-only entity to a database subselect. Useful if you want to have a view instead of a base table, but don't. See below for more information."
-msgstr "<literal>subselect</literal> (옵션): 불변의 읽기 전용 엔티티를 데이터베이스 subselect로 매핑시킨다. 당신이 기본 테이블 대신에 뷰를 갖고자 원할 경우에 유용하지만, 사용을 자제하라. 추가 정보는 아래를 보라."
+#. Tag: para
+#: basic_mapping.xml:341
+#, no-c-format
+msgid ""
+"<literal>subselect</literal> (optional): Maps an immutable and read-only "
+"entity to a database subselect. Useful if you want to have a view instead of "
+"a base table, but don't. See below for more information."
+msgstr ""
+"<literal>subselect</literal> (옵션): 불변의 읽기 전용 엔티티를 데이터베이스 "
+"subselect로 매핑시킨다. 당신이 기본 테이블 대신에 뷰를 갖고자 원할 경우에 유"
+"용하지만, 사용을 자제하라. 추가 정보는 아래를 보라."
-#: index.docbook:348
-msgid "<literal>abstract</literal> (optional): Used to mark abstract superclasses in <literal><union-subclass></literal> hierarchies."
-msgstr "<literal>abstract</literal> (옵션): <literal><union-subclass></literal> 계층 구조들 내에서 abstract 슈퍼클래스들을 마크하는데 사용된다."
+#. Tag: para
+#: basic_mapping.xml:348
+#, no-c-format
+msgid ""
+"<literal>abstract</literal> (optional): Used to mark abstract superclasses "
+"in <literal><union-subclass></literal> hierarchies."
+msgstr ""
+"<literal>abstract</literal> (옵션): <literal><union-subclass></"
+"literal> 계층 구조들 내에서 abstract 슈퍼클래스들을 마크하는데 사용된다."
-#: index.docbook:356
-msgid "It is perfectly acceptable for the named persistent class to be an interface. You would then declare implementing classes of that interface using the <literal><subclass></literal> element. You may persist any <emphasis>static</emphasis> inner class. You should specify the class name using the standard form ie. <literal>eg.Foo$Bar</literal>."
-msgstr "명명된 영속 클래스가 인터페이스가 되는 것은 완전히 수용가능하다. 그런 다음 당신은 <literal><subclass></literal> 요소를 사용하여 그 인터페이스에 대한 구현 클래스들을 선언할 것이다. 당신은 임의의 <emphasis>static</emphasis> inner 클래스를 영속화 시킬 수 있다. 당신은 표준 형식, 예를 들어 <literal>eg.Foo$Bar</literal>를 사용하여 클래스 이름을 지정해야 한다."
+#. Tag: para
+#: basic_mapping.xml:356
+#, no-c-format
+msgid ""
+"It is perfectly acceptable for the named persistent class to be an "
+"interface. You would then declare implementing classes of that interface "
+"using the <literal><subclass></literal> element. You may persist any "
+"<emphasis>static</emphasis> inner class. You should specify the class name "
+"using the standard form ie. <literal>eg.Foo$Bar</literal>."
+msgstr ""
+"명명된 영속 클래스가 인터페이스가 되는 것은 완전히 수용가능하다. 그런 다음 당"
+"신은 <literal><subclass></literal> 요소를 사용하여 그 인터페이스에 대"
+"한 구현 클래스들을 선언할 것이다. 당신은 임의의 <emphasis>static</emphasis> "
+"inner 클래스를 영속화 시킬 수 있다. 당신은 표준 형식, 예를 들어 <literal>eg."
+"Foo$Bar</literal>를 사용하여 클래스 이름을 지정해야 한다."
-#: index.docbook:363
-msgid "Immutable classes, <literal>mutable=\"false\"</literal>, may not be updated or deleted by the application. This allows Hibernate to make some minor performance optimizations."
-msgstr "불변의 클래스, <literal>mutable=\"false\"</literal>는 어플리케이션에 의해 업데이트되지 않을 것이거나 삭제되지 않을 것이다. 이것은 Hibernate로 하여금 어떤 마이너 퍼포먼스 최적화를 행하게끔 허용해준다."
+#. Tag: para
+#: basic_mapping.xml:363
+#, no-c-format
+msgid ""
+"Immutable classes, <literal>mutable=\"false\"</literal>, may not be updated "
+"or deleted by the application. This allows Hibernate to make some minor "
+"performance optimizations."
+msgstr ""
+"불변의 클래스, <literal>mutable=\"false\"</literal>는 어플리케이션에 의해 업"
+"데이트되지 않을 것이거나 삭제되지 않을 것이다. 이것은 Hibernate로 하여금 어"
+"떤 마이너 퍼포먼스 최적화를 행하게끔 허용해준다."
-#: index.docbook:368
-msgid "The optional <literal>proxy</literal> attribute enables lazy initialization of persistent instances of the class. Hibernate will initially return CGLIB proxies which implement the named interface. The actual persistent object will be loaded when a method of the proxy is invoked. See \"Initializing collections and proxies\" below."
-msgstr "선택적인 <literal>proxy</literal> 속성은 그 클래스의 영속 인스턴스들에 대한 lazy 초기화를 가능하게 해준다. Hibernate는 명명된 인터페이스를 구현하는 CGLIB 프락시들을 초기에 반환할 것이다. 실제 영속 객체는 프락시의 메소드가 호출될 때 로드될 것이다. 아래 \"Lazy 초기화를 위한 프락시들\"을 보라."
+#. Tag: para
+#: basic_mapping.xml:368
+#, no-c-format
+msgid ""
+"The optional <literal>proxy</literal> attribute enables lazy initialization "
+"of persistent instances of the class. Hibernate will initially return CGLIB "
+"proxies which implement the named interface. The actual persistent object "
+"will be loaded when a method of the proxy is invoked. See \"Initializing "
+"collections and proxies\" below."
+msgstr ""
+"선택적인 <literal>proxy</literal> 속성은 그 클래스의 영속 인스턴스들에 대한 "
+"lazy 초기화를 가능하게 해준다. Hibernate는 명명된 인터페이스를 구현하는 "
+"CGLIB 프락시들을 초기에 반환할 것이다. 실제 영속 객체는 프락시의 메소드가 호"
+"출될 때 로드될 것이다. 아래 \"Lazy 초기화를 위한 프락시들\"을 보라."
-#: index.docbook:375
-msgid "<emphasis>Implicit</emphasis> polymorphism means that instances of the class will be returned by a query that names any superclass or implemented interface or the class and that instances of any subclass of the class will be returned by a query that names the class itself. <emphasis>Explicit</emphasis> polymorphism means that class instances will be returned only by queries that explicitly name that class and that queries that name the class will return only instances of subclasses mapped inside this <literal><class></literal> declaration as a <literal><subclass></literal> or <literal><joined-subclass></literal>. For most purposes the default, <literal>polymorphism=\"implicit\"</literal>, is appropriate. Explicit polymorphism is useful when two different classes are mapped to the same table (this allows a \"lightweight\" class that contains a subset of the table columns)."
-msgstr "<emphasis>Implicit</emphasis> 다형성은 클래스의 인스턴스들이 어떤 서브클래스나 구현된 인터페이스 또는 클래스를 명명하는 질의에 의해 반환될 것임을 의미하고 그 클래스의 어떤 서브클래스에 대한 인스턴스들이 그 클래스 자체를 명명하는 질의에 의해 반환될 것임을 의미한다. <emphasis>Explicit</emphasis> 다형성은 클래스 인스턴스들이 그 클래스를 명시적으로 명명하는 질의들에 의해서만 반환될 것임을 의미고 그 클래스를 명명하는 질의들이 이 <literal><class></literal> 선언 내부에서 <literal><subclass></literal> 또는 <literal><joined-subclass></literal>로 매핑된 서브 클래스들의 인스턴스들 만을 반환하게 될 것임을 의미한다. 대부분의 용도로, 디폴트인 <literal>polymorphism=\"implicit\"</literal>가 적절하다.두 개의 다른 클래스들이 동일한 테이블�!
� 매핑될 때 Explicit 다형성이 유용하다(이것은 테이블 컬럼들의 서브셋을 포함하는 \"경량급\" 클래스를 허용한다)."
+#. Tag: para
+#: basic_mapping.xml:375
+#, no-c-format
+msgid ""
+"<emphasis>Implicit</emphasis> polymorphism means that instances of the class "
+"will be returned by a query that names any superclass or implemented "
+"interface or the class and that instances of any subclass of the class will "
+"be returned by a query that names the class itself. <emphasis>Explicit</"
+"emphasis> polymorphism means that class instances will be returned only by "
+"queries that explicitly name that class and that queries that name the class "
+"will return only instances of subclasses mapped inside this <literal><"
+"class></literal> declaration as a <literal><subclass></literal> or "
+"<literal><joined-subclass></literal>. For most purposes the default, "
+"<literal>polymorphism=\"implicit\"</literal>, is appropriate. Explicit "
+"polymorphism is useful when two different classes are mapped to the same "
+"table (this allows a \"lightweight\" class that contains a subset of the "
+"table columns)."
+msgstr ""
+"<emphasis>Implicit</emphasis> 다형성은 클래스의 인스턴스들이 어떤 서브클래스"
+"나 구현된 인터페이스 또는 클래스를 명명하는 질의에 의해 반환될 것임을 의미하"
+"고 그 클래스의 어떤 서브클래스에 대한 인스턴스들이 그 클래스 자체를 명명하는 "
+"질의에 의해 반환될 것임을 의미한다. <emphasis>Explicit</emphasis> 다형성은 클"
+"래스 인스턴스들이 그 클래스를 명시적으로 명명하는 질의들에 의해서만 반환될 것"
+"임을 의미고 그 클래스를 명명하는 질의들이 이 <literal><class></"
+"literal> 선언 내부에서 <literal><subclass></literal> 또는 <literal><"
+"joined-subclass></literal>로 매핑된 서브 클래스들의 인스턴스들 만을 반환하"
+"게 될 것임을 의미한다. 대부분의 용도로, 디폴트인 <literal>polymorphism="
+"\"implicit\"</literal>가 적절하다.두 개의 다른 클래스들이 동일한 테이블로 매"
+"핑될 때 Explicit 다형성이 유용하다(이것은 테이블 컬럼들의 서브셋을 포함하는 "
+"\"경량급\" 클래스를 허용한다)."
-#: index.docbook:387
-msgid "The <literal>persister</literal> attribute lets you customize the persistence strategy used for the class. You may, for example, specify your own subclass of <literal>org.hibernate.persister.EntityPersister</literal> or you might even provide a completely new implementation of the interface <literal>org.hibernate.persister.ClassPersister</literal> that implements persistence via, for example, stored procedure calls, serialization to flat files or LDAP. See <literal>org.hibernate.test.CustomPersister</literal> for a simple example (of \"persistence\" to a <literal>Hashtable</literal>)."
-msgstr "<literal>persister</literal> 속성은 클래스에 사용되는 영속화 방도를 당신이 커스트마이징 할 수 있도록 해준다. 예를 들어 당신은 <literal>org.hibernate.persister.EntityPersister</literal>에 대한 당신 자신의 서브클래스를 지정할 수도 있거나 당신은 심지어 예를 들어 플랫 파일들이나 LDAP로의 직렬화,내장 프로시저 호출들을 통해 영속화를 구현하는 인터페이스 <literal>org.hibernate.persister.ClassPersister</literal>에 대한 완전히 새로운 구현을 제공할 수도 있다. (<literal>Hashtable</literal>로의 \"영속성\"에 관한) 간단한 예제는 <literal>org.hibernate.test.CustomPersister</literal>를 보라."
+#. Tag: para
+#: basic_mapping.xml:387
+#, no-c-format
+msgid ""
+"The <literal>persister</literal> attribute lets you customize the "
+"persistence strategy used for the class. You may, for example, specify your "
+"own subclass of <literal>org.hibernate.persister.EntityPersister</literal> "
+"or you might even provide a completely new implementation of the interface "
+"<literal>org.hibernate.persister.ClassPersister</literal> that implements "
+"persistence via, for example, stored procedure calls, serialization to flat "
+"files or LDAP. See <literal>org.hibernate.test.CustomPersister</literal> for "
+"a simple example (of \"persistence\" to a <literal>Hashtable</literal>)."
+msgstr ""
+"<literal>persister</literal> 속성은 클래스에 사용되는 영속화 방도를 당신이 커"
+"스트마이징 할 수 있도록 해준다. 예를 들어 당신은 <literal>org.hibernate."
+"persister.EntityPersister</literal>에 대한 당신 자신의 서브클래스를 지정할 수"
+"도 있거나 당신은 심지어 예를 들어 플랫 파일들이나 LDAP로의 직렬화,내장 프로시"
+"저 호출들을 통해 영속화를 구현하는 인터페이스 <literal>org.hibernate."
+"persister.ClassPersister</literal>에 대한 완전히 새로운 구현을 제공할 수도 있"
+"다. (<literal>Hashtable</literal>로의 \"영속성\"에 관한) 간단한 예제는 "
+"<literal>org.hibernate.test.CustomPersister</literal>를 보라."
-#: index.docbook:398
-msgid "Note that the <literal>dynamic-update</literal> and <literal>dynamic-insert</literal> settings are not inherited by subclasses and so may also be specified on the <literal><subclass></literal> or <literal><joined-subclass></literal> elements. These settings may increase performance in some cases, but might actually decrease performance in others. Use judiciously."
-msgstr "<literal>dynamic-update</literal> 설정과 <literal>dynamic-insert</literal> 설정은 서브클래스들에 의해 상속되지 않고 따라서 또한 <literal><subclass></literal> 또는 <literal><joined-subclass></literal> 요소들 상에 지정될 수도 있음을 노트하라. 이들 설정들은 몇몇 경우들에서 퍼포먼스를 증가시키지만 다른 경우들에서는 퍼포먼스를 실제로 감소시킬 수도 있다. 적절하게 사용하라."
+#. Tag: para
+#: basic_mapping.xml:398
+#, no-c-format
+msgid ""
+"Note that the <literal>dynamic-update</literal> and <literal>dynamic-insert</"
+"literal> settings are not inherited by subclasses and so may also be "
+"specified on the <literal><subclass></literal> or <literal><joined-"
+"subclass></literal> elements. These settings may increase performance in "
+"some cases, but might actually decrease performance in others. Use "
+"judiciously."
+msgstr ""
+"<literal>dynamic-update</literal> 설정과 <literal>dynamic-insert</literal> 설"
+"정은 서브클래스들에 의해 상속되지 않고 따라서 또한 <literal><subclass>"
+"</literal> 또는 <literal><joined-subclass></literal> 요소들 상에 지정"
+"될 수도 있음을 노트하라. 이들 설정들은 몇몇 경우들에서 퍼포먼스를 증가시키지"
+"만 다른 경우들에서는 퍼포먼스를 실제로 감소시킬 수도 있다. 적절하게 사용하라."
-#: index.docbook:406
-msgid "Use of <literal>select-before-update</literal> will usually decrease performance. It is very useful to prevent a database update trigger being called unnecessarily if you reattach a graph of detached instances to a <literal>Session</literal>."
-msgstr "<literal>select-before-update</literal> 사용은 대개 퍼포먼스를 감소시킬 것이다. 당신이 detached 인스턴스들의 그래프를 <literal>Session</literal>에 다시 첨부할 경우에 그것은 데이터베이스 업데이트 트리거가 불필요하게 호출되는 것을 방지하는데 매우 유용하다."
+#. Tag: para
+#: basic_mapping.xml:406
+#, no-c-format
+msgid ""
+"Use of <literal>select-before-update</literal> will usually decrease "
+"performance. It is very useful to prevent a database update trigger being "
+"called unnecessarily if you reattach a graph of detached instances to a "
+"<literal>Session</literal>."
+msgstr ""
+"<literal>select-before-update</literal> 사용은 대개 퍼포먼스를 감소시킬 것이"
+"다. 당신이 detached 인스턴스들의 그래프를 <literal>Session</literal>에 다시 "
+"첨부할 경우에 그것은 데이터베이스 업데이트 트리거가 불필요하게 호출되는 것을 "
+"방지하는데 매우 유용하다."
-#: index.docbook:412
-msgid "If you enable <literal>dynamic-update</literal>, you will have a choice of optimistic locking strategies:"
-msgstr "<literal>dynamic-update</literal>를 사용가능하게 할 경우, 당신은 다음 optimistic 잠금 전략들을 선택하게 될 것이다:"
+#. Tag: para
+#: basic_mapping.xml:412
+#, no-c-format
+msgid ""
+"If you enable <literal>dynamic-update</literal>, you will have a choice of "
+"optimistic locking strategies:"
+msgstr ""
+"<literal>dynamic-update</literal>를 사용가능하게 할 경우, 당신은 다음 "
+"optimistic 잠금 전략들을 선택하게 될 것이다:"
-#: index.docbook:418
+#. Tag: para
+#: basic_mapping.xml:418
+#, no-c-format
msgid "<literal>version</literal> check the version/timestamp columns"
msgstr "<literal>version</literal>은 version/timestamp 컬럼들을 체크한다"
-#: index.docbook:423
+#. Tag: para
+#: basic_mapping.xml:423
+#, no-c-format
msgid "<literal>all</literal> check all columns"
msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
-#: index.docbook:428
-msgid "<literal>dirty</literal> check the changed columns, allowing some concurrent updates"
-msgstr "<literal>dirty</literal>는 몇몇 동시성 업데이트들을 허용하여, 변경된 컬럼들을 체크한다"
+#. Tag: para
+#: basic_mapping.xml:428
+#, no-c-format
+msgid ""
+"<literal>dirty</literal> check the changed columns, allowing some concurrent "
+"updates"
+msgstr ""
+"<literal>dirty</literal>는 몇몇 동시성 업데이트들을 허용하여, 변경된 컬럼들"
+"을 체크한다"
-#: index.docbook:433
+#. Tag: para
+#: basic_mapping.xml:433
+#, no-c-format
msgid "<literal>none</literal> do not use optimistic locking"
msgstr "<literal>none</literal>은 optimistic 잠금을 사용하지 않는다"
-#: index.docbook:438
-msgid "We <emphasis>very</emphasis> strongly recommend that you use version/timestamp columns for optimistic locking with Hibernate. This is the optimal strategy with respect to performance and is the only strategy that correctly handles modifications made to detached instances (ie. when <literal>Session.merge()</literal> is used)."
-msgstr "우리는 당신이 Hibernate에서 optimistic 잠금을 위해 version/timestamp 컬럼들을 사용할 것을 <emphasis>매우</emphasis> 강력하게 권장한다. 이것은 퍼포먼스에 대해 최적의 방도이고 detached 인스턴스들에 대해 행해진 변경들을 정확하게 핸들링하는 유일한 방도이다(예를 들어 <literal>Session.merge()</literal>가 사용될 때)."
+#. Tag: para
+#: basic_mapping.xml:438
+#, no-c-format
+msgid ""
+"We <emphasis>very</emphasis> strongly recommend that you use version/"
+"timestamp columns for optimistic locking with Hibernate. This is the optimal "
+"strategy with respect to performance and is the only strategy that correctly "
+"handles modifications made to detached instances (ie. when <literal>Session."
+"merge()</literal> is used)."
+msgstr ""
+"우리는 당신이 Hibernate에서 optimistic 잠금을 위해 version/timestamp 컬럼들"
+"을 사용할 것을 <emphasis>매우</emphasis> 강력하게 권장한다. 이것은 퍼포먼스"
+"에 대해 최적의 방도이고 detached 인스턴스들에 대해 행해진 변경들을 정확하게 "
+"핸들링하는 유일한 방도이다(예를 들어 <literal>Session.merge()</literal>가 사"
+"용될 때)."
-#: index.docbook:445
-msgid "There is no difference between a view and a base table for a Hibernate mapping, as expected this is transparent at the database level (note that some DBMS don't support views properly, especially with updates). Sometimes you want to use a view, but can't create one in the database (ie. with a legacy schema). In this case, you can map an immutable and read-only entity to a given SQL subselect expression:"
-msgstr "Hibernate 매핑의 경우에 베이스 테이블과 뷰 사이에 차이점이 존재하지 않는다. 왜냐하면 이것이 데이터베이스 레벨에서는 투명하다고 기대되기 때문이다(몇몇 DBMS는 뷰를 고유하게 지원하지 않고 특히 뷰 업데이트를 지원하지 않음을 노트하라). 때때로 당신이 뷰를 사용하고자 원하지만, (예를 들어 리거시 스키마로) 데이터베이스 속에 뷰를 생성시킬 수 없다. 이 경우에, 당신은 불변의 읽기 전용 엔티티를 주어진 SQL subselect 표현식으로 매핑시킬 수 있다:"
+#. Tag: para
+#: basic_mapping.xml:445
+#, no-c-format
+msgid ""
+"There is no difference between a view and a base table for a Hibernate "
+"mapping, as expected this is transparent at the database level (note that "
+"some DBMS don't support views properly, especially with updates). Sometimes "
+"you want to use a view, but can't create one in the database (ie. with a "
+"legacy schema). In this case, you can map an immutable and read-only entity "
+"to a given SQL subselect expression:"
+msgstr ""
+"Hibernate 매핑의 경우에 베이스 테이블과 뷰 사이에 차이점이 존재하지 않는다. "
+"왜냐하면 이것이 데이터베이스 레벨에서는 투명하다고 기대되기 때문이다(몇몇 "
+"DBMS는 뷰를 고유하게 지원하지 않고 특히 뷰 업데이트를 지원하지 않음을 노트하"
+"라). 때때로 당신이 뷰를 사용하고자 원하지만, (예를 들어 리거시 스키마로) 데이"
+"터베이스 속에 뷰를 생성시킬 수 없다. 이 경우에, 당신은 불변의 읽기 전용 엔티"
+"티를 주어진 SQL subselect 표현식으로 매핑시킬 수 있다:"
-#: index.docbook:453
+#. Tag: programlisting
+#: basic_mapping.xml:453
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Summary\">\n"
- " <subselect>\n"
- " select item.name, max(bid.amount), count(*)\n"
- " from item\n"
- " join bid on bid.item_id = item.id\n"
- " group by item.name\n"
- " </subselect>\n"
- " <synchronize table=\"item\"/>\n"
- " <synchronize table=\"bid\"/>\n"
- " <id name=\"name\"/>\n"
- " ...\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Summary\">\n"
+" <subselect>\n"
+" select item.name, max(bid.amount), count(*)\n"
+" from item\n"
+" join bid on bid.item_id = item.id\n"
+" group by item.name\n"
+" </subselect>\n"
+" <synchronize table=\"item\"/>\n"
+" <synchronize table=\"bid\"/>\n"
+" <id name=\"name\"/>\n"
+" ...\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Summary\">\n"
- " <subselect>\n"
- " select item.name, max(bid.amount), count(*)\n"
- " from item\n"
- " join bid on bid.item_id = item.id\n"
- " group by item.name\n"
- " </subselect>\n"
- " <synchronize table=\"item\"/>\n"
- " <synchronize table=\"bid\"/>\n"
- " <id name=\"name\"/>\n"
- " ...\n"
- "</class>]]>"
-#: index.docbook:455
-msgid "Declare the tables to synchronize this entity with, ensuring that auto-flush happens correctly, and that queries against the derived entity do not return stale data. The <literal><subselect></literal> is available as both as an attribute and a nested mapping element."
-msgstr "auto-flush가 정확하게 발생하도록 하고, 그리고 파생된 엔티티에 대한 질의들이 쓸효성 없는 데이터를 반환하지 않도록 함으로써, 이 엔티티와 동기화 될 테이블을 선언하라. <literal><subselect></literal>는 속성과 내포된 매핑 요소 양자로서 이용 가능하다."
+#. Tag: para
+#: basic_mapping.xml:455
+#, no-c-format
+msgid ""
+"Declare the tables to synchronize this entity with, ensuring that auto-flush "
+"happens correctly, and that queries against the derived entity do not return "
+"stale data. The <literal><subselect></literal> is available as both as "
+"an attribute and a nested mapping element."
+msgstr ""
+"auto-flush가 정확하게 발생하도록 하고, 그리고 파생된 엔티티에 대한 질의들이 "
+"쓸효성 없는 데이터를 반환하지 않도록 함으로써, 이 엔티티와 동기화 될 테이블"
+"을 선언하라. <literal><subselect></literal>는 속성과 내포된 매핑 요소 "
+"양자로서 이용 가능하다."
-#: index.docbook:465
+#. Tag: title
+#: basic_mapping.xml:465
+#, no-c-format
msgid "<title>id</title>"
-msgstr "<title>id</title>"
+msgstr ""
-#: index.docbook:467
-msgid "Mapped classes <emphasis>must</emphasis> declare the primary key column of the database table. Most classes will also have a JavaBeans-style property holding the unique identifier of an instance. The <literal><id></literal> element defines the mapping from that property to the primary key column."
-msgstr "매핑된 클래스들은 데이터베이스 테이블의 프라이머리 키 컬럼을 선언<emphasis>해야 한다</emphasis>. 대부분의 클래스들은 또한 인스턴스의 유일 식별자를 소유하는 자바빈즈-스타일 프로퍼티를 가질 것이다. <literal><id></literal> 요소는 그 프로퍼티로부터 프라이머리 키 컬럼으로의 매핑을 정의한다."
+#. Tag: para
+#: basic_mapping.xml:467
+#, no-c-format
+msgid ""
+"Mapped classes <emphasis>must</emphasis> declare the primary key column of "
+"the database table. Most classes will also have a JavaBeans-style property "
+"holding the unique identifier of an instance. The <literal><id></"
+"literal> element defines the mapping from that property to the primary key "
+"column."
+msgstr ""
+"매핑된 클래스들은 데이터베이스 테이블의 프라이머리 키 컬럼을 선언<emphasis>해"
+"야 한다</emphasis>. 대부분의 클래스들은 또한 인스턴스의 유일 식별자를 소유하"
+"는 자바빈즈-스타일 프로퍼티를 가질 것이다. <literal><id></literal> 요소"
+"는 그 프로퍼티로부터 프라이머리 키 컬럼으로의 매핑을 정의한다."
-#: index.docbook:482
+#. Tag: programlisting
+#: basic_mapping.xml:482
+#, no-c-format
msgid ""
- "<![CDATA[<id\n"
- " name=\"propertyName\"\n"
- " type=\"typename\"\n"
- " column=\"column_name\"\n"
- " unsaved-value=\"null|any|none|undefined|id_value\"\n"
- " access=\"field|property|ClassName\">\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- "\n"
- " <generator class=\"generatorClass\"/>\n"
- "</id>]]>"
+"<![CDATA[<id\n"
+" name=\"propertyName\"\n"
+" type=\"typename\"\n"
+" column=\"column_name\"\n"
+" unsaved-value=\"null|any|none|undefined|id_value\"\n"
+" access=\"field|property|ClassName\">\n"
+" node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
+"\n"
+" <generator class=\"generatorClass\"/>\n"
+"</id>]]>"
msgstr ""
- "<![CDATA[<id\n"
- " name=\"propertyName\"\n"
- " type=\"typename\"\n"
- " column=\"column_name\"\n"
- " unsaved-value=\"null|any|none|undefined|id_value\"\n"
- " access=\"field|property|ClassName\">\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- "\n"
- " <generator class=\"generatorClass\"/>\n"
- "</id>]]>"
-#: index.docbook:485
-msgid "<literal>name</literal> (optional): The name of the identifier property."
+#. Tag: para
+#: basic_mapping.xml:485
+#, no-c-format
+msgid ""
+"<literal>name</literal> (optional): The name of the identifier property."
msgstr "<literal>name</literal> (옵션): 식별자 프로퍼티의 이름."
-#: index.docbook:490
-msgid "<literal>type</literal> (optional): A name that indicates the Hibernate type."
+#. Tag: para
+#: basic_mapping.xml:490
+#, no-c-format
+msgid ""
+"<literal>type</literal> (optional): A name that indicates the Hibernate type."
msgstr "<literal>type</literal> (옵션): Hibernate 타입을 나타내는 이름."
-#: index.docbook:495
-msgid "<literal>column</literal> (optional - defaults to the property name): The name of the primary key column."
-msgstr "<literal>column</literal> (옵션 - 디폴트는 프로퍼티 이름): 프라이머리 키 컬럼의 이름."
+#. Tag: para
+#: basic_mapping.xml:495
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): The "
+"name of the primary key column."
+msgstr ""
+"<literal>column</literal> (옵션 - 디폴트는 프로퍼티 이름): 프라이머리 키 컬럼"
+"의 이름."
-#: index.docbook:501
-msgid "<literal>unsaved-value</literal> (optional - defaults to a \"sensible\" value): An identifier property value that indicates that an instance is newly instantiated (unsaved), distinguishing it from detached instances that were saved or loaded in a previous session."
-msgstr "<literal>unsaved-value</literal> (옵션 - 디폴트는 \"sensible\" 값): 이전 세션에서 저장되었거나 로드되었던 detached(분리된) 인스턴스들로부터 그것을 구분지우도록, 인스턴스가 새로이 초기화되어 있음(저장되어 있지 않음)을 나타내는 식별자 프로퍼티 값."
+#. Tag: para
+#: basic_mapping.xml:501
+#, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to a \"sensible\" "
+"value): An identifier property value that indicates that an instance is "
+"newly instantiated (unsaved), distinguishing it from detached instances that "
+"were saved or loaded in a previous session."
+msgstr ""
+"<literal>unsaved-value</literal> (옵션 - 디폴트는 \"sensible\" 값): 이전 세션"
+"에서 저장되었거나 로드되었던 detached(분리된) 인스턴스들로부터 그것을 구분지"
+"우도록, 인스턴스가 새로이 초기화되어 있음(저장되어 있지 않음)을 나타내는 식별"
+"자 프로퍼티 값."
-#: index.docbook:509, index.docbook:1017, index.docbook:1156, index.docbook:1238, index.docbook:1345, index.docbook:1534, index.docbook:1708, index.docbook:1878, index.docbook:2457
-msgid "<literal>access</literal> (optional - defaults to <literal>property</literal>): The strategy Hibernate should use for accessing the property value."
-msgstr "<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): Hibernate가 프로퍼티 값에 액세스하는데 사용할 방도."
+#. Tag: para
+#: basic_mapping.xml:509 basic_mapping.xml:1017 basic_mapping.xml:1156
+#: basic_mapping.xml:1238 basic_mapping.xml:1345 basic_mapping.xml:1534
+#: basic_mapping.xml:1708 basic_mapping.xml:1878 basic_mapping.xml:2457
+#, fuzzy, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): The strategy Hibernate should use for accessing the property "
+"value."
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 액세스하는데 사용할 방도.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 액세스하는데 사용할 방도.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근 하는데 사용할 방도.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 액세스하는데 사용할 방도.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 프로퍼티 값에 접근하는데 사용할 방도."
-#: index.docbook:517
-msgid "If the <literal>name</literal> attribute is missing, it is assumed that the class has no identifier property."
-msgstr "<literal>name</literal> 속성이 누락되면, 클래스는 식별자 프로퍼티를 갖지 않는다고 가정된다."
+#. Tag: para
+#: basic_mapping.xml:517
+#, no-c-format
+msgid ""
+"If the <literal>name</literal> attribute is missing, it is assumed that the "
+"class has no identifier property."
+msgstr ""
+"<literal>name</literal> 속성이 누락되면, 클래스는 식별자 프로퍼티를 갖지 않는"
+"다고 가정된다."
-#: index.docbook:522
-msgid "The <literal>unsaved-value</literal> attribute is almost never needed in Hibernate3."
-msgstr "<literal>unsaved-value</literal> 속성은 Hibernate3에서는 거의 필요하지 않다."
+#. Tag: para
+#: basic_mapping.xml:522
+#, no-c-format
+msgid ""
+"The <literal>unsaved-value</literal> attribute is almost never needed in "
+"Hibernate3."
+msgstr ""
+"<literal>unsaved-value</literal> 속성은 Hibernate3에서는 거의 필요하지 않다."
-#: index.docbook:526
-msgid "There is an alternative <literal><composite-id></literal> declaration to allow access to legacy data with composite keys. We strongly discourage its use for anything else."
-msgstr "composite 키들로서 리거시 데이터에 액세스하는 것을 허용해주는 대체적인 <literal><composite-id></literal> 선언이 존재한다. 우리는 그 밖의 어떤것에 대한 그것의 사용에 대해 강력하게 반대한다."
+#. Tag: para
+#: basic_mapping.xml:526
+#, no-c-format
+msgid ""
+"There is an alternative <literal><composite-id></literal> declaration "
+"to allow access to legacy data with composite keys. We strongly discourage "
+"its use for anything else."
+msgstr ""
+"composite 키들로서 리거시 데이터에 액세스하는 것을 허용해주는 대체적인 "
+"<literal><composite-id></literal> 선언이 존재한다. 우리는 그 밖의 어떤"
+"것에 대한 그것의 사용에 대해 강력하게 반대한다."
-#: index.docbook:532
+#. Tag: title
+#: basic_mapping.xml:532
+#, no-c-format
msgid "Generator"
msgstr "Generator"
-#: index.docbook:534
-msgid "The optional <literal><generator></literal> child element names a Java class used to generate unique identifiers for instances of the persistent class. If any parameters are required to configure or initialize the generator instance, they are passed using the <literal><param></literal> element."
-msgstr "선택적인 <literal><generator></literal> 자식 요소는 영속 클래스의 인스턴스들에 대한 유일 식별자들을 생성시키는데 사용되는 자바 클래스를 명명한다. 만일 임의의 파라미터들이 생성기 인스턴스를 구성하거나 초기화 시키는데 필요할 경우, 그것들은 <literal><param></literal> 요소 를 사용하여 전달된다."
+#. Tag: para
+#: basic_mapping.xml:534
+#, no-c-format
+msgid ""
+"The optional <literal><generator></literal> child element names a Java "
+"class used to generate unique identifiers for instances of the persistent "
+"class. If any parameters are required to configure or initialize the "
+"generator instance, they are passed using the <literal><param></"
+"literal> element."
+msgstr ""
+"선택적인 <literal><generator></literal> 자식 요소는 영속 클래스의 인스"
+"턴스들에 대한 유일 식별자들을 생성시키는데 사용되는 자바 클래스를 명명한다. "
+"만일 임의의 파라미터들이 생성기 인스턴스를 구성하거나 초기화 시키는데 필요할 "
+"경우, 그것들은 <literal><param></literal> 요소 를 사용하여 전달된다."
-#: index.docbook:541
+#. Tag: programlisting
+#: basic_mapping.xml:541
+#, no-c-format
msgid ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
- " <generator class=\"org.hibernate.id.TableHiLoGenerator\">\n"
- " <param name=\"table\">uid_table</param>\n"
- " <param name=\"column\">next_hi_value_column</param>\n"
- " </generator>\n"
- "</id>]]>"
+"<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+" <generator class=\"org.hibernate.id.TableHiLoGenerator\">\n"
+" <param name=\"table\">uid_table</param>\n"
+" <param name=\"column\">next_hi_value_column</param>\n"
+" </generator>\n"
+"</id>]]>"
msgstr ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
- " <generator class=\"org.hibernate.id.TableHiLoGenerator\">\n"
- " <param name=\"table\">uid_table</param>\n"
- " <param name=\"column\">next_hi_value_column</param>\n"
- " </generator>\n"
- "</id>]]>"
-#: index.docbook:543
-msgid "All generators implement the interface <literal>org.hibernate.id.IdentifierGenerator</literal>. This is a very simple interface; some applications may choose to provide their own specialized implementations. However, Hibernate provides a range of built-in implementations. There are shortcut names for the built-in generators:"
-msgstr "모든 생성기들은 <literal>org.hibernate.id.IdentifierGenerator</literal> 인터페이스를 구현한다. 이것은 매우 간단한 인터페이스이다; 몇몇 어플리케이션들은 그것들 자신의 특화된 구현들을 제공하도록 선택할 수 있다. 하지만 Hibernate는 미리 빈드된 구현들의 영역들을 제공한다. 빌드-인 생성기(generator)들에 대한 단축 이름들이 존재한다:"
+#. Tag: para
+#: basic_mapping.xml:543
+#, fuzzy, no-c-format
+msgid ""
+"All generators implement the interface <literal>org.hibernate.id."
+"IdentifierGenerator</literal>. This is a very simple interface; some "
+"applications may choose to provide their own specialized implementations. "
+"However, Hibernate provides a range of built-in implementations. There are "
+"shortcut names for the built-in generators:"
+msgstr ""
+"모든 생성기들은 <literal>org.hibernate.id.IdentifierGenerator</literal> 인터"
+"페이스를 구현한다. 이것은 매우 간단한 인터페이스이다; 몇몇 어플리케이션들은 "
+"그것들 자신의 특화된 구현들을 제공하도록 선택할 수 있다. 하지만 Hibernate는 "
+"미리 빈드된 구현들의 영역들을 제공한다. 빌드-인 생성기(generator)들에 대한 단"
+"축 이름들이 존재한다: <placeholder-1/>"
-#: index.docbook:551
+#. Tag: literal
+#: basic_mapping.xml:551
+#, no-c-format
msgid "increment"
msgstr "increment"
-#: index.docbook:553
-msgid "generates identifiers of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal> that are unique only when no other process is inserting data into the same table. <emphasis>Do not use in a cluster.</emphasis>"
-msgstr "동일한 테이블 속으로 데이터를 입력하는 다른 프로세스가 없을 때에만 유일한 <literal>long</literal>, <literal>short</literal> 또는 <literal>int</literal> 타입의 식별자들을 생성시킨다. <emphasis>클러스터 내에서는 사용하지 말라.</emphasis>"
+#. Tag: para
+#: basic_mapping.xml:553
+#, no-c-format
+msgid ""
+"generates identifiers of type <literal>long</literal>, <literal>short</"
+"literal> or <literal>int</literal> that are unique only when no other "
+"process is inserting data into the same table. <emphasis>Do not use in a "
+"cluster.</emphasis>"
+msgstr ""
+"동일한 테이블 속으로 데이터를 입력하는 다른 프로세스가 없을 때에만 유일한 "
+"<literal>long</literal>, <literal>short</literal> 또는 <literal>int</"
+"literal> 타입의 식별자들을 생성시킨다. <emphasis>클러스터 내에서는 사용하지 "
+"말라.</emphasis>"
-#: index.docbook:562
+#. Tag: literal
+#: basic_mapping.xml:562
+#, no-c-format
msgid "identity"
msgstr "identity"
-#: index.docbook:564
-msgid "supports identity columns in DB2, MySQL, MS SQL Server, Sybase and HypersonicSQL. The returned identifier is of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal>."
-msgstr "DB2, MySQL, MS SQL Server, Sybase, HypersonicSQL에서 식별 컬럼들을 지원한다. 반환되는 식별자는 <literal>long</literal>, <literal>short</literal> 또는 <literal>int</literal> 타입이다."
+#. Tag: para
+#: basic_mapping.xml:564
+#, no-c-format
+msgid ""
+"supports identity columns in DB2, MySQL, MS SQL Server, Sybase and "
+"HypersonicSQL. The returned identifier is of type <literal>long</literal>, "
+"<literal>short</literal> or <literal>int</literal>."
+msgstr ""
+"DB2, MySQL, MS SQL Server, Sybase, HypersonicSQL에서 식별 컬럼들을 지원한다. "
+"반환되는 식별자는 <literal>long</literal>, <literal>short</literal> 또는 "
+"<literal>int</literal> 타입이다."
-#: index.docbook:572
+#. Tag: literal
+#: basic_mapping.xml:572
+#, no-c-format
msgid "sequence"
msgstr "sequence"
-#: index.docbook:574
-msgid "uses a sequence in DB2, PostgreSQL, Oracle, SAP DB, McKoi or a generator in Interbase. The returned identifier is of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal>"
-msgstr "DB2, PostgreSQL, Oracle, SAP DB, McKoi에서 시퀀스를 사용하거나 Interbase에서 생성기(generator)를 사용한다. 반환되는 식별자는 <literal>long</literal>, <literal>short</literal> 또는 <literal>int</literal> 타입이다."
+#. Tag: para
+#: basic_mapping.xml:574
+#, no-c-format
+msgid ""
+"uses a sequence in DB2, PostgreSQL, Oracle, SAP DB, McKoi or a generator in "
+"Interbase. The returned identifier is of type <literal>long</literal>, "
+"<literal>short</literal> or <literal>int</literal>"
+msgstr ""
+"DB2, PostgreSQL, Oracle, SAP DB, McKoi에서 시퀀스를 사용하거나 Interbase에서 "
+"생성기(generator)를 사용한다. 반환되는 식별자는 <literal>long</literal>, "
+"<literal>short</literal> 또는 <literal>int</literal> 타입이다."
-#: index.docbook:582
+#. Tag: literal
+#: basic_mapping.xml:582
+#, no-c-format
msgid "hilo"
msgstr "hilo"
-#: index.docbook:584
-msgid "uses a hi/lo algorithm to efficiently generate identifiers of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal>, given a table and column (by default <literal>hibernate_unique_key</literal> and <literal>next_hi</literal> respectively) as a source of hi values. The hi/lo algorithm generates identifiers that are unique only for a particular database."
-msgstr "테이블과 컬럼(디폴트로 각각 <literal>hibernate_unique_key</literal>와 <literal>next_hi</literal>)이 hi 값들의 소스로서 주어지면, <literal>long</literal>, <literal>short</literal> 또는 <literal>int</literal> 타입의 식별자들을 효과적으로 생성시키는데 hi/lo 알고리즘을 사용한다. hi/lo 알고리즘은 특정 데이터베이스에 대해서만 유일한 식별자들을 생성시킨다."
+#. Tag: para
+#: basic_mapping.xml:584
+#, no-c-format
+msgid ""
+"uses a hi/lo algorithm to efficiently generate identifiers of type "
+"<literal>long</literal>, <literal>short</literal> or <literal>int</literal>, "
+"given a table and column (by default <literal>hibernate_unique_key</literal> "
+"and <literal>next_hi</literal> respectively) as a source of hi values. The "
+"hi/lo algorithm generates identifiers that are unique only for a particular "
+"database."
+msgstr ""
+"테이블과 컬럼(디폴트로 각각 <literal>hibernate_unique_key</literal>와 "
+"<literal>next_hi</literal>)이 hi 값들의 소스로서 주어지면, <literal>long</"
+"literal>, <literal>short</literal> 또는 <literal>int</literal> 타입의 식별자"
+"들을 효과적으로 생성시키는데 hi/lo 알고리즘을 사용한다. hi/lo 알고리즘은 특"
+"정 데이터베이스에 대해서만 유일한 식별자들을 생성시킨다."
-#: index.docbook:594
+#. Tag: literal
+#: basic_mapping.xml:594
+#, no-c-format
msgid "seqhilo"
msgstr "seqhilo"
-#: index.docbook:596
-msgid "uses a hi/lo algorithm to efficiently generate identifiers of type <literal>long</literal>, <literal>short</literal> or <literal>int</literal>, given a named database sequence."
-msgstr "명명된 데이터베이스 시퀀스가 주어지면, <literal>long</literal>, <literal>short</literal> 또는 <literal>int</literal> 타입의 식별자들을 효과적으로 생성시키는데 hi/lo 알고리즘을 사용한다."
+#. Tag: para
+#: basic_mapping.xml:596
+#, no-c-format
+msgid ""
+"uses a hi/lo algorithm to efficiently generate identifiers of type "
+"<literal>long</literal>, <literal>short</literal> or <literal>int</literal>, "
+"given a named database sequence."
+msgstr ""
+"명명된 데이터베이스 시퀀스가 주어지면, <literal>long</literal>, "
+"<literal>short</literal> 또는 <literal>int</literal> 타입의 식별자들을 효과적"
+"으로 생성시키는데 hi/lo 알고리즘을 사용한다."
-#: index.docbook:604
+#. Tag: literal
+#: basic_mapping.xml:604
+#, no-c-format
msgid "uuid"
msgstr "uuid"
-#: index.docbook:606
-msgid "uses a 128-bit UUID algorithm to generate identifiers of type string, unique within a network (the IP address is used). The UUID is encoded as a string of hexadecimal digits of length 32."
-msgstr "네트웍 내에서 유일한(IP 주소가 사용된다) string 타입의 식별자들을 생성시키기 위해 128 비트 UUID 알고리즘을 사용한다. UUID는 길이가 32인 16진수들의 문자열로서 인코딩 된다."
+#. Tag: para
+#: basic_mapping.xml:606
+#, no-c-format
+msgid ""
+"uses a 128-bit UUID algorithm to generate identifiers of type string, unique "
+"within a network (the IP address is used). The UUID is encoded as a string "
+"of hexadecimal digits of length 32."
+msgstr ""
+"네트웍 내에서 유일한(IP 주소가 사용된다) string 타입의 식별자들을 생성시키기 "
+"위해 128 비트 UUID 알고리즘을 사용한다. UUID는 길이가 32인 16진수들의 문자열"
+"로서 인코딩 된다."
-#: index.docbook:614
+#. Tag: literal
+#: basic_mapping.xml:614
+#, no-c-format
msgid "guid"
msgstr "guid"
-#: index.docbook:616
+#. Tag: para
+#: basic_mapping.xml:616
+#, no-c-format
msgid "uses a database-generated GUID string on MS SQL Server and MySQL."
msgstr "MS SQL Server와 MySQL 상에서 데이터베이스 생성 GUID 문자열을 사용한다."
-#: index.docbook:622
+#. Tag: literal
+#: basic_mapping.xml:622
+#, no-c-format
msgid "native"
msgstr "native"
-#: index.docbook:624
-msgid "picks <literal>identity</literal>, <literal>sequence</literal> or <literal>hilo</literal> depending upon the capabilities of the underlying database."
-msgstr "기본 데이터베이스의 가용성들에 의존하여 <literal>identity</literal>, <literal>sequence</literal> 또는 <literal>hilo</literal>를 찾아낸다."
+#. Tag: para
+#: basic_mapping.xml:624
+#, no-c-format
+msgid ""
+"picks <literal>identity</literal>, <literal>sequence</literal> or "
+"<literal>hilo</literal> depending upon the capabilities of the underlying "
+"database."
+msgstr ""
+"기본 데이터베이스의 가용성들에 의존하여 <literal>identity</literal>, "
+"<literal>sequence</literal> 또는 <literal>hilo</literal>를 찾아낸다."
-#: index.docbook:632
+#. Tag: literal
+#: basic_mapping.xml:632
+#, no-c-format
msgid "assigned"
msgstr "assigned"
-#: index.docbook:634
-msgid "lets the application to assign an identifier to the object before <literal>save()</literal> is called. This is the default strategy if no <literal><generator></literal> element is specified."
-msgstr "어플리케이션으로 하여금 <literal>save()</literal>가 호출되기 전에 식별자를 객체에 할당하도록 한다. <literal><generator></literal> 요소가 지정되지 않을 경우 이것이 디폴트 방도이다."
+#. Tag: para
+#: basic_mapping.xml:634
+#, no-c-format
+msgid ""
+"lets the application to assign an identifier to the object before "
+"<literal>save()</literal> is called. This is the default strategy if no "
+"<literal><generator></literal> element is specified."
+msgstr ""
+"어플리케이션으로 하여금 <literal>save()</literal>가 호출되기 전에 식별자를 객"
+"체에 할당하도록 한다. <literal><generator></literal> 요소가 지정되지 않"
+"을 경우 이것이 디폴트 방도이다."
-#: index.docbook:642
+#. Tag: literal
+#: basic_mapping.xml:642
+#, no-c-format
msgid "select"
msgstr "select"
-#: index.docbook:644
-msgid "retrieves a primary key assigned by a database trigger by selecting the row by some unique key and retrieving the primary key value."
-msgstr "어떤 유일 키에 의해 행을 select하고 프라이머리 키 값을 검색함으로써 데이터베이스 트리거에 의해 할당된 프라이머리 키를 검색한다."
+#. Tag: para
+#: basic_mapping.xml:644
+#, no-c-format
+msgid ""
+"retrieves a primary key assigned by a database trigger by selecting the row "
+"by some unique key and retrieving the primary key value."
+msgstr ""
+"어떤 유일 키에 의해 행을 select하고 프라이머리 키 값을 검색함으로써 데이터베"
+"이스 트리거에 의해 할당된 프라이머리 키를 검색한다."
-#: index.docbook:651
+#. Tag: literal
+#: basic_mapping.xml:651
+#, no-c-format
msgid "foreign"
msgstr "foreign"
-#: index.docbook:653
-msgid "uses the identifier of another associated object. Usually used in conjunction with a <literal><one-to-one></literal> primary key association."
-msgstr "또 다른 연관된 객체의 식별자를 사용한다. 대개 <literal><one-to-one></literal> 프라이머리 키 연관관계와 함께 사용된다."
+#. Tag: para
+#: basic_mapping.xml:653
+#, no-c-format
+msgid ""
+"uses the identifier of another associated object. Usually used in "
+"conjunction with a <literal><one-to-one></literal> primary key "
+"association."
+msgstr ""
+"또 다른 연관된 객체의 식별자를 사용한다. 대개 <literal><one-to-one></"
+"literal> 프라이머리 키 연관관계와 함께 사용된다."
-#: index.docbook:660
+#. Tag: literal
+#: basic_mapping.xml:660
+#, no-c-format
msgid "sequence-identity"
msgstr "sequence-identity"
-#: index.docbook:662
-msgid "a specialized sequence generation strategy which utilizes a database sequence for the actual value generation, but combines this with JDBC3 getGeneratedKeys to actually return the generated identifier value as part of the insert statement execution. This strategy is only known to be supported on Oracle 10g drivers targetted for JDK 1.4. Note comments on these insert statements are disabled due to a bug in the Oracle drivers."
-msgstr "실제 값 생성을 위해 데이터베이스 시퀀스를 활용하지만, 생성된 식별자 값을 insert 문장 실행의 부분으로서 실제로 반환시키기 위해 이것을 JDBC3 getGeneratedKeys와 결합시킨 특화된 시퀀스 생성 방도. 이 방도는 JDK 1.4에 대상화된 Oracle 10g 드라이버들 상에서만 지원되는 거승로 알려져 있다. 이들 insert 문장들에 대한 주석들은 Oracle 드라이버들 내에 있는 버그 때문에 사용불가능하게 되어 있음을 노트하라."
+#. Tag: para
+#: basic_mapping.xml:662
+#, no-c-format
+msgid ""
+"a specialized sequence generation strategy which utilizes a database "
+"sequence for the actual value generation, but combines this with JDBC3 "
+"getGeneratedKeys to actually return the generated identifier value as part "
+"of the insert statement execution. This strategy is only known to be "
+"supported on Oracle 10g drivers targetted for JDK 1.4. Note comments on "
+"these insert statements are disabled due to a bug in the Oracle drivers."
+msgstr ""
+"실제 값 생성을 위해 데이터베이스 시퀀스를 활용하지만, 생성된 식별자 값을 "
+"insert 문장 실행의 부분으로서 실제로 반환시키기 위해 이것을 JDBC3 "
+"getGeneratedKeys와 결합시킨 특화된 시퀀스 생성 방도. 이 방도는 JDK 1.4에 대상"
+"화된 Oracle 10g 드라이버들 상에서만 지원되는 거승로 알려져 있다. 이들 insert "
+"문장들에 대한 주석들은 Oracle 드라이버들 내에 있는 버그 때문에 사용불가능하"
+"게 되어 있음을 노트하라."
-#: index.docbook:679
+#. Tag: title
+#: basic_mapping.xml:679
+#, no-c-format
msgid "Hi/lo algorithm"
msgstr "Hi/lo algorithm"
-#: index.docbook:680
-msgid "The <literal>hilo</literal> and <literal>seqhilo</literal> generators provide two alternate implementations of the hi/lo algorithm, a favorite approach to identifier generation. The first implementation requires a \"special\" database table to hold the next available \"hi\" value. The second uses an Oracle-style sequence (where supported)."
-msgstr "<literal>hilo</literal>와 <literal>seqhilo</literal> 생성기들은 식별자 생성에 대한 마음에 드는 접근법인, hi/lo 알고리즘에 대한 두 개의 대체 구현들은 제공한다. 첫 번째 구현은 다음에 이용 가능한 \"hi\" 값을 수용하기 위한 \"특별한\" 데이터베이스 테이블을 필요로 한다. 두 번째는 (지원되는) Oracle 스타일의 시퀀스를 사용한다."
+#. Tag: para
+#: basic_mapping.xml:680
+#, no-c-format
+msgid ""
+"The <literal>hilo</literal> and <literal>seqhilo</literal> generators "
+"provide two alternate implementations of the hi/lo algorithm, a favorite "
+"approach to identifier generation. The first implementation requires a "
+"\"special\" database table to hold the next available \"hi\" value. The "
+"second uses an Oracle-style sequence (where supported)."
+msgstr ""
+"<literal>hilo</literal>와 <literal>seqhilo</literal> 생성기들은 식별자 생성"
+"에 대한 마음에 드는 접근법인, hi/lo 알고리즘에 대한 두 개의 대체 구현들은 제"
+"공한다. 첫 번째 구현은 다음에 이용 가능한 \"hi\" 값을 수용하기 위한 \"특별한"
+"\" 데이터베이스 테이블을 필요로 한다. 두 번째는 (지원되는) Oracle 스타일의 시"
+"퀀스를 사용한다."
-#: index.docbook:687
+#. Tag: programlisting
+#: basic_mapping.xml:687
+#, no-c-format
msgid ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
- " <generator class=\"hilo\">\n"
- " <param name=\"table\">hi_value</param>\n"
- " <param name=\"column\">next_value</param>\n"
- " <param name=\"max_lo\">100</param>\n"
- " </generator>\n"
- "</id>]]>"
+"<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+" <generator class=\"hilo\">\n"
+" <param name=\"table\">hi_value</param>\n"
+" <param name=\"column\">next_value</param>\n"
+" <param name=\"max_lo\">100</param>\n"
+" </generator>\n"
+"</id>]]>"
msgstr ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
- " <generator class=\"hilo\">\n"
- " <param name=\"table\">hi_value</param>\n"
- " <param name=\"column\">next_value</param>\n"
- " <param name=\"max_lo\">100</param>\n"
- " </generator>\n"
- "</id>]]>"
-#: index.docbook:689
+#. Tag: programlisting
+#: basic_mapping.xml:689
+#, no-c-format
msgid ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
- " <generator class=\"seqhilo\">\n"
- " <param name=\"sequence\">hi_value</param>\n"
- " <param name=\"max_lo\">100</param>\n"
- " </generator>\n"
- "</id>]]>"
+"<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
+" <generator class=\"seqhilo\">\n"
+" <param name=\"sequence\">hi_value</param>\n"
+" <param name=\"max_lo\">100</param>\n"
+" </generator>\n"
+"</id>]]>"
msgstr ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"cat_id\">\n"
- " <generator class=\"seqhilo\">\n"
- " <param name=\"sequence\">hi_value</param>\n"
- " <param name=\"max_lo\">100</param>\n"
- " </generator>\n"
- "</id>]]>"
-#: index.docbook:691
-msgid "Unfortunately, you can't use <literal>hilo</literal> when supplying your own <literal>Connection</literal> to Hibernate. When Hibernate is using an application server datasource to obtain connections enlisted with JTA, you must properly configure the <literal>hibernate.transaction.manager_lookup_class</literal>."
-msgstr "불행히도 당신은 Hibernate에 당신 자신의 <literal>Connection</literal>을 제공할 때 <literal>hilo</literal>를 사용할 수 없다. Hibernate가 JTA의 도움을 받는 커넥션들을 얻기 위해 어플리케이션 서버 데이터소스를 사용할 때 당신은 <literal>hibernate.transaction.manager_lookup_class</literal>를 적절하게 구성해야 한다."
+#. Tag: para
+#: basic_mapping.xml:691
+#, no-c-format
+msgid ""
+"Unfortunately, you can't use <literal>hilo</literal> when supplying your own "
+"<literal>Connection</literal> to Hibernate. When Hibernate is using an "
+"application server datasource to obtain connections enlisted with JTA, you "
+"must properly configure the <literal>hibernate.transaction."
+"manager_lookup_class</literal>."
+msgstr ""
+"불행히도 당신은 Hibernate에 당신 자신의 <literal>Connection</literal>을 제공"
+"할 때 <literal>hilo</literal>를 사용할 수 없다. Hibernate가 JTA의 도움을 받"
+"는 커넥션들을 얻기 위해 어플리케이션 서버 데이터소스를 사용할 때 당신은 "
+"<literal>hibernate.transaction.manager_lookup_class</literal>를 적절하게 구성"
+"해야 한다."
-#: index.docbook:700
+#. Tag: title
+#: basic_mapping.xml:700
+#, no-c-format
msgid "UUID algorithm"
msgstr "UUID 알고리즘"
-#: index.docbook:701
-msgid "The UUID contains: IP address, startup time of the JVM (accurate to a quarter second), system time and a counter value (unique within the JVM). It's not possible to obtain a MAC address or memory address from Java code, so this is the best we can do without using JNI."
-msgstr "UUID 는 다음을 포함한다: IP 주소, JVM의 시작 시간(정확히 1/4 초), 시스템 시간과 (JVM 내에서 유일한) counter 값. Java 코드로부터 MAC 주소 또는 메모리 주소를 얻는 것은 불가능하여서, 이것은 우리가 JNI를 사용하지 않고서 행할 수 있는 최상의 것이다."
+#. Tag: para
+#: basic_mapping.xml:701
+#, no-c-format
+msgid ""
+"The UUID contains: IP address, startup time of the JVM (accurate to a "
+"quarter second), system time and a counter value (unique within the JVM). "
+"It's not possible to obtain a MAC address or memory address from Java code, "
+"so this is the best we can do without using JNI."
+msgstr ""
+"UUID 는 다음을 포함한다: IP 주소, JVM의 시작 시간(정확히 1/4 초), 시스템 시간"
+"과 (JVM 내에서 유일한) counter 값. Java 코드로부터 MAC 주소 또는 메모리 주소"
+"를 얻는 것은 불가능하여서, 이것은 우리가 JNI를 사용하지 않고서 행할 수 있는 "
+"최상의 것이다."
-#: index.docbook:710
+#. Tag: title
+#: basic_mapping.xml:710
+#, no-c-format
msgid "Identity columns and sequences"
msgstr "식별 컬럼들과 시퀀스들"
-#: index.docbook:711
-msgid "For databases which support identity columns (DB2, MySQL, Sybase, MS SQL), you may use <literal>identity</literal> key generation. For databases that support sequences (DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB) you may use <literal>sequence</literal> style key generation. Both these strategies require two SQL queries to insert a new object."
-msgstr "식별 컬럼들을 지원하는 데이터베이스들(DB2, MySQL, Sybase, MS SQL)의 경우, 당신은 <literal>identity</literal> 키 생성을 사용할 수 있다. 시퀀스들을 지원하는 데이터베이스들(DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB)의 경우, 당신은 <literal>sequence</literal> 스타일 키 생성을 사용할 수도 있다. 이들 방도들 모두 새로운 객체를 insert하기 위해 두 개의 SQL 질의들을 필요로 한다."
+#. Tag: para
+#: basic_mapping.xml:711
+#, no-c-format
+msgid ""
+"For databases which support identity columns (DB2, MySQL, Sybase, MS SQL), "
+"you may use <literal>identity</literal> key generation. For databases that "
+"support sequences (DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB) you "
+"may use <literal>sequence</literal> style key generation. Both these "
+"strategies require two SQL queries to insert a new object."
+msgstr ""
+"식별 컬럼들을 지원하는 데이터베이스들(DB2, MySQL, Sybase, MS SQL)의 경우, 당"
+"신은 <literal>identity</literal> 키 생성을 사용할 수 있다. 시퀀스들을 지원하"
+"는 데이터베이스들(DB2, Oracle, PostgreSQL, Interbase, McKoi, SAP DB)의 경우, "
+"당신은 <literal>sequence</literal> 스타일 키 생성을 사용할 수도 있다. 이들 방"
+"도들 모두 새로운 객체를 insert하기 위해 두 개의 SQL 질의들을 필요로 한다."
-#: index.docbook:719
+#. Tag: programlisting
+#: basic_mapping.xml:719
+#, no-c-format
msgid ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
- " <generator class=\"sequence\">\n"
- " <param name=\"sequence\">person_id_sequence</param>\n"
- " </generator>\n"
- "</id>]]>"
+"<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
+" <generator class=\"sequence\">\n"
+" <param name=\"sequence\">person_id_sequence</param>\n"
+" </generator>\n"
+"</id>]]>"
msgstr ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
- " <generator class=\"sequence\">\n"
- " <param name=\"sequence\">person_id_sequence</param>\n"
- " </generator>\n"
- "</id>]]>"
-#: index.docbook:721
+#. Tag: programlisting
+#: basic_mapping.xml:721
+#, no-c-format
msgid ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\" unsaved-value=\"0\">\n"
- " <generator class=\"identity\"/>\n"
- "</id>]]>"
+"<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\" unsaved-value=\"0"
+"\">\n"
+" <generator class=\"identity\"/>\n"
+"</id>]]>"
msgstr ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\" unsaved-value=\"0\">\n"
- " <generator class=\"identity\"/>\n"
- "</id>]]>"
-#: index.docbook:723
-msgid "For cross-platform development, the <literal>native</literal> strategy will choose from the <literal>identity</literal>, <literal>sequence</literal> and <literal>hilo</literal> strategies, dependant upon the capabilities of the underlying database."
-msgstr "크로스 플랫폼 개발을 위해서, <literal>native</literal> 방도가 기준 데이터베이스들의 가용성들에 따라 <literal>identity</literal>, <literal>sequence</literal>, <literal>hilo</literal> 방도 중에서 선택될 것이다."
+#. Tag: para
+#: basic_mapping.xml:723
+#, no-c-format
+msgid ""
+"For cross-platform development, the <literal>native</literal> strategy will "
+"choose from the <literal>identity</literal>, <literal>sequence</literal> and "
+"<literal>hilo</literal> strategies, dependant upon the capabilities of the "
+"underlying database."
+msgstr ""
+"크로스 플랫폼 개발을 위해서, <literal>native</literal> 방도가 기준 데이터베이"
+"스들의 가용성들에 따라 <literal>identity</literal>, <literal>sequence</"
+"literal>, <literal>hilo</literal> 방도 중에서 선택될 것이다."
-#: index.docbook:732
+#. Tag: title
+#: basic_mapping.xml:732
+#, no-c-format
msgid "Assigned identifiers"
msgstr "할당된 식별자들"
-#: index.docbook:733
-msgid "If you want the application to assign identifiers (as opposed to having Hibernate generate them), you may use the <literal>assigned</literal> generator. This special generator will use the identifier value already assigned to the object's identifier property. This generator is used when the primary key is a natural key instead of a surrogate key. This is the default behavior if you do no specify a <literal><generator></literal> element."
-msgstr "(Hibernate로 하여금 식별자들을 생성시키도록 하는 것과는 반대로) 당신이 어플리케이션으로 하여금 식별자들을 할당하도록 원할 경우, 당신은 <literal>assigned</literal> 생성기를 사용할 수 있다. 이 특별한 생성기는 객체의 identifier 프로퍼티에 이미 할당된 식별자 값을 사용할 것이다. 이 생성기(generator)는 프라이머리 키가 대용(surrogate ) 키 대신에 natural 키일 때 사용된다. 당신이 <literal><generator></literal> 요소를 지정하지 않을 경우에 이것이 디폴트 특징이다"
+#. Tag: para
+#: basic_mapping.xml:733
+#, no-c-format
+msgid ""
+"If you want the application to assign identifiers (as opposed to having "
+"Hibernate generate them), you may use the <literal>assigned</literal> "
+"generator. This special generator will use the identifier value already "
+"assigned to the object's identifier property. This generator is used when "
+"the primary key is a natural key instead of a surrogate key. This is the "
+"default behavior if you do no specify a <literal><generator></literal> "
+"element."
+msgstr ""
+"(Hibernate로 하여금 식별자들을 생성시키도록 하는 것과는 반대로) 당신이 어플리"
+"케이션으로 하여금 식별자들을 할당하도록 원할 경우, 당신은 <literal>assigned</"
+"literal> 생성기를 사용할 수 있다. 이 특별한 생성기는 객체의 identifier 프로퍼"
+"티에 이미 할당된 식별자 값을 사용할 것이다. 이 생성기(generator)는 프라이머"
+"리 키가 대용(surrogate ) 키 대신에 natural 키일 때 사용된다. 당신이 "
+"<literal><generator></literal> 요소를 지정하지 않을 경우에 이것이 디폴"
+"트 특징이다"
-#: index.docbook:742
-msgid "Choosing the <literal>assigned</literal> generator makes Hibernate use <literal>unsaved-value=\"undefined\"</literal>, forcing Hibernate to go to the database to determine if an instance is transient or detached, unless there is a version or timestamp property, or you define <literal>Interceptor.isUnsaved()</literal>."
-msgstr "<literal>assigned</literal> 생성기(generator)를 선택하는 것은 , version 또는 timestamp 프로퍼티가 존재하지 않는 한 또는 당신이 <literal>Interceptor.isUnsaved()</literal>를 정의하지 않는 한, 하나의 인스턴스가 transient 또는 detached인지를 결정하기 위해 Hibernae로 하여금 데이터베이스에 접촉하도록 강제하는, <literal>unsaved-value=\"undefined\"</literal>를 Hibernate에게 사용하도록 한다."
+#. Tag: para
+#: basic_mapping.xml:742
+#, no-c-format
+msgid ""
+"Choosing the <literal>assigned</literal> generator makes Hibernate use "
+"<literal>unsaved-value=\"undefined\"</literal>, forcing Hibernate to go to "
+"the database to determine if an instance is transient or detached, unless "
+"there is a version or timestamp property, or you define <literal>Interceptor."
+"isUnsaved()</literal>."
+msgstr ""
+"<literal>assigned</literal> 생성기(generator)를 선택하는 것은 , version 또는 "
+"timestamp 프로퍼티가 존재하지 않는 한 또는 당신이 <literal>Interceptor."
+"isUnsaved()</literal>를 정의하지 않는 한, 하나의 인스턴스가 transient 또는 "
+"detached인지를 결정하기 위해 Hibernae로 하여금 데이터베이스에 접촉하도록 강제"
+"하는, <literal>unsaved-value=\"undefined\"</literal>를 Hibernate에게 사용하도"
+"록 한다."
-#: index.docbook:752
+#. Tag: title
+#: basic_mapping.xml:752
+#, no-c-format
msgid "Primary keys assigned by triggers"
msgstr "트리거들에 의해 할당된 프라이머리 키들"
-#: index.docbook:753
-msgid "For legacy schemas only (Hibernate does not generate DDL with triggers)."
-msgstr "리거시 스키마에 대해서만(Hibernate는 트리거들을 가진 DDL을 생성시키지 않는다)."
+#. Tag: para
+#: basic_mapping.xml:753
+#, no-c-format
+msgid ""
+"For legacy schemas only (Hibernate does not generate DDL with triggers)."
+msgstr ""
+"리거시 스키마에 대해서만(Hibernate는 트리거들을 가진 DDL을 생성시키지 않는"
+"다)."
-#: index.docbook:757
+#. Tag: programlisting
+#: basic_mapping.xml:757
+#, no-c-format
msgid ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
- " <generator class=\"select\">\n"
- " <param name=\"key\">socialSecurityNumber</param>\n"
- " </generator>\n"
- "</id>]]>"
+"<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
+" <generator class=\"select\">\n"
+" <param name=\"key\">socialSecurityNumber</param>\n"
+" </generator>\n"
+"</id>]]>"
msgstr ""
- "<![CDATA[<id name=\"id\" type=\"long\" column=\"person_id\">\n"
- " <generator class=\"select\">\n"
- " <param name=\"key\">socialSecurityNumber</param>\n"
- " </generator>\n"
- "</id>]]>"
-#: index.docbook:759
-msgid "In the above example, there is a unique valued property named <literal>socialSecurityNumber</literal> defined by the class, as a natural key, and a surrogate key named <literal>person_id</literal> whose value is generated by a trigger."
-msgstr "위의 예제에서, natural 키로서 클래스에 의해 <literal>socialSecurityNumber</literal>로 명명된 유일 값을 가진 프로퍼티가 존재하고, 트리거에 의해 그 값이 생성되는 <literal>person_id</literal>로 명명된 대용키가 존재한다."
+#. Tag: para
+#: basic_mapping.xml:759
+#, no-c-format
+msgid ""
+"In the above example, there is a unique valued property named "
+"<literal>socialSecurityNumber</literal> defined by the class, as a natural "
+"key, and a surrogate key named <literal>person_id</literal> whose value is "
+"generated by a trigger."
+msgstr ""
+"위의 예제에서, natural 키로서 클래스에 의해 <literal>socialSecurityNumber</"
+"literal>로 명명된 유일 값을 가진 프로퍼티가 존재하고, 트리거에 의해 그 값이 "
+"생성되는 <literal>person_id</literal>로 명명된 대용키가 존재한다."
-#: index.docbook:771
+#. Tag: title
+#: basic_mapping.xml:771
+#, no-c-format
msgid "Enhanced identifier generators"
-msgstr "composite-id"
+msgstr "NOT TRANSLATED!Enhanced identifier generators"
-#: index.docbook:773
-msgid "Starting with release 3.2.3, there are 2 new generators which represent a re-thinking of 2 different aspects of identifier generation. The first aspect is database portability; the second is optimization (not having to query the database for every request for a new identifier value). These two new generators are intended to take the place of some of the named generators described above (starting in 3.3.x); however, they are included in the current releases and can be referenced by FQN."
+#. Tag: para
+#: basic_mapping.xml:773
+#, no-c-format
+msgid ""
+"Starting with release 3.2.3, there are 2 new generators which represent a re-"
+"thinking of 2 different aspects of identifier generation. The first aspect "
+"is database portability; the second is optimization (not having to query the "
+"database for every request for a new identifier value). These two new "
+"generators are intended to take the place of some of the named generators "
+"described above (starting in 3.3.x); however, they are included in the "
+"current releases and can be referenced by FQN."
msgstr ""
- "<![CDATA[<composite-id\n"
- " name=\"propertyName\"\n"
- " class=\"ClassName\"\n"
- " mapped=\"true|false\"\n"
- " access=\"field|property|ClassName\">\n"
- " node=\"element-name|.\"\n"
- "\n"
- " <key-property name=\"propertyName\" type=\"typename\" column=\"column_name\"/>\n"
- " <key-many-to-one name=\"propertyName class=\"ClassName\" column=\"column_name\"/>\n"
- " ......\n"
- "</composite-id>]]>"
+"Starting with release 3.2.3, there are 2 new generators which represent a re-"
+"thinking of 2 different aspects of identifier generation. The first aspect "
+"is database portability; the second is optimization (not having to query the "
+"database for every request for a new identifier value). These two new "
+"generators are intended to take the place of some of the named generators "
+"described above (starting in 3.3.x); however, they are included in the "
+"current releases and can be referenced by FQN."
-#: index.docbook:781
-msgid "The first of these new generators is <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</literal> which is intended firstly as a replacement for the <literal>sequence</literal> generator and secondly as a better portability generator than <literal>native</literal> (because <literal>native</literal> (generally) chooses between <literal>identity</literal> and <literal>sequence</literal> which have largely different semantics which can cause subtle isssues in applications eyeing portability). <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</literal> however achieves portability in a different manner. It chooses between using a table or a sequence in the database to store its incrementing values depending on the capabilities of the dialect being used. The difference between this and <literal>native</literal> is that table-based and sequence-based storage have the same exact semantic (in fact sequences are exactly what Hibernate tries to emmulate with its!
table-based generators). This generator has a number of configuration parameters:"
-msgstr "composite 키를 가진 테이블의 경우, 당신은 클래스의 여러 프로퍼티들을 식별자 프로퍼티들로서 매핑할 수 있다. <literal><composite-id></literal> 요소는 자식 요소들로서 <literal><key-property></literal> 프로퍼티 매핑과 <literal><key-many-to-one></literal> 매핑들을 허용한다."
+#. Tag: para
+#: basic_mapping.xml:781
+#, fuzzy, no-c-format
+msgid ""
+"The first of these new generators is <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal> which is intended firstly as a replacement "
+"for the <literal>sequence</literal> generator and secondly as a better "
+"portability generator than <literal>native</literal> (because "
+"<literal>native</literal> (generally) chooses between <literal>identity</"
+"literal> and <literal>sequence</literal> which have largely different "
+"semantics which can cause subtle isssues in applications eyeing "
+"portability). <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</"
+"literal> however achieves portability in a different manner. It chooses "
+"between using a table or a sequence in the database to store its "
+"incrementing values depending on the capabilities of the dialect being used. "
+"The difference between this and <literal>native</literal> is that table-"
+"based and sequence-based storage have the same exact semantic (in fact "
+"sequences are exactly what Hibernate tries to emmulate with its table-based "
+"generators). This generator has a number of configuration parameters:"
+msgstr ""
+"The first of these new generators is <literal>org.hibernate.id.enhanced."
+"SequenceStyleGenerator</literal> which is intended firstly as a replacement "
+"for the <literal>sequence</literal> generator and secondly as a better "
+"portability generator than <literal>native</literal> (because "
+"<literal>native</literal> (generally) chooses between <literal>identity</"
+"literal> and <literal>sequence</literal> which have largely different "
+"semantics which can cause subtle isssues in applications eyeing "
+"portability). <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</"
+"literal> however achieves portability in a different manner. It chooses "
+"between using a table or a sequence in the database to store its "
+"incrementing values depending on the capabilities of the dialect being used. "
+"The difference between this and <literal>native</literal> is that table-"
+"based and sequence-based storage have the same exact semantic (in fact "
+"sequences are exactly what Hibernate tries to emmulate with its table-based "
+"generators). This generator has a number of configuration parameters: "
+"<placeholder-1/>"
-#: index.docbook:795
-msgid "<literal>sequence_name</literal> (optional, defaults to <literal>hibernate_sequence</literal>): The name of the sequence (or table) to be used."
+#. Tag: para
+#: basic_mapping.xml:795
+#, no-c-format
+msgid ""
+"<literal>sequence_name</literal> (optional, defaults to "
+"<literal>hibernate_sequence</literal>): The name of the sequence (or table) "
+"to be used."
msgstr ""
- "<![CDATA[<composite-id>\n"
- " <key-property name=\"medicareNumber\"/>\n"
- " <key-property name=\"dependent\"/>\n"
- "</composite-id>]]>"
+"<literal>sequence_name</literal> (optional, defaults to "
+"<literal>hibernate_sequence</literal>): The name of the sequence (or table) "
+"to be used."
-#: index.docbook:801
-msgid "<literal>initial_value</literal> (optional, defaults to <literal>1</literal>): The initial value to be retrieved from the sequence/table. In sequence creation terms, this is analogous to the clause typical named \"STARTS WITH\"."
-msgstr "당신의 영속 클래스는 composite 식별자 동등성을 구현하기 위해서 <literal>equals()</literal>와 <literal>hashCode()</literal>를 오버라이드 <emphasis>시켜야 한다</emphasis>. 그것은 또한 <literal>Serializable</literal>을 구현해야 한다."
+#. Tag: para
+#: basic_mapping.xml:801
+#, no-c-format
+msgid ""
+"<literal>initial_value</literal> (optional, defaults to <literal>1</"
+"literal>): The initial value to be retrieved from the sequence/table. In "
+"sequence creation terms, this is analogous to the clause typical named "
+"\"STARTS WITH\"."
+msgstr ""
+"<literal>initial_value</literal> (optional, defaults to <literal>1</"
+"literal>): The initial value to be retrieved from the sequence/table. In "
+"sequence creation terms, this is analogous to the clause typical named "
+"\"STARTS WITH\"."
-#: index.docbook:808
-msgid "<literal>increment_size</literal> (optional, defaults to <literal>1</literal>): The value by which subsequent calls to the sequence/table should differ. In sequence creation terms, this is analogous to the clause typical named \"INCREMENT BY\"."
-msgstr "불행히도, composite 식별자들에 대한 이 접근법은 영속 객체가 그것 자신의 식별자라는 점을 의미한다. 객체 자신 외의 다른 \"핸들\"이 존재하지 않는다. 당신은 당신이 composite key로 연관된 영속 상태를 <literal>load()</literal> 할 수 있기 이전에 영속 클래스 그 자체의 인스턴스를 초기화 하고 그것의 식별자 프로퍼티들을 군집화 시켜야 한다. 우리는 이 접근법을 <emphasis>embedded</emphasis> composite 식별자로 부르고, 중대한 어플리케이션들에 대해 그것을 억제시킨다."
+#. Tag: para
+#: basic_mapping.xml:808
+#, no-c-format
+msgid ""
+"<literal>increment_size</literal> (optional, defaults to <literal>1</"
+"literal>): The value by which subsequent calls to the sequence/table should "
+"differ. In sequence creation terms, this is analogous to the clause typical "
+"named \"INCREMENT BY\"."
+msgstr ""
+"<literal>increment_size</literal> (optional, defaults to <literal>1</"
+"literal>): The value by which subsequent calls to the sequence/table should "
+"differ. In sequence creation terms, this is analogous to the clause typical "
+"named \"INCREMENT BY\"."
-#: index.docbook:815
-msgid "<literal>force_table_use</literal> (optional, defaults to <literal>false</literal>): Should we force the use of a table as the backing structure even though the dialect might support sequence?"
-msgstr "두 번째 접근법은 우리가 <emphasis>mapped</emphasis> composite 식별자라고 부르는 것인데, 여기서 <literal><composite-id></literal> 요소 내에 명명된 여기서 식별자 프로퍼티들은 영속 클래스와 별도의 식별자 클래스 양자 상에 중복된다."
+#. Tag: para
+#: basic_mapping.xml:815
+#, no-c-format
+msgid ""
+"<literal>force_table_use</literal> (optional, defaults to <literal>false</"
+"literal>): Should we force the use of a table as the backing structure even "
+"though the dialect might support sequence?"
+msgstr ""
+"<literal>force_table_use</literal> (optional, defaults to <literal>false</"
+"literal>): Should we force the use of a table as the backing structure even "
+"though the dialect might support sequence?"
-#: index.docbook:822
-msgid "<literal>value_column</literal> (optional, defaults to <literal>next_val</literal>): Only relevant for table structures! The name of the column on the table which is used to hold the value."
+#. Tag: para
+#: basic_mapping.xml:822
+#, no-c-format
+msgid ""
+"<literal>value_column</literal> (optional, defaults to <literal>next_val</"
+"literal>): Only relevant for table structures! The name of the column on the "
+"table which is used to hold the value."
msgstr ""
- "<![CDATA[<composite-id class=\"MedicareId\" mapped=\"true\">\n"
- " <key-property name=\"medicareNumber\"/>\n"
- " <key-property name=\"dependent\"/>\n"
- "</composite-id>]]>"
+"<literal>value_column</literal> (optional, defaults to <literal>next_val</"
+"literal>): Only relevant for table structures! The name of the column on the "
+"table which is used to hold the value."
-#: index.docbook:829
-msgid "<literal>optimizer</literal> (optional, defaults to <literal>none</literal>): See"
-msgstr "이 예제에서, composite 식별자 클래스인 <literal>MedicareId</literal>와 엔티티 크래스 그 자체 양자는 <literal>medicareNumber</literal>와 <literal>dependent</literal>로 명명된 프로퍼티들을 갖는다. 식별자 클래스는 <literal>equals()</literal>와 <literal>hashCode()</literal>를 오버라이드 시켜고 <literal>Serializable</literal>을 구현해야 한다. 이 접근법의 단점은 아주 명백한—코드 중복이다."
+#. Tag: para
+#: basic_mapping.xml:829
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimizer</literal> (optional, defaults to <literal>none</"
+"literal>): See"
+msgstr ""
+"<literal>cascade</literal> (optional- defaults to <literal>none</literal>): "
+"cascade 스타일."
-#: index.docbook:836
-msgid "The second of these new generators is <literal>org.hibernate.id.enhanced.TableGenerator</literal> which is intended firstly as a replacement for the <literal>table</literal> generator (although it actually functions much more like <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal>) and secondly as a re-implementation of <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal> utilizing the notion of pluggable optimiziers. Essentially this generator defines a table capable of holding a number of different increment values simultaneously by using multiple distinctly keyed rows. This generator has a number of configuration parameters:"
-msgstr "다음 속성들은 매핑된 composite 식별자를 지정하는데 사용된다:"
+#. Tag: para
+#: basic_mapping.xml:836
+#, fuzzy, no-c-format
+msgid ""
+"The second of these new generators is <literal>org.hibernate.id.enhanced."
+"TableGenerator</literal> which is intended firstly as a replacement for the "
+"<literal>table</literal> generator (although it actually functions much more "
+"like <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal>) and "
+"secondly as a re-implementation of <literal>org.hibernate.id."
+"MultipleHiLoPerTableGenerator</literal> utilizing the notion of pluggable "
+"optimiziers. Essentially this generator defines a table capable of holding a "
+"number of different increment values simultaneously by using multiple "
+"distinctly keyed rows. This generator has a number of configuration "
+"parameters:"
+msgstr ""
+"The second of these new generators is <literal>org.hibernate.id.enhanced."
+"TableGenerator</literal> which is intended firstly as a replacement for the "
+"<literal>table</literal> generator (although it actually functions much more "
+"like <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal>) and "
+"secondly as a re-implementation of <literal>org.hibernate.id."
+"MultipleHiLoPerTableGenerator</literal> utilizing the notion of pluggable "
+"optimiziers. Essentially this generator defines a table capable of holding a "
+"number of different increment values simultaneously by using multiple "
+"distinctly keyed rows. This generator has a number of configuration "
+"parameters: <placeholder-1/>"
-#: index.docbook:846
-msgid "<literal>table_name</literal> (optional, defaults to <literal>hibernate_sequences</literal>): The name of the table to be used."
-msgstr "<literal>mapped</literal> (옵션, 디폴트는 <literal>false</literal>): 하나의 매핑된 composite 식별자가 사용됨을, 그리고 포함된 프로퍼티 매핑들이 엔티티 클래스와 composite 식별자 클래스 양자를 참조함을 나타낸다."
+#. Tag: para
+#: basic_mapping.xml:846
+#, no-c-format
+msgid ""
+"<literal>table_name</literal> (optional, defaults to "
+"<literal>hibernate_sequences</literal>): The name of the table to be used."
+msgstr ""
+"<literal>table_name</literal> (optional, defaults to "
+"<literal>hibernate_sequences</literal>): The name of the table to be used."
-#: index.docbook:852
-msgid "<literal>value_column_name</literal> (optional, defaults to <literal>next_val</literal>): The name of the column on the table which is used to hold the value."
-msgstr "<literal>class</literal> (옵션, 하지만 하나의 매핑된 commposite 식별자에 대해서는 필수적임): 하나의 composite 식별자로서 사용되는 클래스."
+#. Tag: para
+#: basic_mapping.xml:852
+#, no-c-format
+msgid ""
+"<literal>value_column_name</literal> (optional, defaults to "
+"<literal>next_val</literal>): The name of the column on the table which is "
+"used to hold the value."
+msgstr ""
+"<literal>value_column_name</literal> (optional, defaults to "
+"<literal>next_val</literal>): The name of the column on the table which is "
+"used to hold the value."
-#: index.docbook:858
-msgid "<literal>segment_column_name</literal> (optional, defaults to <literal>sequence_name</literal>): The name of the column on the table which is used to hold the \"segement key\". This is the value which distinctly identifies which increment value to use."
-msgstr "우리는 <xref linkend=\"components-compositeid\"/>에서 composite 식별자가 하나의 component 클래스로서 구현되는 보다 편리한 접근법인 세번째 방도를 설명할 것이다. 아래에 설명되어 있는 속성들은 이 대체적인 접근법에만 적용된다:"
+#. Tag: para
+#: basic_mapping.xml:858
+#, no-c-format
+msgid ""
+"<literal>segment_column_name</literal> (optional, defaults to "
+"<literal>sequence_name</literal>): The name of the column on the table which "
+"is used to hold the \"segement key\". This is the value which distinctly "
+"identifies which increment value to use."
+msgstr ""
+"<literal>segment_column_name</literal> (optional, defaults to "
+"<literal>sequence_name</literal>): The name of the column on the table which "
+"is used to hold the \"segement key\". This is the value which distinctly "
+"identifies which increment value to use."
-#: index.docbook:865
-msgid "<literal>segment_value</literal> (optional, defaults to <literal>default</literal>): The \"segment key\" value for the segment from which we want to pull increment values for this generator."
-msgstr "<literal>name</literal> (옵션, 이 접근법의 경우에는 필수임): 하나의 component 식별자를 소유하는 컴포넌트 타입의 프로퍼티(9장을 보라)."
+#. Tag: para
+#: basic_mapping.xml:865
+#, no-c-format
+msgid ""
+"<literal>segment_value</literal> (optional, defaults to <literal>default</"
+"literal>): The \"segment key\" value for the segment from which we want to "
+"pull increment values for this generator."
+msgstr ""
+"<literal>segment_value</literal> (optional, defaults to <literal>default</"
+"literal>): The \"segment key\" value for the segment from which we want to "
+"pull increment values for this generator."
-#: index.docbook:872
-msgid "<literal>segment_value_length</literal> (optional, defaults to <literal>255</literal>): Used for schema generation; the column size to create this segment key column."
-msgstr "<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): Hibernate가 프로퍼티 값에 접근하는데 사용할 방도."
+#. Tag: para
+#: basic_mapping.xml:872
+#, no-c-format
+msgid ""
+"<literal>segment_value_length</literal> (optional, defaults to <literal>255</"
+"literal>): Used for schema generation; the column size to create this "
+"segment key column."
+msgstr ""
+"<literal>segment_value_length</literal> (optional, defaults to <literal>255</"
+"literal>): Used for schema generation; the column size to create this "
+"segment key column."
-#: index.docbook:878
-msgid "<literal>initial_value</literal> (optional, defaults to <literal>1</literal>): The initial value to be retrieved from the table."
-msgstr "<literal>class</literal> (옵션 - 디폴트는 reflection에 의해 결정된 프로퍼티 타입): 하나의 composite 식별자로서 사용되는 컴포넌트 클래스(다음 절을 보라)."
+#. Tag: para
+#: basic_mapping.xml:878
+#, no-c-format
+msgid ""
+"<literal>initial_value</literal> (optional, defaults to <literal>1</"
+"literal>): The initial value to be retrieved from the table."
+msgstr ""
+"<literal>initial_value</literal> (optional, defaults to <literal>1</"
+"literal>): The initial value to be retrieved from the table."
-#: index.docbook:884
-msgid "<literal>increment_size</literal> (optional, defaults to <literal>1</literal>): The value by which subsequent calls to the table should differ."
-msgstr "이 세번째 접근법, <emphasis>identifier component</emphasis>은 거의 모든 어플리케이션들에 대해 우리가 권장하는 것이다."
+#. Tag: para
+#: basic_mapping.xml:884
+#, no-c-format
+msgid ""
+"<literal>increment_size</literal> (optional, defaults to <literal>1</"
+"literal>): The value by which subsequent calls to the table should differ."
+msgstr ""
+"<literal>increment_size</literal> (optional, defaults to <literal>1</"
+"literal>): The value by which subsequent calls to the table should differ."
-#: index.docbook:890
-msgid "<literal>optimizer</literal> (optional, defaults to <literal></literal>): See"
-msgstr "discriminator"
+#. Tag: para
+#: basic_mapping.xml:890
+#, fuzzy, no-c-format
+msgid ""
+"<literal>optimizer</literal> (optional, defaults to <literal></literal>): See"
+msgstr ""
+"<literal>cascade</literal> (optional- defaults to <literal>none</literal>): "
+"cascade 스타일."
-#: index.docbook:900
+#. Tag: title
+#: basic_mapping.xml:900
+#, no-c-format
msgid "Identifier generator optimization"
-msgstr "<literal><discriminator></literal> 요소는 table-per-class-hierarchy(테이블 당 클래스 계층구조) 매핑 방도를 사용하는 다형성 영속화에 필요하고 테이블의 discriminator(판별자) 컬럼을 선언한다. discriminator 컬럼은 특정 행에 대해 초기화 시킬 서브 클래스가 무엇인지를 영속 계층에 알려주는 표시자 값들을 포함한다. 타입들의 제한적인 집합이 사용될 수 있다: <literal>string</literal>, <literal>character</literal>, <literal>integer</literal>, <literal>byte</literal>, <literal>short</literal>, <literal>boolean</literal>, <literal>yes_no</literal>, <literal>true_false</literal>."
+msgstr "NOT TRANSLATED! Identifier generator optimization"
-#: index.docbook:901
-msgid "For identifier generators which store values in the database, it is inefficient for them to hit the database on each and every call to generate a new identifier value. Instead, you'd ideally want to group a bunch of them in memory and only hit the database when you have exhausted your in-memory value group. This is the role of the pluggable optimizers. Currently only the two enhanced generators (<xref linkend=\"mapping-declaration-id-enhanced\"/> support this notion."
+#. Tag: para
+#: basic_mapping.xml:901
+#, fuzzy, no-c-format
+msgid ""
+"For identifier generators which store values in the database, it is "
+"inefficient for them to hit the database on each and every call to generate "
+"a new identifier value. Instead, you'd ideally want to group a bunch of them "
+"in memory and only hit the database when you have exhausted your in-memory "
+"value group. This is the role of the pluggable optimizers. Currently only "
+"the two enhanced generators (<xref linkend=\"mapping-declaration-id-enhanced"
+"\"/> support this notion."
msgstr ""
- "<![CDATA[<discriminator\n"
- " column=\"discriminator_column\"\n"
- " type=\"discriminator_type\"\n"
- " force=\"true|false\"\n"
- " insert=\"true|false\"\n"
- " formula=\"arbitrary sql expression\"\n"
- "/>]]>"
+"For identifier generators which store values in the database, it is "
+"inefficient for them to hit the database on each and every call to generate "
+"a new identifier value. Instead, you'd ideally want to group a bunch of them "
+"in memory and only hit the database when you have exhausted your in-memory "
+"value group. This is the role of the pluggable optimizers. Currently only "
+"the two enhanced generators (<xref linkend=\"mapping-declaration-id-enhanced"
+"\"/> support this notion. <placeholder-1/>"
-#: index.docbook:909
-msgid "<literal>none</literal> (generally this is the default if no optimizer was specified): This says to not perform any optimizations, and hit the database each and every request."
-msgstr "<literal>column</literal> (옵션 - 디폴트는 <literal>class</literal>) discriminator 컬럼명."
+#. Tag: para
+#: basic_mapping.xml:909
+#, no-c-format
+msgid ""
+"<literal>none</literal> (generally this is the default if no optimizer was "
+"specified): This says to not perform any optimizations, and hit the database "
+"each and every request."
+msgstr ""
+"<literal>none</literal> (generally this is the default if no optimizer was "
+"specified): This says to not perform any optimizations, and hit the database "
+"each and every request."
-#: index.docbook:915
-msgid "<literal>hilo</literal>: applies a hi/lo algorithm around the database retrieved values. The values from the database for this optimizer are expected to be sequential. The values retrieved from the database structure for this optimizer indicates the \"group number\"; the <literal>increment_size</literal> is multiplied by that value in memory to define a group \"hi value\"."
-msgstr "<literal>type</literal> (옵션 - 디폴트는 <literal>string</literal>) Hibernate 타입을 나타내는 이름"
+#. Tag: para
+#: basic_mapping.xml:915
+#, no-c-format
+msgid ""
+"<literal>hilo</literal>: applies a hi/lo algorithm around the database "
+"retrieved values. The values from the database for this optimizer are "
+"expected to be sequential. The values retrieved from the database structure "
+"for this optimizer indicates the \"group number\"; the "
+"<literal>increment_size</literal> is multiplied by that value in memory to "
+"define a group \"hi value\"."
+msgstr ""
+"<literal>hilo</literal>: applies a hi/lo algorithm around the database "
+"retrieved values. The values from the database for this optimizer are "
+"expected to be sequential. The values retrieved from the database structure "
+"for this optimizer indicates the \"group number\"; the "
+"<literal>increment_size</literal> is multiplied by that value in memory to "
+"define a group \"hi value\"."
-#: index.docbook:924
-msgid "<literal>pooled</literal>: like was discussed for <literal>hilo</literal>, this optimizers attempts to minimize the number of hits to the database. Here, however, we simply store the starting value for the \"next group\" into the database structure rather than a sequential value in combination with an in-memory grouping algorithm. <literal>increment_size</literal> here refers to the values coming from the database."
-msgstr "<literal>force</literal> (옵션 - 디폴트는 <literal>false</literal>) 이것은 Hibernate로 하여금 루트 클래스의 모든 인스턴스들을 검색할 때조차도 허용된 discriminator 값들을 지정하도록 \"강제한다\"."
+#. Tag: para
+#: basic_mapping.xml:924
+#, no-c-format
+msgid ""
+"<literal>pooled</literal>: like was discussed for <literal>hilo</literal>, "
+"this optimizers attempts to minimize the number of hits to the database. "
+"Here, however, we simply store the starting value for the \"next group\" "
+"into the database structure rather than a sequential value in combination "
+"with an in-memory grouping algorithm. <literal>increment_size</literal> here "
+"refers to the values coming from the database."
+msgstr ""
+"<literal>pooled</literal>: like was discussed for <literal>hilo</literal>, "
+"this optimizers attempts to minimize the number of hits to the database. "
+"Here, however, we simply store the starting value for the \"next group\" "
+"into the database structure rather than a sequential value in combination "
+"with an in-memory grouping algorithm. <literal>increment_size</literal> here "
+"refers to the values coming from the database."
-#: index.docbook:937
+#. Tag: title
+#: basic_mapping.xml:937
+#, no-c-format
msgid "composite-id"
-msgstr "<literal>insert</literal> (옵션 - 디폴트는 <literal>true</literal>) 당신의 discriminator 컬럼이 또한 매핑된 composite 식별자의 부분일 경우에 이것을 <literal>false</literal>로 설정하라. (Hibernate에게 SQL <literal>INSERT</literal>들 속에 그 컬럼을 포함하지 않도록 통보한다.)"
+msgstr "composite-id"
-#: index.docbook:939
+#. Tag: programlisting
+#: basic_mapping.xml:939
+#, no-c-format
msgid ""
- "<![CDATA[<composite-id\n"
- " name=\"propertyName\"\n"
- " class=\"ClassName\"\n"
- " mapped=\"true|false\"\n"
- " access=\"field|property|ClassName\">\n"
- " node=\"element-name|.\"\n"
- "\n"
- " <key-property name=\"propertyName\" type=\"typename\" column=\"column_name\"/>\n"
- " <key-many-to-one name=\"propertyName class=\"ClassName\" column=\"column_name\"/>\n"
- " ......\n"
- "</composite-id>]]>"
-msgstr "<literal>formula</literal> (옵션) 타입이 평가 되어야 할 때 실행되는 임의의 SQL 표현식. 컨텐츠 기반의 판별을 허용해준다."
+"<![CDATA[<composite-id\n"
+" name=\"propertyName\"\n"
+" class=\"ClassName\"\n"
+" mapped=\"true|false\"\n"
+" access=\"field|property|ClassName\">\n"
+" node=\"element-name|.\"\n"
+"\n"
+" <key-property name=\"propertyName\" type=\"typename\" column="
+"\"column_name\"/>\n"
+" <key-many-to-one name=\"propertyName class=\"ClassName\" column="
+"\"column_name\"/>\n"
+" ......\n"
+"</composite-id>]]>"
+msgstr ""
-#: index.docbook:941
-msgid "For a table with a composite key, you may map multiple properties of the class as identifier properties. The <literal><composite-id></literal> element accepts <literal><key-property></literal> property mappings and <literal><key-many-to-one></literal> mappings as child elements."
-msgstr "discriminator 컬럼의 실제 값들은 <literal><class></literal> 요소와 <literal><subclass></literal> 요소의 <literal>discriminator-value</literal> 속성에 의해 지정된다."
+#. Tag: para
+#: basic_mapping.xml:941
+#, no-c-format
+msgid ""
+"For a table with a composite key, you may map multiple properties of the "
+"class as identifier properties. The <literal><composite-id></literal> "
+"element accepts <literal><key-property></literal> property mappings "
+"and <literal><key-many-to-one></literal> mappings as child elements."
+msgstr ""
+"composite 키를 가진 테이블의 경우, 당신은 클래스의 여러 프로퍼티들을 식별자 "
+"프로퍼티들로서 매핑할 수 있다. <literal><composite-id></literal> 요소"
+"는 자식 요소들로서 <literal><key-property></literal> 프로퍼티 매핑과 "
+"<literal><key-many-to-one></literal> 매핑들을 허용한다."
-#: index.docbook:948
+#. Tag: programlisting
+#: basic_mapping.xml:948
+#, no-c-format
msgid ""
- "<![CDATA[<composite-id>\n"
- " <key-property name=\"medicareNumber\"/>\n"
- " <key-property name=\"dependent\"/>\n"
- "</composite-id>]]>"
-msgstr "<literal>force</literal> 속성은 테이블이 영속 클래스로 매핑되지 않는 \"특별한\" discriminator 값들을 가진 행들을 포함할 경우에(만) 유용하다. 이것은 대개 그 경우가 아닐 것이다."
+"<![CDATA[<composite-id>\n"
+" <key-property name=\"medicareNumber\"/>\n"
+" <key-property name=\"dependent\"/>\n"
+"</composite-id>]]>"
+msgstr ""
-#: index.docbook:950
-msgid "Your persistent class <emphasis>must</emphasis> override <literal>equals()</literal> and <literal>hashCode()</literal> to implement composite identifier equality. It must also implements <literal>Serializable</literal>."
-msgstr "<literal>formula</literal> 속성을 사용하여 당신은 행의 타입을 판단하는데 사용될 임의의 SQL 표현식을 선언할 수 있다:"
+#. Tag: para
+#: basic_mapping.xml:950
+#, no-c-format
+msgid ""
+"Your persistent class <emphasis>must</emphasis> override <literal>equals()</"
+"literal> and <literal>hashCode()</literal> to implement composite identifier "
+"equality. It must also implements <literal>Serializable</literal>."
+msgstr ""
+"당신의 영속 클래스는 composite 식별자 동등성을 구현하기 위해서 "
+"<literal>equals()</literal>와 <literal>hashCode()</literal>를 오버라이드 "
+"<emphasis>시켜야 한다</emphasis>. 그것은 또한 <literal>Serializable</literal>"
+"을 구현해야 한다."
-#: index.docbook:956
-msgid "Unfortunately, this approach to composite identifiers means that a persistent object is its own identifier. There is no convenient \"handle\" other than the object itself. You must instantiate an instance of the persistent class itself and populate its identifier properties before you can <literal>load()</literal> the persistent state associated with a composite key. We call this approach an <emphasis>embedded</emphasis> composite identifier, and discourage it for serious applications."
+#. Tag: para
+#: basic_mapping.xml:956
+#, no-c-format
+msgid ""
+"Unfortunately, this approach to composite identifiers means that a "
+"persistent object is its own identifier. There is no convenient \"handle\" "
+"other than the object itself. You must instantiate an instance of the "
+"persistent class itself and populate its identifier properties before you "
+"can <literal>load()</literal> the persistent state associated with a "
+"composite key. We call this approach an <emphasis>embedded</emphasis> "
+"composite identifier, and discourage it for serious applications."
msgstr ""
- "<![CDATA[<discriminator\n"
- " formula=\"case when CLASS_TYPE in ('a', 'b', 'c') then 0 else 1 end\"\n"
- " type=\"integer\"/>]]>"
+"불행히도, composite 식별자들에 대한 이 접근법은 영속 객체가 그것 자신의 식별"
+"자라는 점을 의미한다. 객체 자신 외의 다른 \"핸들\"이 존재하지 않는다. 당신은 "
+"당신이 composite key로 연관된 영속 상태를 <literal>load()</literal> 할 수 있"
+"기 이전에 영속 클래스 그 자체의 인스턴스를 초기화 하고 그것의 식별자 프로퍼티"
+"들을 군집화 시켜야 한다. 우리는 이 접근법을 <emphasis>embedded</emphasis> "
+"composite 식별자로 부르고, 중대한 어플리케이션들에 대해 그것을 억제시킨다."
-#: index.docbook:965
-msgid "A second approach is what we call a <emphasis>mapped</emphasis> composite identifier, where the identifier properties named inside the <literal><composite-id></literal> element are duplicated on both the persistent class and a separate identifier class."
-msgstr "version (옵션)"
+#. Tag: para
+#: basic_mapping.xml:965
+#, no-c-format
+msgid ""
+"A second approach is what we call a <emphasis>mapped</emphasis> composite "
+"identifier, where the identifier properties named inside the <literal><"
+"composite-id></literal> element are duplicated on both the persistent "
+"class and a separate identifier class."
+msgstr ""
+"두 번째 접근법은 우리가 <emphasis>mapped</emphasis> composite 식별자라고 부르"
+"는 것인데, 여기서 <literal><composite-id></literal> 요소 내에 명명된 여"
+"기서 식별자 프로퍼티들은 영속 클래스와 별도의 식별자 클래스 양자 상에 중복된"
+"다."
-#: index.docbook:971
+#. Tag: programlisting
+#: basic_mapping.xml:971
+#, no-c-format
msgid ""
- "<![CDATA[<composite-id class=\"MedicareId\" mapped=\"true\">\n"
- " <key-property name=\"medicareNumber\"/>\n"
- " <key-property name=\"dependent\"/>\n"
- "</composite-id>]]>"
-msgstr "<literal><version></literal> 요소는 옵션이고 테이블이 버전화된 데이터를 포함한다는 것을 나타낸다. 이것은 당신이 <emphasis>긴 트랜잭션(long transaction)들</emphasis>을 사용할 계획이라면 특히 유용하다 (아래를 보라)."
+"<![CDATA[<composite-id class=\"MedicareId\" mapped=\"true\">\n"
+" <key-property name=\"medicareNumber\"/>\n"
+" <key-property name=\"dependent\"/>\n"
+"</composite-id>]]>"
+msgstr ""
-#: index.docbook:973
-msgid "In this example, both the composite identifier class, <literal>MedicareId</literal>, and the entity class itself have properties named <literal>medicareNumber</literal> and <literal>dependent</literal>. The identifier class must override <literal>equals()</literal> and <literal>hashCode()</literal> and implement. <literal>Serializable</literal>. The disadvantage of this approach is quite obvious—code duplication."
+#. Tag: para
+#: basic_mapping.xml:973
+#, no-c-format
+msgid ""
+"In this example, both the composite identifier class, <literal>MedicareId</"
+"literal>, and the entity class itself have properties named "
+"<literal>medicareNumber</literal> and <literal>dependent</literal>. The "
+"identifier class must override <literal>equals()</literal> and "
+"<literal>hashCode()</literal> and implement. <literal>Serializable</"
+"literal>. The disadvantage of this approach is quite obvious—code "
+"duplication."
msgstr ""
- "<![CDATA[<version\n"
- " column=\"version_column\"\n"
- " name=\"propertyName\"\n"
- " type=\"typename\"\n"
- " access=\"field|property|ClassName\"\n"
- " unsaved-value=\"null|negative|undefined\"\n"
- " generated=\"never|always\"\n"
- " insert=\"true|false\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- "/>]]>"
+"이 예제에서, composite 식별자 클래스인 <literal>MedicareId</literal>와 엔티"
+"티 크래스 그 자체 양자는 <literal>medicareNumber</literal>와 "
+"<literal>dependent</literal>로 명명된 프로퍼티들을 갖는다. 식별자 클래스는 "
+"<literal>equals()</literal>와 <literal>hashCode()</literal>를 오버라이드 시켜"
+"고 <literal>Serializable</literal>을 구현해야 한다. 이 접근법의 단점은 아주 "
+"명백한—코드 중복이다."
-#: index.docbook:982
-msgid "The following attributes are used to specify a mapped composite identifier:"
-msgstr "<literal>column</literal> (옵션 - 디폴트는 프로퍼티 명): 버전 번호를 가진 컬럼의 이름."
+#. Tag: para
+#: basic_mapping.xml:982
+#, no-c-format
+msgid ""
+"The following attributes are used to specify a mapped composite identifier:"
+msgstr "다음 속성들은 매핑된 composite 식별자를 지정하는데 사용된다:"
-#: index.docbook:988
-msgid "<literal>mapped</literal> (optional, defaults to <literal>false</literal>): indicates that a mapped composite identifier is used, and that the contained property mappings refer to both the entity class and the composite identifier class."
-msgstr "<literal>name</literal>: 영속 클래스의 프로퍼티 명."
+#. Tag: para
+#: basic_mapping.xml:988
+#, no-c-format
+msgid ""
+"<literal>mapped</literal> (optional, defaults to <literal>false</literal>): "
+"indicates that a mapped composite identifier is used, and that the contained "
+"property mappings refer to both the entity class and the composite "
+"identifier class."
+msgstr ""
+"<literal>mapped</literal> (옵션, 디폴트는 <literal>false</literal>): 하나의 "
+"매핑된 composite 식별자가 사용됨을, 그리고 포함된 프로퍼티 매핑들이 엔티티 클"
+"래스와 composite 식별자 클래스 양자를 참조함을 나타낸다."
-#: index.docbook:996
-msgid "<literal>class</literal> (optional, but required for a mapped composite identifier): The class used as a composite identifier."
-msgstr "<literal>type</literal> (옵션 - 디폴트는 <literal>integer</literal>): 버전 번호의 타입."
+#. Tag: para
+#: basic_mapping.xml:996
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional, but required for a mapped composite "
+"identifier): The class used as a composite identifier."
+msgstr ""
+"<literal>class</literal> (옵션, 하지만 하나의 매핑된 commposite 식별자에 대해"
+"서는 필수적임): 하나의 composite 식별자로서 사용되는 클래스."
-#: index.docbook:1003
-msgid "We will describe a third, even more convenient approach where the composite identifier is implemented as a component class in <xref linkend=\"components-compositeid\"/>. The attributes described below apply only to this alternative approach:"
-msgstr "<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): Hibernate가 프로퍼티 값에 액세스하는데 사용할 방도."
+#. Tag: para
+#: basic_mapping.xml:1003
+#, no-c-format
+msgid ""
+"We will describe a third, even more convenient approach where the composite "
+"identifier is implemented as a component class in <xref linkend=\"components-"
+"compositeid\"/>. The attributes described below apply only to this "
+"alternative approach:"
+msgstr ""
+"우리는 <xref linkend=\"components-compositeid\"/>에서 composite 식별자가 하나"
+"의 component 클래스로서 구현되는 보다 편리한 접근법인 세번째 방도를 설명할 것"
+"이다. 아래에 설명되어 있는 속성들은 이 대체적인 접근법에만 적용된다:"
-#: index.docbook:1011
-msgid "<literal>name</literal> (optional, required for this approach): A property of component type that holds the composite identifier (see chapter 9)."
-msgstr "<literal>unsaved-value</literal> (옵션 - 디폴트는 <literal>undefined</literal>): 이전 세션에서 저장되었거나 로드되었던 detached 인스턴스로부터 구별지어서, 인스턴스가 새로이 초기화됨(unsaved)을 나타내는 version 프로퍼티 값.(<literal>undefined</literal>는 식별자 프로퍼티 값이 사용될 것임을 지정한다.)"
+#. Tag: para
+#: basic_mapping.xml:1011
+#, no-c-format
+msgid ""
+"<literal>name</literal> (optional, required for this approach): A property "
+"of component type that holds the composite identifier (see chapter 9)."
+msgstr ""
+"<literal>name</literal> (옵션, 이 접근법의 경우에는 필수임): 하나의 "
+"component 식별자를 소유하는 컴포넌트 타입의 프로퍼티(9장을 보라)."
-#: index.docbook:1023
-msgid "<literal>class</literal> (optional - defaults to the property type determined by reflection): The component class used as a composite identifier (see next section)."
-msgstr "<literal>insert</literal> (옵션 - 디폴트는 <literal>true</literal>): version 컬럼이 SQL insert 문장들 속에 포함될 것인지 여부를 지정한다. 데이터베이스 컬럼이 디폴트 값 <literal>0</literal>으로 정의되는 경우에만 <literal>false</literal>로 설정될 수 있다."
+#. Tag: para
+#: basic_mapping.xml:1023
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): The component class used as a composite "
+"identifier (see next section)."
+msgstr ""
+"<literal>class</literal> (옵션 - 디폴트는 reflection에 의해 결정된 프로퍼티 "
+"타입): 하나의 composite 식별자로서 사용되는 컴포넌트 클래스(다음 절을 보라)."
-#: index.docbook:1030
-msgid "This third approach, an <emphasis>identifier component</emphasis> is the one we recommend for almost all applications."
-msgstr "버전 번호들은 <literal>long</literal>, <literal>integer</literal>, <literal>short</literal>, <literal>timestamp</literal> 또는 <literal>calendar</literal> 타입일 수 있다."
+#. Tag: para
+#: basic_mapping.xml:1030
+#, no-c-format
+msgid ""
+"This third approach, an <emphasis>identifier component</emphasis> is the one "
+"we recommend for almost all applications."
+msgstr ""
+"이 세번째 접근법, <emphasis>identifier component</emphasis>은 거의 모든 어플"
+"리케이션들에 대해 우리가 권장하는 것이다."
-#: index.docbook:1038
+#. Tag: title
+#: basic_mapping.xml:1038
+#, no-c-format
msgid "discriminator"
-msgstr "version 또는 timestamp 프로퍼티는 detached 인스턴스에 대해 결코 null일 수가 없어서, Hibernate는 다른 <literal>unsaved-value</literal> 방도들이 지정되는 것에 상관없이, null version이나 timestamp를 가진 임의의 인스턴스를 transient로서 검출할 것이다. <emphasis>null 허용되는 version 이나 property를 선언하는 것은 Hibernate에서 transitive reattachment에 대한 임의의 문제들을 피하는 쉬운 방법이고, assigned 식별자들이나 composite key들을 사용하는 사람들에게 특히 유용하다!</emphasis>"
+msgstr "discriminator"
-#: index.docbook:1040
-msgid "The <literal><discriminator></literal> element is required for polymorphic persistence using the table-per-class-hierarchy mapping strategy and declares a discriminator column of the table. The discriminator column contains marker values that tell the persistence layer what subclass to instantiate for a particular row. A restricted set of types may be used: <literal>string</literal>, <literal>character</literal>, <literal>integer</literal>, <literal>byte</literal>, <literal>short</literal>, <literal>boolean</literal>, <literal>yes_no</literal>, <literal>true_false</literal>."
-msgstr "timestamp (옵션)"
+#. Tag: para
+#: basic_mapping.xml:1040
+#, no-c-format
+msgid ""
+"The <literal><discriminator></literal> element is required for "
+"polymorphic persistence using the table-per-class-hierarchy mapping strategy "
+"and declares a discriminator column of the table. The discriminator column "
+"contains marker values that tell the persistence layer what subclass to "
+"instantiate for a particular row. A restricted set of types may be used: "
+"<literal>string</literal>, <literal>character</literal>, <literal>integer</"
+"literal>, <literal>byte</literal>, <literal>short</literal>, "
+"<literal>boolean</literal>, <literal>yes_no</literal>, <literal>true_false</"
+"literal>."
+msgstr ""
+"<literal><discriminator></literal> 요소는 table-per-class-hierarchy(테"
+"이블 당 클래스 계층구조) 매핑 방도를 사용하는 다형성 영속화에 필요하고 테이블"
+"의 discriminator(판별자) 컬럼을 선언한다. discriminator 컬럼은 특정 행에 대"
+"해 초기화 시킬 서브 클래스가 무엇인지를 영속 계층에 알려주는 표시자 값들을 포"
+"함한다. 타입들의 제한적인 집합이 사용될 수 있다: <literal>string</literal>, "
+"<literal>character</literal>, <literal>integer</literal>, <literal>byte</"
+"literal>, <literal>short</literal>, <literal>boolean</literal>, "
+"<literal>yes_no</literal>, <literal>true_false</literal>."
-#: index.docbook:1058
+#. Tag: programlisting
+#: basic_mapping.xml:1058
+#, no-c-format
msgid ""
- "<![CDATA[<discriminator\n"
- " column=\"discriminator_column\"\n"
- " type=\"discriminator_type\"\n"
- " force=\"true|false\"\n"
- " insert=\"true|false\"\n"
- " formula=\"arbitrary sql expression\"\n"
- "/>]]>"
-msgstr "옵션 <literal><timestamp></literal> 요소는 테이블이 타임스탬프화 된 데이터를 포함함을 나타낸다. 이것은 버전화에 대한 대체물로서 고안되었다. Timestamp은 고유하게 optimistic 잠금에 대한 다소 안전한 구현이다. 하지만 때때로 어플리케이션은 다른 방법들로 timestamp들을 사용할 수도 있다."
+"<![CDATA[<discriminator\n"
+" column=\"discriminator_column\"\n"
+" type=\"discriminator_type\"\n"
+" force=\"true|false\"\n"
+" insert=\"true|false\"\n"
+" formula=\"arbitrary sql expression\"\n"
+"/>]]>"
+msgstr ""
-#: index.docbook:1061
-msgid "<literal>column</literal> (optional - defaults to <literal>class</literal>) the name of the discriminator column."
+#. Tag: para
+#: basic_mapping.xml:1061
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to <literal>class</literal>) "
+"the name of the discriminator column."
msgstr ""
- "<![CDATA[<timestamp\n"
- " column=\"timestamp_column\"\n"
- " name=\"propertyName\"\n"
- " access=\"field|property|ClassName\"\n"
- " unsaved-value=\"null|undefined\"\n"
- " source=\"vm|db\"\n"
- " generated=\"never|always\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- "/>]]>"
+"<literal>column</literal> (옵션 - 디폴트는 <literal>class</literal>) "
+"discriminator 컬럼명."
-#: index.docbook:1067
-msgid "<literal>type</literal> (optional - defaults to <literal>string</literal>) a name that indicates the Hibernate type"
-msgstr "<literal>column</literal> (옵션 - 디폴트는 프로퍼티 명): 타임스탬프를 포함하는 컬럼 명."
+#. Tag: para
+#: basic_mapping.xml:1067
+#, no-c-format
+msgid ""
+"<literal>type</literal> (optional - defaults to <literal>string</literal>) a "
+"name that indicates the Hibernate type"
+msgstr ""
+"<literal>type</literal> (옵션 - 디폴트는 <literal>string</literal>) "
+"Hibernate 타입을 나타내는 이름"
-#: index.docbook:1073
-msgid "<literal>force</literal> (optional - defaults to <literal>false</literal>) \"force\" Hibernate to specify allowed discriminator values even when retrieving all instances of the root class."
-msgstr "<literal>name</literal>: 영속 클래스에 대해 자바 <literal>Date</literal> 또는 <literal>Timestamp</literal> 타입을 가진 자바빈즈 스타일의 프로퍼티 이름."
+#. Tag: para
+#: basic_mapping.xml:1073
+#, no-c-format
+msgid ""
+"<literal>force</literal> (optional - defaults to <literal>false</literal>) "
+"\"force\" Hibernate to specify allowed discriminator values even when "
+"retrieving all instances of the root class."
+msgstr ""
+"<literal>force</literal> (옵션 - 디폴트는 <literal>false</literal>) 이것은 "
+"Hibernate로 하여금 루트 클래스의 모든 인스턴스들을 검색할 때조차도 허용된 "
+"discriminator 값들을 지정하도록 \"강제한다\"."
-#: index.docbook:1080
-msgid "<literal>insert</literal> (optional - defaults to <literal>true</literal>) set this to <literal>false</literal> if your discriminator column is also part of a mapped composite identifier. (Tells Hibernate to not include the column in SQL <literal>INSERT</literal>s.)"
-msgstr "<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): Hibernate가 프로퍼티 값에 접근하는데 사용할 방도."
+#. Tag: para
+#: basic_mapping.xml:1080
+#, no-c-format
+msgid ""
+"<literal>insert</literal> (optional - defaults to <literal>true</literal>) "
+"set this to <literal>false</literal> if your discriminator column is also "
+"part of a mapped composite identifier. (Tells Hibernate to not include the "
+"column in SQL <literal>INSERT</literal>s.)"
+msgstr ""
+"<literal>insert</literal> (옵션 - 디폴트는 <literal>true</literal>) 당신의 "
+"discriminator 컬럼이 또한 매핑된 composite 식별자의 부분일 경우에 이것을 "
+"<literal>false</literal>로 설정하라. (Hibernate에게 SQL <literal>INSERT</"
+"literal>들 속에 그 컬럼을 포함하지 않도록 통보한다.)"
-#: index.docbook:1088
-msgid "<literal>formula</literal> (optional) an arbitrary SQL expression that is executed when a type has to be evaluated. Allows content-based discrimination."
-msgstr "<literal>unsaved-value</literal> (옵션 - 디폴트는 <literal>null</literal>): 이전 세션에서 저장되었거나 로드되었던 detached 인스턴스로부터 인스턴스를 구별지우는, 인스턴스가 새로이 초기화됨(unsaved)을 나타내는 version 프로퍼티 값.(<literal>undefined</literal>는 식별자 프로퍼티 값이 사용될 것임을 지정한다.)"
+#. Tag: para
+#: basic_mapping.xml:1088
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional) an arbitrary SQL expression that is "
+"executed when a type has to be evaluated. Allows content-based "
+"discrimination."
+msgstr ""
+"<literal>formula</literal> (옵션) 타입이 평가 되어야 할 때 실행되는 임의의 "
+"SQL 표현식. 컨텐츠 기반의 판별을 허용해준다."
-#: index.docbook:1096
-msgid "Actual values of the discriminator column are specified by the <literal>discriminator-value</literal> attribute of the <literal><class></literal> and <literal><subclass></literal> elements."
-msgstr "<literal>source</literal> (옵션 - 디폴트는 <literal>vm</literal>): Hibernate는 어디서 timestamp 값을 검색할 것인가? 데이터베이스로부터인가 현재의 JVM으로부터인가? 데이터베이스 기반의 timestamp들은 Hibernate가 \"다음 값\"을 결정하기 위해 데이터베이스에 접속해야 하기 때문에 오버헤드를 초래하지만, 클러스터링된 환경들에서의 용도로 보다 더 안전할 것이다. 또한 모든 <literal>Dialect</literal>들이 데이터베이스의 현재의 timestamp에 대한 검색을 지원하는 것으로 알려져 있지 않지만, 다른 <literal>Dialect</literal>들은 정밀도 결핍 때문에 잠금에 있어 사용이 안전하지 않을 수 있음을 노트하라(예를 들면 오라클 8)."
+#. Tag: para
+#: basic_mapping.xml:1096
+#, no-c-format
+msgid ""
+"Actual values of the discriminator column are specified by the "
+"<literal>discriminator-value</literal> attribute of the <literal><"
+"class></literal> and <literal><subclass></literal> elements."
+msgstr ""
+"discriminator 컬럼의 실제 값들은 <literal><class></literal> 요소와 "
+"<literal><subclass></literal> 요소의 <literal>discriminator-value</"
+"literal> 속성에 의해 지정된다."
-#: index.docbook:1102
-msgid "The <literal>force</literal> attribute is (only) useful if the table contains rows with \"extra\" discriminator values that are not mapped to a persistent class. This will not usually be the case."
-msgstr "<literal>generated</literal> (옵션 - 디폴트는 <literal>never</literal>): 이 timestamp 프로퍼티 값이 데이터베이스에 의해 실제로 생성됨을 지정한다. <xref linkend=\"mapping-generated\"/>산출되는 프로퍼티들에 대한 논의들 보라."
+#. Tag: para
+#: basic_mapping.xml:1102
+#, no-c-format
+msgid ""
+"The <literal>force</literal> attribute is (only) useful if the table "
+"contains rows with \"extra\" discriminator values that are not mapped to a "
+"persistent class. This will not usually be the case."
+msgstr ""
+"<literal>force</literal> 속성은 테이블이 영속 클래스로 매핑되지 않는 \"특별한"
+"\" discriminator 값들을 가진 행들을 포함할 경우에(만) 유용하다. 이것은 대개 "
+"그 경우가 아닐 것이다."
-#: index.docbook:1108
-msgid "Using the <literal>formula</literal> attribute you can declare an arbitrary SQL expression that will be used to evaluate the type of a row:"
-msgstr "<literal><timestamp></literal>는 <literal><version type=\"timestamp\"></literal>과 같음을 노트하라. 그리고 <literal><timestamp use-db=\"true\"></literal>는 <literal><version type=\"dbtimestamp\"></literal>과 같다"
+#. Tag: para
+#: basic_mapping.xml:1108
+#, no-c-format
+msgid ""
+"Using the <literal>formula</literal> attribute you can declare an arbitrary "
+"SQL expression that will be used to evaluate the type of a row:"
+msgstr ""
+"<literal>formula</literal> 속성을 사용하여 당신은 행의 타입을 판단하는데 사용"
+"될 임의의 SQL 표현식을 선언할 수 있다:"
-#: index.docbook:1113
+#. Tag: programlisting
+#: basic_mapping.xml:1113
+#, no-c-format
msgid ""
- "<![CDATA[<discriminator\n"
- " formula=\"case when CLASS_TYPE in ('a', 'b', 'c') then 0 else 1 end\"\n"
- " type=\"integer\"/>]]>"
-msgstr "프로퍼티"
+"<![CDATA[<discriminator\n"
+" formula=\"case when CLASS_TYPE in ('a', 'b', 'c') then 0 else 1 end\"\n"
+" type=\"integer\"/>]]>"
+msgstr ""
-#: index.docbook:1118
+#. Tag: title
+#: basic_mapping.xml:1118
+#, no-c-format
msgid "version (optional)"
-msgstr "<literal><property></literal> 요소는 클래스의 자바빈즈 스타일의 영속 프로퍼티를 선언한다."
+msgstr "version (옵션)"
-#: index.docbook:1120
-msgid "The <literal><version></literal> element is optional and indicates that the table contains versioned data. This is particularly useful if you plan to use <emphasis>long transactions</emphasis> (see below)."
+#. Tag: para
+#: basic_mapping.xml:1120
+#, no-c-format
+msgid ""
+"The <literal><version></literal> element is optional and indicates "
+"that the table contains versioned data. This is particularly useful if you "
+"plan to use <emphasis>long transactions</emphasis> (see below)."
msgstr ""
- "<![CDATA[<property\n"
- " name=\"propertyName\"\n"
- " column=\"column_name\"\n"
- " type=\"typename\"\n"
- " update=\"true|false\"\n"
- " insert=\"true|false\"\n"
- " formula=\"arbitrary SQL expression\"\n"
- " access=\"field|property|ClassName\"\n"
- " lazy=\"true|false\"\n"
- " unique=\"true|false\"\n"
- " not-null=\"true|false\"\n"
- " optimistic-lock=\"true|false\"\n"
- " generated=\"never|insert|always\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- " index=\"index_name\"\n"
- " unique_key=\"unique_key_id\"\n"
- " length=\"L\"\n"
- " precision=\"P\"\n"
- " scale=\"S\"\n"
- "/>]]>"
+"<literal><version></literal> 요소는 옵션이고 테이블이 버전화된 데이터"
+"를 포함한다는 것을 나타낸다. 이것은 당신이 <emphasis>긴 트랜잭션(long "
+"transaction)들</emphasis>을 사용할 계획이라면 특히 유용하다 (아래를 보라)."
-#: index.docbook:1136
+#. Tag: programlisting
+#: basic_mapping.xml:1136
+#, no-c-format
msgid ""
- "<![CDATA[<version\n"
- " column=\"version_column\"\n"
- " name=\"propertyName\"\n"
- " type=\"typename\"\n"
- " access=\"field|property|ClassName\"\n"
- " unsaved-value=\"null|negative|undefined\"\n"
- " generated=\"never|always\"\n"
- " insert=\"true|false\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- "/>]]>"
-msgstr "<literal>name</literal>: 첫 소문자로 시작하는 프로퍼티 이름."
+"<![CDATA[<version\n"
+" column=\"version_column\"\n"
+" name=\"propertyName\"\n"
+" type=\"typename\"\n"
+" access=\"field|property|ClassName\"\n"
+" unsaved-value=\"null|negative|undefined\"\n"
+" generated=\"never|always\"\n"
+" insert=\"true|false\"\n"
+" node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
+"/>]]>"
+msgstr ""
-#: index.docbook:1139
-msgid "<literal>column</literal> (optional - defaults to the property name): The name of the column holding the version number."
-msgstr "<literal>column</literal> (옵션 - 디폴트는 프로퍼티 이름): 매핑된 데이터베이스 테이블 컬럼의 이름. 이것은 또한 내부에 포함되는 <literal><column></literal> 요소(들)에 의해 지정될 수도 있다."
+#. Tag: para
+#: basic_mapping.xml:1139
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): The "
+"name of the column holding the version number."
+msgstr ""
+"<literal>column</literal> (옵션 - 디폴트는 프로퍼티 명): 버전 번호를 가진 컬"
+"럼의 이름."
-#: index.docbook:1145
-msgid "<literal>name</literal>: The name of a property of the persistent class."
-msgstr "<literal>type</literal> (옵션): Hibernate 타입을 나타내는 이름."
+#. Tag: para
+#: basic_mapping.xml:1145
+#, no-c-format
+msgid ""
+"<literal>name</literal>: The name of a property of the persistent class."
+msgstr "<literal>name</literal>: 영속 클래스의 프로퍼티 명."
-#: index.docbook:1150
-msgid "<literal>type</literal> (optional - defaults to <literal>integer</literal>): The type of the version number."
-msgstr "<literal>update, insert</literal> (옵션 - 디폴트는 <literal>true</literal>) : 매핑된 컬럼들이 <literal>UPDATE</literal>와/또는 <literal>INSERT</literal> 문장들속에 포함될 것임을 지정한다. 둘다 <literal>false</literal>로 설정하는 것은 그 값이 동일한 컬럼(들)로 매핑되는 어떤 다른 프로퍼티로부터 또는 트리거에 의해 또는 다른 어플리케이션으로부터 초기화 되는 순수하게 \"파생된(derived)\" 프로퍼티를 허용해준다."
+#. Tag: para
+#: basic_mapping.xml:1150
+#, no-c-format
+msgid ""
+"<literal>type</literal> (optional - defaults to <literal>integer</literal>): "
+"The type of the version number."
+msgstr ""
+"<literal>type</literal> (옵션 - 디폴트는 <literal>integer</literal>): 버전 번"
+"호의 타입."
-#: index.docbook:1162
-msgid "<literal>unsaved-value</literal> (optional - defaults to <literal>undefined</literal>): A version property value that indicates that an instance is newly instantiated (unsaved), distinguishing it from detached instances that were saved or loaded in a previous session. (<literal>undefined</literal> specifies that the identifier property value should be used.)"
-msgstr "<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): Hibernate가 프로퍼티 값에 접근하는데 사용할 방도."
+#. Tag: para
+#: basic_mapping.xml:1162
+#, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to <literal>undefined</"
+"literal>): A version property value that indicates that an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session. (<literal>undefined</literal> "
+"specifies that the identifier property value should be used.)"
+msgstr ""
+"<literal>unsaved-value</literal> (옵션 - 디폴트는 <literal>undefined</"
+"literal>): 이전 세션에서 저장되었거나 로드되었던 detached 인스턴스로부터 구별"
+"지어서, 인스턴스가 새로이 초기화됨(unsaved)을 나타내는 version 프로퍼티 값."
+"(<literal>undefined</literal>는 식별자 프로퍼티 값이 사용될 것임을 지정한다.)"
-#: index.docbook:1171
-msgid "<literal>generated</literal> (optional - defaults to <literal>never</literal>): Specifies that this version property value is actually generated by the database. See the discussion of <xref linkend=\"mapping-generated\"/>generated properties."
-msgstr "<literal>lazy</literal> (옵션 - 디폴트는 <literal>false</literal>): 인스턴스 변수가 처음으로 액세스 될 때 이 프로퍼티가 lazily하게 페치될 것임을 지정한다(빌드-시 바이트코드 수단을 필요로 한다)."
+#. Tag: para
+#: basic_mapping.xml:1171
+#, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): Specifies that this version property value is actually generated "
+"by the database. See the discussion of <link linkend=\"mapping-generated"
+"\">generated properties</link>."
+msgstr ""
+"<literal>generated</literal> (옵션 - 디폴트는 <literal>never</literal>): 이 "
+"version 프로퍼티 값이 데이터베이스에 의해 실제로 산출되는지를 지정한다. "
+"<xref linkend=\"mapping-generated\">산출되는 프로퍼티들</xref>에 관한 논의를 "
+"보라."
-#: index.docbook:1178
-msgid "<literal>insert</literal> (optional - defaults to <literal>true</literal>): Specifies whether the version column should be included in SQL insert statements. May be set to <literal>false</literal> if and only if the database column is defined with a default value of <literal>0</literal>."
-msgstr "<literal>unique</literal> (옵션): 컬럼들에 대한 유일 컨스트레인트의 DDL 생성을 가능하게 만든다. 또한 이것이 <literal>property-ref</literal>의 타켓이 되는 것을 허용해준다."
+#. Tag: para
+#: basic_mapping.xml:1178
+#, no-c-format
+msgid ""
+"<literal>insert</literal> (optional - defaults to <literal>true</literal>): "
+"Specifies whether the version column should be included in SQL insert "
+"statements. May be set to <literal>false</literal> if and only if the "
+"database column is defined with a default value of <literal>0</literal>."
+msgstr ""
+"<literal>insert</literal> (옵션 - 디폴트는 <literal>true</literal>): version "
+"컬럼이 SQL insert 문장들 속에 포함될 것인지 여부를 지정한다. 데이터베이스 컬"
+"럼이 디폴트 값 <literal>0</literal>으로 정의되는 경우에만 <literal>false</"
+"literal>로 설정될 수 있다."
-#: index.docbook:1188
-msgid "Version numbers may be of Hibernate type <literal>long</literal>, <literal>integer</literal>, <literal>short</literal>, <literal>timestamp</literal> or <literal>calendar</literal>."
-msgstr "<literal>not-null</literal> (옵션): 컬럼들에 대해 null 가능 컨스트레인트의 DDL 생성을 가능하게 만든다."
+#. Tag: para
+#: basic_mapping.xml:1188
+#, no-c-format
+msgid ""
+"Version numbers may be of Hibernate type <literal>long</literal>, "
+"<literal>integer</literal>, <literal>short</literal>, <literal>timestamp</"
+"literal> or <literal>calendar</literal>."
+msgstr ""
+"버전 번호들은 <literal>long</literal>, <literal>integer</literal>, "
+"<literal>short</literal>, <literal>timestamp</literal> 또는 "
+"<literal>calendar</literal> 타입일 수 있다."
-#: index.docbook:1193
-msgid "A version or timestamp property should never be null for a detached instance, so Hibernate will detect any instance with a null version or timestamp as transient, no matter what other <literal>unsaved-value</literal> strategies are specified. <emphasis>Declaring a nullable version or timestamp property is an easy way to avoid any problems with transitive reattachment in Hibernate, especially useful for people using assigned identifiers or composite keys!</emphasis>"
-msgstr "<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</literal>): 이 프로퍼티에 대한 업데이트들이 optimistic 잠금을 획득하는 것을 필요로 하거나 필요로 하지 않음을 지정한다. 달리말해, 이 프로퍼티가 dirty일 때 버전 증가가 발생할 경우인지를 결정한다."
+#. Tag: para
+#: basic_mapping.xml:1193
+#, no-c-format
+msgid ""
+"A version or timestamp property should never be null for a detached "
+"instance, so Hibernate will detect any instance with a null version or "
+"timestamp as transient, no matter what other <literal>unsaved-value</"
+"literal> strategies are specified. <emphasis>Declaring a nullable version or "
+"timestamp property is an easy way to avoid any problems with transitive "
+"reattachment in Hibernate, especially useful for people using assigned "
+"identifiers or composite keys!</emphasis>"
+msgstr ""
+"version 또는 timestamp 프로퍼티는 detached 인스턴스에 대해 결코 null일 수가 "
+"없어서, Hibernate는 다른 <literal>unsaved-value</literal> 방도들이 지정되는 "
+"것에 상관없이, null version이나 timestamp를 가진 임의의 인스턴스를 transient"
+"로서 검출할 것이다. <emphasis>null 허용되는 version 이나 property를 선언하는 "
+"것은 Hibernate에서 transitive reattachment에 대한 임의의 문제들을 피하는 쉬"
+"운 방법이고, assigned 식별자들이나 composite key들을 사용하는 사람들에게 특"
+"히 유용하다!</emphasis>"
-#: index.docbook:1204
+#. Tag: title
+#: basic_mapping.xml:1204
+#, no-c-format
msgid "timestamp (optional)"
-msgstr "<literal>generated</literal> (옵션 - 디폴트는 <literal>never</literal>): 이 프로퍼티 값이 데이터베이스에 의해 실제로 산출되는지를 지정한다. <xref linkend=\"mapping-generated\"/>산출되는 프로퍼티들에 대한 논의를 보라."
+msgstr "timestamp (옵션)"
-#: index.docbook:1206
-msgid "The optional <literal><timestamp></literal> element indicates that the table contains timestamped data. This is intended as an alternative to versioning. Timestamps are by nature a less safe implementation of optimistic locking. However, sometimes the application might use the timestamps in other ways."
-msgstr "<emphasis>typename</emphasis>은 다음일 수 있다:"
+#. Tag: para
+#: basic_mapping.xml:1206
+#, no-c-format
+msgid ""
+"The optional <literal><timestamp></literal> element indicates that the "
+"table contains timestamped data. This is intended as an alternative to "
+"versioning. Timestamps are by nature a less safe implementation of "
+"optimistic locking. However, sometimes the application might use the "
+"timestamps in other ways."
+msgstr ""
+"옵션 <literal><timestamp></literal> 요소는 테이블이 타임스탬프화 된 데"
+"이터를 포함함을 나타낸다. 이것은 버전화에 대한 대체물로서 고안되었다. "
+"Timestamp은 고유하게 optimistic 잠금에 대한 다소 안전한 구현이다. 하지만 때때"
+"로 어플리케이션은 다른 방법들로 timestamp들을 사용할 수도 있다."
-#: index.docbook:1222
+#. Tag: programlisting
+#: basic_mapping.xml:1222
+#, no-c-format
msgid ""
- "<![CDATA[<timestamp\n"
- " column=\"timestamp_column\"\n"
- " name=\"propertyName\"\n"
- " access=\"field|property|ClassName\"\n"
- " unsaved-value=\"null|undefined\"\n"
- " source=\"vm|db\"\n"
- " generated=\"never|always\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- "/>]]>"
-msgstr "Hibernate 기본 타입의 이름 (예를 들어. <literal>integer, string, character, date, timestamp, float, binary, serializable, object, blob</literal>)."
+"<![CDATA[<timestamp\n"
+" column=\"timestamp_column\"\n"
+" name=\"propertyName\"\n"
+" access=\"field|property|ClassName\"\n"
+" unsaved-value=\"null|undefined\"\n"
+" source=\"vm|db\"\n"
+" generated=\"never|always\"\n"
+" node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
+"/>]]>"
+msgstr ""
-#: index.docbook:1225
-msgid "<literal>column</literal> (optional - defaults to the property name): The name of a column holding the timestamp."
-msgstr "디폴트 기본 타입을 가진 Java 클래스의 이름(예를 들어. <literal>int, float, char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</literal>)."
+#. Tag: para
+#: basic_mapping.xml:1225
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): The "
+"name of a column holding the timestamp."
+msgstr ""
+"<literal>column</literal> (옵션 - 디폴트는 프로퍼티 명): 타임스탬프를 포함하"
+"는 컬럼 명."
-#: index.docbook:1231
-msgid "<literal>name</literal>: The name of a JavaBeans style property of Java type <literal>Date</literal> or <literal>Timestamp</literal> of the persistent class."
-msgstr "serializable Java 클래스의 이름."
+#. Tag: para
+#: basic_mapping.xml:1231
+#, no-c-format
+msgid ""
+"<literal>name</literal>: The name of a JavaBeans style property of Java type "
+"<literal>Date</literal> or <literal>Timestamp</literal> of the persistent "
+"class."
+msgstr ""
+"<literal>name</literal>: 영속 클래스에 대해 자바 <literal>Date</literal> 또"
+"는 <literal>Timestamp</literal> 타입을 가진 자바빈즈 스타일의 프로퍼티 이름."
-#: index.docbook:1244
-msgid "<literal>unsaved-value</literal> (optional - defaults to <literal>null</literal>): A version property value that indicates that an instance is newly instantiated (unsaved), distinguishing it from detached instances that were saved or loaded in a previous session. (<literal>undefined</literal> specifies that the identifier property value should be used.)"
-msgstr "만일 당신이 타입을 지정하지 않을 경우, Hibernate는 정확한 Hibernate 타입을 추정하기 위해 명명된 프로퍼티에 대해 reflection을 사용할 것이다. Hibernate는 그 순서에서 2,3,4 규칙들을 사용하여 프로퍼티 getter의 반환 클래스의 이름을 해석하려고 시도할 것이다. 하지만 이것은 항상 충분하지는 않다. 어떤 경우들에서, 당신은 여전히 <literal>type</literal> 속성을 필요로 할 것이다.(예를 들어, <literal>Hibernate.DATE</literal>와 <literal>Hibernate.TIMESTAMP</literal> 사이를 구별하기 위해, 또는 맞춤 타입을 지정하기 위해.)"
+#. Tag: para
+#: basic_mapping.xml:1244
+#, no-c-format
+msgid ""
+"<literal>unsaved-value</literal> (optional - defaults to <literal>null</"
+"literal>): A version property value that indicates that an instance is newly "
+"instantiated (unsaved), distinguishing it from detached instances that were "
+"saved or loaded in a previous session. (<literal>undefined</literal> "
+"specifies that the identifier property value should be used.)"
+msgstr ""
+"<literal>unsaved-value</literal> (옵션 - 디폴트는 <literal>null</literal>): "
+"이전 세션에서 저장되었거나 로드되었던 detached 인스턴스로부터 인스턴스를 구별"
+"지우는, 인스턴스가 새로이 초기화됨(unsaved)을 나타내는 version 프로퍼티 값."
+"(<literal>undefined</literal>는 식별자 프로퍼티 값이 사용될 것임을 지정한다.)"
-#: index.docbook:1253
-msgid "<literal>source</literal> (optional - defaults to <literal>vm</literal>): From where should Hibernate retrieve the timestamp value? From the database, or from the current JVM? Database-based timestamps incur an overhead because Hibernate must hit the database in order to determine the \"next value\", but will be safer for use in clustered environments. Note also, that not all <literal>Dialect</literal>s are known to support retrieving of the database's current timestamp, while others might be unsafe for usage in locking due to lack of precision (Oracle 8 for example)."
-msgstr "<literal>access</literal> 속성은 당신으로 하여금 Hibernate가 런타임 시에 프로퍼티에 액세스하는 방법을 제어하도록 해준다. 디폴트로 Hibernate는 프로퍼티 get/set 쌍을 호출할 것이다. 만일 당신이 <literal>access=\"field\"</literal>를 지정할 경우, Hibernate는 get/set 쌍을 피하고 reflection을 사용하여 직접 필드에 액세스 할 것이다. 당신은 <literal>org.hibernate.property.PropertyAccessor</literal> 인터페이스를 구현하는 클래스를 명명함으로써 프로퍼티 접근을 위한 당신 자신의 방도를 지정할 수도 있다."
+#. Tag: para
+#: basic_mapping.xml:1253
+#, no-c-format
+msgid ""
+"<literal>source</literal> (optional - defaults to <literal>vm</literal>): "
+"From where should Hibernate retrieve the timestamp value? From the database, "
+"or from the current JVM? Database-based timestamps incur an overhead because "
+"Hibernate must hit the database in order to determine the \"next value\", "
+"but will be safer for use in clustered environments. Note also, that not all "
+"<literal>Dialect</literal>s are known to support retrieving of the "
+"database's current timestamp, while others might be unsafe for usage in "
+"locking due to lack of precision (Oracle 8 for example)."
+msgstr ""
+"<literal>source</literal> (옵션 - 디폴트는 <literal>vm</literal>): Hibernate"
+"는 어디서 timestamp 값을 검색할 것인가? 데이터베이스로부터인가 현재의 JVM으로"
+"부터인가? 데이터베이스 기반의 timestamp들은 Hibernate가 \"다음 값\"을 결정하"
+"기 위해 데이터베이스에 접속해야 하기 때문에 오버헤드를 초래하지만, 클러스터링"
+"된 환경들에서의 용도로 보다 더 안전할 것이다. 또한 모든 <literal>Dialect</"
+"literal>들이 데이터베이스의 현재의 timestamp에 대한 검색을 지원하는 것으로 알"
+"려져 있지 않지만, 다른 <literal>Dialect</literal>들은 정밀도 결핍 때문에 잠금"
+"에 있어 사용이 안전하지 않을 수 있음을 노트하라(예를 들면 오라클 8)."
-#: index.docbook:1265
-msgid "<literal>generated</literal> (optional - defaults to <literal>never</literal>): Specifies that this timestamp property value is actually generated by the database. See the discussion of <xref linkend=\"mapping-generated\"/>generated properties."
-msgstr "특별히 강력한 특징은 파생된 플로퍼티들이다. 이들 프로퍼티들은 정의상 읽기 전용이고, 그 프로퍼티 값은 로드 시에 계산된다. 당신은 그 계산을 SQL 표현식으로 선언하고, 이것은 인스턴스를 로드시키는 SQL 질의 내의 <literal>SELECT</literal> 절 서브질의로 번역된다:"
+#. Tag: para
+#: basic_mapping.xml:1265
+#, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): Specifies that this timestamp property value is actually "
+"generated by the database. See the discussion of <link linkend=\"mapping-"
+"generated\">generated properties</link>."
+msgstr ""
+"<literal>generated</literal> (옵션 - 디폴트는 <literal>never</literal>): 이 "
+"timestamp 프로퍼티 값이 데이터베이스에 의해 실제로 생성됨을 지정한다. <xref "
+"linkend=\"mapping-generated\">산출되는 프로퍼티들</xref>에 대한 논의들 보라."
-#: index.docbook:1274
-msgid "Note that <literal><timestamp></literal> is equivalent to <literal><version type=\"timestamp\"></literal>. And <literal><timestamp source=\"db\"></literal> is equivalent to <literal><version type=\"dbtimestamp\"></literal>"
+#. Tag: para
+#: basic_mapping.xml:1274
+#, no-c-format
+msgid ""
+"Note that <literal><timestamp></literal> is equivalent to <literal><"
+"version type=\"timestamp\"></literal>. And <literal><timestamp source="
+"\"db\"></literal> is equivalent to <literal><version type=\"dbtimestamp"
+"\"></literal>"
msgstr ""
- "<![CDATA[\n"
- "<property name=\"totalPrice\"\n"
- " formula=\"( SELECT SUM (li.quantity*p.price) FROM LineItem li, Product p\n"
- " WHERE li.productId = p.productId\n"
- " AND li.customerId = customerId\n"
- " AND li.orderNumber = orderNumber )\"/>]]>"
+"<literal><timestamp></literal>는 <literal><version type=\"timestamp"
+"\"></literal>과 같음을 노트하라. 그리고 <literal><timestamp use-db="
+"\"true\"></literal>는 <literal><version type=\"dbtimestamp\"></"
+"literal>과 같다"
-#: index.docbook:1284
+#. Tag: title
+#: basic_mapping.xml:1284
+#, no-c-format
msgid "property"
-msgstr "당신은 특정 컬럼(주어진 예제에서는 <literal>customerId</literal>)에 대해 alias를 선언하지 않음으로써 엔티티들 자신의 테이블을 참조할 수 있음을 노트하라. 또한 당신은 만일 당신이 그 속성을 사용하고 싶지 않을 경우에 내포된 <literal><formula></literal> 매핑 요소를 사용할 수 있음을 노트하라."
+msgstr "프로퍼티"
-#: index.docbook:1286
-msgid "The <literal><property></literal> element declares a persistent, JavaBean style property of the class."
-msgstr "many-to-one"
+#. Tag: para
+#: basic_mapping.xml:1286
+#, no-c-format
+msgid ""
+"The <literal><property></literal> element declares a persistent, "
+"JavaBean style property of the class."
+msgstr ""
+"<literal><property></literal> 요소는 클래스의 자바빈즈 스타일의 영속 프"
+"로퍼티를 선언한다."
-#: index.docbook:1308
+#. Tag: programlisting
+#: basic_mapping.xml:1308
+#, no-c-format
msgid ""
- "<![CDATA[<property\n"
- " name=\"propertyName\"\n"
- " column=\"column_name\"\n"
- " type=\"typename\"\n"
- " update=\"true|false\"\n"
- " insert=\"true|false\"\n"
- " formula=\"arbitrary SQL expression\"\n"
- " access=\"field|property|ClassName\"\n"
- " lazy=\"true|false\"\n"
- " unique=\"true|false\"\n"
- " not-null=\"true|false\"\n"
- " optimistic-lock=\"true|false\"\n"
- " generated=\"never|insert|always\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- " index=\"index_name\"\n"
- " unique_key=\"unique_key_id\"\n"
- " length=\"L\"\n"
- " precision=\"P\"\n"
- " scale=\"S\"\n"
- "/>]]>"
-msgstr "또 다른 영속 클래스에 대한 정규 연관관계는 <literal>many-to-one</literal> 요소를 사용하여 선언된다. 관계형 모형은 many-to-one 연관관계이다.: 하나의 테이블 내에 있는 foreign 키는 대상 테이블의 프라이머리 키 컬럼(들)을 참조하고 있다."
+"<![CDATA[<property\n"
+" name=\"propertyName\"\n"
+" column=\"column_name\"\n"
+" type=\"typename\"\n"
+" update=\"true|false\"\n"
+" insert=\"true|false\"\n"
+" formula=\"arbitrary SQL expression\"\n"
+" access=\"field|property|ClassName\"\n"
+" lazy=\"true|false\"\n"
+" unique=\"true|false\"\n"
+" not-null=\"true|false\"\n"
+" optimistic-lock=\"true|false\"\n"
+" generated=\"never|insert|always\"\n"
+" node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
+" index=\"index_name\"\n"
+" unique_key=\"unique_key_id\"\n"
+" length=\"L\"\n"
+" precision=\"P\"\n"
+" scale=\"S\"\n"
+"/>]]>"
+msgstr ""
-#: index.docbook:1311
-msgid "<literal>name</literal>: the name of the property, with an initial lowercase letter."
+#. Tag: para
+#: basic_mapping.xml:1311
+#, no-c-format
+msgid ""
+"<literal>name</literal>: the name of the property, with an initial lowercase "
+"letter."
+msgstr "<literal>name</literal>: 첫 소문자로 시작하는 프로퍼티 이름."
+
+#. Tag: para
+#: basic_mapping.xml:1317
+#, no-c-format
+msgid ""
+"<literal>column</literal> (optional - defaults to the property name): the "
+"name of the mapped database table column. This may also be specified by "
+"nested <literal><column></literal> element(s)."
msgstr ""
- "<![CDATA[<many-to-one\n"
- " name=\"propertyName\"\n"
- " column=\"column_name\"\n"
- " class=\"ClassName\"\n"
- " cascade=\"cascade_style\"\n"
- " fetch=\"join|select\"\n"
- " update=\"true|false\"\n"
- " insert=\"true|false\"\n"
- " property-ref=\"propertyNameFromAssociatedClass\"\n"
- " access=\"field|property|ClassName\"\n"
- " unique=\"true|false\"\n"
- " not-null=\"true|false\"\n"
- " optimistic-lock=\"true|false\"\n"
- " lazy=\"proxy|no-proxy|false\"\n"
- " not-found=\"ignore|exception\"\n"
- " entity-name=\"EntityName\"\n"
- " formula=\"arbitrary SQL expression\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- " embed-xml=\"true|false\"\n"
- " index=\"index_name\"\n"
- " unique_key=\"unique_key_id\"\n"
- " foreign-key=\"foreign_key_name\"\n"
- "/>]]>"
+"<literal>column</literal> (옵션 - 디폴트는 프로퍼티 이름): 매핑된 데이터베이"
+"스 테이블 컬럼의 이름. 이것은 또한 내부에 포함되는 <literal><column></"
+"literal> 요소(들)에 의해 지정될 수도 있다."
-#: index.docbook:1317
-msgid "<literal>column</literal> (optional - defaults to the property name): the name of the mapped database table column. This may also be specified by nested <literal><column></literal> element(s)."
-msgstr "<literal>name</literal>: 프로퍼티의 이름."
+#. Tag: para
+#: basic_mapping.xml:1324
+#, no-c-format
+msgid ""
+"<literal>type</literal> (optional): a name that indicates the Hibernate type."
+msgstr "<literal>type</literal> (옵션): Hibernate 타입을 나타내는 이름."
-#: index.docbook:1324
-msgid "<literal>type</literal> (optional): a name that indicates the Hibernate type."
-msgstr "<literal>column</literal> (옵션): foreign key 컬럼의 이름. 이것은 또한 내포된 <literal><column></literal> 요소(들)에 의해 지정된다."
+#. Tag: para
+#: basic_mapping.xml:1329
+#, no-c-format
+msgid ""
+"<literal>update, insert</literal> (optional - defaults to <literal>true</"
+"literal>) : specifies that the mapped columns should be included in SQL "
+"<literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. "
+"Setting both to <literal>false</literal> allows a pure \"derived\" property "
+"whose value is initialized from some other property that maps to the same "
+"colum(s) or by a trigger or other application."
+msgstr ""
+"<literal>update, insert</literal> (옵션 - 디폴트는 <literal>true</"
+"literal>) : 매핑된 컬럼들이 <literal>UPDATE</literal>와/또는 "
+"<literal>INSERT</literal> 문장들속에 포함될 것임을 지정한다. 둘다 "
+"<literal>false</literal>로 설정하는 것은 그 값이 동일한 컬럼(들)로 매핑되는 "
+"어떤 다른 프로퍼티로부터 또는 트리거에 의해 또는 다른 어플리케이션으로부터 초"
+"기화 되는 순수하게 \"파생된(derived)\" 프로퍼티를 허용해준다."
-#: index.docbook:1329
-msgid "<literal>update, insert</literal> (optional - defaults to <literal>true</literal>) : specifies that the mapped columns should be included in SQL <literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. Setting both to <literal>false</literal> allows a pure \"derived\" property whose value is initialized from some other property that maps to the same colum(s) or by a trigger or other application."
-msgstr "<literal>class</literal> (옵션 - 디폴트는 reflection에 의해 결정된 프로퍼티 타입): 연관된 클래스의 이름."
+#. Tag: para
+#: basic_mapping.xml:1338
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL expression that defines the "
+"value for a <emphasis>computed</emphasis> property. Computed properties do "
+"not have a column mapping of their own."
+msgstr ""
+"<literal>formula</literal> (옵션): <emphasis>계산되는</emphasis> 프로퍼티에 "
+"대해 값을 정의하는 SQL 표현식. 계산되는 프로퍼티들은 그것들 자신에 대한 컬럼 "
+"매핑을 갖지 않는다."
-#: index.docbook:1338
-msgid "<literal>formula</literal> (optional): an SQL expression that defines the value for a <emphasis>computed</emphasis> property. Computed properties do not have a column mapping of their own."
-msgstr "<literal>cascade</literal> (옵션): 어느 오퍼레이션들이 부모 객체로부터 연관된 객체로 케스케이드 될 것인지를 지정한다."
+#. Tag: para
+#: basic_mapping.xml:1351
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>false</literal>): "
+"Specifies that this property should be fetched lazily when the instance "
+"variable is first accessed (requires build-time bytecode instrumentation)."
+msgstr ""
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>false</literal>): 인스턴스 "
+"변수가 처음으로 액세스 될 때 이 프로퍼티가 lazily하게 페치될 것임을 지정한다"
+"(빌드-시 바이트코드 수단을 필요로 한다)."
-#: index.docbook:1351
-msgid "<literal>lazy</literal> (optional - defaults to <literal>false</literal>): Specifies that this property should be fetched lazily when the instance variable is first accessed (requires build-time bytecode instrumentation)."
-msgstr "<literal>update, insert</literal> (옵션 - 디폴트는 <literal>true</literal>) 매핑된 컬럼들이 SQL <literal>UPDATE</literal>와/또는 <literal>INSERT</literal> 문장들 속에 포함될 것인지를 지정한다. 둘다 <literal>false</literal>로 설정하는 것은 그 값이 동일한 컬럼(들)로 매핑시키는 어떤 다른 컬럼들로부터 초기화 되거나 트리거나 다른 어플리케이션에 의해 초기화되는 단순한 \"파생된\" 연관관계 값을 허용한다."
+#. Tag: para
+#: basic_mapping.xml:1358
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): Enable the DDL generation of a unique "
+"constraint for the columns. Also, allow this to be the target of a "
+"<literal>property-ref</literal>."
+msgstr ""
+"<literal>unique</literal> (옵션): 컬럼들에 대한 유일 컨스트레인트의 DDL 생성"
+"을 가능하게 만든다. 또한 이것이 <literal>property-ref</literal>의 타켓이 되"
+"는 것을 허용해준다."
-#: index.docbook:1358
-msgid "<literal>unique</literal> (optional): Enable the DDL generation of a unique constraint for the columns. Also, allow this to be the target of a <literal>property-ref</literal>."
-msgstr "<literal>property-ref</literal>: (옵션) 이 foreign key에 조인되는 연관된 클래스의 프로퍼티 이름. 지정되지 않을 경우, 연관 클래스의 프라이머리 키가 사용된다."
+#. Tag: para
+#: basic_mapping.xml:1365
+#, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): Enable the DDL generation of a "
+"nullability constraint for the columns."
+msgstr ""
+"<literal>not-null</literal> (옵션): 컬럼들에 대해 null 가능 컨스트레인트의 "
+"DDL 생성을 가능하게 만든다."
-#: index.docbook:1365
-msgid "<literal>not-null</literal> (optional): Enable the DDL generation of a nullability constraint for the columns."
-msgstr "<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): Hibernate가 프로퍼티 값에 접근하는데 사용할 방도."
+#. Tag: para
+#: basic_mapping.xml:1371
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): Specifies that updates to this property do or do not require "
+"acquisition of the optimistic lock. In other words, determines if a version "
+"increment should occur when this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</"
+"literal>): 이 프로퍼티에 대한 업데이트들이 optimistic 잠금을 획득하는 것을 필"
+"요로 하거나 필요로 하지 않음을 지정한다. 달리말해, 이 프로퍼티가 dirty일 때 "
+"버전 증가가 발생할 경우인지를 결정한다."
-#: index.docbook:1371
-msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): Specifies that updates to this property do or do not require acquisition of the optimistic lock. In other words, determines if a version increment should occur when this property is dirty."
-msgstr "<literal>unique</literal> (옵션): foreign-key 컬럼을 위한 유일 컨스트레인트의 DDL 생성을 가능하도록 해준다. 또한 이것이 property-ref의 대상이 되는 것을 허용해준다. 이것은 연관 다중성(association multiplicity)을 효율적으로 일 대 일로 만든다."
+#. Tag: para
+#: basic_mapping.xml:1379
+#, no-c-format
+msgid ""
+"<literal>generated</literal> (optional - defaults to <literal>never</"
+"literal>): Specifies that this property value is actually generated by the "
+"database. See the discussion of <link linkend=\"mapping-generated"
+"\">generated properties</link>."
+msgstr ""
+"<literal>generated</literal> (옵션 - 디폴트는 <literal>never</literal>): 이 "
+"프로퍼티 값이 데이터베이스에 의해 실제로 산출되는지를 지정한다. <xref "
+"linkend=\"mapping-generated\">산출되는 프로퍼티들</xref>에 대한 논의를 보라."
-#: index.docbook:1379
-msgid "<literal>generated</literal> (optional - defaults to <literal>never</literal>): Specifies that this property value is actually generated by the database. See the discussion of <xref linkend=\"mapping-generated\"/>generated properties."
-msgstr "<literal>not-null</literal> (옵션): foreign key 컬럼들을 위한 null 가능한 컨스트레인트의 DDL 생성을 가능하도록 해준다."
-
-#: index.docbook:1388
+#. Tag: para
+#: basic_mapping.xml:1388
+#, no-c-format
msgid "<emphasis>typename</emphasis> could be:"
-msgstr "<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</literal>): 이 프로퍼티에 대한 업데이트들이 optimistic lock의 획득을 필요로 하는지 아닌지 여부를 지정한다. 달리 말해 이 프로퍼티가 dirty일 때 version 증가가 발생해야 할 경우인지를 결정한다."
+msgstr "<emphasis>typename</emphasis>은 다음일 수 있다:"
-#: index.docbook:1394
-msgid "The name of a Hibernate basic type (eg. <literal>integer, string, character, date, timestamp, float, binary, serializable, object, blob</literal>)."
-msgstr "<literal>lazy</literal> (옵션 - 디폴트는 <literal>proxy</literal>): 디폴트로, 단일 포인트 연관들이 프락시된다. <literal>lazy=\"no-proxy\"</literal>는 인스턴스 변수가 처음으로 접근될 때 그 프로퍼티가 lazily 페치될 것임을 지정한다(빌드-시 바이트코드 수단을 필요로 한다). <literal>lazy=\"false\"</literal>는 그 연관이 항상 eagerly 페치될 것임을 지정한다."
+#. Tag: para
+#: basic_mapping.xml:1394
+#, no-c-format
+msgid ""
+"The name of a Hibernate basic type (eg. <literal>integer, string, character, "
+"date, timestamp, float, binary, serializable, object, blob</literal>)."
+msgstr ""
+"Hibernate 기본 타입의 이름 (예를 들어. <literal>integer, string, character, "
+"date, timestamp, float, binary, serializable, object, blob</literal>)."
-#: index.docbook:1400
-msgid "The name of a Java class with a default basic type (eg. <literal>int, float, char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</literal>)."
-msgstr "<literal>not-found</literal> (옵션 - 디폴트는 <literal>exception</literal>): 누락된 행들을 참조하는 foreign key들이 어떻게 처리될 것인지를 지정한다: <literal>ignore</literal>는 한 개의 누락된 행을 한 개의 null 연관으로 취급할 것이다."
+#. Tag: para
+#: basic_mapping.xml:1400
+#, no-c-format
+msgid ""
+"The name of a Java class with a default basic type (eg. <literal>int, float, "
+"char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</"
+"literal>)."
+msgstr ""
+"디폴트 기본 타입을 가진 Java 클래스의 이름(예를 들어. <literal>int, float, "
+"char, java.lang.String, java.util.Date, java.lang.Integer, java.sql.Clob</"
+"literal>)."
-#: index.docbook:1406
+#. Tag: para
+#: basic_mapping.xml:1406
+#, no-c-format
msgid "The name of a serializable Java class."
-msgstr "<literal>entity-name</literal> (옵션): 연관된 클래스의 엔티티 이름."
+msgstr "serializable Java 클래스의 이름."
-#: index.docbook:1411
-msgid "The class name of a custom type (eg. <literal>com.illflow.type.MyCustomType</literal>)."
-msgstr "<literal>formula</literal> (옵션): <emphasis>계산된</emphasis> foreign key에 대한 값을 정의하는 SQL 표현식."
+#. Tag: para
+#: basic_mapping.xml:1411
+#, no-c-format
+msgid ""
+"The class name of a custom type (eg. <literal>com.illflow.type.MyCustomType</"
+"literal>)."
+msgstr ""
+"맞춤 타입의 클래스 이름(예를 들어. <literal>com.illflow.type.MyCustomType</"
+"literal>)."
-#: index.docbook:1417
-msgid "If you do not specify a type, Hibernate will use reflection upon the named property to take a guess at the correct Hibernate type. Hibernate will try to interpret the name of the return class of the property getter using rules 2, 3, 4 in that order. However, this is not always enough. In certain cases you will still need the <literal>type</literal> attribute. (For example, to distinguish between <literal>Hibernate.DATE</literal> and <literal>Hibernate.TIMESTAMP</literal>, or to specify a custom type.)"
-msgstr "<literal>cascade</literal> 속성 값을 <literal>none</literal> 아닌 어떤 의미있는 다른 값으로 설정하는 것은 어떤 오퍼레이션들을 연관된 객체에게 보급할 것이다. 유의미한 값들은 Hibernate의 기본 오퍼레이션들의 이름들, 즉 <literal>persist, merge, delete, save-update, evict, replicate, lock, refresh</literal> 뿐만 아니라 특별한 값들, 즉 <literal>delete-orphan</literal>과 <literal>all</literal> 그리고 오퍼레이션 이름들의 쉼표 분리된 조합들, 예를 들면 <literal>cascade=\"persist,merge,evict\"</literal> 또는 <literal>cascade=\"all,delete-orphan\"</literal>이다. 전체 설명은 <xref linkend=\"objectstate-transitive\"/>를 보라. 단일값 연관들(many-to-one 연관과 one-to-one 연관)은 orphan delete를 지원하지 않음을 노트하라."
+#. Tag: para
+#: basic_mapping.xml:1417
+#, no-c-format
+msgid ""
+"If you do not specify a type, Hibernate will use reflection upon the named "
+"property to take a guess at the correct Hibernate type. Hibernate will try "
+"to interpret the name of the return class of the property getter using rules "
+"2, 3, 4 in that order. However, this is not always enough. In certain cases "
+"you will still need the <literal>type</literal> attribute. (For example, to "
+"distinguish between <literal>Hibernate.DATE</literal> and <literal>Hibernate."
+"TIMESTAMP</literal>, or to specify a custom type.)"
+msgstr ""
+"만일 당신이 타입을 지정하지 않을 경우, Hibernate는 정확한 Hibernate 타입을 추"
+"정하기 위해 명명된 프로퍼티에 대해 reflection을 사용할 것이다. Hibernate는 "
+"그 순서에서 2,3,4 규칙들을 사용하여 프로퍼티 getter의 반환 클래스의 이름을 해"
+"석하려고 시도할 것이다. 하지만 이것은 항상 충분하지는 않다. 어떤 경우들에서, "
+"당신은 여전히 <literal>type</literal> 속성을 필요로 할 것이다.(예를 들어, "
+"<literal>Hibernate.DATE</literal>와 <literal>Hibernate.TIMESTAMP</literal> 사"
+"이를 구별하기 위해, 또는 맞춤 타입을 지정하기 위해.)"
-#: index.docbook:1427
-msgid "The <literal>access</literal> attribute lets you control how Hibernate will access the property at runtime. By default, Hibernate will call the property get/set pair. If you specify <literal>access=\"field\"</literal>, Hibernate will bypass the get/set pair and access the field directly, using reflection. You may specify your own strategy for property access by naming a class that implements the interface <literal>org.hibernate.property.PropertyAccessor</literal>."
-msgstr "일반적인 <literal>many-to-one</literal> 선언은 다음과 같이 간단하게 보여진다:"
+#. Tag: para
+#: basic_mapping.xml:1427
+#, no-c-format
+msgid ""
+"The <literal>access</literal> attribute lets you control how Hibernate will "
+"access the property at runtime. By default, Hibernate will call the property "
+"get/set pair. If you specify <literal>access=\"field\"</literal>, Hibernate "
+"will bypass the get/set pair and access the field directly, using "
+"reflection. You may specify your own strategy for property access by naming "
+"a class that implements the interface <literal>org.hibernate.property."
+"PropertyAccessor</literal>."
+msgstr ""
+"<literal>access</literal> 속성은 당신으로 하여금 Hibernate가 런타임 시에 프로"
+"퍼티에 액세스하는 방법을 제어하도록 해준다. 디폴트로 Hibernate는 프로퍼티 "
+"get/set 쌍을 호출할 것이다. 만일 당신이 <literal>access=\"field\"</literal>"
+"를 지정할 경우, Hibernate는 get/set 쌍을 피하고 reflection을 사용하여 직접 필"
+"드에 액세스 할 것이다. 당신은 <literal>org.hibernate.property."
+"PropertyAccessor</literal> 인터페이스를 구현하는 클래스를 명명함으로써 프로퍼"
+"티 접근을 위한 당신 자신의 방도를 지정할 수도 있다."
-#: index.docbook:1436
-msgid "An especially powerful feature are derived properties. These properties are by definition read-only, the property value is computed at load time. You declare the computation as a SQL expression, this translates to a <literal>SELECT</literal> clause subquery in the SQL query that loads an instance:"
-msgstr "<![CDATA[<many-to-one name=\"product\" class=\"Product\" column=\"PRODUCT_ID\"/>]]>"
+#. Tag: para
+#: basic_mapping.xml:1436
+#, no-c-format
+msgid ""
+"An especially powerful feature are derived properties. These properties are "
+"by definition read-only, the property value is computed at load time. You "
+"declare the computation as a SQL expression, this translates to a "
+"<literal>SELECT</literal> clause subquery in the SQL query that loads an "
+"instance:"
+msgstr ""
+"특별히 강력한 특징은 파생된 플로퍼티들이다. 이들 프로퍼티들은 정의상 읽기 전"
+"용이고, 그 프로퍼티 값은 로드 시에 계산된다. 당신은 그 계산을 SQL 표현식으로 "
+"선언하고, 이것은 인스턴스를 로드시키는 SQL 질의 내의 <literal>SELECT</"
+"literal> 절 서브질의로 번역된다:"
-#: index.docbook:1443
+#. Tag: programlisting
+#: basic_mapping.xml:1443
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "<property name=\"totalPrice\"\n"
- " formula=\"( SELECT SUM (li.quantity*p.price) FROM LineItem li, Product p\n"
- " WHERE li.productId = p.productId\n"
- " AND li.customerId = customerId\n"
- " AND li.orderNumber = orderNumber )\"/>]]>"
-msgstr "<literal>property-ref</literal> 속성은 오직 foreign key가 프라이머리 키가 아닌 연관된 테이블의 유일 키를 참조하는 리거시 데이터를 매핑하는데만 사용된다. 이것은 꼴사나운 관계형 모형이다. 예를 들어, <literal>Product</literal> 클래스가 프라이머리 키를 아닌, 유일한 시리얼 번호를 갖는다고 가정하자.(<literal>unique</literal> 속성은 SchemaExport 도구로 Hibernate의 DDL 생성을 제어한다.)"
+"<![CDATA[\n"
+"<property name=\"totalPrice\"\n"
+" formula=\"( SELECT SUM (li.quantity*p.price) FROM LineItem li, Product "
+"p\n"
+" WHERE li.productId = p.productId\n"
+" AND li.customerId = customerId\n"
+" AND li.orderNumber = orderNumber )\"/>]]>"
+msgstr ""
-#: index.docbook:1445
-msgid "Note that you can reference the entities own table by not declaring an alias on a particular column (<literal>customerId</literal> in the given example). Also note that you can use the nested <literal><formula></literal> mapping element if you don't like to use the attribute."
-msgstr "<![CDATA[<property name=\"serialNumber\" unique=\"true\" type=\"string\" column=\"SERIAL_NUMBER\"/>]]>"
+#. Tag: para
+#: basic_mapping.xml:1445
+#, no-c-format
+msgid ""
+"Note that you can reference the entities own table by not declaring an alias "
+"on a particular column (<literal>customerId</literal> in the given example). "
+"Also note that you can use the nested <literal><formula></literal> "
+"mapping element if you don't like to use the attribute."
+msgstr ""
+"당신은 특정 컬럼(주어진 예제에서는 <literal>customerId</literal>)에 대해 "
+"alias를 선언하지 않음으로써 엔티티들 자신의 테이블을 참조할 수 있음을 노트하"
+"라. 또한 당신은 만일 당신이 그 속성을 사용하고 싶지 않을 경우에 내포된 "
+"<literal><formula></literal> 매핑 요소를 사용할 수 있음을 노트하라."
-#: index.docbook:1455
+#. Tag: title
+#: basic_mapping.xml:1455
+#, no-c-format
msgid "many-to-one"
-msgstr "그런 다음 <literal>OrderItem</literal>에 대한 매핑은 다음을 사용할 것이다:"
+msgstr "many-to-one"
-#: index.docbook:1457
-msgid "An ordinary association to another persistent class is declared using a <literal>many-to-one</literal> element. The relational model is a many-to-one association: a foreign key in one table is referencing the primary key column(s) of the target table."
-msgstr "<![CDATA[<many-to-one name=\"product\" property-ref=\"serialNumber\" column=\"PRODUCT_SERIAL_NUMBER\"/>]]>"
+#. Tag: para
+#: basic_mapping.xml:1457
+#, no-c-format
+msgid ""
+"An ordinary association to another persistent class is declared using a "
+"<literal>many-to-one</literal> element. The relational model is a many-to-"
+"one association: a foreign key in one table is referencing the primary key "
+"column(s) of the target table."
+msgstr ""
+"또 다른 영속 클래스에 대한 정규 연관관계는 <literal>many-to-one</literal> 요"
+"소를 사용하여 선언된다. 관계형 모형은 many-to-one 연관관계이다.: 하나의 테이"
+"블 내에 있는 foreign 키는 대상 테이블의 프라이머리 키 컬럼(들)을 참조하고 있"
+"다."
-#: index.docbook:1485
+#. Tag: programlisting
+#: basic_mapping.xml:1485
+#, no-c-format
msgid ""
- "<![CDATA[<many-to-one\n"
- " name=\"propertyName\"\n"
- " column=\"column_name\"\n"
- " class=\"ClassName\"\n"
- " cascade=\"cascade_style\"\n"
- " fetch=\"join|select\"\n"
- " update=\"true|false\"\n"
- " insert=\"true|false\"\n"
- " property-ref=\"propertyNameFromAssociatedClass\"\n"
- " access=\"field|property|ClassName\"\n"
- " unique=\"true|false\"\n"
- " not-null=\"true|false\"\n"
- " optimistic-lock=\"true|false\"\n"
- " lazy=\"proxy|no-proxy|false\"\n"
- " not-found=\"ignore|exception\"\n"
- " entity-name=\"EntityName\"\n"
- " formula=\"arbitrary SQL expression\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- " embed-xml=\"true|false\"\n"
- " index=\"index_name\"\n"
- " unique_key=\"unique_key_id\"\n"
- " foreign-key=\"foreign_key_name\"\n"
- "/>]]>"
-msgstr "하지만 이것은 확실히 권장되지 않는다."
+"<![CDATA[<many-to-one\n"
+" name=\"propertyName\"\n"
+" column=\"column_name\"\n"
+" class=\"ClassName\"\n"
+" cascade=\"cascade_style\"\n"
+" fetch=\"join|select\"\n"
+" update=\"true|false\"\n"
+" insert=\"true|false\"\n"
+" property-ref=\"propertyNameFromAssociatedClass\"\n"
+" access=\"field|property|ClassName\"\n"
+" unique=\"true|false\"\n"
+" not-null=\"true|false\"\n"
+" optimistic-lock=\"true|false\"\n"
+" lazy=\"proxy|no-proxy|false\"\n"
+" not-found=\"ignore|exception\"\n"
+" entity-name=\"EntityName\"\n"
+" formula=\"arbitrary SQL expression\"\n"
+" node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
+" embed-xml=\"true|false\"\n"
+" index=\"index_name\"\n"
+" unique_key=\"unique_key_id\"\n"
+" foreign-key=\"foreign_key_name\"\n"
+"/>]]>"
+msgstr ""
-#: index.docbook:1488, index.docbook:1669, index.docbook:1855
+#. Tag: para
+#: basic_mapping.xml:1488 basic_mapping.xml:1669 basic_mapping.xml:1855
+#, no-c-format
msgid "<literal>name</literal>: The name of the property."
-msgstr "만일 참조된 유일 키가 연관된 엔티티의 여러 프로퍼티들을 포함할 경우, 당신은 명명된 <literal><properties></literal> 요소 내부에 참조된 프로퍼티들을 매핑할 것이다."
+msgstr "<literal>name</literal>: 프로퍼티의 이름."
-#: index.docbook:1493, index.docbook:2284
-msgid "<literal>column</literal> (optional): The name of the foreign key column. This may also be specified by nested <literal><column></literal> element(s)."
-msgstr "만일 참조된 유일키가 컴포넌트의 프로퍼티일 경우, 당신은 하나의 프로퍼티 경로를 지정할 수 있다:"
+#. Tag: para
+#: basic_mapping.xml:1493 basic_mapping.xml:2284
+#, fuzzy, no-c-format
+msgid ""
+"<literal>column</literal> (optional): The name of the foreign key column. "
+"This may also be specified by nested <literal><column></literal> "
+"element(s)."
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>column</literal> (옵션): foreign key 컬럼의 이름. 이것은 또한 내포"
+"된 <literal><column></literal> 요소(들)에 의해 지정된다.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>column</literal> (옵션): foreign key 컬럼의 이름. 이것은 또한 내포"
+"된 <literal><column></literal> 요소(들)에 의해 지정될 수 있다."
-#: index.docbook:1500, index.docbook:1674
-msgid "<literal>class</literal> (optional - defaults to the property type determined by reflection): The name of the associated class."
-msgstr "<![CDATA[<many-to-one name=\"owner\" property-ref=\"identity.ssn\" column=\"OWNER_SSN\"/>]]>"
+#. Tag: para
+#: basic_mapping.xml:1500 basic_mapping.xml:1674
+#, no-c-format
+msgid ""
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): The name of the associated class."
+msgstr ""
+"<literal>class</literal> (옵션 - 디폴트는 reflection에 의해 결정된 프로퍼티 "
+"타입): 연관된 클래스의 이름."
-#: index.docbook:1506
-msgid "<literal>cascade</literal> (optional): Specifies which operations should be cascaded from the parent object to the associated object."
-msgstr "one-to-one"
+#. Tag: para
+#: basic_mapping.xml:1506
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional): Specifies which operations should be "
+"cascaded from the parent object to the associated object."
+msgstr ""
+"<literal>cascade</literal> (옵션): 어느 오퍼레이션들이 부모 객체로부터 연관"
+"된 객체로 케스케이드 될 것인지를 지정한다."
-#: index.docbook:1512, index.docbook:1695
-msgid "<literal>fetch</literal> (optional - defaults to <literal>select</literal>): Chooses between outer-join fetching or sequential select fetching."
-msgstr "또 다른 영속 클래스에 대한 one-to-one 연관관계는 <literal>one-to-one</literal> 요소를 사용하여 선언된다."
+#. Tag: para
+#: basic_mapping.xml:1512 basic_mapping.xml:1695
+#, fuzzy, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>select</literal>): "
+"Chooses between outer-join fetching or sequential select fetching."
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>fetch</literal> (옵션 - 디폴트는 <literal>select</literal>): outer-"
+"join 페칭 또는 sequential select 페칭 사이에서 선택하라.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>fetch</literal> (옵션 - 디폴트는 <literal>select</literal>): outer-"
+"join 페칭 또는 순차적인 select 페칭 중에서 선택하라."
-#: index.docbook:1518
-msgid "<literal>update, insert</literal> (optional - defaults to <literal>true</literal>) specifies that the mapped columns should be included in SQL <literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. Setting both to <literal>false</literal> allows a pure \"derived\" association whose value is initialized from some other property that maps to the same colum(s) or by a trigger or other application."
+#. Tag: para
+#: basic_mapping.xml:1518
+#, no-c-format
+msgid ""
+"<literal>update, insert</literal> (optional - defaults to <literal>true</"
+"literal>) specifies that the mapped columns should be included in SQL "
+"<literal>UPDATE</literal> and/or <literal>INSERT</literal> statements. "
+"Setting both to <literal>false</literal> allows a pure \"derived\" "
+"association whose value is initialized from some other property that maps to "
+"the same colum(s) or by a trigger or other application."
msgstr ""
- "<![CDATA[<one-to-one\n"
- " name=\"propertyName\"\n"
- " class=\"ClassName\"\n"
- " cascade=\"cascade_style\"\n"
- " constrained=\"true|false\"\n"
- " fetch=\"join|select\"\n"
- " property-ref=\"propertyNameFromAssociatedClass\"\n"
- " access=\"field|property|ClassName\"\n"
- " formula=\"any SQL expression\"\n"
- " lazy=\"proxy|no-proxy|false\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- " embed-xml=\"true|false\"\n"
- " foreign-key=\"foreign_key_name\"\n"
- "/>]]>"
+"<literal>update, insert</literal> (옵션 - 디폴트는 <literal>true</literal>) "
+"매핑된 컬럼들이 SQL <literal>UPDATE</literal>와/또는 <literal>INSERT</"
+"literal> 문장들 속에 포함될 것인지를 지정한다. 둘다 <literal>false</literal>"
+"로 설정하는 것은 그 값이 동일한 컬럼(들)로 매핑시키는 어떤 다른 컬럼들로부터 "
+"초기화 되거나 트리거나 다른 어플리케이션에 의해 초기화되는 단순한 \"파생된\" "
+"연관관계 값을 허용한다."
-#: index.docbook:1527
-msgid "<literal>property-ref</literal>: (optional) The name of a property of the associated class that is joined to this foreign key. If not specified, the primary key of the associated class is used."
-msgstr "<literal>name</literal>: 프로퍼티의 이름."
+#. Tag: para
+#: basic_mapping.xml:1527
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal>: (optional) The name of a property of the "
+"associated class that is joined to this foreign key. If not specified, the "
+"primary key of the associated class is used."
+msgstr ""
+"<literal>property-ref</literal>: (옵션) 이 foreign key에 조인되는 연관된 클래"
+"스의 프로퍼티 이름. 지정되지 않을 경우, 연관 클래스의 프라이머리 키가 사용된"
+"다."
-#: index.docbook:1540
-msgid "<literal>unique</literal> (optional): Enable the DDL generation of a unique constraint for the foreign-key column. Also, allow this to be the target of a <literal>property-ref</literal>. This makes the association multiplicity effectively one to one."
-msgstr "<literal>cascade</literal> (옵션) 어느 오퍼레이션들이 부모 객체로부터 연관된 객체로 케스케이드 될 것인지를 지정한다."
+#. Tag: para
+#: basic_mapping.xml:1540
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): Enable the DDL generation of a unique "
+"constraint for the foreign-key column. Also, allow this to be the target of "
+"a <literal>property-ref</literal>. This makes the association multiplicity "
+"effectively one to one."
+msgstr ""
+"<literal>unique</literal> (옵션): foreign-key 컬럼을 위한 유일 컨스트레인트"
+"의 DDL 생성을 가능하도록 해준다. 또한 이것이 property-ref의 대상이 되는 것을 "
+"허용해준다. 이것은 연관 다중성(association multiplicity)을 효율적으로 일 대 "
+"일로 만든다."
-#: index.docbook:1548
-msgid "<literal>not-null</literal> (optional): Enable the DDL generation of a nullability constraint for the foreign key columns."
-msgstr "<literal>constrained</literal> (옵션) 매핑된 테이블의 프라이머리 키에 대한 foreign 키 컨스트레인트가 연관된 클래스의 테이블을 참조하는지 여부를 지정한다. 이 옵션은 <literal>save()</literal>와 <literal>delete()</literal>가 케스케이드 되는 순서에 영향을 주고, 그 연관이 프락시 될 것인지 여부를 결정한다 (또한 스키마 내보내기 도구에 의해 사용된다)."
+#. Tag: para
+#: basic_mapping.xml:1548
+#, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): Enable the DDL generation of a "
+"nullability constraint for the foreign key columns."
+msgstr ""
+"<literal>not-null</literal> (옵션): foreign key 컬럼들을 위한 null 가능한 컨"
+"스트레인트의 DDL 생성을 가능하도록 해준다."
-#: index.docbook:1554
-msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): Specifies that updates to this property do or do not require acquisition of the optimistic lock. In other words, dertermines if a version increment should occur when this property is dirty."
-msgstr "<literal>fetch</literal> (옵션 - 디폴트는 <literal>select</literal>): outer-join 페칭 또는 순차적인 select 페칭 중에서 선택하라."
+#. Tag: para
+#: basic_mapping.xml:1554
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): Specifies that updates to this property do or do not require "
+"acquisition of the optimistic lock. In other words, dertermines if a version "
+"increment should occur when this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</"
+"literal>): 이 프로퍼티에 대한 업데이트들이 optimistic lock의 획득을 필요로 하"
+"는지 아닌지 여부를 지정한다. 달리 말해 이 프로퍼티가 dirty일 때 version 증가"
+"가 발생해야 할 경우인지를 결정한다."
-#: index.docbook:1562
-msgid "<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): By default, single point associations are proxied. <literal>lazy=\"no-proxy\"</literal> specifies that the property should be fetched lazily when the instance variable is first accessed (requires build-time bytecode instrumentation). <literal>lazy=\"false\"</literal> specifies that the association will always be eagerly fetched."
-msgstr "<literal>property-ref</literal>: (옵션) 이 클래스의 프라이머리 키에 연결된 연관 클래스의 프로퍼티의 이름. 만일 지정되지 않을 경우, 연관 클래스의 프라이머리 키가 사용된다."
+#. Tag: para
+#: basic_mapping.xml:1562
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): "
+"By default, single point associations are proxied. <literal>lazy=\"no-proxy"
+"\"</literal> specifies that the property should be fetched lazily when the "
+"instance variable is first accessed (requires build-time bytecode "
+"instrumentation). <literal>lazy=\"false\"</literal> specifies that the "
+"association will always be eagerly fetched."
+msgstr ""
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>proxy</literal>): 디폴트"
+"로, 단일 포인트 연관들이 프락시된다. <literal>lazy=\"no-proxy\"</literal>는 "
+"인스턴스 변수가 처음으로 접근될 때 그 프로퍼티가 lazily 페치될 것임을 지정한"
+"다(빌드-시 바이트코드 수단을 필요로 한다). <literal>lazy=\"false\"</literal>"
+"는 그 연관이 항상 eagerly 페치될 것임을 지정한다."
-#: index.docbook:1572
-msgid "<literal>not-found</literal> (optional - defaults to <literal>exception</literal>): Specifies how foreign keys that reference missing rows will be handled: <literal>ignore</literal> will treat a missing row as a null association."
-msgstr "<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): Hibernate가 프로퍼티 값에 접근 하는데 사용할 방도."
+#. Tag: para
+#: basic_mapping.xml:1572
+#, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): Specifies how foreign keys that reference missing rows will be "
+"handled: <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (옵션 - 디폴트는 <literal>exception</literal>): "
+"누락된 행들을 참조하는 foreign key들이 어떻게 처리될 것인지를 지정한다: "
+"<literal>ignore</literal>는 한 개의 누락된 행을 한 개의 null 연관으로 취급할 "
+"것이다."
-#: index.docbook:1579, index.docbook:1733
-msgid "<literal>entity-name</literal> (optional): The entity name of the associated class."
-msgstr "<literal>formula</literal> (옵션): 거의 모든 one to one 연관관계들은 소유하는 엔티티의 프라이머리 키로 매핑된다. 이것이 그 경우가 아닌 드문 경우들에서, 당신은 SQL formula 사용에 결합시킬 몇몇 다른 컬럼, 컬럼들, 또는 표현식을 지정할 수 있다.(예제는 <literal>org.hibernate.test.onetooneformula</literal>를 보라.)"
+#. Tag: para
+#: basic_mapping.xml:1579 basic_mapping.xml:1733
+#, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional): The entity name of the associated "
+"class."
+msgstr "<literal>entity-name</literal> (옵션): 연관된 클래스의 엔티티 이름."
-#: index.docbook:1585
-msgid "<literal>formula</literal> (optional): an SQL expression that defines the value for a <emphasis>computed</emphasis> foreign key."
-msgstr "<literal>lazy</literal> (옵션 - 디폴트는 <literal>proxy</literal>): 디폴트로 한쪽 끝 연관들이 프락시 된다. <literal>lazy=\"no-proxy\"</literal>는 인스턴스 변수가 처음 접근될 때 그 프로퍼티가 lazily 페치될 것임을 지정한다(빌드-시 바이트코드 수단을 필요로 한다). <literal>lazy=\"false\"</literal>는 그 연관들이 항상 eagerly 페치될 것임을 지정한다. <emphasis>만일 <literal>constrained=\"false\"</literal>인 경우에, 프락싱은 불가능하고 Hibernate는 그 연관을 eager 페치시킬 것이다!</emphasis>"
+#. Tag: para
+#: basic_mapping.xml:1585
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): an SQL expression that defines the "
+"value for a <emphasis>computed</emphasis> foreign key."
+msgstr ""
+"<literal>formula</literal> (옵션): <emphasis>계산된</emphasis> foreign key에 "
+"대한 값을 정의하는 SQL 표현식."
-#: index.docbook:1592
-msgid "Setting a value of the <literal>cascade</literal> attribute to any meaningful value other than <literal>none</literal> will propagate certain operations to the associated object. The meaningful values are the names of Hibernate's basic operations, <literal>persist, merge, delete, save-update, evict, replicate, lock, refresh</literal>, as well as the special values <literal>delete-orphan</literal> and <literal>all</literal> and comma-separated combinations of operation names, for example, <literal>cascade=\"persist,merge,evict\"</literal> or <literal>cascade=\"all,delete-orphan\"</literal>. See <xref linkend=\"objectstate-transitive\"/> for a full explanation. Note that single valued associations (many-to-one and one-to-one associations) do not support orphan delete."
-msgstr "<literal>entity-name</literal> (옵션): 연관된 클래스의 엔티티 이름."
+#. Tag: para
+#: basic_mapping.xml:1592
+#, no-c-format
+msgid ""
+"Setting a value of the <literal>cascade</literal> attribute to any "
+"meaningful value other than <literal>none</literal> will propagate certain "
+"operations to the associated object. The meaningful values are the names of "
+"Hibernate's basic operations, <literal>persist, merge, delete, save-update, "
+"evict, replicate, lock, refresh</literal>, as well as the special values "
+"<literal>delete-orphan</literal> and <literal>all</literal> and comma-"
+"separated combinations of operation names, for example, <literal>cascade="
+"\"persist,merge,evict\"</literal> or <literal>cascade=\"all,delete-orphan\"</"
+"literal>. See <xref linkend=\"objectstate-transitive\"/> for a full "
+"explanation. Note that single valued associations (many-to-one and one-to-"
+"one associations) do not support orphan delete."
+msgstr ""
+"<literal>cascade</literal> 속성 값을 <literal>none</literal> 아닌 어떤 의미있"
+"는 다른 값으로 설정하는 것은 어떤 오퍼레이션들을 연관된 객체에게 보급할 것이"
+"다. 유의미한 값들은 Hibernate의 기본 오퍼레이션들의 이름들, 즉 "
+"<literal>persist, merge, delete, save-update, evict, replicate, lock, "
+"refresh</literal> 뿐만 아니라 특별한 값들, 즉 <literal>delete-orphan</"
+"literal>과 <literal>all</literal> 그리고 오퍼레이션 이름들의 쉼표 분리된 조합"
+"들, 예를 들면 <literal>cascade=\"persist,merge,evict\"</literal> 또는 "
+"<literal>cascade=\"all,delete-orphan\"</literal>이다. 전체 설명은 <xref "
+"linkend=\"objectstate-transitive\"/>를 보라. 단일값 연관들(many-to-one 연관"
+"과 one-to-one 연관)은 orphan delete를 지원하지 않음을 노트하라."
-#: index.docbook:1605
-msgid "A typical <literal>many-to-one</literal> declaration looks as simple as this:"
-msgstr "one-to-one 연관관계에는 두 가지 변종이 존재한다:"
+#. Tag: para
+#: basic_mapping.xml:1605
+#, no-c-format
+msgid ""
+"A typical <literal>many-to-one</literal> declaration looks as simple as this:"
+msgstr ""
+"일반적인 <literal>many-to-one</literal> 선언은 다음과 같이 간단하게 보여진다:"
-#: index.docbook:1609
-msgid "<![CDATA[<many-to-one name=\"product\" class=\"Product\" column=\"PRODUCT_ID\"/>]]>"
-msgstr "프라이머리 키 연관관계들"
+#. Tag: programlisting
+#: basic_mapping.xml:1609
+#, no-c-format
+msgid ""
+"<![CDATA[<many-to-one name=\"product\" class=\"Product\" column=\"PRODUCT_ID"
+"\"/>]]>"
+msgstr ""
-#: index.docbook:1611
-msgid "The <literal>property-ref</literal> attribute should only be used for mapping legacy data where a foreign key refers to a unique key of the associated table other than the primary key. This is an ugly relational model. For example, suppose the <literal>Product</literal> class had a unique serial number, that is not the primary key. (The <literal>unique</literal> attribute controls Hibernate's DDL generation with the SchemaExport tool.)"
-msgstr "유일 foreign 키 연관관계들"
+#. Tag: para
+#: basic_mapping.xml:1611
+#, no-c-format
+msgid ""
+"The <literal>property-ref</literal> attribute should only be used for "
+"mapping legacy data where a foreign key refers to a unique key of the "
+"associated table other than the primary key. This is an ugly relational "
+"model. For example, suppose the <literal>Product</literal> class had a "
+"unique serial number, that is not the primary key. (The <literal>unique</"
+"literal> attribute controls Hibernate's DDL generation with the SchemaExport "
+"tool.)"
+msgstr ""
+"<literal>property-ref</literal> 속성은 오직 foreign key가 프라이머리 키가 아"
+"닌 연관된 테이블의 유일 키를 참조하는 리거시 데이터를 매핑하는데만 사용된다. "
+"이것은 꼴사나운 관계형 모형이다. 예를 들어, <literal>Product</literal> 클래스"
+"가 프라이머리 키를 아닌, 유일한 시리얼 번호를 갖는다고 가정하자."
+"(<literal>unique</literal> 속성은 SchemaExport 도구로 Hibernate의 DDL 생성을 "
+"제어한다.)"
-#: index.docbook:1620
-msgid "<![CDATA[<property name=\"serialNumber\" unique=\"true\" type=\"string\" column=\"SERIAL_NUMBER\"/>]]>"
-msgstr "프라이머리 키 연관들은 특별한 테이블 컬럼을 필요로 하지 않는다; 만일 두 개의 행들이 그 연관에 의해 관계지워지면, 두 개의 테이블 행들은 동일한 프라이머리 키 값을 공유한다. 따라서 만일 두 개의 객체들이 프라이머리 키 연관에 의해 관계지워지도록 당신이 원할 경우, 당신은 그것들에 동일한 식별자 값이 할당되도록 해야 한다!"
+#. Tag: programlisting
+#: basic_mapping.xml:1620
+#, no-c-format
+msgid ""
+"<![CDATA[<property name=\"serialNumber\" unique=\"true\" type=\"string\" "
+"column=\"SERIAL_NUMBER\"/>]]>"
+msgstr ""
-#: index.docbook:1622
+#. Tag: para
+#: basic_mapping.xml:1622
+#, no-c-format
msgid "Then the mapping for <literal>OrderItem</literal> might use:"
-msgstr "프라이머리 키 연관에 대해, 다음 매핑들을 <literal>Employee</literal>와 <literal>Person</literal> 각각에 추가하라."
+msgstr ""
+"그런 다음 <literal>OrderItem</literal>에 대한 매핑은 다음을 사용할 것이다:"
-#: index.docbook:1626
-msgid "<![CDATA[<many-to-one name=\"product\" property-ref=\"serialNumber\" column=\"PRODUCT_SERIAL_NUMBER\"/>]]>"
-msgstr "<![CDATA[<one-to-one name=\"person\" class=\"Person\"/>]]>"
+#. Tag: programlisting
+#: basic_mapping.xml:1626
+#, no-c-format
+msgid ""
+"<![CDATA[<many-to-one name=\"product\" property-ref=\"serialNumber\" column="
+"\"PRODUCT_SERIAL_NUMBER\"/>]]>"
+msgstr ""
-#: index.docbook:1628
+#. Tag: para
+#: basic_mapping.xml:1628
+#, no-c-format
msgid "This is certainly not encouraged, however."
-msgstr "<![CDATA[<one-to-one name=\"employee\" class=\"Employee\" constrained=\"true\"/>]]>"
+msgstr "하지만 이것은 확실히 권장되지 않는다."
-#: index.docbook:1632
-msgid "If the referenced unique key comprises multiple properties of the associated entity, you should map the referenced properties inside a named <literal><properties></literal> element."
-msgstr "이제 우리는 PERSON 과 EMPLOYEE 테이블들에서 관계지워진 행들의 프라이머리 키들이 동일함을 확실히 해야 한다! 우리는 <literal>foreign</literal>로 명명되는 특별한 Hibernate 식별자 생성 방도를 사용한다:"
+#. Tag: para
+#: basic_mapping.xml:1632
+#, no-c-format
+msgid ""
+"If the referenced unique key comprises multiple properties of the associated "
+"entity, you should map the referenced properties inside a named <literal><"
+"properties></literal> element."
+msgstr ""
+"만일 참조된 유일 키가 연관된 엔티티의 여러 프로퍼티들을 포함할 경우, 당신은 "
+"명명된 <literal><properties></literal> 요소 내부에 참조된 프로퍼티들을 "
+"매핑할 것이다."
-#: index.docbook:1637
-msgid "If the referenced unique key is the property of a component, you may specify a property path:"
+#. Tag: para
+#: basic_mapping.xml:1637
+#, no-c-format
+msgid ""
+"If the referenced unique key is the property of a component, you may specify "
+"a property path:"
msgstr ""
- "<![CDATA[<class name=\"person\" table=\"PERSON\">\n"
- " <id name=\"id\" column=\"PERSON_ID\">\n"
- " <generator class=\"foreign\">\n"
- " <param name=\"property\">employee</param>\n"
- " </generator>\n"
- " </id>\n"
- " ...\n"
- " <one-to-one name=\"employee\"\n"
- " class=\"Employee\"\n"
- " constrained=\"true\"/>\n"
- "</class>]]>"
+"만일 참조된 유일키가 컴포넌트의 프로퍼티일 경우, 당신은 하나의 프로퍼티 경로"
+"를 지정할 수 있다:"
-#: index.docbook:1641
-msgid "<![CDATA[<many-to-one name=\"owner\" property-ref=\"identity.ssn\" column=\"OWNER_SSN\"/>]]>"
-msgstr "그때 <literal>Person</literal>의 새로이 저장된 인스턴스는 그 <literal>Person</literal>의 <literal>employee</literal> 프로퍼티에 대해 참조된 <literal>Employee</literal> 인스턴스와 동일한 프라이머리 키를 할당받는다."
+#. Tag: programlisting
+#: basic_mapping.xml:1641
+#, no-c-format
+msgid ""
+"<![CDATA[<many-to-one name=\"owner\" property-ref=\"identity.ssn\" column="
+"\"OWNER_SSN\"/>]]>"
+msgstr ""
-#: index.docbook:1646
+#. Tag: title
+#: basic_mapping.xml:1646
+#, no-c-format
msgid "one-to-one"
-msgstr "달리, <literal>Employee</literal>로부터 <literal>Person</literal>으로의 유일 컨스트레인트를 가진 하나의 foreign key는 다음과 같이 표현될 수 있다:"
+msgstr "one-to-one"
-#: index.docbook:1648
-msgid "A one-to-one association to another persistent class is declared using a <literal>one-to-one</literal> element."
-msgstr "<![CDATA[<many-to-one name=\"person\" class=\"Person\" column=\"PERSON_ID\" unique=\"true\"/>]]>"
+#. Tag: para
+#: basic_mapping.xml:1648
+#, no-c-format
+msgid ""
+"A one-to-one association to another persistent class is declared using a "
+"<literal>one-to-one</literal> element."
+msgstr ""
+"또 다른 영속 클래스에 대한 one-to-one 연관관계는 <literal>one-to-one</"
+"literal> 요소를 사용하여 선언된다."
-#: index.docbook:1666
+#. Tag: programlisting
+#: basic_mapping.xml:1666
+#, no-c-format
msgid ""
- "<![CDATA[<one-to-one\n"
- " name=\"propertyName\"\n"
- " class=\"ClassName\"\n"
- " cascade=\"cascade_style\"\n"
- " constrained=\"true|false\"\n"
- " fetch=\"join|select\"\n"
- " property-ref=\"propertyNameFromAssociatedClass\"\n"
- " access=\"field|property|ClassName\"\n"
- " formula=\"any SQL expression\"\n"
- " lazy=\"proxy|no-proxy|false\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
- " embed-xml=\"true|false\"\n"
- " foreign-key=\"foreign_key_name\"\n"
- "/>]]>"
-msgstr "그리고 이 연관은 다음을 <literal>Person</literal> 매핑에 추가함으로써 양방향이 될 수 있다:"
+"<![CDATA[<one-to-one\n"
+" name=\"propertyName\"\n"
+" class=\"ClassName\"\n"
+" cascade=\"cascade_style\"\n"
+" constrained=\"true|false\"\n"
+" fetch=\"join|select\"\n"
+" property-ref=\"propertyNameFromAssociatedClass\"\n"
+" access=\"field|property|ClassName\"\n"
+" formula=\"any SQL expression\"\n"
+" lazy=\"proxy|no-proxy|false\"\n"
+" entity-name=\"EntityName\"\n"
+" node=\"element-name|@attribute-name|element/(a)attribute|.\"\n"
+" embed-xml=\"true|false\"\n"
+" foreign-key=\"foreign_key_name\"\n"
+"/>]]>"
+msgstr ""
-#: index.docbook:1680
-msgid "<literal>cascade</literal> (optional) specifies which operations should be cascaded from the parent object to the associated object."
+#. Tag: para
+#: basic_mapping.xml:1680
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional) specifies which operations should be "
+"cascaded from the parent object to the associated object."
msgstr ""
- "<![CDATA[<natural-id mutable=\"true|false\"/>\n"
- " <property ... />\n"
- " <many-to-one ... />\n"
- " ......\n"
- "</natural-id>]]>"
+"<literal>cascade</literal> (옵션) 어느 오퍼레이션들이 부모 객체로부터 연관된 "
+"객체로 케스케이드 될 것인지를 지정한다."
-#: index.docbook:1686
-msgid "<literal>constrained</literal> (optional) specifies that a foreign key constraint on the primary key of the mapped table references the table of the associated class. This option affects the order in which <literal>save()</literal> and <literal>delete()</literal> are cascaded, and determines whether the association may be proxied (it is also used by the schema export tool)."
-msgstr "비록 우리가 프라이머리 키들로서 대용키들을 사용하는 것을 권장했을지라도, 당신은 여전히 모든 엔티티들에 대한 natural 키들을 식별하고자 원할 것이다. narutal 키는 유일(unique)하고 null이 아닌 프로퍼티 또는 프로퍼티들의 조합이다. 그것이 또한 불변하는 것일 경우가 더 좋다. <literal><natural-id></literal> 요소 내부에 있는 natural 키의 프로퍼티들을 매핑하라. Hibernate는 필수적인 유일 키와 null 허용가능한 컨스트레인트들을 생성시킬 것이고, 당신의 매핑은 보다 자가 설명적이게 될 것이다."
+#. Tag: para
+#: basic_mapping.xml:1686
+#, no-c-format
+msgid ""
+"<literal>constrained</literal> (optional) specifies that a foreign key "
+"constraint on the primary key of the mapped table references the table of "
+"the associated class. This option affects the order in which <literal>save()"
+"</literal> and <literal>delete()</literal> are cascaded, and determines "
+"whether the association may be proxied (it is also used by the schema export "
+"tool)."
+msgstr ""
+"<literal>constrained</literal> (옵션) 매핑된 테이블의 프라이머리 키에 대한 "
+"foreign 키 컨스트레인트가 연관된 클래스의 테이블을 참조하는지 여부를 지정한"
+"다. 이 옵션은 <literal>save()</literal>와 <literal>delete()</literal>가 케스"
+"케이드 되는 순서에 영향을 주고, 그 연관이 프락시 될 것인지 여부를 결정한다 "
+"(또한 스키마 내보내기 도구에 의해 사용된다)."
-#: index.docbook:1701
-msgid "<literal>property-ref</literal>: (optional) The name of a property of the associated class that is joined to the primary key of this class. If not specified, the primary key of the associated class is used."
-msgstr "이 매핑은 natural 프라이머리 키들을 가진 엔티티들을 위한 용도로 고안된 것은 아니다."
+#. Tag: para
+#: basic_mapping.xml:1701
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal>: (optional) The name of a property of the "
+"associated class that is joined to the primary key of this class. If not "
+"specified, the primary key of the associated class is used."
+msgstr ""
+"<literal>property-ref</literal>: (옵션) 이 클래스의 프라이머리 키에 연결된 연"
+"관 클래스의 프로퍼티의 이름. 만일 지정되지 않을 경우, 연관 클래스의 프라이머"
+"리 키가 사용된다."
-#: index.docbook:1714
-msgid "<literal>formula</literal> (optional): Almost all one to one associations map to the primary key of the owning entity. In the rare case that this is not the case, you may specify a some other column, columns or expression to join on using an SQL formula. (See <literal>org.hibernate.test.onetooneformula</literal> for an example.)"
-msgstr "component, dynamic-component"
+#. Tag: para
+#: basic_mapping.xml:1714
+#, no-c-format
+msgid ""
+"<literal>formula</literal> (optional): Almost all one to one associations "
+"map to the primary key of the owning entity. In the rare case that this is "
+"not the case, you may specify a some other column, columns or expression to "
+"join on using an SQL formula. (See <literal>org.hibernate.test."
+"onetooneformula</literal> for an example.)"
+msgstr ""
+"<literal>formula</literal> (옵션): 거의 모든 one to one 연관관계들은 소유하"
+"는 엔티티의 프라이머리 키로 매핑된다. 이것이 그 경우가 아닌 드문 경우들에서, "
+"당신은 SQL formula 사용에 결합시킬 몇몇 다른 컬럼, 컬럼들, 또는 표현식을 지정"
+"할 수 있다.(예제는 <literal>org.hibernate.test.onetooneformula</literal>를 보"
+"라.)"
-#: index.docbook:1722
-msgid "<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): By default, single point associations are proxied. <literal>lazy=\"no-proxy\"</literal> specifies that the property should be fetched lazily when the instance variable is first accessed (requires build-time bytecode instrumentation). <literal>lazy=\"false\"</literal> specifies that the association will always be eagerly fetched. <emphasis>Note that if <literal>constrained=\"false\"</literal>, proxying is impossible and Hibernate will eager fetch the association!</emphasis>"
-msgstr "<literal><component></literal> 요소는 자식 객체의 프로퍼티들을 부모 클래스에 대한 테이블의 컬럼들로 매핑시킨다. 컴포넌트들은 그것들 자신의 프로퍼티들, 컴포넌트들, 또는 콜렉션들을 선언한다. 이래 \"컴포넌트들\"을 보라."
+#. Tag: para
+#: basic_mapping.xml:1722
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>proxy</literal>): "
+"By default, single point associations are proxied. <literal>lazy=\"no-proxy"
+"\"</literal> specifies that the property should be fetched lazily when the "
+"instance variable is first accessed (requires build-time bytecode "
+"instrumentation). <literal>lazy=\"false\"</literal> specifies that the "
+"association will always be eagerly fetched. <emphasis>Note that if "
+"<literal>constrained=\"false\"</literal>, proxying is impossible and "
+"Hibernate will eager fetch the association!</emphasis>"
+msgstr ""
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>proxy</literal>): 디폴트로 "
+"한쪽 끝 연관들이 프락시 된다. <literal>lazy=\"no-proxy\"</literal>는 인스턴"
+"스 변수가 처음 접근될 때 그 프로퍼티가 lazily 페치될 것임을 지정한다(빌드-시 "
+"바이트코드 수단을 필요로 한다). <literal>lazy=\"false\"</literal>는 그 연관들"
+"이 항상 eagerly 페치될 것임을 지정한다. <emphasis>만일 <literal>constrained="
+"\"false\"</literal>인 경우에, 프락싱은 불가능하고 Hibernate는 그 연관을 "
+"eager 페치시킬 것이다!</emphasis>"
-#: index.docbook:1740
+#. Tag: para
+#: basic_mapping.xml:1740
+#, no-c-format
msgid "There are two varieties of one-to-one association:"
-msgstr "<literal>name</literal>: 프로퍼티의 이름."
+msgstr "one-to-one 연관관계에는 두 가지 변종이 존재한다:"
-#: index.docbook:1744
+#. Tag: para
+#: basic_mapping.xml:1744
+#, no-c-format
msgid "primary key associations"
-msgstr "<literal>class</literal> (옵션 - 디폴트는 reflection에 의해 결정된 프로퍼티 타입): 컴포넌트(자식) 클래스의 이름."
+msgstr "프라이머리 키 연관관계들"
-#: index.docbook:1747
+#. Tag: para
+#: basic_mapping.xml:1747
+#, no-c-format
msgid "unique foreign key associations"
-msgstr "<literal>insert</literal>: 매핑된 컬럼들이 SQL <literal>INSERT</literal>들 속에 나타나야 하는가?"
+msgstr "유일 foreign 키 연관관계들"
-#: index.docbook:1752
-msgid "Primary key associations don't need an extra table column; if two rows are related by the association then the two table rows share the same primary key value. So if you want two objects to be related by a primary key association, you must make sure that they are assigned the same identifier value!"
-msgstr "<literal>update</literal>: 매핑된 컬럼들이 SQL <literal>UPDATE</literal>들 속에 나타나야 하는가?"
+#. Tag: para
+#: basic_mapping.xml:1752
+#, no-c-format
+msgid ""
+"Primary key associations don't need an extra table column; if two rows are "
+"related by the association then the two table rows share the same primary "
+"key value. So if you want two objects to be related by a primary key "
+"association, you must make sure that they are assigned the same identifier "
+"value!"
+msgstr ""
+"프라이머리 키 연관들은 특별한 테이블 컬럼을 필요로 하지 않는다; 만일 두 개의 "
+"행들이 그 연관에 의해 관계지워지면, 두 개의 테이블 행들은 동일한 프라이머리 "
+"키 값을 공유한다. 따라서 만일 두 개의 객체들이 프라이머리 키 연관에 의해 관계"
+"지워지도록 당신이 원할 경우, 당신은 그것들에 동일한 식별자 값이 할당되도록 해"
+"야 한다!"
-#: index.docbook:1759
-msgid "For a primary key association, add the following mappings to <literal>Employee</literal> and <literal>Person</literal>, respectively."
-msgstr "<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): Hibernate가 프로퍼티 값에 액세스하는데 사용할 방도."
+#. Tag: para
+#: basic_mapping.xml:1759
+#, no-c-format
+msgid ""
+"For a primary key association, add the following mappings to "
+"<literal>Employee</literal> and <literal>Person</literal>, respectively."
+msgstr ""
+"프라이머리 키 연관에 대해, 다음 매핑들을 <literal>Employee</literal>와 "
+"<literal>Person</literal> 각각에 추가하라."
-#: index.docbook:1764
+#. Tag: programlisting
+#: basic_mapping.xml:1764
+#, no-c-format
msgid "<![CDATA[<one-to-one name=\"person\" class=\"Person\"/>]]>"
-msgstr "<literal>lazy</literal> (옵션 - 디폴트는 <literal>false</literal>): 인스턴스 변수가 처음으로 액세스될 때 이 컴포넌트가 lazily(느리게) 페치되어야 하는지 여부를 지정한다 (빌드 시 바이트코드 수단을 필요로 한다)."
+msgstr ""
-#: index.docbook:1765
-msgid "<![CDATA[<one-to-one name=\"employee\" class=\"Employee\" constrained=\"true\"/>]]>"
-msgstr "<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</literal>): 이 컴포넌트에 대한 업데이트들이 optimistic 잠금을 획득하는 것을 필요로 하는지 여부를 지정한다. 달리 말해 이 프로퍼티가 dirty 일 때 버전 증가가 발생할 것인지 여부를 결정한다."
+#. Tag: programlisting
+#: basic_mapping.xml:1765
+#, no-c-format
+msgid ""
+"<![CDATA[<one-to-one name=\"employee\" class=\"Employee\" constrained=\"true"
+"\"/>]]>"
+msgstr ""
-#: index.docbook:1767
-msgid "Now we must ensure that the primary keys of related rows in the PERSON and EMPLOYEE tables are equal. We use a special Hibernate identifier generation strategy called <literal>foreign</literal>:"
-msgstr "<literal>unique</literal> (옵션 - 디폴트는 <literal>false</literal>): 유일 컨스트레인트가 컴포넌트의 모든 매핑된 컬럼들에 대해 존재하는지 여부를 지정한다."
+#. Tag: para
+#: basic_mapping.xml:1767
+#, no-c-format
+msgid ""
+"Now we must ensure that the primary keys of related rows in the PERSON and "
+"EMPLOYEE tables are equal. We use a special Hibernate identifier generation "
+"strategy called <literal>foreign</literal>:"
+msgstr ""
+"이제 우리는 PERSON 과 EMPLOYEE 테이블들에서 관계지워진 행들의 프라이머리 키들"
+"이 동일함을 확실히 해야 한다! 우리는 <literal>foreign</literal>로 명명되는 특"
+"별한 Hibernate 식별자 생성 방도를 사용한다:"
-#: index.docbook:1773
+#. Tag: programlisting
+#: basic_mapping.xml:1773
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"person\" table=\"PERSON\">\n"
- " <id name=\"id\" column=\"PERSON_ID\">\n"
- " <generator class=\"foreign\">\n"
- " <param name=\"property\">employee</param>\n"
- " </generator>\n"
- " </id>\n"
- " ...\n"
- " <one-to-one name=\"employee\"\n"
- " class=\"Employee\"\n"
- " constrained=\"true\"/>\n"
- "</class>]]>"
-msgstr "자식 <literal><property></literal> 태그들은 자식 클래스의 프로퍼티들을 테이블 컬럼들로 매핑시킨다."
+"<![CDATA[<class name=\"person\" table=\"PERSON\">\n"
+" <id name=\"id\" column=\"PERSON_ID\">\n"
+" <generator class=\"foreign\">\n"
+" <param name=\"property\">employee</param>\n"
+" </generator>\n"
+" </id>\n"
+" ...\n"
+" <one-to-one name=\"employee\"\n"
+" class=\"Employee\"\n"
+" constrained=\"true\"/>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:1775
-msgid "A newly saved instance of <literal>Person</literal> is then assigned the same primary key value as the <literal>Employee</literal> instance refered with the <literal>employee</literal> property of that <literal>Person</literal>."
-msgstr "<literal><component></literal> 요소는 컴포넌트 클래스의 프로퍼티를 포함하는 엔티티에 대한 참조로서 매핑시키는 <literal><parent></literal> 서브요소를 허용한다."
+#. Tag: para
+#: basic_mapping.xml:1775
+#, no-c-format
+msgid ""
+"A newly saved instance of <literal>Person</literal> is then assigned the "
+"same primary key value as the <literal>Employee</literal> instance refered "
+"with the <literal>employee</literal> property of that <literal>Person</"
+"literal>."
+msgstr ""
+"그때 <literal>Person</literal>의 새로이 저장된 인스턴스는 그 "
+"<literal>Person</literal>의 <literal>employee</literal> 프로퍼티에 대해 참조"
+"된 <literal>Employee</literal> 인스턴스와 동일한 프라이머리 키를 할당받는다."
-#: index.docbook:1781
-msgid "Alternatively, a foreign key with a unique constraint, from <literal>Employee</literal> to <literal>Person</literal>, may be expressed as:"
-msgstr "<literal><dynamic-component></literal> 요소는 컴포넌트로서 매핑될<literal>Map</literal>을 허용한다. 여기서 프로퍼티 이름들은 map의 키들을 참조한다. <xref linkend=\"components-dynamic\"/>을 보라."
+#. Tag: para
+#: basic_mapping.xml:1781
+#, no-c-format
+msgid ""
+"Alternatively, a foreign key with a unique constraint, from "
+"<literal>Employee</literal> to <literal>Person</literal>, may be expressed "
+"as:"
+msgstr ""
+"달리, <literal>Employee</literal>로부터 <literal>Person</literal>으로의 유일 "
+"컨스트레인트를 가진 하나의 foreign key는 다음과 같이 표현될 수 있다:"
-#: index.docbook:1786
-msgid "<![CDATA[<many-to-one name=\"person\" class=\"Person\" column=\"PERSON_ID\" unique=\"true\"/>]]>"
-msgstr "properties"
+#. Tag: programlisting
+#: basic_mapping.xml:1786
+#, no-c-format
+msgid ""
+"<![CDATA[<many-to-one name=\"person\" class=\"Person\" column=\"PERSON_ID\" "
+"unique=\"true\"/>]]>"
+msgstr ""
-#: index.docbook:1788
-msgid "And this association may be made bidirectional by adding the following to the <literal>Person</literal> mapping:"
-msgstr "<literal><properties></literal> 요소는 클래스의 프로퍼티들의 명명된, 논리적 그룹핑에 대한 정의를 허용한다. 그 구조에 대한 가장 중요한 사용은 그것이 프로퍼티들의 조합이 <literal>property-ref</literal>의 대상이 되는 것을 허용해준다는 점이다. 또한 그것은 다중 컬럼 유일 컨스트레인느를 정의하는 편리한 방법이다."
+#. Tag: para
+#: basic_mapping.xml:1788
+#, no-c-format
+msgid ""
+"And this association may be made bidirectional by adding the following to "
+"the <literal>Person</literal> mapping:"
+msgstr ""
+"그리고 이 연관은 다음을 <literal>Person</literal> 매핑에 추가함으로써 양방향"
+"이 될 수 있다:"
-#: index.docbook:1793
-msgid "<![CDATA[<one-to-one name=\"employee\" class=\"Employee\" property-ref=\"person\"/>]]>"
+#. Tag: programlisting
+#: basic_mapping.xml:1793
+#, no-c-format
+msgid ""
+"<![CDATA[<one-to-one name=\"employee\" class=\"Employee\" property-ref="
+"\"person\"/>]]>"
msgstr ""
- "<![CDATA[<properties \n"
- " name=\"logicalName\" \n"
- " insert=\"true|false\"\n"
- " update=\"true|false\"\n"
- " optimistic-lock=\"true|false\"\n"
- " unique=\"true|false\"\n"
- ">\n"
- " \n"
- " <property ...../>\n"
- " <many-to-one .... />\n"
- " ........\n"
- "</properties>]]>"
-#: index.docbook:1798
+#. Tag: title
+#: basic_mapping.xml:1798
+#, no-c-format
msgid "natural-id"
-msgstr "<literal>name</literal>: 그룹핑의 논리적 이름 - 실제 프로퍼티 이름이 <emphasis>아니다</emphasis>."
+msgstr "natural-id"
-#: index.docbook:1800
+#. Tag: programlisting
+#: basic_mapping.xml:1800
+#, no-c-format
msgid ""
- "<![CDATA[<natural-id mutable=\"true|false\"/>\n"
- " <property ... />\n"
- " <many-to-one ... />\n"
- " ......\n"
- "</natural-id>]]>"
-msgstr "<literal>insert</literal>: 매핑된 컬럼들이 SQL <literal>INSERT</literal>들 내에 나타날 것인가?"
+"<![CDATA[<natural-id mutable=\"true|false\"/>\n"
+" <property ... />\n"
+" <many-to-one ... />\n"
+" ......\n"
+"</natural-id>]]>"
+msgstr ""
-#: index.docbook:1802
-msgid "Even though we recommend the use of surrogate keys as primary keys, you should still try to identify natural keys for all entities. A natural key is a property or combination of properties that is unique and non-null. If it is also immutable, even better. Map the properties of the natural key inside the <literal><natural-id></literal> element. Hibernate will generate the necessary unique key and nullability constraints, and your mapping will be more self-documenting."
-msgstr "<literal>update</literal>: 매핑된 컬럼들이 SQL <literal>UPDATE</literal>들 내에 나타날 것인가?"
+#. Tag: para
+#: basic_mapping.xml:1802
+#, no-c-format
+msgid ""
+"Even though we recommend the use of surrogate keys as primary keys, you "
+"should still try to identify natural keys for all entities. A natural key is "
+"a property or combination of properties that is unique and non-null. If it "
+"is also immutable, even better. Map the properties of the natural key inside "
+"the <literal><natural-id></literal> element. Hibernate will generate "
+"the necessary unique key and nullability constraints, and your mapping will "
+"be more self-documenting."
+msgstr ""
+"비록 우리가 프라이머리 키들로서 대용키들을 사용하는 것을 권장했을지라도, 당신"
+"은 여전히 모든 엔티티들에 대한 natural 키들을 식별하고자 원할 것이다. "
+"narutal 키는 유일(unique)하고 null이 아닌 프로퍼티 또는 프로퍼티들의 조합이"
+"다. 그것이 또한 불변하는 것일 경우가 더 좋다. <literal><natural-id></"
+"literal> 요소 내부에 있는 natural 키의 프로퍼티들을 매핑하라. Hibernate는 필"
+"수적인 유일 키와 null 허용가능한 컨스트레인트들을 생성시킬 것이고, 당신의 매"
+"핑은 보다 자가 설명적이게 될 것이다."
-#: index.docbook:1811
-msgid "We strongly recommend that you implement <literal>equals()</literal> and <literal>hashCode()</literal> to compare the natural key properties of the entity."
-msgstr "<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</literal>): 이들 프로퍼티들에 대한 업데이트들이 optimistic 잠금의 획득을 필요로 하는지 여부를 지정한다. 달리 말해 이 프로퍼티가 dirty 일 때 버전 증가가 발생할 것인지 여부를 결정한다."
+#. Tag: para
+#: basic_mapping.xml:1811
+#, no-c-format
+msgid ""
+"We strongly recommend that you implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> to compare the natural key properties of the "
+"entity."
+msgstr ""
+"우리는 당신이 엔티티에 대한 narutal 키 프로퍼티들을 비교하는데 "
+"<literal>equals()</literal>와 <literal>hashCode()</literal>를 구현할 것을 강"
+"력하게 권장한다."
-#: index.docbook:1816
-msgid "This mapping is not intended for use with entities with natural primary keys."
-msgstr "<literal>unique</literal> (옵션 - 디폴트는 <literal>false</literal>): 유일 컨스트레인트가 컴포넌트의 모든 매핑된 컬럼들에 대해 존재하는지 여부를 지정한다."
+#. Tag: para
+#: basic_mapping.xml:1816
+#, no-c-format
+msgid ""
+"This mapping is not intended for use with entities with natural primary keys."
+msgstr ""
+"이 매핑은 natural 프라이머리 키들을 가진 엔티티들을 위한 용도로 고안된 것은 "
+"아니다."
-#: index.docbook:1822
-msgid "<literal>mutable</literal> (optional, defaults to <literal>false</literal>): By default, natural identifier properties as assumed to be immutable (constant)."
-msgstr "예를 들어, 만일 우리가 다음 <literal><properties></literal> 매핑을 가질 경우:"
+#. Tag: para
+#: basic_mapping.xml:1822
+#, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional, defaults to <literal>false</literal>): "
+"By default, natural identifier properties as assumed to be immutable "
+"(constant)."
+msgstr ""
+"<literal>mutable</literal> (옵션, 디폴트는 <literal>false</literal>): 디폴트"
+"로, narutal 식별자 프로퍼티들은 변경될 수 없는 것(상수)으로 가정된다."
-#: index.docbook:1832
+#. Tag: title
+#: basic_mapping.xml:1832
+#, no-c-format
msgid "component, dynamic-component"
+msgstr "component, dynamic-component"
+
+#. Tag: para
+#: basic_mapping.xml:1834
+#, no-c-format
+msgid ""
+"The <literal><component></literal> element maps properties of a child "
+"object to columns of the table of a parent class. Components may, in turn, "
+"declare their own properties, components or collections. See \"Components\" "
+"below."
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"personNumber\"/>\n"
- " ...\n"
- " <properties name=\"name\" \n"
- " unique=\"true\" update=\"false\">\n"
- " <property name=\"firstName\"/>\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"lastName\"/>\n"
- " </properties>\n"
- "</class>]]>"
+"<literal><component></literal> 요소는 자식 객체의 프로퍼티들을 부모 클"
+"래스에 대한 테이블의 컬럼들로 매핑시킨다. 컴포넌트들은 그것들 자신의 프로퍼티"
+"들, 컴포넌트들, 또는 콜렉션들을 선언한다. 이래 \"컴포넌트들\"을 보라."
-#: index.docbook:1834
-msgid "The <literal><component></literal> element maps properties of a child object to columns of the table of a parent class. Components may, in turn, declare their own properties, components or collections. See \"Components\" below."
-msgstr "그 때 우리는 프라이머리 키가 아닌, <literal>Person</literal> 테이블의 이 유일 키를 참조하는 어떤 리거시 데이터 연관을 가질 수 있다:"
+#. Tag: programlisting
+#: basic_mapping.xml:1852
+#, no-c-format
+msgid ""
+"<![CDATA[<component\n"
+" name=\"propertyName\"\n"
+" class=\"className\"\n"
+" insert=\"true|false\"\n"
+" update=\"true|false\"\n"
+" access=\"field|property|ClassName\"\n"
+" lazy=\"true|false\"\n"
+" optimistic-lock=\"true|false\"\n"
+" unique=\"true|false\"\n"
+" node=\"element-name|.\"\n"
+">\n"
+"\n"
+" <property ...../>\n"
+" <many-to-one .... />\n"
+" ........\n"
+"</component>]]>"
+msgstr ""
-#: index.docbook:1852
+#. Tag: para
+#: basic_mapping.xml:1860
+#, no-c-format
msgid ""
- "<![CDATA[<component\n"
- " name=\"propertyName\"\n"
- " class=\"className\"\n"
- " insert=\"true|false\"\n"
- " update=\"true|false\"\n"
- " access=\"field|property|ClassName\"\n"
- " lazy=\"true|false\"\n"
- " optimistic-lock=\"true|false\"\n"
- " unique=\"true|false\"\n"
- " node=\"element-name|.\"\n"
- ">\n"
- "\n"
- " <property ...../>\n"
- " <many-to-one .... />\n"
- " ........\n"
- "</component>]]>"
+"<literal>class</literal> (optional - defaults to the property type "
+"determined by reflection): The name of the component (child) class."
msgstr ""
- "<![CDATA[<many-to-one name=\"person\" \n"
- " class=\"Person\" property-ref=\"name\">\n"
- " <column name=\"firstName\"/>\n"
- " <column name=\"initial\"/>\n"
- " <column name=\"lastName\"/>\n"
- "</many-to-one>]]>"
+"<literal>class</literal> (옵션 - 디폴트는 reflection에 의해 결정된 프로퍼티 "
+"타입): 컴포넌트(자식) 클래스의 이름."
-#: index.docbook:1860
-msgid "<literal>class</literal> (optional - defaults to the property type determined by reflection): The name of the component (child) class."
-msgstr "subclass"
+#. Tag: para
+#: basic_mapping.xml:1866 basic_mapping.xml:1955
+#, fuzzy, no-c-format
+msgid ""
+"<literal>insert</literal>: Do the mapped columns appear in SQL "
+"<literal>INSERT</literal>s?"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>insert</literal>: 매핑된 컬럼들이 SQL <literal>INSERT</literal>들 속"
+"에 나타나야 하는가?\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>insert</literal>: 매핑된 컬럼들이 SQL <literal>INSERT</literal>들 내"
+"에 나타날 것인가?"
-#: index.docbook:1866, index.docbook:1955
-msgid "<literal>insert</literal>: Do the mapped columns appear in SQL <literal>INSERT</literal>s?"
-msgstr "마지막으로, 다형성 영속성은 루트 영속 클래스에 대한 각각의 서브클래스 선언을 필요로 한다.(권장되는) table-per-class-hierarchy(테이블 당 클래스 계층구조) 매핑 방도의 경우, <literal><subclass></literal> 선언이 사용된다."
+#. Tag: para
+#: basic_mapping.xml:1872 basic_mapping.xml:1961
+#, fuzzy, no-c-format
+msgid ""
+"<literal>update</literal>: Do the mapped columns appear in SQL "
+"<literal>UPDATE</literal>s?"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>update</literal>: 매핑된 컬럼들이 SQL <literal>UPDATE</literal>들 속"
+"에 나타나야 하는가?\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>update</literal>: 매핑된 컬럼들이 SQL <literal>UPDATE</literal>들 내"
+"에 나타날 것인가?"
-#: index.docbook:1872, index.docbook:1961
-msgid "<literal>update</literal>: Do the mapped columns appear in SQL <literal>UPDATE</literal>s?"
+#. Tag: para
+#: basic_mapping.xml:1884
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>false</literal>): "
+"Specifies that this component should be fetched lazily when the instance "
+"variable is first accessed (requires build-time bytecode instrumentation)."
msgstr ""
- "<![CDATA[<subclass\n"
- " name=\"ClassName\"\n"
- " discriminator-value=\"discriminator_value\"\n"
- " proxy=\"ProxyInterface\"\n"
- " lazy=\"true|false\"\n"
- " dynamic-update=\"true|false\"\n"
- " dynamic-insert=\"true|false\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name\"\n"
- " extends=\"SuperclassName\">\n"
- "\n"
- " <property .... />\n"
- " .....\n"
- "</subclass>]]>"
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>false</literal>): 인스턴스 "
+"변수가 처음으로 액세스될 때 이 컴포넌트가 lazily(느리게) 페치되어야 하는지 여"
+"부를 지정한다 (빌드 시 바이트코드 수단을 필요로 한다)."
-#: index.docbook:1884
-msgid "<literal>lazy</literal> (optional - defaults to <literal>false</literal>): Specifies that this component should be fetched lazily when the instance variable is first accessed (requires build-time bytecode instrumentation)."
-msgstr "<literal>discriminator-value</literal> (옵션 - 디폴트는 클래스 이름): 개개의 서브클래스들을 구분짓는 값."
+#. Tag: para
+#: basic_mapping.xml:1891
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): Specifies that updates to this component do or do not require "
+"acquisition of the optimistic lock. In other words, determines if a version "
+"increment should occur when this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</"
+"literal>): 이 컴포넌트에 대한 업데이트들이 optimistic 잠금을 획득하는 것을 필"
+"요로 하는지 여부를 지정한다. 달리 말해 이 프로퍼티가 dirty 일 때 버전 증가가 "
+"발생할 것인지 여부를 결정한다."
-#: index.docbook:1891
-msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): Specifies that updates to this component do or do not require acquisition of the optimistic lock. In other words, determines if a version increment should occur when this property is dirty."
-msgstr "<literal>proxy</literal> (옵션): lazy 초기화 프락시들을 사용하는데 클래스 또는 인터페이스를 지정한다."
+#. Tag: para
+#: basic_mapping.xml:1899 basic_mapping.xml:1975
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional - defaults to <literal>false</literal>): "
+"Specifies that a unique constraint exists upon all mapped columns of the "
+"component."
+msgstr ""
+"<literal>unique</literal> (옵션 - 디폴트는 <literal>false</literal>): 유일 컨"
+"스트레인트가 컴포넌트의 모든 매핑된 컬럼들에 대해 존재하는지 여부를 지정한다."
-#: index.docbook:1899, index.docbook:1975
-msgid "<literal>unique</literal> (optional - defaults to <literal>false</literal>): Specifies that a unique constraint exists upon all mapped columns of the component."
-msgstr "<literal>lazy</literal> (옵션 - 디폴트는 <literal>true</literal>): <literal>lazy=\"false\"</literal> 설정은 lazy 페칭의 사용을 불가능하게 만든다."
+#. Tag: para
+#: basic_mapping.xml:1908
+#, no-c-format
+msgid ""
+"The child <literal><property></literal> tags map properties of the "
+"child class to table columns."
+msgstr ""
+"자식 <literal><property></literal> 태그들은 자식 클래스의 프로퍼티들을 "
+"테이블 컬럼들로 매핑시킨다."
-#: index.docbook:1908
-msgid "The child <literal><property></literal> tags map properties of the child class to table columns."
-msgstr "각각의 서브클래스는 그것 자신의 영속 프로퍼티들과 서브클래스들을 선언할 것이다. <literal><version></literal> 프로퍼티와 <literal><id></literal> 프로퍼티는 루트 클래스로부터 상속된다고 가정된다. 계층구조 내에서 각각의 서브클래스는 유일한 <literal>discriminator-value</literal>를 정의해야 한다. none이 지정될 경우, 전체 수식어가 붙은 자바 클래스 이름이 사용된다."
+#. Tag: para
+#: basic_mapping.xml:1913
+#, no-c-format
+msgid ""
+"The <literal><component></literal> element allows a <literal><"
+"parent></literal> subelement that maps a property of the component class "
+"as a reference back to the containing entity."
+msgstr ""
+"<literal><component></literal> 요소는 컴포넌트 클래스의 프로퍼티를 포함"
+"하는 엔티티에 대한 참조로서 매핑시키는 <literal><parent></literal> 서브"
+"요소를 허용한다."
-#: index.docbook:1913
-msgid "The <literal><component></literal> element allows a <literal><parent></literal> subelement that maps a property of the component class as a reference back to the containing entity."
-msgstr "상속 매핑들에 대한 정보는 <xref linkend=\"inheritance\"/>을 보라."
+#. Tag: para
+#: basic_mapping.xml:1919
+#, no-c-format
+msgid ""
+"The <literal><dynamic-component></literal> element allows a "
+"<literal>Map</literal> to be mapped as a component, where the property names "
+"refer to keys of the map, see <xref linkend=\"components-dynamic\"/>."
+msgstr ""
+"<literal><dynamic-component></literal> 요소는 컴포넌트로서 매핑될"
+"<literal>Map</literal>을 허용한다. 여기서 프로퍼티 이름들은 map의 키들을 참조"
+"한다. <xref linkend=\"components-dynamic\"/>을 보라."
-#: index.docbook:1919
-msgid "The <literal><dynamic-component></literal> element allows a <literal>Map</literal> to be mapped as a component, where the property names refer to keys of the map, see <xref linkend=\"components-dynamic\"/>."
-msgstr "joined-subclass"
-
-#: index.docbook:1928
+#. Tag: title
+#: basic_mapping.xml:1928
+#, no-c-format
msgid "properties"
-msgstr "다른 방법으로 각각의 서브클래스는 그것 자신이 테이블로 매핑될 수 있다(table-per-subclass 매핑 방도). 상속된 상태는 슈퍼클래스의 테이블과 조인함으로써 검색된다. 우리는 <literal><joined-subclass></literal> 요소를 사용한다."
+msgstr "properties"
-#: index.docbook:1930
-msgid "The <literal><properties></literal> element allows the definition of a named, logical grouping of properties of a class. The most important use of the construct is that it allows a combination of properties to be the target of a <literal>property-ref</literal>. It is also a convenient way to define a multi-column unique constraint."
+#. Tag: para
+#: basic_mapping.xml:1930
+#, no-c-format
+msgid ""
+"The <literal><properties></literal> element allows the definition of a "
+"named, logical grouping of properties of a class. The most important use of "
+"the construct is that it allows a combination of properties to be the target "
+"of a <literal>property-ref</literal>. It is also a convenient way to define "
+"a multi-column unique constraint."
msgstr ""
- "<![CDATA[<joined-subclass\n"
- " name=\"ClassName\"\n"
- " table=\"tablename\"\n"
- " proxy=\"ProxyInterface\"\n"
- " lazy=\"true|false\"\n"
- " dynamic-update=\"true|false\"\n"
- " dynamic-insert=\"true|false\"\n"
- " schema=\"schema\"\n"
- " catalog=\"catalog\"\n"
- " extends=\"SuperclassName\"\n"
- " persister=\"ClassName\"\n"
- " subselect=\"SQL expression\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name\">\n"
- "\n"
- " <key .... >\n"
- "\n"
- " <property .... />\n"
- " .....\n"
- "</joined-subclass>]]>"
+"<literal><properties></literal> 요소는 클래스의 프로퍼티들의 명명된, 논"
+"리적 그룹핑에 대한 정의를 허용한다. 그 구조에 대한 가장 중요한 사용은 그것이 "
+"프로퍼티들의 조합이 <literal>property-ref</literal>의 대상이 되는 것을 허용해"
+"준다는 점이다. 또한 그것은 다중 컬럼 유일 컨스트레인느를 정의하는 편리한 방법"
+"이다."
-#: index.docbook:1946
+#. Tag: programlisting
+#: basic_mapping.xml:1946
+#, no-c-format
msgid ""
- "<![CDATA[<properties\n"
- " name=\"logicalName\"\n"
- " insert=\"true|false\"\n"
- " update=\"true|false\"\n"
- " optimistic-lock=\"true|false\"\n"
- " unique=\"true|false\"\n"
- ">\n"
- "\n"
- " <property ...../>\n"
- " <many-to-one .... />\n"
- " ........\n"
- "</properties>]]>"
-msgstr "<literal>name</literal>: 서브클래스의 전체 수식어가 붙은 클래스 명."
+"<![CDATA[<properties\n"
+" name=\"logicalName\"\n"
+" insert=\"true|false\"\n"
+" update=\"true|false\"\n"
+" optimistic-lock=\"true|false\"\n"
+" unique=\"true|false\"\n"
+">\n"
+"\n"
+" <property ...../>\n"
+" <many-to-one .... />\n"
+" ........\n"
+"</properties>]]>"
+msgstr ""
-#: index.docbook:1949
-msgid "<literal>name</literal>: The logical name of the grouping - <emphasis>not</emphasis> an actual property name."
-msgstr "<literal>table</literal>: 서브클래스 테이블의 이름."
+#. Tag: para
+#: basic_mapping.xml:1949
+#, no-c-format
+msgid ""
+"<literal>name</literal>: The logical name of the grouping - <emphasis>not</"
+"emphasis> an actual property name."
+msgstr ""
+"<literal>name</literal>: 그룹핑의 논리적 이름 - 실제 프로퍼티 이름이 "
+"<emphasis>아니다</emphasis>."
-#: index.docbook:1967
-msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): Specifies that updates to these properties do or do not require acquisition of the optimistic lock. In other words, determines if a version increment should occur when these properties are dirty."
-msgstr "판별자(discriminator) 컬럼은 이 매핑 방도에 필요하지 않다. 하지만 각각의 서브클래스는 <literal><key></literal> 요소를 사용하여 객체 식별자를 보관하는 테이블 컬럼을 선언해야 한다. 이 장의 시작 부분에 있는 매핑은 다음과 같이 다시 작성될 것이다:"
+#. Tag: para
+#: basic_mapping.xml:1967
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): Specifies that updates to these properties do or do not require "
+"acquisition of the optimistic lock. In other words, determines if a version "
+"increment should occur when these properties are dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</"
+"literal>): 이들 프로퍼티들에 대한 업데이트들이 optimistic 잠금의 획득을 필요"
+"로 하는지 여부를 지정한다. 달리 말해 이 프로퍼티가 dirty 일 때 버전 증가가 발"
+"생할 것인지 여부를 결정한다."
-#: index.docbook:1984
-msgid "For example, if we have the following <literal><properties></literal> mapping:"
-msgstr "상속 매핑들에 대한 정보는 <xref linkend=\"inheritance\"/>을 보라."
+#. Tag: para
+#: basic_mapping.xml:1984
+#, no-c-format
+msgid ""
+"For example, if we have the following <literal><properties></literal> "
+"mapping:"
+msgstr ""
+"예를 들어, 만일 우리가 다음 <literal><properties></literal> 매핑을 가"
+"질 경우:"
-#: index.docbook:1988
+#. Tag: programlisting
+#: basic_mapping.xml:1988
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"personNumber\"/>\n"
- " ...\n"
- " <properties name=\"name\"\n"
- " unique=\"true\" update=\"false\">\n"
- " <property name=\"firstName\"/>\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"lastName\"/>\n"
- " </properties>\n"
- "</class>]]>"
-msgstr "union-subclass"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"personNumber\"/>\n"
+" ...\n"
+" <properties name=\"name\"\n"
+" unique=\"true\" update=\"false\">\n"
+" <property name=\"firstName\"/>\n"
+" <property name=\"initial\"/>\n"
+" <property name=\"lastName\"/>\n"
+" </properties>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:1990
-msgid "Then we might have some legacy data association which refers to this unique key of the <literal>Person</literal> table, instead of to the primary key:"
-msgstr "제3의 옵션은 상속 계층구조의 concrete 클래스들 만을 테이블들로 매핑하는 것이다 (table-per-concrete-class 방도). 여기서 각각의 테이블은 상속된 상태를 포함하여 클래스의 모든 영속 상태를 정의한다. Hibernate에서, 그것은 그런 상속 계층구조들을 명시적으로 매핑하는데 필수적이지 않다. 당신은 별도의 <literal><class></literal> 선언을 가진 각각의 클래스를 간단히 매핑시킬 수 있다. 하지만 당신이 다형성 연관관계들(예를 들면 당신의 계층구조의 슈퍼클래스에 대한 연관)을 사용하고자 원할 경우, 당신은 <literal><union-subclass></literal> 매핑을 사용할 필요가 있다."
+#. Tag: para
+#: basic_mapping.xml:1990
+#, no-c-format
+msgid ""
+"Then we might have some legacy data association which refers to this unique "
+"key of the <literal>Person</literal> table, instead of to the primary key:"
+msgstr ""
+"그 때 우리는 프라이머리 키가 아닌, <literal>Person</literal> 테이블의 이 유"
+"일 키를 참조하는 어떤 리거시 데이터 연관을 가질 수 있다:"
-#: index.docbook:1995
+#. Tag: programlisting
+#: basic_mapping.xml:1995
+#, no-c-format
msgid ""
- "<![CDATA[<many-to-one name=\"person\"\n"
- " class=\"Person\" property-ref=\"name\">\n"
- " <column name=\"firstName\"/>\n"
- " <column name=\"initial\"/>\n"
- " <column name=\"lastName\"/>\n"
- "</many-to-one>]]>"
+"<![CDATA[<many-to-one name=\"person\"\n"
+" class=\"Person\" property-ref=\"name\">\n"
+" <column name=\"firstName\"/>\n"
+" <column name=\"initial\"/>\n"
+" <column name=\"lastName\"/>\n"
+"</many-to-one>]]>"
msgstr ""
- "<![CDATA[<union-subclass\n"
- " name=\"ClassName\"\n"
- " table=\"tablename\"\n"
- " proxy=\"ProxyInterface\"\n"
- " lazy=\"true|false\"\n"
- " dynamic-update=\"true|false\"\n"
- " dynamic-insert=\"true|false\"\n"
- " schema=\"schema\"\n"
- " catalog=\"catalog\"\n"
- " extends=\"SuperclassName\"\n"
- " abstract=\"true|false\"\n"
- " persister=\"ClassName\"\n"
- " subselect=\"SQL expression\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name\">\n"
- "\n"
- " <property .... />\n"
- " .....\n"
- "</union-subclass>]]>"
-#: index.docbook:1997
-msgid "We don't recommend the use of this kind of thing outside the context of mapping legacy data."
-msgstr "<literal>name</literal>: 서브클래스의 전체 수식어가 붙은 클래스 명."
+#. Tag: para
+#: basic_mapping.xml:1997
+#, no-c-format
+msgid ""
+"We don't recommend the use of this kind of thing outside the context of "
+"mapping legacy data."
+msgstr ""
+"우리는 리거시 데이터를 매핑시키는 컨텍스트 바깥에서 이런 종류의 것을 사용하"
+"는 것을 권장하지 않는다."
-#: index.docbook:2005
+#. Tag: title
+#: basic_mapping.xml:2005
+#, no-c-format
msgid "subclass"
-msgstr "<literal>table</literal>: 서브클래스 테이블의 이름."
+msgstr "subclass"
-#: index.docbook:2007
-msgid "Finally, polymorphic persistence requires the declaration of each subclass of the root persistent class. For the table-per-class-hierarchy mapping strategy, the <literal><subclass></literal> declaration is used."
-msgstr "<literal>proxy</literal> (옵션): 프락시들을 lazy 초기화 시키는데 사용할 클래스 또는 인터페이스를 지정한다."
+#. Tag: para
+#: basic_mapping.xml:2007
+#, no-c-format
+msgid ""
+"Finally, polymorphic persistence requires the declaration of each subclass "
+"of the root persistent class. For the table-per-class-hierarchy mapping "
+"strategy, the <literal><subclass></literal> declaration is used."
+msgstr ""
+"마지막으로, 다형성 영속성은 루트 영속 클래스에 대한 각각의 서브클래스 선언을 "
+"필요로 한다.(권장되는) table-per-class-hierarchy(테이블 당 클래스 계층구조) "
+"매핑 방도의 경우, <literal><subclass></literal> 선언이 사용된다."
-#: index.docbook:2020
+#. Tag: programlisting
+#: basic_mapping.xml:2020
+#, no-c-format
msgid ""
- "<![CDATA[<subclass\n"
- " name=\"ClassName\"\n"
- " discriminator-value=\"discriminator_value\"\n"
- " proxy=\"ProxyInterface\"\n"
- " lazy=\"true|false\"\n"
- " dynamic-update=\"true|false\"\n"
- " dynamic-insert=\"true|false\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name\"\n"
- " extends=\"SuperclassName\">\n"
- "\n"
- " <property .... />\n"
- " .....\n"
- "</subclass>]]>"
-msgstr "<literal>lazy</literal> (옵션 - 디폴트는 <literal>true</literal>): <literal>lazy=\"false\"</literal> 설정은 lazy 페칭을 사용불가능하게 만든다."
+"<![CDATA[<subclass\n"
+" name=\"ClassName\"\n"
+" discriminator-value=\"discriminator_value\"\n"
+" proxy=\"ProxyInterface\"\n"
+" lazy=\"true|false\"\n"
+" dynamic-update=\"true|false\"\n"
+" dynamic-insert=\"true|false\"\n"
+" entity-name=\"EntityName\"\n"
+" node=\"element-name\"\n"
+" extends=\"SuperclassName\">\n"
+"\n"
+" <property .... />\n"
+" .....\n"
+"</subclass>]]>"
+msgstr ""
-#: index.docbook:2023, index.docbook:2081, index.docbook:2144
-msgid "<literal>name</literal>: The fully qualified class name of the subclass."
-msgstr "이 매핑 방도에는 판별자 컬럼이나 키 컬럼이 필요하지 않다."
+#. Tag: para
+#: basic_mapping.xml:2023 basic_mapping.xml:2081 basic_mapping.xml:2144
+#, fuzzy, no-c-format
+msgid ""
+"<literal>name</literal>: The fully qualified class name of the subclass."
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>name</literal>: 서브클래스의 전체 수식어가 붙은 클래스 이름.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>name</literal>: 서브클래스의 전체 수식어가 붙은 클래스 명.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>name</literal>: 서브클래스의 전체 수식어가 붙은 클래스 명."
-#: index.docbook:2028
-msgid "<literal>discriminator-value</literal> (optional - defaults to the class name): A value that distiguishes individual subclasses."
-msgstr "상속 매핑들에 대한 정보는 <xref linkend=\"inheritance\"/>을 보라."
+#. Tag: para
+#: basic_mapping.xml:2028
+#, no-c-format
+msgid ""
+"<literal>discriminator-value</literal> (optional - defaults to the class "
+"name): A value that distiguishes individual subclasses."
+msgstr ""
+"<literal>discriminator-value</literal> (옵션 - 디폴트는 클래스 이름): 개개의 "
+"서브클래스들을 구분짓는 값."
-#: index.docbook:2034, index.docbook:2091, index.docbook:2154
-msgid "<literal>proxy</literal> (optional): Specifies a class or interface to use for lazy initializing proxies."
-msgstr "join"
+#. Tag: para
+#: basic_mapping.xml:2034 basic_mapping.xml:2091 basic_mapping.xml:2154
+#, fuzzy, no-c-format
+msgid ""
+"<literal>proxy</literal> (optional): Specifies a class or interface to use "
+"for lazy initializing proxies."
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>proxy</literal> (옵션): lazy 초기화 프락시들을 사용하는데 클래스 또"
+"는 인터페이스를 지정한다.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>proxy</literal> (옵션): 프락시들을 lazy 초기화 시키는데 사용할 클래"
+"스 또는 인터페이스를 지정한다.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>proxy</literal> (옵션): 프락시들을 lazy 초기화 시키는데 사용할 클래"
+"스 또는 인터페이스를 지정한다."
-#: index.docbook:2040, index.docbook:2097, index.docbook:2160
-msgid "<literal>lazy</literal> (optional, defaults to <literal>true</literal>): Setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
-msgstr "<literal><join></literal>요소를 사용하면, 테이블들 사이에 1대일 관계가 존재할 때, 하나의 클래스에 속한 프로퍼티들을 여러 테이블들로 매핑시키는 것이 가능하다."
+#. Tag: para
+#: basic_mapping.xml:2040 basic_mapping.xml:2097 basic_mapping.xml:2160
+#, fuzzy, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional, defaults to <literal>true</literal>): "
+"Setting <literal>lazy=\"false\"</literal> disables the use of lazy fetching."
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>true</literal>): "
+"<literal>lazy=\"false\"</literal> 설정은 lazy 페칭의 사용을 불가능하게 만든"
+"다.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>true</literal>): "
+"<literal>lazy=\"false\"</literal> 설정은 lazy 페칭을 사용불가능하게 만든다\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>true</literal>): "
+"<literal>lazy=\"false\"</literal> 설정은 lazy 페칭을 사용불가능하게 만든다."
-#: index.docbook:2048
-msgid "Each subclass should declare its own persistent properties and subclasses. <literal><version></literal> and <literal><id></literal> properties are assumed to be inherited from the root class. Each subclass in a heirarchy must define a unique <literal>discriminator-value</literal>. If none is specified, the fully qualified Java class name is used."
+#. Tag: para
+#: basic_mapping.xml:2048
+#, no-c-format
+msgid ""
+"Each subclass should declare its own persistent properties and subclasses. "
+"<literal><version></literal> and <literal><id></literal> "
+"properties are assumed to be inherited from the root class. Each subclass in "
+"a heirarchy must define a unique <literal>discriminator-value</literal>. If "
+"none is specified, the fully qualified Java class name is used."
msgstr ""
- "<![CDATA[<join\n"
- " table=\"tablename\"\n"
- " schema=\"owner\"\n"
- " catalog=\"catalog\"\n"
- " fetch=\"join|select\"\n"
- " inverse=\"true|false\"\n"
- " optional=\"true|false\">\n"
- " \n"
- " <key ... />\n"
- " \n"
- " <property ... />\n"
- " ...\n"
- "</join>]]>"
+"각각의 서브클래스는 그것 자신의 영속 프로퍼티들과 서브클래스들을 선언할 것이"
+"다. <literal><version></literal> 프로퍼티와 <literal><id></"
+"literal> 프로퍼티는 루트 클래스로부터 상속된다고 가정된다. 계층구조 내에서 각"
+"각의 서브클래스는 유일한 <literal>discriminator-value</literal>를 정의해야 한"
+"다. none이 지정될 경우, 전체 수식어가 붙은 자바 클래스 이름이 사용된다."
-#: index.docbook:2056, index.docbook:2114, index.docbook:2172
-msgid "For information about inheritance mappings, see <xref linkend=\"inheritance\"/>."
-msgstr "<literal>table</literal>: 조인된 테이블의 이름."
+#. Tag: para
+#: basic_mapping.xml:2056 basic_mapping.xml:2114 basic_mapping.xml:2172
+#, no-c-format
+msgid ""
+"For information about inheritance mappings, see <xref linkend=\"inheritance"
+"\"/>."
+msgstr "상속 매핑들에 대한 정보는 <xref linkend=\"inheritance\"/>을 보라."
-#: index.docbook:2063
+#. Tag: title
+#: basic_mapping.xml:2063
+#, no-c-format
msgid "joined-subclass"
-msgstr "<literal>schema</literal> (옵션): 루트 <literal><hibernate-mapping></literal> 요소에 의해 지정된 스키마 이름을 오버라이드 시킨다"
+msgstr "joined-subclass"
-#: index.docbook:2065
-msgid "Alternatively, each subclass may be mapped to its own table (table-per-subclass mapping strategy). Inherited state is retrieved by joining with the table of the superclass. We use the <literal><joined-subclass></literal> element."
-msgstr "<literal>catalog</literal> (옵션): 루트 <literal><hibernate-mapping></literal> 요소에 의해 지정된 카타록 이름을 오버라이드 시킨다."
+#. Tag: para
+#: basic_mapping.xml:2065
+#, no-c-format
+msgid ""
+"Alternatively, each subclass may be mapped to its own table (table-per-"
+"subclass mapping strategy). Inherited state is retrieved by joining with the "
+"table of the superclass. We use the <literal><joined-subclass></"
+"literal> element."
+msgstr ""
+"다른 방법으로 각각의 서브클래스는 그것 자신이 테이블로 매핑될 수 있다(table-"
+"per-subclass 매핑 방도). 상속된 상태는 슈퍼클래스의 테이블과 조인함으로써 검"
+"색된다. 우리는 <literal><joined-subclass></literal> 요소를 사용한다."
-#: index.docbook:2078
+#. Tag: programlisting
+#: basic_mapping.xml:2078
+#, no-c-format
msgid ""
- "<![CDATA[<joined-subclass\n"
- " name=\"ClassName\"\n"
- " table=\"tablename\"\n"
- " proxy=\"ProxyInterface\"\n"
- " lazy=\"true|false\"\n"
- " dynamic-update=\"true|false\"\n"
- " dynamic-insert=\"true|false\"\n"
- " schema=\"schema\"\n"
- " catalog=\"catalog\"\n"
- " extends=\"SuperclassName\"\n"
- " persister=\"ClassName\"\n"
- " subselect=\"SQL expression\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name\">\n"
- "\n"
- " <key .... >\n"
- "\n"
- " <property .... />\n"
- " .....\n"
- "</joined-subclass>]]>"
-msgstr "<literal>fetch</literal> (옵션 - 디폴트는 <literal>join</literal>): <literal>join</literal>으로 설정될 경우, 디폴트로 Hibernate는 하나의 클래스 또는 그것의 슈퍼 클래스들에 의해 정의된 <literal><join></literal>을 검색하는데 inner join을 사용하고 서브클래스에 의해 정의된 <literal><join></literal>을 검색하는데 outer join을 사용할 것이다. 만일 <literal>select</literal>로 설정할 경우, Hibernate는 서브클래스 상에 정의된 <literal><join></literal>에 대해 sequential select를 사용할 것이고, 그것은 한 행이 서브클래스의 인스턴스를 표현하는 것으로 판명되는 경우에만 명령이 내려질 것이다. inner join들은 여전히 클래스와 그것의 슈퍼클래스들에 의해 정의된 <literal><join></literal>을 검색하는데 사용될 것이다."
+"<![CDATA[<joined-subclass\n"
+" name=\"ClassName\"\n"
+" table=\"tablename\"\n"
+" proxy=\"ProxyInterface\"\n"
+" lazy=\"true|false\"\n"
+" dynamic-update=\"true|false\"\n"
+" dynamic-insert=\"true|false\"\n"
+" schema=\"schema\"\n"
+" catalog=\"catalog\"\n"
+" extends=\"SuperclassName\"\n"
+" persister=\"ClassName\"\n"
+" subselect=\"SQL expression\"\n"
+" entity-name=\"EntityName\"\n"
+" node=\"element-name\">\n"
+"\n"
+" <key .... >\n"
+"\n"
+" <property .... />\n"
+" .....\n"
+"</joined-subclass>]]>"
+msgstr ""
-#: index.docbook:2086, index.docbook:2149
+#. Tag: para
+#: basic_mapping.xml:2086 basic_mapping.xml:2149
+#, no-c-format
msgid "<literal>table</literal>: The name of the subclass table."
-msgstr "<literal>optional</literal> (옵션 - 디폴트는 <literal>false</literal>): 이용 가능할 경우, Hibernate는 이 조인에 의해 정의된 프로퍼티들이 null이 아닐 경우에만 한 행을 삽입시킬 것이고 그 프로퍼티들을 검색하는데 outer join을 항상 사용할 것이다."
+msgstr "<literal>table</literal>: 서브클래스 테이블의 이름."
-#: index.docbook:2105
-msgid "No discriminator column is required for this mapping strategy. Each subclass must, however, declare a table column holding the object identifier using the <literal><key></literal> element. The mapping at the start of the chapter would be re-written as:"
-msgstr "이 특징은 자주 리거시 데이터 모형들에 대해서만 유용하고, 우리는 클래스들과 잘 정제된 도메인 모형 보다 더 적은 테이블들을 권장한다. 하지만 뒷 부분에 설명되어 있듯이, 그것은 하나의 계층구조 내에 있는 상속 매핑 방도들 사이를 전환하는 것에 유용하다."
+#. Tag: para
+#: basic_mapping.xml:2105
+#, no-c-format
+msgid ""
+"No discriminator column is required for this mapping strategy. Each subclass "
+"must, however, declare a table column holding the object identifier using "
+"the <literal><key></literal> element. The mapping at the start of the "
+"chapter would be re-written as:"
+msgstr ""
+"판별자(discriminator) 컬럼은 이 매핑 방도에 필요하지 않다. 하지만 각각의 서브"
+"클래스는 <literal><key></literal> 요소를 사용하여 객체 식별자를 보관하"
+"는 테이블 컬럼을 선언해야 한다. 이 장의 시작 부분에 있는 매핑은 다음과 같이 "
+"다시 작성될 것이다:"
-#: index.docbook:2112
+#. Tag: programlisting
+#: basic_mapping.xml:2112
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping package=\"eg\">\n"
- "\n"
- " <class name=\"Cat\" table=\"CATS\">\n"
- " <id name=\"id\" column=\"uid\" type=\"long\">\n"
- " <generator class=\"hilo\"/>\n"
- " </id>\n"
- " <property name=\"birthdate\" type=\"date\"/>\n"
- " <property name=\"color\" not-null=\"true\"/>\n"
- " <property name=\"sex\" not-null=\"true\"/>\n"
- " <property name=\"weight\"/>\n"
- " <many-to-one name=\"mate\"/>\n"
- " <set name=\"kittens\">\n"
- " <key column=\"MOTHER\"/>\n"
- " <one-to-many class=\"Cat\"/>\n"
- " </set>\n"
- " <joined-subclass name=\"DomesticCat\" table=\"DOMESTIC_CATS\">\n"
- " <key column=\"CAT\"/>\n"
- " <property name=\"name\" type=\"string\"/>\n"
- " </joined-subclass>\n"
- " </class>\n"
- "\n"
- " <class name=\"eg.Dog\">\n"
- " <!-- mapping for Dog could go here -->\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-msgstr "<title>key</title>"
+"<![CDATA[<?xml version=\"1.0\"?>\n"
+"<!DOCTYPE hibernate-mapping PUBLIC\n"
+" \"-//Hibernate/Hibernate Mapping DTD//EN\"\n"
+" \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+"\n"
+"<hibernate-mapping package=\"eg\">\n"
+"\n"
+" <class name=\"Cat\" table=\"CATS\">\n"
+" <id name=\"id\" column=\"uid\" type=\"long\">\n"
+" <generator class=\"hilo\"/>\n"
+" </id>\n"
+" <property name=\"birthdate\" type=\"date\"/>\n"
+" <property name=\"color\" not-null=\"true\"/>\n"
+" <property name=\"sex\" not-null=\"true\"/>\n"
+" <property name=\"weight\"/>\n"
+" <many-to-one name=\"mate\"/>\n"
+" <set name=\"kittens\">\n"
+" <key column=\"MOTHER\"/>\n"
+" <one-to-many class=\"Cat\"/>\n"
+" </set>\n"
+" <joined-subclass name=\"DomesticCat\" table=\"DOMESTIC_CATS"
+"\">\n"
+" <key column=\"CAT\"/>\n"
+" <property name=\"name\" type=\"string\"/>\n"
+" </joined-subclass>\n"
+" </class>\n"
+"\n"
+" <class name=\"eg.Dog\">\n"
+" <!-- mapping for Dog could go here -->\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
+msgstr ""
-#: index.docbook:2121
+#. Tag: title
+#: basic_mapping.xml:2121
+#, no-c-format
msgid "union-subclass"
+msgstr "union-subclass"
+
+#. Tag: para
+#: basic_mapping.xml:2123
+#, no-c-format
+msgid ""
+"A third option is to map only the concrete classes of an inheritance "
+"hierarchy to tables, (the table-per-concrete-class strategy) where each "
+"table defines all persistent state of the class, including inherited state. "
+"In Hibernate, it is not absolutely necessary to explicitly map such "
+"inheritance hierarchies. You can simply map each class with a separate "
+"<literal><class></literal> declaration. However, if you wish use "
+"polymorphic associations (e.g. an association to the superclass of your "
+"hierarchy), you need to use the <literal><union-subclass></literal> "
+"mapping."
msgstr ""
- "<![CDATA[<key\n"
- " column=\"columnname\"\n"
- " on-delete=\"noaction|cascade\"\n"
- " property-ref=\"propertyName\"\n"
- " not-null=\"true|false\"\n"
- " update=\"true|false\"\n"
- " unique=\"true|false\"\n"
- "/>]]>"
+"제3의 옵션은 상속 계층구조의 concrete 클래스들 만을 테이블들로 매핑하는 것이"
+"다 (table-per-concrete-class 방도). 여기서 각각의 테이블은 상속된 상태를 포함"
+"하여 클래스의 모든 영속 상태를 정의한다. Hibernate에서, 그것은 그런 상속 계층"
+"구조들을 명시적으로 매핑하는데 필수적이지 않다. 당신은 별도의 <literal><"
+"class></literal> 선언을 가진 각각의 클래스를 간단히 매핑시킬 수 있다. 하지"
+"만 당신이 다형성 연관관계들(예를 들면 당신의 계층구조의 슈퍼클래스에 대한 연"
+"관)을 사용하고자 원할 경우, 당신은 <literal><union-subclass></literal> "
+"매핑을 사용할 필요가 있다."
-#: index.docbook:2123
-msgid "A third option is to map only the concrete classes of an inheritance hierarchy to tables, (the table-per-concrete-class strategy) where each table defines all persistent state of the class, including inherited state. In Hibernate, it is not absolutely necessary to explicitly map such inheritance hierarchies. You can simply map each class with a separate <literal><class></literal> declaration. However, if you wish use polymorphic associations (e.g. an association to the superclass of your hierarchy), you need to use the <literal><union-subclass></literal> mapping."
-msgstr "<literal>column</literal> (옵션): foreign key 컬럼의 이름. 이것은 또한 내포된 <literal><column></literal> 요소(들)에 의해 지정될 수 있다."
+#. Tag: programlisting
+#: basic_mapping.xml:2141
+#, no-c-format
+msgid ""
+"<![CDATA[<union-subclass\n"
+" name=\"ClassName\"\n"
+" table=\"tablename\"\n"
+" proxy=\"ProxyInterface\"\n"
+" lazy=\"true|false\"\n"
+" dynamic-update=\"true|false\"\n"
+" dynamic-insert=\"true|false\"\n"
+" schema=\"schema\"\n"
+" catalog=\"catalog\"\n"
+" extends=\"SuperclassName\"\n"
+" abstract=\"true|false\"\n"
+" persister=\"ClassName\"\n"
+" subselect=\"SQL expression\"\n"
+" entity-name=\"EntityName\"\n"
+" node=\"element-name\">\n"
+"\n"
+" <property .... />\n"
+" .....\n"
+"</union-subclass>]]>"
+msgstr ""
-#: index.docbook:2141
+#. Tag: para
+#: basic_mapping.xml:2168
+#, no-c-format
msgid ""
- "<![CDATA[<union-subclass\n"
- " name=\"ClassName\"\n"
- " table=\"tablename\"\n"
- " proxy=\"ProxyInterface\"\n"
- " lazy=\"true|false\"\n"
- " dynamic-update=\"true|false\"\n"
- " dynamic-insert=\"true|false\"\n"
- " schema=\"schema\"\n"
- " catalog=\"catalog\"\n"
- " extends=\"SuperclassName\"\n"
- " abstract=\"true|false\"\n"
- " persister=\"ClassName\"\n"
- " subselect=\"SQL expression\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name\">\n"
- "\n"
- " <property .... />\n"
- " .....\n"
- "</union-subclass>]]>"
-msgstr "<literal>on-delete</literal> (옵션 - 디폴트는 <literal>noaction</literal>): foreign key 컨스트레인트가 데이터베이스 레벨의 cascade delete를 사용가능하도록 할 것인지 여부를 지정한다."
+"No discriminator column or key column is required for this mapping strategy."
+msgstr "이 매핑 방도에는 판별자 컬럼이나 키 컬럼이 필요하지 않다."
-#: index.docbook:2168
-msgid "No discriminator column or key column is required for this mapping strategy."
-msgstr "우리는 delete 퍼포먼스가 중요한 시스템들에 대해 권장하고, 모든 키들은 <literal>on-delete=\"cascade\"</literal>로 정의되고, Hibernate는 많은 <literal>DELETE</literal> 문장들 대신에, 데이터베이스 레벨의 <literal>ON CASCADE DELETE</literal> 컨스트레인트를 사용할 것이다. 이 특징은 Hibernate의 통상적인 버전화된 데이터에 대한 optimistic 잠금 방도를 무시한다는 점을 알고 있어라."
-
-#: index.docbook:2179
+#. Tag: title
+#: basic_mapping.xml:2179
+#, no-c-format
msgid "join"
-msgstr "column 요소와 formula 요소"
+msgstr "join"
-#: index.docbook:2181
-msgid "Using the <literal><join></literal> element, it is possible to map properties of one class to several tables, when there's a 1-to-1 relationship between the tables."
-msgstr "column 속성을 허용하는 임의의 매핑 요소는 대안적으로 하나의 <literal><column></literal> 서브요소를 수용할 것이다. 비슷하게 <literal><formula></literal>는 <literal>formula</literal> 속성에 대한 대안이다."
+#. Tag: para
+#: basic_mapping.xml:2181
+#, no-c-format
+msgid ""
+"Using the <literal><join></literal> element, it is possible to map "
+"properties of one class to several tables, when there's a 1-to-1 "
+"relationship between the tables."
+msgstr ""
+"<literal><join></literal>요소를 사용하면, 테이블들 사이에 1대일 관계가 "
+"존재할 때, 하나의 클래스에 속한 프로퍼티들을 여러 테이블들로 매핑시키는 것이 "
+"가능하다."
-#: index.docbook:2195
+#. Tag: programlisting
+#: basic_mapping.xml:2195
+#, no-c-format
msgid ""
- "<![CDATA[<join\n"
- " table=\"tablename\"\n"
- " schema=\"owner\"\n"
- " catalog=\"catalog\"\n"
- " fetch=\"join|select\"\n"
- " inverse=\"true|false\"\n"
- " optional=\"true|false\">\n"
- "\n"
- " <key ... />\n"
- "\n"
- " <property ... />\n"
- " ...\n"
- "</join>]]>"
+"<![CDATA[<join\n"
+" table=\"tablename\"\n"
+" schema=\"owner\"\n"
+" catalog=\"catalog\"\n"
+" fetch=\"join|select\"\n"
+" inverse=\"true|false\"\n"
+" optional=\"true|false\">\n"
+"\n"
+" <key ... />\n"
+"\n"
+" <property ... />\n"
+" ...\n"
+"</join>]]>"
msgstr ""
- "<![CDATA[<column\n"
- " name=\"column_name\"\n"
- " length=\"N\"\n"
- " precision=\"N\"\n"
- " scale=\"N\"\n"
- " not-null=\"true|false\"\n"
- " unique=\"true|false\"\n"
- " unique-key=\"multicolumn_unique_key_name\"\n"
- " index=\"index_name\"\n"
- " sql-type=\"sql_type_name\"\n"
- " check=\"SQL expression\"\n"
- " default=\"SQL expression\"/>]]>"
-#: index.docbook:2199
+#. Tag: para
+#: basic_mapping.xml:2199
+#, no-c-format
msgid "<literal>table</literal>: The name of the joined table."
-msgstr "<![CDATA[<formula>SQL expression</formula>]]>"
+msgstr "<literal>table</literal>: 조인된 테이블의 이름."
-#: index.docbook:2216
-msgid "<literal>fetch</literal> (optional - defaults to <literal>join</literal>): If set to <literal>join</literal>, the default, Hibernate will use an inner join to retrieve a <literal><join></literal> defined by a class or its superclasses and an outer join for a <literal><join></literal> defined by a subclass. If set to <literal>select</literal> then Hibernate will use a sequential select for a <literal><join></literal> defined on a subclass, which will be issued only if a row turns out to represent an instance of the subclass. Inner joins will still be used to retrieve a <literal><join></literal> defined by the class and its superclasses."
-msgstr "import"
+#. Tag: para
+#: basic_mapping.xml:2216
+#, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional - defaults to <literal>join</literal>): "
+"If set to <literal>join</literal>, the default, Hibernate will use an inner "
+"join to retrieve a <literal><join></literal> defined by a class or its "
+"superclasses and an outer join for a <literal><join></literal> defined "
+"by a subclass. If set to <literal>select</literal> then Hibernate will use a "
+"sequential select for a <literal><join></literal> defined on a "
+"subclass, which will be issued only if a row turns out to represent an "
+"instance of the subclass. Inner joins will still be used to retrieve a "
+"<literal><join></literal> defined by the class and its superclasses."
+msgstr ""
+"<literal>fetch</literal> (옵션 - 디폴트는 <literal>join</literal>): "
+"<literal>join</literal>으로 설정될 경우, 디폴트로 Hibernate는 하나의 클래스 "
+"또는 그것의 슈퍼 클래스들에 의해 정의된 <literal><join></literal>을 검"
+"색하는데 inner join을 사용하고 서브클래스에 의해 정의된 <literal><join>"
+"</literal>을 검색하는데 outer join을 사용할 것이다. 만일 <literal>select</"
+"literal>로 설정할 경우, Hibernate는 서브클래스 상에 정의된 <literal><"
+"join></literal>에 대해 sequential select를 사용할 것이고, 그것은 한 행이 "
+"서브클래스의 인스턴스를 표현하는 것으로 판명되는 경우에만 명령이 내려질 것이"
+"다. inner join들은 여전히 클래스와 그것의 슈퍼클래스들에 의해 정의된 "
+"<literal><join></literal>을 검색하는데 사용될 것이다."
-#: index.docbook:2229
-msgid "<literal>inverse</literal> (optional - defaults to <literal>false</literal>): If enabled, Hibernate will not try to insert or update the properties defined by this join."
-msgstr "당신의 어플리케이션이 동일한 이름을 가진 두 개의 영속 클래스들을 갖고, 당신이 Hibernate 질의들 내에서 전체 수식어가 붙은 (패키지)이름을 지정하는 것을 원하지 않는다고 가정하자. 클래스들은 <literal>auto-import=\"true\"</literal>에 의존하기 보다 명시적으로 \"임포트 될 \" 것이다. 당신은 심지어 명시적으로 매핑되지 않는 클래스들과 인터페이스들을 임포트 시킬 수(가져오기 할 수) 있다."
+#. Tag: para
+#: basic_mapping.xml:2229
+#, no-c-format
+msgid ""
+"<literal>inverse</literal> (optional - defaults to <literal>false</"
+"literal>): If enabled, Hibernate will not try to insert or update the "
+"properties defined by this join."
+msgstr ""
+"<literal>inverse</literal> (옵션 - 디폴트는 <literal>false</literal>): 이용 "
+"가능할 경우, Hibernate는 이 조인에 의해 정의된 프로퍼티들을 삽입시키거나 업데"
+"이트하려고 시도하지 않을 것이다."
-#: index.docbook:2236
-msgid "<literal>optional</literal> (optional - defaults to <literal>false</literal>): If enabled, Hibernate will insert a row only if the properties defined by this join are non-null and will always use an outer join to retrieve the properties."
-msgstr "<![CDATA[<import class=\"java.lang.Object\" rename=\"Universe\"/>]]>"
+#. Tag: para
+#: basic_mapping.xml:2236
+#, no-c-format
+msgid ""
+"<literal>optional</literal> (optional - defaults to <literal>false</"
+"literal>): If enabled, Hibernate will insert a row only if the properties "
+"defined by this join are non-null and will always use an outer join to "
+"retrieve the properties."
+msgstr ""
+"<literal>optional</literal> (옵션 - 디폴트는 <literal>false</literal>): 이용 "
+"가능할 경우, Hibernate는 이 조인에 의해 정의된 프로퍼티들이 null이 아닐 경우"
+"에만 한 행을 삽입시킬 것이고 그 프로퍼티들을 검색하는데 outer join을 항상 사"
+"용할 것이다."
-#: index.docbook:2245
-msgid "For example, the address information for a person can be mapped to a separate table (while preserving value type semantics for all properties):"
+#. Tag: para
+#: basic_mapping.xml:2245
+#, no-c-format
+msgid ""
+"For example, the address information for a person can be mapped to a "
+"separate table (while preserving value type semantics for all properties):"
msgstr ""
- "<![CDATA[<import\n"
- " class=\"ClassName\"\n"
- " rename=\"ShortName\"\n"
- "/>]]>"
+"예를 들어, (모든 프로퍼티들에 대해 value 타입 의미를 유지하면서) 개인의 주소 "
+"정보는 별도의 테이블에 매핑될 수 있다:"
-#: index.docbook:2250
+#. Tag: programlisting
+#: basic_mapping.xml:2250
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\"\n"
- " table=\"PERSON\">\n"
- "\n"
- " <id name=\"id\" column=\"PERSON_ID\">...</id>\n"
- "\n"
- " <join table=\"ADDRESS\">\n"
- " <key column=\"ADDRESS_ID\"/>\n"
- " <property name=\"address\"/>\n"
- " <property name=\"zip\"/>\n"
- " <property name=\"country\"/>\n"
- " </join>\n"
- " ...]]>"
-msgstr "<literal>class</literal>: 임의의 Java 클래스의 전체 수식어가 붙은 클래스 이름."
+"<![CDATA[<class name=\"Person\"\n"
+" table=\"PERSON\">\n"
+"\n"
+" <id name=\"id\" column=\"PERSON_ID\">...</id>\n"
+"\n"
+" <join table=\"ADDRESS\">\n"
+" <key column=\"ADDRESS_ID\"/>\n"
+" <property name=\"address\"/>\n"
+" <property name=\"zip\"/>\n"
+" <property name=\"country\"/>\n"
+" </join>\n"
+" ...]]>"
+msgstr ""
-#: index.docbook:2252
-msgid "This feature is often only useful for legacy data models, we recommend fewer tables than classes and a fine-grained domain model. However, it is useful for switching between inheritance mapping strategies in a single hierarchy, as explained later."
-msgstr "<literal>rename</literal> (옵션 - 디폴트는 수식어가 붙지 않은 클래스 이름): 질의 언어 내에서 사용될 이름."
+#. Tag: para
+#: basic_mapping.xml:2252
+#, no-c-format
+msgid ""
+"This feature is often only useful for legacy data models, we recommend fewer "
+"tables than classes and a fine-grained domain model. However, it is useful "
+"for switching between inheritance mapping strategies in a single hierarchy, "
+"as explained later."
+msgstr ""
+"이 특징은 자주 리거시 데이터 모형들에 대해서만 유용하고, 우리는 클래스들과 "
+"잘 정제된 도메인 모형 보다 더 적은 테이블들을 권장한다. 하지만 뒷 부분에 설명"
+"되어 있듯이, 그것은 하나의 계층구조 내에 있는 상속 매핑 방도들 사이를 전환하"
+"는 것에 유용하다."
-#: index.docbook:2262
+#. Tag: title
+#: basic_mapping.xml:2262
+#, no-c-format
msgid "<title>key</title>"
-msgstr "<title>any</title>"
+msgstr ""
-#: index.docbook:2264
-msgid "We've seen the <literal><key></literal> element crop up a few times now. It appears anywhere the parent mapping element defines a join to a new table, and defines the foreign key in the joined table, that references the primary key of the original table."
-msgstr "하나 이상의 프로퍼티 매핑 타입이 존재한다. <literal><any></literal> 매핑 요소는 여러 테이블들로부터 클래스들에 대한 하나의 다형성 연관관계를 정의한다. 이 매핑 타입은 언제나 하나 이상의 컬럼을 필요로 한다. 첫 번째 컬럼은 연관된 엔티티의 타입을 보관한다. 나머지 컬럼들은 식별자를 보관한다. 이런 종류의 연관관계들에 대해 foreign key 컨스트레인트를 지정하는 것이 불가능해서, 이것은 (다형성) 연관관계들을 매핑하는 통상적인 방법으로서 가장 확실한 수단이 아니다. 당신은 매우 특별한 경우들 (예를 들어 감사 로그들, 사용자 세션 데이터 등)에서만 이것을 사용해야 한다."
+#. Tag: para
+#: basic_mapping.xml:2264
+#, no-c-format
+msgid ""
+"We've seen the <literal><key></literal> element crop up a few times "
+"now. It appears anywhere the parent mapping element defines a join to a new "
+"table, and defines the foreign key in the joined table, that references the "
+"primary key of the original table."
+msgstr ""
+"우리는 지금까지 몇 번 나타났던 <literal><key></literal> 요소를 보았다. "
+"그것은 부모 매핑 요소가 새로운 테이블에 대한 조인을 정의하는 어느 곳에서나 나"
+"타나고, 그것은 조인된 테이블의 foreign 키를 정의하고, 그것은 원래의 테이블의 "
+"프라이머리 키를 참조한다."
-#: index.docbook:2280
+#. Tag: programlisting
+#: basic_mapping.xml:2280
+#, no-c-format
msgid ""
- "<![CDATA[<key\n"
- " column=\"columnname\"\n"
- " on-delete=\"noaction|cascade\"\n"
- " property-ref=\"propertyName\"\n"
- " not-null=\"true|false\"\n"
- " update=\"true|false\"\n"
- " unique=\"true|false\"\n"
- "/>]]>"
-msgstr "<literal>meta-type</literal> 속성은 어플리케이션으로 하여금 데이터베이스 컬럼 값들을 <literal>id-type</literal>에 의해 지정된 타입의 식별자 프로퍼티들을 가진 영속 클래스들로 매핑시키는 맞춤형 타입을 지정하도록 한다. 당신은 meta-type의 값들로부터 클래스 이름들로의 매핑을 지정해야 한다."
+"<![CDATA[<key\n"
+" column=\"columnname\"\n"
+" on-delete=\"noaction|cascade\"\n"
+" property-ref=\"propertyName\"\n"
+" not-null=\"true|false\"\n"
+" update=\"true|false\"\n"
+" unique=\"true|false\"\n"
+"/>]]>"
+msgstr ""
-#: index.docbook:2291
-msgid "<literal>on-delete</literal> (optional, defaults to <literal>noaction</literal>): Specifies whether the foreign key constraint has database-level cascade delete enabled."
+#. Tag: para
+#: basic_mapping.xml:2291
+#, no-c-format
+msgid ""
+"<literal>on-delete</literal> (optional, defaults to <literal>noaction</"
+"literal>): Specifies whether the foreign key constraint has database-level "
+"cascade delete enabled."
msgstr ""
- "<![CDATA[<any\n"
- " name=\"propertyName\"\n"
- " id-type=\"idtypename\"\n"
- " meta-type=\"metatypename\"\n"
- " cascade=\"cascade_style\"\n"
- " access=\"field|property|ClassName\"\n"
- " optimistic-lock=\"true|false\"\n"
- ">\n"
- " <meta-value ... />\n"
- " <meta-value ... />\n"
- " .....\n"
- " <column .... />\n"
- " <column .... />\n"
- " .....\n"
- "</any>]]>"
+"<literal>on-delete</literal> (옵션 - 디폴트는 <literal>noaction</literal>): "
+"foreign key 컨스트레인트가 데이터베이스 레벨의 cascade delete를 사용가능하도"
+"록 할 것인지 여부를 지정한다."
-#: index.docbook:2298
-msgid "<literal>property-ref</literal> (optional): Specifies that the foreign key refers to columns that are not the primary key of the orginal table. (Provided for legacy data.)"
-msgstr "<literal>name</literal>: 프로퍼티 이름."
+#. Tag: para
+#: basic_mapping.xml:2298
+#, no-c-format
+msgid ""
+"<literal>property-ref</literal> (optional): Specifies that the foreign key "
+"refers to columns that are not the primary key of the orginal table. "
+"(Provided for legacy data.)"
+msgstr ""
+"<literal>property-ref</literal> (옵션): foreign key가 원래의 테이블의 프라이"
+"머리 키가 아닌 컬럼들을 참조함을 지정한다. (리거시 데이터에 제공됨.)"
-#: index.docbook:2305
-msgid "<literal>not-null</literal> (optional): Specifies that the foreign key columns are not nullable (this is implied whenever the foreign key is also part of the primary key)."
-msgstr "<literal>id-type</literal>: 식별자 타입."
+#. Tag: para
+#: basic_mapping.xml:2305
+#, no-c-format
+msgid ""
+"<literal>not-null</literal> (optional): Specifies that the foreign key "
+"columns are not nullable (this is implied whenever the foreign key is also "
+"part of the primary key)."
+msgstr ""
+"<literal>not-null</literal> (옵션): foreign 키 컬럼들이 not null 임를 지정한"
+"다(이것은 foreign 키가 또한 프라이머리 키의 부분일 때마다 함축된다)."
-#: index.docbook:2312
-msgid "<literal>update</literal> (optional): Specifies that the foreign key should never be updated (this is implied whenever the foreign key is also part of the primary key)."
-msgstr "<literal>meta-type</literal> (옵션 - 디폴트는 <literal>string</literal>): discriminator 매핑에 허용되는 임의의 타입."
+#. Tag: para
+#: basic_mapping.xml:2312
+#, no-c-format
+msgid ""
+"<literal>update</literal> (optional): Specifies that the foreign key should "
+"never be updated (this is implied whenever the foreign key is also part of "
+"the primary key)."
+msgstr ""
+"<literal>update</literal> (옵션): foreign 키가 결코 업데이트되지 않아야 함을 "
+"지정한다(이것은 foreign 키가 또한 프라이머리 키의 부분일 때마다 함축된다)."
-#: index.docbook:2319
-msgid "<literal>unique</literal> (optional): Specifies that the foreign key should have a unique constraint (this is implied whenever the foreign key is also the primary key)."
-msgstr "<literal>cascade</literal> (optional- defaults to <literal>none</literal>): cascade 스타일."
+#. Tag: para
+#: basic_mapping.xml:2319
+#, no-c-format
+msgid ""
+"<literal>unique</literal> (optional): Specifies that the foreign key should "
+"have a unique constraint (this is implied whenever the foreign key is also "
+"the primary key)."
+msgstr ""
+"<literal>unique</literal> (옵션): foreign 키가 유일 컨스트레인트를 가져야 함"
+"을 지정한다 (이것은 foreign 키가 또한 프라이머리 키의 부분일 때마다 함축된"
+"다)."
-#: index.docbook:2327
-msgid "We recommend that for systems where delete performance is important, all keys should be defined <literal>on-delete=\"cascade\"</literal>, and Hibernate will use a database-level <literal>ON CASCADE DELETE</literal> constraint, instead of many individual <literal>DELETE</literal> statements. Be aware that this feature bypasses Hibernate's usual optimistic locking strategy for versioned data."
-msgstr "<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): Hibernate가 프로퍼티 값에 접근하는데 사용할 방도."
+#. Tag: para
+#: basic_mapping.xml:2327
+#, no-c-format
+msgid ""
+"We recommend that for systems where delete performance is important, all "
+"keys should be defined <literal>on-delete=\"cascade\"</literal>, and "
+"Hibernate will use a database-level <literal>ON CASCADE DELETE</literal> "
+"constraint, instead of many individual <literal>DELETE</literal> statements. "
+"Be aware that this feature bypasses Hibernate's usual optimistic locking "
+"strategy for versioned data."
+msgstr ""
+"우리는 delete 퍼포먼스가 중요한 시스템들에 대해 권장하고, 모든 키들은 "
+"<literal>on-delete=\"cascade\"</literal>로 정의되고, Hibernate는 많은 "
+"<literal>DELETE</literal> 문장들 대신에, 데이터베이스 레벨의 <literal>ON "
+"CASCADE DELETE</literal> 컨스트레인트를 사용할 것이다. 이 특징은 Hibernate의 "
+"통상적인 버전화된 데이터에 대한 optimistic 잠금 방도를 무시한다는 점을 알고 "
+"있어라."
-#: index.docbook:2335
-msgid "The <literal>not-null</literal> and <literal>update</literal> attributes are useful when mapping a unidirectional one to many association. If you map a unidirectional one to many to a non-nullable foreign key, you <emphasis>must</emphasis> declare the key column using <literal><key not-null=\"true\"></literal>."
-msgstr "<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</literal>): 이 프로퍼티에 대한 업데이트들이 optimistic 잠금 획득을 필요로 하는지 여부를 지정한다. 달리 말해, 이 프로퍼티가 dirty일 경우에 버전증가가 발생할 것인지 여부를 정의한다."
+#. Tag: para
+#: basic_mapping.xml:2335
+#, no-c-format
+msgid ""
+"The <literal>not-null</literal> and <literal>update</literal> attributes are "
+"useful when mapping a unidirectional one to many association. If you map a "
+"unidirectional one to many to a non-nullable foreign key, you "
+"<emphasis>must</emphasis> declare the key column using <literal><key not-"
+"null=\"true\"></literal>."
+msgstr ""
+"<literal>not-null</literal> 속성과 <literal>update</literal> 속성들은 단방향 "
+"one to many 연관관계를 매핑할 때 유용하다. 만일 당신이 단방향 one to many를 "
+"null이 허용되지 않는 foreign 키로 매핑할 경우, 당신은 <literal><key not-"
+"null=\"true\"></literal>를 사용하여 그 키 컬럼을 선언<emphasis>해야 한다</"
+"emphasis>."
-#: index.docbook:2345
+#. Tag: title
+#: basic_mapping.xml:2345
+#, no-c-format
msgid "column and formula elements"
-msgstr "Hibernate 타입들"
+msgstr "column 요소와 formula 요소"
-#: index.docbook:2346
-msgid "Any mapping element which accepts a <literal>column</literal> attribute will alternatively accept a <literal><column></literal> subelement. Likewise, <literal><formula></literal> is an alternative to the <literal>formula</literal> attribute."
-msgstr "엔티티들과 값들"
+#. Tag: para
+#: basic_mapping.xml:2346
+#, no-c-format
+msgid ""
+"Any mapping element which accepts a <literal>column</literal> attribute will "
+"alternatively accept a <literal><column></literal> subelement. "
+"Likewise, <literal><formula></literal> is an alternative to the "
+"<literal>formula</literal> attribute."
+msgstr ""
+"column 속성을 허용하는 임의의 매핑 요소는 대안적으로 하나의 <literal><"
+"column></literal> 서브요소를 수용할 것이다. 비슷하게 <literal><"
+"formula></literal>는 <literal>formula</literal> 속성에 대한 대안이다."
-#: index.docbook:2352
+#. Tag: programlisting
+#: basic_mapping.xml:2352
+#, no-c-format
msgid ""
- "<![CDATA[<column\n"
- " name=\"column_name\"\n"
- " length=\"N\"\n"
- " precision=\"N\"\n"
- " scale=\"N\"\n"
- " not-null=\"true|false\"\n"
- " unique=\"true|false\"\n"
- " unique-key=\"multicolumn_unique_key_name\"\n"
- " index=\"index_name\"\n"
- " sql-type=\"sql_type_name\"\n"
- " check=\"SQL expression\"\n"
- " default=\"SQL expression\"/>]]>"
-msgstr "영속 서비스에 관한 여러 Java 언어-레벨의 객체들을 이해하기 위해, 우리는 그것들을 다음 두 개의 그룹들로 분류할 필요가 있다:"
+"<![CDATA[<column\n"
+" name=\"column_name\"\n"
+" length=\"N\"\n"
+" precision=\"N\"\n"
+" scale=\"N\"\n"
+" not-null=\"true|false\"\n"
+" unique=\"true|false\"\n"
+" unique-key=\"multicolumn_unique_key_name\"\n"
+" index=\"index_name\"\n"
+" sql-type=\"sql_type_name\"\n"
+" check=\"SQL expression\"\n"
+" default=\"SQL expression\"/>]]>"
+msgstr ""
-#: index.docbook:2354
+#. Tag: programlisting
+#: basic_mapping.xml:2354
+#, no-c-format
msgid "<![CDATA[<formula>SQL expression</formula>]]>"
-msgstr "<emphasis>entity</emphasis>는 엔티티에 대한 참조들을 보관하는 임의의 다른 객체들과는 독립적으로 존재한다. 참조되지 않은 객체가 쓰레기 수집되는 통상의 자바 모형과 이것은 대조적이다. (저장들과 삭제들이 부모 엔티티로부터 그것의 자식으로의 케스케이드 되는 경우를 제외하면) 엔티티들은 명시적으로 저장되고 삭제되어야 한다. 이것은 도달 가능성(reachablity)에 의한 객체 영속성의 ODMG 모형과는 다르다 - 그리고 어플리케이션 객체들이 대형 시스템들에서 대개 어떻게 사용되는가에 훨씬 더 가깝게 대응한다. 엔티티들은 순환 참조와 공유 참조들을 지원한다. 그것들 또한 버전화 될 수 있다."
+msgstr ""
-#: index.docbook:2356
-msgid "<literal>column</literal> and <literal>formula</literal> attributes may even be combined within the same property or association mapping to express, for example, exotic join conditions."
-msgstr "엔티티의 영속 상태는 다른 엔티티들에 대한 참조들과 <emphasis>value</emphasis> 타입들로 구성된다. 값들은 원시 타입들, 콜렉션들(하나의 콜렉션 내부에 있지 않는 것들), 컴포넌트들, 그리고 어떤 불변의 객체들이다. entities와는 달리, (특별한 콜렉션들과 컴포넌트들에서) 값들은 도달가능성(reachability)에 의해 영속화 <emphasis>되고</emphasis> 삭제 된다. value 객체들(과 원시 타입들)이 그것들의 포함하는 엔티티에 따라 영속화 되고 삭제 되므로, 그것들은 독립적으로 버전화 되지 않는다. 값들은 독립적인 엔티티를 갖지 않아서, 그것들은 두 개의 엔티티들이나 콜렉션들에 의해 공유될 수 없다."
+#. Tag: para
+#: basic_mapping.xml:2356
+#, no-c-format
+msgid ""
+"<literal>column</literal> and <literal>formula</literal> attributes may even "
+"be combined within the same property or association mapping to express, for "
+"example, exotic join conditions."
+msgstr ""
+"<literal>column</literal> 속성과 <literal>formula</literal> 속성은 예를 들어 "
+"신종 조인 조건들을 표현하기 위해 동일한 property 또는 연관관계 매핑 내에 결합"
+"될 수 있다."
-#: index.docbook:2362
+#. Tag: programlisting
+#: basic_mapping.xml:2362
+#, no-c-format
msgid ""
- "<![CDATA[<many-to-one name=\"homeAddress\" class=\"Address\"\n"
- " insert=\"false\" update=\"false\">\n"
- " <column name=\"person_id\" not-null=\"true\" length=\"10\"/>\n"
- " <formula>'MAILING'</formula>\n"
- "</many-to-one>]]>"
-msgstr "지금까지 우리는 엔티티들을 참조하기 위해 \"영속 클래스\"를 사용해 왔다. 우리는 그것을 계속 사용할 것이다. 하지만 엄격히 말해, 영속 상태를 가진 모든 사용자 정의 클래스들은 엔티티들이 아니다. <emphasis>컴포넌트</emphasis>는 value 의미를 가진 사용자 정의 클래스이다. <literal>java.lang.String</literal> 타입의 자바 프로퍼티는 또한 value 의미를 갖는다. 이 정의가 주어지면, 우리는 JDK에 의해 제공된 모든 타입들(클래스들)이 자바에서 value 타입 의미를 갖고, 반면에 사용자 정의 타입들은 엔티티 또는 type 의미로서 매핑된다고 말할 수 있다. 이 판단은 어플리케이션 개발자에게 달려 있다. 도메인 모형에서 엔티티 클래스에 대한 좋은 힌트는 그 클래스의 하나의 인스턴스에 대한 공유된 참조들인 반면에, composition이나 aggregation은 대개 value �!
��입으로 변환된다."
+"<![CDATA[<many-to-one name=\"homeAddress\" class=\"Address\"\n"
+" insert=\"false\" update=\"false\">\n"
+" <column name=\"person_id\" not-null=\"true\" length=\"10\"/>\n"
+" <formula>'MAILING'</formula>\n"
+"</many-to-one>]]>"
+msgstr ""
-#: index.docbook:2367
+#. Tag: title
+#: basic_mapping.xml:2367
+#, no-c-format
msgid "import"
-msgstr "우리는 문서를 통해 두 개념들을 다시 고찰할 것이다."
+msgstr "import"
-#: index.docbook:2369
-msgid "Suppose your application has two persistent classes with the same name, and you don't want to specify the fully qualified (package) name in Hibernate queries. Classes may be \"imported\" explicitly, rather than relying upon <literal>auto-import=\"true\"</literal>. You may even import classes and interfaces that are not explicitly mapped."
-msgstr "도점점은 Java type 시스템(과 엔티티들 및 value 타입들에 대한 개발자의 정의)를 SQL/데이터베이스 type 타입으로 매핑하는 것이다. 두 시스템들 사이의 다리는 Hibernate에 의해 제공된다: 엔티티들의 경우 우리는 <literal><class></literal>, <literal><subclass></literal> 등을 사용한다.value 타입들의 경우 우리는 대개<literal>type</literal> 속성을 가진 <literal><property></literal>, <literal><component></literal> 등을 사용한다. 이 속성의 값은 Hibernate <emphasis>매핑 타입</emphasis>의 이름이다. Hibernate는 (표준 JDK value 타입들에 대해) 많은 매핑들을 제공한다. 나중에 보게 되듯이, 당신은 당신 자신의 매핑 타입들을 작성할 수 있고 마찬가지로 당신의 맞춤형 변환 방도들을 구현할 수 있다."
+#. Tag: para
+#: basic_mapping.xml:2369
+#, no-c-format
+msgid ""
+"Suppose your application has two persistent classes with the same name, and "
+"you don't want to specify the fully qualified (package) name in Hibernate "
+"queries. Classes may be \"imported\" explicitly, rather than relying upon "
+"<literal>auto-import=\"true\"</literal>. You may even import classes and "
+"interfaces that are not explicitly mapped."
+msgstr ""
+"당신의 어플리케이션이 동일한 이름을 가진 두 개의 영속 클래스들을 갖고, 당신"
+"이 Hibernate 질의들 내에서 전체 수식어가 붙은 (패키지)이름을 지정하는 것을 원"
+"하지 않는다고 가정하자. 클래스들은 <literal>auto-import=\"true\"</literal>에 "
+"의존하기 보다 명시적으로 \"임포트 될 \" 것이다. 당신은 심지어 명시적으로 매핑"
+"되지 않는 클래스들과 인터페이스들을 임포트 시킬 수(가져오기 할 수) 있다."
-#: index.docbook:2376
+#. Tag: programlisting
+#: basic_mapping.xml:2376
+#, no-c-format
msgid "<![CDATA[<import class=\"java.lang.Object\" rename=\"Universe\"/>]]>"
-msgstr "콜렉션들을 제외한 모든 미리 빌드된 Hibernate 타입들은 null 의미를 지원한다."
+msgstr ""
-#: index.docbook:2383
+#. Tag: programlisting
+#: basic_mapping.xml:2383
+#, no-c-format
msgid ""
- "<![CDATA[<import\n"
- " class=\"ClassName\"\n"
- " rename=\"ShortName\"\n"
- "/>]]>"
-msgstr "기본 value 타입들"
+"<![CDATA[<import\n"
+" class=\"ClassName\"\n"
+" rename=\"ShortName\"\n"
+"/>]]>"
+msgstr ""
-#: index.docbook:2386
-msgid "<literal>class</literal>: The fully qualified class name of of any Java class."
-msgstr "미리-만들어진 <emphasis>기본 매핑 타입들</emphasis>은 대략 다음과 같이 카테고리로 분류된다"
+#. Tag: para
+#: basic_mapping.xml:2386
+#, no-c-format
+msgid ""
+"<literal>class</literal>: The fully qualified class name of of any Java "
+"class."
+msgstr ""
+"<literal>class</literal>: 임의의 Java 클래스의 전체 수식어가 붙은 클래스 이"
+"름."
-#: index.docbook:2391
-msgid "<literal>rename</literal> (optional - defaults to the unqualified class name): A name that may be used in the query language."
-msgstr "integer, long, short, float, double, character, byte, boolean, yes_no, true_false"
+#. Tag: para
+#: basic_mapping.xml:2391
+#, no-c-format
+msgid ""
+"<literal>rename</literal> (optional - defaults to the unqualified class "
+"name): A name that may be used in the query language."
+msgstr ""
+"<literal>rename</literal> (옵션 - 디폴트는 수식어가 붙지 않은 클래스 이름): "
+"질의 언어 내에서 사용될 이름."
-#: index.docbook:2402
+#. Tag: title
+#: basic_mapping.xml:2402
+#, no-c-format
msgid "<title>any</title>"
-msgstr "자바 원시타입들이나 wrapper 클래스들로부터 적절한(벤더-지정적인) SQL 컬럼 타입들로의 타입 매핑. <literal>boolean, yes_no</literal>와 <literal>true_false</literal>는 Java <literal>boolean</literal>이나 <literal>java.lang.Boolean</literal>에 대한 모든 대체적인 인코딩들이다."
+msgstr ""
-#: index.docbook:2404
-msgid "There is one further type of property mapping. The <literal><any></literal> mapping element defines a polymorphic association to classes from multiple tables. This type of mapping always requires more than one column. The first column holds the type of the associated entity. The remaining columns hold the identifier. It is impossible to specify a foreign key constraint for this kind of association, so this is most certainly not meant as the usual way of mapping (polymorphic) associations. You should use this only in very special cases (eg. audit logs, user session data, etc)."
-msgstr "string"
+#. Tag: para
+#: basic_mapping.xml:2404
+#, no-c-format
+msgid ""
+"There is one further type of property mapping. The <literal><any></"
+"literal> mapping element defines a polymorphic association to classes from "
+"multiple tables. This type of mapping always requires more than one column. "
+"The first column holds the type of the associated entity. The remaining "
+"columns hold the identifier. It is impossible to specify a foreign key "
+"constraint for this kind of association, so this is most certainly not meant "
+"as the usual way of mapping (polymorphic) associations. You should use this "
+"only in very special cases (eg. audit logs, user session data, etc)."
+msgstr ""
+"하나 이상의 프로퍼티 매핑 타입이 존재한다. <literal><any></literal> 매"
+"핑 요소는 여러 테이블들로부터 클래스들에 대한 하나의 다형성 연관관계를 정의한"
+"다. 이 매핑 타입은 언제나 하나 이상의 컬럼을 필요로 한다. 첫 번째 컬럼은 연관"
+"된 엔티티의 타입을 보관한다. 나머지 컬럼들은 식별자를 보관한다. 이런 종류의 "
+"연관관계들에 대해 foreign key 컨스트레인트를 지정하는 것이 불가능해서, 이것"
+"은 (다형성) 연관관계들을 매핑하는 통상적인 방법으로서 가장 확실한 수단이 아니"
+"다. 당신은 매우 특별한 경우들 (예를 들어 감사 로그들, 사용자 세션 데이터 등)"
+"에서만 이것을 사용해야 한다."
-#: index.docbook:2414
-msgid "The <literal>meta-type</literal> attribute lets the application specify a custom type that maps database column values to persistent classes which have identifier properties of the type specified by <literal>id-type</literal>. You must specify the mapping from values of the meta-type to class names."
-msgstr "<literal>java.lang.String</literal>으로부터 <literal>VARCHAR</literal> (또는 Oracle <literal>VARCHAR2</literal>)로의 타입 매핑."
+#. Tag: para
+#: basic_mapping.xml:2414
+#, no-c-format
+msgid ""
+"The <literal>meta-type</literal> attribute lets the application specify a "
+"custom type that maps database column values to persistent classes which "
+"have identifier properties of the type specified by <literal>id-type</"
+"literal>. You must specify the mapping from values of the meta-type to class "
+"names."
+msgstr ""
+"<literal>meta-type</literal> 속성은 어플리케이션으로 하여금 데이터베이스 컬"
+"럼 값들을 <literal>id-type</literal>에 의해 지정된 타입의 식별자 프로퍼티들"
+"을 가진 영속 클래스들로 매핑시키는 맞춤형 타입을 지정하도록 한다. 당신은 "
+"meta-type의 값들로부터 클래스 이름들로의 매핑을 지정해야 한다."
-#: index.docbook:2421
+#. Tag: programlisting
+#: basic_mapping.xml:2421
+#, no-c-format
msgid ""
- "<![CDATA[<any name=\"being\" id-type=\"long\" meta-type=\"string\">\n"
- " <meta-value value=\"TBL_ANIMAL\" class=\"Animal\"/>\n"
- " <meta-value value=\"TBL_HUMAN\" class=\"Human\"/>\n"
- " <meta-value value=\"TBL_ALIEN\" class=\"Alien\"/>\n"
- " <column name=\"table_name\"/>\n"
- " <column name=\"id\"/>\n"
- "</any>]]>"
-msgstr "date, time, timestamp"
+"<![CDATA[<any name=\"being\" id-type=\"long\" meta-type=\"string\">\n"
+" <meta-value value=\"TBL_ANIMAL\" class=\"Animal\"/>\n"
+" <meta-value value=\"TBL_HUMAN\" class=\"Human\"/>\n"
+" <meta-value value=\"TBL_ALIEN\" class=\"Alien\"/>\n"
+" <column name=\"table_name\"/>\n"
+" <column name=\"id\"/>\n"
+"</any>]]>"
+msgstr ""
-#: index.docbook:2432
+#. Tag: programlisting
+#: basic_mapping.xml:2432
+#, no-c-format
msgid ""
- "<![CDATA[<any\n"
- " name=\"propertyName\"\n"
- " id-type=\"idtypename\"\n"
- " meta-type=\"metatypename\"\n"
- " cascade=\"cascade_style\"\n"
- " access=\"field|property|ClassName\"\n"
- " optimistic-lock=\"true|false\"\n"
- ">\n"
- " <meta-value ... />\n"
- " <meta-value ... />\n"
- " .....\n"
- " <column .... />\n"
- " <column .... />\n"
- " .....\n"
- "</any>]]>"
-msgstr "<literal>java.util.Date</literal>와 그것의 서브클래스로부터 SQL 타입들인 <literal>DATE</literal>, <literal>TIME</literal>, <literal>TIMESTAMP</literal> (또는 등가물)로의 타입 매핑들."
+"<![CDATA[<any\n"
+" name=\"propertyName\"\n"
+" id-type=\"idtypename\"\n"
+" meta-type=\"metatypename\"\n"
+" cascade=\"cascade_style\"\n"
+" access=\"field|property|ClassName\"\n"
+" optimistic-lock=\"true|false\"\n"
+">\n"
+" <meta-value ... />\n"
+" <meta-value ... />\n"
+" .....\n"
+" <column .... />\n"
+" <column .... />\n"
+" .....\n"
+"</any>]]>"
+msgstr ""
-#: index.docbook:2435
+#. Tag: para
+#: basic_mapping.xml:2435
+#, no-c-format
msgid "<literal>name</literal>: the property name."
-msgstr "calendar, calendar_date"
+msgstr "<literal>name</literal>: 프로퍼티 이름."
-#: index.docbook:2440
+#. Tag: para
+#: basic_mapping.xml:2440
+#, no-c-format
msgid "<literal>id-type</literal>: the identifier type."
-msgstr "<literal>java.util.Calendar</literal>로부터 SQL 타입들인 <literal>TIMESTAMP</literal>, <literal>DATE</literal> (또는 등가물)로의 타입 매핑들."
+msgstr "<literal>id-type</literal>: 식별자 타입."
-#: index.docbook:2445
-msgid "<literal>meta-type</literal> (optional - defaults to <literal>string</literal>): Any type that is allowed for a discriminator mapping."
-msgstr "big_decimal, big_integer"
+#. Tag: para
+#: basic_mapping.xml:2445
+#, no-c-format
+msgid ""
+"<literal>meta-type</literal> (optional - defaults to <literal>string</"
+"literal>): Any type that is allowed for a discriminator mapping."
+msgstr ""
+"<literal>meta-type</literal> (옵션 - 디폴트는 <literal>string</literal>): "
+"discriminator 매핑에 허용되는 임의의 타입."
-#: index.docbook:2451
-msgid "<literal>cascade</literal> (optional- defaults to <literal>none</literal>): the cascade style."
-msgstr "<literal>java.math.BigDecimal</literal>과 <literal>java.math.BigInteger</literal>로부터 <literal>NUMERIC</literal> (또는 Oracle <literal>NUMBER</literal>)로의 타입 매핑들."
+#. Tag: para
+#: basic_mapping.xml:2451
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional- defaults to <literal>none</literal>): "
+"the cascade style."
+msgstr ""
+"<literal>cascade</literal> (optional- defaults to <literal>none</literal>): "
+"cascade 스타일."
-#: index.docbook:2463
-msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): Specifies that updates to this property do or do not require acquisition of the optimistic lock. In other words, define if a version increment should occur if this property is dirty."
-msgstr "<literal>java.util.Locale</literal>, <literal>java.util.TimeZone</literal>, 그리고 <literal>java.util.Currency</literal>로부터 <literal>VARCHAR</literal>(또는 Oracle <literal>VARCHAR2</literal>)로의 타입 매핑. <literal>Locale</literal>과 <literal>Currency</literal>의 인스턴스들은 그것들의 ISO 코드들로 매핑된다. <literal>TimeZone</literal>의 인스턴스들은 그것들의 <literal>ID</literal>로 매핑된다."
+#. Tag: para
+#: basic_mapping.xml:2463
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): Specifies that updates to this property do or do not require "
+"acquisition of the optimistic lock. In other words, define if a version "
+"increment should occur if this property is dirty."
+msgstr ""
+"<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</"
+"literal>): 이 프로퍼티에 대한 업데이트들이 optimistic 잠금 획득을 필요로 하는"
+"지 여부를 지정한다. 달리 말해, 이 프로퍼티가 dirty일 경우에 버전증가가 발생"
+"할 것인지 여부를 정의한다."
-#: index.docbook:2478
+#. Tag: title
+#: basic_mapping.xml:2478
+#, no-c-format
msgid "Hibernate Types"
-msgstr "<literal>class</literal>"
+msgstr "Hibernate 타입들"
-#: index.docbook:2481
+#. Tag: title
+#: basic_mapping.xml:2481
+#, no-c-format
msgid "Entities and values"
-msgstr "<literal>java.lang.Class</literal>로부터 <literal>VARCHAR</literal> (또는 Oracle <literal>VARCHAR2</literal>)로의 타입 매핑. <literal>Class</literal>는 그것의 전체 수식어가 붙은 이름으로 매핑된다."
+msgstr "엔티티들과 값들"
-#: index.docbook:2483
-msgid "To understand the behaviour of various Java language-level objects with respect to the persistence service, we need to classify them into two groups:"
-msgstr "binary"
+#. Tag: para
+#: basic_mapping.xml:2483
+#, no-c-format
+msgid ""
+"To understand the behaviour of various Java language-level objects with "
+"respect to the persistence service, we need to classify them into two groups:"
+msgstr ""
+"영속 서비스에 관한 여러 Java 언어-레벨의 객체들을 이해하기 위해, 우리는 그것"
+"들을 다음 두 개의 그룹들로 분류할 필요가 있다:"
-#: index.docbook:2488
-msgid "An <emphasis>entity</emphasis> exists independently of any other objects holding references to the entity. Contrast this with the usual Java model where an unreferenced object is garbage collected. Entities must be explicitly saved and deleted (except that saves and deletions may be <emphasis>cascaded</emphasis> from a parent entity to its children). This is different from the ODMG model of object persistence by reachablity - and corresponds more closely to how application objects are usually used in large systems. Entities support circular and shared references. They may also be versioned."
-msgstr "byte 배열들을 적절한 SQL binary 타입으로 매핑시킨다."
+#. Tag: para
+#: basic_mapping.xml:2488
+#, no-c-format
+msgid ""
+"An <emphasis>entity</emphasis> exists independently of any other objects "
+"holding references to the entity. Contrast this with the usual Java model "
+"where an unreferenced object is garbage collected. Entities must be "
+"explicitly saved and deleted (except that saves and deletions may be "
+"<emphasis>cascaded</emphasis> from a parent entity to its children). This is "
+"different from the ODMG model of object persistence by reachablity - and "
+"corresponds more closely to how application objects are usually used in "
+"large systems. Entities support circular and shared references. They may "
+"also be versioned."
+msgstr ""
+"<emphasis>entity</emphasis>는 엔티티에 대한 참조들을 보관하는 임의의 다른 객"
+"체들과는 독립적으로 존재한다. 참조되지 않은 객체가 쓰레기 수집되는 통상의 자"
+"바 모형과 이것은 대조적이다. (저장들과 삭제들이 부모 엔티티로부터 그것의 자식"
+"으로의 케스케이드 되는 경우를 제외하면) 엔티티들은 명시적으로 저장되고 삭제되"
+"어야 한다. 이것은 도달 가능성(reachablity)에 의한 객체 영속성의 ODMG 모형과"
+"는 다르다 - 그리고 어플리케이션 객체들이 대형 시스템들에서 대개 어떻게 사용되"
+"는가에 훨씬 더 가깝게 대응한다. 엔티티들은 순환 참조와 공유 참조들을 지원한"
+"다. 그것들 또한 버전화 될 수 있다."
-#: index.docbook:2499
-msgid "An entity's persistent state consists of references to other entities and instances of <emphasis>value</emphasis> types. Values are primitives, collections (not what's inside a collection), components and certain immutable objects. Unlike entities, values (in particular collections and components) <emphasis>are</emphasis> persisted and deleted by reachability. Since value objects (and primitives) are persisted and deleted along with their containing entity they may not be independently versioned. Values have no independent identity, so they cannot be shared by two entities or collections."
-msgstr "text"
+#. Tag: para
+#: basic_mapping.xml:2499
+#, no-c-format
+msgid ""
+"An entity's persistent state consists of references to other entities and "
+"instances of <emphasis>value</emphasis> types. Values are primitives, "
+"collections (not what's inside a collection), components and certain "
+"immutable objects. Unlike entities, values (in particular collections and "
+"components) <emphasis>are</emphasis> persisted and deleted by reachability. "
+"Since value objects (and primitives) are persisted and deleted along with "
+"their containing entity they may not be independently versioned. Values have "
+"no independent identity, so they cannot be shared by two entities or "
+"collections."
+msgstr ""
+"엔티티의 영속 상태는 다른 엔티티들에 대한 참조들과 <emphasis>value</"
+"emphasis> 타입들로 구성된다. 값들은 원시 타입들, 콜렉션들(하나의 콜렉션 내부"
+"에 있지 않는 것들), 컴포넌트들, 그리고 어떤 불변의 객체들이다. entities와는 "
+"달리, (특별한 콜렉션들과 컴포넌트들에서) 값들은 도달가능성(reachability)에 의"
+"해 영속화 <emphasis>되고</emphasis> 삭제 된다. value 객체들(과 원시 타입들)"
+"이 그것들의 포함하는 엔티티에 따라 영속화 되고 삭제 되므로, 그것들은 독립적으"
+"로 버전화 되지 않는다. 값들은 독립적인 엔티티를 갖지 않아서, 그것들은 두 개"
+"의 엔티티들이나 콜렉션들에 의해 공유될 수 없다."
-#: index.docbook:2510
-msgid "Up until now, we've been using the term \"persistent class\" to refer to entities. We will continue to do that. Strictly speaking, however, not all user-defined classes with persistent state are entities. A <emphasis>component</emphasis> is a user defined class with value semantics. A Java property of type <literal>java.lang.String</literal> also has value semantics. Given this definition, we can say that all types (classes) provided by the JDK have value type semantics in Java, while user-defined types may be mapped with entity or value type semantics. This decision is up to the application developer. A good hint for an entity class in a domain model are shared references to a single instance of that class, while composition or aggregation usually translates to a value type."
-msgstr "long Java 문자열을 SQL <literal>CLOB</literal> 또는 <literal>TEXT</literal> 타입으로 매핑시킨다"
+#. Tag: para
+#: basic_mapping.xml:2510
+#, no-c-format
+msgid ""
+"Up until now, we've been using the term \"persistent class\" to refer to "
+"entities. We will continue to do that. Strictly speaking, however, not all "
+"user-defined classes with persistent state are entities. A "
+"<emphasis>component</emphasis> is a user defined class with value semantics. "
+"A Java property of type <literal>java.lang.String</literal> also has value "
+"semantics. Given this definition, we can say that all types (classes) "
+"provided by the JDK have value type semantics in Java, while user-defined "
+"types may be mapped with entity or value type semantics. This decision is up "
+"to the application developer. A good hint for an entity class in a domain "
+"model are shared references to a single instance of that class, while "
+"composition or aggregation usually translates to a value type."
+msgstr ""
+"지금까지 우리는 엔티티들을 참조하기 위해 \"영속 클래스\"를 사용해 왔다. 우리"
+"는 그것을 계속 사용할 것이다. 하지만 엄격히 말해, 영속 상태를 가진 모든 사용"
+"자 정의 클래스들은 엔티티들이 아니다. <emphasis>컴포넌트</emphasis>는 value "
+"의미를 가진 사용자 정의 클래스이다. <literal>java.lang.String</literal> 타입"
+"의 자바 프로퍼티는 또한 value 의미를 갖는다. 이 정의가 주어지면, 우리는 JDK"
+"에 의해 제공된 모든 타입들(클래스들)이 자바에서 value 타입 의미를 갖고, 반면"
+"에 사용자 정의 타입들은 엔티티 또는 type 의미로서 매핑된다고 말할 수 있다. "
+"이 판단은 어플리케이션 개발자에게 달려 있다. 도메인 모형에서 엔티티 클래스에 "
+"대한 좋은 힌트는 그 클래스의 하나의 인스턴스에 대한 공유된 참조들인 반면에, "
+"composition이나 aggregation은 대개 value 타입으로 변환된다."
-#: index.docbook:2524
+#. Tag: para
+#: basic_mapping.xml:2524
+#, no-c-format
msgid "We'll revisit both concepts throughout the documentation."
-msgstr "serializable"
+msgstr "우리는 문서를 통해 두 개념들을 다시 고찰할 것이다."
-#: index.docbook:2528
-msgid "The challenge is to map the Java type system (and the developers' definition of entities and value types) to the SQL/database type system. The bridge between both systems is provided by Hibernate: for entities we use <literal><class></literal>, <literal><subclass></literal> and so on. For value types we use <literal><property></literal>, <literal><component></literal>, etc, usually with a <literal>type</literal> attribute. The value of this attribute is the name of a Hibernate <emphasis>mapping type</emphasis>. Hibernate provides many mappings (for standard JDK value types) out of the box. You can write your own mapping types and implement your custom conversion strategies as well, as you'll see later."
-msgstr "serializable Java 타입들을 적절한 SQL binary 타입으로 매핑시킨다. 당신은 또한 디폴트로 기본 타입이 아닌 serializable 자바 클래스 또는 인터페이스의 이름을 가진 Hibernate 타입 <literal>serializable</literal>을 나타낼 수도 있다."
+#. Tag: para
+#: basic_mapping.xml:2528
+#, no-c-format
+msgid ""
+"The challenge is to map the Java type system (and the developers' definition "
+"of entities and value types) to the SQL/database type system. The bridge "
+"between both systems is provided by Hibernate: for entities we use "
+"<literal><class></literal>, <literal><subclass></literal> and so "
+"on. For value types we use <literal><property></literal>, <literal><"
+"component></literal>, etc, usually with a <literal>type</literal> "
+"attribute. The value of this attribute is the name of a Hibernate "
+"<emphasis>mapping type</emphasis>. Hibernate provides many mappings (for "
+"standard JDK value types) out of the box. You can write your own mapping "
+"types and implement your custom conversion strategies as well, as you'll see "
+"later."
+msgstr ""
+"도점점은 Java type 시스템(과 엔티티들 및 value 타입들에 대한 개발자의 정의)"
+"를 SQL/데이터베이스 type 타입으로 매핑하는 것이다. 두 시스템들 사이의 다리는 "
+"Hibernate에 의해 제공된다: 엔티티들의 경우 우리는 <literal><class></"
+"literal>, <literal><subclass></literal> 등을 사용한다.value 타입들의 경"
+"우 우리는 대개<literal>type</literal> 속성을 가진 <literal><property></"
+"literal>, <literal><component></literal> 등을 사용한다. 이 속성의 값은 "
+"Hibernate <emphasis>매핑 타입</emphasis>의 이름이다. Hibernate는 (표준 JDK "
+"value 타입들에 대해) 많은 매핑들을 제공한다. 나중에 보게 되듯이, 당신은 당신 "
+"자신의 매핑 타입들을 작성할 수 있고 마찬가지로 당신의 맞춤형 변환 방도들을 구"
+"현할 수 있다."
-#: index.docbook:2541
+#. Tag: para
+#: basic_mapping.xml:2541
+#, no-c-format
msgid "All built-in Hibernate types except collections support null semantics."
-msgstr "clob, blob"
+msgstr ""
+"콜렉션들을 제외한 모든 미리 빌드된 Hibernate 타입들은 null 의미를 지원한다."
-#: index.docbook:2548
+#. Tag: title
+#: basic_mapping.xml:2548
+#, no-c-format
msgid "Basic value types"
-msgstr "<literal>java.sql.Clob</literal>와 <literal>java.sql.Blob</literal> JDBC 클래스들에 대한 타입 매핑들. 이들 타입들은 몇몇 어플리케이션들에서는 불편하다. 왜냐하면 blob 또는 clob 객체는 트랜잭션 외부에서 재사용될 수 없기 때문이다.(게다가 드라이버 지원이 비일관적이고 페치되어야 한다)"
+msgstr "기본 value 타입들"
-#: index.docbook:2550
-msgid "The built-in <emphasis>basic mapping types</emphasis> may be roughly categorized into"
-msgstr "imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, imm_serializable, imm_binary"
+#. Tag: para
+#: basic_mapping.xml:2550
+#, fuzzy, no-c-format
+msgid ""
+"The built-in <emphasis>basic mapping types</emphasis> may be roughly "
+"categorized into"
+msgstr ""
+"미리-만들어진 <emphasis>기본 매핑 타입들</emphasis>은 대략 다음과 같이 카테고"
+"리로 분류된다 <placeholder-1/>"
-#: index.docbook:2555
-msgid "integer, long, short, float, double, character, byte, boolean, yes_no, true_false"
-msgstr "대개 가변적인 Java 타입들로 간주되는 것에 대한 타입 매핑들. 여기서 Hibernate는 불변적인 Java 타입들에 대해서만 적절한 어떤 최적화를 행하고, 어플리케이션 그 객체를 변할 수 없는 것으로 취급한다. 예를 들어, 당신은 <literal>imm_timestamp</literal>로서 매핑된 인스턴스에 대해 <literal>Date.setTime()</literal>을 호출하지 않을 것이다. 프로퍼티의 값을 변경시키고, 그 변경을 영속화 시키기 위해서, 어플리케이션은 하나의 새로운 (동일하지 않은) 객체를 그 프로퍼티에 할당해야 한다."
+#. Tag: literal
+#: basic_mapping.xml:2555
+#, no-c-format
+msgid ""
+"integer, long, short, float, double, character, byte, boolean, yes_no, "
+"true_false"
+msgstr ""
+"integer, long, short, float, double, character, byte, boolean, yes_no, "
+"true_false"
-#: index.docbook:2558
-msgid "Type mappings from Java primitives or wrapper classes to appropriate (vendor-specific) SQL column types. <literal>boolean, yes_no</literal> and <literal>true_false</literal> are all alternative encodings for a Java <literal>boolean</literal> or <literal>java.lang.Boolean</literal>."
-msgstr "엔트리들과 콜렉션들의 유일 식별자들은 <literal>binary</literal>, <literal>blob</literal> 그리고 <literal>clob</literal>를 제외한 기본 타입 중 어느 것일 수 있다. (Composite 식별자들이 또한 허용된다. 아래를 보라.)"
+#. Tag: para
+#: basic_mapping.xml:2558
+#, no-c-format
+msgid ""
+"Type mappings from Java primitives or wrapper classes to appropriate (vendor-"
+"specific) SQL column types. <literal>boolean, yes_no</literal> and "
+"<literal>true_false</literal> are all alternative encodings for a Java "
+"<literal>boolean</literal> or <literal>java.lang.Boolean</literal>."
+msgstr ""
+"자바 원시타입들이나 wrapper 클래스들로부터 적절한(벤더-지정적인) SQL 컬럼 타"
+"입들로의 타입 매핑. <literal>boolean, yes_no</literal>와 "
+"<literal>true_false</literal>는 Java <literal>boolean</literal>이나 "
+"<literal>java.lang.Boolean</literal>에 대한 모든 대체적인 인코딩들이다."
-#: index.docbook:2567
+#. Tag: literal
+#: basic_mapping.xml:2567
+#, no-c-format
msgid "string"
-msgstr "기본 value 타입들은 <literal>org.hibernate.Hibernate</literal>에 정의되어 있는 대응하는 <literal>Type</literal> 상수들을 갖는다. 예를 들어, <literal>Hibernate.STRING</literal>은 <literal>string</literal> 타입을 표현한다."
+msgstr "string"
-#: index.docbook:2569
-msgid "A type mapping from <literal>java.lang.String</literal> to <literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>)."
-msgstr "맞춤형 value 타입들"
+#. Tag: para
+#: basic_mapping.xml:2569
+#, no-c-format
+msgid ""
+"A type mapping from <literal>java.lang.String</literal> to <literal>VARCHAR</"
+"literal> (or Oracle <literal>VARCHAR2</literal>)."
+msgstr ""
+"<literal>java.lang.String</literal>으로부터 <literal>VARCHAR</literal> (또는 "
+"Oracle <literal>VARCHAR2</literal>)로의 타입 매핑."
-#: index.docbook:2576
+#. Tag: literal
+#: basic_mapping.xml:2576
+#, no-c-format
msgid "date, time, timestamp"
-msgstr "개발자들이 그들 자신들의 value 타입들을 생성시키는 것이 상대적으로 쉽다. 예를 들어, 당신은 <literal>java.lang.BigInteger</literal> 타입의 프로퍼티들을 <literal>VARCHAR</literal> 컬럼들로 영속화 시키고자 원할 수 있다. Hibernate는 이것을 위한 미리 만들어진 타입을 제공하지 않는다. 그러나 맞춤형 타입들은 프로퍼티(또는 콜렉션 요소)를 하나의 테이블 컬럼으로의 매핑하는 것에 제약되지 않는다. 따라서 예를 들어, 당신은 <literal>FIRST_NAME</literal>, <literal>INITIAL</literal>, <literal>SURNAME</literal> 컬럼들로 영속화 되는 <literal>java.lang.String</literal> 타입의 자바 프로퍼티<literal>getName()</literal>/ <literal>setName()</literal>를 가질 수 있다."
+msgstr "date, time, timestamp"
-#: index.docbook:2578
-msgid "Type mappings from <literal>java.util.Date</literal> and its subclasses to SQL types <literal>DATE</literal>, <literal>TIME</literal> and <literal>TIMESTAMP</literal> (or equivalent)."
-msgstr "맞춤형 타입을 구현하려면, <literal>org.hibernate.UserType</literal> 또는 <literal>org.hibernate.CompositeUserType</literal>을 구현하고 그 타입의 전체 수식어가 붙은 클래스명을 사용하여 프로퍼티들을 선언하라. 가능한 종류의 것들을 보려면 <literal>org.hibernate.test.DoubleStringType</literal>을 체크하라."
+#. Tag: para
+#: basic_mapping.xml:2578
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Date</literal> and its subclasses to "
+"SQL types <literal>DATE</literal>, <literal>TIME</literal> and "
+"<literal>TIMESTAMP</literal> (or equivalent)."
+msgstr ""
+"<literal>java.util.Date</literal>와 그것의 서브클래스로부터 SQL 타입들인 "
+"<literal>DATE</literal>, <literal>TIME</literal>, <literal>TIMESTAMP</"
+"literal> (또는 등가물)로의 타입 매핑들."
-#: index.docbook:2586
+#. Tag: literal
+#: basic_mapping.xml:2586
+#, no-c-format
msgid "calendar, calendar_date"
+msgstr "calendar, calendar_date"
+
+#. Tag: para
+#: basic_mapping.xml:2588
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Calendar</literal> to SQL types "
+"<literal>TIMESTAMP</literal> and <literal>DATE</literal> (or equivalent)."
msgstr ""
- "<![CDATA[<property name=\"twoStrings\" type=\"org.hibernate.test.DoubleStringType\">\n"
- " <column name=\"first_string\"/>\n"
- " <column name=\"second_string\"/>\n"
- "</property>]]>"
+"<literal>java.util.Calendar</literal>로부터 SQL 타입들인 <literal>TIMESTAMP</"
+"literal>, <literal>DATE</literal> (또는 등가물)로의 타입 매핑들."
-#: index.docbook:2588
-msgid "Type mappings from <literal>java.util.Calendar</literal> to SQL types <literal>TIMESTAMP</literal> and <literal>DATE</literal> (or equivalent)."
-msgstr "하나의 프로퍼티를 여러 개의 컬럼들로 매핑시키는 <literal><column></literal> 태그의 사용을 주목하라."
-
-#: index.docbook:2596
+#. Tag: literal
+#: basic_mapping.xml:2596
+#, no-c-format
msgid "big_decimal, big_integer"
-msgstr "<literal>CompositeUserType</literal>, <literal>EnhancedUserType</literal>, <literal>UserCollectionType</literal>, 그리고 <literal>UserVersionType</literal> 인터페이스들은 더 많은 특화된 사용들을 위한 지원을 제공한다."
+msgstr "big_decimal, big_integer"
-#: index.docbook:2598
-msgid "Type mappings from <literal>java.math.BigDecimal</literal> and <literal>java.math.BigInteger</literal> to <literal>NUMERIC</literal> (or Oracle <literal>NUMBER</literal>)."
-msgstr "당신은 매핑 파일 속에 <literal>UserType</literal>에 대한 파라미터들을 제공할 수도 있다. 이것을 행하기 위해, 당신의 <literal>UserType</literal>은 <literal>org.hibernate.usertype.ParameterizedType</literal> 인터페이스를 구현해야 한다. 당신의 맞춤형 타입에 파라미터들을 제공하기 위해, 당신은 당신의 매핑 파일들 속에 <literal><type></literal> 요소를 사용할 수 있다."
+#. Tag: para
+#: basic_mapping.xml:2598
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.math.BigDecimal</literal> and <literal>java."
+"math.BigInteger</literal> to <literal>NUMERIC</literal> (or Oracle "
+"<literal>NUMBER</literal>)."
+msgstr ""
+"<literal>java.math.BigDecimal</literal>과 <literal>java.math.BigInteger</"
+"literal>로부터 <literal>NUMERIC</literal> (또는 Oracle <literal>NUMBER</"
+"literal>)로의 타입 매핑들."
-#: index.docbook:2606
+#. Tag: literal
+#: basic_mapping.xml:2606
+#, no-c-format
msgid "locale, timezone, currency"
+msgstr "locale, timezone, currency"
+
+#. Tag: para
+#: basic_mapping.xml:2608
+#, no-c-format
+msgid ""
+"Type mappings from <literal>java.util.Locale</literal>, <literal>java.util."
+"TimeZone</literal> and <literal>java.util.Currency</literal> to "
+"<literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>). "
+"Instances of <literal>Locale</literal> and <literal>Currency</literal> are "
+"mapped to their ISO codes. Instances of <literal>TimeZone</literal> are "
+"mapped to their <literal>ID</literal>."
msgstr ""
- "<![CDATA[<property name=\"priority\">\n"
- " <type name=\"com.mycompany.usertypes.DefaultValueIntegerType\">\n"
- " <param name=\"default\">0</param>\n"
- " </type>\n"
- "</property>]]>"
+"<literal>java.util.Locale</literal>, <literal>java.util.TimeZone</literal>, "
+"그리고 <literal>java.util.Currency</literal>로부터 <literal>VARCHAR</literal>"
+"(또는 Oracle <literal>VARCHAR2</literal>)로의 타입 매핑. <literal>Locale</"
+"literal>과 <literal>Currency</literal>의 인스턴스들은 그것들의 ISO 코드들로 "
+"매핑된다. <literal>TimeZone</literal>의 인스턴스들은 그것들의 <literal>ID</"
+"literal>로 매핑된다."
-#: index.docbook:2608
-msgid "Type mappings from <literal>java.util.Locale</literal>, <literal>java.util.TimeZone</literal> and <literal>java.util.Currency</literal> to <literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>). Instances of <literal>Locale</literal> and <literal>Currency</literal> are mapped to their ISO codes. Instances of <literal>TimeZone</literal> are mapped to their <literal>ID</literal>."
-msgstr "<literal>UserType</literal>은 이제 그것에 전달된 <literal>Properties</literal> 객체로부터 <literal>default</literal>로 명명된 파라미터에 대한 값을 검색할 수 있다."
-
-#: index.docbook:2620
+#. Tag: literal
+#: basic_mapping.xml:2620
+#, fuzzy, no-c-format
msgid "<literal>class</literal>"
-msgstr "만일 당신이 매우 자주 어떤 UserType을 사용할 경우, 그것은 그것에 대한 더 짧은 이름을 정의하는 것이 유용할 수 있다. <literal><typedef></literal> 요소를 사용하여 이것을 행할 수 있다. Typedef들은 이름을 맞춤형 타입에 할당하고, 또한 만일 그 타입이 파라미터화 된 경우에 디폴트 파라미터 값들의 리스트를 포함할 수도 있다."
+msgstr "<literal>all</literal>은 모든 컬럼들을 체크한다"
-#: index.docbook:2622
-msgid "A type mapping from <literal>java.lang.Class</literal> to <literal>VARCHAR</literal> (or Oracle <literal>VARCHAR2</literal>). A <literal>Class</literal> is mapped to its fully qualified name."
+#. Tag: para
+#: basic_mapping.xml:2622
+#, no-c-format
+msgid ""
+"A type mapping from <literal>java.lang.Class</literal> to <literal>VARCHAR</"
+"literal> (or Oracle <literal>VARCHAR2</literal>). A <literal>Class</literal> "
+"is mapped to its fully qualified name."
msgstr ""
- "<![CDATA[<typedef class=\"com.mycompany.usertypes.DefaultValueIntegerType\" name=\"default_zero\">\n"
- " <param name=\"default\">0</param>\n"
- "</typedef>]]>"
+"<literal>java.lang.Class</literal>로부터 <literal>VARCHAR</literal> (또는 "
+"Oracle <literal>VARCHAR2</literal>)로의 타입 매핑. <literal>Class</literal>"
+"는 그것의 전체 수식어가 붙은 이름으로 매핑된다."
-#: index.docbook:2630
+#. Tag: literal
+#: basic_mapping.xml:2630
+#, no-c-format
msgid "binary"
-msgstr "<![CDATA[<property name=\"priority\" type=\"default_zero\"/>]]>"
+msgstr "binary"
-#: index.docbook:2632
+#. Tag: para
+#: basic_mapping.xml:2632
+#, no-c-format
msgid "Maps byte arrays to an appropriate SQL binary type."
-msgstr "property 매핑 상에 type 파라미터들을 사용함으로써 경우에 맞게 typedef 내에 제공된 파라미터들을 오버라이드 시키는 것이 가능하다."
+msgstr "byte 배열들을 적절한 SQL binary 타입으로 매핑시킨다."
-#: index.docbook:2638
+#. Tag: literal
+#: basic_mapping.xml:2638
+#, no-c-format
msgid "text"
-msgstr "비록 Hibernate의 풍부한 범위의 미리 만들어진 타입들과 컴포넌트들에 대한 지원이 당신이 가끔 맞춤형 타입을 사용할 <emphasis>필요가</emphasis> 거의 없을 것임을 의미할 지라도, 그럼에도 불구하고 그것은 당신의 어플리케이션에서 자주 발생하는 (엔티티가 아닌) 클래스들에 대해 맞춤형 타입들을 사용하는 좋은 형식으로 간주된다. 예를 들어 <literal>MonetaryAmount</literal> 클래스는 비록 그것이 컴포넌트로서 쉽게 매핑될 수 있을지라도, <literal>CompositeUserType</literal>에 대한 좋은 후보이다. 이것에 대한 하나의 동기는 추상화이다. 맞춤형 타입으로, 당신의 매핑 문서들은 화폐 값들을 표현하는 당신의 방법에서 가능한 변경들에 대해 장차 검증될 것이다."
+msgstr "text"
-#: index.docbook:2640
-msgid "Maps long Java strings to a SQL <literal>CLOB</literal> or <literal>TEXT</literal> type."
-msgstr "하나의 클래스를 한 번 이상 매핑하기"
+#. Tag: para
+#: basic_mapping.xml:2640
+#, no-c-format
+msgid ""
+"Maps long Java strings to a SQL <literal>CLOB</literal> or <literal>TEXT</"
+"literal> type."
+msgstr ""
+"long Java 문자열을 SQL <literal>CLOB</literal> 또는 <literal>TEXT</literal> "
+"타입으로 매핑시킨다"
-#: index.docbook:2647
+#. Tag: literal
+#: basic_mapping.xml:2647
+#, no-c-format
msgid "serializable"
-msgstr "하나의 특정한 영속 클래스에 대해 하나 이상의 매핑을 제공하는 것이 가능하다. 이 경우에 당신은 두 개의 매핑된 엔티티들의 인스턴스들 사이를 명확하게 하기 위해 <emphasis>하나의 엔티티 이름</emphasis>을 지정해야 한다. (디폴트로, 엔티티 이름은 클래스 이름과 동일한 것이다.) Hibernate는 영속 객체들에 대해 작업할 때, 질의들을 작성할 때, 또는 명명된 엔티티에 대한 연관들을 매핑할 때 당신으로 하여금 엔티티 이름을 지정하도록 한다."
+msgstr "serializable"
-#: index.docbook:2649
-msgid "Maps serializable Java types to an appropriate SQL binary type. You may also indicate the Hibernate type <literal>serializable</literal> with the name of a serializable Java class or interface that does not default to a basic type."
+#. Tag: para
+#: basic_mapping.xml:2649
+#, no-c-format
+msgid ""
+"Maps serializable Java types to an appropriate SQL binary type. You may also "
+"indicate the Hibernate type <literal>serializable</literal> with the name of "
+"a serializable Java class or interface that does not default to a basic type."
msgstr ""
- "<![CDATA[<class name=\"Contract\" table=\"Contracts\" \n"
- " entity-name=\"CurrentContract\">\n"
- " ...\n"
- " <set name=\"history\" inverse=\"true\" \n"
- " order-by=\"effectiveEndDate desc\">\n"
- " <key column=\"currentContractId\"/>\n"
- " <one-to-many entity-name=\"HistoricalContract\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Contract\" table=\"ContractHistory\" \n"
- " entity-name=\"HistoricalContract\">\n"
- " ...\n"
- " <many-to-one name=\"currentContract\" \n"
- " column=\"currentContractId\" \n"
- " entity-name=\"CurrentContract\"/>\n"
- "</class>]]>"
+"serializable Java 타입들을 적절한 SQL binary 타입으로 매핑시킨다. 당신은 또"
+"한 디폴트로 기본 타입이 아닌 serializable 자바 클래스 또는 인터페이스의 이름"
+"을 가진 Hibernate 타입 <literal>serializable</literal>을 나타낼 수도 있다."
-#: index.docbook:2658
+#. Tag: literal
+#: basic_mapping.xml:2658
+#, no-c-format
msgid "clob, blob"
-msgstr "연관들은 이제 <literal>class</literal> 대신에 <literal>entity-name</literal>을 사용하여 어떻게 지정되는지를 주목하라."
+msgstr "clob, blob"
-#: index.docbook:2660
-msgid "Type mappings for the JDBC classes <literal>java.sql.Clob</literal> and <literal>java.sql.Blob</literal>. These types may be inconvenient for some applications, since the blob or clob object may not be reused outside of a transaction. (Furthermore, driver support is patchy and inconsistent.)"
-msgstr "SQL 인용부호 표시된 식별자들"
+#. Tag: para
+#: basic_mapping.xml:2660
+#, no-c-format
+msgid ""
+"Type mappings for the JDBC classes <literal>java.sql.Clob</literal> and "
+"<literal>java.sql.Blob</literal>. These types may be inconvenient for some "
+"applications, since the blob or clob object may not be reused outside of a "
+"transaction. (Furthermore, driver support is patchy and inconsistent.)"
+msgstr ""
+"<literal>java.sql.Clob</literal>와 <literal>java.sql.Blob</literal> JDBC 클래"
+"스들에 대한 타입 매핑들. 이들 타입들은 몇몇 어플리케이션들에서는 불편하다. 왜"
+"냐하면 blob 또는 clob 객체는 트랜잭션 외부에서 재사용될 수 없기 때문이다.(게"
+"다가 드라이버 지원이 비일관적이고 페치되어야 한다)"
-#: index.docbook:2670
-msgid "imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, imm_serializable, imm_binary"
-msgstr "당신은 매핑 문서 내에서 테이블 또는 컬럼 이름을 역인용기호(`)들 속에 넣어서 생성된 SQL에서 식별자를 인용부호 처리하도록 Hibernate에게 강제할 수도 있다. Hibernate는 SQL <literal>Dialect</literal>에 대해 정확한 인용 스타일을 사용할 것이다(대개 이중 인용부호 이지만, SQL Server의 경우에는 모난 괄호들이고 MySQL의 경우에는 역인용부호(`))."
+#. Tag: literal
+#: basic_mapping.xml:2670
+#, no-c-format
+msgid ""
+"imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, "
+"imm_serializable, imm_binary"
+msgstr ""
+"imm_date, imm_time, imm_timestamp, imm_calendar, imm_calendar_date, "
+"imm_serializable, imm_binary"
-#: index.docbook:2674
-msgid "Type mappings for what are usually considered mutable Java types, where Hibernate makes certain optimizations appropriate only for immutable Java types, and the application treats the object as immutable. For example, you should not call <literal>Date.setTime()</literal> for an instance mapped as <literal>imm_timestamp</literal>. To change the value of the property, and have that change made persistent, the application must assign a new (nonidentical) object to the property."
+#. Tag: para
+#: basic_mapping.xml:2674
+#, no-c-format
+msgid ""
+"Type mappings for what are usually considered mutable Java types, where "
+"Hibernate makes certain optimizations appropriate only for immutable Java "
+"types, and the application treats the object as immutable. For example, you "
+"should not call <literal>Date.setTime()</literal> for an instance mapped as "
+"<literal>imm_timestamp</literal>. To change the value of the property, and "
+"have that change made persistent, the application must assign a new "
+"(nonidentical) object to the property."
msgstr ""
- "<![CDATA[<class name=\"LineItem\" table=\"`Line Item`\">\n"
- " <id name=\"id\" column=\"`Item Id`\"/><generator class=\"assigned\"/></id>\n"
- " <property name=\"itemNumber\" column=\"`Item #`\"/>\n"
- " ...\n"
- "</class>]]>"
+"대개 가변적인 Java 타입들로 간주되는 것에 대한 타입 매핑들. 여기서 Hibernate"
+"는 불변적인 Java 타입들에 대해서만 적절한 어떤 최적화를 행하고, 어플리케이션 "
+"그 객체를 변할 수 없는 것으로 취급한다. 예를 들어, 당신은 "
+"<literal>imm_timestamp</literal>로서 매핑된 인스턴스에 대해 <literal>Date."
+"setTime()</literal>을 호출하지 않을 것이다. 프로퍼티의 값을 변경시키고, 그 변"
+"경을 영속화 시키기 위해서, 어플리케이션은 하나의 새로운 (동일하지 않은) 객체"
+"를 그 프로퍼티에 할당해야 한다."
-#: index.docbook:2689
-msgid "Unique identifiers of entities and collections may be of any basic type except <literal>binary</literal>, <literal>blob</literal> and <literal>clob</literal>. (Composite identifiers are also allowed, see below.)"
-msgstr "Metadata 대안들"
+#. Tag: para
+#: basic_mapping.xml:2689
+#, no-c-format
+msgid ""
+"Unique identifiers of entities and collections may be of any basic type "
+"except <literal>binary</literal>, <literal>blob</literal> and <literal>clob</"
+"literal>. (Composite identifiers are also allowed, see below.)"
+msgstr ""
+"엔트리들과 콜렉션들의 유일 식별자들은 <literal>binary</literal>, "
+"<literal>blob</literal> 그리고 <literal>clob</literal>를 제외한 기본 타입 중 "
+"어느 것일 수 있다. (Composite 식별자들이 또한 허용된다. 아래를 보라.)"
-#: index.docbook:2695
-msgid "The basic value types have corresponding <literal>Type</literal> constants defined on <literal>org.hibernate.Hibernate</literal>. For example, <literal>Hibernate.STRING</literal> represents the <literal>string</literal> type."
-msgstr "XML은 모든 사람들을 위한 것이 아니지만, Hibernate에서 O/R 매핑 메타데이터를 정의하는 몇몇 대안적인 방법들이 존재한다."
+#. Tag: para
+#: basic_mapping.xml:2695
+#, no-c-format
+msgid ""
+"The basic value types have corresponding <literal>Type</literal> constants "
+"defined on <literal>org.hibernate.Hibernate</literal>. For example, "
+"<literal>Hibernate.STRING</literal> represents the <literal>string</literal> "
+"type."
+msgstr ""
+"기본 value 타입들은 <literal>org.hibernate.Hibernate</literal>에 정의되어 있"
+"는 대응하는 <literal>Type</literal> 상수들을 갖는다. 예를 들어, "
+"<literal>Hibernate.STRING</literal>은 <literal>string</literal> 타입을 표현한"
+"다."
-#: index.docbook:2704
+#. Tag: title
+#: basic_mapping.xml:2704
+#, no-c-format
msgid "Custom value types"
-msgstr "XDoclet 마크업 사용하기"
+msgstr "맞춤형 value 타입들"
-#: index.docbook:2706
-msgid "It is relatively easy for developers to create their own value types. For example, you might want to persist properties of type <literal>java.lang.BigInteger</literal> to <literal>VARCHAR</literal> columns. Hibernate does not provide a built-in type for this. But custom types are not limited to mapping a property (or collection element) to a single table column. So, for example, you might have a Java property <literal>getName()</literal>/<literal>setName()</literal> of type <literal>java.lang.String</literal> that is persisted to the columns <literal>FIRST_NAME</literal>, <literal>INITIAL</literal>, <literal>SURNAME</literal>."
-msgstr "많은 Hibernate 사용자들은 XDoclet <literal>@hibernate.tags</literal>를 사용하여 소스 코드 속에 직접 매핑 정보를 삽입시키는 것을 선호한다. 우리는 이 문서에서 이 접근법을 다루지 않을 것이다. 왜냐하면 그것은 엄격하게는 XDoclet의 부분으로 간주되기 때문이다. 하지만 우리는 XDoclet 매핑들을 가진 <literal>Cat</literal> 클래스에 관한 다음 예제를 포함한다."
+#. Tag: para
+#: basic_mapping.xml:2706
+#, no-c-format
+msgid ""
+"It is relatively easy for developers to create their own value types. For "
+"example, you might want to persist properties of type <literal>java.lang."
+"BigInteger</literal> to <literal>VARCHAR</literal> columns. Hibernate does "
+"not provide a built-in type for this. But custom types are not limited to "
+"mapping a property (or collection element) to a single table column. So, for "
+"example, you might have a Java property <literal>getName()</literal>/"
+"<literal>setName()</literal> of type <literal>java.lang.String</literal> "
+"that is persisted to the columns <literal>FIRST_NAME</literal>, "
+"<literal>INITIAL</literal>, <literal>SURNAME</literal>."
+msgstr ""
+"개발자들이 그들 자신들의 value 타입들을 생성시키는 것이 상대적으로 쉽다. 예"
+"를 들어, 당신은 <literal>java.lang.BigInteger</literal> 타입의 프로퍼티들을 "
+"<literal>VARCHAR</literal> 컬럼들로 영속화 시키고자 원할 수 있다. Hibernate"
+"는 이것을 위한 미리 만들어진 타입을 제공하지 않는다. 그러나 맞춤형 타입들은 "
+"프로퍼티(또는 콜렉션 요소)를 하나의 테이블 컬럼으로의 매핑하는 것에 제약되지 "
+"않는다. 따라서 예를 들어, 당신은 <literal>FIRST_NAME</literal>, "
+"<literal>INITIAL</literal>, <literal>SURNAME</literal> 컬럼들로 영속화 되는 "
+"<literal>java.lang.String</literal> 타입의 자바 프로퍼티<literal>getName()</"
+"literal>/ <literal>setName()</literal>를 가질 수 있다."
-#: index.docbook:2717
-msgid "To implement a custom type, implement either <literal>org.hibernate.UserType</literal> or <literal>org.hibernate.CompositeUserType</literal> and declare properties using the fully qualified classname of the type. Check out <literal>org.hibernate.test.DoubleStringType</literal> to see the kind of things that are possible."
+#. Tag: para
+#: basic_mapping.xml:2717
+#, no-c-format
+msgid ""
+"To implement a custom type, implement either <literal>org.hibernate."
+"UserType</literal> or <literal>org.hibernate.CompositeUserType</literal> and "
+"declare properties using the fully qualified classname of the type. Check "
+"out <literal>org.hibernate.test.DoubleStringType</literal> to see the kind "
+"of things that are possible."
msgstr ""
- "<![CDATA[package eg;\n"
- "import java.util.Set;\n"
- "import java.util.Date;\n"
- "\n"
- "/**\n"
- " * @hibernate.class\n"
- " * table=\"CATS\"\n"
- " */\n"
- "public class Cat {\n"
- " private Long id; // identifier\n"
- " private Date birthdate;\n"
- " private Cat mother;\n"
- " private Set kittens\n"
- " private Color color;\n"
- " private char sex;\n"
- " private float weight;\n"
- "\n"
- " /*\n"
- " * @hibernate.id\n"
- " * generator-class=\"native\"\n"
- " * column=\"CAT_ID\"\n"
- " */\n"
- " public Long getId() {\n"
- " return id;\n"
- " }\n"
- " private void setId(Long id) {\n"
- " this.id=id;\n"
- " }\n"
- "\n"
- " /**\n"
- " * @hibernate.many-to-one\n"
- " * column=\"PARENT_ID\"\n"
- " */\n"
- " public Cat getMother() {\n"
- " return mother;\n"
- " }\n"
- " void setMother(Cat mother) {\n"
- " this.mother = mother;\n"
- " }\n"
- "\n"
- " /**\n"
- " * @hibernate.property\n"
- " * column=\"BIRTH_DATE\"\n"
- " */\n"
- " public Date getBirthdate() {\n"
- " return birthdate;\n"
- " }\n"
- " void setBirthdate(Date date) {\n"
- " birthdate = date;\n"
- " }\n"
- " /**\n"
- " * @hibernate.property\n"
- " * column=\"WEIGHT\"\n"
- " */\n"
- " public float getWeight() {\n"
- " return weight;\n"
- " }\n"
- " void setWeight(float weight) {\n"
- " this.weight = weight;\n"
- " }\n"
- "\n"
- " /**\n"
- " * @hibernate.property\n"
- " * column=\"COLOR\"\n"
- " * not-null=\"true\"\n"
- " */\n"
- " public Color getColor() {\n"
- " return color;\n"
- " }\n"
- " void setColor(Color color) {\n"
- " this.color = color;\n"
- " }\n"
- " /**\n"
- " * @hibernate.set\n"
- " * inverse=\"true\"\n"
- " * order-by=\"BIRTH_DATE\"\n"
- " * @hibernate.collection-key\n"
- " * column=\"PARENT_ID\"\n"
- " * @hibernate.collection-one-to-many\n"
- " */\n"
- " public Set getKittens() {\n"
- " return kittens;\n"
- " }\n"
- " void setKittens(Set kittens) {\n"
- " this.kittens = kittens;\n"
- " }\n"
- " // addKitten not needed by Hibernate\n"
- " public void addKitten(Cat kitten) {\n"
- " kittens.add(kitten);\n"
- " }\n"
- "\n"
- " /**\n"
- " * @hibernate.property\n"
- " * column=\"SEX\"\n"
- " * not-null=\"true\"\n"
- " * update=\"false\"\n"
- " */\n"
- " public char getSex() {\n"
- " return sex;\n"
- " }\n"
- " void setSex(char sex) {\n"
- " this.sex=sex;\n"
- " }\n"
- "}]]>"
+"맞춤형 타입을 구현하려면, <literal>org.hibernate.UserType</literal> 또는 "
+"<literal>org.hibernate.CompositeUserType</literal>을 구현하고 그 타입의 전체 "
+"수식어가 붙은 클래스명을 사용하여 프로퍼티들을 선언하라. 가능한 종류의 것들"
+"을 보려면 <literal>org.hibernate.test.DoubleStringType</literal>을 체크하라."
-#: index.docbook:2725
+#. Tag: programlisting
+#: basic_mapping.xml:2725
+#, no-c-format
msgid ""
- "<![CDATA[<property name=\"twoStrings\" type=\"org.hibernate.test.DoubleStringType\">\n"
- " <column name=\"first_string\"/>\n"
- " <column name=\"second_string\"/>\n"
- "</property>]]>"
-msgstr "XDoclet과 ibernate에 관한 추가 예제들은 Hibernate 웹 사이트를 보라."
+"<![CDATA[<property name=\"twoStrings\" type=\"org.hibernate.test."
+"DoubleStringType\">\n"
+" <column name=\"first_string\"/>\n"
+" <column name=\"second_string\"/>\n"
+"</property>]]>"
+msgstr ""
-#: index.docbook:2727
-msgid "Notice the use of <literal><column></literal> tags to map a property to multiple columns."
-msgstr "JDK 5.0 Annotations 사용하기"
+#. Tag: para
+#: basic_mapping.xml:2727
+#, no-c-format
+msgid ""
+"Notice the use of <literal><column></literal> tags to map a property "
+"to multiple columns."
+msgstr ""
+"하나의 프로퍼티를 여러 개의 컬럼들로 매핑시키는 <literal><column></"
+"literal> 태그의 사용을 주목하라."
-#: index.docbook:2732
-msgid "The <literal>CompositeUserType</literal>, <literal>EnhancedUserType</literal>, <literal>UserCollectionType</literal>, and <literal>UserVersionType</literal> interfaces provide support for more specialized uses."
-msgstr "JDK 5.0은 언어 레벨에서 XDoclet-스타일의 주석들, type-safe와 컴파일 시 체킹을 도입했다. 이 메커니즘은 XDoclet 주석들 보다 더 강력하며 도구들과 IDE들에 의해 더 좋게 지원된다. 예를 들어 IntelliJ IDEA는 JDK 5.0 주석들에 대한 자동-완성 기능과 구문 강조를 지원한다. EJB 명세서의 새로운 개정판(JSR-220)은 엔티티 빈즈에 대한 프라이머리 메타데이터 메커니즘으로서 JDK 5.0 Annotations을 사용한다. Hibernate3는 JSR-220(영속 API)의 <literal>EntityManager</literal>를 구현하고, 매핑 메타데이터에 대한 지원은 별도의 내려받기로서 <emphasis>Hibernate Annotations</emphasis> 패키지를 통해 이용 가능하다. EJB3 (JSR-220)과 Hibernate3 metadata 양자가 지원된다."
+#. Tag: para
+#: basic_mapping.xml:2732
+#, no-c-format
+msgid ""
+"The <literal>CompositeUserType</literal>, <literal>EnhancedUserType</"
+"literal>, <literal>UserCollectionType</literal>, and "
+"<literal>UserVersionType</literal> interfaces provide support for more "
+"specialized uses."
+msgstr ""
+"<literal>CompositeUserType</literal>, <literal>EnhancedUserType</literal>, "
+"<literal>UserCollectionType</literal>, 그리고 <literal>UserVersionType</"
+"literal> 인터페이스들은 더 많은 특화된 사용들을 위한 지원을 제공한다."
-#: index.docbook:2738
-msgid "You may even supply parameters to a <literal>UserType</literal> in the mapping file. To do this, your <literal>UserType</literal> must implement the <literal>org.hibernate.usertype.ParameterizedType</literal> interface. To supply parameters to your custom type, you can use the <literal><type></literal> element in your mapping files."
-msgstr "다음은 EJB 엔티티 빈으로서 주석이 붙은 POJO 클래스에 관한 예제이다:"
+#. Tag: para
+#: basic_mapping.xml:2738
+#, no-c-format
+msgid ""
+"You may even supply parameters to a <literal>UserType</literal> in the "
+"mapping file. To do this, your <literal>UserType</literal> must implement "
+"the <literal>org.hibernate.usertype.ParameterizedType</literal> interface. "
+"To supply parameters to your custom type, you can use the <literal><"
+"type></literal> element in your mapping files."
+msgstr ""
+"당신은 매핑 파일 속에 <literal>UserType</literal>에 대한 파라미터들을 제공할 "
+"수도 있다. 이것을 행하기 위해, 당신의 <literal>UserType</literal>은 "
+"<literal>org.hibernate.usertype.ParameterizedType</literal> 인터페이스를 구현"
+"해야 한다. 당신의 맞춤형 타입에 파라미터들을 제공하기 위해, 당신은 당신의 매"
+"핑 파일들 속에 <literal><type></literal> 요소를 사용할 수 있다."
-#: index.docbook:2746
+#. Tag: programlisting
+#: basic_mapping.xml:2746
+#, no-c-format
msgid ""
- "<![CDATA[<property name=\"priority\">\n"
- " <type name=\"com.mycompany.usertypes.DefaultValueIntegerType\">\n"
- " <param name=\"default\">0</param>\n"
- " </type>\n"
- "</property>]]>"
+"<![CDATA[<property name=\"priority\">\n"
+" <type name=\"com.mycompany.usertypes.DefaultValueIntegerType\">\n"
+" <param name=\"default\">0</param>\n"
+" </type>\n"
+"</property>]]>"
msgstr ""
- "<![CDATA[@Entity(access = AccessType.FIELD)\n"
- "public class Customer implements Serializable {\n"
- "\n"
- " @Id;\n"
- " Long id;\n"
- "\n"
- " String firstName;\n"
- " String lastName;\n"
- " Date birthday;\n"
- "\n"
- " @Transient\n"
- " Integer age;\n"
- "\n"
- " @Embedded\n"
- " private Address homeAddress;\n"
- "\n"
- " @OneToMany(cascade=CascadeType.ALL)\n"
- " @JoinColumn(name=\"CUSTOMER_ID\")\n"
- " Set<Order> orders;\n"
- "\n"
- " // Getter/setter and business methods\n"
- "}]]>"
-#: index.docbook:2748
-msgid "The <literal>UserType</literal> can now retrieve the value for the parameter named <literal>default</literal> from the <literal>Properties</literal> object passed to it."
-msgstr "JDK 5.0 Annotations(그리고 JSR-220)에 대한 지원은 여전히 작업이 진행 중이고 완성되지 않았음을 노트하라. 상세한 것은 Hibernate Anotations를 참조하라."
+#. Tag: para
+#: basic_mapping.xml:2748
+#, no-c-format
+msgid ""
+"The <literal>UserType</literal> can now retrieve the value for the parameter "
+"named <literal>default</literal> from the <literal>Properties</literal> "
+"object passed to it."
+msgstr ""
+"<literal>UserType</literal>은 이제 그것에 전달된 <literal>Properties</"
+"literal> 객체로부터 <literal>default</literal>로 명명된 파라미터에 대한 값을 "
+"검색할 수 있다."
-#: index.docbook:2753
-msgid "If you use a certain <literal>UserType</literal> very often, it may be useful to define a shorter name for it. You can do this using the <literal><typedef></literal> element. Typedefs assign a name to a custom type, and may also contain a list of default parameter values if the type is parameterized."
-msgstr "산출되는 프로퍼티들"
+#. Tag: para
+#: basic_mapping.xml:2753
+#, no-c-format
+msgid ""
+"If you use a certain <literal>UserType</literal> very often, it may be "
+"useful to define a shorter name for it. You can do this using the "
+"<literal><typedef></literal> element. Typedefs assign a name to a "
+"custom type, and may also contain a list of default parameter values if the "
+"type is parameterized."
+msgstr ""
+"만일 당신이 매우 자주 어떤 UserType을 사용할 경우, 그것은 그것에 대한 더 짧"
+"은 이름을 정의하는 것이 유용할 수 있다. <literal><typedef></literal> 요"
+"소를 사용하여 이것을 행할 수 있다. Typedef들은 이름을 맞춤형 타입에 할당하"
+"고, 또한 만일 그 타입이 파라미터화 된 경우에 디폴트 파라미터 값들의 리스트를 "
+"포함할 수도 있다."
-#: index.docbook:2760
+#. Tag: programlisting
+#: basic_mapping.xml:2760
+#, no-c-format
msgid ""
- "<![CDATA[<typedef class=\"com.mycompany.usertypes.DefaultValueIntegerType\" name=\"default_zero\">\n"
- " <param name=\"default\">0</param>\n"
- "</typedef>]]>"
-msgstr "산출되는 프로퍼티들은 데이터베이스에 의해 산출되는 그것들의 값들을 갖는 프로퍼티들이다. 전형적으로, Hibernate 어플리케이션들은 데이터베이스가 값들을 생성시켰던 임의의 프로퍼티들을 포함하는 객체들을 <literal>갱신</literal>시킬 필요가 있었다.하지만 generated로 마크된 프로퍼티들은 어플리케이션으로 하여금 이 책임을 Hibernate에게 위임시키도록 한다. 본질적으로 Hibernate가 산출되는 프로퍼티들을 정의했던 엔티티에 대해 SQL INSERT 또는 UPDATE 명령을 내릴 때마다 바로 직후에 산출되는 값들을 검색하기 위해 하나의 select 명령을 내린다."
+"<![CDATA[<typedef class=\"com.mycompany.usertypes.DefaultValueIntegerType\" "
+"name=\"default_zero\">\n"
+" <param name=\"default\">0</param>\n"
+"</typedef>]]>"
+msgstr ""
-#: index.docbook:2762
+#. Tag: programlisting
+#: basic_mapping.xml:2762
+#, no-c-format
msgid "<![CDATA[<property name=\"priority\" type=\"default_zero\"/>]]>"
-msgstr "generated로 마크된 프로퍼티들은 부가적으로 inser 가능하지 않아야 하고 update 불가능해야 한다. 오직 Properties marked as generated must additionally be non-insertable and non-updateable. <xref linkend=\"mapping-declaration-version\"/>versions, <xref linkend=\"mapping-declaration-timestamp\"/>timestamps, 그리고 <xref linkend=\"mapping-declaration-property\"/>단순 프로퍼티들 만이 generated로 마크될 수 있다."
+msgstr ""
-#: index.docbook:2764
-msgid "It is also possible to override the parameters supplied in a typedef on a case-by-case basis by using type parameters on the property mapping."
-msgstr "<literal>never</literal> (디폴트) - 는 주어진 프로퍼티 값이 데이터베이스 내에 생성되지 않을 것임을 의미한다."
+#. Tag: para
+#: basic_mapping.xml:2764
+#, no-c-format
+msgid ""
+"It is also possible to override the parameters supplied in a typedef on a "
+"case-by-case basis by using type parameters on the property mapping."
+msgstr ""
+"property 매핑 상에 type 파라미터들을 사용함으로써 경우에 맞게 typedef 내에 제"
+"공된 파라미터들을 오버라이드 시키는 것이 가능하다."
-#: index.docbook:2769
-msgid "Even though Hibernate's rich range of built-in types and support for components means you will very rarely <emphasis>need</emphasis> to use a custom type, it is nevertheless considered good form to use custom types for (non-entity) classes that occur frequently in your application. For example, a <literal>MonetaryAmount</literal> class is a good candidate for a <literal>CompositeUserType</literal>, even though it could easily be mapped as a component. One motivation for this is abstraction. With a custom type, your mapping documents would be future-proofed against possible changes in your way of representing monetary values."
-msgstr "<literal>insert</literal> - 는 주어진 프로퍼티 값이 insert 시에 생성되지만, 차후의 업데이트들에서 다시 생성되지 않을 것임을 기술한다. 생성-날짜와 같은 것들이 이 카테고리 내로 포함될 것이다. 비록 <xref linkend=\"mapping-declaration-version\"/>version과 <xref linkend=\"mapping-declaration-timestamp\"/>timestamp 프로퍼티들이 생성되는 것으로서 마크될 수 있을 지라도, 이 옵션은 거기서 이용 불가능함을 노트하라..."
+#. Tag: para
+#: basic_mapping.xml:2769
+#, no-c-format
+msgid ""
+"Even though Hibernate's rich range of built-in types and support for "
+"components means you will very rarely <emphasis>need</emphasis> to use a "
+"custom type, it is nevertheless considered good form to use custom types for "
+"(non-entity) classes that occur frequently in your application. For example, "
+"a <literal>MonetaryAmount</literal> class is a good candidate for a "
+"<literal>CompositeUserType</literal>, even though it could easily be mapped "
+"as a component. One motivation for this is abstraction. With a custom type, "
+"your mapping documents would be future-proofed against possible changes in "
+"your way of representing monetary values."
+msgstr ""
+"비록 Hibernate의 풍부한 범위의 미리 만들어진 타입들과 컴포넌트들에 대한 지원"
+"이 당신이 가끔 맞춤형 타입을 사용할 <emphasis>필요가</emphasis> 거의 없을 것"
+"임을 의미할 지라도, 그럼에도 불구하고 그것은 당신의 어플리케이션에서 자주 발"
+"생하는 (엔티티가 아닌) 클래스들에 대해 맞춤형 타입들을 사용하는 좋은 형식으"
+"로 간주된다. 예를 들어 <literal>MonetaryAmount</literal> 클래스는 비록 그것"
+"이 컴포넌트로서 쉽게 매핑될 수 있을지라도, <literal>CompositeUserType</"
+"literal>에 대한 좋은 후보이다. 이것에 대한 하나의 동기는 추상화이다. 맞춤형 "
+"타입으로, 당신의 매핑 문서들은 화폐 값들을 표현하는 당신의 방법에서 가능한 변"
+"경들에 대해 장차 검증될 것이다."
-#: index.docbook:2785
+#. Tag: title
+#: basic_mapping.xml:2785
+#, no-c-format
msgid "Mapping a class more than once"
-msgstr "<literal>always</literal> - 는 프로퍼티 값이 insert 시와 update 시 모두에 생성됨을 기술한다."
+msgstr "하나의 클래스를 한 번 이상 매핑하기"
-#: index.docbook:2786
-msgid "It is possible to provide more than one mapping for a particular persistent class. In this case you must specify an <emphasis>entity name</emphasis> do disambiguate between instances of the two mapped entities. (By default, the entity name is the same as the class name.) Hibernate lets you specify the entity name when working with persistent objects, when writing queries, or when mapping associations to the named entity."
-msgstr "보조 데이터베이스 객체들"
+#. Tag: para
+#: basic_mapping.xml:2786
+#, no-c-format
+msgid ""
+"It is possible to provide more than one mapping for a particular persistent "
+"class. In this case you must specify an <emphasis>entity name</emphasis> do "
+"disambiguate between instances of the two mapped entities. (By default, the "
+"entity name is the same as the class name.) Hibernate lets you specify the "
+"entity name when working with persistent objects, when writing queries, or "
+"when mapping associations to the named entity."
+msgstr ""
+"하나의 특정한 영속 클래스에 대해 하나 이상의 매핑을 제공하는 것이 가능하다. "
+"이 경우에 당신은 두 개의 매핑된 엔티티들의 인스턴스들 사이를 명확하게 하기 위"
+"해 <emphasis>하나의 엔티티 이름</emphasis>을 지정해야 한다. (디폴트로, 엔티"
+"티 이름은 클래스 이름과 동일한 것이다.) Hibernate는 영속 객체들에 대해 작업"
+"할 때, 질의들을 작성할 때, 또는 명명된 엔티티에 대한 연관들을 매핑할 때 당신"
+"으로 하여금 엔티티 이름을 지정하도록 한다."
-#: index.docbook:2794
+#. Tag: programlisting
+#: basic_mapping.xml:2794
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Contract\" table=\"Contracts\"\n"
- " entity-name=\"CurrentContract\">\n"
- " ...\n"
- " <set name=\"history\" inverse=\"true\"\n"
- " order-by=\"effectiveEndDate desc\">\n"
- " <key column=\"currentContractId\"/>\n"
- " <one-to-many entity-name=\"HistoricalContract\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Contract\" table=\"ContractHistory\"\n"
- " entity-name=\"HistoricalContract\">\n"
- " ...\n"
- " <many-to-one name=\"currentContract\"\n"
- " column=\"currentContractId\"\n"
- " entity-name=\"CurrentContract\"/>\n"
- "</class>]]>"
-msgstr "Hibernate 매핑 파일들 내에 사용자 스키마를 완전하게 정의하기 위한 능력을 제공하기 위해서, Hibernate의 스키마 방출 도구들과 함께 임의적인 데이터베이스 객체들에 대한 CREATE와 DROP을 허용해준다. 비록 트리거들 또는 내장 프로시저들과 같은 것들을 생성시키고 드롭시키기 이해 특별히 고안되었을지라도 하나의 <literal>java.sql.Statement.execute()</literal> 메소드를 통해 실행될 수 있는 SQL 명령이 여기서 유효하다(ALTERs, INSERTS, 기타). 보조 데0이터베이스 객체들을 정의하는 두 가지 모드들이 본질적으로 존재한다..."
+"<![CDATA[<class name=\"Contract\" table=\"Contracts\"\n"
+" entity-name=\"CurrentContract\">\n"
+" ...\n"
+" <set name=\"history\" inverse=\"true\"\n"
+" order-by=\"effectiveEndDate desc\">\n"
+" <key column=\"currentContractId\"/>\n"
+" <one-to-many entity-name=\"HistoricalContract\"/>\n"
+" </set>\n"
+"</class>\n"
+"\n"
+"<class name=\"Contract\" table=\"ContractHistory\"\n"
+" entity-name=\"HistoricalContract\">\n"
+" ...\n"
+" <many-to-one name=\"currentContract\"\n"
+" column=\"currentContractId\"\n"
+" entity-name=\"CurrentContract\"/>\n"
+"</class>]]>"
+msgstr ""
-#: index.docbook:2796
-msgid "Notice how associations are now specified using <literal>entity-name</literal> instead of <literal>class</literal>."
-msgstr "첫 번째 모드는 매핑 파일 바깥에서 CREATE 및 DROP 명령들을 명시적으로 나열하는 것이다:"
+#. Tag: para
+#: basic_mapping.xml:2796
+#, no-c-format
+msgid ""
+"Notice how associations are now specified using <literal>entity-name</"
+"literal> instead of <literal>class</literal>."
+msgstr ""
+"연관들은 이제 <literal>class</literal> 대신에 <literal>entity-name</literal>"
+"을 사용하여 어떻게 지정되는지를 주목하라."
-#: index.docbook:2804
+#. Tag: title
+#: basic_mapping.xml:2804
+#, no-c-format
msgid "SQL quoted identifiers"
+msgstr "SQL 인용부호 표시된 식별자들"
+
+#. Tag: para
+#: basic_mapping.xml:2805
+#, no-c-format
+msgid ""
+"You may force Hibernate to quote an identifier in the generated SQL by "
+"enclosing the table or column name in backticks in the mapping document. "
+"Hibernate will use the correct quotation style for the SQL <literal>Dialect</"
+"literal> (usually double quotes, but brackets for SQL Server and backticks "
+"for MySQL)."
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- " ...\n"
- " <database-object>\n"
- " <create>CREATE TRIGGER my_trigger ...</create>\n"
- " <drop>DROP TRIGGER my_trigger</drop>\n"
- " </database-object>\n"
- "</hibernate-mapping>]]>"
+"당신은 매핑 문서 내에서 테이블 또는 컬럼 이름을 역인용기호(`)들 속에 넣어서 "
+"생성된 SQL에서 식별자를 인용부호 처리하도록 Hibernate에게 강제할 수도 있다. "
+"Hibernate는 SQL <literal>Dialect</literal>에 대해 정확한 인용 스타일을 사용"
+"할 것이다(대개 이중 인용부호 이지만, SQL Server의 경우에는 모난 괄호들이고 "
+"MySQL의 경우에는 역인용부호(`))."
-#: index.docbook:2805
-msgid "You may force Hibernate to quote an identifier in the generated SQL by enclosing the table or column name in backticks in the mapping document. Hibernate will use the correct quotation style for the SQL <literal>Dialect</literal> (usually double quotes, but brackets for SQL Server and backticks for MySQL)."
-msgstr "두번째 모드는 CREATE 및 DROP 명령들을 생성시키는 방법을 알고 있는 하나의 맞춤 클래스를 제공하는 것이다. 이 맞춤 클래스는 <literal>org.hibernate.mapping.AuxiliaryDatabaseObject</literal> 인터페이스를 구현해야 한다."
-
-#: index.docbook:2812
+#. Tag: programlisting
+#: basic_mapping.xml:2812
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"LineItem\" table=\"`Line Item`\">\n"
- " <id name=\"id\" column=\"`Item Id`\"/><generator class=\"assigned\"/></id>\n"
- " <property name=\"itemNumber\" column=\"`Item #`\"/>\n"
- " ...\n"
- "</class>]]>"
+"<![CDATA[<class name=\"LineItem\" table=\"`Line Item`\">\n"
+" <id name=\"id\" column=\"`Item Id`\"/><generator class=\"assigned\"/></"
+"id>\n"
+" <property name=\"itemNumber\" column=\"`Item #`\"/>\n"
+" ...\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- " ...\n"
- " <database-object>\n"
- " <definition class=\"MyTriggerDefinition\"/>\n"
- " </database-object>\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:2818
+#. Tag: title
+#: basic_mapping.xml:2818
+#, no-c-format
msgid "Metadata alternatives"
-msgstr "덧붙여 이들 데이터베이스 객체들은 어떤 dialect들이 사용될 때 그것들이 단지 적용될 수 있도록 선택적으로 변동될 수 있다."
+msgstr "Metadata 대안들"
-#: index.docbook:2820
-msgid "XML isn't for everyone, and so there are some alternative ways to define O/R mapping metadata in Hibernate."
+#. Tag: para
+#: basic_mapping.xml:2820
+#, no-c-format
+msgid ""
+"XML isn't for everyone, and so there are some alternative ways to define O/R "
+"mapping metadata in Hibernate."
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- " ...\n"
- " <database-object>\n"
- " <definition class=\"MyTriggerDefinition\"/>\n"
- " <dialect-scope name=\"org.hibernate.dialect.Oracle9Dialect\"/>\n"
- " <dialect-scope name=\"org.hibernate.dialect.OracleDialect\"/>\n"
- " </database-object>\n"
- "</hibernate-mapping>]]>"
+"XML은 모든 사람들을 위한 것이 아니지만, Hibernate에서 O/R 매핑 메타데이터를 "
+"정의하는 몇몇 대안적인 방법들이 존재한다."
-#: index.docbook:2825
+#. Tag: title
+#: basic_mapping.xml:2825
+#, no-c-format
msgid "Using XDoclet markup"
-msgstr ""
+msgstr "XDoclet 마크업 사용하기"
-#: index.docbook:2827
-msgid "Many Hibernate users prefer to embed mapping information directly in sourcecode using XDoclet <literal>@hibernate.tags</literal>. We will not cover this approach in this document, since strictly it is considered part of XDoclet. However, we include the following example of the <literal>Cat</literal> class with XDoclet mappings."
+#. Tag: para
+#: basic_mapping.xml:2827
+#, no-c-format
+msgid ""
+"Many Hibernate users prefer to embed mapping information directly in "
+"sourcecode using XDoclet <literal>@hibernate.tags</literal>. We will not "
+"cover this approach in this document, since strictly it is considered part "
+"of XDoclet. However, we include the following example of the <literal>Cat</"
+"literal> class with XDoclet mappings."
msgstr ""
+"많은 Hibernate 사용자들은 XDoclet <literal>@hibernate.tags</literal>를 사용하"
+"여 소스 코드 속에 직접 매핑 정보를 삽입시키는 것을 선호한다. 우리는 이 문서에"
+"서 이 접근법을 다루지 않을 것이다. 왜냐하면 그것은 엄격하게는 XDoclet의 부분"
+"으로 간주되기 때문이다. 하지만 우리는 XDoclet 매핑들을 가진 <literal>Cat</"
+"literal> 클래스에 관한 다음 예제를 포함한다."
-#: index.docbook:2834
+#. Tag: programlisting
+#: basic_mapping.xml:2834
+#, no-c-format
msgid ""
- "<![CDATA[package eg;\n"
- "import java.util.Set;\n"
- "import java.util.Date;\n"
- "\n"
- "/**\n"
- " * @hibernate.class\n"
- " * table=\"CATS\"\n"
- " */\n"
- "public class Cat {\n"
- " private Long id; // identifier\n"
- " private Date birthdate;\n"
- " private Cat mother;\n"
- " private Set kittens\n"
- " private Color color;\n"
- " private char sex;\n"
- " private float weight;\n"
- "\n"
- " /*\n"
- " * @hibernate.id\n"
- " * generator-class=\"native\"\n"
- " * column=\"CAT_ID\"\n"
- " */\n"
- " public Long getId() {\n"
- " return id;\n"
- " }\n"
- " private void setId(Long id) {\n"
- " this.id=id;\n"
- " }\n"
- "\n"
- " /**\n"
- " * @hibernate.many-to-one\n"
- " * column=\"PARENT_ID\"\n"
- " */\n"
- " public Cat getMother() {\n"
- " return mother;\n"
- " }\n"
- " void setMother(Cat mother) {\n"
- " this.mother = mother;\n"
- " }\n"
- "\n"
- " /**\n"
- " * @hibernate.property\n"
- " * column=\"BIRTH_DATE\"\n"
- " */\n"
- " public Date getBirthdate() {\n"
- " return birthdate;\n"
- " }\n"
- " void setBirthdate(Date date) {\n"
- " birthdate = date;\n"
- " }\n"
- " /**\n"
- " * @hibernate.property\n"
- " * column=\"WEIGHT\"\n"
- " */\n"
- " public float getWeight() {\n"
- " return weight;\n"
- " }\n"
- " void setWeight(float weight) {\n"
- " this.weight = weight;\n"
- " }\n"
- "\n"
- " /**\n"
- " * @hibernate.property\n"
- " * column=\"COLOR\"\n"
- " * not-null=\"true\"\n"
- " */\n"
- " public Color getColor() {\n"
- " return color;\n"
- " }\n"
- " void setColor(Color color) {\n"
- " this.color = color;\n"
- " }\n"
- " /**\n"
- " * @hibernate.set\n"
- " * inverse=\"true\"\n"
- " * order-by=\"BIRTH_DATE\"\n"
- " * @hibernate.collection-key\n"
- " * column=\"PARENT_ID\"\n"
- " * @hibernate.collection-one-to-many\n"
- " */\n"
- " public Set getKittens() {\n"
- " return kittens;\n"
- " }\n"
- " void setKittens(Set kittens) {\n"
- " this.kittens = kittens;\n"
- " }\n"
- " // addKitten not needed by Hibernate\n"
- " public void addKitten(Cat kitten) {\n"
- " kittens.add(kitten);\n"
- " }\n"
- "\n"
- " /**\n"
- " * @hibernate.property\n"
- " * column=\"SEX\"\n"
- " * not-null=\"true\"\n"
- " * update=\"false\"\n"
- " */\n"
- " public char getSex() {\n"
- " return sex;\n"
- " }\n"
- " void setSex(char sex) {\n"
- " this.sex=sex;\n"
- " }\n"
- "}]]>"
+"<![CDATA[package eg;\n"
+"import java.util.Set;\n"
+"import java.util.Date;\n"
+"\n"
+"/**\n"
+" * @hibernate.class\n"
+" * table=\"CATS\"\n"
+" */\n"
+"public class Cat {\n"
+" private Long id; // identifier\n"
+" private Date birthdate;\n"
+" private Cat mother;\n"
+" private Set kittens\n"
+" private Color color;\n"
+" private char sex;\n"
+" private float weight;\n"
+"\n"
+" /*\n"
+" * @hibernate.id\n"
+" * generator-class=\"native\"\n"
+" * column=\"CAT_ID\"\n"
+" */\n"
+" public Long getId() {\n"
+" return id;\n"
+" }\n"
+" private void setId(Long id) {\n"
+" this.id=id;\n"
+" }\n"
+"\n"
+" /**\n"
+" * @hibernate.many-to-one\n"
+" * column=\"PARENT_ID\"\n"
+" */\n"
+" public Cat getMother() {\n"
+" return mother;\n"
+" }\n"
+" void setMother(Cat mother) {\n"
+" this.mother = mother;\n"
+" }\n"
+"\n"
+" /**\n"
+" * @hibernate.property\n"
+" * column=\"BIRTH_DATE\"\n"
+" */\n"
+" public Date getBirthdate() {\n"
+" return birthdate;\n"
+" }\n"
+" void setBirthdate(Date date) {\n"
+" birthdate = date;\n"
+" }\n"
+" /**\n"
+" * @hibernate.property\n"
+" * column=\"WEIGHT\"\n"
+" */\n"
+" public float getWeight() {\n"
+" return weight;\n"
+" }\n"
+" void setWeight(float weight) {\n"
+" this.weight = weight;\n"
+" }\n"
+"\n"
+" /**\n"
+" * @hibernate.property\n"
+" * column=\"COLOR\"\n"
+" * not-null=\"true\"\n"
+" */\n"
+" public Color getColor() {\n"
+" return color;\n"
+" }\n"
+" void setColor(Color color) {\n"
+" this.color = color;\n"
+" }\n"
+" /**\n"
+" * @hibernate.set\n"
+" * inverse=\"true\"\n"
+" * order-by=\"BIRTH_DATE\"\n"
+" * @hibernate.collection-key\n"
+" * column=\"PARENT_ID\"\n"
+" * @hibernate.collection-one-to-many\n"
+" */\n"
+" public Set getKittens() {\n"
+" return kittens;\n"
+" }\n"
+" void setKittens(Set kittens) {\n"
+" this.kittens = kittens;\n"
+" }\n"
+" // addKitten not needed by Hibernate\n"
+" public void addKitten(Cat kitten) {\n"
+" kittens.add(kitten);\n"
+" }\n"
+"\n"
+" /**\n"
+" * @hibernate.property\n"
+" * column=\"SEX\"\n"
+" * not-null=\"true\"\n"
+" * update=\"false\"\n"
+" */\n"
+" public char getSex() {\n"
+" return sex;\n"
+" }\n"
+" void setSex(char sex) {\n"
+" this.sex=sex;\n"
+" }\n"
+"}]]>"
msgstr ""
-#: index.docbook:2836
+#. Tag: para
+#: basic_mapping.xml:2836
+#, no-c-format
msgid "See the Hibernate web site for more examples of XDoclet and Hibernate."
-msgstr ""
+msgstr "XDoclet과 ibernate에 관한 추가 예제들은 Hibernate 웹 사이트를 보라."
-#: index.docbook:2843
+#. Tag: title
+#: basic_mapping.xml:2843
+#, no-c-format
msgid "Using JDK 5.0 Annotations"
-msgstr ""
+msgstr "JDK 5.0 Annotations 사용하기"
-#: index.docbook:2845
-msgid "JDK 5.0 introduced XDoclet-style annotations at the language level, type-safe and checked at compile time. This mechnism is more powerful than XDoclet annotations and better supported by tools and IDEs. IntelliJ IDEA, for example, supports auto-completion and syntax highlighting of JDK 5.0 annotations. The new revision of the EJB specification (JSR-220) uses JDK 5.0 annotations as the primary metadata mechanism for entity beans. Hibernate3 implements the <literal>EntityManager</literal> of JSR-220 (the persistence API), support for mapping metadata is available via the <emphasis>Hibernate Annotations</emphasis> package, as a separate download. Both EJB3 (JSR-220) and Hibernate3 metadata is supported."
+#. Tag: para
+#: basic_mapping.xml:2845
+#, no-c-format
+msgid ""
+"JDK 5.0 introduced XDoclet-style annotations at the language level, type-"
+"safe and checked at compile time. This mechnism is more powerful than "
+"XDoclet annotations and better supported by tools and IDEs. IntelliJ IDEA, "
+"for example, supports auto-completion and syntax highlighting of JDK 5.0 "
+"annotations. The new revision of the EJB specification (JSR-220) uses JDK "
+"5.0 annotations as the primary metadata mechanism for entity beans. "
+"Hibernate3 implements the <literal>EntityManager</literal> of JSR-220 (the "
+"persistence API), support for mapping metadata is available via the "
+"<emphasis>Hibernate Annotations</emphasis> package, as a separate download. "
+"Both EJB3 (JSR-220) and Hibernate3 metadata is supported."
msgstr ""
+"JDK 5.0은 언어 레벨에서 XDoclet-스타일의 주석들, type-safe와 컴파일 시 체킹"
+"을 도입했다. 이 메커니즘은 XDoclet 주석들 보다 더 강력하며 도구들과 IDE들에 "
+"의해 더 좋게 지원된다. 예를 들어 IntelliJ IDEA는 JDK 5.0 주석들에 대한 자동-"
+"완성 기능과 구문 강조를 지원한다. EJB 명세서의 새로운 개정판(JSR-220)은 엔티"
+"티 빈즈에 대한 프라이머리 메타데이터 메커니즘으로서 JDK 5.0 Annotations을 사"
+"용한다. Hibernate3는 JSR-220(영속 API)의 <literal>EntityManager</literal>를 "
+"구현하고, 매핑 메타데이터에 대한 지원은 별도의 내려받기로서 "
+"<emphasis>Hibernate Annotations</emphasis> 패키지를 통해 이용 가능하다. EJB3 "
+"(JSR-220)과 Hibernate3 metadata 양자가 지원된다."
-#: index.docbook:2856
+#. Tag: para
+#: basic_mapping.xml:2856
+#, no-c-format
msgid "This is an example of a POJO class annotated as an EJB entity bean:"
-msgstr ""
+msgstr "다음은 EJB 엔티티 빈으로서 주석이 붙은 POJO 클래스에 관한 예제이다:"
-#: index.docbook:2860
+#. Tag: programlisting
+#: basic_mapping.xml:2860
+#, no-c-format
msgid ""
- "<![CDATA[@Entity(access = AccessType.FIELD)\n"
- "public class Customer implements Serializable {\n"
- "\n"
- " @Id;\n"
- " Long id;\n"
- "\n"
- " String firstName;\n"
- " String lastName;\n"
- " Date birthday;\n"
- "\n"
- " @Transient\n"
- " Integer age;\n"
- "\n"
- " @Embedded\n"
- " private Address homeAddress;\n"
- "\n"
- " @OneToMany(cascade=CascadeType.ALL)\n"
- " @JoinColumn(name=\"CUSTOMER_ID\")\n"
- " Set<Order> orders;\n"
- "\n"
- " // Getter/setter and business methods\n"
- "}]]>"
+"<![CDATA[@Entity(access = AccessType.FIELD)\n"
+"public class Customer implements Serializable {\n"
+"\n"
+" @Id;\n"
+" Long id;\n"
+"\n"
+" String firstName;\n"
+" String lastName;\n"
+" Date birthday;\n"
+"\n"
+" @Transient\n"
+" Integer age;\n"
+"\n"
+" @Embedded\n"
+" private Address homeAddress;\n"
+"\n"
+" @OneToMany(cascade=CascadeType.ALL)\n"
+" @JoinColumn(name=\"CUSTOMER_ID\")\n"
+" Set<Order> orders;\n"
+"\n"
+" // Getter/setter and business methods\n"
+"}]]>"
msgstr ""
-#: index.docbook:2862
-msgid "Note that support for JDK 5.0 Annotations (and JSR-220) is still work in progress and not completed. Please refer to the Hibernate Annotations module for more details."
+#. Tag: para
+#: basic_mapping.xml:2862
+#, no-c-format
+msgid ""
+"Note that support for JDK 5.0 Annotations (and JSR-220) is still work in "
+"progress and not completed. Please refer to the Hibernate Annotations module "
+"for more details."
msgstr ""
+"JDK 5.0 Annotations(그리고 JSR-220)에 대한 지원은 여전히 작업이 진행 중이고 "
+"완성되지 않았음을 노트하라. 상세한 것은 Hibernate Anotations를 참조하라."
-#: index.docbook:2871
+#. Tag: title
+#: basic_mapping.xml:2871
+#, no-c-format
msgid "Generated Properties"
-msgstr ""
+msgstr "산출되는 프로퍼티들"
-#: index.docbook:2872
-msgid "Generated properties are properties which have their values generated by the database. Typically, Hibernate applications needed to <literal>refresh</literal> objects which contain any properties for which the database was generating values. Marking properties as generated, however, lets the application delegate this responsibility to Hibernate. Essentially, whenever Hibernate issues an SQL INSERT or UPDATE for an entity which has defined generated properties, it immediately issues a select afterwards to retrieve the generated values."
+#. Tag: para
+#: basic_mapping.xml:2872
+#, no-c-format
+msgid ""
+"Generated properties are properties which have their values generated by the "
+"database. Typically, Hibernate applications needed to <literal>refresh</"
+"literal> objects which contain any properties for which the database was "
+"generating values. Marking properties as generated, however, lets the "
+"application delegate this responsibility to Hibernate. Essentially, whenever "
+"Hibernate issues an SQL INSERT or UPDATE for an entity which has defined "
+"generated properties, it immediately issues a select afterwards to retrieve "
+"the generated values."
msgstr ""
+"산출되는 프로퍼티들은 데이터베이스에 의해 산출되는 그것들의 값들을 갖는 프로"
+"퍼티들이다. 전형적으로, Hibernate 어플리케이션들은 데이터베이스가 값들을 생성"
+"시켰던 임의의 프로퍼티들을 포함하는 객체들을 <literal>갱신</literal>시킬 필요"
+"가 있었다.하지만 generated로 마크된 프로퍼티들은 어플리케이션으로 하여금 이 "
+"책임을 Hibernate에게 위임시키도록 한다. 본질적으로 Hibernate가 산출되는 프로"
+"퍼티들을 정의했던 엔티티에 대해 SQL INSERT 또는 UPDATE 명령을 내릴 때마다 바"
+"로 직후에 산출되는 값들을 검색하기 위해 하나의 select 명령을 내린다."
-#: index.docbook:2881
-msgid "Properties marked as generated must additionally be non-insertable and non-updateable. Only <xref linkend=\"mapping-declaration-version\"/>versions, <xref linkend=\"mapping-declaration-timestamp\"/>timestamps, and <xref linkend=\"mapping-declaration-property\"/>simple properties can be marked as generated."
+#. Tag: para
+#: basic_mapping.xml:2881
+#, no-c-format
+msgid ""
+"Properties marked as generated must additionally be non-insertable and non-"
+"updateable. Only <link linkend=\"mapping-declaration-version\">versions</"
+"link>, <link linkend=\"mapping-declaration-timestamp\">timestamps</link>, "
+"and <link linkend=\"mapping-declaration-property\">simple properties</link> "
+"can be marked as generated."
msgstr ""
+"generated로 마크된 프로퍼티들은 부가적으로 inser 가능하지 않아야 하고 update "
+"불가능해야 한다. 오직 Properties marked as generated must additionally be "
+"non-insertable and non-updateable. <xref linkend=\"mapping-declaration-"
+"version\">versions</xref>, <xref linkend=\"mapping-declaration-timestamp"
+"\">timestamps</xref>, 그리고 <xref linkend=\"mapping-declaration-property\">"
+"단순 프로퍼티들</xref> 만이 generated로 마크될 수 있다."
-#: index.docbook:2888
-msgid "<literal>never</literal> (the default) - means that the given property value is not generated within the database."
+#. Tag: para
+#: basic_mapping.xml:2888
+#, no-c-format
+msgid ""
+"<literal>never</literal> (the default) - means that the given property value "
+"is not generated within the database."
msgstr ""
+"<literal>never</literal> (디폴트) - 는 주어진 프로퍼티 값이 데이터베이스 내"
+"에 생성되지 않을 것임을 의미한다."
-#: index.docbook:2892
-msgid "<literal>insert</literal> - states that the given property value is generated on insert, but is not regenerated on subsequent updates. Things like created-date would fall into this category. Note that even thought <xref linkend=\"mapping-declaration-version\"/>version and <xref linkend=\"mapping-declaration-timestamp\"/>timestamp properties can be marked as generated, this option is not available there..."
+#. Tag: para
+#: basic_mapping.xml:2892
+#, no-c-format
+msgid ""
+"<literal>insert</literal> - states that the given property value is "
+"generated on insert, but is not regenerated on subsequent updates. Things "
+"like created-date would fall into this category. Note that even thought "
+"<link linkend=\"mapping-declaration-version\">version</link> and <link "
+"linkend=\"mapping-declaration-timestamp\">timestamp</link> properties can be "
+"marked as generated, this option is not available there..."
msgstr ""
+"<literal>insert</literal> - 는 주어진 프로퍼티 값이 insert 시에 생성되지만, "
+"차후의 업데이트들에서 다시 생성되지 않을 것임을 기술한다. 생성-날짜와 같은 것"
+"들이 이 카테고리 내로 포함될 것이다. 비록 <xref linkend=\"mapping-"
+"declaration-version\">version</xref>과 <xref linkend=\"mapping-declaration-"
+"timestamp\">timestamp</xref> 프로퍼티들이 생성되는 것으로서 마크될 수 있을 지"
+"라도, 이 옵션은 거기서 이용 불가능함을 노트하라..."
-#: index.docbook:2900
-msgid "<literal>always</literal> - states that the property value is generated both on insert and on update."
+#. Tag: para
+#: basic_mapping.xml:2900
+#, no-c-format
+msgid ""
+"<literal>always</literal> - states that the property value is generated both "
+"on insert and on update."
msgstr ""
+"<literal>always</literal> - 는 프로퍼티 값이 insert 시와 update 시 모두에 생"
+"성됨을 기술한다."
-#: index.docbook:2907
+#. Tag: title
+#: basic_mapping.xml:2907
+#, no-c-format
msgid "Auxiliary Database Objects"
-msgstr ""
+msgstr "보조 데이터베이스 객체들"
-#: index.docbook:2908
-msgid "Allows CREATE and DROP of arbitrary database objects, in conjunction with Hibernate's schema evolution tools, to provide the ability to fully define a user schema within the Hibernate mapping files. Although designed specifically for creating and dropping things like triggers or stored procedures, really any SQL command that can be run via a <literal>java.sql.Statement.execute()</literal> method is valid here (ALTERs, INSERTS, etc). There are essentially two modes for defining auxiliary database objects..."
+#. Tag: para
+#: basic_mapping.xml:2908
+#, no-c-format
+msgid ""
+"Allows CREATE and DROP of arbitrary database objects, in conjunction with "
+"Hibernate's schema evolution tools, to provide the ability to fully define a "
+"user schema within the Hibernate mapping files. Although designed "
+"specifically for creating and dropping things like triggers or stored "
+"procedures, really any SQL command that can be run via a <literal>java.sql."
+"Statement.execute()</literal> method is valid here (ALTERs, INSERTS, etc). "
+"There are essentially two modes for defining auxiliary database objects..."
msgstr ""
+"Hibernate 매핑 파일들 내에 사용자 스키마를 완전하게 정의하기 위한 능력을 제공"
+"하기 위해서, Hibernate의 스키마 방출 도구들과 함께 임의적인 데이터베이스 객체"
+"들에 대한 CREATE와 DROP을 허용해준다. 비록 트리거들 또는 내장 프로시저들과 같"
+"은 것들을 생성시키고 드롭시키기 이해 특별히 고안되었을지라도 하나의 "
+"<literal>java.sql.Statement.execute()</literal> 메소드를 통해 실행될 수 있는 "
+"SQL 명령이 여기서 유효하다(ALTERs, INSERTS, 기타). 보조 데0이터베이스 객체들"
+"을 정의하는 두 가지 모드들이 본질적으로 존재한다..."
-#: index.docbook:2917
-msgid "The first mode is to explicitly list the CREATE and DROP commands out in the mapping file:"
+#. Tag: para
+#: basic_mapping.xml:2917
+#, no-c-format
+msgid ""
+"The first mode is to explicitly list the CREATE and DROP commands out in the "
+"mapping file:"
msgstr ""
+"첫 번째 모드는 매핑 파일 바깥에서 CREATE 및 DROP 명령들을 명시적으로 나열하"
+"는 것이다:"
-#: index.docbook:2921
+#. Tag: programlisting
+#: basic_mapping.xml:2921
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- " ...\n"
- " <database-object>\n"
- " <create>CREATE TRIGGER my_trigger ...</create>\n"
- " <drop>DROP TRIGGER my_trigger</drop>\n"
- " </database-object>\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+" ...\n"
+" <database-object>\n"
+" <create>CREATE TRIGGER my_trigger ...</create>\n"
+" <drop>DROP TRIGGER my_trigger</drop>\n"
+" </database-object>\n"
+"</hibernate-mapping>]]>"
msgstr ""
-#: index.docbook:2922
-msgid "The second mode is to supply a custom class which knows how to construct the CREATE and DROP commands. This custom class must implement the <literal>org.hibernate.mapping.AuxiliaryDatabaseObject</literal> interface."
+#. Tag: para
+#: basic_mapping.xml:2922
+#, no-c-format
+msgid ""
+"The second mode is to supply a custom class which knows how to construct the "
+"CREATE and DROP commands. This custom class must implement the <literal>org."
+"hibernate.mapping.AuxiliaryDatabaseObject</literal> interface."
msgstr ""
+"두번째 모드는 CREATE 및 DROP 명령들을 생성시키는 방법을 알고 있는 하나의 맞"
+"춤 클래스를 제공하는 것이다. 이 맞춤 클래스는 <literal>org.hibernate.mapping."
+"AuxiliaryDatabaseObject</literal> 인터페이스를 구현해야 한다."
-#: index.docbook:2927
+#. Tag: programlisting
+#: basic_mapping.xml:2927
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- " ...\n"
- " <database-object>\n"
- " <definition class=\"MyTriggerDefinition\"/>\n"
- " </database-object>\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+" ...\n"
+" <database-object>\n"
+" <definition class=\"MyTriggerDefinition\"/>\n"
+" </database-object>\n"
+"</hibernate-mapping>]]>"
msgstr ""
-#: index.docbook:2928
-msgid "Additionally, these database objects can be optionally scoped such that they only apply when certain dialects are used."
+#. Tag: para
+#: basic_mapping.xml:2928
+#, no-c-format
+msgid ""
+"Additionally, these database objects can be optionally scoped such that they "
+"only apply when certain dialects are used."
msgstr ""
+"덧붙여 이들 데이터베이스 객체들은 어떤 dialect들이 사용될 때 그것들이 단지 적"
+"용될 수 있도록 선택적으로 변동될 수 있다."
-#: index.docbook:2932
+#. Tag: programlisting
+#: basic_mapping.xml:2932
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- " ...\n"
- " <database-object>\n"
- " <definition class=\"MyTriggerDefinition\"/>\n"
- " <dialect-scope name=\"org.hibernate.dialect.Oracle9Dialect\"/>\n"
- " <dialect-scope name=\"org.hibernate.dialect.OracleDialect\"/>\n"
- " </database-object>\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+" ...\n"
+" <database-object>\n"
+" <definition class=\"MyTriggerDefinition\"/>\n"
+" <dialect-scope name=\"org.hibernate.dialect.Oracle9Dialect\"/>\n"
+" <dialect-scope name=\"org.hibernate.dialect.OracleDialect\"/>\n"
+" </database-object>\n"
+"</hibernate-mapping>]]>"
msgstr ""
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+#~ msgid "class"
+#~ msgstr "class"
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+#~ msgid "id"
+#~ msgstr "id"
+#~ msgid ""
+#~ "<literal>optimizer</literal> (optional, defaults to <literal>none</"
+#~ "literal>): See <xref linkend=\"mapping-declaration-id-enhanced-optimizers"
+#~ "\"/>"
+#~ msgstr ""
+#~ "<literal>optimizer</literal> (optional, defaults to <literal>none</"
+#~ "literal>): See <xref linkend=\"mapping-declaration-id-enhanced-optimizers"
+#~ "\"/>"
+
+#~ msgid ""
+#~ "<literal>optimizer</literal> (optional, defaults to <literal/>): See "
+#~ "<xref linkend=\"mapping-declaration-id-enhanced-optimizers\"/>"
+#~ msgstr ""
+#~ "<literal>optimizer</literal> (optional, defaults to <literal/>): See "
+#~ "<xref linkend=\"mapping-declaration-id-enhanced-optimizers\"/>"
+
+#~ msgid "key"
+#~ msgstr "key"
+
+#~ msgid "any"
+#~ msgstr "any"
Modified: core/trunk/documentation/manual/translations/ko-KR/content/batch.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/batch.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/batch.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,374 +1,636 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: batch.xml:5
+#, no-c-format
msgid "Batch processing"
msgstr "Batch 처리"
-#: index.docbook:7
-msgid "A naive approach to inserting 100 000 rows in the database using Hibernate might look like this:"
-msgstr "Hibernate를 사용하여 데이터베이스 내에서 100 000 개의 행들을 삽입시키는 본래의 접근법은 다음과 같다:"
+#. Tag: para
+#: batch.xml:7
+#, no-c-format
+msgid ""
+"A naive approach to inserting 100 000 rows in the database using Hibernate "
+"might look like this:"
+msgstr ""
+"Hibernate를 사용하여 데이터베이스 내에서 100 000 개의 행들을 삽입시키는 본래"
+"의 접근법은 다음과 같다:"
-#: index.docbook:12
+#. Tag: programlisting
+#: batch.xml:12
+#, no-c-format
msgid ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- "for ( int i=0; i<100000; i++ ) {\n"
- " Customer customer = new Customer(.....);\n"
- " session.save(customer);\n"
- "}\n"
- "tx.commit();\n"
- "session.close();]]>"
+"<![CDATA[Session session = sessionFactory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+"for ( int i=0; i<100000; i++ ) {\n"
+" Customer customer = new Customer(.....);\n"
+" session.save(customer);\n"
+"}\n"
+"tx.commit();\n"
+"session.close();]]>"
msgstr ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- "for ( int i=0; i<100000; i++ ) {\n"
- " Customer customer = new Customer(.....);\n"
- " session.save(customer);\n"
- "}\n"
- "tx.commit();\n"
- "session.close();]]>"
-#: index.docbook:14
-msgid "This would fall over with an <literal>OutOfMemoryException</literal> somewhere around the 50 000th row. That's because Hibernate caches all the newly inserted <literal>Customer</literal> instances in the session-level cache."
-msgstr "이것은 50 000번째 행 가까운 곳에서 <literal>OutOfMemoryException</literal>으로 떨어질 것이다. 그것은 Hibernate가 session-level 캐시 속에 모든 새로이 삽입된 <literal>Customer</literal> 인스턴스들을 캐시시키기 때문이다."
+#. Tag: para
+#: batch.xml:14
+#, no-c-format
+msgid ""
+"This would fall over with an <literal>OutOfMemoryException</literal> "
+"somewhere around the 50 000th row. That's because Hibernate caches all the "
+"newly inserted <literal>Customer</literal> instances in the session-level "
+"cache."
+msgstr ""
+"이것은 50 000번째 행 가까운 곳에서 <literal>OutOfMemoryException</literal>으"
+"로 떨어질 것이다. 그것은 Hibernate가 session-level 캐시 속에 모든 새로이 삽입"
+"된 <literal>Customer</literal> 인스턴스들을 캐시시키기 때문이다."
-#: index.docbook:20
-msgid "In this chapter we'll show you how to avoid this problem. First, however, if you are doing batch processing, it is absolutely critical that you enable the use of JDBC batching, if you intend to achieve reasonable performance. Set the JDBC batch size to a reasonable number (say, 10-50):"
-msgstr "이 장에서 우리는 이 문제를 피하는 방법을 당신에게 보여줄 것이다. 하지만 먼저 당신이 배치 처리를 행하는 중이라면, 당신이 적당한 퍼포먼스를 성취하려고 할 경우에 당신이 JDBC 배치 사용을 가능하게 하는 것은 절대적으로 필요하다. JDBC 배치 사이즈를 적당한 숫자(10-50)로 설정하라:"
+#. Tag: para
+#: batch.xml:20
+#, no-c-format
+msgid ""
+"In this chapter we'll show you how to avoid this problem. First, however, if "
+"you are doing batch processing, it is absolutely critical that you enable "
+"the use of JDBC batching, if you intend to achieve reasonable performance. "
+"Set the JDBC batch size to a reasonable number (say, 10-50):"
+msgstr ""
+"이 장에서 우리는 이 문제를 피하는 방법을 당신에게 보여줄 것이다. 하지만 먼저 "
+"당신이 배치 처리를 행하는 중이라면, 당신이 적당한 퍼포먼스를 성취하려고 할 경"
+"우에 당신이 JDBC 배치 사용을 가능하게 하는 것은 절대적으로 필요하다. JDBC 배"
+"치 사이즈를 적당한 숫자(10-50)로 설정하라:"
-#: index.docbook:27
+#. Tag: programlisting
+#: batch.xml:27
+#, no-c-format
msgid "<![CDATA[hibernate.jdbc.batch_size 20]]>"
-msgstr "<![CDATA[hibernate.jdbc.batch_size 20]]>"
+msgstr ""
-#: index.docbook:29
-msgid "Note that Hibernate disables insert batching at the JDBC level transparently if you use an <literal>identiy</literal> identifier generator."
-msgstr "만일 당신이 <literal>identiy</literal> 식별자 생성자를 사용할 경우 Hibernate가 JDBC 레벨에서 투명하게 insert 배치작업을 사용불가능하게 한다는 점을 노트하라."
+#. Tag: para
+#: batch.xml:29
+#, no-c-format
+msgid ""
+"Note that Hibernate disables insert batching at the JDBC level transparently "
+"if you use an <literal>identiy</literal> identifier generator."
+msgstr ""
+"만일 당신이 <literal>identiy</literal> 식별자 생성자를 사용할 경우 Hibernate"
+"가 JDBC 레벨에서 투명하게 insert 배치작업을 사용불가능하게 한다는 점을 노트하"
+"라."
-#: index.docbook:34
-msgid "You also might like to do this kind of work in a process where interaction with the second-level cache is completely disabled:"
-msgstr "당신은 또한 second-level 캐시를 가진 상호작용이 완전하게 불가능한 프로세스 내에서 이런 종류의 작업을 행하고 싶어할 수도 있다:"
+#. Tag: para
+#: batch.xml:34
+#, no-c-format
+msgid ""
+"You also might like to do this kind of work in a process where interaction "
+"with the second-level cache is completely disabled:"
+msgstr ""
+"당신은 또한 second-level 캐시를 가진 상호작용이 완전하게 불가능한 프로세스 내"
+"에서 이런 종류의 작업을 행하고 싶어할 수도 있다:"
-#: index.docbook:39
+#. Tag: programlisting
+#: batch.xml:39
+#, no-c-format
msgid "<![CDATA[hibernate.cache.use_second_level_cache false]]>"
-msgstr "<![CDATA[hibernate.cache.use_second_level_cache false]]>"
+msgstr ""
-#: index.docbook:41
-msgid "However, this is not absolutely necessary, since we can explicitly set the <literal>CacheMode</literal> to disable interaction with the second-level cache."
-msgstr "하지만 이것은 절대적으로 필요하지 않다. 왜냐하면 우리는 second-level 캐시와의 상호작용을 불가능하도록 하기 위해 명시적으로 <literal>CacheMode</literal>를 설정할 수 있기 때문이다."
+#. Tag: para
+#: batch.xml:41
+#, no-c-format
+msgid ""
+"However, this is not absolutely necessary, since we can explicitly set the "
+"<literal>CacheMode</literal> to disable interaction with the second-level "
+"cache."
+msgstr ""
+"하지만 이것은 절대적으로 필요하지 않다. 왜냐하면 우리는 second-level 캐시와"
+"의 상호작용을 불가능하도록 하기 위해 명시적으로 <literal>CacheMode</literal>"
+"를 설정할 수 있기 때문이다."
-#: index.docbook:47
+#. Tag: title
+#: batch.xml:47
+#, no-c-format
msgid "Batch inserts"
msgstr "Batch inserts"
-#: index.docbook:49
-msgid "When making new objects persistent, you must <literal>flush()</literal> and then <literal>clear()</literal> the session regularly, to control the size of the first-level cache."
-msgstr "새로운 객체들을 영속화 시킬 때, 당신은 first-level 캐시의 사이즈를 제어하기 위해 세션을 정기적으로 <literal>flush()</literal> 시키고 나서 <literal>clear()</literal> 시켜야 한다."
+#. Tag: para
+#: batch.xml:49
+#, no-c-format
+msgid ""
+"When making new objects persistent, you must <literal>flush()</literal> and "
+"then <literal>clear()</literal> the session regularly, to control the size "
+"of the first-level cache."
+msgstr ""
+"새로운 객체들을 영속화 시킬 때, 당신은 first-level 캐시의 사이즈를 제어하기 "
+"위해 세션을 정기적으로 <literal>flush()</literal> 시키고 나서 <literal>clear"
+"()</literal> 시켜야 한다."
-#: index.docbook:55
+#. Tag: programlisting
+#: batch.xml:55
+#, no-c-format
msgid ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- " \n"
- "for ( int i=0; i<100000; i++ ) {\n"
- " Customer customer = new Customer(.....);\n"
- " session.save(customer);\n"
- " if ( i % 20 == 0 ) { //20, same as the JDBC batch size\n"
- " //flush a batch of inserts and release memory:\n"
- " session.flush();\n"
- " session.clear();\n"
- " }\n"
- "}\n"
- " \n"
- "tx.commit();\n"
- "session.close();]]>"
+"<![CDATA[Session session = sessionFactory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+" \n"
+"for ( int i=0; i<100000; i++ ) {\n"
+" Customer customer = new Customer(.....);\n"
+" session.save(customer);\n"
+" if ( i % 20 == 0 ) { //20, same as the JDBC batch size\n"
+" //flush a batch of inserts and release memory:\n"
+" session.flush();\n"
+" session.clear();\n"
+" }\n"
+"}\n"
+" \n"
+"tx.commit();\n"
+"session.close();]]>"
msgstr ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- " \n"
- "for ( int i=0; i<100000; i++ ) {\n"
- " Customer customer = new Customer(.....);\n"
- " session.save(customer);\n"
- " if ( i % 20 == 0 ) { //20, same as the JDBC batch size\n"
- " //flush a batch of inserts and release memory:\n"
- " session.flush();\n"
- " session.clear();\n"
- " }\n"
- "}\n"
- " \n"
- "tx.commit();\n"
- "session.close();]]>"
-#: index.docbook:60
+#. Tag: title
+#: batch.xml:60
+#, no-c-format
msgid "Batch updates"
msgstr "Batch updates"
-#: index.docbook:62
-msgid "For retrieving and updating data the same ideas apply. In addition, you need to use <literal>scroll()</literal> to take advantage of server-side cursors for queries that return many rows of data."
-msgstr "데이터 검색과 업데이트의 경우 동일한 개념들이 적용된다. 게다가 당신은 많은 데이터 행들을 반환하는 질의들에 대해 서버-측 커서들의 장점을 취하는데 <literal>scroll()</literal>을 사용할 필요가 있다."
+#. Tag: para
+#: batch.xml:62
+#, no-c-format
+msgid ""
+"For retrieving and updating data the same ideas apply. In addition, you need "
+"to use <literal>scroll()</literal> to take advantage of server-side cursors "
+"for queries that return many rows of data."
+msgstr ""
+"데이터 검색과 업데이트의 경우 동일한 개념들이 적용된다. 게다가 당신은 많은 데"
+"이터 행들을 반환하는 질의들에 대해 서버-측 커서들의 장점을 취하는데 "
+"<literal>scroll()</literal>을 사용할 필요가 있다."
-#: index.docbook:68
+#. Tag: programlisting
+#: batch.xml:68
+#, no-c-format
msgid ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- " \n"
- "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
- " .setCacheMode(CacheMode.IGNORE)\n"
- " .scroll(ScrollMode.FORWARD_ONLY);\n"
- "int count=0;\n"
- "while ( customers.next() ) {\n"
- " Customer customer = (Customer) customers.get(0);\n"
- " customer.updateStuff(...);\n"
- " if ( ++count % 20 == 0 ) {\n"
- " //flush a batch of updates and release memory:\n"
- " session.flush();\n"
- " session.clear();\n"
- " }\n"
- "}\n"
- " \n"
- "tx.commit();\n"
- "session.close();]]>"
+"<![CDATA[Session session = sessionFactory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+" \n"
+"ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+" .setCacheMode(CacheMode.IGNORE)\n"
+" .scroll(ScrollMode.FORWARD_ONLY);\n"
+"int count=0;\n"
+"while ( customers.next() ) {\n"
+" Customer customer = (Customer) customers.get(0);\n"
+" customer.updateStuff(...);\n"
+" if ( ++count % 20 == 0 ) {\n"
+" //flush a batch of updates and release memory:\n"
+" session.flush();\n"
+" session.clear();\n"
+" }\n"
+"}\n"
+" \n"
+"tx.commit();\n"
+"session.close();]]>"
msgstr ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- " \n"
- "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
- " .setCacheMode(CacheMode.IGNORE)\n"
- " .scroll(ScrollMode.FORWARD_ONLY);\n"
- "int count=0;\n"
- "while ( customers.next() ) {\n"
- " Customer customer = (Customer) customers.get(0);\n"
- " customer.updateStuff(...);\n"
- " if ( ++count % 20 == 0 ) {\n"
- " //flush a batch of updates and release memory:\n"
- " session.flush();\n"
- " session.clear();\n"
- " }\n"
- "}\n"
- " \n"
- "tx.commit();\n"
- "session.close();]]>"
-#: index.docbook:73
+#. Tag: title
+#: batch.xml:73
+#, no-c-format
msgid "The StatelessSession interface"
msgstr "StatelessSession 인터페이스"
-#: index.docbook:74
-msgid "Alternatively, Hibernate provides a command-oriented API that may be used for streaming data to and from the database in the form of detached objects. A <literal>StatelessSession</literal> has no persistence context associated with it and does not provide many of the higher-level life cycle semantics. In particular, a stateless session does not implement a first-level cache nor interact with any second-level or query cache. It does not implement transactional write-behind or automatic dirty checking. Operations performed using a stateless session do not ever cascade to associated instances. Collections are ignored by a stateless session. Operations performed via a stateless session bypass Hibernate's event model and interceptors. Stateless sessions are vulnerable to data aliasing effects, due to the lack of a first-level cache. A stateless session is a lower-level abstraction, much closer to the underlying JDBC."
-msgstr "다른 방법으로 Hibernate는 분리된(detached) 객체들의 형식으로 데이터베이스로 그리고 데이터베이스로부터 데이터를 스트리밍하는데 사용될 수 있는 하나의 명령 지향 API를 제공한다. <literal>StatelessSession</literal>은 그것과 연관된 영속 컨텍스트를 갖지 않고 많은 보다 높은 레벨의 생명 주기 의미를 제공하지 않는다. 특히 하나의 상태 없는 세션은 첫 번째 레벨 캐시를 구현하지 않거나 임의의 두 번째 레벨 캐시 또는 질의 캐시와 상호작용하지 않는다. 그것은 전통적인 쓰기-이면(write-behind)의 체킹이나 자동적인 dirty 체킹을 구현하지 않는다. 하나의 상태 없는 세션을 사용하여 수행된 연산들은 연관된 인스턴스들에 대해 케스케이드 되지 않는다. 콜렉션들은 상태 없는 세션에 의해 무시된다. 상태없는 세션을 통해 수행된 연산들은 Hibernate�!
�� 이벤트 모형과 인터셉터들을 우회한다. 상태없는 세션들은 첫번째-레벨의 캐시의 부족으로 인해 데이터 alias 효과들에 취약하다. 상태없는 세션은 기본 JDBC에 훨씬 더 가까운 하나의 보다 낮은 레벨의 추상화(abstraction)이다."
+#. Tag: para
+#: batch.xml:74
+#, no-c-format
+msgid ""
+"Alternatively, Hibernate provides a command-oriented API that may be used "
+"for streaming data to and from the database in the form of detached objects. "
+"A <literal>StatelessSession</literal> has no persistence context associated "
+"with it and does not provide many of the higher-level life cycle semantics. "
+"In particular, a stateless session does not implement a first-level cache "
+"nor interact with any second-level or query cache. It does not implement "
+"transactional write-behind or automatic dirty checking. Operations performed "
+"using a stateless session do not ever cascade to associated instances. "
+"Collections are ignored by a stateless session. Operations performed via a "
+"stateless session bypass Hibernate's event model and interceptors. Stateless "
+"sessions are vulnerable to data aliasing effects, due to the lack of a first-"
+"level cache. A stateless session is a lower-level abstraction, much closer "
+"to the underlying JDBC."
+msgstr ""
+"다른 방법으로 Hibernate는 분리된(detached) 객체들의 형식으로 데이터베이스로 "
+"그리고 데이터베이스로부터 데이터를 스트리밍하는데 사용될 수 있는 하나의 명령 "
+"지향 API를 제공한다. <literal>StatelessSession</literal>은 그것과 연관된 영"
+"속 컨텍스트를 갖지 않고 많은 보다 높은 레벨의 생명 주기 의미를 제공하지 않는"
+"다. 특히 하나의 상태 없는 세션은 첫 번째 레벨 캐시를 구현하지 않거나 임의의 "
+"두 번째 레벨 캐시 또는 질의 캐시와 상호작용하지 않는다. 그것은 전통적인 쓰기-"
+"이면(write-behind)의 체킹이나 자동적인 dirty 체킹을 구현하지 않는다. 하나의 "
+"상태 없는 세션을 사용하여 수행된 연산들은 연관된 인스턴스들에 대해 케스케이"
+"드 되지 않는다. 콜렉션들은 상태 없는 세션에 의해 무시된다. 상태없는 세션을 통"
+"해 수행된 연산들은 Hibernate의 이벤트 모형과 인터셉터들을 우회한다. 상태없는 "
+"세션들은 첫번째-레벨의 캐시의 부족으로 인해 데이터 alias 효과들에 취약하다. "
+"상태없는 세션은 기본 JDBC에 훨씬 더 가까운 하나의 보다 낮은 레벨의 추상화"
+"(abstraction)이다."
-#: index.docbook:89
+#. Tag: programlisting
+#: batch.xml:89
+#, no-c-format
msgid ""
- "<![CDATA[StatelessSession session = sessionFactory.openStatelessSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- " \n"
- "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
- " .scroll(ScrollMode.FORWARD_ONLY);\n"
- "while ( customers.next() ) {\n"
- " Customer customer = (Customer) customers.get(0);\n"
- " customer.updateStuff(...);\n"
- " session.update(customer);\n"
- "}\n"
- " \n"
- "tx.commit();\n"
- "session.close();]]>"
+"<![CDATA[StatelessSession session = sessionFactory.openStatelessSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+" \n"
+"ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
+" .scroll(ScrollMode.FORWARD_ONLY);\n"
+"while ( customers.next() ) {\n"
+" Customer customer = (Customer) customers.get(0);\n"
+" customer.updateStuff(...);\n"
+" session.update(customer);\n"
+"}\n"
+" \n"
+"tx.commit();\n"
+"session.close();]]>"
msgstr ""
- "<![CDATA[StatelessSession session = sessionFactory.openStatelessSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- " \n"
- "ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
- " .scroll(ScrollMode.FORWARD_ONLY);\n"
- "while ( customers.next() ) {\n"
- " Customer customer = (Customer) customers.get(0);\n"
- " customer.updateStuff(...);\n"
- " session.update(customer);\n"
- "}\n"
- " \n"
- "tx.commit();\n"
- "session.close();]]>"
-#: index.docbook:91
-msgid "Note that in this code example, the <literal>Customer</literal> instances returned by the query are immediately detached. They are never associated with any persistence context."
-msgstr "이 코드 예제에서, 질의에 의해 반환된 <literal>Customer</literal> 인스턴스들은 곧바고 분리된다(detached). 그것들은 임의의 영속 컨텍스트와 결코 연관되지 않는다."
+#. Tag: para
+#: batch.xml:91
+#, no-c-format
+msgid ""
+"Note that in this code example, the <literal>Customer</literal> instances "
+"returned by the query are immediately detached. They are never associated "
+"with any persistence context."
+msgstr ""
+"이 코드 예제에서, 질의에 의해 반환된 <literal>Customer</literal> 인스턴스들"
+"은 곧바고 분리된다(detached). 그것들은 임의의 영속 컨텍스트와 결코 연관되지 "
+"않는다."
-#: index.docbook:97
-msgid "The <literal>insert(), update()</literal> and <literal>delete()</literal> operations defined by the <literal>StatelessSession</literal> interface are considered to be direct database row-level operations, which result in immediate execution of a SQL <literal>INSERT, UPDATE</literal> or <literal>DELETE</literal> respectively. Thus, they have very different semantics to the <literal>save(), saveOrUpdate()</literal> and <literal>delete()</literal> operations defined by the <literal>Session</literal> interface."
-msgstr "<literal>StatelessSession</literal> 인터페이스에 의해 정의된 <literal>insert(), update()</literal> 그리고 <literal>delete()</literal> 연산들은 직접적인 데이터베이스 저급 연산들로 갖주되고, 그것은 각각 하나의 SQL <literal>INSERT, UPDATE</literal> 또는 <literal>DELETE</literal>의 즉각적인 실행으로 귀결된다. 따라서 그것들은 <literal>Session</literal> 인터페이스에 의해 정의된 <literal>save(), saveOrUpdate()</literal>와 <literal>delete()</literal> 연산들과는 매우 다른 의미들을 갖는다."
+#. Tag: para
+#: batch.xml:97
+#, no-c-format
+msgid ""
+"The <literal>insert(), update()</literal> and <literal>delete()</literal> "
+"operations defined by the <literal>StatelessSession</literal> interface are "
+"considered to be direct database row-level operations, which result in "
+"immediate execution of a SQL <literal>INSERT, UPDATE</literal> or "
+"<literal>DELETE</literal> respectively. Thus, they have very different "
+"semantics to the <literal>save(), saveOrUpdate()</literal> and "
+"<literal>delete()</literal> operations defined by the <literal>Session</"
+"literal> interface."
+msgstr ""
+"<literal>StatelessSession</literal> 인터페이스에 의해 정의된 <literal>insert"
+"(), update()</literal> 그리고 <literal>delete()</literal> 연산들은 직접적인 "
+"데이터베이스 저급 연산들로 갖주되고, 그것은 각각 하나의 SQL <literal>INSERT, "
+"UPDATE</literal> 또는 <literal>DELETE</literal>의 즉각적인 실행으로 귀결된"
+"다. 따라서 그것들은 <literal>Session</literal> 인터페이스에 의해 정의된 "
+"<literal>save(), saveOrUpdate()</literal>와 <literal>delete()</literal> 연산"
+"들과는 매우 다른 의미들을 갖는다."
-#: index.docbook:110
+#. Tag: title
+#: batch.xml:110
+#, no-c-format
msgid "DML-style operations"
msgstr "DML-스타일 연산들"
-#: index.docbook:112
-msgid "As already discussed, automatic and transparent object/relational mapping is concerned with the management of object state. This implies that the object state is available in memory, hence manipulating (using the SQL <literal>Data Manipulation Language</literal> (DML) statements: <literal>INSERT</literal>, <literal>UPDATE</literal>, <literal>DELETE</literal>) data directly in the database will not affect in-memory state. However, Hibernate provides methods for bulk SQL-style DML statement execution which are performed through the Hibernate Query Language (<xref linkend=\"queryhql\"/>HQL)."
-msgstr "이미 논의했듯이, 자동적이고 투명한 객체/관계형 매핑은 객체 상태에 대한 관리에 관계된다. 이것은 객체 상태가 메모리 내에서 이용 가능함을 의미하므로, (SQL <literal>Data Manipulation Language</literal>(DML) 문장들 : <literal>INSERT</literal>, <literal>UPDATE</literal>, <literal>DELETE</literal>를 사용하여) 데이터베이스에서 직접 데이터를 업데이트하거나 삭제하는 것은 메모리 내 상태에 영향을 주지 않을 것이다. 하지만 Hibernate는 Hibernate Query Language (<xref linkend=\"queryhql\"/>HQL)를 통해 실행되는 대량 SQL-스타일의 DML 문장 실행을 위한 메소드들을 제공한다."
+#. Tag: para
+#: batch.xml:112
+#, no-c-format
+msgid ""
+"As already discussed, automatic and transparent object/relational mapping is "
+"concerned with the management of object state. This implies that the object "
+"state is available in memory, hence manipulating (using the SQL "
+"<literal>Data Manipulation Language</literal> (DML) statements: "
+"<literal>INSERT</literal>, <literal>UPDATE</literal>, <literal>DELETE</"
+"literal>) data directly in the database will not affect in-memory state. "
+"However, Hibernate provides methods for bulk SQL-style DML statement "
+"execution which are performed through the Hibernate Query Language (<link "
+"linkend=\"queryhql\">HQL</link>)."
+msgstr ""
+"이미 논의했듯이, 자동적이고 투명한 객체/관계형 매핑은 객체 상태에 대한 관리"
+"에 관계된다. 이것은 객체 상태가 메모리 내에서 이용 가능함을 의미하므로, (SQL "
+"<literal>Data Manipulation Language</literal>(DML) 문장들 : <literal>INSERT</"
+"literal>, <literal>UPDATE</literal>, <literal>DELETE</literal>를 사용하여) 데"
+"이터베이스에서 직접 데이터를 업데이트하거나 삭제하는 것은 메모리 내 상태에 영"
+"향을 주지 않을 것이다. 하지만 Hibernate는 Hibernate Query Language (<xref "
+"linkend=\"queryhql\">HQL</xref>)를 통해 실행되는 대량 SQL-스타일의 DML 문장 "
+"실행을 위한 메소드들을 제공한다."
-#: index.docbook:122
-msgid "The pseudo-syntax for <literal>UPDATE</literal> and <literal>DELETE</literal> statements is: <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE where_conditions)?</literal>. Some points to note:"
-msgstr "<literal>UPDATE</literal>와 <literal>DELETE</literal> 문장들에 대한 유사 구문은 다음과 같다: <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE where_conditions)?</literal>. 노트할 몇 가지:"
+#. Tag: para
+#: batch.xml:122
+#, no-c-format
+msgid ""
+"The pseudo-syntax for <literal>UPDATE</literal> and <literal>DELETE</"
+"literal> statements is: <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE "
+"where_conditions)?</literal>. Some points to note:"
+msgstr ""
+"<literal>UPDATE</literal>와 <literal>DELETE</literal> 문장들에 대한 유사 구문"
+"은 다음과 같다: <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE "
+"where_conditions)?</literal>. 노트할 몇 가지:"
-#: index.docbook:130
+#. Tag: para
+#: batch.xml:130
+#, no-c-format
msgid "In the from-clause, the FROM keyword is optional"
msgstr "from-절에서, FROM 키워드는 옵션이다"
-#: index.docbook:135
-msgid "There can only be a single entity named in the from-clause; it can optionally be aliased. If the entity name is aliased, then any property references must be qualified using that alias; if the entity name is not aliased, then it is illegal for any property references to be qualified."
-msgstr "from-절 내에 한 개의 명명된 엔티티가 오직 존재할 수 있다; 그것은 선택적으로 alias될 수 있다. 만일 엔티티 이름이 alias되면, 그때 임의의 프로퍼티 참조들은 그 alias를 사용하여 수식되어야 한다; 만일 엔티티 이름이 alias되지 않을 경우, 임의의 프로퍼티 참조들에 대해 수식되는 것은 규칙에 어긋난다."
+#. Tag: para
+#: batch.xml:135
+#, no-c-format
+msgid ""
+"There can only be a single entity named in the from-clause; it can "
+"optionally be aliased. If the entity name is aliased, then any property "
+"references must be qualified using that alias; if the entity name is not "
+"aliased, then it is illegal for any property references to be qualified."
+msgstr ""
+"from-절 내에 한 개의 명명된 엔티티가 오직 존재할 수 있다; 그것은 선택적으로 "
+"alias될 수 있다. 만일 엔티티 이름이 alias되면, 그때 임의의 프로퍼티 참조들은 "
+"그 alias를 사용하여 수식되어야 한다; 만일 엔티티 이름이 alias되지 않을 경우, "
+"임의의 프로퍼티 참조들에 대해 수식되는 것은 규칙에 어긋난다."
-#: index.docbook:143
-msgid "No <xref linkend=\"queryhql-joins-forms\"/>joins (either implicit or explicit) can be specified in a bulk HQL query. Sub-queries may be used in the where-clause; the subqueries, themselves, may contain joins."
-msgstr "join들은 (함축적이든 명시적이든) 대량 HQL 질의 속에 지정될 수 없다. 서브-질의들이 where-절에 사용될 수 있다; 서브질의들 그 자신들은 조인들을 포함할 수 있다."
+#. Tag: para
+#: batch.xml:143
+#, no-c-format
+msgid ""
+"No <link linkend=\"queryhql-joins-forms\">joins</link> (either implicit or "
+"explicit) can be specified in a bulk HQL query. Sub-queries may be used in "
+"the where-clause; the subqueries, themselves, may contain joins."
+msgstr ""
+"<xref linkend=\"queryhql-joins-forms\">join들</xref>은 (함축적이든 명시적이"
+"든) 대량 HQL 질의 속에 지정될 수 없다. 서브-질의들이 where-절에 사용될 수 있"
+"다; 서브질의들 그 자신들은 조인들을 포함할 수 있다."
-#: index.docbook:150
+#. Tag: para
+#: batch.xml:150
+#, no-c-format
msgid "The where-clause is also optional."
msgstr "where-절 또한 옵션이다."
-#: index.docbook:156
-msgid "As an example, to execute an HQL <literal>UPDATE</literal>, use the <literal>Query.executeUpdate()</literal> method (the method is named for those familiar with JDBC's <literal>PreparedStatement.executeUpdate()</literal>):"
-msgstr "하나의 예제로서, 한 개의 HQL <literal>UPDATE</literal>를 실행하기 위해, <literal>Query.executeUpdate()</literal> 메소드(이 메소드는 JDBC의 <literal>PreparedStatement.executeUpdate()</literal>와 유사하게 명명된다)를 사용하라:"
+#. Tag: para
+#: batch.xml:156
+#, no-c-format
+msgid ""
+"As an example, to execute an HQL <literal>UPDATE</literal>, use the "
+"<literal>Query.executeUpdate()</literal> method (the method is named for "
+"those familiar with JDBC's <literal>PreparedStatement.executeUpdate()</"
+"literal>):"
+msgstr ""
+"하나의 예제로서, 한 개의 HQL <literal>UPDATE</literal>를 실행하기 위해, "
+"<literal>Query.executeUpdate()</literal> 메소드(이 메소드는 JDBC의 "
+"<literal>PreparedStatement.executeUpdate()</literal>와 유사하게 명명된다)를 "
+"사용하라:"
-#: index.docbook:162
+#. Tag: programlisting
+#: batch.xml:162
+#, no-c-format
msgid ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- "\n"
- "String hqlUpdate = \"update Customer c set c.name = :newName where c.name = :oldName\";\n"
- "// or String hqlUpdate = \"update Customer set name = :newName where name = :oldName\";\n"
- "int updatedEntities = s.createQuery( hqlUpdate )\n"
- " .setString( \"newName\", newName )\n"
- " .setString( \"oldName\", oldName )\n"
- " .executeUpdate();\n"
- "tx.commit();\n"
- "session.close();]]>"
+"<![CDATA[Session session = sessionFactory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+"\n"
+"String hqlUpdate = \"update Customer c set c.name = :newName where c.name = :"
+"oldName\";\n"
+"// or String hqlUpdate = \"update Customer set name = :newName where name = :"
+"oldName\";\n"
+"int updatedEntities = s.createQuery( hqlUpdate )\n"
+" .setString( \"newName\", newName )\n"
+" .setString( \"oldName\", oldName )\n"
+" .executeUpdate();\n"
+"tx.commit();\n"
+"session.close();]]>"
msgstr ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- "\n"
- "String hqlUpdate = \"update Customer c set c.name = :newName where c.name = :oldName\";\n"
- "// or String hqlUpdate = \"update Customer set name = :newName where name = :oldName\";\n"
- "int updatedEntities = s.createQuery( hqlUpdate )\n"
- " .setString( \"newName\", newName )\n"
- " .setString( \"oldName\", oldName )\n"
- " .executeUpdate();\n"
- "tx.commit();\n"
- "session.close();]]>"
-#: index.docbook:164
-msgid "HQL <literal>UPDATE</literal> statements, by default do not effect the <xref linkend=\"mapping-declaration-version\"/>version or the <xref linkend=\"mapping-declaration-timestamp\"/>timestamp property values for the affected entities; this is in keeping with the EJB3 specification. However, you can force Hibernate to properly reset the <literal>version</literal> or <literal>timestamp</literal> property values through the use of a <literal>versioned update</literal>. This is achieved by adding the <literal>VERSIONED</literal> keyword after the <literal>UPDATE</literal> keyword."
-msgstr "HQL <literal>UPDATE</literal> 문장들은 디폴트로 영향받는 엔티티들에 대한 <xref linkend=\"mapping-declaration-version\"/>version 또는 <xref linkend=\"mapping-declaration-timestamp\"/>timestamp 프로퍼티 값들에 영향을 주지 않는다; 이것은 EJB3 명세서에서 유지되고 있다. 하지만 당신은 하이버네이트로 하여금 <literal>versioned update</literal>의 사용을 통해 <literal>version</literal> 또는 <literal>timestamp</literal> 프로퍼티 값들을 적절하게 재설정하도록 강제할 수 있다. 이것은 <literal>UPDATE</literal> 키워드 뒤에 <literal>VERSIONED</literal> 키워드를 추가시켜서 성취된다."
+#. Tag: para
+#: batch.xml:164
+#, no-c-format
+msgid ""
+"HQL <literal>UPDATE</literal> statements, by default do not effect the <link "
+"linkend=\"mapping-declaration-version\">version</link> or the <link linkend="
+"\"mapping-declaration-timestamp\">timestamp</link> property values for the "
+"affected entities; this is in keeping with the EJB3 specification. However, "
+"you can force Hibernate to properly reset the <literal>version</literal> or "
+"<literal>timestamp</literal> property values through the use of a "
+"<literal>versioned update</literal>. This is achieved by adding the "
+"<literal>VERSIONED</literal> keyword after the <literal>UPDATE</literal> "
+"keyword."
+msgstr ""
+"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> 키워드를 추가시켜서 성취된다."
-#: index.docbook:174
+#. Tag: programlisting
+#: batch.xml:174
+#, no-c-format
msgid ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- "String hqlVersionedUpdate = \"update versioned Customer set name = :newName where name = :oldName\";\n"
- "int updatedEntities = s.createQuery( hqlUpdate )\n"
- " .setString( \"newName\", newName )\n"
- " .setString( \"oldName\", oldName )\n"
- " .executeUpdate();\n"
- "tx.commit();\n"
- "session.close();]]>"
+"<![CDATA[Session session = sessionFactory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+"String hqlVersionedUpdate = \"update versioned Customer set name = :newName "
+"where name = :oldName\";\n"
+"int updatedEntities = s.createQuery( hqlUpdate )\n"
+" .setString( \"newName\", newName )\n"
+" .setString( \"oldName\", oldName )\n"
+" .executeUpdate();\n"
+"tx.commit();\n"
+"session.close();]]>"
msgstr ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- "String hqlVersionedUpdate = \"update versioned Customer set name = :newName where name = :oldName\";\n"
- "int updatedEntities = s.createQuery( hqlUpdate )\n"
- " .setString( \"newName\", newName )\n"
- " .setString( \"oldName\", oldName )\n"
- " .executeUpdate();\n"
- "tx.commit();\n"
- "session.close();]]>"
-#: index.docbook:176
-msgid "Note that custom version types (<literal>org.hibernate.usertype.UserVersionType</literal>) are not allowed in conjunction with a <literal>update versioned</literal> statement."
-msgstr "맞춤형 version 타입들(<literal>org.hibernate.usertype.UserVersionType</literal>)은 <literal>update versioned</literal> 문장과 함께 사용하는 것이 허용되지 않음을 노트하라."
+#. Tag: para
+#: batch.xml:176
+#, no-c-format
+msgid ""
+"Note that custom version types (<literal>org.hibernate.usertype."
+"UserVersionType</literal>) are not allowed in conjunction with a "
+"<literal>update versioned</literal> statement."
+msgstr ""
+"맞춤형 version 타입들(<literal>org.hibernate.usertype.UserVersionType</"
+"literal>)은 <literal>update versioned</literal> 문장과 함께 사용하는 것이 허"
+"용되지 않음을 노트하라."
-#: index.docbook:181
-msgid "To execute an HQL <literal>DELETE</literal>, use the same <literal>Query.executeUpdate()</literal> method:"
-msgstr "HQL <literal>DELETE</literal>를 실행하려면, 같은 메소드 <literal>Query.executeUpdate()</literal>를 사용하라:"
+#. Tag: para
+#: batch.xml:181
+#, no-c-format
+msgid ""
+"To execute an HQL <literal>DELETE</literal>, use the same <literal>Query."
+"executeUpdate()</literal> method:"
+msgstr ""
+"HQL <literal>DELETE</literal>를 실행하려면, 같은 메소드 <literal>Query."
+"executeUpdate()</literal>를 사용하라:"
-#: index.docbook:186
+#. Tag: programlisting
+#: batch.xml:186
+#, no-c-format
msgid ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- "\n"
- "String hqlDelete = \"delete Customer c where c.name = :oldName\";\n"
- "// or String hqlDelete = \"delete Customer where name = :oldName\";\n"
- "int deletedEntities = s.createQuery( hqlDelete )\n"
- " .setString( \"oldName\", oldName )\n"
- " .executeUpdate();\n"
- "tx.commit();\n"
- "session.close();]]>"
+"<![CDATA[Session session = sessionFactory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+"\n"
+"String hqlDelete = \"delete Customer c where c.name = :oldName\";\n"
+"// or String hqlDelete = \"delete Customer where name = :oldName\";\n"
+"int deletedEntities = s.createQuery( hqlDelete )\n"
+" .setString( \"oldName\", oldName )\n"
+" .executeUpdate();\n"
+"tx.commit();\n"
+"session.close();]]>"
msgstr ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- "\n"
- "String hqlDelete = \"delete Customer c where c.name = :oldName\";\n"
- "// or String hqlDelete = \"delete Customer where name = :oldName\";\n"
- "int deletedEntities = s.createQuery( hqlDelete )\n"
- " .setString( \"oldName\", oldName )\n"
- " .executeUpdate();\n"
- "tx.commit();\n"
- "session.close();]]>"
-#: index.docbook:188
-msgid "The <literal>int</literal> value returned by the <literal>Query.executeUpdate()</literal> method indicate the number of entities effected by the operation. Consider this may or may not correlate to the number of rows effected in the database. An HQL bulk operation might result in multiple actual SQL statements being executed, for joined-subclass, for example. The returned number indicates the number of actual entities affected by the statement. Going back to the example of joined-subclass, a delete against one of the subclasses may actually result in deletes against not just the table to which that subclass is mapped, but also the \"root\" table and potentially joined-subclass tables further down the inheritence hierarchy."
-msgstr "<literal>Query.executeUpdate()</literal> 메소드에 의해 반환되는 <literal>int</literal> 값은 그 오퍼레이션에 의해 영향받은 엔티티들의 개수를 나타낸다. 이것이 데이터베이스 내에서 영향받은 행들의 개수와 상관이 있는지 없는지 여부를 살펴보자. HQL 대량 오퍼레이션은 예를 들어 joined-subclass의 경우에 실행 중인 여러 개의 실제 SQL 문장들로 귀결될 수 있다. 반환되는 숫자는 그 문장에 의해 영향받은 실제 엔티티들의 개수를 나타낸다. joined-subclass 예제로 되돌아가면, 서브 클래스들 중 하나에 대한 삭제는 단지 그 서브클래스가 매핑되어 있는 테이블에 대한 삭제 뿐만 아니라 또한 \"루트\" 테이블과 상속 계층에서 더 내려온 잠정적으로 조인된-서브클래스 테이블들에 대한 삭제들로 귀결될 수 있다."
+#. Tag: para
+#: batch.xml:188
+#, no-c-format
+msgid ""
+"The <literal>int</literal> value returned by the <literal>Query.executeUpdate"
+"()</literal> method indicate the number of entities effected by the "
+"operation. Consider this may or may not correlate to the number of rows "
+"effected in the database. An HQL bulk operation might result in multiple "
+"actual SQL statements being executed, for joined-subclass, for example. The "
+"returned number indicates the number of actual entities affected by the "
+"statement. Going back to the example of joined-subclass, a delete against "
+"one of the subclasses may actually result in deletes against not just the "
+"table to which that subclass is mapped, but also the \"root\" table and "
+"potentially joined-subclass tables further down the inheritence hierarchy."
+msgstr ""
+"<literal>Query.executeUpdate()</literal> 메소드에 의해 반환되는 "
+"<literal>int</literal> 값은 그 오퍼레이션에 의해 영향받은 엔티티들의 개수를 "
+"나타낸다. 이것이 데이터베이스 내에서 영향받은 행들의 개수와 상관이 있는지 없"
+"는지 여부를 살펴보자. HQL 대량 오퍼레이션은 예를 들어 joined-subclass의 경우"
+"에 실행 중인 여러 개의 실제 SQL 문장들로 귀결될 수 있다. 반환되는 숫자는 그 "
+"문장에 의해 영향받은 실제 엔티티들의 개수를 나타낸다. joined-subclass 예제로 "
+"되돌아가면, 서브 클래스들 중 하나에 대한 삭제는 단지 그 서브클래스가 매핑되"
+"어 있는 테이블에 대한 삭제 뿐만 아니라 또한 \"루트\" 테이블과 상속 계층에서 "
+"더 내려온 잠정적으로 조인된-서브클래스 테이블들에 대한 삭제들로 귀결될 수 있"
+"다."
-#: index.docbook:199
-msgid "The pseudo-syntax for <literal>INSERT</literal> statements is: <literal>INSERT INTO EntityName properties_list select_statement</literal>. Some points to note:"
-msgstr "장래의 배포본들에서 전달될 대량 HQL 오퍼레이션들에 대한 몇 가지 제한들이 현재 존재함을 노트하라; 상세한 것은 JIRA 로드맵을 참조하라. <literal>INSERT</literal> 문장들을 위한 유사-구문은 다음과 같다: <literal>INSERT INTO EntityName properties_list select_statement</literal>. 노트할 몇 가지:"
+#. Tag: para
+#: batch.xml:199
+#, no-c-format
+msgid ""
+"The pseudo-syntax for <literal>INSERT</literal> statements is: "
+"<literal>INSERT INTO EntityName properties_list select_statement</literal>. "
+"Some points to note:"
+msgstr ""
+"장래의 배포본들에서 전달될 대량 HQL 오퍼레이션들에 대한 몇 가지 제한들이 현"
+"재 존재함을 노트하라; 상세한 것은 JIRA 로드맵을 참조하라. <literal>INSERT</"
+"literal> 문장들을 위한 유사-구문은 다음과 같다: <literal>INSERT INTO "
+"EntityName properties_list select_statement</literal>. 노트할 몇 가지:"
-#: index.docbook:207
-msgid "Only the INSERT INTO ... SELECT ... form is supported; not the INSERT INTO ... VALUES ... form."
-msgstr "오직 INSERT INTO ... SELECT ... 형식 만일 지원된다; INSERT INTO ... VALUES ... 형식은 지원되지 않는다."
+#. Tag: para
+#: batch.xml:207
+#, no-c-format
+msgid ""
+"Only the INSERT INTO ... SELECT ... form is supported; not the INSERT "
+"INTO ... VALUES ... form."
+msgstr ""
+"오직 INSERT INTO ... SELECT ... 형식 만일 지원된다; INSERT INTO ... "
+"VALUES ... 형식은 지원되지 않는다."
-#: index.docbook:210
-msgid "The properties_list is analogous to the <literal>column speficiation</literal> in the SQL <literal>INSERT</literal> statement. For entities involved in mapped inheritence, only properties directly defined on that given class-level can be used in the properties_list. Superclass properties are not allowed; and subclass properties do not make sense. In other words, <literal>INSERT</literal> statements are inherently non-polymorphic."
-msgstr "properties_list는 SQL <literal>INSERT</literal> 내에서 <literal>column speficiation</literal>과 유사하다. 매핑된 상속에 참여하는 엔티티들의 경우, 그 주어진 클래스-레벨 상에 직접 정의된 프로퍼티들 만이 properties_list에 사용될 수 있다. 슈퍼클래스 프로퍼티들은 허용되지 않는다; 그리고 서브클래스 프로퍼티들은 의미가 없다. 달리 말해 <literal>INSERT</literal> 문장들은 본래적으로 다형적이지 않다."
+#. Tag: para
+#: batch.xml:210
+#, no-c-format
+msgid ""
+"The properties_list is analogous to the <literal>column speficiation</"
+"literal> in the SQL <literal>INSERT</literal> statement. For entities "
+"involved in mapped inheritence, only properties directly defined on that "
+"given class-level can be used in the properties_list. Superclass properties "
+"are not allowed; and subclass properties do not make sense. In other words, "
+"<literal>INSERT</literal> statements are inherently non-polymorphic."
+msgstr ""
+"properties_list는 SQL <literal>INSERT</literal> 내에서 <literal>column "
+"speficiation</literal>과 유사하다. 매핑된 상속에 참여하는 엔티티들의 경우, "
+"그 주어진 클래스-레벨 상에 직접 정의된 프로퍼티들 만이 properties_list에 사용"
+"될 수 있다. 슈퍼클래스 프로퍼티들은 허용되지 않는다; 그리고 서브클래스 프로퍼"
+"티들은 의미가 없다. 달리 말해 <literal>INSERT</literal> 문장들은 본래적으로 "
+"다형적이지 않다."
-#: index.docbook:220
-msgid "select_statement can be any valid HQL select query, with the caveat that the return types must match the types expected by the insert. Currently, this is checked during query compilation rather than allowing the check to relegate to the database. Note however that this might cause problems between Hibernate <literal>Type</literal>s which are <emphasis>equivalent</emphasis> as opposed to <emphasis>equal</emphasis>. This might cause issues with mismatches between a property defined as a <literal>org.hibernate.type.DateType</literal> and a property defined as a <literal>org.hibernate.type.TimestampType</literal>, even though the database might not make a distinction or might be able to handle the conversion."
-msgstr "select_statement는 반환 타입들이 insert에 의해 기대되는 타입들과 일치해야 한다는 단서 하에 임의의 유효한 HQL select 질의일 수 있다. 현재 이것은 체크를 데이터베이스로 이관시키는 것을 허용하기 보다는 질의 컴파일 동안에 체크된다. 하지만 이것은 <emphasis>equal</emphasis>과는 대조적으로 <emphasis>등가인(equivalent)</emphasis> Hibernate <literal>Type</literal>들 사이에서 문제점들을 일으킬 수도 있음을 노트하라. 비록 데이터베이스가 구별짓지 않을 수 있거나 변환을 처리할 수 있을 지라도, 이것은 <literal>org.hibernate.type.DateType</literal>로서 정의된 프로퍼티와 <literal>org.hibernate.type.TimestampType</literal>으로 정의된 프로퍼티 사이에 불일치 쟁점들을 일으킨다."
+#. Tag: para
+#: batch.xml:220
+#, no-c-format
+msgid ""
+"select_statement can be any valid HQL select query, with the caveat that the "
+"return types must match the types expected by the insert. Currently, this is "
+"checked during query compilation rather than allowing the check to relegate "
+"to the database. Note however that this might cause problems between "
+"Hibernate <literal>Type</literal>s which are <emphasis>equivalent</emphasis> "
+"as opposed to <emphasis>equal</emphasis>. This might cause issues with "
+"mismatches between a property defined as a <literal>org.hibernate.type."
+"DateType</literal> and a property defined as a <literal>org.hibernate.type."
+"TimestampType</literal>, even though the database might not make a "
+"distinction or might be able to handle the conversion."
+msgstr ""
+"select_statement는 반환 타입들이 insert에 의해 기대되는 타입들과 일치해야 한"
+"다는 단서 하에 임의의 유효한 HQL select 질의일 수 있다. 현재 이것은 체크를 데"
+"이터베이스로 이관시키는 것을 허용하기 보다는 질의 컴파일 동안에 체크된다. 하"
+"지만 이것은 <emphasis>equal</emphasis>과는 대조적으로 <emphasis>등가인"
+"(equivalent)</emphasis> Hibernate <literal>Type</literal>들 사이에서 문제점들"
+"을 일으킬 수도 있음을 노트하라. 비록 데이터베이스가 구별짓지 않을 수 있거나 "
+"변환을 처리할 수 있을 지라도, 이것은 <literal>org.hibernate.type.DateType</"
+"literal>로서 정의된 프로퍼티와 <literal>org.hibernate.type.TimestampType</"
+"literal>으로 정의된 프로퍼티 사이에 불일치 쟁점들을 일으킨다."
-#: index.docbook:232
-msgid "For the id property, the insert statement gives you two options. You can either explicitly specify the id property in the properties_list (in which case its value is taken from the corresponding select expression) or omit it from the properties_list (in which case a generated value is used). This later option is only available when using id generators that operate in the database; attempting to use this option with any \"in memory\" type generators will cause an exception during parsing. Note that for the purposes of this discussion, in-database generators are considered to be <literal>org.hibernate.id.SequenceGenerator</literal> (and its subclasses) and any implementors of <literal>org.hibernate.id.PostInsertIdentifierGenerator</literal>. The most notable exception here is <literal>org.hibernate.id.TableHiLoGenerator</literal>, which cannot be used because it does not expose a selectable way to get its values."
-msgstr "id 프로퍼티의 경우, insert 문장은 당신에게 두 개의 옵션을 준다. 당신은 properties_list 내에 id 프로퍼티를 명시적으로 지정할 수 있거나(그것의 값이 대응하는 select 표현식으로부터 얻어진 경우) 또는 properties_list에서 그것을 생략할 수도 있다 (산출된 값이 사용되는 경우). 이 후자의 옵션은 데이터베이스 내에서 연산되는 id 연산자들을 사용할 때에만 이용 가능하다; 임의의 \"메모리 내\" 타입 연산자들과 함께 이 옵션을 사용하려고 시도하는 것은 파싱 동안에 예외상황을 일으킬 것이다. 이 논의의 목적 상, 데이터베이스 내 산출자(generator)들은 <literal>org.hibernate.id.SequenceGenerator</literal> (그리고 그것의 서브클래스들) 그리고 임의의 <literal>org.hibernate.id.PostInsertIdentifierGenerator</literal>의 구현자들이라고 간주됨을 노트하라. 여기서 가장 주목�!
� 만한 예외상황은 그것이 그것의 값들을 얻기 위한 select 가능한 방법을 노출시키지 않기 때문ㅇ에 사용될 수 없는 <literal>org.hibernate.id.TableHiLoGenerator</literal>이다."
+#. Tag: para
+#: batch.xml:232
+#, no-c-format
+msgid ""
+"For the id property, the insert statement gives you two options. You can "
+"either explicitly specify the id property in the properties_list (in which "
+"case its value is taken from the corresponding select expression) or omit it "
+"from the properties_list (in which case a generated value is used). This "
+"later option is only available when using id generators that operate in the "
+"database; attempting to use this option with any \"in memory\" type "
+"generators will cause an exception during parsing. Note that for the "
+"purposes of this discussion, in-database generators are considered to be "
+"<literal>org.hibernate.id.SequenceGenerator</literal> (and its subclasses) "
+"and any implementors of <literal>org.hibernate.id."
+"PostInsertIdentifierGenerator</literal>. The most notable exception here is "
+"<literal>org.hibernate.id.TableHiLoGenerator</literal>, which cannot be used "
+"because it does not expose a selectable way to get its values."
+msgstr ""
+"id 프로퍼티의 경우, insert 문장은 당신에게 두 개의 옵션을 준다. 당신은 "
+"properties_list 내에 id 프로퍼티를 명시적으로 지정할 수 있거나(그것의 값이 대"
+"응하는 select 표현식으로부터 얻어진 경우) 또는 properties_list에서 그것을 생"
+"략할 수도 있다 (산출된 값이 사용되는 경우). 이 후자의 옵션은 데이터베이스 내"
+"에서 연산되는 id 연산자들을 사용할 때에만 이용 가능하다; 임의의 \"메모리 내"
+"\" 타입 연산자들과 함께 이 옵션을 사용하려고 시도하는 것은 파싱 동안에 예외상"
+"황을 일으킬 것이다. 이 논의의 목적 상, 데이터베이스 내 산출자(generator)들은 "
+"<literal>org.hibernate.id.SequenceGenerator</literal> (그리고 그것의 서브클래"
+"스들) 그리고 임의의 <literal>org.hibernate.id.PostInsertIdentifierGenerator</"
+"literal>의 구현자들이라고 간주됨을 노트하라. 여기서 가장 주목할 만한 예외상황"
+"은 그것이 그것의 값들을 얻기 위한 select 가능한 방법을 노출시키지 않기 때문ㅇ"
+"에 사용될 수 없는 <literal>org.hibernate.id.TableHiLoGenerator</literal>이다."
-#: index.docbook:247
-msgid "For properties mapped as either <literal>version</literal> or <literal>timestamp</literal>, the insert statement gives you two options. You can either specify the property in the properties_list (in which case its value is taken from the corresponding select expressions) or omit it from the properties_list (in which case the <literal>seed value</literal> defined by the <literal>org.hibernate.type.VersionType</literal> is used)."
-msgstr "<literal>version</literal> 또는 <literal>timestamp</literal>로서 매핑된 프로퍼티들의 경우에, insert 문장은 당신에게 두 개의 옵션들을 준다. 당신은 properties_list 내에 그 프로퍼티를 지정할 수 있거나 (그 것의 값이 대응하는 select 표현식으로부터 얻어진 경우) 또는 properties_list에서 그것을 생략할 수 있다 (<literal>org.hibernate.type.VersionType</literal>에 의해 정의된 <literal>seed value</literal> 값이 사용되는 경우)."
+#. Tag: para
+#: batch.xml:247
+#, no-c-format
+msgid ""
+"For properties mapped as either <literal>version</literal> or "
+"<literal>timestamp</literal>, the insert statement gives you two options. "
+"You can either specify the property in the properties_list (in which case "
+"its value is taken from the corresponding select expressions) or omit it "
+"from the properties_list (in which case the <literal>seed value</literal> "
+"defined by the <literal>org.hibernate.type.VersionType</literal> is used)."
+msgstr ""
+"<literal>version</literal> 또는 <literal>timestamp</literal>로서 매핑된 프로"
+"퍼티들의 경우에, insert 문장은 당신에게 두 개의 옵션들을 준다. 당신은 "
+"properties_list 내에 그 프로퍼티를 지정할 수 있거나 (그 것의 값이 대응하는 "
+"select 표현식으로부터 얻어진 경우) 또는 properties_list에서 그것을 생략할 수 "
+"있다 (<literal>org.hibernate.type.VersionType</literal>에 의해 정의된 "
+"<literal>seed value</literal> 값이 사용되는 경우)."
-#: index.docbook:257
+#. Tag: para
+#: batch.xml:257
+#, no-c-format
msgid "An example HQL <literal>INSERT</literal> statement execution:"
msgstr "예제 HQL <literal>INSERT</literal> 문장 실행:"
-#: index.docbook:261
+#. Tag: programlisting
+#: batch.xml:261
+#, no-c-format
msgid ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- "\n"
- "String hqlInsert = \"insert into DelinquentAccount (id, name) select c.id, c.name from Customer c where ...\";\n"
- "int createdEntities = s.createQuery( hqlInsert )\n"
- " .executeUpdate();\n"
- "tx.commit();\n"
- "session.close();]]>"
+"<![CDATA[Session session = sessionFactory.openSession();\n"
+"Transaction tx = session.beginTransaction();\n"
+"\n"
+"String hqlInsert = \"insert into DelinquentAccount (id, name) select c.id, c."
+"name from Customer c where ...\";\n"
+"int createdEntities = s.createQuery( hqlInsert )\n"
+" .executeUpdate();\n"
+"tx.commit();\n"
+"session.close();]]>"
msgstr ""
- "<![CDATA[Session session = sessionFactory.openSession();\n"
- "Transaction tx = session.beginTransaction();\n"
- "\n"
- "String hqlInsert = \"insert into DelinquentAccount (id, name) select c.id, c.name from Customer c where ...\";\n"
- "int createdEntities = s.createQuery( hqlInsert )\n"
- " .executeUpdate();\n"
- "tx.commit();\n"
- "session.close();]]>"
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
Modified: core/trunk/documentation/manual/translations/ko-KR/content/best_practices.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/best_practices.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/best_practices.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,168 +1,452 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: best_practices.xml:5
+#, no-c-format
msgid "Best Practices"
msgstr "최상의 실전 경험들"
-#: index.docbook:9
-msgid "Write fine-grained classes and map them using <literal><component></literal>."
-msgstr "fine-grained 클래스들을 작성하고 <literal><component></literal>를 사용하여 그것들을 매핑하라."
+#. Tag: term
+#: best_practices.xml:9
+#, no-c-format
+msgid ""
+"Write fine-grained classes and map them using <literal><component></"
+"literal>."
+msgstr ""
+"fine-grained 클래스들을 작성하고 <literal><component></literal>를 사용"
+"하여 그것들을 매핑하라."
-#: index.docbook:11
-msgid "Use an <literal>Address</literal> class to encapsulate <literal>street</literal>, <literal>suburb</literal>, <literal>state</literal>, <literal>postcode</literal>. This encourages code reuse and simplifies refactoring."
-msgstr "<literal>street</literal>, <literal>suburb</literal>, <literal>state</literal>, <literal>postcode</literal>를 캡슐화 시키는데 <literal>Address</literal> 클래스를 사용하라. 이것은 코드 재사용성을 촉진시키고 리팩토링을 단순화 시킨다."
+#. Tag: para
+#: best_practices.xml:11
+#, no-c-format
+msgid ""
+"Use an <literal>Address</literal> class to encapsulate <literal>street</"
+"literal>, <literal>suburb</literal>, <literal>state</literal>, "
+"<literal>postcode</literal>. This encourages code reuse and simplifies "
+"refactoring."
+msgstr ""
+"<literal>street</literal>, <literal>suburb</literal>, <literal>state</"
+"literal>, <literal>postcode</literal>를 캡슐화 시키는데 <literal>Address</"
+"literal> 클래스를 사용하라. 이것은 코드 재사용성을 촉진시키고 리팩토링을 단순"
+"화 시킨다."
-#: index.docbook:19
+#. Tag: term
+#: best_practices.xml:19
+#, no-c-format
msgid "Declare identifier properties on persistent classes."
msgstr "영속 클래스들에 대해 식별자 프로퍼티들을 선언하라."
-#: index.docbook:21
-msgid "Hibernate makes identifier properties optional. There are all sorts of reasons why you should use them. We recommend that identifiers be 'synthetic' (generated, with no business meaning)."
-msgstr "Hibernate는 식별자 프로퍼티들을 옵션으로 만든다. 왜 우리가 그것들을 사용해야 하는가에 대한 모든 종류의 이유들이 존재한다. 우리는 식별자들이 '합성(synthetic)'이 되는(비지니스 의미 없이 생성되는) 것을 권장한다."
+#. Tag: para
+#: best_practices.xml:21
+#, no-c-format
+msgid ""
+"Hibernate makes identifier properties optional. There are all sorts of "
+"reasons why you should use them. We recommend that identifiers be "
+"'synthetic' (generated, with no business meaning)."
+msgstr ""
+"Hibernate는 식별자 프로퍼티들을 옵션으로 만든다. 왜 우리가 그것들을 사용해야 "
+"하는가에 대한 모든 종류의 이유들이 존재한다. 우리는 식별자들이 '합성"
+"(synthetic)'이 되는(비지니스 의미 없이 생성되는) 것을 권장한다."
-#: index.docbook:29
+#. Tag: term
+#: best_practices.xml:29
+#, no-c-format
msgid "Identify natural keys."
msgstr "고유 키들을 식별하라."
-#: index.docbook:31
-msgid "Identify natural keys for all entities, and map them using <literal><natural-id></literal>. Implement <literal>equals()</literal> and <literal>hashCode()</literal> to compare the properties that make up the natural key."
-msgstr "모든 엔티티들에 대해 고유 키들을 식별하고, <literal><natural-id></literal>를 사용하여 그것들을 매핑하라. 고유 키를 구성하는 프로퍼티들을 비교하기 위해 <literal>equals()</literal>와 <literal>hashCode()</literal>를 구현하라."
+#. Tag: para
+#: best_practices.xml:31
+#, no-c-format
+msgid ""
+"Identify natural keys for all entities, and map them using <literal><"
+"natural-id></literal>. Implement <literal>equals()</literal> and "
+"<literal>hashCode()</literal> to compare the properties that make up the "
+"natural key."
+msgstr ""
+"모든 엔티티들에 대해 고유 키들을 식별하고, <literal><natural-id></"
+"literal>를 사용하여 그것들을 매핑하라. 고유 키를 구성하는 프로퍼티들을 비교하"
+"기 위해 <literal>equals()</literal>와 <literal>hashCode()</literal>를 구현하"
+"라."
-#: index.docbook:39
+#. Tag: term
+#: best_practices.xml:39
+#, no-c-format
msgid "Place each class mapping in its own file."
msgstr "각각의 클래스 매핑을 그것 자신의 파일 내에 위치지워라."
-#: index.docbook:41
-msgid "Don't use a single monolithic mapping document. Map <literal>com.eg.Foo</literal> in the file <literal>com/eg/Foo.hbm.xml</literal>. This makes particularly good sense in a team environment."
-msgstr "하나의 한덩어리 매핑 문서를 사용하지 말라. <literal>com/eg/Foo.hbm.xml</literal> 파일 속에 <literal>com.eg.Foo</literal>를 매핑하라. 이것은 팀 환경에서 특히 좋은 의미를 준다."
+#. Tag: para
+#: best_practices.xml:41
+#, no-c-format
+msgid ""
+"Don't use a single monolithic mapping document. Map <literal>com.eg.Foo</"
+"literal> in the file <literal>com/eg/Foo.hbm.xml</literal>. This makes "
+"particularly good sense in a team environment."
+msgstr ""
+"하나의 한덩어리 매핑 문서를 사용하지 말라. <literal>com/eg/Foo.hbm.xml</"
+"literal> 파일 속에 <literal>com.eg.Foo</literal>를 매핑하라. 이것은 팀 환경에"
+"서 특히 좋은 의미를 준다."
-#: index.docbook:49
+#. Tag: term
+#: best_practices.xml:49
+#, no-c-format
msgid "Load mappings as resources."
msgstr "매핑들을 리소스들로서 로드시켜라."
-#: index.docbook:51
+#. Tag: para
+#: best_practices.xml:51
+#, no-c-format
msgid "Deploy the mappings along with the classes they map."
msgstr "그것들이 매핑하는 클래스들에 따라서 매핑들을 배치하라"
-#: index.docbook:57
+#. Tag: term
+#: best_practices.xml:57
+#, no-c-format
msgid "Consider externalising query strings."
msgstr "질의 문자열들을 객관화 시키는 것을 고려하라."
-#: index.docbook:59
-msgid "This is a good practice if your queries call non-ANSI-standard SQL functions. Externalising the query strings to mapping files will make the application more portable."
-msgstr "당신의 질의들이 ANSI 표준이 아닌 SQL 함수들을 호출하는 경우는 좋은 실전연습이다. 질의 문자열들을 매핑 파일들에다가 외부화 시키는 것은 어플리케이션을 보다 이식성 있도록 만들어줄 것이다."
+#. Tag: para
+#: best_practices.xml:59
+#, no-c-format
+msgid ""
+"This is a good practice if your queries call non-ANSI-standard SQL "
+"functions. Externalising the query strings to mapping files will make the "
+"application more portable."
+msgstr ""
+"당신의 질의들이 ANSI 표준이 아닌 SQL 함수들을 호출하는 경우는 좋은 실전연습이"
+"다. 질의 문자열들을 매핑 파일들에다가 외부화 시키는 것은 어플리케이션을 보다 "
+"이식성 있도록 만들어줄 것이다."
-#: index.docbook:67
+#. Tag: term
+#: best_practices.xml:67
+#, no-c-format
msgid "Use bind variables."
msgstr "바인드 변수들을 사용하라."
-#: index.docbook:69
-msgid "As in JDBC, always replace non-constant values by \"?\". Never use string manipulation to bind a non-constant value in a query! Even better, consider using named parameters in queries."
-msgstr "JDBC에서처럼, 상수 아닌 값들을 \"?\"로 대체시켜라. 질의 속에 상수 아닌 값을 바인드 시키는데 문자열 처리를 결코 사용하지 말라! 더 좋게는 질의들 속에 명명된 파라미터들을 사용하는 것을 고려하라."
+#. Tag: para
+#: best_practices.xml:69
+#, no-c-format
+msgid ""
+"As in JDBC, always replace non-constant values by \"?\". Never use string "
+"manipulation to bind a non-constant value in a query! Even better, consider "
+"using named parameters in queries."
+msgstr ""
+"JDBC에서처럼, 상수 아닌 값들을 \"?\"로 대체시켜라. 질의 속에 상수 아닌 값을 "
+"바인드 시키는데 문자열 처리를 결코 사용하지 말라! 더 좋게는 질의들 속에 명명"
+"된 파라미터들을 사용하는 것을 고려하라."
-#: index.docbook:77
+#. Tag: term
+#: best_practices.xml:77
+#, no-c-format
msgid "Don't manage your own JDBC connections."
msgstr "당신 자신의 JDBC 커넥션들을 관리하지 말라."
-#: index.docbook:79
-msgid "Hibernate lets the application manage JDBC connections. This approach should be considered a last-resort. If you can't use the built-in connections providers, consider providing your own implementation of <literal>org.hibernate.connection.ConnectionProvider</literal>."
-msgstr "Hibernate는 어플리케이션으로 하여금 JDBC 커넥션들을 관리하도록 한다. 이 접근법은 마지막 수단으로서 고려되어야 한다. 만일 당신이 미리 만들어진 커넥션 프로바이더들을 사용할 수 없을 경우, <literal>org.hibernate.connection.ConnectionProvider</literal>에 대한 당신 자신의 구현을 제공하는 것을 고려하라."
+#. Tag: para
+#: best_practices.xml:79
+#, no-c-format
+msgid ""
+"Hibernate lets the application manage JDBC connections. This approach should "
+"be considered a last-resort. If you can't use the built-in connections "
+"providers, consider providing your own implementation of <literal>org."
+"hibernate.connection.ConnectionProvider</literal>."
+msgstr ""
+"Hibernate는 어플리케이션으로 하여금 JDBC 커넥션들을 관리하도록 한다. 이 접근"
+"법은 마지막 수단으로서 고려되어야 한다. 만일 당신이 미리 만들어진 커넥션 프로"
+"바이더들을 사용할 수 없을 경우, <literal>org.hibernate.connection."
+"ConnectionProvider</literal>에 대한 당신 자신의 구현을 제공하는 것을 고려하"
+"라."
-#: index.docbook:87
+#. Tag: term
+#: best_practices.xml:87
+#, no-c-format
msgid "Consider using a custom type."
msgstr "맞춤형 타입 사용을 고려하라."
-#: index.docbook:89
-msgid "Suppose you have a Java type, say from some library, that needs to be persisted but doesn't provide the accessors needed to map it as a component. You should consider implementing <literal>org.hibernate.UserType</literal>. This approach frees the application code from implementing transformations to / from a Hibernate type."
-msgstr "당신이 자바 타입을 갖고 있고, 어떤 라이브러리로부터 말하고, 그것이 영속화 될 필요가 있지만 그것을 컴포넌트로서 매핑시키는데 필요한 accessor들을 제공할 필요가 없다고 가정하자. 당신은 <literal>org.hibernate.UserType</literal>을 구현하는 것을 고려해야 할 것이다. 이 접근법은 Hibernate 타입으로/으로부터 변환들을 구현하는 것으로부터 어플리케이션 코드를 자유롭게 해준다."
+#. Tag: para
+#: best_practices.xml:89
+#, no-c-format
+msgid ""
+"Suppose you have a Java type, say from some library, that needs to be "
+"persisted but doesn't provide the accessors needed to map it as a component. "
+"You should consider implementing <literal>org.hibernate.UserType</literal>. "
+"This approach frees the application code from implementing transformations "
+"to / from a Hibernate type."
+msgstr ""
+"당신이 자바 타입을 갖고 있고, 어떤 라이브러리로부터 말하고, 그것이 영속화 될 "
+"필요가 있지만 그것을 컴포넌트로서 매핑시키는데 필요한 accessor들을 제공할 필"
+"요가 없다고 가정하자. 당신은 <literal>org.hibernate.UserType</literal>을 구현"
+"하는 것을 고려해야 할 것이다. 이 접근법은 Hibernate 타입으로/으로부터 변환들"
+"을 구현하는 것으로부터 어플리케이션 코드를 자유롭게 해준다."
-#: index.docbook:98
+#. Tag: term
+#: best_practices.xml:98
+#, no-c-format
msgid "Use hand-coded JDBC in bottlenecks."
msgstr "병목 지점들에서 수작업으로 코딩된 JDBC를 사용하라."
-#: index.docbook:100
-msgid "In performance-critical areas of the system, some kinds of operations might benefit from direct JDBC. But please, wait until you <emphasis>know</emphasis> something is a bottleneck. And don't assume that direct JDBC is necessarily faster. If you need to use direct JDBC, it might be worth opening a Hibernate <literal>Session</literal> and using that JDBC connection. That way you can still use the same transaction strategy and underlying connection provider."
-msgstr "시스템의 퍼포먼스가 중대한 영역들에서, 몇몇 종류의 오퍼레이션들은 직접적인 JDBC에서 이득을 본다. 그러나 당신이 어떤 것이 병목인지를 <emphasis>알기</emphasis> 전까지 기다리길 바란다. 그리고 직접적인 JDBC가 반드시 더 빠르다고 가정하지 말라. 만일 당신이 직접적인 JDBC를 사용할 필요가 있을 경우, Hibernate <literal>Session</literal>을 열고 그 SQL 커넥션을 사용할 가치가 있다. 그 방법으로 당신은 동일한 트랜잭션 방도와 기본 커넥션 프로바이더를 여전히 사용할 수 있다"
+#. Tag: para
+#: best_practices.xml:100
+#, no-c-format
+msgid ""
+"In performance-critical areas of the system, some kinds of operations might "
+"benefit from direct JDBC. But please, wait until you <emphasis>know</"
+"emphasis> something is a bottleneck. And don't assume that direct JDBC is "
+"necessarily faster. If you need to use direct JDBC, it might be worth "
+"opening a Hibernate <literal>Session</literal> and using that JDBC "
+"connection. That way you can still use the same transaction strategy and "
+"underlying connection provider."
+msgstr ""
+"시스템의 퍼포먼스가 중대한 영역들에서, 몇몇 종류의 오퍼레이션들은 직접적인 "
+"JDBC에서 이득을 본다. 그러나 당신이 어떤 것이 병목인지를 <emphasis>알기</"
+"emphasis> 전까지 기다리길 바란다. 그리고 직접적인 JDBC가 반드시 더 빠르다고 "
+"가정하지 말라. 만일 당신이 직접적인 JDBC를 사용할 필요가 있을 경우, "
+"Hibernate <literal>Session</literal>을 열고 그 SQL 커넥션을 사용할 가치가 있"
+"다. 그 방법으로 당신은 동일한 트랜잭션 방도와 기본 커넥션 프로바이더를 여전"
+"히 사용할 수 있다"
-#: index.docbook:110
+#. Tag: term
+#: best_practices.xml:110
+#, no-c-format
msgid "Understand <literal>Session</literal> flushing."
msgstr "<literal>Session</literal> flushing을 이해하라."
-#: index.docbook:112
-msgid "From time to time the Session synchronizes its persistent state with the database. Performance will be affected if this process occurs too often. You may sometimes minimize unnecessary flushing by disabling automatic flushing or even by changing the order of queries and other operations within a particular transaction."
-msgstr "시간이 지남에 따라 Session은 그것의 영속 상태를 데이터베이스와 동기화 시킨다. 만일 이 과정이 너무 자주 발생할 경우 퍼포먼스가 영향을 받을 것이다. 당신은 때때로 자동적인 flushing을 사용 불가능하게 만들거나 특정 트랜잭션 내에서 질의들의 순서와 다른 오퍼레이션들의 순서를 변경시켜서 불필요한 flushing을 최소화 시킬 수 있다."
+#. Tag: para
+#: best_practices.xml:112
+#, no-c-format
+msgid ""
+"From time to time the Session synchronizes its persistent state with the "
+"database. Performance will be affected if this process occurs too often. You "
+"may sometimes minimize unnecessary flushing by disabling automatic flushing "
+"or even by changing the order of queries and other operations within a "
+"particular transaction."
+msgstr ""
+"시간이 지남에 따라 Session은 그것의 영속 상태를 데이터베이스와 동기화 시킨"
+"다. 만일 이 과정이 너무 자주 발생할 경우 퍼포먼스가 영향을 받을 것이다. 당신"
+"은 때때로 자동적인 flushing을 사용 불가능하게 만들거나 특정 트랜잭션 내에서 "
+"질의들의 순서와 다른 오퍼레이션들의 순서를 변경시켜서 불필요한 flushing을 최"
+"소화 시킬 수 있다."
-#: index.docbook:121
+#. Tag: term
+#: best_practices.xml:121
+#, no-c-format
msgid "In a three tiered architecture, consider using detached objects."
-msgstr "3-tier 아키텍처에서, <literal>saveOrUpdate()</literal> 사용을 고려하라."
+msgstr ""
+"3-tier 아키텍처에서, <literal>saveOrUpdate()</literal> 사용을 고려하라."
-#: index.docbook:123
-msgid "When using a servlet / session bean architecture, you could pass persistent objects loaded in the session bean to and from the servlet / JSP layer. Use a new session to service each request. Use <literal>Session.merge()</literal> or <literal>Session.saveOrUpdate()</literal> to synchronize objects with the database."
-msgstr "servlet / session 빈 아키텍처를 사용할 때, 당신은 sesson bean 내에 로드된 영속 객체들을 서블릿/JSP 계층으로/으로부터 전달할/받을 수 있다. 각각의 요청을 서비스하는데 새로운 세션을 사용하라. 객체들을 데이터베이스와 동기화 시키기 위해서 <literal>Session.merge()</literal> 또는 <literal>Session.saveOrUpdate()</literal>를 사용하라."
+#. Tag: para
+#: best_practices.xml:123
+#, no-c-format
+msgid ""
+"When using a servlet / session bean architecture, you could pass persistent "
+"objects loaded in the session bean to and from the servlet / JSP layer. Use "
+"a new session to service each request. Use <literal>Session.merge()</"
+"literal> or <literal>Session.saveOrUpdate()</literal> to synchronize objects "
+"with the database."
+msgstr ""
+"servlet / session 빈 아키텍처를 사용할 때, 당신은 sesson bean 내에 로드된 영"
+"속 객체들을 서블릿/JSP 계층으로/으로부터 전달할/받을 수 있다. 각각의 요청을 "
+"서비스하는데 새로운 세션을 사용하라. 객체들을 데이터베이스와 동기화 시키기 위"
+"해서 <literal>Session.merge()</literal> 또는 <literal>Session.saveOrUpdate()"
+"</literal>를 사용하라."
-#: index.docbook:132
+#. Tag: term
+#: best_practices.xml:132
+#, no-c-format
msgid "In a two tiered architecture, consider using long persistence contexts."
-msgstr "2-tier 아키텍처에서, 수명이 긴 영속 컨텍스트들을 사용하는 것을 고려하라."
+msgstr ""
+"2-tier 아키텍처에서, 수명이 긴 영속 컨텍스트들을 사용하는 것을 고려하라."
-#: index.docbook:134
-msgid "Database Transactions have to be as short as possible for best scalability. However, it is often neccessary to implement long running <emphasis>application transactions</emphasis>, a single unit-of-work from the point of view of a user. An application transaction might span several client request/response cycles. It is common to use detached objects to implement application transactions. An alternative, extremely appropriate in two tiered architecture, is to maintain a single open persistence contact (session) for the whole life cycle of the application transaction and simply disconnect from the JDBC connection at the end of each request and reconnect at the beginning of the subsequent request. Never share a single session across more than one application transaction, or you will be working with stale data."
-msgstr "데이터베이스 트랜잭션들은 최상의 가용성을 위해 가능한 한 짧아야 한다. 하지만 장기간 실행되는 <emphasis>어플리케이션 트랜잭션들</emphasis>, 사용자의 뷰 관점에서 한 개의 단위 작업을 구현하는 것이 가끔 필수적이다. 하나의 어플리케이션 트랜잭션은 몇 개의 클라이언트 요청들과 응답 주기들에 걸칠 수도 있다. 어플리케이션 트랜잭션들을 구현하는데 detached 객체들을 사용하는 것이 공통적이다. 2-티어 아키텍처에서 매우 적절한 대안은 어플리케이션 트랜잭션의 전체 생명주기 동안에 한 개의 열려진 영속 접속 (세션)을 유지하는 것이고 각각의 요청의 끝에서 JDBC 커넥션을 간단하게 연결해제하고 차후의 요청의 시작 시에 다시 연결하는 것이다. 한 개 이상의 어플리케이션 트랜잭션을 가로질러서 하나의 단일 세션을 결코 공유하�!
�� 말라. 공유할 경우에 당신은 실효성이 없는 데이터로 작업하게 될 것이다."
+#. Tag: para
+#: best_practices.xml:134
+#, no-c-format
+msgid ""
+"Database Transactions have to be as short as possible for best scalability. "
+"However, it is often neccessary to implement long running "
+"<emphasis>application transactions</emphasis>, a single unit-of-work from "
+"the point of view of a user. An application transaction might span several "
+"client request/response cycles. It is common to use detached objects to "
+"implement application transactions. An alternative, extremely appropriate in "
+"two tiered architecture, is to maintain a single open persistence contact "
+"(session) for the whole life cycle of the application transaction and simply "
+"disconnect from the JDBC connection at the end of each request and reconnect "
+"at the beginning of the subsequent request. Never share a single session "
+"across more than one application transaction, or you will be working with "
+"stale data."
+msgstr ""
+"데이터베이스 트랜잭션들은 최상의 가용성을 위해 가능한 한 짧아야 한다. 하지만 "
+"장기간 실행되는 <emphasis>어플리케이션 트랜잭션들</emphasis>, 사용자의 뷰 관"
+"점에서 한 개의 단위 작업을 구현하는 것이 가끔 필수적이다. 하나의 어플리케이"
+"션 트랜잭션은 몇 개의 클라이언트 요청들과 응답 주기들에 걸칠 수도 있다. 어플"
+"리케이션 트랜잭션들을 구현하는데 detached 객체들을 사용하는 것이 공통적이다. "
+"2-티어 아키텍처에서 매우 적절한 대안은 어플리케이션 트랜잭션의 전체 생명주기 "
+"동안에 한 개의 열려진 영속 접속 (세션)을 유지하는 것이고 각각의 요청의 끝에"
+"서 JDBC 커넥션을 간단하게 연결해제하고 차후의 요청의 시작 시에 다시 연결하는 "
+"것이다. 한 개 이상의 어플리케이션 트랜잭션을 가로질러서 하나의 단일 세션을 결"
+"코 공유하지 말라. 공유할 경우에 당신은 실효성이 없는 데이터로 작업하게 될 것"
+"이다."
-#: index.docbook:148
+#. Tag: term
+#: best_practices.xml:148
+#, no-c-format
msgid "Don't treat exceptions as recoverable."
msgstr "예외상황들을 복구가능한 것으로서 다루지 말라."
-#: index.docbook:150
-msgid "This is more of a necessary practice than a \"best\" practice. When an exception occurs, roll back the <literal>Transaction</literal> and close the <literal>Session</literal>. If you don't, Hibernate can't guarantee that in-memory state accurately represents persistent state. As a special case of this, do not use <literal>Session.load()</literal> to determine if an instance with the given identifier exists on the database; use <literal>Session.get()</literal> or a query instead."
-msgstr "이것은 \"최상의\" 실전이 아닌 보다 필수적인 실전이다. 예외상황이 발생할 때, <literal>Transaction</literal>을 롤백시키고 <literal>Session</literal>을 닫아라. 만일 당신이 그렇게 하지 않을 경우, Hibernate는 메모리 내 상태가 영속 상태를 정확하게 표현하는 것을 보증할 수 없다. 이 특별한 경우처럼, 만일 주어진 식별자를 가진 인스턴스가 데이터베이스 상에 존재하는지 여부를 결정하는데 <literal>Session.load()</literal>를 사용하지 말라; 대신에 <literal>Session.get()</literal> 또는 하나의 질의를 사용하라."
+#. Tag: para
+#: best_practices.xml:150
+#, no-c-format
+msgid ""
+"This is more of a necessary practice than a \"best\" practice. When an "
+"exception occurs, roll back the <literal>Transaction</literal> and close the "
+"<literal>Session</literal>. If you don't, Hibernate can't guarantee that in-"
+"memory state accurately represents persistent state. As a special case of "
+"this, do not use <literal>Session.load()</literal> to determine if an "
+"instance with the given identifier exists on the database; use "
+"<literal>Session.get()</literal> or a query instead."
+msgstr ""
+"이것은 \"최상의\" 실전이 아닌 보다 필수적인 실전이다. 예외상황이 발생할 때, "
+"<literal>Transaction</literal>을 롤백시키고 <literal>Session</literal>을 닫아"
+"라. 만일 당신이 그렇게 하지 않을 경우, Hibernate는 메모리 내 상태가 영속 상태"
+"를 정확하게 표현하는 것을 보증할 수 없다. 이 특별한 경우처럼, 만일 주어진 식"
+"별자를 가진 인스턴스가 데이터베이스 상에 존재하는지 여부를 결정하는데 "
+"<literal>Session.load()</literal>를 사용하지 말라; 대신에 <literal>Session."
+"get()</literal> 또는 하나의 질의를 사용하라."
-#: index.docbook:160
+#. Tag: term
+#: best_practices.xml:160
+#, no-c-format
msgid "Prefer lazy fetching for associations."
msgstr "연관들에 대한 lazy 페칭을 선호하라."
-#: index.docbook:162
-msgid "Use eager fetching sparingly. Use proxies and lazy collections for most associations to classes that are not likely to be completely held in the second-level cache. For associations to cached classes, where there is an a extremely high probability of a cache hit, explicitly disable eager fetching using <literal>lazy=\"false\"</literal>. When an join fetching is appropriate to a particular use case, use a query with a <literal>left join fetch</literal>."
-msgstr "eager 페칭을 관대하게 사용하라. second-level 캐시 내에 완전하게 보관되지 않을 것 같은 클래스들에 대한 대붑분의 연관들에 대해 프락시들과 lazy 콜렉션들을 사용하라. 캐시된 클래스들에 대한 연관들의 경우, 이곳은 캐시 성공의 매우 높은 확률이 존재하는 곳이며, <literal>lazy=\"false\"</literal>를 사용하여 eager 페칭을 명시적으로 사용 불가능하게 하라. 한의 join 페칭이 특정 쓰임새에 대해 적절할 때, 하나의 <literal>left join fetch</literal>를 가진 질의를 사용하라."
+#. Tag: para
+#: best_practices.xml:162
+#, no-c-format
+msgid ""
+"Use eager fetching sparingly. Use proxies and lazy collections for most "
+"associations to classes that are not likely to be completely held in the "
+"second-level cache. For associations to cached classes, where there is an a "
+"extremely high probability of a cache hit, explicitly disable eager fetching "
+"using <literal>lazy=\"false\"</literal>. When an join fetching is "
+"appropriate to a particular use case, use a query with a <literal>left join "
+"fetch</literal>."
+msgstr ""
+"eager 페칭을 관대하게 사용하라. second-level 캐시 내에 완전하게 보관되지 않"
+"을 것 같은 클래스들에 대한 대붑분의 연관들에 대해 프락시들과 lazy 콜렉션들을 "
+"사용하라. 캐시된 클래스들에 대한 연관들의 경우, 이곳은 캐시 성공의 매우 높은 "
+"확률이 존재하는 곳이며, <literal>lazy=\"false\"</literal>를 사용하여 eager 페"
+"칭을 명시적으로 사용 불가능하게 하라. 한의 join 페칭이 특정 쓰임새에 대해 적"
+"절할 때, 하나의 <literal>left join fetch</literal>를 가진 질의를 사용하라."
-#: index.docbook:172
-msgid "Use the <emphasis>open session in view</emphasis> pattern, or a disciplined <emphasis>assembly phase</emphasis> to avoid problems with unfetched data."
-msgstr "페치되지 않은 데이터 문제점들을 피하기 위해 <emphasis>뷰 내에 열려진 세션(open session in view)</emphasis> 패턴 또는 하나의 정리된 <emphasis>어셈블리 단계(assembly phase)</emphasis>를 사용하라."
+#. Tag: term
+#: best_practices.xml:172
+#, no-c-format
+msgid ""
+"Use the <emphasis>open session in view</emphasis> pattern, or a disciplined "
+"<emphasis>assembly phase</emphasis> to avoid problems with unfetched data."
+msgstr ""
+"페치되지 않은 데이터 문제점들을 피하기 위해 <emphasis>뷰 내에 열려진 세션"
+"(open session in view)</emphasis> 패턴 또는 하나의 정리된 <emphasis>어셈블리 "
+"단계(assembly phase)</emphasis>를 사용하라."
-#: index.docbook:177
-msgid "Hibernate frees the developer from writing tedious <emphasis>Data Transfer Objects</emphasis> (DTO). In a traditional EJB architecture, DTOs serve dual purposes: first, they work around the problem that entity beans are not serializable; second, they implicitly define an assembly phase where all data to be used by the view is fetched and marshalled into the DTOs before returning control to the presentation tier. Hibernate eliminates the first purpose. However, you will still need an assembly phase (think of your business methods as having a strict contract with the presentation tier about what data is available in the detached objects) unless you are prepared to hold the persistence context (the session) open across the view rendering process. This is not a limitation of Hibernate! It is a fundamental requirement of safe transactional data access."
-msgstr "Hibernate는 개발자들이 <emphasis>Data Transfer Objects</emphasis> (DTO)를 지루하게 작성하는 것으로부터 자유롭게 해준다. 전통적인 EJB 아키텍처에서, DTO는 이중 용도로 기능한다: 첫 번째로 그것들은 엔티티 빈즈가 직렬화 가능하지 않는 문제점에 대해 착수한다; 두 번째로 그것들은 뷰에 의해 사용되는 모든 데이터가 프리젠테이션 티어로 컨트롤을 반환하기 전에 DTO들 속으로 페치되고 마샬링되는 어셈블리 단계를 암묵적으로 정의한다. Hibernate는 첫 번째 용도를 제거시킨다. 하지만 당신이 뷰 렌더링 프로세스를 가로질러 열려져 있는 영속 컨텍스트(세션)을 보관할 준비가 되어 있지 않는 한, 당신은 여전히 어셈블리 단계를 필요로 할 것이다(detached 객체들에서 이용가능한 데이터가 무엇인지에 대해 프리젠테이션 티어와 엄격하게 계약을 갖도�!
� 당신의 비지니스 메소드들을 고려하라) 이것은 Hibernate의 한계점이 아니다! 그것은 안전한 트랜잭션 데이터 접근의 필수 조건이다."
+#. Tag: para
+#: best_practices.xml:177
+#, no-c-format
+msgid ""
+"Hibernate frees the developer from writing tedious <emphasis>Data Transfer "
+"Objects</emphasis> (DTO). In a traditional EJB architecture, DTOs serve dual "
+"purposes: first, they work around the problem that entity beans are not "
+"serializable; second, they implicitly define an assembly phase where all "
+"data to be used by the view is fetched and marshalled into the DTOs before "
+"returning control to the presentation tier. Hibernate eliminates the first "
+"purpose. However, you will still need an assembly phase (think of your "
+"business methods as having a strict contract with the presentation tier "
+"about what data is available in the detached objects) unless you are "
+"prepared to hold the persistence context (the session) open across the view "
+"rendering process. This is not a limitation of Hibernate! It is a "
+"fundamental requirement of safe transactional data access."
+msgstr ""
+"Hibernate는 개발자들이 <emphasis>Data Transfer Objects</emphasis> (DTO)를 지"
+"루하게 작성하는 것으로부터 자유롭게 해준다. 전통적인 EJB 아키텍처에서, DTO는 "
+"이중 용도로 기능한다: 첫 번째로 그것들은 엔티티 빈즈가 직렬화 가능하지 않는 "
+"문제점에 대해 착수한다; 두 번째로 그것들은 뷰에 의해 사용되는 모든 데이터가 "
+"프리젠테이션 티어로 컨트롤을 반환하기 전에 DTO들 속으로 페치되고 마샬링되는 "
+"어셈블리 단계를 암묵적으로 정의한다. Hibernate는 첫 번째 용도를 제거시킨다. "
+"하지만 당신이 뷰 렌더링 프로세스를 가로질러 열려져 있는 영속 컨텍스트(세션)"
+"을 보관할 준비가 되어 있지 않는 한, 당신은 여전히 어셈블리 단계를 필요로 할 "
+"것이다(detached 객체들에서 이용가능한 데이터가 무엇인지에 대해 프리젠테이션 "
+"티어와 엄격하게 계약을 갖도록 당신의 비지니스 메소드들을 고려하라) 이것은 "
+"Hibernate의 한계점이 아니다! 그것은 안전한 트랜잭션 데이터 접근의 필수 조건이"
+"다."
-#: index.docbook:191
+#. Tag: term
+#: best_practices.xml:191
+#, no-c-format
msgid "Consider abstracting your business logic from Hibernate."
msgstr "Hibernate에서 당신의 비지니스 로직을 추상화 시키는 것을 고려하라."
-#: index.docbook:193
-msgid "Hide (Hibernate) data-access code behind an interface. Combine the <emphasis>DAO</emphasis> and <emphasis>Thread Local Session</emphasis> patterns. You can even have some classes persisted by handcoded JDBC, associated to Hibernate via a <literal>UserType</literal>. (This advice is intended for \"sufficiently large\" applications; it is not appropriate for an application with five tables!)"
-msgstr "(Hibernate) 데이터 액세스 코드를 인터페이스 이면에 은폐시켜라. <emphasis>DAO</emphasis>와 <emphasis>Thread Local Session</emphasis> 패턴들을 결합시켜라. 당신은 심지어 <literal>UserType</literal>을 통해 Hibernate에 연관된, 수작업으로 코딩된 JDBC로서 몇몇 클래스들을 영속화 시킬 수도 있다. (이 충고는 \"충분히 큰\" 어플리케이션들에 대한 것이다; 그것은 5개의 테이블들을 가진 어플리케이션에 대해서는 적절하지 않다!)"
+#. Tag: para
+#: best_practices.xml:193
+#, no-c-format
+msgid ""
+"Hide (Hibernate) data-access code behind an interface. Combine the "
+"<emphasis>DAO</emphasis> and <emphasis>Thread Local Session</emphasis> "
+"patterns. You can even have some classes persisted by handcoded JDBC, "
+"associated to Hibernate via a <literal>UserType</literal>. (This advice is "
+"intended for \"sufficiently large\" applications; it is not appropriate for "
+"an application with five tables!)"
+msgstr ""
+"(Hibernate) 데이터 액세스 코드를 인터페이스 이면에 은폐시켜라. "
+"<emphasis>DAO</emphasis>와 <emphasis>Thread Local Session</emphasis> 패턴들"
+"을 결합시켜라. 당신은 심지어 <literal>UserType</literal>을 통해 Hibernate에 "
+"연관된, 수작업으로 코딩된 JDBC로서 몇몇 클래스들을 영속화 시킬 수도 있다. "
+"(이 충고는 \"충분히 큰\" 어플리케이션들에 대한 것이다; 그것은 5개의 테이블들"
+"을 가진 어플리케이션에 대해서는 적절하지 않다!)"
-#: index.docbook:203
+#. Tag: term
+#: best_practices.xml:203
+#, no-c-format
msgid "Don't use exotic association mappings."
msgstr "신종의 연관 매핑을 사용하지 말라."
-#: index.docbook:205
-msgid "Good usecases for a real many-to-many associations are rare. Most of the time you need additional information stored in the \"link table\". In this case, it is much better to use two one-to-many associations to an intermediate link class. In fact, we think that most associations are one-to-many and many-to-one, you should be careful when using any other association style and ask yourself if it is really neccessary."
-msgstr "실제의 many-to-many 연관들에 대한 좋은 쓰임새들은 드물다. 대부분의 시간 동안 당신은 \"연결 테이블\" 내에 저장된 추가적인 정보를 필요로 한다. 이 경우에, 매개하는 연결 클래스에 대해 두 개의 one-to-many 연관들을 사용하는 것이 훨씬 더 좋다. 사실 우리는 대부분의 연관들이 one-to-many와 many-to-one이라고 생각하며, 당신은 다른 연관 스타일을 사용할 때 주의해야 하고 그것이 진정 필수적인지를 당신 스스로 질문하라."
+#. Tag: para
+#: best_practices.xml:205
+#, no-c-format
+msgid ""
+"Good usecases for a real many-to-many associations are rare. Most of the "
+"time you need additional information stored in the \"link table\". In this "
+"case, it is much better to use two one-to-many associations to an "
+"intermediate link class. In fact, we think that most associations are one-to-"
+"many and many-to-one, you should be careful when using any other association "
+"style and ask yourself if it is really neccessary."
+msgstr ""
+"실제의 many-to-many 연관들에 대한 좋은 쓰임새들은 드물다. 대부분의 시간 동안 "
+"당신은 \"연결 테이블\" 내에 저장된 추가적인 정보를 필요로 한다. 이 경우에, 매"
+"개하는 연결 클래스에 대해 두 개의 one-to-many 연관들을 사용하는 것이 훨씬 더 "
+"좋다. 사실 우리는 대부분의 연관들이 one-to-many와 many-to-one이라고 생각하"
+"며, 당신은 다른 연관 스타일을 사용할 때 주의해야 하고 그것이 진정 필수적인지"
+"를 당신 스스로 질문하라."
-#: index.docbook:215
+#. Tag: term
+#: best_practices.xml:215
+#, no-c-format
msgid "Prefer bidirectional associations."
msgstr "양방향 연관들을 선호하라."
-#: index.docbook:217
-msgid "Unidirectional associations are more difficult to query. In a large application, almost all associations must be navigable in both directions in queries."
-msgstr "단방향 연관들은 질의하기가 더 어렵다. 많은 어플리케이션에서, 거의 모든 연관들은 질의들 내에서 양 방향으로 네비게이트 가능해야 한다."
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: para
+#: best_practices.xml:217
+#, no-c-format
+msgid ""
+"Unidirectional associations are more difficult to query. In a large "
+"application, almost all associations must be navigable in both directions in "
+"queries."
+msgstr ""
+"단방향 연관들은 질의하기가 더 어렵다. 많은 어플리케이션에서, 거의 모든 연관들"
+"은 질의들 내에서 양 방향으로 네비게이트 가능해야 한다."
Modified: core/trunk/documentation/manual/translations/ko-KR/content/collection_mapping.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/collection_mapping.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/collection_mapping.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,1287 +1,1892 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: collection_mapping.xml:5
+#, no-c-format
msgid "Collection Mapping"
msgstr "콜렉션 매핑"
-#: index.docbook:8
+#. Tag: title
+#: collection_mapping.xml:8
+#, no-c-format
msgid "Persistent collections"
msgstr "영속 콜렉션들"
-#: index.docbook:10
-msgid "Hibernate requires that persistent collection-valued fields be declared as an interface type, for example:"
-msgstr "예를 들어 Hibernate는 영속 콜렉션-값을 가진 필드들이 인터페이스 타입으로서 선언될 것을 필요로 한다:"
+#. Tag: para
+#: collection_mapping.xml:10
+#, no-c-format
+msgid ""
+"Hibernate requires that persistent collection-valued fields be declared as "
+"an interface type, for example:"
+msgstr ""
+"예를 들어 Hibernate는 영속 콜렉션-값을 가진 필드들이 인터페이스 타입으로서 선"
+"언될 것을 필요로 한다:"
-#: index.docbook:15
+#. Tag: programlisting
+#: collection_mapping.xml:15
+#, no-c-format
msgid ""
- "<![CDATA[public class Product {\n"
- " private String serialNumber;\n"
- " private Set parts = new HashSet();\n"
- " \n"
- " public Set getParts() { return parts; }\n"
- " void setParts(Set parts) { this.parts = parts; }\n"
- " public String getSerialNumber() { return serialNumber; }\n"
- " void setSerialNumber(String sn) { serialNumber = sn; }\n"
- "}]]>"
+"<![CDATA[public class Product {\n"
+" private String serialNumber;\n"
+" private Set parts = new HashSet();\n"
+" \n"
+" public Set getParts() { return parts; }\n"
+" void setParts(Set parts) { this.parts = parts; }\n"
+" public String getSerialNumber() { return serialNumber; }\n"
+" void setSerialNumber(String sn) { serialNumber = sn; }\n"
+"}]]>"
msgstr ""
- "<![CDATA[public class Product {\n"
- " private String serialNumber;\n"
- " private Set parts = new HashSet();\n"
- " \n"
- " public Set getParts() { return parts; }\n"
- " void setParts(Set parts) { this.parts = parts; }\n"
- " public String getSerialNumber() { return serialNumber; }\n"
- " void setSerialNumber(String sn) { serialNumber = sn; }\n"
- "}]]>"
-#: index.docbook:17
-msgid "The actual interface might be <literal>java.util.Set</literal>, <literal>java.util.Collection</literal>, <literal>java.util.List</literal>, <literal>java.util.Map</literal>, <literal>java.util.SortedSet</literal>, <literal>java.util.SortedMap</literal> or ... anything you like! (Where \"anything you like\" means you will have to write an implementation of <literal>org.hibernate.usertype.UserCollectionType</literal>.)"
-msgstr "실제 인터페이스는 <literal>java.util.Set</literal>, <literal>java.util.Collection</literal>, <literal>java.util.List</literal>, <literal>java.util.Map</literal>, <literal>java.util.SortedSet</literal>, <literal>java.util.SortedMap</literal> 또는 당신이 좋아하는 어떤 것일 수 있다!(여기서 \"당신이 좋아하는 어떤 것\"이란 당신이 <literal>org.hibernate.usertype.UserCollectionType</literal>에 대한 구현을 작성해야 함을 의미한다.)"
+#. Tag: para
+#: collection_mapping.xml:17
+#, no-c-format
+msgid ""
+"The actual interface might be <literal>java.util.Set</literal>, "
+"<literal>java.util.Collection</literal>, <literal>java.util.List</literal>, "
+"<literal>java.util.Map</literal>, <literal>java.util.SortedSet</literal>, "
+"<literal>java.util.SortedMap</literal> or ... anything you like! (Where "
+"\"anything you like\" means you will have to write an implementation of "
+"<literal>org.hibernate.usertype.UserCollectionType</literal>.)"
+msgstr ""
+"실제 인터페이스는 <literal>java.util.Set</literal>, <literal>java.util."
+"Collection</literal>, <literal>java.util.List</literal>, <literal>java.util."
+"Map</literal>, <literal>java.util.SortedSet</literal>, <literal>java.util."
+"SortedMap</literal> 또는 당신이 좋아하는 어떤 것일 수 있다!(여기서 \"당신이 "
+"좋아하는 어떤 것\"이란 당신이 <literal>org.hibernate.usertype."
+"UserCollectionType</literal>에 대한 구현을 작성해야 함을 의미한다.)"
-#: index.docbook:26
-msgid "Notice how we initialized the instance variable with an instance of <literal>HashSet</literal>. This is the best way to initialize collection valued properties of newly instantiated (non-persistent) instances. When you make the instance persistent - by calling <literal>persist()</literal>, for example - Hibernate will actually replace the <literal>HashSet</literal> with an instance of Hibernate's own implementation of <literal>Set</literal>. Watch out for errors like this:"
-msgstr "우리가 <literal>HashSet</literal>의 인스턴스를 가진 인스턴스 변수를 초기화 시켰던 방법을 주목하라. 이것은 새로이 초기화 된(비-영속) 인스턴스들을 가진 콜렉션 값 프로퍼티들을 초기화 시키는 최선의 방법이다. 당신이 -예를 들어 <literal>persist()</literal>를 호출하여- 인스턴스를 영속화 시킬 때 Hibernate는 실제로 <literal>HashSet</literal>을 <literal>Set</literal>에 대한 Hibernate 자신의 구현의 인스턴스로 대체시킬 것이다. 다음과 같은 오류들을 관찰하라:"
+#. Tag: para
+#: collection_mapping.xml:26
+#, no-c-format
+msgid ""
+"Notice how we initialized the instance variable with an instance of "
+"<literal>HashSet</literal>. This is the best way to initialize collection "
+"valued properties of newly instantiated (non-persistent) instances. When you "
+"make the instance persistent - by calling <literal>persist()</literal>, for "
+"example - Hibernate will actually replace the <literal>HashSet</literal> "
+"with an instance of Hibernate's own implementation of <literal>Set</"
+"literal>. Watch out for errors like this:"
+msgstr ""
+"우리가 <literal>HashSet</literal>의 인스턴스를 가진 인스턴스 변수를 초기화 시"
+"켰던 방법을 주목하라. 이것은 새로이 초기화 된(비-영속) 인스턴스들을 가진 콜렉"
+"션 값 프로퍼티들을 초기화 시키는 최선의 방법이다. 당신이 -예를 들어 "
+"<literal>persist()</literal>를 호출하여- 인스턴스를 영속화 시킬 때 Hibernate"
+"는 실제로 <literal>HashSet</literal>을 <literal>Set</literal>에 대한 "
+"Hibernate 자신의 구현의 인스턴스로 대체시킬 것이다. 다음과 같은 오류들을 관찰"
+"하라:"
-#: index.docbook:36
+#. Tag: programlisting
+#: collection_mapping.xml:36
+#, no-c-format
msgid ""
- "<![CDATA[Cat cat = new DomesticCat();\n"
- "Cat kitten = new DomesticCat();\n"
- "....\n"
- "Set kittens = new HashSet();\n"
- "kittens.add(kitten);\n"
- "cat.setKittens(kittens);\n"
- "session.persist(cat);\n"
- "kittens = cat.getKittens(); // Okay, kittens collection is a Set\n"
- "(HashSet) cat.getKittens(); // Error!]]>"
+"<![CDATA[Cat cat = new DomesticCat();\n"
+"Cat kitten = new DomesticCat();\n"
+"....\n"
+"Set kittens = new HashSet();\n"
+"kittens.add(kitten);\n"
+"cat.setKittens(kittens);\n"
+"session.persist(cat);\n"
+"kittens = cat.getKittens(); // Okay, kittens collection is a Set\n"
+"(HashSet) cat.getKittens(); // Error!]]>"
msgstr ""
- "<![CDATA[Cat cat = new DomesticCat();\n"
- "Cat kitten = new DomesticCat();\n"
- "....\n"
- "Set kittens = new HashSet();\n"
- "kittens.add(kitten);\n"
- "cat.setKittens(kittens);\n"
- "session.persist(cat);\n"
- "kittens = cat.getKittens(); // Okay, kittens collection is a Set\n"
- "(HashSet) cat.getKittens(); // Error!]]>"
-#: index.docbook:38
-msgid "The persistent collections injected by Hibernate behave like <literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</literal>, <literal>TreeSet</literal> or <literal>ArrayList</literal>, depending upon the interface type."
-msgstr "Hibernate에 의해 도입된 영속 콜렉션들은 인터페이스 타입에 따라 <literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</literal>, <literal>TreeSet</literal> 또는 <literal>ArrayList</literal>와 같이 행위한다."
+#. Tag: para
+#: collection_mapping.xml:38
+#, no-c-format
+msgid ""
+"The persistent collections injected by Hibernate behave like "
+"<literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</"
+"literal>, <literal>TreeSet</literal> or <literal>ArrayList</literal>, "
+"depending upon the interface type."
+msgstr ""
+"Hibernate에 의해 도입된 영속 콜렉션들은 인터페이스 타입에 따라 "
+"<literal>HashMap</literal>, <literal>HashSet</literal>, <literal>TreeMap</"
+"literal>, <literal>TreeSet</literal> 또는 <literal>ArrayList</literal>와 같"
+"이 행위한다."
-#: index.docbook:45
-msgid "Collections instances have the usual behavior of value types. They are automatically persisted when referenced by a persistent object and automatically deleted when unreferenced. If a collection is passed from one persistent object to another, its elements might be moved from one table to another. Two entities may not share a reference to the same collection instance. Due to the underlying relational model, collection-valued properties do not support null value semantics; Hibernate does not distinguish between a null collection reference and an empty collection."
-msgstr "콜렉션 인스턴스들은 value 타입들을 가진 통상의 특징을 갖는다. 그것들은 영속 객체에 의해 참조될 때 자동적으로 영속화 되고 참조 해제될 때 자동적으로 삭제된다. 만일 하나의 콜렉션이 하나의 영속 객체로부터 또 다른 영속 객체로 전달될 때, 그것의 요소들은 하나의 테이블로부터 다른 테이블로 이동될 수 있다. 두 개의 엔티티들은 동일한 콜렉션 인스턴스에 대한 참조를 공유하지 않는다. 기본 관계형 모형 때문에 콜렉션 값 프로퍼티들은 null 값 의미들을 지원하지 않는다; Hibernate는 null 콜렉션 참조와 공백의 콜렉션 사이를 구별 짓지 않는다."
+#. Tag: para
+#: collection_mapping.xml:45
+#, no-c-format
+msgid ""
+"Collections instances have the usual behavior of value types. They are "
+"automatically persisted when referenced by a persistent object and "
+"automatically deleted when unreferenced. If a collection is passed from one "
+"persistent object to another, its elements might be moved from one table to "
+"another. Two entities may not share a reference to the same collection "
+"instance. Due to the underlying relational model, collection-valued "
+"properties do not support null value semantics; Hibernate does not "
+"distinguish between a null collection reference and an empty collection."
+msgstr ""
+"콜렉션 인스턴스들은 value 타입들을 가진 통상의 특징을 갖는다. 그것들은 영속 "
+"객체에 의해 참조될 때 자동적으로 영속화 되고 참조 해제될 때 자동적으로 삭제된"
+"다. 만일 하나의 콜렉션이 하나의 영속 객체로부터 또 다른 영속 객체로 전달될 "
+"때, 그것의 요소들은 하나의 테이블로부터 다른 테이블로 이동될 수 있다. 두 개"
+"의 엔티티들은 동일한 콜렉션 인스턴스에 대한 참조를 공유하지 않는다. 기본 관계"
+"형 모형 때문에 콜렉션 값 프로퍼티들은 null 값 의미들을 지원하지 않는다; "
+"Hibernate는 null 콜렉션 참조와 공백의 콜렉션 사이를 구별 짓지 않는다."
-#: index.docbook:56
-msgid "You shouldn't have to worry much about any of this. Use persistent collections the same way you use ordinary Java collections. Just make sure you understand the semantics of bidirectional associations (discussed later)."
-msgstr "당신은 이것의 어떤 것에 대해 너무 많이 걱정하지 않아도 될 것이다. 당신이 통상의 자바 콜렉션들을 사용하는 것과 동일한 방법으로 영속 콜렉션들을 사용하라. 단지 당신이 양방향 연관관계들에 대한 의미를 확실히 이해하도록 하라(나중에 논의됨)."
+#. Tag: para
+#: collection_mapping.xml:56
+#, no-c-format
+msgid ""
+"You shouldn't have to worry much about any of this. Use persistent "
+"collections the same way you use ordinary Java collections. Just make sure "
+"you understand the semantics of bidirectional associations (discussed later)."
+msgstr ""
+"당신은 이것의 어떤 것에 대해 너무 많이 걱정하지 않아도 될 것이다. 당신이 통상"
+"의 자바 콜렉션들을 사용하는 것과 동일한 방법으로 영속 콜렉션들을 사용하라. 단"
+"지 당신이 양방향 연관관계들에 대한 의미를 확실히 이해하도록 하라(나중에 논의"
+"됨)."
-#: index.docbook:65
+#. Tag: title
+#: collection_mapping.xml:65
+#, no-c-format
msgid "Collection mappings"
msgstr "콜렉션 매핑들"
-#: index.docbook:67
-msgid "The Hibernate mapping element used for mapping a collection depends upon the type of the interface. For example, a <literal><set></literal> element is used for mapping properties of type <literal>Set</literal>."
-msgstr "콜렉션을 매핑하는데 사용되는 Hiberante 매핑 요소는 인터페이스의 타입에 의존한다. 예를 들어<literal><set></literal> 요소는 <literal>Set</literal> 타입의 매핑 프로퍼티들에 사용된다"
+#. Tag: para
+#: collection_mapping.xml:67
+#, no-c-format
+msgid ""
+"The Hibernate mapping element used for mapping a collection depends upon the "
+"type of the interface. For example, a <literal><set></literal> element "
+"is used for mapping properties of type <literal>Set</literal>."
+msgstr ""
+"콜렉션을 매핑하는데 사용되는 Hiberante 매핑 요소는 인터페이스의 타입에 의존한"
+"다. 예를 들어<literal><set></literal> 요소는 <literal>Set</literal> 타"
+"입의 매핑 프로퍼티들에 사용된다"
-#: index.docbook:73
+#. Tag: programlisting
+#: collection_mapping.xml:73
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Product\">\n"
- " <id name=\"serialNumber\" column=\"productSerialNumber\"/>\n"
- " <set name=\"parts\">\n"
- " <key column=\"productSerialNumber\" not-null=\"true\"/>\n"
- " <one-to-many class=\"Part\"/>\n"
- " </set>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Product\">\n"
+" <id name=\"serialNumber\" column=\"productSerialNumber\"/>\n"
+" <set name=\"parts\">\n"
+" <key column=\"productSerialNumber\" not-null=\"true\"/>\n"
+" <one-to-many class=\"Part\"/>\n"
+" </set>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Product\">\n"
- " <id name=\"serialNumber\" column=\"productSerialNumber\"/>\n"
- " <set name=\"parts\">\n"
- " <key column=\"productSerialNumber\" not-null=\"true\"/>\n"
- " <one-to-many class=\"Part\"/>\n"
- " </set>\n"
- "</class>]]>"
-#: index.docbook:75
-msgid "Apart from <literal><set></literal>, there is also <literal><list></literal>, <literal><map></literal>, <literal><bag></literal>, <literal><array></literal> and <literal><primitive-array></literal> mapping elements. The <literal><map></literal> element is representative:"
-msgstr "<literal><set></literal>과는 별도로, 또한 <literal><list></literal>, <literal><map></literal>, <literal><bag></literal>, <literal><array></literal>, 그리고 <literal><map></literal> 매핑 요소들이 존재한다. <literal><map></literal> 요소가 대표적이다:"
+#. Tag: para
+#: collection_mapping.xml:75
+#, no-c-format
+msgid ""
+"Apart from <literal><set></literal>, there is also <literal><"
+"list></literal>, <literal><map></literal>, <literal><bag></"
+"literal>, <literal><array></literal> and <literal><primitive-"
+"array></literal> mapping elements. The <literal><map></literal> "
+"element is representative:"
+msgstr ""
+"<literal><set></literal>과는 별도로, 또한 <literal><list></"
+"literal>, <literal><map></literal>, <literal><bag></literal>, "
+"<literal><array></literal>, 그리고 <literal><map></literal> 매핑 "
+"요소들이 존재한다. <literal><map></literal> 요소가 대표적이다:"
-#: index.docbook:100
+#. Tag: programlisting
+#: collection_mapping.xml:100
+#, no-c-format
msgid ""
- "<![CDATA[<map\n"
- " name=\"propertyName\"\n"
- " table=\"table_name\"\n"
- " schema=\"schema_name\"\n"
- " lazy=\"true|extra|false\"\n"
- " inverse=\"true|false\"\n"
- " cascade=\"all|none|save-update|delete|all-delete-orphan|delete-orphan\"\n"
- " sort=\"unsorted|natural|comparatorClass\"\n"
- " order-by=\"column_name asc|desc\"\n"
- " where=\"arbitrary sql where condition\"\n"
- " fetch=\"join|select|subselect\"\n"
- " batch-size=\"N\"\n"
- " access=\"field|property|ClassName\"\n"
- " optimistic-lock=\"true|false\"\n"
- " mutable=\"true|false\"\n"
- " node=\"element-name|.\"\n"
- " embed-xml=\"true|false\"\n"
- ">\n"
- "\n"
- " <key .... />\n"
- " <map-key .... />\n"
- " <element .... />\n"
- "</map>]]>"
+"<![CDATA[<map\n"
+" name=\"propertyName\"\n"
+" table=\"table_name\"\n"
+" schema=\"schema_name\"\n"
+" lazy=\"true|extra|false\"\n"
+" inverse=\"true|false\"\n"
+" cascade=\"all|none|save-update|delete|all-delete-orphan|delete-orphan\"\n"
+" sort=\"unsorted|natural|comparatorClass\"\n"
+" order-by=\"column_name asc|desc\"\n"
+" where=\"arbitrary sql where condition\"\n"
+" fetch=\"join|select|subselect\"\n"
+" batch-size=\"N\"\n"
+" access=\"field|property|ClassName\"\n"
+" optimistic-lock=\"true|false\"\n"
+" mutable=\"true|false\"\n"
+" node=\"element-name|.\"\n"
+" embed-xml=\"true|false\"\n"
+">\n"
+"\n"
+" <key .... />\n"
+" <map-key .... />\n"
+" <element .... />\n"
+"</map>]]>"
msgstr ""
- "<![CDATA[<map\n"
- " name=\"propertyName\"\n"
- " table=\"table_name\"\n"
- " schema=\"schema_name\"\n"
- " lazy=\"true|extra|false\"\n"
- " inverse=\"true|false\"\n"
- " cascade=\"all|none|save-update|delete|all-delete-orphan|delete-orphan\"\n"
- " sort=\"unsorted|natural|comparatorClass\"\n"
- " order-by=\"column_name asc|desc\"\n"
- " where=\"arbitrary sql where condition\"\n"
- " fetch=\"join|select|subselect\"\n"
- " batch-size=\"N\"\n"
- " access=\"field|property|ClassName\"\n"
- " optimistic-lock=\"true|false\"\n"
- " mutable=\"true|false\"\n"
- " node=\"element-name|.\"\n"
- " embed-xml=\"true|false\"\n"
- ">\n"
- "\n"
- " <key .... />\n"
- " <map-key .... />\n"
- " <element .... />\n"
- "</map>]]>"
-#: index.docbook:103
+#. Tag: para
+#: collection_mapping.xml:103
+#, no-c-format
msgid "<literal>name</literal> the collection property name"
msgstr "<literal>name</literal> 콜렉션 프로퍼티 이름"
-#: index.docbook:108
-msgid "<literal>table</literal> (optional - defaults to property name) the name of the collection table (not used for one-to-many associations)"
-msgstr "<literal>table</literal> (옵션 - 디폴트는 프로퍼티 이름) 콜렉션 테이블의 이름(one-to-many 연관관계들에 대해서는 사용되지 않음)"
+#. Tag: para
+#: collection_mapping.xml:108
+#, no-c-format
+msgid ""
+"<literal>table</literal> (optional - defaults to property name) the name of "
+"the collection table (not used for one-to-many associations)"
+msgstr ""
+"<literal>table</literal> (옵션 - 디폴트는 프로퍼티 이름) 콜렉션 테이블의 이름"
+"(one-to-many 연관관계들에 대해서는 사용되지 않음)"
-#: index.docbook:114
-msgid "<literal>schema</literal> (optional) the name of a table schema to override the schema declared on the root element"
-msgstr "<literal>schema</literal> (옵션) 루트 요소 상에 선언된 스키마를 오버라이드 시키는 테이블 스키마의 이름"
+#. Tag: para
+#: collection_mapping.xml:114
+#, no-c-format
+msgid ""
+"<literal>schema</literal> (optional) the name of a table schema to override "
+"the schema declared on the root element"
+msgstr ""
+"<literal>schema</literal> (옵션) 루트 요소 상에 선언된 스키마를 오버라이드 시"
+"키는 테이블 스키마의 이름"
-#: index.docbook:120
-msgid "<literal>lazy</literal> (optional - defaults to <literal>true</literal>) may be used to disable lazy fetching and specify that the association is always eagerly fetched, or to enable \"extra-lazy\" fetching where most operations do not initialize the collection (suitable for very large collections)"
-msgstr "<literal>lazy</literal> (옵션 - 디폴트는 <literal>true</literal>)는 lazy 페칭을 사용 불가능하도록 하고 그 연관이 항상 eagerly 페치됨을 지정하는데 , 또는 대부분의 연산들이 콜렉션을 초기화시키지 않는 곳에서 \"extra-lazy\" 페칭을 이용 가능하도록 하는데(매우 큰 콜렉션들에 적당함) 사용될 수 있다"
+#. Tag: para
+#: collection_mapping.xml:120
+#, no-c-format
+msgid ""
+"<literal>lazy</literal> (optional - defaults to <literal>true</literal>) may "
+"be used to disable lazy fetching and specify that the association is always "
+"eagerly fetched, or to enable \"extra-lazy\" fetching where most operations "
+"do not initialize the collection (suitable for very large collections)"
+msgstr ""
+"<literal>lazy</literal> (옵션 - 디폴트는 <literal>true</literal>)는 lazy 페칭"
+"을 사용 불가능하도록 하고 그 연관이 항상 eagerly 페치됨을 지정하는데 , 또는 "
+"대부분의 연산들이 콜렉션을 초기화시키지 않는 곳에서 \"extra-lazy\" 페칭을 이"
+"용 가능하도록 하는데(매우 큰 콜렉션들에 적당함) 사용될 수 있다"
-#: index.docbook:129
-msgid "<literal>inverse</literal> (optional - defaults to <literal>false</literal>) mark this collection as the \"inverse\" end of a bidirectional association"
-msgstr "<literal>inverse</literal> (옵션 - 디폴트는 <literal>false</literal>) 이 콜렉션을 양방향 연관관계의 \"inverse\" 끝(end)으로 표시한다"
+#. Tag: para
+#: collection_mapping.xml:129
+#, no-c-format
+msgid ""
+"<literal>inverse</literal> (optional - defaults to <literal>false</literal>) "
+"mark this collection as the \"inverse\" end of a bidirectional association"
+msgstr ""
+"<literal>inverse</literal> (옵션 - 디폴트는 <literal>false</literal>) 이 콜렉"
+"션을 양방향 연관관계의 \"inverse\" 끝(end)으로 표시한다"
-#: index.docbook:135
-msgid "<literal>cascade</literal> (optional - defaults to <literal>none</literal>) enable operations to cascade to child entities"
-msgstr "<literal>cascade</literal> (옵션 - 디폴트는 <literal>none</literal>) 오퍼레이션들이 자식 엔티티들에 대해 케스케이드하는 것을 이용 가능하게 한다"
+#. Tag: para
+#: collection_mapping.xml:135
+#, no-c-format
+msgid ""
+"<literal>cascade</literal> (optional - defaults to <literal>none</literal>) "
+"enable operations to cascade to child entities"
+msgstr ""
+"<literal>cascade</literal> (옵션 - 디폴트는 <literal>none</literal>) 오퍼레이"
+"션들이 자식 엔티티들에 대해 케스케이드하는 것을 이용 가능하게 한다"
-#: index.docbook:141
-msgid "<literal>sort</literal> (optional) specify a sorted collection with <literal>natural</literal> sort order, or a given comparator class"
-msgstr "<literal>sort</literal> (옵션) <literal>natural</literal> 정렬 순서로 정렬된(sorted) 콜렉션 또는 주어진 comparator 클래스를 지정한다"
+#. Tag: para
+#: collection_mapping.xml:141
+#, no-c-format
+msgid ""
+"<literal>sort</literal> (optional) specify a sorted collection with "
+"<literal>natural</literal> sort order, or a given comparator class"
+msgstr ""
+"<literal>sort</literal> (옵션) <literal>natural</literal> 정렬 순서로 정렬된"
+"(sorted) 콜렉션 또는 주어진 comparator 클래스를 지정한다"
-#: index.docbook:147
-msgid "<literal>order-by</literal> (optional, JDK1.4 only) specify a table column (or columns) that define the iteration order of the <literal>Map</literal>, <literal>Set</literal> or bag, together with an optional <literal>asc</literal> or <literal>desc</literal>"
-msgstr "<literal>order-by</literal> (옵션, JDK1.4에서만) <literal>asc</literal> 또는 <literal>desc</literal> 옵션과 함께 <literal>Map</literal>, <literal>Set</literal> 또는 bag의 반복 순서를 정의하는 테이블 컬럼(또는 컬럼들)을 지정한다"
+#. Tag: para
+#: collection_mapping.xml:147
+#, no-c-format
+msgid ""
+"<literal>order-by</literal> (optional, JDK1.4 only) specify a table column "
+"(or columns) that define the iteration order of the <literal>Map</literal>, "
+"<literal>Set</literal> or bag, together with an optional <literal>asc</"
+"literal> or <literal>desc</literal>"
+msgstr ""
+"<literal>order-by</literal> (옵션, JDK1.4에서만) <literal>asc</literal> 또는 "
+"<literal>desc</literal> 옵션과 함께 <literal>Map</literal>, <literal>Set</"
+"literal> 또는 bag의 반복 순서를 정의하는 테이블 컬럼(또는 컬럼들)을 지정한다"
-#: index.docbook:154
-msgid "<literal>where</literal> (optional) specify an arbitrary SQL <literal>WHERE</literal> condition to be used when retrieving or removing the collection (useful if the collection should contain only a subset of the available data)"
-msgstr "<literal>where</literal> (옵션) 콜렉션을 검색하거나 제거할 때 사용될 임의적인 SQL <literal>WHERE</literal> 조건을 지정한다 (콜렉션이 오직 이용 가능한 데이터의 부분집합 만을 포함할 경우에 유용하다)"
+#. Tag: para
+#: collection_mapping.xml:154
+#, no-c-format
+msgid ""
+"<literal>where</literal> (optional) specify an arbitrary SQL <literal>WHERE</"
+"literal> condition to be used when retrieving or removing the collection "
+"(useful if the collection should contain only a subset of the available data)"
+msgstr ""
+"<literal>where</literal> (옵션) 콜렉션을 검색하거나 제거할 때 사용될 임의적"
+"인 SQL <literal>WHERE</literal> 조건을 지정한다 (콜렉션이 오직 이용 가능한 데"
+"이터의 부분집합 만을 포함할 경우에 유용하다)"
-#: index.docbook:161
-msgid "<literal>fetch</literal> (optional, defaults to <literal>select</literal>) Choose between outer-join fetching, fetching by sequential select, and fetching by sequential subselect."
-msgstr "<literal>fetch</literal> (옵션, 디폴트는 <literal>select</literal>) outer-join 페칭, sequential select 페칭, 그리고 sequential subselect 페칭 사이에서 선택하라."
+#. Tag: para
+#: collection_mapping.xml:161
+#, no-c-format
+msgid ""
+"<literal>fetch</literal> (optional, defaults to <literal>select</literal>) "
+"Choose between outer-join fetching, fetching by sequential select, and "
+"fetching by sequential subselect."
+msgstr ""
+"<literal>fetch</literal> (옵션, 디폴트는 <literal>select</literal>) outer-"
+"join 페칭, sequential select 페칭, 그리고 sequential subselect 페칭 사이에서 "
+"선택하라."
-#: index.docbook:168
-msgid "<literal>batch-size</literal> (optional, defaults to <literal>1</literal>) specify a \"batch size\" for lazily fetching instances of this collection."
-msgstr "<literal>batch-size</literal> (옵션, 디폴트는 <literal>1</literal>) 이 콜렉션의 lazily fetching 인스턴스에 대해 \"배치 사이즈\"를 지정하라."
+#. Tag: para
+#: collection_mapping.xml:168
+#, no-c-format
+msgid ""
+"<literal>batch-size</literal> (optional, defaults to <literal>1</literal>) "
+"specify a \"batch size\" for lazily fetching instances of this collection."
+msgstr ""
+"<literal>batch-size</literal> (옵션, 디폴트는 <literal>1</literal>) 이 콜렉션"
+"의 lazily fetching 인스턴스에 대해 \"배치 사이즈\"를 지정하라."
-#: index.docbook:174
-msgid "<literal>access</literal> (optional - defaults to <literal>property</literal>): The strategy Hibernate should use for accessing the collection property value."
-msgstr "<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): Hibernate가 콜렉션 프로퍼티 값에 접근하는데 사용할 방도."
+#. Tag: para
+#: collection_mapping.xml:174
+#, no-c-format
+msgid ""
+"<literal>access</literal> (optional - defaults to <literal>property</"
+"literal>): The strategy Hibernate should use for accessing the collection "
+"property value."
+msgstr ""
+"<literal>access</literal> (옵션 - 디폴트는 <literal>property</literal>): "
+"Hibernate가 콜렉션 프로퍼티 값에 접근하는데 사용할 방도."
-#: index.docbook:180
-msgid "<literal>optimistic-lock</literal> (optional - defaults to <literal>true</literal>): Species that changes to the state of the collection results in increment of the owning entity's version. (For one to many associations, it is often reasonable to disable this setting.)"
-msgstr "<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</literal>): 콜렉션의 상태에 대한 변경들이 소유하는 엔티티의 버전의 증가로 귀결될 것인지를 지정한다. (one to many 연관들에 대해, 이 설정을 사용 불가능하게 하는 것이 종종 합당하다.)"
+#. Tag: para
+#: collection_mapping.xml:180
+#, no-c-format
+msgid ""
+"<literal>optimistic-lock</literal> (optional - defaults to <literal>true</"
+"literal>): Species that changes to the state of the collection results in "
+"increment of the owning entity's version. (For one to many associations, it "
+"is often reasonable to disable this setting.)"
+msgstr ""
+"<literal>optimistic-lock</literal> (옵션 - 디폴트는 <literal>true</"
+"literal>): 콜렉션의 상태에 대한 변경들이 소유하는 엔티티의 버전의 증가로 귀결"
+"될 것인지를 지정한다. (one to many 연관들에 대해, 이 설정을 사용 불가능하게 "
+"하는 것이 종종 합당하다.)"
-#: index.docbook:188
-msgid "<literal>mutable</literal> (optional - defaults to <literal>true</literal>): A value of <literal>false</literal> specifies that the elements of the collection never change (a minor performance optimization in some cases)."
-msgstr "<literal>mutable</literal> (옵션 - 디폴트는 <literal>true</literal>): <literal>false</literal> 값은 콜렉션의 요소들이 결코 변경되지 않음을 지정한다. (몇몇 경우들에서 마이너 퍼포먼스 최적화)."
+#. Tag: para
+#: collection_mapping.xml:188
+#, no-c-format
+msgid ""
+"<literal>mutable</literal> (optional - defaults to <literal>true</literal>): "
+"A value of <literal>false</literal> specifies that the elements of the "
+"collection never change (a minor performance optimization in some cases)."
+msgstr ""
+"<literal>mutable</literal> (옵션 - 디폴트는 <literal>true</literal>): "
+"<literal>false</literal> 값은 콜렉션의 요소들이 결코 변경되지 않음을 지정한"
+"다. (몇몇 경우들에서 마이너 퍼포먼스 최적화)."
-#: index.docbook:198
+#. Tag: title
+#: collection_mapping.xml:198
+#, no-c-format
msgid "Collection foreign keys"
msgstr "콜렉션 foreign 키들"
-#: index.docbook:200
-msgid "Collection instances are distinguished in the database by the foreign key of the entity that owns the collection. This foreign key is referred to as the <emphasis>collection key column</emphasis> (or columns) of the collection table. The collection key column is mapped by the <literal><key></literal> element."
-msgstr "콜렉션 인스턴스들은 그 콜렉션을 소유하는 엔티티의 foreign 키에 의해 데이터베이스 내에서 구별지워진다. 이 foreign 키는 그 콜렉션 테이블의 <emphasis>콜렉션 키 컬럼</emphasis> (또는 컬럼들)로서 참조된다. 그 콜렉션 키 컬럼은 <literal><key></literal> 요소에 의해 매핑된다."
+#. Tag: para
+#: collection_mapping.xml:200
+#, no-c-format
+msgid ""
+"Collection instances are distinguished in the database by the foreign key of "
+"the entity that owns the collection. This foreign key is referred to as the "
+"<emphasis>collection key column</emphasis> (or columns) of the collection "
+"table. The collection key column is mapped by the <literal><key></"
+"literal> element."
+msgstr ""
+"콜렉션 인스턴스들은 그 콜렉션을 소유하는 엔티티의 foreign 키에 의해 데이터베"
+"이스 내에서 구별지워진다. 이 foreign 키는 그 콜렉션 테이블의 <emphasis>콜렉"
+"션 키 컬럼</emphasis> (또는 컬럼들)로서 참조된다. 그 콜렉션 키 컬럼은 "
+"<literal><key></literal> 요소에 의해 매핑된다."
-#: index.docbook:208
-msgid "There may be a nullability constraint on the foreign key column. For most collections, this is implied. For unidirectional one to many associations, the foreign key column is nullable by default, so you might need to specify <literal>not-null=\"true\"</literal>."
-msgstr "foreign 키 컬럼에 대한 null 허용 가능 컨스트레인트가 존재할 수 있다. 대부분의 콜렉션들에 대해, 이것이 당연히 수반된다. 단방향 one to many 연관들의 경우, foreign 키는 디폴트로 null 허용 가능하여서, 당신은 <literal>not-null=\"true\"</literal>를 지정할 필요가 있을 수 있다."
+#. Tag: para
+#: collection_mapping.xml:208
+#, no-c-format
+msgid ""
+"There may be a nullability constraint on the foreign key column. For most "
+"collections, this is implied. For unidirectional one to many associations, "
+"the foreign key column is nullable by default, so you might need to specify "
+"<literal>not-null=\"true\"</literal>."
+msgstr ""
+"foreign 키 컬럼에 대한 null 허용 가능 컨스트레인트가 존재할 수 있다. 대부분"
+"의 콜렉션들에 대해, 이것이 당연히 수반된다. 단방향 one to many 연관들의 경"
+"우, foreign 키는 디폴트로 null 허용 가능하여서, 당신은 <literal>not-null="
+"\"true\"</literal>를 지정할 필요가 있을 수 있다."
-#: index.docbook:215
+#. Tag: programlisting
+#: collection_mapping.xml:215
+#, no-c-format
msgid "<![CDATA[<key column=\"productSerialNumber\" not-null=\"true\"/>]]>"
-msgstr "<![CDATA[<key column=\"productSerialNumber\" not-null=\"true\"/>]]>"
+msgstr ""
-#: index.docbook:217
-msgid "The foreign key constraint may use <literal>ON DELETE CASCADE</literal>."
-msgstr "foreign 키 컨스트레인트는 <literal>ON DELETE CASCADE</literal>를 사용할 수도 있다."
+#. Tag: para
+#: collection_mapping.xml:217
+#, no-c-format
+msgid ""
+"The foreign key constraint may use <literal>ON DELETE CASCADE</literal>."
+msgstr ""
+"foreign 키 컨스트레인트는 <literal>ON DELETE CASCADE</literal>를 사용할 수도 "
+"있다."
-#: index.docbook:221
+#. Tag: programlisting
+#: collection_mapping.xml:221
+#, no-c-format
msgid "<![CDATA[<key column=\"productSerialNumber\" on-delete=\"cascade\"/>]]>"
-msgstr "<![CDATA[<key column=\"productSerialNumber\" on-delete=\"cascade\"/>]]>"
+msgstr ""
-#: index.docbook:223
-msgid "See the previous chapter for a full definition of the <literal><key></literal> element."
+#. Tag: para
+#: collection_mapping.xml:223
+#, no-c-format
+msgid ""
+"See the previous chapter for a full definition of the <literal><key></"
+"literal> element."
msgstr "<literal><key></literal> 요소에 대한 전체 정의는 앞 장을 보라."
-#: index.docbook:231
+#. Tag: title
+#: collection_mapping.xml:231
+#, no-c-format
msgid "Collection elements"
msgstr "콜렉션 요소들"
-#: index.docbook:233
-msgid "Collections may contain almost any other Hibernate type, including all basic types, custom types, components, and of course, references to other entities. This is an important distinction: an object in a collection might be handled with \"value\" semantics (its life cycle fully depends on the collection owner) or it might be a reference to another entity, with its own life cycle. In the latter case, only the \"link\" between the two objects is considered to be state held by the collection."
-msgstr "콜렉션들은 모든 기본 타입들, 컴포넌트들, 그리고 물론 다른 엔티티들에 대한 참조들을 포함하여 거의 대부분의 어떤 다른 Hibernate 타입을 포함할 수도 있다. 이것은 중요한 구분이다: 콜렉션 내에 있는 객체는 \"값(value)\" 의미로 처리될 수도 있거나(그것의 생명주기는 콜렉션 소유자에 의존한다) 그것은 그것 자신의 생명주기를 가진 또 다른 엔티티에 대한 참조일 수 있다. 후자의 경우, 두 개의 객체들 사이의 \"링크\" 만이 그 콜렉션에 의해 소유된 상태로 간주된다."
+#. Tag: para
+#: collection_mapping.xml:233
+#, no-c-format
+msgid ""
+"Collections may contain almost any other Hibernate type, including all basic "
+"types, custom types, components, and of course, references to other "
+"entities. This is an important distinction: an object in a collection might "
+"be handled with \"value\" semantics (its life cycle fully depends on the "
+"collection owner) or it might be a reference to another entity, with its own "
+"life cycle. In the latter case, only the \"link\" between the two objects is "
+"considered to be state held by the collection."
+msgstr ""
+"콜렉션들은 모든 기본 타입들, 컴포넌트들, 그리고 물론 다른 엔티티들에 대한 참"
+"조들을 포함하여 거의 대부분의 어떤 다른 Hibernate 타입을 포함할 수도 있다. 이"
+"것은 중요한 구분이다: 콜렉션 내에 있는 객체는 \"값(value)\" 의미로 처리될 수"
+"도 있거나(그것의 생명주기는 콜렉션 소유자에 의존한다) 그것은 그것 자신의 생명"
+"주기를 가진 또 다른 엔티티에 대한 참조일 수 있다. 후자의 경우, 두 개의 객체"
+"들 사이의 \"링크\" 만이 그 콜렉션에 의해 소유된 상태로 간주된다."
-#: index.docbook:242
-msgid "The contained type is referred to as the <emphasis>collection element type</emphasis>. Collection elements are mapped by <literal><element></literal> or <literal><composite-element></literal>, or in the case of entity references, with <literal><one-to-many></literal> or <literal><many-to-many></literal>. The first two map elements with value semantics, the next two are used to map entity associations."
-msgstr "포함된 타입은 콜렉션 요소 타입으로서 불려진다. 콜렉션 요소들은 <literal><element></literal> 또는 <literal><composite-element></literal>에 의해 매핑되거나, 엔티티 참조들의 경우에 <literal><one-to-many></literal> 또는 <literal><many-to-many></literal>로서 매핑된다. 앞의 두 개는 value 의미를 가진 요소들을 매핑시키고, 뒤의 두개는 엔티티 연관들을 매핑하는데 사용된다."
+#. Tag: para
+#: collection_mapping.xml:242
+#, no-c-format
+msgid ""
+"The contained type is referred to as the <emphasis>collection element type</"
+"emphasis>. Collection elements are mapped by <literal><element></"
+"literal> or <literal><composite-element></literal>, or in the case of "
+"entity references, with <literal><one-to-many></literal> or "
+"<literal><many-to-many></literal>. The first two map elements with "
+"value semantics, the next two are used to map entity associations."
+msgstr ""
+"포함된 타입은 콜렉션 요소 타입으로서 불려진다. 콜렉션 요소들은 <literal><"
+"element></literal> 또는 <literal><composite-element></literal>에 의"
+"해 매핑되거나, 엔티티 참조들의 경우에 <literal><one-to-many></literal> "
+"또는 <literal><many-to-many></literal>로서 매핑된다. 앞의 두 개는 "
+"value 의미를 가진 요소들을 매핑시키고, 뒤의 두개는 엔티티 연관들을 매핑하는"
+"데 사용된다."
-#: index.docbook:254
+#. Tag: title
+#: collection_mapping.xml:254
+#, no-c-format
msgid "Indexed collections"
msgstr "인덱싱 된 콜렉션들"
-#: index.docbook:256
-msgid "All collection mappings, except those with set and bag semantics, need an <emphasis>index column</emphasis> in the collection table - a column that maps to an array index, or <literal>List</literal> index, or <literal>Map</literal> key. The index of a <literal>Map</literal> may be of any basic type, mapped with <literal><map-key></literal>, it may be an entity reference mapped with <literal><map-key-many-to-many></literal>, or it may be a composite type, mapped with <literal><composite-map-key></literal>. The index of an array or list is always of type <literal>integer</literal> and is mapped using the <literal><list-index></literal> element. The mapped column contains sequential integers (numbered from zero, by default)."
-msgstr "set 과 bag 의미들을 가진 것들을 제외하면, 모든 콜렉션 매핑들은 콜렉션 테이블 내에 <emphasis>인덱스 컬럼</emphasis>- 배열 인덱스, 또는 <literal>List</literal> 인덱스 또는 <literal>Map</literal> 키로 매핑되는 컬럼-을 필요로 한다. <literal>Map</literal>의 인덱스는 <literal><map-key></literal>로 매핑된, 어떤 기본 타입일 수 있고, 그것은 <literal><map-key-many-to-many></literal>로 매핑된 엔티티 참조일 수 있거나, 그것은 <literal><composite-map-key></literal>로 매핑된 composite 타입일 수 있다. 배열 또는 리스트의 인덱스는 항상 <literal>integer</literal> 타입이고 <literal><list-index></literal> 요소를 사용하여 매핑된다. 매핑된 컬럼은 순차적인 정수들을 포함한다(디폴트로 0에서 시작하는 번호가 붙여짐)."
+#. Tag: para
+#: collection_mapping.xml:256
+#, no-c-format
+msgid ""
+"All collection mappings, except those with set and bag semantics, need an "
+"<emphasis>index column</emphasis> in the collection table - a column that "
+"maps to an array index, or <literal>List</literal> index, or <literal>Map</"
+"literal> key. The index of a <literal>Map</literal> may be of any basic "
+"type, mapped with <literal><map-key></literal>, it may be an entity "
+"reference mapped with <literal><map-key-many-to-many></literal>, or it "
+"may be a composite type, mapped with <literal><composite-map-key></"
+"literal>. The index of an array or list is always of type <literal>integer</"
+"literal> and is mapped using the <literal><list-index></literal> "
+"element. The mapped column contains sequential integers (numbered from zero, "
+"by default)."
+msgstr ""
+"set 과 bag 의미들을 가진 것들을 제외하면, 모든 콜렉션 매핑들은 콜렉션 테이블 "
+"내에 <emphasis>인덱스 컬럼</emphasis>- 배열 인덱스, 또는 <literal>List</"
+"literal> 인덱스 또는 <literal>Map</literal> 키로 매핑되는 컬럼-을 필요로 한"
+"다. <literal>Map</literal>의 인덱스는 <literal><map-key></literal>로 매"
+"핑된, 어떤 기본 타입일 수 있고, 그것은 <literal><map-key-many-to-many>"
+"</literal>로 매핑된 엔티티 참조일 수 있거나, 그것은 <literal><composite-"
+"map-key></literal>로 매핑된 composite 타입일 수 있다. 배열 또는 리스트의 "
+"인덱스는 항상 <literal>integer</literal> 타입이고 <literal><list-index>"
+"</literal> 요소를 사용하여 매핑된다. 매핑된 컬럼은 순차적인 정수들을 포함한다"
+"(디폴트로 0에서 시작하는 번호가 붙여짐)."
-#: index.docbook:267
+#. Tag: sect2
+#: collection_mapping.xml:267
+#, no-c-format
msgid ""
- "<programlistingco> <areaspec> <area id=\"index1\" coords=\"2 45\"/> <area id=\"index2\" coords=\"3 45\"/> </areaspec> <programlisting><![CDATA[<list-index \n"
- " column=\"column_name\"\n"
- " base=\"0|1|...\"/>]]></programlisting> <calloutlist> <callout arearefs=\"index1\"> <para> <literal>column_name</literal> (required): The name of the column holding the collection index values. </para> </callout> <callout arearefs=\"index1\"> <para> <literal>base</literal> (optional, defaults to <literal>0</literal>): The value of the index column that corresponds to the first element of the list or array. </para> </callout> </calloutlist> </programlistingco> <programlistingco> <areaspec> <area id=\"mapkey1\" coords=\"2 45\"/> <area id=\"mapkey2\" coords=\"3 45\"/> <area id=\"mapkey3\" coords=\"4 45\"/> </areaspec> <programlisting><![CDATA[<map-key \n"
- " column=\"column_name\"\n"
- " formula=\"any SQL expression\"\n"
- " type=\"type_name\"\n"
- " node=\"@attribute-name\"\n"
- " length=\"N\"/>]]></programlisting> <calloutlist> <callout arearefs=\"mapkey1\"> <para> <literal>column</literal> (optional): The name of the column holding the collection index values. </para> </callout> <callout arearefs=\"mapkey2\"> <para> <literal>formula</literal> (optional): A SQL formula used to evaluate the key of the map. </para> </callout> <callout arearefs=\"mapkey3\"> <para> <literal>type</literal> (reguired): The type of the map keys. </para> </callout> </calloutlist> </programlistingco> <programlistingco> <areaspec> <area id=\"indexmanytomany1\" coords=\"2 45\"/> <area id=\"indexmanytomany2\" coords=\"3 45\"/> <area id=\"indexmanytomany3\" coords=\"3 45\"/> </areaspec> <programlisting><![CDATA[<map-key-many-to-many\n"
- " column=\"column_name\"\n"
- " formula=\"any SQL expression\"\n"
- " class=\"ClassName\"\n"
- "/>]]></programlisting> <calloutlist> <callout arearefs=\"indexmanytomany1\"> <para> <literal>column</literal> (optional): The name of the foreign key column for the collection index values. </para> </callout> <callout arearefs=\"indexmanytomany2\"> <para> <literal>formula</literal> (optional): A SQL formula used to evaluate the foreign key of the map key. </para> </callout> <callout arearefs=\"indexmanytomany3\"> <para> <literal>class</literal> (required): The entity class used as the map key. </para> </callout> </calloutlist> </programlistingco>"
+"<programlistingco> <areaspec> <area id=\"index1\" coords=\"2 45\"/> <area id="
+"\"index2\" coords=\"3 45\"/> </areaspec> <programlisting><![CDATA[<list-"
+"index \n"
+" column=\"column_name\"\n"
+" base=\"0|1|...\"/>]]></programlisting> <calloutlist> <callout "
+"arearefs=\"index1\"> <para> <literal>column_name</literal> (required): The "
+"name of the column holding the collection index values. </para> </callout> "
+"<callout arearefs=\"index1\"> <para> <literal>base</literal> (optional, "
+"defaults to <literal>0</literal>): The value of the index column that "
+"corresponds to the first element of the list or array. </para> </callout> </"
+"calloutlist> </programlistingco> <programlistingco> <areaspec> <area id="
+"\"mapkey1\" coords=\"2 45\"/> <area id=\"mapkey2\" coords=\"3 45\"/> <area "
+"id=\"mapkey3\" coords=\"4 45\"/> </areaspec> <programlisting><![CDATA[<map-"
+"key \n"
+" column=\"column_name\"\n"
+" formula=\"any SQL expression\"\n"
+" type=\"type_name\"\n"
+" node=\"@attribute-name\"\n"
+" length=\"N\"/>]]></programlisting> <calloutlist> <callout arearefs="
+"\"mapkey1\"> <para> <literal>column</literal> (optional): The name of the "
+"column holding the collection index values. </para> </callout> <callout "
+"arearefs=\"mapkey2\"> <para> <literal>formula</literal> (optional): A SQL "
+"formula used to evaluate the key of the map. </para> </callout> <callout "
+"arearefs=\"mapkey3\"> <para> <literal>type</literal> (reguired): The type of "
+"the map keys. </para> </callout> </calloutlist> </programlistingco> "
+"<programlistingco> <areaspec> <area id=\"indexmanytomany1\" coords=\"2 45\"/"
+"> <area id=\"indexmanytomany2\" coords=\"3 45\"/> <area id=\"indexmanytomany3"
+"\" coords=\"3 45\"/> </areaspec> <programlisting><![CDATA[<map-key-many-to-"
+"many\n"
+" column=\"column_name\"\n"
+" formula=\"any SQL expression\"\n"
+" class=\"ClassName\"\n"
+"/>]]></programlisting> <calloutlist> <callout arearefs=\"indexmanytomany1\"> "
+"<para> <literal>column</literal> (optional): The name of the foreign key "
+"column for the collection index values. </para> </callout> <callout arearefs="
+"\"indexmanytomany2\"> <para> <literal>formula</literal> (optional): A SQL "
+"formula used to evaluate the foreign key of the map key. </para> </callout> "
+"<callout arearefs=\"indexmanytomany3\"> <para> <literal>class</literal> "
+"(required): The entity class used as the map key. </para> </callout> </"
+"calloutlist> </programlistingco>"
msgstr ""
- "<programlistingco> <areaspec> <area id=\"index1\" coords=\"2 45\"/> <area id=\"index2\" coords=\"3 45\"/> </areaspec> <programlisting><![CDATA[<list-index \n"
- " column=\"column_name\"\n"
- " base=\"0|1|...\"/>]]></programlisting> <calloutlist> <callout arearefs=\"index1\"> <para> <literal>column_name</literal> (필수): 콜렉션 인덱스 값들을 보관하는 컬럼의 이름. </para> </callout> <callout arearefs=\"index1\"> <para> <literal>base</literal> (옵션, 디폴트는 <literal>0</literal>): 리스트 또는 배열의 첫 번째 요소에 대응하는 인덱스 컬럼의 값. </para> </callout> </calloutlist> </programlistingco> <programlistingco> <areaspec> <area id=\"mapkey1\" coords=\"2 45\"/> <area id=\"mapkey2\" coords=\"3 45\"/> <area id=\"mapkey3\" coords=\"4 45\"/> </areaspec> <programlisting><![CDATA[<map-key \n"
- " column=\"column_name\"\n"
- " formula=\"any SQL expression\"\n"
- " type=\"type_name\"\n"
- " node=\"@attribute-name\"\n"
- " length=\"N\"/>]]></programlisting> <calloutlist> <callout arearefs=\"mapkey1\"> <para> <literal>column</literal> (옵션): 콜렉션 인덱스 값들을 보관하는 컬럼의 이름. </para> </callout> <callout arearefs=\"mapkey2\"> <para> <literal>formula</literal> (옵션): map의 키를 평가하는데 사용되는 SQL formula. </para> </callout> <callout arearefs=\"mapkey3\"> <para> <literal>type</literal> (필수): The type of the map 키들의 타입 </para> </callout> </calloutlist> </programlistingco> <programlistingco> <areaspec> <area id=\"indexmanytomany1\" coords=\"2 45\"/> <area id=\"indexmanytomany2\" coords=\"3 45\"/> <area id=\"indexmanytomany3\" coords=\"3 45\"/> </areaspec> <programlisting><![CDATA[<map-key-many-to-many\n"
- " column=\"column_name\"\n"
- " formula=\"any SQL expression\"\n"
- " class=\"ClassName\"\n"
- "/>]]></programlisting> <calloutlist> <callout arearefs=\"indexmanytomany1\"> <para> <literal>column</literal> (옵션): 콜렉션 인덱스 값들에 대한 foreign 키 컬럼의 이름. </para> </callout> <callout arearefs=\"indexmanytomany2\"> <para> <literal>formula</literal> (옵션): map의 foreign 키를 평가하는데 사용되는 SQL formula. </para> </callout> <callout arearefs=\"indexmanytomany3\"> <para> <literal>class</literal> (필수): map 키로서 사용되는 엔티티 클래스. </para> </callout> </calloutlist> </programlistingco>"
-#: index.docbook:348
-msgid "If your table doesn't have an index column, and you still wish to use <literal>List</literal> as the property type, you should map the property as a Hibernate <emphasis><bag></emphasis>. A bag does not retain its order when it is retrieved from the database, but it may be optionally sorted or ordered."
-msgstr "만일 당신의 테이블이 인덱스 컬럼을 가지 않고, 당신이 여전히 프로퍼티 타입으로서 <literal>List</literal>를 사용하고자 원할 경우, 당신은 그 프로퍼티를 Hibernate <emphasis><bag></emphasis>으로서 매핑해야 한다. bag이 데이터베이스로부터 검색될 때 그것은 그것의 순서를 보유하지 않지만, 그것은 선택적으로 정렬(sorting)되거나 ordering될 수도 있다."
+#. Tag: para
+#: collection_mapping.xml:348
+#, no-c-format
+msgid ""
+"If your table doesn't have an index column, and you still wish to use "
+"<literal>List</literal> as the property type, you should map the property as "
+"a Hibernate <emphasis><bag></emphasis>. A bag does not retain its "
+"order when it is retrieved from the database, but it may be optionally "
+"sorted or ordered."
+msgstr ""
+"만일 당신의 테이블이 인덱스 컬럼을 가지 않고, 당신이 여전히 프로퍼티 타입으로"
+"서 <literal>List</literal>를 사용하고자 원할 경우, 당신은 그 프로퍼티를 "
+"Hibernate <emphasis><bag></emphasis>으로서 매핑해야 한다. bag이 데이터"
+"베이스로부터 검색될 때 그것은 그것의 순서를 보유하지 않지만, 그것은 선택적으"
+"로 정렬(sorting)되거나 ordering될 수도 있다."
-#: index.docbook:357
-msgid "There are quite a range of mappings that can be generated for collections, covering many common relational models. We suggest you experiment with the schema generation tool to get a feeling for how various mapping declarations translate to database tables."
-msgstr "많은 공통된 관계형 모형들을 다루는, 콜렉션들에 대해 생성될 수 있는 매핑들의 영역이 꽤 존재한다. 여러가지 매핑 선언들이 데이터베이스 테이블들로 변환되는 방법을 당신이 느끼려면 스키마 생성 도구로 실험할 것을 우리는 제안한다."
+#. Tag: para
+#: collection_mapping.xml:357
+#, no-c-format
+msgid ""
+"There are quite a range of mappings that can be generated for collections, "
+"covering many common relational models. We suggest you experiment with the "
+"schema generation tool to get a feeling for how various mapping declarations "
+"translate to database tables."
+msgstr ""
+"많은 공통된 관계형 모형들을 다루는, 콜렉션들에 대해 생성될 수 있는 매핑들의 "
+"영역이 꽤 존재한다. 여러가지 매핑 선언들이 데이터베이스 테이블들로 변환되는 "
+"방법을 당신이 느끼려면 스키마 생성 도구로 실험할 것을 우리는 제안한다."
-#: index.docbook:364
+#. Tag: title
+#: collection_mapping.xml:364
+#, no-c-format
msgid "Collections of values and many-to-many associations"
msgstr "값들을 가진 콜렉션들과 many-to-many 연관들"
-#: index.docbook:366
-msgid "Any collection of values or many-to-many association requires a dedicated <emphasis>collection table</emphasis> with a foreign key column or columns, <emphasis>collection element column</emphasis> or columns and possibly an index column or columns."
-msgstr "어떤 값들을 가진 콜렉션 또는 many-to-many 연관은 foreign 키 컬럼이나 컬럼들, <emphasis>콜렉션 요소 컬럼</emphasis>이나 컬럼들 그리고 가능하면 인덱스 컬럼들이나 컬럼들을 가진 전용 <emphasis>콜렉션 테이블</emphasis>을 필요로 한다."
+#. Tag: para
+#: collection_mapping.xml:366
+#, no-c-format
+msgid ""
+"Any collection of values or many-to-many association requires a dedicated "
+"<emphasis>collection table</emphasis> with a foreign key column or columns, "
+"<emphasis>collection element column</emphasis> or columns and possibly an "
+"index column or columns."
+msgstr ""
+"어떤 값들을 가진 콜렉션 또는 many-to-many 연관은 foreign 키 컬럼이나 컬럼들, "
+"<emphasis>콜렉션 요소 컬럼</emphasis>이나 컬럼들 그리고 가능하면 인덱스 컬럼"
+"들이나 컬럼들을 가진 전용 <emphasis>콜렉션 테이블</emphasis>을 필요로 한다."
-#: index.docbook:373
-msgid "For a collection of values, we use the <literal><element></literal> tag."
-msgstr "값들을 가진 콜렉션의 경우, 우리는 <literal><element></literal> 태그를 사용한다."
+#. Tag: para
+#: collection_mapping.xml:373
+#, no-c-format
+msgid ""
+"For a collection of values, we use the <literal><element></literal> "
+"tag."
+msgstr ""
+"값들을 가진 콜렉션의 경우, 우리는 <literal><element></literal> 태그를 "
+"사용한다."
-#: index.docbook:375
+#. Tag: sect2
+#: collection_mapping.xml:375
+#, no-c-format
msgid ""
- "<programlistingco> <areaspec> <area id=\"element1b\" coords=\"2 50\"/> <area id=\"element2b\" coords=\"3 50\"/> <area id=\"element3b\" coords=\"4 50\"/> </areaspec> <programlisting><![CDATA[<element\n"
- " column=\"column_name\"\n"
- " formula=\"any SQL expression\"\n"
- " type=\"typename\"\n"
- " length=\"L\"\n"
- " precision=\"P\"\n"
- " scale=\"S\"\n"
- " not-null=\"true|false\"\n"
- " unique=\"true|false\"\n"
- " node=\"element-name\"\n"
- "/>]]></programlisting> <calloutlist> <callout arearefs=\"element1b\"> <para> <literal>column</literal> (optional): The name of the column holding the collection element values. </para> </callout> <callout arearefs=\"element2b\"> <para> <literal>formula</literal> (optional): An SQL formula used to evaluate the element. </para> </callout> <callout arearefs=\"element3b\"> <para> <literal>type</literal> (required): The type of the collection element. </para> </callout> </calloutlist> </programlistingco> <para> A <emphasis>many-to-many association</emphasis> is specified using the <literal><many-to-many></literal> element. </para> <programlistingco> <areaspec> <area id=\"manytomany1\" coords=\"2 60\"/> <area id=\"manytomany2\" coords=\"3 60\"/> <area id=\"manytomany3\" coords=\"4 60\"/> <area id=\"manytomany4\" coords=\"5 60\"/> <area id=\"manytomany5\" coords=\"6 60\"/> <area id=\"manytomany6\" coords=\"7 60\"/> <area id=\"manytomany7\" coords=\"8 60\"/> <area id=\!
"manytomany8\" coords=\"9 60\"/> </areaspec> <programlisting><![CDATA[<many-to-many\n"
- " column=\"column_name\"\n"
- " formula=\"any SQL expression\"\n"
- " class=\"ClassName\"\n"
- " fetch=\"select|join\"\n"
- " unique=\"true|false\"\n"
- " not-found=\"ignore|exception\"\n"
- " entity-name=\"EntityName\"\n"
- " property-ref=\"propertyNameFromAssociatedClass\"\n"
- " node=\"element-name\"\n"
- " embed-xml=\"true|false\"\n"
- " />]]></programlisting> <calloutlist> <callout arearefs=\"manytomany1\"> <para> <literal>column</literal> (optional): The name of the element foreign key column. </para> </callout> <callout arearefs=\"manytomany2\"> <para> <literal>formula</literal> (optional): An SQL formula used to evaluate the element foreign key value. </para> </callout> <callout arearefs=\"manytomany3\"> <para> <literal>class</literal> (required): The name of the associated class. </para> </callout> <callout arearefs=\"manytomany4\"> <para> <literal>fetch</literal> (optional - defaults to <literal>join</literal>): enables outer-join or sequential select fetching for this association. This is a special case; for full eager fetching (in a single <literal>SELECT</literal>) of an entity and its many-to-many relationships to other entities, you would enable <literal>join</literal> fetching not only of the collection itself, but also with this attribute on the <literal><many-to-many></literal!
> nested element. </para> </callout> <callout arearefs=\"manytomany5\"> <para> <literal>unique</literal> (optional): Enable the DDL generation of a unique constraint for the foreign-key column. This makes the association multiplicity effectively one to many. </para> </callout> <callout arearefs=\"manytomany6\"> <para> <literal>not-found</literal> (optional - defaults to <literal>exception</literal>): Specifies how foreign keys that reference missing rows will be handled: <literal>ignore</literal> will treat a missing row as a null association. </para> </callout> <callout arearefs=\"manytomany7\"> <para> <literal>entity-name</literal> (optional): The entity name of the associated class, as an alternative to <literal>class</literal>. </para> </callout> <callout arearefs=\"manytomany8\"> <para> <literal>property-ref</literal>: (optional) The name of a property of the associated class that is joined to this foreign key. If not specified, the primary key of the associated class !
is used. </para> </callout> </calloutlist> </programlistingco>"
+"<programlistingco> <areaspec> <area id=\"element1b\" coords=\"2 50\"/> <area "
+"id=\"element2b\" coords=\"3 50\"/> <area id=\"element3b\" coords=\"4 50\"/> "
+"</areaspec> <programlisting><![CDATA[<element\n"
+" column=\"column_name\"\n"
+" formula=\"any SQL expression\"\n"
+" type=\"typename\"\n"
+" length=\"L\"\n"
+" precision=\"P\"\n"
+" scale=\"S\"\n"
+" not-null=\"true|false\"\n"
+" unique=\"true|false\"\n"
+" node=\"element-name\"\n"
+"/>]]></programlisting> <calloutlist> <callout arearefs=\"element1b\"> <para> "
+"<literal>column</literal> (optional): The name of the column holding the "
+"collection element values. </para> </callout> <callout arearefs=\"element2b"
+"\"> <para> <literal>formula</literal> (optional): An SQL formula used to "
+"evaluate the element. </para> </callout> <callout arearefs=\"element3b\"> "
+"<para> <literal>type</literal> (required): The type of the collection "
+"element. </para> </callout> </calloutlist> </programlistingco> <para> A "
+"<emphasis>many-to-many association</emphasis> is specified using the "
+"<literal><many-to-many></literal> element. </para> <programlistingco> "
+"<areaspec> <area id=\"manytomany1\" coords=\"2 60\"/> <area id=\"manytomany2"
+"\" coords=\"3 60\"/> <area id=\"manytomany3\" coords=\"4 60\"/> <area id="
+"\"manytomany4\" coords=\"5 60\"/> <area id=\"manytomany5\" coords=\"6 60\"/> "
+"<area id=\"manytomany6\" coords=\"7 60\"/> <area id=\"manytomany7\" coords="
+"\"8 60\"/> <area id=\"manytomany8\" coords=\"9 60\"/> </areaspec> "
+"<programlisting><![CDATA[<many-to-many\n"
+" column=\"column_name\"\n"
+" formula=\"any SQL expression\"\n"
+" class=\"ClassName\"\n"
+" fetch=\"select|join\"\n"
+" unique=\"true|false\"\n"
+" not-found=\"ignore|exception\"\n"
+" entity-name=\"EntityName\"\n"
+" property-ref=\"propertyNameFromAssociatedClass\"\n"
+" node=\"element-name\"\n"
+" embed-xml=\"true|false\"\n"
+" />]]></programlisting> <calloutlist> <callout arearefs=\"manytomany1\"> "
+"<para> <literal>column</literal> (optional): The name of the element foreign "
+"key column. </para> </callout> <callout arearefs=\"manytomany2\"> <para> "
+"<literal>formula</literal> (optional): An SQL formula used to evaluate the "
+"element foreign key value. </para> </callout> <callout arearefs=\"manytomany3"
+"\"> <para> <literal>class</literal> (required): The name of the associated "
+"class. </para> </callout> <callout arearefs=\"manytomany4\"> <para> "
+"<literal>fetch</literal> (optional - defaults to <literal>join</literal>): "
+"enables outer-join or sequential select fetching for this association. This "
+"is a special case; for full eager fetching (in a single <literal>SELECT</"
+"literal>) of an entity and its many-to-many relationships to other entities, "
+"you would enable <literal>join</literal> fetching not only of the collection "
+"itself, but also with this attribute on the <literal><many-to-many></"
+"literal> nested element. </para> </callout> <callout arearefs=\"manytomany5"
+"\"> <para> <literal>unique</literal> (optional): Enable the DDL generation "
+"of a unique constraint for the foreign-key column. This makes the "
+"association multiplicity effectively one to many. </para> </callout> "
+"<callout arearefs=\"manytomany6\"> <para> <literal>not-found</literal> "
+"(optional - defaults to <literal>exception</literal>): Specifies how foreign "
+"keys that reference missing rows will be handled: <literal>ignore</literal> "
+"will treat a missing row as a null association. </para> </callout> <callout "
+"arearefs=\"manytomany7\"> <para> <literal>entity-name</literal> (optional): "
+"The entity name of the associated class, as an alternative to "
+"<literal>class</literal>. </para> </callout> <callout arearefs=\"manytomany8"
+"\"> <para> <literal>property-ref</literal>: (optional) The name of a "
+"property of the associated class that is joined to this foreign key. If not "
+"specified, the primary key of the associated class is used. </para> </"
+"callout> </calloutlist> </programlistingco>"
msgstr ""
- "<programlistingco> <areaspec> <area id=\"element1b\" coords=\"2 50\"/> <area id=\"element2b\" coords=\"3 50\"/> <area id=\"element3b\" coords=\"4 50\"/> </areaspec> <programlisting><![CDATA[<element\n"
- " column=\"column_name\"\n"
- " formula=\"any SQL expression\"\n"
- " type=\"typename\"\n"
- " length=\"L\"\n"
- " precision=\"P\"\n"
- " scale=\"S\"\n"
- " not-null=\"true|false\"\n"
- " unique=\"true|false\"\n"
- " node=\"element-name\"\n"
- "/>]]></programlisting> <calloutlist> <callout arearefs=\"element1b\"> <para> <literal>column</literal> (옵션): 콜렉션 요소 값들을 소유하는 컬럼의 이름. </para> </callout> <callout arearefs=\"element2b\"> <para> <literal>formula</literal> (옵션): 요소를 평가하는데 사용되는 SQL formula. </para> </callout> <callout arearefs=\"element3b\"> <para> <literal>type</literal> (필수): 콜렉션 요소의 타입. </para> </callout> </calloutlist> </programlistingco> <para> <emphasis>many-to-many association</emphasis> 연관은 <literal><many-to-many></literal> 요소를 사용하여 지정된다. </para> <programlistingco> <areaspec> <area id=\"manytomany1\" coords=\"2 60\"/> <area id=\"manytomany2\" coords=\"3 60\"/> <area id=\"manytomany3\" coords=\"4 60\"/> <area id=\"manytomany4\" coords=\"5 60\"/> <area id=\"manytomany5\" coords=\"6 60\"/> <area id=\"manytomany6\" coords=\"7 60\"/> <area id=\"manytomany7\" coords=\"8 60\"/> <area id!
=\"manytomany8\" coords=\"9 60\"/> </areaspec> <programlisting><![CDATA[<many-to-many\n"
- " column=\"column_name\"\n"
- " formula=\"any SQL expression\"\n"
- " class=\"ClassName\"\n"
- " fetch=\"select|join\"\n"
- " unique=\"true|false\"\n"
- " not-found=\"ignore|exception\"\n"
- " entity-name=\"EntityName\"\n"
- " property-ref=\"propertyNameFromAssociatedClass\"\n"
- " node=\"element-name\"\n"
- " embed-xml=\"true|false\"\n"
- " />]]></programlisting> <calloutlist> <callout arearefs=\"manytomany1\"> <para> <literal>column</literal> (옵션): 요소 foreign 키 컬럼의 이름. </para> </callout> <callout arearefs=\"manytomany2\"> <para> <literal>formula</literal> (옵션): 요소 foreign 키 값을 평가하는데 사용되는 SQL formula. </para> </callout> <callout arearefs=\"manytomany3\"> <para> <literal>class</literal> (필수): 연관된 클래스의 이름. </para> </callout> <callout arearefs=\"manytomany4\"> <para> <literal>fetch</literal> (옵션 - 디폴트는 <literal>join</literal>): 이 연관에 대해 outer-join 페칭 또는 sequential select 페칭을 이용 가능하게 만든다. 이것은 특별한 경우이다; 엔티티 그리고 다른 엔티티들과 그것의 many-to-many 관계들에 대한 (하나의 <literal>SELECT</literal> 내에서) 전체 eager 페칭의 경우, 당신은 콜렉션 그 자체에 대해서 뿐만 아니라 내포된 요소 <literal><ma!
ny-to-many></literal> 상의 이 속성에 대해 <literal>join</literal> 페칭을 이용 가능하게 할 것이다. </para> </callout> <callout arearefs=\"manytomany5\"> <para> <literal>unique</literal> (옵션): foreign-key 컬럼에 대한 유일 컨스트레인트의 DDL 생성을 가능하도록 한다. 이것은 연관 다중성 (association multiplicity)을 효율적으로 one to many로 만든다. </para> </callout> <callout arearefs=\"manytomany6\"> <para> <literal>not-found</literal> (옵션 - 디폴트는 <literal>exception</literal>): 누락된 행들을 참조하는 foreign 키들이 어떻게 처리될 것인지를 지정한다: <literal>ignore</literal>는 누락된 한 행을 한 개의 연관으로 다룰 것이다. </para> </callout> <callout arearefs=\"manytomany7\"> <para> <literal>entity-name</literal> (옵션): <literal>class</literal>에 대한 하나의 대안으로서, 연관된 클래스의 엔티티 이름. </para> </callout> <callout arearef!
s=\"manytomany8\"> <para> <literal>property-ref</literal>: (옵션) �
� foreign 키에 조인된 연관 클래스의 프로퍼티의 이름. 지정되지 않을 경우, 연관 클래스의 프라이머리 키가 사용된다. </para> </callout> </calloutlist> </programlistingco>"
-#: index.docbook:480
+#. Tag: para
+#: collection_mapping.xml:480
+#, no-c-format
msgid "Some examples, first, a set of strings:"
msgstr "몇몇 예제들, 먼저 문자열들을 가진 set:"
-#: index.docbook:484
+#. Tag: programlisting
+#: collection_mapping.xml:484
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"names\" table=\"person_names\">\n"
- " <key column=\"person_id\"/>\n"
- " <element column=\"person_name\" type=\"string\"/>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"names\" table=\"person_names\">\n"
+" <key column=\"person_id\"/>\n"
+" <element column=\"person_name\" type=\"string\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"names\" table=\"person_names\">\n"
- " <key column=\"person_id\"/>\n"
- " <element column=\"person_name\" type=\"string\"/>\n"
- "</set>]]>"
-#: index.docbook:486
-msgid "A bag containing integers (with an iteration order determined by the <literal>order-by</literal> attribute):"
-msgstr "(<literal>order-by</literal> 속성에 의해 결정되는 반복 순서를 가진) 정수들을 포함하는 bag :"
+#. Tag: para
+#: collection_mapping.xml:486
+#, no-c-format
+msgid ""
+"A bag containing integers (with an iteration order determined by the "
+"<literal>order-by</literal> attribute):"
+msgstr ""
+"(<literal>order-by</literal> 속성에 의해 결정되는 반복 순서를 가진) 정수들을 "
+"포함하는 bag :"
-#: index.docbook:491
+#. Tag: programlisting
+#: collection_mapping.xml:491
+#, no-c-format
msgid ""
- "<![CDATA[<bag name=\"sizes\" \n"
- " table=\"item_sizes\" \n"
- " order-by=\"size asc\">\n"
- " <key column=\"item_id\"/>\n"
- " <element column=\"size\" type=\"integer\"/>\n"
- "</bag>]]>"
+"<![CDATA[<bag name=\"sizes\" \n"
+" table=\"item_sizes\" \n"
+" order-by=\"size asc\">\n"
+" <key column=\"item_id\"/>\n"
+" <element column=\"size\" type=\"integer\"/>\n"
+"</bag>]]>"
msgstr ""
- "<![CDATA[<bag name=\"sizes\" \n"
- " table=\"item_sizes\" \n"
- " order-by=\"size asc\">\n"
- " <key column=\"item_id\"/>\n"
- " <element column=\"size\" type=\"integer\"/>\n"
- "</bag>]]>"
-#: index.docbook:493
+#. Tag: para
+#: collection_mapping.xml:493
+#, no-c-format
msgid "An array of entities - in this case, a many to many association:"
msgstr "엔티티들을 가진 배열 - 이 경우에, many to many 연관 :"
-#: index.docbook:497
+#. Tag: programlisting
+#: collection_mapping.xml:497
+#, no-c-format
msgid ""
- "<![CDATA[<array name=\"addresses\" \n"
- " table=\"PersonAddress\" \n"
- " cascade=\"persist\">\n"
- " <key column=\"personId\"/>\n"
- " <list-index column=\"sortOrder\"/>\n"
- " <many-to-many column=\"addressId\" class=\"Address\"/>\n"
- "</array>]]>"
+"<![CDATA[<array name=\"addresses\" \n"
+" table=\"PersonAddress\" \n"
+" cascade=\"persist\">\n"
+" <key column=\"personId\"/>\n"
+" <list-index column=\"sortOrder\"/>\n"
+" <many-to-many column=\"addressId\" class=\"Address\"/>\n"
+"</array>]]>"
msgstr ""
- "<![CDATA[<array name=\"addresses\" \n"
- " table=\"PersonAddress\" \n"
- " cascade=\"persist\">\n"
- " <key column=\"personId\"/>\n"
- " <list-index column=\"sortOrder\"/>\n"
- " <many-to-many column=\"addressId\" class=\"Address\"/>\n"
- "</array>]]>"
-#: index.docbook:499
+#. Tag: para
+#: collection_mapping.xml:499
+#, no-c-format
msgid "A map from string indices to dates:"
msgstr "날짜들에 대한 문자열 인덱스들을 가진 map :"
-#: index.docbook:503
+#. Tag: programlisting
+#: collection_mapping.xml:503
+#, no-c-format
msgid ""
- "<![CDATA[<map name=\"holidays\" \n"
- " table=\"holidays\" \n"
- " schema=\"dbo\" \n"
- " order-by=\"hol_name asc\">\n"
- " <key column=\"id\"/>\n"
- " <map-key column=\"hol_name\" type=\"string\"/>\n"
- " <element column=\"hol_date\" type=\"date\"/>\n"
- "</map>]]>"
+"<![CDATA[<map name=\"holidays\" \n"
+" table=\"holidays\" \n"
+" schema=\"dbo\" \n"
+" order-by=\"hol_name asc\">\n"
+" <key column=\"id\"/>\n"
+" <map-key column=\"hol_name\" type=\"string\"/>\n"
+" <element column=\"hol_date\" type=\"date\"/>\n"
+"</map>]]>"
msgstr ""
- "<![CDATA[<map name=\"holidays\" \n"
- " table=\"holidays\" \n"
- " schema=\"dbo\" \n"
- " order-by=\"hol_name asc\">\n"
- " <key column=\"id\"/>\n"
- " <map-key column=\"hol_name\" type=\"string\"/>\n"
- " <element column=\"hol_date\" type=\"date\"/>\n"
- "</map>]]>"
-#: index.docbook:505
+#. Tag: para
+#: collection_mapping.xml:505
+#, no-c-format
msgid "A list of components (discussed in the next chapter):"
msgstr "컴포넌트들의 리스트(다음 장에서 논의됨):"
-#: index.docbook:509
+#. Tag: programlisting
+#: collection_mapping.xml:509
+#, no-c-format
msgid ""
- "<![CDATA[<list name=\"carComponents\" \n"
- " table=\"CarComponents\">\n"
- " <key column=\"carId\"/>\n"
- " <list-index column=\"sortOrder\"/>\n"
- " <composite-element class=\"CarComponent\">\n"
- " <property name=\"price\"/>\n"
- " <property name=\"type\"/>\n"
- " <property name=\"serialNumber\" column=\"serialNum\"/>\n"
- " </composite-element>\n"
- "</list>]]>"
+"<![CDATA[<list name=\"carComponents\" \n"
+" table=\"CarComponents\">\n"
+" <key column=\"carId\"/>\n"
+" <list-index column=\"sortOrder\"/>\n"
+" <composite-element class=\"CarComponent\">\n"
+" <property name=\"price\"/>\n"
+" <property name=\"type\"/>\n"
+" <property name=\"serialNumber\" column=\"serialNum\"/>\n"
+" </composite-element>\n"
+"</list>]]>"
msgstr ""
- "<![CDATA[<list name=\"carComponents\" \n"
- " table=\"CarComponents\">\n"
- " <key column=\"carId\"/>\n"
- " <list-index column=\"sortOrder\"/>\n"
- " <composite-element class=\"CarComponent\">\n"
- " <property name=\"price\"/>\n"
- " <property name=\"type\"/>\n"
- " <property name=\"serialNumber\" column=\"serialNum\"/>\n"
- " </composite-element>\n"
- "</list>]]>"
-#: index.docbook:514
+#. Tag: title
+#: collection_mapping.xml:514
+#, no-c-format
msgid "One-to-many associations"
msgstr "One-to-many 연관들"
-#: index.docbook:516
-msgid "A <emphasis>one to many association</emphasis> links the tables of two classes via a foreign key, with no intervening collection table. This mapping loses certain semantics of normal Java collections:"
-msgstr "<emphasis>one to many 연관</emphasis>은 중재하는 콜렉션 테이블 없이 foreign 키를 통해 두 개의 클래스들의 테이블들을 연결시킨다. 이 매핑은 통상의 자바 콜렉션들의 어떤 의미를 상실한다:"
+#. Tag: para
+#: collection_mapping.xml:516
+#, no-c-format
+msgid ""
+"A <emphasis>one to many association</emphasis> links the tables of two "
+"classes via a foreign key, with no intervening collection table. This "
+"mapping loses certain semantics of normal Java collections:"
+msgstr ""
+"<emphasis>one to many 연관</emphasis>은 중재하는 콜렉션 테이블 없이 foreign "
+"키를 통해 두 개의 클래스들의 테이블들을 연결시킨다. 이 매핑은 통상의 자바 콜"
+"렉션들의 어떤 의미를 상실한다:"
-#: index.docbook:524
-msgid "An instance of the contained entity class may not belong to more than one instance of the collection"
-msgstr "포함된 엔티티 클래스의 인스턴스는 그 콜렉션의 하나 이상의 인스턴스에 속하지 않을 수 있다"
+#. Tag: para
+#: collection_mapping.xml:524
+#, no-c-format
+msgid ""
+"An instance of the contained entity class may not belong to more than one "
+"instance of the collection"
+msgstr ""
+"포함된 엔티티 클래스의 인스턴스는 그 콜렉션의 하나 이상의 인스턴스에 속하지 "
+"않을 수 있다"
-#: index.docbook:530
-msgid "An instance of the contained entity class may not appear at more than one value of the collection index"
-msgstr "포함된 엔티티 클래스의 인스턴스는 콜렉션 인덱스의 하나 이상의 값에서 나타나지 않을 수 있다"
+#. Tag: para
+#: collection_mapping.xml:530
+#, no-c-format
+msgid ""
+"An instance of the contained entity class may not appear at more than one "
+"value of the collection index"
+msgstr ""
+"포함된 엔티티 클래스의 인스턴스는 콜렉션 인덱스의 하나 이상의 값에서 나타나"
+"지 않을 수 있다"
-#: index.docbook:537
-msgid "An association from <literal>Product</literal> to <literal>Part</literal> requires existence of a foreign key column and possibly an index column to the <literal>Part</literal> table. A <literal><one-to-many></literal> tag indicates that this is a one to many association."
-msgstr "<literal>Product</literal>로부터 <literal>Part</literal>로의 연관은 foreign 키 컬럼과 <literal>Part</literal> 테이블에 대한 인덱스 컬럼의 존재를 필요로 한다. <literal><one-to-many></literal> 태그는 이것이 one to many 연관임을 나타낸다."
+#. Tag: para
+#: collection_mapping.xml:537
+#, no-c-format
+msgid ""
+"An association from <literal>Product</literal> to <literal>Part</literal> "
+"requires existence of a foreign key column and possibly an index column to "
+"the <literal>Part</literal> table. A <literal><one-to-many></literal> "
+"tag indicates that this is a one to many association."
+msgstr ""
+"<literal>Product</literal>로부터 <literal>Part</literal>로의 연관은 foreign "
+"키 컬럼과 <literal>Part</literal> 테이블에 대한 인덱스 컬럼의 존재를 필요로 "
+"한다. <literal><one-to-many></literal> 태그는 이것이 one to many 연관임"
+"을 나타낸다."
-#: index.docbook:550
+#. Tag: programlisting
+#: collection_mapping.xml:550
+#, no-c-format
msgid ""
- "<![CDATA[<one-to-many \n"
- " class=\"ClassName\"\n"
- " not-found=\"ignore|exception\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name\"\n"
- " embed-xml=\"true|false\"\n"
- " />]]>"
+"<![CDATA[<one-to-many \n"
+" class=\"ClassName\"\n"
+" not-found=\"ignore|exception\"\n"
+" entity-name=\"EntityName\"\n"
+" node=\"element-name\"\n"
+" embed-xml=\"true|false\"\n"
+" />]]>"
msgstr ""
- "<![CDATA[<one-to-many \n"
- " class=\"ClassName\"\n"
- " not-found=\"ignore|exception\"\n"
- " entity-name=\"EntityName\"\n"
- " node=\"element-name\"\n"
- " embed-xml=\"true|false\"\n"
- " />]]>"
-#: index.docbook:553
+#. Tag: para
+#: collection_mapping.xml:553
+#, no-c-format
msgid "<literal>class</literal> (required): The name of the associated class."
msgstr "<literal>class</literal> (필수): 연관된 클래스의 이름."
-#: index.docbook:558
-msgid "<literal>not-found</literal> (optional - defaults to <literal>exception</literal>): Specifies how cached identifiers that reference missing rows will be handled: <literal>ignore</literal> will treat a missing row as a null association."
-msgstr "<literal>not-found</literal> (옵션 - 디폴트는 <literal>exception</literal>): 누락된 행들을 참조하는 캐시된 식별자들이 어떻게 처리될 것인지를 지정한다: <literal>ignore</literal>는 누락된 한 행을 한 개의 연관으로 다룰 것이다."
+#. Tag: para
+#: collection_mapping.xml:558
+#, no-c-format
+msgid ""
+"<literal>not-found</literal> (optional - defaults to <literal>exception</"
+"literal>): Specifies how cached identifiers that reference missing rows will "
+"be handled: <literal>ignore</literal> will treat a missing row as a null "
+"association."
+msgstr ""
+"<literal>not-found</literal> (옵션 - 디폴트는 <literal>exception</literal>): "
+"누락된 행들을 참조하는 캐시된 식별자들이 어떻게 처리될 것인지를 지정한다: "
+"<literal>ignore</literal>는 누락된 한 행을 한 개의 연관으로 다룰 것이다."
-#: index.docbook:565
-msgid "<literal>entity-name</literal> (optional): The entity name of the associated class, as an alternative to <literal>class</literal>."
-msgstr "<literal>entity-name</literal> (옵션): <literal>class</literal>에 대한 대안으로서, 연관된 클래스의 엔티티 이름."
+#. Tag: para
+#: collection_mapping.xml:565
+#, fuzzy, no-c-format
+msgid ""
+"<literal>entity-name</literal> (optional): The entity name of the associated "
+"class, as an alternative to <literal>class</literal>."
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>entity-name</literal> (옵션): <literal>class</literal>에 대한 하나"
+"의 대안으로서, 연관된 클래스의 엔티티 이름.\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"<literal>entity-name</literal> (옵션): <literal>class</literal>에 대한 대안으"
+"로서, 연관된 클래스의 엔티티 이름."
-#: index.docbook:573
-msgid "Notice that the <literal><one-to-many></literal> element does not need to declare any columns. Nor is it necessary to specify the <literal>table</literal> name anywhere."
-msgstr "<literal><one-to-many></literal> 요소는 어떤 컬럼들을 선언하는데 필요하지 않음을 주목하라. 어딘가에 <literal>table</literal> 이름을 지정하는 것도 필수적이지 않다."
+#. Tag: para
+#: collection_mapping.xml:573
+#, no-c-format
+msgid ""
+"Notice that the <literal><one-to-many></literal> element does not need "
+"to declare any columns. Nor is it necessary to specify the <literal>table</"
+"literal> name anywhere."
+msgstr ""
+"<literal><one-to-many></literal> 요소는 어떤 컬럼들을 선언하는데 필요하"
+"지 않음을 주목하라. 어딘가에 <literal>table</literal> 이름을 지정하는 것도 필"
+"수적이지 않다."
-#: index.docbook:579
-msgid "<emphasis>Very important note:</emphasis> If the foreign key column of a <literal><one-to-many></literal> association is declared <literal>NOT NULL</literal>, you must declare the <literal><key></literal> mapping <literal>not-null=\"true\"</literal> or <emphasis>use a bidirectional association</emphasis> with the collection mapping marked <literal>inverse=\"true\"</literal>. See the discussion of bidirectional associations later in this chapter."
-msgstr "<emphasis>매우 중요한 노트</emphasis>: 만일 <literal><one-to-many></literal> 연관의 foreign 키 컬럼이 <literal>NOT NULL</literal>로 선언될 경우, 당신은 <literal><key></literal> 매핑을 <literal>not-null=\"true\"</literal>로 선언해야 하거나 <literal>inverse=\"true\"</literal>로 마크된 콜렉션 매핑을 가진 <emphasis>양방향 연관을 사용해야 한다</emphasis>. 양방향 연관들에 대한 논의는 이 장의 뒷부분을 보라."
+#. Tag: para
+#: collection_mapping.xml:579
+#, no-c-format
+msgid ""
+"<emphasis>Very important note:</emphasis> If the foreign key column of a "
+"<literal><one-to-many></literal> association is declared <literal>NOT "
+"NULL</literal>, you must declare the <literal><key></literal> mapping "
+"<literal>not-null=\"true\"</literal> or <emphasis>use a bidirectional "
+"association</emphasis> with the collection mapping marked <literal>inverse="
+"\"true\"</literal>. See the discussion of bidirectional associations later "
+"in this chapter."
+msgstr ""
+"<emphasis>매우 중요한 노트</emphasis>: 만일 <literal><one-to-many></"
+"literal> 연관의 foreign 키 컬럼이 <literal>NOT NULL</literal>로 선언될 경우, "
+"당신은 <literal><key></literal> 매핑을 <literal>not-null=\"true\"</"
+"literal>로 선언해야 하거나 <literal>inverse=\"true\"</literal>로 마크된 콜렉"
+"션 매핑을 가진 <emphasis>양방향 연관을 사용해야 한다</emphasis>. 양방향 연관"
+"들에 대한 논의는 이 장의 뒷부분을 보라."
-#: index.docbook:588
-msgid "This example shows a map of <literal>Part</literal> entities by name (where <literal>partName</literal> is a persistent property of <literal>Part</literal>). Notice the use of a formula-based index."
-msgstr "이 예제는 name으로 <literal>Part</literal> 엔티티들을 가진 map을 보여준다(여기서 <literal>partName</literal>은 <literal>Part</literal>의 영속 프로퍼티이다). formula-기반 index의 사용을 주목하라."
+#. Tag: para
+#: collection_mapping.xml:588
+#, no-c-format
+msgid ""
+"This example shows a map of <literal>Part</literal> entities by name (where "
+"<literal>partName</literal> is a persistent property of <literal>Part</"
+"literal>). Notice the use of a formula-based index."
+msgstr ""
+"이 예제는 name으로 <literal>Part</literal> 엔티티들을 가진 map을 보여준다(여"
+"기서 <literal>partName</literal>은 <literal>Part</literal>의 영속 프로퍼티이"
+"다). formula-기반 index의 사용을 주목하라."
-#: index.docbook:594
+#. Tag: programlisting
+#: collection_mapping.xml:594
+#, no-c-format
msgid ""
- "<![CDATA[<map name=\"parts\"\n"
- " cascade=\"all\">\n"
- " <key column=\"productId\" not-null=\"true\"/>\n"
- " <map-key formula=\"partName\"/>\n"
- " <one-to-many class=\"Part\"/>\n"
- "</map>]]>"
+"<![CDATA[<map name=\"parts\"\n"
+" cascade=\"all\">\n"
+" <key column=\"productId\" not-null=\"true\"/>\n"
+" <map-key formula=\"partName\"/>\n"
+" <one-to-many class=\"Part\"/>\n"
+"</map>]]>"
msgstr ""
- "<![CDATA[<map name=\"parts\"\n"
- " cascade=\"all\">\n"
- " <key column=\"productId\" not-null=\"true\"/>\n"
- " <map-key formula=\"partName\"/>\n"
- " <one-to-many class=\"Part\"/>\n"
- "</map>]]>"
-#: index.docbook:600
+#. Tag: title
+#: collection_mapping.xml:600
+#, no-c-format
msgid "Advanced collection mappings"
msgstr "개선된 콜렉션 매핑들"
-#: index.docbook:603
+#. Tag: title
+#: collection_mapping.xml:603
+#, no-c-format
msgid "Sorted collections"
msgstr "Sorted 콜렉션들"
-#: index.docbook:605
-msgid "Hibernate supports collections implementing <literal>java.util.SortedMap</literal> and <literal>java.util.SortedSet</literal>. You must specify a comparator in the mapping file:"
-msgstr "Hibernate는 <literal>java.util.SortedMap</literal>과 <literal>java.util.SortedSet</literal>를 구현하는 콜렉션들을 지원한다. 당신은 매핑 파일 속에 하나의 comparator를 지정해야 한다:"
+#. Tag: para
+#: collection_mapping.xml:605
+#, no-c-format
+msgid ""
+"Hibernate supports collections implementing <literal>java.util.SortedMap</"
+"literal> and <literal>java.util.SortedSet</literal>. You must specify a "
+"comparator in the mapping file:"
+msgstr ""
+"Hibernate는 <literal>java.util.SortedMap</literal>과 <literal>java.util."
+"SortedSet</literal>를 구현하는 콜렉션들을 지원한다. 당신은 매핑 파일 속에 하"
+"나의 comparator를 지정해야 한다:"
-#: index.docbook:610
+#. Tag: programlisting
+#: collection_mapping.xml:610
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"aliases\" \n"
- " table=\"person_aliases\" \n"
- " sort=\"natural\">\n"
- " <key column=\"person\"/>\n"
- " <element column=\"name\" type=\"string\"/>\n"
- "</set>\n"
- "\n"
- "<map name=\"holidays\" sort=\"my.custom.HolidayComparator\">\n"
- " <key column=\"year_id\"/>\n"
- " <map-key column=\"hol_name\" type=\"string\"/>\n"
- " <element column=\"hol_date\" type=\"date\"/>\n"
- "</map>]]>"
+"<![CDATA[<set name=\"aliases\" \n"
+" table=\"person_aliases\" \n"
+" sort=\"natural\">\n"
+" <key column=\"person\"/>\n"
+" <element column=\"name\" type=\"string\"/>\n"
+"</set>\n"
+"\n"
+"<map name=\"holidays\" sort=\"my.custom.HolidayComparator\">\n"
+" <key column=\"year_id\"/>\n"
+" <map-key column=\"hol_name\" type=\"string\"/>\n"
+" <element column=\"hol_date\" type=\"date\"/>\n"
+"</map>]]>"
msgstr ""
- "<![CDATA[<set name=\"aliases\" \n"
- " table=\"person_aliases\" \n"
- " sort=\"natural\">\n"
- " <key column=\"person\"/>\n"
- " <element column=\"name\" type=\"string\"/>\n"
- "</set>\n"
- "\n"
- "<map name=\"holidays\" sort=\"my.custom.HolidayComparator\">\n"
- " <key column=\"year_id\"/>\n"
- " <map-key column=\"hol_name\" type=\"string\"/>\n"
- " <element column=\"hol_date\" type=\"date\"/>\n"
- "</map>]]>"
-#: index.docbook:612
-msgid "Allowed values of the <literal>sort</literal> attribute are <literal>unsorted</literal>, <literal>natural</literal> and the name of a class implementing <literal>java.util.Comparator</literal>."
-msgstr "<literal>sort</literal> 속성에 허용되는 값들은 <literal>unsorted</literal>, <literal>natural</literal>, 그리고 <literal>java.util.Comparator</literal>를 구현하는 클래스의 이름이다."
+#. Tag: para
+#: collection_mapping.xml:612
+#, no-c-format
+msgid ""
+"Allowed values of the <literal>sort</literal> attribute are "
+"<literal>unsorted</literal>, <literal>natural</literal> and the name of a "
+"class implementing <literal>java.util.Comparator</literal>."
+msgstr ""
+"<literal>sort</literal> 속성에 허용되는 값들은 <literal>unsorted</literal>, "
+"<literal>natural</literal>, 그리고 <literal>java.util.Comparator</literal>를 "
+"구현하는 클래스의 이름이다."
-#: index.docbook:618
-msgid "Sorted collections actually behave like <literal>java.util.TreeSet</literal> or <literal>java.util.TreeMap</literal>."
-msgstr "Sorted 콜렉션들은 <literal>java.util.TreeSet</literal> 또는 <literal>java.util.TreeMap</literal>처럼 행동한다."
+#. Tag: para
+#: collection_mapping.xml:618
+#, no-c-format
+msgid ""
+"Sorted collections actually behave like <literal>java.util.TreeSet</literal> "
+"or <literal>java.util.TreeMap</literal>."
+msgstr ""
+"Sorted 콜렉션들은 <literal>java.util.TreeSet</literal> 또는 <literal>java."
+"util.TreeMap</literal>처럼 행동한다."
-#: index.docbook:623
-msgid "If you want the database itself to order the collection elements use the <literal>order-by</literal> attribute of <literal>set</literal>, <literal>bag</literal> or <literal>map</literal> mappings. This solution is only available under JDK 1.4 or higher (it is implemented using <literal>LinkedHashSet</literal> or <literal>LinkedHashMap</literal>). This performs the ordering in the SQL query, not in memory."
-msgstr "만일 당신이 데이터베이스 그 자체가 콜렉션 요소들을 순서지우도록(order)원할 경우 <literal>set</literal>, <literal>bag</literal> 또는<literal>map</literal> 매핑들에 대해 <literal>order-by</literal> 속성을 사용하라. 이 해결책은 JDK 1.4 이상의 버전에서만 이용 가능하다(그것은 <literal>LinkedHashSet</literal> 또는 <literal>LinkedHashMap</literal>을 사용하여 구현된다). 이것은 메모리 내가 아닌, SQL 질의 내에서 순서지움(ordering)을 수행한다."
+#. Tag: para
+#: collection_mapping.xml:623
+#, no-c-format
+msgid ""
+"If you want the database itself to order the collection elements use the "
+"<literal>order-by</literal> attribute of <literal>set</literal>, "
+"<literal>bag</literal> or <literal>map</literal> mappings. This solution is "
+"only available under JDK 1.4 or higher (it is implemented using "
+"<literal>LinkedHashSet</literal> or <literal>LinkedHashMap</literal>). This "
+"performs the ordering in the SQL query, not in memory."
+msgstr ""
+"만일 당신이 데이터베이스 그 자체가 콜렉션 요소들을 순서지우도록(order)원할 경"
+"우 <literal>set</literal>, <literal>bag</literal> 또는<literal>map</literal> "
+"매핑들에 대해 <literal>order-by</literal> 속성을 사용하라. 이 해결책은 JDK "
+"1.4 이상의 버전에서만 이용 가능하다(그것은 <literal>LinkedHashSet</literal> "
+"또는 <literal>LinkedHashMap</literal>을 사용하여 구현된다). 이것은 메모리 내"
+"가 아닌, SQL 질의 내에서 순서지움(ordering)을 수행한다."
-#: index.docbook:632
+#. Tag: programlisting
+#: collection_mapping.xml:632
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"aliases\" table=\"person_aliases\" order-by=\"lower(name) asc\">\n"
- " <key column=\"person\"/>\n"
- " <element column=\"name\" type=\"string\"/>\n"
- "</set>\n"
- "\n"
- "<map name=\"holidays\" order-by=\"hol_date, hol_name\">\n"
- " <key column=\"year_id\"/>\n"
- " <map-key column=\"hol_name\" type=\"string\"/>\n"
- " <element column=\"hol_date type=\"date\"/>\n"
- "</map>]]>"
+"<![CDATA[<set name=\"aliases\" table=\"person_aliases\" order-by=\"lower"
+"(name) asc\">\n"
+" <key column=\"person\"/>\n"
+" <element column=\"name\" type=\"string\"/>\n"
+"</set>\n"
+"\n"
+"<map name=\"holidays\" order-by=\"hol_date, hol_name\">\n"
+" <key column=\"year_id\"/>\n"
+" <map-key column=\"hol_name\" type=\"string\"/>\n"
+" <element column=\"hol_date type=\"date\"/>\n"
+"</map>]]>"
msgstr ""
- "<![CDATA[<set name=\"aliases\" table=\"person_aliases\" order-by=\"lower(name) asc\">\n"
- " <key column=\"person\"/>\n"
- " <element column=\"name\" type=\"string\"/>\n"
- "</set>\n"
- "\n"
- "<map name=\"holidays\" order-by=\"hol_date, hol_name\">\n"
- " <key column=\"year_id\"/>\n"
- " <map-key column=\"hol_name\" type=\"string\"/>\n"
- " <element column=\"hol_date type=\"date\"/>\n"
- "</map>]]>"
-#: index.docbook:634
-msgid "Note that the value of the <literal>order-by</literal> attribute is an SQL ordering, not a HQL ordering!"
-msgstr "<literal>order-by</literal> 속성의 값은 HQL 순서지움(ordering)이 아니라 SQL 순서지움(ordering)임을 노트하라!"
+#. Tag: para
+#: collection_mapping.xml:634
+#, no-c-format
+msgid ""
+"Note that the value of the <literal>order-by</literal> attribute is an SQL "
+"ordering, not a HQL ordering!"
+msgstr ""
+"<literal>order-by</literal> 속성의 값은 HQL 순서지움(ordering)이 아니라 SQL "
+"순서지움(ordering)임을 노트하라!"
-#: index.docbook:639
-msgid "Associations may even be sorted by some arbitrary criteria at runtime using a collection <literal>filter()</literal>."
-msgstr "연관들은 콜렉션 <literal>filter()</literal>를 사용하여 실행 시에 어떤 임의의 criteria(기준)을 사용하여 정렬(sort)될 수도 있다."
+#. Tag: para
+#: collection_mapping.xml:639
+#, no-c-format
+msgid ""
+"Associations may even be sorted by some arbitrary criteria at runtime using "
+"a collection <literal>filter()</literal>."
+msgstr ""
+"연관들은 콜렉션 <literal>filter()</literal>를 사용하여 실행 시에 어떤 임의의 "
+"criteria(기준)을 사용하여 정렬(sort)될 수도 있다."
-#: index.docbook:644
-msgid "<![CDATA[sortedUsers = s.createFilter( group.getUsers(), \"order by this.name\" ).list();]]>"
-msgstr "<![CDATA[sortedUsers = s.createFilter( group.getUsers(), \"order by this.name\" ).list();]]>"
+#. Tag: programlisting
+#: collection_mapping.xml:644
+#, no-c-format
+msgid ""
+"<![CDATA[sortedUsers = s.createFilter( group.getUsers(), \"order by this.name"
+"\" ).list();]]>"
+msgstr ""
-#: index.docbook:649
+#. Tag: title
+#: collection_mapping.xml:649
+#, no-c-format
msgid "Bidirectional associations"
msgstr "양방향 연관들"
-#: index.docbook:651
-msgid "A <emphasis>bidirectional association</emphasis> allows navigation from both \"ends\" of the association. Two kinds of bidirectional association are supported:"
-msgstr "<emphasis>양방향 연관</emphasis>은 연관의 양 \"끝(end)들\"로부터 네비게이션을 허용한다. 두 가지 종류의 양방향 연관들이 지원된다:"
+#. Tag: para
+#: collection_mapping.xml:651
+#, fuzzy, no-c-format
+msgid ""
+"A <emphasis>bidirectional association</emphasis> allows navigation from both "
+"\"ends\" of the association. Two kinds of bidirectional association are "
+"supported:"
+msgstr ""
+"<emphasis>양방향 연관</emphasis>은 연관의 양 \"끝(end)들\"로부터 네비게이션"
+"을 허용한다. 두 가지 종류의 양방향 연관들이 지원된다: <placeholder-1/>"
-#: index.docbook:658
+#. Tag: term
+#: collection_mapping.xml:658
+#, no-c-format
msgid "one-to-many"
msgstr "one-to-many"
-#: index.docbook:660
+#. Tag: para
+#: collection_mapping.xml:660
+#, no-c-format
msgid "set or bag valued at one end, single-valued at the other"
msgstr "한쪽 끝에 set 또는 bag 값을 갖고, 다른 쪽 긑에 단일 값을 가진 연관"
-#: index.docbook:666
+#. Tag: term
+#: collection_mapping.xml:666
+#, no-c-format
msgid "many-to-many"
msgstr "many-to-many"
-#: index.docbook:668
+#. Tag: para
+#: collection_mapping.xml:668
+#, no-c-format
msgid "set or bag valued at both ends"
msgstr "양 끝에서 set 또는 bag 값을 가진 연관"
-#: index.docbook:677
-msgid "You may specify a bidirectional many-to-many association simply by mapping two many-to-many associations to the same database table and declaring one end as <emphasis>inverse</emphasis> (which one is your choice, but it can not be an indexed collection)."
-msgstr "당신은 동일한 두 개의 many-to-many 연관들을 동일한 데이터베이스 테이블로 간단하게 매핑하고 한 쪽 끝을 <emphasis>inverse</emphasis>(당신의 선택은 하나이지만, 그것은 인덱싱된 콜렉션일 수 없다)로 선언함으로써 하나의 양방향 many-to-many 연관을 지정할 수도 있다."
+#. Tag: para
+#: collection_mapping.xml:677
+#, no-c-format
+msgid ""
+"You may specify a bidirectional many-to-many association simply by mapping "
+"two many-to-many associations to the same database table and declaring one "
+"end as <emphasis>inverse</emphasis> (which one is your choice, but it can "
+"not be an indexed collection)."
+msgstr ""
+"당신은 동일한 두 개의 many-to-many 연관들을 동일한 데이터베이스 테이블로 간단"
+"하게 매핑하고 한 쪽 끝을 <emphasis>inverse</emphasis>(당신의 선택은 하나이지"
+"만, 그것은 인덱싱된 콜렉션일 수 없다)로 선언함으로써 하나의 양방향 many-to-"
+"many 연관을 지정할 수도 있다."
-#: index.docbook:684
-msgid "Here's an example of a bidirectional many-to-many association; each category can have many items and each item can be in many categories:"
-msgstr "다음은 양방향 many-to-many 연관에 관한 예제이다; 각각의 카테고리는 많은 아이템들을 가질 수 있고 각각의 아이템은 많은 카테고리들 속에 있을 수 있다:"
+#. Tag: para
+#: collection_mapping.xml:684
+#, no-c-format
+msgid ""
+"Here's an example of a bidirectional many-to-many association; each category "
+"can have many items and each item can be in many categories:"
+msgstr ""
+"다음은 양방향 many-to-many 연관에 관한 예제이다; 각각의 카테고리는 많은 아이"
+"템들을 가질 수 있고 각각의 아이템은 많은 카테고리들 속에 있을 수 있다:"
-#: index.docbook:689
+#. Tag: programlisting
+#: collection_mapping.xml:689
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Category\">\n"
- " <id name=\"id\" column=\"CATEGORY_ID\"/>\n"
- " ...\n"
- " <bag name=\"items\" table=\"CATEGORY_ITEM\">\n"
- " <key column=\"CATEGORY_ID\"/>\n"
- " <many-to-many class=\"Item\" column=\"ITEM_ID\"/>\n"
- " </bag>\n"
- "</class>\n"
- "\n"
- "<class name=\"Item\">\n"
- " <id name=\"id\" column=\"ITEM_ID\"/>\n"
- " ...\n"
- "\n"
- " <!-- inverse end -->\n"
- " <bag name=\"categories\" table=\"CATEGORY_ITEM\" inverse=\"true\">\n"
- " <key column=\"ITEM_ID\"/>\n"
- " <many-to-many class=\"Category\" column=\"CATEGORY_ID\"/>\n"
- " </bag>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Category\">\n"
+" <id name=\"id\" column=\"CATEGORY_ID\"/>\n"
+" ...\n"
+" <bag name=\"items\" table=\"CATEGORY_ITEM\">\n"
+" <key column=\"CATEGORY_ID\"/>\n"
+" <many-to-many class=\"Item\" column=\"ITEM_ID\"/>\n"
+" </bag>\n"
+"</class>\n"
+"\n"
+"<class name=\"Item\">\n"
+" <id name=\"id\" column=\"ITEM_ID\"/>\n"
+" ...\n"
+"\n"
+" <!-- inverse end -->\n"
+" <bag name=\"categories\" table=\"CATEGORY_ITEM\" inverse=\"true\">\n"
+" <key column=\"ITEM_ID\"/>\n"
+" <many-to-many class=\"Category\" column=\"CATEGORY_ID\"/>\n"
+" </bag>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Category\">\n"
- " <id name=\"id\" column=\"CATEGORY_ID\"/>\n"
- " ...\n"
- " <bag name=\"items\" table=\"CATEGORY_ITEM\">\n"
- " <key column=\"CATEGORY_ID\"/>\n"
- " <many-to-many class=\"Item\" column=\"ITEM_ID\"/>\n"
- " </bag>\n"
- "</class>\n"
- "\n"
- "<class name=\"Item\">\n"
- " <id name=\"id\" column=\"ITEM_ID\"/>
-\n"
- " ...\n"
- "\n"
- " <!-- inverse end -->\n"
- " <bag name=\"categories\" table=\"CATEGORY_ITEM\" inverse=\"true\">\n"
- " <key column=\"ITEM_ID\"/>\n"
- " <many-to-many class=\"Category\" column=\"CATEGORY_ID\"/>\n"
- " </bag>\n"
- "</class>]]>"
-#: index.docbook:691
-msgid "Changes made only to the inverse end of the association are <emphasis>not</emphasis> persisted. This means that Hibernate has two representations in memory for every bidirectional association, one link from A to B and another link from B to A. This is easier to understand if you think about the Java object model and how we create a many-to-many relationship in Java:"
-msgstr "연관의 inverse 끝(end)에 대해서만 행해진 변경들은 영속화 되지 <emphasis>않는다</emphasis>. 이것은 Hibernate가 모든 양방향 연관에 대해 메모리 내에 두 개의 표상들을 갖는다는 점을 의미한다: A로부터 B로의 하나의 링크와 B로부터 A로의 또 다른 링크. 만일 당신이 자바 객체 모형에 대해 그리고 자바에서 many-to-many 관계를 생성시키는 방법에 대해 생각하면 이것은 이해하기가 더 쉽다:"
+#. Tag: para
+#: collection_mapping.xml:691
+#, no-c-format
+msgid ""
+"Changes made only to the inverse end of the association are <emphasis>not</"
+"emphasis> persisted. This means that Hibernate has two representations in "
+"memory for every bidirectional association, one link from A to B and another "
+"link from B to A. This is easier to understand if you think about the Java "
+"object model and how we create a many-to-many relationship in Java:"
+msgstr ""
+"연관의 inverse 끝(end)에 대해서만 행해진 변경들은 영속화 되지 <emphasis>않는"
+"다</emphasis>. 이것은 Hibernate가 모든 양방향 연관에 대해 메모리 내에 두 개"
+"의 표상들을 갖는다는 점을 의미한다: A로부터 B로의 하나의 링크와 B로부터 A로"
+"의 또 다른 링크. 만일 당신이 자바 객체 모형에 대해 그리고 자바에서 many-to-"
+"many 관계를 생성시키는 방법에 대해 생각하면 이것은 이해하기가 더 쉽다:"
-#: index.docbook:699
+#. Tag: programlisting
+#: collection_mapping.xml:699
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "category.getItems().add(item); // The category now \"knows\" about the relationship\n"
- "item.getCategories().add(category); // The item now \"knows\" about the relationship\n"
- "\n"
- "session.persist(item); // The relationship won't be saved!\n"
- "session.persist(category); // The relationship will be saved]]>"
+"<![CDATA[\n"
+"category.getItems().add(item); // The category now \"knows\" about "
+"the relationship\n"
+"item.getCategories().add(category); // The item now \"knows\" about the "
+"relationship\n"
+"\n"
+"session.persist(item); // The relationship won't be "
+"saved!\n"
+"session.persist(category); // The relationship will be saved]]>"
msgstr ""
- "<![CDATA[\n"
- "category.getItems().add(item); // The category now \"knows\" about the relationship\n"
- "item.getCategories().add(category); // The item now \"knows\" about the relationship\n"
- "\n"
- "session.persist(item); // The relationship won't be saved!\n"
- "session.persist(category); // The relationship will be saved]]>"
-#: index.docbook:701
-msgid "The non-inverse side is used to save the in-memory representation to the database."
+#. Tag: para
+#: collection_mapping.xml:701
+#, no-c-format
+msgid ""
+"The non-inverse side is used to save the in-memory representation to the "
+"database."
msgstr "non-inverse 측은 메모리 내 표상을 데이터베이스로 저장하는데 사용된다."
-#: index.docbook:705
-msgid "You may define a bidirectional one-to-many association by mapping a one-to-many association to the same table column(s) as a many-to-one association and declaring the many-valued end <literal>inverse=\"true\"</literal>."
-msgstr "당신은 하나의 one-to-many 연관을 하나의 many-to-one 연관으로서 동일한 테이블 컬럼(들)로 매핑하고 many-값을 가진 끝(end)을 <literal>inverse=\"true\"</literal>로 선언함으로써 하나의 양방향 연관을 정의할 수도 있다."
+#. Tag: para
+#: collection_mapping.xml:705
+#, no-c-format
+msgid ""
+"You may define a bidirectional one-to-many association by mapping a one-to-"
+"many association to the same table column(s) as a many-to-one association "
+"and declaring the many-valued end <literal>inverse=\"true\"</literal>."
+msgstr ""
+"당신은 하나의 one-to-many 연관을 하나의 many-to-one 연관으로서 동일한 테이블 "
+"컬럼(들)로 매핑하고 many-값을 가진 끝(end)을 <literal>inverse=\"true\"</"
+"literal>로 선언함으로써 하나의 양방향 연관을 정의할 수도 있다."
-#: index.docbook:711
+#. Tag: programlisting
+#: collection_mapping.xml:711
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Parent\">\n"
- " <id name=\"id\" column=\"parent_id\"/>\n"
- " ....\n"
- " <set name=\"children\" inverse=\"true\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Child\">\n"
- " <id name=\"id\" column=\"child_id\"/>\n"
- " ....\n"
- " <many-to-one name=\"parent\" \n"
- " class=\"Parent\" \n"
- " column=\"parent_id\"\n"
- " not-null=\"true\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Parent\">\n"
+" <id name=\"id\" column=\"parent_id\"/>\n"
+" ....\n"
+" <set name=\"children\" inverse=\"true\">\n"
+" <key column=\"parent_id\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+" </set>\n"
+"</class>\n"
+"\n"
+"<class name=\"Child\">\n"
+" <id name=\"id\" column=\"child_id\"/>\n"
+" ....\n"
+" <many-to-one name=\"parent\" \n"
+" class=\"Parent\" \n"
+" column=\"parent_id\"\n"
+" not-null=\"true\"/>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Parent\">\n"
- " <id name=\"id\" column=\"parent_id\"/>\n"
- " ....\n"
- " <set name=\"children\" inverse=\"true\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </set>\n"
- "</class>\n"
- "\n"
- "<class name=\"Child\">\n"
- " <id name=\"id\" column=\"child_id\"/>\n"
- " ....\n"
- " <many-to-one name=\"parent\" \n"
- " class=\"Parent\" \n"
- " column=\"parent_id\"\n"
- " not-null=\"true\"/>\n"
- "</class>]]>"
-#: index.docbook:713
-msgid "Mapping one end of an association with <literal>inverse=\"true\"</literal> doesn't affect the operation of cascades, these are orthogonal concepts!"
-msgstr "연관의 한쪽 끝을 <literal>inverse=\"true\"</literal>로 매핑하는 것은 cascade들을 가진 오퍼레이션에 영향을 주지 않으며, 이것들은 orthogonal(직교) 개념들이다!"
+#. Tag: para
+#: collection_mapping.xml:713
+#, no-c-format
+msgid ""
+"Mapping one end of an association with <literal>inverse=\"true\"</literal> "
+"doesn't affect the operation of cascades, these are orthogonal concepts!"
+msgstr ""
+"연관의 한쪽 끝을 <literal>inverse=\"true\"</literal>로 매핑하는 것은 cascade"
+"들을 가진 오퍼레이션에 영향을 주지 않으며, 이것들은 orthogonal(직교) 개념들이"
+"다!"
-#: index.docbook:721
+#. Tag: title
+#: collection_mapping.xml:721
+#, no-c-format
msgid "Bidirectional associations with indexed collections"
msgstr "인덱싱된 콜렉션들을 가진 양방향 연관들"
-#: index.docbook:722
-msgid "A bidirectional association where one end is represented as a <literal><list></literal> or <literal><map></literal> requires special consideration. If there is a property of the child class which maps to the index column, no problem, we can continue using <literal>inverse=\"true\"</literal> on the collection mapping:"
-msgstr "한쪽 끝이 하나의 <literal><list></literal> 또는 <literal><map></literal>으로서 표현되는 양방향 연관은 특별한 검토를 필요로 한다. 만일 인덱스 컬럼으로 매핑되는 child 클래스의 프로퍼티가 하나 존재한다면 문제가 없고, 우리는 콜렉션 매핑 상에 <literal>inverse=\"true\"</literal>를 사용하여 계속할 수 있다:"
+#. Tag: para
+#: collection_mapping.xml:722
+#, no-c-format
+msgid ""
+"A bidirectional association where one end is represented as a <literal><"
+"list></literal> or <literal><map></literal> requires special "
+"consideration. If there is a property of the child class which maps to the "
+"index column, no problem, we can continue using <literal>inverse=\"true\"</"
+"literal> on the collection mapping:"
+msgstr ""
+"한쪽 끝이 하나의 <literal><list></literal> 또는 <literal><map></"
+"literal>으로서 표현되는 양방향 연관은 특별한 검토를 필요로 한다. 만일 인덱스 "
+"컬럼으로 매핑되는 child 클래스의 프로퍼티가 하나 존재한다면 문제가 없고, 우리"
+"는 콜렉션 매핑 상에 <literal>inverse=\"true\"</literal>를 사용하여 계속할 수 "
+"있다:"
-#: index.docbook:729
+#. Tag: programlisting
+#: collection_mapping.xml:729
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Parent\">\n"
- " <id name=\"id\" column=\"parent_id\"/>\n"
- " ....\n"
- " <map name=\"children\" inverse=\"true\">\n"
- " <key column=\"parent_id\"/>\n"
- " <map-key column=\"name\" \n"
- " type=\"string\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </map>\n"
- "</class>\n"
- "\n"
- "<class name=\"Child\">\n"
- " <id name=\"id\" column=\"child_id\"/>\n"
- " ....\n"
- " <property name=\"name\" \n"
- " not-null=\"true\"/>\n"
- " <many-to-one name=\"parent\" \n"
- " class=\"Parent\" \n"
- " column=\"parent_id\"\n"
- " not-null=\"true\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Parent\">\n"
+" <id name=\"id\" column=\"parent_id\"/>\n"
+" ....\n"
+" <map name=\"children\" inverse=\"true\">\n"
+" <key column=\"parent_id\"/>\n"
+" <map-key column=\"name\" \n"
+" type=\"string\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+" </map>\n"
+"</class>\n"
+"\n"
+"<class name=\"Child\">\n"
+" <id name=\"id\" column=\"child_id\"/>\n"
+" ....\n"
+" <property name=\"name\" \n"
+" not-null=\"true\"/>\n"
+" <many-to-one name=\"parent\" \n"
+" class=\"Parent\" \n"
+" column=\"parent_id\"\n"
+" not-null=\"true\"/>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Parent\">\n"
- " <id name=\"id\" column=\"parent_id\"/>\n"
- " ....\n"
- " <map name=\"children\" inverse=\"true\">\n"
- " <key column=\"parent_id\"/>\n"
- " <map-key column=\"name\" \n"
- " type=\"string\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </map>\n"
- "</class>\n"
- "\n"
- "<class name=\"Child\">\n"
- " <id name=\"id\" column=\"child_id\"/>\n"
- " ....\n"
- " <property name=\"name\" \n"
- " not-null=\"true\"/>\n"
- " <many-to-one name=\"parent\" \n"
- " class=\"Parent\" \n"
- " column=\"parent_id\"\n"
- " not-null=\"true\"/>\n"
- "</class>]]>"
-#: index.docbook:731
-msgid "But, if there is no such property on the child class, we can't think of the association as truly bidirectional (there is information available at one end of the association that is not available at the other end). In this case, we can't map the collection <literal>inverse=\"true\"</literal>. Instead, we could use the following mapping:"
-msgstr "그러나 만일 child 클래스 상에 그런 프로퍼티가 존재하지 않을 경우, 우리는 그 연관을 진정하게 양방향으로 간주할 수 없다 (다른 쪽 끝에서 이용가능하지 않은 그 연관의 끝에서 이용 가능한 정보가 존재한다). 이 경우에 우리는 그 콜렉션을 <literal>inverse=\"true\"</literal>로 매핑시킬 수 없다. 대신에 우리는 다음 매핑을 사용할 수 있다:"
+#. Tag: para
+#: collection_mapping.xml:731
+#, no-c-format
+msgid ""
+"But, if there is no such property on the child class, we can't think of the "
+"association as truly bidirectional (there is information available at one "
+"end of the association that is not available at the other end). In this "
+"case, we can't map the collection <literal>inverse=\"true\"</literal>. "
+"Instead, we could use the following mapping:"
+msgstr ""
+"그러나 만일 child 클래스 상에 그런 프로퍼티가 존재하지 않을 경우, 우리는 그 "
+"연관을 진정하게 양방향으로 간주할 수 없다 (다른 쪽 끝에서 이용가능하지 않은 "
+"그 연관의 끝에서 이용 가능한 정보가 존재한다). 이 경우에 우리는 그 콜렉션을 "
+"<literal>inverse=\"true\"</literal>로 매핑시킬 수 없다. 대신에 우리는 다음 매"
+"핑을 사용할 수 있다:"
-#: index.docbook:738
+#. Tag: programlisting
+#: collection_mapping.xml:738
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Parent\">\n"
- " <id name=\"id\" column=\"parent_id\"/>\n"
- " ....\n"
- " <map name=\"children\">\n"
- " <key column=\"parent_id\"\n"
- " not-null=\"true\"/>\n"
- " <map-key column=\"name\" \n"
- " type=\"string\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </map>\n"
- "</class>\n"
- "\n"
- "<class name=\"Child\">\n"
- " <id name=\"id\" column=\"child_id\"/>\n"
- " ....\n"
- " <many-to-one name=\"parent\" \n"
- " class=\"Parent\" \n"
- " column=\"parent_id\"\n"
- " insert=\"false\"\n"
- " update=\"false\"\n"
- " not-null=\"true\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Parent\">\n"
+" <id name=\"id\" column=\"parent_id\"/>\n"
+" ....\n"
+" <map name=\"children\">\n"
+" <key column=\"parent_id\"\n"
+" not-null=\"true\"/>\n"
+" <map-key column=\"name\" \n"
+" type=\"string\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+" </map>\n"
+"</class>\n"
+"\n"
+"<class name=\"Child\">\n"
+" <id name=\"id\" column=\"child_id\"/>\n"
+" ....\n"
+" <many-to-one name=\"parent\" \n"
+" class=\"Parent\" \n"
+" column=\"parent_id\"\n"
+" insert=\"false\"\n"
+" update=\"false\"\n"
+" not-null=\"true\"/>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Parent\">\n"
- " <id name=\"id\" column=\"parent_id\"/>\n"
- " ....\n"
- " <map name=\"children\">\n"
- " <key column=\"parent_id\"\n"
- " not-null=\"true\"/>\n"
- " <map-key column=\"name\" \n"
- " type=\"string\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </map>\n"
- "</class>\n"
- "\n"
- "<class name=\"Child\">\n"
- " <id name=\"id\" column=\"child_id\"/>\n"
- " ....\n"
- " <many-to-one name=\"parent\" \n"
- " class=\"Parent\" \n"
- " column=\"parent_id\"\n"
- " insert=\"false\"\n"
- " update=\"false\"\n"
- " not-null=\"true\"/>\n"
- "</class>]]>"
-#: index.docbook:740
-msgid "Note that in this mapping, the collection-valued end of the association is responsible for updates to the foreign key. TODO: Does this really result in some unnecessary update statements?"
-msgstr "이 매핑에서 그 연관의 콜렉션 값을 가진 끝이 foreign 키에 대한 업데이트 책임이 있음을 노트하라."
+#. Tag: para
+#: collection_mapping.xml:740
+#, no-c-format
+msgid ""
+"Note that in this mapping, the collection-valued end of the association is "
+"responsible for updates to the foreign key. TODO: Does this really result in "
+"some unnecessary update statements?"
+msgstr ""
+"이 매핑에서 그 연관의 콜렉션 값을 가진 끝이 foreign 키에 대한 업데이트 책임"
+"이 있음을 노트하라."
-#: index.docbook:748
+#. Tag: title
+#: collection_mapping.xml:748
+#, no-c-format
msgid "Ternary associations"
msgstr "Ternary associations(세겹 연관들)"
-#: index.docbook:750
-msgid "There are three possible approaches to mapping a ternary association. One is to use a <literal>Map</literal> with an association as its index:"
-msgstr "세 겹의 연관을 매핑하는 세 가지 가능한 접근법들이 존재한다. 하나의 접근법은 그것의 인덱스로서 연관관계를 가진 <literal>Map</literal>을 사용하는 것이다:"
+#. Tag: para
+#: collection_mapping.xml:750
+#, no-c-format
+msgid ""
+"There are three possible approaches to mapping a ternary association. One is "
+"to use a <literal>Map</literal> with an association as its index:"
+msgstr ""
+"세 겹의 연관을 매핑하는 세 가지 가능한 접근법들이 존재한다. 하나의 접근법은 "
+"그것의 인덱스로서 연관관계를 가진 <literal>Map</literal>을 사용하는 것이다:"
-#: index.docbook:755
+#. Tag: programlisting
+#: collection_mapping.xml:755
+#, no-c-format
msgid ""
- "<![CDATA[<map name=\"contracts\">\n"
- " <key column=\"employer_id\" not-null=\"true\"/>\n"
- " <map-key-many-to-many column=\"employee_id\" class=\"Employee\"/>\n"
- " <one-to-many class=\"Contract\"/>\n"
- "</map>]]>"
+"<![CDATA[<map name=\"contracts\">\n"
+" <key column=\"employer_id\" not-null=\"true\"/>\n"
+" <map-key-many-to-many column=\"employee_id\" class=\"Employee\"/>\n"
+" <one-to-many class=\"Contract\"/>\n"
+"</map>]]>"
msgstr ""
- "<![CDATA[<map name=\"contracts\">\n"
- " <key column=\"employer_id\" not-null=\"true\"/>\n"
- " <map-key-many-to-many column=\"employee_id\" class=\"Employee\"/>\n"
- " <one-to-many class=\"Contract\"/>\n"
- "</map>]]>"
-#: index.docbook:757
+#. Tag: programlisting
+#: collection_mapping.xml:757
+#, no-c-format
msgid ""
- "<![CDATA[<map name=\"connections\">\n"
- " <key column=\"incoming_node_id\"/>\n"
- " <map-key-many-to-many column=\"outgoing_node_id\" class=\"Node\"/>\n"
- " <many-to-many column=\"connection_id\" class=\"Connection\"/>\n"
- "</map>]]>"
+"<![CDATA[<map name=\"connections\">\n"
+" <key column=\"incoming_node_id\"/>\n"
+" <map-key-many-to-many column=\"outgoing_node_id\" class=\"Node\"/>\n"
+" <many-to-many column=\"connection_id\" class=\"Connection\"/>\n"
+"</map>]]>"
msgstr ""
- "<![CDATA[<map name=\"connections\">\n"
- " <key column=\"incoming_node_id\"/>\n"
- " <map-key-many-to-many column=\"outgoing_node_id\" class=\"Node\"/>\n"
- " <many-to-many column=\"connection_id\" class=\"Connection\"/>\n"
- "</map>]]>"
-#: index.docbook:759
-msgid "A second approach is to simply remodel the association as an entity class. This is the approach we use most commonly."
-msgstr "두 번째 접근법은 그 연관을 엔티티 클래스로서 단순하게 리모델링 하는 것이다. 이것은 우리가 가장 공통적으로 사용하는 접근법이다."
+#. Tag: para
+#: collection_mapping.xml:759
+#, no-c-format
+msgid ""
+"A second approach is to simply remodel the association as an entity class. "
+"This is the approach we use most commonly."
+msgstr ""
+"두 번째 접근법은 그 연관을 엔티티 클래스로서 단순하게 리모델링 하는 것이다. "
+"이것은 우리가 가장 공통적으로 사용하는 접근법이다."
-#: index.docbook:764
-msgid "A final alternative is to use composite elements, which we will discuss later."
-msgstr "마지막 대안은 우리가 나중에 논의하게 될 composite 요소들을 사용하는 것이다."
+#. Tag: para
+#: collection_mapping.xml:764
+#, no-c-format
+msgid ""
+"A final alternative is to use composite elements, which we will discuss "
+"later."
+msgstr ""
+"마지막 대안은 우리가 나중에 논의하게 될 composite 요소들을 사용하는 것이다."
-#: index.docbook:771
+#. Tag: literal
+#: collection_mapping.xml:771
+#, no-c-format
msgid "Using an <idbag>"
msgstr "<literal><idbag></literal> 사용하기"
-#: index.docbook:773
-msgid "If you've fully embraced our view that composite keys are a bad thing and that entities should have synthetic identifiers (surrogate keys), then you might find it a bit odd that the many to many associations and collections of values that we've shown so far all map to tables with composite keys! Now, this point is quite arguable; a pure association table doesn't seem to benefit much from a surrogate key (though a collection of composite values <emphasis>might</emphasis>). Nevertheless, Hibernate provides a feature that allows you to map many to many associations and collections of values to a table with a surrogate key."
-msgstr "만일 당신이 composite 키들이 나쁜 것이고 엔티티들이 합성 식별자들(대용 키들, surrogate keys)을 가져야 한다는 우리의 견해를 전적으로 수용할 경우, 당신은 우리가 지금까지 보여주었던 값들을 가진 콜렉션들과 many to many 연관들이 모두 composite 키들을 가진 테이블들로 매핑된다는 약간 이상한 점을 발견할 수도 있다! 이제 이 점은 꽤 논의의 여지가 있다; 순수한 연관 테이블은 (비록 composite 값들을 가진 콜렉션<emphasis>일 수도</emphasis> 있을지라도) 대용 키로부터 많은 이점을 취하지 않는 것처럼 보인다. 그럼에도 불구하고 Hibernate는 당신이 값들을 가진 콜렉션들과 many to many 연관들을 대용 키를 가진 테이블로 매핑시키는 것을 당신에게 허용해주는 특징을 제공한다."
+#. Tag: para
+#: collection_mapping.xml:773
+#, no-c-format
+msgid ""
+"If you've fully embraced our view that composite keys are a bad thing and "
+"that entities should have synthetic identifiers (surrogate keys), then you "
+"might find it a bit odd that the many to many associations and collections "
+"of values that we've shown so far all map to tables with composite keys! "
+"Now, this point is quite arguable; a pure association table doesn't seem to "
+"benefit much from a surrogate key (though a collection of composite values "
+"<emphasis>might</emphasis>). Nevertheless, Hibernate provides a feature that "
+"allows you to map many to many associations and collections of values to a "
+"table with a surrogate key."
+msgstr ""
+"만일 당신이 composite 키들이 나쁜 것이고 엔티티들이 합성 식별자들(대용 키들, "
+"surrogate keys)을 가져야 한다는 우리의 견해를 전적으로 수용할 경우, 당신은 우"
+"리가 지금까지 보여주었던 값들을 가진 콜렉션들과 many to many 연관들이 모두 "
+"composite 키들을 가진 테이블들로 매핑된다는 약간 이상한 점을 발견할 수도 있"
+"다! 이제 이 점은 꽤 논의의 여지가 있다; 순수한 연관 테이블은 (비록 composite "
+"값들을 가진 콜렉션<emphasis>일 수도</emphasis> 있을지라도) 대용 키로부터 많"
+"은 이점을 취하지 않는 것처럼 보인다. 그럼에도 불구하고 Hibernate는 당신이 값"
+"들을 가진 콜렉션들과 many to many 연관들을 대용 키를 가진 테이블로 매핑시키"
+"는 것을 당신에게 허용해주는 특징을 제공한다."
-#: index.docbook:784
-msgid "The <literal><idbag></literal> element lets you map a <literal>List</literal> (or <literal>Collection</literal>) with bag semantics."
-msgstr "<literal><idbag></literal> 요소는 bag 의미를 가진 <literal>List</literal>(또는 <literal>Collection</literal>)을 매핑하도록 당신에게 허용해준다."
+#. Tag: para
+#: collection_mapping.xml:784
+#, no-c-format
+msgid ""
+"The <literal><idbag></literal> element lets you map a <literal>List</"
+"literal> (or <literal>Collection</literal>) with bag semantics."
+msgstr ""
+"<literal><idbag></literal> 요소는 bag 의미를 가진 <literal>List</"
+"literal>(또는 <literal>Collection</literal>)을 매핑하도록 당신에게 허용해준"
+"다."
-#: index.docbook:789
+#. Tag: programlisting
+#: collection_mapping.xml:789
+#, no-c-format
msgid ""
- "<![CDATA[<idbag name=\"lovers\" table=\"LOVERS\">\n"
- " <collection-id column=\"ID\" type=\"long\">\n"
- " <generator class=\"sequence\"/>\n"
- " </collection-id>\n"
- " <key column=\"PERSON1\"/>\n"
- " <many-to-many column=\"PERSON2\" class=\"Person\" fetch=\"join\"/>\n"
- "</idbag>]]>"
+"<![CDATA[<idbag name=\"lovers\" table=\"LOVERS\">\n"
+" <collection-id column=\"ID\" type=\"long\">\n"
+" <generator class=\"sequence\"/>\n"
+" </collection-id>\n"
+" <key column=\"PERSON1\"/>\n"
+" <many-to-many column=\"PERSON2\" class=\"Person\" fetch=\"join\"/>\n"
+"</idbag>]]>"
msgstr ""
- "<![CDATA[<idbag name=\"lovers\" table=\"LOVERS\">\n"
- " <collection-id column=\"ID\" type=\"long\">\n"
- " <generator class=\"sequence\"/>\n"
- " </collection-id>\n"
- " <key column=\"PERSON1\"/>\n"
- " <many-to-many column=\"PERSON2\" class=\"Person\" fetch=\"join\"/>\n"
- "</idbag>]]>"
-#: index.docbook:791
-msgid "As you can see, an <literal><idbag></literal> has a synthetic id generator, just like an entity class! A different surrogate key is assigned to each collection row. Hibernate does not provide any mechanism to discover the surrogate key value of a particular row, however."
-msgstr "당신이 볼 수 있듯이, <literal><idbag></literal>은 마치 엔티티 클래스인양 synthetic id generator(합성 id 생성기)를 갖는다! 다른 대용 키는 각각의 콜렉션 행에 할당된다. 하지만 Hibernate는 특정 행의 대용 키 값을 발견하는 메커니즘을 제공하지 않는다."
+#. Tag: para
+#: collection_mapping.xml:791
+#, no-c-format
+msgid ""
+"As you can see, an <literal><idbag></literal> has a synthetic id "
+"generator, just like an entity class! A different surrogate key is assigned "
+"to each collection row. Hibernate does not provide any mechanism to discover "
+"the surrogate key value of a particular row, however."
+msgstr ""
+"당신이 볼 수 있듯이, <literal><idbag></literal>은 마치 엔티티 클래스인"
+"양 synthetic id generator(합성 id 생성기)를 갖는다! 다른 대용 키는 각각의 콜"
+"렉션 행에 할당된다. 하지만 Hibernate는 특정 행의 대용 키 값을 발견하는 메커니"
+"즘을 제공하지 않는다."
-#: index.docbook:798
-msgid "Note that the update performance of an <literal><idbag></literal> is <emphasis>much</emphasis> better than a regular <literal><bag></literal>! Hibernate can locate individual rows efficiently and update or delete them individually, just like a list, map or set."
-msgstr "<literal><idbag></literal>의 업데이트 퍼포먼스는 정규 <literal><bag></literal> 보다 훨씬 좋다는 점을 노트하라! Hibernate는 마치 list, map, 또는 set인양, 개별 행들을 효율적으로 위치지울 수 있고 그것들을 개별적으로 업데이트 하거나 삭제시킬 수 있다."
+#. Tag: para
+#: collection_mapping.xml:798
+#, no-c-format
+msgid ""
+"Note that the update performance of an <literal><idbag></literal> is "
+"<emphasis>much</emphasis> better than a regular <literal><bag></"
+"literal>! Hibernate can locate individual rows efficiently and update or "
+"delete them individually, just like a list, map or set."
+msgstr ""
+"<literal><idbag></literal>의 업데이트 퍼포먼스는 정규 <literal><"
+"bag></literal> 보다 훨씬 좋다는 점을 노트하라! Hibernate는 마치 list, "
+"map, 또는 set인양, 개별 행들을 효율적으로 위치지울 수 있고 그것들을 개별적으"
+"로 업데이트 하거나 삭제시킬 수 있다."
-#: index.docbook:805
-msgid "In the current implementation, the <literal>native</literal> identifier generation strategy is not supported for <literal><idbag></literal> collection identifiers."
-msgstr "현재 구현에서, <literal>native</literal> 식별자 생성 방도는 <literal><idbag></literal> 콜렉션 식별자들에 대해 지원되지 않는다."
+#. Tag: para
+#: collection_mapping.xml:805
+#, no-c-format
+msgid ""
+"In the current implementation, the <literal>native</literal> identifier "
+"generation strategy is not supported for <literal><idbag></literal> "
+"collection identifiers."
+msgstr ""
+"현재 구현에서, <literal>native</literal> 식별자 생성 방도는 <literal><"
+"idbag></literal> 콜렉션 식별자들에 대해 지원되지 않는다."
-#: index.docbook:829
+#. Tag: title
+#: collection_mapping.xml:829
+#, no-c-format
msgid "Collection examples"
msgstr "콜렉션 예제들"
-#: index.docbook:831
-msgid "The previous sections are pretty confusing. So lets look at an example. This class:"
+#. Tag: para
+#: collection_mapping.xml:831
+#, no-c-format
+msgid ""
+"The previous sections are pretty confusing. So lets look at an example. This "
+"class:"
msgstr "앞의 절들은 꽤 혼동스럽다. 따라서 예제를 살펴보자. 다음 클래스:"
-#: index.docbook:836
+#. Tag: programlisting
+#: collection_mapping.xml:836
+#, no-c-format
msgid ""
- "<![CDATA[package eg;\n"
- "import java.util.Set;\n"
- "\n"
- "public class Parent {\n"
- " private long id;\n"
- " private Set children;\n"
- "\n"
- " public long getId() { return id; }\n"
- " private void setId(long id) { this.id=id; }\n"
- "\n"
- " private Set getChildren() { return children; }\n"
- " private void setChildren(Set children) { this.children=children; }\n"
- "\n"
- " ....\n"
- " ....\n"
- "}]]>"
+"<![CDATA[package eg;\n"
+"import java.util.Set;\n"
+"\n"
+"public class Parent {\n"
+" private long id;\n"
+" private Set children;\n"
+"\n"
+" public long getId() { return id; }\n"
+" private void setId(long id) { this.id=id; }\n"
+"\n"
+" private Set getChildren() { return children; }\n"
+" private void setChildren(Set children) { this.children=children; }\n"
+"\n"
+" ....\n"
+" ....\n"
+"}]]>"
msgstr ""
- "<![CDATA[package eg;\n"
- "import java.util.Set;\n"
- "\n"
- "public class Parent {\n"
- " private long id;\n"
- " private Set children;\n"
- "\n"
- " public long getId() { return id; }\n"
- " private void setId(long id) { this.id=id; }\n"
- "\n"
- " private Set getChildren() { return children; }\n"
- " private void setChildren(Set children) { this.children=children; }\n"
- "\n"
- " ....\n"
- " ....\n"
- "}]]>"
-#: index.docbook:838
-msgid "has a collection of <literal>Child</literal> instances. If each child has at most one parent, the most natural mapping is a one-to-many association:"
-msgstr "는 <literal>Child</literal> 인스턴스들을 가진 하나의 콜렉션을 갖고 있다. 만일 각각의 자식이 최소한 한 개의 부모를 가질 경우, 대부분의 고유한 매핑은 one-to-many 연관이다:"
+#. Tag: para
+#: collection_mapping.xml:838
+#, no-c-format
+msgid ""
+"has a collection of <literal>Child</literal> instances. If each child has at "
+"most one parent, the most natural mapping is a one-to-many association:"
+msgstr ""
+"는 <literal>Child</literal> 인스턴스들을 가진 하나의 콜렉션을 갖고 있다. 만"
+"일 각각의 자식이 최소한 한 개의 부모를 가질 경우, 대부분의 고유한 매핑은 one-"
+"to-many 연관이다:"
-#: index.docbook:844
+#. Tag: programlisting
+#: collection_mapping.xml:844
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Parent\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <set name=\"children\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Child\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"Parent\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <set name=\"children\">\n"
+" <key column=\"parent_id\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+" </set>\n"
+" </class>\n"
+"\n"
+" <class name=\"Child\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <property name=\"name\"/>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Parent\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <set name=\"children\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Child\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:846
+#. Tag: para
+#: collection_mapping.xml:846
+#, no-c-format
msgid "This maps to the following table definitions:"
msgstr "이것은 다음 테이블 정의들로 매핑된다:"
-#: index.docbook:850
+#. Tag: programlisting
+#: collection_mapping.xml:850
+#, no-c-format
msgid ""
- "<![CDATA[create table parent ( id bigint not null primary key )\n"
- "create table child ( id bigint not null primary key, name varchar(255), parent_id bigint )\n"
- "alter table child add constraint childfk0 (parent_id) references parent]]>"
+"<![CDATA[create table parent ( id bigint not null primary key )\n"
+"create table child ( id bigint not null primary key, name varchar(255), "
+"parent_id bigint )\n"
+"alter table child add constraint childfk0 (parent_id) references parent]]>"
msgstr ""
- "<![CDATA[create table parent ( id bigint not null primary key )\n"
- "create table child ( id bigint not null primary key, name varchar(255), parent_id bigint )\n"
- "alter table child add constraint childfk0 (parent_id) references parent]]>"
-#: index.docbook:852
-msgid "If the parent is <emphasis>required</emphasis>, use a bidirectional one-to-many association:"
-msgstr "만일 부모가 <emphasis>필수적</emphasis>이라면, 양방향 one-to-many 연관관계를 사용하라:"
+#. Tag: para
+#: collection_mapping.xml:852
+#, no-c-format
+msgid ""
+"If the parent is <emphasis>required</emphasis>, use a bidirectional one-to-"
+"many association:"
+msgstr ""
+"만일 부모가 <emphasis>필수적</emphasis>이라면, 양방향 one-to-many 연관관계를 "
+"사용하라:"
-#: index.docbook:857
+#. Tag: programlisting
+#: collection_mapping.xml:857
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Parent\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <set name=\"children\" inverse=\"true\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Child\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " <many-to-one name=\"parent\" class=\"Parent\" column=\"parent_id\" not-null=\"true\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"Parent\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <set name=\"children\" inverse=\"true\">\n"
+" <key column=\"parent_id\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+" </set>\n"
+" </class>\n"
+"\n"
+" <class name=\"Child\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <property name=\"name\"/>\n"
+" <many-to-one name=\"parent\" class=\"Parent\" column=\"parent_id\" "
+"not-null=\"true\"/>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Parent\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <set name=\"children\" inverse=\"true\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Child\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " <many-to-one name=\"parent\" class=\"Parent\" column=\"parent_id\" not-null=\"true\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:859
+#. Tag: para
+#: collection_mapping.xml:859
+#, no-c-format
msgid "Notice the <literal>NOT NULL</literal> constraint:"
msgstr "<literal>NOT NULL</literal> 컨스트레인트를 주목하라:"
-#: index.docbook:863
+#. Tag: programlisting
+#: collection_mapping.xml:863
+#, no-c-format
msgid ""
- "<![CDATA[create table parent ( id bigint not null primary key )\n"
- "create table child ( id bigint not null\n"
- " primary key,\n"
- " name varchar(255),\n"
- " parent_id bigint not null )\n"
- "alter table child add constraint childfk0 (parent_id) references parent]]>"
+"<![CDATA[create table parent ( id bigint not null primary key )\n"
+"create table child ( id bigint not null\n"
+" primary key,\n"
+" name varchar(255),\n"
+" parent_id bigint not null )\n"
+"alter table child add constraint childfk0 (parent_id) references parent]]>"
msgstr ""
- "<![CDATA[create table parent ( id bigint not null primary key )\n"
- "create table child ( id bigint not null\n"
- " primary key,\n"
- " name varchar(255),\n"
- " parent_id bigint not null )\n"
- "alter table child add constraint childfk0 (parent_id) references parent]]>"
-#: index.docbook:865
-msgid "Alternatively, if you absolutely insist that this association should be unidirectional, you can declare the <literal>NOT NULL</literal> constraint on the <literal><key></literal> mapping:"
-msgstr "대안적으로, 만일 당신이 이 연관관계가 단방향이어야 함을 절대적으로 역설할 경우, 당신은 <literal><key></literal> 매핑 상에 <literal>NOT NULL</literal> 컨스트레인트를 선언할 수 있다:"
+#. Tag: para
+#: collection_mapping.xml:865
+#, no-c-format
+msgid ""
+"Alternatively, if you absolutely insist that this association should be "
+"unidirectional, you can declare the <literal>NOT NULL</literal> constraint "
+"on the <literal><key></literal> mapping:"
+msgstr ""
+"대안적으로, 만일 당신이 이 연관관계가 단방향이어야 함을 절대적으로 역설할 경"
+"우, 당신은 <literal><key></literal> 매핑 상에 <literal>NOT NULL</"
+"literal> 컨스트레인트를 선언할 수 있다:"
-#: index.docbook:871
+#. Tag: programlisting
+#: collection_mapping.xml:871
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Parent\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <set name=\"children\">\n"
- " <key column=\"parent_id\" not-null=\"true\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Child\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"Parent\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <set name=\"children\">\n"
+" <key column=\"parent_id\" not-null=\"true\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+" </set>\n"
+" </class>\n"
+"\n"
+" <class name=\"Child\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <property name=\"name\"/>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Parent\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <set name=\"children\">\n"
- " <key column=\"parent_id\" not-null=\"true\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Child\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:873
-msgid "On the other hand, if a child might have multiple parents, a many-to-many association is appropriate:"
-msgstr "반면에, 만일 자식이 여러 부모들을 가질 수 있을 경우, many-to-many 연관이 적절하다:"
+#. Tag: para
+#: collection_mapping.xml:873
+#, no-c-format
+msgid ""
+"On the other hand, if a child might have multiple parents, a many-to-many "
+"association is appropriate:"
+msgstr ""
+"반면에, 만일 자식이 여러 부모들을 가질 수 있을 경우, many-to-many 연관이 적절"
+"하다:"
-#: index.docbook:878
+#. Tag: programlisting
+#: collection_mapping.xml:878
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Parent\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <set name=\"children\" table=\"childset\">\n"
- " <key column=\"parent_id\"/>\n"
- " <many-to-many class=\"Child\" column=\"child_id\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Child\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"Parent\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <set name=\"children\" table=\"childset\">\n"
+" <key column=\"parent_id\"/>\n"
+" <many-to-many class=\"Child\" column=\"child_id\"/>\n"
+" </set>\n"
+" </class>\n"
+"\n"
+" <class name=\"Child\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <property name=\"name\"/>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Parent\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <set name=\"children\" table=\"childset\">\n"
- " <key column=\"parent_id\"/>\n"
- " <many-to-many class=\"Child\" column=\"child_id\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Child\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:880
+#. Tag: para
+#: collection_mapping.xml:880
+#, no-c-format
msgid "Table definitions:"
msgstr "테이블 정의들:"
-#: index.docbook:884
+#. Tag: programlisting
+#: collection_mapping.xml:884
+#, no-c-format
msgid ""
- "<![CDATA[create table parent ( id bigint not null primary key )\n"
- "create table child ( id bigint not null primary key, name varchar(255) )\n"
- "create table childset ( parent_id bigint not null,\n"
- " child_id bigint not null,\n"
- " primary key ( parent_id, child_id ) )\n"
- "alter table childset add constraint childsetfk0 (parent_id) references parent\n"
- "alter table childset add constraint childsetfk1 (child_id) references child]]>"
+"<![CDATA[create table parent ( id bigint not null primary key )\n"
+"create table child ( id bigint not null primary key, name varchar(255) )\n"
+"create table childset ( parent_id bigint not null,\n"
+" child_id bigint not null,\n"
+" primary key ( parent_id, child_id ) )\n"
+"alter table childset add constraint childsetfk0 (parent_id) references "
+"parent\n"
+"alter table childset add constraint childsetfk1 (child_id) references child]]"
+">"
msgstr ""
- "<![CDATA[create table parent ( id bigint not null primary key )\n"
- "create table child ( id bigint not null primary key, name varchar(255) )\n"
- "create table childset ( parent_id bigint not null,\n"
- " child_id bigint not null,\n"
- " primary key ( parent_id, child_id ) )\n"
- "alter table childset add constraint childsetfk0 (parent_id) references parent\n"
- "alter table childset add constraint childsetfk1 (child_id) references child]]>"
-#: index.docbook:886
-msgid "For more examples and a complete walk-through a parent/child relationship mapping, see <xref linkend=\"example-parentchild\"/>."
-msgstr "부모/자식 관계 매핑을 연습하는 더 많은 예제들과 전체 리허설은 <xref linkend=\"example-parentchild\"/>를 보라."
+#. Tag: para
+#: collection_mapping.xml:886
+#, no-c-format
+msgid ""
+"For more examples and a complete walk-through a parent/child relationship "
+"mapping, see <xref linkend=\"example-parentchild\"/>."
+msgstr ""
+"부모/자식 관계 매핑을 연습하는 더 많은 예제들과 전체 리허설은 <xref linkend="
+"\"example-parentchild\"/>를 보라."
-#: index.docbook:891
-msgid "Even more exotic association mappings are possible, we will catalog all possibilities in the next chapter."
-msgstr "비록 더 많은 신종 연관 매핑들이 가능할지라도, 우리는 다음 장에서 모든 가능성들을 분류할 것이다."
+#. Tag: para
+#: collection_mapping.xml:891
+#, no-c-format
+msgid ""
+"Even more exotic association mappings are possible, we will catalog all "
+"possibilities in the next chapter."
+msgstr ""
+"비록 더 많은 신종 연관 매핑들이 가능할지라도, 우리는 다음 장에서 모든 가능성"
+"들을 분류할 것이다."
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+#~ msgid ""
+#~ "<literal>column_name</literal> (required): The name of the column holding "
+#~ "the collection index values."
+#~ msgstr ""
+#~ "<literal>column_name</literal> (필수): 콜렉션 인덱스 값들을 보관하는 컬럼"
+#~ "의 이름."
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+#~ msgid ""
+#~ "<literal>base</literal> (optional, defaults to <literal>0</literal>): The "
+#~ "value of the index column that corresponds to the first element of the "
+#~ "list or array."
+#~ msgstr ""
+#~ "<literal>base</literal> (옵션, 디폴트는 <literal>0</literal>): 리스트 또"
+#~ "는 배열의 첫 번째 요소에 대응하는 인덱스 컬럼의 값."
+#~ msgid ""
+#~ "<literal>column</literal> (optional): The name of the column holding the "
+#~ "collection index values."
+#~ msgstr ""
+#~ "<literal>column</literal> (옵션): 콜렉션 인덱스 값들을 보관하는 컬럼의 이"
+#~ "름."
+
+#~ msgid ""
+#~ "<literal>formula</literal> (optional): A SQL formula used to evaluate the "
+#~ "key of the map."
+#~ msgstr ""
+#~ "<literal>formula</literal> (옵션): map의 키를 평가하는데 사용되는 SQL "
+#~ "formula."
+
+#~ msgid "<literal>type</literal> (reguired): The type of the map keys."
+#~ msgstr "<literal>type</literal> (필수): The type of the map 키들의 타입"
+
+#~ msgid ""
+#~ "<literal>column</literal> (optional): The name of the foreign key column "
+#~ "for the collection index values."
+#~ msgstr ""
+#~ "<literal>column</literal> (옵션): 콜렉션 인덱스 값들에 대한 foreign 키 컬"
+#~ "럼의 이름."
+
+#~ msgid ""
+#~ "<literal>formula</literal> (optional): A SQL formula used to evaluate the "
+#~ "foreign key of the map key."
+#~ msgstr ""
+#~ "<literal>formula</literal> (옵션): map의 foreign 키를 평가하는데 사용되는 "
+#~ "SQL formula."
+
+#~ msgid ""
+#~ "<literal>class</literal> (required): The entity class used as the map key."
+#~ msgstr "<literal>class</literal> (필수): map 키로서 사용되는 엔티티 클래스."
+
+#~ msgid ""
+#~ "<literal>column</literal> (optional): The name of the column holding the "
+#~ "collection element values."
+#~ msgstr ""
+#~ "<literal>column</literal> (옵션): 콜렉션 요소 값들을 소유하는 컬럼의 이름."
+
+#~ msgid ""
+#~ "<literal>formula</literal> (optional): An SQL formula used to evaluate "
+#~ "the element."
+#~ msgstr ""
+#~ "<literal>formula</literal> (옵션): 요소를 평가하는데 사용되는 SQL formula."
+
+#~ msgid ""
+#~ "<literal>type</literal> (required): The type of the collection element."
+#~ msgstr "<literal>type</literal> (필수): 콜렉션 요소의 타입."
+
+#~ msgid ""
+#~ "A <emphasis>many-to-many association</emphasis> is specified using the "
+#~ "<literal><many-to-many></literal> element."
+#~ msgstr ""
+#~ "<emphasis>many-to-many association</emphasis> 연관은 <literal><many-to-"
+#~ "many></literal> 요소를 사용하여 지정된다."
+
+#~ msgid ""
+#~ "<literal>column</literal> (optional): The name of the element foreign key "
+#~ "column."
+#~ msgstr "<literal>column</literal> (옵션): 요소 foreign 키 컬럼의 이름."
+
+#~ msgid ""
+#~ "<literal>formula</literal> (optional): An SQL formula used to evaluate "
+#~ "the element foreign key value."
+#~ msgstr ""
+#~ "<literal>formula</literal> (옵션): 요소 foreign 키 값을 평가하는데 사용되"
+#~ "는 SQL formula."
+
+#~ msgid ""
+#~ "<literal>fetch</literal> (optional - defaults to <literal>join</"
+#~ "literal>): enables outer-join or sequential select fetching for this "
+#~ "association. This is a special case; for full eager fetching (in a single "
+#~ "<literal>SELECT</literal>) of an entity and its many-to-many "
+#~ "relationships to other entities, you would enable <literal>join</literal> "
+#~ "fetching not only of the collection itself, but also with this attribute "
+#~ "on the <literal><many-to-many></literal> nested element."
+#~ msgstr ""
+#~ "<literal>fetch</literal> (옵션 - 디폴트는 <literal>join</literal>): 이 연"
+#~ "관에 대해 outer-join 페칭 또는 sequential select 페칭을 이용 가능하게 만든"
+#~ "다. 이것은 특별한 경우이다; 엔티티 그리고 다른 엔티티들과 그것의 many-to-"
+#~ "many 관계들에 대한 (하나의 <literal>SELECT</literal> 내에서) 전체 eager 페"
+#~ "칭의 경우, 당신은 콜렉션 그 자체에 대해서 뿐만 아니라 내포된 요소 "
+#~ "<literal><many-to-many></literal> 상의 이 속성에 대해 "
+#~ "<literal>join</literal> 페칭을 이용 가능하게 할 것이다."
+
+#~ msgid ""
+#~ "<literal>unique</literal> (optional): Enable the DDL generation of a "
+#~ "unique constraint for the foreign-key column. This makes the association "
+#~ "multiplicity effectively one to many."
+#~ msgstr ""
+#~ "<literal>unique</literal> (옵션): foreign-key 컬럼에 대한 유일 컨스트레인"
+#~ "트의 DDL 생성을 가능하도록 한다. 이것은 연관 다중성 (association "
+#~ "multiplicity)을 효율적으로 one to many로 만든다."
+
+#~ msgid ""
+#~ "<literal>not-found</literal> (optional - defaults to <literal>exception</"
+#~ "literal>): Specifies how foreign keys that reference missing rows will be "
+#~ "handled: <literal>ignore</literal> will treat a missing row as a null "
+#~ "association."
+#~ msgstr ""
+#~ "<literal>not-found</literal> (옵션 - 디폴트는 <literal>exception</"
+#~ "literal>): 누락된 행들을 참조하는 foreign 키들이 어떻게 처리될 것인지를 지"
+#~ "정한다: <literal>ignore</literal>는 누락된 한 행을 한 개의 연관으로 다룰 "
+#~ "것이다."
+
+#~ msgid ""
+#~ "<literal>property-ref</literal>: (optional) The name of a property of the "
+#~ "associated class that is joined to this foreign key. If not specified, "
+#~ "the primary key of the associated class is used."
+#~ msgstr ""
+#~ "<literal>property-ref</literal>: (옵션) 이 foreign 키에 조인된 연관 클래스"
+#~ "의 프로퍼티의 이름. 지정되지 않을 경우, 연관 클래스의 프라이머리 키가 사용"
+#~ "된다."
Modified: core/trunk/documentation/manual/translations/ko-KR/content/component_mapping.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/component_mapping.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/component_mapping.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,532 +1,676 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: component_mapping.xml:5
+#, no-c-format
msgid "Component Mapping"
msgstr "Component 매핑"
-#: index.docbook:7
-msgid "The notion of a <emphasis>component</emphasis> is re-used in several different contexts, for different purposes, throughout Hibernate."
-msgstr "<emphasis>component</emphasis>의 개념은 Hibernate에서 다른 용도로 몇몇 다른 컨텍스트들 내에서 재사용된다."
+#. Tag: para
+#: component_mapping.xml:7
+#, no-c-format
+msgid ""
+"The notion of a <emphasis>component</emphasis> is re-used in several "
+"different contexts, for different purposes, throughout Hibernate."
+msgstr ""
+"<emphasis>component</emphasis>의 개념은 Hibernate에서 다른 용도로 몇몇 다른 "
+"컨텍스트들 내에서 재사용된다."
-#: index.docbook:13
+#. Tag: title
+#: component_mapping.xml:13
+#, no-c-format
msgid "Dependent objects"
msgstr "종속 객체들"
-#: index.docbook:15
-msgid "A component is a contained object that is persisted as a value type, not an entity reference. The term \"component\" refers to the object-oriented notion of composition (not to architecture-level components). For example, you might model a person like this:"
-msgstr "하나의 컴포넌트는 엔티티 참조가 아닌, value 타입으로서 영속화 되는 하나의 포함된 객체이다. \"컴포넌트\" 용어는 (아키텍처 수준의 컴포넌트들이 아닌) composition(구성,합성)에 대한 객체-지향적인 개념을 언급한다. 예를 들어 당신은 다음과 같이 개인을 모형화 시킬 수도 있다:"
+#. Tag: para
+#: component_mapping.xml:15
+#, no-c-format
+msgid ""
+"A component is a contained object that is persisted as a value type, not an "
+"entity reference. The term \"component\" refers to the object-oriented "
+"notion of composition (not to architecture-level components). For example, "
+"you might model a person like this:"
+msgstr ""
+"하나의 컴포넌트는 엔티티 참조가 아닌, value 타입으로서 영속화 되는 하나의 포"
+"함된 객체이다. \"컴포넌트\" 용어는 (아키텍처 수준의 컴포넌트들이 아닌) "
+"composition(구성,합성)에 대한 객체-지향적인 개념을 언급한다. 예를 들어 당신"
+"은 다음과 같이 개인을 모형화 시킬 수도 있다:"
-#: index.docbook:21
+#. Tag: programlisting
+#: component_mapping.xml:21
+#, no-c-format
msgid ""
- "<![CDATA[public class Person {\n"
- " private java.util.Date birthday;\n"
- " private Name name;\n"
- " private String key;\n"
- " public String getKey() {\n"
- " return key;\n"
- " }\n"
- " private void setKey(String key) {\n"
- " this.key=key;\n"
- " }\n"
- " public java.util.Date getBirthday() {\n"
- " return birthday;\n"
- " }\n"
- " public void setBirthday(java.util.Date birthday) {\n"
- " this.birthday = birthday;\n"
- " }\n"
- " public Name getName() {\n"
- " return name;\n"
- " }\n"
- " public void setName(Name name) {\n"
- " this.name = name;\n"
- " }\n"
- " ......\n"
- " ......\n"
- "}]]>"
+"<![CDATA[public class Person {\n"
+" private java.util.Date birthday;\n"
+" private Name name;\n"
+" private String key;\n"
+" public String getKey() {\n"
+" return key;\n"
+" }\n"
+" private void setKey(String key) {\n"
+" this.key=key;\n"
+" }\n"
+" public java.util.Date getBirthday() {\n"
+" return birthday;\n"
+" }\n"
+" public void setBirthday(java.util.Date birthday) {\n"
+" this.birthday = birthday;\n"
+" }\n"
+" public Name getName() {\n"
+" return name;\n"
+" }\n"
+" public void setName(Name name) {\n"
+" this.name = name;\n"
+" }\n"
+" ......\n"
+" ......\n"
+"}]]>"
msgstr ""
- "<![CDATA[public class Person {\n"
- " private java.util.Date birthday;\n"
- " private Name name;\n"
- " private String key;\n"
- " public String getKey() {\n"
- " return key;\n"
- " }\n"
- " private void setKey(String key) {\n"
- " this.key=key;\n"
- " }\n"
- " public java.util.Date getBirthday() {\n"
- " return birthday;\n"
- " }\n"
- " public void setBirthday(java.util.Date birthday) {\n"
- " this.birthday = birthday;\n"
- " }\n"
- " public Name getName() {\n"
- " return name;\n"
- " }\n"
- " public void setName(Name name) {\n"
- " this.name = name;\n"
- " }\n"
- " ......\n"
- " ......\n"
- "}]]>"
-#: index.docbook:23
+#. Tag: programlisting
+#: component_mapping.xml:23
+#, no-c-format
msgid ""
- "<![CDATA[public class Name {\n"
- " char initial;\n"
- " String first;\n"
- " String last;\n"
- " public String getFirst() {\n"
- " return first;\n"
- " }\n"
- " void setFirst(String first) {\n"
- " this.first = first;\n"
- " }\n"
- " public String getLast() {\n"
- " return last;\n"
- " }\n"
- " void setLast(String last) {\n"
- " this.last = last;\n"
- " }\n"
- " public char getInitial() {\n"
- " return initial;\n"
- " }\n"
- " void setInitial(char initial) {\n"
- " this.initial = initial;\n"
- " }\n"
- "}]]>"
+"<![CDATA[public class Name {\n"
+" char initial;\n"
+" String first;\n"
+" String last;\n"
+" public String getFirst() {\n"
+" return first;\n"
+" }\n"
+" void setFirst(String first) {\n"
+" this.first = first;\n"
+" }\n"
+" public String getLast() {\n"
+" return last;\n"
+" }\n"
+" void setLast(String last) {\n"
+" this.last = last;\n"
+" }\n"
+" public char getInitial() {\n"
+" return initial;\n"
+" }\n"
+" void setInitial(char initial) {\n"
+" this.initial = initial;\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[public class Name {\n"
- " char initial;\n"
- " String first;\n"
- " String last;\n"
- " public String getFirst() {\n"
- " return first;\n"
- " }\n"
- " void setFirst(String first) {\n"
- " this.first = first;\n"
- " }\n"
- " public String getLast() {\n"
- " return last;\n"
- " }\n"
- " void setLast(String last) {\n"
- " this.last = last;\n"
- " }\n"
- " public char getInitial() {\n"
- " return initial;\n"
- " }\n"
- " void setInitial(char initial) {\n"
- " this.initial = initial;\n"
- " }\n"
- "}]]>"
-#: index.docbook:25
-msgid "Now <literal>Name</literal> may be persisted as a component of <literal>Person</literal>. Notice that <literal>Name</literal> defines getter and setter methods for its persistent properties, but doesn't need to declare any interfaces or identifier properties."
-msgstr "이제 <literal>Name</literal>은 <literal>Person</literal>의 컴포넌트로서 영속화 될 수도 있다. <literal>Name</literal>이 그것의 영속 프로퍼티들에 대한 getter 메소드와 setter 메소드를 정의하지만, 어떤 인터페이스들이나 식별자 프로퍼티들을 선언하는 것을 필요로 하지 않음을 주목하라."
+#. Tag: para
+#: component_mapping.xml:25
+#, no-c-format
+msgid ""
+"Now <literal>Name</literal> may be persisted as a component of "
+"<literal>Person</literal>. Notice that <literal>Name</literal> defines "
+"getter and setter methods for its persistent properties, but doesn't need to "
+"declare any interfaces or identifier properties."
+msgstr ""
+"이제 <literal>Name</literal>은 <literal>Person</literal>의 컴포넌트로서 영속"
+"화 될 수도 있다. <literal>Name</literal>이 그것의 영속 프로퍼티들에 대한 "
+"getter 메소드와 setter 메소드를 정의하지만, 어떤 인터페이스들이나 식별자 프로"
+"퍼티들을 선언하는 것을 필요로 하지 않음을 주목하라."
-#: index.docbook:32
+#. Tag: para
+#: component_mapping.xml:32
+#, no-c-format
msgid "Our Hibernate mapping would look like:"
msgstr "우리의 Hibernate 매핑은 다음과 같을 것이다:"
-#: index.docbook:36
+#. Tag: programlisting
+#: component_mapping.xml:36
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
- " <id name=\"Key\" column=\"pid\" type=\"string\">\n"
- " <generator class=\"uuid\"/>\n"
- " </id>\n"
- " <property name=\"birthday\" type=\"date\"/>\n"
- " <component name=\"Name\" class=\"eg.Name\"> <!-- class attribute optional -->\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"first\"/>\n"
- " <property name=\"last\"/>\n"
- " </component>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
+" <id name=\"Key\" column=\"pid\" type=\"string\">\n"
+" <generator class=\"uuid\"/>\n"
+" </id>\n"
+" <property name=\"birthday\" type=\"date\"/>\n"
+" <component name=\"Name\" class=\"eg.Name\"> <!-- class attribute "
+"optional -->\n"
+" <property name=\"initial\"/>\n"
+" <property name=\"first\"/>\n"
+" <property name=\"last\"/>\n"
+" </component>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
- " <id name=\"Key\" column=\"pid\" type=\"string\">\n"
- " <generator class=\"uuid\"/>\n"
- " </id>\n"
- " <property name=\"birthday\" type=\"date\"/>\n"
- " <component name=\"Name\" class=\"eg.Name\"> <!-- class attribute optional -->\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"first\"/>\n"
- " <property name=\"last\"/>\n"
- " </component>\n"
- "</class>]]>"
-#: index.docbook:38
-msgid "The person table would have the columns <literal>pid</literal>, <literal>birthday</literal>, <literal>initial</literal>, <literal>first</literal> and <literal>last</literal>."
-msgstr "person 테이블은 <literal>pid</literal>, <literal>birthday</literal>, <literal>initial</literal>, <literal>first</literal>, <literal>last</literal> 컬럼들을 가질 것이다."
+#. Tag: para
+#: component_mapping.xml:38
+#, no-c-format
+msgid ""
+"The person table would have the columns <literal>pid</literal>, "
+"<literal>birthday</literal>, <literal>initial</literal>, <literal>first</"
+"literal> and <literal>last</literal>."
+msgstr ""
+"person 테이블은 <literal>pid</literal>, <literal>birthday</literal>, "
+"<literal>initial</literal>, <literal>first</literal>, <literal>last</"
+"literal> 컬럼들을 가질 것이다."
-#: index.docbook:46
-msgid "Like all value types, components do not support shared references. In other words, two persons could have the same name, but the two person objects would contain two independent name ojects, only \"the same\" by value. The null value semantics of a component are <emphasis>ad hoc</emphasis>. When reloading the containing object, Hibernate will assume that if all component columns are null, then the entire component is null. This should be okay for most purposes."
-msgstr "모든 값(value) 타입들처럼, 컴포넌트들은 공유된 참조들을 지원하지 않는다. 달리 말해, 두 명의 개인들은 동일한 이름을 가질 수 있지만, 두 개의 person 객체들은 오직 값 만이 \"동일한\" 두 개의 독립적인 name 객체들을 포함할 것이다. 컴포넌트의 null 값 의미는 <emphasis>특별한 용도를 위한 것이다</emphasis>. 포함된 객체를 다시 로드시킬 때, Hibernate는 모든 컴포넌트 컬럼들이 null일 경우에 전체 컴포넌트가 null이라고 가정할 것이다. 이것은 대부분의 용도에 맞을 것이다."
+#. Tag: para
+#: component_mapping.xml:46
+#, no-c-format
+msgid ""
+"Like all value types, components do not support shared references. In other "
+"words, two persons could have the same name, but the two person objects "
+"would contain two independent name ojects, only \"the same\" by value. The "
+"null value semantics of a component are <emphasis>ad hoc</emphasis>. When "
+"reloading the containing object, Hibernate will assume that if all component "
+"columns are null, then the entire component is null. This should be okay for "
+"most purposes."
+msgstr ""
+"모든 값(value) 타입들처럼, 컴포넌트들은 공유된 참조들을 지원하지 않는다. 달"
+"리 말해, 두 명의 개인들은 동일한 이름을 가질 수 있지만, 두 개의 person 객체들"
+"은 오직 값 만이 \"동일한\" 두 개의 독립적인 name 객체들을 포함할 것이다. 컴포"
+"넌트의 null 값 의미는 <emphasis>특별한 용도를 위한 것이다</emphasis>. 포함된 "
+"객체를 다시 로드시킬 때, Hibernate는 모든 컴포넌트 컬럼들이 null일 경우에 전"
+"체 컴포넌트가 null이라고 가정할 것이다. 이것은 대부분의 용도에 맞을 것이다."
-#: index.docbook:55
-msgid "The properties of a component may be of any Hibernate type (collections, many-to-one associations, other components, etc). Nested components should <emphasis>not</emphasis> be considered an exotic usage. Hibernate is intended to support a very fine-grained object model."
-msgstr "컴포넌트의 프로퍼티들은 임의의 Hibernate 타입일 수 있다(콜렉션들, many-to-one 연관들, 다른 컴포넌트들, 기타). 내포된 컴포넌트들은 신종의 사용례로 간주되지 <emphasis>않을</emphasis> 것이다. Hibernate는 매우 잘 정제된 객체 모형을 지원하도록 고안되어있다."
+#. Tag: para
+#: component_mapping.xml:55
+#, no-c-format
+msgid ""
+"The properties of a component may be of any Hibernate type (collections, "
+"many-to-one associations, other components, etc). Nested components should "
+"<emphasis>not</emphasis> be considered an exotic usage. Hibernate is "
+"intended to support a very fine-grained object model."
+msgstr ""
+"컴포넌트의 프로퍼티들은 임의의 Hibernate 타입일 수 있다(콜렉션들, many-to-"
+"one 연관들, 다른 컴포넌트들, 기타). 내포된 컴포넌트들은 신종의 사용례로 간주"
+"되지 <emphasis>않을</emphasis> 것이다. Hibernate는 매우 잘 정제된 객체 모형"
+"을 지원하도록 고안되어있다."
-#: index.docbook:62
-msgid "The <literal><component></literal> element allows a <literal><parent></literal> subelement that maps a property of the component class as a reference back to the containing entity."
-msgstr "<literal><component></literal> 요소는 컴포넌트 클래스의 프로퍼티를 포함되는 엔티티에 대한 역 참조로서 매핑시키는 <literal><parent></literal> 서브요소를 허용한다."
+#. Tag: para
+#: component_mapping.xml:62
+#, no-c-format
+msgid ""
+"The <literal><component></literal> element allows a <literal><"
+"parent></literal> subelement that maps a property of the component class "
+"as a reference back to the containing entity."
+msgstr ""
+"<literal><component></literal> 요소는 컴포넌트 클래스의 프로퍼티를 포함"
+"되는 엔티티에 대한 역 참조로서 매핑시키는 <literal><parent></literal> "
+"서브요소를 허용한다."
-#: index.docbook:68
+#. Tag: programlisting
+#: component_mapping.xml:68
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
- " <id name=\"Key\" column=\"pid\" type=\"string\">\n"
- " <generator class=\"uuid\"/>\n"
- " </id>\n"
- " <property name=\"birthday\" type=\"date\"/>\n"
- " <component name=\"Name\" class=\"eg.Name\" unique=\"true\">\n"
- " <parent name=\"namedPerson\"/> <!-- reference back to the Person -->\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"first\"/>\n"
- " <property name=\"last\"/>\n"
- " </component>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
+" <id name=\"Key\" column=\"pid\" type=\"string\">\n"
+" <generator class=\"uuid\"/>\n"
+" </id>\n"
+" <property name=\"birthday\" type=\"date\"/>\n"
+" <component name=\"Name\" class=\"eg.Name\" unique=\"true\">\n"
+" <parent name=\"namedPerson\"/> <!-- reference back to the Person --"
+">\n"
+" <property name=\"initial\"/>\n"
+" <property name=\"first\"/>\n"
+" <property name=\"last\"/>\n"
+" </component>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
- " <id name=\"Key\" column=\"pid\" type=\"string\">\n"
- " <generator class=\"uuid\"/>\n"
- " </id>\n"
- " <property name=\"birthday\" type=\"date\"/>\n"
- " <component name=\"Name\" class=\"eg.Name\" unique=\"true\">\n"
- " <parent name=\"namedPerson\"/> <!-- reference back to the Person -->\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"first\"/>\n"
- " <property name=\"last\"/>\n"
- " </component>\n"
- "</class>]]>"
-#: index.docbook:73
+#. Tag: title
+#: component_mapping.xml:73
+#, no-c-format
msgid "Collections of dependent objects"
msgstr "종속 객체들을 가진 콜렉션들"
-#: index.docbook:75
-msgid "Collections of components are supported (eg. an array of type <literal>Name</literal>). Declare your component collection by replacing the <literal><element></literal> tag with a <literal><composite-element></literal> tag."
-msgstr "컴포넌트들을 가진 콜렉션들이 지원된다(예를 들면 <literal>Name</literal> 타입을 가진 배열). <literal><element></literal> 태그를 <literal><composite-element></literal> 태그로 대체시켜서 당신의 컴포넌트 콜렉션을 선언하라."
+#. Tag: para
+#: component_mapping.xml:75
+#, no-c-format
+msgid ""
+"Collections of components are supported (eg. an array of type <literal>Name</"
+"literal>). Declare your component collection by replacing the <literal><"
+"element></literal> tag with a <literal><composite-element></"
+"literal> tag."
+msgstr ""
+"컴포넌트들을 가진 콜렉션들이 지원된다(예를 들면 <literal>Name</literal> 타입"
+"을 가진 배열). <literal><element></literal> 태그를 <literal><"
+"composite-element></literal> 태그로 대체시켜서 당신의 컴포넌트 콜렉션을 선"
+"언하라."
-#: index.docbook:82
+#. Tag: programlisting
+#: component_mapping.xml:82
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"someNames\" table=\"some_names\" lazy=\"true\">\n"
- " <key column=\"id\"/>\n"
- " <composite-element class=\"eg.Name\"> <!-- class attribute required -->\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"first\"/>\n"
- " <property name=\"last\"/>\n"
- " </composite-element>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"someNames\" table=\"some_names\" lazy=\"true\">\n"
+" <key column=\"id\"/>\n"
+" <composite-element class=\"eg.Name\"> <!-- class attribute required -->\n"
+" <property name=\"initial\"/>\n"
+" <property name=\"first\"/>\n"
+" <property name=\"last\"/>\n"
+" </composite-element>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"someNames\" table=\"some_names\" lazy=\"true\">\n"
- " <key column=\"id\"/>\n"
- " <composite-element class=\"eg.Name\"> <!-- class attribute required -->\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"first\"/>\n"
- " <property name=\"last\"/>\n"
- " </composite-element>\n"
- "</set>]]>"
-#: index.docbook:84
-msgid "Note: if you define a <literal>Set</literal> of composite elements, it is very important to implement <literal>equals()</literal> and <literal>hashCode()</literal> correctly."
-msgstr "노트: 만일 당신이 composite 요소를 가진 하나의 <literal>Set</literal>를 정의할 경우, <literal>equals()</literal>와 <literal>hashCode()</literal>를 정확하게 구현하는 것이 매우 중요하다."
+#. Tag: para
+#: component_mapping.xml:84
+#, no-c-format
+msgid ""
+"Note: if you define a <literal>Set</literal> of composite elements, it is "
+"very important to implement <literal>equals()</literal> and <literal>hashCode"
+"()</literal> correctly."
+msgstr ""
+"노트: 만일 당신이 composite 요소를 가진 하나의 <literal>Set</literal>를 정의"
+"할 경우, <literal>equals()</literal>와 <literal>hashCode()</literal>를 정확하"
+"게 구현하는 것이 매우 중요하다."
-#: index.docbook:90
-msgid "Composite elements may contain components but not collections. If your composite element itself contains components, use the <literal><nested-composite-element></literal> tag. This is a pretty exotic case - a collection of components which themselves have components. By this stage you should be asking yourself if a one-to-many association is more appropriate. Try remodelling the composite element as an entity - but note that even though the Java model is the same, the relational model and persistence semantics are still slightly different."
-msgstr "Composite 요소들은 컴포넌트들을 포함하지만 콜렉션들을 포함하지 않는다. 만일 당신의 composite 요소 자체가 컴포넌트들을 포함할 경우, <literal><nested-composite-element></literal> 태그를 사용하라. 이것은 꽤 신종의 경우-그것들 자체가 컴포넌트들을 갖고 있는 컴포넌트들의 콜렉션-이다. 이 단계에서 당신은 one-to-many 연관이 더 적절한지를 당신 스스로에게 질문하게 될 것이다. 하나의 엔티티로서 composite 요소를 다시 모델링하려고 시도하라 - 그러나 자바 모형들이 동일할지라도, 관계형 모형과 영속화 의미들은 여전히 약간 다르다."
+#. Tag: para
+#: component_mapping.xml:90
+#, no-c-format
+msgid ""
+"Composite elements may contain components but not collections. If your "
+"composite element itself contains components, use the <literal><nested-"
+"composite-element></literal> tag. This is a pretty exotic case - a "
+"collection of components which themselves have components. By this stage you "
+"should be asking yourself if a one-to-many association is more appropriate. "
+"Try remodelling the composite element as an entity - but note that even "
+"though the Java model is the same, the relational model and persistence "
+"semantics are still slightly different."
+msgstr ""
+"Composite 요소들은 컴포넌트들을 포함하지만 콜렉션들을 포함하지 않는다. 만일 "
+"당신의 composite 요소 자체가 컴포넌트들을 포함할 경우, <literal><nested-"
+"composite-element></literal> 태그를 사용하라. 이것은 꽤 신종의 경우-그것"
+"들 자체가 컴포넌트들을 갖고 있는 컴포넌트들의 콜렉션-이다. 이 단계에서 당신"
+"은 one-to-many 연관이 더 적절한지를 당신 스스로에게 질문하게 될 것이다. 하나"
+"의 엔티티로서 composite 요소를 다시 모델링하려고 시도하라 - 그러나 자바 모형"
+"들이 동일할지라도, 관계형 모형과 영속화 의미들은 여전히 약간 다르다."
-#: index.docbook:102
-msgid "Please note that a composite element mapping doesn't support null-able properties if you're using a <literal><set></literal>. Hibernate has to use each columns value to identify a record when deleting objects (there is no separate primary key column in the composite element table), which is not possible with null values. You have to either use only not-null properties in a composite-element or choose a <literal><list></literal>, <literal><map></literal>, <literal><bag></literal> or <literal><idbag></literal>."
-msgstr "당신이 하나의 <literal><set></literal>을 사용 중이라면, 하나의 composite 요소 매핑은 null 가능한 프로퍼티들을 지원하지 않음을 노트하길 바란다. Hibernate는 객체들을 삭제할 때 하나의 레코드를 식별하는데 각각의 컬럼들 값을 사용해야 하며 (composite 요소 테이블 내에 별도의 프라이머리 키 컬럼이 존재하지 않는다), 그것은 null 값들에 대해서는 불가능하다. 당신은 하나의 composite-요소 내에 not-null 프로퍼티들 만을 사용해야 하거나 하나의 <literal><list></literal>, <literal><map></literal>, <literal><bag></literal> 또는 <literal><idbag></literal>을 선택해야 한다."
+#. Tag: para
+#: component_mapping.xml:102
+#, no-c-format
+msgid ""
+"Please note that a composite element mapping doesn't support null-able "
+"properties if you're using a <literal><set></literal>. Hibernate has "
+"to use each columns value to identify a record when deleting objects (there "
+"is no separate primary key column in the composite element table), which is "
+"not possible with null values. You have to either use only not-null "
+"properties in a composite-element or choose a <literal><list></"
+"literal>, <literal><map></literal>, <literal><bag></literal> or "
+"<literal><idbag></literal>."
+msgstr ""
+"당신이 하나의 <literal><set></literal>을 사용 중이라면, 하나의 "
+"composite 요소 매핑은 null 가능한 프로퍼티들을 지원하지 않음을 노트하길 바란"
+"다. Hibernate는 객체들을 삭제할 때 하나의 레코드를 식별하는데 각각의 컬럼들 "
+"값을 사용해야 하며 (composite 요소 테이블 내에 별도의 프라이머리 키 컬럼이 존"
+"재하지 않는다), 그것은 null 값들에 대해서는 불가능하다. 당신은 하나의 "
+"composite-요소 내에 not-null 프로퍼티들 만을 사용해야 하거나 하나의 "
+"<literal><list></literal>, <literal><map></literal>, "
+"<literal><bag></literal> 또는 <literal><idbag></literal>을 선택해"
+"야 한다."
-#: index.docbook:113
-msgid "A special case of a composite element is a composite element with a nested <literal><many-to-one></literal> element. A mapping like this allows you to map extra columns of a many-to-many association table to the composite element class. The following is a many-to-many association from <literal>Order</literal> to <literal>Item</literal> where <literal>purchaseDate</literal>, <literal>price</literal> and <literal>quantity</literal> are properties of the association:"
-msgstr "composite 요소에 대한 하나의 특별한 경우는 내포된 <literal><many-to-one></literal> 요소를 가진 composite 요소이다. 이같은 매핑은 many-to-many 연관 테이블의 특별한 컬럼들을 composite 요소 클래스로 매핑시키는 것을 당신에게 허용해준다. 다음은 <literal>Order</literal>로부터 <literal>Item</literal>으로의 many-to-many 연관이다. 여기서 <literal>purchaseDate</literal>, <literal>price</literal>, 그리고 <literal>quantity</literal>는 연관의 프로퍼티들이다:"
+#. Tag: para
+#: component_mapping.xml:113
+#, no-c-format
+msgid ""
+"A special case of a composite element is a composite element with a nested "
+"<literal><many-to-one></literal> element. A mapping like this allows "
+"you to map extra columns of a many-to-many association table to the "
+"composite element class. The following is a many-to-many association from "
+"<literal>Order</literal> to <literal>Item</literal> where "
+"<literal>purchaseDate</literal>, <literal>price</literal> and "
+"<literal>quantity</literal> are properties of the association:"
+msgstr ""
+"composite 요소에 대한 하나의 특별한 경우는 내포된 <literal><many-to-"
+"one></literal> 요소를 가진 composite 요소이다. 이같은 매핑은 many-to-many "
+"연관 테이블의 특별한 컬럼들을 composite 요소 클래스로 매핑시키는 것을 당신에"
+"게 허용해준다. 다음은 <literal>Order</literal>로부터 <literal>Item</literal>"
+"으로의 many-to-many 연관이다. 여기서 <literal>purchaseDate</literal>, "
+"<literal>price</literal>, 그리고 <literal>quantity</literal>는 연관의 프로퍼"
+"티들이다:"
-#: index.docbook:123
+#. Tag: programlisting
+#: component_mapping.xml:123
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"eg.Order\" .... >\n"
- " ....\n"
- " <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
- " <key column=\"order_id\">\n"
- " <composite-element class=\"eg.Purchase\">\n"
- " <property name=\"purchaseDate\"/>\n"
- " <property name=\"price\"/>\n"
- " <property name=\"quantity\"/>\n"
- " <many-to-one name=\"item\" class=\"eg.Item\"/> <!-- class attribute is optional -->\n"
- " </composite-element>\n"
- " </set>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"eg.Order\" .... >\n"
+" ....\n"
+" <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
+" <key column=\"order_id\">\n"
+" <composite-element class=\"eg.Purchase\">\n"
+" <property name=\"purchaseDate\"/>\n"
+" <property name=\"price\"/>\n"
+" <property name=\"quantity\"/>\n"
+" <many-to-one name=\"item\" class=\"eg.Item\"/> <!-- class "
+"attribute is optional -->\n"
+" </composite-element>\n"
+" </set>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"eg.Order\" .... >\n"
- " ....\n"
- " <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
- " <key column=\"order_id\">\n"
- " <composite-element class=\"eg.Purchase\">\n"
- " <property name=\"purchaseDate\"/>\n"
- " <property name=\"price\"/>\n"
- " <property name=\"quantity\"/>\n"
- " <many-to-one name=\"item\" class=\"eg.Item\"/> <!-- class attribute is optional -->\n"
- " </composite-element>\n"
- " </set>\n"
- "</class>]]>"
-#: index.docbook:125
-msgid "Of course, there can't be a reference to the purchae on the other side, for bidirectional association navigation. Remember that components are value types and don't allow shared references. A single <literal>Purchase</literal> can be in the set of an <literal>Order</literal>, but it can't be referenced by the <literal>Item</literal> at the same time."
-msgstr "물론, 양방향 연관 네비게이션의 경우, 다른 측 상에 있는 purchase에 대한 참조가 존재할 수 없다. 컴포넌트들이 값(value) 타입들이고 공유된 참조들을 허용하지 않음을 기억하라. 하나의 <literal>Purchase</literal>는<literal>Order</literal>를 가진 set 내에 있을 수 있지만, 그것은 동시에 <literal>Item</literal>에 의해 참조될 수 없다."
+#. Tag: para
+#: component_mapping.xml:125
+#, no-c-format
+msgid ""
+"Of course, there can't be a reference to the purchae on the other side, for "
+"bidirectional association navigation. Remember that components are value "
+"types and don't allow shared references. A single <literal>Purchase</"
+"literal> can be in the set of an <literal>Order</literal>, but it can't be "
+"referenced by the <literal>Item</literal> at the same time."
+msgstr ""
+"물론, 양방향 연관 네비게이션의 경우, 다른 측 상에 있는 purchase에 대한 참조"
+"가 존재할 수 없다. 컴포넌트들이 값(value) 타입들이고 공유된 참조들을 허용하"
+"지 않음을 기억하라. 하나의 <literal>Purchase</literal>는<literal>Order</"
+"literal>를 가진 set 내에 있을 수 있지만, 그것은 동시에 <literal>Item</"
+"literal>에 의해 참조될 수 없다."
-#: index.docbook:133
+#. Tag: para
+#: component_mapping.xml:133
+#, no-c-format
msgid "Even ternary (or quaternary, etc) associations are possible:"
msgstr "심지어 세겹의(또는 네 겹의, 기타) 연관들이 가능하다:"
-#: index.docbook:135
+#. Tag: programlisting
+#: component_mapping.xml:135
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"eg.Order\" .... >\n"
- " ....\n"
- " <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
- " <key column=\"order_id\">\n"
- " <composite-element class=\"eg.OrderLine\">\n"
- " <many-to-one name=\"purchaseDetails class=\"eg.Purchase\"/>\n"
- " <many-to-one name=\"item\" class=\"eg.Item\"/>\n"
- " </composite-element>\n"
- " </set>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"eg.Order\" .... >\n"
+" ....\n"
+" <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
+" <key column=\"order_id\">\n"
+" <composite-element class=\"eg.OrderLine\">\n"
+" <many-to-one name=\"purchaseDetails class=\"eg.Purchase\"/>\n"
+" <many-to-one name=\"item\" class=\"eg.Item\"/>\n"
+" </composite-element>\n"
+" </set>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"eg.Order\" .... >\n"
- " ....\n"
- " <set name=\"purchasedItems\" table=\"purchase_items\" lazy=\"true\">\n"
- " <key column=\"order_id\">\n"
- " <composite-element class=\"eg.OrderLine\">\n"
- " <many-to-one name=\"purchaseDetails class=\"eg.Purchase\"/>\n"
- " <many-to-one name=\"item\" class=\"eg.Item\"/>\n"
- " </composite-element>\n"
- " </set>\n"
- "</class>]]>"
-#: index.docbook:137
-msgid "Composite elements may appear in queries using the same syntax as associations to other entities."
-msgstr "composite 요소들은 다른 엔티티들에 대한 연관들과 동일한 구문을 사용하여 질의들 내에 나타날 수도 있다."
+#. Tag: para
+#: component_mapping.xml:137
+#, no-c-format
+msgid ""
+"Composite elements may appear in queries using the same syntax as "
+"associations to other entities."
+msgstr ""
+"composite 요소들은 다른 엔티티들에 대한 연관들과 동일한 구문을 사용하여 질의"
+"들 내에 나타날 수도 있다."
-#: index.docbook:145
+#. Tag: title
+#: component_mapping.xml:145
+#, no-c-format
msgid "Components as Map indices"
msgstr "Map 인덱스들로서 컴포넌트들"
-#: index.docbook:147
-msgid "The <literal><composite-map-key></literal> element lets you map a component class as the key of a <literal>Map</literal>. Make sure you override <literal>hashCode()</literal> and <literal>equals()</literal> correctly on the component class."
-msgstr "<literal><composite-map-key></literal> 요소는 당신에게 하나의 컴포넌트 클래스를 하나의 <literal>Map</literal>의 키로서 매핑시키도록 한다. 당신은 컴포넌트 클래스 상에서 <literal>hashCode()</literal>와 <literal>equals()</literal>를 정확하게 오버라이드 시키도록 하라."
+#. Tag: para
+#: component_mapping.xml:147
+#, no-c-format
+msgid ""
+"The <literal><composite-map-key></literal> element lets you map a "
+"component class as the key of a <literal>Map</literal>. Make sure you "
+"override <literal>hashCode()</literal> and <literal>equals()</literal> "
+"correctly on the component class."
+msgstr ""
+"<literal><composite-map-key></literal> 요소는 당신에게 하나의 컴포넌트 "
+"클래스를 하나의 <literal>Map</literal>의 키로서 매핑시키도록 한다. 당신은 컴"
+"포넌트 클래스 상에서 <literal>hashCode()</literal>와 <literal>equals()</"
+"literal>를 정확하게 오버라이드 시키도록 하라."
-#: index.docbook:156
+#. Tag: title
+#: component_mapping.xml:156
+#, no-c-format
msgid "Components as composite identifiers"
msgstr "composite 식별자들로서 컴포넌트들"
-#: index.docbook:158
-msgid "You may use a component as an identifier of an entity class. Your component class must satisfy certain requirements:"
-msgstr "당신은 하나의 컴포넌트를 하나의 엔티티 클래스에 대한 하나의 식별자로서 사용할 수도 있다. 당신의 컴포넌트 클래스는 어떤 사양들을 충족시켜야 한다:"
+#. Tag: para
+#: component_mapping.xml:158
+#, no-c-format
+msgid ""
+"You may use a component as an identifier of an entity class. Your component "
+"class must satisfy certain requirements:"
+msgstr ""
+"당신은 하나의 컴포넌트를 하나의 엔티티 클래스에 대한 하나의 식별자로서 사용"
+"할 수도 있다. 당신의 컴포넌트 클래스는 어떤 사양들을 충족시켜야 한다:"
-#: index.docbook:165
+#. Tag: para
+#: component_mapping.xml:165
+#, no-c-format
msgid "It must implement <literal>java.io.Serializable</literal>."
msgstr "그것은 <literal>java.io.Serializable</literal>을 구현해야 한다."
-#: index.docbook:170
-msgid "It must re-implement <literal>equals()</literal> and <literal>hashCode()</literal>, consistently with the database's notion of composite key equality."
-msgstr "그것은 composite 키 등가(equality)에 대한 데이터베이스 개념과 일치되게, <literal>equals()</literal>와 <literal>hashCode()</literal>를 다시 구현해야 한다."
+#. Tag: para
+#: component_mapping.xml:170
+#, no-c-format
+msgid ""
+"It must re-implement <literal>equals()</literal> and <literal>hashCode()</"
+"literal>, consistently with the database's notion of composite key equality."
+msgstr ""
+"그것은 composite 키 등가(equality)에 대한 데이터베이스 개념과 일치되게, "
+"<literal>equals()</literal>와 <literal>hashCode()</literal>를 다시 구현해야 "
+"한다."
-#: index.docbook:179
-msgid "Note: in Hibernate3, the second requirement is not an absolutely hard requirement of Hibernate. But do it anyway."
-msgstr "노트: Hibernate3에서, 두 번째 사양은 Hibernate의 절대적으로 엄격한 사양이 아니다. 그러나 아무튼 그것을 행하라."
+#. Tag: emphasis
+#: component_mapping.xml:179
+#, no-c-format
+msgid ""
+"Note: in Hibernate3, the second requirement is not an absolutely hard "
+"requirement of Hibernate. But do it anyway."
+msgstr ""
+"노트: Hibernate3에서, 두 번째 사양은 Hibernate의 절대적으로 엄격한 사양이 아"
+"니다. 그러나 아무튼 그것을 행하라."
-#: index.docbook:183
-msgid "You can't use an <literal>IdentifierGenerator</literal> to generate composite keys. Instead the application must assign its own identifiers."
-msgstr "당신은 compsite 키들을 생성시키는데 <literal>IdentifierGenerator</literal>를 사용할 수 없다. 대신에 어플리케이션은 그것 자신의 식별자들을 할당해야 한다."
+#. Tag: para
+#: component_mapping.xml:183
+#, no-c-format
+msgid ""
+"You can't use an <literal>IdentifierGenerator</literal> to generate "
+"composite keys. Instead the application must assign its own identifiers."
+msgstr ""
+"당신은 compsite 키들을 생성시키는데 <literal>IdentifierGenerator</literal>를 "
+"사용할 수 없다. 대신에 어플리케이션은 그것 자신의 식별자들을 할당해야 한다."
-#: index.docbook:188
-msgid "Use the <literal><composite-id></literal> tag (with nested <literal><key-property></literal> elements) in place of the usual <literal><id></literal> declaration. For example, the <literal>OrderLine</literal> class has a primary key that depends upon the (composite) primary key of <literal>Order</literal>."
-msgstr "통상의 <literal><id></literal> 선언 위치에 (내포된 <literal><key-property></literal> 요소들을 가진) <literal><composite-id></literal> 태그를 사용하라. 예를 들어, <literal>OrderLine</literal> 클래스는 <literal>Order</literal>의 (composite) 프라이머리 키에 의존하는 프라이머리 키를 갖는다."
+#. Tag: para
+#: component_mapping.xml:188
+#, no-c-format
+msgid ""
+"Use the <literal><composite-id></literal> tag (with nested "
+"<literal><key-property></literal> elements) in place of the usual "
+"<literal><id></literal> declaration. For example, the "
+"<literal>OrderLine</literal> class has a primary key that depends upon the "
+"(composite) primary key of <literal>Order</literal>."
+msgstr ""
+"통상의 <literal><id></literal> 선언 위치에 (내포된 <literal><key-"
+"property></literal> 요소들을 가진) <literal><composite-id></"
+"literal> 태그를 사용하라. 예를 들어, <literal>OrderLine</literal> 클래스는 "
+"<literal>Order</literal>의 (composite) 프라이머리 키에 의존하는 프라이머리 키"
+"를 갖는다."
-#: index.docbook:196
+#. Tag: programlisting
+#: component_mapping.xml:196
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"OrderLine\">\n"
- " \n"
- " <composite-id name=\"id\" class=\"OrderLineId\">\n"
- " <key-property name=\"lineId\"/>\n"
- " <key-property name=\"orderId\"/>\n"
- " <key-property name=\"customerId\"/>\n"
- " </composite-id>\n"
- " \n"
- " <property name=\"name\"/>\n"
- " \n"
- " <many-to-one name=\"order\" class=\"Order\"\n"
- " insert=\"false\" update=\"false\">\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- " </many-to-one>\n"
- " ....\n"
- " \n"
- "</class>]]>"
+"<![CDATA[<class name=\"OrderLine\">\n"
+" \n"
+" <composite-id name=\"id\" class=\"OrderLineId\">\n"
+" <key-property name=\"lineId\"/>\n"
+" <key-property name=\"orderId\"/>\n"
+" <key-property name=\"customerId\"/>\n"
+" </composite-id>\n"
+" \n"
+" <property name=\"name\"/>\n"
+" \n"
+" <many-to-one name=\"order\" class=\"Order\"\n"
+" insert=\"false\" update=\"false\">\n"
+" <column name=\"orderId\"/>\n"
+" <column name=\"customerId\"/>\n"
+" </many-to-one>\n"
+" ....\n"
+" \n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"OrderLine\">\n"
- " \n"
- " <composite-id name=\"id\" class=\"OrderLineId\">\n"
- " <key-property name=\"lineId\"/>\n"
- " <key-property name=\"orderId\"/>\n"
- " <key-property name=\"customerId\"/>\n"
- " </composite-id>\n"
- " \n"
- " <property name=\"name\"/>\n"
- " \n"
- " <many-to-one name=\"order\" class=\"Order\"\n"
- " insert=\"false\" update=\"false\">\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- " </many-to-one>\n"
- " ....\n"
- " \n"
- "</class>]]>"
-#: index.docbook:198
-msgid "Now, any foreign keys referencing the <literal>OrderLine</literal> table are also composite. You must declare this in your mappings for other classes. An association to <literal>OrderLine</literal> would be mapped like this:"
-msgstr "이제 <literal>OrderLine</literal> 테이블을 참조하는 임의의 foreign 키들이 또한 compsite이다. 당신은 다른 클래스들에 대한 당신의 매핑들 속에 이것을 선언해야 한다. <literal>OrderLine</literal>에 대한 하나의 연관은 다음과 같이 매핑될 것이다:"
+#. Tag: para
+#: component_mapping.xml:198
+#, no-c-format
+msgid ""
+"Now, any foreign keys referencing the <literal>OrderLine</literal> table are "
+"also composite. You must declare this in your mappings for other classes. An "
+"association to <literal>OrderLine</literal> would be mapped like this:"
+msgstr ""
+"이제 <literal>OrderLine</literal> 테이블을 참조하는 임의의 foreign 키들이 또"
+"한 compsite이다. 당신은 다른 클래스들에 대한 당신의 매핑들 속에 이것을 선언해"
+"야 한다. <literal>OrderLine</literal>에 대한 하나의 연관은 다음과 같이 매핑"
+"될 것이다:"
-#: index.docbook:204
+#. Tag: programlisting
+#: component_mapping.xml:204
+#, no-c-format
msgid ""
- "<![CDATA[<many-to-one name=\"orderLine\" class=\"OrderLine\">\n"
- "<!-- the \"class\" attribute is optional, as usual -->\n"
- " <column name=\"lineId\"/>\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- "</many-to-one>]]>"
+"<![CDATA[<many-to-one name=\"orderLine\" class=\"OrderLine\">\n"
+"<!-- the \"class\" attribute is optional, as usual -->\n"
+" <column name=\"lineId\"/>\n"
+" <column name=\"orderId\"/>\n"
+" <column name=\"customerId\"/>\n"
+"</many-to-one>]]>"
msgstr ""
- "<![CDATA[<many-to-one name=\"orderLine\" class=\"OrderLine\">\n"
- "<!-- the \"class\" attribute is optional, as usual -->\n"
- " <column name=\"lineId\"/>\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- "</many-to-one>]]>"
-#: index.docbook:206
-msgid "(Note that the <literal><column></literal> tag is an alternative to the <literal>column</literal> attribute everywhere.)"
-msgstr "(<literal><column></literal> 태그가 모든 곳에서 <literal>column</literal> 속성에 대한 대안임을 노트하라.)"
+#. Tag: para
+#: component_mapping.xml:206
+#, no-c-format
+msgid ""
+"(Note that the <literal><column></literal> tag is an alternative to "
+"the <literal>column</literal> attribute everywhere.)"
+msgstr ""
+"(<literal><column></literal> 태그가 모든 곳에서 <literal>column</"
+"literal> 속성에 대한 대안임을 노트하라.)"
-#: index.docbook:211
-msgid "A <literal>many-to-many</literal> association to <literal>OrderLine</literal> also uses the composite foreign key:"
-msgstr "<literal>OrderLine</literal>에 대한 <literal>many-to-many</literal> 연관은 또한 composite foreign 키를 사용한다:"
+#. Tag: para
+#: component_mapping.xml:211
+#, no-c-format
+msgid ""
+"A <literal>many-to-many</literal> association to <literal>OrderLine</"
+"literal> also uses the composite foreign key:"
+msgstr ""
+"<literal>OrderLine</literal>에 대한 <literal>many-to-many</literal> 연관은 또"
+"한 composite foreign 키를 사용한다:"
-#: index.docbook:216
+#. Tag: programlisting
+#: component_mapping.xml:216
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"undeliveredOrderLines\">\n"
- " <key column name=\"warehouseId\"/>\n"
- " <many-to-many class=\"OrderLine\">\n"
- " <column name=\"lineId\"/>\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- " </many-to-many>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"undeliveredOrderLines\">\n"
+" <key column name=\"warehouseId\"/>\n"
+" <many-to-many class=\"OrderLine\">\n"
+" <column name=\"lineId\"/>\n"
+" <column name=\"orderId\"/>\n"
+" <column name=\"customerId\"/>\n"
+" </many-to-many>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"undeliveredOrderLines\">\n"
- " <key column name=\"warehouseId\"/>\n"
- " <many-to-many class=\"OrderLine\">\n"
- " <column name=\"lineId\"/>\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- " </many-to-many>\n"
- "</set>]]>"
-#: index.docbook:218
-msgid "The collection of <literal>OrderLine</literal>s in <literal>Order</literal> would use:"
-msgstr "<literal>Order</literal>에서 <literal>OrderLine</literal>들의 콜렉션이 사용될 것이다:"
+#. Tag: para
+#: component_mapping.xml:218
+#, no-c-format
+msgid ""
+"The collection of <literal>OrderLine</literal>s in <literal>Order</literal> "
+"would use:"
+msgstr ""
+"<literal>Order</literal>에서 <literal>OrderLine</literal>들의 콜렉션이 사용"
+"될 것이다:"
-#: index.docbook:223
+#. Tag: programlisting
+#: component_mapping.xml:223
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"orderLines\" inverse=\"true\">\n"
- " <key>\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- " </key>\n"
- " <one-to-many class=\"OrderLine\"/>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"orderLines\" inverse=\"true\">\n"
+" <key>\n"
+" <column name=\"orderId\"/>\n"
+" <column name=\"customerId\"/>\n"
+" </key>\n"
+" <one-to-many class=\"OrderLine\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"orderLines\" inverse=\"true\">\n"
- " <key>\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- " </key>\n"
- " <one-to-many class=\"OrderLine\"/>\n"
- "</set>]]>"
-#: index.docbook:225
-msgid "(The <literal><one-to-many></literal> element, as usual, declares no columns.)"
-msgstr "(통상적으로 <literal><one-to-many></literal> 요소는 컬럼들을 선언하지 않는다.)"
+#. Tag: para
+#: component_mapping.xml:225
+#, no-c-format
+msgid ""
+"(The <literal><one-to-many></literal> element, as usual, declares no "
+"columns.)"
+msgstr ""
+"(통상적으로 <literal><one-to-many></literal> 요소는 컬럼들을 선언하지 "
+"않는다.)"
-#: index.docbook:229
-msgid "If <literal>OrderLine</literal> itself owns a collection, it also has a composite foreign key."
-msgstr "만일 <literal>OrderLine</literal> 자체가 하나의 콜렉션을 소유할 경우, 그것은 또한 하나의 composite foreign 키를 갖는다."
+#. Tag: para
+#: component_mapping.xml:229
+#, no-c-format
+msgid ""
+"If <literal>OrderLine</literal> itself owns a collection, it also has a "
+"composite foreign key."
+msgstr ""
+"만일 <literal>OrderLine</literal> 자체가 하나의 콜렉션을 소유할 경우, 그것은 "
+"또한 하나의 composite foreign 키를 갖는다."
-#: index.docbook:234
+#. Tag: programlisting
+#: component_mapping.xml:234
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"OrderLine\">\n"
- " ....\n"
- " ....\n"
- " <list name=\"deliveryAttempts\">\n"
- " <key> <!-- a collection inherits the composite key type -->\n"
- " <column name=\"lineId\"/>\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- " </key>\n"
- " <list-index column=\"attemptId\" base=\"1\"/>\n"
- " <composite-element class=\"DeliveryAttempt\">\n"
- " ...\n"
- " </composite-element>\n"
- " </set>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"OrderLine\">\n"
+" ....\n"
+" ....\n"
+" <list name=\"deliveryAttempts\">\n"
+" <key> <!-- a collection inherits the composite key type -->\n"
+" <column name=\"lineId\"/>\n"
+" <column name=\"orderId\"/>\n"
+" <column name=\"customerId\"/>\n"
+" </key>\n"
+" <list-index column=\"attemptId\" base=\"1\"/>\n"
+" <composite-element class=\"DeliveryAttempt\">\n"
+" ...\n"
+" </composite-element>\n"
+" </set>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"OrderLine\">\n"
- " ....\n"
- " ....\n"
- " <list name=\"deliveryAttempts\">\n"
- " <key> <!-- a collection inherits the composite key type -->\n"
- " <column name=\"lineId\"/>\n"
- " <column name=\"orderId\"/>\n"
- " <column name=\"customerId\"/>\n"
- " </key>\n"
- " <list-index column=\"attemptId\" base=\"1\"/>\n"
- " <composite-element class=\"DeliveryAttempt\">\n"
- " ...\n"
- " </composite-element>\n"
- " </set>\n"
- "</class>]]>"
-#: index.docbook:239
+#. Tag: title
+#: component_mapping.xml:239
+#, no-c-format
msgid "Dynamic components"
msgstr "동적인 컴포넌트들"
-#: index.docbook:241
+#. Tag: para
+#: component_mapping.xml:241
+#, no-c-format
msgid "You may even map a property of type <literal>Map</literal>:"
msgstr "당신은 <literal>Map</literal> 타입의 프로퍼티를 매핑시킬 수도 있다:"
-#: index.docbook:245
+#. Tag: programlisting
+#: component_mapping.xml:245
+#, no-c-format
msgid ""
- "<![CDATA[<dynamic-component name=\"userAttributes\">\n"
- " <property name=\"foo\" column=\"FOO\" type=\"string\"/>\n"
- " <property name=\"bar\" column=\"BAR\" type=\"integer\"/>\n"
- " <many-to-one name=\"baz\" class=\"Baz\" column=\"BAZ_ID\"/>\n"
- "</dynamic-component>]]>"
+"<![CDATA[<dynamic-component name=\"userAttributes\">\n"
+" <property name=\"foo\" column=\"FOO\" type=\"string\"/>\n"
+" <property name=\"bar\" column=\"BAR\" type=\"integer\"/>\n"
+" <many-to-one name=\"baz\" class=\"Baz\" column=\"BAZ_ID\"/>\n"
+"</dynamic-component>]]>"
msgstr ""
- "<![CDATA[<dynamic-component name=\"userAttributes\">\n"
- " <property name=\"foo\" column=\"FOO\" type=\"string\"/>\n"
- " <property name=\"bar\" column=\"BAR\" type=\"integer\"/>\n"
- " <many-to-one name=\"baz\" class=\"Baz\" column=\"BAZ_ID\"/>\n"
- "</dynamic-component>]]>"
-#: index.docbook:247
-msgid "The semantics of a <literal><dynamic-component></literal> mapping are identical to <literal><component></literal>. The advantage of this kind of mapping is the ability to determine the actual properties of the bean at deployment time, just by editing the mapping document. Runtime manipulation of the mapping document is also possible, using a DOM parser. Even better, you can access (and change) Hibernate's configuration-time metamodel via the <literal>Configuration</literal> object."
-msgstr "<literal><dynamic-component></literal> 매핑의 의미는 <literal><component></literal>와 동일하다. 이런 종류의 매핑의 장점은 배치 시에 단지 매핑 문서를 편집함으로써 그 bean의 실제 프로퍼티들을 결정하는 가용성이다. 매핑 문서에 대한 런타임 처리는 또한 DOM 파서를 사용하여 가능하다. 더 좋게는 당신이 <literal>Configuration</literal> 객체를 통해 Hibernate의 구성-시 메타모형에 접근할 수 있다(그리고 변경시킬 수 있다)"
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: para
+#: component_mapping.xml:247
+#, no-c-format
+msgid ""
+"The semantics of a <literal><dynamic-component></literal> mapping are "
+"identical to <literal><component></literal>. The advantage of this "
+"kind of mapping is the ability to determine the actual properties of the "
+"bean at deployment time, just by editing the mapping document. Runtime "
+"manipulation of the mapping document is also possible, using a DOM parser. "
+"Even better, you can access (and change) Hibernate's configuration-time "
+"metamodel via the <literal>Configuration</literal> object."
+msgstr ""
+"<literal><dynamic-component></literal> 매핑의 의미는 <literal><"
+"component></literal>와 동일하다. 이런 종류의 매핑의 장점은 배치 시에 단지 "
+"매핑 문서를 편집함으로써 그 bean의 실제 프로퍼티들을 결정하는 가용성이다. 매"
+"핑 문서에 대한 런타임 처리는 또한 DOM 파서를 사용하여 가능하다. 더 좋게는 당"
+"신이 <literal>Configuration</literal> 객체를 통해 Hibernate의 구성-시 메타모"
+"형에 접근할 수 있다(그리고 변경시킬 수 있다)"
Modified: core/trunk/documentation/manual/translations/ko-KR/content/configuration.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/configuration.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/configuration.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,1598 +1,3255 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: configuration.xml:5
+#, no-c-format
msgid "Configuration"
-msgstr "<title>구성</title>"
+msgstr "구성"
-#: index.docbook:7
-msgid "Because Hibernate is designed to operate in many different environments, there are a large number of configuration parameters. Fortunately, most have sensible default values and Hibernate is distributed with an example <literal>hibernate.properties</literal> file in <literal>etc/</literal> that shows the various options. Just put the example file in your classpath and customize it."
-msgstr "Hibernate가 많은 다른 환경들에서 동작하도록 설계되어 있으므로, 많은 개수의 구성 파라미터들이 존재한다. 다행히 대부분은 유의미한 디폴트 값들이고 Hibernate는 다양한 옵션들을 보여주는 <literal>etc/</literal> 내의 예제 파일 <literal>hibernate.properties</literal>로 배포된다. 당신은 단지 당신의 classpath 경로 속에 그 파일을 집어넣고 그것을 커스트마이징하기만 해야 한다."
+#. Tag: para
+#: configuration.xml:7
+#, no-c-format
+msgid ""
+"Because Hibernate is designed to operate in many different environments, "
+"there are a large number of configuration parameters. Fortunately, most have "
+"sensible default values and Hibernate is distributed with an example "
+"<literal>hibernate.properties</literal> file in <literal>etc/</literal> that "
+"shows the various options. Just put the example file in your classpath and "
+"customize it."
+msgstr ""
+"Hibernate가 많은 다른 환경들에서 동작하도록 설계되어 있으므로, 많은 개수의 구"
+"성 파라미터들이 존재한다. 다행히 대부분은 유의미한 디폴트 값들이고 Hibernate"
+"는 다양한 옵션들을 보여주는 <literal>etc/</literal> 내의 예제 파일 "
+"<literal>hibernate.properties</literal>로 배포된다. 당신은 단지 당신의 "
+"classpath 경로 속에 그 파일을 집어넣고 그것을 커스트마이징하기만 해야 한다."
-#: index.docbook:16
+#. Tag: title
+#: configuration.xml:16
+#, no-c-format
msgid "Programmatic configuration"
msgstr "프로그램 상의 구성"
-#: index.docbook:18
-msgid "An instance of <literal>org.hibernate.cfg.Configuration</literal> represents an entire set of mappings of an application's Java types to an SQL database. The <literal>Configuration</literal> is used to build an (immutable) <literal>SessionFactory</literal>. The mappings are compiled from various XML mapping files."
-msgstr "<literal>org.hibernate.cfg.Configuration</literal>의 인스턴스는 어플리케이션의 Java 타입들을 SQL 데이터베이스 타입으로의 전체 매핑 집합을 표현한다. <literal>Configuration</literal>은 (불변의) <literal>SessionFactory</literal>를 빌드하는데 사용된다. 매핑들은 여러 XML 매핑 파일들로부터 컴파일 된다."
+#. Tag: para
+#: configuration.xml:18
+#, no-c-format
+msgid ""
+"An instance of <literal>org.hibernate.cfg.Configuration</literal> represents "
+"an entire set of mappings of an application's Java types to an SQL database. "
+"The <literal>Configuration</literal> is used to build an (immutable) "
+"<literal>SessionFactory</literal>. The mappings are compiled from various "
+"XML mapping files."
+msgstr ""
+"<literal>org.hibernate.cfg.Configuration</literal>의 인스턴스는 어플리케이션"
+"의 Java 타입들을 SQL 데이터베이스 타입으로의 전체 매핑 집합을 표현한다. "
+"<literal>Configuration</literal>은 (불변의) <literal>SessionFactory</literal>"
+"를 빌드하는데 사용된다. 매핑들은 여러 XML 매핑 파일들로부터 컴파일 된다."
-#: index.docbook:26
-msgid "You may obtain a <literal>Configuration</literal> instance by instantiating it directly and specifying XML mapping documents. If the mapping files are in the classpath, use <literal>addResource()</literal>:"
-msgstr "당신은 <literal>Configuration</literal> 인스턴스를 초기화 시키고 XML 매핑 문서들을 지정함으로써 <literal>Configuration</literal> 인스턴스를 얻을 수 있다. 만일 매핑 파일들이 classpath 내에 있다면, <literal>addResource()</literal>를 사용하라:"
+#. Tag: para
+#: configuration.xml:26
+#, no-c-format
+msgid ""
+"You may obtain a <literal>Configuration</literal> instance by instantiating "
+"it directly and specifying XML mapping documents. If the mapping files are "
+"in the classpath, use <literal>addResource()</literal>:"
+msgstr ""
+"당신은 <literal>Configuration</literal> 인스턴스를 초기화 시키고 XML 매핑 문"
+"서들을 지정함으로써 <literal>Configuration</literal> 인스턴스를 얻을 수 있"
+"다. 만일 매핑 파일들이 classpath 내에 있다면, <literal>addResource()</"
+"literal>를 사용하라:"
-#: index.docbook:32
+#. Tag: programlisting
+#: configuration.xml:32
+#, no-c-format
msgid ""
- "<![CDATA[Configuration cfg = new Configuration()\n"
- " .addResource(\"Item.hbm.xml\")\n"
- " .addResource(\"Bid.hbm.xml\");]]>"
+"<![CDATA[Configuration cfg = new Configuration()\n"
+" .addResource(\"Item.hbm.xml\")\n"
+" .addResource(\"Bid.hbm.xml\");]]>"
msgstr ""
- "<![CDATA[Configuration cfg = new Configuration()\n"
- " .addResource(\"Item.hbm.xml\")\n"
- " .addResource(\"Bid.hbm.xml\");]]>"
-#: index.docbook:34
-msgid "An alternative (sometimes better) way is to specify the mapped class, and let Hibernate find the mapping document for you:"
-msgstr "(때때로 더 나은) 다른 방법은 매핑된 클래스를 지정하는 것이고, Hibernate로 하여금 당신을 위해 매핑 문서를 찾도록 하라:"
+#. Tag: para
+#: configuration.xml:34
+#, no-c-format
+msgid ""
+"An alternative (sometimes better) way is to specify the mapped class, and "
+"let Hibernate find the mapping document for you:"
+msgstr ""
+"(때때로 더 나은) 다른 방법은 매핑된 클래스를 지정하는 것이고, Hibernate로 하"
+"여금 당신을 위해 매핑 문서를 찾도록 하라:"
-#: index.docbook:39
+#. Tag: programlisting
+#: configuration.xml:39
+#, no-c-format
msgid ""
- "<![CDATA[Configuration cfg = new Configuration()\n"
- " .addClass(org.hibernate.auction.Item.class)\n"
- " .addClass(org.hibernate.auction.Bid.class);]]>"
+"<![CDATA[Configuration cfg = new Configuration()\n"
+" .addClass(org.hibernate.auction.Item.class)\n"
+" .addClass(org.hibernate.auction.Bid.class);]]>"
msgstr ""
- "<![CDATA[Configuration cfg = new Configuration()\n"
- " .addClass(org.hibernate.auction.Item.class)\n"
- " .addClass(org.hibernate.auction.Bid.class);]]>"
-#: index.docbook:41
-msgid "Then Hibernate will look for mapping files named <literal>/org/hibernate/auction/Item.hbm.xml</literal> and <literal>/org/hibernate/auction/Bid.hbm.xml</literal> in the classpath. This approach eliminates any hardcoded filenames."
-msgstr "그때 Hibernate는 classpath 내에서 <literal>/org/hibernate/auction/Item.hbm.xml</literal>과 <literal>/org/hibernate/auction/Bid.hbm.xml</literal>로 명명된 매핑 파일들을 룩업할 것이다. 이 접근법은 임의의 하드코딩된 파일 이름들을 제거한다."
+#. Tag: para
+#: configuration.xml:41
+#, no-c-format
+msgid ""
+"Then Hibernate will look for mapping files named <literal>/org/hibernate/"
+"auction/Item.hbm.xml</literal> and <literal>/org/hibernate/auction/Bid.hbm."
+"xml</literal> in the classpath. This approach eliminates any hardcoded "
+"filenames."
+msgstr ""
+"그때 Hibernate는 classpath 내에서 <literal>/org/hibernate/auction/Item.hbm."
+"xml</literal>과 <literal>/org/hibernate/auction/Bid.hbm.xml</literal>로 명명"
+"된 매핑 파일들을 룩업할 것이다. 이 접근법은 임의의 하드코딩된 파일 이름들을 "
+"제거한다."
-#: index.docbook:48
-msgid "A <literal>Configuration</literal> also allows you to specify configuration properties:"
-msgstr "<literal>Configuration</literal>은 또한 구성 프로퍼티들을 지정하는 것을 허용해준다:"
+#. Tag: para
+#: configuration.xml:48
+#, no-c-format
+msgid ""
+"A <literal>Configuration</literal> also allows you to specify configuration "
+"properties:"
+msgstr ""
+"<literal>Configuration</literal>은 또한 구성 프로퍼티들을 지정하는 것을 허용"
+"해준다:"
-#: index.docbook:53
+#. Tag: programlisting
+#: configuration.xml:53
+#, no-c-format
msgid ""
- "<![CDATA[Configuration cfg = new Configuration()\n"
- " .addClass(org.hibernate.auction.Item.class)\n"
- " .addClass(org.hibernate.auction.Bid.class)\n"
- " .setProperty(\"hibernate.dialect\", \"org.hibernate.dialect.MySQLInnoDBDialect\")\n"
- " .setProperty(\"hibernate.connection.datasource\", \"java:comp/env/jdbc/test\")\n"
- " .setProperty(\"hibernate.order_updates\", \"true\");]]>"
+"<![CDATA[Configuration cfg = new Configuration()\n"
+" .addClass(org.hibernate.auction.Item.class)\n"
+" .addClass(org.hibernate.auction.Bid.class)\n"
+" .setProperty(\"hibernate.dialect\", \"org.hibernate.dialect."
+"MySQLInnoDBDialect\")\n"
+" .setProperty(\"hibernate.connection.datasource\", \"java:comp/env/jdbc/"
+"test\")\n"
+" .setProperty(\"hibernate.order_updates\", \"true\");]]>"
msgstr ""
- "<![CDATA[Configuration cfg = new Configuration()\n"
- " .addClass(org.hibernate.auction.Item.class)\n"
- " .addClass(org.hibernate.auction.Bid.class)\n"
- " .setProperty(\"hibernate.dialect\", \"org.hibernate.dialect.MySQLInnoDBDialect\")\n"
- " .setProperty(\"hibernate.connection.datasource\", \"java:comp/env/jdbc/test\")\n"
- " .setProperty(\"hibernate.order_updates\", \"true\");]]>"
-#: index.docbook:55
-msgid "This is not the only way to pass configuration properties to Hibernate. The various options include:"
-msgstr "이것은 컨피그레이션 프로퍼티들을 Hibernate에 전달하는 유일한 방법이 아니다. 여러 가지 옵션들은 다음을 포함한다:"
+#. Tag: para
+#: configuration.xml:55
+#, no-c-format
+msgid ""
+"This is not the only way to pass configuration properties to Hibernate. The "
+"various options include:"
+msgstr ""
+"이것은 컨피그레이션 프로퍼티들을 Hibernate에 전달하는 유일한 방법이 아니다. "
+"여러 가지 옵션들은 다음을 포함한다:"
-#: index.docbook:62
-msgid "Pass an instance of <literal>java.util.Properties</literal> to <literal>Configuration.setProperties()</literal>."
-msgstr "<literal>java.util.Properties</literal>의 인스턴스를 <literal>Configuration.setProperties()</literal>에 전달한다 ."
+#. Tag: para
+#: configuration.xml:62
+#, no-c-format
+msgid ""
+"Pass an instance of <literal>java.util.Properties</literal> to "
+"<literal>Configuration.setProperties()</literal>."
+msgstr ""
+"<literal>java.util.Properties</literal>의 인스턴스를 <literal>Configuration."
+"setProperties()</literal>에 전달한다 ."
-#: index.docbook:68
-msgid "Place <literal>hibernate.properties</literal> in a root directory of the classpath."
-msgstr "classpath의 루트 디렉토리에 <literal>hibernate.properties</literal>를 위치지운다."
+#. Tag: para
+#: configuration.xml:68
+#, no-c-format
+msgid ""
+"Place <literal>hibernate.properties</literal> in a root directory of the "
+"classpath."
+msgstr ""
+"classpath의 루트 디렉토리에 <literal>hibernate.properties</literal>를 위치지"
+"운다."
-#: index.docbook:74
-msgid "Set <literal>System</literal> properties using <literal>java -Dproperty=value</literal>."
-msgstr "<literal>java -Dproperty=value</literal>를 사용하여 <literal>System</literal> 프로퍼티들을 설정한다."
+#. Tag: para
+#: configuration.xml:74
+#, no-c-format
+msgid ""
+"Set <literal>System</literal> properties using <literal>java -"
+"Dproperty=value</literal>."
+msgstr ""
+"<literal>java -Dproperty=value</literal>를 사용하여 <literal>System</"
+"literal> 프로퍼티들을 설정한다."
-#: index.docbook:80
-msgid "Include <literal><property></literal> elements in <literal>hibernate.cfg.xml</literal> (discussed later)."
-msgstr "<literal>hibernate.cfg.xml</literal>에 <literal><property></literal> 요소들을 포함한다 (나중에 논의됨)."
+#. Tag: para
+#: configuration.xml:80
+#, no-c-format
+msgid ""
+"Include <literal><property></literal> elements in <literal>hibernate."
+"cfg.xml</literal> (discussed later)."
+msgstr ""
+"<literal>hibernate.cfg.xml</literal>에 <literal><property></literal> 요"
+"소들을 포함한다 (나중에 논의됨)."
-#: index.docbook:87
-msgid "<literal>hibernate.properties</literal> is the easiest approach if you want to get started quickly."
-msgstr "당신이 빠르게 시작하고 원할 경우 <literal>hibernate.properties</literal>는 가장 쉬운 접근법이다."
+#. Tag: para
+#: configuration.xml:87
+#, no-c-format
+msgid ""
+"<literal>hibernate.properties</literal> is the easiest approach if you want "
+"to get started quickly."
+msgstr ""
+"당신이 빠르게 시작하고 원할 경우 <literal>hibernate.properties</literal>는 가"
+"장 쉬운 접근법이다."
-#: index.docbook:92
-msgid "The <literal>Configuration</literal> is intended as a startup-time object, to be discarded once a <literal>SessionFactory</literal> is created."
-msgstr "<literal>Configuration</literal>은 시작 시(startup-time) 객체로서 일단 <literal>SessionFactory</literal>가 생성되면 폐기되게끔 예정되어 있다."
+#. Tag: para
+#: configuration.xml:92
+#, no-c-format
+msgid ""
+"The <literal>Configuration</literal> is intended as a startup-time object, "
+"to be discarded once a <literal>SessionFactory</literal> is created."
+msgstr ""
+"<literal>Configuration</literal>은 시작 시(startup-time) 객체로서 일단 "
+"<literal>SessionFactory</literal>가 생성되면 폐기되게끔 예정되어 있다."
-#: index.docbook:100
+#. Tag: title
+#: configuration.xml:100
+#, no-c-format
msgid "Obtaining a SessionFactory"
msgstr "SessionFactory 얻기"
-#: index.docbook:102
-msgid "When all mappings have been parsed by the <literal>Configuration</literal>, the application must obtain a factory for <literal>Session</literal> instances. This factory is intended to be shared by all application threads:"
-msgstr "모든 매핑들이 <literal>Configuration</literal>에 의해 파싱되었을 때, 어플리케이션은 <literal>Session</literal> 인스턴스들에 대한 팩토리를 얻어야 한다. 이 팩토리는 모든 어플리케이션 쓰레드들에 의해 공유되도록 고안되었다:"
+#. Tag: para
+#: configuration.xml:102
+#, no-c-format
+msgid ""
+"When all mappings have been parsed by the <literal>Configuration</literal>, "
+"the application must obtain a factory for <literal>Session</literal> "
+"instances. This factory is intended to be shared by all application threads:"
+msgstr ""
+"모든 매핑들이 <literal>Configuration</literal>에 의해 파싱되었을 때, 어플리케"
+"이션은 <literal>Session</literal> 인스턴스들에 대한 팩토리를 얻어야 한다. 이 "
+"팩토리는 모든 어플리케이션 쓰레드들에 의해 공유되도록 고안되었다:"
-#: index.docbook:108
+#. Tag: programlisting
+#: configuration.xml:108
+#, no-c-format
msgid "<![CDATA[SessionFactory sessions = cfg.buildSessionFactory();]]>"
-msgstr "<![CDATA[SessionFactory sessions = cfg.buildSessionFactory();]]>"
+msgstr ""
-#: index.docbook:110
-msgid "Hibernate does allow your application to instantiate more than one <literal>SessionFactory</literal>. This is useful if you are using more than one database."
-msgstr "하지만 Hibernate는 당신의 어플리케이션이 하나 이상의 <literal>SessionFactory</literal>를 초기화 시키는 것을 허용한다. 이것은 당신이 하나 이상의 데이터베이스를 사용하는 경우에 유용하다."
+#. Tag: para
+#: configuration.xml:110
+#, no-c-format
+msgid ""
+"Hibernate does allow your application to instantiate more than one "
+"<literal>SessionFactory</literal>. This is useful if you are using more than "
+"one database."
+msgstr ""
+"하지만 Hibernate는 당신의 어플리케이션이 하나 이상의 "
+"<literal>SessionFactory</literal>를 초기화 시키는 것을 허용한다. 이것은 당신"
+"이 하나 이상의 데이터베이스를 사용하는 경우에 유용하다."
-#: index.docbook:119
+#. Tag: title
+#: configuration.xml:119
+#, no-c-format
msgid "JDBC connections"
msgstr "JDBC 커넥션들"
-#: index.docbook:121
-msgid "Usually, you want to have the <literal>SessionFactory</literal> create and pool JDBC connections for you. If you take this approach, opening a <literal>Session</literal> is as simple as:"
-msgstr "대개 당신은 <literal>SessionFactory</literal>로 하여금 당신을 위한 JDBC 커넥션들을 생성시키고 풀링시키는 것을 원한다. 만일 당신이 이 접근법을 취할 경우, 한 개의 <literal>Session</literal>을 여는 것은 다음과 같이 간단하다:"
+#. Tag: para
+#: configuration.xml:121
+#, no-c-format
+msgid ""
+"Usually, you want to have the <literal>SessionFactory</literal> create and "
+"pool JDBC connections for you. If you take this approach, opening a "
+"<literal>Session</literal> is as simple as:"
+msgstr ""
+"대개 당신은 <literal>SessionFactory</literal>로 하여금 당신을 위한 JDBC 커넥"
+"션들을 생성시키고 풀링시키는 것을 원한다. 만일 당신이 이 접근법을 취할 경우, "
+"한 개의 <literal>Session</literal>을 여는 것은 다음과 같이 간단하다:"
-#: index.docbook:127
-msgid "<![CDATA[Session session = sessions.openSession(); // open a new Session]]>"
-msgstr "<![CDATA[Session session = sessions.openSession(); // open a new Session]]>"
+#. Tag: programlisting
+#: configuration.xml:127
+#, no-c-format
+msgid ""
+"<![CDATA[Session session = sessions.openSession(); // open a new Session]]>"
+msgstr ""
-#: index.docbook:129
-msgid "As soon as you do something that requires access to the database, a JDBC connection will be obtained from the pool."
-msgstr "당신이 데이터베이스에 대한 접근을 요청하는 어떤 것을 행하자 마자, 한 개의 JDBC 커넥션이 그 풀로부터 얻어질 것이다."
+#. Tag: para
+#: configuration.xml:129
+#, no-c-format
+msgid ""
+"As soon as you do something that requires access to the database, a JDBC "
+"connection will be obtained from the pool."
+msgstr ""
+"당신이 데이터베이스에 대한 접근을 요청하는 어떤 것을 행하자 마자, 한 개의 "
+"JDBC 커넥션이 그 풀로부터 얻어질 것이다."
-#: index.docbook:134
-msgid "For this to work, we need to pass some JDBC connection properties to Hibernate. All Hibernate property names and semantics are defined on the class <literal>org.hibernate.cfg.Environment</literal>. We will now describe the most important settings for JDBC connection configuration."
-msgstr "이것이 동작하도록 하기 위해서, 우리는 몇몇 JDBC 커넥션 프로퍼티들을 Hibernate에 전달할 필요가 있다. 모든 Hibernate 프로퍼티 이름들과 의미론들은 <literal>org.hibernate.cfg.Environment</literal> 클래스 상에 정의되어 있다. 우리는 이제 JDBC 커넥션 구성을 위한 가장 중요한 설정들을 설명할 것이다."
+#. Tag: para
+#: configuration.xml:134
+#, no-c-format
+msgid ""
+"For this to work, we need to pass some JDBC connection properties to "
+"Hibernate. All Hibernate property names and semantics are defined on the "
+"class <literal>org.hibernate.cfg.Environment</literal>. We will now describe "
+"the most important settings for JDBC connection configuration."
+msgstr ""
+"이것이 동작하도록 하기 위해서, 우리는 몇몇 JDBC 커넥션 프로퍼티들을 Hibernate"
+"에 전달할 필요가 있다. 모든 Hibernate 프로퍼티 이름들과 의미론들은 "
+"<literal>org.hibernate.cfg.Environment</literal> 클래스 상에 정의되어 있다. "
+"우리는 이제 JDBC 커넥션 구성을 위한 가장 중요한 설정들을 설명할 것이다."
-#: index.docbook:141
-msgid "Hibernate will obtain (and pool) connections using <literal>java.sql.DriverManager</literal> if you set the following properties:"
-msgstr "만일 당신이 다음 프로퍼티들을 설정할 경우 Hibernate는 <literal>java.sql.DriverManager</literal>를 사용하여 커넥션들을 얻을 것이다(그리고 풀링시킬 것이다):"
+#. Tag: para
+#: configuration.xml:141
+#, no-c-format
+msgid ""
+"Hibernate will obtain (and pool) connections using <literal>java.sql."
+"DriverManager</literal> if you set the following properties:"
+msgstr ""
+"만일 당신이 다음 프로퍼티들을 설정할 경우 Hibernate는 <literal>java.sql."
+"DriverManager</literal>를 사용하여 커넥션들을 얻을 것이다(그리고 풀링시킬 것"
+"이다):"
-#: index.docbook:147
+#. Tag: title
+#: configuration.xml:147
+#, no-c-format
msgid "Hibernate JDBC Properties"
msgstr "Hibernate JDBC 프로퍼티들"
-#: index.docbook:153, index.docbook:241, index.docbook:338, index.docbook:529, index.docbook:725, index.docbook:832, index.docbook:920
+#. Tag: entry
+#: configuration.xml:153 configuration.xml:241 configuration.xml:338
+#: configuration.xml:529 configuration.xml:725 configuration.xml:832
+#: configuration.xml:920
+#, no-c-format
msgid "Property name"
msgstr "프로퍼티 이름"
-#: index.docbook:154, index.docbook:242, index.docbook:339, index.docbook:530, index.docbook:726, index.docbook:833, index.docbook:921
+#. Tag: entry
+#: configuration.xml:154 configuration.xml:242 configuration.xml:339
+#: configuration.xml:530 configuration.xml:726 configuration.xml:833
+#: configuration.xml:921
+#, no-c-format
msgid "Purpose"
-msgstr "<entry>용도</entry>"
+msgstr "용도"
-#: index.docbook:160
+#. Tag: literal
+#: configuration.xml:160
+#, no-c-format
msgid "hibernate.connection.driver_class"
msgstr "hibernate.connection.driver_class"
-#: index.docbook:163
+#. Tag: emphasis
+#: configuration.xml:163
+#, no-c-format
msgid "JDBC driver class"
msgstr "jdbc 드라이버 클래스"
-#: index.docbook:168
+#. Tag: literal
+#: configuration.xml:168
+#, no-c-format
msgid "hibernate.connection.url"
msgstr "hibernate.connection.url"
-#: index.docbook:171
+#. Tag: emphasis
+#: configuration.xml:171
+#, no-c-format
msgid "JDBC URL"
msgstr "jdbc URL"
-#: index.docbook:176, index.docbook:272
+#. Tag: literal
+#: configuration.xml:176 configuration.xml:272
+#, no-c-format
msgid "hibernate.connection.username"
msgstr "hibernate.connection.username"
-#: index.docbook:179
+#. Tag: emphasis
+#: configuration.xml:179
+#, no-c-format
msgid "database user"
msgstr "데이터베이스 사용자"
-#: index.docbook:184, index.docbook:280
+#. Tag: literal
+#: configuration.xml:184 configuration.xml:280
+#, no-c-format
msgid "hibernate.connection.password"
msgstr "hibernate.connection.password"
-#: index.docbook:187
+#. Tag: emphasis
+#: configuration.xml:187
+#, no-c-format
msgid "database user password"
msgstr "데이터베이스 사용자 패스워드"
-#: index.docbook:192
+#. Tag: literal
+#: configuration.xml:192
+#, no-c-format
msgid "hibernate.connection.pool_size"
msgstr "hibernate.connection.pool_size"
-#: index.docbook:195
+#. Tag: emphasis
+#: configuration.xml:195
+#, no-c-format
msgid "maximum number of pooled connections"
msgstr "풀링된 커넥션들의 최대 개수"
-#: index.docbook:202
-msgid "Hibernate's own connection pooling algorithm is however quite rudimentary. It is intended to help you get started and is <emphasis>not intended for use in a production system</emphasis> or even for performance testing. You should use a third party pool for best performance and stability. Just replace the <literal>hibernate.connection.pool_size</literal> property with connection pool specific settings. This will turn off Hibernate's internal pool. For example, you might like to use C3P0."
-msgstr "하지만 Hibernate 자신의 커넥션 풀링 알고리즘은 아주 기본적이다. 그것은 당신이 시작하는 것을 도와주려고 의도되었고 <emphasis>제품 시스템 용도 또는 퍼포먼스 테스트용으로는 고안되지 않았다</emphasis>. 최상의 퍼포먼스와 안정성을 위해서는 제 3의 풀을 사용하라. 즉 <literal>hibernate.connection.pool_size</literal> 프로퍼티를 커넥션 풀 지정 설정들로 대체하라. 이것은 Hibernate의 내부 pool을 오프시킬 것이다. 예를 들어 당신은 C3P0를 사용할 수도 있다."
+#. Tag: para
+#: configuration.xml:202
+#, no-c-format
+msgid ""
+"Hibernate's own connection pooling algorithm is however quite rudimentary. "
+"It is intended to help you get started and is <emphasis>not intended for use "
+"in a production system</emphasis> or even for performance testing. You "
+"should use a third party pool for best performance and stability. Just "
+"replace the <literal>hibernate.connection.pool_size</literal> property with "
+"connection pool specific settings. This will turn off Hibernate's internal "
+"pool. For example, you might like to use C3P0."
+msgstr ""
+"하지만 Hibernate 자신의 커넥션 풀링 알고리즘은 아주 기본적이다. 그것은 당신"
+"이 시작하는 것을 도와주려고 의도되었고 <emphasis>제품 시스템 용도 또는 퍼포먼"
+"스 테스트용으로는 고안되지 않았다</emphasis>. 최상의 퍼포먼스와 안정성을 위해"
+"서는 제 3의 풀을 사용하라. 즉 <literal>hibernate.connection.pool_size</"
+"literal> 프로퍼티를 커넥션 풀 지정 설정들로 대체하라. 이것은 Hibernate의 내"
+"부 pool을 오프시킬 것이다. 예를 들어 당신은 C3P0를 사용할 수도 있다."
-#: index.docbook:212
-msgid "C3P0 is an open source JDBC connection pool distributed along with Hibernate in the <literal>lib</literal> directory. Hibernate will use its <literal>C3P0ConnectionProvider</literal> for connection pooling if you set <literal>hibernate.c3p0.*</literal> properties. If you'd like to use Proxool refer to the packaged <literal>hibernate.properties</literal> and the Hibernate web site for more information."
-msgstr "C3P0는 <literal>lib</literal> 디펙토리 속에 Hibernate에 배포된 오픈 소스 JDBC 커넥션 풀이다. 당신이 <literal>hibernate.c3p0.*</literal> 프로퍼티들을 설정할 경우 Hibernate는 커넥션 풀링을 위해 그것의 <literal>C3P0ConnectionProvider</literal>를 사용할 것이다. 만일 당신이 Proxool을 사용하고자 원할 경우 패키지화 된 <literal>hibernate.properties</literal>를 참조하고 추가 정보는 Hibernate 웹 사이트를 참조하라."
+#. Tag: para
+#: configuration.xml:212
+#, no-c-format
+msgid ""
+"C3P0 is an open source JDBC connection pool distributed along with Hibernate "
+"in the <literal>lib</literal> directory. Hibernate will use its "
+"<literal>C3P0ConnectionProvider</literal> for connection pooling if you set "
+"<literal>hibernate.c3p0.*</literal> properties. If you'd like to use Proxool "
+"refer to the packaged <literal>hibernate.properties</literal> and the "
+"Hibernate web site for more information."
+msgstr ""
+"C3P0는 <literal>lib</literal> 디펙토리 속에 Hibernate에 배포된 오픈 소스 "
+"JDBC 커넥션 풀이다. 당신이 <literal>hibernate.c3p0.*</literal> 프로퍼티들을 "
+"설정할 경우 Hibernate는 커넥션 풀링을 위해 그것의 "
+"<literal>C3P0ConnectionProvider</literal>를 사용할 것이다. 만일 당신이 "
+"Proxool을 사용하고자 원할 경우 패키지화 된 <literal>hibernate.properties</"
+"literal>를 참조하고 추가 정보는 Hibernate 웹 사이트를 참조하라."
-#: index.docbook:221
-msgid "Here is an example <literal>hibernate.properties</literal> file for C3P0:"
-msgstr "다음은 C3P0에 대한 사용하는 예제 <literal>hibernate.properties</literal> 파일이다:"
+#. Tag: para
+#: configuration.xml:221
+#, no-c-format
+msgid ""
+"Here is an example <literal>hibernate.properties</literal> file for C3P0:"
+msgstr ""
+"다음은 C3P0에 대한 사용하는 예제 <literal>hibernate.properties</literal> 파일"
+"이다:"
-#: index.docbook:225
+#. Tag: programlisting
+#: configuration.xml:225
+#, no-c-format
msgid ""
- "<![CDATA[hibernate.connection.driver_class = org.postgresql.Driver\n"
- "hibernate.connection.url = jdbc:postgresql://localhost/mydatabase\n"
- "hibernate.connection.username = myuser\n"
- "hibernate.connection.password = secret\n"
- "hibernate.c3p0.min_size=5\n"
- "hibernate.c3p0.max_size=20\n"
- "hibernate.c3p0.timeout=1800\n"
- "hibernate.c3p0.max_statements=50\n"
- "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
+"<![CDATA[hibernate.connection.driver_class = org.postgresql.Driver\n"
+"hibernate.connection.url = jdbc:postgresql://localhost/mydatabase\n"
+"hibernate.connection.username = myuser\n"
+"hibernate.connection.password = secret\n"
+"hibernate.c3p0.min_size=5\n"
+"hibernate.c3p0.max_size=20\n"
+"hibernate.c3p0.timeout=1800\n"
+"hibernate.c3p0.max_statements=50\n"
+"hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
msgstr ""
- "<![CDATA[hibernate.connection.driver_class = org.postgresql.Driver\n"
- "hibernate.connection.url = jdbc:postgresql://localhost/mydatabase\n"
- "hibernate.connection.username = myuser\n"
- "hibernate.connection.password = secret\n"
- "hibernate.c3p0.min_size=5\n"
- "hibernate.c3p0.max_size=20\n"
- "hibernate.c3p0.timeout=1800\n"
- "hibernate.c3p0.max_statements=50\n"
- "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
-#: index.docbook:227
-msgid "For use inside an application server, you should almost always configure Hibernate to obtain connections from an application server <literal>Datasource</literal> registered in JNDI. You'll need to set at least one of the following properties:"
-msgstr "어플리케이션 서버 내부의 용도로, 당신은 JNDI로 등록된 어플리케이션 서버 <literal>Datasource</literal>로부터 커넥션을 얻기 위해 항상 Hibernate를 구성해야 한다. 당신은 적어도 다음 프로퍼티들 중 하나를 최소한으로 설정할 필요가 있을 것이다."
+#. Tag: para
+#: configuration.xml:227
+#, no-c-format
+msgid ""
+"For use inside an application server, you should almost always configure "
+"Hibernate to obtain connections from an application server "
+"<literal>Datasource</literal> registered in JNDI. You'll need to set at "
+"least one of the following properties:"
+msgstr ""
+"어플리케이션 서버 내부의 용도로, 당신은 JNDI로 등록된 어플리케이션 서버 "
+"<literal>Datasource</literal>로부터 커넥션을 얻기 위해 항상 Hibernate를 구성"
+"해야 한다. 당신은 적어도 다음 프로퍼티들 중 하나를 최소한으로 설정할 필요가 "
+"있을 것이다."
-#: index.docbook:235
+#. Tag: title
+#: configuration.xml:235
+#, no-c-format
msgid "Hibernate Datasource Properties"
msgstr "Hibernate Datasource Properties"
-#: index.docbook:248
+#. Tag: literal
+#: configuration.xml:248
+#, no-c-format
msgid "hibernate.connection.datasource"
msgstr "hibernate.connection.datasource"
-#: index.docbook:251
+#. Tag: emphasis
+#: configuration.xml:251
+#, no-c-format
msgid "datasource JNDI name"
msgstr "데이터소스 JNDI 이름"
-#: index.docbook:256
+#. Tag: literal
+#: configuration.xml:256
+#, no-c-format
msgid "hibernate.jndi.url"
msgstr "hibernate.jndi.url"
-#: index.docbook:258
+#. Tag: entry
+#: configuration.xml:258
+#, fuzzy, no-c-format
msgid "<emphasis>URL of the JNDI provider</emphasis> (optional)"
-msgstr "<emphasis>JNDI 프로바이더의 URL</emphasis> (옵션)"
+msgstr "JNDI 프로바이더의 URL"
-#: index.docbook:264
+#. Tag: literal
+#: configuration.xml:264
+#, no-c-format
msgid "hibernate.jndi.class"
msgstr "hibernate.jndi.class"
-#: index.docbook:266
-msgid "<emphasis>class of the JNDI <literal>InitialContextFactory</literal></emphasis> (optional)"
-msgstr "<emphasis>JNDI <literal>InitialContextFactory</literal>의 클래스 </emphasis> (옵션)"
+#. Tag: entry
+#: configuration.xml:266
+#, no-c-format
+msgid ""
+"<emphasis>class of the JNDI <literal>InitialContextFactory</literal></"
+"emphasis> (optional)"
+msgstr ""
-#: index.docbook:274
+#. Tag: entry
+#: configuration.xml:274
+#, no-c-format
msgid "<emphasis>database user</emphasis> (optional)"
-msgstr "<emphasis>데이터베이스 사용자</emphasis> (옵션)"
+msgstr ""
-#: index.docbook:282
+#. Tag: entry
+#: configuration.xml:282
+#, no-c-format
msgid "<emphasis>database user password</emphasis> (optional)"
-msgstr "<emphasis>데이터베이스 사용자 패스워드</emphasis> (옵션)"
+msgstr ""
-#: index.docbook:290
-msgid "Here's an example <literal>hibernate.properties</literal> file for an application server provided JNDI datasource:"
-msgstr "다음은 어플리케이션 서버 제공 JNDI 데이터소스용 예제 <literal>hibernate.properties</literal> 파일이다:"
+#. Tag: para
+#: configuration.xml:290
+#, no-c-format
+msgid ""
+"Here's an example <literal>hibernate.properties</literal> file for an "
+"application server provided JNDI datasource:"
+msgstr ""
+"다음은 어플리케이션 서버 제공 JNDI 데이터소스용 예제 <literal>hibernate."
+"properties</literal> 파일이다:"
-#: index.docbook:295
+#. Tag: programlisting
+#: configuration.xml:295
+#, no-c-format
msgid ""
- "<![CDATA[hibernate.connection.datasource = java:/comp/env/jdbc/test\n"
- "hibernate.transaction.factory_class = \\\n"
- " org.hibernate.transaction.JTATransactionFactory\n"
- "hibernate.transaction.manager_lookup_class = \\\n"
- " org.hibernate.transaction.JBossTransactionManagerLookup\n"
- "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
+"<![CDATA[hibernate.connection.datasource = java:/comp/env/jdbc/test\n"
+"hibernate.transaction.factory_class = \\\n"
+" org.hibernate.transaction.JTATransactionFactory\n"
+"hibernate.transaction.manager_lookup_class = \\\n"
+" org.hibernate.transaction.JBossTransactionManagerLookup\n"
+"hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
msgstr ""
- "<![CDATA[hibernate.connection.datasource = java:/comp/env/jdbc/test\n"
- "hibernate.transaction.factory_class = \\\n"
- " org.hibernate.transaction.JTATransactionFactory\n"
- "hibernate.transaction.manager_lookup_class = \\\n"
- " org.hibernate.transaction.JBossTransactionManagerLookup\n"
- "hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect]]>"
-#: index.docbook:297
-msgid "JDBC connections obtained from a JNDI datasource will automatically participate in the container-managed transactions of the application server."
-msgstr "JNDI datasource로부터 얻어진 JDBC 커넥션들은 어플리케이션 서버의 컨테이너에 의해 관리되는 트랜잭션들에 자동적으로 참여할 것이다."
+#. Tag: para
+#: configuration.xml:297
+#, no-c-format
+msgid ""
+"JDBC connections obtained from a JNDI datasource will automatically "
+"participate in the container-managed transactions of the application server."
+msgstr ""
+"JNDI datasource로부터 얻어진 JDBC 커넥션들은 어플리케이션 서버의 컨테이너에 "
+"의해 관리되는 트랜잭션들에 자동적으로 참여할 것이다."
-#: index.docbook:302
-msgid "Arbitrary connection properties may be given by prepending \"<literal>hibernate.connection</literal>\" to the property name. For example, you may specify a <literal>charSet</literal> using <literal>hibernate.connection.charSet</literal>."
-msgstr "임의의 커넥션 프로퍼티들은 프로퍼티 이름 앞에 \"<literal>hibernate.connnection</literal>\"을 첨가하여 부여될 수 있다. 예를 들어 당신은 <literal>hibernate.connection.charSet</literal>을 사용하여 <literal>charSet</literal>을 지정할 수도 있다."
+#. Tag: para
+#: configuration.xml:302
+#, no-c-format
+msgid ""
+"Arbitrary connection properties may be given by prepending "
+"\"<literal>hibernate.connection</literal>\" to the property name. For "
+"example, you may specify a <literal>charSet</literal> using "
+"<literal>hibernate.connection.charSet</literal>."
+msgstr ""
+"임의의 커넥션 프로퍼티들은 프로퍼티 이름 앞에 \"<literal>hibernate."
+"connnection</literal>\"을 첨가하여 부여될 수 있다. 예를 들어 당신은 "
+"<literal>hibernate.connection.charSet</literal>을 사용하여 <literal>charSet</"
+"literal>을 지정할 수도 있다."
-#: index.docbook:308
-msgid "You may define your own plugin strategy for obtaining JDBC connections by implementing the interface <literal>org.hibernate.connection.ConnectionProvider</literal>. You may select a custom implementation by setting <literal>hibernate.connection.provider_class</literal>."
-msgstr "당신은 <literal>org.hibernate.connection.ConnectionProvider</literal> 인터페이스를 구현함으로써 JDBC 커넥션들을 얻는 당신 자신의 플러그인 방도를 정의할수도 있다. 당신은 <literal>hibernate.connection.provider_class</literal>를 설정하여 맞춤형 구현을 선택할 수도 있다."
+#. Tag: para
+#: configuration.xml:308
+#, no-c-format
+msgid ""
+"You may define your own plugin strategy for obtaining JDBC connections by "
+"implementing the interface <literal>org.hibernate.connection."
+"ConnectionProvider</literal>. You may select a custom implementation by "
+"setting <literal>hibernate.connection.provider_class</literal>."
+msgstr ""
+"당신은 <literal>org.hibernate.connection.ConnectionProvider</literal> 인터페"
+"이스를 구현함으로써 JDBC 커넥션들을 얻는 당신 자신의 플러그인 방도를 정의할수"
+"도 있다. 당신은 <literal>hibernate.connection.provider_class</literal>를 설정"
+"하여 맞춤형 구현을 선택할 수도 있다."
-#: index.docbook:317
+#. Tag: title
+#: configuration.xml:317
+#, no-c-format
msgid "Optional configuration properties"
msgstr "선택적인 구성 프로퍼티들"
-#: index.docbook:319
-msgid "There are a number of other properties that control the behaviour of Hibernate at runtime. All are optional and have reasonable default values."
-msgstr "실행 시에 Hibernate의 행위를 제어하는 많은 다른 프로퍼티들이 존재한다. 모든 것이 옵션이지만 합당한 디폴트 값들을 갖는다."
+#. Tag: para
+#: configuration.xml:319
+#, no-c-format
+msgid ""
+"There are a number of other properties that control the behaviour of "
+"Hibernate at runtime. All are optional and have reasonable default values."
+msgstr ""
+"실행 시에 Hibernate의 행위를 제어하는 많은 다른 프로퍼티들이 존재한다. 모든 "
+"것이 옵션이지만 합당한 디폴트 값들을 갖는다."
-#: index.docbook:324
-msgid "<emphasis>Warning: some of these properties are \"system-level\" only.</emphasis> System-level properties can be set only via <literal>java -Dproperty=value</literal> or <literal>hibernate.properties</literal>. They may <emphasis>not</emphasis> be set by the other techniques described above."
-msgstr "<emphasis>경고: 이들 프로퍼티들 중 몇몇은 \"system-level\" 전용이다.</emphasis> 시스템 레벨 프로퍼티들은 오직 <literal>java -Dproperty=value</literal> 또는 <literal>hibernate.properties</literal>를 통해서만 설정될 수 있다. 그것들은 위에 설명된 다른 기법들에 의해 설정될 수 <emphasis>없다</emphasis>."
+#. Tag: para
+#: configuration.xml:324
+#, no-c-format
+msgid ""
+"<emphasis>Warning: some of these properties are \"system-level\" only.</"
+"emphasis> System-level properties can be set only via <literal>java -"
+"Dproperty=value</literal> or <literal>hibernate.properties</literal>. They "
+"may <emphasis>not</emphasis> be set by the other techniques described above."
+msgstr ""
+"<emphasis>경고: 이들 프로퍼티들 중 몇몇은 \"system-level\" 전용이다.</"
+"emphasis> 시스템 레벨 프로퍼티들은 오직 <literal>java -Dproperty=value</"
+"literal> 또는 <literal>hibernate.properties</literal>를 통해서만 설정될 수 있"
+"다. 그것들은 위에 설명된 다른 기법들에 의해 설정될 수 <emphasis>없다</"
+"emphasis>."
-#: index.docbook:332
+#. Tag: title
+#: configuration.xml:332
+#, no-c-format
msgid "Hibernate Configuration Properties"
msgstr "Hibernate 구성 프로퍼티들"
-#: index.docbook:345
+#. Tag: literal
+#: configuration.xml:345
+#, no-c-format
msgid "hibernate.dialect"
msgstr "hibernate.dialect"
-#: index.docbook:347
-msgid "The classname of a Hibernate <literal>Dialect</literal> which allows Hibernate to generate SQL optimized for a particular relational database."
-msgstr "특정 관계형 데이터베이스에 최적화 된 SQL을 생성시키는 것을 Hibernate에게 허용해주는 Hibernate <literal>Dialect</literal>의 클래스명."
+#. Tag: entry
+#: configuration.xml:347
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a Hibernate <literal>Dialect</literal> which allows "
+"Hibernate to generate SQL optimized for a particular relational database."
+msgstr ""
+"특정 관계형 데이터베이스에 최적화 된 SQL을 생성시키는 것을 Hibernate에게 허용"
+"해주는 Hibernate <placeholder-1/>의 클래스명. <placeholder-2/>"
-#: index.docbook:351
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>full.classname.of.Dialect</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>full.classname.of.Dialect</literal>"
+#. Tag: para
+#: configuration.xml:351
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>full.classname.of.Dialect</"
+"literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:359
+#. Tag: literal
+#: configuration.xml:359
+#, no-c-format
msgid "hibernate.show_sql"
msgstr "hibernate.show_sql"
-#: index.docbook:361
-msgid "Write all SQL statements to console. This is an alternative to setting the log category <literal>org.hibernate.SQL</literal> to <literal>debug</literal>."
-msgstr "모든 SQL 문장들을 콘솔에 기록한다. 이것은 로그 카테고리 <literal>org.hibernate.SQL</literal>를 <literal>debug</literal>로 설정하는 것에 대한 하나의 다른 방법이다."
+#. Tag: entry
+#: configuration.xml:361
+#, fuzzy, no-c-format
+msgid ""
+"Write all SQL statements to console. This is an alternative to setting the "
+"log category <literal>org.hibernate.SQL</literal> to <literal>debug</"
+"literal>."
+msgstr ""
+"모든 SQL 문장들을 콘솔에 기록한다. 이것은 로그 카테고리 <placeholder-1/>를 "
+"<placeholder-2/>로 설정하는 것에 대한 하나의 다른 방법이다. <placeholder-3/>"
-#: index.docbook:365, index.docbook:377, index.docbook:471, index.docbook:484, index.docbook:497, index.docbook:510, index.docbook:564, index.docbook:591, index.docbook:605, index.docbook:660, index.docbook:888, index.docbook:903, index.docbook:993
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>true</literal> | <literal>false</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>true</literal> | <literal>false</literal>"
+#. Tag: para
+#: configuration.xml:365 configuration.xml:377 configuration.xml:471
+#: configuration.xml:484 configuration.xml:497 configuration.xml:510
+#: configuration.xml:564 configuration.xml:591 configuration.xml:605
+#: configuration.xml:660 configuration.xml:888 configuration.xml:903
+#: configuration.xml:993
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>true</literal> | "
+"<literal>false</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:373
+#. Tag: literal
+#: configuration.xml:373
+#, no-c-format
msgid "hibernate.format_sql"
msgstr "hibernate.format_sql"
-#: index.docbook:375
+#. Tag: entry
+#: configuration.xml:375
+#, fuzzy, no-c-format
msgid "Pretty print the SQL in the log and console."
-msgstr "로그와 콘솔 속에 SQL을 깔끔하게 프린트한다."
+msgstr "로그와 콘솔 속에 SQL을 깔끔하게 프린트한다. <placeholder-1/>"
-#: index.docbook:385
+#. Tag: literal
+#: configuration.xml:385
+#, no-c-format
msgid "hibernate.default_schema"
msgstr "hibernate.default_schema"
-#: index.docbook:387
-msgid "Qualify unqualified table names with the given schema/tablespace in generated SQL."
-msgstr "생성된 SQL 내에 주어진 schema/tablespace로서 수식이 없는 테이블이름들을 수식한다."
+#. Tag: entry
+#: configuration.xml:387
+#, fuzzy, no-c-format
+msgid ""
+"Qualify unqualified table names with the given schema/tablespace in "
+"generated SQL."
+msgstr ""
+"생성된 SQL 내에 주어진 schema/tablespace로서 수식이 없는 테이블이름들을 수식"
+"한다. <placeholder-1/>"
-#: index.docbook:390
+#. Tag: para
+#: configuration.xml:390
+#, fuzzy, no-c-format
msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>SCHEMA_NAME</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>SCHEMA_NAME</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:398
+#. Tag: literal
+#: configuration.xml:398
+#, no-c-format
msgid "hibernate.default_catalog"
msgstr "hibernate.default_catalog"
-#: index.docbook:400
-msgid "Qualify unqualified table names with the given catalog in generated SQL."
-msgstr "주어진 SQL 내에 주어진 카타록으로서 수식이 없는 테이블이름들을 수식한다."
+#. Tag: entry
+#: configuration.xml:400
+#, fuzzy, no-c-format
+msgid ""
+"Qualify unqualified table names with the given catalog in generated SQL."
+msgstr ""
+"주어진 SQL 내에 주어진 카타록으로서 수식이 없는 테이블이름들을 수식한다. "
+"<placeholder-1/>"
-#: index.docbook:403
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>CATALOG_NAME</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>CATALOG_NAME</literal>"
+#. Tag: para
+#: configuration.xml:403
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>CATALOG_NAME</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:411
+#. Tag: literal
+#: configuration.xml:411
+#, no-c-format
msgid "hibernate.session_factory_name"
msgstr "hibernate.session_factory_name"
-#: index.docbook:413
-msgid "The <literal>SessionFactory</literal> will be automatically bound to this name in JNDI after it has been created."
-msgstr "<literal>SessionFactory</literal>는 그것이 생성된 후에 JNDI 내에서 이 이름에 자동적으로 바인드 될 것이다."
+#. Tag: entry
+#: configuration.xml:413
+#, fuzzy, no-c-format
+msgid ""
+"The <literal>SessionFactory</literal> will be automatically bound to this "
+"name in JNDI after it has been created."
+msgstr ""
+"<placeholder-1/>는 그것이 생성된 후에 JNDI 내에서 이 이름에 자동적으로 바인"
+"드 될 것이다. <placeholder-2/>"
-#: index.docbook:416, index.docbook:859
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>jndi/composite/name</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>jndi/composite/name</literal>"
+#. Tag: para
+#: configuration.xml:416 configuration.xml:859
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>jndi/composite/name</"
+"literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:424
+#. Tag: literal
+#: configuration.xml:424
+#, no-c-format
msgid "hibernate.max_fetch_depth"
msgstr "hibernate.max_fetch_depth"
-#: index.docbook:426
-msgid "Set a maximum \"depth\" for the outer join fetch tree for single-ended associations (one-to-one, many-to-one). A <literal>0</literal> disables default outer join fetching."
-msgstr "single-ended 연관관계들(one-to-one, many-to-one)의 경우에 outer join fetch 트리의 최대 \"깊이\"를 설정한다. <literal>0</literal>은 디폴트 outer join fetching을 사용불가능하게 만든다."
+#. Tag: entry
+#: configuration.xml:426
+#, fuzzy, no-c-format
+msgid ""
+"Set a maximum \"depth\" for the outer join fetch tree for single-ended "
+"associations (one-to-one, many-to-one). A <literal>0</literal> disables "
+"default outer join fetching."
+msgstr ""
+"single-ended 연관관계들(one-to-one, many-to-one)의 경우에 outer join fetch 트"
+"리의 최대 \"깊이\"를 설정한다. <placeholder-1/>은 디폴트 outer join fetching"
+"을 사용불가능하게 만든다. <placeholder-2/>"
-#: index.docbook:430
-msgid "<emphasis role=\"strong\">eg.</emphasis> recommended values between <literal>0</literal> and <literal>3</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>0</literal>과 <literal>3</literal> 사이의 값들이권장된다"
+#. Tag: para
+#: configuration.xml:430
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> recommended values between "
+"<literal>0</literal> and <literal>3</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>0</literal>과 <literal>3</"
+"literal> 사이의 값들이권장된다"
-#: index.docbook:439
+#. Tag: literal
+#: configuration.xml:439
+#, no-c-format
msgid "hibernate.default_batch_fetch_size"
msgstr "hibernate.default_batch_fetch_size"
-#: index.docbook:441
+#. Tag: entry
+#: configuration.xml:441
+#, fuzzy, no-c-format
msgid "Set a default size for Hibernate batch fetching of associations."
-msgstr "연관들의 Hibernate 배치 페칭에 대한 디폴트 크기를 설정한다."
+msgstr ""
+"연관들의 Hibernate 배치 페칭에 대한 디폴트 크기를 설정한다. <placeholder-1/>"
-#: index.docbook:443
-msgid "<emphasis role=\"strong\">eg.</emphasis> recommended values <literal>4</literal>, <literal>8</literal>, <literal>16</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> 권장되는 값들은 <literal>4</literal>, <literal>8</literal>, <literal>16</literal>"
+#. Tag: para
+#: configuration.xml:443
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> recommended values <literal>4</"
+"literal>, <literal>8</literal>, <literal>16</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis> 권장되는 값들은 <literal>4</"
+"literal>, <literal>8</literal>, <literal>16</literal>"
-#: index.docbook:452
+#. Tag: literal
+#: configuration.xml:452
+#, no-c-format
msgid "hibernate.default_entity_mode"
msgstr "hibernate.default_entity_mode"
-#: index.docbook:454
-msgid "Set a default mode for entity representation for all sessions opened from this <literal>SessionFactory</literal>"
-msgstr "이 <literal>SessionFactory</literal>로부터 열려진 모든 세션들에 대해 엔티티 표현을 디폴트 모드로 설정한다"
+#. Tag: entry
+#: configuration.xml:454
+#, fuzzy, no-c-format
+msgid ""
+"Set a default mode for entity representation for all sessions opened from "
+"this <literal>SessionFactory</literal>"
+msgstr ""
+"이 <placeholder-1/>로부터 열려진 모든 세션들에 대해 엔티티 표현을 디폴트 모드"
+"로 설정한다 <placeholder-2/>"
-#: index.docbook:457
-msgid "<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</literal>"
-msgstr "<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</literal>"
+#. Tag: para
+#: configuration.xml:457
+#, no-c-format
+msgid ""
+"<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</"
+"literal>"
+msgstr ""
+"<literal>dynamic-map</literal>, <literal>dom4j</literal>, <literal>pojo</"
+"literal>"
-#: index.docbook:465
+#. Tag: literal
+#: configuration.xml:465
+#, no-c-format
msgid "hibernate.order_updates"
msgstr "hibernate.order_updates"
-#: index.docbook:467
-msgid "Force Hibernate to order SQL updates by the primary key value of the items being updated. This will result in fewer transaction deadlocks in highly concurrent systems."
-msgstr "업데이트 중인 항목들의 프라이머리 키 값에 의해 SQL 업데이트들이 순서(ordering)지워지도록 Hibernate에게 강제시킨다. 이것은 고도의 동시성 시스템들에서 더 적은 트랜잭션 데드락(deadlock)들로 귀결될 것이다"
+#. Tag: entry
+#: configuration.xml:467
+#, fuzzy, no-c-format
+msgid ""
+"Force Hibernate to order SQL updates by the primary key value of the items "
+"being updated. This will result in fewer transaction deadlocks in highly "
+"concurrent systems."
+msgstr ""
+"업데이트 중인 항목들의 프라이머리 키 값에 의해 SQL 업데이트들이 순서"
+"(ordering)지워지도록 Hibernate에게 강제시킨다. 이것은 고도의 동시성 시스템들"
+"에서 더 적은 트랜잭션 데드락(deadlock)들로 귀결될 것이다 <placeholder-1/>"
-#: index.docbook:479
+#. Tag: literal
+#: configuration.xml:479
+#, no-c-format
msgid "hibernate.generate_statistics"
msgstr "hibernate.generate_statistics"
-#: index.docbook:481
-msgid "If enabled, Hibernate will collect statistics useful for performance tuning."
-msgstr "이용 가능하게 되면, Hibernate는 퍼포먼스 튜닝에 유용한 통계들을 수집할 것이다."
+#. Tag: entry
+#: configuration.xml:481
+#, fuzzy, no-c-format
+msgid ""
+"If enabled, Hibernate will collect statistics useful for performance tuning."
+msgstr ""
+"이용 가능하게 되면, Hibernate는 퍼포먼스 튜닝에 유용한 통계들을 수집할 것이"
+"다. <placeholder-1/>"
-#: index.docbook:492
+#. Tag: literal
+#: configuration.xml:492
+#, no-c-format
msgid "hibernate.use_identifier_rollback"
msgstr "hibernate.use_identifer_rollback"
-#: index.docbook:494
-msgid "If enabled, generated identifier properties will be reset to default values when objects are deleted."
-msgstr "이용 가능하게 되면, 객체가 삭제될 때 생성된 식별자 프로퍼티들은 디폴트 값들로 재설정될 것이다."
+#. Tag: entry
+#: configuration.xml:494
+#, fuzzy, no-c-format
+msgid ""
+"If enabled, generated identifier properties will be reset to default values "
+"when objects are deleted."
+msgstr ""
+"이용 가능하게 되면, 객체가 삭제될 때 생성된 식별자 프로퍼티들은 디폴트 값들"
+"로 재설정될 것이다. <placeholder-1/>"
-#: index.docbook:505
+#. Tag: literal
+#: configuration.xml:505
+#, no-c-format
msgid "hibernate.use_sql_comments"
msgstr "hibernate.use_sql_comments"
-#: index.docbook:507
-msgid "If turned on, Hibernate will generate comments inside the SQL, for easier debugging, defaults to <literal>false</literal>."
-msgstr "이용 가능하게 되면, Hibernate는 보다 쉬운 디버깅을 위해 SQL 내에 주석들을 생성시킬 것이다. 디폴트는 <literal>false</literal>."
+#. Tag: entry
+#: configuration.xml:507
+#, fuzzy, no-c-format
+msgid ""
+"If turned on, Hibernate will generate comments inside the SQL, for easier "
+"debugging, defaults to <literal>false</literal>."
+msgstr ""
+"이용 가능하게 되면, Hibernate는 보다 쉬운 디버깅을 위해 SQL 내에 주석들을 생"
+"성시킬 것이다. 디폴트는 <placeholder-1/>. <placeholder-2/>"
-#: index.docbook:521
+#. Tag: title
+#: configuration.xml:521
+#, no-c-format
msgid "Hibernate JDBC and Connection Properties"
msgstr "Hibernate JDBC 및 커넥션 프로퍼티들"
-#: index.docbook:536
+#. Tag: literal
+#: configuration.xml:536
+#, no-c-format
msgid "hibernate.jdbc.fetch_size"
msgstr "hibernate.jdbc.fetch_size"
-#: index.docbook:538
-msgid "A non-zero value determines the JDBC fetch size (calls <literal>Statement.setFetchSize()</literal>)."
-msgstr "0 아닌 값은 JDBC fetch 사이즈를 결정한다(<literal>Statement.setFetchSize()</literal>을 호출한다 )."
+#. Tag: entry
+#: configuration.xml:538
+#, fuzzy, no-c-format
+msgid ""
+"A non-zero value determines the JDBC fetch size (calls <literal>Statement."
+"setFetchSize()</literal>)."
+msgstr ""
+"0 아닌 값은 JDBC fetch 사이즈를 결정한다(<placeholder-1/>을 호출한다 )."
-#: index.docbook:545
+#. Tag: literal
+#: configuration.xml:545
+#, no-c-format
msgid "hibernate.jdbc.batch_size"
msgstr "hibernate.jdbc.batch_size"
-#: index.docbook:547
+#. Tag: entry
+#: configuration.xml:547
+#, fuzzy, no-c-format
msgid "A non-zero value enables use of JDBC2 batch updates by Hibernate."
-msgstr "0 아닌 값은 Hibernate에 의한 JDBC2 배치 업데이트의 사용을 이용 가능하게 한다."
+msgstr ""
+"0 아닌 값은 Hibernate에 의한 JDBC2 배치 업데이트의 사용을 이용 가능하게 한"
+"다. <placeholder-1/>"
-#: index.docbook:549
-msgid "<emphasis role=\"strong\">eg.</emphasis> recommended values between <literal>5</literal> and <literal>30</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>5</literal>와 <literal>30</literal> 사이의 값들이 권장된다"
+#. Tag: para
+#: configuration.xml:549
+#, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> recommended values between "
+"<literal>5</literal> and <literal>30</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>5</literal>와 <literal>30</"
+"literal> 사이의 값들이 권장된다"
-#: index.docbook:557
+#. Tag: literal
+#: configuration.xml:557
+#, no-c-format
msgid "hibernate.jdbc.batch_versioned_data"
msgstr "hibernate.jdbc.batch_versioned_data"
-#: index.docbook:559
-msgid "Set this property to <literal>true</literal> if your JDBC driver returns correct row counts from <literal>executeBatch()</literal> (it is usually safe to turn this option on). Hibernate will then use batched DML for automatically versioned data. Defaults to <literal>false</literal>."
-msgstr "당신의 JDBC 드라이버가 <literal>executeBatch()</literal>로부터 정확한 행 카운트들을 반환할 경우에 이 프로퍼티를 <literal>true</literal>로 설정하라(대개 이 옵션을 사용 가능하게 하는 것이 안전하다). 그러면 Hibernate는 자동적으로 버전화 된 데이터에 대해 배치화된(batched) DML을 사용할 것이다. 디폴트는 <literal>false</literal>."
+#. Tag: entry
+#: configuration.xml:559
+#, fuzzy, no-c-format
+msgid ""
+"Set this property to <literal>true</literal> if your JDBC driver returns "
+"correct row counts from <literal>executeBatch()</literal> (it is usually "
+"safe to turn this option on). Hibernate will then use batched DML for "
+"automatically versioned data. Defaults to <literal>false</literal>."
+msgstr ""
+"당신의 JDBC 드라이버가 <placeholder-1/>로부터 정확한 행 카운트들을 반환할 경"
+"우에 이 프로퍼티를 <placeholder-2/>로 설정하라(대개 이 옵션을 사용 가능하게 "
+"하는 것이 안전하다). 그러면 Hibernate는 자동적으로 버전화 된 데이터에 대해 배"
+"치화된(batched) DML을 사용할 것이다. 디폴트는 <placeholder-3/>. <placeholder-"
+"4/>"
-#: index.docbook:572
+#. Tag: literal
+#: configuration.xml:572
+#, no-c-format
msgid "hibernate.jdbc.factory_class"
msgstr "hibernate.jdbc.factory_class"
-#: index.docbook:574
-msgid "Select a custom <literal>Batcher</literal>. Most applications will not need this configuration property."
-msgstr "맞춤형 <literal>Batcher</literal>를 선택한다. 대부분의 어플리케이션들은 이 구성 프로퍼티를 필요로 하지 않을 것이다."
+#. Tag: entry
+#: configuration.xml:574
+#, fuzzy, no-c-format
+msgid ""
+"Select a custom <literal>Batcher</literal>. Most applications will not need "
+"this configuration property."
+msgstr ""
+"맞춤형 <placeholder-1/>를 선택한다. 대부분의 어플리케이션들은 이 구성 프로퍼"
+"티를 필요로 하지 않을 것이다. <placeholder-2/>"
-#: index.docbook:577
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of.BatcherFactory</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>classname.of.BatcherFactory</literal>"
+#. Tag: para
+#: configuration.xml:577
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of."
+"BatcherFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:585
+#. Tag: literal
+#: configuration.xml:585
+#, no-c-format
msgid "hibernate.jdbc.use_scrollable_resultset"
msgstr "hibernate.jdbc.use_scrollable_resultset"
-#: index.docbook:587
-msgid "Enables use of JDBC2 scrollable resultsets by Hibernate. This property is only necessary when using user supplied JDBC connections, Hibernate uses connection metadata otherwise."
-msgstr "Hibernate에 의한 JDBC2 스크롤 가능한 결과셋들의 사용을 가능하게 해준다. 이 프로퍼티는 사용자가 제공한 JDBC커넥션들을 사용할 때에만 필수적이고, 그 밖의 경우 Hibernate는 커넥션 메타데이터를 사용한다."
+#. Tag: entry
+#: configuration.xml:587
+#, fuzzy, no-c-format
+msgid ""
+"Enables use of JDBC2 scrollable resultsets by Hibernate. This property is "
+"only necessary when using user supplied JDBC connections, Hibernate uses "
+"connection metadata otherwise."
+msgstr ""
+"Hibernate에 의한 JDBC2 스크롤 가능한 결과셋들의 사용을 가능하게 해준다. 이 프"
+"로퍼티는 사용자가 제공한 JDBC커넥션들을 사용할 때에만 필수적이고, 그 밖의 경"
+"우 Hibernate는 커넥션 메타데이터를 사용한다. <placeholder-1/>"
-#: index.docbook:599
+#. Tag: literal
+#: configuration.xml:599
+#, no-c-format
msgid "hibernate.jdbc.use_streams_for_binary"
msgstr "hibernate.jdbc.use_streams_for_binary"
-#: index.docbook:601
-msgid "Use streams when writing/reading <literal>binary</literal> or <literal>serializable</literal> types to/from JDBC (system-level property)."
-msgstr "<literal>binary</literal> 또는 <literal>serializable</literal> 타입들을 JDBC로 기록하고 /JDBC로부터 <literal>binary</literal> 또는 <literal>serializable</literal> 타입들을 읽어들일 때 스트림들을 사용한다(시스템-레벨 프로퍼티)."
+#. Tag: entry
+#: configuration.xml:601
+#, fuzzy, no-c-format
+msgid ""
+"Use streams when writing/reading <literal>binary</literal> or "
+"<literal>serializable</literal> types to/from JDBC (system-level property)."
+msgstr ""
+"FUZZY! <placeholder-1/> 또는 <placeholder-2/> 타입들을 읽어들일 때 스트림들"
+"을 사용한다(시스템-레벨 프로퍼티). <placeholder-3/>"
-#: index.docbook:613
+#. Tag: literal
+#: configuration.xml:613
+#, no-c-format
msgid "hibernate.jdbc.use_get_generated_keys"
msgstr "hibernate.jdbc.use_get_generated_keys"
-#: index.docbook:615
-msgid "Enable use of JDBC3 <literal>PreparedStatement.getGeneratedKeys()</literal> to retrieve natively generated keys after insert. Requires JDBC3+ driver and JRE1.4+, set to false if your driver has problems with the Hibernate identifier generators. By default, tries to determine the driver capabilities using connection metadata."
-msgstr "insert 후에 고유하게 생성된 키들을 검색하는데 JDBC3 <literal>PreparedStatement.getGeneratedKeys()</literal>의 사용을 이용 가능하도록 만든다. JDBC3+ 드라이버와 JRE1.4+를 필요로 하고, 당신의 드라이버가 Hibernate 식별자 생성자들에 문제가 있을 경우에 false로 설정하라. 디폴트로 커넥션 메타 데이터를 사용하여 드라이버 가용성들을 결정하려고 시도하라."
+#. Tag: entry
+#: configuration.xml:615
+#, fuzzy, no-c-format
+msgid ""
+"Enable use of JDBC3 <literal>PreparedStatement.getGeneratedKeys()</literal> "
+"to retrieve natively generated keys after insert. Requires JDBC3+ driver and "
+"JRE1.4+, set to false if your driver has problems with the Hibernate "
+"identifier generators. By default, tries to determine the driver "
+"capabilities using connection metadata."
+msgstr ""
+"insert 후에 고유하게 생성된 키들을 검색하는데 JDBC3 <placeholder-1/>의 사용"
+"을 이용 가능하도록 만든다. JDBC3+ 드라이버와 JRE1.4+를 필요로 하고, 당신의 드"
+"라이버가 Hibernate 식별자 생성자들에 문제가 있을 경우에 false로 설정하라. 디"
+"폴트로 커넥션 메타 데이터를 사용하여 드라이버 가용성들을 결정하려고 시도하"
+"라. <placeholder-2/>"
-#: index.docbook:621, index.docbook:751, index.docbook:763, index.docbook:777, index.docbook:815
+#. Tag: para
+#: configuration.xml:621 configuration.xml:751 configuration.xml:763
+#: configuration.xml:777 configuration.xml:815
+#, fuzzy, no-c-format
msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>true|false</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>true|false</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:629
+#. Tag: literal
+#: configuration.xml:629
+#, no-c-format
msgid "hibernate.connection.provider_class"
msgstr "hibernate.connection.provider_class"
-#: index.docbook:631
-msgid "The classname of a custom <literal>ConnectionProvider</literal> which provides JDBC connections to Hibernate."
-msgstr "Hibernate에 JDBC 커넥션들을 제공하는 맞춤형 <literal>ConnectionProvider</literal>의 클래스명."
+#. Tag: entry
+#: configuration.xml:631
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a custom <literal>ConnectionProvider</literal> which "
+"provides JDBC connections to Hibernate."
+msgstr ""
+"Hibernate에 JDBC 커넥션들을 제공하는 맞춤형 <placeholder-1/>의 클래스명. "
+"<placeholder-2/>"
-#: index.docbook:634
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of.ConnectionProvider</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>classname.of.ConnectionProvider</literal>"
+#. Tag: para
+#: configuration.xml:634
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of."
+"ConnectionProvider</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:642
+#. Tag: literal
+#: configuration.xml:642
+#, no-c-format
msgid "hibernate.connection.isolation"
msgstr "hibernate.connection.isolation"
-#: index.docbook:644
-msgid "Set the JDBC transaction isolation level. Check <literal>java.sql.Connection</literal> for meaningful values but note that most databases do not support all isolation levels."
-msgstr "JDBC transaction isolation 레벨을 설정한다. 의미있는 값들로 <literal>java.sql.Connection</literal>을 체크하지만 대부분의 데이터베이스들이 모든 격리(isolate) 레벨들을 지원하지 않음을 노트하라."
+#. Tag: entry
+#: configuration.xml:644
+#, fuzzy, no-c-format
+msgid ""
+"Set the JDBC transaction isolation level. Check <literal>java.sql."
+"Connection</literal> for meaningful values but note that most databases do "
+"not support all isolation levels."
+msgstr ""
+"JDBC transaction isolation 레벨을 설정한다. 의미있는 값들로 <placeholder-1/>"
+"을 체크하지만 대부분의 데이터베이스들이 모든 격리(isolate) 레벨들을 지원하지 "
+"않음을 노트하라. <placeholder-2/>"
-#: index.docbook:648
+#. Tag: para
+#: configuration.xml:648
+#, fuzzy, no-c-format
msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>1, 2, 4, 8</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>1, 2, 4, 8</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:656
+#. Tag: literal
+#: configuration.xml:656
+#, no-c-format
msgid "hibernate.connection.autocommit"
msgstr "hibernate.connection.autocommit"
-#: index.docbook:658
+#. Tag: entry
+#: configuration.xml:658
+#, fuzzy, no-c-format
msgid "Enables autocommit for JDBC pooled connections (not recommended)."
-msgstr "JDBC 풀링된 커넥션들에 대해 자동커밋을 이용 가능하도록 한다(권장되지 않음)."
+msgstr ""
+"JDBC 풀링된 커넥션들에 대해 자동커밋을 이용 가능하도록 한다(권장되지 않음). "
+"<placeholder-1/>"
-#: index.docbook:668
+#. Tag: literal
+#: configuration.xml:668
+#, no-c-format
msgid "hibernate.connection.release_mode"
msgstr "hibernate.connection.release_mode"
-#: index.docbook:670
-msgid "Specify when Hibernate should release JDBC connections. By default, a JDBC connection is held until the session is explicitly closed or disconnected. For an application server JTA datasource, you should use <literal>after_statement</literal> to aggressively release connections after every JDBC call. For a non-JTA connection, it often makes sense to release the connection at the end of each transaction, by using <literal>after_transaction</literal>. <literal>auto</literal> will choose <literal>after_statement</literal> for the JTA and CMT transaction strategies and <literal>after_transaction</literal> for the JDBC transaction strategy."
-msgstr "Hibernate가 JDBC 커넥션들을 해제하게 될 시점을 지정한다. 디폴트로 한 개의 JDBC 커넥션은 그 세션이 명시적으로 닫히거나 연결해제되기 전까지 보관된다. 어플리케이션 트랜잭션 서버 JTA 데이터소스의 경우, 당신은 모든 JDBC 호출 후에 커넥션들을 과감하게 해제시키기 위해 <literal>after_statement</literal>를 사용해야 한다. 비-JTA 연결의 경우, <literal>after_transaction</literal>을 사용하여 각각의 트랜잭션의 끝에서 커넥션들을 해제시키는 것이 종종 의미가 있다. <literal>auto</literal>는 JTA 및 CMT 트랜잭션 방도들의 경우에 <literal>after_statement</literal>를 선택하고 JDBC 트랜잭션 방도에 대해 <literal>after_transaction</literal>를 선택할 것이다."
+#. Tag: entry
+#: configuration.xml:670
+#, fuzzy, no-c-format
+msgid ""
+"Specify when Hibernate should release JDBC connections. By default, a JDBC "
+"connection is held until the session is explicitly closed or disconnected. "
+"For an application server JTA datasource, you should use "
+"<literal>after_statement</literal> to aggressively release connections after "
+"every JDBC call. For a non-JTA connection, it often makes sense to release "
+"the connection at the end of each transaction, by using "
+"<literal>after_transaction</literal>. <literal>auto</literal> will choose "
+"<literal>after_statement</literal> for the JTA and CMT transaction "
+"strategies and <literal>after_transaction</literal> for the JDBC transaction "
+"strategy."
+msgstr ""
+"Hibernate가 JDBC 커넥션들을 해제하게 될 시점을 지정한다. 디폴트로 한 개의 "
+"JDBC 커넥션은 그 세션이 명시적으로 닫히거나 연결해제되기 전까지 보관된다. 어"
+"플리케이션 트랜잭션 서버 JTA 데이터소스의 경우, 당신은 모든 JDBC 호출 후에 커"
+"넥션들을 과감하게 해제시키기 위해 <placeholder-1/>를 사용해야 한다. 비-JTA 연"
+"결의 경우, <placeholder-2/>을 사용하여 각각의 트랜잭션의 끝에서 커넥션들을 해"
+"제시키는 것이 종종 의미가 있다. <placeholder-3/>는 JTA 및 CMT 트랜잭션 방도들"
+"의 경우에 <placeholder-4/>를 선택하고 JDBC 트랜잭션 방도에 대해 <placeholder-"
+"5/>를 선택할 것이다. <placeholder-6/><placeholder-7/>"
-#: index.docbook:681
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>auto</literal> (default) | <literal>on_close</literal> | <literal>after_transaction</literal> | <literal>after_statement</literal>"
-msgstr "<emphasis role=\"strong\">eg.</emphasis> <literal>auto</literal> (디폴트) | <literal>on_close</literal> | <literal>after_transaction</literal> | <literal>after_statement</literal>"
+#. Tag: para
+#: configuration.xml:681
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>auto</literal> (default) | "
+"<literal>on_close</literal> | <literal>after_transaction</literal> | "
+"<literal>after_statement</literal>"
+msgstr ""
+"<emphasis role=\"strong\">eg.</emphasis><literal>auto</literal> (디폴트) | "
+"<literal>on_close</literal> | <literal>after_transaction</literal> | "
+"<literal>after_statement</literal>"
-#: index.docbook:686
-msgid "Note that this setting only affects <literal>Session</literal>s returned from <literal>SessionFactory.openSession</literal>. For <literal>Session</literal>s obtained through <literal>SessionFactory.getCurrentSession</literal>, the <literal>CurrentSessionContext</literal> implementation configured for use controls the connection release mode for those <literal>Session</literal>s. See"
-msgstr "이 설정이 <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\"/>를 보라."
+#. Tag: para
+#: configuration.xml:686
+#, fuzzy, no-c-format
+msgid ""
+"Note that this setting only affects <literal>Session</literal>s returned "
+"from <literal>SessionFactory.openSession</literal>. For <literal>Session</"
+"literal>s obtained through <literal>SessionFactory.getCurrentSession</"
+"literal>, the <literal>CurrentSessionContext</literal> implementation "
+"configured for use controls the connection release mode for those "
+"<literal>Session</literal>s. See"
+msgstr ""
+"이 설정이 <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\"/>를 보라."
-#: index.docbook:698
-msgid "hibernate.connection.<emphasis><propertyName></emphasis>"
-msgstr "hibernate.connection.<emphasis><propertyName></emphasis>"
+#. Tag: entry
+#: configuration.xml:697
+#, no-c-format
+msgid ""
+"<literal>hibernate.connection.</literal><emphasis><propertyName></"
+"emphasis>"
+msgstr ""
-#: index.docbook:700
-msgid "Pass the JDBC property <literal>propertyName</literal> to <literal>DriverManager.getConnection()</literal>."
-msgstr "JDBC 프로퍼티 <literal>propertyName</literal>을 <literal>DriverManager.getConnection()</literal>에 전달한다."
+#. Tag: entry
+#: configuration.xml:700
+#, no-c-format
+msgid ""
+"Pass the JDBC property <emphasis><propertyName></emphasis> to "
+"<literal>DriverManager.getConnection()</literal>."
+msgstr ""
-#: index.docbook:707
-msgid "hibernate.jndi.<emphasis><propertyName></emphasis>"
-msgstr "hibernate.jndi.<emphasis><propertyName></emphasis>"
+#. Tag: entry
+#: configuration.xml:706
+#, no-c-format
+msgid ""
+"<literal>hibernate.jndi.</literal><emphasis><propertyName></emphasis>"
+msgstr ""
-#: index.docbook:709
-msgid "Pass the property <literal>propertyName</literal> to the JNDI <literal>InitialContextFactory</literal>."
-msgstr "<literal>propertyName</literal> 프로퍼티를 JNDI <literal>InitialContextFactory</literal>에 전달한다."
+#. Tag: entry
+#: configuration.xml:709
+#, no-c-format
+msgid ""
+"Pass the property <emphasis><propertyName></emphasis> to the JNDI "
+"<literal>InitialContextFactory</literal>."
+msgstr ""
-#: index.docbook:719
+#. Tag: title
+#: configuration.xml:719
+#, no-c-format
msgid "Hibernate Cache Properties"
msgstr "Hibernate Cache 프로퍼티들"
-#: index.docbook:732
+#. Tag: literal
+#: configuration.xml:732
+#, no-c-format
msgid "hibernate.cache.provider_class"
msgstr "hibernate.cache.provider_class"
-#: index.docbook:734
+#. Tag: entry
+#: configuration.xml:734
+#, fuzzy, no-c-format
msgid "The classname of a custom <literal>CacheProvider</literal>."
-msgstr "맞춤형 <literal>CacheProvider</literal>의 클래스명."
+msgstr "맞춤형 <placeholder-1/>의 클래스명. <placeholder-2/>"
-#: index.docbook:736
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of.CacheProvider</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>classname.of.CacheProvider</literal>"
+#. Tag: para
+#: configuration.xml:736
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of."
+"CacheProvider</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:744
+#. Tag: literal
+#: configuration.xml:744
+#, no-c-format
msgid "hibernate.cache.use_minimal_puts"
msgstr "hibernate.cache.use_minimal_puts"
-#: index.docbook:746
-msgid "Optimize second-level cache operation to minimize writes, at the cost of more frequent reads. This setting is most useful for clustered caches and, in Hibernate3, is enabled by default for clustered cache implementations."
-msgstr "읽기가 매우 빈번한 경우에, 쓰기를 최소화 시키기 위해 second-level 캐시 연산을 최적화 시킨다. 이 설정은 Hibernate3에서 클러스터링 된 캐시들에 가장 유용하고, Hibernate3에서는 클러스터링된 캐시 구현들에 대해 디폴트로 이용 가능하다."
+#. Tag: entry
+#: configuration.xml:746
+#, fuzzy, no-c-format
+msgid ""
+"Optimize second-level cache operation to minimize writes, at the cost of "
+"more frequent reads. This setting is most useful for clustered caches and, "
+"in Hibernate3, is enabled by default for clustered cache implementations."
+msgstr ""
+"읽기가 매우 빈번한 경우에, 쓰기를 최소화 시키기 위해 second-level 캐시 연산"
+"을 최적화 시킨다. 이 설정은 Hibernate3에서 클러스터링 된 캐시들에 가장 유용하"
+"고, Hibernate3에서는 클러스터링된 캐시 구현들에 대해 디폴트로 이용 가능하다. "
+"<placeholder-1/>"
-#: index.docbook:759
+#. Tag: literal
+#: configuration.xml:759
+#, no-c-format
msgid "hibernate.cache.use_query_cache"
msgstr "hibernate.cache.use_query_cache"
-#: index.docbook:761
-msgid "Enable the query cache, individual queries still have to be set cachable."
-msgstr "질의 캐시를 가능하게 만든다. 개별 질의들은 여전히 캐시 가능한 것으로 설정되어야 한다."
+#. Tag: entry
+#: configuration.xml:761
+#, fuzzy, no-c-format
+msgid ""
+"Enable the query cache, individual queries still have to be set cachable."
+msgstr ""
+"질의 캐시를 가능하게 만든다. 개별 질의들은 여전히 캐시 가능한 것으로 설정되어"
+"야 한다. <placeholder-1/>"
-#: index.docbook:771
+#. Tag: literal
+#: configuration.xml:771
+#, no-c-format
msgid "hibernate.cache.use_second_level_cache"
msgstr "hibernate.cache.use_second_level_cache"
-#: index.docbook:773
-msgid "May be used to completely disable the second level cache, which is enabled by default for classes which specify a <literal><cache></literal> mapping."
-msgstr "second-level 캐시를 완전히 사용 불가능하게 하는데 사용될 수 있고, 그것은 <literal><cache></literal> 매핑을 지정하는 클래스들에 대해 디폴트로 이용 가능이다."
+#. Tag: entry
+#: configuration.xml:773
+#, fuzzy, no-c-format
+msgid ""
+"May be used to completely disable the second level cache, which is enabled "
+"by default for classes which specify a <literal><cache></literal> "
+"mapping."
+msgstr ""
+"second-level 캐시를 완전히 사용 불가능하게 하는데 사용될 수 있고, 그것은 "
+"<placeholder-1/> 매핑을 지정하는 클래스들에 대해 디폴트로 이용 가능이다. "
+"<placeholder-2/>"
-#: index.docbook:785
+#. Tag: literal
+#: configuration.xml:785
+#, no-c-format
msgid "hibernate.cache.query_cache_factory"
msgstr "hibernate.cache.query_cache_factory"
-#: index.docbook:787
-msgid "The classname of a custom <literal>QueryCache</literal> interface, defaults to the built-in <literal>StandardQueryCache</literal>."
-msgstr "맞춤형 <literal>QueryCache</literal> 인터페이스의 클래스명. 디폴트는 미리 빌드된 <literal>StandardQueryCache</literal>."
+#. Tag: entry
+#: configuration.xml:787
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a custom <literal>QueryCache</literal> interface, defaults "
+"to the built-in <literal>StandardQueryCache</literal>."
+msgstr ""
+"맞춤형 <placeholder-1/> 인터페이스의 클래스명. 디폴트는 미리 빌드된 "
+"<placeholder-2/>. <placeholder-3/>"
-#: index.docbook:790
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of.QueryCache</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>classname.of.QueryCache</literal>"
+#. Tag: para
+#: configuration.xml:790
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of.QueryCache</"
+"literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:798
+#. Tag: literal
+#: configuration.xml:798
+#, no-c-format
msgid "hibernate.cache.region_prefix"
msgstr "hibernate.cache.region_prefix"
-#: index.docbook:800
+#. Tag: entry
+#: configuration.xml:800
+#, fuzzy, no-c-format
msgid "A prefix to use for second-level cache region names."
-msgstr "second-level 캐시 영역 이름들에 사용할 접두어."
+msgstr "second-level 캐시 영역 이름들에 사용할 접두어. <placeholder-1/>"
-#: index.docbook:802
+#. Tag: para
+#: configuration.xml:802
+#, fuzzy, no-c-format
msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>prefix</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>prefix</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:810
+#. Tag: literal
+#: configuration.xml:810
+#, no-c-format
msgid "hibernate.cache.use_structured_entries"
msgstr "hibernate.cache.use_structured_entries"
-#: index.docbook:812
-msgid "Forces Hibernate to store data in the second-level cache in a more human-friendly format."
-msgstr "인간에게 보다 더 친숙한 형식으로 second-level 캐시 속에 데이터를 저장하도록 Hibernate에게 강제시킨다.."
+#. Tag: entry
+#: configuration.xml:812
+#, fuzzy, no-c-format
+msgid ""
+"Forces Hibernate to store data in the second-level cache in a more human-"
+"friendly format."
+msgstr ""
+"인간에게 보다 더 친숙한 형식으로 second-level 캐시 속에 데이터를 저장하도록 "
+"Hibernate에게 강제시킨다.. <placeholder-1/>"
-#: index.docbook:826
+#. Tag: title
+#: configuration.xml:826
+#, no-c-format
msgid "Hibernate Transaction Properties"
msgstr "Hibernate 트랜잭션 프로퍼티들"
-#: index.docbook:839
+#. Tag: literal
+#: configuration.xml:839
+#, no-c-format
msgid "hibernate.transaction.factory_class"
msgstr "hibernate.transaction.factory_class"
-#: index.docbook:841
-msgid "The classname of a <literal>TransactionFactory</literal> to use with Hibernate <literal>Transaction</literal> API (defaults to <literal>JDBCTransactionFactory</literal>)."
-msgstr "Hibernate <literal>Transaction</literal> API 에 사용할 <literal>TransactionFactory</literal>의 클래스 이름.(디폴트는 <literal>JDBCTransactionFactory</literal>)."
+#. Tag: entry
+#: configuration.xml:841
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a <literal>TransactionFactory</literal> to use with "
+"Hibernate <literal>Transaction</literal> API (defaults to "
+"<literal>JDBCTransactionFactory</literal>)."
+msgstr ""
+"Hibernate <placeholder-1/> API 에 사용할 <placeholder-2/>의 클래스 이름.(디폴"
+"트는 <placeholder-3/>). <placeholder-4/>"
-#: index.docbook:845
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of.TransactionFactory</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>classname.of.TransactionFactory</literal>"
+#. Tag: para
+#: configuration.xml:845
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of."
+"TransactionFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:853
+#. Tag: literal
+#: configuration.xml:853
+#, no-c-format
msgid "jta.UserTransaction"
msgstr "jta.UserTransaction"
-#: index.docbook:855
-msgid "A JNDI name used by <literal>JTATransactionFactory</literal> to obtain the JTA <literal>UserTransaction</literal> from the application server."
-msgstr "어플리케이션 서버로부터 JTA <literal>UserTransaction</literal>을 얻기 위해 <literal>JTATransactionFactory</literal>에 의해 사용되는 JNDI 이름."
+#. Tag: entry
+#: configuration.xml:855
+#, fuzzy, no-c-format
+msgid ""
+"A JNDI name used by <literal>JTATransactionFactory</literal> to obtain the "
+"JTA <literal>UserTransaction</literal> from the application server."
+msgstr ""
+"어플리케이션 서버로부터 JTA <placeholder-1/>을 얻기 위해 <placeholder-2/>에 "
+"의해 사용되는 JNDI 이름. <placeholder-3/>"
-#: index.docbook:867
+#. Tag: literal
+#: configuration.xml:867
+#, no-c-format
msgid "hibernate.transaction.manager_lookup_class"
msgstr "hibernate.transaction.manager_lookup_class"
-#: index.docbook:869
-msgid "The classname of a <literal>TransactionManagerLookup</literal> - required when JVM-level caching is enabled or when using hilo generator in a JTA environment."
-msgstr "<literal>TransactionManagerLookup</literal>의 클래스명- JVM 레벨의 캐싱이 이용 가능할 때 또는 JTA 환경에서 hilo generator를 사용할 때 필요하다."
+#. Tag: entry
+#: configuration.xml:869
+#, fuzzy, no-c-format
+msgid ""
+"The classname of a <literal>TransactionManagerLookup</literal> - required "
+"when JVM-level caching is enabled or when using hilo generator in a JTA "
+"environment."
+msgstr ""
+"<placeholder-1/>의 클래스명- JVM 레벨의 캐싱이 이용 가능할 때 또는 JTA 환경에"
+"서 hilo generator를 사용할 때 필요하다. <placeholder-2/>"
-#: index.docbook:873
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of.TransactionManagerLookup</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>classname.of.TransactionManagerLookup</literal>"
+#. Tag: para
+#: configuration.xml:873
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>classname.of."
+"TransactionManagerLookup</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:881
+#. Tag: literal
+#: configuration.xml:881
+#, no-c-format
msgid "hibernate.transaction.flush_before_completion"
msgstr "hibernate.transaction.flush_before_completion"
-#: index.docbook:883
-msgid "If enabled, the session will be automatically flushed during the before completion phase of the transaction. Built-in and automatic session context management is preferred, see <xref linkend=\"architecture-current-session\"/>."
-msgstr "만일 사용가능하도록 되면, 세션은 트랜잭션의 before completion 단계 동안에 자동적으로 flush 될 것이다. 빌드되어 있는 자동적인 세션 컨텍스트 관리가 선호되는데, <xref linkend=\"architecture-current-session\"/>를 보라."
+#. Tag: entry
+#: configuration.xml:883
+#, fuzzy, no-c-format
+msgid ""
+"If enabled, the session will be automatically flushed during the before "
+"completion phase of the transaction. Built-in and automatic session context "
+"management is preferred, see <xref linkend=\"architecture-current-session\"/"
+">."
+msgstr ""
+"만일 사용가능하도록 되면, 세션은 트랜잭션의 before completion 단계 동안에 자"
+"동적으로 flush 될 것이다. 빌드되어 있는 자동적인 세션 컨텍스트 관리가 선호되"
+"는데, <xref linkend=\"architecture-current-session\"/>를 보라. <placeholder-"
+"1/>"
-#: index.docbook:896
+#. Tag: literal
+#: configuration.xml:896
+#, no-c-format
msgid "hibernate.transaction.auto_close_session"
msgstr "hibernate.transaction.auto_close_session"
-#: index.docbook:898
-msgid "If enabled, the session will be automatically closed during the after completion phase of the transaction. Built-in and utomatic session context management is preferred, see <xref linkend=\"architecture-current-session\"/>."
-msgstr "만일 사용가능토록 하면, after completion 단계 동안에 세션이 자동적으로 닫혀질 것이다. (CMT에 대해 Hibernate를 사용할 때 매우 유용하다.)"
+#. Tag: entry
+#: configuration.xml:898
+#, fuzzy, no-c-format
+msgid ""
+"If enabled, the session will be automatically closed during the after "
+"completion phase of the transaction. Built-in and utomatic session context "
+"management is preferred, see <xref linkend=\"architecture-current-session\"/"
+">."
+msgstr ""
+"만일 사용가능토록 하면, after completion 단계 동안에 세션이 자동적으로 닫혀"
+"질 것이다. (CMT에 대해 Hibernate를 사용할 때 매우 유용하다.) <placeholder-1/>"
-#: index.docbook:914
+#. Tag: title
+#: configuration.xml:914
+#, no-c-format
msgid "Miscellaneous Properties"
msgstr "여러가지 프로퍼티들"
-#: index.docbook:927
+#. Tag: literal
+#: configuration.xml:927
+#, no-c-format
msgid "hibernate.current_session_context_class"
msgstr "hibernate.current_session_context_class"
-#: index.docbook:929
-msgid "Supply a (custom) strategy for the scoping of the \"current\" <literal>Session</literal>. See <xref linkend=\"architecture-current-session\"/> for more information about the built-in strategies."
-msgstr "\"현재\" <literal>Session</literal>의 영역화를 위한 하나의 (맞춤) 방도를 제공한다. 빌드되어 있는 방도들에 대한 추가 정보는 <xref linkend=\"architecture-current-session\"/>를 보라."
+#. Tag: entry
+#: configuration.xml:929
+#, fuzzy, no-c-format
+msgid ""
+"Supply a (custom) strategy for the scoping of the \"current\" "
+"<literal>Session</literal>. See <xref linkend=\"architecture-current-session"
+"\"/> for more information about the built-in strategies."
+msgstr ""
+"\"현재\" <placeholder-1/>의 영역화를 위한 하나의 (맞춤) 방도를 제공한다. 빌드"
+"되어 있는 방도들에 대한 추가 정보는 <xref linkend=\"architecture-current-"
+"session\"/>를 보라. <placeholder-2/>"
-#: index.docbook:934
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>jta</literal> | <literal>thread</literal> | <literal>managed</literal> | <literal>custom.Class</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>jta</literal> | <literal>thread</literal> | <literal>managed</literal> | <literal>custom.Class</literal>"
+#. Tag: para
+#: configuration.xml:934
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>jta</literal> | "
+"<literal>thread</literal> | <literal>managed</literal> | <literal>custom."
+"Class</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>jta</literal> | "
+"<literal>thread</literal> | <literal>managed</literal> | <literal>custom."
+"Class</literal>"
-#: index.docbook:943
+#. Tag: literal
+#: configuration.xml:943
+#, no-c-format
msgid "hibernate.query.factory_class"
msgstr "hibernate.query.factory_class"
-#: index.docbook:945
+#. Tag: entry
+#: configuration.xml:945
+#, fuzzy, no-c-format
msgid "Chooses the HQL parser implementation."
-msgstr "Chooses the HQL 파서 구현을 선택한다."
+msgstr "Chooses the HQL 파서 구현을 선택한다. <placeholder-1/>"
-#: index.docbook:947
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>org.hibernate.hql.ast.ASTQueryTranslatorFactory</literal> or <literal>org.hibernate.hql.classic.ClassicQueryTranslatorFactory</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>org.hibernate.hql.ast.ASTQueryTranslatorFactory</literal> or <literal>org.hibernate.hql.classic.ClassicQueryTranslatorFactory</literal>"
+#. Tag: para
+#: configuration.xml:947
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>org.hibernate.hql.ast."
+"ASTQueryTranslatorFactory</literal> or <literal>org.hibernate.hql.classic."
+"ClassicQueryTranslatorFactory</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>org.hibernate.hql.ast."
+"ASTQueryTranslatorFactory</literal> or <literal>org.hibernate.hql.classic."
+"ClassicQueryTranslatorFactory</literal>"
-#: index.docbook:956
+#. Tag: literal
+#: configuration.xml:956
+#, no-c-format
msgid "hibernate.query.substitutions"
msgstr "hibernate.query.substitutions"
-#: index.docbook:958
-msgid "Mapping from tokens in Hibernate queries to SQL tokens (tokens might be function or literal names, for example)."
-msgstr "Hibernate 질의들 내의 토큰들로부터 SQL 토큰들로의 매핑 (예를 들어 토큰들은 함수 이름 또는 리터럴 이름일 수 있다)."
+#. Tag: entry
+#: configuration.xml:958
+#, fuzzy, no-c-format
+msgid ""
+"Mapping from tokens in Hibernate queries to SQL tokens (tokens might be "
+"function or literal names, for example)."
+msgstr ""
+"Hibernate 질의들 내의 토큰들로부터 SQL 토큰들로의 매핑 (예를 들어 토큰들은 함"
+"수 이름 또는 리터럴 이름일 수 있다). <placeholder-1/>"
-#: index.docbook:961
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC</literal>"
+#. Tag: para
+#: configuration.xml:961
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>hqlLiteral=SQL_LITERAL, "
+"hqlFunction=SQLFUNC</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>true</literal> | "
+"<literal>false</literal>"
-#: index.docbook:969
+#. Tag: literal
+#: configuration.xml:969
+#, no-c-format
msgid "hibernate.hbm2ddl.auto"
msgstr "hibernate.hbm2ddl.auto"
-#: index.docbook:971
-msgid "Automatically validate or export schema DDL to the database when the <literal>SessionFactory</literal> is created. With <literal>create-drop</literal>, the database schema will be dropped when the <literal>SessionFactory</literal> is closed explicitly."
-msgstr "<literal>SessionFactory</literal>가 생성될 때, 자동적으로 유효성을 검사하거나 schema DDL을 데이터베이스로 내보내기 한다. <literal>create-drop</literal>의 경우, <literal>SessionFactory</literal>가 명시적으로 닫혀질 때 데이터베이스 스키마가 드롭될 것이다."
+#. Tag: entry
+#: configuration.xml:971
+#, fuzzy, no-c-format
+msgid ""
+"Automatically validate or export schema DDL to the database when the "
+"<literal>SessionFactory</literal> is created. With <literal>create-drop</"
+"literal>, the database schema will be dropped when the "
+"<literal>SessionFactory</literal> is closed explicitly."
+msgstr ""
+"<placeholder-1/>가 생성될 때, 자동적으로 유효성을 검사하거나 schema DDL을 데"
+"이터베이스로 내보내기 한다. <placeholder-2/>의 경우, <placeholder-3/>가 명시"
+"적으로 닫혀질 때 데이터베이스 스키마가 드롭될 것이다. <placeholder-4/>"
-#: index.docbook:977
-msgid "<emphasis role=\"strong\">eg.</emphasis> <literal>validate</literal> | <literal>update</literal> | <literal>create</literal> | <literal>create-drop</literal>"
-msgstr "<emphasis role=\"strong\">예.</emphasis> <literal>validate</literal> | <literal>update</literal> | <literal>create</literal> | <literal>create-drop</literal>"
+#. Tag: para
+#: configuration.xml:977
+#, fuzzy, no-c-format
+msgid ""
+"<emphasis role=\"strong\">eg.</emphasis> <literal>validate</literal> | "
+"<literal>update</literal> | <literal>create</literal> | <literal>create-"
+"drop</literal>"
+msgstr ""
+"<emphasis role=\"strong\">예.</emphasis><literal>validate</literal> | "
+"<literal>update</literal> | <literal>create</literal> | <literal>create-"
+"drop</literal>"
-#: index.docbook:986
+#. Tag: literal
+#: configuration.xml:986
+#, no-c-format
msgid "hibernate.cglib.use_reflection_optimizer"
msgstr "hibernate.cglib.use_reflection_optimizer"
-#: index.docbook:988
-msgid "Enables use of CGLIB instead of runtime reflection (System-level property). Reflection can sometimes be useful when troubleshooting, note that Hibernate always requires CGLIB even if you turn off the optimizer. You can not set this property in <literal>hibernate.cfg.xml</literal>."
-msgstr "런타임 reflection 대신에 CGLIB의 사용을 가능하도록 만든다(시스템 레벨 프로퍼티). Reflection은 문제가 발생할 시에 때때로 유용할 수 있고, 당신이 optimizer를 사용하지 않을 경우조차도 Hibernate는 항상 필요로 함을 유의하라. 당신은 <literal>hibernate.cfg.xml</literal> 속에 이 프로퍼티를 설정할수 없다."
+#. Tag: entry
+#: configuration.xml:988
+#, fuzzy, no-c-format
+msgid ""
+"Enables use of CGLIB instead of runtime reflection (System-level property). "
+"Reflection can sometimes be useful when troubleshooting, note that Hibernate "
+"always requires CGLIB even if you turn off the optimizer. You can not set "
+"this property in <literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"런타임 reflection 대신에 CGLIB의 사용을 가능하도록 만든다(시스템 레벨 프로퍼"
+"티). Reflection은 문제가 발생할 시에 때때로 유용할 수 있고, 당신이 optimizer"
+"를 사용하지 않을 경우조차도 Hibernate는 항상 필요로 함을 유의하라. 당신은 "
+"<placeholder-1/> 속에 이 프로퍼티를 설정할수 없다. <placeholder-2/>"
-#: index.docbook:1004
+#. Tag: title
+#: configuration.xml:1004
+#, no-c-format
msgid "SQL Dialects"
msgstr "SQL Dialects"
-#: index.docbook:1006
-msgid "You should always set the <literal>hibernate.dialect</literal> property to the correct <literal>org.hibernate.dialect.Dialect</literal> subclass for your database. If you specify a dialect, Hibernate will use sensible defaults for some of the other properties listed above, saving you the effort of specifying them manually."
-msgstr "당신은 항상 당신의 데이터베이스를 위해 <literal>hibernate.dialect</literal> 프로퍼티를 정확한 <literal>org.hibernate.dialect.Dialect</literal> 서브클래스로 설정해야 한다. 만일 당신이 dialect를 지정할 경우, 당신이 프로퍼티들을 수작업으로 지정하는 노력을 절약하도록 Hibernate는 위에 열거된 다른 프로퍼티들 중 몇몇에 대해 의미있는 디폴트들을 사용할 것이다."
+#. Tag: para
+#: configuration.xml:1006
+#, no-c-format
+msgid ""
+"You should always set the <literal>hibernate.dialect</literal> property to "
+"the correct <literal>org.hibernate.dialect.Dialect</literal> subclass for "
+"your database. If you specify a dialect, Hibernate will use sensible "
+"defaults for some of the other properties listed above, saving you the "
+"effort of specifying them manually."
+msgstr ""
+"당신은 항상 당신의 데이터베이스를 위해 <literal>hibernate.dialect</literal> "
+"프로퍼티를 정확한 <literal>org.hibernate.dialect.Dialect</literal> 서브클래스"
+"로 설정해야 한다. 만일 당신이 dialect를 지정할 경우, 당신이 프로퍼티들을 수작"
+"업으로 지정하는 노력을 절약하도록 Hibernate는 위에 열거된 다른 프로퍼티들 중 "
+"몇몇에 대해 의미있는 디폴트들을 사용할 것이다."
-#: index.docbook:1014
+#. Tag: title
+#: configuration.xml:1014
+#, no-c-format
msgid "Hibernate SQL Dialects (<literal>hibernate.dialect</literal>)"
msgstr "Hibernate SQL Dialects (<literal>hibernate.dialect</literal>)"
-#: index.docbook:1022
+#. Tag: entry
+#: configuration.xml:1022
+#, no-c-format
msgid "RDBMS"
msgstr "RDBMS"
-#: index.docbook:1023
+#. Tag: entry
+#: configuration.xml:1023
+#, no-c-format
msgid "Dialect"
msgstr "Dialect"
-#: index.docbook:1028
+#. Tag: entry
+#: configuration.xml:1028
+#, no-c-format
msgid "<entry>DB2</entry>"
-msgstr "<entry>DB2</entry>"
+msgstr ""
-#: index.docbook:1028
+#. Tag: literal
+#: configuration.xml:1028
+#, no-c-format
msgid "org.hibernate.dialect.DB2Dialect"
msgstr "org.hibernate.dialect.DB2Dialect"
-#: index.docbook:1031
+#. Tag: entry
+#: configuration.xml:1031
+#, no-c-format
msgid "DB2 AS/400"
msgstr "DB2 AS/400"
-#: index.docbook:1031
+#. Tag: literal
+#: configuration.xml:1031
+#, no-c-format
msgid "org.hibernate.dialect.DB2400Dialect"
msgstr "org.hibernate.dialect.DB2400Dialect"
-#: index.docbook:1034
+#. Tag: entry
+#: configuration.xml:1034
+#, no-c-format
msgid "DB2 OS390"
msgstr "DB2 OS390"
-#: index.docbook:1034
+#. Tag: literal
+#: configuration.xml:1034
+#, no-c-format
msgid "org.hibernate.dialect.DB2390Dialect"
msgstr "org.hibernate.dialect.DB2390Dialect"
-#: index.docbook:1037
+#. Tag: entry
+#: configuration.xml:1037
+#, no-c-format
msgid "PostgreSQL"
msgstr "PostgreSQL"
-#: index.docbook:1037
+#. Tag: literal
+#: configuration.xml:1037
+#, no-c-format
msgid "org.hibernate.dialect.PostgreSQLDialect"
msgstr "org.hibernate.dialect.PostgreSQLDialect"
-#: index.docbook:1040
+#. Tag: entry
+#: configuration.xml:1040
+#, no-c-format
msgid "MySQL"
msgstr "MySQL"
-#: index.docbook:1040
+#. Tag: literal
+#: configuration.xml:1040
+#, no-c-format
msgid "org.hibernate.dialect.MySQLDialect"
msgstr "org.hibernate.dialect.MySQLDialect"
-#: index.docbook:1043
+#. Tag: entry
+#: configuration.xml:1043
+#, no-c-format
msgid "MySQL with InnoDB"
msgstr "MySQL with InnoDB"
-#: index.docbook:1043
+#. Tag: literal
+#: configuration.xml:1043
+#, no-c-format
msgid "org.hibernate.dialect.MySQLInnoDBDialect"
msgstr "org.hibernate.dialect.MySQLInnoDBDialect"
-#: index.docbook:1046
+#. Tag: entry
+#: configuration.xml:1046
+#, no-c-format
msgid "MySQL with MyISAM"
msgstr "MySQL with MyISAM"
-#: index.docbook:1046
+#. Tag: literal
+#: configuration.xml:1046
+#, no-c-format
msgid "org.hibernate.dialect.MySQLMyISAMDialect"
msgstr "org.hibernate.dialect.MySQLMyISAMDialect"
-#: index.docbook:1049
+#. Tag: entry
+#: configuration.xml:1049
+#, no-c-format
msgid "Oracle (any version)"
msgstr "Oracle (any version)"
-#: index.docbook:1049
+#. Tag: literal
+#: configuration.xml:1049
+#, no-c-format
msgid "org.hibernate.dialect.OracleDialect"
msgstr "org.hibernate.dialect.OracleDialect"
-#: index.docbook:1052
+#. Tag: entry
+#: configuration.xml:1052
+#, no-c-format
msgid "Oracle 9i/10g"
msgstr "Oracle 9i/10g"
-#: index.docbook:1052
+#. Tag: literal
+#: configuration.xml:1052
+#, no-c-format
msgid "org.hibernate.dialect.Oracle9Dialect"
msgstr "org.hibernate.dialect.Oracle9Dialect"
-#: index.docbook:1055
+#. Tag: entry
+#: configuration.xml:1055
+#, no-c-format
msgid "Sybase"
msgstr "Sybase"
-#: index.docbook:1055
+#. Tag: literal
+#: configuration.xml:1055
+#, no-c-format
msgid "org.hibernate.dialect.SybaseDialect"
msgstr "org.hibernate.dialect.SybaseDialect"
-#: index.docbook:1058
+#. Tag: entry
+#: configuration.xml:1058
+#, no-c-format
msgid "Sybase Anywhere"
msgstr "Sybase Anywhere"
-#: index.docbook:1058
+#. Tag: literal
+#: configuration.xml:1058
+#, no-c-format
msgid "org.hibernate.dialect.SybaseAnywhereDialect"
msgstr "org.hibernate.dialect.SybaseAnywhereDialect"
-#: index.docbook:1061
+#. Tag: entry
+#: configuration.xml:1061
+#, no-c-format
msgid "Microsoft SQL Server"
msgstr "Microsoft SQL Server"
-#: index.docbook:1061
+#. Tag: literal
+#: configuration.xml:1061
+#, no-c-format
msgid "org.hibernate.dialect.SQLServerDialect"
msgstr "org.hibernate.dialect.SQLServerDialect"
-#: index.docbook:1064
+#. Tag: entry
+#: configuration.xml:1064
+#, no-c-format
msgid "SAP DB"
msgstr "SAP DB"
-#: index.docbook:1064
+#. Tag: literal
+#: configuration.xml:1064
+#, no-c-format
msgid "org.hibernate.dialect.SAPDBDialect"
msgstr "org.hibernate.dialect.SAPDBDialect"
-#: index.docbook:1067
+#. Tag: entry
+#: configuration.xml:1067
+#, no-c-format
msgid "Informix"
msgstr "Informix"
-#: index.docbook:1067
+#. Tag: literal
+#: configuration.xml:1067
+#, no-c-format
msgid "org.hibernate.dialect.InformixDialect"
msgstr "org.hibernate.dialect.InformixDialect"
-#: index.docbook:1070
+#. Tag: entry
+#: configuration.xml:1070
+#, no-c-format
msgid "HypersonicSQL"
msgstr "HypersonicSQL"
-#: index.docbook:1070
+#. Tag: literal
+#: configuration.xml:1070
+#, no-c-format
msgid "org.hibernate.dialect.HSQLDialect"
msgstr "org.hibernate.dialect.HSQLDialect"
-#: index.docbook:1073
+#. Tag: entry
+#: configuration.xml:1073
+#, no-c-format
msgid "Ingres"
msgstr "Ingres"
-#: index.docbook:1073
+#. Tag: literal
+#: configuration.xml:1073
+#, no-c-format
msgid "org.hibernate.dialect.IngresDialect"
msgstr "org.hibernate.dialect.IngresDialect"
-#: index.docbook:1076
+#. Tag: entry
+#: configuration.xml:1076
+#, no-c-format
msgid "Progress"
msgstr "Progress"
-#: index.docbook:1076
+#. Tag: literal
+#: configuration.xml:1076
+#, no-c-format
msgid "org.hibernate.dialect.ProgressDialect"
msgstr "org.hibernate.dialect.ProgressDialect"
-#: index.docbook:1079
+#. Tag: entry
+#: configuration.xml:1079
+#, no-c-format
msgid "Mckoi SQL"
msgstr "Mckoi SQL"
-#: index.docbook:1079
+#. Tag: literal
+#: configuration.xml:1079
+#, no-c-format
msgid "org.hibernate.dialect.MckoiDialect"
msgstr "org.hibernate.dialect.MckoiDialect"
-#: index.docbook:1082
+#. Tag: entry
+#: configuration.xml:1082
+#, no-c-format
msgid "Interbase"
msgstr "Interbase"
-#: index.docbook:1082
+#. Tag: literal
+#: configuration.xml:1082
+#, no-c-format
msgid "org.hibernate.dialect.InterbaseDialect"
msgstr "org.hibernate.dialect.InterbaseDialect"
-#: index.docbook:1085
+#. Tag: entry
+#: configuration.xml:1085
+#, no-c-format
msgid "Pointbase"
msgstr "Pointbase"
-#: index.docbook:1085
+#. Tag: literal
+#: configuration.xml:1085
+#, no-c-format
msgid "org.hibernate.dialect.PointbaseDialect"
msgstr "org.hibernate.dialect.PointbaseDialect"
-#: index.docbook:1088
+#. Tag: entry
+#: configuration.xml:1088
+#, no-c-format
msgid "FrontBase"
msgstr "FrontBase"
-#: index.docbook:1088
+#. Tag: literal
+#: configuration.xml:1088
+#, no-c-format
msgid "org.hibernate.dialect.FrontbaseDialect"
msgstr "org.hibernate.dialect.FrontbaseDialect"
-#: index.docbook:1091
+#. Tag: entry
+#: configuration.xml:1091
+#, no-c-format
msgid "Firebird"
msgstr "Firebird"
-#: index.docbook:1091
+#. Tag: literal
+#: configuration.xml:1091
+#, no-c-format
msgid "org.hibernate.dialect.FirebirdDialect"
msgstr "org.hibernate.dialect.FirebirdDialect"
-#: index.docbook:1100
+#. Tag: title
+#: configuration.xml:1100
+#, no-c-format
msgid "Outer Join Fetching"
msgstr "Outer Join Fetching"
-#: index.docbook:1102
-msgid "If your database supports ANSI, Oracle or Sybase style outer joins, <emphasis>outer join fetching</emphasis> will often increase performance by limiting the number of round trips to and from the database (at the cost of possibly more work performed by the database itself). Outer join fetching allows a whole graph of objects connected by many-to-one, one-to-many, many-to-many and one-to-one associations to be retrieved in a single SQL <literal>SELECT</literal>."
-msgstr "만일 당신의 데이터베이스가 ANSI, Oracle, 또는 Sybase 스타일의 outer join들을 지원할 경우, <emphasis>outer join fetching</emphasis>은 (데이터베이스 그 자체에 의해 보다 더 많은 작업이 수행되는 비용으로) 데이터베이스로의 그리고 데이터베이스로부터의 라운드 트립들의 개수를 제한함으로써 종종 퍼포먼스를 증가시킬 것이다. Outer join fetching은 many-to-one, one-to-many, many-to-many,one-to-one 연관관계들이 에 의해 연결된 객체들의 전체 그래프가 하나의 SQL <literal>SELECT</literal> 속에서 검색되게끔 허용해준다."
+#. Tag: para
+#: configuration.xml:1102
+#, no-c-format
+msgid ""
+"If your database supports ANSI, Oracle or Sybase style outer joins, "
+"<emphasis>outer join fetching</emphasis> will often increase performance by "
+"limiting the number of round trips to and from the database (at the cost of "
+"possibly more work performed by the database itself). Outer join fetching "
+"allows a whole graph of objects connected by many-to-one, one-to-many, many-"
+"to-many and one-to-one associations to be retrieved in a single SQL "
+"<literal>SELECT</literal>."
+msgstr ""
+"만일 당신의 데이터베이스가 ANSI, Oracle, 또는 Sybase 스타일의 outer join들을 "
+"지원할 경우, <emphasis>outer join fetching</emphasis>은 (데이터베이스 그 자체"
+"에 의해 보다 더 많은 작업이 수행되는 비용으로) 데이터베이스로의 그리고 데이터"
+"베이스로부터의 라운드 트립들의 개수를 제한함으로써 종종 퍼포먼스를 증가시킬 "
+"것이다. Outer join fetching은 many-to-one, one-to-many, many-to-many,one-to-"
+"one 연관관계들이 에 의해 연결된 객체들의 전체 그래프가 하나의 SQL "
+"<literal>SELECT</literal> 속에서 검색되게끔 허용해준다."
-#: index.docbook:1111
-msgid "Outer join fetching may be disabled <emphasis>globally</emphasis> by setting the property <literal>hibernate.max_fetch_depth</literal> to <literal>0</literal>. A setting of <literal>1</literal> or higher enables outer join fetching for one-to-one and many-to-one associations which have been mapped with <literal>fetch=\"join\"</literal>."
-msgstr "Outer join fetching은 hibernate.max_fetch_depth 프로퍼티를 <literal>0</literal>으로 설정함으로써 <emphasis>전역적으로</emphasis> 사용 불가능하게 할 수 있다. <literal>1</literal> 이상의 값을 설정하는 것은 <literal>fetch=\"join\"</literal>으로 매핑되었던 모든 one-to-one 및 many-to-one 연관관계들에 대해 outer join fetching을 사용 가능하도록 만든다."
+#. Tag: para
+#: configuration.xml:1111
+#, no-c-format
+msgid ""
+"Outer join fetching may be disabled <emphasis>globally</emphasis> by setting "
+"the property <literal>hibernate.max_fetch_depth</literal> to <literal>0</"
+"literal>. A setting of <literal>1</literal> or higher enables outer join "
+"fetching for one-to-one and many-to-one associations which have been mapped "
+"with <literal>fetch=\"join\"</literal>."
+msgstr ""
+"Outer join fetching은 hibernate.max_fetch_depth 프로퍼티를 <literal>0</"
+"literal>으로 설정함으로써 <emphasis>전역적으로</emphasis> 사용 불가능하게 할 "
+"수 있다. <literal>1</literal> 이상의 값을 설정하는 것은 <literal>fetch=\"join"
+"\"</literal>으로 매핑되었던 모든 one-to-one 및 many-to-one 연관관계들에 대해 "
+"outer join fetching을 사용 가능하도록 만든다."
-#: index.docbook:1119
+#. Tag: para
+#: configuration.xml:1119
+#, no-c-format
msgid "See <xref linkend=\"performance-fetching\"/> for more information."
msgstr "추가 정보는 <xref linkend=\"performance-fetching\"/>를 보라."
-#: index.docbook:1126
+#. Tag: title
+#: configuration.xml:1126
+#, no-c-format
msgid "Binary Streams"
msgstr "Binary Streams"
-#: index.docbook:1128
-msgid "Oracle limits the size of <literal>byte</literal> arrays that may be passed to/from its JDBC driver. If you wish to use large instances of <literal>binary</literal> or <literal>serializable</literal> type, you should enable <literal>hibernate.jdbc.use_streams_for_binary</literal>. <emphasis>This is a system-level setting only.</emphasis>"
-msgstr "Oracle은 JDBC 드라이버 로/부터 전달되는 <literal>byte</literal> 배열들의 크기를 제한시킨다. 만일 당신이 <literal>binary</literal> 또는 <literal>serializable</literal> 타입의 대형 인스턴스를 사용하고자 원할 경우에, 당신은 <literal>hibernate.jdbc.use_streams_for_binary</literal>를 사용 가능하게 해야 할 것이다. <emphasis>이것은 오직 시스템 레벨 설정이다.</emphasis>"
+#. Tag: para
+#: configuration.xml:1128
+#, no-c-format
+msgid ""
+"Oracle limits the size of <literal>byte</literal> arrays that may be passed "
+"to/from its JDBC driver. If you wish to use large instances of "
+"<literal>binary</literal> or <literal>serializable</literal> type, you "
+"should enable <literal>hibernate.jdbc.use_streams_for_binary</literal>. "
+"<emphasis>This is a system-level setting only.</emphasis>"
+msgstr ""
+"Oracle은 JDBC 드라이버 로/부터 전달되는 <literal>byte</literal> 배열들의 크기"
+"를 제한시킨다. 만일 당신이 <literal>binary</literal> 또는 "
+"<literal>serializable</literal> 타입의 대형 인스턴스를 사용하고자 원할 경우"
+"에, 당신은 <literal>hibernate.jdbc.use_streams_for_binary</literal>를 사용 가"
+"능하게 해야 할 것이다. <emphasis>이것은 오직 시스템 레벨 설정이다.</emphasis>"
-#: index.docbook:1139
+#. Tag: title
+#: configuration.xml:1139
+#, no-c-format
msgid "Second-level and query cache"
msgstr "Second-level 캐시와 query 캐시"
-#: index.docbook:1141
-msgid "The properties prefixed by <literal>hibernate.cache</literal> allow you to use a process or cluster scoped second-level cache system with Hibernate. See the <xref linkend=\"performance-cache\"/> for more details."
-msgstr "<literal>hibernate.cache</literal> 접두어가 붙은 프로퍼티들은 Hibernate에 대해 프로세스 또는 클러스터 범위의 두 번째 레벨 캐시 시스템을 사용하는 것을 허용해준다. 상세한 것은 <xref linkend=\"performance-cache\"/>를 보라."
+#. Tag: para
+#: configuration.xml:1141
+#, no-c-format
+msgid ""
+"The properties prefixed by <literal>hibernate.cache</literal> allow you to "
+"use a process or cluster scoped second-level cache system with Hibernate. "
+"See the <xref linkend=\"performance-cache\"/> for more details."
+msgstr ""
+"<literal>hibernate.cache</literal> 접두어가 붙은 프로퍼티들은 Hibernate에 대"
+"해 프로세스 또는 클러스터 범위의 두 번째 레벨 캐시 시스템을 사용하는 것을 허"
+"용해준다. 상세한 것은 <xref linkend=\"performance-cache\"/>를 보라."
-#: index.docbook:1151
+#. Tag: title
+#: configuration.xml:1151
+#, no-c-format
msgid "Query Language Substitution"
msgstr "Query Language 치환"
-#: index.docbook:1153
-msgid "You may define new Hibernate query tokens using <literal>hibernate.query.substitutions</literal>. For example:"
-msgstr "당신은 <literal>hibernate.query.substitutions</literal>을 사용하여 새로운 Hibernate 질의 토큰들을 정의할 수 있다. 예를 들어:"
+#. Tag: para
+#: configuration.xml:1153
+#, no-c-format
+msgid ""
+"You may define new Hibernate query tokens using <literal>hibernate.query."
+"substitutions</literal>. For example:"
+msgstr ""
+"당신은 <literal>hibernate.query.substitutions</literal>을 사용하여 새로운 "
+"Hibernate 질의 토큰들을 정의할 수 있다. 예를 들어:"
-#: index.docbook:1158
+#. Tag: programlisting
+#: configuration.xml:1158
+#, no-c-format
msgid "hibernate.query.substitutions true=1, false=0"
msgstr "hibernate.query.substitutions true=1, false=0"
-#: index.docbook:1160
-msgid "would cause the tokens <literal>true</literal> and <literal>false</literal> to be translated to integer literals in the generated SQL."
-msgstr "은<literal>true</literal>와 <literal>false</literal> 토큰들이 생성된 SQL 내에서 정수 리터럴들로 번역되도록 강제할 것이다."
+#. Tag: para
+#: configuration.xml:1160
+#, no-c-format
+msgid ""
+"would cause the tokens <literal>true</literal> and <literal>false</literal> "
+"to be translated to integer literals in the generated SQL."
+msgstr ""
+"은<literal>true</literal>와 <literal>false</literal> 토큰들이 생성된 SQL 내에"
+"서 정수 리터럴들로 번역되도록 강제할 것이다."
-#: index.docbook:1165
+#. Tag: programlisting
+#: configuration.xml:1165
+#, no-c-format
msgid "hibernate.query.substitutions toLowercase=LOWER"
msgstr "hibernate.query.substitutions toLowercase=LOWER"
-#: index.docbook:1167
+#. Tag: para
+#: configuration.xml:1167
+#, no-c-format
msgid "would allow you to rename the SQL <literal>LOWER</literal> function."
-msgstr "은 SQL <literal>LOWER</literal> function 함수 이름을 변경하는 것을 당신에게 허용해 줄 것이다"
+msgstr ""
+"은 SQL <literal>LOWER</literal> function 함수 이름을 변경하는 것을 당신에게 "
+"허용해 줄 것이다"
-#: index.docbook:1174
+#. Tag: title
+#: configuration.xml:1174
+#, no-c-format
msgid "Hibernate statistics"
msgstr "Hibernate 통계"
-#: index.docbook:1176
-msgid "If you enable <literal>hibernate.generate_statistics</literal>, Hibernate will expose a number of metrics that are useful when tuning a running system via <literal>SessionFactory.getStatistics()</literal>. Hibernate can even be configured to expose these statistics via JMX. Read the Javadoc of the interfaces in <literal>org.hibernate.stats</literal> for more information."
-msgstr "만일 당신이 <literal>hibernate.generate_statistics</literal>를 사용 가능하도록 할 경우, Hibernate는 <literal>SessionFactory.getStatistics()</literal>를 통해 가동 중인 시스템을 튜닝할 때 유용한 많은 통계들을 노출시킬 것이다. Hibernate는 심지어 JMX를 통해 이들 통계들을 노출시키도록 구성될 수 있다. 추가 정보는 <literal>org.hibernate.stats</literal>에 있는 인터페이스들에 관한 Javadoc를 읽어라."
+#. Tag: para
+#: configuration.xml:1176
+#, no-c-format
+msgid ""
+"If you enable <literal>hibernate.generate_statistics</literal>, Hibernate "
+"will expose a number of metrics that are useful when tuning a running system "
+"via <literal>SessionFactory.getStatistics()</literal>. Hibernate can even be "
+"configured to expose these statistics via JMX. Read the Javadoc of the "
+"interfaces in <literal>org.hibernate.stats</literal> for more information."
+msgstr ""
+"만일 당신이 <literal>hibernate.generate_statistics</literal>를 사용 가능하도"
+"록 할 경우, Hibernate는 <literal>SessionFactory.getStatistics()</literal>를 "
+"통해 가동 중인 시스템을 튜닝할 때 유용한 많은 통계들을 노출시킬 것이다. "
+"Hibernate는 심지어 JMX를 통해 이들 통계들을 노출시키도록 구성될 수 있다. 추"
+"가 정보는 <literal>org.hibernate.stats</literal>에 있는 인터페이스들에 관한 "
+"Javadoc를 읽어라."
-#: index.docbook:1188
+#. Tag: title
+#: configuration.xml:1188
+#, no-c-format
msgid "Logging"
-msgstr "<title>로깅</title>"
+msgstr "로깅"
-#: index.docbook:1190
+#. Tag: para
+#: configuration.xml:1190
+#, no-c-format
msgid "Hibernate logs various events using Apache commons-logging."
-msgstr "Hibernate는 Apache commons-logging를 사용하여 다양한 이벤트들을 로그시킨다."
+msgstr ""
+"Hibernate는 Apache commons-logging를 사용하여 다양한 이벤트들을 로그시킨다."
-#: index.docbook:1194
-msgid "The commons-logging service will direct output to either Apache Log4j (if you include <literal>log4j.jar</literal> in your classpath) or JDK1.4 logging (if running under JDK1.4 or above). You may download Log4j from <literal>http://jakarta.apache.org</literal>. To use Log4j you will need to place a <literal>log4j.properties</literal> file in your classpath, an example properties file is distributed with Hibernate in the <literal>src/</literal> directory."
-msgstr "commons-logging 서비스는 (만일 당신이 classpath 내에 <literal>log4j.jar</literal>를 포함할 경우) Apache Log4j로 또는 (JDK1.4 이상의 버전에서 실행될 경우) JDK 1.4 로깅으로 직접 출력할 것이다. 당신은 <literal>http://jakarta.apache.org</literal>에서 Log4j를 다운로드 할 수 있다. Log4j를 사용하기 위해, 당신은 <literal>log4j.properties</literal> 파일을 당신의 classpath 내에 위치지울 필요가 있을 것이고, 예제 properties 파일은 Hibernate의 <literal>src/</literal> 디렉토리 내에 배포되어 있다."
+#. Tag: para
+#: configuration.xml:1194
+#, no-c-format
+msgid ""
+"The commons-logging service will direct output to either Apache Log4j (if "
+"you include <literal>log4j.jar</literal> in your classpath) or JDK1.4 "
+"logging (if running under JDK1.4 or above). You may download Log4j from "
+"<literal>http://jakarta.apache.org</literal>. To use Log4j you will need to "
+"place a <literal>log4j.properties</literal> file in your classpath, an "
+"example properties file is distributed with Hibernate in the <literal>src/</"
+"literal> directory."
+msgstr ""
+"commons-logging 서비스는 (만일 당신이 classpath 내에 <literal>log4j.jar</"
+"literal>를 포함할 경우) Apache Log4j로 또는 (JDK1.4 이상의 버전에서 실행될 경"
+"우) JDK 1.4 로깅으로 직접 출력할 것이다. 당신은 <literal>http://jakarta."
+"apache.org</literal>에서 Log4j를 다운로드 할 수 있다. Log4j를 사용하기 위해, "
+"당신은 <literal>log4j.properties</literal> 파일을 당신의 classpath 내에 위치"
+"지울 필요가 있을 것이고, 예제 properties 파일은 Hibernate의 <literal>src/</"
+"literal> 디렉토리 내에 배포되어 있다."
-#: index.docbook:1204
-msgid "We strongly recommend that you familiarize yourself with Hibernate's log messages. A lot of work has been put into making the Hibernate log as detailed as possible, without making it unreadable. It is an essential troubleshooting device. The most interesting log categories are the following:"
-msgstr "우리는 당신이 Hibernate의 로그 메시지들에 익숙해지기를 강력히 권장한다. 읽기 불가능하지 않게끔 가능한 한 상세하게 Hibernate 로그를 만들도록 많은 작업이 행해졌다. 그것은 본질적인 문제던지기 장치이다. 가장 흥미로운 로그 카테고리들이 다음에 있다:"
+#. Tag: para
+#: configuration.xml:1204
+#, no-c-format
+msgid ""
+"We strongly recommend that you familiarize yourself with Hibernate's log "
+"messages. A lot of work has been put into making the Hibernate log as "
+"detailed as possible, without making it unreadable. It is an essential "
+"troubleshooting device. The most interesting log categories are the "
+"following:"
+msgstr ""
+"우리는 당신이 Hibernate의 로그 메시지들에 익숙해지기를 강력히 권장한다. 읽기 "
+"불가능하지 않게끔 가능한 한 상세하게 Hibernate 로그를 만들도록 많은 작업이 행"
+"해졌다. 그것은 본질적인 문제던지기 장치이다. 가장 흥미로운 로그 카테고리들이 "
+"다음에 있다:"
-#: index.docbook:1213
+#. Tag: title
+#: configuration.xml:1213
+#, no-c-format
msgid "Hibernate Log Categories"
msgstr "Hibernate 로그 카테고리들"
-#: index.docbook:1219
+#. Tag: entry
+#: configuration.xml:1219
+#, no-c-format
msgid "Category"
msgstr "카테고리"
-#: index.docbook:1220
+#. Tag: entry
+#: configuration.xml:1220
+#, no-c-format
msgid "Function"
-msgstr "<entry>기능</entry>"
+msgstr "기능"
-#: index.docbook:1225
+#. Tag: literal
+#: configuration.xml:1225
+#, no-c-format
msgid "org.hibernate.SQL"
msgstr "org.hibernate.SQL"
-#: index.docbook:1226
+#. Tag: entry
+#: configuration.xml:1226
+#, no-c-format
msgid "Log all SQL DML statements as they are executed"
msgstr "SQL DML 문장들이 실행될 때 그것들 모두를 로그 시킨다"
-#: index.docbook:1229
+#. Tag: literal
+#: configuration.xml:1229
+#, no-c-format
msgid "org.hibernate.type"
msgstr "org.hibernate.type"
-#: index.docbook:1230
+#. Tag: entry
+#: configuration.xml:1230
+#, no-c-format
msgid "Log all JDBC parameters"
msgstr "모든 JDBC 파라미터들을 로그시킨다"
-#: index.docbook:1233
+#. Tag: literal
+#: configuration.xml:1233
+#, no-c-format
msgid "org.hibernate.tool.hbm2ddl"
msgstr "org.hibernate.tool.hbm2ddl"
-#: index.docbook:1234
+#. Tag: entry
+#: configuration.xml:1234
+#, no-c-format
msgid "Log all SQL DDL statements as they are executed"
msgstr "SQL DDL 문장들이 실행될 때 그것들 모두를 로그 시킨다"
-#: index.docbook:1237
+#. Tag: literal
+#: configuration.xml:1237
+#, no-c-format
msgid "org.hibernate.pretty"
msgstr "org.hibernate.pretty"
-#: index.docbook:1238
-msgid "Log the state of all entities (max 20 entities) associated with the session at flush time"
-msgstr "flush 시점에서 세션과 연관된 모든 엔티티들(최대 20개의 엔티티들)의 상태를 로그 시킨다"
+#. Tag: entry
+#: configuration.xml:1238
+#, no-c-format
+msgid ""
+"Log the state of all entities (max 20 entities) associated with the session "
+"at flush time"
+msgstr ""
+"flush 시점에서 세션과 연관된 모든 엔티티들(최대 20개의 엔티티들)의 상태를 로"
+"그 시킨다"
-#: index.docbook:1244
+#. Tag: literal
+#: configuration.xml:1244
+#, no-c-format
msgid "org.hibernate.cache"
msgstr "org.hibernate.cache"
-#: index.docbook:1245
+#. Tag: entry
+#: configuration.xml:1245
+#, no-c-format
msgid "Log all second-level cache activity"
msgstr "모든 second-level 캐시 액티비티를 로그시킨다"
-#: index.docbook:1248
+#. Tag: literal
+#: configuration.xml:1248
+#, no-c-format
msgid "org.hibernate.transaction"
msgstr "org.hibernate.transaction"
-#: index.docbook:1249
+#. Tag: entry
+#: configuration.xml:1249
+#, no-c-format
msgid "Log transaction related activity"
msgstr "트랜잭션 관련 액티비티를 로그 시킨다"
-#: index.docbook:1252
+#. Tag: literal
+#: configuration.xml:1252
+#, no-c-format
msgid "org.hibernate.jdbc"
msgstr "org.hibernate.jdbc"
-#: index.docbook:1253
+#. Tag: entry
+#: configuration.xml:1253
+#, no-c-format
msgid "Log all JDBC resource acquisition"
msgstr "모든 JDBC 리소스 취득을 로그 시킨다"
-#: index.docbook:1256
+#. Tag: literal
+#: configuration.xml:1256
+#, no-c-format
msgid "org.hibernate.hql.ast.AST"
msgstr "org.hibernate.hql.ast.AST"
-#: index.docbook:1257
+#. Tag: entry
+#: configuration.xml:1257
+#, no-c-format
msgid "Log HQL and SQL ASTs during query parsing"
msgstr "질의 파싱 동안에 HQL AST와 SQL AST를 로그시킨다"
-#: index.docbook:1262
+#. Tag: literal
+#: configuration.xml:1262
+#, no-c-format
msgid "org.hibernate.secure"
msgstr "org.hibernate.secure"
-#: index.docbook:1263
+#. Tag: entry
+#: configuration.xml:1263
+#, no-c-format
msgid "Log all JAAS authorization requests"
msgstr "모든 JAAS 허가 요청들을 로그시킨다"
-#: index.docbook:1266
+#. Tag: literal
+#: configuration.xml:1266
+#, no-c-format
msgid "org.hibernate"
msgstr "org.hibernate"
-#: index.docbook:1267
-msgid "Log everything (a lot of information, but very useful for troubleshooting)"
+#. Tag: entry
+#: configuration.xml:1267
+#, no-c-format
+msgid ""
+"Log everything (a lot of information, but very useful for troubleshooting)"
msgstr "모든 것을 로그시킨다(많은 정보이지만, 문제해결에 매우 유용하다)"
-#: index.docbook:1276
-msgid "When developing applications with Hibernate, you should almost always work with <literal>debug</literal> enabled for the category <literal>org.hibernate.SQL</literal>, or, alternatively, the property <literal>hibernate.show_sql</literal> enabled."
-msgstr "Hibernate로 어플리케이션들을 개발할 때, 당신은 거의 항상 <literal>org.hibernate.SQL</literal> 카테고리에 대해 이용 가능한 <literal>debug</literal> 모드로 작업하거나, 다른 방법으로 <literal>hibernate.show_sql</literal> 프로퍼티를 이용가능하게 하여 작업해야 할 것이다."
+#. Tag: para
+#: configuration.xml:1276
+#, no-c-format
+msgid ""
+"When developing applications with Hibernate, you should almost always work "
+"with <literal>debug</literal> enabled for the category <literal>org."
+"hibernate.SQL</literal>, or, alternatively, the property <literal>hibernate."
+"show_sql</literal> enabled."
+msgstr ""
+"Hibernate로 어플리케이션들을 개발할 때, 당신은 거의 항상 <literal>org."
+"hibernate.SQL</literal> 카테고리에 대해 이용 가능한 <literal>debug</literal> "
+"모드로 작업하거나, 다른 방법으로 <literal>hibernate.show_sql</literal> 프로퍼"
+"티를 이용가능하게 하여 작업해야 할 것이다."
-#: index.docbook:1286
+#. Tag: title
+#: configuration.xml:1286
+#, no-c-format
msgid "Implementing a <literal>NamingStrategy</literal>"
msgstr "<literal>NamingStrategy</literal> 구현하기"
-#: index.docbook:1288
-msgid "The interface <literal>org.hibernate.cfg.NamingStrategy</literal> allows you to specify a \"naming standard\" for database objects and schema elements."
-msgstr "<literal>org.hibernate.cfg.NamingStrategy</literal> 인터페이스는 데이터베이스 객체들과 스키마 요소들에 대한 \"네이밍 표준\"을 지정하는 것을 당신에게 허용해준다."
+#. Tag: para
+#: configuration.xml:1288
+#, no-c-format
+msgid ""
+"The interface <literal>org.hibernate.cfg.NamingStrategy</literal> allows you "
+"to specify a \"naming standard\" for database objects and schema elements."
+msgstr ""
+"<literal>org.hibernate.cfg.NamingStrategy</literal> 인터페이스는 데이터베이"
+"스 객체들과 스키마 요소들에 대한 \"네이밍 표준\"을 지정하는 것을 당신에게 허"
+"용해준다."
-#: index.docbook:1293
-msgid "You may provide rules for automatically generating database identifiers from Java identifiers or for processing \"logical\" column and table names given in the mapping file into \"physical\" table and column names. This feature helps reduce the verbosity of the mapping document, eliminating repetitive noise (<literal>TBL_</literal> prefixes, for example). The default strategy used by Hibernate is quite minimal."
-msgstr "당신은 Java 식별자들로부터 데이터베이스 식별자들을 자동적으로 생성시키거나 매핑 파일에 주어진 \"논리적\" 컬럼과 테이블 이름들을 \"물리적\" 테이블과 컬럼 이름들로 자동적으로 처리하는 규칙들을 제공할 수 있다. 이 특징은 반복되는 잡음(예를 들어 <literal>TBL_</literal>접두어들)을 제거함으로써, 매핑 문서의 말많은 장황함을 감소시키도록 도와준다. Hibernate에 의해 사용되는 디폴트 방도는 아주 작은 작품이다."
+#. Tag: para
+#: configuration.xml:1293
+#, no-c-format
+msgid ""
+"You may provide rules for automatically generating database identifiers from "
+"Java identifiers or for processing \"logical\" column and table names given "
+"in the mapping file into \"physical\" table and column names. This feature "
+"helps reduce the verbosity of the mapping document, eliminating repetitive "
+"noise (<literal>TBL_</literal> prefixes, for example). The default strategy "
+"used by Hibernate is quite minimal."
+msgstr ""
+"당신은 Java 식별자들로부터 데이터베이스 식별자들을 자동적으로 생성시키거나 매"
+"핑 파일에 주어진 \"논리적\" 컬럼과 테이블 이름들을 \"물리적\" 테이블과 컬럼 "
+"이름들로 자동적으로 처리하는 규칙들을 제공할 수 있다. 이 특징은 반복되는 잡음"
+"(예를 들어 <literal>TBL_</literal>접두어들)을 제거함으로써, 매핑 문서의 말많"
+"은 장황함을 감소시키도록 도와준다. Hibernate에 의해 사용되는 디폴트 방도는 아"
+"주 작은 작품이다."
-#: index.docbook:1302
-msgid "You may specify a different strategy by calling <literal>Configuration.setNamingStrategy()</literal> before adding mappings:"
-msgstr "당신은 매핑들을 추가하기 이전에 <literal>Configuration.setNamingStrategy()</literal>를 호출함으로써 다른 방도를 지정할 수 있다:"
+#. Tag: para
+#: configuration.xml:1302
+#, no-c-format
+msgid ""
+"You may specify a different strategy by calling <literal>Configuration."
+"setNamingStrategy()</literal> before adding mappings:"
+msgstr ""
+"당신은 매핑들을 추가하기 이전에 <literal>Configuration.setNamingStrategy()</"
+"literal>를 호출함으로써 다른 방도를 지정할 수 있다:"
-#: index.docbook:1307
+#. Tag: programlisting
+#: configuration.xml:1307
+#, no-c-format
msgid ""
- "<![CDATA[SessionFactory sf = new Configuration()\n"
- " .setNamingStrategy(ImprovedNamingStrategy.INSTANCE)\n"
- " .addFile(\"Item.hbm.xml\")\n"
- " .addFile(\"Bid.hbm.xml\")\n"
- " .buildSessionFactory();]]>"
+"<![CDATA[SessionFactory sf = new Configuration()\n"
+" .setNamingStrategy(ImprovedNamingStrategy.INSTANCE)\n"
+" .addFile(\"Item.hbm.xml\")\n"
+" .addFile(\"Bid.hbm.xml\")\n"
+" .buildSessionFactory();]]>"
msgstr ""
- "<![CDATA[SessionFactory sf = new Configuration()\n"
- " .setNamingStrategy(ImprovedNamingStrategy.INSTANCE)\n"
- " .addFile(\"Item.hbm.xml\")\n"
- " .addFile(\"Bid.hbm.xml\")\n"
- " .buildSessionFactory();]]>"
-#: index.docbook:1309
-msgid "<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> is a built-in strategy that might be a useful starting point for some applications."
-msgstr "<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal>는 어떤 어플리케이션들에 대한 유용한 시작점일 수 있는 미리 빌드된 방도이다."
+#. Tag: para
+#: configuration.xml:1309
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal> is a built-in "
+"strategy that might be a useful starting point for some applications."
+msgstr ""
+"<literal>org.hibernate.cfg.ImprovedNamingStrategy</literal>는 어떤 어플리케이"
+"션들에 대한 유용한 시작점일 수 있는 미리 빌드된 방도이다."
-#: index.docbook:1317
+#. Tag: title
+#: configuration.xml:1317
+#, no-c-format
msgid "XML configuration file"
msgstr "XML 구성 파일"
-#: index.docbook:1319
-msgid "An alternative approach to configuration is to specify a full configuration in a file named <literal>hibernate.cfg.xml</literal>. This file can be used as a replacement for the <literal>hibernate.properties</literal> file or, if both are present, to override properties."
-msgstr "구성에 대한 다른 접근법은 <literal>hibernate.cfg.xml</literal>로 명명된 파일 속에 전체 구성을 지정하는 것이다. 이 파일은 <literal>hibernate.properties</literal> 파일에 대한 대용물로서 사용될 수 있거나, 만일 둘 다 존재할 경우에 프로퍼티들을 중복정의하는데 사용될 수 있다."
+#. Tag: para
+#: configuration.xml:1319
+#, no-c-format
+msgid ""
+"An alternative approach to configuration is to specify a full configuration "
+"in a file named <literal>hibernate.cfg.xml</literal>. This file can be used "
+"as a replacement for the <literal>hibernate.properties</literal> file or, if "
+"both are present, to override properties."
+msgstr ""
+"구성에 대한 다른 접근법은 <literal>hibernate.cfg.xml</literal>로 명명된 파일 "
+"속에 전체 구성을 지정하는 것이다. 이 파일은 <literal>hibernate.properties</"
+"literal> 파일에 대한 대용물로서 사용될 수 있거나, 만일 둘 다 존재할 경우에 프"
+"로퍼티들을 중복정의하는데 사용될 수 있다."
-#: index.docbook:1326
-msgid "The XML configuration file is by default expected to be in the root o your <literal>CLASSPATH</literal>. Here is an example:"
-msgstr "XML 구성 파일은 디폴트로 당신의 <literal>CLASSPATH</literal>의 루트에 존재하는 것이 기대된다. 다음은 예제이다:"
+#. Tag: para
+#: configuration.xml:1326
+#, no-c-format
+msgid ""
+"The XML configuration file is by default expected to be in the root o your "
+"<literal>CLASSPATH</literal>. Here is an example:"
+msgstr ""
+"XML 구성 파일은 디폴트로 당신의 <literal>CLASSPATH</literal>의 루트에 존재하"
+"는 것이 기대된다. 다음은 예제이다:"
-#: index.docbook:1331
+#. Tag: programlisting
+#: configuration.xml:1331
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
- "<!DOCTYPE hibernate-configuration PUBLIC\n"
- " \"-//Hibernate/Hibernate Configuration DTD//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd\">\n"
- "\n"
- "<hibernate-configuration>\n"
- "\n"
- " <!-- a SessionFactory instance listed as /jndi/name -->\n"
- " <session-factory\n"
- " name=\"java:hibernate/SessionFactory\">\n"
- "\n"
- " <!-- properties -->\n"
- " <property name=\"connection.datasource\">java:/comp/env/jdbc/MyDB</property>\n"
- " <property name=\"dialect\">org.hibernate.dialect.MySQLDialect</property>\n"
- " <property name=\"show_sql\">false</property>\n"
- " <property name=\"transaction.factory_class\">\n"
- " org.hibernate.transaction.JTATransactionFactory\n"
- " </property>\n"
- " <property name=\"jta.UserTransaction\">java:comp/UserTransaction</property>\n"
- "\n"
- " <!-- mapping files -->\n"
- " <mapping resource=\"org/hibernate/auction/Item.hbm.xml\"/>\n"
- " <mapping resource=\"org/hibernate/auction/Bid.hbm.xml\"/>\n"
- "\n"
- " <!-- cache settings -->\n"
- " <class-cache class=\"org.hibernate.auction.Item\" usage=\"read-write\"/>\n"
- " <class-cache class=\"org.hibernate.auction.Bid\" usage=\"read-only\"/>\n"
- " <collection-cache collection=\"org.hibernate.auction.Item.bids\" usage=\"read-write\"/>\n"
- "\n"
- " </session-factory>\n"
- "\n"
- "</hibernate-configuration>]]>"
+"<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
+"<!DOCTYPE hibernate-configuration PUBLIC\n"
+" \"-//Hibernate/Hibernate Configuration DTD//EN\"\n"
+" \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd\">\n"
+"\n"
+"<hibernate-configuration>\n"
+"\n"
+" <!-- a SessionFactory instance listed as /jndi/name -->\n"
+" <session-factory\n"
+" name=\"java:hibernate/SessionFactory\">\n"
+"\n"
+" <!-- properties -->\n"
+" <property name=\"connection.datasource\">java:/comp/env/jdbc/MyDB</"
+"property>\n"
+" <property name=\"dialect\">org.hibernate.dialect.MySQLDialect</"
+"property>\n"
+" <property name=\"show_sql\">false</property>\n"
+" <property name=\"transaction.factory_class\">\n"
+" org.hibernate.transaction.JTATransactionFactory\n"
+" </property>\n"
+" <property name=\"jta.UserTransaction\">java:comp/UserTransaction</"
+"property>\n"
+"\n"
+" <!-- mapping files -->\n"
+" <mapping resource=\"org/hibernate/auction/Item.hbm.xml\"/>\n"
+" <mapping resource=\"org/hibernate/auction/Bid.hbm.xml\"/>\n"
+"\n"
+" <!-- cache settings -->\n"
+" <class-cache class=\"org.hibernate.auction.Item\" usage=\"read-write"
+"\"/>\n"
+" <class-cache class=\"org.hibernate.auction.Bid\" usage=\"read-only\"/"
+">\n"
+" <collection-cache collection=\"org.hibernate.auction.Item.bids\" "
+"usage=\"read-write\"/>\n"
+"\n"
+" </session-factory>\n"
+"\n"
+"</hibernate-configuration>]]>"
msgstr ""
- "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
- "<!DOCTYPE hibernate-configuration PUBLIC\n"
- " \"-//Hibernate/Hibernate Configuration DTD//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd\">\n"
- "\n"
- "<hibernate-configuration>\n"
- "\n"
- " <!-- a SessionFactory instance listed as /jndi/name -->\n"
- " <session-factory\n"
- " name=\"java:hibernate/SessionFactory\">\n"
- "\n"
- " <!-- properties -->\n"
- " <property name=\"connection.datasource\">java:/comp/env/jdbc/MyDB</property>\n"
- " <property name=\"dialect\">org.hibernate.dialect.MySQLDialect</property>\n"
- " <property name=\"show_sql\">false</property>\n"
- " <property name=\"transaction.factory_class\">\n"
- " org.hibernate.transaction.JTATransactionFactory\n"
- " </property>\n"
- " <property name=\"jta.UserTransaction\">java:comp/UserTransaction</property>\n"
- "\n"
- " <!-- mapping files -->\n"
- " <mapping resource=\"org/hibernate/auction/Item.hbm.xml\"/>\n"
- " <mapping resource=\"org/hibernate/auction/Bid.hbm.xml\"/>\n"
- "\n"
- " <!-- cache settings -->\n"
- " <class-cache class=\"org.hibernate.auction.Item\" usage=\"read-write\"/>\n"
- " <class-cache class=\"org.hibernate.auction.Bid\" usage=\"read-only\"/>\n"
- " <collection-cache collection=\"org.hibernate.auction.Item.bids\" usage=\"read-write\"/>\n"
- "\n"
- " </session-factory>\n"
- "\n"
- "</hibernate-configuration>]]>"
-#: index.docbook:1333
-msgid "As you can see, the advantage of this approach is the externalization of the mapping file names to configuration. The <literal>hibernate.cfg.xml</literal> is also more convenient once you have to tune the Hibernate cache. Note that is your choice to use either <literal>hibernate.properties</literal> or <literal>hibernate.cfg.xml</literal>, both are equivalent, except for the above mentioned benefits of using the XML syntax."
-msgstr "당신이 볼 수 있듯이, 이 접근법의 장점은 구성에 대한 매핑 파일 이름들을 구체화 시키는 것이다. <literal>hibernate.cfg.xml</literal>은 또한 당신이 Hibernate 캐시를 튜닝해야할 때 보다 편리하다. <literal>hibernate.properties</literal> 또는 <literal>hibernate.cfg.xml</literal> 중 어느 것을 사용하는가는 당신의 선택이다. XML 구문을 사용하는 위에 언급된 이점들을 제외하면 둘다 같은 것임을 노트하라."
+#. Tag: para
+#: configuration.xml:1333
+#, no-c-format
+msgid ""
+"As you can see, the advantage of this approach is the externalization of the "
+"mapping file names to configuration. The <literal>hibernate.cfg.xml</"
+"literal> is also more convenient once you have to tune the Hibernate cache. "
+"Note that is your choice to use either <literal>hibernate.properties</"
+"literal> or <literal>hibernate.cfg.xml</literal>, both are equivalent, "
+"except for the above mentioned benefits of using the XML syntax."
+msgstr ""
+"당신이 볼 수 있듯이, 이 접근법의 장점은 구성에 대한 매핑 파일 이름들을 구체"
+"화 시키는 것이다. <literal>hibernate.cfg.xml</literal>은 또한 당신이 "
+"Hibernate 캐시를 튜닝해야할 때 보다 편리하다. <literal>hibernate.properties</"
+"literal> 또는 <literal>hibernate.cfg.xml</literal> 중 어느 것을 사용하는가는 "
+"당신의 선택이다. XML 구문을 사용하는 위에 언급된 이점들을 제외하면 둘다 같은 "
+"것임을 노트하라."
-#: index.docbook:1342
+#. Tag: para
+#: configuration.xml:1342
+#, no-c-format
msgid "With the XML configuration, starting Hibernate is then as simple as"
msgstr "Hibernate 구성으로, Hibernate를 시작하는 것은 다음과 같이 간단하다"
-#: index.docbook:1346
-msgid "<![CDATA[SessionFactory sf = new Configuration().configure().buildSessionFactory();]]>"
-msgstr "<![CDATA[SessionFactory sf = new Configuration().configure().buildSessionFactory();]]>"
+#. Tag: programlisting
+#: configuration.xml:1346
+#, no-c-format
+msgid ""
+"<![CDATA[SessionFactory sf = new Configuration().configure()."
+"buildSessionFactory();]]>"
+msgstr ""
-#: index.docbook:1348
+#. Tag: para
+#: configuration.xml:1348
+#, no-c-format
msgid "You can pick a different XML configuration file using"
msgstr "당신은 다음을 사용하여 다른 XML 구성 파일을 찾아낼 수 있다"
-#: index.docbook:1352
+#. Tag: programlisting
+#: configuration.xml:1352
+#, no-c-format
msgid ""
- "<![CDATA[SessionFactory sf = new Configuration()\n"
- " .configure(\"catdb.cfg.xml\")\n"
- " .buildSessionFactory();]]>"
+"<![CDATA[SessionFactory sf = new Configuration()\n"
+" .configure(\"catdb.cfg.xml\")\n"
+" .buildSessionFactory();]]>"
msgstr ""
- "<![CDATA[SessionFactory sf = new Configuration()\n"
- " .configure(\"catdb.cfg.xml\")\n"
- " .buildSessionFactory();]]>"
-#: index.docbook:1357
+#. Tag: title
+#: configuration.xml:1357
+#, no-c-format
msgid "J2EE Application Server integration"
msgstr "J2EE 어플리케이션 서버 통합"
-#: index.docbook:1359
+#. Tag: para
+#: configuration.xml:1359
+#, no-c-format
msgid "Hibernate has the following integration points for J2EE infrastructure:"
msgstr "Hibernate는 J2EE 인프라스트럭처에 대한 다음 통합 점들을 갖고 있다:"
-#: index.docbook:1365
-msgid "<emphasis>Container-managed datasources</emphasis>: Hibernate can use JDBC connections managed by the container and provided through JNDI. Usually, a JTA compatible <literal>TransactionManager</literal> and a <literal>ResourceManager</literal> take care of transaction management (CMT), esp. distributed transaction handling across several datasources. You may of course also demarcate transaction boundaries programmatically (BMT) or you might want to use the optional Hibernate <literal>Transaction</literal> API for this to keep your code portable."
-msgstr "<emphasis>Container-managed datasources</emphasis>: Hibernate는 컨테이너에 의해 관리되는 JDBC 커넥션들을 사용할 수 있고 JNDI를 통해 제공된다. 대개 JTA 호환 <literal>TransactionManager</literal>와 <literal>ResourceManager</literal>는 트랜잭션 관리(CMT), 특히 몇몇 데이터소스들을 가로질러 분산된 트랜잭션 핸들링을 처리한다. 물론 당신은 또한 프로그램 상으로 트랜잭션 경계들을 한정할 수도 있거나(BMT) 당신은 당신의 코드가 이식성을 유지하도록 이것에 대한 선택적인 Hibernate <literal>Transaction</literal> API를 사용하고자 원할 수도 있다."
+#. Tag: para
+#: configuration.xml:1365
+#, no-c-format
+msgid ""
+"<emphasis>Container-managed datasources</emphasis>: Hibernate can use JDBC "
+"connections managed by the container and provided through JNDI. Usually, a "
+"JTA compatible <literal>TransactionManager</literal> and a "
+"<literal>ResourceManager</literal> take care of transaction management "
+"(CMT), esp. distributed transaction handling across several datasources. You "
+"may of course also demarcate transaction boundaries programmatically (BMT) "
+"or you might want to use the optional Hibernate <literal>Transaction</"
+"literal> API for this to keep your code portable."
+msgstr ""
+"<emphasis>Container-managed datasources</emphasis>: Hibernate는 컨테이너에 의"
+"해 관리되는 JDBC 커넥션들을 사용할 수 있고 JNDI를 통해 제공된다. 대개 JTA 호"
+"환 <literal>TransactionManager</literal>와 <literal>ResourceManager</literal>"
+"는 트랜잭션 관리(CMT), 특히 몇몇 데이터소스들을 가로질러 분산된 트랜잭션 핸들"
+"링을 처리한다. 물론 당신은 또한 프로그램 상으로 트랜잭션 경계들을 한정할 수"
+"도 있거나(BMT) 당신은 당신의 코드가 이식성을 유지하도록 이것에 대한 선택적인 "
+"Hibernate <literal>Transaction</literal> API를 사용하고자 원할 수도 있다."
-#: index.docbook:1380
-msgid "<emphasis>Automatic JNDI binding</emphasis>: Hibernate can bind its <literal>SessionFactory</literal> to JNDI after startup."
-msgstr "<emphasis>자동적인 JNDI 바인딩</emphasis>: Hibernate는 시작 후에 그것의 <literal>SessionFactory</literal>를 JNDI에 바인드 시킬 수 있다."
+#. Tag: para
+#: configuration.xml:1380
+#, no-c-format
+msgid ""
+"<emphasis>Automatic JNDI binding</emphasis>: Hibernate can bind its "
+"<literal>SessionFactory</literal> to JNDI after startup."
+msgstr ""
+"<emphasis>자동적인 JNDI 바인딩</emphasis>: Hibernate는 시작 후에 그것의 "
+"<literal>SessionFactory</literal>를 JNDI에 바인드 시킬 수 있다."
-#: index.docbook:1389
-msgid "<emphasis>JTA Session binding:</emphasis> The Hibernate <literal>Session</literal> may be automatically bound to the scope of JTA transactions. Simply lookup the <literal>SessionFactory</literal> from JNDI and get the current <literal>Session</literal>. Let Hibernate take care of flushing and closing the <literal>Session</literal> when your JTA transaction completes. Transaction demarcation is either declarative (CMT) or programmatic (BMT/UserTransaction)."
-msgstr "<emphasis>JTA Session 바인딩</emphasis>: Hibernate <literal>Session</literal>은 JTA 트랜잭션들의 영역(scope)에 자동적으로 바인드 시킬 수도 있다. 간단하게 JNDI로부터 <literal>SessionFactory</literal>를 룩업하고 현재 <literal>Session</literal>을 얻어라. Hibernate로 하여금 당신의 JTA 트랜잭션이 완료될 때 <literal>Session</literal>을 flush시키고 닫는 것을 처리하도록 하라. 트랜잭션 경계 구분은 선언적(CMT)이거나 프로그래밍적((BMT/UserTransaction))이다."
+#. Tag: para
+#: configuration.xml:1389
+#, no-c-format
+msgid ""
+"<emphasis>JTA Session binding:</emphasis> The Hibernate <literal>Session</"
+"literal> may be automatically bound to the scope of JTA transactions. Simply "
+"lookup the <literal>SessionFactory</literal> from JNDI and get the current "
+"<literal>Session</literal>. Let Hibernate take care of flushing and closing "
+"the <literal>Session</literal> when your JTA transaction completes. "
+"Transaction demarcation is either declarative (CMT) or programmatic (BMT/"
+"UserTransaction)."
+msgstr ""
+"<emphasis>JTA Session 바인딩</emphasis>: Hibernate <literal>Session</literal>"
+"은 JTA 트랜잭션들의 영역(scope)에 자동적으로 바인드 시킬 수도 있다. 간단하게 "
+"JNDI로부터 <literal>SessionFactory</literal>를 룩업하고 현재 "
+"<literal>Session</literal>을 얻어라. Hibernate로 하여금 당신의 JTA 트랜잭션"
+"이 완료될 때 <literal>Session</literal>을 flush시키고 닫는 것을 처리하도록 하"
+"라. 트랜잭션 경계 구분은 선언적(CMT)이거나 프로그래밍적((BMT/"
+"UserTransaction))이다."
-#: index.docbook:1402
-msgid "<emphasis>JMX deployment:</emphasis> If you have a JMX capable application server (e.g. JBoss AS), you can chose to deploy Hibernate as a managed MBean. This saves you the one line startup code to build your <literal>SessionFactory</literal> from a <literal>Configuration</literal>. The container will startup your <literal>HibernateService</literal>, and ideally also take care of service dependencies (Datasource has to be available before Hibernate starts, etc)."
-msgstr "<emphasis>JMX 배치</emphasis>: 만일 당신이 JMX 가용성이 있는 어플리케이션 서버(예를 들면 JBoss AS)를 갖고 있다면, 당신은 Hibernate를 하나의 managed MBean으로서 배치하는 것을 선택할 수 있다. 이것은 <literal>Configuration</literal>으로부터 당신의 <literal>SessionFactory</literal>를 빌드 시키는 한 줄의 시작 코드를 절약해준다. 컨테이너는 당신의 <literal>HibernateService</literal>를 시작할 것이고, 또한 이상적으로 서비스 의존성들을 처리할 것이다(데이터소스는 Hibernate가 시작되기 전에 이용 가능해야 한다)."
+#. Tag: para
+#: configuration.xml:1402
+#, no-c-format
+msgid ""
+"<emphasis>JMX deployment:</emphasis> If you have a JMX capable application "
+"server (e.g. JBoss AS), you can chose to deploy Hibernate as a managed "
+"MBean. This saves you the one line startup code to build your "
+"<literal>SessionFactory</literal> from a <literal>Configuration</literal>. "
+"The container will startup your <literal>HibernateService</literal>, and "
+"ideally also take care of service dependencies (Datasource has to be "
+"available before Hibernate starts, etc)."
+msgstr ""
+"<emphasis>JMX 배치</emphasis>: 만일 당신이 JMX 가용성이 있는 어플리케이션 서"
+"버(예를 들면 JBoss AS)를 갖고 있다면, 당신은 Hibernate를 하나의 managed MBean"
+"으로서 배치하는 것을 선택할 수 있다. 이것은 <literal>Configuration</literal>"
+"으로부터 당신의 <literal>SessionFactory</literal>를 빌드 시키는 한 줄의 시작 "
+"코드를 절약해준다. 컨테이너는 당신의 <literal>HibernateService</literal>를 시"
+"작할 것이고, 또한 이상적으로 서비스 의존성들을 처리할 것이다(데이터소스는 "
+"Hibernate가 시작되기 전에 이용 가능해야 한다)."
-#: index.docbook:1413
-msgid "Depending on your environment, you might have to set the configuration option <literal>hibernate.connection.aggressive_release</literal> to true if your application server shows \"connection containment\" exceptions."
-msgstr "당신의 환경에 따라, 당신은 당신의 어플리케이션 서버가 \"connection containment(연결 봉쇄)\" 예외상황들을 보일 경우에 구성 옵션 <literal>hibernate.connection.aggressive_release</literal>를 true로 설정해야 될 수도 있다."
+#. Tag: para
+#: configuration.xml:1413
+#, no-c-format
+msgid ""
+"Depending on your environment, you might have to set the configuration "
+"option <literal>hibernate.connection.aggressive_release</literal> to true if "
+"your application server shows \"connection containment\" exceptions."
+msgstr ""
+"당신의 환경에 따라, 당신은 당신의 어플리케이션 서버가 \"connection "
+"containment(연결 봉쇄)\" 예외상황들을 보일 경우에 구성 옵션 "
+"<literal>hibernate.connection.aggressive_release</literal>를 true로 설정해야 "
+"될 수도 있다."
-#: index.docbook:1420
+#. Tag: title
+#: configuration.xml:1420
+#, no-c-format
msgid "Transaction strategy configuration"
msgstr "트랜잭션 방도 구성"
-#: index.docbook:1422
-msgid "The Hibernate <literal>Session</literal> API is independent of any transaction demarcation system in your architecture. If you let Hibernate use JDBC directly, through a connection pool, you may begin and end your transactions by calling the JDBC API. If you run in a J2EE application server, you might want to use bean-managed transactions and call the JTA API and <literal>UserTransaction</literal> when needed."
-msgstr "Hibernate <literal>Session</literal> API는 당신의 아카텍처 내에서 임의의 트랜잭션 관할 시스템에 독립적이다. 만일 당신이 Hibernate로 하여금 커넥션 풀을 통해 직접 JDBC를 사용하도록 강제할 경우, 당신은 JDBC API를 호출하여 당신의 트랜잭션을 시작하고 끝낼 수 있다. 만일 당신이 J2EE 어플리케이션 서버를 실행 중이라면, 당신은 필요할 때 bean-managed 트랜잭션들을 사용하고 JTA API와 <literal>UserTransaction</literal>을 호출하고자 원할 수 있다."
+#. Tag: para
+#: configuration.xml:1422
+#, no-c-format
+msgid ""
+"The Hibernate <literal>Session</literal> API is independent of any "
+"transaction demarcation system in your architecture. If you let Hibernate "
+"use JDBC directly, through a connection pool, you may begin and end your "
+"transactions by calling the JDBC API. If you run in a J2EE application "
+"server, you might want to use bean-managed transactions and call the JTA API "
+"and <literal>UserTransaction</literal> when needed."
+msgstr ""
+"Hibernate <literal>Session</literal> API는 당신의 아카텍처 내에서 임의의 트랜"
+"잭션 관할 시스템에 독립적이다. 만일 당신이 Hibernate로 하여금 커넥션 풀을 통"
+"해 직접 JDBC를 사용하도록 강제할 경우, 당신은 JDBC API를 호출하여 당신의 트랜"
+"잭션을 시작하고 끝낼 수 있다. 만일 당신이 J2EE 어플리케이션 서버를 실행 중이"
+"라면, 당신은 필요할 때 bean-managed 트랜잭션들을 사용하고 JTA API와 "
+"<literal>UserTransaction</literal>을 호출하고자 원할 수 있다."
-#: index.docbook:1430
-msgid "To keep your code portable between these two (and other) environments we recommend the optional Hibernate <literal>Transaction</literal> API, which wraps and hides the underlying system. You have to specify a factory class for <literal>Transaction</literal> instances by setting the Hibernate configuration property <literal>hibernate.transaction.factory_class</literal>."
-msgstr "이들 두 개의 (그리고 다른) 환경들에서 당신의 코드에 이식성을 유지하기 위해 우리는 기본 시스템을 포장하고 은폐시키는 선택적인 Hibernate <literal>Transaction</literal> API를 권장한다. 당신은 Hibernate 구성 프로퍼티 <literal>hibernate.transaction.factory_class</literal>를 사용하여 <literal>Transaction</literal> 인스턴스들에 대한 팩토리 클래스를 지정해야 한다."
+#. Tag: para
+#: configuration.xml:1430
+#, no-c-format
+msgid ""
+"To keep your code portable between these two (and other) environments we "
+"recommend the optional Hibernate <literal>Transaction</literal> API, which "
+"wraps and hides the underlying system. You have to specify a factory class "
+"for <literal>Transaction</literal> instances by setting the Hibernate "
+"configuration property <literal>hibernate.transaction.factory_class</"
+"literal>."
+msgstr ""
+"이들 두 개의 (그리고 다른) 환경들에서 당신의 코드에 이식성을 유지하기 위해 우"
+"리는 기본 시스템을 포장하고 은폐시키는 선택적인 Hibernate "
+"<literal>Transaction</literal> API를 권장한다. 당신은 Hibernate 구성 프로퍼"
+"티 <literal>hibernate.transaction.factory_class</literal>를 사용하여 "
+"<literal>Transaction</literal> 인스턴스들에 대한 팩토리 클래스를 지정해야 한"
+"다."
-#: index.docbook:1437
+#. Tag: para
+#: configuration.xml:1437
+#, no-c-format
msgid "There are three standard (built-in) choices:"
msgstr "세 개의 표준(미리 만들어진) 선택들이 존재한다:"
-#: index.docbook:1443
+#. Tag: literal
+#: configuration.xml:1443
+#, no-c-format
msgid "org.hibernate.transaction.JDBCTransactionFactory"
msgstr "org.hibernate.transaction.JDBCTransactionFactory"
-#: index.docbook:1445
+#. Tag: para
+#: configuration.xml:1445
+#, no-c-format
msgid "delegates to database (JDBC) transactions (default)"
msgstr "데이터베이스 (JDBC) 트랜잭션들에게 위임시킨다(디폴트)"
-#: index.docbook:1449
+#. Tag: literal
+#: configuration.xml:1449
+#, no-c-format
msgid "org.hibernate.transaction.JTATransactionFactory"
msgstr "org.hibernate.transaction.JTATransactionFactory"
-#: index.docbook:1451
-msgid "delegates to container-managed transaction if an existing transaction is underway in this context (e.g. EJB session bean method), otherwise a new transaction is started and bean-managed transaction are used."
-msgstr "기존의 트랜잭션이 이 컨텍스트(예를 들면 EJB session bean 메소드) 내에서 진행 중일 경우에 container-managed transaction에게 위임시키고, 그 밖의 경우 새로운 트랜잭션이 시작되고 bean-managed transaction이 사용된다."
+#. Tag: para
+#: configuration.xml:1451
+#, no-c-format
+msgid ""
+"delegates to container-managed transaction if an existing transaction is "
+"underway in this context (e.g. EJB session bean method), otherwise a new "
+"transaction is started and bean-managed transaction are used."
+msgstr ""
+"기존의 트랜잭션이 이 컨텍스트(예를 들면 EJB session bean 메소드) 내에서 진행 "
+"중일 경우에 container-managed transaction에게 위임시키고, 그 밖의 경우 새로"
+"운 트랜잭션이 시작되고 bean-managed transaction이 사용된다."
-#: index.docbook:1459
+#. Tag: literal
+#: configuration.xml:1459
+#, no-c-format
msgid "org.hibernate.transaction.CMTTransactionFactory"
msgstr "org.hibernate.transaction.CMTTransactionFactory"
-#: index.docbook:1461
+#. Tag: para
+#: configuration.xml:1461
+#, no-c-format
msgid "delegates to container-managed JTA transactions"
msgstr "container-managed JTA 트랜잭션들에게 위임시킨다"
-#: index.docbook:1466
-msgid "You may also define your own transaction strategies (for a CORBA transaction service, for example)."
-msgstr "당신은 또한 당신 자신의 트랜잭션 방도들(예를 들면 CORBA 트랜잭션 서비스)을 정의할 수도 있다."
+#. Tag: para
+#: configuration.xml:1466
+#, no-c-format
+msgid ""
+"You may also define your own transaction strategies (for a CORBA transaction "
+"service, for example)."
+msgstr ""
+"당신은 또한 당신 자신의 트랜잭션 방도들(예를 들면 CORBA 트랜잭션 서비스)을 정"
+"의할 수도 있다."
-#: index.docbook:1471
-msgid "Some features in Hibernate (i.e. the second level cache, Contextual Sessions with JTA, etc.) require access to the JTA <literal>TransactionManager</literal> in a managed environment. In an application server you have to specify how Hibernate should obtain a reference to the <literal>TransactionManager</literal>, since J2EE does not standardize a single mechanism:"
-msgstr "Hibernate에 있는 몇몇 특징들(예를 들면. second level 캐시, JTA를 가진 컨텍스트 상의 세션들, 기타.)은 관리되는 환경에서 JTA <literal>TransactionManager</literal>에 대한 접근을 필요로 한다. 어플리케이션 서버에서 당신은 Hibernate가 <literal>TransactionManager</literal>에 대한 참조를 획득하는 방법을 지정해야 한다. 왜냐하면 J2EE가 한 개의 메커니즘을 표준화 시키고 있지 않기 때문이다:"
+#. Tag: para
+#: configuration.xml:1471
+#, no-c-format
+msgid ""
+"Some features in Hibernate (i.e. the second level cache, Contextual Sessions "
+"with JTA, etc.) require access to the JTA <literal>TransactionManager</"
+"literal> in a managed environment. In an application server you have to "
+"specify how Hibernate should obtain a reference to the "
+"<literal>TransactionManager</literal>, since J2EE does not standardize a "
+"single mechanism:"
+msgstr ""
+"Hibernate에 있는 몇몇 특징들(예를 들면. second level 캐시, JTA를 가진 컨텍스"
+"트 상의 세션들, 기타.)은 관리되는 환경에서 JTA <literal>TransactionManager</"
+"literal>에 대한 접근을 필요로 한다. 어플리케이션 서버에서 당신은 Hibernate가 "
+"<literal>TransactionManager</literal>에 대한 참조를 획득하는 방법을 지정해야 "
+"한다. 왜냐하면 J2EE가 한 개의 메커니즘을 표준화 시키고 있지 않기 때문이다:"
-#: index.docbook:1479
+#. Tag: title
+#: configuration.xml:1479
+#, no-c-format
msgid "JTA TransactionManagers"
msgstr "JTA TransactionManagers"
-#: index.docbook:1485
+#. Tag: entry
+#: configuration.xml:1485
+#, no-c-format
msgid "Transaction Factory"
msgstr "트랜잭션 팩토리"
-#: index.docbook:1486
+#. Tag: entry
+#: configuration.xml:1486
+#, no-c-format
msgid "Application Server"
msgstr "어플리케이션 서버"
-#: index.docbook:1491
+#. Tag: literal
+#: configuration.xml:1491
+#, no-c-format
msgid "org.hibernate.transaction.JBossTransactionManagerLookup"
msgstr "org.hibernate.transaction.JBossTransactionManagerLookup"
-#: index.docbook:1492
+#. Tag: entry
+#: configuration.xml:1492
+#, no-c-format
msgid "JBoss"
msgstr "JBoss"
-#: index.docbook:1495
+#. Tag: literal
+#: configuration.xml:1495
+#, no-c-format
msgid "org.hibernate.transaction.WeblogicTransactionManagerLookup"
msgstr "org.hibernate.transaction.WeblogicTransactionManagerLookup"
-#: index.docbook:1496
+#. Tag: entry
+#: configuration.xml:1496
+#, no-c-format
msgid "Weblogic"
msgstr "Weblogic"
-#: index.docbook:1499
+#. Tag: literal
+#: configuration.xml:1499
+#, no-c-format
msgid "org.hibernate.transaction.WebSphereTransactionManagerLookup"
msgstr "org.hibernate.transaction.WebSphereTransactionManagerLookup"
-#: index.docbook:1500
+#. Tag: entry
+#: configuration.xml:1500
+#, no-c-format
msgid "WebSphere"
msgstr "WebSphere"
-#: index.docbook:1503
+#. Tag: literal
+#: configuration.xml:1503
+#, no-c-format
msgid "org.hibernate.transaction.WebSphereExtendedJTATransactionLookup"
msgstr "org.hibernate.transaction.WebSphereExtendedJTATransactionLookup"
-#: index.docbook:1504
+#. Tag: entry
+#: configuration.xml:1504
+#, no-c-format
msgid "WebSphere 6"
msgstr "WebSphere 6"
-#: index.docbook:1507
+#. Tag: literal
+#: configuration.xml:1507
+#, no-c-format
msgid "org.hibernate.transaction.OrionTransactionManagerLookup"
msgstr "org.hibernate.transaction.OrionTransactionManagerLookup"
-#: index.docbook:1508
+#. Tag: entry
+#: configuration.xml:1508
+#, no-c-format
msgid "Orion"
msgstr "Orion"
-#: index.docbook:1511
+#. Tag: literal
+#: configuration.xml:1511
+#, no-c-format
msgid "org.hibernate.transaction.ResinTransactionManagerLookup"
msgstr "org.hibernate.transaction.ResinTransactionManagerLookup"
-#: index.docbook:1512
+#. Tag: entry
+#: configuration.xml:1512
+#, no-c-format
msgid "Resin"
msgstr "Resin"
-#: index.docbook:1515
+#. Tag: literal
+#: configuration.xml:1515
+#, no-c-format
msgid "org.hibernate.transaction.JOTMTransactionManagerLookup"
msgstr "org.hibernate.transaction.JOTMTransactionManagerLookup"
-#: index.docbook:1516
+#. Tag: entry
+#: configuration.xml:1516
+#, no-c-format
msgid "JOTM"
msgstr "JOTM"
-#: index.docbook:1519
+#. Tag: literal
+#: configuration.xml:1519
+#, no-c-format
msgid "org.hibernate.transaction.JOnASTransactionManagerLookup"
msgstr "org.hibernate.transaction.JOnASTransactionManagerLookup"
-#: index.docbook:1520
+#. Tag: entry
+#: configuration.xml:1520
+#, no-c-format
msgid "JOnAS"
msgstr "JOnAS"
-#: index.docbook:1523
+#. Tag: literal
+#: configuration.xml:1523
+#, no-c-format
msgid "org.hibernate.transaction.JRun4TransactionManagerLookup"
msgstr "org.hibernate.transaction.JRun4TransactionManagerLookup"
-#: index.docbook:1524
+#. Tag: entry
+#: configuration.xml:1524
+#, no-c-format
msgid "JRun4"
msgstr "JRun4"
-#: index.docbook:1527
+#. Tag: literal
+#: configuration.xml:1527
+#, no-c-format
msgid "org.hibernate.transaction.BESTransactionManagerLookup"
msgstr "org.hibernate.transaction.BESTransactionManagerLookup"
-#: index.docbook:1528
+#. Tag: entry
+#: configuration.xml:1528
+#, no-c-format
msgid "Borland ES"
msgstr "Borland ES"
-#: index.docbook:1537
+#. Tag: title
+#: configuration.xml:1537
+#, no-c-format
msgid "JNDI-bound <literal>SessionFactory</literal>"
msgstr "JNDI-bound <literal>SessionFactory</literal>"
-#: index.docbook:1539
-msgid "A JNDI bound Hibernate <literal>SessionFactory</literal> can simplify the lookup of the factory and the creation of new <literal>Session</literal>s. Note that this is not related to a JNDI bound <literal>Datasource</literal>, both simply use the same registry!"
-msgstr "하나의 JNDI 바인드된 Hibernate <literal>SessionFactory</literal>는 그 팩토리에 대한 룩업과 새로운 <literal>Session</literal>들의 생성을 단순화 시킬 수 있다. 이것은 JNDI 바인드된 <literal>Datasource</literal>에 관련되어 있지 않고, 단순하게 둘 다 동일한 레지스트리를 사용한다는 점을 노트하라!"
+#. Tag: para
+#: configuration.xml:1539
+#, no-c-format
+msgid ""
+"A JNDI bound Hibernate <literal>SessionFactory</literal> can simplify the "
+"lookup of the factory and the creation of new <literal>Session</literal>s. "
+"Note that this is not related to a JNDI bound <literal>Datasource</literal>, "
+"both simply use the same registry!"
+msgstr ""
+"하나의 JNDI 바인드된 Hibernate <literal>SessionFactory</literal>는 그 팩토리"
+"에 대한 룩업과 새로운 <literal>Session</literal>들의 생성을 단순화 시킬 수 있"
+"다. 이것은 JNDI 바인드된 <literal>Datasource</literal>에 관련되어 있지 않고, "
+"단순하게 둘 다 동일한 레지스트리를 사용한다는 점을 노트하라!"
-#: index.docbook:1546
-msgid "If you wish to have the <literal>SessionFactory</literal> bound to a JNDI namespace, specify a name (eg. <literal>java:hibernate/SessionFactory</literal>) using the property <literal>hibernate.session_factory_name</literal>. If this property is omitted, the <literal>SessionFactory</literal> will not be bound to JNDI. (This is especially useful in environments with a read-only JNDI default implementation, e.g. Tomcat.)"
-msgstr "만일 당신이 <literal>SessionFactory</literal>를 하나의 JNDI namespace에 바인드 시키고자 원할 경우, <literal>hibernate.session_factory_name</literal> 프로퍼티를 사용하여 한 개의 이름(예를 들면. <literal>java:hibernate/SessionFactory</literal>)을 지정하라. 만일 이 프로퍼티가 생략될 경우, <literal>SessionFactory</literal>는 JNDI에 바인드 되지 않을 것이다. (이것은 읽기-전용 JNDI 디폴트 구현을 가진 환경들, 예를 들면 Tomcat에서 특히 유용하다.)"
+#. Tag: para
+#: configuration.xml:1546
+#, no-c-format
+msgid ""
+"If you wish to have the <literal>SessionFactory</literal> bound to a JNDI "
+"namespace, specify a name (eg. <literal>java:hibernate/SessionFactory</"
+"literal>) using the property <literal>hibernate.session_factory_name</"
+"literal>. If this property is omitted, the <literal>SessionFactory</literal> "
+"will not be bound to JNDI. (This is especially useful in environments with a "
+"read-only JNDI default implementation, e.g. Tomcat.)"
+msgstr ""
+"만일 당신이 <literal>SessionFactory</literal>를 하나의 JNDI namespace에 바인"
+"드 시키고자 원할 경우, <literal>hibernate.session_factory_name</literal> 프로"
+"퍼티를 사용하여 한 개의 이름(예를 들면. <literal>java:hibernate/"
+"SessionFactory</literal>)을 지정하라. 만일 이 프로퍼티가 생략될 경우, "
+"<literal>SessionFactory</literal>는 JNDI에 바인드 되지 않을 것이다. (이것은 "
+"읽기-전용 JNDI 디폴트 구현을 가진 환경들, 예를 들면 Tomcat에서 특히 유용하"
+"다.)"
-#: index.docbook:1554
-msgid "When binding the <literal>SessionFactory</literal> to JNDI, Hibernate will use the values of <literal>hibernate.jndi.url</literal>, <literal>hibernate.jndi.class</literal> to instantiate an initial context. If they are not specified, the default <literal>InitialContext</literal> will be used."
-msgstr "<literal>SessionFactory</literal>를 JNDI에 바인드 시킬 때, Hibernate는 초기 컨텍스트를 초기화 시키기 위해 <literal>hibernate.jndi.url</literal>, <literal>hibernate.jndi.class</literal>의 값들을 사용할 것이다. 만일 그것들이 지정되어 있지 않을 경우, 디폴트 <literal>InitialContext</literal>가 사용될 것이다."
+#. Tag: para
+#: configuration.xml:1554
+#, no-c-format
+msgid ""
+"When binding the <literal>SessionFactory</literal> to JNDI, Hibernate will "
+"use the values of <literal>hibernate.jndi.url</literal>, <literal>hibernate."
+"jndi.class</literal> to instantiate an initial context. If they are not "
+"specified, the default <literal>InitialContext</literal> will be used."
+msgstr ""
+"<literal>SessionFactory</literal>를 JNDI에 바인드 시킬 때, Hibernate는 초기 "
+"컨텍스트를 초기화 시키기 위해 <literal>hibernate.jndi.url</literal>, "
+"<literal>hibernate.jndi.class</literal>의 값들을 사용할 것이다. 만일 그것들"
+"이 지정되어 있지 않을 경우, 디폴트 <literal>InitialContext</literal>가 사용"
+"될 것이다."
-#: index.docbook:1561
-msgid "Hibernate will automatically place the <literal>SessionFactory</literal> in JNDI after you call <literal>cfg.buildSessionFactory()</literal>. This means you will at least have this call in some startup code (or utility class) in your application, unless you use JMX deployment with the <literal>HibernateService</literal> (discussed later)."
-msgstr "Hibernate는 당신이 <literal>cfg.buildSessionFactory()</literal>를 호출한 후에 <literal>SessionFactory</literal>를 JNDI 내에 자동적으로 위치지울 것이다. 이것은 당신이 (나중에 논의되는) <literal>HibernateService</literal>를 가진 JMX 배치를 사용하지 않는 한, 당신이 적어도 당신의 어플리케이션 내에 있는 어떤 시작 코드 (또는 유틸리티 클래스) 내에서 이것을 호출할 것임을 의미한다."
+#. Tag: para
+#: configuration.xml:1561
+#, no-c-format
+msgid ""
+"Hibernate will automatically place the <literal>SessionFactory</literal> in "
+"JNDI after you call <literal>cfg.buildSessionFactory()</literal>. This means "
+"you will at least have this call in some startup code (or utility class) in "
+"your application, unless you use JMX deployment with the "
+"<literal>HibernateService</literal> (discussed later)."
+msgstr ""
+"Hibernate는 당신이 <literal>cfg.buildSessionFactory()</literal>를 호출한 후"
+"에 <literal>SessionFactory</literal>를 JNDI 내에 자동적으로 위치지울 것이다. "
+"이것은 당신이 (나중에 논의되는) <literal>HibernateService</literal>를 가진 "
+"JMX 배치를 사용하지 않는 한, 당신이 적어도 당신의 어플리케이션 내에 있는 어"
+"떤 시작 코드 (또는 유틸리티 클래스) 내에서 이것을 호출할 것임을 의미한다."
-#: index.docbook:1568
-msgid "If you use a JNDI <literal>SessionFactory</literal>, an EJB or any other class may obtain the <literal>SessionFactory</literal> using a JNDI lookup."
-msgstr "만일 당신이 하나의 JNDI <literal>SessionFactory</literal>를 사용할 경우, 하나의 EJB 또는 어떤 다른 클래스는 JNDI 룩업을 사용하여 <literal>SessionFactory</literal>를 얻을 수 있다."
+#. Tag: para
+#: configuration.xml:1568
+#, no-c-format
+msgid ""
+"If you use a JNDI <literal>SessionFactory</literal>, an EJB or any other "
+"class may obtain the <literal>SessionFactory</literal> using a JNDI lookup."
+msgstr ""
+"만일 당신이 하나의 JNDI <literal>SessionFactory</literal>를 사용할 경우, 하나"
+"의 EJB 또는 어떤 다른 클래스는 JNDI 룩업을 사용하여 <literal>SessionFactory</"
+"literal>를 얻을 수 있다."
-#: index.docbook:1573
-msgid "We recommend that you bind the <literal>SessionFactory</literal> to JNDI in a managed environment and use a <literal>static</literal> singleton otherwise. To shield your application code from these details, we also recommend to hide the actual lookup code for a <literal>SessionFactory</literal> in a helper class, such as <literal>HibernateUtil.getSessionFactory()</literal>. Note that such a class is also a convenient way to startup Hibernate—see chapter 1."
-msgstr "우리는 관리되는 환경들에서 <literal>SessionFactory</literal>를 JNDI에 바인드 시키고 그 밖의 경우에는 하나의 <literal>static</literal> 싱글톤을 사용하는 것을 권장한다. 이들 상세로부터 당신의 어플리케이션 코드를 은폐시키기 위해, 우리는 또한 <literal>HibernateUtil.getSessionFactory()</literal>과 같은 하나의 helper 클래스 내에서 <literal>SessionFactory</literal>에 대한 실제 룩업 코드를 은폐시키기를 권장한다. 그런 클래스는 또한 Hibernate를 시작하는 편리한 방법임을 노트하라— 1장을 보라."
+#. Tag: para
+#: configuration.xml:1573
+#, no-c-format
+msgid ""
+"We recommend that you bind the <literal>SessionFactory</literal> to JNDI in "
+"a managed environment and use a <literal>static</literal> singleton "
+"otherwise. To shield your application code from these details, we also "
+"recommend to hide the actual lookup code for a <literal>SessionFactory</"
+"literal> in a helper class, such as <literal>HibernateUtil.getSessionFactory"
+"()</literal>. Note that such a class is also a convenient way to startup "
+"Hibernate—see chapter 1."
+msgstr ""
+"우리는 관리되는 환경들에서 <literal>SessionFactory</literal>를 JNDI에 바인드 "
+"시키고 그 밖의 경우에는 하나의 <literal>static</literal> 싱글톤을 사용하는 것"
+"을 권장한다. 이들 상세로부터 당신의 어플리케이션 코드를 은폐시키기 위해, 우리"
+"는 또한 <literal>HibernateUtil.getSessionFactory()</literal>과 같은 하나의 "
+"helper 클래스 내에서 <literal>SessionFactory</literal>에 대한 실제 룩업 코드"
+"를 은폐시키기를 권장한다. 그런 클래스는 또한 Hibernate를 시작하는 편리한 방법"
+"임을 노트하라— 1장을 보라."
-#: index.docbook:1585
+#. Tag: title
+#: configuration.xml:1585
+#, no-c-format
msgid "Current Session context management with JTA"
msgstr "Current Session context management with JTA"
-#: index.docbook:1587
-msgid "The easiest way to handle <literal>Session</literal>s and transactions is Hibernates automatic \"current\" <literal>Session</literal> management. See the discussion of <xref linkend=\"architecture-current-session\"/>current sessions. Using the <literal>\"jta\"</literal> session context, if there is no Hibernate <literal>Session</literal> associated with the current JTA transaction, one will be started and associated with that JTA transaction the first time you call <literal>sessionFactory.getCurrentSession()</literal>. The <literal>Session</literal>s retrieved via <literal>getCurrentSession()</literal> in <literal>\"jta\"</literal> context will be set to automatically flush before the transaction completes, close after the transaction completes, and aggressively release JDBC connections after each statement. This allows the <literal>Session</literal>s to be managed by the life cycle of the JTA transaction to which it is associated, keeping user code clean of such man!
agement concerns. Your code can either use JTA programmatically through <literal>UserTransaction</literal>, or (recommended for portable code) use the Hibernate <literal>Transaction</literal> API to set transaction boundaries. If you run in an EJB container, declarative transaction demarcation with CMT is preferred."
-msgstr "당신 자신의 <literal>ThreadLocal</literal> 유틸리티를 작동시키는 대신에, 우리는 또한 Hibernate <literal>Session</literal>를 얻기 위해 <literal>SessionFactory</literal> 상의 <literal>getCurrentSession()</literal> 메소드 사용을 권장한다. <xref linkend=\"architecture-current-session\"/>현재 세션들에 관한 논의를 보라. <literal>\"jta\"</literal> 세션 컨텍스트를 사용하고 있는 경우에, 현재의 JTA 트랜잭션으로 시작되고 연관된 Hibernate <literal>Session</literal>이 존재하지 않을 경우, 우리는 JTA 트랜잭션으로 시작되고 연관될 것이다. <literal>\"jta\"</literal> 컨텍스트에서 <literal>getCurrentSession()</literal>를 통해 검색된 <literal>Session</literal>들은 그 트랜잭션이 완료되기 전에 자동적으로 flush될 것이고 트랜잭션 완료 후에 닫혀질 것이고, 그리고 각각의 문장 뒤에 JDBC 커넥션들을 적극적으로 해제�!
�� 것이다. 이것은 그런 관리 사항들에 대해 사용자 코드를 명료하게 유지시켜서, 연관되어 있는 JTA 트랜잭션의 생명주기에 의해 <literal>Session</literal>들이 관리되도록 허용해준다. 이것은 그런 관리 사항들에 대해 사용자 코드를 명료하게 유지시켜서, 세션이 연관되어 있는 JTA 트랜잭션의 생명주기에 의해 관리되는 것을 <literal>Session</literal>들에게 허용해준다. 당신의 코드는 <literal>Session</literal>들과 트랜잭션들을 처리하는 가장 손쉬운 방법은 Hibernate의 자동적인 \"현재\" <literal>Session</literal>이다. <xref linkend=\"architecture-current-session\"/>current sessions에 관한 논의를 보라. <literal>\"jta\"</literal> 세션 컨텍스트를 사용하는 경우, 현재의 JTA 트랜잭션으로 시작되고 연관된 Hibernate <literal>Session</literal>들이 존재하지 않을 경우, 당신이 <literal>sessionFactory.get!
CurrentSession()</literal>을 처음 호출할 때 하나의 세션이
현재의 JTA 트랜잭션에 대해 시작되고 연관될 것이다. <literal>\"jta\"</literal> 컨텍스트에서 <literal>getCurrentSession()</literal>을 통해 검색된 <literal>Session</literal>들은 그 트랜잭션이 완료되기 전에 자동적으로 flush될 것이고 그 트랜잭션 완료들 후에 닫혀질 것이고 각각의 문장 후에 JDBC 커넥션들을 적극적으로 해제할 것이다. 이것은 그런 관리 사항들에 대해 사용자 코드를 명료하게 유지시켜서, 연관되어 있는 JTA 트랜잭션의 생명주기에 의해 <literal>Session</literal>들이 관리되도록 허용해준다. 이것은 그런 관리 사항들에 대해 사용자 코드를 명료하게 유지시켜서, 세션이 연관되어 있는 JTA 트랜잭션의 생명주기에 의해 관리되는 것을 <literal>Session</literal>들에게 허용해준다. 당신의 코드는 트랜잭션 경계들을 설정하는데 <literal>UserTransaction</literal>을 통�!
� 프로그램 상으로 JTA를 사용하거나, Hibernate <literal>Transaction</literal> API를 (이식성을 위한 코드로 권장됨) 사용할 수 있다. 만일 당신이 하나의 EJB 컨테이너에서 실행하고 있을 경우, CMT의 경우에 선언적인 트랜잭션 경계설정이 선호된다."
+#. Tag: para
+#: configuration.xml:1587
+#, no-c-format
+msgid ""
+"The easiest way to handle <literal>Session</literal>s and transactions is "
+"Hibernates automatic \"current\" <literal>Session</literal> management. See "
+"the discussion of <link linkend=\"architecture-current-session\">current "
+"sessions</link>. Using the <literal>\"jta\"</literal> session context, if "
+"there is no Hibernate <literal>Session</literal> associated with the current "
+"JTA transaction, one will be started and associated with that JTA "
+"transaction the first time you call <literal>sessionFactory.getCurrentSession"
+"()</literal>. The <literal>Session</literal>s retrieved via "
+"<literal>getCurrentSession()</literal> in <literal>\"jta\"</literal> context "
+"will be set to automatically flush before the transaction completes, close "
+"after the transaction completes, and aggressively release JDBC connections "
+"after each statement. This allows the <literal>Session</literal>s to be "
+"managed by the life cycle of the JTA transaction to which it is associated, "
+"keeping user code clean of such management concerns. Your code can either "
+"use JTA programmatically through <literal>UserTransaction</literal>, or "
+"(recommended for portable code) use the Hibernate <literal>Transaction</"
+"literal> API to set transaction boundaries. If you run in an EJB container, "
+"declarative transaction demarcation with CMT is preferred."
+msgstr ""
+"당신 자신의 <literal>ThreadLocal</literal> 유틸리티를 작동시키는 대신에, 우리"
+"는 또한 Hibernate <literal>Session</literal>를 얻기 위해 "
+"<literal>SessionFactory</literal> 상의 <literal>getCurrentSession()</"
+"literal> 메소드 사용을 권장한다. <xref linkend=\"architecture-current-session"
+"\">현재 세션들</xref>에 관한 논의를 보라. <literal>\"jta\"</literal> 세션 컨"
+"텍스트를 사용하고 있는 경우에, 현재의 JTA 트랜잭션으로 시작되고 연관된 "
+"Hibernate <literal>Session</literal>이 존재하지 않을 경우, 우리는 JTA 트랜잭"
+"션으로 시작되고 연관될 것이다. <literal>\"jta\"</literal> 컨텍스트에서 "
+"<literal>getCurrentSession()</literal>를 통해 검색된 <literal>Session</"
+"literal>들은 그 트랜잭션이 완료되기 전에 자동적으로 flush될 것이고 트랜잭션 "
+"완료 후에 닫혀질 것이고, 그리고 각각의 문장 뒤에 JDBC 커넥션들을 적극적으로 "
+"해제할 것이다. 이것은 그런 관리 사항들에 대해 사용자 코드를 명료하게 유지시켜"
+"서, 연관되어 있는 JTA 트랜잭션의 생명주기에 의해 <literal>Session</literal>들"
+"이 관리되도록 허용해준다. 이것은 그런 관리 사항들에 대해 사용자 코드를 명료하"
+"게 유지시켜서, 세션이 연관되어 있는 JTA 트랜잭션의 생명주기에 의해 관리되는 "
+"것을 <literal>Session</literal>들에게 허용해준다. 당신의 코드는 "
+"<literal>Session</literal>들과 트랜잭션들을 처리하는 가장 손쉬운 방법은 "
+"Hibernate의 자동적인 \"현재\" <literal>Session</literal>이다. <xref linkend="
+"\"architecture-current-session\">current sessions</xref>에 관한 논의를 보라. "
+"<literal>\"jta\"</literal> 세션 컨텍스트를 사용하는 경우, 현재의 JTA 트랜잭션"
+"으로 시작되고 연관된 Hibernate <literal>Session</literal>들이 존재하지 않을 "
+"경우, 당신이 <literal>sessionFactory.getCurrentSession()</literal>을 처음 호"
+"출할 때 하나의 세션이 현재의 JTA 트랜잭션에 대해 시작되고 연관될 것이다. "
+"<literal>\"jta\"</literal> 컨텍스트에서 <literal>getCurrentSession()</"
+"literal>을 통해 검색된 <literal>Session</literal>들은 그 트랜잭션이 완료되기 "
+"전에 자동적으로 flush될 것이고 그 트랜잭션 완료들 후에 닫혀질 것이고 각각의 "
+"문장 후에 JDBC 커넥션들을 적극적으로 해제할 것이다. 이것은 그런 관리 사항들"
+"에 대해 사용자 코드를 명료하게 유지시켜서, 연관되어 있는 JTA 트랜잭션의 생명"
+"주기에 의해 <literal>Session</literal>들이 관리되도록 허용해준다. 이것은 그"
+"런 관리 사항들에 대해 사용자 코드를 명료하게 유지시켜서, 세션이 연관되어 있"
+"는 JTA 트랜잭션의 생명주기에 의해 관리되는 것을 <literal>Session</literal>들"
+"에게 허용해준다. 당신의 코드는 트랜잭션 경계들을 설정하는데 "
+"<literal>UserTransaction</literal>을 통해 프로그램 상으로 JTA를 사용하거나, "
+"Hibernate <literal>Transaction</literal> API를 (이식성을 위한 코드로 권장됨) "
+"사용할 수 있다. 만일 당신이 하나의 EJB 컨테이너에서 실행하고 있을 경우, CMT"
+"의 경우에 선언적인 트랜잭션 경계설정이 선호된다."
-#: index.docbook:1610
+#. Tag: title
+#: configuration.xml:1610
+#, no-c-format
msgid "JMX deployment"
msgstr "JMX 배치"
-#: index.docbook:1612
-msgid "The line <literal>cfg.buildSessionFactory()</literal> still has to be executed somewhere to get a <literal>SessionFactory</literal> into JNDI. You can do this either in a <literal>static</literal> initializer block (like the one in <literal>HibernateUtil</literal>) or you deploy Hibernate as a <emphasis>managed service</emphasis>."
-msgstr "<literal>cfg.buildSessionFactory()</literal> 줄은 여전히 JNDI에 붙은 하나의 <literal>SessionFactory</literal>를 얻기 위해 어딘가에서 실행되어야 한다. 당신은 (<literal>HibernateUtil</literal> 내에 있는 것처럼) <literal>static</literal> initializer 블록 속에서 이것을 행할 수 있거나 당신은 Hibernate를 <emphasis>managed service</emphasis>로서 배치할 수 있다."
+#. Tag: para
+#: configuration.xml:1612
+#, no-c-format
+msgid ""
+"The line <literal>cfg.buildSessionFactory()</literal> still has to be "
+"executed somewhere to get a <literal>SessionFactory</literal> into JNDI. You "
+"can do this either in a <literal>static</literal> initializer block (like "
+"the one in <literal>HibernateUtil</literal>) or you deploy Hibernate as a "
+"<emphasis>managed service</emphasis>."
+msgstr ""
+"<literal>cfg.buildSessionFactory()</literal> 줄은 여전히 JNDI에 붙은 하나의 "
+"<literal>SessionFactory</literal>를 얻기 위해 어딘가에서 실행되어야 한다. 당"
+"신은 (<literal>HibernateUtil</literal> 내에 있는 것처럼) <literal>static</"
+"literal> initializer 블록 속에서 이것을 행할 수 있거나 당신은 Hibernate를 "
+"<emphasis>managed service</emphasis>로서 배치할 수 있다."
-#: index.docbook:1620
-msgid "Hibernate is distributed with <literal>org.hibernate.jmx.HibernateService</literal> for deployment on an application server with JMX capabilities, such as JBoss AS. The actual deployment and configuration is vendor specific. Here is an example <literal>jboss-service.xml</literal> for JBoss 4.0.x:"
-msgstr "Hibernate는 JBoss AS와 같은 JMX 가용성들을 가진 어플리케이션 서버 상의 배치를 위해 <literal>org.hibernate.jmx.HibernateService</literal>를 배포하고 있다. 실제 배치와 구성은 벤더 지정적이다. 다음은 JBoss 4.0.x를 위한 <literal>jboss-service.xml</literal> 예제이다:"
+#. Tag: para
+#: configuration.xml:1620
+#, no-c-format
+msgid ""
+"Hibernate is distributed with <literal>org.hibernate.jmx.HibernateService</"
+"literal> for deployment on an application server with JMX capabilities, such "
+"as JBoss AS. The actual deployment and configuration is vendor specific. "
+"Here is an example <literal>jboss-service.xml</literal> for JBoss 4.0.x:"
+msgstr ""
+"Hibernate는 JBoss AS와 같은 JMX 가용성들을 가진 어플리케이션 서버 상의 배치"
+"를 위해 <literal>org.hibernate.jmx.HibernateService</literal>를 배포하고 있"
+"다. 실제 배치와 구성은 벤더 지정적이다. 다음은 JBoss 4.0.x를 위한 "
+"<literal>jboss-service.xml</literal> 예제이다:"
-#: index.docbook:1627
+#. Tag: programlisting
+#: configuration.xml:1627
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<server>\n"
- "\n"
- "<mbean code=\"org.hibernate.jmx.HibernateService\"\n"
- " name=\"jboss.jca:service=HibernateFactory,name=HibernateFactory\">\n"
- "\n"
- " <!-- Required services -->\n"
- " <depends>jboss.jca:service=RARDeployer</depends>\n"
- " <depends>jboss.jca:service=LocalTxCM,name=HsqlDS</depends>\n"
- "\n"
- " <!-- Bind the Hibernate service to JNDI -->\n"
- " <attribute name=\"JndiName\">java:/hibernate/SessionFactory</attribute>\n"
- "\n"
- " <!-- Datasource settings -->\n"
- " <attribute name=\"Datasource\">java:HsqlDS</attribute>\n"
- " <attribute name=\"Dialect\">org.hibernate.dialect.HSQLDialect</attribute>\n"
- "\n"
- " <!-- Transaction integration -->\n"
- " <attribute name=\"TransactionStrategy\">\n"
- " org.hibernate.transaction.JTATransactionFactory</attribute>\n"
- " <attribute name=\"TransactionManagerLookupStrategy\">\n"
- " org.hibernate.transaction.JBossTransactionManagerLookup</attribute>\n"
- " <attribute name=\"FlushBeforeCompletionEnabled\">true</attribute>\n"
- " <attribute name=\"AutoCloseSessionEnabled\">true</attribute>\n"
- "\n"
- " <!-- Fetching options -->\n"
- " <attribute name=\"MaximumFetchDepth\">5</attribute>\n"
- "\n"
- " <!-- Second-level caching -->\n"
- " <attribute name=\"SecondLevelCacheEnabled\">true</attribute>\n"
- " <attribute name=\"CacheProviderClass\">org.hibernate.cache.EhCacheProvider</attribute>\n"
- " <attribute name=\"QueryCacheEnabled\">true</attribute>\n"
- "\n"
- " <!-- Logging -->\n"
- " <attribute name=\"ShowSqlEnabled\">true</attribute>\n"
- "\n"
- " <!-- Mapping files -->\n"
- " <attribute name=\"MapResources\">auction/Item.hbm.xml,auction/Category.hbm.xml</attribute>\n"
- "\n"
- "</mbean>\n"
- "\n"
- "</server>]]>"
+"<![CDATA[<?xml version=\"1.0\"?>\n"
+"<server>\n"
+"\n"
+"<mbean code=\"org.hibernate.jmx.HibernateService\"\n"
+" name=\"jboss.jca:service=HibernateFactory,name=HibernateFactory\">\n"
+"\n"
+" <!-- Required services -->\n"
+" <depends>jboss.jca:service=RARDeployer</depends>\n"
+" <depends>jboss.jca:service=LocalTxCM,name=HsqlDS</depends>\n"
+"\n"
+" <!-- Bind the Hibernate service to JNDI -->\n"
+" <attribute name=\"JndiName\">java:/hibernate/SessionFactory</attribute>\n"
+"\n"
+" <!-- Datasource settings -->\n"
+" <attribute name=\"Datasource\">java:HsqlDS</attribute>\n"
+" <attribute name=\"Dialect\">org.hibernate.dialect.HSQLDialect</"
+"attribute>\n"
+"\n"
+" <!-- Transaction integration -->\n"
+" <attribute name=\"TransactionStrategy\">\n"
+" org.hibernate.transaction.JTATransactionFactory</attribute>\n"
+" <attribute name=\"TransactionManagerLookupStrategy\">\n"
+" org.hibernate.transaction.JBossTransactionManagerLookup</attribute>\n"
+" <attribute name=\"FlushBeforeCompletionEnabled\">true</attribute>\n"
+" <attribute name=\"AutoCloseSessionEnabled\">true</attribute>\n"
+"\n"
+" <!-- Fetching options -->\n"
+" <attribute name=\"MaximumFetchDepth\">5</attribute>\n"
+"\n"
+" <!-- Second-level caching -->\n"
+" <attribute name=\"SecondLevelCacheEnabled\">true</attribute>\n"
+" <attribute name=\"CacheProviderClass\">org.hibernate.cache."
+"EhCacheProvider</attribute>\n"
+" <attribute name=\"QueryCacheEnabled\">true</attribute>\n"
+"\n"
+" <!-- Logging -->\n"
+" <attribute name=\"ShowSqlEnabled\">true</attribute>\n"
+"\n"
+" <!-- Mapping files -->\n"
+" <attribute name=\"MapResources\">auction/Item.hbm.xml,auction/Category."
+"hbm.xml</attribute>\n"
+"\n"
+"</mbean>\n"
+"\n"
+"</server>]]>"
msgstr ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<server>\n"
- "\n"
- "<mbean code=\"org.hibernate.jmx.HibernateService\"\n"
- " name=\"jboss.jca:service=HibernateFactory,name=HibernateFactory\">\n"
- "\n"
- " <!-- Required services -->\n"
- " <depends>jboss.jca:service=RARDeployer</depends>\n"
- " <depends>jboss.jca:service=LocalTxCM,name=HsqlDS</depends>\n"
- "\n"
- " <!-- Bind the Hibernate service to JNDI -->\n"
- " <attribute name=\"JndiName\">java:/hibernate/SessionFactory</attribute>\n"
- "\n"
- " <!-- Datasource settings -->\n"
- " <attribute name=\"Datasource\">java:HsqlDS</attribute>\n"
- " <attribute name=\"Dialect\">org.hibernate.dialect.HSQLDialect</attribute>\n"
- "\n"
- " <!-- Transaction integration -->\n"
- " <attribute name=\"TransactionStrategy\">\n"
- " org.hibernate.transaction.JTATransactionFactory</attribute>\n"
- " <attribute name=\"TransactionManagerLookupStrategy\">\n"
- " org.hibernate.transaction.JBossTransactionManagerLookup</attribute>\n"
- " <attribute name=\"FlushBeforeCompletionEnabled\">true</attribute>\n"
- " <attribute name=\"AutoCloseSessionEnabled\">true</attribute>\n"
- "\n"
- " <!-- Fetching options -->\n"
- " <attribute name=\"MaximumFetchDepth\">5</attribute>\n"
- "\n"
- " <!-- Second-level caching -->\n"
- " <attribute name=\"SecondLevelCacheEnabled\">true</attribute>\n"
- " <attribute name=\"CacheProviderClass\">org.hibernate.cache.EhCacheProvider</attribute>\n"
- " <attribute name=\"QueryCacheEnabled\">true</attribute>\n"
- "\n"
- " <!-- Logging -->\n"
- " <attribute name=\"ShowSqlEnabled\">true</attribute>\n"
- "\n"
- " <!-- Mapping files -->\n"
- " <attribute name=\"MapResources\">auction/Item.hbm.xml,auction/Category.hbm.xml</attribute>\n"
- "\n"
- "</mbean>\n"
- "\n"
- "</server>]]>"
-#: index.docbook:1629
-msgid "This file is deployed in a directory called <literal>META-INF</literal> and packaged in a JAR file with the extension <literal>.sar</literal> (service archive). You also need to package Hibernate, its required third-party libraries, your compiled persistent classes, as well as your mapping files in the same archive. Your enterprise beans (usually session beans) may be kept in their own JAR file, but you may include this EJB JAR file in the main service archive to get a single (hot-)deployable unit. Consult the JBoss AS documentation for more information about JMX service and EJB deployment."
-msgstr "이 파일은 <literal>META-INF</literal>로 명명된 디렉토리 속에 배치되고 확장자 <literal>.sar</literal> (service archive)를 가진 한 개의 JAR 파일 속에 패키징된다. 당신은 또한 Hibernate, 그것의 필요한 제 3의 라이브러리들, 당신의 컴파일된 영속 클래스들 뿐만 아니라 당신의 매핑 파일들을 동일한 아카이브 속에 패키징할 필요가 있다. 당신의 엔터프라이즈 빈즈(대개 session beans)는 그것들 자신의 JAR 파일 속에 유지될 수 있지만, 당신은 한 개의 (hot-)배치 가능한 단위를 얻기 위해 메인 서비스 아카이브 속에 이 EJB JAR 파일을 포함시킬 수도 있다. JMX 서비스와 EJB 배치에 관한 추가 정보는 JBoss AS 문서를 참조하라."
+#. Tag: para
+#: configuration.xml:1629
+#, no-c-format
+msgid ""
+"This file is deployed in a directory called <literal>META-INF</literal> and "
+"packaged in a JAR file with the extension <literal>.sar</literal> (service "
+"archive). You also need to package Hibernate, its required third-party "
+"libraries, your compiled persistent classes, as well as your mapping files "
+"in the same archive. Your enterprise beans (usually session beans) may be "
+"kept in their own JAR file, but you may include this EJB JAR file in the "
+"main service archive to get a single (hot-)deployable unit. Consult the "
+"JBoss AS documentation for more information about JMX service and EJB "
+"deployment."
+msgstr ""
+"이 파일은 <literal>META-INF</literal>로 명명된 디렉토리 속에 배치되고 확장자 "
+"<literal>.sar</literal> (service archive)를 가진 한 개의 JAR 파일 속에 패키징"
+"된다. 당신은 또한 Hibernate, 그것의 필요한 제 3의 라이브러리들, 당신의 컴파일"
+"된 영속 클래스들 뿐만 아니라 당신의 매핑 파일들을 동일한 아카이브 속에 패키징"
+"할 필요가 있다. 당신의 엔터프라이즈 빈즈(대개 session beans)는 그것들 자신의 "
+"JAR 파일 속에 유지될 수 있지만, 당신은 한 개의 (hot-)배치 가능한 단위를 얻기 "
+"위해 메인 서비스 아카이브 속에 이 EJB JAR 파일을 포함시킬 수도 있다. JMX 서비"
+"스와 EJB 배치에 관한 추가 정보는 JBoss AS 문서를 참조하라."
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+#~ msgid "<placeholder-1/> (optional)"
+#~ msgstr "<placeholder-1/> (옵션)"
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+#~ msgid "InitialContextFactory"
+#~ msgstr "InitialContextFactory"
+#~ msgid "class of the JNDI <placeholder-1/>"
+#~ msgstr "JNDI <placeholder-1/>의 클래스"
+
+#~ msgid "eg."
+#~ msgstr "예."
+
+#~ msgid "full.classname.of.Dialect"
+#~ msgstr "full.classname.of.Dialect"
+
+#~ msgid "debug"
+#~ msgstr "debug"
+
+#~ msgid "SCHEMA_NAME"
+#~ msgstr "SCHEMA_NAME"
+
+#~ msgid "CATALOG_NAME"
+#~ msgstr "CATALOG_NAME"
+
+#~ msgid "SessionFactory"
+#~ msgstr "SessionFactory"
+
+#~ msgid "jndi/composite/name"
+#~ msgstr "jndi/composite/name"
+
+#~ msgid "0"
+#~ msgstr "0"
+
+#~ msgid "false"
+#~ msgstr "false"
+
+#~ msgid "Statement.setFetchSize()"
+#~ msgstr "Statement.setFetchSize()"
+
+#~ msgid "true"
+#~ msgstr "executeBatch()"
+
+#~ msgid "executeBatch()"
+#~ msgstr "true"
+
+#~ msgid "Batcher"
+#~ msgstr "Batcher"
+
+#~ msgid "classname.of.BatcherFactory"
+#~ msgstr "classname.of.BatcherFactory"
+
+#~ msgid "binary"
+#~ msgstr "binary"
+
+#~ msgid "serializable"
+#~ msgstr "serializable"
+
+#~ msgid "PreparedStatement.getGeneratedKeys()"
+#~ msgstr "PreparedStatement.getGeneratedKeys()"
+
+#~ msgid "true|false"
+#~ msgstr "true|false"
+
+#~ msgid "ConnectionProvider"
+#~ msgstr "ConnectionProvider"
+
+#~ msgid "classname.of.ConnectionProvider"
+#~ msgstr "classname.of.ConnectionProvider"
+
+#~ msgid "java.sql.Connection"
+#~ msgstr "java.sql.Connection"
+
+#~ msgid "1, 2, 4, 8"
+#~ msgstr "1, 2, 4, 8"
+
+#~ msgid "after_statement"
+#~ msgstr "after_statement"
+
+#~ msgid "after_transaction"
+#~ msgstr "after_transaction"
+
+#~ msgid "auto"
+#~ msgstr "auto"
+
+#~ msgid "hibernate.connection."
+#~ msgstr "<propertyName>"
+
+#, fuzzy
+#~ msgid "<propertyName>"
+#~ msgstr ""
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "hibernate.connection.<placeholder-1/>\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "propertyName\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "hibernate.jndi.<placeholder-1/>\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "propertyName"
+
+#~ msgid "DriverManager.getConnection()"
+#~ msgstr "DriverManager.getConnection()"
+
+#~ msgid "Pass the JDBC property <placeholder-1/> to <placeholder-2/>."
+#~ msgstr "JDBC 프로퍼티 <placeholder-1/>을 <placeholder-2/>에 전달한다."
+
+#~ msgid "hibernate.jndi."
+#~ msgstr "<propertyName>"
+
+#~ msgid "Pass the property <placeholder-1/> to the JNDI <placeholder-2/>."
+#~ msgstr "<placeholder-1/> 프로퍼티를 JNDI <placeholder-2/>에 전달한다."
+
+#~ msgid "CacheProvider"
+#~ msgstr "CacheProvider"
+
+#~ msgid "classname.of.CacheProvider"
+#~ msgstr "classname.of.CacheProvider"
+
+#~ msgid "<cache>"
+#~ msgstr "<cache>"
+
+#~ msgid "QueryCache"
+#~ msgstr "QueryCache"
+
+#~ msgid "StandardQueryCache"
+#~ msgstr "StandardQueryCache"
+
+#~ msgid "classname.of.QueryCache"
+#~ msgstr "classname.of.QueryCache"
+
+#~ msgid "prefix"
+#~ msgstr "prefix"
+
+#~ msgid "TransactionFactory"
+#~ msgstr "Transaction"
+
+#~ msgid "Transaction"
+#~ msgstr "TransactionFactory"
+
+#~ msgid "JDBCTransactionFactory"
+#~ msgstr "JDBCTransactionFactory"
+
+#~ msgid "classname.of.TransactionFactory"
+#~ msgstr "classname.of.TransactionFactory"
+
+#~ msgid "JTATransactionFactory"
+#~ msgstr "UserTransaction"
+
+#~ msgid "UserTransaction"
+#~ msgstr "JTATransactionFactory"
+
+#~ msgid "TransactionManagerLookup"
+#~ msgstr "TransactionManagerLookup"
+
+#~ msgid "classname.of.TransactionManagerLookup"
+#~ msgstr "classname.of.TransactionManagerLookup"
+
+#~ msgid "Session"
+#~ msgstr "Session"
+
+#~ msgid "hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC"
+#~ msgstr "hqlLiteral=SQL_LITERAL, hqlFunction=SQLFUNC"
+
+#~ msgid "create-drop"
+#~ msgstr "create-drop"
+
+#~ msgid "hibernate.cfg.xml"
+#~ msgstr "hibernate.cfg.xml"
+
+#~ msgid "DB2"
+#~ msgstr "DB2"
Modified: core/trunk/documentation/manual/translations/ko-KR/content/events.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/events.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/events.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,362 +1,473 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: events.xml:5
+#, no-c-format
msgid "Interceptors and events"
msgstr "인터셉터들과 이벤트들"
-#: index.docbook:7
-msgid "It is often useful for the application to react to certain events that occur inside Hibernate. This allows implementation of certain kinds of generic functionality, and extension of Hibernate functionality."
-msgstr "어플리케이션이 Hibernate 내부에서 발생하는 어떤 이벤트들에 대해 반응하는 것에 흔히 유용하다. 이것은 어떤 종류의 일반적인 기능, 그리고 Hibernate의 확장 기능의 구현을 허용해준다."
+#. Tag: para
+#: events.xml:7
+#, no-c-format
+msgid ""
+"It is often useful for the application to react to certain events that occur "
+"inside Hibernate. This allows implementation of certain kinds of generic "
+"functionality, and extension of Hibernate functionality."
+msgstr ""
+"어플리케이션이 Hibernate 내부에서 발생하는 어떤 이벤트들에 대해 반응하는 것"
+"에 흔히 유용하다. 이것은 어떤 종류의 일반적인 기능, 그리고 Hibernate의 확장 "
+"기능의 구현을 허용해준다."
-#: index.docbook:14
+#. Tag: title
+#: events.xml:14
+#, no-c-format
msgid "Interceptors"
msgstr "인터셉터들"
-#: index.docbook:16
-msgid "The <literal>Interceptor</literal> interface provides callbacks from the session to the application allowing the application to inspect and/or manipulate properties of a persistent object before it is saved, updated, deleted or loaded. One possible use for this is to track auditing information. For example, the following <literal>Interceptor</literal> automatically sets the <literal>createTimestamp</literal> when an <literal>Auditable</literal> is created and updates the <literal>lastUpdateTimestamp</literal> property when an <literal>Auditable</literal> is updated."
-msgstr "<literal>Interceptor</literal> 인터페이스는 영속 객체가 저장되고, 업데이트되고, 삭제되거나 로드되기 전에 영속 객체의 프로퍼티들을 조사하고/하거나 처리하는 것을 어플리케이션에 허용해줌으로써 세션으로부터 어플리케이션으로의 콜백들을 제공한다. 이것에 대한 한 가지 가능한 사용은 감사 정보를 추적하는 것이다. 예를 들어, 다음 <literal>Interceptor</literal>는 <literal>Auditable</literal>이 생성될 때 <literal>createTimestamp</literal>를 자동적으로 설정하고 <literal>Auditable</literal>이 업데이트될 때 <literal>lastUpdateTimestamp</literal> 프로퍼티를 업데이트 한다."
+#. Tag: para
+#: events.xml:16
+#, no-c-format
+msgid ""
+"The <literal>Interceptor</literal> interface provides callbacks from the "
+"session to the application allowing the application to inspect and/or "
+"manipulate properties of a persistent object before it is saved, updated, "
+"deleted or loaded. One possible use for this is to track auditing "
+"information. For example, the following <literal>Interceptor</literal> "
+"automatically sets the <literal>createTimestamp</literal> when an "
+"<literal>Auditable</literal> is created and updates the "
+"<literal>lastUpdateTimestamp</literal> property when an <literal>Auditable</"
+"literal> is updated."
+msgstr ""
+"<literal>Interceptor</literal> 인터페이스는 영속 객체가 저장되고, 업데이트되"
+"고, 삭제되거나 로드되기 전에 영속 객체의 프로퍼티들을 조사하고/하거나 처리하"
+"는 것을 어플리케이션에 허용해줌으로써 세션으로부터 어플리케이션으로의 콜백들"
+"을 제공한다. 이것에 대한 한 가지 가능한 사용은 감사 정보를 추적하는 것이다. "
+"예를 들어, 다음 <literal>Interceptor</literal>는 <literal>Auditable</literal>"
+"이 생성될 때 <literal>createTimestamp</literal>를 자동적으로 설정하고 "
+"<literal>Auditable</literal>이 업데이트될 때 <literal>lastUpdateTimestamp</"
+"literal> 프로퍼티를 업데이트 한다."
-#: index.docbook:27
-msgid "You may either implement <literal>Interceptor</literal> directly or (better) extend <literal>EmptyInterceptor</literal>."
-msgstr "당신은 <literal>Interceptor</literal>를 직접 구현해야 하거나 (더 좋게는) <literal>EmptyInterceptor</literal>를 확장(extend)해야 한다."
+#. Tag: para
+#: events.xml:27
+#, no-c-format
+msgid ""
+"You may either implement <literal>Interceptor</literal> directly or (better) "
+"extend <literal>EmptyInterceptor</literal>."
+msgstr ""
+"당신은 <literal>Interceptor</literal>를 직접 구현해야 하거나 (더 좋게는) "
+"<literal>EmptyInterceptor</literal>를 확장(extend)해야 한다."
-#: index.docbook:32
+#. Tag: programlisting
+#: events.xml:32
+#, no-c-format
msgid ""
- "<![CDATA[package org.hibernate.test;\n"
- "\n"
- "import java.io.Serializable;\n"
- "import java.util.Date;\n"
- "import java.util.Iterator;\n"
- "\n"
- "import org.hibernate.EmptyInterceptor;\n"
- "import org.hibernate.Transaction;\n"
- "import org.hibernate.type.Type;\n"
- "\n"
- "public class AuditInterceptor extends EmptyInterceptor {\n"
- "\n"
- " private int updates;\n"
- " private int creates;\n"
- " private int loads;\n"
- "\n"
- " public void onDelete(Object entity,\n"
- " Serializable id,\n"
- " Object[] state,\n"
- " String[] propertyNames,\n"
- " Type[] types) {\n"
- " // do nothing\n"
- " }\n"
- "\n"
- " public boolean onFlushDirty(Object entity,\n"
- " Serializable id,\n"
- " Object[] currentState,\n"
- " Object[] previousState,\n"
- " String[] propertyNames,\n"
- " Type[] types) {\n"
- "\n"
- " if ( entity instanceof Auditable ) {\n"
- " updates++;\n"
- " for ( int i=0; i < propertyNames.length; i++ ) {\n"
- " if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) {\n"
- " currentState[i] = new Date();\n"
- " return true;\n"
- " }\n"
- " }\n"
- " }\n"
- " return false;\n"
- " }\n"
- "\n"
- " public boolean onLoad(Object entity,\n"
- " Serializable id,\n"
- " Object[] state,\n"
- " String[] propertyNames,\n"
- " Type[] types) {\n"
- " if ( entity instanceof Auditable ) {\n"
- " loads++;\n"
- " }\n"
- " return false;\n"
- " }\n"
- "\n"
- " public boolean onSave(Object entity,\n"
- " Serializable id,\n"
- " Object[] state,\n"
- " String[] propertyNames,\n"
- " Type[] types) {\n"
- "\n"
- " if ( entity instanceof Auditable ) {\n"
- " creates++;\n"
- " for ( int i=0; i<propertyNames.length; i++ ) {\n"
- " if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
- " state[i] = new Date();\n"
- " return true;\n"
- " }\n"
- " }\n"
- " }\n"
- " return false;\n"
- " }\n"
- "\n"
- " public void afterTransactionCompletion(Transaction tx) {\n"
- " if ( tx.wasCommitted() ) {\n"
- " System.out.println(\"Creations: \" + creates + \", Updates: \" + updates, \"Loads: \" + loads);\n"
- " }\n"
- " updates=0;\n"
- " creates=0;\n"
- " loads=0;\n"
- " }\n"
- "\n"
- "}]]>"
+"<![CDATA[package org.hibernate.test;\n"
+"\n"
+"import java.io.Serializable;\n"
+"import java.util.Date;\n"
+"import java.util.Iterator;\n"
+"\n"
+"import org.hibernate.EmptyInterceptor;\n"
+"import org.hibernate.Transaction;\n"
+"import org.hibernate.type.Type;\n"
+"\n"
+"public class AuditInterceptor extends EmptyInterceptor {\n"
+"\n"
+" private int updates;\n"
+" private int creates;\n"
+" private int loads;\n"
+"\n"
+" public void onDelete(Object entity,\n"
+" Serializable id,\n"
+" Object[] state,\n"
+" String[] propertyNames,\n"
+" Type[] types) {\n"
+" // do nothing\n"
+" }\n"
+"\n"
+" public boolean onFlushDirty(Object entity,\n"
+" Serializable id,\n"
+" Object[] currentState,\n"
+" Object[] previousState,\n"
+" String[] propertyNames,\n"
+" Type[] types) {\n"
+"\n"
+" if ( entity instanceof Auditable ) {\n"
+" updates++;\n"
+" for ( int i=0; i < propertyNames.length; i++ ) {\n"
+" if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) {\n"
+" currentState[i] = new Date();\n"
+" return true;\n"
+" }\n"
+" }\n"
+" }\n"
+" return false;\n"
+" }\n"
+"\n"
+" public boolean onLoad(Object entity,\n"
+" Serializable id,\n"
+" Object[] state,\n"
+" String[] propertyNames,\n"
+" Type[] types) {\n"
+" if ( entity instanceof Auditable ) {\n"
+" loads++;\n"
+" }\n"
+" return false;\n"
+" }\n"
+"\n"
+" public boolean onSave(Object entity,\n"
+" Serializable id,\n"
+" Object[] state,\n"
+" String[] propertyNames,\n"
+" Type[] types) {\n"
+"\n"
+" if ( entity instanceof Auditable ) {\n"
+" creates++;\n"
+" for ( int i=0; i<propertyNames.length; i++ ) {\n"
+" if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
+" state[i] = new Date();\n"
+" return true;\n"
+" }\n"
+" }\n"
+" }\n"
+" return false;\n"
+" }\n"
+"\n"
+" public void afterTransactionCompletion(Transaction tx) {\n"
+" if ( tx.wasCommitted() ) {\n"
+" System.out.println(\"Creations: \" + creates + \", Updates: \" + "
+"updates, \"Loads: \" + loads);\n"
+" }\n"
+" updates=0;\n"
+" creates=0;\n"
+" loads=0;\n"
+" }\n"
+"\n"
+"}]]>"
msgstr ""
- "<![CDATA[package org.hibernate.test;\n"
- "\n"
- "import java.io.Serializable;\n"
- "import java.util.Date;\n"
- "import java.util.Iterator;\n"
- "\n"
- "import org.hibernate.EmptyInterceptor;\n"
- "import org.hibernate.Transaction;\n"
- "import org.hibernate.type.Type;\n"
- "\n"
- "public class AuditInterceptor extends EmptyInterceptor {\n"
- "\n"
- " private int updates;\n"
- " private int creates;\n"
- " private int loads;\n"
- "\n"
- " public void onDelete(Object entity,\n"
- " Serializable id,\n"
- " Object[] state,\n"
- " String[] propertyNames,\n"
- " Type[] types) {\n"
- " // do nothing\n"
- " }\n"
- "\n"
- " public boolean onFlushDirty(Object entity,\n"
- " Serializable id,\n"
- " Object[] currentState,\n"
- " Object[] previousState,\n"
- " String[] propertyNames,\n"
- " Type[] types) {\n"
- "\n"
- " if ( entity instanceof Auditable ) {\n"
- " updates++;\n"
- " for ( int i=0; i < propertyNames.length; i++ ) {\n"
- " if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) {\n"
- " currentState[i] = new Date();\n"
- " return true;\n"
- " }\n"
- " }\n"
- " }\n"
- " return false;\n"
- " }\n"
- "\n"
- " public boolean onLoad(Object entity,\n"
- " Serializable id,\n"
- " Object[] state,\n"
- " String[] propertyNames,\n"
- " Type[] types) {\n"
- " if ( entity instanceof Auditable ) {\n"
- " loads++;\n"
- " }\n"
- " return false;\n"
- " }\n"
- "\n"
- " public boolean onSave(Object entity,\n"
- " Serializable id,\n"
- " Object[] state,\n"
- " String[] propertyNames,\n"
- " Type[] types) {\n"
- "\n"
- " if ( entity instanceof Auditable ) {\n"
- " creates++;\n"
- " for ( int i=0; i<propertyNames.length; i++ ) {\n"
- " if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
- " state[i] = new Date();\n"
- " return true;\n"
- " }\n"
- " }\n"
- " }\n"
- " return false;\n"
- " }\n"
- "\n"
- " public void afterTransactionCompletion(Transaction tx) {\n"
- " if ( tx.wasCommitted() ) {\n"
- " System.out.println(\"Creations: \" + creates + \", Updates: \" + updates, \"Loads: \" + loads);\n"
- " }\n"
- " updates=0;\n"
- " creates=0;\n"
- " loads=0;\n"
- " }\n"
- "\n"
- "}]]>"
-#: index.docbook:34
-msgid "Interceptors come in two flavors: <literal>Session</literal>-scoped and <literal>SessionFactory</literal>-scoped."
-msgstr "인터셉터들은 다음 두 개의 특징들로 나타난다: <literal>Session</literal>-영역화 그리고 <literal>SessionFactory</literal>-영역화."
+#. Tag: para
+#: events.xml:34
+#, no-c-format
+msgid ""
+"Interceptors come in two flavors: <literal>Session</literal>-scoped and "
+"<literal>SessionFactory</literal>-scoped."
+msgstr ""
+"인터셉터들은 다음 두 개의 특징들로 나타난다: <literal>Session</literal>-영역"
+"화 그리고 <literal>SessionFactory</literal>-영역화."
-#: index.docbook:39
-msgid "A <literal>Session</literal>-scoped interceptor is specified when a session is opened using one of the overloaded SessionFactory.openSession() methods accepting an <literal>Interceptor</literal>."
-msgstr "<literal>Session</literal>-영역의 인터셉터는 세션이 하나의 <literal>Interceptor</literal>를 수용하는 오버로드된 SessionFactory.openSession() 메소드들 중 하나를 사용하여 열릴 때 지정된다."
+#. Tag: para
+#: events.xml:39
+#, no-c-format
+msgid ""
+"A <literal>Session</literal>-scoped interceptor is specified when a session "
+"is opened using one of the overloaded SessionFactory.openSession() methods "
+"accepting an <literal>Interceptor</literal>."
+msgstr ""
+"<literal>Session</literal>-영역의 인터셉터는 세션이 하나의 "
+"<literal>Interceptor</literal>를 수용하는 오버로드된 SessionFactory."
+"openSession() 메소드들 중 하나를 사용하여 열릴 때 지정된다."
-#: index.docbook:45
+#. Tag: programlisting
+#: events.xml:45
+#, no-c-format
msgid "<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"
-msgstr "<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"
+msgstr ""
-#: index.docbook:47
-msgid "A <literal>SessionFactory</literal>-scoped interceptor is registered with the <literal>Configuration</literal> object prior to building the <literal>SessionFactory</literal>. In this case, the supplied interceptor will be applied to all sessions opened from that <literal>SessionFactory</literal>; this is true unless a session is opened explicitly specifying the interceptor to use. <literal>SessionFactory</literal>-scoped interceptors must be thread safe, taking care to not store session-specific state since multiple sessions will use this interceptor (potentially) concurrently."
-msgstr "당신은 또한 <literal>Configuration</literal>을 사용하여 인터셉터를 전역 레벨 상에 설정할 수도 있다. 이 경우에, 인터셉터는 threadsafe이어야 한다."
+#. Tag: para
+#: events.xml:47
+#, no-c-format
+msgid ""
+"A <literal>SessionFactory</literal>-scoped interceptor is registered with "
+"the <literal>Configuration</literal> object prior to building the "
+"<literal>SessionFactory</literal>. In this case, the supplied interceptor "
+"will be applied to all sessions opened from that <literal>SessionFactory</"
+"literal>; this is true unless a session is opened explicitly specifying the "
+"interceptor to use. <literal>SessionFactory</literal>-scoped interceptors "
+"must be thread safe, taking care to not store session-specific state since "
+"multiple sessions will use this interceptor (potentially) concurrently."
+msgstr ""
+"<literal>SessionFactory</literal>-영역의 인터셉터는 <literal>SessionFactory</"
+"literal>을 빌드하기에 앞서 <literal>Configuration</literal> 객체에 등록된다. "
+"이 경우에, 공급되는 인터셉터는 그 <literal>SessionFactory</literal>로부터 열"
+"려진 모든 세션들에 적용될 것이다; 하나의 세션이 사용할 인터셉터를 명시적으로 "
+"지정하여 열리지 않는 한 이것은 참이다. <literal>SessionFactory</literal>-영역"
+"의 인터셉터들은 세션-지정적인 상태를 저장하지 않도록 주의하여 쓰레드-안전해"
+"야 한다. 왜냐하면 다중 세션들은 (잠정적으로) 이 인터셉터를 동시적으로 사용할 "
+"것이기 때문이다."
-#: index.docbook:56
-msgid "<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
-msgstr "<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"
+#. Tag: programlisting
+#: events.xml:56
+#, no-c-format
+msgid ""
+"<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
+msgstr ""
-#: index.docbook:61
+#. Tag: title
+#: events.xml:61
+#, no-c-format
msgid "Event system"
-msgstr "<literal>SessionFactory</literal>-영역의 인터셉터는 <literal>SessionFactory</literal>을 빌드하기에 앞서 <literal>Configuration</literal> 객체에 등록된다. 이 경우에, 공급되는 인터셉터는 그 <literal>SessionFactory</literal>로부터 열려진 모든 세션들에 적용될 것이다; 하나의 세션이 사용할 인터셉터를 명시적으로 지정하여 열리지 않는 한 이것은 참이다. <literal>SessionFactory</literal>-영역의 인터셉터들은 세션-지정적인 상태를 저장하지 않도록 주의하여 쓰레드-안전해야 한다. 왜냐하면 다중 세션들은 (잠정적으로) 이 인터셉터를 동시적으로 사용할 것이기 때문이다."
+msgstr "이벤트 시스템"
-#: index.docbook:63
-msgid "If you have to react to particular events in your persistence layer, you may also use the Hibernate3 <emphasis>event</emphasis> architecture. The event system can be used in addition or as a replacement for interceptors."
-msgstr "<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
+#. Tag: para
+#: events.xml:63
+#, no-c-format
+msgid ""
+"If you have to react to particular events in your persistence layer, you may "
+"also use the Hibernate3 <emphasis>event</emphasis> architecture. The event "
+"system can be used in addition or as a replacement for interceptors."
+msgstr ""
+"만일 당신이 당신의 영속 계층에서 특정 이벤트들에 대해 반응해야 한다면, 당신"
+"은 또한 Hibernate3 <emphasis>event</emphasis> 아키텍처를 사용할 수도 있다. 이"
+"벤트 시스템은 부가물로 사용될 수 있거나 인터셉터들에 대한 대체물로 사용될 수 "
+"있다."
-#: index.docbook:69
-msgid "Essentially all of the methods of the <literal>Session</literal> interface correlate to an event. You have a <literal>LoadEvent</literal>, a <literal>FlushEvent</literal>, etc (consult the XML configuration-file DTD or the <literal>org.hibernate.event</literal> package for the full list of defined event types). When a request is made of one of these methods, the Hibernate <literal>Session</literal> generates an appropriate event and passes it to the configured event listeners for that type. Out-of-the-box, these listeners implement the same processing in which those methods always resulted. However, you are free to implement a customization of one of the listener interfaces (i.e., the <literal>LoadEvent</literal> is processed by the registered implemenation of the <literal>LoadEventListener</literal> interface), in which case their implementation would be responsible for processing any <literal>load()</literal> requests made of the <literal>Session</literal>."
-msgstr "이벤트 시스템"
+#. Tag: para
+#: events.xml:69
+#, no-c-format
+msgid ""
+"Essentially all of the methods of the <literal>Session</literal> interface "
+"correlate to an event. You have a <literal>LoadEvent</literal>, a "
+"<literal>FlushEvent</literal>, etc (consult the XML configuration-file DTD "
+"or the <literal>org.hibernate.event</literal> package for the full list of "
+"defined event types). When a request is made of one of these methods, the "
+"Hibernate <literal>Session</literal> generates an appropriate event and "
+"passes it to the configured event listeners for that type. Out-of-the-box, "
+"these listeners implement the same processing in which those methods always "
+"resulted. However, you are free to implement a customization of one of the "
+"listener interfaces (i.e., the <literal>LoadEvent</literal> is processed by "
+"the registered implemenation of the <literal>LoadEventListener</literal> "
+"interface), in which case their implementation would be responsible for "
+"processing any <literal>load()</literal> requests made of the "
+"<literal>Session</literal>."
+msgstr ""
+"본질적으로 <literal>Session</literal> 인터페이스의 모든 메소드들은 이벤트와 "
+"서로 관련되어 있다. 당신은 <literal>LoadEvent</literal>, "
+"<literal>FlushEvent</literal>, 등을 갖는다 (정의된 이벤트 타입들의 전체 리스"
+"트에 대해서는 XML 구성 파일 DTD 또는 <literal>org.hibernate.event</literal> "
+"패키지를 참조하라). 하나의 요청이 이들 메소드들 중 하나에 의해 만들어질 때, "
+"Hibernate <literal>Session</literal>은 적절한 이벤트를 생성시키고 그것을 그 "
+"타입의 구성된 이벤트 리스너에게 전달한다. 박싱없이, 이들 리스너들은 그들 메소"
+"드들이 항상 귀결되었던 동일한 프로세싱을 구현한다. 하지만 당신이 리스너 인터"
+"페이스들 중 하나의 맞춤을 구현하는 것이 자유롭고(예를 들어 "
+"<literal>LoadEvent</literal>는 <literal>LoadEventListener</literal> 인터페이"
+"스의 등록된 구현에 의해 처리된다), 그 경우에 그들 구현은 <literal>Session</"
+"literal>에 대해 행해진 임의의 <literal>load()</literal> 요청들을 처리할 책임"
+"이 있을 것이다."
-#: index.docbook:84
-msgid "The listeners should be considered effectively singletons; meaning, they are shared between requests, and thus should not save any state as instance variables."
-msgstr "만일 당신이 당신의 영속 계층에서 특정 이벤트들에 대해 반응해야 한다면, 당신은 또한 Hibernate3 <emphasis>event</emphasis> 아키텍처를 사용할 수도 있다. 이벤트 시스템은 부가물로 사용될 수 있거나 인터셉터들에 대한 대체물로 사용될 수 있다."
+#. Tag: para
+#: events.xml:84
+#, no-c-format
+msgid ""
+"The listeners should be considered effectively singletons; meaning, they are "
+"shared between requests, and thus should not save any state as instance "
+"variables."
+msgstr ""
+"리스너들은 효율적이게끔 싱글톤(singleton)들로 간주되어야 할 것이다; 이것은 그"
+"것들이 요청들 사이에서 공유되고, 따라서 임의의 상태를 인스턴스 변수들로서 저"
+"장하지 말아야 함을 의미한다."
-#: index.docbook:89
-msgid "A custom listener should implement the appropriate interface for the event it wants to process and/or extend one of the convenience base classes (or even the default event listeners used by Hibernate out-of-the-box as these are declared non-final for this purpose). Custom listeners can either be registered programmatically through the <literal>Configuration</literal> object, or specified in the Hibernate configuration XML (declarative configuration through the properties file is not supported). Here's an example of a custom load event listener:"
-msgstr "본질적으로 <literal>Session</literal> 인터페이스의 모든 메소드들은 이벤트와 서로 관련되어 있다. 당신은 <literal>LoadEvent</literal>, <literal>FlushEvent</literal>, 등을 갖는다 (정의된 이벤트 타입들의 전체 리스트에 대해서는 XML 구성 파일 DTD 또는 <literal>org.hibernate.event</literal> 패키지를 참조하라). 하나의 요청이 이들 메소드들 중 하나에 의해 만들어질 때, Hibernate <literal>Session</literal>은 적절한 이벤트를 생성시키고 그것을 그 타입의 구성된 이벤트 리스너에게 전달한다. 박싱없이, 이들 리스너들은 그들 메소드들이 항상 귀결되었던 동일한 프로세싱을 구현한다. 하지만 당신이 리스너 인터페이스들 중 하나의 맞춤을 구현하는 것이 자유롭고(예를 들어 <literal>LoadEvent</literal>는 <literal>LoadEventListener</literal> 인터페이스의 등록된 구현에 의해 처리된다)!
, 그 경우에 그들 구현은 <literal>Session</literal>에 대해 행해진 임의의 <literal>load()</literal> 요청들을 처리할 책임이 있을 것이다."
+#. Tag: para
+#: events.xml:89
+#, no-c-format
+msgid ""
+"A custom listener should implement the appropriate interface for the event "
+"it wants to process and/or extend one of the convenience base classes (or "
+"even the default event listeners used by Hibernate out-of-the-box as these "
+"are declared non-final for this purpose). Custom listeners can either be "
+"registered programmatically through the <literal>Configuration</literal> "
+"object, or specified in the Hibernate configuration XML (declarative "
+"configuration through the properties file is not supported). Here's an "
+"example of a custom load event listener:"
+msgstr ""
+"맞춤형 리스너는 그것이 편의적인 기저 클래스들(또는 리스너들이 이 용도로 final"
+"이 아닌 것으로 선언되므로 Hibernate out-of-the-box에 의해 사용된 디폴트 이벤"
+"트 리스너들) 중 하나를 처리하고/하거나 확장하고자 원하는 이벤트들에 대해 적절"
+"한 인터페이스를 구현해야 한다. 맞춤형 리스너들은 <literal>Configuration</"
+"literal> 객체를 통해 프로그램 상으로 등록될 수 있거나, Hibernate 구성 XML 속"
+"에 지정될 수 있다 (properties 파일을 통한 선언적인 구성은 지원되지 않는다). "
+"다음은 맞춤형 load 이벤트 리스너에 대한 예제이다:"
-#: index.docbook:99
+#. Tag: programlisting
+#: events.xml:99
+#, no-c-format
msgid ""
- "<![CDATA[public class MyLoadListener implements LoadEventListener {\n"
- " // this is the single method defined by the LoadEventListener interface\n"
- " public void onLoad(LoadEvent event, LoadEventListener.LoadType loadType)\n"
- " throws HibernateException {\n"
- " if ( !MySecurity.isAuthorized( event.getEntityClassName(), event.getEntityId() ) ) {\n"
- " throw MySecurityException(\"Unauthorized access\");\n"
- " }\n"
- " }\n"
- "}]]>"
-msgstr "리스너들은 효율적이게끔 싱글톤(singleton)들로 간주되어야 할 것이다; 이것은 그것들이 요청들 사이에서 공유되고, 따라서 임의의 상태를 인스턴스 변수들로서 저장하지 말아야 함을 의미한다."
+"<![CDATA[public class MyLoadListener implements LoadEventListener {\n"
+" // this is the single method defined by the LoadEventListener interface\n"
+" public void onLoad(LoadEvent event, LoadEventListener.LoadType "
+"loadType)\n"
+" throws HibernateException {\n"
+" if ( !MySecurity.isAuthorized( event.getEntityClassName(), event."
+"getEntityId() ) ) {\n"
+" throw MySecurityException(\"Unauthorized access\");\n"
+" }\n"
+" }\n"
+"}]]>"
+msgstr ""
-#: index.docbook:101
-msgid "You also need a configuration entry telling Hibernate to use the listener in addition to the default listener:"
-msgstr "맞춤형 리스너는 그것이 편의적인 기저 클래스들(또는 리스너들이 이 용도로 final이 아닌 것으로 선언되므로 Hibernate out-of-the-box에 의해 사용된 디폴트 이벤트 리스너들) 중 하나를 처리하고/하거나 확장하고자 원하는 이벤트들에 대해 적절한 인터페이스를 구현해야 한다. 맞춤형 리스너들은 <literal>Configuration</literal> 객체를 통해 프로그램 상으로 등록될 수 있거나, Hibernate 구성 XML 속에 지정될 수 있다 (properties 파일을 통한 선언적인 구성은 지원되지 않는다). 다음은 맞춤형 load 이벤트 리스너에 대한 예제이다:"
+#. Tag: para
+#: events.xml:101
+#, no-c-format
+msgid ""
+"You also need a configuration entry telling Hibernate to use the listener in "
+"addition to the default listener:"
+msgstr ""
+"당신은 또한 디폴트 리스너에 덧붙여 그 리스너를 사용하도록 Hibernate에게 알려"
+"주는 구성 엔트리를 필요로 한다:"
-#: index.docbook:106
+#. Tag: programlisting
+#: events.xml:106
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-configuration>\n"
- " <session-factory>\n"
- " ...\n"
- " <event type=\"load\">\n"
- " <listener class=\"com.eg.MyLoadListener\"/>\n"
- " <listener class=\"org.hibernate.event.def.DefaultLoadEventListener\"/>\n"
- " </event>\n"
- " </session-factory>\n"
- "</hibernate-configuration>]]>"
+"<![CDATA[<hibernate-configuration>\n"
+" <session-factory>\n"
+" ...\n"
+" <event type=\"load\">\n"
+" <listener class=\"com.eg.MyLoadListener\"/>\n"
+" <listener class=\"org.hibernate.event.def."
+"DefaultLoadEventListener\"/>\n"
+" </event>\n"
+" </session-factory>\n"
+"</hibernate-configuration>]]>"
msgstr ""
- "<![CDATA[public class MyLoadListener implements LoadEventListener {\n"
- " // this is the single method defined by the LoadEventListener interface\n"
- " public void onLoad(LoadEvent event, LoadEventListener.LoadType loadType)\n"
- " throws HibernateException {\n"
- " if ( !MySecurity.isAuthorized( event.getEntityClassName(), event.getEntityId() ) ) {\n"
- " throw MySecurityException(\"Unauthorized access\");\n"
- " }\n"
- " }\n"
- "}]]>"
-#: index.docbook:108
+#. Tag: para
+#: events.xml:108
+#, no-c-format
msgid "Instead, you may register it programmatically:"
-msgstr "당신은 또한 디폴트 리스너에 덧붙여 그 리스너를 사용하도록 Hibernate에게 알려주는 구성 엔트리를 필요로 한다:"
+msgstr "대신에 당신은 그것을 프로그래밍 방식으로 등록할 수도 있다:"
-#: index.docbook:112
+#. Tag: programlisting
+#: events.xml:112
+#, no-c-format
msgid ""
- "<![CDATA[Configuration cfg = new Configuration();\n"
- "LoadEventListener[] stack = { new MyLoadListener(), new DefaultLoadEventListener() };\n"
- "cfg.EventListeners().setLoadEventListeners(stack);]]>"
+"<![CDATA[Configuration cfg = new Configuration();\n"
+"LoadEventListener[] stack = { new MyLoadListener(), new "
+"DefaultLoadEventListener() };\n"
+"cfg.EventListeners().setLoadEventListeners(stack);]]>"
msgstr ""
- "<![CDATA[<hibernate-configuration>\n"
- " <session-factory>\n"
- " ...\n"
- " <event type=\"load\">\n"
- " <listener class=\"com.eg.MyLoadListener\"/>\n"
- " <listener class=\"org.hibernate.event.def.DefaultLoadEventListener\"/>\n"
- " </event>\n"
- " </session-factory>\n"
- "</hibernate-configuration>]]>"
-#: index.docbook:114
-msgid "Listeners registered declaratively cannot share instances. If the same class name is used in multiple <literal><listener/></literal> elements, each reference will result in a separate instance of that class. If you need the capability to share listener instances between listener types you must use the programmatic registration approach."
-msgstr "대신에 당신은 그것을 프로그래밍 방식으로 등록할 수도 있다:"
+#. Tag: para
+#: events.xml:114
+#, no-c-format
+msgid ""
+"Listeners registered declaratively cannot share instances. If the same class "
+"name is used in multiple <literal><listener/></literal> elements, each "
+"reference will result in a separate instance of that class. If you need the "
+"capability to share listener instances between listener types you must use "
+"the programmatic registration approach."
+msgstr ""
+"선언적으로 등록된 리스너들은 인스턴스들을 공유할 수 없다. 만일 동일한 클래스 "
+"이름이 여러 개의 <literal><listener/></literal> 요소들에서 사용될 경"
+"우, 각각의 참조는 그 클래스에 대한 별도의 인스턴스로 귀결될 것이다. 만일 당신"
+"이 리스너 타입들 사이에서 리스너 인스턴스들을 공유할 가용성을 필요로 할 경우 "
+"당신은 프로그래밍 방식의 등록 접근법을 사용해야 한다."
-#: index.docbook:122
-msgid "Why implement an interface and define the specific type during configuration? Well, a listener implementation could implement multiple event listener interfaces. Having the type additionally defined during registration makes it easier to turn custom listeners on or off during configuration."
+#. Tag: para
+#: events.xml:122
+#, no-c-format
+msgid ""
+"Why implement an interface and define the specific type during "
+"configuration? Well, a listener implementation could implement multiple "
+"event listener interfaces. Having the type additionally defined during "
+"registration makes it easier to turn custom listeners on or off during "
+"configuration."
msgstr ""
- "<![CDATA[Configuration cfg = new Configuration();\n"
- "LoadEventListener[] stack = { new MyLoadListener(), new DefaultLoadEventListener() };\n"
- "cfg.EventListeners().setLoadEventListeners(stack);]]>"
+"구성 동안에 왜 인터페이스를 구현하고 특정 타입을 지정하는가? 물론 리스너 구현"
+"은 여러 개의 이벤트 리스너 인터페이스들을 구현할 수 있다. 등록 동안에 추가적"
+"으로 타입을 정의하는 것은 컨피그레이션 동안에 맞춤형 리스너들의 사용 여부를 "
+"전환시키는 것을 더 쉽게 해준다."
-#: index.docbook:132
+#. Tag: title
+#: events.xml:132
+#, no-c-format
msgid "Hibernate declarative security"
-msgstr "선언적으로 등록된 리스너들은 인스턴스들을 공유할 수 없다. 만일 동일한 클래스 이름이 여러 개의 <literal><listener/></literal> 요소들에서 사용될 경우, 각각의 참조는 그 클래스에 대한 별도의 인스턴스로 귀결될 것이다. 만일 당신이 리스너 타입들 사이에서 리스너 인스턴스들을 공유할 가용성을 필요로 할 경우 당신은 프로그래밍 방식의 등록 접근법을 사용해야 한다."
+msgstr "Hibernate 선언적인 보안"
-#: index.docbook:133
-msgid "Usually, declarative security in Hibernate applications is managed in a session facade layer. Now, Hibernate3 allows certain actions to be permissioned via JACC, and authorized via JAAS. This is optional functionality built on top of the event architecture."
-msgstr "구성 동안에 왜 인터페이스를 구현하고 특정 타입을 지정하는가? 물론 리스너 구현은 여러 개의 이벤트 리스너 인터페이스들을 구현할 수 있다. 등록 동안에 추가적으로 타입을 정의하는 것은 컨피그레이션 동안에 맞춤형 리스너들의 사용 여부를 전환시키는 것을 더 쉽게 해준다."
+#. Tag: para
+#: events.xml:133
+#, no-c-format
+msgid ""
+"Usually, declarative security in Hibernate applications is managed in a "
+"session facade layer. Now, Hibernate3 allows certain actions to be "
+"permissioned via JACC, and authorized via JAAS. This is optional "
+"functionality built on top of the event architecture."
+msgstr ""
+"대개 Hibernate 어플리케이션들에서 선언적인 보안은 session facade 계층 내에서 "
+"관리된다. 이제, Hibernate3는 어떤 액션들이 JACC를 통해 퍼미션을 주어지고, "
+"JAAS를 통해 인가되는 것을 허용해준다. 이것은 모든 아키텍처의 상단에 빌드된 옵"
+"션 기능이다."
-#: index.docbook:139
-msgid "First, you must configure the appropriate event listeners, to enable the use of JAAS authorization."
-msgstr "Hibernate 선언적인 보안"
+#. Tag: para
+#: events.xml:139
+#, no-c-format
+msgid ""
+"First, you must configure the appropriate event listeners, to enable the use "
+"of JAAS authorization."
+msgstr ""
+"먼저, 당신은 JAAS authorization 사용을 이용 가능하도록 하기 위해 적절한 이벤"
+"트 리스터들을 구성해야 한다."
-#: index.docbook:144
+#. Tag: programlisting
+#: events.xml:144
+#, no-c-format
msgid ""
- "<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure.JACCPreDeleteEventListener\"/>\n"
- "<listener type=\"pre-update\" class=\"org.hibernate.secure.JACCPreUpdateEventListener\"/>\n"
- "<listener type=\"pre-insert\" class=\"org.hibernate.secure.JACCPreInsertEventListener\"/>\n"
- "<listener type=\"pre-load\" class=\"org.hibernate.secure.JACCPreLoadEventListener\"/>]]>"
-msgstr "대개 Hibernate 어플리케이션들에서 선언적인 보안은 session facade 계층 내에서 관리된다. 이제, Hibernate3는 어떤 액션들이 JACC를 통해 퍼미션을 주어지고, JAAS를 통해 인가되는 것을 허용해준다. 이것은 모든 아키텍처의 상단에 빌드된 옵션 기능이다."
+"<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure."
+"JACCPreDeleteEventListener\"/>\n"
+"<listener type=\"pre-update\" class=\"org.hibernate.secure."
+"JACCPreUpdateEventListener\"/>\n"
+"<listener type=\"pre-insert\" class=\"org.hibernate.secure."
+"JACCPreInsertEventListener\"/>\n"
+"<listener type=\"pre-load\" class=\"org.hibernate.secure."
+"JACCPreLoadEventListener\"/>]]>"
+msgstr ""
-#: index.docbook:146
-msgid "Note that <literal><listener type=\"...\" class=\"...\"/></literal> is just a shorthand for <literal><event type=\"...\"><listener class=\"...\"/></event></literal> when there is exactly one listener for a particular event type."
-msgstr "먼저, 당신은 JAAS authorization 사용을 이용 가능하도록 하기 위해 적절한 이벤트 리스터들을 구성해야 한다."
+#. Tag: para
+#: events.xml:146
+#, no-c-format
+msgid ""
+"Note that <literal><listener type=\"...\" class=\"...\"/></literal> is "
+"just a shorthand for <literal><event type=\"...\"><listener class="
+"\"...\"/></event></literal> when there is exactly one listener for "
+"a particular event type."
+msgstr ""
+"<literal><listener type=\"...\" class=\"...\"/></literal>는 특정 이벤"
+"트 타입에 대해 정확히 한 개의 리스너가 존재할 때 단지 <literal><event "
+"type=\"...\"><listener class=\"...\"/></event></literal>의 단"
+"축형임을 노트하라."
-#: index.docbook:152
-msgid "Next, still in <literal>hibernate.cfg.xml</literal>, bind the permissions to roles:"
+#. Tag: para
+#: events.xml:152
+#, no-c-format
+msgid ""
+"Next, still in <literal>hibernate.cfg.xml</literal>, bind the permissions to "
+"roles:"
msgstr ""
- "<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure.JACCPreDeleteEventListener\"/>\n"
- "<listener type=\"pre-update\" class=\"org.hibernate.secure.JACCPreUpdateEventListener\"/>\n"
- "<listener type=\"pre-insert\" class=\"org.hibernate.secure.JACCPreInsertEventListener\"/>\n"
- "<listener type=\"pre-load\" class=\"org.hibernate.secure.JACCPreLoadEventListener\"/>]]>"
+"다음으로, 여전히 <literal>hibernate.cfg.xml</literal> 내에서 퍼미션들을 role"
+"들에 바인드 시킨다 :"
-#: index.docbook:156
+#. Tag: programlisting
+#: events.xml:156
+#, no-c-format
msgid ""
- "<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,update,read\"/>\n"
- "<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"
-msgstr "<literal><listener type=\"...\" class=\"...\"/></literal>는 특정 이벤트 타입에 대해 정확히 한 개의 리스너가 존재할 때 단지 <literal><event type=\"...\"><listener class=\"...\"/></event></literal>의 단축형임을 노트하라."
+"<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,update,"
+"read\"/>\n"
+"<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"
+msgstr ""
-#: index.docbook:158
+#. Tag: para
+#: events.xml:158
+#, no-c-format
msgid "The role names are the roles understood by your JACC provider."
-msgstr "다음으로, 여전히 <literal>hibernate.cfg.xml</literal> 내에서 퍼미션들을 role들에 바인드 시킨다 :"
-
-#: index.docbook:146
-msgid "appended paragraph 1"
msgstr ""
- "<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,update,read\"/>\n"
- "<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"
-
-#: index.docbook:148
-msgid "appended paragraph 2"
-msgstr "역할(role) 이름들은 당신의 JACC 프로바이더에 의해 인지된 역할(role)들이다."
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+"역할(role) 이름들은 당신의 JACC 프로바이더에 의해 인지된 역할(role)들이다."
Modified: core/trunk/documentation/manual/translations/ko-KR/content/example_mappings.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/example_mappings.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/example_mappings.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,1162 +1,795 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:20
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: example_mappings.xml:20
+#, no-c-format
msgid "Example: Various Mappings"
msgstr "예제: 여러 가지 매핑들"
-#: index.docbook:22
+#. Tag: para
+#: example_mappings.xml:22
+#, no-c-format
msgid "This chapters shows off some more complex association mappings."
msgstr "이 장은 몇몇 보다 복잡한 연관 매핑들을 보여준다."
-#: index.docbook:27
+#. Tag: title
+#: example_mappings.xml:27
+#, no-c-format
msgid "Employer/Employee"
msgstr "Employer/Employee"
-#: index.docbook:29
-msgid "The following model of the relationship between <literal>Employer</literal> and <literal>Employee</literal> uses an actual entity class (<literal>Employment</literal>) to represent the association. This is done because there might be more than one period of employment for the same two parties. Components are used to model monetary values and employee names."
-msgstr "<literal>Employer</literal>와 <literal>Employee</literal> 사이의 관계에 대한 다음 모형은 그 연관를 표현하는 데 실제 엔티티 클래스(<literal>Employment</literal>)를 사용한다. 동일한 두 부분들에 대해 하나 이상의 채용 주기가 존재할 수 있기 때문에 이것이 행해진다. 컴포넌트들이 화폐 값들과 종업원 이름들을 모형화 시키는데 사용된다."
+#. Tag: para
+#: example_mappings.xml:29
+#, no-c-format
+msgid ""
+"The following model of the relationship between <literal>Employer</literal> "
+"and <literal>Employee</literal> uses an actual entity class "
+"(<literal>Employment</literal>) to represent the association. This is done "
+"because there might be more than one period of employment for the same two "
+"parties. Components are used to model monetary values and employee names."
+msgstr ""
+"<literal>Employer</literal>와 <literal>Employee</literal> 사이의 관계에 대한 "
+"다음 모형은 그 연관를 표현하는 데 실제 엔티티 클래스(<literal>Employment</"
+"literal>)를 사용한다. 동일한 두 부분들에 대해 하나 이상의 채용 주기가 존재할 "
+"수 있기 때문에 이것이 행해진다. 컴포넌트들이 화폐 값들과 종업원 이름들을 모형"
+"화 시키는데 사용된다."
-#: index.docbook:46
+#. Tag: para
+#: example_mappings.xml:46
+#, no-c-format
msgid "Heres a possible mapping document:"
msgstr "다음은 가능한 매핑 문서이다:"
-#: index.docbook:50
+#. Tag: programlisting
+#: example_mappings.xml:50
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- " \n"
- " <class name=\"Employer\" table=\"employers\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\">\n"
- " <param name=\"sequence\">employer_id_seq</param>\n"
- " </generator>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- " <class name=\"Employment\" table=\"employment_periods\">\n"
- "\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\">\n"
- " <param name=\"sequence\">employment_id_seq</param>\n"
- " </generator>\n"
- " </id>\n"
- " <property name=\"startDate\" column=\"start_date\"/>\n"
- " <property name=\"endDate\" column=\"end_date\"/>\n"
- "\n"
- " <component name=\"hourlyRate\" class=\"MonetaryAmount\">\n"
- " <property name=\"amount\">\n"
- " <column name=\"hourly_rate\" sql-type=\"NUMERIC(12, 2)\"/>\n"
- " </property>\n"
- " <property name=\"currency\" length=\"12\"/>\n"
- " </component>\n"
- "\n"
- " <many-to-one name=\"employer\" column=\"employer_id\" not-null=\"true\"/>\n"
- " <many-to-one name=\"employee\" column=\"employee_id\" not-null=\"true\"/>\n"
- "\n"
- " </class>\n"
- "\n"
- " <class name=\"Employee\" table=\"employees\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\">\n"
- " <param name=\"sequence\">employee_id_seq</param>\n"
- " </generator>\n"
- " </id>\n"
- " <property name=\"taxfileNumber\"/>\n"
- " <component name=\"name\" class=\"Name\">\n"
- " <property name=\"firstName\"/>\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"lastName\"/>\n"
- " </component>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+" \n"
+" <class name=\"Employer\" table=\"employers\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\">\n"
+" <param name=\"sequence\">employer_id_seq</param>\n"
+" </generator>\n"
+" </id>\n"
+" <property name=\"name\"/>\n"
+" </class>\n"
+"\n"
+" <class name=\"Employment\" table=\"employment_periods\">\n"
+"\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\">\n"
+" <param name=\"sequence\">employment_id_seq</param>\n"
+" </generator>\n"
+" </id>\n"
+" <property name=\"startDate\" column=\"start_date\"/>\n"
+" <property name=\"endDate\" column=\"end_date\"/>\n"
+"\n"
+" <component name=\"hourlyRate\" class=\"MonetaryAmount\">\n"
+" <property name=\"amount\">\n"
+" <column name=\"hourly_rate\" sql-type=\"NUMERIC(12, 2)\"/>\n"
+" </property>\n"
+" <property name=\"currency\" length=\"12\"/>\n"
+" </component>\n"
+"\n"
+" <many-to-one name=\"employer\" column=\"employer_id\" not-null=\"true"
+"\"/>\n"
+" <many-to-one name=\"employee\" column=\"employee_id\" not-null=\"true"
+"\"/>\n"
+"\n"
+" </class>\n"
+"\n"
+" <class name=\"Employee\" table=\"employees\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"sequence\">\n"
+" <param name=\"sequence\">employee_id_seq</param>\n"
+" </generator>\n"
+" </id>\n"
+" <property name=\"taxfileNumber\"/>\n"
+" <component name=\"name\" class=\"Name\">\n"
+" <property name=\"firstName\"/>\n"
+" <property name=\"initial\"/>\n"
+" <property name=\"lastName\"/>\n"
+" </component>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- " \n"
- " <class name=\"Employer\" table=\"employers\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\">\n"
- " <param name=\"sequence\">employer_id_seq</param>\n"
- " </generator>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- " <class name=\"Employment\" table=\"employment_periods\">\n"
- "\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\">\n"
- " <param name=\"sequence\">employment_id_seq</param>\n"
- " </generator>\n"
- " </id>\n"
- " <property name=\"startDate\" column=\"start_date\"/>\n"
- " <property name=\"endDate\" column=\"end_date\"/>\n"
- "\n"
- " <component name=\"hourlyRate\" class=\"MonetaryAmount\">\n"
- " <property name=\"amount\">\n"
- " <column name=\"hourly_rate\" sql-type=\"NUMERIC(12, 2)\"/>\n"
- " </property>\n"
- " <property name=\"currency\" length=\"12\"/>\n"
- " </component>\n"
- "\n"
- " <many-to-one name=\"employer\" column=\"employer_id\" not-null=\"true\"/>\n"
- " <many-to-one name=\"employee\" column=\"employee_id\" not-null=\"true\"/>\n"
- "\n"
- " </class>\n"
- "\n"
- " <class name=\"Employee\" table=\"employees\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"sequence\">\n"
- " <param name=\"sequence\">employee_id_seq</param>\n"
- " </generator>\n"
- " </id>\n"
- " <property name=\"taxfileNumber\"/>\n"
- " <component name=\"name\" class=\"Name\">\n"
- " <property name=\"firstName\"/>\n"
- " <property name=\"initial\"/>\n"
- " <property name=\"lastName\"/>\n"
- " </component>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:52
-msgid "And heres the table schema generated by <literal>SchemaExport</literal>."
-msgstr "그리고 다음은 <literal>SchemaExport</literal>에 의해 생성된 테이블 스키마이다."
+#. Tag: para
+#: example_mappings.xml:52
+#, no-c-format
+msgid ""
+"And heres the table schema generated by <literal>SchemaExport</literal>."
+msgstr ""
+"그리고 다음은 <literal>SchemaExport</literal>에 의해 생성된 테이블 스키마이"
+"다."
-#: index.docbook:56
+#. Tag: programlisting
+#: example_mappings.xml:56
+#, no-c-format
msgid ""
- "<![CDATA[create table employers (\n"
- " id BIGINT not null, \n"
- " name VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table employment_periods (\n"
- " id BIGINT not null,\n"
- " hourly_rate NUMERIC(12, 2),\n"
- " currency VARCHAR(12), \n"
- " employee_id BIGINT not null, \n"
- " employer_id BIGINT not null, \n"
- " end_date TIMESTAMP, \n"
- " start_date TIMESTAMP, \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table employees (\n"
- " id BIGINT not null, \n"
- " firstName VARCHAR(255), \n"
- " initial CHAR(1), \n"
- " lastName VARCHAR(255), \n"
- " taxfileNumber VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "alter table employment_periods \n"
- " add constraint employment_periodsFK0 foreign key (employer_id) references employers\n"
- "alter table employment_periods \n"
- " add constraint employment_periodsFK1 foreign key (employee_id) references employees\n"
- "create sequence employee_id_seq\n"
- "create sequence employment_id_seq\n"
- "create sequence employer_id_seq]]>"
+"<![CDATA[create table employers (\n"
+" id BIGINT not null, \n"
+" name VARCHAR(255), \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"create table employment_periods (\n"
+" id BIGINT not null,\n"
+" hourly_rate NUMERIC(12, 2),\n"
+" currency VARCHAR(12), \n"
+" employee_id BIGINT not null, \n"
+" employer_id BIGINT not null, \n"
+" end_date TIMESTAMP, \n"
+" start_date TIMESTAMP, \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"create table employees (\n"
+" id BIGINT not null, \n"
+" firstName VARCHAR(255), \n"
+" initial CHAR(1), \n"
+" lastName VARCHAR(255), \n"
+" taxfileNumber VARCHAR(255), \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"alter table employment_periods \n"
+" add constraint employment_periodsFK0 foreign key (employer_id) "
+"references employers\n"
+"alter table employment_periods \n"
+" add constraint employment_periodsFK1 foreign key (employee_id) "
+"references employees\n"
+"create sequence employee_id_seq\n"
+"create sequence employment_id_seq\n"
+"create sequence employer_id_seq]]>"
msgstr ""
- "<![CDATA[create table employers (\n"
- " id BIGINT not null, \n"
- " name VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table employment_periods (\n"
- " id BIGINT not null,\n"
- " hourly_rate NUMERIC(12, 2),\n"
- " currency VARCHAR(12), \n"
- " employee_id BIGINT not null, \n"
- " employer_id BIGINT not null, \n"
- " end_date TIMESTAMP, \n"
- " start_date TIMESTAMP, \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table employees (\n"
- " id BIGINT not null, \n"
- " firstName VARCHAR(255), \n"
- " initial CHAR(1), \n"
- " lastName VARCHAR(255), \n"
- " taxfileNumber VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "alter table employment_periods \n"
- " add constraint employment_periodsFK0 foreign key (employer_id) references employers\n"
- "alter table employment_periods \n"
- " add constraint employment_periodsFK1 foreign key (employee_id) references employees\n"
- "create sequence employee_id_seq\n"
- "create sequence employment_id_seq\n"
- "create sequence employer_id_seq]]>"
-#: index.docbook:61
+#. Tag: title
+#: example_mappings.xml:61
+#, no-c-format
msgid "Author/Work"
msgstr "Author/Work"
-#: index.docbook:63
-msgid "Consider the following model of the relationships between <literal>Work</literal>, <literal>Author</literal> and <literal>Person</literal>. We represent the relationship between <literal>Work</literal> and <literal>Author</literal> as a many-to-many association. We choose to represent the relationship between <literal>Author</literal> and <literal>Person</literal> as one-to-one association. Another possibility would be to have <literal>Author</literal> extend <literal>Person</literal>."
-msgstr "<literal>Work</literal>, <literal>Author</literal> 그리고 <literal>Person</literal> 사이의 관계들에 대한 다음 모형을 검토하자. 우리는 <literal>Work</literal>과 <literal>Author</literal> 사이의 관계를 many-to-many 연관으로 표현한다. 우리는 <literal>Author</literal>와 <literal>Person</literal> 사이의 관계를 one-to-one 연관으로 표현하고자 선택한다. 또 다른 가능성은 <literal>Author</literal>가 <literal>Person</literal>을 확장하도록 하는 것일 것이다."
+#. Tag: para
+#: example_mappings.xml:63
+#, no-c-format
+msgid ""
+"Consider the following model of the relationships between <literal>Work</"
+"literal>, <literal>Author</literal> and <literal>Person</literal>. We "
+"represent the relationship between <literal>Work</literal> and "
+"<literal>Author</literal> as a many-to-many association. We choose to "
+"represent the relationship between <literal>Author</literal> and "
+"<literal>Person</literal> as one-to-one association. Another possibility "
+"would be to have <literal>Author</literal> extend <literal>Person</literal>."
+msgstr ""
+"<literal>Work</literal>, <literal>Author</literal> 그리고 <literal>Person</"
+"literal> 사이의 관계들에 대한 다음 모형을 검토하자. 우리는 <literal>Work</"
+"literal>과 <literal>Author</literal> 사이의 관계를 many-to-many 연관으로 표현"
+"한다. 우리는 <literal>Author</literal>와 <literal>Person</literal> 사이의 관"
+"계를 one-to-one 연관으로 표현하고자 선택한다. 또 다른 가능성은 "
+"<literal>Author</literal>가 <literal>Person</literal>을 확장하도록 하는 것일 "
+"것이다."
-#: index.docbook:81
-msgid "The following mapping document correctly represents these relationships:"
+#. Tag: para
+#: example_mappings.xml:81
+#, no-c-format
+msgid ""
+"The following mapping document correctly represents these relationships:"
msgstr "다음 매핑 문서는 이들 관계들을 정확하게 표현한다:"
-#: index.docbook:85
+#. Tag: programlisting
+#: example_mappings.xml:85
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Work\" table=\"works\" discriminator-value=\"W\">\n"
- "\n"
- " <id name=\"id\" column=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"type\" type=\"character\"/>\n"
- "\n"
- " <property name=\"title\"/>\n"
- " <set name=\"authors\" table=\"author_work\">\n"
- " <key column name=\"work_id\"/>\n"
- " <many-to-many class=\"Author\" column name=\"author_id\"/>\n"
- " </set>\n"
- "\n"
- " <subclass name=\"Book\" discriminator-value=\"B\">\n"
- " <property name=\"text\"/>\n"
- " </subclass>\n"
- "\n"
- " <subclass name=\"Song\" discriminator-value=\"S\">\n"
- " <property name=\"tempo\"/>\n"
- " <property name=\"genre\"/>\n"
- " </subclass>\n"
- "\n"
- " </class>\n"
- "\n"
- " <class name=\"Author\" table=\"authors\">\n"
- "\n"
- " <id name=\"id\" column=\"id\">\n"
- " <!-- The Author must have the same identifier as the Person -->\n"
- " <generator class=\"assigned\"/> \n"
- " </id>\n"
- "\n"
- " <property name=\"alias\"/>\n"
- " <one-to-one name=\"person\" constrained=\"true\"/>\n"
- "\n"
- " <set name=\"works\" table=\"author_work\" inverse=\"true\">\n"
- " <key column=\"author_id\"/>\n"
- " <many-to-many class=\"Work\" column=\"work_id\"/>\n"
- " </set>\n"
- "\n"
- " </class>\n"
- "\n"
- " <class name=\"Person\" table=\"persons\">\n"
- " <id name=\"id\" column=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"Work\" table=\"works\" discriminator-value=\"W\">\n"
+"\n"
+" <id name=\"id\" column=\"id\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <discriminator column=\"type\" type=\"character\"/>\n"
+"\n"
+" <property name=\"title\"/>\n"
+" <set name=\"authors\" table=\"author_work\">\n"
+" <key column name=\"work_id\"/>\n"
+" <many-to-many class=\"Author\" column name=\"author_id\"/>\n"
+" </set>\n"
+"\n"
+" <subclass name=\"Book\" discriminator-value=\"B\">\n"
+" <property name=\"text\"/>\n"
+" </subclass>\n"
+"\n"
+" <subclass name=\"Song\" discriminator-value=\"S\">\n"
+" <property name=\"tempo\"/>\n"
+" <property name=\"genre\"/>\n"
+" </subclass>\n"
+"\n"
+" </class>\n"
+"\n"
+" <class name=\"Author\" table=\"authors\">\n"
+"\n"
+" <id name=\"id\" column=\"id\">\n"
+" <!-- The Author must have the same identifier as the Person -->\n"
+" <generator class=\"assigned\"/> \n"
+" </id>\n"
+"\n"
+" <property name=\"alias\"/>\n"
+" <one-to-one name=\"person\" constrained=\"true\"/>\n"
+"\n"
+" <set name=\"works\" table=\"author_work\" inverse=\"true\">\n"
+" <key column=\"author_id\"/>\n"
+" <many-to-many class=\"Work\" column=\"work_id\"/>\n"
+" </set>\n"
+"\n"
+" </class>\n"
+"\n"
+" <class name=\"Person\" table=\"persons\">\n"
+" <id name=\"id\" column=\"id\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"name\"/>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Work\" table=\"works\" discriminator-value=\"W\">\n"
- "\n"
- " <id name=\"id\" column=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"type\" type=\"character\"/>\n"
- "\n"
- " <property name=\"title\"/>\n"
- " <set name=\"authors\" table=\"author_work\">\n"
- " <key column name=\"work_id\"/>\n"
- " <many-to-many class=\"Author\" column name=\"author_id\"/>\n"
- " </set>\n"
- "\n"
- " <subclass name=\"Book\" discriminator-value=\"B\">\n"
- " <property name=\"text\"/>\n"
- " </subclass>\n"
- "\n"
- " <subclass name=\"Song\" discriminator-value=\"S\">\n"
- " <property name=\"tempo\"/>\n"
- " <property name=\"genre\"/>\n"
- " </subclass>\n"
- "\n"
- " </class>\n"
- "\n"
- " <class name=\"Author\" table=\"authors\">\n"
- "\n"
- " <id name=\"id\" column=\"id\">\n"
- " <!-- The Author must have the same identifier as the Person -->\n"
- " <generator class=\"assigned\"/> \n"
- " </id>\n"
- "\n"
- " <property name=\"alias\"/>\n"
- " <one-to-one name=\"person\" constrained=\"true\"/>\n"
- "\n"
- " <set name=\"works\" table=\"author_work\" inverse=\"true\">\n"
- " <key column=\"author_id\"/>\n"
- " <many-to-many class=\"Work\" column=\"work_id\"/>\n"
- " </set>\n"
- "\n"
- " </class>\n"
- "\n"
- " <class name=\"Person\" table=\"persons\">\n"
- " <id name=\"id\" column=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:87
-msgid "There are four tables in this mapping. <literal>works</literal>, <literal>authors</literal> and <literal>persons</literal> hold work, author and person data respectively. <literal>author_work</literal> is an association table linking authors to works. Heres the table schema, as generated by <literal>SchemaExport</literal>."
-msgstr "이 매핑에는 네 개의 테이블들이 존재한다. <literal>works</literal>, <literal>authors</literal>와 <literal>persons</literal>은 각각 작업 데이터, 저자 데이터, 개인 데이터를 보관한다. <literal>author_work</literal>는 저자들을 작업들에 연결시키는 연관 테이블이다. 다음은 <literal>SchemaExport</literal>에 의해 생성된 테이블 스키마이다."
+#. Tag: para
+#: example_mappings.xml:87
+#, no-c-format
+msgid ""
+"There are four tables in this mapping. <literal>works</literal>, "
+"<literal>authors</literal> and <literal>persons</literal> hold work, author "
+"and person data respectively. <literal>author_work</literal> is an "
+"association table linking authors to works. Heres the table schema, as "
+"generated by <literal>SchemaExport</literal>."
+msgstr ""
+"이 매핑에는 네 개의 테이블들이 존재한다. <literal>works</literal>, "
+"<literal>authors</literal>와 <literal>persons</literal>은 각각 작업 데이터, "
+"저자 데이터, 개인 데이터를 보관한다. <literal>author_work</literal>는 저자들"
+"을 작업들에 연결시키는 연관 테이블이다. 다음은 <literal>SchemaExport</"
+"literal>에 의해 생성된 테이블 스키마이다."
-#: index.docbook:95
+#. Tag: programlisting
+#: example_mappings.xml:95
+#, no-c-format
msgid ""
- "<![CDATA[create table works (\n"
- " id BIGINT not null generated by default as identity, \n"
- " tempo FLOAT, \n"
- " genre VARCHAR(255), \n"
- " text INTEGER, \n"
- " title VARCHAR(255), \n"
- " type CHAR(1) not null, \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table author_work (\n"
- " author_id BIGINT not null, \n"
- " work_id BIGINT not null, \n"
- " primary key (work_id, author_id)\n"
- ")\n"
- "\n"
- "create table authors (\n"
- " id BIGINT not null generated by default as identity, \n"
- " alias VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table persons (\n"
- " id BIGINT not null generated by default as identity, \n"
- " name VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "alter table authors \n"
- " add constraint authorsFK0 foreign key (id) references persons\n"
- "alter table author_work \n"
- " add constraint author_workFK0 foreign key (author_id) references authors\n"
- "alter table author_work\n"
- " add constraint author_workFK1 foreign key (work_id) references works]]>"
+"<![CDATA[create table works (\n"
+" id BIGINT not null generated by default as identity, \n"
+" tempo FLOAT, \n"
+" genre VARCHAR(255), \n"
+" text INTEGER, \n"
+" title VARCHAR(255), \n"
+" type CHAR(1) not null, \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"create table author_work (\n"
+" author_id BIGINT not null, \n"
+" work_id BIGINT not null, \n"
+" primary key (work_id, author_id)\n"
+")\n"
+"\n"
+"create table authors (\n"
+" id BIGINT not null generated by default as identity, \n"
+" alias VARCHAR(255), \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"create table persons (\n"
+" id BIGINT not null generated by default as identity, \n"
+" name VARCHAR(255), \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"alter table authors \n"
+" add constraint authorsFK0 foreign key (id) references persons\n"
+"alter table author_work \n"
+" add constraint author_workFK0 foreign key (author_id) references "
+"authors\n"
+"alter table author_work\n"
+" add constraint author_workFK1 foreign key (work_id) references works]]>"
msgstr ""
- "<![CDATA[create table works (\n"
- " id BIGINT not null generated by default as identity, \n"
- " tempo FLOAT, \n"
- " genre VARCHAR(255), \n"
- " text INTEGER, \n"
- " title VARCHAR(255), \n"
- " type CHAR(1) not null, \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table author_work (\n"
- " author_id BIGINT not null, \n"
- " work_id BIGINT not null, \n"
- " primary key (work_id, author_id)\n"
- ")\n"
- "\n"
- "create table authors (\n"
- " id BIGINT not null generated by default as identity, \n"
- " alias VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table persons (\n"
- " id BIGINT not null generated by default as identity, \n"
- " name VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "alter table authors \n"
- " add constraint authorsFK0 foreign key (id) references persons\n"
- "alter table author_work \n"
- " add constraint author_workFK0 foreign key (author_id) references authors\n"
- "alter table author_work\n"
- " add constraint author_workFK1 foreign key (work_id) references works]]>"
-#: index.docbook:100
+#. Tag: title
+#: example_mappings.xml:100
+#, no-c-format
msgid "Customer/Order/Product"
msgstr "Customer/Order/Product"
-#: index.docbook:102
-msgid "Now consider a model of the relationships between <literal>Customer</literal>, <literal>Order</literal> and <literal>LineItem</literal> and <literal>Product</literal>. There is a one-to-many association between <literal>Customer</literal> and <literal>Order</literal>, but how should we represent <literal>Order</literal> / <literal>LineItem</literal> / <literal>Product</literal>? I've chosen to map <literal>LineItem</literal> as an association class representing the many-to-many association between <literal>Order</literal> and <literal>Product</literal>. In Hibernate, this is called a composite element."
-msgstr "이제 <literal>Customer</literal>, <literal>Order</literal>와 <literal>LineItem</literal> 그리고 <literal>Product</literal> 사이의 관계들에 관한 모형을 검토하자. <literal>Customer</literal>와 <literal>Order</literal> 사이의 one-to-many 연관이 존재하지만, 우리는 어떻게 <literal>Order</literal> / <literal>LineItem</literal> / <literal>Product</literal>를 표현할 것인가? 나는 <literal>Order</literal>와 <literal>Product</literal> 사이의 many-to-many 연관를 나타내는 하나의 연관 클래스로서 <literal>LineItem</literal>을 매핑하기로 선택했다. Hibernate에서 이것은 composite 요소로 명명된다."
+#. Tag: para
+#: example_mappings.xml:102
+#, no-c-format
+msgid ""
+"Now consider a model of the relationships between <literal>Customer</"
+"literal>, <literal>Order</literal> and <literal>LineItem</literal> and "
+"<literal>Product</literal>. There is a one-to-many association between "
+"<literal>Customer</literal> and <literal>Order</literal>, but how should we "
+"represent <literal>Order</literal> / <literal>LineItem</literal> / "
+"<literal>Product</literal>? I've chosen to map <literal>LineItem</literal> "
+"as an association class representing the many-to-many association between "
+"<literal>Order</literal> and <literal>Product</literal>. In Hibernate, this "
+"is called a composite element."
+msgstr ""
+"이제 <literal>Customer</literal>, <literal>Order</literal>와 "
+"<literal>LineItem</literal> 그리고 <literal>Product</literal> 사이의 관계들"
+"에 관한 모형을 검토하자. <literal>Customer</literal>와 <literal>Order</"
+"literal> 사이의 one-to-many 연관이 존재하지만, 우리는 어떻게 <literal>Order</"
+"literal> / <literal>LineItem</literal> / <literal>Product</literal>를 표현할 "
+"것인가? 나는 <literal>Order</literal>와 <literal>Product</literal> 사이의 "
+"many-to-many 연관를 나타내는 하나의 연관 클래스로서 <literal>LineItem</"
+"literal>을 매핑하기로 선택했다. Hibernate에서 이것은 composite 요소로 명명된"
+"다."
-#: index.docbook:122
+#. Tag: para
+#: example_mappings.xml:122
+#, no-c-format
msgid "The mapping document:"
msgstr "매핑 문서:"
-#: index.docbook:126
+#. Tag: programlisting
+#: example_mappings.xml:126
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Customer\" table=\"customers\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " <set name=\"orders\" inverse=\"true\">\n"
- " <key column=\"customer_id\"/>\n"
- " <one-to-many class=\"Order\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Order\" table=\"orders\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"date\"/>\n"
- " <many-to-one name=\"customer\" column=\"customer_id\"/>\n"
- " <list name=\"lineItems\" table=\"line_items\">\n"
- " <key column=\"order_id\"/>\n"
- " <list-index column=\"line_number\"/>\n"
- " <composite-element class=\"LineItem\">\n"
- " <property name=\"quantity\"/>\n"
- " <many-to-one name=\"product\" column=\"product_id\"/>\n"
- " </composite-element>\n"
- " </list>\n"
- " </class>\n"
- "\n"
- " <class name=\"Product\" table=\"products\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"serialNumber\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"Customer\" table=\"customers\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"name\"/>\n"
+" <set name=\"orders\" inverse=\"true\">\n"
+" <key column=\"customer_id\"/>\n"
+" <one-to-many class=\"Order\"/>\n"
+" </set>\n"
+" </class>\n"
+"\n"
+" <class name=\"Order\" table=\"orders\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"date\"/>\n"
+" <many-to-one name=\"customer\" column=\"customer_id\"/>\n"
+" <list name=\"lineItems\" table=\"line_items\">\n"
+" <key column=\"order_id\"/>\n"
+" <list-index column=\"line_number\"/>\n"
+" <composite-element class=\"LineItem\">\n"
+" <property name=\"quantity\"/>\n"
+" <many-to-one name=\"product\" column=\"product_id\"/>\n"
+" </composite-element>\n"
+" </list>\n"
+" </class>\n"
+"\n"
+" <class name=\"Product\" table=\"products\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"serialNumber\"/>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"Customer\" table=\"customers\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"name\"/>\n"
- " <set name=\"orders\" inverse=\"true\">\n"
- " <key column=\"customer_id\"/>\n"
- " <one-to-many class=\"Order\"/>\n"
- " </set>\n"
- " </class>\n"
- "\n"
- " <class name=\"Order\" table=\"orders\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"date\"/>\n"
- " <many-to-one name=\"customer\" column=\"customer_id\"/>\n"
- " <list name=\"lineItems\" table=\"line_items\">\n"
- " <key column=\"order_id\"/>\n"
- " <list-index column=\"line_number\"/>\n"
- " <composite-element class=\"LineItem\">\n"
- " <property name=\"quantity\"/>\n"
- " <many-to-one name=\"product\" column=\"product_id\"/>\n"
- " </composite-element>\n"
- " </list>\n"
- " </class>\n"
- "\n"
- " <class name=\"Product\" table=\"products\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"serialNumber\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:128
-msgid "<literal>customers</literal>, <literal>orders</literal>, <literal>line_items</literal> and <literal>products</literal> hold customer, order, order line item and product data respectively. <literal>line_items</literal> also acts as an association table linking orders with products."
-msgstr "<literal>customers</literal>, <literal>orders</literal>, <literal>line_items</literal> 그리고 <literal>products</literal>는 각각 고객 데이터, 주문 데이터, 주문 라인 아이템 데이터, 그리고 제품 데이터를 보관한다. <literal>line_items</literal>는 또한 주문들을 제품들과 연결시키는 연관 테이블로서 동작한다."
+#. Tag: para
+#: example_mappings.xml:128
+#, no-c-format
+msgid ""
+"<literal>customers</literal>, <literal>orders</literal>, "
+"<literal>line_items</literal> and <literal>products</literal> hold customer, "
+"order, order line item and product data respectively. <literal>line_items</"
+"literal> also acts as an association table linking orders with products."
+msgstr ""
+"<literal>customers</literal>, <literal>orders</literal>, "
+"<literal>line_items</literal> 그리고 <literal>products</literal>는 각각 고객 "
+"데이터, 주문 데이터, 주문 라인 아이템 데이터, 그리고 제품 데이터를 보관한다. "
+"<literal>line_items</literal>는 또한 주문들을 제품들과 연결시키는 연관 테이블"
+"로서 동작한다."
-#: index.docbook:135
+#. Tag: programlisting
+#: example_mappings.xml:135
+#, no-c-format
msgid ""
- "<![CDATA[create table customers (\n"
- " id BIGINT not null generated by default as identity, \n"
- " name VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table orders (\n"
- " id BIGINT not null generated by default as identity, \n"
- " customer_id BIGINT, \n"
- " date TIMESTAMP, \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table line_items (\n"
- " line_number INTEGER not null, \n"
- " order_id BIGINT not null, \n"
- " product_id BIGINT, \n"
- " quantity INTEGER, \n"
- " primary key (order_id, line_number)\n"
- ")\n"
- "\n"
- "create table products (\n"
- " id BIGINT not null generated by default as identity, \n"
- " serialNumber VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "alter table orders \n"
- " add constraint ordersFK0 foreign key (customer_id) references customers\n"
- "alter table line_items\n"
- " add constraint line_itemsFK0 foreign key (product_id) references products\n"
- "alter table line_items\n"
- " add constraint line_itemsFK1 foreign key (order_id) references orders]]>"
+"<![CDATA[create table customers (\n"
+" id BIGINT not null generated by default as identity, \n"
+" name VARCHAR(255), \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"create table orders (\n"
+" id BIGINT not null generated by default as identity, \n"
+" customer_id BIGINT, \n"
+" date TIMESTAMP, \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"create table line_items (\n"
+" line_number INTEGER not null, \n"
+" order_id BIGINT not null, \n"
+" product_id BIGINT, \n"
+" quantity INTEGER, \n"
+" primary key (order_id, line_number)\n"
+")\n"
+"\n"
+"create table products (\n"
+" id BIGINT not null generated by default as identity, \n"
+" serialNumber VARCHAR(255), \n"
+" primary key (id)\n"
+")\n"
+"\n"
+"alter table orders \n"
+" add constraint ordersFK0 foreign key (customer_id) references customers\n"
+"alter table line_items\n"
+" add constraint line_itemsFK0 foreign key (product_id) references "
+"products\n"
+"alter table line_items\n"
+" add constraint line_itemsFK1 foreign key (order_id) references orders]]>"
msgstr ""
- "<![CDATA[create table customers (\n"
- " id BIGINT not null generated by default as identity, \n"
- " name VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table orders (\n"
- " id BIGINT not null generated by default as identity, \n"
- " customer_id BIGINT, \n"
- " date TIMESTAMP, \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "create table line_items (\n"
- " line_number INTEGER not null, \n"
- " order_id BIGINT not null, \n"
- " product_id BIGINT, \n"
- " quantity INTEGER, \n"
- " primary key (order_id, line_number)\n"
- ")\n"
- "\n"
- "create table products (\n"
- " id BIGINT not null generated by default as identity, \n"
- " serialNumber VARCHAR(255), \n"
- " primary key (id)\n"
- ")\n"
- "\n"
- "alter table orders \n"
- " add constraint ordersFK0 foreign key (customer_id) references customers\n"
- "alter table line_items\n"
- " add constraint line_itemsFK0 foreign key (product_id) references products\n"
- "alter table line_items\n"
- " add constraint line_itemsFK1 foreign key (order_id) references orders]]>"
-#: index.docbook:140
+#. Tag: title
+#: example_mappings.xml:140
+#, no-c-format
msgid "Miscellaneous example mappings"
msgstr "기타 예제 매핑들"
-#: index.docbook:142
-msgid "These examples are all taken from the Hibernate test suite. You will find many other useful example mappings there. Look in the <literal>test</literal> folder of the Hibernate distribution."
-msgstr "이들 예제들은 모두 Hiberante test suite로부터 취했다. 당신은 거기서 많은 다른 유용한 예제 매핑들을 발견할 것이다. Hibernate 배포본의 <literal>test</literal> 폴더를 살펴보라."
+#. Tag: para
+#: example_mappings.xml:142
+#, no-c-format
+msgid ""
+"These examples are all taken from the Hibernate test suite. You will find "
+"many other useful example mappings there. Look in the <literal>test</"
+"literal> folder of the Hibernate distribution."
+msgstr ""
+"이들 예제들은 모두 Hiberante test suite로부터 취했다. 당신은 거기서 많은 다"
+"른 유용한 예제 매핑들을 발견할 것이다. Hibernate 배포본의 <literal>test</"
+"literal> 폴더를 살펴보라."
-#: index.docbook:148
+#. Tag: para
+#: example_mappings.xml:148
+#, no-c-format
msgid "TODO: put words around this stuff"
msgstr "TODO: 이 내용을 둘러싼 말들을 집어넣을 것."
-#: index.docbook:151
+#. Tag: title
+#: example_mappings.xml:151
+#, no-c-format
msgid "\"Typed\" one-to-one association"
msgstr "\"형식화된(Typed)\" one-to-one 연관"
-#: index.docbook:152
+#. Tag: programlisting
+#: example_mappings.xml:152
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"name\"/>\n"
- " <one-to-one name=\"address\" \n"
- " cascade=\"all\">\n"
- " <formula>name</formula>\n"
- " <formula>'HOME'</formula>\n"
- " </one-to-one>\n"
- " <one-to-one name=\"mailingAddress\" \n"
- " cascade=\"all\">\n"
- " <formula>name</formula>\n"
- " <formula>'MAILING'</formula>\n"
- " </one-to-one>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\" batch-size=\"2\" \n"
- " check=\"addressType in ('MAILING', 'HOME', 'BUSINESS')\">\n"
- " <composite-id>\n"
- " <key-many-to-one name=\"person\" \n"
- " column=\"personName\"/>\n"
- " <key-property name=\"type\" \n"
- " column=\"addressType\"/>\n"
- " </composite-id>\n"
- " <property name=\"street\" type=\"text\"/>\n"
- " <property name=\"state\"/>\n"
- " <property name=\"zip\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"name\"/>\n"
+" <one-to-one name=\"address\" \n"
+" cascade=\"all\">\n"
+" <formula>name</formula>\n"
+" <formula>'HOME'</formula>\n"
+" </one-to-one>\n"
+" <one-to-one name=\"mailingAddress\" \n"
+" cascade=\"all\">\n"
+" <formula>name</formula>\n"
+" <formula>'MAILING'</formula>\n"
+" </one-to-one>\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\" batch-size=\"2\" \n"
+" check=\"addressType in ('MAILING', 'HOME', 'BUSINESS')\">\n"
+" <composite-id>\n"
+" <key-many-to-one name=\"person\" \n"
+" column=\"personName\"/>\n"
+" <key-property name=\"type\" \n"
+" column=\"addressType\"/>\n"
+" </composite-id>\n"
+" <property name=\"street\" type=\"text\"/>\n"
+" <property name=\"state\"/>\n"
+" <property name=\"zip\"/>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"name\"/>\n"
- " <one-to-one name=\"address\" \n"
- " cascade=\"all\">\n"
- " <formula>name</formula>\n"
- " <formula>'HOME'</formula>\n"
- " </one-to-one>\n"
- " <one-to-one name=\"mailingAddress\" \n"
- " cascade=\"all\">\n"
- " <formula>name</formula>\n"
- " <formula>'MAILING'</formula>\n"
- " </one-to-one>\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\" batch-size=\"2\" \n"
- " check=\"addressType in ('MAILING', 'HOME', 'BUSINESS')\">\n"
- " <composite-id>\n"
- " <key-many-to-one name=\"person\" \n"
- " column=\"personName\"/>\n"
- " <key-property name=\"type\" \n"
- " column=\"addressType\"/>\n"
- " </composite-id>\n"
- " <property name=\"street\" type=\"text\"/>\n"
- " <property name=\"state\"/>\n"
- " <property name=\"zip\"/>\n"
- "</class>]]>"
-#: index.docbook:156
+#. Tag: title
+#: example_mappings.xml:156
+#, no-c-format
msgid "Composite key example"
msgstr "Composite 키 예제"
-#: index.docbook:157
+#. Tag: programlisting
+#: example_mappings.xml:157
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Customer\">\n"
- "\n"
- " <id name=\"customerId\"\n"
- " length=\"10\">\n"
- " <generator class=\"assigned\"/>\n"
- " </id>\n"
- "\n"
- " <property name=\"name\" not-null=\"true\" length=\"100\"/>\n"
- " <property name=\"address\" not-null=\"true\" length=\"200\"/>\n"
- "\n"
- " <list name=\"orders\"\n"
- " inverse=\"true\"\n"
- " cascade=\"save-update\">\n"
- " <key column=\"customerId\"/>\n"
- " <index column=\"orderNumber\"/>\n"
- " <one-to-many class=\"Order\"/>\n"
- " </list>\n"
- "\n"
- "</class>\n"
- "\n"
- "<class name=\"Order\" table=\"CustomerOrder\" lazy=\"true\">\n"
- " <synchronize table=\"LineItem\"/>\n"
- " <synchronize table=\"Product\"/>\n"
- " \n"
- " <composite-id name=\"id\" \n"
- " class=\"Order$Id\">\n"
- " <key-property name=\"customerId\" length=\"10\"/>\n"
- " <key-property name=\"orderNumber\"/>\n"
- " </composite-id>\n"
- " \n"
- " <property name=\"orderDate\" \n"
- " type=\"calendar_date\"\n"
- " not-null=\"true\"/>\n"
- " \n"
- " <property name=\"total\">\n"
- " <formula>\n"
- " ( select sum(li.quantity*p.price) \n"
- " from LineItem li, Product p \n"
- " where li.productId = p.productId \n"
- " and li.customerId = customerId \n"
- " and li.orderNumber = orderNumber )\n"
- " </formula>\n"
- " </property>\n"
- " \n"
- " <many-to-one name=\"customer\"\n"
- " column=\"customerId\"\n"
- " insert=\"false\"\n"
- " update=\"false\" \n"
- " not-null=\"true\"/>\n"
- " \n"
- " <bag name=\"lineItems\"\n"
- " fetch=\"join\" \n"
- " inverse=\"true\"\n"
- " cascade=\"save-update\">\n"
- " <key>\n"
- " <column name=\"customerId\"/>\n"
- " <column name=\"orderNumber\"/>\n"
- " </key>\n"
- " <one-to-many class=\"LineItem\"/>\n"
- " </bag>\n"
- " \n"
- "</class>\n"
- " \n"
- "<class name=\"LineItem\">\n"
- " \n"
- " <composite-id name=\"id\" \n"
- " class=\"LineItem$Id\">\n"
- " <key-property name=\"customerId\" length=\"10\"/>\n"
- " <key-property name=\"orderNumber\"/>\n"
- " <key-property name=\"productId\" length=\"10\"/>\n"
- " </composite-id>\n"
- " \n"
- " <property name=\"quantity\"/>\n"
- " \n"
- " <many-to-one name=\"order\"\n"
- " insert=\"false\"\n"
- " update=\"false\" \n"
- " not-null=\"true\">\n"
- " <column name=\"customerId\"/>\n"
- " <column name=\"orderNumber\"/>\n"
- " </many-to-one>\n"
- " \n"
- " <many-to-one name=\"product\"\n"
- " insert=\"false\"\n"
- " update=\"false\" \n"
- " not-null=\"true\"\n"
- " column=\"productId\"/>\n"
- " \n"
- "</class>\n"
- "\n"
- "<class name=\"Product\">\n"
- " <synchronize table=\"LineItem\"/>\n"
- "\n"
- " <id name=\"productId\"\n"
- " length=\"10\">\n"
- " <generator class=\"assigned\"/>\n"
- " </id>\n"
- " \n"
- " <property name=\"description\" \n"
- " not-null=\"true\" \n"
- " length=\"200\"/>\n"
- " <property name=\"price\" length=\"3\"/>\n"
- " <property name=\"numberAvailable\"/>\n"
- " \n"
- " <property name=\"numberOrdered\">\n"
- " <formula>\n"
- " ( select sum(li.quantity) \n"
- " from LineItem li \n"
- " where li.productId = productId )\n"
- " </formula>\n"
- " </property>\n"
- " \n"
- "</class>]]>"
+"<![CDATA[<class name=\"Customer\">\n"
+"\n"
+" <id name=\"customerId\"\n"
+" length=\"10\">\n"
+" <generator class=\"assigned\"/>\n"
+" </id>\n"
+"\n"
+" <property name=\"name\" not-null=\"true\" length=\"100\"/>\n"
+" <property name=\"address\" not-null=\"true\" length=\"200\"/>\n"
+"\n"
+" <list name=\"orders\"\n"
+" inverse=\"true\"\n"
+" cascade=\"save-update\">\n"
+" <key column=\"customerId\"/>\n"
+" <index column=\"orderNumber\"/>\n"
+" <one-to-many class=\"Order\"/>\n"
+" </list>\n"
+"\n"
+"</class>\n"
+"\n"
+"<class name=\"Order\" table=\"CustomerOrder\" lazy=\"true\">\n"
+" <synchronize table=\"LineItem\"/>\n"
+" <synchronize table=\"Product\"/>\n"
+" \n"
+" <composite-id name=\"id\" \n"
+" class=\"Order$Id\">\n"
+" <key-property name=\"customerId\" length=\"10\"/>\n"
+" <key-property name=\"orderNumber\"/>\n"
+" </composite-id>\n"
+" \n"
+" <property name=\"orderDate\" \n"
+" type=\"calendar_date\"\n"
+" not-null=\"true\"/>\n"
+" \n"
+" <property name=\"total\">\n"
+" <formula>\n"
+" ( select sum(li.quantity*p.price) \n"
+" from LineItem li, Product p \n"
+" where li.productId = p.productId \n"
+" and li.customerId = customerId \n"
+" and li.orderNumber = orderNumber )\n"
+" </formula>\n"
+" </property>\n"
+" \n"
+" <many-to-one name=\"customer\"\n"
+" column=\"customerId\"\n"
+" insert=\"false\"\n"
+" update=\"false\" \n"
+" not-null=\"true\"/>\n"
+" \n"
+" <bag name=\"lineItems\"\n"
+" fetch=\"join\" \n"
+" inverse=\"true\"\n"
+" cascade=\"save-update\">\n"
+" <key>\n"
+" <column name=\"customerId\"/>\n"
+" <column name=\"orderNumber\"/>\n"
+" </key>\n"
+" <one-to-many class=\"LineItem\"/>\n"
+" </bag>\n"
+" \n"
+"</class>\n"
+" \n"
+"<class name=\"LineItem\">\n"
+" \n"
+" <composite-id name=\"id\" \n"
+" class=\"LineItem$Id\">\n"
+" <key-property name=\"customerId\" length=\"10\"/>\n"
+" <key-property name=\"orderNumber\"/>\n"
+" <key-property name=\"productId\" length=\"10\"/>\n"
+" </composite-id>\n"
+" \n"
+" <property name=\"quantity\"/>\n"
+" \n"
+" <many-to-one name=\"order\"\n"
+" insert=\"false\"\n"
+" update=\"false\" \n"
+" not-null=\"true\">\n"
+" <column name=\"customerId\"/>\n"
+" <column name=\"orderNumber\"/>\n"
+" </many-to-one>\n"
+" \n"
+" <many-to-one name=\"product\"\n"
+" insert=\"false\"\n"
+" update=\"false\" \n"
+" not-null=\"true\"\n"
+" column=\"productId\"/>\n"
+" \n"
+"</class>\n"
+"\n"
+"<class name=\"Product\">\n"
+" <synchronize table=\"LineItem\"/>\n"
+"\n"
+" <id name=\"productId\"\n"
+" length=\"10\">\n"
+" <generator class=\"assigned\"/>\n"
+" </id>\n"
+" \n"
+" <property name=\"description\" \n"
+" not-null=\"true\" \n"
+" length=\"200\"/>\n"
+" <property name=\"price\" length=\"3\"/>\n"
+" <property name=\"numberAvailable\"/>\n"
+" \n"
+" <property name=\"numberOrdered\">\n"
+" <formula>\n"
+" ( select sum(li.quantity) \n"
+" from LineItem li \n"
+" where li.productId = productId )\n"
+" </formula>\n"
+" </property>\n"
+" \n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Customer\">\n"
- "\n"
- " <id name=\"customerId\"\n"
- " length=\"10\">\n"
- " <generator class=\"assigned\"/>\n"
- " </id>\n"
- "\n"
- " <property name=\"name\" not-null=\"true\" length=\"100\"/>\n"
- " <property name=\"address\" not-null=\"true\" length=\"200\"/>\n"
- "\n"
- " <list name=\"orders\"\n"
- " inverse=\"true\"\n"
- " cascade=\"save-update\">\n"
- " <key column=\"customerId\"/>\n"
- " <index column=\"orderNumber\"/>\n"
- " <one-to-many class=\"Order\"/>\n"
- " </list>\n"
- "\n"
- "</class>\n"
- "\n"
- "<class name=\"Order\" table=\"CustomerOrder\" lazy=\"true\">\n"
- " <synchronize table=\"LineItem\"/>\n"
- " <synchronize table=\"Product\"/>\n"
- " \n"
- " <composite-id name=\"id\" \n"
- " class=\"Order$Id\">\n"
- " <key-property name=\"customerId\" length=\"10\"/>\n"
- " <key-property name=\"orderNumber\"/>\n"
- " </composite-id>\n"
- " \n"
- " <property name=\"orderDate\" \n"
- " type=\"calendar_date\"\n"
- " not-null=\"true\"/>\n"
- " \n"
- " <property name=\"total\">\n"
- " <formula>\n"
- " ( select sum(li.quantity*p.price) \n"
- " from LineItem li, Product p \n"
- " where li.productId = p.productId \n"
- " and li.customerId = customerId \n"
- " and li.orderNumber = orderNumber )\n"
- " </formula>\n"
- " </property>\n"
- " \n"
- " <many-to-one name=\"customer\"\n"
- " column=\"customerId\"\n"
- " insert=\"false\"\n"
- " update=\"false\" \n"
- " not-null=\"true\"/>\n"
- " \n"
- " <bag name=\"lineItems\"\n"
- " fetch=\"join\" \n"
- " inverse=\"true\"\n"
- " cascade=\"save-update\">\n"
- " <key>\n"
- " <column name=\"customerId\"/>\n"
- " <column name=\"orderNumber\"/>\n"
- " </key>\n"
- " <one-to-many class=\"LineItem\"/>\n"
- " </bag>\n"
- " \n"
- "</class>\n"
- " \n"
- "<class name=\"LineItem\">\n"
- " \n"
- " <composite-id name=\"id\" \n"
- " class=\"LineItem$Id\">\n"
- " <key-property name=\"customerId\" length=\"10\"/>\n"
- " <key-property name=\"orderNumber\"/>\n"
- " <key-property name=\"productId\" length=\"10\"/>\n"
- " </composite-id>\n"
- " \n"
- " <property name=\"quantity\"/>\n"
- " \n"
- " <many-to-one name=\"order\"\n"
- " insert=\"false\"\n"
- " update=\"false\" \n"
- " not-null=\"true\">\n"
- " <column name=\"customerId\"/>\n"
- " <column name=\"orderNumber\"/>\n"
- " </many-to-one>\n"
- " \n"
- " <many-to-one name=\"product\"\n"
- " insert=\"false\"\n"
- " update=\"false\" \n"
- " not-null=\"true\"\n"
- " column=\"productId\"/>\n"
- " \n"
- "</class>\n"
- "\n"
- "<class name=\"Product\">\n"
- " <synchronize table=\"LineItem\"/>\n"
- "\n"
- " <id name=\"productId\"\n"
- " length=\"10\">\n"
- " <generator class=\"assigned\"/>\n"
- " </id>\n"
- " \n"
- " <property name=\"description\" \n"
- " not-null=\"true\" \n"
- " length=\"200\"/>\n"
- " <property name=\"price\" length=\"3\"/>\n"
- " <property name=\"numberAvailable\"/>\n"
- " \n"
- " <property name=\"numberOrdered\">\n"
- " <formula>\n"
- " ( select sum(li.quantity) \n"
- " from LineItem li \n"
- " where li.productId = productId )\n"
- " </formula>\n"
- " </property>\n"
- " \n"
- "</class>]]>"
-#: index.docbook:161
+#. Tag: title
+#: example_mappings.xml:161
+#, no-c-format
msgid "Many-to-many with shared composite key attribute"
msgstr "공유된 합성 키 속성을 가진 Many-to-many"
-#: index.docbook:162
+#. Tag: programlisting
+#: example_mappings.xml:162
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"User\" table=\"`User`\">\n"
- " <composite-id>\n"
- " <key-property name=\"name\"/>\n"
- " <key-property name=\"org\"/>\n"
- " </composite-id>\n"
- " <set name=\"groups\" table=\"UserGroup\">\n"
- " <key>\n"
- " <column name=\"userName\"/>\n"
- " <column name=\"org\"/>\n"
- " </key>\n"
- " <many-to-many class=\"Group\">\n"
- " <column name=\"groupName\"/>\n"
- " <formula>org</formula>\n"
- " </many-to-many>\n"
- " </set>\n"
- "</class>\n"
- " \n"
- "<class name=\"Group\" table=\"`Group`\">\n"
- " <composite-id>\n"
- " <key-property name=\"name\"/>\n"
- " <key-property name=\"org\"/>\n"
- " </composite-id>\n"
- " <property name=\"description\"/>\n"
- " <set name=\"users\" table=\"UserGroup\" inverse=\"true\">\n"
- " <key>\n"
- " <column name=\"groupName\"/>\n"
- " <column name=\"org\"/>\n"
- " </key>\n"
- " <many-to-many class=\"User\">\n"
- " <column name=\"userName\"/>\n"
- " <formula>org</formula>\n"
- " </many-to-many>\n"
- " </set>\n"
- "</class>\n"
- "]]>"
+"<![CDATA[<class name=\"User\" table=\"`User`\">\n"
+" <composite-id>\n"
+" <key-property name=\"name\"/>\n"
+" <key-property name=\"org\"/>\n"
+" </composite-id>\n"
+" <set name=\"groups\" table=\"UserGroup\">\n"
+" <key>\n"
+" <column name=\"userName\"/>\n"
+" <column name=\"org\"/>\n"
+" </key>\n"
+" <many-to-many class=\"Group\">\n"
+" <column name=\"groupName\"/>\n"
+" <formula>org</formula>\n"
+" </many-to-many>\n"
+" </set>\n"
+"</class>\n"
+" \n"
+"<class name=\"Group\" table=\"`Group`\">\n"
+" <composite-id>\n"
+" <key-property name=\"name\"/>\n"
+" <key-property name=\"org\"/>\n"
+" </composite-id>\n"
+" <property name=\"description\"/>\n"
+" <set name=\"users\" table=\"UserGroup\" inverse=\"true\">\n"
+" <key>\n"
+" <column name=\"groupName\"/>\n"
+" <column name=\"org\"/>\n"
+" </key>\n"
+" <many-to-many class=\"User\">\n"
+" <column name=\"userName\"/>\n"
+" <formula>org</formula>\n"
+" </many-to-many>\n"
+" </set>\n"
+"</class>\n"
+"]]>"
msgstr ""
- "<![CDATA[<class name=\"User\" table=\"`User`\">\n"
- " <composite-id>\n"
- " <key-property name=\"name\"/>\n"
- " <key-property name=\"org\"/>\n"
- " </composite-id>\n"
- " <set name=\"groups\" table=\"UserGroup\">\n"
- " <key>\n"
- " <column name=\"userName\"/>\n"
- " <column name=\"org\"/>\n"
- " </key>\n"
- " <many-to-many class=\"Group\">\n"
- " <column name=\"groupName\"/>\n"
- " <formula>org</formula>\n"
- " </many-to-many>\n"
- " </set>\n"
- "</class>\n"
- " \n"
- "<class name=\"Group\" table=\"`Group`\">\n"
- " <composite-id>\n"
- " <key-property name=\"name\"/>\n"
- " <key-property name=\"org\"/>\n"
- " </composite-id>\n"
- " <property name=\"description\"/>\n"
- " <set name=\"users\" table=\"UserGroup\" inverse=\"true\">\n"
- " <key>\n"
- " <column name=\"groupName\"/>\n"
- " <column name=\"org\"/>\n"
- " </key>\n"
- " <many-to-many class=\"User\">\n"
- " <column name=\"userName\"/>\n"
- " <formula>org</formula>\n"
- " </many-to-many>\n"
- " </set>\n"
- "</class>\n"
- "]]>"
-#: index.docbook:166
+#. Tag: title
+#: example_mappings.xml:166
+#, no-c-format
msgid "Content based discrimination"
msgstr "내용 기반 판별"
-#: index.docbook:167
+#. Tag: programlisting
+#: example_mappings.xml:167
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\"\n"
- " discriminator-value=\"P\">\n"
- " \n"
- " <id name=\"id\" \n"
- " column=\"person_id\" \n"
- " unsaved-value=\"0\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " \n"
- " \n"
- " <discriminator \n"
- " type=\"character\">\n"
- " <formula>\n"
- " case \n"
- " when title is not null then 'E' \n"
- " when salesperson is not null then 'C' \n"
- " else 'P' \n"
- " end\n"
- " </formula>\n"
- " </discriminator>\n"
- "\n"
- " <property name=\"name\" \n"
- " not-null=\"true\"\n"
- " length=\"80\"/>\n"
- " \n"
- " <property name=\"sex\" \n"
- " not-null=\"true\"\n"
- " update=\"false\"/>\n"
- " \n"
- " <component name=\"address\">\n"
- " <property name=\"address\"/>\n"
- " <property name=\"zip\"/>\n"
- " <property name=\"country\"/>\n"
- " </component>\n"
- " \n"
- " <subclass name=\"Employee\" \n"
- " discriminator-value=\"E\">\n"
- " <property name=\"title\"\n"
- " length=\"20\"/>\n"
- " <property name=\"salary\"/>\n"
- " <many-to-one name=\"manager\"/>\n"
- " </subclass>\n"
- " \n"
- " <subclass name=\"Customer\" \n"
- " discriminator-value=\"C\">\n"
- " <property name=\"comments\"/>\n"
- " <many-to-one name=\"salesperson\"/>\n"
- " </subclass>\n"
- " \n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\"\n"
+" discriminator-value=\"P\">\n"
+" \n"
+" <id name=\"id\" \n"
+" column=\"person_id\" \n"
+" unsaved-value=\"0\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" \n"
+" \n"
+" <discriminator \n"
+" type=\"character\">\n"
+" <formula>\n"
+" case \n"
+" when title is not null then 'E' \n"
+" when salesperson is not null then 'C' \n"
+" else 'P' \n"
+" end\n"
+" </formula>\n"
+" </discriminator>\n"
+"\n"
+" <property name=\"name\" \n"
+" not-null=\"true\"\n"
+" length=\"80\"/>\n"
+" \n"
+" <property name=\"sex\" \n"
+" not-null=\"true\"\n"
+" update=\"false\"/>\n"
+" \n"
+" <component name=\"address\">\n"
+" <property name=\"address\"/>\n"
+" <property name=\"zip\"/>\n"
+" <property name=\"country\"/>\n"
+" </component>\n"
+" \n"
+" <subclass name=\"Employee\" \n"
+" discriminator-value=\"E\">\n"
+" <property name=\"title\"\n"
+" length=\"20\"/>\n"
+" <property name=\"salary\"/>\n"
+" <many-to-one name=\"manager\"/>\n"
+" </subclass>\n"
+" \n"
+" <subclass name=\"Customer\" \n"
+" discriminator-value=\"C\">\n"
+" <property name=\"comments\"/>\n"
+" <many-to-one name=\"salesperson\"/>\n"
+" </subclass>\n"
+" \n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\"\n"
- " discriminator-value=\"P\">\n"
- " \n"
- " <id name=\"id\" \n"
- " column=\"person_id\" \n"
- " unsaved-value=\"0\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " \n"
- " \n"
- " <discriminator \n"
- " type=\"character\">\n"
- " <formula>\n"
- " case \n"
- " when title is not null then 'E' \n"
- " when salesperson is not null then 'C' \n"
- " else 'P' \n"
- " end\n"
- " </formula>\n"
- " </discriminator>\n"
- "\n"
- " <property name=\"name\" \n"
- " not-null=\"true\"\n"
- " length=\"80\"/>\n"
- " \n"
- " <property name=\"sex\" \n"
- " not-null=\"true\"\n"
- " update=\"false\"/>\n"
- " \n"
- " <component name=\"address\">\n"
- " <property name=\"address\"/>\n"
- " <property name=\"zip\"/>\n"
- " <property name=\"country\"/>\n"
- " </component>\n"
- " \n"
- " <subclass name=\"Employee\" \n"
- " discriminator-value=\"E\">\n"
- " <property name=\"title\"\n"
- " length=\"20\"/>\n"
- " <property name=\"salary\"/>\n"
- " <many-to-one name=\"manager\"/>\n"
- " </subclass>\n"
- " \n"
- " <subclass name=\"Customer\" \n"
- " discriminator-value=\"C\">\n"
- " <property name=\"comments\"/>\n"
- " <many-to-one name=\"salesperson\"/>\n"
- " </subclass>\n"
- " \n"
- "</class>]]>"
-#: index.docbook:171
+#. Tag: title
+#: example_mappings.xml:171
+#, no-c-format
msgid "Associations on alternate keys"
msgstr "대체 키들에 대한 연관들"
-#: index.docbook:172
+#. Tag: programlisting
+#: example_mappings.xml:172
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " \n"
- " <id name=\"id\">\n"
- " <generator class=\"hilo\"/>\n"
- " </id>\n"
- " \n"
- " <property name=\"name\" length=\"100\"/>\n"
- " \n"
- " <one-to-one name=\"address\" \n"
- " property-ref=\"person\"\n"
- " cascade=\"all\"\n"
- " fetch=\"join\"/>\n"
- " \n"
- " <set name=\"accounts\" \n"
- " inverse=\"true\">\n"
- " <key column=\"userId\"\n"
- " property-ref=\"userId\"/>\n"
- " <one-to-many class=\"Account\"/>\n"
- " </set>\n"
- " \n"
- " <property name=\"userId\" length=\"8\"/>\n"
- "\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- "\n"
- " <id name=\"id\">\n"
- " <generator class=\"hilo\"/>\n"
- " </id>\n"
- "\n"
- " <property name=\"address\" length=\"300\"/>\n"
- " <property name=\"zip\" length=\"5\"/>\n"
- " <property name=\"country\" length=\"25\"/>\n"
- " <many-to-one name=\"person\" unique=\"true\" not-null=\"true\"/>\n"
- "\n"
- "</class>\n"
- "\n"
- "<class name=\"Account\">\n"
- " <id name=\"accountId\" length=\"32\">\n"
- " <generator class=\"uuid\"/>\n"
- " </id>\n"
- " \n"
- " <many-to-one name=\"user\"\n"
- " column=\"userId\"\n"
- " property-ref=\"userId\"/>\n"
- " \n"
- " <property name=\"type\" not-null=\"true\"/>\n"
- " \n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" \n"
+" <id name=\"id\">\n"
+" <generator class=\"hilo\"/>\n"
+" </id>\n"
+" \n"
+" <property name=\"name\" length=\"100\"/>\n"
+" \n"
+" <one-to-one name=\"address\" \n"
+" property-ref=\"person\"\n"
+" cascade=\"all\"\n"
+" fetch=\"join\"/>\n"
+" \n"
+" <set name=\"accounts\" \n"
+" inverse=\"true\">\n"
+" <key column=\"userId\"\n"
+" property-ref=\"userId\"/>\n"
+" <one-to-many class=\"Account\"/>\n"
+" </set>\n"
+" \n"
+" <property name=\"userId\" length=\"8\"/>\n"
+"\n"
+"</class>\n"
+"\n"
+"<class name=\"Address\">\n"
+"\n"
+" <id name=\"id\">\n"
+" <generator class=\"hilo\"/>\n"
+" </id>\n"
+"\n"
+" <property name=\"address\" length=\"300\"/>\n"
+" <property name=\"zip\" length=\"5\"/>\n"
+" <property name=\"country\" length=\"25\"/>\n"
+" <many-to-one name=\"person\" unique=\"true\" not-null=\"true\"/>\n"
+"\n"
+"</class>\n"
+"\n"
+"<class name=\"Account\">\n"
+" <id name=\"accountId\" length=\"32\">\n"
+" <generator class=\"uuid\"/>\n"
+" </id>\n"
+" \n"
+" <many-to-one name=\"user\"\n"
+" column=\"userId\"\n"
+" property-ref=\"userId\"/>\n"
+" \n"
+" <property name=\"type\" not-null=\"true\"/>\n"
+" \n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " \n"
- " <id name=\"id\">\n"
- " <generator class=\"hilo\"/>\n"
- " </id>\n"
- " \n"
- " <property name=\"name\" length=\"100\"/>\n"
- " \n"
- " <one-to-one name=\"address\" \n"
- " property-ref=\"person\"\n"
- " cascade=\"all\"\n"
- " fetch=\"join\"/>\n"
- " \n"
- " <set name=\"accounts\" \n"
- " inverse=\"true\">\n"
- " <key column=\"userId\"\n"
- " property-ref=\"userId\"/>\n"
- " <one-to-many class=\"Account\"/>\n"
- " </set>\n"
- " \n"
- " <property name=\"userId\" length=\"8\"/>\n"
- "\n"
- "</class>\n"
- "\n"
- "<class name=\"Address\">\n"
- "\n"
- " <id name=\"id\">\n"
- " <generator class=\"hilo\"/>\n"
- " </id>\n"
- "\n"
- " <property name=\"address\" length=\"300\"/>\n"
- " <property name=\"zip\" length=\"5\"/>\n"
- " <property name=\"country\" length=\"25\"/>\n"
- " <many-to-one name=\"person\" unique=\"true\" not-null=\"true\"/>\n"
- "\n"
- "</class>\n"
- "\n"
- "<class name=\"Account\">\n"
- " <id name=\"accountId\" length=\"32\">\n"
- " <generator class=\"uuid\"/>\n"
- " </id>\n"
- " \n"
- " <many-to-one name=\"user\"\n"
- " column=\"userId\"\n"
- " property-ref=\"userId\"/>\n"
- " \n"
- " <property name=\"type\" not-null=\"true\"/>\n"
- " \n"
- "</class>]]>"
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
Modified: core/trunk/documentation/manual/translations/ko-KR/content/example_parentchild.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/example_parentchild.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/example_parentchild.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,350 +1,603 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: example_parentchild.xml:5
+#, no-c-format
msgid "Example: Parent/Child"
msgstr "예제: 부모/자식"
-#: index.docbook:7
-msgid "One of the very first things that new users try to do with Hibernate is to model a parent / child type relationship. There are two different approaches to this. For various reasons the most convenient approach, especially for new users, is to model both <literal>Parent</literal> and <literal>Child</literal> as entity classes with a <literal><one-to-many></literal> association from <literal>Parent</literal> to <literal>Child</literal>. (The alternative approach is to declare the <literal>Child</literal> as a <literal><composite-element></literal>.) Now, it turns out that default semantics of a one to many association (in Hibernate) are much less close to the usual semantics of a parent / child relationship than those of a composite element mapping. We will explain how to use a <emphasis>bidirectional one to many association with cascades</emphasis> to model a parent / child relationship efficiently and elegantly. It's not at all difficult!"
-msgstr "새로운 사용자들이 Hibernate로 행하고자 시도하는 바로 첫 번째 것들 중 하나는 부모/자식 타입의 관계를 모형화 시키는 것이다. 이것에 대한 두 가지 다른 접근법들이 존재한다. 여러가지 이유들로 인해 특히 새로운 사용자들에게 가장 편한 접근법은 <literal>Parent</literal>로부터 <literal>Child</literal>로의 <literal><one-to-many></literal> 연관을 가진 엔티티 클래스들로서 <literal>Parent</literal>와 <literal>Child</literal> 양자를 모형화 시키는 것이다. (다른 접근법은 <literal>Child</literal>를 <literal><composite-element></literal>로 선언하는 것이다.) 이제, (Hibernate에서) one to many 연관에 대한 디폴트 의미는 composite 요소 매핑의 의미보다 부모/자식 관계의 통상적인 의미에 훨씬 덜 가깝다는 것이 판명된다. 우리는 부모/자식 관계를 효율적이고 강력하게 모형화 �!
�키기 위해 <emphasis>케스케이드들을 가진 양방향 one to many 연관</emphasis>을 사용하는 방법을 설명할 것이다. 그것은 전혀 어렵지 않다!"
+#. Tag: para
+#: example_parentchild.xml:7
+#, no-c-format
+msgid ""
+"One of the very first things that new users try to do with Hibernate is to "
+"model a parent / child type relationship. There are two different approaches "
+"to this. For various reasons the most convenient approach, especially for "
+"new users, is to model both <literal>Parent</literal> and <literal>Child</"
+"literal> as entity classes with a <literal><one-to-many></literal> "
+"association from <literal>Parent</literal> to <literal>Child</literal>. (The "
+"alternative approach is to declare the <literal>Child</literal> as a "
+"<literal><composite-element></literal>.) Now, it turns out that "
+"default semantics of a one to many association (in Hibernate) are much less "
+"close to the usual semantics of a parent / child relationship than those of "
+"a composite element mapping. We will explain how to use a "
+"<emphasis>bidirectional one to many association with cascades</emphasis> to "
+"model a parent / child relationship efficiently and elegantly. It's not at "
+"all difficult!"
+msgstr ""
+"새로운 사용자들이 Hibernate로 행하고자 시도하는 바로 첫 번째 것들 중 하나는 "
+"부모/자식 타입의 관계를 모형화 시키는 것이다. 이것에 대한 두 가지 다른 접근법"
+"들이 존재한다. 여러가지 이유들로 인해 특히 새로운 사용자들에게 가장 편한 접근"
+"법은 <literal>Parent</literal>로부터 <literal>Child</literal>로의 "
+"<literal><one-to-many></literal> 연관을 가진 엔티티 클래스들로서 "
+"<literal>Parent</literal>와 <literal>Child</literal> 양자를 모형화 시키는 것"
+"이다. (다른 접근법은 <literal>Child</literal>를 <literal><composite-"
+"element></literal>로 선언하는 것이다.) 이제, (Hibernate에서) one to many "
+"연관에 대한 디폴트 의미는 composite 요소 매핑의 의미보다 부모/자식 관계의 통"
+"상적인 의미에 훨씬 덜 가깝다는 것이 판명된다. 우리는 부모/자식 관계를 효율적"
+"이고 강력하게 모형화 시키기 위해 <emphasis>케스케이드들을 가진 양방향 one to "
+"many 연관</emphasis>을 사용하는 방법을 설명할 것이다. 그것은 전혀 어렵지 않"
+"다!"
-#: index.docbook:21
+#. Tag: title
+#: example_parentchild.xml:21
+#, no-c-format
msgid "A note about collections"
msgstr "콜렉션들에 관한 노트"
-#: index.docbook:23
-msgid "Hibernate collections are considered to be a logical part of their owning entity; never of the contained entities. This is a crucial distinction! It has the following consequences:"
-msgstr "Hibernate 콜렉션들은 그것들의 소유하고 있는 엔티티의 논리적 부분으로 간주된다; 결코 포함된 엔티티들의 부분이 아니다. 이것은 중대한 구분점이다! 그것은 다음은 다음 결과들을 갖는다:"
+#. Tag: para
+#: example_parentchild.xml:23
+#, no-c-format
+msgid ""
+"Hibernate collections are considered to be a logical part of their owning "
+"entity; never of the contained entities. This is a crucial distinction! It "
+"has the following consequences:"
+msgstr ""
+"Hibernate 콜렉션들은 그것들의 소유하고 있는 엔티티의 논리적 부분으로 간주된"
+"다; 결코 포함된 엔티티들의 부분이 아니다. 이것은 중대한 구분점이다! 그것은 다"
+"음은 다음 결과들을 갖는다:"
-#: index.docbook:30
-msgid "When we remove / add an object from / to a collection, the version number of the collection owner is incremented."
-msgstr "콜렉션으로부터 객체를 제거하고/콜렉션에 객체를 추가 시킬 때, 콜렉션 소유자의 버전 번호가 증가된다."
+#. Tag: para
+#: example_parentchild.xml:30
+#, no-c-format
+msgid ""
+"When we remove / add an object from / to a collection, the version number of "
+"the collection owner is incremented."
+msgstr ""
+"콜렉션으로부터 객체를 제거하고/콜렉션에 객체를 추가 시킬 때, 콜렉션 소유자의 "
+"버전 번호가 증가된다."
-#: index.docbook:36
-msgid "If an object that was removed from a collection is an instance of a value type (eg, a composite element), that object will cease to be persistent and its state will be completely removed from the database. Likewise, adding a value type instance to the collection will cause its state to be immediately persistent."
-msgstr "만일 콜렉션으로부터 제거되었던 객체가 하나의 값 타입의 인스턴스(예를 들어 composite 요소)이면, 그 객체는 영속상태를 끝내고 그것의 상태가 데이터베이스로부터 완전히 제거될 것이다. 마찬가지로 하나의 값 타입의 인스턴스를 콜렉션에 추가시키는 것은 그것의 상태가 즉시 영속화 되도록 강제시킬 것이다."
+#. Tag: para
+#: example_parentchild.xml:36
+#, no-c-format
+msgid ""
+"If an object that was removed from a collection is an instance of a value "
+"type (eg, a composite element), that object will cease to be persistent and "
+"its state will be completely removed from the database. Likewise, adding a "
+"value type instance to the collection will cause its state to be immediately "
+"persistent."
+msgstr ""
+"만일 콜렉션으로부터 제거되었던 객체가 하나의 값 타입의 인스턴스(예를 들어 "
+"composite 요소)이면, 그 객체는 영속상태를 끝내고 그것의 상태가 데이터베이스로"
+"부터 완전히 제거될 것이다. 마찬가지로 하나의 값 타입의 인스턴스를 콜렉션에 추"
+"가시키는 것은 그것의 상태가 즉시 영속화 되도록 강제시킬 것이다."
-#: index.docbook:44
-msgid "On the other hand, if an entity is removed from a collection (a one-to-many or many-to-many association), it will not be deleted, by default. This behaviour is completely consistent - a change to the internal state of another entity should not cause the associated entity to vanish! Likewise, adding an entity to a collection does not cause that entity to become persistent, by default."
-msgstr "반면에, 만일 엔티티가 콜렉션으로부터 제거될 경우(one-to-many 또는 many-to-many 연관), 그것은 디폴트로 삭제되지 않을 것이다. 이 특징은 완전하게 일관적이다 - 다른 엔티티의 내부 상태에 대한 변경은 연관된 엔티티를 사라지도록 강제하지 않을 것이다! 마찬가지로 콜렉션에 엔티티를 추가시키는 것은 디폴트로 그 엔티티가 영속화 되도록 강제시키지 않는다."
+#. Tag: para
+#: example_parentchild.xml:44
+#, no-c-format
+msgid ""
+"On the other hand, if an entity is removed from a collection (a one-to-many "
+"or many-to-many association), it will not be deleted, by default. This "
+"behaviour is completely consistent - a change to the internal state of "
+"another entity should not cause the associated entity to vanish! Likewise, "
+"adding an entity to a collection does not cause that entity to become "
+"persistent, by default."
+msgstr ""
+"반면에, 만일 엔티티가 콜렉션으로부터 제거될 경우(one-to-many 또는 many-to-"
+"many 연관), 그것은 디폴트로 삭제되지 않을 것이다. 이 특징은 완전하게 일관적이"
+"다 - 다른 엔티티의 내부 상태에 대한 변경은 연관된 엔티티를 사라지도록 강제하"
+"지 않을 것이다! 마찬가지로 콜렉션에 엔티티를 추가시키는 것은 디폴트로 그 엔티"
+"티가 영속화 되도록 강제시키지 않는다."
-#: index.docbook:54
-msgid "Instead, the default behaviour is that adding an entity to a collection merely creates a link between the two entities, while removing it removes the link. This is very appropriate for all sorts of cases. Where it is not appropriate at all is the case of a parent / child relationship, where the life of the child is bound to the life cycle of the parent."
-msgstr "대신에 콜렉션으로의 엔티티 추가가 두 엔티티들 사이에 단지 하나의 링크를 생성시키는 반면에, 그것을 제거하는 것은 링크를 제거한다는 점이 디폴트 특징이다. 이것은 모든 종류의 경우들에 대해 매우 적절하다. 그것이 전혀 적절하지 않은 곳은 부모/자식 관계인 경우이고, 여기서 자식의 생애는 부모의 생명주기에 묶여져 있다."
+#. Tag: para
+#: example_parentchild.xml:54
+#, no-c-format
+msgid ""
+"Instead, the default behaviour is that adding an entity to a collection "
+"merely creates a link between the two entities, while removing it removes "
+"the link. This is very appropriate for all sorts of cases. Where it is not "
+"appropriate at all is the case of a parent / child relationship, where the "
+"life of the child is bound to the life cycle of the parent."
+msgstr ""
+"대신에 콜렉션으로의 엔티티 추가가 두 엔티티들 사이에 단지 하나의 링크를 생성"
+"시키는 반면에, 그것을 제거하는 것은 링크를 제거한다는 점이 디폴트 특징이다. "
+"이것은 모든 종류의 경우들에 대해 매우 적절하다. 그것이 전혀 적절하지 않은 곳"
+"은 부모/자식 관계인 경우이고, 여기서 자식의 생애는 부모의 생명주기에 묶여져 "
+"있다."
-#: index.docbook:64
+#. Tag: title
+#: example_parentchild.xml:64
+#, no-c-format
msgid "Bidirectional one-to-many"
msgstr "양방향 one-to-many"
-#: index.docbook:66
-msgid "Suppose we start with a simple <literal><one-to-many></literal> association from <literal>Parent</literal> to <literal>Child</literal>."
-msgstr "<literal>Parent</literal>로부터 <literal>Child</literal>로의 간단한 <literal><one-to-many></literal> 연관관계로 시작한다고 가정하자."
+#. Tag: para
+#: example_parentchild.xml:66
+#, no-c-format
+msgid ""
+"Suppose we start with a simple <literal><one-to-many></literal> "
+"association from <literal>Parent</literal> to <literal>Child</literal>."
+msgstr ""
+"<literal>Parent</literal>로부터 <literal>Child</literal>로의 간단한 "
+"<literal><one-to-many></literal> 연관관계로 시작한다고 가정하자."
-#: index.docbook:71
+#. Tag: programlisting
+#: example_parentchild.xml:71
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"children\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"children\">\n"
+" <key column=\"parent_id\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"children\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
-#: index.docbook:73
+#. Tag: para
+#: example_parentchild.xml:73
+#, no-c-format
msgid "If we were to execute the following code"
msgstr "우리가 다음 코드를 실행시켰다면"
-#: index.docbook:77
+#. Tag: programlisting
+#: example_parentchild.xml:77
+#, no-c-format
msgid ""
- "<![CDATA[Parent p = .....;\n"
- "Child c = new Child();\n"
- "p.getChildren().add(c);\n"
- "session.save(c);\n"
- "session.flush();]]>"
+"<![CDATA[Parent p = .....;\n"
+"Child c = new Child();\n"
+"p.getChildren().add(c);\n"
+"session.save(c);\n"
+"session.flush();]]>"
msgstr ""
- "<![CDATA[Parent p = .....;\n"
- "Child c = new Child();\n"
- "p.getChildren().add(c);\n"
- "session.save(c);\n"
- "session.flush();]]>"
-#: index.docbook:79
+#. Tag: para
+#: example_parentchild.xml:79
+#, no-c-format
msgid "Hibernate would issue two SQL statements:"
msgstr "Hibernate는 두 개의 SQL 문장들을 실행할 것이다:"
-#: index.docbook:85
-msgid "an <literal>INSERT</literal> to create the record for <literal>c</literal>"
-msgstr "<literal>c</literal>에 대한 레코드를 생성시키는 <literal>INSERT</literal>"
+#. Tag: para
+#: example_parentchild.xml:85
+#, no-c-format
+msgid ""
+"an <literal>INSERT</literal> to create the record for <literal>c</literal>"
+msgstr ""
+"<literal>c</literal>에 대한 레코드를 생성시키는 <literal>INSERT</literal>"
-#: index.docbook:88
-msgid "an <literal>UPDATE</literal> to create the link from <literal>p</literal> to <literal>c</literal>"
-msgstr "<literal>p</literal>로부터 <literal>c</literal>로의 링크를 생성시키는 <literal>UPDATE</literal>"
+#. Tag: para
+#: example_parentchild.xml:88
+#, no-c-format
+msgid ""
+"an <literal>UPDATE</literal> to create the link from <literal>p</literal> to "
+"<literal>c</literal>"
+msgstr ""
+"<literal>p</literal>로부터 <literal>c</literal>로의 링크를 생성시키는 "
+"<literal>UPDATE</literal>"
-#: index.docbook:95
-msgid "This is not only inefficient, but also violates any <literal>NOT NULL</literal> constraint on the <literal>parent_id</literal> column. We can fix the nullability constraint violation by specifying <literal>not-null=\"true\"</literal> in the collection mapping:"
-msgstr "이것은 비효율적일 뿐만 아니라, 또한 <literal>parent_id</literal> 컬럼 상의 임의의 <literal>NOT NULL</literal> 컨스트레인트에 위배된다. 우리는 콜렉션 매핑에서 <literal>not-null=\"true\"</literal>를 지정함으로써 null 허용 가능 컨스트레인트 위반을 정정할 수 있다:"
+#. Tag: para
+#: example_parentchild.xml:95
+#, no-c-format
+msgid ""
+"This is not only inefficient, but also violates any <literal>NOT NULL</"
+"literal> constraint on the <literal>parent_id</literal> column. We can fix "
+"the nullability constraint violation by specifying <literal>not-null=\"true"
+"\"</literal> in the collection mapping:"
+msgstr ""
+"이것은 비효율적일 뿐만 아니라, 또한 <literal>parent_id</literal> 컬럼 상의 임"
+"의의 <literal>NOT NULL</literal> 컨스트레인트에 위배된다. 우리는 콜렉션 매핑"
+"에서 <literal>not-null=\"true\"</literal>를 지정함으로써 null 허용 가능 컨스"
+"트레인트 위반을 정정할 수 있다:"
-#: index.docbook:101
+#. Tag: programlisting
+#: example_parentchild.xml:101
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"children\">\n"
- " <key column=\"parent_id\" not-null=\"true\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"children\">\n"
+" <key column=\"parent_id\" not-null=\"true\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"children\">\n"
- " <key column=\"parent_id\" not-null=\"true\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
-#: index.docbook:103
+#. Tag: para
+#: example_parentchild.xml:103
+#, no-c-format
msgid "However, this is not the recommended solution."
msgstr "하지만 이것은 권장되는 해결책이 아니다."
-#: index.docbook:106
-msgid "The underlying cause of this behaviour is that the link (the foreign key <literal>parent_id</literal>) from <literal>p</literal> to <literal>c</literal> is not considered part of the state of the <literal>Child</literal> object and is therefore not created in the <literal>INSERT</literal>. So the solution is to make the link part of the <literal>Child</literal> mapping."
-msgstr "이 행위의 기본 원인은 <literal>p</literal>로부터 <literal>c</literal>로의 링크(foreign key <literal>parent_id</literal>)가 <literal>Child</literal> 객체의 상태의 부분으로 간주되지 않고 그러므로 <literal>INSERT</literal>로 생성되지 않는다는 점이다. 따라서 해결책은 <literal>Child</literal> 매핑의 링크 부분을 만드는 것이다."
+#. Tag: para
+#: example_parentchild.xml:106
+#, no-c-format
+msgid ""
+"The underlying cause of this behaviour is that the link (the foreign key "
+"<literal>parent_id</literal>) from <literal>p</literal> to <literal>c</"
+"literal> is not considered part of the state of the <literal>Child</literal> "
+"object and is therefore not created in the <literal>INSERT</literal>. So the "
+"solution is to make the link part of the <literal>Child</literal> mapping."
+msgstr ""
+"이 행위의 기본 원인은 <literal>p</literal>로부터 <literal>c</literal>로의 링"
+"크(foreign key <literal>parent_id</literal>)가 <literal>Child</literal> 객체"
+"의 상태의 부분으로 간주되지 않고 그러므로 <literal>INSERT</literal>로 생성되"
+"지 않는다는 점이다. 따라서 해결책은 <literal>Child</literal> 매핑의 링크 부분"
+"을 만드는 것이다."
-#: index.docbook:113
-msgid "<![CDATA[<many-to-one name=\"parent\" column=\"parent_id\" not-null=\"true\"/>]]>"
-msgstr "<![CDATA[<many-to-one name=\"parent\" column=\"parent_id\" not-null=\"true\"/>]]>"
+#. Tag: programlisting
+#: example_parentchild.xml:113
+#, no-c-format
+msgid ""
+"<![CDATA[<many-to-one name=\"parent\" column=\"parent_id\" not-null=\"true\"/"
+">]]>"
+msgstr ""
-#: index.docbook:115
-msgid "(We also need to add the <literal>parent</literal> property to the <literal>Child</literal> class.)"
-msgstr "(우리는 또한 <literal>parent</literal> 프로퍼티를 <literal>Child</literal> 클래스에 추가시킬 필요가 있다.)"
+#. Tag: para
+#: example_parentchild.xml:115
+#, no-c-format
+msgid ""
+"(We also need to add the <literal>parent</literal> property to the "
+"<literal>Child</literal> class.)"
+msgstr ""
+"(우리는 또한 <literal>parent</literal> 프로퍼티를 <literal>Child</literal> 클"
+"래스에 추가시킬 필요가 있다.)"
-#: index.docbook:119
-msgid "Now that the <literal>Child</literal> entity is managing the state of the link, we tell the collection not to update the link. We use the <literal>inverse</literal> attribute."
-msgstr "이제 <literal>Child</literal> 엔티티가 링크의 상태를 관리한다는 점을 노트하고, 우리는 링크를 업데이트 시키지 말도록 콜렉션에게 통보한다. 우리는 <literal>inverse</literal> 속성을 사용한다."
+#. Tag: para
+#: example_parentchild.xml:119
+#, no-c-format
+msgid ""
+"Now that the <literal>Child</literal> entity is managing the state of the "
+"link, we tell the collection not to update the link. We use the "
+"<literal>inverse</literal> attribute."
+msgstr ""
+"이제 <literal>Child</literal> 엔티티가 링크의 상태를 관리한다는 점을 노트하"
+"고, 우리는 링크를 업데이트 시키지 말도록 콜렉션에게 통보한다. 우리는 "
+"<literal>inverse</literal> 속성을 사용한다."
-#: index.docbook:124
+#. Tag: programlisting
+#: example_parentchild.xml:124
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"children\" inverse=\"true\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"children\" inverse=\"true\">\n"
+" <key column=\"parent_id\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"children\" inverse=\"true\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
-#: index.docbook:126
+#. Tag: para
+#: example_parentchild.xml:126
+#, no-c-format
msgid "The following code would be used to add a new <literal>Child</literal>"
-msgstr "다음 코드는 새로운 <literal>Child</literal>를 추가시키는데 사용될 것이다"
+msgstr ""
+"다음 코드는 새로운 <literal>Child</literal>를 추가시키는데 사용될 것이다"
-#: index.docbook:130
+#. Tag: programlisting
+#: example_parentchild.xml:130
+#, no-c-format
msgid ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = new Child();\n"
- "c.setParent(p);\n"
- "p.getChildren().add(c);\n"
- "session.save(c);\n"
- "session.flush();]]>"
+"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+"Child c = new Child();\n"
+"c.setParent(p);\n"
+"p.getChildren().add(c);\n"
+"session.save(c);\n"
+"session.flush();]]>"
msgstr ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = new Child();\n"
- "c.setParent(p);\n"
- "p.getChildren().add(c);\n"
- "session.save(c);\n"
- "session.flush();]]>"
-#: index.docbook:132
+#. Tag: para
+#: example_parentchild.xml:132
+#, no-c-format
msgid "And now, only one SQL <literal>INSERT</literal> would be issued!"
-msgstr "그리고 이제, 유일하게 한 개의 SQL <literal>INSERT</literal>가 실행될 것이다!"
+msgstr ""
+"그리고 이제, 유일하게 한 개의 SQL <literal>INSERT</literal>가 실행될 것이다!"
-#: index.docbook:136
-msgid "To tighten things up a bit, we could create an <literal>addChild()</literal> method of <literal>Parent</literal>."
-msgstr "약간 거칠게, 우리는 <literal>Parent</literal>의 <literal>addChild()</literal> 메소드를 생성시킬 수 있다."
+#. Tag: para
+#: example_parentchild.xml:136
+#, no-c-format
+msgid ""
+"To tighten things up a bit, we could create an <literal>addChild()</literal> "
+"method of <literal>Parent</literal>."
+msgstr ""
+"약간 거칠게, 우리는 <literal>Parent</literal>의 <literal>addChild()</"
+"literal> 메소드를 생성시킬 수 있다."
-#: index.docbook:141
+#. Tag: programlisting
+#: example_parentchild.xml:141
+#, no-c-format
msgid ""
- "<![CDATA[public void addChild(Child c) {\n"
- " c.setParent(this);\n"
- " children.add(c);\n"
- "}]]>"
+"<![CDATA[public void addChild(Child c) {\n"
+" c.setParent(this);\n"
+" children.add(c);\n"
+"}]]>"
msgstr ""
- "<![CDATA[public void addChild(Child c) {\n"
- " c.setParent(this);\n"
- " children.add(c);\n"
- "}]]>"
-#: index.docbook:143
+#. Tag: para
+#: example_parentchild.xml:143
+#, no-c-format
msgid "Now, the code to add a <literal>Child</literal> looks like"
msgstr "이제, <literal>Child</literal>를 추가하는 코드는 다음과 같다"
-#: index.docbook:147
+#. Tag: programlisting
+#: example_parentchild.xml:147
+#, no-c-format
msgid ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = new Child();\n"
- "p.addChild(c);\n"
- "session.save(c);\n"
- "session.flush();]]>"
+"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+"Child c = new Child();\n"
+"p.addChild(c);\n"
+"session.save(c);\n"
+"session.flush();]]>"
msgstr ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = new Child();\n"
- "p.addChild(c);\n"
- "session.save(c);\n"
- "session.flush();]]>"
-#: index.docbook:152
+#. Tag: title
+#: example_parentchild.xml:152
+#, no-c-format
msgid "Cascading life cycle"
msgstr "케스케이딩 생명주기"
-#: index.docbook:154
-msgid "The explicit call to <literal>save()</literal> is still annoying. We will address this by using cascades."
-msgstr "<literal>save()</literal>에 대한 명시적인 호출은 여전히 성가시다. 우리는 케스케이딩을 사용하여 이것을 얘기할 것이다."
+#. Tag: para
+#: example_parentchild.xml:154
+#, no-c-format
+msgid ""
+"The explicit call to <literal>save()</literal> is still annoying. We will "
+"address this by using cascades."
+msgstr ""
+"<literal>save()</literal>에 대한 명시적인 호출은 여전히 성가시다. 우리는 케스"
+"케이딩을 사용하여 이것을 얘기할 것이다."
-#: index.docbook:159
+#. Tag: programlisting
+#: example_parentchild.xml:159
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all\">\n"
+" <key column=\"parent_id\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
-#: index.docbook:161
+#. Tag: para
+#: example_parentchild.xml:161
+#, no-c-format
msgid "This simplifies the code above to"
msgstr "다음은 위의 코드를 단순화 시킨다"
-#: index.docbook:165
+#. Tag: programlisting
+#: example_parentchild.xml:165
+#, no-c-format
msgid ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = new Child();\n"
- "p.addChild(c);\n"
- "session.flush();]]>"
+"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+"Child c = new Child();\n"
+"p.addChild(c);\n"
+"session.flush();]]>"
msgstr ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = new Child();\n"
- "p.addChild(c);\n"
- "session.flush();]]>"
-#: index.docbook:167
-msgid "Similarly, we don't need to iterate over the children when saving or deleting a <literal>Parent</literal>. The following removes <literal>p</literal> and all its children from the database."
-msgstr "유사하게, 우리는 <literal>Parent</literal>를 저장하거나 삭제할 때 자식들에 대해 반복하는 것을 필요로 하지 않는다. 다음은 데이터베이스로부터 <literal>p</literal>와 모든 그것의 자식들을 제거시킨다."
+#. Tag: para
+#: example_parentchild.xml:167
+#, no-c-format
+msgid ""
+"Similarly, we don't need to iterate over the children when saving or "
+"deleting a <literal>Parent</literal>. The following removes <literal>p</"
+"literal> and all its children from the database."
+msgstr ""
+"유사하게, 우리는 <literal>Parent</literal>를 저장하거나 삭제할 때 자식들에 대"
+"해 반복하는 것을 필요로 하지 않는다. 다음은 데이터베이스로부터 <literal>p</"
+"literal>와 모든 그것의 자식들을 제거시킨다."
-#: index.docbook:172
+#. Tag: programlisting
+#: example_parentchild.xml:172
+#, no-c-format
msgid ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "session.delete(p);\n"
- "session.flush();]]>"
+"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+"session.delete(p);\n"
+"session.flush();]]>"
msgstr ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "session.delete(p);\n"
- "session.flush();]]>"
-#: index.docbook:174
+#. Tag: para
+#: example_parentchild.xml:174
+#, no-c-format
msgid "However, this code"
msgstr "하지만, 다음 코드"
-#: index.docbook:178
+#. Tag: programlisting
+#: example_parentchild.xml:178
+#, no-c-format
msgid ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = (Child) p.getChildren().iterator().next();\n"
- "p.getChildren().remove(c);\n"
- "c.setParent(null);\n"
- "session.flush();]]>"
+"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+"Child c = (Child) p.getChildren().iterator().next();\n"
+"p.getChildren().remove(c);\n"
+"c.setParent(null);\n"
+"session.flush();]]>"
msgstr ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = (Child) p.getChildren().iterator().next();\n"
- "p.getChildren().remove(c);\n"
- "c.setParent(null);\n"
- "session.flush();]]>"
-#: index.docbook:180
-msgid "will not remove <literal>c</literal> from the database; it will ony remove the link to <literal>p</literal> (and cause a <literal>NOT NULL</literal> constraint violation, in this case). You need to explicitly <literal>delete()</literal> the <literal>Child</literal>."
-msgstr "는 데이터베이스로부터 <literal>c</literal>를 제거하지 않을 것이다; 그것은 오직 <literal>p</literal>에 대한 링크만을 제거할 것이다(그리고 이 경우에 <literal>NOT NULL</literal> 컨스트레인트 위반을 일으킬 것이다 ). 당신은 명시적으로 <literal>Child</literal>를 <literal>delete()</literal> 시킬 필요가 있다."
+#. Tag: para
+#: example_parentchild.xml:180
+#, no-c-format
+msgid ""
+"will not remove <literal>c</literal> from the database; it will ony remove "
+"the link to <literal>p</literal> (and cause a <literal>NOT NULL</literal> "
+"constraint violation, in this case). You need to explicitly <literal>delete()"
+"</literal> the <literal>Child</literal>."
+msgstr ""
+"는 데이터베이스로부터 <literal>c</literal>를 제거하지 않을 것이다; 그것은 오"
+"직 <literal>p</literal>에 대한 링크만을 제거할 것이다(그리고 이 경우에 "
+"<literal>NOT NULL</literal> 컨스트레인트 위반을 일으킬 것이다 ). 당신은 명시"
+"적으로 <literal>Child</literal>를 <literal>delete()</literal> 시킬 필요가 있"
+"다."
-#: index.docbook:186
+#. Tag: programlisting
+#: example_parentchild.xml:186
+#, no-c-format
msgid ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = (Child) p.getChildren().iterator().next();\n"
- "p.getChildren().remove(c);\n"
- "session.delete(c);\n"
- "session.flush();]]>"
+"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
+"Child c = (Child) p.getChildren().iterator().next();\n"
+"p.getChildren().remove(c);\n"
+"session.delete(c);\n"
+"session.flush();]]>"
msgstr ""
- "<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
- "Child c = (Child) p.getChildren().iterator().next();\n"
- "p.getChildren().remove(c);\n"
- "session.delete(c);\n"
- "session.flush();]]>"
-#: index.docbook:188
-msgid "Now, in our case, a <literal>Child</literal> can't really exist without its parent. So if we remove a <literal>Child</literal> from the collection, we really do want it to be deleted. For this, we must use <literal>cascade=\"all-delete-orphan\"</literal>."
-msgstr "이제 우리의 경우에 <literal>Child</literal>는 그것의 부모 없이는 진정으로 존재할 수 없다. 따라서 만일 우리가 콜렉션으로부터 하나의 <literal>Child</literal>를 제거할 경우, 우리는 그것이 정말로 삭제되기를 원한다. 이를 위해 우리는 <literal>cascade=\"all-delete-orphan\"</literal>을 사용해야 한다."
+#. Tag: para
+#: example_parentchild.xml:188
+#, no-c-format
+msgid ""
+"Now, in our case, a <literal>Child</literal> can't really exist without its "
+"parent. So if we remove a <literal>Child</literal> from the collection, we "
+"really do want it to be deleted. For this, we must use <literal>cascade="
+"\"all-delete-orphan\"</literal>."
+msgstr ""
+"이제 우리의 경우에 <literal>Child</literal>는 그것의 부모 없이는 진정으로 존"
+"재할 수 없다. 따라서 만일 우리가 콜렉션으로부터 하나의 <literal>Child</"
+"literal>를 제거할 경우, 우리는 그것이 정말로 삭제되기를 원한다. 이를 위해 우"
+"리는 <literal>cascade=\"all-delete-orphan\"</literal>을 사용해야 한다."
-#: index.docbook:194
+#. Tag: programlisting
+#: example_parentchild.xml:194
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all-delete-orphan\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all-delete-orphan"
+"\">\n"
+" <key column=\"parent_id\"/>\n"
+" <one-to-many class=\"Child\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all-delete-orphan\">\n"
- " <key column=\"parent_id\"/>\n"
- " <one-to-many class=\"Child\"/>\n"
- "</set>]]>"
-#: index.docbook:196
-msgid "Note: even though the collection mapping specifies <literal>inverse=\"true\"</literal>, cascades are still processed by iterating the collection elements. So if you require that an object be saved, deleted or updated by cascade, you must add it to the collection. It is not enough to simply call <literal>setParent()</literal>."
-msgstr "노트: 비록 콜렉션 매핑이 <literal>inverse=\"true\"</literal>를 지정할 지라도, 케스케이드들은 여전히 콜렉션 요소들을 반복함으로써 처리된다. 따라서 객체가 케스케이드에 의해 저장되고, 삭제되거나 업데이트 되는 것을 당신이 필요로 할 경우, 당신은 그것을 그 콜렉션에 추가해야 한다. 단순히 <literal>setParent()</literal>를 호출하는 것으로는 충분하지 않다."
+#. Tag: para
+#: example_parentchild.xml:196
+#, no-c-format
+msgid ""
+"Note: even though the collection mapping specifies <literal>inverse=\"true"
+"\"</literal>, cascades are still processed by iterating the collection "
+"elements. So if you require that an object be saved, deleted or updated by "
+"cascade, you must add it to the collection. It is not enough to simply call "
+"<literal>setParent()</literal>."
+msgstr ""
+"노트: 비록 콜렉션 매핑이 <literal>inverse=\"true\"</literal>를 지정할 지라"
+"도, 케스케이드들은 여전히 콜렉션 요소들을 반복함으로써 처리된다. 따라서 객체"
+"가 케스케이드에 의해 저장되고, 삭제되거나 업데이트 되는 것을 당신이 필요로 "
+"할 경우, 당신은 그것을 그 콜렉션에 추가해야 한다. 단순히 <literal>setParent()"
+"</literal>를 호출하는 것으로는 충분하지 않다."
-#: index.docbook:206
+#. Tag: title
+#: example_parentchild.xml:206
+#, no-c-format
msgid "Cascades and <literal>unsaved-value</literal>"
msgstr "케스케이드들과 <literal>unsaved-value</literal>"
-#: index.docbook:208
-msgid "Suppose we loaded up a <literal>Parent</literal> in one <literal>Session</literal>, made some changes in a UI action and wish to persist these changes in a new session by calling <literal>update()</literal>. The <literal>Parent</literal> will contain a collection of childen and, since cascading update is enabled, Hibernate needs to know which children are newly instantiated and which represent existing rows in the database. Lets assume that both <literal>Parent</literal> and <literal>Child</literal> have genenerated identifier properties of type <literal>Long</literal>. Hibernate will use the identifier and version/timestamp property value to determine which of the children are new. (See <xref linkend=\"objectstate-saveorupdate\"/>.) <emphasis>In Hibernate3, it is no longer necessary to specify an <literal>unsaved-value</literal> explicitly.</emphasis>"
-msgstr "우리가 하나의 <literal>Session</literal> 속에 <literal>Parent</literal>를 로드시켰고 UI 액션에서 어떤 변경들을 행했고, <literal>update()</literal>를 호출하여 새로운 세션에서 이들 변경들을 영속화 시키는 것을 원한다고 가정하자. <literal>Parent</literal>는 자식들을 가진 콜렉션을 포함할 것이고, 케스케이딩 업데이트가 사용 가능하기 때문에, Hibernate는 어느 자식들이 새로이 초기화 되는지 그리고 어느 것이 데이터베이스에서 현재 행들을 표현하는지를 알 필요가 있다. <literal>Parent</literal>와 <literal>Child</literal> 모두 <literal>Long</literal> 타입의 식별자 프로퍼티들을 생성시켰다고 가정하자. Hibernate는 어느 자식들이 새로운 것인지를 결정하는데 식별자와 version/timestamp 프로퍼티 값을 사용할 것이다.(<xref linkend=\"objectstate-saveorupdate\"/>을 보라.) <emphasis>Hibernate!
3에서는<literal>unsaved-value</literal>를 더이상 명시적으로 지정할 필요가 없다.</emphasis>"
+#. Tag: para
+#: example_parentchild.xml:208
+#, no-c-format
+msgid ""
+"Suppose we loaded up a <literal>Parent</literal> in one <literal>Session</"
+"literal>, made some changes in a UI action and wish to persist these changes "
+"in a new session by calling <literal>update()</literal>. The "
+"<literal>Parent</literal> will contain a collection of childen and, since "
+"cascading update is enabled, Hibernate needs to know which children are "
+"newly instantiated and which represent existing rows in the database. Lets "
+"assume that both <literal>Parent</literal> and <literal>Child</literal> have "
+"genenerated identifier properties of type <literal>Long</literal>. Hibernate "
+"will use the identifier and version/timestamp property value to determine "
+"which of the children are new. (See <xref linkend=\"objectstate-saveorupdate"
+"\"/>.) <emphasis>In Hibernate3, it is no longer necessary to specify an "
+"<literal>unsaved-value</literal> explicitly.</emphasis>"
+msgstr ""
+"우리가 하나의 <literal>Session</literal> 속에 <literal>Parent</literal>를 로"
+"드시켰고 UI 액션에서 어떤 변경들을 행했고, <literal>update()</literal>를 호출"
+"하여 새로운 세션에서 이들 변경들을 영속화 시키는 것을 원한다고 가정하자. "
+"<literal>Parent</literal>는 자식들을 가진 콜렉션을 포함할 것이고, 케스케이딩 "
+"업데이트가 사용 가능하기 때문에, Hibernate는 어느 자식들이 새로이 초기화 되는"
+"지 그리고 어느 것이 데이터베이스에서 현재 행들을 표현하는지를 알 필요가 있"
+"다. <literal>Parent</literal>와 <literal>Child</literal> 모두 <literal>Long</"
+"literal> 타입의 식별자 프로퍼티들을 생성시켰다고 가정하자. Hibernate는 어느 "
+"자식들이 새로운 것인지를 결정하는데 식별자와 version/timestamp 프로퍼티 값을 "
+"사용할 것이다.(<xref linkend=\"objectstate-saveorupdate\"/>을 보라.) "
+"<emphasis>Hibernate3에서는<literal>unsaved-value</literal>를 더이상 명시적으"
+"로 지정할 필요가 없다.</emphasis>"
-#: index.docbook:220
-msgid "The following code will update <literal>parent</literal> and <literal>child</literal> and insert <literal>newChild</literal>."
-msgstr "다음 코드는 <literal>parent</literal>와 <literal>child</literal>를 업데이트하고 <literal>newChild</literal>를 삽입시킬 것이다."
+#. Tag: para
+#: example_parentchild.xml:220
+#, no-c-format
+msgid ""
+"The following code will update <literal>parent</literal> and <literal>child</"
+"literal> and insert <literal>newChild</literal>."
+msgstr ""
+"다음 코드는 <literal>parent</literal>와 <literal>child</literal>를 업데이트하"
+"고 <literal>newChild</literal>를 삽입시킬 것이다."
-#: index.docbook:225
+#. Tag: programlisting
+#: example_parentchild.xml:225
+#, no-c-format
msgid ""
- "<![CDATA[//parent and child were both loaded in a previous session\n"
- "parent.addChild(child);\n"
- "Child newChild = new Child();\n"
- "parent.addChild(newChild);\n"
- "session.update(parent);\n"
- "session.flush();]]>"
+"<![CDATA[//parent and child were both loaded in a previous session\n"
+"parent.addChild(child);\n"
+"Child newChild = new Child();\n"
+"parent.addChild(newChild);\n"
+"session.update(parent);\n"
+"session.flush();]]>"
msgstr ""
- "<![CDATA[//parent and child were both loaded in a previous session\n"
- "parent.addChild(child);\n"
- "Child newChild = new Child();\n"
- "parent.addChild(newChild);\n"
- "session.update(parent);\n"
- "session.flush();]]>"
-#: index.docbook:227
-msgid "Well, that's all very well for the case of a generated identifier, but what about assigned identifiers and composite identifiers? This is more difficult, since Hibernate can't use the identifier property to distinguish between a newly instantiated object (with an identifier assigned by the user) and an object loaded in a previous session. In this case, Hibernate will either use the timestamp or version property, or will actually query the second-level cache or, worst case, the database, to see if the row exists."
-msgstr "물론 그것은 생성되는 식별자의 경우에는 모두 매우 좋지만, 할당되는 식별자들과 composite 식별자들에 대해서는 어떠한가? 이것은 보다 어렵다. 왜냐하면 Hibernate는 (사용자에 의해 할당된 식별자를 가진) 새로이 초기화 된 객체와 이전 세션에서 로드되었던 객체 사이를 구별짓는데 식별자 프로퍼티를 사용할 수 없기 때문이다. 이 경우에, Hibernate는 timestamp 프로퍼티 또는 version 프로퍼티를 사용하거나 실제로 second-level 캐시를 질의하거나 가장 나쁜 경우에는 행이 존재하는지를 알기 위해 데이터베이스를 질의할 것이다."
+#. Tag: para
+#: example_parentchild.xml:227
+#, no-c-format
+msgid ""
+"Well, that's all very well for the case of a generated identifier, but what "
+"about assigned identifiers and composite identifiers? This is more "
+"difficult, since Hibernate can't use the identifier property to distinguish "
+"between a newly instantiated object (with an identifier assigned by the "
+"user) and an object loaded in a previous session. In this case, Hibernate "
+"will either use the timestamp or version property, or will actually query "
+"the second-level cache or, worst case, the database, to see if the row "
+"exists."
+msgstr ""
+"물론 그것은 생성되는 식별자의 경우에는 모두 매우 좋지만, 할당되는 식별자들과 "
+"composite 식별자들에 대해서는 어떠한가? 이것은 보다 어렵다. 왜냐하면 "
+"Hibernate는 (사용자에 의해 할당된 식별자를 가진) 새로이 초기화 된 객체와 이"
+"전 세션에서 로드되었던 객체 사이를 구별짓는데 식별자 프로퍼티를 사용할 수 없"
+"기 때문이다. 이 경우에, Hibernate는 timestamp 프로퍼티 또는 version 프로퍼티"
+"를 사용하거나 실제로 second-level 캐시를 질의하거나 가장 나쁜 경우에는 행이 "
+"존재하는지를 알기 위해 데이터베이스를 질의할 것이다."
-#: index.docbook:260
+#. Tag: title
+#: example_parentchild.xml:260
+#, no-c-format
msgid "Conclusion"
-msgstr "<title>결론</title>"
+msgstr "결론"
-#: index.docbook:262
-msgid "There is quite a bit to digest here and it might look confusing first time around. However, in practice, it all works out very nicely. Most Hibernate applications use the parent / child pattern in many places."
-msgstr "여기에 숙지할 것이 약간 있고 그것은 처음에는 혼동스러운 것처럼 보일 수 있다. 하지만 실제로 그것은 모두 매우 좋게 동작한다. 대부분의 Hibernate 어플리케이션들은 많은 장소들에서 부모/자식 패턴을 사용한다."
+#. Tag: para
+#: example_parentchild.xml:262
+#, no-c-format
+msgid ""
+"There is quite a bit to digest here and it might look confusing first time "
+"around. However, in practice, it all works out very nicely. Most Hibernate "
+"applications use the parent / child pattern in many places."
+msgstr ""
+"여기에 숙지할 것이 약간 있고 그것은 처음에는 혼동스러운 것처럼 보일 수 있다. "
+"하지만 실제로 그것은 모두 매우 좋게 동작한다. 대부분의 Hibernate 어플리케이션"
+"들은 많은 장소들에서 부모/자식 패턴을 사용한다."
-#: index.docbook:267
-msgid "We mentioned an alternative in the first paragraph. None of the above issues exist in the case of <literal><composite-element></literal> mappings, which have exactly the semantics of a parent / child relationship. Unfortunately, there are two big limitations to composite element classes: composite elements may not own collections, and they should not be the child of any entity other than the unique parent."
-msgstr "우리는 첫 번째 단락에서 대안을 언급했다. 위의 쟁점들 중 어느 것도 정확하게 부모/자식 관계의 의미를 가진, <literal><composite-element></literal> 매핑들의 경우에는 존재하지 않는다. 불행히도, composite 요소 클래스들에 대한 두 개의 커다란 제약들이 존재한다: composite 요소들은 콜렉션들을 소유하지 않고, 그것들은 유일한 부모가 아닌 다른 어떤 엔티티의 자식일 수는 없다."
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: para
+#: example_parentchild.xml:267
+#, no-c-format
+msgid ""
+"We mentioned an alternative in the first paragraph. None of the above issues "
+"exist in the case of <literal><composite-element></literal> mappings, "
+"which have exactly the semantics of a parent / child relationship. "
+"Unfortunately, there are two big limitations to composite element classes: "
+"composite elements may not own collections, and they should not be the child "
+"of any entity other than the unique parent."
+msgstr ""
+"우리는 첫 번째 단락에서 대안을 언급했다. 위의 쟁점들 중 어느 것도 정확하게 부"
+"모/자식 관계의 의미를 가진, <literal><composite-element></literal> 매핑"
+"들의 경우에는 존재하지 않는다. 불행히도, composite 요소 클래스들에 대한 두 개"
+"의 커다란 제약들이 존재한다: composite 요소들은 콜렉션들을 소유하지 않고, 그"
+"것들은 유일한 부모가 아닌 다른 어떤 엔티티의 자식일 수는 없다."
Modified: core/trunk/documentation/manual/translations/ko-KR/content/example_weblog.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/example_weblog.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/example_weblog.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,840 +1,484 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: example_weblog.xml:5
+#, no-c-format
msgid "Example: Weblog Application"
msgstr "예제: Weblog 어플리케이션"
-#: index.docbook:8
+#. Tag: title
+#: example_weblog.xml:8
+#, no-c-format
msgid "Persistent Classes"
msgstr "영속 클래스들"
-#: index.docbook:10
-msgid "The persistent classes represent a weblog, and an item posted in a weblog. They are to be modelled as a standard parent/child relationship, but we will use an ordered bag, instead of a set."
-msgstr "영속 클래스들은 웹로그, 그리고 웹 로그 내에 게시된 항목을 표현한다.그것들은 표준 부모/자식 관계로 모형화 될 것이지만, 우리는 set 대신에 순서지워진 bag를 사용할 것이다."
+#. Tag: para
+#: example_weblog.xml:10
+#, no-c-format
+msgid ""
+"The persistent classes represent a weblog, and an item posted in a weblog. "
+"They are to be modelled as a standard parent/child relationship, but we will "
+"use an ordered bag, instead of a set."
+msgstr ""
+"영속 클래스들은 웹로그, 그리고 웹 로그 내에 게시된 항목을 표현한다.그것들은 "
+"표준 부모/자식 관계로 모형화 될 것이지만, 우리는 set 대신에 순서지워진 bag를 "
+"사용할 것이다."
-#: index.docbook:16
+#. Tag: programlisting
+#: example_weblog.xml:16
+#, no-c-format
msgid ""
- "<![CDATA[package eg;\n"
- "\n"
- "import java.util.List;\n"
- "\n"
- "public class Blog {\n"
- " private Long _id;\n"
- " private String _name;\n"
- " private List _items;\n"
- "\n"
- " public Long getId() {\n"
- " return _id;\n"
- " }\n"
- " public List getItems() {\n"
- " return _items;\n"
- " }\n"
- " public String getName() {\n"
- " return _name;\n"
- " }\n"
- " public void setId(Long long1) {\n"
- " _id = long1;\n"
- " }\n"
- " public void setItems(List list) {\n"
- " _items = list;\n"
- " }\n"
- " public void setName(String string) {\n"
- " _name = string;\n"
- " }\n"
- "}]]>"
+"<![CDATA[package eg;\n"
+"\n"
+"import java.util.List;\n"
+"\n"
+"public class Blog {\n"
+" private Long _id;\n"
+" private String _name;\n"
+" private List _items;\n"
+"\n"
+" public Long getId() {\n"
+" return _id;\n"
+" }\n"
+" public List getItems() {\n"
+" return _items;\n"
+" }\n"
+" public String getName() {\n"
+" return _name;\n"
+" }\n"
+" public void setId(Long long1) {\n"
+" _id = long1;\n"
+" }\n"
+" public void setItems(List list) {\n"
+" _items = list;\n"
+" }\n"
+" public void setName(String string) {\n"
+" _name = string;\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[package eg;\n"
- "\n"
- "import java.util.List;\n"
- "\n"
- "public class Blog {\n"
- " private Long _id;\n"
- " private String _name;\n"
- " private List _items;\n"
- "\n"
- " public Long getId() {\n"
- " return _id;\n"
- " }\n"
- " public List getItems() {\n"
- " return _items;\n"
- " }\n"
- " public String getName() {\n"
- " return _name;\n"
- " }\n"
- " public void setId(Long long1) {\n"
- " _id = long1;\n"
- " }\n"
- " public void setItems(List list) {\n"
- " _items = list;\n"
- " }\n"
- " public void setName(String string) {\n"
- " _name = string;\n"
- " }\n"
- "}]]>"
-#: index.docbook:18
+#. Tag: programlisting
+#: example_weblog.xml:18
+#, no-c-format
msgid ""
- "<![CDATA[package eg;\n"
- "\n"
- "import java.text.DateFormat;\n"
- "import java.util.Calendar;\n"
- "\n"
- "public class BlogItem {\n"
- " private Long _id;\n"
- " private Calendar _datetime;\n"
- " private String _text;\n"
- " private String _title;\n"
- " private Blog _blog;\n"
- "\n"
- " public Blog getBlog() {\n"
- " return _blog;\n"
- " }\n"
- " public Calendar getDatetime() {\n"
- " return _datetime;\n"
- " }\n"
- " public Long getId() {\n"
- " return _id;\n"
- " }\n"
- " public String getText() {\n"
- " return _text;\n"
- " }\n"
- " public String getTitle() {\n"
- " return _title;\n"
- " }\n"
- " public void setBlog(Blog blog) {\n"
- " _blog = blog;\n"
- " }\n"
- " public void setDatetime(Calendar calendar) {\n"
- " _datetime = calendar;\n"
- " }\n"
- " public void setId(Long long1) {\n"
- " _id = long1;\n"
- " }\n"
- " public void setText(String string) {\n"
- " _text = string;\n"
- " }\n"
- " public void setTitle(String string) {\n"
- " _title = string;\n"
- " }\n"
- "}]]>"
+"<![CDATA[package eg;\n"
+"\n"
+"import java.text.DateFormat;\n"
+"import java.util.Calendar;\n"
+"\n"
+"public class BlogItem {\n"
+" private Long _id;\n"
+" private Calendar _datetime;\n"
+" private String _text;\n"
+" private String _title;\n"
+" private Blog _blog;\n"
+"\n"
+" public Blog getBlog() {\n"
+" return _blog;\n"
+" }\n"
+" public Calendar getDatetime() {\n"
+" return _datetime;\n"
+" }\n"
+" public Long getId() {\n"
+" return _id;\n"
+" }\n"
+" public String getText() {\n"
+" return _text;\n"
+" }\n"
+" public String getTitle() {\n"
+" return _title;\n"
+" }\n"
+" public void setBlog(Blog blog) {\n"
+" _blog = blog;\n"
+" }\n"
+" public void setDatetime(Calendar calendar) {\n"
+" _datetime = calendar;\n"
+" }\n"
+" public void setId(Long long1) {\n"
+" _id = long1;\n"
+" }\n"
+" public void setText(String string) {\n"
+" _text = string;\n"
+" }\n"
+" public void setTitle(String string) {\n"
+" _title = string;\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[package eg;\n"
- "\n"
- "import java.text.DateFormat;\n"
- "import java.util.Calendar;\n"
- "\n"
- "public class BlogItem {\n"
- " private Long _id;\n"
- " private Calendar _datetime;\n"
- " private String _text;\n"
- " private String _title;\n"
- " private Blog _blog;\n"
- "\n"
- " public Blog getBlog() {\n"
- " return _blog;\n"
- " }\n"
- " public Calendar getDatetime() {\n"
- " return _datetime;\n"
- " }\n"
- " public Long getId() {\n"
- " return _id;\n"
- " }\n"
- " public String getText() {\n"
- " return _text;\n"
- " }\n"
- " public String getTitle() {\n"
- " return _title;\n"
- " }\n"
- " public void setBlog(Blog blog) {\n"
- " _blog = blog;\n"
- " }\n"
- " public void setDatetime(Calendar calendar) {\n"
- " _datetime = calendar;\n"
- " }\n"
- " public void setId(Long long1) {\n"
- " _id = long1;\n"
- " }\n"
- " public void setText(String string) {\n"
- " _text = string;\n"
- " }\n"
- " public void setTitle(String string) {\n"
- " _title = string;\n"
- " }\n"
- "}]]>"
-#: index.docbook:23
+#. Tag: title
+#: example_weblog.xml:23
+#, no-c-format
msgid "Hibernate Mappings"
msgstr "Hibernate 매핑들"
-#: index.docbook:25
+#. Tag: para
+#: example_weblog.xml:25
+#, no-c-format
msgid "The XML mappings should now be quite straightforward."
msgstr "XML 매핑들은 이제 매우 간단해질 것이다."
-#: index.docbook:29
+#. Tag: programlisting
+#: example_weblog.xml:29
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping package=\"eg\">\n"
- "\n"
- " <class\n"
- " name=\"Blog\"\n"
- " table=\"BLOGS\">\n"
- "\n"
- " <id\n"
- " name=\"id\"\n"
- " column=\"BLOG_ID\">\n"
- "\n"
- " <generator class=\"native\"/>\n"
- "\n"
- " </id>\n"
- "\n"
- " <property\n"
- " name=\"name\"\n"
- " column=\"NAME\"\n"
- " not-null=\"true\"\n"
- " unique=\"true\"/>\n"
- "\n"
- " <bag\n"
- " name=\"items\"\n"
- " inverse=\"true\"\n"
- " order-by=\"DATE_TIME\"\n"
- " cascade=\"all\">\n"
- "\n"
- " <key column=\"BLOG_ID\"/>\n"
- " <one-to-many class=\"BlogItem\"/>\n"
- "\n"
- " </bag>\n"
- "\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<?xml version=\"1.0\"?>\n"
+"<!DOCTYPE hibernate-mapping PUBLIC\n"
+" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+" \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+"\n"
+"<hibernate-mapping package=\"eg\">\n"
+"\n"
+" <class\n"
+" name=\"Blog\"\n"
+" table=\"BLOGS\">\n"
+"\n"
+" <id\n"
+" name=\"id\"\n"
+" column=\"BLOG_ID\">\n"
+"\n"
+" <generator class=\"native\"/>\n"
+"\n"
+" </id>\n"
+"\n"
+" <property\n"
+" name=\"name\"\n"
+" column=\"NAME\"\n"
+" not-null=\"true\"\n"
+" unique=\"true\"/>\n"
+"\n"
+" <bag\n"
+" name=\"items\"\n"
+" inverse=\"true\"\n"
+" order-by=\"DATE_TIME\"\n"
+" cascade=\"all\">\n"
+"\n"
+" <key column=\"BLOG_ID\"/>\n"
+" <one-to-many class=\"BlogItem\"/>\n"
+"\n"
+" </bag>\n"
+"\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping package=\"eg\">\n"
- "\n"
- " <class\n"
- " name=\"Blog\"\n"
- " table=\"BLOGS\">\n"
- "\n"
- " <id\n"
- " name=\"id\"\n"
- " column=\"BLOG_ID\">\n"
- "\n"
- " <generator class=\"native\"/>\n"
- "\n"
- " </id>\n"
- "\n"
- " <property\n"
- " name=\"name\"\n"
- " column=\"NAME\"\n"
- " not-null=\"true\"\n"
- " unique=\"true\"/>\n"
- "\n"
- " <bag\n"
- " name=\"items\"\n"
- " inverse=\"true\"\n"
- " order-by=\"DATE_TIME\"\n"
- " cascade=\"all\">\n"
- "\n"
- " <key column=\"BLOG_ID\"/>\n"
- " <one-to-many class=\"BlogItem\"/>\n"
- "\n"
- " </bag>\n"
- "\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:31
+#. Tag: programlisting
+#: example_weblog.xml:31
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping package=\"eg\">\n"
- "\n"
- " <class\n"
- " name=\"BlogItem\"\n"
- " table=\"BLOG_ITEMS\"\n"
- " dynamic-update=\"true\">\n"
- "\n"
- " <id\n"
- " name=\"id\"\n"
- " column=\"BLOG_ITEM_ID\">\n"
- "\n"
- " <generator class=\"native\"/>\n"
- "\n"
- " </id>\n"
- "\n"
- " <property\n"
- " name=\"title\"\n"
- " column=\"TITLE\"\n"
- " not-null=\"true\"/>\n"
- "\n"
- " <property\n"
- " name=\"text\"\n"
- " column=\"TEXT\"\n"
- " not-null=\"true\"/>\n"
- "\n"
- " <property\n"
- " name=\"datetime\"\n"
- " column=\"DATE_TIME\"\n"
- " not-null=\"true\"/>\n"
- "\n"
- " <many-to-one\n"
- " name=\"blog\"\n"
- " column=\"BLOG_ID\"\n"
- " not-null=\"true\"/>\n"
- "\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<?xml version=\"1.0\"?>\n"
+"<!DOCTYPE hibernate-mapping PUBLIC\n"
+" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+" \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+"\n"
+"<hibernate-mapping package=\"eg\">\n"
+"\n"
+" <class\n"
+" name=\"BlogItem\"\n"
+" table=\"BLOG_ITEMS\"\n"
+" dynamic-update=\"true\">\n"
+"\n"
+" <id\n"
+" name=\"id\"\n"
+" column=\"BLOG_ITEM_ID\">\n"
+"\n"
+" <generator class=\"native\"/>\n"
+"\n"
+" </id>\n"
+"\n"
+" <property\n"
+" name=\"title\"\n"
+" column=\"TITLE\"\n"
+" not-null=\"true\"/>\n"
+"\n"
+" <property\n"
+" name=\"text\"\n"
+" column=\"TEXT\"\n"
+" not-null=\"true\"/>\n"
+"\n"
+" <property\n"
+" name=\"datetime\"\n"
+" column=\"DATE_TIME\"\n"
+" not-null=\"true\"/>\n"
+"\n"
+" <many-to-one\n"
+" name=\"blog\"\n"
+" column=\"BLOG_ID\"\n"
+" not-null=\"true\"/>\n"
+"\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping package=\"eg\">\n"
- "\n"
- " <class\n"
- " name=\"BlogItem\"\n"
- " table=\"BLOG_ITEMS\"\n"
- " dynamic-update=\"true\">\n"
- "\n"
- " <id\n"
- " name=\"id\"\n"
- " column=\"BLOG_ITEM_ID\">\n"
- "\n"
- " <generator class=\"native\"/>\n"
- "\n"
- " </id>\n"
- "\n"
- " <property\n"
- " name=\"title\"\n"
- " column=\"TITLE\"\n"
- " not-null=\"true\"/>\n"
- "\n"
- " <property\n"
- " name=\"text\"\n"
- " column=\"TEXT\"\n"
- " not-null=\"true\"/>\n"
- "\n"
- " <property\n"
- " name=\"datetime\"\n"
- " column=\"DATE_TIME\"\n"
- " not-null=\"true\"/>\n"
- "\n"
- " <many-to-one\n"
- " name=\"blog\"\n"
- " column=\"BLOG_ID\"\n"
- " not-null=\"true\"/>\n"
- "\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:36
+#. Tag: title
+#: example_weblog.xml:36
+#, no-c-format
msgid "Hibernate Code"
msgstr "Hibernate 코드"
-#: index.docbook:38
-msgid "The following class demonstrates some of the kinds of things we can do with these classes, using Hibernate."
-msgstr "다음 클래스는 우리가 Hibernate를 사용하여 이들 클래스들로 행할 수 있는 몇몇 종류의 것들을 설명한다."
-
-#: index.docbook:43
+#. Tag: para
+#: example_weblog.xml:38
+#, no-c-format
msgid ""
- "<![CDATA[package eg;\n"
- "\n"
- "import java.util.ArrayList;\n"
- "import java.util.Calendar;\n"
- "import java.util.Iterator;\n"
- "import java.util.List;\n"
- "\n"
- "import org.hibernate.HibernateException;\n"
- "import org.hibernate.Query;\n"
- "import org.hibernate.Session;\n"
- "import org.hibernate.SessionFactory;\n"
- "import org.hibernate.Transaction;\n"
- "import org.hibernate.cfg.Configuration;\n"
- "import org.hibernate.tool.hbm2ddl.SchemaExport;\n"
- "\n"
- "public class BlogMain {\n"
- " \n"
- " private SessionFactory _sessions;\n"
- " \n"
- " public void configure() throws HibernateException {\n"
- " _sessions = new Configuration()\n"
- " .addClass(Blog.class)\n"
- " .addClass(BlogItem.class)\n"
- " .buildSessionFactory();\n"
- " }\n"
- " \n"
- " public void exportTables() throws HibernateException {\n"
- " Configuration cfg = new Configuration()\n"
- " .addClass(Blog.class)\n"
- " .addClass(BlogItem.class);\n"
- " new SchemaExport(cfg).create(true, true);\n"
- " }\n"
- " \n"
- " public Blog createBlog(String name) throws HibernateException {\n"
- " \n"
- " Blog blog = new Blog();\n"
- " blog.setName(name);\n"
- " blog.setItems( new ArrayList() );\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " session.persist(blog);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return blog;\n"
- " }\n"
- " \n"
- " public BlogItem createBlogItem(Blog blog, String title, String text)\n"
- " throws HibernateException {\n"
- " \n"
- " BlogItem item = new BlogItem();\n"
- " item.setTitle(title);\n"
- " item.setText(text);\n"
- " item.setBlog(blog);\n"
- " item.setDatetime( Calendar.getInstance() );\n"
- " blog.getItems().add(item);\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " session.update(blog);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return item;\n"
- " }\n"
- " \n"
- " public BlogItem createBlogItem(Long blogid, String title, String text)\n"
- " throws HibernateException {\n"
- " \n"
- " BlogItem item = new BlogItem();\n"
- " item.setTitle(title);\n"
- " item.setText(text);\n"
- " item.setDatetime( Calendar.getInstance() );\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " Blog blog = (Blog) session.load(Blog.class, blogid);\n"
- " item.setBlog(blog);\n"
- " blog.getItems().add(item);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return item;\n"
- " }\n"
- " \n"
- " public void updateBlogItem(BlogItem item, String text)\n"
- " throws HibernateException {\n"
- " \n"
- " item.setText(text);\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " session.update(item);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " }\n"
- " \n"
- " public void updateBlogItem(Long itemid, String text)\n"
- " throws HibernateException {\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " BlogItem item = (BlogItem) session.load(BlogItem.class, itemid);\n"
- " item.setText(text);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " }\n"
- " \n"
- " public List listAllBlogNamesAndItemCounts(int max)\n"
- " throws HibernateException {\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " List result = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " Query q = session.createQuery(\n"
- " \"select blog.id, blog.name, count(blogItem) \" +\n"
- " \"from Blog as blog \" +\n"
- " \"left outer join blog.items as blogItem \" +\n"
- " \"group by blog.name, blog.id \" +\n"
- " \"order by max(blogItem.datetime)\"\n"
- " );\n"
- " q.setMaxResults(max);\n"
- " result = q.list();\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return result;\n"
- " }\n"
- " \n"
- " public Blog getBlogAndAllItems(Long blogid)\n"
- " throws HibernateException {\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " Blog blog = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " Query q = session.createQuery(\n"
- " \"from Blog as blog \" +\n"
- " \"left outer join fetch blog.items \" +\n"
- " \"where blog.id = :blogid\"\n"
- " );\n"
- " q.setParameter(\"blogid\", blogid);\n"
- " blog = (Blog) q.uniqueResult();\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return blog;\n"
- " }\n"
- " \n"
- " public List listBlogsAndRecentItems() throws HibernateException {\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " List result = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " Query q = session.createQuery(\n"
- " \"from Blog as blog \" +\n"
- " \"inner join blog.items as blogItem \" +\n"
- " \"where blogItem.datetime > :minDate\"\n"
- " );\n"
- "\n"
- " Calendar cal = Calendar.getInstance();\n"
- " cal.roll(Calendar.MONTH, false);\n"
- " q.setCalendar(\"minDate\", cal);\n"
- " \n"
- " result = q.list();\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return result;\n"
- " }\n"
- "}]]>"
+"The following class demonstrates some of the kinds of things we can do with "
+"these classes, using Hibernate."
msgstr ""
- "<![CDATA[package eg;\n"
- "\n"
- "import java.util.ArrayList;\n"
- "import java.util.Calendar;\n"
- "import java.util.Iterator;\n"
- "import java.util.List;\n"
- "\n"
- "import org.hibernate.HibernateException;\n"
- "import org.hibernate.Query;\n"
- "import org.hibernate.Session;\n"
- "import org.hibernate.SessionFactory;\n"
- "import org.hibernate.Transaction;\n"
- "import org.hibernate.cfg.Configuration;\n"
- "import org.hibernate.tool.hbm2ddl.SchemaExport;\n"
- "\n"
- "public class BlogMain {\n"
- " \n"
- " private SessionFactory _sessions;\n"
- " \n"
- " public void configure() throws HibernateException {\n"
- " _sessions = new Configuration()\n"
- " .addClass(Blog.class)\n"
- " .addClass(BlogItem.class)\n"
- " .buildSessionFactory();\n"
- " }\n"
- " \n"
- " public void exportTables() throws HibernateException {\n"
- " Configuration cfg = new Configuration()\n"
- " .addClass(Blog.class)\n"
- " .addClass(BlogItem.class);\n"
- " new SchemaExport(cfg).create(true, true);\n"
- " }\n"
- " \n"
- " public Blog createBlog(String name) throws HibernateException {\n"
- " \n"
- " Blog blog = new Blog();\n"
- " blog.setName(name);\n"
- " blog.setItems( new ArrayList() );\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " session.persist(blog);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return blog;\n"
- " }\n"
- " \n"
- " public BlogItem createBlogItem(Blog blog, String title, String text)\n"
- " throws HibernateException {\n"
- " \n"
- " BlogItem item = new BlogItem();\n"
- " item.setTitle(title);\n"
- " item.setText(text);\n"
- " item.setBlog(blog);\n"
- " item.setDatetime( Calendar.getInstance() );\n"
- " blog.getItems().add(item);\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " session.update(blog);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return item;\n"
- " }\n"
- " \n"
- " public BlogItem createBlogItem(Long blogid, String title, String text)\n"
- " throws HibernateException {\n"
- " \n"
- " BlogItem item = new BlogItem();\n"
- " item.setTitle(title);\n"
- " item.setText(text);\n"
- " item.setDatetime( Calendar.getInstance() );\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " Blog blog = (Blog) session.load(Blog.class, blogid);\n"
- " item.setBlog(blog);\n"
- " blog.getItems().add(item);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return item;\n"
- " }\n"
- " \n"
- " public void updateBlogItem(BlogItem item, String text)\n"
- " throws HibernateException {\n"
- " \n"
- " item.setText(text);\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " session.update(item);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " }\n"
- " \n"
- " public void updateBlogItem(Long itemid, String text)\n"
- " throws HibernateException {\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " BlogItem item = (BlogItem) session.load(BlogItem.class, itemid);\n"
- " item.setText(text);\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " }\n"
- " \n"
- " public List listAllBlogNamesAndItemCounts(int max)\n"
- " throws HibernateException {\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " List result = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " Query q = session.createQuery(\n"
- " \"select blog.id, blog.name, count(blogItem) \" +\n"
- " \"from Blog as blog \" +\n"
- " \"left outer join blog.items as blogItem \" +\n"
- " \"group by blog.name, blog.id \" +\n"
- " \"order by max(blogItem.datetime)\"\n"
- " );\n"
- " q.setMaxResults(max);\n"
- " result = q.list();\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return result;\n"
- " }\n"
- " \n"
- " public Blog getBlogAndAllItems(Long blogid)\n"
- " throws HibernateException {\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " Blog blog = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " Query q = session.createQuery(\n"
- " \"from Blog as blog \" +\n"
- " \"left outer join fetch blog.items \" +\n"
- " \"where blog.id = :blogid\"\n"
- " );\n"
- " q.setParameter(\"blogid\", blogid);\n"
- " blog = (Blog) q.uniqueResult();\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return blog;\n"
- " }\n"
- " \n"
- " public List listBlogsAndRecentItems() throws HibernateException {\n"
- " \n"
- " Session session = _sessions.openSession();\n"
- " Transaction tx = null;\n"
- " List result = null;\n"
- " try {\n"
- " tx = session.beginTransaction();\n"
- " Query q = session.createQuery(\n"
- " \"from Blog as blog \" +\n"
- " \"inner join blog.items as blogItem \" +\n"
- " \"where blogItem.datetime > :minDate\"\n"
- " );\n"
- "\n"
- " Calendar cal = Calendar.getInstance();\n"
- " cal.roll(Calendar.MONTH, false);\n"
- " q.setCalendar(\"minDate\", cal);\n"
- " \n"
- " result = q.list();\n"
- " tx.commit();\n"
- " }\n"
- " catch (HibernateException he) {\n"
- " if (tx!=null) tx.rollback();\n"
- " throw he;\n"
- " }\n"
- " finally {\n"
- " session.close();\n"
- " }\n"
- " return result;\n"
- " }\n"
- "}]]>"
+"다음 클래스는 우리가 Hibernate를 사용하여 이들 클래스들로 행할 수 있는 몇몇 "
+"종류의 것들을 설명한다."
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: programlisting
+#: example_weblog.xml:43
+#, no-c-format
+msgid ""
+"<![CDATA[package eg;\n"
+"\n"
+"import java.util.ArrayList;\n"
+"import java.util.Calendar;\n"
+"import java.util.Iterator;\n"
+"import java.util.List;\n"
+"\n"
+"import org.hibernate.HibernateException;\n"
+"import org.hibernate.Query;\n"
+"import org.hibernate.Session;\n"
+"import org.hibernate.SessionFactory;\n"
+"import org.hibernate.Transaction;\n"
+"import org.hibernate.cfg.Configuration;\n"
+"import org.hibernate.tool.hbm2ddl.SchemaExport;\n"
+"\n"
+"public class BlogMain {\n"
+" \n"
+" private SessionFactory _sessions;\n"
+" \n"
+" public void configure() throws HibernateException {\n"
+" _sessions = new Configuration()\n"
+" .addClass(Blog.class)\n"
+" .addClass(BlogItem.class)\n"
+" .buildSessionFactory();\n"
+" }\n"
+" \n"
+" public void exportTables() throws HibernateException {\n"
+" Configuration cfg = new Configuration()\n"
+" .addClass(Blog.class)\n"
+" .addClass(BlogItem.class);\n"
+" new SchemaExport(cfg).create(true, true);\n"
+" }\n"
+" \n"
+" public Blog createBlog(String name) throws HibernateException {\n"
+" \n"
+" Blog blog = new Blog();\n"
+" blog.setName(name);\n"
+" blog.setItems( new ArrayList() );\n"
+" \n"
+" Session session = _sessions.openSession();\n"
+" Transaction tx = null;\n"
+" try {\n"
+" tx = session.beginTransaction();\n"
+" session.persist(blog);\n"
+" tx.commit();\n"
+" }\n"
+" catch (HibernateException he) {\n"
+" if (tx!=null) tx.rollback();\n"
+" throw he;\n"
+" }\n"
+" finally {\n"
+" session.close();\n"
+" }\n"
+" return blog;\n"
+" }\n"
+" \n"
+" public BlogItem createBlogItem(Blog blog, String title, String text)\n"
+" throws HibernateException {\n"
+" \n"
+" BlogItem item = new BlogItem();\n"
+" item.setTitle(title);\n"
+" item.setText(text);\n"
+" item.setBlog(blog);\n"
+" item.setDatetime( Calendar.getInstance() );\n"
+" blog.getItems().add(item);\n"
+" \n"
+" Session session = _sessions.openSession();\n"
+" Transaction tx = null;\n"
+" try {\n"
+" tx = session.beginTransaction();\n"
+" session.update(blog);\n"
+" tx.commit();\n"
+" }\n"
+" catch (HibernateException he) {\n"
+" if (tx!=null) tx.rollback();\n"
+" throw he;\n"
+" }\n"
+" finally {\n"
+" session.close();\n"
+" }\n"
+" return item;\n"
+" }\n"
+" \n"
+" public BlogItem createBlogItem(Long blogid, String title, String text)\n"
+" throws HibernateException {\n"
+" \n"
+" BlogItem item = new BlogItem();\n"
+" item.setTitle(title);\n"
+" item.setText(text);\n"
+" item.setDatetime( Calendar.getInstance() );\n"
+" \n"
+" Session session = _sessions.openSession();\n"
+" Transaction tx = null;\n"
+" try {\n"
+" tx = session.beginTransaction();\n"
+" Blog blog = (Blog) session.load(Blog.class, blogid);\n"
+" item.setBlog(blog);\n"
+" blog.getItems().add(item);\n"
+" tx.commit();\n"
+" }\n"
+" catch (HibernateException he) {\n"
+" if (tx!=null) tx.rollback();\n"
+" throw he;\n"
+" }\n"
+" finally {\n"
+" session.close();\n"
+" }\n"
+" return item;\n"
+" }\n"
+" \n"
+" public void updateBlogItem(BlogItem item, String text)\n"
+" throws HibernateException {\n"
+" \n"
+" item.setText(text);\n"
+" \n"
+" Session session = _sessions.openSession();\n"
+" Transaction tx = null;\n"
+" try {\n"
+" tx = session.beginTransaction();\n"
+" session.update(item);\n"
+" tx.commit();\n"
+" }\n"
+" catch (HibernateException he) {\n"
+" if (tx!=null) tx.rollback();\n"
+" throw he;\n"
+" }\n"
+" finally {\n"
+" session.close();\n"
+" }\n"
+" }\n"
+" \n"
+" public void updateBlogItem(Long itemid, String text)\n"
+" throws HibernateException {\n"
+" \n"
+" Session session = _sessions.openSession();\n"
+" Transaction tx = null;\n"
+" try {\n"
+" tx = session.beginTransaction();\n"
+" BlogItem item = (BlogItem) session.load(BlogItem.class, "
+"itemid);\n"
+" item.setText(text);\n"
+" tx.commit();\n"
+" }\n"
+" catch (HibernateException he) {\n"
+" if (tx!=null) tx.rollback();\n"
+" throw he;\n"
+" }\n"
+" finally {\n"
+" session.close();\n"
+" }\n"
+" }\n"
+" \n"
+" public List listAllBlogNamesAndItemCounts(int max)\n"
+" throws HibernateException {\n"
+" \n"
+" Session session = _sessions.openSession();\n"
+" Transaction tx = null;\n"
+" List result = null;\n"
+" try {\n"
+" tx = session.beginTransaction();\n"
+" Query q = session.createQuery(\n"
+" \"select blog.id, blog.name, count(blogItem) \" +\n"
+" \"from Blog as blog \" +\n"
+" \"left outer join blog.items as blogItem \" +\n"
+" \"group by blog.name, blog.id \" +\n"
+" \"order by max(blogItem.datetime)\"\n"
+" );\n"
+" q.setMaxResults(max);\n"
+" result = q.list();\n"
+" tx.commit();\n"
+" }\n"
+" catch (HibernateException he) {\n"
+" if (tx!=null) tx.rollback();\n"
+" throw he;\n"
+" }\n"
+" finally {\n"
+" session.close();\n"
+" }\n"
+" return result;\n"
+" }\n"
+" \n"
+" public Blog getBlogAndAllItems(Long blogid)\n"
+" throws HibernateException {\n"
+" \n"
+" Session session = _sessions.openSession();\n"
+" Transaction tx = null;\n"
+" Blog blog = null;\n"
+" try {\n"
+" tx = session.beginTransaction();\n"
+" Query q = session.createQuery(\n"
+" \"from Blog as blog \" +\n"
+" \"left outer join fetch blog.items \" +\n"
+" \"where blog.id = :blogid\"\n"
+" );\n"
+" q.setParameter(\"blogid\", blogid);\n"
+" blog = (Blog) q.uniqueResult();\n"
+" tx.commit();\n"
+" }\n"
+" catch (HibernateException he) {\n"
+" if (tx!=null) tx.rollback();\n"
+" throw he;\n"
+" }\n"
+" finally {\n"
+" session.close();\n"
+" }\n"
+" return blog;\n"
+" }\n"
+" \n"
+" public List listBlogsAndRecentItems() throws HibernateException {\n"
+" \n"
+" Session session = _sessions.openSession();\n"
+" Transaction tx = null;\n"
+" List result = null;\n"
+" try {\n"
+" tx = session.beginTransaction();\n"
+" Query q = session.createQuery(\n"
+" \"from Blog as blog \" +\n"
+" \"inner join blog.items as blogItem \" +\n"
+" \"where blogItem.datetime > :minDate\"\n"
+" );\n"
+"\n"
+" Calendar cal = Calendar.getInstance();\n"
+" cal.roll(Calendar.MONTH, false);\n"
+" q.setCalendar(\"minDate\", cal);\n"
+" \n"
+" result = q.list();\n"
+" tx.commit();\n"
+" }\n"
+" catch (HibernateException he) {\n"
+" if (tx!=null) tx.rollback();\n"
+" throw he;\n"
+" }\n"
+" finally {\n"
+" session.close();\n"
+" }\n"
+" return result;\n"
+" }\n"
+"}]]>"
+msgstr ""
Modified: core/trunk/documentation/manual/translations/ko-KR/content/filters.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/filters.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/filters.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,194 +1,294 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: filters.xml:5
+#, no-c-format
msgid "Filtering data"
msgstr "데이터 필터링하기"
-#: index.docbook:7
-msgid "Hibernate3 provides an innovative new approach to handling data with \"visibility\" rules. A <emphasis>Hibernate filter</emphasis> is a global, named, parameterized filter that may be enabled or disabled for a particular Hibernate session."
-msgstr "Hibernate3은 혁신적인 \"가시성(visibility)\" 규칙들로서 데이터를 처리하는 새로운 접근법을 제공한다. <emphasis>Hibernate 필터</emphasis>는 특정 Hibernate 세션에 대해 이용 가능하게 되거나 이용 불가능하게 될 수도 있는 전역, 명명된 파라미터화 된 필터이다."
+#. Tag: para
+#: filters.xml:7
+#, no-c-format
+msgid ""
+"Hibernate3 provides an innovative new approach to handling data with "
+"\"visibility\" rules. A <emphasis>Hibernate filter</emphasis> is a global, "
+"named, parameterized filter that may be enabled or disabled for a particular "
+"Hibernate session."
+msgstr ""
+"Hibernate3은 혁신적인 \"가시성(visibility)\" 규칙들로서 데이터를 처리하는 새"
+"로운 접근법을 제공한다. <emphasis>Hibernate 필터</emphasis>는 특정 Hibernate "
+"세션에 대해 이용 가능하게 되거나 이용 불가능하게 될 수도 있는 전역, 명명된 파"
+"라미터화 된 필터이다."
-#: index.docbook:14
+#. Tag: title
+#: filters.xml:14
+#, no-c-format
msgid "Hibernate filters"
msgstr "Hibernate 필터들"
-#: index.docbook:16
-msgid "Hibernate3 adds the ability to pre-define filter criteria and attach those filters at both a class and a collection level. A filter criteria is the ability to define a restriction clause very similiar to the existing \"where\" attribute available on the class and various collection elements. Except these filter conditions can be parameterized. The application can then make the decision at runtime whether given filters should be enabled and what their parameter values should be. Filters can be used like database views, but parameterized inside the application."
-msgstr "Hibernate3은 필터 기준(criteria)을 미리 정의하고 클래스 레벨과 콜렉션 레벨 양자에서 그들 필터들을 첨부할 능력을 추가시킨다. 필터 기준(criteria)은 클래스 요소와 다양한 콜렉션 요소들에 대해 이용 가능한 기존의 \"where\" 속성과 매우 유사한 하나의 제한 절을 정의하는 능력이다. 이것들을 제외하면 필터 조건들은 파라미터화 될 수 있다. 그때 어플리케이션은 주어진 필터들이 이용 가능한지 여부 그리고 그들 파라미터 값들이 무엇이어야 하는지를 실행 시에 결정할 수 있다. 필터들은 데이터베이스 뷰들 처럼 사용될 수 있지만, 어플리케이션 내부에 파라미터화 된다."
+#. Tag: para
+#: filters.xml:16
+#, no-c-format
+msgid ""
+"Hibernate3 adds the ability to pre-define filter criteria and attach those "
+"filters at both a class and a collection level. A filter criteria is the "
+"ability to define a restriction clause very similiar to the existing \"where"
+"\" attribute available on the class and various collection elements. Except "
+"these filter conditions can be parameterized. The application can then make "
+"the decision at runtime whether given filters should be enabled and what "
+"their parameter values should be. Filters can be used like database views, "
+"but parameterized inside the application."
+msgstr ""
+"Hibernate3은 필터 기준(criteria)을 미리 정의하고 클래스 레벨과 콜렉션 레벨 양"
+"자에서 그들 필터들을 첨부할 능력을 추가시킨다. 필터 기준(criteria)은 클래스 "
+"요소와 다양한 콜렉션 요소들에 대해 이용 가능한 기존의 \"where\" 속성과 매우 "
+"유사한 하나의 제한 절을 정의하는 능력이다. 이것들을 제외하면 필터 조건들은 파"
+"라미터화 될 수 있다. 그때 어플리케이션은 주어진 필터들이 이용 가능한지 여부 "
+"그리고 그들 파라미터 값들이 무엇이어야 하는지를 실행 시에 결정할 수 있다. 필"
+"터들은 데이터베이스 뷰들 처럼 사용될 수 있지만, 어플리케이션 내부에 파라미터"
+"화 된다."
-#: index.docbook:26
-msgid "In order to use filters, they must first be defined and then attached to the appropriate mapping elements. To define a filter, use the <literal><filter-def/></literal> element within a <literal><hibernate-mapping/></literal> element:"
-msgstr "필터들을 사용하기 위해서, 그것들은 먼저 정의되고 나서 적절한 매핑 요소들에 첨가되어야 한다. 필터를 정의하기 위해, <literal><hibernate-mapping/></literal> 요소 내부에 <literal><filter-def/></literal> 요소를 사용하라:"
+#. Tag: para
+#: filters.xml:26
+#, no-c-format
+msgid ""
+"In order to use filters, they must first be defined and then attached to the "
+"appropriate mapping elements. To define a filter, use the <literal><"
+"filter-def/></literal> element within a <literal><hibernate-mapping/"
+"></literal> element:"
+msgstr ""
+"필터들을 사용하기 위해서, 그것들은 먼저 정의되고 나서 적절한 매핑 요소들에 첨"
+"가되어야 한다. 필터를 정의하기 위해, <literal><hibernate-mapping/></"
+"literal> 요소 내부에 <literal><filter-def/></literal> 요소를 사용하라:"
-#: index.docbook:32
+#. Tag: programlisting
+#: filters.xml:32
+#, no-c-format
msgid ""
- "<![CDATA[<filter-def name=\"myFilter\">\n"
- " <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
- "</filter-def>]]>"
+"<![CDATA[<filter-def name=\"myFilter\">\n"
+" <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
+"</filter-def>]]>"
msgstr ""
- "<![CDATA[<filter-def name=\"myFilter\">\n"
- " <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
- "</filter-def>]]>"
-#: index.docbook:34
+#. Tag: para
+#: filters.xml:34
+#, no-c-format
msgid "Then, this filter can be attached to a class:"
msgstr "그때 이 필터는 클래스에 첨가될 수 있다:"
-#: index.docbook:38
+#. Tag: programlisting
+#: filters.xml:38
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"myClass\" ...>\n"
- " ...\n"
- " <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"myClass\" ...>\n"
+" ...\n"
+" <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN"
+"\"/>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"myClass\" ...>\n"
- " ...\n"
- " <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN\"/>\n"
- "</class>]]>"
-#: index.docbook:40
+#. Tag: para
+#: filters.xml:40
+#, no-c-format
msgid "or, to a collection:"
msgstr "또는 콜렉션에 첨가될 수 있다:"
-#: index.docbook:44
+#. Tag: programlisting
+#: filters.xml:44
+#, no-c-format
msgid ""
- "<![CDATA[<set ...>\n"
- " <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN\"/>\n"
- "</set>]]>"
+"<![CDATA[<set ...>\n"
+" <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN"
+"\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set ...>\n"
- " <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN\"/>\n"
- "</set>]]>"
-#: index.docbook:46
+#. Tag: para
+#: filters.xml:46
+#, no-c-format
msgid "or, even to both (or multiples of each) at the same time."
msgstr "또는 동시에 양자에(또는 각각의 여러번) 첨가될 수 있다."
-#: index.docbook:50
-msgid "The methods on <literal>Session</literal> are: <literal>enableFilter(String filterName)</literal>, <literal>getEnabledFilter(String filterName)</literal>, and <literal>disableFilter(String filterName)</literal>. By default, filters are <emphasis>not</emphasis> enabled for a given session; they must be explcitly enabled through use of the <literal>Session.enabledFilter()</literal> method, which returns an instance of the <literal>Filter</literal> interface. Using the simple filter defined above, this would look like:"
-msgstr "<literal>Session</literal> 상의 메소드들은 다음과 같다: <literal>enableFilter(String filterName)</literal>, <literal>getEnabledFilter(String filterName)</literal>, <literal>disableFilter(String filterName)</literal>. 디폴트로, 필터들은 주어진 세션에 대해 이용 가능하지 <emphasis>않다</emphasis>; 그것들은 <literal>Session.enabledFilter()</literal> 메소드의 사용을 통해 명시적으로 이용 가능하게 되어야 한다. <literal>Session.enabledFilter()</literal>는 <literal>Filter</literal> 인터페이스의 인스턴스를 반환한다. 위에 정의된 간단한 필터를 사용하면, 이것은 다음과 같을 것이다:"
+#. Tag: para
+#: filters.xml:50
+#, no-c-format
+msgid ""
+"The methods on <literal>Session</literal> are: <literal>enableFilter(String "
+"filterName)</literal>, <literal>getEnabledFilter(String filterName)</"
+"literal>, and <literal>disableFilter(String filterName)</literal>. By "
+"default, filters are <emphasis>not</emphasis> enabled for a given session; "
+"they must be explcitly enabled through use of the <literal>Session."
+"enabledFilter()</literal> method, which returns an instance of the "
+"<literal>Filter</literal> interface. Using the simple filter defined above, "
+"this would look like:"
+msgstr ""
+"<literal>Session</literal> 상의 메소드들은 다음과 같다: <literal>enableFilter"
+"(String filterName)</literal>, <literal>getEnabledFilter(String filterName)</"
+"literal>, <literal>disableFilter(String filterName)</literal>. 디폴트로, 필터"
+"들은 주어진 세션에 대해 이용 가능하지 <emphasis>않다</emphasis>; 그것들은 "
+"<literal>Session.enabledFilter()</literal> 메소드의 사용을 통해 명시적으로 이"
+"용 가능하게 되어야 한다. <literal>Session.enabledFilter()</literal>는 "
+"<literal>Filter</literal> 인터페이스의 인스턴스를 반환한다. 위에 정의된 간단"
+"한 필터를 사용하면, 이것은 다음과 같을 것이다:"
-#: index.docbook:59
-msgid "<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam\", \"some-value\");]]>"
-msgstr "<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam\", \"some-value\");]]>"
+#. Tag: programlisting
+#: filters.xml:59
+#, no-c-format
+msgid ""
+"<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam\", "
+"\"some-value\");]]>"
+msgstr ""
-#: index.docbook:61
-msgid "Note that methods on the org.hibernate.Filter interface do allow the method-chaining common to much of Hibernate."
-msgstr "org.hibernate.Filter 인터페이스 상의 메소드들은 Hibernate에 매우 공통된 method-chaining을 허용한다는 점을 노트하라."
+#. Tag: para
+#: filters.xml:61
+#, no-c-format
+msgid ""
+"Note that methods on the org.hibernate.Filter interface do allow the method-"
+"chaining common to much of Hibernate."
+msgstr ""
+"org.hibernate.Filter 인터페이스 상의 메소드들은 Hibernate에 매우 공통된 "
+"method-chaining을 허용한다는 점을 노트하라."
-#: index.docbook:65
-msgid "A full example, using temporal data with an effective record date pattern:"
+#. Tag: para
+#: filters.xml:65
+#, no-c-format
+msgid ""
+"A full example, using temporal data with an effective record date pattern:"
msgstr "유효한 기록 날짜 패턴을 가진 시간 데이터를 사용하는 전체 예제 :"
-#: index.docbook:69
+#. Tag: programlisting
+#: filters.xml:69
+#, no-c-format
msgid ""
- "<![CDATA[<filter-def name=\"effectiveDate\">\n"
- " <filter-param name=\"asOfDate\" type=\"date\"/>\n"
- "</filter-def>\n"
- "\n"
- "<class name=\"Employee\" ...>\n"
- "...\n"
- " <many-to-one name=\"department\" column=\"dept_id\" class=\"Department\"/>\n"
- " <property name=\"effectiveStartDate\" type=\"date\" column=\"eff_start_dt\"/>\n"
- " <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt\"/>\n"
- "...\n"
- " <!--\n"
- " Note that this assumes non-terminal records have an eff_end_dt set to\n"
- " a max db date for simplicity-sake\n"
- " -->\n"
- " <filter name=\"effectiveDate\"\n"
- " condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Department\" ...>\n"
- "...\n"
- " <set name=\"employees\" lazy=\"true\">\n"
- " <key column=\"dept_id\"/>\n"
- " <one-to-many class=\"Employee\"/>\n"
- " <filter name=\"effectiveDate\"\n"
- " condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/>\n"
- " </set>\n"
- "</class>]]>"
+"<![CDATA[<filter-def name=\"effectiveDate\">\n"
+" <filter-param name=\"asOfDate\" type=\"date\"/>\n"
+"</filter-def>\n"
+"\n"
+"<class name=\"Employee\" ...>\n"
+"...\n"
+" <many-to-one name=\"department\" column=\"dept_id\" class=\"Department\"/"
+">\n"
+" <property name=\"effectiveStartDate\" type=\"date\" column=\"eff_start_dt"
+"\"/>\n"
+" <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt\"/"
+">\n"
+"...\n"
+" <!--\n"
+" Note that this assumes non-terminal records have an eff_end_dt set "
+"to\n"
+" a max db date for simplicity-sake\n"
+" -->\n"
+" <filter name=\"effectiveDate\"\n"
+" condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/>\n"
+"</class>\n"
+"\n"
+"<class name=\"Department\" ...>\n"
+"...\n"
+" <set name=\"employees\" lazy=\"true\">\n"
+" <key column=\"dept_id\"/>\n"
+" <one-to-many class=\"Employee\"/>\n"
+" <filter name=\"effectiveDate\"\n"
+" condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/"
+">\n"
+" </set>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<filter-def name=\"effectiveDate\">\n"
- " <filter-param name=\"asOfDate\" type=\"date\"/>\n"
- "</filter-def>\n"
- "\n"
- "<class name=\"Employee\" ...>\n"
- "...\n"
- " <many-to-one name=\"department\" column=\"dept_id\" class=\"Department\"/>\n"
- " <property name=\"effectiveStartDate\" type=\"date\" column=\"eff_start_dt\"/>\n"
- " <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt\"/>\n"
- "...\n"
- " <!--\n"
- " Note that this assumes non-terminal records have an eff_end_dt set to\n"
- " a max db date for simplicity-sake\n"
- " -->\n"
- " <filter name=\"effectiveDate\"\n"
- " condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"Department\" ...>\n"
- "...\n"
- " <set name=\"employees\" lazy=\"true\">\n"
- " <key column=\"dept_id\"/>\n"
- " <one-to-many class=\"Employee\"/>\n"
- " <filter name=\"effectiveDate\"\n"
- " condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/>\n"
- " </set>\n"
- "</class>]]>"
-#: index.docbook:71
-msgid "Then, in order to ensure that you always get back currently effective records, simply enable the filter on the session prior to retrieving employee data:"
-msgstr "그때 당신이 현재 유효한 레코드들을 항상 얻는 것을 확실히 하기 위해, employee 데이터를 검색하기 전에 세션 상에 필터를 간단하게 이용 가능하게 하라:"
+#. Tag: para
+#: filters.xml:71
+#, no-c-format
+msgid ""
+"Then, in order to ensure that you always get back currently effective "
+"records, simply enable the filter on the session prior to retrieving "
+"employee data:"
+msgstr ""
+"그때 당신이 현재 유효한 레코드들을 항상 얻는 것을 확실히 하기 위해, employee "
+"데이터를 검색하기 전에 세션 상에 필터를 간단하게 이용 가능하게 하라:"
-#: index.docbook:76
+#. Tag: programlisting
+#: filters.xml:76
+#, no-c-format
msgid ""
- "<![CDATA[Session session = ...;\n"
- "session.enabledFilter(\"effectiveDate\").setParameter(\"asOfDate\", new Date());\n"
- "List results = session.createQuery(\"from Employee as e where e.salary > :targetSalary\")\n"
- " .setLong(\"targetSalary\", new Long(1000000))\n"
- " .list();\n"
- "]]>"
+"<![CDATA[Session session = ...;\n"
+"session.enabledFilter(\"effectiveDate\").setParameter(\"asOfDate\", new Date"
+"());\n"
+"List results = session.createQuery(\"from Employee as e where e.salary > :"
+"targetSalary\")\n"
+" .setLong(\"targetSalary\", new Long(1000000))\n"
+" .list();\n"
+"]]>"
msgstr ""
- "<![CDATA[Session session = ...;\n"
- "session.enabledFilter(\"effectiveDate\").setParameter(\"asOfDate\", new Date());\n"
- "List results = session.createQuery(\"from Employee as e where e.salary > :targetSalary\")\n"
- " .setLong(\"targetSalary\", new Long(1000000))\n"
- " .list();\n"
- "]]>"
-#: index.docbook:78
-msgid "In the HQL above, even though we only explicitly mentioned a salary constraint on the results, because of the enabled filter the query will return only currently active employees who have a salary greater than a million dollars."
-msgstr "위의 HQL 에서, 심지어 비록 우리가 결과들에 대한 봉급 컨스트레인트를 명시적으로 언급만 했을지라도, 이용 가능한 필터 때문에 그 질의는 봉급이 백만달러 이상인 현재 채용중인 직원들만을 반환할 것이다."
+#. Tag: para
+#: filters.xml:78
+#, no-c-format
+msgid ""
+"In the HQL above, even though we only explicitly mentioned a salary "
+"constraint on the results, because of the enabled filter the query will "
+"return only currently active employees who have a salary greater than a "
+"million dollars."
+msgstr ""
+"위의 HQL 에서, 심지어 비록 우리가 결과들에 대한 봉급 컨스트레인트를 명시적으"
+"로 언급만 했을지라도, 이용 가능한 필터 때문에 그 질의는 봉급이 백만달러 이상"
+"인 현재 채용중인 직원들만을 반환할 것이다."
-#: index.docbook:84
-msgid "Note: if you plan on using filters with outer joining (either through HQL or load fetching) be careful of the direction of the condition expression. Its safest to set this up for left outer joining; in general, place the parameter first followed by the column name(s) after the operator."
-msgstr "노트: 만일 당신이 outer 조인에 대해 필터들을 사용할 계획이라면 (HQL이든 로드 페칭이든) 조건 표현식의 방향을 주의하라. 이것을 left outer join으로 설정하는 것이 가장 안전하다; 일반적으로 오퍼레이터 뒤에 있는 컬럼 이름(들)이 뒤따르는 첫번째에 파라미터를 위치지워라."
+#. Tag: para
+#: filters.xml:84
+#, no-c-format
+msgid ""
+"Note: if you plan on using filters with outer joining (either through HQL or "
+"load fetching) be careful of the direction of the condition expression. Its "
+"safest to set this up for left outer joining; in general, place the "
+"parameter first followed by the column name(s) after the operator."
+msgstr ""
+"노트: 만일 당신이 outer 조인에 대해 필터들을 사용할 계획이라면 (HQL이든 로드 "
+"페칭이든) 조건 표현식의 방향을 주의하라. 이것을 left outer join으로 설정하는 "
+"것이 가장 안전하다; 일반적으로 오퍼레이터 뒤에 있는 컬럼 이름(들)이 뒤따르는 "
+"첫번째에 파라미터를 위치지워라."
-#: index.docbook:91
-msgid "After being defined a filter might be attached to multiple entities and/or collections each with its own condition. That can be tedious when the conditions are the same each time. Thus <literal><filter-def/></literal> allows defining a default condition, either as an attribute or CDATA:"
-msgstr "필터가 정의된 후에는 그것 자신의 조건에 대해 각각 여러 개의 엔티티들 그리고/또는 콜렉션들에 첨가될 수 있다. 조건들이 매번 동일할 때 그것은 지루할 수 있다. 따라서 <literal><filter-def/></literal>은 attribute 든 CDATA 든 어느것이든 디폴트 조건을 정의하는 것을 허용해준다:"
+#. Tag: para
+#: filters.xml:91
+#, no-c-format
+msgid ""
+"After being defined a filter might be attached to multiple entities and/or "
+"collections each with its own condition. That can be tedious when the "
+"conditions are the same each time. Thus <literal><filter-def/></"
+"literal> allows defining a default condition, either as an attribute or "
+"CDATA:"
+msgstr ""
+"필터가 정의된 후에는 그것 자신의 조건에 대해 각각 여러 개의 엔티티들 그리고/"
+"또는 콜렉션들에 첨가될 수 있다. 조건들이 매번 동일할 때 그것은 지루할 수 있"
+"다. 따라서 <literal><filter-def/></literal>은 attribute 든 CDATA 든 어"
+"느것이든 디폴트 조건을 정의하는 것을 허용해준다:"
-#: index.docbook:98
+#. Tag: programlisting
+#: filters.xml:98
+#, no-c-format
msgid ""
- "<![CDATA[<filter-def name=\"myFilter\" condition=\"abc > xyz\">...</filter-def>\n"
- "<filter-def name=\"myOtherFilter\">abc=xyz</filter-def>]]>"
+"<![CDATA[<filter-def name=\"myFilter\" condition=\"abc > xyz\">...</filter-"
+"def>\n"
+"<filter-def name=\"myOtherFilter\">abc=xyz</filter-def>]]>"
msgstr ""
- "<![CDATA[<filter-def name=\"myFilter\" condition=\"abc > xyz\">...</filter-def>\n"
- "<filter-def name=\"myOtherFilter\">abc=xyz</filter-def>]]>"
-#: index.docbook:100
-msgid "This default condition will then be used whenever the filter is attached to something without specifying a condition. Note that this means you can give a specific condition as part of the attachment of the filter which overrides the default condition in that particular case."
-msgstr "그때 이 디폴트 조건은 그 필터가 어떤 조건을 지정함이 없이 어떤 것에 첨가될때마다 사용될 수 있다. 이것은 당신이 특정한 경우에 디폴트 조건을 오버라이드 시키는 필터의 첨가 부분으로서 특정 조건을 부여할 수 있음을 의미함을 노트하라."
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: para
+#: filters.xml:100
+#, no-c-format
+msgid ""
+"This default condition will then be used whenever the filter is attached to "
+"something without specifying a condition. Note that this means you can give "
+"a specific condition as part of the attachment of the filter which overrides "
+"the default condition in that particular case."
+msgstr ""
+"그때 이 디폴트 조건은 그 필터가 어떤 조건을 지정함이 없이 어떤 것에 첨가될때"
+"마다 사용될 수 있다. 이것은 당신이 특정한 경우에 디폴트 조건을 오버라이드 시"
+"키는 필터의 첨가 부분으로서 특정 조건을 부여할 수 있음을 의미함을 노트하라."
Modified: core/trunk/documentation/manual/translations/ko-KR/content/inheritance_mapping.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/inheritance_mapping.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/inheritance_mapping.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,642 +1,829 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: inheritance_mapping.xml:5
+#, no-c-format
msgid "Inheritance Mapping"
msgstr "상속 매핑"
-#: index.docbook:8
+#. Tag: title
+#: inheritance_mapping.xml:8
+#, no-c-format
msgid "The Three Strategies"
msgstr "세 가지 방도들"
-#: index.docbook:10
+#. Tag: para
+#: inheritance_mapping.xml:10
+#, no-c-format
msgid "Hibernate supports the three basic inheritance mapping strategies:"
msgstr "Hibernate는 세 가지 기본적인 상속 매핑 방도들을 지원한다:"
-#: index.docbook:16
+#. Tag: para
+#: inheritance_mapping.xml:16
+#, no-c-format
msgid "table per class hierarchy"
msgstr "table per class hierarchy"
-#: index.docbook:21
+#. Tag: para
+#: inheritance_mapping.xml:21
+#, fuzzy, no-c-format
msgid "<para>table per subclass</para>"
-msgstr "<para>table per subclass</para>"
+msgstr "table per subclass"
-#: index.docbook:26
+#. Tag: para
+#: inheritance_mapping.xml:26
+#, no-c-format
msgid "table per concrete class"
msgstr "table per concrete class"
-#: index.docbook:32
-msgid "In addition, Hibernate supports a fourth, slightly different kind of polymorphism:"
+#. Tag: para
+#: inheritance_mapping.xml:32
+#, no-c-format
+msgid ""
+"In addition, Hibernate supports a fourth, slightly different kind of "
+"polymorphism:"
msgstr "게다가 Hibernate는 네 번째의 약간 다른 종류의 다형성을 지원한다:"
-#: index.docbook:39
+#. Tag: para
+#: inheritance_mapping.xml:39
+#, no-c-format
msgid "implicit polymorphism"
msgstr "implicit polymorphism(함축적인 다형성)"
-#: index.docbook:45
-msgid "It is possible to use different mapping strategies for different branches of the same inheritance hierarchy, and then make use of implicit polymorphism to achieve polymorphism across the whole hierarchy. However, Hibernate does not support mixing <literal><subclass></literal>, and <literal><joined-subclass></literal> and <literal><union-subclass></literal> mappings under the same root <literal><class></literal> element. It is possible to mix together the table per hierarchy and table per subclass strategies, under the the same <literal><class></literal> element, by combining the <literal><subclass></literal> and <literal><join></literal> elements (see below)."
-msgstr "동일한 상속 계층구조의 다른 가지들에 대해 다른 매핑 방도들을 사용하는 것이 가능하고, 그런 다음 전체 계층 구조를 가로질러 다형성을 성취하는데 함축적인 다형성을 사용하라. 하지만 Hibernate는 동일한 루트 <literal><class></literal> 요소 하에서 <literal><subclass></literal> 그리고 <literal><joined-subclass></literal> 그리고 <literal><union-subclass></literal> 매핑들을 혼합하는 것을 지원하지 않는다. 동일한 <literal><class></literal> 요소 하에서 <literal><subclass></literal> 요소와 <literal><join></literal> 요소를 결합시킴으로써 table per hierarchy 방도와 table per subclass 방도를 함께 혼합시키는 것이 가능하다(아래를 보라)."
+#. Tag: para
+#: inheritance_mapping.xml:45
+#, no-c-format
+msgid ""
+"It is possible to use different mapping strategies for different branches of "
+"the same inheritance hierarchy, and then make use of implicit polymorphism "
+"to achieve polymorphism across the whole hierarchy. However, Hibernate does "
+"not support mixing <literal><subclass></literal>, and <literal><"
+"joined-subclass></literal> and <literal><union-subclass></literal> "
+"mappings under the same root <literal><class></literal> element. It is "
+"possible to mix together the table per hierarchy and table per subclass "
+"strategies, under the the same <literal><class></literal> element, by "
+"combining the <literal><subclass></literal> and <literal><join></"
+"literal> elements (see below)."
+msgstr ""
+"동일한 상속 계층구조의 다른 가지들에 대해 다른 매핑 방도들을 사용하는 것이 가"
+"능하고, 그런 다음 전체 계층 구조를 가로질러 다형성을 성취하는데 함축적인 다형"
+"성을 사용하라. 하지만 Hibernate는 동일한 루트 <literal><class></"
+"literal> 요소 하에서 <literal><subclass></literal> 그리고 <literal><"
+"joined-subclass></literal> 그리고 <literal><union-subclass></"
+"literal> 매핑들을 혼합하는 것을 지원하지 않는다. 동일한 <literal><"
+"class></literal> 요소 하에서 <literal><subclass></literal> 요소와 "
+"<literal><join></literal> 요소를 결합시킴으로써 table per hierarchy 방"
+"도와 table per subclass 방도를 함께 혼합시키는 것이 가능하다(아래를 보라)."
-#: index.docbook:59
-msgid "It is possible to define <literal>subclass</literal>, <literal>union-subclass</literal>, and <literal>joined-subclass</literal> mappings in separate mapping documents, directly beneath <literal>hibernate-mapping</literal>. This allows you to extend a class hierachy just by adding a new mapping file. You must specify an <literal>extends</literal> attribute in the subclass mapping, naming a previously mapped superclass. Note: Previously this feature made the ordering of the mapping documents important. Since Hibernate3, the ordering of mapping files does not matter when using the extends keyword. The ordering inside a single mapping file still needs to be defined as superclasses before subclasses."
-msgstr "별도의 매핑 문서 내에, <literal>hibernate-mapping</literal> 바로 밑에 <literal>subclass</literal>, <literal>union-subclass</literal>, 그리고 <literal>joined-subclass</literal> 매핑들을 정의하는 것이 가능하다. 이것은 단지 하나의 새로운 매핑 파일을 추가시켜서 하나의 class 계층구조를 확장하는 것을 당신에게 허용해준다. 당신은 subclass 매핑 내에 앞서 매핑된 슈퍼클래스를 명명하여 <literal>extends</literal> 속성을 지정해야 한다. 노트 : 명백하게 이 특징은 매핑 문서들의 순서를 중요하게끔 만들었다. Hibernate3 이후로, 매핑 파일들의 순서는 extends 키워드를 사용할 때 상관없다. 하나의 매핑 파일 내의 순서는 여전히 서브클래스들에 앞서 슈퍼클래스들을 정의하는데 여전히 필요하다."
+#. Tag: para
+#: inheritance_mapping.xml:59
+#, no-c-format
+msgid ""
+"It is possible to define <literal>subclass</literal>, <literal>union-"
+"subclass</literal>, and <literal>joined-subclass</literal> mappings in "
+"separate mapping documents, directly beneath <literal>hibernate-mapping</"
+"literal>. This allows you to extend a class hierachy just by adding a new "
+"mapping file. You must specify an <literal>extends</literal> attribute in "
+"the subclass mapping, naming a previously mapped superclass. Note: "
+"Previously this feature made the ordering of the mapping documents "
+"important. Since Hibernate3, the ordering of mapping files does not matter "
+"when using the extends keyword. The ordering inside a single mapping file "
+"still needs to be defined as superclasses before subclasses."
+msgstr ""
+"별도의 매핑 문서 내에, <literal>hibernate-mapping</literal> 바로 밑에 "
+"<literal>subclass</literal>, <literal>union-subclass</literal>, 그리고 "
+"<literal>joined-subclass</literal> 매핑들을 정의하는 것이 가능하다. 이것은 단"
+"지 하나의 새로운 매핑 파일을 추가시켜서 하나의 class 계층구조를 확장하는 것"
+"을 당신에게 허용해준다. 당신은 subclass 매핑 내에 앞서 매핑된 슈퍼클래스를 명"
+"명하여 <literal>extends</literal> 속성을 지정해야 한다. 노트 : 명백하게 이 특"
+"징은 매핑 문서들의 순서를 중요하게끔 만들었다. Hibernate3 이후로, 매핑 파일들"
+"의 순서는 extends 키워드를 사용할 때 상관없다. 하나의 매핑 파일 내의 순서는 "
+"여전히 서브클래스들에 앞서 슈퍼클래스들을 정의하는데 여전히 필요하다."
-#: index.docbook:70
+#. Tag: programlisting
+#: inheritance_mapping.xml:70
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- " <hibernate-mapping>\n"
- " <subclass name=\"DomesticCat\" extends=\"Cat\" discriminator-value=\"D\">\n"
- " <property name=\"name\" type=\"string\"/>\n"
- " </subclass>\n"
- " </hibernate-mapping>]]>"
+"<![CDATA[\n"
+" <hibernate-mapping>\n"
+" <subclass name=\"DomesticCat\" extends=\"Cat\" discriminator-value=\"D"
+"\">\n"
+" <property name=\"name\" type=\"string\"/>\n"
+" </subclass>\n"
+" </hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[\n"
- " <hibernate-mapping>\n"
- " <subclass name=\"DomesticCat\" extends=\"Cat\" discriminator-value=\"D\">\n"
- " <property name=\"name\" type=\"string\"/>\n"
- " </subclass>\n"
- " </hibernate-mapping>]]>"
-#: index.docbook:74
+#. Tag: title
+#: inheritance_mapping.xml:74
+#, no-c-format
msgid "Table per class hierarchy"
msgstr "Table per class hierarchy"
-#: index.docbook:76
-msgid "Suppose we have an interface <literal>Payment</literal>, with implementors <literal>CreditCardPayment</literal>, <literal>CashPayment</literal>, <literal>ChequePayment</literal>. The table per hierarchy mapping would look like:"
-msgstr "우리가 <literal>CreditCardPayment</literal>, <literal>CashPayment</literal>, <literal>ChequePayment</literal> 구현자들을 가진 하나의 인터페이스 <literal>Payment</literal>를 갖고 있다고 가정하자. table per hierarchy 매핑은 다음과 같을 것이다:"
+#. Tag: para
+#: inheritance_mapping.xml:76
+#, no-c-format
+msgid ""
+"Suppose we have an interface <literal>Payment</literal>, with implementors "
+"<literal>CreditCardPayment</literal>, <literal>CashPayment</literal>, "
+"<literal>ChequePayment</literal>. The table per hierarchy mapping would look "
+"like:"
+msgstr ""
+"우리가 <literal>CreditCardPayment</literal>, <literal>CashPayment</literal>, "
+"<literal>ChequePayment</literal> 구현자들을 가진 하나의 인터페이스 "
+"<literal>Payment</literal>를 갖고 있다고 가정하자. table per hierarchy 매핑"
+"은 다음과 같을 것이다:"
-#: index.docbook:83
+#. Tag: programlisting
+#: inheritance_mapping.xml:83
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </subclass>\n"
- " <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
- " ...\n"
- " </subclass>\n"
- " <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
- " ...\n"
- " </subclass>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+" <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
+" <property name=\"amount\" column=\"AMOUNT\"/>\n"
+" ...\n"
+" <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
+" <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+" ...\n"
+" </subclass>\n"
+" <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
+" ...\n"
+" </subclass>\n"
+" <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
+" ...\n"
+" </subclass>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </subclass>\n"
- " <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
- " ...\n"
- " </subclass>\n"
- " <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
- " ...\n"
- " </subclass>\n"
- "</class>]]>"
-#: index.docbook:85
-msgid "Exactly one table is required. There is one big limitation of this mapping strategy: columns declared by the subclasses, such as <literal>CCTYPE</literal>, may not have <literal>NOT NULL</literal> constraints."
-msgstr "정확히 하나의 테이블이 필요하다. 이 매핑 방도에는 다음의 하나의 큰 제약이 존재한다: <literal>CCTYPE</literal>과 같이, 서브 클래스들에 의해 선언된 컬럼들은 <literal>NOT NULL</literal> 컨스트레인트들을 가질 수 없다."
+#. Tag: para
+#: inheritance_mapping.xml:85
+#, no-c-format
+msgid ""
+"Exactly one table is required. There is one big limitation of this mapping "
+"strategy: columns declared by the subclasses, such as <literal>CCTYPE</"
+"literal>, may not have <literal>NOT NULL</literal> constraints."
+msgstr ""
+"정확히 하나의 테이블이 필요하다. 이 매핑 방도에는 다음의 하나의 큰 제약이 존"
+"재한다: <literal>CCTYPE</literal>과 같이, 서브 클래스들에 의해 선언된 컬럼들"
+"은 <literal>NOT NULL</literal> 컨스트레인트들을 가질 수 없다."
-#: index.docbook:94
+#. Tag: title
+#: inheritance_mapping.xml:94
+#, no-c-format
msgid "Table per subclass"
msgstr "Table per subclass"
-#: index.docbook:96
+#. Tag: para
+#: inheritance_mapping.xml:96
+#, no-c-format
msgid "A table per subclass mapping would look like:"
msgstr "table per subclass 매핑은 다음과 같을 것이다:"
-#: index.docbook:100
+#. Tag: programlisting
+#: inheritance_mapping.xml:100
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <joined-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- " <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- " <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+" <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"amount\" column=\"AMOUNT\"/>\n"
+" ...\n"
+" <joined-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
+" <key column=\"PAYMENT_ID\"/>\n"
+" <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+" ...\n"
+" </joined-subclass>\n"
+" <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+" <key column=\"PAYMENT_ID\"/>\n"
+" ...\n"
+" </joined-subclass>\n"
+" <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+" <key column=\"PAYMENT_ID\"/>\n"
+" ...\n"
+" </joined-subclass>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <joined-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- " <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- " <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- "</class>]]>"
-#: index.docbook:102
-msgid "Four tables are required. The three subclass tables have primary key associations to the superclass table (so the relational model is actually a one-to-one association)."
-msgstr "네 개의 테이블들이 필요하다. 세 개의 서브클래스 테이블들은 슈퍼클래스 테이블에 대한 프라이머리 키 연관들을 갖는다 (따라서 그 관계형 모형은 실제로 one-to-one 연관이다)."
+#. Tag: para
+#: inheritance_mapping.xml:102
+#, no-c-format
+msgid ""
+"Four tables are required. The three subclass tables have primary key "
+"associations to the superclass table (so the relational model is actually a "
+"one-to-one association)."
+msgstr ""
+"네 개의 테이블들이 필요하다. 세 개의 서브클래스 테이블들은 슈퍼클래스 테이블"
+"에 대한 프라이머리 키 연관들을 갖는다 (따라서 그 관계형 모형은 실제로 one-to-"
+"one 연관이다)."
-#: index.docbook:111
+#. Tag: title
+#: inheritance_mapping.xml:111
+#, no-c-format
msgid "Table per subclass, using a discriminator"
msgstr "discriminator를 사용하는, table per subclass"
-#: index.docbook:113
-msgid "Note that Hibernate's implementation of table per subclass requires no discriminator column. Other object/relational mappers use a different implementation of table per subclass which requires a type discriminator column in the superclass table. The approach taken by Hibernate is much more difficult to implement but arguably more correct from a relational point of view. If you would like to use a discriminator column with the table per subclass strategy, you may combine the use of <literal><subclass></literal> and <literal><join></literal>, as follow:"
-msgstr "table-per-subclass에 대한 Hibernate의 구현은 discriminator(판별자) 컬럼을 필요로 하지 않음을 노트하라. 다른 객체/관계형 매핑기들은 슈퍼클래스 테이블 속에 하나의 타입 판별자 컬럼을 필요로 하는 table-per-subclass에 대한 다른 구현을 사용한다. Hibernate에 의해 채택된 접근법은 구현하기가 훨씬 더 어렵지만 관계형 관점에서는 아마 틀림없이 보다 더 정확하다. 만일 당신이 table per subclass 방도에 대해 하나의 판별자 컬럼을 사용하고 싶다면, 당신은 다음과 같이 <literal><subclass></literal>와 <literal><join></literal>의 사용을 결합시킬 수도 있다:"
+#. Tag: para
+#: inheritance_mapping.xml:113
+#, no-c-format
+msgid ""
+"Note that Hibernate's implementation of table per subclass requires no "
+"discriminator column. Other object/relational mappers use a different "
+"implementation of table per subclass which requires a type discriminator "
+"column in the superclass table. The approach taken by Hibernate is much more "
+"difficult to implement but arguably more correct from a relational point of "
+"view. If you would like to use a discriminator column with the table per "
+"subclass strategy, you may combine the use of <literal><subclass></"
+"literal> and <literal><join></literal>, as follow:"
+msgstr ""
+"table-per-subclass에 대한 Hibernate의 구현은 discriminator(판별자) 컬럼을 필"
+"요로 하지 않음을 노트하라. 다른 객체/관계형 매핑기들은 슈퍼클래스 테이블 속"
+"에 하나의 타입 판별자 컬럼을 필요로 하는 table-per-subclass에 대한 다른 구현"
+"을 사용한다. Hibernate에 의해 채택된 접근법은 구현하기가 훨씬 더 어렵지만 관"
+"계형 관점에서는 아마 틀림없이 보다 더 정확하다. 만일 당신이 table per "
+"subclass 방도에 대해 하나의 판별자 컬럼을 사용하고 싶다면, 당신은 다음과 같"
+"이 <literal><subclass></literal>와 <literal><join></literal>의 사"
+"용을 결합시킬 수도 있다:"
-#: index.docbook:125
+#. Tag: programlisting
+#: inheritance_mapping.xml:125
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
- " <join table=\"CREDIT_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </join>\n"
- " </subclass>\n"
- " <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
- " <join table=\"CASH_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " ...\n"
- " </join>\n"
- " </subclass>\n"
- " <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
- " <join table=\"CHEQUE_PAYMENT\" fetch=\"select\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " ...\n"
- " </join>\n"
- " </subclass>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+" <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
+" <property name=\"amount\" column=\"AMOUNT\"/>\n"
+" ...\n"
+" <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
+" <join table=\"CREDIT_PAYMENT\">\n"
+" <key column=\"PAYMENT_ID\"/>\n"
+" <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+" ...\n"
+" </join>\n"
+" </subclass>\n"
+" <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
+" <join table=\"CASH_PAYMENT\">\n"
+" <key column=\"PAYMENT_ID\"/>\n"
+" ...\n"
+" </join>\n"
+" </subclass>\n"
+" <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
+" <join table=\"CHEQUE_PAYMENT\" fetch=\"select\">\n"
+" <key column=\"PAYMENT_ID\"/>\n"
+" ...\n"
+" </join>\n"
+" </subclass>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
- " <join table=\"CREDIT_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </join>\n"
- " </subclass>\n"
- " <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
- " <join table=\"CASH_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " ...\n"
- " </join>\n"
- " </subclass>\n"
- " <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
- " <join table=\"CHEQUE_PAYMENT\" fetch=\"select\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " ...\n"
- " </join>\n"
- " </subclass>\n"
- "</class>]]>"
-#: index.docbook:127
-msgid "The optional <literal>fetch=\"select\"</literal> declaration tells Hibernate not to fetch the <literal>ChequePayment</literal> subclass data using an outer join when querying the superclass."
-msgstr "선택적인 <literal>fetch=\"select\"</literal> 선언은 슈퍼클래스를 질의할 때 outer join을 사용하여 <literal>ChequePayment</literal> 서브클래스 데이터를 페치시키지 않도록 Hibernate에게 알려준다."
+#. Tag: para
+#: inheritance_mapping.xml:127
+#, no-c-format
+msgid ""
+"The optional <literal>fetch=\"select\"</literal> declaration tells Hibernate "
+"not to fetch the <literal>ChequePayment</literal> subclass data using an "
+"outer join when querying the superclass."
+msgstr ""
+"선택적인 <literal>fetch=\"select\"</literal> 선언은 슈퍼클래스를 질의할 때 "
+"outer join을 사용하여 <literal>ChequePayment</literal> 서브클래스 데이터를 페"
+"치시키지 않도록 Hibernate에게 알려준다."
-#: index.docbook:136
+#. Tag: title
+#: inheritance_mapping.xml:136
+#, no-c-format
msgid "Mixing table per class hierarchy with table per subclass"
msgstr "table per class hierarchy와 table per subclass를 혼합하기"
-#: index.docbook:138
-msgid "You may even mix the table per hierarchy and table per subclass strategies using this approach:"
-msgstr "당신은 이 접근법을 사용하여 table per hierarchy 방도와 table per subclass 방도를 혼합시킬 수 있다:"
+#. Tag: para
+#: inheritance_mapping.xml:138
+#, no-c-format
+msgid ""
+"You may even mix the table per hierarchy and table per subclass strategies "
+"using this approach:"
+msgstr ""
+"당신은 이 접근법을 사용하여 table per hierarchy 방도와 table per subclass 방"
+"도를 혼합시킬 수 있다:"
-#: index.docbook:143
+#. Tag: programlisting
+#: inheritance_mapping.xml:143
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
- " <join table=\"CREDIT_PAYMENT\">\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </join>\n"
- " </subclass>\n"
- " <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
- " ...\n"
- " </subclass>\n"
- " <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
- " ...\n"
- " </subclass>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
+" <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
+" <property name=\"amount\" column=\"AMOUNT\"/>\n"
+" ...\n"
+" <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
+" <join table=\"CREDIT_PAYMENT\">\n"
+" <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+" ...\n"
+" </join>\n"
+" </subclass>\n"
+" <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
+" ...\n"
+" </subclass>\n"
+" <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
+" ...\n"
+" </subclass>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Payment\" table=\"PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"PAYMENT_TYPE\" type=\"string\"/>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <subclass name=\"CreditCardPayment\" discriminator-value=\"CREDIT\">\n"
- " <join table=\"CREDIT_PAYMENT\">\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </join>\n"
- " </subclass>\n"
- " <subclass name=\"CashPayment\" discriminator-value=\"CASH\">\n"
- " ...\n"
- " </subclass>\n"
- " <subclass name=\"ChequePayment\" discriminator-value=\"CHEQUE\">\n"
- " ...\n"
- " </subclass>\n"
- "</class>]]>"
-#: index.docbook:145
-msgid "For any of these mapping strategies, a polymorphic association to the root <literal>Payment</literal> class is mapped using <literal><many-to-one></literal>."
-msgstr "이들 매핑 방도들 중 어떤 것에 대해, 루트 <literal>Payment</literal> 클래스에 대한 하나의 다형성 연관은 <literal><many-to-one></literal>을 사용하여 매핑된다."
+#. Tag: para
+#: inheritance_mapping.xml:145
+#, no-c-format
+msgid ""
+"For any of these mapping strategies, a polymorphic association to the root "
+"<literal>Payment</literal> class is mapped using <literal><many-to-one>"
+"</literal>."
+msgstr ""
+"이들 매핑 방도들 중 어떤 것에 대해, 루트 <literal>Payment</literal> 클래스에 "
+"대한 하나의 다형성 연관은 <literal><many-to-one></literal>을 사용하여 "
+"매핑된다."
-#: index.docbook:151
-msgid "<![CDATA[<many-to-one name=\"payment\" column=\"PAYMENT_ID\" class=\"Payment\"/>]]>"
-msgstr "<![CDATA[<many-to-one name=\"payment\" column=\"PAYMENT_ID\" class=\"Payment\"/>]]>"
+#. Tag: programlisting
+#: inheritance_mapping.xml:151
+#, no-c-format
+msgid ""
+"<![CDATA[<many-to-one name=\"payment\" column=\"PAYMENT_ID\" class=\"Payment"
+"\"/>]]>"
+msgstr ""
-#: index.docbook:156
+#. Tag: title
+#: inheritance_mapping.xml:156
+#, no-c-format
msgid "Table per concrete class"
msgstr "Table per concrete class"
-#: index.docbook:158
-msgid "There are two ways we could go about mapping the table per concrete class strategy. The first is to use <literal><union-subclass></literal>."
-msgstr "우리가 table per concrete class 방도 매핑에 대해 취할 수 있는 두 가지 방법들이 존재한다. 첫 번째는 <literal><union-subclass></literal>를 사용하는 것이다."
+#. Tag: para
+#: inheritance_mapping.xml:158
+#, no-c-format
+msgid ""
+"There are two ways we could go about mapping the table per concrete class "
+"strategy. The first is to use <literal><union-subclass></literal>."
+msgstr ""
+"우리가 table per concrete class 방도 매핑에 대해 취할 수 있는 두 가지 방법들"
+"이 존재한다. 첫 번째는 <literal><union-subclass></literal>를 사용하는 "
+"것이다."
-#: index.docbook:163
+#. Tag: programlisting
+#: inheritance_mapping.xml:163
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Payment\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <union-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </union-subclass>\n"
- " <union-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
- " ...\n"
- " </union-subclass>\n"
- " <union-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
- " ...\n"
- " </union-subclass>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Payment\">\n"
+" <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+" <property name=\"amount\" column=\"AMOUNT\"/>\n"
+" ...\n"
+" <union-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
+" <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
+" ...\n"
+" </union-subclass>\n"
+" <union-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+" ...\n"
+" </union-subclass>\n"
+" <union-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+" ...\n"
+" </union-subclass>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Payment\">\n"
- " <id name=\"id\" type=\"long\" column=\"PAYMENT_ID\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"AMOUNT\"/>\n"
- " ...\n"
- " <union-subclass name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
- " <property name=\"creditCardType\" column=\"CCTYPE\"/>\n"
- " ...\n"
- " </union-subclass>\n"
- " <union-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
- " ...\n"
- " </union-subclass>\n"
- " <union-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
- " ...\n"
- " </union-subclass>\n"
- "</class>]]>"
-#: index.docbook:165
-msgid "Three tables are involved for the subclasses. Each table defines columns for all properties of the class, including inherited properties."
-msgstr "세 개의 테이블들이 슈퍼클래스들에 대해 수반된다. 각각의 테이블은 상속된 프로퍼티들을 포함하여, 그 클래스의 모든 프로퍼티들에 대한 컬럼들을 정의한다."
+#. Tag: para
+#: inheritance_mapping.xml:165
+#, no-c-format
+msgid ""
+"Three tables are involved for the subclasses. Each table defines columns for "
+"all properties of the class, including inherited properties."
+msgstr ""
+"세 개의 테이블들이 슈퍼클래스들에 대해 수반된다. 각각의 테이블은 상속된 프로"
+"퍼티들을 포함하여, 그 클래스의 모든 프로퍼티들에 대한 컬럼들을 정의한다."
-#: index.docbook:170
-msgid "The limitation of this approach is that if a property is mapped on the superclass, the column name must be the same on all subclass tables. (We might relax this in a future release of Hibernate.) The identity generator strategy is not allowed in union subclass inheritance, indeed the primary key seed has to be shared accross all unioned subclasses of a hierarchy."
-msgstr "이 접근법의 제약은 만일 하나의 프로퍼티가 슈퍼클래스 상으로 매핑될 경우, 그 컬럼 이름이 모든 서브클래스 테이블들 상에서 같아야 한다는 점이다.(장래의 Hibernate 배포본에서 우리는 이 제약을 풀 수도 있다.) identity 생성기 방도는 union 서브클래스 상속에서 허용되지 않으며, 진정 프라이머리 키 시드는 하나의 계층구조의 모든 unioned 서브클래스들을 가로질러 공유되어야 한다."
+#. Tag: para
+#: inheritance_mapping.xml:170
+#, no-c-format
+msgid ""
+"The limitation of this approach is that if a property is mapped on the "
+"superclass, the column name must be the same on all subclass tables. (We "
+"might relax this in a future release of Hibernate.) The identity generator "
+"strategy is not allowed in union subclass inheritance, indeed the primary "
+"key seed has to be shared accross all unioned subclasses of a hierarchy."
+msgstr ""
+"이 접근법의 제약은 만일 하나의 프로퍼티가 슈퍼클래스 상으로 매핑될 경우, 그 "
+"컬럼 이름이 모든 서브클래스 테이블들 상에서 같아야 한다는 점이다.(장래의 "
+"Hibernate 배포본에서 우리는 이 제약을 풀 수도 있다.) identity 생성기 방도는 "
+"union 서브클래스 상속에서 허용되지 않으며, 진정 프라이머리 키 시드는 하나의 "
+"계층구조의 모든 unioned 서브클래스들을 가로질러 공유되어야 한다."
-#: index.docbook:179
-msgid "If your superclass is abstract, map it with <literal>abstract=\"true\"</literal>. Of course, if it is not abstract, an additional table (defaults to <literal>PAYMENT</literal> in the example above) is needed to hold instances of the superclass."
-msgstr "만일 당신의 슈퍼클래스가 abstract일 경우에, 그것을 <literal>abstract=\"true\"</literal>로 매핑하라. 물론 만일 그것이 abstract가 아닐 경우, 추가적인 테이블(위의 예제에서는 디폴트로 <literal>PAYMENT</literal>)이 슈퍼클래스의 인스턴스들을 소유하는데 필요하다."
+#. Tag: para
+#: inheritance_mapping.xml:179
+#, no-c-format
+msgid ""
+"If your superclass is abstract, map it with <literal>abstract=\"true\"</"
+"literal>. Of course, if it is not abstract, an additional table (defaults to "
+"<literal>PAYMENT</literal> in the example above) is needed to hold instances "
+"of the superclass."
+msgstr ""
+"만일 당신의 슈퍼클래스가 abstract일 경우에, 그것을 <literal>abstract=\"true"
+"\"</literal>로 매핑하라. 물론 만일 그것이 abstract가 아닐 경우, 추가적인 테이"
+"블(위의 예제에서는 디폴트로 <literal>PAYMENT</literal>)이 슈퍼클래스의 인스턴"
+"스들을 소유하는데 필요하다."
-#: index.docbook:189
+#. Tag: title
+#: inheritance_mapping.xml:189
+#, no-c-format
msgid "Table per concrete class, using implicit polymorphism"
msgstr "함축적인 다형성을 사용하는, table per concrete class"
-#: index.docbook:191
+#. Tag: para
+#: inheritance_mapping.xml:191
+#, no-c-format
msgid "An alternative approach is to make use of implicit polymorphism:"
msgstr "대안적인 접근법은 함축적인 다형성을 사용하는 것이다:"
-#: index.docbook:195
+#. Tag: programlisting
+#: inheritance_mapping.xml:195
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
- " ...\n"
- "</class>\n"
- "\n"
- "<class name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"CASH_PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
- " ...\n"
- "</class>\n"
- "\n"
- "<class name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"CHEQUE_PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
- " ...\n"
- "</class>]]>"
+"<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
+" <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
+" ...\n"
+"</class>\n"
+"\n"
+"<class name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+" <id name=\"id\" type=\"long\" column=\"CASH_PAYMENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
+" ...\n"
+"</class>\n"
+"\n"
+"<class name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+" <id name=\"id\" type=\"long\" column=\"CHEQUE_PAYMENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
+" ...\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
- " ...\n"
- "</class>\n"
- "\n"
- "<class name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"CASH_PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
- " ...\n"
- "</class>\n"
- "\n"
- "<class name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"CHEQUE_PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
- " ...\n"
- "</class>]]>"
-#: index.docbook:197
-msgid "Notice that nowhere do we mention the <literal>Payment</literal> interface explicitly. Also notice that properties of <literal>Payment</literal> are mapped in each of the subclasses. If you want to avoid duplication, consider using XML entities (e.g. <literal>[ <!ENTITY allproperties SYSTEM \"allproperties.xml\"> ]</literal> in the <literal>DOCTYPE</literal> declartion and <literal>&allproperties;</literal> in the mapping)."
-msgstr "어느 곳에서도 우리가 명시적으로 <literal>Payment</literal> 인터페이스를 언급하지 않음을 주목하라. 또한 <literal>Payment</literal>의 프로퍼티들이 서브클래스들 각각에서 매핑된다는 점을 주목하라. 만일 당신이 중복을 피하고자 원한다면, XML 엔티티들을 사용하는 것을 고려하라(예를 들어 매핑에서 <literal>DOCTYPE</literal> 선언과 <literal>&allproperties;</literal>에서 <literal>[ <!ENTITY allproperties SYSTEM \"allproperties.xml\"> ]</literal>)."
+#. Tag: para
+#: inheritance_mapping.xml:197
+#, no-c-format
+msgid ""
+"Notice that nowhere do we mention the <literal>Payment</literal> interface "
+"explicitly. Also notice that properties of <literal>Payment</literal> are "
+"mapped in each of the subclasses. If you want to avoid duplication, consider "
+"using XML entities (e.g. <literal>[ <!ENTITY allproperties SYSTEM "
+"\"allproperties.xml\"> ]</literal> in the <literal>DOCTYPE</literal> "
+"declartion and <literal>&allproperties;</literal> in the mapping)."
+msgstr ""
+"어느 곳에서도 우리가 명시적으로 <literal>Payment</literal> 인터페이스를 언급"
+"하지 않음을 주목하라. 또한 <literal>Payment</literal>의 프로퍼티들이 서브클래"
+"스들 각각에서 매핑된다는 점을 주목하라. 만일 당신이 중복을 피하고자 원한다"
+"면, XML 엔티티들을 사용하는 것을 고려하라(예를 들어 매핑에서 "
+"<literal>DOCTYPE</literal> 선언과 <literal>&allproperties;</literal>에서 "
+"<literal>[ <!ENTITY allproperties SYSTEM \"allproperties.xml\"> ]</"
+"literal>)."
-#: index.docbook:207
-msgid "The disadvantage of this approach is that Hibernate does not generate SQL <literal>UNION</literal>s when performing polymorphic queries."
-msgstr "이 접근법의 단점은 다형성 질의들을 수행할 때 Hibernate가 생성된 SQl <literal>UNION</literal>들을 생성시키는 않는다는 점이다."
+#. Tag: para
+#: inheritance_mapping.xml:207
+#, no-c-format
+msgid ""
+"The disadvantage of this approach is that Hibernate does not generate SQL "
+"<literal>UNION</literal>s when performing polymorphic queries."
+msgstr ""
+"이 접근법의 단점은 다형성 질의들을 수행할 때 Hibernate가 생성된 SQl "
+"<literal>UNION</literal>들을 생성시키는 않는다는 점이다."
-#: index.docbook:212
-msgid "For this mapping strategy, a polymorphic association to <literal>Payment</literal> is usually mapped using <literal><any></literal>."
-msgstr "이 매핑 방도의 경우, <literal>Payment</literal>에 대한 하나의 다형성 연관은 대개 <literal><any></literal>를 사용하여 매핑된다."
+#. Tag: para
+#: inheritance_mapping.xml:212
+#, no-c-format
+msgid ""
+"For this mapping strategy, a polymorphic association to <literal>Payment</"
+"literal> is usually mapped using <literal><any></literal>."
+msgstr ""
+"이 매핑 방도의 경우, <literal>Payment</literal>에 대한 하나의 다형성 연관은 "
+"대개 <literal><any></literal>를 사용하여 매핑된다."
-#: index.docbook:217
+#. Tag: programlisting
+#: inheritance_mapping.xml:217
+#, no-c-format
msgid ""
- "<![CDATA[<any name=\"payment\" meta-type=\"string\" id-type=\"long\">\n"
- " <meta-value value=\"CREDIT\" class=\"CreditCardPayment\"/>\n"
- " <meta-value value=\"CASH\" class=\"CashPayment\"/>\n"
- " <meta-value value=\"CHEQUE\" class=\"ChequePayment\"/>\n"
- " <column name=\"PAYMENT_CLASS\"/>\n"
- " <column name=\"PAYMENT_ID\"/>\n"
- "</any>]]>"
+"<![CDATA[<any name=\"payment\" meta-type=\"string\" id-type=\"long\">\n"
+" <meta-value value=\"CREDIT\" class=\"CreditCardPayment\"/>\n"
+" <meta-value value=\"CASH\" class=\"CashPayment\"/>\n"
+" <meta-value value=\"CHEQUE\" class=\"ChequePayment\"/>\n"
+" <column name=\"PAYMENT_CLASS\"/>\n"
+" <column name=\"PAYMENT_ID\"/>\n"
+"</any>]]>"
msgstr ""
- "<![CDATA[<any name=\"payment\" meta-type=\"string\" id-type=\"long\">\n"
- " <meta-value value=\"CREDIT\" class=\"CreditCardPayment\"/>\n"
- " <meta-value value=\"CASH\" class=\"CashPayment\"/>\n"
- " <meta-value value=\"CHEQUE\" class=\"ChequePayment\"/>\n"
- " <column name=\"PAYMENT_CLASS\"/>\n"
- " <column name=\"PAYMENT_ID\"/>\n"
- "</any>]]>"
-#: index.docbook:222
+#. Tag: title
+#: inheritance_mapping.xml:222
+#, no-c-format
msgid "Mixing implicit polymorphism with other inheritance mappings"
msgstr "함축적인 다형성을 다른 상속 매핑들과 혼합하기"
-#: index.docbook:224
-msgid "There is one further thing to notice about this mapping. Since the subclasses are each mapped in their own <literal><class></literal> element (and since <literal>Payment</literal> is just an interface), each of the subclasses could easily be part of another inheritance hierarchy! (And you can still use polymorphic queries against the <literal>Payment</literal> interface.)"
-msgstr "이 매핑에 대해 주목할 하나 이상의 것이 존재한다. 서브클래스들이 그것들 자신의<literal><class></literal> 요소 내에 각각 매핑되므로(그리고 <literal>Payment</literal>가 단지 인터페이스이므로), 서브클래스들 각각은 쉽게 또 다른 상속 계층구조의 부분일 수 있다! (그리고 당신은 <literal>Payment</literal> 인터페이스에 대해 여전히 다형성 질의들을 사용할 수 있다.)"
+#. Tag: para
+#: inheritance_mapping.xml:224
+#, no-c-format
+msgid ""
+"There is one further thing to notice about this mapping. Since the "
+"subclasses are each mapped in their own <literal><class></literal> "
+"element (and since <literal>Payment</literal> is just an interface), each of "
+"the subclasses could easily be part of another inheritance hierarchy! (And "
+"you can still use polymorphic queries against the <literal>Payment</literal> "
+"interface.)"
+msgstr ""
+"이 매핑에 대해 주목할 하나 이상의 것이 존재한다. 서브클래스들이 그것들 자신의"
+"<literal><class></literal> 요소 내에 각각 매핑되므로(그리고 "
+"<literal>Payment</literal>가 단지 인터페이스이므로), 서브클래스들 각각은 쉽"
+"게 또 다른 상속 계층구조의 부분일 수 있다! (그리고 당신은 <literal>Payment</"
+"literal> 인터페이스에 대해 여전히 다형성 질의들을 사용할 수 있다.)"
-#: index.docbook:232
+#. Tag: programlisting
+#: inheritance_mapping.xml:232
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"CREDIT_CARD\" type=\"string\"/>\n"
- " <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
- " ...\n"
- " <subclass name=\"MasterCardPayment\" discriminator-value=\"MDC\"/>\n"
- " <subclass name=\"VisaPayment\" discriminator-value=\"VISA\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"NonelectronicTransaction\" table=\"NONELECTRONIC_TXN\">\n"
- " <id name=\"id\" type=\"long\" column=\"TXN_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " ...\n"
- " <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- " <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
+" <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <discriminator column=\"CREDIT_CARD\" type=\"string\"/>\n"
+" <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
+" ...\n"
+" <subclass name=\"MasterCardPayment\" discriminator-value=\"MDC\"/>\n"
+" <subclass name=\"VisaPayment\" discriminator-value=\"VISA\"/>\n"
+"</class>\n"
+"\n"
+"<class name=\"NonelectronicTransaction\" table=\"NONELECTRONIC_TXN\">\n"
+" <id name=\"id\" type=\"long\" column=\"TXN_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" ...\n"
+" <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
+" <key column=\"PAYMENT_ID\"/>\n"
+" <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
+" ...\n"
+" </joined-subclass>\n"
+" <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
+" <key column=\"PAYMENT_ID\"/>\n"
+" <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
+" ...\n"
+" </joined-subclass>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"CreditCardPayment\" table=\"CREDIT_PAYMENT\">\n"
- " <id name=\"id\" type=\"long\" column=\"CREDIT_PAYMENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <discriminator column=\"CREDIT_CARD\" type=\"string\"/>\n"
- " <property name=\"amount\" column=\"CREDIT_AMOUNT\"/>\n"
- " ...\n"
- " <subclass name=\"MasterCardPayment\" discriminator-value=\"MDC\"/>\n"
- " <subclass name=\"VisaPayment\" discriminator-value=\"VISA\"/>\n"
- "</class>\n"
- "\n"
- "<class name=\"NonelectronicTransaction\" table=\"NONELECTRONIC_TXN\">\n"
- " <id name=\"id\" type=\"long\" column=\"TXN_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " ...\n"
- " <joined-subclass name=\"CashPayment\" table=\"CASH_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " <property name=\"amount\" column=\"CASH_AMOUNT\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- " <joined-subclass name=\"ChequePayment\" table=\"CHEQUE_PAYMENT\">\n"
- " <key column=\"PAYMENT_ID\"/>\n"
- " <property name=\"amount\" column=\"CHEQUE_AMOUNT\"/>\n"
- " ...\n"
- " </joined-subclass>\n"
- "</class>]]>"
-#: index.docbook:234
-msgid "Once again, we don't mention <literal>Payment</literal> explicitly. If we execute a query against the <literal>Payment</literal> interface - for example, <literal>from Payment</literal> - Hibernate automatically returns instances of <literal>CreditCardPayment</literal> (and its subclasses, since they also implement <literal>Payment</literal>), <literal>CashPayment</literal> and <literal>ChequePayment</literal> but not instances of <literal>NonelectronicTransaction</literal>."
-msgstr "다시 한번, 우리는 <literal>Payment</literal>를 명시적으로 언급하지 않는다. 만일 우리가 <literal>Payment</literal> 인터페이스에 대해 하나의 질의를 실행할 경우-예를 들어, from Payment-, Hibernate는 <literal>CreditCardPayment</literal> (와 그것의 서브클래스들, 왜냐하면 그것들 또한 <literal>Payment</literal>를 구현하므로), <literal>CashPayment</literal> 그리고 <literal>ChequePayment</literal> 인스턴스들을 자동적으로 반환할 것이지만 <literal>NonelectronicTransaction</literal>의 인스턴스들을 반환하지 않는다."
+#. Tag: para
+#: inheritance_mapping.xml:234
+#, no-c-format
+msgid ""
+"Once again, we don't mention <literal>Payment</literal> explicitly. If we "
+"execute a query against the <literal>Payment</literal> interface - for "
+"example, <literal>from Payment</literal> - Hibernate automatically returns "
+"instances of <literal>CreditCardPayment</literal> (and its subclasses, since "
+"they also implement <literal>Payment</literal>), <literal>CashPayment</"
+"literal> and <literal>ChequePayment</literal> but not instances of "
+"<literal>NonelectronicTransaction</literal>."
+msgstr ""
+"다시 한번, 우리는 <literal>Payment</literal>를 명시적으로 언급하지 않는다. 만"
+"일 우리가 <literal>Payment</literal> 인터페이스에 대해 하나의 질의를 실행할 "
+"경우-예를 들어, from Payment-, Hibernate는 <literal>CreditCardPayment</"
+"literal> (와 그것의 서브클래스들, 왜냐하면 그것들 또한 <literal>Payment</"
+"literal>를 구현하므로), <literal>CashPayment</literal> 그리고 "
+"<literal>ChequePayment</literal> 인스턴스들을 자동적으로 반환할 것이지만 "
+"<literal>NonelectronicTransaction</literal>의 인스턴스들을 반환하지 않는다."
-#: index.docbook:249
+#. Tag: title
+#: inheritance_mapping.xml:249
+#, no-c-format
msgid "Limitations"
-msgstr "<title>제약들</title>"
+msgstr "제약들"
-#: index.docbook:251
-msgid "There are certain limitations to the \"implicit polymorphism\" approach to the table per concrete-class mapping strategy. There are somewhat less restrictive limitations to <literal><union-subclass></literal> mappings."
-msgstr "table per concrete-class 매핑 방도에 대한 \"함축적인 다형성\" 접근법에는 어떤 제약들이 존재한다. <literal><union-subclass></literal> 매핑들에 대해서는 다소 덜 제한적인 제약들이 존재한다:"
+#. Tag: para
+#: inheritance_mapping.xml:251
+#, no-c-format
+msgid ""
+"There are certain limitations to the \"implicit polymorphism\" approach to "
+"the table per concrete-class mapping strategy. There are somewhat less "
+"restrictive limitations to <literal><union-subclass></literal> "
+"mappings."
+msgstr ""
+"table per concrete-class 매핑 방도에 대한 \"함축적인 다형성\" 접근법에는 어"
+"떤 제약들이 존재한다. <literal><union-subclass></literal> 매핑들에 대해"
+"서는 다소 덜 제한적인 제약들이 존재한다:"
-#: index.docbook:258
-msgid "The following table shows the limitations of table per concrete-class mappings, and of implicit polymorphism, in Hibernate."
-msgstr "다음 표는 Hibernate에서 table per concrete-class 매핑들에 대한 제약들, 그리고 함축적인 다형성에 대한 제약들을 보여준다."
+#. Tag: para
+#: inheritance_mapping.xml:258
+#, no-c-format
+msgid ""
+"The following table shows the limitations of table per concrete-class "
+"mappings, and of implicit polymorphism, in Hibernate."
+msgstr ""
+"다음 표는 Hibernate에서 table per concrete-class 매핑들에 대한 제약들, 그리"
+"고 함축적인 다형성에 대한 제약들을 보여준다."
-#: index.docbook:264
+#. Tag: title
+#: inheritance_mapping.xml:264
+#, no-c-format
msgid "Features of inheritance mappings"
msgstr "상속 매핑들의 특징들"
-#: index.docbook:276
+#. Tag: entry
+#: inheritance_mapping.xml:276
+#, no-c-format
msgid "Inheritance strategy"
msgstr "상속 방도"
-#: index.docbook:277
+#. Tag: entry
+#: inheritance_mapping.xml:277
+#, no-c-format
msgid "Polymorphic many-to-one"
msgstr "다형성 다대일"
-#: index.docbook:278
+#. Tag: entry
+#: inheritance_mapping.xml:278
+#, no-c-format
msgid "Polymorphic one-to-one"
msgstr "다형성 일대일"
-#: index.docbook:279
+#. Tag: entry
+#: inheritance_mapping.xml:279
+#, no-c-format
msgid "Polymorphic one-to-many"
msgstr "다형성 일대다"
-#: index.docbook:280
+#. Tag: entry
+#: inheritance_mapping.xml:280
+#, no-c-format
msgid "Polymorphic many-to-many"
msgstr "다형성 다대다"
-#: index.docbook:281
+#. Tag: entry
+#: inheritance_mapping.xml:281
+#, no-c-format
msgid "Polymorphic <literal>load()/get()</literal>"
-msgstr "다형성 <literal>load()/get()</literal>"
+msgstr ""
-#: index.docbook:282
+#. Tag: entry
+#: inheritance_mapping.xml:282
+#, no-c-format
msgid "Polymorphic queries"
msgstr "다형성 질의들"
-#: index.docbook:283
+#. Tag: entry
+#: inheritance_mapping.xml:283
+#, no-c-format
msgid "Polymorphic joins"
msgstr "다형성 조인들"
-#: index.docbook:284
+#. Tag: entry
+#: inheritance_mapping.xml:284
+#, no-c-format
msgid "Outer join fetching"
msgstr "Outer 조인 페칭"
-#: index.docbook:289
+#. Tag: entry
+#: inheritance_mapping.xml:289
+#, no-c-format
msgid "table per class-hierarchy"
msgstr "table per class-hierarchy"
-#: index.docbook:290, index.docbook:301, index.docbook:312
+#. Tag: literal
+#: inheritance_mapping.xml:290 inheritance_mapping.xml:301
+#: inheritance_mapping.xml:312
+#, no-c-format
msgid "<many-to-one>"
msgstr "<many-to-one>"
-#: index.docbook:291, index.docbook:302, index.docbook:313
+#. Tag: literal
+#: inheritance_mapping.xml:291 inheritance_mapping.xml:302
+#: inheritance_mapping.xml:313
+#, no-c-format
msgid "<one-to-one>"
msgstr "<one-to-one>"
-#: index.docbook:292, index.docbook:303
+#. Tag: literal
+#: inheritance_mapping.xml:292 inheritance_mapping.xml:303
+#, no-c-format
msgid "<one-to-many>"
msgstr "<one-to-many>"
-#: index.docbook:293, index.docbook:304, index.docbook:315
+#. Tag: literal
+#: inheritance_mapping.xml:293 inheritance_mapping.xml:304
+#: inheritance_mapping.xml:315
+#, no-c-format
msgid "<many-to-many>"
msgstr "<many-to-many>"
-#: index.docbook:294, index.docbook:305, index.docbook:316
+#. Tag: literal
+#: inheritance_mapping.xml:294 inheritance_mapping.xml:305
+#: inheritance_mapping.xml:316
+#, no-c-format
msgid "s.get(Payment.class, id)"
msgstr "s.get(Payment.class, id)"
-#: index.docbook:295, index.docbook:306, index.docbook:317, index.docbook:328
+#. Tag: literal
+#: inheritance_mapping.xml:295 inheritance_mapping.xml:306
+#: inheritance_mapping.xml:317 inheritance_mapping.xml:328
+#, no-c-format
msgid "from Payment p"
msgstr "from Payment p"
-#: index.docbook:296, index.docbook:307, index.docbook:318
+#. Tag: literal
+#: inheritance_mapping.xml:296 inheritance_mapping.xml:307
+#: inheritance_mapping.xml:318
+#, no-c-format
msgid "from Order o join o.payment p"
msgstr "from Order o join o.payment p"
-#: index.docbook:297, index.docbook:308, index.docbook:319
+#. Tag: emphasis
+#: inheritance_mapping.xml:297 inheritance_mapping.xml:308
+#: inheritance_mapping.xml:319
+#, no-c-format
msgid "supported"
-msgstr "<emphasis>지원됨</emphasis>"
+msgstr "지원됨"
-#: index.docbook:300
+#. Tag: entry
+#: inheritance_mapping.xml:300
+#, fuzzy, no-c-format
msgid "<entry>table per subclass</entry>"
-msgstr "<entry>table per subclass</entry>"
+msgstr "table per subclass"
-#: index.docbook:311
+#. Tag: entry
+#: inheritance_mapping.xml:311
+#, no-c-format
msgid "table per concrete-class (union-subclass)"
msgstr "table per concrete-class (union-subclass)"
-#: index.docbook:314
-msgid "<literal><one-to-many></literal> (for <literal>inverse=\"true\"</literal> only)"
-msgstr "<literal><one-to-many></literal> (for <literal>inverse=\"true\"</literal> only)"
+#. Tag: entry
+#: inheritance_mapping.xml:314
+#, no-c-format
+msgid ""
+"<literal><one-to-many></literal> (for <literal>inverse=\"true\"</"
+"literal> only)"
+msgstr ""
-#: index.docbook:322
+#. Tag: entry
+#: inheritance_mapping.xml:322
+#, no-c-format
msgid "table per concrete class (implicit polymorphism)"
msgstr "table per concrete class (implicit polymorphism)"
-#: index.docbook:323
+#. Tag: literal
+#: inheritance_mapping.xml:323
+#, no-c-format
msgid "<any>"
msgstr "<any>"
-#: index.docbook:324, index.docbook:325, index.docbook:329, index.docbook:330
+#. Tag: emphasis
+#: inheritance_mapping.xml:324 inheritance_mapping.xml:325
+#: inheritance_mapping.xml:329 inheritance_mapping.xml:330
+#, no-c-format
msgid "not supported"
msgstr "지원되지 않음"
-#: index.docbook:326
+#. Tag: literal
+#: inheritance_mapping.xml:326
+#, no-c-format
msgid "<many-to-any>"
msgstr "<many-to-any>"
-#: index.docbook:327
-msgid "s.createCriteria(Payment.class).add( Restrictions.idEq(id) ).uniqueResult()"
-msgstr "s.createCriteria(Payment.class).add( Restrictions.idEq(id) ).uniqueResult()"
+#. Tag: literal
+#: inheritance_mapping.xml:327
+#, no-c-format
+msgid ""
+"s.createCriteria(Payment.class).add( Restrictions.idEq(id) ).uniqueResult()"
+msgstr ""
+"s.createCriteria(Payment.class).add( Restrictions.idEq(id) ).uniqueResult()"
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+#~ msgid "load()/get()"
+#~ msgstr "load()/get()"
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+#~ msgid "Polymorphic <placeholder-1/>"
+#~ msgstr "다형성 <placeholder-1/>"
+#~ msgid "inverse=\"true\""
+#~ msgstr "inverse=\"true\""
+
+#~ msgid "<placeholder-1/> (for <placeholder-2/> only)"
+#~ msgstr "<placeholder-1/> (for <placeholder-2/> only)"
Modified: core/trunk/documentation/manual/translations/ko-KR/content/performance.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/performance.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/performance.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,1220 +1,2604 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: performance.xml:5
+#, no-c-format
msgid "Improving performance"
msgstr "퍼포먼스 개선하기"
-#: index.docbook:8
+#. Tag: title
+#: performance.xml:8
+#, no-c-format
msgid "Fetching strategies"
msgstr "페칭 방도들"
-#: index.docbook:10
-msgid "A <emphasis>fetching strategy</emphasis> is the strategy Hibernate will use for retrieving associated objects if the application needs to navigate the association. Fetch strategies may be declared in the O/R mapping metadata, or over-ridden by a particular HQL or <literal>Criteria</literal> query."
-msgstr "<emphasis>페칭 방도</emphasis>는 어플리케이션이 연관을 네비게이트할 필요가 있을 때 Hibernate가 연관된 객체들을 검색하는데 사용하게 될 방도이다.페치 방도들은 O/R 매핑 메타데이터 내에서 선언될 수 있거나 하나의 특정 HQL 또는 <literal>Criteria</literal> 질의에 의해 오버라이드 될 수도 있다."
+#. Tag: para
+#: performance.xml:10
+#, no-c-format
+msgid ""
+"A <emphasis>fetching strategy</emphasis> is the strategy Hibernate will use "
+"for retrieving associated objects if the application needs to navigate the "
+"association. Fetch strategies may be declared in the O/R mapping metadata, "
+"or over-ridden by a particular HQL or <literal>Criteria</literal> query."
+msgstr ""
+"<emphasis>페칭 방도</emphasis>는 어플리케이션이 연관을 네비게이트할 필요가 있"
+"을 때 Hibernate가 연관된 객체들을 검색하는데 사용하게 될 방도이다.페치 방도들"
+"은 O/R 매핑 메타데이터 내에서 선언될 수 있거나 하나의 특정 HQL 또는 "
+"<literal>Criteria</literal> 질의에 의해 오버라이드 될 수도 있다."
-#: index.docbook:17
+#. Tag: para
+#: performance.xml:17
+#, no-c-format
msgid "Hibernate3 defines the following fetching strategies:"
msgstr "Hibernate3는 다음 페칭 방도들을 정의한다:"
-#: index.docbook:23
-msgid "<emphasis>Join fetching</emphasis> - Hibernate retrieves the associated instance or collection in the same <literal>SELECT</literal>, using an <literal>OUTER JOIN</literal>."
-msgstr "<emphasis>Join 페칭</emphasis> - Hibernate는 <literal>OUTER JOIN</literal>을 사용하여 연관된 인스턴스 또는 동일한 <literal>SELECT</literal> 내에서 콜렉션을 검색한다."
+#. Tag: para
+#: performance.xml:23
+#, no-c-format
+msgid ""
+"<emphasis>Join fetching</emphasis> - Hibernate retrieves the associated "
+"instance or collection in the same <literal>SELECT</literal>, using an "
+"<literal>OUTER JOIN</literal>."
+msgstr ""
+"<emphasis>Join 페칭</emphasis> - Hibernate는 <literal>OUTER JOIN</literal>을 "
+"사용하여 연관된 인스턴스 또는 동일한 <literal>SELECT</literal> 내에서 콜렉션"
+"을 검색한다."
-#: index.docbook:30
-msgid "<emphasis>Select fetching</emphasis> - a second <literal>SELECT</literal> is used to retrieve the associated entity or collection. Unless you explicitly disable lazy fetching by specifying <literal>lazy=\"false\"</literal>, this second select will only be executed when you actually access the association."
-msgstr "<emphasis>Select 페칭</emphasis> - 두 번째 <literal>SELECT</literal>는 연과된 엔티티 또는 콜렉션을 검색하는데 사용된다. 당신이 <literal>lazy=\"false\"</literal>를 지정함으로써 명시적으로 lazy 페칭을 사용 불가능하게 하지 않는 한, 이 두 번째 select는 당신이 그 연관에 실제로 액세스할 때 오직 실행될 것이다."
+#. Tag: para
+#: performance.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Select fetching</emphasis> - a second <literal>SELECT</literal> is "
+"used to retrieve the associated entity or collection. Unless you explicitly "
+"disable lazy fetching by specifying <literal>lazy=\"false\"</literal>, this "
+"second select will only be executed when you actually access the association."
+msgstr ""
+"<emphasis>Select 페칭</emphasis> - 두 번째 <literal>SELECT</literal>는 연과"
+"된 엔티티 또는 콜렉션을 검색하는데 사용된다. 당신이 <literal>lazy=\"false\"</"
+"literal>를 지정함으로써 명시적으로 lazy 페칭을 사용 불가능하게 하지 않는 한, "
+"이 두 번째 select는 당신이 그 연관에 실제로 액세스할 때 오직 실행될 것이다."
-#: index.docbook:39
-msgid "<emphasis>Subselect fetching</emphasis> - a second <literal>SELECT</literal> is used to retrieve the associated collections for all entities retrieved in a previous query or fetch. Unless you explicitly disable lazy fetching by specifying <literal>lazy=\"false\"</literal>, this second select will only be executed when you actually access the association."
-msgstr "<emphasis>Subselect 페칭</emphasis> - 두 번째 <literal>SELECT</literal>는 이전 질의 또는 페치에서 검색된 모든 엔티티들에 대해 연관된 콜렉션들을 검색하는데 사용된다. 당신이 <literal>lazy=\"false\"</literal>를 지정하여 명시적으로 lazy 페칭을 사용 불가능하게 하지 않는 한, 이 두 번째 select는 당신이 실제로 그 연관에 접근할 때 오직 실행될 것이다."
+#. Tag: para
+#: performance.xml:39
+#, no-c-format
+msgid ""
+"<emphasis>Subselect fetching</emphasis> - a second <literal>SELECT</literal> "
+"is used to retrieve the associated collections for all entities retrieved in "
+"a previous query or fetch. Unless you explicitly disable lazy fetching by "
+"specifying <literal>lazy=\"false\"</literal>, this second select will only "
+"be executed when you actually access the association."
+msgstr ""
+"<emphasis>Subselect 페칭</emphasis> - 두 번째 <literal>SELECT</literal>는 이"
+"전 질의 또는 페치에서 검색된 모든 엔티티들에 대해 연관된 콜렉션들을 검색하는"
+"데 사용된다. 당신이 <literal>lazy=\"false\"</literal>를 지정하여 명시적으로 "
+"lazy 페칭을 사용 불가능하게 하지 않는 한, 이 두 번째 select는 당신이 실제로 "
+"그 연관에 접근할 때 오직 실행될 것이다."
-#: index.docbook:48
-msgid "<emphasis>Batch fetching</emphasis> - an optimization strategy for select fetching - Hibernate retrieves a batch of entity instances or collections in a single <literal>SELECT</literal>, by specifying a list of primary keys or foreign keys."
-msgstr "<emphasis>Batch 페칭</emphasis> - select 페칭을 위한 최적화 방도 - Hibernate는 프라이머리 키들이나 foreign 키들의 리스트를 지정함으로써 하나의<literal>SELECT</literal> 내에서 엔티티 인스턴스들이나 콜렉션들에 대한 batch를 검색한다."
+#. Tag: para
+#: performance.xml:48
+#, no-c-format
+msgid ""
+"<emphasis>Batch fetching</emphasis> - an optimization strategy for select "
+"fetching - Hibernate retrieves a batch of entity instances or collections in "
+"a single <literal>SELECT</literal>, by specifying a list of primary keys or "
+"foreign keys."
+msgstr ""
+"<emphasis>Batch 페칭</emphasis> - select 페칭을 위한 최적화 방도 - Hibernate"
+"는 프라이머리 키들이나 foreign 키들의 리스트를 지정함으로써 하나의"
+"<literal>SELECT</literal> 내에서 엔티티 인스턴스들이나 콜렉션들에 대한 batch"
+"를 검색한다."
-#: index.docbook:57
+#. Tag: para
+#: performance.xml:57
+#, no-c-format
msgid "Hibernate also distinguishes between:"
msgstr "Hibernate는 또한 다음 사이를 구별 짓는다:"
-#: index.docbook:63
-msgid "<emphasis>Immediate fetching</emphasis> - an association, collection or attribute is fetched immediately, when the owner is loaded."
-msgstr "<emphasis>즉각적인 페칭</emphasis> - 소유자가 로드될 때, 연관, 콜렉션 또는 속성이 즉시 페치된다."
+#. Tag: para
+#: performance.xml:63
+#, no-c-format
+msgid ""
+"<emphasis>Immediate fetching</emphasis> - an association, collection or "
+"attribute is fetched immediately, when the owner is loaded."
+msgstr ""
+"<emphasis>즉각적인 페칭</emphasis> - 소유자가 로드될 때, 연관, 콜렉션 또는 속"
+"성이 즉시 페치된다."
-#: index.docbook:69
-msgid "<emphasis>Lazy collection fetching</emphasis> - a collection is fetched when the application invokes an operation upon that collection. (This is the default for collections.)"
-msgstr "<emphasis>Lazy 콜렉션 페칭</emphasis> - 어플리케이션이 그 콜렉션에 대해 하나의 오퍼레이션을 호출할 때 콜렉션이 페치된다.(이것은 콜렉션들에 대해 디폴트이다.)"
+#. Tag: para
+#: performance.xml:69
+#, no-c-format
+msgid ""
+"<emphasis>Lazy collection fetching</emphasis> - a collection is fetched when "
+"the application invokes an operation upon that collection. (This is the "
+"default for collections.)"
+msgstr ""
+"<emphasis>Lazy 콜렉션 페칭</emphasis> - 어플리케이션이 그 콜렉션에 대해 하나"
+"의 오퍼레이션을 호출할 때 콜렉션이 페치된다.(이것은 콜렉션들에 대해 디폴트이"
+"다.)"
-#: index.docbook:76
-msgid "<emphasis>\"Extra-lazy\" collection fetching</emphasis> - individual elements of the collection are accessed from the database as needed. Hibernate tries not to fetch the whole collection into memory unless absolutely needed (suitable for very large collections)"
-msgstr "<emphasis>\"Extra-lazy\" 콜렉션 페칭</emphasis> - 콜렉션의 개별 요소들은 필요할 때 데이터베이스로부터 접근된다. Hibernate는 절대적으로 필요하지 않은 한 전체 콜렉션을 메모리 내로 페치하려고 시도하지 않는다(매우 큰 콜렉션에 적합함)"
+#. Tag: para
+#: performance.xml:76
+#, no-c-format
+msgid ""
+"<emphasis>\"Extra-lazy\" collection fetching</emphasis> - individual "
+"elements of the collection are accessed from the database as needed. "
+"Hibernate tries not to fetch the whole collection into memory unless "
+"absolutely needed (suitable for very large collections)"
+msgstr ""
+"<emphasis>\"Extra-lazy\" 콜렉션 페칭</emphasis> - 콜렉션의 개별 요소들은 필요"
+"할 때 데이터베이스로부터 접근된다. Hibernate는 절대적으로 필요하지 않은 한 전"
+"체 콜렉션을 메모리 내로 페치하려고 시도하지 않는다(매우 큰 콜렉션에 적합함)"
-#: index.docbook:84
-msgid "<emphasis>Proxy fetching</emphasis> - a single-valued association is fetched when a method other than the identifier getter is invoked upon the associated object."
-msgstr "<emphasis>프락시 페칭</emphasis> - 식별자 getter가 아닌 다른 메소드가 연관된 객체에 대해 호출될 때 단일 값 연관이 페치된다."
+#. Tag: para
+#: performance.xml:84
+#, no-c-format
+msgid ""
+"<emphasis>Proxy fetching</emphasis> - a single-valued association is fetched "
+"when a method other than the identifier getter is invoked upon the "
+"associated object."
+msgstr ""
+"<emphasis>프락시 페칭</emphasis> - 식별자 getter가 아닌 다른 메소드가 연관된 "
+"객체에 대해 호출될 때 단일 값 연관이 페치된다."
-#: index.docbook:91
-msgid "<emphasis>\"No-proxy\" fetching</emphasis> - a single-valued association is fetched when the instance variable is accessed. Compared to proxy fetching, this approach is less lazy (the association is fetched even when only the identifier is accessed) but more transparent, since no proxy is visible to the application. This approach requires buildtime bytecode instrumentation and is rarely necessary."
-msgstr "<emphasis>\"No-proxy\" 페칭</emphasis> - 인스턴스 변수가 접근될 때 단일 값 연관이 페치된다. 프락시 페칭과 비교할 때, 이 접근법은 다소 덜 lazy하지만(그 연관은 심지어 유일하게 식별자가 접근될 때에도 페치된다)보다 투명하다. 왜냐하면 프락시는 어플리케이션에 가시적이지 않기 때문이다. 이 접근법은 빌드 시 바이트코드 수단을 필요로 하며 드물게 필요하다."
+#. Tag: para
+#: performance.xml:91
+#, no-c-format
+msgid ""
+"<emphasis>\"No-proxy\" fetching</emphasis> - a single-valued association is "
+"fetched when the instance variable is accessed. Compared to proxy fetching, "
+"this approach is less lazy (the association is fetched even when only the "
+"identifier is accessed) but more transparent, since no proxy is visible to "
+"the application. This approach requires buildtime bytecode instrumentation "
+"and is rarely necessary."
+msgstr ""
+"<emphasis>\"No-proxy\" 페칭</emphasis> - 인스턴스 변수가 접근될 때 단일 값 연"
+"관이 페치된다. 프락시 페칭과 비교할 때, 이 접근법은 다소 덜 lazy하지만(그 연"
+"관은 심지어 유일하게 식별자가 접근될 때에도 페치된다)보다 투명하다. 왜냐하면 "
+"프락시는 어플리케이션에 가시적이지 않기 때문이다. 이 접근법은 빌드 시 바이트"
+"코드 수단을 필요로 하며 드물게 필요하다."
-#: index.docbook:101
-msgid "<emphasis>Lazy attribute fetching</emphasis> - an attribute or single valued association is fetched when the instance variable is accessed. This approach requires buildtime bytecode instrumentation and is rarely necessary."
-msgstr "<emphasis>Lazy 속성 페칭</emphasis> - 인스턴스 변수가 접근될 때 속성 또는 단일 값 연관이 페치된다 이 접근법은 빌드시 바이트코드 수단을 필요로 하며 드물게 필요하다."
+#. Tag: para
+#: performance.xml:101
+#, no-c-format
+msgid ""
+"<emphasis>Lazy attribute fetching</emphasis> - an attribute or single valued "
+"association is fetched when the instance variable is accessed. This approach "
+"requires buildtime bytecode instrumentation and is rarely necessary."
+msgstr ""
+"<emphasis>Lazy 속성 페칭</emphasis> - 인스턴스 변수가 접근될 때 속성 또는 단"
+"일 값 연관이 페치된다 이 접근법은 빌드시 바이트코드 수단을 필요로 하며 드물"
+"게 필요하다."
-#: index.docbook:110
-msgid "We have two orthogonal notions here: <emphasis>when</emphasis> is the association fetched, and <emphasis>how</emphasis> is it fetched (what SQL is used). Don't confuse them! We use <literal>fetch</literal> to tune performance. We may use <literal>lazy</literal> to define a contract for what data is always available in any detached instance of a particular class."
-msgstr "우리는 여기서 두 개의 직교하는 개념들을 갖는다: 연관이 페치될 <emphasis>때</emphasis>, 그리고 그것이 페치되는 <emphasis>방법</emphasis>(사용되는 SQL). 그것들을 혼동하지 말라! 우리는 퍼포먼스를 튜팅하는데 <literal>페치</literal>를 사용한다. 우리는 특정 클래스의 어떤 detached 인스턴스 내에서 항상 이용 가능한 데이터가 무엇인지에 대한 계약을 정의하는데 <literal>lazy</literal>를 사용할 수 있다."
+#. Tag: para
+#: performance.xml:110
+#, no-c-format
+msgid ""
+"We have two orthogonal notions here: <emphasis>when</emphasis> is the "
+"association fetched, and <emphasis>how</emphasis> is it fetched (what SQL is "
+"used). Don't confuse them! We use <literal>fetch</literal> to tune "
+"performance. We may use <literal>lazy</literal> to define a contract for "
+"what data is always available in any detached instance of a particular class."
+msgstr ""
+"우리는 여기서 두 개의 직교하는 개념들을 갖는다: 연관이 페치될 <emphasis>때</"
+"emphasis>, 그리고 그것이 페치되는 <emphasis>방법</emphasis>(사용되는 SQL). 그"
+"것들을 혼동하지 말라! 우리는 퍼포먼스를 튜팅하는데 <literal>페치</literal>를 "
+"사용한다. 우리는 특정 클래스의 어떤 detached 인스턴스 내에서 항상 이용 가능"
+"한 데이터가 무엇인지에 대한 계약을 정의하는데 <literal>lazy</literal>를 사용"
+"할 수 있다."
-#: index.docbook:119
+#. Tag: title
+#: performance.xml:119
+#, no-c-format
msgid "Working with lazy associations"
msgstr "lazy 연관들로 작업하기"
-#: index.docbook:121
-msgid "By default, Hibernate3 uses lazy select fetching for collections and lazy proxy fetching for single-valued associations. These defaults make sense for almost all associations in almost all applications."
-msgstr "디폴트로 Hibernate3는 콜렉션들에 대해 lazy select 페칭을 사용하고, 단일 값 연관들에 대해 lazy 프락시 페칭을 사용한다. 이들 디폴트들은 거의 모든 어플리케이션들에서 거의 모든 연관들에 대해 유의미하다."
+#. Tag: para
+#: performance.xml:121
+#, no-c-format
+msgid ""
+"By default, Hibernate3 uses lazy select fetching for collections and lazy "
+"proxy fetching for single-valued associations. These defaults make sense for "
+"almost all associations in almost all applications."
+msgstr ""
+"디폴트로 Hibernate3는 콜렉션들에 대해 lazy select 페칭을 사용하고, 단일 값 연"
+"관들에 대해 lazy 프락시 페칭을 사용한다. 이들 디폴트들은 거의 모든 어플리케이"
+"션들에서 거의 모든 연관들에 대해 유의미하다."
-#: index.docbook:127
-msgid "<emphasis>Note:</emphasis> if you set <literal>hibernate.default_batch_fetch_size</literal>, Hibernate will use the batch fetch optimization for lazy fetching (this optimization may also be enabled at a more granular level)."
-msgstr "<emphasis>노트:</emphasis> 만일 당신이 <literal>hibernate.default_batch_fetch_size</literal>를 설정하는 경우, Hibernate는 lazy 페칭을 위한 batch 페치 최적화를 사용할 것이다(이 최적화는 또한 더 많은 과립상의 레벨에서 이용 가능할 수 있다)."
+#. Tag: para
+#: performance.xml:127
+#, no-c-format
+msgid ""
+"<emphasis>Note:</emphasis> if you set <literal>hibernate."
+"default_batch_fetch_size</literal>, Hibernate will use the batch fetch "
+"optimization for lazy fetching (this optimization may also be enabled at a "
+"more granular level)."
+msgstr ""
+"<emphasis>노트:</emphasis> 만일 당신이 <literal>hibernate."
+"default_batch_fetch_size</literal>를 설정하는 경우, Hibernate는 lazy 페칭을 "
+"위한 batch 페치 최적화를 사용할 것이다(이 최적화는 또한 더 많은 과립상의 레벨"
+"에서 이용 가능할 수 있다)."
-#: index.docbook:134
-msgid "However, lazy fetching poses one problem that you must be aware of. Access to a lazy association outside of the context of an open Hibernate session will result in an exception. For example:"
-msgstr "하지만, lazy 페칭은 당신이 알고 있어야 하는 한 가지 문제를 제기한다. 열려진 Hibernate 세션 컨텍스트 외부에서 lazy 연관에 대한 접근은 예외상황으로 귀결될 것이다. 예를 들면 :"
+#. Tag: para
+#: performance.xml:134
+#, no-c-format
+msgid ""
+"However, lazy fetching poses one problem that you must be aware of. Access "
+"to a lazy association outside of the context of an open Hibernate session "
+"will result in an exception. For example:"
+msgstr ""
+"하지만, lazy 페칭은 당신이 알고 있어야 하는 한 가지 문제를 제기한다. 열려진 "
+"Hibernate 세션 컨텍스트 외부에서 lazy 연관에 대한 접근은 예외상황으로 귀결될 "
+"것이다. 예를 들면 :"
-#: index.docbook:140
+#. Tag: programlisting
+#: performance.xml:140
+#, no-c-format
msgid ""
- "<![CDATA[s = sessions.openSession();\n"
- "Transaction tx = s.beginTransaction();\n"
- " \n"
- "User u = (User) s.createQuery(\"from User u where u.name=:userName\")\n"
- " .setString(\"userName\", userName).uniqueResult();\n"
- "Map permissions = u.getPermissions();\n"
- "\n"
- "tx.commit();\n"
- "s.close();\n"
- "\n"
- "Integer accessLevel = (Integer) permissions.get(\"accounts\"); // Error!]]>"
+"<![CDATA[s = sessions.openSession();\n"
+"Transaction tx = s.beginTransaction();\n"
+" \n"
+"User u = (User) s.createQuery(\"from User u where u.name=:userName\")\n"
+" .setString(\"userName\", userName).uniqueResult();\n"
+"Map permissions = u.getPermissions();\n"
+"\n"
+"tx.commit();\n"
+"s.close();\n"
+"\n"
+"Integer accessLevel = (Integer) permissions.get(\"accounts\"); // Error!]]>"
msgstr ""
- "<![CDATA[s = sessions.openSession();\n"
- "Transaction tx = s.beginTransaction();\n"
- " \n"
- "User u = (User) s.createQuery(\"from User u where u.name=:userName\")\n"
- " .setString(\"userName\", userName).uniqueResult();\n"
- "Map permissions = u.getPermissions();\n"
- "\n"
- "tx.commit();\n"
- "s.close();\n"
- "\n"
- "Integer accessLevel = (Integer) permissions.get(\"accounts\"); // Error!]]>"
-#: index.docbook:142
-msgid "Since the permissions collection was not initialized when the <literal>Session</literal> was closed, the collection will not be able to load its state. <emphasis>Hibernate does not support lazy initialization for detached objects</emphasis>. The fix is to move the code that reads from the collection to just before the transaction is committed."
-msgstr "<literal>Session</literal>이 닫혔을 때 permissions 콜렉션이 초기화 되지 않았으므로, 그 콜렉션은 그것의 상태를 로드시킬 수가 없을 것이다. <emphasis>Hibernate 는 detached 객체들에 대한 lazy 초기화를 지원하지 않는다.</emphasis> 정정은 콜렉션으로부터 읽어들이는 코드를 커밋 바로 직전으로 이동시키는 것이다."
+#. Tag: para
+#: performance.xml:142
+#, no-c-format
+msgid ""
+"Since the permissions collection was not initialized when the "
+"<literal>Session</literal> was closed, the collection will not be able to "
+"load its state. <emphasis>Hibernate does not support lazy initialization for "
+"detached objects</emphasis>. The fix is to move the code that reads from the "
+"collection to just before the transaction is committed."
+msgstr ""
+"<literal>Session</literal>이 닫혔을 때 permissions 콜렉션이 초기화 되지 않았"
+"으므로, 그 콜렉션은 그것의 상태를 로드시킬 수가 없을 것이다. "
+"<emphasis>Hibernate 는 detached 객체들에 대한 lazy 초기화를 지원하지 않는다."
+"</emphasis> 정정은 콜렉션으로부터 읽어들이는 코드를 커밋 바로 직전으로 이동시"
+"키는 것이다."
-#: index.docbook:150
-msgid "Alternatively, we could use a non-lazy collection or association, by specifying <literal>lazy=\"false\"</literal> for the association mapping. However, it is intended that lazy initialization be used for almost all collections and associations. If you define too many non-lazy associations in your object model, Hibernate will end up needing to fetch the entire database into memory in every transaction!"
-msgstr "다른 방법으로 연관 매핑에 대해 <literal>lazy=\"false\"</literal>를 지정함으로써, non-lazy 콜렉션 또는 non-lazy 연관을 사용할 수 있다. 하지만 lazy 초기화는 거의 모든 콜렉션들과 연관들에 대해 사용되도록 고안되어 있다. 만일 당신이 당신의 객체 모형 내에 너무 많은 non-lazy 연관들을 정의할 경우, Hibernate는 모든 트랜잭션에서 전체 데이터베이스를 메모리 속으로 페치하는 필요성을 끝내게 될 것이다!"
+#. Tag: para
+#: performance.xml:150
+#, no-c-format
+msgid ""
+"Alternatively, we could use a non-lazy collection or association, by "
+"specifying <literal>lazy=\"false\"</literal> for the association mapping. "
+"However, it is intended that lazy initialization be used for almost all "
+"collections and associations. If you define too many non-lazy associations "
+"in your object model, Hibernate will end up needing to fetch the entire "
+"database into memory in every transaction!"
+msgstr ""
+"다른 방법으로 연관 매핑에 대해 <literal>lazy=\"false\"</literal>를 지정함으로"
+"써, non-lazy 콜렉션 또는 non-lazy 연관을 사용할 수 있다. 하지만 lazy 초기화"
+"는 거의 모든 콜렉션들과 연관들에 대해 사용되도록 고안되어 있다. 만일 당신이 "
+"당신의 객체 모형 내에 너무 많은 non-lazy 연관들을 정의할 경우, Hibernate는 모"
+"든 트랜잭션에서 전체 데이터베이스를 메모리 속으로 페치하는 필요성을 끝내게 "
+"될 것이다!"
-#: index.docbook:159
-msgid "On the other hand, we often want to choose join fetching (which is non-lazy by nature) instead of select fetching in a particular transaction. We'll now see how to customize the fetching strategy. In Hibernate3, the mechanisms for choosing a fetch strategy are identical for single-valued associations and collections."
-msgstr "다른 한편으로, 우리는 특정 트랜잭션 내에서 select 페칭 대신에 (고유하게 non-lazy인) join 페칭을 선택하기를 자주 원한다. 우리는 이제 페칭 방도를 맞춤화 시키는 방법을 알게 될 것이다. Hibernate3에서, 페치 방도를 선택하는 메커니즘은 단일 값 연관들과 콜렉션들에 대해 동일하다."
+#. Tag: para
+#: performance.xml:159
+#, no-c-format
+msgid ""
+"On the other hand, we often want to choose join fetching (which is non-lazy "
+"by nature) instead of select fetching in a particular transaction. We'll now "
+"see how to customize the fetching strategy. In Hibernate3, the mechanisms "
+"for choosing a fetch strategy are identical for single-valued associations "
+"and collections."
+msgstr ""
+"다른 한편으로, 우리는 특정 트랜잭션 내에서 select 페칭 대신에 (고유하게 non-"
+"lazy인) join 페칭을 선택하기를 자주 원한다. 우리는 이제 페칭 방도를 맞춤화 시"
+"키는 방법을 알게 될 것이다. Hibernate3에서, 페치 방도를 선택하는 메커니즘은 "
+"단일 값 연관들과 콜렉션들에 대해 동일하다."
-#: index.docbook:170
+#. Tag: title
+#: performance.xml:170
+#, no-c-format
msgid "Tuning fetch strategies"
msgstr "페치 방도들을 튜닝하기"
-#: index.docbook:172
-msgid "Select fetching (the default) is extremely vulnerable to N+1 selects problems, so we might want to enable join fetching in the mapping document:"
-msgstr "select 페칭(디폴트)은 N+1 selects 문제점들에 매우 취약해서, 우리는 매핑 문서에서 join 페칭을 사용 가능하게 하기를 원할 수도 있다:"
+#. Tag: para
+#: performance.xml:172
+#, no-c-format
+msgid ""
+"Select fetching (the default) is extremely vulnerable to N+1 selects "
+"problems, so we might want to enable join fetching in the mapping document:"
+msgstr ""
+"select 페칭(디폴트)은 N+1 selects 문제점들에 매우 취약해서, 우리는 매핑 문서"
+"에서 join 페칭을 사용 가능하게 하기를 원할 수도 있다:"
-#: index.docbook:177
+#. Tag: programlisting
+#: performance.xml:177
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"permissions\" \n"
- " fetch=\"join\">\n"
- " <key column=\"userId\"/>\n"
- " <one-to-many class=\"Permission\"/>\n"
- "</set]]>"
+"<![CDATA[<set name=\"permissions\" \n"
+" fetch=\"join\">\n"
+" <key column=\"userId\"/>\n"
+" <one-to-many class=\"Permission\"/>\n"
+"</set]]>"
msgstr ""
- "<![CDATA[<set name=\"permissions\" \n"
- " fetch=\"join\">\n"
- " <key column=\"userId\"/>\n"
- " <one-to-many class=\"Permission\"/>\n"
- "</set]]>"
-#: index.docbook:179
+#. Tag: programlisting
+#: performance.xml:179
+#, no-c-format
msgid "<![CDATA[<many-to-one name=\"mother\" class=\"Cat\" fetch=\"join\"/>]]>"
-msgstr "<![CDATA[<many-to-one name=\"mother\" class=\"Cat\" fetch=\"join\"/>]]>"
+msgstr ""
-#: index.docbook:181
-msgid "The <literal>fetch</literal> strategy defined in the mapping document affects:"
-msgstr "매핑 문서 내에 정의된 <literal>fetch</literal> 방도는 다음에 영향을 준다:"
+#. Tag: para
+#: performance.xml:181
+#, no-c-format
+msgid ""
+"The <literal>fetch</literal> strategy defined in the mapping document "
+"affects:"
+msgstr ""
+"매핑 문서 내에 정의된 <literal>fetch</literal> 방도는 다음에 영향을 준다:"
-#: index.docbook:187
+#. Tag: para
+#: performance.xml:187
+#, no-c-format
msgid "retrieval via <literal>get()</literal> or <literal>load()</literal>"
msgstr "<literal>get()</literal> 또는 <literal>load()</literal>를 통한 검색"
-#: index.docbook:192
+#. Tag: para
+#: performance.xml:192
+#, no-c-format
msgid "retrieval that happens implicitly when an association is navigated"
msgstr "연관이 네비게이트될 때 함축적으로 발생하는 검색"
-#: index.docbook:197
+#. Tag: para
+#: performance.xml:197
+#, no-c-format
msgid "<literal>Criteria</literal> queries"
msgstr "<literal>Criteria</literal> 질의들"
-#: index.docbook:202
+#. Tag: para
+#: performance.xml:202
+#, no-c-format
msgid "HQL queries if <literal>subselect</literal> fetching is used"
msgstr "<literal>subselect</literal> 페칭이 사용될 경우에 HQL 질의들"
-#: index.docbook:208
-msgid "No matter what fetching strategy you use, the defined non-lazy graph is guaranteed to be loaded into memory. Note that this might result in several immediate selects being used to execute a particular HQL query."
-msgstr "당신이 사용하는 페칭 방도가 무엇인가에 상관없이, 정의된 비-lazy 그래프가 메모리 내로 로드되는 것이 보장된다. 이것은 하나의 특별한 HQL 질의를 실행시키는데 사용되는 몇몇 즉시적인 select들로 귀결될 수 있음을 노트하라."
+#. Tag: para
+#: performance.xml:208
+#, no-c-format
+msgid ""
+"No matter what fetching strategy you use, the defined non-lazy graph is "
+"guaranteed to be loaded into memory. Note that this might result in several "
+"immediate selects being used to execute a particular HQL query."
+msgstr ""
+"당신이 사용하는 페칭 방도가 무엇인가에 상관없이, 정의된 비-lazy 그래프가 메모"
+"리 내로 로드되는 것이 보장된다. 이것은 하나의 특별한 HQL 질의를 실행시키는데 "
+"사용되는 몇몇 즉시적인 select들로 귀결될 수 있음을 노트하라."
-#: index.docbook:214
-msgid "Usually, we don't use the mapping document to customize fetching. Instead, we keep the default behavior, and override it for a particular transaction, using <literal>left join fetch</literal> in HQL. This tells Hibernate to fetch the association eagerly in the first select, using an outer join. In the <literal>Criteria</literal> query API, you would use <literal>setFetchMode(FetchMode.JOIN)</literal>."
-msgstr "대개, 우리는 페칭을 맞춤화 시키는데 매핑 문서를 사용하지 않는다. 대신에, 우리는 디폴트 특징을 유지하고, HQL에서 <literal>left join fetch</literal>를 사용하여, 특정 트랜잭션에 대해 그것을 오버라이드 시킨다. 이것은 outer join을 사용하여 첫 번째 select에서 초기에 그 연관을 eagerly 페치시킬 것을 Hibernate에게 알려준다. <literal>Criteria</literal> query API에서, 우리는 <literal>setFetchMode(FetchMode.JOIN)</literal>을 사용한다."
+#. Tag: para
+#: performance.xml:214
+#, no-c-format
+msgid ""
+"Usually, we don't use the mapping document to customize fetching. Instead, "
+"we keep the default behavior, and override it for a particular transaction, "
+"using <literal>left join fetch</literal> in HQL. This tells Hibernate to "
+"fetch the association eagerly in the first select, using an outer join. In "
+"the <literal>Criteria</literal> query API, you would use "
+"<literal>setFetchMode(FetchMode.JOIN)</literal>."
+msgstr ""
+"대개, 우리는 페칭을 맞춤화 시키는데 매핑 문서를 사용하지 않는다. 대신에, 우리"
+"는 디폴트 특징을 유지하고, HQL에서 <literal>left join fetch</literal>를 사용"
+"하여, 특정 트랜잭션에 대해 그것을 오버라이드 시킨다. 이것은 outer join을 사용"
+"하여 첫 번째 select에서 초기에 그 연관을 eagerly 페치시킬 것을 Hibernate에게 "
+"알려준다. <literal>Criteria</literal> query API에서, 우리는 "
+"<literal>setFetchMode(FetchMode.JOIN)</literal>을 사용한다."
-#: index.docbook:223
-msgid "If you ever feel like you wish you could change the fetching strategy used by <literal>get()</literal> or <literal>load()</literal>, simply use a <literal>Criteria</literal> query, for example:"
-msgstr "만일 당신이 <literal>get()</literal> 또는 <literal>load()</literal>에 의해 사용된 페칭 방도를 변경시킬 수 있기를 당신이 원한다고 느낄 경우, 단순하게 <literal>Criteria</literal> 질의를 사용하라. 예를 들면:"
+#. Tag: para
+#: performance.xml:223
+#, no-c-format
+msgid ""
+"If you ever feel like you wish you could change the fetching strategy used "
+"by <literal>get()</literal> or <literal>load()</literal>, simply use a "
+"<literal>Criteria</literal> query, for example:"
+msgstr ""
+"만일 당신이 <literal>get()</literal> 또는 <literal>load()</literal>에 의해 사"
+"용된 페칭 방도를 변경시킬 수 있기를 당신이 원한다고 느낄 경우, 단순하게 "
+"<literal>Criteria</literal> 질의를 사용하라. 예를 들면:"
-#: index.docbook:229
+#. Tag: programlisting
+#: performance.xml:229
+#, no-c-format
msgid ""
- "<![CDATA[User user = (User) session.createCriteria(User.class)\n"
- " .setFetchMode(\"permissions\", FetchMode.JOIN)\n"
- " .add( Restrictions.idEq(userId) )\n"
- " .uniqueResult();]]>"
+"<![CDATA[User user = (User) session.createCriteria(User.class)\n"
+" .setFetchMode(\"permissions\", FetchMode.JOIN)\n"
+" .add( Restrictions.idEq(userId) )\n"
+" .uniqueResult();]]>"
msgstr ""
- "<![CDATA[User user = (User) session.createCriteria(User.class)\n"
- " .setFetchMode(\"permissions\", FetchMode.JOIN)\n"
- " .add( Restrictions.idEq(userId) )\n"
- " .uniqueResult();]]>"
-#: index.docbook:231
-msgid "(This is Hibernate's equivalent of what some ORM solutions call a \"fetch plan\".)"
-msgstr "(이것은 몇몇 ORM 솔루션들이 \"페치 계획\"이라고 부르는 것에 대한 Hibernate의 등가물이다.)"
+#. Tag: para
+#: performance.xml:231
+#, no-c-format
+msgid ""
+"(This is Hibernate's equivalent of what some ORM solutions call a \"fetch "
+"plan\".)"
+msgstr ""
+"(이것은 몇몇 ORM 솔루션들이 \"페치 계획\"이라고 부르는 것에 대한 Hibernate의 "
+"등가물이다.)"
-#: index.docbook:235
-msgid "A completely different way to avoid problems with N+1 selects is to use the second-level cache."
-msgstr "N+1 개의 select들을 가진 문제점들을 피하는 완전히 다른 방법은 second-level 캐시를 사용하는 것이다."
+#. Tag: para
+#: performance.xml:235
+#, no-c-format
+msgid ""
+"A completely different way to avoid problems with N+1 selects is to use the "
+"second-level cache."
+msgstr ""
+"N+1 개의 select들을 가진 문제점들을 피하는 완전히 다른 방법은 second-level 캐"
+"시를 사용하는 것이다."
-#: index.docbook:243
+#. Tag: title
+#: performance.xml:243
+#, no-c-format
msgid "Single-ended association proxies"
msgstr "Single-ended 연관 프락시"
-#: index.docbook:245
-msgid "Lazy fetching for collections is implemented using Hibernate's own implementation of persistent collections. However, a different mechanism is needed for lazy behavior in single-ended associations. The target entity of the association must be proxied. Hibernate implements lazy initializing proxies for persistent objects using runtime bytecode enhancement (via the excellent CGLIB library)."
-msgstr "콜렉션들에 대한 Lazy 페칭은 영속 콜렉션들에 대한 Hibernate 자신의 구현을 사용하여 구현된다. 하지만 다른 메커니즘은 single-ended 연관들에서 lazy 특징에 필요하다. 연관의 대상 엔티티는 프락시 되어야 한다. Hibernate는 (훌륭한 CGLIB 라이브러리를 통해) 런타임 바이트코드 증진을 사용하여 영속 객체들에 대한 lazy 초기화 프락시들을 구현한다."
+#. Tag: para
+#: performance.xml:245
+#, no-c-format
+msgid ""
+"Lazy fetching for collections is implemented using Hibernate's own "
+"implementation of persistent collections. However, a different mechanism is "
+"needed for lazy behavior in single-ended associations. The target entity of "
+"the association must be proxied. Hibernate implements lazy initializing "
+"proxies for persistent objects using runtime bytecode enhancement (via the "
+"excellent CGLIB library)."
+msgstr ""
+"콜렉션들에 대한 Lazy 페칭은 영속 콜렉션들에 대한 Hibernate 자신의 구현을 사용"
+"하여 구현된다. 하지만 다른 메커니즘은 single-ended 연관들에서 lazy 특징에 필"
+"요하다. 연관의 대상 엔티티는 프락시 되어야 한다. Hibernate는 (훌륭한 CGLIB 라"
+"이브러리를 통해) 런타임 바이트코드 증진을 사용하여 영속 객체들에 대한 lazy 초"
+"기화 프락시들을 구현한다."
-#: index.docbook:253
-msgid "By default, Hibernate3 generates proxies (at startup) for all persistent classes and uses them to enable lazy fetching of <literal>many-to-one</literal> and <literal>one-to-one</literal> associations."
-msgstr "디폴트로, Hibernate3는 모든 영속 클래스들에 대해 (시작 시에) 프락시들을 생성시키고 <literal>many-to-one</literal> 연관과 <literal>one-to-one</literal> 연관에 대해 lazy 페칭을 이용 가능하게 하는데 그것들을 사용한다."
+#. Tag: para
+#: performance.xml:253
+#, no-c-format
+msgid ""
+"By default, Hibernate3 generates proxies (at startup) for all persistent "
+"classes and uses them to enable lazy fetching of <literal>many-to-one</"
+"literal> and <literal>one-to-one</literal> associations."
+msgstr ""
+"디폴트로, Hibernate3는 모든 영속 클래스들에 대해 (시작 시에) 프락시들을 생성"
+"시키고 <literal>many-to-one</literal> 연관과 <literal>one-to-one</literal> 연"
+"관에 대해 lazy 페칭을 이용 가능하게 하는데 그것들을 사용한다."
-#: index.docbook:259
-msgid "The mapping file may declare an interface to use as the proxy interface for that class, with the <literal>proxy</literal> attribute. By default, Hibernate uses a subclass of the class. <emphasis>Note that the proxied class must implement a default constructor with at least package visibility. We recommend this constructor for all persistent classes!</emphasis>"
-msgstr "매핑 파일은 그 클래스에 대한 프락시 인터페이스로서 사용할, <literal>proxy</literal> 속성을 가진, 인터페이스를 선언할 수도 있다. 디폴트로 Hibernate는 그 클래스의 서브클래스를 사용한다. <emphasis>프락시된 클래스는 최소한의 패키지 가시성 (visibility)을 가진 디폴트 생성자를 구현해야 함을 노트하라. 우리는 모든 영속 클래스들에 대해 이 생성자를 권장한다!</emphasis>"
+#. Tag: para
+#: performance.xml:259
+#, no-c-format
+msgid ""
+"The mapping file may declare an interface to use as the proxy interface for "
+"that class, with the <literal>proxy</literal> attribute. By default, "
+"Hibernate uses a subclass of the class. <emphasis>Note that the proxied "
+"class must implement a default constructor with at least package visibility. "
+"We recommend this constructor for all persistent classes!</emphasis>"
+msgstr ""
+"매핑 파일은 그 클래스에 대한 프락시 인터페이스로서 사용할, <literal>proxy</"
+"literal> 속성을 가진, 인터페이스를 선언할 수도 있다. 디폴트로 Hibernate는 그 "
+"클래스의 서브클래스를 사용한다. <emphasis>프락시된 클래스는 최소한의 패키지 "
+"가시성 (visibility)을 가진 디폴트 생성자를 구현해야 함을 노트하라. 우리는 모"
+"든 영속 클래스들에 대해 이 생성자를 권장한다!</emphasis>"
-#: index.docbook:266
-msgid "There are some gotchas to be aware of when extending this approach to polymorphic classes, eg."
-msgstr "다형성 클래스들에 대해 이 접근법을 확장할 때 의식해야 하는 몇몇 난처함들이 존재한다. 예를 들면."
+#. Tag: para
+#: performance.xml:266
+#, no-c-format
+msgid ""
+"There are some gotchas to be aware of when extending this approach to "
+"polymorphic classes, eg."
+msgstr ""
+"다형성 클래스들에 대해 이 접근법을 확장할 때 의식해야 하는 몇몇 난처함들이 존"
+"재한다. 예를 들면."
-#: index.docbook:271
+#. Tag: programlisting
+#: performance.xml:271
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Cat\" proxy=\"Cat\">\n"
- " ......\n"
- " <subclass name=\"DomesticCat\">\n"
- " .....\n"
- " </subclass>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Cat\" proxy=\"Cat\">\n"
+" ......\n"
+" <subclass name=\"DomesticCat\">\n"
+" .....\n"
+" </subclass>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Cat\" proxy=\"Cat\">\n"
- " ......\n"
- " <subclass name=\"DomesticCat\">\n"
- " .....\n"
- " </subclass>\n"
- "</class>]]>"
-#: index.docbook:273
-msgid "Firstly, instances of <literal>Cat</literal> will never be castable to <literal>DomesticCat</literal>, even if the underlying instance is an instance of <literal>DomesticCat</literal>:"
-msgstr "첫 번째로, 심지어 기본 인스턴스가 <literal>DomesticCat</literal>의 인스턴스인 경우조차도, <literal>Cat</literal>의 인스턴스들은 결코 <literal>DomesticCat</literal>으로 타입캐스트가 가능하지 않을 것이다:"
+#. Tag: para
+#: performance.xml:273
+#, no-c-format
+msgid ""
+"Firstly, instances of <literal>Cat</literal> will never be castable to "
+"<literal>DomesticCat</literal>, even if the underlying instance is an "
+"instance of <literal>DomesticCat</literal>:"
+msgstr ""
+"첫 번째로, 심지어 기본 인스턴스가 <literal>DomesticCat</literal>의 인스턴스"
+"인 경우조차도, <literal>Cat</literal>의 인스턴스들은 결코 "
+"<literal>DomesticCat</literal>으로 타입캐스트가 가능하지 않을 것이다:"
-#: index.docbook:279
+#. Tag: programlisting
+#: performance.xml:279
+#, no-c-format
msgid ""
- "<![CDATA[Cat cat = (Cat) session.load(Cat.class, id); // instantiate a proxy (does not hit the db)\n"
- "if ( cat.isDomesticCat() ) { // hit the db to initialize the proxy\n"
- " DomesticCat dc = (DomesticCat) cat; // Error!\n"
- " ....\n"
- "}]]>"
+"<![CDATA[Cat cat = (Cat) session.load(Cat.class, id); // instantiate a "
+"proxy (does not hit the db)\n"
+"if ( cat.isDomesticCat() ) { // hit the db to initialize "
+"the proxy\n"
+" DomesticCat dc = (DomesticCat) cat; // Error!\n"
+" ....\n"
+"}]]>"
msgstr ""
- "<![CDATA[Cat cat = (Cat) session.load(Cat.class, id); // instantiate a proxy (does not hit the db)\n"
- "if ( cat.isDomesticCat() ) { // hit the db to initialize the proxy\n"
- " DomesticCat dc = (DomesticCat) cat; // Error!\n"
- " ....\n"
- "}]]>"
-#: index.docbook:281
+#. Tag: para
+#: performance.xml:281
+#, no-c-format
msgid "Secondly, it is possible to break proxy <literal>==</literal>."
msgstr "두번째로, 프락시 <literal>==</literal>를 파기할 가능성이 있다."
-#: index.docbook:285
+#. Tag: programlisting
+#: performance.xml:285
+#, no-c-format
msgid ""
- "<![CDATA[Cat cat = (Cat) session.load(Cat.class, id); // instantiate a Cat proxy\n"
- "DomesticCat dc = \n"
- " (DomesticCat) session.load(DomesticCat.class, id); // acquire new DomesticCat proxy!\n"
- "System.out.println(cat==dc); // false]]>"
+"<![CDATA[Cat cat = (Cat) session.load(Cat.class, id); // "
+"instantiate a Cat proxy\n"
+"DomesticCat dc = \n"
+" (DomesticCat) session.load(DomesticCat.class, id); // acquire new "
+"DomesticCat proxy!\n"
+"System.out.println(cat==dc); // false]]>"
msgstr ""
- "<![CDATA[Cat cat = (Cat) session.load(Cat.class, id); // instantiate a Cat proxy\n"
- "DomesticCat dc = \n"
- " (DomesticCat) session.load(DomesticCat.class, id); // acquire new DomesticCat proxy!\n"
- "System.out.println(cat==dc); // false]]>"
-#: index.docbook:287
-msgid "However, the situation is not quite as bad as it looks. Even though we now have two references to different proxy objects, the underlying instance will still be the same object:"
-msgstr "하지만, 그 경우는 보이는 만큼 그렇게 나쁘지는 않다. 심지어 우리가 이제 다른 프락시 객체들에 대한 두 개의 참조를 가질지라도, 기본 인스턴스는 여전히 동일한 객체들일 것이다:"
+#. Tag: para
+#: performance.xml:287
+#, no-c-format
+msgid ""
+"However, the situation is not quite as bad as it looks. Even though we now "
+"have two references to different proxy objects, the underlying instance will "
+"still be the same object:"
+msgstr ""
+"하지만, 그 경우는 보이는 만큼 그렇게 나쁘지는 않다. 심지어 우리가 이제 다른 "
+"프락시 객체들에 대한 두 개의 참조를 가질지라도, 기본 인스턴스는 여전히 동일"
+"한 객체들일 것이다:"
-#: index.docbook:292
+#. Tag: programlisting
+#: performance.xml:292
+#, no-c-format
msgid ""
- "<![CDATA[cat.setWeight(11.0); // hit the db to initialize the proxy\n"
- "System.out.println( dc.getWeight() ); // 11.0]]>"
+"<![CDATA[cat.setWeight(11.0); // hit the db to initialize the proxy\n"
+"System.out.println( dc.getWeight() ); // 11.0]]>"
msgstr ""
- "<![CDATA[cat.setWeight(11.0); // hit the db to initialize the proxy\n"
- "System.out.println( dc.getWeight() ); // 11.0]]>"
-#: index.docbook:294
-msgid "Third, you may not use a CGLIB proxy for a <literal>final</literal> class or a class with any <literal>final</literal> methods."
-msgstr "세번째로, 당신은 <literal>final</literal> 클래스 또는 임의의 <literal>final</literal> 메소드들을 가진 클래스에 대해 CGLIB 프락시를 사용하지 않을 수 있다."
+#. Tag: para
+#: performance.xml:294
+#, no-c-format
+msgid ""
+"Third, you may not use a CGLIB proxy for a <literal>final</literal> class or "
+"a class with any <literal>final</literal> methods."
+msgstr ""
+"세번째로, 당신은 <literal>final</literal> 클래스 또는 임의의 <literal>final</"
+"literal> 메소드들을 가진 클래스에 대해 CGLIB 프락시를 사용하지 않을 수 있다."
-#: index.docbook:299
-msgid "Finally, if your persistent object acquires any resources upon instantiation (eg. in initializers or default constructor), then those resources will also be acquired by the proxy. The proxy class is an actual subclass of the persistent class."
-msgstr "마지막으로, 만일 당신의 영속 객체가 초기화 시에 어떤 리소스들을 필요로 할 경우(예를 들어, initializer들 또는 디폴트 생성자 내에서), 그때 그들 리소스들이 또한 프락시에 의해 획득될 것이다. 프락시 클래스는 영속 클래스에 대한 실제 서브클래스이다."
+#. Tag: para
+#: performance.xml:299
+#, no-c-format
+msgid ""
+"Finally, if your persistent object acquires any resources upon instantiation "
+"(eg. in initializers or default constructor), then those resources will also "
+"be acquired by the proxy. The proxy class is an actual subclass of the "
+"persistent class."
+msgstr ""
+"마지막으로, 만일 당신의 영속 객체가 초기화 시에 어떤 리소스들을 필요로 할 경"
+"우(예를 들어, initializer들 또는 디폴트 생성자 내에서), 그때 그들 리소스들이 "
+"또한 프락시에 의해 획득될 것이다. 프락시 클래스는 영속 클래스에 대한 실제 서"
+"브클래스이다."
-#: index.docbook:305
-msgid "These problems are all due to fundamental limitations in Java's single inheritance model. If you wish to avoid these problems your persistent classes must each implement an interface that declares its business methods. You should specify these interfaces in the mapping file. eg."
-msgstr "이들 문제점들은 모두 자바의 단일 상속 모형의 기본적인 제약 때문이다. 만일 당신이 이들 문제점들을 피하고자 원할 경우 당신의 영속 클래스들은 각각 그것의 비지니스 메소드들을 선언하는 인터페이스를 구현해야 한다. 당신은 매핑 파일 속에 이들 인터페이스들을 지정해야 한다. 예를 들면."
+#. Tag: para
+#: performance.xml:305
+#, no-c-format
+msgid ""
+"These problems are all due to fundamental limitations in Java's single "
+"inheritance model. If you wish to avoid these problems your persistent "
+"classes must each implement an interface that declares its business methods. "
+"You should specify these interfaces in the mapping file. eg."
+msgstr ""
+"이들 문제점들은 모두 자바의 단일 상속 모형의 기본적인 제약 때문이다. 만일 당"
+"신이 이들 문제점들을 피하고자 원할 경우 당신의 영속 클래스들은 각각 그것의 비"
+"지니스 메소드들을 선언하는 인터페이스를 구현해야 한다. 당신은 매핑 파일 속에 "
+"이들 인터페이스들을 지정해야 한다. 예를 들면."
-#: index.docbook:311
+#. Tag: programlisting
+#: performance.xml:311
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"CatImpl\" proxy=\"Cat\">\n"
- " ......\n"
- " <subclass name=\"DomesticCatImpl\" proxy=\"DomesticCat\">\n"
- " .....\n"
- " </subclass>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"CatImpl\" proxy=\"Cat\">\n"
+" ......\n"
+" <subclass name=\"DomesticCatImpl\" proxy=\"DomesticCat\">\n"
+" .....\n"
+" </subclass>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"CatImpl\" proxy=\"Cat\">\n"
- " ......\n"
- " <subclass name=\"DomesticCatImpl\" proxy=\"DomesticCat\">\n"
- " .....\n"
- " </subclass>\n"
- "</class>]]>"
-#: index.docbook:313
-msgid "where <literal>CatImpl</literal> implements the interface <literal>Cat</literal> and <literal>DomesticCatImpl</literal> implements the interface <literal>DomesticCat</literal>. Then proxies for instances of <literal>Cat</literal> and <literal>DomesticCat</literal> may be returned by <literal>load()</literal> or <literal>iterate()</literal>. (Note that <literal>list()</literal> does not usually return proxies.)"
-msgstr "여기서 <literal>CatImpl</literal>은 <literal>Cat</literal> 인터페이스를 구현하고 <literal>DomesticCatImpl</literal>은 <literal>DomesticCat</literal> 인터페이스를 구현한다. 그때 <literal>Cat</literal>과 <literal>DomesticCat</literal>의 인스턴스들에 대한 프락시들은 <literal>load()</literal> 또는 <literal>iterate()</literal>에 의해 반환될 수 있다. (<literal>list()</literal>가 대개 프락시들을 반환하지 않음을 노트하라.)"
+#. Tag: para
+#: performance.xml:313
+#, no-c-format
+msgid ""
+"where <literal>CatImpl</literal> implements the interface <literal>Cat</"
+"literal> and <literal>DomesticCatImpl</literal> implements the interface "
+"<literal>DomesticCat</literal>. Then proxies for instances of <literal>Cat</"
+"literal> and <literal>DomesticCat</literal> may be returned by <literal>load"
+"()</literal> or <literal>iterate()</literal>. (Note that <literal>list()</"
+"literal> does not usually return proxies.)"
+msgstr ""
+"여기서 <literal>CatImpl</literal>은 <literal>Cat</literal> 인터페이스를 구현"
+"하고 <literal>DomesticCatImpl</literal>은 <literal>DomesticCat</literal> 인터"
+"페이스를 구현한다. 그때 <literal>Cat</literal>과 <literal>DomesticCat</"
+"literal>의 인스턴스들에 대한 프락시들은 <literal>load()</literal> 또는 "
+"<literal>iterate()</literal>에 의해 반환될 수 있다. (<literal>list()</"
+"literal>가 대개 프락시들을 반환하지 않음을 노트하라.)"
-#: index.docbook:321
+#. Tag: programlisting
+#: performance.xml:321
+#, no-c-format
msgid ""
- "<![CDATA[Cat cat = (Cat) session.load(CatImpl.class, catid);\n"
- "Iterator iter = session.createQuery(\"from CatImpl as cat where cat.name='fritz'\").iterate();\n"
- "Cat fritz = (Cat) iter.next();]]>"
+"<![CDATA[Cat cat = (Cat) session.load(CatImpl.class, catid);\n"
+"Iterator iter = session.createQuery(\"from CatImpl as cat where cat."
+"name='fritz'\").iterate();\n"
+"Cat fritz = (Cat) iter.next();]]>"
msgstr ""
- "<![CDATA[Cat cat = (Cat) session.load(CatImpl.class, catid);\n"
- "Iterator iter = session.createQuery(\"from CatImpl as cat where cat.name='fritz'\").iterate();\n"
- "Cat fritz = (Cat) iter.next();]]>"
-#: index.docbook:323
-msgid "Relationships are also lazily initialized. This means you must declare any properties to be of type <literal>Cat</literal>, not <literal>CatImpl</literal>."
-msgstr "관계들은 또한 lazy 초기화 된다. 이것은 당신이 임의의 프로퍼티들을 <literal>CatImpl</literal> 타입이 아닌 <literal>Cat</literal> 타입으로 선언해야 함을 의미한다."
+#. Tag: para
+#: performance.xml:323
+#, no-c-format
+msgid ""
+"Relationships are also lazily initialized. This means you must declare any "
+"properties to be of type <literal>Cat</literal>, not <literal>CatImpl</"
+"literal>."
+msgstr ""
+"관계들은 또한 lazy 초기화 된다. 이것은 당신이 임의의 프로퍼티들을 "
+"<literal>CatImpl</literal> 타입이 아닌 <literal>Cat</literal> 타입으로 선언해"
+"야 함을 의미한다."
-#: index.docbook:328
-msgid "Certain operations do <emphasis>not</emphasis> require proxy initialization"
-msgstr "어떤 오퍼레이션들은 프락시 초기화를 필요로 하지 <emphasis>않는다</emphasis>"
+#. Tag: para
+#: performance.xml:328
+#, no-c-format
+msgid ""
+"Certain operations do <emphasis>not</emphasis> require proxy initialization"
+msgstr ""
+"어떤 오퍼레이션들은 프락시 초기화를 필요로 하지 <emphasis>않는다</emphasis>"
-#: index.docbook:334
-msgid "<literal>equals()</literal>, if the persistent class does not override <literal>equals()</literal>"
-msgstr "<literal>equals()</literal>, 만일 영속 클래스가 <literal>equals()</literal>를 오버라이드 시키지 않는 경우"
+#. Tag: para
+#: performance.xml:334
+#, no-c-format
+msgid ""
+"<literal>equals()</literal>, if the persistent class does not override "
+"<literal>equals()</literal>"
+msgstr ""
+"<literal>equals()</literal>, 만일 영속 클래스가 <literal>equals()</literal>"
+"를 오버라이드 시키지 않는 경우"
-#: index.docbook:340
-msgid "<literal>hashCode()</literal>, if the persistent class does not override <literal>hashCode()</literal>"
-msgstr "<literal>hashCode()</literal>, 만일 영속 클래스가<literal>hashCode()</literal>를 오버라이드 시키지 않는 경우"
+#. Tag: para
+#: performance.xml:340
+#, no-c-format
+msgid ""
+"<literal>hashCode()</literal>, if the persistent class does not override "
+"<literal>hashCode()</literal>"
+msgstr ""
+"<literal>hashCode()</literal>, 만일 영속 클래스가<literal>hashCode()</"
+"literal>를 오버라이드 시키지 않는 경우"
-#: index.docbook:346
+#. Tag: para
+#: performance.xml:346
+#, no-c-format
msgid "The identifier getter method"
msgstr "식별자 getter 메소드"
-#: index.docbook:352
-msgid "Hibernate will detect persistent classes that override <literal>equals()</literal> or <literal>hashCode()</literal>."
-msgstr "Hibernate는 <literal>equals()</literal> 또는 <literal>hashCode()</literal>를 오버라이드 시키는 영속 클래스들을 검출할 것이다."
+#. Tag: para
+#: performance.xml:352
+#, no-c-format
+msgid ""
+"Hibernate will detect persistent classes that override <literal>equals()</"
+"literal> or <literal>hashCode()</literal>."
+msgstr ""
+"Hibernate는 <literal>equals()</literal> 또는 <literal>hashCode()</literal>를 "
+"오버라이드 시키는 영속 클래스들을 검출할 것이다."
-#: index.docbook:357
-msgid "By choosing <literal>lazy=\"no-proxy\"</literal> instead of the default <literal>lazy=\"proxy\"</literal>, we can avoid the problems associated with typecasting. However, we will require buildtime bytecode instrumentation, and all operations will result in immediate proxy initialization."
-msgstr "디폴트 <literal>lazy=\"proxy\"</literal> 대신에 <literal>lazy=\"no-proxy\"</literal>를 선택하여, 우리는 타입캐스팅과 연관된 문제점들을 피할 수 있다. 하지만 우리는 빌드 시 바이트코드 수단을 필요로 할 것이고, 모든 연산들은 즉각적인 프락시 초기화로 귀결될 것이다."
+#. Tag: para
+#: performance.xml:357
+#, no-c-format
+msgid ""
+"By choosing <literal>lazy=\"no-proxy\"</literal> instead of the default "
+"<literal>lazy=\"proxy\"</literal>, we can avoid the problems associated with "
+"typecasting. However, we will require buildtime bytecode instrumentation, "
+"and all operations will result in immediate proxy initialization."
+msgstr ""
+"디폴트 <literal>lazy=\"proxy\"</literal> 대신에 <literal>lazy=\"no-proxy\"</"
+"literal>를 선택하여, 우리는 타입캐스팅과 연관된 문제점들을 피할 수 있다. 하지"
+"만 우리는 빌드 시 바이트코드 수단을 필요로 할 것이고, 모든 연산들은 즉각적인 "
+"프락시 초기화로 귀결될 것이다."
-#: index.docbook:367
+#. Tag: title
+#: performance.xml:367
+#, no-c-format
msgid "Initializing collections and proxies"
msgstr "콜렉션들과 프락시들을 초기화 시키기"
-#: index.docbook:369
-msgid "A <literal>LazyInitializationException</literal> will be thrown by Hibernate if an uninitialized collection or proxy is accessed outside of the scope of the <literal>Session</literal>, ie. when the entity owning the collection or having the reference to the proxy is in the detached state."
-msgstr "만일 초기화 되지 않은 콜렉션이나 프락시가 <literal>Session</literal> 영역의 외부에서 접근될 경우에, 예를 들어 콜렉션을 소유하거나 프락시에 대한 참조를 가진 엔티티가 detached 상태에 있을 때, <literal>LazyInitializationException</literal>이 Hibernate에 의해 던져질 것이다."
+#. Tag: para
+#: performance.xml:369
+#, no-c-format
+msgid ""
+"A <literal>LazyInitializationException</literal> will be thrown by Hibernate "
+"if an uninitialized collection or proxy is accessed outside of the scope of "
+"the <literal>Session</literal>, ie. when the entity owning the collection or "
+"having the reference to the proxy is in the detached state."
+msgstr ""
+"만일 초기화 되지 않은 콜렉션이나 프락시가 <literal>Session</literal> 영역의 "
+"외부에서 접근될 경우에, 예를 들어 콜렉션을 소유하거나 프락시에 대한 참조를 가"
+"진 엔티티가 detached 상태에 있을 때, <literal>LazyInitializationException</"
+"literal>이 Hibernate에 의해 던져질 것이다."
-#: index.docbook:375
-msgid "Sometimes we need to ensure that a proxy or collection is initialized before closing the <literal>Session</literal>. Of course, we can alway force initialization by calling <literal>cat.getSex()</literal> or <literal>cat.getKittens().size()</literal>, for example. But that is confusing to readers of the code and is not convenient for generic code."
-msgstr "때때로 우리는<literal>Session</literal>을 닫기 전에 프락시 또는 콜렉션이 초기화 됨을 확실히 할 필요가 있다. 물론 우리는 예를 들어 <literal>cat.getSex()</literal> 또는 <literal>cat.getKittens().size()</literal>를 호출하여 항상 초기화를 강제시킬 수 있다. 그러나 그것은 코드의 독자들에게는 혼동스럽고 일반적인 코드로 편의적이지 않다."
+#. Tag: para
+#: performance.xml:375
+#, no-c-format
+msgid ""
+"Sometimes we need to ensure that a proxy or collection is initialized before "
+"closing the <literal>Session</literal>. Of course, we can alway force "
+"initialization by calling <literal>cat.getSex()</literal> or <literal>cat."
+"getKittens().size()</literal>, for example. But that is confusing to readers "
+"of the code and is not convenient for generic code."
+msgstr ""
+"때때로 우리는<literal>Session</literal>을 닫기 전에 프락시 또는 콜렉션이 초기"
+"화 됨을 확실히 할 필요가 있다. 물론 우리는 예를 들어 <literal>cat.getSex()</"
+"literal> 또는 <literal>cat.getKittens().size()</literal>를 호출하여 항상 초기"
+"화를 강제시킬 수 있다. 그러나 그것은 코드의 독자들에게는 혼동스럽고 일반적인 "
+"코드로 편의적이지 않다."
-#: index.docbook:382
-msgid "The static methods <literal>Hibernate.initialize()</literal> and <literal>Hibernate.isInitialized()</literal> provide the application with a convenient way of working with lazily initialized collections or proxies. <literal>Hibernate.initialize(cat)</literal> will force the initialization of a proxy, <literal>cat</literal>, as long as its <literal>Session</literal> is still open. <literal>Hibernate.initialize( cat.getKittens() )</literal> has a similar effect for the collection of kittens."
-msgstr "static 메소드들 <literal>Hibernate.initialize()</literal>와 <literal>Hibernate.isInitialized()</literal>는 lazy 초기화 된 콜렉션들이나 프락시들에 대해 작업하는 편리한 방법을 어플리케이션에 제공한다. <literal>Hibernate.initialize(cat)</literal>은 그것의 <literal>Session</literal>이 여전히 열려져 있는 한 프락시 <literal>cat</literal>의 초기화를 강제할 것이다. <literal>Hibernate.initialize( cat.getKittens())</literal>는 kittens의 콜렉션에 대해 유사한 효과를 갖는다."
+#. Tag: para
+#: performance.xml:382
+#, no-c-format
+msgid ""
+"The static methods <literal>Hibernate.initialize()</literal> and "
+"<literal>Hibernate.isInitialized()</literal> provide the application with a "
+"convenient way of working with lazily initialized collections or proxies. "
+"<literal>Hibernate.initialize(cat)</literal> will force the initialization "
+"of a proxy, <literal>cat</literal>, as long as its <literal>Session</"
+"literal> is still open. <literal>Hibernate.initialize( cat.getKittens() )</"
+"literal> has a similar effect for the collection of kittens."
+msgstr ""
+"static 메소드들 <literal>Hibernate.initialize()</literal>와 "
+"<literal>Hibernate.isInitialized()</literal>는 lazy 초기화 된 콜렉션들이나 프"
+"락시들에 대해 작업하는 편리한 방법을 어플리케이션에 제공한다. "
+"<literal>Hibernate.initialize(cat)</literal>은 그것의 <literal>Session</"
+"literal>이 여전히 열려져 있는 한 프락시 <literal>cat</literal>의 초기화를 강"
+"제할 것이다. <literal>Hibernate.initialize( cat.getKittens())</literal>는 "
+"kittens의 콜렉션에 대해 유사한 효과를 갖는다."
-#: index.docbook:391
-msgid "Another option is to keep the <literal>Session</literal> open until all needed collections and proxies have been loaded. In some application architectures, particularly where the code that accesses data using Hibernate, and the code that uses it are in different application layers or different physical processes, it can be a problem to ensure that the <literal>Session</literal> is open when a collection is initialized. There are two basic ways to deal with this issue:"
-msgstr "또 다른 옵션은 모든 필요한 콜렉션들과 프락시들이 로드되기 전까지 <literal>Session</literal>을 열린 채로 유지하는 것이다. 몇몇 어플리케이션 아키텍처들, 특히 Hibernate를 사용하여 데이터에 접근하는 코드, 그리고 다른 어플리케이션 계층들이나 다른 물리적 프로세스들 내에서 그것을 사용하는 코드에서, 그것은 콜렉션이 초기화 될 때 <literal>Session</literal>이 열려져 있음을 확실히 하는 문제일 수 있다. 이 쟁점을 다루는 두 가지 기본 방법들이 존재한다:"
+#. Tag: para
+#: performance.xml:391
+#, no-c-format
+msgid ""
+"Another option is to keep the <literal>Session</literal> open until all "
+"needed collections and proxies have been loaded. In some application "
+"architectures, particularly where the code that accesses data using "
+"Hibernate, and the code that uses it are in different application layers or "
+"different physical processes, it can be a problem to ensure that the "
+"<literal>Session</literal> is open when a collection is initialized. There "
+"are two basic ways to deal with this issue:"
+msgstr ""
+"또 다른 옵션은 모든 필요한 콜렉션들과 프락시들이 로드되기 전까지 "
+"<literal>Session</literal>을 열린 채로 유지하는 것이다. 몇몇 어플리케이션 아"
+"키텍처들, 특히 Hibernate를 사용하여 데이터에 접근하는 코드, 그리고 다른 어플"
+"리케이션 계층들이나 다른 물리적 프로세스들 내에서 그것을 사용하는 코드에서, "
+"그것은 콜렉션이 초기화 될 때 <literal>Session</literal>이 열려져 있음을 확실"
+"히 하는 문제일 수 있다. 이 쟁점을 다루는 두 가지 기본 방법들이 존재한다:"
-#: index.docbook:402
-msgid "In a web-based application, a servlet filter can be used to close the <literal>Session</literal> only at the very end of a user request, once the rendering of the view is complete (the <emphasis>Open Session in View</emphasis> pattern). Of course, this places heavy demands on the correctness of the exception handling of your application infrastructure. It is vitally important that the <literal>Session</literal> is closed and the transaction ended before returning to the user, even when an exception occurs during rendering of the view. See the Hibernate Wiki for examples of this \"Open Session in View\" pattern."
-msgstr "웹 기반 어플리케이션에서, 서블릿 필터는 뷰 렌더링이 완료되는, 사용자 요청의 바로 끝에서만 <literal>Session</literal>을 닫는데 사용될 수 있다(<emphasis>Open Session in View</emphasis> 패턴). 물론 이것은 당신의 어플리케이션 인프라스트럭처의 예외상황 처리의 정정에 관한 무거운 요구를 부과한다. 뷰 렌더링 동안에 하나의 예외상황이 발생할때에도 사용자에게 반환되기 전에 <literal>Session</literal>이 닫혀지고 트랜잭션이 종료되는 것은 지극히 중요하다. 이 \"Open Session in View\" 패턴에 관한 예제들은 Hibernate 위키를 보라."
+#. Tag: para
+#: performance.xml:402
+#, no-c-format
+msgid ""
+"In a web-based application, a servlet filter can be used to close the "
+"<literal>Session</literal> only at the very end of a user request, once the "
+"rendering of the view is complete (the <emphasis>Open Session in View</"
+"emphasis> pattern). Of course, this places heavy demands on the correctness "
+"of the exception handling of your application infrastructure. It is vitally "
+"important that the <literal>Session</literal> is closed and the transaction "
+"ended before returning to the user, even when an exception occurs during "
+"rendering of the view. See the Hibernate Wiki for examples of this \"Open "
+"Session in View\" pattern."
+msgstr ""
+"웹 기반 어플리케이션에서, 서블릿 필터는 뷰 렌더링이 완료되는, 사용자 요청의 "
+"바로 끝에서만 <literal>Session</literal>을 닫는데 사용될 수 있다"
+"(<emphasis>Open Session in View</emphasis> 패턴). 물론 이것은 당신의 어플리케"
+"이션 인프라스트럭처의 예외상황 처리의 정정에 관한 무거운 요구를 부과한다. 뷰 "
+"렌더링 동안에 하나의 예외상황이 발생할때에도 사용자에게 반환되기 전에 "
+"<literal>Session</literal>이 닫혀지고 트랜잭션이 종료되는 것은 지극히 중요하"
+"다. 이 \"Open Session in View\" 패턴에 관한 예제들은 Hibernate 위키를 보라."
-#: index.docbook:415
-msgid "In an application with a separate business tier, the business logic must \"prepare\" all collections that will be needed by the web tier before returning. This means that the business tier should load all the data and return all the data already initialized to the presentation/web tier that is required for a particular use case. Usually, the application calls <literal>Hibernate.initialize()</literal> for each collection that will be needed in the web tier (this call must occur before the session is closed) or retrieves the collection eagerly using a Hibernate query with a <literal>FETCH</literal> clause or a <literal>FetchMode.JOIN</literal> in <literal>Criteria</literal>. This is usually easier if you adopt the <emphasis>Command</emphasis> pattern instead of a <emphasis>Session Facade</emphasis>."
-msgstr "별도의 비지니스 티어를 가진 어플리케이션에서, 비지니스 로직은 반환 전에 웹 티어에 필요한 모든 콜렉션들을 \"준비\"해야 한다. 이것은 비지니스 티어가 모든 데이터를 로드시키고 이미 초기화된 모든 데이터를 특정 쓰임새에 필요한 프리젠테이션/웹 티어로 반환해야 함을 의미한다. 대개 어플리케이션은 웹 티어에 필요하게 될 각각의 콜렉션에 대해 <literal>Hibernate.initialize()</literal>를 호출하거나(이 호출은 세션이 닫히기 전에 발생해야 한다) 또는 <literal>FETCH</literal> 절을 갖거나 또는 <literal>Criteria</literal> 내에 <literal>FetchMode.JOIN</literal>을 가진 Hibernate 질의를 사용하여 콜렉션을 열심히 검색한다. 이것은 대개 당신이 <emphasis>Session Facade</emphasis> 대신 <emphasis>Command</emphasis> 패턴을 채택할 경우에 더 쉽다."
+#. Tag: para
+#: performance.xml:415
+#, no-c-format
+msgid ""
+"In an application with a separate business tier, the business logic must "
+"\"prepare\" all collections that will be needed by the web tier before "
+"returning. This means that the business tier should load all the data and "
+"return all the data already initialized to the presentation/web tier that is "
+"required for a particular use case. Usually, the application calls "
+"<literal>Hibernate.initialize()</literal> for each collection that will be "
+"needed in the web tier (this call must occur before the session is closed) "
+"or retrieves the collection eagerly using a Hibernate query with a "
+"<literal>FETCH</literal> clause or a <literal>FetchMode.JOIN</literal> in "
+"<literal>Criteria</literal>. This is usually easier if you adopt the "
+"<emphasis>Command</emphasis> pattern instead of a <emphasis>Session Facade</"
+"emphasis>."
+msgstr ""
+"별도의 비지니스 티어를 가진 어플리케이션에서, 비지니스 로직은 반환 전에 웹 티"
+"어에 필요한 모든 콜렉션들을 \"준비\"해야 한다. 이것은 비지니스 티어가 모든 데"
+"이터를 로드시키고 이미 초기화된 모든 데이터를 특정 쓰임새에 필요한 프리젠테이"
+"션/웹 티어로 반환해야 함을 의미한다. 대개 어플리케이션은 웹 티어에 필요하게 "
+"될 각각의 콜렉션에 대해 <literal>Hibernate.initialize()</literal>를 호출하거"
+"나(이 호출은 세션이 닫히기 전에 발생해야 한다) 또는 <literal>FETCH</literal> "
+"절을 갖거나 또는 <literal>Criteria</literal> 내에 <literal>FetchMode.JOIN</"
+"literal>을 가진 Hibernate 질의를 사용하여 콜렉션을 열심히 검색한다. 이것은 대"
+"개 당신이 <emphasis>Session Facade</emphasis> 대신 <emphasis>Command</"
+"emphasis> 패턴을 채택할 경우에 더 쉽다."
-#: index.docbook:430
-msgid "You may also attach a previously loaded object to a new <literal>Session</literal> with <literal>merge()</literal> or <literal>lock()</literal> before accessing uninitialized collections (or other proxies). No, Hibernate does not, and certainly <emphasis>should</emphasis> not do this automatically, since it would introduce ad hoc transaction semantics!"
-msgstr "당신은 또한 초기화 되지 않은 콜렉션들(또는 다른 프락시들)에 접근하기 전에 <literal>merge()</literal> 또는 <literal>lock()</literal>으로 앞서 로드된 객체를 새로운 <literal>Session</literal>n에 첨부할 수도 있다. 아니다. Hibernate는 이것을 자동적으로 행하지 않고, 확실히 자동적으로 행하지 <emphasis>않을 것이다</emphasis>. 왜냐하면 그것은 특별한 목적을 위한 트랜잭션 의미를 도입할 것이기 때문이다!"
+#. Tag: para
+#: performance.xml:430
+#, no-c-format
+msgid ""
+"You may also attach a previously loaded object to a new <literal>Session</"
+"literal> with <literal>merge()</literal> or <literal>lock()</literal> before "
+"accessing uninitialized collections (or other proxies). No, Hibernate does "
+"not, and certainly <emphasis>should</emphasis> not do this automatically, "
+"since it would introduce ad hoc transaction semantics!"
+msgstr ""
+"당신은 또한 초기화 되지 않은 콜렉션들(또는 다른 프락시들)에 접근하기 전에 "
+"<literal>merge()</literal> 또는 <literal>lock()</literal>으로 앞서 로드된 객"
+"체를 새로운 <literal>Session</literal>n에 첨부할 수도 있다. 아니다. Hibernate"
+"는 이것을 자동적으로 행하지 않고, 확실히 자동적으로 행하지 <emphasis>않을 것"
+"이다</emphasis>. 왜냐하면 그것은 특별한 목적을 위한 트랜잭션 의미를 도입할 것"
+"이기 때문이다!"
-#: index.docbook:440
-msgid "Sometimes you don't want to initialize a large collection, but still need some information about it (like its size) or a subset of the data."
-msgstr "때때로 당신은 거대한 콜렉션을 초기화 시키는 것을 원하지 않지만, 여전히 (그것의 사이즈와 같은) 그것에 대한 어떤 정보 또는 데이터의 부분집합을 필요로 한다."
+#. Tag: para
+#: performance.xml:440
+#, no-c-format
+msgid ""
+"Sometimes you don't want to initialize a large collection, but still need "
+"some information about it (like its size) or a subset of the data."
+msgstr ""
+"때때로 당신은 거대한 콜렉션을 초기화 시키는 것을 원하지 않지만, 여전히 (그것"
+"의 사이즈와 같은) 그것에 대한 어떤 정보 또는 데이터의 부분집합을 필요로 한다."
-#: index.docbook:445
-msgid "You can use a collection filter to get the size of a collection without initializing it:"
-msgstr "당신은 그것을 초기화 시키지 않고서 콜렉션의 사이즈를 얻는데 콜렉션 필터를 사용할 수 있다:"
+#. Tag: para
+#: performance.xml:445
+#, no-c-format
+msgid ""
+"You can use a collection filter to get the size of a collection without "
+"initializing it:"
+msgstr ""
+"당신은 그것을 초기화 시키지 않고서 콜렉션의 사이즈를 얻는데 콜렉션 필터를 사"
+"용할 수 있다:"
-#: index.docbook:449
-msgid "<![CDATA[( (Integer) s.createFilter( collection, \"select count(*)\" ).list().get(0) ).intValue()]]>"
-msgstr "<![CDATA[( (Integer) s.createFilter( collection, \"select count(*)\" ).list().get(0) ).intValue()]]>"
+#. Tag: programlisting
+#: performance.xml:449
+#, no-c-format
+msgid ""
+"<![CDATA[( (Integer) s.createFilter( collection, \"select count(*)\" ).list"
+"().get(0) ).intValue()]]>"
+msgstr ""
-#: index.docbook:451
-msgid "The <literal>createFilter()</literal> method is also used to efficiently retrieve subsets of a collection without needing to initialize the whole collection:"
-msgstr "<literal>createFilter()</literal> 메소드는 또한 전체 콜렉션을 초기화 시킬 필요 없이 콜렉션의 부분집합들을 효율적으로 검색하는데 사용된다:"
+#. Tag: para
+#: performance.xml:451
+#, no-c-format
+msgid ""
+"The <literal>createFilter()</literal> method is also used to efficiently "
+"retrieve subsets of a collection without needing to initialize the whole "
+"collection:"
+msgstr ""
+"<literal>createFilter()</literal> 메소드는 또한 전체 콜렉션을 초기화 시킬 필"
+"요 없이 콜렉션의 부분집합들을 효율적으로 검색하는데 사용된다:"
-#: index.docbook:456
-msgid "<![CDATA[s.createFilter( lazyCollection, \"\").setFirstResult(0).setMaxResults(10).list();]]>"
-msgstr "<![CDATA[s.createFilter( lazyCollection, \"\").setFirstResult(0).setMaxResults(10).list();]]>"
+#. Tag: programlisting
+#: performance.xml:456
+#, no-c-format
+msgid ""
+"<![CDATA[s.createFilter( lazyCollection, \"\").setFirstResult(0)."
+"setMaxResults(10).list();]]>"
+msgstr ""
-#: index.docbook:461
+#. Tag: title
+#: performance.xml:461
+#, no-c-format
msgid "Using batch fetching"
msgstr "batch 페칭 사용하기"
-#: index.docbook:463
-msgid "Hibernate can make efficient use of batch fetching, that is, Hibernate can load several uninitialized proxies if one proxy is accessed (or collections. Batch fetching is an optimization of the lazy select fetching strategy. There are two ways you can tune batch fetching: on the class and the collection level."
-msgstr "Hibernate는 배치 페칭을 효율적으로 사용할 수 있다. 즉 하나의 프락시가 액세스 될 경우에 Hibernate는 몇몇 초기화 되지 않은 프락시들을 로드시킬 수 있다(또는 콜렉션들). batch 페칭은 lazy select 페칭 방도에 대한 최적화이다. 당신이 batch 페칭을 튜닝시킬 수 있는 두 가지 방법들이 존재한다: 클래스 레벨에서 그리고 콜렉션 레벨에서."
+#. Tag: para
+#: performance.xml:463
+#, no-c-format
+msgid ""
+"Hibernate can make efficient use of batch fetching, that is, Hibernate can "
+"load several uninitialized proxies if one proxy is accessed (or collections. "
+"Batch fetching is an optimization of the lazy select fetching strategy. "
+"There are two ways you can tune batch fetching: on the class and the "
+"collection level."
+msgstr ""
+"Hibernate는 배치 페칭을 효율적으로 사용할 수 있다. 즉 하나의 프락시가 액세스 "
+"될 경우에 Hibernate는 몇몇 초기화 되지 않은 프락시들을 로드시킬 수 있다(또는 "
+"콜렉션들). batch 페칭은 lazy select 페칭 방도에 대한 최적화이다. 당신이 "
+"batch 페칭을 튜닝시킬 수 있는 두 가지 방법들이 존재한다: 클래스 레벨에서 그리"
+"고 콜렉션 레벨에서."
-#: index.docbook:469
-msgid "Batch fetching for classes/entities is easier to understand. Imagine you have the following situation at runtime: You have 25 <literal>Cat</literal> instances loaded in a <literal>Session</literal>, each <literal>Cat</literal> has a reference to its <literal>owner</literal>, a <literal>Person</literal>. The <literal>Person</literal> class is mapped with a proxy, <literal>lazy=\"true\"</literal>. If you now iterate through all cats and call <literal>getOwner()</literal> on each, Hibernate will by default execute 25 <literal>SELECT</literal> statements, to retrieve the proxied owners. You can tune this behavior by specifying a <literal>batch-size</literal> in the mapping of <literal>Person</literal>:"
-msgstr "클래스들/엔티티들에 대한 batch 페칭은 이해하기가 더 쉽다. 당신이 실행 시에 다음 상황에 처한다고 상상하라: 당신은 하나의 <literal>Session</literal> 속에 로드된 25개의 <literal>Cat</literal> 인스턴스들을 갖고 있고, 각각의 <literal>Cat</literal>은 그것의 <literal>소유자</literal> 즉, <literal>Person</literal>에 대한 참조를 갖고 있다. <literal>Person</literal> 클래스는 프락시 <literal>lazy=\"true\"</literal>로서 매핑된다. 만일 당신이 이제 모든 cat들을 통해 반복하고 각각의 cat에 대해 <literal>getOwner()</literal>를 호출할 경우, Hibernate는 프락시된 소유자들을 검색하기 위해 25개의 <literal>SELECT</literal> 문장들을 디폴트로 실행시킬 것이다. 당신은 <literal>Person</literal> 매핑에서 <literal>batch-size</literal>를 지정함으로써 이 동작을 튜닝시킬 수 있다:"
+#. Tag: para
+#: performance.xml:469
+#, no-c-format
+msgid ""
+"Batch fetching for classes/entities is easier to understand. Imagine you "
+"have the following situation at runtime: You have 25 <literal>Cat</literal> "
+"instances loaded in a <literal>Session</literal>, each <literal>Cat</"
+"literal> has a reference to its <literal>owner</literal>, a <literal>Person</"
+"literal>. The <literal>Person</literal> class is mapped with a proxy, "
+"<literal>lazy=\"true\"</literal>. If you now iterate through all cats and "
+"call <literal>getOwner()</literal> on each, Hibernate will by default "
+"execute 25 <literal>SELECT</literal> statements, to retrieve the proxied "
+"owners. You can tune this behavior by specifying a <literal>batch-size</"
+"literal> in the mapping of <literal>Person</literal>:"
+msgstr ""
+"클래스들/엔티티들에 대한 batch 페칭은 이해하기가 더 쉽다. 당신이 실행 시에 다"
+"음 상황에 처한다고 상상하라: 당신은 하나의 <literal>Session</literal> 속에 로"
+"드된 25개의 <literal>Cat</literal> 인스턴스들을 갖고 있고, 각각의 "
+"<literal>Cat</literal>은 그것의 <literal>소유자</literal> 즉, "
+"<literal>Person</literal>에 대한 참조를 갖고 있다. <literal>Person</literal> "
+"클래스는 프락시 <literal>lazy=\"true\"</literal>로서 매핑된다. 만일 당신이 이"
+"제 모든 cat들을 통해 반복하고 각각의 cat에 대해 <literal>getOwner()</literal>"
+"를 호출할 경우, Hibernate는 프락시된 소유자들을 검색하기 위해 25개의 "
+"<literal>SELECT</literal> 문장들을 디폴트로 실행시킬 것이다. 당신은 "
+"<literal>Person</literal> 매핑에서 <literal>batch-size</literal>를 지정함으로"
+"써 이 동작을 튜닝시킬 수 있다:"
-#: index.docbook:479
+#. Tag: programlisting
+#: performance.xml:479
+#, no-c-format
msgid "<![CDATA[<class name=\"Person\" batch-size=\"10\">...</class>]]>"
-msgstr "<![CDATA[<class name=\"Person\" batch-size=\"10\">...</class>]]>"
+msgstr ""
-#: index.docbook:481
-msgid "Hibernate will now execute only three queries, the pattern is 10, 10, 5."
-msgstr "Hibernate는 이제 세 개의 질의들 만을 실행시킬 것이고, 그 패턴은 10,10, 5 이다."
+#. Tag: para
+#: performance.xml:481
+#, no-c-format
+msgid ""
+"Hibernate will now execute only three queries, the pattern is 10, 10, 5."
+msgstr ""
+"Hibernate는 이제 세 개의 질의들 만을 실행시킬 것이고, 그 패턴은 10,10, 5 이"
+"다."
-#: index.docbook:485
-msgid "You may also enable batch fetching of collections. For example, if each <literal>Person</literal> has a lazy collection of <literal>Cat</literal>s, and 10 persons are currently loaded in the <literal>Sesssion</literal>, iterating through all persons will generate 10 <literal>SELECT</literal>s, one for every call to <literal>getCats()</literal>. If you enable batch fetching for the <literal>cats</literal> collection in the mapping of <literal>Person</literal>, Hibernate can pre-fetch collections:"
-msgstr "당신은 또한 콜렉션들에 대해 batch 페칭을 이용 가능하게 할 수도 있다. 예를 들어, 만일 각각의 <literal>Person</literal>이 <literal>Cat</literal>들을 가진 lazy 콜렉션을 갖고, 10개의 person들이 <literal>Sesssion</literal> 내에 현재 로드되어 있을 경우, 모든 person들에 대한 반복은 10개의 <literal>SELECT</literal>들을 생성시킬 것이고, <literal>getCats()</literal>에 대한 매번의 호출에 대해 하나의 <literal>SELECT</literal>를 생성시킬 것이다. 만일 당신이 <literal>Person</literal> 매핑에서 <literal>cats</literal> 콜렉션에 대해 batch 페칭을 사용가능하게 할 경우, Hibernate는 콜렉션들을 미리-페치 시킬 수 있다:"
+#. Tag: para
+#: performance.xml:485
+#, no-c-format
+msgid ""
+"You may also enable batch fetching of collections. For example, if each "
+"<literal>Person</literal> has a lazy collection of <literal>Cat</literal>s, "
+"and 10 persons are currently loaded in the <literal>Sesssion</literal>, "
+"iterating through all persons will generate 10 <literal>SELECT</literal>s, "
+"one for every call to <literal>getCats()</literal>. If you enable batch "
+"fetching for the <literal>cats</literal> collection in the mapping of "
+"<literal>Person</literal>, Hibernate can pre-fetch collections:"
+msgstr ""
+"당신은 또한 콜렉션들에 대해 batch 페칭을 이용 가능하게 할 수도 있다. 예를 들"
+"어, 만일 각각의 <literal>Person</literal>이 <literal>Cat</literal>들을 가진 "
+"lazy 콜렉션을 갖고, 10개의 person들이 <literal>Sesssion</literal> 내에 현재 "
+"로드되어 있을 경우, 모든 person들에 대한 반복은 10개의 <literal>SELECT</"
+"literal>들을 생성시킬 것이고, <literal>getCats()</literal>에 대한 매번의 호출"
+"에 대해 하나의 <literal>SELECT</literal>를 생성시킬 것이다. 만일 당신이 "
+"<literal>Person</literal> 매핑에서 <literal>cats</literal> 콜렉션에 대해 "
+"batch 페칭을 사용가능하게 할 경우, Hibernate는 콜렉션들을 미리-페치 시킬 수 "
+"있다:"
-#: index.docbook:494
+#. Tag: programlisting
+#: performance.xml:494
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <set name=\"cats\" batch-size=\"3\">\n"
- " ...\n"
- " </set>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <set name=\"cats\" batch-size=\"3\">\n"
+" ...\n"
+" </set>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <set name=\"cats\" batch-size=\"3\">\n"
- " ...\n"
- " </set>\n"
- "</class>]]>"
-#: index.docbook:496
-msgid "With a <literal>batch-size</literal> of 3, Hibernate will load 3, 3, 3, 1 collections in four <literal>SELECT</literal>s. Again, the value of the attribute depends on the expected number of uninitialized collections in a particular <literal>Session</literal>."
-msgstr "<literal>batch-size</literal> 8로서, Hibernate는 4개의 SELECT들에서 3, 3, 3, 1 개의 콜렉션들을 로드시킬 것이다. 다시 그 속성의 값은 특정 <literal>Session</literal> 내에서 초기화 되지 않은 콜렉션들의 예상되는 개수에 의존한다."
+#. Tag: para
+#: performance.xml:496
+#, no-c-format
+msgid ""
+"With a <literal>batch-size</literal> of 3, Hibernate will load 3, 3, 3, 1 "
+"collections in four <literal>SELECT</literal>s. Again, the value of the "
+"attribute depends on the expected number of uninitialized collections in a "
+"particular <literal>Session</literal>."
+msgstr ""
+"<literal>batch-size</literal> 8로서, Hibernate는 4개의 SELECT들에서 3, 3, 3, "
+"1 개의 콜렉션들을 로드시킬 것이다. 다시 그 속성의 값은 특정 "
+"<literal>Session</literal> 내에서 초기화 되지 않은 콜렉션들의 예상되는 개수"
+"에 의존한다."
-#: index.docbook:502
-msgid "Batch fetching of collections is particularly useful if you have a nested tree of items, ie. the typical bill-of-materials pattern. (Although a <emphasis>nested set</emphasis> or a <emphasis>materialized path</emphasis> might be a better option for read-mostly trees.)"
-msgstr "만일 당신이 항목들의 포개진 트리를 가질 경우, 예를 들어 전형적인 bill-of-materials 패턴인 경우, (비록 <emphasis>내포된 set</emphasis> 또는 <emphasis>실체화된 경로(materialized path)</emphasis>가 주로-읽기-트리들에 대해 더 좋은 옵션일 수 있을지라도) 콜렉션들에 대한 batch 페칭이 특히 유용하다."
+#. Tag: para
+#: performance.xml:502
+#, no-c-format
+msgid ""
+"Batch fetching of collections is particularly useful if you have a nested "
+"tree of items, ie. the typical bill-of-materials pattern. (Although a "
+"<emphasis>nested set</emphasis> or a <emphasis>materialized path</emphasis> "
+"might be a better option for read-mostly trees.)"
+msgstr ""
+"만일 당신이 항목들의 포개진 트리를 가질 경우, 예를 들어 전형적인 bill-of-"
+"materials 패턴인 경우, (비록 <emphasis>내포된 set</emphasis> 또는 <emphasis>"
+"실체화된 경로(materialized path)</emphasis>가 주로-읽기-트리들에 대해 더 좋"
+"은 옵션일 수 있을지라도) 콜렉션들에 대한 batch 페칭이 특히 유용하다."
-#: index.docbook:511
+#. Tag: title
+#: performance.xml:511
+#, no-c-format
msgid "Using subselect fetching"
msgstr "subselect 페칭 사용하기"
-#: index.docbook:513
-msgid "If one lazy collection or single-valued proxy has to be fetched, Hibernate loads all of them, re-running the original query in a subselect. This works in the same way as batch-fetching, without the piecemeal loading."
-msgstr "만일 한 개의 lazy 콜렉션이나 단일 값 프락시가 페치되어야 한다면, Hibernate는 하나의 subselect 내에서 원래의 질의를 다시 실행하여 그것들 모두를 로드시킨다. 이것은 조각난 로딩 없이 batch 페칭과 동일한 방식으로 동작한다."
+#. Tag: para
+#: performance.xml:513
+#, no-c-format
+msgid ""
+"If one lazy collection or single-valued proxy has to be fetched, Hibernate "
+"loads all of them, re-running the original query in a subselect. This works "
+"in the same way as batch-fetching, without the piecemeal loading."
+msgstr ""
+"만일 한 개의 lazy 콜렉션이나 단일 값 프락시가 페치되어야 한다면, Hibernate는 "
+"하나의 subselect 내에서 원래의 질의를 다시 실행하여 그것들 모두를 로드시킨"
+"다. 이것은 조각난 로딩 없이 batch 페칭과 동일한 방식으로 동작한다."
-#: index.docbook:524
+#. Tag: title
+#: performance.xml:524
+#, no-c-format
msgid "Using lazy property fetching"
msgstr "lazy 프로퍼티 페칭 사용하기"
-#: index.docbook:526
-msgid "Hibernate3 supports the lazy fetching of individual properties. This optimization technique is also known as <emphasis>fetch groups</emphasis>. Please note that this is mostly a marketing feature, as in practice, optimizing row reads is much more important than optimization of column reads. However, only loading some properties of a class might be useful in extreme cases, when legacy tables have hundreds of columns and the data model can not be improved."
-msgstr "Hibernate3은 개별적인 프로퍼티들에 대한 lazy 페칭을 지원한다. 이 최적화 기술은 또한 <emphasis>fetch groups</emphasis> 으로 알려져 있다. 이것이 대개 마케팅 특징임을 노트하길 바란다. 왜냐하면 실제로 행 읽기를 최적화 시키는 것이 컬럼 읽기에 대한 최적화 보다 훨씬 더 중요하기 때문이다. 하지만 리거시 테이블들이 수백 개의 컬럼들을 갖고 데이터 모형이 개선될 수 없을 때, 오직 클래스의 몇몇 프로퍼티들을 로드시키는 것 만이 유용할 수도 있다."
+#. Tag: para
+#: performance.xml:526
+#, no-c-format
+msgid ""
+"Hibernate3 supports the lazy fetching of individual properties. This "
+"optimization technique is also known as <emphasis>fetch groups</emphasis>. "
+"Please note that this is mostly a marketing feature, as in practice, "
+"optimizing row reads is much more important than optimization of column "
+"reads. However, only loading some properties of a class might be useful in "
+"extreme cases, when legacy tables have hundreds of columns and the data "
+"model can not be improved."
+msgstr ""
+"Hibernate3은 개별적인 프로퍼티들에 대한 lazy 페칭을 지원한다. 이 최적화 기술"
+"은 또한 <emphasis>fetch groups</emphasis> 으로 알려져 있다. 이것이 대개 마케"
+"팅 특징임을 노트하길 바란다. 왜냐하면 실제로 행 읽기를 최적화 시키는 것이 컬"
+"럼 읽기에 대한 최적화 보다 훨씬 더 중요하기 때문이다. 하지만 리거시 테이블들"
+"이 수백 개의 컬럼들을 갖고 데이터 모형이 개선될 수 없을 때, 오직 클래스의 몇"
+"몇 프로퍼티들을 로드시키는 것 만이 유용할 수도 있다."
-#: index.docbook:535
-msgid "To enable lazy property loading, set the <literal>lazy</literal> attribute on your particular property mappings:"
-msgstr "lazy 프로퍼티 로딩을 이용가능하게 하려면, 당신의 특정 property 매핑들에 대해 <literal>lazy</literal> 속성을 설정하라:"
+#. Tag: para
+#: performance.xml:535
+#, no-c-format
+msgid ""
+"To enable lazy property loading, set the <literal>lazy</literal> attribute "
+"on your particular property mappings:"
+msgstr ""
+"lazy 프로퍼티 로딩을 이용가능하게 하려면, 당신의 특정 property 매핑들에 대해 "
+"<literal>lazy</literal> 속성을 설정하라:"
-#: index.docbook:540
+#. Tag: programlisting
+#: performance.xml:540
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Document\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"name\" not-null=\"true\" length=\"50\"/>\n"
- " <property name=\"summary\" not-null=\"true\" length=\"200\" lazy=\"true\"/>\n"
- " <property name=\"text\" not-null=\"true\" length=\"2000\" lazy=\"true\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Document\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"name\" not-null=\"true\" length=\"50\"/>\n"
+" <property name=\"summary\" not-null=\"true\" length=\"200\" lazy=\"true"
+"\"/>\n"
+" <property name=\"text\" not-null=\"true\" length=\"2000\" lazy=\"true\"/"
+">\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Document\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"name\" not-null=\"true\" length=\"50\"/>\n"
- " <property name=\"summary\" not-null=\"true\" length=\"200\" lazy=\"true\"/>\n"
- " <property name=\"text\" not-null=\"true\" length=\"2000\" lazy=\"true\"/>\n"
- "</class>]]>"
-#: index.docbook:542
-msgid "Lazy property loading requires buildtime bytecode instrumentation! If your persistent classes are not enhanced, Hibernate will silently ignore lazy property settings and fall back to immediate fetching."
-msgstr "Lazy property 로딩은 빌드 시 바이트코드 수단을 필요로 한다! 만일 당신의 영속 클래스들이 개선되지 않을 경우, Hibernate는 조용하게 lazy 프로퍼티 설정들을 무시하고 즉각적인 페칭으로 후퇴할 것이다."
+#. Tag: para
+#: performance.xml:542
+#, no-c-format
+msgid ""
+"Lazy property loading requires buildtime bytecode instrumentation! If your "
+"persistent classes are not enhanced, Hibernate will silently ignore lazy "
+"property settings and fall back to immediate fetching."
+msgstr ""
+"Lazy property 로딩은 빌드 시 바이트코드 수단을 필요로 한다! 만일 당신의 영속 "
+"클래스들이 개선되지 않을 경우, Hibernate는 조용하게 lazy 프로퍼티 설정들을 무"
+"시하고 즉각적인 페칭으로 후퇴할 것이다."
-#: index.docbook:548
+#. Tag: para
+#: performance.xml:548
+#, no-c-format
msgid "For bytecode instrumentation, use the following Ant task:"
msgstr "bytecode 수단으로, 다음 Ant 태스크를 사용하라:"
-#: index.docbook:552
+#. Tag: programlisting
+#: performance.xml:552
+#, no-c-format
msgid ""
- "<![CDATA[<target name=\"instrument\" depends=\"compile\">\n"
- " <taskdef name=\"instrument\" classname=\"org.hibernate.tool.instrument.InstrumentTask\">\n"
- " <classpath path=\"${jar.path}\"/>\n"
- " <classpath path=\"${classes.dir}\"/>\n"
- " <classpath refid=\"lib.class.path\"/>\n"
- " </taskdef>\n"
- "\n"
- " <instrument verbose=\"true\">\n"
- " <fileset dir=\"${testclasses.dir}/org/hibernate/auction/model\">\n"
- " <include name=\"*.class\"/>\n"
- " </fileset>\n"
- " </instrument>\n"
- "</target>]]>"
+"<![CDATA[<target name=\"instrument\" depends=\"compile\">\n"
+" <taskdef name=\"instrument\" classname=\"org.hibernate.tool.instrument."
+"InstrumentTask\">\n"
+" <classpath path=\"${jar.path}\"/>\n"
+" <classpath path=\"${classes.dir}\"/>\n"
+" <classpath refid=\"lib.class.path\"/>\n"
+" </taskdef>\n"
+"\n"
+" <instrument verbose=\"true\">\n"
+" <fileset dir=\"${testclasses.dir}/org/hibernate/auction/model\">\n"
+" <include name=\"*.class\"/>\n"
+" </fileset>\n"
+" </instrument>\n"
+"</target>]]>"
msgstr ""
- "<![CDATA[<target name=\"instrument\" depends=\"compile\">\n"
- " <taskdef name=\"instrument\" classname=\"org.hibernate.tool.instrument.InstrumentTask\">\n"
- " <classpath path=\"${jar.path}\"/>\n"
- " <classpath path=\"${classes.dir}\"/>\n"
- " <classpath refid=\"lib.class.path\"/>\n"
- " </taskdef>\n"
- "\n"
- " <instrument verbose=\"true\">\n"
- " <fileset dir=\"${testclasses.dir}/org/hibernate/auction/model\">\n"
- " <include name=\"*.class\"/>\n"
- " </fileset>\n"
- " </instrument>\n"
- "</target>]]>"
-#: index.docbook:554
-msgid "A different (better?) way to avoid unnecessary column reads, at least for read-only transactions is to use the projection features of HQL or Criteria queries. This avoids the need for buildtime bytecode processing and is certainly a prefered solution."
-msgstr "불필요한 컬럼 읽기를 피하는 다른 (더 좋은?) 방법은 적어도 읽기 전용 트랜잭션의 경우에 HQL 질의 또는 Criteria 질의의 투사(projection) 특징들을 사용하는 것이다. 이것은 빌드 시 바이트코드 처리에 대한 필요성을 피하게 해주고 확실히 선호되는 해결책이다."
+#. Tag: para
+#: performance.xml:554
+#, no-c-format
+msgid ""
+"A different (better?) way to avoid unnecessary column reads, at least for "
+"read-only transactions is to use the projection features of HQL or Criteria "
+"queries. This avoids the need for buildtime bytecode processing and is "
+"certainly a prefered solution."
+msgstr ""
+"불필요한 컬럼 읽기를 피하는 다른 (더 좋은?) 방법은 적어도 읽기 전용 트랜잭션"
+"의 경우에 HQL 질의 또는 Criteria 질의의 투사(projection) 특징들을 사용하는 것"
+"이다. 이것은 빌드 시 바이트코드 처리에 대한 필요성을 피하게 해주고 확실히 선"
+"호되는 해결책이다."
-#: index.docbook:561
-msgid "You may force the usual eager fetching of properties using <literal>fetch all properties</literal> in HQL."
-msgstr "당신은 HQL에서 <literal>fetch all properties</literal>를 사용하여 프로퍼티들에 대한 통상의 eager 페칭을 강제시킬 수 있다."
+#. Tag: para
+#: performance.xml:561
+#, no-c-format
+msgid ""
+"You may force the usual eager fetching of properties using <literal>fetch "
+"all properties</literal> in HQL."
+msgstr ""
+"당신은 HQL에서 <literal>fetch all properties</literal>를 사용하여 프로퍼티들"
+"에 대한 통상의 eager 페칭을 강제시킬 수 있다."
-#: index.docbook:571
+#. Tag: title
+#: performance.xml:571
+#, no-c-format
msgid "The Second Level Cache"
msgstr "두번째 레벨 캐시"
-#: index.docbook:573
-msgid "A Hibernate <literal>Session</literal> is a transaction-level cache of persistent data. It is possible to configure a cluster or JVM-level (<literal>SessionFactory</literal>-level) cache on a class-by-class and collection-by-collection basis. You may even plug in a clustered cache. Be careful. Caches are never aware of changes made to the persistent store by another application (though they may be configured to regularly expire cached data)."
-msgstr "Hibernate <literal>Session</literal>은 영속 데이터에 대한 트랜잭션 레벨 캐시이다. class-by-class와 collection-by-collection 기반 위에 클러스터 또는 JVM-레벨(<literal>SessionFactory</literal>-레벨) 캐시를 구성하는 것이 가능하다. 당신은 클러스터링 된 캐시 속에 플러그인 할 수도 있다. 주의하라. 캐시들은 (비록 그것들이 캐시된 데이터를 정기적으로 만료되도록 구성되어 있을지라도) 또 다른 어플리케이션에 의해 영속 저장소에 대해 행해진 변경들을 결코 알지 못한다."
+#. Tag: para
+#: performance.xml:573
+#, no-c-format
+msgid ""
+"A Hibernate <literal>Session</literal> is a transaction-level cache of "
+"persistent data. It is possible to configure a cluster or JVM-level "
+"(<literal>SessionFactory</literal>-level) cache on a class-by-class and "
+"collection-by-collection basis. You may even plug in a clustered cache. Be "
+"careful. Caches are never aware of changes made to the persistent store by "
+"another application (though they may be configured to regularly expire "
+"cached data)."
+msgstr ""
+"Hibernate <literal>Session</literal>은 영속 데이터에 대한 트랜잭션 레벨 캐시"
+"이다. class-by-class와 collection-by-collection 기반 위에 클러스터 또는 JVM-"
+"레벨(<literal>SessionFactory</literal>-레벨) 캐시를 구성하는 것이 가능하다. "
+"당신은 클러스터링 된 캐시 속에 플러그인 할 수도 있다. 주의하라. 캐시들은 (비"
+"록 그것들이 캐시된 데이터를 정기적으로 만료되도록 구성되어 있을지라도) 또 다"
+"른 어플리케이션에 의해 영속 저장소에 대해 행해진 변경들을 결코 알지 못한다."
-#: index.docbook:581
-msgid "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."
-msgstr "디폴트로, 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의 경우에 그것은 더이상 디폴트 내장이 아니다."
+#. Tag: para
+#: performance.xml:581
+#, no-c-format
+msgid ""
+"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."
+msgstr ""
+"디폴트로, 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의 경우에 그것은 더이상 디"
+"폴트 내장이 아니다."
-#: index.docbook:592
+#. Tag: title
+#: performance.xml:592
+#, no-c-format
msgid "Cache Providers"
msgstr "캐시 프로바이더들"
-#: index.docbook:601, index.docbook:774
+#. Tag: entry
+#: performance.xml:601 performance.xml:774
+#, no-c-format
msgid "Cache"
-msgstr "<entry>캐시</entry>"
+msgstr "캐시"
-#: index.docbook:602
+#. Tag: entry
+#: performance.xml:602
+#, no-c-format
msgid "Provider class"
msgstr "프로바이더 클래스"
-#: index.docbook:603
+#. Tag: entry
+#: performance.xml:603
+#, no-c-format
msgid "Type"
-msgstr "<entry>타입</entry>"
+msgstr "타입"
-#: index.docbook:604
+#. Tag: entry
+#: performance.xml:604
+#, no-c-format
msgid "Cluster Safe"
msgstr "클러스터 안전"
-#: index.docbook:605
+#. Tag: entry
+#: performance.xml:605
+#, no-c-format
msgid "Query Cache Supported"
msgstr "질의 캐시 지원"
-#: index.docbook:610, index.docbook:783
+#. Tag: entry
+#: performance.xml:610 performance.xml:783
+#, fuzzy, no-c-format
msgid "Hashtable (not intended for production use)"
-msgstr "Hashtable (제품 용도로 고안되어 있지 않음)"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"Hashtable (제품 용도로 고안되어 있지 않음)\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"Hashtable (제품용으로 고안되지 않음)"
-#: index.docbook:611
+#. Tag: literal
+#: performance.xml:611
+#, no-c-format
msgid "org.hibernate.cache.HashtableCacheProvider"
msgstr "org.hibernate.cache.HashtableCacheProvider"
-#: index.docbook:612
+#. Tag: entry
+#: performance.xml:612
+#, no-c-format
msgid "memory"
msgstr "memory"
-#: index.docbook:614, index.docbook:621, index.docbook:628, index.docbook:784, index.docbook:785, index.docbook:786, index.docbook:791, index.docbook:792, index.docbook:793, index.docbook:798, index.docbook:799, index.docbook:800, index.docbook:805, index.docbook:806, index.docbook:812, index.docbook:815
+#. Tag: entry
+#: performance.xml:614 performance.xml:621 performance.xml:628
+#: performance.xml:784 performance.xml:785 performance.xml:786
+#: performance.xml:791 performance.xml:792 performance.xml:793
+#: performance.xml:798 performance.xml:799 performance.xml:800
+#: performance.xml:805 performance.xml:806 performance.xml:812
+#: performance.xml:815
+#, no-c-format
msgid "<entry>yes</entry>"
-msgstr "<entry>yes</entry>"
+msgstr ""
-#: index.docbook:617, index.docbook:790
+#. Tag: entry
+#: performance.xml:617 performance.xml:790
+#, no-c-format
msgid "EHCache"
msgstr "EHCache"
-#: index.docbook:618
+#. Tag: literal
+#: performance.xml:618
+#, no-c-format
msgid "org.hibernate.cache.EhCacheProvider"
msgstr "org.hibernate.cache.EhCacheProvider"
-#: index.docbook:619, index.docbook:626
+#. Tag: entry
+#: performance.xml:619 performance.xml:626
+#, no-c-format
msgid "memory, disk"
msgstr "memory, disk"
-#: index.docbook:624, index.docbook:797
+#. Tag: entry
+#: performance.xml:624 performance.xml:797
+#, no-c-format
msgid "OSCache"
msgstr "OSCache"
-#: index.docbook:625
+#. Tag: literal
+#: performance.xml:625
+#, no-c-format
msgid "org.hibernate.cache.OSCacheProvider"
msgstr "org.hibernate.cache.OSCacheProvider"
-#: index.docbook:631, index.docbook:804
+#. Tag: entry
+#: performance.xml:631 performance.xml:804
+#, no-c-format
msgid "SwarmCache"
-msgstr "<entry>yes</entry>"
+msgstr "SwarmCache"
-#: index.docbook:632
+#. Tag: literal
+#: performance.xml:632
+#, no-c-format
msgid "org.hibernate.cache.SwarmCacheProvider"
-msgstr "SwarmCache"
+msgstr "org.hibernate.cache.SwarmCacheProvider"
-#: index.docbook:633
+#. Tag: entry
+#: performance.xml:633
+#, no-c-format
msgid "clustered (ip multicast)"
-msgstr "org.hibernate.cache.SwarmCacheProvider"
+msgstr "clustered (ip multicast)"
-#: index.docbook:634
+#. Tag: entry
+#: performance.xml:634
+#, no-c-format
msgid "yes (clustered invalidation)"
-msgstr "clustered (ip multicast)"
+msgstr "yes (clustered invalidation)"
-#: index.docbook:638, index.docbook:811
+#. Tag: entry
+#: performance.xml:638 performance.xml:811
+#, no-c-format
msgid "JBoss TreeCache"
-msgstr "yes (clustered invalidation)"
+msgstr "JBoss TreeCache"
-#: index.docbook:639
+#. Tag: literal
+#: performance.xml:639
+#, no-c-format
msgid "org.hibernate.cache.TreeCacheProvider"
-msgstr "JBoss TreeCache"
+msgstr "org.hibernate.cache.TreeCacheProvider"
-#: index.docbook:640
+#. Tag: entry
+#: performance.xml:640
+#, no-c-format
msgid "clustered (ip multicast), transactional"
-msgstr "org.hibernate.cache.TreeCacheProvider"
+msgstr "clustered (ip multicast), transactional"
-#: index.docbook:641
+#. Tag: entry
+#: performance.xml:641
+#, no-c-format
msgid "yes (replication)"
-msgstr "clustered (ip multicast), transactional"
+msgstr "yes (replication)"
-#: index.docbook:642
+#. Tag: entry
+#: performance.xml:642
+#, no-c-format
msgid "yes (clock sync req.)"
-msgstr "yes (replication)"
+msgstr "yes (clock sync req.)"
-#: index.docbook:649
+#. Tag: title
+#: performance.xml:649
+#, no-c-format
msgid "Cache mappings"
-msgstr "yes (clock sync req.)"
-
-#: index.docbook:651
-msgid "The <literal><cache></literal> element of a class or collection mapping has the following form:"
msgstr "Cache 매핑들"
-#: index.docbook:662
+#. Tag: para
+#: performance.xml:651
+#, no-c-format
msgid ""
- "<![CDATA[<cache \n"
- " usage=\"transactional|read-write|nonstrict-read-write|read-only\"\n"
- " region=\"RegionName\"\n"
- " include=\"all|non-lazy\"\n"
- "/>]]>"
-msgstr "클래스 또는 콜렉션 매핑의 <literal><cache></literal> 요소는 다음 형식을 갖는다:"
+"The <literal><cache></literal> element of a class or collection "
+"mapping has the following form:"
+msgstr ""
+"클래스 또는 콜렉션 매핑의 <literal><cache></literal> 요소는 다음 형식"
+"을 갖는다:"
-#: index.docbook:665
-msgid "<literal>usage</literal> (required) specifies the caching strategy: <literal>transactional</literal>, <literal>read-write</literal>, <literal>nonstrict-read-write</literal> or <literal>read-only</literal>"
+#. Tag: programlisting
+#: performance.xml:662
+#, no-c-format
+msgid ""
+"<![CDATA[<cache \n"
+" usage=\"transactional|read-write|nonstrict-read-write|read-only\"\n"
+" region=\"RegionName\"\n"
+" include=\"all|non-lazy\"\n"
+"/>]]>"
msgstr ""
- "<![CDATA[<cache \n"
- " usage=\"transactional|read-write|nonstrict-read-write|read-only\"\n"
- " region=\"RegionName\"\n"
- " include=\"all|non-lazy\"\n"
- "/>]]>"
-#: index.docbook:674
-msgid "<literal>region</literal> (optional, defaults to the class or collection role name) specifies the name of the second level cache region"
-msgstr "<literal>usage</literal>(필수) 캐싱 방도를 지정한다: <literal>transactional</literal>, <literal>read-write</literal>, <literal>nonstrict-read-write</literal> 또는 <literal>read-only</literal>"
+#. Tag: para
+#: performance.xml:665
+#, no-c-format
+msgid ""
+"<literal>usage</literal> (required) specifies the caching strategy: "
+"<literal>transactional</literal>, <literal>read-write</literal>, "
+"<literal>nonstrict-read-write</literal> or <literal>read-only</literal>"
+msgstr ""
+"<literal>usage</literal>(필수) 캐싱 방도를 지정한다: <literal>transactional</"
+"literal>, <literal>read-write</literal>, <literal>nonstrict-read-write</"
+"literal> 또는 <literal>read-only</literal>"
-#: index.docbook:681
-msgid "<literal>include</literal> (optional, defaults to <literal>all</literal>) <literal>non-lazy</literal> specifies that properties of the entity mapped with <literal>lazy=\"true\"</literal> may not be cached when attribute-level lazy fetching is enabled"
-msgstr "<literal>region</literal> (옵션, 디폴트는 class 또는 콜렉션 role 이름) second level 캐시 영역의 이름을 지정한다"
+#. Tag: para
+#: performance.xml:674
+#, no-c-format
+msgid ""
+"<literal>region</literal> (optional, defaults to the class or collection "
+"role name) specifies the name of the second level cache region"
+msgstr ""
+"<literal>region</literal> (옵션, 디폴트는 class 또는 콜렉션 role 이름) "
+"second level 캐시 영역의 이름을 지정한다"
-#: index.docbook:691
-msgid "Alternatively (preferrably?), you may specify <literal><class-cache></literal> and <literal><collection-cache></literal> elements in <literal>hibernate.cfg.xml</literal>."
-msgstr "<literal>include</literal> (옵션, 디폴트는 <literal>all</literal>) <literal>non-lazy</literal>는 <literal>lazy=\"true\"</literal>로 매핑된 엔티티의 프로퍼티들을 지정하며 속성-레벨 lazy 페칭이 이용 가능할 때 키시될 수 없다"
+#. Tag: para
+#: performance.xml:681
+#, no-c-format
+msgid ""
+"<literal>include</literal> (optional, defaults to <literal>all</literal>) "
+"<literal>non-lazy</literal> specifies that properties of the entity mapped "
+"with <literal>lazy=\"true\"</literal> may not be cached when attribute-level "
+"lazy fetching is enabled"
+msgstr ""
+"<literal>include</literal> (옵션, 디폴트는 <literal>all</literal>) "
+"<literal>non-lazy</literal>는 <literal>lazy=\"true\"</literal>로 매핑된 엔티"
+"티의 프로퍼티들을 지정하며 속성-레벨 lazy 페칭이 이용 가능할 때 키시될 수 없"
+"다"
-#: index.docbook:696
-msgid "The <literal>usage</literal> attribute specifies a <emphasis>cache concurrency strategy</emphasis>."
-msgstr "다른 방법으로 (선호적으로?), 당신은 <literal>hibernate.cfg.xml</literal> 내에 <literal><class-cache></literal>와 <literal><collection-cache></literal> 요소들을 지정할 수도 있다."
+#. Tag: para
+#: performance.xml:691
+#, no-c-format
+msgid ""
+"Alternatively (preferrably?), you may specify <literal><class-cache></"
+"literal> and <literal><collection-cache></literal> elements in "
+"<literal>hibernate.cfg.xml</literal>."
+msgstr ""
+"다른 방법으로 (선호적으로?), 당신은 <literal>hibernate.cfg.xml</literal> 내"
+"에 <literal><class-cache></literal>와 <literal><collection-cache>"
+"</literal> 요소들을 지정할 수도 있다."
-#: index.docbook:703
+#. Tag: para
+#: performance.xml:696
+#, no-c-format
+msgid ""
+"The <literal>usage</literal> attribute specifies a <emphasis>cache "
+"concurrency strategy</emphasis>."
+msgstr ""
+"<literal>usage</literal> 속성은 <emphasis> 캐시 동시성 방도</emphasis>를 지정"
+"한다."
+
+#. Tag: title
+#: performance.xml:703
+#, no-c-format
msgid "Strategy: read only"
-msgstr "<literal>usage</literal> 속성은 <emphasis> 캐시 동시성 방도</emphasis>를 지정한다."
-
-#: index.docbook:705
-msgid "If your application needs to read but never modify instances of a persistent class, a <literal>read-only</literal> cache may be used. This is the simplest and best performing strategy. It's even perfectly safe for use in a cluster."
msgstr "방도: 읽기 전용"
-#: index.docbook:711
+#. Tag: para
+#: performance.xml:705
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"eg.Immutable\" mutable=\"false\">\n"
- " <cache usage=\"read-only\"/>\n"
- " ....\n"
- "</class>]]>"
-msgstr "당신의 어플리케이션이 영속 클래스의 인스턴스들을 읽어들일 필요가 있지만 결코 변경할 필요가 없을 경우에 <literal>read-only</literal> 캐시가 사용될 수 있다. 이것은 가장 간단한 최상의 퍼포먼스를 위한 방도이다. 그것은 클러스터 내 사용에는 완벽하게 안전하다."
+"If your application needs to read but never modify instances of a persistent "
+"class, a <literal>read-only</literal> cache may be used. This is the "
+"simplest and best performing strategy. It's even perfectly safe for use in a "
+"cluster."
+msgstr ""
+"당신의 어플리케이션이 영속 클래스의 인스턴스들을 읽어들일 필요가 있지만 결코 "
+"변경할 필요가 없을 경우에 <literal>read-only</literal> 캐시가 사용될 수 있"
+"다. 이것은 가장 간단한 최상의 퍼포먼스를 위한 방도이다. 그것은 클러스터 내 사"
+"용에는 완벽하게 안전하다."
-#: index.docbook:717
-msgid "Strategy: read/write"
+#. Tag: programlisting
+#: performance.xml:711
+#, no-c-format
+msgid ""
+"<![CDATA[<class name=\"eg.Immutable\" mutable=\"false\">\n"
+" <cache usage=\"read-only\"/>\n"
+" ....\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"eg.Immutable\" mutable=\"false\">\n"
- " <cache usage=\"read-only\"/>\n"
- " ....\n"
- "</class>]]>"
-#: index.docbook:719
-msgid "If the application needs to update data, a <literal>read-write</literal> cache might be appropriate. This cache strategy should never be used if serializable transaction isolation level is required. If the cache is used in a JTA environment, you must specify the property <literal>hibernate.transaction.manager_lookup_class</literal>, naming a strategy for obtaining the JTA <literal>TransactionManager</literal>. In other environments, you should ensure that the transaction is completed when <literal>Session.close()</literal> or <literal>Session.disconnect()</literal> is called. If you wish to use this strategy in a cluster, you should ensure that the underlying cache implementation supports locking. The built-in cache providers do <emphasis>not</emphasis>."
+#. Tag: title
+#: performance.xml:717
+#, no-c-format
+msgid "Strategy: read/write"
msgstr "방도: 읽기/쓰기"
-#: index.docbook:730
+#. Tag: para
+#: performance.xml:719
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"eg.Cat\" .... >\n"
- " <cache usage=\"read-write\"/>\n"
- " ....\n"
- " <set name=\"kittens\" ... >\n"
- " <cache usage=\"read-write\"/>\n"
- " ....\n"
- " </set>\n"
- "</class>]]>"
-msgstr "어플리케이션이 데이터를 업데이트 할 필요가 있을 경우, <literal>read-write</literal> 캐시가 적절하다. 만일 직렬화 가능한(serializable) 트랜잭션 격리 레벨이 필요한 경우에는 이 캐시 방도가 결코 사용되지 말아야 한다. 만일 캐시가 JTA 환경에서 사용될 경우, 당신은 JTA <literal>TransactionManager</literal>를 얻는 방도를 명명하는 <literal>hibernate.transaction.manager_lookup_class</literal> 프로퍼티를 지정해야 한다. 다른 환경들에서, 당신은<literal>Session.close()</literal> 또는 <literal>Session.disconnect()</literal>가 호출될 때 트랜잭션이 완료되는 것을 확실히 해야 한다. 만일 당신이 클러스터 내에 이 방도를 사용하고자 원할 경우, 당신은 기본 캐시 구현이 잠금을 지원하도록 하는 것을 확실히 해야 한다. 미리 만들어진 캐시 프로바이더들은 그렇게 행하지 <emphasis>않는�!
��</emphasis>."
+"If the application needs to update data, a <literal>read-write</literal> "
+"cache might be appropriate. This cache strategy should never be used if "
+"serializable transaction isolation level is required. If the cache is used "
+"in a JTA environment, you must specify the property <literal>hibernate."
+"transaction.manager_lookup_class</literal>, naming a strategy for obtaining "
+"the JTA <literal>TransactionManager</literal>. In other environments, you "
+"should ensure that the transaction is completed when <literal>Session.close()"
+"</literal> or <literal>Session.disconnect()</literal> is called. If you wish "
+"to use this strategy in a cluster, you should ensure that the underlying "
+"cache implementation supports locking. The built-in cache providers do "
+"<emphasis>not</emphasis>."
+msgstr ""
+"어플리케이션이 데이터를 업데이트 할 필요가 있을 경우, <literal>read-write</"
+"literal> 캐시가 적절하다. 만일 직렬화 가능한(serializable) 트랜잭션 격리 레벨"
+"이 필요한 경우에는 이 캐시 방도가 결코 사용되지 말아야 한다. 만일 캐시가 JTA "
+"환경에서 사용될 경우, 당신은 JTA <literal>TransactionManager</literal>를 얻"
+"는 방도를 명명하는 <literal>hibernate.transaction.manager_lookup_class</"
+"literal> 프로퍼티를 지정해야 한다. 다른 환경들에서, 당신은<literal>Session."
+"close()</literal> 또는 <literal>Session.disconnect()</literal>가 호출될 때 트"
+"랜잭션이 완료되는 것을 확실히 해야 한다. 만일 당신이 클러스터 내에 이 방도를 "
+"사용하고자 원할 경우, 당신은 기본 캐시 구현이 잠금을 지원하도록 하는 것을 확"
+"실히 해야 한다. 미리 만들어진 캐시 프로바이더들은 그렇게 행하지 <emphasis>않"
+"는다</emphasis>."
-#: index.docbook:735
-msgid "Strategy: nonstrict read/write"
+#. Tag: programlisting
+#: performance.xml:730
+#, no-c-format
+msgid ""
+"<![CDATA[<class name=\"eg.Cat\" .... >\n"
+" <cache usage=\"read-write\"/>\n"
+" ....\n"
+" <set name=\"kittens\" ... >\n"
+" <cache usage=\"read-write\"/>\n"
+" ....\n"
+" </set>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"eg.Cat\" .... >\n"
- " <cache usage=\"read-write\"/>\n"
- " ....\n"
- " <set name=\"kittens\" ... >\n"
- " <cache usage=\"read-write\"/>\n"
- " ....\n"
- " </set>\n"
- "</class>]]>"
-#: index.docbook:737
-msgid "If the application only occasionally needs to update data (ie. if it is extremely unlikely that two transactions would try to update the same item simultaneously) and strict transaction isolation is not required, a <literal>nonstrict-read-write</literal> cache might be appropriate. If the cache is used in a JTA environment, you must specify <literal>hibernate.transaction.manager_lookup_class</literal>. In other environments, you should ensure that the transaction is completed when <literal>Session.close()</literal> or <literal>Session.disconnect()</literal> is called."
+#. Tag: title
+#: performance.xml:735
+#, no-c-format
+msgid "Strategy: nonstrict read/write"
msgstr "방도: 엄격하지 않은 읽기/쓰기"
-#: index.docbook:749
+#. Tag: para
+#: performance.xml:737
+#, no-c-format
+msgid ""
+"If the application only occasionally needs to update data (ie. if it is "
+"extremely unlikely that two transactions would try to update the same item "
+"simultaneously) and strict transaction isolation is not required, a "
+"<literal>nonstrict-read-write</literal> cache might be appropriate. If the "
+"cache is used in a JTA environment, you must specify <literal>hibernate."
+"transaction.manager_lookup_class</literal>. In other environments, you "
+"should ensure that the transaction is completed when <literal>Session.close()"
+"</literal> or <literal>Session.disconnect()</literal> is called."
+msgstr ""
+"만일 어플리케이션이 오직 데이터를 자주 업데이트할 필요가 있고(예를 들어, 만"
+"일 두 개의 트랜잭션들이 동시에 동일한 항목을 업데이트 하려고 시도하는 정말 있"
+"음직하지 않은 경우) 그리고 엄격한 트랜잭션 격리가 필요하지 않은 경우, "
+"<literal>nonstrict-read-write</literal> 캐시가 적절할 수 있다. 만일 그 캐시"
+"가 JTA 환경에서 사용될 경우, 당신은 <literal>hibernate.transaction."
+"manager_lookup_class</literal>를 지정해야 한다. 다른 환경들에서, 당신은 "
+"<literal>Session.close()</literal> 또는 <literal>Session.disconnect()</"
+"literal>가 호출될 때 트랜잭션이 완료되도록 확실히 해야 한다."
+
+#. Tag: title
+#: performance.xml:749
+#, no-c-format
msgid "Strategy: transactional"
-msgstr "만일 어플리케이션이 오직 데이터를 자주 업데이트할 필요가 있고(예를 들어, 만일 두 개의 트랜잭션들이 동시에 동일한 항목을 업데이트 하려고 시도하는 정말 있음직하지 않은 경우) 그리고 엄격한 트랜잭션 격리가 필요하지 않은 경우, <literal>nonstrict-read-write</literal> 캐시가 적절할 수 있다. 만일 그 캐시가 JTA 환경에서 사용될 경우, 당신은 <literal>hibernate.transaction.manager_lookup_class</literal>를 지정해야 한다. 다른 환경들에서, 당신은 <literal>Session.close()</literal> 또는 <literal>Session.disconnect()</literal>가 호출될 때 트랜잭션이 완료되도록 확실히 해야 한다."
-
-#: index.docbook:751
-msgid "The <literal>transactional</literal> cache strategy provides support for fully transactional cache providers such as JBoss TreeCache. Such a cache may only be used in a JTA environment and you must specify <literal>hibernate.transaction.manager_lookup_class</literal>."
msgstr "방도: transactional"
-#: index.docbook:759
-msgid "None of the cache providers support all of the cache concurrency strategies. The following table shows which providers are compatible with which concurrency strategies."
-msgstr "<literal>transactional</literal> 캐시 방도는 JBoss TreeCache와 같은 전체 트랜잭션적인 캐시 프로바이더들에 대한 지원을 제공한다. 그런 캐시는 오직 JTA 환경 내에서 사용될 수 있고 당신은 <literal>hibernate.transaction.manager_lookup_class</literal>를 지정해야 한다."
+#. Tag: para
+#: performance.xml:751
+#, no-c-format
+msgid ""
+"The <literal>transactional</literal> cache strategy provides support for "
+"fully transactional cache providers such as JBoss TreeCache. Such a cache "
+"may only be used in a JTA environment and you must specify "
+"<literal>hibernate.transaction.manager_lookup_class</literal>."
+msgstr ""
+"<literal>transactional</literal> 캐시 방도는 JBoss TreeCache와 같은 전체 트랜"
+"잭션적인 캐시 프로바이더들에 대한 지원을 제공한다. 그런 캐시는 오직 JTA 환경 "
+"내에서 사용될 수 있고 당신은 <literal>hibernate.transaction."
+"manager_lookup_class</literal>를 지정해야 한다."
-#: index.docbook:765
+#. Tag: para
+#: performance.xml:759
+#, no-c-format
+msgid ""
+"None of the cache providers support all of the cache concurrency strategies. "
+"The following table shows which providers are compatible with which "
+"concurrency strategies."
+msgstr ""
+"캐시 프로바이더들 중 어느 것도 모든 캐시 동시성 방도들을 지원하지 않는다. 다"
+"음 테이블은 어느 프로바이더들이 어느 동시성 방도들과 호환되는지를 보여준다."
+
+#. Tag: title
+#: performance.xml:765
+#, no-c-format
msgid "Cache Concurrency Strategy Support"
-msgstr "캐시 프로바이더들 중 어느 것도 모든 캐시 동시성 방도들을 지원하지 않는다. 다음 테이블은 어느 프로바이더들이 어느 동시성 방도들과 호환되는지를 보여준다."
+msgstr "캐시 동시성 방도 지원"
-#: index.docbook:775
+#. Tag: entry
+#: performance.xml:775
+#, no-c-format
msgid "read-only"
-msgstr "<entry>캐시</entry>"
+msgstr "읽기 전용"
-#: index.docbook:776
+#. Tag: entry
+#: performance.xml:776
+#, no-c-format
msgid "nonstrict-read-write"
-msgstr "읽기 전용"
+msgstr "엄격하지 않은 읽기-쓰기"
-#: index.docbook:777
+#. Tag: entry
+#: performance.xml:777
+#, no-c-format
msgid "read-write"
-msgstr "엄격하지 않은 읽기-쓰기"
+msgstr "읽기-쓰기"
-#: index.docbook:778
+#. Tag: entry
+#: performance.xml:778
+#, no-c-format
msgid "transactional"
-msgstr "읽기-쓰기"
+msgstr "transactional"
-#: index.docbook:824
+#. Tag: title
+#: performance.xml:824
+#, no-c-format
msgid "Managing the caches"
-msgstr "<entry>예</entry>"
-
-#: index.docbook:826
-msgid "Whenever you pass an object to <literal>save()</literal>, <literal>update()</literal> or <literal>saveOrUpdate()</literal> and whenever you retrieve an object using <literal>load()</literal>, <literal>get()</literal>, <literal>list()</literal>, <literal>iterate()</literal> or <literal>scroll()</literal>, that object is added to the internal cache of the <literal>Session</literal>."
msgstr "캐시들을 관리하기"
-#: index.docbook:833
-msgid "When <literal>flush()</literal> is subsequently called, the state of that object will be synchronized with the database. If you do not want this synchronization to occur or if you are processing a huge number of objects and need to manage memory efficiently, the <literal>evict()</literal> method may be used to remove the object and its collections from the first-level cache."
-msgstr "당신이 객체를 <literal>save()</literal>, <literal>update()</literal> 또는 <literal>saveOrUpdate()</literal>에 전달할 때마다 그리고 당신이 <literal>load()</literal>, <literal>get()</literal>, <literal>list()</literal>, <literal>iterate()</literal> 또는 <literal>scroll()</literal>을 사용하여 객체를 검색할 때마다, 그 객체는 <literal>Session</literal>의 내부 캐시에 추가된다."
+#. Tag: para
+#: performance.xml:826
+#, no-c-format
+msgid ""
+"Whenever you pass an object to <literal>save()</literal>, <literal>update()</"
+"literal> or <literal>saveOrUpdate()</literal> and whenever you retrieve an "
+"object using <literal>load()</literal>, <literal>get()</literal>, "
+"<literal>list()</literal>, <literal>iterate()</literal> or <literal>scroll()"
+"</literal>, that object is added to the internal cache of the "
+"<literal>Session</literal>."
+msgstr ""
+"당신이 객체를 <literal>save()</literal>, <literal>update()</literal> 또는 "
+"<literal>saveOrUpdate()</literal>에 전달할 때마다 그리고 당신이 <literal>load"
+"()</literal>, <literal>get()</literal>, <literal>list()</literal>, "
+"<literal>iterate()</literal> 또는 <literal>scroll()</literal>을 사용하여 객체"
+"를 검색할 때마다, 그 객체는 <literal>Session</literal>의 내부 캐시에 추가된"
+"다."
-#: index.docbook:841
+#. Tag: para
+#: performance.xml:833
+#, no-c-format
msgid ""
- "<![CDATA[ScrollableResult cats = sess.createQuery(\"from Cat as cat\").scroll(); //a huge result set\n"
- "while ( cats.next() ) {\n"
- " Cat cat = (Cat) cats.get(0);\n"
- " doSomethingWithACat(cat);\n"
- " sess.evict(cat);\n"
- "}]]>"
-msgstr "<literal>flush()</literal>가 차후적으로 호출될 때, 그 객체의 상태는 데이터베이스와 동기화 될 것이다. 만일 당신이 이 동기화가 발생되는 것을 원하지 않거나 만일 당신이 대량의 객체들을 처리 중이고 메모리를 효율적으로 관리할 필요가 있을 경우, <literal>evict()</literal> 메소드는 first-level 캐시로부터 그 객체와 그것의 콜렉션들을 제거하는데 사용될 수 있다."
+"When <literal>flush()</literal> is subsequently called, the state of that "
+"object will be synchronized with the database. If you do not want this "
+"synchronization to occur or if you are processing a huge number of objects "
+"and need to manage memory efficiently, the <literal>evict()</literal> method "
+"may be used to remove the object and its collections from the first-level "
+"cache."
+msgstr ""
+"<literal>flush()</literal>가 차후적으로 호출될 때, 그 객체의 상태는 데이터베"
+"이스와 동기화 될 것이다. 만일 당신이 이 동기화가 발생되는 것을 원하지 않거나 "
+"만일 당신이 대량의 객체들을 처리 중이고 메모리를 효율적으로 관리할 필요가 있"
+"을 경우, <literal>evict()</literal> 메소드는 first-level 캐시로부터 그 객체"
+"와 그것의 콜렉션들을 제거하는데 사용될 수 있다."
-#: index.docbook:843
-msgid "The <literal>Session</literal> also provides a <literal>contains()</literal> method to determine if an instance belongs to the session cache."
+#. Tag: programlisting
+#: performance.xml:841
+#, no-c-format
+msgid ""
+"<![CDATA[ScrollableResult cats = sess.createQuery(\"from Cat as cat\").scroll"
+"(); //a huge result set\n"
+"while ( cats.next() ) {\n"
+" Cat cat = (Cat) cats.get(0);\n"
+" doSomethingWithACat(cat);\n"
+" sess.evict(cat);\n"
+"}]]>"
msgstr ""
- "<![CDATA[ScrollableResult cats = sess.createQuery(\"from Cat as cat\").scroll(); //a huge result set\n"
- "while ( cats.next() ) {\n"
- " Cat cat = (Cat) cats.get(0);\n"
- " doSomethingWithACat(cat);\n"
- " sess.evict(cat);\n"
- "}]]>"
-#: index.docbook:848
-msgid "To completely evict all objects from the session cache, call <literal>Session.clear()</literal>"
-msgstr "<literal>Session</literal>은 또한 인스턴스가 세션 캐시에 속하는지 여부를 결정하는데 <literal>contains()</literal> 메소드를 제공한다."
+#. Tag: para
+#: performance.xml:843
+#, no-c-format
+msgid ""
+"The <literal>Session</literal> also provides a <literal>contains()</literal> "
+"method to determine if an instance belongs to the session cache."
+msgstr ""
+"<literal>Session</literal>은 또한 인스턴스가 세션 캐시에 속하는지 여부를 결정"
+"하는데 <literal>contains()</literal> 메소드를 제공한다."
-#: index.docbook:852
-msgid "For the second-level cache, there are methods defined on <literal>SessionFactory</literal> for evicting the cached state of an instance, entire class, collection instance or entire collection role."
-msgstr "세션 캐시로부터 모든 객체들을 완전하게 퇴거시키기 위해, <literal>Session.clear()</literal>를 호출하라."
+#. Tag: para
+#: performance.xml:848
+#, no-c-format
+msgid ""
+"To completely evict all objects from the session cache, call "
+"<literal>Session.clear()</literal>"
+msgstr ""
+"세션 캐시로부터 모든 객체들을 완전하게 퇴거시키기 위해, <literal>Session."
+"clear()</literal>를 호출하라."
-#: index.docbook:858
+#. Tag: para
+#: performance.xml:852
+#, no-c-format
msgid ""
- "<![CDATA[sessionFactory.evict(Cat.class, catId); //evict a particular Cat\n"
- "sessionFactory.evict(Cat.class); //evict all Cats\n"
- "sessionFactory.evictCollection(\"Cat.kittens\", catId); //evict a particular collection of kittens\n"
- "sessionFactory.evictCollection(\"Cat.kittens\"); //evict all kitten collections]]>"
-msgstr "second-level 캐시의 경우, 하나의 인스턴스, 전체 클래스, 콜렉션 인스턴스 또는 전체 콜렉션 role의 캐시된 상태를 퇴거시키는 <literal>SessionFactory</literal> 상에 정의된 메소드들이 존재한다."
+"For the second-level cache, there are methods defined on "
+"<literal>SessionFactory</literal> for evicting the cached state of an "
+"instance, entire class, collection instance or entire collection role."
+msgstr ""
+"second-level 캐시의 경우, 하나의 인스턴스, 전체 클래스, 콜렉션 인스턴스 또는 "
+"전체 콜렉션 role의 캐시된 상태를 퇴거시키는 <literal>SessionFactory</"
+"literal> 상에 정의된 메소드들이 존재한다."
-#: index.docbook:860
-msgid "The <literal>CacheMode</literal> controls how a particular session interacts with the second-level cache."
+#. Tag: programlisting
+#: performance.xml:858
+#, no-c-format
+msgid ""
+"<![CDATA[sessionFactory.evict(Cat.class, catId); //evict a particular Cat\n"
+"sessionFactory.evict(Cat.class); //evict all Cats\n"
+"sessionFactory.evictCollection(\"Cat.kittens\", catId); //evict a particular "
+"collection of kittens\n"
+"sessionFactory.evictCollection(\"Cat.kittens\"); //evict all kitten "
+"collections]]>"
msgstr ""
- "<![CDATA[sessionFactory.evict(Cat.class, catId); //evict a particular Cat\n"
- "sessionFactory.evict(Cat.class); //evict all Cats\n"
- "sessionFactory.evictCollection(\"Cat.kittens\", catId); //evict a particular collection of kittens\n"
- "sessionFactory.evictCollection(\"Cat.kittens\"); //evict all kitten collections]]>"
-#: index.docbook:867
-msgid "<literal>CacheMode.NORMAL</literal> - read items from and write items to the second-level cache"
-msgstr "<literal>CacheMode</literal>는 특정 세션이 second-level 캐시와 어떻게 상호작용하는지를 제어한다"
+#. Tag: para
+#: performance.xml:860
+#, no-c-format
+msgid ""
+"The <literal>CacheMode</literal> controls how a particular session interacts "
+"with the second-level cache."
+msgstr ""
+"<literal>CacheMode</literal>는 특정 세션이 second-level 캐시와 어떻게 상호작"
+"용하는지를 제어한다"
-#: index.docbook:872
-msgid "<literal>CacheMode.GET</literal> - read items from the second-level cache, but don't write to the second-level cache except when updating data"
-msgstr "<literal>CacheMode.NORMAL</literal> - second-level 캐시로부터 아이템들을 읽어들이고 second-level 캐시로 아이템들을 기록한다"
+#. Tag: para
+#: performance.xml:867
+#, no-c-format
+msgid ""
+"<literal>CacheMode.NORMAL</literal> - read items from and write items to the "
+"second-level cache"
+msgstr ""
+"<literal>CacheMode.NORMAL</literal> - second-level 캐시로부터 아이템들을 읽어"
+"들이고 second-level 캐시로 아이템들을 기록한다"
-#: index.docbook:878
-msgid "<literal>CacheMode.PUT</literal> - write items to the second-level cache, but don't read from the second-level cache"
-msgstr "<literal>CacheMode.GET</literal> - second-level 캐시로부터 아이템들을 읽어들이지만, 데이터를 업데이트할 때를 제외하면 second-level 캐시로 기록하지 않는다"
+#. Tag: para
+#: performance.xml:872
+#, no-c-format
+msgid ""
+"<literal>CacheMode.GET</literal> - read items from the second-level cache, "
+"but don't write to the second-level cache except when updating data"
+msgstr ""
+"<literal>CacheMode.GET</literal> - second-level 캐시로부터 아이템들을 읽어들"
+"이지만, 데이터를 업데이트할 때를 제외하면 second-level 캐시로 기록하지 않는다"
-#: index.docbook:884
-msgid "<literal>CacheMode.REFRESH</literal> - write items to the second-level cache, but don't read from the second-level cache, bypass the effect of <literal>hibernate.cache.use_minimal_puts</literal>, forcing a refresh of the second-level cache for all items read from the database"
-msgstr "<literal>CacheMode.PUT</literal> - 아이템들을 second-level 캐시에 기록하지만, second-level 캐시로부터 읽어들이지 않는다"
+#. Tag: para
+#: performance.xml:878
+#, no-c-format
+msgid ""
+"<literal>CacheMode.PUT</literal> - write items to the second-level cache, "
+"but don't read from the second-level cache"
+msgstr ""
+"<literal>CacheMode.PUT</literal> - 아이템들을 second-level 캐시에 기록하지"
+"만, second-level 캐시로부터 읽어들이지 않는다"
-#: index.docbook:892
-msgid "To browse the contents of a second-level or query cache region, use the <literal>Statistics</literal> API:"
-msgstr "<literal>CacheMode.REFRESH</literal> - 아이템들을 second-level 캐시로기록하지만, second-level 캐시로부터 읽어들이지 않고, 데이터베이스로부터 읽어들인 모든 아이템들에 대한 second-level 캐시의 갱신을 강제시켜, <literal>hibernate.cache.use_minimal_puts</literal>의 효과를 무시한다"
+#. Tag: para
+#: performance.xml:884
+#, no-c-format
+msgid ""
+"<literal>CacheMode.REFRESH</literal> - write items to the second-level "
+"cache, but don't read from the second-level cache, bypass the effect of "
+"<literal>hibernate.cache.use_minimal_puts</literal>, forcing a refresh of "
+"the second-level cache for all items read from the database"
+msgstr ""
+"<literal>CacheMode.REFRESH</literal> - 아이템들을 second-level 캐시로기록하지"
+"만, second-level 캐시로부터 읽어들이지 않고, 데이터베이스로부터 읽어들인 모"
+"든 아이템들에 대한 second-level 캐시의 갱신을 강제시켜, <literal>hibernate."
+"cache.use_minimal_puts</literal>의 효과를 무시한다"
-#: index.docbook:897
+#. Tag: para
+#: performance.xml:892
+#, no-c-format
msgid ""
- "<![CDATA[Map cacheEntries = sessionFactory.getStatistics()\n"
- " .getSecondLevelCacheStatistics(regionName)\n"
- " .getEntries();]]>"
-msgstr "second-level 캐시 또는 질의 캐시 영역의 내용물을 브라우징하려면 <literal>Statistics</literal> API를 사용하라:"
+"To browse the contents of a second-level or query cache region, use the "
+"<literal>Statistics</literal> API:"
+msgstr ""
+"second-level 캐시 또는 질의 캐시 영역의 내용물을 브라우징하려면 "
+"<literal>Statistics</literal> API를 사용하라:"
-#: index.docbook:899
-msgid "You'll need to enable statistics, and, optionally, force Hibernate to keep the cache entries in a more human-understandable format:"
+#. Tag: programlisting
+#: performance.xml:897
+#, no-c-format
+msgid ""
+"<![CDATA[Map cacheEntries = sessionFactory.getStatistics()\n"
+" .getSecondLevelCacheStatistics(regionName)\n"
+" .getEntries();]]>"
msgstr ""
- "<![CDATA[Map cacheEntries = sessionFactory.getStatistics()\n"
- " .getSecondLevelCacheStatistics(regionName)\n"
- " .getEntries();]]>"
-#: index.docbook:904
+#. Tag: para
+#: performance.xml:899
+#, no-c-format
msgid ""
- "<![CDATA[hibernate.generate_statistics true\n"
- "hibernate.cache.use_structured_entries true]]>"
-msgstr "당신은 통계를 이용 가능하게 하고, 선택적으로 Hibernate로 하여금 캐시 엔트리들을 보다 인간에게 이해가능한 형식으로 유지시키도록 강제시키는 것이 필요할 것이다:"
+"You'll need to enable statistics, and, optionally, force Hibernate to keep "
+"the cache entries in a more human-understandable format:"
+msgstr ""
+"당신은 통계를 이용 가능하게 하고, 선택적으로 Hibernate로 하여금 캐시 엔트리들"
+"을 보다 인간에게 이해가능한 형식으로 유지시키도록 강제시키는 것이 필요할 것이"
+"다:"
-#: index.docbook:909
-msgid "The Query Cache"
+#. Tag: programlisting
+#: performance.xml:904
+#, no-c-format
+msgid ""
+"<![CDATA[hibernate.generate_statistics true\n"
+"hibernate.cache.use_structured_entries true]]>"
msgstr ""
- "<![CDATA[hibernate.generate_statistics true\n"
- "hibernate.cache.use_structured_entries true]]>"
-#: index.docbook:911
-msgid "Query result sets may also be cached. This is only useful for queries that are run frequently with the same parameters. To use the query cache you must first enable it:"
+#. Tag: title
+#: performance.xml:909
+#, no-c-format
+msgid "The Query Cache"
msgstr "질의 캐시"
-#: index.docbook:916
+#. Tag: para
+#: performance.xml:911
+#, no-c-format
+msgid ""
+"Query result sets may also be cached. This is only useful for queries that "
+"are run frequently with the same parameters. To use the query cache you must "
+"first enable it:"
+msgstr ""
+"질의 결과 셋들이 또한 캐시될 수도 있다. 이것은 동일한 파라미터들을 가지고 자"
+"주 실행되는 질의들에만 유용하다. 질의 캐시를 사용하기 위해 당신은 먼저 그것"
+"을 이용 가능하도록 해야 한다:"
+
+#. Tag: programlisting
+#: performance.xml:916
+#, no-c-format
msgid "<![CDATA[hibernate.cache.use_query_cache true]]>"
-msgstr "질의 결과 셋들이 또한 캐시될 수도 있다. 이것은 동일한 파라미터들을 가지고 자주 실행되는 질의들에만 유용하다. 질의 캐시를 사용하기 위해 당신은 먼저 그것을 이용 가능하도록 해야 한다:"
+msgstr ""
-#: index.docbook:918
-msgid "This setting causes the creation of two new cache regions - one holding cached query result sets (<literal>org.hibernate.cache.StandardQueryCache</literal>), the other holding timestamps of the most recent updates to queryable tables (<literal>org.hibernate.cache.UpdateTimestampsCache</literal>). Note that the query cache does not cache the state of the actual entities in the result set; it caches only identifier values and results of value type. So the query cache should always be used in conjunction with the second-level cache."
-msgstr "<![CDATA[hibernate.cache.use_query_cache true]]>"
+#. Tag: para
+#: performance.xml:918
+#, no-c-format
+msgid ""
+"This setting causes the creation of two new cache regions - one holding "
+"cached query result sets (<literal>org.hibernate.cache.StandardQueryCache</"
+"literal>), the other holding timestamps of the most recent updates to "
+"queryable tables (<literal>org.hibernate.cache.UpdateTimestampsCache</"
+"literal>). Note that the query cache does not cache the state of the actual "
+"entities in the result set; it caches only identifier values and results of "
+"value type. So the query cache should always be used in conjunction with the "
+"second-level cache."
+msgstr ""
+"이 설정은 두 개의 새로운 캐시 영역들 - 캐시된 질의 결과 셋들을 보관하는 것 "
+"(<literal>org.hibernate.cache.StandardQueryCache</literal>), 질의 가능한 테이"
+"블들에 대한 가장 최신 업데이트들에 대한 timestamp들을 보관하는 다른 것 "
+"(<literal>org.hibernate.cache.UpdateTimestampsCache</literal>)-의 생성을 강제"
+"한다 . 질의 캐시는 결과 셋 내에 실제 엔티티들의 상태를 캐시시키지 않음을 노트"
+"하라; 그것은 오직 식별자 값들과 값 타입의 결과들 만을 캐시시킨다. 따라서 질"
+"의 캐시는 항상 second-level 캐시와 함께 사용되어야 한다."
-#: index.docbook:928
-msgid "Most queries do not benefit from caching, so by default queries are not cached. To enable caching, call <literal>Query.setCacheable(true)</literal>. This call allows the query to look for existing cache results or add its results to the cache when it is executed."
-msgstr "이 설정은 두 개의 새로운 캐시 영역들 - 캐시된 질의 결과 셋들을 보관하는 것 (<literal>org.hibernate.cache.StandardQueryCache</literal>), 질의 가능한 테이블들에 대한 가장 최신 업데이트들에 대한 timestamp들을 보관하는 다른 것 (<literal>org.hibernate.cache.UpdateTimestampsCache</literal>)-의 생성을 강제한다 . 질의 캐시는 결과 셋 내에 실제 엔티티들의 상태를 캐시시키지 않음을 노트하라; 그것은 오직 식별자 값들과 값 타입의 결과들 만을 캐시시킨다. 따라서 질의 캐시는 항상 second-level 캐시와 함께 사용되어야 한다."
+#. Tag: para
+#: performance.xml:928
+#, no-c-format
+msgid ""
+"Most queries do not benefit from caching, so by default queries are not "
+"cached. To enable caching, call <literal>Query.setCacheable(true)</literal>. "
+"This call allows the query to look for existing cache results or add its "
+"results to the cache when it is executed."
+msgstr ""
+"대부분의 질의들은 캐싱으로부터 이점이 없기에, 디폴트로 질의들은 캐시되지 않는"
+"다. 캐싱을 이용 가능하도록 하려면, <literal>Query.setCacheable(true)</"
+"literal>를 호출하라. 이 호출은 기존 캐시 결과들을 찾는 것을 질의에게 허용해주"
+"거나 질의가 실행될 때 그것의 결과들을 캐시에 추가하는 것을 허용해준다."
-#: index.docbook:935
-msgid "If you require fine-grained control over query cache expiration policies, you may specify a named cache region for a particular query by calling <literal>Query.setCacheRegion()</literal>."
-msgstr "대부분의 질의들은 캐싱으로부터 이점이 없기에, 디폴트로 질의들은 캐시되지 않는다. 캐싱을 이용 가능하도록 하려면, <literal>Query.setCacheable(true)</literal>를 호출하라. 이 호출은 기존 캐시 결과들을 찾는 것을 질의에게 허용해주거나 질의가 실행될 때 그것의 결과들을 캐시에 추가하는 것을 허용해준다."
+#. Tag: para
+#: performance.xml:935
+#, no-c-format
+msgid ""
+"If you require fine-grained control over query cache expiration policies, "
+"you may specify a named cache region for a particular query by calling "
+"<literal>Query.setCacheRegion()</literal>."
+msgstr ""
+"만일 당신이 질의 캐시 만료 정책들에 대한 세밀한 제어를 필요로 할 경우, 당신"
+"은 <literal>Query.setCacheRegion()</literal>을 호출함으로써 특별한 질의에 대"
+"해 명명되니 캐시 영역을 지정할 수도 있다."
-#: index.docbook:941
+#. Tag: programlisting
+#: performance.xml:941
+#, no-c-format
msgid ""
- "<![CDATA[List blogs = sess.createQuery(\"from Blog blog where blog.blogger = :blogger\")\n"
- " .setEntity(\"blogger\", blogger)\n"
- " .setMaxResults(15)\n"
- " .setCacheable(true)\n"
- " .setCacheRegion(\"frontpages\")\n"
- " .list();]]>"
-msgstr "만일 당신이 질의 캐시 만료 정책들에 대한 세밀한 제어를 필요로 할 경우, 당신은 <literal>Query.setCacheRegion()</literal>을 호출함으로써 특별한 질의에 대해 명명되니 캐시 영역을 지정할 수도 있다."
+"<![CDATA[List blogs = sess.createQuery(\"from Blog blog where blog.blogger "
+"= :blogger\")\n"
+" .setEntity(\"blogger\", blogger)\n"
+" .setMaxResults(15)\n"
+" .setCacheable(true)\n"
+" .setCacheRegion(\"frontpages\")\n"
+" .list();]]>"
+msgstr ""
-#: index.docbook:943
-msgid "If the query should force a refresh of its query cache region, you should call <literal>Query.setCacheMode(CacheMode.REFRESH)</literal>. This is particularly useful in cases where underlying data may have been updated via a separate process (i.e., not modified through Hibernate) and allows the application to selectively refresh particular query result sets. This is a more efficient alternative to eviction of a query cache region via <literal>SessionFactory.evictQueries()</literal>."
+#. Tag: para
+#: performance.xml:943
+#, no-c-format
+msgid ""
+"If the query should force a refresh of its query cache region, you should "
+"call <literal>Query.setCacheMode(CacheMode.REFRESH)</literal>. This is "
+"particularly useful in cases where underlying data may have been updated via "
+"a separate process (i.e., not modified through Hibernate) and allows the "
+"application to selectively refresh particular query result sets. This is a "
+"more efficient alternative to eviction of a query cache region via "
+"<literal>SessionFactory.evictQueries()</literal>."
msgstr ""
- "<![CDATA[List blogs = sess.createQuery(\"from Blog blog where blog.blogger = :blogger\")\n"
- " .setEntity(\"blogger\", blogger)\n"
- " .setMaxResults(15)\n"
- " .setCacheable(true)\n"
- " .setCacheRegion(\"frontpages\")\n"
- " .list();]]>"
+"만일 질의가 그것의 질의 캐시 영역의 갱신을 강제시켜야 하는 경우에, 당신은 "
+"<literal>Query.setCacheMode(CacheMode.REFRESH)</literal>를 호출해야 한다. 이"
+"것은 기본 데이터가 별도의 프로세스를 통해 업데이트되었고(예를 들면, Hibernate"
+"를 통해 변경되지 않았고) 특정 질의 결과 셋들을 선택적으로 갱신하는 것을 어플"
+"리케이션에게 허용해주는 경우들에서 특별히 유용하다. 이것은 "
+"<literal>SessionFactory.evictQueries()</literal>를 통해 질의 캐시 영역을 퇴거"
+"시키는 보다 효과적인 대안이다."
-#: index.docbook:955
+#. Tag: title
+#: performance.xml:955
+#, no-c-format
msgid "Understanding Collection performance"
-msgstr "만일 질의가 그것의 질의 캐시 영역의 갱신을 강제시켜야 하는 경우에, 당신은 <literal>Query.setCacheMode(CacheMode.REFRESH)</literal>를 호출해야 한다. 이것은 기본 데이터가 별도의 프로세스를 통해 업데이트되었고(예를 들면, Hibernate를 통해 변경되지 않았고) 특정 질의 결과 셋들을 선택적으로 갱신하는 것을 어플리케이션에게 허용해주는 경우들에서 특별히 유용하다. 이것은 <literal>SessionFactory.evictQueries()</literal>를 통해 질의 캐시 영역을 퇴거시키는 보다 효과적인 대안이다."
-
-#: index.docbook:957
-msgid "We've already spent quite some time talking about collections. In this section we will highlight a couple more issues about how collections behave at runtime."
msgstr "콜렉션 퍼포먼스 이해하기"
-#: index.docbook:964
+#. Tag: para
+#: performance.xml:957
+#, no-c-format
+msgid ""
+"We've already spent quite some time talking about collections. In this "
+"section we will highlight a couple more issues about how collections behave "
+"at runtime."
+msgstr ""
+"우리는이미 콜렉션들에 관해 얘기하는데 꽤 많은 시간을 소요했다. 이 절에서 우리"
+"는 콜렉션들이 실행 시에 어떻게 행위하는지에 관한 한 쌍의 쟁점들을 조명할 것이"
+"다."
+
+#. Tag: title
+#: performance.xml:964
+#, no-c-format
msgid "Taxonomy"
-msgstr "우리는이미 콜렉션들에 관해 얘기하는데 꽤 많은 시간을 소요했다. 이 절에서 우리는 콜렉션들이 실행 시에 어떻게 행위하는지에 관한 한 쌍의 쟁점들을 조명할 것이다."
+msgstr "분류"
-#: index.docbook:966
+#. Tag: para
+#: performance.xml:966
+#, no-c-format
msgid "Hibernate defines three basic kinds of collections:"
-msgstr "<title>분류</title>"
+msgstr "Hibernate는 세 가지 기본적인 종류의 콜렉션들을 정의한다:"
-#: index.docbook:970
+#. Tag: para
+#: performance.xml:970
+#, no-c-format
msgid "collections of values"
-msgstr "Hibernate는 세 가지 기본적인 종류의 콜렉션들을 정의한다:"
+msgstr "값들을 가진 콜렉션들"
-#: index.docbook:973
+#. Tag: para
+#: performance.xml:973
+#, no-c-format
msgid "one to many associations"
-msgstr "값들을 가진 콜렉션들"
+msgstr "one to many 연관들"
-#: index.docbook:976
+#. Tag: para
+#: performance.xml:976
+#, no-c-format
msgid "many to many associations"
-msgstr "one to many 연관들"
-
-#: index.docbook:980
-msgid "This classification distinguishes the various table and foreign key relationships but does not tell us quite everything we need to know about the relational model. To fully understand the relational structure and performance characteristics, we must also consider the structure of the primary key that is used by Hibernate to update or delete collection rows. This suggests the following classification:"
msgstr "many to many 연관들"
-#: index.docbook:991
+#. Tag: para
+#: performance.xml:980
+#, no-c-format
+msgid ""
+"This classification distinguishes the various table and foreign key "
+"relationships but does not tell us quite everything we need to know about "
+"the relational model. To fully understand the relational structure and "
+"performance characteristics, we must also consider the structure of the "
+"primary key that is used by Hibernate to update or delete collection rows. "
+"This suggests the following classification:"
+msgstr ""
+"이 분류는 여러 가지 테이블과 foreign key 관계들을 구별짓지만 우리가 관계형 모"
+"형에 대해 알 필요가 있는 모든 것을 우리에게 말해주지 않는다. 관계형 구조와 퍼"
+"포먼스 특징들을 완전하게 이해하기 위해, 우리는 또한 콜렉션 행들을 업데이트하"
+"거나 삭제하기 위해 Hibernate에 의해 사용되는 프라이머리 키의 구조를 검토해야 "
+"한다. 이것은 다음 분류를 제안한다:"
+
+#. Tag: para
+#: performance.xml:991
+#, no-c-format
msgid "indexed collections"
-msgstr "이 분류는 여러 가지 테이블과 foreign key 관계들을 구별짓지만 우리가 관계형 모형에 대해 알 필요가 있는 모든 것을 우리에게 말해주지 않는다. 관계형 구조와 퍼포먼스 특징들을 완전하게 이해하기 위해, 우리는 또한 콜렉션 행들을 업데이트하거나 삭제하기 위해 Hibernate에 의해 사용되는 프라이머리 키의 구조를 검토해야 한다. 이것은 다음 분류를 제안한다:"
+msgstr "인덱싱 된 콜렉션들"
-#: index.docbook:994
+#. Tag: para
+#: performance.xml:994
+#, no-c-format
msgid "sets"
-msgstr "인덱싱 된 콜렉션들"
+msgstr "set들"
-#: index.docbook:997
+#. Tag: para
+#: performance.xml:997
+#, no-c-format
msgid "bags"
-msgstr "set들"
-
-#: index.docbook:1001
-msgid "All indexed collections (maps, lists, arrays) have a primary key consisting of the <literal><key></literal> and <literal><index></literal> columns. In this case collection updates are usually extremely efficient - the primary key may be efficiently indexed and a particular row may be efficiently located when Hibernate tries to update or delete it."
msgstr "bag들"
-#: index.docbook:1009
-msgid "Sets have a primary key consisting of <literal><key></literal> and element columns. This may be less efficient for some types of collection element, particularly composite elements or large text or binary fields; the database may not be able to index a complex primary key as efficently. On the other hand, for one to many or many to many associations, particularly in the case of synthetic identifiers, it is likely to be just as efficient. (Side-note: if you want <literal>SchemaExport</literal> to actually create the primary key of a <literal><set></literal> for you, you must declare all columns as <literal>not-null=\"true\"</literal>.)"
-msgstr "모든 인덱싱된 콜렉션들(map들, list들, array들)은 <literal><key></literal>와 <literal><index></literal> 컬럼들로 이루어진 프라이머리 키를 갖는다. 이 경우에 콜렉션 업데이트들은 대개 극히 효율적이다 - Hibernate가 그것을 업데이트나 삭제를 시도할 때 프라이머리 키는 효율적으로 인덱싱될 수 있고 특정 행은 효율적으로 위치지워질 수 있다."
+#. Tag: para
+#: performance.xml:1001
+#, no-c-format
+msgid ""
+"All indexed collections (maps, lists, arrays) have a primary key consisting "
+"of the <literal><key></literal> and <literal><index></literal> "
+"columns. In this case collection updates are usually extremely efficient - "
+"the primary key may be efficiently indexed and a particular row may be "
+"efficiently located when Hibernate tries to update or delete it."
+msgstr ""
+"모든 인덱싱된 콜렉션들(map들, list들, array들)은 <literal><key></"
+"literal>와 <literal><index></literal> 컬럼들로 이루어진 프라이머리 키"
+"를 갖는다. 이 경우에 콜렉션 업데이트들은 대개 극히 효율적이다 - Hibernate가 "
+"그것을 업데이트나 삭제를 시도할 때 프라이머리 키는 효율적으로 인덱싱될 수 있"
+"고 특정 행은 효율적으로 위치지워질 수 있다."
-#: index.docbook:1020
-msgid "<literal><idbag></literal> mappings define a surrogate key, so they are always very efficient to update. In fact, they are the best case."
-msgstr "Set들은 <literal><key></literal>와 요소 컬럼들로 구성된 프라이머리 키를 갖는다. 이것은 몇몇 유형의 콜렉션 요소, 특히 composite 요소들 또는 대형 텍스트 또는 바이너리 필드들에 대해 덜 효율적일 수 있다; 데이터베이스는 복잡한 프라이머리 키를 효율적으로 인덱싱하는 것이 불가능할 수도 있다. 반면에 one to many 또는 many to many 연관들의 경우, 특히 합성 식별자들의 경우에는 효율적일 수 있을 것 같다.(부수-노트: 만일 당신이 당신을 위한 <literal><set></literal>의 프라이머리 키를 실제로 생성시키기 위해 <literal>SchemaExport</literal>를 원한다면 당신은 모든 컬럼들을 <literal>not-null=\"true\"</literal>로 선언해야 한다.)"
+#. Tag: para
+#: performance.xml:1009
+#, no-c-format
+msgid ""
+"Sets have a primary key consisting of <literal><key></literal> and "
+"element columns. This may be less efficient for some types of collection "
+"element, particularly composite elements or large text or binary fields; the "
+"database may not be able to index a complex primary key as efficently. On "
+"the other hand, for one to many or many to many associations, particularly "
+"in the case of synthetic identifiers, it is likely to be just as efficient. "
+"(Side-note: if you want <literal>SchemaExport</literal> to actually create "
+"the primary key of a <literal><set></literal> for you, you must "
+"declare all columns as <literal>not-null=\"true\"</literal>.)"
+msgstr ""
+"Set들은 <literal><key></literal>와 요소 컬럼들로 구성된 프라이머리 키"
+"를 갖는다. 이것은 몇몇 유형의 콜렉션 요소, 특히 composite 요소들 또는 대형 텍"
+"스트 또는 바이너리 필드들에 대해 덜 효율적일 수 있다; 데이터베이스는 복잡한 "
+"프라이머리 키를 효율적으로 인덱싱하는 것이 불가능할 수도 있다. 반면에 one to "
+"many 또는 many to many 연관들의 경우, 특히 합성 식별자들의 경우에는 효율적일 "
+"수 있을 것 같다.(부수-노트: 만일 당신이 당신을 위한 <literal><set></"
+"literal>의 프라이머리 키를 실제로 생성시키기 위해 <literal>SchemaExport</"
+"literal>를 원한다면 당신은 모든 컬럼들을 <literal>not-null=\"true\"</literal>"
+"로 선언해야 한다.)"
-#: index.docbook:1025
-msgid "Bags are the worst case. Since a bag permits duplicate element values and has no index column, no primary key may be defined. Hibernate has no way of distinguishing between duplicate rows. Hibernate resolves this problem by completely removing (in a single <literal>DELETE</literal>) and recreating the collection whenever it changes. This might be very inefficient."
-msgstr "<literal><idbag></literal> 매핑들은 대용 키를 정의하여서, 그것들은 항상 업데이트에 매우 효율적이다. 사실, 그것들은 최상의 경우이다."
+#. Tag: para
+#: performance.xml:1020
+#, no-c-format
+msgid ""
+"<literal><idbag></literal> mappings define a surrogate key, so they "
+"are always very efficient to update. In fact, they are the best case."
+msgstr ""
+"<literal><idbag></literal> 매핑들은 대용 키를 정의하여서, 그것들은 항"
+"상 업데이트에 매우 효율적이다. 사실, 그것들은 최상의 경우이다."
-#: index.docbook:1033
-msgid "Note that for a one-to-many association, the \"primary key\" may not be the physical primary key of the database table - but even in this case, the above classification is still useful. (It still reflects how Hibernate \"locates\" individual rows of the collection.)"
-msgstr "Bag들은 가장 나쁜 경우이다. 왜냐하면 하나의 bag은 중복 요소 값들을 허용하고 인덱스 컬럼을 갖지 않기 때문에, 프라이머리 키가 정의될 수 없다. Hibernate는 중복 행들 사이를 구분 짓는 방법을 갖고 있지 않다. Hibernate는 그것이 변경될 때마다 (한 개의 DELETE로) 콜렉션을 완전하게 제거하고 다시 생성시킴으로써 이 문제를 해결한다. 이것은 매우 비효율적이다."
+#. Tag: para
+#: performance.xml:1025
+#, no-c-format
+msgid ""
+"Bags are the worst case. Since a bag permits duplicate element values and "
+"has no index column, no primary key may be defined. Hibernate has no way of "
+"distinguishing between duplicate rows. Hibernate resolves this problem by "
+"completely removing (in a single <literal>DELETE</literal>) and recreating "
+"the collection whenever it changes. This might be very inefficient."
+msgstr ""
+"Bag들은 가장 나쁜 경우이다. 왜냐하면 하나의 bag은 중복 요소 값들을 허용하고 "
+"인덱스 컬럼을 갖지 않기 때문에, 프라이머리 키가 정의될 수 없다. Hibernate는 "
+"중복 행들 사이를 구분 짓는 방법을 갖고 있지 않다. Hibernate는 그것이 변경될 "
+"때마다 (한 개의 DELETE로) 콜렉션을 완전하게 제거하고 다시 생성시킴으로써 이 "
+"문제를 해결한다. 이것은 매우 비효율적이다."
-#: index.docbook:1043
-msgid "Lists, maps, idbags and sets are the most efficient collections to update"
-msgstr "one-to-many 연관의 경우, \"프라이머리 키\"는 데이터베이스 테이블의 물리적인 프라이머리 키가 아닐 수도 있지만- 이 경우에서도 위의 분류는 여전히 유용하다. (그것은 여전히 Hibernate가 콜렉션의 개별 행들을 어떻게 \"위치지우는\"지를 반영한다.)"
+#. Tag: para
+#: performance.xml:1033
+#, no-c-format
+msgid ""
+"Note that for a one-to-many association, the \"primary key\" may not be the "
+"physical primary key of the database table - but even in this case, the "
+"above classification is still useful. (It still reflects how Hibernate "
+"\"locates\" individual rows of the collection.)"
+msgstr ""
+"one-to-many 연관의 경우, \"프라이머리 키\"는 데이터베이스 테이블의 물리적인 "
+"프라이머리 키가 아닐 수도 있지만- 이 경우에서도 위의 분류는 여전히 유용하다. "
+"(그것은 여전히 Hibernate가 콜렉션의 개별 행들을 어떻게 \"위치지우는\"지를 반"
+"영한다.)"
-#: index.docbook:1045
-msgid "From the discussion above, it should be clear that indexed collections and (usually) sets allow the most efficient operation in terms of adding, removing and updating elements."
+#. Tag: title
+#: performance.xml:1043
+#, no-c-format
+msgid ""
+"Lists, maps, idbags and sets are the most efficient collections to update"
msgstr "List, map, idbag, set들은 update에 가장 효율적인 콜렉션들이다"
-#: index.docbook:1051
-msgid "There is, arguably, one more advantage that indexed collections have over sets for many to many associations or collections of values. Because of the structure of a <literal>Set</literal>, Hibernate doesn't ever <literal>UPDATE</literal> a row when an element is \"changed\". Changes to a <literal>Set</literal> always work via <literal>INSERT</literal> and <literal>DELETE</literal> (of individual rows). Once again, this consideration does not apply to one to many associations."
-msgstr "위의 논의에서, 인덱싱된 콜렉션들과 (대개) set들이 요소들을 추가하고, 제거하고 업데이트함에 있어 가장 효율적인 오퍼레이션을 허용해준다."
+#. Tag: para
+#: performance.xml:1045
+#, no-c-format
+msgid ""
+"From the discussion above, it should be clear that indexed collections and "
+"(usually) sets allow the most efficient operation in terms of adding, "
+"removing and updating elements."
+msgstr ""
+"위의 논의에서, 인덱싱된 콜렉션들과 (대개) set들이 요소들을 추가하고, 제거하"
+"고 업데이트함에 있어 가장 효율적인 오퍼레이션을 허용해준다."
-#: index.docbook:1060
-msgid "After observing that arrays cannot be lazy, we would conclude that lists, maps and idbags are the most performant (non-inverse) collection types, with sets not far behind. Sets are expected to be the most common kind of collection in Hibernate applications. This is because the \"set\" semantics are most natural in the relational model."
-msgstr "아마 인덱싱 된 콜렉션들이 many to many 연관들을 위한 또는 값들을 가진 콜렉션들을 위한 set들에 대해 갖고 있는 하나 이상의 장점들이 존재한다. <literal>Set</literal>의 구조 때문에, Hibernate는 요소가 \"변경\"될 때 행을 <literal>UPDATE</literal> 하지 않는다. <literal>Set</literal>에 대한 변경들은 항상 (개별 행들에 대한) <literal>INSERT</literal>와 <literal>DELETE</literal>를 통해 동작한다. 다시 이 검토는 one to many 연관들에 적용되지 않는다."
+#. Tag: para
+#: performance.xml:1051
+#, no-c-format
+msgid ""
+"There is, arguably, one more advantage that indexed collections have over "
+"sets for many to many associations or collections of values. Because of the "
+"structure of a <literal>Set</literal>, Hibernate doesn't ever "
+"<literal>UPDATE</literal> a row when an element is \"changed\". Changes to a "
+"<literal>Set</literal> always work via <literal>INSERT</literal> and "
+"<literal>DELETE</literal> (of individual rows). Once again, this "
+"consideration does not apply to one to many associations."
+msgstr ""
+"아마 인덱싱 된 콜렉션들이 many to many 연관들을 위한 또는 값들을 가진 콜렉션"
+"들을 위한 set들에 대해 갖고 있는 하나 이상의 장점들이 존재한다. "
+"<literal>Set</literal>의 구조 때문에, Hibernate는 요소가 \"변경\"될 때 행을 "
+"<literal>UPDATE</literal> 하지 않는다. <literal>Set</literal>에 대한 변경들"
+"은 항상 (개별 행들에 대한) <literal>INSERT</literal>와 <literal>DELETE</"
+"literal>를 통해 동작한다. 다시 이 검토는 one to many 연관들에 적용되지 않는"
+"다."
-#: index.docbook:1068
-msgid "However, in well-designed Hibernate domain models, we usually see that most collections are in fact one-to-many associations with <literal>inverse=\"true\"</literal>. For these associations, the update is handled by the many-to-one end of the association, and so considerations of collection update performance simply do not apply."
-msgstr "배열들이 lazy 될 수 없음을 관찰 한 후에, 우리는 list들, map들, 그리고 idbag들이 단독이 아닌 set들을 가진 가장 퍼포먼스가 좋은(non-inverse) 콜렉션 타입들임을 결론 지을 것이다. Set들은 Hibernate 어플리케이션들에서 가장 공통된 종류의 콜렉션이 될 것이라 예상된다. 이것은 \"set\" 의미가 관계형 모형에서 가장 고유한 것이기 때문이다."
+#. Tag: para
+#: performance.xml:1060
+#, no-c-format
+msgid ""
+"After observing that arrays cannot be lazy, we would conclude that lists, "
+"maps and idbags are the most performant (non-inverse) collection types, with "
+"sets not far behind. Sets are expected to be the most common kind of "
+"collection in Hibernate applications. This is because the \"set\" semantics "
+"are most natural in the relational model."
+msgstr ""
+"배열들이 lazy 될 수 없음을 관찰 한 후에, 우리는 list들, map들, 그리고 idbag들"
+"이 단독이 아닌 set들을 가진 가장 퍼포먼스가 좋은(non-inverse) 콜렉션 타입들임"
+"을 결론 지을 것이다. Set들은 Hibernate 어플리케이션들에서 가장 공통된 종류의 "
+"콜렉션이 될 것이라 예상된다. 이것은 \"set\" 의미가 관계형 모형에서 가장 고유"
+"한 것이기 때문이다."
-#: index.docbook:1078
+#. Tag: para
+#: performance.xml:1068
+#, no-c-format
+msgid ""
+"However, in well-designed Hibernate domain models, we usually see that most "
+"collections are in fact one-to-many associations with <literal>inverse=\"true"
+"\"</literal>. For these associations, the update is handled by the many-to-"
+"one end of the association, and so considerations of collection update "
+"performance simply do not apply."
+msgstr ""
+"하지만, 잘 설계된 Hibernate 도메인 모형들에서, 우리는 대개 대부분의 콜렉션들"
+"이 사실 <literal>inverse=\"true\"</literal>를 가진 one-to-many 연관들임을 보"
+"게 된다. 이들 연관들의 경우, 업데이트는 연관의 many-to-one 엔드에 의해 처리되"
+"고, 따라서 콜렉션 업데이트 퍼포먼스에 대한 검토들은 단순히 적용되지 않는다."
+
+#. Tag: title
+#: performance.xml:1078
+#, no-c-format
msgid "Bags and lists are the most efficient inverse collections"
-msgstr "하지만, 잘 설계된 Hibernate 도메인 모형들에서, 우리는 대개 대부분의 콜렉션들이 사실 <literal>inverse=\"true\"</literal>를 가진 one-to-many 연관들임을 보게 된다. 이들 연관들의 경우, 업데이트는 연관의 many-to-one 엔드에 의해 처리되고, 따라서 콜렉션 업데이트 퍼포먼스에 대한 검토들은 단순히 적용되지 않는다."
-
-#: index.docbook:1080
-msgid "Just before you ditch bags forever, there is a particular case in which bags (and also lists) are much more performant than sets. For a collection with <literal>inverse=\"true\"</literal> (the standard bidirectional one-to-many relationship idiom, for example) we can add elements to a bag or list without needing to initialize (fetch) the bag elements! This is because <literal>Collection.add()</literal> or <literal>Collection.addAll()</literal> must always return true for a bag or <literal>List</literal> (unlike a <literal>Set</literal>). This can make the following common code much faster."
msgstr "Bag들과 list들은 가장 효율적인 inverse 콜렉션들이다"
-#: index.docbook:1090
+#. Tag: para
+#: performance.xml:1080
+#, no-c-format
msgid ""
- "<![CDATA[Parent p = (Parent) sess.load(Parent.class, id);\n"
- "Child c = new Child();\n"
- "c.setParent(p);\n"
- "p.getChildren().add(c); //no need to fetch the collection!\n"
- "sess.flush();]]>"
-msgstr "단지 당신이 영원히 bag들을 버리기 전에, bag들(과 또한 list들)이 set들보다 훨씬 더 성능이 좋은 특별한 경우들이 존재한다. <literal>inverse=\"true\"</literal>를 가진 콜렉션들(예를 들어, 표준 양방향 one-to-many 관계 특질)의 경우, 우리는 bag 요소들을 초기화(페치) 시킬 필요 없이 bag 또는 list에 요소들을 추가시킬 수 있다! 이것은 <literal>Collection.add()</literal> 또는 <literal>Collection.addAll()</literal>이 (<literal>Set</literal>과는 달리) 항상 bag 또는 <literal>List</literal>에 대해 true를 반환해야하기 때문이다. 이것은 훨씬 다음 공통적인 코드를 더 빠르게 만들 수 있다."
+"Just before you ditch bags forever, there is a particular case in which bags "
+"(and also lists) are much more performant than sets. For a collection with "
+"<literal>inverse=\"true\"</literal> (the standard bidirectional one-to-many "
+"relationship idiom, for example) we can add elements to a bag or list "
+"without needing to initialize (fetch) the bag elements! This is because "
+"<literal>Collection.add()</literal> or <literal>Collection.addAll()</"
+"literal> must always return true for a bag or <literal>List</literal> "
+"(unlike a <literal>Set</literal>). This can make the following common code "
+"much faster."
+msgstr ""
+"단지 당신이 영원히 bag들을 버리기 전에, bag들(과 또한 list들)이 set들보다 훨"
+"씬 더 성능이 좋은 특별한 경우들이 존재한다. <literal>inverse=\"true\"</"
+"literal>를 가진 콜렉션들(예를 들어, 표준 양방향 one-to-many 관계 특질)의 경"
+"우, 우리는 bag 요소들을 초기화(페치) 시킬 필요 없이 bag 또는 list에 요소들을 "
+"추가시킬 수 있다! 이것은 <literal>Collection.add()</literal> 또는 "
+"<literal>Collection.addAll()</literal>이 (<literal>Set</literal>과는 달리) 항"
+"상 bag 또는 <literal>List</literal>에 대해 true를 반환해야하기 때문이다. 이것"
+"은 훨씬 다음 공통적인 코드를 더 빠르게 만들 수 있다."
-#: index.docbook:1095
-msgid "One shot delete"
+#. Tag: programlisting
+#: performance.xml:1090
+#, no-c-format
+msgid ""
+"<![CDATA[Parent p = (Parent) sess.load(Parent.class, id);\n"
+"Child c = new Child();\n"
+"c.setParent(p);\n"
+"p.getChildren().add(c); //no need to fetch the collection!\n"
+"sess.flush();]]>"
msgstr ""
- "<![CDATA[Parent p = (Parent) sess.load(Parent.class, id);\n"
- "Child c = new Child();\n"
- "c.setParent(p);\n"
- "p.getChildren().add(c); //no need to fetch the collection!\n"
- "sess.flush();]]>"
-#: index.docbook:1097
-msgid "Occasionally, deleting collection elements one by one can be extremely inefficient. Hibernate isn't completely stupid, so it knows not to do that in the case of an newly-empty collection (if you called <literal>list.clear()</literal>, for example). In this case, Hibernate will issue a single <literal>DELETE</literal> and we are done!"
+#. Tag: title
+#: performance.xml:1095
+#, no-c-format
+msgid "One shot delete"
msgstr "원 샷 delete"
-#: index.docbook:1104
-msgid "Suppose we add a single element to a collection of size twenty and then remove two elements. Hibernate will issue one <literal>INSERT</literal> statement and two <literal>DELETE</literal> statements (unless the collection is a bag). This is certainly desirable."
-msgstr "종종 콜렉션 요소들을 하나씩 삭제하는 것은 극히 비효율적일 수 있다! Hibernate는 완전하게 바보가 아니어서, 그것은 새로운 공백의 콜렉션의 경우(예를 들어 당신이 <literal>list.clear()</literal>를 호출했을 경우)에 그것을 행하지 않을 것임을 알고 있다. 이 경우에, Hibernate는 하나의 <literal>DELETE</literal> 명령을 내릴 것이고 우리는 모두 행했다!"
+#. Tag: para
+#: performance.xml:1097
+#, no-c-format
+msgid ""
+"Occasionally, deleting collection elements one by one can be extremely "
+"inefficient. Hibernate isn't completely stupid, so it knows not to do that "
+"in the case of an newly-empty collection (if you called <literal>list.clear()"
+"</literal>, for example). In this case, Hibernate will issue a single "
+"<literal>DELETE</literal> and we are done!"
+msgstr ""
+"종종 콜렉션 요소들을 하나씩 삭제하는 것은 극히 비효율적일 수 있다! Hibernate"
+"는 완전하게 바보가 아니어서, 그것은 새로운 공백의 콜렉션의 경우(예를 들어 당"
+"신이 <literal>list.clear()</literal>를 호출했을 경우)에 그것을 행하지 않을 것"
+"임을 알고 있다. 이 경우에, Hibernate는 하나의 <literal>DELETE</literal> 명령"
+"을 내릴 것이고 우리는 모두 행했다!"
-#: index.docbook:1110
-msgid "However, suppose that we remove eighteen elements, leaving two and then add thee new elements. There are two possible ways to proceed"
-msgstr "우리가 길이 20인 하나의 콜렉션에 한 개의 요소를 추가하고 그런 다음 두 개의 요소들을 제거한다고 가정하자. Hibernate는 (콜렉션이 bag가 아닌 한) 한 개의 <literal>INSERT</literal> 문장과 두 개의 <literal>DELETE</literal> 문장을 명령 내릴 것이다. 이것은 확실히 마음에 든다."
+#. Tag: para
+#: performance.xml:1104
+#, no-c-format
+msgid ""
+"Suppose we add a single element to a collection of size twenty and then "
+"remove two elements. Hibernate will issue one <literal>INSERT</literal> "
+"statement and two <literal>DELETE</literal> statements (unless the "
+"collection is a bag). This is certainly desirable."
+msgstr ""
+"우리가 길이 20인 하나의 콜렉션에 한 개의 요소를 추가하고 그런 다음 두 개의 요"
+"소들을 제거한다고 가정하자. Hibernate는 (콜렉션이 bag가 아닌 한) 한 개의 "
+"<literal>INSERT</literal> 문장과 두 개의 <literal>DELETE</literal> 문장을 명"
+"령 내릴 것이다. 이것은 확실히 마음에 든다."
-#: index.docbook:1117
+#. Tag: para
+#: performance.xml:1110
+#, no-c-format
+msgid ""
+"However, suppose that we remove eighteen elements, leaving two and then add "
+"thee new elements. There are two possible ways to proceed"
+msgstr ""
+"하지만, 우리가 두 개의 요소들을 남겨둔채 18 개의 요소들을 제거하고 나서 세 개"
+"의 새로운 요소들을 추가한다고 가정하자. 두 가지 가능한 처리 방법들이 존재한"
+"다."
+
+#. Tag: para
+#: performance.xml:1117
+#, no-c-format
msgid "delete eighteen rows one by one and then insert three rows"
-msgstr "하지만, 우리가 두 개의 요소들을 남겨둔채 18 개의 요소들을 제거하고 나서 세 개의 새로운 요소들을 추가한다고 가정하자. 두 가지 가능한 처리 방법들이 존재한다."
-
-#: index.docbook:1120
-msgid "remove the whole collection (in one SQL <literal>DELETE</literal>) and insert all five current elements (one by one)"
msgstr "하나씩 열 여덟 개의 행들을 삭제한 다음에 세 개의 행들을 삽입시킨다"
-#: index.docbook:1125
-msgid "Hibernate isn't smart enough to know that the second option is probably quicker in this case. (And it would probably be undesirable for Hibernate to be that smart; such behaviour might confuse database triggers, etc.)"
-msgstr "(한 개의 SQL <literal>DELETE</literal>로)전체 콜렉션을 삭제하고 모든 다섯개의 현재 요소들을 (하나씩) insert 시킨다"
+#. Tag: para
+#: performance.xml:1120
+#, no-c-format
+msgid ""
+"remove the whole collection (in one SQL <literal>DELETE</literal>) and "
+"insert all five current elements (one by one)"
+msgstr ""
+"(한 개의 SQL <literal>DELETE</literal>로)전체 콜렉션을 삭제하고 모든 다섯개"
+"의 현재 요소들을 (하나씩) insert 시킨다"
-#: index.docbook:1131
-msgid "Fortunately, you can force this behaviour (ie. the second strategy) at any time by discarding (ie. dereferencing) the original collection and returning a newly instantiated collection with all the current elements. This can be very useful and powerful from time to time."
-msgstr "Hibernate는 두 번째 옵션이 아마 이 경우에 더 빠르다는 점을 알 만큼 충분히 영리하지 않다.(그리고 Hibernate가 그렇게 영리해지는 것을 희망 하는 것은 가능하지 않을 것이다; 그런 특징은 데이터베이스 트리거들 등을 혼동스럽게 할 수도 있다.)"
+#. Tag: para
+#: performance.xml:1125
+#, no-c-format
+msgid ""
+"Hibernate isn't smart enough to know that the second option is probably "
+"quicker in this case. (And it would probably be undesirable for Hibernate to "
+"be that smart; such behaviour might confuse database triggers, etc.)"
+msgstr ""
+"Hibernate는 두 번째 옵션이 아마 이 경우에 더 빠르다는 점을 알 만큼 충분히 영"
+"리하지 않다.(그리고 Hibernate가 그렇게 영리해지는 것을 희망 하는 것은 가능하"
+"지 않을 것이다; 그런 특징은 데이터베이스 트리거들 등을 혼동스럽게 할 수도 있"
+"다.)"
-#: index.docbook:1137
-msgid "Of course, one-shot-delete does not apply to collections mapped <literal>inverse=\"true\"</literal>."
-msgstr "다행히, 당신은 원래의 콜렉션을 폐기시키고(예를 들어 참조 해제하고) 모든 현재 요소들을 가진 새로이 초기화된 콜렉션을 반환함으로써 아무때든지 이 특징을 강제시킬 수 있다. 이것은 시간이 흐름에 따라 매우 유용하고 강력해질 수 있다."
+#. Tag: para
+#: performance.xml:1131
+#, no-c-format
+msgid ""
+"Fortunately, you can force this behaviour (ie. the second strategy) at any "
+"time by discarding (ie. dereferencing) the original collection and returning "
+"a newly instantiated collection with all the current elements. This can be "
+"very useful and powerful from time to time."
+msgstr ""
+"다행히, 당신은 원래의 콜렉션을 폐기시키고(예를 들어 참조 해제하고) 모든 현재 "
+"요소들을 가진 새로이 초기화된 콜렉션을 반환함으로써 아무때든지 이 특징을 강제"
+"시킬 수 있다. 이것은 시간이 흐름에 따라 매우 유용하고 강력해질 수 있다."
-#: index.docbook:1146
+#. Tag: para
+#: performance.xml:1137
+#, no-c-format
+msgid ""
+"Of course, one-shot-delete does not apply to collections mapped "
+"<literal>inverse=\"true\"</literal>."
+msgstr ""
+"물론 단 한번의 삭제(one-shot-delete)는 <literal>inverse=\"true\"</literal>로 "
+"매핑된 콜렉션들에 적용되지 않는다."
+
+#. Tag: title
+#: performance.xml:1146
+#, no-c-format
msgid "Monitoring performance"
-msgstr "물론 단 한번의 삭제(one-shot-delete)는 <literal>inverse=\"true\"</literal>로 매핑된 콜렉션들에 적용되지 않는다."
-
-#: index.docbook:1148
-msgid "Optimization is not much use without monitoring and access to performance numbers. Hibernate provides a full range of figures about its internal operations. Statistics in Hibernate are available per <literal>SessionFactory</literal>."
msgstr "퍼포먼스 모니터링하기"
-#: index.docbook:1155
+#. Tag: para
+#: performance.xml:1148
+#, no-c-format
+msgid ""
+"Optimization is not much use without monitoring and access to performance "
+"numbers. Hibernate provides a full range of figures about its internal "
+"operations. Statistics in Hibernate are available per "
+"<literal>SessionFactory</literal>."
+msgstr ""
+"최적화는 퍼포먼스 관련 숫자들에 대한 모니터링과 접근 없이는 많이 사용되지 않"
+"는다. Hibernate는 그것의 내부적인 오퍼레이션들에 대한 전체 영역의 특징들을 제"
+"공한다. Hibernate에서 Statistics는 <literal>SessionFactory</literal>에 대해 "
+"이용 가능하다."
+
+#. Tag: title
+#: performance.xml:1155
+#, no-c-format
msgid "Monitoring a SessionFactory"
-msgstr "최적화는 퍼포먼스 관련 숫자들에 대한 모니터링과 접근 없이는 많이 사용되지 않는다. Hibernate는 그것의 내부적인 오퍼레이션들에 대한 전체 영역의 특징들을 제공한다. Hibernate에서 Statistics는 <literal>SessionFactory</literal>에 대해 이용 가능하다."
-
-#: index.docbook:1157
-msgid "You can access <literal>SessionFactory</literal> metrics in two ways. Your first option is to call <literal>sessionFactory.getStatistics()</literal> and read or display the <literal>Statistics</literal> yourself."
msgstr "SessionFactory 모니터링 하기"
-#: index.docbook:1163
-msgid "Hibernate can also use JMX to publish metrics if you enable the <literal>StatisticsService</literal> MBean. You may enable a single MBean for all your <literal>SessionFactory</literal> or one per factory. See the following code for minimalistic configuration examples:"
-msgstr "당신은 두 가지 방법들로 <literal>SessionFactory</literal> metrics에 접근할 수 있다. 당신의 첫 번째 옵션은 <literal>sessionFactory.getStatistics()</literal>를 호출하고 당신 스스로 <literal>Statistics</literal>를 읽거나 디스플레이 하는 것이다."
+#. Tag: para
+#: performance.xml:1157
+#, no-c-format
+msgid ""
+"You can access <literal>SessionFactory</literal> metrics in two ways. Your "
+"first option is to call <literal>sessionFactory.getStatistics()</literal> "
+"and read or display the <literal>Statistics</literal> yourself."
+msgstr ""
+"당신은 두 가지 방법들로 <literal>SessionFactory</literal> metrics에 접근할 "
+"수 있다. 당신의 첫 번째 옵션은 <literal>sessionFactory.getStatistics()</"
+"literal>를 호출하고 당신 스스로 <literal>Statistics</literal>를 읽거나 디스플"
+"레이 하는 것이다."
-#: index.docbook:1170
+#. Tag: para
+#: performance.xml:1163
+#, no-c-format
msgid ""
- "<![CDATA[// MBean service registration for a specific SessionFactory\n"
- "Hashtable tb = new Hashtable();\n"
- "tb.put(\"type\", \"statistics\");\n"
- "tb.put(\"sessionFactory\", \"myFinancialApp\");\n"
- "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
- "\n"
- "StatisticsService stats = new StatisticsService(); // MBean implementation\n"
- "stats.setSessionFactory(sessionFactory); // Bind the stats to a SessionFactory\n"
- "server.registerMBean(stats, on); // Register the Mbean on the server]]>"
-msgstr "만일 당신이 <literal>StatisticsService</literal> MBean을 이용 가능하도록 할 경우 Hibernate는 또한 metrics를 발표하는데 JMX를 사용할 수 있다. 당신은 모든 당신의<literal>SessionFactory</literal>에 대해 한 개의 MBean 또는 팩토리 당 한 개를 이용 가능하게 할 수 있다. 최소한의 구성 예제들은 다음 코드를 보라:"
+"Hibernate can also use JMX to publish metrics if you enable the "
+"<literal>StatisticsService</literal> MBean. You may enable a single MBean "
+"for all your <literal>SessionFactory</literal> or one per factory. See the "
+"following code for minimalistic configuration examples:"
+msgstr ""
+"만일 당신이 <literal>StatisticsService</literal> MBean을 이용 가능하도록 할 "
+"경우 Hibernate는 또한 metrics를 발표하는데 JMX를 사용할 수 있다. 당신은 모든 "
+"당신의<literal>SessionFactory</literal>에 대해 한 개의 MBean 또는 팩토리 당 "
+"한 개를 이용 가능하게 할 수 있다. 최소한의 구성 예제들은 다음 코드를 보라:"
-#: index.docbook:1173
+#. Tag: programlisting
+#: performance.xml:1170
+#, no-c-format
msgid ""
- "<![CDATA[// MBean service registration for all SessionFactory's\n"
- "Hashtable tb = new Hashtable();\n"
- "tb.put(\"type\", \"statistics\");\n"
- "tb.put(\"sessionFactory\", \"all\");\n"
- "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
- "\n"
- "StatisticsService stats = new StatisticsService(); // MBean implementation\n"
- "server.registerMBean(stats, on); // Register the MBean on the server]]>"
+"<![CDATA[// MBean service registration for a specific SessionFactory\n"
+"Hashtable tb = new Hashtable();\n"
+"tb.put(\"type\", \"statistics\");\n"
+"tb.put(\"sessionFactory\", \"myFinancialApp\");\n"
+"ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
+"\n"
+"StatisticsService stats = new StatisticsService(); // MBean implementation\n"
+"stats.setSessionFactory(sessionFactory); // Bind the stats to a "
+"SessionFactory\n"
+"server.registerMBean(stats, on); // Register the Mbean on the server]]>"
msgstr ""
- "<![CDATA[// MBean service registration for a specific SessionFactory\n"
- "Hashtable tb = new Hashtable();\n"
- "tb.put(\"type\", \"statistics\");\n"
- "tb.put(\"sessionFactory\", \"myFinancialApp\");\n"
- "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
- "\n"
- "StatisticsService stats = new StatisticsService(); // MBean implementation\n"
- "stats.setSessionFactory(sessionFactory); // Bind the stats to a SessionFactory\n"
- "server.registerMBean(stats, on); // Register the Mbean on the server]]>"
-#: index.docbook:1175
-msgid "TODO: This doesn't make sense: In the first case, we retrieve and use the MBean directly. In the second one, we must give the JNDI name in which the session factory is held before using it. Use <literal>hibernateStatsBean.setSessionFactoryJNDIName(\"my/JNDI/Name\")</literal>"
+#. Tag: programlisting
+#: performance.xml:1173
+#, no-c-format
+msgid ""
+"<![CDATA[// MBean service registration for all SessionFactory's\n"
+"Hashtable tb = new Hashtable();\n"
+"tb.put(\"type\", \"statistics\");\n"
+"tb.put(\"sessionFactory\", \"all\");\n"
+"ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
+"\n"
+"StatisticsService stats = new StatisticsService(); // MBean implementation\n"
+"server.registerMBean(stats, on); // Register the MBean on the server]]>"
msgstr ""
- "<![CDATA[// MBean service registration for all SessionFactory's\n"
- "Hashtable tb = new Hashtable();\n"
- "tb.put(\"type\", \"statistics\");\n"
- "tb.put(\"sessionFactory\", \"all\");\n"
- "ObjectName on = new ObjectName(\"hibernate\", tb); // MBean object name\n"
- "\n"
- "StatisticsService stats = new StatisticsService(); // MBean implementation\n"
- "server.registerMBean(stats, on); // Register the MBean on the server]]>"
-#: index.docbook:1180
-msgid "You can (de)activate the monitoring for a <literal>SessionFactory</literal>"
-msgstr "TODO: 이것은 의미가 없다: 첫번째 경우에, 우리는 직접 MBean을 검색하고 사용한다. 두 번째 경우에 우리는 JNDI 이름을 사용하기 전에 세션 팩토리가 보관하고 있는 JNDI 이름을 부여해야 한다. <literal>hibernateStatsBean.setSessionFactoryJNDIName(\"my/JNDI/Name\")</literal>을 사용하라."
+#. Tag: para
+#: performance.xml:1175
+#, no-c-format
+msgid ""
+"TODO: This doesn't make sense: In the first case, we retrieve and use the "
+"MBean directly. In the second one, we must give the JNDI name in which the "
+"session factory is held before using it. Use <literal>hibernateStatsBean."
+"setSessionFactoryJNDIName(\"my/JNDI/Name\")</literal>"
+msgstr ""
+"TODO: 이것은 의미가 없다: 첫번째 경우에, 우리는 직접 MBean을 검색하고 사용한"
+"다. 두 번째 경우에 우리는 JNDI 이름을 사용하기 전에 세션 팩토리가 보관하고 있"
+"는 JNDI 이름을 부여해야 한다. <literal>hibernateStatsBean."
+"setSessionFactoryJNDIName(\"my/JNDI/Name\")</literal>을 사용하라."
-#: index.docbook:1185
-msgid "at configuration time, set <literal>hibernate.generate_statistics</literal> to <literal>false</literal>"
-msgstr "당신은 <literal>SessionFactory</literal>에 대한 모니터링을 (비)활성화 시킬 수 있다"
+#. Tag: para
+#: performance.xml:1180
+#, no-c-format
+msgid ""
+"You can (de)activate the monitoring for a <literal>SessionFactory</literal>"
+msgstr ""
+"당신은 <literal>SessionFactory</literal>에 대한 모니터링을 (비)활성화 시킬 "
+"수 있다"
-#: index.docbook:1192
-msgid "at runtime: <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> or <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal>"
-msgstr "구성 시 : <literal>hibernate.generate_statistics</literal>, 디폴트는 <literal>false</literal>"
+#. Tag: para
+#: performance.xml:1185
+#, no-c-format
+msgid ""
+"at configuration time, set <literal>hibernate.generate_statistics</literal> "
+"to <literal>false</literal>"
+msgstr ""
+"구성 시 : <literal>hibernate.generate_statistics</literal>, 디폴트는 "
+"<literal>false</literal>"
-#: index.docbook:1199
-msgid "Statistics can be reset programatically using the <literal>clear()</literal> method. A summary can be sent to a logger (info level) using the <literal>logSummary()</literal> method."
-msgstr "실행 시 : <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> 또는 <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal>"
+#. Tag: para
+#: performance.xml:1192
+#, no-c-format
+msgid ""
+"at runtime: <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> "
+"or <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal>"
+msgstr ""
+"실행 시 : <literal>sf.getStatistics().setStatisticsEnabled(true)</literal> 또"
+"는 <literal>hibernateStatsBean.setStatisticsEnabled(true)</literal>"
-#: index.docbook:1208
+#. Tag: para
+#: performance.xml:1199
+#, no-c-format
+msgid ""
+"Statistics can be reset programatically using the <literal>clear()</literal> "
+"method. A summary can be sent to a logger (info level) using the "
+"<literal>logSummary()</literal> method."
+msgstr ""
+"Statistics(통계량들)은 <literal>clear()</literal> 메소드를 사용하여 프로그래"
+"밍 방식으로 재설정 될 수 있다. 요약은 <literal>logSummary()</literal> 메소드"
+"를 사용하여 logger(info 레벨)에게 전송될 수 있다."
+
+#. Tag: title
+#: performance.xml:1208
+#, no-c-format
msgid "Metrics"
-msgstr "Statistics(통계량들)은 <literal>clear()</literal> 메소드를 사용하여 프로그래밍 방식으로 재설정 될 수 있다. 요약은 <literal>logSummary()</literal> 메소드를 사용하여 logger(info 레벨)에게 전송될 수 있다."
-
-#: index.docbook:1210
-msgid "Hibernate provides a number of metrics, from very basic to the specialized information only relevant in certain scenarios. All available counters are described in the <literal>Statistics</literal> interface API, in three categories:"
msgstr "Metrics"
-#: index.docbook:1217
-msgid "Metrics related to the general <literal>Session</literal> usage, such as number of open sessions, retrieved JDBC connections, etc."
-msgstr "Hibernate는 매우 기본적인 것에서부터 어떤 시나리오들에만 관련된 전문 정보에 이르는 많은 metrics를 제공한다. 모든 이용 가능한 카운터들은 <literal>Statistics</literal> interface API에서 3개의 카테고리로 설명되어 있다:"
+#. Tag: para
+#: performance.xml:1210
+#, no-c-format
+msgid ""
+"Hibernate provides a number of metrics, from very basic to the specialized "
+"information only relevant in certain scenarios. All available counters are "
+"described in the <literal>Statistics</literal> interface API, in three "
+"categories:"
+msgstr ""
+"Hibernate는 매우 기본적인 것에서부터 어떤 시나리오들에만 관련된 전문 정보에 "
+"이르는 많은 metrics를 제공한다. 모든 이용 가능한 카운터들은 "
+"<literal>Statistics</literal> interface API에서 3개의 카테고리로 설명되어 있"
+"다:"
-#: index.docbook:1223
-msgid "Metrics related to he entities, collections, queries, and caches as a whole (aka global metrics),"
-msgstr "열려진 세션들의 개수, 검색된 JDBC 커넥션들의 개수 등과 같은 일반적인 <literal>Session</literal> 사용에 관련된 metrics."
+#. Tag: para
+#: performance.xml:1217
+#, no-c-format
+msgid ""
+"Metrics related to the general <literal>Session</literal> usage, such as "
+"number of open sessions, retrieved JDBC connections, etc."
+msgstr ""
+"열려진 세션들의 개수, 검색된 JDBC 커넥션들의 개수 등과 같은 일반적인 "
+"<literal>Session</literal> 사용에 관련된 metrics."
-#: index.docbook:1229
-msgid "Detailed metrics related to a particular entity, collection, query or cache region."
-msgstr "전체적으로 엔티티들, 콜렉션들, 질의들, 그리고 캐시들에 관련된 metrics(전역 metrics로 알려져 있음),"
+#. Tag: para
+#: performance.xml:1223
+#, no-c-format
+msgid ""
+"Metrics related to he entities, collections, queries, and caches as a whole "
+"(aka global metrics),"
+msgstr ""
+"전체적으로 엔티티들, 콜렉션들, 질의들, 그리고 캐시들에 관련된 metrics(전역 "
+"metrics로 알려져 있음),"
-#: index.docbook:1236
-msgid "For exampl,e you can check the cache hit, miss, and put ratio of entities, collections and queries, and the average time a query needs. Beware that the number of milliseconds is subject to approximation in Java. Hibernate is tied to the JVM precision, on some platforms this might even only be accurate to 10 seconds."
+#. Tag: para
+#: performance.xml:1229
+#, no-c-format
+msgid ""
+"Detailed metrics related to a particular entity, collection, query or cache "
+"region."
msgstr "특정한 엔티티, 콜렉션, 질의 또는 캐시 영역에 관련된 상세 metrics."
-#: index.docbook:1243
-msgid "Simple getters are used to access the global metrics (i.e. not tied to a particular entity, collection, cache region, etc.). You can access the metrics of a particular entity, collection or cache region through its name, and through its HQL or SQL representation for queries. Please refer to the <literal>Statistics</literal>, <literal>EntityStatistics</literal>, <literal>CollectionStatistics</literal>, <literal>SecondLevelCacheStatistics</literal>, and <literal>QueryStatistics</literal> API Javadoc for more information. The following code shows a simple example:"
-msgstr "예를 들어 당신은 엔티티, 콜렉션, 질의들의 캐시 성공율 및 실패율, put(역자 주, 캐시 시도, putt) 비율, 콜렉션들과 질의들, 그리고 평균 질의 요구 시간 등을 찾을 수 있다. 수 밀리초들가 자바에서 근사치에 종속됨을 의식하라. Hibernate는 JVM 정밀도에 묶여 있고, 몇몇 플랫폼들에서 이것은 심지어 약 10초가 될 수도 있다."
+#. Tag: para
+#: performance.xml:1236
+#, no-c-format
+msgid ""
+"For exampl,e you can check the cache hit, miss, and put ratio of entities, "
+"collections and queries, and the average time a query needs. Beware that the "
+"number of milliseconds is subject to approximation in Java. Hibernate is "
+"tied to the JVM precision, on some platforms this might even only be "
+"accurate to 10 seconds."
+msgstr ""
+"예를 들어 당신은 엔티티, 콜렉션, 질의들의 캐시 성공율 및 실패율, put(역자 "
+"주, 캐시 시도, putt) 비율, 콜렉션들과 질의들, 그리고 평균 질의 요구 시간 등"
+"을 찾을 수 있다. 수 밀리초들가 자바에서 근사치에 종속됨을 의식하라. Hibernate"
+"는 JVM 정밀도에 묶여 있고, 몇몇 플랫폼들에서 이것은 심지어 약 10초가 될 수도 "
+"있다."
-#: index.docbook:1253
+#. Tag: para
+#: performance.xml:1243
+#, no-c-format
msgid ""
- "<![CDATA[Statistics stats = HibernateUtil.sessionFactory.getStatistics();\n"
- "\n"
- "double queryCacheHitCount = stats.getQueryCacheHitCount();\n"
- "double queryCacheMissCount = stats.getQueryCacheMissCount();\n"
- "double queryCacheHitRatio =\n"
- " queryCacheHitCount / (queryCacheHitCount + queryCacheMissCount);\n"
- "\n"
- "log.info(\"Query Hit ratio:\" + queryCacheHitRatio);\n"
- "\n"
- "EntityStatistics entityStats =\n"
- " stats.getEntityStatistics( Cat.class.getName() );\n"
- "long changes =\n"
- " entityStats.getInsertCount()\n"
- " + entityStats.getUpdateCount()\n"
- " + entityStats.getDeleteCount();\n"
- "log.info(Cat.class.getName() + \" changed \" + changes + \"times\" );]]>"
-msgstr "간단한 getter들은 (예를 들어 특정 엔티티, 콜렉션, 캐시 영역에 묶이지 않은) 전역 metrics에 접근하는데 사용된다. 당신은 그것(특정 엔티티, 콜렉션, 또는 캐시 영역)의 이름을 통해, 그리고 질의들에 대한 그것의 HQL 또는 SQL 표현을 통해 특정 엔티티, 콜렉션, 또는 캐시 영역의 metrics에 접근할수 있다. 추가 정보는 <literal>Statistics</literal>, <literal>EntityStatistics</literal>, <literal>CollectionStatistics</literal>, <literal>SecondLevelCacheStatistics</literal>, 그리고 <literal>QueryStatistics</literal>를 참조하라. 다음 코드는 간단한 예제를 보여준다:"
+"Simple getters are used to access the global metrics (i.e. not tied to a "
+"particular entity, collection, cache region, etc.). You can access the "
+"metrics of a particular entity, collection or cache region through its name, "
+"and through its HQL or SQL representation for queries. Please refer to the "
+"<literal>Statistics</literal>, <literal>EntityStatistics</literal>, "
+"<literal>CollectionStatistics</literal>, "
+"<literal>SecondLevelCacheStatistics</literal>, and <literal>QueryStatistics</"
+"literal> API Javadoc for more information. The following code shows a simple "
+"example:"
+msgstr ""
+"간단한 getter들은 (예를 들어 특정 엔티티, 콜렉션, 캐시 영역에 묶이지 않은) 전"
+"역 metrics에 접근하는데 사용된다. 당신은 그것(특정 엔티티, 콜렉션, 또는 캐시 "
+"영역)의 이름을 통해, 그리고 질의들에 대한 그것의 HQL 또는 SQL 표현을 통해 특"
+"정 엔티티, 콜렉션, 또는 캐시 영역의 metrics에 접근할수 있다. 추가 정보는 "
+"<literal>Statistics</literal>, <literal>EntityStatistics</literal>, "
+"<literal>CollectionStatistics</literal>, "
+"<literal>SecondLevelCacheStatistics</literal>, 그리고 "
+"<literal>QueryStatistics</literal>를 참조하라. 다음 코드는 간단한 예제를 보여"
+"준다:"
-#: index.docbook:1255
-msgid "To work on all entities, collections, queries and region caches, you can retrieve the list of names of entities, collections, queries and region caches with the following methods: <literal>getQueries()</literal>, <literal>getEntityNames()</literal>, <literal>getCollectionRoleNames()</literal>, and <literal>getSecondLevelCacheRegionNames()</literal>."
+#. Tag: programlisting
+#: performance.xml:1253
+#, no-c-format
+msgid ""
+"<![CDATA[Statistics stats = HibernateUtil.sessionFactory.getStatistics();\n"
+"\n"
+"double queryCacheHitCount = stats.getQueryCacheHitCount();\n"
+"double queryCacheMissCount = stats.getQueryCacheMissCount();\n"
+"double queryCacheHitRatio =\n"
+" queryCacheHitCount / (queryCacheHitCount + queryCacheMissCount);\n"
+"\n"
+"log.info(\"Query Hit ratio:\" + queryCacheHitRatio);\n"
+"\n"
+"EntityStatistics entityStats =\n"
+" stats.getEntityStatistics( Cat.class.getName() );\n"
+"long changes =\n"
+" entityStats.getInsertCount()\n"
+" + entityStats.getUpdateCount()\n"
+" + entityStats.getDeleteCount();\n"
+"log.info(Cat.class.getName() + \" changed \" + changes + \"times\" );]]>"
msgstr ""
- "<![CDATA[Statistics stats = HibernateUtil.sessionFactory.getStatistics();\n"
- "\n"
- "double queryCacheHitCount = stats.getQueryCacheHitCount();\n"
- "double queryCacheMissCount = stats.getQueryCacheMissCount();\n"
- "double queryCacheHitRatio =\n"
- " queryCacheHitCount / (queryCacheHitCount + queryCacheMissCount);\n"
- "\n"
- "log.info(\"Query Hit ratio:\" + queryCacheHitRatio);\n"
- "\n"
- "EntityStatistics entityStats =\n"
- " stats.getEntityStatistics( Cat.class.getName() );\n"
- "long changes =\n"
- " entityStats.getInsertCount()\n"
- " + entityStats.getUpdateCount()\n"
- " + entityStats.getDeleteCount();\n"
- "log.info(Cat.class.getName() + \" changed \" + changes + \"times\" );]]>"
-#: index.docbook:1161
-msgid "appended paragraph 1"
-msgstr "모든 엔티티들, 콜렉션들, 콜렉션들,질의들 그리고 영역 캐시들에 대해 작업하기 위해, 당신은 다음 메소드들로서 엔티티들, 콜렉션들, 질의들, 그리고 영역 캐시들에 대한 이름들의 목록을 검색할 수 있다: <literal>getQueries()</literal>, <literal>getEntityNames()</literal>, <literal>getCollectionRoleNames()</literal>, 그리고 <literal>getSecondLevelCacheRegionNames()</literal>."
+#. Tag: para
+#: performance.xml:1255
+#, no-c-format
+msgid ""
+"To work on all entities, collections, queries and region caches, you can "
+"retrieve the list of names of entities, collections, queries and region "
+"caches with the following methods: <literal>getQueries()</literal>, "
+"<literal>getEntityNames()</literal>, <literal>getCollectionRoleNames()</"
+"literal>, and <literal>getSecondLevelCacheRegionNames()</literal>."
+msgstr ""
+"모든 엔티티들, 콜렉션들, 콜렉션들,질의들 그리고 영역 캐시들에 대해 작업하기 "
+"위해, 당신은 다음 메소드들로서 엔티티들, 콜렉션들, 질의들, 그리고 영역 캐시들"
+"에 대한 이름들의 목록을 검색할 수 있다: <literal>getQueries()</literal>, "
+"<literal>getEntityNames()</literal>, <literal>getCollectionRoleNames()</"
+"literal>, 그리고 <literal>getSecondLevelCacheRegionNames()</literal>."
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#, fuzzy
+#~ msgid "yes"
+#~ msgstr ""
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "yes\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "yes\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "yes\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "예\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "예\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "예\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "예\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "예\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "예\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "예\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "예\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "예\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "예\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "예\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "예\n"
+#~ "#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+#~ "예"
Modified: core/trunk/documentation/manual/translations/ko-KR/content/persistent_classes.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/persistent_classes.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/persistent_classes.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,664 +1,857 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: persistent_classes.xml:5
+#, no-c-format
msgid "Persistent Classes"
msgstr "영속 클래스들"
-#: index.docbook:7
-msgid "Persistent classes are classes in an application that implement the entities of the business problem (e.g. Customer and Order in an E-commerce application). Not all instances of a persistent class are considered to be in the persistent state - an instance may instead be transient or detached."
-msgstr "영속 클래스들은 비지니스 문제의 엔티티들(예를 들어 E-Commerce 어플리케이션에서 고객이나 주문)을 구현하는 어플리케이션 내의 클래스들이다. 영속 클래스들의 인스턴스들은 영속 상태에 있는 것으로 전혀 간주되지 않는다 - 대신에 하나의 인스턴스는 transient 또는 detached 상태일 수 있다."
+#. Tag: para
+#: persistent_classes.xml:7
+#, no-c-format
+msgid ""
+"Persistent classes are classes in an application that implement the entities "
+"of the business problem (e.g. Customer and Order in an E-commerce "
+"application). Not all instances of a persistent class are considered to be "
+"in the persistent state - an instance may instead be transient or detached."
+msgstr ""
+"영속 클래스들은 비지니스 문제의 엔티티들(예를 들어 E-Commerce 어플리케이션에"
+"서 고객이나 주문)을 구현하는 어플리케이션 내의 클래스들이다. 영속 클래스들의 "
+"인스턴스들은 영속 상태에 있는 것으로 전혀 간주되지 않는다 - 대신에 하나의 인"
+"스턴스는 transient 또는 detached 상태일 수 있다."
-#: index.docbook:14
-msgid "Hibernate works best if these classes follow some simple rules, also known as the Plain Old Java Object (POJO) programming model. However, none of these rules are hard requirements. Indeed, Hibernate3 assumes very little about the nature of your persistent objects. You may express a domain model in other ways: using trees of <literal>Map</literal> instances, for example."
-msgstr "Hibernate는 이들 클래스들이 Plain Old Java Object (POJO) 프로그래밍 모형으로서 알려진, 몇몇 간단한 규칙들을 따를 경우에 가장 잘 동작한다. 하지만 이들 규칙들 중 어떤 것도 어려운 사양들이 아니다. 진정 Hibernate3는 당신의 영속 객체들의 특징에 대해 매우 적은 것을 가정한다. 당신은 다른 방법들로 도메인 모형을 표현할 수 있다 : 예를 들어 <literal>Map</literal> 인스턴스의 트리들을 사용하기."
+#. Tag: para
+#: persistent_classes.xml:14
+#, no-c-format
+msgid ""
+"Hibernate works best if these classes follow some simple rules, also known "
+"as the Plain Old Java Object (POJO) programming model. However, none of "
+"these rules are hard requirements. Indeed, Hibernate3 assumes very little "
+"about the nature of your persistent objects. You may express a domain model "
+"in other ways: using trees of <literal>Map</literal> instances, for example."
+msgstr ""
+"Hibernate는 이들 클래스들이 Plain Old Java Object (POJO) 프로그래밍 모형으로"
+"서 알려진, 몇몇 간단한 규칙들을 따를 경우에 가장 잘 동작한다. 하지만 이들 규"
+"칙들 중 어떤 것도 어려운 사양들이 아니다. 진정 Hibernate3는 당신의 영속 객체"
+"들의 특징에 대해 매우 적은 것을 가정한다. 당신은 다른 방법들로 도메인 모형을 "
+"표현할 수 있다 : 예를 들어 <literal>Map</literal> 인스턴스의 트리들을 사용하"
+"기."
-#: index.docbook:23
+#. Tag: title
+#: persistent_classes.xml:23
+#, no-c-format
msgid "A simple POJO example"
msgstr "간단한 POJO 예제"
-#: index.docbook:25
+#. Tag: para
+#: persistent_classes.xml:25
+#, no-c-format
msgid "Most Java applications require a persistent class representing felines."
-msgstr "대부분의 자바 어플리케이션들은 고양이과들을 표현하는 영속 클래스를 필요로 한다."
+msgstr ""
+"대부분의 자바 어플리케이션들은 고양이과들을 표현하는 영속 클래스를 필요로 한"
+"다."
-#: index.docbook:29
+#. Tag: programlisting
+#: persistent_classes.xml:29
+#, no-c-format
msgid ""
- "<![CDATA[package eg;\n"
- "import java.util.Set;\n"
- "import java.util.Date;\n"
- "\n"
- "public class Cat {\n"
- " private Long id; // identifier\n"
- "\n"
- " private Date birthdate;\n"
- " private Color color;\n"
- " private char sex;\n"
- " private float weight;\n"
- " private int litterId;\n"
- "\n"
- " private Cat mother;\n"
- " private Set kittens = new HashSet();\n"
- "\n"
- " private void setId(Long id) {\n"
- " this.id=id;\n"
- " }\n"
- " public Long getId() {\n"
- " return id;\n"
- " }\n"
- "\n"
- " void setBirthdate(Date date) {\n"
- " birthdate = date;\n"
- " }\n"
- " public Date getBirthdate() {\n"
- " return birthdate;\n"
- " }\n"
- "\n"
- " void setWeight(float weight) {\n"
- " this.weight = weight;\n"
- " }\n"
- " public float getWeight() {\n"
- " return weight;\n"
- " }\n"
- "\n"
- " public Color getColor() {\n"
- " return color;\n"
- " }\n"
- " void setColor(Color color) {\n"
- " this.color = color;\n"
- " }\n"
- "\n"
- " void setSex(char sex) {\n"
- " this.sex=sex;\n"
- " }\n"
- " public char getSex() {\n"
- " return sex;\n"
- " }\n"
- "\n"
- " void setLitterId(int id) {\n"
- " this.litterId = id;\n"
- " }\n"
- " public int getLitterId() {\n"
- " return litterId;\n"
- " }\n"
- "\n"
- " void setMother(Cat mother) {\n"
- " this.mother = mother;\n"
- " }\n"
- " public Cat getMother() {\n"
- " return mother;\n"
- " }\n"
- " void setKittens(Set kittens) {\n"
- " this.kittens = kittens;\n"
- " }\n"
- " public Set getKittens() {\n"
- " return kittens;\n"
- " }\n"
- " \n"
- " // addKitten not needed by Hibernate\n"
- " public void addKitten(Cat kitten) {\n"
- " kitten.setMother(this);\n"
- " kitten.setLitterId( kittens.size() ); \n"
- " kittens.add(kitten);\n"
- " }\n"
- "}]]>"
+"<![CDATA[package eg;\n"
+"import java.util.Set;\n"
+"import java.util.Date;\n"
+"\n"
+"public class Cat {\n"
+" private Long id; // identifier\n"
+"\n"
+" private Date birthdate;\n"
+" private Color color;\n"
+" private char sex;\n"
+" private float weight;\n"
+" private int litterId;\n"
+"\n"
+" private Cat mother;\n"
+" private Set kittens = new HashSet();\n"
+"\n"
+" private void setId(Long id) {\n"
+" this.id=id;\n"
+" }\n"
+" public Long getId() {\n"
+" return id;\n"
+" }\n"
+"\n"
+" void setBirthdate(Date date) {\n"
+" birthdate = date;\n"
+" }\n"
+" public Date getBirthdate() {\n"
+" return birthdate;\n"
+" }\n"
+"\n"
+" void setWeight(float weight) {\n"
+" this.weight = weight;\n"
+" }\n"
+" public float getWeight() {\n"
+" return weight;\n"
+" }\n"
+"\n"
+" public Color getColor() {\n"
+" return color;\n"
+" }\n"
+" void setColor(Color color) {\n"
+" this.color = color;\n"
+" }\n"
+"\n"
+" void setSex(char sex) {\n"
+" this.sex=sex;\n"
+" }\n"
+" public char getSex() {\n"
+" return sex;\n"
+" }\n"
+"\n"
+" void setLitterId(int id) {\n"
+" this.litterId = id;\n"
+" }\n"
+" public int getLitterId() {\n"
+" return litterId;\n"
+" }\n"
+"\n"
+" void setMother(Cat mother) {\n"
+" this.mother = mother;\n"
+" }\n"
+" public Cat getMother() {\n"
+" return mother;\n"
+" }\n"
+" void setKittens(Set kittens) {\n"
+" this.kittens = kittens;\n"
+" }\n"
+" public Set getKittens() {\n"
+" return kittens;\n"
+" }\n"
+" \n"
+" // addKitten not needed by Hibernate\n"
+" public void addKitten(Cat kitten) {\n"
+" kitten.setMother(this);\n"
+" kitten.setLitterId( kittens.size() ); \n"
+" kittens.add(kitten);\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[package eg;\n"
- "import java.util.Set;\n"
- "import java.util.Date;\n"
- "\n"
- "public class Cat {\n"
- " private Long id; // identifier\n"
- "\n"
- " private Date birthdate;\n"
- " private Color color;\n"
- " private char sex;\n"
- " private float weight;\n"
- " private int litterId;\n"
- "\n"
- " private Cat mother;\n"
- " private Set kittens = new HashSet();\n"
- "\n"
- " private void setId(Long id) {\n"
- " this.id=id;\n"
- " }\n"
- " public Long getId() {\n"
- " return id;\n"
- " }\n"
- "\n"
- " void setBirthdate(Date date) {\n"
- " birthdate = date;\n"
- " }\n"
- " public Date getBirthdate() {\n"
- " return birthdate;\n"
- " }\n"
- "\n"
- " void setWeight(float weight) {\n"
- " this.weight = weight;\n"
- " }\n"
- " public float getWeight() {\n"
- " return weight;\n"
- " }\n"
- "\n"
- " public Color getColor() {\n"
- " return color;\n"
- " }\n"
- " void setColor(Color color) {\n"
- " this.color = color;\n"
- " }\n"
- "\n"
- " void setSex(char sex) {\n"
- " this.sex=sex;\n"
- " }\n"
- " public char getSex() {\n"
- " return sex;\n"
- " }\n"
- "\n"
- " void setLitterId(int id) {\n"
- " this.litterId = id;\n"
- " }\n"
- " public int getLitterId() {\n"
- " return litterId;\n"
- " }\n"
- "\n"
- " void setMother(Cat mother) {\n"
- " this.mother = mother;\n"
- " }\n"
- " public Cat getMother() {\n"
- " return mother;\n"
- " }\n"
- " void setKittens(Set kittens) {\n"
- " this.kittens = kittens;\n"
- " }\n"
- " public Set getKittens() {\n"
- " return kittens;\n"
- " }\n"
- " \n"
- " // addKitten not needed by Hibernate\n"
- " public void addKitten(Cat kitten) {\n"
- " kitten.setMother(this);\n"
- " kitten.setLitterId( kittens.size() ); \n"
- " kittens.add(kitten);\n"
- " }\n"
- "}]]>"
-#: index.docbook:31
+#. Tag: para
+#: persistent_classes.xml:31
+#, no-c-format
msgid "There are four main rules to follow here:"
msgstr "준수할 네 개의 주요 규칙들이 다음에 있다:"
-#: index.docbook:37
+#. Tag: title
+#: persistent_classes.xml:37
+#, no-c-format
msgid "Implement a no-argument constructor"
msgstr "아규먼트 없는 생성자를 구현하라"
-#: index.docbook:39
-msgid "<literal>Cat</literal> has a no-argument constructor. All persistent classes must have a default constructor (which may be non-public) so that Hibernate can instantiate them using <literal>Constructor.newInstance()</literal>. We strongly recommend having a default constructor with at least <emphasis>package</emphasis> visibility for runtime proxy generation in Hibernate."
-msgstr "<literal>Cat</literal>은 아규먼트 없는 생성자를 갖는다. 모든 영속 클래스들은 Hibernate는 <literal>Constructor.newInstance()</literal>를 사용하여 그것들을 초기화 시킬 수 있도록 디폴트 생성자 (public이 아닐 수 있다)를 가져야 한다. 우리는 Hibernate 내에서 런타임 프락시 생성을 위한 최소한의 <emphasis>패키지</emphasis> 가시성(visibility)를 가진 디폴트 생성자를 가질 것을 강력하게 권장한다."
+#. Tag: para
+#: persistent_classes.xml:39
+#, no-c-format
+msgid ""
+"<literal>Cat</literal> has a no-argument constructor. All persistent classes "
+"must have a default constructor (which may be non-public) so that Hibernate "
+"can instantiate them using <literal>Constructor.newInstance()</literal>. We "
+"strongly recommend having a default constructor with at least "
+"<emphasis>package</emphasis> visibility for runtime proxy generation in "
+"Hibernate."
+msgstr ""
+"<literal>Cat</literal>은 아규먼트 없는 생성자를 갖는다. 모든 영속 클래스들은 "
+"Hibernate는 <literal>Constructor.newInstance()</literal>를 사용하여 그것들을 "
+"초기화 시킬 수 있도록 디폴트 생성자 (public이 아닐 수 있다)를 가져야 한다. 우"
+"리는 Hibernate 내에서 런타임 프락시 생성을 위한 최소한의 <emphasis>패키지</"
+"emphasis> 가시성(visibility)를 가진 디폴트 생성자를 가질 것을 강력하게 권장한"
+"다."
-#: index.docbook:49
+#. Tag: title
+#: persistent_classes.xml:49
+#, no-c-format
msgid "Provide an identifier property (optional)"
msgstr "identifier 프로퍼티를 제공하라(옵션)"
-#: index.docbook:51
-msgid "<literal>Cat</literal> has a property called <literal>id</literal>. This property maps to the primary key column of a database table. The property might have been called anything, and its type might have been any primitive type, any primitive \"wrapper\" type, <literal>java.lang.String</literal> or <literal>java.util.Date</literal>. (If your legacy database table has composite keys, you can even use a user-defined class with properties of these types - see the section on composite identifiers later.)"
-msgstr "<literal>Cat</literal>은 <literal>id</literal>로 명명된 하나의 프로퍼티를 갖는다. 이 프로퍼티는 데이터베이스 테이블의 프라이머리 키 컬럼으로 매핑된다. 이 프로퍼티는 어떤 것으로 명명될 수도 있고, 그것의 타입은 임의의 원시 타입, 원시 \"wrapper\" 타입, <literal>java.lang.String</literal> 또는 <literal>java.util.Date</literal>일 수 있다. (만일 당신의 리거시 데이터베이스 테이블이 composite 키들을 갖고 있다면, 당신은 이들 타입들을 가진 사용자 정의 클래스를 사용할 수도 있다 - 나중에 composite 식별자들에 대한 절을 보라)"
+#. Tag: para
+#: persistent_classes.xml:51
+#, no-c-format
+msgid ""
+"<literal>Cat</literal> has a property called <literal>id</literal>. This "
+"property maps to the primary key column of a database table. The property "
+"might have been called anything, and its type might have been any primitive "
+"type, any primitive \"wrapper\" type, <literal>java.lang.String</literal> or "
+"<literal>java.util.Date</literal>. (If your legacy database table has "
+"composite keys, you can even use a user-defined class with properties of "
+"these types - see the section on composite identifiers later.)"
+msgstr ""
+"<literal>Cat</literal>은 <literal>id</literal>로 명명된 하나의 프로퍼티를 갖"
+"는다. 이 프로퍼티는 데이터베이스 테이블의 프라이머리 키 컬럼으로 매핑된다. "
+"이 프로퍼티는 어떤 것으로 명명될 수도 있고, 그것의 타입은 임의의 원시 타입, "
+"원시 \"wrapper\" 타입, <literal>java.lang.String</literal> 또는 "
+"<literal>java.util.Date</literal>일 수 있다. (만일 당신의 리거시 데이터베이"
+"스 테이블이 composite 키들을 갖고 있다면, 당신은 이들 타입들을 가진 사용자 정"
+"의 클래스를 사용할 수도 있다 - 나중에 composite 식별자들에 대한 절을 보라)"
-#: index.docbook:60
-msgid "The identifier property is strictly optional. You can leave them off and let Hibernate keep track of object identifiers internally. We do not recommend this, however."
-msgstr "identifier 프로퍼티는 엄격하게 옵션이다. 당신은 그것을 생략할 수도 있고, Hibernate로 하여금 내부적으로 객체 식별자들을 추적하도록 할 수 있다. 하지만 우리는 이것을 권장하지 않는다."
+#. Tag: para
+#: persistent_classes.xml:60
+#, no-c-format
+msgid ""
+"The identifier property is strictly optional. You can leave them off and let "
+"Hibernate keep track of object identifiers internally. We do not recommend "
+"this, however."
+msgstr ""
+"identifier 프로퍼티는 엄격하게 옵션이다. 당신은 그것을 생략할 수도 있고, "
+"Hibernate로 하여금 내부적으로 객체 식별자들을 추적하도록 할 수 있다. 하지만 "
+"우리는 이것을 권장하지 않는다."
-#: index.docbook:65
-msgid "In fact, some functionality is available only to classes which declare an identifier property:"
-msgstr "사실, 어떤 기능은 identifier 프로퍼티를 선언하는 클래스들에 대해서만 이용 가능하다:"
+#. Tag: para
+#: persistent_classes.xml:65
+#, no-c-format
+msgid ""
+"In fact, some functionality is available only to classes which declare an "
+"identifier property:"
+msgstr ""
+"사실, 어떤 기능은 identifier 프로퍼티를 선언하는 클래스들에 대해서만 이용 가"
+"능하다:"
-#: index.docbook:72
-msgid "Transitive reattachment for detached objects (cascade update or cascade merge) - see"
-msgstr "detached 객체들에 대한 Transitive reattachment(cascade update 또는 cascade merge) -"
+#. Tag: para
+#: persistent_classes.xml:72
+#, fuzzy, no-c-format
+msgid ""
+"Transitive reattachment for detached objects (cascade update or cascade "
+"merge) - see"
+msgstr ""
+"detached 객체들에 대한 Transitive reattachment(cascade update 또는 cascade "
+"merge) - <xref linkend=\"objectstate-transitive\"/>"
-#: index.docbook:79
+#. Tag: literal
+#: persistent_classes.xml:79
+#, no-c-format
msgid "Session.saveOrUpdate()"
msgstr "Session.saveOrUpdate()"
-#: index.docbook:84
+#. Tag: literal
+#: persistent_classes.xml:84
+#, no-c-format
msgid "Session.merge()"
msgstr "Session.merge()"
-#: index.docbook:89
-msgid "We recommend you declare consistently-named identifier properties on persistent classes. We further recommend that you use a nullable (ie. non-primitive) type."
-msgstr "를 보라"
+#. Tag: para
+#: persistent_classes.xml:89
+#, no-c-format
+msgid ""
+"We recommend you declare consistently-named identifier properties on "
+"persistent classes. We further recommend that you use a nullable (ie. non-"
+"primitive) type."
+msgstr ""
+"우리는 당신이 영속 클래스들에 대해 일관되게 명명된 identifier 프로퍼티들을 선"
+"언할 것을 권장한다. 게다가 우리는 당신이 nullable 타입(예를 들어 non-"
+"primitive)을 사용할 것을 권장한다."
-#: index.docbook:96
+#. Tag: title
+#: persistent_classes.xml:96
+#, no-c-format
msgid "Prefer non-final classes (optional)"
-msgstr "우리는 당신이 영속 클래스들에 대해 일관되게 명명된 identifier 프로퍼티들을 선언할 것을 권장한다. 게다가 우리는 당신이 nullable 타입(예를 들어 non-primitive)을 사용할 것을 권장한다."
-
-#: index.docbook:97
-msgid "A central feature of Hibernate, <emphasis>proxies</emphasis>, depends upon the persistent class being either non-final, or the implementation of an interface that declares all public methods."
msgstr "final이 아닌 클래스들을 선호하라(옵션)"
-#: index.docbook:102
-msgid "You can persist <literal>final</literal> classes that do not implement an interface with Hibernate, but you won't be able to use proxies for lazy association fetching - which will limit your options for performance tuning."
-msgstr "Hibernate의 중심 특징인, 프락시(<emphasis>proxies</emphasis>)들은 final이 아닌 영속 클래스들 또는 모두 public 메소드들로 선언된 인터페이스의 구현인 영속 클래스들에 의존한다."
+#. Tag: para
+#: persistent_classes.xml:97
+#, no-c-format
+msgid ""
+"A central feature of Hibernate, <emphasis>proxies</emphasis>, depends upon "
+"the persistent class being either non-final, or the implementation of an "
+"interface that declares all public methods."
+msgstr ""
+"Hibernate의 중심 특징인, 프락시(<emphasis>proxies</emphasis>)들은 final이 아"
+"닌 영속 클래스들 또는 모두 public 메소드들로 선언된 인터페이스의 구현인 영속 "
+"클래스들에 의존한다."
-#: index.docbook:107
-msgid "You should also avoid declaring <literal>public final</literal> methods on the non-final classes. If you want to use a class with a <literal>public final</literal> method, you must explicitly disable proxying by setting <literal>lazy=\"false\"</literal>."
-msgstr "당신은 Hibernate로 인터페이스를 구현하지 않은 <literal>final</literal> 클래스들을 영속화 시킬 수 있지만 당신은 lazy 연관 페칭(lazy association fetching)에 대해 프락시들을 사용할 수 없을 것이다 -그것은 퍼포먼스 튜닝을 위한 당신의 옵션들을 제한시킬 것이다."
+#. Tag: para
+#: persistent_classes.xml:102
+#, no-c-format
+msgid ""
+"You can persist <literal>final</literal> classes that do not implement an "
+"interface with Hibernate, but you won't be able to use proxies for lazy "
+"association fetching - which will limit your options for performance tuning."
+msgstr ""
+"당신은 Hibernate로 인터페이스를 구현하지 않은 <literal>final</literal> 클래스"
+"들을 영속화 시킬 수 있지만 당신은 lazy 연관 페칭(lazy association fetching)"
+"에 대해 프락시들을 사용할 수 없을 것이다 -그것은 퍼포먼스 튜닝을 위한 당신의 "
+"옵션들을 제한시킬 것이다."
-#: index.docbook:115
+#. Tag: para
+#: persistent_classes.xml:107
+#, no-c-format
+msgid ""
+"You should also avoid declaring <literal>public final</literal> methods on "
+"the non-final classes. If you want to use a class with a <literal>public "
+"final</literal> method, you must explicitly disable proxying by setting "
+"<literal>lazy=\"false\"</literal>."
+msgstr ""
+"당신은 또한 non-final 클래스들 상에 <literal>public final</literal> 메소드들"
+"을 선언하는 것을 피해야 한다. 만일 당신이 <literal>public final</literal> 메"
+"소드를 가진 클래스를 사용하고자 원할 경우, 당신은 <literal>lazy=\"false\"</"
+"literal>를 설정함으로써 명시적으로 프락싱을 사용 불가능하도록 해야 한다."
+
+#. Tag: title
+#: persistent_classes.xml:115
+#, no-c-format
msgid "Declare accessors and mutators for persistent fields (optional)"
-msgstr "당신은 또한 non-final 클래스들 상에 <literal>public final</literal> 메소드들을 선언하는 것을 피해야 한다. 만일 당신이 <literal>public final</literal> 메소드를 가진 클래스를 사용하고자 원할 경우, 당신은 <literal>lazy=\"false\"</literal>를 설정함으로써 명시적으로 프락싱을 사용 불가능하도록 해야 한다."
-
-#: index.docbook:117
-msgid "<literal>Cat</literal> declares accessor methods for all its persistent fields. Many other ORM tools directly persist instance variables. We believe it is better to provide an indirection between the relational schema and internal data structures of the class. By default, Hibernate persists JavaBeans style properties, and recognizes method names of the form <literal>getFoo</literal>, <literal>isFoo</literal> and <literal>setFoo</literal>. You may switch to direct field access for particular properties, if needed."
msgstr "영속 필드들을 위한 accessor들과 mutator들을 선언하라(옵션)"
-#: index.docbook:127
-msgid "Properties need <emphasis>not</emphasis> be declared public - Hibernate can persist a property with a default, <literal>protected</literal> or <literal>private</literal> get / set pair."
-msgstr "<literal>Cat</literal>은 그것의 모든 영속 필드들에 대해 accessor 메소드들을 선언한다. 많은 다른 ORM 도구들은 인스턴스 변수들을 직접 영속화 시킨다. 우리는 관계형 스키마와 클래스의 내부적인 데이터 구조들 사이에 간접적인 수단을 제공하는 것이 더 좋다고 믿고 있다. 디폴트로 Hibernate는 자바빈즈 스타일 프로퍼티들을 영속화 시키고, <literal>getFoo</literal>, <literal>isFoo</literal>와 <literal>setFoo</literal> 형식의 메소드 이름들을 인지한다. 당신은 진정으로 특정 프로퍼티에 대한 직접적인 필드 접근으로 전환할 수도 있다."
+#. Tag: para
+#: persistent_classes.xml:117
+#, no-c-format
+msgid ""
+"<literal>Cat</literal> declares accessor methods for all its persistent "
+"fields. Many other ORM tools directly persist instance variables. We believe "
+"it is better to provide an indirection between the relational schema and "
+"internal data structures of the class. By default, Hibernate persists "
+"JavaBeans style properties, and recognizes method names of the form "
+"<literal>getFoo</literal>, <literal>isFoo</literal> and <literal>setFoo</"
+"literal>. You may switch to direct field access for particular properties, "
+"if needed."
+msgstr ""
+"<literal>Cat</literal>은 그것의 모든 영속 필드들에 대해 accessor 메소드들을 "
+"선언한다. 많은 다른 ORM 도구들은 인스턴스 변수들을 직접 영속화 시킨다. 우리"
+"는 관계형 스키마와 클래스의 내부적인 데이터 구조들 사이에 간접적인 수단을 제"
+"공하는 것이 더 좋다고 믿고 있다. 디폴트로 Hibernate는 자바빈즈 스타일 프로퍼"
+"티들을 영속화 시키고, <literal>getFoo</literal>, <literal>isFoo</literal>와 "
+"<literal>setFoo</literal> 형식의 메소드 이름들을 인지한다. 당신은 진정으로 특"
+"정 프로퍼티에 대한 직접적인 필드 접근으로 전환할 수도 있다."
-#: index.docbook:138
+#. Tag: para
+#: persistent_classes.xml:127
+#, no-c-format
+msgid ""
+"Properties need <emphasis>not</emphasis> be declared public - Hibernate can "
+"persist a property with a default, <literal>protected</literal> or "
+"<literal>private</literal> get / set pair."
+msgstr ""
+"프로퍼티들은 public으로 선언될 필요가 <emphasis>없다</emphasis> - Hibernate"
+"는 디폴트로 <literal>protected</literal> get/set 쌍 또는 <literal>private</"
+"literal> get/set 쌍을 가진 프로퍼티를 영속화 시킬 수 있다."
+
+#. Tag: title
+#: persistent_classes.xml:138
+#, no-c-format
msgid "Implementing inheritance"
-msgstr "프로퍼티들은 public으로 선언될 필요가 <emphasis>없다</emphasis> - Hibernate는 디폴트로 <literal>protected</literal> get/set 쌍 또는 <literal>private</literal> get/set 쌍을 가진 프로퍼티를 영속화 시킬 수 있다."
-
-#: index.docbook:140
-msgid "A subclass must also observe the first and second rules. It inherits its identifier property from the superclass, <literal>Cat</literal>."
msgstr "상속 구현하기"
-#: index.docbook:145
+#. Tag: para
+#: persistent_classes.xml:140
+#, no-c-format
msgid ""
- "<![CDATA[package eg;\n"
- "\n"
- "public class DomesticCat extends Cat {\n"
- " private String name;\n"
- "\n"
- " public String getName() {\n"
- " return name;\n"
- " }\n"
- " protected void setName(String name) {\n"
- " this.name=name;\n"
- " }\n"
- "}]]>"
-msgstr "서브클래스는 또한 첫 번째 규칙들과 두 번째 규칙들을 주시해야 한다. 그것은 슈퍼클래스 <literal>Cat</literal>으로부터 그것의 identifier 프로퍼티를 상속받는다."
+"A subclass must also observe the first and second rules. It inherits its "
+"identifier property from the superclass, <literal>Cat</literal>."
+msgstr ""
+"서브클래스는 또한 첫 번째 규칙들과 두 번째 규칙들을 주시해야 한다. 그것은 슈"
+"퍼클래스 <literal>Cat</literal>으로부터 그것의 identifier 프로퍼티를 상속받는"
+"다."
-#: index.docbook:149
-msgid "Implementing <literal>equals()</literal> and <literal>hashCode()</literal>"
+#. Tag: programlisting
+#: persistent_classes.xml:145
+#, no-c-format
+msgid ""
+"<![CDATA[package eg;\n"
+"\n"
+"public class DomesticCat extends Cat {\n"
+" private String name;\n"
+"\n"
+" public String getName() {\n"
+" return name;\n"
+" }\n"
+" protected void setName(String name) {\n"
+" this.name=name;\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[package eg;\n"
- "\n"
- "public class DomesticCat extends Cat {\n"
- " private String name;\n"
- "\n"
- " public String getName() {\n"
- " return name;\n"
- " }\n"
- " protected void setName(String name) {\n"
- " this.name=name;\n"
- " }\n"
- "}]]>"
-#: index.docbook:151
-msgid "You have to override the <literal>equals()</literal> and <literal>hashCode()</literal> methods if you"
+#. Tag: title
+#: persistent_classes.xml:149
+#, no-c-format
+msgid ""
+"Implementing <literal>equals()</literal> and <literal>hashCode()</literal>"
msgstr "<literal>equals()</literal>와 <literal>hashCode()</literal> 구현하기"
-#: index.docbook:157
-msgid "intend to put instances of persistent classes in a <literal>Set</literal> (the recommended way to represent many-valued associations) <emphasis>and</emphasis>"
-msgstr "만일 당신이 다음의 경우라면, 당신은 <literal>equals()</literal>와 <literal>hashCode()</literal> 메소드들을 오버라이드 시켜야 한다."
+#. Tag: para
+#: persistent_classes.xml:151
+#, no-c-format
+msgid ""
+"You have to override the <literal>equals()</literal> and <literal>hashCode()"
+"</literal> methods if you"
+msgstr ""
+"만일 당신이 다음의 경우라면, 당신은 <literal>equals()</literal>와 "
+"<literal>hashCode()</literal> 메소드들을 오버라이드 시켜야 한다."
-#: index.docbook:164
+#. Tag: para
+#: persistent_classes.xml:157
+#, no-c-format
+msgid ""
+"intend to put instances of persistent classes in a <literal>Set</literal> "
+"(the recommended way to represent many-valued associations) <emphasis>and</"
+"emphasis>"
+msgstr ""
+"하나의 <literal>Set</literal> 속에 영속 클래스들의 인스턴스들을 집어넣고자 의"
+"도하고 (many-valued 연관들에 대해 권장되는 방법) <emphasis>그리고</emphasis>"
+
+#. Tag: para
+#: persistent_classes.xml:164
+#, no-c-format
msgid "intend to use reattachment of detached instances"
-msgstr "하나의 <literal>Set</literal> 속에 영속 클래스들의 인스턴스들을 집어넣고자 의도하고 (many-valued 연관들에 대해 권장되는 방법) <emphasis>그리고</emphasis>"
-
-#: index.docbook:170
-msgid "Hibernate guarantees equivalence of persistent identity (database row) and Java identity only inside a particular session scope. So as soon as we mix instances retrieved in different sessions, we must implement <literal>equals()</literal> and <literal>hashCode()</literal> if we wish to have meaningful semantics for <literal>Set</literal>s."
msgstr "detached 인스턴스들의 reattachment(재첨부)를 사용하고자 의도하는"
-#: index.docbook:178
-msgid "The most obvious way is to implement <literal>equals()</literal>/<literal>hashCode()</literal> by comparing the identifier value of both objects. If the value is the same, both must be the same database row, they are therefore equal (if both are added to a <literal>Set</literal>, we will only have one element in the <literal>Set</literal>). Unfortunately, we can't use that approach with generated identifiers! Hibernate will only assign identifier values to objects that are persistent, a newly created instance will not have any identifier value! Furthermore, if an instance is unsaved and currently in a <literal>Set</literal>, saving it will assign an identifier value to the object. If <literal>equals()</literal> and <literal>hashCode()</literal> are based on the identifier value, the hash code would change, breaking the contract of the <literal>Set</literal>. See the Hibernate website for a full discussion of this problem. Note that this is not a Hibernate issue, but !
normal Java semantics of object identity and equality."
-msgstr "Hibernate는 특정 session 범위 내에서만 persistent identity(데이터베이스 행)과 Java identity의 같음을 보장한다. 따라서 우리가 다른 세션들에서 검색된 인스턴스들을 혼합시키자마자, 우리가 <literal>Set</literal>들에 대해 유의미하게 만들고자 원할 경우, 우리는 <literal>equals()</literal>와 <literal>hashCode()</literal>를 구현해야 한다."
+#. Tag: para
+#: persistent_classes.xml:170
+#, no-c-format
+msgid ""
+"Hibernate guarantees equivalence of persistent identity (database row) and "
+"Java identity only inside a particular session scope. So as soon as we mix "
+"instances retrieved in different sessions, we must implement <literal>equals"
+"()</literal> and <literal>hashCode()</literal> if we wish to have meaningful "
+"semantics for <literal>Set</literal>s."
+msgstr ""
+"Hibernate는 특정 session 범위 내에서만 persistent identity(데이터베이스 행)"
+"과 Java identity의 같음을 보장한다. 따라서 우리가 다른 세션들에서 검색된 인스"
+"턴스들을 혼합시키자마자, 우리가 <literal>Set</literal>들에 대해 유의미하게 만"
+"들고자 원할 경우, 우리는 <literal>equals()</literal>와 <literal>hashCode()</"
+"literal>를 구현해야 한다."
-#: index.docbook:192
-msgid "We recommend implementing <literal>equals()</literal> and <literal>hashCode()</literal> using <emphasis>Business key equality</emphasis>. Business key equality means that the <literal>equals()</literal> method compares only the properties that form the business key, a key that would identify our instance in the real world (a <emphasis>natural</emphasis> candidate key):"
-msgstr "가장 명백한 방법은 두 객체들의 identifier 값을 비교함으로써 <literal>equals()</literal>/<literal>hashCode()</literal>를 구현하는 것이다. 만일 그 값이 동일하다면, 둘다 동일한 데이터베이스 행이어야 하고, 그러므로 그것들은 같다(둘다 하나의 <literal>Set</literal>에 추가되는 경우에, 우리는 <literal>Set</literal> 속에서 하나의 요소만을 갖게 될 것이다). 불행하게도, 우리는 생성되는 식별자들을 갖는 그 접근법을 사용할 수 없다! Hibernate는 오직 식별자 값들을 영속화 되는 객체들에 할당할 것이고, 새로이 생성된 인스턴스는 임의의 identifier 값을 갖지 않을 것이다! 만일 인스턴스가 저장되지 않고 현재 하나의 <literal>Set</literal> 속에 있을 경우에, 그것을 저장하는것은 하나의 식별자 값을 그 객체에게 할당할 것이다. 만일 <literal>equals()</literal>와 <literal>ha!
shCode()</literal>가 그 식별자 값에 기초할 경우, hash 코드는 <literal>Set</literal>의 계약을 파기하여 변경될 것이다. 이 문제에 대한 전체 논의에 대해서는 Hibernate 웹 사이트를 보라. 이것은 Hibernate 쟁점이 아닌, 객체 identity와 equality에 관한 통상의 자바 의미론임을 노트하라."
+#. Tag: para
+#: persistent_classes.xml:178
+#, no-c-format
+msgid ""
+"The most obvious way is to implement <literal>equals()</literal>/"
+"<literal>hashCode()</literal> by comparing the identifier value of both "
+"objects. If the value is the same, both must be the same database row, they "
+"are therefore equal (if both are added to a <literal>Set</literal>, we will "
+"only have one element in the <literal>Set</literal>). Unfortunately, we "
+"can't use that approach with generated identifiers! Hibernate will only "
+"assign identifier values to objects that are persistent, a newly created "
+"instance will not have any identifier value! Furthermore, if an instance is "
+"unsaved and currently in a <literal>Set</literal>, saving it will assign an "
+"identifier value to the object. If <literal>equals()</literal> and "
+"<literal>hashCode()</literal> are based on the identifier value, the hash "
+"code would change, breaking the contract of the <literal>Set</literal>. See "
+"the Hibernate website for a full discussion of this problem. Note that this "
+"is not a Hibernate issue, but normal Java semantics of object identity and "
+"equality."
+msgstr ""
+"가장 명백한 방법은 두 객체들의 identifier 값을 비교함으로써 <literal>equals()"
+"</literal>/<literal>hashCode()</literal>를 구현하는 것이다. 만일 그 값이 동일"
+"하다면, 둘다 동일한 데이터베이스 행이어야 하고, 그러므로 그것들은 같다(둘다 "
+"하나의 <literal>Set</literal>에 추가되는 경우에, 우리는 <literal>Set</"
+"literal> 속에서 하나의 요소만을 갖게 될 것이다). 불행하게도, 우리는 생성되는 "
+"식별자들을 갖는 그 접근법을 사용할 수 없다! Hibernate는 오직 식별자 값들을 영"
+"속화 되는 객체들에 할당할 것이고, 새로이 생성된 인스턴스는 임의의 identifier "
+"값을 갖지 않을 것이다! 만일 인스턴스가 저장되지 않고 현재 하나의 "
+"<literal>Set</literal> 속에 있을 경우에, 그것을 저장하는것은 하나의 식별자 값"
+"을 그 객체에게 할당할 것이다. 만일 <literal>equals()</literal>와 "
+"<literal>hashCode()</literal>가 그 식별자 값에 기초할 경우, hash 코드는 "
+"<literal>Set</literal>의 계약을 파기하여 변경될 것이다. 이 문제에 대한 전체 "
+"논의에 대해서는 Hibernate 웹 사이트를 보라. 이것은 Hibernate 쟁점이 아닌, 객"
+"체 identity와 equality에 관한 통상의 자바 의미론임을 노트하라."
-#: index.docbook:200
+#. Tag: para
+#: persistent_classes.xml:192
+#, no-c-format
msgid ""
- "<![CDATA[public class Cat {\n"
- "\n"
- " ...\n"
- " public boolean equals(Object other) {\n"
- " if (this == other) return true;\n"
- " if ( !(other instanceof Cat) ) return false;\n"
- "\n"
- " final Cat cat = (Cat) other;\n"
- "\n"
- " if ( !cat.getLitterId().equals( getLitterId() ) ) return false;\n"
- " if ( !cat.getMother().equals( getMother() ) ) return false;\n"
- "\n"
- " return true;\n"
- " }\n"
- "\n"
- " public int hashCode() {\n"
- " int result;\n"
- " result = getMother().hashCode();\n"
- " result = 29 * result + getLitterId();\n"
- " return result;\n"
- " }\n"
- "\n"
- "}]]>"
-msgstr "우리는 <emphasis>Business key equality</emphasis>를 사용하여 <literal>equals()</literal>와 <literal>hashCode()</literal>를 구현할 것 권장한다. Business key equality는 <literal>equals()</literal> 메소드가 비지니스 키, 즉 실세계에서 우리의 인스턴스를 식별하게 될 키(<emphasis>natural</emphasis> 후보 키)를 형성하는 프로퍼티들만을 비교한다는 점을 의미한다 :"
+"We recommend implementing <literal>equals()</literal> and <literal>hashCode()"
+"</literal> using <emphasis>Business key equality</emphasis>. Business key "
+"equality means that the <literal>equals()</literal> method compares only the "
+"properties that form the business key, a key that would identify our "
+"instance in the real world (a <emphasis>natural</emphasis> candidate key):"
+msgstr ""
+"우리는 <emphasis>Business key equality</emphasis>를 사용하여 <literal>equals"
+"()</literal>와 <literal>hashCode()</literal>를 구현할 것 권장한다. Business "
+"key equality는 <literal>equals()</literal> 메소드가 비지니스 키, 즉 실세계에"
+"서 우리의 인스턴스를 식별하게 될 키(<emphasis>natural</emphasis> 후보 키)를 "
+"형성하는 프로퍼티들만을 비교한다는 점을 의미한다 :"
-#: index.docbook:202
-msgid "Note that a business key does not have to be as solid as a database primary key candidate (see <xref linkend=\"transactions-basics-identity\"/>). Immutable or unique properties are usually good candidates for a business key."
+#. Tag: programlisting
+#: persistent_classes.xml:200
+#, no-c-format
+msgid ""
+"<![CDATA[public class Cat {\n"
+"\n"
+" ...\n"
+" public boolean equals(Object other) {\n"
+" if (this == other) return true;\n"
+" if ( !(other instanceof Cat) ) return false;\n"
+"\n"
+" final Cat cat = (Cat) other;\n"
+"\n"
+" if ( !cat.getLitterId().equals( getLitterId() ) ) return false;\n"
+" if ( !cat.getMother().equals( getMother() ) ) return false;\n"
+"\n"
+" return true;\n"
+" }\n"
+"\n"
+" public int hashCode() {\n"
+" int result;\n"
+" result = getMother().hashCode();\n"
+" result = 29 * result + getLitterId();\n"
+" return result;\n"
+" }\n"
+"\n"
+"}]]>"
msgstr ""
- "<![CDATA[public class Cat {\n"
- "\n"
- " ...\n"
- " public boolean equals(Object other) {\n"
- " if (this == other) return true;\n"
- " if ( !(other instanceof Cat) ) return false;\n"
- "\n"
- " final Cat cat = (Cat) other;\n"
- "\n"
- " if ( !cat.getLitterId().equals( getLitterId() ) ) return false;\n"
- " if ( !cat.getMother().equals( getMother() ) ) return false;\n"
- "\n"
- " return true;\n"
- " }\n"
- "\n"
- " public int hashCode() {\n"
- " int result;\n"
- " result = getMother().hashCode();\n"
- " result = 29 * result + getLitterId();\n"
- " return result;\n"
- " }\n"
- "\n"
- "}]]>"
-#: index.docbook:212
+#. Tag: para
+#: persistent_classes.xml:202
+#, no-c-format
+msgid ""
+"Note that a business key does not have to be as solid as a database primary "
+"key candidate (see <xref linkend=\"transactions-basics-identity\"/>). "
+"Immutable or unique properties are usually good candidates for a business "
+"key."
+msgstr ""
+"하나의 비지니스 키는 데이터베이스 프라이머리 키 후보 만큼 견고하지 않아야 한"
+"다(<xref linkend=\"transactions-basics-identity\"/>를 보라). 대개 변경할 수 "
+"없는 프로퍼티 또는 유일한(unique) 프로퍼티는 대개 비지니스 키에 대한 좋은 후"
+"보들이다."
+
+#. Tag: title
+#: persistent_classes.xml:212
+#, no-c-format
msgid "Dynamic models"
-msgstr "하나의 비지니스 키는 데이터베이스 프라이머리 키 후보 만큼 견고하지 않아야 한다(<xref linkend=\"transactions-basics-identity\"/>를 보라). 대개 변경할 수 없는 프로퍼티 또는 유일한(unique) 프로퍼티는 대개 비지니스 키에 대한 좋은 후보들이다."
-
-#: index.docbook:215
-msgid "Note that the following features are currently considered experimental and may change in the near future."
msgstr "동적인 모형들"
-#: index.docbook:219
-msgid "Persistent entities don't necessarily have to be represented as POJO classes or as JavaBean objects at runtime. Hibernate also supports dynamic models (using <literal>Map</literal>s of <literal>Map</literal>s at runtime) and the representation of entities as DOM4J trees. With this approach, you don't write persistent classes, only mapping files."
-msgstr "다음 특징들은 현재 실험적으로 고려되고 있으며 장래에는 변경될 수 있음을 노트하라."
+#. Tag: emphasis
+#: persistent_classes.xml:215
+#, no-c-format
+msgid ""
+"Note that the following features are currently considered experimental and "
+"may change in the near future."
+msgstr ""
+"다음 특징들은 현재 실험적으로 고려되고 있으며 장래에는 변경될 수 있음을 노트"
+"하라."
-#: index.docbook:227
-msgid "By default, Hibernate works in normal POJO mode. You may set a default entity representation mode for a particular <literal>SessionFactory</literal> using the <literal>default_entity_mode</literal> configuration option (see <xref linkend=\"configuration-optional-properties\"/>."
-msgstr "영속 엔티티들은 반드시 실행시에 POJO 클래스들로 또는 자바빈즈 객체들로 표현되어야할 필요는 없다. Hibernate는 또한 (실행 시에 <literal>Map</literal>들을 가진 <literal>Map</literal>들을 사용하여) 동적인 모형들을 지원하고 DOM4J 트리들로서 엔티티들에 대한 표현을 지원한다. 이 접근법으로, 당신은 영속 클래스들을 작성하지 않고, 오직 매핑 파일들 만을 작성한다."
+#. Tag: para
+#: persistent_classes.xml:219
+#, no-c-format
+msgid ""
+"Persistent entities don't necessarily have to be represented as POJO classes "
+"or as JavaBean objects at runtime. Hibernate also supports dynamic models "
+"(using <literal>Map</literal>s of <literal>Map</literal>s at runtime) and "
+"the representation of entities as DOM4J trees. With this approach, you don't "
+"write persistent classes, only mapping files."
+msgstr ""
+"영속 엔티티들은 반드시 실행시에 POJO 클래스들로 또는 자바빈즈 객체들로 표현되"
+"어야할 필요는 없다. Hibernate는 또한 (실행 시에 <literal>Map</literal>들을 가"
+"진 <literal>Map</literal>들을 사용하여) 동적인 모형들을 지원하고 DOM4J 트리들"
+"로서 엔티티들에 대한 표현을 지원한다. 이 접근법으로, 당신은 영속 클래스들을 "
+"작성하지 않고, 오직 매핑 파일들 만을 작성한다."
-#: index.docbook:234
-msgid "The following examples demonstrates the representation using <literal>Map</literal>s. First, in the mapping file, an <literal>entity-name</literal> has to be declared instead of (or in addition to) a class name:"
-msgstr "디폴트로, Hibernate는 통산의 POJO 모드로 동작한다. 당신은 <literal>default_entity_mode</literal> 구성 옵션을 사용하여 특별한 <literal>SessionFactory</literal>에 대해 디폴트 엔티티 표현 모드를 설정할 수 있다 (<xref linkend=\"configuration-optional-properties\"/>을 보라)."
+#. Tag: para
+#: persistent_classes.xml:227
+#, no-c-format
+msgid ""
+"By default, Hibernate works in normal POJO mode. You may set a default "
+"entity representation mode for a particular <literal>SessionFactory</"
+"literal> using the <literal>default_entity_mode</literal> configuration "
+"option (see <xref linkend=\"configuration-optional-properties\"/>."
+msgstr ""
+"디폴트로, Hibernate는 통산의 POJO 모드로 동작한다. 당신은 "
+"<literal>default_entity_mode</literal> 구성 옵션을 사용하여 특별한 "
+"<literal>SessionFactory</literal>에 대해 디폴트 엔티티 표현 모드를 설정할 수 "
+"있다 (<xref linkend=\"configuration-optional-properties\"/>을 보라)."
-#: index.docbook:240
+#. Tag: para
+#: persistent_classes.xml:234
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class entity-name=\"Customer\">\n"
- "\n"
- " <id name=\"id\"\n"
- " type=\"long\"\n"
- " column=\"ID\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- "\n"
- " <property name=\"name\"\n"
- " column=\"NAME\"\n"
- " type=\"string\"/>\n"
- "\n"
- " <property name=\"address\"\n"
- " column=\"ADDRESS\"\n"
- " type=\"string\"/>\n"
- "\n"
- " <many-to-one name=\"organization\"\n"
- " column=\"ORGANIZATION_ID\"\n"
- " class=\"Organization\"/>\n"
- "\n"
- " <bag name=\"orders\"\n"
- " inverse=\"true\"\n"
- " lazy=\"false\"\n"
- " cascade=\"all\">\n"
- " <key column=\"CUSTOMER_ID\"/>\n"
- " <one-to-many class=\"Order\"/>\n"
- " </bag>\n"
- "\n"
- " </class>\n"
- " \n"
- "</hibernate-mapping>]]>"
-msgstr "다음 예제들은<literal>Map</literal>들을 사용하는 표현을 설명한다. 먼저 매핑 파일에서, <literal>entity-name</literal>은 클래스 이름 대신에(또는 클래스 이름에 덧붙여) 선언되어야 한다:"
+"The following examples demonstrates the representation using <literal>Map</"
+"literal>s. First, in the mapping file, an <literal>entity-name</literal> has "
+"to be declared instead of (or in addition to) a class name:"
+msgstr ""
+"다음 예제들은<literal>Map</literal>들을 사용하는 표현을 설명한다. 먼저 매핑 "
+"파일에서, <literal>entity-name</literal>은 클래스 이름 대신에(또는 클래스 이"
+"름에 덧붙여) 선언되어야 한다:"
-#: index.docbook:242
-msgid "Note that even though associations are declared using target class names, the target type of an associations may also be a dynamic entity instead of a POJO."
+#. Tag: programlisting
+#: persistent_classes.xml:240
+#, no-c-format
+msgid ""
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class entity-name=\"Customer\">\n"
+"\n"
+" <id name=\"id\"\n"
+" type=\"long\"\n"
+" column=\"ID\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+"\n"
+" <property name=\"name\"\n"
+" column=\"NAME\"\n"
+" type=\"string\"/>\n"
+"\n"
+" <property name=\"address\"\n"
+" column=\"ADDRESS\"\n"
+" type=\"string\"/>\n"
+"\n"
+" <many-to-one name=\"organization\"\n"
+" column=\"ORGANIZATION_ID\"\n"
+" class=\"Organization\"/>\n"
+"\n"
+" <bag name=\"orders\"\n"
+" inverse=\"true\"\n"
+" lazy=\"false\"\n"
+" cascade=\"all\">\n"
+" <key column=\"CUSTOMER_ID\"/>\n"
+" <one-to-many class=\"Order\"/>\n"
+" </bag>\n"
+"\n"
+" </class>\n"
+" \n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class entity-name=\"Customer\">\n"
- "\n"
- " <id name=\"id\"\n"
- " type=\"long\"\n"
- " column=\"ID\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- "\n"
- " <property name=\"name\"\n"
- " column=\"NAME\"\n"
- " type=\"string\"/>\n"
- "\n"
- " <property name=\"address\"\n"
- " column=\"ADDRESS\"\n"
- " type=\"string\"/>\n"
- "\n"
- " <many-to-one name=\"organization\"\n"
- " column=\"ORGANIZATION_ID\"\n"
- " class=\"Organization\"/>\n"
- "\n"
- " <bag name=\"orders\"\n"
- " inverse=\"true\"\n"
- " lazy=\"false\"\n"
- " cascade=\"all\">\n"
- " <key column=\"CUSTOMER_ID\"/>\n"
- " <one-to-many class=\"Order\"/>\n"
- " </bag>\n"
- "\n"
- " </class>\n"
- " \n"
- "</hibernate-mapping>]]>"
-#: index.docbook:249
-msgid "After setting the default entity mode to <literal>dynamic-map</literal> for the <literal>SessionFactory</literal>, we can at runtime work with <literal>Map</literal>s of <literal>Map</literal>s:"
-msgstr "심지어 비록 연관들이 대상(target) 클래스 이름들을 사용하여 선언될지라도, 연관들의 대상(target) 타입은 또한 POJO가 아닌 동적인 엔티티일 수 있음을 노트하라."
+#. Tag: para
+#: persistent_classes.xml:242
+#, no-c-format
+msgid ""
+"Note that even though associations are declared using target class names, "
+"the target type of an associations may also be a dynamic entity instead of a "
+"POJO."
+msgstr ""
+"심지어 비록 연관들이 대상(target) 클래스 이름들을 사용하여 선언될지라도, 연관"
+"들의 대상(target) 타입은 또한 POJO가 아닌 동적인 엔티티일 수 있음을 노트하라."
-#: index.docbook:255
+#. Tag: para
+#: persistent_classes.xml:249
+#, no-c-format
msgid ""
- "<![CDATA[Session s = openSession();\n"
- "Transaction tx = s.beginTransaction();\n"
- "Session s = openSession();\n"
- "\n"
- "// Create a customer\n"
- "Map david = new HashMap();\n"
- "david.put(\"name\", \"David\");\n"
- "\n"
- "// Create an organization\n"
- "Map foobar = new HashMap();\n"
- "foobar.put(\"name\", \"Foobar Inc.\");\n"
- "\n"
- "// Link both\n"
- "david.put(\"organization\", foobar);\n"
- "\n"
- "// Save both\n"
- "s.save(\"Customer\", david);\n"
- "s.save(\"Organization\", foobar);\n"
- "\n"
- "tx.commit();\n"
- "s.close();]]>"
-msgstr "<literal>SessionFactory</literal>에 대한 디폴트 엔티티 모드를 <literal>dynamic-map</literal>으로 설정한 후에, 우리는 <literal>Map</literal>들을 가진 <literal>Map</literal>들에 대해 실행 시에 작업할 수 있다:"
+"After setting the default entity mode to <literal>dynamic-map</literal> for "
+"the <literal>SessionFactory</literal>, we can at runtime work with "
+"<literal>Map</literal>s of <literal>Map</literal>s:"
+msgstr ""
+"<literal>SessionFactory</literal>에 대한 디폴트 엔티티 모드를 "
+"<literal>dynamic-map</literal>으로 설정한 후에, 우리는 <literal>Map</literal>"
+"들을 가진 <literal>Map</literal>들에 대해 실행 시에 작업할 수 있다:"
-#: index.docbook:257
-msgid "The advantages of a dynamic mapping are quick turnaround time for prototyping without the need for entity class implementation. However, you lose compile-time type checking and will very likely deal with many exceptions at runtime. Thanks to the Hibernate mapping, the database schema can easily be normalized and sound, allowing to add a proper domain model implementation on top later on."
+#. Tag: programlisting
+#: persistent_classes.xml:255
+#, no-c-format
+msgid ""
+"<![CDATA[Session s = openSession();\n"
+"Transaction tx = s.beginTransaction();\n"
+"Session s = openSession();\n"
+"\n"
+"// Create a customer\n"
+"Map david = new HashMap();\n"
+"david.put(\"name\", \"David\");\n"
+"\n"
+"// Create an organization\n"
+"Map foobar = new HashMap();\n"
+"foobar.put(\"name\", \"Foobar Inc.\");\n"
+"\n"
+"// Link both\n"
+"david.put(\"organization\", foobar);\n"
+"\n"
+"// Save both\n"
+"s.save(\"Customer\", david);\n"
+"s.save(\"Organization\", foobar);\n"
+"\n"
+"tx.commit();\n"
+"s.close();]]>"
msgstr ""
- "<![CDATA[Session s = openSession();\n"
- "Transaction tx = s.beginTransaction();\n"
- "Session s = openSession();\n"
- "\n"
- "// Create a customer\n"
- "Map david = new HashMap();\n"
- "david.put(\"name\", \"David\");\n"
- "\n"
- "// Create an organization\n"
- "Map foobar = new HashMap();\n"
- "foobar.put(\"name\", \"Foobar Inc.\");\n"
- "\n"
- "// Link both\n"
- "david.put(\"organization\", foobar);\n"
- "\n"
- "// Save both\n"
- "s.save(\"Customer\", david);\n"
- "s.save(\"Organization\", foobar);\n"
- "\n"
- "tx.commit();\n"
- "s.close();]]>"
-#: index.docbook:265
-msgid "Entity representation modes can also be set on a per <literal>Session</literal> basis:"
-msgstr "dynamic 매핑의 장점들은 엔티티 클래스 구현에 대한 필요 없이도 프로토타이핑을 위한 빠른 전환 시간이다. 하지만 당신은 컴파일 시 타입 체킹을 잃고 실행 시에 많은 예외상황들을 다루게 될 것이다. Hibernate 매핑 덕분에, 나중에 고유한 도메인 모형 구현을 상단에 추가하는 것이 허용되어서, 데이터베이스 스키마가 쉽게 정규화 되고 소리가 울려 퍼질 수 있다."
+#. Tag: para
+#: persistent_classes.xml:257
+#, no-c-format
+msgid ""
+"The advantages of a dynamic mapping are quick turnaround time for "
+"prototyping without the need for entity class implementation. However, you "
+"lose compile-time type checking and will very likely deal with many "
+"exceptions at runtime. Thanks to the Hibernate mapping, the database schema "
+"can easily be normalized and sound, allowing to add a proper domain model "
+"implementation on top later on."
+msgstr ""
+"dynamic 매핑의 장점들은 엔티티 클래스 구현에 대한 필요 없이도 프로토타이핑을 "
+"위한 빠른 전환 시간이다. 하지만 당신은 컴파일 시 타입 체킹을 잃고 실행 시에 "
+"많은 예외상황들을 다루게 될 것이다. Hibernate 매핑 덕분에, 나중에 고유한 도메"
+"인 모형 구현을 상단에 추가하는 것이 허용되어서, 데이터베이스 스키마가 쉽게 정"
+"규화 되고 소리가 울려 퍼질 수 있다."
-#: index.docbook:270
+#. Tag: para
+#: persistent_classes.xml:265
+#, no-c-format
msgid ""
- "<![CDATA[Session dynamicSession = pojoSession.getSession(EntityMode.MAP);\n"
- "\n"
- "// Create a customer\n"
- "Map david = new HashMap();\n"
- "david.put(\"name\", \"David\");\n"
- "dynamicSession.save(\"Customer\", david);\n"
- "...\n"
- "dynamicSession.flush();\n"
- "dynamicSession.close()\n"
- "...\n"
- "// Continue on pojoSession\n"
- "]]>"
-msgstr "엔티티 표현 모드들은 또한 하나의 단위 <literal>Session</literal> 기준에 대해 설정될 수 있다:"
+"Entity representation modes can also be set on a per <literal>Session</"
+"literal> basis:"
+msgstr ""
+"엔티티 표현 모드들은 또한 하나의 단위 <literal>Session</literal> 기준에 대해 "
+"설정될 수 있다:"
-#: index.docbook:273
-msgid "Please note that the call to <literal>getSession()</literal> using an <literal>EntityMode</literal> is on the <literal>Session</literal> API, not the <literal>SessionFactory</literal>. That way, the new <literal>Session</literal> shares the underlying JDBC connection, transaction, and other context information. This means you don't have tocall <literal>flush()</literal> and <literal>close()</literal> on the secondary <literal>Session</literal>, and also leave the transaction and connection handling to the primary unit of work."
+#. Tag: programlisting
+#: persistent_classes.xml:270
+#, no-c-format
+msgid ""
+"<![CDATA[Session dynamicSession = pojoSession.getSession(EntityMode.MAP);\n"
+"\n"
+"// Create a customer\n"
+"Map david = new HashMap();\n"
+"david.put(\"name\", \"David\");\n"
+"dynamicSession.save(\"Customer\", david);\n"
+"...\n"
+"dynamicSession.flush();\n"
+"dynamicSession.close()\n"
+"...\n"
+"// Continue on pojoSession\n"
+"]]>"
msgstr ""
- "<![CDATA[Session dynamicSession = pojoSession.getSession(EntityMode.MAP);\n"
- "\n"
- "// Create a customer\n"
- "Map david = new HashMap();\n"
- "david.put(\"name\", \"David\");\n"
- "dynamicSession.save(\"Customer\", david);\n"
- "...\n"
- "dynamicSession.flush();\n"
- "dynamicSession.close()\n"
- "...\n"
- "// Continue on pojoSession\n"
- "]]>"
-#: index.docbook:283
-msgid "More information about the XML representation capabilities can be found in <xref linkend=\"xml\"/>."
-msgstr "<literal>EntityMode</literal>를 사용하는 <literal>getSession()</literal>에 대한 호출은 <literal>SessionFactory</literal>가 아닌, <literal>Session</literal> API에 대한 것임을 노트하길 바란다. 그 방법으로, 새로운 <literal>Session</literal>은 기본 JDBC 커넥션, 트랜잭션, 그리고 다른 컨텍스트 정보를 공유한다. 이것은 당신이 두 번째 <literal>Session</literal> 상에서 <literal>flush()</literal>와 <literal>close()</literal>를 호출하지 말아야 하고, 또한 트랜잭션 및 커넥션 핸들링을 주된 작업 단위에게 맡긴다는 점을 의미한다."
+#. Tag: para
+#: persistent_classes.xml:273
+#, no-c-format
+msgid ""
+"Please note that the call to <literal>getSession()</literal> using an "
+"<literal>EntityMode</literal> is on the <literal>Session</literal> API, not "
+"the <literal>SessionFactory</literal>. That way, the new <literal>Session</"
+"literal> shares the underlying JDBC connection, transaction, and other "
+"context information. This means you don't have tocall <literal>flush()</"
+"literal> and <literal>close()</literal> on the secondary <literal>Session</"
+"literal>, and also leave the transaction and connection handling to the "
+"primary unit of work."
+msgstr ""
+"<literal>EntityMode</literal>를 사용하는 <literal>getSession()</literal>에 대"
+"한 호출은 <literal>SessionFactory</literal>가 아닌, <literal>Session</"
+"literal> API에 대한 것임을 노트하길 바란다. 그 방법으로, 새로운 "
+"<literal>Session</literal>은 기본 JDBC 커넥션, 트랜잭션, 그리고 다른 컨텍스"
+"트 정보를 공유한다. 이것은 당신이 두 번째 <literal>Session</literal> 상에서 "
+"<literal>flush()</literal>와 <literal>close()</literal>를 호출하지 말아야 하"
+"고, 또한 트랜잭션 및 커넥션 핸들링을 주된 작업 단위에게 맡긴다는 점을 의미한"
+"다."
-#: index.docbook:291
+#. Tag: para
+#: persistent_classes.xml:283
+#, no-c-format
+msgid ""
+"More information about the XML representation capabilities can be found in "
+"<xref linkend=\"xml\"/>."
+msgstr ""
+"XML 표현 가용성들에 대한 추가 정보는 <xref linkend=\"xml\"/>에서 찾을 수 있"
+"다."
+
+#. Tag: title
+#: persistent_classes.xml:291
+#, no-c-format
msgid "Tuplizers"
-msgstr "XML 표현 가용성들에 대한 추가 정보는 <xref linkend=\"xml\"/>에서 찾을 수 있다."
-
-#: index.docbook:293
-msgid "<literal>org.hibernate.tuple.Tuplizer</literal>, and its sub-interfaces, are responsible for managing a particular representation of a piece of data, given that representation's <literal>org.hibernate.EntityMode</literal>. If a given piece of data is thought of as a data structure, then a tuplizer is the thing which knows how to create such a data structure and how to extract values from and inject values into such a data structure. For example, for the POJO entity mode, the correpsonding tuplizer knows how create the POJO through its constructor and how to access the POJO properties using the defined property accessors. There are two high-level types of Tuplizers, represented by the <literal>org.hibernate.tuple.entity.EntityTuplizer</literal> and <literal>org.hibernate.tuple.component.ComponentTuplizer</literal> interfaces. <literal>EntityTuplizer</literal>s are responsible for managing the above mentioned contracts in regards to entities, while <literal>ComponentTu!
plizer</literal>s do the same for components."
msgstr "Tuplizer들"
-#: index.docbook:308
-msgid "Users may also plug in their own tuplizers. Perhaps you require that a <literal>java.util.Map</literal> implementation other than <literal>java.util.HashMap</literal> be used while in the dynamic-map entity-mode; or perhaps you need to define a different proxy generation strategy than the one used by default. Both would be achieved by defining a custom tuplizer implementation. Tuplizers definitions are attached to the entity or component mapping they are meant to manage. Going back to the example of our customer entity:"
-msgstr "<literal>org.hibernate.tuple.Tuplizer</literal>, 그리고 그것의 서브-인터페이스들은 데이터의 조각에 대한 특별한 표현의 <literal>org.hibernate.EntityMode</literal>가 주어지면 그 표현을 관리하는 책임이 있다. 만일 주어진 데이터 조각이 하나의 데이터 구조로 간주될 경우, 그때 하나의 tuplizer는 그런 데이터 구조를 생성시키는 방법과 그런 데이터 구조로부터 값들을 추출시키는 방법 그리고 그런 데이터구조 속으로 값들을 삽입시키는 방법을 알고 있는 것이다. 예를 들어, POJO 엔티티 모드의 경우, 대응하는 tuplizer는 그것의 생성자를 통해 POJO를 생성시키는 방법, 그리고 정의된 프로퍼티 접근자들을 사용하여 POJO 프로퍼티들에 접근하는 방법을 안다. <literal>org.hibernate.tuple.entity.EntityTuplizer</literal> 인터페이스와 <literal>org.hibernate.tuple.component.ComponentTuplizer</!
literal> 인터페이스에 의해 표현되는 두 가지 고급 유형의 Tuplizer들이 존재한다. <literal>EntityTuplizer</literal>들은 엔티티들에 관해서는 위에 언급된 계약들을 매핑할 책임이 있는 반면에, <literal>ComponentTuplizer</literal>들은 컴포넌트들에 대해서도 동일한 것을 행한다."
+#. Tag: para
+#: persistent_classes.xml:293
+#, no-c-format
+msgid ""
+"<literal>org.hibernate.tuple.Tuplizer</literal>, and its sub-interfaces, are "
+"responsible for managing a particular representation of a piece of data, "
+"given that representation's <literal>org.hibernate.EntityMode</literal>. If "
+"a given piece of data is thought of as a data structure, then a tuplizer is "
+"the thing which knows how to create such a data structure and how to extract "
+"values from and inject values into such a data structure. For example, for "
+"the POJO entity mode, the correpsonding tuplizer knows how create the POJO "
+"through its constructor and how to access the POJO properties using the "
+"defined property accessors. There are two high-level types of Tuplizers, "
+"represented by the <literal>org.hibernate.tuple.entity.EntityTuplizer</"
+"literal> and <literal>org.hibernate.tuple.component.ComponentTuplizer</"
+"literal> interfaces. <literal>EntityTuplizer</literal>s are responsible for "
+"managing the above mentioned contracts in regards to entities, while "
+"<literal>ComponentTuplizer</literal>s do the same for components."
+msgstr ""
+"<literal>org.hibernate.tuple.Tuplizer</literal>, 그리고 그것의 서브-인터페이"
+"스들은 데이터의 조각에 대한 특별한 표현의 <literal>org.hibernate.EntityMode</"
+"literal>가 주어지면 그 표현을 관리하는 책임이 있다. 만일 주어진 데이터 조각"
+"이 하나의 데이터 구조로 간주될 경우, 그때 하나의 tuplizer는 그런 데이터 구조"
+"를 생성시키는 방법과 그런 데이터 구조로부터 값들을 추출시키는 방법 그리고 그"
+"런 데이터구조 속으로 값들을 삽입시키는 방법을 알고 있는 것이다. 예를 들어, "
+"POJO 엔티티 모드의 경우, 대응하는 tuplizer는 그것의 생성자를 통해 POJO를 생성"
+"시키는 방법, 그리고 정의된 프로퍼티 접근자들을 사용하여 POJO 프로퍼티들에 접"
+"근하는 방법을 안다. <literal>org.hibernate.tuple.entity.EntityTuplizer</"
+"literal> 인터페이스와 <literal>org.hibernate.tuple.component."
+"ComponentTuplizer</literal> 인터페이스에 의해 표현되는 두 가지 고급 유형의 "
+"Tuplizer들이 존재한다. <literal>EntityTuplizer</literal>들은 엔티티들에 관해"
+"서는 위에 언급된 계약들을 매핑할 책임이 있는 반면에, "
+"<literal>ComponentTuplizer</literal>들은 컴포넌트들에 대해서도 동일한 것을 행"
+"한다."
-#: index.docbook:317
+#. Tag: para
+#: persistent_classes.xml:308
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- " <class entity-name=\"Customer\">\n"
- " <!--\n"
- " Override the dynamic-map entity-mode\n"
- " tuplizer for the customer entity\n"
- " -->\n"
- " <tuplizer entity-mode=\"dynamic-map\"\n"
- " class=\"CustomMapTuplizerImpl\"/>\n"
- "\n"
- " <id name=\"id\" type=\"long\" column=\"ID\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- "\n"
- " <!-- other properties -->\n"
- " ...\n"
- " </class>\n"
- "</hibernate-mapping>\n"
- "\n"
- "\n"
- "public class CustomMapTuplizerImpl\n"
- " extends org.hibernate.tuple.entity.DynamicMapEntityTuplizer {\n"
- " // override the buildInstantiator() method to plug in our custom map...\n"
- " protected final Instantiator buildInstantiator(\n"
- " org.hibernate.mapping.PersistentClass mappingInfo) {\n"
- " return new CustomMapInstantiator( mappingInfo );\n"
- " }\n"
- "\n"
- " private static final class CustomMapInstantiator\n"
- " extends org.hibernate.tuple.DynamicMapInstantitor {\n"
- " // override the generateMap() method to return our custom map...\n"
- " protected final Map generateMap() {\n"
- " return new CustomMap();\n"
- " }\n"
- " }\n"
- "}]]>"
-msgstr "사용자들은 또한 그들 자신의 tuplizer들을 플러그 시킬 수 있다. 아마 당신은 dynamic-map entity-mode 동안에 사용되는 <literal>java.util.HashMap</literal> 대신에 하나의 <literal>java.util.Map</literal> 구현을 필요로 한다; 또는 아마 당신은 디폴트로 사용되는 방도 보다는 하나의 다른 다른 프릭시 산출 방도를 필요로 한다. 둘다 하나의 맞춤형 tuplizer를 정의함으로써 성취될 것이다. Tuplizer들 정의들은 그것들이 관리할 수단인 엔티티 매핑 또는 컴포넌트 매핑에 첨부된다. 우리의 고객 엔티티에 대한 예제로 되돌아가면:"
+"Users may also plug in their own tuplizers. Perhaps you require that a "
+"<literal>java.util.Map</literal> implementation other than <literal>java."
+"util.HashMap</literal> be used while in the dynamic-map entity-mode; or "
+"perhaps you need to define a different proxy generation strategy than the "
+"one used by default. Both would be achieved by defining a custom tuplizer "
+"implementation. Tuplizers definitions are attached to the entity or "
+"component mapping they are meant to manage. Going back to the example of our "
+"customer entity:"
+msgstr ""
+"사용자들은 또한 그들 자신의 tuplizer들을 플러그 시킬 수 있다. 아마 당신은 "
+"dynamic-map entity-mode 동안에 사용되는 <literal>java.util.HashMap</literal> "
+"대신에 하나의 <literal>java.util.Map</literal> 구현을 필요로 한다; 또는 아마 "
+"당신은 디폴트로 사용되는 방도 보다는 하나의 다른 다른 프릭시 산출 방도를 필요"
+"로 한다. 둘다 하나의 맞춤형 tuplizer를 정의함으로써 성취될 것이다. Tuplizer"
+"들 정의들은 그것들이 관리할 수단인 엔티티 매핑 또는 컴포넌트 매핑에 첨부된"
+"다. 우리의 고객 엔티티에 대한 예제로 되돌아가면:"
-#: index.docbook:322
-msgid "TODO: Document user-extension framework in the property and proxy packages"
+#. Tag: programlisting
+#: persistent_classes.xml:317
+#, no-c-format
+msgid ""
+"<![CDATA[<hibernate-mapping>\n"
+" <class entity-name=\"Customer\">\n"
+" <!--\n"
+" Override the dynamic-map entity-mode\n"
+" tuplizer for the customer entity\n"
+" -->\n"
+" <tuplizer entity-mode=\"dynamic-map\"\n"
+" class=\"CustomMapTuplizerImpl\"/>\n"
+"\n"
+" <id name=\"id\" type=\"long\" column=\"ID\">\n"
+" <generator class=\"sequence\"/>\n"
+" </id>\n"
+"\n"
+" <!-- other properties -->\n"
+" ...\n"
+" </class>\n"
+"</hibernate-mapping>\n"
+"\n"
+"\n"
+"public class CustomMapTuplizerImpl\n"
+" extends org.hibernate.tuple.entity.DynamicMapEntityTuplizer {\n"
+" // override the buildInstantiator() method to plug in our custom map...\n"
+" protected final Instantiator buildInstantiator(\n"
+" org.hibernate.mapping.PersistentClass mappingInfo) {\n"
+" return new CustomMapInstantiator( mappingInfo );\n"
+" }\n"
+"\n"
+" private static final class CustomMapInstantiator\n"
+" extends org.hibernate.tuple.DynamicMapInstantitor {\n"
+" // override the generateMap() method to return our custom map...\n"
+" protected final Map generateMap() {\n"
+" return new CustomMap();\n"
+" }\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- " <class entity-name=\"Customer\">\n"
- " <!--\n"
- " Override the dynamic-map entity-mode\n"
- " tuplizer for the customer entity\n"
- " -->\n"
- " <tuplizer entity-mode=\"dynamic-map\"\n"
- " class=\"CustomMapTuplizerImpl\"/>\n"
- "\n"
- " <id name=\"id\" type=\"long\" column=\"ID\">\n"
- " <generator class=\"sequence\"/>\n"
- " </id>\n"
- "\n"
- " <!-- other properties -->\n"
- " ...\n"
- " </class>\n"
- "</hibernate-mapping>\n"
- "\n"
- "\n"
- "public class CustomMapTuplizerImpl\n"
- " extends org.hibernate.tuple.entity.DynamicMapEntityTuplizer {\n"
- " // override the buildInstantiator() method to plug in our custom map...\n"
- " protected final Instantiator buildInstantiator(\n"
- " org.hibernate.mapping.PersistentClass mappingInfo) {\n"
- " return new CustomMapInstantiator( mappingInfo );\n"
- " }\n"
- "\n"
- " private static final class CustomMapInstantiator\n"
- " extends org.hibernate.tuple.DynamicMapInstantitor {\n"
- " // override the generateMap() method to return our custom map...\n"
- " protected final Map generateMap() {\n"
- " return new CustomMap();\n"
- " }\n"
- " }\n"
- "}]]>"
-#: index.docbook:293
-msgid "appended paragraph 1"
-msgstr "TODO: property 패키지와 proxy 패키지 내에 user-extension 프레임웍을 문서화 할 것."
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: para
+#: persistent_classes.xml:322
+#, no-c-format
+msgid ""
+"TODO: Document user-extension framework in the property and proxy packages"
+msgstr ""
+"TODO: property 패키지와 proxy 패키지 내에 user-extension 프레임웍을 문서화 "
+"할 것."
Modified: core/trunk/documentation/manual/translations/ko-KR/content/preface.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/preface.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/preface.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,68 +1,195 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:21
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: preface.xml:21
+#, no-c-format
msgid "Preface"
-msgstr "<title>머리말</title>"
+msgstr "머리말"
-#: index.docbook:23
-msgid "Working with object-oriented software and a relational database can be cumbersome and time consuming in today's enterprise environments. Hibernate is an object/relational mapping tool for Java environments. The term object/relational mapping (ORM) refers to the technique of mapping a data representation from an object model to a relational data model with a SQL-based schema."
-msgstr "객체 지향 소프트웨어와 관계형 데이터베이스로 작업하는 것은 오늘날의 엔터프라이즈 환경들에서 성가시고 시간이 소비될 수 있다. Hibernate는 자바 환경들을 위한 객체/관계형 매핑 도구이다. object/relational mapping(ORM) 용어는 객체 모형으로부터 SQL-기반의 스키마를 가진 관계형 데이터 모형으로의 데이터 표상을 매핑하는 기술을 언급한다."
+#. Tag: para
+#: preface.xml:23
+#, no-c-format
+msgid ""
+"Working with object-oriented software and a relational database can be "
+"cumbersome and time consuming in today's enterprise environments. Hibernate "
+"is an object/relational mapping tool for Java environments. The term object/"
+"relational mapping (ORM) refers to the technique of mapping a data "
+"representation from an object model to a relational data model with a SQL-"
+"based schema."
+msgstr ""
+"객체 지향 소프트웨어와 관계형 데이터베이스로 작업하는 것은 오늘날의 엔터프라"
+"이즈 환경들에서 성가시고 시간이 소비될 수 있다. Hibernate는 자바 환경들을 위"
+"한 객체/관계형 매핑 도구이다. object/relational mapping(ORM) 용어는 객체 모형"
+"으로부터 SQL-기반의 스키마를 가진 관계형 데이터 모형으로의 데이터 표상을 매핑"
+"하는 기술을 언급한다."
-#: index.docbook:31
-msgid "Hibernate not only takes care of the mapping from Java classes to database tables (and from Java data types to SQL data types), but also provides data query and retrieval facilities and can significantly reduce development time otherwise spent with manual data handling in SQL and JDBC."
-msgstr "Hibernate는 자바 클래스들로부터 데이터베이스로의 매핑(그리고 자바 데이터 타입들로부터 SQL 데이터 타입들로의 매핑)을 처리할 뿐만 아니라, 또한 데이터 질의와 검색 편의들을 제공하며, SQL과 JDBC로 수작업 데이터 핸들링에 소요되는 개발 시간을 현저하게 단축시켜줄 수 있다."
+#. Tag: para
+#: preface.xml:31
+#, no-c-format
+msgid ""
+"Hibernate not only takes care of the mapping from Java classes to database "
+"tables (and from Java data types to SQL data types), but also provides data "
+"query and retrieval facilities and can significantly reduce development time "
+"otherwise spent with manual data handling in SQL and JDBC."
+msgstr ""
+"Hibernate는 자바 클래스들로부터 데이터베이스로의 매핑(그리고 자바 데이터 타입"
+"들로부터 SQL 데이터 타입들로의 매핑)을 처리할 뿐만 아니라, 또한 데이터 질의"
+"와 검색 편의들을 제공하며, SQL과 JDBC로 수작업 데이터 핸들링에 소요되는 개발 "
+"시간을 현저하게 단축시켜줄 수 있다."
-#: index.docbook:38
-msgid "Hibernates goal is to relieve the developer from 95 percent of common data persistence related programming tasks. Hibernate may not be the best solution for data-centric applications that only use stored-procedures to implement the business logic in the database, it is most useful with object-oriented domain models and business logic in the Java-based middle-tier. However, Hibernate can certainly help you to remove or encapsulate vendor-specific SQL code and will help with the common task of result set translation from a tabular representation to a graph of objects."
-msgstr "Hibernate의 목적은 공통된 데이터 영속화 관련 프로그래밍 작업들의 95%를 덜어주는 것이다. Hibernate는 데이터베이스에서 비지니스 로직을 구현하는데 내장 프로시저들을 전용으로 사용하는 데이터 중심적 어플리케이션에 대한 최상의 솔루션이 아닐 수도 있지만, 그것은 자바 기반 미들-티어에서 객체 지향 도메인 모형들과 비지니스 로직에 가장 유용하다. 하지만 Hibernate는 벤더 지정적인 SQL 코드를 제거하거나 캡슐화 시키는 당신을 확실히 도와줄 수 있고 테이블 형식의 표현으로부터 객체들의 그래프로 결과 셋을 변환하는 공통된 태스크를 도와줄 것이다."
+#. Tag: para
+#: preface.xml:38
+#, no-c-format
+msgid ""
+"Hibernates goal is to relieve the developer from 95 percent of common data "
+"persistence related programming tasks. Hibernate may not be the best "
+"solution for data-centric applications that only use stored-procedures to "
+"implement the business logic in the database, it is most useful with object-"
+"oriented domain models and business logic in the Java-based middle-tier. "
+"However, Hibernate can certainly help you to remove or encapsulate vendor-"
+"specific SQL code and will help with the common task of result set "
+"translation from a tabular representation to a graph of objects."
+msgstr ""
+"Hibernate의 목적은 공통된 데이터 영속화 관련 프로그래밍 작업들의 95%를 덜어주"
+"는 것이다. Hibernate는 데이터베이스에서 비지니스 로직을 구현하는데 내장 프로"
+"시저들을 전용으로 사용하는 데이터 중심적 어플리케이션에 대한 최상의 솔루션이 "
+"아닐 수도 있지만, 그것은 자바 기반 미들-티어에서 객체 지향 도메인 모형들과 비"
+"지니스 로직에 가장 유용하다. 하지만 Hibernate는 벤더 지정적인 SQL 코드를 제거"
+"하거나 캡슐화 시키는 당신을 확실히 도와줄 수 있고 테이블 형식의 표현으로부터 "
+"객체들의 그래프로 결과 셋을 변환하는 공통된 태스크를 도와줄 것이다."
-#: index.docbook:48
-msgid "If you are new to Hibernate and Object/Relational Mapping or even Java, please follow these steps:"
-msgstr "만일 당신이 Hibernate와 Object/Relational 매핑 또는 심지어 자바에 초심자라면, 다음 단계들을 따르기 바란다:"
+#. Tag: para
+#: preface.xml:48
+#, no-c-format
+msgid ""
+"If you are new to Hibernate and Object/Relational Mapping or even Java, "
+"please follow these steps:"
+msgstr ""
+"만일 당신이 Hibernate와 Object/Relational 매핑 또는 심지어 자바에 초심자라"
+"면, 다음 단계들을 따르기 바란다:"
-#: index.docbook:55
-msgid "Read <xref linkend=\"tutorial\"/> for a tutorial with step-by-step instructions. The source code for the tutorial is included in the distribution in the <literal>doc/reference/tutorial/</literal> directory."
-msgstr "더 많은 단계적인 사용 설명서들을 가진 더 긴 튜토리얼은 <xref linkend=\"tutorial\"/> 을 읽어라. 튜토리얼을 위한 소스 코드는 <literal>doc/reference/tutorial/</literal> 디렉토리에 포함되어 있다."
+#. Tag: para
+#: preface.xml:55
+#, no-c-format
+msgid ""
+"Read <xref linkend=\"tutorial\"/> for a tutorial with step-by-step "
+"instructions. The source code for the tutorial is included in the "
+"distribution in the <literal>doc/reference/tutorial/</literal> directory."
+msgstr ""
+"더 많은 단계적인 사용 설명서들을 가진 더 긴 튜토리얼은 <xref linkend="
+"\"tutorial\"/> 을 읽어라. 튜토리얼을 위한 소스 코드는 <literal>doc/reference/"
+"tutorial/</literal> 디렉토리에 포함되어 있다."
-#: index.docbook:63
-msgid "Read <xref linkend=\"architecture\"/> to understand the environments where Hibernate can be used."
-msgstr "Hibernate가 사용될 수 있는 환경을 이해려면 <xref linkend=\"architecture\"/> 를 읽어라."
+#. Tag: para
+#: preface.xml:63
+#, no-c-format
+msgid ""
+"Read <xref linkend=\"architecture\"/> to understand the environments where "
+"Hibernate can be used."
+msgstr ""
+"Hibernate가 사용될 수 있는 환경을 이해려면 <xref linkend=\"architecture\"/> "
+"를 읽어라."
-#: index.docbook:69
-msgid "Have a look at the <literal>eg/</literal> directory in the Hibernate distribution, it contains a simple standalone application. Copy your JDBC driver to the <literal>lib/</literal> directory and edit <literal>etc/hibernate.properties</literal>, specifying correct values for your database. From a command prompt in the distribution directory, type <literal>ant eg</literal> (using Ant), or under Windows, type <literal>build eg</literal>."
-msgstr "Hibernate 배포본 내의 <literal>eg/</literal> 디렉토리를 살펴 보라. 이 디렉토리는 간단한 스탠드얼론 어플리케이션을 포함하고 있다. 당신의 JDBC 드라이버를 <literal>lib/</literal> 디렉토리에 복사하고 당신의 데이터베이스에 맞는 정확한 값을 지정하여 <literal>etc/hibernate.properties</literal> 를 편집하라. 배보본 디렉토리에서 명령 라인 프롬프트에서 (Ant를 사용하여) <literal>ant eg</literal> 를 타이핑 하거나 , Windows 하에서 <literal>build eg</literal> 를 타이프 하라."
+#. Tag: para
+#: preface.xml:69
+#, no-c-format
+msgid ""
+"Have a look at the <literal>eg/</literal> directory in the Hibernate "
+"distribution, it contains a simple standalone application. Copy your JDBC "
+"driver to the <literal>lib/</literal> directory and edit <literal>etc/"
+"hibernate.properties</literal>, specifying correct values for your database. "
+"From a command prompt in the distribution directory, type <literal>ant eg</"
+"literal> (using Ant), or under Windows, type <literal>build eg</literal>."
+msgstr ""
+"Hibernate 배포본 내의 <literal>eg/</literal> 디렉토리를 살펴 보라. 이 디렉토"
+"리는 간단한 스탠드얼론 어플리케이션을 포함하고 있다. 당신의 JDBC 드라이버를 "
+"<literal>lib/</literal> 디렉토리에 복사하고 당신의 데이터베이스에 맞는 정확"
+"한 값을 지정하여 <literal>etc/hibernate.properties</literal> 를 편집하라. 배"
+"보본 디렉토리에서 명령 라인 프롬프트에서 (Ant를 사용하여) <literal>ant eg</"
+"literal> 를 타이핑 하거나 , Windows 하에서 <literal>build eg</literal> 를 타"
+"이프 하라."
-#: index.docbook:80
-msgid "Use this reference documentation as your primary source of information. Consider reading <emphasis>Java Persistence with Hibernate</emphasis> (http://www.manning.com/bauer2) if you need more help with application design or if you prefer a step-by-step tutorial. Also visit http://caveatemptor.hibernate.org and download the example application for Java Persistence with Hibernate."
-msgstr "당신의 주된 정보의 소스로서 이 참조 문서를 사용하라. 만일 어플리케이션 설계에 대해 더 많은 도움을 필요로 하거나 당신이 단계적인 튜토리얼을 선호한다면 <emphasis>Java Persistence with Hibernate</emphasis> (http://www.manning.com/bauer2)을 읽는 것을 고려하라.또한 http://caveatemptor.hibernate.org에 방문하여 Java Persistence with Hibernate용 예제 어플리케이션을 다운로드 하라."
+#. Tag: para
+#: preface.xml:80
+#, no-c-format
+msgid ""
+"Use this reference documentation as your primary source of information. "
+"Consider reading <emphasis>Java Persistence with Hibernate</emphasis> "
+"(http://www.manning.com/bauer2) if you need more help with application "
+"design or if you prefer a step-by-step tutorial. Also visit http://"
+"caveatemptor.hibernate.org and download the example application for Java "
+"Persistence with Hibernate."
+msgstr ""
+"당신의 주된 정보의 소스로서 이 참조 문서를 사용하라. 만일 어플리케이션 설계"
+"에 대해 더 많은 도움을 필요로 하거나 당신이 단계적인 튜토리얼을 선호한다면 "
+"<emphasis>Java Persistence with Hibernate</emphasis> (http://www.manning.com/"
+"bauer2)을 읽는 것을 고려하라.또한 http://caveatemptor.hibernate.org에 방문하"
+"여 Java Persistence with Hibernate용 예제 어플리케이션을 다운로드 하라."
-#: index.docbook:90
+#. Tag: para
+#: preface.xml:90
+#, no-c-format
msgid "FAQs are answered on the Hibernate website."
msgstr "FAQ들은 Hibernate 웹 사이트 상에 답변되어 있다."
-#: index.docbook:95
-msgid "Third party demos, examples, and tutorials are linked on the Hibernate website."
-msgstr "제 3의 데모들, 예제들, 그리고 튜토리얼들은 Hibernate 웹 사이트 상에 링크되어 있다."
+#. Tag: para
+#: preface.xml:95
+#, no-c-format
+msgid ""
+"Third party demos, examples, and tutorials are linked on the Hibernate "
+"website."
+msgstr ""
+"제 3의 데모들, 예제들, 그리고 튜토리얼들은 Hibernate 웹 사이트 상에 링크되어 "
+"있다."
-#: index.docbook:101
-msgid "The Community Area on the Hibernate website is a good resource for design patterns and various integration solutions (Tomcat, JBoss AS, Struts, EJB, etc.)."
-msgstr "Hibernate 웹사이트 상의 공동체 영역은 설계 패턴과 다양한 통합 솔루션들(Tomcat, JBoss AS, Struts, EJB 등.)에 관한 좋은 리소스이다."
+#. Tag: para
+#: preface.xml:101
+#, no-c-format
+msgid ""
+"The Community Area on the Hibernate website is a good resource for design "
+"patterns and various integration solutions (Tomcat, JBoss AS, Struts, EJB, "
+"etc.)."
+msgstr ""
+"Hibernate 웹사이트 상의 공동체 영역은 설계 패턴과 다양한 통합 솔루션들"
+"(Tomcat, JBoss AS, Struts, EJB 등.)에 관한 좋은 리소스이다."
-#: index.docbook:109
-msgid "If you have questions, use the user forum linked on the Hibernate website. We also provide a JIRA issue trackings system for bug reports and feature requests. If you are interested in the development of Hibernate, join the developer mailing list. If you are interested in translating this documentation into your language, contact us on the developer mailing list."
-msgstr "질문이 있다면, Hibernate 상에 링크되어 있는 사용자 포럼을 사용하라. 우리는 또한 버그 보고와 특징 요청들을 위한 JIRA 쟁점 추적 시스템을 제공한다. 당신이 Hibernate의 개발에 관심이 있다면, 개발자 메일링 리스트에 참여하라. 만일 당신이 이 문서를 당신의 언어로 번역하는 것에 관심이 있다면, 개발자 메일링 리스트에 접촉하라."
+#. Tag: para
+#: preface.xml:109
+#, no-c-format
+msgid ""
+"If you have questions, use the user forum linked on the Hibernate website. "
+"We also provide a JIRA issue trackings system for bug reports and feature "
+"requests. If you are interested in the development of Hibernate, join the "
+"developer mailing list. If you are interested in translating this "
+"documentation into your language, contact us on the developer mailing list."
+msgstr ""
+"질문이 있다면, Hibernate 상에 링크되어 있는 사용자 포럼을 사용하라. 우리는 또"
+"한 버그 보고와 특징 요청들을 위한 JIRA 쟁점 추적 시스템을 제공한다. 당신이 "
+"Hibernate의 개발에 관심이 있다면, 개발자 메일링 리스트에 참여하라. 만일 당신"
+"이 이 문서를 당신의 언어로 번역하는 것에 관심이 있다면, 개발자 메일링 리스트"
+"에 접촉하라."
-#: index.docbook:117
-msgid "Commercial development support, production support, and training for Hibernate is available through JBoss Inc. (see http://www.hibernate.org/SupportTraining/). Hibernate is a Professional Open Source project and a critical component of the JBoss Enterprise Middleware System (JEMS) suite of products."
-msgstr "Hibernate를 위한 상용 개발 지원, 제품 지원, 그리고 교육은 JBoss Inc를 통해 이용 가능하다 (http://www.hibernate.org/SupportTraining/를 보라). Hibernate는 JBoss Professional Open Source product 프로젝트이고 제품들에 대한 JBoss Enterprise Middleware System (JEMS) suite의 중대한 컴포넌트이다."
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: para
+#: preface.xml:117
+#, no-c-format
+msgid ""
+"Commercial development support, production support, and training for "
+"Hibernate is available through JBoss Inc. (see http://www.hibernate.org/"
+"SupportTraining/). Hibernate is a Professional Open Source project and a "
+"critical component of the JBoss Enterprise Middleware System (JEMS) suite of "
+"products."
+msgstr ""
+"Hibernate를 위한 상용 개발 지원, 제품 지원, 그리고 교육은 JBoss Inc를 통해 이"
+"용 가능하다 (http://www.hibernate.org/SupportTraining/를 보라). Hibernate는 "
+"JBoss Professional Open Source product 프로젝트이고 제품들에 대한 JBoss "
+"Enterprise Middleware System (JEMS) suite의 중대한 컴포넌트이다."
Modified: core/trunk/documentation/manual/translations/ko-KR/content/query_criteria.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/query_criteria.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/query_criteria.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,672 +1,776 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: query_criteria.xml:5
+#, no-c-format
msgid "Criteria Queries"
msgstr "Criteria 질의들"
-#: index.docbook:7
+#. Tag: para
+#: query_criteria.xml:7
+#, no-c-format
msgid "Hibernate features an intuitive, extensible criteria query API."
msgstr "Hibernate는 직관적인, 확장 가능한 criteria query API를 특징 짓는다."
-#: index.docbook:12
+#. Tag: title
+#: query_criteria.xml:12
+#, no-c-format
msgid "Creating a <literal>Criteria</literal> instance"
msgstr "<literal>Criteria</literal> 인스턴스 생성하기"
-#: index.docbook:14
-msgid "The interface <literal>org.hibernate.Criteria</literal> represents a query against a particular persistent class. The <literal>Session</literal> is a factory for <literal>Criteria</literal> instances."
-msgstr "<literal>org.hibernate.Criteria</literal>인터페이스는 특정 영속 클래스에 대한 질의를 표현한다. <literal>Session</literal>은 <literal>Criteria</literal> 인스턴스들에 대한 팩토리이다."
+#. Tag: para
+#: query_criteria.xml:14
+#, no-c-format
+msgid ""
+"The interface <literal>org.hibernate.Criteria</literal> represents a query "
+"against a particular persistent class. The <literal>Session</literal> is a "
+"factory for <literal>Criteria</literal> instances."
+msgstr ""
+"<literal>org.hibernate.Criteria</literal>인터페이스는 특정 영속 클래스에 대"
+"한 질의를 표현한다. <literal>Session</literal>은 <literal>Criteria</literal> "
+"인스턴스들에 대한 팩토리이다."
-#: index.docbook:20
+#. Tag: programlisting
+#: query_criteria.xml:20
+#, no-c-format
msgid ""
- "<![CDATA[Criteria crit = sess.createCriteria(Cat.class);\n"
- "crit.setMaxResults(50);\n"
- "List cats = crit.list();]]>"
+"<![CDATA[Criteria crit = sess.createCriteria(Cat.class);\n"
+"crit.setMaxResults(50);\n"
+"List cats = crit.list();]]>"
msgstr ""
- "<![CDATA[Criteria crit = sess.createCriteria(Cat.class);\n"
- "crit.setMaxResults(50);\n"
- "List cats = crit.list();]]>"
-#: index.docbook:25
+#. Tag: title
+#: query_criteria.xml:25
+#, no-c-format
msgid "Narrowing the result set"
msgstr "결과 셋 제한하기"
-#: index.docbook:27
-msgid "An individual query criterion is an instance of the interface <literal>org.hibernate.criterion.Criterion</literal>. The class <literal>org.hibernate.criterion.Restrictions</literal> defines factory methods for obtaining certain built-in <literal>Criterion</literal> types."
-msgstr "개별적인 질의 기준은 <literal>org.hibernate.criterion.Criterion</literal> 인터페이스의 인스턴스이다. <literal>org.hibernate.criterion.Restrictions</literal> 클래스는 어떤 미리 만들어진 <literal>Criterion</literal> 타입들을 얻는 팩토리 메소드들을 정의한다."
+#. Tag: para
+#: query_criteria.xml:27
+#, no-c-format
+msgid ""
+"An individual query criterion is an instance of the interface <literal>org."
+"hibernate.criterion.Criterion</literal>. The class <literal>org.hibernate."
+"criterion.Restrictions</literal> defines factory methods for obtaining "
+"certain built-in <literal>Criterion</literal> types."
+msgstr ""
+"개별적인 질의 기준은 <literal>org.hibernate.criterion.Criterion</literal> 인"
+"터페이스의 인스턴스이다. <literal>org.hibernate.criterion.Restrictions</"
+"literal> 클래스는 어떤 미리 만들어진 <literal>Criterion</literal> 타입들을 얻"
+"는 팩토리 메소드들을 정의한다."
-#: index.docbook:35
+#. Tag: programlisting
+#: query_criteria.xml:35
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
- " .add( Restrictions.between(\"weight\", minWeight, maxWeight) )\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
+" .add( Restrictions.between(\"weight\", minWeight, maxWeight) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
- " .add( Restrictions.between(\"weight\", minWeight, maxWeight) )\n"
- " .list();]]>"
-#: index.docbook:37
+#. Tag: para
+#: query_criteria.xml:37
+#, no-c-format
msgid "Restrictions may be grouped logically."
msgstr "제한들은 논리적으로 그룹지워질 수도 있다."
-#: index.docbook:41
+#. Tag: programlisting
+#: query_criteria.xml:41
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
- " .add( Restrictions.or(\n"
- " Restrictions.eq( \"age\", new Integer(0) ),\n"
- " Restrictions.isNull(\"age\")\n"
- " ) )\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
+" .add( Restrictions.or(\n"
+" Restrictions.eq( \"age\", new Integer(0) ),\n"
+" Restrictions.isNull(\"age\")\n"
+" ) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
- " .add( Restrictions.or(\n"
- " Restrictions.eq( \"age\", new Integer(0) ),\n"
- " Restrictions.isNull(\"age\")\n"
- " ) )\n"
- " .list();]]>"
-#: index.docbook:43
+#. Tag: programlisting
+#: query_criteria.xml:43
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.in( \"name\", new String[] { \"Fritz\", \"Izi\", \"Pk\" } ) )\n"
- " .add( Restrictions.disjunction()\n"
- " .add( Restrictions.isNull(\"age\") )\n"
- " .add( Restrictions.eq(\"age\", new Integer(0) ) )\n"
- " .add( Restrictions.eq(\"age\", new Integer(1) ) )\n"
- " .add( Restrictions.eq(\"age\", new Integer(2) ) )\n"
- " ) )\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .add( Restrictions.in( \"name\", new String[] { \"Fritz\", \"Izi\", \"Pk"
+"\" } ) )\n"
+" .add( Restrictions.disjunction()\n"
+" .add( Restrictions.isNull(\"age\") )\n"
+" .add( Restrictions.eq(\"age\", new Integer(0) ) )\n"
+" .add( Restrictions.eq(\"age\", new Integer(1) ) )\n"
+" .add( Restrictions.eq(\"age\", new Integer(2) ) )\n"
+" ) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.in( \"name\", new String[] { \"Fritz\", \"Izi\", \"Pk\" } ) )\n"
- " .add( Restrictions.disjunction()\n"
- " .add( Restrictions.isNull(\"age\") )\n"
- " .add( Restrictions.eq(\"age\", new Integer(0) ) )\n"
- " .add( Restrictions.eq(\"age\", new Integer(1) ) )\n"
- " .add( Restrictions.eq(\"age\", new Integer(2) ) )\n"
- " ) )\n"
- " .list();]]>"
-#: index.docbook:45
-msgid "There are quite a range of built-in criterion types (<literal>Restrictions</literal> subclasses), but one that is especially useful lets you specify SQL directly."
-msgstr "미리 만들어진 criterion 타입들(<literal>Restrictions</literal> 서브클래스들)의 영역이 꽤 존재하지만, 특히 유용한 것은 당신으로 하여금 SQL을 직접 지정하도록 해준다."
+#. Tag: para
+#: query_criteria.xml:45
+#, no-c-format
+msgid ""
+"There are quite a range of built-in criterion types (<literal>Restrictions</"
+"literal> subclasses), but one that is especially useful lets you specify SQL "
+"directly."
+msgstr ""
+"미리 만들어진 criterion 타입들(<literal>Restrictions</literal> 서브클래스들)"
+"의 영역이 꽤 존재하지만, 특히 유용한 것은 당신으로 하여금 SQL을 직접 지정하도"
+"록 해준다."
-#: index.docbook:50
+#. Tag: programlisting
+#: query_criteria.xml:50
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.sqlRestriction(\"lower({alias}.name) like lower(?)\", \"Fritz%\", Hibernate.STRING) )\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .add( Restrictions.sqlRestriction(\"lower({alias}.name) like lower(?)\", "
+"\"Fritz%\", Hibernate.STRING) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.sqlRestriction(\"lower({alias}.name) like lower(?)\", \"Fritz%\", Hibernate.STRING) )\n"
- " .list();]]>"
-#: index.docbook:52
-msgid "The <literal>{alias}</literal> placeholder with be replaced by the row alias of the queried entity."
-msgstr "질의된 엔티티의 행 alias에 의해 대체된 <literal>{alias}</literal> placeholder."
+#. Tag: para
+#: query_criteria.xml:52
+#, no-c-format
+msgid ""
+"The <literal>{alias}</literal> placeholder with be replaced by the row alias "
+"of the queried entity."
+msgstr ""
+"질의된 엔티티의 행 alias에 의해 대체된 <literal>{alias}</literal> "
+"placeholder."
-#: index.docbook:57
-msgid "An alternative approach to obtaining a criterion is to get it from a <literal>Property</literal> instance. You can create a <literal>Property</literal> by calling <literal>Property.forName()</literal>."
-msgstr "criterion을 얻는 대안적인 접근법은 <literal>Property</literal> 인스턴스로부터 그것을 얻는 것이다. 당신은 <literal>Property.forName()</literal>을 호출하여 <literal>Property</literal>를 생성시킬 수 있다."
+#. Tag: para
+#: query_criteria.xml:57
+#, no-c-format
+msgid ""
+"An alternative approach to obtaining a criterion is to get it from a "
+"<literal>Property</literal> instance. You can create a <literal>Property</"
+"literal> by calling <literal>Property.forName()</literal>."
+msgstr ""
+"criterion을 얻는 대안적인 접근법은 <literal>Property</literal> 인스턴스로부"
+"터 그것을 얻는 것이다. 당신은 <literal>Property.forName()</literal>을 호출하"
+"여 <literal>Property</literal>를 생성시킬 수 있다."
-#: index.docbook:63
+#. Tag: programlisting
+#: query_criteria.xml:63
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "Property age = Property.forName(\"age\");\n"
- "List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.disjunction()\n"
- " .add( age.isNull() )\n"
- " .add( age.eq( new Integer(0) ) )\n"
- " .add( age.eq( new Integer(1) ) )\n"
- " .add( age.eq( new Integer(2) ) )\n"
- " ) )\n"
- " .add( Property.forName(\"name\").in( new String[] { \"Fritz\", \"Izi\", \"Pk\" } ) )\n"
- " .list();]]>"
+"<![CDATA[\n"
+"Property age = Property.forName(\"age\");\n"
+"List cats = sess.createCriteria(Cat.class)\n"
+" .add( Restrictions.disjunction()\n"
+" .add( age.isNull() )\n"
+" .add( age.eq( new Integer(0) ) )\n"
+" .add( age.eq( new Integer(1) ) )\n"
+" .add( age.eq( new Integer(2) ) )\n"
+" ) )\n"
+" .add( Property.forName(\"name\").in( new String[] { \"Fritz\", \"Izi\", "
+"\"Pk\" } ) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[\n"
- "Property age = Property.forName(\"age\");\n"
- "List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.disjunction()\n"
- " .add( age.isNull() )\n"
- " .add( age.eq( new Integer(0) ) )\n"
- " .add( age.eq( new Integer(1) ) )\n"
- " .add( age.eq( new Integer(2) ) )\n"
- " ) )\n"
- " .add( Property.forName(\"name\").in( new String[] { \"Fritz\", \"Izi\", \"Pk\" } ) )\n"
- " .list();]]>"
-#: index.docbook:68
+#. Tag: title
+#: query_criteria.xml:68
+#, no-c-format
msgid "Ordering the results"
msgstr "결과들을 순서지우기(ordering)"
-#: index.docbook:70
-msgid "You may order the results using <literal>org.hibernate.criterion.Order</literal>."
-msgstr "당신은 <literal>org.hibernate.criterion.Order</literal>를 사용하여 결과들을 순서(ordering)지울 수 있다."
+#. Tag: para
+#: query_criteria.xml:70
+#, no-c-format
+msgid ""
+"You may order the results using <literal>org.hibernate.criterion.Order</"
+"literal>."
+msgstr ""
+"당신은 <literal>org.hibernate.criterion.Order</literal>를 사용하여 결과들을 "
+"순서(ordering)지울 수 있다."
-#: index.docbook:74
+#. Tag: programlisting
+#: query_criteria.xml:74
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"F%\")\n"
- " .addOrder( Order.asc(\"name\") )\n"
- " .addOrder( Order.desc(\"age\") )\n"
- " .setMaxResults(50)\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .add( Restrictions.like(\"name\", \"F%\")\n"
+" .addOrder( Order.asc(\"name\") )\n"
+" .addOrder( Order.desc(\"age\") )\n"
+" .setMaxResults(50)\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"F%\")\n"
- " .addOrder( Order.asc(\"name\") )\n"
- " .addOrder( Order.desc(\"age\") )\n"
- " .setMaxResults(50)\n"
- " .list();]]>"
-#: index.docbook:76
+#. Tag: programlisting
+#: query_criteria.xml:76
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Property.forName(\"name\").like(\"F%\") )\n"
- " .addOrder( Property.forName(\"name\").asc() )\n"
- " .addOrder( Property.forName(\"age\").desc() )\n"
- " .setMaxResults(50)\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .add( Property.forName(\"name\").like(\"F%\") )\n"
+" .addOrder( Property.forName(\"name\").asc() )\n"
+" .addOrder( Property.forName(\"age\").desc() )\n"
+" .setMaxResults(50)\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Property.forName(\"name\").like(\"F%\") )\n"
- " .addOrder( Property.forName(\"name\").asc() )\n"
- " .addOrder( Property.forName(\"age\").desc() )\n"
- " .setMaxResults(50)\n"
- " .list();]]>"
-#: index.docbook:81
+#. Tag: title
+#: query_criteria.xml:81
+#, no-c-format
msgid "Associations"
-msgstr "<title>연관들</title>"
+msgstr "연관들"
-#: index.docbook:83
-msgid "You may easily specify constraints upon related entities by navigating associations using <literal>createCriteria()</literal>."
-msgstr "당신은 <literal>createCriteria()</literal>를 사용하여 연관들을 네비게이트함으로써 관계된 엔티티들에 대한 컨스트레인트들을 쉽게 지정할 수 있다."
+#. Tag: para
+#: query_criteria.xml:83
+#, no-c-format
+msgid ""
+"You may easily specify constraints upon related entities by navigating "
+"associations using <literal>createCriteria()</literal>."
+msgstr ""
+"당신은 <literal>createCriteria()</literal>를 사용하여 연관들을 네비게이트함으"
+"로써 관계된 엔티티들에 대한 컨스트레인트들을 쉽게 지정할 수 있다."
-#: index.docbook:88
+#. Tag: programlisting
+#: query_criteria.xml:88
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"F%\") )\n"
- " .createCriteria(\"kittens\")\n"
- " .add( Restrictions.like(\"name\", \"F%\") )\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .add( Restrictions.like(\"name\", \"F%\") )\n"
+" .createCriteria(\"kittens\")\n"
+" .add( Restrictions.like(\"name\", \"F%\") )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"F%\") )\n"
- " .createCriteria(\"kittens\")\n"
- " .add( Restrictions.like(\"name\", \"F%\") )\n"
- " .list();]]>"
-#: index.docbook:90
-msgid "note that the second <literal>createCriteria()</literal> returns a new instance of <literal>Criteria</literal>, which refers to the elements of the <literal>kittens</literal> collection."
-msgstr "두 번째 <literal>createCriteria()</literal>는 <literal>Criteria</literal>의 새로운 인스턴스를 반환하며, 그것은 <literal>kittens</literal> 콜렉션의 요소들을 참조한다는 점을 노트하라."
+#. Tag: para
+#: query_criteria.xml:90
+#, no-c-format
+msgid ""
+"note that the second <literal>createCriteria()</literal> returns a new "
+"instance of <literal>Criteria</literal>, which refers to the elements of the "
+"<literal>kittens</literal> collection."
+msgstr ""
+"두 번째 <literal>createCriteria()</literal>는 <literal>Criteria</literal>의 "
+"새로운 인스턴스를 반환하며, 그것은 <literal>kittens</literal> 콜렉션의 요소들"
+"을 참조한다는 점을 노트하라."
-#: index.docbook:96
+#. Tag: para
+#: query_criteria.xml:96
+#, no-c-format
msgid "The following, alternate form is useful in certain circumstances."
msgstr "다음 대체 형식은 어떤 환경들에서 유용하다."
-#: index.docbook:100
+#. Tag: programlisting
+#: query_criteria.xml:100
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .createAlias(\"kittens\", \"kt\")\n"
- " .createAlias(\"mate\", \"mt\")\n"
- " .add( Restrictions.eqProperty(\"kt.name\", \"mt.name\") )\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .createAlias(\"kittens\", \"kt\")\n"
+" .createAlias(\"mate\", \"mt\")\n"
+" .add( Restrictions.eqProperty(\"kt.name\", \"mt.name\") )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .createAlias(\"kittens\", \"kt\")\n"
- " .createAlias(\"mate\", \"mt\")\n"
- " .add( Restrictions.eqProperty(\"kt.name\", \"mt.name\") )\n"
- " .list();]]>"
-#: index.docbook:102
-msgid "(<literal>createAlias()</literal> does not create a new instance of <literal>Criteria</literal>.)"
-msgstr "(<literal>createAlias()</literal>는 <literal>Criteria</literal>의 새로운 인스턴스를 생성시키지 않는다.)"
+#. Tag: para
+#: query_criteria.xml:102
+#, no-c-format
+msgid ""
+"(<literal>createAlias()</literal> does not create a new instance of "
+"<literal>Criteria</literal>.)"
+msgstr ""
+"(<literal>createAlias()</literal>는 <literal>Criteria</literal>의 새로운 인스"
+"턴스를 생성시키지 않는다.)"
-#: index.docbook:107
-msgid "Note that the kittens collections held by the <literal>Cat</literal> instances returned by the previous two queries are <emphasis>not</emphasis> pre-filtered by the criteria! If you wish to retrieve just the kittens that match the criteria, you must use a <literal>ResultTransformer</literal>."
-msgstr "앞의 두 개의 질의들에 의해 반환된 <literal>Cat</literal> 인스턴스들에 의해 보관된 kittens 콜렉션들은 criteria에 의해 사전-필터링되지 <emphasis>않는다</emphasis>는 점을 노트하라! 만일 당신이 criteria(기준)과 일치하는 고양이 새끼들을 단지 검색하고자 원할 경우, 당신은 하나의 <literal>ResultTransformer</literal>를 사용해야 한다."
+#. Tag: para
+#: query_criteria.xml:107
+#, no-c-format
+msgid ""
+"Note that the kittens collections held by the <literal>Cat</literal> "
+"instances returned by the previous two queries are <emphasis>not</emphasis> "
+"pre-filtered by the criteria! If you wish to retrieve just the kittens that "
+"match the criteria, you must use a <literal>ResultTransformer</literal>."
+msgstr ""
+"앞의 두 개의 질의들에 의해 반환된 <literal>Cat</literal> 인스턴스들에 의해 보"
+"관된 kittens 콜렉션들은 criteria에 의해 사전-필터링되지 <emphasis>않는다</"
+"emphasis>는 점을 노트하라! 만일 당신이 criteria(기준)과 일치하는 고양이 새끼"
+"들을 단지 검색하고자 원할 경우, 당신은 하나의 <literal>ResultTransformer</"
+"literal>를 사용해야 한다."
-#: index.docbook:114
+#. Tag: programlisting
+#: query_criteria.xml:114
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .createCriteria(\"kittens\", \"kt\")\n"
- " .add( Restrictions.eq(\"name\", \"F%\") )\n"
- " .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)\n"
- " .list();\n"
- "Iterator iter = cats.iterator();\n"
- "while ( iter.hasNext() ) {\n"
- " Map map = (Map) iter.next();\n"
- " Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);\n"
- " Cat kitten = (Cat) map.get(\"kt\");\n"
- "}]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .createCriteria(\"kittens\", \"kt\")\n"
+" .add( Restrictions.eq(\"name\", \"F%\") )\n"
+" .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)\n"
+" .list();\n"
+"Iterator iter = cats.iterator();\n"
+"while ( iter.hasNext() ) {\n"
+" Map map = (Map) iter.next();\n"
+" Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);\n"
+" Cat kitten = (Cat) map.get(\"kt\");\n"
+"}]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .createCriteria(\"kittens\", \"kt\")\n"
- " .add( Restrictions.eq(\"name\", \"F%\") )\n"
- " .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)\n"
- " .list();\n"
- "Iterator iter = cats.iterator();\n"
- "while ( iter.hasNext() ) {\n"
- " Map map = (Map) iter.next();\n"
- " Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);\n"
- " Cat kitten = (Cat) map.get(\"kt\");\n"
- "}]]>"
-#: index.docbook:119
+#. Tag: title
+#: query_criteria.xml:119
+#, no-c-format
msgid "Dynamic association fetching"
msgstr "동적인 연관 페칭"
-#: index.docbook:121
-msgid "You may specify association fetching semantics at runtime using <literal>setFetchMode()</literal>."
-msgstr "당신은 <literal>setFetchMode()</literal>를 사용하여 실행 시에 연관 페칭 의미를 지정할 수 있다."
+#. Tag: para
+#: query_criteria.xml:121
+#, no-c-format
+msgid ""
+"You may specify association fetching semantics at runtime using "
+"<literal>setFetchMode()</literal>."
+msgstr ""
+"당신은 <literal>setFetchMode()</literal>를 사용하여 실행 시에 연관 페칭 의미"
+"를 지정할 수 있다."
-#: index.docbook:126
+#. Tag: programlisting
+#: query_criteria.xml:126
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
- " .setFetchMode(\"mate\", FetchMode.EAGER)\n"
- " .setFetchMode(\"kittens\", FetchMode.EAGER)\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
+" .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
+" .setFetchMode(\"mate\", FetchMode.EAGER)\n"
+" .setFetchMode(\"kittens\", FetchMode.EAGER)\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createCriteria(Cat.class)\n"
- " .add( Restrictions.like(\"name\", \"Fritz%\") )\n"
- " .setFetchMode(\"mate\", FetchMode.EAGER)\n"
- " .setFetchMode(\"kittens\", FetchMode.EAGER)\n"
- " .list();]]>"
-#: index.docbook:128
-msgid "This query will fetch both <literal>mate</literal> and <literal>kittens</literal> by outer join. See <xref linkend=\"performance-fetching\"/> for more information."
-msgstr "이 질의는 outer 조인으로 <literal>mate</literal>와 <literal>kittens</literal> 모두를 페치할 것이다. 추가 정보는 <xref linkend=\"performance-fetching\"/>을 보라."
+#. Tag: para
+#: query_criteria.xml:128
+#, no-c-format
+msgid ""
+"This query will fetch both <literal>mate</literal> and <literal>kittens</"
+"literal> by outer join. See <xref linkend=\"performance-fetching\"/> for "
+"more information."
+msgstr ""
+"이 질의는 outer 조인으로 <literal>mate</literal>와 <literal>kittens</"
+"literal> 모두를 페치할 것이다. 추가 정보는 <xref linkend=\"performance-"
+"fetching\"/>을 보라."
-#: index.docbook:136
+#. Tag: title
+#: query_criteria.xml:136
+#, no-c-format
msgid "Example queries"
msgstr "예제 질의들"
-#: index.docbook:138
-msgid "The class <literal>org.hibernate.criterion.Example</literal> allows you to construct a query criterion from a given instance."
-msgstr "<literal>org.hibernate.criterion.Example</literal> 클래스는 주어진 인스턴스로부터 질의 기준(criterion)을 구조화 시키는 것을 당신에게 허용해준다."
+#. Tag: para
+#: query_criteria.xml:138
+#, no-c-format
+msgid ""
+"The class <literal>org.hibernate.criterion.Example</literal> allows you to "
+"construct a query criterion from a given instance."
+msgstr ""
+"<literal>org.hibernate.criterion.Example</literal> 클래스는 주어진 인스턴스로"
+"부터 질의 기준(criterion)을 구조화 시키는 것을 당신에게 허용해준다."
-#: index.docbook:143
+#. Tag: programlisting
+#: query_criteria.xml:143
+#, no-c-format
msgid ""
- "<![CDATA[Cat cat = new Cat();\n"
- "cat.setSex('F');\n"
- "cat.setColor(Color.BLACK);\n"
- "List results = session.createCriteria(Cat.class)\n"
- " .add( Example.create(cat) )\n"
- " .list();]]>"
+"<![CDATA[Cat cat = new Cat();\n"
+"cat.setSex('F');\n"
+"cat.setColor(Color.BLACK);\n"
+"List results = session.createCriteria(Cat.class)\n"
+" .add( Example.create(cat) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[Cat cat = new Cat();\n"
- "cat.setSex('F');\n"
- "cat.setColor(Color.BLACK);\n"
- "List results = session.createCriteria(Cat.class)\n"
- " .add( Example.create(cat) )\n"
- " .list();]]>"
-#: index.docbook:145
-msgid "Version properties, identifiers and associations are ignored. By default, null valued properties are excluded."
-msgstr "버전 프로퍼티들, 식별자들, 연관관계들이 무시된다. 디폴트로 null 값 프로퍼티들이 제외된다."
+#. Tag: para
+#: query_criteria.xml:145
+#, no-c-format
+msgid ""
+"Version properties, identifiers and associations are ignored. By default, "
+"null valued properties are excluded."
+msgstr ""
+"버전 프로퍼티들, 식별자들, 연관관계들이 무시된다. 디폴트로 null 값 프로퍼티들"
+"이 제외된다."
-#: index.docbook:150
+#. Tag: para
+#: query_criteria.xml:150
+#, no-c-format
msgid "You can adjust how the <literal>Example</literal> is applied."
msgstr "당신은 <literal>Example</literal>이 적용되는 방법을 조정할 수 있다."
-#: index.docbook:154
+#. Tag: programlisting
+#: query_criteria.xml:154
+#, no-c-format
msgid ""
- "<![CDATA[Example example = Example.create(cat)\n"
- " .excludeZeroes() //exclude zero valued properties\n"
- " .excludeProperty(\"color\") //exclude the property named \"color\"\n"
- " .ignoreCase() //perform case insensitive string comparisons\n"
- " .enableLike(); //use like for string comparisons\n"
- "List results = session.createCriteria(Cat.class)\n"
- " .add(example)\n"
- " .list();]]>"
+"<![CDATA[Example example = Example.create(cat)\n"
+" .excludeZeroes() //exclude zero valued properties\n"
+" .excludeProperty(\"color\") //exclude the property named \"color\"\n"
+" .ignoreCase() //perform case insensitive string "
+"comparisons\n"
+" .enableLike(); //use like for string comparisons\n"
+"List results = session.createCriteria(Cat.class)\n"
+" .add(example)\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[Example example = Example.create(cat)\n"
- " .excludeZeroes() //exclude zero valued properties\n"
- " .excludeProperty(\"color\") //exclude the property named \"color\"\n"
- " .ignoreCase() //perform case insensitive string comparisons\n"
- " .enableLike(); //use like for string comparisons\n"
- "List results = session.createCriteria(Cat.class)\n"
- " .add(example)\n"
- " .list();]]>"
-#: index.docbook:156
+#. Tag: para
+#: query_criteria.xml:156
+#, no-c-format
msgid "You can even use examples to place criteria upon associated objects."
-msgstr "당신은 연관된 객체들에 대한 criteria(기준)을 위치지우는데 examples를 사용할 수 있다."
+msgstr ""
+"당신은 연관된 객체들에 대한 criteria(기준)을 위치지우는데 examples를 사용할 "
+"수 있다."
-#: index.docbook:160
+#. Tag: programlisting
+#: query_criteria.xml:160
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .add( Example.create(cat) )\n"
- " .createCriteria(\"mate\")\n"
- " .add( Example.create( cat.getMate() ) )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Cat.class)\n"
+" .add( Example.create(cat) )\n"
+" .createCriteria(\"mate\")\n"
+" .add( Example.create( cat.getMate() ) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .add( Example.create(cat) )\n"
- " .createCriteria(\"mate\")\n"
- " .add( Example.create( cat.getMate() ) )\n"
- " .list();]]>"
-#: index.docbook:165
+#. Tag: title
+#: query_criteria.xml:165
+#, no-c-format
msgid "Projections, aggregation and grouping"
msgstr "Projections, aggregation 그리고 grouping"
-#: index.docbook:166
-msgid "The class <literal>org.hibernate.criterion.Projections</literal> is a factory for <literal>Projection</literal> instances. We apply a projection to a query by calling <literal>setProjection()</literal>."
-msgstr "<literal>org.hibernate.criterion.Projections</literal> 클래스는 <literal>Projection</literal> 인스턴스들에 대한 팩토리이다. 우리는 <literal>setProjection()</literal>을 호출하여 하나의 질의에 projection(투사,투영)을 적용시킨다."
+#. Tag: para
+#: query_criteria.xml:166
+#, no-c-format
+msgid ""
+"The class <literal>org.hibernate.criterion.Projections</literal> is a "
+"factory for <literal>Projection</literal> instances. We apply a projection "
+"to a query by calling <literal>setProjection()</literal>."
+msgstr ""
+"<literal>org.hibernate.criterion.Projections</literal> 클래스는 "
+"<literal>Projection</literal> 인스턴스들에 대한 팩토리이다. 우리는 "
+"<literal>setProjection()</literal>을 호출하여 하나의 질의에 projection(투사,"
+"투영)을 적용시킨다."
-#: index.docbook:172
+#. Tag: programlisting
+#: query_criteria.xml:172
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.rowCount() )\n"
- " .add( Restrictions.eq(\"color\", Color.BLACK) )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Cat.class)\n"
+" .setProjection( Projections.rowCount() )\n"
+" .add( Restrictions.eq(\"color\", Color.BLACK) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.rowCount() )\n"
- " .add( Restrictions.eq(\"color\", Color.BLACK) )\n"
- " .list();]]>"
-#: index.docbook:174
+#. Tag: programlisting
+#: query_criteria.xml:174
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.projectionList()\n"
- " .add( Projections.rowCount() )\n"
- " .add( Projections.avg(\"weight\") )\n"
- " .add( Projections.max(\"weight\") )\n"
- " .add( Projections.groupProperty(\"color\") )\n"
- " )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Cat.class)\n"
+" .setProjection( Projections.projectionList()\n"
+" .add( Projections.rowCount() )\n"
+" .add( Projections.avg(\"weight\") )\n"
+" .add( Projections.max(\"weight\") )\n"
+" .add( Projections.groupProperty(\"color\") )\n"
+" )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.projectionList()\n"
- " .add( Projections.rowCount() )\n"
- " .add( Projections.avg(\"weight\") )\n"
- " .add( Projections.max(\"weight\") )\n"
- " .add( Projections.groupProperty(\"color\") )\n"
- " )\n"
- " .list();]]>"
-#: index.docbook:176
-msgid "There is no explicit \"group by\" necessary in a criteria query. Certain projection types are defined to be <emphasis>grouping projections</emphasis>, which also appear in the SQL <literal>group by</literal> clause."
-msgstr "criteria 질의 내에서는 명시적인 \"group by\"가 필수적이지 않다. 어떤 projection 타입들은 <emphasis>grouping projections</emphasis>들이게끔 정의되고, 그것은 또한 SQL <literal>group by</literal> 절 속에 나타난다."
+#. Tag: para
+#: query_criteria.xml:176
+#, no-c-format
+msgid ""
+"There is no explicit \"group by\" necessary in a criteria query. Certain "
+"projection types are defined to be <emphasis>grouping projections</"
+"emphasis>, which also appear in the SQL <literal>group by</literal> clause."
+msgstr ""
+"criteria 질의 내에서는 명시적인 \"group by\"가 필수적이지 않다. 어떤 "
+"projection 타입들은 <emphasis>grouping projections</emphasis>들이게끔 정의되"
+"고, 그것은 또한 SQL <literal>group by</literal> 절 속에 나타난다."
-#: index.docbook:182
-msgid "An alias may optionally be assigned to a projection, so that the projected value may be referred to in restrictions or orderings. Here are two different ways to do this:"
-msgstr "alias는 선택적으로 projection에 할당될 수 있어서, 투사된(projected) 값은 제한(restriction)들 또는 ordering들 내에서 참조될 수 있다. 다음은 이것을 행하는 두 개의 다른 방법들이다:"
+#. Tag: para
+#: query_criteria.xml:182
+#, no-c-format
+msgid ""
+"An alias may optionally be assigned to a projection, so that the projected "
+"value may be referred to in restrictions or orderings. Here are two "
+"different ways to do this:"
+msgstr ""
+"alias는 선택적으로 projection에 할당될 수 있어서, 투사된(projected) 값은 제한"
+"(restriction)들 또는 ordering들 내에서 참조될 수 있다. 다음은 이것을 행하는 "
+"두 개의 다른 방법들이다:"
-#: index.docbook:188
+#. Tag: programlisting
+#: query_criteria.xml:188
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.alias( Projections.groupProperty(\"color\"), \"colr\" ) )\n"
- " .addOrder( Order.asc(\"colr\") )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Cat.class)\n"
+" .setProjection( Projections.alias( Projections.groupProperty(\"color\"), "
+"\"colr\" ) )\n"
+" .addOrder( Order.asc(\"colr\") )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.alias( Projections.groupProperty(\"color\"), \"colr\" ) )\n"
- " .addOrder( Order.asc(\"colr\") )\n"
- " .list();]]>"
-#: index.docbook:190
+#. Tag: programlisting
+#: query_criteria.xml:190
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.groupProperty(\"color\").as(\"colr\") )\n"
- " .addOrder( Order.asc(\"colr\") )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Cat.class)\n"
+" .setProjection( Projections.groupProperty(\"color\").as(\"colr\") )\n"
+" .addOrder( Order.asc(\"colr\") )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.groupProperty(\"color\").as(\"colr\") )\n"
- " .addOrder( Order.asc(\"colr\") )\n"
- " .list();]]>"
-#: index.docbook:192
-msgid "The <literal>alias()</literal> and <literal>as()</literal> methods simply wrap a projection instance in another, aliased, instance of <literal>Projection</literal>. As a shortcut, you can assign an alias when you add the projection to a projection list:"
-msgstr "<literal>alias()</literal> 메소드와 <literal>as()</literal> 메소드는 또 다른 alias 된 <literal>Projection</literal>의 인스턴스 내에 하나의 projection 인스턴스를 간단하게 포장한다. 지름길로서, 당신이 projection을 projection 리스트에 추가할 때 당신은 alias를 할당할 수 있다:"
+#. Tag: para
+#: query_criteria.xml:192
+#, no-c-format
+msgid ""
+"The <literal>alias()</literal> and <literal>as()</literal> methods simply "
+"wrap a projection instance in another, aliased, instance of "
+"<literal>Projection</literal>. As a shortcut, you can assign an alias when "
+"you add the projection to a projection list:"
+msgstr ""
+"<literal>alias()</literal> 메소드와 <literal>as()</literal> 메소드는 또 다른 "
+"alias 된 <literal>Projection</literal>의 인스턴스 내에 하나의 projection 인스"
+"턴스를 간단하게 포장한다. 지름길로서, 당신이 projection을 projection 리스트"
+"에 추가할 때 당신은 alias를 할당할 수 있다:"
-#: index.docbook:199
+#. Tag: programlisting
+#: query_criteria.xml:199
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.projectionList()\n"
- " .add( Projections.rowCount(), \"catCountByColor\" )\n"
- " .add( Projections.avg(\"weight\"), \"avgWeight\" )\n"
- " .add( Projections.max(\"weight\"), \"maxWeight\" )\n"
- " .add( Projections.groupProperty(\"color\"), \"color\" )\n"
- " )\n"
- " .addOrder( Order.desc(\"catCountByColor\") )\n"
- " .addOrder( Order.desc(\"avgWeight\") )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Cat.class)\n"
+" .setProjection( Projections.projectionList()\n"
+" .add( Projections.rowCount(), \"catCountByColor\" )\n"
+" .add( Projections.avg(\"weight\"), \"avgWeight\" )\n"
+" .add( Projections.max(\"weight\"), \"maxWeight\" )\n"
+" .add( Projections.groupProperty(\"color\"), \"color\" )\n"
+" )\n"
+" .addOrder( Order.desc(\"catCountByColor\") )\n"
+" .addOrder( Order.desc(\"avgWeight\") )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.projectionList()\n"
- " .add( Projections.rowCount(), \"catCountByColor\" )\n"
- " .add( Projections.avg(\"weight\"), \"avgWeight\" )\n"
- " .add( Projections.max(\"weight\"), \"maxWeight\" )\n"
- " .add( Projections.groupProperty(\"color\"), \"color\" )\n"
- " )\n"
- " .addOrder( Order.desc(\"catCountByColor\") )\n"
- " .addOrder( Order.desc(\"avgWeight\") )\n"
- " .list();]]>"
-#: index.docbook:201
+#. Tag: programlisting
+#: query_criteria.xml:201
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Domestic.class, \"cat\")\n"
- " .createAlias(\"kittens\", \"kit\")\n"
- " .setProjection( Projections.projectionList()\n"
- " .add( Projections.property(\"cat.name\"), \"catName\" )\n"
- " .add( Projections.property(\"kit.name\"), \"kitName\" )\n"
- " )\n"
- " .addOrder( Order.asc(\"catName\") )\n"
- " .addOrder( Order.asc(\"kitName\") )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Domestic.class, \"cat\")\n"
+" .createAlias(\"kittens\", \"kit\")\n"
+" .setProjection( Projections.projectionList()\n"
+" .add( Projections.property(\"cat.name\"), \"catName\" )\n"
+" .add( Projections.property(\"kit.name\"), \"kitName\" )\n"
+" )\n"
+" .addOrder( Order.asc(\"catName\") )\n"
+" .addOrder( Order.asc(\"kitName\") )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Domestic.class, \"cat\")\n"
- " .createAlias(\"kittens\", \"kit\")\n"
- " .setProjection( Projections.projectionList()\n"
- " .add( Projections.property(\"cat.name\"), \"catName\" )\n"
- " .add( Projections.property(\"kit.name\"), \"kitName\" )\n"
- " )\n"
- " .addOrder( Order.asc(\"catName\") )\n"
- " .addOrder( Order.asc(\"kitName\") )\n"
- " .list();]]>"
-#: index.docbook:203
-msgid "You can also use <literal>Property.forName()</literal> to express projections:"
-msgstr "당신은 또한 projection들을 표현하는데 <literal>Property.forName()</literal>을 사용할 수 있다:"
+#. Tag: para
+#: query_criteria.xml:203
+#, no-c-format
+msgid ""
+"You can also use <literal>Property.forName()</literal> to express "
+"projections:"
+msgstr ""
+"당신은 또한 projection들을 표현하는데 <literal>Property.forName()</literal>"
+"을 사용할 수 있다:"
-#: index.docbook:207
+#. Tag: programlisting
+#: query_criteria.xml:207
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Property.forName(\"name\") )\n"
- " .add( Property.forName(\"color\").eq(Color.BLACK) )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Cat.class)\n"
+" .setProjection( Property.forName(\"name\") )\n"
+" .add( Property.forName(\"color\").eq(Color.BLACK) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Property.forName(\"name\") )\n"
- " .add( Property.forName(\"color\").eq(Color.BLACK) )\n"
- " .list();]]>"
-#: index.docbook:209
+#. Tag: programlisting
+#: query_criteria.xml:209
+#, no-c-format
msgid ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.projectionList()\n"
- " .add( Projections.rowCount().as(\"catCountByColor\") )\n"
- " .add( Property.forName(\"weight\").avg().as(\"avgWeight\") )\n"
- " .add( Property.forName(\"weight\").max().as(\"maxWeight\") )\n"
- " .add( Property.forName(\"color\").group().as(\"color\" )\n"
- " )\n"
- " .addOrder( Order.desc(\"catCountByColor\") )\n"
- " .addOrder( Order.desc(\"avgWeight\") )\n"
- " .list();]]>"
+"<![CDATA[List results = session.createCriteria(Cat.class)\n"
+" .setProjection( Projections.projectionList()\n"
+" .add( Projections.rowCount().as(\"catCountByColor\") )\n"
+" .add( Property.forName(\"weight\").avg().as(\"avgWeight\") )\n"
+" .add( Property.forName(\"weight\").max().as(\"maxWeight\") )\n"
+" .add( Property.forName(\"color\").group().as(\"color\" )\n"
+" )\n"
+" .addOrder( Order.desc(\"catCountByColor\") )\n"
+" .addOrder( Order.desc(\"avgWeight\") )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List results = session.createCriteria(Cat.class)\n"
- " .setProjection( Projections.projectionList()\n"
- " .add( Projections.rowCount().as(\"catCountByColor\") )\n"
- " .add( Property.forName(\"weight\").avg().as(\"avgWeight\") )\n"
- " .add( Property.forName(\"weight\").max().as(\"maxWeight\") )\n"
- " .add( Property.forName(\"color\").group().as(\"color\" )\n"
- " )\n"
- " .addOrder( Order.desc(\"catCountByColor\") )\n"
- " .addOrder( Order.desc(\"avgWeight\") )\n"
- " .list();]]>"
-#: index.docbook:214
+#. Tag: title
+#: query_criteria.xml:214
+#, no-c-format
msgid "Detached queries and subqueries"
msgstr "Detached 질의들과 서브질의들"
-#: index.docbook:215
-msgid "The <literal>DetachedCriteria</literal> class lets you create a query outside the scope of a session, and then later execute it using some arbitrary <literal>Session</literal>."
-msgstr "<literal>DetachedCriteria</literal> 클래스는 당신에게 세션 영역의 외부에서 질의를 생성시키도록 하고, 그런 다음 나중에 어떤 임의의 <literal>Session</literal>을 사용하여 그것을 실행하도록 한다."
+#. Tag: para
+#: query_criteria.xml:215
+#, no-c-format
+msgid ""
+"The <literal>DetachedCriteria</literal> class lets you create a query "
+"outside the scope of a session, and then later execute it using some "
+"arbitrary <literal>Session</literal>."
+msgstr ""
+"<literal>DetachedCriteria</literal> 클래스는 당신에게 세션 영역의 외부에서 질"
+"의를 생성시키도록 하고, 그런 다음 나중에 어떤 임의의 <literal>Session</"
+"literal>을 사용하여 그것을 실행하도록 한다."
-#: index.docbook:220
+#. Tag: programlisting
+#: query_criteria.xml:220
+#, no-c-format
msgid ""
- "<![CDATA[DetachedCriteria query = DetachedCriteria.forClass(Cat.class)\n"
- " .add( Property.forName(\"sex\").eq('F') );\n"
- " \n"
- "Session session = ....;\n"
- "Transaction txn = session.beginTransaction();\n"
- "List results = query.getExecutableCriteria(session).setMaxResults(100).list();\n"
- "txn.commit();\n"
- "session.close();]]>"
+"<![CDATA[DetachedCriteria query = DetachedCriteria.forClass(Cat.class)\n"
+" .add( Property.forName(\"sex\").eq('F') );\n"
+" \n"
+"Session session = ....;\n"
+"Transaction txn = session.beginTransaction();\n"
+"List results = query.getExecutableCriteria(session).setMaxResults(100).list"
+"();\n"
+"txn.commit();\n"
+"session.close();]]>"
msgstr ""
- "<![CDATA[DetachedCriteria query = DetachedCriteria.forClass(Cat.class)\n"
- " .add( Property.forName(\"sex\").eq('F') );\n"
- " \n"
- "Session session = ....;\n"
- "Transaction txn = session.beginTransaction();\n"
- "List results = query.getExecutableCriteria(session).setMaxResults(100).list();\n"
- "txn.commit();\n"
- "session.close();]]>"
-#: index.docbook:222
-msgid "A <literal>DetachedCriteria</literal> may also be used to express a subquery. Criterion instances involving subqueries may be obtained via <literal>Subqueries</literal> or <literal>Property</literal>."
-msgstr "<literal>DetachedCriteria</literal>는 또한 서브질의를 표현하는데 사용된다. 서브질의들을 포함하는 Criterion 인스턴스들은 <literal>Subqueries</literal> 또는 <literal>Property</literal>를 통해 얻어질 수 있다."
+#. Tag: para
+#: query_criteria.xml:222
+#, no-c-format
+msgid ""
+"A <literal>DetachedCriteria</literal> may also be used to express a "
+"subquery. Criterion instances involving subqueries may be obtained via "
+"<literal>Subqueries</literal> or <literal>Property</literal>."
+msgstr ""
+"<literal>DetachedCriteria</literal>는 또한 서브질의를 표현하는데 사용된다. 서"
+"브질의들을 포함하는 Criterion 인스턴스들은 <literal>Subqueries</literal> 또"
+"는 <literal>Property</literal>를 통해 얻어질 수 있다."
-#: index.docbook:228
+#. Tag: programlisting
+#: query_criteria.xml:228
+#, no-c-format
msgid ""
- "<![CDATA[DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)\n"
- " .setProjection( Property.forName(\"weight\").avg() );\n"
- "session.createCriteria(Cat.class)\n"
- " .add( Property.forName(\"weight\").gt(avgWeight) )\n"
- " .list();]]>"
+"<![CDATA[DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)\n"
+" .setProjection( Property.forName(\"weight\").avg() );\n"
+"session.createCriteria(Cat.class)\n"
+" .add( Property.forName(\"weight\").gt(avgWeight) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)\n"
- " .setProjection( Property.forName(\"weight\").avg() );\n"
- "session.createCriteria(Cat.class)\n"
- " .add( Property.forName(\"weight\").gt(avgWeight) )\n"
- " .list();]]>"
-#: index.docbook:230
+#. Tag: programlisting
+#: query_criteria.xml:230
+#, no-c-format
msgid ""
- "<![CDATA[DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)\n"
- " .setProjection( Property.forName(\"weight\") );\n"
- "session.createCriteria(Cat.class)\n"
- " .add( Subqueries.geAll(\"weight\", weights) )\n"
- " .list();]]>"
+"<![CDATA[DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)\n"
+" .setProjection( Property.forName(\"weight\") );\n"
+"session.createCriteria(Cat.class)\n"
+" .add( Subqueries.geAll(\"weight\", weights) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)\n"
- " .setProjection( Property.forName(\"weight\") );\n"
- "session.createCriteria(Cat.class)\n"
- " .add( Subqueries.geAll(\"weight\", weights) )\n"
- " .list();]]>"
-#: index.docbook:232
+#. Tag: para
+#: query_criteria.xml:232
+#, no-c-format
msgid "Even correlated subqueries are possible:"
msgstr "심지어 상관관계 지워진 서브질의들이 가능하다:"
-#: index.docbook:236
+#. Tag: programlisting
+#: query_criteria.xml:236
+#, no-c-format
msgid ""
- "<![CDATA[DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat.class, \"cat2\")\n"
- " .setProjection( Property.forName(\"weight\").avg() )\n"
- " .add( Property.forName(\"cat2.sex\").eqProperty(\"cat.sex\") );\n"
- "session.createCriteria(Cat.class, \"cat\")\n"
- " .add( Property.forName(\"weight\").gt(avgWeightForSex) )\n"
- " .list();]]>"
+"<![CDATA[DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat."
+"class, \"cat2\")\n"
+" .setProjection( Property.forName(\"weight\").avg() )\n"
+" .add( Property.forName(\"cat2.sex\").eqProperty(\"cat.sex\") );\n"
+"session.createCriteria(Cat.class, \"cat\")\n"
+" .add( Property.forName(\"weight\").gt(avgWeightForSex) )\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat.class, \"cat2\")\n"
- " .setProjection( Property.forName(\"weight\").avg() )\n"
- " .add( Property.forName(\"cat2.sex\").eqProperty(\"cat.sex\") );\n"
- "session.createCriteria(Cat.class, \"cat\")\n"
- " .add( Property.forName(\"weight\").gt(avgWeightForSex) )\n"
- " .list();]]>"
-#: index.docbook:245
+#. Tag: title
+#: query_criteria.xml:245
+#, no-c-format
msgid "Queries by natural identifier"
msgstr "natural 식별자에 의한 질의들"
-#: index.docbook:247
-msgid "For most queries, including criteria queries, the query cache is not very efficient, because query cache invalidation occurs too frequently. However, there is one special kind of query where we can optimize the cache invalidation algorithm: lookups by a constant natural key. In some applications, this kind of query occurs frequently. The criteria API provides special provision for this use case."
-msgstr "대부분의 질의들에서, criteria 질의들을 포함하여, 질의 캐시는 매우 효율적이지 않다. 왜냐하면 질의 캐시 비유효성이 너무 자주 발생하기 때문이다. 하지만, 우리가 캐시 비유효성 알고리즘을 최적화 시킬 수 있는 한 가지 특별한 종류의 질의가 존재한다: 상수 natural 키에 의한 룩업. 몇몇 어플리케이션들에서, 이런 종류의 질의가 자주 발생한다. criteria API는 이 쓰임새를 위한 특별한 설비를 제공한다."
+#. Tag: para
+#: query_criteria.xml:247
+#, no-c-format
+msgid ""
+"For most queries, including criteria queries, the query cache is not very "
+"efficient, because query cache invalidation occurs too frequently. However, "
+"there is one special kind of query where we can optimize the cache "
+"invalidation algorithm: lookups by a constant natural key. In some "
+"applications, this kind of query occurs frequently. The criteria API "
+"provides special provision for this use case."
+msgstr ""
+"대부분의 질의들에서, criteria 질의들을 포함하여, 질의 캐시는 매우 효율적이지 "
+"않다. 왜냐하면 질의 캐시 비유효성이 너무 자주 발생하기 때문이다. 하지만, 우리"
+"가 캐시 비유효성 알고리즘을 최적화 시킬 수 있는 한 가지 특별한 종류의 질의가 "
+"존재한다: 상수 natural 키에 의한 룩업. 몇몇 어플리케이션들에서, 이런 종류의 "
+"질의가 자주 발생한다. criteria API는 이 쓰임새를 위한 특별한 설비를 제공한다."
-#: index.docbook:255
-msgid "First, you should map the natural key of your entity using <literal><natural-id></literal>, and enable use of the second-level cache."
-msgstr "첫번째로 당신은 <literal><natural-id></literal>를 사용하여 당신의 엔티티에 대한 natural 키를 매핑 시켜야 하고, second-level 캐시 사용을 가능하게 해야 한다."
+#. Tag: para
+#: query_criteria.xml:255
+#, no-c-format
+msgid ""
+"First, you should map the natural key of your entity using <literal><"
+"natural-id></literal>, and enable use of the second-level cache."
+msgstr ""
+"첫번째로 당신은 <literal><natural-id></literal>를 사용하여 당신의 엔티"
+"티에 대한 natural 키를 매핑 시켜야 하고, second-level 캐시 사용을 가능하게 해"
+"야 한다."
-#: index.docbook:260
+#. Tag: programlisting
+#: query_criteria.xml:260
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"User\">\n"
- " <cache usage=\"read-write\"/>\n"
- " <id name=\"id\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <natural-id>\n"
- " <property name=\"name\"/>\n"
- " <property name=\"org\"/>\n"
- " </natural-id>\n"
- " <property name=\"password\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"User\">\n"
+" <cache usage=\"read-write\"/>\n"
+" <id name=\"id\">\n"
+" <generator class=\"increment\"/>\n"
+" </id>\n"
+" <natural-id>\n"
+" <property name=\"name\"/>\n"
+" <property name=\"org\"/>\n"
+" </natural-id>\n"
+" <property name=\"password\"/>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"User\">\n"
- " <cache usage=\"read-write\"/>\n"
- " <id name=\"id\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <natural-id>\n"
- " <property name=\"name\"/>\n"
- " <property name=\"org\"/>\n"
- " </natural-id>\n"
- " <property name=\"password\"/>\n"
- "</class>]]>"
-#: index.docbook:262
-msgid "Note that this functionality is not intended for use with entities with <emphasis>mutable</emphasis> natural keys."
-msgstr "이 기능은 <emphasis>가변성 있는</emphasis> natural 키들을 가진 엔티티들의 용도로 고안되어 있지 않음을 노트하라."
+#. Tag: para
+#: query_criteria.xml:262
+#, no-c-format
+msgid ""
+"Note that this functionality is not intended for use with entities with "
+"<emphasis>mutable</emphasis> natural keys."
+msgstr ""
+"이 기능은 <emphasis>가변성 있는</emphasis> natural 키들을 가진 엔티티들의 용"
+"도로 고안되어 있지 않음을 노트하라."
-#: index.docbook:267
+#. Tag: para
+#: query_criteria.xml:267
+#, no-c-format
msgid "Next, enable the Hibernate query cache."
msgstr "다음으로 , Hibernate 질의 캐시를 사용 가능하도록 하라."
-#: index.docbook:271
-msgid "Now, <literal>Restrictions.naturalId()</literal> allows us to make use of the more efficient cache algorithm."
-msgstr "이제 <literal>Restrictions.naturalId()</literal>는 캐시 알고리즘을 보다 효율적으로 사용할 수 있도록 우리에게 허용해준다."
+#. Tag: para
+#: query_criteria.xml:271
+#, no-c-format
+msgid ""
+"Now, <literal>Restrictions.naturalId()</literal> allows us to make use of "
+"the more efficient cache algorithm."
+msgstr ""
+"이제 <literal>Restrictions.naturalId()</literal>는 캐시 알고리즘을 보다 효율"
+"적으로 사용할 수 있도록 우리에게 허용해준다."
-#: index.docbook:276
+#. Tag: programlisting
+#: query_criteria.xml:276
+#, no-c-format
msgid ""
- "<![CDATA[session.createCriteria(User.class)\n"
- " .add( Restrictions.naturalId()\n"
- " .set(\"name\", \"gavin\")\n"
- " .set(\"org\", \"hb\") \n"
- " ).setCacheable(true)\n"
- " .uniqueResult();]]>"
+"<![CDATA[session.createCriteria(User.class)\n"
+" .add( Restrictions.naturalId()\n"
+" .set(\"name\", \"gavin\")\n"
+" .set(\"org\", \"hb\") \n"
+" ).setCacheable(true)\n"
+" .uniqueResult();]]>"
msgstr ""
- "<![CDATA[session.createCriteria(User.class)\n"
- " .add( Restrictions.naturalId()\n"
- " .set(\"name\", \"gavin\")\n"
- " .set(\"org\", \"hb\") \n"
- " ).setCacheable(true)\n"
- " .uniqueResult();]]>"
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
Modified: core/trunk/documentation/manual/translations/ko-KR/content/query_hql.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/query_hql.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/query_hql.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,1510 +1,2431 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: query_hql.xml:5
+#, no-c-format
msgid "HQL: The Hibernate Query Language"
msgstr "HQL: 하이버네이트 질의 언어(Hibernate Query Language)"
-#: index.docbook:7
-msgid "Hibernate is equipped with an extremely powerful query language that (quite intentionally) looks very much like SQL. But don't be fooled by the syntax; HQL is fully object-oriented, understanding notions like inheritence, polymorphism and association."
-msgstr "Hibernate는 (아주 의도적으로) SQL과 매우 흡사하게 보이는 극히 강력한 질의 언어를 구비하고 있다. 그러나 그 구문에 의해 우롱당하지 말라; HQL은 상속, 다형성 그리고 연관과 같은 개념들을 이해하여서, 전체적으로 객체 지향적이다."
+#. Tag: para
+#: query_hql.xml:7
+#, no-c-format
+msgid ""
+"Hibernate is equipped with an extremely powerful query language that (quite "
+"intentionally) looks very much like SQL. But don't be fooled by the syntax; "
+"HQL is fully object-oriented, understanding notions like inheritence, "
+"polymorphism and association."
+msgstr ""
+"Hibernate는 (아주 의도적으로) SQL과 매우 흡사하게 보이는 극히 강력한 질의 언"
+"어를 구비하고 있다. 그러나 그 구문에 의해 우롱당하지 말라; HQL은 상속, 다형"
+"성 그리고 연관과 같은 개념들을 이해하여서, 전체적으로 객체 지향적이다."
-#: index.docbook:14
+#. Tag: title
+#: query_hql.xml:14
+#, no-c-format
msgid "Case Sensitivity"
msgstr "대소문자 구분"
-#: index.docbook:16
-msgid "Queries are case-insensitive, except for names of Java classes and properties. So <literal>SeLeCT</literal> is the same as <literal>sELEct</literal> is the same as <literal>SELECT</literal> but <literal>org.hibernate.eg.FOO</literal> is not <literal>org.hibernate.eg.Foo</literal> and <literal>foo.barSet</literal> is not <literal>foo.BARSET</literal>."
-msgstr "질의들은 Java 클래스들과 프로퍼티들의 이름들을 제외하면 대소문자를 구분하지 않는다. 따라서 <literal>SeLeCT</literal>는 <literal>SELECT</literal>와 같고 <literal>SELECT</literal>와도 같지만 <literal>org.hibernate.eg.FOO</literal>는 <literal>org.hibernate.eg.Foo</literal>과 같지 않고 <literal>foo.barSet</literal>은 <literal>foo.BARSET</literal>과 같지 않다."
+#. Tag: para
+#: query_hql.xml:16
+#, no-c-format
+msgid ""
+"Queries are case-insensitive, except for names of Java classes and "
+"properties. So <literal>SeLeCT</literal> is the same as <literal>sELEct</"
+"literal> is the same as <literal>SELECT</literal> but <literal>org.hibernate."
+"eg.FOO</literal> is not <literal>org.hibernate.eg.Foo</literal> and "
+"<literal>foo.barSet</literal> is not <literal>foo.BARSET</literal>."
+msgstr ""
+"질의들은 Java 클래스들과 프로퍼티들의 이름들을 제외하면 대소문자를 구분하지 "
+"않는다. 따라서 <literal>SeLeCT</literal>는 <literal>SELECT</literal>와 같고 "
+"<literal>SELECT</literal>와도 같지만 <literal>org.hibernate.eg.FOO</literal>"
+"는 <literal>org.hibernate.eg.Foo</literal>과 같지 않고 <literal>foo.barSet</"
+"literal>은 <literal>foo.BARSET</literal>과 같지 않다."
-#: index.docbook:27
-msgid "This manual uses lowercase HQL keywords. Some users find queries with uppercase keywords more readable, but we find this convention ugly when embedded in Java code."
-msgstr "이 매뉴얼은 소문자 HQL 키워드를 사용한다. 몇몇 사용자들은 보다 나은 가독성을 위해 대문자 키워드들을 가진 질의들을 찾지만, 우리는 자바 코드 속에 삽입될 때 이 컨벤션이 추하다는 점을 발견한다."
+#. Tag: para
+#: query_hql.xml:27
+#, no-c-format
+msgid ""
+"This manual uses lowercase HQL keywords. Some users find queries with "
+"uppercase keywords more readable, but we find this convention ugly when "
+"embedded in Java code."
+msgstr ""
+"이 매뉴얼은 소문자 HQL 키워드를 사용한다. 몇몇 사용자들은 보다 나은 가독성을 "
+"위해 대문자 키워드들을 가진 질의들을 찾지만, 우리는 자바 코드 속에 삽입될 때 "
+"이 컨벤션이 추하다는 점을 발견한다."
-#: index.docbook:35
+#. Tag: title
+#: query_hql.xml:35
+#, no-c-format
msgid "The from clause"
msgstr "from 절"
-#: index.docbook:37
+#. Tag: para
+#: query_hql.xml:37
+#, no-c-format
msgid "The simplest possible Hibernate query is of the form:"
msgstr "가장 간단한 가능한 Hibernate 질의는 다음 형식이다:"
-#: index.docbook:41
+#. Tag: programlisting
+#: query_hql.xml:41
+#, no-c-format
msgid "<![CDATA[from eg.Cat]]>"
-msgstr "<![CDATA[from eg.Cat]]>"
+msgstr ""
-#: index.docbook:43
-msgid "which simply returns all instances of the class <literal>eg.Cat</literal>. We don't usually need to qualify the class name, since <literal>auto-import</literal> is the default. So we almost always just write:"
-msgstr "이것은 <literal>eg.Cat</literal> 클래스의 모든 인스턴스들을 간단하게 반환한다. 우리는 대개 클래스 이름을 수식할 필요가 없다. 왜냐하면, <literal>auto-import</literal>가 디폴트이기 때문이다. 따라서 우리는 대개 항상 단지 다음과 같이 작성한다:"
+#. Tag: para
+#: query_hql.xml:43
+#, no-c-format
+msgid ""
+"which simply returns all instances of the class <literal>eg.Cat</literal>. "
+"We don't usually need to qualify the class name, since <literal>auto-import</"
+"literal> is the default. So we almost always just write:"
+msgstr ""
+"이것은 <literal>eg.Cat</literal> 클래스의 모든 인스턴스들을 간단하게 반환한"
+"다. 우리는 대개 클래스 이름을 수식할 필요가 없다. 왜냐하면, <literal>auto-"
+"import</literal>가 디폴트이기 때문이다. 따라서 우리는 대개 항상 단지 다음과 "
+"같이 작성한다:"
-#: index.docbook:49
+#. Tag: programlisting
+#: query_hql.xml:49
+#, no-c-format
msgid "<![CDATA[from Cat]]>"
-msgstr "<![CDATA[from Cat]]>"
+msgstr ""
-#: index.docbook:51
-msgid "Most of the time, you will need to assign an <emphasis>alias</emphasis>, since you will want to refer to the <literal>Cat</literal> in other parts of the query."
-msgstr "대개 당신은 한 개의 <emphasis>alias</emphasis>를 할당할 필요가 있을 것이다. 왜냐하면 당신은 질의의 다른 부분들에서 <literal>Cat</literal>을 참조하고자 원할 것이기 때문이다."
+#. Tag: para
+#: query_hql.xml:51
+#, no-c-format
+msgid ""
+"Most of the time, you will need to assign an <emphasis>alias</emphasis>, "
+"since you will want to refer to the <literal>Cat</literal> in other parts of "
+"the query."
+msgstr ""
+"대개 당신은 한 개의 <emphasis>alias</emphasis>를 할당할 필요가 있을 것이다. "
+"왜냐하면 당신은 질의의 다른 부분들에서 <literal>Cat</literal>을 참조하고자 원"
+"할 것이기 때문이다."
-#: index.docbook:57, index.docbook:372
+#. Tag: programlisting
+#: query_hql.xml:57 query_hql.xml:372
+#, no-c-format
msgid "<![CDATA[from Cat as cat]]>"
-msgstr "<![CDATA[from Cat as cat]]>"
+msgstr ""
-#: index.docbook:59
-msgid "This query assigns the alias <literal>cat</literal> to <literal>Cat</literal> instances, so we could use that alias later in the query. The <literal>as</literal> keyword is optional; we could also write:"
-msgstr "이 질의는 alias <literal>cat</literal>을 <literal>Cat</literal> 인스턴스들에 할당하여서, 우리는 나중에 질의 속에서 그 alias를 사용할 수 있을 것이다. <literal>as</literal> 키워드는 옵션이다; 우리는 또한 다음과 같이 작성할 수 있다:"
+#. Tag: para
+#: query_hql.xml:59
+#, no-c-format
+msgid ""
+"This query assigns the alias <literal>cat</literal> to <literal>Cat</"
+"literal> instances, so we could use that alias later in the query. The "
+"<literal>as</literal> keyword is optional; we could also write:"
+msgstr ""
+"이 질의는 alias <literal>cat</literal>을 <literal>Cat</literal> 인스턴스들에 "
+"할당하여서, 우리는 나중에 질의 속에서 그 alias를 사용할 수 있을 것이다. "
+"<literal>as</literal> 키워드는 옵션이다; 우리는 또한 다음과 같이 작성할 수 있"
+"다:"
-#: index.docbook:65
+#. Tag: programlisting
+#: query_hql.xml:65
+#, no-c-format
msgid "<![CDATA[from Cat cat]]>"
-msgstr "<![CDATA[from Cat cat]]>"
+msgstr ""
-#: index.docbook:67
-msgid "Multiple classes may appear, resulting in a cartesian product or \"cross\" join."
-msgstr "여러 개의 클래스들은 cartesian product(카티젼 곱) 또는 \"크로스\" 조인으로 귀결되어 나타날 수도 있다."
+#. Tag: para
+#: query_hql.xml:67
+#, no-c-format
+msgid ""
+"Multiple classes may appear, resulting in a cartesian product or \"cross\" "
+"join."
+msgstr ""
+"여러 개의 클래스들은 cartesian product(카티젼 곱) 또는 \"크로스\" 조인으로 귀"
+"결되어 나타날 수도 있다."
-#: index.docbook:71
+#. Tag: programlisting
+#: query_hql.xml:71
+#, no-c-format
msgid "<![CDATA[from Formula, Parameter]]>"
-msgstr "<![CDATA[from Formula, Parameter]]>"
+msgstr ""
-#: index.docbook:72
+#. Tag: programlisting
+#: query_hql.xml:72
+#, no-c-format
msgid "<![CDATA[from Formula as form, Parameter as param]]>"
-msgstr "<![CDATA[from Formula as form, Parameter as param]]>"
+msgstr ""
-#: index.docbook:74
-msgid "It is considered good practice to name query aliases using an initial lowercase, consistent with Java naming standards for local variables (eg. <literal>domesticCat</literal>)."
-msgstr "로컬 변수들에 대한 Java 네이밍 표준들과 일치되게, 첫 소문자를 사용하여 질의 alias들을 명명하는 것은 좋은 습관으로 간주된다 (예를 들면 <literal>domesticCat</literal>)."
+#. Tag: para
+#: query_hql.xml:74
+#, no-c-format
+msgid ""
+"It is considered good practice to name query aliases using an initial "
+"lowercase, consistent with Java naming standards for local variables (eg. "
+"<literal>domesticCat</literal>)."
+msgstr ""
+"로컬 변수들에 대한 Java 네이밍 표준들과 일치되게, 첫 소문자를 사용하여 질의 "
+"alias들을 명명하는 것은 좋은 습관으로 간주된다 (예를 들면 "
+"<literal>domesticCat</literal>)."
-#: index.docbook:83
+#. Tag: title
+#: query_hql.xml:83
+#, no-c-format
msgid "Associations and joins"
msgstr "연관들과 조인들"
-#: index.docbook:85
-msgid "We may also assign aliases to associated entities, or even to elements of a collection of values, using a <literal>join</literal>."
-msgstr "우리는 또한 <literal>join</literal>을 사용하여 , 연관된 엔티티들에 또는 값들을 가진 콜렉션의 요소들에도 alias들을 할당할 수도 있다."
+#. Tag: para
+#: query_hql.xml:85
+#, no-c-format
+msgid ""
+"We may also assign aliases to associated entities, or even to elements of a "
+"collection of values, using a <literal>join</literal>."
+msgstr ""
+"우리는 또한 <literal>join</literal>을 사용하여 , 연관된 엔티티들에 또는 값들"
+"을 가진 콜렉션의 요소들에도 alias들을 할당할 수도 있다."
-#: index.docbook:90
+#. Tag: programlisting
+#: query_hql.xml:90
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as cat\n"
- " inner join cat.mate as mate\n"
- " left outer join cat.kittens as kitten]]>"
+"<![CDATA[from Cat as cat\n"
+" inner join cat.mate as mate\n"
+" left outer join cat.kittens as kitten]]>"
msgstr ""
- "<![CDATA[from Cat as cat \n"
- " inner join cat.mate as mate\n"
- " left outer join cat.kittens as kitten]]>"
-#: index.docbook:92
+#. Tag: programlisting
+#: query_hql.xml:92
+#, no-c-format
msgid "<![CDATA[from Cat as cat left join cat.mate.kittens as kittens]]>"
-msgstr "<![CDATA[from Cat as cat left join cat.mate.kittens as kittens]]>"
+msgstr ""
-#: index.docbook:94
+#. Tag: programlisting
+#: query_hql.xml:94
+#, no-c-format
msgid "<![CDATA[from Formula form full join form.parameter param]]>"
-msgstr "<![CDATA[from Formula form full join form.parameter param]]>"
+msgstr ""
-#: index.docbook:96
+#. Tag: para
+#: query_hql.xml:96
+#, no-c-format
msgid "The supported join types are borrowed from ANSI SQL"
msgstr "지원되는 join 타입들은 ANSI SQL로부터 빌려왔다"
-#: index.docbook:103
+#. Tag: literal
+#: query_hql.xml:103
+#, no-c-format
msgid "inner join"
msgstr "inner join"
-#: index.docbook:108
+#. Tag: literal
+#: query_hql.xml:108
+#, no-c-format
msgid "left outer join"
msgstr "left outer join"
-#: index.docbook:113
+#. Tag: literal
+#: query_hql.xml:113
+#, no-c-format
msgid "right outer join"
msgstr "right outer join"
-#: index.docbook:117
+#. Tag: para
+#: query_hql.xml:117
+#, no-c-format
msgid "<literal>full join</literal> (not usually useful)"
msgstr "<literal>full join</literal> (대개 유용하지 않음)"
-#: index.docbook:123
-msgid "The <literal>inner join</literal>, <literal>left outer join</literal> and <literal>right outer join</literal> constructs may be abbreviated."
-msgstr "<literal>inner join</literal>, <literal>left outer join</literal>, 그리고 <literal>right outer join</literal> 구조체들이 약칭될 수 있다."
+#. Tag: para
+#: query_hql.xml:123
+#, no-c-format
+msgid ""
+"The <literal>inner join</literal>, <literal>left outer join</literal> and "
+"<literal>right outer join</literal> constructs may be abbreviated."
+msgstr ""
+"<literal>inner join</literal>, <literal>left outer join</literal>, 그리고 "
+"<literal>right outer join</literal> 구조체들이 약칭될 수 있다."
-#: index.docbook:128
+#. Tag: programlisting
+#: query_hql.xml:128
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as cat\n"
- " join cat.mate as mate\n"
- " left join cat.kittens as kitten]]>"
+"<![CDATA[from Cat as cat\n"
+" join cat.mate as mate\n"
+" left join cat.kittens as kitten]]>"
msgstr ""
- "<![CDATA[from Cat as cat \n"
- " join cat.mate as mate\n"
- " left join cat.kittens as kitten]]>"
-#: index.docbook:130
-msgid "You may supply extra join conditions using the HQL <literal>with</literal> keyword."
-msgstr "당신은 HQL <literal>with</literal> 키워드를 사용하여 특별한 조인 조건들을 제공할 수 있다."
+#. Tag: para
+#: query_hql.xml:130
+#, no-c-format
+msgid ""
+"You may supply extra join conditions using the HQL <literal>with</literal> "
+"keyword."
+msgstr ""
+"당신은 HQL <literal>with</literal> 키워드를 사용하여 특별한 조인 조건들을 제"
+"공할 수 있다."
-#: index.docbook:135
+#. Tag: programlisting
+#: query_hql.xml:135
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as cat\n"
- " left join cat.kittens as kitten\n"
- " with kitten.bodyWeight > 10.0]]>"
+"<![CDATA[from Cat as cat\n"
+" left join cat.kittens as kitten\n"
+" with kitten.bodyWeight > 10.0]]>"
msgstr ""
- "<![CDATA[from Cat as cat \n"
- " left join cat.kittens as kitten \n"
- " with kitten.bodyWeight > 10.0]]>"
-#: index.docbook:137
-msgid "In addition, a \"fetch\" join allows associations or collections of values to be initialized along with their parent objects, using a single select. This is particularly useful in the case of a collection. It effectively overrides the outer join and lazy declarations of the mapping file for associations and collections. See <xref linkend=\"performance-fetching\"/> for more information."
-msgstr "게다가, \"fetch\" join은 값들을 가진 콜렉션들이나 연관관계들이 한 개의 select를 사용하여, 그것들의 부모 객체들에 따라 초기화 되는 것을 허용해준다. 이것은 콜렉션의 경우에 특히 유용하다. 그것은 연관관계들과 콜렉션들에 대한 매핑 파일의 outer join과 lazy 선언들을 효율적으로 오버라이드 시킨다. 추가 정보는 <xref linkend=\"performance-fetching\"/>을 보라."
+#. Tag: para
+#: query_hql.xml:137
+#, no-c-format
+msgid ""
+"In addition, a \"fetch\" join allows associations or collections of values "
+"to be initialized along with their parent objects, using a single select. "
+"This is particularly useful in the case of a collection. It effectively "
+"overrides the outer join and lazy declarations of the mapping file for "
+"associations and collections. See <xref linkend=\"performance-fetching\"/> "
+"for more information."
+msgstr ""
+"게다가, \"fetch\" join은 값들을 가진 콜렉션들이나 연관관계들이 한 개의 select"
+"를 사용하여, 그것들의 부모 객체들에 따라 초기화 되는 것을 허용해준다. 이것은 "
+"콜렉션의 경우에 특히 유용하다. 그것은 연관관계들과 콜렉션들에 대한 매핑 파일"
+"의 outer join과 lazy 선언들을 효율적으로 오버라이드 시킨다. 추가 정보는 "
+"<xref linkend=\"performance-fetching\"/>을 보라."
-#: index.docbook:145
+#. Tag: programlisting
+#: query_hql.xml:145
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as cat\n"
- " inner join fetch cat.mate\n"
- " left join fetch cat.kittens]]>"
+"<![CDATA[from Cat as cat\n"
+" inner join fetch cat.mate\n"
+" left join fetch cat.kittens]]>"
msgstr ""
- "<![CDATA[from Cat as cat \n"
- " inner join fetch cat.mate\n"
- " left join fetch cat.kittens]]>"
-#: index.docbook:147
-msgid "A fetch join does not usually need to assign an alias, because the associated objects should not be used in the <literal>where</literal> clause (or any other clause). Also, the associated objects are not returned directly in the query results. Instead, they may be accessed via the parent object. The only reason we might need an alias is if we are recursively join fetching a further collection:"
-msgstr "fetch join은 대개 alias를 할당할 필요가 없다. 왜냐하면, 연관된 객체들이 <literal>where</literal> 절(또는 어떤 다른 절) 속에 사용되지 않을 것이기 때문이다. 또한 연관된 객체들은 질의 결과들 속에 직접 반환되지 않는다. 대신 그것들은 부모 객체를 통해 접근될 수 있다. 우리가 alias를 필요로 할 수 있는 유일한 이유는 더 많은 콜렉션들을 재귀적으로 조인 페칭시키는 경우이다:"
+#. Tag: para
+#: query_hql.xml:147
+#, no-c-format
+msgid ""
+"A fetch join does not usually need to assign an alias, because the "
+"associated objects should not be used in the <literal>where</literal> clause "
+"(or any other clause). Also, the associated objects are not returned "
+"directly in the query results. Instead, they may be accessed via the parent "
+"object. The only reason we might need an alias is if we are recursively join "
+"fetching a further collection:"
+msgstr ""
+"fetch join은 대개 alias를 할당할 필요가 없다. 왜냐하면, 연관된 객체들이 "
+"<literal>where</literal> 절(또는 어떤 다른 절) 속에 사용되지 않을 것이기 때문"
+"이다. 또한 연관된 객체들은 질의 결과들 속에 직접 반환되지 않는다. 대신 그것들"
+"은 부모 객체를 통해 접근될 수 있다. 우리가 alias를 필요로 할 수 있는 유일한 "
+"이유는 더 많은 콜렉션들을 재귀적으로 조인 페칭시키는 경우이다:"
-#: index.docbook:155
+#. Tag: programlisting
+#: query_hql.xml:155
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as cat\n"
- " inner join fetch cat.mate\n"
- " left join fetch cat.kittens child\n"
- " left join fetch child.kittens]]>"
+"<![CDATA[from Cat as cat\n"
+" inner join fetch cat.mate\n"
+" left join fetch cat.kittens child\n"
+" left join fetch child.kittens]]>"
msgstr ""
- "<![CDATA[from Cat as cat \n"
- " inner join fetch cat.mate\n"
- " left join fetch cat.kittens child\n"
- " left join fetch child.kittens]]>"
-#: index.docbook:157
-msgid "Note that the <literal>fetch</literal> construct may not be used in queries called using <literal>iterate()</literal> (though <literal>scroll()</literal> can be used). Nor should <literal>fetch</literal> be used together with <literal>setMaxResults()</literal> or <literal>setFirstResult()</literal> as these operations are based on the result rows, which usually contain duplicates for eager collection fetching, hence, the number of rows is not what you'd expect. Nor may <literal>fetch</literal> be used together with an ad hoc <literal>with</literal> condition. It is possible to create a cartesian product by join fetching more than one collection in a query, so take care in this case. Join fetching multiple collection roles also sometimes gives unexpected results for bag mappings, so be careful about how you formulate your queries in this case. Finally, note that <literal>full join fetch</literal> and <literal>right join fetch</literal> are not meaningful."
-msgstr "(비록 <literal>scroll()</literal>이 사용될 수 있을지라도) <literal>fetch</literal> 구조체는 <literal>iterate()</literal>를 사용하여 호출되는 질의들 내에 사용될 수 없음을 노트하라. 이들 오퍼레이션들이 결과 행들에 기초하고 있기 때문에 <literal>fetch</literal>는 <literal>setMaxResults()</literal> 또는 <literal>setFirstResult()</literal>과 함께 사용되지 말아야 하며, 그것들(결과 행들)은 대개 각각의 eager 콜렉션 페칭에 대해 중복들을 포함하므로 많은 행들이 당신이 기대하는 것이 아니다. <literal>fetch</literal>는 특별한 용도의 <literal>with</literal> 조건과도 함께 사용될 수 없다.한 개의 질의 내에 하나 이상의 콜렉션을 조인 페칭시켜 카티젼 곱을 생성시키는 것이 가능한데, 이 경우에 주의하라. 다중 콜렉션 role들을 조인 페칭시키는 것은 또한 때때로 bag 매핑들에 대해 �!
�기치 않은 결과들을 가져다주기 때문에, 당신이 이 경우에 당신의 질의들을 처방하는 방법에 대해 주의하라. 마지막으로 <literal>full join fetch</literal>와 <literal>right join fetch</literal>는 의미가 없다."
+#. Tag: para
+#: query_hql.xml:157
+#, no-c-format
+msgid ""
+"Note that the <literal>fetch</literal> construct may not be used in queries "
+"called using <literal>iterate()</literal> (though <literal>scroll()</"
+"literal> can be used). Nor should <literal>fetch</literal> be used together "
+"with <literal>setMaxResults()</literal> or <literal>setFirstResult()</"
+"literal> as these operations are based on the result rows, which usually "
+"contain duplicates for eager collection fetching, hence, the number of rows "
+"is not what you'd expect. Nor may <literal>fetch</literal> be used together "
+"with an ad hoc <literal>with</literal> condition. It is possible to create a "
+"cartesian product by join fetching more than one collection in a query, so "
+"take care in this case. Join fetching multiple collection roles also "
+"sometimes gives unexpected results for bag mappings, so be careful about how "
+"you formulate your queries in this case. Finally, note that <literal>full "
+"join fetch</literal> and <literal>right join fetch</literal> are not "
+"meaningful."
+msgstr ""
+"(비록 <literal>scroll()</literal>이 사용될 수 있을지라도) <literal>fetch</"
+"literal> 구조체는 <literal>iterate()</literal>를 사용하여 호출되는 질의들 내"
+"에 사용될 수 없음을 노트하라. 이들 오퍼레이션들이 결과 행들에 기초하고 있기 "
+"때문에 <literal>fetch</literal>는 <literal>setMaxResults()</literal> 또는 "
+"<literal>setFirstResult()</literal>과 함께 사용되지 말아야 하며, 그것들(결과 "
+"행들)은 대개 각각의 eager 콜렉션 페칭에 대해 중복들을 포함하므로 많은 행들이 "
+"당신이 기대하는 것이 아니다. <literal>fetch</literal>는 특별한 용도의 "
+"<literal>with</literal> 조건과도 함께 사용될 수 없다.한 개의 질의 내에 하나 "
+"이상의 콜렉션을 조인 페칭시켜 카티젼 곱을 생성시키는 것이 가능한데, 이 경우"
+"에 주의하라. 다중 콜렉션 role들을 조인 페칭시키는 것은 또한 때때로 bag 매핑들"
+"에 대해 예기치 않은 결과들을 가져다주기 때문에, 당신이 이 경우에 당신의 질의"
+"들을 처방하는 방법에 대해 주의하라. 마지막으로 <literal>full join fetch</"
+"literal>와 <literal>right join fetch</literal>는 의미가 없다."
-#: index.docbook:172
-msgid "If you are using property-level lazy fetching (with bytecode instrumentation), it is possible to force Hibernate to fetch the lazy properties immediately (in the first query) using <literal>fetch all properties</literal>."
-msgstr "만일 당신이 (바이트코드 방편으로) property-레벨 lazy 페칭을 사용할 경우, Hibernate로 하여금 <literal>fetch all properties</literal>를 사용하여 (첫 번째 질의에서) lazy 프로퍼티들을 즉시 페치하도록 강제시키는 것이 가능하다."
+#. Tag: para
+#: query_hql.xml:172
+#, no-c-format
+msgid ""
+"If you are using property-level lazy fetching (with bytecode "
+"instrumentation), it is possible to force Hibernate to fetch the lazy "
+"properties immediately (in the first query) using <literal>fetch all "
+"properties</literal>."
+msgstr ""
+"만일 당신이 (바이트코드 방편으로) property-레벨 lazy 페칭을 사용할 경우, "
+"Hibernate로 하여금 <literal>fetch all properties</literal>를 사용하여 (첫 번"
+"째 질의에서) lazy 프로퍼티들을 즉시 페치하도록 강제시키는 것이 가능하다."
-#: index.docbook:178
+#. Tag: programlisting
+#: query_hql.xml:178
+#, no-c-format
msgid "<![CDATA[from Document fetch all properties order by name]]>"
-msgstr "<![CDATA[from Document fetch all properties order by name]]>"
+msgstr ""
-#: index.docbook:179
-msgid "<![CDATA[from Document doc fetch all properties where lower(doc.name) like '%cats%']]>"
-msgstr "<![CDATA[from Document doc fetch all properties where lower(doc.name) like '%cats%']]>"
+#. Tag: programlisting
+#: query_hql.xml:179
+#, no-c-format
+msgid ""
+"<![CDATA[from Document doc fetch all properties where lower(doc.name) like '%"
+"cats%']]>"
+msgstr ""
-#: index.docbook:184
+#. Tag: title
+#: query_hql.xml:184
+#, no-c-format
msgid "Forms of join syntax"
msgstr "join 구문의 형식들"
-#: index.docbook:186
-msgid "HQL supports two forms of association joining: <literal>implicit</literal> and <literal>explicit</literal>."
-msgstr "HQL은 두 가지 형식의 연관 조인을 지원한다: <literal>암묵적</literal> 그리고 <literal>명시적</literal>."
+#. Tag: para
+#: query_hql.xml:186
+#, no-c-format
+msgid ""
+"HQL supports two forms of association joining: <literal>implicit</literal> "
+"and <literal>explicit</literal>."
+msgstr ""
+"HQL은 두 가지 형식의 연관 조인을 지원한다: <literal>암묵적</literal> 그리고 "
+"<literal>명시적</literal>."
-#: index.docbook:190
-msgid "The queries shown in the previous section all use the <literal>explicit</literal> form where the join keyword is explicitly used in the from clause. This is the recommended form."
-msgstr "앞의 절에서 보여진 질의들은 모두 join 키워드가 from 절 내에 명시적으로 사용되는 <literal>명시적인</literal> 형식을 사용한다. 이것은 권장되는 형식이다."
+#. Tag: para
+#: query_hql.xml:190
+#, no-c-format
+msgid ""
+"The queries shown in the previous section all use the <literal>explicit</"
+"literal> form where the join keyword is explicitly used in the from clause. "
+"This is the recommended form."
+msgstr ""
+"앞의 절에서 보여진 질의들은 모두 join 키워드가 from 절 내에 명시적으로 사용되"
+"는 <literal>명시적인</literal> 형식을 사용한다. 이것은 권장되는 형식이다."
-#: index.docbook:195
-msgid "The <literal>implicit</literal> form does not use the join keyword. Instead, the associations are \"dereferenced\" using dot-notation. <literal>implicit</literal> joins can appear in any of the HQL clauses. <literal>implicit</literal> join result in inner joins in the resulting SQL statement."
-msgstr "<literal>함축적인</literal> 형식은 join 키워드를 사용하지 않는다. 대신에, 연관들은 dot(.) 표기를 사용하여 \"dot-참조된다(dereferenced)\". <literal>함축적인</literal> 조인들은 임의의 HQL 절들내에 나타날 수 있다. <literal>함축적인</literal> join은 결과되는 SQL 문장에서 inner join으로 귀결된다."
+#. Tag: para
+#: query_hql.xml:195
+#, no-c-format
+msgid ""
+"The <literal>implicit</literal> form does not use the join keyword. Instead, "
+"the associations are \"dereferenced\" using dot-notation. <literal>implicit</"
+"literal> joins can appear in any of the HQL clauses. <literal>implicit</"
+"literal> join result in inner joins in the resulting SQL statement."
+msgstr ""
+"<literal>함축적인</literal> 형식은 join 키워드를 사용하지 않는다. 대신에, 연"
+"관들은 dot(.) 표기를 사용하여 \"dot-참조된다(dereferenced)\". <literal>함축적"
+"인</literal> 조인들은 임의의 HQL 절들내에 나타날 수 있다. <literal>함축적인</"
+"literal> join은 결과되는 SQL 문장에서 inner join으로 귀결된다."
-#: index.docbook:202
+#. Tag: programlisting
+#: query_hql.xml:202
+#, no-c-format
msgid "<![CDATA[from Cat as cat where cat.mate.name like '%s%']]>"
-msgstr "<![CDATA[from Cat as cat where cat.mate.name like '%s%']]>"
+msgstr ""
-#: index.docbook:206
+#. Tag: title
+#: query_hql.xml:206
+#, no-c-format
msgid "Refering to identifier property"
msgstr "식별자 속성 참조하기"
-#: index.docbook:208
-msgid "There are, generally speaking, 2 ways to refer to an entity's identifier property:"
-msgstr "개략적으로 말하자면, 엔티티의 식별자 속성을 참조하는 2가지 방법들이 존재한다:"
+#. Tag: para
+#: query_hql.xml:208
+#, no-c-format
+msgid ""
+"There are, generally speaking, 2 ways to refer to an entity's identifier "
+"property:"
+msgstr ""
+"개략적으로 말하자면, 엔티티의 식별자 속성을 참조하는 2가지 방법들이 존재한다:"
-#: index.docbook:213
-msgid "The special property (lowercase) <literal>id</literal> may be used to reference the identifier property of an entity <emphasis>provided that entity does not define a non-identifier property named id</emphasis>."
-msgstr "<emphasis>엔티티가 id로 명명된 비식별자 속성을 정의하지 않는다고 가정하면</emphasis> 특별한 속성(소문자) <literal>id</literal>가 엔티티의 식별자 속성을 참조하는데 사용될 수 있다."
+#. Tag: para
+#: query_hql.xml:213
+#, no-c-format
+msgid ""
+"The special property (lowercase) <literal>id</literal> may be used to "
+"reference the identifier property of an entity <emphasis>provided that "
+"entity does not define a non-identifier property named id</emphasis>."
+msgstr ""
+"<emphasis>엔티티가 id로 명명된 비식별자 속성을 정의하지 않는다고 가정하면</"
+"emphasis> 특별한 속성(소문자) <literal>id</literal>가 엔티티의 식별자 속성을 "
+"참조하는데 사용될 수 있다."
-#: index.docbook:220
-msgid "If the entity defines a named identifier property, you may use that property name."
-msgstr "만일 그 엔티티가 명명된 식별자 속성을 정의하는 경우, 당신은 그 속성 이름을 사용할 수도 있다."
+#. Tag: para
+#: query_hql.xml:220
+#, no-c-format
+msgid ""
+"If the entity defines a named identifier property, you may use that property "
+"name."
+msgstr ""
+"만일 그 엔티티가 명명된 식별자 속성을 정의하는 경우, 당신은 그 속성 이름을 사"
+"용할 수도 있다."
-#: index.docbook:226
-msgid "References to composite identifier properties follow the same naming rules. If the entity has a non-identifier property named id, the composite identifier property can only be referenced by its defined named; otherwise, the special <literal>id</literal> property can be used to rerference the identifier property."
-msgstr "composite 식별자 속성들에 대한 참조들은 동일한 네이밍 규칙들을 따른다. 만일 그 엔티티가 id로 명명된 비식별자를 갖고 있을 경우, composite 속성은 오직 그것의 정의된 명명에 의해 참조될 수 있다; 그밖의 경우 특별한 <literal>id</literal> 속성이 식별자 속성을 참조하는데 사용될 수 있다."
+#. Tag: para
+#: query_hql.xml:226
+#, no-c-format
+msgid ""
+"References to composite identifier properties follow the same naming rules. "
+"If the entity has a non-identifier property named id, the composite "
+"identifier property can only be referenced by its defined named; otherwise, "
+"the special <literal>id</literal> property can be used to rerference the "
+"identifier property."
+msgstr ""
+"composite 식별자 속성들에 대한 참조들은 동일한 네이밍 규칙들을 따른다. 만일 "
+"그 엔티티가 id로 명명된 비식별자를 갖고 있을 경우, composite 속성은 오직 그것"
+"의 정의된 명명에 의해 참조될 수 있다; 그밖의 경우 특별한 <literal>id</"
+"literal> 속성이 식별자 속성을 참조하는데 사용될 수 있다."
-#: index.docbook:233
-msgid "Note: this has changed significantly starting in version 3.2.2. In previous versions, <literal>id</literal> <emphasis>always</emphasis> referred to the identifier property no matter what its actual name. A ramification of that decision was that non-identifier properties named <literal>id</literal> could never be referenced in Hibernate queries."
-msgstr "노트: 이것은 버전 3.2.2에서 시작될 때 현격하게 변경되었다. 이전 버전들에서, <literal>id</literal>는 <emphasis>항상</emphasis> 그것의 실제 이름에 관계없이 식별자 속성을 참조했다. 그 결정의 분기점은 <literal>id</literal>로 명명된 비식별자 속성들이 Hibernate 질의들 내에서 결코 참조될 수 없었다는 점이었다."
+#. Tag: para
+#: query_hql.xml:233
+#, fuzzy, no-c-format
+msgid ""
+"Note: this has changed significantly starting in version 3.2.2. In previous "
+"versions, <literal>id</literal> <emphasis>always</emphasis> referred to the "
+"identifier property no matter what its actual name. A ramification of that "
+"decision was that non-identifier properties named <literal>id</literal> "
+"could never be referenced in Hibernate queries."
+msgstr ""
+"노트: 이것은 버전 3.2.2에서 시작될 때 현격하게 변경되었다. 이전 버전들에서, "
+"<literal>id</literal>는 <emphasis>항상</emphasis> 그것의 실제 이름에 관계없"
+"이 식별자 속성을 참조했다. 그 결정의 분기점은 <literal>id</literal>로 명명된 "
+"비식별자 속성들이 Hibernate 질의들 내에서 결코 참조될 수 없었다는 점이었다."
-#: index.docbook:242
+#. Tag: title
+#: query_hql.xml:242
+#, no-c-format
msgid "The select clause"
msgstr "select 절"
-#: index.docbook:244
-msgid "The <literal>select</literal> clause picks which objects and properties to return in the query result set. Consider:"
-msgstr "<literal>select</literal> 절은 질의 결과 셋 속에 반환할 객체들과 프로퍼티들이 어느 것인지를 골라 내도록 강제한다. 다음을 검토하자:"
+#. Tag: para
+#: query_hql.xml:244
+#, no-c-format
+msgid ""
+"The <literal>select</literal> clause picks which objects and properties to "
+"return in the query result set. Consider:"
+msgstr ""
+"<literal>select</literal> 절은 질의 결과 셋 속에 반환할 객체들과 프로퍼티들"
+"이 어느 것인지를 골라 내도록 강제한다. 다음을 검토하자:"
-#: index.docbook:249
+#. Tag: programlisting
+#: query_hql.xml:249
+#, no-c-format
msgid ""
- "<![CDATA[select mate\n"
- "from Cat as cat\n"
- " inner join cat.mate as mate]]>"
+"<![CDATA[select mate\n"
+"from Cat as cat\n"
+" inner join cat.mate as mate]]>"
msgstr ""
- "<![CDATA[select mate \n"
- "from Cat as cat \n"
- " inner join cat.mate as mate]]>"
-#: index.docbook:251
-msgid "The query will select <literal>mate</literal>s of other <literal>Cat</literal>s. Actually, you may express this query more compactly as:"
-msgstr "질의는 다른 <literal>Cat</literal>들의 <literal>mate</literal>들을 select 할 것이다. 실제로 당신은 이 질의들을 다음과 같이 보다 축약형으로 표현할수도 있다:"
+#. Tag: para
+#: query_hql.xml:251
+#, no-c-format
+msgid ""
+"The query will select <literal>mate</literal>s of other <literal>Cat</"
+"literal>s. Actually, you may express this query more compactly as:"
+msgstr ""
+"질의는 다른 <literal>Cat</literal>들의 <literal>mate</literal>들을 select 할 "
+"것이다. 실제로 당신은 이 질의들을 다음과 같이 보다 축약형으로 표현할수도 있"
+"다:"
-#: index.docbook:256
+#. Tag: programlisting
+#: query_hql.xml:256
+#, no-c-format
msgid "<![CDATA[select cat.mate from Cat cat]]>"
-msgstr "<![CDATA[select cat.mate from Cat cat]]>"
+msgstr ""
-#: index.docbook:258
-msgid "Queries may return properties of any value type including properties of component type:"
-msgstr "질의들은 컴포넌트 타입의 프로퍼티들을 포함하는 임의의 값 타입의 프로퍼티들을 반환할 수도 있다:"
+#. Tag: para
+#: query_hql.xml:258
+#, no-c-format
+msgid ""
+"Queries may return properties of any value type including properties of "
+"component type:"
+msgstr ""
+"질의들은 컴포넌트 타입의 프로퍼티들을 포함하는 임의의 값 타입의 프로퍼티들을 "
+"반환할 수도 있다:"
-#: index.docbook:262
+#. Tag: programlisting
+#: query_hql.xml:262
+#, no-c-format
msgid ""
- "<![CDATA[select cat.name from DomesticCat cat\n"
- "where cat.name like 'fri%']]>"
+"<![CDATA[select cat.name from DomesticCat cat\n"
+"where cat.name like 'fri%']]>"
msgstr ""
- "<![CDATA[select cat.name from DomesticCat cat\n"
- "where cat.name like 'fri%']]>"
-#: index.docbook:264
+#. Tag: programlisting
+#: query_hql.xml:264
+#, no-c-format
msgid "<![CDATA[select cust.name.firstName from Customer as cust]]>"
-msgstr "<![CDATA[select cust.name.firstName from Customer as cust]]>"
+msgstr ""
-#: index.docbook:266
-msgid "Queries may return multiple objects and/or properties as an array of type <literal>Object[]</literal>,"
-msgstr "<literal>Family</literal> 클래스가 적당한 생성자를 갖고 있음을 가정하면, 질의들은 여러 객체들 그리고/또는 프로퍼티들을 <literal>Object[]</literal> 타입의 배열로서,"
+#. Tag: para
+#: query_hql.xml:266
+#, no-c-format
+msgid ""
+"Queries may return multiple objects and/or properties as an array of type "
+"<literal>Object[]</literal>,"
+msgstr ""
+"<literal>Family</literal> 클래스가 적당한 생성자를 갖고 있음을 가정하면, 질의"
+"들은 여러 객체들 그리고/또는 프로퍼티들을 <literal>Object[]</literal> 타입의 "
+"배열로서,"
-#: index.docbook:271
+#. Tag: programlisting
+#: query_hql.xml:271
+#, no-c-format
msgid ""
- "<![CDATA[select mother, offspr, mate.name\n"
- "from DomesticCat as mother\n"
- " inner join mother.mate as mate\n"
- " left outer join mother.kittens as offspr]]>"
+"<![CDATA[select mother, offspr, mate.name\n"
+"from DomesticCat as mother\n"
+" inner join mother.mate as mate\n"
+" left outer join mother.kittens as offspr]]>"
msgstr ""
- "<![CDATA[select mother, offspr, mate.name \n"
- "from DomesticCat as mother\n"
- " inner join mother.mate as mate\n"
- " left outer join mother.kittens as offspr]]>"
-#: index.docbook:273
+#. Tag: para
+#: query_hql.xml:273
+#, no-c-format
msgid "or as a <literal>List</literal>,"
msgstr "또는 <literal>List</literal>로서,"
-#: index.docbook:277
+#. Tag: programlisting
+#: query_hql.xml:277
+#, no-c-format
msgid ""
- "<![CDATA[select new list(mother, offspr, mate.name)\n"
- "from DomesticCat as mother\n"
- " inner join mother.mate as mate\n"
- " left outer join mother.kittens as offspr]]>"
+"<![CDATA[select new list(mother, offspr, mate.name)\n"
+"from DomesticCat as mother\n"
+" inner join mother.mate as mate\n"
+" left outer join mother.kittens as offspr]]>"
msgstr ""
- "<![CDATA[select new list(mother, offspr, mate.name)\n"
- "from DomesticCat as mother\n"
- " inner join mother.mate as mate\n"
- " left outer join mother.kittens as offspr]]>"
-#: index.docbook:279
+#. Tag: para
+#: query_hql.xml:279
+#, no-c-format
msgid "or as an actual typesafe Java object,"
msgstr "또는 실제 typesafe 자바 객체로서,"
-#: index.docbook:283
+#. Tag: programlisting
+#: query_hql.xml:283
+#, no-c-format
msgid ""
- "<![CDATA[select new Family(mother, mate, offspr)\n"
- "from DomesticCat as mother\n"
- " join mother.mate as mate\n"
- " left join mother.kittens as offspr]]>"
+"<![CDATA[select new Family(mother, mate, offspr)\n"
+"from DomesticCat as mother\n"
+" join mother.mate as mate\n"
+" left join mother.kittens as offspr]]>"
msgstr ""
- "<![CDATA[select new Family(mother, mate, offspr)\n"
- "from DomesticCat as mother\n"
- " join mother.mate as mate\n"
- " left join mother.kittens as offspr]]>"
-#: index.docbook:285
-msgid "assuming that the class <literal>Family</literal> has an appropriate constructor."
+#. Tag: para
+#: query_hql.xml:285
+#, no-c-format
+msgid ""
+"assuming that the class <literal>Family</literal> has an appropriate "
+"constructor."
msgstr "반환할 수도 있다."
-#: index.docbook:289
-msgid "You may assign aliases to selected expressions using <literal>as</literal>:"
-msgstr "당신은 <literal>as</literal>를 사용하여 select되는 표현식들에 alias들을 할당할 수 있다:"
+#. Tag: para
+#: query_hql.xml:289
+#, no-c-format
+msgid ""
+"You may assign aliases to selected expressions using <literal>as</literal>:"
+msgstr ""
+"당신은 <literal>as</literal>를 사용하여 select되는 표현식들에 alias들을 할당"
+"할 수 있다:"
-#: index.docbook:293
+#. Tag: programlisting
+#: query_hql.xml:293
+#, no-c-format
msgid ""
- "<![CDATA[select max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n\n"
- "from Cat cat]]>"
+"<![CDATA[select max(bodyWeight) as max, min(bodyWeight) as min, count(*) as "
+"n\n"
+"from Cat cat]]>"
msgstr ""
- "<![CDATA[select max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n\n"
- "from Cat cat]]>"
-#: index.docbook:295
-msgid "This is most useful when used together with <literal>select new map</literal>:"
-msgstr "다음은 <literal>select new map</literal>과 함께 사용될 때 가장 유용하다:"
+#. Tag: para
+#: query_hql.xml:295
+#, no-c-format
+msgid ""
+"This is most useful when used together with <literal>select new map</"
+"literal>:"
+msgstr ""
+"다음은 <literal>select new map</literal>과 함께 사용될 때 가장 유용하다:"
-#: index.docbook:299
+#. Tag: programlisting
+#: query_hql.xml:299
+#, no-c-format
msgid ""
- "<![CDATA[select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n )\n"
- "from Cat cat]]>"
+"<![CDATA[select new map( max(bodyWeight) as max, min(bodyWeight) as min, "
+"count(*) as n )\n"
+"from Cat cat]]>"
msgstr ""
- "<![CDATA[select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n )\n"
- "from Cat cat]]>"
-#: index.docbook:301
-msgid "This query returns a <literal>Map</literal> from aliases to selected values."
-msgstr "이 질의는 select된 값들에 대한 alias로부터 한 개의 <literal>Map</literal>을 반환한다."
+#. Tag: para
+#: query_hql.xml:301
+#, no-c-format
+msgid ""
+"This query returns a <literal>Map</literal> from aliases to selected values."
+msgstr ""
+"이 질의는 select된 값들에 대한 alias로부터 한 개의 <literal>Map</literal>을 "
+"반환한다."
-#: index.docbook:308
+#. Tag: title
+#: query_hql.xml:308
+#, no-c-format
msgid "Aggregate functions"
msgstr "집계 함수들"
-#: index.docbook:310
-msgid "HQL queries may even return the results of aggregate functions on properties:"
-msgstr "HQL 질의들은 프로퍼티들에 대한 집계(aggregate) 함수들의 결과들을 반환할수도 있다:"
+#. Tag: para
+#: query_hql.xml:310
+#, no-c-format
+msgid ""
+"HQL queries may even return the results of aggregate functions on properties:"
+msgstr ""
+"HQL 질의들은 프로퍼티들에 대한 집계(aggregate) 함수들의 결과들을 반환할수도 "
+"있다:"
-#: index.docbook:314
+#. Tag: programlisting
+#: query_hql.xml:314
+#, no-c-format
msgid ""
- "<![CDATA[select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat)\n"
- "from Cat cat]]>"
+"<![CDATA[select avg(cat.weight), sum(cat.weight), max(cat.weight), count"
+"(cat)\n"
+"from Cat cat]]>"
msgstr ""
- "<![CDATA[select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat)\n"
- "from Cat cat]]>"
-#: index.docbook:325
+#. Tag: para
+#: query_hql.xml:325
+#, no-c-format
msgid "The supported aggregate functions are"
msgstr "지원되는 집계 함수들은 다음과 같다"
-#: index.docbook:332
+#. Tag: literal
+#: query_hql.xml:332
+#, no-c-format
msgid "avg(...), sum(...), min(...), max(...)"
msgstr "avg(...), sum(...), min(...), max(...)"
-#: index.docbook:337
+#. Tag: literal
+#: query_hql.xml:337
+#, no-c-format
msgid "count(*)"
msgstr "count(*)"
-#: index.docbook:342
+#. Tag: literal
+#: query_hql.xml:342
+#, no-c-format
msgid "count(...), count(distinct ...), count(all...)"
msgstr "count(...), count(distinct ...), count(all...)"
-#: index.docbook:347
-msgid "You may use arithmetic operators, concatenation, and recognized SQL functions in the select clause:"
-msgstr "당신은 select 절 속에 산술 연산자들, 연결 연산자, 그리고 인지된 SQL 함수들을 사용할 수 있다:"
+#. Tag: para
+#: query_hql.xml:347
+#, no-c-format
+msgid ""
+"You may use arithmetic operators, concatenation, and recognized SQL "
+"functions in the select clause:"
+msgstr ""
+"당신은 select 절 속에 산술 연산자들, 연결 연산자, 그리고 인지된 SQL 함수들을 "
+"사용할 수 있다:"
-#: index.docbook:352
+#. Tag: programlisting
+#: query_hql.xml:352
+#, no-c-format
msgid ""
- "<![CDATA[select cat.weight + sum(kitten.weight)\n"
- "from Cat cat\n"
- " join cat.kittens kitten\n"
- "group by cat.id, cat.weight]]>"
+"<![CDATA[select cat.weight + sum(kitten.weight)\n"
+"from Cat cat\n"
+" join cat.kittens kitten\n"
+"group by cat.id, cat.weight]]>"
msgstr ""
- "<![CDATA[select cat.weight + sum(kitten.weight) \n"
- "from Cat cat \n"
- " join cat.kittens kitten\n"
- "group by cat.id, cat.weight]]>"
-#: index.docbook:354
-msgid "<![CDATA[select firstName||' '||initial||' '||upper(lastName) from Person]]>"
-msgstr "<![CDATA[select firstName||' '||initial||' '||upper(lastName) from Person]]>"
+#. Tag: programlisting
+#: query_hql.xml:354
+#, no-c-format
+msgid ""
+"<![CDATA[select firstName||' '||initial||' '||upper(lastName) from Person]]>"
+msgstr ""
-#: index.docbook:356
-msgid "The <literal>distinct</literal> and <literal>all</literal> keywords may be used and have the same semantics as in SQL."
-msgstr "<literal>distinct</literal> 키워드와 all <literal>all</literal>가 사용될 수 있고 SQL의 경우와 동일한 의미를 갖는다."
+#. Tag: para
+#: query_hql.xml:356
+#, no-c-format
+msgid ""
+"The <literal>distinct</literal> and <literal>all</literal> keywords may be "
+"used and have the same semantics as in SQL."
+msgstr ""
+"<literal>distinct</literal> 키워드와 all <literal>all</literal>가 사용될 수 "
+"있고 SQL의 경우와 동일한 의미를 갖는다."
-#: index.docbook:361
+#. Tag: programlisting
+#: query_hql.xml:361
+#, no-c-format
msgid ""
- "<![CDATA[select distinct cat.name from Cat cat\n"
- "\n"
- "select count(distinct cat.name), count(cat) from Cat cat]]>"
+"<![CDATA[select distinct cat.name from Cat cat\n"
+"\n"
+"select count(distinct cat.name), count(cat) from Cat cat]]>"
msgstr ""
- "<![CDATA[select distinct cat.name from Cat cat\n"
- "\n"
- "select count(distinct cat.name), count(cat) from Cat cat]]>"
-#: index.docbook:366
+#. Tag: title
+#: query_hql.xml:366
+#, no-c-format
msgid "Polymorphic queries"
msgstr "Polymorphic(다형성) 질의들"
-#: index.docbook:368
+#. Tag: para
+#: query_hql.xml:368
+#, no-c-format
msgid "A query like:"
msgstr "다음과 같은 질의:"
-#: index.docbook:374
-msgid "returns instances not only of <literal>Cat</literal>, but also of subclasses like <literal>DomesticCat</literal>. Hibernate queries may name <emphasis>any</emphasis> Java class or interface in the <literal>from</literal> clause. The query will return instances of all persistent classes that extend that class or implement the interface. The following query would return all persistent objects:"
-msgstr "은 <literal>Cat</literal>의 인스턴스들 뿐만 아니라, 또한 <literal>DomesticCat</literal>과 같은 서브클래스들 또한 반환한다. Hibernate 질의들은 <literal>from</literal> 절 내에 <emphasis>임의의</emphasis> 자바 클래스나 인터페이스를 명명할 수 있다. 질의는 그 클래스를 확장하거나 그 인터페이스를 구현하는 모든 영속 클래스들의 인스턴스들을 반환할 것이다. 다음 질의는 모든 영속 객체들을 반환할 것이다:"
+#. Tag: para
+#: query_hql.xml:374
+#, no-c-format
+msgid ""
+"returns instances not only of <literal>Cat</literal>, but also of subclasses "
+"like <literal>DomesticCat</literal>. Hibernate queries may name "
+"<emphasis>any</emphasis> Java class or interface in the <literal>from</"
+"literal> clause. The query will return instances of all persistent classes "
+"that extend that class or implement the interface. The following query would "
+"return all persistent objects:"
+msgstr ""
+"은 <literal>Cat</literal>의 인스턴스들 뿐만 아니라, 또한 "
+"<literal>DomesticCat</literal>과 같은 서브클래스들 또한 반환한다. Hibernate "
+"질의들은 <literal>from</literal> 절 내에 <emphasis>임의의</emphasis> 자바 클"
+"래스나 인터페이스를 명명할 수 있다. 질의는 그 클래스를 확장하거나 그 인터페이"
+"스를 구현하는 모든 영속 클래스들의 인스턴스들을 반환할 것이다. 다음 질의는 모"
+"든 영속 객체들을 반환할 것이다:"
-#: index.docbook:382
+#. Tag: programlisting
+#: query_hql.xml:382
+#, no-c-format
msgid "<![CDATA[from java.lang.Object o]]>"
-msgstr "<![CDATA[from java.lang.Object o]]>"
+msgstr ""
-#: index.docbook:384
-msgid "The interface <literal>Named</literal> might be implemented by various persistent classes:"
-msgstr "인터페이스 <literal>Named</literal>는 여러 가지 영속 클래스들에 의해 구현될 수도 있다:"
+#. Tag: para
+#: query_hql.xml:384
+#, no-c-format
+msgid ""
+"The interface <literal>Named</literal> might be implemented by various "
+"persistent classes:"
+msgstr ""
+"인터페이스 <literal>Named</literal>는 여러 가지 영속 클래스들에 의해 구현될 "
+"수도 있다:"
-#: index.docbook:389
+#. Tag: programlisting
+#: query_hql.xml:389
+#, no-c-format
msgid "<![CDATA[from Named n, Named m where n.name = m.name]]>"
-msgstr "<![CDATA[from Named n, Named m where n.name = m.name]]>"
+msgstr ""
-#: index.docbook:391
-msgid "Note that these last two queries will require more than one SQL <literal>SELECT</literal>. This means that the <literal>order by</literal> clause does not correctly order the whole result set. (It also means you can't call these queries using <literal>Query.scroll()</literal>.)"
-msgstr "이들 마지막 두 개의 질의들은 하나 이상의 SQL <literal>SELECT</literal>를 필요로 할 것임을 노트하라. 이것은 <literal>order by</literal> 절이 정확하게 전체 결과 셋을 순서지우지 않음을 의미한다.(그것은 또한 당신이 <literal>Query.scroll()</literal>을 사용하여 이들 질의들을 호출할 수 없음을 의미한다)."
+#. Tag: para
+#: query_hql.xml:391
+#, no-c-format
+msgid ""
+"Note that these last two queries will require more than one SQL "
+"<literal>SELECT</literal>. This means that the <literal>order by</literal> "
+"clause does not correctly order the whole result set. (It also means you "
+"can't call these queries using <literal>Query.scroll()</literal>.)"
+msgstr ""
+"이들 마지막 두 개의 질의들은 하나 이상의 SQL <literal>SELECT</literal>를 필요"
+"로 할 것임을 노트하라. 이것은 <literal>order by</literal> 절이 정확하게 전체 "
+"결과 셋을 순서지우지 않음을 의미한다.(그것은 또한 당신이 <literal>Query."
+"scroll()</literal>을 사용하여 이들 질의들을 호출할 수 없음을 의미한다)."
-#: index.docbook:400
+#. Tag: title
+#: query_hql.xml:400
+#, no-c-format
msgid "The where clause"
msgstr "where 절"
-#: index.docbook:402
-msgid "The <literal>where</literal> clause allows you to narrow the list of instances returned. If no alias exists, you may refer to properties by name:"
-msgstr "<literal>where</literal> 절은 반환된 인스턴스들의 목록을 제한시키는 것을 당신에게 허용해준다. 만일 alias가 존재하지 않을 경우, 당신은 이름에 의해 프로퍼티들을 참조할 수도 있다:"
+#. Tag: para
+#: query_hql.xml:402
+#, no-c-format
+msgid ""
+"The <literal>where</literal> clause allows you to narrow the list of "
+"instances returned. If no alias exists, you may refer to properties by name:"
+msgstr ""
+"<literal>where</literal> 절은 반환된 인스턴스들의 목록을 제한시키는 것을 당신"
+"에게 허용해준다. 만일 alias가 존재하지 않을 경우, 당신은 이름에 의해 프로퍼티"
+"들을 참조할 수도 있다:"
-#: index.docbook:407
+#. Tag: programlisting
+#: query_hql.xml:407
+#, no-c-format
msgid "<![CDATA[from Cat where name='Fritz']]>"
-msgstr "<![CDATA[from Cat where name='Fritz']]>"
+msgstr ""
-#: index.docbook:409
+#. Tag: para
+#: query_hql.xml:409
+#, no-c-format
msgid "If there is an alias, use a qualified property name:"
-msgstr "만일 한 개의 alias가 존재할 경우, 하나의 수식어가 붙은 프로퍼티 이름을 사용하라:"
+msgstr ""
+"만일 한 개의 alias가 존재할 경우, 하나의 수식어가 붙은 프로퍼티 이름을 사용하"
+"라:"
-#: index.docbook:413
+#. Tag: programlisting
+#: query_hql.xml:413
+#, no-c-format
msgid "<![CDATA[from Cat as cat where cat.name='Fritz']]>"
-msgstr "<![CDATA[from Cat as cat where cat.name='Fritz']]>"
+msgstr ""
-#: index.docbook:415
+#. Tag: para
+#: query_hql.xml:415
+#, no-c-format
msgid "returns instances of <literal>Cat</literal> named 'Fritz'."
msgstr "는 'Fritz'로 명명된 <literal>Cat</literal>의 인스턴스들을 반환한다."
-#: index.docbook:419
+#. Tag: programlisting
+#: query_hql.xml:419
+#, no-c-format
msgid ""
- "<![CDATA[select foo\n"
- "from Foo foo, Bar bar\n"
- "where foo.startDate = bar.date]]>"
+"<![CDATA[select foo\n"
+"from Foo foo, Bar bar\n"
+"where foo.startDate = bar.date]]>"
msgstr ""
- "<![CDATA[select foo \n"
- "from Foo foo, Bar bar\n"
- "where foo.startDate = bar.date]]>"
-#: index.docbook:421
-msgid "will return all instances of <literal>Foo</literal> for which there exists an instance of <literal>bar</literal> with a <literal>date</literal> property equal to the <literal>startDate</literal> property of the <literal>Foo</literal>. Compound path expressions make the <literal>where</literal> clause extremely powerful. Consider:"
-msgstr "는 <literal>Foo</literal>의 <literal>startDate</literal> 프로퍼티와 동일한 <literal>date</literal> 프로퍼티를 가진 <literal>bar</literal>의 인스턴스가 존재하는 <literal>Foo</literal>의 모든 인스턴스를 반환할 것이다. 합성 경로 표현식들은 <literal>where</literal> 절을 매우 강력하게 만들어준다. 다음을 검토하자:"
+#. Tag: para
+#: query_hql.xml:421
+#, no-c-format
+msgid ""
+"will return all instances of <literal>Foo</literal> for which there exists "
+"an instance of <literal>bar</literal> with a <literal>date</literal> "
+"property equal to the <literal>startDate</literal> property of the "
+"<literal>Foo</literal>. Compound path expressions make the <literal>where</"
+"literal> clause extremely powerful. Consider:"
+msgstr ""
+"는 <literal>Foo</literal>의 <literal>startDate</literal> 프로퍼티와 동일한 "
+"<literal>date</literal> 프로퍼티를 가진 <literal>bar</literal>의 인스턴스가 "
+"존재하는 <literal>Foo</literal>의 모든 인스턴스를 반환할 것이다. 합성 경로 표"
+"현식들은 <literal>where</literal> 절을 매우 강력하게 만들어준다. 다음을 검토"
+"하자:"
-#: index.docbook:430
+#. Tag: programlisting
+#: query_hql.xml:430
+#, no-c-format
msgid "<![CDATA[from Cat cat where cat.mate.name is not null]]>"
-msgstr "<![CDATA[from Cat cat where cat.mate.name is not null]]>"
+msgstr ""
-#: index.docbook:432
-msgid "This query translates to an SQL query with a table (inner) join. If you were to write something like"
-msgstr "이 질의는 테이블 (inner) join을 가진 SQL 질의로 번역된다. 만일 당신이 다음과 같은 어떤 것을 작성했다면"
+#. Tag: para
+#: query_hql.xml:432
+#, no-c-format
+msgid ""
+"This query translates to an SQL query with a table (inner) join. If you were "
+"to write something like"
+msgstr ""
+"이 질의는 테이블 (inner) join을 가진 SQL 질의로 번역된다. 만일 당신이 다음과 "
+"같은 어떤 것을 작성했다면"
-#: index.docbook:437
+#. Tag: programlisting
+#: query_hql.xml:437
+#, no-c-format
msgid ""
- "<![CDATA[from Foo foo\n"
- "where foo.bar.baz.customer.address.city is not null]]>"
+"<![CDATA[from Foo foo\n"
+"where foo.bar.baz.customer.address.city is not null]]>"
msgstr ""
- "<![CDATA[from Foo foo \n"
- "where foo.bar.baz.customer.address.city is not null]]>"
-#: index.docbook:439
-msgid "you would end up with a query that would require four table joins in SQL."
-msgstr "당신은 SQL에서 네 개의 테이블 join들을 필요로 하는 하나의 질의로 끝낼 것이다."
+#. Tag: para
+#: query_hql.xml:439
+#, no-c-format
+msgid ""
+"you would end up with a query that would require four table joins in SQL."
+msgstr ""
+"당신은 SQL에서 네 개의 테이블 join들을 필요로 하는 하나의 질의로 끝낼 것이다."
-#: index.docbook:443
-msgid "The <literal>=</literal> operator may be used to compare not only properties, but also instances:"
-msgstr "<literal>=</literal> 연산자는 프로퍼티들 뿐만 아니라 또한 인스턴스들을 비교하는데 사용될 수 있다:"
+#. Tag: para
+#: query_hql.xml:443
+#, no-c-format
+msgid ""
+"The <literal>=</literal> operator may be used to compare not only "
+"properties, but also instances:"
+msgstr ""
+"<literal>=</literal> 연산자는 프로퍼티들 뿐만 아니라 또한 인스턴스들을 비교하"
+"는데 사용될 수 있다:"
-#: index.docbook:448
+#. Tag: programlisting
+#: query_hql.xml:448
+#, no-c-format
msgid "<![CDATA[from Cat cat, Cat rival where cat.mate = rival.mate]]>"
-msgstr "<![CDATA[from Cat cat, Cat rival where cat.mate = rival.mate]]>"
+msgstr ""
-#: index.docbook:450
+#. Tag: programlisting
+#: query_hql.xml:450
+#, no-c-format
msgid ""
- "<![CDATA[select cat, mate\n"
- "from Cat cat, Cat mate\n"
- "where cat.mate = mate]]>"
+"<![CDATA[select cat, mate\n"
+"from Cat cat, Cat mate\n"
+"where cat.mate = mate]]>"
msgstr ""
- "<![CDATA[select cat, mate \n"
- "from Cat cat, Cat mate\n"
- "where cat.mate = mate]]>"
-#: index.docbook:452
-msgid "The special property (lowercase) <literal>id</literal> may be used to reference the unique identifier of an object. See <xref linkend=\"queryhql-identifier-property\"/> for more information."
-msgstr "특별한 프로퍼티(소문자) <literal>id</literal>는 객체의 유일 식별자를 참조하는데 사용될 수 있다. 추가 정보는 <xref linkend=\"queryhql-identifier-property\"/>를 보라."
+#. Tag: para
+#: query_hql.xml:452
+#, no-c-format
+msgid ""
+"The special property (lowercase) <literal>id</literal> may be used to "
+"reference the unique identifier of an object. See <xref linkend=\"queryhql-"
+"identifier-property\"/> for more information."
+msgstr ""
+"특별한 프로퍼티(소문자) <literal>id</literal>는 객체의 유일 식별자를 참조하는"
+"데 사용될 수 있다. 추가 정보는 <xref linkend=\"queryhql-identifier-property"
+"\"/>를 보라."
-#: index.docbook:458
+#. Tag: programlisting
+#: query_hql.xml:458
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as cat where cat.id = 123\n"
- "\n"
- "from Cat as cat where cat.mate.id = 69]]>"
+"<![CDATA[from Cat as cat where cat.id = 123\n"
+"\n"
+"from Cat as cat where cat.mate.id = 69]]>"
msgstr ""
- "<![CDATA[from Cat as cat where cat.id = 123\n"
- "\n"
- "from Cat as cat where cat.mate.id = 69]]>"
-#: index.docbook:460
+#. Tag: para
+#: query_hql.xml:460
+#, no-c-format
msgid "The second query is efficient. No table join is required!"
msgstr "두 번째 질의가 효율적이다. 테이블 join이 필요 없다!"
-#: index.docbook:464
-msgid "Properties of composite identifiers may also be used. Suppose <literal>Person</literal> has a composite identifier consisting of <literal>country</literal> and <literal>medicareNumber</literal>. Again, see <xref linkend=\"queryhql-identifier-property\"/> for more information regarding referencing identifier properties."
-msgstr "composite(합성) 식별자들의 프로퍼티들이 또한 사용될 수 있다. <literal>Person</literal>이 <literal>country</literal>와 <literal>medicareNumber</literal>로 구성된 composite 식별자를 갖는다고 가정하자. 식별자 속성들을 참조하는 것과 관련된 추가 정보는 다시 <xref linkend=\"queryhql-identifier-property\"/>를 보라."
+#. Tag: para
+#: query_hql.xml:464
+#, no-c-format
+msgid ""
+"Properties of composite identifiers may also be used. Suppose "
+"<literal>Person</literal> has a composite identifier consisting of "
+"<literal>country</literal> and <literal>medicareNumber</literal>. Again, see "
+"<xref linkend=\"queryhql-identifier-property\"/> for more information "
+"regarding referencing identifier properties."
+msgstr ""
+"composite(합성) 식별자들의 프로퍼티들이 또한 사용될 수 있다. "
+"<literal>Person</literal>이 <literal>country</literal>와 "
+"<literal>medicareNumber</literal>로 구성된 composite 식별자를 갖는다고 가정하"
+"자. 식별자 속성들을 참조하는 것과 관련된 추가 정보는 다시 <xref linkend="
+"\"queryhql-identifier-property\"/>를 보라."
-#: index.docbook:471
+#. Tag: programlisting
+#: query_hql.xml:471
+#, no-c-format
msgid ""
- "<![CDATA[from bank.Person person\n"
- "where person.id.country = 'AU'\n"
- " and person.id.medicareNumber = 123456]]>"
+"<![CDATA[from bank.Person person\n"
+"where person.id.country = 'AU'\n"
+" and person.id.medicareNumber = 123456]]>"
msgstr ""
- "<![CDATA[from bank.Person person\n"
- "where person.id.country = 'AU'\n"
- " and person.id.medicareNumber = 123456]]>"
-#: index.docbook:473
+#. Tag: programlisting
+#: query_hql.xml:473
+#, no-c-format
msgid ""
- "<![CDATA[from bank.Account account\n"
- "where account.owner.id.country = 'AU'\n"
- " and account.owner.id.medicareNumber = 123456]]>"
+"<![CDATA[from bank.Account account\n"
+"where account.owner.id.country = 'AU'\n"
+" and account.owner.id.medicareNumber = 123456]]>"
msgstr ""
- "<![CDATA[from bank.Account account\n"
- "where account.owner.id.country = 'AU'\n"
- " and account.owner.id.medicareNumber = 123456]]>"
-#: index.docbook:475
+#. Tag: para
+#: query_hql.xml:475
+#, no-c-format
msgid "Once again, the second query requires no table join."
msgstr "다시 한번, 두 번째 질의는 테이블 join을 필요로 하지 않는다."
-#: index.docbook:479
-msgid "Likewise, the special property <literal>class</literal> accesses the discriminator value of an instance in the case of polymorphic persistence. A Java class name embedded in the where clause will be translated to its discriminator value."
-msgstr "마찬가지로, 특별한 프로퍼티 <literal>class</literal>는 다형적인 영속성(polymorphic persistence)의 경우에 인스턴스의 판별자(discriminator) 값에 액세스한다. where 절 속에 삽입된 Java 클래스 이름은 그것의 판별자(discriminator) 값으로 변환될 것이다."
+#. Tag: para
+#: query_hql.xml:479
+#, no-c-format
+msgid ""
+"Likewise, the special property <literal>class</literal> accesses the "
+"discriminator value of an instance in the case of polymorphic persistence. A "
+"Java class name embedded in the where clause will be translated to its "
+"discriminator value."
+msgstr ""
+"마찬가지로, 특별한 프로퍼티 <literal>class</literal>는 다형적인 영속성"
+"(polymorphic persistence)의 경우에 인스턴스의 판별자(discriminator) 값에 액세"
+"스한다. where 절 속에 삽입된 Java 클래스 이름은 그것의 판별자(discriminator) "
+"값으로 변환될 것이다."
-#: index.docbook:485
+#. Tag: programlisting
+#: query_hql.xml:485
+#, no-c-format
msgid "<![CDATA[from Cat cat where cat.class = DomesticCat]]>"
-msgstr "<![CDATA[from Cat cat where cat.class = DomesticCat]]>"
+msgstr ""
-#: index.docbook:487
-msgid "You may also use components or composite user types, or properties of said component types. See <xref linkend=\"queryhql-coomponents\"/> for more details."
-msgstr "당신은 또한 컴포넌트들 또는 composite 사용자 타입들, 또는 명명된 컴포넌트 타입들의 속성들을 사용할 수도 있다. 상세한 것은 <xref linkend=\"queryhql-components\"/>를 보라."
+#. Tag: para
+#: query_hql.xml:487
+#, no-c-format
+msgid ""
+"You may also use components or composite user types, or properties of said "
+"component types. See <xref linkend=\"queryhql-components\"/> for more "
+"details."
+msgstr ""
+"당신은 또한 컴포넌트들 또는 composite 사용자 타입들, 또는 명명된 컴포넌트 타"
+"입들의 속성들을 사용할 수도 있다. 상세한 것은 <xref linkend=\"queryhql-"
+"components\"/>를 보라."
-#: index.docbook:492
-msgid "An \"any\" type has the special properties <literal>id</literal> and <literal>class</literal>, allowing us to express a join in the following way (where <literal>AuditLog.item</literal> is a property mapped with <literal><any></literal>)."
-msgstr "\"임의의\" 타입은 다음 방법으로 join을 표현하는 것을 우리에게 허용해주는, 특별한 프로퍼티들 <literal>id</literal>와 <literal>class</literal>를 갖는다(여기서 <literal>AuditLog.item</literal>은 <literal><any></literal>로 매핑된 프로퍼티이다)."
+#. Tag: para
+#: query_hql.xml:492
+#, no-c-format
+msgid ""
+"An \"any\" type has the special properties <literal>id</literal> and "
+"<literal>class</literal>, allowing us to express a join in the following way "
+"(where <literal>AuditLog.item</literal> is a property mapped with "
+"<literal><any></literal>)."
+msgstr ""
+"\"임의의\" 타입은 다음 방법으로 join을 표현하는 것을 우리에게 허용해주는, 특"
+"별한 프로퍼티들 <literal>id</literal>와 <literal>class</literal>를 갖는다(여"
+"기서 <literal>AuditLog.item</literal>은 <literal><any></literal>로 매핑"
+"된 프로퍼티이다)."
-#: index.docbook:498
+#. Tag: programlisting
+#: query_hql.xml:498
+#, no-c-format
msgid ""
- "<![CDATA[from AuditLog log, Payment payment\n"
- "where log.item.class = 'Payment' and log.item.id = payment.id]]>"
+"<![CDATA[from AuditLog log, Payment payment\n"
+"where log.item.class = 'Payment' and log.item.id = payment.id]]>"
msgstr ""
- "<![CDATA[from AuditLog log, Payment payment \n"
- "where log.item.class = 'Payment' and log.item.id = payment.id]]>"
-#: index.docbook:500
-msgid "Notice that <literal>log.item.class</literal> and <literal>payment.class</literal> would refer to the values of completely different database columns in the above query."
-msgstr "<literal>log.item.class</literal>와 <literal>payment.class</literal>는 위의 질의 내에서 완전히 다른 데이터베이스 컬럼들의 값들을 참조할 것임을 노트하라."
+#. Tag: para
+#: query_hql.xml:500
+#, no-c-format
+msgid ""
+"Notice that <literal>log.item.class</literal> and <literal>payment.class</"
+"literal> would refer to the values of completely different database columns "
+"in the above query."
+msgstr ""
+"<literal>log.item.class</literal>와 <literal>payment.class</literal>는 위의 "
+"질의 내에서 완전히 다른 데이터베이스 컬럼들의 값들을 참조할 것임을 노트하라."
-#: index.docbook:508
+#. Tag: title
+#: query_hql.xml:508
+#, no-c-format
msgid "Expressions"
msgstr "표현식들"
-#: index.docbook:510
-msgid "Expressions allowed in the <literal>where</literal> clause include most of the kind of things you could write in SQL:"
-msgstr "<literal>where</literal> 절 속에 허용되는 표현식들은 당신이 SQL로 작성할 수 있는 대부분의 종류의 것들을 포함한다:"
+#. Tag: para
+#: query_hql.xml:510
+#, no-c-format
+msgid ""
+"Expressions allowed in the <literal>where</literal> clause include most of "
+"the kind of things you could write in SQL:"
+msgstr ""
+"<literal>where</literal> 절 속에 허용되는 표현식들은 당신이 SQL로 작성할 수 "
+"있는 대부분의 종류의 것들을 포함한다:"
-#: index.docbook:517
+#. Tag: para
+#: query_hql.xml:517
+#, no-c-format
msgid "mathematical operators <literal>+, -, *, /</literal>"
msgstr "산술 연산자들 <literal>+, -, *, /</literal>"
-#: index.docbook:522
-msgid "binary comparison operators <literal>=, >=, <=, <>, !=, like</literal>"
-msgstr "바이너리 비교 연산자들 <literal>=, >=, <=, <>, !=, like</literal>"
+#. Tag: para
+#: query_hql.xml:522
+#, no-c-format
+msgid ""
+"binary comparison operators <literal>=, >=, <=, <>, !=, like</"
+"literal>"
+msgstr ""
+"바이너리 비교 연산자들 <literal>=, >=, <=, <>, !=, like</literal>"
-#: index.docbook:527
+#. Tag: para
+#: query_hql.xml:527
+#, no-c-format
msgid "logical operations <literal>and, or, not</literal>"
msgstr "논리 연산들 <literal>and, or, not</literal>"
-#: index.docbook:532
+#. Tag: para
+#: query_hql.xml:532
+#, no-c-format
msgid "Parentheses <literal>( )</literal>, indicating grouping"
msgstr "그룹핑을 나타내는 괄호들 <literal>( )</literal>, indicating grouping"
-#: index.docbook:537
-msgid "<literal>in</literal>, <literal>not in</literal>, <literal>between</literal>, <literal>is null</literal>, <literal>is not null</literal>, <literal>is empty</literal>, <literal>is not empty</literal>, <literal>member of</literal> and <literal>not member of</literal>"
-msgstr "<literal>in</literal>, <literal>not in</literal>, <literal>between</literal>, <literal>is null</literal>, <literal>is not null</literal>, <literal>is empty</literal>, <literal>is not empty</literal>, <literal>member of</literal> and <literal>not member of</literal>"
+#. Tag: para
+#: query_hql.xml:537
+#, no-c-format
+msgid ""
+"<literal>in</literal>, <literal>not in</literal>, <literal>between</"
+"literal>, <literal>is null</literal>, <literal>is not null</literal>, "
+"<literal>is empty</literal>, <literal>is not empty</literal>, "
+"<literal>member of</literal> and <literal>not member of</literal>"
+msgstr ""
+"<literal>in</literal>, <literal>not in</literal>, <literal>between</"
+"literal>, <literal>is null</literal>, <literal>is not null</literal>, "
+"<literal>is empty</literal>, <literal>is not empty</literal>, "
+"<literal>member of</literal> and <literal>not member of</literal>"
-#: index.docbook:550
-msgid "\"Simple\" case, <literal>case ... when ... then ... else ... end</literal>, and \"searched\" case, <literal>case when ... then ... else ... end</literal>"
-msgstr "\"간단한\" 경우, <literal>case ... when ... then ... else ... end</literal>, 그리고 \"검색인\" 경우, <literal>case when ... then ... else ... end</literal>"
+#. Tag: para
+#: query_hql.xml:550
+#, no-c-format
+msgid ""
+"\"Simple\" case, <literal>case ... when ... then ... else ... end</literal>, "
+"and \"searched\" case, <literal>case when ... then ... else ... end</literal>"
+msgstr ""
+"\"간단한\" 경우, <literal>case ... when ... then ... else ... end</literal>, "
+"그리고 \"검색인\" 경우, <literal>case when ... then ... else ... end</"
+"literal>"
-#: index.docbook:556
-msgid "string concatenation <literal>...||...</literal> or <literal>concat(...,...)</literal>"
-msgstr "문자열 연결 <literal>...||...</literal> or <literal>concat(...,...)</literal>"
+#. Tag: para
+#: query_hql.xml:556
+#, no-c-format
+msgid ""
+"string concatenation <literal>...||...</literal> or <literal>concat(...,...)"
+"</literal>"
+msgstr ""
+"문자열 연결 <literal>...||...</literal> or <literal>concat(...,...)</literal>"
-#: index.docbook:561
-msgid "<literal>current_date()</literal>, <literal>current_time()</literal>, <literal>current_timestamp()</literal>"
-msgstr "<literal>current_date()</literal>, <literal>current_time()</literal>, <literal>current_timestamp()</literal>"
+#. Tag: para
+#: query_hql.xml:561
+#, no-c-format
+msgid ""
+"<literal>current_date()</literal>, <literal>current_time()</literal>, "
+"<literal>current_timestamp()</literal>"
+msgstr ""
+"<literal>current_date()</literal>, <literal>current_time()</literal>, "
+"<literal>current_timestamp()</literal>"
-#: index.docbook:567
-msgid "<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, <literal>year(...)</literal>,"
-msgstr "<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, <literal>year(...)</literal>,"
+#. Tag: para
+#: query_hql.xml:567
+#, no-c-format
+msgid ""
+"<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour"
+"(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, "
+"<literal>year(...)</literal>,"
+msgstr ""
+"<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour"
+"(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, "
+"<literal>year(...)</literal>,"
-#: index.docbook:574
-msgid "Any function or operator defined by EJB-QL 3.0: <literal>substring(), trim(), lower(), upper(), length(), locate(), abs(), sqrt(), bit_length(), mod()</literal>"
-msgstr "EJB-QL 3.0에 의해 정의된 임의의 함수 또는 오퍼레이터: <literal>substring(), trim(), lower(), upper(), length(), locate(), abs(), sqrt(), bit_length(), mod()</literal>"
+#. Tag: para
+#: query_hql.xml:574
+#, no-c-format
+msgid ""
+"Any function or operator defined by EJB-QL 3.0: <literal>substring(), trim"
+"(), lower(), upper(), length(), locate(), abs(), sqrt(), bit_length(), mod()"
+"</literal>"
+msgstr ""
+"EJB-QL 3.0에 의해 정의된 임의의 함수 또는 오퍼레이터: <literal>substring(), "
+"trim(), lower(), upper(), length(), locate(), abs(), sqrt(), bit_length(), "
+"mod()</literal>"
-#: index.docbook:580
+#. Tag: para
+#: query_hql.xml:580
+#, no-c-format
msgid "<literal>coalesce()</literal> and <literal>nullif()</literal>"
msgstr "<literal>coalesce()</literal> 그리고 <literal>nullif()</literal>"
-#: index.docbook:585
-msgid "<literal>str()</literal> for converting numeric or temporal values to a readable string"
-msgstr "numeric 값들이나 temporal 값들을 가독성 있는 문자열로 변환시키는 <literal>str()</literal>"
+#. Tag: para
+#: query_hql.xml:585
+#, no-c-format
+msgid ""
+"<literal>str()</literal> for converting numeric or temporal values to a "
+"readable string"
+msgstr ""
+"numeric 값들이나 temporal 값들을 가독성 있는 문자열로 변환시키는 <literal>str"
+"()</literal>"
-#: index.docbook:591
-msgid "<literal>cast(... as ...)</literal>, where the second argument is the name of a Hibernate type, and <literal>extract(... from ...)</literal> if ANSI <literal>cast()</literal> and <literal>extract()</literal> is supported by the underlying database"
-msgstr "<literal>cast(... as ...)</literal>, 여기서 두번 째 아규먼트는 Hibernate 타입의 이름이고, ANSI <literal>cast()</literal>와 <literal>extract()</literal>가 기반 데이터베이스에 의해 지원될 경우에는 <literal>extract(... from ...)</literal>."
+#. Tag: para
+#: query_hql.xml:591
+#, no-c-format
+msgid ""
+"<literal>cast(... as ...)</literal>, where the second argument is the name "
+"of a Hibernate type, and <literal>extract(... from ...)</literal> if ANSI "
+"<literal>cast()</literal> and <literal>extract()</literal> is supported by "
+"the underlying database"
+msgstr ""
+"<literal>cast(... as ...)</literal>, 여기서 두번 째 아규먼트는 Hibernate 타입"
+"의 이름이고, ANSI <literal>cast()</literal>와 <literal>extract()</literal>가 "
+"기반 데이터베이스에 의해 지원될 경우에는 <literal>extract(... from ...)</"
+"literal>."
-#: index.docbook:599
-msgid "the HQL <literal>index()</literal> function, that applies to aliases of a joined indexed collection"
-msgstr "조인된 인덱싱된 콜렉션의 alias들에 적용되는, HQL <literal>index()</literal> 함수"
+#. Tag: para
+#: query_hql.xml:599
+#, no-c-format
+msgid ""
+"the HQL <literal>index()</literal> function, that applies to aliases of a "
+"joined indexed collection"
+msgstr ""
+"조인된 인덱싱된 콜렉션의 alias들에 적용되는, HQL <literal>index()</literal> "
+"함수"
-#: index.docbook:605
-msgid "HQL functions that take collection-valued path expressions: <literal>size(), minelement(), maxelement(), minindex(), maxindex()</literal>, along with the special <literal>elements()</literal> and <literal>indices</literal> functions which may be quantified using <literal>some, all, exists, any, in</literal>."
-msgstr "콜렉션 값을 가진 경로 표현식들을 취하는 HQL 함수들 : <literal>some, all, exists, any, in</literal>을 사용하여 정량화 될 수 있는 특별한 <literal>elements()</literal>와 <literal>indices</literal> 함수들과 함께 <literal>size(), minelement(), maxelement(), minindex(), maxindex()</literal>."
+#. Tag: para
+#: query_hql.xml:605
+#, no-c-format
+msgid ""
+"HQL functions that take collection-valued path expressions: <literal>size(), "
+"minelement(), maxelement(), minindex(), maxindex()</literal>, along with the "
+"special <literal>elements()</literal> and <literal>indices</literal> "
+"functions which may be quantified using <literal>some, all, exists, any, in</"
+"literal>."
+msgstr ""
+"콜렉션 값을 가진 경로 표현식들을 취하는 HQL 함수들 : <literal>some, all, "
+"exists, any, in</literal>을 사용하여 정량화 될 수 있는 특별한 "
+"<literal>elements()</literal>와 <literal>indices</literal> 함수들과 함께 "
+"<literal>size(), minelement(), maxelement(), minindex(), maxindex()</"
+"literal>."
-#: index.docbook:613
-msgid "Any database-supported SQL scalar function like <literal>sign()</literal>, <literal>trunc()</literal>, <literal>rtrim()</literal>, <literal>sin()</literal>"
-msgstr "<literal>sign()</literal>, <literal>trunc()</literal>, <literal>rtrim()</literal>, <literal>sin()</literal>과 같이 임의의 데이터베이스 지원 SQL 스칼라 함수"
+#. Tag: para
+#: query_hql.xml:613
+#, no-c-format
+msgid ""
+"Any database-supported SQL scalar function like <literal>sign()</literal>, "
+"<literal>trunc()</literal>, <literal>rtrim()</literal>, <literal>sin()</"
+"literal>"
+msgstr ""
+"<literal>sign()</literal>, <literal>trunc()</literal>, <literal>rtrim()</"
+"literal>, <literal>sin()</literal>과 같이 임의의 데이터베이스 지원 SQL 스칼"
+"라 함수"
-#: index.docbook:619
+#. Tag: para
+#: query_hql.xml:619
+#, no-c-format
msgid "JDBC-style positional parameters <literal>?</literal>"
msgstr "JDBC-스타일 위치 파라미터들 <literal>?</literal>"
-#: index.docbook:624
-msgid "named parameters <literal>:name</literal>, <literal>:start_date</literal>, <literal>:x1</literal>"
-msgstr "명명된 파라미터들 <literal>:name</literal>, <literal>:start_date</literal>, <literal>:x1</literal>"
+#. Tag: para
+#: query_hql.xml:624
+#, no-c-format
+msgid ""
+"named parameters <literal>:name</literal>, <literal>:start_date</literal>, "
+"<literal>:x1</literal>"
+msgstr ""
+"명명된 파라미터들 <literal>:name</literal>, <literal>:start_date</literal>, "
+"<literal>:x1</literal>"
-#: index.docbook:629
-msgid "SQL literals <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
-msgstr "SQL 리터럴들 <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
+#. Tag: para
+#: query_hql.xml:629
+#, no-c-format
+msgid ""
+"SQL literals <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E"
+"+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
+msgstr ""
+"SQL 리터럴들 <literal>'foo'</literal>, <literal>69</literal>, <literal>6.66E"
+"+2</literal>, <literal>'1970-01-01 10:00:01.0'</literal>"
-#: index.docbook:635
-msgid "Java <literal>public static final</literal> constants <literal>eg.Color.TABBY</literal>"
-msgstr "Java <literal>public static final</literal> 상수들. <literal>eg.Color.TABBY</literal>"
+#. Tag: para
+#: query_hql.xml:635
+#, no-c-format
+msgid ""
+"Java <literal>public static final</literal> constants <literal>eg.Color."
+"TABBY</literal>"
+msgstr ""
+"Java <literal>public static final</literal> 상수들. <literal>eg.Color.TABBY</"
+"literal>"
-#: index.docbook:641
-msgid "<literal>in</literal> and <literal>between</literal> may be used as follows:"
-msgstr "<literal>in</literal> 과 <literal>between</literal>은 다음과 같이 사용될 수 있다:"
+#. Tag: para
+#: query_hql.xml:641
+#, no-c-format
+msgid ""
+"<literal>in</literal> and <literal>between</literal> may be used as follows:"
+msgstr ""
+"<literal>in</literal> 과 <literal>between</literal>은 다음과 같이 사용될 수 "
+"있다:"
-#: index.docbook:645
+#. Tag: programlisting
+#: query_hql.xml:645
+#, no-c-format
msgid "<![CDATA[from DomesticCat cat where cat.name between 'A' and 'B']]>"
-msgstr "<![CDATA[from DomesticCat cat where cat.name between 'A' and 'B']]>"
+msgstr ""
-#: index.docbook:647
-msgid "<![CDATA[from DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )]]>"
-msgstr "<![CDATA[from DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )]]>"
+#. Tag: programlisting
+#: query_hql.xml:647
+#, no-c-format
+msgid ""
+"<![CDATA[from DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )]]>"
+msgstr ""
-#: index.docbook:649
+#. Tag: para
+#: query_hql.xml:649
+#, no-c-format
msgid "and the negated forms may be written"
msgstr "그리고 부정형들은 다음과 같이 작성될 수 있다"
-#: index.docbook:653
+#. Tag: programlisting
+#: query_hql.xml:653
+#, no-c-format
msgid "<![CDATA[from DomesticCat cat where cat.name not between 'A' and 'B']]>"
-msgstr "<![CDATA[from DomesticCat cat where cat.name not between 'A' and 'B']]>"
+msgstr ""
-#: index.docbook:655
-msgid "<![CDATA[from DomesticCat cat where cat.name not in ( 'Foo', 'Bar', 'Baz' )]]>"
-msgstr "<![CDATA[from DomesticCat cat where cat.name not in ( 'Foo', 'Bar', 'Baz' )]]>"
+#. Tag: programlisting
+#: query_hql.xml:655
+#, no-c-format
+msgid ""
+"<![CDATA[from DomesticCat cat where cat.name not in ( 'Foo', 'Bar', 'Baz' )]]"
+">"
+msgstr ""
-#: index.docbook:657
-msgid "Likewise, <literal>is null</literal> and <literal>is not null</literal> may be used to test for null values."
-msgstr "마찬가지로, <literal>is null</literal>과 <literal>is not null</literal>은 null 값들을 테스트하는데 사용될 수 있다."
+#. Tag: para
+#: query_hql.xml:657
+#, no-c-format
+msgid ""
+"Likewise, <literal>is null</literal> and <literal>is not null</literal> may "
+"be used to test for null values."
+msgstr ""
+"마찬가지로, <literal>is null</literal>과 <literal>is not null</literal>은 "
+"null 값들을 테스트하는데 사용될 수 있다."
-#: index.docbook:662
-msgid "Booleans may be easily used in expressions by declaring HQL query substitutions in Hibernate configuration:"
-msgstr "Boolean들은 Hibernate 구성 내에 HQL 질의 치환들을 선언함으로써 표현식들 내에 쉽게 사용될 수 있다:"
+#. Tag: para
+#: query_hql.xml:662
+#, no-c-format
+msgid ""
+"Booleans may be easily used in expressions by declaring HQL query "
+"substitutions in Hibernate configuration:"
+msgstr ""
+"Boolean들은 Hibernate 구성 내에 HQL 질의 치환들을 선언함으로써 표현식들 내에 "
+"쉽게 사용될 수 있다:"
-#: index.docbook:667
-msgid "<![CDATA[<property name=\"hibernate.query.substitutions\">true 1, false 0</property>]]>"
-msgstr "<![CDATA[<property name=\"hibernate.query.substitutions\">true 1, false 0</property>]]>"
+#. Tag: programlisting
+#: query_hql.xml:667
+#, no-c-format
+msgid ""
+"<![CDATA[<property name=\"hibernate.query.substitutions\">true 1, false 0</"
+"property>]]>"
+msgstr ""
-#: index.docbook:669
-msgid "This will replace the keywords <literal>true</literal> and <literal>false</literal> with the literals <literal>1</literal> and <literal>0</literal> in the translated SQL from this HQL:"
-msgstr "이것은 키워드 <literal>true</literal>와 <literal>false</literal> 키워드들을 이 HQL로부터 번역된 SQL에서 리터럴 <literal>1</literal>과 <literal>0</literal>으로 대체될 것이다:"
+#. Tag: para
+#: query_hql.xml:669
+#, no-c-format
+msgid ""
+"This will replace the keywords <literal>true</literal> and <literal>false</"
+"literal> with the literals <literal>1</literal> and <literal>0</literal> in "
+"the translated SQL from this HQL:"
+msgstr ""
+"이것은 키워드 <literal>true</literal>와 <literal>false</literal> 키워드들을 "
+"이 HQL로부터 번역된 SQL에서 리터럴 <literal>1</literal>과 <literal>0</"
+"literal>으로 대체될 것이다:"
-#: index.docbook:674
+#. Tag: programlisting
+#: query_hql.xml:674
+#, no-c-format
msgid "<![CDATA[from Cat cat where cat.alive = true]]>"
-msgstr "<![CDATA[from Cat cat where cat.alive = true]]>"
+msgstr ""
-#: index.docbook:676
-msgid "You may test the size of a collection with the special property <literal>size</literal>, or the special <literal>size()</literal> function."
-msgstr "당신은 특별한 프로퍼티 <literal>size</literal>로서 또는 특별한 <literal>size()</literal> 함수로서 콜렉션의 사이즈를 테스트할 수 있다."
+#. Tag: para
+#: query_hql.xml:676
+#, no-c-format
+msgid ""
+"You may test the size of a collection with the special property "
+"<literal>size</literal>, or the special <literal>size()</literal> function."
+msgstr ""
+"당신은 특별한 프로퍼티 <literal>size</literal>로서 또는 특별한 <literal>size"
+"()</literal> 함수로서 콜렉션의 사이즈를 테스트할 수 있다."
-#: index.docbook:681
+#. Tag: programlisting
+#: query_hql.xml:681
+#, no-c-format
msgid "<![CDATA[from Cat cat where cat.kittens.size > 0]]>"
-msgstr "<![CDATA[from Cat cat where cat.kittens.size > 0]]>"
+msgstr ""
-#: index.docbook:683
+#. Tag: programlisting
+#: query_hql.xml:683
+#, no-c-format
msgid "<![CDATA[from Cat cat where size(cat.kittens) > 0]]>"
-msgstr "<![CDATA[from Cat cat where size(cat.kittens) > 0]]>"
+msgstr ""
-#: index.docbook:685
-msgid "For indexed collections, you may refer to the minimum and maximum indices using <literal>minindex</literal> and <literal>maxindex</literal> functions. Similarly, you may refer to the minimum and maximum elements of a collection of basic type using the <literal>minelement</literal> and <literal>maxelement</literal> functions."
-msgstr "인덱싱된 콜렉션들에 대해, 당신은<literal>minindex</literal>와 <literal>maxindex</literal> 함수들을 사용하여 최소 인덱스과 최대 인덱스를 참조할 수 있다. 유사하게 당신은 <literal>minelement</literal>와 <literal>maxelement</literal> 함수를 사용하여 기본 타입을 가진 콜렉션의 최소 요소 및 최대 요소를 참조할 수 있다."
+#. Tag: para
+#: query_hql.xml:685
+#, no-c-format
+msgid ""
+"For indexed collections, you may refer to the minimum and maximum indices "
+"using <literal>minindex</literal> and <literal>maxindex</literal> functions. "
+"Similarly, you may refer to the minimum and maximum elements of a collection "
+"of basic type using the <literal>minelement</literal> and "
+"<literal>maxelement</literal> functions."
+msgstr ""
+"인덱싱된 콜렉션들에 대해, 당신은<literal>minindex</literal>와 "
+"<literal>maxindex</literal> 함수들을 사용하여 최소 인덱스과 최대 인덱스를 참"
+"조할 수 있다. 유사하게 당신은 <literal>minelement</literal>와 "
+"<literal>maxelement</literal> 함수를 사용하여 기본 타입을 가진 콜렉션의 최소 "
+"요소 및 최대 요소를 참조할 수 있다."
-#: index.docbook:693
-msgid "<![CDATA[from Calendar cal where maxelement(cal.holidays) > current_date]]>"
-msgstr "<![CDATA[from Calendar cal where maxelement(cal.holidays) > current_date]]>"
+#. Tag: programlisting
+#: query_hql.xml:693
+#, no-c-format
+msgid ""
+"<![CDATA[from Calendar cal where maxelement(cal.holidays) > current_date]]>"
+msgstr ""
-#: index.docbook:695
+#. Tag: programlisting
+#: query_hql.xml:695
+#, no-c-format
msgid "<![CDATA[from Order order where maxindex(order.items) > 100]]>"
-msgstr "<![CDATA[from Order order where maxindex(order.items) > 100]]>"
+msgstr ""
-#: index.docbook:697
+#. Tag: programlisting
+#: query_hql.xml:697
+#, no-c-format
msgid "<![CDATA[from Order order where minelement(order.items) > 10000]]>"
-msgstr "<![CDATA[from Order order where minelement(order.items) > 10000]]>"
+msgstr ""
-#: index.docbook:699
-msgid "The SQL functions <literal>any, some, all, exists, in</literal> are supported when passed the element or index set of a collection (<literal>elements</literal> and <literal>indices</literal> functions) or the result of a subquery (see below)."
-msgstr "SQL 함수들 <literal>any, some, all, exists, in</literal>은 콜렉션의 요소 또는 인덱스 세트(<literal>elements</literal> 함수와 <literal>indices</literal> 함수), 또는 서브질의의 결과를 전달했을 때 지원된다(아래를 보라)."
+#. Tag: para
+#: query_hql.xml:699
+#, no-c-format
+msgid ""
+"The SQL functions <literal>any, some, all, exists, in</literal> are "
+"supported when passed the element or index set of a collection "
+"(<literal>elements</literal> and <literal>indices</literal> functions) or "
+"the result of a subquery (see below)."
+msgstr ""
+"SQL 함수들 <literal>any, some, all, exists, in</literal>은 콜렉션의 요소 또"
+"는 인덱스 세트(<literal>elements</literal> 함수와 <literal>indices</literal> "
+"함수), 또는 서브질의의 결과를 전달했을 때 지원된다(아래를 보라)."
-#: index.docbook:705
+#. Tag: programlisting
+#: query_hql.xml:705
+#, no-c-format
msgid ""
- "<![CDATA[select mother from Cat as mother, Cat as kit\n"
- "where kit in elements(foo.kittens)]]>"
+"<![CDATA[select mother from Cat as mother, Cat as kit\n"
+"where kit in elements(foo.kittens)]]>"
msgstr ""
- "<![CDATA[select mother from Cat as mother, Cat as kit\n"
- "where kit in elements(foo.kittens)]]>"
-#: index.docbook:707
+#. Tag: programlisting
+#: query_hql.xml:707
+#, no-c-format
msgid ""
- "<![CDATA[select p from NameList list, Person p\n"
- "where p.name = some elements(list.names)]]>"
+"<![CDATA[select p from NameList list, Person p\n"
+"where p.name = some elements(list.names)]]>"
msgstr ""
- "<![CDATA[select p from NameList list, Person p\n"
- "where p.name = some elements(list.names)]]>"
-#: index.docbook:709
+#. Tag: programlisting
+#: query_hql.xml:709
+#, no-c-format
msgid "<![CDATA[from Cat cat where exists elements(cat.kittens)]]>"
-msgstr "<![CDATA[from Cat cat where exists elements(cat.kittens)]]>"
+msgstr ""
-#: index.docbook:711
+#. Tag: programlisting
+#: query_hql.xml:711
+#, no-c-format
msgid "<![CDATA[from Player p where 3 > all elements(p.scores)]]>"
-msgstr "<![CDATA[from Player p where 3 > all elements(p.scores)]]>"
+msgstr ""
-#: index.docbook:713
+#. Tag: programlisting
+#: query_hql.xml:713
+#, no-c-format
msgid "<![CDATA[from Show show where 'fizard' in indices(show.acts)]]>"
-msgstr "<![CDATA[from Show show where 'fizard' in indices(show.acts)]]>"
+msgstr ""
-#: index.docbook:715
-msgid "Note that these constructs - <literal>size</literal>, <literal>elements</literal>, <literal>indices</literal>, <literal>minindex</literal>, <literal>maxindex</literal>, <literal>minelement</literal>, <literal>maxelement</literal> - may only be used in the where clause in Hibernate3."
-msgstr "이들 구조체들-<literal>size</literal>, <literal>elements</literal>, <literal>indices</literal>, <literal>minindex</literal>, <literal>maxindex</literal>, <literal>minelement</literal>, <literal>maxelement</literal>-는 Hibernate3에서 where 절 내에서만 사용될 것임을 노트하라."
+#. Tag: para
+#: query_hql.xml:715
+#, no-c-format
+msgid ""
+"Note that these constructs - <literal>size</literal>, <literal>elements</"
+"literal>, <literal>indices</literal>, <literal>minindex</literal>, "
+"<literal>maxindex</literal>, <literal>minelement</literal>, "
+"<literal>maxelement</literal> - may only be used in the where clause in "
+"Hibernate3."
+msgstr ""
+"이들 구조체들-<literal>size</literal>, <literal>elements</literal>, "
+"<literal>indices</literal>, <literal>minindex</literal>, <literal>maxindex</"
+"literal>, <literal>minelement</literal>, <literal>maxelement</literal>-는 "
+"Hibernate3에서 where 절 내에서만 사용될 것임을 노트하라."
-#: index.docbook:722
-msgid "Elements of indexed collections (arrays, lists, maps) may be referred to by index (in a where clause only):"
-msgstr "인덱싱 된 콜렉션들의 요소들(배열들, 리스트들, map들)은 인덱스에 의해 참조될 수 있다(where 절 안에서만):"
+#. Tag: para
+#: query_hql.xml:722
+#, no-c-format
+msgid ""
+"Elements of indexed collections (arrays, lists, maps) may be referred to by "
+"index (in a where clause only):"
+msgstr ""
+"인덱싱 된 콜렉션들의 요소들(배열들, 리스트들, map들)은 인덱스에 의해 참조될 "
+"수 있다(where 절 안에서만):"
-#: index.docbook:727
+#. Tag: programlisting
+#: query_hql.xml:727
+#, no-c-format
msgid "<![CDATA[from Order order where order.items[0].id = 1234]]>"
-msgstr "<![CDATA[from Order order where order.items[0].id = 1234]]>"
+msgstr ""
-#: index.docbook:729
+#. Tag: programlisting
+#: query_hql.xml:729
+#, no-c-format
msgid ""
- "<![CDATA[select person from Person person, Calendar calendar\n"
- "where calendar.holidays['national day'] = person.birthDay\n"
- " and person.nationality.calendar = calendar]]>"
+"<![CDATA[select person from Person person, Calendar calendar\n"
+"where calendar.holidays['national day'] = person.birthDay\n"
+" and person.nationality.calendar = calendar]]>"
msgstr ""
- "<![CDATA[select person from Person person, Calendar calendar\n"
- "where calendar.holidays['national day'] = person.birthDay\n"
- " and person.nationality.calendar = calendar]]>"
-#: index.docbook:731
+#. Tag: programlisting
+#: query_hql.xml:731
+#, no-c-format
msgid ""
- "<![CDATA[select item from Item item, Order order\n"
- "where order.items[ order.deliveredItemIndices[0] ] = item and order.id = 11]]>"
+"<![CDATA[select item from Item item, Order order\n"
+"where order.items[ order.deliveredItemIndices[0] ] = item and order.id = 11]]"
+">"
msgstr ""
- "<![CDATA[select item from Item item, Order order\n"
- "where order.items[ order.deliveredItemIndices[0] ] = item and order.id = 11]]>"
-#: index.docbook:733
+#. Tag: programlisting
+#: query_hql.xml:733
+#, no-c-format
msgid ""
- "<![CDATA[select item from Item item, Order order\n"
- "where order.items[ maxindex(order.items) ] = item and order.id = 11]]>"
+"<![CDATA[select item from Item item, Order order\n"
+"where order.items[ maxindex(order.items) ] = item and order.id = 11]]>"
msgstr ""
- "<![CDATA[select item from Item item, Order order\n"
- "where order.items[ maxindex(order.items) ] = item and order.id = 11]]>"
-#: index.docbook:735
-msgid "The expression inside <literal>[]</literal> may even be an arithmetic expression."
+#. Tag: para
+#: query_hql.xml:735
+#, no-c-format
+msgid ""
+"The expression inside <literal>[]</literal> may even be an arithmetic "
+"expression."
msgstr "<literal>[]</literal> 내부의 표현식은 산술 표현실일 수 있다."
-#: index.docbook:739
+#. Tag: programlisting
+#: query_hql.xml:739
+#, no-c-format
msgid ""
- "<![CDATA[select item from Item item, Order order\n"
- "where order.items[ size(order.items) - 1 ] = item]]>"
+"<![CDATA[select item from Item item, Order order\n"
+"where order.items[ size(order.items) - 1 ] = item]]>"
msgstr ""
- "<![CDATA[select item from Item item, Order order\n"
- "where order.items[ size(order.items) - 1 ] = item]]>"
-#: index.docbook:741
-msgid "HQL also provides the built-in <literal>index()</literal> function, for elements of a one-to-many association or collection of values."
-msgstr "HQL은 또한 one-to-many 연관 또는 값들을 가진 콜렉션의 요소들에 대해 미리 만들어진 <literal>index()</literal> 함수를 제공한다."
+#. Tag: para
+#: query_hql.xml:741
+#, no-c-format
+msgid ""
+"HQL also provides the built-in <literal>index()</literal> function, for "
+"elements of a one-to-many association or collection of values."
+msgstr ""
+"HQL은 또한 one-to-many 연관 또는 값들을 가진 콜렉션의 요소들에 대해 미리 만들"
+"어진 <literal>index()</literal> 함수를 제공한다."
-#: index.docbook:746
+#. Tag: programlisting
+#: query_hql.xml:746
+#, no-c-format
msgid ""
- "<![CDATA[select item, index(item) from Order order\n"
- " join order.items item\n"
- "where index(item) < 5]]>"
+"<![CDATA[select item, index(item) from Order order\n"
+" join order.items item\n"
+"where index(item) < 5]]>"
msgstr ""
- "<![CDATA[select item, index(item) from Order order \n"
- " join order.items item\n"
- "where index(item) < 5]]>"
-#: index.docbook:748
+#. Tag: para
+#: query_hql.xml:748
+#, no-c-format
msgid "Scalar SQL functions supported by the underlying database may be used"
msgstr "기본 데이터베이스에 의해 제공되는 Scalar SQL 함수들이 사용될 수도 있다"
-#: index.docbook:752
+#. Tag: programlisting
+#: query_hql.xml:752
+#, no-c-format
msgid "<![CDATA[from DomesticCat cat where upper(cat.name) like 'FRI%']]>"
-msgstr "<![CDATA[from DomesticCat cat where upper(cat.name) like 'FRI%']]>"
+msgstr ""
-#: index.docbook:754
-msgid "If you are not yet convinced by all this, think how much longer and less readable the following query would be in SQL:"
-msgstr "당신이 아직 이 모든 것을 납득하지 못한다면, SQL 내에서 다음 질의가 가독성이 얼마나 많고 적은지를 생각해보라:"
+#. Tag: para
+#: query_hql.xml:754
+#, no-c-format
+msgid ""
+"If you are not yet convinced by all this, think how much longer and less "
+"readable the following query would be in SQL:"
+msgstr ""
+"당신이 아직 이 모든 것을 납득하지 못한다면, SQL 내에서 다음 질의가 가독성이 "
+"얼마나 많고 적은지를 생각해보라:"
-#: index.docbook:759
+#. Tag: programlisting
+#: query_hql.xml:759
+#, no-c-format
msgid ""
- "<![CDATA[select cust\n"
- "from Product prod,\n"
- " Store store\n"
- " inner join store.customers cust\n"
- "where prod.name = 'widget'\n"
- " and store.location.name in ( 'Melbourne', 'Sydney' )\n"
- " and prod = all elements(cust.currentOrder.lineItems)]]>"
+"<![CDATA[select cust\n"
+"from Product prod,\n"
+" Store store\n"
+" inner join store.customers cust\n"
+"where prod.name = 'widget'\n"
+" and store.location.name in ( 'Melbourne', 'Sydney' )\n"
+" and prod = all elements(cust.currentOrder.lineItems)]]>"
msgstr ""
- "<![CDATA[select cust\n"
- "from Product prod,\n"
- " Store store\n"
- " inner join store.customers cust\n"
- "where prod.name = 'widget'\n"
- " and store.location.name in ( 'Melbourne', 'Sydney' )\n"
- " and prod = all elements(cust.currentOrder.lineItems)]]>"
-#: index.docbook:761
+#. Tag: para
+#: query_hql.xml:761
+#, no-c-format
msgid "<emphasis>Hint:</emphasis> something like"
msgstr "<emphasis>힌트</emphasis> : 다음과 같은 어떤 것"
-#: index.docbook:765
+#. Tag: programlisting
+#: query_hql.xml:765
+#, no-c-format
msgid ""
- "<![CDATA[SELECT cust.name, cust.address, cust.phone, cust.id, cust.current_order\n"
- "FROM customers cust,\n"
- " stores store,\n"
- " locations loc,\n"
- " store_customers sc,\n"
- " product prod\n"
- "WHERE prod.name = 'widget'\n"
- " AND store.loc_id = loc.id\n"
- " AND loc.name IN ( 'Melbourne', 'Sydney' )\n"
- " AND sc.store_id = store.id\n"
- " AND sc.cust_id = cust.id\n"
- " AND prod.id = ALL(\n"
- " SELECT item.prod_id\n"
- " FROM line_items item, orders o\n"
- " WHERE item.order_id = o.id\n"
- " AND cust.current_order = o.id\n"
- " )]]>"
+"<![CDATA[SELECT cust.name, cust.address, cust.phone, cust.id, cust."
+"current_order\n"
+"FROM customers cust,\n"
+" stores store,\n"
+" locations loc,\n"
+" store_customers sc,\n"
+" product prod\n"
+"WHERE prod.name = 'widget'\n"
+" AND store.loc_id = loc.id\n"
+" AND loc.name IN ( 'Melbourne', 'Sydney' )\n"
+" AND sc.store_id = store.id\n"
+" AND sc.cust_id = cust.id\n"
+" AND prod.id = ALL(\n"
+" SELECT item.prod_id\n"
+" FROM line_items item, orders o\n"
+" WHERE item.order_id = o.id\n"
+" AND cust.current_order = o.id\n"
+" )]]>"
msgstr ""
- "<![CDATA[SELECT cust.name, cust.address, cust.phone, cust.id, cust.current_order\n"
- "FROM customers cust,\n"
- " stores store,\n"
- " locations loc,\n"
- " store_customers sc,\n"
- " product prod\n"
- "WHERE prod.name = 'widget'\n"
- " AND store.loc_id = loc.id\n"
- " AND loc.name IN ( 'Melbourne', 'Sydney' )\n"
- " AND sc.store_id = store.id\n"
- " AND sc.cust_id = cust.id\n"
- " AND prod.id = ALL(\n"
- " SELECT item.prod_id\n"
- " FROM line_items item, orders o\n"
- " WHERE item.order_id = o.id\n"
- " AND cust.current_order = o.id\n"
- " )]]>"
-#: index.docbook:770
+#. Tag: title
+#: query_hql.xml:770
+#, no-c-format
msgid "The order by clause"
msgstr "order by 절"
-#: index.docbook:772
-msgid "The list returned by a query may be ordered by any property of a returned class or components:"
-msgstr "질의에 의해 반환된 리스트는 반환된 클래스 또는 컴포넌트들의 프로퍼티에 의해 순서(ordering)지워질 수 있다:"
+#. Tag: para
+#: query_hql.xml:772
+#, no-c-format
+msgid ""
+"The list returned by a query may be ordered by any property of a returned "
+"class or components:"
+msgstr ""
+"질의에 의해 반환된 리스트는 반환된 클래스 또는 컴포넌트들의 프로퍼티에 의해 "
+"순서(ordering)지워질 수 있다:"
-#: index.docbook:776
+#. Tag: programlisting
+#: query_hql.xml:776
+#, no-c-format
msgid ""
- "<![CDATA[from DomesticCat cat\n"
- "order by cat.name asc, cat.weight desc, cat.birthdate]]>"
+"<![CDATA[from DomesticCat cat\n"
+"order by cat.name asc, cat.weight desc, cat.birthdate]]>"
msgstr ""
- "<![CDATA[from DomesticCat cat\n"
- "order by cat.name asc, cat.weight desc, cat.birthdate]]>"
-#: index.docbook:778
-msgid "The optional <literal>asc</literal> or <literal>desc</literal> indicate ascending or descending order respectively."
-msgstr "<literal>asc</literal> 옵션 또는 <literal>desc</literal> 옵션은 각각 오름차순 또는 내림차순 정렬을 나타낸다."
+#. Tag: para
+#: query_hql.xml:778
+#, no-c-format
+msgid ""
+"The optional <literal>asc</literal> or <literal>desc</literal> indicate "
+"ascending or descending order respectively."
+msgstr ""
+"<literal>asc</literal> 옵션 또는 <literal>desc</literal> 옵션은 각각 오름차"
+"순 또는 내림차순 정렬을 나타낸다."
-#: index.docbook:785
+#. Tag: title
+#: query_hql.xml:785
+#, no-c-format
msgid "The group by clause"
msgstr "group by 절"
-#: index.docbook:787
-msgid "A query that returns aggregate values may be grouped by any property of a returned class or components:"
-msgstr "aggregate 값들을 반환하는 질의는 반환된 클래스나 컴포넌트들의 프로퍼티에 의해 그룹지워질 수 있다:"
+#. Tag: para
+#: query_hql.xml:787
+#, no-c-format
+msgid ""
+"A query that returns aggregate values may be grouped by any property of a "
+"returned class or components:"
+msgstr ""
+"aggregate 값들을 반환하는 질의는 반환된 클래스나 컴포넌트들의 프로퍼티에 의"
+"해 그룹지워질 수 있다:"
-#: index.docbook:791
+#. Tag: programlisting
+#: query_hql.xml:791
+#, no-c-format
msgid ""
- "<![CDATA[select cat.color, sum(cat.weight), count(cat)\n"
- "from Cat cat\n"
- "group by cat.color]]>"
+"<![CDATA[select cat.color, sum(cat.weight), count(cat)\n"
+"from Cat cat\n"
+"group by cat.color]]>"
msgstr ""
- "<![CDATA[select cat.color, sum(cat.weight), count(cat) \n"
- "from Cat cat\n"
- "group by cat.color]]>"
-#: index.docbook:793
+#. Tag: programlisting
+#: query_hql.xml:793
+#, no-c-format
msgid ""
- "<![CDATA[select foo.id, avg(name), max(name)\n"
- "from Foo foo join foo.names name\n"
- "group by foo.id]]>"
+"<![CDATA[select foo.id, avg(name), max(name)\n"
+"from Foo foo join foo.names name\n"
+"group by foo.id]]>"
msgstr ""
- "<![CDATA[select foo.id, avg(name), max(name) \n"
- "from Foo foo join foo.names name\n"
- "group by foo.id]]>"
-#: index.docbook:795
+#. Tag: para
+#: query_hql.xml:795
+#, no-c-format
msgid "A <literal>having</literal> clause is also allowed."
msgstr "또한 <literal>having</literal> 절이 허용된다."
-#: index.docbook:799
+#. Tag: programlisting
+#: query_hql.xml:799
+#, no-c-format
msgid ""
- "<![CDATA[select cat.color, sum(cat.weight), count(cat)\n"
- "from Cat cat\n"
- "group by cat.color\n"
- "having cat.color in (eg.Color.TABBY, eg.Color.BLACK)]]>"
+"<![CDATA[select cat.color, sum(cat.weight), count(cat)\n"
+"from Cat cat\n"
+"group by cat.color\n"
+"having cat.color in (eg.Color.TABBY, eg.Color.BLACK)]]>"
msgstr ""
- "<![CDATA[select cat.color, sum(cat.weight), count(cat) \n"
- "from Cat cat\n"
- "group by cat.color \n"
- "having cat.color in (eg.Color.TABBY, eg.Color.BLACK)]]>"
-#: index.docbook:801
-msgid "SQL functions and aggregate functions are allowed in the <literal>having</literal> and <literal>order by</literal> clauses, if supported by the underlying database (eg. not in MySQL)."
-msgstr "SQL 함수들과 집계 함수들이 기본 데이터베이스에 의해 지원될 경우(예를 들어 MySQL은 지원되지 않는다) <literal>having</literal> 절과 <literal>order by</literal> 절 속에 허용된다."
+#. Tag: para
+#: query_hql.xml:801
+#, no-c-format
+msgid ""
+"SQL functions and aggregate functions are allowed in the <literal>having</"
+"literal> and <literal>order by</literal> clauses, if supported by the "
+"underlying database (eg. not in MySQL)."
+msgstr ""
+"SQL 함수들과 집계 함수들이 기본 데이터베이스에 의해 지원될 경우(예를 들어 "
+"MySQL은 지원되지 않는다) <literal>having</literal> 절과 <literal>order by</"
+"literal> 절 속에 허용된다."
-#: index.docbook:807
+#. Tag: programlisting
+#: query_hql.xml:807
+#, no-c-format
msgid ""
- "<![CDATA[select cat\n"
- "from Cat cat\n"
- " join cat.kittens kitten\n"
- "group by cat.id, cat.name, cat.other, cat.properties\n"
- "having avg(kitten.weight) > 100\n"
- "order by count(kitten) asc, sum(kitten.weight) desc]]>"
+"<![CDATA[select cat\n"
+"from Cat cat\n"
+" join cat.kittens kitten\n"
+"group by cat.id, cat.name, cat.other, cat.properties\n"
+"having avg(kitten.weight) > 100\n"
+"order by count(kitten) asc, sum(kitten.weight) desc]]>"
msgstr ""
- "<![CDATA[select cat\n"
- "from Cat cat\n"
- " join cat.kittens kitten\n"
- "group by cat.id, cat.name, cat.other, cat.properties\n"
- "having avg(kitten.weight) > 100\n"
- "order by count(kitten) asc, sum(kitten.weight) desc]]>"
-#: index.docbook:809
-msgid "Note that neither the <literal>group by</literal> clause nor the <literal>order by</literal> clause may contain arithmetic expressions. Also note that Hibernate currently does not expand a grouped entity, so you can't write <literal>group by cat</literal> if all properties of <literal>cat</literal> are non-aggregated. You have to list all non-aggregated properties explicitly."
-msgstr "<literal>group by</literal> 절도 <literal>order by</literal> 절 어느 것도 산술 표현식들을 포함할 수 없다는 점을 노트하라. 또한 Hibernate는 현재 그룹지워진 엔티티를 확장하지 않아서 만일 <literal>cat</literal>의 모든 속성들이 집계되지 않을 경우에 당신이 <literal>group by cat</literal>을 쓸수 없음을 노트하라. 당신은 명시적으로 모든 집계되지 않는 속성들을 리스트해야 한다."
+#. Tag: para
+#: query_hql.xml:809
+#, no-c-format
+msgid ""
+"Note that neither the <literal>group by</literal> clause nor the "
+"<literal>order by</literal> clause may contain arithmetic expressions. Also "
+"note that Hibernate currently does not expand a grouped entity, so you can't "
+"write <literal>group by cat</literal> if all properties of <literal>cat</"
+"literal> are non-aggregated. You have to list all non-aggregated properties "
+"explicitly."
+msgstr ""
+"<literal>group by</literal> 절도 <literal>order by</literal> 절 어느 것도 산"
+"술 표현식들을 포함할 수 없다는 점을 노트하라. 또한 Hibernate는 현재 그룹지워"
+"진 엔티티를 확장하지 않아서 만일 <literal>cat</literal>의 모든 속성들이 집계"
+"되지 않을 경우에 당신이 <literal>group by cat</literal>을 쓸수 없음을 노트하"
+"라. 당신은 명시적으로 모든 집계되지 않는 속성들을 리스트해야 한다."
-#: index.docbook:821
+#. Tag: title
+#: query_hql.xml:821
+#, no-c-format
msgid "Subqueries"
msgstr "서브질의들"
-#: index.docbook:823
-msgid "For databases that support subselects, Hibernate supports subqueries within queries. A subquery must be surrounded by parentheses (often by an SQL aggregate function call). Even correlated subqueries (subqueries that refer to an alias in the outer query) are allowed."
-msgstr "subselect들을 지원하는 데이터베이스들의 경우, Hibernate는 질의들 내에 서브질의들을 지원한다. 서브질의는 괄호로 묶여져야 한다(자주 SQL 집계함수 호출에 의해). 심지어 서로 상관된 서브질의들(외부 질의 내에서 alias를 참조하는 서브질의들)이 허용된다."
+#. Tag: para
+#: query_hql.xml:823
+#, no-c-format
+msgid ""
+"For databases that support subselects, Hibernate supports subqueries within "
+"queries. A subquery must be surrounded by parentheses (often by an SQL "
+"aggregate function call). Even correlated subqueries (subqueries that refer "
+"to an alias in the outer query) are allowed."
+msgstr ""
+"subselect들을 지원하는 데이터베이스들의 경우, Hibernate는 질의들 내에 서브질"
+"의들을 지원한다. 서브질의는 괄호로 묶여져야 한다(자주 SQL 집계함수 호출에 의"
+"해). 심지어 서로 상관된 서브질의들(외부 질의 내에서 alias를 참조하는 서브질의"
+"들)이 허용된다."
-#: index.docbook:829
+#. Tag: programlisting
+#: query_hql.xml:829
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as fatcat\n"
- "where fatcat.weight > (\n"
- " select avg(cat.weight) from DomesticCat cat\n"
- ")]]>"
+"<![CDATA[from Cat as fatcat\n"
+"where fatcat.weight > (\n"
+" select avg(cat.weight) from DomesticCat cat\n"
+")]]>"
msgstr ""
- "<![CDATA[from Cat as fatcat\n"
- "where fatcat.weight > (\n"
- " select avg(cat.weight) from DomesticCat cat\n"
- ")]]>"
-#: index.docbook:831
+#. Tag: programlisting
+#: query_hql.xml:831
+#, no-c-format
msgid ""
- "<![CDATA[from DomesticCat as cat\n"
- "where cat.name = some (\n"
- " select name.nickName from Name as name\n"
- ")]]>"
+"<![CDATA[from DomesticCat as cat\n"
+"where cat.name = some (\n"
+" select name.nickName from Name as name\n"
+")]]>"
msgstr ""
- "<![CDATA[from DomesticCat as cat\n"
- "where cat.name = some (\n"
- " select name.nickName from Name as name\n"
- ")]]>"
-#: index.docbook:833
+#. Tag: programlisting
+#: query_hql.xml:833
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as cat\n"
- "where not exists (\n"
- " from Cat as mate where mate.mate = cat\n"
- ")]]>"
+"<![CDATA[from Cat as cat\n"
+"where not exists (\n"
+" from Cat as mate where mate.mate = cat\n"
+")]]>"
msgstr ""
- "<![CDATA[from Cat as cat\n"
- "where not exists (\n"
- " from Cat as mate where mate.mate = cat\n"
- ")]]>"
-#: index.docbook:835
+#. Tag: programlisting
+#: query_hql.xml:835
+#, no-c-format
msgid ""
- "<![CDATA[from DomesticCat as cat\n"
- "where cat.name not in (\n"
- " select name.nickName from Name as name\n"
- ")]]>"
+"<![CDATA[from DomesticCat as cat\n"
+"where cat.name not in (\n"
+" select name.nickName from Name as name\n"
+")]]>"
msgstr ""
- "<![CDATA[from DomesticCat as cat\n"
- "where cat.name not in (\n"
- " select name.nickName from Name as name\n"
- ")]]>"
-#: index.docbook:837
+#. Tag: programlisting
+#: query_hql.xml:837
+#, no-c-format
msgid ""
- "<![CDATA[select cat.id, (select max(kit.weight) from cat.kitten kit)\n"
- "from Cat as cat]]>"
+"<![CDATA[select cat.id, (select max(kit.weight) from cat.kitten kit)\n"
+"from Cat as cat]]>"
msgstr ""
- "<![CDATA[select cat.id, (select max(kit.weight) from cat.kitten kit)\n"
- "from Cat as cat]]>"
-#: index.docbook:839
+#. Tag: para
+#: query_hql.xml:839
+#, no-c-format
msgid "Note that HQL subqueries may occur only in the select or where clauses."
-msgstr "HQL 서브질의들이 select 절 또는 where 절 내에서만 일어날 수 있음을 노트하라."
+msgstr ""
+"HQL 서브질의들이 select 절 또는 where 절 내에서만 일어날 수 있음을 노트하라."
-#: index.docbook:843
-msgid "Note that subqueries can also utilize <literal>row value constructor</literal> syntax. See <xref linkend=\"queryhql-tuple\"/> for more details."
-msgstr "서브질의들은 또한 <literal>row value constructor</literal> 구문을 활용할 수 있다. 상세한 것은 <xref linkend=\"queryhql-tuple\"/>를 보라."
+#. Tag: para
+#: query_hql.xml:843
+#, no-c-format
+msgid ""
+"Note that subqueries can also utilize <literal>row value constructor</"
+"literal> syntax. See <xref linkend=\"queryhql-tuple\"/> for more details."
+msgstr ""
+"서브질의들은 또한 <literal>row value constructor</literal> 구문을 활용할 수 "
+"있다. 상세한 것은 <xref linkend=\"queryhql-tuple\"/>를 보라."
-#: index.docbook:851
+#. Tag: title
+#: query_hql.xml:851
+#, no-c-format
msgid "HQL examples"
msgstr "HQL 예제들"
-#: index.docbook:853
-msgid "Hibernate queries can be quite powerful and complex. In fact, the power of the query language is one of Hibernate's main selling points. Here are some example queries very similar to queries that I used on a recent project. Note that most queries you will write are much simpler than these!"
-msgstr "Hibernate 질의들은 매우 강력하고 복잡할 수 있다. 사실, 질의 언어의 힘은 Hibernate의 주요 판매 포인트들 중 하나이다. 다음은 내가 최근의 프로젝트에서 사용했던 질의들과 매우 유사한 몇몇 예제 질의들이다. 당신이 작성하게 될 대부분의 질의들은 이것들보다 훨씬 간단하다는 점을 노트하라!"
+#. Tag: para
+#: query_hql.xml:853
+#, no-c-format
+msgid ""
+"Hibernate queries can be quite powerful and complex. In fact, the power of "
+"the query language is one of Hibernate's main selling points. Here are some "
+"example queries very similar to queries that I used on a recent project. "
+"Note that most queries you will write are much simpler than these!"
+msgstr ""
+"Hibernate 질의들은 매우 강력하고 복잡할 수 있다. 사실, 질의 언어의 힘은 "
+"Hibernate의 주요 판매 포인트들 중 하나이다. 다음은 내가 최근의 프로젝트에서 "
+"사용했던 질의들과 매우 유사한 몇몇 예제 질의들이다. 당신이 작성하게 될 대부분"
+"의 질의들은 이것들보다 훨씬 간단하다는 점을 노트하라!"
-#: index.docbook:859
-msgid "The following query returns the order id, number of items and total value of the order for all unpaid orders for a particular customer and given minimum total value, ordering the results by total value. In determining the prices, it uses the current catalog. The resulting SQL query, against the <literal>ORDER</literal>, <literal>ORDER_LINE</literal>, <literal>PRODUCT</literal>, <literal>CATALOG</literal> and <literal>PRICE</literal> tables has four inner joins and an (uncorrelated) subselect."
-msgstr "다음 질의는 특정 고객에 대한 모든 지불되지 않은 주문들의 주문 id, 항목들의 개수, 그리고 주문의 전체 합계값 그리고 주어진 최소 전체 합계를 전체 합계값에 따라 결과들을 순서지워서 반환한다. 가격 결정에 있어, 그것은 현재의 카타록을 사용한다. 귀결되는 SQL 질의는 <literal>ORDER</literal>, <literal>ORDER_LINE</literal>, <literal>PRODUCT</literal>, <literal>CATALOG</literal>, <literal>PRICE</literal> 테이블들에 대한 네 개의 inner 조인들과 한 개의(상관지워지지 않은) subselect를 갖고 있다."
+#. Tag: para
+#: query_hql.xml:859
+#, no-c-format
+msgid ""
+"The following query returns the order id, number of items and total value of "
+"the order for all unpaid orders for a particular customer and given minimum "
+"total value, ordering the results by total value. In determining the prices, "
+"it uses the current catalog. The resulting SQL query, against the "
+"<literal>ORDER</literal>, <literal>ORDER_LINE</literal>, <literal>PRODUCT</"
+"literal>, <literal>CATALOG</literal> and <literal>PRICE</literal> tables has "
+"four inner joins and an (uncorrelated) subselect."
+msgstr ""
+"다음 질의는 특정 고객에 대한 모든 지불되지 않은 주문들의 주문 id, 항목들의 개"
+"수, 그리고 주문의 전체 합계값 그리고 주어진 최소 전체 합계를 전체 합계값에 따"
+"라 결과들을 순서지워서 반환한다. 가격 결정에 있어, 그것은 현재의 카타록을 사"
+"용한다. 귀결되는 SQL 질의는 <literal>ORDER</literal>, <literal>ORDER_LINE</"
+"literal>, <literal>PRODUCT</literal>, <literal>CATALOG</literal>, "
+"<literal>PRICE</literal> 테이블들에 대한 네 개의 inner 조인들과 한 개의(상관"
+"지워지지 않은) subselect를 갖고 있다."
-#: index.docbook:868
+#. Tag: programlisting
+#: query_hql.xml:868
+#, no-c-format
msgid ""
- "<![CDATA[select order.id, sum(price.amount), count(item)\n"
- "from Order as order\n"
- " join order.lineItems as item\n"
- " join item.product as product,\n"
- " Catalog as catalog\n"
- " join catalog.prices as price\n"
- "where order.paid = false\n"
- " and order.customer = :customer\n"
- " and price.product = product\n"
- " and catalog.effectiveDate < sysdate\n"
- " and catalog.effectiveDate >= all (\n"
- " select cat.effectiveDate\n"
- " from Catalog as cat\n"
- " where cat.effectiveDate < sysdate\n"
- " )\n"
- "group by order\n"
- "having sum(price.amount) > :minAmount\n"
- "order by sum(price.amount) desc]]>"
+"<![CDATA[select order.id, sum(price.amount), count(item)\n"
+"from Order as order\n"
+" join order.lineItems as item\n"
+" join item.product as product,\n"
+" Catalog as catalog\n"
+" join catalog.prices as price\n"
+"where order.paid = false\n"
+" and order.customer = :customer\n"
+" and price.product = product\n"
+" and catalog.effectiveDate < sysdate\n"
+" and catalog.effectiveDate >= all (\n"
+" select cat.effectiveDate\n"
+" from Catalog as cat\n"
+" where cat.effectiveDate < sysdate\n"
+" )\n"
+"group by order\n"
+"having sum(price.amount) > :minAmount\n"
+"order by sum(price.amount) desc]]>"
msgstr ""
- "<![CDATA[select order.id, sum(price.amount), count(item)\n"
- "from Order as order\n"
- " join order.lineItems as item\n"
- " join item.product as product,\n"
- " Catalog as catalog\n"
- " join catalog.prices as price\n"
- "where order.paid = false\n"
- " and order.customer = :customer\n"
- " and price.product = product\n"
- " and catalog.effectiveDate < sysdate\n"
- " and catalog.effectiveDate >= all (\n"
- " select cat.effectiveDate \n"
- " from Catalog as cat\n"
- " where cat.effectiveDate < sysdate\n"
- " )\n"
- "group by order\n"
- "having sum(price.amount) > :minAmount\n"
- "order by sum(price.amount) desc]]>"
-#: index.docbook:870
-msgid "What a monster! Actually, in real life, I'm not very keen on subqueries, so my query was really more like this:"
-msgstr "괴물 같은 것! 실제로 실 생활에서, 나는 서브질의들을 매우 좋아하지 않아서, 나의 질의는 실제로 다음과 같았다:"
+#. Tag: para
+#: query_hql.xml:870
+#, no-c-format
+msgid ""
+"What a monster! Actually, in real life, I'm not very keen on subqueries, so "
+"my query was really more like this:"
+msgstr ""
+"괴물 같은 것! 실제로 실 생활에서, 나는 서브질의들을 매우 좋아하지 않아서, 나"
+"의 질의는 실제로 다음과 같았다:"
-#: index.docbook:875
+#. Tag: programlisting
+#: query_hql.xml:875
+#, no-c-format
msgid ""
- "<![CDATA[select order.id, sum(price.amount), count(item)\n"
- "from Order as order\n"
- " join order.lineItems as item\n"
- " join item.product as product,\n"
- " Catalog as catalog\n"
- " join catalog.prices as price\n"
- "where order.paid = false\n"
- " and order.customer = :customer\n"
- " and price.product = product\n"
- " and catalog = :currentCatalog\n"
- "group by order\n"
- "having sum(price.amount) > :minAmount\n"
- "order by sum(price.amount) desc]]>"
+"<![CDATA[select order.id, sum(price.amount), count(item)\n"
+"from Order as order\n"
+" join order.lineItems as item\n"
+" join item.product as product,\n"
+" Catalog as catalog\n"
+" join catalog.prices as price\n"
+"where order.paid = false\n"
+" and order.customer = :customer\n"
+" and price.product = product\n"
+" and catalog = :currentCatalog\n"
+"group by order\n"
+"having sum(price.amount) > :minAmount\n"
+"order by sum(price.amount) desc]]>"
msgstr ""
- "<![CDATA[select order.id, sum(price.amount), count(item)\n"
- "from Order as order\n"
- " join order.lineItems as item\n"
- " join item.product as product,\n"
- " Catalog as catalog\n"
- " join catalog.prices as price\n"
- "where order.paid = false\n"
- " and order.customer = :customer\n"
- " and price.product = product\n"
- " and catalog = :currentCatalog\n"
- "group by order\n"
- "having sum(price.amount) > :minAmount\n"
- "order by sum(price.amount) desc]]>"
-#: index.docbook:877
-msgid "The next query counts the number of payments in each status, excluding all payments in the <literal>AWAITING_APPROVAL</literal> status where the most recent status change was made by the current user. It translates to an SQL query with two inner joins and a correlated subselect against the <literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal> and <literal>PAYMENT_STATUS_CHANGE</literal> tables."
-msgstr "다음 질의는 현재 사용자에 의해 가장 최근의 상태 변경이 행해졌던 <literal>AWAITING_APPROVAL</literal> 상태에 있는 모든 지불들을 제외한, 각각의 상태에 있는 지불들의 개수를 카운트 한다. 그것은 <literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal>, <literal>PAYMENT_STATUS_CHANGE</literal> 테이블들에 대한 두 개의 inner 조인들과 하나의 상관관계 지워진 subselect를 가진 SQL 질의로 변환된다."
+#. Tag: para
+#: query_hql.xml:877
+#, no-c-format
+msgid ""
+"The next query counts the number of payments in each status, excluding all "
+"payments in the <literal>AWAITING_APPROVAL</literal> status where the most "
+"recent status change was made by the current user. It translates to an SQL "
+"query with two inner joins and a correlated subselect against the "
+"<literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal> and "
+"<literal>PAYMENT_STATUS_CHANGE</literal> tables."
+msgstr ""
+"다음 질의는 현재 사용자에 의해 가장 최근의 상태 변경이 행해졌던 "
+"<literal>AWAITING_APPROVAL</literal> 상태에 있는 모든 지불들을 제외한, 각각"
+"의 상태에 있는 지불들의 개수를 카운트 한다. 그것은 <literal>PAYMENT</"
+"literal>, <literal>PAYMENT_STATUS</literal>, <literal>PAYMENT_STATUS_CHANGE</"
+"literal> 테이블들에 대한 두 개의 inner 조인들과 하나의 상관관계 지워진 "
+"subselect를 가진 SQL 질의로 변환된다."
-#: index.docbook:885
+#. Tag: programlisting
+#: query_hql.xml:885
+#, no-c-format
msgid ""
- "<![CDATA[select count(payment), status.name\n"
- "from Payment as payment\n"
- " join payment.currentStatus as status\n"
- " join payment.statusChanges as statusChange\n"
- "where payment.status.name <> PaymentStatus.AWAITING_APPROVAL\n"
- " or (\n"
- " statusChange.timeStamp = (\n"
- " select max(change.timeStamp)\n"
- " from PaymentStatusChange change\n"
- " where change.payment = payment\n"
- " )\n"
- " and statusChange.user <> :currentUser\n"
- " )\n"
- "group by status.name, status.sortOrder\n"
- "order by status.sortOrder]]>"
+"<![CDATA[select count(payment), status.name\n"
+"from Payment as payment\n"
+" join payment.currentStatus as status\n"
+" join payment.statusChanges as statusChange\n"
+"where payment.status.name <> PaymentStatus.AWAITING_APPROVAL\n"
+" or (\n"
+" statusChange.timeStamp = (\n"
+" select max(change.timeStamp)\n"
+" from PaymentStatusChange change\n"
+" where change.payment = payment\n"
+" )\n"
+" and statusChange.user <> :currentUser\n"
+" )\n"
+"group by status.name, status.sortOrder\n"
+"order by status.sortOrder]]>"
msgstr ""
- "<![CDATA[select count(payment), status.name \n"
- "from Payment as payment \n"
- " join payment.currentStatus as status\n"
- " join payment.statusChanges as statusChange\n"
- "where payment.status.name <> PaymentStatus.AWAITING_APPROVAL\n"
- " or (\n"
- " statusChange.timeStamp = ( \n"
- " select max(change.timeStamp) \n"
- " from PaymentStatusChange change \n"
- " where change.payment = payment\n"
- " )\n"
- " and statusChange.user <> :currentUser\n"
- " )\n"
- "group by status.name, status.sortOrder\n"
- "order by status.sortOrder]]>"
-#: index.docbook:887
-msgid "If I would have mapped the <literal>statusChanges</literal> collection as a list, instead of a set, the query would have been much simpler to write."
-msgstr "만일 내가 <literal>statusChanges</literal> 콜렉션을 set가 아닌 list로 매핑했다면, 그 질의는 작성하기가 훨씬 더 간단했을 것이다."
+#. Tag: para
+#: query_hql.xml:887
+#, no-c-format
+msgid ""
+"If I would have mapped the <literal>statusChanges</literal> collection as a "
+"list, instead of a set, the query would have been much simpler to write."
+msgstr ""
+"만일 내가 <literal>statusChanges</literal> 콜렉션을 set가 아닌 list로 매핑했"
+"다면, 그 질의는 작성하기가 훨씬 더 간단했을 것이다."
-#: index.docbook:892
+#. Tag: programlisting
+#: query_hql.xml:892
+#, no-c-format
msgid ""
- "<![CDATA[select count(payment), status.name\n"
- "from Payment as payment\n"
- " join payment.currentStatus as status\n"
- "where payment.status.name <> PaymentStatus.AWAITING_APPROVAL\n"
- " or payment.statusChanges[ maxIndex(payment.statusChanges) ].user <> :currentUser\n"
- "group by status.name, status.sortOrder\n"
- "order by status.sortOrder]]>"
+"<![CDATA[select count(payment), status.name\n"
+"from Payment as payment\n"
+" join payment.currentStatus as status\n"
+"where payment.status.name <> PaymentStatus.AWAITING_APPROVAL\n"
+" or payment.statusChanges[ maxIndex(payment.statusChanges) ].user <> :"
+"currentUser\n"
+"group by status.name, status.sortOrder\n"
+"order by status.sortOrder]]>"
msgstr ""
- "<![CDATA[select count(payment), status.name \n"
- "from Payment as payment\n"
- " join payment.currentStatus as status\n"
- "where payment.status.name <> PaymentStatus.AWAITING_APPROVAL\n"
- " or payment.statusChanges[ maxIndex(payment.statusChanges) ].user <> :currentUser\n"
- "group by status.name, status.sortOrder\n"
- "order by status.sortOrder]]>"
-#: index.docbook:894
-msgid "The next query uses the MS SQL Server <literal>isNull()</literal> function to return all the accounts and unpaid payments for the organization to which the current user belongs. It translates to an SQL query with three inner joins, an outer join and a subselect against the <literal>ACCOUNT</literal>, <literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal>, <literal>ACCOUNT_TYPE</literal>, <literal>ORGANIZATION</literal> and <literal>ORG_USER</literal> tables."
-msgstr "다음 질의는 현재의 사용자가 속해 있는 조직의 모든 계정들과 지불되지 않은 지불들을 반환하는데 MS SQL Server <literal>isNull()</literal> 함수를 사용한다. 그것은 <literal>ACCOUNT</literal>, <literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal>, <literal>ACCOUNT_TYPE</literal>, <literal>ORGANIZATION</literal>, <literal>ORG_USER</literal> 테이블들에 대한 세 개의 inner 조인들, 하나의 outer 조인, 그리고 하나의 subselect를 가진 한 개의 SQL 질의로 번역된다."
+#. Tag: para
+#: query_hql.xml:894
+#, no-c-format
+msgid ""
+"The next query uses the MS SQL Server <literal>isNull()</literal> function "
+"to return all the accounts and unpaid payments for the organization to which "
+"the current user belongs. It translates to an SQL query with three inner "
+"joins, an outer join and a subselect against the <literal>ACCOUNT</literal>, "
+"<literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal>, "
+"<literal>ACCOUNT_TYPE</literal>, <literal>ORGANIZATION</literal> and "
+"<literal>ORG_USER</literal> tables."
+msgstr ""
+"다음 질의는 현재의 사용자가 속해 있는 조직의 모든 계정들과 지불되지 않은 지불"
+"들을 반환하는데 MS SQL Server <literal>isNull()</literal> 함수를 사용한다. 그"
+"것은 <literal>ACCOUNT</literal>, <literal>PAYMENT</literal>, "
+"<literal>PAYMENT_STATUS</literal>, <literal>ACCOUNT_TYPE</literal>, "
+"<literal>ORGANIZATION</literal>, <literal>ORG_USER</literal> 테이블들에 대한 "
+"세 개의 inner 조인들, 하나의 outer 조인, 그리고 하나의 subselect를 가진 한 개"
+"의 SQL 질의로 번역된다."
-#: index.docbook:903
+#. Tag: programlisting
+#: query_hql.xml:903
+#, no-c-format
msgid ""
- "<![CDATA[select account, payment\n"
- "from Account as account\n"
- " left outer join account.payments as payment\n"
- "where :currentUser in elements(account.holder.users)\n"
- " and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, PaymentStatus.UNPAID)\n"
- "order by account.type.sortOrder, account.accountNumber, payment.dueDate]]>"
+"<![CDATA[select account, payment\n"
+"from Account as account\n"
+" left outer join account.payments as payment\n"
+"where :currentUser in elements(account.holder.users)\n"
+" and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, "
+"PaymentStatus.UNPAID)\n"
+"order by account.type.sortOrder, account.accountNumber, payment.dueDate]]>"
msgstr ""
- "<![CDATA[select account, payment\n"
- "from Account as account\n"
- " left outer join account.payments as payment\n"
- "where :currentUser in elements(account.holder.users)\n"
- " and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, PaymentStatus.UNPAID)\n"
- "order by account.type.sortOrder, account.accountNumber, payment.dueDate]]>"
-#: index.docbook:905
-msgid "For some databases, we would need to do away with the (correlated) subselect."
-msgstr "몇몇 데이터베이스들의 경우, 우리는 (상관관계 지워진) subselect를 없앨 필요가 있을 것이다."
+#. Tag: para
+#: query_hql.xml:905
+#, no-c-format
+msgid ""
+"For some databases, we would need to do away with the (correlated) subselect."
+msgstr ""
+"몇몇 데이터베이스들의 경우, 우리는 (상관관계 지워진) subselect를 없앨 필요가 "
+"있을 것이다."
-#: index.docbook:909
+#. Tag: programlisting
+#: query_hql.xml:909
+#, no-c-format
msgid ""
- "<![CDATA[select account, payment\n"
- "from Account as account\n"
- " join account.holder.users as user\n"
- " left outer join account.payments as payment\n"
- "where :currentUser = user\n"
- " and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, PaymentStatus.UNPAID)\n"
- "order by account.type.sortOrder, account.accountNumber, payment.dueDate]]>"
+"<![CDATA[select account, payment\n"
+"from Account as account\n"
+" join account.holder.users as user\n"
+" left outer join account.payments as payment\n"
+"where :currentUser = user\n"
+" and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, "
+"PaymentStatus.UNPAID)\n"
+"order by account.type.sortOrder, account.accountNumber, payment.dueDate]]>"
msgstr ""
- "<![CDATA[select account, payment\n"
- "from Account as account\n"
- " join account.holder.users as user\n"
- " left outer join account.payments as payment\n"
- "where :currentUser = user\n"
- " and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, PaymentStatus.UNPAID)\n"
- "order by account.type.sortOrder, account.accountNumber, payment.dueDate]]>"
-#: index.docbook:914
+#. Tag: title
+#: query_hql.xml:914
+#, no-c-format
msgid "Bulk update and delete"
msgstr "대량 update와 delete"
-#: index.docbook:916
-msgid "HQL now supports <literal>update</literal>, <literal>delete</literal> and <literal>insert ... select ...</literal> statements. See <xref linkend=\"batch-direct\"/> for details."
-msgstr "HQL은 이제 <literal>update</literal>, <literal>delete</literal> 그리고 <literal>insert ... select ...</literal> 문장들을 지원한다. 상세한 것은 <xref linkend=\"batch-direct\"/>를 보라."
+#. Tag: para
+#: query_hql.xml:916
+#, no-c-format
+msgid ""
+"HQL now supports <literal>update</literal>, <literal>delete</literal> and "
+"<literal>insert ... select ...</literal> statements. See <xref linkend="
+"\"batch-direct\"/> for details."
+msgstr ""
+"HQL은 이제 <literal>update</literal>, <literal>delete</literal> 그리고 "
+"<literal>insert ... select ...</literal> 문장들을 지원한다. 상세한 것은 "
+"<xref linkend=\"batch-direct\"/>를 보라."
-#: index.docbook:924
+#. Tag: title
+#: query_hql.xml:924
+#, no-c-format
msgid "Tips & Tricks"
msgstr "팁들 & 트릭들"
-#: index.docbook:926
-msgid "You can count the number of query results without actually returning them:"
-msgstr "당신은 실제로 질의 결과들을 반환하지 않고서 그것들(질의 결과들)의 개수를 카운트할 수 있다:"
+#. Tag: para
+#: query_hql.xml:926
+#, no-c-format
+msgid ""
+"You can count the number of query results without actually returning them:"
+msgstr ""
+"당신은 실제로 질의 결과들을 반환하지 않고서 그것들(질의 결과들)의 개수를 카운"
+"트할 수 있다:"
-#: index.docbook:930
-msgid "<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\").iterate().next() ).intValue()]]>"
-msgstr "<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\").iterate().next() ).intValue()]]>"
+#. Tag: programlisting
+#: query_hql.xml:930
+#, no-c-format
+msgid ""
+"<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\")."
+"iterate().next() ).intValue()]]>"
+msgstr ""
-#: index.docbook:932
+#. Tag: para
+#: query_hql.xml:932
+#, no-c-format
msgid "To order a result by the size of a collection, use the following query:"
-msgstr "콜렉션의 크기에 따라 결과를 순서(ordering)지우려면, 다음 질의를 사용하라:"
+msgstr ""
+"콜렉션의 크기에 따라 결과를 순서(ordering)지우려면, 다음 질의를 사용하라:"
-#: index.docbook:936
+#. Tag: programlisting
+#: query_hql.xml:936
+#, no-c-format
msgid ""
- "<![CDATA[select usr.id, usr.name\n"
- "from User as usr\n"
- " left join usr.messages as msg\n"
- "group by usr.id, usr.name\n"
- "order by count(msg)]]>"
+"<![CDATA[select usr.id, usr.name\n"
+"from User as usr\n"
+" left join usr.messages as msg\n"
+"group by usr.id, usr.name\n"
+"order by count(msg)]]>"
msgstr ""
- "<![CDATA[select usr.id, usr.name\n"
- "from User as usr \n"
- " left join usr.messages as msg\n"
- "group by usr.id, usr.name\n"
- "order by count(msg)]]>"
-#: index.docbook:938
-msgid "If your database supports subselects, you can place a condition upon selection size in the where clause of your query:"
-msgstr "만일 당신의 데이터베이스가 subselect들을 지원할 경우, 당신은 당신의 질의의 where 절 내에 selection 사이즈에 대한 조건을 위치지울 수 있다:"
+#. Tag: para
+#: query_hql.xml:938
+#, no-c-format
+msgid ""
+"If your database supports subselects, you can place a condition upon "
+"selection size in the where clause of your query:"
+msgstr ""
+"만일 당신의 데이터베이스가 subselect들을 지원할 경우, 당신은 당신의 질의의 "
+"where 절 내에 selection 사이즈에 대한 조건을 위치지울 수 있다:"
-#: index.docbook:943
+#. Tag: programlisting
+#: query_hql.xml:943
+#, no-c-format
msgid "<![CDATA[from User usr where size(usr.messages) >= 1]]>"
-msgstr "<![CDATA[from User usr where size(usr.messages) >= 1]]>"
+msgstr ""
-#: index.docbook:945
+#. Tag: para
+#: query_hql.xml:945
+#, no-c-format
msgid "If your database doesn't support subselects, use the following query:"
-msgstr "만일 당신의 데이터베이스가 subselect를 지원하지 않을 경우, 다음 질의를 사용하라:"
+msgstr ""
+"만일 당신의 데이터베이스가 subselect를 지원하지 않을 경우, 다음 질의를 사용하"
+"라:"
-#: index.docbook:949
+#. Tag: programlisting
+#: query_hql.xml:949
+#, no-c-format
msgid ""
- "<![CDATA[select usr.id, usr.name\n"
- "from User usr.name\n"
- " join usr.messages msg\n"
- "group by usr.id, usr.name\n"
- "having count(msg) >= 1]]>"
+"<![CDATA[select usr.id, usr.name\n"
+"from User usr.name\n"
+" join usr.messages msg\n"
+"group by usr.id, usr.name\n"
+"having count(msg) >= 1]]>"
msgstr ""
- "<![CDATA[select usr.id, usr.name\n"
- "from User usr.name\n"
- " join usr.messages msg\n"
- "group by usr.id, usr.name\n"
- "having count(msg) >= 1]]>"
-#: index.docbook:951
-msgid "As this solution can't return a <literal>User</literal> with zero messages because of the inner join, the following form is also useful:"
-msgstr "이 해결책이 inner 조인 때문에 0개의 메시지를 가진 <literal>User</literal>를 반환할 수 없으므로, 다음 형식이 또한 유용하다:"
+#. Tag: para
+#: query_hql.xml:951
+#, no-c-format
+msgid ""
+"As this solution can't return a <literal>User</literal> with zero messages "
+"because of the inner join, the following form is also useful:"
+msgstr ""
+"이 해결책이 inner 조인 때문에 0개의 메시지를 가진 <literal>User</literal>를 "
+"반환할 수 없으므로, 다음 형식이 또한 유용하다:"
-#: index.docbook:956
+#. Tag: programlisting
+#: query_hql.xml:956
+#, no-c-format
msgid ""
- "<![CDATA[select usr.id, usr.name\n"
- "from User as usr\n"
- " left join usr.messages as msg\n"
- "group by usr.id, usr.name\n"
- "having count(msg) = 0]]>"
+"<![CDATA[select usr.id, usr.name\n"
+"from User as usr\n"
+" left join usr.messages as msg\n"
+"group by usr.id, usr.name\n"
+"having count(msg) = 0]]>"
msgstr ""
- "<![CDATA[select usr.id, usr.name\n"
- "from User as usr\n"
- " left join usr.messages as msg\n"
- "group by usr.id, usr.name\n"
- "having count(msg) = 0]]>"
-#: index.docbook:958
+#. Tag: para
+#: query_hql.xml:958
+#, no-c-format
msgid "Properties of a JavaBean can be bound to named query parameters:"
-msgstr "하나의 JavaBean의 프로퍼티들은 명명된 질의 파라미터들에 바인드될 수 있다:"
+msgstr ""
+"하나의 JavaBean의 프로퍼티들은 명명된 질의 파라미터들에 바인드될 수 있다:"
-#: index.docbook:962
+#. Tag: programlisting
+#: query_hql.xml:962
+#, no-c-format
msgid ""
- "<![CDATA[Query q = s.createQuery(\"from foo Foo as foo where foo.name=:name and foo.size=:size\");\n"
- "q.setProperties(fooBean); // fooBean has getName() and getSize()\n"
- "List foos = q.list();]]>"
+"<![CDATA[Query q = s.createQuery(\"from foo Foo as foo where foo.name=:name "
+"and foo.size=:size\");\n"
+"q.setProperties(fooBean); // fooBean has getName() and getSize()\n"
+"List foos = q.list();]]>"
msgstr ""
- "<![CDATA[Query q = s.createQuery(\"from foo Foo as foo where foo.name=:name and foo.size=:size\");\n"
- "q.setProperties(fooBean); // fooBean has getName() and getSize()\n"
- "List foos = q.list();]]>"
-#: index.docbook:964
-msgid "Collections are pageable by using the <literal>Query</literal> interface with a filter:"
-msgstr "콜렉션들은 필터를 가진 <literal>Query</literal> 인터페이스를 사용하여 쪼매김하는 것이 가능하다:"
+#. Tag: para
+#: query_hql.xml:964
+#, no-c-format
+msgid ""
+"Collections are pageable by using the <literal>Query</literal> interface "
+"with a filter:"
+msgstr ""
+"콜렉션들은 필터를 가진 <literal>Query</literal> 인터페이스를 사용하여 쪼매김"
+"하는 것이 가능하다:"
-#: index.docbook:968
+#. Tag: programlisting
+#: query_hql.xml:968
+#, no-c-format
msgid ""
- "<![CDATA[Query q = s.createFilter( collection, \"\" ); // the trivial filter\n"
- "q.setMaxResults(PAGE_SIZE);\n"
- "q.setFirstResult(PAGE_SIZE * pageNumber);\n"
- "List page = q.list();]]>"
+"<![CDATA[Query q = s.createFilter( collection, \"\" ); // the trivial "
+"filter\n"
+"q.setMaxResults(PAGE_SIZE);\n"
+"q.setFirstResult(PAGE_SIZE * pageNumber);\n"
+"List page = q.list();]]>"
msgstr ""
- "<![CDATA[Query q = s.createFilter( collection, \"\" ); // the trivial filter\n"
- "q.setMaxResults(PAGE_SIZE);\n"
- "q.setFirstResult(PAGE_SIZE * pageNumber);\n"
- "List page = q.list();]]>"
-#: index.docbook:970
+#. Tag: para
+#: query_hql.xml:970
+#, no-c-format
msgid "Collection elements may be ordered or grouped using a query filter:"
-msgstr "콜렉션 요소들은 질의 필터를 사용하여 순서(ordering)지워지거나 그룹지워질 수 도 있다:"
+msgstr ""
+"콜렉션 요소들은 질의 필터를 사용하여 순서(ordering)지워지거나 그룹지워질 수 "
+"도 있다:"
-#: index.docbook:974
+#. Tag: programlisting
+#: query_hql.xml:974
+#, no-c-format
msgid ""
- "<![CDATA[Collection orderedCollection = s.filter( collection, \"order by this.amount\" );\n"
- "Collection counts = s.filter( collection, \"select this.type, count(this) group by this.type\" );]]>"
+"<![CDATA[Collection orderedCollection = s.filter( collection, \"order by "
+"this.amount\" );\n"
+"Collection counts = s.filter( collection, \"select this.type, count(this) "
+"group by this.type\" );]]>"
msgstr ""
- "<![CDATA[Collection orderedCollection = s.filter( collection, \"order by this.amount\" );\n"
- "Collection counts = s.filter( collection, \"select this.type, count(this) group by this.type\" );]]>"
-#: index.docbook:976
+#. Tag: para
+#: query_hql.xml:976
+#, no-c-format
msgid "You can find the size of a collection without initializing it:"
msgstr "당신은 콜렉션을 초기화 하지 않고서 그것(콜렉션)의 크기를 찾을 수 있다:"
-#: index.docbook:980
-msgid "<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\").iterate().next() ).intValue();]]>"
-msgstr "<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\").iterate().next() ).intValue();]]>"
+#. Tag: programlisting
+#: query_hql.xml:980
+#, no-c-format
+msgid ""
+"<![CDATA[( (Integer) session.createQuery(\"select count(*) from ....\")."
+"iterate().next() ).intValue();]]>"
+msgstr ""
-#: index.docbook:985
+#. Tag: title
+#: query_hql.xml:985
+#, no-c-format
msgid "Components"
msgstr "컴포넌트들"
-#: index.docbook:987
-msgid "Components might be used in just about every way that simple value types can be used in HQL queries. They can appear in the <literal>select</literal> clause:"
-msgstr "컴포넌트들은 단지 간단한 값 유형들이 HQL 질의들 내에 사용될 수 있는 모든 방법으로 사용될 수 있다. 그것들은 <literal>select</literal> 절 내에 나타날 수 있다."
+#. Tag: para
+#: query_hql.xml:987
+#, no-c-format
+msgid ""
+"Components might be used in just about every way that simple value types can "
+"be used in HQL queries. They can appear in the <literal>select</literal> "
+"clause:"
+msgstr ""
+"컴포넌트들은 단지 간단한 값 유형들이 HQL 질의들 내에 사용될 수 있는 모든 방법"
+"으로 사용될 수 있다. 그것들은 <literal>select</literal> 절 내에 나타날 수 있"
+"다."
-#: index.docbook:992, index.docbook:1038
+#. Tag: programlisting
+#: query_hql.xml:992 query_hql.xml:1038
+#, no-c-format
msgid "<![CDATA[select p.name from from Person p]]>"
-msgstr "<![CDATA[select p.name from from Person p]]>"
+msgstr ""
-#: index.docbook:993
+#. Tag: programlisting
+#: query_hql.xml:993
+#, no-c-format
msgid "<![CDATA[select p.name.first from from Person p]]>"
-msgstr "<![CDATA[select p.name.first from from Person p]]>"
+msgstr ""
-#: index.docbook:995
-msgid "where the Person's name property is a component. Components can also be used in the <literal>where</literal> clause:"
-msgstr "여기서 Person의 name 속성은 컴포넌트이다. 컴포넌트들은 또한 <literal>where</literal> 절 내에 사용될 수 있다:"
+#. Tag: para
+#: query_hql.xml:995
+#, no-c-format
+msgid ""
+"where the Person's name property is a component. Components can also be used "
+"in the <literal>where</literal> clause:"
+msgstr ""
+"여기서 Person의 name 속성은 컴포넌트이다. 컴포넌트들은 또한 <literal>where</"
+"literal> 절 내에 사용될 수 있다:"
-#: index.docbook:1000
+#. Tag: programlisting
+#: query_hql.xml:1000
+#, no-c-format
msgid "<![CDATA[from from Person p where p.name = :name]]>"
-msgstr "<![CDATA[from from Person p where p.name = :name]]>"
+msgstr ""
-#: index.docbook:1001
+#. Tag: programlisting
+#: query_hql.xml:1001
+#, no-c-format
msgid "<![CDATA[from from Person p where p.name.first = :firstName]]>"
-msgstr "<![CDATA[from from Person p where p.name.first = :firstName]]>"
+msgstr ""
-#: index.docbook:1003
+#. Tag: para
+#: query_hql.xml:1003
+#, no-c-format
msgid "Components can also be used in the <literal>order by</literal> clause:"
msgstr "컴포넌트들은 또한 <literal>order by</literal> 절 내에 사용될 수 있다:"
-#: index.docbook:1007
+#. Tag: programlisting
+#: query_hql.xml:1007
+#, no-c-format
msgid "<![CDATA[from from Person p order by p.name]]>"
-msgstr "<![CDATA[from from Person p order by p.name]]>"
+msgstr ""
-#: index.docbook:1008
+#. Tag: programlisting
+#: query_hql.xml:1008
+#, no-c-format
msgid "<![CDATA[from from Person p order by p.name.first]]>"
-msgstr "<![CDATA[from from Person p order by p.name.first]]>"
+msgstr ""
-#: index.docbook:1010
-msgid "Another common use of components is in <xref linkend=\"queryhql-tuple\"/>row value constructors."
-msgstr "컴포넌트들에 대한 또 다른 공통적인 사용은 <xref linkend=\"queryhql-tuple\"/>row value constructors에 있다."
+#. Tag: para
+#: query_hql.xml:1010
+#, no-c-format
+msgid ""
+"Another common use of components is in <link linkend=\"queryhql-tuple\">row "
+"value constructors</link>."
+msgstr ""
+"컴포넌트들에 대한 또 다른 공통적인 사용은 <xref linkend=\"queryhql-tuple"
+"\">row value constructors</xref>에 있다."
-#: index.docbook:1016
+#. Tag: title
+#: query_hql.xml:1016
+#, no-c-format
msgid "Row value constructor syntax"
msgstr "Row value constructor 구문"
-#: index.docbook:1018
-msgid "HQL supports the use of ANSI SQL <literal>row value constructor</literal> syntax (sometimes called <literal>tuple</literal> syntax), even though the underlying database may not support that notion. Here we are generally referring to multi-valued comparisons, typically associated with components. Consider an entity Person which defines a name component:"
-msgstr "HQL은 ANSI SQL <literal>row value constructor</literal> 구문(종종 <literal>tuple</literal> 구문이라 명명된다)의 사용을 지원한다. 비록 데이터베이스가 그 개념을 지원하지 않을지라도 그러하다. 여기서 우리는 전형적으로 컴포넌트들과 연관되어 있는 다중-값 비교들을 일반적으로 언급하고 있다. name 컴포넌트를 정의하는 Person 엔티티를 검토하자:"
+#. Tag: para
+#: query_hql.xml:1018
+#, no-c-format
+msgid ""
+"HQL supports the use of ANSI SQL <literal>row value constructor</literal> "
+"syntax (sometimes called <literal>tuple</literal> syntax), even though the "
+"underlying database may not support that notion. Here we are generally "
+"referring to multi-valued comparisons, typically associated with components. "
+"Consider an entity Person which defines a name component:"
+msgstr ""
+"HQL은 ANSI SQL <literal>row value constructor</literal> 구문(종종 "
+"<literal>tuple</literal> 구문이라 명명된다)의 사용을 지원한다. 비록 데이터베"
+"이스가 그 개념을 지원하지 않을지라도 그러하다. 여기서 우리는 전형적으로 컴포"
+"넌트들과 연관되어 있는 다중-값 비교들을 일반적으로 언급하고 있다. name 컴포넌"
+"트를 정의하는 Person 엔티티를 검토하자:"
-#: index.docbook:1025
-msgid "<![CDATA[from Person p where p.name.first='John' and p.name.last='Jingleheimer-Schmidt']]>"
-msgstr "<![CDATA[from Person p where p.name.first='John' and p.name.last='Jingleheimer-Schmidt']]>"
+#. Tag: programlisting
+#: query_hql.xml:1025
+#, no-c-format
+msgid ""
+"<![CDATA[from Person p where p.name.first='John' and p.name."
+"last='Jingleheimer-Schmidt']]>"
+msgstr ""
-#: index.docbook:1027
-msgid "That's valid syntax, although a little verbose. It be nice to make this a bit more concise and use <literal>row value constructor</literal> syntax:"
-msgstr "비록 약간 장황스럽지만 그것은 유효한 구문이다. 이것을 약간 더 간결하게 만들고 <literal>row value constructor</literal> 구문을 사용하는 것이 좋다:"
+#. Tag: para
+#: query_hql.xml:1027
+#, no-c-format
+msgid ""
+"That's valid syntax, although a little verbose. It be nice to make this a "
+"bit more concise and use <literal>row value constructor</literal> syntax:"
+msgstr ""
+"비록 약간 장황스럽지만 그것은 유효한 구문이다. 이것을 약간 더 간결하게 만들"
+"고 <literal>row value constructor</literal> 구문을 사용하는 것이 좋다:"
-#: index.docbook:1032
+#. Tag: programlisting
+#: query_hql.xml:1032
+#, no-c-format
msgid "<![CDATA[from Person p where p.name=('John', 'Jingleheimer-Schmidt')]]>"
-msgstr "<![CDATA[from Person p where p.name=('John', 'Jingleheimer-Schmidt')]]>"
+msgstr ""
-#: index.docbook:1034
-msgid "It can also be useful to specify this in the <literal>select</literal> clause:"
-msgstr "<literal>select</literal>절 내에 이것을 지정하는 것이 또한 유용할 수 있다:"
+#. Tag: para
+#: query_hql.xml:1034
+#, no-c-format
+msgid ""
+"It can also be useful to specify this in the <literal>select</literal> "
+"clause:"
+msgstr ""
+"<literal>select</literal>절 내에 이것을 지정하는 것이 또한 유용할 수 있다:"
-#: index.docbook:1040
-msgid "Another time using <literal>row value constructor</literal> syntax can be beneficial is when using subqueries needing to compare against multiple values:"
-msgstr "<literal>row value constructor</literal> 구문을 사용하는 또 다른 경우는 다중 값들에 대해 비교할 필요가 있는 서브 질의들을 사용할 때이다:"
+#. Tag: para
+#: query_hql.xml:1040
+#, no-c-format
+msgid ""
+"Another time using <literal>row value constructor</literal> syntax can be "
+"beneficial is when using subqueries needing to compare against multiple "
+"values:"
+msgstr ""
+"<literal>row value constructor</literal> 구문을 사용하는 또 다른 경우는 다중 "
+"값들에 대해 비교할 필요가 있는 서브 질의들을 사용할 때이다:"
-#: index.docbook:1045
+#. Tag: programlisting
+#: query_hql.xml:1045
+#, no-c-format
msgid ""
- "<![CDATA[from Cat as cat\n"
- "where not ( cat.name, cat.color ) in (\n"
- " select cat.name, cat.color from DomesticCat cat\n"
- ")]]>"
+"<![CDATA[from Cat as cat\n"
+"where not ( cat.name, cat.color ) in (\n"
+" select cat.name, cat.color from DomesticCat cat\n"
+")]]>"
msgstr ""
- "<![CDATA[from Cat as cat\n"
- "where not ( cat.name, cat.color ) in (\n"
- " select cat.name, cat.color from DomesticCat cat\n"
- ")]]>"
-#: index.docbook:1047
-msgid "One thing to consider when deciding if you want to use this syntax is that the query will be dependent upon the ordering of the component sub-properties in the metadata."
-msgstr "만일 당신이 이 구문을 사용하고자 원할 경우에 고려해야 할 한 가지는 질의가 메타데이터 내에 있는 컴포넌트 서브-속성들의 순서에 종속될 것이라는 점이다."
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: para
+#: query_hql.xml:1047
+#, no-c-format
+msgid ""
+"One thing to consider when deciding if you want to use this syntax is that "
+"the query will be dependent upon the ordering of the component sub-"
+"properties in the metadata."
+msgstr ""
+"만일 당신이 이 구문을 사용하고자 원할 경우에 고려해야 할 한 가지는 질의가 메"
+"타데이터 내에 있는 컴포넌트 서브-속성들의 순서에 종속될 것이라는 점이다."
Modified: core/trunk/documentation/manual/translations/ko-KR/content/query_sql.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/query_sql.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/query_sql.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,1044 +1,1476 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: query_sql.xml:5
+#, no-c-format
msgid "Native SQL"
msgstr "Native SQL"
-#: index.docbook:7
-msgid "You may also express queries in the native SQL dialect of your database. This is useful if you want to utilize database specific features such as query hints or the <literal>CONNECT</literal> keyword in Oracle. It also provides a clean migration path from a direct SQL/JDBC based application to Hibernate."
-msgstr "당신은 또한 당신의 데이터베이스의 native SQL dialect로 질의들을 표현할 수도 있다. 당신이 오라클의 질의 힌트들 또는 <literal>CONNECT</literal> 키워드와 같은 데이터베이스 지정적인 특징들을 활용하고자 원할 경우에 이것이 유용하다. 그것은 또한 직접적인 SQL/JDBC 기반의 어플리케이션으로부터 Hibernate로의 보다 명료한 이전 경로를 제공한다."
+#. Tag: para
+#: query_sql.xml:7
+#, no-c-format
+msgid ""
+"You may also express queries in the native SQL dialect of your database. "
+"This is useful if you want to utilize database specific features such as "
+"query hints or the <literal>CONNECT</literal> keyword in Oracle. It also "
+"provides a clean migration path from a direct SQL/JDBC based application to "
+"Hibernate."
+msgstr ""
+"당신은 또한 당신의 데이터베이스의 native SQL dialect로 질의들을 표현할 수도 "
+"있다. 당신이 오라클의 질의 힌트들 또는 <literal>CONNECT</literal> 키워드와 같"
+"은 데이터베이스 지정적인 특징들을 활용하고자 원할 경우에 이것이 유용하다. 그"
+"것은 또한 직접적인 SQL/JDBC 기반의 어플리케이션으로부터 Hibernate로의 보다 명"
+"료한 이전 경로를 제공한다."
-#: index.docbook:13
-msgid "Hibernate3 allows you to specify handwritten SQL (including stored procedures) for all create, update, delete, and load operations."
-msgstr "Hibernate3은 또한 모든 create, update, delete, load 오퍼레이션들에 대해 (내장 프로시저들을 포함하여) 손으로 작성된 SQL을 지정하는 것을 당신에게 허용해준다."
+#. Tag: para
+#: query_sql.xml:13
+#, no-c-format
+msgid ""
+"Hibernate3 allows you to specify handwritten SQL (including stored "
+"procedures) for all create, update, delete, and load operations."
+msgstr ""
+"Hibernate3은 또한 모든 create, update, delete, load 오퍼레이션들에 대해 (내"
+"장 프로시저들을 포함하여) 손으로 작성된 SQL을 지정하는 것을 당신에게 허용해준"
+"다."
-#: index.docbook:17
+#. Tag: title
+#: query_sql.xml:17
+#, no-c-format
msgid "Using a <literal>SQLQuery</literal>"
msgstr "<literal>SQLQuery</literal> 사용하기"
-#: index.docbook:19
-msgid "Execution of native SQL queries is controlled via the <literal>SQLQuery</literal> interface, which is obtained by calling <literal>Session.createSQLQuery()</literal>. The following describes how to use this API for querying."
-msgstr "native SQL 질의들의 실행은 <literal>SQLQuery</literal> 인터페이스를 통해 제어되며, 그것은 <literal>Session.createSQLQuery()</literal>을 호출하여 획득된다. 다음은 이 API를 질의에 사용하는 방법을 설명한다."
+#. Tag: para
+#: query_sql.xml:19
+#, no-c-format
+msgid ""
+"Execution of native SQL queries is controlled via the <literal>SQLQuery</"
+"literal> interface, which is obtained by calling <literal>Session."
+"createSQLQuery()</literal>. The following describes how to use this API for "
+"querying."
+msgstr ""
+"native SQL 질의들의 실행은 <literal>SQLQuery</literal> 인터페이스를 통해 제어"
+"되며, 그것은 <literal>Session.createSQLQuery()</literal>을 호출하여 획득된"
+"다. 다음은 이 API를 질의에 사용하는 방법을 설명한다."
-#: index.docbook:25
+#. Tag: title
+#: query_sql.xml:25
+#, no-c-format
msgid "Scalar queries"
msgstr "스칼라 질의들"
-#: index.docbook:27
+#. Tag: para
+#: query_sql.xml:27
+#, no-c-format
msgid "The most basic SQL query is to get a list of scalars (values)."
msgstr "가장 기본적인 SQL 질의는 스칼라들(값들)의 목록을 얻는 것이다."
-#: index.docbook:30
+#. Tag: programlisting
+#: query_sql.xml:30
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\").list();\n"
- "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").list();\n"
- "]]>"
+"<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\").list();\n"
+"sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").list();\n"
+"]]>"
msgstr ""
- "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\").list();\n"
- "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").list();\n"
- "]]>"
-#: index.docbook:32
-msgid "These will both return a List of Object arrays (Object[]) with scalar values for each column in the CATS table. Hibernate will use ResultSetMetadata to deduce the actual order and types of the returned scalar values."
-msgstr "이것들은 둘다 CATS 테이블 내에 있는 각각의 컬럼에 대한 스칼라 값들을 가진 Object 배열들의 List를 반환할 것이다. Hibernate는 반환되는 스칼라 값들의 실제 순서와 타입들을 도출하는데 ResultSetMetadata를 사용할 것이다."
+#. Tag: para
+#: query_sql.xml:32
+#, no-c-format
+msgid ""
+"These will both return a List of Object arrays (Object[]) with scalar values "
+"for each column in the CATS table. Hibernate will use ResultSetMetadata to "
+"deduce the actual order and types of the returned scalar values."
+msgstr ""
+"이것들은 둘다 CATS 테이블 내에 있는 각각의 컬럼에 대한 스칼라 값들을 가진 "
+"Object 배열들의 List를 반환할 것이다. Hibernate는 반환되는 스칼라 값들의 실"
+"제 순서와 타입들을 도출하는데 ResultSetMetadata를 사용할 것이다."
-#: index.docbook:37
-msgid "To avoid the overhead of using <literal>ResultSetMetadata</literal> or simply to be more explicit in what is returned one can use <literal>addScalar()</literal>."
-msgstr "<literal>ResultSetMetadata</literal> 사용의 오버헤드를 피하거나 간단하게는 반환되는 것을 보다 명시적이게끔 하기 위해 우리는 <literal>addScalar()</literal>를 사용할 수 있다."
+#. Tag: para
+#: query_sql.xml:37
+#, no-c-format
+msgid ""
+"To avoid the overhead of using <literal>ResultSetMetadata</literal> or "
+"simply to be more explicit in what is returned one can use <literal>addScalar"
+"()</literal>."
+msgstr ""
+"<literal>ResultSetMetadata</literal> 사용의 오버헤드를 피하거나 간단하게는 반"
+"환되는 것을 보다 명시적이게끔 하기 위해 우리는 <literal>addScalar()</literal>"
+"를 사용할 수 있다."
-#: index.docbook:41
+#. Tag: programlisting
+#: query_sql.xml:41
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
- " .addScalar(\"ID\", Hibernate.LONG)\n"
- " .addScalar(\"NAME\", Hibernate.STRING)\n"
- " .addScalar(\"BIRTHDATE\", Hibernate.DATE)\n"
- "]]>"
+"<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
+" .addScalar(\"ID\", Hibernate.LONG)\n"
+" .addScalar(\"NAME\", Hibernate.STRING)\n"
+" .addScalar(\"BIRTHDATE\", Hibernate.DATE)\n"
+"]]>"
msgstr ""
- "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
- " .addScalar(\"ID\", Hibernate.LONG)\n"
- " .addScalar(\"NAME\", Hibernate.STRING)\n"
- " .addScalar(\"BIRTHDATE\", Hibernate.DATE)\n"
- "]]>"
-#: index.docbook:43, index.docbook:89, index.docbook:170, index.docbook:321
+#. Tag: para
+#: query_sql.xml:43 query_sql.xml:89 query_sql.xml:170 query_sql.xml:321
+#, no-c-format
msgid "This query specified:"
msgstr "이 질의는 다음을 지정했다:"
-#: index.docbook:47, index.docbook:93, index.docbook:325
+#. Tag: para
+#: query_sql.xml:47 query_sql.xml:93 query_sql.xml:325
+#, no-c-format
msgid "the SQL query string"
msgstr "SQL 질의 문자열"
-#: index.docbook:51
+#. Tag: para
+#: query_sql.xml:51
+#, no-c-format
msgid "the columns and types to return"
msgstr "반환할 컬럼들과 타입들"
-#: index.docbook:55
-msgid "This will still return Object arrays, but now it will not use <literal>ResultSetMetdata</literal> but will instead explicitly get the ID, NAME and BIRTHDATE column as respectively a Long, String and a Short from the underlying resultset. This also means that only these three columns will be returned, even though the query is using <literal>*</literal> and could return more than the three listed columns."
-msgstr "이것은 여전히 Object 배열들을 반환할 것이지만, 이제 그것은 <literal>ResultSetMetdata</literal>를 사용하지 않을 것이고 대신에 기반 결과셋으로부터 ID, NAME 그리고 BIRTHDATE 컬럼을 각각 Long, String 그리고 Short 타입으로 반환할 것이다. 심지어 그 질의가 <literal>*</literal>를 사용하고 세 개의 열거된 컬럼들 보다 더 많은 것을 반환할 수 있을지라도, 이것은 또한 오직 이들 세 개의 컬럼들 만이 반환될 것임을 의미한다."
+#. Tag: para
+#: query_sql.xml:55
+#, no-c-format
+msgid ""
+"This will still return Object arrays, but now it will not use "
+"<literal>ResultSetMetdata</literal> but will instead explicitly get the ID, "
+"NAME and BIRTHDATE column as respectively a Long, String and a Short from "
+"the underlying resultset. This also means that only these three columns will "
+"be returned, even though the query is using <literal>*</literal> and could "
+"return more than the three listed columns."
+msgstr ""
+"이것은 여전히 Object 배열들을 반환할 것이지만, 이제 그것은 "
+"<literal>ResultSetMetdata</literal>를 사용하지 않을 것이고 대신에 기반 결과셋"
+"으로부터 ID, NAME 그리고 BIRTHDATE 컬럼을 각각 Long, String 그리고 Short 타입"
+"으로 반환할 것이다. 심지어 그 질의가 <literal>*</literal>를 사용하고 세 개의 "
+"열거된 컬럼들 보다 더 많은 것을 반환할 수 있을지라도, 이것은 또한 오직 이들 "
+"세 개의 컬럼들 만이 반환될 것임을 의미한다."
-#: index.docbook:63
-msgid "It is possible to leave out the type information for all or some of the scalars."
+#. Tag: para
+#: query_sql.xml:63
+#, no-c-format
+msgid ""
+"It is possible to leave out the type information for all or some of the "
+"scalars."
msgstr "스칼라들 중 몇몇 또는 전부에 대한 타입 정보를 남겨두는 것이 가능하다."
-#: index.docbook:66
+#. Tag: programlisting
+#: query_sql.xml:66
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
- " .addScalar(\"ID\", Hibernate.LONG)\n"
- " .addScalar(\"NAME\")\n"
- " .addScalar(\"BIRTHDATE\")\n"
- "]]>"
+"<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
+" .addScalar(\"ID\", Hibernate.LONG)\n"
+" .addScalar(\"NAME\")\n"
+" .addScalar(\"BIRTHDATE\")\n"
+"]]>"
msgstr ""
- "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\")\n"
- " .addScalar(\"ID\", Hibernate.LONG)\n"
- " .addScalar(\"NAME\")\n"
- " .addScalar(\"BIRTHDATE\")\n"
- "]]>"
-#: index.docbook:68
-msgid "This is essentially the same query as before, but now <literal>ResultSetMetaData</literal> is used to decide the type of NAME and BIRTHDATE where as the type of ID is explicitly specified."
-msgstr "이것은 본질적으로 앞의 것과 동일한 질의이지만, 이제 <literal>ResultSetMetaData</literal>는 ID의 타입이 명시적으로 지정되어 있으므로 NAME과 BIRTHDATE의 타입을 결정하는데 사용된다."
+#. Tag: para
+#: query_sql.xml:68
+#, no-c-format
+msgid ""
+"This is essentially the same query as before, but now "
+"<literal>ResultSetMetaData</literal> is used to decide the type of NAME and "
+"BIRTHDATE where as the type of ID is explicitly specified."
+msgstr ""
+"이것은 본질적으로 앞의 것과 동일한 질의이지만, 이제 "
+"<literal>ResultSetMetaData</literal>는 ID의 타입이 명시적으로 지정되어 있으므"
+"로 NAME과 BIRTHDATE의 타입을 결정하는데 사용된다."
-#: index.docbook:72
-msgid "How the java.sql.Types returned from ResultSetMetaData is mapped to Hibernate types is controlled by the Dialect. If a specific type is not mapped or does not result in the expected type it is possible to customize it via calls to <literal>registerHibernateType</literal> in the Dialect."
-msgstr "java.sql.Types returned from ResultSetMetaData이 Hibernate 타입들로 매핑되는 방법은 Dialect에 의해 제어된다. 만일 특정 타입이 매핑되지 않거나 예상되는 타입으로 귀결되지 않을 경우에 Dialect 내에 있는 <literal>registerHibernateType</literal>에 대한 호출들을 통해 그것을 맞춤화 시키는 것이 가능하다."
+#. Tag: para
+#: query_sql.xml:72
+#, no-c-format
+msgid ""
+"How the java.sql.Types returned from ResultSetMetaData is mapped to "
+"Hibernate types is controlled by the Dialect. If a specific type is not "
+"mapped or does not result in the expected type it is possible to customize "
+"it via calls to <literal>registerHibernateType</literal> in the Dialect."
+msgstr ""
+"java.sql.Types returned from ResultSetMetaData이 Hibernate 타입들로 매핑되는 "
+"방법은 Dialect에 의해 제어된다. 만일 특정 타입이 매핑되지 않거나 예상되는 타"
+"입으로 귀결되지 않을 경우에 Dialect 내에 있는 "
+"<literal>registerHibernateType</literal>에 대한 호출들을 통해 그것을 맞춤화 "
+"시키는 것이 가능하다."
-#: index.docbook:80
+#. Tag: title
+#: query_sql.xml:80
+#, no-c-format
msgid "Entity queries"
msgstr "Entity 질의들"
-#: index.docbook:82
-msgid "The above queries were all about returning scalar values, basically returning the \"raw\" values from the resultset. The following shows how to get entity objects from a native sql query via <literal>addEntity()</literal>."
-msgstr "위의 질의들은 스칼라 값들을 반환하는 것, 결과셋들로부터 \"원래의\" 값들을 기본적으로 반환하는 것에 대한 전부였다. 다음은 <literal>addEntity()</literal>를 통해 native sql 질의로부터 엔티티 객체들을 얻는 방법을 보여준다."
+#. Tag: para
+#: query_sql.xml:82
+#, no-c-format
+msgid ""
+"The above queries were all about returning scalar values, basically "
+"returning the \"raw\" values from the resultset. The following shows how to "
+"get entity objects from a native sql query via <literal>addEntity()</"
+"literal>."
+msgstr ""
+"위의 질의들은 스칼라 값들을 반환하는 것, 결과셋들로부터 \"원래의\" 값들을 기"
+"본적으로 반환하는 것에 대한 전부였다. 다음은 <literal>addEntity()</literal>"
+"를 통해 native sql 질의로부터 엔티티 객체들을 얻는 방법을 보여준다."
-#: index.docbook:87
+#. Tag: programlisting
+#: query_sql.xml:87
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\").addEntity(Cat.class);\n"
- "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").addEntity(Cat.class);\n"
- "]]>"
+"<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\").addEntity(Cat.class);\n"
+"sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").addEntity(Cat."
+"class);\n"
+"]]>"
msgstr ""
- "<![CDATA[sess.createSQLQuery(\"SELECT * FROM CATS\").addEntity(Cat.class);\n"
- "sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE FROM CATS\").addEntity(Cat.class);\n"
- "]]>"
-#: index.docbook:97
+#. Tag: para
+#: query_sql.xml:97
+#, no-c-format
msgid "the entity returned by the query"
msgstr "그 질의에 의해 반환되는 엔티티"
-#: index.docbook:101
-msgid "Assuming that Cat is mapped as a class with the columns ID, NAME and BIRTHDATE the above queries will both return a List where each element is a Cat entity."
-msgstr "Cat이 컬럼 ID, NAME 그리고 BIRTHDATE로서 매핑된다고 가정하면, 위의 질의들은 둘다 각각의 요소가 하나의 Cat 엔티티인 하나의 List를 반환할 것이다."
+#. Tag: para
+#: query_sql.xml:101
+#, no-c-format
+msgid ""
+"Assuming that Cat is mapped as a class with the columns ID, NAME and "
+"BIRTHDATE the above queries will both return a List where each element is a "
+"Cat entity."
+msgstr ""
+"Cat이 컬럼 ID, NAME 그리고 BIRTHDATE로서 매핑된다고 가정하면, 위의 질의들은 "
+"둘다 각각의 요소가 하나의 Cat 엔티티인 하나의 List를 반환할 것이다."
-#: index.docbook:105
-msgid "If the entity is mapped with a <literal>many-to-one</literal> to another entity it is required to also return this when performing the native query, otherwise a database specific \"column not found\" error will occur. The additional columns will automatically be returned when using the * notation, but we prefer to be explicit as in the following example for a <literal>many-to-one</literal> to a <literal>Dog</literal>:"
-msgstr "만일 그 엔티티가 또 다른 엔티티에 대해 <literal>many-to-one</literal>로 매핑되어 있다면 또한 native 질의를 실행할 때 이것을 반환하는 것이 필수적고, 그 밖의 경우 데이터베이스 지정적인 \"컬럼이 발견되지 않았습니다\" 오류가 일어날 것이다. 추가적인 컬럼은 * 표기를 사용할 자동적으로 반환될 것이지만, 우리는 다음 <literal>Dog</literal>에 대한 <literal>many-to-one</literal> 예제에서처럼 명시적인 것을 더 선호한다:"
+#. Tag: para
+#: query_sql.xml:105
+#, no-c-format
+msgid ""
+"If the entity is mapped with a <literal>many-to-one</literal> to another "
+"entity it is required to also return this when performing the native query, "
+"otherwise a database specific \"column not found\" error will occur. The "
+"additional columns will automatically be returned when using the * notation, "
+"but we prefer to be explicit as in the following example for a <literal>many-"
+"to-one</literal> to a <literal>Dog</literal>:"
+msgstr ""
+"만일 그 엔티티가 또 다른 엔티티에 대해 <literal>many-to-one</literal>로 매핑"
+"되어 있다면 또한 native 질의를 실행할 때 이것을 반환하는 것이 필수적고, 그 밖"
+"의 경우 데이터베이스 지정적인 \"컬럼이 발견되지 않았습니다\" 오류가 일어날 것"
+"이다. 추가적인 컬럼은 * 표기를 사용할 자동적으로 반환될 것이지만, 우리는 다"
+"음 <literal>Dog</literal>에 대한 <literal>many-to-one</literal> 예제에서처럼 "
+"명시적인 것을 더 선호한다:"
-#: index.docbook:113
+#. Tag: programlisting
+#: query_sql.xml:113
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, DOG_ID FROM CATS\").addEntity(Cat.class);\n"
- "]]>"
+"<![CDATA[sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, DOG_ID FROM CATS"
+"\").addEntity(Cat.class);\n"
+"]]>"
msgstr ""
- "<![CDATA[sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, DOG_ID FROM CATS\").addEntity(Cat.class);\n"
- "]]>"
-#: index.docbook:115
+#. Tag: para
+#: query_sql.xml:115
+#, no-c-format
msgid "This will allow cat.getDog() to function properly."
msgstr "이것은 cat.getDog()이 고유하게 기능하는 것을 허용한다."
-#: index.docbook:119
+#. Tag: title
+#: query_sql.xml:119
+#, no-c-format
msgid "Handling associations and collections"
msgstr "연관들과 콜렉션들을 처리하기"
-#: index.docbook:121
-msgid "It is possible to eagerly join in the <literal>Dog</literal> to avoid the possible extra roundtrip for initializing the proxy. This is done via the <literal>addJoin()</literal> method, which allows you to join in an association or collection."
-msgstr "프락시를 초기화 시킴에 있어 가능한 특별한 라운드트립을 피하기 위해서 <literal>Dog</literal>에서 eagerly join시키는 것이 간으하다. 이것은 <literal>addJoin()</literal> 메소드를 통해 행해지는데, 그것은 연관이나 콜렉션 내에서 조인시키는 것을 당신에게 허용해준다."
+#. Tag: para
+#: query_sql.xml:121
+#, no-c-format
+msgid ""
+"It is possible to eagerly join in the <literal>Dog</literal> to avoid the "
+"possible extra roundtrip for initializing the proxy. This is done via the "
+"<literal>addJoin()</literal> method, which allows you to join in an "
+"association or collection."
+msgstr ""
+"프락시를 초기화 시킴에 있어 가능한 특별한 라운드트립을 피하기 위해서 "
+"<literal>Dog</literal>에서 eagerly join시키는 것이 간으하다. 이것은 "
+"<literal>addJoin()</literal> 메소드를 통해 행해지는데, 그것은 연관이나 콜렉"
+"션 내에서 조인시키는 것을 당신에게 허용해준다."
-#: index.docbook:126
+#. Tag: programlisting
+#: query_sql.xml:126
+#, no-c-format
msgid ""
- "<![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\")\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .addJoin(\"cat.dog\");\n"
- "]]>"
+"<![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\")\n"
+" .addEntity(\"cat\", Cat.class)\n"
+" .addJoin(\"cat.dog\");\n"
+"]]>"
msgstr ""
- "<![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\")\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .addJoin(\"cat.dog\");\n"
- "]]>"
-#: index.docbook:128
-msgid "In this example the returned <literal>Cat</literal>'s will have their <literal>dog</literal> property fully initialized without any extra roundtrip to the database. Notice that we added a alias name (\"cat\") to be able to specify the target property path of the join. It is possible to do the same eager joining for collections, e.g. if the <literal>Cat</literal> had a one-to-many to <literal>Dog</literal> instead."
-msgstr "이 예제에서 반환되는 <literal>Cat</literal>들은 데이터베이스에 대한 임의의 특별한 라운드크립 없이 전체적으로 초기화된 그것들의 <literal>dog</literal> 프로퍼티를 갖는다. 우리가 join의 대상 프로퍼티 경로를 지정하는 것을 가능하도록 하기 위해 하나의 alias 이름(\"cat\")을 추가했음을 주지하라. 대신에 예를 들어 <literal>Cat</literal>이 <literal>Dog</literal>에 대해 one-to-many를 가질 경우, 콜렉션들에 대해 동일한 eager joining을 행하는 것이 가능하다."
+#. Tag: para
+#: query_sql.xml:128
+#, no-c-format
+msgid ""
+"In this example the returned <literal>Cat</literal>'s will have their "
+"<literal>dog</literal> property fully initialized without any extra "
+"roundtrip to the database. Notice that we added a alias name (\"cat\") to be "
+"able to specify the target property path of the join. It is possible to do "
+"the same eager joining for collections, e.g. if the <literal>Cat</literal> "
+"had a one-to-many to <literal>Dog</literal> instead."
+msgstr ""
+"이 예제에서 반환되는 <literal>Cat</literal>들은 데이터베이스에 대한 임의의 특"
+"별한 라운드크립 없이 전체적으로 초기화된 그것들의 <literal>dog</literal> 프로"
+"퍼티를 갖는다. 우리가 join의 대상 프로퍼티 경로를 지정하는 것을 가능하도록 하"
+"기 위해 하나의 alias 이름(\"cat\")을 추가했음을 주지하라. 대신에 예를 들어 "
+"<literal>Cat</literal>이 <literal>Dog</literal>에 대해 one-to-many를 가질 경"
+"우, 콜렉션들에 대해 동일한 eager joining을 행하는 것이 가능하다."
-#: index.docbook:136
+#. Tag: programlisting
+#: query_sql.xml:136
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, D_ID, D_NAME, CAT_ID FROM CATS c, DOGS d WHERE c.ID = d.CAT_ID\")\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .addJoin(\"cat.dogs\");\n"
- "]]>"
+"<![CDATA[sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, D_ID, D_NAME, "
+"CAT_ID FROM CATS c, DOGS d WHERE c.ID = d.CAT_ID\")\n"
+" .addEntity(\"cat\", Cat.class)\n"
+" .addJoin(\"cat.dogs\");\n"
+"]]>"
msgstr ""
- "<![CDATA[sess.createSQLQuery(\"SELECT ID, NAME, BIRTHDATE, D_ID, D_NAME, CAT_ID FROM CATS c, DOGS d WHERE c.ID = d.CAT_ID\")\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .addJoin(\"cat.dogs\");\n"
- "]]>"
-#: index.docbook:138
-msgid "At this stage we are reaching the limits of what is possible with native queries without starting to enhance the sql queries to make them usable in Hibernate; the problems starts to arise when returning multiple entities of the same type or when the default alias/column names are not enough."
-msgstr "이 단계에서 우리는 Hibernate에서 native 질의들을 사용가능하도록 만들기 위해 sql 질의들을 강화시키지는 것을 시작하지 않고서도 native 질의들로서 가능한 것의 한계에 도달하고 있다; 문제점들은 동일한 타입의 여러 엔티티들을 반환할 때 또는 디폴트 alias/column 이름들이 충분하지 않을 때 발생하기 시작한다."
+#. Tag: para
+#: query_sql.xml:138
+#, no-c-format
+msgid ""
+"At this stage we are reaching the limits of what is possible with native "
+"queries without starting to enhance the sql queries to make them usable in "
+"Hibernate; the problems starts to arise when returning multiple entities of "
+"the same type or when the default alias/column names are not enough."
+msgstr ""
+"이 단계에서 우리는 Hibernate에서 native 질의들을 사용가능하도록 만들기 위해 "
+"sql 질의들을 강화시키지는 것을 시작하지 않고서도 native 질의들로서 가능한 것"
+"의 한계에 도달하고 있다; 문제점들은 동일한 타입의 여러 엔티티들을 반환할 때 "
+"또는 디폴트 alias/column 이름들이 충분하지 않을 때 발생하기 시작한다."
-#: index.docbook:146
+#. Tag: title
+#: query_sql.xml:146
+#, no-c-format
msgid "Returning multiple entities"
msgstr "여러 개의 엔티티들을 반환하기"
-#: index.docbook:148
-msgid "Until now the result set column names are assumed to be the same as the column names specified in the mapping document. This can be problematic for SQL queries which join multiple tables, since the same column names may appear in more than one table."
-msgstr "지금까지 결과 셋 컬럼 이름들은 매핑 문서 내에 지정된 컬럼 이름들과 동일하다고 가정되어 있다. 동일한 컬럼이 하나 이상의 테이블 내에서 나타날 수 있기 때문에, 이것은 여러 개의 테이블들을 조인시키는 SQL 질의들에 대해 문제가 될 수 있다."
+#. Tag: para
+#: query_sql.xml:148
+#, no-c-format
+msgid ""
+"Until now the result set column names are assumed to be the same as the "
+"column names specified in the mapping document. This can be problematic for "
+"SQL queries which join multiple tables, since the same column names may "
+"appear in more than one table."
+msgstr ""
+"지금까지 결과 셋 컬럼 이름들은 매핑 문서 내에 지정된 컬럼 이름들과 동일하다"
+"고 가정되어 있다. 동일한 컬럼이 하나 이상의 테이블 내에서 나타날 수 있기 때문"
+"에, 이것은 여러 개의 테이블들을 조인시키는 SQL 질의들에 대해 문제가 될 수 있"
+"다."
-#: index.docbook:153
-msgid "Column alias injection is needed in the following query (which most likely will fail):"
+#. Tag: para
+#: query_sql.xml:153
+#, no-c-format
+msgid ""
+"Column alias injection is needed in the following query (which most likely "
+"will fail):"
msgstr "컬럼 alias 주입은 다음 질의(아마 실패할 것이다)에서 필요하다:"
-#: index.docbook:156
+#. Tag: programlisting
+#: query_sql.xml:156
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT c.*, m.* FROM CATS c, CATS m WHERE c.MOTHER_ID = c.ID\")\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .addEntity(\"mother\", Cat.class)\n"
- "]]>"
+"<![CDATA[sess.createSQLQuery(\"SELECT c.*, m.* FROM CATS c, CATS m WHERE c."
+"MOTHER_ID = c.ID\")\n"
+" .addEntity(\"cat\", Cat.class)\n"
+" .addEntity(\"mother\", Cat.class)\n"
+"]]>"
msgstr ""
- "<![CDATA[sess.createSQLQuery(\"SELECT c.*, m.* FROM CATS c, CATS m WHERE c.MOTHER_ID = c.ID\")\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .addEntity(\"mother\", Cat.class)\n"
- "]]>"
-#: index.docbook:158
-msgid "The intention for this query is to return two Cat instances per row, a cat and its mother. This will fail since there is a conflict of names since they are mapped to the same column names and on some databases the returned column aliases will most likely be on the form \"c.ID\", \"c.NAME\", etc. which are not equal to the columns specificed in the mappings (\"ID\" and \"NAME\")."
-msgstr "이 질의의 목적은 단위 행 당 두 개의 Cat 인스턴스들, 하나의 cat 그리고 그것의 mother를 반환하는 것이다. 왜냐하면 그것들이 동일한 컬럼 이름들로 매핑되어 있기 때문에 이것은 실패할 것이고 데이베이스 상에서 반환된 컬럼 alias들은 아마 매핑들 내에 지정된 컬럼들(\"ID\" 와 \"NAME\")과 같지 않은 \"c.ID\", \"c.NAME\" 등의 형식일 것이다."
+#. Tag: para
+#: query_sql.xml:158
+#, no-c-format
+msgid ""
+"The intention for this query is to return two Cat instances per row, a cat "
+"and its mother. This will fail since there is a conflict of names since they "
+"are mapped to the same column names and on some databases the returned "
+"column aliases will most likely be on the form \"c.ID\", \"c.NAME\", etc. "
+"which are not equal to the columns specificed in the mappings (\"ID\" and "
+"\"NAME\")."
+msgstr ""
+"이 질의의 목적은 단위 행 당 두 개의 Cat 인스턴스들, 하나의 cat 그리고 그것의 "
+"mother를 반환하는 것이다. 왜냐하면 그것들이 동일한 컬럼 이름들로 매핑되어 있"
+"기 때문에 이것은 실패할 것이고 데이베이스 상에서 반환된 컬럼 alias들은 아마 "
+"매핑들 내에 지정된 컬럼들(\"ID\" 와 \"NAME\")과 같지 않은 \"c.ID\", \"c.NAME"
+"\" 등의 형식일 것이다."
-#: index.docbook:165
+#. Tag: para
+#: query_sql.xml:165
+#, no-c-format
msgid "The following form is not vulnerable to column name duplication:"
msgstr "다음 형식은 컬럼 이름 중복 취약점을 갖지 않는다:"
-#: index.docbook:168
+#. Tag: programlisting
+#: query_sql.xml:168
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT {cat.*}, {mother.*} FROM CATS c, CATS m WHERE c.MOTHER_ID = c.ID\")\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .addEntity(\"mother\", Cat.class)\n"
- "]]>"
+"<![CDATA[sess.createSQLQuery(\"SELECT {cat.*}, {mother.*} FROM CATS c, CATS "
+"m WHERE c.MOTHER_ID = c.ID\")\n"
+" .addEntity(\"cat\", Cat.class)\n"
+" .addEntity(\"mother\", Cat.class)\n"
+"]]>"
msgstr ""
- "<![CDATA[sess.createSQLQuery(\"SELECT {cat.*}, {mother.*} FROM CATS c, CATS m WHERE c.MOTHER_ID = c.ID\")\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .addEntity(\"mother\", Cat.class)\n"
- "]]>"
-#: index.docbook:174
-msgid "the SQL query string, with placeholders for Hibernate to inject column aliases"
-msgstr "컬럼 alias들을 주입하기 위한 Hibernate용 placeholder들을 가진 SQL 질의 문자열"
+#. Tag: para
+#: query_sql.xml:174
+#, no-c-format
+msgid ""
+"the SQL query string, with placeholders for Hibernate to inject column "
+"aliases"
+msgstr ""
+"컬럼 alias들을 주입하기 위한 Hibernate용 placeholder들을 가진 SQL 질의 문자열"
-#: index.docbook:179
+#. Tag: para
+#: query_sql.xml:179
+#, no-c-format
msgid "the entities returned by the query"
msgstr "그 질의에 의해 반환되는 엔티티들"
-#: index.docbook:183
-msgid "The {cat.*} and {mother.*} notation used above is a shorthand for \"all properties\". Alternatively, you may list the columns explicity, but even in this case we let Hibernate inject the SQL column aliases for each property. The placeholder for a column alias is just the property name qualified by the table alias. In the following example, we retrieve Cats and their mothers from a different table (cat_log) to the one declared in the mapping metadata. Notice that we may even use the property aliases in the where clause if we like."
-msgstr "위에 사용된 {cat.*} 과 {mother.*} 표기는 \"모든 프로퍼티들\"에 대한 생략이다. 다른 방법으로 당신은 컬럼들을 명시적으로 열거할 수도 있지만, 이 경우에 우리는 Hibernate로 하여금 SQL 컬럼 alias들을 각각의 컬럼에 주입시키도록 강제한다. 컬럼 alias를 위한 placeholder는 단지 그 테이블 alias에 의해 수식된 프로퍼티 이름이다. 다음 예제에서, 우리는 다른 테이블(cat_log)로부터 매핑 메타데이터 내에 선언된 것으로의 Cat들과 그것들의 mother들을 검색한다. 우리는 우리가 좋다면 심지어 where 절 내에 프로퍼티 alias를 사용할 수도 있음을 주지하라."
+#. Tag: para
+#: query_sql.xml:183
+#, no-c-format
+msgid ""
+"The {cat.*} and {mother.*} notation used above is a shorthand for \"all "
+"properties\". Alternatively, you may list the columns explicity, but even in "
+"this case we let Hibernate inject the SQL column aliases for each property. "
+"The placeholder for a column alias is just the property name qualified by "
+"the table alias. In the following example, we retrieve Cats and their "
+"mothers from a different table (cat_log) to the one declared in the mapping "
+"metadata. Notice that we may even use the property aliases in the where "
+"clause if we like."
+msgstr ""
+"위에 사용된 {cat.*} 과 {mother.*} 표기는 \"모든 프로퍼티들\"에 대한 생략이"
+"다. 다른 방법으로 당신은 컬럼들을 명시적으로 열거할 수도 있지만, 이 경우에 우"
+"리는 Hibernate로 하여금 SQL 컬럼 alias들을 각각의 컬럼에 주입시키도록 강제한"
+"다. 컬럼 alias를 위한 placeholder는 단지 그 테이블 alias에 의해 수식된 프로퍼"
+"티 이름이다. 다음 예제에서, 우리는 다른 테이블(cat_log)로부터 매핑 메타데이"
+"터 내에 선언된 것으로의 Cat들과 그것들의 mother들을 검색한다. 우리는 우리가 "
+"좋다면 심지어 where 절 내에 프로퍼티 alias를 사용할 수도 있음을 주지하라."
-#: index.docbook:192
+#. Tag: programlisting
+#: query_sql.xml:192
+#, no-c-format
msgid ""
- "<![CDATA[String sql = \"SELECT ID as {c.id}, NAME as {c.name}, \" + \n"
- " \"BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother.*} \" +\n"
- " \"FROM CAT_LOG c, CAT_LOG m WHERE {c.mother} = c.ID\";\n"
- "\n"
- "List loggedCats = sess.createSQLQuery(sql)\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .addEntity(\"mother\", Cat.class).list()\n"
- "]]>"
+"<![CDATA[String sql = \"SELECT ID as {c.id}, NAME as {c.name}, \" + \n"
+" \"BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother.*} "
+"\" +\n"
+" \"FROM CAT_LOG c, CAT_LOG m WHERE {c.mother} = c.ID\";\n"
+"\n"
+"List loggedCats = sess.createSQLQuery(sql)\n"
+" .addEntity(\"cat\", Cat.class)\n"
+" .addEntity(\"mother\", Cat.class).list()\n"
+"]]>"
msgstr ""
- "<![CDATA[String sql = \"SELECT ID as {c.id}, NAME as {c.name}, \" + \n"
- " \"BIRTHDATE as {c.birthDate}, MOTHER_ID as {c.mother}, {mother.*} \" +\n"
- " \"FROM CAT_LOG c, CAT_LOG m WHERE {c.mother} = c.ID\";\n"
- "\n"
- "List loggedCats = sess.createSQLQuery(sql)\n"
- " .addEntity(\"cat\", Cat.class)\n"
- " .addEntity(\"mother\", Cat.class).list()\n"
- "]]>"
-#: index.docbook:195
+#. Tag: title
+#: query_sql.xml:195
+#, no-c-format
msgid "Alias and property references"
msgstr "alias 참조와 프로퍼티 참조"
-#: index.docbook:197
-msgid "For most cases the above alias injection is needed, but for queries relating to more complex mappings like composite properties, inheritance discriminators, collections etc. there are some specific aliases to use to allow Hibernate to inject the proper aliases."
-msgstr "대부분의 경우에 위의 alias 주입이 필요하지만, composite 프로퍼티들, 상속 판별자들 (inheritance discriminators), 콜렉션 등과 같은 보다 복잡한 매핑들과 관련된 질의들의 경우에는 고유한 alias들을 주입시키는 것을 Hibernate에게 허용하는데 사용될 몇몇 특별한 alias들이 존재한다."
+#. Tag: para
+#: query_sql.xml:197
+#, no-c-format
+msgid ""
+"For most cases the above alias injection is needed, but for queries relating "
+"to more complex mappings like composite properties, inheritance "
+"discriminators, collections etc. there are some specific aliases to use to "
+"allow Hibernate to inject the proper aliases."
+msgstr ""
+"대부분의 경우에 위의 alias 주입이 필요하지만, composite 프로퍼티들, 상속 판별"
+"자들 (inheritance discriminators), 콜렉션 등과 같은 보다 복잡한 매핑들과 관련"
+"된 질의들의 경우에는 고유한 alias들을 주입시키는 것을 Hibernate에게 허용하는"
+"데 사용될 몇몇 특별한 alias들이 존재한다."
-#: index.docbook:202
-msgid "The following table shows the different possibilities of using the alias injection. Note: the alias names in the result are examples, each alias will have a unique and probably different name when used."
-msgstr "다음 테이블은 alias 주입을 사용하는 다른 가능성들을 보여준다. 노트: 결과 내에 있는 alias 이름들이 예제이며, 각각의 alias는 사용될 때 하나의 유일한 이름과 아마 다른 이름을 가질 것이다."
+#. Tag: para
+#: query_sql.xml:202
+#, no-c-format
+msgid ""
+"The following table shows the different possibilities of using the alias "
+"injection. Note: the alias names in the result are examples, each alias will "
+"have a unique and probably different name when used."
+msgstr ""
+"다음 테이블은 alias 주입을 사용하는 다른 가능성들을 보여준다. 노트: 결과 내"
+"에 있는 alias 이름들이 예제이며, 각각의 alias는 사용될 때 하나의 유일한 이름"
+"과 아마 다른 이름을 가질 것이다."
-#: index.docbook:208
+#. Tag: title
+#: query_sql.xml:208
+#, no-c-format
msgid "Alias injection names"
msgstr "alias 주입 이름들"
-#: index.docbook:219
+#. Tag: entry
+#: query_sql.xml:219
+#, no-c-format
msgid "Description"
-msgstr "<entry>설명</entry>"
+msgstr "설명"
-#: index.docbook:221
+#. Tag: entry
+#: query_sql.xml:221
+#, no-c-format
msgid "Syntax"
-msgstr "<entry>구문</entry>"
+msgstr "구문"
-#: index.docbook:223
+#. Tag: entry
+#: query_sql.xml:223
+#, no-c-format
msgid "Example"
-msgstr "<entry>예제</entry>"
+msgstr "예제"
-#: index.docbook:229
+#. Tag: entry
+#: query_sql.xml:229
+#, no-c-format
msgid "A simple property"
msgstr "간단한 프로퍼티"
-#: index.docbook:231
+#. Tag: literal
+#: query_sql.xml:231
+#, no-c-format
msgid "{[aliasname].[propertyname]"
msgstr "{[aliasname].[propertyname]"
-#: index.docbook:233
+#. Tag: literal
+#: query_sql.xml:233
+#, no-c-format
msgid "A_NAME as {item.name}"
msgstr "A_NAME as {item.name}"
-#: index.docbook:237
+#. Tag: entry
+#: query_sql.xml:237
+#, no-c-format
msgid "A composite property"
msgstr "composite 프로퍼티"
-#: index.docbook:239
+#. Tag: literal
+#: query_sql.xml:239
+#, no-c-format
msgid "{[aliasname].[componentname].[propertyname]}"
msgstr "{[aliasname].[componentname].[propertyname]}"
-#: index.docbook:241
+#. Tag: literal
+#: query_sql.xml:241
+#, no-c-format
msgid "CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}"
msgstr "CURRENCY as {item.amount.currency}, VALUE as {item.amount.value}"
-#: index.docbook:246
+#. Tag: entry
+#: query_sql.xml:246
+#, no-c-format
msgid "Discriminator of an entity"
msgstr "엔티티의 판별자(Discriminator)"
-#: index.docbook:248
+#. Tag: literal
+#: query_sql.xml:248
+#, no-c-format
msgid "{[aliasname].class}"
msgstr "{[aliasname].class}"
-#: index.docbook:250
+#. Tag: literal
+#: query_sql.xml:250
+#, no-c-format
msgid "DISC as {item.class}"
msgstr "DISC as {item.class}"
-#: index.docbook:254
+#. Tag: entry
+#: query_sql.xml:254
+#, no-c-format
msgid "All properties of an entity"
msgstr "엔티티의 모든 프로퍼티들"
-#: index.docbook:256, index.docbook:304
+#. Tag: literal
+#: query_sql.xml:256 query_sql.xml:304
+#, no-c-format
msgid "{[aliasname].*}"
msgstr "{[aliasname].*}"
-#: index.docbook:258
+#. Tag: literal
+#: query_sql.xml:258
+#, no-c-format
msgid "{item.*}"
msgstr "{item.*}"
-#: index.docbook:262
+#. Tag: entry
+#: query_sql.xml:262
+#, no-c-format
msgid "A collection key"
msgstr "콜렉션 키"
-#: index.docbook:264
+#. Tag: literal
+#: query_sql.xml:264
+#, no-c-format
msgid "{[aliasname].key}"
msgstr "{[aliasname].key}"
-#: index.docbook:266
+#. Tag: literal
+#: query_sql.xml:266
+#, no-c-format
msgid "ORGID as {coll.key}"
msgstr "ORGID as {coll.key}"
-#: index.docbook:270
+#. Tag: entry
+#: query_sql.xml:270
+#, no-c-format
msgid "The id of an collection"
msgstr "콜렉션의 id"
-#: index.docbook:272
+#. Tag: literal
+#: query_sql.xml:272
+#, no-c-format
msgid "{[aliasname].id}"
msgstr "{[aliasname].id}"
-#: index.docbook:274
+#. Tag: literal
+#: query_sql.xml:274
+#, no-c-format
msgid "EMPID as {coll.id}"
msgstr "EMPID as {coll.id}"
-#: index.docbook:278
+#. Tag: entry
+#: query_sql.xml:278
+#, no-c-format
msgid "The element of an collection"
msgstr "콜렉션의 요소"
-#: index.docbook:280
+#. Tag: literal
+#: query_sql.xml:280
+#, no-c-format
msgid "{[aliasname].element}"
msgstr "{[aliasname].element}"
-#: index.docbook:282
+#. Tag: literal
+#: query_sql.xml:282
+#, no-c-format
msgid "XID as {coll.element}"
msgstr "XID as {coll.element}"
-#: index.docbook:286
+#. Tag: entry
+#: query_sql.xml:286
+#, no-c-format
msgid "roperty of the element in the collection"
msgstr "콜렉션 내에 있는 요소의 프로퍼티"
-#: index.docbook:288
+#. Tag: literal
+#: query_sql.xml:288
+#, no-c-format
msgid "{[aliasname].element.[propertyname]}"
msgstr "{[aliasname].element.[propertyname]}"
-#: index.docbook:290
+#. Tag: literal
+#: query_sql.xml:290
+#, no-c-format
msgid "NAME as {coll.element.name}"
msgstr "NAME as {coll.element.name}"
-#: index.docbook:294
+#. Tag: entry
+#: query_sql.xml:294
+#, no-c-format
msgid "All properties of the element in the collection"
msgstr "콜렉션 내에 있는 요소의 모든 프로퍼티들"
-#: index.docbook:296
+#. Tag: literal
+#: query_sql.xml:296
+#, no-c-format
msgid "{[aliasname].element.*}"
msgstr "{[aliasname].element.*}"
-#: index.docbook:298
+#. Tag: literal
+#: query_sql.xml:298
+#, no-c-format
msgid "{coll.element.*}"
msgstr "{coll.element.*}"
-#: index.docbook:302
+#. Tag: entry
+#: query_sql.xml:302
+#, no-c-format
msgid "All properties of the the collection"
msgstr "콜렉션의 모든 프로퍼티들"
-#: index.docbook:306
+#. Tag: literal
+#: query_sql.xml:306
+#, no-c-format
msgid "{coll.*}"
msgstr "{coll.*}"
-#: index.docbook:315
+#. Tag: title
+#: query_sql.xml:315
+#, no-c-format
msgid "Returning non-managed entities"
msgstr "non-managed 엔티티들을 반환하기"
-#: index.docbook:317
-msgid "It is possible to apply a ResultTransformer to native sql queries. Allowing it to e.g. return non-managed entities."
-msgstr "native sql 질의에 ResultTransformer를 적용하는 것이 가능하다. 예를 들어 non-managed 엔티티들을 반환하기 위해 ResultTransformer를 허용하는 것."
+#. Tag: para
+#: query_sql.xml:317
+#, no-c-format
+msgid ""
+"It is possible to apply a ResultTransformer to native sql queries. Allowing "
+"it to e.g. return non-managed entities."
+msgstr ""
+"native sql 질의에 ResultTransformer를 적용하는 것이 가능하다. 예를 들어 non-"
+"managed 엔티티들을 반환하기 위해 ResultTransformer를 허용하는 것."
-#: index.docbook:319
+#. Tag: programlisting
+#: query_sql.xml:319
+#, no-c-format
msgid ""
- "<![CDATA[sess.createSQLQuery(\"SELECT NAME, BIRTHDATE FROM CATS\")\n"
- " .setResultTransformer(Transformers.aliasToBean(CatDTO.class))]]>"
+"<![CDATA[sess.createSQLQuery(\"SELECT NAME, BIRTHDATE FROM CATS\")\n"
+" .setResultTransformer(Transformers.aliasToBean(CatDTO.class))]]>"
msgstr ""
- "<![CDATA[sess.createSQLQuery(\"SELECT NAME, BIRTHDATE FROM CATS\")\n"
- " .setResultTransformer(Transformers.aliasToBean(CatDTO.class))]]>"
-#: index.docbook:329
+#. Tag: para
+#: query_sql.xml:329
+#, no-c-format
msgid "a result transformer"
msgstr "결과 변환자(transformer)"
-#: index.docbook:333
-msgid "The above query will return a list of <literal>CatDTO</literal> which has been instantiated and injected the values of NAME and BIRTHNAME into its corresponding properties or fields."
-msgstr "위의 질의는 초기화되어 있고 NAME과 BIRTHNAME의 값들을 <literal>CatDTO</literal>의 대응하는 프로퍼티들과 필드들 속으로 주입시킨 <literal>CatDTO</literal>의 리스트를 반환할 것이다."
+#. Tag: para
+#: query_sql.xml:333
+#, no-c-format
+msgid ""
+"The above query will return a list of <literal>CatDTO</literal> which has "
+"been instantiated and injected the values of NAME and BIRTHNAME into its "
+"corresponding properties or fields."
+msgstr ""
+"위의 질의는 초기화되어 있고 NAME과 BIRTHNAME의 값들을 <literal>CatDTO</"
+"literal>의 대응하는 프로퍼티들과 필드들 속으로 주입시킨 <literal>CatDTO</"
+"literal>의 리스트를 반환할 것이다."
-#: index.docbook:340
+#. Tag: title
+#: query_sql.xml:340
+#, no-c-format
msgid "Handling inheritance"
msgstr "상속 처리하기"
-#: index.docbook:342
-msgid "Native sql queries which query for entities that is mapped as part of an inheritance must include all properties for the baseclass and all it subclasses."
-msgstr "상속의 부분으로서 매핑되는 엔티티들을 질의하는 native sql 질의들은 baseclass의 모든 프로퍼티들을 포함해야 하고 그 모든 것이 서브클래스화 되어야 한다."
+#. Tag: para
+#: query_sql.xml:342
+#, no-c-format
+msgid ""
+"Native sql queries which query for entities that is mapped as part of an "
+"inheritance must include all properties for the baseclass and all it "
+"subclasses."
+msgstr ""
+"상속의 부분으로서 매핑되는 엔티티들을 질의하는 native sql 질의들은 baseclass"
+"의 모든 프로퍼티들을 포함해야 하고 그 모든 것이 서브클래스화 되어야 한다."
-#: index.docbook:348
+#. Tag: title
+#: query_sql.xml:348
+#, no-c-format
msgid "Parameters"
msgstr "파라미터들"
-#: index.docbook:350
+#. Tag: para
+#: query_sql.xml:350
+#, no-c-format
msgid "Native sql queries support positional as well as named parameters:"
-msgstr "Native sql 질의들은 위치 파라미터들 뿐만 아니라 명명된 파라미터들을 지원한다:"
+msgstr ""
+"Native sql 질의들은 위치 파라미터들 뿐만 아니라 명명된 파라미터들을 지원한다:"
-#: index.docbook:353
+#. Tag: programlisting
+#: query_sql.xml:353
+#, no-c-format
msgid ""
- "<![CDATA[Query query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME like ?\").addEntity(Cat.class);\n"
- "List pusList = query.setString(0, \"Pus%\").list();\n"
- " \n"
- "query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME like :name\").addEntity(Cat.class);\n"
- "List pusList = query.setString(\"name\", \"Pus%\").list(); ]]>"
+"<![CDATA[Query query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME "
+"like ?\").addEntity(Cat.class);\n"
+"List pusList = query.setString(0, \"Pus%\").list();\n"
+" \n"
+"query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME like :name\")."
+"addEntity(Cat.class);\n"
+"List pusList = query.setString(\"name\", \"Pus%\").list(); ]]>"
msgstr ""
- "<![CDATA[Query query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME like ?\").addEntity(Cat.class);\n"
- "List pusList = query.setString(0, \"Pus%\").list();\n"
- " \n"
- "query = sess.createSQLQuery(\"SELECT * FROM CATS WHERE NAME like :name\").addEntity(Cat.class);\n"
- "List pusList = query.setString(\"name\", \"Pus%\").list(); ]]>"
-#: index.docbook:361
+#. Tag: title
+#: query_sql.xml:361
+#, no-c-format
msgid "Named SQL queries"
msgstr "명명된 SQL 질의들"
-#: index.docbook:363
-msgid "Named SQL queries may be defined in the mapping document and called in exactly the same way as a named HQL query. In this case, we do <emphasis>not</emphasis> need to call <literal>addEntity()</literal>."
-msgstr "명명된 SQL 질의들은 HQL 질의와 동일한 방법으로 매핑 문서 속에 정의될 수 있고 정확하게 호출될 수도 있다. 이 경우에, 우리는 <literal>addEntity()</literal> 호출을 필요로 하지 <emphasis>않는다</emphasis>."
+#. Tag: para
+#: query_sql.xml:363
+#, no-c-format
+msgid ""
+"Named SQL queries may be defined in the mapping document and called in "
+"exactly the same way as a named HQL query. In this case, we do "
+"<emphasis>not</emphasis> need to call <literal>addEntity()</literal>."
+msgstr ""
+"명명된 SQL 질의들은 HQL 질의와 동일한 방법으로 매핑 문서 속에 정의될 수 있고 "
+"정확하게 호출될 수도 있다. 이 경우에, 우리는 <literal>addEntity()</literal> "
+"호출을 필요로 하지 <emphasis>않는다</emphasis>."
-#: index.docbook:368
+#. Tag: programlisting
+#: query_sql.xml:368
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"persons\">\n"
- " <return alias=\"person\" class=\"eg.Person\"/>\n"
- " SELECT person.NAME AS {person.name},\n"
- " person.AGE AS {person.age},\n"
- " person.SEX AS {person.sex}\n"
- " FROM PERSON person\n"
- " WHERE person.NAME LIKE :namePattern\n"
- "</sql-query>]]>"
+"<![CDATA[<sql-query name=\"persons\">\n"
+" <return alias=\"person\" class=\"eg.Person\"/>\n"
+" SELECT person.NAME AS {person.name},\n"
+" person.AGE AS {person.age},\n"
+" person.SEX AS {person.sex}\n"
+" FROM PERSON person\n"
+" WHERE person.NAME LIKE :namePattern\n"
+"</sql-query>]]>"
msgstr ""
- "<![CDATA[<sql-query name=\"persons\">\n"
- " <return alias=\"person\" class=\"eg.Person\"/>\n"
- " SELECT person.NAME AS {person.name},\n"
- " person.AGE AS {person.age},\n"
- " person.SEX AS {person.sex}\n"
- " FROM PERSON person\n"
- " WHERE person.NAME LIKE :namePattern\n"
- "</sql-query>]]>"
-#: index.docbook:370
+#. Tag: programlisting
+#: query_sql.xml:370
+#, no-c-format
msgid ""
- "<![CDATA[List people = sess.getNamedQuery(\"persons\")\n"
- " .setString(\"namePattern\", namePattern)\n"
- " .setMaxResults(50)\n"
- " .list();]]>"
+"<![CDATA[List people = sess.getNamedQuery(\"persons\")\n"
+" .setString(\"namePattern\", namePattern)\n"
+" .setMaxResults(50)\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List people = sess.getNamedQuery(\"persons\")\n"
- " .setString(\"namePattern\", namePattern)\n"
- " .setMaxResults(50)\n"
- " .list();]]>"
-#: index.docbook:372
-msgid "The <literal><return-join></literal> and <literal><load-collection></literal> elements are used to join associations and define queries which initialize collections, respectively."
-msgstr "<literal><return-join></literal> 요소와 <literal><load-collection></literal> 요소는 연관들을 조인시키고 콜렉션들을 각각 초기화 시키는 질의들을 정의하는데 사용된다."
+#. Tag: para
+#: query_sql.xml:372
+#, no-c-format
+msgid ""
+"The <literal><return-join></literal> and <literal><load-"
+"collection></literal> elements are used to join associations and define "
+"queries which initialize collections, respectively."
+msgstr ""
+"<literal><return-join></literal> 요소와 <literal><load-"
+"collection></literal> 요소는 연관들을 조인시키고 콜렉션들을 각각 초기화 시"
+"키는 질의들을 정의하는데 사용된다."
-#: index.docbook:377
+#. Tag: programlisting
+#: query_sql.xml:377
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"personsWith\">\n"
- " <return alias=\"person\" class=\"eg.Person\"/>\n"
- " <return-join alias=\"address\" property=\"person.mailingAddress\"/>\n"
- " SELECT person.NAME AS {person.name},\n"
- " person.AGE AS {person.age},\n"
- " person.SEX AS {person.sex},\n"
- " address.STREET AS {address.street},\n"
- " address.CITY AS {address.city},\n"
- " address.STATE AS {address.state},\n"
- " address.ZIP AS {address.zip}\n"
- " FROM PERSON person\n"
- " JOIN ADDRESS address\n"
- " ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
- " WHERE person.NAME LIKE :namePattern\n"
- "</sql-query>]]>"
+"<![CDATA[<sql-query name=\"personsWith\">\n"
+" <return alias=\"person\" class=\"eg.Person\"/>\n"
+" <return-join alias=\"address\" property=\"person.mailingAddress\"/>\n"
+" SELECT person.NAME AS {person.name},\n"
+" person.AGE AS {person.age},\n"
+" person.SEX AS {person.sex},\n"
+" address.STREET AS {address.street},\n"
+" address.CITY AS {address.city},\n"
+" address.STATE AS {address.state},\n"
+" address.ZIP AS {address.zip}\n"
+" FROM PERSON person\n"
+" JOIN ADDRESS address\n"
+" ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
+" WHERE person.NAME LIKE :namePattern\n"
+"</sql-query>]]>"
msgstr ""
- "<![CDATA[<sql-query name=\"personsWith\">\n"
- " <return alias=\"person\" class=\"eg.Person\"/>\n"
- " <return-join alias=\"address\" property=\"person.mailingAddress\"/>\n"
- " SELECT person.NAME AS {person.name},\n"
- " person.AGE AS {person.age},\n"
- " person.SEX AS {person.sex},\n"
- " address.STREET AS {address.street},\n"
- " address.CITY AS {address.city},\n"
- " address.STATE AS {address.state},\n"
- " address.ZIP AS {address.zip}\n"
- " FROM PERSON person\n"
- " JOIN ADDRESS address\n"
- " ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
- " WHERE person.NAME LIKE :namePattern\n"
- "</sql-query>]]>"
-#: index.docbook:379
-msgid "A named SQL query may return a scalar value. You must declare the column alias and Hibernate type using the <literal><return-scalar></literal> element:"
-msgstr "명명된 SQL 질의는 스칼라 값을 반환할수도 있다. 당신은 <literal><return-scalar></literal> 요소를 사용하여 컬럼 alias와 Hibernate 타입을 선언해야 한다:"
+#. Tag: para
+#: query_sql.xml:379
+#, no-c-format
+msgid ""
+"A named SQL query may return a scalar value. You must declare the column "
+"alias and Hibernate type using the <literal><return-scalar></literal> "
+"element:"
+msgstr ""
+"명명된 SQL 질의는 스칼라 값을 반환할수도 있다. 당신은 <literal><return-"
+"scalar></literal> 요소를 사용하여 컬럼 alias와 Hibernate 타입을 선언해야 "
+"한다:"
-#: index.docbook:383
+#. Tag: programlisting
+#: query_sql.xml:383
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"mySqlQuery\">\n"
- " <return-scalar column=\"name\" type=\"string\"/>\n"
- " <return-scalar column=\"age\" type=\"long\"/>\n"
- " SELECT p.NAME AS name,\n"
- " p.AGE AS age,\n"
- " FROM PERSON p WHERE p.NAME LIKE 'Hiber%'\n"
- "</sql-query>]]>"
+"<![CDATA[<sql-query name=\"mySqlQuery\">\n"
+" <return-scalar column=\"name\" type=\"string\"/>\n"
+" <return-scalar column=\"age\" type=\"long\"/>\n"
+" SELECT p.NAME AS name,\n"
+" p.AGE AS age,\n"
+" FROM PERSON p WHERE p.NAME LIKE 'Hiber%'\n"
+"</sql-query>]]>"
msgstr ""
- "<![CDATA[<sql-query name=\"mySqlQuery\">\n"
- " <return-scalar column=\"name\" type=\"string\"/>\n"
- " <return-scalar column=\"age\" type=\"long\"/>\n"
- " SELECT p.NAME AS name,\n"
- " p.AGE AS age,\n"
- " FROM PERSON p WHERE p.NAME LIKE 'Hiber%'\n"
- "</sql-query>]]>"
-#: index.docbook:385
-msgid "You can externalize the resultset mapping informations in a <literal><resultset></literal> element to either reuse them accross several named queries or through the <literal>setResultSetMapping()</literal> API."
-msgstr "당신은 여러 개의 명명된 질의들을 가로질러 재사용하거나 <literal>setResultSetMapping()</literal> API를 통해 결과셋 매핑정보들을 재사용하기 위해 <literal><resultset></literal> 요소 속에 결과셋 매핑 정보들을 구체화 시킬 수 있다."
+#. Tag: para
+#: query_sql.xml:385
+#, no-c-format
+msgid ""
+"You can externalize the resultset mapping informations in a <literal><"
+"resultset></literal> element to either reuse them accross several named "
+"queries or through the <literal>setResultSetMapping()</literal> API."
+msgstr ""
+"당신은 여러 개의 명명된 질의들을 가로질러 재사용하거나 "
+"<literal>setResultSetMapping()</literal> API를 통해 결과셋 매핑정보들을 재사"
+"용하기 위해 <literal><resultset></literal> 요소 속에 결과셋 매핑 정보들"
+"을 구체화 시킬 수 있다."
-#: index.docbook:390
+#. Tag: programlisting
+#: query_sql.xml:390
+#, no-c-format
msgid ""
- "<![CDATA[<resultset name=\"personAddress\">\n"
- " <return alias=\"person\" class=\"eg.Person\"/>\n"
- " <return-join alias=\"address\" property=\"person.mailingAddress\"/>\n"
- "</resultset>\n"
- "\n"
- "<sql-query name=\"personsWith\" resultset-ref=\"personAddress\">\n"
- " SELECT person.NAME AS {person.name},\n"
- " person.AGE AS {person.age},\n"
- " person.SEX AS {person.sex},\n"
- " address.STREET AS {address.street},\n"
- " address.CITY AS {address.city},\n"
- " address.STATE AS {address.state},\n"
- " address.ZIP AS {address.zip}\n"
- " FROM PERSON person\n"
- " JOIN ADDRESS address\n"
- " ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
- " WHERE person.NAME LIKE :namePattern\n"
- "</sql-query>]]>"
+"<![CDATA[<resultset name=\"personAddress\">\n"
+" <return alias=\"person\" class=\"eg.Person\"/>\n"
+" <return-join alias=\"address\" property=\"person.mailingAddress\"/>\n"
+"</resultset>\n"
+"\n"
+"<sql-query name=\"personsWith\" resultset-ref=\"personAddress\">\n"
+" SELECT person.NAME AS {person.name},\n"
+" person.AGE AS {person.age},\n"
+" person.SEX AS {person.sex},\n"
+" address.STREET AS {address.street},\n"
+" address.CITY AS {address.city},\n"
+" address.STATE AS {address.state},\n"
+" address.ZIP AS {address.zip}\n"
+" FROM PERSON person\n"
+" JOIN ADDRESS address\n"
+" ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
+" WHERE person.NAME LIKE :namePattern\n"
+"</sql-query>]]>"
msgstr ""
- "<![CDATA[<resultset name=\"personAddress\">\n"
- " <return alias=\"person\" class=\"eg.Person\"/>\n"
- " <return-join alias=\"address\" property=\"person.mailingAddress\"/>\n"
- "</resultset>\n"
- "\n"
- "<sql-query name=\"personsWith\" resultset-ref=\"personAddress\">\n"
- " SELECT person.NAME AS {person.name},\n"
- " person.AGE AS {person.age},\n"
- " person.SEX AS {person.sex},\n"
- " address.STREET AS {address.street},\n"
- " address.CITY AS {address.city},\n"
- " address.STATE AS {address.state},\n"
- " address.ZIP AS {address.zip}\n"
- " FROM PERSON person\n"
- " JOIN ADDRESS address\n"
- " ON person.ID = address.PERSON_ID AND address.TYPE='MAILING'\n"
- " WHERE person.NAME LIKE :namePattern\n"
- "</sql-query>]]>"
-#: index.docbook:392
-msgid "You can alternatively use the resultset mapping information in your hbm files directly in java code."
-msgstr "다른방법으로 당신은 당신의 hbm 파일들 내에 직접 자바 코드로 된 결과셋 매핑 정보를 사용할 수 있다."
+#. Tag: para
+#: query_sql.xml:392
+#, no-c-format
+msgid ""
+"You can alternatively use the resultset mapping information in your hbm "
+"files directly in java code."
+msgstr ""
+"다른방법으로 당신은 당신의 hbm 파일들 내에 직접 자바 코드로 된 결과셋 매핑 정"
+"보를 사용할 수 있다."
-#: index.docbook:395
+#. Tag: programlisting
+#: query_sql.xml:395
+#, no-c-format
msgid ""
- "<![CDATA[List cats = sess.createSQLQuery(\n"
- " \"select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id\"\n"
- " )\n"
- " .setResultSetMapping(\"catAndKitten\")\n"
- " .list();]]>"
+"<![CDATA[List cats = sess.createSQLQuery(\n"
+" \"select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten."
+"mother = cat.id\"\n"
+" )\n"
+" .setResultSetMapping(\"catAndKitten\")\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[List cats = sess.createSQLQuery(\n"
- " \"select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id\"\n"
- " )\n"
- " .setResultSetMapping(\"catAndKitten\")\n"
- " .list();]]>"
-#: index.docbook:398
+#. Tag: title
+#: query_sql.xml:398
+#, no-c-format
msgid "Using return-property to explicitly specify column/alias names"
msgstr "명시적으로 column/alias 이름들을 지정하는데 return-property 사용하기"
-#: index.docbook:401
-msgid "With <literal><return-property></literal> you can explicitly tell Hibernate what column aliases to use, instead of using the <literal>{}</literal>-syntax to let Hibernate inject its own aliases."
-msgstr "Hibernate로 하여금 그것 자신의 alias들을 끼워넣도록 하기 위해 <literal>{}</literal>-구문을 사용하는 것 대신에, <literal><return-property></literal>로서 당신은 사용할 컬럼 alias들이 무엇인지를 Hibernate에게 명시적으로 알려줄 수 있다."
+#. Tag: para
+#: query_sql.xml:401
+#, no-c-format
+msgid ""
+"With <literal><return-property></literal> you can explicitly tell "
+"Hibernate what column aliases to use, instead of using the <literal>{}</"
+"literal>-syntax to let Hibernate inject its own aliases."
+msgstr ""
+"Hibernate로 하여금 그것 자신의 alias들을 끼워넣도록 하기 위해 <literal>{}</"
+"literal>-구문을 사용하는 것 대신에, <literal><return-property></"
+"literal>로서 당신은 사용할 컬럼 alias들이 무엇인지를 Hibernate에게 명시적으"
+"로 알려줄 수 있다."
-#: index.docbook:406
+#. Tag: programlisting
+#: query_sql.xml:406
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"mySqlQuery\">\n"
- " <return alias=\"person\" class=\"eg.Person\">\n"
- " <return-property name=\"name\" column=\"myName\"/>\n"
- " <return-property name=\"age\" column=\"myAge\"/>\n"
- " <return-property name=\"sex\" column=\"mySex\"/>\n"
- " </return>\n"
- " SELECT person.NAME AS myName,\n"
- " person.AGE AS myAge,\n"
- " person.SEX AS mySex,\n"
- " FROM PERSON person WHERE person.NAME LIKE :name\n"
- "</sql-query>\n"
- "]]>"
+"<![CDATA[<sql-query name=\"mySqlQuery\">\n"
+" <return alias=\"person\" class=\"eg.Person\">\n"
+" <return-property name=\"name\" column=\"myName\"/>\n"
+" <return-property name=\"age\" column=\"myAge\"/>\n"
+" <return-property name=\"sex\" column=\"mySex\"/>\n"
+" </return>\n"
+" SELECT person.NAME AS myName,\n"
+" person.AGE AS myAge,\n"
+" person.SEX AS mySex,\n"
+" FROM PERSON person WHERE person.NAME LIKE :name\n"
+"</sql-query>\n"
+"]]>"
msgstr ""
- "<![CDATA[<sql-query name=\"mySqlQuery\">\n"
- " <return alias=\"person\" class=\"eg.Person\">\n"
- " <return-property name=\"name\" column=\"myName\"/>\n"
- " <return-property name=\"age\" column=\"myAge\"/>\n"
- " <return-property name=\"sex\" column=\"mySex\"/>\n"
- " </return>\n"
- " SELECT person.NAME AS myName,\n"
- " person.AGE AS myAge,\n"
- " person.SEX AS mySex,\n"
- " FROM PERSON person WHERE person.NAME LIKE :name\n"
- "</sql-query>\n"
- "]]>"
-#: index.docbook:408
-msgid "<literal><return-property></literal> also works with multiple columns. This solves a limitation with the <literal>{}</literal>-syntax which can not allow fine grained control of multi-column properties."
-msgstr "<literal><return-property></literal>는 또한 다중 컬럼들에 대해 동작한다. 이것은 다중-컬럼 프로퍼티들에 대한 fine grained 제어를 허용할 수 없는 <literal>{}</literal>-구문을 가진 제약을 해결해준다."
+#. Tag: para
+#: query_sql.xml:408
+#, no-c-format
+msgid ""
+"<literal><return-property></literal> also works with multiple columns. "
+"This solves a limitation with the <literal>{}</literal>-syntax which can not "
+"allow fine grained control of multi-column properties."
+msgstr ""
+"<literal><return-property></literal>는 또한 다중 컬럼들에 대해 동작한"
+"다. 이것은 다중-컬럼 프로퍼티들에 대한 fine grained 제어를 허용할 수 없는 "
+"<literal>{}</literal>-구문을 가진 제약을 해결해준다."
-#: index.docbook:413
+#. Tag: programlisting
+#: query_sql.xml:413
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"organizationCurrentEmployments\">\n"
- " <return alias=\"emp\" class=\"Employment\">\n"
- " <return-property name=\"salary\">\n"
- " <return-column name=\"VALUE\"/>\n"
- " <return-column name=\"CURRENCY\"/>\n"
- " </return-property>\n"
- " <return-property name=\"endDate\" column=\"myEndDate\"/>\n"
- " </return>\n"
- " SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer},\n"
- " STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate},\n"
- " REGIONCODE as {emp.regionCode}, EID AS {emp.id}, VALUE, CURRENCY\n"
- " FROM EMPLOYMENT\n"
- " WHERE EMPLOYER = :id AND ENDDATE IS NULL\n"
- " ORDER BY STARTDATE ASC\n"
- "</sql-query>]]>"
+"<![CDATA[<sql-query name=\"organizationCurrentEmployments\">\n"
+" <return alias=\"emp\" class=\"Employment\">\n"
+" <return-property name=\"salary\">\n"
+" <return-column name=\"VALUE\"/>\n"
+" <return-column name=\"CURRENCY\"/>\n"
+" </return-property>\n"
+" <return-property name=\"endDate\" column=\"myEndDate\"/>\n"
+" </return>\n"
+" SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer},\n"
+" STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate},\n"
+" REGIONCODE as {emp.regionCode}, EID AS {emp.id}, VALUE, CURRENCY\n"
+" FROM EMPLOYMENT\n"
+" WHERE EMPLOYER = :id AND ENDDATE IS NULL\n"
+" ORDER BY STARTDATE ASC\n"
+"</sql-query>]]>"
msgstr ""
- "<![CDATA[<sql-query name=\"organizationCurrentEmployments\">\n"
- " <return alias=\"emp\" class=\"Employment\">\n"
- " <return-property name=\"salary\">\n"
- " <return-column name=\"VALUE\"/>\n"
- " <return-column name=\"CURRENCY\"/>\n"
- " </return-property>\n"
- " <return-property name=\"endDate\" column=\"myEndDate\"/>\n"
- " </return>\n"
- " SELECT EMPLOYEE AS {emp.employee}, EMPLOYER AS {emp.employer},\n"
- " STARTDATE AS {emp.startDate}, ENDDATE AS {emp.endDate},\n"
- " REGIONCODE as {emp.regionCode}, EID AS {emp.id}, VALUE, CURRENCY\n"
- " FROM EMPLOYMENT\n"
- " WHERE EMPLOYER = :id AND ENDDATE IS NULL\n"
- " ORDER BY STARTDATE ASC\n"
- "</sql-query>]]>"
-#: index.docbook:415
-msgid "Notice that in this example we used <literal><return-property></literal> in combination with the <literal>{}</literal>-syntax for injection. Allowing users to choose how they want to refer column and properties."
-msgstr "이 예제에서 우리는 끼워넣기(injection)를 위해 <literal>{}</literal>-구문과 함께 <literal><return-property></literal>를 사용했음을 주목하라. 사용자들이 컬럼과 프로퍼티들을 참조하고자 원하는 방법을 선택하는 것을 사용자들에게 허용해줌으로써."
+#. Tag: para
+#: query_sql.xml:415
+#, no-c-format
+msgid ""
+"Notice that in this example we used <literal><return-property></"
+"literal> in combination with the <literal>{}</literal>-syntax for injection. "
+"Allowing users to choose how they want to refer column and properties."
+msgstr ""
+"이 예제에서 우리는 끼워넣기(injection)를 위해 <literal>{}</literal>-구문과 함"
+"께 <literal><return-property></literal>를 사용했음을 주목하라. 사용자들"
+"이 컬럼과 프로퍼티들을 참조하고자 원하는 방법을 선택하는 것을 사용자들에게 허"
+"용해줌으로써."
-#: index.docbook:420
-msgid "If your mapping has a discriminator you must use <literal><return-discriminator></literal> to specify the discriminator column."
-msgstr "만일 당신의 매핑이 한 개의 판별자(discriminator )를 가질 경우 당신은 판별자 컬럼을 지정하는데 <literal><return-discriminator></literal>를 사용해야 한다."
+#. Tag: para
+#: query_sql.xml:420
+#, no-c-format
+msgid ""
+"If your mapping has a discriminator you must use <literal><return-"
+"discriminator></literal> to specify the discriminator column."
+msgstr ""
+"만일 당신의 매핑이 한 개의 판별자(discriminator )를 가질 경우 당신은 판별자 "
+"컬럼을 지정하는데 <literal><return-discriminator></literal>를 사용해야 "
+"한다."
-#: index.docbook:426
+#. Tag: title
+#: query_sql.xml:426
+#, no-c-format
msgid "Using stored procedures for querying"
msgstr "질의를 위한 내장 프로시저 사용하기"
-#: index.docbook:428
-msgid "Hibernate 3 introduces support for queries via stored procedures and functions. Most of the following documentation is equivalent for both. The stored procedure/function must return a resultset as the first out-parameter to be able to work with Hibernate. An example of such a stored function in Oracle 9 and higher is as follows:"
-msgstr "Hibernate 3은 내장 프로시저들과 함수들을 통한 질의 지원을 도입한다. 대부분의 다음 문서는 양자 모두에 동일하게 적용된다. 내장 프로시저/함수는 Hibernate와 동작하는 것이 가능하도록 첫 번째 out-파라미터로서 한 개의 결과셋을 반환해야 한다. Oracle9 이상의 버전에서 그런 내장 프로시저에 대한 예제는 다음과 같다:"
+#. Tag: para
+#: query_sql.xml:428
+#, no-c-format
+msgid ""
+"Hibernate 3 introduces support for queries via stored procedures and "
+"functions. Most of the following documentation is equivalent for both. The "
+"stored procedure/function must return a resultset as the first out-parameter "
+"to be able to work with Hibernate. An example of such a stored function in "
+"Oracle 9 and higher is as follows:"
+msgstr ""
+"Hibernate 3은 내장 프로시저들과 함수들을 통한 질의 지원을 도입한다. 대부분의 "
+"다음 문서는 양자 모두에 동일하게 적용된다. 내장 프로시저/함수는 Hibernate와 "
+"동작하는 것이 가능하도록 첫 번째 out-파라미터로서 한 개의 결과셋을 반환해야 "
+"한다. Oracle9 이상의 버전에서 그런 내장 프로시저에 대한 예제는 다음과 같다:"
-#: index.docbook:434
+#. Tag: programlisting
+#: query_sql.xml:434
+#, no-c-format
msgid ""
- "<![CDATA[CREATE OR REPLACE FUNCTION selectAllEmployments\n"
- " RETURN SYS_REFCURSOR\n"
- "AS\n"
- " st_cursor SYS_REFCURSOR;\n"
- "BEGIN\n"
- " OPEN st_cursor FOR\n"
- " SELECT EMPLOYEE, EMPLOYER,\n"
- " STARTDATE, ENDDATE,\n"
- " REGIONCODE, EID, VALUE, CURRENCY\n"
- " FROM EMPLOYMENT;\n"
- " RETURN st_cursor;\n"
- " END;]]>"
+"<![CDATA[CREATE OR REPLACE FUNCTION selectAllEmployments\n"
+" RETURN SYS_REFCURSOR\n"
+"AS\n"
+" st_cursor SYS_REFCURSOR;\n"
+"BEGIN\n"
+" OPEN st_cursor FOR\n"
+" SELECT EMPLOYEE, EMPLOYER,\n"
+" STARTDATE, ENDDATE,\n"
+" REGIONCODE, EID, VALUE, CURRENCY\n"
+" FROM EMPLOYMENT;\n"
+" RETURN st_cursor;\n"
+" END;]]>"
msgstr ""
- "<![CDATA[CREATE OR REPLACE FUNCTION selectAllEmployments\n"
- " RETURN SYS_REFCURSOR\n"
- "AS\n"
- " st_cursor SYS_REFCURSOR;\n"
- "BEGIN\n"
- " OPEN st_cursor FOR\n"
- " SELECT EMPLOYEE, EMPLOYER,\n"
- " STARTDATE, ENDDATE,\n"
- " REGIONCODE, EID, VALUE, CURRENCY\n"
- " FROM EMPLOYMENT;\n"
- " RETURN st_cursor;\n"
- " END;]]>"
-#: index.docbook:436
+#. Tag: para
+#: query_sql.xml:436
+#, no-c-format
msgid "To use this query in Hibernate you need to map it via a named query."
-msgstr "Hibernate에서 이 질의를 사용하기 위해 당신은 하나의 명명된 질의(a named query)를 통해 그것을 매핑할 필요가 있다."
+msgstr ""
+"Hibernate에서 이 질의를 사용하기 위해 당신은 하나의 명명된 질의(a named "
+"query)를 통해 그것을 매핑할 필요가 있다."
-#: index.docbook:439
+#. Tag: programlisting
+#: query_sql.xml:439
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"selectAllEmployees_SP\" callable=\"true\">\n"
- " <return alias=\"emp\" class=\"Employment\">\n"
- " <return-property name=\"employee\" column=\"EMPLOYEE\"/>\n"
- " <return-property name=\"employer\" column=\"EMPLOYER\"/>\n"
- " <return-property name=\"startDate\" column=\"STARTDATE\"/>\n"
- " <return-property name=\"endDate\" column=\"ENDDATE\"/>\n"
- " <return-property name=\"regionCode\" column=\"REGIONCODE\"/>\n"
- " <return-property name=\"id\" column=\"EID\"/>\n"
- " <return-property name=\"salary\">\n"
- " <return-column name=\"VALUE\"/>\n"
- " <return-column name=\"CURRENCY\"/>\n"
- " </return-property>\n"
- " </return>\n"
- " { ? = call selectAllEmployments() }\n"
- "</sql-query>]]>"
+"<![CDATA[<sql-query name=\"selectAllEmployees_SP\" callable=\"true\">\n"
+" <return alias=\"emp\" class=\"Employment\">\n"
+" <return-property name=\"employee\" column=\"EMPLOYEE\"/>\n"
+" <return-property name=\"employer\" column=\"EMPLOYER\"/>\n"
+" <return-property name=\"startDate\" column=\"STARTDATE\"/>\n"
+" <return-property name=\"endDate\" column=\"ENDDATE\"/>\n"
+" <return-property name=\"regionCode\" column=\"REGIONCODE\"/>\n"
+" <return-property name=\"id\" column=\"EID\"/>\n"
+" <return-property name=\"salary\">\n"
+" <return-column name=\"VALUE\"/>\n"
+" <return-column name=\"CURRENCY\"/>\n"
+" </return-property>\n"
+" </return>\n"
+" { ? = call selectAllEmployments() }\n"
+"</sql-query>]]>"
msgstr ""
- "<![CDATA[<sql-query name=\"selectAllEmployees_SP\" callable=\"true\">\n"
- " <return alias=\"emp\" class=\"Employment\">\n"
- " <return-property name=\"employee\" column=\"EMPLOYEE\"/>\n"
- " <return-property name=\"employer\" column=\"EMPLOYER\"/>\n"
- " <return-property name=\"startDate\" column=\"STARTDATE\"/>\n"
- " <return-property name=\"endDate\" column=\"ENDDATE\"/>\n"
- " <return-property name=\"regionCode\" column=\"REGIONCODE\"/>\n"
- " <return-property name=\"id\" column=\"EID\"/>\n"
- " <return-property name=\"salary\">\n"
- " <return-column name=\"VALUE\"/>\n"
- " <return-column name=\"CURRENCY\"/>\n"
- " </return-property>\n"
- " </return>\n"
- " { ? = call selectAllEmployments() }\n"
- "</sql-query>]]>"
-#: index.docbook:441
-msgid "Notice stored procedures currently only return scalars and entities. <literal><return-join></literal> and <literal><load-collection></literal> are not supported."
-msgstr "내장 프로시저들은 현재 스칼라들과 엔티티들 만을 반환함을 주목하라. <literal><return-join></literal>과 <literal><load-collection></literal>은 지원되지 않는다."
+#. Tag: para
+#: query_sql.xml:441
+#, no-c-format
+msgid ""
+"Notice stored procedures currently only return scalars and entities. "
+"<literal><return-join></literal> and <literal><load-collection></"
+"literal> are not supported."
+msgstr ""
+"내장 프로시저들은 현재 스칼라들과 엔티티들 만을 반환함을 주목하라. "
+"<literal><return-join></literal>과 <literal><load-collection></"
+"literal>은 지원되지 않는다."
-#: index.docbook:446
+#. Tag: title
+#: query_sql.xml:446
+#, no-c-format
msgid "Rules/limitations for using stored procedures"
msgstr "내장 프로시저들을 사용하는 규칙들/제약들"
-#: index.docbook:448
-msgid "To use stored procedures with Hibernate the procedures/functions have to follow some rules. If they do not follow those rules they are not usable with Hibernate. If you still want to use these procedures you have to execute them via <literal>session.connection()</literal>. The rules are different for each database, since database vendors have different stored procedure semantics/syntax."
-msgstr "Hibernate에서 내장 프로시저들을 사용하기 위해서 프로시저들/함수들은 다음 몇몇 규칙들을 따라야 한다. 만일 그것들이 그들 규칙들을 따르지 않을 경우 그것들은 Hibernate와 함께 사용 불가능하다. 만일 당신이 여전히 이들 프로시저들을 사용하고자 원할 경우, 당신은 <literal>session.connection()</literal>을 통해 그것들을 실행시켜야 한다. 데이터베이스 벤더들이 다른 내장 프로시저 의미론/구문을 갖고 있기 때문에, 규칙들은 각각의 데이터베이스에 따라 차이가 난다."
+#. Tag: para
+#: query_sql.xml:448
+#, no-c-format
+msgid ""
+"To use stored procedures with Hibernate the procedures/functions have to "
+"follow some rules. If they do not follow those rules they are not usable "
+"with Hibernate. If you still want to use these procedures you have to "
+"execute them via <literal>session.connection()</literal>. The rules are "
+"different for each database, since database vendors have different stored "
+"procedure semantics/syntax."
+msgstr ""
+"Hibernate에서 내장 프로시저들을 사용하기 위해서 프로시저들/함수들은 다음 몇"
+"몇 규칙들을 따라야 한다. 만일 그것들이 그들 규칙들을 따르지 않을 경우 그것들"
+"은 Hibernate와 함께 사용 불가능하다. 만일 당신이 여전히 이들 프로시저들을 사"
+"용하고자 원할 경우, 당신은 <literal>session.connection()</literal>을 통해 그"
+"것들을 실행시켜야 한다. 데이터베이스 벤더들이 다른 내장 프로시저 의미론/구문"
+"을 갖고 있기 때문에, 규칙들은 각각의 데이터베이스에 따라 차이가 난다."
-#: index.docbook:455
-msgid "Stored procedure queries can't be paged with <literal>setFirstResult()/setMaxResults()</literal>."
-msgstr "내장 프로시저 질의들은 <literal>setFirstResult()/setMaxResults()</literal>로서 쪽매김 될 수 없다."
+#. Tag: para
+#: query_sql.xml:455
+#, no-c-format
+msgid ""
+"Stored procedure queries can't be paged with <literal>setFirstResult()/"
+"setMaxResults()</literal>."
+msgstr ""
+"내장 프로시저 질의들은 <literal>setFirstResult()/setMaxResults()</literal>로"
+"서 쪽매김 될 수 없다."
-#: index.docbook:458
-msgid "Recommended call form is standard SQL92: <literal>{ ? = call functionName(<parameters>) }</literal> or <literal>{ ? = call procedureName(<parameters>}</literal>. Native call syntax is not supported."
-msgstr "권장되는 호출 형식은 표준 SQL92이다: <literal>{ ? = call functionName(<parameters>) }</literal> 또는 <literal>{ ? = call procedureName(<parameters>}</literal>. Native 호출 구문은 지원되지 않는다."
+#. Tag: para
+#: query_sql.xml:458
+#, no-c-format
+msgid ""
+"Recommended call form is standard SQL92: <literal>{ ? = call functionName"
+"(<parameters>) }</literal> or <literal>{ ? = call procedureName(<"
+"parameters>}</literal>. Native call syntax is not supported."
+msgstr ""
+"권장되는 호출 형식은 표준 SQL92이다: <literal>{ ? = call functionName(<"
+"parameters>) }</literal> 또는 <literal>{ ? = call procedureName(<"
+"parameters>}</literal>. Native 호출 구문은 지원되지 않는다."
-#: index.docbook:463
+#. Tag: para
+#: query_sql.xml:463
+#, no-c-format
msgid "For Oracle the following rules apply:"
msgstr "Oracle의 경우 다음 규칙들이 적용된다:"
-#: index.docbook:467
-msgid "A function must return a result set. The first parameter of a procedure must be an <literal>OUT</literal> that returns a result set. This is done by using a <literal>SYS_REFCURSOR</literal> type in Oracle 9 or 10. In Oracle you need to define a <literal>REF CURSOR</literal> type, see Oracle literature."
-msgstr "하나의 함수는 하나의 결과 셋을 반환해야 한다. 프로시저의 첫 번째 파라미터는 하나의 결과 셋을 반환하는 하나의 <literal>OUT</literal>이어야 한다. 이것은 Oracle 9 또는 10에서 하나의 <literal>SYS_REFCURSOR</literal>를 사용하여 행해진다. Oracle에서 당신은 <literal>REF CURSOR</literal> 타입을 정의할 필요가 있는데, Oracle 보고서를 보라."
+#. Tag: para
+#: query_sql.xml:467
+#, no-c-format
+msgid ""
+"A function must return a result set. The first parameter of a procedure must "
+"be an <literal>OUT</literal> that returns a result set. This is done by "
+"using a <literal>SYS_REFCURSOR</literal> type in Oracle 9 or 10. In Oracle "
+"you need to define a <literal>REF CURSOR</literal> type, see Oracle "
+"literature."
+msgstr ""
+"하나의 함수는 하나의 결과 셋을 반환해야 한다. 프로시저의 첫 번째 파라미터는 "
+"하나의 결과 셋을 반환하는 하나의 <literal>OUT</literal>이어야 한다. 이것은 "
+"Oracle 9 또는 10에서 하나의 <literal>SYS_REFCURSOR</literal>를 사용하여 행해"
+"진다. Oracle에서 당신은 <literal>REF CURSOR</literal> 타입을 정의할 필요가 있"
+"는데, Oracle 보고서를 보라."
-#: index.docbook:476
+#. Tag: para
+#: query_sql.xml:476
+#, no-c-format
msgid "For Sybase or MS SQL server the following rules apply:"
msgstr "Sybase 또는 MS SQL server의 경우 다음 규칙들이 적용된다:"
-#: index.docbook:480
-msgid "The procedure must return a result set. Note that since these servers can/will return multiple result sets and update counts, Hibernate will iterate the results and take the first result that is a result set as its return value. Everything else will be discarded."
-msgstr "프로시저는 한 개의 결과 셋을 반환해야 한다. 이들 서버들이 여러 개의 결과셋들과 업데이트 카운트들을 반환 할수 있다/할 것이이므로, Hibernate는 결과들을 반복 순환할 것이고 그것의 반환 값으로서 하나의 결과 셋인 첫 번째 결과를 취할 것이다. 그 밖의 모든 것은 폐기될 것이다."
+#. Tag: para
+#: query_sql.xml:480
+#, no-c-format
+msgid ""
+"The procedure must return a result set. Note that since these servers can/"
+"will return multiple result sets and update counts, Hibernate will iterate "
+"the results and take the first result that is a result set as its return "
+"value. Everything else will be discarded."
+msgstr ""
+"프로시저는 한 개의 결과 셋을 반환해야 한다. 이들 서버들이 여러 개의 결과셋들"
+"과 업데이트 카운트들을 반환 할수 있다/할 것이이므로, Hibernate는 결과들을 반"
+"복 순환할 것이고 그것의 반환 값으로서 하나의 결과 셋인 첫 번째 결과를 취할 것"
+"이다. 그 밖의 모든 것은 폐기될 것이다."
-#: index.docbook:488
-msgid "If you can enable <literal>SET NOCOUNT ON</literal> in your procedure it will probably be more efficient, but this is not a requirement."
-msgstr "만일 당신이 당신의 프로시저 내에 <literal>SET NOCOUNT ON</literal>을 이용 가능하게 할 수 있다면 그것은 아마 보다 효율적이게 될 것이지만 이것은 필요 조건이 아니다."
+#. Tag: para
+#: query_sql.xml:488
+#, no-c-format
+msgid ""
+"If you can enable <literal>SET NOCOUNT ON</literal> in your procedure it "
+"will probably be more efficient, but this is not a requirement."
+msgstr ""
+"만일 당신이 당신의 프로시저 내에 <literal>SET NOCOUNT ON</literal>을 이용 가"
+"능하게 할 수 있다면 그것은 아마 보다 효율적이게 될 것이지만 이것은 필요 조건"
+"이 아니다."
-#: index.docbook:498
+#. Tag: title
+#: query_sql.xml:498
+#, no-c-format
msgid "Custom SQL for create, update and delete"
msgstr "create, update 그리고 delete를 위한 맞춤형 SQL"
-#: index.docbook:500
-msgid "Hibernate3 can use custom SQL statements for create, update, and delete operations. The class and collection persisters in Hibernate already contain a set of configuration time generated strings (insertsql, deletesql, updatesql etc.). The mapping tags <literal><sql-insert></literal>, <literal><sql-delete></literal>, and <literal><sql-update></literal> override these strings:"
-msgstr "Hibernate3는 create, update, delete 오퍼레이션들을 위한 맞춤형 문장들을 사용할 수 있다. Hibernate에서 클래스와 콜렉션 영속자들은 구성 시에 생성된 문자열들의 집합(insertsql, deletesql, updatesql 등)을 이미 포함하고 있다. <literal><sql-insert></literal>, <literal><sql-delete></literal>, <literal><sql-update></literal> 매핑 태그들은 이들 문자열들을 오버라이드 시킨다:"
+#. Tag: para
+#: query_sql.xml:500
+#, no-c-format
+msgid ""
+"Hibernate3 can use custom SQL statements for create, update, and delete "
+"operations. The class and collection persisters in Hibernate already contain "
+"a set of configuration time generated strings (insertsql, deletesql, "
+"updatesql etc.). The mapping tags <literal><sql-insert></literal>, "
+"<literal><sql-delete></literal>, and <literal><sql-update></"
+"literal> override these strings:"
+msgstr ""
+"Hibernate3는 create, update, delete 오퍼레이션들을 위한 맞춤형 문장들을 사용"
+"할 수 있다. Hibernate에서 클래스와 콜렉션 영속자들은 구성 시에 생성된 문자열"
+"들의 집합(insertsql, deletesql, updatesql 등)을 이미 포함하고 있다. "
+"<literal><sql-insert></literal>, <literal><sql-delete></"
+"literal>, <literal><sql-update></literal> 매핑 태그들은 이들 문자열들"
+"을 오버라이드 시킨다:"
-#: index.docbook:508
+#. Tag: programlisting
+#: query_sql.xml:508
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <property name=\"name\" not-null=\"true\"/>\n"
- " <sql-insert>INSERT INTO PERSON (NAME, ID) VALUES ( UPPER(?), ? )</sql-insert>\n"
- " <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE ID=?</sql-update>\n"
- " <sql-delete>DELETE FROM PERSON WHERE ID=?</sql-delete>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"increment\"/>\n"
+" </id>\n"
+" <property name=\"name\" not-null=\"true\"/>\n"
+" <sql-insert>INSERT INTO PERSON (NAME, ID) VALUES ( UPPER(?), ? )</sql-"
+"insert>\n"
+" <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE ID=?</sql-update>\n"
+" <sql-delete>DELETE FROM PERSON WHERE ID=?</sql-delete>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <property name=\"name\" not-null=\"true\"/>\n"
- " <sql-insert>INSERT INTO PERSON (NAME, ID) VALUES ( UPPER(?), ? )</sql-insert>\n"
- " <sql-update>UPDATE PERSON SET NAME=UPPER(?) WHERE ID=?</sql-update>\n"
- " <sql-delete>DELETE FROM PERSON WHERE ID=?</sql-delete>\n"
- "</class>]]>"
-#: index.docbook:510
-msgid "The SQL is directly executed in your database, so you are free to use any dialect you like. This will of course reduce the portability of your mapping if you use database specific SQL."
-msgstr "SQL이 당신의 데이터베이스 내에서 직접 실행되어서, 당신이 좋아하는 임의의 dialect를 사용하는 것이 자유롭다. 만일 당신이 데이터베이스 지정적인 SQL을 사용할 경우 이것은 물론 당신의 매핑의 이식성을 감소시킬 것이다."
+#. Tag: para
+#: query_sql.xml:510
+#, no-c-format
+msgid ""
+"The SQL is directly executed in your database, so you are free to use any "
+"dialect you like. This will of course reduce the portability of your mapping "
+"if you use database specific SQL."
+msgstr ""
+"SQL이 당신의 데이터베이스 내에서 직접 실행되어서, 당신이 좋아하는 임의의 "
+"dialect를 사용하는 것이 자유롭다. 만일 당신이 데이터베이스 지정적인 SQL을 사"
+"용할 경우 이것은 물론 당신의 매핑의 이식성을 감소시킬 것이다."
-#: index.docbook:514
-msgid "Stored procedures are supported if the <literal>callable</literal> attribute is set:"
-msgstr "만일 <literal>callable</literal> 속성이 설정되면 내장 프로시저들이 지원된다:"
+#. Tag: para
+#: query_sql.xml:514
+#, no-c-format
+msgid ""
+"Stored procedures are supported if the <literal>callable</literal> attribute "
+"is set:"
+msgstr ""
+"만일 <literal>callable</literal> 속성이 설정되면 내장 프로시저들이 지원된다:"
-#: index.docbook:517
+#. Tag: programlisting
+#: query_sql.xml:517
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <property name=\"name\" not-null=\"true\"/>\n"
- " <sql-insert callable=\"true\">{call createPerson (?, ?)}</sql-insert>\n"
- " <sql-delete callable=\"true\">{? = call deletePerson (?)}</sql-delete>\n"
- " <sql-update callable=\"true\">{? = call updatePerson (?, ?)}</sql-update>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"increment\"/>\n"
+" </id>\n"
+" <property name=\"name\" not-null=\"true\"/>\n"
+" <sql-insert callable=\"true\">{call createPerson (?, ?)}</sql-insert>\n"
+" <sql-delete callable=\"true\">{? = call deletePerson (?)}</sql-delete>\n"
+" <sql-update callable=\"true\">{? = call updatePerson (?, ?)}</sql-"
+"update>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <property name=\"name\" not-null=\"true\"/>\n"
- " <sql-insert callable=\"true\">{call createPerson (?, ?)}</sql-insert>\n"
- " <sql-delete callable=\"true\">{? = call deletePerson (?)}</sql-delete>\n"
- " <sql-update callable=\"true\">{? = call updatePerson (?, ?)}</sql-update>\n"
- "</class>]]>"
-#: index.docbook:519
-msgid "The order of the positional parameters are currently vital, as they must be in the same sequence as Hibernate expects them."
-msgstr "위치 파라미터들은 Hibernate가 그것들을 기대하는 것과 같은 순서가 되어야 하므로, 위치 파라미터들의 순서는 현재 절대적으로 중요하다."
+#. Tag: para
+#: query_sql.xml:519
+#, no-c-format
+msgid ""
+"The order of the positional parameters are currently vital, as they must be "
+"in the same sequence as Hibernate expects them."
+msgstr ""
+"위치 파라미터들은 Hibernate가 그것들을 기대하는 것과 같은 순서가 되어야 하므"
+"로, 위치 파라미터들의 순서는 현재 절대적으로 중요하다."
-#: index.docbook:522
-msgid "You can see the expected order by enabling debug logging for the <literal>org.hibernate.persister.entity</literal> level. With this level enabled Hibernate will print out the static SQL that is used to create, update, delete etc. entities. (To see the expected sequence, remember to not include your custom SQL in the mapping files as that will override the Hibernate generated static sql.)"
-msgstr "당신은 <literal>org.hiberate.persister.entity</literal> 레벨로 디버그 로깅을 사용 가능하게 함으로써 예상된 순서를 볼 수 있다. 이 레벨을 이용 가능하게 하면 Hibernate는 엔티티들을 생성시키고, 업데이트하고, 삭제하는데 사용되는 정적인 SQL을 출력할 것이다. (예상되는 결과를 보려면, Hibernate 생성된 정적인 sql을 오버라이드 시키게 매핑 파일들 속에 당신의 맞춤형 SQL을 포함시키지 않도록 염두에 두라.)"
+#. Tag: para
+#: query_sql.xml:522
+#, no-c-format
+msgid ""
+"You can see the expected order by enabling debug logging for the "
+"<literal>org.hibernate.persister.entity</literal> level. With this level "
+"enabled Hibernate will print out the static SQL that is used to create, "
+"update, delete etc. entities. (To see the expected sequence, remember to not "
+"include your custom SQL in the mapping files as that will override the "
+"Hibernate generated static sql.)"
+msgstr ""
+"당신은 <literal>org.hiberate.persister.entity</literal> 레벨로 디버그 로깅을 "
+"사용 가능하게 함으로써 예상된 순서를 볼 수 있다. 이 레벨을 이용 가능하게 하"
+"면 Hibernate는 엔티티들을 생성시키고, 업데이트하고, 삭제하는데 사용되는 정적"
+"인 SQL을 출력할 것이다. (예상되는 결과를 보려면, Hibernate 생성된 정적인 sql"
+"을 오버라이드 시키게 매핑 파일들 속에 당신의 맞춤형 SQL을 포함시키지 않도록 "
+"염두에 두라.)"
-#: index.docbook:529
-msgid "The stored procedures are in most cases (read: better do it than not) required to return the number of rows inserted/updated/deleted, as Hibernate has some runtime checks for the success of the statement. Hibernate always registers the first statement parameter as a numeric output parameter for the CUD operations:"
-msgstr "Hibernate가 문장의 성공을 위해 몇몇 실행 시 체크들을 행하므로, 내장 프로시저들은 대부분의 경우들(읽기:다른 경우들 보다 그것을 더 잘 행한다)에서 insert되고/업데이트되고/삭제된 행들의 개수를 반환하는데 필요하다. Hibernate는 항상 CUD 오퍼레이션들에 대한 숫자 출력 파라미터로서 첫 번째 문장 파라미터를 등록시킨다:"
+#. Tag: para
+#: query_sql.xml:529
+#, no-c-format
+msgid ""
+"The stored procedures are in most cases (read: better do it than not) "
+"required to return the number of rows inserted/updated/deleted, as Hibernate "
+"has some runtime checks for the success of the statement. Hibernate always "
+"registers the first statement parameter as a numeric output parameter for "
+"the CUD operations:"
+msgstr ""
+"Hibernate가 문장의 성공을 위해 몇몇 실행 시 체크들을 행하므로, 내장 프로시저"
+"들은 대부분의 경우들(읽기:다른 경우들 보다 그것을 더 잘 행한다)에서 insert되"
+"고/업데이트되고/삭제된 행들의 개수를 반환하는데 필요하다. Hibernate는 항상 "
+"CUD 오퍼레이션들에 대한 숫자 출력 파라미터로서 첫 번째 문장 파라미터를 등록시"
+"킨다:"
-#: index.docbook:535
+#. Tag: programlisting
+#: query_sql.xml:535
+#, no-c-format
msgid ""
- "<![CDATA[CREATE OR REPLACE FUNCTION updatePerson (uid IN NUMBER, uname IN VARCHAR2)\n"
- " RETURN NUMBER IS\n"
- "BEGIN\n"
- "\n"
- " update PERSON\n"
- " set\n"
- " NAME = uname,\n"
- " where\n"
- " ID = uid;\n"
- "\n"
- " return SQL%ROWCOUNT;\n"
- "\n"
- "END updatePerson;]]>"
+"<![CDATA[CREATE OR REPLACE FUNCTION updatePerson (uid IN NUMBER, uname IN "
+"VARCHAR2)\n"
+" RETURN NUMBER IS\n"
+"BEGIN\n"
+"\n"
+" update PERSON\n"
+" set\n"
+" NAME = uname,\n"
+" where\n"
+" ID = uid;\n"
+"\n"
+" return SQL%ROWCOUNT;\n"
+"\n"
+"END updatePerson;]]>"
msgstr ""
- "<![CDATA[CREATE OR REPLACE FUNCTION updatePerson (uid IN NUMBER, uname IN VARCHAR2)\n"
- " RETURN NUMBER IS\n"
- "BEGIN\n"
- "\n"
- " update PERSON\n"
- " set\n"
- " NAME = uname,\n"
- " where\n"
- " ID = uid;\n"
- "\n"
- " return SQL%ROWCOUNT;\n"
- "\n"
- "END updatePerson;]]>"
-#: index.docbook:539
+#. Tag: title
+#: query_sql.xml:539
+#, no-c-format
msgid "Custom SQL for loading"
msgstr "로딩을 위한 맞춤형 SQL"
-#: index.docbook:541
+#. Tag: para
+#: query_sql.xml:541
+#, no-c-format
msgid "You may also declare your own SQL (or HQL) queries for entity loading:"
-msgstr "당신은 또한 엔티티 로딩을 위한 당신 자신의 SQL (또는 HQL)을 선언할 수도 있다:"
+msgstr ""
+"당신은 또한 엔티티 로딩을 위한 당신 자신의 SQL (또는 HQL)을 선언할 수도 있다:"
-#: index.docbook:544
+#. Tag: programlisting
+#: query_sql.xml:544
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"person\">\n"
- " <return alias=\"pers\" class=\"Person\" lock-mode=\"upgrade\"/>\n"
- " SELECT NAME AS {pers.name}, ID AS {pers.id}\n"
- " FROM PERSON\n"
- " WHERE ID=?\n"
- " FOR UPDATE\n"
- "</sql-query>]]>"
+"<![CDATA[<sql-query name=\"person\">\n"
+" <return alias=\"pers\" class=\"Person\" lock-mode=\"upgrade\"/>\n"
+" SELECT NAME AS {pers.name}, ID AS {pers.id}\n"
+" FROM PERSON\n"
+" WHERE ID=?\n"
+" FOR UPDATE\n"
+"</sql-query>]]>"
msgstr ""
- "<![CDATA[<sql-query name=\"person\">\n"
- " <return alias=\"pers\" class=\"Person\" lock-mode=\"upgrade\"/>\n"
- " SELECT NAME AS {pers.name}, ID AS {pers.id}\n"
- " FROM PERSON\n"
- " WHERE ID=?\n"
- " FOR UPDATE\n"
- "</sql-query>]]>"
-#: index.docbook:546
-msgid "This is just a named query declaration, as discussed earlier. You may reference this named query in a class mapping:"
-msgstr "이것은 앞서 논의했듯이 단지 명명된 질의 선언이다. 당신은 class 매핑 속에 이 명명된 질의를 참조할 수 있다:"
+#. Tag: para
+#: query_sql.xml:546
+#, no-c-format
+msgid ""
+"This is just a named query declaration, as discussed earlier. You may "
+"reference this named query in a class mapping:"
+msgstr ""
+"이것은 앞서 논의했듯이 단지 명명된 질의 선언이다. 당신은 class 매핑 속에 이 "
+"명명된 질의를 참조할 수 있다:"
-#: index.docbook:549
+#. Tag: programlisting
+#: query_sql.xml:549
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <property name=\"name\" not-null=\"true\"/>\n"
- " <loader query-ref=\"person\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Person\">\n"
+" <id name=\"id\">\n"
+" <generator class=\"increment\"/>\n"
+" </id>\n"
+" <property name=\"name\" not-null=\"true\"/>\n"
+" <loader query-ref=\"person\"/>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Person\">\n"
- " <id name=\"id\">\n"
- " <generator class=\"increment\"/>\n"
- " </id>\n"
- " <property name=\"name\" not-null=\"true\"/>\n"
- " <loader query-ref=\"person\"/>\n"
- "</class>]]>"
-#: index.docbook:551
+#. Tag: para
+#: query_sql.xml:551
+#, no-c-format
msgid "This even works with stored procedures."
msgstr "이것은 심지어 내장 프로시저들에 동작한다."
-#: index.docbook:553
+#. Tag: para
+#: query_sql.xml:553
+#, no-c-format
msgid "You may even define a query for collection loading:"
msgstr "당신은 콜렉션 로딩을 위한 한 개의 질의를 정의할 수도 있다:"
-#: index.docbook:555
+#. Tag: programlisting
+#: query_sql.xml:555
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"employments\" inverse=\"true\">\n"
- " <key/>\n"
- " <one-to-many class=\"Employment\"/>\n"
- " <loader query-ref=\"employments\"/>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"employments\" inverse=\"true\">\n"
+" <key/>\n"
+" <one-to-many class=\"Employment\"/>\n"
+" <loader query-ref=\"employments\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"employments\" inverse=\"true\">\n"
- " <key/>\n"
- " <one-to-many class=\"Employment\"/>\n"
- " <loader query-ref=\"employments\"/>\n"
- "</set>]]>"
-#: index.docbook:557
+#. Tag: programlisting
+#: query_sql.xml:557
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"employments\">\n"
- " <load-collection alias=\"emp\" role=\"Person.employments\"/>\n"
- " SELECT {emp.*}\n"
- " FROM EMPLOYMENT emp\n"
- " WHERE EMPLOYER = :id\n"
- " ORDER BY STARTDATE ASC, EMPLOYEE ASC\n"
- "</sql-query>]]>"
+"<![CDATA[<sql-query name=\"employments\">\n"
+" <load-collection alias=\"emp\" role=\"Person.employments\"/>\n"
+" SELECT {emp.*}\n"
+" FROM EMPLOYMENT emp\n"
+" WHERE EMPLOYER = :id\n"
+" ORDER BY STARTDATE ASC, EMPLOYEE ASC\n"
+"</sql-query>]]>"
msgstr ""
- "<![CDATA[<sql-query name=\"employments\">\n"
- " <load-collection alias=\"emp\" role=\"Person.employments\"/>\n"
- " SELECT {emp.*}\n"
- " FROM EMPLOYMENT emp\n"
- " WHERE EMPLOYER = :id\n"
- " ORDER BY STARTDATE ASC, EMPLOYEE ASC\n"
- "</sql-query>]]>"
-#: index.docbook:559
-msgid "You could even define an entity loader that loads a collection by join fetching:"
-msgstr "당신은 심지어 조인 페칭에 의해 하나의 콜렉션을 로드시키는 하나의 엔티티를 정의할 수 있다:"
+#. Tag: para
+#: query_sql.xml:559
+#, no-c-format
+msgid ""
+"You could even define an entity loader that loads a collection by join "
+"fetching:"
+msgstr ""
+"당신은 심지어 조인 페칭에 의해 하나의 콜렉션을 로드시키는 하나의 엔티티를 정"
+"의할 수 있다:"
-#: index.docbook:562
+#. Tag: programlisting
+#: query_sql.xml:562
+#, no-c-format
msgid ""
- "<![CDATA[<sql-query name=\"person\">\n"
- " <return alias=\"pers\" class=\"Person\"/>\n"
- " <return-join alias=\"emp\" property=\"pers.employments\"/>\n"
- " SELECT NAME AS {pers.*}, {emp.*}\n"
- " FROM PERSON pers\n"
- " LEFT OUTER JOIN EMPLOYMENT emp\n"
- " ON pers.ID = emp.PERSON_ID\n"
- " WHERE ID=?\n"
- "</sql-query>]]>"
+"<![CDATA[<sql-query name=\"person\">\n"
+" <return alias=\"pers\" class=\"Person\"/>\n"
+" <return-join alias=\"emp\" property=\"pers.employments\"/>\n"
+" SELECT NAME AS {pers.*}, {emp.*}\n"
+" FROM PERSON pers\n"
+" LEFT OUTER JOIN EMPLOYMENT emp\n"
+" ON pers.ID = emp.PERSON_ID\n"
+" WHERE ID=?\n"
+"</sql-query>]]>"
msgstr ""
- "<![CDATA[<sql-query name=\"person\">\n"
- " <return alias=\"pers\" class=\"Person\"/>\n"
- " <return-join alias=\"emp\" property=\"pers.employments\"/>\n"
- " SELECT NAME AS {pers.*}, {emp.*}\n"
- " FROM PERSON pers\n"
- " LEFT OUTER JOIN EMPLOYMENT emp\n"
- " ON pers.ID = emp.PERSON_ID\n"
- " WHERE ID=?\n"
- "</sql-query>]]>"
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
Modified: core/trunk/documentation/manual/translations/ko-KR/content/session_api.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/session_api.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/session_api.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,1225 +1,2215 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: session_api.xml:5
+#, no-c-format
msgid "Working with objects"
msgstr "객체들로 작업하기"
-#: index.docbook:7
-msgid "Hibernate is a full object/relational mapping solution that not only shields the developer from the details of the underlying database management system, but also offers <emphasis>state management</emphasis> of objects. This is, contrary to the management of SQL <literal>statements</literal> in common JDBC/SQL persistence layers, a very natural object-oriented view of persistence in Java applications."
-msgstr "Hibernate는 기본 데이터베이스 관리 시스템의 상세로부터 개발자들을 은폐시켜줄 뿐만 아니라, 또한 객체들에 대한 <emphasis>상태 관리</emphasis>를 제공하는 하나의 완전한 객체/관계형 매핑 솔루션이다. 이것은 공통적인 JDBC/SQL 영속 계층들 내에서의 SQL <literal>문장들</literal>에 대한 관리와는 반대로, 자바 어플리케이션들에서 영속에 관한 매우 고유한 객체-지향적 관점이다."
+#. Tag: para
+#: session_api.xml:7
+#, no-c-format
+msgid ""
+"Hibernate is a full object/relational mapping solution that not only shields "
+"the developer from the details of the underlying database management system, "
+"but also offers <emphasis>state management</emphasis> of objects. This is, "
+"contrary to the management of SQL <literal>statements</literal> in common "
+"JDBC/SQL persistence layers, a very natural object-oriented view of "
+"persistence in Java applications."
+msgstr ""
+"Hibernate는 기본 데이터베이스 관리 시스템의 상세로부터 개발자들을 은폐시켜줄 "
+"뿐만 아니라, 또한 객체들에 대한 <emphasis>상태 관리</emphasis>를 제공하는 하"
+"나의 완전한 객체/관계형 매핑 솔루션이다. 이것은 공통적인 JDBC/SQL 영속 계층"
+"들 내에서의 SQL <literal>문장들</literal>에 대한 관리와는 반대로, 자바 어플리"
+"케이션들에서 영속에 관한 매우 고유한 객체-지향적 관점이다."
-#: index.docbook:16
-msgid "In other words, Hibernate application developers should always think about the <emphasis>state</emphasis> of their objects, and not necessarily about the execution of SQL statements. This part is taken care of by Hibernate and is only relevant for the application developer when tuning the performance of the system."
-msgstr "달리 말해, Hibernate 어플리케이션 개발자들은 그들의 객체들의 <emphasis>상태</emphasis>에 대해 항상 생각해야 하고, SQL 문장들의 실행에 대해서는 필수적이지 않다. 이 부분은 Hibernate에 의해 처리되고 시스템의 퍼포먼스를 튜닝할 때 어플리케이션 개발자와 유일하게 관련된다."
+#. Tag: para
+#: session_api.xml:16
+#, no-c-format
+msgid ""
+"In other words, Hibernate application developers should always think about "
+"the <emphasis>state</emphasis> of their objects, and not necessarily about "
+"the execution of SQL statements. This part is taken care of by Hibernate and "
+"is only relevant for the application developer when tuning the performance "
+"of the system."
+msgstr ""
+"달리 말해, Hibernate 어플리케이션 개발자들은 그들의 객체들의 <emphasis>상태</"
+"emphasis>에 대해 항상 생각해야 하고, SQL 문장들의 실행에 대해서는 필수적이지 "
+"않다. 이 부분은 Hibernate에 의해 처리되고 시스템의 퍼포먼스를 튜닝할 때 어플"
+"리케이션 개발자와 유일하게 관련된다."
-#: index.docbook:24
+#. Tag: title
+#: session_api.xml:24
+#, no-c-format
msgid "Hibernate object states"
msgstr "Hibernate 객체 상태들"
-#: index.docbook:26
+#. Tag: para
+#: session_api.xml:26
+#, no-c-format
msgid "Hibernate defines and supports the following object states:"
msgstr "Hibernate 다음 객체 상태들을 정의하고 지원한다:"
-#: index.docbook:32
-msgid "<emphasis>Transient</emphasis> - an object is transient if it has just been instantiated using the <literal>new</literal> operator, and it is not associated with a Hibernate <literal>Session</literal>. It has no persistent representation in the database and no identifier value has been assigned. Transient instances will be destroyed by the garbage collector if the application doesn't hold a reference anymore. Use the Hibernate <literal>Session</literal> to make an object persistent (and let Hibernate take care of the SQL statements that need to be executed for this transition)."
-msgstr "<emphasis>Transient</emphasis> - 만일 객체가 <literal>new</literal> 연산자를 사용하여 방금 초기화 되었다면 객체는 transient이고, 그것은 Hibernate <literal>Session</literal>과 연관되어 있지 않다. 그것은 데이터베이스 내에서 영속 표상을 갖지 않고 식별자 값이 할당되지 않았다. 만일 어플리케이션이 더 이상 참조를 소유하지 않을 경우 transient 인스턴스들은 쓰레기 수집기에 의해 파괴될 것이다. 객체를 영속화 시키는데 (그리고 이 전이(transition)에 대해 실행될 필요가 있는 SQL 문장들을 Hibernate로 하여금 처리하도록 하는데) Hibernate <literal>Session</literal>을 사용하라."
+#. Tag: para
+#: session_api.xml:32
+#, no-c-format
+msgid ""
+"<emphasis>Transient</emphasis> - an object is transient if it has just been "
+"instantiated using the <literal>new</literal> operator, and it is not "
+"associated with a Hibernate <literal>Session</literal>. It has no persistent "
+"representation in the database and no identifier value has been assigned. "
+"Transient instances will be destroyed by the garbage collector if the "
+"application doesn't hold a reference anymore. Use the Hibernate "
+"<literal>Session</literal> to make an object persistent (and let Hibernate "
+"take care of the SQL statements that need to be executed for this "
+"transition)."
+msgstr ""
+"<emphasis>Transient</emphasis> - 만일 객체가 <literal>new</literal> 연산자를 "
+"사용하여 방금 초기화 되었다면 객체는 transient이고, 그것은 Hibernate "
+"<literal>Session</literal>과 연관되어 있지 않다. 그것은 데이터베이스 내에서 "
+"영속 표상을 갖지 않고 식별자 값이 할당되지 않았다. 만일 어플리케이션이 더 이"
+"상 참조를 소유하지 않을 경우 transient 인스턴스들은 쓰레기 수집기에 의해 파괴"
+"될 것이다. 객체를 영속화 시키는데 (그리고 이 전이(transition)에 대해 실행될 "
+"필요가 있는 SQL 문장들을 Hibernate로 하여금 처리하도록 하는데) Hibernate "
+"<literal>Session</literal>을 사용하라."
-#: index.docbook:44
-msgid "<emphasis>Persistent</emphasis> - a persistent instance has a representation in the database and an identifier value. It might just have been saved or loaded, however, it is by definition in the scope of a <literal>Session</literal>. Hibernate will detect any changes made to an object in persistent state and synchronize the state with the database when the unit of work completes. Developers don't execute manual <literal>UPDATE</literal> statements, or <literal>DELETE</literal> statements when an object should be made transient."
-msgstr "<emphasis>Persistent</emphasis> - 하나의 영속 인스턴스는 데이터베이스 내에서 하나의 표상을 갖고 하나의 식별자 값을 갖는다. 그것은 방금 저장되었거나 로드되었을 수 있지만, 정의상 그것은 <literal>Session</literal>의 범위 내에 있다. Hibernate는 영속 상태에서 객체에 대해 행해진 임의의 변경들을 검출해낼 것이고 단위 작업이 완료될 때 그 상태를 데이터베이스와 동기화 시킬 것이다. 개발자들은 하나의 객체가 transient로 되어야 할 때 <literal>UPDATE</literal> 문장들이나 <literal>DELETE</literal> 문장들을 수작업으로 실행하지 않는다."
+#. Tag: para
+#: session_api.xml:44
+#, no-c-format
+msgid ""
+"<emphasis>Persistent</emphasis> - a persistent instance has a representation "
+"in the database and an identifier value. It might just have been saved or "
+"loaded, however, it is by definition in the scope of a <literal>Session</"
+"literal>. Hibernate will detect any changes made to an object in persistent "
+"state and synchronize the state with the database when the unit of work "
+"completes. Developers don't execute manual <literal>UPDATE</literal> "
+"statements, or <literal>DELETE</literal> statements when an object should be "
+"made transient."
+msgstr ""
+"<emphasis>Persistent</emphasis> - 하나의 영속 인스턴스는 데이터베이스 내에서 "
+"하나의 표상을 갖고 하나의 식별자 값을 갖는다. 그것은 방금 저장되었거나 로드되"
+"었을 수 있지만, 정의상 그것은 <literal>Session</literal>의 범위 내에 있다. "
+"Hibernate는 영속 상태에서 객체에 대해 행해진 임의의 변경들을 검출해낼 것이고 "
+"단위 작업이 완료될 때 그 상태를 데이터베이스와 동기화 시킬 것이다. 개발자들"
+"은 하나의 객체가 transient로 되어야 할 때 <literal>UPDATE</literal> 문장들이"
+"나 <literal>DELETE</literal> 문장들을 수작업으로 실행하지 않는다."
-#: index.docbook:55
-msgid "<emphasis>Detached</emphasis> - a detached instance is an object that has been persistent, but its <literal>Session</literal> has been closed. The reference to the object is still valid, of course, and the detached instance might even be modified in this state. A detached instance can be reattached to a new <literal>Session</literal> at a later point in time, making it (and all the modifications) persistent again. This feature enables a programming model for long running units of work that require user think-time. We call them <emphasis>application transactions</emphasis>, i.e. a unit of work from the point of view of the user."
-msgstr "<emphasis>Detached</emphasis> - 하나의 detached 인스턴스는 영속화 되었지만, 그것의 <literal>Session</literal>이 닫혀진 객체이다. 물론 그 객체에 대한 참조는 여전히 유효하고, 그 detached 인스턴스는 이 상태에서도 변경될 수도 있다. 하나의 detached 인스턴스는 나중에 그것(과 모두 변경들)을 다시 영속화 시켜서 새로운 <literal>Session</literal>에 다시 첨부될 수 있다. 이 특징은 사용자가 생각할 시간을 필요로 하는 장 기간 실행되는 작업 단위를 위한 프로그래밍 모형을 가능하게 해준다. 우리는 그것들을 <emphasis>어플리케이션 트랜잭션들</emphasis>, 즉 사용자의 관점의 작업 단위라고 부른다."
+#. Tag: para
+#: session_api.xml:55
+#, no-c-format
+msgid ""
+"<emphasis>Detached</emphasis> - a detached instance is an object that has "
+"been persistent, but its <literal>Session</literal> has been closed. The "
+"reference to the object is still valid, of course, and the detached instance "
+"might even be modified in this state. A detached instance can be reattached "
+"to a new <literal>Session</literal> at a later point in time, making it (and "
+"all the modifications) persistent again. This feature enables a programming "
+"model for long running units of work that require user think-time. We call "
+"them <emphasis>application transactions</emphasis>, i.e. a unit of work from "
+"the point of view of the user."
+msgstr ""
+"<emphasis>Detached</emphasis> - 하나의 detached 인스턴스는 영속화 되었지만, "
+"그것의 <literal>Session</literal>이 닫혀진 객체이다. 물론 그 객체에 대한 참조"
+"는 여전히 유효하고, 그 detached 인스턴스는 이 상태에서도 변경될 수도 있다. 하"
+"나의 detached 인스턴스는 나중에 그것(과 모두 변경들)을 다시 영속화 시켜서 새"
+"로운 <literal>Session</literal>에 다시 첨부될 수 있다. 이 특징은 사용자가 생"
+"각할 시간을 필요로 하는 장 기간 실행되는 작업 단위를 위한 프로그래밍 모형을 "
+"가능하게 해준다. 우리는 그것들을 <emphasis>어플리케이션 트랜잭션들</"
+"emphasis>, 즉 사용자의 관점의 작업 단위라고 부른다."
-#: index.docbook:69
-msgid "We'll now discuss the states and state transitions (and the Hibernate methods that trigger a transition) in more detail."
-msgstr "이제 우리는 상태들과 상태 전이(transition)들(그리고 전이를 트리거 시키는 Hibernate 메소드들)을 상세하게 논의할 것이다."
+#. Tag: para
+#: session_api.xml:69
+#, no-c-format
+msgid ""
+"We'll now discuss the states and state transitions (and the Hibernate "
+"methods that trigger a transition) in more detail."
+msgstr ""
+"이제 우리는 상태들과 상태 전이(transition)들(그리고 전이를 트리거 시키는 "
+"Hibernate 메소드들)을 상세하게 논의할 것이다."
-#: index.docbook:77
+#. Tag: title
+#: session_api.xml:77
+#, no-c-format
msgid "Making objects persistent"
msgstr "객체들을 영속화 시키기"
-#: index.docbook:79
-msgid "Newly instantiated instances of a a persistent class are considered <emphasis>transient</emphasis> by Hibernate. We can make a transient instance <emphasis>persistent</emphasis> by associating it with a session:"
-msgstr "하나의 영속 클래스의 새로이 초기화 된 인스턴스들은 Hibernate에 의해 <emphasis>transient</emphasis>로 간주된다. 우리는 그것을 세션과 연관지어서 transient 인스턴스를 <emphasis>영속화</emphasis> 시킬 수 있다:"
+#. Tag: para
+#: session_api.xml:79
+#, no-c-format
+msgid ""
+"Newly instantiated instances of a a persistent class are considered "
+"<emphasis>transient</emphasis> by Hibernate. We can make a transient "
+"instance <emphasis>persistent</emphasis> by associating it with a session:"
+msgstr ""
+"하나의 영속 클래스의 새로이 초기화 된 인스턴스들은 Hibernate에 의해 "
+"<emphasis>transient</emphasis>로 간주된다. 우리는 그것을 세션과 연관지어서 "
+"transient 인스턴스를 <emphasis>영속화</emphasis> 시킬 수 있다:"
-#: index.docbook:86
+#. Tag: programlisting
+#: session_api.xml:86
+#, no-c-format
msgid ""
- "<![CDATA[DomesticCat fritz = new DomesticCat();\n"
- "fritz.setColor(Color.GINGER);\n"
- "fritz.setSex('M');\n"
- "fritz.setName(\"Fritz\");\n"
- "Long generatedId = (Long) sess.save(fritz);]]>"
+"<![CDATA[DomesticCat fritz = new DomesticCat();\n"
+"fritz.setColor(Color.GINGER);\n"
+"fritz.setSex('M');\n"
+"fritz.setName(\"Fritz\");\n"
+"Long generatedId = (Long) sess.save(fritz);]]>"
msgstr ""
- "<![CDATA[DomesticCat fritz = new DomesticCat();\n"
- "fritz.setColor(Color.GINGER);\n"
- "fritz.setSex('M');\n"
- "fritz.setName(\"Fritz\");\n"
- "Long generatedId = (Long) sess.save(fritz);]]>"
-#: index.docbook:88
-msgid "If <literal>Cat</literal> has a generated identifier, the identifier is generated and assigned to the <literal>cat</literal> when <literal>save()</literal> is called. If <literal>Cat</literal> has an <literal>assigned</literal> identifier, or a composite key, the identifier should be assigned to the <literal>cat</literal> instance before calling <literal>save()</literal>. You may also use <literal>persist()</literal> instead of <literal>save()</literal>, with the semantics defined in the EJB3 early draft."
-msgstr "만일 <literal>Cat</literal>이 생성된 식별자를 가질 경우, <literal>save()</literal>가 호출될 때 그 식별자가 생성되고 <literal>cat</literal>에 할당된다. 만일 <literal>Cat</literal>이 하나의 <literal>assigned</literal> 식별자나 하나의 composite key를 가질 경우, <literal>save()</literal>를 호출하기 전에 그 식별자가<literal>cat</literal> 인스턴스에 할당될 것이다. 당신은 또한 EJB3 초기 드래프트에서 정의된 의미로 <literal>save()</literal> 대신 <literal>persist()</literal>를 사용할 수도 있다."
+#. Tag: para
+#: session_api.xml:88
+#, no-c-format
+msgid ""
+"If <literal>Cat</literal> has a generated identifier, the identifier is "
+"generated and assigned to the <literal>cat</literal> when <literal>save()</"
+"literal> is called. If <literal>Cat</literal> has an <literal>assigned</"
+"literal> identifier, or a composite key, the identifier should be assigned "
+"to the <literal>cat</literal> instance before calling <literal>save()</"
+"literal>. You may also use <literal>persist()</literal> instead of "
+"<literal>save()</literal>, with the semantics defined in the EJB3 early "
+"draft."
+msgstr ""
+"만일 <literal>Cat</literal>이 생성된 식별자를 가질 경우, <literal>save()</"
+"literal>가 호출될 때 그 식별자가 생성되고 <literal>cat</literal>에 할당된다. "
+"만일 <literal>Cat</literal>이 하나의 <literal>assigned</literal> 식별자나 하"
+"나의 composite key를 가질 경우, <literal>save()</literal>를 호출하기 전에 그 "
+"식별자가<literal>cat</literal> 인스턴스에 할당될 것이다. 당신은 또한 EJB3 초"
+"기 드래프트에서 정의된 의미로 <literal>save()</literal> 대신 <literal>persist"
+"()</literal>를 사용할 수도 있다."
-#: index.docbook:100
-msgid "<literal>persist()</literal> makes a transient instance persistent. However, it doesn't guarantee that the identifier value will be assigned to the persistent instance immediately, the assignment might happen at flush time. <literal>persist()</literal> also guarantees that it will not execute an <literal>INSERT</literal> statement if it is called outside of transaction boundaries. This is useful in long-running conversations with an extended Session/persistence context."
-msgstr "다른 방법으로, 당신은 <literal>save()</literal>의 오버로드된 버전을 사용하여 식별자를 할당할 수 있다."
+#. Tag: para
+#: session_api.xml:100
+#, no-c-format
+msgid ""
+"<literal>persist()</literal> makes a transient instance persistent. However, "
+"it doesn't guarantee that the identifier value will be assigned to the "
+"persistent instance immediately, the assignment might happen at flush time. "
+"<literal>persist()</literal> also guarantees that it will not execute an "
+"<literal>INSERT</literal> statement if it is called outside of transaction "
+"boundaries. This is useful in long-running conversations with an extended "
+"Session/persistence context."
+msgstr ""
+"UNTRANSLATED! <literal>persist()</literal> makes a transient instance "
+"persistent. However, it doesn't guarantee that the identifier value will be "
+"assigned to the persistent instance immediately, the assignment might happen "
+"at flush time. <literal>persist()</literal> also guarantees that it will not "
+"execute an <literal>INSERT</literal> statement if it is called outside of "
+"transaction boundaries. This is useful in long-running conversations with an "
+"extended Session/persistence context."
-#: index.docbook:111
-msgid "<literal>save()</literal> does guarantee to return an identifier. If an INSERT has to be executed to get the identifier ( e.g. \"identity\" generator, not \"sequence\"), this INSERT happens immediately, no matter if you are inside or outside of a transaction. This is problematic in a long-running conversation with an extended Session/persistence context."
+#. Tag: para
+#: session_api.xml:111
+#, no-c-format
+msgid ""
+"<literal>save()</literal> does guarantee to return an identifier. If an "
+"INSERT has to be executed to get the identifier ( e.g. \"identity\" "
+"generator, not \"sequence\"), this INSERT happens immediately, no matter if "
+"you are inside or outside of a transaction. This is problematic in a long-"
+"running conversation with an extended Session/persistence context."
msgstr ""
- "<![CDATA[DomesticCat pk = new DomesticCat();\n"
- "pk.setColor(Color.TABBY);\n"
- "pk.setSex('F');\n"
- "pk.setName(\"PK\");\n"
- "pk.setKittens( new HashSet() );\n"
- "pk.addKitten(fritz);\n"
- "sess.save( pk, new Long(1234) );]]>"
+"<literal>save()</literal> does guarantee to return an identifier. If an "
+"INSERT has to be executed to get the identifier ( e.g. \"identity\" "
+"generator, not \"sequence\"), this INSERT happens immediately, no matter if "
+"you are inside or outside of a transaction. This is problematic in a long-"
+"running conversation with an extended Session/persistence context."
-#: index.docbook:121
-msgid "Alternatively, you may assign the identifier using an overloaded version of <literal>save()</literal>."
-msgstr "만일 당신이 영속화 시키는 객체가 연관된 객체들(예를 들면. 앞의 예제에 있는 <literal>kittens</literal> 콜렉션)을 갖고 있다면, 당신이 하나의 foreign 키 컬럼에 대해 하나의 <literal>NOT NULL</literal> 컨스트레인트를 갖지 않는 한, 이들 객체들은 당신이 좋아하는 임의의 순서로 영속화 되었을 수도 있다. foreign 키 컨스트레인트들을 위배하는 위험성이 결코 존재하지 않는다. 하지만 당신이 잘못된 순서로 그 객체들을 <literal>save()</literal> 시킬 경우 당신은 <literal>NOT NULL</literal> 컨스트레인트를 위배할 수도 있다."
+#. Tag: para
+#: session_api.xml:121
+#, no-c-format
+msgid ""
+"Alternatively, you may assign the identifier using an overloaded version of "
+"<literal>save()</literal>."
+msgstr ""
+"다른 방법으로, 당신은 <literal>save()</literal>의 오버로드된 버전을 사용하여 "
+"식별자를 할당할 수 있다."
-#: index.docbook:126
+#. Tag: programlisting
+#: session_api.xml:126
+#, no-c-format
msgid ""
- "<![CDATA[DomesticCat pk = new DomesticCat();\n"
- "pk.setColor(Color.TABBY);\n"
- "pk.setSex('F');\n"
- "pk.setName(\"PK\");\n"
- "pk.setKittens( new HashSet() );\n"
- "pk.addKitten(fritz);\n"
- "sess.save( pk, new Long(1234) );]]>"
-msgstr "당신이 연관된 객체들을 자동적으로 저장시키는데 Hibernate의 <emphasis>transitive persistence(전이 영속)</emphasis> 특징을 사용하는 것을 매우 좋아할 것이므로 대개 당신은 이 상세를 내버려둔다. 그때 <literal>NOT NULL</literal> 컨스트레인트 위배들이 발생되지 않을지라도 - Hibernate는 모든 것을 처리할 것이다. Transitive persistence(전이 영속)은 이 장에서 후반부에서 논의된다."
+"<![CDATA[DomesticCat pk = new DomesticCat();\n"
+"pk.setColor(Color.TABBY);\n"
+"pk.setSex('F');\n"
+"pk.setName(\"PK\");\n"
+"pk.setKittens( new HashSet() );\n"
+"pk.addKitten(fritz);\n"
+"sess.save( pk, new Long(1234) );]]>"
+msgstr ""
-#: index.docbook:128
-msgid "If the object you make persistent has associated objects (e.g. the <literal>kittens</literal> collection in the previous example), these objects may be made persistent in any order you like unless you have a <literal>NOT NULL</literal> constraint upon a foreign key column. There is never a risk of violating foreign key constraints. However, you might violate a <literal>NOT NULL</literal> constraint if you <literal>save()</literal> the objects in the wrong order."
-msgstr "객체를 로드시키기"
+#. Tag: para
+#: session_api.xml:128
+#, no-c-format
+msgid ""
+"If the object you make persistent has associated objects (e.g. the "
+"<literal>kittens</literal> collection in the previous example), these "
+"objects may be made persistent in any order you like unless you have a "
+"<literal>NOT NULL</literal> constraint upon a foreign key column. There is "
+"never a risk of violating foreign key constraints. However, you might "
+"violate a <literal>NOT NULL</literal> constraint if you <literal>save()</"
+"literal> the objects in the wrong order."
+msgstr ""
+"만일 당신이 영속화 시키는 객체가 연관된 객체들(예를 들면. 앞의 예제에 있는 "
+"<literal>kittens</literal> 콜렉션)을 갖고 있다면, 당신이 하나의 foreign 키 컬"
+"럼에 대해 하나의 <literal>NOT NULL</literal> 컨스트레인트를 갖지 않는 한, 이"
+"들 객체들은 당신이 좋아하는 임의의 순서로 영속화 되었을 수도 있다. foreign "
+"키 컨스트레인트들을 위배하는 위험성이 결코 존재하지 않는다. 하지만 당신이 잘"
+"못된 순서로 그 객체들을 <literal>save()</literal> 시킬 경우 당신은 "
+"<literal>NOT NULL</literal> 컨스트레인트를 위배할 수도 있다."
-#: index.docbook:138
-msgid "Usually you don't bother with this detail, as you'll very likely use Hibernate's <emphasis>transitive persistence</emphasis> feature to save the associated objects automatically. Then, even <literal>NOT NULL</literal> constraint violations don't occur - Hibernate will take care of everything. Transitive persistence is discussed later in this chapter."
-msgstr "<literal>Session</literal>의 <literal>load()</literal> 메소드들은 만일 당신이 그것(영속 인스턴스)의 식별자들을 이미 알고 있을 경우에 영속 인스턴스를 검색하는 방법을 당신에게 제공한다. <literal>load()</literal>는 하나의 클래스 객체를 취하고 그 상태를 영속(persistent) 상태로 그 클래스의 새로이 초기화 된 인스턴스 속으로 로드시킬 것이다."
+#. Tag: para
+#: session_api.xml:138
+#, no-c-format
+msgid ""
+"Usually you don't bother with this detail, as you'll very likely use "
+"Hibernate's <emphasis>transitive persistence</emphasis> feature to save the "
+"associated objects automatically. Then, even <literal>NOT NULL</literal> "
+"constraint violations don't occur - Hibernate will take care of everything. "
+"Transitive persistence is discussed later in this chapter."
+msgstr ""
+"당신이 연관된 객체들을 자동적으로 저장시키는데 Hibernate의 "
+"<emphasis>transitive persistence(전이 영속)</emphasis> 특징을 사용하는 것을 "
+"매우 좋아할 것이므로 대개 당신은 이 상세를 내버려둔다. 그때 <literal>NOT "
+"NULL</literal> 컨스트레인트 위배들이 발생되지 않을지라도 - Hibernate는 모든 "
+"것을 처리할 것이다. Transitive persistence(전이 영속)은 이 장에서 후반부에서 "
+"논의된다."
-#: index.docbook:149
+#. Tag: title
+#: session_api.xml:149
+#, no-c-format
msgid "Loading an object"
-msgstr "<![CDATA[Cat fritz = (Cat) sess.load(Cat.class, generatedId);]]>"
+msgstr "객체를 로드시키기"
-#: index.docbook:151
-msgid "The <literal>load()</literal> methods of <literal>Session</literal> gives you a way to retrieve a persistent instance if you already know its identifier. <literal>load()</literal> takes a class object and will load the state into a newly instantiated instance of that class, in persistent state."
+#. Tag: para
+#: session_api.xml:151
+#, no-c-format
+msgid ""
+"The <literal>load()</literal> methods of <literal>Session</literal> gives "
+"you a way to retrieve a persistent instance if you already know its "
+"identifier. <literal>load()</literal> takes a class object and will load the "
+"state into a newly instantiated instance of that class, in persistent state."
msgstr ""
- "<![CDATA[// you need to wrap primitive identifiers\n"
- "long id = 1234;\n"
- "DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long(id) );]]>"
+"<literal>Session</literal>의 <literal>load()</literal> 메소드들은 만일 당신"
+"이 그것(영속 인스턴스)의 식별자들을 이미 알고 있을 경우에 영속 인스턴스를 검"
+"색하는 방법을 당신에게 제공한다. <literal>load()</literal>는 하나의 클래스 객"
+"체를 취하고 그 상태를 영속(persistent) 상태로 그 클래스의 새로이 초기화 된 인"
+"스턴스 속으로 로드시킬 것이다."
-#: index.docbook:158
+#. Tag: programlisting
+#: session_api.xml:158
+#, no-c-format
msgid "<![CDATA[Cat fritz = (Cat) sess.load(Cat.class, generatedId);]]>"
-msgstr "다른 방법으로 당신은 주어진 인스턴스 속으로 상태를 로드시킬 수 있다:"
+msgstr ""
-#: index.docbook:160
+#. Tag: programlisting
+#: session_api.xml:160
+#, no-c-format
msgid ""
- "<![CDATA[// you need to wrap primitive identifiers\n"
- "long id = 1234;\n"
- "DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long(id) );]]>"
+"<![CDATA[// you need to wrap primitive identifiers\n"
+"long id = 1234;\n"
+"DomesticCat pk = (DomesticCat) sess.load( DomesticCat.class, new Long"
+"(id) );]]>"
msgstr ""
- "<![CDATA[Cat cat = new DomesticCat();\n"
- "// load pk's state into cat\n"
- "sess.load( cat, new Long(pkId) );\n"
- "Set kittens = cat.getKittens();]]>"
-#: index.docbook:162
+#. Tag: para
+#: session_api.xml:162
+#, no-c-format
msgid "Alternatively, you can load state into a given instance:"
-msgstr "만일 일치하는 데이터베이스 행이 존재하지 않을 경우에 <literal>load()</literal>가 unrecoverable(복구 불가능한) 예외상황을 던질 것임을 노트하라. 만일 클래스가 프락시를 갖도록 매핑된 경우, <literal>load()</literal>는 초기화 되지 않은 프락시를 단지 반환하고 당신이 그 프락시의 메소드를 호출하기 전까지는 실제로 데이터베이스에 접속하지 않는다. 당신이 데이터베이스로부터 객체에 대한 연관을 실제로 로드시키지 않고서 객체에 대한 연관을 생성시키고자 원할 경우에 이 특징이 매우 유용하다. 만일 <literal>batch-size</literal>가 class 매핑에 정의되는 경우 그것은 또한 다중 인스턴스들이 하나의 배치로서 로드되는 것을 허용해준다."
+msgstr "다른 방법으로 당신은 주어진 인스턴스 속으로 상태를 로드시킬 수 있다:"
-#: index.docbook:166
+#. Tag: programlisting
+#: session_api.xml:166
+#, no-c-format
msgid ""
- "<![CDATA[Cat cat = new DomesticCat();\n"
- "// load pk's state into cat\n"
- "sess.load( cat, new Long(pkId) );\n"
- "Set kittens = cat.getKittens();]]>"
-msgstr "만일 당신이 하나의 일치하는 행이 존재하는지를 확신할 수 없을 경우, 당신은 <literal>get()</literal> 메소드를 사용해야 한다. 그것(<literal>get()</literal> 메소드)는 데이터베이스에 즉시 접속하고 만일 일치하는 행이 없을 경우 null을 반환한다."
+"<![CDATA[Cat cat = new DomesticCat();\n"
+"// load pk's state into cat\n"
+"sess.load( cat, new Long(pkId) );\n"
+"Set kittens = cat.getKittens();]]>"
+msgstr ""
-#: index.docbook:168
-msgid "Note that <literal>load()</literal> will throw an unrecoverable exception if there is no matching database row. If the class is mapped with a proxy, <literal>load()</literal> just returns an uninitialized proxy and does not actually hit the database until you invoke a method of the proxy. This behaviour is very useful if you wish to create an association to an object without actually loading it from the database. It also allows multiple instances to be loaded as a batch if <literal>batch-size</literal> is defined for the class mapping."
+#. Tag: para
+#: session_api.xml:168
+#, no-c-format
+msgid ""
+"Note that <literal>load()</literal> will throw an unrecoverable exception if "
+"there is no matching database row. If the class is mapped with a proxy, "
+"<literal>load()</literal> just returns an uninitialized proxy and does not "
+"actually hit the database until you invoke a method of the proxy. This "
+"behaviour is very useful if you wish to create an association to an object "
+"without actually loading it from the database. It also allows multiple "
+"instances to be loaded as a batch if <literal>batch-size</literal> is "
+"defined for the class mapping."
msgstr ""
- "<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id);\n"
- "if (cat==null) {\n"
- " cat = new Cat();\n"
- " sess.save(cat, id);\n"
- "}\n"
- "return cat;]]>"
+"만일 일치하는 데이터베이스 행이 존재하지 않을 경우에 <literal>load()</"
+"literal>가 unrecoverable(복구 불가능한) 예외상황을 던질 것임을 노트하라. 만"
+"일 클래스가 프락시를 갖도록 매핑된 경우, <literal>load()</literal>는 초기화 "
+"되지 않은 프락시를 단지 반환하고 당신이 그 프락시의 메소드를 호출하기 전까지"
+"는 실제로 데이터베이스에 접속하지 않는다. 당신이 데이터베이스로부터 객체에 대"
+"한 연관을 실제로 로드시키지 않고서 객체에 대한 연관을 생성시키고자 원할 경우"
+"에 이 특징이 매우 유용하다. 만일 <literal>batch-size</literal>가 class 매핑"
+"에 정의되는 경우 그것은 또한 다중 인스턴스들이 하나의 배치로서 로드되는 것을 "
+"허용해준다."
-#: index.docbook:179
-msgid "If you are not certain that a matching row exists, you should use the <literal>get()</literal> method, which hits the database immediately and returns null if there is no matching row."
-msgstr "당신은 하나의 <literal>LockMode</literal>를 사용하는, <literal>SELECT ... FOR UPDATE</literal>를 사용하여 하나의 객체를 로드시킬 수도 있다. 추가 정보는 API 문서를 보라."
+#. Tag: para
+#: session_api.xml:179
+#, no-c-format
+msgid ""
+"If you are not certain that a matching row exists, you should use the "
+"<literal>get()</literal> method, which hits the database immediately and "
+"returns null if there is no matching row."
+msgstr ""
+"만일 당신이 하나의 일치하는 행이 존재하는지를 확신할 수 없을 경우, 당신은 "
+"<literal>get()</literal> 메소드를 사용해야 한다. 그것(<literal>get()</"
+"literal> 메소드)는 데이터베이스에 즉시 접속하고 만일 일치하는 행이 없을 경우 "
+"null을 반환한다."
-#: index.docbook:185
+#. Tag: programlisting
+#: session_api.xml:185
+#, no-c-format
msgid ""
- "<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id);\n"
- "if (cat==null) {\n"
- " cat = new Cat();\n"
- " sess.save(cat, id);\n"
- "}\n"
- "return cat;]]>"
-msgstr "<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id, LockMode.UPGRADE);]]>"
+"<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id);\n"
+"if (cat==null) {\n"
+" cat = new Cat();\n"
+" sess.save(cat, id);\n"
+"}\n"
+"return cat;]]>"
+msgstr ""
-#: index.docbook:187
-msgid "You may even load an object using an SQL <literal>SELECT ... FOR UPDATE</literal>, using a <literal>LockMode</literal>. See the API documentation for more information."
-msgstr "어떤 연관된 인스턴스들이나 포함된 콜렉션들은 당신이 그 연관에 대한 케스케이드 스타일로서 <literal>lock</literal> 또는 <literal>all</literal>을 지정하도록 결정하지 않는 한, <literal>FOR UPDATE</literal>로 선택되지 않음을 노트하라."
+#. Tag: para
+#: session_api.xml:187
+#, no-c-format
+msgid ""
+"You may even load an object using an SQL <literal>SELECT ... FOR UPDATE</"
+"literal>, using a <literal>LockMode</literal>. See the API documentation for "
+"more information."
+msgstr ""
+"당신은 하나의 <literal>LockMode</literal>를 사용하는, <literal>SELECT ... "
+"FOR UPDATE</literal>를 사용하여 하나의 객체를 로드시킬 수도 있다. 추가 정보"
+"는 API 문서를 보라."
-#: index.docbook:192
+#. Tag: programlisting
+#: session_api.xml:192
+#, no-c-format
msgid "<![CDATA[Cat cat = (Cat) sess.get(Cat.class, id, LockMode.UPGRADE);]]>"
-msgstr "<literal>refresh()</literal> 메소드를 사용하여, 아무때나 하나의 객체와 모든 그것의 콜렉션들을 다시 로드시키는 것이 가능하다. 데이터베이스 트리거들이 그 객체의 프로퍼티들 중 어떤 것을 초기화 시키는데 사용될 때 이것이 유용하다."
+msgstr ""
-#: index.docbook:194
-msgid "Note that any associated instances or contained collections are <emphasis>not</emphasis> selected <literal>FOR UPDATE</literal>, unless you decide to specify <literal>lock</literal> or <literal>all</literal> as a cascade style for the association."
+#. Tag: para
+#: session_api.xml:194
+#, no-c-format
+msgid ""
+"Note that any associated instances or contained collections are "
+"<emphasis>not</emphasis> selected <literal>FOR UPDATE</literal>, unless you "
+"decide to specify <literal>lock</literal> or <literal>all</literal> as a "
+"cascade style for the association."
msgstr ""
- "<![CDATA[sess.save(cat);\n"
- "sess.flush(); //force the SQL INSERT\n"
- "sess.refresh(cat); //re-read the state (after the trigger executes)]]>"
+"어떤 연관된 인스턴스들이나 포함된 콜렉션들은 당신이 그 연관에 대한 케스케이"
+"드 스타일로서 <literal>lock</literal> 또는 <literal>all</literal>을 지정하도"
+"록 결정하지 않는 한, <literal>FOR UPDATE</literal>로 선택되지 않음을 노트하"
+"라."
-#: index.docbook:201
-msgid "It is possible to re-load an object and all its collections at any time, using the <literal>refresh()</literal> method. This is useful when database triggers are used to initialize some of the properties of the object."
-msgstr "중요한 질문이 대개 이 지점에서 나타난다: Hibernate는 데이터베이로부터 그것을 얼마나 많이 로드시키고 그리고 얼마나 많은 SQL <literal>SELECT</literal>들이 그것을 사용할 것인가? 이것은 <emphasis>페칭 방도</emphasis>에 의존하고 <xref linkend=\"performance-fetching\"/>에 설명되어 있다."
+#. Tag: para
+#: session_api.xml:201
+#, no-c-format
+msgid ""
+"It is possible to re-load an object and all its collections at any time, "
+"using the <literal>refresh()</literal> method. This is useful when database "
+"triggers are used to initialize some of the properties of the object."
+msgstr ""
+"<literal>refresh()</literal> 메소드를 사용하여, 아무때나 하나의 객체와 모든 "
+"그것의 콜렉션들을 다시 로드시키는 것이 가능하다. 데이터베이스 트리거들이 그 "
+"객체의 프로퍼티들 중 어떤 것을 초기화 시키는데 사용될 때 이것이 유용하다."
-#: index.docbook:207
+#. Tag: programlisting
+#: session_api.xml:207
+#, no-c-format
msgid ""
- "<![CDATA[sess.save(cat);\n"
- "sess.flush(); //force the SQL INSERT\n"
- "sess.refresh(cat); //re-read the state (after the trigger executes)]]>"
-msgstr "질의하기"
+"<![CDATA[sess.save(cat);\n"
+"sess.flush(); //force the SQL INSERT\n"
+"sess.refresh(cat); //re-read the state (after the trigger executes)]]>"
+msgstr ""
-#: index.docbook:209
-msgid "An important question usually appears at this point: How much does Hibernate load from the database and how many SQL <literal>SELECT</literal>s will it use? This depends on the <emphasis>fetching strategy</emphasis> and is explained in <xref linkend=\"performance-fetching\"/>."
-msgstr "만일 당신이 당신이 찾고 있는 객체들에 대한 식별자들을 모를 경우, 당신은 하나의 질의를 필요로 한다. Hibernate는 사용이 쉽지만 강력한 객체 지향 질의 언어(HQL)를 지원한다. 프로그램 상의 질의 생성을 위해, Hibernate는 정교한 Criteria 및 Example 질의 특징(QBC와 QBE)를 지원한다. 당신은 또한 객체들로의 결과 셋 변환을 위한 선택적인 Hibernate의 지원으로, 당신의 데이터베이스의 native SQL 속에 당신의 질의를 표현할 수도 있다."
+#. Tag: para
+#: session_api.xml:209
+#, no-c-format
+msgid ""
+"An important question usually appears at this point: How much does Hibernate "
+"load from the database and how many SQL <literal>SELECT</literal>s will it "
+"use? This depends on the <emphasis>fetching strategy</emphasis> and is "
+"explained in <xref linkend=\"performance-fetching\"/>."
+msgstr ""
+"중요한 질문이 대개 이 지점에서 나타난다: Hibernate는 데이터베이로부터 그것을 "
+"얼마나 많이 로드시키고 그리고 얼마나 많은 SQL <literal>SELECT</literal>들이 "
+"그것을 사용할 것인가? 이것은 <emphasis>페칭 방도</emphasis>에 의존하고 <xref "
+"linkend=\"performance-fetching\"/>에 설명되어 있다."
-#: index.docbook:219
+#. Tag: title
+#: session_api.xml:219
+#, no-c-format
msgid "Querying"
-msgstr "질의들을 실행하기"
+msgstr "질의하기"
-#: index.docbook:221
-msgid "If you don't know the identifiers of the objects you are looking for, you need a query. Hibernate supports an easy-to-use but powerful object oriented query language (HQL). For programmatic query creation, Hibernate supports a sophisticated Criteria and Example query feature (QBC and QBE). You may also express your query in the native SQL of your database, with optional support from Hibernate for result set conversion into objects."
-msgstr "HQL 질의와 native SQL 질의는 <literal>org.hibernate.Query</literal>의 인스턴스로 표현된다. 이 인터페이스는 파라미터 바인딩, 결과셋 핸들링을 위한, 그리고 실제 질의의 실행을 위한 메소드들을 제공한다. 당신은 항상 현재 <literal>Session</literal>을 사용하여 하나의 <literal>Query</literal>를 얻는다:"
+#. Tag: para
+#: session_api.xml:221
+#, no-c-format
+msgid ""
+"If you don't know the identifiers of the objects you are looking for, you "
+"need a query. Hibernate supports an easy-to-use but powerful object oriented "
+"query language (HQL). For programmatic query creation, Hibernate supports a "
+"sophisticated Criteria and Example query feature (QBC and QBE). You may also "
+"express your query in the native SQL of your database, with optional support "
+"from Hibernate for result set conversion into objects."
+msgstr ""
+"만일 당신이 당신이 찾고 있는 객체들에 대한 식별자들을 모를 경우, 당신은 하나"
+"의 질의를 필요로 한다. Hibernate는 사용이 쉽지만 강력한 객체 지향 질의 언어"
+"(HQL)를 지원한다. 프로그램 상의 질의 생성을 위해, Hibernate는 정교한 "
+"Criteria 및 Example 질의 특징(QBC와 QBE)를 지원한다. 당신은 또한 객체들로의 "
+"결과 셋 변환을 위한 선택적인 Hibernate의 지원으로, 당신의 데이터베이스의 "
+"native SQL 속에 당신의 질의를 표현할 수도 있다."
-#: index.docbook:231
+#. Tag: title
+#: session_api.xml:231
+#, no-c-format
msgid "Executing queries"
+msgstr "질의들을 실행하기"
+
+#. Tag: para
+#: session_api.xml:233
+#, no-c-format
+msgid ""
+"HQL and native SQL queries are represented with an instance of <literal>org."
+"hibernate.Query</literal>. This interface offers methods for parameter "
+"binding, result set handling, and for the execution of the actual query. You "
+"always obtain a <literal>Query</literal> using the current <literal>Session</"
+"literal>:"
msgstr ""
- "<![CDATA[List cats = session.createQuery(\n"
- " \"from Cat as cat where cat.birthdate < ?\")\n"
- " .setDate(0, date)\n"
- " .list();\n"
- "\n"
- "List mothers = session.createQuery(\n"
- " \"select mother from Cat as cat join cat.mother as mother where cat.name = ?\")\n"
- " .setString(0, name)\n"
- " .list();\n"
- "\n"
- "List kittens = session.createQuery(\n"
- " \"from Cat as cat where cat.mother = ?\")\n"
- " .setEntity(0, pk)\n"
- " .list();\n"
- "\n"
- "Cat mother = (Cat) session.createQuery(\n"
- " \"select cat.mother from Cat as cat where cat = ?\")\n"
- " .setEntity(0, izi)\n"
- " .uniqueResult();]]\n"
- "\n"
- "Query mothersWithKittens = (Cat) session.createQuery(\n"
- " \"select mother from Cat as mother left join fetch mother.kittens\");\n"
- "Set uniqueMothers = new HashSet(mothersWithKittens.list());]]>"
+"HQL 질의와 native SQL 질의는 <literal>org.hibernate.Query</literal>의 인스턴"
+"스로 표현된다. 이 인터페이스는 파라미터 바인딩, 결과셋 핸들링을 위한, 그리고 "
+"실제 질의의 실행을 위한 메소드들을 제공한다. 당신은 항상 현재 "
+"<literal>Session</literal>을 사용하여 하나의 <literal>Query</literal>를 얻는"
+"다:"
-#: index.docbook:233
-msgid "HQL and native SQL queries are represented with an instance of <literal>org.hibernate.Query</literal>. This interface offers methods for parameter binding, result set handling, and for the execution of the actual query. You always obtain a <literal>Query</literal> using the current <literal>Session</literal>:"
-msgstr "하나의 질의는 대개 <literal>list()</literal>를 호출하여 실행되고, 질의의 결과는 메모리 내에서 하나의 콜렉션 속으로 전체적으로 로드될 것이다. 하나의 질의에 의해 검색된 엔티티 인스턴스들은 영속(persistent) 상태에 있다. 당신의 질의가 하나의 객체를 오직 반환할 것임을 당신이 알고 있을 경우에 <literal>uniqueResult()</literal> 메소드는 단축을 제공한다. 콜렉션들에 대해 eager 페칭을 사용하는 질의들은 대개 (그것들의 초기화된 콜렉션들을 가진) 루트 객체들에 대한 중복들을 대개 반환한다. 당신은 <literal>Set</literal>을 통해 이들 중복들을 간단하게 필터링할 수 있다."
+#. Tag: programlisting
+#: session_api.xml:240
+#, no-c-format
+msgid ""
+"<![CDATA[List cats = session.createQuery(\n"
+" \"from Cat as cat where cat.birthdate < ?\")\n"
+" .setDate(0, date)\n"
+" .list();\n"
+"\n"
+"List mothers = session.createQuery(\n"
+" \"select mother from Cat as cat join cat.mother as mother where cat.name "
+"= ?\")\n"
+" .setString(0, name)\n"
+" .list();\n"
+"\n"
+"List kittens = session.createQuery(\n"
+" \"from Cat as cat where cat.mother = ?\")\n"
+" .setEntity(0, pk)\n"
+" .list();\n"
+"\n"
+"Cat mother = (Cat) session.createQuery(\n"
+" \"select cat.mother from Cat as cat where cat = ?\")\n"
+" .setEntity(0, izi)\n"
+" .uniqueResult();]]\n"
+"\n"
+"Query mothersWithKittens = (Cat) session.createQuery(\n"
+" \"select mother from Cat as mother left join fetch mother.kittens\");\n"
+"Set uniqueMothers = new HashSet(mothersWithKittens.list());]]>"
+msgstr ""
-#: index.docbook:240
+#. Tag: para
+#: session_api.xml:242
+#, no-c-format
msgid ""
- "<![CDATA[List cats = session.createQuery(\n"
- " \"from Cat as cat where cat.birthdate < ?\")\n"
- " .setDate(0, date)\n"
- " .list();\n"
- "\n"
- "List mothers = session.createQuery(\n"
- " \"select mother from Cat as cat join cat.mother as mother where cat.name = ?\")\n"
- " .setString(0, name)\n"
- " .list();\n"
- "\n"
- "List kittens = session.createQuery(\n"
- " \"from Cat as cat where cat.mother = ?\")\n"
- " .setEntity(0, pk)\n"
- " .list();\n"
- "\n"
- "Cat mother = (Cat) session.createQuery(\n"
- " \"select cat.mother from Cat as cat where cat = ?\")\n"
- " .setEntity(0, izi)\n"
- " .uniqueResult();]]\n"
- "\n"
- "Query mothersWithKittens = (Cat) session.createQuery(\n"
- " \"select mother from Cat as mother left join fetch mother.kittens\");\n"
- "Set uniqueMothers = new HashSet(mothersWithKittens.list());]]>"
+"A query is usually executed by invoking <literal>list()</literal>, the "
+"result of the query will be loaded completely into a collection in memory. "
+"Entity instances retrieved by a query are in persistent state. The "
+"<literal>uniqueResult()</literal> method offers a shortcut if you know your "
+"query will only return a single object. Note that queries that make use of "
+"eager fetching of collections usually return duplicates of the root objects "
+"(but with their collections initialized). You can filter these duplicates "
+"simply through a <literal>Set</literal>."
+msgstr ""
+"하나의 질의는 대개 <literal>list()</literal>를 호출하여 실행되고, 질의의 결과"
+"는 메모리 내에서 하나의 콜렉션 속으로 전체적으로 로드될 것이다. 하나의 질의"
+"에 의해 검색된 엔티티 인스턴스들은 영속(persistent) 상태에 있다. 당신의 질의"
+"가 하나의 객체를 오직 반환할 것임을 당신이 알고 있을 경우에 "
+"<literal>uniqueResult()</literal> 메소드는 단축을 제공한다. 콜렉션들에 대해 "
+"eager 페칭을 사용하는 질의들은 대개 (그것들의 초기화된 콜렉션들을 가진) 루트 "
+"객체들에 대한 중복들을 대개 반환한다. 당신은 <literal>Set</literal>을 통해 이"
+"들 중복들을 간단하게 필터링할 수 있다."
+
+#. Tag: title
+#: session_api.xml:254
+#, no-c-format
+msgid "Iterating results"
msgstr "결과들을 반복하기"
-#: index.docbook:242
-msgid "A query is usually executed by invoking <literal>list()</literal>, the result of the query will be loaded completely into a collection in memory. Entity instances retrieved by a query are in persistent state. The <literal>uniqueResult()</literal> method offers a shortcut if you know your query will only return a single object. Note that queries that make use of eager fetching of collections usually return duplicates of the root objects (but with their collections initialized). You can filter these duplicates simply through a <literal>Set</literal>."
-msgstr "종종, 당신은 <literal>iterate()</literal> 메소드를 사용하여 질의를 실행함으로써 더 나은 퍼포먼스를 성취하는 것이 가능할 수 있다. 이것은 오직 대개 질의에 의해 반환되는 실제 엔티티 인스턴스들이 이미 세션 내에 있거나 second-level 캐시 내에 있을 것임을 당신이 예상하는 경우일 것이다. 만일 그것들이 이미 캐시되지 않았다면, <literal>iterate()</literal>는 <literal>list()</literal> 보다 더 느릴 것이고 간단한 질의에 대해 많은 데이터베이스 접속들을, 대개 오직 식별자들을 반환하는 초기 select에 대해 <emphasis>1</emphasis>번의 접속과 실제 인스턴스들을 초기화 시키는 추가적인 select들에 대해 <emphasis>n</emphasis> 번의 접속을 필요로 할 수 있다."
+#. Tag: para
+#: session_api.xml:256
+#, no-c-format
+msgid ""
+"Occasionally, you might be able to achieve better performance by executing "
+"the query using the <literal>iterate()</literal> method. This will only "
+"usually be the case if you expect that the actual entity instances returned "
+"by the query will already be in the session or second-level cache. If they "
+"are not already cached, <literal>iterate()</literal> will be slower than "
+"<literal>list()</literal> and might require many database hits for a simple "
+"query, usually <emphasis>1</emphasis> for the initial select which only "
+"returns identifiers, and <emphasis>n</emphasis> additional selects to "
+"initialize the actual instances."
+msgstr ""
+"종종, 당신은 <literal>iterate()</literal> 메소드를 사용하여 질의를 실행함으로"
+"써 더 나은 퍼포먼스를 성취하는 것이 가능할 수 있다. 이것은 오직 대개 질의에 "
+"의해 반환되는 실제 엔티티 인스턴스들이 이미 세션 내에 있거나 second-level 캐"
+"시 내에 있을 것임을 당신이 예상하는 경우일 것이다. 만일 그것들이 이미 캐시되"
+"지 않았다면, <literal>iterate()</literal>는 <literal>list()</literal> 보다 "
+"더 느릴 것이고 간단한 질의에 대해 많은 데이터베이스 접속들을, 대개 오직 식별"
+"자들을 반환하는 초기 select에 대해 <emphasis>1</emphasis>번의 접속과 실제 인"
+"스턴스들을 초기화 시키는 추가적인 select들에 대해 <emphasis>n</emphasis> 번"
+"의 접속을 필요로 할 수 있다."
-#: index.docbook:254
-msgid "Iterating results"
+#. Tag: programlisting
+#: session_api.xml:268
+#, no-c-format
+msgid ""
+"<![CDATA[// fetch ids\n"
+"Iterator iter = sess.createQuery(\"from eg.Qux q order by q.likeliness\")."
+"iterate();\n"
+"while ( iter.hasNext() ) {\n"
+" Qux qux = (Qux) iter.next(); // fetch the object\n"
+" // something we couldnt express in the query\n"
+" if ( qux.calculateComplicatedAlgorithm() ) {\n"
+" // delete the current instance\n"
+" iter.remove();\n"
+" // dont need to process the rest\n"
+" break;\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[// fetch ids\n"
- "Iterator iter = sess.createQuery(\"from eg.Qux q order by q.likeliness\").iterate();\n"
- "while ( iter.hasNext() ) {\n"
- " Qux qux = (Qux) iter.next(); // fetch the object\n"
- " // something we couldnt express in the query\n"
- " if ( qux.calculateComplicatedAlgorithm() ) {\n"
- " // delete the current instance\n"
- " iter.remove();\n"
- " // dont need to process the rest\n"
- " break;\n"
- " }\n"
- "}]]>"
-#: index.docbook:256
-msgid "Occasionally, you might be able to achieve better performance by executing the query using the <literal>iterate()</literal> method. This will only usually be the case if you expect that the actual entity instances returned by the query will already be in the session or second-level cache. If they are not already cached, <literal>iterate()</literal> will be slower than <literal>list()</literal> and might require many database hits for a simple query, usually <emphasis>1</emphasis> for the initial select which only returns identifiers, and <emphasis>n</emphasis> additional selects to initialize the actual instances."
+#. Tag: title
+#: session_api.xml:272
+#, no-c-format
+msgid "Queries that return tuples"
msgstr "튜플들을 반환하는 질의들"
-#: index.docbook:268
+#. Tag: para
+#: session_api.xml:274
+#, no-c-format
msgid ""
- "<![CDATA[// fetch ids\n"
- "Iterator iter = sess.createQuery(\"from eg.Qux q order by q.likeliness\").iterate();\n"
- "while ( iter.hasNext() ) {\n"
- " Qux qux = (Qux) iter.next(); // fetch the object\n"
- " // something we couldnt express in the query\n"
- " if ( qux.calculateComplicatedAlgorithm() ) {\n"
- " // delete the current instance\n"
- " iter.remove();\n"
- " // dont need to process the rest\n"
- " break;\n"
- " }\n"
- "}]]>"
-msgstr "Hibernate 질의들은 때때로 객체들의 튜플들을 반환하고, 그 경우에 각각의 튜플은 배열로서 반환된다:"
+"Hibernate queries sometimes return tuples of objects, in which case each "
+"tuple is returned as an array:"
+msgstr ""
+"Hibernate 질의들은 때때로 객체들의 튜플들을 반환하고, 그 경우에 각각의 튜플"
+"은 배열로서 반환된다:"
-#: index.docbook:272
-msgid "Queries that return tuples"
+#. Tag: programlisting
+#: session_api.xml:279
+#, no-c-format
+msgid ""
+"<![CDATA[Iterator kittensAndMothers = sess.createQuery(\n"
+" \"select kitten, mother from Cat kitten join kitten.mother mother"
+"\")\n"
+" .list()\n"
+" .iterator();\n"
+"\n"
+"while ( kittensAndMothers.hasNext() ) {\n"
+" Object[] tuple = (Object[]) kittensAndMothers.next();\n"
+" Cat kitten = (Cat) tuple[0];\n"
+" Cat mother = (Cat) tuple[1];\n"
+" ....\n"
+"}]]>"
msgstr ""
- "<![CDATA[Iterator kittensAndMothers = sess.createQuery(\n"
- " \"select kitten, mother from Cat kitten join kitten.mother mother\")\n"
- " .list()\n"
- " .iterator();\n"
- "\n"
- "while ( kittensAndMothers.hasNext() ) {\n"
- " Object[] tuple = (Object[]) kittensAndMothers.next();\n"
- " Cat kitten = (Cat) tuple[0];
-\n"
- " Cat mother = (Cat) tuple[1];
-\n"
- " ....\n"
- "}]]>"
-#: index.docbook:274
-msgid "Hibernate queries sometimes return tuples of objects, in which case each tuple is returned as an array:"
+#. Tag: title
+#: session_api.xml:284
+#, no-c-format
+msgid "Scalar results"
msgstr "스칼라 결과들"
-#: index.docbook:279
+#. Tag: para
+#: session_api.xml:286
+#, no-c-format
msgid ""
- "<![CDATA[Iterator kittensAndMothers = sess.createQuery(\n"
- " \"select kitten, mother from Cat kitten join kitten.mother mother\")\n"
- " .list()\n"
- " .iterator();\n"
- "\n"
- "while ( kittensAndMothers.hasNext() ) {\n"
- " Object[] tuple = (Object[]) kittensAndMothers.next();\n"
- " Cat kitten = (Cat) tuple[0];\n"
- " Cat mother = (Cat) tuple[1];\n"
- " ....\n"
- "}]]>"
-msgstr "질의들은 <literal>select</literal> 절 내에 하나의 클래스에 대한 하나의 프로퍼티를 지정할 수 있다. 그것들은 심지어 SQL 집계 함수들을 호출할 수도 있다. 프로퍼티들이나 aggregate들은 \"스칼라\" 결과들(그리고 영속 상태에 있는 엔티티들이 아닌 것으)로 간주된다."
+"Queries may specify a property of a class in the <literal>select</literal> "
+"clause. They may even call SQL aggregate functions. Properties or aggregates "
+"are considered \"scalar\" results (and not entities in persistent state)."
+msgstr ""
+"질의들은 <literal>select</literal> 절 내에 하나의 클래스에 대한 하나의 프로퍼"
+"티를 지정할 수 있다. 그것들은 심지어 SQL 집계 함수들을 호출할 수도 있다. 프로"
+"퍼티들이나 aggregate들은 \"스칼라\" 결과들(그리고 영속 상태에 있는 엔티티들"
+"이 아닌 것으)로 간주된다."
-#: index.docbook:284
-msgid "Scalar results"
+#. Tag: programlisting
+#: session_api.xml:292
+#, no-c-format
+msgid ""
+"<![CDATA[Iterator results = sess.createQuery(\n"
+" \"select cat.color, min(cat.birthdate), count(cat) from Cat cat \" "
+"+\n"
+" \"group by cat.color\")\n"
+" .list()\n"
+" .iterator();\n"
+"\n"
+"while ( results.hasNext() ) {\n"
+" Object[] row = (Object[]) results.next();\n"
+" Color type = (Color) row[0];\n"
+" Date oldest = (Date) row[1];\n"
+" Integer count = (Integer) row[2];\n"
+" .....\n"
+"}]]>"
msgstr ""
- "<![CDATA[Iterator results = sess.createQuery(\n"
- " \"select cat.color, min(cat.birthdate), count(cat) from Cat cat \" +\n"
- " \"group by cat.color\")\n"
- " .list()\n"
- " .iterator();\n"
- "\n"
- "while ( results.hasNext() ) {\n"
- " Object[] row = (Object[]) results.next();\n"
- " Color type = (Color) row[0];\n"
- " Date oldest = (Date) row[1];\n"
- " Integer count = (Integer) row[2];\n"
- " .....\n"
- "}]]>"
-#: index.docbook:286
-msgid "Queries may specify a property of a class in the <literal>select</literal> clause. They may even call SQL aggregate functions. Properties or aggregates are considered \"scalar\" results (and not entities in persistent state)."
+#. Tag: title
+#: session_api.xml:297
+#, no-c-format
+msgid "Bind parameters"
msgstr "바인드 프라미터들"
-#: index.docbook:292
+#. Tag: para
+#: session_api.xml:299
+#, no-c-format
msgid ""
- "<![CDATA[Iterator results = sess.createQuery(\n"
- " \"select cat.color, min(cat.birthdate), count(cat) from Cat cat \" +\n"
- " \"group by cat.color\")\n"
- " .list()\n"
- " .iterator();\n"
- "\n"
- "while ( results.hasNext() ) {\n"
- " Object[] row = (Object[]) results.next();\n"
- " Color type = (Color) row[0];\n"
- " Date oldest = (Date) row[1];\n"
- " Integer count = (Integer) row[2];\n"
- " .....\n"
- "}]]>"
-msgstr "<literal>Query</literal> 상의 메소드들은 명명된 파라미터들 또는 JDBC-스타일의 <literal>?</literal> 파라미터들에 바인딩 값들을 제공한다. <emphasis>JDBC와는 대조적으로, Hibernate 숫자 파라미터들은 0에서 시작된다.</emphasis> 명명된 파라미터들은 질의 문자열 속에서 <literal>:name</literal> 형식의 식별자들이다. 명명된 파라미터들의 장점들은 다음과 같다:"
+"Methods on <literal>Query</literal> are provided for binding values to named "
+"parameters or JDBC-style <literal>?</literal> parameters. <emphasis>Contrary "
+"to JDBC, Hibernate numbers parameters from zero.</emphasis> Named parameters "
+"are identifiers of the form <literal>:name</literal> in the query string. "
+"The advantages of named parameters are:"
+msgstr ""
+"<literal>Query</literal> 상의 메소드들은 명명된 파라미터들 또는 JDBC-스타일"
+"의 <literal>?</literal> 파라미터들에 바인딩 값들을 제공한다. <emphasis>JDBC와"
+"는 대조적으로, Hibernate 숫자 파라미터들은 0에서 시작된다.</emphasis> 명명된 "
+"파라미터들은 질의 문자열 속에서 <literal>:name</literal> 형식의 식별자들이"
+"다. 명명된 파라미터들의 장점들은 다음과 같다:"
-#: index.docbook:297
-msgid "Bind parameters"
+#. Tag: para
+#: session_api.xml:309
+#, no-c-format
+msgid ""
+"named parameters are insensitive to the order they occur in the query string"
msgstr "명명된 파라미터들은 그것들이 질의 문자열 내에 발생하는 순서에 관계없다"
-#: index.docbook:299
-msgid "Methods on <literal>Query</literal> are provided for binding values to named parameters or JDBC-style <literal>?</literal> parameters. <emphasis>Contrary to JDBC, Hibernate numbers parameters from zero.</emphasis> Named parameters are identifiers of the form <literal>:name</literal> in the query string. The advantages of named parameters are:"
+#. Tag: para
+#: session_api.xml:315
+#, no-c-format
+msgid "they may occur multiple times in the same query"
msgstr "그것들은 동일한 질의 내에서 여러 번 발생할 수 있다"
-#: index.docbook:309
-msgid "named parameters are insensitive to the order they occur in the query string"
+#. Tag: para
+#: session_api.xml:320
+#, no-c-format
+msgid "they are self-documenting"
msgstr "그것은 자기-설명적이다"
-#: index.docbook:315
-msgid "they may occur multiple times in the same query"
+#. Tag: programlisting
+#: session_api.xml:326
+#, no-c-format
+msgid ""
+"<![CDATA[//named parameter (preferred)\n"
+"Query q = sess.createQuery(\"from DomesticCat cat where cat.name = :name"
+"\");\n"
+"q.setString(\"name\", \"Fritz\");\n"
+"Iterator cats = q.iterate();]]>"
msgstr ""
- "<![CDATA[//named parameter (preferred)\n"
- "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = :name\");\n"
- "q.setString(\"name\", \"Fritz\");\n"
- "Iterator cats = q.iterate();]]>"
-#: index.docbook:320
-msgid "they are self-documenting"
+#. Tag: programlisting
+#: session_api.xml:328
+#, no-c-format
+msgid ""
+"<![CDATA[//positional parameter\n"
+"Query q = sess.createQuery(\"from DomesticCat cat where cat.name = ?\");\n"
+"q.setString(0, \"Izi\");\n"
+"Iterator cats = q.iterate();]]>"
msgstr ""
- "<![CDATA[//positional parameter\n"
- "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = ?\");\n"
- "q.setString(0, \"Izi\");\n"
- "Iterator cats = q.iterate();]]>"
-#: index.docbook:326
+#. Tag: programlisting
+#: session_api.xml:330
+#, no-c-format
msgid ""
- "<![CDATA[//named parameter (preferred)\n"
- "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = :name\");\n"
- "q.setString(\"name\", \"Fritz\");\n"
- "Iterator cats = q.iterate();]]>"
+"<![CDATA[//named parameter list\n"
+"List names = new ArrayList();\n"
+"names.add(\"Izi\");\n"
+"names.add(\"Fritz\");\n"
+"Query q = sess.createQuery(\"from DomesticCat cat where cat.name in (:"
+"namesList)\");\n"
+"q.setParameterList(\"namesList\", names);\n"
+"List cats = q.list();]]>"
msgstr ""
- "<![CDATA[//named parameter list\n"
- "List names = new ArrayList();\n"
- "names.add(\"Izi\");\n"
- "names.add(\"Fritz\");\n"
- "Query q = sess.createQuery(\"from DomesticCat cat where cat.name in (:namesList)\");\n"
- "q.setParameterList(\"namesList\", names);\n"
- "List cats = q.list();]]>"
-#: index.docbook:328
+#. Tag: title
+#: session_api.xml:335
+#, no-c-format
+msgid "Pagination"
+msgstr "쪽매김"
+
+#. Tag: para
+#: session_api.xml:337
+#, no-c-format
msgid ""
- "<![CDATA[//positional parameter\n"
- "Query q = sess.createQuery(\"from DomesticCat cat where cat.name = ?\");\n"
- "q.setString(0, \"Izi\");\n"
- "Iterator cats = q.iterate();]]>"
-msgstr "<title>쪽매김</title>"
+"If you need to specify bounds upon your result set (the maximum number of "
+"rows you want to retrieve and / or the first row you want to retrieve) you "
+"should use methods of the <literal>Query</literal> interface:"
+msgstr ""
+"만일 당신이 당신의 결과 셋에 경계(당신이 검색하고자 원하는 최대 개수 그리고/"
+"또는 당신이 검색하고자 원하는 첫 번째 행)을 지정할 필요가 있다면 당신은 "
+"<literal>Query</literal> 인터페이스의 메소드들을 사용해야 한다:"
-#: index.docbook:330
+#. Tag: programlisting
+#: session_api.xml:343
+#, no-c-format
msgid ""
- "<![CDATA[//named parameter list\n"
- "List names = new ArrayList();\n"
- "names.add(\"Izi\");\n"
- "names.add(\"Fritz\");\n"
- "Query q = sess.createQuery(\"from DomesticCat cat where cat.name in (:namesList)\");\n"
- "q.setParameterList(\"namesList\", names);\n"
- "List cats = q.list();]]>"
-msgstr "만일 당신이 당신의 결과 셋에 경계(당신이 검색하고자 원하는 최대 개수 그리고/또는 당신이 검색하고자 원하는 첫 번째 행)을 지정할 필요가 있다면 당신은 <literal>Query</literal> 인터페이스의 메소드들을 사용해야 한다:"
+"<![CDATA[Query q = sess.createQuery(\"from DomesticCat cat\");\n"
+"q.setFirstResult(20);\n"
+"q.setMaxResults(10);\n"
+"List cats = q.list();]]>"
+msgstr ""
-#: index.docbook:335
-msgid "Pagination"
+#. Tag: para
+#: session_api.xml:345
+#, no-c-format
+msgid ""
+"Hibernate knows how to translate this limit query into the native SQL of "
+"your DBMS."
msgstr ""
- "<![CDATA[Query q = sess.createQuery(\"from DomesticCat cat\");\n"
- "q.setFirstResult(20);\n"
- "q.setMaxResults(10);\n"
- "List cats = q.list();]]>"
+"Hibernate는 이 limit 질의를 당신의 DBMS의 native SQL로 번역하는 방법을 알고 "
+"있다."
-#: index.docbook:337
-msgid "If you need to specify bounds upon your result set (the maximum number of rows you want to retrieve and / or the first row you want to retrieve) you should use methods of the <literal>Query</literal> interface:"
-msgstr "Hibernate는 이 limit 질의를 당신의 DBMS의 native SQL로 번역하는 방법을 알고 있다."
+#. Tag: title
+#: session_api.xml:353
+#, no-c-format
+msgid "Scrollable iteration"
+msgstr "스크롤 가능한 iteration"
-#: index.docbook:343
+#. Tag: para
+#: session_api.xml:355
+#, no-c-format
msgid ""
- "<![CDATA[Query q = sess.createQuery(\"from DomesticCat cat\");\n"
- "q.setFirstResult(20);\n"
- "q.setMaxResults(10);\n"
- "List cats = q.list();]]>"
-msgstr "스크롤 가능한 iteration"
+"If your JDBC driver supports scrollable <literal>ResultSet</literal>s, the "
+"<literal>Query</literal> interface may be used to obtain a "
+"<literal>ScrollableResults</literal> object, which allows flexible "
+"navigation of the query results."
+msgstr ""
+"당신의 JDBC 드라이버가 스크롤 가능한 <literal>ResultSet</literal>들을 지원할 "
+"경우, <literal>Query</literal> 인터페이스는 <literal>ScrollableResults</"
+"literal> 객체를 얻는데 사용될 수 있고, 그것은 질의 결과들에 대한 유연한 네비"
+"게이션을 허용해준다."
-#: index.docbook:345
-msgid "Hibernate knows how to translate this limit query into the native SQL of your DBMS."
-msgstr "당신의 JDBC 드라이버가 스크롤 가능한 <literal>ResultSet</literal>들을 지원할 경우, <literal>Query</literal> 인터페이스는 <literal>ScrollableResults</literal> 객체를 얻는데 사용될 수 있고, 그것은 질의 결과들에 대한 유연한 네비게이션을 허용해준다."
+#. Tag: programlisting
+#: session_api.xml:362
+#, no-c-format
+msgid ""
+"<![CDATA[Query q = sess.createQuery(\"select cat.name, cat from DomesticCat "
+"cat \" +\n"
+" \"order by cat.name\");\n"
+"ScrollableResults cats = q.scroll();\n"
+"if ( cats.first() ) {\n"
+"\n"
+" // find the first name on each page of an alphabetical list of cats by "
+"name\n"
+" firstNamesOfPages = new ArrayList();\n"
+" do {\n"
+" String name = cats.getString(0);\n"
+" firstNamesOfPages.add(name);\n"
+" }\n"
+" while ( cats.scroll(PAGE_SIZE) );\n"
+"\n"
+" // Now get the first page of cats\n"
+" pageOfCats = new ArrayList();\n"
+" cats.beforeFirst();\n"
+" int i=0;\n"
+" while( ( PAGE_SIZE > i++ ) && cats.next() ) pageOfCats.add( cats.get"
+"(1) );\n"
+"\n"
+"}\n"
+"cats.close()]]>"
+msgstr ""
-#: index.docbook:353
-msgid "Scrollable iteration"
+#. Tag: para
+#: session_api.xml:364
+#, no-c-format
+msgid ""
+"Note that an open database connection (and cursor) is required for this "
+"functionality, use <literal>setMaxResult()</literal>/<literal>setFirstResult"
+"()</literal> if you need offline pagination functionality."
msgstr ""
- "<![CDATA[Query q = sess.createQuery(\"select cat.name, cat from DomesticCat cat \" +\n"
- " \"order by cat.name\");\n"
- "ScrollableResults cats = q.scroll();\n"
- "if ( cats.first() ) {\n"
- "\n"
- " // find the first name on each page of an alphabetical list of cats by name\n"
- " firstNamesOfPages = new ArrayList();\n"
- " do {\n"
- " String name = cats.getString(0);\n"
- " firstNamesOfPages.add(name);\n"
- " }\n"
- " while ( cats.scroll(PAGE_SIZE) );\n"
- "\n"
- " // Now get the first page of cats\n"
- " pageOfCats = new ArrayList();\n"
- " cats.beforeFirst();\n"
- " int i=0;\n"
- " while( ( PAGE_SIZE > i++ ) && cats.next() ) pageOfCats.add( cats.get(1) );\n"
- "\n"
- "}\n"
- "cats.close()]]>"
+"열려진 데이터베이스 커넥션(과 커서)가 이 기능에 필요함을 노트하고, 만일 당신"
+"이 쪽매김 기능을 작동시킬 필요가 있다면 <literal>setMaxResult()</literal>/"
+"<literal>setFirstResult()</literal>를 사용하라."
-#: index.docbook:355
-msgid "If your JDBC driver supports scrollable <literal>ResultSet</literal>s, the <literal>Query</literal> interface may be used to obtain a <literal>ScrollableResults</literal> object, which allows flexible navigation of the query results."
-msgstr "열려진 데이터베이스 커넥션(과 커서)가 이 기능에 필요함을 노트하고, 만일 당신이 쪽매김 기능을 작동시킬 필요가 있다면 <literal>setMaxResult()</literal>/<literal>setFirstResult()</literal>를 사용하라."
+#. Tag: title
+#: session_api.xml:373
+#, no-c-format
+msgid "Externalizing named queries"
+msgstr "명명된 질의들을 구체화 시키기"
-#: index.docbook:362
+#. Tag: para
+#: session_api.xml:375
+#, no-c-format
msgid ""
- "<![CDATA[Query q = sess.createQuery(\"select cat.name, cat from DomesticCat cat \" +\n"
- " \"order by cat.name\");\n"
- "ScrollableResults cats = q.scroll();\n"
- "if ( cats.first() ) {\n"
- "\n"
- " // find the first name on each page of an alphabetical list of cats by name\n"
- " firstNamesOfPages = new ArrayList();\n"
- " do {\n"
- " String name = cats.getString(0);\n"
- " firstNamesOfPages.add(name);\n"
- " }\n"
- " while ( cats.scroll(PAGE_SIZE) );\n"
- "\n"
- " // Now get the first page of cats\n"
- " pageOfCats = new ArrayList();\n"
- " cats.beforeFirst();\n"
- " int i=0;\n"
- " while( ( PAGE_SIZE > i++ ) && cats.next() ) pageOfCats.add( cats.get(1) );\n"
- "\n"
- "}\n"
- "cats.close()]]>"
-msgstr "명명된 질의들을 구체화 시키기"
+"You may also define named queries in the mapping document. (Remember to use "
+"a <literal>CDATA</literal> section if your query contains characters that "
+"could be interpreted as markup.)"
+msgstr ""
+"당신은 또한 매핑 문서 속에 명명된 질의들을 정의할 수 있다.(만일 당신의 질의"
+"가 마크업으로서 해석될 수 있는 문자들을 포함할 경우에 <literal>CDATA</"
+"literal> 섹션을 사용하는 것을 기억하라))"
-#: index.docbook:364
-msgid "Note that an open database connection (and cursor) is required for this functionality, use <literal>setMaxResult()</literal>/<literal>setFirstResult()</literal> if you need offline pagination functionality."
-msgstr "당신은 또한 매핑 문서 속에 명명된 질의들을 정의할 수 있다.(만일 당신의 질의가 마크업으로서 해석될 수 있는 문자들을 포함할 경우에 <literal>CDATA</literal> 섹션을 사용하는 것을 기억하라))"
-
-#: index.docbook:373
-msgid "Externalizing named queries"
+#. Tag: programlisting
+#: session_api.xml:381
+#, no-c-format
+msgid ""
+"<![CDATA[<query name=\"ByNameAndMaximumWeight\"><![CDATA[\n"
+" from eg.DomesticCat as cat\n"
+" where cat.name = ?\n"
+" and cat.weight > ?\n"
+"] ]></query>]]>"
msgstr ""
- "<![CDATA[<query name=\"ByNameAndMaximumWeight\"><![CDATA[\n"
- " from eg.DomesticCat as cat\n"
- " where cat.name = ?\n"
- " and cat.weight > ?\n"
- "] ]></query>]]>"
-#: index.docbook:375
-msgid "You may also define named queries in the mapping document. (Remember to use a <literal>CDATA</literal> section if your query contains characters that could be interpreted as markup.)"
+#. Tag: para
+#: session_api.xml:383
+#, no-c-format
+msgid "Parameter binding and executing is done programatically:"
msgstr "파라미터 바인딩과 실행은 프로그램 상으로 행해진다:"
-#: index.docbook:381
+#. Tag: programlisting
+#: session_api.xml:387
+#, no-c-format
msgid ""
- "<![CDATA[<query name=\"ByNameAndMaximumWeight\"><![CDATA[\n"
- " from eg.DomesticCat as cat\n"
- " where cat.name = ?\n"
- " and cat.weight > ?\n"
- "] ]></query>]]>"
+"<![CDATA[Query q = sess.getNamedQuery(\"ByNameAndMaximumWeight\");\n"
+"q.setString(0, name);\n"
+"q.setInt(1, minWeight);\n"
+"List cats = q.list();]]>"
msgstr ""
- "<![CDATA[Query q = sess.getNamedQuery(\"ByNameAndMaximumWeight\");\n"
- "q.setString(0, name);\n"
- "q.setInt(1, minWeight);\n"
- "List cats = q.list();]]>"
-#: index.docbook:383
-msgid "Parameter binding and executing is done programatically:"
-msgstr "실제 프로그램 코드는 사용되는 질의 언어에 독립적이고, 당신은 또한 메타데이터로 native SQL 질의들을 정의할 수도 있거나 그것들을 매핑 파일들 속에 기존 질의들을 위치지움으로써 기존 질의들을 Hibernate로 이전시킬 수도 있음을 노트하라."
+#. Tag: para
+#: session_api.xml:389
+#, no-c-format
+msgid ""
+"Note that the actual program code is independent of the query language that "
+"is used, you may also define native SQL queries in metadata, or migrate "
+"existing queries to Hibernate by placing them in mapping files."
+msgstr ""
+"실제 프로그램 코드는 사용되는 질의 언어에 독립적이고, 당신은 또한 메타데이터"
+"로 native SQL 질의들을 정의할 수도 있거나 그것들을 매핑 파일들 속에 기존 질의"
+"들을 위치지움으로써 기존 질의들을 Hibernate로 이전시킬 수도 있음을 노트하라."
-#: index.docbook:387
+#. Tag: para
+#: session_api.xml:395
+#, no-c-format
msgid ""
- "<![CDATA[Query q = sess.getNamedQuery(\"ByNameAndMaximumWeight\");\n"
- "q.setString(0, name);\n"
- "q.setInt(1, minWeight);\n"
- "List cats = q.list();]]>"
-msgstr "또한 <literal><hibernate-mapping></literal> 요소 내에서 하나의 질의 선언은 그 질의에 대한 전역 유일 이름을 필요로 하고, 반면에 <literal><class></literal> 요소 내에서의 질의 선언은 클래스 이름으로 수직된이름을 첨가하여 자동적으로 유일하게 만들어진다. 예를 들어 <literal>eg.Cat.ByNameAndMaximumWeight</literal>."
+"Also note that a query declaration inside a <literal><hibernate-"
+"mapping></literal> element requires a global unique name for the query, "
+"while a query declaration inside a <literal><class></literal> element "
+"is made unique automatically by prepending the fully qualified name of the "
+"class, for example <literal>eg.Cat.ByNameAndMaximumWeight</literal>."
+msgstr ""
+"또한 <literal><hibernate-mapping></literal> 요소 내에서 하나의 질의 선"
+"언은 그 질의에 대한 전역 유일 이름을 필요로 하고, 반면에 <literal><"
+"class></literal> 요소 내에서의 질의 선언은 클래스 이름으로 수직된이름을 첨"
+"가하여 자동적으로 유일하게 만들어진다. 예를 들어 <literal>eg.Cat."
+"ByNameAndMaximumWeight</literal>."
-#: index.docbook:389
-msgid "Note that the actual program code is independent of the query language that is used, you may also define native SQL queries in metadata, or migrate existing queries to Hibernate by placing them in mapping files."
+#. Tag: title
+#: session_api.xml:408
+#, no-c-format
+msgid "Filtering collections"
msgstr "콜렉션들을 필터링 하기"
-#: index.docbook:395
-msgid "Also note that a query declaration inside a <literal><hibernate-mapping></literal> element requires a global unique name for the query, while a query declaration inside a <literal><class></literal> element is made unique automatically by prepending the fully qualified name of the class, for example <literal>eg.Cat.ByNameAndMaximumWeight</literal>."
-msgstr "콜렉션 <emphasis>필터</emphasis>는 영속 콜렉션 또는 배열에 적용될 수 있는 질의의 특별한 타입이다. 질의 문자열은 현재의 콜렉션 요소를 의미하는 <literal>this</literal>를 참조할 수 있다."
+#. Tag: para
+#: session_api.xml:409
+#, no-c-format
+msgid ""
+"A collection <emphasis>filter</emphasis> is a special type of query that may "
+"be applied to a persistent collection or array. The query string may refer "
+"to <literal>this</literal>, meaning the current collection element."
+msgstr ""
+"콜렉션 <emphasis>필터</emphasis>는 영속 콜렉션 또는 배열에 적용될 수 있는 질"
+"의의 특별한 타입이다. 질의 문자열은 현재의 콜렉션 요소를 의미하는 "
+"<literal>this</literal>를 참조할 수 있다."
-#: index.docbook:408
-msgid "Filtering collections"
+#. Tag: programlisting
+#: session_api.xml:415
+#, no-c-format
+msgid ""
+"<![CDATA[Collection blackKittens = session.createFilter(\n"
+" pk.getKittens(), \n"
+" \"where this.color = ?\")\n"
+" .setParameter( Color.BLACK, Hibernate.custom(ColorUserType.class) )\n"
+" .list()\n"
+");]]>"
msgstr ""
- "<![CDATA[Collection blackKittens = session.createFilter(\n"
- " pk.getKittens(), \n"
- " \"where this.color = ?\")\n"
- " .setParameter( Color.BLACK, Hibernate.custom(ColorUserType.class) )\n"
- " .list()\n"
- ");]]>"
-#: index.docbook:409
-msgid "A collection <emphasis>filter</emphasis> is a special type of query that may be applied to a persistent collection or array. The query string may refer to <literal>this</literal>, meaning the current collection element."
-msgstr "반환되는 콜렉션은 하나의 bag으로 간주되고, 그것은 주어진 콜렉션에 대한 사본이다. 원래의 콜렉션은 변경되지 않는다 (이것은 이름 \"filter\"의 의미와는 정반대이지만, 예상되는 행위와 일치된다)."
+#. Tag: para
+#: session_api.xml:417
+#, no-c-format
+msgid ""
+"The returned collection is considered a bag, and it's a copy of the given "
+"collection. The original collection is not modified (this is contrary to the "
+"implication of the name \"filter\", but consistent with expected behavior)."
+msgstr ""
+"반환되는 콜렉션은 하나의 bag으로 간주되고, 그것은 주어진 콜렉션에 대한 사본이"
+"다. 원래의 콜렉션은 변경되지 않는다 (이것은 이름 \"filter\"의 의미와는 정반대"
+"이지만, 예상되는 행위와 일치된다)."
-#: index.docbook:415
+#. Tag: para
+#: session_api.xml:423
+#, no-c-format
msgid ""
- "<![CDATA[Collection blackKittens = session.createFilter(\n"
- " pk.getKittens(), \n"
- " \"where this.color = ?\")\n"
- " .setParameter( Color.BLACK, Hibernate.custom(ColorUserType.class) )\n"
- " .list()\n"
- ");]]>"
-msgstr "필터들은 <literal>from</literal> 절을 필요로 하지 않음을 관찰하라(필요할 경우에 필터들이 한 개의 from 절을 가질 수 있을지라도). 필터들은 콜렉션 요소들 자체들을 반환하는 것으로 한정되지 않는다."
+"Observe that filters do not require a <literal>from</literal> clause (though "
+"they may have one if required). Filters are not limited to returning the "
+"collection elements themselves."
+msgstr ""
+"필터들은 <literal>from</literal> 절을 필요로 하지 않음을 관찰하라(필요할 경우"
+"에 필터들이 한 개의 from 절을 가질 수 있을지라도). 필터들은 콜렉션 요소들 자"
+"체들을 반환하는 것으로 한정되지 않는다."
-#: index.docbook:417
-msgid "The returned collection is considered a bag, and it's a copy of the given collection. The original collection is not modified (this is contrary to the implication of the name \"filter\", but consistent with expected behavior)."
+#. Tag: programlisting
+#: session_api.xml:428
+#, no-c-format
+msgid ""
+"<![CDATA[Collection blackKittenMates = session.createFilter(\n"
+" pk.getKittens(), \n"
+" \"select this.mate where this.color = eg.Color.BLACK.intValue\")\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[Collection blackKittenMates = session.createFilter(\n"
- " pk.getKittens(), \n"
- " \"select this.mate where this.color = eg.Color.BLACK.intValue\")\n"
- " .list();]]>"
-#: index.docbook:423
-msgid "Observe that filters do not require a <literal>from</literal> clause (though they may have one if required). Filters are not limited to returning the collection elements themselves."
-msgstr "심지어 하나의 공백의 필터 질의도 예를 들어 거대한 콜렉션 내에 있는 요소들의 부분집합들을 로드시키는데 유용하다:"
+#. Tag: para
+#: session_api.xml:430
+#, no-c-format
+msgid ""
+"Even an empty filter query is useful, e.g. to load a subset of elements in a "
+"huge collection:"
+msgstr ""
+"심지어 하나의 공백의 필터 질의도 예를 들어 거대한 콜렉션 내에 있는 요소들의 "
+"부분집합들을 로드시키는데 유용하다:"
-#: index.docbook:428
+#. Tag: programlisting
+#: session_api.xml:435
+#, no-c-format
msgid ""
- "<![CDATA[Collection blackKittenMates = session.createFilter(\n"
- " pk.getKittens(), \n"
- " \"select this.mate where this.color = eg.Color.BLACK.intValue\")\n"
- " .list();]]>"
+"<![CDATA[Collection tenKittens = session.createFilter(\n"
+" mother.getKittens(), \"\")\n"
+" .setFirstResult(0).setMaxResults(10)\n"
+" .list();]]>"
msgstr ""
- "<![CDATA[Collection tenKittens = session.createFilter(\n"
- " mother.getKittens(), \"\")\n"
- " .setFirstResult(0).setMaxResults(10)\n"
- " .list();]]>"
-#: index.docbook:430
-msgid "Even an empty filter query is useful, e.g. to load a subset of elements in a huge collection:"
+#. Tag: title
+#: session_api.xml:440
+#, no-c-format
+msgid "Criteria queries"
msgstr "Criteria 질의들"
-#: index.docbook:435
+#. Tag: para
+#: session_api.xml:442
+#, no-c-format
msgid ""
- "<![CDATA[Collection tenKittens = session.createFilter(\n"
- " mother.getKittens(), \"\")\n"
- " .setFirstResult(0).setMaxResults(10)\n"
- " .list();]]>"
-msgstr "HQL은 극히 강력하지만 몇몇 개발자들은 질의 문자열들을 빌드하기 보다, 객체 지향 API를 사용하여 동적으로 질의들을 빌드시키는 것을 선호한다. Hibernate는 이들 경우들을 위한 직관적인 <literal>Criteria</literal> query API를 제공한다:"
+"HQL is extremely powerful but some developers prefer to build queries "
+"dynamically, using an object-oriented API, rather than building query "
+"strings. Hibernate provides an intuitive <literal>Criteria</literal> query "
+"API for these cases:"
+msgstr ""
+"HQL은 극히 강력하지만 몇몇 개발자들은 질의 문자열들을 빌드하기 보다, 객체 지"
+"향 API를 사용하여 동적으로 질의들을 빌드시키는 것을 선호한다. Hibernate는 이"
+"들 경우들을 위한 직관적인 <literal>Criteria</literal> query API를 제공한다:"
-#: index.docbook:440
-msgid "Criteria queries"
+#. Tag: programlisting
+#: session_api.xml:448
+#, no-c-format
+msgid ""
+"<![CDATA[Criteria crit = session.createCriteria(Cat.class);\n"
+"crit.add( Restrictions.eq( \"color\", eg.Color.BLACK ) );\n"
+"crit.setMaxResults(10);\n"
+"List cats = crit.list();]]>"
msgstr ""
- "<![CDATA[Criteria crit = session.createCriteria(Cat.class);\n"
- "crit.add( Restrictions.eq( \"color\", eg.Color.BLACK ) );\n"
- "crit.setMaxResults(10);\n"
- "List cats = crit.list();]]>"
-#: index.docbook:442
-msgid "HQL is extremely powerful but some developers prefer to build queries dynamically, using an object-oriented API, rather than building query strings. Hibernate provides an intuitive <literal>Criteria</literal> query API for these cases:"
-msgstr "<literal>Criteria</literal>와 연관된 <literal>Example</literal> API 는 <xref linkend=\"querycriteria\"/>에서 상세하게 논의된다."
+#. Tag: para
+#: session_api.xml:450
+#, no-c-format
+msgid ""
+"The <literal>Criteria</literal> and the associated <literal>Example</"
+"literal> API are discussed in more detail in <xref linkend=\"querycriteria\"/"
+">."
+msgstr ""
+"<literal>Criteria</literal>와 연관된 <literal>Example</literal> API 는 <xref "
+"linkend=\"querycriteria\"/>에서 상세하게 논의된다."
-#: index.docbook:448
-msgid ""
- "<![CDATA[Criteria crit = session.createCriteria(Cat.class);\n"
- "crit.add( Restrictions.eq( \"color\", eg.Color.BLACK ) );\n"
- "crit.setMaxResults(10);\n"
- "List cats = crit.list();]]>"
+#. Tag: title
+#: session_api.xml:458
+#, no-c-format
+msgid "Queries in native SQL"
msgstr "native SQL에서 질의들"
-#: index.docbook:450
-msgid "The <literal>Criteria</literal> and the associated <literal>Example</literal> API are discussed in more detail in <xref linkend=\"querycriteria\"/>."
-msgstr "당신은 <literal>createSQLQuery()</literal>를 사용하여 SQL 속에 하나의 질의를 표현할 수 있고, Hibernate로 하여금 결과 셋들로부터 객체들로의 매핑을 처리하도록 할수도 있다. 당신은 아무때나 <literal>session.connection()</literal>을 호출할 수 있고 직접 JDBC <literal>Connection</literal>을 사용할 수 있음을 노트하라. 만일 당신이 Hibernate API를 사용하고자 선택한 경우에 , 당신은 SQL alias들을 중괄호들 속에 포함시켜야 한다:"
+#. Tag: para
+#: session_api.xml:460
+#, no-c-format
+msgid ""
+"You may express a query in SQL, using <literal>createSQLQuery()</literal> "
+"and let Hibernate take care of the mapping from result sets to objects. Note "
+"that you may at any time call <literal>session.connection()</literal> and "
+"use the JDBC <literal>Connection</literal> directly. If you chose to use the "
+"Hibernate API, you must enclose SQL aliases in braces:"
+msgstr ""
+"당신은 <literal>createSQLQuery()</literal>를 사용하여 SQL 속에 하나의 질의를 "
+"표현할 수 있고, Hibernate로 하여금 결과 셋들로부터 객체들로의 매핑을 처리하도"
+"록 할수도 있다. 당신은 아무때나 <literal>session.connection()</literal>을 호"
+"출할 수 있고 직접 JDBC <literal>Connection</literal>을 사용할 수 있음을 노트"
+"하라. 만일 당신이 Hibernate API를 사용하고자 선택한 경우에 , 당신은 SQL alias"
+"들을 중괄호들 속에 포함시켜야 한다:"
-#: index.docbook:458
-msgid "Queries in native SQL"
+#. Tag: programlisting
+#: session_api.xml:468
+#, no-c-format
+msgid ""
+"<![CDATA[List cats = session.createSQLQuery(\"SELECT {cat.*} FROM CAT {cat} "
+"WHERE ROWNUM<10\")\n"
+" .addEntity(\"cat\", Cat.class)\n"
+".list();]]>"
msgstr ""
- "<![CDATA[List cats = session.createSQLQuery(\"SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM<10\")
-\n"
- " .addEntity(\"cat\", Cat.class)
-\n"
- ".list();]]>"
-#: index.docbook:460
-msgid "You may express a query in SQL, using <literal>createSQLQuery()</literal> and let Hibernate take care of the mapping from result sets to objects. Note that you may at any time call <literal>session.connection()</literal> and use the JDBC <literal>Connection</literal> directly. If you chose to use the Hibernate API, you must enclose SQL aliases in braces:"
+#. Tag: programlisting
+#: session_api.xml:470
+#, no-c-format
+msgid ""
+"<![CDATA[List cats = session.createSQLQuery(\n"
+" \"SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, \" +\n"
+" \"{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... \" "
+"+\n"
+" \"FROM CAT {cat} WHERE ROWNUM<10\")\n"
+" .addEntity(\"cat\", Cat.class)\n"
+".list()]]>"
msgstr ""
- "<![CDATA[List cats = session.createSQLQuery(
-\n"
- " \"SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, \" +
-\n"
- " \"{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... \" +
-\n"
- " \"FROM CAT {cat} WHERE ROWNUM<10\")
-\n"
- " .addEntity(\"cat\", Cat.class)
-\n"
- ".list()]]>"
-#: index.docbook:468
+#. Tag: para
+#: session_api.xml:472
+#, no-c-format
msgid ""
- "<![CDATA[List cats = session.createSQLQuery(\"SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM<10\")\n"
- " .addEntity(\"cat\", Cat.class)\n"
- ".list();]]>"
-msgstr "SQL 질의들은 Hibernate 질의들처럼 명명된 파라미터들과 위치 파라미터들을 포함할 수도 있다. SQL 질의들에 대한 추가 정보는 <xref linkend=\"querysql\"/>에서 찾을 수 있다."
+"SQL queries may contain named and positional parameters, just like Hibernate "
+"queries. More information about native SQL queries in Hibernate can be found "
+"in <xref linkend=\"querysql\"/>."
+msgstr ""
+"SQL 질의들은 Hibernate 질의들처럼 명명된 파라미터들과 위치 파라미터들을 포함"
+"할 수도 있다. SQL 질의들에 대한 추가 정보는 <xref linkend=\"querysql\"/>에서 "
+"찾을 수 있다."
-#: index.docbook:470
-msgid ""
- "<![CDATA[List cats = session.createSQLQuery(\n"
- " \"SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, \" +\n"
- " \"{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... \" +\n"
- " \"FROM CAT {cat} WHERE ROWNUM<10\")\n"
- " .addEntity(\"cat\", Cat.class)\n"
- ".list()]]>"
+#. Tag: title
+#: session_api.xml:483
+#, no-c-format
+msgid "Modifying persistent objects"
msgstr "영속 객체들을 변경하기"
-#: index.docbook:472
-msgid "SQL queries may contain named and positional parameters, just like Hibernate queries. More information about native SQL queries in Hibernate can be found in <xref linkend=\"querysql\"/>."
-msgstr "<emphasis>트랜잭션 상의 영속 인스턴스들</emphasis> (예를들면. <literal>Session</literal>에 의해 로드되고, 저장되고, 생성되거나 질의된 객체들)은 어플리케이션에 의해 처리될 수 있고 영속 상태에 대한 임의의 변경들은 <literal>Session</literal>이 <emphasis>flush될</emphasis> 때 영속화 될 것이다(이 장의 뒷 부분에서 논의됨). 당신의 변경들을 영속화 시키기 위해 (다른 용도를 가진 <literal>update()</literal>와 같은) 특별한 메소드를 호출할 필요가 없다. 따라서 객체의 상태를 업데이트 시키는 가장 간단한 방법은 <literal>Session</literal>이 열려 있는 동안, 그것을 <literal>load()</literal>시키고 나서, 그것을 직접 처리하는 것이다:"
+#. Tag: para
+#: session_api.xml:485
+#, no-c-format
+msgid ""
+"<emphasis>Transactional persistent instances</emphasis> (ie. objects loaded, "
+"saved, created or queried by the <literal>Session</literal>) may be "
+"manipulated by the application and any changes to persistent state will be "
+"persisted when the <literal>Session</literal> is <emphasis>flushed</"
+"emphasis> (discussed later in this chapter). There is no need to call a "
+"particular method (like <literal>update()</literal>, which has a different "
+"purpose) to make your modifications persistent. So the most straightforward "
+"way to update the state of an object is to <literal>load()</literal> it, and "
+"then manipulate it directly, while the <literal>Session</literal> is open:"
+msgstr ""
+"<emphasis>트랜잭션 상의 영속 인스턴스들</emphasis> (예를들면. "
+"<literal>Session</literal>에 의해 로드되고, 저장되고, 생성되거나 질의된 객체"
+"들)은 어플리케이션에 의해 처리될 수 있고 영속 상태에 대한 임의의 변경들은 "
+"<literal>Session</literal>이 <emphasis>flush될</emphasis> 때 영속화 될 것이다"
+"(이 장의 뒷 부분에서 논의됨). 당신의 변경들을 영속화 시키기 위해 (다른 용도"
+"를 가진 <literal>update()</literal>와 같은) 특별한 메소드를 호출할 필요가 없"
+"다. 따라서 객체의 상태를 업데이트 시키는 가장 간단한 방법은 "
+"<literal>Session</literal>이 열려 있는 동안, 그것을 <literal>load()</literal>"
+"시키고 나서, 그것을 직접 처리하는 것이다:"
-#: index.docbook:483
-msgid "Modifying persistent objects"
+#. Tag: programlisting
+#: session_api.xml:496
+#, no-c-format
+msgid ""
+"<![CDATA[DomesticCat cat = (DomesticCat) sess.load( Cat.class, new Long"
+"(69) );\n"
+"cat.setName(\"PK\");\n"
+"sess.flush(); // changes to cat are automatically detected and persisted]]>"
msgstr ""
- "<![CDATA[DomesticCat cat = (DomesticCat) sess.load( Cat.class, new Long(69) );\n"
- "cat.setName(\"PK\");\n"
- "sess.flush(); // changes to cat are automatically detected and persisted]]>"
-#: index.docbook:485
-msgid "<emphasis>Transactional persistent instances</emphasis> (ie. objects loaded, saved, created or queried by the <literal>Session</literal>) may be manipulated by the application and any changes to persistent state will be persisted when the <literal>Session</literal> is <emphasis>flushed</emphasis> (discussed later in this chapter). There is no need to call a particular method (like <literal>update()</literal>, which has a different purpose) to make your modifications persistent. So the most straightforward way to update the state of an object is to <literal>load()</literal> it, and then manipulate it directly, while the <literal>Session</literal> is open:"
-msgstr "때때로 이 프로그래밍 모형은 불충분하다. 왜냐하면 그것은 동일한 세션 내에서 (객체를 로드시키는) SQL <literal>SELECT</literal>와 (그것의 업데이트된 상태를 영속화 시키는) SQL <literal>UPDATE</literal> 양자를 필요로 할 것이기 때문이다. 그러므로 Hibernate는 detached 인스턴스들을 사용하는 대안적인 접근법을 제공한다."
+#. Tag: para
+#: session_api.xml:498
+#, no-c-format
+msgid ""
+"Sometimes this programming model is inefficient since it would require both "
+"an SQL <literal>SELECT</literal> (to load an object) and an SQL "
+"<literal>UPDATE</literal> (to persist its updated state) in the same "
+"session. Therefore Hibernate offers an alternate approach, using detached "
+"instances."
+msgstr ""
+"때때로 이 프로그래밍 모형은 불충분하다. 왜냐하면 그것은 동일한 세션 내에서 "
+"(객체를 로드시키는) SQL <literal>SELECT</literal>와 (그것의 업데이트된 상태"
+"를 영속화 시키는) SQL <literal>UPDATE</literal> 양자를 필요로 할 것이기 때문"
+"이다. 그러므로 Hibernate는 detached 인스턴스들을 사용하는 대안적인 접근법을 "
+"제공한다."
-#: index.docbook:496
+#. Tag: emphasis
+#: session_api.xml:506
+#, fuzzy, no-c-format
msgid ""
- "<![CDATA[DomesticCat cat = (DomesticCat) sess.load( Cat.class, new Long(69) );\n"
- "cat.setName(\"PK\");\n"
- "sess.flush(); // changes to cat are automatically detected and persisted]]>"
-msgstr "Hibernate는 <literal>UPDATE</literal> 문장 또는 <literal>DELETE</literal> 문장의 직접적인 실행을 위한 그것 자신의 API를 제공하지 않음을 노트하라. Hibernate는 하나의 <emphasis>상태 관리</emphasis> 서비스이고, 당신은 그것을 사용할 <emphasis>문장들</emphasis>을 생각하지 말아야 한다. JDBC는 SQL 문장들을 실행시키는 완전한 API이고, 당신은 <literal>session.connection()</literal>을 호출하여 아무때나 한 개의 JDBC <literal>Connection</literal>을 얻을 수 있다. 게다가 대량 오퍼레이션의 개념은 온라인 트랜잭션 처리-지향적인 어플리케이션들을 위한 객체/관계형 매핑과 충돌한다. 하지만 Hibernate의 장래 버전들은 특별한 대용량의 오퍼레이션 기능들을 제공할 수도 있다. 몇몇 가능한 배치 오퍼레이션 트릭들에 대해서는 <xref linkend=\"batch\"/>을 보라."
+"Note that Hibernate does not offer its own API for direct execution of "
+"<literal>UPDATE</literal> or <literal>DELETE</literal> statements. Hibernate "
+"is a <emphasis>state management</emphasis> service, you don't have to think "
+"in <emphasis>statements</emphasis> to use it. JDBC is a perfect API for "
+"executing SQL statements, you can get a JDBC <literal>Connection</literal> "
+"at any time by calling <literal>session.connection()</literal>. Furthermore, "
+"the notion of mass operations conflicts with object/relational mapping for "
+"online transaction processing-oriented applications. Future versions of "
+"Hibernate may however provide special mass operation functions. See <xref "
+"linkend=\"batch\"/> for some possible batch operation tricks."
+msgstr ""
+"Hibernate는 <placeholder-1/> 문장 또는 <placeholder-2/> 문장의 직접적인 실행"
+"을 위한 그것 자신의 API를 제공하지 않음을 노트하라. Hibernate는 하나의 "
+"<placeholder-3/> 서비스이고, 당신은 그것을 사용할 <placeholder-4/>을 생각하"
+"지 말아야 한다. JDBC는 SQL 문장들을 실행시키는 완전한 API이고, 당신은 "
+"<placeholder-5/>을 호출하여 아무때나 한 개의 JDBC <placeholder-6/>을 얻을 수 "
+"있다. 게다가 대량 오퍼레이션의 개념은 온라인 트랜잭션 처리-지향적인 어플리케"
+"이션들을 위한 객체/관계형 매핑과 충돌한다. 하지만 Hibernate의 장래 버전들은 "
+"특별한 대용량의 오퍼레이션 기능들을 제공할 수도 있다. 몇몇 가능한 배치 오퍼레"
+"이션 트릭들에 대해서는 <xref linkend=\"batch\"/>을 보라."
-#: index.docbook:498
-msgid "Sometimes this programming model is inefficient since it would require both an SQL <literal>SELECT</literal> (to load an object) and an SQL <literal>UPDATE</literal> (to persist its updated state) in the same session. Therefore Hibernate offers an alternate approach, using detached instances."
+#. Tag: title
+#: session_api.xml:521
+#, no-c-format
+msgid "Modifying detached objects"
msgstr "detached 객체들을 변경시키기"
-#: index.docbook:506
-msgid "Note that Hibernate does not offer its own API for direct execution of <literal>UPDATE</literal> or <literal>DELETE</literal> statements. Hibernate is a <emphasis>state management</emphasis> service, you don't have to think in <emphasis>statements</emphasis> to use it. JDBC is a perfect API for executing SQL statements, you can get a JDBC <literal>Connection</literal> at any time by calling <literal>session.connection()</literal>. Furthermore, the notion of mass operations conflicts with object/relational mapping for online transaction processing-oriented applications. Future versions of Hibernate may however provide special mass operation functions. See <xref linkend=\"batch\"/> for some possible batch operation tricks."
-msgstr "많은 어플리케이션들은 하나의 트랜잭션 내에서 하나의 객체를 검색하고, 처리를 위한 UI 계층으로 그것을 전송하고, 그런 다음 새로운 트랜잭션 내에서 변경들을 저장할 필요가 있다. 고도의-동시성 환경에서 이런 종류의 접근법을 사용하는 어플리케이션들은 대개 작업의 \"긴\" 단위를 확실히 격리시키기 위해 버전화 된 데이터를 사용한다."
+#. Tag: para
+#: session_api.xml:523
+#, no-c-format
+msgid ""
+"Many applications need to retrieve an object in one transaction, send it to "
+"the UI layer for manipulation, then save the changes in a new transaction. "
+"Applications that use this kind of approach in a high-concurrency "
+"environment usually use versioned data to ensure isolation for the \"long\" "
+"unit of work."
+msgstr ""
+"많은 어플리케이션들은 하나의 트랜잭션 내에서 하나의 객체를 검색하고, 처리를 "
+"위한 UI 계층으로 그것을 전송하고, 그런 다음 새로운 트랜잭션 내에서 변경들을 "
+"저장할 필요가 있다. 고도의-동시성 환경에서 이런 종류의 접근법을 사용하는 어플"
+"리케이션들은 대개 작업의 \"긴\" 단위를 확실히 격리시키기 위해 버전화 된 데이"
+"터를 사용한다."
-#: index.docbook:521
-msgid "Modifying detached objects"
-msgstr "Hibernate는 <literal>Session.update()</literal> 메소드 또는 <literal>Session.merge()</literal> 메소드를 사용하여 detached 인스턴스들의 재첨부를 제공함으로써 이 모형을 지원한다:"
+#. Tag: para
+#: session_api.xml:530
+#, no-c-format
+msgid ""
+"Hibernate supports this model by providing for reattachment of detached "
+"instances using the <literal>Session.update()</literal> or <literal>Session."
+"merge()</literal> methods:"
+msgstr ""
+"Hibernate는 <literal>Session.update()</literal> 메소드 또는 <literal>Session."
+"merge()</literal> 메소드를 사용하여 detached 인스턴스들의 재첨부를 제공함으로"
+"써 이 모형을 지원한다:"
-#: index.docbook:523
-msgid "Many applications need to retrieve an object in one transaction, send it to the UI layer for manipulation, then save the changes in a new transaction. Applications that use this kind of approach in a high-concurrency environment usually use versioned data to ensure isolation for the \"long\" unit of work."
+#. Tag: programlisting
+#: session_api.xml:536
+#, no-c-format
+msgid ""
+"<![CDATA[// in the first session\n"
+"Cat cat = (Cat) firstSession.load(Cat.class, catId);\n"
+"Cat potentialMate = new Cat();\n"
+"firstSession.save(potentialMate);\n"
+"\n"
+"// in a higher layer of the application\n"
+"cat.setMate(potentialMate);\n"
+"\n"
+"// later, in a new session\n"
+"secondSession.update(cat); // update cat\n"
+"secondSession.update(mate); // update mate]]>"
msgstr ""
- "<![CDATA[// in the first session\n"
- "Cat cat = (Cat) firstSession.load(Cat.class, catId);\n"
- "Cat potentialMate = new Cat();\n"
- "firstSession.save(potentialMate);\n"
- "\n"
- "// in a higher layer of the application\n"
- "cat.setMate(potentialMate);\n"
- "\n"
- "// later, in a new session\n"
- "secondSession.update(cat); // update cat\n"
- "secondSession.update(mate); // update mate]]>"
-#: index.docbook:530
-msgid "Hibernate supports this model by providing for reattachment of detached instances using the <literal>Session.update()</literal> or <literal>Session.merge()</literal> methods:"
-msgstr "만일 <literal>catId</literal> 식별자를 가진 <literal>Cat</literal>이 <literal>secondSession</literal>에 의해 이미 로드되었을 경우에 어플리케이션이 그것을 다시 재첨부하려고 시도할 때, 예외상황이 던져졌을 것이다."
+#. Tag: para
+#: session_api.xml:538
+#, no-c-format
+msgid ""
+"If the <literal>Cat</literal> with identifier <literal>catId</literal> had "
+"already been loaded by <literal>secondSession</literal> when the application "
+"tried to reattach it, an exception would have been thrown."
+msgstr ""
+"만일 <literal>catId</literal> 식별자를 가진 <literal>Cat</literal>이 "
+"<literal>secondSession</literal>에 의해 이미 로드되었을 경우에 어플리케이션"
+"이 그것을 다시 재첨부하려고 시도할 때, 예외상황이 던져졌을 것이다."
-#: index.docbook:536
+#. Tag: para
+#: session_api.xml:544
+#, no-c-format
msgid ""
- "<![CDATA[// in the first session\n"
- "Cat cat = (Cat) firstSession.load(Cat.class, catId);\n"
- "Cat potentialMate = new Cat();\n"
- "firstSession.save(potentialMate);\n"
- "\n"
- "// in a higher layer of the application\n"
- "cat.setMate(potentialMate);\n"
- "\n"
- "// later, in a new session\n"
- "secondSession.update(cat); // update cat\n"
- "secondSession.update(mate); // update mate]]>"
-msgstr "만일 그 세션이 동일한 식별자를 가진 영속 인스턴스를 이미 포함하지 않음을 당신이 확신하는 경우에는 <literal>update()</literal>를 사용하고, 만일 당신이 세션의 상태를 고려하지 않은채로 아무때나 당신의 변경을 병합시키고자 원할 경우에는 <literal>merge()</literal>를 사용하라. 달리 말해, 당신의 detached 인스턴스들에 대한 재첨부가 실행되는 첫 번째 오퍼레이션임을 확실히 함으로써, <literal>update()</literal>는 대개 갓 만들어진 세션에서 당신이 호출하게 될 첫 번째 메소드이다."
+"Use <literal>update()</literal> if you are sure that the session does not "
+"contain an already persistent instance with the same identifier, and "
+"<literal>merge()</literal> if you want to merge your modifications at any "
+"time without consideration of the state of the session. In other words, "
+"<literal>update()</literal> is usually the first method you would call in a "
+"fresh session, ensuring that reattachment of your detached instances is the "
+"first operation that is executed."
+msgstr ""
+"만일 그 세션이 동일한 식별자를 가진 영속 인스턴스를 이미 포함하지 않음을 당신"
+"이 확신하는 경우에는 <literal>update()</literal>를 사용하고, 만일 당신이 세션"
+"의 상태를 고려하지 않은채로 아무때나 당신의 변경을 병합시키고자 원할 경우에"
+"는 <literal>merge()</literal>를 사용하라. 달리 말해, 당신의 detached 인스턴스"
+"들에 대한 재첨부가 실행되는 첫 번째 오퍼레이션임을 확실히 함으로써, "
+"<literal>update()</literal>는 대개 갓 만들어진 세션에서 당신이 호출하게 될 "
+"첫 번째 메소드이다."
-#: index.docbook:538
-msgid "If the <literal>Cat</literal> with identifier <literal>catId</literal> had already been loaded by <literal>secondSession</literal> when the application tried to reattach it, an exception would have been thrown."
-msgstr "어플리케이션은 만일 그것이 detached 인스턴스들의 상태가 또한 업데이트 되는 것을 원할 경우에<emphasis>만</emphasis> 주어진 detached 인스턴스로부터 도달 가능한 detached 인스턴스들을 개별적으로<literal>update()</literal> 시킬 것이다. 이것은 물론 <emphasis>transitive persistence(전이 영속)</emphasis>을 사용하여 자동화 될 수 있고, <xref linkend=\"objectstate-transitive\"/>를 보라."
+#. Tag: para
+#: session_api.xml:553
+#, no-c-format
+msgid ""
+"The application should individually <literal>update()</literal> detached "
+"instances reachable from the given detached instance if and <emphasis>only</"
+"emphasis> if it wants their state also updated. This can be automated of "
+"course, using <emphasis>transitive persistence</emphasis>, see <xref linkend="
+"\"objectstate-transitive\"/>."
+msgstr ""
+"어플리케이션은 만일 그것이 detached 인스턴스들의 상태가 또한 업데이트 되는 것"
+"을 원할 경우에<emphasis>만</emphasis> 주어진 detached 인스턴스로부터 도달 가"
+"능한 detached 인스턴스들을 개별적으로<literal>update()</literal> 시킬 것이"
+"다. 이것은 물론 <emphasis>transitive persistence(전이 영속)</emphasis>을 사용"
+"하여 자동화 될 수 있고, <xref linkend=\"objectstate-transitive\"/>를 보라."
-#: index.docbook:544
-msgid "Use <literal>update()</literal> if you are sure that the session does not contain an already persistent instance with the same identifier, and <literal>merge()</literal> if you want to merge your modifications at any time without consideration of the state of the session. In other words, <literal>update()</literal> is usually the first method you would call in a fresh session, ensuring that reattachment of your detached instances is the first operation that is executed."
-msgstr "<literal>lock()</literal> 메소드는 또한 하나의 객체를 새로운 세션에 대해 다시 연관시키는것을 어플리케이션에게 허용해준다. 하지만 detached 인스턴스는 변경되지 않아야 한다!"
+#. Tag: para
+#: session_api.xml:560
+#, no-c-format
+msgid ""
+"The <literal>lock()</literal> method also allows an application to "
+"reassociate an object with a new session. However, the detached instance has "
+"to be unmodified!"
+msgstr ""
+"<literal>lock()</literal> 메소드는 또한 하나의 객체를 새로운 세션에 대해 다"
+"시 연관시키는것을 어플리케이션에게 허용해준다. 하지만 detached 인스턴스는 변"
+"경되지 않아야 한다!"
-#: index.docbook:553
-msgid "The application should individually <literal>update()</literal> detached instances reachable from the given detached instance if and <emphasis>only</emphasis> if it wants their state also updated. This can be automated of course, using <emphasis>transitive persistence</emphasis>, see <xref linkend=\"objectstate-transitive\"/>."
+#. Tag: programlisting
+#: session_api.xml:565
+#, no-c-format
+msgid ""
+"<![CDATA[//just reassociate:\n"
+"sess.lock(fritz, LockMode.NONE);\n"
+"//do a version check, then reassociate:\n"
+"sess.lock(izi, LockMode.READ);\n"
+"//do a version check, using SELECT ... FOR UPDATE, then reassociate:\n"
+"sess.lock(pk, LockMode.UPGRADE);]]>"
msgstr ""
- "<![CDATA[//just reassociate:\n"
- "sess.lock(fritz, LockMode.NONE);\n"
- "//do a version check, then reassociate:\n"
- "sess.lock(izi, LockMode.READ);\n"
- "//do a version check, using SELECT ... FOR UPDATE, then reassociate:\n"
- "sess.lock(pk, LockMode.UPGRADE);]]>"
-#: index.docbook:560
-msgid "The <literal>lock()</literal> method also allows an application to reassociate an object with a new session. However, the detached instance has to be unmodified!"
-msgstr "<literal>lock()</literal>이 여러가지 <literal>LockMode</literal>들에 사용될 수 있음을 노트하고, 상세한 것은 API 문서와 트랜잭션 처리에 관한 장을 보라. 재첨부는 <literal>lock()</literal>에 대한 유일한 쓰임새는 아니다."
+#. Tag: para
+#: session_api.xml:567
+#, no-c-format
+msgid ""
+"Note that <literal>lock()</literal> can be used with various "
+"<literal>LockMode</literal>s, see the API documentation and the chapter on "
+"transaction handling for more information. Reattachment is not the only "
+"usecase for <literal>lock()</literal>."
+msgstr ""
+"<literal>lock()</literal>이 여러가지 <literal>LockMode</literal>들에 사용될 "
+"수 있음을 노트하고, 상세한 것은 API 문서와 트랜잭션 처리에 관한 장을 보라. 재"
+"첨부는 <literal>lock()</literal>에 대한 유일한 쓰임새는 아니다."
-#: index.docbook:565
+#. Tag: para
+#: session_api.xml:574
+#, no-c-format
msgid ""
- "<![CDATA[//just reassociate:\n"
- "sess.lock(fritz, LockMode.NONE);\n"
- "//do a version check, then reassociate:\n"
- "sess.lock(izi, LockMode.READ);\n"
- "//do a version check, using SELECT ... FOR UPDATE, then reassociate:\n"
- "sess.lock(pk, LockMode.UPGRADE);]]>"
-msgstr "긴 작업 단위에 대한 다른 모형들은 <xref linkend=\"transactions-optimistic\"/>에서 논의된다."
+"Other models for long units of work are discussed in <xref linkend="
+"\"transactions-optimistic\"/>."
+msgstr ""
+"긴 작업 단위에 대한 다른 모형들은 <xref linkend=\"transactions-optimistic\"/>"
+"에서 논의된다."
-#: index.docbook:567
-msgid "Note that <literal>lock()</literal> can be used with various <literal>LockMode</literal>s, see the API documentation and the chapter on transaction handling for more information. Reattachment is not the only usecase for <literal>lock()</literal>."
+#. Tag: title
+#: session_api.xml:581
+#, no-c-format
+msgid "Automatic state detection"
msgstr "자동적인 상태 검출"
-#: index.docbook:574
-msgid "Other models for long units of work are discussed in <xref linkend=\"transactions-optimistic\"/>."
-msgstr "Hibernate 사용자들은 새로운 식별자를 생성시켜서 transient 인스턴스를 저장하거나 그것의 현재 식별자와 연관된 detached 인스턴스들을 업데이트/재첨부 시키는 일반적인 용도의 메소드를 요청했다. <literal>saveOrUpdate()</literal> 메소드는 이 기능을 구현한다."
+#. Tag: para
+#: session_api.xml:583
+#, no-c-format
+msgid ""
+"Hibernate users have requested a general purpose method that either saves a "
+"transient instance by generating a new identifier or updates/reattaches the "
+"detached instances associated with its current identifier. The "
+"<literal>saveOrUpdate()</literal> method implements this functionality."
+msgstr ""
+"Hibernate 사용자들은 새로운 식별자를 생성시켜서 transient 인스턴스를 저장하거"
+"나 그것의 현재 식별자와 연관된 detached 인스턴스들을 업데이트/재첨부 시키는 "
+"일반적인 용도의 메소드를 요청했다. <literal>saveOrUpdate()</literal> 메소드"
+"는 이 기능을 구현한다."
-#: index.docbook:581
-msgid "Automatic state detection"
+#. Tag: programlisting
+#: session_api.xml:590
+#, no-c-format
+msgid ""
+"<![CDATA[// in the first session\n"
+"Cat cat = (Cat) firstSession.load(Cat.class, catID);\n"
+"\n"
+"// in a higher tier of the application\n"
+"Cat mate = new Cat();\n"
+"cat.setMate(mate);\n"
+"\n"
+"// later, in a new session\n"
+"secondSession.saveOrUpdate(cat); // update existing state (cat has a non-"
+"null id)\n"
+"secondSession.saveOrUpdate(mate); // save the new instance (mate has a null "
+"id)]]>"
msgstr ""
- "<![CDATA[// in the first session\n"
- "Cat cat = (Cat) firstSession.load(Cat.class, catID);\n"
- "\n"
- "// in a higher tier of the application\n"
- "Cat mate = new Cat();\n"
- "cat.setMate(mate);\n"
- "\n"
- "// later, in a new session\n"
- "secondSession.saveOrUpdate(cat); // update existing state (cat has a non-null id)\n"
- "secondSession.saveOrUpdate(mate); // save the new instance (mate has a null id)]]>"
-#: index.docbook:583
-msgid "Hibernate users have requested a general purpose method that either saves a transient instance by generating a new identifier or updates/reattaches the detached instances associated with its current identifier. The <literal>saveOrUpdate()</literal> method implements this functionality."
-msgstr "<literal>saveOrUpdate()</literal>의 사용 예제와 의미는 초심자들에게는 혼동스러워 보인다. 먼저, 하나의 세션에서 온 인스턴스를 또 다른 새로운 세션 내에서 사용하려고 시도하지 않는 한, 당신은 <literal>update()</literal>, <literal>saveOrUpdate()</literal>, 또는 <literal>merge()</literal>를 사용할 필요는 없을 것이다. 몇몇 전체 어플리케이션들은 이들 메소드들 중 어느 것도 결코 사용하지 않을 것이다."
+#. Tag: para
+#: session_api.xml:592
+#, no-c-format
+msgid ""
+"The usage and semantics of <literal>saveOrUpdate()</literal> seems to be "
+"confusing for new users. Firstly, so long as you are not trying to use "
+"instances from one session in another new session, you should not need to "
+"use <literal>update()</literal>, <literal>saveOrUpdate()</literal>, or "
+"<literal>merge()</literal>. Some whole applications will never use either of "
+"these methods."
+msgstr ""
+"<literal>saveOrUpdate()</literal>의 사용 예제와 의미는 초심자들에게는 혼동스"
+"러워 보인다. 먼저, 하나의 세션에서 온 인스턴스를 또 다른 새로운 세션 내에서 "
+"사용하려고 시도하지 않는 한, 당신은 <literal>update()</literal>, "
+"<literal>saveOrUpdate()</literal>, 또는 <literal>merge()</literal>를 사용할 "
+"필요는 없을 것이다. 몇몇 전체 어플리케이션들은 이들 메소드들 중 어느 것도 결"
+"코 사용하지 않을 것이다."
-#: index.docbook:590
+#. Tag: para
+#: session_api.xml:600
+#, no-c-format
msgid ""
- "<![CDATA[// in the first session\n"
- "Cat cat = (Cat) firstSession.load(Cat.class, catID);\n"
- "\n"
- "// in a higher tier of the application\n"
- "Cat mate = new Cat();\n"
- "cat.setMate(mate);\n"
- "\n"
- "// later, in a new session\n"
- "secondSession.saveOrUpdate(cat); // update existing state (cat has a non-null id)\n"
- "secondSession.saveOrUpdate(mate); // save the new instance (mate has a null id)]]>"
-msgstr "대개 <literal>update()</literal> 또는 <literal>saveOrUpdate()</literal>는 다음 시나리오에서 사용된다:"
+"Usually <literal>update()</literal> or <literal>saveOrUpdate()</literal> are "
+"used in the following scenario:"
+msgstr ""
+"대개 <literal>update()</literal> 또는 <literal>saveOrUpdate()</literal>는 다"
+"음 시나리오에서 사용된다:"
-#: index.docbook:592
-msgid "The usage and semantics of <literal>saveOrUpdate()</literal> seems to be confusing for new users. Firstly, so long as you are not trying to use instances from one session in another new session, you should not need to use <literal>update()</literal>, <literal>saveOrUpdate()</literal>, or <literal>merge()</literal>. Some whole applications will never use either of these methods."
+#. Tag: para
+#: session_api.xml:607
+#, no-c-format
+msgid "the application loads an object in the first session"
msgstr "어플리케이션이 첫 번째 세션 내에 객체를 로드시킨다"
-#: index.docbook:600
-msgid "Usually <literal>update()</literal> or <literal>saveOrUpdate()</literal> are used in the following scenario:"
+#. Tag: para
+#: session_api.xml:612
+#, no-c-format
+msgid "the object is passed up to the UI tier"
msgstr "객체가 UI 티어로 전달된다"
-#: index.docbook:607
-msgid "the application loads an object in the first session"
+#. Tag: para
+#: session_api.xml:617
+#, no-c-format
+msgid "some modifications are made to the object"
msgstr "몇몇 변경들이 그 객체에 행해진다"
-#: index.docbook:612
-msgid "the object is passed up to the UI tier"
+#. Tag: para
+#: session_api.xml:622
+#, no-c-format
+msgid "the object is passed back down to the business logic tier"
msgstr "객체가 비지니스 로직 티어로 전달된다"
-#: index.docbook:617
-msgid "some modifications are made to the object"
-msgstr "어플리케이션은 두 번째 세션에서 <literal>update()</literal>를 호출함으로써 이들 변경들을 영속화 시킨다"
+#. Tag: para
+#: session_api.xml:627
+#, no-c-format
+msgid ""
+"the application persists these modifications by calling <literal>update()</"
+"literal> in a second session"
+msgstr ""
+"어플리케이션은 두 번째 세션에서 <literal>update()</literal>를 호출함으로써 이"
+"들 변경들을 영속화 시킨다"
-#: index.docbook:622
-msgid "the object is passed back down to the business logic tier"
+#. Tag: para
+#: session_api.xml:634
+#, no-c-format
+msgid "<literal>saveOrUpdate()</literal> does the following:"
msgstr "<literal>saveOrUpdate()</literal>는 다음을 행한다:"
-#: index.docbook:627
-msgid "the application persists these modifications by calling <literal>update()</literal> in a second session"
-msgstr "만일 객체가 이 세션 내에서 이미 영속화 되어 있을 경우, 아무것도 행하지 않는다"
-
-#: index.docbook:634
-msgid "<literal>saveOrUpdate()</literal> does the following:"
-msgstr "만일 그 세션과 연관된 또 다른 객체가 동일한 식별자를 가질 경우, 예외상황을 던진다"
-
-#: index.docbook:640
+#. Tag: para
+#: session_api.xml:640
+#, no-c-format
msgid "if the object is already persistent in this session, do nothing"
-msgstr "만일 그 객체가 식별자 프로퍼티를 갖지 않을 경우, 그것을 <literal>save()</literal> 시킨다"
+msgstr ""
+"만일 객체가 이 세션 내에서 이미 영속화 되어 있을 경우, 아무것도 행하지 않는다"
-#: index.docbook:645
-msgid "if another object associated with the session has the same identifier, throw an exception"
-msgstr "만일 객체의 식별자가 새로이 초기화 된 객체에 할당된 값을 가질 경우, 그것을 <literal>save()</literal> 시킨다"
+#. Tag: para
+#: session_api.xml:645
+#, no-c-format
+msgid ""
+"if another object associated with the session has the same identifier, throw "
+"an exception"
+msgstr ""
+"만일 그 세션과 연관된 또 다른 객체가 동일한 식별자를 가질 경우, 예외상황을 던"
+"진다"
-#: index.docbook:651
+#. Tag: para
+#: session_api.xml:651
+#, no-c-format
msgid "if the object has no identifier property, <literal>save()</literal> it"
-msgstr "만일 객체가 (<literal><version></literal> 또는 <literal><timestamp></literal>에 의해) 버전화 되고, version 프로퍼티 값이 새로이 초기화 된 객체에 할당된 것과 동일한 값일 경우, 그것을 <literal>save()</literal> 시킨다"
+msgstr ""
+"만일 그 객체가 식별자 프로퍼티를 갖지 않을 경우, 그것을 <literal>save()</"
+"literal> 시킨다"
-#: index.docbook:656
-msgid "if the object's identifier has the value assigned to a newly instantiated object, <literal>save()</literal> it"
-msgstr "그 밖의 경우 그 객체를 <literal>update()</literal> 시킨다"
+#. Tag: para
+#: session_api.xml:656
+#, no-c-format
+msgid ""
+"if the object's identifier has the value assigned to a newly instantiated "
+"object, <literal>save()</literal> it"
+msgstr ""
+"만일 객체의 식별자가 새로이 초기화 된 객체에 할당된 값을 가질 경우, 그것을 "
+"<literal>save()</literal> 시킨다"
-#: index.docbook:662
-msgid "if the object is versioned (by a <literal><version></literal> or <literal><timestamp></literal>), and the version property value is the same value assigned to a newly instantiated object, <literal>save()</literal> it"
-msgstr "그리고 <literal>merge()</literal>는 매우 다르다:"
+#. Tag: para
+#: session_api.xml:662
+#, no-c-format
+msgid ""
+"if the object is versioned (by a <literal><version></literal> or "
+"<literal><timestamp></literal>), and the version property value is the "
+"same value assigned to a newly instantiated object, <literal>save()</"
+"literal> it"
+msgstr ""
+"만일 객체가 (<literal><version></literal> 또는 <literal><"
+"timestamp></literal>에 의해) 버전화 되고, version 프로퍼티 값이 새로이 초"
+"기화 된 객체에 할당된 것과 동일한 값일 경우, 그것을 <literal>save()</"
+"literal> 시킨다"
-#: index.docbook:670
+#. Tag: para
+#: session_api.xml:670
+#, no-c-format
msgid "otherwise <literal>update()</literal> the object"
-msgstr "만일 세션과 현재 연관된 동일한 식별자를 가진 영속 인스턴스가 존재할 경우, 주어진 객체의 상태를 영속 인스턴스 상으로 복사한다"
+msgstr "그 밖의 경우 그 객체를 <literal>update()</literal> 시킨다"
-#: index.docbook:676
+#. Tag: para
+#: session_api.xml:676
+#, no-c-format
msgid "and <literal>merge()</literal> is very different:"
-msgstr "만일 세션과 현재 연관된 영속 인스턴스가 존재하지 않을 경우, 데이터베이스로부터 그것을 로드시키려고 시도하거나 새로운 영속 인스턴스를 생성시키려고 시도한다"
+msgstr "그리고 <literal>merge()</literal>는 매우 다르다:"
-#: index.docbook:682
-msgid "if there is a persistent instance with the same identifier currently associated with the session, copy the state of the given object onto the persistent instance"
-msgstr "영속 인스턴스가 반환된다"
+#. Tag: para
+#: session_api.xml:682
+#, no-c-format
+msgid ""
+"if there is a persistent instance with the same identifier currently "
+"associated with the session, copy the state of the given object onto the "
+"persistent instance"
+msgstr ""
+"만일 세션과 현재 연관된 동일한 식별자를 가진 영속 인스턴스가 존재할 경우, 주"
+"어진 객체의 상태를 영속 인스턴스 상으로 복사한다"
-#: index.docbook:689
-msgid "if there is no persistent instance currently associated with the session, try to load it from the database, or create a new persistent instance"
-msgstr "주어진 인스턴스는 세션과 연관되지 않고, 그것은 detached 상태에 머무른다"
+#. Tag: para
+#: session_api.xml:689
+#, no-c-format
+msgid ""
+"if there is no persistent instance currently associated with the session, "
+"try to load it from the database, or create a new persistent instance"
+msgstr ""
+"만일 세션과 현재 연관된 영속 인스턴스가 존재하지 않을 경우, 데이터베이스로부"
+"터 그것을 로드시키려고 시도하거나 새로운 영속 인스턴스를 생성시키려고 시도한"
+"다"
-#: index.docbook:695
+#. Tag: para
+#: session_api.xml:695
+#, no-c-format
msgid "the persistent instance is returned"
-msgstr "영속 객체들을 삭제하기"
+msgstr "영속 인스턴스가 반환된다"
-#: index.docbook:700
-msgid "the given instance does not become associated with the session, it remains detached"
-msgstr "<literal>Session.delete()</literal>는 데이터베이스로부터 객체의 상태를 제거할 것이다. 물론 당신의 어플리케이션은 여전히 detached 객체에 대한 참조를 소유할 것이다. 영속 인스턴스를 transient로 만들 때 <literal>delete()</literal>를 생각하는 것이 최상이다."
+#. Tag: para
+#: session_api.xml:700
+#, no-c-format
+msgid ""
+"the given instance does not become associated with the session, it remains "
+"detached"
+msgstr ""
+"주어진 인스턴스는 세션과 연관되지 않고, 그것은 detached 상태에 머무른다"
-#: index.docbook:710
+#. Tag: title
+#: session_api.xml:710
+#, no-c-format
msgid "Deleting persistent objects"
-msgstr "<![CDATA[sess.delete(cat);]]>"
+msgstr "영속 객체들을 삭제하기"
-#: index.docbook:712
-msgid "<literal>Session.delete()</literal> will remove an object's state from the database. Of course, your application might still hold a reference to a deleted object. It's best to think of <literal>delete()</literal> as making a persistent instance transient."
-msgstr "당신은 foreign 키 컨스트레인트 위배들에 대한 위험성 없이 당신이 좋아하는 어떤 순서로 객체들을 삭제할 수도 있다. 잘못된 순서로 객체들을 삭제함으로써 foreign 키 컬럼에 대한 <literal>NOT NULL</literal> 컨스트레인트를 위배할 가능성이 여전히 존재한다. 예를 들어, 당신이 부모를 삭제하지만, 그 자식들을 삭제하는 것을 잊은 경우."
+#. Tag: para
+#: session_api.xml:712
+#, no-c-format
+msgid ""
+"<literal>Session.delete()</literal> will remove an object's state from the "
+"database. Of course, your application might still hold a reference to a "
+"deleted object. It's best to think of <literal>delete()</literal> as making "
+"a persistent instance transient."
+msgstr ""
+"<literal>Session.delete()</literal>는 데이터베이스로부터 객체의 상태를 제거"
+"할 것이다. 물론 당신의 어플리케이션은 여전히 detached 객체에 대한 참조를 소유"
+"할 것이다. 영속 인스턴스를 transient로 만들 때 <literal>delete()</literal>를 "
+"생각하는 것이 최상이다."
-#: index.docbook:719
+#. Tag: programlisting
+#: session_api.xml:719
+#, no-c-format
msgid "<![CDATA[sess.delete(cat);]]>"
-msgstr "두 개의 다른 데이터저장소들 사이에 객체들을 복제하기"
+msgstr ""
-#: index.docbook:721
-msgid "You may delete objects in any order you like, without risk of foreign key constraint violations. It is still possible to violate a <literal>NOT NULL</literal> constraint on a foreign key column by deleting objects in the wrong order, e.g. if you delete the parent, but forget to delete the children."
-msgstr "영속 인스턴스들의 그래프를 취하고 식별자 값들을 다시 생성시키지 않고서 그것들을 다른 저장소 속에 영속화 시키는 것을 가능하도록 만드는 것이 종종 유용하다."
+#. Tag: para
+#: session_api.xml:721
+#, no-c-format
+msgid ""
+"You may delete objects in any order you like, without risk of foreign key "
+"constraint violations. It is still possible to violate a <literal>NOT NULL</"
+"literal> constraint on a foreign key column by deleting objects in the wrong "
+"order, e.g. if you delete the parent, but forget to delete the children."
+msgstr ""
+"당신은 foreign 키 컨스트레인트 위배들에 대한 위험성 없이 당신이 좋아하는 어"
+"떤 순서로 객체들을 삭제할 수도 있다. 잘못된 순서로 객체들을 삭제함으로써 "
+"foreign 키 컬럼에 대한 <literal>NOT NULL</literal> 컨스트레인트를 위배할 가능"
+"성이 여전히 존재한다. 예를 들어, 당신이 부모를 삭제하지만, 그 자식들을 삭제하"
+"는 것을 잊은 경우."
-#: index.docbook:732
+#. Tag: title
+#: session_api.xml:732
+#, no-c-format
msgid "Replicating object between two different datastores"
+msgstr "두 개의 다른 데이터저장소들 사이에 객체들을 복제하기"
+
+#. Tag: para
+#: session_api.xml:734
+#, no-c-format
+msgid ""
+"It is occasionally useful to be able to take a graph of persistent instances "
+"and make them persistent in a different datastore, without regenerating "
+"identifier values."
msgstr ""
- "<![CDATA[//retrieve a cat from one database\n"
- "Session session1 = factory1.openSession();\n"
- "Transaction tx1 = session1.beginTransaction();\n"
- "Cat cat = session1.get(Cat.class, catId);\n"
- "tx1.commit();\n"
- "session1.close();\n"
- "\n"
- "//reconcile with a second database\n"
- "Session session2 = factory2.openSession();\n"
- "Transaction tx2 = session2.beginTransaction();\n"
- "session2.replicate(cat, ReplicationMode.LATEST_VERSION);\n"
- "tx2.commit();\n"
- "session2.close();]]>"
+"영속 인스턴스들의 그래프를 취하고 식별자 값들을 다시 생성시키지 않고서 그것들"
+"을 다른 저장소 속에 영속화 시키는 것을 가능하도록 만드는 것이 종종 유용하다."
-#: index.docbook:734
-msgid "It is occasionally useful to be able to take a graph of persistent instances and make them persistent in a different datastore, without regenerating identifier values."
-msgstr "<literal>ReplicationMode</literal>는 <literal>replicate()</literal>가 데이터베이스 내에 있는 기존의 행들과의 충돌을 처리하게될 방법을 결정한다."
+#. Tag: programlisting
+#: session_api.xml:740
+#, no-c-format
+msgid ""
+"<![CDATA[//retrieve a cat from one database\n"
+"Session session1 = factory1.openSession();\n"
+"Transaction tx1 = session1.beginTransaction();\n"
+"Cat cat = session1.get(Cat.class, catId);\n"
+"tx1.commit();\n"
+"session1.close();\n"
+"\n"
+"//reconcile with a second database\n"
+"Session session2 = factory2.openSession();\n"
+"Transaction tx2 = session2.beginTransaction();\n"
+"session2.replicate(cat, ReplicationMode.LATEST_VERSION);\n"
+"tx2.commit();\n"
+"session2.close();]]>"
+msgstr ""
-#: index.docbook:740
+#. Tag: para
+#: session_api.xml:742
+#, no-c-format
msgid ""
- "<![CDATA[//retrieve a cat from one database\n"
- "Session session1 = factory1.openSession();\n"
- "Transaction tx1 = session1.beginTransaction();\n"
- "Cat cat = session1.get(Cat.class, catId);\n"
- "tx1.commit();\n"
- "session1.close();\n"
- "\n"
- "//reconcile with a second database\n"
- "Session session2 = factory2.openSession();\n"
- "Transaction tx2 = session2.beginTransaction();\n"
- "session2.replicate(cat, ReplicationMode.LATEST_VERSION);\n"
- "tx2.commit();\n"
- "session2.close();]]>"
-msgstr "<literal>ReplicationMode.IGNORE</literal> - 동일한 식별자를 가진 기존 데이터베이스 행이 존재할 경우에 그 객체를 무시한다"
+"The <literal>ReplicationMode</literal> determines how <literal>replicate()</"
+"literal> will deal with conflicts with existing rows in the database."
+msgstr ""
+"<literal>ReplicationMode</literal>는 <literal>replicate()</literal>가 데이터"
+"베이스 내에 있는 기존의 행들과의 충돌을 처리하게될 방법을 결정한다."
-#: index.docbook:742
-msgid "The <literal>ReplicationMode</literal> determines how <literal>replicate()</literal> will deal with conflicts with existing rows in the database."
-msgstr "<literal>ReplicationMode.OVERWRITE</literal> - 동일한 식별자를 가진 어떤 기존의 데이터베이스 행을 덮어 쓴다"
+#. Tag: para
+#: session_api.xml:749
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.IGNORE</literal> - ignore the object when there is "
+"an existing database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.IGNORE</literal> - 동일한 식별자를 가진 기존 데이터"
+"베이스 행이 존재할 경우에 그 객체를 무시한다"
-#: index.docbook:749
-msgid "<literal>ReplicationMode.IGNORE</literal> - ignore the object when there is an existing database row with the same identifier"
-msgstr "<literal>ReplicationMode.EXCEPTION</literal> - 만일 동일한 식별자를 가진 기존 데이터베이스 행이 존재할 경우에 예외상황을 던진다"
+#. Tag: para
+#: session_api.xml:755
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.OVERWRITE</literal> - overwrite any existing "
+"database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.OVERWRITE</literal> - 동일한 식별자를 가진 어떤 기존"
+"의 데이터베이스 행을 덮어 쓴다"
-#: index.docbook:755
-msgid "<literal>ReplicationMode.OVERWRITE</literal> - overwrite any existing database row with the same identifier"
-msgstr "<literal>ReplicationMode.LATEST_VERSION</literal> - 행의 버전 번호가 객체의 버전 번호 보다 이전의 것이면 덮어쓰고, 그 밖의 경우에 그 객체를 무시한다"
+#. Tag: para
+#: session_api.xml:761
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.EXCEPTION</literal> - throw an exception if there "
+"is an existing database row with the same identifier"
+msgstr ""
+"<literal>ReplicationMode.EXCEPTION</literal> - 만일 동일한 식별자를 가진 기"
+"존 데이터베이스 행이 존재할 경우에 예외상황을 던진다"
-#: index.docbook:761
-msgid "<literal>ReplicationMode.EXCEPTION</literal> - throw an exception if there is an existing database row with the same identifier"
-msgstr "이 특징의 쓰임새들은 다른 데이터베이스 인스턴스들 속으로 입력된 데이터 일치시키기, 제품 업그레이드 동안에 시스템 구성 정보 업데이트 하기, non-ACID 트랜잭션들 동안에 행해진 변경들을 롤백시키기 등을 포함한다."
+#. Tag: para
+#: session_api.xml:767
+#, no-c-format
+msgid ""
+"<literal>ReplicationMode.LATEST_VERSION</literal> - overwrite the row if its "
+"version number is earlier than the version number of the object, or ignore "
+"the object otherwise"
+msgstr ""
+"<literal>ReplicationMode.LATEST_VERSION</literal> - 행의 버전 번호가 객체의 "
+"버전 번호 보다 이전의 것이면 덮어쓰고, 그 밖의 경우에 그 객체를 무시한다"
-#: index.docbook:767
-msgid "<literal>ReplicationMode.LATEST_VERSION</literal> - overwrite the row if its version number is earlier than the version number of the object, or ignore the object otherwise"
-msgstr "Session을 flush 시키기"
+#. Tag: para
+#: session_api.xml:775
+#, no-c-format
+msgid ""
+"Usecases for this feature include reconciling data entered into different "
+"database instances, upgrading system configuration information during "
+"product upgrades, rolling back changes made during non-ACID transactions and "
+"more."
+msgstr ""
+"이 특징의 쓰임새들은 다른 데이터베이스 인스턴스들 속으로 입력된 데이터 일치시"
+"키기, 제품 업그레이드 동안에 시스템 구성 정보 업데이트 하기, non-ACID 트랜잭"
+"션들 동안에 행해진 변경들을 롤백시키기 등을 포함한다."
-#: index.docbook:775
-msgid "Usecases for this feature include reconciling data entered into different database instances, upgrading system configuration information during product upgrades, rolling back changes made during non-ACID transactions and more."
-msgstr "시간이 지남에 따라 <literal>Session</literal>은 JDBC 커넥션의 상태와 메모리 내에 보관된 객체들의 상태를 동기화 시키는데 필요한 SQL 문장들을 실행시킬 것이다. 이 프로세스 <emphasis>flush</emphasis>는 다음 시점들에서 디폴트로 발생한다"
-
-#: index.docbook:784
+#. Tag: title
+#: session_api.xml:784
+#, no-c-format
msgid "Flushing the Session"
-msgstr "몇몇 질의들이 실행되기 전에"
+msgstr "Session을 flush 시키기"
-#: index.docbook:786
-msgid "From time to time the <literal>Session</literal> will execute the SQL statements needed to synchronize the JDBC connection's state with the state of objects held in memory. This process, <emphasis>flush</emphasis>, occurs by default at the following points"
-msgstr "<literal>org.hibernate.Transaction.commit()</literal> 시점에서"
+#. Tag: para
+#: session_api.xml:786
+#, no-c-format
+msgid ""
+"From time to time the <literal>Session</literal> will execute the SQL "
+"statements needed to synchronize the JDBC connection's state with the state "
+"of objects held in memory. This process, <emphasis>flush</emphasis>, occurs "
+"by default at the following points"
+msgstr ""
+"시간이 지남에 따라 <literal>Session</literal>은 JDBC 커넥션의 상태와 메모리 "
+"내에 보관된 객체들의 상태를 동기화 시키는데 필요한 SQL 문장들을 실행시킬 것이"
+"다. 이 프로세스 <emphasis>flush</emphasis>는 다음 시점들에서 디폴트로 발생한"
+"다"
-#: index.docbook:795
+#. Tag: para
+#: session_api.xml:795
+#, no-c-format
msgid "before some query executions"
-msgstr "<literal>Session.flush()</literal> 시점에서"
+msgstr "몇몇 질의들이 실행되기 전에"
-#: index.docbook:800
+#. Tag: para
+#: session_api.xml:800
+#, no-c-format
msgid "from <literal>org.hibernate.Transaction.commit()</literal>"
-msgstr "SQL 문장들이 다음 순서로 실행 명령이 내려진다"
+msgstr "<literal>org.hibernate.Transaction.commit()</literal> 시점에서"
-#: index.docbook:805
+#. Tag: para
+#: session_api.xml:805
+#, no-c-format
msgid "from <literal>Session.flush()</literal>"
-msgstr "대응하는 객체들이 <literal>Session.save()</literal>를 사용하여 저장되었던 것과 같은 순서로, 모든 엔티티 삽입들"
+msgstr "<literal>Session.flush()</literal> 시점에서"
-#: index.docbook:811
+#. Tag: para
+#: session_api.xml:811
+#, no-c-format
msgid "The SQL statements are issued in the following order"
-msgstr "모든 엔티티 업데이트들"
+msgstr "SQL 문장들이 다음 순서로 실행 명령이 내려진다"
-#: index.docbook:817
-msgid "all entity insertions, in the same order the corresponding objects were saved using <literal>Session.save()</literal>"
-msgstr "모든 콜렉션 삭제들"
+#. Tag: para
+#: session_api.xml:817
+#, no-c-format
+msgid ""
+"all entity insertions, in the same order the corresponding objects were "
+"saved using <literal>Session.save()</literal>"
+msgstr ""
+"대응하는 객체들이 <literal>Session.save()</literal>를 사용하여 저장되었던 것"
+"과 같은 순서로, 모든 엔티티 삽입들"
-#: index.docbook:823
+#. Tag: para
+#: session_api.xml:823
+#, no-c-format
msgid "all entity updates"
-msgstr "모든 콜렉션 요소 삭제들, 업데이트들 그리고 삽입들"
+msgstr "모든 엔티티 업데이트들"
-#: index.docbook:828
+#. Tag: para
+#: session_api.xml:828
+#, no-c-format
msgid "all collection deletions"
-msgstr "모든 콜렉션 삽입들"
+msgstr "모든 콜렉션 삭제들"
-#: index.docbook:833
+#. Tag: para
+#: session_api.xml:833
+#, no-c-format
msgid "all collection element deletions, updates and insertions"
-msgstr "대응하는 객체들이 <literal>Session.delete()</literal>를 사용하여 삭제되었던 것과 같은 순서로 모든 엔티티 삭제들."
+msgstr "모든 콜렉션 요소 삭제들, 업데이트들 그리고 삽입들"
-#: index.docbook:838
+#. Tag: para
+#: session_api.xml:838
+#, no-c-format
msgid "all collection insertions"
-msgstr "(한가지 예외는 객체들이 저장될 때 <literal>native</literal> ID 생성을 사용하는 객체들이 insert 되는 점이다.)"
+msgstr "모든 콜렉션 삽입들"
-#: index.docbook:843
-msgid "all entity deletions, in the same order the corresponding objects were deleted using <literal>Session.delete()</literal>"
-msgstr "당신이 명시적으로 <literal>flush()</literal> 시킬 때를 제외하면, <literal>Session</literal>이 JDBC 호출들을 실행시키는 <emphasis>시점</emphasis>, 그것들이 실행되는 <emphasis>순서</emphasis>만을 절대적으로 보장하지는 않는다. 하지만 Hibernate는 <literal>Query.list(..)</literal>가 실효성이 없는 데이터를 결코 반환하지 않을 것임을 보장하거나; 그것들이 잘못된 데이터도 반환하지 않을 것임을 보장한다."
+#. Tag: para
+#: session_api.xml:843
+#, no-c-format
+msgid ""
+"all entity deletions, in the same order the corresponding objects were "
+"deleted using <literal>Session.delete()</literal>"
+msgstr ""
+"대응하는 객체들이 <literal>Session.delete()</literal>를 사용하여 삭제되었던 "
+"것과 같은 순서로 모든 엔티티 삭제들."
-#: index.docbook:850
-msgid "(An exception is that objects using <literal>native</literal> ID generation are inserted when they are saved.)"
-msgstr "flush가 너무 자주 발생하지 않도록 디폴트 행위를 변경하는 것이 가능하다. <literal>FlushMode</literal> 클래스는 세 개의 다른 모드들을 정의한다: 오직 커밋 시(그리고 Hibernate <literal>Transaction</literal> API가 사용될 때에만) flush 모드, 설명된 루틴을 사용하는 자동적인 flush 모드, 또는 <literal>flush()</literal>가 명시적으로 호출되지 않는 한 flush 시키지 않는 모드. 마지막 모드는 오래 동안 실행되는 작업 단위에 대해 유용하고, 여기서 <literal>Session</literal>은 열려진채로 유지되고 오랜 시간 동안 연결이 해제된 채로 유지된다. (<xref linkend=\"transactions-optimistic-longsession\"/>를 보라)."
+#. Tag: para
+#: session_api.xml:850
+#, no-c-format
+msgid ""
+"(An exception is that objects using <literal>native</literal> ID generation "
+"are inserted when they are saved.)"
+msgstr ""
+"(한가지 예외는 객체들이 저장될 때 <literal>native</literal> ID 생성을 사용하"
+"는 객체들이 insert 되는 점이다.)"
-#: index.docbook:855
-msgid "Except when you explicity <literal>flush()</literal>, there are absolutely no guarantees about <emphasis>when</emphasis> the <literal>Session</literal> executes the JDBC calls, only the <emphasis>order</emphasis> in which they are executed. However, Hibernate does guarantee that the <literal>Query.list(..)</literal> will never return stale data; nor will they return the wrong data."
+#. Tag: para
+#: session_api.xml:855
+#, no-c-format
+msgid ""
+"Except when you explicity <literal>flush()</literal>, there are absolutely "
+"no guarantees about <emphasis>when</emphasis> the <literal>Session</literal> "
+"executes the JDBC calls, only the <emphasis>order</emphasis> in which they "
+"are executed. However, Hibernate does guarantee that the <literal>Query.list"
+"(..)</literal> will never return stale data; nor will they return the wrong "
+"data."
msgstr ""
- "<![CDATA[sess = sf.openSession();\n"
- "Transaction tx = sess.beginTransaction();\n"
- "sess.setFlushMode(FlushMode.COMMIT); // allow queries to return stale state\n"
- "\n"
- "Cat izi = (Cat) sess.load(Cat.class, id);\n"
- "izi.setName(iznizi);\n"
- "\n"
- "// might return stale data\n"
- "sess.find(\"from Cat as cat left outer join cat.kittens kitten\");\n"
- "\n"
- "// change to izi is not flushed!\n"
- "...\n"
- "tx.commit(); // flush occurs\n"
- "sess.close();]]>"
+"당신이 명시적으로 <literal>flush()</literal> 시킬 때를 제외하면, "
+"<literal>Session</literal>이 JDBC 호출들을 실행시키는 <emphasis>시점</"
+"emphasis>, 그것들이 실행되는 <emphasis>순서</emphasis>만을 절대적으로 보장하"
+"지는 않는다. 하지만 Hibernate는 <literal>Query.list(..)</literal>가 실효성이 "
+"없는 데이터를 결코 반환하지 않을 것임을 보장하거나; 그것들이 잘못된 데이터도 "
+"반환하지 않을 것임을 보장한다."
-#: index.docbook:863
-msgid "It is possible to change the default behavior so that flush occurs less frequently. The <literal>FlushMode</literal> class defines three different modes: only flush at commit time (and only when the Hibernate <literal>Transaction</literal> API is used), flush automatically using the explained routine, or never flush unless <literal>flush()</literal> is called explicitly. The last mode is useful for long running units of work, where a <literal>Session</literal> is kept open and disconnected for a long time (see <xref linkend=\"transactions-optimistic-longsession\"/>)."
-msgstr "flush 동안에, 하나의 예외상황이 발생할 수도 있다(예를 들면. 만일 DML 오퍼레이션이 컨스트레인트를 위반할 경우). 예외상황들을 처리하는 것은 Hibernatem의 트랜잭션 특징에 관한 어떤 이해를 수반하며, 우리는 <xref linkend=\"transactions\"/>에서 그것을 논의한다."
+#. Tag: para
+#: session_api.xml:863
+#, no-c-format
+msgid ""
+"It is possible to change the default behavior so that flush occurs less "
+"frequently. The <literal>FlushMode</literal> class defines three different "
+"modes: only flush at commit time (and only when the Hibernate "
+"<literal>Transaction</literal> API is used), flush automatically using the "
+"explained routine, or never flush unless <literal>flush()</literal> is "
+"called explicitly. The last mode is useful for long running units of work, "
+"where a <literal>Session</literal> is kept open and disconnected for a long "
+"time (see <xref linkend=\"transactions-optimistic-longsession\"/>)."
+msgstr ""
+"flush가 너무 자주 발생하지 않도록 디폴트 행위를 변경하는 것이 가능하다. "
+"<literal>FlushMode</literal> 클래스는 세 개의 다른 모드들을 정의한다: 오직 커"
+"밋 시(그리고 Hibernate <literal>Transaction</literal> API가 사용될 때에만) "
+"flush 모드, 설명된 루틴을 사용하는 자동적인 flush 모드, 또는 <literal>flush()"
+"</literal>가 명시적으로 호출되지 않는 한 flush 시키지 않는 모드. 마지막 모드"
+"는 오래 동안 실행되는 작업 단위에 대해 유용하고, 여기서 <literal>Session</"
+"literal>은 열려진채로 유지되고 오랜 시간 동안 연결이 해제된 채로 유지된다. "
+"(<xref linkend=\"transactions-optimistic-longsession\"/>를 보라)."
-#: index.docbook:873
+#. Tag: programlisting
+#: session_api.xml:873
+#, no-c-format
msgid ""
- "<![CDATA[sess = sf.openSession();\n"
- "Transaction tx = sess.beginTransaction();\n"
- "sess.setFlushMode(FlushMode.COMMIT); // allow queries to return stale state\n"
- "\n"
- "Cat izi = (Cat) sess.load(Cat.class, id);\n"
- "izi.setName(iznizi);\n"
- "\n"
- "// might return stale data\n"
- "sess.find(\"from Cat as cat left outer join cat.kittens kitten\");\n"
- "\n"
- "// change to izi is not flushed!\n"
- "...\n"
- "tx.commit(); // flush occurs\n"
- "sess.close();]]>"
-msgstr "Transitive persistence(전이 영속)"
+"<![CDATA[sess = sf.openSession();\n"
+"Transaction tx = sess.beginTransaction();\n"
+"sess.setFlushMode(FlushMode.COMMIT); // allow queries to return stale state\n"
+"\n"
+"Cat izi = (Cat) sess.load(Cat.class, id);\n"
+"izi.setName(iznizi);\n"
+"\n"
+"// might return stale data\n"
+"sess.find(\"from Cat as cat left outer join cat.kittens kitten\");\n"
+"\n"
+"// change to izi is not flushed!\n"
+"...\n"
+"tx.commit(); // flush occurs\n"
+"sess.close();]]>"
+msgstr ""
-#: index.docbook:875
-msgid "During flush, an exception might occur (e.g. if a DML operation violates a constraint). Since handling exceptions involves some understanding of Hibernate's transactional behavior, we discuss it in <xref linkend=\"transactions\"/>."
-msgstr "특히 당신이 연관된 객체들의 그래프를 다룰 경우에, 특히 개별 객체들을 저장하고, 삭제하거나, 재첨부시키는 것이 꽤 번거롭다. 공통된 경우는 하나의 부모/자식 관계이다. 다음 예제를 검토하자:"
+#. Tag: para
+#: session_api.xml:875
+#, no-c-format
+msgid ""
+"During flush, an exception might occur (e.g. if a DML operation violates a "
+"constraint). Since handling exceptions involves some understanding of "
+"Hibernate's transactional behavior, we discuss it in <xref linkend="
+"\"transactions\"/>."
+msgstr ""
+"flush 동안에, 하나의 예외상황이 발생할 수도 있다(예를 들면. 만일 DML 오퍼레이"
+"션이 컨스트레인트를 위반할 경우). 예외상황들을 처리하는 것은 Hibernatem의 트"
+"랜잭션 특징에 관한 어떤 이해를 수반하며, 우리는 <xref linkend=\"transactions"
+"\"/>에서 그것을 논의한다."
-#: index.docbook:884
+#. Tag: title
+#: session_api.xml:884
+#, no-c-format
msgid "Transitive persistence"
-msgstr "만일 부모/자식 관계에서 자식들이 값(value) 타입(예를 들면. 주소들 또는 문자열들을 가진 하나의 콜렉션)일 경우, 그것들의 생명주기는 부모에 의존할 것이고 상태 변경들에 대해 편리한 \"케스케이딩\"에 더 이상의 액션이 필요하지 않을 것이다. 만일 부모가 저장될 때, 값(value)-타입의 자식 객체들도 마찬가지로 저장되고, 부모가 삭제될 때, 자식들이 삭제될 것이다. 이것은 심지어 콜렉션으로부터 하나의 자식을 제거하는 그런 오퍼레이션들에 대해서도 동작한다; Hibernate는 이것을 검출하고, 값(value)-타입의 객체들은 참조를 공유할 수 없으므로, 데이터베이스로부터 그 자식을 삭제시킨다."
+msgstr "Transitive persistence(전이 영속)"
-#: index.docbook:886
-msgid "It is quite cumbersome to save, delete, or reattach individual objects, especially if you deal with a graph of associated objects. A common case is a parent/child relationship. Consider the following example:"
-msgstr "이제 값(value) 타입이 아닌, 엔티티들인 부모와 자식 객체들을 가진 동일한 시나리오를 검토하자(예를 들면. 카테고리들과 아이템들, 또는 부모 고양이나 자식 고양이). 엔티티들은 그것들 자신의 생명주기를 갖고, 공유된 참조들을 지원하고 (따라서 콜렉션으로부터 하나의 엔티티를 제거하는 것은 그것이 삭제될 수 있음을 의미하지 않는다), 그리고 디폴트로 하나의 엔티티로부터 어떤 다른 연관된 엔티티들로의 상태의 케스케이딩은 존재하지 않는다. Hibernate는 디폴트로 <emphasis>도달가능성에 의한 영속성(persistence by reachability)</emphasis>을 구현하지 않는다."
+#. Tag: para
+#: session_api.xml:886
+#, no-c-format
+msgid ""
+"It is quite cumbersome to save, delete, or reattach individual objects, "
+"especially if you deal with a graph of associated objects. A common case is "
+"a parent/child relationship. Consider the following example:"
+msgstr ""
+"특히 당신이 연관된 객체들의 그래프를 다룰 경우에, 특히 개별 객체들을 저장하"
+"고, 삭제하거나, 재첨부시키는 것이 꽤 번거롭다. 공통된 경우는 하나의 부모/자"
+"식 관계이다. 다음 예제를 검토하자:"
-#: index.docbook:892
-msgid "If the children in a parent/child relationship would be value typed (e.g. a collection of addresses or strings), their life cycle would depend on the parent and no further action would be required for convenient \"cascading\" of state changes. When the parent is saved, the value-typed child objects are saved as well, when the parent is deleted, the children will be deleted, etc. This even works for operations such as the removal of a child from the collection; Hibernate will detect this and, since value-typed objects can't have shared references, delete the child from the database."
-msgstr "- <literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), evict(), replicate()</literal>를 포함하는- Hibernate 세션에 대한 각각의 기본 오퍼레이션에 대해서 하나의 대응하는 케스케이딩 스타일이 존재한다. 케스케이드 스타일들 각각은 <literal>create, merge, save-update, delete, lock, refresh, evict, replicate</literal>로 명명된다. 만일 당신이 하나의 오퍼레이션이 하나의 연관에 따라 케스케이딩되는 것을 원할 경우, 당신은 매핑 문서 내에 그것을 지시해야 한다. 예를 들면:"
+#. Tag: para
+#: session_api.xml:892
+#, no-c-format
+msgid ""
+"If the children in a parent/child relationship would be value typed (e.g. a "
+"collection of addresses or strings), their life cycle would depend on the "
+"parent and no further action would be required for convenient \"cascading\" "
+"of state changes. When the parent is saved, the value-typed child objects "
+"are saved as well, when the parent is deleted, the children will be deleted, "
+"etc. This even works for operations such as the removal of a child from the "
+"collection; Hibernate will detect this and, since value-typed objects can't "
+"have shared references, delete the child from the database."
+msgstr ""
+"만일 부모/자식 관계에서 자식들이 값(value) 타입(예를 들면. 주소들 또는 문자열"
+"들을 가진 하나의 콜렉션)일 경우, 그것들의 생명주기는 부모에 의존할 것이고 상"
+"태 변경들에 대해 편리한 \"케스케이딩\"에 더 이상의 액션이 필요하지 않을 것이"
+"다. 만일 부모가 저장될 때, 값(value)-타입의 자식 객체들도 마찬가지로 저장되"
+"고, 부모가 삭제될 때, 자식들이 삭제될 것이다. 이것은 심지어 콜렉션으로부터 하"
+"나의 자식을 제거하는 그런 오퍼레이션들에 대해서도 동작한다; Hibernate는 이것"
+"을 검출하고, 값(value)-타입의 객체들은 참조를 공유할 수 없으므로, 데이터베이"
+"스로부터 그 자식을 삭제시킨다."
-#: index.docbook:903
-msgid "Now consider the same scenario with parent and child objects being entities, not value-types (e.g. categories and items, or parent and child cats). Entities have their own life cycle, support shared references (so removing an entity from the collection does not mean it can be deleted), and there is by default no cascading of state from one entity to any other associated entities. Hibernate does not implement <emphasis>persistence by reachability</emphasis> by default."
-msgstr "<![CDATA[<one-to-one name=\"person\" cascade=\"persist\"/>]]>"
+#. Tag: para
+#: session_api.xml:903
+#, no-c-format
+msgid ""
+"Now consider the same scenario with parent and child objects being entities, "
+"not value-types (e.g. categories and items, or parent and child cats). "
+"Entities have their own life cycle, support shared references (so removing "
+"an entity from the collection does not mean it can be deleted), and there is "
+"by default no cascading of state from one entity to any other associated "
+"entities. Hibernate does not implement <emphasis>persistence by "
+"reachability</emphasis> by default."
+msgstr ""
+"이제 값(value) 타입이 아닌, 엔티티들인 부모와 자식 객체들을 가진 동일한 시나"
+"리오를 검토하자(예를 들면. 카테고리들과 아이템들, 또는 부모 고양이나 자식 고"
+"양이). 엔티티들은 그것들 자신의 생명주기를 갖고, 공유된 참조들을 지원하고 (따"
+"라서 콜렉션으로부터 하나의 엔티티를 제거하는 것은 그것이 삭제될 수 있음을 의"
+"미하지 않는다), 그리고 디폴트로 하나의 엔티티로부터 어떤 다른 연관된 엔티티들"
+"로의 상태의 케스케이딩은 존재하지 않는다. Hibernate는 디폴트로 <emphasis>도달"
+"가능성에 의한 영속성(persistence by reachability)</emphasis>을 구현하지 않는"
+"다."
-#: index.docbook:912
-msgid "For each basic operation of the Hibernate session - including <literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), evict(), replicate()</literal> - there is a corresponding cascade style. Respectively, the cascade styles are named <literal>create, merge, save-update, delete, lock, refresh, evict, replicate</literal>. If you want an operation to be cascaded along an association, you must indicate that in the mapping document. For example:"
-msgstr "케스케이딩 스타일들이 결합될 수도 있다:"
+#. Tag: para
+#: session_api.xml:912
+#, no-c-format
+msgid ""
+"For each basic operation of the Hibernate session - including "
+"<literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), "
+"evict(), replicate()</literal> - there is a corresponding cascade style. "
+"Respectively, the cascade styles are named <literal>create, merge, save-"
+"update, delete, lock, refresh, evict, replicate</literal>. If you want an "
+"operation to be cascaded along an association, you must indicate that in the "
+"mapping document. For example:"
+msgstr ""
+"- <literal>persist(), merge(), saveOrUpdate(), delete(), lock(), refresh(), "
+"evict(), replicate()</literal>를 포함하는- Hibernate 세션에 대한 각각의 기본 "
+"오퍼레이션에 대해서 하나의 대응하는 케스케이딩 스타일이 존재한다. 케스케이드 "
+"스타일들 각각은 <literal>create, merge, save-update, delete, lock, refresh, "
+"evict, replicate</literal>로 명명된다. 만일 당신이 하나의 오퍼레이션이 하나"
+"의 연관에 따라 케스케이딩되는 것을 원할 경우, 당신은 매핑 문서 내에 그것을 지"
+"시해야 한다. 예를 들면:"
-#: index.docbook:921
+#. Tag: programlisting
+#: session_api.xml:921
+#, no-c-format
msgid "<![CDATA[<one-to-one name=\"person\" cascade=\"persist\"/>]]>"
-msgstr "<![CDATA[<one-to-one name=\"person\" cascade=\"persist,delete,lock\"/>]]>"
+msgstr ""
-#: index.docbook:923
+#. Tag: para
+#: session_api.xml:923
+#, no-c-format
msgid "Cascade styles my be combined:"
-msgstr "당신은 <emphasis>모든</emphasis> 오퍼레이션들이 그 연관에 따라 케스케이드 되어야 함을 지정하는데 <literal>cascade=\"all\"</literal>을 사용할 수도 있다. 디폴트<literal>cascade=\"none\"</literal>은 오퍼레이션들이 케스케이드 되지 않을 것임을 지정한다."
+msgstr "케스케이딩 스타일들이 결합될 수도 있다:"
-#: index.docbook:927
-msgid "<![CDATA[<one-to-one name=\"person\" cascade=\"persist,delete,lock\"/>]]>"
-msgstr "특정한 케스케이드 스타일인, <literal>delete-orphan</literal>은 오직 one-to-many 연관들에만 적용되고, <literal>delete()</literal> 오퍼레이션이 그 연관으로부터 제거되는 임의의 자식 객체에 적용되어야 함을 나타낸다."
+#. Tag: programlisting
+#: session_api.xml:927
+#, no-c-format
+msgid ""
+"<![CDATA[<one-to-one name=\"person\" cascade=\"persist,delete,lock\"/>]]>"
+msgstr ""
-#: index.docbook:929
-msgid "You may even use <literal>cascade=\"all\"</literal> to specify that <emphasis>all</emphasis> operations should be cascaded along the association. The default <literal>cascade=\"none\"</literal> specifies that no operations are to be cascaded."
-msgstr "권장사항들 :"
+#. Tag: para
+#: session_api.xml:929
+#, no-c-format
+msgid ""
+"You may even use <literal>cascade=\"all\"</literal> to specify that "
+"<emphasis>all</emphasis> operations should be cascaded along the "
+"association. The default <literal>cascade=\"none\"</literal> specifies that "
+"no operations are to be cascaded."
+msgstr ""
+"당신은 <emphasis>모든</emphasis> 오퍼레이션들이 그 연관에 따라 케스케이드 되"
+"어야 함을 지정하는데 <literal>cascade=\"all\"</literal>을 사용할 수도 있다. "
+"디폴트<literal>cascade=\"none\"</literal>은 오퍼레이션들이 케스케이드 되지 않"
+"을 것임을 지정한다."
-#: index.docbook:935
-msgid "A special cascade style, <literal>delete-orphan</literal>, applies only to one-to-many associations, and indicates that the <literal>delete()</literal> operation should be applied to any child object that is removed from the association."
-msgstr "하나의 <literal><many-to-one></literal> 또는 <literal><many-to-many></literal> 연관에 대해 케스케이드를 가능하게 하는 것은 대개 의미가 없다. 케스케이드는 <literal><one-to-one></literal> 연관과 <literal><one-to-many></literal> 연관에 대해 종종 유용하다."
+#. Tag: para
+#: session_api.xml:935
+#, no-c-format
+msgid ""
+"A special cascade style, <literal>delete-orphan</literal>, applies only to "
+"one-to-many associations, and indicates that the <literal>delete()</literal> "
+"operation should be applied to any child object that is removed from the "
+"association."
+msgstr ""
+"특정한 케스케이드 스타일인, <literal>delete-orphan</literal>은 오직 one-to-"
+"many 연관들에만 적용되고, <literal>delete()</literal> 오퍼레이션이 그 연관으"
+"로부터 제거되는 임의의 자식 객체에 적용되어야 함을 나타낸다."
-#: index.docbook:942
+#. Tag: para
+#: session_api.xml:942
+#, no-c-format
msgid "Recommendations:"
-msgstr "만일 자식 객체의 수명이 그 부모 객체의 수명에 묶여져 있을 경우, <literal>cascade=\"all,delete-orphan\"</literal>을 지정함으로써 그것을 <emphasis>생명 주기 객체</emphasis>로 만들어라."
+msgstr "권장사항들 :"
-#: index.docbook:948
-msgid "It doesn't usually make sense to enable cascade on a <literal><many-to-one></literal> or <literal><many-to-many></literal> association. Cascade is often useful for <literal><one-to-one></literal> and <literal><one-to-many></literal> associations."
-msgstr "그 밖의 경우, 당신은 케스케이드를 전혀 필요로 하지 않을 수 있다. 그러나 만일 당신이 동일한 트랜잭션 내에서 부모와 자식에 대해 자주 함께 작업하게 될 것이라 생각되고, 당신 스스로 타이핑 하는 것을 절약하고자 원할 경우, <literal>cascade=\"persist,merge,save-update\"</literal>를 사용하는 것을 고려하라."
+#. Tag: para
+#: session_api.xml:948
+#, no-c-format
+msgid ""
+"It doesn't usually make sense to enable cascade on a <literal><many-to-"
+"one></literal> or <literal><many-to-many></literal> association. "
+"Cascade is often useful for <literal><one-to-one></literal> and "
+"<literal><one-to-many></literal> associations."
+msgstr ""
+"하나의 <literal><many-to-one></literal> 또는 <literal><many-to-"
+"many></literal> 연관에 대해 케스케이드를 가능하게 하는 것은 대개 의미가 없"
+"다. 케스케이드는 <literal><one-to-one></literal> 연관과 <literal><"
+"one-to-many></literal> 연관에 대해 종종 유용하다."
-#: index.docbook:956
-msgid "If the child object's lifespan is bounded by the lifespan of the parent object, make it a <emphasis>life cycle object</emphasis> by specifying <literal>cascade=\"all,delete-orphan\"</literal>."
-msgstr "<literal>cascade=\"all\"</literal>을 가진 (단일 값 연관이든 하나의 콜렉션이든) 하나의 연관을 매핑시키는 것은 그 연관을 부모의 저장/업데이트/삭제가 자식 또는 자식들의 저장/업데이트/삭제로 귀결되는 <emphasis>부모/자식</emphasis> 스타일의 관계로 마크한다."
+#. Tag: para
+#: session_api.xml:956
+#, no-c-format
+msgid ""
+"If the child object's lifespan is bounded by the lifespan of the parent "
+"object, make it a <emphasis>life cycle object</emphasis> by specifying "
+"<literal>cascade=\"all,delete-orphan\"</literal>."
+msgstr ""
+"만일 자식 객체의 수명이 그 부모 객체의 수명에 묶여져 있을 경우, "
+"<literal>cascade=\"all,delete-orphan\"</literal>을 지정함으로써 그것을 "
+"<emphasis>생명 주기 객체</emphasis>로 만들어라."
-#: index.docbook:963
-msgid "Otherwise, you might not need cascade at all. But if you think that you will often be working with the parent and children together in the same transaction, and you want to save yourself some typing, consider using <literal>cascade=\"persist,merge,save-update\"</literal>."
-msgstr "게다가, 하나의 영속 부모로부터 하나의 자식에 대한 단순한 참조는 자식의 저장/업데이트로 귀결될 것이다. 하지만 이 메타포는 불완전하다. 그것의 부모에 의해 참조 해제되는 자식은 <literal>cascade=\"delete-orphan\"</literal>으로 매핑된 하나의 <literal><one-to-many></literal> 연관의 경우를 제외하면, 자동적으로 삭제되지 <emphasis>않는다</emphasis>. 하나의 부모/자식 관계에 대한 케스케이딩 오퍼레이션의 정확한 의미는 다음과 같다:"
+#. Tag: para
+#: session_api.xml:963
+#, no-c-format
+msgid ""
+"Otherwise, you might not need cascade at all. But if you think that you will "
+"often be working with the parent and children together in the same "
+"transaction, and you want to save yourself some typing, consider using "
+"<literal>cascade=\"persist,merge,save-update\"</literal>."
+msgstr ""
+"그 밖의 경우, 당신은 케스케이드를 전혀 필요로 하지 않을 수 있다. 그러나 만일 "
+"당신이 동일한 트랜잭션 내에서 부모와 자식에 대해 자주 함께 작업하게 될 것이"
+"라 생각되고, 당신 스스로 타이핑 하는 것을 절약하고자 원할 경우, "
+"<literal>cascade=\"persist,merge,save-update\"</literal>를 사용하는 것을 고려"
+"하라."
-#: index.docbook:971
-msgid "Mapping an association (either a single valued association, or a collection) with <literal>cascade=\"all\"</literal> marks the association as a <emphasis>parent/child</emphasis> style relationship where save/update/delete of the parent results in save/update/delete of the child or children."
-msgstr "만일 부모가 <literal>persist()</literal>에 전달될 경우, 모든 자식들이 <literal>persist()</literal>에 전달된다"
+#. Tag: para
+#: session_api.xml:971
+#, no-c-format
+msgid ""
+"Mapping an association (either a single valued association, or a collection) "
+"with <literal>cascade=\"all\"</literal> marks the association as a "
+"<emphasis>parent/child</emphasis> style relationship where save/update/"
+"delete of the parent results in save/update/delete of the child or children."
+msgstr ""
+"<literal>cascade=\"all\"</literal>을 가진 (단일 값 연관이든 하나의 콜렉션이"
+"든) 하나의 연관을 매핑시키는 것은 그 연관을 부모의 저장/업데이트/삭제가 자식 "
+"또는 자식들의 저장/업데이트/삭제로 귀결되는 <emphasis>부모/자식</emphasis> 스"
+"타일의 관계로 마크한다."
-#: index.docbook:977
-msgid "Futhermore, a mere reference to a child from a persistent parent will result in save/update of the child. This metaphor is incomplete, however. A child which becomes unreferenced by its parent is <emphasis>not</emphasis> automatically deleted, except in the case of a <literal><one-to-many></literal> association mapped with <literal>cascade=\"delete-orphan\"</literal>. The precise semantics of cascading operations for a parent/child relationship are as follows:"
-msgstr "만일 부모가 <literal>merge()</literal>에 전달될 경우, 모든 자식들이 <literal>merge()</literal>에 전달된다"
+#. Tag: para
+#: session_api.xml:977
+#, no-c-format
+msgid ""
+"Futhermore, a mere reference to a child from a persistent parent will result "
+"in save/update of the child. This metaphor is incomplete, however. A child "
+"which becomes unreferenced by its parent is <emphasis>not</emphasis> "
+"automatically deleted, except in the case of a <literal><one-to-many></"
+"literal> association mapped with <literal>cascade=\"delete-orphan\"</"
+"literal>. The precise semantics of cascading operations for a parent/child "
+"relationship are as follows:"
+msgstr ""
+"게다가, 하나의 영속 부모로부터 하나의 자식에 대한 단순한 참조는 자식의 저장/"
+"업데이트로 귀결될 것이다. 하지만 이 메타포는 불완전하다. 그것의 부모에 의해 "
+"참조 해제되는 자식은 <literal>cascade=\"delete-orphan\"</literal>으로 매핑된 "
+"하나의 <literal><one-to-many></literal> 연관의 경우를 제외하면, 자동적"
+"으로 삭제되지 <emphasis>않는다</emphasis>. 하나의 부모/자식 관계에 대한 케스"
+"케이딩 오퍼레이션의 정확한 의미는 다음과 같다:"
-#: index.docbook:988
-msgid "If a parent is passed to <literal>persist()</literal>, all children are passed to <literal>persist()</literal>"
-msgstr "만일 부모가 <literal>save()</literal>, <literal>update()</literal> 또는 <literal>saveOrUpdate()</literal>에 전달될 경우, 모든 자식들이 <literal>saveOrUpdate()</literal>에 전달된다"
+#. Tag: para
+#: session_api.xml:988
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>persist()</literal>, all children are "
+"passed to <literal>persist()</literal>"
+msgstr ""
+"만일 부모가 <literal>persist()</literal>에 전달될 경우, 모든 자식들이 "
+"<literal>persist()</literal>에 전달된다"
-#: index.docbook:994
-msgid "If a parent is passed to <literal>merge()</literal>, all children are passed to <literal>merge()</literal>"
-msgstr "만일 transient 또는 detached 자식이 영속 부모에 의해 참조될 경우, 그것은 <literal>saveOrUpdate()</literal>에 전달된다"
+#. Tag: para
+#: session_api.xml:994
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>merge()</literal>, all children are passed "
+"to <literal>merge()</literal>"
+msgstr ""
+"만일 부모가 <literal>merge()</literal>에 전달될 경우, 모든 자식들이 "
+"<literal>merge()</literal>에 전달된다"
-#: index.docbook:1000
-msgid "If a parent is passed to <literal>save()</literal>, <literal>update()</literal> or <literal>saveOrUpdate()</literal>, all children are passed to <literal>saveOrUpdate()</literal>"
-msgstr "만일 부모가 삭제될 경우, 모든 자식들이 <literal>delete()</literal>에 전달된다"
+#. Tag: para
+#: session_api.xml:1000
+#, no-c-format
+msgid ""
+"If a parent is passed to <literal>save()</literal>, <literal>update()</"
+"literal> or <literal>saveOrUpdate()</literal>, all children are passed to "
+"<literal>saveOrUpdate()</literal>"
+msgstr ""
+"만일 부모가 <literal>save()</literal>, <literal>update()</literal> 또는 "
+"<literal>saveOrUpdate()</literal>에 전달될 경우, 모든 자식들이 "
+"<literal>saveOrUpdate()</literal>에 전달된다"
-#: index.docbook:1006
-msgid "If a transient or detached child becomes referenced by a persistent parent, it is passed to <literal>saveOrUpdate()</literal>"
-msgstr "만일 자식이 영속 부모에 의해 참조 해제 될 경우, <literal>cascade=\"delete-orphan\"</literal>이 아닌 한, <emphasis>특별한 어떤 것도 발생하지 않는다</emphasis> - 어플리케이션은 필요한 경우에 자식을 명시적으로 삭제해야 한다 -, <literal>cascade=\"delete-orphan\"</literal>인 경우에 \"orphaned(고아)\"인 경우 자식이 삭제된다."
+#. Tag: para
+#: session_api.xml:1006
+#, no-c-format
+msgid ""
+"If a transient or detached child becomes referenced by a persistent parent, "
+"it is passed to <literal>saveOrUpdate()</literal>"
+msgstr ""
+"만일 transient 또는 detached 자식이 영속 부모에 의해 참조될 경우, 그것은 "
+"<literal>saveOrUpdate()</literal>에 전달된다"
-#: index.docbook:1012
-msgid "If a parent is deleted, all children are passed to <literal>delete()</literal>"
-msgstr "마지막으로 오퍼레이션들의 케스케이딩이 <emphasis>호출 시점</emphasis>에서 또는 <emphasis>flush 시점</emphasis>에서 객체 그래프에 적용될 수 있음을 노트하라. 이용 가능할 경우에 모든 오퍼레이션들은 그 오퍼레이션이 실행될 때 도달 가능한 연관된 엔티티들에 대해 케스케이드 된다. 하지만 <literal>save-upate</literal>와 <literal>delete-orphan</literal>은 <literal>Session</literal>의 flush 동안에 도달 가능한 모든 연관된 엔티티들에 대해 이행적(transitive)이다."
+#. Tag: para
+#: session_api.xml:1012
+#, no-c-format
+msgid ""
+"If a parent is deleted, all children are passed to <literal>delete()</"
+"literal>"
+msgstr ""
+"만일 부모가 삭제될 경우, 모든 자식들이 <literal>delete()</literal>에 전달된다"
-#: index.docbook:1017
-msgid "If a child is dereferenced by a persistent parent, <emphasis>nothing special happens</emphasis> - the application should explicitly delete the child if necessary - unless <literal>cascade=\"delete-orphan\"</literal>, in which case the \"orphaned\" child is deleted."
-msgstr "메타데이터 사용하기"
+#. Tag: para
+#: session_api.xml:1017
+#, no-c-format
+msgid ""
+"If a child is dereferenced by a persistent parent, <emphasis>nothing special "
+"happens</emphasis> - the application should explicitly delete the child if "
+"necessary - unless <literal>cascade=\"delete-orphan\"</literal>, in which "
+"case the \"orphaned\" child is deleted."
+msgstr ""
+"만일 자식이 영속 부모에 의해 참조 해제 될 경우, <literal>cascade=\"delete-"
+"orphan\"</literal>이 아닌 한, <emphasis>특별한 어떤 것도 발생하지 않는다</"
+"emphasis> - 어플리케이션은 필요한 경우에 자식을 명시적으로 삭제해야 한다 -, "
+"<literal>cascade=\"delete-orphan\"</literal>인 경우에 \"orphaned(고아)\"인 경"
+"우 자식이 삭제된다."
-#: index.docbook:1026
-msgid "Finally, note that cascading of operations can be applied to an object graph at <emphasis>call time</emphasis> or at <emphasis>flush time</emphasis>. All operations, if enabled, are cascaded to associated entities reachable when the operation is executed. However, <literal>save-upate</literal> and <literal>delete-orphan</literal> are transitive for all associated entities reachable during flush of the <literal>Session</literal>."
-msgstr "Hibernate는 모든 엔티티와 값(value) 타입들을 가진 매우 풍부한 메타-레벨 모형을 필요로 한다. 시간이 지남에 따라, 이 모형은 어플리케이션 그 자체에 매우 유용하다. 예를 들어, 어플리케이션은 어느 객체들이 복사되어야 하는지(예를 들면 가변적인 값(value) 타입들) 그리고 어느 것이 복사되지 말아야 하는지(예를 들면, 불변의 value 타입들과 가능한 연관된 엔티티들)를 인지하는 \"스마트\" deep-copy 알고리즘을 구현하는데 Hibernate의 메타데이터를 사용할 수도 있다."
+#. Tag: para
+#: session_api.xml:1026
+#, no-c-format
+msgid ""
+"Finally, note that cascading of operations can be applied to an object graph "
+"at <emphasis>call time</emphasis> or at <emphasis>flush time</emphasis>. All "
+"operations, if enabled, are cascaded to associated entities reachable when "
+"the operation is executed. However, <literal>save-upate</literal> and "
+"<literal>delete-orphan</literal> are transitive for all associated entities "
+"reachable during flush of the <literal>Session</literal>."
+msgstr ""
+"마지막으로 오퍼레이션들의 케스케이딩이 <emphasis>호출 시점</emphasis>에서 또"
+"는 <emphasis>flush 시점</emphasis>에서 객체 그래프에 적용될 수 있음을 노트하"
+"라. 이용 가능할 경우에 모든 오퍼레이션들은 그 오퍼레이션이 실행될 때 도달 가"
+"능한 연관된 엔티티들에 대해 케스케이드 된다. 하지만 <literal>save-upate</"
+"literal>와 <literal>delete-orphan</literal>은 <literal>Session</literal>의 "
+"flush 동안에 도달 가능한 모든 연관된 엔티티들에 대해 이행적(transitive)이다."
-#: index.docbook:1038
+#. Tag: title
+#: session_api.xml:1038
+#, no-c-format
msgid "Using metadata"
-msgstr "Hibernate는 <literal>ClassMetadata</literal> 인터페이스와 <literal>CollectionMetadata</literal> 인터페이스 그리고 <literal>Type</literal> 계층구조를 통해 메타데이터를 노출시킨다. 메타데이터 인터페이스들의 인스턴스들은 <literal>SessionFactory</literal>로부터 얻어질 수도 있다."
+msgstr "메타데이터 사용하기"
-#: index.docbook:1040
-msgid "Hibernate requires a very rich meta-level model of all entity and value types. From time to time, this model is very useful to the application itself. For example, the application might use Hibernate's metadata to implement a \"smart\" deep-copy algorithm that understands which objects should be copied (eg. mutable value types) and which should not (eg. immutable value types and, possibly, associated entities)."
+#. Tag: para
+#: session_api.xml:1040
+#, no-c-format
+msgid ""
+"Hibernate requires a very rich meta-level model of all entity and value "
+"types. From time to time, this model is very useful to the application "
+"itself. For example, the application might use Hibernate's metadata to "
+"implement a \"smart\" deep-copy algorithm that understands which objects "
+"should be copied (eg. mutable value types) and which should not (eg. "
+"immutable value types and, possibly, associated entities)."
msgstr ""
- "<![CDATA[Cat fritz = ......;\n"
- "ClassMetadata catMeta = sessionfactory.getClassMetadata(Cat.class);\n"
- "\n"
- "Object[] propertyValues = catMeta.getPropertyValues(fritz);\n"
- "String[] propertyNames = catMeta.getPropertyNames();\n"
- "Type[] propertyTypes = catMeta.getPropertyTypes();\n"
- "\n"
- "// get a Map of all properties which are not collections or associations\n"
- "Map namedValues = new HashMap();\n"
- "for ( int i=0; i<propertyNames.length; i++ ) {\n"
- " if ( !propertyTypes[i].isEntityType() && !propertyTypes[i].isCollectionType() ) {\n"
- " namedValues.put( propertyNames[i], propertyValues[i] );\n"
- " }\n"
- "}]]>"
+"Hibernate는 모든 엔티티와 값(value) 타입들을 가진 매우 풍부한 메타-레벨 모형"
+"을 필요로 한다. 시간이 지남에 따라, 이 모형은 어플리케이션 그 자체에 매우 유"
+"용하다. 예를 들어, 어플리케이션은 어느 객체들이 복사되어야 하는지(예를 들면 "
+"가변적인 값(value) 타입들) 그리고 어느 것이 복사되지 말아야 하는지(예를 들"
+"면, 불변의 value 타입들과 가능한 연관된 엔티티들)를 인지하는 \"스마트\" deep-"
+"copy 알고리즘을 구현하는데 Hibernate의 메타데이터를 사용할 수도 있다."
-#: index.docbook:1047
-msgid "Hibernate exposes metadata via the <literal>ClassMetadata</literal> and <literal>CollectionMetadata</literal> interfaces and the <literal>Type</literal> hierarchy. Instances of the metadata interfaces may be obtained from the <literal>SessionFactory</literal>."
+#. Tag: para
+#: session_api.xml:1047
+#, no-c-format
+msgid ""
+"Hibernate exposes metadata via the <literal>ClassMetadata</literal> and "
+"<literal>CollectionMetadata</literal> interfaces and the <literal>Type</"
+"literal> hierarchy. Instances of the metadata interfaces may be obtained "
+"from the <literal>SessionFactory</literal>."
msgstr ""
+"Hibernate는 <literal>ClassMetadata</literal> 인터페이스와 "
+"<literal>CollectionMetadata</literal> 인터페이스 그리고 <literal>Type</"
+"literal> 계층구조를 통해 메타데이터를 노출시킨다. 메타데이터 인터페이스들의 "
+"인스턴스들은 <literal>SessionFactory</literal>로부터 얻어질 수도 있다."
-#: index.docbook:1054
+#. Tag: programlisting
+#: session_api.xml:1054
+#, no-c-format
msgid ""
- "<![CDATA[Cat fritz = ......;\n"
- "ClassMetadata catMeta = sessionfactory.getClassMetadata(Cat.class);\n"
- "\n"
- "Object[] propertyValues = catMeta.getPropertyValues(fritz);\n"
- "String[] propertyNames = catMeta.getPropertyNames();\n"
- "Type[] propertyTypes = catMeta.getPropertyTypes();\n"
- "\n"
- "// get a Map of all properties which are not collections or associations\n"
- "Map namedValues = new HashMap();\n"
- "for ( int i=0; i<propertyNames.length; i++ ) {\n"
- " if ( !propertyTypes[i].isEntityType() && !propertyTypes[i].isCollectionType() ) {\n"
- " namedValues.put( propertyNames[i], propertyValues[i] );\n"
- " }\n"
- "}]]>"
+"<![CDATA[Cat fritz = ......;\n"
+"ClassMetadata catMeta = sessionfactory.getClassMetadata(Cat.class);\n"
+"\n"
+"Object[] propertyValues = catMeta.getPropertyValues(fritz);\n"
+"String[] propertyNames = catMeta.getPropertyNames();\n"
+"Type[] propertyTypes = catMeta.getPropertyTypes();\n"
+"\n"
+"// get a Map of all properties which are not collections or associations\n"
+"Map namedValues = new HashMap();\n"
+"for ( int i=0; i<propertyNames.length; i++ ) {\n"
+" if ( !propertyTypes[i].isEntityType() && !propertyTypes[i]."
+"isCollectionType() ) {\n"
+" namedValues.put( propertyNames[i], propertyValues[i] );\n"
+" }\n"
+"}]]>"
msgstr ""
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+#~ msgid "UPDATE"
+#~ msgstr "UPDATE"
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+#~ msgid "DELETE"
+#~ msgstr "DELETE"
+#~ msgid "state management"
+#~ msgstr "상태 관리"
+
+#~ msgid "statements"
+#~ msgstr "문장들"
+
+#~ msgid "Connection"
+#~ msgstr "session.connection()"
+
+#~ msgid "session.connection()"
+#~ msgstr "Connection"
Modified: core/trunk/documentation/manual/translations/ko-KR/content/toolset_guide.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/toolset_guide.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/toolset_guide.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,744 +1,1195 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: toolset_guide.xml:5
+#, no-c-format
msgid "Toolset Guide"
msgstr "도구셋 안내"
-#: index.docbook:7
-msgid "Roundtrip engineering with Hibernate is possible using a set of Eclipse plugins, commandline tools, as well as Ant tasks."
-msgstr "Hibernate에 대한 라운드트립 엔지니어링은 Eclipse 플러그인 세트, 명령라인 도구들, 뿐만 아니라 Ant 태스크들을 사용하여 가능하다."
+#. Tag: para
+#: toolset_guide.xml:7
+#, no-c-format
+msgid ""
+"Roundtrip engineering with Hibernate is possible using a set of Eclipse "
+"plugins, commandline tools, as well as Ant tasks."
+msgstr ""
+"Hibernate에 대한 라운드트립 엔지니어링은 Eclipse 플러그인 세트, 명령라인 도구"
+"들, 뿐만 아니라 Ant 태스크들을 사용하여 가능하다."
-#: index.docbook:12
-msgid "The <emphasis>Hibernate Tools</emphasis> currently include plugins for the Eclipse IDE as well as Ant tasks for reverse engineering of existing databases:"
-msgstr "<emphasis>Hibernate 도구들</emphasis>은 현재 기존 데이터베이스들에 대한 리버스 엔지니어링을 위해 Ant 태스크들 뿐만 아니라 Eclipse IDE용 플러그인들을 포함하고 있다:"
+#. Tag: para
+#: toolset_guide.xml:12
+#, no-c-format
+msgid ""
+"The <emphasis>Hibernate Tools</emphasis> currently include plugins for the "
+"Eclipse IDE as well as Ant tasks for reverse engineering of existing "
+"databases:"
+msgstr ""
+"<emphasis>Hibernate 도구들</emphasis>은 현재 기존 데이터베이스들에 대한 리버"
+"스 엔지니어링을 위해 Ant 태스크들 뿐만 아니라 Eclipse IDE용 플러그인들을 포함"
+"하고 있다:"
-#: index.docbook:18
-msgid "<emphasis>Mapping Editor:</emphasis> An editor for Hibernate XML mapping files, supporting auto-completion and syntax highlighting. It also supports semantic auto-completion for class names and property/field names, making it much more versatile than a normal XML editor."
-msgstr "<emphasis>매핑 편집기:</emphasis> 자동 완성 기능과 구문 강조를 지원하는 Hibernate XML 매핑 파일들에 대한 편집기. 그것은 또한 통상의 XML 편집기 보다 훨씬 더 융통성 있게 만들어서 클래스 이름들과 프로퍼티/필드 이름들에 대한 의미론적 자동 완성 기능을 지원한다."
+#. Tag: para
+#: toolset_guide.xml:18
+#, no-c-format
+msgid ""
+"<emphasis>Mapping Editor:</emphasis> An editor for Hibernate XML mapping "
+"files, supporting auto-completion and syntax highlighting. It also supports "
+"semantic auto-completion for class names and property/field names, making it "
+"much more versatile than a normal XML editor."
+msgstr ""
+"<emphasis>매핑 편집기:</emphasis> 자동 완성 기능과 구문 강조를 지원하는 "
+"Hibernate XML 매핑 파일들에 대한 편집기. 그것은 또한 통상의 XML 편집기 보다 "
+"훨씬 더 융통성 있게 만들어서 클래스 이름들과 프로퍼티/필드 이름들에 대한 의미"
+"론적 자동 완성 기능을 지원한다."
-#: index.docbook:23
-msgid "<emphasis>Console:</emphasis> The console is a new view in Eclipse. In addition to a tree overview of your console configurations, you also get an interactive view of your persistent classes and their relationships. The console allows you to execute HQL queries against your database and browse the result directly in Eclipse."
-msgstr "<emphasis>콘솔:</emphasis> 콘솔은 Eclipse에서 새로운 뷰이다. 당신의 콘솔 구성들에 대한 tree overview에 덧붙여, 당신은 또한 당신의 영속 클래스들과 그것들의 관계들에 대한 상호작용 뷰를 얻는다. 콘솔은 당신의 데이터베이스에 대해 HQL 질의들을 실행하고 그 결과를 Eclipse 내에서 직접 브라우징 하도록 당신에게 허용해준다."
+#. Tag: para
+#: toolset_guide.xml:23
+#, no-c-format
+msgid ""
+"<emphasis>Console:</emphasis> The console is a new view in Eclipse. In "
+"addition to a tree overview of your console configurations, you also get an "
+"interactive view of your persistent classes and their relationships. The "
+"console allows you to execute HQL queries against your database and browse "
+"the result directly in Eclipse."
+msgstr ""
+"<emphasis>콘솔:</emphasis> 콘솔은 Eclipse에서 새로운 뷰이다. 당신의 콘솔 구성"
+"들에 대한 tree overview에 덧붙여, 당신은 또한 당신의 영속 클래스들과 그것들"
+"의 관계들에 대한 상호작용 뷰를 얻는다. 콘솔은 당신의 데이터베이스에 대해 HQL "
+"질의들을 실행하고 그 결과를 Eclipse 내에서 직접 브라우징 하도록 당신에게 허용"
+"해준다."
-#: index.docbook:30
-msgid "<emphasis>Development Wizards:</emphasis> Several wizards are provided with the Hibernate Eclipse tools; you can use a wizard to quickly generate Hibernate configuration (cfg.xml) files, or you may even completely reverse engineer an existing database schema into POJO source files and Hibernate mapping files. The reverse engineering wizard supports customizable templates."
-msgstr "<emphasis>개발 마법사들:</emphasis> 몇몇 마법사들이 Hibernate Eclipse 도구들에 제공된다; 당신은 Hibernate 구성 (cfg.xml) 파일들을 빠르게 생성시키는데 마법사를 사용하거나, 심지어 당신은 기존 데이터베이스 스키마를 POJO 소스 파일들과 Hibernate 매핑 파일들로 완전하게 리버스 엔지니어링할 수도 있다. 리버스 엔지니어링 마법사는 맞춤 가능한 템플릿들을 제공한다."
+#. Tag: para
+#: toolset_guide.xml:30
+#, no-c-format
+msgid ""
+"<emphasis>Development Wizards:</emphasis> Several wizards are provided with "
+"the Hibernate Eclipse tools; you can use a wizard to quickly generate "
+"Hibernate configuration (cfg.xml) files, or you may even completely reverse "
+"engineer an existing database schema into POJO source files and Hibernate "
+"mapping files. The reverse engineering wizard supports customizable "
+"templates."
+msgstr ""
+"<emphasis>개발 마법사들:</emphasis> 몇몇 마법사들이 Hibernate Eclipse 도구들"
+"에 제공된다; 당신은 Hibernate 구성 (cfg.xml) 파일들을 빠르게 생성시키는데 마"
+"법사를 사용하거나, 심지어 당신은 기존 데이터베이스 스키마를 POJO 소스 파일들"
+"과 Hibernate 매핑 파일들로 완전하게 리버스 엔지니어링할 수도 있다. 리버스 엔"
+"지니어링 마법사는 맞춤 가능한 템플릿들을 제공한다."
-#: index.docbook:38
+#. Tag: emphasis
+#: toolset_guide.xml:38
+#, no-c-format
msgid "Ant Tasks:"
msgstr "Ant 태스크들:"
-#: index.docbook:43
-msgid "Please refer to the <emphasis>Hibernate Tools</emphasis> package and it's documentation for more information."
-msgstr "추가 정보는 <emphasis>Hibernate Tools</emphasis> 패키지와 그것의 문서를 참조하길 바란다."
+#. Tag: para
+#: toolset_guide.xml:43
+#, no-c-format
+msgid ""
+"Please refer to the <emphasis>Hibernate Tools</emphasis> package and it's "
+"documentation for more information."
+msgstr ""
+"추가 정보는 <emphasis>Hibernate Tools</emphasis> 패키지와 그것의 문서를 참조"
+"하길 바란다."
-#: index.docbook:48
-msgid "However, the Hibernate main package comes bundled with an integrated tool (it can even be used from \"inside\" Hibernate on-the-fly): <emphasis>SchemaExport</emphasis> aka <literal>hbm2ddl</literal>."
-msgstr "하지만 Hibernate 메인 패키지는 통합 도구에 번들화 되어 있다(그것은 심지어 플라이 상에서 Hibernate \"내에서\" 사용될 수 있다): <emphasis>SchemaExport</emphasis> 별칭은 <literal>hbm2ddl</literal>."
+#. Tag: para
+#: toolset_guide.xml:48
+#, no-c-format
+msgid ""
+"However, the Hibernate main package comes bundled with an integrated tool "
+"(it can even be used from \"inside\" Hibernate on-the-fly): "
+"<emphasis>SchemaExport</emphasis> aka <literal>hbm2ddl</literal>."
+msgstr ""
+"하지만 Hibernate 메인 패키지는 통합 도구에 번들화 되어 있다(그것은 심지어 플"
+"라이 상에서 Hibernate \"내에서\" 사용될 수 있다): <emphasis>SchemaExport</"
+"emphasis> 별칭은 <literal>hbm2ddl</literal>."
-#: index.docbook:55
+#. Tag: title
+#: toolset_guide.xml:55
+#, no-c-format
msgid "Automatic schema generation"
msgstr "자동적인 스키마 생성"
-#: index.docbook:57
-msgid "DDL may be generated from your mapping files by a Hibernate utility. The generated schema includes referential integrity constraints (primary and foreign keys) for entity and collection tables. Tables and sequences are also created for mapped identifier generators."
-msgstr "DDL은 Hibernate 유틸리티에 의해 당신의 매핑 파일들로부터 생성될 수 있다. 생성된 스키마는 엔티티 테이블과 콜렉션 테이블에 대한 참조 무결성 컨스트레인트들(프라이머리 키와 foreign 키들)을 포함한다. 테이블들과 시퀀스들은 또한 페칭된 식별자 생성기들에 대해 생성된다."
+#. Tag: para
+#: toolset_guide.xml:57
+#, no-c-format
+msgid ""
+"DDL may be generated from your mapping files by a Hibernate utility. The "
+"generated schema includes referential integrity constraints (primary and "
+"foreign keys) for entity and collection tables. Tables and sequences are "
+"also created for mapped identifier generators."
+msgstr ""
+"DDL은 Hibernate 유틸리티에 의해 당신의 매핑 파일들로부터 생성될 수 있다. 생성"
+"된 스키마는 엔티티 테이블과 콜렉션 테이블에 대한 참조 무결성 컨스트레인트들"
+"(프라이머리 키와 foreign 키들)을 포함한다. 테이블들과 시퀀스들은 또한 페칭된 "
+"식별자 생성기들에 대해 생성된다."
-#: index.docbook:64
-msgid "You <emphasis>must</emphasis> specify a SQL <literal>Dialect</literal> via the <literal>hibernate.dialect</literal> property when using this tool, as DDL is highly vendor specific."
-msgstr "DDL이 매우 벤더에 특정하므로, 이 도구를 사용할 때 당신은 <literal>hibernate.dialect</literal> 프로퍼티를 통해 한 개의 SQL <literal>Dialect</literal>를 지정<emphasis>해야 한다</emphasis>."
+#. Tag: para
+#: toolset_guide.xml:64
+#, no-c-format
+msgid ""
+"You <emphasis>must</emphasis> specify a SQL <literal>Dialect</literal> via "
+"the <literal>hibernate.dialect</literal> property when using this tool, as "
+"DDL is highly vendor specific."
+msgstr ""
+"DDL이 매우 벤더에 특정하므로, 이 도구를 사용할 때 당신은 <literal>hibernate."
+"dialect</literal> 프로퍼티를 통해 한 개의 SQL <literal>Dialect</literal>를 지"
+"정<emphasis>해야 한다</emphasis>."
-#: index.docbook:70
+#. Tag: para
+#: toolset_guide.xml:70
+#, no-c-format
msgid "First, customize your mapping files to improve the generated schema."
-msgstr "먼저 생성된 스키마를 개선시키기 위해 당신의 매핑 파일들을 맞춤화 시켜라."
+msgstr ""
+"먼저 생성된 스키마를 개선시키기 위해 당신의 매핑 파일들을 맞춤화 시켜라."
-#: index.docbook:75
+#. Tag: title
+#: toolset_guide.xml:75
+#, no-c-format
msgid "Customizing the schema"
msgstr "스키마 맞춤화 시키기"
-#: index.docbook:77
-msgid "Many Hibernate mapping elements define optional attributes named <literal>length</literal>, <literal>precision</literal> and <literal>scale</literal>. You may set the length, precision and scale of a column with this attribute."
-msgstr "많은 Hibernate 매핑 요소들은 <literal>length</literal>로 명명된 옵션 속성을 정의한다. 당신은 이 속성으로 컬럼의 길이를 설정할 수 있다.(또는 numeric/decimal 데이터 타입들, 배정도에 대해 ). 많은 Hibernate 매칭 요소들은 <literal>length</literal>, <literal>precision</literal> 그리고 <literal>scale</literal>로 명명된 옵션 속성들을 정의하고 있다. 당신은 이 속성으로서 컬럼이 길이, 정밀도, 크기를 설정할 수 있다."
+#. Tag: para
+#: toolset_guide.xml:77
+#, no-c-format
+msgid ""
+"Many Hibernate mapping elements define optional attributes named "
+"<literal>length</literal>, <literal>precision</literal> and <literal>scale</"
+"literal>. You may set the length, precision and scale of a column with this "
+"attribute."
+msgstr ""
+"많은 Hibernate 매핑 요소들은 <literal>length</literal>로 명명된 옵션 속성을 "
+"정의한다. 당신은 이 속성으로 컬럼의 길이를 설정할 수 있다.(또는 numeric/"
+"decimal 데이터 타입들, 배정도에 대해 ). 많은 Hibernate 매칭 요소들은 "
+"<literal>length</literal>, <literal>precision</literal> 그리고 "
+"<literal>scale</literal>로 명명된 옵션 속성들을 정의하고 있다. 당신은 이 속성"
+"으로서 컬럼이 길이, 정밀도, 크기를 설정할 수 있다."
-#: index.docbook:84
+#. Tag: programlisting
+#: toolset_guide.xml:84
+#, no-c-format
msgid "<![CDATA[<property name=\"zip\" length=\"5\"/>]]>"
-msgstr "<![CDATA[<property name=\"zip\" length=\"5\"/>]]>"
+msgstr ""
-#: index.docbook:85
+#. Tag: programlisting
+#: toolset_guide.xml:85
+#, no-c-format
msgid "<![CDATA[<property name=\"balance\" precision=\"12\" scale=\"2\"/>]]>"
-msgstr "<![CDATA[<property name=\"balance\" precision=\"12\" scale=\"2\"/>]]>"
+msgstr ""
-#: index.docbook:87
-msgid "Some tags also accept a <literal>not-null</literal> attribute (for generating a <literal>NOT NULL</literal> constraint on table columns) and a <literal>unique</literal> attribute (for generating <literal>UNIQUE</literal> constraint on table columns)."
-msgstr "몇몇 태그들은 또한 (테이블 컬럼들에 대한 <literal>NOT NULL</literal> 컨스트레인트를 생성시키는) <literal>not-null</literal> 속성과 (테이블 컬럼들에 대한 <literal>UNIQUE</literal> 컨스트레인트를 생성시키는) <literal>unique</literal> 속성을 수용한다."
+#. Tag: para
+#: toolset_guide.xml:87
+#, no-c-format
+msgid ""
+"Some tags also accept a <literal>not-null</literal> attribute (for "
+"generating a <literal>NOT NULL</literal> constraint on table columns) and a "
+"<literal>unique</literal> attribute (for generating <literal>UNIQUE</"
+"literal> constraint on table columns)."
+msgstr ""
+"몇몇 태그들은 또한 (테이블 컬럼들에 대한 <literal>NOT NULL</literal> 컨스트레"
+"인트를 생성시키는) <literal>not-null</literal> 속성과 (테이블 컬럼들에 대한 "
+"<literal>UNIQUE</literal> 컨스트레인트를 생성시키는) <literal>unique</"
+"literal> 속성을 수용한다."
-#: index.docbook:93
-msgid "<![CDATA[<many-to-one name=\"bar\" column=\"barId\" not-null=\"true\"/>]]>"
-msgstr "<![CDATA[<many-to-one name=\"bar\" column=\"barId\" not-null=\"true\"/>]]>"
+#. Tag: programlisting
+#: toolset_guide.xml:93
+#, no-c-format
+msgid ""
+"<![CDATA[<many-to-one name=\"bar\" column=\"barId\" not-null=\"true\"/>]]>"
+msgstr ""
-#: index.docbook:95
-msgid "<![CDATA[<element column=\"serialNumber\" type=\"long\" not-null=\"true\" unique=\"true\"/>]]>"
-msgstr "<![CDATA[<element column=\"serialNumber\" type=\"long\" not-null=\"true\" unique=\"true\"/>]]>"
+#. Tag: programlisting
+#: toolset_guide.xml:95
+#, no-c-format
+msgid ""
+"<![CDATA[<element column=\"serialNumber\" type=\"long\" not-null=\"true\" "
+"unique=\"true\"/>]]>"
+msgstr ""
-#: index.docbook:97
-msgid "A <literal>unique-key</literal> attribute may be used to group columns in a single unique key constraint. Currently, the specified value of the <literal>unique-key</literal> attribute is <emphasis>not</emphasis> used to name the constraint in the generated DDL, only to group the columns in the mapping file."
-msgstr "<literal>unique-key</literal> 속성은 하나의 유일 키 컨스트레인트로 컬럼들을 그룹지우는데 사용될 수도 있다. 현재 <literal>unique-key</literal> 속성의 지정된 값은 산출된 DDL내에서 컨스트레인트를 명명하는데 사용되지 <emphasis>않고</emphasis>, 오직 매핑 파일 내에서 컬럼들을 그룹 지우는데 사용된다."
+#. Tag: para
+#: toolset_guide.xml:97
+#, no-c-format
+msgid ""
+"A <literal>unique-key</literal> attribute may be used to group columns in a "
+"single unique key constraint. Currently, the specified value of the "
+"<literal>unique-key</literal> attribute is <emphasis>not</emphasis> used to "
+"name the constraint in the generated DDL, only to group the columns in the "
+"mapping file."
+msgstr ""
+"<literal>unique-key</literal> 속성은 하나의 유일 키 컨스트레인트로 컬럼들을 "
+"그룹지우는데 사용될 수도 있다. 현재 <literal>unique-key</literal> 속성의 지정"
+"된 값은 산출된 DDL내에서 컨스트레인트를 명명하는데 사용되지 <emphasis>않고</"
+"emphasis>, 오직 매핑 파일 내에서 컬럼들을 그룹 지우는데 사용된다."
-#: index.docbook:105
+#. Tag: programlisting
+#: toolset_guide.xml:105
+#, no-c-format
msgid ""
- "<![CDATA[<many-to-one name=\"org\" column=\"orgId\" unique-key=\"OrgEmployeeId\"/>\n"
- "<property name=\"employeeId\" unique-key=\"OrgEmployee\"/>]]>"
+"<![CDATA[<many-to-one name=\"org\" column=\"orgId\" unique-key="
+"\"OrgEmployeeId\"/>\n"
+"<property name=\"employeeId\" unique-key=\"OrgEmployee\"/>]]>"
msgstr ""
- "<![CDATA[<many-to-one name=\"org\" column=\"orgId\" unique-key=\"OrgEmployeeId\"/>\n"
- "<property name=\"employeeId\" unique-key=\"OrgEmployee\"/>]]>"
-#: index.docbook:107
-msgid "An <literal>index</literal> attribute specifies the name of an index that will be created using the mapped column or columns. Multiple columns may be grouped into the same index, simply by specifying the same index name."
-msgstr "<literal>index</literal> 속성은 매핑된 컬럼 또는 컬럼들을 사용하여 생성될 인덱스의 이름을 지정한다. 간단하게 동일한 인덱스 이름을 지정함으로써 여러 컬럼들이 동일한 인덱스 내로 그룹지워질 수도 있다."
+#. Tag: para
+#: toolset_guide.xml:107
+#, no-c-format
+msgid ""
+"An <literal>index</literal> attribute specifies the name of an index that "
+"will be created using the mapped column or columns. Multiple columns may be "
+"grouped into the same index, simply by specifying the same index name."
+msgstr ""
+"<literal>index</literal> 속성은 매핑된 컬럼 또는 컬럼들을 사용하여 생성될 인"
+"덱스의 이름을 지정한다. 간단하게 동일한 인덱스 이름을 지정함으로써 여러 컬럼"
+"들이 동일한 인덱스 내로 그룹지워질 수도 있다."
-#: index.docbook:113
+#. Tag: programlisting
+#: toolset_guide.xml:113
+#, no-c-format
msgid ""
- "<![CDATA[<property name=\"lastName\" index=\"CustName\"/>\n"
- "<property name=\"firstName\" index=\"CustName\"/>]]>"
+"<![CDATA[<property name=\"lastName\" index=\"CustName\"/>\n"
+"<property name=\"firstName\" index=\"CustName\"/>]]>"
msgstr ""
- "<![CDATA[<property name=\"lastName\" index=\"CustName\"/>\n"
- "<property name=\"firstName\" index=\"CustName\"/>]]>"
-#: index.docbook:115
-msgid "A <literal>foreign-key</literal> attribute may be used to override the name of any generated foreign key constraint."
-msgstr "<literal>foreign-key</literal> 속성은 임의의 산출된 foreign 키 컨스트레인트의 이름을 오버라이드 시키는데 사용될 수 도 있다."
+#. Tag: para
+#: toolset_guide.xml:115
+#, no-c-format
+msgid ""
+"A <literal>foreign-key</literal> attribute may be used to override the name "
+"of any generated foreign key constraint."
+msgstr ""
+"<literal>foreign-key</literal> 속성은 임의의 산출된 foreign 키 컨스트레인트"
+"의 이름을 오버라이드 시키는데 사용될 수 도 있다."
-#: index.docbook:120
-msgid "<![CDATA[<many-to-one name=\"bar\" column=\"barId\" foreign-key=\"FKFooBar\"/>]]>"
-msgstr "<![CDATA[<many-to-one name=\"bar\" column=\"barId\" foreign-key=\"FKFooBar\"/>]]>"
+#. Tag: programlisting
+#: toolset_guide.xml:120
+#, no-c-format
+msgid ""
+"<![CDATA[<many-to-one name=\"bar\" column=\"barId\" foreign-key=\"FKFooBar\"/"
+">]]>"
+msgstr ""
-#: index.docbook:122
-msgid "Many mapping elements also accept a child <literal><column></literal> element. This is particularly useful for mapping multi-column types:"
-msgstr "많은 매핑 요소들은 또한 하나의 자식 <literal><column></literal> 요소를 허용한다. 이것은 특히 다중 컬럼 타입들을 매핑하는데 유용하다:"
+#. Tag: para
+#: toolset_guide.xml:122
+#, no-c-format
+msgid ""
+"Many mapping elements also accept a child <literal><column></literal> "
+"element. This is particularly useful for mapping multi-column types:"
+msgstr ""
+"많은 매핑 요소들은 또한 하나의 자식 <literal><column></literal> 요소를 "
+"허용한다. 이것은 특히 다중 컬럼 타입들을 매핑하는데 유용하다:"
-#: index.docbook:127
+#. Tag: programlisting
+#: toolset_guide.xml:127
+#, no-c-format
msgid ""
- "<![CDATA[<property name=\"name\" type=\"my.customtypes.Name\"/>\n"
- " <column name=\"last\" not-null=\"true\" index=\"bar_idx\" length=\"30\"/>\n"
- " <column name=\"first\" not-null=\"true\" index=\"bar_idx\" length=\"20\"/>\n"
- " <column name=\"initial\"/>\n"
- "</property>]]>"
+"<![CDATA[<property name=\"name\" type=\"my.customtypes.Name\"/>\n"
+" <column name=\"last\" not-null=\"true\" index=\"bar_idx\" length=\"30\"/"
+">\n"
+" <column name=\"first\" not-null=\"true\" index=\"bar_idx\" length=\"20\"/"
+">\n"
+" <column name=\"initial\"/>\n"
+"</property>]]>"
msgstr ""
- "<![CDATA[<property name=\"name\" type=\"my.customtypes.Name\"/>\n"
- " <column name=\"last\" not-null=\"true\" index=\"bar_idx\" length=\"30\"/>\n"
- " <column name=\"first\" not-null=\"true\" index=\"bar_idx\" length=\"20\"/>\n"
- " <column name=\"initial\"/>\n"
- "</property>]]>"
-#: index.docbook:129
-msgid "The <literal>default</literal> attribute lets you specify a default value for a column (you should assign the same value to the mapped property before saving a new instance of the mapped class)."
-msgstr "다른 방법으로, 이들 요소들은 또한 자식 <literal><column></literal> 요소를 수용한다. 이것은 다중 컬럼 타입들에 특히 유용하다: <literal>default</literal> 속성은 당신으로 하여금 하나의 컬럼에 대한 디폴트 값을 설정하도록 한다(당신은 매핑된 클래스의 새로운 인스턴스를 저장하기 전에 매핑된 프로퍼티에 동일한 값을 할당하게 될 것이다)."
+#. Tag: para
+#: toolset_guide.xml:129
+#, no-c-format
+msgid ""
+"The <literal>default</literal> attribute lets you specify a default value "
+"for a column (you should assign the same value to the mapped property before "
+"saving a new instance of the mapped class)."
+msgstr ""
+"다른 방법으로, 이들 요소들은 또한 자식 <literal><column></literal> 요소"
+"를 수용한다. 이것은 다중 컬럼 타입들에 특히 유용하다: <literal>default</"
+"literal> 속성은 당신으로 하여금 하나의 컬럼에 대한 디폴트 값을 설정하도록 한"
+"다(당신은 매핑된 클래스의 새로운 인스턴스를 저장하기 전에 매핑된 프로퍼티에 "
+"동일한 값을 할당하게 될 것이다)."
-#: index.docbook:135
+#. Tag: programlisting
+#: toolset_guide.xml:135
+#, no-c-format
msgid ""
- "<![CDATA[<property name=\"credits\" type=\"integer\" insert=\"false\">\n"
- " <column name=\"credits\" default=\"10\"/>\n"
- "</property>]]>"
+"<![CDATA[<property name=\"credits\" type=\"integer\" insert=\"false\">\n"
+" <column name=\"credits\" default=\"10\"/>\n"
+"</property>]]>"
msgstr ""
- "<![CDATA[<property name=\"credits\" type=\"integer\" insert=\"false\">\n"
- " <column name=\"credits\" default=\"10\"/>\n"
- "</property>]]>"
-#: index.docbook:137
+#. Tag: programlisting
+#: toolset_guide.xml:137
+#, no-c-format
msgid ""
- "<![CDATA[<version name=\"version\" type=\"integer\" insert=\"false\">\n"
- " <column name=\"version\" default=\"0\"/>\n"
- "</property>]]>"
+"<![CDATA[<version name=\"version\" type=\"integer\" insert=\"false\">\n"
+" <column name=\"version\" default=\"0\"/>\n"
+"</property>]]>"
msgstr ""
- "<![CDATA[<version name=\"version\" type=\"integer\" insert=\"false\">\n"
- " <column name=\"version\" default=\"0\"/>\n"
- "</property>]]>"
-#: index.docbook:139
-msgid "The <literal>sql-type</literal> attribute allows the user to override the default mapping of a Hibernate type to SQL datatype."
-msgstr "<literal>sql-type</literal> 속성은 SQL 데이터타입에 대한 Hibernate 타입의 디폴트 매핑을 오버라이드 시키는 것을 사용자에게 허용해준다."
+#. Tag: para
+#: toolset_guide.xml:139
+#, no-c-format
+msgid ""
+"The <literal>sql-type</literal> attribute allows the user to override the "
+"default mapping of a Hibernate type to SQL datatype."
+msgstr ""
+"<literal>sql-type</literal> 속성은 SQL 데이터타입에 대한 Hibernate 타입의 디"
+"폴트 매핑을 오버라이드 시키는 것을 사용자에게 허용해준다."
-#: index.docbook:144
+#. Tag: programlisting
+#: toolset_guide.xml:144
+#, no-c-format
msgid ""
- "<![CDATA[<property name=\"balance\" type=\"float\">\n"
- " <column name=\"balance\" sql-type=\"decimal(13,3)\"/>\n"
- "</property>]]>"
+"<![CDATA[<property name=\"balance\" type=\"float\">\n"
+" <column name=\"balance\" sql-type=\"decimal(13,3)\"/>\n"
+"</property>]]>"
msgstr ""
- "<![CDATA[<property name=\"balance\" type=\"float\">\n"
- " <column name=\"balance\" sql-type=\"decimal(13,3)\"/>\n"
- "</property>]]>"
-#: index.docbook:146
-msgid "The <literal>check</literal> attribute allows you to specify a check constraint."
-msgstr "<literal>check</literal> 속성은 check 컨스트레인트를 지정하는 것을 당신에게 허용해준다."
+#. Tag: para
+#: toolset_guide.xml:146
+#, no-c-format
+msgid ""
+"The <literal>check</literal> attribute allows you to specify a check "
+"constraint."
+msgstr ""
+"<literal>check</literal> 속성은 check 컨스트레인트를 지정하는 것을 당신에게 "
+"허용해준다."
-#: index.docbook:150
+#. Tag: programlisting
+#: toolset_guide.xml:150
+#, no-c-format
msgid ""
- "<![CDATA[<property name=\"foo\" type=\"integer\">\n"
- " <column name=\"foo\" check=\"foo > 10\"/>\n"
- "</property>]]>"
+"<![CDATA[<property name=\"foo\" type=\"integer\">\n"
+" <column name=\"foo\" check=\"foo > 10\"/>\n"
+"</property>]]>"
msgstr ""
- "<![CDATA[<property name=\"foo\" type=\"integer\">\n"
- " <column name=\"foo\" check=\"foo > 10\"/>\n"
- "</property>]]>"
-#: index.docbook:152
+#. Tag: programlisting
+#: toolset_guide.xml:152
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Foo\" table=\"foos\" check=\"bar < 100.0\">\n"
- " ...\n"
- " <property name=\"bar\" type=\"float\"/>\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Foo\" table=\"foos\" check=\"bar < 100.0\">\n"
+" ...\n"
+" <property name=\"bar\" type=\"float\"/>\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Foo\" table=\"foos\" check=\"bar < 100.0\">\n"
- " ...\n"
- " <property name=\"bar\" type=\"float\"/>\n"
- "</class>]]>"
-#: index.docbook:156
+#. Tag: title
+#: toolset_guide.xml:156
+#, no-c-format
msgid "Summary"
-msgstr "<title>요약</title>"
+msgstr "요약"
-#: index.docbook:163
+#. Tag: entry
+#: toolset_guide.xml:163
+#, no-c-format
msgid "Attribute"
-msgstr "<entry>속성</entry>"
+msgstr "속성"
-#: index.docbook:164
+#. Tag: entry
+#: toolset_guide.xml:164
+#, no-c-format
msgid "Values"
-msgstr "<entry>값들</entry>"
+msgstr "값들"
-#: index.docbook:165
+#. Tag: entry
+#: toolset_guide.xml:165
+#, no-c-format
msgid "Interpretation"
-msgstr "<entry>해석</entry>"
+msgstr "해석"
-#: index.docbook:170
+#. Tag: literal
+#: toolset_guide.xml:170
+#, no-c-format
msgid "length"
msgstr "length"
-#: index.docbook:171, index.docbook:176, index.docbook:181
+#. Tag: entry
+#: toolset_guide.xml:171 toolset_guide.xml:176 toolset_guide.xml:181
+#, no-c-format
msgid "number"
msgstr "number"
-#: index.docbook:172
+#. Tag: entry
+#: toolset_guide.xml:172
+#, no-c-format
msgid "column length"
msgstr "컬럼 길이"
-#: index.docbook:175
+#. Tag: literal
+#: toolset_guide.xml:175
+#, no-c-format
msgid "precision"
msgstr "precision"
-#: index.docbook:177
+#. Tag: entry
+#: toolset_guide.xml:177
+#, no-c-format
msgid "column decimal precision"
msgstr "컬럼 decimal 정밀도"
-#: index.docbook:180
+#. Tag: literal
+#: toolset_guide.xml:180
+#, no-c-format
msgid "scale"
msgstr "scale"
-#: index.docbook:182
+#. Tag: entry
+#: toolset_guide.xml:182
+#, no-c-format
msgid "column decimal scale"
msgstr "컬럼 decimal 크기"
-#: index.docbook:185
+#. Tag: literal
+#: toolset_guide.xml:185
+#, no-c-format
msgid "not-null"
msgstr "not-null"
-#: index.docbook:186, index.docbook:191
+#. Tag: literal
+#: toolset_guide.xml:186 toolset_guide.xml:191
+#, no-c-format
msgid "true|false"
msgstr "true|false"
-#: index.docbook:187
+#. Tag: entry
+#: toolset_guide.xml:187
+#, no-c-format
msgid "specfies that the column should be non-nullable"
msgstr "컬럼이 null이 아니어야 함을 지정한다"
-#: index.docbook:190
+#. Tag: literal
+#: toolset_guide.xml:190
+#, no-c-format
msgid "unique"
msgstr "unique"
-#: index.docbook:192
+#. Tag: entry
+#: toolset_guide.xml:192
+#, no-c-format
msgid "specifies that the column should have a unique constraint"
msgstr "컬럼이 하나의 유일 컨스트레인트를 가져야함을 지정한다"
-#: index.docbook:195
+#. Tag: literal
+#: toolset_guide.xml:195
+#, no-c-format
msgid "index"
msgstr "index"
-#: index.docbook:196
+#. Tag: literal
+#: toolset_guide.xml:196
+#, no-c-format
msgid "index_name"
msgstr "index_name"
-#: index.docbook:197
+#. Tag: entry
+#: toolset_guide.xml:197
+#, no-c-format
msgid "specifies the name of a (multi-column) index"
msgstr "(다중-컬럼) 인덱스의 이름을 지정한다"
-#: index.docbook:200
+#. Tag: literal
+#: toolset_guide.xml:200
+#, no-c-format
msgid "unique-key"
msgstr "unique-key"
-#: index.docbook:201
+#. Tag: literal
+#: toolset_guide.xml:201
+#, no-c-format
msgid "unique_key_name"
msgstr "unique_key_name"
-#: index.docbook:202
+#. Tag: entry
+#: toolset_guide.xml:202
+#, no-c-format
msgid "specifies the name of a multi-column unique constraint"
msgstr "다중-컬럼 유일 컨스트레인트의 이름을 지정한다"
-#: index.docbook:205
+#. Tag: literal
+#: toolset_guide.xml:205
+#, no-c-format
msgid "foreign-key"
msgstr "foreign-key"
-#: index.docbook:206
+#. Tag: literal
+#: toolset_guide.xml:206
+#, no-c-format
msgid "foreign_key_name"
msgstr "foreign_key_name"
-#: index.docbook:207
-msgid "specifies the name of the foreign key constraint generated for an association, for a <literal><one-to-one></literal>, <literal><many-to-one></literal>, <literal><key></literal>, or <literal><many-to-many></literal> mapping element. Note that <literal>inverse=\"true\"</literal> sides will not be considered by <literal>SchemaExport</literal>."
-msgstr "하나의 연관에 대해, <literal><one-to-one></literal>, <literal><many-to-one></literal>, <literal><key></literal>, 또는 <literal><many-to-many></literal> 매핑 요소에 대해 foreign key 컨스트레인트의 이름을 지정한다.<literal>inverse=\"true\"</literal> 측들은 <literal>SchemaExport</literal>에 의해 고려되지 않을 것임을 노트하라."
+#. Tag: entry
+#: toolset_guide.xml:207
+#, fuzzy, no-c-format
+msgid ""
+"specifies the name of the foreign key constraint generated for an "
+"association, for a <literal><one-to-one></literal>, <literal><many-"
+"to-one></literal>, <literal><key></literal>, or <literal><many-"
+"to-many></literal> mapping element. Note that <literal>inverse=\"true\"</"
+"literal> sides will not be considered by <literal>SchemaExport</literal>."
+msgstr ""
+"하나의 연관에 대해, <placeholder-1/>, <placeholder-2/>, <placeholder-3/>, 또"
+"는 <placeholder-4/> 매핑 요소에 대해 foreign key 컨스트레인트의 이름을 지정한"
+"다.<placeholder-5/> 측들은 <placeholder-6/>에 의해 고려되지 않을 것임을 노트"
+"하라."
-#: index.docbook:217
+#. Tag: literal
+#: toolset_guide.xml:217
+#, no-c-format
msgid "sql-type"
msgstr "sql-type"
-#: index.docbook:218
+#. Tag: literal
+#: toolset_guide.xml:218
+#, no-c-format
msgid "SQL column type"
msgstr "SQL column type"
-#: index.docbook:219
-msgid "overrides the default column type (attribute of <literal><column></literal> element only)"
-msgstr "디폴트 컬럼 타입을 오버라이드 시킨다 (<literal><column></literal> 요소의 속성에만)"
+#. Tag: entry
+#: toolset_guide.xml:219
+#, fuzzy, no-c-format
+msgid ""
+"overrides the default column type (attribute of <literal><column></"
+"literal> element only)"
+msgstr ""
+"디폴트 컬럼 타입을 오버라이드 시킨다 (<placeholder-1/> 요소의 속성에만)"
-#: index.docbook:225
+#. Tag: literal
+#: toolset_guide.xml:225
+#, no-c-format
msgid "default"
msgstr "default"
-#: index.docbook:226, index.docbook:233
+#. Tag: entry
+#: toolset_guide.xml:226 toolset_guide.xml:233
+#, no-c-format
msgid "SQL expression"
msgstr "SQL expression"
-#: index.docbook:227
+#. Tag: entry
+#: toolset_guide.xml:227
+#, no-c-format
msgid "specify a default value for the column"
msgstr "컬럼에 대한 디폴트 값을 지정한다"
-#: index.docbook:232
+#. Tag: literal
+#: toolset_guide.xml:232
+#, no-c-format
msgid "check"
msgstr "check"
-#: index.docbook:234
+#. Tag: entry
+#: toolset_guide.xml:234
+#, no-c-format
msgid "create an SQL check constraint on either column or table"
msgstr "컬럼 또는 테이블에 대한 SQL check 컨스트레인트를 생성시킨다"
-#: index.docbook:242
-msgid "The <literal><comment></literal> element allows you to specify comments for the generated schema."
-msgstr "<literal><comment></literal> 요소는 생성된 스키마에 대한 주석들을 지정하는 것을 당신에게 허용해준다."
+#. Tag: para
+#: toolset_guide.xml:242
+#, no-c-format
+msgid ""
+"The <literal><comment></literal> element allows you to specify "
+"comments for the generated schema."
+msgstr ""
+"<literal><comment></literal> 요소는 생성된 스키마에 대한 주석들을 지정"
+"하는 것을 당신에게 허용해준다."
-#: index.docbook:247
+#. Tag: programlisting
+#: toolset_guide.xml:247
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Customer\" table=\"CurCust\">\n"
- " <comment>Current customers only</comment>\n"
- " ...\n"
- "</class>]]>"
+"<![CDATA[<class name=\"Customer\" table=\"CurCust\">\n"
+" <comment>Current customers only</comment>\n"
+" ...\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Customer\" table=\"CurCust\">\n"
- " <comment>Current customers only</comment>\n"
- " ...\n"
- "</class>]]>"
-#: index.docbook:249
+#. Tag: programlisting
+#: toolset_guide.xml:249
+#, no-c-format
msgid ""
- "<![CDATA[<property name=\"balance\">\n"
- " <column name=\"bal\">\n"
- " <comment>Balance in USD</comment>\n"
- " </column>\n"
- "</property>]]>"
+"<![CDATA[<property name=\"balance\">\n"
+" <column name=\"bal\">\n"
+" <comment>Balance in USD</comment>\n"
+" </column>\n"
+"</property>]]>"
msgstr ""
- "<![CDATA[<property name=\"balance\">\n"
- " <column name=\"bal\">\n"
- " <comment>Balance in USD</comment>\n"
- " </column>\n"
- "</property>]]>"
-#: index.docbook:251
-msgid "This results in a <literal>comment on table</literal> or <literal>comment on column</literal> statement in the generated DDL (where supported)."
-msgstr "이것은 (지원되는 경우) 생성된 DDL에서 <literal>comment on table</literal> 또는 <literal>comment on column</literal> 문장으로 귀결된다."
+#. Tag: para
+#: toolset_guide.xml:251
+#, no-c-format
+msgid ""
+"This results in a <literal>comment on table</literal> or <literal>comment on "
+"column</literal> statement in the generated DDL (where supported)."
+msgstr ""
+"이것은 (지원되는 경우) 생성된 DDL에서 <literal>comment on table</literal> 또"
+"는 <literal>comment on column</literal> 문장으로 귀결된다."
-#: index.docbook:260
+#. Tag: title
+#: toolset_guide.xml:260
+#, no-c-format
msgid "Running the tool"
msgstr "도구 실행하기"
-#: index.docbook:262
-msgid "The <literal>SchemaExport</literal> tool writes a DDL script to standard out and/or executes the DDL statements."
-msgstr "<literal>SchemaExport</literal> 도구는 DDL 스크립트를 표준 출력으로 기록 하고/하거나 DDL 문장들을 실행시킨다."
+#. Tag: para
+#: toolset_guide.xml:262
+#, no-c-format
+msgid ""
+"The <literal>SchemaExport</literal> tool writes a DDL script to standard out "
+"and/or executes the DDL statements."
+msgstr ""
+"<literal>SchemaExport</literal> 도구는 DDL 스크립트를 표준 출력으로 기록 하"
+"고/하거나 DDL 문장들을 실행시킨다."
-#: index.docbook:267
-msgid "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options mapping_files</emphasis>"
-msgstr "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options mapping_files</emphasis>"
+#. Tag: para
+#: toolset_guide.xml:267
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaExport</literal> <emphasis>options "
+"mapping_files</emphasis>"
+msgstr ""
-#: index.docbook:273
+#. Tag: title
+#: toolset_guide.xml:273
+#, no-c-format
msgid "<literal>SchemaExport</literal> Command Line Options"
msgstr "<literal>SchemaExport</literal> 명령 라인 옵션들"
-#: index.docbook:279, index.docbook:429, index.docbook:498
+#. Tag: entry
+#: toolset_guide.xml:279 toolset_guide.xml:429 toolset_guide.xml:498
+#, no-c-format
msgid "Option"
-msgstr "<entry>옵션</entry>"
+msgstr "옵션"
-#: index.docbook:280, index.docbook:367, index.docbook:430, index.docbook:499
+#. Tag: entry
+#: toolset_guide.xml:280 toolset_guide.xml:367 toolset_guide.xml:430
+#: toolset_guide.xml:499
+#, no-c-format
msgid "Description"
-msgstr "<entry>설명</entry>"
+msgstr "설명"
-#: index.docbook:285, index.docbook:435
+#. Tag: literal
+#: toolset_guide.xml:285 toolset_guide.xml:435
+#, no-c-format
msgid "--quiet"
msgstr "--quiet"
-#: index.docbook:286, index.docbook:436
+#. Tag: entry
+#: toolset_guide.xml:286 toolset_guide.xml:436
+#, no-c-format
msgid "don't output the script to stdout"
msgstr "스크립트를 표준출력으로 출력하지 않는다"
-#: index.docbook:289
+#. Tag: literal
+#: toolset_guide.xml:289
+#, no-c-format
msgid "--drop"
msgstr "--drop"
-#: index.docbook:290
+#. Tag: entry
+#: toolset_guide.xml:290
+#, no-c-format
msgid "only drop the tables"
msgstr "오직 테이블들을 드롭시킨다"
-#: index.docbook:293
+#. Tag: literal
+#: toolset_guide.xml:293
+#, no-c-format
msgid "--create"
msgstr "--create"
-#: index.docbook:294
+#. Tag: entry
+#: toolset_guide.xml:294
+#, no-c-format
msgid "only create the tables"
msgstr "오직 테이블들을 생성시킨다"
-#: index.docbook:297, index.docbook:439
+#. Tag: literal
+#: toolset_guide.xml:297 toolset_guide.xml:439
+#, no-c-format
msgid "--text"
msgstr "--text"
-#: index.docbook:298
+#. Tag: entry
+#: toolset_guide.xml:298
+#, no-c-format
msgid "don't export to the database"
msgstr "데이터베이스로 내보내기 하지 않는다"
-#: index.docbook:301
+#. Tag: literal
+#: toolset_guide.xml:301
+#, no-c-format
msgid "--output=my_schema.ddl"
msgstr "--output=my_schema.ddl"
-#: index.docbook:302
+#. Tag: entry
+#: toolset_guide.xml:302
+#, no-c-format
msgid "output the ddl script to a file"
msgstr "ddl 스크립트를 파일로 출력한다"
-#: index.docbook:305, index.docbook:443, index.docbook:504
+#. Tag: literal
+#: toolset_guide.xml:305 toolset_guide.xml:443 toolset_guide.xml:504
+#, no-c-format
msgid "--naming=eg.MyNamingStrategy"
msgstr "--naming=eg.MyNamingStrategy"
-#: index.docbook:306, index.docbook:444, index.docbook:505
+#. Tag: entry
+#: toolset_guide.xml:306 toolset_guide.xml:444 toolset_guide.xml:505
+#, fuzzy, no-c-format
msgid "select a <literal>NamingStrategy</literal>"
-msgstr "하나의 <literal>NamingStrategy</literal>를 선택한다"
+msgstr "<literal>hibernate.properties</literal> 내에서"
-#: index.docbook:309, index.docbook:451, index.docbook:512
+#. Tag: literal
+#: toolset_guide.xml:309 toolset_guide.xml:451 toolset_guide.xml:512
+#, no-c-format
msgid "--config=hibernate.cfg.xml"
msgstr "--config=hibernate.cfg.xml"
-#: index.docbook:310
+#. Tag: entry
+#: toolset_guide.xml:310
+#, no-c-format
msgid "read Hibernate configuration from an XML file"
msgstr "XML 파일로부터 Hibernate 구성을 읽어들인다"
-#: index.docbook:313, index.docbook:447, index.docbook:508
+#. Tag: literal
+#: toolset_guide.xml:313 toolset_guide.xml:447 toolset_guide.xml:508
+#, no-c-format
msgid "--properties=hibernate.properties"
msgstr "--properties=hibernate.properties"
-#: index.docbook:314, index.docbook:448, index.docbook:509
+#. Tag: entry
+#: toolset_guide.xml:314 toolset_guide.xml:448 toolset_guide.xml:509
+#, fuzzy, no-c-format
msgid "read database properties from a file"
-msgstr "파일로부터 데이터베이스 프로퍼티들을 읽어들인다"
+msgstr ""
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"파일로부터 데이터베이스 프로퍼티들을 읽어들인다\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"파일로부터 데이터베이스 프로퍼티들을 읽어 들인다\n"
+"#-#-#-#-# - (PACKAGE VERSION) #-#-#-#-#\n"
+"파일로부터 데이터베이스 프로퍼티들을 읽어들인다"
-#: index.docbook:317
+#. Tag: literal
+#: toolset_guide.xml:317
+#, no-c-format
msgid "--format"
msgstr "--format"
-#: index.docbook:318
+#. Tag: entry
+#: toolset_guide.xml:318
+#, no-c-format
msgid "format the generated SQL nicely in the script"
msgstr "생성된 SQL을 스크립트 내에 좋게 형식지운다"
-#: index.docbook:321
+#. Tag: literal
+#: toolset_guide.xml:321
+#, no-c-format
msgid "--delimiter=;"
msgstr "--delimiter=;"
-#: index.docbook:322
+#. Tag: entry
+#: toolset_guide.xml:322
+#, no-c-format
msgid "set an end of line delimiter for the script"
msgstr "스크립트를 위한 라인 경계의 끝을 설정한다"
-#: index.docbook:328
+#. Tag: para
+#: toolset_guide.xml:328
+#, no-c-format
msgid "You may even embed <literal>SchemaExport</literal> in your application:"
-msgstr "당신은 당신의 어플리케이션 내에 <literal>SchemaExport</literal>를 삽입시킬 수도 있다:"
+msgstr ""
+"당신은 당신의 어플리케이션 내에 <literal>SchemaExport</literal>를 삽입시킬 수"
+"도 있다:"
-#: index.docbook:332
+#. Tag: programlisting
+#: toolset_guide.xml:332
+#, no-c-format
msgid ""
- "<![CDATA[Configuration cfg = ....;\n"
- "new SchemaExport(cfg).create(false, true);]]>"
+"<![CDATA[Configuration cfg = ....;\n"
+"new SchemaExport(cfg).create(false, true);]]>"
msgstr ""
- "<![CDATA[Configuration cfg = ....;\n"
- "new SchemaExport(cfg).create(false, true);]]>"
-#: index.docbook:337
+#. Tag: title
+#: toolset_guide.xml:337
+#, no-c-format
msgid "Properties"
msgstr "프로퍼티들"
-#: index.docbook:339
+#. Tag: para
+#: toolset_guide.xml:339
+#, no-c-format
msgid "Database properties may be specified"
msgstr "데이터베이스 프로퍼티들은 다음과 같이 지정될 수 있다"
-#: index.docbook:345
-msgid "as system properties with <literal>-D</literal><emphasis><property></emphasis>"
-msgstr "<literal>-D</literal><emphasis><property></emphasis>를 가진 시스템 프로퍼티로서"
+#. Tag: para
+#: toolset_guide.xml:345
+#, no-c-format
+msgid ""
+"as system properties with <literal>-D</literal><emphasis><property></"
+"emphasis>"
+msgstr ""
+"<literal>-D</literal><emphasis><property></emphasis>를 가진 시스템 프로"
+"퍼티로서"
-#: index.docbook:348
+#. Tag: para
+#: toolset_guide.xml:348
+#, no-c-format
msgid "in <literal>hibernate.properties</literal>"
msgstr "<literal>hibernate.properties</literal> 내에서"
-#: index.docbook:351
+#. Tag: para
+#: toolset_guide.xml:351
+#, no-c-format
msgid "in a named properties file with <literal>--properties</literal>"
msgstr "<literal>--properties</literal>를 가진 명명된 프로퍼티들 내에서"
-#: index.docbook:355
+#. Tag: para
+#: toolset_guide.xml:355
+#, no-c-format
msgid "The needed properties are:"
msgstr "필요한 프로퍼티들은 다음과 같다:"
-#: index.docbook:360
+#. Tag: title
+#: toolset_guide.xml:360
+#, no-c-format
msgid "SchemaExport Connection Properties"
msgstr "SchemaExport 커넥션 프로퍼티들"
-#: index.docbook:366
+#. Tag: entry
+#: toolset_guide.xml:366
+#, no-c-format
msgid "Property Name"
msgstr "프로퍼티 이름"
-#: index.docbook:372
+#. Tag: literal
+#: toolset_guide.xml:372
+#, no-c-format
msgid "hibernate.connection.driver_class"
msgstr "hibernate.connection.driver_class"
-#: index.docbook:373
+#. Tag: entry
+#: toolset_guide.xml:373
+#, no-c-format
msgid "jdbc driver class"
msgstr "jdbc 드라이버 클래스"
-#: index.docbook:376
+#. Tag: literal
+#: toolset_guide.xml:376
+#, no-c-format
msgid "hibernate.connection.url"
msgstr "hibernate.connection.url"
-#: index.docbook:377
+#. Tag: entry
+#: toolset_guide.xml:377
+#, no-c-format
msgid "jdbc url"
msgstr "jdbc url"
-#: index.docbook:380
+#. Tag: literal
+#: toolset_guide.xml:380
+#, no-c-format
msgid "hibernate.connection.username"
msgstr "hibernate.connection.username"
-#: index.docbook:381
+#. Tag: entry
+#: toolset_guide.xml:381
+#, no-c-format
msgid "database user"
msgstr "데이터베이스 사용자"
-#: index.docbook:384
+#. Tag: literal
+#: toolset_guide.xml:384
+#, no-c-format
msgid "hibernate.connection.password"
msgstr "hibernate.connection.password"
-#: index.docbook:385
+#. Tag: entry
+#: toolset_guide.xml:385
+#, no-c-format
msgid "user password"
msgstr "사용자 패스워드"
-#: index.docbook:388
+#. Tag: literal
+#: toolset_guide.xml:388
+#, no-c-format
msgid "hibernate.dialect"
msgstr "hibernate.dialect"
-#: index.docbook:389
+#. Tag: entry
+#: toolset_guide.xml:389
+#, no-c-format
msgid "dialect"
msgstr "dialect"
-#: index.docbook:398
+#. Tag: title
+#: toolset_guide.xml:398
+#, no-c-format
msgid "Using Ant"
msgstr "Ant 사용하기"
-#: index.docbook:400
-msgid "You can call <literal>SchemaExport</literal> from your Ant build script:"
-msgstr "당신은 당신의 Ant 빌드 스크립트에서 <literal>SchemaExport</literal>를 호출할 수 있다:"
+#. Tag: para
+#: toolset_guide.xml:400
+#, no-c-format
+msgid ""
+"You can call <literal>SchemaExport</literal> from your Ant build script:"
+msgstr ""
+"당신은 당신의 Ant 빌드 스크립트에서 <literal>SchemaExport</literal>를 호출할 "
+"수 있다:"
-#: index.docbook:404
+#. Tag: programlisting
+#: toolset_guide.xml:404
+#, no-c-format
msgid ""
- "<![CDATA[<target name=\"schemaexport\">\n"
- " <taskdef name=\"schemaexport\"\n"
- " classname=\"org.hibernate.tool.hbm2ddl.SchemaExportTask\"\n"
- " classpathref=\"class.path\"/>\n"
- " \n"
- " <schemaexport\n"
- " properties=\"hibernate.properties\"\n"
- " quiet=\"no\"\n"
- " text=\"no\"\n"
- " drop=\"no\"\n"
- " delimiter=\";\"\n"
- " output=\"schema-export.sql\">\n"
- " <fileset dir=\"src\">\n"
- " <include name=\"**/*.hbm.xml\"/>\n"
- " </fileset>\n"
- " </schemaexport>\n"
- "</target>]]>"
+"<![CDATA[<target name=\"schemaexport\">\n"
+" <taskdef name=\"schemaexport\"\n"
+" classname=\"org.hibernate.tool.hbm2ddl.SchemaExportTask\"\n"
+" classpathref=\"class.path\"/>\n"
+" \n"
+" <schemaexport\n"
+" properties=\"hibernate.properties\"\n"
+" quiet=\"no\"\n"
+" text=\"no\"\n"
+" drop=\"no\"\n"
+" delimiter=\";\"\n"
+" output=\"schema-export.sql\">\n"
+" <fileset dir=\"src\">\n"
+" <include name=\"**/*.hbm.xml\"/>\n"
+" </fileset>\n"
+" </schemaexport>\n"
+"</target>]]>"
msgstr ""
- "<![CDATA[<target name=\"schemaexport\">\n"
- " <taskdef name=\"schemaexport\"\n"
- " classname=\"org.hibernate.tool.hbm2ddl.SchemaExportTask\"\n"
- " classpathref=\"class.path\"/>\n"
- " \n"
- " <schemaexport\n"
- " properties=\"hibernate.properties\"\n"
- " quiet=\"no\"\n"
- " text=\"no\"\n"
- " drop=\"no\"\n"
- " delimiter=\";\"\n"
- " output=\"schema-export.sql\">\n"
- " <fileset dir=\"src\">\n"
- " <include name=\"**/*.hbm.xml\"/>\n"
- " </fileset>\n"
- " </schemaexport>\n"
- "</target>]]>"
-#: index.docbook:409
+#. Tag: title
+#: toolset_guide.xml:409
+#, no-c-format
msgid "Incremental schema updates"
msgstr "점증하는 스키마 업데이트들"
-#: index.docbook:411
-msgid "The <literal>SchemaUpdate</literal> tool will update an existing schema with \"incremental\" changes. Note that <literal>SchemaUpdate</literal> depends heavily upon the JDBC metadata API, so it will not work with all JDBC drivers."
-msgstr "<literal>SchemaUpdate</literal> 도구는 \"점증하는\" 변경들을 가진 기존 스키마를 변경시킬 것이다. <literal>SchemaUpdate</literal>는 JDBC 메타데이터 API에 무겁게 의존하여서, 그것은 모든 JDBC 드라이버들에 동작하지 않을 것임을 주목하라."
+#. Tag: para
+#: toolset_guide.xml:411
+#, no-c-format
+msgid ""
+"The <literal>SchemaUpdate</literal> tool will update an existing schema with "
+"\"incremental\" changes. Note that <literal>SchemaUpdate</literal> depends "
+"heavily upon the JDBC metadata API, so it will not work with all JDBC "
+"drivers."
+msgstr ""
+"<literal>SchemaUpdate</literal> 도구는 \"점증하는\" 변경들을 가진 기존 스키마"
+"를 변경시킬 것이다. <literal>SchemaUpdate</literal>는 JDBC 메타데이터 API에 "
+"무겁게 의존하여서, 그것은 모든 JDBC 드라이버들에 동작하지 않을 것임을 주목하"
+"라."
-#: index.docbook:417
-msgid "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options mapping_files</emphasis>"
-msgstr "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options mapping_files</emphasis>"
+#. Tag: para
+#: toolset_guide.xml:417
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaUpdate</literal> <emphasis>options "
+"mapping_files</emphasis>"
+msgstr ""
-#: index.docbook:423
+#. Tag: title
+#: toolset_guide.xml:423
+#, no-c-format
msgid "<literal>SchemaUpdate</literal> Command Line Options"
msgstr "<literal>SchemaUpdate</literal> 명령 라인 옵션들"
-#: index.docbook:440
+#. Tag: entry
+#: toolset_guide.xml:440
+#, no-c-format
msgid "don't export the script to the database"
msgstr "스크립트를 데이터베이스로 내보내기 하지 않는다"
-#: index.docbook:452, index.docbook:513
+#. Tag: entry
+#: toolset_guide.xml:452 toolset_guide.xml:513
+#, fuzzy, no-c-format
msgid "specify a <literal>.cfg.xml</literal> file"
-msgstr "<literal>.cfg.xml</literal> 파일을 지정한다"
+msgstr "<placeholder-1/> 파일을 지정한다"
-#: index.docbook:458
+#. Tag: para
+#: toolset_guide.xml:458
+#, no-c-format
msgid "You may embed <literal>SchemaUpdate</literal> in your application:"
-msgstr "당신은 당신의 어플리케이션 내에 <literal>SchemaUpdate</literal>를 삽입시킬 수 있다:"
+msgstr ""
+"당신은 당신의 어플리케이션 내에 <literal>SchemaUpdate</literal>를 삽입시킬 "
+"수 있다:"
-#: index.docbook:462
+#. Tag: programlisting
+#: toolset_guide.xml:462
+#, no-c-format
msgid ""
- "<![CDATA[Configuration cfg = ....;\n"
- "new SchemaUpdate(cfg).execute(false);]]>"
+"<![CDATA[Configuration cfg = ....;\n"
+"new SchemaUpdate(cfg).execute(false);]]>"
msgstr ""
- "<![CDATA[Configuration cfg = ....;\n"
- "new SchemaUpdate(cfg).execute(false);]]>"
-#: index.docbook:467
+#. Tag: title
+#: toolset_guide.xml:467
+#, no-c-format
msgid "Using Ant for incremental schema updates"
msgstr "점증하는 스키마 업데이트들에 Ant 사용하기"
-#: index.docbook:469
+#. Tag: para
+#: toolset_guide.xml:469
+#, no-c-format
msgid "You can call <literal>SchemaUpdate</literal> from the Ant script:"
-msgstr "당신은 Ant 스크립트에서<literal>SchemaUpdate</literal>를 호출할 수 있다:"
+msgstr ""
+"당신은 Ant 스크립트에서<literal>SchemaUpdate</literal>를 호출할 수 있다:"
-#: index.docbook:473
+#. Tag: programlisting
+#: toolset_guide.xml:473
+#, no-c-format
msgid ""
- "<![CDATA[<target name=\"schemaupdate\">\n"
- " <taskdef name=\"schemaupdate\"\n"
- " classname=\"org.hibernate.tool.hbm2ddl.SchemaUpdateTask\"\n"
- " classpathref=\"class.path\"/>\n"
- " \n"
- " <schemaupdate\n"
- " properties=\"hibernate.properties\"\n"
- " quiet=\"no\">\n"
- " <fileset dir=\"src\">\n"
- " <include name=\"**/*.hbm.xml\"/>\n"
- " </fileset>\n"
- " </schemaupdate>\n"
- "</target>]]>"
+"<![CDATA[<target name=\"schemaupdate\">\n"
+" <taskdef name=\"schemaupdate\"\n"
+" classname=\"org.hibernate.tool.hbm2ddl.SchemaUpdateTask\"\n"
+" classpathref=\"class.path\"/>\n"
+" \n"
+" <schemaupdate\n"
+" properties=\"hibernate.properties\"\n"
+" quiet=\"no\">\n"
+" <fileset dir=\"src\">\n"
+" <include name=\"**/*.hbm.xml\"/>\n"
+" </fileset>\n"
+" </schemaupdate>\n"
+"</target>]]>"
msgstr ""
- "<![CDATA[<target name=\"schemaupdate\">\n"
- " <taskdef name=\"schemaupdate\"\n"
- " classname=\"org.hibernate.tool.hbm2ddl.SchemaUpdateTask\"\n"
- " classpathref=\"class.path\"/>\n"
- " \n"
- " <schemaupdate\n"
- " properties=\"hibernate.properties\"\n"
- " quiet=\"no\">\n"
- " <fileset dir=\"src\">\n"
- " <include name=\"**/*.hbm.xml\"/>\n"
- " </fileset>\n"
- " </schemaupdate>\n"
- "</target>]]>"
-#: index.docbook:478
+#. Tag: title
+#: toolset_guide.xml:478
+#, no-c-format
msgid "Schema validation"
msgstr "스키마 유효성 검사"
-#: index.docbook:480
-msgid "The <literal>SchemaValidator</literal> tool will validate that the existing database schema \"matches\" your mapping documents. Note that <literal>SchemaValidator</literal> depends heavily upon the JDBC metadata API, so it will not work with all JDBC drivers. This tool is extremely useful for testing."
-msgstr "<literal>SchemaValidator</literal> 도구는 기존의 데이터베이스 스키마가 당신의 매핑 문서들과 \"일치하는지\"를 유효성 검사할 것이다. <literal>SchemaValidator</literal>가 JDBC 메타데이터 API에 무겁게 의존하므로 그것은 모든 JDBC 드라이버들에 대해 동작하지 않을 것이다. 이 도구는 테스팅에 극히 유용하다."
+#. Tag: para
+#: toolset_guide.xml:480
+#, no-c-format
+msgid ""
+"The <literal>SchemaValidator</literal> tool will validate that the existing "
+"database schema \"matches\" your mapping documents. Note that "
+"<literal>SchemaValidator</literal> depends heavily upon the JDBC metadata "
+"API, so it will not work with all JDBC drivers. This tool is extremely "
+"useful for testing."
+msgstr ""
+"<literal>SchemaValidator</literal> 도구는 기존의 데이터베이스 스키마가 당신"
+"의 매핑 문서들과 \"일치하는지\"를 유효성 검사할 것이다. "
+"<literal>SchemaValidator</literal>가 JDBC 메타데이터 API에 무겁게 의존하므로 "
+"그것은 모든 JDBC 드라이버들에 대해 동작하지 않을 것이다. 이 도구는 테스팅에 "
+"극히 유용하다."
-#: index.docbook:486
-msgid "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> <emphasis>options mapping_files</emphasis>"
-msgstr "<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> <literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> <emphasis>options mapping_files</emphasis>"
+#. Tag: para
+#: toolset_guide.xml:486
+#, no-c-format
+msgid ""
+"<literal>java -cp </literal><emphasis>hibernate_classpaths</emphasis> "
+"<literal>org.hibernate.tool.hbm2ddl.SchemaValidator</literal> "
+"<emphasis>options mapping_files</emphasis>"
+msgstr ""
-#: index.docbook:492
+#. Tag: title
+#: toolset_guide.xml:492
+#, no-c-format
msgid "<literal>SchemaValidator</literal> Command Line Options"
msgstr "<literal>SchemaValidator</literal> 명령 라인 옵션들"
-#: index.docbook:519
+#. Tag: para
+#: toolset_guide.xml:519
+#, no-c-format
msgid "You may embed <literal>SchemaValidator</literal> in your application:"
-msgstr "당신은 당신의 어플리케이션 내에 <literal>SchemaValidator</literal>을 삽입시킬 수 도 있다:"
+msgstr ""
+"당신은 당신의 어플리케이션 내에 <literal>SchemaValidator</literal>을 삽입시"
+"킬 수 도 있다:"
-#: index.docbook:523
+#. Tag: programlisting
+#: toolset_guide.xml:523
+#, no-c-format
msgid ""
- "<![CDATA[Configuration cfg = ....;\n"
- "new SchemaValidator(cfg).validate();]]>"
+"<![CDATA[Configuration cfg = ....;\n"
+"new SchemaValidator(cfg).validate();]]>"
msgstr ""
- "<![CDATA[Configuration cfg = ....;\n"
- "new SchemaValidator(cfg).validate();]]>"
-#: index.docbook:528
+#. Tag: title
+#: toolset_guide.xml:528
+#, no-c-format
msgid "Using Ant for schema validation"
msgstr "스키마 유효성 검사를 위해 Ant 사용하기"
-#: index.docbook:530
+#. Tag: para
+#: toolset_guide.xml:530
+#, no-c-format
msgid "You can call <literal>SchemaValidator</literal> from the Ant script:"
-msgstr "당신은 Ant 스크립트에서 <literal>SchemaValidator</literal>를 호출할 수 있다:"
+msgstr ""
+"당신은 Ant 스크립트에서 <literal>SchemaValidator</literal>를 호출할 수 있다:"
-#: index.docbook:534
+#. Tag: programlisting
+#: toolset_guide.xml:534
+#, no-c-format
msgid ""
- "<![CDATA[<target name=\"schemavalidate\">\n"
- " <taskdef name=\"schemavalidator\"\n"
- " classname=\"org.hibernate.tool.hbm2ddl.SchemaValidatorTask\"\n"
- " classpathref=\"class.path\"/>\n"
- " \n"
- " <schemavalidator\n"
- " properties=\"hibernate.properties\">\n"
- " <fileset dir=\"src\">\n"
- " <include name=\"**/*.hbm.xml\"/>\n"
- " </fileset>\n"
- " </schemavalidator>\n"
- "</target>]]>"
+"<![CDATA[<target name=\"schemavalidate\">\n"
+" <taskdef name=\"schemavalidator\"\n"
+" classname=\"org.hibernate.tool.hbm2ddl.SchemaValidatorTask\"\n"
+" classpathref=\"class.path\"/>\n"
+" \n"
+" <schemavalidator\n"
+" properties=\"hibernate.properties\">\n"
+" <fileset dir=\"src\">\n"
+" <include name=\"**/*.hbm.xml\"/>\n"
+" </fileset>\n"
+" </schemavalidator>\n"
+"</target>]]>"
msgstr ""
- "<![CDATA[<target name=\"schemavalidate\">\n"
- " <taskdef name=\"schemavalidator\"\n"
- " classname=\"org.hibernate.tool.hbm2ddl.SchemaValidatorTask\"\n"
- " classpathref=\"class.path\"/>\n"
- " \n"
- " <schemavalidator\n"
- " properties=\"hibernate.properties\">\n"
- " <fileset dir=\"src\">\n"
- " <include name=\"**/*.hbm.xml\"/>\n"
- " </fileset>\n"
- " </schemavalidator>\n"
- "</target>]]>"
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
+#~ msgid "<one-to-one>"
+#~ msgstr "<one-to-one>"
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
+#~ msgid "<many-to-one>"
+#~ msgstr "<many-to-one>"
+#~ msgid "<key>"
+#~ msgstr "<key>"
+
+#~ msgid "<many-to-many>"
+#~ msgstr "<many-to-many>"
+
+#~ msgid "inverse=\"true\""
+#~ msgstr "inverse=\"true\""
+
+#~ msgid "SchemaExport"
+#~ msgstr "SchemaExport"
+
+#~ msgid "<column>"
+#~ msgstr "<column>"
+
+#~ msgid "java -cp"
+#~ msgstr "java -cp"
+
+#~ msgid "hibernate_classpaths"
+#~ msgstr "hibernate_classpaths"
+
+#~ msgid "org.hibernate.tool.hbm2ddl.SchemaExport"
+#~ msgstr "org.hibernate.tool.hbm2ddl.SchemaExport"
+
+#~ msgid "options mapping_files"
+#~ msgstr "options mapping_files"
+
+#~ msgid "NamingStrategy"
+#~ msgstr "NamingStrategy"
+
+#~ msgid "select a <placeholder-1/>"
+#~ msgstr "하나의 <placeholder-1/>를 선택한다"
+
+#~ msgid "org.hibernate.tool.hbm2ddl.SchemaUpdate"
+#~ msgstr "org.hibernate.tool.hbm2ddl.SchemaUpdate"
+
+#~ msgid ".cfg.xml"
+#~ msgstr ".cfg.xml"
+
+#~ msgid "org.hibernate.tool.hbm2ddl.SchemaValidator"
+#~ msgstr "org.hibernate.tool.hbm2ddl.SchemaValidator"
Modified: core/trunk/documentation/manual/translations/ko-KR/content/transactions.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/transactions.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/transactions.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,790 +1,2068 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: transactions.xml:5
+#, no-c-format
msgid "Transactions And Concurrency"
msgstr "트랜잭션들과 동시성"
-#: index.docbook:7
-msgid "The most important point about Hibernate and concurrency control is that it is very easy to understand. Hibernate directly uses JDBC connections and JTA resources without adding any additional locking behavior. We highly recommend you spend some time with the JDBC, ANSI, and transaction isolation specification of your database management system."
-msgstr "Hibernate와 동시성 제어에 대한 가장 중요한 점은 이해하기가 매우 쉽다는 점이다. Hibernate는 어떤 추가적인 잠금 행위 없이 JDBC 커넥션들과 JTA 리소스들을 직접 사용한다. 우리는 당신의 데이터베이스 관리 시스템의 JDBC, ANSI, 그리고 트랜잭션 격리 명세에 약간의 시간을 할애할 것을 매우 권장한다."
+#. Tag: para
+#: transactions.xml:7
+#, no-c-format
+msgid ""
+"The most important point about Hibernate and concurrency control is that it "
+"is very easy to understand. Hibernate directly uses JDBC connections and JTA "
+"resources without adding any additional locking behavior. We highly "
+"recommend you spend some time with the JDBC, ANSI, and transaction isolation "
+"specification of your database management system."
+msgstr ""
+"Hibernate와 동시성 제어에 대한 가장 중요한 점은 이해하기가 매우 쉽다는 점이"
+"다. Hibernate는 어떤 추가적인 잠금 행위 없이 JDBC 커넥션들과 JTA 리소스들을 "
+"직접 사용한다. 우리는 당신의 데이터베이스 관리 시스템의 JDBC, ANSI, 그리고 트"
+"랜잭션 격리 명세에 약간의 시간을 할애할 것을 매우 권장한다."
-#: index.docbook:14
-msgid "Hibernate does not lock objects in memory. Your application can expect the behavior as defined by the isolation level of your database transactions. Note that thanks to the <literal>Session</literal>, which is also a transaction-scoped cache, Hibernate provides repeatable reads for lookup by identifier and entity queries (not reporting queries that return scalar values)."
-msgstr "Hibernate는 메모리 내에서 객체들을 잠그지 않는다. 당신의 어플리케이션은 격리 레벨에 의해 정의된 대로 행위를 기대할 수 있다. 또한 transaction-영역의 캐시인 <literal>Session</literal> 덕분에, Hibernate는 (스칼라 값들을 반환하는 질의들을 보고하지 않는) 식별자와 엔티티 질의들에 의한 룩업을 위해 반복 가능한 읽기를 제공한다."
+#. Tag: para
+#: transactions.xml:14
+#, no-c-format
+msgid ""
+"Hibernate does not lock objects in memory. Your application can expect the "
+"behavior as defined by the isolation level of your database transactions. "
+"Note that thanks to the <literal>Session</literal>, which is also a "
+"transaction-scoped cache, Hibernate provides repeatable reads for lookup by "
+"identifier and entity queries (not reporting queries that return scalar "
+"values)."
+msgstr ""
+"Hibernate는 메모리 내에서 객체들을 잠그지 않는다. 당신의 어플리케이션은 격리 "
+"레벨에 의해 정의된 대로 행위를 기대할 수 있다. 또한 transaction-영역의 캐시"
+"인 <literal>Session</literal> 덕분에, Hibernate는 (스칼라 값들을 반환하는 질"
+"의들을 보고하지 않는) 식별자와 엔티티 질의들에 의한 룩업을 위해 반복 가능한 "
+"읽기를 제공한다."
-#: index.docbook:22
-msgid "In addition to versioning for automatic optimistic concurrency control, Hibernate also offers a (minor) API for pessimistic locking of rows, using the <literal>SELECT FOR UPDATE</literal> syntax. Optimistic concurrency control and this API are discussed later in this chapter."
-msgstr "자동적인 optimistic 동시성 제어를 위한 버전화에 덧붙여, Hibernate는 또한 <literal>SELECT FOR UPDATE</literal> 구문을 사용하여 행들에 대한 pessimistic 잠금을 위한 하나의 (마이너)API를 제공한다. optimistic 동시성 제어와 이 API는 이 장의 뒷부분에서 논의된다."
+#. Tag: para
+#: transactions.xml:22
+#, no-c-format
+msgid ""
+"In addition to versioning for automatic optimistic concurrency control, "
+"Hibernate also offers a (minor) API for pessimistic locking of rows, using "
+"the <literal>SELECT FOR UPDATE</literal> syntax. Optimistic concurrency "
+"control and this API are discussed later in this chapter."
+msgstr ""
+"자동적인 optimistic 동시성 제어를 위한 버전화에 덧붙여, Hibernate는 또한 "
+"<literal>SELECT FOR UPDATE</literal> 구문을 사용하여 행들에 대한 pessimistic "
+"잠금을 위한 하나의 (마이너)API를 제공한다. optimistic 동시성 제어와 이 API는 "
+"이 장의 뒷부분에서 논의된다."
-#: index.docbook:29
-msgid "We start the discussion of concurrency control in Hibernate with the granularity of <literal>Configuration</literal>, <literal>SessionFactory</literal>, and <literal>Session</literal>, as well as database transactions and long conversations."
-msgstr "우리는 <literal>Configuration</literal>, <literal>SessionFactory</literal>, <literal>Session</literal>, 알갱이를 가진 Hibernate에서의 동시성 제어 뿐만 아니라 데이터베이스 트랜잭션과 장기간에 걸친 (컴퓨터와의)대화들에 대한 논의를 시작한다."
+#. Tag: para
+#: transactions.xml:29
+#, no-c-format
+msgid ""
+"We start the discussion of concurrency control in Hibernate with the "
+"granularity of <literal>Configuration</literal>, <literal>SessionFactory</"
+"literal>, and <literal>Session</literal>, as well as database transactions "
+"and long conversations."
+msgstr ""
+"우리는 <literal>Configuration</literal>, <literal>SessionFactory</literal>, "
+"<literal>Session</literal>, 알갱이를 가진 Hibernate에서의 동시성 제어 뿐만 아"
+"니라 데이터베이스 트랜잭션과 장기간에 걸친 (컴퓨터와의)대화들에 대한 논의를 "
+"시작한다."
-#: index.docbook:36
+#. Tag: title
+#: transactions.xml:36
+#, no-c-format
msgid "Session and transaction scopes"
msgstr "세션 영역과 트랜잭션 영역"
-#: index.docbook:38
-msgid "A <literal>SessionFactory</literal> is an expensive-to-create, threadsafe object intended to be shared by all application threads. It is created once, usually on application startup, from a <literal>Configuration</literal> instance."
-msgstr "<literal>SessionFactory</literal>는 모든 어플리케이션 쓰레드들에 의해 공유되도록 고안된 생성에 비용이 드는, 쓰레드안전(threadsafe) 객체이다. 그것은 대개 어플리케이션 시작 시에 <literal>Configuration</literal> 인스턴스로부터 한번 생성된다."
+#. Tag: para
+#: transactions.xml:38
+#, no-c-format
+msgid ""
+"A <literal>SessionFactory</literal> is an expensive-to-create, threadsafe "
+"object intended to be shared by all application threads. It is created once, "
+"usually on application startup, from a <literal>Configuration</literal> "
+"instance."
+msgstr ""
+"<literal>SessionFactory</literal>는 모든 어플리케이션 쓰레드들에 의해 공유되"
+"도록 고안된 생성에 비용이 드는, 쓰레드안전(threadsafe) 객체이다. 그것은 대개 "
+"어플리케이션 시작 시에 <literal>Configuration</literal> 인스턴스로부터 한번 "
+"생성된다."
-#: index.docbook:44
-msgid "A <literal>Session</literal> is an inexpensive, non-threadsafe object that should be used once, for a single request, a conversation, single unit of work, and then discarded. A <literal>Session</literal> will not obtain a JDBC <literal>Connection</literal> (or a <literal>Datasource</literal>) unless it is needed, hence consume no resources until used."
-msgstr "<literal>Session</literal>은 하나의 요청, 하나의 대화 , 하나의 작업 단위를 위해 한번만 사용되고 나서 폐기될 예정인, 비용이 들지 않는, 쓰레드 안전하지 않은 객체이다. <literal>Session</literal>은 커넥션이 필요하지 않으면 하나의 JDBC <literal>Connection</literal>(또는 <literal>Datasource</literal>)를 얻지 않을 것이므로, 사용될 때까지 리소스들을 소비하지 않는다."
+#. Tag: para
+#: transactions.xml:44
+#, no-c-format
+msgid ""
+"A <literal>Session</literal> is an inexpensive, non-threadsafe object that "
+"should be used once, for a single request, a conversation, single unit of "
+"work, and then discarded. A <literal>Session</literal> will not obtain a "
+"JDBC <literal>Connection</literal> (or a <literal>Datasource</literal>) "
+"unless it is needed, hence consume no resources until used."
+msgstr ""
+"<literal>Session</literal>은 하나의 요청, 하나의 대화 , 하나의 작업 단위를 위"
+"해 한번만 사용되고 나서 폐기될 예정인, 비용이 들지 않는, 쓰레드 안전하지 않"
+"은 객체이다. <literal>Session</literal>은 커넥션이 필요하지 않으면 하나의 "
+"JDBC <literal>Connection</literal>(또는 <literal>Datasource</literal>)를 얻"
+"지 않을 것이므로, 사용될 때까지 리소스들을 소비하지 않는다."
-#: index.docbook:52
-msgid "To complete this picture you also have to think about database transactions. A database transaction has to be as short as possible, to reduce lock contention in the database. Long database transactions will prevent your application from scaling to highly concurrent load. Hence, it is almost never good design to hold a database transaction open during user think time, until the unit of work is complete."
-msgstr "이 그림을 완성하기 위해 당신은 또한 데이터베이스 트랜재션들에 대해 생각해야 한다. 데이터베이스 트랜잭션은 데이터베이스에서 잠금 다툼을 줄이기 위해 가능한 짧아야 한다. 긴 데이터베이스 트랜잭션들은 당신의 어플리케이션이 고도의 동시성 로드로의 가용성을 높이는 것을 방해할 것이다. 그러므로 사용자가 생각하는 시간 동안 단위 작업이 완료될 때까지 데이터베이스 트랜잭션을 열려진채로 소유하는 것은 대개 결코 좋은 설계는 아니다."
+#. Tag: para
+#: transactions.xml:52
+#, no-c-format
+msgid ""
+"To complete this picture you also have to think about database transactions. "
+"A database transaction has to be as short as possible, to reduce lock "
+"contention in the database. Long database transactions will prevent your "
+"application from scaling to highly concurrent load. Hence, it is almost "
+"never good design to hold a database transaction open during user think "
+"time, until the unit of work is complete."
+msgstr ""
+"이 그림을 완성하기 위해 당신은 또한 데이터베이스 트랜재션들에 대해 생각해야 "
+"한다. 데이터베이스 트랜잭션은 데이터베이스에서 잠금 다툼을 줄이기 위해 가능"
+"한 짧아야 한다. 긴 데이터베이스 트랜잭션들은 당신의 어플리케이션이 고도의 동"
+"시성 로드로의 가용성을 높이는 것을 방해할 것이다. 그러므로 사용자가 생각하는 "
+"시간 동안 단위 작업이 완료될 때까지 데이터베이스 트랜잭션을 열려진채로 소유하"
+"는 것은 대개 결코 좋은 설계는 아니다."
-#: index.docbook:61
-msgid "What is the scope of a unit of work? Can a single Hibernate <literal>Session</literal> span several database transactions or is this a one-to-one relationship of scopes? When should you open and close a <literal>Session</literal> and how do you demarcate the database transaction boundaries?"
-msgstr "하나의 작업 단위의 영역은 무엇인가? 하나의 Hibernate <literal>Session</literal>은 몇몇 데이터베이스 트랜잭션들에 걸칠 수 있는가 또는 이것은 영역들의 one-to-one 관계인가? 당신은 언제 <literal>Session</literal>을 열고 닫는가 그리고 당신은 데이터베이스 트랜잭션 경계들을 어떻게 한정하는가?"
+#. Tag: para
+#: transactions.xml:61
+#, no-c-format
+msgid ""
+"What is the scope of a unit of work? Can a single Hibernate "
+"<literal>Session</literal> span several database transactions or is this a "
+"one-to-one relationship of scopes? When should you open and close a "
+"<literal>Session</literal> and how do you demarcate the database transaction "
+"boundaries?"
+msgstr ""
+"하나의 작업 단위의 영역은 무엇인가? 하나의 Hibernate <literal>Session</"
+"literal>은 몇몇 데이터베이스 트랜잭션들에 걸칠 수 있는가 또는 이것은 영역들"
+"의 one-to-one 관계인가? 당신은 언제 <literal>Session</literal>을 열고 닫는가 "
+"그리고 당신은 데이터베이스 트랜잭션 경계들을 어떻게 한정하는가?"
-#: index.docbook:69
+#. Tag: title
+#: transactions.xml:69
+#, no-c-format
msgid "Unit of work"
msgstr "작업 단위"
-#: index.docbook:71
-msgid "First, don't use the <emphasis>session-per-operation</emphasis> antipattern, that is, don't open and close a <literal>Session</literal> for every simple database call in a single thread! Of course, the same is true for database transactions. Database calls in an application are made using a planned sequence, they are grouped into atomic units of work. (Note that this also means that auto-commit after every single SQL statement is useless in an application, this mode is intended for ad-hoc SQL console work. Hibernate disables, or expects the application server to do so, auto-commit mode immediately.) Database transactions are never optional, all communication with a database has to occur inside a transaction, no matter if you read or write data. As explained, auto-commit behavior for reading data should be avoided, as many small transactions are unlikely to perform better than one clearly defined unit of work. The latter is also much more maintainable and extensible."
-msgstr "첫번째로, <emphasis>session-per-operation</emphasis> anti-패턴을 사용하지 말라. 즉, 단일 쓰레드 내에서 모든 간단한 데이터베이스 호출에 대해 <literal>Session</literal>을 열고 닫지 말라! 물론 같은 것이 데이터베이스 트랜잭션들에 대해서도 참이다. 어플리케이션 내의 데이터베이스 호출들은 계획된 순서를사용하여 행해지며, 그것들은 원자 작업 단위 속으로 그룹지워진다. (이것은 또한 모든 하나의 SQL 문장 뒤의 auto-commit(자동-커밋)이 어플리케이션 내에서 무용지물임을 의미하고, 이 모드가 SQL 콘솔 작업을 돕도록 고안되었음을 노트하라. Hibernate는 의미하고, 이 모드는 Hibernate는 즉시 자동-커밋 모드를 사용 불가능하게 하거나, 어플리케이션 서버가 그렇게 행하고, 즉시 자동-커밋시키는 것을 사용불가능하게 하거나 ,그렇게 행하는 것을 기대한�!
��.) 데이터베이스 트랜잭션들은 결코 옵션이 아니며, 하나의 데이터베이스와의 모든 통신은 당신이 데이터를 읽든 쓰단간에 상관없이 하나의 트랜잭션 내에서 발생해야 한다. 설명하였듯이, 데이터 읽기를 위한 auto-commit 특징을 피해야 할 것이며, 많은 작은 트랜잭션들은 하나의 명료하게 정의된 작업 단위보다 더 좋게 수행될 것 같지 않다. 후자가 또한 훨씬 더 유지가능하고 확장적이다."
+#. Tag: para
+#: transactions.xml:71
+#, no-c-format
+msgid ""
+"First, don't use the <emphasis>session-per-operation</emphasis> antipattern, "
+"that is, don't open and close a <literal>Session</literal> for every simple "
+"database call in a single thread! Of course, the same is true for database "
+"transactions. Database calls in an application are made using a planned "
+"sequence, they are grouped into atomic units of work. (Note that this also "
+"means that auto-commit after every single SQL statement is useless in an "
+"application, this mode is intended for ad-hoc SQL console work. Hibernate "
+"disables, or expects the application server to do so, auto-commit mode "
+"immediately.) Database transactions are never optional, all communication "
+"with a database has to occur inside a transaction, no matter if you read or "
+"write data. As explained, auto-commit behavior for reading data should be "
+"avoided, as many small transactions are unlikely to perform better than one "
+"clearly defined unit of work. The latter is also much more maintainable and "
+"extensible."
+msgstr ""
+"첫번째로, <emphasis>session-per-operation</emphasis> anti-패턴을 사용하지 말"
+"라. 즉, 단일 쓰레드 내에서 모든 간단한 데이터베이스 호출에 대해 "
+"<literal>Session</literal>을 열고 닫지 말라! 물론 같은 것이 데이터베이스 트랜"
+"잭션들에 대해서도 참이다. 어플리케이션 내의 데이터베이스 호출들은 계획된 순서"
+"를사용하여 행해지며, 그것들은 원자 작업 단위 속으로 그룹지워진다. (이것은 또"
+"한 모든 하나의 SQL 문장 뒤의 auto-commit(자동-커밋)이 어플리케이션 내에서 무"
+"용지물임을 의미하고, 이 모드가 SQL 콘솔 작업을 돕도록 고안되었음을 노트하라. "
+"Hibernate는 의미하고, 이 모드는 Hibernate는 즉시 자동-커밋 모드를 사용 불가능"
+"하게 하거나, 어플리케이션 서버가 그렇게 행하고, 즉시 자동-커밋시키는 것을 사"
+"용불가능하게 하거나 ,그렇게 행하는 것을 기대한다.) 데이터베이스 트랜잭션들은 "
+"결코 옵션이 아니며, 하나의 데이터베이스와의 모든 통신은 당신이 데이터를 읽든 "
+"쓰단간에 상관없이 하나의 트랜잭션 내에서 발생해야 한다. 설명하였듯이, 데이터 "
+"읽기를 위한 auto-commit 특징을 피해야 할 것이며, 많은 작은 트랜잭션들은 하나"
+"의 명료하게 정의된 작업 단위보다 더 좋게 수행될 것 같지 않다. 후자가 또한 훨"
+"씬 더 유지가능하고 확장적이다."
-#: index.docbook:87
-msgid "The most common pattern in a multi-user client/server application is <emphasis>session-per-request</emphasis>. In this model, a request from the client is send to the server (where the Hibernate persistence layer runs), a new Hibernate <literal>Session</literal> is opened, and all database operations are executed in this unit of work. Once the work has been completed (and the response for the client has been prepared), the session is flushed and closed. You would also use a single database transaction to serve the clients request, starting and committing it when you open and close the <literal>Session</literal>. The relationship between the two is one-to-one and this model is a perfect fit for many applications."
-msgstr "다중 사용자 클라이언트/서버 어플리케이션에서 가장 공통된 패턴은 <emphasis>session-per-request</emphasis>이다. 이 모형에서, 클라이언트로부터의 요청은 (Hibernate 영속 계층이 실행되는) 서버로 전송되고, 새로운 Hibernate <literal>Session</literal>이 열려지고, 모든 데이터베이스 오퍼레이션들이 이 작업 단위 내에서 실행된다. 일단 그 작업이 완료되었다면(그리고 클라이언트에 대한 응답이 준비되었다면), 그 세션은 flush 되고 닫혀진다. 당신은 또한 당신이 <literal>Session</literal>을 열고 닫을 때 그것을 시작하고 커밋시켜서 클라이언트 요청에 서비스하는데 한 개의 데이터베이스 트랜잭션을 사용하게 될 것이다. 둘 사이의 관계는 일대일 대응이고 이 모형은 많은 어플리케이션들에서 완전하게 적합하다."
+#. Tag: para
+#: transactions.xml:87
+#, no-c-format
+msgid ""
+"The most common pattern in a multi-user client/server application is "
+"<emphasis>session-per-request</emphasis>. In this model, a request from the "
+"client is send to the server (where the Hibernate persistence layer runs), a "
+"new Hibernate <literal>Session</literal> is opened, and all database "
+"operations are executed in this unit of work. Once the work has been "
+"completed (and the response for the client has been prepared), the session "
+"is flushed and closed. You would also use a single database transaction to "
+"serve the clients request, starting and committing it when you open and "
+"close the <literal>Session</literal>. The relationship between the two is "
+"one-to-one and this model is a perfect fit for many applications."
+msgstr ""
+"다중 사용자 클라이언트/서버 어플리케이션에서 가장 공통된 패턴은 "
+"<emphasis>session-per-request</emphasis>이다. 이 모형에서, 클라이언트로부터"
+"의 요청은 (Hibernate 영속 계층이 실행되는) 서버로 전송되고, 새로운 Hibernate "
+"<literal>Session</literal>이 열려지고, 모든 데이터베이스 오퍼레이션들이 이 작"
+"업 단위 내에서 실행된다. 일단 그 작업이 완료되었다면(그리고 클라이언트에 대"
+"한 응답이 준비되었다면), 그 세션은 flush 되고 닫혀진다. 당신은 또한 당신이 "
+"<literal>Session</literal>을 열고 닫을 때 그것을 시작하고 커밋시켜서 클라이언"
+"트 요청에 서비스하는데 한 개의 데이터베이스 트랜잭션을 사용하게 될 것이다. "
+"둘 사이의 관계는 일대일 대응이고 이 모형은 많은 어플리케이션들에서 완전하게 "
+"적합하다."
-#: index.docbook:99
-msgid "The challenge lies in the implementation. Hibernate provides built-in management of the \"current session\" to simplify this pattern. All you have to do is start a transaction when a server request has to be processed, and end the transaction before the response is send to the client. You can do this in any way you like, common solutions are <literal>ServletFilter</literal>, AOP interceptor with a pointcut on the service methods, or a proxy/interception container. An EJB container is a standardized way to implement cross-cutting aspects such as transaction demarcation on EJB session beans, declaratively with CMT. If you decide to use programmatic transaction demarcation, prefer the Hibernate <literal>Transaction</literal> API shown later in this chapter, for ease of use and code portability."
-msgstr "난제는 구현에 놓여있다: Hibernate는 이 패턴을 단순화 시키기 위해 \"현재 세션\"에 관한 미리 빌드된 관리를 제공한다. 당신이 행해야할 모든 것은 서버 요청이 처리되어야 할 때 트랜잭션을 시작하고, 그 응답이 클라이언트로 전송되기 전에 트랜잭션을 끝내는 것이다. 당신은 당신이 좋아하는 임의의 방법으로 이것을 행할 수 있으며, 공통된 해결책들은 서비스 메소드들 상의 첨단, 또는 하나의 프락시/인터셉션 컨테이너를 가진 APO 인터셉터인, <literal>ServletFilter</literal>이다. 하나의 EJB 컨테이너는 CMT의 경우에 선언적으로 EJB session beans 상에 트랜잭션 경계구분과 같은 동시 대조 측면들을 구현하는 표준 방법이다. 만일 당신이 프로그램 상의 트랜잭션 경계구분을 사용하고자 결정한다면, 사용의 용이성과 코드 이식성을 위해 이 장의 뒷 !
부분에서 보여진 Hibernate <literal>Transaction</literal>을 선호하라."
+#. Tag: para
+#: transactions.xml:99
+#, no-c-format
+msgid ""
+"The challenge lies in the implementation. Hibernate provides built-in "
+"management of the \"current session\" to simplify this pattern. All you have "
+"to do is start a transaction when a server request has to be processed, and "
+"end the transaction before the response is send to the client. You can do "
+"this in any way you like, common solutions are <literal>ServletFilter</"
+"literal>, AOP interceptor with a pointcut on the service methods, or a proxy/"
+"interception container. An EJB container is a standardized way to implement "
+"cross-cutting aspects such as transaction demarcation on EJB session beans, "
+"declaratively with CMT. If you decide to use programmatic transaction "
+"demarcation, prefer the Hibernate <literal>Transaction</literal> API shown "
+"later in this chapter, for ease of use and code portability."
+msgstr ""
+"난제는 구현에 놓여있다: Hibernate는 이 패턴을 단순화 시키기 위해 \"현재 세션"
+"\"에 관한 미리 빌드된 관리를 제공한다. 당신이 행해야할 모든 것은 서버 요청이 "
+"처리되어야 할 때 트랜잭션을 시작하고, 그 응답이 클라이언트로 전송되기 전에 트"
+"랜잭션을 끝내는 것이다. 당신은 당신이 좋아하는 임의의 방법으로 이것을 행할 "
+"수 있으며, 공통된 해결책들은 서비스 메소드들 상의 첨단, 또는 하나의 프락시/인"
+"터셉션 컨테이너를 가진 APO 인터셉터인, <literal>ServletFilter</literal>이다. "
+"하나의 EJB 컨테이너는 CMT의 경우에 선언적으로 EJB session beans 상에 트랜잭"
+"션 경계구분과 같은 동시 대조 측면들을 구현하는 표준 방법이다. 만일 당신이 프"
+"로그램 상의 트랜잭션 경계구분을 사용하고자 결정한다면, 사용의 용이성과 코드 "
+"이식성을 위해 이 장의 뒷 부분에서 보여진 Hibernate <literal>Transaction</"
+"literal>을 선호하라."
-#: index.docbook:112
-msgid "Your application code can access a \"current session\" to process the request by simply calling <literal>sessionFactory.getCurrentSession()</literal> anywhere and as often as needed. You will always get a <literal>Session</literal> scoped to the current database transaction. This has to be configured for either resource-local or JTA environments, see <xref linkend=\"architecture-current-session\"/>."
-msgstr "당신의 어플리케이션 코드는 어디서든 필요할 때 종종 <literal>sessionFactory.getCurrentSession()</literal>을 간단히 호출함으로써 요청을 처리할 \"현재 세션\"에 접근할 수 있다. 당신은 현재 데이터베이스 트랜잭션으로 영역화된 하나의 <literal>Session</literal>을 항상 얻게 될 것이다. 이것은 resource-local 환경 또는 JTA 환경에 대해 구성되어야 하며, <xref linkend=\"architecture-current-session\"/>을 보라."
+#. Tag: para
+#: transactions.xml:112
+#, no-c-format
+msgid ""
+"Your application code can access a \"current session\" to process the "
+"request by simply calling <literal>sessionFactory.getCurrentSession()</"
+"literal> anywhere and as often as needed. You will always get a "
+"<literal>Session</literal> scoped to the current database transaction. This "
+"has to be configured for either resource-local or JTA environments, see "
+"<xref linkend=\"architecture-current-session\"/>."
+msgstr ""
+"당신의 어플리케이션 코드는 어디서든 필요할 때 종종 <literal>sessionFactory."
+"getCurrentSession()</literal>을 간단히 호출함으로써 요청을 처리할 \"현재 세션"
+"\"에 접근할 수 있다. 당신은 현재 데이터베이스 트랜잭션으로 영역화된 하나의 "
+"<literal>Session</literal>을 항상 얻게 될 것이다. 이것은 resource-local 환경 "
+"또는 JTA 환경에 대해 구성되어야 하며, <xref linkend=\"architecture-current-"
+"session\"/>을 보라."
-#: index.docbook:120
-msgid "Sometimes it is convenient to extend the scope of a <literal>Session</literal> and database transaction until the \"view has been rendered\". This is especially useful in servlet applications that utilize a separate rendering phase after the request has been processed. Extending the database transaction until view rendering is complete is easy to do if you implement your own interceptor. However, it is not easily doable if you rely on EJBs with container-managed transactions, as a transaction will be completed when an EJB method returns, before rendering of any view can start. See the Hibernate website and forum for tips and examples around this <emphasis>Open Session in View</emphasis> pattern."
-msgstr "때때로 \"뷰가 렌더링될 때까지\" 하나의 <literal>Session</literal> 과 데이터베이스 트랜잭션의 영역을 확장시키는 것이 편리하다. 이것은 요청이 처리된 후에 하나의 별도의 렌더링 단계를 활용하는 서블릿 어플리케이션들에서 특히 유용하다. 뷰 렌더링이 완료될 때까지 데이터베이스 트랜잭션을 확장하는 것은 당신이 당신 자신의 인터셉터를 구현하는 경우에 행하기가 쉽다. 하지만 만일 당신이 컨테이너에 의해 관리되는 트랜잭션들을 가진 EJB들에 의존할 경우에, 하나의 EJB 메소드가 반환될 때 임의의 뷰 렌더링이 시작될 수 있기 전에 하나의 트랜잭션이 완료되기 때문에, 행하는 것이 쉽지 않다. 이 <emphasis>Open Session in View</emphasis> 패턴을 둘러싼 팁들과 예제들은 Hibernate 웹 사이트와 포럼을 보라."
+#. Tag: para
+#: transactions.xml:120
+#, no-c-format
+msgid ""
+"Sometimes it is convenient to extend the scope of a <literal>Session</"
+"literal> and database transaction until the \"view has been rendered\". This "
+"is especially useful in servlet applications that utilize a separate "
+"rendering phase after the request has been processed. Extending the database "
+"transaction until view rendering is complete is easy to do if you implement "
+"your own interceptor. However, it is not easily doable if you rely on EJBs "
+"with container-managed transactions, as a transaction will be completed when "
+"an EJB method returns, before rendering of any view can start. See the "
+"Hibernate website and forum for tips and examples around this <emphasis>Open "
+"Session in View</emphasis> pattern."
+msgstr ""
+"때때로 \"뷰가 렌더링될 때까지\" 하나의 <literal>Session</literal> 과 데이터베"
+"이스 트랜잭션의 영역을 확장시키는 것이 편리하다. 이것은 요청이 처리된 후에 하"
+"나의 별도의 렌더링 단계를 활용하는 서블릿 어플리케이션들에서 특히 유용하다. "
+"뷰 렌더링이 완료될 때까지 데이터베이스 트랜잭션을 확장하는 것은 당신이 당신 "
+"자신의 인터셉터를 구현하는 경우에 행하기가 쉽다. 하지만 만일 당신이 컨테이너"
+"에 의해 관리되는 트랜잭션들을 가진 EJB들에 의존할 경우에, 하나의 EJB 메소드"
+"가 반환될 때 임의의 뷰 렌더링이 시작될 수 있기 전에 하나의 트랜잭션이 완료되"
+"기 때문에, 행하는 것이 쉽지 않다. 이 <emphasis>Open Session in View</"
+"emphasis> 패턴을 둘러싼 팁들과 예제들은 Hibernate 웹 사이트와 포럼을 보라."
-#: index.docbook:135
+#. Tag: title
+#: transactions.xml:135
+#, no-c-format
msgid "Long conversations"
msgstr "장기간의 대화"
-#: index.docbook:137
-msgid "The session-per-request pattern is not the only useful concept you can use to design units of work. Many business processes require a whole series of interactions with the user interleaved with database accesses. In web and enterprise applications it is not acceptable for a database transaction to span a user interaction. Consider the following example:"
-msgstr "session-per-request 패턴은 당신이 작업 단위들을 설계하는데 사용할 수 있는 유일한 유용한 개념이 아니다. 많은 비지니스 프로세스들은 데이터베이스 접근들을 중재하는 사용자 사이의 전체 일련의 상호작용들을 필요로 한다. 웹과 엔터프라이즈 어플리케이션에서 사용자 상호작용에 걸치는 것은 데이터베이스 트랜잭션에 허용되지 않는다. 다음 예제를 검토하자:"
+#. Tag: para
+#: transactions.xml:137
+#, no-c-format
+msgid ""
+"The session-per-request pattern is not the only useful concept you can use "
+"to design units of work. Many business processes require a whole series of "
+"interactions with the user interleaved with database accesses. In web and "
+"enterprise applications it is not acceptable for a database transaction to "
+"span a user interaction. Consider the following example:"
+msgstr ""
+"session-per-request 패턴은 당신이 작업 단위들을 설계하는데 사용할 수 있는 유"
+"일한 유용한 개념이 아니다. 많은 비지니스 프로세스들은 데이터베이스 접근들을 "
+"중재하는 사용자 사이의 전체 일련의 상호작용들을 필요로 한다. 웹과 엔터프라이"
+"즈 어플리케이션에서 사용자 상호작용에 걸치는 것은 데이터베이스 트랜잭션에 허"
+"용되지 않는다. 다음 예제를 검토하자:"
-#: index.docbook:147
-msgid "The first screen of a dialog opens, the data seen by the user has been loaded in a particular <literal>Session</literal> and database transaction. The user is free to modify the objects."
-msgstr "대화상자의 첫 번째 화면이 열리고, 사용자에게 보여진 데이터는 특정 <literal>Session</literal>과 데이터베이스 트랜잭션 속에 로드되었다. 사용자가 객체들을 변경시키는 것이 자유롭다."
+#. Tag: para
+#: transactions.xml:147
+#, no-c-format
+msgid ""
+"The first screen of a dialog opens, the data seen by the user has been "
+"loaded in a particular <literal>Session</literal> and database transaction. "
+"The user is free to modify the objects."
+msgstr ""
+"대화상자의 첫 번째 화면이 열리고, 사용자에게 보여진 데이터는 특정 "
+"<literal>Session</literal>과 데이터베이스 트랜잭션 속에 로드되었다. 사용자가 "
+"객체들을 변경시키는 것이 자유롭다."
-#: index.docbook:154
-msgid "The user clicks \"Save\" after 5 minutes and expects his modifications to be made persistent; he also expects that he was the only person editing this information and that no conflicting modification can occur."
-msgstr "사용자는 5분 후에 \"저장\"을 클릭하고 그의 변경들이 영속화 되기를 기대한다; 그는 또한 그가 이 정보를 편집하는 유일한 개인이고 변경 충돌이 발생하지 않기를 기대한다."
+#. Tag: para
+#: transactions.xml:154
+#, no-c-format
+msgid ""
+"The user clicks \"Save\" after 5 minutes and expects his modifications to be "
+"made persistent; he also expects that he was the only person editing this "
+"information and that no conflicting modification can occur."
+msgstr ""
+"사용자는 5분 후에 \"저장\"을 클릭하고 그의 변경들이 영속화 되기를 기대한다; "
+"그는 또한 그가 이 정보를 편집하는 유일한 개인이고 변경 충돌이 발생하지 않기"
+"를 기대한다."
-#: index.docbook:162
-msgid "We call this unit of work, from the point of view of the user, a long running <emphasis>conversation</emphasis> (or <emphasis>application transaction</emphasis>). There are many ways how you can implement this in your application."
-msgstr "우리는 사용자의 관점에서, 이것을 작업 단위, 장기간 실행되는 <emphasis>대화</emphasis> (또는 <emphasis>어플리케이션 트랜잭션</emphasis>)이라고 명명한다. 당신이 당신의 어플리케이션에서 이것을 어떻게 구현할 수 있는 많은 방법들이 존재한다."
+#. Tag: para
+#: transactions.xml:162
+#, no-c-format
+msgid ""
+"We call this unit of work, from the point of view of the user, a long "
+"running <emphasis>conversation</emphasis> (or <emphasis>application "
+"transaction</emphasis>). There are many ways how you can implement this in "
+"your application."
+msgstr ""
+"우리는 사용자의 관점에서, 이것을 작업 단위, 장기간 실행되는 <emphasis>대화</"
+"emphasis> (또는 <emphasis>어플리케이션 트랜잭션</emphasis>)이라고 명명한다. "
+"당신이 당신의 어플리케이션에서 이것을 어떻게 구현할 수 있는 많은 방법들이 존"
+"재한다."
-#: index.docbook:168
-msgid "A first naive implementation might keep the <literal>Session</literal> and database transaction open during user think time, with locks held in the database to prevent concurrent modification, and to guarantee isolation and atomicity. This is of course an anti-pattern, since lock contention would not allow the application to scale with the number of concurrent users."
-msgstr "첫 번째 naive 구현은 동시성 변경을 방지하고, 격리와 atomicity(원자 단위성)을 보장하기 위해 데이터베이스에 의해 소유된 잠금으로 사용자가 생각하는동안 <literal>Session</literal>과 데이터베이스 트랜잭션을 유지할 수도 있다. 이것은 물론 anti-패턴이다. 왜냐하면 잠금 다툼은 어플리케이션이 동시 사용자들의 가용 숫자를 높이는 것을 허용하지 않을 것이기 때문이다."
+#. Tag: para
+#: transactions.xml:168
+#, no-c-format
+msgid ""
+"A first naive implementation might keep the <literal>Session</literal> and "
+"database transaction open during user think time, with locks held in the "
+"database to prevent concurrent modification, and to guarantee isolation and "
+"atomicity. This is of course an anti-pattern, since lock contention would "
+"not allow the application to scale with the number of concurrent users."
+msgstr ""
+"첫 번째 naive 구현은 동시성 변경을 방지하고, 격리와 atomicity(원자 단위성)을 "
+"보장하기 위해 데이터베이스에 의해 소유된 잠금으로 사용자가 생각하는동안 "
+"<literal>Session</literal>과 데이터베이스 트랜잭션을 유지할 수도 있다. 이것"
+"은 물론 anti-패턴이다. 왜냐하면 잠금 다툼은 어플리케이션이 동시 사용자들의 가"
+"용 숫자를 높이는 것을 허용하지 않을 것이기 때문이다."
-#: index.docbook:176
-msgid "Clearly, we have to use several database transactions to implement the converastion. In this case, maintaining isolation of business processes becomes the partial responsibility of the application tier. A single conversation usually spans several database transactions. It will be atomic if only one of these database transactions (the last one) stores the updated data, all others simply read data (e.g. in a wizard-style dialog spanning several request/response cycles). This is easier to implement than it might sound, especially if you use Hibernate's features:"
-msgstr "명료하게, 우리는 대화(<emphasis>어플리케이션 트랜잭션</emphasis>)를 구현하는데 몇몇 데이터베이스 트랜잭션들을 사용해야 한다. 이 경우에, 비지니스 프로세스들의 격리를 유지하는 것은 어플리케이션 티어의 부분적인 책임이 된다. 단일 대화는 대개 여러 개의 데이터베이스 트랜잭션들에 걸친다. 그것은 이들 데이터베이스 트랜잭션들 중 오직 한 개(마지막 트랜잭션)가 업데이트된 데이터를 저장하고, 모든 다른 트랜잭션들이 단순히 데이터를 읽는 (예를 들면, 몇몇 요청/응답 주기에 걸치는 마법사 스타일의 대화 상자에서) 경우에만 원자단위가 될 것이다. 특히 당신이 Hibernate의 특징들을 사용할 경우에 , 이것은 들리는 것보다 구현하기가 더 쉽다:"
+#. Tag: para
+#: transactions.xml:176
+#, no-c-format
+msgid ""
+"Clearly, we have to use several database transactions to implement the "
+"converastion. In this case, maintaining isolation of business processes "
+"becomes the partial responsibility of the application tier. A single "
+"conversation usually spans several database transactions. It will be atomic "
+"if only one of these database transactions (the last one) stores the updated "
+"data, all others simply read data (e.g. in a wizard-style dialog spanning "
+"several request/response cycles). This is easier to implement than it might "
+"sound, especially if you use Hibernate's features:"
+msgstr ""
+"명료하게, 우리는 대화(<emphasis>어플리케이션 트랜잭션</emphasis>)를 구현하는"
+"데 몇몇 데이터베이스 트랜잭션들을 사용해야 한다. 이 경우에, 비지니스 프로세스"
+"들의 격리를 유지하는 것은 어플리케이션 티어의 부분적인 책임이 된다. 단일 대화"
+"는 대개 여러 개의 데이터베이스 트랜잭션들에 걸친다. 그것은 이들 데이터베이스 "
+"트랜잭션들 중 오직 한 개(마지막 트랜잭션)가 업데이트된 데이터를 저장하고, 모"
+"든 다른 트랜잭션들이 단순히 데이터를 읽는 (예를 들면, 몇몇 요청/응답 주기에 "
+"걸치는 마법사 스타일의 대화 상자에서) 경우에만 원자단위가 될 것이다. 특히 당"
+"신이 Hibernate의 특징들을 사용할 경우에 , 이것은 들리는 것보다 구현하기가 더 "
+"쉽다:"
-#: index.docbook:189
-msgid "<emphasis>Automatic Versioning</emphasis> - Hibernate can do automatic optimistic concurrency control for you, it can automatically detect if a concurrent modification occured during user think time. Usually we only check at the end of the conversation."
-msgstr "<emphasis>자동적인 버전화</emphasis> - Hibernate는 당신을 위해 자동적인 optimistic 동시성 제어를 행할 수 있고, 그것은 사용자가 생각하는 시간 동안 동시적인 변경이 발생했는지를 자동적으로 검출할 수 있다. 대개 우리는 오직 대화의 끝에서 체크한다."
+#. Tag: para
+#: transactions.xml:189
+#, no-c-format
+msgid ""
+"<emphasis>Automatic Versioning</emphasis> - Hibernate can do automatic "
+"optimistic concurrency control for you, it can automatically detect if a "
+"concurrent modification occured during user think time. Usually we only "
+"check at the end of the conversation."
+msgstr ""
+"<emphasis>자동적인 버전화</emphasis> - Hibernate는 당신을 위해 자동적인 "
+"optimistic 동시성 제어를 행할 수 있고, 그것은 사용자가 생각하는 시간 동안 동"
+"시적인 변경이 발생했는지를 자동적으로 검출할 수 있다. 대개 우리는 오직 대화"
+"의 끝에서 체크한다."
-#: index.docbook:197
-msgid "<emphasis>Detached Objects</emphasis> - If you decide to use the already discussed <emphasis>session-per-request</emphasis> pattern, all loaded instances will be in detached state during user think time. Hibernate allows you to reattach the objects and persist the modifications, the pattern is called <emphasis>session-per-request-with-detached-objects</emphasis>. Automatic versioning is used to isolate concurrent modifications."
-msgstr "<emphasis>Detached 객체들</emphasis> - 만일 당신이 이미 논의된 <emphasis>session-per-request</emphasis> 패턴을 사용하고자 결정하는 경우, 모든 로드된 인스턴스들은 사용자가 생각하는 시간 동안 detached 상태에 있을 것이다. Hibernate는 그 객체들을 재첨부시키고 변경들을 영속화 시키는 것을 허용해주며, 그 패턴은 <emphasis>session-per-request-with-detached-objects(detached-객체들을 가진 요청 당 세션)</emphasis>으로 명명된다. 자동적인 버전화는 동시성 변경들을 격리시키는데 사용된다."
+#. Tag: para
+#: transactions.xml:197
+#, no-c-format
+msgid ""
+"<emphasis>Detached Objects</emphasis> - If you decide to use the already "
+"discussed <emphasis>session-per-request</emphasis> pattern, all loaded "
+"instances will be in detached state during user think time. Hibernate allows "
+"you to reattach the objects and persist the modifications, the pattern is "
+"called <emphasis>session-per-request-with-detached-objects</emphasis>. "
+"Automatic versioning is used to isolate concurrent modifications."
+msgstr ""
+"<emphasis>Detached 객체들</emphasis> - 만일 당신이 이미 논의된 "
+"<emphasis>session-per-request</emphasis> 패턴을 사용하고자 결정하는 경우, 모"
+"든 로드된 인스턴스들은 사용자가 생각하는 시간 동안 detached 상태에 있을 것이"
+"다. Hibernate는 그 객체들을 재첨부시키고 변경들을 영속화 시키는 것을 허용해주"
+"며, 그 패턴은 <emphasis>session-per-request-with-detached-objects(detached-객"
+"체들을 가진 요청 당 세션)</emphasis>으로 명명된다. 자동적인 버전화는 동시성 "
+"변경들을 격리시키는데 사용된다."
-#: index.docbook:207
-msgid "<emphasis>Extended (or Long) Session</emphasis> - The Hibernate <literal>Session</literal> may be disconnected from the underlying JDBC connection after the database transaction has been committed, and reconnected when a new client request occurs. This pattern is known as <emphasis>session-per-conversation</emphasis> and makes even reattachment unnecessary. Automatic versioning is used to isolate concurrent modifications and the <literal>Session</literal> is usually not allowed to be flushed automatically, but explicitely."
-msgstr "<emphasis>확장된 (또는 Long) Session</emphasis> - Hibernate <emphasis>Session</emphasis>은 데이터베이스 트랜잭션이 커밋된 후에 기본 JDBC 커넥션이 연결 해제될 수도 있고, 새로운 클라이언트 요청이 발생할 때 다시 연결될 수 있다. 이 패턴은 <emphasis>session-per-conversation(대화 당 세션)</emphasis>으로 알려져 있고 재첨부를 불필요하게 만든다. 자동적인 버전화는 동시성 변경들을 격리시키는데 사용되고 <literal>Session</literal>은 자동적으로 flush되는 것이 허용되지 않지만 명시적으로 flush되는 것은 허용된다."
+#. Tag: para
+#: transactions.xml:207
+#, no-c-format
+msgid ""
+"<emphasis>Extended (or Long) Session</emphasis> - The Hibernate "
+"<literal>Session</literal> may be disconnected from the underlying JDBC "
+"connection after the database transaction has been committed, and "
+"reconnected when a new client request occurs. This pattern is known as "
+"<emphasis>session-per-conversation</emphasis> and makes even reattachment "
+"unnecessary. Automatic versioning is used to isolate concurrent "
+"modifications and the <literal>Session</literal> is usually not allowed to "
+"be flushed automatically, but explicitely."
+msgstr ""
+"<emphasis>확장된 (또는 Long) Session</emphasis> - Hibernate "
+"<emphasis>Session</emphasis>은 데이터베이스 트랜잭션이 커밋된 후에 기본 JDBC "
+"커넥션이 연결 해제될 수도 있고, 새로운 클라이언트 요청이 발생할 때 다시 연결"
+"될 수 있다. 이 패턴은 <emphasis>session-per-conversation(대화 당 세션)</"
+"emphasis>으로 알려져 있고 재첨부를 불필요하게 만든다. 자동적인 버전화는 동시"
+"성 변경들을 격리시키는데 사용되고 <literal>Session</literal>은 자동적으로 "
+"flush되는 것이 허용되지 않지만 명시적으로 flush되는 것은 허용된다."
-#: index.docbook:220
-msgid "Both <emphasis>session-per-request-with-detached-objects</emphasis> and <emphasis>session-per-conversation</emphasis> have advantages and disadvantages, we discuss them later in this chapter in the context of optimistic concurrency control."
-msgstr "<emphasis>session-per-request-with-detached-objects</emphasis>과 <emphasis>session-per-conversation</emphasis> 양자는 장점들과 단점들을 갖는데, 우리는 이 장의 뒷 부분에서 optimistic 동시성 제어 단락에서 그것들을 논의한다."
+#. Tag: para
+#: transactions.xml:220
+#, no-c-format
+msgid ""
+"Both <emphasis>session-per-request-with-detached-objects</emphasis> and "
+"<emphasis>session-per-conversation</emphasis> have advantages and "
+"disadvantages, we discuss them later in this chapter in the context of "
+"optimistic concurrency control."
+msgstr ""
+"<emphasis>session-per-request-with-detached-objects</emphasis>과 "
+"<emphasis>session-per-conversation</emphasis> 양자는 장점들과 단점들을 갖는"
+"데, 우리는 이 장의 뒷 부분에서 optimistic 동시성 제어 단락에서 그것들을 논의"
+"한다."
-#: index.docbook:229
+#. Tag: title
+#: transactions.xml:229
+#, no-c-format
msgid "Considering object identity"
msgstr "객체 identity 고려하기"
-#: index.docbook:231
-msgid "An application may concurrently access the same persistent state in two different <literal>Session</literal>s. However, an instance of a persistent class is never shared between two <literal>Session</literal> instances. Hence there are two different notions of identity:"
-msgstr "어플리케이션은 두 개의 다른 <literal>Session</literal>들 내에 있는 동일한 영속 상태에 동시에 접근할 수도 있다. 하지만 영속 클래스의 인스턴스는 두 개의 <literal>Session</literal> 인스턴스들 사이에 결코 공유되지 않는다. 그러므로 identity에 대한 두 개의 다른 개념들이 존재한다:"
+#. Tag: para
+#: transactions.xml:231
+#, no-c-format
+msgid ""
+"An application may concurrently access the same persistent state in two "
+"different <literal>Session</literal>s. However, an instance of a persistent "
+"class is never shared between two <literal>Session</literal> instances. "
+"Hence there are two different notions of identity:"
+msgstr ""
+"어플리케이션은 두 개의 다른 <literal>Session</literal>들 내에 있는 동일한 영"
+"속 상태에 동시에 접근할 수도 있다. 하지만 영속 클래스의 인스턴스는 두 개의 "
+"<literal>Session</literal> 인스턴스들 사이에 결코 공유되지 않는다. 그러므로 "
+"identity에 대한 두 개의 다른 개념들이 존재한다:"
-#: index.docbook:240
+#. Tag: term
+#: transactions.xml:240
+#, no-c-format
msgid "Database Identity"
msgstr "데이터베이스 Identity"
-#: index.docbook:243
+#. Tag: literal
+#: transactions.xml:243
+#, no-c-format
msgid "foo.getId().equals( bar.getId() )"
msgstr "foo.getId().equals( bar.getId() )"
-#: index.docbook:248
+#. Tag: term
+#: transactions.xml:248
+#, no-c-format
msgid "JVM Identity"
msgstr "JVM Identity"
-#: index.docbook:251
+#. Tag: literal
+#: transactions.xml:251
+#, no-c-format
msgid "foo==bar"
msgstr "foo==bar"
-#: index.docbook:257
-msgid "Then for objects attached to a <emphasis>particular</emphasis> <literal>Session</literal> (i.e. in the scope of a <literal>Session</literal>) the two notions are equivalent, and JVM identity for database identity is guaranteed by Hibernate. However, while the application might concurrently access the \"same\" (persistent identity) business object in two different sessions, the two instances will actually be \"different\" (JVM identity). Conflicts are resolved using (automatic versioning) at flush/commit time, using an optimistic approach."
-msgstr "그때 (예를 들어 <literal>Session</literal> 영역에서) <emphasis>특정</emphasis> <literal>Session</literal>에 첨부된 객체들의 경우 두 개의 개념들은 동등한 것이고, 데이터베이스 identity에 대한 JVM identity가 Hibernate에 의해 보장된다. 하지만, 어플리케이션이 두 개의 다른 세션들에서 \"동일한\" (영속 identity) 비지니스 객체에 동시에 접근하는 동안, 두 개의 인스턴스들은 실제로 \"다르다\"(JVM identity). 충돌들은 flush/커밋 시에 (자동적인 버전화)를 사용하여, optimistic 접근법을 사용하여 해결된다."
+#. Tag: para
+#: transactions.xml:257
+#, fuzzy, no-c-format
+msgid ""
+"Then for objects attached to a <emphasis>particular</emphasis> "
+"<literal>Session</literal> (i.e. in the scope of a <literal>Session</"
+"literal>) the two notions are equivalent, and JVM identity for database "
+"identity is guaranteed by Hibernate. However, while the application might "
+"concurrently access the \"same\" (persistent identity) business object in "
+"two different sessions, the two instances will actually be \"different"
+"\" (JVM identity). Conflicts are resolved using (automatic versioning) at "
+"flush/commit time, using an optimistic approach."
+msgstr ""
+"그때 (예를 들어 <literal>Session</literal> 영역에서) <emphasis>특정</"
+"emphasis><literal>Session</literal>에 첨부된 객체들의 경우 두 개의 개념들은 "
+"동등한 것이고, 데이터베이스 identity에 대한 JVM identity가 Hibernate에 의해 "
+"보장된다. 하지만, 어플리케이션이 두 개의 다른 세션들에서 \"동일한\" (영속 "
+"identity) 비지니스 객체에 동시에 접근하는 동안, 두 개의 인스턴스들은 실제로 "
+"\"다르다\"(JVM identity). 충돌들은 flush/커밋 시에 (자동적인 버전화)를 사용하"
+"여, optimistic 접근법을 사용하여 해결된다."
-#: index.docbook:266
-msgid "This approach leaves Hibernate and the database to worry about concurrency; it also provides the best scalability, since guaranteeing identity in single-threaded units of work only doesn't need expensive locking or other means of synchronization. The application never needs to synchronize on any business object, as long as it sticks to a single thread per <literal>Session</literal>. Within a <literal>Session</literal> the application may safely use <literal>==</literal> to compare objects."
-msgstr "이 접근법은 Hibernate와 데이터베이스가 동시성에 대해 걱정하지 않도록 해준다; 그것은 또한 최상의 scalability를 제공한다. 왜냐하면 단일 쓰레드-작업 단위 내에서 identity 보장은 단지 비용이 드는 잠금이나 다른 동기화 수단들을 필요로 하지 않기 때문이다. 어플리케이션은 그것이 <literal>Session</literal> 당 단일 쓰레드를 강제하는 한, 어떤 비지니스 객체에 대해 결코 동기화 시킬 필요가 없다. 하나의 <literal>Session</literal> 내에서 어플리케이션은 객체들을 비교하는데 <literal>==</literal>를 안전하게 사용할 수가 있다."
+#. Tag: para
+#: transactions.xml:266
+#, no-c-format
+msgid ""
+"This approach leaves Hibernate and the database to worry about concurrency; "
+"it also provides the best scalability, since guaranteeing identity in single-"
+"threaded units of work only doesn't need expensive locking or other means of "
+"synchronization. The application never needs to synchronize on any business "
+"object, as long as it sticks to a single thread per <literal>Session</"
+"literal>. Within a <literal>Session</literal> the application may safely use "
+"<literal>==</literal> to compare objects."
+msgstr ""
+"이 접근법은 Hibernate와 데이터베이스가 동시성에 대해 걱정하지 않도록 해준다; "
+"그것은 또한 최상의 scalability를 제공한다. 왜냐하면 단일 쓰레드-작업 단위 내"
+"에서 identity 보장은 단지 비용이 드는 잠금이나 다른 동기화 수단들을 필요로 하"
+"지 않기 때문이다. 어플리케이션은 그것이 <literal>Session</literal> 당 단일 쓰"
+"레드를 강제하는 한, 어떤 비지니스 객체에 대해 결코 동기화 시킬 필요가 없다. "
+"하나의 <literal>Session</literal> 내에서 어플리케이션은 객체들을 비교하는데 "
+"<literal>==</literal>를 안전하게 사용할 수가 있다."
-#: index.docbook:275
-msgid "However, an application that uses <literal>==</literal> outside of a <literal>Session</literal>, might see unexpected results. This might occur even in some unexpected places, for example, if you put two detached instances into the same <literal>Set</literal>. Both might have the same database identity (i.e. they represent the same row), but JVM identity is by definition not guaranteed for instances in detached state. The developer has to override the <literal>equals()</literal> and <literal>hashCode()</literal> methods in persistent classes and implement his own notion of object equality. There is one caveat: Never use the database identifier to implement equality, use a business key, a combination of unique, usually immutable, attributes. The database identifier will change if a transient object is made persistent. If the transient instance (usually together with detached instances) is held in a <literal>Set</literal>, changing the hashcode breaks the contract of t!
he <literal>Set</literal>. Attributes for business keys don't have to be as stable as database primary keys, you only have to guarantee stability as long as the objects are in the same <literal>Set</literal>. See the Hibernate website for a more thorough discussion of this issue. Also note that this is not a Hibernate issue, but simply how Java object identity and equality has to be implemented."
-msgstr "하지만, 하나의 <literal>Session</literal> 외부에서 <literal>==</literal>를 사용하는 어플리케이션은 예기치 않은 결과들을 보게 될 수도 있다. 이것은 어떤 예기치 않은 장소들에서, 예를 들어 당신이 두 개의 detached 인스턴스들을 동일한 <literal>Set</literal> 내에 집어넣을 경우에 발생할 수도 있다. 둘 다 동일한 데이터베이스 identity를 가질 수 있지만 (예를 들어 그것들은 동일한 행을 표현한다), JVM identity는 정의 상 detached 상태에 있는 인스턴스들을 보장하지 않는다. 개발자는 영속 클래스들내에 <literal>equals()</literal> 메소드와 <literal>hashCode()</literal> 메소드를 오버라이드 시켜야 하고 객체 equality에 대한 그 자신의 개념을 구현해야 한다. 하나의 경고가 존재한다: equality를 구현하는데 데이터베이스 identifier를 결코 사용하지 말고, 하나의 비지니스 �!
�, 유일한, 대개 불변인 속성들의 조합을 사용하라. 데이터베이스 식별자는 만일 transient 객체가 영속화되는 경우에 변경될 것이다. 만일 transient 인스턴스가(대개 detached 인스턴스들과 함께) <literal>Set</literal> 내에 보관되는 경우에, hashcode 변경은 <literal>Set</literal>의 계약을 파기시킨다. 비지니스 키들에 대한 속성들은 데이터베이스 프라이머리 키들 만큼 안정적이어서는 안되며, 당신은 오직 객체들이 동일한 <literal>Set</literal> 내에 있는 한에서 안정성을 보장해야만 한다. 이 쟁점에 관한 논의에 대한 더 많은 것을 Hibernate 웹 사이트를 보라. 또한 이것이 Hibernate 쟁점이 아니며, 단지 자바 객체 identity와 equality가 구현되어야 하는 방법임을 노트하라."
+#. Tag: para
+#: transactions.xml:275
+#, no-c-format
+msgid ""
+"However, an application that uses <literal>==</literal> outside of a "
+"<literal>Session</literal>, might see unexpected results. This might occur "
+"even in some unexpected places, for example, if you put two detached "
+"instances into the same <literal>Set</literal>. Both might have the same "
+"database identity (i.e. they represent the same row), but JVM identity is by "
+"definition not guaranteed for instances in detached state. The developer has "
+"to override the <literal>equals()</literal> and <literal>hashCode()</"
+"literal> methods in persistent classes and implement his own notion of "
+"object equality. There is one caveat: Never use the database identifier to "
+"implement equality, use a business key, a combination of unique, usually "
+"immutable, attributes. The database identifier will change if a transient "
+"object is made persistent. If the transient instance (usually together with "
+"detached instances) is held in a <literal>Set</literal>, changing the "
+"hashcode breaks the contract of the <literal>Set</literal>. Attributes for "
+"business keys don't have to be as stable as database primary keys, you only "
+"have to guarantee stability as long as the objects are in the same "
+"<literal>Set</literal>. See the Hibernate website for a more thorough "
+"discussion of this issue. Also note that this is not a Hibernate issue, but "
+"simply how Java object identity and equality has to be implemented."
+msgstr ""
+"하지만, 하나의 <literal>Session</literal> 외부에서 <literal>==</literal>를 사"
+"용하는 어플리케이션은 예기치 않은 결과들을 보게 될 수도 있다. 이것은 어떤 예"
+"기치 않은 장소들에서, 예를 들어 당신이 두 개의 detached 인스턴스들을 동일한 "
+"<literal>Set</literal> 내에 집어넣을 경우에 발생할 수도 있다. 둘 다 동일한 데"
+"이터베이스 identity를 가질 수 있지만 (예를 들어 그것들은 동일한 행을 표현한"
+"다), JVM identity는 정의 상 detached 상태에 있는 인스턴스들을 보장하지 않는"
+"다. 개발자는 영속 클래스들내에 <literal>equals()</literal> 메소드와 "
+"<literal>hashCode()</literal> 메소드를 오버라이드 시켜야 하고 객체 equality"
+"에 대한 그 자신의 개념을 구현해야 한다. 하나의 경고가 존재한다: equality를 구"
+"현하는데 데이터베이스 identifier를 결코 사용하지 말고, 하나의 비지니스 키, 유"
+"일한, 대개 불변인 속성들의 조합을 사용하라. 데이터베이스 식별자는 만일 "
+"transient 객체가 영속화되는 경우에 변경될 것이다. 만일 transient 인스턴스가"
+"(대개 detached 인스턴스들과 함께) <literal>Set</literal> 내에 보관되는 경우"
+"에, hashcode 변경은 <literal>Set</literal>의 계약을 파기시킨다. 비지니스 키들"
+"에 대한 속성들은 데이터베이스 프라이머리 키들 만큼 안정적이어서는 안되며, 당"
+"신은 오직 객체들이 동일한 <literal>Set</literal> 내에 있는 한에서 안정성을 보"
+"장해야만 한다. 이 쟁점에 관한 논의에 대한 더 많은 것을 Hibernate 웹 사이트를 "
+"보라. 또한 이것이 Hibernate 쟁점이 아니며, 단지 자바 객체 identity와 equality"
+"가 구현되어야 하는 방법임을 노트하라."
-#: index.docbook:296
+#. Tag: title
+#: transactions.xml:296
+#, no-c-format
msgid "Common issues"
msgstr "공통된 쟁점들"
-#: index.docbook:298
-msgid "Never use the anti-patterns <emphasis>session-per-user-session</emphasis> or <emphasis>session-per-application</emphasis> (of course, there are rare exceptions to this rule). Note that some of the following issues might also appear with the recommended patterns, make sure you understand the implications before making a design decision:"
-msgstr "안티-패턴들 <emphasis>session-per-user-session</emphasis> 또는 <emphasis>session-per-application</emphasis>을 결코 사용하지 말라(물론 이 규칙에 대한 드문 예외상황들이 존재한다). 다음 쟁점들 중 몇몇이 또한 권장되는 패턴들로 나타날 수 있음을 노트하고, 당신이 설계 결정을 내리기 전에 내포된 의미들을 확실히 이해하라:"
+#. Tag: para
+#: transactions.xml:298
+#, no-c-format
+msgid ""
+"Never use the anti-patterns <emphasis>session-per-user-session</emphasis> or "
+"<emphasis>session-per-application</emphasis> (of course, there are rare "
+"exceptions to this rule). Note that some of the following issues might also "
+"appear with the recommended patterns, make sure you understand the "
+"implications before making a design decision:"
+msgstr ""
+"안티-패턴들 <emphasis>session-per-user-session</emphasis> 또는 "
+"<emphasis>session-per-application</emphasis>을 결코 사용하지 말라(물론 이 규"
+"칙에 대한 드문 예외상황들이 존재한다). 다음 쟁점들 중 몇몇이 또한 권장되는 패"
+"턴들로 나타날 수 있음을 노트하고, 당신이 설계 결정을 내리기 전에 내포된 의미"
+"들을 확실히 이해하라:"
-#: index.docbook:307
-msgid "A <literal>Session</literal> is not thread-safe. Things which are supposed to work concurrently, like HTTP requests, session beans, or Swing workers, will cause race conditions if a <literal>Session</literal> instance would be shared. If you keep your Hibernate <literal>Session</literal> in your <literal>HttpSession</literal> (discussed later), you should consider synchronizing access to your Http session. Otherwise, a user that clicks reload fast enough may use the same <literal>Session</literal> in two concurrently running threads."
-msgstr "<literal>Session</literal>은 쓰레드-안전하지 않다. HTTP 요청들, 세션 빈즈, 또는 Swing worker들처럼 동시에 작업하는 것으로 가정되는 것들은 하나의 <literal>Session</literal> 인스턴스가 공유될 경우에 경쟁 조건들을 발생시킬 것이다. 만일 당신이 당신의 <literal>HttpSession</literal> 내에 Hibernate <literal>Session</literal>을 유지시키는 경우(나중에 논의됨), 당신은 당신의 Http 세션에 대한 접근을 동기화 시키는 것을 고려해야 한다. 그 밖의 경우, 충분히 빠르게 reload를 클릭하는 사용자는 두 개의 동시적으로 실행되는 쓰레드들 내에서 동일한 <literal>Session</literal>을 사용할 수도 있다."
+#. Tag: para
+#: transactions.xml:307
+#, no-c-format
+msgid ""
+"A <literal>Session</literal> is not thread-safe. Things which are supposed "
+"to work concurrently, like HTTP requests, session beans, or Swing workers, "
+"will cause race conditions if a <literal>Session</literal> instance would be "
+"shared. If you keep your Hibernate <literal>Session</literal> in your "
+"<literal>HttpSession</literal> (discussed later), you should consider "
+"synchronizing access to your Http session. Otherwise, a user that clicks "
+"reload fast enough may use the same <literal>Session</literal> in two "
+"concurrently running threads."
+msgstr ""
+"<literal>Session</literal>은 쓰레드-안전하지 않다. HTTP 요청들, 세션 빈즈, 또"
+"는 Swing worker들처럼 동시에 작업하는 것으로 가정되는 것들은 하나의 "
+"<literal>Session</literal> 인스턴스가 공유될 경우에 경쟁 조건들을 발생시킬 것"
+"이다. 만일 당신이 당신의 <literal>HttpSession</literal> 내에 Hibernate "
+"<literal>Session</literal>을 유지시키는 경우(나중에 논의됨), 당신은 당신의 "
+"Http 세션에 대한 접근을 동기화 시키는 것을 고려해야 한다. 그 밖의 경우, 충분"
+"히 빠르게 reload를 클릭하는 사용자는 두 개의 동시적으로 실행되는 쓰레드들 내"
+"에서 동일한 <literal>Session</literal>을 사용할 수도 있다."
-#: index.docbook:318
-msgid "An exception thrown by Hibernate means you have to rollback your database transaction and close the <literal>Session</literal> immediately (discussed later in more detail). If your <literal>Session</literal> is bound to the application, you have to stop the application. Rolling back the database transaction doesn't put your business objects back into the state they were at the start of the transaction. This means the database state and the business objects do get out of sync. Usually this is not a problem, because exceptions are not recoverable and you have to start over after rollback anyway."
-msgstr "Hibernate에 의해 던져진 예외상황은 당신이 당신의 데이터베이스 트랜잭션을 롤백 시키고 즉시 <literal>Session</literal>을 닫아야 함을 의미한다(나중에 상세히 논의됨). 만일 당신의 <literal>Session</literal>이 어플리케이션에 바인드 되어 있는 경우, 당신은 어플리케이션을 중지시켜야 한다. 데이터베이스 트랜잭션 롤백은 당신의 비지니스 객체들을 그것들이 트랜잭션의 시작 시에 머물렀던 상태로 되돌리지는 않는다. 이것은 데이터베이스 상태와 비지니스 객체들이 동기화를 벗어남을 의미한다. 대개 이것은 문제가 아니다. 왜냐하면 예외상황들은 회복가능한 것이 아니고 당신이 어떻게든 롤백 후에 시작해야 하기 때문이다."
+#. Tag: para
+#: transactions.xml:318
+#, no-c-format
+msgid ""
+"An exception thrown by Hibernate means you have to rollback your database "
+"transaction and close the <literal>Session</literal> immediately (discussed "
+"later in more detail). If your <literal>Session</literal> is bound to the "
+"application, you have to stop the application. Rolling back the database "
+"transaction doesn't put your business objects back into the state they were "
+"at the start of the transaction. This means the database state and the "
+"business objects do get out of sync. Usually this is not a problem, because "
+"exceptions are not recoverable and you have to start over after rollback "
+"anyway."
+msgstr ""
+"Hibernate에 의해 던져진 예외상황은 당신이 당신의 데이터베이스 트랜잭션을 롤"
+"백 시키고 즉시 <literal>Session</literal>을 닫아야 함을 의미한다(나중에 상세"
+"히 논의됨). 만일 당신의 <literal>Session</literal>이 어플리케이션에 바인드 되"
+"어 있는 경우, 당신은 어플리케이션을 중지시켜야 한다. 데이터베이스 트랜잭션 롤"
+"백은 당신의 비지니스 객체들을 그것들이 트랜잭션의 시작 시에 머물렀던 상태로 "
+"되돌리지는 않는다. 이것은 데이터베이스 상태와 비지니스 객체들이 동기화를 벗어"
+"남을 의미한다. 대개 이것은 문제가 아니다. 왜냐하면 예외상황들은 회복가능한 것"
+"이 아니고 당신이 어떻게든 롤백 후에 시작해야 하기 때문이다."
-#: index.docbook:330
-msgid "The <literal>Session</literal> caches every object that is in persistent state (watched and checked for dirty state by Hibernate). This means it grows endlessly until you get an OutOfMemoryException, if you keep it open for a long time or simply load too much data. One solution for this is to call <literal>clear()</literal> and <literal>evict()</literal> to manage the <literal>Session</literal> cache, but you most likely should consider a Stored Procedure if you need mass data operations. Some solutions are shown in <xref linkend=\"batch\"/>. Keeping a <literal>Session</literal> open for the duration of a user session also means a high probability of stale data."
-msgstr "<literal>Session</literal>은 (Hibernate에 의해 dirty 상태로 관찰되었거나 체크된) 영속 상태에 있는 모든 객체를 캐시 시킨다. 이것은 당신이 오랜 시간 동안 <literal>Session</literal>을 열어둔 채로 유지하거나 단순하게 너무 많은 데이터를 로드시킬 경우에, 당신이 OutOfMemoryException을 얻기 전까지, 그것이 끝없이 성장한다는 점을 의미한다. 이것에 대한 하나의 해결책은 <literal>Session</literal> 캐시를 관리하기 위해 <literal>clear()</literal>와 <literal>evict()</literal>를 호출하는 것이지만, 당신이 대용량 데이터 오퍼레이션들을 필요로 하는 경우에 당신은 대개 내장 프로시저를 고려해야 할 것이다. 몇몇 해결책들이 <xref linkend=\"batch\"/>에 보여져 있다. 사용자 세션 동안에 <literal>Session</literal>을 열려진 채로 유지하는 것은 또한 실효성이 떨어진 데이터에 대한 �!
�은 확률을 의미한다."
+#. Tag: para
+#: transactions.xml:330
+#, no-c-format
+msgid ""
+"The <literal>Session</literal> caches every object that is in persistent "
+"state (watched and checked for dirty state by Hibernate). This means it "
+"grows endlessly until you get an OutOfMemoryException, if you keep it open "
+"for a long time or simply load too much data. One solution for this is to "
+"call <literal>clear()</literal> and <literal>evict()</literal> to manage the "
+"<literal>Session</literal> cache, but you most likely should consider a "
+"Stored Procedure if you need mass data operations. Some solutions are shown "
+"in <xref linkend=\"batch\"/>. Keeping a <literal>Session</literal> open for "
+"the duration of a user session also means a high probability of stale data."
+msgstr ""
+"<literal>Session</literal>은 (Hibernate에 의해 dirty 상태로 관찰되었거나 체크"
+"된) 영속 상태에 있는 모든 객체를 캐시 시킨다. 이것은 당신이 오랜 시간 동안 "
+"<literal>Session</literal>을 열어둔 채로 유지하거나 단순하게 너무 많은 데이터"
+"를 로드시킬 경우에, 당신이 OutOfMemoryException을 얻기 전까지, 그것이 끝없이 "
+"성장한다는 점을 의미한다. 이것에 대한 하나의 해결책은 <literal>Session</"
+"literal> 캐시를 관리하기 위해 <literal>clear()</literal>와 <literal>evict()</"
+"literal>를 호출하는 것이지만, 당신이 대용량 데이터 오퍼레이션들을 필요로 하"
+"는 경우에 당신은 대개 내장 프로시저를 고려해야 할 것이다. 몇몇 해결책들이 "
+"<xref linkend=\"batch\"/>에 보여져 있다. 사용자 세션 동안에 "
+"<literal>Session</literal>을 열려진 채로 유지하는 것은 또한 실효성이 떨어진 "
+"데이터에 대한 높은 확률을 의미한다."
-#: index.docbook:348
+#. Tag: title
+#: transactions.xml:348
+#, no-c-format
msgid "Database transaction demarcation"
msgstr "데이터베이스 트랜잭션 경계 설정"
-#: index.docbook:350
-msgid "Datatabase (or system) transaction boundaries are always necessary. No communication with the database can occur outside of a database transaction (this seems to confuse many developers who are used to the auto-commit mode). Always use clear transaction boundaries, even for read-only operations. Depending on your isolation level and database capabilities this might not be required but there is no downside if you always demarcate transactions explicitly. Certainly, a single database transaction is going to perform better than many small transactions, even for reading data."
-msgstr "데이터베이스 (또는 시스템) 트랜잭션 경계들은 항상 필수적이다. 데이터베이스와의 통신은 데이터베이스 트랜잭션의 외부에서 발생할 수 없다(이것은 자동-커밋 모드로 사용되는 많은 개발자들에게는 혼동스러워 보인다). 항상 심지어 읽기 전용 오퍼레이션들에 대해서도 명료한 트랜잭션 경계들을 사용하라. 당신의 격리 레벨과 데이터베이스 가용성들에 따라, 이것은 필요하지 않을 수 있지만, 만일 당신이 항상 트랜잭션들을 명시적으로 경계 설정할 경우에는 하강하는 결점들이 존재하지 않는다. 확실히, 하나의 데이터베이스 트랜잭션은 심지어 데이터 읽기조차도 많은 작은 트랜잭션들의 경우보다는 더 좋게 수행될 것이다."
+#. Tag: para
+#: transactions.xml:350
+#, no-c-format
+msgid ""
+"Datatabase (or system) transaction boundaries are always necessary. No "
+"communication with the database can occur outside of a database transaction "
+"(this seems to confuse many developers who are used to the auto-commit "
+"mode). Always use clear transaction boundaries, even for read-only "
+"operations. Depending on your isolation level and database capabilities this "
+"might not be required but there is no downside if you always demarcate "
+"transactions explicitly. Certainly, a single database transaction is going "
+"to perform better than many small transactions, even for reading data."
+msgstr ""
+"데이터베이스 (또는 시스템) 트랜잭션 경계들은 항상 필수적이다. 데이터베이스와"
+"의 통신은 데이터베이스 트랜잭션의 외부에서 발생할 수 없다(이것은 자동-커밋 모"
+"드로 사용되는 많은 개발자들에게는 혼동스러워 보인다). 항상 심지어 읽기 전용 "
+"오퍼레이션들에 대해서도 명료한 트랜잭션 경계들을 사용하라. 당신의 격리 레벨"
+"과 데이터베이스 가용성들에 따라, 이것은 필요하지 않을 수 있지만, 만일 당신이 "
+"항상 트랜잭션들을 명시적으로 경계 설정할 경우에는 하강하는 결점들이 존재하지 "
+"않는다. 확실히, 하나의 데이터베이스 트랜잭션은 심지어 데이터 읽기조차도 많은 "
+"작은 트랜잭션들의 경우보다는 더 좋게 수행될 것이다."
-#: index.docbook:360
-msgid "A Hibernate application can run in non-managed (i.e. standalone, simple Web- or Swing applications) and managed J2EE environments. In a non-managed environment, Hibernate is usually responsible for its own database connection pool. The application developer has to manually set transaction boundaries, in other words, begin, commit, or rollback database transactions himself. A managed environment usually provides container-managed transactions (CMT), with the transaction assembly defined declaratively in deployment descriptors of EJB session beans, for example. Programmatic transaction demarcation is then no longer necessary."
-msgstr "Hibernate 어플리케이션은 관리되지 않는 환경(예를 들면. 스탠드얼론, 간단히 웹 어플리케이션들 또는 Swing 어플리케이션들)과 관리되는 J2EE 환경에서 실행될 수 있다. 관리되지 않는 환경에서, Hibernate는 대개 그것 자신의 데이터베이스 커넥션 풀에 대한 책임이 있다. 어플리케이션 개발자는 트랜잭션 경계들을 손수 설정해야 한다. 달리 말해, 개발자 스스로 데이터베이스 트랜잭션들을 시작하고, 커밋시키거나 롤백시켜야 한다. 관리되는 환경은 대개 예를 들어 EJB 세션 빈즈의 배치 디스크립터 속에 선언적으로 정의된 트랜잭션 어셈블리를 가진, 컨테이너에 의해-관리되는 트랜잭션들(CMT)을 제공한다. 그때 프로그램 상의 트랜잭션 경계 설정은 더 이상 필요하지 않다."
+#. Tag: para
+#: transactions.xml:360
+#, no-c-format
+msgid ""
+"A Hibernate application can run in non-managed (i.e. standalone, simple Web- "
+"or Swing applications) and managed J2EE environments. In a non-managed "
+"environment, Hibernate is usually responsible for its own database "
+"connection pool. The application developer has to manually set transaction "
+"boundaries, in other words, begin, commit, or rollback database transactions "
+"himself. A managed environment usually provides container-managed "
+"transactions (CMT), with the transaction assembly defined declaratively in "
+"deployment descriptors of EJB session beans, for example. Programmatic "
+"transaction demarcation is then no longer necessary."
+msgstr ""
+"Hibernate 어플리케이션은 관리되지 않는 환경(예를 들면. 스탠드얼론, 간단히 웹 "
+"어플리케이션들 또는 Swing 어플리케이션들)과 관리되는 J2EE 환경에서 실행될 수 "
+"있다. 관리되지 않는 환경에서, Hibernate는 대개 그것 자신의 데이터베이스 커넥"
+"션 풀에 대한 책임이 있다. 어플리케이션 개발자는 트랜잭션 경계들을 손수 설정해"
+"야 한다. 달리 말해, 개발자 스스로 데이터베이스 트랜잭션들을 시작하고, 커밋시"
+"키거나 롤백시켜야 한다. 관리되는 환경은 대개 예를 들어 EJB 세션 빈즈의 배치 "
+"디스크립터 속에 선언적으로 정의된 트랜잭션 어셈블리를 가진, 컨테이너에 의해-"
+"관리되는 트랜잭션들(CMT)을 제공한다. 그때 프로그램 상의 트랜잭션 경계 설정은 "
+"더 이상 필요하지 않다."
-#: index.docbook:370
-msgid "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. Hibernate offers a wrapper API called <literal>Transaction</literal> that translates into the native transaction system of your deployment environment. This API is actually optional, but we strongly encourage its use unless you are in a CMT session bean."
-msgstr "하지만, CMT 대신 BMT를 사용하는 JTA에 의존할 수 있는 시스템들, 그리고 관리되지 않는 resource-local 환경들 사이에서 당신의 영속 계층에 이식성을 유지시키는 것이 자주 희망된다. 두 경우들에서 당신은 프로그램 상의 트랜잭션 경계설정을 사용할 것이다. Hibernate는 당신의 배치 환경의 고유한 트랜잭션 시스템 속으로 변환되는 <literal>Transaction</literal>이라 명명되는 wrapper API 를 제공한다. 이 API는 실제로 옵션이지만 우리는 당신이 CMT session bean 속에 있지 않는 한 그것의 사용을 강력하게 권장한다."
+#. Tag: para
+#: transactions.xml:370
+#, no-c-format
+msgid ""
+"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. Hibernate offers a wrapper API called "
+"<literal>Transaction</literal> that translates into the native transaction "
+"system of your deployment environment. This API is actually optional, but we "
+"strongly encourage its use unless you are in a CMT session bean."
+msgstr ""
+"하지만, CMT 대신 BMT를 사용하는 JTA에 의존할 수 있는 시스템들, 그리고 관리되"
+"지 않는 resource-local 환경들 사이에서 당신의 영속 계층에 이식성을 유지시키"
+"는 것이 자주 희망된다. 두 경우들에서 당신은 프로그램 상의 트랜잭션 경계설정"
+"을 사용할 것이다. Hibernate는 당신의 배치 환경의 고유한 트랜잭션 시스템 속으"
+"로 변환되는 <literal>Transaction</literal>이라 명명되는 wrapper API 를 제공한"
+"다. 이 API는 실제로 옵션이지만 우리는 당신이 CMT session bean 속에 있지 않는 "
+"한 그것의 사용을 강력하게 권장한다."
-#: index.docbook:379
-msgid "Usually, ending a <literal>Session</literal> involves four distinct phases:"
-msgstr "대개 <literal>Session</literal> 종료는 네 개의 구분되는 단계들을 수반한다:"
+#. Tag: para
+#: transactions.xml:379
+#, no-c-format
+msgid ""
+"Usually, ending a <literal>Session</literal> involves four distinct phases:"
+msgstr ""
+"대개 <literal>Session</literal> 종료는 네 개의 구분되는 단계들을 수반한다:"
-#: index.docbook:385
+#. Tag: para
+#: transactions.xml:385
+#, no-c-format
msgid "flush the session"
msgstr "세션을 flush 시킨다"
-#: index.docbook:390
+#. Tag: para
+#: transactions.xml:390
+#, no-c-format
msgid "commit the transaction"
msgstr "트랜잭션을 커밋 시킨다"
-#: index.docbook:395
+#. Tag: para
+#: transactions.xml:395
+#, no-c-format
msgid "close the session"
msgstr "세션을 닫는다"
-#: index.docbook:400
+#. Tag: para
+#: transactions.xml:400
+#, no-c-format
msgid "handle exceptions"
msgstr "예외상황들을 처리한다"
-#: index.docbook:406
-msgid "Flushing the session has been discussed earlier, we'll now have a closer look at transaction demarcation and exception handling in both managed- and non-managed environments."
-msgstr "세션을 flush 시키는 것은 앞서 논의되었고, 우리는 이제 관리되는 환경과 관리되지 않는 환경 양자에서 트랜잭션 경계 설정과 예외상황을 더 자세히 살펴볼 것이다."
+#. Tag: para
+#: transactions.xml:406
+#, no-c-format
+msgid ""
+"Flushing the session has been discussed earlier, we'll now have a closer "
+"look at transaction demarcation and exception handling in both managed- and "
+"non-managed environments."
+msgstr ""
+"세션을 flush 시키는 것은 앞서 논의되었고, 우리는 이제 관리되는 환경과 관리되"
+"지 않는 환경 양자에서 트랜잭션 경계 설정과 예외상황을 더 자세히 살펴볼 것이"
+"다."
-#: index.docbook:413
+#. Tag: title
+#: transactions.xml:413
+#, no-c-format
msgid "Non-managed environment"
msgstr "관리되지 않는 환경"
-#: index.docbook:415
-msgid "If a Hibernate persistence layer runs in a non-managed environment, database connections are usually handled by simple (i.e. non-DataSource) connection pools from which Hibernate obtains connections as needed. The session/transaction handling idiom looks like this:"
-msgstr "만일 Hibernate 영속 계층이 관리되지 않는(non-managed) 환경에서 실행될 경우, 데이터베이스 커넥션들은 대개 Hibernate가 필요로할 때 커넥션들을 획득하는 간단한 (예를 들면 DataSource가 아닌) 커넥션 풀(pool)들로부터 처리된다. session/transaction 처리 관용구는 다음과 같다:"
+#. Tag: para
+#: transactions.xml:415
+#, no-c-format
+msgid ""
+"If a Hibernate persistence layer runs in a non-managed environment, database "
+"connections are usually handled by simple (i.e. non-DataSource) connection "
+"pools from which Hibernate obtains connections as needed. The session/"
+"transaction handling idiom looks like this:"
+msgstr ""
+"만일 Hibernate 영속 계층이 관리되지 않는(non-managed) 환경에서 실행될 경우, "
+"데이터베이스 커넥션들은 대개 Hibernate가 필요로할 때 커넥션들을 획득하는 간단"
+"한 (예를 들면 DataSource가 아닌) 커넥션 풀(pool)들로부터 처리된다. session/"
+"transaction 처리 관용구는 다음과 같다:"
-#: index.docbook:422
+#. Tag: programlisting
+#: transactions.xml:422
+#, no-c-format
msgid ""
- "<![CDATA[// Non-managed environment idiom\n"
- "Session sess = factory.openSession();\n"
- "Transaction tx = null;\n"
- "try {\n"
- " tx = sess.beginTransaction();\n"
- "\n"
- " // do some work\n"
- " ...\n"
- "\n"
- " tx.commit();\n"
- "}\n"
- "catch (RuntimeException e) {\n"
- " if (tx != null) tx.rollback();\n"
- " throw e; // or display error message\n"
- "}\n"
- "finally {\n"
- " sess.close();\n"
- "}]]>"
+"<![CDATA[// Non-managed environment idiom\n"
+"Session sess = factory.openSession();\n"
+"Transaction tx = null;\n"
+"try {\n"
+" tx = sess.beginTransaction();\n"
+"\n"
+" // do some work\n"
+" ...\n"
+"\n"
+" tx.commit();\n"
+"}\n"
+"catch (RuntimeException e) {\n"
+" if (tx != null) tx.rollback();\n"
+" throw e; // or display error message\n"
+"}\n"
+"finally {\n"
+" sess.close();\n"
+"}]]>"
msgstr ""
- "<![CDATA[// Non-managed environment idiom\n"
- "Session sess = factory.openSession();\n"
- "Transaction tx = null;\n"
- "try {\n"
- " tx = sess.beginTransaction();\n"
- "\n"
- " // do some work\n"
- " ...\n"
- "\n"
- " tx.commit();\n"
- "}\n"
- "catch (RuntimeException e) {\n"
- " if (tx != null) tx.rollback();\n"
- " throw e; // or display error message\n"
- "}\n"
- "finally {\n"
- " sess.close();\n"
- "}]]>"
-#: index.docbook:424
-msgid "You don't have to <literal>flush()</literal> the <literal>Session</literal> explicitly - the call to <literal>commit()</literal> automatically triggers the synchronization (depending upon the <xref linkend=\"objectstate-flushing\"/>FlushMode for the session. A call to <literal>close()</literal> marks the end of a session. The main implication of <literal>close()</literal> is that the JDBC connection will be relinquished by the session. This Java code is portable and runs in both non-managed and JTA environments."
-msgstr "당신은 <literal>Session</literal>을 명시적으로 <literal>flush()</literal> 하지 말아야 한다 - <literal>commit()</literal>에 대한 호출은 (그 세션에 대한 <xref linkend=\"objectstate-flushing\"/>FlushMode에 따라)자동적으로 동기화를 트리거시킨다. <literal>close()</literal>에 대한 호출은 세션의 끝을 마크한다. <literal>close()</literal>의 주된 구현은 JDBC 커넥션이 그 세션에 의해 포기될 것이라는 점이다. 이 Java 코드는 관리되지 않는 환경과 JTA 환경 양자에서 이식성이 있고 실행된다."
+#. Tag: para
+#: transactions.xml:424
+#, no-c-format
+msgid ""
+"You don't have to <literal>flush()</literal> the <literal>Session</literal> "
+"explicitly - the call to <literal>commit()</literal> automatically triggers "
+"the synchronization (depending upon the <link linkend=\"objectstate-flushing"
+"\">FlushMode</link> for the session. A call to <literal>close()</literal> "
+"marks the end of a session. The main implication of <literal>close()</"
+"literal> is that the JDBC connection will be relinquished by the session. "
+"This Java code is portable and runs in both non-managed and JTA environments."
+msgstr ""
+"당신은 <literal>Session</literal>을 명시적으로 <literal>flush()</literal> 하"
+"지 말아야 한다 - <literal>commit()</literal>에 대한 호출은 (그 세션에 대한 "
+"<xref linkend=\"objectstate-flushing\">FlushMode</xref>에 따라)자동적으로 동"
+"기화를 트리거시킨다. <literal>close()</literal>에 대한 호출은 세션의 끝을 마"
+"크한다. <literal>close()</literal>의 주된 구현은 JDBC 커넥션이 그 세션에 의"
+"해 포기될 것이라는 점이다. 이 Java 코드는 관리되지 않는 환경과 JTA 환경 양자"
+"에서 이식성이 있고 실행된다."
-#: index.docbook:433
-msgid "A much more flexible solution is Hibernate's built-in \"current session\" context management, as described earlier:"
-msgstr "보다 더 유연한 해결책은 앞서 설명했듯이 Hibernate의 미리 빌드되어 있는 \"현재 세션\" 컨텍스트 관리이다:"
+#. Tag: para
+#: transactions.xml:433
+#, no-c-format
+msgid ""
+"A much more flexible solution is Hibernate's built-in \"current session\" "
+"context management, as described earlier:"
+msgstr ""
+"보다 더 유연한 해결책은 앞서 설명했듯이 Hibernate의 미리 빌드되어 있는 \"현"
+"재 세션\" 컨텍스트 관리이다:"
-#: index.docbook:438
+#. Tag: programlisting
+#: transactions.xml:438
+#, no-c-format
msgid ""
- "<![CDATA[// Non-managed environment idiom with getCurrentSession()\n"
- "try {\n"
- " factory.getCurrentSession().beginTransaction();\n"
- "\n"
- " // do some work\n"
- " ...\n"
- "\n"
- " factory.getCurrentSession().getTransaction().commit();\n"
- "}\n"
- "catch (RuntimeException e) {\n"
- " factory.getCurrentSession().getTransaction().rollback();\n"
- " throw e; // or display error message\n"
- "}]]>"
+"<![CDATA[// Non-managed environment idiom with getCurrentSession()\n"
+"try {\n"
+" factory.getCurrentSession().beginTransaction();\n"
+"\n"
+" // do some work\n"
+" ...\n"
+"\n"
+" factory.getCurrentSession().getTransaction().commit();\n"
+"}\n"
+"catch (RuntimeException e) {\n"
+" factory.getCurrentSession().getTransaction().rollback();\n"
+" throw e; // or display error message\n"
+"}]]>"
msgstr ""
- "<![CDATA[// Non-managed environment idiom with getCurrentSession()\n"
- "try {\n"
- " factory.getCurrentSession().beginTransaction();\n"
- "\n"
- " // do some work\n"
- " ...\n"
- "\n"
- " factory.getCurrentSession().getTransaction().commit();\n"
- "}\n"
- "catch (RuntimeException e) {\n"
- " factory.getCurrentSession().getTransaction().rollback();\n"
- " throw e; // or display error message\n"
- "}]]>"
-#: index.docbook:440
-msgid "You will very likely never see these code snippets in a regular application; fatal (system) exceptions should always be caught at the \"top\". In other words, the code that executes Hibernate calls (in the persistence layer) and the code that handles <literal>RuntimeException</literal> (and usually can only clean up and exit) are in different layers. The current context management by Hibernate can significantly simplify this design, as all you need is access to a <literal>SessionFactory</literal>. Exception handling is discussed later in this chapter."
-msgstr "당신은 통상의 어플리케이션에서 비지니스 코드 속에 이 관용구를 결코 보지 않을 것이다; 치명적인(시스템) 예외상황들은 항상 \"상단\"에서 잡혀야 한다. 달리 말해, (영속 계층에서) Hibernate 호출들을 실행시키는 코드와 <literal>RuntimeException</literal>을 처리하(고 대개 오직 제거하고 빠져나갈 수 있는) 코드는 다른 계층들 속에 있다. Hibernate에 의한 현재 컨텍스트 관리는 이 설계를 현격하게 단순화시켜서, 당신이 필요로 하는 모든 것은 <literal>SessionFactory</literal>에 대한 접근이다.예외상황 처리는 이 장의 뒷부분에서 논의된다."
+#. Tag: para
+#: transactions.xml:440
+#, no-c-format
+msgid ""
+"You will very likely never see these code snippets in a regular application; "
+"fatal (system) exceptions should always be caught at the \"top\". In other "
+"words, the code that executes Hibernate calls (in the persistence layer) and "
+"the code that handles <literal>RuntimeException</literal> (and usually can "
+"only clean up and exit) are in different layers. The current context "
+"management by Hibernate can significantly simplify this design, as all you "
+"need is access to a <literal>SessionFactory</literal>. Exception handling is "
+"discussed later in this chapter."
+msgstr ""
+"당신은 통상의 어플리케이션에서 비지니스 코드 속에 이 관용구를 결코 보지 않을 "
+"것이다; 치명적인(시스템) 예외상황들은 항상 \"상단\"에서 잡혀야 한다. 달리 말"
+"해, (영속 계층에서) Hibernate 호출들을 실행시키는 코드와 "
+"<literal>RuntimeException</literal>을 처리하(고 대개 오직 제거하고 빠져나갈 "
+"수 있는) 코드는 다른 계층들 속에 있다. Hibernate에 의한 현재 컨텍스트 관리는 "
+"이 설계를 현격하게 단순화시켜서, 당신이 필요로 하는 모든 것은 "
+"<literal>SessionFactory</literal>에 대한 접근이다.예외상황 처리는 이 장의 뒷"
+"부분에서 논의된다."
-#: index.docbook:450
-msgid "Note that you should select <literal>org.hibernate.transaction.JDBCTransactionFactory</literal> (which is the default), and for the second example <literal>\"thread\"</literal> as your <literal>hibernate.current_session_context_class</literal>."
-msgstr "당신은 (디폴트인) <literal>org.hibernate.transaction.JDBCTransactionFactory</literal>를 선택해야 하고, 두번째 예제의 경우 당신의 <literal>hibernate.current_session_context_class</literal>를 선택해야 함을 노트하라."
+#. Tag: para
+#: transactions.xml:450
+#, no-c-format
+msgid ""
+"Note that you should select <literal>org.hibernate.transaction."
+"JDBCTransactionFactory</literal> (which is the default), and for the second "
+"example <literal>\"thread\"</literal> as your <literal>hibernate."
+"current_session_context_class</literal>."
+msgstr ""
+"당신은 (디폴트인) <literal>org.hibernate.transaction.JDBCTransactionFactory</"
+"literal>를 선택해야 하고, 두번째 예제의 경우 당신의 <literal>hibernate."
+"current_session_context_class</literal>를 선택해야 함을 노트하라."
-#: index.docbook:459
+#. Tag: title
+#: transactions.xml:459
+#, no-c-format
msgid "Using JTA"
msgstr "JTA 사용하기"
-#: index.docbook:461
-msgid "If your persistence layer runs in an application server (e.g. behind EJB session beans), every datasource connection obtained by Hibernate will automatically be part of the global JTA transaction. You can also install a standalone JTA implementation and use it without EJB. Hibernate offers two strategies for JTA integration."
-msgstr "만일 당신의 영속 계층이 어플리케이션 서버에서(예를 들어, EJB 세션 빈즈 이면에서) 실행될 경우, Hibernate에 의해 획득된 모든 데이터소스 커넥션은 자동적으로 전역 JTA 트랜잭션의 부분일 것이다. 당신은 또한 스탠드얼론 JTA 구현을 설치할 수 있고 EJB 없이 그것을 사용할 수 있다. Hibernate는 JTA 통합을 위한 두 개의 방도들을 제공한다."
+#. Tag: para
+#: transactions.xml:461
+#, no-c-format
+msgid ""
+"If your persistence layer runs in an application server (e.g. behind EJB "
+"session beans), every datasource connection obtained by Hibernate will "
+"automatically be part of the global JTA transaction. You can also install a "
+"standalone JTA implementation and use it without EJB. Hibernate offers two "
+"strategies for JTA integration."
+msgstr ""
+"만일 당신의 영속 계층이 어플리케이션 서버에서(예를 들어, EJB 세션 빈즈 이면에"
+"서) 실행될 경우, Hibernate에 의해 획득된 모든 데이터소스 커넥션은 자동적으로 "
+"전역 JTA 트랜잭션의 부분일 것이다. 당신은 또한 스탠드얼론 JTA 구현을 설치할 "
+"수 있고 EJB 없이 그것을 사용할 수 있다. Hibernate는 JTA 통합을 위한 두 개의 "
+"방도들을 제공한다."
-#: index.docbook:468
-msgid "If you use bean-managed transactions (BMT) Hibernate will tell the application server to start and end a BMT transaction if you use the <literal>Transaction</literal> API. So, the transaction management code is identical to the non-managed environment."
-msgstr "만일 당신이 bean-managed transactions(BMT)를 사용할 경우 Hibernate는 당신이 <literal>Transaction</literal> API를 사용할 경우에 BMT 트랜잭션을 시작하고 종료하도록 어플리케이션 서버에게 알려줄 것이다. 따라서 트랜잭션 관리 코드는 non-managed 환경과 동일하다."
+#. Tag: para
+#: transactions.xml:468
+#, no-c-format
+msgid ""
+"If you use bean-managed transactions (BMT) Hibernate will tell the "
+"application server to start and end a BMT transaction if you use the "
+"<literal>Transaction</literal> API. So, the transaction management code is "
+"identical to the non-managed environment."
+msgstr ""
+"만일 당신이 bean-managed transactions(BMT)를 사용할 경우 Hibernate는 당신이 "
+"<literal>Transaction</literal> API를 사용할 경우에 BMT 트랜잭션을 시작하고 종"
+"료하도록 어플리케이션 서버에게 알려줄 것이다. 따라서 트랜잭션 관리 코드는 "
+"non-managed 환경과 동일하다."
-#: index.docbook:474
+#. Tag: programlisting
+#: transactions.xml:474
+#, no-c-format
msgid ""
- "<![CDATA[// BMT idiom\n"
- "Session sess = factory.openSession();\n"
- "Transaction tx = null;\n"
- "try {\n"
- " tx = sess.beginTransaction();\n"
- "\n"
- " // do some work\n"
- " ...\n"
- "\n"
- " tx.commit();\n"
- "}\n"
- "catch (RuntimeException e) {\n"
- " if (tx != null) tx.rollback();\n"
- " throw e; // or display error message\n"
- "}\n"
- "finally {\n"
- " sess.close();\n"
- "}]]>"
+"<![CDATA[// BMT idiom\n"
+"Session sess = factory.openSession();\n"
+"Transaction tx = null;\n"
+"try {\n"
+" tx = sess.beginTransaction();\n"
+"\n"
+" // do some work\n"
+" ...\n"
+"\n"
+" tx.commit();\n"
+"}\n"
+"catch (RuntimeException e) {\n"
+" if (tx != null) tx.rollback();\n"
+" throw e; // or display error message\n"
+"}\n"
+"finally {\n"
+" sess.close();\n"
+"}]]>"
msgstr ""
- "<![CDATA[// BMT idiom\n"
- "Session sess = factory.openSession();\n"
- "Transaction tx = null;\n"
- "try {\n"
- " tx = sess.beginTransaction();\n"
- "\n"
- " // do some work\n"
- " ...\n"
- "\n"
- " tx.commit();\n"
- "}\n"
- "catch (RuntimeException e) {\n"
- " if (tx != null) tx.rollback();\n"
- " throw e; // or display error message\n"
- "}\n"
- "finally {\n"
- " sess.close();\n"
- "}]]>"
-#: index.docbook:476
-msgid "If you want to use a transaction-bound <literal>Session</literal>, that is, the <literal>getCurrentSession()</literal> functionality for easy context propagation, you will have to use the JTA <literal>UserTransaction</literal> API directly:"
-msgstr "만일 당신이 트랜잭션에 묶인 <literal>Session</literal>, 즉 쉬운 컨텍스트 보급을 위한 <literal>getCurrentSession()</literal> 기능을 사용하고자 원할 경우, 당신은 JTA <literal>UserTransaction</literal> API를 직접 사용해야 할 것이다:"
+#. Tag: para
+#: transactions.xml:476
+#, no-c-format
+msgid ""
+"If you want to use a transaction-bound <literal>Session</literal>, that is, "
+"the <literal>getCurrentSession()</literal> functionality for easy context "
+"propagation, you will have to use the JTA <literal>UserTransaction</literal> "
+"API directly:"
+msgstr ""
+"만일 당신이 트랜잭션에 묶인 <literal>Session</literal>, 즉 쉬운 컨텍스트 보급"
+"을 위한 <literal>getCurrentSession()</literal> 기능을 사용하고자 원할 경우, "
+"당신은 JTA <literal>UserTransaction</literal> API를 직접 사용해야 할 것이다:"
-#: index.docbook:482
+#. Tag: programlisting
+#: transactions.xml:482
+#, no-c-format
msgid ""
- "<![CDATA[// BMT idiom with getCurrentSession()\n"
- "try {\n"
- " UserTransaction tx = (UserTransaction)new InitialContext()\n"
- " .lookup(\"java:comp/UserTransaction\");\n"
- "\n"
- " tx.begin();\n"
- "\n"
- " // Do some work on Session bound to transaction\n"
- " factory.getCurrentSession().load(...);\n"
- " factory.getCurrentSession().persist(...);\n"
- "\n"
- " tx.commit();\n"
- "}\n"
- "catch (RuntimeException e) {\n"
- " tx.rollback();\n"
- " throw e; // or display error message\n"
- "}]]>"
+"<![CDATA[// BMT idiom with getCurrentSession()\n"
+"try {\n"
+" UserTransaction tx = (UserTransaction)new InitialContext()\n"
+" .lookup(\"java:comp/UserTransaction\");\n"
+"\n"
+" tx.begin();\n"
+"\n"
+" // Do some work on Session bound to transaction\n"
+" factory.getCurrentSession().load(...);\n"
+" factory.getCurrentSession().persist(...);\n"
+"\n"
+" tx.commit();\n"
+"}\n"
+"catch (RuntimeException e) {\n"
+" tx.rollback();\n"
+" throw e; // or display error message\n"
+"}]]>"
msgstr ""
- "<![CDATA[// BMT idiom with getCurrentSession()\n"
- "try {\n"
- " UserTransaction tx = (UserTransaction)new InitialContext()\n"
- " .lookup(\"java:comp/UserTransaction\");\n"
- "\n"
- " tx.begin();\n"
- "\n"
- " // Do some work on Session bound to transaction\n"
- " factory.getCurrentSession().load(...);\n"
- " factory.getCurrentSession().persist(...);\n"
- "\n"
- " tx.commit();\n"
- "}\n"
- "catch (RuntimeException e) {\n"
- " tx.rollback();\n"
- " throw e; // or display error message\n"
- "}]]>"
-#: index.docbook:484
-msgid "With CMT, transaction demarcation is done in session bean deployment descriptors, not programatically, hence, the code is reduced to:"
-msgstr "CMT의 경우, 트랜잭션 관할[경계 설정]은 프로그램 상이 아닌, session bean 배치 디스크립터들 속에서 행해진다. 그러므로 코드는 다음으로 감소된다:"
+#. Tag: para
+#: transactions.xml:484
+#, no-c-format
+msgid ""
+"With CMT, transaction demarcation is done in session bean deployment "
+"descriptors, not programatically, hence, the code is reduced to:"
+msgstr ""
+"CMT의 경우, 트랜잭션 관할[경계 설정]은 프로그램 상이 아닌, session bean 배치 "
+"디스크립터들 속에서 행해진다. 그러므로 코드는 다음으로 감소된다:"
-#: index.docbook:489
+#. Tag: programlisting
+#: transactions.xml:489
+#, no-c-format
msgid ""
- "<![CDATA[// CMT idiom\n"
- " Session sess = factory.getCurrentSession();\n"
- "\n"
- " // do some work\n"
- " ...\n"
- "]]>"
+"<![CDATA[// CMT idiom\n"
+" Session sess = factory.getCurrentSession();\n"
+"\n"
+" // do some work\n"
+" ...\n"
+"]]>"
msgstr ""
- "<![CDATA[// CMT idiom\n"
- " Session sess = factory.getCurrentSession();\n"
- "\n"
- " // do some work\n"
- " ...\n"
- "]]>"
-#: index.docbook:491
-msgid "In a CMT/EJB even rollback happens automatically, since an unhandled <literal>RuntimeException</literal> thrown by a session bean method tells the container to set the global transaction to rollback. <emphasis>This means you do not need to use the Hibernate <literal>Transaction</literal> API at all with BMT or CMT, and you get automatic propagation of the \"current\" Session bound to the transaction.</emphasis>"
-msgstr "왜냐하면 하나의 세션 빈 메소드에 의해 던져진 처리되지 않은 <literal>RuntimeException</literal>이 글로벌 트랜잭션을 rollback으로 설정하도록 컨테이너에게 알려주기 때문에, CMT/EJB에서조차 롤백은 자동적으로 발생된다. <emphasis>이것은 당신이 BMT 이든 CMT이든 모두에서 Hibernate <literal>Transaction</literal> API를 사용할 필요가 없으며, 당신은 그 트랜잭션에 묶인 \"현재\" Session의 자동적인 보급(propagation)을 얻게 됨을 의미한다.</emphasis>"
+#. Tag: para
+#: transactions.xml:491
+#, no-c-format
+msgid ""
+"In a CMT/EJB even rollback happens automatically, since an unhandled "
+"<literal>RuntimeException</literal> thrown by a session bean method tells "
+"the container to set the global transaction to rollback. <emphasis>This "
+"means you do not need to use the Hibernate <literal>Transaction</literal> "
+"API at all with BMT or CMT, and you get automatic propagation of the "
+"\"current\" Session bound to the transaction.</emphasis>"
+msgstr ""
+"왜냐하면 하나의 세션 빈 메소드에 의해 던져진 처리되지 않은 "
+"<literal>RuntimeException</literal>이 글로벌 트랜잭션을 rollback으로 설정하도"
+"록 컨테이너에게 알려주기 때문에, CMT/EJB에서조차 롤백은 자동적으로 발생된다. "
+"<emphasis>이것은 당신이 BMT 이든 CMT이든 모두에서 Hibernate "
+"<literal>Transaction</literal> API를 사용할 필요가 없으며, 당신은 그 트랜잭션"
+"에 묶인 \"현재\" Session의 자동적인 보급(propagation)을 얻게 됨을 의미한다.</"
+"emphasis>"
-#: index.docbook:499
-msgid "Note that you should choose <literal>org.hibernate.transaction.JTATransactionFactory</literal> if you use JTA directly (BMT), and <literal>org.hibernate.transaction.CMTTransactionFactory</literal> in a CMT session bean, when you configure Hibernate's transaction factory. Remember to also set <literal>hibernate.transaction.manager_lookup_class</literal>. Furthermore, make sure that your <literal>hibernate.current_session_context_class</literal> is either unset (backwards compatiblity), or set to <literal>\"jta\"</literal>."
-msgstr "당신이 Hibernate의 트랜잭션 팩토리를 구성할 때, 당신이 JTA를 직접 사용할 경우(BMT) 당신은 <literal>org.hibernate.transaction.JTATransactionFactory</literal>를 선택해야하고, CMT session bean에서는 <literal>org.hibernate.transaction.CMTTransactionFactory</literal>를 선택해야 함을 노트하라. 또한 <literal>org.hibernate.transaction.manager_lookup_class</literal>를 설정하는 것을 염두에 두라. 게다가 반드시 당신의 <literal>hibernate.current_session_context_class</literal>이 설정되지 않도록 하거나(역호환성), 또는 <literal>\"jta\"</literal>로 설정되도록 하라."
+#. Tag: para
+#: transactions.xml:499
+#, no-c-format
+msgid ""
+"Note that you should choose <literal>org.hibernate.transaction."
+"JTATransactionFactory</literal> if you use JTA directly (BMT), and "
+"<literal>org.hibernate.transaction.CMTTransactionFactory</literal> in a CMT "
+"session bean, when you configure Hibernate's transaction factory. Remember "
+"to also set <literal>hibernate.transaction.manager_lookup_class</literal>. "
+"Furthermore, make sure that your <literal>hibernate."
+"current_session_context_class</literal> is either unset (backwards "
+"compatiblity), or set to <literal>\"jta\"</literal>."
+msgstr ""
+"당신이 Hibernate의 트랜잭션 팩토리를 구성할 때, 당신이 JTA를 직접 사용할 경우"
+"(BMT) 당신은 <literal>org.hibernate.transaction.JTATransactionFactory</"
+"literal>를 선택해야하고, CMT session bean에서는 <literal>org.hibernate."
+"transaction.CMTTransactionFactory</literal>를 선택해야 함을 노트하라. 또한 "
+"<literal>org.hibernate.transaction.manager_lookup_class</literal>를 설정하는 "
+"것을 염두에 두라. 게다가 반드시 당신의 <literal>hibernate."
+"current_session_context_class</literal>이 설정되지 않도록 하거나(역호환성), "
+"또는 <literal>\"jta\"</literal>로 설정되도록 하라."
-#: index.docbook:508
-msgid "The <literal>getCurrentSession()</literal> operation has one downside in a JTA environment. There is one caveat to the use of <literal>after_statement</literal> connection release mode, which is then used by default. Due to a silly limitation of the JTA spec, it is not possible for Hibernate to automatically clean up any unclosed <literal>ScrollableResults</literal> or <literal>Iterator</literal> instances returned by <literal>scroll()</literal> or <literal>iterate()</literal>. You <emphasis>must</emphasis> release the underlying database cursor by calling <literal>ScrollableResults.close()</literal> or <literal>Hibernate.close(Iterator)</literal> explicity from a <literal>finally</literal> block. (Of course, most applications can easily avoid using <literal>scroll()</literal> or <literal>iterate()</literal> at all from the JTA or CMT code.)"
-msgstr "<literal>getCurrentSession()</literal> 오퍼레이션들은 JTA 환경에서 한 가지 단점을 갖고 있다. 디폴트로 사용되는, <literal>after_statement</literal> 커넥션 해제 모드 사용에 대한 하나의 보류 통보가 존재한다. JTA 명세서의 어리석은 제한으로 인해, Hibernate가 <literal>scroll()</literal> 또는 <literal>iterate()</literal>에 의해 반환되는 임의의 닫혀지지 않은 <literal>ScrollableResults</literal> 또는 <literal>Iterator</literal> 인스턴스들을 자동적으로 제거하는 것이 불가능하다. 당신은 <literal>finally</literal> 블록 내에서 명시적으로 <literal>ScrollableResults.close()</literal> 또는 <literal>Hibernate.close(Iterator)</literal>를 호출하여 기본 데이터베이스 커서를 해제<emphasis>시켜야 한다</emphasis>.(물론 대부분의 어플리케이션들은 JTA 또는 CMT 코드에서 <literal>scroll()</literal>이나 <literal>iterate()</litera!
l>를 사용하는 것을 쉽게 피할 수 있다.)"
+#. Tag: para
+#: transactions.xml:508
+#, no-c-format
+msgid ""
+"The <literal>getCurrentSession()</literal> operation has one downside in a "
+"JTA environment. There is one caveat to the use of <literal>after_statement</"
+"literal> connection release mode, which is then used by default. Due to a "
+"silly limitation of the JTA spec, it is not possible for Hibernate to "
+"automatically clean up any unclosed <literal>ScrollableResults</literal> or "
+"<literal>Iterator</literal> instances returned by <literal>scroll()</"
+"literal> or <literal>iterate()</literal>. You <emphasis>must</emphasis> "
+"release the underlying database cursor by calling <literal>ScrollableResults."
+"close()</literal> or <literal>Hibernate.close(Iterator)</literal> explicity "
+"from a <literal>finally</literal> block. (Of course, most applications can "
+"easily avoid using <literal>scroll()</literal> or <literal>iterate()</"
+"literal> at all from the JTA or CMT code.)"
+msgstr ""
+"<literal>getCurrentSession()</literal> 오퍼레이션들은 JTA 환경에서 한 가지 단"
+"점을 갖고 있다. 디폴트로 사용되는, <literal>after_statement</literal> 커넥션 "
+"해제 모드 사용에 대한 하나의 보류 통보가 존재한다. JTA 명세서의 어리석은 제한"
+"으로 인해, Hibernate가 <literal>scroll()</literal> 또는 <literal>iterate()</"
+"literal>에 의해 반환되는 임의의 닫혀지지 않은 <literal>ScrollableResults</"
+"literal> 또는 <literal>Iterator</literal> 인스턴스들을 자동적으로 제거하는 것"
+"이 불가능하다. 당신은 <literal>finally</literal> 블록 내에서 명시적으로 "
+"<literal>ScrollableResults.close()</literal> 또는 <literal>Hibernate.close"
+"(Iterator)</literal>를 호출하여 기본 데이터베이스 커서를 해제<emphasis>시켜"
+"야 한다</emphasis>.(물론 대부분의 어플리케이션들은 JTA 또는 CMT 코드에서 "
+"<literal>scroll()</literal>이나 <literal>iterate()</literal>를 사용하는 것을 "
+"쉽게 피할 수 있다.)"
-#: index.docbook:524
+#. Tag: title
+#: transactions.xml:524
+#, no-c-format
msgid "Exception handling"
msgstr "예외상황 처리"
-#: index.docbook:526
-msgid "If the <literal>Session</literal> throws an exception (including any <literal>SQLException</literal>), you should immediately rollback the database transaction, call <literal>Session.close()</literal> and discard the <literal>Session</literal> instance. Certain methods of <literal>Session</literal> will <emphasis>not</emphasis> leave the session in a consistent state. No exception thrown by Hibernate can be treated as recoverable. Ensure that the <literal>Session</literal> will be closed by calling <literal>close()</literal> in a <literal>finally</literal> block."
-msgstr "만일<literal>Session</literal>이 (어떤 <literal>SQLException</literal>을 포함하는) 예외상황을 던질 경우, 당신은 데이터베이스 트랜잭션을 즉시 롤백시키고, <literal>Session.close()</literal>를 호출하고 <literal>Session</literal> 인스턴스를 폐기시켜야한다. <literal>Session</literal>의 어떤 메소드들은 그 세션을 일관된 상태로 남겨두지 <emphasis>않을</emphasis> 것이다. Hibernate에 의해 던져진 예외상황은 복구가능한 것으로 취급될 수 없다. 그 <literal>Session</literal>이 <literal>finally</literal> 블록 내에서 <literal>close()</literal>를 호출하여 닫혀지도록 확실히 하라."
+#. Tag: para
+#: transactions.xml:526
+#, no-c-format
+msgid ""
+"If the <literal>Session</literal> throws an exception (including any "
+"<literal>SQLException</literal>), you should immediately rollback the "
+"database transaction, call <literal>Session.close()</literal> and discard "
+"the <literal>Session</literal> instance. Certain methods of "
+"<literal>Session</literal> will <emphasis>not</emphasis> leave the session "
+"in a consistent state. No exception thrown by Hibernate can be treated as "
+"recoverable. Ensure that the <literal>Session</literal> will be closed by "
+"calling <literal>close()</literal> in a <literal>finally</literal> block."
+msgstr ""
+"만일<literal>Session</literal>이 (어떤 <literal>SQLException</literal>을 포함"
+"하는) 예외상황을 던질 경우, 당신은 데이터베이스 트랜잭션을 즉시 롤백시키고, "
+"<literal>Session.close()</literal>를 호출하고 <literal>Session</literal> 인스"
+"턴스를 폐기시켜야한다. <literal>Session</literal>의 어떤 메소드들은 그 세션"
+"을 일관된 상태로 남겨두지 <emphasis>않을</emphasis> 것이다. Hibernate에 의해 "
+"던져진 예외상황은 복구가능한 것으로 취급될 수 없다. 그 <literal>Session</"
+"literal>이 <literal>finally</literal> 블록 내에서 <literal>close()</literal>"
+"를 호출하여 닫혀지도록 확실히 하라."
-#: index.docbook:537
-msgid "The <literal>HibernateException</literal>, which wraps most of the errors that can occur in a Hibernate persistence layer, is an unchecked exception (it wasn't in older versions of Hibernate). In our opinion, we shouldn't force the application developer to catch an unrecoverable exception at a low layer. In most systems, unchecked and fatal exceptions are handled in one of the first frames of the method call stack (i.e. in higher layers) and an error message is presented to the application user (or some other appropriate action is taken). Note that Hibernate might also throw other unchecked exceptions which are not a <literal>HibernateException</literal>. These are, again, not recoverable and appropriate action should be taken."
-msgstr "Hibernate 영속 계층에서 발생할 수 있는 대부분의 오류들을 포장하는, <literal>HibernateException</literal>은 체크되지 않은 예외상황이다(그것은 Hibernate의 이전 버전에는 없었다). 우리의 의견으로, 우리는 낮은 계층에서 복구불가능한 예외상황을 붙잡도록 어플리케이션 개발자에게 강제하지 않을 것이다. 대부분의 시스템들에서, 체크되지 않은 치명적인 예외상황들은 (예를 들어, 더 높은 계층에서) 메소드 호출 스택의 첫 번째 프레임들 중 하나 속에서 처리되고, 한 개의 오류 메시지가 어플리케이션 사용자에게 표시된다(또는 어떤 다른 적절한 액션이 취해진다). Hibernate는 또한 <literal>HibernateException</literal>이 아닌, 다른 체크되지 않은 예외상황들을 던질 수도 있음을 노트하라. 다시 이것들은 복구가능하지 않고 적절한 액션이 취해져야 한다."
+#. Tag: para
+#: transactions.xml:537
+#, no-c-format
+msgid ""
+"The <literal>HibernateException</literal>, which wraps most of the errors "
+"that can occur in a Hibernate persistence layer, is an unchecked exception "
+"(it wasn't in older versions of Hibernate). In our opinion, we shouldn't "
+"force the application developer to catch an unrecoverable exception at a low "
+"layer. In most systems, unchecked and fatal exceptions are handled in one of "
+"the first frames of the method call stack (i.e. in higher layers) and an "
+"error message is presented to the application user (or some other "
+"appropriate action is taken). Note that Hibernate might also throw other "
+"unchecked exceptions which are not a <literal>HibernateException</literal>. "
+"These are, again, not recoverable and appropriate action should be taken."
+msgstr ""
+"Hibernate 영속 계층에서 발생할 수 있는 대부분의 오류들을 포장하는, "
+"<literal>HibernateException</literal>은 체크되지 않은 예외상황이다(그것은 "
+"Hibernate의 이전 버전에는 없었다). 우리의 의견으로, 우리는 낮은 계층에서 복구"
+"불가능한 예외상황을 붙잡도록 어플리케이션 개발자에게 강제하지 않을 것이다. 대"
+"부분의 시스템들에서, 체크되지 않은 치명적인 예외상황들은 (예를 들어, 더 높은 "
+"계층에서) 메소드 호출 스택의 첫 번째 프레임들 중 하나 속에서 처리되고, 한 개"
+"의 오류 메시지가 어플리케이션 사용자에게 표시된다(또는 어떤 다른 적절한 액션"
+"이 취해진다). Hibernate는 또한 <literal>HibernateException</literal>이 아닌, "
+"다른 체크되지 않은 예외상황들을 던질 수도 있음을 노트하라. 다시 이것들은 복구"
+"가능하지 않고 적절한 액션이 취해져야 한다."
-#: index.docbook:549
-msgid "Hibernate wraps <literal>SQLException</literal>s thrown while interacting with the database in a <literal>JDBCException</literal>. In fact, Hibernate will attempt to convert the eexception into a more meningful subclass of <literal>JDBCException</literal>. The underlying <literal>SQLException</literal> is always available via <literal>JDBCException.getCause()</literal>. Hibernate converts the <literal>SQLException</literal> into an appropriate <literal>JDBCException</literal> subclass using the <literal>SQLExceptionConverter</literal> attached to the <literal>SessionFactory</literal>. By default, the <literal>SQLExceptionConverter</literal> is defined by the configured dialect; however, it is also possible to plug in a custom implementation (see the javadocs for the <literal>SQLExceptionConverterFactory</literal> class for details). The standard <literal>JDBCException</literal> subtypes are:"
-msgstr "Hibernate는 데이터베이스와 상호작용하는 동안에 던져진 <literal>SQLException</literal>들을 하나의 <literal>JDBCException</literal> 속에 포장한다. 사실, Hibernate는 그 예외상황을 <literal>JDBCException</literal>의 보다 의미있는 서브클래스로 변환하려고 시도할 것이다. 기본 <literal>SQLException</literal>은 <literal>JDBCException.getCause()</literal>를 통해 항상 이용 가능하다. Hibernate는<literal>SessionFactory</literal>에 첨부된 <literal>SQLExceptionConverter</literal>를 사용하여 <literal>SQLException</literal>을 적당한 하나의 <literal>JDBCException</literal> 서브클래스로 변환시킨다. 디폴트로 <literal>SQLExceptionConverter</literal>는 구성된 dialect에 의해 정의된다; 하지만 맞춤 구현 속에 플러그인 시키는 것이 또한 가능하다(상세한 것은 <literal>SQLExceptionConverterFactory</literal> 클래스에 관한 javadocs를 보라). �!
��준 <literal>JDBCException</literal> 서브타입은 다음과 같다:"
+#. Tag: para
+#: transactions.xml:549
+#, no-c-format
+msgid ""
+"Hibernate wraps <literal>SQLException</literal>s thrown while interacting "
+"with the database in a <literal>JDBCException</literal>. In fact, Hibernate "
+"will attempt to convert the eexception into a more meningful subclass of "
+"<literal>JDBCException</literal>. The underlying <literal>SQLException</"
+"literal> is always available via <literal>JDBCException.getCause()</"
+"literal>. Hibernate converts the <literal>SQLException</literal> into an "
+"appropriate <literal>JDBCException</literal> subclass using the "
+"<literal>SQLExceptionConverter</literal> attached to the "
+"<literal>SessionFactory</literal>. By default, the "
+"<literal>SQLExceptionConverter</literal> is defined by the configured "
+"dialect; however, it is also possible to plug in a custom implementation "
+"(see the javadocs for the <literal>SQLExceptionConverterFactory</literal> "
+"class for details). The standard <literal>JDBCException</literal> subtypes "
+"are:"
+msgstr ""
+"Hibernate는 데이터베이스와 상호작용하는 동안에 던져진 <literal>SQLException</"
+"literal>들을 하나의 <literal>JDBCException</literal> 속에 포장한다. 사실, "
+"Hibernate는 그 예외상황을 <literal>JDBCException</literal>의 보다 의미있는 서"
+"브클래스로 변환하려고 시도할 것이다. 기본 <literal>SQLException</literal>은 "
+"<literal>JDBCException.getCause()</literal>를 통해 항상 이용 가능하다. "
+"Hibernate는<literal>SessionFactory</literal>에 첨부된 "
+"<literal>SQLExceptionConverter</literal>를 사용하여 <literal>SQLException</"
+"literal>을 적당한 하나의 <literal>JDBCException</literal> 서브클래스로 변환시"
+"킨다. 디폴트로 <literal>SQLExceptionConverter</literal>는 구성된 dialect에 의"
+"해 정의된다; 하지만 맞춤 구현 속에 플러그인 시키는 것이 또한 가능하다(상세한 "
+"것은 <literal>SQLExceptionConverterFactory</literal> 클래스에 관한 javadocs"
+"를 보라). 표준 <literal>JDBCException</literal> 서브타입은 다음과 같다:"
-#: index.docbook:565
-msgid "<literal>JDBCConnectionException</literal> - indicates an error with the underlying JDBC communication."
-msgstr "<literal>JDBCConnectionException</literal> - 기본 JDBC 통신에 대한 오류를 나타낸다."
+#. Tag: para
+#: transactions.xml:565
+#, no-c-format
+msgid ""
+"<literal>JDBCConnectionException</literal> - indicates an error with the "
+"underlying JDBC communication."
+msgstr ""
+"<literal>JDBCConnectionException</literal> - 기본 JDBC 통신에 대한 오류를 나"
+"타낸다."
-#: index.docbook:571
-msgid "<literal>SQLGrammarException</literal> - indicates a grammar or syntax problem with the issued SQL."
-msgstr "<literal>SQLGrammarException</literal> - 생겨난 SQL에 대한 문법 또는 구문 문제점을 나타낸다."
+#. Tag: para
+#: transactions.xml:571
+#, no-c-format
+msgid ""
+"<literal>SQLGrammarException</literal> - indicates a grammar or syntax "
+"problem with the issued SQL."
+msgstr ""
+"<literal>SQLGrammarException</literal> - 생겨난 SQL에 대한 문법 또는 구문 문"
+"제점을 나타낸다."
-#: index.docbook:577
-msgid "<literal>ConstraintViolationException</literal> - indicates some form of integrity constraint violation."
-msgstr "<literal>ConstraintViolationException</literal> - 무결성 제약 위반에 관한 어떤 형식을 나타낸다."
+#. Tag: para
+#: transactions.xml:577
+#, no-c-format
+msgid ""
+"<literal>ConstraintViolationException</literal> - indicates some form of "
+"integrity constraint violation."
+msgstr ""
+"<literal>ConstraintViolationException</literal> - 무결성 제약 위반에 관한 어"
+"떤 형식을 나타낸다."
-#: index.docbook:583
-msgid "<literal>LockAcquisitionException</literal> - indicates an error acquiring a lock level necessary to perform the requested operation."
-msgstr "<literal>LockAcquisitionException</literal> - 요청된 오퍼레이션을 실행하는데 필수적인 잠금 레벨을 획득하는 오류를 나타낸다."
+#. Tag: para
+#: transactions.xml:583
+#, no-c-format
+msgid ""
+"<literal>LockAcquisitionException</literal> - indicates an error acquiring a "
+"lock level necessary to perform the requested operation."
+msgstr ""
+"<literal>LockAcquisitionException</literal> - 요청된 오퍼레이션을 실행하는데 "
+"필수적인 잠금 레벨을 획득하는 오류를 나타낸다."
-#: index.docbook:589
-msgid "<literal>GenericJDBCException</literal> - a generic exception which did not fall into any of the other categories."
-msgstr "<literal>GenericJDBCException</literal> - 다른 카테고리들 중 어떤 것으로 분류되지 않았던 일반적인 예외상황."
+#. Tag: para
+#: transactions.xml:589
+#, no-c-format
+msgid ""
+"<literal>GenericJDBCException</literal> - a generic exception which did not "
+"fall into any of the other categories."
+msgstr ""
+"<literal>GenericJDBCException</literal> - 다른 카테고리들 중 어떤 것으로 분류"
+"되지 않았던 일반적인 예외상황."
-#: index.docbook:599
+#. Tag: title
+#: transactions.xml:599
+#, no-c-format
msgid "Transaction timeout"
msgstr "트랜잭션 타임아웃"
-#: index.docbook:601
-msgid "One extremely important feature provided by a managed environment like EJB that is never provided for non-managed code is transaction timeout. Transaction timeouts ensure that no misbehaving transaction can indefinitely tie up resources while returning no response to the user. Outside a managed (JTA) environment, Hibernate cannot fully provide this functionality. However, Hibernate can at least control data access operations, ensuring that database level deadlocks and queries with huge result sets are limited by a defined timeout. In a managed environment, Hibernate can delegate transaction timeout to JTA. This functioanlity is abstracted by the Hibernate <literal>Transaction</literal> object."
-msgstr "관리되지 않는 코드에 대해서는 결코 제공되지 않는 EJB와 같이 관리되는 환경에 의해 제공되는 한 가지 극히 중요한 특징은 트랜잭션 타임아웃이다. 트랜잭션 타임아웃은 사용자에게 응답을 반환하지 않는 동안에 무례한 행동을 행하는 트랜잭션이 자원들을 무한정 묶어둘 수 없음을 보증해준다. 관리되는 (JTA) 환경 외부에서, Hibernate는 이 기능을 온전하게 제공할 수 없다. 하지만 Hibernate는 데이터베이스 레벨 데드락들과 거대한 결과 셋들을 가진 질의들이 정의된 타임아웃에 의해 제약되는 것을 보장함으로써 최소한 데이터 접근 오퍼레이션들을 제어할 수 있다. 관리되는 환경에서, Hibernate는 트랜잭션 타임아웃을 JTA에게 위임시킬 수 있다. 이 기능은 Hibernate <literal>Transaction</literal> 객체에 의해 추상화 된다."
+#. Tag: para
+#: transactions.xml:601
+#, no-c-format
+msgid ""
+"One extremely important feature provided by a managed environment like EJB "
+"that is never provided for non-managed code is transaction timeout. "
+"Transaction timeouts ensure that no misbehaving transaction can indefinitely "
+"tie up resources while returning no response to the user. Outside a managed "
+"(JTA) environment, Hibernate cannot fully provide this functionality. "
+"However, Hibernate can at least control data access operations, ensuring "
+"that database level deadlocks and queries with huge result sets are limited "
+"by a defined timeout. In a managed environment, Hibernate can delegate "
+"transaction timeout to JTA. This functioanlity is abstracted by the "
+"Hibernate <literal>Transaction</literal> object."
+msgstr ""
+"관리되지 않는 코드에 대해서는 결코 제공되지 않는 EJB와 같이 관리되는 환경에 "
+"의해 제공되는 한 가지 극히 중요한 특징은 트랜잭션 타임아웃이다. 트랜잭션 타임"
+"아웃은 사용자에게 응답을 반환하지 않는 동안에 무례한 행동을 행하는 트랜잭션"
+"이 자원들을 무한정 묶어둘 수 없음을 보증해준다. 관리되는 (JTA) 환경 외부에"
+"서, Hibernate는 이 기능을 온전하게 제공할 수 없다. 하지만 Hibernate는 데이터"
+"베이스 레벨 데드락들과 거대한 결과 셋들을 가진 질의들이 정의된 타임아웃에 의"
+"해 제약되는 것을 보장함으로써 최소한 데이터 접근 오퍼레이션들을 제어할 수 있"
+"다. 관리되는 환경에서, Hibernate는 트랜잭션 타임아웃을 JTA에게 위임시킬 수 있"
+"다. 이 기능은 Hibernate <literal>Transaction</literal> 객체에 의해 추상화 된"
+"다."
-#: index.docbook:614
+#. Tag: programlisting
+#: transactions.xml:614
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "Session sess = factory.openSession();\n"
- "try {\n"
- " //set transaction timeout to 3 seconds\n"
- " sess.getTransaction().setTimeout(3);\n"
- " sess.getTransaction().begin();\n"
- "\n"
- " // do some work\n"
- " ...\n"
- "\n"
- " sess.getTransaction().commit()\n"
- "}\n"
- "catch (RuntimeException e) {\n"
- " sess.getTransaction().rollback();\n"
- " throw e; // or display error message\n"
- "}\n"
- "finally {\n"
- " sess.close();\n"
- "}]]>"
+"<![CDATA[\n"
+"Session sess = factory.openSession();\n"
+"try {\n"
+" //set transaction timeout to 3 seconds\n"
+" sess.getTransaction().setTimeout(3);\n"
+" sess.getTransaction().begin();\n"
+"\n"
+" // do some work\n"
+" ...\n"
+"\n"
+" sess.getTransaction().commit()\n"
+"}\n"
+"catch (RuntimeException e) {\n"
+" sess.getTransaction().rollback();\n"
+" throw e; // or display error message\n"
+"}\n"
+"finally {\n"
+" sess.close();\n"
+"}]]>"
msgstr ""
- "<![CDATA[\n"
- "Session sess = factory.openSession();\n"
- "try {\n"
- " //set transaction timeout to 3 seconds\n"
- " sess.getTransaction().setTimeout(3);\n"
- " sess.getTransaction().begin();\n"
- "\n"
- " // do some work\n"
- " ...\n"
- "\n"
- " sess.getTransaction().commit()\n"
- "}\n"
- "catch (RuntimeException e) {\n"
- " sess.getTransaction().rollback();\n"
- " throw e; // or display error message\n"
- "}\n"
- "finally {\n"
- " sess.close();\n"
- "}]]>"
-#: index.docbook:616
-msgid "Note that <literal>setTimeout()</literal> may not be called in a CMT bean, where transaction timeouts must be defined declaratively."
-msgstr "<literal>setTimeout()</literal>은 CMT bean 내에서 호출도리 수 없음을 노트하라. 여기서 트랜잭션 타임아웃들은 선언적으로 정의되어야 한다."
+#. Tag: para
+#: transactions.xml:616
+#, no-c-format
+msgid ""
+"Note that <literal>setTimeout()</literal> may not be called in a CMT bean, "
+"where transaction timeouts must be defined declaratively."
+msgstr ""
+"<literal>setTimeout()</literal>은 CMT bean 내에서 호출도리 수 없음을 노트하"
+"라. 여기서 트랜잭션 타임아웃들은 선언적으로 정의되어야 한다."
-#: index.docbook:626
+#. Tag: title
+#: transactions.xml:626
+#, no-c-format
msgid "Optimistic concurrency control"
msgstr "Optimistic 동시성 제어"
-#: index.docbook:628
-msgid "The only approach that is consistent with high concurrency and high scalability is optimistic concurrency control with versioning. Version checking uses version numbers, or timestamps, to detect conflicting updates (and to prevent lost updates). Hibernate provides for three possible approaches to writing application code that uses optimistic concurrency. The use cases we show are in the context of long conversations, but version checking also has the benefit of preventing lost updates in single database transactions."
-msgstr "고도의 동시성과 고도의 가용성을 일치시키는 유일한 접근법은 버전화를 가진 optimistic동시성 제어이다. 버전 체킹은 업데이트 충돌을 검출하기 위해(그리고 업데이트 손실을 방지하기 위해) 버전 번호들 또는 timestamp들을 사용한다. Hibernate는 optimistic 동시성을 사용하는 어플리케이션 코드 작성에 세 가지 가능한 접근법들을 제공한다. 우리가 보여주는 쓰임새들은 장시간의 대화의 상황 속에 있지만, 버전 체킹 또한 단일 데이터베이스 트랜잭션들에서 업데이트 손실을 방지하는 이점을 갖고 있다."
+#. Tag: para
+#: transactions.xml:628
+#, no-c-format
+msgid ""
+"The only approach that is consistent with high concurrency and high "
+"scalability is optimistic concurrency control with versioning. Version "
+"checking uses version numbers, or timestamps, to detect conflicting updates "
+"(and to prevent lost updates). Hibernate provides for three possible "
+"approaches to writing application code that uses optimistic concurrency. The "
+"use cases we show are in the context of long conversations, but version "
+"checking also has the benefit of preventing lost updates in single database "
+"transactions."
+msgstr ""
+"고도의 동시성과 고도의 가용성을 일치시키는 유일한 접근법은 버전화를 가진 "
+"optimistic동시성 제어이다. 버전 체킹은 업데이트 충돌을 검출하기 위해(그리고 "
+"업데이트 손실을 방지하기 위해) 버전 번호들 또는 timestamp들을 사용한다. "
+"Hibernate는 optimistic 동시성을 사용하는 어플리케이션 코드 작성에 세 가지 가"
+"능한 접근법들을 제공한다. 우리가 보여주는 쓰임새들은 장시간의 대화의 상황 속"
+"에 있지만, 버전 체킹 또한 단일 데이터베이스 트랜잭션들에서 업데이트 손실을 방"
+"지하는 이점을 갖고 있다."
-#: index.docbook:639
+#. Tag: title
+#: transactions.xml:639
+#, no-c-format
msgid "Application version checking"
msgstr "어플리케이션 버전 체킹"
-#: index.docbook:641
-msgid "In an implementation without much help from Hibernate, each interaction with the database occurs in a new <literal>Session</literal> and the developer is responsible for reloading all persistent instances from the database before manipulating them. This approach forces the application to carry out its own version checking to ensure conversation transaction isolation. This approach is the least efficient in terms of database access. It is the approach most similar to entity EJBs."
-msgstr "하나의 구현에서 Hibernate로부터 많은 도움이 없이, 데이터베이스에 대한 각각의 상호작용은 새로운 <literal>Session</literal> 내에서 일어나고, 개발자는 영속 인스턴스들을 처리하기 전에 데이터베이스로부터 모든 영속 인스턴스들을 다시 로드시킬 책임이 있다. 이 접근법은 대화 트랜잭션을 확실히 격리시키기 위해 그것 자신의 버전 체킹을 수행하도록 어플리케이션에게 강제시킨다."
+#. Tag: para
+#: transactions.xml:641
+#, no-c-format
+msgid ""
+"In an implementation without much help from Hibernate, each interaction with "
+"the database occurs in a new <literal>Session</literal> and the developer is "
+"responsible for reloading all persistent instances from the database before "
+"manipulating them. This approach forces the application to carry out its own "
+"version checking to ensure conversation transaction isolation. This approach "
+"is the least efficient in terms of database access. It is the approach most "
+"similar to entity EJBs."
+msgstr ""
+"하나의 구현에서 Hibernate로부터 많은 도움이 없이, 데이터베이스에 대한 각각의 "
+"상호작용은 새로운 <literal>Session</literal> 내에서 일어나고, 개발자는 영속 "
+"인스턴스들을 처리하기 전에 데이터베이스로부터 모든 영속 인스턴스들을 다시 로"
+"드시킬 책임이 있다. 이 접근법은 대화 트랜잭션을 확실히 격리시키기 위해 그것 "
+"자신의 버전 체킹을 수행하도록 어플리케이션에게 강제시킨다."
-#: index.docbook:650
+#. Tag: programlisting
+#: transactions.xml:650
+#, no-c-format
msgid ""
- "<![CDATA[// foo is an instance loaded by a previous Session\n"
- "session = factory.openSession();\n"
- "Transaction t = session.beginTransaction();\n"
- "\n"
- "int oldVersion = foo.getVersion();\n"
- "session.load( foo, foo.getKey() ); // load the current state\n"
- "if ( oldVersion != foo.getVersion() ) throw new StaleObjectStateException();\n"
- "foo.setProperty(\"bar\");\n"
- "\n"
- "t.commit();\n"
- "session.close();]]>"
+"<![CDATA[// foo is an instance loaded by a previous Session\n"
+"session = factory.openSession();\n"
+"Transaction t = session.beginTransaction();\n"
+"\n"
+"int oldVersion = foo.getVersion();\n"
+"session.load( foo, foo.getKey() ); // load the current state\n"
+"if ( oldVersion != foo.getVersion() ) throw new StaleObjectStateException"
+"();\n"
+"foo.setProperty(\"bar\");\n"
+"\n"
+"t.commit();\n"
+"session.close();]]>"
msgstr ""
- "<![CDATA[// foo is an instance loaded by a previous Session\n"
- "session = factory.openSession();\n"
- "Transaction t = session.beginTransaction();\n"
- "\n"
- "int oldVersion = foo.getVersion();\n"
- "session.load( foo, foo.getKey() ); // load the current state\n"
- "if ( oldVersion != foo.getVersion() ) throw new StaleObjectStateException();\n"
- "foo.setProperty(\"bar\");\n"
- "\n"
- "t.commit();\n"
- "session.close();]]>"
-#: index.docbook:652
-msgid "The <literal>version</literal> property is mapped using <literal><version></literal>, and Hibernate will automatically increment it during flush if the entity is dirty."
-msgstr "version 프로퍼티는 <literal><version></literal>을 사용하여 매핑되고, Hibernate는 만일 엔티티가 dirty일 경우 flush 동안에 그것을 자동적으로 증가시킬 것이다."
+#. Tag: para
+#: transactions.xml:652
+#, no-c-format
+msgid ""
+"The <literal>version</literal> property is mapped using <literal><"
+"version></literal>, and Hibernate will automatically increment it during "
+"flush if the entity is dirty."
+msgstr ""
+"version 프로퍼티는 <literal><version></literal>을 사용하여 매핑되고, "
+"Hibernate는 만일 엔티티가 dirty일 경우 flush 동안에 그것을 자동적으로 증가시"
+"킬 것이다."
-#: index.docbook:658
-msgid "Of course, if you are operating in a low-data-concurrency environment and don't require version checking, you may use this approach and just skip the version check. In that case, <emphasis>last commit wins</emphasis> will be the default strategy for your long conversations. Keep in mind that this might confuse the users of the application, as they might experience lost updates without error messages or a chance to merge conflicting changes."
-msgstr "물론, 당신이 낮은 데이터 동시성 환경에서 작업하고 있고 버전 체킹을 필요로 하지 않을 경우에, 당신은 이 접근법을 사용할 수 도 있고 단지 버전 체크를 생략할 수도 있다. 그 경우에, <emphasis>마지막의 커밋 성공</emphasis>은 당신의 장시간의 대화에 대한 디폴트 방도가 될 것이다. 이것이 어플리케이션의 사용자들을 혼동시킬 수 있음을 염두에 두라. 왜냐하면 사용자들은 오류 메시지들 또는 충돌 변경들을 병합시킬 기회 없이 업데이트들 손실을 겪을 수도 있기 때문이다."
+#. Tag: para
+#: transactions.xml:658
+#, no-c-format
+msgid ""
+"Of course, if you are operating in a low-data-concurrency environment and "
+"don't require version checking, you may use this approach and just skip the "
+"version check. In that case, <emphasis>last commit wins</emphasis> will be "
+"the default strategy for your long conversations. Keep in mind that this "
+"might confuse the users of the application, as they might experience lost "
+"updates without error messages or a chance to merge conflicting changes."
+msgstr ""
+"물론, 당신이 낮은 데이터 동시성 환경에서 작업하고 있고 버전 체킹을 필요로 하"
+"지 않을 경우에, 당신은 이 접근법을 사용할 수 도 있고 단지 버전 체크를 생략할 "
+"수도 있다. 그 경우에, <emphasis>마지막의 커밋 성공</emphasis>은 당신의 장시간"
+"의 대화에 대한 디폴트 방도가 될 것이다. 이것이 어플리케이션의 사용자들을 혼동"
+"시킬 수 있음을 염두에 두라. 왜냐하면 사용자들은 오류 메시지들 또는 충돌 변경"
+"들을 병합시킬 기회 없이 업데이트들 손실을 겪을 수도 있기 때문이다."
-#: index.docbook:667
-msgid "Clearly, manual version checking is only feasible in very trivial circumstances and not practical for most applications. Often not only single instances, but complete graphs of modified ojects have to be checked. Hibernate offers automatic version checking with either an extended <literal>Session</literal> or detached instances as the design paradigm."
-msgstr "명료하게 수작업 버전 체킹은 매우 사소한 환경들에서도 공포적이고 대부분의 어플리케이션들에 대해 실제적이지 않다. 흔히 단일 인스턴스 뿐만 아니라 변경된 객체들의 전체 그래프들이 체크되어야 한다. Hibernate는 설계 패러다임으로서 하나의 확장된 <literal>Session</literal> 또는 detached 인스턴스들에 대해 자동적인 버전 체킹을 제공한다."
+#. Tag: para
+#: transactions.xml:667
+#, no-c-format
+msgid ""
+"Clearly, manual version checking is only feasible in very trivial "
+"circumstances and not practical for most applications. Often not only single "
+"instances, but complete graphs of modified ojects have to be checked. "
+"Hibernate offers automatic version checking with either an extended "
+"<literal>Session</literal> or detached instances as the design paradigm."
+msgstr ""
+"명료하게 수작업 버전 체킹은 매우 사소한 환경들에서도 공포적이고 대부분의 어플"
+"리케이션들에 대해 실제적이지 않다. 흔히 단일 인스턴스 뿐만 아니라 변경된 객체"
+"들의 전체 그래프들이 체크되어야 한다. Hibernate는 설계 패러다임으로서 하나의 "
+"확장된 <literal>Session</literal> 또는 detached 인스턴스들에 대해 자동적인 버"
+"전 체킹을 제공한다."
-#: index.docbook:678
+#. Tag: title
+#: transactions.xml:678
+#, no-c-format
msgid "Extended session and automatic versioning"
msgstr "확장된 세션과 자동적인 버전화"
-#: index.docbook:680
-msgid "A single <literal>Session</literal> instance and its persistent instances are used for the whole conversation, known as <emphasis>session-per-conversation</emphasis>. Hibernate checks instance versions at flush time, throwing an exception if concurrent modification is detected. It's up to the developer to catch and handle this exception (common options are the opportunity for the user to merge changes or to restart the business conversation with non-stale data)."
-msgstr "하나의 <literal>Session</literal> 인스턴스와 그것의 영속 인스턴스들은 전체 어플리케이션 트랜잭션에 사용된다. Hibernate는 flush 할 때 인스턴스 버전들을 체크하고 만일 동시성 변경이 검출될 경우에 예외상황을 던진다. 이 예외상황을 잡아내고 처리하는 것을 개발자의 몫이다(공통된 옵션들은 변경들을 병합시키거나 또는 쓸모가 없지 않은 데이터로 비지니스 프로세스를 다시 시작하는 기회를 사용자에게 주는 것이다). 하나의 <literal>Session</literal> 인스턴스와 그것의 영속 인스턴스들은 <emphasis>session-per-conversation</emphasis>로 알려진 전체 대화에 사용된다. Hibernate는 flush 시점에서 인스턴스 버전들을 체크하며, 만일 동시적인 변경이 검출될 경우에 하나의 예외상황을 던진다. 이 예외상황을 포착하고 처리하는 것은 개발자의 몫이다(공통된 �!
�션들은 사용자가 변경들을 병합하거나 손실되지 않은 데이터를 가지고 비지니스 대화를 재시작하는 기회이다)."
+#. Tag: para
+#: transactions.xml:680
+#, no-c-format
+msgid ""
+"A single <literal>Session</literal> instance and its persistent instances "
+"are used for the whole conversation, known as <emphasis>session-per-"
+"conversation</emphasis>. Hibernate checks instance versions at flush time, "
+"throwing an exception if concurrent modification is detected. It's up to the "
+"developer to catch and handle this exception (common options are the "
+"opportunity for the user to merge changes or to restart the business "
+"conversation with non-stale data)."
+msgstr ""
+"하나의 <literal>Session</literal> 인스턴스와 그것의 영속 인스턴스들은 전체 어"
+"플리케이션 트랜잭션에 사용된다. Hibernate는 flush 할 때 인스턴스 버전들을 체"
+"크하고 만일 동시성 변경이 검출될 경우에 예외상황을 던진다. 이 예외상황을 잡아"
+"내고 처리하는 것을 개발자의 몫이다(공통된 옵션들은 변경들을 병합시키거나 또"
+"는 쓸모가 없지 않은 데이터로 비지니스 프로세스를 다시 시작하는 기회를 사용자"
+"에게 주는 것이다). 하나의 <literal>Session</literal> 인스턴스와 그것의 영속 "
+"인스턴스들은 <emphasis>session-per-conversation</emphasis>로 알려진 전체 대화"
+"에 사용된다. Hibernate는 flush 시점에서 인스턴스 버전들을 체크하며, 만일 동시"
+"적인 변경이 검출될 경우에 하나의 예외상황을 던진다. 이 예외상황을 포착하고 처"
+"리하는 것은 개발자의 몫이다(공통된 옵션들은 사용자가 변경들을 병합하거나 손실"
+"되지 않은 데이터를 가지고 비지니스 대화를 재시작하는 기회이다)."
-#: index.docbook:689
-msgid "The <literal>Session</literal> is disconnected from any underlying JDBC connection when waiting for user interaction. This approach is the most efficient in terms of database access. The application need not concern itself with version checking or with reattaching detached instances, nor does it have to reload instances in every database transaction."
-msgstr "<literal>Session</literal>은 사용자 상호작용을 기다릴 때 어떤 기본 JDBC 커넥션으로부터 연결해제된다. 이 접근법은 데이터베이스 접근의 관점에서 보면 가장 효율적이다. 어플리케이션은 버전 체킹 또는 detached 인스턴스들을 재첨부하는 것에 그 자체 관계할 필요가 없거나 그것은 모든 데이터베이스 트랜잭션에서 인스턴스들을 다시 로드시킬 필요가 없다."
+#. Tag: para
+#: transactions.xml:689
+#, no-c-format
+msgid ""
+"The <literal>Session</literal> is disconnected from any underlying JDBC "
+"connection when waiting for user interaction. This approach is the most "
+"efficient in terms of database access. The application need not concern "
+"itself with version checking or with reattaching detached instances, nor "
+"does it have to reload instances in every database transaction."
+msgstr ""
+"<literal>Session</literal>은 사용자 상호작용을 기다릴 때 어떤 기본 JDBC 커넥"
+"션으로부터 연결해제된다. 이 접근법은 데이터베이스 접근의 관점에서 보면 가장 "
+"효율적이다. 어플리케이션은 버전 체킹 또는 detached 인스턴스들을 재첨부하는 것"
+"에 그 자체 관계할 필요가 없거나 그것은 모든 데이터베이스 트랜잭션에서 인스턴"
+"스들을 다시 로드시킬 필요가 없다."
-#: index.docbook:697
+#. Tag: programlisting
+#: transactions.xml:697
+#, no-c-format
msgid ""
- "<![CDATA[// foo is an instance loaded earlier by the old session\n"
- "Transaction t = session.beginTransaction(); // Obtain a new JDBC connection, start transaction\n"
- "\n"
- "foo.setProperty(\"bar\");\n"
- "\n"
- "session.flush(); // Only for last transaction in conversation\n"
- "t.commit(); // Also return JDBC connection\n"
- "session.close(); // Only for last transaction in conversation]]>"
+"<![CDATA[// foo is an instance loaded earlier by the old session\n"
+"Transaction t = session.beginTransaction(); // Obtain a new JDBC connection, "
+"start transaction\n"
+"\n"
+"foo.setProperty(\"bar\");\n"
+"\n"
+"session.flush(); // Only for last transaction in conversation\n"
+"t.commit(); // Also return JDBC connection\n"
+"session.close(); // Only for last transaction in conversation]]>"
msgstr ""
- "<![CDATA[// foo is an instance loaded earlier by the old session\n"
- "Transaction t = session.beginTransaction(); // Obtain a new JDBC connection, start transaction\n"
- "\n"
- "foo.setProperty(\"bar\");\n"
- "\n"
- "session.flush(); // Only for last transaction in conversation\n"
- "t.commit(); // Also return JDBC connection\n"
- "session.close(); // Only for last transaction in conversation]]>"
-#: index.docbook:698
-msgid "The <literal>foo</literal> object still knows which <literal>Session</literal> it was loaded in. Beginning a new database transaction on an old session obtains a new connection and resumes the session. Committing a database transaction disconnects a session from the JDBC connection and returns the connection to the pool. After reconnection, to force a version check on data you aren't updating, you may call <literal>Session.lock()</literal> with <literal>LockMode.READ</literal> on any objects that might have been updated by another transaction. You don't need to lock any data that you <emphasis>are</emphasis> updating. Usually you would set <literal>FlushMode.MANUAL</literal> on an extended <literal>Session</literal>, so that only the last database transaction cycle is allowed to actually persist all modifications made in this conversation. Hence, only this last database transaction would include the <literal>flush()</literal> operation, and then also <literal>close()!
</literal> the session to end the conversation."
-msgstr "<literal>foo</literal> 객체는 그것이 로드되었던 <literal>Session</literal>이 어느 것인지를 여전히 알고 있다. 이전 세션 상에서 하나의 새로운 데이터베이스 트랜잭션을 시작하는 것은 하나의 새로운 커넥션을 획득하고 그 세션을 소비한다. 데이터베이스 트랜잭션을 커밋(확약)시키는 것은 그 JDBC 커넥션으로부터 하나의 세션을 연결해제시키고 그 커넥션을 풀(pool)로 반환시킬 것이다. 재연결 후에, 당신이 업데이트하고 있지 않은 데이터에 대한 버전 체크를 강제시키기 위해서, 당신은 또 다른 트랜잭션에 의해 업데이트되었을 수도 있는 임의의 객체들에 대해 <literal>LockMode.READ</literal>로서 <literal>Session.lock()</literal>을 호출할 수도 있다. 당신은 당신이 업데이트 중인 임의의 데이터를 잠금할 필요가 없다. 대개 당신은 마지막 데이터베이스 트랜�!
��션 주기만이 이 대화 내에서 행해진 모든 변경들을 실제로 영속화시키는 것이 허용되도록 하기 위해, 하나의 확장된 <literal>Session</literal>에 대해 <literal>FlushMode.MANUAL</literal>를 설정할 것이다. 그러므로 오직 이 마지막 데이터베이스 트랜잭션 만이 <literal>flush()</literal> 오퍼레이션을 포함할 것이고, 또한 대화를 종료시키기 위해 세션을 <literal>close()</literal>할 것이다."
+#. Tag: para
+#: transactions.xml:698
+#, no-c-format
+msgid ""
+"The <literal>foo</literal> object still knows which <literal>Session</"
+"literal> it was loaded in. Beginning a new database transaction on an old "
+"session obtains a new connection and resumes the session. Committing a "
+"database transaction disconnects a session from the JDBC connection and "
+"returns the connection to the pool. After reconnection, to force a version "
+"check on data you aren't updating, you may call <literal>Session.lock()</"
+"literal> with <literal>LockMode.READ</literal> on any objects that might "
+"have been updated by another transaction. You don't need to lock any data "
+"that you <emphasis>are</emphasis> updating. Usually you would set "
+"<literal>FlushMode.MANUAL</literal> on an extended <literal>Session</"
+"literal>, so that only the last database transaction cycle is allowed to "
+"actually persist all modifications made in this conversation. Hence, only "
+"this last database transaction would include the <literal>flush()</literal> "
+"operation, and then also <literal>close()</literal> the session to end the "
+"conversation."
+msgstr ""
+"<literal>foo</literal> 객체는 그것이 로드되었던 <literal>Session</literal>이 "
+"어느 것인지를 여전히 알고 있다. 이전 세션 상에서 하나의 새로운 데이터베이스 "
+"트랜잭션을 시작하는 것은 하나의 새로운 커넥션을 획득하고 그 세션을 소비한다. "
+"데이터베이스 트랜잭션을 커밋(확약)시키는 것은 그 JDBC 커넥션으로부터 하나의 "
+"세션을 연결해제시키고 그 커넥션을 풀(pool)로 반환시킬 것이다. 재연결 후에, 당"
+"신이 업데이트하고 있지 않은 데이터에 대한 버전 체크를 강제시키기 위해서, 당신"
+"은 또 다른 트랜잭션에 의해 업데이트되었을 수도 있는 임의의 객체들에 대해 "
+"<literal>LockMode.READ</literal>로서 <literal>Session.lock()</literal>을 호출"
+"할 수도 있다. 당신은 당신이 업데이트 중인 임의의 데이터를 잠금할 필요가 없"
+"다. 대개 당신은 마지막 데이터베이스 트랜잭션 주기만이 이 대화 내에서 행해진 "
+"모든 변경들을 실제로 영속화시키는 것이 허용되도록 하기 위해, 하나의 확장된 "
+"<literal>Session</literal>에 대해 <literal>FlushMode.MANUAL</literal>를 설정"
+"할 것이다. 그러므로 오직 이 마지막 데이터베이스 트랜잭션 만이 <literal>flush"
+"()</literal> 오퍼레이션을 포함할 것이고, 또한 대화를 종료시키기 위해 세션을 "
+"<literal>close()</literal>할 것이다."
-#: index.docbook:713
-msgid "This pattern is problematic if the <literal>Session</literal> is too big to be stored during user think time, e.g. an <literal>HttpSession</literal> should be kept as small as possible. As the <literal>Session</literal> is also the (mandatory) first-level cache and contains all loaded objects, we can probably use this strategy only for a few request/response cycles. You should use a <literal>Session</literal> only for a single conversation, as it will soon also have stale data."
-msgstr "만일 사용자가 생각하는시간 동안 <literal>Session</literal>이 저장되기에 너무 큰 경우 이 패턴은 문제성이 있다. 예를 들어 <literal>HttpSession</literal>은 가능한 작은 것으로 유지되어야 한다. 또한 <literal>Session</literal>은 (필수의) 첫 번째 레벨 캐시이고 모든 로드된 객체들을 포함하기 때문에, 우리는 아마 적은 요청/응답 주기들에 대해서만 이 방도를 사용할 수 있다. 당신은 하나의 대화에 대해서만 하나의 <literal>Session</literal>을 사용해야 한다. 왜냐하면 그것은 또한 곧 실없는 데이터가 될 것이기 때문이다."
+#. Tag: para
+#: transactions.xml:713
+#, no-c-format
+msgid ""
+"This pattern is problematic if the <literal>Session</literal> is too big to "
+"be stored during user think time, e.g. an <literal>HttpSession</literal> "
+"should be kept as small as possible. As the <literal>Session</literal> is "
+"also the (mandatory) first-level cache and contains all loaded objects, we "
+"can probably use this strategy only for a few request/response cycles. You "
+"should use a <literal>Session</literal> only for a single conversation, as "
+"it will soon also have stale data."
+msgstr ""
+"만일 사용자가 생각하는시간 동안 <literal>Session</literal>이 저장되기에 너무 "
+"큰 경우 이 패턴은 문제성이 있다. 예를 들어 <literal>HttpSession</literal>은 "
+"가능한 작은 것으로 유지되어야 한다. 또한 <literal>Session</literal>은 (필수"
+"의) 첫 번째 레벨 캐시이고 모든 로드된 객체들을 포함하기 때문에, 우리는 아마 "
+"적은 요청/응답 주기들에 대해서만 이 방도를 사용할 수 있다. 당신은 하나의 대화"
+"에 대해서만 하나의 <literal>Session</literal>을 사용해야 한다. 왜냐하면 그것"
+"은 또한 곧 실없는 데이터가 될 것이기 때문이다."
-#: index.docbook:723
-msgid "(Note that earlier Hibernate versions required explicit disconnection and reconnection of a <literal>Session</literal>. These methods are deprecated, as beginning and ending a transaction has the same effect.)"
-msgstr "(초기의 Hibernate 버전들은 <literal>Session</literal>에 대한 명시적인 연결해제와 재연결을 필요로 했음을 노트하라. 트랜잭션을 시작하고 끝내는 것이 동일한 효과를 가지므로, 이들 방법들은 진부하게 되었다.)"
+#. Tag: para
+#: transactions.xml:723
+#, no-c-format
+msgid ""
+"(Note that earlier Hibernate versions required explicit disconnection and "
+"reconnection of a <literal>Session</literal>. These methods are deprecated, "
+"as beginning and ending a transaction has the same effect.)"
+msgstr ""
+"(초기의 Hibernate 버전들은 <literal>Session</literal>에 대한 명시적인 연결해"
+"제와 재연결을 필요로 했음을 노트하라. 트랜잭션을 시작하고 끝내는 것이 동일한 "
+"효과를 가지므로, 이들 방법들은 진부하게 되었다.)"
-#: index.docbook:729
-msgid "Also note that you should keep the disconnected <literal>Session</literal> close to the persistence layer. In other words, use an EJB stateful session bean to hold the <literal>Session</literal> in a three-tier environment, and don't transfer it to the web layer (or even serialize it to a separate tier) to store it in the <literal>HttpSession</literal>."
-msgstr "또한 당신은 영속 계층에 대해 연결해제된 <literal>Session</literal>을 닫혀진채로 유지해야함을 노트하라. 달 리말해, 하나의 3-tier 환경에서 <literal>Session</literal>을 소유하는데 EJB stateful session bean을 사용하고, <literal>HttpSession</literal> 내에 그것을 저장하기 위해 그것을 웹 계층에 전송하지 말라 (또는 그것을 별도의 티어에 직렬화 시키지도 말라)."
+#. Tag: para
+#: transactions.xml:729
+#, no-c-format
+msgid ""
+"Also note that you should keep the disconnected <literal>Session</literal> "
+"close to the persistence layer. In other words, use an EJB stateful session "
+"bean to hold the <literal>Session</literal> in a three-tier environment, and "
+"don't transfer it to the web layer (or even serialize it to a separate tier) "
+"to store it in the <literal>HttpSession</literal>."
+msgstr ""
+"또한 당신은 영속 계층에 대해 연결해제된 <literal>Session</literal>을 닫혀진채"
+"로 유지해야함을 노트하라. 달 리말해, 하나의 3-tier 환경에서 "
+"<literal>Session</literal>을 소유하는데 EJB stateful session bean을 사용하"
+"고, <literal>HttpSession</literal> 내에 그것을 저장하기 위해 그것을 웹 계층"
+"에 전송하지 말라 (또는 그것을 별도의 티어에 직렬화 시키지도 말라)."
-#: index.docbook:737
-msgid "The extended session pattern, or <emphasis>session-per-conversation</emphasis>, is more difficult to implement with automatic current session context management. You need to supply your own implementation of the <literal>CurrentSessionContext</literal> for this, see the Hibernate Wiki for examples."
-msgstr "확장된 세션 패턴, 또는 <emphasis>session-per-conversation</emphasis>은 자동적인 현재 세션 컨텍스트 관리에 대해 구현하기가 더 어렵다. 당신은 이를 위해 당신 자신의 <literal>CurrentSessionContext</literal> 구현을 공급할 필요가 있으며, 예제들은 Hibernate Wiki를 보라."
+#. Tag: para
+#: transactions.xml:737
+#, no-c-format
+msgid ""
+"The extended session pattern, or <emphasis>session-per-conversation</"
+"emphasis>, is more difficult to implement with automatic current session "
+"context management. You need to supply your own implementation of the "
+"<literal>CurrentSessionContext</literal> for this, see the Hibernate Wiki "
+"for examples."
+msgstr ""
+"확장된 세션 패턴, 또는 <emphasis>session-per-conversation</emphasis>은 자동적"
+"인 현재 세션 컨텍스트 관리에 대해 구현하기가 더 어렵다. 당신은 이를 위해 당"
+"신 자신의 <literal>CurrentSessionContext</literal> 구현을 공급할 필요가 있으"
+"며, 예제들은 Hibernate Wiki를 보라."
-#: index.docbook:747
+#. Tag: title
+#: transactions.xml:747
+#, no-c-format
msgid "Detached objects and automatic versioning"
msgstr "Detached 객체들과 자동적인 버전화"
-#: index.docbook:749
-msgid "Each interaction with the persistent store occurs in a new <literal>Session</literal>. However, the same persistent instances are reused for each interaction with the database. The application manipulates the state of detached instances originally loaded in another <literal>Session</literal> and then reattaches them using <literal>Session.update()</literal>, <literal>Session.saveOrUpdate()</literal>, or <literal>Session.merge()</literal>."
-msgstr "영속 저장소에 대한 각각의 상호작용은 새로운 <literal>Session</literal>에서 일어난다. 하지만 동일한 영속 인스턴스들은 데이터베이스와의 각각의 상호작용에 재사용된다. 어플리케이션은 원래 로드되었던 detached 인스턴스들의 상태를 또 다른 <literal>Session</literal> 내에서 처리하고 나서 <literal>Session.update()</literal>, <literal>Session.saveOrUpdate()</literal>, <literal>Session.merge()</literal>를 사용하여 그것들을 다시 첨부시킨다."
+#. Tag: para
+#: transactions.xml:749
+#, no-c-format
+msgid ""
+"Each interaction with the persistent store occurs in a new <literal>Session</"
+"literal>. However, the same persistent instances are reused for each "
+"interaction with the database. The application manipulates the state of "
+"detached instances originally loaded in another <literal>Session</literal> "
+"and then reattaches them using <literal>Session.update()</literal>, "
+"<literal>Session.saveOrUpdate()</literal>, or <literal>Session.merge()</"
+"literal>."
+msgstr ""
+"영속 저장소에 대한 각각의 상호작용은 새로운 <literal>Session</literal>에서 일"
+"어난다. 하지만 동일한 영속 인스턴스들은 데이터베이스와의 각각의 상호작용에 재"
+"사용된다. 어플리케이션은 원래 로드되었던 detached 인스턴스들의 상태를 또 다"
+"른 <literal>Session</literal> 내에서 처리하고 나서 <literal>Session.update()"
+"</literal>, <literal>Session.saveOrUpdate()</literal>, <literal>Session.merge"
+"()</literal>를 사용하여 그것들을 다시 첨부시킨다."
-#: index.docbook:757
+#. Tag: programlisting
+#: transactions.xml:757
+#, no-c-format
msgid ""
- "<![CDATA[// foo is an instance loaded by a previous Session\n"
- "foo.setProperty(\"bar\");\n"
- "session = factory.openSession();\n"
- "Transaction t = session.beginTransaction();\n"
- "session.saveOrUpdate(foo); // Use merge() if \"foo\" might have been loaded already\n"
- "t.commit();\n"
- "session.close();]]>"
+"<![CDATA[// foo is an instance loaded by a previous Session\n"
+"foo.setProperty(\"bar\");\n"
+"session = factory.openSession();\n"
+"Transaction t = session.beginTransaction();\n"
+"session.saveOrUpdate(foo); // Use merge() if \"foo\" might have been loaded "
+"already\n"
+"t.commit();\n"
+"session.close();]]>"
msgstr ""
- "<![CDATA[// foo is an instance loaded by a previous Session\n"
- "foo.setProperty(\"bar\");\n"
- "session = factory.openSession();\n"
- "Transaction t = session.beginTransaction();\n"
- "session.saveOrUpdate(foo); // Use merge() if \"foo\" might have been loaded already\n"
- "t.commit();\n"
- "session.close();]]>"
-#: index.docbook:759
-msgid "Again, Hibernate will check instance versions during flush, throwing an exception if conflicting updates occured."
-msgstr "다시, Hibernate는 flush 동안에 인스턴스 버전들을 체크할 것이고 업데이트 충돌이 발생할 경우에 예외상황을 던질 것이다."
+#. Tag: para
+#: transactions.xml:759
+#, no-c-format
+msgid ""
+"Again, Hibernate will check instance versions during flush, throwing an "
+"exception if conflicting updates occured."
+msgstr ""
+"다시, Hibernate는 flush 동안에 인스턴스 버전들을 체크할 것이고 업데이트 충돌"
+"이 발생할 경우에 예외상황을 던질 것이다."
-#: index.docbook:764
-msgid "You may also call <literal>lock()</literal> instead of <literal>update()</literal> and use <literal>LockMode.READ</literal> (performing a version check, bypassing all caches) if you are sure that the object has not been modified."
-msgstr "당신은 또한 <literal>update()</literal>대신에 <literal>lock()</literal>을 호출할 수도 있고 만일 그 객체가 변경되지 않았음을 당신이 확신하는 경우에 (버전 체킹을 수행하고 모든 캐시들을 무시하는) <literal>LockMode.READ</literal>를 사용할 수 있다."
+#. Tag: para
+#: transactions.xml:764
+#, no-c-format
+msgid ""
+"You may also call <literal>lock()</literal> instead of <literal>update()</"
+"literal> and use <literal>LockMode.READ</literal> (performing a version "
+"check, bypassing all caches) if you are sure that the object has not been "
+"modified."
+msgstr ""
+"당신은 또한 <literal>update()</literal>대신에 <literal>lock()</literal>을 호"
+"출할 수도 있고 만일 그 객체가 변경되지 않았음을 당신이 확신하는 경우에 (버전 "
+"체킹을 수행하고 모든 캐시들을 무시하는) <literal>LockMode.READ</literal>를 사"
+"용할 수 있다."
-#: index.docbook:773
+#. Tag: title
+#: transactions.xml:773
+#, no-c-format
msgid "Customizing automatic versioning"
msgstr "자동적인 버전화를 맞춤화 시키기"
-#: index.docbook:775
-msgid "You may disable Hibernate's automatic version increment for particular properties and collections by setting the <literal>optimistic-lock</literal> mapping attribute to <literal>false</literal>. Hibernate will then no longer increment versions if the property is dirty."
-msgstr "당신은 <literal>optimistic-lock</literal> 매핑 속성을 <literal>false</literal>로 설정함으로써 특정 프로퍼티들과 콜렉션들에 대한 Hibernate의 자동적인 버전 증가를 불가능하도록 할 수도 있다. 그때 Hibernate는 그 프로퍼티가 dirty 일 경우에 더 이상 버전을 증가시키지 않을 것이다."
+#. Tag: para
+#: transactions.xml:775
+#, no-c-format
+msgid ""
+"You may disable Hibernate's automatic version increment for particular "
+"properties and collections by setting the <literal>optimistic-lock</literal> "
+"mapping attribute to <literal>false</literal>. Hibernate will then no longer "
+"increment versions if the property is dirty."
+msgstr ""
+"당신은 <literal>optimistic-lock</literal> 매핑 속성을 <literal>false</"
+"literal>로 설정함으로써 특정 프로퍼티들과 콜렉션들에 대한 Hibernate의 자동적"
+"인 버전 증가를 불가능하도록 할 수도 있다. 그때 Hibernate는 그 프로퍼티가 "
+"dirty 일 경우에 더 이상 버전을 증가시키지 않을 것이다."
-#: index.docbook:782
-msgid "Legacy database schemas are often static and can't be modified. Or, other applications might also access the same database and don't know how to handle version numbers or even timestamps. In both cases, versioning can't rely on a particular column in a table. To force a version check without a version or timestamp property mapping, with a comparison of the state of all fields in a row, turn on <literal>optimistic-lock=\"all\"</literal> in the <literal><class></literal> mapping. Note that this concepetually only works if Hibernate can compare the old and new state, i.e. if you use a single long <literal>Session</literal> and not session-per-request-with-detached-objects."
-msgstr "리거시 데이터베이스 스키마들은 자주 static이고 변경될 수 없다. 또는 다른 어플리케이션들은 또한 동일한 데이터베이스에 접근하고 버전 번호들 또는 심지어 timestamp들을 처리하는 방법을 모를 수도 있다. 두 경우들에서, 버전화는 테이블 내의 특정 컬럼에 의지할 수 없다. version 또는 timestamp 프로퍼티 매핑 없이 행 내의 모든 필드들에 대한 상태를 비교하여 버전 체크를 강제시키기 위해서, <literal><class></literal> 매핑 속에 <literal>optimistic-lock=\"all\"</literal>을 표시하라. 만일 Hibernate가 이전 상태와 새로운 상태를 비교할 수 있을 경우에, 예를 들면 당신이 하나의 긴 <literal>Session</literal>을 사용하고 session-per-request-with-detached-objects을 사용하지 않을 경우 이것은 개념적으로만 동작함을 노트하라."
+#. Tag: para
+#: transactions.xml:782
+#, no-c-format
+msgid ""
+"Legacy database schemas are often static and can't be modified. Or, other "
+"applications might also access the same database and don't know how to "
+"handle version numbers or even timestamps. In both cases, versioning can't "
+"rely on a particular column in a table. To force a version check without a "
+"version or timestamp property mapping, with a comparison of the state of all "
+"fields in a row, turn on <literal>optimistic-lock=\"all\"</literal> in the "
+"<literal><class></literal> mapping. Note that this concepetually only "
+"works if Hibernate can compare the old and new state, i.e. if you use a "
+"single long <literal>Session</literal> and not session-per-request-with-"
+"detached-objects."
+msgstr ""
+"리거시 데이터베이스 스키마들은 자주 static이고 변경될 수 없다. 또는 다른 어플"
+"리케이션들은 또한 동일한 데이터베이스에 접근하고 버전 번호들 또는 심지어 "
+"timestamp들을 처리하는 방법을 모를 수도 있다. 두 경우들에서, 버전화는 테이블 "
+"내의 특정 컬럼에 의지할 수 없다. version 또는 timestamp 프로퍼티 매핑 없이 "
+"행 내의 모든 필드들에 대한 상태를 비교하여 버전 체크를 강제시키기 위해서, "
+"<literal><class></literal> 매핑 속에 <literal>optimistic-lock=\"all\"</"
+"literal>을 표시하라. 만일 Hibernate가 이전 상태와 새로운 상태를 비교할 수 있"
+"을 경우에, 예를 들면 당신이 하나의 긴 <literal>Session</literal>을 사용하고 "
+"session-per-request-with-detached-objects을 사용하지 않을 경우 이것은 개념적"
+"으로만 동작함을 노트하라."
-#: index.docbook:793
-msgid "Sometimes concurrent modification can be permitted as long as the changes that have been made don't overlap. If you set <literal>optimistic-lock=\"dirty\"</literal> when mapping the <literal><class></literal>, Hibernate will only compare dirty fields during flush."
-msgstr "때때로 행해졌던 변경들이 중첩되지 않는 한 동시적인 변경이 허용될 수 있다. 만일 <literal><class></literal>를 매핑할 때 당신이 <literal>optimistic-lock=\"dirty\"</literal>를 설정하면, Hibernate는 flush 동안에 dirty 필드들을 비교만 할 것이다."
+#. Tag: para
+#: transactions.xml:793
+#, no-c-format
+msgid ""
+"Sometimes concurrent modification can be permitted as long as the changes "
+"that have been made don't overlap. If you set <literal>optimistic-lock="
+"\"dirty\"</literal> when mapping the <literal><class></literal>, "
+"Hibernate will only compare dirty fields during flush."
+msgstr ""
+"때때로 행해졌던 변경들이 중첩되지 않는 한 동시적인 변경이 허용될 수 있다. 만"
+"일 <literal><class></literal>를 매핑할 때 당신이 <literal>optimistic-"
+"lock=\"dirty\"</literal>를 설정하면, Hibernate는 flush 동안에 dirty 필드들을 "
+"비교만 할 것이다."
-#: index.docbook:799
-msgid "In both cases, with dedicated version/timestamp columns or with full/dirty field comparison, Hibernate uses a single <literal>UPDATE</literal> statement (with an appropriate <literal>WHERE</literal> clause) per entity to execute the version check and update the information. If you use transitive persistence to cascade reattachment to associated entities, Hibernate might execute uneccessary updates. This is usually not a problem, but <emphasis>on update</emphasis> triggers in the database might be executed even when no changes have been made to detached instances. You can customize this behavior by setting <literal>select-before-update=\"true\"</literal> in the <literal><class></literal> mapping, forcing Hibernate to <literal>SELECT</literal> the instance to ensure that changes did actually occur, before updating the row."
-msgstr "두 경우들에서, 전용 version/timestamp 컬럼의 경우 또는 full/dirty 필드 비교의 경우, Hibernate는 법전 체크를 실행하고 정보를 업데이트하는데 엔티티 당 (적절한 <literal>WHERE</literal> 절을 가진) 한 개의<literal>UPDATE</literal> 문장을 사용한다. 만일 당신이 연관된 엔티티들에 대한 재첨부를 케스케이드 하는데 transitive 영속을 사용할 경우, Hibernate는 불필요하게 업데이트들을 실행할 수도 있다. 이것은 대개 문제가 아니지만, 심지어 변경들이 detached 인스턴스들에 대해 행해지지 않았을 때에도 데이터베이스 내에서 <emphasis>on update</emphasis> 트리거들이 실행될 수도 있다. 그 행을 업데이트하기 전에 변경들이 실제로 일어났음을 확인하기 위해 인스턴스를 <literal>SELECT</literal>하는 것을 Hibernate에게 강제시키는, <literal><class></literal> 매핑 속에 <literal>!
select-before-update=\"true\"</literal>를 설정함으로써 당신은 이 특징을 맞춤화 시킬 수 있다."
+#. Tag: para
+#: transactions.xml:799
+#, no-c-format
+msgid ""
+"In both cases, with dedicated version/timestamp columns or with full/dirty "
+"field comparison, Hibernate uses a single <literal>UPDATE</literal> "
+"statement (with an appropriate <literal>WHERE</literal> clause) per entity "
+"to execute the version check and update the information. If you use "
+"transitive persistence to cascade reattachment to associated entities, "
+"Hibernate might execute uneccessary updates. This is usually not a problem, "
+"but <emphasis>on update</emphasis> triggers in the database might be "
+"executed even when no changes have been made to detached instances. You can "
+"customize this behavior by setting <literal>select-before-update=\"true\"</"
+"literal> in the <literal><class></literal> mapping, forcing Hibernate "
+"to <literal>SELECT</literal> the instance to ensure that changes did "
+"actually occur, before updating the row."
+msgstr ""
+"두 경우들에서, 전용 version/timestamp 컬럼의 경우 또는 full/dirty 필드 비교"
+"의 경우, Hibernate는 법전 체크를 실행하고 정보를 업데이트하는데 엔티티 당 (적"
+"절한 <literal>WHERE</literal> 절을 가진) 한 개의<literal>UPDATE</literal> 문"
+"장을 사용한다. 만일 당신이 연관된 엔티티들에 대한 재첨부를 케스케이드 하는데 "
+"transitive 영속을 사용할 경우, Hibernate는 불필요하게 업데이트들을 실행할 수"
+"도 있다. 이것은 대개 문제가 아니지만, 심지어 변경들이 detached 인스턴스들에 "
+"대해 행해지지 않았을 때에도 데이터베이스 내에서 <emphasis>on update</"
+"emphasis> 트리거들이 실행될 수도 있다. 그 행을 업데이트하기 전에 변경들이 실"
+"제로 일어났음을 확인하기 위해 인스턴스를 <literal>SELECT</literal>하는 것을 "
+"Hibernate에게 강제시키는, <literal><class></literal> 매핑 속에 "
+"<literal>select-before-update=\"true\"</literal>를 설정함으로써 당신은 이 특"
+"징을 맞춤화 시킬 수 있다."
-#: index.docbook:817
+#. Tag: title
+#: transactions.xml:817
+#, no-c-format
msgid "Pessimistic Locking"
msgstr "Pessimistic 잠금"
-#: index.docbook:819
-msgid "It is not intended that users spend much time worring about locking strategies. Its usually enough to specify an isolation level for the JDBC connections and then simply let the database do all the work. However, advanced users may sometimes wish to obtain exclusive pessimistic locks, or re-obtain locks at the start of a new transaction."
-msgstr "사용자들은 잠금 방도에 대해 걱정하는데 많은 시간을 할애하하려고 생각하지 않는다. 대개 JDBC 커넥션들에 대한 격리 레벨을 지정하는 것으로 충분하고 그런 다음 단순히 데이터베이스로 하여금 모든 작업을 행하도록 한다. 하지만 진일보한 사용자들은 때때로 배타적인 pessimistic 잠금들을 얻거나 또는 새로운 트랜잭션의 시작 시에 잠금들을 다시 얻고자 원할 수도 있다."
+#. Tag: para
+#: transactions.xml:819
+#, no-c-format
+msgid ""
+"It is not intended that users spend much time worring about locking "
+"strategies. Its usually enough to specify an isolation level for the JDBC "
+"connections and then simply let the database do all the work. However, "
+"advanced users may sometimes wish to obtain exclusive pessimistic locks, or "
+"re-obtain locks at the start of a new transaction."
+msgstr ""
+"사용자들은 잠금 방도에 대해 걱정하는데 많은 시간을 할애하하려고 생각하지 않는"
+"다. 대개 JDBC 커넥션들에 대한 격리 레벨을 지정하는 것으로 충분하고 그런 다음 "
+"단순히 데이터베이스로 하여금 모든 작업을 행하도록 한다. 하지만 진일보한 사용"
+"자들은 때때로 배타적인 pessimistic 잠금들을 얻거나 또는 새로운 트랜잭션의 시"
+"작 시에 잠금들을 다시 얻고자 원할 수도 있다."
-#: index.docbook:826
-msgid "Hibernate will always use the locking mechanism of the database, never lock objects in memory!"
-msgstr "Hibernate는 결코 메모리 내에 있는 객체들이 아닌, 데이터베이스의 잠금 메커니즘을 항상 사용할 것이다!"
+#. Tag: para
+#: transactions.xml:826
+#, no-c-format
+msgid ""
+"Hibernate will always use the locking mechanism of the database, never lock "
+"objects in memory!"
+msgstr ""
+"Hibernate는 결코 메모리 내에 있는 객체들이 아닌, 데이터베이스의 잠금 메커니즘"
+"을 항상 사용할 것이다!"
-#: index.docbook:831
-msgid "The <literal>LockMode</literal> class defines the different lock levels that may be acquired by Hibernate. A lock is obtained by the following mechanisms:"
-msgstr "<literal>LockMode</literal> 클래스는 Hibernate에 의해 획득될 수 있는 다른 잠금 레벨들을 정의한다. 잠금은 다음 메커니즘들에 의해 얻어진다:"
+#. Tag: para
+#: transactions.xml:831
+#, no-c-format
+msgid ""
+"The <literal>LockMode</literal> class defines the different lock levels that "
+"may be acquired by Hibernate. A lock is obtained by the following mechanisms:"
+msgstr ""
+"<literal>LockMode</literal> 클래스는 Hibernate에 의해 획득될 수 있는 다른 잠"
+"금 레벨들을 정의한다. 잠금은 다음 메커니즘들에 의해 얻어진다:"
-#: index.docbook:838
-msgid "<literal>LockMode.WRITE</literal> is acquired automatically when Hibernate updates or inserts a row."
-msgstr "<literal>LockMode.WRITE</literal>는 Hibernate가 한 행을 업데이트 하거나 insert 할 때 자동적으로 획득된다."
+#. Tag: para
+#: transactions.xml:838
+#, no-c-format
+msgid ""
+"<literal>LockMode.WRITE</literal> is acquired automatically when Hibernate "
+"updates or inserts a row."
+msgstr ""
+"<literal>LockMode.WRITE</literal>는 Hibernate가 한 행을 업데이트 하거나 "
+"insert 할 때 자동적으로 획득된다."
-#: index.docbook:844
-msgid "<literal>LockMode.UPGRADE</literal> may be acquired upon explicit user request using <literal>SELECT ... FOR UPDATE</literal> on databases which support that syntax."
-msgstr "<literal>LockMode.UPGRADE</literal>는 <literal>SELECT ... FOR UPDATE</literal> 구문을 지원하는 데이터베이스 상에서 <literal>SELECT ... FOR UPDATE</literal>를 사용하여 명시적인 사용자 요청 상에서 얻어질 수 있다."
+#. Tag: para
+#: transactions.xml:844
+#, no-c-format
+msgid ""
+"<literal>LockMode.UPGRADE</literal> may be acquired upon explicit user "
+"request using <literal>SELECT ... FOR UPDATE</literal> on databases which "
+"support that syntax."
+msgstr ""
+"<literal>LockMode.UPGRADE</literal>는 <literal>SELECT ... FOR UPDATE</"
+"literal> 구문을 지원하는 데이터베이스 상에서 <literal>SELECT ... FOR UPDATE</"
+"literal>를 사용하여 명시적인 사용자 요청 상에서 얻어질 수 있다."
-#: index.docbook:850
-msgid "<literal>LockMode.UPGRADE_NOWAIT</literal> may be acquired upon explicit user request using a <literal>SELECT ... FOR UPDATE NOWAIT</literal> under Oracle."
-msgstr "<literal>LockMode.UPGRADE_NOWAIT</literal>는 오라클에서 <literal>SELECT ... FOR UPDATE NOWAIT</literal>를 사용하여 명시적인 사용자 요청 상에서 얻어질 수도 있다."
+#. Tag: para
+#: transactions.xml:850
+#, no-c-format
+msgid ""
+"<literal>LockMode.UPGRADE_NOWAIT</literal> may be acquired upon explicit "
+"user request using a <literal>SELECT ... FOR UPDATE NOWAIT</literal> under "
+"Oracle."
+msgstr ""
+"<literal>LockMode.UPGRADE_NOWAIT</literal>는 오라클에서 <literal>SELECT ... "
+"FOR UPDATE NOWAIT</literal>를 사용하여 명시적인 사용자 요청 상에서 얻어질 수"
+"도 있다."
-#: index.docbook:856
-msgid "<literal>LockMode.READ</literal> is acquired automatically when Hibernate reads data under Repeatable Read or Serializable isolation level. May be re-acquired by explicit user request."
-msgstr "<literal>LockMode.READ</literal>는 Hibernate가 반복 가능한 읽기(Repeatable Read) 또는 Serialization 격리 레벨에서 데이터를 읽어들일 때 자동적으로 얻어질 수도 있다. 명시적인 사용자 요청에 의해 다시 얻어질 수도 있다."
+#. Tag: para
+#: transactions.xml:856
+#, no-c-format
+msgid ""
+"<literal>LockMode.READ</literal> is acquired automatically when Hibernate "
+"reads data under Repeatable Read or Serializable isolation level. May be re-"
+"acquired by explicit user request."
+msgstr ""
+"<literal>LockMode.READ</literal>는 Hibernate가 반복 가능한 읽기(Repeatable "
+"Read) 또는 Serialization 격리 레벨에서 데이터를 읽어들일 때 자동적으로 얻어"
+"질 수도 있다. 명시적인 사용자 요청에 의해 다시 얻어질 수도 있다."
-#: index.docbook:863
-msgid "<literal>LockMode.NONE</literal> represents the absence of a lock. All objects switch to this lock mode at the end of a <literal>Transaction</literal>. Objects associated with the session via a call to <literal>update()</literal> or <literal>saveOrUpdate()</literal> also start out in this lock mode."
-msgstr "<literal>LockMode.NONE</literal>은 잠금이 없음을 나타낸다. 모든 객체들은 <literal>Transaction</literal>의 끝에서 이 잠금 모드로 전환된다. <literal>update()</literal> 또는 <literal>saveOrUpdate()</literal>에 대한 호출을 통해 세션과 연관된 객체들이 또한 이 잠금 모드로 시작된다."
+#. Tag: para
+#: transactions.xml:863
+#, no-c-format
+msgid ""
+"<literal>LockMode.NONE</literal> represents the absence of a lock. All "
+"objects switch to this lock mode at the end of a <literal>Transaction</"
+"literal>. Objects associated with the session via a call to <literal>update()"
+"</literal> or <literal>saveOrUpdate()</literal> also start out in this lock "
+"mode."
+msgstr ""
+"<literal>LockMode.NONE</literal>은 잠금이 없음을 나타낸다. 모든 객체들은 "
+"<literal>Transaction</literal>의 끝에서 이 잠금 모드로 전환된다. "
+"<literal>update()</literal> 또는 <literal>saveOrUpdate()</literal>에 대한 호"
+"출을 통해 세션과 연관된 객체들이 또한 이 잠금 모드로 시작된다."
-#: index.docbook:872
-msgid "The \"explicit user request\" is expressed in one of the following ways:"
+#. Tag: para
+#: transactions.xml:872
+#, no-c-format
+msgid ""
+"The \"explicit user request\" is expressed in one of the following ways:"
msgstr "\"명시적인 사용자 요청\"은 다음 방법들 중 하나로 표현된다:"
-#: index.docbook:878
-msgid "A call to <literal>Session.load()</literal>, specifying a <literal>LockMode</literal>."
-msgstr "<literal>LockMode</literal>를 지정한 <literal>Session.load()</literal>에 대한 호출."
+#. Tag: para
+#: transactions.xml:878
+#, no-c-format
+msgid ""
+"A call to <literal>Session.load()</literal>, specifying a <literal>LockMode</"
+"literal>."
+msgstr ""
+"<literal>LockMode</literal>를 지정한 <literal>Session.load()</literal>에 대"
+"한 호출."
-#: index.docbook:883
+#. Tag: para
+#: transactions.xml:883
+#, no-c-format
msgid "A call to <literal>Session.lock()</literal>."
msgstr "<literal>Session.lock()</literal>에 대한 호출."
-#: index.docbook:888
+#. Tag: para
+#: transactions.xml:888
+#, no-c-format
msgid "A call to <literal>Query.setLockMode()</literal>."
msgstr "<literal>Query.setLockMode()</literal>에 대한 호출."
-#: index.docbook:894
-msgid "If <literal>Session.load()</literal> is called with <literal>UPGRADE</literal> or <literal>UPGRADE_NOWAIT</literal>, and the requested object was not yet loaded by the session, the object is loaded using <literal>SELECT ... FOR UPDATE</literal>. If <literal>load()</literal> is called for an object that is already loaded with a less restrictive lock than the one requested, Hibernate calls <literal>lock()</literal> for that object."
-msgstr "만일 <literal>Session.load()</literal>가 <literal>UPGRADE</literal> 또는 <literal>UPGRADE_NOWAIT</literal> 모드로 호출되고 ,요청된 객체가 아직 이 세션에 의해 로드되지 않았다면, 그 객체는 <literal>SELECT ... FOR UPDATE</literal>를 사용하여 로드된다. 만일 요청된 것이 아닌 다소 제한적인 잠금으로 이미 로드되어 있는 객체에 대해 <literal>load()</literal>가 호출될 경우, Hibernate는 그 객체에 대해 <literal>lock()</literal>을 호출한다."
+#. Tag: para
+#: transactions.xml:894
+#, no-c-format
+msgid ""
+"If <literal>Session.load()</literal> is called with <literal>UPGRADE</"
+"literal> or <literal>UPGRADE_NOWAIT</literal>, and the requested object was "
+"not yet loaded by the session, the object is loaded using "
+"<literal>SELECT ... FOR UPDATE</literal>. If <literal>load()</literal> is "
+"called for an object that is already loaded with a less restrictive lock "
+"than the one requested, Hibernate calls <literal>lock()</literal> for that "
+"object."
+msgstr ""
+"만일 <literal>Session.load()</literal>가 <literal>UPGRADE</literal> 또는 "
+"<literal>UPGRADE_NOWAIT</literal> 모드로 호출되고 ,요청된 객체가 아직 이 세션"
+"에 의해 로드되지 않았다면, 그 객체는 <literal>SELECT ... FOR UPDATE</literal>"
+"를 사용하여 로드된다. 만일 요청된 것이 아닌 다소 제한적인 잠금으로 이미 로드"
+"되어 있는 객체에 대해 <literal>load()</literal>가 호출될 경우, Hibernate는 "
+"그 객체에 대해 <literal>lock()</literal>을 호출한다."
-#: index.docbook:903
-msgid "<literal>Session.lock()</literal> performs a version number check if the specified lock mode is <literal>READ</literal>, <literal>UPGRADE</literal> or <literal>UPGRADE_NOWAIT</literal>. (In the case of <literal>UPGRADE</literal> or <literal>UPGRADE_NOWAIT</literal>, <literal>SELECT ... FOR UPDATE</literal> is used.)"
-msgstr "만일 지정된 잠금 모드가 <literal>READ</literal>, <literal>UPGRADE</literal> 또는 <literal>UPGRADE_NOWAIT</literal> 일 경우에 <literal>Session.lock()</literal>은 버전 번호 체크를 수행한다. (<literal>UPGRADE</literal> 또는 <literal>UPGRADE_NOWAIT</literal> 인 경우에, <literal>SELECT ... FOR UPDATE</literal>가 사용된다.)"
+#. Tag: para
+#: transactions.xml:903
+#, no-c-format
+msgid ""
+"<literal>Session.lock()</literal> performs a version number check if the "
+"specified lock mode is <literal>READ</literal>, <literal>UPGRADE</literal> "
+"or <literal>UPGRADE_NOWAIT</literal>. (In the case of <literal>UPGRADE</"
+"literal> or <literal>UPGRADE_NOWAIT</literal>, <literal>SELECT ... FOR "
+"UPDATE</literal> is used.)"
+msgstr ""
+"만일 지정된 잠금 모드가 <literal>READ</literal>, <literal>UPGRADE</literal> "
+"또는 <literal>UPGRADE_NOWAIT</literal> 일 경우에 <literal>Session.lock()</"
+"literal>은 버전 번호 체크를 수행한다. (<literal>UPGRADE</literal> 또는 "
+"<literal>UPGRADE_NOWAIT</literal> 인 경우에, <literal>SELECT ... FOR UPDATE</"
+"literal>가 사용된다.)"
-#: index.docbook:910
-msgid "If the database does not support the requested lock mode, Hibernate will use an appropriate alternate mode (instead of throwing an exception). This ensures that applications will be portable."
-msgstr "만일 데이터베이스가 요청된 잠금 모드를 지원하지 않을 경우, (예외상황을 던지는 대신에) Hibernate는 적절한 대체 모드를 사용할 것이다. 이것은 어플리케이션이 이식 가능할 것임을 확실히 해준다."
+#. Tag: para
+#: transactions.xml:910
+#, no-c-format
+msgid ""
+"If the database does not support the requested lock mode, Hibernate will use "
+"an appropriate alternate mode (instead of throwing an exception). This "
+"ensures that applications will be portable."
+msgstr ""
+"만일 데이터베이스가 요청된 잠금 모드를 지원하지 않을 경우, (예외상황을 던지"
+"는 대신에) Hibernate는 적절한 대체 모드를 사용할 것이다. 이것은 어플리케이션"
+"이 이식 가능할 것임을 확실히 해준다."
-#: index.docbook:919
+#. Tag: title
+#: transactions.xml:919
+#, no-c-format
msgid "Connection Release Modes"
msgstr "연결 해제 모드들"
-#: index.docbook:921
-msgid "The legacy (2.x) behavior of Hibernate in regards to JDBC connection management was that a <literal>Session</literal> would obtain a connection when it was first needed and then hold unto that connection until the session was closed. Hibernate 3.x introduced the notion of connection release modes to tell a session how to handle its JDBC connections. Note that the following discussion is pertinent only to connections provided through a configured <literal>ConnectionProvider</literal>; user-supplied connections are outside the breadth of this discussion. The different release modes are identified by the enumerated values of <literal>org.hibernate.ConnectionReleaseMode</literal>:"
-msgstr "JDBC 커넥션 관리에 관한 Hibernate의 리거시(2.x) 특징은 그것이 처음으로 필요로 했을 때 하나의 <literal>Session</literal>이 하나의 커넥션을 획득할 것이고, 그런 다음 그 커넥션은 그 세션이 닫혀질때까지 보관된다는 것이었다. Hibernate 3.x는 세션에게 그것의 JDBC 커넥션들을 처리하는 방법을 알려주기 위해 연결 해제 모드들에 관한 개념을 도입했다. 다음 논의는 구성된 <literal>ConnectionProvider</literal>를 통해 제공되는 커넥션들에 대해서만 적절하다는 점을 노트하라; 사용자가 제공하는 커넥션들은 <literal>org.hibernate.ConnectionReleaseMode</literal>의 열거된 값들에 의해 식별된다:"
+#. Tag: para
+#: transactions.xml:921
+#, no-c-format
+msgid ""
+"The legacy (2.x) behavior of Hibernate in regards to JDBC connection "
+"management was that a <literal>Session</literal> would obtain a connection "
+"when it was first needed and then hold unto that connection until the "
+"session was closed. Hibernate 3.x introduced the notion of connection "
+"release modes to tell a session how to handle its JDBC connections. Note "
+"that the following discussion is pertinent only to connections provided "
+"through a configured <literal>ConnectionProvider</literal>; user-supplied "
+"connections are outside the breadth of this discussion. The different "
+"release modes are identified by the enumerated values of <literal>org."
+"hibernate.ConnectionReleaseMode</literal>:"
+msgstr ""
+"JDBC 커넥션 관리에 관한 Hibernate의 리거시(2.x) 특징은 그것이 처음으로 필요"
+"로 했을 때 하나의 <literal>Session</literal>이 하나의 커넥션을 획득할 것이"
+"고, 그런 다음 그 커넥션은 그 세션이 닫혀질때까지 보관된다는 것이었다. "
+"Hibernate 3.x는 세션에게 그것의 JDBC 커넥션들을 처리하는 방법을 알려주기 위"
+"해 연결 해제 모드들에 관한 개념을 도입했다. 다음 논의는 구성된 "
+"<literal>ConnectionProvider</literal>를 통해 제공되는 커넥션들에 대해서만 적"
+"절하다는 점을 노트하라; 사용자가 제공하는 커넥션들은 <literal>org.hibernate."
+"ConnectionReleaseMode</literal>의 열거된 값들에 의해 식별된다:"
-#: index.docbook:935
-msgid "<literal>ON_CLOSE</literal> - is essentially the legacy behavior described above. The Hibernate session obatins a connection when it first needs to perform some JDBC access and holds unto that connection until the session is closed."
-msgstr "<literal>ON_CLOSE</literal> - 는 본질적으로 위에 설명된 리거시 특징이다. Hibernate 세션은 그것이 어떤 JDBC 접근을 수행하고 세션이 닫혀질 때까지 그 커넥션을 보관할 필요가 있을 때 하나의 커넥션을 획득한다."
+#. Tag: para
+#: transactions.xml:935
+#, no-c-format
+msgid ""
+"<literal>ON_CLOSE</literal> - is essentially the legacy behavior described "
+"above. The Hibernate session obatins a connection when it first needs to "
+"perform some JDBC access and holds unto that connection until the session is "
+"closed."
+msgstr ""
+"<literal>ON_CLOSE</literal> - 는 본질적으로 위에 설명된 리거시 특징이다. "
+"Hibernate 세션은 그것이 어떤 JDBC 접근을 수행하고 세션이 닫혀질 때까지 그 커"
+"넥션을 보관할 필요가 있을 때 하나의 커넥션을 획득한다."
-#: index.docbook:942
-msgid "<literal>AFTER_TRANSACTION</literal> - says to release connections after a <literal>org.hibernate.Transaction</literal> has completed."
-msgstr "<literal>AFTER_TRANSACTION</literal> - 은 하나의 <literal>org.hibernate.Transaction</literal>이 완료된 후에 연결들을 해제하라고 말한다."
+#. Tag: para
+#: transactions.xml:942
+#, no-c-format
+msgid ""
+"<literal>AFTER_TRANSACTION</literal> - says to release connections after a "
+"<literal>org.hibernate.Transaction</literal> has completed."
+msgstr ""
+"<literal>AFTER_TRANSACTION</literal> - 은 하나의 <literal>org.hibernate."
+"Transaction</literal>이 완료된 후에 연결들을 해제하라고 말한다."
-#: index.docbook:948
-msgid "<literal>AFTER_STATEMENT</literal> (also referred to as aggressive release) - says to release connections after each and every statement execution. This aggressive releasing is skipped if that statement leaves open resources associated with the given session; currently the only situation where this occurs is through the use of <literal>org.hibernate.ScrollableResults</literal>."
-msgstr "<literal>AFTER_STATEMENT</literal> (또한 적극적인 해제라고 언급됨) - 는 각각의 모든 문장 실행 후에 커넥션들을 해제하라고 말한다. 이 적극적인 해제는 그 문장이 주어진 세션과 연관된 리소스들을 열려진채로 남겨둘 경우에는 건너뛰게(skip) 된다; 현재 이것이 일어나는 유일한 상황은 <literal>org.hibernate.ScrollableResults</literal>의 사용을 통해서이다."
+#. Tag: para
+#: transactions.xml:948
+#, no-c-format
+msgid ""
+"<literal>AFTER_STATEMENT</literal> (also referred to as aggressive release) "
+"- says to release connections after each and every statement execution. This "
+"aggressive releasing is skipped if that statement leaves open resources "
+"associated with the given session; currently the only situation where this "
+"occurs is through the use of <literal>org.hibernate.ScrollableResults</"
+"literal>."
+msgstr ""
+"<literal>AFTER_STATEMENT</literal> (또한 적극적인 해제라고 언급됨) - 는 각각"
+"의 모든 문장 실행 후에 커넥션들을 해제하라고 말한다. 이 적극적인 해제는 그 문"
+"장이 주어진 세션과 연관된 리소스들을 열려진채로 남겨둘 경우에는 건너뛰게"
+"(skip) 된다; 현재 이것이 일어나는 유일한 상황은 <literal>org.hibernate."
+"ScrollableResults</literal>의 사용을 통해서이다."
-#: index.docbook:958
-msgid "The configuration parameter <literal>hibernate.connection.release_mode</literal> is used to specify which release mode to use. The possible values:"
-msgstr "사용할 해제 모드를 지정하기 위해 구성 파라미터 <literal>hibernate.connection.release_mode</literal>가 사용된다. 가능한 값들은 다음과 같다:"
+#. Tag: para
+#: transactions.xml:958
+#, no-c-format
+msgid ""
+"The configuration parameter <literal>hibernate.connection.release_mode</"
+"literal> is used to specify which release mode to use. The possible values:"
+msgstr ""
+"사용할 해제 모드를 지정하기 위해 구성 파라미터 <literal>hibernate.connection."
+"release_mode</literal>가 사용된다. 가능한 값들은 다음과 같다:"
-#: index.docbook:965
-msgid "<literal>auto</literal> (the default) - this choice delegates to the release mode returned by the <literal>org.hibernate.transaction.TransactionFactory.getDefaultReleaseMode()</literal> method. For JTATransactionFactory, this returns ConnectionReleaseMode.AFTER_STATEMENT; for JDBCTransactionFactory, this returns ConnectionReleaseMode.AFTER_TRANSACTION. It is rarely a good idea to change this default behavior as failures due to the value of this setting tend to indicate bugs and/or invalid assumptions in user code."
-msgstr "<literal>auto</literal> (디폴트) - 이 선택은 <literal>org.hibernate.transaction.TransactionFactory.getDefaultReleaseMode()</literal> 메소드에 의해 반환된 해제 모드로 위임시킨다. JTATransactionFactory인 경우, 이것은 ConnectionReleaseMode.AFTER_STATEMENT를 반환한다; JDBCTransactionFactory인 경우, 이것은 ConnectionReleaseMode.AFTER_TRANSACTION을 반환한다. 이 설정의 값이 사용자 코드 내의 버그들 그리고/또는 유효하지 않은 가정들을 가리키는 경향이 있음으로 인해 이 디폴트 특징을 실패로 변경하는 것은 거의 좋은 생각이 아니다."
+#. Tag: para
+#: transactions.xml:965
+#, no-c-format
+msgid ""
+"<literal>auto</literal> (the default) - this choice delegates to the release "
+"mode returned by the <literal>org.hibernate.transaction.TransactionFactory."
+"getDefaultReleaseMode()</literal> method. For JTATransactionFactory, this "
+"returns ConnectionReleaseMode.AFTER_STATEMENT; for JDBCTransactionFactory, "
+"this returns ConnectionReleaseMode.AFTER_TRANSACTION. It is rarely a good "
+"idea to change this default behavior as failures due to the value of this "
+"setting tend to indicate bugs and/or invalid assumptions in user code."
+msgstr ""
+"<literal>auto</literal> (디폴트) - 이 선택은 <literal>org.hibernate."
+"transaction.TransactionFactory.getDefaultReleaseMode()</literal> 메소드에 의"
+"해 반환된 해제 모드로 위임시킨다. JTATransactionFactory인 경우, 이것은 "
+"ConnectionReleaseMode.AFTER_STATEMENT를 반환한다; JDBCTransactionFactory인 경"
+"우, 이것은 ConnectionReleaseMode.AFTER_TRANSACTION을 반환한다. 이 설정의 값"
+"이 사용자 코드 내의 버그들 그리고/또는 유효하지 않은 가정들을 가리키는 경향"
+"이 있음으로 인해 이 디폴트 특징을 실패로 변경하는 것은 거의 좋은 생각이 아니"
+"다."
-#: index.docbook:975
-msgid "<literal>on_close</literal> - says to use ConnectionReleaseMode.ON_CLOSE. This setting is left for backwards compatibility, but its use is highly discouraged."
-msgstr "<literal>on_close</literal> - 는 ConnectionReleaseMode.ON_CLOSE를 사용하라고 말한다. 이 설정은 역호환성을 위해 남겨졌지만, 그것의 사용은 매우 권장되지 않는다."
+#. Tag: para
+#: transactions.xml:975
+#, no-c-format
+msgid ""
+"<literal>on_close</literal> - says to use ConnectionReleaseMode.ON_CLOSE. "
+"This setting is left for backwards compatibility, but its use is highly "
+"discouraged."
+msgstr ""
+"<literal>on_close</literal> - 는 ConnectionReleaseMode.ON_CLOSE를 사용하라고 "
+"말한다. 이 설정은 역호환성을 위해 남겨졌지만, 그것의 사용은 매우 권장되지 않"
+"는다."
-#: index.docbook:981
-msgid "<literal>after_transaction</literal> - says to use ConnectionReleaseMode.AFTER_TRANSACTION. This setting should not be used in JTA environments. Also note that with ConnectionReleaseMode.AFTER_TRANSACTION, if a session is considered to be in auto-commit mode connections will be released as if the release mode were AFTER_STATEMENT."
-msgstr "<literal>after_transaction</literal> - 은 ConnectionReleaseMode.AFTER_TRANSACTION을 사용하라고 말한다. 이 설정은 JTA 환경들에서 사용되지 않을 것이다. 또한 ConnectionReleaseMode.AFTER_TRANSACTION인 경우에 만일 세션이 auto-commit 모드에 있도록 고려될 경우, 커넥션들은 마치 해제 모드가 AFTER_STATEMENT인 것처럼 해제될 것임을 또한 노트하라."
+#. Tag: para
+#: transactions.xml:981
+#, no-c-format
+msgid ""
+"<literal>after_transaction</literal> - says to use ConnectionReleaseMode."
+"AFTER_TRANSACTION. This setting should not be used in JTA environments. Also "
+"note that with ConnectionReleaseMode.AFTER_TRANSACTION, if a session is "
+"considered to be in auto-commit mode connections will be released as if the "
+"release mode were AFTER_STATEMENT."
+msgstr ""
+"<literal>after_transaction</literal> - 은 ConnectionReleaseMode."
+"AFTER_TRANSACTION을 사용하라고 말한다. 이 설정은 JTA 환경들에서 사용되지 않"
+"을 것이다. 또한 ConnectionReleaseMode.AFTER_TRANSACTION인 경우에 만일 세션이 "
+"auto-commit 모드에 있도록 고려될 경우, 커넥션들은 마치 해제 모드가 "
+"AFTER_STATEMENT인 것처럼 해제될 것임을 또한 노트하라."
-#: index.docbook:989
-msgid "<literal>after_statement</literal> - says to use ConnectionReleaseMode.AFTER_STATEMENT. Additionally, the configured <literal>ConnectionProvider</literal> is consulted to see if it supports this setting (<literal>supportsAggressiveRelease()</literal>). If not, the release mode is reset to ConnectionReleaseMode.AFTER_TRANSACTION. This setting is only safe in environments where we can either re-acquire the same underlying JDBC connection each time we make a call into <literal>ConnectionProvider.getConnection()</literal> or in auto-commit environments where it does not matter whether we get back the same connection."
-msgstr "<literal>after_statement</literal> - 는 ConnectionReleaseMode.AFTER_STATEMENT를 사용하라고 말한다. 추가적으로 구성된 <literal>ConnectionProvider</literal>는 그것이 이 설정 (<literal>supportsAggressiveRelease()</literal>)을 지원하는지 여부를 알기 위해 참고된다. 만일 지원하지 않을 경우, 해제 모드는 ConnectionReleaseMode.AFTER_TRANSACTION으로 재설정된다. 이 설정은 우리가 <literal>ConnectionProvider.getConnection()</literal>을 호출할 때마다 우리가 동일한 기본 JDBC 커넥션을 다시 필요로 할 수 있는 환경들에서 또는 우리가 동일한 커넥션을 얻는 것에 상관없는 auto-commit 환경에서 오직 안전하다."
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: para
+#: transactions.xml:989
+#, no-c-format
+msgid ""
+"<literal>after_statement</literal> - says to use ConnectionReleaseMode."
+"AFTER_STATEMENT. Additionally, the configured <literal>ConnectionProvider</"
+"literal> is consulted to see if it supports this setting "
+"(<literal>supportsAggressiveRelease()</literal>). If not, the release mode "
+"is reset to ConnectionReleaseMode.AFTER_TRANSACTION. This setting is only "
+"safe in environments where we can either re-acquire the same underlying JDBC "
+"connection each time we make a call into <literal>ConnectionProvider."
+"getConnection()</literal> or in auto-commit environments where it does not "
+"matter whether we get back the same connection."
+msgstr ""
+"<literal>after_statement</literal> - 는 ConnectionReleaseMode.AFTER_STATEMENT"
+"를 사용하라고 말한다. 추가적으로 구성된 <literal>ConnectionProvider</literal>"
+"는 그것이 이 설정 (<literal>supportsAggressiveRelease()</literal>)을 지원하는"
+"지 여부를 알기 위해 참고된다. 만일 지원하지 않을 경우, 해제 모드는 "
+"ConnectionReleaseMode.AFTER_TRANSACTION으로 재설정된다. 이 설정은 우리가 "
+"<literal>ConnectionProvider.getConnection()</literal>을 호출할 때마다 우리가 "
+"동일한 기본 JDBC 커넥션을 다시 필요로 할 수 있는 환경들에서 또는 우리가 동일"
+"한 커넥션을 얻는 것에 상관없는 auto-commit 환경에서 오직 안전하다."
Modified: core/trunk/documentation/manual/translations/ko-KR/content/tutorial.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/tutorial.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/tutorial.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,1894 +1,2792 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:48+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:7
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: tutorial.xml:7
+#, no-c-format
msgid "Introduction to Hibernate"
msgstr "Hibernate 개요"
-#: index.docbook:10
+#. Tag: title
+#: tutorial.xml:10
+#, no-c-format
msgid "Preface"
-msgstr "<title>머리말</title>"
+msgstr "머리말"
-#: index.docbook:12
-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 초심자를 위한 개론적인 튜토리얼이다. 우리는 메모리-내 데이터베이스를 사용하는 간단한 명령 라인 어플리케이션으로 시작하고 단계들을 이해하도록 쉽게 그것을 개발한다."
+#. Tag: para
+#: tutorial.xml:12
+#, no-c-format
+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 초심자를 위한 개론적인 튜토리얼이다. 우리는 메모리-내 데이"
+"터베이스를 사용하는 간단한 명령 라인 어플리케이션으로 시작하고 단계들을 이해"
+"하도록 쉽게 그것을 개발한다."
-#: index.docbook:18
-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에 대해 다른 라이브러리들을 필요로 할 수도 있다."
+#. Tag: para
+#: tutorial.xml:18
+#, no-c-format
+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에 대해 다른 "
+"라이브러리들을 필요로 할 수도 있다."
-#: index.docbook:24
-msgid "The source code for the tutorial is included in the distribution in the <literal>doc/reference/tutorial/</literal> directory."
-msgstr "튜토리얼용 소스는 <literal>doc/reference/tutorial/</literal> 디렉토리 내에 있는 배포본 내에 포함되어 있다."
+#. Tag: para
+#: tutorial.xml:24
+#, no-c-format
+msgid ""
+"The source code for the tutorial is included in the distribution in the "
+"<literal>doc/reference/tutorial/</literal> directory."
+msgstr ""
+"튜토리얼용 소스는 <literal>doc/reference/tutorial/</literal> 디렉토리 내에 있"
+"는 배포본 내에 포함되어 있다."
-#: index.docbook:32
+#. Tag: title
+#: tutorial.xml:32
+#, no-c-format
msgid "Part 1 - The first Hibernate Application"
msgstr "파트 1 - 첫 번째 Hibernate 어플리케이션"
-#: index.docbook:34
-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)를 사용하므로, 우리는 어떤 데이터베이스 서버를 설치하지 않아도 된다."
+#. Tag: para
+#: tutorial.xml:34
+#, no-c-format
+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)를 사용하므로, 우리는 어떤 데이터베"
+"이스 서버를 설치하지 않아도 된다."
-#: index.docbook:39
-msgid "Let's assume we need a small database application that can store events we want to attend, and information about the hosts of these events."
-msgstr "우리가 우리가 수반하고자 원하는 이벤트들을 저장할 수 있는 작은 데이터베이스 어플리케이션과 이들 이벤트들의 호스트들에 대한 정보를 필요로 한다고 가정하자."
+#. Tag: para
+#: tutorial.xml:39
+#, no-c-format
+msgid ""
+"Let's assume we need a small database application that can store events we "
+"want to attend, and information about the hosts of these events."
+msgstr ""
+"우리가 우리가 수반하고자 원하는 이벤트들을 저장할 수 있는 작은 데이터베이스 "
+"어플리케이션과 이들 이벤트들의 호스트들에 대한 정보를 필요로 한다고 가정하자."
-#: index.docbook:44
-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</literal> into into the <literal>/lib</literal> directory of your new development working directory. It should look like this:"
-msgstr "우리가 행할 첫 번째 것은 우리의 개발 디렉토리를 설정하고, 우리가 필요로 하는 모든 Java 라이브러리들을 그것 속에 집어 넣는 것이다. Hibernate 웹 사이트로부터 Hibernate 배포본을 내려 받아라. 패키지를 추출해내고 <literal>/lib</literal> 속에서 발견되는 모든 필요한 라이브러리들을 당신의 새로운 개발 작업 디렉토리의 <literal>/lib</literal> 디렉토리 속에 위치지워라. 그것은 다음과 같을 것이다:"
+#. Tag: para
+#: tutorial.xml:44
+#, no-c-format
+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</literal> into into the <literal>/lib</literal> "
+"directory of your new development working directory. It should look like "
+"this:"
+msgstr ""
+"우리가 행할 첫 번째 것은 우리의 개발 디렉토리를 설정하고, 우리가 필요로 하는 "
+"모든 Java 라이브러리들을 그것 속에 집어 넣는 것이다. Hibernate 웹 사이트로부"
+"터 Hibernate 배포본을 내려 받아라. 패키지를 추출해내고 <literal>/lib</"
+"literal> 속에서 발견되는 모든 필요한 라이브러리들을 당신의 새로운 개발 작업 "
+"디렉토리의 <literal>/lib</literal> 디렉토리 속에 위치지워라. 그것은 다음과 같"
+"을 것이다:"
-#: index.docbook:52
+#. Tag: programlisting
+#: tutorial.xml:52
+#, no-c-format
msgid ""
- "<![CDATA[.\n"
- "+lib\n"
- " antlr.jar\n"
- " cglib.jar\n"
- " asm.jar\n"
- " asm-attrs.jars\n"
- " commons-collections.jar\n"
- " commons-logging.jar\n"
- " hibernate3.jar\n"
- " jta.jar\n"
- " dom4j.jar\n"
- " log4j.jar ]]>"
+"<![CDATA[.\n"
+"+lib\n"
+" antlr.jar\n"
+" cglib.jar\n"
+" asm.jar\n"
+" asm-attrs.jars\n"
+" commons-collections.jar\n"
+" commons-logging.jar\n"
+" hibernate3.jar\n"
+" jta.jar\n"
+" dom4j.jar\n"
+" log4j.jar ]]>"
msgstr ""
- "<![CDATA[.\n"
- "+lib\n"
- " antlr.jar\n"
- " cglib.jar\n"
- " asm.jar\n"
- " asm-attrs.jars\n"
- " commons-collections.jar\n"
- " commons-logging.jar\n"
- " hibernate3.jar\n"
- " jta.jar\n"
- " dom4j.jar\n"
- " log4j.jar ]]>"
-#: index.docbook:54
-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</literal> file in the <literal>lib/</literal> 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>글의 작성 시점에서</emphasis> Hibernate에 필수적인 최소한의 세트이다(우리는 또한 메인 아카이브인 hibernate3.jar를 복사했음을 노트하라). 당신이 사용 중인 Hibernate 배포본이 더 많거나 보다 적은 라이브러리들을 필요로 할 수도 있다. 필수 라이브러리들과 선택적인 제3의 라이브러리들에 대한 추가 정보는 Hibernate 배포본의 <literal>lib/</literal> 디렉토리 내에 있는 <literal>README.txt</literal> 파일을 보라. (실제로, Log4j는 필수는 아니지만 많은 개발자들에 의해 선호된다.)"
+#. Tag: para
+#: tutorial.xml:54
+#, no-c-format
+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</literal> file in the "
+"<literal>lib/</literal> 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>글의 작성 시점에서</emphasis> Hibernate에 필수적인 최소한의 "
+"세트이다(우리는 또한 메인 아카이브인 hibernate3.jar를 복사했음을 노트하라). "
+"당신이 사용 중인 Hibernate 배포본이 더 많거나 보다 적은 라이브러리들을 필요"
+"로 할 수도 있다. 필수 라이브러리들과 선택적인 제3의 라이브러리들에 대한 추가 "
+"정보는 Hibernate 배포본의 <literal>lib/</literal> 디렉토리 내에 있는 "
+"<literal>README.txt</literal> 파일을 보라. (실제로, Log4j는 필수는 아니지만 "
+"많은 개발자들에 의해 선호된다.)"
-#: index.docbook:63
-msgid "Next we create a class that represents the event we want to store in database."
-msgstr "다음으로 우리는 우리가 데이터베이스 속에 저장시키고자 원하는 이벤트를 표현하는 한 개의 클래스를 생성시킨다."
+#. Tag: para
+#: tutorial.xml:63
+#, no-c-format
+msgid ""
+"Next we create a class that represents the event we want to store in "
+"database."
+msgstr ""
+"다음으로 우리는 우리가 데이터베이스 속에 저장시키고자 원하는 이벤트를 표현하"
+"는 한 개의 클래스를 생성시킨다."
-#: index.docbook:68
+#. Tag: title
+#: tutorial.xml:68
+#, no-c-format
msgid "The first class"
msgstr "첫 번째 클래스"
-#: index.docbook:70
-msgid "Our first persistent class is a simple JavaBean class with some properties:"
-msgstr "우리의 첫 번째 영속 클래스는 몇몇 프로퍼티들을 가진 간단한 자바빈즈 클래스이다:"
+#. Tag: para
+#: tutorial.xml:70
+#, no-c-format
+msgid ""
+"Our first persistent class is a simple JavaBean class with some properties:"
+msgstr ""
+"우리의 첫 번째 영속 클래스는 몇몇 프로퍼티들을 가진 간단한 자바빈즈 클래스이"
+"다:"
-#: index.docbook:74
+#. Tag: programlisting
+#: tutorial.xml:74
+#, no-c-format
msgid ""
- "<![CDATA[package events;\n"
- "\n"
- "import java.util.Date;\n"
- "\n"
- "public class Event {\n"
- " private Long id;\n"
- "\n"
- " private String title;\n"
- " private Date date;\n"
- "\n"
- " public Event() {}\n"
- "\n"
- " public Long getId() {\n"
- " return id;\n"
- " }\n"
- "\n"
- " private void setId(Long id) {\n"
- " this.id = id;\n"
- " }\n"
- "\n"
- " public Date getDate() {\n"
- " return date;\n"
- " }\n"
- "\n"
- " public void setDate(Date date) {\n"
- " this.date = date;\n"
- " }\n"
- "\n"
- " public String getTitle() {\n"
- " return title;\n"
- " }\n"
- "\n"
- " public void setTitle(String title) {\n"
- " this.title = title;\n"
- " }\n"
- "}]]>"
+"<![CDATA[package events;\n"
+"\n"
+"import java.util.Date;\n"
+"\n"
+"public class Event {\n"
+" private Long id;\n"
+"\n"
+" private String title;\n"
+" private Date date;\n"
+"\n"
+" public Event() {}\n"
+"\n"
+" public Long getId() {\n"
+" return id;\n"
+" }\n"
+"\n"
+" private void setId(Long id) {\n"
+" this.id = id;\n"
+" }\n"
+"\n"
+" public Date getDate() {\n"
+" return date;\n"
+" }\n"
+"\n"
+" public void setDate(Date date) {\n"
+" this.date = date;\n"
+" }\n"
+"\n"
+" public String getTitle() {\n"
+" return title;\n"
+" }\n"
+"\n"
+" public void setTitle(String title) {\n"
+" this.title = title;\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[package events;\n"
- "\n"
- "import java.util.Date;\n"
- "\n"
- "public class Event {\n"
- " private Long id;\n"
- "\n"
- " private String title;\n"
- " private Date date;\n"
- "\n"
- " public Event() {}\n"
- "\n"
- " public Long getId() {\n"
- " return id;\n"
- " }\n"
- "\n"
- " private void setId(Long id) {\n"
- " this.id = id;\n"
- " }\n"
- "\n"
- " public Date getDate() {\n"
- " return date;\n"
- " }\n"
- "\n"
- " public void setDate(Date date) {\n"
- " this.date = date;\n"
- " }\n"
- "\n"
- " public String getTitle() {\n"
- " return title;\n"
- " }\n"
- "\n"
- " public void setTitle(String title) {\n"
- " this.title = title;\n"
- " }\n"
- "}]]>"
-#: index.docbook:76
-msgid "You can see that this class uses standard JavaBean naming conventions for property getter and setter methods, as well as private visibility for the fields. This is a recommended design - but not required. Hibernate can also access fields directly, the benefit of accessor methods is robustness for refactoring. The no-argument constructor is required to instantiate an object of this class through reflection."
-msgstr "당신은 이 클래스가 프로퍼티 getter와 setter 메소드들에 대한 표준 자바빈즈 명명법들 뿐만 아니라 필드들에 대한 private 가시성을 사용하고 있음을 알 수 있다. 이것은 권장되는 설계이지만, 필수적이지는 않다. Hibernate는 또한 필드들에 직접 접근할 수 있으며, accessor 메소드들의 이점은 강건한 리팩토링이다. 아규먼트 없는 생성자는 reflection을 통해 이 클래스의 객체를 초기화 시킬 필요가 있다."
+#. Tag: para
+#: tutorial.xml:76
+#, no-c-format
+msgid ""
+"You can see that this class uses standard JavaBean naming conventions for "
+"property getter and setter methods, as well as private visibility for the "
+"fields. This is a recommended design - but not required. Hibernate can also "
+"access fields directly, the benefit of accessor methods is robustness for "
+"refactoring. The no-argument constructor is required to instantiate an "
+"object of this class through reflection."
+msgstr ""
+"당신은 이 클래스가 프로퍼티 getter와 setter 메소드들에 대한 표준 자바빈즈 명"
+"명법들 뿐만 아니라 필드들에 대한 private 가시성을 사용하고 있음을 알 수 있"
+"다. 이것은 권장되는 설계이지만, 필수적이지는 않다. Hibernate는 또한 필드들에 "
+"직접 접근할 수 있으며, accessor 메소드들의 이점은 강건한 리팩토링이다. 아규먼"
+"트 없는 생성자는 reflection을 통해 이 클래스의 객체를 초기화 시킬 필요가 있"
+"다."
-#: index.docbook:84
-msgid "The <literal>id</literal> 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 (esp. web applications) need to distinguish objects by identifier, so you should consider this a feature rather than a limitation. However, we usually don't manipulate the identity of an object, hence the setter method should be private. Only Hibernate will assign identifiers when an object is saved. You can see that Hibernate can access public, private, and protected accessor methods, as well as (public, private, protected) fields directly. The choice is up to you and you can match it to fit your application design."
-msgstr "<literal>id</literal> 프로퍼티는 특별한 이벤트를 위한 유일 식별자를 소유한다. 모든 영속 엔티티 클래스들 (보다 덜 중요한 종속 클래스들도 존재한다)은 우리가 Hibernate의 전체 특징 집합을 사용하고자 원할 경우에 그런 식별자 프로퍼티를 필요로 할 것이다. 사실 대부분의 어플리케이션들(특히 웹 어플리케이션들)은 식별자에 의해 객체들을 구분지을 필요가 있어서, 당신은 이것을 어떤 제약점이라기 보다는 하나의 특징으로 간주할 것이다. 하지만 우리는 대개 객체의 항등(identity)를 처리하지 않으므로, setter 메소드는 private이어야 한다. 객체가 저장될 때, Hibernate는 단지 식별자들을 할당할 것이다. 당신은 Hibernate가 public, private, protected 접근자 메소드들 뿐만 아니라 (public, private, protected) 필드들에도 직접 접근할 수 있음을 알 수 있다. �!
�택은 당신에게 달려 있으며, 당신은 당신의 어플리케이션 설계에 적합하도록 그것을 부합시킬 수 있다."
+#. Tag: para
+#: tutorial.xml:84
+#, no-c-format
+msgid ""
+"The <literal>id</literal> 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 (esp. "
+"web applications) need to distinguish objects by identifier, so you should "
+"consider this a feature rather than a limitation. However, we usually don't "
+"manipulate the identity of an object, hence the setter method should be "
+"private. Only Hibernate will assign identifiers when an object is saved. You "
+"can see that Hibernate can access public, private, and protected accessor "
+"methods, as well as (public, private, protected) fields directly. The choice "
+"is up to you and you can match it to fit your application design."
+msgstr ""
+"<literal>id</literal> 프로퍼티는 특별한 이벤트를 위한 유일 식별자를 소유한"
+"다. 모든 영속 엔티티 클래스들 (보다 덜 중요한 종속 클래스들도 존재한다)은 우"
+"리가 Hibernate의 전체 특징 집합을 사용하고자 원할 경우에 그런 식별자 프로퍼티"
+"를 필요로 할 것이다. 사실 대부분의 어플리케이션들(특히 웹 어플리케이션들)은 "
+"식별자에 의해 객체들을 구분지을 필요가 있어서, 당신은 이것을 어떤 제약점이라"
+"기 보다는 하나의 특징으로 간주할 것이다. 하지만 우리는 대개 객체의 항등"
+"(identity)를 처리하지 않으므로, setter 메소드는 private이어야 한다. 객체가 저"
+"장될 때, Hibernate는 단지 식별자들을 할당할 것이다. 당신은 Hibernate가 "
+"public, private, protected 접근자 메소드들 뿐만 아니라 (public, private, "
+"protected) 필드들에도 직접 접근할 수 있음을 알 수 있다. 선택은 당신에게 달려 "
+"있으며, 당신은 당신의 어플리케이션 설계에 적합하도록 그것을 부합시킬 수 있다."
-#: index.docbook:96
-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 visibility is required for runtime proxy generation and efficient data retrieval without bytecode instrumentation."
-msgstr "아규먼트 없는 생성자는 모든 영속 클래스들에 대한 필요조건이다; Hibernate는 당신을 위해 Java Reflection을 사용하여 객체들을 생성시켜야 한다. 하지만 생성자는 private 일 수 있고, 패키지 가시성은 런타임 프락시 생성과 바이트코드 방편 없는 효율적인 데이터 검색에 필요하다."
+#. Tag: para
+#: tutorial.xml:96
+#, 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 visibility is required for "
+"runtime proxy generation and efficient data retrieval without bytecode "
+"instrumentation."
+msgstr ""
+"아규먼트 없는 생성자는 모든 영속 클래스들에 대한 필요조건이다; Hibernate는 당"
+"신을 위해 Java Reflection을 사용하여 객체들을 생성시켜야 한다. 하지만 생성자"
+"는 private 일 수 있고, 패키지 가시성은 런타임 프락시 생성과 바이트코드 방편 "
+"없는 효율적인 데이터 검색에 필요하다."
-#: index.docbook:103
-msgid "Place this Java source file in a directory called <literal>src</literal> in the development folder, and in its correct package. The directory should now look like this:"
-msgstr "이 Java 소스 파일을 개발 폴더 내의 <literal>src</literal>로 명명된 디렉토리 속에 있는 위치지워라. 이제 그 디렉토리는 다음과 같을 것이다:"
+#. Tag: para
+#: tutorial.xml:103
+#, no-c-format
+msgid ""
+"Place this Java source file in a directory called <literal>src</literal> in "
+"the development folder, and in its correct package. The directory should now "
+"look like this:"
+msgstr ""
+"이 Java 소스 파일을 개발 폴더 내의 <literal>src</literal>로 명명된 디렉토리 "
+"속에 있는 위치지워라. 이제 그 디렉토리는 다음과 같을 것이다:"
-#: index.docbook:108
+#. Tag: programlisting
+#: tutorial.xml:108
+#, no-c-format
msgid ""
- "<![CDATA[.\n"
- "+lib\n"
- " <Hibernate and third-party libraries>\n"
- "+src\n"
- " +events\n"
- " Event.java]]>"
+"<![CDATA[.\n"
+"+lib\n"
+" <Hibernate and third-party libraries>\n"
+"+src\n"
+" +events\n"
+" Event.java]]>"
msgstr ""
- "<![CDATA[.\n"
- "+lib\n"
- " <Hibernate and third-party libraries>\n"
- "+src\n"
- " +events\n"
- " Event.java]]>"
-#: index.docbook:110
+#. Tag: para
+#: tutorial.xml:110
+#, no-c-format
msgid "In the next step, we tell Hibernate about this persistent class."
msgstr "다음 단계에서, 우리는 Hiberante에게 이 영속 클래스에 대해 알려 준다."
-#: index.docbook:117
+#. Tag: title
+#: tutorial.xml:117
+#, no-c-format
msgid "The mapping file"
msgstr "The mapping file"
-#: index.docbook:119
-msgid "Hibernate needs to know how to load and store objects of the persistent class. This is where the Hibernate mapping file comes into play. The mapping file tells Hibernate what table in the database it has to access, and what columns in that table it should use."
-msgstr "Hibernate는 영속 크래스들에 대한 객체들을 로드시키고 저장시키는 방법을 알 필요가 있다. 이곳은 Hibernate 매핑 파일이 역할을 행하는 곳이다. 매핑 파일은 Hibernate가 접근해야 하는 데이터베이스 내의 테이블이 무엇인지, 그리고 그것이 사용해야 하는 그 테이블 내의 컬럼들이 무엇인지를 Hibernate에게 알려준다."
+#. Tag: para
+#: tutorial.xml:119
+#, no-c-format
+msgid ""
+"Hibernate needs to know how to load and store objects of the persistent "
+"class. This is where the Hibernate mapping file comes into play. The mapping "
+"file tells Hibernate what table in the database it has to access, and what "
+"columns in that table it should use."
+msgstr ""
+"Hibernate는 영속 크래스들에 대한 객체들을 로드시키고 저장시키는 방법을 알 필"
+"요가 있다. 이곳은 Hibernate 매핑 파일이 역할을 행하는 곳이다. 매핑 파일은 "
+"Hibernate가 접근해야 하는 데이터베이스 내의 테이블이 무엇인지, 그리고 그것이 "
+"사용해야 하는 그 테이블 내의 컬럼들이 무엇인지를 Hibernate에게 알려준다."
-#: index.docbook:126
+#. Tag: para
+#: tutorial.xml:126
+#, no-c-format
msgid "The basic structure of a mapping file looks like this:"
msgstr "매핑 파일의 기본 구조는 다음과 같다:"
-#: index.docbook:130
+#. Tag: programlisting
+#: tutorial.xml:130
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping>\n"
- "[...]\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<?xml version=\"1.0\"?>\n"
+"<!DOCTYPE hibernate-mapping PUBLIC\n"
+" \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
+" \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
+"\n"
+"<hibernate-mapping>\n"
+"[...]\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<?xml version=\"1.0\"?>\n"
- "<!DOCTYPE hibernate-mapping PUBLIC\n"
- " \"-//Hibernate/Hibernate Mapping DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\">\n"
- "\n"
- "<hibernate-mapping>\n"
- "[...]\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:132
-msgid "Note that the Hibernate DTD is very sophisticated. You can use it for auto-completion of XML mapping elements and attributes in your editor or IDE. You also should open up the DTD file in your text editor - it's the easiest way to get an overview of all elements and attributes and to see the defaults, as well as some comments. Note that Hibernate will not load the DTD file from the web, but first look it up from the classpath of the application. The DTD file is included in <literal>hibernate3.jar</literal> as well as in the <literal>src/</literal> directory of the Hibernate distribution."
-msgstr "Hibernate DTD는 매우 정교하다. 당신은 당신의 편집기 또는 IDE 내에서 XML 매핑 요소들과 속성들에 대한 자동 완성 기능을 위해 그것을 사용할 수 있다. 당신은 또한 당신의 텍스트 편집기 내에 DTD 파일을 열 수 있을 것이다 - 그것은 모든 요소들과 속성들에 대한 전체상을 얻고 디폴트들 뿐만 아니라 몇몇 주석들을 보는 가장 손쉬운 방법이다. Hibernate는 웹으로부터 DTD 파일을 로드시키지 않지만, 먼저 어플리케이션의 classpath 경로로부터 그것을 먼저 룩업할 것임을 노트하라. DTD 파일은 <literal>hibernate3.jar</literal> 속에 포함되어 있을 뿐만 아니라 Hibernate 배포본의 <literal>src/</literal> 디렉토리 속에 포함되어 있다."
+#. Tag: para
+#: tutorial.xml:132
+#, no-c-format
+msgid ""
+"Note that the Hibernate DTD is very sophisticated. You can use it for auto-"
+"completion of XML mapping elements and attributes in your editor or IDE. You "
+"also should open up the DTD file in your text editor - it's the easiest way "
+"to get an overview of all elements and attributes and to see the defaults, "
+"as well as some comments. Note that Hibernate will not load the DTD file "
+"from the web, but first look it up from the classpath of the application. "
+"The DTD file is included in <literal>hibernate3.jar</literal> as well as in "
+"the <literal>src/</literal> directory of the Hibernate distribution."
+msgstr ""
+"Hibernate DTD는 매우 정교하다. 당신은 당신의 편집기 또는 IDE 내에서 XML 매핑 "
+"요소들과 속성들에 대한 자동 완성 기능을 위해 그것을 사용할 수 있다. 당신은 또"
+"한 당신의 텍스트 편집기 내에 DTD 파일을 열 수 있을 것이다 - 그것은 모든 요소"
+"들과 속성들에 대한 전체상을 얻고 디폴트들 뿐만 아니라 몇몇 주석들을 보는 가"
+"장 손쉬운 방법이다. Hibernate는 웹으로부터 DTD 파일을 로드시키지 않지만, 먼"
+"저 어플리케이션의 classpath 경로로부터 그것을 먼저 룩업할 것임을 노트하라. "
+"DTD 파일은 <literal>hibernate3.jar</literal> 속에 포함되어 있을 뿐만 아니라 "
+"Hibernate 배포본의 <literal>src/</literal> 디렉토리 속에 포함되어 있다."
-#: index.docbook:143
-msgid "We will omit the DTD declaration in future examples to shorten the code. It is of course not optional."
-msgstr "우리는 코드를 간략화 시키기 위해 장래의 예제에서 DTD 선언을 생략할 것이다. 그것은 물론 옵션이 아니다."
+#. Tag: para
+#: tutorial.xml:143
+#, 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 선언을 생략할 것이다. 그"
+"것은 물론 옵션이 아니다."
-#: index.docbook:148
-msgid "Between the two <literal>hibernate-mapping</literal> tags, include a <literal>class</literal> element. All persistent entity classes (again, there might be dependent classes later on, which are not first-class entities) need such a mapping, to a table in the SQL database:"
-msgstr "두 개의 <literal>hibernate-mapping</literal> 태그들 사이에 <literal>class</literal> 요소를 포함시켜라. 모든 영속 엔티티 클래스들(다시금 종속 클래스들일 수 있고, 그것은 첫번째-급의 엔티티들이 아니다)은 SQL 데이터베이스 내의 테이블에 대한 그런 매핑을 필요로 한다:"
+#. Tag: para
+#: tutorial.xml:148
+#, no-c-format
+msgid ""
+"Between the two <literal>hibernate-mapping</literal> tags, include a "
+"<literal>class</literal> element. All persistent entity classes (again, "
+"there might be dependent classes later on, which are not first-class "
+"entities) need such a mapping, to a table in the SQL database:"
+msgstr ""
+"두 개의 <literal>hibernate-mapping</literal> 태그들 사이에 <literal>class</"
+"literal> 요소를 포함시켜라. 모든 영속 엔티티 클래스들(다시금 종속 클래스들일 "
+"수 있고, 그것은 첫번째-급의 엔티티들이 아니다)은 SQL 데이터베이스 내의 테이블"
+"에 대한 그런 매핑을 필요로 한다:"
-#: index.docbook:155
+#. Tag: programlisting
+#: tutorial.xml:155
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"events.Event\" table=\"EVENTS\">\n"
- "\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"events.Event\" table=\"EVENTS\">\n"
+"\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"events.Event\" table=\"EVENTS\">\n"
- "\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:157
-msgid "So far we told Hibernate how to persist and load object of class <literal>Event</literal> to the table <literal>EVENTS</literal>, each instance represented by a row in that table. Now we continue with a mapping of the unique identifier property to the tables primary key. In addition, as we don't 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
+#: tutorial.xml:157
+#, no-c-format
+msgid ""
+"So far we told Hibernate how to persist and load object of class "
+"<literal>Event</literal> to the table <literal>EVENTS</literal>, each "
+"instance represented by a row in that table. Now we continue with a mapping "
+"of the unique identifier property to the tables primary key. In addition, as "
+"we don't want to care about handling this identifier, we configure "
+"Hibernate's identifier generation strategy for a surrogate primary key "
+"column:"
+msgstr ""
+"지금까지 우리는 그 테이블 내에 있는 한 행에 의해 표현된 각각의 인스턴스인, 클"
+"래스의 객체를 영속화 시키고 로드시키는 방법을 Hibernate에게 알려주었다. 이제 "
+"우린느 테이블 프라이머리 키에 대한 유일 식별자 프로퍼티 매핑을 계속 행한다. "
+"게다가 우리는 이 식별자를 처리하는 것에 주의를 기울이고자 원하지 않으므로, 우"
+"리는 대용 키 프라이머리 키 컬럼에 대한 Hibernate의 식별자 생성 방도를 구성한"
+"다:"
-#: index.docbook:165
+#. Tag: programlisting
+#: tutorial.xml:165
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"events.Event\" table=\"EVENTS\">\n"
- " <id name=\"id\" column=\"EVENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"events.Event\" table=\"EVENTS\">\n"
+" <id name=\"id\" column=\"EVENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"events.Event\" table=\"EVENTS\">\n"
- " <id name=\"id\" column=\"EVENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:167
-msgid "The <literal>id</literal> element is the declaration of the identifer property, <literal>name=\"id\"</literal> 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</literal> table we use for this primary key. The nested <literal>generator</literal> element specifies the identifier generation strategy, in this case we used <literal>native</literal>, 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</literal> 요소는 식별자 프로퍼티의 선언이고, <literal>name=\"id\"</literal>는 Java 프로퍼티의 이름을 선언한다 - Hibernate는 그 프로퍼티에 접근하는데 getter 및 setter 메소드들을 사용할 것이다. column 속성은 우리가 <literal>EVENTS</literal> 테이블의 어느 컬럼을 이 프라이머리 키로 사용하는지를 Hibernate에게 알려준다. 내포된 <literal>generator</literal> 요소는 식별자 생성 방도를 지정하며, 이 경우에 우리는 <literal>increment</literal>를 사용했고, 그것은 대개 테스팅(과 튜토리얼들)에 유용한 매우 간단한 메모리-내 숫자 증가 방법이다. Hibernate는 또한 전역적으로 유일한 데이터베이스에 의해 생성된 식별자 뿐만 아니라 어플리케이션에 의해 할당된 식별자(또는 당신이 확장으로 작성한 어떤 방도)를 지원한다."
+#. Tag: para
+#: tutorial.xml:167
+#, no-c-format
+msgid ""
+"The <literal>id</literal> element is the declaration of the identifer "
+"property, <literal>name=\"id\"</literal> 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</literal> table we use for this primary key. The nested "
+"<literal>generator</literal> element specifies the identifier generation "
+"strategy, in this case we used <literal>native</literal>, 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</literal> 요소는 식별자 프로퍼티의 선언이고, <literal>name=\"id"
+"\"</literal>는 Java 프로퍼티의 이름을 선언한다 - Hibernate는 그 프로퍼티에 접"
+"근하는데 getter 및 setter 메소드들을 사용할 것이다. column 속성은 우리가 "
+"<literal>EVENTS</literal> 테이블의 어느 컬럼을 이 프라이머리 키로 사용하는지"
+"를 Hibernate에게 알려준다. 내포된 <literal>generator</literal> 요소는 식별자 "
+"생성 방도를 지정하며, 이 경우에 우리는 <literal>increment</literal>를 사용했"
+"고, 그것은 대개 테스팅(과 튜토리얼들)에 유용한 매우 간단한 메모리-내 숫자 증"
+"가 방법이다. Hibernate는 또한 전역적으로 유일한 데이터베이스에 의해 생성된 식"
+"별자 뿐만 아니라 어플리케이션에 의해 할당된 식별자(또는 당신이 확장으로 작성"
+"한 어떤 방도)를 지원한다."
-#: index.docbook:180
-msgid "Finally we include declarations for the persistent properties of the class in the mapping file. By default, no properties of the class are considered persistent:"
-msgstr "마지막으로 우리는 매핑 파일 속에서 클래스의 영속 프로퍼티들에 대한 선언들을 포함한다. 디폴트로, 클래스의 프로퍼티들은 영속적인 것으로 간주되지 않는다:"
+#. Tag: para
+#: tutorial.xml:180
+#, no-c-format
+msgid ""
+"Finally we include declarations for the persistent properties of the class "
+"in the mapping file. By default, no properties of the class are considered "
+"persistent:"
+msgstr ""
+"마지막으로 우리는 매핑 파일 속에서 클래스의 영속 프로퍼티들에 대한 선언들을 "
+"포함한다. 디폴트로, 클래스의 프로퍼티들은 영속적인 것으로 간주되지 않는다:"
-#: index.docbook:186
+#. Tag: programlisting
+#: tutorial.xml:186
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- "<hibernate-mapping>\n"
- "\n"
- " <class name=\"events.Event\" table=\"EVENTS\">\n"
- " <id name=\"id\" column=\"EVENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"date\" type=\"timestamp\" column=\"EVENT_DATE\"/>\n"
- " <property name=\"title\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[\n"
+"<hibernate-mapping>\n"
+"\n"
+" <class name=\"events.Event\" table=\"EVENTS\">\n"
+" <id name=\"id\" column=\"EVENT_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"date\" type=\"timestamp\" column=\"EVENT_DATE\"/>\n"
+" <property name=\"title\"/>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[\n"
- "<hibernate-mapping>\n"
- "\n"
- " <class name=\"events.Event\" table=\"EVENTS\">\n"
- " <id name=\"id\" column=\"EVENT_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"date\" type=\"timestamp\" column=\"EVENT_DATE\"/>\n"
- " <property name=\"title\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:188
-msgid "Just as with the <literal>id</literal> element, the <literal>name</literal> attribute of the <literal>property</literal> element tells Hibernate which getter and setter methods to use. So, in this case, Hibernate will look for <literal>getDate()/setDate()</literal>, as well as <literal>getTitle()/setTitle()</literal>."
-msgstr "<literal>id</literal> 요소의 경우처럼, <literal>property</literal> 요소의 <literal>name</literal> 속성은 사용할 getter 및 setter 메소드들이 어느 것인지를 Hibernate에게 알려준다. 따라서 이 경우에 Hibernate는 <literal>getDate()/setDate()</literal> 뿐만 아니라 <literal>getTitle()/setTitle()</literal>을 찾게 될 것이다."
+#. Tag: para
+#: tutorial.xml:188
+#, no-c-format
+msgid ""
+"Just as with the <literal>id</literal> element, the <literal>name</literal> "
+"attribute of the <literal>property</literal> element tells Hibernate which "
+"getter and setter methods to use. So, in this case, Hibernate will look for "
+"<literal>getDate()/setDate()</literal>, as well as <literal>getTitle()/"
+"setTitle()</literal>."
+msgstr ""
+"<literal>id</literal> 요소의 경우처럼, <literal>property</literal> 요소의 "
+"<literal>name</literal> 속성은 사용할 getter 및 setter 메소드들이 어느 것인지"
+"를 Hibernate에게 알려준다. 따라서 이 경우에 Hibernate는 <literal>getDate()/"
+"setDate()</literal> 뿐만 아니라 <literal>getTitle()/setTitle()</literal>을 찾"
+"게 될 것이다."
-#: index.docbook:195
-msgid "Why does the <literal>date</literal> property mapping include the <literal>column</literal> attribute, but the <literal>title</literal> doesn't? Without the <literal>column</literal> attribute Hibernate by default uses the property name as the column name. This works fine for <literal>title</literal>. However, <literal>date</literal> is a reserved keyword in most database, so we better map it to a different name."
-msgstr "<literal>date</literal> 프로퍼티 매핑은 <literal>column</literal> 속성을 포함하는데, 왜 <literal>title</literal>은 <literal>column</literal> 속성을 포함하지 않는가? <literal>column</literal> 속성이 없을 경우 Hibernate는 디폴트로 컬럼 이름으로서 프로퍼티 이름을 사용한다. 이것은 에 대해 잘 동작한다. 하지만 <literal>date</literal>는 대부분의 데이터베이스에서 예약된 키워드이어서, 우리는 그것을 다른 이름으로 더 좋게 매핑 시킨다."
+#. Tag: para
+#: tutorial.xml:195
+#, no-c-format
+msgid ""
+"Why does the <literal>date</literal> property mapping include the "
+"<literal>column</literal> attribute, but the <literal>title</literal> "
+"doesn't? Without the <literal>column</literal> attribute Hibernate by "
+"default uses the property name as the column name. This works fine for "
+"<literal>title</literal>. However, <literal>date</literal> is a reserved "
+"keyword in most database, so we better map it to a different name."
+msgstr ""
+"<literal>date</literal> 프로퍼티 매핑은 <literal>column</literal> 속성을 포함"
+"하는데, 왜 <literal>title</literal>은 <literal>column</literal> 속성을 포함하"
+"지 않는가? <literal>column</literal> 속성이 없을 경우 Hibernate는 디폴트로 컬"
+"럼 이름으로서 프로퍼티 이름을 사용한다. 이것은 에 대해 잘 동작한다. 하지만 "
+"<literal>date</literal>는 대부분의 데이터베이스에서 예약된 키워드이어서, 우리"
+"는 그것을 다른 이름으로 더 좋게 매핑 시킨다."
-#: index.docbook:204
-msgid "The next interesting thing is that the <literal>title</literal> mapping also lacks a <literal>type</literal> attribute. The types we declare and use in the mapping files are not, as you might expect, Java data types. They are also not SQL database types. These types are so called <emphasis>Hibernate mapping types</emphasis>, 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</literal> 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</literal> property. Hibernate can't know if the property (which is of <literal>java.util.Date</literal>) should map to a SQL <literal>date</literal>, <literal>timestamp</literal>, or <literal>time</literal> column. We preserve full date and time information !
by mapping the property with a <literal>timestamp</literal> converter."
-msgstr "다음 흥미로운 점은 <literal>title</literal> 매핑 또한 <literal>type</literal> 속성을 갖지 않는다. 우리가 매핑파일들 속에서 선언하고 사용하는 타입들은 당신이 예상하는 Java 데이터 타입들이 아니다. 그것들은 또한 SQL 데이터베이스 타입들도 아니다. 이들 타입들은 이른바 <emphasis>Hibernate 매핑 타입들</emphasis>, 즉 Java 타입들로부터 SQL 타입들로 변환될 수 있고 반대로 SQL 타입들로부터 Java 타입들로 매핑될 수 있는 컨버터들이다. 다시말해, <literal>type</literal> 속성이 매핑 속에 존재하지 않을 경우 Hibernate는 정확환 변환 및 매핑 타입 그 자체를 결정하려고 시도할 것이다. 몇몇 경우들에서 (Java 클래스에 대한 Reflection을 사용하는) 이 자동적인 검출은 당신이 예상하거나 필요로 하는 디폴트를 갖지 않을 수도 있다. 이것은 <literal>date</literal> 프로퍼�!
��를 가진 경우이다. Hibernate는 그 프로퍼티가 SQL <literal>date</literal> 컬럼, <literal>timestamp</literal> 컬럼 또는 <literal>time</literal> 컬럼 중 어느 것으로 매핑되어야 하는지를 알 수가 없다. 우리는 <literal>timestamp</literal> 컨버터를 가진 프로퍼티를 매핑함으로써 전체 날짜와 시간 정보를 보존하고 싶다고 선언한다."
+#. Tag: para
+#: tutorial.xml:204
+#, no-c-format
+msgid ""
+"The next interesting thing is that the <literal>title</literal> mapping also "
+"lacks a <literal>type</literal> attribute. The types we declare and use in "
+"the mapping files are not, as you might expect, Java data types. They are "
+"also not SQL database types. These types are so called <emphasis>Hibernate "
+"mapping types</emphasis>, 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</literal> "
+"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</literal> "
+"property. Hibernate can't know if the property (which is of <literal>java."
+"util.Date</literal>) should map to a SQL <literal>date</literal>, "
+"<literal>timestamp</literal>, or <literal>time</literal> column. We preserve "
+"full date and time information by mapping the property with a "
+"<literal>timestamp</literal> converter."
+msgstr ""
+"다음 흥미로운 점은 <literal>title</literal> 매핑 또한 <literal>type</"
+"literal> 속성을 갖지 않는다. 우리가 매핑파일들 속에서 선언하고 사용하는 타입"
+"들은 당신이 예상하는 Java 데이터 타입들이 아니다. 그것들은 또한 SQL 데이터베"
+"이스 타입들도 아니다. 이들 타입들은 이른바 <emphasis>Hibernate 매핑 타입들</"
+"emphasis>, 즉 Java 타입들로부터 SQL 타입들로 변환될 수 있고 반대로 SQL 타입들"
+"로부터 Java 타입들로 매핑될 수 있는 컨버터들이다. 다시말해, <literal>type</"
+"literal> 속성이 매핑 속에 존재하지 않을 경우 Hibernate는 정확환 변환 및 매핑 "
+"타입 그 자체를 결정하려고 시도할 것이다. 몇몇 경우들에서 (Java 클래스에 대한 "
+"Reflection을 사용하는) 이 자동적인 검출은 당신이 예상하거나 필요로 하는 디폴"
+"트를 갖지 않을 수도 있다. 이것은 <literal>date</literal> 프로퍼티를 가진 경우"
+"이다. Hibernate는 그 프로퍼티가 SQL <literal>date</literal> 컬럼, "
+"<literal>timestamp</literal> 컬럼 또는 <literal>time</literal> 컬럼 중 어느 "
+"것으로 매핑되어야 하는지를 알 수가 없다. 우리는 <literal>timestamp</literal> "
+"컨버터를 가진 프로퍼티를 매핑함으로써 전체 날짜와 시간 정보를 보존하고 싶다"
+"고 선언한다."
-#: index.docbook:220
-msgid "This mapping file should be saved as <literal>Event.hbm.xml</literal>, right in the directory next to the <literal>Event</literal> Java class source file. The naming of mapping files can be arbitrary, however the <literal>hbm.xml</literal> suffix is a convention in the Hibernate developer community. The directory structure should now look like this:"
-msgstr "다음 매핑 파일은 <literal>Event</literal> Java 클래스 소스 파일과 같은 디렉토리 속에 <literal>Event.hbm.xml</literal>로서 저장될 것이다. 매핑 파일들에 대한 네이밍은 임의적일 수 있지만, 접미사 <literal>hbm.xml</literal>은 Hibernate 개발자 공동체 내에서 컨벤션이 되었다. 디렉토리 구조는 이제 다음과 같을 것이다:"
+#. Tag: para
+#: tutorial.xml:220
+#, no-c-format
+msgid ""
+"This mapping file should be saved as <literal>Event.hbm.xml</literal>, right "
+"in the directory next to the <literal>Event</literal> Java class source "
+"file. The naming of mapping files can be arbitrary, however the <literal>hbm."
+"xml</literal> suffix is a convention in the Hibernate developer community. "
+"The directory structure should now look like this:"
+msgstr ""
+"다음 매핑 파일은 <literal>Event</literal> Java 클래스 소스 파일과 같은 디렉토"
+"리 속에 <literal>Event.hbm.xml</literal>로서 저장될 것이다. 매핑 파일들에 대"
+"한 네이밍은 임의적일 수 있지만, 접미사 <literal>hbm.xml</literal>은 "
+"Hibernate 개발자 공동체 내에서 컨벤션이 되었다. 디렉토리 구조는 이제 다음과 "
+"같을 것이다:"
-#: index.docbook:228
+#. Tag: programlisting
+#: tutorial.xml:228
+#, no-c-format
msgid ""
- "<![CDATA[.\n"
- "+lib\n"
- " <Hibernate and third-party libraries>\n"
- "+src\n"
- " +events\n"
- " Event.java\n"
- " Event.hbm.xml]]>"
+"<![CDATA[.\n"
+"+lib\n"
+" <Hibernate and third-party libraries>\n"
+"+src\n"
+" +events\n"
+" Event.java\n"
+" Event.hbm.xml]]>"
msgstr ""
- "<![CDATA[.\n"
- "+lib\n"
- " <Hibernate and third-party libraries>\n"
- "+src\n"
- " +events\n"
- " Event.java\n"
- " Event.hbm.xml]]>"
-#: index.docbook:230
+#. Tag: para
+#: tutorial.xml:230
+#, no-c-format
msgid "We continue with the main configuration of Hibernate."
msgstr "우리는 Hibernate의 메인 구성을 계속 행한다."
-#: index.docbook:237
+#. Tag: title
+#: tutorial.xml:237
+#, no-c-format
msgid "Hibernate configuration"
msgstr "Hibernate 구성"
-#: index.docbook:239
-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.jar</literal> from this download. Place this file in the <literal>lib/</literal> directory of the development folder."
-msgstr "우리는 이제 적절한 곳에 한 개의 영속 클래스와 그것의 매핑 파일을 갖고 있다. Hibernate를 구성할 차례이다. 우리가 이것을 행하기 전에, 우리는 데이터베이스를 필요로 할 것이다. 자바 기반의 메모리-내 SQL DBMS인 HSQL DB는 HSQL DB 웹 사이트에서 내려받을 수 있다. 실제로, 당신은 이 다운로드에서 오직 <literal>hsqldb.jar</literal> 만을 필요로 한다. 개발 폴더의 <literal>lib/</literal> 디렉토리 속에 이 파일을 위치지워라."
+#. Tag: para
+#: tutorial.xml:239
+#, no-c-format
+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.jar</literal> from "
+"this download. Place this file in the <literal>lib/</literal> directory of "
+"the development folder."
+msgstr ""
+"우리는 이제 적절한 곳에 한 개의 영속 클래스와 그것의 매핑 파일을 갖고 있다. "
+"Hibernate를 구성할 차례이다. 우리가 이것을 행하기 전에, 우리는 데이터베이스"
+"를 필요로 할 것이다. 자바 기반의 메모리-내 SQL DBMS인 HSQL DB는 HSQL DB 웹 사"
+"이트에서 내려받을 수 있다. 실제로, 당신은 이 다운로드에서 오직 "
+"<literal>hsqldb.jar</literal> 만을 필요로 한다. 개발 폴더의 <literal>lib/</"
+"literal> 디렉토리 속에 이 파일을 위치지워라."
-#: index.docbook:247
-msgid "Create a directory called <literal>data</literal> in the root of the development directory - this is where HSQL DB will store its data files. Now start the database by running <literal>java -classpath ../lib/hsqldb.jar org.hsqldb.Server</literal> in this data directory. You can 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 HSQL DB (press <literal>CTRL + C</literal> in the window), delete all files in the <literal>data/</literal> directory, and start HSQL DB again."
-msgstr "개발 디렉토리의 루트에 <literal>data</literal>로 명명된 디렉토리를 생성시켜라 - 이 디렉토리는 HSQL DB가 그것의 데이터 파일들을 저장하게 될 장소이다. 이제 이 데이터 디렉토리에서 <literal>java -classpath ../lib/hsqldb.jar org.hsqldb.Server</literal>를 실행시켜서 데이터베이스를 시작시켜라. 당신은 그것이 시작되고 이것은 우리의 어플리케이션이 나중에 연결하게 될 장소인, 하나의 TCP/IP 소켓에 바인드 되는 것을 볼 수 있다. 만일 이 튜토리얼 동안에 당신이 새 데이터베이스로 시작하고자 원할 경우, HSQL DB를 셧다운시키고(왼도우에서 <literal>CTRL + C</literal>를 눌러라), <literal>data/</literal> 디렉토리 내에 있는 모든 파일들을 삭제하고 다시 HSQL DB를 시작하라."
+#. Tag: para
+#: tutorial.xml:247
+#, no-c-format
+msgid ""
+"Create a directory called <literal>data</literal> in the root of the "
+"development directory - this is where HSQL DB will store its data files. Now "
+"start the database by running <literal>java -classpath ../lib/hsqldb.jar org."
+"hsqldb.Server</literal> in this data directory. You can 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 "
+"HSQL DB (press <literal>CTRL + C</literal> in the window), delete all files "
+"in the <literal>data/</literal> directory, and start HSQL DB again."
+msgstr ""
+"개발 디렉토리의 루트에 <literal>data</literal>로 명명된 디렉토리를 생성시켜"
+"라 - 이 디렉토리는 HSQL DB가 그것의 데이터 파일들을 저장하게 될 장소이다. 이"
+"제 이 데이터 디렉토리에서 <literal>java -classpath ../lib/hsqldb.jar org."
+"hsqldb.Server</literal>를 실행시켜서 데이터베이스를 시작시켜라. 당신은 그것"
+"이 시작되고 이것은 우리의 어플리케이션이 나중에 연결하게 될 장소인, 하나의 "
+"TCP/IP 소켓에 바인드 되는 것을 볼 수 있다. 만일 이 튜토리얼 동안에 당신이 새 "
+"데이터베이스로 시작하고자 원할 경우, HSQL DB를 셧다운시키고(왼도우에서 "
+"<literal>CTRL + C</literal>를 눌러라), <literal>data/</literal> 디렉토리 내"
+"에 있는 모든 파일들을 삭제하고 다시 HSQL DB를 시작하라."
-#: index.docbook:257
-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 풀링 소프트웨어를 사용하고자 원할 경우에는 다른 커넥션 풀링 설정들을 사용해야 함을 노트하라."
+#. Tag: para
+#: tutorial.xml:257
+#, no-c-format
+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 풀링 소프트웨"
+"어를 사용하고자 원할 경우에는 다른 커넥션 풀링 설정들을 사용해야 함을 노트하"
+"라."
-#: index.docbook:267
-msgid "For Hibernate's configuration, we can use a simple <literal>hibernate.properties</literal> file, a slightly more sophisticated <literal>hibernate.cfg.xml</literal> file, or even complete programmatic setup. Most users prefer the XML configuration file:"
-msgstr "Hibernate의 구성을 위해, 우리는 한 개의 간단한 <literal>hibernate.properties</literal> 파일, 한 개의 약간 더 세련된 <literal>hibernate.cfg.xml</literal> 파일, 또는 심지어 완전한 프로그램 상의 설정을 사용할 수 있다. 대부분의 사용자들은 XMl 구성 파일을 선호한다:"
+#. Tag: para
+#: tutorial.xml:267
+#, no-c-format
+msgid ""
+"For Hibernate's configuration, we can use a simple <literal>hibernate."
+"properties</literal> file, a slightly more sophisticated <literal>hibernate."
+"cfg.xml</literal> file, or even complete programmatic setup. Most users "
+"prefer the XML configuration file:"
+msgstr ""
+"Hibernate의 구성을 위해, 우리는 한 개의 간단한 <literal>hibernate."
+"properties</literal> 파일, 한 개의 약간 더 세련된 <literal>hibernate.cfg."
+"xml</literal> 파일, 또는 심지어 완전한 프로그램 상의 설정을 사용할 수 있다. "
+"대부분의 사용자들은 XMl 구성 파일을 선호한다:"
-#: index.docbook:273
+#. Tag: programlisting
+#: tutorial.xml:273
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
- "<!DOCTYPE hibernate-configuration PUBLIC\n"
- " \"-//Hibernate/Hibernate Configuration DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd\">\n"
- "\n"
- "<hibernate-configuration>\n"
- "\n"
- " <session-factory>\n"
- "\n"
- " <!-- Database connection settings -->\n"
- " <property name=\"connection.driver_class\">org.hsqldb.jdbcDriver</property>\n"
- " <property name=\"connection.url\">jdbc:hsqldb:hsql://localhost</property>\n"
- " <property name=\"connection.username\">sa</property>\n"
- " <property name=\"connection.password\"></property>\n"
- "\n"
- " <!-- JDBC connection pool (use the built-in) -->\n"
- " <property name=\"connection.pool_size\">1</property>\n"
- "\n"
- " <!-- SQL dialect -->\n"
- " <property name=\"dialect\">org.hibernate.dialect.HSQLDialect</property>\n"
- "\n"
- " <!-- Enable Hibernate's automatic session context management -->\n"
- " <property name=\"current_session_context_class\">thread</property>\n"
- "\n"
- " <!-- Disable the second-level cache -->\n"
- " <property name=\"cache.provider_class\">org.hibernate.cache.NoCacheProvider</property>\n"
- "\n"
- " <!-- Echo all executed SQL to stdout -->\n"
- " <property name=\"show_sql\">true</property>\n"
- "\n"
- " <!-- Drop and re-create the database schema on startup -->\n"
- " <property name=\"hbm2ddl.auto\">create</property>\n"
- "\n"
- " <mapping resource=\"events/Event.hbm.xml\"/>\n"
- "\n"
- " </session-factory>\n"
- "\n"
- "</hibernate-configuration>]]>"
+"<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
+"<!DOCTYPE hibernate-configuration PUBLIC\n"
+" \"-//Hibernate/Hibernate Configuration DTD 3.0//EN\"\n"
+" \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
+"\">\n"
+"\n"
+"<hibernate-configuration>\n"
+"\n"
+" <session-factory>\n"
+"\n"
+" <!-- Database connection settings -->\n"
+" <property name=\"connection.driver_class\">org.hsqldb.jdbcDriver</"
+"property>\n"
+" <property name=\"connection.url\">jdbc:hsqldb:hsql://localhost</"
+"property>\n"
+" <property name=\"connection.username\">sa</property>\n"
+" <property name=\"connection.password\"></property>\n"
+"\n"
+" <!-- JDBC connection pool (use the built-in) -->\n"
+" <property name=\"connection.pool_size\">1</property>\n"
+"\n"
+" <!-- SQL dialect -->\n"
+" <property name=\"dialect\">org.hibernate.dialect.HSQLDialect</"
+"property>\n"
+"\n"
+" <!-- Enable Hibernate's automatic session context management -->\n"
+" <property name=\"current_session_context_class\">thread</property>\n"
+"\n"
+" <!-- Disable the second-level cache -->\n"
+" <property name=\"cache.provider_class\">org.hibernate.cache."
+"NoCacheProvider</property>\n"
+"\n"
+" <!-- Echo all executed SQL to stdout -->\n"
+" <property name=\"show_sql\">true</property>\n"
+"\n"
+" <!-- Drop and re-create the database schema on startup -->\n"
+" <property name=\"hbm2ddl.auto\">create</property>\n"
+"\n"
+" <mapping resource=\"events/Event.hbm.xml\"/>\n"
+"\n"
+" </session-factory>\n"
+"\n"
+"</hibernate-configuration>]]>"
msgstr ""
- "<![CDATA[<?xml version='1.0' encoding='utf-8'?>\n"
- "<!DOCTYPE hibernate-configuration PUBLIC\n"
- " \"-//Hibernate/Hibernate Configuration DTD 3.0//EN\"\n"
- " \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd\">\n"
- "\n"
- "<hibernate-configuration>\n"
- "\n"
- " <session-factory>\n"
- "\n"
- " <!-- Database connection settings -->\n"
- " <property name=\"connection.driver_class\">org.hsqldb.jdbcDriver</property>\n"
- " <property name=\"connection.url\">jdbc:hsqldb:hsql://localhost</property>\n"
- " <property name=\"connection.username\">sa</property>\n"
- " <property name=\"connection.password\"></property>\n"
- "\n"
- " <!-- JDBC connection pool (use the built-in) -->\n"
- " <property name=\"connection.pool_size\">1</property>\n"
- "\n"
- " <!-- SQL dialect -->\n"
- " <property name=\"dialect\">org.hibernate.dialect.HSQLDialect</property>\n"
- "\n"
- " <!-- Enable Hibernate's automatic session context management -->\n"
- " <property name=\"current_session_context_class\">thread</property>\n"
- "\n"
- " <!-- Disable the second-level cache -->\n"
- " <property name=\"cache.provider_class\">org.hibernate.cache.NoCacheProvider</property>\n"
- "\n"
- " <!-- Echo all executed SQL to stdout -->\n"
- " <property name=\"show_sql\">true</property>\n"
- "\n"
- " <!-- Drop and re-create the database schema on startup -->\n"
- " <property name=\"hbm2ddl.auto\">create</property>\n"
- "\n"
- " <mapping resource=\"events/Event.hbm.xml\"/>\n"
- "\n"
- " </session-factory>\n"
- "\n"
- "</hibernate-configuration>]]>"
-#: index.docbook:275
-msgid "Note that this XML configuration uses a different DTD. We configure Hibernate's <literal>SessionFactory</literal> - a global factory responsible for a particular database. If you have several databases, use several <literal><session-factory></literal> configurations, usually in several configuration files (for easier startup)."
-msgstr "이 XML 구성이 다른 DTD를 사용함을 노트하라. 우리는 Hibernate의 <literal>SessionFactory</literal> -특정 데이터베이스에 대해 책임이 있는 전역 팩토리-를 구성한다. 만일 당신이 여러 데이터베이스들을 갖고 있다면, (보다 쉬운 시작을 위해) 몇 개의 구성 파일들 속에 여러 개의 <literal><session-factory></literal> 구성들을 사용하라."
+#. Tag: para
+#: tutorial.xml:275
+#, no-c-format
+msgid ""
+"Note that this XML configuration uses a different DTD. We configure "
+"Hibernate's <literal>SessionFactory</literal> - a global factory responsible "
+"for a particular database. If you have several databases, use several "
+"<literal><session-factory></literal> configurations, usually in "
+"several configuration files (for easier startup)."
+msgstr ""
+"이 XML 구성이 다른 DTD를 사용함을 노트하라. 우리는 Hibernate의 "
+"<literal>SessionFactory</literal> -특정 데이터베이스에 대해 책임이 있는 전역 "
+"팩토리-를 구성한다. 만일 당신이 여러 데이터베이스들을 갖고 있다면, (보다 쉬"
+"운 시작을 위해) 몇 개의 구성 파일들 속에 여러 개의 <literal><session-"
+"factory></literal> 구성들을 사용하라."
-#: index.docbook:283
-msgid "The first four <literal>property</literal> elements contain the necessary configuration for the JDBC connection. The dialect <literal>property</literal> element specifies the particular SQL variant Hibernate generates. Hibernate's automatic session management for persistence contexts will come in handy as you will soon see. The <literal>hbm2ddl.auto</literal> option turns on automatic generation of database schemas - directly into the database. This can of course also be turned off (by removing the config option) or redirected to a file with the help of the <literal>SchemaExport</literal> Ant task. Finally, we add the mapping file(s) for persistent classes to the configuration."
-msgstr "처음 네 개의 <literal>property</literal> 요소들은 JDBC 커넥션을 위한 필수 구성을 포함한다. dialect <literal>property</literal> 요소는 Hibernate가 발생시키는 특별한 SQL 이형(異形)을 지정한다. <literal>hbm2ddl.auto</literal> 옵션은 -직접 데이터베이스 속으로- 데이터베이스 스키마의 자동적인 생성을 활성화 시킨다. 물론 이것은 (config 옵션을 제거함으로써) 비활성화 시킬 수 있거나 <literal>SchemaExport</literal> Ant 태스크의 도움으로 파일로 리다이렉트 될 수 있다. 마지막으로 우리는 영속 클래스들을 위한 매핑 파일(들)을 추가시킨다."
+#. Tag: para
+#: tutorial.xml:283
+#, no-c-format
+msgid ""
+"The first four <literal>property</literal> elements contain the necessary "
+"configuration for the JDBC connection. The dialect <literal>property</"
+"literal> element specifies the particular SQL variant Hibernate generates. "
+"Hibernate's automatic session management for persistence contexts will come "
+"in handy as you will soon see. The <literal>hbm2ddl.auto</literal> option "
+"turns on automatic generation of database schemas - directly into the "
+"database. This can of course also be turned off (by removing the config "
+"option) or redirected to a file with the help of the <literal>SchemaExport</"
+"literal> Ant task. Finally, we add the mapping file(s) for persistent "
+"classes to the configuration."
+msgstr ""
+"처음 네 개의 <literal>property</literal> 요소들은 JDBC 커넥션을 위한 필수 구"
+"성을 포함한다. dialect <literal>property</literal> 요소는 Hibernate가 발생시"
+"키는 특별한 SQL 이형(異形)을 지정한다. <literal>hbm2ddl.auto</literal> 옵션"
+"은 -직접 데이터베이스 속으로- 데이터베이스 스키마의 자동적인 생성을 활성화 시"
+"킨다. 물론 이것은 (config 옵션을 제거함으로써) 비활성화 시킬 수 있거나 "
+"<literal>SchemaExport</literal> Ant 태스크의 도움으로 파일로 리다이렉트 될 "
+"수 있다. 마지막으로 우리는 영속 클래스들을 위한 매핑 파일(들)을 추가시킨다."
-#: index.docbook:296
-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</literal> in the root of the classpath, on startup."
-msgstr "이 파일을 소스 디렉토리 속으로 복사하고, 따라서 그것은 classpath의 루트에서 끝날 것이다. Hibernate는 시작 시에 classpath의 루트에서 <literal>hibernate.cfg.xml</literal>로 명명된 파일을 자동적으로 찾는다."
+#. Tag: para
+#: tutorial.xml:296
+#, no-c-format
+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</literal> in the root of the classpath, on "
+"startup."
+msgstr ""
+"이 파일을 소스 디렉토리 속으로 복사하고, 따라서 그것은 classpath의 루트에서 "
+"끝날 것이다. Hibernate는 시작 시에 classpath의 루트에서 <literal>hibernate."
+"cfg.xml</literal>로 명명된 파일을 자동적으로 찾는다."
-#: index.docbook:305
+#. Tag: title
+#: tutorial.xml:305
+#, no-c-format
msgid "Building with Ant"
msgstr "Ant로 빌드하기"
-#: index.docbook:307
-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</literal> and placed directly in the development directory."
-msgstr "우리는 이제 Ant로 튜토리얼을 빌드할 것이다. 당신은 Ant를 설치할 필요가 있을 것이다 - <ulink url=\"http://ant.apache.org/bindownload.cgi\">Ant 내려받기 페이지</ulink>에서 Ant를 얻어라. Ant를 설치하는 방법은 여기서 다루지 않을 것이다. <ulink url=\"http://ant.apache.org/manual/index.html\">Ant 매뉴얼</ulink>을 참조하길 바란다. 당신이 Ant를 설치한 후에, 우리는 빌드파일 생성을 시작할 수 있다. 그것은 <literal>build.xml</literal>로 명명되고 개발 디렉토리 속에 직접 위치될 것이다."
+#. Tag: para
+#: tutorial.xml:307
+#, no-c-format
+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</literal> and placed "
+"directly in the development directory."
+msgstr ""
+"우리는 이제 Ant로 튜토리얼을 빌드할 것이다. 당신은 Ant를 설치할 필요가 있을 "
+"것이다 - <ulink url=\"http://ant.apache.org/bindownload.cgi\">Ant 내려받기 페"
+"이지</ulink>에서 Ant를 얻어라. Ant를 설치하는 방법은 여기서 다루지 않을 것이"
+"다. <ulink url=\"http://ant.apache.org/manual/index.html\">Ant 매뉴얼</ulink>"
+"을 참조하길 바란다. 당신이 Ant를 설치한 후에, 우리는 빌드파일 생성을 시작할 "
+"수 있다. 그것은 <literal>build.xml</literal>로 명명되고 개발 디렉토리 속에 직"
+"접 위치될 것이다."
-#: index.docbook:316
+#. Tag: para
+#: tutorial.xml:316
+#, no-c-format
msgid "A basic build file looks like this:"
msgstr "기본 빌드 파일은 다음과 같다:"
-#: index.docbook:320
+#. Tag: programlisting
+#: tutorial.xml:320
+#, no-c-format
msgid ""
- "<![CDATA[<project name=\"hibernate-tutorial\" default=\"compile\">\n"
- "\n"
- " <property name=\"sourcedir\" value=\"${basedir}/src\"/>\n"
- " <property name=\"targetdir\" value=\"${basedir}/bin\"/>\n"
- " <property name=\"librarydir\" value=\"${basedir}/lib\"/>\n"
- "\n"
- " <path id=\"libraries\">\n"
- " <fileset dir=\"${librarydir}\">\n"
- " <include name=\"*.jar\"/>\n"
- " </fileset>\n"
- " </path>\n"
- "\n"
- " <target name=\"clean\">\n"
- " <delete dir=\"${targetdir}\"/>\n"
- " <mkdir dir=\"${targetdir}\"/>\n"
- " </target>\n"
- "\n"
- " <target name=\"compile\" depends=\"clean, copy-resources\">\n"
- " <javac srcdir=\"${sourcedir}\"\n"
- " destdir=\"${targetdir}\"\n"
- " classpathref=\"libraries\"/>\n"
- " </target>\n"
- "\n"
- " <target name=\"copy-resources\">\n"
- " <copy todir=\"${targetdir}\">\n"
- " <fileset dir=\"${sourcedir}\">\n"
- " <exclude name=\"**/*.java\"/>\n"
- " </fileset>\n"
- " </copy>\n"
- " </target>\n"
- "\n"
- "</project>]]>"
+"<![CDATA[<project name=\"hibernate-tutorial\" default=\"compile\">\n"
+"\n"
+" <property name=\"sourcedir\" value=\"${basedir}/src\"/>\n"
+" <property name=\"targetdir\" value=\"${basedir}/bin\"/>\n"
+" <property name=\"librarydir\" value=\"${basedir}/lib\"/>\n"
+"\n"
+" <path id=\"libraries\">\n"
+" <fileset dir=\"${librarydir}\">\n"
+" <include name=\"*.jar\"/>\n"
+" </fileset>\n"
+" </path>\n"
+"\n"
+" <target name=\"clean\">\n"
+" <delete dir=\"${targetdir}\"/>\n"
+" <mkdir dir=\"${targetdir}\"/>\n"
+" </target>\n"
+"\n"
+" <target name=\"compile\" depends=\"clean, copy-resources\">\n"
+" <javac srcdir=\"${sourcedir}\"\n"
+" destdir=\"${targetdir}\"\n"
+" classpathref=\"libraries\"/>\n"
+" </target>\n"
+"\n"
+" <target name=\"copy-resources\">\n"
+" <copy todir=\"${targetdir}\">\n"
+" <fileset dir=\"${sourcedir}\">\n"
+" <exclude name=\"**/*.java\"/>\n"
+" </fileset>\n"
+" </copy>\n"
+" </target>\n"
+"\n"
+"</project>]]>"
msgstr ""
- "<![CDATA[<project name=\"hibernate-tutorial\" default=\"compile\">\n"
- "\n"
- " <property name=\"sourcedir\" value=\"${basedir}/src\"/>\n"
- " <property name=\"targetdir\" value=\"${basedir}/bin\"/>\n"
- " <property name=\"librarydir\" value=\"${basedir}/lib\"/>\n"
- "\n"
- " <path id=\"libraries\">\n"
- " <fileset dir=\"${librarydir}\">\n"
- " <include name=\"*.jar\"/>\n"
- " </fileset>\n"
- " </path>\n"
- "\n"
- " <target name=\"clean\">\n"
- " <delete dir=\"${targetdir}\"/>\n"
- " <mkdir dir=\"${targetdir}\"/>\n"
- " </target>\n"
- "\n"
- " <target name=\"compile\" depends=\"clean, copy-resources\">\n"
- " <javac srcdir=\"${sourcedir}\"\n"
- " destdir=\"${targetdir}\"\n"
- " classpathref=\"libraries\"/>\n"
- " </target>\n"
- "\n"
- " <target name=\"copy-resources\">\n"
- " <copy todir=\"${targetdir}\">\n"
- " <fileset dir=\"${sourcedir}\">\n"
- " <exclude name=\"**/*.java\"/>\n"
- " </fileset>\n"
- " </copy>\n"
- " </target>\n"
- "\n"
- "</project>]]>"
-#: index.docbook:322
-msgid "This will tell Ant to add all files in the lib directory ending with <literal>.jar</literal> 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</literal>로 끝나는 lib 디렉토리 내에 있는 모든 파일들을 컴파일에 사용되는 classpath에 추가하도록 Ant에게 알려줄 것이다. 그것은 또한 모든 비-Java 소스 파일들을 대상 디렉토리로 복사할 것이다. 예를 들면, 구성 및 Hibernate 매핑 파일들. 만일 당신이 Ant를 이제 실행할 경우, 당신은 다음 출력을 얻게 될 것이다:"
+#. Tag: para
+#: tutorial.xml:322
+#, no-c-format
+msgid ""
+"This will tell Ant to add all files in the lib directory ending with "
+"<literal>.jar</literal> 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</literal>로 끝나는 lib 디렉토리 내에 있는 모든 파일들을 "
+"컴파일에 사용되는 classpath에 추가하도록 Ant에게 알려줄 것이다. 그것은 또한 "
+"모든 비-Java 소스 파일들을 대상 디렉토리로 복사할 것이다. 예를 들면, 구성 및 "
+"Hibernate 매핑 파일들. 만일 당신이 Ant를 이제 실행할 경우, 당신은 다음 출력"
+"을 얻게 될 것이다:"
-#: index.docbook:329
+#. Tag: programlisting
+#: tutorial.xml:329
+#, no-c-format
msgid ""
- "<![CDATA[C:\\hibernateTutorial\\>ant\n"
- "Buildfile: build.xml\n"
- "\n"
- "copy-resources:\n"
- " [copy] Copying 2 files to C:\\hibernateTutorial\\bin\n"
- "\n"
- "compile:\n"
- " [javac] Compiling 1 source file to C:\\hibernateTutorial\\bin\n"
- "\n"
- "BUILD SUCCESSFUL\n"
- "Total time: 1 second ]]>"
+"<![CDATA[C:\\hibernateTutorial\\>ant\n"
+"Buildfile: build.xml\n"
+"\n"
+"copy-resources:\n"
+" [copy] Copying 2 files to C:\\hibernateTutorial\\bin\n"
+"\n"
+"compile:\n"
+" [javac] Compiling 1 source file to C:\\hibernateTutorial\\bin\n"
+"\n"
+"BUILD SUCCESSFUL\n"
+"Total time: 1 second ]]>"
msgstr ""
- "<![CDATA[C:\\hibernateTutorial\\>ant\n"
- "Buildfile: build.xml\n"
- "\n"
- "copy-resources:\n"
- " [copy] Copying 2 files to C:\\hibernateTutorial\\bin\n"
- "\n"
- "compile:\n"
- " [javac] Compiling 1 source file to C:\\hibernateTutorial\\bin\n"
- "\n"
- "BUILD SUCCESSFUL\n"
- "Total time: 1 second ]]>"
-#: index.docbook:334
+#. Tag: title
+#: tutorial.xml:334
+#, no-c-format
msgid "Startup and helpers"
msgstr "시작과 helper들"
-#: index.docbook:336
-msgid "It's time to load and store some <literal>Event</literal> objects, but first we have to complete the setup with some infrastructure code. We have to startup Hibernate. This startup includes building a global <literal>SessionFactory</literal> object and to store it somewhere for easy access in application code. A <literal>SessionFactory</literal> can open up new <literal>Session</literal>'s. A <literal>Session</literal> represents a single-threaded unit of work, the <literal>SessionFactory</literal> is a thread-safe global object, instantiated once."
-msgstr "몇몇 <literal>Event</literal> 객체들을 로드시키고 저장할 차례이지만, 먼저 우리는 어떤 인프라스트럭처 코드로 설정을 완료해야 한다. 우리는 Hibernate를 시작해야 한다. 이 시작은 전역 <literal>SessionFactory</literal> 객체를 빌드하고 어플리케이션 내에서 용이한 접근을 위해 그것을 어떤 곳에 저장하는 것을 포함한다. <literal>SessionFactory</literal>는 새로운 <literal>Session</literal>들을 열 수 있다. <literal>Session</literal>은 작업의 단일-쓰레드 단위를 표현하며, <literal>SessionFactory</literal>는 한번 초기화 되는 하나의 thread-safe 전역 객체이다."
+#. Tag: para
+#: tutorial.xml:336
+#, no-c-format
+msgid ""
+"It's time to load and store some <literal>Event</literal> objects, but first "
+"we have to complete the setup with some infrastructure code. We have to "
+"startup Hibernate. This startup includes building a global "
+"<literal>SessionFactory</literal> object and to store it somewhere for easy "
+"access in application code. A <literal>SessionFactory</literal> can open up "
+"new <literal>Session</literal>'s. A <literal>Session</literal> represents a "
+"single-threaded unit of work, the <literal>SessionFactory</literal> is a "
+"thread-safe global object, instantiated once."
+msgstr ""
+"몇몇 <literal>Event</literal> 객체들을 로드시키고 저장할 차례이지만, 먼저 우"
+"리는 어떤 인프라스트럭처 코드로 설정을 완료해야 한다. 우리는 Hibernate를 시작"
+"해야 한다. 이 시작은 전역 <literal>SessionFactory</literal> 객체를 빌드하고 "
+"어플리케이션 내에서 용이한 접근을 위해 그것을 어떤 곳에 저장하는 것을 포함한"
+"다. <literal>SessionFactory</literal>는 새로운 <literal>Session</literal>들"
+"을 열 수 있다. <literal>Session</literal>은 작업의 단일-쓰레드 단위를 표현하"
+"며, <literal>SessionFactory</literal>는 한번 초기화 되는 하나의 thread-safe "
+"전역 객체이다."
-#: index.docbook:346
-msgid "We'll create a <literal>HibernateUtil</literal> helper class which takes care of startup and makes accessing a <literal>SessionFactory</literal> convenient. Let's have a look at the implementation:"
-msgstr "우리는 시작을 처리하고 <literal>Session</literal> 처리를 편리하게 해주는 <literal>HibernateUtil</literal> helper 클래스를 생성시킬 것이다. 이른바 <emphasis>ThreadLocal Session</emphasis> 패턴이 여기서 유용하며, 우리는 현재의 작업 단위를 현재의 쓰레드와 연관지워 유지한다. 구현을 살펴보자:"
+#. Tag: para
+#: tutorial.xml:346
+#, no-c-format
+msgid ""
+"We'll create a <literal>HibernateUtil</literal> helper class which takes "
+"care of startup and makes accessing a <literal>SessionFactory</literal> "
+"convenient. Let's have a look at the implementation:"
+msgstr ""
+"우리는 시작을 처리하고 <literal>Session</literal> 처리를 편리하게 해주는 "
+"<literal>HibernateUtil</literal> helper 클래스를 생성시킬 것이다. 이른바 "
+"<emphasis>ThreadLocal Session</emphasis> 패턴이 여기서 유용하며, 우리는 현재"
+"의 작업 단위를 현재의 쓰레드와 연관지워 유지한다. 구현을 살펴보자:"
-#: index.docbook:352
+#. Tag: programlisting
+#: tutorial.xml:352
+#, no-c-format
msgid ""
- "<![CDATA[package util;\n"
- "\n"
- "import org.hibernate.*;\n"
- "import org.hibernate.cfg.*;\n"
- "\n"
- "public class HibernateUtil {\n"
- "\n"
- " private static final SessionFactory sessionFactory;\n"
- "\n"
- " static {\n"
- " try {\n"
- " // Create the SessionFactory from hibernate.cfg.xml\n"
- " sessionFactory = new Configuration().configure().buildSessionFactory();\n"
- " } catch (Throwable ex) {\n"
- " // Make sure you log the exception, as it might be swallowed\n"
- " System.err.println(\"Initial SessionFactory creation failed.\" + ex);\n"
- " throw new ExceptionInInitializerError(ex);\n"
- " }\n"
- " }\n"
- "\n"
- " public static SessionFactory getSessionFactory() {\n"
- " return sessionFactory;\n"
- " }\n"
- "\n"
- "}]]>"
+"<![CDATA[package util;\n"
+"\n"
+"import org.hibernate.*;\n"
+"import org.hibernate.cfg.*;\n"
+"\n"
+"public class HibernateUtil {\n"
+"\n"
+" private static final SessionFactory sessionFactory;\n"
+"\n"
+" static {\n"
+" try {\n"
+" // Create the SessionFactory from hibernate.cfg.xml\n"
+" sessionFactory = new Configuration().configure()."
+"buildSessionFactory();\n"
+" } catch (Throwable ex) {\n"
+" // Make sure you log the exception, as it might be swallowed\n"
+" System.err.println(\"Initial SessionFactory creation failed.\" + "
+"ex);\n"
+" throw new ExceptionInInitializerError(ex);\n"
+" }\n"
+" }\n"
+"\n"
+" public static SessionFactory getSessionFactory() {\n"
+" return sessionFactory;\n"
+" }\n"
+"\n"
+"}]]>"
msgstr ""
- "<![CDATA[package util;\n"
- "\n"
- "import org.hibernate.*;\n"
- "import org.hibernate.cfg.*;\n"
- "\n"
- "public class HibernateUtil {\n"
- "\n"
- " private static final SessionFactory sessionFactory;\n"
- "\n"
- " static {\n"
- " try {\n"
- " // Create the SessionFactory from hibernate.cfg.xml\n"
- " sessionFactory = new Configuration().configure().buildSessionFactory();\n"
- " } catch (Throwable ex) {\n"
- " // Make sure you log the exception, as it might be swallowed\n"
- " System.err.println(\"Initial SessionFactory creation failed.\" + ex);\n"
- " throw new ExceptionInInitializerError(ex);\n"
- " }\n"
- " }\n"
- "\n"
- " public static SessionFactory getSessionFactory() {\n"
- " return sessionFactory;\n"
- " }\n"
- "\n"
- "}]]>"
-#: index.docbook:354
-msgid "This class does not only produce the global <literal>SessionFactory</literal> in its static initializer (called once by the JVM when the class is loaded), but also hides the fact that it uses a static singleton. It might as well lookup the <literal>SessionFactory</literal> from JNDI in an application server."
-msgstr "이 클래스는 (클래스가 로드될 때 JVM에 의해 한번 호출되는) 그것의 static 초기자 내에 전역 <literal>SessionFactory</literal>를 산출할 뿐만 아니라 또한 현재 쓰레드에 대한 <literal>Session</literal>을 소유하는 <literal>ThreadLocal</literal> 변수를 갖는다. 당신이 <literal>HibernateUtil.getCurrentSession()</literal>을 호출하는 시점에는 문제가 없으며, 그것은 항상 동일 쓰레드 내에 동일한 Hibernate 작업 단위를 반환할 것이다. <literal>HibernateUtil.closeSession()</literal>에 대한 호출은 쓰레드와 현재 연관되어 있는 작업 단위를 종료시킨다."
+#. Tag: para
+#: tutorial.xml:354
+#, no-c-format
+msgid ""
+"This class does not only produce the global <literal>SessionFactory</"
+"literal> in its static initializer (called once by the JVM when the class is "
+"loaded), but also hides the fact that it uses a static singleton. It might "
+"as well lookup the <literal>SessionFactory</literal> from JNDI in an "
+"application server."
+msgstr ""
+"이 클래스는 (클래스가 로드될 때 JVM에 의해 한번 호출되는) 그것의 static 초기"
+"자 내에 전역 <literal>SessionFactory</literal>를 산출할 뿐만 아니라 또한 현"
+"재 쓰레드에 대한 <literal>Session</literal>을 소유하는 <literal>ThreadLocal</"
+"literal> 변수를 갖는다. 당신이 <literal>HibernateUtil.getCurrentSession()</"
+"literal>을 호출하는 시점에는 문제가 없으며, 그것은 항상 동일 쓰레드 내에 동일"
+"한 Hibernate 작업 단위를 반환할 것이다. <literal>HibernateUtil.closeSession()"
+"</literal>에 대한 호출은 쓰레드와 현재 연관되어 있는 작업 단위를 종료시킨다."
-#: index.docbook:361
-msgid "If you give the <literal>SessionFactory</literal> a name in your configuration file, Hibernate will in fact try to bind it to JNDI after it has been built. To avoid this code completely you could also use JMX deployment and let the JMX-capable container instantiate and bind a <literal>HibernateService</literal> to JNDI. These advanced options are discussed in the Hibernate reference documentation."
-msgstr "당신이 이 helper를 사용하기 전에 thread-local 변수들에 대한 Java 개념을 확실히 이해하도록 하라. 보다 강력한 <literal>HibernateUtil</literal> helper는 http://caveatemptor.hibernate.org/에 있는 <literal>CaveatEmptor</literal> 뿐만 아니라 \"Java Persistence with Hibernate\" 책에서 찾을 수 있다. 당신이 J2EE 어플리케이션 서버 내에 Hibernate를 배치할 경우에 이 클래스는 필수적이지 않다: 하나의 <literal>Session</literal>은 현재의 JTA 트랜잭션에 자동적으로 바인드 될 것이고 당신은 JNDI를 통해 <literal>SessionFactory</literal>를 룩업할 수 있다. 만일 당신이 JBoss AS를 사용할 경우, Hibernate는 관리되는 시스템 서비스로서 배치될 수 있고 <literal>SessionFactory</literal>를 JNDI 이름에 자동적으로 바인드시킬 수 있을 것이다."
+#. Tag: para
+#: tutorial.xml:361
+#, no-c-format
+msgid ""
+"If you give the <literal>SessionFactory</literal> a name in your "
+"configuration file, Hibernate will in fact try to bind it to JNDI after it "
+"has been built. To avoid this code completely you could also use JMX "
+"deployment and let the JMX-capable container instantiate and bind a "
+"<literal>HibernateService</literal> to JNDI. These advanced options are "
+"discussed in the Hibernate reference documentation."
+msgstr ""
+"당신이 이 helper를 사용하기 전에 thread-local 변수들에 대한 Java 개념을 확실"
+"히 이해하도록 하라. 보다 강력한 <literal>HibernateUtil</literal> helper는 "
+"http://caveatemptor.hibernate.org/에 있는 <literal>CaveatEmptor</literal> 뿐"
+"만 아니라 \"Java Persistence with Hibernate\" 책에서 찾을 수 있다. 당신이 "
+"J2EE 어플리케이션 서버 내에 Hibernate를 배치할 경우에 이 클래스는 필수적이지 "
+"않다: 하나의 <literal>Session</literal>은 현재의 JTA 트랜잭션에 자동적으로 바"
+"인드 될 것이고 당신은 JNDI를 통해 <literal>SessionFactory</literal>를 룩업할 "
+"수 있다. 만일 당신이 JBoss AS를 사용할 경우, Hibernate는 관리되는 시스템 서비"
+"스로서 배치될 수 있고 <literal>SessionFactory</literal>를 JNDI 이름에 자동적"
+"으로 바인드시킬 수 있을 것이다."
-#: index.docbook:370
-msgid "Place <literal>HibernateUtil.java</literal> in the development source directory, in a package next to <literal>events</literal>:"
-msgstr "개발 소스 디렉토리 속에 <literal>HibernateUtil.java</literal> 를 위치지우고, 다음으로 <literal>Event.java</literal>를 위치지워라:"
+#. Tag: para
+#: tutorial.xml:370
+#, no-c-format
+msgid ""
+"Place <literal>HibernateUtil.java</literal> in the development source "
+"directory, in a package next to <literal>events</literal>:"
+msgstr ""
+"개발 소스 디렉토리 속에 <literal>HibernateUtil.java</literal> 를 위치지우고, "
+"다음으로 <literal>Event.java</literal>를 위치지워라:"
-#: index.docbook:375
+#. Tag: programlisting
+#: tutorial.xml:375
+#, no-c-format
msgid ""
- "<![CDATA[.\n"
- "+lib\n"
- " <Hibernate and third-party libraries>\n"
- "+src\n"
- " +events\n"
- " Event.java\n"
- " Event.hbm.xml\n"
- " +util\n"
- " HibernateUtil.java\n"
- " hibernate.cfg.xml\n"
- "+data\n"
- "build.xml]]>"
+"<![CDATA[.\n"
+"+lib\n"
+" <Hibernate and third-party libraries>\n"
+"+src\n"
+" +events\n"
+" Event.java\n"
+" Event.hbm.xml\n"
+" +util\n"
+" HibernateUtil.java\n"
+" hibernate.cfg.xml\n"
+"+data\n"
+"build.xml]]>"
msgstr ""
- "<![CDATA[.\n"
- "+lib\n"
- " <Hibernate and third-party libraries>\n"
- "+src\n"
- " +events\n"
- " Event.java\n"
- " Event.hbm.xml\n"
- " +util\n"
- " HibernateUtil.java\n"
- " hibernate.cfg.xml\n"
- "+data\n"
- "build.xml]]>"
-#: index.docbook:377
-msgid "This should again compile without problems. We finally need to configure a logging system - Hibernate uses commons logging and leaves you the choice between Log4j and JDK 1.4 logging. Most developers prefer Log4j: copy <literal>log4j.properties</literal> from the Hibernate distribution (it's in the <literal>etc/</literal> directory) to your <literal>src</literal> directory, next to <literal>hibernate.cfg.xml</literal>. Have a look at the example configuration and change the settings if you like to have more verbose output. By default, only Hibernate startup message are shown on stdout."
-msgstr "이것은 문제 없이 다시 컴파일 될 것이다. 우리는 마지막으로 로깅 시스템을 구성할 필요가 있다 - Hibernate는 commons logging를 사용하고 Log4j와 JDK 1.4 사이의 선택은 당신의 몫으로 남겨둔다. 대부분의 개발자들은 Log4j를 선호한다: Hibernate 배포본에 있는 <literal>log4j.properties</literal>(이것은 디렉토리 <literal>etc/</literal> 내에 있다)를 <literal>src</literal> 디렉토리로 복사하고, 다음으로 <literal>hibernate.cfg.xml</literal>을 복사하라. 예제 구성을 살펴보고 당신이 더 많은 verbose 출력을 원할 경우에 설정들을 변경하라. 디폴트로 Hibernate 시작 메시지는 stdout 상에 보여진다."
+#. Tag: para
+#: tutorial.xml:377
+#, no-c-format
+msgid ""
+"This should again compile without problems. We finally need to configure a "
+"logging system - Hibernate uses commons logging and leaves you the choice "
+"between Log4j and JDK 1.4 logging. Most developers prefer Log4j: copy "
+"<literal>log4j.properties</literal> from the Hibernate distribution (it's in "
+"the <literal>etc/</literal> directory) to your <literal>src</literal> "
+"directory, next to <literal>hibernate.cfg.xml</literal>. Have a look at the "
+"example configuration and change the settings if you like to have more "
+"verbose output. By default, only Hibernate startup message are shown on "
+"stdout."
+msgstr ""
+"이것은 문제 없이 다시 컴파일 될 것이다. 우리는 마지막으로 로깅 시스템을 구성"
+"할 필요가 있다 - Hibernate는 commons logging를 사용하고 Log4j와 JDK 1.4 사이"
+"의 선택은 당신의 몫으로 남겨둔다. 대부분의 개발자들은 Log4j를 선호한다: "
+"Hibernate 배포본에 있는 <literal>log4j.properties</literal>(이것은 디렉토리 "
+"<literal>etc/</literal> 내에 있다)를 <literal>src</literal> 디렉토리로 복사하"
+"고, 다음으로 <literal>hibernate.cfg.xml</literal>을 복사하라. 예제 구성을 살"
+"펴보고 당신이 더 많은 verbose 출력을 원할 경우에 설정들을 변경하라. 디폴트로 "
+"Hibernate 시작 메시지는 stdout 상에 보여진다."
-#: index.docbook:387
-msgid "The tutorial infrastructure is complete - and we are ready to do some real work with Hibernate."
-msgstr "튜토리얼 인프라스트럭처는 완전하다 - 그리고 우리는 Hibernate로 어떤 실제 작업을 행할 준비가 되어 있다."
+#. Tag: para
+#: tutorial.xml:387
+#, no-c-format
+msgid ""
+"The tutorial infrastructure is complete - and we are ready to do some real "
+"work with Hibernate."
+msgstr ""
+"튜토리얼 인프라스트럭처는 완전하다 - 그리고 우리는 Hibernate로 어떤 실제 작업"
+"을 행할 준비가 되어 있다."
-#: index.docbook:395
+#. Tag: title
+#: tutorial.xml:395
+#, no-c-format
msgid "Loading and storing objects"
msgstr "객체 로딩과 객체 저장"
-#: index.docbook:397
-msgid "Finally, we can use Hibernate to load and store objects. We write an <literal>EventManager</literal> class with a <literal>main()</literal> method:"
-msgstr "마지막으로 우리는 객체들을 로드시키고 저장하는데 Hibernate를 사용할 수 있다. 우리는 한 개의 <literal>main()</literal> 메소드를 가진 한 개의 <literal>EventManager</literal> 클래스를 작성한다:"
+#. Tag: para
+#: tutorial.xml:397
+#, no-c-format
+msgid ""
+"Finally, we can use Hibernate to load and store objects. We write an "
+"<literal>EventManager</literal> class with a <literal>main()</literal> "
+"method:"
+msgstr ""
+"마지막으로 우리는 객체들을 로드시키고 저장하는데 Hibernate를 사용할 수 있다. "
+"우리는 한 개의 <literal>main()</literal> 메소드를 가진 한 개의 "
+"<literal>EventManager</literal> 클래스를 작성한다:"
-#: index.docbook:402
+#. Tag: programlisting
+#: tutorial.xml:402
+#, no-c-format
msgid ""
- "<![CDATA[package events;\n"
- "import org.hibernate.Session;\n"
- "\n"
- "import java.util.Date;\n"
- "\n"
- "import util.HibernateUtil;\n"
- "\n"
- "public class EventManager {\n"
- "\n"
- " public static void main(String[] args) {\n"
- " EventManager mgr = new EventManager();\n"
- "\n"
- " if (args[0].equals(\"store\")) {\n"
- " mgr.createAndStoreEvent(\"My Event\", new Date());\n"
- " }\n"
- "\n"
- " HibernateUtil.getSessionFactory().close();\n"
- " }\n"
- "\n"
- " private void createAndStoreEvent(String title, Date theDate) {\n"
- "\n"
- " Session session = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- "\n"
- " session.beginTransaction();\n"
- "\n"
- " Event theEvent = new Event();\n"
- " theEvent.setTitle(title);\n"
- " theEvent.setDate(theDate);\n"
- "\n"
- " session.save(theEvent);\n"
- "\n"
- " session.getTransaction().commit();\n"
- " }\n"
- "\n"
- "}]]>"
+"<![CDATA[package events;\n"
+"import org.hibernate.Session;\n"
+"\n"
+"import java.util.Date;\n"
+"\n"
+"import util.HibernateUtil;\n"
+"\n"
+"public class EventManager {\n"
+"\n"
+" public static void main(String[] args) {\n"
+" EventManager mgr = new EventManager();\n"
+"\n"
+" if (args[0].equals(\"store\")) {\n"
+" mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+" }\n"
+"\n"
+" HibernateUtil.getSessionFactory().close();\n"
+" }\n"
+"\n"
+" private void createAndStoreEvent(String title, Date theDate) {\n"
+"\n"
+" Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+"();\n"
+"\n"
+" session.beginTransaction();\n"
+"\n"
+" Event theEvent = new Event();\n"
+" theEvent.setTitle(title);\n"
+" theEvent.setDate(theDate);\n"
+"\n"
+" session.save(theEvent);\n"
+"\n"
+" session.getTransaction().commit();\n"
+" }\n"
+"\n"
+"}]]>"
msgstr ""
- "<![CDATA[package events;\n"
- "import org.hibernate.Session;\n"
- "\n"
- "import java.util.Date;\n"
- "\n"
- "import util.HibernateUtil;\n"
- "\n"
- "public class EventManager {\n"
- "\n"
- " public static void main(String[] args) {\n"
- " EventManager mgr = new EventManager();\n"
- "\n"
- " if (args[0].equals(\"store\")) {\n"
- " mgr.createAndStoreEvent(\"My Event\", new Date());\n"
- " }\n"
- "\n"
- " HibernateUtil.getSessionFactory().close();\n"
- " }\n"
- "\n"
- " private void createAndStoreEvent(String title, Date theDate) {\n"
- "\n"
- " Session session = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- "\n"
- " session.beginTransaction();\n"
- "\n"
- " Event theEvent = new Event();\n"
- " theEvent.setTitle(title);\n"
- " theEvent.setDate(theDate);\n"
- "\n"
- " session.save(theEvent);\n"
- "\n"
- " session.getTransaction().commit();\n"
- " }\n"
- "\n"
- "}]]>"
-#: index.docbook:404
-msgid "We create a new <literal>Event</literal> object, and hand it over to Hibernate. Hibernate now takes care of the SQL and executes <literal>INSERT</literal>s on the database. Let's have a look at the <literal>Session</literal> and <literal>Transaction</literal>-handling code before we run this."
-msgstr "우리는 한 개의 새로운 <literal>Event</literal> 객체를 생성시키고, 그것을 Hibernate에게 건네준다. Hibernate는 이제 SQL을 처리하고 데이터베이스 상에서 <literal>INSERT</literal>들을 실행시킨다. -우리가 이것을 실행하기 전에 코드를 처리하는- <literal>Session</literal>과 <literal>Transaction</literal>을 살펴보자."
+#. Tag: para
+#: tutorial.xml:404
+#, no-c-format
+msgid ""
+"We create a new <literal>Event</literal> object, and hand it over to "
+"Hibernate. Hibernate now takes care of the SQL and executes <literal>INSERT</"
+"literal>s on the database. Let's have a look at the <literal>Session</"
+"literal> and <literal>Transaction</literal>-handling code before we run this."
+msgstr ""
+"우리는 한 개의 새로운 <literal>Event</literal> 객체를 생성시키고, 그것을 "
+"Hibernate에게 건네준다. Hibernate는 이제 SQL을 처리하고 데이터베이스 상에서 "
+"<literal>INSERT</literal>들을 실행시킨다. -우리가 이것을 실행하기 전에 코드"
+"를 처리하는- <literal>Session</literal>과 <literal>Transaction</literal>을 살"
+"펴보자."
-#: index.docbook:411
-msgid "A <literal>Session</literal> is a single unit of work. For now we'll keep things simple and assume a one-to-one granularity between a Hibernate <literal>Session</literal> and a database transaction. To shield our code from the actual underlying transaction system (in this case plain JDBC, but it could also run with JTA) we use the <literal>Transaction</literal> API that is available on the Hibernate <literal>Session</literal>."
-msgstr "<literal>Session</literal>은 한 개의 작업 단위이다. 지금부터 우리는 단숨함을 유지할 것이고 Hibernate <literal>Session</literal>과 데이터베이스 트랜잭션 사이의 일-대-일 과립형(granularity)을 가정할 것이다. 실제 기반 트랜잭션 시스템으로부터 우리의 소스를 은폐시키기 위해(이 경우 통상의 JDBC이지만, 그것은 또한 JTA에도 실행된다) 우리는 Hibernate <literal>Session</literal> 상에서 이용 가능한 <literal>Transaction</literal> API를 사용한다."
+#. Tag: para
+#: tutorial.xml:411
+#, no-c-format
+msgid ""
+"A <literal>Session</literal> is a single unit of work. For now we'll keep "
+"things simple and assume a one-to-one granularity between a Hibernate "
+"<literal>Session</literal> and a database transaction. To shield our code "
+"from the actual underlying transaction system (in this case plain JDBC, but "
+"it could also run with JTA) we use the <literal>Transaction</literal> API "
+"that is available on the Hibernate <literal>Session</literal>."
+msgstr ""
+"<literal>Session</literal>은 한 개의 작업 단위이다. 지금부터 우리는 단숨함을 "
+"유지할 것이고 Hibernate <literal>Session</literal>과 데이터베이스 트랜잭션 사"
+"이의 일-대-일 과립형(granularity)을 가정할 것이다. 실제 기반 트랜잭션 시스템"
+"으로부터 우리의 소스를 은폐시키기 위해(이 경우 통상의 JDBC이지만, 그것은 또"
+"한 JTA에도 실행된다) 우리는 Hibernate <literal>Session</literal> 상에서 이용 "
+"가능한 <literal>Transaction</literal> API를 사용한다."
-#: index.docbook:419
-msgid "What does <literal>sessionFactory.getCurrentSession()</literal> do? First, you can call it as many times and anywhere you like, once you get hold of your <literal>SessionFactory</literal> (easy thanks to <literal>HibernateUtil</literal>). The <literal>getCurrentSession()</literal> method always returns the \"current\" unit of work. Remember that we switched the configuration option for this mechanism to \"thread\" in <literal>hibernate.cfg.xml</literal>? Hence, the current unit of work is bound to the current Java thread that executes our application. However, this is not the full picture, you also have to consider scope, when a unit of work begins and when it ends."
-msgstr "<literal>sessionFactory.getCurrentSession()</literal>은 무엇을 행하는가? 먼저 당신은 당신이 (<literal>HibernateUtil</literal> 덕분에 쉽게) <literal>SessionFactory</literal>을 당신이 소유하고 있다면, 원하는 만큼 어디서든 여러번 그것을 호출할 수 있다. <literal>getCurrentSession()</literal> 메소드는 항상 \"현재의\" 작업 단위를 반환한다. 우리가 <literal>hibernate.cfg.xml</literal> 내에서 이 매커니즘에 대한 구성 옵션을 \"thread\"로 전환시켰음을 기억하는가? 그러므로 작업의 현재 단위는 우리의 어플리케이션을 실행시키는 현재 자바 쓰레드에 묶여 있다. 하지만 이것은 전체 그림이 아니며, 당신은 또한 scope(영역), 작업 단위가 시작될 때와 작업 단위가 종료될 때를 고려해야 한다."
+#. Tag: para
+#: tutorial.xml:419
+#, no-c-format
+msgid ""
+"What does <literal>sessionFactory.getCurrentSession()</literal> do? First, "
+"you can call it as many times and anywhere you like, once you get hold of "
+"your <literal>SessionFactory</literal> (easy thanks to "
+"<literal>HibernateUtil</literal>). The <literal>getCurrentSession()</"
+"literal> method always returns the \"current\" unit of work. Remember that "
+"we switched the configuration option for this mechanism to \"thread\" in "
+"<literal>hibernate.cfg.xml</literal>? Hence, the current unit of work is "
+"bound to the current Java thread that executes our application. However, "
+"this is not the full picture, you also have to consider scope, when a unit "
+"of work begins and when it ends."
+msgstr ""
+"<literal>sessionFactory.getCurrentSession()</literal>은 무엇을 행하는가? 먼"
+"저 당신은 당신이 (<literal>HibernateUtil</literal> 덕분에 쉽게) "
+"<literal>SessionFactory</literal>을 당신이 소유하고 있다면, 원하는 만큼 어디"
+"서든 여러번 그것을 호출할 수 있다. <literal>getCurrentSession()</literal> 메"
+"소드는 항상 \"현재의\" 작업 단위를 반환한다. 우리가 <literal>hibernate.cfg."
+"xml</literal> 내에서 이 매커니즘에 대한 구성 옵션을 \"thread\"로 전환시켰음"
+"을 기억하는가? 그러므로 작업의 현재 단위는 우리의 어플리케이션을 실행시키는 "
+"현재 자바 쓰레드에 묶여 있다. 하지만 이것은 전체 그림이 아니며, 당신은 또한 "
+"scope(영역), 작업 단위가 시작될 때와 작업 단위가 종료될 때를 고려해야 한다."
-#: index.docbook:430
-msgid "A <literal>Session</literal> begins when it is first needed, when the first call to <literal>getCurrentSession()</literal> is made. It is then bound by Hibernate to the current thread. When the transaction ends, either through commit or rollback, Hibernate automatically unbinds the <literal>Session</literal> from the thread and closes it for you. If you call <literal>getCurrentSession()</literal> again, you get a new <literal>Session</literal> and can start a new unit of work. This <emphasis>thread-bound</emphasis> programming model is the most popular way of using Hibernate, as it allows flexible layering of your code (transaction demarcation code can be separated from data access code, we'll do this later in this tutorial)."
-msgstr "<literal>Session</literal>은 그것이 처음으로 필요로 되고 <literal>getCurrentSession()</literal>에 대한 첫 번째 호출이 이루어질 때 시작된다. 그때 그것은 Hibernate에 의해 현재의 쓰레드에 바인드 된다. 커밋되든 롤백되든 간에 트랜잭션이 종료되고, Hibernate가 자동적으로 그 쓰레드로부터 <literal>Session</literal>을 바인드 해제시키고 당신을 위해 세션을 닫는다. 만일 당신이 <literal>getCurrentSession()</literal>을 다시 호출한다면, 당신은 새로운 <literal>Session</literal>을 얻고 새로운 작업단위를 시작할 수 있다. 이 <emphasis>thread-bound</emphasis> 프로그래밍 모형은 Hibernate를 사용하는 가장 대중적인 방법이다. 왜냐하면 그것은 당신의 코드를 유연하게 계층화시키는 것을 허용해주기 때문이다(트랜잭션 경계 분할 코드는 데이트 접근 코드와 구별지워질 수 있는데, 우�!
��는 이 튜토리얼의 뒷부분에서 이것을 다룰 것이다.)."
+#. Tag: para
+#: tutorial.xml:430
+#, no-c-format
+msgid ""
+"A <literal>Session</literal> begins when it is first needed, when the first "
+"call to <literal>getCurrentSession()</literal> is made. It is then bound by "
+"Hibernate to the current thread. When the transaction ends, either through "
+"commit or rollback, Hibernate automatically unbinds the <literal>Session</"
+"literal> from the thread and closes it for you. If you call "
+"<literal>getCurrentSession()</literal> again, you get a new "
+"<literal>Session</literal> and can start a new unit of work. This "
+"<emphasis>thread-bound</emphasis> programming model is the most popular way "
+"of using Hibernate, as it allows flexible layering of your code (transaction "
+"demarcation code can be separated from data access code, we'll do this later "
+"in this tutorial)."
+msgstr ""
+"<literal>Session</literal>은 그것이 처음으로 필요로 되고 "
+"<literal>getCurrentSession()</literal>에 대한 첫 번째 호출이 이루어질 때 시작"
+"된다. 그때 그것은 Hibernate에 의해 현재의 쓰레드에 바인드 된다. 커밋되든 롤백"
+"되든 간에 트랜잭션이 종료되고, Hibernate가 자동적으로 그 쓰레드로부터 "
+"<literal>Session</literal>을 바인드 해제시키고 당신을 위해 세션을 닫는다. 만"
+"일 당신이 <literal>getCurrentSession()</literal>을 다시 호출한다면, 당신은 새"
+"로운 <literal>Session</literal>을 얻고 새로운 작업단위를 시작할 수 있다. 이 "
+"<emphasis>thread-bound</emphasis> 프로그래밍 모형은 Hibernate를 사용하는 가"
+"장 대중적인 방법이다. 왜냐하면 그것은 당신의 코드를 유연하게 계층화시키는 것"
+"을 허용해주기 때문이다(트랜잭션 경계 분할 코드는 데이트 접근 코드와 구별지워"
+"질 수 있는데, 우리는 이 튜토리얼의 뒷부분에서 이것을 다룰 것이다.)."
-#: index.docbook:441
-msgid "Related to the unit of work scope, should the Hibernate <literal>Session</literal> be used to execute one or several database operations? The above example uses one <literal>Session</literal> for one operation. This is pure coincidence, the example is just not complex enough to show any other approach. The scope of a Hibernate <literal>Session</literal> is flexible but you should never design your application to use a new Hibernate <literal>Session</literal> for <emphasis>every</emphasis> database operation. So even if you see it a few more times in the following (very trivial) examples, consider <emphasis>session-per-operation</emphasis> an anti-pattern. A real (web) application is shown later in this tutorial."
-msgstr "작업 영역의 단위와 관련하여, Hibernate <literal>Session</literal>은 하나 또는 여러 개의 데이터베이스 오퍼레이션들을 실행시키는데 사용될 수 있는가? 위의 예제는 하나의 오퍼레이션에 한 개의 <literal>Session</literal>을 사용하고 있다. 이것은 순진한 일치이며, 예제는 어떤 다른 접근법을 보여주기에는 충분히 복잡하지 않다. Hibernate <literal>Session</literal>의 scope(영역)은 유연하지만 당신은 결코 <emphasis>모든</emphasis> 데이터베이스 오퍼레이션 각각에 대해 새로운 Hibernate <literal>Session</literal>을 사용하도록 당신의 어플리케이션을 설계할 수 없다. 따라서 심지어 당신이 다음의 (매우 사소한) 예제들에서 여러 번 그것을 볼 수 있을지라도 <emphasis>session-per-operation</emphasis>을 하나의 안티-패턴으로 간주하라. 실제 (웹) 어플리케이션은 이 튜토리얼의 �!
�부분에 보여진다."
+#. Tag: para
+#: tutorial.xml:441
+#, no-c-format
+msgid ""
+"Related to the unit of work scope, should the Hibernate <literal>Session</"
+"literal> be used to execute one or several database operations? The above "
+"example uses one <literal>Session</literal> for one operation. This is pure "
+"coincidence, the example is just not complex enough to show any other "
+"approach. The scope of a Hibernate <literal>Session</literal> is flexible "
+"but you should never design your application to use a new Hibernate "
+"<literal>Session</literal> for <emphasis>every</emphasis> database "
+"operation. So even if you see it a few more times in the following (very "
+"trivial) examples, consider <emphasis>session-per-operation</emphasis> an "
+"anti-pattern. A real (web) application is shown later in this tutorial."
+msgstr ""
+"작업 영역의 단위와 관련하여, Hibernate <literal>Session</literal>은 하나 또"
+"는 여러 개의 데이터베이스 오퍼레이션들을 실행시키는데 사용될 수 있는가? 위의 "
+"예제는 하나의 오퍼레이션에 한 개의 <literal>Session</literal>을 사용하고 있"
+"다. 이것은 순진한 일치이며, 예제는 어떤 다른 접근법을 보여주기에는 충분히 복"
+"잡하지 않다. Hibernate <literal>Session</literal>의 scope(영역)은 유연하지만 "
+"당신은 결코 <emphasis>모든</emphasis> 데이터베이스 오퍼레이션 각각에 대해 새"
+"로운 Hibernate <literal>Session</literal>을 사용하도록 당신의 어플리케이션을 "
+"설계할 수 없다. 따라서 심지어 당신이 다음의 (매우 사소한) 예제들에서 여러 번 "
+"그것을 볼 수 있을지라도 <emphasis>session-per-operation</emphasis>을 하나의 "
+"안티-패턴으로 간주하라. 실제 (웹) 어플리케이션은 이 튜토리얼의 뒷부분에 보여"
+"진다."
-#: index.docbook:452
-msgid "Have a look at <xref linkend=\"transactions\"/> for more information about transaction handling and demarcation. We also skipped any error handling and rollback in the previous example."
-msgstr "트랜잭션 핸들링과 경계구분에 대한 추가 정보는 <xref linkend=\"transactions\"/>을 살펴보라. 우리는 또한 앞의 예제에서 임의의 오류 처리와 롤백을 생략했다."
+#. Tag: para
+#: tutorial.xml:452
+#, no-c-format
+msgid ""
+"Have a look at <xref linkend=\"transactions\"/> for more information about "
+"transaction handling and demarcation. We also skipped any error handling and "
+"rollback in the previous example."
+msgstr ""
+"트랜잭션 핸들링과 경계구분에 대한 추가 정보는 <xref linkend=\"transactions\"/"
+">을 살펴보라. 우리는 또한 앞의 예제에서 임의의 오류 처리와 롤백을 생략했다."
-#: index.docbook:458
-msgid "To run this first routine we have to add a callable target to the Ant build file:"
-msgstr "이 첫 번째 루틴을 실행하기 위해서 우리는 호출 가능한 대상을 Ant 빌드 파일에 추가해야 한다:"
+#. Tag: para
+#: tutorial.xml:458
+#, no-c-format
+msgid ""
+"To run this first routine we have to add a callable target to the Ant build "
+"file:"
+msgstr ""
+"이 첫 번째 루틴을 실행하기 위해서 우리는 호출 가능한 대상을 Ant 빌드 파일에 "
+"추가해야 한다:"
-#: index.docbook:462
+#. Tag: programlisting
+#: tutorial.xml:462
+#, no-c-format
msgid ""
- "<![CDATA[<target name=\"run\" depends=\"compile\">\n"
- " <java fork=\"true\" classname=\"events.EventManager\" classpathref=\"libraries\">\n"
- " <classpath path=\"${targetdir}\"/>\n"
- " <arg value=\"${action}\"/>\n"
- " </java>\n"
- "</target>]]>"
+"<![CDATA[<target name=\"run\" depends=\"compile\">\n"
+" <java fork=\"true\" classname=\"events.EventManager\" classpathref="
+"\"libraries\">\n"
+" <classpath path=\"${targetdir}\"/>\n"
+" <arg value=\"${action}\"/>\n"
+" </java>\n"
+"</target>]]>"
msgstr ""
- "<![CDATA[<target name=\"run\" depends=\"compile\">\n"
- " <java fork=\"true\" classname=\"events.EventManager\" classpathref=\"libraries\">\n"
- " <classpath path=\"${targetdir}\"/>\n"
- " <arg value=\"${action}\"/>\n"
- " </java>\n"
- "</target>]]>"
-#: index.docbook:464
-msgid "The value of the <literal>action</literal> argument is set on the command line when calling the target:"
-msgstr "<literal>action</literal> 아규먼트의 값은 대상을 호출할 때 명령 라인 상에서 설정된다:"
+#. Tag: para
+#: tutorial.xml:464
+#, no-c-format
+msgid ""
+"The value of the <literal>action</literal> argument is set on the command "
+"line when calling the target:"
+msgstr ""
+"<literal>action</literal> 아규먼트의 값은 대상을 호출할 때 명령 라인 상에서 "
+"설정된다:"
-#: index.docbook:469
+#. Tag: programlisting
+#: tutorial.xml:469
+#, no-c-format
msgid "<![CDATA[C:\\hibernateTutorial\\>ant run -Daction=store]]>"
-msgstr "<![CDATA[C:\\hibernateTutorial\\>ant run -Daction=store]]>"
+msgstr ""
-#: index.docbook:471
-msgid "You should see, after compilation, Hibernate starting up and, depending on your configuration, lots of log output. At the end you will find the following line:"
-msgstr "컴파일, 구성에 따른 Hibernate 시작 후에, 당신은 많은 로그 출력을 보게 될 것이다. 끝에서 당신은 다음 라인을 발견할 것이다:"
+#. Tag: para
+#: tutorial.xml:471
+#, no-c-format
+msgid ""
+"You should see, after compilation, Hibernate starting up and, depending on "
+"your configuration, lots of log output. At the end you will find the "
+"following line:"
+msgstr ""
+"컴파일, 구성에 따른 Hibernate 시작 후에, 당신은 많은 로그 출력을 보게 될 것이"
+"다. 끝에서 당신은 다음 라인을 발견할 것이다:"
-#: index.docbook:476
-msgid "<![CDATA[[java] Hibernate: insert into EVENTS (EVENT_DATE, title, EVENT_ID) values (?, ?, ?)]]>"
-msgstr "<![CDATA[[java] Hibernate: insert into EVENTS (EVENT_DATE, title, EVENT_ID) values (?, ?, ?)]]>"
+#. Tag: programlisting
+#: tutorial.xml:476
+#, no-c-format
+msgid ""
+"<![CDATA[[java] Hibernate: insert into EVENTS (EVENT_DATE, title, EVENT_ID) "
+"values (?, ?, ?)]]>"
+msgstr ""
-#: index.docbook:478
-msgid "This is the <literal>INSERT</literal> 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</literal>."
-msgstr "이것은 Hibernate에 의해 실행된 <literal>INSERT</literal>이고, 물음표 기호는 JDBC 바인드 파라미터들을 나타낸다. 아규먼트로서 바인드 된 값들을 보거나 장황한 로그를 줄이려면 당신의 <literal>log4j.properties</literal>를 체크하라."
+#. Tag: para
+#: tutorial.xml:478
+#, no-c-format
+msgid ""
+"This is the <literal>INSERT</literal> 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</"
+"literal>."
+msgstr ""
+"이것은 Hibernate에 의해 실행된 <literal>INSERT</literal>이고, 물음표 기호는 "
+"JDBC 바인드 파라미터들을 나타낸다. 아규먼트로서 바인드 된 값들을 보거나 장황"
+"한 로그를 줄이려면 당신의 <literal>log4j.properties</literal>를 체크하라."
-#: index.docbook:484
-msgid "Now we'd like to list stored events as well, so we add an option to the main method:"
-msgstr "이제 우리는 마찬가지로 저장된 이벤트들을 열거하고자 원하며, 우리는 main 메소드에 한 개의 옵션을 추가한다:"
+#. Tag: para
+#: tutorial.xml:484
+#, no-c-format
+msgid ""
+"Now we'd like to list stored events as well, so we add an option to the main "
+"method:"
+msgstr ""
+"이제 우리는 마찬가지로 저장된 이벤트들을 열거하고자 원하며, 우리는 main 메소"
+"드에 한 개의 옵션을 추가한다:"
-#: index.docbook:488
+#. Tag: programlisting
+#: tutorial.xml:488
+#, no-c-format
msgid ""
- "<![CDATA[if (args[0].equals(\"store\")) {\n"
- " mgr.createAndStoreEvent(\"My Event\", new Date());\n"
- "}\n"
- "else if (args[0].equals(\"list\")) {\n"
- " List events = mgr.listEvents();\n"
- " for (int i = 0; i < events.size(); i++) {\n"
- " Event theEvent = (Event) events.get(i);\n"
- " System.out.println(\"Event: \" + theEvent.getTitle() +\n"
- " \" Time: \" + theEvent.getDate());\n"
- " }\n"
- "}]]>"
+"<![CDATA[if (args[0].equals(\"store\")) {\n"
+" mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+"}\n"
+"else if (args[0].equals(\"list\")) {\n"
+" List events = mgr.listEvents();\n"
+" for (int i = 0; i < events.size(); i++) {\n"
+" Event theEvent = (Event) events.get(i);\n"
+" System.out.println(\"Event: \" + theEvent.getTitle() +\n"
+" \" Time: \" + theEvent.getDate());\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[if (args[0].equals(\"store\")) {\n"
- " mgr.createAndStoreEvent(\"My Event\", new Date());\n"
- "}\n"
- "else if (args[0].equals(\"list\")) {\n"
- " List events = mgr.listEvents();\n"
- " for (int i = 0; i < events.size(); i++) {\n"
- " Event theEvent = (Event) events.get(i);\n"
- " System.out.println(\"Event: \" + theEvent.getTitle() +\n"
- " \" Time: \" + theEvent.getDate());\n"
- " }\n"
- "}]]>"
-#: index.docbook:490
+#. Tag: para
+#: tutorial.xml:490
+#, no-c-format
msgid "We also add a new <literal>listEvents() method</literal>:"
-msgstr "우리는 또한 새로운 <literal>listEvents() method</literal> 메소드를 추가 시킨다:"
+msgstr ""
+"우리는 또한 새로운 <literal>listEvents() method</literal> 메소드를 추가 시킨"
+"다:"
-#: index.docbook:494
+#. Tag: programlisting
+#: tutorial.xml:494
+#, no-c-format
msgid ""
- "<![CDATA[private List listEvents() {\n"
- "\n"
- " Session session = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- "\n"
- " session.beginTransaction();\n"
- "\n"
- " List result = session.createQuery(\"from Event\").list();\n"
- "\n"
- " session.getTransaction().commit();\n"
- "\n"
- " return result;\n"
- "}]]>"
+"<![CDATA[private List listEvents() {\n"
+"\n"
+" Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+"();\n"
+"\n"
+" session.beginTransaction();\n"
+"\n"
+" List result = session.createQuery(\"from Event\").list();\n"
+"\n"
+" session.getTransaction().commit();\n"
+"\n"
+" return result;\n"
+"}]]>"
msgstr ""
- "<![CDATA[private List listEvents() {\n"
- "\n"
- " Session session = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- "\n"
- " session.beginTransaction();\n"
- "\n"
- " List result = session.createQuery(\"from Event\").list();\n"
- "\n"
- " session.getTransaction().commit();\n"
- "\n"
- " return result;\n"
- "}]]>"
-#: index.docbook:496
-msgid "What we do here is use an HQL (Hibernate Query Language) query to load all existing <literal>Event</literal> objects from the database. Hibernate will generate the appropriate SQL, send it to the database and populate <literal>Event</literal> objects with the data. You can create more complex queries with HQL, of course."
-msgstr "여기서 우리가 행할 것은 데이터베이스로부터 모든 존재하는 <literal>Event</literal> 객체들을 로드시키기 위해 HQL (Hibernate Query Language) 질의를 사용하는 것이다. Hibernate는 적절한 SQL을 생성시킬 것이고, 그것을 데이터베이스로 전송하고 데이터를 <literal>Event</literal> 객체들에 거주시킬 것이다. 당신은 물론 HQL로서 보다 복잡한 질의들을 생성시킬 수 있다."
+#. Tag: para
+#: tutorial.xml:496
+#, no-c-format
+msgid ""
+"What we do here is use an HQL (Hibernate Query Language) query to load all "
+"existing <literal>Event</literal> objects from the database. Hibernate will "
+"generate the appropriate SQL, send it to the database and populate "
+"<literal>Event</literal> objects with the data. You can create more complex "
+"queries with HQL, of course."
+msgstr ""
+"여기서 우리가 행할 것은 데이터베이스로부터 모든 존재하는 <literal>Event</"
+"literal> 객체들을 로드시키기 위해 HQL (Hibernate Query Language) 질의를 사용"
+"하는 것이다. Hibernate는 적절한 SQL을 생성시킬 것이고, 그것을 데이터베이스로 "
+"전송하고 데이터를 <literal>Event</literal> 객체들에 거주시킬 것이다. 당신은 "
+"물론 HQL로서 보다 복잡한 질의들을 생성시킬 수 있다."
-#: index.docbook:503
+#. Tag: para
+#: tutorial.xml:503
+#, no-c-format
msgid "Now, to execute and test all of this, follow these steps:"
msgstr "이제 이 모든 것을 실행하고 테스트하기 위해, 다음 단계들을 따르라:"
-#: index.docbook:509
-msgid "Run <literal>ant run -Daction=store</literal> to store something into the database and, of course, to generate the database schema before through hbm2ddl."
-msgstr "데이터베이스 속으로 어떤 것을 저장하고 물론 앞서 hbm2ddl을 통해 데이터베이스 스키마를 산출시키기 위해 <literal>ant run -Daction=store</literal>를 실행하라."
+#. Tag: para
+#: tutorial.xml:509
+#, no-c-format
+msgid ""
+"Run <literal>ant run -Daction=store</literal> to store something into the "
+"database and, of course, to generate the database schema before through "
+"hbm2ddl."
+msgstr ""
+"데이터베이스 속으로 어떤 것을 저장하고 물론 앞서 hbm2ddl을 통해 데이터베이스 "
+"스키마를 산출시키기 위해 <literal>ant run -Daction=store</literal>를 실행하"
+"라."
-#: index.docbook:515
-msgid "Now disable hbm2ddl by commenting out the property in your <literal>hibernate.cfg.xml</literal> file. Usually you only leave it turned on in continous unit testing, but another run of hbm2ddl would <emphasis>drop</emphasis> everything you have stored - the <literal>create</literal> 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</literal> 파일 속에서 그 프로퍼티를 주석처리함으로써 hbm2ddl을 사용불가능하게 하라. 대개 당신은 지속되는 단위 테스팅에서는 그것을 사용 가능하게 내버려두어도 되지만, 또 다른 hbm2ddl의 실행은 당신이 저장했던 모든 것을 <emphasis>drop</emphasis>시킬 것이다 - <literal>create</literal> 구성 설정은 실제로 \"스키마로부터 모든 테이블들을 드롭시키고 나서, SessionFactory가 빌드될 때 모든 테이블들을 다시 생성시키는 것\"으로 변환된다."
+#. Tag: para
+#: tutorial.xml:515
+#, no-c-format
+msgid ""
+"Now disable hbm2ddl by commenting out the property in your "
+"<literal>hibernate.cfg.xml</literal> file. Usually you only leave it turned "
+"on in continous unit testing, but another run of hbm2ddl would "
+"<emphasis>drop</emphasis> everything you have stored - the <literal>create</"
+"literal> 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</literal> 파일 속에서 그 프로퍼티를 주"
+"석처리함으로써 hbm2ddl을 사용불가능하게 하라. 대개 당신은 지속되는 단위 테스"
+"팅에서는 그것을 사용 가능하게 내버려두어도 되지만, 또 다른 hbm2ddl의 실행은 "
+"당신이 저장했던 모든 것을 <emphasis>drop</emphasis>시킬 것이다 - "
+"<literal>create</literal> 구성 설정은 실제로 \"스키마로부터 모든 테이블들을 "
+"드롭시키고 나서, SessionFactory가 빌드될 때 모든 테이블들을 다시 생성시키는 "
+"것\"으로 변환된다."
-#: index.docbook:525
-msgid "If you now call Ant with <literal>-Daction=list</literal>, you should see the events you have stored so far. You can of course also call the <literal>store</literal> action a few times more."
-msgstr "만일 당신이 지금 <literal>-Daction=list</literal>로 Ant를 호출할 경우, 당신은 당신이 지금까지 저장했던 이벤트들을 보게 될 것이다. 물론 당신은 또한 여러 번 <literal>store</literal> 액션을 호출할 수 있다."
+#. Tag: para
+#: tutorial.xml:525
+#, no-c-format
+msgid ""
+"If you now call Ant with <literal>-Daction=list</literal>, you should see "
+"the events you have stored so far. You can of course also call the "
+"<literal>store</literal> action a few times more."
+msgstr ""
+"만일 당신이 지금 <literal>-Daction=list</literal>로 Ant를 호출할 경우, 당신"
+"은 당신이 지금까지 저장했던 이벤트들을 보게 될 것이다. 물론 당신은 또한 여러 "
+"번 <literal>store</literal> 액션을 호출할 수 있다."
-#: index.docbook:531
-msgid "Note: Most new Hibernate users fail at this point and we see questions about <emphasis>Table not found</emphasis> 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</emphasis> 오류 메시지들에 관한 질문을 받는다. 하지만 만일 당신이 위에 조명된 단게들을 따를 경우 당신은 이 문제를 겪지 않을 것이고, hbm2ddl이 처음 실행 시에 데이터베이스 스키마를 생성시키므로, 차후의 어플리케이션 재시작은 이 스키마를 사용할 것이다. 만일 당신이 매핑 그리고/또는 데이터베이스 스키마를 변경할 경우에, 당신은 다시 한번 더 hbm2ddl을 이용 가능하도록 해야 한다."
+#. Tag: para
+#: tutorial.xml:531
+#, no-c-format
+msgid ""
+"Note: Most new Hibernate users fail at this point and we see questions about "
+"<emphasis>Table not found</emphasis> 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</emphasis> 오류 메시지들에 관한 질문을 받는다. 하지"
+"만 만일 당신이 위에 조명된 단게들을 따를 경우 당신은 이 문제를 겪지 않을 것이"
+"고, hbm2ddl이 처음 실행 시에 데이터베이스 스키마를 생성시키므로, 차후의 어플"
+"리케이션 재시작은 이 스키마를 사용할 것이다. 만일 당신이 매핑 그리고/또는 데"
+"이터베이스 스키마를 변경할 경우에, 당신은 다시 한번 더 hbm2ddl을 이용 가능하"
+"도록 해야 한다."
-#: index.docbook:544
+#. Tag: title
+#: tutorial.xml:544
+#, no-c-format
msgid "Part 2 - Mapping associations"
msgstr "파트 2 - 연관들을 매핑하기"
-#: index.docbook:546
-msgid "We mapped a persistent entity class to a table. Let's build on this and add some class associations. First we'll add people to our application, and store a list of events they participate in."
-msgstr "우리는 한 개의 영속 엔티티 클래스를 한 개의 테이블로 매핑했다. 이것 위에서 빌드하고 몇몇 클래스 연관들을 추가시키자. 먼저 우리는 우리의 어플리케이션에 사람들을 추가하고 그들이 참여하는 이벤트들의 목록을 저장할 것이다."
+#. Tag: para
+#: tutorial.xml:546
+#, no-c-format
+msgid ""
+"We mapped a persistent entity class to a table. Let's build on this and add "
+"some class associations. First we'll add people to our application, and "
+"store a list of events they participate in."
+msgstr ""
+"우리는 한 개의 영속 엔티티 클래스를 한 개의 테이블로 매핑했다. 이것 위에서 빌"
+"드하고 몇몇 클래스 연관들을 추가시키자. 먼저 우리는 우리의 어플리케이션에 사"
+"람들을 추가하고 그들이 참여하는 이벤트들의 목록을 저장할 것이다."
-#: index.docbook:552
+#. Tag: title
+#: tutorial.xml:552
+#, no-c-format
msgid "Mapping the Person class"
msgstr "Person 클래스 매핑하기"
-#: index.docbook:554
+#. Tag: para
+#: tutorial.xml:554
+#, no-c-format
msgid "The first cut of the <literal>Person</literal> class is simple:"
msgstr "클래스의 첫 번째 장면은 간단하다:"
-#: index.docbook:558
+#. Tag: programlisting
+#: tutorial.xml:558
+#, no-c-format
msgid ""
- "<![CDATA[package events;\n"
- "\n"
- "public class Person {\n"
- "\n"
- " private Long id;\n"
- " private int age;\n"
- " private String firstname;\n"
- " private String lastname;\n"
- "\n"
- " public Person() {}\n"
- "\n"
- " // Accessor methods for all properties, private setter for 'id'\n"
- "\n"
- "}]]>"
+"<![CDATA[package events;\n"
+"\n"
+"public class Person {\n"
+"\n"
+" private Long id;\n"
+" private int age;\n"
+" private String firstname;\n"
+" private String lastname;\n"
+"\n"
+" public Person() {}\n"
+"\n"
+" // Accessor methods for all properties, private setter for 'id'\n"
+"\n"
+"}]]>"
msgstr ""
- "<![CDATA[package events;\n"
- "\n"
- "public class Person {\n"
- "\n"
- " private Long id;\n"
- " private int age;\n"
- " private String firstname;\n"
- " private String lastname;\n"
- "\n"
- " public Person() {}\n"
- "\n"
- " // Accessor methods for all properties, private setter for 'id'\n"
- "\n"
- "}]]>"
-#: index.docbook:560
-msgid "Create a new mapping file called <literal>Person.hbm.xml</literal> (don't forget the DTD reference at the top):"
-msgstr "<literal>Person.hbm.xml</literal>로 명명되는 새로운 매핑 파일을 생성시켜라 (맨위에 DTD 참조를 잊지말라):"
+#. Tag: para
+#: tutorial.xml:560
+#, no-c-format
+msgid ""
+"Create a new mapping file called <literal>Person.hbm.xml</literal> (don't "
+"forget the DTD reference at the top):"
+msgstr ""
+"<literal>Person.hbm.xml</literal>로 명명되는 새로운 매핑 파일을 생성시켜라 "
+"(맨위에 DTD 참조를 잊지말라):"
-#: index.docbook:565
+#. Tag: programlisting
+#: tutorial.xml:565
+#, no-c-format
msgid ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"events.Person\" table=\"PERSON\">\n"
- " <id name=\"id\" column=\"PERSON_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"age\"/>\n"
- " <property name=\"firstname\"/>\n"
- " <property name=\"lastname\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
+"<![CDATA[<hibernate-mapping>\n"
+"\n"
+" <class name=\"events.Person\" table=\"PERSON\">\n"
+" <id name=\"id\" column=\"PERSON_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"age\"/>\n"
+" <property name=\"firstname\"/>\n"
+" <property name=\"lastname\"/>\n"
+" </class>\n"
+"\n"
+"</hibernate-mapping>]]>"
msgstr ""
- "<![CDATA[<hibernate-mapping>\n"
- "\n"
- " <class name=\"events.Person\" table=\"PERSON\">\n"
- " <id name=\"id\" column=\"PERSON_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"age\"/>\n"
- " <property name=\"firstname\"/>\n"
- " <property name=\"lastname\"/>\n"
- " </class>\n"
- "\n"
- "</hibernate-mapping>]]>"
-#: index.docbook:567
+#. Tag: para
+#: tutorial.xml:567
+#, no-c-format
msgid "Finally, add the new mapping to Hibernate's configuration:"
msgstr "마지막으로 새로운 매핑을 Hibernate의 구성에 추가하라:"
-#: index.docbook:571
+#. Tag: programlisting
+#: tutorial.xml:571
+#, no-c-format
msgid ""
- "<![CDATA[<mapping resource=\"events/Event.hbm.xml\"/>\n"
- "<mapping resource=\"events/Person.hbm.xml\"/>]]>"
+"<![CDATA[<mapping resource=\"events/Event.hbm.xml\"/>\n"
+"<mapping resource=\"events/Person.hbm.xml\"/>]]>"
msgstr ""
- "<![CDATA[<mapping resource=\"events/Event.hbm.xml\"/>\n"
- "<mapping resource=\"events/Person.hbm.xml\"/>]]>"
-#: index.docbook:573
-msgid "We'll now create an association between these two entities. Obviously, persons can participate in events, and events have participants. The design questions we have to deal with are: directionality, multiplicity, and collection behavior."
-msgstr "이제 우리는 이들 두 개의 엔티티들 사이에 한 개의 연관을 생성시킬 것이다. 명백하게, 개인들은 이벤트들에 참여할 수 있고, 이벤트들은 참여자들을 갖는다. 우리가 다루어야 하는 설계 질문들은 다음과 같다 : 방향성(directionality), 다중성(multiplicity), 그리고 콜렉션 특징."
+#. Tag: para
+#: tutorial.xml:573
+#, no-c-format
+msgid ""
+"We'll now create an association between these two entities. Obviously, "
+"persons can participate in events, and events have participants. The design "
+"questions we have to deal with are: directionality, multiplicity, and "
+"collection behavior."
+msgstr ""
+"이제 우리는 이들 두 개의 엔티티들 사이에 한 개의 연관을 생성시킬 것이다. 명백"
+"하게, 개인들은 이벤트들에 참여할 수 있고, 이벤트들은 참여자들을 갖는다. 우리"
+"가 다루어야 하는 설계 질문들은 다음과 같다 : 방향성(directionality), 다중성"
+"(multiplicity), 그리고 콜렉션 특징."
-#: index.docbook:583
+#. Tag: title
+#: tutorial.xml:583
+#, no-c-format
msgid "A unidirectional Set-based association"
msgstr "단방향 Set-기반의 연관"
-#: index.docbook:585
-msgid "We'll add a collection of events to the <literal>Person</literal> class. That way we can easily navigate to the events for a particular person, without executing an explicit query - by calling <literal>aPerson.getEvents()</literal>. We use a Java collection, a <literal>Set</literal>, because the collection will not contain duplicate elements and the ordering is not relevant for us."
-msgstr "우리는 <literal>Person</literal> 클래스에 이벤트들을 가진 한 개의 콜렉션을 추가할 것이다. 그 방법으로 우리는 명시적인 질의-<literal>aPerson.getEvents()</literal>를 호출함으로써-를 실행시키지 않고서 특정 개인에 대한 이벤트들을 쉽게 네비게이트할 수 있다. 우리는 하나의 Java 콜렉션, 하나의 <literal>Set</literal>를 사용한다. 왜냐하면 그 콜렉션은 중복 요소들을 포함하기 않을 것이고 그 순서가 우리와 관련되어 있지 않기 때문이다."
+#. Tag: para
+#: tutorial.xml:585
+#, no-c-format
+msgid ""
+"We'll add a collection of events to the <literal>Person</literal> class. "
+"That way we can easily navigate to the events for a particular person, "
+"without executing an explicit query - by calling <literal>aPerson.getEvents()"
+"</literal>. We use a Java collection, a <literal>Set</literal>, because the "
+"collection will not contain duplicate elements and the ordering is not "
+"relevant for us."
+msgstr ""
+"우리는 <literal>Person</literal> 클래스에 이벤트들을 가진 한 개의 콜렉션을 추"
+"가할 것이다. 그 방법으로 우리는 명시적인 질의-<literal>aPerson.getEvents()</"
+"literal>를 호출함으로써-를 실행시키지 않고서 특정 개인에 대한 이벤트들을 쉽"
+"게 네비게이트할 수 있다. 우리는 하나의 Java 콜렉션, 하나의 <literal>Set</"
+"literal>를 사용한다. 왜냐하면 그 콜렉션은 중복 요소들을 포함하기 않을 것이고 "
+"그 순서가 우리와 관련되어 있지 않기 때문이다."
-#: index.docbook:592
-msgid "We need a unidirectional, many-valued associations, implemented with a <literal>Set</literal>. Let's write the code for this in the Java classes and then map it:"
-msgstr "우리는 하나의 <literal>Set</literal>으로 구현된, 하나의 단방향, 다중값 연관들을 필요로 한다. Java 클래스들 내에 이를 위한 코드를 작성하고 그런 다음 그것을 매핑시키자:"
+#. Tag: para
+#: tutorial.xml:592
+#, no-c-format
+msgid ""
+"We need a unidirectional, many-valued associations, implemented with a "
+"<literal>Set</literal>. Let's write the code for this in the Java classes "
+"and then map it:"
+msgstr ""
+"우리는 하나의 <literal>Set</literal>으로 구현된, 하나의 단방향, 다중값 연관들"
+"을 필요로 한다. Java 클래스들 내에 이를 위한 코드를 작성하고 그런 다음 그것"
+"을 매핑시키자:"
-#: index.docbook:597
+#. Tag: programlisting
+#: tutorial.xml:597
+#, no-c-format
msgid ""
- "<![CDATA[public class Person {\n"
- "\n"
- " private Set events = new HashSet();\n"
- "\n"
- " public Set getEvents() {\n"
- " return events;\n"
- " }\n"
- "\n"
- " public void setEvents(Set events) {\n"
- " this.events = events;\n"
- " }\n"
- "}]]>"
+"<![CDATA[public class Person {\n"
+"\n"
+" private Set events = new HashSet();\n"
+"\n"
+" public Set getEvents() {\n"
+" return events;\n"
+" }\n"
+"\n"
+" public void setEvents(Set events) {\n"
+" this.events = events;\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[public class Person {\n"
- "\n"
- " private Set events = new HashSet();\n"
- "\n"
- " public Set getEvents() {\n"
- " return events;\n"
- " }\n"
- "\n"
- " public void setEvents(Set events) {\n"
- " this.events = events;\n"
- " }\n"
- "}]]>"
-#: index.docbook:599
-msgid "Before we map this association, think about the other side. Clearly, we could just keep this unidirectional. Or, we could create another collection on the <literal>Event</literal>, if we want to be able to navigate it bi-directional, i.e. <literal>anEvent.getParticipants()</literal>. This is not necessary, from a functional perspective. You could 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, we call this a <emphasis>many-to-many</emphasis> association. Hence, we use Hibernate's many-to-many mapping:"
-msgstr "우리가 이 연관을 매핑하기 전에, 다른 측에 대해 생각하라. 명백하게 우리는 이것을 단지 단방향으로 유지시킬 수 있다. 또는 우리가 그것을 양방향으로 네비게이트하는 것-예를 들어 <literal>anEvent.getParticipants()</literal>-이 가능하도록 원할 경우에, <literal>Event</literal>측 상에 또 다른 콜렉션을 생성시킬 수 있다. 이것은 당신에게 남겨진 설계 선택이지만, 이 논의에서 명료한 점은 연관의 다중성이다: 양 측 상에서 \"다중\" 값을 갖는 경우, 우리는 이것을 <emphasis>many-to-many</emphasis> 연관이라고 명명한다. 그러므로 우리는 Hibernate의 many-to-many 매핑을 사용한다:"
+#. Tag: para
+#: tutorial.xml:599
+#, no-c-format
+msgid ""
+"Before we map this association, think about the other side. Clearly, we "
+"could just keep this unidirectional. Or, we could create another collection "
+"on the <literal>Event</literal>, if we want to be able to navigate it bi-"
+"directional, i.e. <literal>anEvent.getParticipants()</literal>. This is not "
+"necessary, from a functional perspective. You could 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, we call this "
+"a <emphasis>many-to-many</emphasis> association. Hence, we use Hibernate's "
+"many-to-many mapping:"
+msgstr ""
+"우리가 이 연관을 매핑하기 전에, 다른 측에 대해 생각하라. 명백하게 우리는 이것"
+"을 단지 단방향으로 유지시킬 수 있다. 또는 우리가 그것을 양방향으로 네비게이트"
+"하는 것-예를 들어 <literal>anEvent.getParticipants()</literal>-이 가능하도록 "
+"원할 경우에, <literal>Event</literal>측 상에 또 다른 콜렉션을 생성시킬 수 있"
+"다. 이것은 당신에게 남겨진 설계 선택이지만, 이 논의에서 명료한 점은 연관의 다"
+"중성이다: 양 측 상에서 \"다중\" 값을 갖는 경우, 우리는 이것을 <emphasis>many-"
+"to-many</emphasis> 연관이라고 명명한다. 그러므로 우리는 Hibernate의 many-to-"
+"many 매핑을 사용한다:"
-#: index.docbook:610
+#. Tag: programlisting
+#: tutorial.xml:610
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"events.Person\" table=\"PERSON\">\n"
- " <id name=\"id\" column=\"PERSON_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"age\"/>\n"
- " <property name=\"firstname\"/>\n"
- " <property name=\"lastname\"/>\n"
- "\n"
- " <set name=\"events\" table=\"PERSON_EVENT\">\n"
- " <key column=\"PERSON_ID\"/>\n"
- " <many-to-many column=\"EVENT_ID\" class=\"events.Event\"/>\n"
- " </set>\n"
- "\n"
- "</class>]]>"
+"<![CDATA[<class name=\"events.Person\" table=\"PERSON\">\n"
+" <id name=\"id\" column=\"PERSON_ID\">\n"
+" <generator class=\"native\"/>\n"
+" </id>\n"
+" <property name=\"age\"/>\n"
+" <property name=\"firstname\"/>\n"
+" <property name=\"lastname\"/>\n"
+"\n"
+" <set name=\"events\" table=\"PERSON_EVENT\">\n"
+" <key column=\"PERSON_ID\"/>\n"
+" <many-to-many column=\"EVENT_ID\" class=\"events.Event\"/>\n"
+" </set>\n"
+"\n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"events.Person\" table=\"PERSON\">\n"
- " <id name=\"id\" column=\"PERSON_ID\">\n"
- " <generator class=\"native\"/>\n"
- " </id>\n"
- " <property name=\"age\"/>\n"
- " <property name=\"firstname\"/>\n"
- " <property name=\"lastname\"/>\n"
- "\n"
- " <set name=\"events\" table=\"PERSON_EVENT\">\n"
- " <key column=\"PERSON_ID\"/>\n"
- " <many-to-many column=\"EVENT_ID\" class=\"events.Event\"/>\n"
- " </set>\n"
- "\n"
- "</class>]]>"
-#: index.docbook:612
-msgid "Hibernate supports all kinds of collection mappings, a <literal><set></literal> being most common. For a many-to-many association (or <emphasis>n:m</emphasis> entity relationship), an association table is needed. Each row in this table represents a link between a person and an event. The table name is configured with the <literal>table</literal> attribute of the <literal>set</literal> element. The identifier column name in the association, for the person's side, is defined with the <literal><key></literal> element, the column name for the event's side with the <literal>column</literal> attribute of the <literal><many-to-many></literal>. You also have to tell Hibernate the class of the objects in your collection (correct: the class on the other side of the collection of references)."
-msgstr "Hibernate는 모든 종류의 콜렉션 매핑들, 가장 공통적인 <literal><set></literal>을 지원한다. many-to-many 연관 (또는 <emphasis>n:m</emphasis> 엔티티 관계)의 경우, 한 개의 연관 테이블이 필요하다. 이 테이블 내에 있는 각각의 행은 한 명의 개인과 한 개의 이벤트 사이의 링크를 표현한다. 테이블 이름은 <literal>set</literal> 요소의 <literal>table</literal> 속성으로 구성된다. 연관 내의 식별자 컬럼 이름은 개인 측에 대해 <literal><key></literal> 요소로 정의되고 이벤트 측에 대한 컬럼 이름은 <literal><many-to-many></literal>의 <literal>column</literal> 속성으로 정의된다. 당신은 또한 당신의 콜렉션 내에 있는 객체들의 클래스(정확하게 : 참조들을 가진 콜렉션의 다른 측 상에 있는 클래스)를 Hibernate에게 알려주어야 한다."
+#. Tag: para
+#: tutorial.xml:612
+#, no-c-format
+msgid ""
+"Hibernate supports all kinds of collection mappings, a <literal><set></"
+"literal> being most common. For a many-to-many association (or <emphasis>n:"
+"m</emphasis> entity relationship), an association table is needed. Each row "
+"in this table represents a link between a person and an event. The table "
+"name is configured with the <literal>table</literal> attribute of the "
+"<literal>set</literal> element. The identifier column name in the "
+"association, for the person's side, is defined with the <literal><key>"
+"</literal> element, the column name for the event's side with the "
+"<literal>column</literal> attribute of the <literal><many-to-many></"
+"literal>. You also have to tell Hibernate the class of the objects in your "
+"collection (correct: the class on the other side of the collection of "
+"references)."
+msgstr ""
+"Hibernate는 모든 종류의 콜렉션 매핑들, 가장 공통적인 <literal><set></"
+"literal>을 지원한다. many-to-many 연관 (또는 <emphasis>n:m</emphasis> 엔티티 "
+"관계)의 경우, 한 개의 연관 테이블이 필요하다. 이 테이블 내에 있는 각각의 행"
+"은 한 명의 개인과 한 개의 이벤트 사이의 링크를 표현한다. 테이블 이름은 "
+"<literal>set</literal> 요소의 <literal>table</literal> 속성으로 구성된다. 연"
+"관 내의 식별자 컬럼 이름은 개인 측에 대해 <literal><key></literal> 요소"
+"로 정의되고 이벤트 측에 대한 컬럼 이름은 <literal><many-to-many></"
+"literal>의 <literal>column</literal> 속성으로 정의된다. 당신은 또한 당신의 콜"
+"렉션 내에 있는 객체들의 클래스(정확하게 : 참조들을 가진 콜렉션의 다른 측 상"
+"에 있는 클래스)를 Hibernate에게 알려주어야 한다."
-#: index.docbook:624
+#. Tag: para
+#: tutorial.xml:624
+#, no-c-format
msgid "The database schema for this mapping is therefore:"
msgstr "따라서 이 매핑을 위한 데이터베이스 스키마는 다음과 같다:"
-#: index.docbook:628
+#. Tag: programlisting
+#: tutorial.xml:628
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- " _____________ __________________\n"
- " | | | | _____________\n"
- " | EVENTS | | PERSON_EVENT | | |\n"
- " |_____________| |__________________| | PERSON |\n"
- " | | | | |_____________|\n"
- " | *EVENT_ID | <--> | *EVENT_ID | | |\n"
- " | EVENT_DATE | | *PERSON_ID | <--> | *PERSON_ID |\n"
- " | TITLE | |__________________| | AGE |\n"
- " |_____________| | FIRSTNAME |\n"
- " | LASTNAME |\n"
- " |_____________|\n"
- " ]]>"
+"<![CDATA[\n"
+" _____________ __________________\n"
+" | | | | _____________\n"
+" | EVENTS | | PERSON_EVENT | | |\n"
+" |_____________| |__________________| | PERSON |\n"
+" | | | | |_____________|\n"
+" | *EVENT_ID | <--> | *EVENT_ID | | |\n"
+" | EVENT_DATE | | *PERSON_ID | <--> | *PERSON_ID |\n"
+" | TITLE | |__________________| | AGE |\n"
+" |_____________| | FIRSTNAME |\n"
+" | LASTNAME |\n"
+" |_____________|\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- " _____________ __________________\n"
- " | | | | _____________\n"
- " | EVENTS | | PERSON_EVENT | | |\n"
- " |_____________| |__________________| | PERSON |\n"
- " | | | | |_____________|\n"
- " | *EVENT_ID | <--> | *EVENT_ID | | |\n"
- " | EVENT_DATE | | *PERSON_ID | <--> | *PERSON_ID |\n"
- " | TITLE | |__________________| | AGE |\n"
- " |_____________| | FIRSTNAME |\n"
- " | LASTNAME |\n"
- " |_____________|\n"
- " ]]>"
-#: index.docbook:633
+#. Tag: title
+#: tutorial.xml:633
+#, no-c-format
msgid "Working the association"
msgstr "연관들에 작업하기"
-#: index.docbook:635
-msgid "Let's bring some people and events together in a new method in <literal>EventManager</literal>:"
-msgstr "<literal>EventManager</literal> 속에 있는 한 개의 새로운 메소드 내에 몇몇 사람들과 이벤트들을 함께 가져오자:"
+#. Tag: para
+#: tutorial.xml:635
+#, no-c-format
+msgid ""
+"Let's bring some people and events together in a new method in "
+"<literal>EventManager</literal>:"
+msgstr ""
+"<literal>EventManager</literal> 속에 있는 한 개의 새로운 메소드 내에 몇몇 사"
+"람들과 이벤트들을 함께 가져오자:"
-#: index.docbook:639
+#. Tag: programlisting
+#: tutorial.xml:639
+#, no-c-format
msgid ""
- "<![CDATA[private void addPersonToEvent(Long personId, Long eventId) {\n"
- "\n"
- " Session session = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- " session.beginTransaction();\n"
- "\n"
- " Person aPerson = (Person) session.load(Person.class, personId);\n"
- " Event anEvent = (Event) session.load(Event.class, eventId);\n"
- "\n"
- " aPerson.getEvents().add(anEvent);\n"
- "\n"
- " session.getTransaction().commit();\n"
- "}]]>"
+"<![CDATA[private void addPersonToEvent(Long personId, Long eventId) {\n"
+"\n"
+" Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+"();\n"
+" session.beginTransaction();\n"
+"\n"
+" Person aPerson = (Person) session.load(Person.class, personId);\n"
+" Event anEvent = (Event) session.load(Event.class, eventId);\n"
+"\n"
+" aPerson.getEvents().add(anEvent);\n"
+"\n"
+" session.getTransaction().commit();\n"
+"}]]>"
msgstr ""
- "<![CDATA[private void addPersonToEvent(Long personId, Long eventId) {\n"
- "\n"
- " Session session = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- " session.beginTransaction();\n"
- "\n"
- " Person aPerson = (Person) session.load(Person.class, personId);\n"
- " Event anEvent = (Event) session.load(Event.class, eventId);\n"
- "\n"
- " aPerson.getEvents().add(anEvent);\n"
- "\n"
- " session.getTransaction().commit();\n"
- "}]]>"
-#: index.docbook:641
-msgid "After loading a <literal>Person</literal> and an <literal>Event</literal>, simply modify the collection using the normal collection methods. As you can see, there is no explicit call to <literal>update()</literal> or <literal>save()</literal>, Hibernate automatically detects that the collection has been modified and needs to be updated. This is called <emphasis>automatic dirty checking</emphasis>, and you can also try it by modifying the name or the date property of any of your objects. As long as they are in <emphasis>persistent</emphasis> state, that is, bound to a particular Hibernate <literal>Session</literal> (i.e. they have been just loaded or saved in a unit of work), 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</emphasis>. In our code, the unit of work ends with a commit (or rollback) of the dat!
abase transaction - as defined by the <literal>thread</literal> configuration option for the <literal>CurrentSessionContext</literal> class."
-msgstr "<literal>Person</literal>과 <literal>Event</literal>를 로드시킨 후에, 정규 콜렉션 메소드들을 사용하여 콜렉션을 간단하게 변경하라. 당신이 알 수 있듯이, <literal>update()</literal> 또는 <literal>save()</literal>에 대한 명시적인 호출이 존재하지 않고, 변경되었고 저장할 필요가 있는 콜렉션을 Hibernate가 자동적으로 검출해낸다. 이것은 <emphasis>자동적인 dirty 체킹</emphasis>이라 불려지며, 당신은 또한 당신의 임의의 객체들에 대한 name 또는 date 프로퍼티를 변경함으로써 그것을 시도할 수 있다. 그것들이 <emphasis>영속(persistent)</emphasis> 상태에 있는 동안, 즉 특정 Hibernate <literal>Session</literal>에 바인드되어 있는 동안(예를 들면. 그것들은 작업 단위 속에 방금 로드되었거나 저장되었다), Hibernate는 임의의 변경들을 모니터링하고 쓰기 이면의 형태로 SQL을 실행시�!
�다. 메모리 상태를 데이터베이스와 동기화 시키는 과정은 대개 오직 작업 단위의 끝에서이고, <emphasis>flushing</emphasis>이라 명명된다. 우리의 코드에서, 작업 단위는 <literal>CurrentSessionContext</literal> 클래스에 대한 <literal>thread</literal> 구성 옵션에 의해 정의된 대로 - 데이터베이스 트랜잭션의 커밋(또는 롤백)으로 끝이난다."
+#. Tag: para
+#: tutorial.xml:641
+#, no-c-format
+msgid ""
+"After loading a <literal>Person</literal> and an <literal>Event</literal>, "
+"simply modify the collection using the normal collection methods. As you can "
+"see, there is no explicit call to <literal>update()</literal> or "
+"<literal>save()</literal>, Hibernate automatically detects that the "
+"collection has been modified and needs to be updated. This is called "
+"<emphasis>automatic dirty checking</emphasis>, and you can also try it by "
+"modifying the name or the date property of any of your objects. As long as "
+"they are in <emphasis>persistent</emphasis> state, that is, bound to a "
+"particular Hibernate <literal>Session</literal> (i.e. they have been just "
+"loaded or saved in a unit of work), 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</emphasis>. In our code, the unit of work ends "
+"with a commit (or rollback) of the database transaction - as defined by the "
+"<literal>thread</literal> configuration option for the "
+"<literal>CurrentSessionContext</literal> class."
+msgstr ""
+"<literal>Person</literal>과 <literal>Event</literal>를 로드시킨 후에, 정규 콜"
+"렉션 메소드들을 사용하여 콜렉션을 간단하게 변경하라. 당신이 알 수 있듯이, "
+"<literal>update()</literal> 또는 <literal>save()</literal>에 대한 명시적인 호"
+"출이 존재하지 않고, 변경되었고 저장할 필요가 있는 콜렉션을 Hibernate가 자동적"
+"으로 검출해낸다. 이것은 <emphasis>자동적인 dirty 체킹</emphasis>이라 불려지"
+"며, 당신은 또한 당신의 임의의 객체들에 대한 name 또는 date 프로퍼티를 변경함"
+"으로써 그것을 시도할 수 있다. 그것들이 <emphasis>영속(persistent)</emphasis> "
+"상태에 있는 동안, 즉 특정 Hibernate <literal>Session</literal>에 바인드되어 "
+"있는 동안(예를 들면. 그것들은 작업 단위 속에 방금 로드되었거나 저장되었다), "
+"Hibernate는 임의의 변경들을 모니터링하고 쓰기 이면의 형태로 SQL을 실행시킨"
+"다. 메모리 상태를 데이터베이스와 동기화 시키는 과정은 대개 오직 작업 단위의 "
+"끝에서이고, <emphasis>flushing</emphasis>이라 명명된다. 우리의 코드에서, 작"
+"업 단위는 <literal>CurrentSessionContext</literal> 클래스에 대한 "
+"<literal>thread</literal> 구성 옵션에 의해 정의된 대로 - 데이터베이스 트랜잭"
+"션의 커밋(또는 롤백)으로 끝이난다."
-#: index.docbook:656
-msgid "You might of course load person and event in different units of work. Or you modify an object outside of a <literal>Session</literal>, when it is not in persistent state (if it was persistent before, we call this state <emphasis>detached</emphasis>). You can even modify a collection when it is detached:"
-msgstr "물론 당신은 다른 작업 단위 속에 개인과 이벤트를 로드시킬 수 도 있다. 또는 당신은 하나의 객체그 영속 상태에 있지 않을 때 <literal>Session</literal>의 외부에서 객체를 변경시킬 수도 있다(만일 객체가 이전에 영속화 되었다면, 우리는 이 상태를 <emphasis>detached</emphasis>라고 부른다). (매우 사실적이지 않은) 코드 내에서 이것은 다음과 같을 수 있다:"
+#. Tag: para
+#: tutorial.xml:656
+#, no-c-format
+msgid ""
+"You might of course load person and event in different units of work. Or you "
+"modify an object outside of a <literal>Session</literal>, when it is not in "
+"persistent state (if it was persistent before, we call this state "
+"<emphasis>detached</emphasis>). You can even modify a collection when it is "
+"detached:"
+msgstr ""
+"물론 당신은 다른 작업 단위 속에 개인과 이벤트를 로드시킬 수 도 있다. 또는 당"
+"신은 하나의 객체그 영속 상태에 있지 않을 때 <literal>Session</literal>의 외부"
+"에서 객체를 변경시킬 수도 있다(만일 객체가 이전에 영속화 되었다면, 우리는 이 "
+"상태를 <emphasis>detached</emphasis>라고 부른다). (매우 사실적이지 않은) 코"
+"드 내에서 이것은 다음과 같을 수 있다:"
-#: index.docbook:663
+#. Tag: programlisting
+#: tutorial.xml:663
+#, no-c-format
msgid ""
- "<![CDATA[private void addPersonToEvent(Long personId, Long eventId) {\n"
- "\n"
- " Session session = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- " session.beginTransaction();\n"
- "\n"
- " Person aPerson = (Person) session\n"
- " .createQuery(\"select p from Person p left join fetch p.events where p.id = :pid\")\n"
- " .setParameter(\"pid\", personId)\n"
- " .uniqueResult(); // Eager fetch the collection so we can use it detached\n"
- "\n"
- " Event anEvent = (Event) session.load(Event.class, eventId);\n"
- "\n"
- " session.getTransaction().commit();\n"
- "\n"
- " // End of first unit of work\n"
- "\n"
- " aPerson.getEvents().add(anEvent); // aPerson (and its collection) is detached\n"
- "\n"
- " // Begin second unit of work\n"
- "\n"
- " Session session2 = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- " session2.beginTransaction();\n"
- "\n"
- " session2.update(aPerson); // Reattachment of aPerson\n"
- "\n"
- " session2.getTransaction().commit();\n"
- "}]]>"
+"<![CDATA[private void addPersonToEvent(Long personId, Long eventId) {\n"
+"\n"
+" Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+"();\n"
+" session.beginTransaction();\n"
+"\n"
+" Person aPerson = (Person) session\n"
+" .createQuery(\"select p from Person p left join fetch p.events "
+"where p.id = :pid\")\n"
+" .setParameter(\"pid\", personId)\n"
+" .uniqueResult(); // Eager fetch the collection so we can use it "
+"detached\n"
+"\n"
+" Event anEvent = (Event) session.load(Event.class, eventId);\n"
+"\n"
+" session.getTransaction().commit();\n"
+"\n"
+" // End of first unit of work\n"
+"\n"
+" aPerson.getEvents().add(anEvent); // aPerson (and its collection) is "
+"detached\n"
+"\n"
+" // Begin second unit of work\n"
+"\n"
+" Session session2 = HibernateUtil.getSessionFactory().getCurrentSession"
+"();\n"
+" session2.beginTransaction();\n"
+"\n"
+" session2.update(aPerson); // Reattachment of aPerson\n"
+"\n"
+" session2.getTransaction().commit();\n"
+"}]]>"
msgstr ""
- "<![CDATA[private void addPersonToEvent(Long personId, Long eventId) {\n"
- "\n"
- " Session session = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- " session.beginTransaction();\n"
- "\n"
- " Person aPerson = (Person) session\n"
- " .createQuery(\"select p from Person p left join fetch p.events where p.id = :pid\")\n"
- " .setParameter(\"pid\", personId)\n"
- " .uniqueResult(); // Eager fetch the collection so we can use it detached\n"
- "\n"
- " Event anEvent = (Event) session.load(Event.class, eventId);\n"
- "\n"
- " session.getTransaction().commit();\n"
- "\n"
- " // End of first unit of work\n"
- "\n"
- " aPerson.getEvents().add(anEvent); // aPerson (and its collection) is detached\n"
- "\n"
- " // Begin second unit of work\n"
- "\n"
- " Session session2 = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- " session2.beginTransaction();\n"
- "\n"
- " session2.update(aPerson); // Reattachment of aPerson\n"
- "\n"
- " session2.getTransaction().commit();\n"
- "}]]>"
-#: index.docbook:665
-msgid "The call to <literal>update</literal> makes a detached object persistent again, you could say it binds 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</literal>에 대한 호출은 한 개의 detached 객체를 다시 영속화 시키고, 당신은 그것이 새로운 작업 단위에 바인드된다고 말할 수 있고, 따라서 detached 동안에 당신이 그것에 대해 행한 임의의 변경들이 데이터베이스에 저장될 수 있다. 이것은 당신이 그 엔티티 객체의 콜렉션에 대해 행했던 임의의 변경들(추가/삭제)를 포함한다."
+#. Tag: para
+#: tutorial.xml:665
+#, no-c-format
+msgid ""
+"The call to <literal>update</literal> makes a detached object persistent "
+"again, you could say it binds 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</literal>에 대한 호출은 한 개의 detached 객체를 다시 영속화 "
+"시키고, 당신은 그것이 새로운 작업 단위에 바인드된다고 말할 수 있고, 따라서 "
+"detached 동안에 당신이 그것에 대해 행한 임의의 변경들이 데이터베이스에 저장"
+"될 수 있다. 이것은 당신이 그 엔티티 객체의 콜렉션에 대해 행했던 임의의 변경들"
+"(추가/삭제)를 포함한다."
-#: index.docbook:672
-msgid "Well, this is not much use in our current situation, but it's an important concept you can design into your own application. For now, complete this exercise by adding a new action to the <literal>EventManager</literal>'s main method and call it from the command line. If you need the identifiers of a person and an event - the <literal>save()</literal> method returns it (you might have to modify some of the previous methods to return that identifier):"
-msgstr "물론, 우리의 현재 상황에서 이것은 많이 사용되지 않지만, 그것은 당신이 당신 자신의 어플리케이션 내로 설계할 수 있는 중요한 개념이다. 지금 <literal>EventManager</literal>의 main 메소드에 한 개의 새로운 액션을 추가하고 명령 라인에서 그것을 호출하여 이 연습을 완료하라. 만일 당신이 한명의 개인과 한 개의 이벤트에 대한 식별자들을 필요로 할 경우 - <literal>save()</literal> 메소드가 그것을 반환시킨다(당신은 그 식별자를 반환시키는 앞의 메소드들 중 몇몇을 변경시켜야 할 것이다):"
+#. Tag: para
+#: tutorial.xml:672
+#, no-c-format
+msgid ""
+"Well, this is not much use in our current situation, but it's an important "
+"concept you can design into your own application. For now, complete this "
+"exercise by adding a new action to the <literal>EventManager</literal>'s "
+"main method and call it from the command line. If you need the identifiers "
+"of a person and an event - the <literal>save()</literal> method returns it "
+"(you might have to modify some of the previous methods to return that "
+"identifier):"
+msgstr ""
+"물론, 우리의 현재 상황에서 이것은 많이 사용되지 않지만, 그것은 당신이 당신 자"
+"신의 어플리케이션 내로 설계할 수 있는 중요한 개념이다. 지금 "
+"<literal>EventManager</literal>의 main 메소드에 한 개의 새로운 액션을 추가하"
+"고 명령 라인에서 그것을 호출하여 이 연습을 완료하라. 만일 당신이 한명의 개인"
+"과 한 개의 이벤트에 대한 식별자들을 필요로 할 경우 - <literal>save()</"
+"literal> 메소드가 그것을 반환시킨다(당신은 그 식별자를 반환시키는 앞의 메소드"
+"들 중 몇몇을 변경시켜야 할 것이다):"
-#: index.docbook:680
+#. Tag: programlisting
+#: tutorial.xml:680
+#, no-c-format
msgid ""
- "<![CDATA[else if (args[0].equals(\"addpersontoevent\")) {\n"
- " Long eventId = mgr.createAndStoreEvent(\"My Event\", new Date());\n"
- " Long personId = mgr.createAndStorePerson(\"Foo\", \"Bar\");\n"
- " mgr.addPersonToEvent(personId, eventId);\n"
- " System.out.println(\"Added person \" + personId + \" to event \" + eventId);\n"
- "}]]>"
+"<![CDATA[else if (args[0].equals(\"addpersontoevent\")) {\n"
+" Long eventId = mgr.createAndStoreEvent(\"My Event\", new Date());\n"
+" Long personId = mgr.createAndStorePerson(\"Foo\", \"Bar\");\n"
+" mgr.addPersonToEvent(personId, eventId);\n"
+" System.out.println(\"Added person \" + personId + \" to event \" + "
+"eventId);\n"
+"}]]>"
msgstr ""
- "<![CDATA[else if (args[0].equals(\"addpersontoevent\")) {\n"
- " Long eventId = mgr.createAndStoreEvent(\"My Event\", new Date());\n"
- " Long personId = mgr.createAndStorePerson(\"Foo\", \"Bar\");\n"
- " mgr.addPersonToEvent(personId, eventId);\n"
- " System.out.println(\"Added person \" + personId + \" to event \" + eventId);\n"
- "}]]>"
-#: index.docbook:682
-msgid "This was an example of an association between two equally important classes, two entities. As mentioned earlier, there are other classes and types in a typical model, usually \"less important\". Some you have already seen, like an <literal>int</literal> or a <literal>String</literal>. We call these classes <emphasis>value types</emphasis>, and their instances <emphasis>depend</emphasis> on a particular entity. Instances of these types don't have their own identity, nor are they shared between entities (two persons don't reference the same <literal>firstname</literal> object, even if they have the same first name). Of course, value types can not only be found in the JDK (in fact, in a Hibernate application all JDK classes are considered value types), but you can also write dependent classes yourself, <literal>Address</literal> or <literal>MonetaryAmount</literal>, for example."
-msgstr "이것은 두 개의 동등하게 중요한 클래스들, 두 개의 엔티티들 사이에서 한 개의 연관에 관한 예제였다. 앞서 언급했듯이, 전형적인 모형 내에는 다른 클래스들과 타이들이 존재하는데, 대개 \"덜 중요하다\". 당신은 이미 <literal>int</literal> 또는 <literal>String</literal>과 같은 어떤 것을 이미 보았다. 우리는 이들 클래스들을 <emphasis>값 타입들(value types)</emphasis>이라 명명하고, 그들 인스턴스들은 특정 엔티티에 <emphasis>의존한다(depend)</emphasis>. 이들 타입들을 가진 인스턴스들은 그것들 자신의 식별성(identity)를 갖지 않거나, 그것들은 엔티티들 사이에서 공유되지도 않는다(두개의 person들은 심지어 그것들이 같은 첫 번째 이름을 갖는 경우에도 동일한 <literal>firstname</literal>을 참조하지 않는다 ). 물론 값 타입들은 JDK 내에서 발견될 뿐만 아니라(사!
실, Hibernate 어플리케이션에서 모든 JDK 클래스들은 값 타입들로 간주된다), 당신은 또한 당신 스스로 종속 클래스들, 예를 들면 <literal>Address</literal> 또는 <literal>MonetaryAmount</literal>을 작성할 수 있다."
+#. Tag: para
+#: tutorial.xml:682
+#, no-c-format
+msgid ""
+"This was an example of an association between two equally important classes, "
+"two entities. As mentioned earlier, there are other classes and types in a "
+"typical model, usually \"less important\". Some you have already seen, like "
+"an <literal>int</literal> or a <literal>String</literal>. We call these "
+"classes <emphasis>value types</emphasis>, and their instances "
+"<emphasis>depend</emphasis> on a particular entity. Instances of these types "
+"don't have their own identity, nor are they shared between entities (two "
+"persons don't reference the same <literal>firstname</literal> object, even "
+"if they have the same first name). Of course, value types can not only be "
+"found in the JDK (in fact, in a Hibernate application all JDK classes are "
+"considered value types), but you can also write dependent classes yourself, "
+"<literal>Address</literal> or <literal>MonetaryAmount</literal>, for example."
+msgstr ""
+"이것은 두 개의 동등하게 중요한 클래스들, 두 개의 엔티티들 사이에서 한 개의 연"
+"관에 관한 예제였다. 앞서 언급했듯이, 전형적인 모형 내에는 다른 클래스들과 타"
+"이들이 존재하는데, 대개 \"덜 중요하다\". 당신은 이미 <literal>int</literal> "
+"또는 <literal>String</literal>과 같은 어떤 것을 이미 보았다. 우리는 이들 클래"
+"스들을 <emphasis>값 타입들(value types)</emphasis>이라 명명하고, 그들 인스턴"
+"스들은 특정 엔티티에 <emphasis>의존한다(depend)</emphasis>. 이들 타입들을 가"
+"진 인스턴스들은 그것들 자신의 식별성(identity)를 갖지 않거나, 그것들은 엔티티"
+"들 사이에서 공유되지도 않는다(두개의 person들은 심지어 그것들이 같은 첫 번째 "
+"이름을 갖는 경우에도 동일한 <literal>firstname</literal>을 참조하지 않는"
+"다 ). 물론 값 타입들은 JDK 내에서 발견될 뿐만 아니라(사실, Hibernate 어플리케"
+"이션에서 모든 JDK 클래스들은 값 타입들로 간주된다), 당신은 또한 당신 스스로 "
+"종속 클래스들, 예를 들면 <literal>Address</literal> 또는 "
+"<literal>MonetaryAmount</literal>을 작성할 수 있다."
-#: index.docbook:695
-msgid "You can also design a collection of value types. This is conceptually very different from a collection of references to other entities, but looks almost the same in Java."
-msgstr "당신은 또한 값 타입들을 설계할 수 있다. 이것은 다른 엔티티들에 대한 참조들을 가진 콜렉션과는 개념적으로 매우 다르지만, Java에서는 대개 동일한 것으로 보여진다."
+#. Tag: para
+#: tutorial.xml:695
+#, no-c-format
+msgid ""
+"You can also design a collection of value types. This is conceptually very "
+"different from a collection of references to other entities, but looks "
+"almost the same in Java."
+msgstr ""
+"당신은 또한 값 타입들을 설계할 수 있다. 이것은 다른 엔티티들에 대한 참조들을 "
+"가진 콜렉션과는 개념적으로 매우 다르지만, Java에서는 대개 동일한 것으로 보여"
+"진다."
-#: index.docbook:703
+#. Tag: title
+#: tutorial.xml:703
+#, no-c-format
msgid "Collection of values"
msgstr "값들을 가진 콜렉션"
-#: index.docbook:705
-msgid "We add a collection of value typed objects to the <literal>Person</literal> entity. We want to store email addresses, so the type we use is <literal>String</literal>, and the collection is again a <literal>Set</literal>:"
-msgstr "우리는 값 타입의 객체들을 가진 한 개의 콜렉션을 <literal>Person</literal> 엔티티에 추가시킨다. 우리는 email 주소를 저장하고자 원하므로, 우리가 사용하는 타입은 <literal>String</literal>이고, 그 콜렉션은 다시 한 개의 <literal>Set</literal>이다:"
+#. Tag: para
+#: tutorial.xml:705
+#, no-c-format
+msgid ""
+"We add a collection of value typed objects to the <literal>Person</literal> "
+"entity. We want to store email addresses, so the type we use is "
+"<literal>String</literal>, and the collection is again a <literal>Set</"
+"literal>:"
+msgstr ""
+"우리는 값 타입의 객체들을 가진 한 개의 콜렉션을 <literal>Person</literal> 엔"
+"티티에 추가시킨다. 우리는 email 주소를 저장하고자 원하므로, 우리가 사용하는 "
+"타입은 <literal>String</literal>이고, 그 콜렉션은 다시 한 개의 <literal>Set</"
+"literal>이다:"
-#: index.docbook:710
+#. Tag: programlisting
+#: tutorial.xml:710
+#, no-c-format
msgid ""
- "<![CDATA[private Set emailAddresses = new HashSet();\n"
- "\n"
- "public Set getEmailAddresses() {\n"
- " return emailAddresses;\n"
- "}\n"
- "\n"
- "public void setEmailAddresses(Set emailAddresses) {\n"
- " this.emailAddresses = emailAddresses;\n"
- "}]]>"
+"<![CDATA[private Set emailAddresses = new HashSet();\n"
+"\n"
+"public Set getEmailAddresses() {\n"
+" return emailAddresses;\n"
+"}\n"
+"\n"
+"public void setEmailAddresses(Set emailAddresses) {\n"
+" this.emailAddresses = emailAddresses;\n"
+"}]]>"
msgstr ""
- "<![CDATA[private Set emailAddresses = new HashSet();\n"
- "\n"
- "public Set getEmailAddresses() {\n"
- " return emailAddresses;\n"
- "}\n"
- "\n"
- "public void setEmailAddresses(Set emailAddresses) {\n"
- " this.emailAddresses = emailAddresses;\n"
- "}]]>"
-#: index.docbook:712
+#. Tag: para
+#: tutorial.xml:712
+#, no-c-format
msgid "The mapping of this <literal>Set</literal>:"
msgstr "이 <literal>Set</literal>에 대한 매핑은 다음과 같다:"
-#: index.docbook:716
+#. Tag: programlisting
+#: tutorial.xml:716
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"emailAddresses\" table=\"PERSON_EMAIL_ADDR\">\n"
- " <key column=\"PERSON_ID\"/>\n"
- " <element type=\"string\" column=\"EMAIL_ADDR\"/>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"emailAddresses\" table=\"PERSON_EMAIL_ADDR\">\n"
+" <key column=\"PERSON_ID\"/>\n"
+" <element type=\"string\" column=\"EMAIL_ADDR\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"emailAddresses\" table=\"PERSON_EMAIL_ADDR\">\n"
- " <key column=\"PERSON_ID\"/>\n"
- " <element type=\"string\" column=\"EMAIL_ADDR\"/>\n"
- "</set>]]>"
-#: index.docbook:718
-msgid "The difference compared with the earlier mapping is the <literal>element</literal> part, which tells Hibernate that the collection does not contain references to another entity, but a collection of elements of type <literal>String</literal> (the lowercase name tells you it's a Hibernate mapping type/converter). Once again, the <literal>table</literal> attribute of the <literal>set</literal> element determines the table name for the collection. The <literal>key</literal> element defines the foreign-key column name in the collection table. The <literal>column</literal> attribute in the <literal>element</literal> element defines the column name where the <literal>String</literal> values will actually be stored."
-msgstr "앞의 매핑과 비교한 차이점은 <literal>element</literal> 부분인데, 그것은 그 콜렉션이 또 다른 엔티티에 대한 참조들을 포함하지 않을 것이지만 <literal>String</literal>(소문자 이름은 그것이 Hibernate 매핑 타입/변환자임을 당신에게 말해준다) 타입의 요소들을 가진 한 개의 콜렉션을 포함할 것임을 Hibernate에게 알려준다. 일단 다시 <literal>set</literal> 요소의 <literal>table</literal> 속성은 그 콜렉션에 대한 테이블 이름을 결정한다. <literal>key</literal> 요소는 콜렉션 테이블 내에서 foreign-key 컬럼 이름을 정의한다. <literal>element</literal> 요소 내에 있는 <literal>column</literal> 속성은 <literal>String</literal> 값들이 실제로 저장될 컬럼 이름을 정의한다."
+#. Tag: para
+#: tutorial.xml:718
+#, no-c-format
+msgid ""
+"The difference compared with the earlier mapping is the <literal>element</"
+"literal> part, which tells Hibernate that the collection does not contain "
+"references to another entity, but a collection of elements of type "
+"<literal>String</literal> (the lowercase name tells you it's a Hibernate "
+"mapping type/converter). Once again, the <literal>table</literal> attribute "
+"of the <literal>set</literal> element determines the table name for the "
+"collection. The <literal>key</literal> element defines the foreign-key "
+"column name in the collection table. The <literal>column</literal> attribute "
+"in the <literal>element</literal> element defines the column name where the "
+"<literal>String</literal> values will actually be stored."
+msgstr ""
+"앞의 매핑과 비교한 차이점은 <literal>element</literal> 부분인데, 그것은 그 콜"
+"렉션이 또 다른 엔티티에 대한 참조들을 포함하지 않을 것이지만 "
+"<literal>String</literal>(소문자 이름은 그것이 Hibernate 매핑 타입/변환자임"
+"을 당신에게 말해준다) 타입의 요소들을 가진 한 개의 콜렉션을 포함할 것임을 "
+"Hibernate에게 알려준다. 일단 다시 <literal>set</literal> 요소의 "
+"<literal>table</literal> 속성은 그 콜렉션에 대한 테이블 이름을 결정한다. "
+"<literal>key</literal> 요소는 콜렉션 테이블 내에서 foreign-key 컬럼 이름을 정"
+"의한다. <literal>element</literal> 요소 내에 있는 <literal>column</literal> "
+"속성은 <literal>String</literal> 값들이 실제로 저장될 컬럼 이름을 정의한다."
-#: index.docbook:728
+#. Tag: para
+#: tutorial.xml:728
+#, no-c-format
msgid "Have a look at the updated schema:"
msgstr "업데이트된 스키마를 살펴보라:"
-#: index.docbook:732
+#. Tag: programlisting
+#: tutorial.xml:732
+#, no-c-format
msgid ""
- "<![CDATA[\n"
- " _____________ __________________\n"
- " | | | | _____________\n"
- " | EVENTS | | PERSON_EVENT | | | ___________________\n"
- " |_____________| |__________________| | PERSON | | |\n"
- " | | | | |_____________| | PERSON_EMAIL_ADDR |\n"
- " | *EVENT_ID | <--> | *EVENT_ID | | | |___________________|\n"
- " | EVENT_DATE | | *PERSON_ID | <--> | *PERSON_ID | <--> | *PERSON_ID |\n"
- " | TITLE | |__________________| | AGE | | *EMAIL_ADDR |\n"
- " |_____________| | FIRSTNAME | |___________________|\n"
- " | LASTNAME |\n"
- " |_____________|\n"
- " ]]>"
+"<![CDATA[\n"
+" _____________ __________________\n"
+" | | | | _____________\n"
+" | EVENTS | | PERSON_EVENT | | | "
+"___________________\n"
+" |_____________| |__________________| | PERSON | "
+"| |\n"
+" | | | | |_____________| | "
+"PERSON_EMAIL_ADDR |\n"
+" | *EVENT_ID | <--> | *EVENT_ID | | | |"
+"___________________|\n"
+" | EVENT_DATE | | *PERSON_ID | <--> | *PERSON_ID | <--> | "
+"*PERSON_ID |\n"
+" | TITLE | |__________________| | AGE | | "
+"*EMAIL_ADDR |\n"
+" |_____________| | FIRSTNAME | |"
+"___________________|\n"
+" | LASTNAME |\n"
+" |_____________|\n"
+" ]]>"
msgstr ""
- "<![CDATA[\n"
- " _____________ __________________\n"
- " | | | | _____________\n"
- " | EVENTS | | PERSON_EVENT | | | ___________________\n"
- " |_____________| |__________________| | PERSON | | |\n"
- " | | | | |_____________| | PERSON_EMAIL_ADDR |\n"
- " | *EVENT_ID | <--> | *EVENT_ID | | | |___________________|\n"
- " | EVENT_DATE | | *PERSON_ID | <--> | *PERSON_ID | <--> | *PERSON_ID |\n"
- " | TITLE | |__________________| | AGE | | *EMAIL_ADDR |\n"
- " |_____________| | FIRSTNAME | |___________________|\n"
- " | LASTNAME |\n"
- " |_____________|\n"
- " ]]>"
-#: index.docbook:734
-msgid "You can see that the primary key of the collection table is in fact a composite key, using both columns. This also implies that there can't 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
+#: tutorial.xml:734
+#, no-c-format
+msgid ""
+"You can see that the primary key of the collection table is in fact a "
+"composite key, using both columns. This also implies that there can't be "
+"duplicate email addresses per person, which is exactly the semantics we need "
+"for a set in Java."
+msgstr ""
+"당신은 콜렉션 테이블의 프라이머리 키가 사실은 두 컬럼들을 사용하는 한 개의 합"
+"성 키(composite key)임을 알 수 있다. 이것은 또한 개인에 대해 email 주소가 중"
+"복될 수 없음을 의미하며, 그것은 정확하게 우리가 Java에서 set을 필요로 하는 의"
+"미론이다."
-#: index.docbook:740
-msgid "You can now try and add elements to this collection, just like we did before by linking persons and events. It's the same code in Java:"
-msgstr "마치 개인들과 이벤트들을 링크시켜서 이전에 우리가 행했던 것처럼 이제 당신은 요소들을 시도하고 이 콜렉션에 추가할 수 있다. 그것은 Java에서 동일한 코드이다."
+#. Tag: para
+#: tutorial.xml:740
+#, no-c-format
+msgid ""
+"You can now try and add elements to this collection, just like we did before "
+"by linking persons and events. It's the same code in Java:"
+msgstr ""
+"마치 개인들과 이벤트들을 링크시켜서 이전에 우리가 행했던 것처럼 이제 당신은 "
+"요소들을 시도하고 이 콜렉션에 추가할 수 있다. 그것은 Java에서 동일한 코드이"
+"다."
-#: index.docbook:745
+#. Tag: programlisting
+#: tutorial.xml:745
+#, no-c-format
msgid ""
- "<![CDATA[private void addEmailToPerson(Long personId, String emailAddress) {\n"
- "\n"
- " Session session = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- " session.beginTransaction();\n"
- "\n"
- " Person aPerson = (Person) session.load(Person.class, personId);\n"
- "\n"
- " // The getEmailAddresses() might trigger a lazy load of the collection\n"
- " aPerson.getEmailAddresses().add(emailAddress);\n"
- "\n"
- " session.getTransaction().commit();\n"
- "}]]>"
+"<![CDATA[private void addEmailToPerson(Long personId, String emailAddress) "
+"{\n"
+"\n"
+" Session session = HibernateUtil.getSessionFactory().getCurrentSession"
+"();\n"
+" session.beginTransaction();\n"
+"\n"
+" Person aPerson = (Person) session.load(Person.class, personId);\n"
+"\n"
+" // The getEmailAddresses() might trigger a lazy load of the collection\n"
+" aPerson.getEmailAddresses().add(emailAddress);\n"
+"\n"
+" session.getTransaction().commit();\n"
+"}]]>"
msgstr ""
- "<![CDATA[private void addEmailToPerson(Long personId, String emailAddress) {\n"
- "\n"
- " Session session = HibernateUtil.getSessionFactory().getCurrentSession();\n"
- " session.beginTransaction();\n"
- "\n"
- " Person aPerson = (Person) session.load(Person.class, personId);\n"
- "\n"
- " // The getEmailAddresses() might trigger a lazy load of the collection\n"
- " aPerson.getEmailAddresses().add(emailAddress);\n"
- "\n"
- " session.getTransaction().commit();\n"
- "}]]>"
-#: index.docbook:747
-msgid "This time we didnt' use a <emphasis>fetch</emphasis> query to initialize the collection. Hence, the call to its getter method will trigger an additional select to initialize it, so we can add an element to it. Monitor the SQL log and try to optimize this with an eager fetch."
-msgstr "지금 우리는 콜렉션을 초기화 시키는데 <emphasis>fetch</emphasis> 질의를 사용하지 않았다. 그러므로 콜렉션의 getter 메소드에 대한 호출은 콜렉션을 초기화 시키기 위해 추가적인 select를 트리거 시킬 것이어서, 우리는 그것에 요소를 추가시킬 수 있다. SQL 로그를 관찰하고 이것을 eager fetch로 최적화 시키려고 시도하라."
+#. Tag: para
+#: tutorial.xml:747
+#, no-c-format
+msgid ""
+"This time we didnt' use a <emphasis>fetch</emphasis> query to initialize the "
+"collection. Hence, the call to its getter method will trigger an additional "
+"select to initialize it, so we can add an element to it. Monitor the SQL log "
+"and try to optimize this with an eager fetch."
+msgstr ""
+"지금 우리는 콜렉션을 초기화 시키는데 <emphasis>fetch</emphasis> 질의를 사용하"
+"지 않았다. 그러므로 콜렉션의 getter 메소드에 대한 호출은 콜렉션을 초기화 시키"
+"기 위해 추가적인 select를 트리거 시킬 것이어서, 우리는 그것에 요소를 추가시"
+"킬 수 있다. SQL 로그를 관찰하고 이것을 eager fetch로 최적화 시키려고 시도하"
+"라."
-#: index.docbook:757
+#. Tag: title
+#: tutorial.xml:757
+#, no-c-format
msgid "Bi-directional associations"
msgstr "Bi-directional associations"
-#: index.docbook:759
-msgid "Next we are going to map a bi-directional association - making the association between person and event work from both sides in Java. Of course, the database schema doesn't change, we still have many-to-many multiplicity. A relational database is more flexible than a network programming language, so it doesn't need anything like a navigation direction - data can be viewed and retrieved in any possible way."
-msgstr "다음으로 우리는 양방향 연관을 매핑시킬 예정이다-개인과 이벤트 사이에 연관을 만드는 것은 Java에서 양 측들에서 동작한다. 물론 데이터베이스 스키마는 변경되지 않고, 우리는 여전히 many-to-many 다중성을 갖는다. 관계형 데이터베이스는 네트웍 프로그래밍 언어 보다 훨씬 더 유연하여서, 그것은 네비게이션 방향과 같은 어떤 것을 필요로 하지 않는다 - 데이터는 어떤 가능한 바업ㅂ으로 보여질 수 있고 검색될 수 있다."
+#. Tag: para
+#: tutorial.xml:759
+#, no-c-format
+msgid ""
+"Next we are going to map a bi-directional association - making the "
+"association between person and event work from both sides in Java. Of "
+"course, the database schema doesn't change, we still have many-to-many "
+"multiplicity. A relational database is more flexible than a network "
+"programming language, so it doesn't need anything like a navigation "
+"direction - data can be viewed and retrieved in any possible way."
+msgstr ""
+"다음으로 우리는 양방향 연관을 매핑시킬 예정이다-개인과 이벤트 사이에 연관을 "
+"만드는 것은 Java에서 양 측들에서 동작한다. 물론 데이터베이스 스키마는 변경되"
+"지 않고, 우리는 여전히 many-to-many 다중성을 갖는다. 관계형 데이터베이스는 네"
+"트웍 프로그래밍 언어 보다 훨씬 더 유연하여서, 그것은 네비게이션 방향과 같은 "
+"어떤 것을 필요로 하지 않는다 - 데이터는 어떤 가능한 바업ㅂ으로 보여질 수 있"
+"고 검색될 수 있다."
-#: index.docbook:767
-msgid "First, add a collection of participants to the <literal>Event</literal> Event class:"
-msgstr "먼저, 참여자들을 가진 한 개의 콜렉션을 <literal>Event</literal> Event 클래스에 추가시켜라:"
+#. Tag: para
+#: tutorial.xml:767
+#, no-c-format
+msgid ""
+"First, add a collection of participants to the <literal>Event</literal> "
+"Event class:"
+msgstr ""
+"먼저, 참여자들을 가진 한 개의 콜렉션을 <literal>Event</literal> Event 클래스"
+"에 추가시켜라:"
-#: index.docbook:771
+#. Tag: programlisting
+#: tutorial.xml:771
+#, no-c-format
msgid ""
- "<![CDATA[private Set participants = new HashSet();\n"
- "\n"
- "public Set getParticipants() {\n"
- " return participants;\n"
- "}\n"
- "\n"
- "public void setParticipants(Set participants) {\n"
- " this.participants = participants;\n"
- "}]]>"
+"<![CDATA[private Set participants = new HashSet();\n"
+"\n"
+"public Set getParticipants() {\n"
+" return participants;\n"
+"}\n"
+"\n"
+"public void setParticipants(Set participants) {\n"
+" this.participants = participants;\n"
+"}]]>"
msgstr ""
- "<![CDATA[private Set participants = new HashSet();\n"
- "\n"
- "public Set getParticipants() {\n"
- " return participants;\n"
- "}\n"
- "\n"
- "public void setParticipants(Set participants) {\n"
- " this.participants = participants;\n"
- "}]]>"
-#: index.docbook:773
-msgid "Now map this side of the association too, in <literal>Event.hbm.xml</literal>."
+#. Tag: para
+#: tutorial.xml:773
+#, no-c-format
+msgid ""
+"Now map this side of the association too, in <literal>Event.hbm.xml</"
+"literal>."
msgstr "이제 <literal>Event.hbm.xml</literal> 내에 연관의 이 쪽도 매핑하라."
-#: index.docbook:777
+#. Tag: programlisting
+#: tutorial.xml:777
+#, no-c-format
msgid ""
- "<![CDATA[<set name=\"participants\" table=\"PERSON_EVENT\" inverse=\"true\">\n"
- " <key column=\"EVENT_ID\"/>\n"
- " <many-to-many column=\"PERSON_ID\" class=\"events.Person\"/>\n"
- "</set>]]>"
+"<![CDATA[<set name=\"participants\" table=\"PERSON_EVENT\" inverse=\"true"
+"\">\n"
+" <key column=\"EVENT_ID\"/>\n"
+" <many-to-many column=\"PERSON_ID\" class=\"events.Person\"/>\n"
+"</set>]]>"
msgstr ""
- "<![CDATA[<set name=\"participants\" table=\"PERSON_EVENT\" inverse=\"true\">\n"
- " <key column=\"EVENT_ID\"/>\n"
- " <many-to-many column=\"PERSON_ID\" class=\"events.Person\"/>\n"
- "</set>]]>"
-#: index.docbook:779
-msgid "As you see, these are normal <literal>set</literal> mappings in both mapping documents. Notice that the column names in <literal>key</literal> and <literal>many-to-many</literal> are swapped in both mapping documents. The most important addition here is the <literal>inverse=\"true\"</literal> attribute in the <literal>set</literal> element of the <literal>Event</literal>'s collection mapping."
-msgstr "당신이 볼 수 있듯이, 이것들은 두 매핑 문서들 내에서 정규 <literal>set</literal> 매핑들이다. <literal>key</literal>와 <literal>many-to-many</literal>에서 컬럼 이름들은 두 매핑 문서들에서 바뀌어진다. 여기서 가장 중요한 부가물은 <literal>Event</literal>의 콜렉션 매핑에 관한 <literal>set</literal> 요소 내에 있는 <literal>inverse=\"true\"</literal> 속성이다."
+#. Tag: para
+#: tutorial.xml:779
+#, no-c-format
+msgid ""
+"As you see, these are normal <literal>set</literal> mappings in both mapping "
+"documents. Notice that the column names in <literal>key</literal> and "
+"<literal>many-to-many</literal> are swapped in both mapping documents. The "
+"most important addition here is the <literal>inverse=\"true\"</literal> "
+"attribute in the <literal>set</literal> element of the <literal>Event</"
+"literal>'s collection mapping."
+msgstr ""
+"당신이 볼 수 있듯이, 이것들은 두 매핑 문서들 내에서 정규 <literal>set</"
+"literal> 매핑들이다. <literal>key</literal>와 <literal>many-to-many</literal>"
+"에서 컬럼 이름들은 두 매핑 문서들에서 바뀌어진다. 여기서 가장 중요한 부가물"
+"은 <literal>Event</literal>의 콜렉션 매핑에 관한 <literal>set</literal> 요소 "
+"내에 있는 <literal>inverse=\"true\"</literal> 속성이다."
-#: index.docbook:787
-msgid "What this means is that Hibernate should take the other side - the <literal>Person</literal> 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</literal> 클래스-를 취할 것이라는 점이다. 일단 당신이 우리의 두 엔티티들 사이에 양방향 링크가 생성되는 방법을 안다면 이것은 이해하기가 훨씬 더 쉬울 것이다."
+#. Tag: para
+#: tutorial.xml:787
+#, no-c-format
+msgid ""
+"What this means is that Hibernate should take the other side - the "
+"<literal>Person</literal> 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</literal> 클래스-를 취할 것이라는 점이다. 일단 당"
+"신이 우리의 두 엔티티들 사이에 양방향 링크가 생성되는 방법을 안다면 이것은 이"
+"해하기가 훨씬 더 쉬울 것이다."
-#: index.docbook:796
+#. Tag: title
+#: tutorial.xml:796
+#, no-c-format
msgid "Working bi-directional links"
msgstr "양방향 링크들에 작업하기"
-#: index.docbook:798
-msgid "First, keep in mind that Hibernate does not affect normal Java semantics. How did we create a link between a <literal>Person</literal> and an <literal>Event</literal> in the unidirectional example? We added an instance of <literal>Event</literal> to the collection of event references, of an instance of <literal>Person</literal>. So, obviously, if we want to make this link working bi-directional, we have to do the same on the other side - adding a <literal>Person</literal> reference to the collection in an <literal>Event</literal>. This \"setting the link on both sides\" is absolutely necessary and you should never forget doing it."
-msgstr "첫 번째로 Hibernate가 정규 Java 의미론에 영향을 주지 않음을 염두에 두라. 우리는 단방향 예제에서 <literal>Person</literal>과 <literal>Event</literal> 사이에 어떻게 한 개의 링크를 생성시켰는가? 우리는 <literal>Event</literal> 타입의 인스턴스를 <literal>Person</literal> 타입의 이벤트 참조들을 가진 콜렉션에 추가시켰다. 따라서 명백하게 우리가 이 링크를 양방향으로 동작하도록 만들고자 원한다면, 우리는 다른 측 상에서 -하나의 <literal>Person</literal> 참조를 하나의 <literal>Event</literal> 내에 있는 콜렉션에 추가시킴으로써- 동일한 것을 행해야 한다. 이 \"양 측 상에 링크 설정하기\"는 절대적으로 필수적이고 당신은 그것을 행하는 것을 결코 잊지 말아야 한다."
+#. Tag: para
+#: tutorial.xml:798
+#, 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</literal> and an "
+"<literal>Event</literal> in the unidirectional example? We added an instance "
+"of <literal>Event</literal> to the collection of event references, of an "
+"instance of <literal>Person</literal>. So, obviously, if we want to make "
+"this link working bi-directional, we have to do the same on the other side - "
+"adding a <literal>Person</literal> reference to the collection in an "
+"<literal>Event</literal>. This \"setting the link on both sides\" is "
+"absolutely necessary and you should never forget doing it."
+msgstr ""
+"첫 번째로 Hibernate가 정규 Java 의미론에 영향을 주지 않음을 염두에 두라. 우리"
+"는 단방향 예제에서 <literal>Person</literal>과 <literal>Event</literal> 사이"
+"에 어떻게 한 개의 링크를 생성시켰는가? 우리는 <literal>Event</literal> 타입"
+"의 인스턴스를 <literal>Person</literal> 타입의 이벤트 참조들을 가진 콜렉션에 "
+"추가시켰다. 따라서 명백하게 우리가 이 링크를 양방향으로 동작하도록 만들고자 "
+"원한다면, 우리는 다른 측 상에서 -하나의 <literal>Person</literal> 참조를 하나"
+"의 <literal>Event</literal> 내에 있는 콜렉션에 추가시킴으로써- 동일한 것을 행"
+"해야 한다. 이 \"양 측 상에 링크 설정하기\"는 절대적으로 필수적이고 당신은 그"
+"것을 행하는 것을 결코 잊지 말아야 한다."
-#: index.docbook:808
-msgid "Many developers program defensive and create link management methods to correctly set both sides, e.g. in <literal>Person</literal>:"
-msgstr "많은 개발자들은 방비책을 프로그램하고 양 측들을 정확하게 설정하기 위한 하나의 링크 관리 메소드들을 생성시킨다. 예를 들면 <literal>Person</literal>에서 :"
+#. Tag: para
+#: tutorial.xml:808
+#, no-c-format
+msgid ""
+"Many developers program defensive and create link management methods to "
+"correctly set both sides, e.g. in <literal>Person</literal>:"
+msgstr ""
+"많은 개발자들은 방비책을 프로그램하고 양 측들을 정확하게 설정하기 위한 하나"
+"의 링크 관리 메소드들을 생성시킨다. 예를 들면 <literal>Person</literal>에서 :"
-#: index.docbook:813
+#. Tag: programlisting
+#: tutorial.xml:813
+#, no-c-format
msgid ""
- "<![CDATA[protected Set getEvents() {\n"
- " return events;\n"
- "}\n"
- "\n"
- "protected void setEvents(Set events) {\n"
- " this.events = events;\n"
- "}\n"
- "\n"
- "public void addToEvent(Event event) {\n"
- " this.getEvents().add(event);\n"
- " event.getParticipants().add(this);\n"
- "}\n"
- "\n"
- "public void removeFromEvent(Event event) {\n"
- " this.getEvents().remove(event);\n"
- " event.getParticipants().remove(this);\n"
- "}]]>"
+"<![CDATA[protected Set getEvents() {\n"
+" return events;\n"
+"}\n"
+"\n"
+"protected void setEvents(Set events) {\n"
+" this.events = events;\n"
+"}\n"
+"\n"
+"public void addToEvent(Event event) {\n"
+" this.getEvents().add(event);\n"
+" event.getParticipants().add(this);\n"
+"}\n"
+"\n"
+"public void removeFromEvent(Event event) {\n"
+" this.getEvents().remove(event);\n"
+" event.getParticipants().remove(this);\n"
+"}]]>"
msgstr ""
- "<![CDATA[protected Set getEvents() {\n"
- " return events;\n"
- "}\n"
- "\n"
- "protected void setEvents(Set events) {\n"
- " this.events = events;\n"
- "}\n"
- "\n"
- "public void addToEvent(Event event) {\n"
- " this.getEvents().add(event);\n"
- " event.getParticipants().add(this);\n"
- "}\n"
- "\n"
- "public void removeFromEvent(Event event) {\n"
- " this.getEvents().remove(event);\n"
- " event.getParticipants().remove(this);\n"
- "}]]>"
-#: index.docbook:815
-msgid "Notice that 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 messing with the collections directly (well, almost). You should probably do the same with the collection on the other side."
-msgstr "콜렉션에 대한 get 및 set 메소드드은 이제 protected임을 인지하라 - 이것은 동일한 패키지 내에 있는 클래스들과 서브클래스들이 그 메소드들에 접근하는 것을 허용해주지만, 그 밖의 모든 것들이 그 콜렉션들을 (물론, 대개) 직접 만지는 것을 금지시킨다. 당신은 다른 측 상에 있는 콜렉션에 대해 동일한 것을 행할 것이다."
+#. Tag: para
+#: tutorial.xml:815
+#, no-c-format
+msgid ""
+"Notice that 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 messing with the collections "
+"directly (well, almost). You should probably do the same with the collection "
+"on the other side."
+msgstr ""
+"콜렉션에 대한 get 및 set 메소드드은 이제 protected임을 인지하라 - 이것은 동일"
+"한 패키지 내에 있는 클래스들과 서브클래스들이 그 메소드들에 접근하는 것을 허"
+"용해주지만, 그 밖의 모든 것들이 그 콜렉션들을 (물론, 대개) 직접 만지는 것을 "
+"금지시킨다. 당신은 다른 측 상에 있는 콜렉션에 대해 동일한 것을 행할 것이다."
-#: index.docbook:822
-msgid "What about the <literal>inverse</literal> 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 doesn't have enough information to correctly arrange SQL <literal>INSERT</literal> and <literal>UPDATE</literal> statements (to avoid constraint violations), and needs some help to handle bi-directional associations properly. Making one side of the association <literal>inverse</literal> tells Hibernate to basically ignore it, to consider it a <emphasis>mirror</emphasis> of the other side. That's all that is necessary for Hibernate to work out all of the issues when transformation a directional navigation model to a SQL database schema. The rules you have to remember are straightforward: All bi-directional associations need one side as <literal>inverse</literal>. In a one-to-many association it has to be the many-side, in many-to-many association you can pick either side, there!
is no difference."
-msgstr "<literal>inverse</literal> 매핑 속성은 무엇인가? 당신의 경우, 그리고 Java의 경우, 한 개의 양방향 링크는 단순히 양 측들에 대한 참조들을 정확하게 설정하는 문제이다. 하지만 Hibernate는 (컨스트레인트 위배를 피하기 위해서) SQL <literal>INSERT</literal> 문장과 <literal>UPDATE</literal> 문장을 정확하게 마련하기에 충분한 정보를 갖고 있지 않으며, 양방향 연관들을 올바르게 처리하기 위해 어떤 도움을 필요로 한다. 연관의 한 측을 <literal>inverse</literal>로 만드는 것은 기본적으로 그것을 무시하고 그것을 다른 측의 <emphasis>거울(mirror)</emphasis>로 간주하도록 Hibernate에게 알려준다. 그것은 Hibernate가 하나의 방향성 네비게이션 모형을 한 개의 SQL 스키마로 변환시킬 때 모든 쟁점들을 잘 해결하는데 필수적인 모든 것이다. 당신이 염두에 두어야 하는 규칙들�!
�� 간단하다 : 모든 양방향 연관들은 한 쪽이 <literal>inverse</literal>일 필요가 있다. one-to-many 연관에서 그것은 many-측이어야 하고, many-to-many 연관에서 당신은 어느 측이든 선택할 수 있으며 차이점은 없다."
+#. Tag: para
+#: tutorial.xml:822
+#, no-c-format
+msgid ""
+"What about the <literal>inverse</literal> 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 doesn't have enough information "
+"to correctly arrange SQL <literal>INSERT</literal> and <literal>UPDATE</"
+"literal> statements (to avoid constraint violations), and needs some help to "
+"handle bi-directional associations properly. Making one side of the "
+"association <literal>inverse</literal> tells Hibernate to basically ignore "
+"it, to consider it a <emphasis>mirror</emphasis> of the other side. That's "
+"all that is necessary for Hibernate to work out all of the issues when "
+"transformation a directional navigation model to a SQL database schema. The "
+"rules you have to remember are straightforward: All bi-directional "
+"associations need one side as <literal>inverse</literal>. In a one-to-many "
+"association it has to be the many-side, in many-to-many association you can "
+"pick either side, there is no difference."
+msgstr ""
+"<literal>inverse</literal> 매핑 속성은 무엇인가? 당신의 경우, 그리고 Java의 "
+"경우, 한 개의 양방향 링크는 단순히 양 측들에 대한 참조들을 정확하게 설정하는 "
+"문제이다. 하지만 Hibernate는 (컨스트레인트 위배를 피하기 위해서) SQL "
+"<literal>INSERT</literal> 문장과 <literal>UPDATE</literal> 문장을 정확하게 마"
+"련하기에 충분한 정보를 갖고 있지 않으며, 양방향 연관들을 올바르게 처리하기 위"
+"해 어떤 도움을 필요로 한다. 연관의 한 측을 <literal>inverse</literal>로 만드"
+"는 것은 기본적으로 그것을 무시하고 그것을 다른 측의 <emphasis>거울(mirror)</"
+"emphasis>로 간주하도록 Hibernate에게 알려준다. 그것은 Hibernate가 하나의 방향"
+"성 네비게이션 모형을 한 개의 SQL 스키마로 변환시킬 때 모든 쟁점들을 잘 해결하"
+"는데 필수적인 모든 것이다. 당신이 염두에 두어야 하는 규칙들은 간단하다 : 모"
+"든 양방향 연관들은 한 쪽이 <literal>inverse</literal>일 필요가 있다. one-to-"
+"many 연관에서 그것은 many-측이어야 하고, many-to-many 연관에서 당신은 어느 측"
+"이든 선택할 수 있으며 차이점은 없다."
-#: index.docbook:837
+#. Tag: para
+#: tutorial.xml:837
+#, no-c-format
msgid "Let's turn this into a small web application."
msgstr "Let's turn this into a small web application."
-#: index.docbook:844
+#. Tag: title
+#: tutorial.xml:844
+#, no-c-format
msgid "Part 3 - The EventManager web application"
msgstr "파트 3 - EventManager 웹 어플리케이션"
-#: index.docbook:846
-msgid "A Hibernate web application uses <literal>Session</literal> and <literal>Transaction</literal> almost like a standalone application. However, some common patterns are useful. We now write an <literal>EventManagerServlet</literal>. This servlet can list all events stored in the database, and it provides an HTML form to enter new events."
-msgstr "Hibernate 웹 어플리케이션은 대부분의 스탠드얼론 어플리케이션과 같이 <literal>Session</literal>과 <literal>Transaction</literal>을 사용한다. 하지만 몇몇 공통 패턴들이 유용하다. 우리는 이제 <literal>EventManagerServlet</literal>를 작성한다. 이 서블릿은 데이터베이스 내에 저장된 모든 이벤트들을 나열할 수 있고, 그것은 새로운 이벤트들을 입력하기 위한 HTML form을 제공한다."
+#. Tag: para
+#: tutorial.xml:846
+#, no-c-format
+msgid ""
+"A Hibernate web application uses <literal>Session</literal> and "
+"<literal>Transaction</literal> almost like a standalone application. "
+"However, some common patterns are useful. We now write an "
+"<literal>EventManagerServlet</literal>. This servlet can list all events "
+"stored in the database, and it provides an HTML form to enter new events."
+msgstr ""
+"Hibernate 웹 어플리케이션은 대부분의 스탠드얼론 어플리케이션과 같이 "
+"<literal>Session</literal>과 <literal>Transaction</literal>을 사용한다. 하지"
+"만 몇몇 공통 패턴들이 유용하다. 우리는 이제 <literal>EventManagerServlet</"
+"literal>를 작성한다. 이 서블릿은 데이터베이스 내에 저장된 모든 이벤트들을 나"
+"열할 수 있고, 그것은 새로운 이벤트들을 입력하기 위한 HTML form을 제공한다."
-#: index.docbook:854
+#. Tag: title
+#: tutorial.xml:854
+#, no-c-format
msgid "Writing the basic servlet"
msgstr "기본 서블릿 작성하기"
-#: index.docbook:856
-msgid "Create a new class in your source directory, in the <literal>events</literal> package:"
-msgstr "다음 장에서 우리는 Hibernate를 Tomcat 및 WebWork와 통합시킨다. <literal>EventManager</literal>는 우리의 성장하는 어플리케이션을 더이상 감당하지 못한다. 당신의 소스 디렉토리에서 <literal>events</literal> 패키지 내에 새로운 클래스를 생성시켜라:"
+#. Tag: para
+#: tutorial.xml:856
+#, no-c-format
+msgid ""
+"Create a new class in your source directory, in the <literal>events</"
+"literal> package:"
+msgstr ""
+"다음 장에서 우리는 Hibernate를 Tomcat 및 WebWork와 통합시킨다. "
+"<literal>EventManager</literal>는 우리의 성장하는 어플리케이션을 더이상 감당"
+"하지 못한다. 당신의 소스 디렉토리에서 <literal>events</literal> 패키지 내에 "
+"새로운 클래스를 생성시켜라:"
-#: index.docbook:861
+#. Tag: programlisting
+#: tutorial.xml:861
+#, no-c-format
msgid ""
- "<![CDATA[package events;\n"
- "\n"
- "// Imports\n"
- "\n"
- "public class EventManagerServlet extends HttpServlet {\n"
- "\n"
- " // Servlet code\n"
- "}]]>"
+"<![CDATA[package events;\n"
+"\n"
+"// Imports\n"
+"\n"
+"public class EventManagerServlet extends HttpServlet {\n"
+"\n"
+" // Servlet code\n"
+"}]]>"
msgstr ""
- "<![CDATA[package events;\n"
- "\n"
- "// Imports\n"
- "\n"
- "public class EventManagerServlet extends HttpServlet {\n"
- "\n"
- " // Servlet code\n"
- "}]]>"
-#: index.docbook:863
-msgid "The servlet handles HTTP <literal>GET</literal> requests only, hence, the method we implement is <literal>doGet()</literal>:"
-msgstr "서블릿은 HTTP <literal>GET</literal> 요청들 만을 처리하므로, 우리가 구현하는 메소드는 <literal>doGet()</literal>이다:"
+#. Tag: para
+#: tutorial.xml:863
+#, no-c-format
+msgid ""
+"The servlet handles HTTP <literal>GET</literal> requests only, hence, the "
+"method we implement is <literal>doGet()</literal>:"
+msgstr ""
+"서블릿은 HTTP <literal>GET</literal> 요청들 만을 처리하므로, 우리가 구현하는 "
+"메소드는 <literal>doGet()</literal>이다:"
-#: index.docbook:868
+#. Tag: programlisting
+#: tutorial.xml:868
+#, no-c-format
msgid ""
- "<![CDATA[protected void doGet(HttpServletRequest request,\n"
- " HttpServletResponse response)\n"
- " throws ServletException, IOException {\n"
- "\n"
- " SimpleDateFormat dateFormatter = new SimpleDateFormat(\"dd.MM.yyyy\");\n"
- "\n"
- " try {\n"
- " // Begin unit of work\n"
- " HibernateUtil.getSessionFactory()\n"
- " .getCurrentSession().beginTransaction();\n"
- "\n"
- " // Process request and render page...\n"
- "\n"
- " // End unit of work\n"
- " HibernateUtil.getSessionFactory()\n"
- " .getCurrentSession().getTransaction().commit();\n"
- "\n"
- " } catch (Exception ex) {\n"
- " HibernateUtil.getSessionFactory()\n"
- " .getCurrentSession().getTransaction().rollback();\n"
- " throw new ServletException(ex);\n"
- " }\n"
- "\n"
- "}]]>"
+"<![CDATA[protected void doGet(HttpServletRequest request,\n"
+" HttpServletResponse response)\n"
+" throws ServletException, IOException {\n"
+"\n"
+" SimpleDateFormat dateFormatter = new SimpleDateFormat(\"dd.MM.yyyy\");\n"
+"\n"
+" try {\n"
+" // Begin unit of work\n"
+" HibernateUtil.getSessionFactory()\n"
+" .getCurrentSession().beginTransaction();\n"
+"\n"
+" // Process request and render page...\n"
+"\n"
+" // End unit of work\n"
+" HibernateUtil.getSessionFactory()\n"
+" .getCurrentSession().getTransaction().commit();\n"
+"\n"
+" } catch (Exception ex) {\n"
+" HibernateUtil.getSessionFactory()\n"
+" .getCurrentSession().getTransaction().rollback();\n"
+" throw new ServletException(ex);\n"
+" }\n"
+"\n"
+"}]]>"
msgstr ""
- "<![CDATA[protected void doGet(HttpServletRequest request,\n"
- " HttpServletResponse response)\n"
- " throws ServletException, IOException {\n"
- "\n"
- " SimpleDateFormat dateFormatter = new SimpleDateFormat(\"dd.MM.yyyy\");\n"
- "\n"
- " try {\n"
- " // Begin unit of work\n"
- " HibernateUtil.getSessionFactory()\n"
- " .getCurrentSession().beginTransaction();\n"
- "\n"
- " // Process request and render page...\n"
- "\n"
- " // End unit of work\n"
- " HibernateUtil.getSessionFactory()\n"
- " .getCurrentSession().getTransaction().commit();\n"
- "\n"
- " } catch (Exception ex) {\n"
- " HibernateUtil.getSessionFactory()\n"
- " .getCurrentSession().getTransaction().rollback();\n"
- " throw new ServletException(ex);\n"
- " }\n"
- "\n"
- "}]]>"
-#: index.docbook:870
-msgid "The pattern we are applying here is called <emphasis>session-per-request</emphasis>. When a request hits the servlet, a new Hibernate <literal>Session</literal> is opened through the first call to <literal>getCurrentSession()</literal> on the <literal>SessionFactory</literal>. Then a database transaction is started—all data access as to occur inside a transaction, no matter if data is read or written (we don't use the auto-commit mode in applications)."
-msgstr "우리가 여기서 적용하는 패턴은 <emphasis>session-per-request</emphasis>이다. 하나의 요청이 서블릿에 도달할 때, 하나의 새로운 Hibernate <literal>Session</literal>이 <literal>SessionFactory</literal> 상의 <literal>getCurrentSession()</literal>에 대한 첫번째 호출을 통해 열린다. 그때 하나의 데이터베이스 트랜잭션이 시작되고, 모든 데이터 접근이 하나의 트랜잭션 내에서 발생하는 한, 데이터가 읽혀지거나 기록되는데 문제가 없다(우리는 어플리케이션들 내에서 auto-commit 모드를 사용하지 않는다)."
+#. Tag: para
+#: tutorial.xml:870
+#, fuzzy, no-c-format
+msgid ""
+"The pattern we are applying here is called <emphasis>session-per-request</"
+"emphasis>. When a request hits the servlet, a new Hibernate "
+"<literal>Session</literal> is opened through the first call to "
+"<literal>getCurrentSession()</literal> on the <literal>SessionFactory</"
+"literal>. Then a database transaction is started—all data access as to "
+"occur inside a transaction, no matter if data is read or written (we don't "
+"use the auto-commit mode in applications)."
+msgstr ""
+"우리가 여기서 적용하는 패턴은 <emphasis>session-per-request</emphasis>이다. "
+"하나의 요청이 서블릿에 도달할 때, 하나의 새로운 Hibernate <literal>Session</"
+"literal>이 <literal>SessionFactory</literal> 상의 <literal>getCurrentSession"
+"()</literal>에 대한 첫번째 호출을 통해 열린다. 그때 하나의 데이터베이스 트랜"
+"잭션이 시작되고, 모든 데이터 접근이 하나의 트랜잭션 내에서 발생하는 한, 데이"
+"터가 읽혀지거나 기록되는데 문제가 없다(우리는 어플리케이션들 내에서 auto-"
+"commit 모드를 사용하지 않는다)."
-#: index.docbook:879
-msgid "Do <emphasis>not</emphasis> use a new Hibernate <literal>Session</literal> for every database operation. Use one Hibernate <literal>Session</literal> that is scoped to the whole request. Use <literal>getCurrentSession()</literal>, so that it is automatically bound to the current Java thread."
-msgstr "모든 데이터베이스 오퍼레이션 각각에 대해 새로운 Hibernate <literal>Session</literal>을 사용하지 <emphasis>말라</emphasis>. 전체 요청에 대해 영역지워진 한 개의 Hibernate <literal>Session</literal>을 사용하라. 그것이 자동적으로 현재의 자바 쓰레드에 바인드되도록 <literal>getCurrentSession()</literal>을 사용하라."
+#. Tag: para
+#: tutorial.xml:879
+#, no-c-format
+msgid ""
+"Do <emphasis>not</emphasis> use a new Hibernate <literal>Session</literal> "
+"for every database operation. Use one Hibernate <literal>Session</literal> "
+"that is scoped to the whole request. Use <literal>getCurrentSession()</"
+"literal>, so that it is automatically bound to the current Java thread."
+msgstr ""
+"모든 데이터베이스 오퍼레이션 각각에 대해 새로운 Hibernate <literal>Session</"
+"literal>을 사용하지 <emphasis>말라</emphasis>. 전체 요청에 대해 영역지워진 "
+"한 개의 Hibernate <literal>Session</literal>을 사용하라. 그것이 자동적으로 현"
+"재의 자바 쓰레드에 바인드되도록 <literal>getCurrentSession()</literal>을 사용"
+"하라."
-#: index.docbook:886
-msgid "Next, the possible actions of the request are processed and the response HTML is rendered. We'll get to that part soon."
-msgstr "다음으로, 요청의 가능한 액션들이 처리되고 응답 HTML이 렌더링된다. 우리는 곧장 그부분으로 갈 것이다."
+#. Tag: para
+#: tutorial.xml:886
+#, no-c-format
+msgid ""
+"Next, the possible actions of the request are processed and the response "
+"HTML is rendered. We'll get to that part soon."
+msgstr ""
+"다음으로, 요청의 가능한 액션들이 처리되고 응답 HTML이 렌더링된다. 우리는 곧"
+"장 그부분으로 갈 것이다."
-#: index.docbook:891
-msgid "Finally, the unit of work ends when processing and rendering is complete. If any problem occured during processing or rendering, an exception will be thrown and the database transaction rolled back. This completes the <literal>session-per-request</literal> 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</emphasis>—you'll need it as soon as you consider rendering your view in JSP, not in a servlet."
-msgstr "마지막으로, 프로세싱과 렌더링이 완료될 때 작업 단위가 종료된다. 만일 어떤 문제가 프로세싱과 렌더링 동안에 발생될 경우, 하나의 예외상황이 던져질 것이고 데이터베이스 트랜잭션은 롤백될 것이다. 이것은 <literal>session-per-request</literal>을 완료시킨다. 모든 서블릿 내에 있는 트랜잭션 구획 코드 대신에 당신은 또한 서블릿 필터를 사용할 수 있다. <emphasis>Open Session in View</emphasis>로 명명되는 이 패턴에 대한 추가 정보는 Hibernate 웹 사이트와 위키를 보라. 당신은 서블릿 내에서가 아닌 JSP 내에 당신의 뷰를 렌더링하는 것을 고려할 때 그것을 필요로 할 것이다."
+#. Tag: para
+#: tutorial.xml:891
+#, fuzzy, no-c-format
+msgid ""
+"Finally, the unit of work ends when processing and rendering is complete. If "
+"any problem occured during processing or rendering, an exception will be "
+"thrown and the database transaction rolled back. This completes the "
+"<literal>session-per-request</literal> 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</emphasis>—you'll need it as "
+"soon as you consider rendering your view in JSP, not in a servlet."
+msgstr ""
+"마지막으로, 프로세싱과 렌더링이 완료될 때 작업 단위가 종료된다. 만일 어떤 문"
+"제가 프로세싱과 렌더링 동안에 발생될 경우, 하나의 예외상황이 던져질 것이고 데"
+"이터베이스 트랜잭션은 롤백될 것이다. 이것은 <literal>session-per-request</"
+"literal>을 완료시킨다. 모든 서블릿 내에 있는 트랜잭션 구획 코드 대신에 당신"
+"은 또한 서블릿 필터를 사용할 수 있다. <emphasis>Open Session in View</"
+"emphasis>로 명명되는 이 패턴에 대한 추가 정보는 Hibernate 웹 사이트와 위키를 "
+"보라. 당신은 서블릿 내에서가 아닌 JSP 내에 당신의 뷰를 렌더링하는 것을 고려"
+"할 때 그것을 필요로 할 것이다."
-#: index.docbook:905
+#. Tag: title
+#: tutorial.xml:905
+#, no-c-format
msgid "Processing and rendering"
msgstr "프로세싱과 렌더링"
-#: index.docbook:907
-msgid "Let's implement the processing of the request and rendering of the page."
+#. Tag: para
+#: tutorial.xml:907
+#, no-c-format
+msgid ""
+"Let's implement the processing of the request and rendering of the page."
msgstr "요청의 처리와 페이지의 렌더링을 구현하자."
-#: index.docbook:911
+#. Tag: programlisting
+#: tutorial.xml:911
+#, no-c-format
msgid ""
- "<![CDATA[// Write HTML header\n"
- "PrintWriter out = response.getWriter();\n"
- "out.println(\"<html><head><title>Event Manager</title></head><body>\");\n"
- "\n"
- "// Handle actions\n"
- "if ( \"store\".equals(request.getParameter(\"action\")) ) {\n"
- "\n"
- " String eventTitle = request.getParameter(\"eventTitle\");\n"
- " String eventDate = request.getParameter(\"eventDate\");\n"
- "\n"
- " if ( \"\".equals(eventTitle) || \"\".equals(eventDate) ) {\n"
- " out.println(\"<b><i>Please enter event title and date.</i></b>\");\n"
- " } else {\n"
- " createAndStoreEvent(eventTitle, dateFormatter.parse(eventDate));\n"
- " out.println(\"<b><i>Added event.</i></b>\");\n"
- " }\n"
- "}\n"
- "\n"
- "// Print page\n"
- "printEventForm(out);\n"
- "listEvents(out, dateFormatter);\n"
- "\n"
- "// Write HTML footer\n"
- "out.println(\"</body></html>\");\n"
- "out.flush();\n"
- "out.close();]]>"
+"<![CDATA[// Write HTML header\n"
+"PrintWriter out = response.getWriter();\n"
+"out.println(\"<html><head><title>Event Manager</title></head><body>\");\n"
+"\n"
+"// Handle actions\n"
+"if ( \"store\".equals(request.getParameter(\"action\")) ) {\n"
+"\n"
+" String eventTitle = request.getParameter(\"eventTitle\");\n"
+" String eventDate = request.getParameter(\"eventDate\");\n"
+"\n"
+" if ( \"\".equals(eventTitle) || \"\".equals(eventDate) ) {\n"
+" out.println(\"<b><i>Please enter event title and date.</i></b>\");\n"
+" } else {\n"
+" createAndStoreEvent(eventTitle, dateFormatter.parse(eventDate));\n"
+" out.println(\"<b><i>Added event.</i></b>\");\n"
+" }\n"
+"}\n"
+"\n"
+"// Print page\n"
+"printEventForm(out);\n"
+"listEvents(out, dateFormatter);\n"
+"\n"
+"// Write HTML footer\n"
+"out.println(\"</body></html>\");\n"
+"out.flush();\n"
+"out.close();]]>"
msgstr ""
- "<![CDATA[// Write HTML header\n"
- "PrintWriter out = response.getWriter();\n"
- "out.println(\"<html><head><title>Event Manager</title></head><body>\");\n"
- "\n"
- "// Handle actions\n"
- "if ( \"store\".equals(request.getParameter(\"action\")) ) {\n"
- "\n"
- " String eventTitle = request.getParameter(\"eventTitle\");\n"
- " String eventDate = request.getParameter(\"eventDate\");\n"
- "\n"
- " if ( \"\".equals(eventTitle) || \"\".equals(eventDate) ) {\n"
- " out.println(\"<b><i>Please enter event title and date.</i></b>\");\n"
- " } else {\n"
- " createAndStoreEvent(eventTitle, dateFormatter.parse(eventDate));\n"
- " out.println(\"<b><i>Added event.</i></b>\");\n"
- " }\n"
- "}\n"
- "\n"
- "// Print page\n"
- "printEventForm(out);\n"
- "listEvents(out, dateFormatter);\n"
- "\n"
- "// Write HTML footer\n"
- "out.println(\"</body></html>\");\n"
- "out.flush();\n"
- "out.close();]]>"
-#: index.docbook:913
-msgid "Granted, this coding style with a mix of Java and HTML would not scale in a more complex application—keep in mind that we are only illustrating basic Hibernate concepts in this tutorial. The code prints an HTML header and a footer. Inside this page, an HTML form for event entry and a list of all events in the database are printed. The first method is trivial and only outputs HTML:"
-msgstr "Java와 HTML이 혼합된 이 코딩이 보다 복잡한 어플리케이션에서 기준이 될 수 없다 할지라도, 우리는 단지 이 튜토리얼 내에서 기본 Hibernate 개념들을 설명하고 있음을 염두에 두라. 코드는 하나의 HTML 헤더와 하나의 footer를 프린트한다. 이 페이지 내에 이벤트 엔트리를 위한 하나의 HTML form과 데이터베이스 내에 있는 모든 이벤트들의 목록이 프린트된다. 첫 번째 메소드는 시행적이고 오직 HTML을 출력한다:"
+#. Tag: para
+#: tutorial.xml:913
+#, fuzzy, no-c-format
+msgid ""
+"Granted, this coding style with a mix of Java and HTML would not scale in a "
+"more complex application—keep in mind that we are only illustrating "
+"basic Hibernate concepts in this tutorial. The code prints an HTML header "
+"and a footer. Inside this page, an HTML form for event entry and a list of "
+"all events in the database are printed. The first method is trivial and only "
+"outputs HTML:"
+msgstr ""
+"Java와 HTML이 혼합된 이 코딩이 보다 복잡한 어플리케이션에서 기준이 될 수 없"
+"다 할지라도, 우리는 단지 이 튜토리얼 내에서 기본 Hibernate 개념들을 설명하고 "
+"있음을 염두에 두라. 코드는 하나의 HTML 헤더와 하나의 footer를 프린트한다. 이 "
+"페이지 내에 이벤트 엔트리를 위한 하나의 HTML form과 데이터베이스 내에 있는 모"
+"든 이벤트들의 목록이 프린트된다. 첫 번째 메소드는 시행적이고 오직 HTML을 출력"
+"한다:"
-#: index.docbook:922
+#. Tag: programlisting
+#: tutorial.xml:922
+#, no-c-format
msgid ""
- "<![CDATA[private void printEventForm(PrintWriter out) {\n"
- " out.println(\"<h2>Add new event:</h2>\");\n"
- " out.println(\"<form>\");\n"
- " out.println(\"Title: <input name='eventTitle' length='50'/><br/>\");\n"
- " out.println(\"Date (e.g. 24.12.2009): <input name='eventDate' length='10'/><br/>\");\n"
- " out.println(\"<input type='submit' name='action' value='store'/>\");\n"
- " out.println(\"</form>\");\n"
- "}]]>"
+"<![CDATA[private void printEventForm(PrintWriter out) {\n"
+" out.println(\"<h2>Add new event:</h2>\");\n"
+" out.println(\"<form>\");\n"
+" out.println(\"Title: <input name='eventTitle' length='50'/><br/>\");\n"
+" out.println(\"Date (e.g. 24.12.2009): <input name='eventDate' "
+"length='10'/><br/>\");\n"
+" out.println(\"<input type='submit' name='action' value='store'/>\");\n"
+" out.println(\"</form>\");\n"
+"}]]>"
msgstr ""
- "<![CDATA[private void printEventForm(PrintWriter out) {\n"
- " out.println(\"<h2>Add new event:</h2>\");\n"
- " out.println(\"<form>\");\n"
- " out.println(\"Title: <input name='eventTitle' length='50'/><br/>\");\n"
- " out.println(\"Date (e.g. 24.12.2009): <input name='eventDate' length='10'/><br/>\");\n"
- " out.println(\"<input type='submit' name='action' value='store'/>\");\n"
- " out.println(\"</form>\");\n"
- "}]]>"
-#: index.docbook:924
-msgid "The <literal>listEvents()</literal> method uses the Hibernate <literal>Session</literal> bound to the current thread to execute a query:"
-msgstr "<literal>listEvents()</literal> 메소드는 하나의 질의를 실행하기 위해서 현재의 쓰레드에 결합된 Hibernate <literal>Session</literal>을 사용한다:"
+#. Tag: para
+#: tutorial.xml:924
+#, no-c-format
+msgid ""
+"The <literal>listEvents()</literal> method uses the Hibernate "
+"<literal>Session</literal> bound to the current thread to execute a query:"
+msgstr ""
+"<literal>listEvents()</literal> 메소드는 하나의 질의를 실행하기 위해서 현재"
+"의 쓰레드에 결합된 Hibernate <literal>Session</literal>을 사용한다:"
-#: index.docbook:930
+#. Tag: programlisting
+#: tutorial.xml:930
+#, no-c-format
msgid ""
- "<![CDATA[private void listEvents(PrintWriter out, SimpleDateFormat dateFormatter) {\n"
- "\n"
- " List result = HibernateUtil.getSessionFactory()\n"
- " .getCurrentSession().createCriteria(Event.class).list();\n"
- " if (result.size() > 0) {\n"
- " out.println(\"<h2>Events in database:</h2>\");\n"
- " out.println(\"<table border='1'>\");\n"
- " out.println(\"<tr>\");\n"
- " out.println(\"<th>Event title</th>\");\n"
- " out.println(\"<th>Event date</th>\");\n"
- " out.println(\"</tr>\");\n"
- " for (Iterator it = result.iterator(); it.hasNext();) {\n"
- " Event event = (Event) it.next();\n"
- " out.println(\"<tr>\");\n"
- " out.println(\"<td>\" + event.getTitle() + \"</td>\");\n"
- " out.println(\"<td>\" + dateFormatter.format(event.getDate()) + \"</td>\");\n"
- " out.println(\"</tr>\");\n"
- " }\n"
- " out.println(\"</table>\");\n"
- " }\n"
- "}]]>"
+"<![CDATA[private void listEvents(PrintWriter out, SimpleDateFormat "
+"dateFormatter) {\n"
+"\n"
+" List result = HibernateUtil.getSessionFactory()\n"
+" .getCurrentSession().createCriteria(Event.class).list"
+"();\n"
+" if (result.size() > 0) {\n"
+" out.println(\"<h2>Events in database:</h2>\");\n"
+" out.println(\"<table border='1'>\");\n"
+" out.println(\"<tr>\");\n"
+" out.println(\"<th>Event title</th>\");\n"
+" out.println(\"<th>Event date</th>\");\n"
+" out.println(\"</tr>\");\n"
+" for (Iterator it = result.iterator(); it.hasNext();) {\n"
+" Event event = (Event) it.next();\n"
+" out.println(\"<tr>\");\n"
+" out.println(\"<td>\" + event.getTitle() + \"</td>\");\n"
+" out.println(\"<td>\" + dateFormatter.format(event.getDate()) + "
+"\"</td>\");\n"
+" out.println(\"</tr>\");\n"
+" }\n"
+" out.println(\"</table>\");\n"
+" }\n"
+"}]]>"
msgstr ""
- "<![CDATA[private void listEvents(PrintWriter out, SimpleDateFormat dateFormatter) {\n"
- "\n"
- " List result = HibernateUtil.getSessionFactory()\n"
- " .getCurrentSession().createCriteria(Event.class).list();\n"
- " if (result.size() > 0) {\n"
- " out.println(\"<h2>Events in database:</h2>\");\n"
- " out.println(\"<table border='1'>\");\n"
- " out.println(\"<tr>\");\n"
- " out.println(\"<th>Event title</th>\");\n"
- " out.println(\"<th>Event date</th>\");\n"
- " out.println(\"</tr>\");\n"
- " for (Iterator it = result.iterator(); it.hasNext();) {\n"
- " Event event = (Event) it.next();\n"
- " out.println(\"<tr>\");\n"
- " out.println(\"<td>\" + event.getTitle() + \"</td>\");\n"
- " out.println(\"<td>\" + dateFormatter.format(event.getDate()) + \"</td>\");\n"
- " out.println(\"</tr>\");\n"
- " }\n"
- " out.println(\"</table>\");\n"
- " }\n"
- "}]]>"
-#: index.docbook:932
-msgid "Finally, the <literal>store</literal> action is dispatched to the <literal>createAndStoreEvent()</literal> method, which also uses the <literal>Session</literal> of the current thread:"
-msgstr "마지막으로, <literal>store</literal> 액션은 <literal>createAndStoreEvent()</literal> 메소드로 디스패치된다. 그것은 현재 쓰레드의 <literal>Session</literal>을 사용한다:"
+#. Tag: para
+#: tutorial.xml:932
+#, no-c-format
+msgid ""
+"Finally, the <literal>store</literal> action is dispatched to the "
+"<literal>createAndStoreEvent()</literal> method, which also uses the "
+"<literal>Session</literal> of the current thread:"
+msgstr ""
+"마지막으로, <literal>store</literal> 액션은 <literal>createAndStoreEvent()</"
+"literal> 메소드로 디스패치된다. 그것은 현재 쓰레드의 <literal>Session</"
+"literal>을 사용한다:"
-#: index.docbook:938
+#. Tag: programlisting
+#: tutorial.xml:938
+#, no-c-format
msgid ""
- "<![CDATA[protected void createAndStoreEvent(String title, Date theDate) {\n"
- " Event theEvent = new Event();\n"
- " theEvent.setTitle(title);\n"
- " theEvent.setDate(theDate);\n"
- "\n"
- " HibernateUtil.getSessionFactory()\n"
- " .getCurrentSession().save(theEvent);\n"
- "}]]>"
+"<![CDATA[protected void createAndStoreEvent(String title, Date theDate) {\n"
+" Event theEvent = new Event();\n"
+" theEvent.setTitle(title);\n"
+" theEvent.setDate(theDate);\n"
+"\n"
+" HibernateUtil.getSessionFactory()\n"
+" .getCurrentSession().save(theEvent);\n"
+"}]]>"
msgstr ""
- "<![CDATA[protected void createAndStoreEvent(String title, Date theDate) {\n"
- " Event theEvent = new Event();\n"
- " theEvent.setTitle(title);\n"
- " theEvent.setDate(theDate);\n"
- "\n"
- " HibernateUtil.getSessionFactory()\n"
- " .getCurrentSession().save(theEvent);\n"
- "}]]>"
-#: index.docbook:940
-msgid "That's it, the servlet is complete. A request to the servlet will be processed in a single <literal>Session</literal> and <literal>Transaction</literal>. As earlier in the standalone application, Hibernate can automatically bind these ojects to the current thread of execution. This gives you the freedom to layer your code and access the <literal>SessionFactory</literal> in any way you like. Usually you'd 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>Session</literal>과 <literal>Transaction</literal> 내에서 처리될 것이다. 이전처럼 스탠드얼론 어플리케이션에서, Hibernate는 이들 객체들을 실행 중인 현재 쓰레드에 자동적으로 바인드시킬 수 있다. 이것은 당신의 코드를 계층화 시키고 당신이 좋아하는 임의의 방법으로 <literal>SessionFactory</literal>에 접근하는 자유를 당신에게 부여한다. 대개 당신은 보다 세련된 설계를 사용할 것이고 데이터 접근 코드를 데이터 접근 객체들 내로 이동시킬 것이다(DAO 패턴). 추가 예제들은 Hibernate 위키를 보라."
+#. Tag: para
+#: tutorial.xml:940
+#, no-c-format
+msgid ""
+"That's it, the servlet is complete. A request to the servlet will be "
+"processed in a single <literal>Session</literal> and <literal>Transaction</"
+"literal>. As earlier in the standalone application, Hibernate can "
+"automatically bind these ojects to the current thread of execution. This "
+"gives you the freedom to layer your code and access the "
+"<literal>SessionFactory</literal> in any way you like. Usually you'd 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>Session</"
+"literal>과 <literal>Transaction</literal> 내에서 처리될 것이다. 이전처럼 스탠"
+"드얼론 어플리케이션에서, Hibernate는 이들 객체들을 실행 중인 현재 쓰레드에 자"
+"동적으로 바인드시킬 수 있다. 이것은 당신의 코드를 계층화 시키고 당신이 좋아하"
+"는 임의의 방법으로 <literal>SessionFactory</literal>에 접근하는 자유를 당신에"
+"게 부여한다. 대개 당신은 보다 세련된 설계를 사용할 것이고 데이터 접근 코드를 "
+"데이터 접근 객체들 내로 이동시킬 것이다(DAO 패턴). 추가 예제들은 Hibernate 위"
+"키를 보라."
-#: index.docbook:954
+#. Tag: title
+#: tutorial.xml:954
+#, no-c-format
msgid "Deploying and testing"
msgstr "배치하기 그리고 테스트하기"
-#: index.docbook:956
-msgid "To deploy this application you have to create a web archive, a WAR. Add the following Ant target to your <literal>build.xml</literal>:"
-msgstr "이 어플리케이션을 배치하기 위해서 당신은 하나의 웹 아카이브, WAR를 생성시켜야 한다. 다음 Ant target을 당신의 <literal>build.xml</literal> 내에 추가하라:"
+#. Tag: para
+#: tutorial.xml:956
+#, no-c-format
+msgid ""
+"To deploy this application you have to create a web archive, a WAR. Add the "
+"following Ant target to your <literal>build.xml</literal>:"
+msgstr ""
+"이 어플리케이션을 배치하기 위해서 당신은 하나의 웹 아카이브, WAR를 생성시켜"
+"야 한다. 다음 Ant target을 당신의 <literal>build.xml</literal> 내에 추가하라:"
-#: index.docbook:961
+#. Tag: programlisting
+#: tutorial.xml:961
+#, no-c-format
msgid ""
- "<![CDATA[<target name=\"war\" depends=\"compile\">\n"
- " <war destfile=\"hibernate-tutorial.war\" webxml=\"web.xml\">\n"
- " <lib dir=\"${librarydir}\">\n"
- " <exclude name=\"jsdk*.jar\"/>\n"
- " </lib>\n"
- "\n"
- " <classes dir=\"${targetdir}\"/>\n"
- " </war>\n"
- "</target>]]>"
+"<![CDATA[<target name=\"war\" depends=\"compile\">\n"
+" <war destfile=\"hibernate-tutorial.war\" webxml=\"web.xml\">\n"
+" <lib dir=\"${librarydir}\">\n"
+" <exclude name=\"jsdk*.jar\"/>\n"
+" </lib>\n"
+"\n"
+" <classes dir=\"${targetdir}\"/>\n"
+" </war>\n"
+"</target>]]>"
msgstr ""
- "<![CDATA[<target name=\"war\" depends=\"compile\">\n"
- " <war destfile=\"hibernate-tutorial.war\" webxml=\"web.xml\">\n"
- " <lib dir=\"${librarydir}\">\n"
- " <exclude name=\"jsdk*.jar\"/>\n"
- " </lib>\n"
- "\n"
- " <classes dir=\"${targetdir}\"/>\n"
- " </war>\n"
- "</target>]]>"
-#: index.docbook:963
-msgid "This target creates a file called <literal>hibernate-tutorial.war</literal> in your project directory. It packages all libraries and the <literal>web.xml</literal> descriptor, which is expected in the base directory of your project:"
-msgstr "이 target은 당신의 프로젝트 디렉토리 내에 <literal>hibernate-tutorial.war</literal>로 명명된 하나의 파일을 생성시킨다. 그것은 당신의 프로젝트의 기본 디렉토리 내에 기대되는 모든 라이브러리들과 <literal>web.xml</literal> 디스크립터를 패키징한다:"
+#. Tag: para
+#: tutorial.xml:963
+#, no-c-format
+msgid ""
+"This target creates a file called <literal>hibernate-tutorial.war</literal> "
+"in your project directory. It packages all libraries and the <literal>web."
+"xml</literal> descriptor, which is expected in the base directory of your "
+"project:"
+msgstr ""
+"이 target은 당신의 프로젝트 디렉토리 내에 <literal>hibernate-tutorial.war</"
+"literal>로 명명된 하나의 파일을 생성시킨다. 그것은 당신의 프로젝트의 기본 디"
+"렉토리 내에 기대되는 모든 라이브러리들과 <literal>web.xml</literal> 디스크립"
+"터를 패키징한다:"
-#: index.docbook:969
+#. Tag: programlisting
+#: tutorial.xml:969
+#, no-c-format
msgid ""
- "<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
- "<web-app version=\"2.4\"\n"
- " xmlns=\"http://java.sun.com/xml/ns/j2ee\"\n"
- " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
- " xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd\">\n"
- "\n"
- " <servlet>\n"
- " <servlet-name>Event Manager</servlet-name>\n"
- " <servlet-class>events.EventManagerServlet</servlet-class>\n"
- " </servlet>\n"
- "\n"
- " <servlet-mapping>\n"
- " <servlet-name>Event Manager</servlet-name>\n"
- " <url-pattern>/eventmanager</url-pattern>\n"
- " </servlet-mapping>\n"
- "</web-app>]]>"
+"<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+"<web-app version=\"2.4\"\n"
+" xmlns=\"http://java.sun.com/xml/ns/j2ee\"\n"
+" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
+" xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee http://java.sun.com/"
+"xml/ns/j2ee/web-app_2_4.xsd\">\n"
+"\n"
+" <servlet>\n"
+" <servlet-name>Event Manager</servlet-name>\n"
+" <servlet-class>events.EventManagerServlet</servlet-class>\n"
+" </servlet>\n"
+"\n"
+" <servlet-mapping>\n"
+" <servlet-name>Event Manager</servlet-name>\n"
+" <url-pattern>/eventmanager</url-pattern>\n"
+" </servlet-mapping>\n"
+"</web-app>]]>"
msgstr ""
- "<![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
- "<web-app version=\"2.4\"\n"
- " xmlns=\"http://java.sun.com/xml/ns/j2ee\"\n"
- " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
- " xsi:schemaLocation=\"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd\">\n"
- "\n"
- " <servlet>\n"
- " <servlet-name>Event Manager</servlet-name>\n"
- " <servlet-class>events.EventManagerServlet</servlet-class>\n"
- " </servlet>\n"
- "\n"
- " <servlet-mapping>\n"
- " <servlet-name>Event Manager</servlet-name>\n"
- " <url-pattern>/eventmanager</url-pattern>\n"
- " </servlet-mapping>\n"
- "</web-app>]]>"
-#: index.docbook:971
-msgid "Before you compile and deploy the web application, note that an additional library is required: <literal>jsdk.jar</literal>. 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</literal>. 당신이 이미 이 라이브러리를 갖고 있지 않을 경우, 이것은 Java servlet development kit이며, Sun 웹 사이트로부터 그것을 얻어서 그것을 당신의 라이브러리 디렉토리에 복사하라. 하지만 그것은 오직 컴파일 시에만 사용될 것이고 WAR 패키지에서는 제외된다."
+#. Tag: para
+#: tutorial.xml:971
+#, no-c-format
+msgid ""
+"Before you compile and deploy the web application, note that an additional "
+"library is required: <literal>jsdk.jar</literal>. 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</literal>. 당신이 이미 이 라이브러리"
+"를 갖고 있지 않을 경우, 이것은 Java servlet development kit이며, Sun 웹 사이"
+"트로부터 그것을 얻어서 그것을 당신의 라이브러리 디렉토리에 복사하라. 하지만 "
+"그것은 오직 컴파일 시에만 사용될 것이고 WAR 패키지에서는 제외된다."
-#: index.docbook:979
-msgid "To build and deploy call <literal>ant war</literal> in your project directory and copy the <literal>hibernate-tutorial.war</literal> file into your Tomcat <literal>webapp</literal> directory. If you don't have Tomcat installed, download it and follow the installation instructions. You don't have to change any Tomcat configuration to deploy this application though."
-msgstr "빌드하고 배치하기 위해 당신의 프로젝트 디렉토리 내에서 <literal>ant war</literal>를 호출하고 <literal>hibernate-tutorial.war</literal> 파일을 당신의 Tomcat <literal>webapp</literal> 디렉토리로 복사하라. 만일 당신이 Tomcat을 설치하지 않았다면, 그것을 내려받아 설치 지침들을 따르라. 당신은 이 어플리케이션을 배치하기 위해 임의의 Tomcat 구성을 변경하지 않아야 한다."
+#. Tag: para
+#: tutorial.xml:979
+#, no-c-format
+msgid ""
+"To build and deploy call <literal>ant war</literal> in your project "
+"directory and copy the <literal>hibernate-tutorial.war</literal> file into "
+"your Tomcat <literal>webapp</literal> directory. If you don't have Tomcat "
+"installed, download it and follow the installation instructions. You don't "
+"have to change any Tomcat configuration to deploy this application though."
+msgstr ""
+"빌드하고 배치하기 위해 당신의 프로젝트 디렉토리 내에서 <literal>ant war</"
+"literal>를 호출하고 <literal>hibernate-tutorial.war</literal> 파일을 당신의 "
+"Tomcat <literal>webapp</literal> 디렉토리로 복사하라. 만일 당신이 Tomcat을 설"
+"치하지 않았다면, 그것을 내려받아 설치 지침들을 따르라. 당신은 이 어플리케이션"
+"을 배치하기 위해 임의의 Tomcat 구성을 변경하지 않아야 한다."
-#: index.docbook:987
-msgid "Once deployed and Tomcat is running, access the application at <literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal>. Make sure you watch the Tomcat log to see Hibernate initialize when the first request hits your servlet (the static initializer in <literal>HibernateUtil</literal> 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</literal> 내에 있는 static initializer가 호출된다) 되는 것을 보기 위해 그리고 만일 어떤 예외상황들이 발생할 경우 상세한 출력을 얻기 위해서 Tomcat 로그를 지켜보도록 하라."
+#. Tag: para
+#: tutorial.xml:987
+#, no-c-format
+msgid ""
+"Once deployed and Tomcat is running, access the application at "
+"<literal>http://localhost:8080/hibernate-tutorial/eventmanager</literal>. "
+"Make sure you watch the Tomcat log to see Hibernate initialize when the "
+"first request hits your servlet (the static initializer in "
+"<literal>HibernateUtil</literal> 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</literal> "
+"내에 있는 static initializer가 호출된다) 되는 것을 보기 위해 그리고 만일 어"
+"떤 예외상황들이 발생할 경우 상세한 출력을 얻기 위해서 Tomcat 로그를 지켜보도"
+"록 하라."
-#: index.docbook:1000
+#. Tag: title
+#: tutorial.xml:1000
+#, no-c-format
msgid "Summary"
-msgstr "<title>요약</title>"
+msgstr "요약"
-#: index.docbook:1002
-msgid "This tutorial covered the basics of writing a simple standalone Hibernate application and a small web application."
-msgstr "이 튜토리얼은 간단한 스탠드얼론 Hibernate 어플리케이션과 하나의 작은 웹 어플리케이션을 작성하는 기초를 다루었다."
+#. Tag: para
+#: tutorial.xml:1002
+#, no-c-format
+msgid ""
+"This tutorial covered the basics of writing a simple standalone Hibernate "
+"application and a small web application."
+msgstr ""
+"이 튜토리얼은 간단한 스탠드얼론 Hibernate 어플리케이션과 하나의 작은 웹 어플"
+"리케이션을 작성하는 기초를 다루었다."
-#: index.docbook:1007
-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\"/>), 페치 퍼포먼스(<xref linkend=\"performance\"/>), 또는 API 사용법(<xref linkend=\"objectstate\"/>), 그리고 질의 특징들(<xref linkend=\"objectstate-querying\"/>)이다."
+#. Tag: para
+#: tutorial.xml:1007
+#, no-c-format
+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\"/>), 페치 퍼포먼스(<xref linkend="
+"\"performance\"/>), 또는 API 사용법(<xref linkend=\"objectstate\"/>), 그리고 "
+"질의 특징들(<xref linkend=\"objectstate-querying\"/>)이다."
-#: index.docbook:1015
-msgid "Don't forget to check the Hibernate website for more (specialized) tutorials."
-msgstr "더 많은(특화된) 튜토리얼들에 대해서는 Hibernate 웹 사이트를 체크하는 것을 잊지 말라."
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: para
+#: tutorial.xml:1015
+#, no-c-format
+msgid ""
+"Don't forget to check the Hibernate website for more (specialized) tutorials."
+msgstr ""
+"더 많은(특화된) 튜토리얼들에 대해서는 Hibernate 웹 사이트를 체크하는 것을 잊"
+"지 말라."
Modified: core/trunk/documentation/manual/translations/ko-KR/content/xml.po
===================================================================
--- core/trunk/documentation/manual/translations/ko-KR/content/xml.po 2007-10-27 03:41:26 UTC (rev 14148)
+++ core/trunk/documentation/manual/translations/ko-KR/content/xml.po 2007-10-27 03:44:23 UTC (rev 14149)
@@ -1,420 +1,446 @@
-#, fuzzy
msgid ""
msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2007-10-25 07:48+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Content-Type: text/plain; charset=utf-8\n"
-#: index.docbook:5
+"Language-Team: LANGUAGE <LL(a)li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: xml.xml:5
+#, no-c-format
msgid "XML Mapping"
msgstr "XML 매핑"
-#: index.docbook:7
-msgid "Note that this is an experimental feature in Hibernate 3.0 and is under extremely active development."
-msgstr "이것은 Hibernate3.0에서 실험적인 특징이고 매우 활동적으로 개발 중에 있음을 노트하라."
+#. Tag: emphasis
+#: xml.xml:7
+#, no-c-format
+msgid ""
+"Note that this is an experimental feature in Hibernate 3.0 and is under "
+"extremely active development."
+msgstr ""
+"이것은 Hibernate3.0에서 실험적인 특징이고 매우 활동적으로 개발 중에 있음을 노"
+"트하라."
-#: index.docbook:13
+#. Tag: title
+#: xml.xml:13
+#, no-c-format
msgid "Working with XML data"
msgstr "XML 데이터로 작업하기"
-#: index.docbook:15
-msgid "Hibernate lets you work with persistent XML data in much the same way you work with persistent POJOs. A parsed XML tree can be thought of as just another way to represent the relational data at the object level, instead of POJOs."
-msgstr "Hibernate는 당신이 영속 POJO들로 작업하는 것과 아주 동일한 방법으로 영속 XML 데이터에 작업하도록 해준다. 파싱된 XML 트리는 단지 객체 레벨에서 관계형 데이터를 나타내는 또 다른 방법으로 간주될 수 있다. 하나의 파싱된 XML 트리는 POJO들 대신, 객체 레벨에서 관계형 데이터를 표현하는 단지 또 다른 방법으로 간주될 수 있다."
+#. Tag: para
+#: xml.xml:15
+#, no-c-format
+msgid ""
+"Hibernate lets you work with persistent XML data in much the same way you "
+"work with persistent POJOs. A parsed XML tree can be thought of as just "
+"another way to represent the relational data at the object level, instead of "
+"POJOs."
+msgstr ""
+"Hibernate는 당신이 영속 POJO들로 작업하는 것과 아주 동일한 방법으로 영속 XML "
+"데이터에 작업하도록 해준다. 파싱된 XML 트리는 단지 객체 레벨에서 관계형 데이"
+"터를 나타내는 또 다른 방법으로 간주될 수 있다. 하나의 파싱된 XML 트리는 POJO"
+"들 대신, 객체 레벨에서 관계형 데이터를 표현하는 단지 또 다른 방법으로 간주될 "
+"수 있다."
-#: index.docbook:22
-msgid "Hibernate supports dom4j as API for manipulating XML trees. You can write queries that retrieve dom4j trees from the database and have any modification you make to the tree automatically synchronized to the database. You can even take an XML document, parse it using dom4j, and write it to the database with any of Hibernate's basic operations: <literal>persist(), saveOrUpdate(), merge(), delete(), replicate()</literal> (merging is not yet supported)."
-msgstr "Hibernate는 XML 트리들을 처리하는 API로서 dom4j를 지원한다. 당신은 데이터베이스로부터 dom4j 트리들을 검색하고 당신이 그 트리를 데이터베이스와 자동적으로 동기화시키기 위해 어떤 변경을 행하도록 하는 질의들을 작성할 수 있다. 당신은 심지어 XML 문서를 취하고, dom4j를 사용하여 그것을 파싱하고, Hibernate의 다음 기본적인 오퍼레이션들 중 어떤 것으로서 그것을 데이터베이스에 저장시킬 수 있다: <literal>persist(), saveOrUpdate(), merge(), delete(), replicate()</literal>(merging(병합)은 아직 지원되지 않는다)."
+#. Tag: para
+#: xml.xml:22
+#, no-c-format
+msgid ""
+"Hibernate supports dom4j as API for manipulating XML trees. You can write "
+"queries that retrieve dom4j trees from the database and have any "
+"modification you make to the tree automatically synchronized to the "
+"database. You can even take an XML document, parse it using dom4j, and write "
+"it to the database with any of Hibernate's basic operations: <literal>persist"
+"(), saveOrUpdate(), merge(), delete(), replicate()</literal> (merging is not "
+"yet supported)."
+msgstr ""
+"Hibernate는 XML 트리들을 처리하는 API로서 dom4j를 지원한다. 당신은 데이터베이"
+"스로부터 dom4j 트리들을 검색하고 당신이 그 트리를 데이터베이스와 자동적으로 "
+"동기화시키기 위해 어떤 변경을 행하도록 하는 질의들을 작성할 수 있다. 당신은 "
+"심지어 XML 문서를 취하고, dom4j를 사용하여 그것을 파싱하고, Hibernate의 다음 "
+"기본적인 오퍼레이션들 중 어떤 것으로서 그것을 데이터베이스에 저장시킬 수 있"
+"다: <literal>persist(), saveOrUpdate(), merge(), delete(), replicate()</"
+"literal>(merging(병합)은 아직 지원되지 않는다)."
-#: index.docbook:32
-msgid "This feature has many applications including data import/export, externalization of entity data via JMS or SOAP and XSLT-based reporting."
-msgstr "이 특징은 데이터 가져오기/내보내기,JMS 또는 SOAP 그리고 XSLT-기반의 레포팅을 통한 엔티티 데이터의 구체화를 포함하는 많은 어플리케이션들을 갖는다."
+#. Tag: para
+#: xml.xml:32
+#, no-c-format
+msgid ""
+"This feature has many applications including data import/export, "
+"externalization of entity data via JMS or SOAP and XSLT-based reporting."
+msgstr ""
+"이 특징은 데이터 가져오기/내보내기,JMS 또는 SOAP 그리고 XSLT-기반의 레포팅을 "
+"통한 엔티티 데이터의 구체화를 포함하는 많은 어플리케이션들을 갖는다."
-#: index.docbook:37
-msgid "A single mapping may be used to simultaneously map properties of a class and nodes of an XML document to the database, or, if there is no class to map, it may be used to map just the XML."
-msgstr "하나의 매핑은 클래스들의 프로퍼티들과 XML 문서의 노드들을 데이터베이스로 동시에 매핑시키는데 사용될 수 있거나, 만일 매핑할 클래스가 존재하지 않을 경우, 그것은 단지 XML을 매핑시키는데 사용될 수도 있다."
+#. Tag: para
+#: xml.xml:37
+#, no-c-format
+msgid ""
+"A single mapping may be used to simultaneously map properties of a class and "
+"nodes of an XML document to the database, or, if there is no class to map, "
+"it may be used to map just the XML."
+msgstr ""
+"하나의 매핑은 클래스들의 프로퍼티들과 XML 문서의 노드들을 데이터베이스로 동시"
+"에 매핑시키는데 사용될 수 있거나, 만일 매핑할 클래스가 존재하지 않을 경우, 그"
+"것은 단지 XML을 매핑시키는데 사용될 수도 있다."
-#: index.docbook:44
+#. Tag: title
+#: xml.xml:44
+#, no-c-format
msgid "Specifying XML and class mapping together"
msgstr "XML과 클래스 매핑을 함께 지정하기"
-#: index.docbook:46
+#. Tag: para
+#: xml.xml:46
+#, no-c-format
msgid "Here is an example of mapping a POJO and XML simultaneously:"
msgstr "다음은 POJO와 XML을 동시에 매핑시키는 예제이다 :"
-#: index.docbook:50
+#. Tag: programlisting
+#: xml.xml:50
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Account\" \n"
- " table=\"ACCOUNTS\" \n"
- " node=\"account\">\n"
- " \n"
- " <id name=\"accountId\" \n"
- " column=\"ACCOUNT_ID\" \n"
- " node=\"@id\"/>\n"
- " \n"
- " <many-to-one name=\"customer\" \n"
- " column=\"CUSTOMER_ID\" \n"
- " node=\"customer/@id\" \n"
- " embed-xml=\"false\"/>\n"
- " \n"
- " <property name=\"balance\" \n"
- " column=\"BALANCE\" \n"
- " node=\"balance\"/>\n"
- " \n"
- " ...\n"
- " \n"
- "</class>]]>"
+"<![CDATA[<class name=\"Account\" \n"
+" table=\"ACCOUNTS\" \n"
+" node=\"account\">\n"
+" \n"
+" <id name=\"accountId\" \n"
+" column=\"ACCOUNT_ID\" \n"
+" node=\"@id\"/>\n"
+" \n"
+" <many-to-one name=\"customer\" \n"
+" column=\"CUSTOMER_ID\" \n"
+" node=\"customer/@id\" \n"
+" embed-xml=\"false\"/>\n"
+" \n"
+" <property name=\"balance\" \n"
+" column=\"BALANCE\" \n"
+" node=\"balance\"/>\n"
+" \n"
+" ...\n"
+" \n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Account\" \n"
- " table=\"ACCOUNTS\" \n"
- " node=\"account\">\n"
- " \n"
- " <id name=\"accountId\" \n"
- " column=\"ACCOUNT_ID\" \n"
- " node=\"@id\"/>\n"
- " \n"
- " <many-to-one name=\"customer\" \n"
- " column=\"CUSTOMER_ID\" \n"
- " node=\"customer/@id\" \n"
- " embed-xml=\"false\"/>\n"
- " \n"
- " <property name=\"balance\" \n"
- " column=\"BALANCE\" \n"
- " node=\"balance\"/>\n"
- " \n"
- " ...\n"
- " \n"
- "</class>]]>"
-#: index.docbook:54
+#. Tag: title
+#: xml.xml:54
+#, no-c-format
msgid "Specifying only an XML mapping"
msgstr "XML 매핑만을 지정하기"
-#: index.docbook:56
+#. Tag: para
+#: xml.xml:56
+#, no-c-format
msgid "Here is an example where there is no POJO class:"
msgstr "다음은 POJO 클래스가 존재하지 않는 예제이다:"
-#: index.docbook:60
+#. Tag: programlisting
+#: xml.xml:60
+#, no-c-format
msgid ""
- "<![CDATA[<class entity-name=\"Account\" \n"
- " table=\"ACCOUNTS\" \n"
- " node=\"account\">\n"
- " \n"
- " <id name=\"id\" \n"
- " column=\"ACCOUNT_ID\" \n"
- " node=\"@id\" \n"
- " type=\"string\"/>\n"
- " \n"
- " <many-to-one name=\"customerId\" \n"
- " column=\"CUSTOMER_ID\" \n"
- " node=\"customer/@id\" \n"
- " embed-xml=\"false\" \n"
- " entity-name=\"Customer\"/>\n"
- " \n"
- " <property name=\"balance\" \n"
- " column=\"BALANCE\" \n"
- " node=\"balance\" \n"
- " type=\"big_decimal\"/>\n"
- " \n"
- " ...\n"
- " \n"
- "</class>]]>"
+"<![CDATA[<class entity-name=\"Account\" \n"
+" table=\"ACCOUNTS\" \n"
+" node=\"account\">\n"
+" \n"
+" <id name=\"id\" \n"
+" column=\"ACCOUNT_ID\" \n"
+" node=\"@id\" \n"
+" type=\"string\"/>\n"
+" \n"
+" <many-to-one name=\"customerId\" \n"
+" column=\"CUSTOMER_ID\" \n"
+" node=\"customer/@id\" \n"
+" embed-xml=\"false\" \n"
+" entity-name=\"Customer\"/>\n"
+" \n"
+" <property name=\"balance\" \n"
+" column=\"BALANCE\" \n"
+" node=\"balance\" \n"
+" type=\"big_decimal\"/>\n"
+" \n"
+" ...\n"
+" \n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class entity-name=\"Account\" \n"
- " table=\"ACCOUNTS\" \n"
- " node=\"account\">\n"
- " \n"
- " <id name=\"id\" \n"
- " column=\"ACCOUNT_ID\" \n"
- " node=\"@id\" \n"
- " type=\"string\"/>\n"
- " \n"
- " <many-to-one name=\"customerId\" \n"
- " column=\"CUSTOMER_ID\" \n"
- " node=\"customer/@id\" \n"
- " embed-xml=\"false\" \n"
- " entity-name=\"Customer\"/>\n"
- " \n"
- " <property name=\"balance\" \n"
- " column=\"BALANCE\" \n"
- " node=\"balance\" \n"
- " type=\"big_decimal\"/>\n"
- " \n"
- " ...\n"
- " \n"
- "</class>]]>"
-#: index.docbook:62
-msgid "This mapping allows you to access the data as a dom4j tree, or as a graph of property name/value pairs (java <literal>Map</literal>s). The property names are purely logical constructs that may be referred to in HQL queries."
-msgstr "이 매핑은 dom4j 트리로서 또는 프로퍼티 name/value 쌍들(java <literal>Map</literal>들)의 그래프로서 데이터에 접근하는 것을 당신에게 허용해준다. 프로퍼티 이름들은 HQL 질의들 내에서 참조될 수도 있는 순수하게 논리적인 구조체들이다."
+#. Tag: para
+#: xml.xml:62
+#, no-c-format
+msgid ""
+"This mapping allows you to access the data as a dom4j tree, or as a graph of "
+"property name/value pairs (java <literal>Map</literal>s). The property names "
+"are purely logical constructs that may be referred to in HQL queries."
+msgstr ""
+"이 매핑은 dom4j 트리로서 또는 프로퍼티 name/value 쌍들(java <literal>Map</"
+"literal>들)의 그래프로서 데이터에 접근하는 것을 당신에게 허용해준다. 프로퍼"
+"티 이름들은 HQL 질의들 내에서 참조될 수도 있는 순수하게 논리적인 구조체들이"
+"다."
-#: index.docbook:73
+#. Tag: title
+#: xml.xml:73
+#, no-c-format
msgid "XML mapping metadata"
msgstr "XML 매핑 메타데이터"
-#: index.docbook:75
-msgid "Many Hibernate mapping elements accept the <literal>node</literal> attribute. This let's you specify the name of an XML attribute or element that holds the property or entity data. The format of the <literal>node</literal> attribute must be one of the following:"
-msgstr "많은 Hibernate 매핑 요소들은 <literal>node</literal> 속성을 수용한다. 이것은 당신이 프로퍼티 또는 엔티티 데이터를 소유하는 XML 속성이나 요소의 이름을 지정하도록 한다. <literal>node</literal> 속성의 포맷은 다음 중 하나이어야 한다:"
+#. Tag: para
+#: xml.xml:75
+#, no-c-format
+msgid ""
+"Many Hibernate mapping elements accept the <literal>node</literal> "
+"attribute. This let's you specify the name of an XML attribute or element "
+"that holds the property or entity data. The format of the <literal>node</"
+"literal> attribute must be one of the following:"
+msgstr ""
+"많은 Hibernate 매핑 요소들은 <literal>node</literal> 속성을 수용한다. 이것은 "
+"당신이 프로퍼티 또는 엔티티 데이터를 소유하는 XML 속성이나 요소의 이름을 지정"
+"하도록 한다. <literal>node</literal> 속성의 포맷은 다음 중 하나이어야 한다:"
-#: index.docbook:84
+#. Tag: para
+#: xml.xml:84
+#, no-c-format
msgid "<literal>\"element-name\"</literal> - map to the named XML element"
msgstr "<literal>\"element-name\"</literal> - 명명된 XML 요소로 매핑시킨다"
-#: index.docbook:87
+#. Tag: para
+#: xml.xml:87
+#, no-c-format
msgid "<literal>\"@attribute-name\"</literal> - map to the named XML attribute"
-msgstr "<literal>\"@attribute-name\"</literal> - 명명된 XML 속성으로 매핑시킨다"
+msgstr ""
+"<literal>\"@attribute-name\"</literal> - 명명된 XML 속성으로 매핑시킨다"
-#: index.docbook:90
+#. Tag: para
+#: xml.xml:90
+#, no-c-format
msgid "<literal>\".\"</literal> - map to the parent element"
msgstr "<literal>\".\"</literal> - 부모 요소로 매핑 시킨다"
-#: index.docbook:93
-msgid "<literal>\"element-name/@attribute-name\"</literal> - map to the named attribute of the named element"
-msgstr "<literal>\"element-name/@attribute-name\"</literal> - 명명된 요소의 명명된 속성으로 매핑시킨다"
+#. Tag: para
+#: xml.xml:93
+#, no-c-format
+msgid ""
+"<literal>\"element-name/@attribute-name\"</literal> - map to the named "
+"attribute of the named element"
+msgstr ""
+"<literal>\"element-name/@attribute-name\"</literal> - 명명된 요소의 명명된 속"
+"성으로 매핑시킨다"
-#: index.docbook:100
-msgid "For collections and single valued associations, there is an additional <literal>embed-xml</literal> attribute. If <literal>embed-xml=\"true\"</literal>, the default, the XML tree for the associated entity (or collection of value type) will be embedded directly in the XML tree for the entity that owns the association. Otherwise, if <literal>embed-xml=\"false\"</literal>, then only the referenced identifier value will appear in the XML for single point associations and collections will simply not appear at all."
-msgstr "콜렉션들과 단일 값 콜렉션들의 경우, 추가적인 <literal>embed-xml</literal> 속성이 존재한다. 만일 <literal>embed-xml=\"true\"</literal> 일 경우, 연관된 엔티티(또는 value 타입을 가진 콜렉션)에 대한 디폴트 XML 트리는 그 연관을 소유하는 엔티티에 대한 XML 트리 속에 직접 삽입될 것이다. 그 밖의 경우 <literal>embed-xml=\"false\"</literal> 일 경우, 참조된 식별자 값 만이 단일 포인트 연관들에 대해 나타날 것이고 콜렉션들은 단순히 전혀 나타나지 않을 것이다."
+#. Tag: para
+#: xml.xml:100
+#, no-c-format
+msgid ""
+"For collections and single valued associations, there is an additional "
+"<literal>embed-xml</literal> attribute. If <literal>embed-xml=\"true\"</"
+"literal>, the default, the XML tree for the associated entity (or collection "
+"of value type) will be embedded directly in the XML tree for the entity that "
+"owns the association. Otherwise, if <literal>embed-xml=\"false\"</literal>, "
+"then only the referenced identifier value will appear in the XML for single "
+"point associations and collections will simply not appear at all."
+msgstr ""
+"콜렉션들과 단일 값 콜렉션들의 경우, 추가적인 <literal>embed-xml</literal> 속"
+"성이 존재한다. 만일 <literal>embed-xml=\"true\"</literal> 일 경우, 연관된 엔"
+"티티(또는 value 타입을 가진 콜렉션)에 대한 디폴트 XML 트리는 그 연관을 소유하"
+"는 엔티티에 대한 XML 트리 속에 직접 삽입될 것이다. 그 밖의 경우 "
+"<literal>embed-xml=\"false\"</literal> 일 경우, 참조된 식별자 값 만이 단일 포"
+"인트 연관들에 대해 나타날 것이고 콜렉션들은 단순히 전혀 나타나지 않을 것이다."
-#: index.docbook:110
-msgid "You should be careful not to leave <literal>embed-xml=\"true\"</literal> for too many associations, since XML does not deal well with circularity!"
-msgstr "당신은 너무 많은 연관들에 대해 <literal>embed-xml=\"true\"</literal>로 남겨두지 말도록 주의해야 한다. 왜냐하면 XML이 순환적으로 잘 처리하지 못하기 때문이다!"
+#. Tag: para
+#: xml.xml:110
+#, no-c-format
+msgid ""
+"You should be careful not to leave <literal>embed-xml=\"true\"</literal> for "
+"too many associations, since XML does not deal well with circularity!"
+msgstr ""
+"당신은 너무 많은 연관들에 대해 <literal>embed-xml=\"true\"</literal>로 남겨두"
+"지 말도록 주의해야 한다. 왜냐하면 XML이 순환적으로 잘 처리하지 못하기 때문이"
+"다!"
-#: index.docbook:115
+#. Tag: programlisting
+#: xml.xml:115
+#, no-c-format
msgid ""
- "<![CDATA[<class name=\"Customer\" \n"
- " table=\"CUSTOMER\" \n"
- " node=\"customer\">\n"
- " \n"
- " <id name=\"id\" \n"
- " column=\"CUST_ID\" \n"
- " node=\"@id\"/>\n"
- " \n"
- " <map name=\"accounts\" \n"
- " node=\".\" \n"
- " embed-xml=\"true\">\n"
- " <key column=\"CUSTOMER_ID\" \n"
- " not-null=\"true\"/>\n"
- " <map-key column=\"SHORT_DESC\" \n"
- " node=\"@short-desc\" \n"
- " type=\"string\"/>\n"
- " <one-to-many entity-name=\"Account\"\n"
- " embed-xml=\"false\" \n"
- " node=\"account\"/>\n"
- " </map>\n"
- " \n"
- " <component name=\"name\" \n"
- " node=\"name\">\n"
- " <property name=\"firstName\" \n"
- " node=\"first-name\"/>\n"
- " <property name=\"initial\" \n"
- " node=\"initial\"/>\n"
- " <property name=\"lastName\" \n"
- " node=\"last-name\"/>\n"
- " </component>\n"
- " \n"
- " ...\n"
- " \n"
- "</class>]]>"
+"<![CDATA[<class name=\"Customer\" \n"
+" table=\"CUSTOMER\" \n"
+" node=\"customer\">\n"
+" \n"
+" <id name=\"id\" \n"
+" column=\"CUST_ID\" \n"
+" node=\"@id\"/>\n"
+" \n"
+" <map name=\"accounts\" \n"
+" node=\".\" \n"
+" embed-xml=\"true\">\n"
+" <key column=\"CUSTOMER_ID\" \n"
+" not-null=\"true\"/>\n"
+" <map-key column=\"SHORT_DESC\" \n"
+" node=\"@short-desc\" \n"
+" type=\"string\"/>\n"
+" <one-to-many entity-name=\"Account\"\n"
+" embed-xml=\"false\" \n"
+" node=\"account\"/>\n"
+" </map>\n"
+" \n"
+" <component name=\"name\" \n"
+" node=\"name\">\n"
+" <property name=\"firstName\" \n"
+" node=\"first-name\"/>\n"
+" <property name=\"initial\" \n"
+" node=\"initial\"/>\n"
+" <property name=\"lastName\" \n"
+" node=\"last-name\"/>\n"
+" </component>\n"
+" \n"
+" ...\n"
+" \n"
+"</class>]]>"
msgstr ""
- "<![CDATA[<class name=\"Customer\" \n"
- " table=\"CUSTOMER\" \n"
- " node=\"customer\">\n"
- " \n"
- " <id name=\"id\" \n"
- " column=\"CUST_ID\" \n"
- " node=\"@id\"/>\n"
- " \n"
- " <map name=\"accounts\" \n"
- " node=\".\" \n"
- " embed-xml=\"true\">\n"
- " <key column=\"CUSTOMER_ID\" \n"
- " not-null=\"true\"/>\n"
- " <map-key column=\"SHORT_DESC\" \n"
- " node=\"@short-desc\" \n"
- " type=\"string\"/>\n"
- " <one-to-many entity-name=\"Account\"\n"
- " embed-xml=\"false\" \n"
- " node=\"account\"/>\n"
- " </map>\n"
- " \n"
- " <component name=\"name\" \n"
- " node=\"name\">\n"
- " <property name=\"firstName\" \n"
- " node=\"first-name\"/>\n"
- " <property name=\"initial\" \n"
- " node=\"initial\"/>\n"
- " <property name=\"lastName\" \n"
- " node=\"last-name\"/>\n"
- " </component>\n"
- " \n"
- " ...\n"
- " \n"
- "</class>]]>"
-#: index.docbook:117
-msgid "in this case, we have decided to embed the collection of account ids, but not the actual account data. The following HQL query:"
-msgstr "이 경우에, 우리는 실제 account 데이터가 아닌, account id들을 가진 콜렉션을 삽입시키기로 결정했다. 다음 HQL 질의:"
+#. Tag: para
+#: xml.xml:117
+#, no-c-format
+msgid ""
+"in this case, we have decided to embed the collection of account ids, but "
+"not the actual account data. The following HQL query:"
+msgstr ""
+"이 경우에, 우리는 실제 account 데이터가 아닌, account id들을 가진 콜렉션을 삽"
+"입시키기로 결정했다. 다음 HQL 질의:"
-#: index.docbook:122
-msgid "<![CDATA[from Customer c left join fetch c.accounts where c.lastName like :lastName]]>"
-msgstr "<![CDATA[from Customer c left join fetch c.accounts where c.lastName like :lastName]]>"
+#. Tag: programlisting
+#: xml.xml:122
+#, no-c-format
+msgid ""
+"<![CDATA[from Customer c left join fetch c.accounts where c.lastName like :"
+"lastName]]>"
+msgstr ""
-#: index.docbook:124
+#. Tag: para
+#: xml.xml:124
+#, no-c-format
msgid "Would return datasets such as this:"
msgstr "는 다음과 같은 데이터셋들을 반환할 것이다:"
-#: index.docbook:128
+#. Tag: programlisting
+#: xml.xml:128
+#, no-c-format
msgid ""
- "<![CDATA[<customer id=\"123456789\">\n"
- " <account short-desc=\"Savings\">987632567</account>\n"
- " <account short-desc=\"Credit Card\">985612323</account>\n"
- " <name>\n"
- " <first-name>Gavin</first-name>\n"
- " <initial>A</initial>\n"
- " <last-name>King</last-name>\n"
- " </name>\n"
- " ...\n"
- "</customer>]]>"
+"<![CDATA[<customer id=\"123456789\">\n"
+" <account short-desc=\"Savings\">987632567</account>\n"
+" <account short-desc=\"Credit Card\">985612323</account>\n"
+" <name>\n"
+" <first-name>Gavin</first-name>\n"
+" <initial>A</initial>\n"
+" <last-name>King</last-name>\n"
+" </name>\n"
+" ...\n"
+"</customer>]]>"
msgstr ""
- "<![CDATA[<customer id=\"123456789\">\n"
- " <account short-desc=\"Savings\">987632567</account>\n"
- " <account short-desc=\"Credit Card\">985612323</account>\n"
- " <name>\n"
- " <first-name>Gavin</first-name>\n"
- " <initial>A</initial>\n"
- " <last-name>King</last-name>\n"
- " </name>\n"
- " ...\n"
- "</customer>]]>"
-#: index.docbook:130
-msgid "If you set <literal>embed-xml=\"true\"</literal> on the <literal><one-to-many></literal> mapping, the data might look more like this:"
-msgstr "만일 당신이 <literal><one-to-many></literal> 매핑에 대해 <literal>embed-xml=\"true\"</literal>를 설정할 경우, 데이터는 다음과 같이 보일 수도 있다:"
+#. Tag: para
+#: xml.xml:130
+#, no-c-format
+msgid ""
+"If you set <literal>embed-xml=\"true\"</literal> on the <literal><one-to-"
+"many></literal> mapping, the data might look more like this:"
+msgstr ""
+"만일 당신이 <literal><one-to-many></literal> 매핑에 대해 "
+"<literal>embed-xml=\"true\"</literal>를 설정할 경우, 데이터는 다음과 같이 보"
+"일 수도 있다:"
-#: index.docbook:135
+#. Tag: programlisting
+#: xml.xml:135
+#, no-c-format
msgid ""
- "<![CDATA[<customer id=\"123456789\">\n"
- " <account id=\"987632567\" short-desc=\"Savings\">\n"
- " <customer id=\"123456789\"/>\n"
- " <balance>100.29</balance>\n"
- " </account>\n"
- " <account id=\"985612323\" short-desc=\"Credit Card\">\n"
- " <customer id=\"123456789\"/>\n"
- " <balance>-2370.34</balance>\n"
- " </account>\n"
- " <name>\n"
- " <first-name>Gavin</first-name>\n"
- " <initial>A</initial>\n"
- " <last-name>King</last-name>\n"
- " </name>\n"
- " ...\n"
- "</customer>]]>"
+"<![CDATA[<customer id=\"123456789\">\n"
+" <account id=\"987632567\" short-desc=\"Savings\">\n"
+" <customer id=\"123456789\"/>\n"
+" <balance>100.29</balance>\n"
+" </account>\n"
+" <account id=\"985612323\" short-desc=\"Credit Card\">\n"
+" <customer id=\"123456789\"/>\n"
+" <balance>-2370.34</balance>\n"
+" </account>\n"
+" <name>\n"
+" <first-name>Gavin</first-name>\n"
+" <initial>A</initial>\n"
+" <last-name>King</last-name>\n"
+" </name>\n"
+" ...\n"
+"</customer>]]>"
msgstr ""
- "<![CDATA[<customer id=\"123456789\">\n"
- " <account id=\"987632567\" short-desc=\"Savings\">\n"
- " <customer id=\"123456789\"/>\n"
- " <balance>100.29</balance>\n"
- " </account>\n"
- " <account id=\"985612323\" short-desc=\"Credit Card\">\n"
- " <customer id=\"123456789\"/>\n"
- " <balance>-2370.34</balance>\n"
- " </account>\n"
- " <name>\n"
- " <first-name>Gavin</first-name>\n"
- " <initial>A</initial>\n"
- " <last-name>King</last-name>\n"
- " </name>\n"
- " ...\n"
- "</customer>]]>"
-#: index.docbook:141
+#. Tag: title
+#: xml.xml:141
+#, no-c-format
msgid "Manipulating XML data"
msgstr "XML 데이터 처리하기"
-#: index.docbook:143
-msgid "Let's rearead and update XML documents in the application. We do this by obtaining a dom4j session:"
-msgstr "우리의 어플리케이션 내에서 XML 문서들을 다시 읽어들이고 업데이트 시키자. 우리는 dom4j 세션을 얻어서 이것을 행한다:"
+#. Tag: para
+#: xml.xml:143
+#, no-c-format
+msgid ""
+"Let's rearead and update XML documents in the application. We do this by "
+"obtaining a dom4j session:"
+msgstr ""
+"우리의 어플리케이션 내에서 XML 문서들을 다시 읽어들이고 업데이트 시키자. 우리"
+"는 dom4j 세션을 얻어서 이것을 행한다:"
-#: index.docbook:148
+#. Tag: programlisting
+#: xml.xml:148
+#, no-c-format
msgid ""
- "<![CDATA[Document doc = ....;\n"
- " \n"
- "Session session = factory.openSession();\n"
- "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
- "Transaction tx = session.beginTransaction();\n"
- "\n"
- "List results = dom4jSession\n"
- " .createQuery(\"from Customer c left join fetch c.accounts where c.lastName like :lastName\")\n"
- " .list();\n"
- "for ( int i=0; i<results.size(); i++ ) {\n"
- " //add the customer data to the XML document\n"
- " Element customer = (Element) results.get(i);\n"
- " doc.add(customer);\n"
- "}\n"
- "\n"
- "tx.commit();\n"
- "session.close();]]>"
+"<![CDATA[Document doc = ....;\n"
+" \n"
+"Session session = factory.openSession();\n"
+"Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
+"Transaction tx = session.beginTransaction();\n"
+"\n"
+"List results = dom4jSession\n"
+" .createQuery(\"from Customer c left join fetch c.accounts where c."
+"lastName like :lastName\")\n"
+" .list();\n"
+"for ( int i=0; i<results.size(); i++ ) {\n"
+" //add the customer data to the XML document\n"
+" Element customer = (Element) results.get(i);\n"
+" doc.add(customer);\n"
+"}\n"
+"\n"
+"tx.commit();\n"
+"session.close();]]>"
msgstr ""
- "<![CDATA[Document doc = ....;\n"
- " \n"
- "Session session = factory.openSession();\n"
- "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
- "Transaction tx = session.beginTransaction();\n"
- "\n"
- "List results = dom4jSession\n"
- " .createQuery(\"from Customer c left join fetch c.accounts where c.lastName like :lastName\")\n"
- " .list();\n"
- "for ( int i=0; i<results.size(); i++ ) {\n"
- " //add the customer data to the XML document\n"
- " Element customer = (Element) results.get(i);\n"
- " doc.getRootElement().add(customer);\n"
- "}\n"
- "\n"
- "tx.commit();\n"
- "session.close();]]>"
-#: index.docbook:150
+#. Tag: programlisting
+#: xml.xml:150
+#, no-c-format
msgid ""
- "<![CDATA[Session session = factory.openSession();\n"
- "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
- "Transaction tx = session.beginTransaction();\n"
- "\n"
- "Element cust = (Element) dom4jSession.get(\"Customer\", customerId);\n"
- "for ( int i=0; i<results.size(); i++ ) {\n"
- " Element customer = (Element) results.get(i);\n"
- " //change the customer name in the XML and database\n"
- " Element name = customer.element(\"name\");\n"
- " name.element(\"first-name\").setText(firstName);\n"
- " name.element(\"initial\").setText(initial);\n"
- " name.element(\"last-name\").setText(lastName);\n"
- "}\n"
- "\n"
- "tx.commit();\n"
- "session.close();]]>"
+"<![CDATA[Session session = factory.openSession();\n"
+"Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
+"Transaction tx = session.beginTransaction();\n"
+"\n"
+"Element cust = (Element) dom4jSession.get(\"Customer\", customerId);\n"
+"for ( int i=0; i<results.size(); i++ ) {\n"
+" Element customer = (Element) results.get(i);\n"
+" //change the customer name in the XML and database\n"
+" Element name = customer.element(\"name\");\n"
+" name.element(\"first-name\").setText(firstName);\n"
+" name.element(\"initial\").setText(initial);\n"
+" name.element(\"last-name\").setText(lastName);\n"
+"}\n"
+"\n"
+"tx.commit();\n"
+"session.close();]]>"
msgstr ""
- "<![CDATA[Session session = factory.openSession();\n"
- "Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
- "Transaction tx = session.beginTransaction();\n"
- "\n"
- "Element cust = (Element) dom4jSession.get(\"Customer\", customerId);\n"
- "for ( int i=0; i<results.size(); i++ ) {\n"
- " Element customer = (Element) results.get(i);\n"
- " //change the customer name in the XML and database\n"
- " Element name = customer.element(\"name\");\n"
- " name.element(\"first-name\").setText(firstName);\n"
- " name.element(\"initial\").setText(initial);\n"
- " name.element(\"last-name\").setText(lastName);\n"
- "}\n"
- "\n"
- "tx.commit();\n"
- "session.close();]]>"
-#: index.docbook:152
-msgid "It is extremely useful to combine this feature with Hibernate's <literal>replicate()</literal> operation to implement XML-based data import/export."
-msgstr "XML 기반의 데이터 가져오기/내보내기를 구현하는데 이 특징과 Hibernate의 <literal>replicate()</literal> 오퍼레이션을 결합시키는 것이 매우 유용하다."
-
-msgid "ROLES_OF_TRANSLATORS"
-msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
-
-msgid "CREDIT_FOR_TRANSLATORS"
-msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
-
+#. Tag: para
+#: xml.xml:152
+#, no-c-format
+msgid ""
+"It is extremely useful to combine this feature with Hibernate's "
+"<literal>replicate()</literal> operation to implement XML-based data import/"
+"export."
+msgstr ""
+"XML 기반의 데이터 가져오기/내보내기를 구현하는데 이 특징과 Hibernate의 "
+"<literal>replicate()</literal> 오퍼레이션을 결합시키는 것이 매우 유용하다."
18 years, 6 months
Hibernate SVN: r14148 - core/trunk/documentation/manual/ko-KR/src/main/docbook/content.
by hibernate-commits@lists.jboss.org
Author: xhuang(a)jboss.com
Date: 2007-10-26 23:41:26 -0400 (Fri, 26 Oct 2007)
New Revision: 14148
Modified:
core/trunk/documentation/manual/ko-KR/src/main/docbook/content/architecture.xml
core/trunk/documentation/manual/ko-KR/src/main/docbook/content/basic_mapping.xml
core/trunk/documentation/manual/ko-KR/src/main/docbook/content/configuration.xml
core/trunk/documentation/manual/ko-KR/src/main/docbook/content/events.xml
core/trunk/documentation/manual/ko-KR/src/main/docbook/content/performance.xml
core/trunk/documentation/manual/ko-KR/src/main/docbook/content/persistent_classes.xml
core/trunk/documentation/manual/ko-KR/src/main/docbook/content/session_api.xml
Log:
match to latest English XML
Modified: core/trunk/documentation/manual/ko-KR/src/main/docbook/content/architecture.xml
===================================================================
--- core/trunk/documentation/manual/ko-KR/src/main/docbook/content/architecture.xml 2007-10-26 19:17:01 UTC (rev 14147)
+++ core/trunk/documentation/manual/ko-KR/src/main/docbook/content/architecture.xml 2007-10-27 03:41:26 UTC (rev 14148)
@@ -284,7 +284,14 @@
<literal>org.hibernate.context.ThreadLocalSessionContext</literal> - 현재의 세션들은
실행 쓰레드에 의해 추적된다. 상세한 것은 다시 javadocs를 보라.
</para>
- </listitem>
+ </listitem> <listitem>
+ <para> NOT TRANSLATED!
+ <literal>org.hibernate.context.ManagedSessionContext</literal> - current
+ sessions are tracked by thread of execution. However, you are responsible to
+ bind and unbind a <literal>Session</literal> instance with static methods
+ on this class, it does never open, flush, or close a <literal>Session</literal>.
+ </para>
+ </listitem>
</itemizedlist>
<para>
처음의 두 구현들은 <emphasis>session-per-request</emphasis>로 알려지고 사용되고 있는
Modified: core/trunk/documentation/manual/ko-KR/src/main/docbook/content/basic_mapping.xml
===================================================================
--- core/trunk/documentation/manual/ko-KR/src/main/docbook/content/basic_mapping.xml 2007-10-26 19:17:01 UTC (rev 14147)
+++ core/trunk/documentation/manual/ko-KR/src/main/docbook/content/basic_mapping.xml 2007-10-27 03:41:26 UTC (rev 14148)
@@ -862,7 +862,175 @@
</sect3>
</sect2>
+
+ <sect2 id="mapping-declaration-id-enhanced">
+ <title>NOT TRANSLATED!Enhanced identifier generators</title>
+
+ <para>
+ Starting with release 3.2.3, there are 2 new generators which represent a re-thinking of 2 different
+ aspects of identifier generation. The first aspect is database portability; the second is optimization
+ (not having to query the database for every request for a new identifier value). These two new
+ generators are intended to take the place of some of the named generators described above (starting
+ in 3.3.x); however, they are included in the current releases and can be referenced by FQN.
+ </para>
+
+ <para>
+ The first of these new generators is <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</literal>
+ which is intended firstly as a replacement for the <literal>sequence</literal> generator and secondly as
+ a better portability generator than <literal>native</literal> (because <literal>native</literal>
+ (generally) chooses between <literal>identity</literal> and <literal>sequence</literal> which have
+ largely different semantics which can cause subtle isssues in applications eyeing portability).
+ <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</literal> however achieves portability in
+ a different manner. It chooses between using a table or a sequence in the database to store its
+ incrementing values depending on the capabilities of the dialect being used. The difference between this
+ and <literal>native</literal> is that table-based and sequence-based storage have the same exact
+ semantic (in fact sequences are exactly what Hibernate tries to emmulate with its table-based
+ generators). This generator has a number of configuration parameters:
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>sequence_name</literal> (optional, defaults to <literal>hibernate_sequence</literal>):
+ The name of the sequence (or table) to be used.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>initial_value</literal> (optional, defaults to <literal>1</literal>): The initial
+ value to be retrieved from the sequence/table. In sequence creation terms, this is analogous
+ to the clause typical named "STARTS WITH".
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>increment_size</literal> (optional, defaults to <literal>1</literal>): The value by
+ which subsequent calls to the sequence/table should differ. In sequence creation terms, this
+ is analogous to the clause typical named "INCREMENT BY".
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>force_table_use</literal> (optional, defaults to <literal>false</literal>): Should
+ we force the use of a table as the backing structure even though the dialect might support
+ sequence?
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>value_column</literal> (optional, defaults to <literal>next_val</literal>): Only
+ relevant for table structures! The name of the column on the table which is used to
+ hold the value.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>optimizer</literal> (optional, defaults to <literal>none</literal>):
+ See <xref linkend="mapping-declaration-id-enhanced-optimizers"/>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ The second of these new generators is <literal>org.hibernate.id.enhanced.TableGenerator</literal> which
+ is intended firstly as a replacement for the <literal>table</literal> generator (although it actually
+ functions much more like <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal>) and secondly
+ as a re-implementation of <literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal> utilizing the
+ notion of pluggable optimiziers. Essentially this generator defines a table capable of holding
+ a number of different increment values simultaneously by using multiple distinctly keyed rows. This
+ generator has a number of configuration parameters:
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>table_name</literal> (optional, defaults to <literal>hibernate_sequences</literal>):
+ The name of the table to be used.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>value_column_name</literal> (optional, defaults to <literal>next_val</literal>):
+ The name of the column on the table which is used to hold the value.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>segment_column_name</literal> (optional, defaults to <literal>sequence_name</literal>):
+ The name of the column on the table which is used to hold the "segement key". This is the
+ value which distinctly identifies which increment value to use.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>segment_value</literal> (optional, defaults to <literal>default</literal>):
+ The "segment key" value for the segment from which we want to pull increment values for
+ this generator.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>segment_value_length</literal> (optional, defaults to <literal>255</literal>):
+ Used for schema generation; the column size to create this segment key column.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>initial_value</literal> (optional, defaults to <literal>1</literal>):
+ The initial value to be retrieved from the table.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>increment_size</literal> (optional, defaults to <literal>1</literal>):
+ The value by which subsequent calls to the table should differ.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>optimizer</literal> (optional, defaults to <literal></literal>):
+ See <xref linkend="mapping-declaration-id-enhanced-optimizers"/>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect2>
+
+ <sect2 id="mapping-declaration-id-enhanced-optimizers">
+ <title>NOT TRANSLATED! Identifier generator optimization</title>
+ <para>
+ For identifier generators which store values in the database, it is inefficient for them to hit the
+ database on each and every call to generate a new identifier value. Instead, you'd ideally want to
+ group a bunch of them in memory and only hit the database when you have exhausted your in-memory
+ value group. This is the role of the pluggable optimizers. Currently only the two enhanced generators
+ (<xref linkend="mapping-declaration-id-enhanced"/> support this notion.
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>none</literal> (generally this is the default if no optimizer was specified): This
+ says to not perform any optimizations, and hit the database each and every request.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>hilo</literal>: applies a hi/lo algorithm around the database retrieved values. The
+ values from the database for this optimizer are expected to be sequential. The values
+ retrieved from the database structure for this optimizer indicates the "group number"; the
+ <literal>increment_size</literal> is multiplied by that value in memory to define a group
+ "hi value".
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>pooled</literal>: like was discussed for <literal>hilo</literal>, this optimizers
+ attempts to minimize the number of hits to the database. Here, however, we simply store
+ the starting value for the "next group" into the database structure rather than a sequential
+ value in combination with an in-memory grouping algorithm. <literal>increment_size</literal>
+ here refers to the values coming from the database.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect2>
+
+
<sect2 id="mapping-declaration-compositeid" revision="3">
<title>composite-id</title>
Modified: core/trunk/documentation/manual/ko-KR/src/main/docbook/content/configuration.xml
===================================================================
--- core/trunk/documentation/manual/ko-KR/src/main/docbook/content/configuration.xml 2007-10-26 19:17:01 UTC (rev 14147)
+++ core/trunk/documentation/manual/ko-KR/src/main/docbook/content/configuration.xml 2007-10-27 03:41:26 UTC (rev 14148)
@@ -581,8 +581,7 @@
<literal>hibernate.jdbc.use_streams_for_binary</literal>
</entry>
<entry>
- <literal>binary</literal> 또는 <literal>serializable</literal> 타입들을 JDBC로 기록하고
- /JDBC로부터 <literal>binary</literal> 또는 <literal>serializable</literal> 타입들을 읽어들일 때
+ FUZZY! <literal>binary</literal> 또는 <literal>serializable</literal> 타입들을 읽어들일 때
스트림들을 사용한다(시스템-레벨 프로퍼티).
<para>
<emphasis role="strong">예.</emphasis>
Modified: core/trunk/documentation/manual/ko-KR/src/main/docbook/content/events.xml
===================================================================
--- core/trunk/documentation/manual/ko-KR/src/main/docbook/content/events.xml 2007-10-26 19:17:01 UTC (rev 14147)
+++ core/trunk/documentation/manual/ko-KR/src/main/docbook/content/events.xml 2007-10-27 03:41:26 UTC (rev 14148)
@@ -121,12 +121,7 @@
<programlisting><![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]></programlisting>
- <para>
- 당신은 또한 <literal>Configuration</literal>을 사용하여 인터셉터를 전역 레벨 상에 설정할 수도 있다.
- 이 경우에, 인터셉터는 threadsafe이어야 한다.
- </para>
-
- <programlisting><![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]></programlisting>
+
<para>
<literal>SessionFactory</literal>-영역의 인터셉터는 <literal>SessionFactory</literal>을 빌드하기에 앞서
Modified: core/trunk/documentation/manual/ko-KR/src/main/docbook/content/performance.xml
===================================================================
--- core/trunk/documentation/manual/ko-KR/src/main/docbook/content/performance.xml 2007-10-26 19:17:01 UTC (rev 14147)
+++ core/trunk/documentation/manual/ko-KR/src/main/docbook/content/performance.xml 2007-10-27 03:41:26 UTC (rev 14148)
@@ -635,7 +635,7 @@
<entry>OSCache</entry>
<entry><literal>org.hibernate.cache.OSCacheProvider</literal></entry>
<entry>memory, disk</entry>
- <entry>yes (clustered invalidation)</entry>
+ <entry></entry>
<entry>yes</entry>
</row>
<row>
Modified: core/trunk/documentation/manual/ko-KR/src/main/docbook/content/persistent_classes.xml
===================================================================
--- core/trunk/documentation/manual/ko-KR/src/main/docbook/content/persistent_classes.xml 2007-10-26 19:17:01 UTC (rev 14147)
+++ core/trunk/documentation/manual/ko-KR/src/main/docbook/content/persistent_classes.xml 2007-10-27 03:41:26 UTC (rev 14148)
@@ -155,9 +155,7 @@
<para>
<literal>Session.merge()</literal>
</para>
- <para>
- 를 보라
- </para>
+
</listitem>
</itemizedlist>
Modified: core/trunk/documentation/manual/ko-KR/src/main/docbook/content/session_api.xml
===================================================================
--- core/trunk/documentation/manual/ko-KR/src/main/docbook/content/session_api.xml 2007-10-26 19:17:01 UTC (rev 14147)
+++ core/trunk/documentation/manual/ko-KR/src/main/docbook/content/session_api.xml 2007-10-27 03:41:26 UTC (rev 14148)
@@ -84,6 +84,28 @@
호출하기 전에 그 식별자가<literal>cat</literal> 인스턴스에 할당될 것이다. 당신은 또한 EJB3 초기 드래프트에서
정의된 의미로 <literal>save()</literal> 대신 <literal>persist()</literal>를 사용할 수도 있다.
</para>
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para> UNTRANSLATED!
+ <literal>persist()</literal> makes a transient instance persistent.
+ However, it doesn't guarantee that the identifier value will be assigned to
+ the persistent instance immediately, the assignment might happen at flush time.
+ <literal>persist()</literal> also guarantees that it will not execute an
+ <literal>INSERT</literal> statement if it is called outside of transaction
+ boundaries. This is useful in long-running conversations with an extended
+ Session/persistence context.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>save()</literal> does guarantee to return an identifier. If an INSERT
+ has to be executed to get the identifier ( e.g. "identity" generator, not
+ "sequence"), this INSERT happens immediately, no matter if you are inside or
+ outside of a transaction. This is problematic in a long-running conversation
+ with an extended Session/persistence context.
+ </para>
+ </listitem>
+ </itemizedlist>
<para>
다른 방법으로, 당신은 <literal>save()</literal>의 오버로드된 버전을 사용하여 식별자를 할당할 수 있다.
@@ -279,8 +301,8 @@
while ( kittensAndMothers.hasNext() ) {
Object[] tuple = (Object[]) kittensAndMothers.next();
- Cat kitten = (Cat) tuple[0];
- Cat mother = (Cat) tuple[1];
+ Cat kitten = (Cat) tuple[0];
+ Cat mother = (Cat) tuple[1];
....
}]]></programlisting>
@@ -526,16 +548,16 @@
중괄호들 속에 포함시켜야 한다:
</para>
- <programlisting><![CDATA[List cats = session.createSQLQuery("SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM<10")
- .addEntity("cat", Cat.class)
-.list();]]></programlisting>
-
- <programlisting><![CDATA[List cats = session.createSQLQuery(
- "SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, " +
- "{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... " +
- "FROM CAT {cat} WHERE ROWNUM<10")
- .addEntity("cat", Cat.class)
-.list()]]></programlisting>
+ <programlisting><![CDATA[List cats = session.createSQLQuery("SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM<10")
+ .addEntity("cat", Cat.class)
+.list();]]></programlisting>
+
+ <programlisting><![CDATA[List cats = session.createSQLQuery(
+ "SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, " +
+ "{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... " +
+ "FROM CAT {cat} WHERE ROWNUM<10")
+ .addEntity("cat", Cat.class)
+.list()]]></programlisting>
<para>
SQL 질의들은 Hibernate 질의들처럼 명명된 파라미터들과 위치 파라미터들을 포함할 수도 있다. SQL 질의들에 대한
18 years, 6 months