update with split2po

git-svn-id: https://svn.jboss.org/repos/hibernate/core/trunk@14176 1b8cb986-b30d-0410-93ca-fae66ebed9b2
This commit is contained in:
xhuang 2007-11-02 04:31:34 +00:00
parent 635b791437
commit ae75ae8abf
24 changed files with 12750 additions and 13269 deletions

View File

@ -1,47 +1,32 @@
#, 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"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=utf-8\n"
#. Tag: title
#: architecture.xml:21
#, no-c-format
#: index.docbook:21
msgid "Architecture"
msgstr "Arquitectura"
#. Tag: title
#: architecture.xml:24
#, no-c-format
#: index.docbook:24
msgid "Overview"
msgstr "Visión General"
msgstr "Visi&#x00f3;n General"
#. Tag: para
#: architecture.xml:26
#, no-c-format
#: index.docbook:26
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&#x00f3;n a (muy) alto nivel de la arquitectura de Hibernate:"
#. Tag: para
#: architecture.xml:39
#, no-c-format
#: 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."
"configuraci&#x00f3;n para proveer servicios de persistencia (y objetos "
"persistentes) a la aplicaci&#x00f3;n."
#. Tag: para
#: architecture.xml:44
#, no-c-format
#: 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 "
@ -49,40 +34,30 @@ msgid ""
"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:"
"Nos gustar&#x00ed;a mostrar una vista m&#x00e1;s detallada de la "
"arquitectura de tiempo de ejecuci&#x00f3;n. Desafortunadamente, Hibernate es "
"flexible y soporta diferentes enfoques. Mostraremos los dos extremos. En la "
"arquitectura \"sencilla\", es la aplicaci&#x00f3;n la que provee su propias "
"conexiones JDBC y gestiona sus propias transacciones. Este enfoque usa un "
"m&#x00ed;nimo subconjunto de la API de Hibernate:"
#. Tag: para
#: architecture.xml:61
#, no-c-format
#: 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."
"La arquitectura \"full cream\" abstrae a la aplicaci&#x00f3;n de las APIs de "
"JDBC/JTA y deja que Hibernate se encargue de los detalles."
#. Tag: para
#: architecture.xml:75
#, fuzzy, no-c-format
#: index.docbook:75
msgid "Heres some definitions of the objects in the diagrams:"
msgstr ""
"He aquí algunas definiciones de los objetos en los diagramas: <placeholder-1/"
">"
msgstr "He aqu&#x00ed; algunas definiciones de los objetos en los diagramas:"
#. Tag: term
#: architecture.xml:80
#, no-c-format
#: index.docbook:80
msgid "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
msgstr "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
#. Tag: para
#: architecture.xml:82
#, no-c-format
#: 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 "
@ -90,21 +65,17 @@ msgid ""
"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."
"Cach&#x00e9; threadsafe (inmutable) de mapeos compilados para una sola base "
"de datos. Es una f&#x00e1;brica de <literal>Session</literal> y un cliente "
"de <literal>ConnectionProvider</literal>. Opcionalmente, puede mantener una "
"cach&#x00e9; (de segundo nivel) de datos reusables entre transacciones, a un "
"nivel de proceso o de cluster."
#. Tag: term
#: architecture.xml:92
#, no-c-format
#: index.docbook:92
msgid "Session (<literal>org.hibernate.Session</literal>)"
msgstr "Session (<literal>org.hibernate.Session</literal>)"
#. Tag: para
#: architecture.xml:94
#, no-c-format
#: 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 "
@ -112,21 +83,18 @@ msgid ""
"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."
"Objeto mono-hebra, de corta vida que representa una conversaci&#x00f3;n "
"entre la aplicaci&#x00f3;n y el almacenamiento persistente. Envuelve una "
"conexi&#x00f3;n JDBC. Es una f&#x00e1;brica de <literal>Transaction</"
"literal>. Mantiene una cach&#x00e9; requerida (de primer nivel) de objetos "
"persistentes, usada mientras se navega el grafo de objetos o se recuperen "
"objetos por identificador."
#. Tag: term
#: architecture.xml:104
#, no-c-format
#: index.docbook:104
msgid "Persistent objects and collections"
msgstr "Objetos y colecciones persistentes"
#. Tag: para
#: architecture.xml:106
#, no-c-format
#: index.docbook:106
msgid ""
"Short-lived, single threaded objects containing persistent state and "
"business function. These might be ordinary JavaBeans/POJOs, the only special "
@ -136,23 +104,20 @@ msgid ""
"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)."
"funci&#x00f3;nalidad de negocio. Estos pueden ser JavaBeans/POJOs (Plain Old "
"Java Objects, o sea, cualquier objeto Java), la &#x00fa;nica cosa especial "
"en ellos es que estan asociados actualmente con una (y s&#x00f3;lo una) "
"<literal>Session</literal>. Tan pronto como la <literal>Session</literal> "
"sea cerrada, ser&#x00e1;n separados y estar&#x00e1;n libres para ser usados "
"en cualquier capa de aplicaci&#x00f3;n. (por ejemplo, directamente como "
"objetos de transferencia de datos hacia y desde la capa de presentaci&#x00f3;"
"n)."
#. Tag: term
#: architecture.xml:117
#, no-c-format
#: index.docbook:117
msgid "Transient and detached objects and collections"
msgstr "Objetos y colecciones transitorios y separados"
#. Tag: para
#: architecture.xml:119
#, no-c-format
#: 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 "
@ -161,18 +126,14 @@ msgid ""
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."
"aplicaci&#x00f3;n y (a&#x00fa;n) no haber sido hechas persistentes, o pueden "
"haber sido instanciadas por una <literal>Session</literal> cerrada."
#. Tag: term
#: architecture.xml:128
#, no-c-format
#: index.docbook:128
msgid "Transaction (<literal>org.hibernate.Transaction</literal>)"
msgstr "Transaction (<literal>org.hibernate.Transaction</literal>)"
#. Tag: para
#: architecture.xml:130
#, no-c-format
#: 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, "
@ -181,17 +142,15 @@ msgid ""
"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</"
"(Opcional) Un objeto de corta vida, mono-hebra, usado por la aplicaci&#x00f3;"
"n para especificar unidades at&#x00f3;micas de trabajo. Abstrae a la "
"aplicaci&#x00f3;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&#x00f3;n de la "
"transacci&#x00f3;n, ya sea usando la API subyacente o <literal>Transaction</"
"literal>, nunca es opcional!"
#. Tag: term
#: architecture.xml:141
#, no-c-format
#: index.docbook:141
msgid ""
"ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</"
"literal>)"
@ -199,78 +158,65 @@ msgstr ""
"ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</"
"literal>)"
#. Tag: para
#: architecture.xml:143
#, no-c-format
#: 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."
"(Opcional) Una f&#x00e1;brica (y pool) de conexiones JDBC. Abstrae a la "
"aplicaci&#x00f3;n del <literal>Datasource</literal> o "
"<literal>DriverManager</literal> subyacente. No se expone a la "
"aplicaci&#x00f3;n, pero puede ser extendido/implementado por el "
"desarrollador."
#. Tag: term
#: architecture.xml:151
#, no-c-format
#: index.docbook:151
msgid ""
"TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
msgstr ""
"TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
#. Tag: para
#: architecture.xml:153
#, no-c-format
#: 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."
"(Opcional) Una f&#x00e1;brica de instancias de <literal>Transaction</"
"literal>. No se expone a la aplicaci&#x00f3;n, pero puede ser extendido/"
"implementado por el desarrollador."
#. Tag: emphasis
#: architecture.xml:160
#, no-c-format
#: index.docbook:160
msgid "Extension Interfaces"
msgstr "Interfaces de Extensión"
msgstr "Interfaces de Extensi&#x00f3;n"
#. Tag: para
#: architecture.xml:162
#, no-c-format
#: 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 "
"Hibernate ofrece muchas interfaces de extensi&#x00f3;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."
"persistencia. Para m&#x00e1;s detalles, mira la documentaci&#x00f3;n de la "
"API."
#. Tag: para
#: architecture.xml:171
#, no-c-format
#: 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."
"Dada una arquitectura \"sencilla\", la aplicaci&#x00f3;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: title
#: architecture.xml:179
#, no-c-format
#: index.docbook:179
msgid "Instance states"
msgstr "Estados de instancia"
#. Tag: para
#: architecture.xml:180
#, no-c-format
#: 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</"
@ -282,31 +228,23 @@ msgstr ""
"emphasis>. El objeto <literal>Session</literal> de Hibernate es el contexto "
"de persistencia:"
#. Tag: term
#: architecture.xml:188
#, no-c-format
#: index.docbook:188
msgid "transient"
msgstr "transitorio"
#. Tag: para
#: architecture.xml:190
#, no-c-format
#: 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 "
"La instancia no est&#x00e1; y nunca estuvo asociada con un contexto de "
"persistencia. No tiene identidad persistente (valor de clave primaria)."
#. Tag: term
#: architecture.xml:198
#, no-c-format
#: index.docbook:198
msgid "persistent"
msgstr "persistente"
#. Tag: para
#: architecture.xml:200
#, no-c-format
#: 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 "
@ -314,22 +252,18 @@ msgid ""
"<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)."
"La instancia est&#x00e1; actualmente asociada con un contexto de "
"persistencia. Tiene una identidad persistente (valor de clave primaria) y, "
"quiz&#x00e1;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&#x00f3;n en memoria del objeto)."
#. Tag: term
#: architecture.xml:212
#, no-c-format
#: index.docbook:212
msgid "detached"
msgstr "separado"
#. Tag: para
#: architecture.xml:214
#, no-c-format
#: 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 "
@ -339,44 +273,38 @@ msgid ""
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."
"Tiene una identidad persistente y, quiz&#x00e1;s, una fila correspondiente "
"en la base de datos. Para las instancias separadas, Hibernate no establece "
"ninguna garant&#x00ed;a sobre la relaci&#x00f3;n entre identidad persistente "
"e identidad Java."
#. Tag: title
#: architecture.xml:229
#, no-c-format
#: index.docbook:229
msgid "JMX Integration"
msgstr "Integración JMX"
msgstr "Integraci&#x00f3;n JMX"
#. Tag: para
#: architecture.xml:231
#, no-c-format
#: 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>."
"JMX es el est&#x00e1;ndar J2EE para la gesti&#x00f3;n de componentes Java. "
"Hibernate puede ser gestionado por medio de un servicio est&#x00e1;ndar JMX. "
"Proveemos una implementaci&#x00f3;n de MBean en la distribuci&#x00f3;n, "
"<literal>org.hibernate.jmx.HibernateService</literal>."
#. Tag: para
#: architecture.xml:237
#, no-c-format
#: 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:"
"Para ejemplo de c&#x00f3;mo desplegar Hibernate como un servicio JMX en un "
"Servidor de Aplicaciones JBoss, por favor, mira la Gu&#x00ed;a del Usuario "
"de JBoss. En JBoss AS, tienes adem&#x00e1;s estos beneficios si despliegas "
"usando JMX:"
#. Tag: para
#: architecture.xml:245
#, no-c-format
#: 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 "
@ -388,19 +316,18 @@ msgid ""
"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>."
"<emphasis>Gesti&#x00f3;n de Sesi&#x00f3;n:</emphasis> El ciclo de vida de la "
"<literal>Session</literal> de Hibernate puede estar autom&#x00e1;ticamente "
"ligado al &#x00e1;mbito de una transacci&#x00f3;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&#x00e1;s "
"tampoco tienes que preocuparte m&#x00e1;s de la demarcaci&#x00f3;n de la "
"transacci&#x00f3;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:257
#, no-c-format
#: 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 "
@ -412,59 +339,48 @@ msgid ""
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."
"un fichero EAR y/o SAR), que soporta todas las opciones de "
"configuraci&#x00f3;n usuales de una <literal>SessionFactory</literal> de "
"Hibernate. Sin embargo, todav&#x00ed;a tienes que nombrar todos tus ficheros "
"de mapeo en el descriptor de despliegue. Si decides usar el depliegue de HAR "
"opcional, JBoss detectar&#x00e1; autom&#x00e1;ticamente todos los ficheros "
"de mapeo en tu fichero HAR."
#. Tag: para
#: architecture.xml:268
#, no-c-format
#: 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."
"Para m&#x00e1;s informaci&#x00f3;n sobre estas opciones, consulta la "
"Gu&#x00ed;a de Usuario del JBoss AS."
#. Tag: para
#: architecture.xml:272
#, no-c-format
#: 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\"/>."
"Otra funcionalidad disponible como un servicio JMX son las estad&#x00ed;"
"sticas en tiempo de ejecuci&#x00f3;n de Hibernate. Mira <xref linkend="
"\"configuration-optional-statistics\"/>."
#. Tag: title
#: architecture.xml:279
#, no-c-format
#: index.docbook:279
msgid "JCA Support"
msgstr "Soporte JCA:"
#. Tag: para
#: architecture.xml:280
#, no-c-format
#: 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."
"Hiberate puede adem&#x00e1;s ser configurado como un conector JCA. Por favor "
"mira el sitio web para m&#x00e1;s detalles. Por favor ten en cuenta que el "
"soporte de JCA de Hibernate est&#x00e1; a&#x00fa;n considerado experimental."
#. Tag: title
#: architecture.xml:287
#, no-c-format
#: index.docbook:287
msgid "Contextual Sessions"
msgstr "translator-credits"
msgstr "UNTRANSLATED! Contextual Sessions"
#. Tag: para
#: architecture.xml:288
#, no-c-format
#: 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. "
@ -476,10 +392,17 @@ msgid ""
"utilized third-party frameworks (such as Spring or Pico) which provided "
"proxy/interception-based contextual sessions."
msgstr ""
"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:297
#, no-c-format
#: index.docbook:297
msgid ""
"Starting with version 3.0.1, Hibernate added the <literal>SessionFactory."
"getCurrentSession()</literal> method. Initially, this assumed usage of "
@ -492,10 +415,18 @@ msgid ""
"<literal>J2EE</literal> container. Based on that, the <literal>JTA</literal>-"
"based contextual sessions is all you should ever need to use."
msgstr ""
"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:307
#, no-c-format
#: 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 "
@ -504,10 +435,14 @@ msgid ""
"current_session_context_class</literal>) have been added to allow "
"pluggability of the scope and context of defining current sessions."
msgstr ""
"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:314
#, no-c-format
#: index.docbook:314
msgid ""
"See the Javadocs for the <literal>org.hibernate.context."
"CurrentSessionContext</literal> interface for a detailed discussion of its "
@ -516,39 +451,48 @@ msgid ""
"contextual session. Out-of-the-box, Hibernate comes with three "
"implementations of this interface."
msgstr ""
"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:324
#, no-c-format
#: 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> - 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:332
#, no-c-format
#: 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> - current "
"sessions are tracked by thread of execution. Again, see the Javadocs for "
"details."
#. Tag: para
#: architecture.xml:338
#, no-c-format
#: 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 ""
"<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:347
#, no-c-format
#: index.docbook:347
msgid ""
"The first two implementations provide a \"one session - one database "
"transaction\" programming model, also known and used as <emphasis>session-"
@ -562,10 +506,19 @@ msgid ""
"transaction or session demarcation operations in your code. Refer to <xref "
"linkend=\"transactions\"/> for more information and code examples."
msgstr ""
"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:359
#, no-c-format
#: index.docbook:359
msgid ""
"The <literal>hibernate.current_session_context_class</literal> configuration "
"parameter defines which <literal>org.hibernate.context."
@ -578,3 +531,19 @@ msgid ""
"however, there are three corresponding short names, \"jta\", \"thread\", and "
"\"managed\"."
msgstr ""
"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\"."
msgid "ROLES_OF_TRANSLATORS"
msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
msgid "CREDIT_FOR_TRANSLATORS"
msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"

