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.
Aprende Hibernate GRATIS y certifícateIntroducció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
.
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
Configuración con JPA
Tipos de datos personalizados
Consultas Criteria avanzadas
Operaciones en cascada
Anotaciones JPA
Asociación Many To One
Funciones en consultas JPQL
Asociación Many To Many entre Actor y Pelicula
Asociación One To Many entre Curso y Estudiante
Tipos de datos básicos
Consultas Criteria básicas
Asociación Many To Many
CRUD de entidades con asociaciones
Optimización de asociaciones con carga lazy
Asociación One To Many
Configuración con Maven
Asociación One To One
CRUD en Hibernate
Operaciones en cascada
Introducción a Hibernate
Atributos de tipo enum en entidades JPA
Carga de asociaciones en consultas con EntityGraph
Configuración con Gradle
Asociación One To One entre Libro y Resumen
Asociación One To Many
Asociación Many To Many
Creación de entidades
Ciclo de vida de una entidad
Consultas JPQL básicas
Carga de asociaciones en consultas con EntityGraph y anotaciones
Tipos de datos embebidos
Asociación Many To One entre Paciente y Clinica
Asociación Many To One
Optimización de consultas con DTOs
Atributos @Transient en entidades
Asociación One To One
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
Introducción Y Entorno
Configuración Hibernate Con Gradle
Introducción Y Entorno
Configuración Hibernate Con Maven
Introducción Y Entorno
Configuración Hibernate Con Jpa
Introducción Y Entorno
Creación De Entidades Jpa
Entidades Jpa Y Tipos De Datos
Tipos De Datos En Hibernate
Entidades Jpa Y Tipos De Datos
Atributos @Transient En Entidades
Entidades Jpa Y Tipos De Datos
Enums En Hibernate
Entidades Jpa Y Tipos De Datos
Tipos De Datos Embebidos
Entidades Jpa Y Tipos De Datos
Crud En Hibernate
Entidades Jpa Y Tipos De Datos
Ciclo De Vida De Una Entidad
Entidades Jpa Y Tipos De Datos
Asociación One To One
Asociaciones Entre Entidades
Asociación One To Many
Asociaciones Entre Entidades
Asociación Many To One
Asociaciones Entre Entidades
Asociación Many To Many
Asociaciones Entre Entidades
Operaciones En Cascada
Asociaciones Entre Entidades
Consultas Jpql Básicas
Consultas Hql Y Jpql
Consultas Jpql Avanzadas
Consultas Hql Y Jpql
Funciones En Consultas Jpql
Consultas Hql Y Jpql
Consultas Criteria Básicas
Api Criteria De Jpa
Consultas Criteria Avanzadas
Api Criteria De Jpa
Carga De Asociaciones En Consultas Con Entitygraph
Api Entitygraph
Carga De Asociaciones En Consultas Con Entitygraph Y Anotaciones
Api Entitygraph
Optimización De Consultas Con Dtos
Optimización
Optimización De Asociaciones Con Carga Lazy
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.