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?