इस questionहाइबरनेट क्वेरी कैश - ऑब्जेक्ट्स के लिए दूसरे स्तर के कैश में नहीं - जोखिम भरा? उपयोगी? बुरा अभ्यास?
परिसर से संबंधित:
ये मेरी मान्यताओं, मेरे पढ़ने, अनुभव और समझ के आधार पर कर रहे हैं, वे गलत हो सकता है अगर वे कर रहे हैं, कृपया टिप्पणी और मैं प्रश्न को संपादित करेंगे ।
- क्वेरी कैश ज्यादातर 2 स्तर कैश के साथ अच्छा है
- क्वेरी कैश कैश प्रश्नों + मापदंडों के पहचानकर्ता परिणाम
- क्वेरी कैश जोखिम भरा है, तो डेटाबेस बदल गया था, और यह करने के लिए परिलक्षित नहीं किया गया था कैश
प्रश्न:
मैं एक वस्तु है कि 2 स्तर कैश में नहीं है। कुछ खराब प्रोग्रामिंग या अन्य बाधाओं के कारण, ऑब्जेक्ट को लोड करने वाला कोड उसी हाइबरनेट सत्र में कई बार कहा जा रहा है। आगमन एक एचक्यूएल खोज क्वेरी उदा।
hibernateTemplate.find("from Foo f where f.bar > ?", bar);
, क्वेरी कैश जोड़ने यदि उपरोक्त कोड एक ही हाइबरनेट सत्र के भीतर N बार बुलाया गया था पहले, वहाँ थे एन डेटाबेस
तो मैं देखने के लिए अगर मैं क्वेरी कैश क्या होता है चाहता था करने के लिए हिट:
Query query = session.createQuery("from Foo f where f.bar > ?");
query.setCacheable(true);
query.setParameter(bar);
query.list();
जब मैं क्वेरी कैश कहा, मैंने देखा है कि एक ही सत्र के दौरान, हाइबरनेट डेटाबेस N बार अब और प्रति सत्र हिट नहीं करता, केवल एक बार।
- तो मेरी पहली धारणा यह है कि हाइबरनेट पहली बार सत्र कैश में खोज करता है, फिर दूसरे स्तर के कैश में। क्या यह धारणा सही है?
- मुझे यह भी लगता है कि यदि ऑब्जेक्ट (
Foo
) जो कि दूसरे स्तर के कैश में नहीं है, तो डेटाबेस में बदल दिया गया था, फिर क्वेरी कैश, क्रॉस सत्र स्कॉप्ड होने पर गलत पहचानकर्ता और इस प्रकार गलत ऑब्जेक्ट्स लौटाएंगे। क्या वो सही है? - क्या यह कहना सुरक्षित है कि प्रश्नों के लिए क्वेरी कैश का उपयोग करना जिसमें गैर 2 एल कैश किए गए ऑब्जेक्ट्स के लिए अपरिवर्तनीय जानकारी शामिल है, एक अच्छा अभ्यास है? (उदाहरण के लिए एक प्रश्न है कि इसकी जहां खंड एक शर्त है कि हमेशा एक ही परिणाम देंगी, जैसे होता है जब ser_num और आईडी जोड़ों नहीं बदल एक बार बनाया है "जहां p.id =? P.ser_num चुनें")
तक वैसे, संबंधित question में दावा किया गया है कि क्वेरी कैश सत्र कैश स्कोप पर काम नहीं करता है। क्या मैं उस दावे को याद कर रहा हूं, या कुछ और?
+1 उत्कृष्ट रूप से गठित, स्वरूपित और शोध किए गए प्रश्न के लिए +1। –