Ho una raccolta di stati, che voglio memorizzare nella cache per la vita dell'applicazione, preferibilmente dopo che è stata chiamata per la prima volta. Sto usando EclipseLink come provider di persistenza. Nel mio soggetto EJB3 Ho il seguente codice:Come configurare il Cache query in 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)
}
)
})
Questo non sembra di fare nulla, però, se a monitorare le query SQL che vanno a MySQL ancora fa un selezionare ogni volta il mio Bean sessione utilizza questa NamedQuery.
Qual è il modo corretto di configurare questa query in modo che venga sempre letta una sola volta dal database, preferibilmente su tutte le sessioni?
Edit: Sto chiamando la query come questa:
Query query = em.createNamedQuery("State.findAll");
List<State> states = query.getResultList();
Buona fortuna a capire la configurazione sessione/cache di EclipseLink. Non ho mai potuto – cletus