2016-09-22 33 views
5

Potrzebuję podejścia, dzięki któremu wielokrotnie uniknę wykonywania tego samego zapytania. Nie potrzebuję żadnej pomocy z perspektywy kodu. Podejście wysokiego poziomu będzie w porządku.Jak uniknąć wielokrotnego wykonywania tego samego zapytania?

Obecnie wykonuję tę samą kwerendę hibernacji w różnych klasach i te wykonania są częścią tego samego żądania. Od tej chwili używam pamięci podręcznej poziomu żądania do przechowywania danych. Później pobieram te dane z pamięci podręcznej zamiast DB, aby poprawić wydajność. Ale chcę wiedzieć, czy istnieje inne podejście, które mogę zastosować niezależnie od powyższego podejścia.

Będzie to bardzo pomocne, jeśli możesz w tym pomóc.

Dzięki

+0

Jestem nieco zaskoczony, że zapytanie, które się powtarza, nie jest zwracane w ~ 0 ms przez samą bazę danych. –

+0

Polecam refaktoryzację odpowiednich części kodu, aby problematyczne zapytanie było wykonywane tylko raz na żądanie. –

+0

@Joop Eggen .. Dzięki za odpowiedź. Czy jest to istniejąca funkcja Oracle lub Hibernate? – Rehman

Odpowiedz

0

Można zarejestrować słuchacza internetową, która będzie realizować ServletContextListener. Należy wdrożyć contextInitialized (wdrożenie aplikacji) i contextDestroyed (cofnięcie wdrożenia aplikacji).

@WebListener 
public final class CacheBootstrap implements ServletContextListener { 

    @Override 
    public void contextInitialized(ServletContextEvent sce) { 
     // load data into cache (hql?) 
    } 

    @Override 
    public void contextDestroyed(ServletContextEvent sce) { 
     // unload data from cache (hql?) 
    } 
} 
Powiązane problemy