jpa
Relaties tussen entiteiten
Zoeken…
Opmerkingen
Relaties tussen entiteiten Basics
Een externe sleutel kan een of meer kolommen zijn die verwijzen naar een unieke sleutel, meestal de primaire sleutel, in een andere tabel.
Een externe sleutel en de primaire bovenliggende sleutel waarnaar deze verwijst, moeten hetzelfde aantal en type velden hebben.
Buitenlandse sleutels vertegenwoordigen relaties van een kolom of kolommen in de ene tabel met een kolom of kolommen in een andere tabel.
Veelheid in entiteitsrelaties
Veelheid in entiteitsrelaties
Multipliciteiten zijn van de volgende typen:
- Eén op één : elke entiteitsinstantie is gerelateerd aan een enkele instantie van een andere entiteit.
- Eén-op-veel : een entiteitsinstantie kan gerelateerd zijn aan meerdere instanties van de andere entiteiten.
- Many-to-one : meerdere instanties van een entiteit kunnen worden gerelateerd aan een enkele instantie van de andere entiteit.
- Veel-op-veel : de entiteitsinstanties kunnen gerelateerd zijn aan meerdere instanties van elkaar.
Eén op één in kaart brengen
Een-op-een-toewijzing definieert een koppeling met een enkele waarde aan een andere entiteit die een-op-een multipliciteit heeft. Deze relatiemapping gebruikt de annotatie @OneToOne op de overeenkomstige permanente eigenschap of het betreffende veld.
Voorbeeld: Vehicle en ParkingPlace entiteiten.
Eén-op-veel-toewijzing
Een entiteitsinstantie kan gerelateerd zijn aan meerdere instanties van de andere entiteiten.
Eén-op-veel-relaties gebruiken de annotatie @OneToMany op de overeenkomstige permanente eigenschap of het betreffende veld.
Het element mappedBy is nodig om te verwijzen naar het kenmerk dat door ManyToOne is geannoteerd in de bijbehorende entiteit:
@OneToMany(mappedBy="attribute")
Een één-op-veel vereniging moet de verzameling entiteiten in kaart brengen.
Veel-op-een-kaart
Een veel-op-een-toewijzing wordt gedefinieerd door het kenmerk in de @ManyToOne (het kenmerk dat verwijst naar de @ManyToOne annoteren met de annotatie @ManyToOne .
Een @JoinColumn(name="FK_name") een sleutel van een relatie.
Veel-op-veel-mapping
De entiteitsinstanties kunnen gerelateerd zijn aan meerdere instanties van elkaar.
Veel-op-veel-relaties gebruiken de annotatie @ManyToMany op de overeenkomstige permanente eigenschap of het bijbehorende veld.
We moeten een derde tabel gebruiken om de twee entiteitstypen te koppelen (join-tabel).
@JoinTable Annotation Example
Bij het toewijzen van veel-op-veel-relaties in JPA, kan de configuratie voor de tabel die wordt gebruikt voor de deelnemende externe sleutels worden verstrekt met behulp van de annotatie @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 dit voorbeeld bestaande uit EntityA met een veel-naar-veel relatie tot EntityB, gerealiseerd door de entitiesB veld, gebruiken we de @JoinTable annotatie wordt bepaald dat de lijstnaam voor de join tabel table_join_A_B , bestaat uit de kolommen id_A en id_B , buitenlandse sleutels die respectievelijk verwijzen naar kolom- id in de tabel van EntityA en in de tabel van EntityB; (id_A,id_B) is een samengestelde primaire sleutel voor tabel table_join_A_B .