Antworten:
@Basic
bedeutet, dass ein Attribut beibehalten und eine Standardzuordnung verwendet werden soll. Es verfügt über Parameter, mit denen Sie angeben können, ob das Attribut träge geladen werden soll und ob es nullwertfähig ist.
@Column
Mit dieser Option können Sie den Namen der Spalte in der Datenbank angeben, für die das Attribut beibehalten werden soll.
Wenn Sie eines ohne das andere angeben, erhalten Sie ein vernünftiges Standardverhalten. Daher verwenden die Benutzer mit Ausnahme von Sonderfällen häufig nur eines.
Wenn wir also ein Attribut verzögert laden und einen Spaltennamen angeben möchten, können wir sagen
@Basic(fetch=FetchType.LAZY)
@Column(name="WIBBLE")
Wenn wir das standardmäßige, nicht faule Verhalten benötigen @Column
würden, wäre nur das ausreichend gewesen.
Zusätzlich zu der Antwort von @ djna ist anzumerken, dass @Basic
mit und verglichen werden @OneToMany
sollte . Für eine Eigenschaft kann nur eine davon angegeben werden.@ManyToOne
@ManyToMany
@Column
und @JoinColumn
kann zusammen mit diesen angegeben werden, um die Eigenschaften der Datenbankspalte zu beschreiben.
Dies sind zwei Sätze von Anmerkungen, die zusammen verwendet werden können, es kann jedoch jeweils nur eine Anmerkung von jedem Satz verwendet werden.
Es ist erwähnenswert, dass Basic für primitive Felder ausgelegt ist
http://en.wikibooks.org/wiki/Java_Persistence/Basic_Attributes
Ein Basisattribut ist ein Attribut, bei dem die Attributklasse ein einfacher Typ ist, z. B. String, Number, Date oder ein Grundelement. Der Wert eines Basisattributs kann direkt dem Spaltenwert in der Datenbank zugeordnet werden.
Die unterstützten Typen und Konvertierungen hängen von der JPA-Implementierung und der Datenbankplattform ab. Jedes grundlegende Attribut, das einen Typ verwendet, der keinem Datenbanktyp direkt zugeordnet ist, kann einem binären Datenbanktyp serialisiert werden.
Der einfachste Weg, ein grundlegendes Attribut in JPA zuzuordnen, besteht darin, nichts zu tun. Alle Attribute, die keine anderen Anmerkungen haben und nicht auf andere Entitäten verweisen, werden automatisch als Basis zugeordnet und sogar serialisiert, wenn sie kein Basistyp sind. Der Spaltenname für das Attribut wird standardmäßig mit dem gleichen Namen wie der Attributname in Großbuchstaben angegeben.
Die Annotation @Basic wird auf JPA-Entitäten angewendet, und die Annotation @Column wird auf die Datenbankspalten angewendet. Das optionale Attribut der Annotation @Basic definiert, ob das Entitätsfeld null sein kann oder nicht. andererseits,
@Basic
ohne verwenden kann@Column
, weshalb die Eigenschaftenoptional
undnullable
in beiden existieren. Habe ich recht?