Hibernate

Hibernate

Tutorial Hibernate: CRUD en Hibernate

Hibernate CRUD: operaciones básicas. Domina las operaciones CRUD en Hibernate mediante ejemplos prácticos y detallados.

Introducción

CRUD es un acrónimo para las cuatro operaciones básicas utilizadas en el manejo de bases de datos: Crear (Create), Leer (Read), Actualizar (Update), Eliminar (Delete). 

Estas operaciones son fundamentales para el manejo de datos en cualquier aplicación y forman la esencia del acceso a bases de datos en el desarrollo de software.

En el contexto de Hibernate y las bases de datos, CRUD se refiere a cómo estas operaciones pueden ser implementadas para interactuar con una base de datos relacional utilizando el paradigma orientado a objetos.

Gestion de sesiones

En Hibernate, el flujo de trabajo para realizar operaciones CRUD está estrechamente ligado al uso de dos componentes clave: SessionFactory y Session.

SessionFactory

SessionFactory es un objeto pesado, destinado a ser creado una sola vez durante la vida de la aplicación. Es responsable de iniciar la configuración de Hibernate y proporcionar instancias de Session. La creación de SessionFactory típicamente se realiza durante el inicio de la aplicación, y se basa en la configuración definida en el archivo hibernate.cfg.xml o mediante configuración programática. Este objeto mantiene servicios como conexiones a la base de datos, caché de segundo nivel y configuraciones de mapeo de entidades.

Session

Session es la principal interfaz a través de la cual se realizan las operaciones CRUD en Hibernate. Representa una conversación entre la aplicación y la base de datos, manteniendo un contexto de persistencia (caché de primer nivel) y ofreciendo métodos para realizar consultas y actualizar la base de datos. Las sesiones son livianas y están diseñadas para ser instanciadas por cada unidad de trabajo (por ejemplo, una solicitud HTTP en una aplicación web), y deben ser cerradas una vez que el trabajo ha sido completado.

Flujo de trabajo con Session

  • Abrir una sesión: Se inicia obteniendo una nueva Session desde el SessionFactory usando el método openSession(). Este paso marca el inicio de una unidad de trabajo.
Session session = sessionFactory.openSession();
  • Iniciar una transacción: Casi todas las operaciones CRUD requieren ser ejecutadas dentro de una transacción. Hibernate gestiona las transacciones a través de la Session, y se inician con beginTransaction().
session.beginTransaction();
  • Realizar operaciones CRUD: Dentro de la transacción, se pueden realizar múltiples operaciones CRUD —crear, leer, actualizar, eliminar— sobre las entidades.
  • Comprometer la transacción: Una vez completadas las operaciones CRUD, se debe finalizar la transacción para que los cambios sean persistidos en la base de datos. Esto se hace con commit().
session.getTransaction().commit();
  • Cerrar la sesión: Finalmente, es importante cerrar la Session para liberar los recursos de la base de datos y mantener el rendimiento de la aplicación. Esto se realiza con close().
session.close();

Este flujo de trabajo es esencial para realizar operaciones de base de datos de manera segura y eficiente con Hibernate, aprovechando su gestión de transacciones y contexto de persistencia.

Por tanto, el orden de operaciones general sería:

Session session = sessionFactory.openSession();
session.beginTransaction();

/* Aquí todas las operaciones CRUD */

session.getTransaction().commit();
session.close();

Operaciones CRUD

Crear (Create)

La operación “Crear” implica la inserción de nuevos registros en la base de datos. En Hibernate, esto se realiza instanciando objetos de las clases de entidad, que son clases de Java anotadas que representan tablas en la base de datos, y luego persistiéndolas usando el método save() de la sesión de Hibernate.

Session session = sessionFactory.openSession();
session.beginTransaction();

// Crear instancia de la entidad
Usuario nuevoUsuario = new Usuario();
nuevoUsuario.setId(123);
nuevoUsuario.setNombre("Laura");
nuevoUsuario.setEmail("laura@example.com");

// Persistir la instancia en la base de datos
session.save(nuevoUsuario);

// Finalizar la transacción y cerrar la sesión
session.getTransaction().commit();
session.close();

Leer (Read)

Leer se refiere a la recuperación de datos de la base de datos. Hibernate facilita la lectura de registros mediante el uso de su API, permitiendo tanto la recuperación de entidades específicas mediante su clave primaria como la ejecución de consultas para recuperar múltiples entidades basadas en criterios específicos.

Para recuperar una entidad por su ID:

Session session = sessionFactory.openSession();

Usuario usuario = session.get(Usuario.class, 123);

if (usuario != null) {
    System.out.println(usuario.getNombre());
}

session.close();

Actualizar (Update)

Actualizar implica modificar los datos existentes en la base de datos. Con Hibernate, esto se logra modificando las instancias de las entidades recuperadas y luego aplicando estos cambios a la base de datos con el método update() o simplemente modificando la entidad dentro de una transacción, lo que Hibernate detectará y sincronizará automáticamente gracias a su característica de seguimiento de sesión.

Session session = sessionFactory.openSession();
session.beginTransaction();

Usuario usuario = session.get(Usuario.class, 123);
usuario.setEmail("nuevo.email@example.com");

// Hibernate detecta automáticamente los cambios y los sincroniza con la base de datos al comprometer la transacción
session.getTransaction().commit();
session.close();

Eliminar (Delete)

Eliminar es el proceso de remover registros de la base de datos. En Hibernate, se puede eliminar una entidad cargándola primero y luego utilizando el método delete() de la sesión.

