W odniesieniu do mojego earlier question, chcę zapewnić wszystkie obiekty podrzędne są ładowane, ponieważ mam wiele wątków, które mogą potrzebować dostępu do danych (i tym samym uniknąć opóźnione ładowanie wyjątków). Rozumiem, że sposobem na to jest użycie słowa kluczowego "pobierz" w zapytaniu (EJB QL). Tak:Hibernate (JPA), jak zrobić chętne zapytanie, ładowanie wszystkich obiektów podrzędnych
select distinct o from Order o left join fetch o.orderLines
Zakładając model z klasy Order
który posiada zestaw OrderLines
w nim.
Moje pytanie brzmi, że słowo kluczowe "wyraźny" wydaje się być potrzebne, ponieważ w przeciwnym razie wydaje mi się, że otrzymuję Order
dla każdego OrderLine
. Czy robię to, co trzeba?
Co ważniejsze, czy istnieje sposób na przyciąganie wszystkich obiektów podrzędnych, bez względu na głębokość? Mamy około 10-15 klas, a dla serwera będziemy potrzebować wszystkiego, co jest załadowane ... Unikam używania FetchType.EAGER
, ponieważ oznaczało to, że zawsze jest on chętny, a przede wszystkim front sieciowy ładuje wszystko - ale być może to jest sposób na przejście - to co robisz? Wydaje mi się, że pamiętamy, jak próbowaliśmy tego wcześniej, a potem robiliśmy naprawdę powolne strony - ale może to oznacza, że powinniśmy używać pamięci podręcznej drugiego poziomu?
tak, to jest poprawna odpowiedź –
Facet musi zmienić strategię w czasie wykonywania. – Nullpo