Jaka jest różnica w określaniu lazy = "true"
i używaniu fetch = "select" or "join"
? który z nich jest preferowany nad drugim?Różnica między trybami FetchMode i FetchType
pozdrowienia jayendra
Jaka jest różnica w określaniu lazy = "true"
i używaniu fetch = "select" or "join"
? który z nich jest preferowany nad drugim?Różnica między trybami FetchMode i FetchType
pozdrowienia jayendra
Powiedzmy mamy podmioty tak:
@Entity
@Table
public class Parent {
@Id
private Long id;
@OneToMany(mappedBy="parent", fetch = FetchType.EAGER)
@Fetch(FetchMode.JOIN)
private List<Child> child;
//getter setters
}
@Entity
@Table
public class Child {
@Id
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
private Parent parent;
//getter setter
}
W powyższym przykładzie, gdy coraz Parent
podmiot, hibernacja będzie automatycznie załadować wszystkie child
podmioty skwapliwie korzystając przyłączyć. Z drugiej strony, po pobraniu Child
, Parent
jednostka nie będzie selektowana, chyba że nazwiesz ją explicity w kodzie child.getParent()
.
FetchType (Lazy/Eager) mówi, czy chcemy, aby encja była ładowana z zapałem lub leniwym, gdy jest połączenie w kodzie.
FetchMode (Wybierz/dołącz) mówi, czy chcemy, aby nasze uprawnienie do obciążenia zostało dodane z dodatkowym wyborem lub w jednym zapytaniu z łączeniem lub podselekcją.
FetchMode: To określa how
hibernacji (za pomocą którego strategii, na przykład przyłączyć, Podkwerenda etc.) będą pobierane dane z bazy danych.
FetchType: Definiuje whether
hibernacji będzie pobierał dane czy nie.
UWAGA: FetchMode
ma zastosowanie tylko wtedy, gdy FetchType = EAGER
podczas adnotacji.
FetchMode ma zastosowanie nie tylko w FetchType.EAGER. Reguły są następujące: a) jeśli nie określisz FetchMode, domyślnie JOIN i FetchType działa normalnie, b) jeśli jawnie określisz FetchMode.JOIN, FetchType zostanie zignorowane, a zapytanie zawsze będzie chętne, c) jeśli określisz FetchMode.SELECT lub FetchMode.SUBSELECT, FetchType.Type działa normalnie. –
@ DawidStępień ta informacja jest bardzo pomocna! – GMsoF
Znaleziono tego online. Bardzo pomocne. http://www.solidsyntax.be/2013/10/17/fetching-collections-hibernate/ – Jake