Ejercicio de programación: Optimización de asociaciones con carga lazy
Este ejercicio de programación está diseñado para poner a prueba tus conocimientos en Hibernate. Es un ejercicio avanzado que pondrá a prueba tus conocimientos expertos.
Información adicional del ejercicio
En este ejercicio, harás uso del tipo de fetch lazy para cargar entidades asociadas dinámicamente en Hibernate.
Contenido del ejercicio
Crea un archivo .java
para modelar y probar la carga lazy de Hibernate. Tu tarea es diseñar una simple aplicación que incluya una clase de entidad Usuario
con una relación OneToMany
con una clase de entidad Documento
. Deberás demostrar la carga lazy y cómo afecta el manejo de sesiones en Hibernate.
Define la clase Usuario
con los siguientes atributos:
id
(Long, clave primaria)nombre
(String)documentos
(List<Document>, relación OneToMany)
Define la clase Documento
con los siguientes atributos:
id
(Long, clave primaria)titulo
(String)usuario
(Usuario, relación ManyToOne)
Configura Hibernate para usar carga lazy para la colección de documentos en la clase Usuario
.
Escribe un método main
que inicialice Hibernate y construya una sesión, y a continuación cree y guarde un Usuario
con algunos Documentos
, y por último recupere el Usuario
de la base de datos después de cerrar la sesión original, intentando acceder a los documentos para ilustrar la carga lazy.
Para las asociaciones en entidades, no es necesario especificar tipo de cascada.
Como plantilla, puedes utilizar:
import org.hibernate.*;
import jakarta.persistence.*;
import java.util.ArrayList;
import java.util.List;
// Entidades Documento y Usuario
public class HibernateLazyLoadingDemo {
public static void main(String[] args) {
SessionFactory sessionFactory = ...; // Asumir que ya está definido
Session session = sessionFactory.openSession();
// Crear un nuevo usuario con documentos
// Recuperar usuario e intentar acceder a sus documentos después de cerrar la sesión
Usuario retrievedUser = session.get(Usuario.class, usuario.getId());
session.close(); // Cerramos la sesión para demostrar carga lazy
try {
System.out.println("Documentos: " + retrievedUser.getDocumentos().size());
} catch (LazyInitializationException e) {
System.out.println("Error al intentar acceder a documentos con sesión cerrada: " + e.getMessage());
}
sessionFactory.close();
}
}
Lección relacionada
Este ejercicio está relacionado con la lección "Optimización de asociaciones con carga lazy" de Hibernate. Te recomendamos revisar la lección antes de comenzar.
Ver lección relacionadaMás ejercicios de Hibernate
Explora más ejercicios de programación en Hibernate para mejorar tus habilidades y obtener tu certificación.
Ver más ejercicios de HibernateSolución al ejercicio de programación en Hibernate
¡Desbloquea la solución completa!
Completa el ejercicio de programación en Hibernate para acceder a la solución paso a paso, explicaciones detalladas y mejores prácticas.
Practica con ejercicios de programación en Hibernate
Mejora tus habilidades con cientos de ejercicios de práctica, recibe retroalimentación instantánea y obtén tu certificación cuando estés listo.
Asistente de IA
Aprende de tus errores
Progreso
Mide tu avance
Certificación
Valida tus habilidades
Únete a miles de desarrolladores mejorando sus habilidades en Hibernate