tutorial para java hibernate jpa orm

para - orm java



2 entidades JPA en la misma mesa (1)

Digamos que tengo una tabla con 200 columnas y la mayoría de ellas nunca se usan.

Asigné SmallEntity a las 10 columnas que se usan con frecuencia. Lo uso en las asociaciones con otras entidades. Se carga rápido, consume poca memoria y me hace feliz.

Pero a veces necesito mostrar las 200 columnas. Me gustaría asignar la clase BigEntity en las 200 columnas. No está vinculado a ninguna otra entidad, no tiene asociación.

Pregunta: ¿Tienes alguna experiencia haciendo eso? ¿Conoce algún problema que pueda tener Hibernate, como por ejemplo en el caché de primer nivel, la comprobación sucia y el ciclo de vida de la entidad en general?


La manera más sencilla de hacer esto es mapear propiedades que no usas a menudo como lazy :

<property name="extendedProperty" lazy="true" /> ... or using Annotations ... @Basic(fetch = FetchType.LAZY) String getExtendedProperty() { ... }

Hibernate no cargaría tales propiedades inicialmente; en su lugar, se cargarán bajo demanda (cuando se acceda por primera vez). Puede forzar a Hibernate a cargar todas las propiedades usando la cláusula fetch all properties en su consulta HQL.

Otro posible escenario es mapear dos entidades completamente separadas a la misma tabla, pero hacer que una de ellas sea immutable . Tenga en cuenta que Hibernate los tratará como entidades diferentes, y que la memoria caché de primer / segundo nivel estará completamente separada para ambos (por lo que la inmutabilidad es importante).

NO podrá lograr esta funcionalidad a través de la asignación de herencia porque Hibernate siempre devuelve un tipo de entidad concreto real. Eche un vistazo a mi respuesta a la pregunta de Hibernate Herencia Estrategia para una explicación detallada.