View File

@ -1,24 +1,15 @@
#, 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"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=utf-8\n"
#. Tag: title
#: batch.xml:5
#, no-c-format
#: index.docbook:5
msgid "Batch processing"
msgstr "Procesamiento por lotes"
#. Tag: para
#: batch.xml:7
#, no-c-format
#: index.docbook:7
msgid ""
"A naive approach to inserting 100 000 rows in the database using Hibernate "
"might look like this:"
@ -26,9 +17,7 @@ msgstr ""
"Un enfoque ingenuo para insertar 100.000 filas en la base de datos usando "
"Hibernate podría verse así:"
#. Tag: programlisting
#: batch.xml:12
#, no-c-format
#: index.docbook:12
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
@ -39,10 +28,16 @@ msgid ""
"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();]]>"
#. Tag: para
#: batch.xml:14
#, no-c-format
#: 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 "
@ -54,9 +49,7 @@ msgstr ""
"las instancias de <literal>Customer</literal> recién instanciadas en el "
"caché de nivel de sesión."
#. Tag: para
#: batch.xml:20
#, no-c-format
#: 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 "
@ -69,15 +62,11 @@ msgstr ""
"lograr un rendimiento razonable. Establece el tamaño de lote JDBC a un "
"número razonable (digamos 10-50):"
#. Tag: programlisting
#: batch.xml:27
#, no-c-format
#: index.docbook:27
msgid "<![CDATA[hibernate.jdbc.batch_size 20]]>"
msgstr ""
msgstr "<![CDATA[hibernate.jdbc.batch_size 20]]>"
#. Tag: para
#: batch.xml:29
#, no-c-format
#: index.docbook:29
msgid ""
"Note that Hibernate disables insert batching at the JDBC level transparently "
"if you use an <literal>identiy</literal> identifier generator."
@ -85,9 +74,7 @@ msgstr ""
"UNTRANSLATED! Note that Hibernate disables insert batching at the JDBC level "
"transparently if you use an <literal>identiy</literal> identifier generator."
#. Tag: para
#: batch.xml:34
#, no-c-format
#: 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:"
@ -95,15 +82,11 @@ 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: programlisting
#: batch.xml:39
#, no-c-format
#: index.docbook:39
msgid "<![CDATA[hibernate.cache.use_second_level_cache false]]>"
msgstr ""
msgstr "<![CDATA[hibernate.cache.use_second_level_cache false]]>"
#. Tag: para
#: batch.xml:41
#, no-c-format
#: 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 "
@ -113,15 +96,11 @@ msgstr ""
"explicitly set the <literal>CacheMode</literal> to disable interaction with "
"the second-level cache."
#. Tag: title
#: batch.xml:47
#, no-c-format
#: index.docbook:47
msgid "Batch inserts"
msgstr "Inserciones en lote"
#. Tag: para
#: batch.xml:49
#, no-c-format
#: 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 "
@ -131,9 +110,7 @@ msgstr ""
"literal> y llamar a <literal>clear()</literal> en la sesión regularmente, "
"para controlar el tamaño del caché de primer nivel."
#. Tag: programlisting
#: batch.xml:55
#, no-c-format
#: index.docbook:55
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
@ -151,16 +128,27 @@ msgid ""
"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();]]>"
#. Tag: title
#: batch.xml:60
#, no-c-format
#: index.docbook:60
msgid "Batch updates"
msgstr "Actualizaciones en lote"
#. Tag: para
#: batch.xml:62
#, no-c-format
#: 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 "
@ -171,9 +159,7 @@ msgstr ""
"ventaja de los cursores del lado del servidor en consultas que devuelvan "
"muchas filas de datos."
#. Tag: programlisting
#: batch.xml:68
#, no-c-format
#: index.docbook:68
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
@ -195,16 +181,31 @@ msgid ""
"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();]]>"
#. Tag: title
#: batch.xml:73
#, no-c-format
#: index.docbook:73
msgid "The StatelessSession interface"
msgstr "UNTRANSLATED! The StatelessSession interface"
#. Tag: para
#: batch.xml:74
#, no-c-format
#: 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. "
@ -234,9 +235,7 @@ msgstr ""
"level cache. A stateless session is a lower-level abstraction, much closer "
"to the underlying JDBC."
#. Tag: programlisting
#: batch.xml:89
#, no-c-format
#: index.docbook:89
msgid ""
"<![CDATA[StatelessSession session = sessionFactory.openStatelessSession();\n"
"Transaction tx = session.beginTransaction();\n"
@ -252,10 +251,28 @@ msgid ""
"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();]]>"
#. Tag: para
#: batch.xml:91
#, no-c-format
#: 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 "
@ -265,9 +282,7 @@ msgstr ""
"returned by the query are immediately detached. They are never associated "
"with any persistence context."
#. Tag: para
#: batch.xml:97
#, no-c-format
#: index.docbook:97
msgid ""
"The <literal>insert(), update()</literal> and <literal>delete()</literal> "
"operations defined by the <literal>StatelessSession</literal> interface are "
@ -287,15 +302,11 @@ msgstr ""
"<literal>delete()</literal> operations defined by the <literal>Session</"
"literal> interface."
#. Tag: title
#: batch.xml:110
#, no-c-format
#: index.docbook:110
msgid "DML-style operations"
msgstr "update/delete en masa"
#. Tag: para
#: batch.xml:112
#, no-c-format
#: 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 "
@ -315,11 +326,9 @@ msgstr ""
"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>)."
"Language o <xref linkend=\"queryhql\"/>HQL)."
#. Tag: para
#: batch.xml:122
#, no-c-format
#: index.docbook:122
msgid ""
"The pseudo-syntax for <literal>UPDATE</literal> and <literal>DELETE</"
"literal> statements is: <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE "
@ -329,15 +338,11 @@ msgstr ""
"<literal>DELETE</literal> es: <literal>( UPDATE | DELETE ) FROM? ClassName "
"(WHERE WHERE_CONDITIONS)?</literal>. Algunos puntos a tener en cuenta:"
#. Tag: para
#: batch.xml:130
#, no-c-format
#: index.docbook:130
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
#: 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 "
@ -349,9 +354,7 @@ msgstr ""
"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."
#. Tag: para
#: batch.xml:143
#, no-c-format
#: index.docbook:143
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 "
@ -361,15 +364,11 @@ msgstr ""
"explicit) can be specified in a bulk HQL query. Sub-queries may be used in "
"the where-clause; the subqueries, themselves, may contain joins."
#. Tag: para
#: batch.xml:150
#, no-c-format
#: index.docbook:150
msgid "The where-clause is also optional."
msgstr "La cláusula-where es también opcional."
#. Tag: para
#: batch.xml:156
#, no-c-format
#: 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 "
@ -381,9 +380,7 @@ msgstr ""
"those familiar with JDBC's <literal>PreparedStatement.executeUpdate()</"
"literal>):"
#. Tag: programlisting
#: batch.xml:162
#, no-c-format
#: index.docbook:162
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
@ -399,10 +396,23 @@ msgid ""
"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();]]>"
#. Tag: para
#: batch.xml:164
#, no-c-format
#: index.docbook:164
msgid ""
"HQL <literal>UPDATE</literal> statements, by default do not effect the <link "
"linkend=\"mapping-declaration-version\">version</link> or the <link linkend="
@ -424,9 +434,7 @@ msgstr ""
"<literal>VERSIONED</literal> keyword after the <literal>UPDATE</literal> "
"keyword."
#. Tag: programlisting
#: batch.xml:174
#, no-c-format
#: index.docbook:174
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
@ -439,10 +447,20 @@ msgid ""
"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();]]>"
#. Tag: para
#: batch.xml:176
#, no-c-format
#: index.docbook:176
msgid ""
"Note that custom version types (<literal>org.hibernate.usertype."
"UserVersionType</literal>) are not allowed in conjunction with a "
@ -452,9 +470,7 @@ msgstr ""
"UserVersionType</literal>) are not allowed in conjunction with a "
"<literal>update versioned</literal> statement."
#. Tag: para
#: batch.xml:181
#, no-c-format
#: index.docbook:181
msgid ""
"To execute an HQL <literal>DELETE</literal>, use the same <literal>Query."
"executeUpdate()</literal> method:"
@ -462,9 +478,7 @@ msgstr ""
"Para ejecutar un <literal>DELETE</literal> HQL, usa el mismo método "
"<literal>Query.executeUpdate()</literal>:"
#. Tag: programlisting
#: batch.xml:186
#, no-c-format
#: index.docbook:186
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
@ -477,10 +491,17 @@ msgid ""
"tx.commit();\n"
"session.close();]]>"
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();]]>"
#. Tag: para
#: batch.xml:188
#, no-c-format
#: 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 "
@ -505,9 +526,7 @@ msgstr ""
"tabla \"raíz\" y potencialmente tablas de joined-subclass más debajo en la "
"jerarquía de herencia."
#. Tag: para
#: batch.xml:199
#, no-c-format
#: index.docbook:199
msgid ""
"The pseudo-syntax for <literal>INSERT</literal> statements is: "
"<literal>INSERT INTO EntityName properties_list select_statement</literal>. "
@ -517,17 +536,13 @@ msgstr ""
"operaciones HQL masivas, que serán atendidas en lanzamientos futuros; "
"consulta la hoja de ruta de JIRA para más detalles."
#. Tag: para
#: batch.xml:207
#, no-c-format
#: index.docbook:207
msgid ""
"Only the INSERT INTO ... SELECT ... form is supported; not the INSERT "
"INTO ... VALUES ... form."
msgstr "translator-credits"
msgstr ""
#. Tag: para
#: batch.xml:210
#, no-c-format
#: index.docbook:210
msgid ""
"The properties_list is analogous to the <literal>column speficiation</"
"literal> in the SQL <literal>INSERT</literal> statement. For entities "
@ -537,9 +552,7 @@ msgid ""
"<literal>INSERT</literal> statements are inherently non-polymorphic."
msgstr ""
#. Tag: para
#: batch.xml:220
#, no-c-format
#: 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 "
@ -553,9 +566,7 @@ msgid ""
"distinction or might be able to handle the conversion."
msgstr ""
#. Tag: para
#: batch.xml:232
#, no-c-format
#: 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 "
@ -572,9 +583,7 @@ msgid ""
"because it does not expose a selectable way to get its values."
msgstr ""
#. Tag: para
#: batch.xml:247
#, no-c-format
#: index.docbook:247
msgid ""
"For properties mapped as either <literal>version</literal> or "
"<literal>timestamp</literal>, the insert statement gives you two options. "
@ -584,15 +593,11 @@ msgid ""
"defined by the <literal>org.hibernate.type.VersionType</literal> is used)."
msgstr ""
#. Tag: para
#: batch.xml:257
#, no-c-format
#: index.docbook:257
msgid "An example HQL <literal>INSERT</literal> statement execution:"
msgstr ""
#. Tag: programlisting
#: batch.xml:261
#, no-c-format
#: index.docbook:261
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
@ -604,3 +609,9 @@ msgid ""
"tx.commit();\n"
"session.close();]]>"
msgstr ""
msgid "ROLES_OF_TRANSLATORS"
msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
msgid "CREDIT_FOR_TRANSLATORS"
msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"

View File

