Mam kolekcję stanów, które chcę buforować przez całe życie aplikacji, najlepiej po jej wywołaniu po raz pierwszy. Używam EclipseLink jako mojego dostawcy trwałości. W moim podmiot EJB3 mam następujący kod:Jak skonfigurować buforowanie kwerend w EclipseLink
@Cache
@NamedQueries({
@NamedQuery(
name = "State.findAll",
query = "SELECT s FROM State s",
hints = {
@QueryHint(name=QueryHints.CACHE_USAGE, value=CacheUsage.CheckCacheThenDatabase),
@QueryHint(name=QueryHints.READ_ONLY, value=HintValues.TRUE)
}
)
})
nie wydają się nic zrobić chociaż, jeśli monitorowanie zapytań SQL udających się do MySQL to nadal robi select każdym razem mój Bean Session używa tego NamedQuery.
Jaki jest prawidłowy sposób skonfigurowania tego zapytania, aby był zawsze odczytywany tylko raz z bazy danych, najlepiej we wszystkich sesjach?
Edit: Wołam kwerendę tak:
Query query = em.createNamedQuery("State.findAll");
List<State> states = query.getResultList();
Powodzenia w określaniu konfiguracji sesji/buforowania EclipseLink. Nigdy nie mogłem. – cletus