Descripción
En este ejercicio, harás uso del tipo de fetch lazy para cargar entidades asociadas dinámicamente en Hibernate.
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.
Guarda tu progreso
Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.
Más de 25.000 desarrolladores ya confían en CertiDevs
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();
}
}
Solució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