@ -1,24 +1,15 @@
#, 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"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=utf-8\n"
#. Tag: title
#: best_practices.xml:5
#, no-c-format
#: index.docbook:5
msgid "Best Practices"
msgstr "Mejores Prácticas"
msgstr "Mejores Pr&#x00e1;cticas"
#. Tag: term
#: best_practices.xml:9
#, no-c-format
#: index.docbook:9
msgid ""
"Write fine-grained classes and map them using <literal>&lt;component&gt;</"
"literal>."
@ -26,29 +17,23 @@ msgstr ""
"Escribe clase finamente granularizadas y mapealas usando <literal>&lt;"
"component&gt;</literal>."
#. Tag: para
#: best_practices.xml:11
#, no-c-format
#: 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."
"Usa una clase <literal>Direcci&#x00f3;n</literal> para encapsular "
"<literal>calle</literal>, <literal>distrito</literal>, <literal>estado</"
"literal>, <literal>c&#x00f3;digo postal</literal>. Esto alienta la "
"reutilizaci&#x00f3;n de c&#x00f3;digo y simplifica el refactoring."
#. Tag: term
#: best_practices.xml:19
#, no-c-format
#: index.docbook:19
msgid "Declare identifier properties on persistent classes."
msgstr "Declara las propiedades identificadoras en clases persistentes."
#. Tag: para
#: best_practices.xml:21
#, no-c-format
#: 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 "
@ -56,17 +41,14 @@ msgid ""
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)."
"sean 'sint&#x00e9;ticos' (generados, sin ning&#x00fa;n significado de "
"negocio)."
#. Tag: term
#: best_practices.xml:29
#, no-c-format
#: index.docbook:29
msgid "Identify natural keys."
msgstr "Identifica las claves naturales."
#. Tag: para
#: best_practices.xml:31
#, no-c-format
#: index.docbook:31
msgid ""
"Identify natural keys for all entities, and map them using <literal>&lt;"
"natural-id&gt;</literal>. Implement <literal>equals()</literal> and "
@ -78,102 +60,79 @@ msgstr ""
"literal> y <literal>hashCode()</literal> para comparar las propiedades que "
"componen la clave natural."
#. Tag: term
#: best_practices.xml:39
#, no-c-format
#: index.docbook:39
msgid "Place each class mapping in its own file."
msgstr "Coloca cada mapeo de clase en su propio fichero."
#. Tag: para
#: best_practices.xml:41
#, no-c-format
#: 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."
"No uses un solo documento monol&#x00ed;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: term
#: best_practices.xml:49
#, no-c-format
#: index.docbook:49
msgid "Load mappings as resources."
msgstr "Carga los mapeos como recursos."
#. Tag: para
#: best_practices.xml:51
#, no-c-format
#: index.docbook:51
msgid "Deploy the mappings along with the classes they map."
msgstr "Despliega los mapeos junto a las clases que mapean."
#. Tag: term
#: best_practices.xml:57
#, no-c-format
#: index.docbook:57
msgid "Consider externalising query strings."
msgstr "Considera externalizar las cadenas de consulta."
#. Tag: para
#: best_practices.xml:59
#, no-c-format
#: 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."
"Esta es una buena pr&#x00e1;ctica si tus consultas llaman a funciones SQL "
"que no son del est&#x00e1;ndar ANSI. Externalizar las cadenas de consulta a "
"ficheros de mapeo har&#x00e1; la aplicaci&#x00f3;n m&#x00e1;s portable."
#. Tag: term
#: best_practices.xml:67
#, no-c-format
#: index.docbook:67
msgid "Use bind variables."
msgstr "Usa variables de ligado."
#. Tag: para
#: best_practices.xml:69
#, no-c-format
#: 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."
"Igual que en JDBC, siempre remplaza valores no constantes con \"?\". &#x00a1;"
"Nunca uses manipulaci&#x00f3;n de cadenas para ligar un valor no constante "
"en una consulta! Incluso mejor, considera usar par&#x00e1;metros con nombre "
"en las consultas."
#. Tag: term
#: best_practices.xml:77
#, no-c-format
#: index.docbook:77
msgid "Don't manage your own JDBC connections."
msgstr "No manejes tus propias conexiones JDBC."
#. Tag: para
#: best_practices.xml:79
#, no-c-format
#: 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>."
"Hibernate deja a la aplicaci&#x00f3;n administre las conexiones JDBC. Este "
"enfoque debe considerarse como &#x00fa;ltimo recurso. Si no puedes usar los "
"provedores de conexi&#x00f3;n prefabricados, considera prover tu propia "
"implementaci&#x00f3;n de <literal>org.hibernate.connection."
"ConnectionProvider</literal>."
#. Tag: term
#: best_practices.xml:87
#, no-c-format
#: index.docbook:87
msgid "Consider using a custom type."
msgstr "Considera usar un tipo personalizado."
#. Tag: para
#: best_practices.xml:89
#, no-c-format
#: 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. "
@ -181,21 +140,18 @@ msgid ""
"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."
"Sup&#x00f3;n que tienes un tipo Java, digamos de alguna biblioteca, que "
"necesita hacerse persistente pero no provee los m&#x00e9;todos de acceso "
"necesarios para mapearlo como un componente. Debes considerar implementar "
"<literal>org.hibernate.UserType</literal>. Este enfoque libera al c&#x00f3;"
"digo de aplicaci&#x00f3;n de implementar transformaciones a / desde un tipo "
"Hibernate."
#. Tag: term
#: best_practices.xml:98
#, no-c-format
#: index.docbook:98
msgid "Use hand-coded JDBC in bottlenecks."
msgstr "Usa JDBC codificado a mano en cuellos de botella."
#. Tag: para
#: best_practices.xml:100
#, no-c-format
#: 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</"
@ -205,23 +161,20 @@ msgid ""
"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."
"En &#x00e1;reas del sistema de rendimiento cr&#x00ed;tico, algunos tipos de "
"operaciones podr&#x00ed;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&#x00e1;s "
"r&#x00e1;pido. Si necesitas usar JDBC directo, podr&#x00ed;a ser valioso "
"abrir una <literal>Session</literal> de Hibernate y usar esa conexi&#x00f3;n "
"JDBC. De esta forma puedes usar a&#x00fa;n la misma estrategia de "
"transacci&#x00f3;n y el mismo proveedor de conexiones subyacente."
#. Tag: term
#: best_practices.xml:110
#, no-c-format
#: index.docbook:110
msgid "Understand <literal>Session</literal> flushing."
msgstr "Comprende la limpieza (flushing) de <literal>Session</literal>."
#. Tag: para
#: best_practices.xml:112
#, no-c-format
#: 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 "
@ -229,21 +182,18 @@ msgid ""
"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."
"De vez en cuando la sesi&#x00f3;n sincroniza su estado persistente con la "
"base de datos. El rendimiento se ver&#x00e1; afectado si este proceso ocurre "
"demasiado frecuentemente. A veces puedes minimizar limpieza innecesaria "
"deshabilitando la limpieza autom&#x00e1;tica o incluso cambiando el orden de "
"las consultas u otras operaciones en una transacci&#x00f3;n en particular."
#. Tag: term
#: best_practices.xml:121
#, no-c-format
#: index.docbook:121
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&#x00f3;n en tres gradas, considera usar objetos separados."
#. Tag: para
#: best_practices.xml:123
#, no-c-format
#: 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 "
@ -251,23 +201,19 @@ msgid ""
"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."
"Al usar una arquitectura de servlet / sesi&#x00f3;n, puedes pasar objetos "
"persistentes en el bean de sesi&#x00f3;n hacia y desde la capa de servlet / "
"JSP. Usa una sesi&#x00f3;n nueva para atender el servicio de cada "
"petici&#x00f3;n. Usa <literal>Session.merge()</literal> o <literal>Session."
"saveOrUpdate()</literal> para sincronizar los objetos con la base de datos."
#. Tag: term
#: best_practices.xml:132
#, no-c-format
#: index.docbook:132
msgid "In a two tiered architecture, consider using long persistence contexts."
msgstr ""
"En una arquitectura en dos gradas, considera usar contexto de persistencia "
"largos."
#. Tag: para
#: best_practices.xml:134
#, no-c-format
#: 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 "
@ -284,27 +230,25 @@ msgid ""
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 "
"<emphasis>transacciones de aplicaci&#x00f3;n</emphasis> ejecut&#x00e1;ndose "
"en largo, una sola unidad de trabajo desde el punto de vista de un usuario. "
"Una transacci&#x00f3;n de aplicaci&#x00f3;n puede abarcar muchos ciclos "
"petici&#x00f3;n/respuesta del cliente. Es com&#x00fa;n usar objetos "
"separados para implementar transacciones de aplicaci&#x00f3;n. Una "
"alternativa, extremadamente apropiada en arquitecturas en dos gradas, es "
"mantener un solo contacto de persistencia abierto (sesi&#x00f3;n) para todo "
"el ciclo de vida de la transacci&#x00f3;n de aplicaci&#x00f3;n y simplemente "
"desconectar de la conexi&#x00f3;n JDBC al final de cada petici&#x00f3;n, y "
"reconectar al comienzo de la petici&#x00f3;n subsecuente. Nunca compartas "
"una &#x00fa;nica sesi&#x00f3;n a trav&#x00e9;s de m&#x00e1;s de una "
"transacci&#x00f3;n de aplicaci&#x00f3;n, o estar&#x00e1;s trabajando con "
"datos añejos."
#. Tag: term
#: best_practices.xml:148
#, no-c-format
#: index.docbook:148
msgid "Don't treat exceptions as recoverable."
msgstr "No trates la excepciones como recuperables."
#. Tag: para
#: best_practices.xml:150
#, no-c-format
#: 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 "
@ -314,23 +258,20 @@ msgid ""
"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."
"Esto es m&#x00e1;s una pr&#x00e1;ctica necesaria que una \"mejor\" pr&#x00e1;"
"ctica. Cuando ocurra una excepci&#x00f3;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: term
#: best_practices.xml:160
#, no-c-format
#: index.docbook:160
msgid "Prefer lazy fetching for associations."
msgstr "Prefiere la recuperación perezosa para las asociaciones."
msgstr "Prefiere la recuperaci&#x00f3;n perezosa para las asociaciones."
#. Tag: para
#: best_practices.xml:162
#, no-c-format
#: 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 "
@ -340,29 +281,26 @@ msgid ""
"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>."
"Usa escasamente la recuperaci&#x00f3;n temprana. Usa proxies y colecciones "
"perezosas para la mayor&#x00ed;a de asociaciones a clases probablemente no "
"est&#x00e9;n mantenidas en el cach&#x00e9; de segundo nivel. Para las "
"asociaciones a clases en cach&#x00e9;, donde hay una probabilidad de acceso "
"a cach&#x00e9; extremadamente alta, deshabilita expl&#x00ed;citamente la "
"recuperaci&#x00f3;n temprana usando <literal>lazy=\"false\"</literal>. "
"Cuando sea apropiada la recuperaci&#x00f3;n por uni&#x00f3;n (join fetching) "
"para un caso de uso en particular, usa una consulta con un <literal>left "
"join fetch</literal>."
#. Tag: term
#: best_practices.xml:172
#, no-c-format
#: 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."
"Usa el patr&#x00f3;n <emphasis>sesi&#x00f3;n abierta en vista</emphasis>, o "
"una <emphasis>fase de ensamblado</emphasis> disciplinada para evitar "
"problemas con datos no recuperados."
#. Tag: para
#: best_practices.xml:177
#, no-c-format
#: 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 "
@ -379,28 +317,25 @@ msgid ""
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: "
"arquitectura tradicional de EJB, los DTOs tienen un prop&#x00f3;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."
"Segundo, definen impl&#x00ed;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&#x00f3;n. "
"Hibernate elimina el primer prop&#x00f3;sito. Sin embargo, a&#x00fa;n "
"necesitas una fase de ensamblado (piensa en tus m&#x00e9;todos de negocio "
"como si tuviesen un contrato estricto con la grada de presentaci&#x00f3;n "
"sobre qu&#x00e9; datos est&#x00e1;n disponibles en los objetos separados) a "
"menos que est&#x00e9;s preparado para tener el contexto de persistencia (la "
"sesi&#x00f3;n) abierto a trav&#x00e9;s del proceso de renderizaci&#x00f3;n "
"de la vista. &#x00a1;Esta no es una limitaci&#x00f3;n de Hibernate! Es un "
"requerimiento fundamental de acceso seguro a datos transaccionales."
#. Tag: term
#: best_practices.xml:191
#, no-c-format
#: index.docbook:191
msgid "Consider abstracting your business logic from Hibernate."
msgstr "Considera abstraer tu lógica de negocio de Hibernate"
msgstr "Considera abstraer tu l&#x00f3;gica de negocio de Hibernate"
#. Tag: para
#: best_practices.xml:193
#, no-c-format
#: index.docbook:193
msgid ""
"Hide (Hibernate) data-access code behind an interface. Combine the "
"<emphasis>DAO</emphasis> and <emphasis>Thread Local Session</emphasis> "
@ -409,23 +344,19 @@ msgid ""
"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!)"
"Oculta el c&#x00f3;digo de acceso a datos (Hibernate) detr&#x00e1;s de una "
"interface. Combina los patrones <emphasis>DAO</emphasis> y "
"<emphasis>Sesi&#x00f3;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&#x00e1; pensado para aplicaciones \"suficientemente grandes\"; &#x00a1;"
"no es apropiado para una aplicaci&#x00f3;n con cinco tablas!)"
#. Tag: term
#: best_practices.xml:203
#, no-c-format
#: index.docbook:203
msgid "Don't use exotic association mappings."
msgstr "No uses mapeos de asociación exóticos."
msgstr "No uses mapeos de asociaci&#x00f3;n ex&#x00f3;ticos."
#. Tag: para
#: best_practices.xml:205
#, no-c-format
#: 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 "
@ -435,26 +366,29 @@ msgid ""
"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."
"parte del tiempo necesitas informaci&#x00f3;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&#x00ed;a de asociaciones son uno-a-muchos y muchos-a-uno, debes ser "
"cuidadoso al usr cualquier otro estilo de asociaci&#x00f3;n y preguntarte si "
"es realmente necesario."
#. Tag: term
#: best_practices.xml:215
#, no-c-format
#: index.docbook:215
msgid "Prefer bidirectional associations."
msgstr "Prefiere las asociaciones bidireccionales."
#. Tag: para
#: best_practices.xml:217
#, no-c-format
#: 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."
"Las asociaciones unidireccionales son m&#x00e1;s dif&#x00ed;ciles de "
"consultar. En una aplicaci&#x00f3;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-->"

View File

