Red de conocimientos sobre prescripción popular - Remedios caseros - Cómo configurar la carga diferida en hibernación

Cómo configurar la carga diferida en hibernación

La carga diferida en Hibernae es una técnica muy común. De forma predeterminada, las propiedades de la colección de una entidad se cargarán de forma diferida, al igual que las entidades asociadas con la entidad. Hibernate reduce la sobrecarga de memoria del sistema a través de esta carga diferida, asegurando así el rendimiento de ejecución de Hibernate.

Analicemos primero el “secreto” de la carga diferida de Hibernate.

Carga diferida de atributos de colección

Cuando Hibernate inicializa una entidad persistente desde la base de datos, ¿se inicializa el atributo de colección de la entidad con la clase persistente? Si hay 100.000 o incluso millones de registros en las propiedades de la colección, el rendimiento disminuirá drásticamente cuando la entidad persistente se inicialice y capture todas las propiedades de la colección. Es muy posible que el sistema solo necesite usar algunos registros en los atributos de la colección de clases persistentes y no necesite usar todos los atributos de la colección en absoluto, por lo que no es necesario cargar todos los atributos de la colección a la vez.

Para las propiedades de colección, generalmente se recomienda utilizar una estrategia de carga diferida. La llamada carga diferida significa cargar datos relacionados desde la base de datos cuando el sistema necesita utilizar el atributo establecido.

Por ejemplo, la siguiente clase Persona contiene un atributo establecido y el tipo de elemento en el atributo establecido es Dirección. El fragmento de código de la clase Persona es el siguiente:

Listado 1. Person.java

Persona de clase pública

{

//Atributo de identificación

Identificación entera privada;

//Atributo de nombre de persona

Nombre de cadena privada;

//Conserva el atributo de edad de Persona.

Edad privada;

//Utilice Set para guardar los atributos establecidos.

Configuración privada & ltAddress& gtaddresses = new HashSet & ltAddress& gt();

// Los métodos setter y getter de cada atributo se omiten a continuación.

...

}

Para permitir que Hibernate administre las propiedades de colección de las clases de persistencia, el programa proporciona los siguientes archivos de mapeo para las clases de persistencia:

Listado 2. Persona.hbm.xml

& lt? xml versión="1.0 "codificación="GBK"? & gt

& lt! DOCTYPE hibernate-mapping public

"-//hibernate/hibernate-mapping DTD 3.0//ES "

" posite-element class="Dirección "

<!-Mapa detalles generales de propiedad->

& ltproperty name = "detalle"/& gt;

<!-Mapa propiedades públicas zip->

& ltproperty name = " zip "/& gt;

& lt/composite-element & gt;

& lt/set & gt;

& lt/class & gt;

& lt/hibernate-mapping & gt;

Para artículos extensos, consulte el blog:/xc 635960736/article/details/7049863