Tengo una propiedad en un objeto de dominio que se declara en un elemento de varios a uno. La sintaxis básica de esta propiedad es el siguiente:Cómo detener a Hibernate de buscar con entusiasmo el objeto asociado de muchos a uno
<many-to-one name="propertyName" class="propertyClass" fetch="select" not-found="ignore" lazy="proxy" />
Ahora, la idea es tener Hibernate NO ir a buscar ansiosamente esta propiedad. Puede ser nulo, por lo que se establece el ignorar no encontrado.
Pero, Hibernate, al cargar la clase que contiene esta asociación, se encarga de cargar la instancia de la clase real (ni siquiera un proxy) cuando se carga la clase padre. Dado que algunas propiedades tienen más de 1 MB de tamaño, ocupan gran parte del espacio de almacenamiento dinámico.
Si, sin embargo, no encontrado está configurado como excepción (o predeterminado a excepción), las clases padre que tienen esta propiedad cargan un proxy.
¿Cómo puedo detener la hibernación por no cargar un proxy, al mismo tiempo que dejo que esta propiedad sea nula?
Encontré lazy = no-proxy, pero la documentación habla de algún tipo de modificación de bytecode y no entra en detalles. ¿Alguien me puede ayudar?
Si es importante, es la versión de Hibernate de Java, y es al menos la versión 3 (puedo buscar la versión actual si ayuda, pero por ahora es Hibernate 3+).
No especifiqué antes, pero la versión de Java es 1.4. Por lo tanto, las anotaciones Java no son compatibles.
Esto parece prometedor ... Aceptaré su respuesta si funciona. ¡Gracias! – MetroidFan2002
No hay problema, pero creo que básicamente no se puede tener un proxy diferido con asociaciones de terminación única que puede ser nulo (uno a uno o muchos para activar). En cuanto al gran consumo de heap, tuve un problema similar debido a los clobs, terminé tirando de los clobs a otra clase y cargándolos según sea necesario. –
Creo que lo que vamos a hacer es poner el campo en la clase que es enorme (es un documento XML que finalmente se envía a un servicio web) en el campo de carga lenta, usando las cosas de código de bytes que señaló. Lamentablemente, el modelo de dominio está fuera de mis manos. – MetroidFan2002