hibernate
Hibernate Entity Relationships mit Anmerkungen
Suche…
Parameter
Anmerkung | Einzelheiten |
---|---|
@OneToOne | Gibt eine Eins-zu-Eins-Beziehung zu einem entsprechenden Objekt an. |
@OneToMany | Gibt ein einzelnes Objekt an, das vielen Objekten zugeordnet ist. |
@ManyToOne | Gibt eine Auflistung von Objekten an, die einem einzelnen Objekt zugeordnet sind. |
@Entity | Gibt ein Objekt an, das einer Datenbanktabelle zugeordnet ist. |
@Table | Gibt an, welche Datenbanktabelle dieses Objekt ebenfalls abbildet. |
@JoinColumn | Gibt an, in welcher Spalte ein Vorderschlüssel gespeichert ist. |
@JoinTable | Gibt eine Zwischentabelle an, in der Fremdschlüssel gespeichert werden. |
Bidirektional viele bis viele mit vom Benutzer verwaltetem Join-Tabellenobjekt
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToMany(mappedBy = "bar")
private List<FooBar> bars;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
@OneToMany(mappedBy = "foo")
private List<FooBar> foos;
}
@Entity
@Table(name="FOO_BAR")
public class FooBar {
private UUID fooBarId;
@ManyToOne
@JoinColumn(name = "fooId")
private Foo foo;
@ManyToOne
@JoinColumn(name = "barId")
private Bar bar;
//You can store other objects/fields on this table here.
}
Gibt eine bidirektionale Beziehung zwischen vielen Foo
Objekten und vielen Bar
Objekten an, wobei eine vom Benutzer verwaltete Zwischenverbindungstabelle verwendet wird.
Die Foo
Objekte werden als Zeilen in einer Tabelle namens FOO
gespeichert. Die Bar
Objekte werden als Zeilen in einer Tabelle namens BAR
gespeichert. Die Beziehungen zwischen Foo
und Bar
Objekten werden in einer Tabelle mit dem Namen FOO_BAR
gespeichert. Es gibt ein FooBar
Objekt als Teil der Anwendung.
Wird häufig verwendet, wenn Sie zusätzliche Informationen zum Join-Objekt speichern möchten, z. B. das Datum, an dem die Beziehung erstellt wurde.
Bidirektional viele bis viele mit verwalteter Hibernate-Join-Tabelle
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToMany
@JoinTable(name="FOO_BAR",
joinColumns = @JoinColumn(name="fooId"),
inverseJoinColumns = @JoinColumn(name="barId"))
private List<Bar> bars;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
@OneToMany
@JoinTable(name="FOO_BAR",
joinColumns = @JoinColumn(name="barId"),
inverseJoinColumns = @JoinColumn(name="fooId"))
private List<Foo> foos;
}
Gibt eine Beziehung zwischen vielen Foo
Objekten zu vielen Bar
Objekten mithilfe einer zwischengeschalteten Verknüpfungstabelle an, die Hibernate verwaltet.
Die Foo
Objekte werden als Zeilen in einer Tabelle namens FOO
gespeichert. Die Bar
Objekte werden als Zeilen in einer Tabelle namens BAR
gespeichert. Die Beziehungen zwischen Foo
und Bar
Objekten werden in einer Tabelle mit dem Namen FOO_BAR
gespeichert. Dies impliziert jedoch, dass es kein FooBar
Objekt als Teil der Anwendung gibt.
Bidirektionale Eins-zu-Viele-Beziehung unter Verwendung der Fremdschlüsselzuordnung
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToMany(mappedBy = "bar")
private List<Bar> bars;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
@ManyToOne
@JoinColumn(name = "fooId")
private Foo foo;
}
Gibt eine bidirektionale Beziehung zwischen einem Foo
Objekt und vielen Bar
Objekten mithilfe eines Fremdschlüssels an.
Die Foo
Objekte werden als Zeilen in einer Tabelle namens FOO
gespeichert. Die Bar
Objekte werden als Zeilen in einer Tabelle namens BAR
gespeichert. Der Fremdschlüssel wird in der BAR
Tabelle in einer Spalte mit der Bezeichnung fooId
.
Bidirektionale Eins-zu-Eins-Beziehung, verwaltet von Foo.class
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "barId")
private Bar bar;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
@OneToOne(mappedBy = "bar")
private Foo foo;
}
Gibt eine bidirektionale Beziehung zwischen einem Foo
Objekt und einem Bar
Objekt mithilfe eines Fremdschlüssels an.
Die Foo
Objekte werden als Zeilen in einer Tabelle namens FOO
gespeichert. Die Bar
Objekte werden als Zeilen in einer Tabelle namens BAR
gespeichert. Der Fremdschlüssel wird in der FOO
Tabelle in einer Spalte mit der Bezeichnung barId
.
Beachten Sie, dass der Wert für mappedBy
der Feldname im Objekt ist, nicht der Spaltenname.
Unidirektionale Eins-zu-Viele-Beziehung unter Verwendung der vom Benutzer verwalteten Join-Tabelle
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToMany
@JoinTable(name="FOO_BAR",
joinColumns = @JoinColumn(name="fooId"),
inverseJoinColumns = @JoinColumn(name="barId", unique=true))
private List<Bar> bars;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
//No Mapping specified here.
}
@Entity
@Table(name="FOO_BAR")
public class FooBar {
private UUID fooBarId;
@ManyToOne
@JoinColumn(name = "fooId")
private Foo foo;
@ManyToOne
@JoinColumn(name = "barId", unique = true)
private Bar bar;
//You can store other objects/fields on this table here.
}
Gibt eine unidirektionale Beziehung zwischen einem Foo
Objekt und vielen Bar
Objekten mithilfe einer vom Benutzer verwalteten Zwischenverknüpfungstabelle an.
Dies ähnelt einer ManyToMany
Beziehung. Wenn Sie dem Ziel-Fremdschlüssel jedoch eine unique
Einschränkung hinzufügen, können Sie erzwingen, dass es sich um OneToMany
.
Die Foo
Objekte werden als Zeilen in einer Tabelle namens FOO
gespeichert. Die Bar
Objekte werden als Zeilen in einer Tabelle namens BAR
gespeichert. Die Beziehungen zwischen Foo
und Bar
Objekten werden in einer Tabelle mit dem Namen FOO_BAR
gespeichert. Es gibt ein FooBar
Objekt als Teil der Anwendung.
Beachten Sie, dass es keine Zuordnung von Bar
Objekten zu Foo
Objekten gibt. Bar
können frei bearbeitet werden, ohne die Foo
Objekte zu beeinflussen.
Wird in Spring Security häufig verwendet, wenn Sie ein User
einrichten, das über eine Liste von Role
, die von ihm ausgeführt werden können. Sie können einem Benutzer Rollen hinzufügen und entfernen, ohne sich um das Löschen von Role
zu kümmern.
Unidirektionale Eins-zu-Eins-Beziehung
@Entity
@Table(name="FOO")
public class Foo {
private UUID fooId;
@OneToOne
private Bar bar;
}
@Entity
@Table(name="BAR")
public class Bar {
private UUID barId;
//No corresponding mapping to Foo.class
}
Gibt eine unidirektionale Beziehung zwischen einem Foo
Objekt und einem Bar
Objekt an.
Die Foo
Objekte werden als Zeilen in einer Tabelle namens FOO
gespeichert. Die Bar
Objekte werden als Zeilen in einer Tabelle namens BAR
gespeichert.
Beachten Sie, dass es keine Zuordnung von Bar
Objekten zu Foo
Objekten gibt. Bar
können frei bearbeitet werden, ohne die Foo
Objekte zu beeinflussen.