Hibernate

Hibernate

Tutorial Hibernate: Tipos de datos embebidos

Hibernate embed: inserción de entidades. Aprende a insertar entidades embebidas en Hibernate con ejemplos prácticos y detallados.

Introducción

Los tipos de datos embebidos, también conocidos como tipos “Embeddable”, son clases en Java que no se mapean directamente a una tabla en la base de datos, sino que se incluyen en otras entidades como si fueran parte de ellas. Esto permite modelar de manera más natural algunas relaciones entre los datos, agrupando en una clase atributos que lógicamente pertenecen juntos.

Los tipos embebidos se utilizan para representar un conjunto de atributos que comúnmente van juntos y son reutilizados por varias entidades. Por ejemplo, una dirección postal que incluye calle, número, código postal, etc., puede ser parte de una entidad Persona y también de una entidad Empresa. En lugar de repetir estos campos en cada entidad, se crea una clase Direccion marcada como @Embeddable, y luego se incluye en las entidades donde se necesite con la etiqueta @Embedded.

Definición de un tipo embebido

Primero, puede definirse una clase Direccion como un tipo embebido:

package com.ejemplo.hibernate;

import jakarta.persistence.Embeddable;

@Embeddable
public class Direccion {
    private String calle;
    private String numero;
    private String codigoPostal;
    private String ciudad;

    // Constructores, getters y setters
}

Luego, podrá utilizarse la clase Direccion en la entidad Persona:

package com.ejemplo.hibernate;

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Embedded;

@Entity
public class Persona {
    @Id
    private Long id;
    private String nombre;
    
    @Embedded
    private Direccion direccion; // Aquí se utiliza el tipo embebido

    // Constructores, getters y setters
}

Configuración Avanzada

Hibernate también permite personalizar cómo se mapean los atributos de un tipo embebido a columnas en la base de datos. Por ejemplo, si queremos prefijar los nombres de las columnas relacionadas con la dirección, puede hacerse de la siguiente manera:

@Embedded
@AttributeOverrides({
    @AttributeOverride(name="calle", column=@Column(name="dir_calle")),
    @AttributeOverride(name="numero", column=@Column(name="dir_numero")),
    @AttributeOverride(name="codigoPostal", column=@Column(name="dir_cp")),
    @AttributeOverride(name="ciudad", column=@Column(name="dir_ciudad"))
})
private Direccion direccion;

Esto resulta en que los campos de Direccion se mapeen a columnas dir_calle, dir_numero, dir_cp, dir_ciudad, respectivamente, en la tabla correspondiente a la entidad Persona.

Certifícate en Hibernate con CertiDevs PLUS

Ejercicios de esta lección Tipos de datos embebidos

Evalúa tus conocimientos de esta lección Tipos de datos embebidos 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 concepto de tipos de datos embebidos en Java y su propósito.
  • Aprender a definir y utilizar clases embebidas en otras entidades mediante anotaciones específicas.
  • Conocer la manera de personalizar el mapeo de atributos de tipos embebidos a columnas en la base de datos.
  • Mejorar el diseño de bases de datos evitando la redundancia de atributos en múltiples tablas.