Atrybut lazy=true
to umożliwienie leniwego ładowania kolekcji nadrzędnych i potomnych oraz tej samej atrybutu: fetch="select"
. Czy jest jakaś różnica między lazy="true"
a fetch="select"
w stanie hibernacji ?.jaka jest różnica między leniwym = "true" i fetch = "select" w stanie hibernacji?
Odpowiedz
Tak.
Atrybut mówi hibernacji , gdy, aby uzyskać dzieci. Atrybut
Atrybut fetch
mówi hibernacji , jak, aby uzyskać dzieci.
Kiedy mówisz
Leniwy = true atrybut jest umożliwienie leniwy załadunku rodzica i dziecka kolekcji i samego pobrania = „select” atrybut
że jest płaska się błędne. Wybrana strategia pobierania to NIE to samo, co wyłączanie leniwego ładowania. W rzeczywistości, from the documentation
Wybierz Pobieranie: drugi SELECT służy do pobierania powiązanych podmiot lub kolekcji. O ile nie wyłączysz jawnie leniwego pobierania przez , określając leniwy = "fałsz", to drugie wybieranie zostanie wykonane tylko po uzyskaniu dostępu do powiązania, gdy uzyskasz .
Kiedy mówimy fetch="select"
, to zawsze będzie uruchamiać oddzielne zapytania, aby pobrać obiekty skojarzeń, nawet jeśli jest to lazy ="false"
.
Ale kiedy mówimy lazy ="true"
, oznacza to, że pobierze obiekty skojarzenia w osobnej kwerendzie, ale nie w momencie ładowania obiektu, ale gdy połączenie zostanie po raz pierwszy udostępnione. Możemy to zrobić, mówiąc: list().size()
.
Kiedy mówimy fetch="join"
, zawsze wystrzeli ono pojedynczą kwerendę, aby uzyskać skojarzenie obiektów z bazy danych.
Aby rozwiązać problem n + 1, wybierz problem dla zapytań n (relacja parent parent) w hibernacji używamy fetch = "join" zamiast fetch = "select". Ustawienie leniwy decyduje, czy załadować obiekty podrzędne podczas ładowania obiektu nadrzędnego. Musisz to zrobić, odpowiedni plik odwzorowania hibernacji w klasie nadrzędnej.Lazy = true (znaczy, aby nie ładować elementu podrzędnego) Domyślnie leniwy ładunek obiektów podrzędnych jest prawdziwy .
Dziękuję. Mam inną wątpliwość, gdy odczytuję różnicę w wartościach pobranych przy pobieraniu Proxy lub "Nie-proxy", które są nazywane wartościami jednorazowymi. Co to jest asocjacja o jednej wartości w stanie hibernacji? – user1127214