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.





