Przechodziłem przez hibernację i sytuacje, kiedy używać Criteria vs HQL
i rozumiem, że przy Hibernowaniu, za każdym razem, gdy przeszukujemy bazę danych przez Criteria
lub HQL
w obu przypadkach hibernacja otrzyma zestaw wyników i wprowadzi do pamięci, a następnie, gdy to nazwiemy zapytanie ponownie, dane będą pobierane z pamięci zamiast trafiania do tej bazy danych, czy moje zrozumienie jest poprawne?Czy zapytanie HQL zawsze trafia do bazy danych i uzyskuje wyniki?
Również, jak widać z komentarzy do pytania wspomnianego poniżej, zasugerowano, że Kryteria Hibernacji otrzymają dane z sesji, a HQL zawsze pójdzie i trafi w bazę danych, więc każda liczba wielu wywołań do kwerendy HQL pójdzie i trafi w bazę danych a jeśli tak, to wtedy HQL
powoduje więcej problemów niż rozwiązywanie.
Prosimy o doradztwo w tej sprawie, ponieważ jestem trochę zmieszany z sytuacją.
Odniesienie do question
AFAIK zapytania HQL użyje tylko cache zapytań i uzyskać wyniki tylko stamtąd, jeśli kwerenda i wszystkie parametry są takie same. – Thomas
więc jeśli robię '" z "+ test.class.getName() + SORT_BY_ID ;, jak mogę zdecydować, czy uderza w pamięć lub bazę danych, jak również możemy zarządzać ustawieniami cache w hibernacji v3.2? – Rachel
@Juha: więc teraz, kiedy mówisz, że sesja jest domyślnie zawsze włączona, HQL powinien uzyskać wynik z prawej sesji i nie trafiać ponownie w bazę danych, prawda? – Rachel