jpa
Relaciones entre entidades
Buscar..
Observaciones
Conceptos básicos de relaciones entre entidades
Una clave externa puede ser una o más columnas que hacen referencia a una clave única, generalmente la clave principal, en otra tabla.
Una clave externa y la clave principal primaria a la que hace referencia deben tener el mismo número y tipo de campos.
Las claves externas representan relaciones de una columna o columnas en una tabla a una columna o columnas en otra tabla.
Multiplicidad en las relaciones de la entidad
Multiplicidad en las relaciones de la entidad
Las multiplicidades son de los siguientes tipos:
- Uno a uno : cada instancia de entidad está relacionada con una instancia única de otra entidad.
- De uno a muchos : una instancia de entidad puede estar relacionada con múltiples instancias de las otras entidades.
- Muchos a uno : varias instancias de una entidad pueden relacionarse con una sola instancia de la otra entidad.
- Muchos a muchos : las instancias de la entidad pueden relacionarse con múltiples instancias entre sí.
Mapeo uno a uno
El mapeo uno a uno define una asociación de un solo valor con otra entidad que tiene una multiplicidad uno a uno. Esta asignación de relaciones utiliza la anotación @OneToOne en la propiedad o campo persistente correspondiente.
Ejemplo: Entidades de Vehicle y ParkingPlace .
Mapeo uno a muchos
Una instancia de entidad puede estar relacionada con múltiples instancias de las otras entidades.
Las relaciones de uno a muchos usan la anotación @OneToMany en la propiedad o campo persistente correspondiente.
El elemento mappedBy es necesario para referirse al atributo anotado por ManyToOne en la entidad correspondiente:
@OneToMany(mappedBy="attribute")
Una asociación de uno a muchos necesita mapear la colección de entidades.
Mapeo de muchos a uno
Una asignación muchos a uno se define al anotar el atributo en la entidad de origen (el atributo que se refiere a la entidad objetivo) con la anotación @ManyToOne .
Una @JoinColumn(name="FK_name") clave de una relación.
Mapeo de muchos a muchos
Las instancias de entidad pueden estar relacionadas con múltiples instancias entre sí.
Las relaciones muchos a muchos usan la anotación @ManyToMany en la propiedad o campo persistente correspondiente.
Debemos usar una tercera tabla para asociar los dos tipos de entidad (unir tabla).
Ejemplo de anotación de @JoinTable
Cuando se mapean relaciones de muchos a muchos en JPA, la configuración de la tabla utilizada para la unión de claves foráneas se puede proporcionar mediante la anotación @JoinTable :
@Entity
public class EntityA {
@Id
@Column(name="id")
private long id;
[...]
@ManyToMany
@JoinTable(name="table_join_A_B",
joinColumns=@JoinColumn(name="id_A"), referencedColumnName="id"
inverseJoinColumns=@JoinColumn(name="id_B", referencedColumnName="id"))
private List<EntityB> entitiesB;
[...]
}
@Entity
public class EntityB {
@Id
@Column(name="id")
private long id;
[...]
}
En este ejemplo, que consiste en que EntityA tiene una relación de muchos a muchos con EntityB, realizada por el campo entitiesB , usamos la anotación @JoinTable para especificar que el nombre de la tabla para la tabla de unión es table_join_A_B , compuesto por las columnas id_A y id_B , claves externas que hacen referencia respectivamente a la columna id en la tabla de EntityA y en la tabla de EntityB; (id_A,id_B) será una clave primaria compuesta para table_join_A_B table.