Ich habe eine Sammlung von Zuständen, die ich für die Lebensdauer der Anwendung zwischenspeichern möchte, vorzugsweise nachdem es zum ersten Mal aufgerufen wird. Ich verwende EclipseLink als meinen Persistenzanbieter. In meiner EJB3 Einheit habe ich den folgenden Code:So konfigurieren Sie Abfragecaching 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)
}
)
})
Dies scheint nicht, etwas obwohl zu tun, wenn ich die SQL-Abfragen gehen MySQL Monitor immer noch tut es einer Auswahl jedes Mal meiner Session Bean diese NamedQuery verwendet.
Wie kann diese Abfrage richtig konfiguriert werden, so dass sie nur einmal aus der Datenbank gelesen wird, vorzugsweise über alle Sitzungen hinweg?
Edit: Ich rufe die Abfrage wie folgt aus:
Query query = em.createNamedQuery("State.findAll");
List<State> states = query.getResultList();
Viel Glück herauszufinden, die Sitzung/Caching-Konfiguration von EclipseLink. Ich konnte es nie. – cletus