Hibernate: Buenas Prácticas

Pero el uso de un ORM también puede causar problemas si no tenemos en cuenta unas ciertas buenas prácticas. 

Escriba las clases detalladas y mapéelas utilizando :


Declare las propiedades identificadoras en clases persistentes:

Identifique las llaves naturales:

Coloque cada mapeo de clase en su propio fichero:

Cargue los mapeos como recursos:

Considere el externalizar las cadenas de petición:

Use variables de vinculación.
No administre sus propias conexiones JDBC:

Considere utilizar un tipo personalizado:

Utilice JDBC codificado a mano cuando se encuentre atascado:

Comprenda el vaciado de Session:

En una arquitectura con tres niveles considere el utilizar objetos separados:

En una arquitectura con dos niveles considere el utilizar contextos largos de persistencia:
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 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.

No trate las excepciones como recuperables:

Prefiera una recuperación perezosa para las asociaciones:

Use el patrón de sesión abierta en vista o una fase de ensamblado disciplinada para evitar problemas con datos no recuperados.
Hibernate libera al desarrollador de escribir tediosos objetos de transferencia de datos (DTO del inglés Data Transfer Objects). 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.

Considere abstraer su lógica empresarial de Hibernate:

No utilice mapeos de asociación exóticos:

Prefiera las asociaciones bidireccionales:

No hay comentarios.: