jpa
Relazioni tra entità
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 .