01 OperacionesBasicasHibernate Parte1
01 OperacionesBasicasHibernate Parte1
Temas principales:
https://www.globalmentoring.com.mx 1
Ing. Ubaldo Acosta Universidad Java
Cambios realizados:
Código:
package gm.dao;
https://www.globalmentoring.com.mx 2
Ing. Ubaldo Acosta Universidad Java
import gm.domain.Persona;
import jakarta.persistence.*;
import java.util.List;
public PersonaDAO() {
this.emf = Persistence.createEntityManagerFactory("HibernatePU");
this.em = emf.createEntityManager();
}
@Override
public void close() {
if (em.isOpen()) em.close();
if (emf.isOpen()) emf.close();
}
}
• implements AutoCloseable
Permite que esta clase pueda usarse en un bloque try-with-resources, para cerrar
automáticamente las conexiones al finalizar el uso del DAO.
• Atributos emf y em
Se declaran como final y se inicializan en el constructor:
o emf: Fábrica de gestores de entidades, creada usando la unidad de persistencia
"HibernatePU".
o em: Gestor de entidades, encargado de interactuar con la base de datos.
• listar()
Ejecuta una consulta HQL (SELECT p FROM Persona p) para recuperar todas las entidades Persona
almacenadas.
Devuelve una List<Persona> con los resultados.
https://www.globalmentoring.com.mx 3
Ing. Ubaldo Acosta Universidad Java
• imprimirPersonas()
Llama al método listar() y utiliza forEach con una expresión lambda para imprimir cada objeto
Persona en consola.
• close() (sobrescrito del AutoCloseable)
Se encarga de cerrar correctamente el EntityManager y EntityManagerFactory si siguen abiertos.
Esto es esencial para liberar recursos y evitar errores de conexión persistente en la aplicación.
Con esta estructura, el acceso a datos se vuelve más limpio, eficiente y fácil de mantener.
Código:
package test;
import gm.dao.PersonaDAO;
• Se importa la clase PersonaDAO, que contiene la lógica para acceder a los datos de personas en la
base de datos.
• Dentro del método main, se utiliza un bloque try-with-resources para crear una instancia de
PersonaDAO.
Esto es posible porque PersonaDAO ahora implementa la interfaz AutoCloseable, lo que permite
que sus recursos (como EntityManager) se cierren automáticamente al finalizar el bloque.
• Se llama al método imprimirPersonas() de PersonaDAO, que ejecuta una consulta para recuperar
las personas almacenadas y las imprime en la consola.
Esta versión mejora la gestión de recursos, evitando posibles fugas de conexión a la base de datos.
https://www.globalmentoring.com.mx 4
Ing. Ubaldo Acosta Universidad Java
Conclusión
En esta lección aplicamos correctamente el patrón DAO (Data Access Object) junto con Hibernate y JPA
para realizar operaciones básicas sobre la entidad Persona.
¿Qué logramos?
Este enfoque sienta una base sólida para las siguientes operaciones CRUD (crear, modificar y eliminar)
que veremos más adelante en el curso, manteniendo una arquitectura robusta desde el inicio.
¡Saludos!
Fundadores de GlobalMentoring.com.mx
https://www.globalmentoring.com.mx 5