JPA - adnotacja JoinColumn i atrybut mappedBy

0

Czy podawanie w opisie relacji encji dodatkowej adnotacji @JoinColumn po stronie "owning" oraz atrybutu mappedBy po stronie "inverse" to tylko zbędny dodatek czy rzeczywiście istotna rzecz? Widziałem przykłady używające tych adnotacji oraz bez nich a dodatkowo w dokumentacji atrybuty dla @JoinColumn i atrybut mappedBy oznaczone są jako opcjonalne co wydaje się zmniejszając ich wagę. Teoretycznie relacja jest już definiowana przez samo posiadanie pól do drugiego obiektu (drugiej encji). A wiec?

I jeszcze pytanie do @JoinColumn(name="foreign_key_name") określającej foreign_key. Czy w ogóle encja powinna posiadać pole lub property odpowiadające kolumnie foreign_key w mapowanej tabeli? Załóżmy że w relacji OneToMany prawdziwa tabela po stronie Many w bazie posiada kolumne foreign_key ze tabeli One. Czy teraz, powiązana z tą tabelą, encja (klasa Entity) po stronie Many też ma mieć pole odpowiadające tej kolumnie foreign_key?

0

Adnotacja @JoinColumn jest opcjonalna.
Jeżeli jej nie podasz to kolumna FK musi się nazywać: nazwa_tabeli_na_ktora_wskazuje_FK + "_" + kolumn_z_PK_w_tabeli_na_ktora_wskazuje_FK, np. "address_id".

Co, do mappedBy, to należy to zawsze podawać. Wyjątkiem są relacje jednostronne.
http://docs.oracle.com/javaee/5/api/javax/persistence/OneToMany.html#mappedBy%28%29

0

Dzięki.
Czy w klasie encji sam foreign key musi mieć odwzorowanie w postaci pole lub property po stronie owning czy też wskazanie go w @JoinColumn dotyczy tylko tego że występuje w fizycznej tabeli w bazie danych? Przykłady które encji przeglądałem nie zawierały osobnego pola encji dla foreign key dlatego dopytuję.

1 użytkowników online, w tym zalogowanych: 0, gości: 1