Entidades en Hibernate

Una de las características clave de Hibernate es su capacidad para mapear clases de Java a tablas de bases de datos, lo que permite una interacción perfecta entre el mundo orientado a objetos y las bases de datos relacionales. En este artículo, exploraremos el concepto de entidades de Hibernate y cómo mapear clases Java a tablas de bases de datos mediante anotaciones. También proporcionaremos un código de muestra para demostrar el proceso de mapeo de entidades.

Entendiendo las entidades en Hibernate

En Hibernate, una entidad es una clase Java que representa una tabla de base de datos. Cada instancia de la clase de entidad corresponde a una fila de la tabla y los atributos de la clase representan las columnas de la tabla. Hibernate proporciona varias anotaciones para facilitar este proceso de mapeo.

Crear la tabla

Para este ejemplo vamos a utilizar MySQL y vamos a usar el siguiente script para crear una nueva tabla en nuestra base de datos:

CREATE TABLE PRODUCTS (
	ID int unsigned not null auto_increment,
    primary key(ID),
	PRODUCT_NAME varchar(50),
    PRICE double
);

El script anterior se utiliza para crear una tabla llamada «PRODUCTS» con cuatro columnas: ID, PRODUCT_NAME y PRICE. Analicemos cada parte del script para entender el propósito de los parámetros utilizados:

  • CREATE TABLE DE PRODUCTS: Esta línea inicia la creación de una tabla denominada «PRODUCTS«. La declaración «CREATE TABLE» se utiliza para definir una nueva tabla en la base de datos.
  • ID int unsigned not null auto_increment: esta línea define la primera columna de la tabla llamada «ID«. Aquí hay una explicación de cada parámetro utilizado:
    • ID: Es el nombre de la columna.
    • int: Especifica el tipo de datos de la columna, en este caso es un número entero.
    • unsigned: La palabra clave «unsigned» indica que los valores almacenados en esta columna solo serán positivos o cero. No permite valores negativos.
    • not null: este parámetro garantiza que la columna no pueda almacenar valores nulos, lo que significa que siempre debe tener un valor.
    • auto_increment: el atributo «auto_increment» asigna automáticamente un valor único a esta columna para cada nueva fila insertada en la tabla. Se utiliza comúnmente para columnas de clave principal para garantizar la unicidad.
  • Primary key (ID): esta línea especifica que la columna «ID» es la clave principal de la tabla. La clave principal identifica de forma única cada fila de la tabla. Garantiza que no haya dos filas que puedan tener el mismo valor en la columna de clave principal.

Paso 1: Crear la clase de entidad

Mapear una tabla de base de datos usando Hibernate implica definir un mapeo entre la tabla de base de datos y una clase Java correspondiente. Hibernate es un Framework Object-Relational Mapping (ORM) que simplifica la interacción entre objetos Java y bases de datos relacionales.

En su proyecto, cree una nueva clase Java que represente la entidad que desea asignar a una tabla de base de datos. Por ejemplo, creemos una clase llamada «Product» que represente una entidad de producto.

import javax.persistence.*;

@Entity
@Table(name = "products")
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "product_name")
    private String productName;

    private double price;

    // Getters and setters

    // Additional methods and logic
}

En el código anterior, usamos la anotación @Entity para marcar la clase como una entidad. Esta anotación se utiliza para marcar una clase Java como una entidad, indicando que está mapeada a una tabla de base de datos. Cuando una clase está anotada con @Entity, Hibernate la reconoce como una entidad persistente y proporciona varias funciones para mapear y administrar los datos de la entidad en la base de datos.

La anotación @Table se utiliza en Hibernate para especificar los detalles de la tabla de la base de datos a la que se asigna una entidad. Normalmente se utiliza junto con la anotación @Entity para definir la asignación entre una clase Java y una tabla de base de datos. En el ejemplo anterior la anotación @Table se utiliza para especificar el nombre de la tabla de base de datos correspondiente.

La anotación @Id se utiliza en Hibernate para marcar un campo o propiedad como la clave principal de una entidad. Normalmente se utiliza junto con la anotación @Entity para definir la asignación entre una clase Java y una tabla de base de datos. La anotación @GeneratedValue especifica la estrategia para generar los valores de la clave principal. En el ejemplo anterior utilizamos GenerationType.IDENTITY. esta estrategia se basa en una columna de identidad en la base de datos para generar valores de clave primaria únicos. Es adecuado para bases de datos que admiten columnas de incremento automático, como MySQL.

Paso 2: Asignación de atributos a columnas

A continuación, necesitamos mapear los atributos de la clase de entidad a las columnas correspondientes en la tabla de la base de datos. Hibernate proporciona la anotación @Column para este propósito. La anotación @Column se utiliza en Hibernate para especificar el mapeo entre el atributo de una entidad Java y una columna de base de datos. Permite definir varias propiedades de la columna, como su nombre, tipo, longitud, estado anulable y más. En el ejemplo anterior, utilizamos la anotación @Column para asignar el atributo productName a la columna «product_name» en la tabla «products».

Paso 3: realizar operaciones de base de datos

Ahora que tenemos nuestra clase de entidad mapeada a una tabla de base de datos, realicemos algunas operaciones de base de datos usando Hibernate. Sigue estos pasos:

  1. Cree un archivo de configuración de Hibernate: si aún no lo ha hecho, cree un archivo de configuración de Hibernate (hibernate.cfg.xml) y configure los ajustes de conexión de la base de datos como se explica en el artículo anterior.
  2. Realice operaciones de base de datos: en su clase principal de Java, agregue el siguiente código para demostrar las operaciones de base de datos utilizando entidades de Hibernate:
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateEntityExample {
    public static void main(String[] args) {
        // Create a SessionFactory
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

        // Open a session
        Session session = sessionFactory.openSession();

        // Begin a transaction
        session.beginTransaction();

        // Create a new Product object
        Product product = new Product();
        product.setProductName("Sample Product");
        product.setPrice(9.99);

        // Save the product object to the database
        session.save(product);

        // Commit the transaction
        session.getTransaction().commit();

        // Close the session and the SessionFactory
        session.close();
        sessionFactory.close();
    }
}

En el código anterior, creamos un objeto Product, configuramos sus atributos y luego lo guardamos en la base de datos usando el método session.save().

Conclusión

En este artículo, exploramos el concepto de entidades de Hibernate y cómo mapear clases de Java a tablas de bases de datos mediante anotaciones. Vimos cómo crear una clase de entidad, mapear sus atributos a columnas y realizar operaciones de base de datos utilizando entidades de Hibernate. Al aprovechar el poder del mapeo de entidades de Hibernate, puede integrar perfectamente su aplicación Java con una base de datos relacional, haciendo que la persistencia y recuperación de datos sea muy sencilla.


Te puede interesar

Introducción a Hibernate

En esta introducción a Hibernate, haremos una introducción a conceptos importantes de Hibernate, explorando sus características y beneficios.

Seguir leyendo →