ZAWWW-2st1.2-w05.tresc-1.0--Slajd23
Związki między encjami
Typowo model biznesowy aplikacji obejmuje wiele encji, między którymi występują powiązania. Powiązania te na poziomie relacyjnej bazy danych są reprezentowane przez klucze obce.
Związek między dwoma encjami charakteryzuje liczba powiązanych wystąpień encji dla każdego końca związku, kierunkowość nawigacji między wystąpieniami encji poprzez związek i kaskadowa propagacja operacji na wystąpienia powiązanych encji.
Java Persistence umożliwia definiowanie związków 1:1 (one-to-one), 1:N (one-to-many), N:1 (many-to-one) i N:M (many-to-many). Związek jest reprezentowany w klasie encji przez pole lub właściwość oznaczone odpowiadającą liczności związku adnotacją.
Związek między dwoma encjami może być dwukierunkowy lub jednokierunkowy. Kierunkowość determinuje możliwość nawigacji między powiązanymi instancjami encji. W modelu relacyjnym do nawigacji między wierszami dwóch powiązanych relacji wystarczy obecność klucza obcego w schemacie jednej z nich. Na poziomie klas języka Java, w celu umożliwienia nawigacji w obie strony między instancjami dwóch klas, należy w obu klasach zawrzeć pole lub właściwość wskazującą instancję (lub kolekcję instancji) drugiej klasy. Związek dwukierunkowy jest definiowany jako dwa związki jednokierunkowe.
Oprócz liczności i kierunkowości, definicja związku może zawierać informację o kaskadowym propagowaniu operacji utrwalania, modyfikacji, usuwania i odświeżania z wystąpień encji nadrzędnej do wystąpień encji podrzędnej. Kaskadowość jest charakterystyczna dla związków 1:N, które mają charakter związku kompozycji.