Ricerca…


Osservazioni

Relazioni tra le nozioni di base delle entità

Una chiave esterna può essere una o più colonne che fanno riferimento a una chiave univoca, in genere la chiave primaria, in un'altra tabella.

Una chiave esterna e la chiave genitore primaria a cui fa riferimento devono avere lo stesso numero e tipo di campi.

Le chiavi esterne rappresentano le relazioni da una colonna o colonne in una tabella a una colonna o colonne in un'altra tabella.

Molteplicità nelle relazioni tra entità

Molteplicità nelle relazioni tra entità

Le molteplicità sono dei seguenti tipi:

  • Uno a uno : ogni istanza di entità è correlata a una singola istanza di un'altra entità.
  • Uno a molti : un'istanza di entità può essere correlata a più istanze delle altre entità.
  • Molte-a-uno : più istanze di un'entità possono essere correlate a una singola istanza dell'altra entità.
  • Molti-a-molti : le istanze di entità possono essere correlate a più istanze l'una dell'altra.

Mappatura One-to-One

Il mapping uno-a-uno definisce un'associazione a valore singolo con un'altra entità con molteplicità uno-a-uno. Questo mapping delle relazioni utilizza l'annotazione @OneToOne nella proprietà o campo persistente corrispondente.

Esempio: entità Vehicle e ParkingPlace .

Mappatura uno a molti

Un'istanza di entità può essere correlata a più istanze delle altre entità.

Le relazioni uno-a-molti utilizzano l'annotazione @OneToMany sulla proprietà o campo persistente corrispondente.

L'elemento mappedBy è necessario per fare riferimento all'attributo annotato da ManyToOne nell'entità corrispondente:

 @OneToMany(mappedBy="attribute")

Un'associazione uno-a-molti deve mappare la raccolta di entità.

Mapping molti-a-uno

Un mapping molti-a-uno viene definito annotando l'attributo nell'entità di origine (l'attributo che si riferisce all'entità di destinazione) con l'annotazione @ManyToOne .

@JoinColumn(name="FK_name") una chiave di una relazione.

Mapping molti-a-molti

Le istanze di entità possono essere correlate a più istanze l'una dell'altra.

Le relazioni many-to-many utilizzano l'annotazione @ManyToMany sulla proprietà o campo persistente corrispondente.

Dobbiamo utilizzare una terza tabella per associare i due tipi di entità (tabella join).

@JoinTable Esempio di annotazione

Quando si mappano le relazioni molti-a-molti in JPA, è possibile fornire la configurazione per la tabella utilizzata per l'unione di chiavi esterne utilizzando l'annotazione @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;
   [...]
}

In questo esempio, che consiste EntityA avente molti-a-molti relazione EntityB, realizzata dal entitiesB campo, si usa l'annotazione @JoinTable per specificare che il nome di tabella per la tabella join è table_join_A_B , composta dalle colonne id_A e id_B , chiavi esterne che fanno riferimento rispettivamente colonna id nella tabella di EntityA e nella tabella di EntityB; (id_A,id_B) sarà una chiave primaria composta per la tabella table_join_A_B .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow