hibernate
Hibernacja związków encji za pomocą adnotacji
Szukaj…
Parametry
Adnotacja | Detale |
---|---|
@OneToOne | Określa relację jeden do jednego z odpowiednim obiektem. |
@OneToMany | Określa pojedynczy obiekt, który jest mapowany na wiele obiektów. |
@ManyToOne | Określa kolekcję obiektów odwzorowanych na pojedynczy obiekt. |
@Entity | Określa obiekt odwzorowany na tabelę bazy danych. |
@Table | Określa tabelę bazy danych, którą ten obiekt również odwzorowuje. |
@JoinColumn | Określa, w której kolumnie jest przechowywany klucz foregin. |
@JoinTable | Określa tabelę pośrednią, która przechowuje klucze obce. |
Dwukierunkowy Wiele do wielu za pomocą zarządzanego przez użytkownika obiektu tabeli łączenia
@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.
}
Określa dwukierunkową relację między wieloma obiektami Foo
do wielu obiektów Bar
za pomocą pośredniej tabeli łączenia zarządzanej przez użytkownika.
Obiekty Foo
są przechowywane jako wiersze w tabeli o nazwie FOO
. Obiekty Bar
są przechowywane jako wiersze w tabeli o nazwie BAR
. Relacje między obiektami Foo
i Bar
są przechowywane w tabeli o nazwie FOO_BAR
. W aplikacji znajduje się obiekt FooBar
.
Powszechnie używane, gdy chcesz przechowywać dodatkowe informacje o obiekcie łączenia, takie jak data utworzenia relacji.
Dwukierunkowa wiele do wielu za pomocą zarządzanej tabeli łączenia Hibernacja
@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;
}
Określa relację między wieloma obiektami Foo
do wielu obiektów Bar
za pomocą pośredniej tabeli łączenia zarządzanej przez Hibernację.
Obiekty Foo
są przechowywane jako wiersze w tabeli o nazwie FOO
. Obiekty Bar
są przechowywane jako wiersze w tabeli o nazwie BAR
. Relacje między obiektami Foo
i Bar
są przechowywane w tabeli o nazwie FOO_BAR
. Oznacza to jednak, że nie ma obiektu FooBar
jako części aplikacji.
Dwukierunkowa relacja jeden do wielu przy użyciu mapowania klucza obcego
@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;
}
Określa dwukierunkową relację między jednym obiektem Foo
a wieloma obiektami Bar
za pomocą klucza obcego.
Obiekty Foo
są przechowywane jako wiersze w tabeli o nazwie FOO
. Obiekty Bar
są przechowywane jako wiersze w tabeli o nazwie BAR
. Klucz obcy jest przechowywany w tabeli BAR
w kolumnie o nazwie fooId
.
Dwukierunkowy związek jeden do jednego zarządzany przez 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;
}
Określa dwukierunkową relację między jednym obiektem Foo
a jednym obiektem Bar
za pomocą klucza obcego.
Obiekty Foo
są przechowywane jako wiersze w tabeli o nazwie FOO
. Obiekty Bar
są przechowywane jako wiersze w tabeli o nazwie BAR
. Klucz obcy jest przechowywany w tabeli FOO
w kolumnie o nazwie barId
.
Zauważ, że wartość mappedBy
to nazwa pola na obiekcie, a nie nazwa kolumny.
Jednokierunkowa relacja jeden do wielu przy użyciu zarządzanej przez użytkownika tabeli łączenia
@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.
}
Określa jednokierunkową relację między jednym obiektem Foo
a wieloma obiektami Bar
za pomocą pośredniej tabeli łączenia zarządzanej przez użytkownika.
Jest to podobne do relacji ManyToMany
, ale jeśli dodasz unique
ograniczenie do docelowego klucza obcego, możesz wymusić, że jest to OneToMany
.
Obiekty Foo
są przechowywane jako wiersze w tabeli o nazwie FOO
. Obiekty Bar
są przechowywane jako wiersze w tabeli o nazwie BAR
. Relacje między obiektami Foo
i Bar
są przechowywane w tabeli o nazwie FOO_BAR
. W aplikacji znajduje się obiekt FooBar
.
Zauważ, że nie ma mapowania obiektów Bar
powrotem na obiekty Foo
. Bar
obiektów można manipulować swobodnie bez wpływu Foo
obiektów.
Bardzo często używany w Spring Security podczas konfigurowania obiektu User
który ma listę Role
, które mogą wykonywać. Możesz dodawać i usuwać role do użytkownika bez obawy o kaskadowe usuwanie Role
.
Jednokierunkowy związek jeden do jednego
@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
}
Określa jednokierunkową relację między jednym obiektem Foo
a jednym obiektem Bar
.
Obiekty Foo
są przechowywane jako wiersze w tabeli o nazwie FOO
. Obiekty Bar
są przechowywane jako wiersze w tabeli o nazwie BAR
.
Zauważ, że nie ma mapowania obiektów Bar
powrotem na obiekty Foo
. Bar
obiektów można manipulować swobodnie bez wpływu Foo
obiektów.