Aprender a modelar relaciones entre tablas en Java usando JPA, como por ejemplo:
@OneToMany (uno a muchos)
@ManyToOne (muchos a uno)
@OneToOne (uno a uno)
@ManyToMany (muchos a muchos)
En este ejemplo vamos a modelar una relación simple: Una Persona puede tener varias Direcciones.
package com.ejemplo.demo.entidad;
import jakarta.persistence.*;
import java.util.List;
@Entity
public class Persona {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nombre;
@OneToMany(mappedBy = "persona", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Direccion> direcciones;
// Constructores, getters y setters
}
Anotaciones clave:
@OneToMany(mappedBy = "persona"): Declara una relación de uno a muchos. Una persona puede tener varias direcciones.
- mappedBy = "persona": indica que el atributo que mantiene la relación está del otro lado (Direccion.persona).
- cascade = CascadeType.ALL: al guardar o eliminar una persona, se aplican los cambios también a sus direcciones.
- orphanRemoval = true: elimina direcciones si se quitan de la lista.
Entidad Direccion:
package com.ejemplo.demo.entidad;
import jakarta.persistence.*;
@Entity
public class Direccion {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String calle;
private String ciudad;
@ManyToOne
@JoinColumn(name = "persona_id")
private Persona persona;
// Constructores, getters y setters
}
Anotaciones clave:
@ManyToOne: Cada dirección pertenece a una sola persona.
@JoinColumn(name = "persona_id"): Crea una columna en la tabla direccion llamada persona_id que actúa como clave foránea a la tabla persona.
Las listas deben ser inicializadas como new ArrayList<>() si se van a usar directamente.
Si no usás orphanRemoval, las direcciones quedan "huérfanas" si quitás una de la lista.
Un pequeño ejemplo para que vayamos incrementando nuestro conocimiento en JPA.
.png)
No hay comentarios.:
Publicar un comentario