Jaka jest różnica między adnotacjami @Column
i @Basic
w JPA? Czy można ich używać razem? Czy powinny być używane razem? A może wystarczy jeden z nich?
źródło
Jaka jest różnica między adnotacjami @Column
i @Basic
w JPA? Czy można ich używać razem? Czy powinny być używane razem? A może wystarczy jeden z nich?
@Basic
oznacza, że atrybut ma zostać utrwalony i ma zostać użyte standardowe mapowanie. Ma parametry, które pozwalają określić, czy atrybut ma być ładowany leniwie i czy dopuszcza wartość null.
@Column
umożliwia określenie nazwy kolumny w bazie danych, w której atrybut ma zostać utrwalony.
Jeśli podasz jedno bez drugiego, otrzymasz domyślne zachowanie, które jest rozsądne, więc zwykle ludzie używają tylko jednego z wyjątkiem specjalnych przypadków.
Więc jeśli chcieliśmy leniwe ładowanie atrybutu i określić nazwę kolumny, możemy powiedzieć
@Basic(fetch=FetchType.LAZY)
@Column(name="WIBBLE")
Gdybyśmy potrzebowali domyślnego, nie leniwego zachowania, wystarczyłoby tylko @Column
to.
@Basic
bez@Column
, dlatego właściwościoptional
inullable
istnieją w obu. Czy mam rację?Poza użytkownika @ djna odpowiedzi , warto zauważyć, że
@Basic
powinny być porównywane z@OneToMany
,@ManyToOne
i@ManyToMany
. W każdej właściwości można określić tylko jeden z nich.@Column
i@JoinColumn
można je określić razem z dowolnymi z nich, aby opisać właściwości kolumny bazy danych.Są to dwa zestawy adnotacji, których można używać razem, ale jednocześnie można używać tylko jednej adnotacji z każdego zestawu.
źródło
Warto zauważyć, że Basic jest przeznaczony dla pól prymitywnych
http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes
źródło
Adnotacje @Basic są stosowane do jednostek JPA, a atrybuty @Column są stosowane do kolumn bazy danych. Opcjonalny atrybut adnotacji @Basic określa, czy pole encji może mieć wartość null, czy nie; z drugiej strony,
źródło