@ -1,40 +1,28 @@
#, 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"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=utf-8\n"
#. Tag: title
#: component_mapping.xml:5
#, no-c-format
#: index.docbook:5
msgid "Component Mapping"
msgstr "Mapeo de Componentes"
#. Tag: para
#: component_mapping.xml:7
#, no-c-format
#: 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."
"La noci&#x00f3;n de un <emphasis>componente</emphasis> es reusada en muchos "
"contextos diferentes, para prop&#x00f3;sitos diferentes, a trav&#x00e9;s de "
"Hibernate."
#. Tag: title
#: component_mapping.xml:13
#, no-c-format
#: index.docbook:13
msgid "Dependent objects"
msgstr "Objetos dependientes"
#. Tag: para
#: component_mapping.xml:15
#, no-c-format
#: 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 "
@ -42,13 +30,12 @@ msgid ""
"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:"
"valor, no una referencia de entidad. El t&#x00e9;rmino \"componente\" hace "
"referencia a la noci&#x00f3;n orientada a objetos de composici&#x00f3;n (no "
"a componentes a nivel de arquitectura). Por ejemplo, podr&#x00ed;as modelar "
"una persona como:"
#. Tag: programlisting
#: component_mapping.xml:21
#, no-c-format
#: index.docbook:21
msgid ""
"<![CDATA[public class Person {\n"
" private java.util.Date birthday;\n"
@ -76,10 +63,33 @@ msgid ""
" ......\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"
"}]]>"
#. Tag: programlisting
#: component_mapping.xml:23
#, no-c-format
#: index.docbook:23
msgid ""
"<![CDATA[public class Name {\n"
" char initial;\n"
@ -105,10 +115,31 @@ msgid ""
" }\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"
"}]]>"
#. Tag: para
#: component_mapping.xml:25
#, no-c-format
#: index.docbook:25
msgid ""
"Now <literal>Name</literal> may be persisted as a component of "
"<literal>Person</literal>. Notice that <literal>Name</literal> defines "
@ -117,18 +148,14 @@ msgid ""
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."
"m&#x00e9;todos getter y setter para sus propiedades persistentes, pero no "
"necesita declarar ninguna interface ni propiedades identificadoras."
#. Tag: para
#: component_mapping.xml:32
#, no-c-format
#: index.docbook:32
msgid "Our Hibernate mapping would look like:"
msgstr "Nuestro mapeo de Hibernate se vería así:"
msgstr "Nuestro mapeo de Hibernate se ver&#x00ed;a as&#x00ed;:"
#. Tag: programlisting
#: component_mapping.xml:36
#, no-c-format
#: index.docbook:36
msgid ""
"<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
" <id name=\"Key\" column=\"pid\" type=\"string\">\n"
@ -143,22 +170,30 @@ msgid ""
" </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>]]>"
#. Tag: para
#: component_mapping.xml:38
#, no-c-format
#: 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>, "
"La tabla person tendr&#x00ed;a las columnas <literal>pid</literal>, "
"<literal>birthday</literal>, <literal>initial</literal>, <literal>first</"
"literal> y <literal>last</literal>."
#. Tag: para
#: component_mapping.xml:46
#, no-c-format
#: 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 "
@ -170,16 +205,14 @@ msgid ""
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."
"pero los dos objetos persona contendr&#x00ed;an dos objetos nombre "
"independientes, s&#x00f3;lo \"iguales\" en valor. La sem&#x00e1;ntica de "
"valor nulo de un componente es <emphasis>ad hoc</emphasis>. Cuando se "
"recargue el objeto contenedor, Hibernate asumir&#x00e1; que si todas las "
"columnas del componente son nulas, el componente entero es nulo. Esto debe "
"estar bien para la mayor&#x00ed;a de prop&#x00f3;sitos."
#. Tag: para
#: component_mapping.xml:55
#, no-c-format
#: 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 "
@ -189,12 +222,10 @@ 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."
"ex&#x00f3;tico. Hibernate est&#x00e1; concebido para soportar un modelo de "
"objetos granularizado en fino."
#. Tag: para
#: component_mapping.xml:62
#, no-c-format
#: index.docbook:62
msgid ""
"The <literal>&lt;component&gt;</literal> element allows a <literal>&lt;"
"parent&gt;</literal> subelement that maps a property of the component class "
@ -204,9 +235,7 @@ msgstr ""
"<literal>&lt;parent&gt;</literal> que mapee una propiedad de la clase del "
"componente como una referencia de regreso a la entidad contenedora."
#. Tag: programlisting
#: component_mapping.xml:68
#, no-c-format
#: index.docbook:68
msgid ""
"<![CDATA[<class name=\"eg.Person\" table=\"person\">\n"
" <id name=\"Key\" column=\"pid\" type=\"string\">\n"
@ -222,30 +251,37 @@ msgid ""
" </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>]]>"
#. Tag: title
#: component_mapping.xml:73
#, no-c-format
#: index.docbook:73
msgid "Collections of dependent objects"
msgstr "Colecciones de objetos dependientes"
#. Tag: para
#: component_mapping.xml:75
#, no-c-format
#: 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>&lt;"
"element&gt;</literal> tag with a <literal>&lt;composite-element&gt;</"
"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>&lt;element&gt;</literal> por una etiqueta "
"<literal>&lt;composite-element&gt;</literal>."
"Las colecciones de componentes est&#x00e1;n soportadas (por ejemplo, un "
"array de tipo <literal>Name</literal>). Declara tu colecci&#x00f3;n de "
"componentes remplazando la etiqueta <literal>&lt;element&gt;</literal> por "
"una etiqueta <literal>&lt;composite-element&gt;</literal>."
#. Tag: programlisting
#: component_mapping.xml:82
#, no-c-format
#: index.docbook:82
msgid ""
"<![CDATA[<set name=\"someNames\" table=\"some_names\" lazy=\"true\">\n"
" <key column=\"id\"/>\n"
@ -256,10 +292,16 @@ msgid ""
" </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>]]>"
#. Tag: para
#: component_mapping.xml:84
#, no-c-format
#: 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"
@ -269,9 +311,7 @@ msgstr ""
"importante implementar <literal>equals()</literal> y <literal>hashCode()</"
"literal> correctamente."
#. Tag: para
#: component_mapping.xml:90
#, no-c-format
#: index.docbook:90
msgid ""
"Composite elements may contain components but not collections. If your "
"composite element itself contains components, use the <literal>&lt;nested-"
@ -285,16 +325,14 @@ msgstr ""
"Los elementos compuestos pueden contener componentes pero no colecciones. Si "
"tu elemento compuesto contiene a su vez componentes, usa la etiqueta "
"<literal>&lt;nested-composite-element&gt;</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."
"bastante ex&#x00f3;tico - una colecci&#x00f3;n de componentes que a su vez "
"tienen componentes. A esta altura debes estar pregunt&#x00e1;ndote si una "
"asociaci&#x00f3;n uno-a-muchos es m&#x00e1;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&#x00e1;ntica de persistencia "
"siguen siendo ligeramente diferentes."
#. Tag: para
#: component_mapping.xml:102
#, no-c-format
#: index.docbook:102
msgid ""
"Please note that a composite element mapping doesn't support null-able "
"properties if you're using a <literal>&lt;set&gt;</literal>. Hibernate has "
@ -306,17 +344,15 @@ msgid ""
"<literal>&lt;idbag&gt;</literal>."
msgstr ""
"Por favor observa que un mapeo de elemento compuesto no soporta propiedades "
"nulables si estás usando un <literal>&lt;set&gt;</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>&lt;list&gt;</"
"literal>, <literal>&lt;map&gt;</literal>, <literal>&lt;bag&gt;</literal> o "
"<literal>&lt;idbag&gt;</literal>."
"nulables si est&#x00e1;s usando un <literal>&lt;set&gt;</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&#x00f3;lo propiedades no nulas en un elemento compuesto o elegir un "
"<literal>&lt;list&gt;</literal>, <literal>&lt;map&gt;</literal>, "
"<literal>&lt;bag&gt;</literal> o <literal>&lt;idbag&gt;</literal>."
#. Tag: para
#: component_mapping.xml:113
#, no-c-format
#: index.docbook:113
msgid ""
"A special case of a composite element is a composite element with a nested "
"<literal>&lt;many-to-one&gt;</literal> element. A mapping like this allows "
@ -328,15 +364,14 @@ msgid ""
msgstr ""
"Un caso especial de un elemento compuesto es un elemento compuesto con un "
"elemento anidado <literal>&lt;many-to-one&gt;</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:"
"te permite mapear columnas extra de una tabla de asociaci&#x00f3;n muchos-a-"
"muchos a la clase del elemento compuesto. La siguiente es una "
"asociaci&#x00f3;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&#x00f3;n:"
#. Tag: programlisting
#: component_mapping.xml:123
#, no-c-format
#: index.docbook:123
msgid ""
"<![CDATA[<class name=\"eg.Order\" .... >\n"
" ....\n"
@ -352,10 +387,21 @@ msgid ""
" </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>]]>"
#. Tag: para
#: component_mapping.xml:125
#, no-c-format
#: 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 "
@ -364,21 +410,17 @@ msgid ""
"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 "
"la navegaci&#x00f3;n bidireccional de la asociaci&#x00f3;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:133
#, no-c-format
#: index.docbook:133
msgid "Even ternary (or quaternary, etc) associations are possible:"
msgstr "Incluso son posibles las asociaciones ternarias (o cuaternarias, etc):"
#. Tag: programlisting
#: component_mapping.xml:135
#, no-c-format
#: index.docbook:135
msgid ""
"<![CDATA[<class name=\"eg.Order\" .... >\n"
" ....\n"
@ -391,26 +433,30 @@ msgid ""
" </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>]]>"
#. Tag: para
#: component_mapping.xml:137
#, no-c-format
#: 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."
"sint&#x00e1;xis que las asociaciones a otras entidades."
#. Tag: title
#: component_mapping.xml:145
#, no-c-format
#: index.docbook:145
msgid "Components as Map indices"
msgstr "Componentes como índices de Map"
msgstr "Componentes como &#x00ed;ndices de Map"
#. Tag: para
#: component_mapping.xml:147
#, no-c-format
#: index.docbook:147
msgid ""
"The <literal>&lt;composite-map-key&gt;</literal> element lets you map a "
"component class as the key of a <literal>Map</literal>. Make sure you "
@ -418,19 +464,15 @@ msgid ""
"correctly on the component class."
msgstr ""
"El elemento <literal>&lt;composite-map-key&gt;</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."
"una clase componente como la clave de un <literal>Map</literal>. Aseg&#x00fa;"
"rate que sobrescribes <literal>hashCode()</literal> y <literal>equals()</"
"literal> correctamente en la clase componente."
#. Tag: title
#: component_mapping.xml:156
#, no-c-format
#: index.docbook:156
msgid "Components as composite identifiers"
msgstr "Componentes como identificadores compuestos"
#. Tag: para
#: component_mapping.xml:158
#, no-c-format
#: index.docbook:158
msgid ""
"You may use a component as an identifier of an entity class. Your component "
"class must satisfy certain requirements:"
@ -438,47 +480,37 @@ msgstr ""
"Puedes usar un componente como un identidicador de una clase entidad. Tu "
"clase componente debe satisfacer ciertos requerimientos:"
#. Tag: para
#: component_mapping.xml:165
#, no-c-format
#: index.docbook:165
msgid "It must implement <literal>java.io.Serializable</literal>."
msgstr "Debe implementar <literal>java.io.Serializable</literal>."
#. Tag: para
#: component_mapping.xml:170
#, no-c-format
#: 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."
"literal>, consistentemente con la noci&#x00f3;n de base de datos de igualdad "
"de clave compuesta."
#. Tag: emphasis
#: component_mapping.xml:179
#, no-c-format
#: 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."
"requerimiento r&#x00ed;gido de Hibernate. Pero de todas formas, h&#x00e1;zlo."
#. Tag: para
#: component_mapping.xml:183
#, no-c-format
#: 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 "
"compuestas. La aplicaci&#x00f3;n debe, en cambio, asignar sus propios "
"identificadores."
#. Tag: para
#: component_mapping.xml:188
#, no-c-format
#: index.docbook:188
msgid ""
"Use the <literal>&lt;composite-id&gt;</literal> tag (with nested "
"<literal>&lt;key-property&gt;</literal> elements) in place of the usual "
@ -488,13 +520,11 @@ msgid ""
msgstr ""
"Usa la etiqueta <literal>&lt;composite-id&gt;</literal> (con elementos "
"anidados <literal>&lt;key-property&gt;</literal>) en lugar de la usual "
"declaración <literal>&lt;id&gt;</literal>. Por ejemplo, la clase "
"declaraci&#x00f3;n <literal>&lt;id&gt;</literal>. Por ejemplo, la clase "
"<literal>OrderLine</literal> tiene una clave primaria que depende de la "
"clave primaria (compuesta) de <literal>Order</literal>."
#. Tag: programlisting
#: component_mapping.xml:196
#, no-c-format
#: index.docbook:196
msgid ""
"<![CDATA[<class name=\"OrderLine\">\n"
" \n"
@ -515,23 +545,37 @@ msgid ""
" \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>]]>"
#. Tag: para
#: component_mapping.xml:198
#, no-c-format
#: 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í:"
"Ahora, cualquier clave for&#x00e1;nea que referencie la tabla de "
"<literal>OrderLine</literal> es tambi&#x00e9;n compuesta. Debes declarar "
"esto en tus mapeos de otras clases. Una asociaci&#x00f3;n a "
"<literal>OrderLine</literal> ser&#x00ed;a mapeado as&#x00ed;:"
#. Tag: programlisting
#: component_mapping.xml:204
#, no-c-format
#: index.docbook:204
msgid ""
"<![CDATA[<many-to-one name=\"orderLine\" class=\"OrderLine\">\n"
"<!-- the \"class\" attribute is optional, as usual -->\n"
@ -540,10 +584,14 @@ msgid ""
" <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>]]>"
#. Tag: para
#: component_mapping.xml:206
#, no-c-format
#: index.docbook:206
msgid ""
"(Note that the <literal>&lt;column&gt;</literal> tag is an alternative to "
"the <literal>column</literal> attribute everywhere.)"
@ -551,19 +599,16 @@ msgstr ""
"(Nota que la etiqueta <literal>&lt;column&gt;</literal> es una alternativa "
"al atributo <literal>column</literal> en cualquier sitio.)"
#. Tag: para
#: component_mapping.xml:211
#, no-c-format
#: 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:"
"Una asociaci&#x00f3;n <literal>muchos-a-muchos</literal> a "
"<literal>OrderLine</literal> tambi&#x00e9;n usa la clave for&#x00e1;nea "
"compuesta:"
#. Tag: programlisting
#: component_mapping.xml:216
#, no-c-format
#: index.docbook:216
msgid ""
"<![CDATA[<set name=\"undeliveredOrderLines\">\n"
" <key column name=\"warehouseId\"/>\n"
@ -574,20 +619,24 @@ msgid ""
" </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>]]>"
#. Tag: para
#: component_mapping.xml:218
#, no-c-format
#: 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:"
"La colecci&#x00f3;n de <literal>OrderLine</literal>s en <literal>Order</"
"literal> usar&#x00ed;a:"
#. Tag: programlisting
#: component_mapping.xml:223
#, no-c-format
#: index.docbook:223
msgid ""
"<![CDATA[<set name=\"orderLines\" inverse=\"true\">\n"
" <key>\n"
@ -597,10 +646,15 @@ msgid ""
" <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>]]>"
#. Tag: para
#: component_mapping.xml:225
#, no-c-format
#: index.docbook:225
msgid ""
"(The <literal>&lt;one-to-many&gt;</literal> element, as usual, declares no "
"columns.)"
@ -608,19 +662,15 @@ msgstr ""
"(El elemento <literal>&lt;one-to-many&gt;</literal>, como es usual, no "
"declara columnas.)"
#. Tag: para
#: component_mapping.xml:229
#, no-c-format
#: 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."
"Si <literal>OrderLine</literal> posee una colecci&#x00f3;n por s&#x00ed; "
"misma, tiene tambi&#x00e9;n una clave for&#x00e1;nea compuesta."
#. Tag: programlisting
#: component_mapping.xml:234
#, no-c-format
#: index.docbook:234
msgid ""
"<![CDATA[<class name=\"OrderLine\">\n"
" ....\n"
@ -638,22 +688,31 @@ msgid ""
" </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>]]>"
#. Tag: title
#: component_mapping.xml:239
#, no-c-format
#: index.docbook:239
msgid "Dynamic components"
msgstr "Componentes dinámicos"
msgstr "Componentes din&#x00e1;micos"
#. Tag: para
#: component_mapping.xml:241
#, no-c-format
#: index.docbook:241
msgid "You may even map a property of type <literal>Map</literal>:"
msgstr "Puedes incluso mapear una propiedad de tipo <literal>Map</literal>:"
#. Tag: programlisting
#: component_mapping.xml:245
#, no-c-format
#: index.docbook:245
msgid ""
"<![CDATA[<dynamic-component name=\"userAttributes\">\n"
" <property name=\"foo\" column=\"FOO\" type=\"string\"/>\n"
@ -661,10 +720,13 @@ msgid ""
" <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>]]>"
#. Tag: para
#: component_mapping.xml:247
#, no-c-format
#: index.docbook:247
msgid ""
"The semantics of a <literal>&lt;dynamic-component&gt;</literal> mapping are "
"identical to <literal>&lt;component&gt;</literal>. The advantage of this "
@ -674,11 +736,18 @@ msgid ""
"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>&lt;dynamic-component&gt;</literal> es "
"ídentica a la de <literal>&lt;component&gt;</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 "
"La sem&#x00e1;ntica de un mapeo <literal>&lt;dynamic-component&gt;</literal> "
"es &#x00ed;dentica a la de <literal>&lt;component&gt;</literal>. La ventaja "
"de este tipo de mapeos es la habilidad para determinar las propiedades "
"reales del bean en tiempo de despliegue, s&#x00f3;lo con editar el documento "
"de mapeo. La manipulaci&#x00f3;n del documento de mapeo en tiempo de "
"ejecuci&#x00f3;n es tambi&#x00e9;n posible, usando un analizador DOM. "
"Incluso mejor, puedes acceder (y cambiar) el metamodelo de tiempo de "
"configuraci&#x00f3;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-->"

View File

