jpa
Relacje między podmiotami
Szukaj…
Uwagi
Relacje między jednostkami Podstawy
Kluczem obcym może być jedna lub więcej kolumn, które odwołują się do unikalnego klucza, zwykle klucza podstawowego, w innej tabeli.
Klucz obcy i podstawowy klucz nadrzędny, do którego się odwołuje, musi mieć tę samą liczbę i typ pól.
Klucze obce reprezentują relacje z kolumny lub kolumn w jednej tabeli do kolumny lub kolumn w innej tabeli.
Wielość relacji między jednostkami
Wielość relacji między jednostkami
Krotności są następujących typów:
- Jeden do jednego : Każda instancja encji jest powiązana z pojedynczą instancją innej encji.
- Jeden do wielu : Instancja encji może być powiązana z wieloma instancjami innych encji.
- Wiele do jednego : wiele instancji encji może być powiązanych z pojedynczą instancją drugiej encji.
- Wiele do wielu : Instancje encji mogą być powiązane z wieloma instancjami.
Mapowanie jeden do jednego
Odwzorowanie jeden do jednego definiuje powiązanie o pojedynczej wartości z innym bytem, który ma wielokrotność jeden do jednego. To odwzorowanie relacji wykorzystuje adnotację @OneToOne w odpowiedniej trwałej właściwości lub polu.
Przykład: ParkingPlace Vehicle i ParkingPlace .
Mapowanie jeden do wielu
Instancja encji może być powiązana z wieloma instancjami innych encji.
Relacje jeden do wielu używają adnotacji @OneToMany w odpowiedniej trwałej właściwości lub polu.
Element mappedBy jest potrzebny, aby odwoływać się do atrybutu opisanego przez ManyToOne w odpowiedniej jednostce:
@OneToMany(mappedBy="attribute")
Skojarzenie jeden do wielu musi odwzorować zbiór jednostek.
Mapowanie wiele do jednego
Odwzorowanie typu wiele do jednego jest definiowane przez @ManyToOne adnotacją atrybutu w encji źródłowej (atrybut, który odnosi się do encji docelowej) adnotacją @ManyToOne .
@JoinColumn(name="FK_name") opisuje klucz @JoinColumn(name="FK_name") relacji.
Mapowanie wiele do wielu
Instancje encji mogą być powiązane z wieloma instancjami siebie nawzajem.
Relacje wiele do wielu używają adnotacji @ManyToMany w odpowiedniej trwałej właściwości lub polu.
Musimy użyć trzeciej tabeli, aby powiązać dwa typy jednostek (połącz tabelę).
@JoinTable Adnotation Example
Podczas mapowania relacji wiele do wielu w JPA konfiguracja tabeli używanej do łączenia kluczy obcych może być zapewniona za pomocą adnotacji @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;
[...]
}
W tym przykładzie, który składa się z EntityA mający wiele do wielu relacji do EntityB, realizowanego przez entitiesB dziedzinie, używamy @JoinTable adnotacji, aby określić, że nazwa tabeli do łączenia tabela jest table_join_A_B , składa się z kolumn id_A i id_B , klucze obce odpowiednio odnoszące się do id kolumny w tabeli EntityA i tabeli EntityB; (id_A,id_B) będzie złożonym kluczem podstawowym dla tabeli table_join_A_B .