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.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow