|
Hibernate example source code file (best_practices.po)
This example Hibernate source code file (best_practices.po) is included in the DevDaily.com
"Java Source Code
Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.
The Hibernate best_practices.po source code
# translation of best_practices.po to
# Michael H. Smith <mhideo@redhat.com>, 2007.
# Angela Garcia <agarcia@redhat.com>, 2009, 2010.
# translation of Collection_Mapping.po to
# translation of Collection_Mapping.po to
# translation of Collection_Mapping.po to
# translation of Collection_Mapping.po to
# translation of Collection_Mapping.po to
# translation of Collection_Mapping.po to
# translation of Collection_Mapping.po to
# translation of Collection_Mapping.po to
# translation of Collection_Mapping.po to
msgid ""
msgstr ""
"Project-Id-Version: best_practices\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2010-02-11T05:38:15\n"
"PO-Revision-Date: 2010-03-15 12:52+1000\n"
"Last-Translator: Angela Garcia <agarcia@redhat.com>\n"
"Language-Team: <en@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.11.4\n"
#. Tag: title
#, no-c-format
msgid "Best Practices"
msgstr "Prácticas recomendadas"
#. Tag: term
#, no-c-format
msgid ""
"Write fine-grained classes and map them using <literal><component>"
"literal>:"
msgstr ""
"Escriba las clases detalladas y mapéelas utilizando <literal><"
"component></literal>:"
#. Tag: para
#, no-c-format
msgid ""
"Use an <literal>Address class to encapsulate street"
"literal>, <literal>suburb, state, "
"<literal>postcode. This encourages code reuse and simplifies "
"refactoring."
msgstr ""
"Utilice una clase <literal>Dirección para encapsular "
"<literal>calle, distrito, estado"
"literal>, <literal>código postal. Esto promueve la reutilización "
"de código y simplifica la refabricación."
#. Tag: term
#, no-c-format
msgid "Declare identifier properties on persistent classes:"
msgstr "Declare las propiedades identificadoras en clases persistentes:"
#. Tag: para
#, no-c-format
msgid ""
"Hibernate makes identifier properties optional. There are a range of reasons "
"why you should use them. We recommend that identifiers be 'synthetic', that "
"is, generated with no business meaning."
msgstr ""
"Las propiedades identificadoras son opcionales en Hibernate. Existe todo "
"tipo de razones por las que debe usarlas. Recomendamos que los "
"identificadores sean 'sintéticos', es decir, generados sin ningún "
"significado empresarial."
#. Tag: term
#, no-c-format
msgid "Identify natural keys:"
msgstr "Identifique las llaves naturales:"
#. Tag: para
#, no-c-format
msgid ""
"Identify natural keys for all entities, and map them using <literal><"
"natural-id></literal>. Implement equals() and "
"<literal>hashCode() to compare the properties that make up the "
"natural key."
msgstr ""
"Identifique las claves naturales de todas las entidades, y mapéelas usando "
"<literal><natural-id>. Implemente equals()"
"literal> y <literal>hashCode() para comparar las propiedades que "
"componen la clave natural."
#. Tag: term
#, no-c-format
msgid "Place each class mapping in its own file:"
msgstr "Coloque cada mapeo de clase en su propio fichero:"
#. Tag: para
#, no-c-format
msgid ""
"Do not use a single monolithic mapping document. Map <literal>com.eg.Foo"
"literal> in the file <literal>com/eg/Foo.hbm.xml. This makes "
"sense, particularly in a team environment."
msgstr ""
"No use un sólo documento monolítico de mapeo. Mapee <literal>com.eg.Foo"
"literal> en el archivo <literal>com/eg/Foo.hbm.xml. Esto tiene "
"sentido particularmente en un entorno de equipo."
#. Tag: term
#, no-c-format
msgid "Load mappings as resources:"
msgstr "Cargue los mapeos como recursos:"
#. Tag: para
#, no-c-format
msgid "Deploy the mappings along with the classes they map."
msgstr "Despliegue los mapeos junto a las clases que mapean."
#. Tag: term
#, no-c-format
msgid "Consider externalizing query strings:"
msgstr "Considere el externalizar las cadenas de petición:"
#. Tag: para
#, no-c-format
msgid ""
"This is recommended if your queries call non-ANSI-standard SQL functions. "
"Externalizing the query strings to mapping files will make the application "
"more portable."
msgstr ""
"Esta es una buena práctica si sus consultas llaman a funciones SQL que no "
"son del estándar ANSI. Externalizar las cadenas de consulta a archivos de "
"mapeo hará la aplicación más portátil. "
#. Tag: term
#, no-c-format
msgid "Use bind variables."
msgstr "Use variables de vinculación."
#. Tag: para
#, no-c-format
msgid ""
"As in JDBC, always replace non-constant values by \"?\". Do not use string "
"manipulation to bind a non-constant value in a query. You should also "
"consider using named parameters in queries."
msgstr ""
"Al igual que en JDBC, siempre remplace los valores no constantes con \"?\". "
"No use la manipulación de cadenas para enlazar un valor no constante en una "
"consulta. También considere utilizar parámetros con nombre en las consultas."
#. Tag: term
#, no-c-format
msgid "Do not manage your own JDBC connections:"
msgstr "No administre sus propias conexiones JDBC:"
#. Tag: para
#, no-c-format
msgid ""
"Hibernate allows the application to manage JDBC connections, but his "
"approach should be considered a last-resort. If you cannot use the built-in "
"connection providers, consider providing your own implementation of "
"<literal>org.hibernate.connection.ConnectionProvider."
msgstr ""
"Hibernate deja a la aplicación administrar las conexiones JDBC, pero este "
"enfoque debe considerarse como el último recurso. Si no puede utilizar los "
"provedores de conexión incorporados, considere proveer su propia "
"implementación de <literal>org.hibernate.connection.ConnectionProvider"
"literal>."
#. Tag: term
#, no-c-format
msgid "Consider using a custom type:"
msgstr "Considere utilizar un tipo personalizado:"
#. Tag: para
#, no-c-format
msgid ""
"Suppose you have a Java type from a library that needs to be persisted but "
"does not provide the accessors needed to map it as a component. You should "
"consider implementing <literal>org.hibernate.UserType. This "
"approach frees the application code from implementing transformations to/"
"from a Hibernate type."
msgstr ""
"Supónga que tiene un tipo Java de una biblioteca, que necesita hacerse "
"persistente pero que no provee los métodos de acceso necesarios para "
"mapearlo como un componente. Debe considerar el implementar <literal>org."
"hibernate.UserType</literal>. Este enfoque libera al código de aplicación de "
"implementar transformaciones a/desde un tipo Hibernate."
#. Tag: term
#, no-c-format
msgid "Use hand-coded JDBC in bottlenecks:"
msgstr "Utilice JDBC codificado a mano cuando se encuentre atascado:"
#. Tag: para
#, no-c-format
msgid ""
"In performance-critical areas of the system, some kinds of operations might "
"benefit from direct JDBC. Do not assume, however, that JDBC is necessarily "
"faster. Please wait until you <emphasis>know something is a "
"bottleneck. If you need to use direct JDBC, you can open a Hibernate "
"<literal>Session, wrap your JDBC operation as a org."
"hibernate.jdbc.Work</literal> object and using that JDBC connection. This "
"way you can still use the same transaction strategy and underlying "
"connection provider."
msgstr ""
"En áreas de rendimiento crítico del sistema, algunos tipos de operaciones "
"podrían beneficiarse del JDBC directo. Sin embargo, no asuma que JDBC es necesariamente más rápido. Por favor, espere hasta que "
"<emphasis>sepa que se encuentra realmente atascado. Si necesita "
"utilizar JDBC directo, puede abrir una <literal>Session de "
"Hibernate, envuelva su operación JDBC como un objeto <literal>org."
"hibernate.jdbc.Work</literal> usando esa conexión JDBC. De esta manera puede usar aún la misma estrategia de transacción y el mismo proveedor de conexiones subyacente."
#. Tag: term
#, no-c-format
msgid "Understand <literal>Session flushing:"
msgstr "Comprenda el vaciado de <literal>Session:"
#. Tag: para
#, no-c-format
msgid ""
"Sometimes the Session synchronizes its persistent state with the database. "
"Performance will be affected if this process occurs too often. You can "
"sometimes minimize unnecessary flushing by disabling automatic flushing, or "
"even by changing the order of queries and other operations within a "
"particular transaction."
msgstr ""
"A veces la sesión sincroniza su estado persistente con la base de datos. El "
"rendimiento se verá afectado si este proceso ocurre con demasiada "
"frecuencia. A veces puede minimizar el vaciado innecesario deshabilitando el "
"vaciado automático o incluso cambiando el orden de las consultas u otras "
"operaciones en una transacción en particular."
#. Tag: term
#, no-c-format
msgid "In a three tiered architecture, consider using detached objects:"
msgstr "En una arquitectura con tres niveles considere el utilizar objetos separados:"
#. Tag: para
#, no-c-format
msgid ""
"When using a servlet/session bean architecture, you can pass persistent "
"objects loaded in the session bean to and from the servlet/JSP layer. Use a "
"new session to service each request. Use <literal>Session.merge() "
"or <literal>Session.saveOrUpdate() to synchronize objects with the "
"database."
msgstr ""
"Al usar una arquitectura de servlet/sesión, puede pasar objetos persistentes "
"en el bean de sesión hacia y desde la capa del servlet/JSP. Use una sesión "
"nueva para atender el servicio de cada petición. Use <literal>Session.merge()"
"</literal> o Session.saveOrUpdate() para sincronizar los "
"objetos con la base de datos."
#. Tag: term
#, no-c-format
msgid "In a two tiered architecture, consider using long persistence contexts:"
msgstr ""
"En una arquitectura con dos niveles considere el utilizar contextos largos "
"de persistencia:"
#. Tag: para
#, no-c-format
msgid ""
"Database Transactions have to be as short as possible for best scalability. "
"However, it is often necessary to implement long running "
"<emphasis>application transactions, a single unit-of-work from "
"the point of view of a user. An application transaction might span several "
"client request/response cycles. It is common to use detached objects to "
"implement application transactions. An appropriate alternative in a two "
"tiered architecture, is to maintain a single open persistence contact "
"session for the whole life cycle of the application transaction. Then simply "
"disconnect from the JDBC connection at the end of each request and reconnect "
"at the beginning of the subsequent request. Never share a single session "
"across more than one application transaction or you will be working with "
"stale data."
msgstr ""
"Las transacciones de la base de datos tienen que ser tan cortas como sea "
"posible para obtener una mejor escalabilidad. Sin embargo, con frecuencia es "
"necesario implementar <emphasis>transacciones de aplicación de "
"larga ejecución, una sola unidad de trabajo desde el punto de vista de un "
"usuario. Una transacción de aplicación puede abarcar muchos ciclos de "
"petición/respuesta del cliente. Es común usar objetos separados para "
"implementar transacciones de aplicación. Una alternativa apropiada en "
"arquitecturas de dos niveles, es mantener una sesión de un sólo contacto de "
"persistencia abierto para todo el ciclo de vida de la transacción de "
"aplicación. Luego simplemente desconectar de la conexión JDBC al final de "
"cada petición y reconectar al comienzo de la petición subsecuente. Nunca "
"comparta una sesión única a través de más de una transacción de aplicación o "
"estará trabajando con datos desactualizados."
#. Tag: term
#, no-c-format
msgid "Do not treat exceptions as recoverable:"
msgstr "No trate las excepciones como recuperables:"
#. Tag: para
#, no-c-format
msgid ""
"This is more of a necessary practice than a \"best\" practice. When an "
"exception occurs, roll back the <literal>Transaction and close the "
"<literal>Session. If you do not do this, Hibernate cannot "
"guarantee that in-memory state accurately represents the persistent state. "
"For example, do not use <literal>Session.load() to determine if an "
"instance with the given identifier exists on the database; use "
"<literal>Session.get() or a query instead."
msgstr ""
"Esto es más bien una práctica necesaria más que una práctica \"recomendada"
"\". Cuando ocurra una excepción, deshaga la <literal>Transaction y "
"cierre la <literal>Session. Si no lo hace, Hibernate no puede "
"garantizar que el estado en memoria representa con exactitud el estado "
"persistente. Por ejemplo, no utilice <literal>Session.load() para "
"determinar si una instancia con el identificador dado existe en la base de "
"datos; en cambio, use <literal>Session.get() o una consulta."
#. Tag: term
#, no-c-format
msgid "Prefer lazy fetching for associations:"
msgstr "Prefiera una recuperación perezosa para las asociaciones:"
#. Tag: para
#, no-c-format
msgid ""
"Use eager fetching sparingly. Use proxies and lazy collections for most "
"associations to classes that are not likely to be completely held in the "
"second-level cache. For associations to cached classes, where there is an a "
"extremely high probability of a cache hit, explicitly disable eager fetching "
"using <literal>lazy=\"false\". When join fetching is appropriate "
"to a particular use case, use a query with a <literal>left join fetch"
"literal>."
msgstr ""
"No utilice con frecuencia la recuperación temprana. Use proxies y "
"colecciones perezosas para la mayoría de asociaciones a clases que "
"probablemente no se encuentren en el caché de segundo nivel. Para las "
"asociaciones a clases en caché, donde hay una probabilidad de acceso a caché "
"extremadamente alta, deshabilite explícitamente la recuperación temprana "
"usando <literal>lazy=\"false\". Cuando la recuperación por unión "
"sea apropiada para un caso de uso en particular, utilice una consulta con un "
"<literal>left join fetch."
#. Tag: term
#, no-c-format
msgid ""
"Use the <emphasis>open session in view pattern, or a disciplined "
"<emphasis>assembly phase to avoid problems with unfetched data:"
msgstr ""
"Use el patrón de <emphasis>sesión abierta en vista o una "
"<emphasis>fase de ensamblado disciplinada para evitar problemas "
"con datos no recuperados."
#. Tag: para
#, no-c-format
msgid ""
"Hibernate frees the developer from writing tedious <emphasis>Data Transfer "
"Objects</emphasis> (DTO). In a traditional EJB architecture, DTOs serve dual "
"purposes: first, they work around the problem that entity beans are not "
"serializable; second, they implicitly define an assembly phase where all "
"data to be used by the view is fetched and marshalled into the DTOs before "
"returning control to the presentation tier. Hibernate eliminates the first "
"purpose. Unless you are prepared to hold the persistence context (the "
"session) open across the view rendering process, you will still need an "
"assembly phase. Think of your business methods as having a strict contract "
"with the presentation tier about what data is available in the detached "
"objects. This is not a limitation of Hibernate. It is a fundamental "
"requirement of safe transactional data access."
msgstr ""
"Hibernate libera al desarrollador de escribir tediosos <emphasis>objetos de "
"transferencia de datos (DTO del inglés Data Transfer Objects)</emphasis>. En "
"una arquitectura tradicional de EJB, los DTOs tienen un propósito doble: "
"primero, atacan el problema de 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 al nivel de presentación. Hibernate "
"elimina el primer propósito. Sin embargo, aún necesita una fase de "
"ensamblado a menos de que esté preparado para tener el contexto de "
"persistencia (la sesión) abierto a través del proceso de entrega de la "
"vista. Piense en sus métodos empresariales como si tuviesen un contrato "
"estricto con el nivel de presentación sobre qué datos están disponibles en "
"los objetos separados. Esta no es una limitación de Hibernate. Este es un "
"requerimiento fundamental de acceso seguro a datos transaccionales."
#. Tag: term
#, no-c-format
msgid "Consider abstracting your business logic from Hibernate:"
msgstr "Considere abstraer su lógica empresarial de Hibernate:"
#. Tag: para
#, no-c-format
msgid ""
"Hide Hibernate data-access code behind an interface. Combine the "
"<emphasis>DAO and Thread Local Session "
"patterns. You can even have some classes persisted by handcoded JDBC "
"associated to Hibernate via a <literal>UserType. This advice is, "
"however, intended for \"sufficiently large\" applications. It is not "
"appropriate for an application with five tables."
msgstr ""
"Oculte el código de acceso a datos de Hibernate detrás de una interfaz. "
"Combine los patrones <emphasis>DAO y sesión local de "
"hilo</emphasis>. Incluso puede hacer algunas clases persistentes por medio "
"de JDBC escrito a mano, asociadas a Hibernate por medio de un "
"<literal>UserType. Sin embargo, este consejo va para las "
"aplicaciones \"suficientemente grandes\". No es apropiado para una "
"aplicación con cinco tablas."
#. Tag: term
#, no-c-format
msgid "Do not use exotic association mappings:"
msgstr "No utilice mapeos de asociación exóticos:"
#. Tag: para
#, no-c-format
msgid ""
"Practical test cases for real many-to-many associations are rare. Most of "
"the time you need additional information stored in the \"link table\". In "
"this case, it is much better to use two one-to-many associations to an "
"intermediate link class. In fact, most associations are one-to-many and many-"
"to-one. For this reason, you should proceed cautiously when using any other "
"association style."
msgstr ""
"Son raros los casos de uso de asociaciones reales muchos-a-muchos. La mayor "
"parte del tiempo necesita 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 intermedio. De hecho, la mayoría de las asociaciones son "
"uno-a-muchos y muchos-a-uno. Por esta razón, debe tener cuidado al utilizar "
"cualquier otro estilo de asociación."
#. Tag: term
#, no-c-format
msgid "Prefer bidirectional associations:"
msgstr "Prefiera las asociaciones bidireccionales:"
#. Tag: para
#, no-c-format
msgid ""
"Unidirectional associations are more difficult to query. In a large "
"application, almost all associations must be navigable in both directions in "
"queries."
msgstr ""
"Las asociaciones unidireccionales son más difíciles de consultar. En una "
"aplicación grande, casi todas las asociaciones deben ser navegables en ambas "
"direcciones en consultas."
Other Hibernate examples (source code examples)
Here is a short list of links related to this Hibernate best_practices.po source code file:
|