@ -1,42 +1,30 @@
#, 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"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=utf-8\n"
#. Tag: title
#: events.xml:5
#, no-c-format
#: index.docbook:5
msgid "Interceptors and events"
msgstr "Interceptores y eventos"
#. Tag: para
#: events.xml:7
#, no-c-format
#: 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."
"Frecuentemente es &#x00fa;til para la aplicaci&#x00f3;n reaccionar a ciertos "
"eventos que ocurran dentro de Hibernate. Esto permite la implementaci&#x00f3;"
"n de ciertos tipos de funcionalidade gen&#x00e9;rica, y extensi&#x00f3;n de "
"la funcionalidad de Hibernate."
#. Tag: title
#: events.xml:14
#, no-c-format
#: index.docbook:14
msgid "Interceptors"
msgstr "Interceptores"
#. Tag: para
#: events.xml:16
#, no-c-format
#: index.docbook:16
msgid ""
"The <literal>Interceptor</literal> interface provides callbacks from the "
"session to the application allowing the application to inspect and/or "
@ -48,19 +36,17 @@ msgid ""
"<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."
"La interface <literal>Interceptor</literal> provee callbacks desde la "
"sesi&#x00f3;n a la aplicaci&#x00f3;n permitiendo a &#x00e9;sta &#x00fa;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&#x00f3;n de auditor&#x00ed;a. Por ejemplo, el "
"siguiente <literal>Interceptor</literal> establece autom&#x00e1;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:27
#, no-c-format
#: index.docbook:27
msgid ""
"You may either implement <literal>Interceptor</literal> directly or (better) "
"extend <literal>EmptyInterceptor</literal>."
@ -68,9 +54,7 @@ msgstr ""
"UNTRANSLATED! You may either implement <literal>Interceptor</literal> "
"directly or (better) extend <literal>EmptyInterceptor</literal>."
#. Tag: programlisting
#: events.xml:32
#, no-c-format
#: index.docbook:32
msgid ""
"<![CDATA[package org.hibernate.test;\n"
"\n"
@ -156,10 +140,88 @@ msgid ""
"\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.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"
"}]]>"
#. Tag: para
#: events.xml:34
#, no-c-format
#: index.docbook:34
msgid ""
"Interceptors come in two flavors: <literal>Session</literal>-scoped and "
"<literal>SessionFactory</literal>-scoped."
@ -167,9 +229,7 @@ msgstr ""
"UNTRANSLATED! Interceptors come in two flavors: <literal>Session</literal>-"
"scoped and <literal>SessionFactory</literal>-scoped."
#. Tag: para
#: events.xml:39
#, no-c-format
#: 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 "
@ -179,15 +239,12 @@ msgstr ""
"when a session is opened using one of the overloaded SessionFactory."
"openSession() methods accepting an <literal>Interceptor</literal>."
#. Tag: programlisting
#: events.xml:45
#, no-c-format
#: index.docbook:45
msgid "<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"
msgstr ""
"<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"
#. Tag: para
#: events.xml:47
#, no-c-format
#: index.docbook:47
msgid ""
"A <literal>SessionFactory</literal>-scoped interceptor is registered with "
"the <literal>Configuration</literal> object prior to building the "
@ -208,35 +265,28 @@ msgstr ""
"session-specific state since multiple sessions will use this interceptor "
"(potentially) concurrently."
#. Tag: programlisting
#: events.xml:56
#, no-c-format
#: index.docbook:56
msgid ""
"<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
msgstr ""
"<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
#. Tag: title
#: events.xml:61
#, no-c-format
#: index.docbook:61
msgid "Event system"
msgstr "Sistema de eventos"
#. Tag: para
#: events.xml:63
#, no-c-format
#: 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 ""
"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."
"puedes tambi&#x00e9;n la arquitectura de <emphasis>eventos</emphasis> de "
"Hibernate3. El sistema de eventos puede ser usado en adici&#x00f3;n o como "
"un remplazo a los interceptores."
#. Tag: para
#: events.xml:69
#, no-c-format
#: 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 "
@ -253,36 +303,34 @@ msgid ""
"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 "
"Esencialmente todos los m&#x00e9;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&#x00f3;n XML o el paquete <literal>org.hibernate.event</"
"literal> para la lista completa de tipos de evento definidos). Cuando se "
"hace una petici&#x00f3;n de uno de estos m&#x00e9;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&#x00e1;"
"brica, estos oyentes implementan el mismo procesamiento en los que siempre "
"resultan aquellos m&#x00e9;todos. Sin embargo, eres libre de implementar una "
"personalizaci&#x00f3;n de una de las interfaces oyentes (es decir, el "
"<literal>LoadEvent</literal> es procesado por la implementaci&#x00f3;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>."
"caso su implementaci&#x00f3;n ser&#x00ed;a responsable de procesar cualquier "
"petici&#x00f3;n <literal>load()</literal> hecha a la <literal>Session</"
"literal>."
#. Tag: para
#: events.xml:84
#, no-c-format
#: 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 ""
"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."
"que son compartidos entre las peticiones, y por lo tanto no guardan "
"ning&#x00fa;n estado en variables de instancia."
#. Tag: para
#: events.xml:89
#, no-c-format
#: 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 "
@ -296,16 +344,15 @@ 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:"
"Hibernate de f&#x00e1;brica al ser &#x00e9;stos declarados non-final para "
"este prop&#x00f3;sito). Los oyentes personalizados pueden ser registrados "
"program&#x00e1;ticamente a trav&#x00e9;s del objeto <literal>Configuration</"
"literal>, o especificados en el XML de configuraci&#x00f3;n de Hibernate (la "
"declaraci&#x00f3;n declarativa a trav&#x00e9;s del fichero de propiedades no "
"est&#x00e1; soportada). He aqu&#x00ed; un ejemplo de un oyente personalizado "
"de eventos load:"
#. Tag: programlisting
#: events.xml:99
#, no-c-format
#: index.docbook:99
msgid ""
"<![CDATA[public class MyLoadListener implements LoadEventListener {\n"
" // this is the single method defined by the LoadEventListener interface\n"
@ -319,20 +366,28 @@ msgid ""
" }\n"
"}]]>"
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"
"}]]>"
#. Tag: para
#: events.xml:101
#, no-c-format
#: index.docbook:101
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:"
"Necesitas adem&#x00e1;s una entrada de configuraci&#x00f3;n dici&#x00e9;"
"ndole a Hibernate que use el oyente en vez del oyente por defecto:"
#. Tag: programlisting
#: events.xml:106
#, no-c-format
#: index.docbook:106
msgid ""
"<![CDATA[<hibernate-configuration>\n"
" <session-factory>\n"
@ -345,26 +400,29 @@ msgid ""
" </session-factory>\n"
"</hibernate-configuration>]]>"
msgstr ""
"<![CDATA[<hibernate-configuration>\n"
" <session-factory>\n"
" ...\n"
" <listener type=\"load\" class=\"MyLoadListener\"/>\n"
" </session-factory>\n"
"</hibernate-configuration>]]>"
#. Tag: para
#: events.xml:108
#, no-c-format
#: index.docbook:108
msgid "Instead, you may register it programmatically:"
msgstr "En cambio, puedes registrarlo programáticamente:"
msgstr "En cambio, puedes registrarlo program&#x00e1;ticamente:"
#. Tag: programlisting
#: events.xml:112
#, no-c-format
#: index.docbook:112
msgid ""
"<![CDATA[Configuration cfg = new Configuration();\n"
"LoadEventListener[] stack = { new MyLoadListener(), new "
"DefaultLoadEventListener() };\n"
"cfg.EventListeners().setLoadEventListeners(stack);]]>"
msgstr ""
"<![CDATA[Configuration cfg = new Configuration();\n"
"cfg.getSessionEventListenerConfig().setLoadEventListener( new MyLoadListener"
"() );]]>"
#. Tag: para
#: events.xml:114
#, no-c-format
#: index.docbook:114
msgid ""
"Listeners registered declaratively cannot share instances. If the same class "
"name is used in multiple <literal>&lt;listener/&gt;</literal> elements, each "
@ -373,14 +431,13 @@ msgid ""
"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>&lt;"
"listener/&gt;</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."
"el mismo nombre de clase es usado en m&#x00fa;ltiples elementos <literal>&lt;"
"listener/&gt;</literal>, cada referencia resultar&#x00e1; 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&#x00f3;n "
"program&#x00e1;tica."
#. Tag: para
#: events.xml:122
#, no-c-format
#: index.docbook:122
msgid ""
"Why implement an interface and define the specific type during "
"configuration? Well, a listener implementation could implement multiple "
@ -388,21 +445,18 @@ msgid ""
"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."
"&#x00bf;Por qu&#x00e9; implementar una interface y definir el tipo "
"espc&#x00ed;fico durante la configuraci&#x00f3;n? Bueno, una "
"implementaci&#x00f3;n de oyente podr&#x00ed;a implementar m&#x00fa;ltiples "
"interfaces de oyente de eventos. Teniendo el tipo definido adicionalmente "
"durante la registraci&#x00f3;n lo hace m&#x00e1;s f&#x00e1;cil para activar "
"o desactivar oyentes personalizados durante la configuraci&#x00f3;n."
#. Tag: title
#: events.xml:132
#, no-c-format
#: index.docbook:132
msgid "Hibernate declarative security"
msgstr "Seguridad declarativa de Hibernate"
#. Tag: para
#: events.xml:133
#, no-c-format
#: index.docbook:133
msgid ""
"Usually, declarative security in Hibernate applications is managed in a "
"session facade layer. Now, Hibernate3 allows certain actions to be "
@ -410,23 +464,20 @@ msgid ""
"functionality built on top of the event architecture."
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."
"en una capa de fachada de sesi&#x00f3;n. Ahora, Hibernate3 permite que "
"ciertas acciones sean permitidas v&#x00ed;a JACC, y autorizadas v&#x00ed;a "
"JAAS. Esta en una funcionalidad opcional constru&#x00ed;da encima de la "
"arquitectura de eventos."
#. Tag: para
#: events.xml:139
#, no-c-format
#: index.docbook:139
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."
"el uso de autorizaci&#x00f3;n JAAS."
#. Tag: programlisting
#: events.xml:144
#, no-c-format
#: index.docbook:144
msgid ""
"<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure."
"JACCPreDeleteEventListener\"/>\n"
@ -437,10 +488,16 @@ msgid ""
"<listener type=\"pre-load\" class=\"org.hibernate.secure."
"JACCPreLoadEventListener\"/>]]>"
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\"/>]]>"
#. Tag: para
#: events.xml:146
#, no-c-format
#: index.docbook:146
msgid ""
"Note that <literal>&lt;listener type=\"...\" class=\"...\"/&gt;</literal> is "
"just a shorthand for <literal>&lt;event type=\"...\"&gt;&lt;listener class="
@ -452,27 +509,30 @@ msgstr ""
"listener class=\"...\"/&gt;&lt;/event&gt;</literal> when there is exactly "
"one listener for a particular event type."
#. Tag: para
#: events.xml:152
#, no-c-format
#: index.docbook:152
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:"
"Seguido, a&#x00fa;n en <literal>hibernate.cfg.xml</literal>, liga los "
"permisos a roles:"
#. Tag: programlisting
#: events.xml:156
#, no-c-format
#: index.docbook:156
msgid ""
"<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,update,"
"read\"/>\n"
"<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"
msgstr ""
"<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,update,"
"read\"/>\n"
"<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"
#. Tag: para
#: events.xml:158
#, no-c-format
#: index.docbook:158
msgid "The role names are the roles understood by your JACC provider."
msgstr "Los nombres de role son los roles entendidos por tu proveedor de JACC."
msgid "ROLES_OF_TRANSLATORS"
msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
msgid "CREDIT_FOR_TRANSLATORS"
msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"

View File

@ -1,36 +1,24 @@
#, 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"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=utf-8\n"
#. Tag: title
#: example_mappings.xml:20
#, no-c-format
#: index.docbook:20
msgid "Example: Various Mappings"
msgstr "Ejemplo: Varios Mapeos"
#. Tag: para
#: example_mappings.xml:22
#, no-c-format
#: index.docbook:22
msgid "This chapters shows off some more complex association mappings."
msgstr "Este capítulo muestra mapeos de asociaciones más complejos."
msgstr ""
"Este cap&#x00ed;tulo muestra mapeos de asociaciones m&#x00e1;s complejos."
#. Tag: title
#: example_mappings.xml:27
#, no-c-format
#: index.docbook:27
msgid "Employer/Employee"
msgstr "Empleador/Empleado"
#. Tag: para
#: example_mappings.xml:29
#, no-c-format
#: index.docbook:29
msgid ""
"The following model of the relationship between <literal>Employer</literal> "
"and <literal>Employee</literal> uses an actual entity class "
@ -38,22 +26,18 @@ msgid ""
"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."
"El siguiente modelo de la relaci&#x00f3;n entre <literal>Employer</literal> "
"y <literal>Employee</literal> usa una clase de entidad real "
"(<literal>Employment</literal>) para representar la asociaci&#x00f3;n. Esto "
"se ha hecho esto porque podr&#x00ed;a haber m&#x00e1;s de un per&#x00ed;odo "
"de empleo para los mismos dos participantes. Se usan componentes para "
"modelar valores monetarios y nombres de empleado."
#. Tag: para
#: example_mappings.xml:46
#, no-c-format
#: index.docbook:46
msgid "Heres a possible mapping document:"
msgstr "He aquí un documento de mapeo posible:"
msgstr "He aqu&#x00ed; un documento de mapeo posible:"
#. Tag: programlisting
#: example_mappings.xml:50
#, no-c-format
#: index.docbook:50
msgid ""
"<![CDATA[<hibernate-mapping>\n"
" \n"
@ -106,18 +90,65 @@ msgid ""
"\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>]]>"
#. Tag: para
#: example_mappings.xml:52
#, no-c-format
#: 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>."
"Y he aqu&#x00ed; el esquema de tablas generado por <literal>SchemaExport</"
"literal>."
#. Tag: programlisting
#: example_mappings.xml:56
#, no-c-format
#: index.docbook:56
msgid ""
"<![CDATA[create table employers (\n"
" id BIGINT not null, \n"
@ -155,16 +186,47 @@ msgid ""
"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]]>"
#. Tag: title
#: example_mappings.xml:61
#, no-c-format
#: index.docbook:61
msgid "Author/Work"
msgstr "Autor/Obra"
#. Tag: para
#: example_mappings.xml:63
#, no-c-format
#: index.docbook:63
msgid ""
"Consider the following model of the relationships between <literal>Work</"
"literal>, <literal>Author</literal> and <literal>Person</literal>. We "
@ -176,23 +238,20 @@ msgid ""
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>."
"Representamos la relaci&#x00f3;n entre <literal>Work</literal> y "
"<literal>Author</literal> como una asociaci&#x00f3;n muchos-a-muchos. "
"Elegimos representar la relaci&#x00f3;n entre <literal>Author</literal> y "
"<literal>Person</literal> como una asociaci&#x00f3;n uno-a-uno. Otra "
"posibilidad hubiese sido que <literal>Author</literal> extendiera "
"<literal>Person</literal>."
#. Tag: para
#: example_mappings.xml:81
#, no-c-format
#: index.docbook:81
msgid ""
"The following mapping document correctly represents these relationships:"
msgstr ""
"El siguiente documento de mapeo representa estas relaciones correctamente:"
#. Tag: programlisting
#: example_mappings.xml:85
#, no-c-format
#: index.docbook:85
msgid ""
"<![CDATA[<hibernate-mapping>\n"
"\n"
@ -246,10 +305,59 @@ msgid ""
"\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>]]>"
#. Tag: para
#: example_mappings.xml:87
#, no-c-format
#: index.docbook:87
msgid ""
"There are four tables in this mapping. <literal>works</literal>, "
"<literal>authors</literal> and <literal>persons</literal> hold work, author "
@ -260,12 +368,10 @@ 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>."
"asociaci&#x00f3;n enlazando autores a obras. He aqu&#x00ed; el esquema de "
"tablas, tal como fue generado por <literal>SchemaExport</literal>."
#. Tag: programlisting
#: example_mappings.xml:95
#, no-c-format
#: index.docbook:95
msgid ""
"<![CDATA[create table works (\n"
" id BIGINT not null generated by default as identity, \n"
@ -303,16 +409,47 @@ msgid ""
"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]]>"
#. Tag: title
#: example_mappings.xml:100
#, no-c-format
#: index.docbook:100
msgid "Customer/Order/Product"
msgstr "Cliente/Orden/Producto"
#. Tag: para
#: example_mappings.xml:102
#, no-c-format
#: index.docbook:102
msgid ""
"Now consider a model of the relationships between <literal>Customer</"
"literal>, <literal>Order</literal> and <literal>LineItem</literal> and "
@ -326,23 +463,20 @@ msgid ""
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."
"<literal>Product</literal>. Hay una asociaci&#x00f3;n uno-a-muchos entre "
"<literal>Customer</literal> y <literal>Order</literal>, pero, &#x00bf;"
"c&#x00f3;mo deber&#x00ed;amos representar <literal>Order</literal> / "
"<literal>LineItem</literal> / <literal>Product</literal>? He elegido mapear "
"<literal>LineItem</literal> como una clase de asociaci&#x00f3;n "
"representando la asociaci&#x00f3;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:122
#, no-c-format
#: index.docbook:122
msgid "The mapping document:"
msgstr "El documento de mapeo:"
#. Tag: programlisting
#: example_mappings.xml:126
#, no-c-format
#: index.docbook:126
msgid ""
"<![CDATA[<hibernate-mapping>\n"
"\n"
@ -382,10 +516,45 @@ msgid ""
"\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>]]>"
#. Tag: para
#: example_mappings.xml:128
#, no-c-format
#: index.docbook:128
msgid ""
"<literal>customers</literal>, <literal>orders</literal>, "
"<literal>line_items</literal> and <literal>products</literal> hold customer, "
@ -394,13 +563,11 @@ msgid ""
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."
"de cliente, orden, &#x00ed;tem de l&#x00ed;nea de orden y producto "
"respectivamente. Adem&#x00e1;s <literal>line_items</literal> act&#x00fa;a "
"como una tabla de asociaci&#x00f3;n enlazando &#x00f3;rdenes con productos."
#. Tag: programlisting
#: example_mappings.xml:135
#, no-c-format
#: index.docbook:135
msgid ""
"<![CDATA[create table customers (\n"
" id BIGINT not null generated by default as identity, \n"
@ -437,40 +604,65 @@ msgid ""
"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]]>"
#. Tag: title
#: example_mappings.xml:140
#, no-c-format
#: index.docbook:140
msgid "Miscellaneous example mappings"
msgstr "Mapeos misceláneos de ejemplo"
msgstr "Mapeos miscel&#x00e1;neos de ejemplo"
#. Tag: para
#: example_mappings.xml:142
#, no-c-format
#: 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."
"Todos estos ejemplos est&#x00e1;n tomados de la bater&#x00ed;a de pruebas de "
"Hibernate. Encontrar&#x00e1;s muchos otros mapeos de ejemplo &#x00fa;tiles "
"all&#x00ed;. Mira en la carpeta <literal>test</literal> de la "
"distribuci&#x00f3;n de Hibernate."
#. Tag: para
#: example_mappings.xml:148
#, no-c-format
#: index.docbook:148
msgid "TODO: put words around this stuff"
msgstr "POR HACER: poner palabras alrededor de este material"
#. Tag: title
#: example_mappings.xml:151
#, no-c-format
#: index.docbook:151
msgid "\"Typed\" one-to-one association"
msgstr "Asociación uno-a-uno \"Tipificada\""
msgstr "Asociaci&#x00f3;n uno-a-uno \"Tipificada\""
#. Tag: programlisting
#: example_mappings.xml:152
#, no-c-format
#: index.docbook:152
msgid ""
"<![CDATA[<class name=\"Person\">\n"
" <id name=\"name\"/>\n"
@ -499,16 +691,38 @@ msgid ""
" <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>]]>"
#. Tag: title
#: example_mappings.xml:156
#, no-c-format
#: index.docbook:156
msgid "Composite key example"
msgstr "Ejemplo de clave compuesta"
#. Tag: programlisting
#: example_mappings.xml:157
#, no-c-format
#: index.docbook:157
msgid ""
"<![CDATA[<class name=\"Customer\">\n"
"\n"
@ -624,16 +838,125 @@ msgid ""
" \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>]]>"
#. Tag: title
#: example_mappings.xml:161
#, no-c-format
#: index.docbook:161
msgid "Many-to-many with shared composite key attribute"
msgstr "Muchos-a-muchos con atributo de clave compuesta compartido"
#. Tag: programlisting
#: example_mappings.xml:162
#, no-c-format
#: index.docbook:162
msgid ""
"<![CDATA[<class name=\"User\" table=\"`User`\">\n"
" <composite-id>\n"
@ -671,16 +994,47 @@ msgid ""
"</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"
"]]>"
#. Tag: title
#: example_mappings.xml:166
#, no-c-format
#: index.docbook:166
msgid "Content based discrimination"
msgstr "Discriminación basada en contenido"
msgstr "Discriminaci&#x00f3;n basada en contenido"
#. Tag: programlisting
#: example_mappings.xml:167
#, no-c-format
#: index.docbook:167
msgid ""
"<![CDATA[<class name=\"Person\"\n"
" discriminator-value=\"P\">\n"
@ -733,16 +1087,62 @@ msgid ""
" \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>]]>"
#. Tag: title
#: example_mappings.xml:171
#, no-c-format
#: index.docbook:171
msgid "Associations on alternate keys"
msgstr "Asociaciones sobre claves alternativas"
#. Tag: programlisting
#: example_mappings.xml:172
#, no-c-format
#: index.docbook:172
msgid ""
"<![CDATA[<class name=\"Person\">\n"
" \n"
@ -794,3 +1194,58 @@ msgid ""
" \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-->"