Session session = sessionFactory.openSession();
session.beginTransaction();

Usuario usuario = session.get(Usuario.class, 123);

if (usuario != null) {
    session.delete(usuario);
}

session.getTransaction().commit();
session.close();
Certifícate en Hibernate con CertiDevs PLUS

Ejercicios de esta lección CRUD en Hibernate

Evalúa tus conocimientos de esta lección CRUD en Hibernate con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Consultas JPQL avanzadas

Hibernate
Código

Configuración con JPA

Hibernate
Test

Tipos de datos personalizados

Hibernate
Puzzle

Consultas Criteria avanzadas

Hibernate
Código

Operaciones en cascada

Hibernate
Test

Anotaciones JPA

Hibernate
Puzzle

Asociación Many To One

Hibernate
Test

Funciones en consultas JPQL

Hibernate
Código

Asociación Many To Many entre Actor y Pelicula

Hibernate
Código

Asociación One To Many entre Curso y Estudiante

Hibernate
Código

Tipos de datos básicos

Hibernate
Test

Consultas Criteria básicas

Hibernate
Código

Asociación Many To Many

Hibernate
Puzzle

CRUD de entidades con asociaciones

Hibernate
Proyecto

Optimización de asociaciones con carga lazy

Hibernate
Código

Asociación One To Many

Hibernate
Puzzle

Configuración con Maven

Hibernate
Test

Asociación One To One

Hibernate
Test

CRUD en Hibernate

Hibernate
Código

Operaciones en cascada

Hibernate
Puzzle

Introducción a Hibernate

Hibernate
Test

Atributos de tipo enum en entidades JPA

Hibernate
Código

Carga de asociaciones en consultas con EntityGraph

Hibernate
Código

Configuración con Gradle

Hibernate
Test

Asociación One To One entre Libro y Resumen

Hibernate
Código

Asociación One To Many

Hibernate
Test

Asociación Many To Many

Hibernate
Test

Creación de entidades

Hibernate
Test

Ciclo de vida de una entidad

Hibernate
Código

Consultas JPQL básicas

Hibernate
Código

Carga de asociaciones en consultas con EntityGraph y anotaciones

Hibernate
Código

Tipos de datos embebidos

Hibernate
Código

Asociación Many To One entre Paciente y Clinica

Hibernate
Código

Asociación Many To One

Hibernate
Puzzle

Optimización de consultas con DTOs

Hibernate
Código

Atributos @Transient en entidades

Hibernate
Código

Asociación One To One

Hibernate
Puzzle

Todas las lecciones de Hibernate

Accede a todas las lecciones de Hibernate y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Introducción A Hibernate

Hibernate

Introducción Y Entorno

Configuración Hibernate Con Gradle

Hibernate

Introducción Y Entorno

Configuración Hibernate Con Maven

Hibernate

Introducción Y Entorno

Configuración Hibernate Con Jpa

Hibernate

Introducción Y Entorno

Creación De Entidades Jpa

Hibernate

Entidades Jpa Y Tipos De Datos

Tipos De Datos En Hibernate

Hibernate

Entidades Jpa Y Tipos De Datos

Atributos @Transient En Entidades

Hibernate

Entidades Jpa Y Tipos De Datos

Enums En Hibernate

Hibernate

Entidades Jpa Y Tipos De Datos

Tipos De Datos Embebidos

Hibernate

Entidades Jpa Y Tipos De Datos

Crud En Hibernate

Hibernate

Entidades Jpa Y Tipos De Datos

Ciclo De Vida De Una Entidad

Hibernate

Entidades Jpa Y Tipos De Datos

Asociación One To One

Hibernate

Asociaciones Entre Entidades

Asociación One To Many

Hibernate

Asociaciones Entre Entidades

Asociación Many To One

Hibernate

Asociaciones Entre Entidades

Asociación Many To Many

Hibernate

Asociaciones Entre Entidades

Operaciones En Cascada

Hibernate

Asociaciones Entre Entidades

Consultas Jpql Básicas

Hibernate

Consultas Hql Y Jpql

Consultas Jpql Avanzadas

Hibernate

Consultas Hql Y Jpql

Funciones En Consultas Jpql

Hibernate

Consultas Hql Y Jpql

Consultas Criteria Básicas

Hibernate

Api Criteria De Jpa

Consultas Criteria Avanzadas

Hibernate

Api Criteria De Jpa

Carga De Asociaciones En Consultas Con Entitygraph

Hibernate

Api Entitygraph

Carga De Asociaciones En Consultas Con Entitygraph Y Anotaciones

Hibernate

Api Entitygraph

Optimización De Consultas Con Dtos

Hibernate

Optimización

Optimización De Asociaciones Con Carga Lazy

Hibernate

Optimización

Certificados de superación de Hibernate

Supera todos los ejercicios de programación del curso de Hibernate y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender el significado y la importancia de las operaciones CRUD en el manejo de bases de datos.
  • Entender el concepto y la importancia de SessionFactory y Session en la gestión de sesiones y transacciones con Hibernate.
  • Familiarizarse con el flujo de trabajo estándar para realizar operaciones CRUD, que incluye abrir una sesión, iniciar una transacción, ejecutar operaciones CRUD, comprometer la transacción y cerrar la sesión.
  • Conocer cómo crear, leer, actualizar y eliminar registros en una base de datos utilizando los métodos proporcionados por la Session de Hibernate.