私は、アプリケーションの寿命の間、好ましくは最初に呼び出された後にキャッシュしたい状態のコレクションを持っています。永続化プロバイダとしてEclipseLinkを使用しています。私は、次のコードを持っている私のEJB3エンティティで: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)
}
)
})
これは私がMySQLへ行くのSQLクエリを監視する場合、それはまだ私のセッションBeanは、このNamedQueryを使用して選択するたびに行い、しかし何もしていないようです。
このクエリがデータベースから一度だけ読み込まれるように、できればすべてのセッションにわたってこのクエリを構成する正しい方法は何ですか?
編集:ここだけの推測
Query query = em.createNamedQuery("State.findAll");
List<State> states = query.getResultList();
EclipseLinkのセッション/キャッシュ設定を理解するのに最適です。私は決してできなかった。 – cletus