View File

@ -1,24 +1,15 @@
#, 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"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=utf-8\n"
#. Tag: title
#: example_parentchild.xml:5
#, no-c-format
#: index.docbook:5
msgid "Example: Parent/Child"
msgstr "Ejemplo: Padre/Hijo"
#. Tag: para
#: example_parentchild.xml:7
#, no-c-format
#: 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 "
@ -35,52 +26,46 @@ msgid ""
"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>&lt;one-to-many&gt;</literal> desde <literal>Parent</"
"literal> a <literal>Child</literal>. (El enfoque alternativo es declarar el "
"<literal>Child</literal> como un <literal>&lt;composite-element&gt;</"
"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!"
"Una de las primer&#x00ed;simas cosas que los usuarios nuevos intentan hacer "
"con Hibernate es modelar una relaci&#x00f3;n de tipo padre / hijo. Para esto "
"hay dos enfoques diferentes. Por varias razones, el enfoque m&#x00e1;s "
"conveniente, especialmente para usuarios nuevos, es modelar tanto "
"<literal>Parent</literal> como <literal>Child</literal> como clases de "
"entidad con una asociaci&#x00f3;n <literal>&lt;one-to-many&gt;</literal> "
"desde <literal>Parent</literal> a <literal>Child</literal>. (El enfoque "
"alternativo es declarar el <literal>Child</literal> como un <literal>&lt;"
"composite-element&gt;</literal>.) Ahora, resulta que la sem&#x00e1;ntica por "
"defecto de una asociaci&#x00f3;n uno a muchos (en Hibernate) es mucho menos "
"cercana a la sem&#x00e1;ntica usual de una relaci&#x00f3;n padre / hijo que "
"aquellas de un mapeo de elementos compuestos. Explicaremos c&#x00f3;mo usar "
"una <emphasis>asociaci&#x00f3;n uno a muchos bidireccional con tratamiento "
"en cascada</emphasis> para modelar una relaci&#x00f3;n padre / hijo "
"eficiente y elegantemente. &#x00a1;No es para nada dif&#x00ed;cil!"
#. Tag: title
#: example_parentchild.xml:21
#, no-c-format
#: index.docbook:21
msgid "A note about collections"
msgstr "Una nota sobre las colecciones"
#. Tag: para
#: example_parentchild.xml:23
#, no-c-format
#: 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:"
"Se considera que las colecciones de Hibernate son una parte l&#x00f3;gica de "
"la entidad que las posee; nunca de las entidades contenidas. &#x00a1;Esta es "
"una distinci&#x00f3;n crucial! Esto tiene las siguientes consecuencias:"
#. Tag: para
#: example_parentchild.xml:30
#, no-c-format
#: 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."
"Cuando se quita / a&#x00f1;ade un objeto desde / a una colecci&#x00f3;n, se "
"incrementa el n&#x00fa;mero de versi&#x00f3;n del due&#x00f1;o de la "
"colecci&#x00f3;n."
#. Tag: para
#: example_parentchild.xml:36
#, no-c-format
#: 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 "
@ -88,15 +73,13 @@ msgid ""
"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."
"Si un objeto que fue quitado de una colecci&#x00f3;n es una instancia de un "
"tipo de valor (por ejemplo, un elemento compuesto), ese objeta cesar&#x00e1; "
"de ser persistente y su estado ser&#x00e1; completamente quitado de la base "
"de datos. Asimismo, a&#x00f1;adir una instancia de tipo de valor a la "
"colecci&#x00f3;n causar&#x00e1; que su estado sea inmediatamente persistente."
#. Tag: para
#: example_parentchild.xml:44
#, no-c-format
#: 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 "
@ -105,16 +88,14 @@ msgid ""
"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."
"Por otro lado, si se quita una entidad de una colecci&#x00f3;n (una "
"asociaci&#x00f3;n uno-a-muchos o muchos-a-muchos), no ser&#x00e1; borrado, "
"por defecto. Este comportamiento es completamente consistente. &#x00a1;Un "
"cambio en el estado interno de otra entidad no hace desaparecer la entidad "
"asociada! Asimismo, a&#x00f1;adir una entidad a una colecci&#x00f3;n no "
"causa que la entidad se vuelva persistente, por defecto."
#. Tag: para
#: example_parentchild.xml:54
#, no-c-format
#: 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 "
@ -122,47 +103,43 @@ msgid ""
"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."
"En cambio, el comportamiento por defecto es que al a&#x00f1;adir una entidad "
"a una colecci&#x00f3;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&#x00f3;n padre / hijo. donde la vida del hijo est&#x00e1; ligada "
"al ciclo de vida del padre."
#. Tag: title
#: example_parentchild.xml:64
#, no-c-format
#: index.docbook:64
msgid "Bidirectional one-to-many"
msgstr "Uno-a-muchos bidirectional"
#. Tag: para
#: example_parentchild.xml:66
#, no-c-format
#: index.docbook:66
msgid ""
"Suppose we start with a simple <literal>&lt;one-to-many&gt;</literal> "
"association from <literal>Parent</literal> to <literal>Child</literal>."
msgstr ""
"Supón que empezamos con una asociación simple <literal>&lt;one-to-many&gt;</"
"literal> desde <literal>Parent</literal> a <literal>Child</literal>."
"Sup&#x00f3;n que empezamos con una asociaci&#x00f3;n simple <literal>&lt;one-"
"to-many&gt;</literal> desde <literal>Parent</literal> a <literal>Child</"
"literal>."
#. Tag: programlisting
#: example_parentchild.xml:71
#, no-c-format
#: index.docbook:71
msgid ""
"<![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>]]>"
#. Tag: para
#: example_parentchild.xml:73
#, no-c-format
#: index.docbook:73
msgid "If we were to execute the following code"
msgstr "Si ejecutásemos el siguiente código"
msgstr "Si ejecut&#x00e1;semos el siguiente c&#x00f3;digo"
#. Tag: programlisting
#: example_parentchild.xml:77
#, no-c-format
#: index.docbook:77
msgid ""
"<![CDATA[Parent p = .....;\n"
"Child c = new Child();\n"
@ -170,24 +147,23 @@ msgid ""
"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();]]>"
#. Tag: para
#: example_parentchild.xml:79
#, no-c-format
#: index.docbook:79
msgid "Hibernate would issue two SQL statements:"
msgstr "Hibernate publicaría dos sentencias SQL:"
msgstr "Hibernate publicar&#x00ed;a dos sentencias SQL:"
#. Tag: para
#: example_parentchild.xml:85
#, no-c-format
#: 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:88
#, no-c-format
#: index.docbook:88
msgid ""
"an <literal>UPDATE</literal> to create the link from <literal>p</literal> to "
"<literal>c</literal>"
@ -195,39 +171,36 @@ msgstr ""
"un <literal>UPDATE</literal> para crear el enlace desde <literal>p</literal> "
"a <literal>c</literal>"
#. Tag: para
#: example_parentchild.xml:95
#, no-c-format
#: 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:"
"Esto no es s&#x00f3;lo ineficiente, sino que adem&#x00e1;s viola cualquier "
"restricci&#x00f3;n <literal>NOT NULL</literal> en la columna "
"<literal>parent_id</literal>. Podemos reparar la violaci&#x00f3;n de "
"restricci&#x00f3;n de nulabilidad especificando <literal>not-null=\"true\"</"
"literal> en el mapeo de la colecci&#x00f3;n:"
#. Tag: programlisting
#: example_parentchild.xml:101
#, no-c-format
#: index.docbook:101
msgid ""
"<![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>]]>"
#. Tag: para
#: example_parentchild.xml:103
#, no-c-format
#: index.docbook:103
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&#x00f3;n recomendada."
#. Tag: para
#: example_parentchild.xml:106
#, no-c-format
#: 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</"
@ -235,63 +208,58 @@ msgid ""
"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>."
"El caso subyacente de este comportamiento es que el enlace (la clave "
"for&#x00e1;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&#x00f3;n es hacer el enlace parte del mapeo "
"del <literal>Child</literal>."
#. Tag: programlisting
#: example_parentchild.xml:113
#, no-c-format
#: 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: para
#: example_parentchild.xml:115
#, no-c-format
#: 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>.)"
"(Necesitamos adem&#x00e1;s a&#x00f1;adir la propiedad <literal>parent</"
"literal> a la clase <literal>Child</literal>.)"
#. Tag: para
#: example_parentchild.xml:119
#, no-c-format
#: 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>."
"Ahora que la entidad <literal>Child</literal> est&#x00e1; gestionando el "
"estado del enlace, le decimos a la colecci&#x00f3;n que no actualice el "
"enlace. Usamos el atributo <literal>inverse</literal>."
#. Tag: programlisting
#: example_parentchild.xml:124
#, no-c-format
#: index.docbook:124
msgid ""
"<![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>]]>"
#. Tag: para
#: example_parentchild.xml:126
#, no-c-format
#: index.docbook:126
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>"
"El siguiente c&#x00f3;digo podr&#x00ed;a ser usado para a&#x00f1;adir un "
"nuevo <literal>Child</literal>"
#. Tag: programlisting
#: example_parentchild.xml:130
#, no-c-format
#: index.docbook:130
msgid ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = new Child();\n"
@ -300,42 +268,46 @@ msgid ""
"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();]]>"
#. Tag: para
#: example_parentchild.xml:132
#, no-c-format
#: index.docbook:132
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, &#x00a1;S&#x00f3;lo se publicar&#x00ed;a un <literal>INSERT</"
"literal> de SQL!"
#. Tag: para
#: example_parentchild.xml:136
#, no-c-format
#: 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>."
"Para ajustar un poco m&#x00e1;s las cosas, podr&#x00ed;amos crear un "
"m&#x00e9;todo <literal>addChild()</literal> en <literal>Parent</literal>."
#. Tag: programlisting
#: example_parentchild.xml:141
#, no-c-format
#: index.docbook:141
msgid ""
"<![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"
"}]]>"
#. Tag: para
#: example_parentchild.xml:143
#, no-c-format
#: index.docbook:143
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&#x00f3;digo para a&#x00f1;adir un <literal>Child</literal> se ve "
"as&#x00ed;"
#. Tag: programlisting
#: example_parentchild.xml:147
#, no-c-format
#: index.docbook:147
msgid ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = new Child();\n"
@ -343,52 +315,53 @@ msgid ""
"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();]]>"
#. Tag: title
#: example_parentchild.xml:152
#, no-c-format
#: index.docbook:152
msgid "Cascading life cycle"
msgstr "Ciclo de vida en cascada"
#. Tag: para
#: example_parentchild.xml:154
#, no-c-format
#: 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."
"La llamada expl&#x00ed;cita a <literal>save()</literal> es a&#x00fa;n "
"molesta. Apuntaremos a esto usando tratamientos en cascada."
#. Tag: programlisting
#: example_parentchild.xml:159
#, no-c-format
#: index.docbook:159
msgid ""
"<![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>]]>"
#. Tag: para
#: example_parentchild.xml:161
#, no-c-format
#: index.docbook:161
msgid "This simplifies the code above to"
msgstr "Esto simplifica el código anterior a"
msgstr "Esto simplifica el c&#x00f3;digo anterior a"
#. Tag: programlisting
#: example_parentchild.xml:165
#, no-c-format
#: index.docbook:165
msgid ""
"<![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();]]>"
#. Tag: para
#: example_parentchild.xml:167
#, no-c-format
#: 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</"
@ -398,24 +371,21 @@ msgstr ""
"<literal>Parent</literal>. Lo siguiente quita <literal>p</literal> y todos "
"sus hijos de la base de datos."
#. Tag: programlisting
#: example_parentchild.xml:172
#, no-c-format
#: index.docbook:172
msgid ""
"<![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();]]>"
#. Tag: para
#: example_parentchild.xml:174
#, no-c-format
#: index.docbook:174
msgid "However, this code"
msgstr "Sin embargo, este código"
msgstr "Sin embargo, este c&#x00f3;digo"
#. Tag: programlisting
#: example_parentchild.xml:178
#, no-c-format
#: index.docbook:178
msgid ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = (Child) p.getChildren().iterator().next();\n"
@ -423,24 +393,26 @@ msgid ""
"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();]]>"
#. Tag: para
#: example_parentchild.xml:180
#, no-c-format
#: 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>."
"no quitar&#x00e1; <literal>c</literal> de la base de datos; s&#x00f3;lo "
"quitar&#x00e1; el enlace a <literal>p</literal> (y causar&#x00e1; una "
"violaci&#x00f3;n a una restricci&#x00f3;n <literal>NOT NULL</literal>). "
"Necesitas borrar el hijo expl&#x00ed;citamente llamando a <literal>delete()</"
"literal>."
#. Tag: programlisting
#: example_parentchild.xml:186
#, no-c-format
#: index.docbook:186
msgid ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = (Child) p.getChildren().iterator().next();\n"
@ -448,10 +420,13 @@ msgid ""
"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();]]>"
#. Tag: para
#: example_parentchild.xml:188
#, no-c-format
#: 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 "
@ -460,12 +435,10 @@ msgid ""
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>."
"de la colecci&#x00f3;n, realmente queremos que sea borrado. Para esto, "
"debemos usar <literal>cascade=\"all-delete-orphan\"</literal>."
#. Tag: programlisting
#: example_parentchild.xml:194
#, no-c-format
#: index.docbook:194
msgid ""
"<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all-delete-orphan"
"\">\n"
@ -473,10 +446,13 @@ msgid ""
" <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>]]>"
#. Tag: para
#: example_parentchild.xml:196
#, no-c-format
#: index.docbook:196
msgid ""
"Note: even though the collection mapping specifies <literal>inverse=\"true"
"\"</literal>, cascades are still processed by iterating the collection "
@ -484,21 +460,18 @@ msgid ""
"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>."
"Nota: aunque el mapeo de la colecci&#x00f3;n especifique <literal>inverse="
"\"true\"</literal>, el tratamiento en cascada se procesa a&#x00fa;n al "
"iterar los elementos de colecci&#x00f3;n. De modo que si requieres que un "
"objeto sea salvado, borrado o actualizado en cascada, debes a&#x00f1;adirlo "
"a la colecci&#x00f3;n. No es suficiente con simplemente llamar a "
"<literal>setParent()</literal>."
#. Tag: title
#: example_parentchild.xml:206
#, no-c-format
#: index.docbook:206
msgid "Cascades and <literal>unsaved-value</literal>"
msgstr "Tratamiento en cascada y <literal>unsaved-value</literal>"
#. Tag: para
#: example_parentchild.xml:208
#, no-c-format
#: 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 "
@ -513,23 +486,23 @@ msgid ""
"\"/>.) <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>"
"Sup&#x00f3;n que hemos cargado un <literal>Parent</literal> en una "
"<literal>Session</literal>, hemos hecho algunos cambios en una acci&#x00f3;n "
"de UI y deseamos hacer persistentes estos cambios en una nueva sesi&#x00f3;n "
"llamando a <literal>update()</literal>. El <literal>Parent</literal> "
"contendr&#x00e1; una colecci&#x00f3;n de hijos y, ya que est&#x00e1; "
"habilitado el tratamiento en cascada, Hibernate necesita saber qu&#x00e9; "
"hijos est&#x00e1;n reci&#x00e9;n instanciados y cu&#x00e1;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&#x00e1; el "
"identificador y el valor de la propiedad de versi&#x00f3;n/timestamp para "
"determinar cu&#x00e1;les de los hijos son nuevos. (Ver <xref linkend="
"\"objectstate-saveorupdate\"/>.) <emphasis>En Hibernate3, no es m&#x00e1;s "
"necesario especificar un <literal>unsaved-value</literal> expl&#x00ed;"
"citamente.</emphasis>"
#. Tag: para
#: example_parentchild.xml:220
#, no-c-format
#: index.docbook:220
msgid ""
"The following code will update <literal>parent</literal> and <literal>child</"
"literal> and insert <literal>newChild</literal>."
@ -537,9 +510,7 @@ msgstr ""
"The following code will update <literal>parent</literal> and <literal>child</"
"literal> and insert <literal>newChild</literal>."
#. Tag: programlisting
#: example_parentchild.xml:225
#, no-c-format
#: index.docbook:225
msgid ""
"<![CDATA[//parent and child were both loaded in a previous session\n"
"parent.addChild(child);\n"
@ -548,10 +519,14 @@ msgid ""
"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();]]>"
#. Tag: para
#: example_parentchild.xml:227
#, no-c-format
#: 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 "
@ -562,36 +537,32 @@ msgid ""
"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."
"Bueno, todo eso est&#x00e1; muy bien para el caso de un identificador "
"generado, pero &#x00bf;qu&#x00e9; de los identificadores asignados y de los "
"identificadores compuestos? Esto es m&#x00e1;s dif&#x00ed;cil, ya que "
"Hibernate no puede usar la propiedad identificadora para distinguir entre un "
"objeto reci&#x00e9;n instanciado (con un identificador asignado por el "
"usuario) y un objeto cargado en una sesi&#x00f3;n previa. En este caso, "
"Hibernate bien usar&#x00e1; la propiedad de versi&#x00f3;n o timestamp, o "
"bien consultar&#x00e1; realmente el cach&#x00e9; de segundo nivel, o bien, "
"en el peor de los casos, la base de datos, para ver si existe la fila."
#. Tag: title
#: example_parentchild.xml:260
#, no-c-format
#: index.docbook:260
msgid "Conclusion"
msgstr "Conclusión"
msgstr "Conclusi&#x00f3;n"
#. Tag: para
#: example_parentchild.xml:262
#, no-c-format
#: 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."
"Hay que resumir un poco aqu&#x00ed; y podr&#x00ed;a parecer confuso a la "
"primera vez. Sin embargo, en la pr&#x00e1;ctica, todo funciona muy "
"agradablemente. La mayor&#x00ed;a de las aplicaciones de Hibernate usan el "
"patr&#x00f3;n padre / hijo en muchos sitios."
#. Tag: para
#: example_parentchild.xml:267
#, no-c-format
#: index.docbook:267
msgid ""
"We mentioned an alternative in the first paragraph. None of the above issues "
"exist in the case of <literal>&lt;composite-element&gt;</literal> mappings, "
@ -600,10 +571,16 @@ msgid ""
"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>&lt;composite-element&gt;"
"</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."
"Hemos mencionado una alternativa en el primer p&#x00e1;rrafo. Ninguno de los "
"temas anteriores existe en el caso de los mapeos <literal>&lt;composite-"
"element&gt;</literal>, que tienen exactamente la sem&#x00e1;ntica de una "
"relaci&#x00f3;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 &#x00fa;nico."
msgid "ROLES_OF_TRANSLATORS"
msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
msgid "CREDIT_FOR_TRANSLATORS"
msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"

