Hibernate

Hibernate

Tutorial Hibernate: Tipos de datos en Hibernate

Hibernate tipos de datos anotaciones: uso. Domina el uso de anotaciones para tipos de datos en Hibernate con ejemplos prácticos y detallados.

Introducción

A través de su sistema de tipos, Hibernate puede convertir, por ejemplo, una cadena en Java (String) a un tipo VARCHAR en una base de datos y viceversa. 

Sin embargo, no siempre es tan sencillo, y es por eso que Hibernate ofrece una amplia variedad de tipos de datos, así como la capacidad de definir tipos personalizados, permitiendo a los desarrolladores controlar cómo se realizan estas conversiones y adaptarlas a las necesidades específicas de su aplicación.

Tipos básicos

Los tipos básicos en Hibernate son una categoría de tipos que corresponden directamente a los tipos Java estándar. Estos tipos están diseñados para ofrecer un mapeo simple y directo entre las columnas de la base de datos y los campos de las entidades Java.

La ventaja de estos tipos básicos es que facilitan el proceso de mapeo y requieren una configuración mínima. Hibernate ya conoce cómo mapear estos tipos de datos, y para la mayoría de las aplicaciones, estos mapeos predeterminados son suficientes.

Algunos ejemplos comunes de tipos básicos en Hibernate incluyen:

Tipos primitivos de Java y sus contrapartes envolventes:

  • int y Integer: se mapean generalmente a columnas de tipo INTEGER en bases de datos.
  • long y Long: se mapean a BIGINT o equivalentes.
  • boolean y Boolean: suelen mapearse a BOOLEAN o, en algunas bases de datos, a BIT o TINYINT.
  • char y Character: pueden mapearse a columnas CHAR de longitud 1.

Objetos comunes en Java:

  • String: generalmente se mapea a VARCHAR o TEXT, dependiendo de la longitud.
  • Date y Timestamp de java.util: a menudo se mapean a columnas de tipo DATE o TIMESTAMP en bases de datos.

Tipos numéricos de precisión arbitraria:

  • BigInteger: se mapea a columnas BIGINT.
  • BigDecimal: se mapea a columnas de tipo DECIMAL o NUMERIC.

Arrays y Colecciones:

  • Listas, conjuntos y mapas (List, Set, Map) tienen tipos específicos en Hibernate para manejar colecciones de entidades o valores.

Ejemplo

Ejemplo de tipos de datos sobre una entidad Employee

import jakarta.persistence.*;

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

    @Column(name = "titulo", length = 200)
    private String titulo;

    @Temporal(TemporalType.DATE)
    @Column(name = "fecha_publicacion")
    private Date fechaPublicacion;
    
    @Temporal(TemporalType.TIME)
    @Column(name = "wake_time")
    private Date wakeTime;
    
    @Column(name="test_date")
    private Instant testDate;
    
    @Enumerated(EnumType.STRING)
    private ContractType type;
    
    @ElementCollection
    @CollectionTable(
            name = "employee_phones",
            joinColumns = @JoinColumn(name = "id_employee")
    )
    private List<String> phones= new ArrayList<>();
    
    @Column(columnDefinition = "boolean default false")
    private Boolean active;

    // constructor vacío
    // getters y setters...
}

El campo id es de tipo Long en Java y, por defecto, Hibernate lo mapeará a una columna de tipo BIGINT en la base de datos.

El campo titulo es de tipo String y se mapeará a una columna VARCHAR con una longitud máxima de 200 caracteres.

El campo fechaPublicacion es del tipo Date de java.util. Al usar la anotación @Temporal, se indica a Hibernate que debe mapearse a una columna DATE en la base de datos.

Es importante notar que, si bien estos tipos básicos cubren una amplia gama de necesidades comunes, hay situaciones en las que se pueden requerir mapeos más complejos o personalizados. Es en esos casos donde los tipos personalizados y otros mecanismos avanzados de Hibernate entran en juego.

Certifícate en Hibernate con CertiDevs PLUS

Ejercicios de esta lección Tipos de datos en Hibernate

Evalúa tus conocimientos de esta lección Tipos de datos 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

  1. Comprender los Tipos Básicos y aprender cómo los tipos estándar de Java se mapean a los tipos de columna en la base de datos y cómo utilizarlos en las entidades.
  2. Dominar los Tipos Personalizados y entender cómo crear y utilizar tipos personalizados para manejar mapeos complejos o no convencionales.
  3. Conocer la Integración en Entidades y saber cómo integrar los tipos básicos y personalizados en entidades de Hibernate.
  4. Optimizar el Mapeo de Datos y desarrollar habilidades para elegir y utilizar los tipos de datos correctos, optimizando la eficiencia y la integridad de los datos.
  5. Fomentar la Reutilización y Adaptabilidad y aprender a diseñar mapeos de tipos que sean reutilizables y adaptables a diferentes necesidades y contextos.