Risposte:
@Basic
significa che un attributo deve essere mantenuto e deve essere utilizzata una mappatura standard. Dispone di parametri che consentono di specificare se l'attributo deve essere caricato in modo lento e se è annullabile.
@Column
consente di specificare il nome della colonna nel database in cui l'attributo deve essere mantenuto.
Se ne specifichi uno senza l'altro, ottieni un comportamento predefinito che è sensato, quindi comunemente le persone ne usano solo uno ad eccezione di casi speciali.
Quindi, se volessimo caricare un attributo e specificare un nome di colonna, possiamo dirlo
@Basic(fetch=FetchType.LAZY)
@Column(name="WIBBLE")
Se avessimo bisogno del comportamento predefinito, non pigro, @Column
sarebbe stato sufficiente.
Oltre alla risposta di @ djna , vale la pena notare che @Basic
dovrebbe essere confrontata con @OneToMany
, @ManyToOne
e @ManyToMany
. Solo uno di questi può essere specificato su qualsiasi proprietà.
@Column
e @JoinColumn
può essere specificato insieme a uno qualsiasi di questi per descrivere le proprietà della colonna del database.
Si tratta di due serie di annotazioni che possono essere utilizzate insieme, ma è possibile utilizzare solo un'annotazione di ciascuna serie alla volta.
Vale la pena notare che Basic è progettato per campi primitivi
http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes
Un attributo di base è quello in cui la classe dell'attributo è un tipo semplice come String, Number, Date o una primitiva. Il valore di un attributo di base può essere mappato direttamente al valore della colonna nel database.
I tipi e le conversioni supportati dipendono dall'implementazione JPA e dalla piattaforma del database. Qualsiasi attributo di base che utilizza un tipo che non esegue il mapping direttamente a un tipo di database può essere serializzato in un tipo di database binario.
Il modo più semplice per mappare un attributo di base in JPA è non fare nulla. Qualsiasi attributo che non ha altre annotazioni e non fa riferimento ad altre entità verrà automaticamente mappato come base e persino serializzato se non un tipo di base. Il nome della colonna per l'attributo verrà impostato per impostazione predefinita, con lo stesso nome dell'attributo, come maiuscolo.
L'annotazione @Basic viene applicata alle entità JPA e il valore di @Column viene applicato alle colonne del database L'attributo opzionale dell'annotazione @Basic definisce se il campo dell'entità può essere nullo o meno; d'altro canto,
@Basic
senza@Column
, motivo per cui le proprietàoptional
enullable
esistono in entrambi. Ho ragione?