View File

@ -1,42 +1,29 @@
#, 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"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=utf-8\n"
#. Tag: title
#: example_weblog.xml:5
#, no-c-format
#: index.docbook:5
msgid "Example: Weblog Application"
msgstr "Ejemplo: Aplicación de Weblog"
msgstr "Ejemplo: Aplicaci&#x00f3;n de Weblog"
#. Tag: title
#: example_weblog.xml:8
#, no-c-format
#: index.docbook:8
msgid "Persistent Classes"
msgstr "Clases Persistentes"
#. Tag: para
#: example_weblog.xml:10
#, no-c-format
#: 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)."
"Las clases persistentes representan un weblog, y un &#x00ed;tem enviado a un "
"weblog. Van a ser modelados como una relaci&#x00f3;n padre/hijo est&#x00f1;"
"ndar, pero usaremos un bag ordenado, en vez de un conjunto (set)."
#. Tag: programlisting
#: example_weblog.xml:16
#, no-c-format
#: index.docbook:16
msgid ""
"<![CDATA[package eg;\n"
"\n"
@ -67,10 +54,36 @@ msgid ""
" }\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"
"}]]>"
#. Tag: programlisting
#: example_weblog.xml:18
#, no-c-format
#: index.docbook:18
msgid ""
"<![CDATA[package eg;\n"
"\n"
@ -116,22 +129,59 @@ msgid ""
" }\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"
"}]]>"
#. Tag: title
#: example_weblog.xml:23
#, no-c-format
#: index.docbook:23
msgid "Hibernate Mappings"
msgstr "Mapeos de Hibernate"
#. Tag: para
#: example_weblog.xml:25
#, no-c-format
#: index.docbook:25
msgid "The XML mappings should now be quite straightforward."
msgstr "Los mapeos XML ahora deben ser absolutamente directos."
#. Tag: programlisting
#: example_weblog.xml:29
#, no-c-format
#: index.docbook:29
msgid ""
"<![CDATA[<?xml version=\"1.0\"?>\n"
"<!DOCTYPE hibernate-mapping PUBLIC\n"
@ -173,10 +223,47 @@ msgid ""
"\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>]]>"
#. Tag: programlisting
#: example_weblog.xml:31
#, no-c-format
#: index.docbook:31
msgid ""
"<![CDATA[<?xml version=\"1.0\"?>\n"
"<!DOCTYPE hibernate-mapping PUBLIC\n"
@ -222,16 +309,55 @@ msgid ""
"\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>]]>"
#. Tag: title
#: example_weblog.xml:36
#, no-c-format
#: index.docbook:36
msgid "Hibernate Code"
msgstr "Código Hibernate"
msgstr "C&#x00f3;digo Hibernate"
#. Tag: para
#: example_weblog.xml:38
#, no-c-format
#: index.docbook:38
msgid ""
"The following class demonstrates some of the kinds of things we can do with "
"these classes, using Hibernate."
@ -239,9 +365,7 @@ msgstr ""
"La siguiente clase demuestra algunos de los tipos de cosas que podemos haces "
"con estas clases, usando Hibernate."
#. Tag: programlisting
#: example_weblog.xml:43
#, no-c-format
#: index.docbook:43
msgid ""
"<![CDATA[package eg;\n"
"\n"
@ -482,3 +606,247 @@ msgid ""
" }\n"
"}]]>"
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"
"}]]>"
msgid "ROLES_OF_TRANSLATORS"
msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
msgid "CREDIT_FOR_TRANSLATORS"
msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"

View File

@ -1,24 +1,15 @@
#, 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"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=utf-8\n"
#. Tag: title
#: filters.xml:5
#, no-c-format
#: index.docbook:5
msgid "Filtering data"
msgstr "Filtrando datos"
#. Tag: para
#: filters.xml:7
#, no-c-format
#: index.docbook:7
msgid ""
"Hibernate3 provides an innovative new approach to handling data with "
"\"visibility\" rules. A <emphasis>Hibernate filter</emphasis> is a global, "
@ -30,15 +21,11 @@ msgstr ""
"global, con nombre y parametrizado que puede ser habilitado o deshabilitado "
"para una sesión de Hibernate en particular."
#. Tag: title
#: filters.xml:14
#, no-c-format
#: index.docbook:14
msgid "Hibernate filters"
msgstr "Filtros de Hibernate"
#. Tag: para
#: filters.xml:16
#, no-c-format
#: 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 "
@ -59,9 +46,7 @@ msgstr ""
"Los filtros pueden ser usados como vistas de base de datos, pero "
"parametrizados dentro de la aplicación."
#. Tag: para
#: filters.xml:26
#, no-c-format
#: 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>&lt;"
@ -73,24 +58,21 @@ msgstr ""
"<literal>&lt;filter-def/&gt;</literal> dentro de un elemento <literal>&lt;"
"hibernate-mapping/&gt;</literal>:"
#. Tag: programlisting
#: filters.xml:32
#, no-c-format
#: index.docbook:32
msgid ""
"<![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>]]>"
#. Tag: para
#: filters.xml:34
#, no-c-format
#: index.docbook:34
msgid "Then, this filter can be attached to a class:"
msgstr "Entonces este filtro puede ser unido a una clase:"
#. Tag: programlisting
#: filters.xml:38
#, no-c-format
#: index.docbook:38
msgid ""
"<![CDATA[<class name=\"myClass\" ...>\n"
" ...\n"
@ -98,32 +80,33 @@ msgid ""
"\"/>\n"
"</class>]]>"
msgstr ""
"<![CDATA[<class name=\"myClass\" ...>\n"
" ...\n"
" <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN"
"\"/>\n"
"</class>]]>"
#. Tag: para
#: filters.xml:40
#, no-c-format
#: index.docbook:40
msgid "or, to a collection:"
msgstr "o a una colección:"
#. Tag: programlisting
#: filters.xml:44
#, no-c-format
#: index.docbook:44
msgid ""
"<![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>]]>"
#. Tag: para
#: filters.xml:46
#, no-c-format
#: index.docbook:46
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."
#. Tag: para
#: filters.xml:50
#, no-c-format
#: index.docbook:50
msgid ""
"The methods on <literal>Session</literal> are: <literal>enableFilter(String "
"filterName)</literal>, <literal>getEnabledFilter(String filterName)</"
@ -143,17 +126,15 @@ msgstr ""
"de la interface <literal>Filter</literal>. Usando el filtro simple definido "
"arriba, esto se vería así:"
#. Tag: programlisting
#: filters.xml:59
#, no-c-format
#: index.docbook:59
msgid ""
"<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam\", "
"\"some-value\");]]>"
msgstr ""
"<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam\", "
"\"some-value\");]]>"
#. Tag: para
#: filters.xml:61
#, no-c-format
#: index.docbook:61
msgid ""
"Note that methods on the org.hibernate.Filter interface do allow the method-"
"chaining common to much of Hibernate."
@ -161,18 +142,14 @@ 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:65
#, no-c-format
#: 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: programlisting
#: filters.xml:69
#, no-c-format
#: index.docbook:69
msgid ""
"<![CDATA[<filter-def name=\"effectiveDate\">\n"
" <filter-param name=\"asOfDate\" type=\"date\"/>\n"
@ -207,10 +184,40 @@ msgid ""
" </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>]]>"
#. Tag: para
#: filters.xml:71
#, no-c-format
#: 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 "
@ -220,9 +227,7 @@ msgstr ""
"actualmente efectivos, simplemente habilita el filtro en la sesión previo a "
"recuperar los datos de empleados:"
#. Tag: programlisting
#: filters.xml:76
#, no-c-format
#: index.docbook:76
msgid ""
"<![CDATA[Session session = ...;\n"
"session.enabledFilter(\"effectiveDate\").setParameter(\"asOfDate\", new Date"
@ -233,10 +238,16 @@ msgid ""
" .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"
"]]>"
#. Tag: para
#: filters.xml:78
#, no-c-format
#: 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 "
@ -248,9 +259,7 @@ msgstr ""
"consulta sólo devolverá empleados actualmente activos que tengan un salario "
"mayor que un millón de dólares."
#. Tag: para
#: filters.xml:84
#, no-c-format
#: 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 "
@ -263,32 +272,32 @@ msgstr ""
"externa izquierda (left outer joining). En general, coloca el primer "
"parámetro seguido del nombre(s) de columna(s) después del operador."
#. Tag: para
#: filters.xml:91
#, no-c-format
#: 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>&lt;filter-def/&gt;</"
"literal> allows defining a default condition, either as an attribute or "
"CDATA:"
msgstr "translator-credits"
msgstr ""
#. Tag: programlisting
#: filters.xml:98
#, no-c-format
#: index.docbook:98
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
#: 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-->"

