Cómo configurar la carga diferida en hibernación
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