मेरे पास राज्यों का संग्रह है, कि मैं एप्लिकेशन के जीवन के लिए कैश करना चाहता हूं, अधिमानतः इसे पहली बार बुलाया जाने के बाद। मैं अपने दृढ़ता प्रदाता के रूप में 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 करने के लिए यह अभी भी हर बार एक का चयन मेरी सत्र बीन इस NamedQuery का उपयोग करता करता जा रहा पर नजर रखने के प्रतीत नहीं होता।
इस क्वेरी को कॉन्फ़िगर करने का सही तरीका क्या है ताकि यह केवल डेटाबेस से एक बार पढ़ा जा सके, अधिमानतः सभी सत्रों में?
संपादित करें:
Query query = em.createNamedQuery("State.findAll");
List<State> states = query.getResultList();
ग्रहण लिंक के सत्र/कैशिंग कॉन्फ़िगरेशन को समझने का सबसे अच्छा भाग्य। मैं कभी नहीं कर सका – cletus