View File

@ -1,24 +1,15 @@
#, 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"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=utf-8\n"
#. Tag: title
#: preface.xml:21
#, no-c-format
#: index.docbook:21
msgid "Preface"
msgstr "Prefacio"
#. Tag: para
#: preface.xml:23
#, no-c-format
#: 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 "
@ -28,30 +19,26 @@ msgid ""
"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."
"puede ser inc&#x00f3;modo y consumir tiempo en los entornos de empresa de "
"hoy. Hibernate es una herramienta de mapeo objeto/relacional para entornos "
"Java. El t&#x00e9;rmino mapeo objeto/relacional (MOR) hace referencia a la "
"t&#x00e9;cnica de mapear una representaci&#x00f3;n de datos desde un modelo "
"de objetos a un modelo de datos relacional con un esquema basado en SQL."
#. Tag: para
#: preface.xml:31
#, no-c-format
#: 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."
"Hibernate no s&#x00f3;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&#x00e9;n provee facilidades de consulta y recuperaci&#x00f3;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:38
#, no-c-format
#: 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 "
@ -63,18 +50,17 @@ msgid ""
"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."
"tareas comunes relacionadas a la programaci&#x00f3;n de la persistencia de "
"los datos. Hibernate puede no ser la mejor soluci&#x00f3;n para aplicaciones "
"que usan solamente procedimientos almacenados para implementar la l&#x00f3;"
"gica de negocio en la base de datos, es mas &#x00fa;til con modelos de "
"dominio orientados a objetos y l&#x00f3;gica de negocio en middle-tier "
"basada en Java. Sin embargo, Hibernate ciertamente puede ayudarte a quitar o "
"encapsular c&#x00f3;digo SQL espec&#x00ed;fico de vendedor y ayudar&#x00e1; "
"con la tarea com&#x00fa;n de traducci&#x00f3;n de resultados desde una "
"representaci&#x00f3;n tabular a un grafo de objetos."
#. Tag: para
#: preface.xml:48
#, no-c-format
#: index.docbook:48
msgid ""
"If you are new to Hibernate and Object/Relational Mapping or even Java, "
"please follow these steps:"
@ -82,9 +68,7 @@ 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:55
#, no-c-format
#: 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 "
@ -93,9 +77,7 @@ msgstr ""
"Lee <xref linkend=\"quickstart\"/> para un tutorial de 30 minutos, usando "
"Tomcat."
#. Tag: para
#: preface.xml:63
#, no-c-format
#: index.docbook:63
msgid ""
"Read <xref linkend=\"architecture\"/> to understand the environments where "
"Hibernate can be used."
@ -103,9 +85,7 @@ msgstr ""
"Lee <xref linkend=\"architecture\"/> para entender los entornos en los que "
"puede ser usado Hibernate."
#. Tag: para
#: preface.xml:69
#, no-c-format
#: 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 "
@ -114,17 +94,15 @@ msgid ""
"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>."
"Dale una mirada al directorio <literal>eg/</literal> en la distribuci&#x00f3;"
"n de Hibernate, contiene una aplicaci&#x00f3;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&#x00ed;nea de comandos en el directorio de la "
"distribuci&#x00f3;n, tipea <literal>ant eg</literal> (usando Ant), o bajo "
"Windows, tipea <literal>build eg</literal>."
#. Tag: para
#: preface.xml:80
#, no-c-format
#: index.docbook:80
msgid ""
"Use this reference documentation as your primary source of information. "
"Consider reading <emphasis>Java Persistence with Hibernate</emphasis> "
@ -133,22 +111,19 @@ msgid ""
"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."
"Usa esta documentaci&#x00f3;n de referencia como tu fuente de "
"informaci&#x00f3;n primaria. Ten en consideraci&#x00f3;n leer <emphasis>Java "
"Persistence with Hibernate</emphasis> (http://www.manning.com/bauer2) si "
"necesitas mas ayuda con el dise&#x00f1;o de aplicaciones o si prefieres un "
"tutorial paso a paso. Visita tambi&#x00e9;n http://caveatemptor.hibernate."
"org y descarga la aplicaci&#x00f3;n de ejemplo para Java Persistence with "
"Hibernate."
#. Tag: para
#: preface.xml:90
#, no-c-format
#: index.docbook:90
msgid "FAQs are answered on the Hibernate website."
msgstr "Los FAQs son respondidos en el sitio web de Hibernate."
#. Tag: para
#: preface.xml:95
#, no-c-format
#: index.docbook:95
msgid ""
"Third party demos, examples, and tutorials are linked on the Hibernate "
"website."
@ -156,21 +131,17 @@ msgstr ""
"En el sitio web de Hibernate hay enlaces a demos de terceros, ejemplos y "
"tutoriales."
#. Tag: para
#: preface.xml:101
#, no-c-format
#: 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.)."
"patrones de dise&#x00f1;o y varias soluciones de integraci&#x00f3;n (Tomcat, "
"JBoss, Struts, EJB, etc.)."
#. Tag: para
#: preface.xml:109
#, no-c-format
#: 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 "
@ -179,15 +150,13 @@ msgid ""
"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."
"Hibernate. Tambi&#x00e9;n proveemos un sistema de seguimiento JIRA para "
"reportes de defectos y peticiones de nuevas caracter&#x00ed;sticas. Si estas "
"interesado en el desarrollo de Hibernate, &#x00fa;nete a la lista de correo "
"de desarrolladores. Si estas interesado en traducir esta documentaci&#x00f3;"
"n a tu lenguaje, cont&#x00e1;ctanos en la lista de correo de desarrolladores."
#. Tag: para
#: preface.xml:117
#, no-c-format
#: index.docbook:117
msgid ""
"Commercial development support, production support, and training for "
"Hibernate is available through JBoss Inc. (see http://www.hibernate.org/"
@ -195,7 +164,14 @@ msgid ""
"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."
"A trav&#x00e9;s de JBoss Inc. (see http://www.hibernate.org/"
"SupportTraining/) hay disponibilidad de soporte comercial de desarrollo, "
"soporte de producci&#x00f3;n y entrenamiento en Hibernate. Hibernate es un "
"proyecto de la suite de productos de c&#x00f3;digo abierto JBoss "
"Professional."
msgid "ROLES_OF_TRANSLATORS"
msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
msgid "CREDIT_FOR_TRANSLATORS"
msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"

File diff suppressed because it is too large Load Diff

View File

@ -1,24 +1,15 @@
#, 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"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=utf-8\n"
#. Tag: title
#: xml.xml:5
#, no-c-format
#: index.docbook:5
msgid "XML Mapping"
msgstr "Mapeo XML"
#. Tag: emphasis
#: xml.xml:7
#, no-c-format
#: index.docbook:7
msgid ""
"Note that this is an experimental feature in Hibernate 3.0 and is under "
"extremely active development."
@ -26,15 +17,11 @@ msgstr ""
"Nota que esta es una funcionalidad experimental en Hibernate 3.0 y está bajo "
"un desarrollo extremadamente activo."
#. Tag: title
#: xml.xml:13
#, no-c-format
#: index.docbook:13
msgid "Working with XML data"
msgstr "Trabajando con datos XML"
#. Tag: para
#: xml.xml:15
#, no-c-format
#: 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 "
@ -46,9 +33,7 @@ msgstr ""
"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:22
#, no-c-format
#: 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 "
@ -66,9 +51,7 @@ msgstr ""
"Hibernate: <literal>persist(), saveOrUpdate(), merge(), delete(), replicate()"
"</literal> (la fusión no está aún soportada)."
#. Tag: para
#: xml.xml:32
#, no-c-format
#: 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."
@ -77,9 +60,7 @@ msgstr ""
"exportación de datos, externalización de datos de entidad vía JMS o SOAP y "
"reportes basados en XSLT."
#. Tag: para
#: xml.xml:37
#, no-c-format
#: 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, "
@ -89,21 +70,15 @@ msgstr ""
"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: title
#: xml.xml:44
#, no-c-format
#: index.docbook:44
msgid "Specifying XML and class mapping together"
msgstr "Especificando los mapeos de XML y de clase juntos"
#. Tag: para
#: xml.xml:46
#, no-c-format
#: index.docbook:46
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:"
#. Tag: programlisting
#: xml.xml:50
#, no-c-format
#: index.docbook:50
msgid ""
"<![CDATA[<class name=\"Account\" \n"
" table=\"ACCOUNTS\" \n"
@ -126,22 +101,36 @@ msgid ""
" \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>]]>"
#. Tag: title
#: xml.xml:54
#, no-c-format
#: index.docbook:54
msgid "Specifying only an XML mapping"
msgstr "Especificando sólo un mapeo XML"
#. Tag: para
#: xml.xml:56
#, no-c-format
#: index.docbook:56
msgid "Here is an example where there is no POJO class:"
msgstr "He aquí un ejemplo donde no hay ninguna clase POJO:"
#. Tag: programlisting
#: xml.xml:60
#, no-c-format
#: index.docbook:60
msgid ""
"<![CDATA[<class entity-name=\"Account\" \n"
" table=\"ACCOUNTS\" \n"
@ -167,10 +156,31 @@ msgid ""
" \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>]]>"
#. Tag: para
#: xml.xml:62
#, no-c-format
#: 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 "
@ -181,15 +191,11 @@ msgstr ""
"Los nombres de propiedades son construcciones puramente lógicas a las que se "
"puede hacer referencia en consultas HQL."
#. Tag: title
#: xml.xml:73
#, no-c-format
#: index.docbook:73
msgid "XML mapping metadata"
msgstr "Mapeo de metadatos XML"
#. Tag: para
#: xml.xml:75
#, no-c-format
#: 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 "
@ -201,28 +207,20 @@ msgstr ""
"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:84
#, no-c-format
#: index.docbook:84
msgid "<literal>\"element-name\"</literal> - map to the named XML element"
msgstr "<literal>\"element-name\"</literal> - mapea al elemento XML mencionado"
#. Tag: para
#: xml.xml:87
#, no-c-format
#: index.docbook:87
msgid "<literal>\"@attribute-name\"</literal> - map to the named XML attribute"
msgstr ""
"<literal>\"@attribute-name\"</literal> - mapea al atributo XML mencionado"
#. Tag: para
#: xml.xml:90
#, no-c-format
#: index.docbook:90
msgid "<literal>\".\"</literal> - map to the parent element"
msgstr "<literal>\".\"</literal> - mapea al elemento padre"
#. Tag: para
#: xml.xml:93
#, no-c-format
#: index.docbook:93
msgid ""
"<literal>\"element-name/@attribute-name\"</literal> - map to the named "
"attribute of the named element"
@ -230,9 +228,7 @@ msgstr ""
"<literal>\"element-name/@attribute-name\"</literal> - mapea al atributo "
"mencionado del elemento mencionado"
#. Tag: para
#: xml.xml:100
#, no-c-format
#: index.docbook:100
msgid ""
"For collections and single valued associations, there is an additional "
"<literal>embed-xml</literal> attribute. If <literal>embed-xml=\"true\"</"
@ -251,9 +247,7 @@ msgstr ""
"el XML para asociaciones de punto único y para las colecciones simplemente "
"no aparecerá en absoluto."
#. Tag: para
#: xml.xml:110
#, no-c-format
#: 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!"
@ -261,9 +255,7 @@ msgstr ""
"¡Debes ser cuidadoso de no dejar <literal>embed-xml=\"true\"</literal> para "
"demasiadas asociaciones, ya que XML no trata bien la circularidad!"
#. Tag: programlisting
#: xml.xml:115
#, no-c-format
#: index.docbook:115
msgid ""
"<![CDATA[<class name=\"Customer\" \n"
" table=\"CUSTOMER\" \n"
@ -300,10 +292,42 @@ msgid ""
" \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>]]>"
#. Tag: para
#: xml.xml:117
#, no-c-format
#: 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:"
@ -311,23 +335,19 @@ 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: programlisting
#: xml.xml:122
#, no-c-format
#: 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: para
#: xml.xml:124
#, no-c-format
#: index.docbook:124
msgid "Would return datasets such as this:"
msgstr "devolvería conjuntos de datos como estos:"
#. Tag: programlisting
#: xml.xml:128
#, no-c-format
#: index.docbook:128
msgid ""
"<![CDATA[<customer id=\"123456789\">\n"
" <account short-desc=\"Savings\">987632567</account>\n"
@ -340,10 +360,18 @@ msgid ""
" ...\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>]]>"
#. Tag: para
#: xml.xml:130
#, no-c-format
#: index.docbook:130
msgid ""
"If you set <literal>embed-xml=\"true\"</literal> on the <literal>&lt;one-to-"
"many&gt;</literal> mapping, the data might look more like this:"
@ -351,9 +379,7 @@ msgstr ""
"Si estableces <literal>embed-xml=\"true\"</literal> en el mapeo <literal>&lt;"
"one-to-many&gt;</literal>, los datos podrían verse así:"
#. Tag: programlisting
#: xml.xml:135
#, no-c-format
#: index.docbook:135
msgid ""
"<![CDATA[<customer id=\"123456789\">\n"
" <account id=\"987632567\" short-desc=\"Savings\">\n"
@ -372,16 +398,28 @@ msgid ""
" ...\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>]]>"
#. Tag: title
#: xml.xml:141
#, no-c-format
#: index.docbook:141
msgid "Manipulating XML data"
msgstr "Manipulando datos XML"
#. Tag: para
#: xml.xml:143
#, no-c-format
#: index.docbook:143
msgid ""
"Let's rearead and update XML documents in the application. We do this by "
"obtaining a dom4j session:"
@ -389,9 +427,7 @@ msgstr ""
"Vamos a releer y actualizar documentos XML en la aplicación. Hacemos esto "
"obteniendo una sesión dom4j:"
#. Tag: programlisting
#: xml.xml:148
#, no-c-format
#: index.docbook:148
msgid ""
"<![CDATA[Document doc = ....;\n"
" \n"
@ -412,10 +448,26 @@ msgid ""
"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();]]>"
#. Tag: programlisting
#: xml.xml:150
#, no-c-format
#: index.docbook:150
msgid ""
"<![CDATA[Session session = factory.openSession();\n"
"Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
@ -434,10 +486,24 @@ msgid ""
"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();]]>"
#. Tag: para
#: xml.xml:152
#, no-c-format
#: 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/"
@ -446,3 +512,9 @@ 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-->"