hibernate - questions - हाइबरनेट मीनिंग इन हिंदी




क्या आप हमेशा हाइबरनेट में एक द्वितीय-स्तरीय कैश का उपयोग करते हैं? (5)

अब इसमें एक विशिष्ट विशिष्ट समस्या है जो इस से संबंधित है। और यह कुख्यात LazyInitializationException असल में आपको सभी आलसी संघों को प्रारंभ करने की जरूरत है, जबकि संस्थाएं दृढ़ संदर्भ से जुड़ी हुई हैं। ऐसा करने के दो तरीके:

  1. मैन्युअल रूप से संबंधों को लोड करने के लिए उन्हें लोड करने के लिए उपयोग करें।
  2. शामिल होने के फैसले को निर्दिष्ट करते हुए एक क्वेरी का उपयोग करें

इन दो दृष्टिकोणों के परिणामस्वरूप काफी भिन्न कोड टुकड़े होते हैं, जिससे एक को दूसरे स्थानांतरित करने में काफी नौकरी हो सकती है समस्या यह है कि 1 दृष्टिकोण। परिणाम 2 की बड़ी कैश का उपयोग नहीं करते समय बड़ी संख्या में क्वेरीज़ में होता है, इसलिए लोग 2 दृष्टिकोण का उपयोग करने का निर्णय ले सकते हैं जो कि बुखार प्रश्नों में होता है। हालांकि, जब आप बाद में 2 लेवल कैश को चालू करते हैं, तो दृष्टिकोण 2 से क्वेरी कैश से डेटा लोड नहीं करते हैं, लेकिन जिसके परिणामस्वरूप निकाले को उसमें डालते हैं, क्वेरी निष्पादन को कैश के मुकाबले धीमा कर देते हैं। इससे क्वेरी की कैश का इस्तेमाल करने जैसी जटिल चीजें होती हैं।

क्योंकि यह मेरे लिए बेहतर दृष्टिकोण है (इस विशेष मामले में) सभी संस्थाओं के लिए पहले कैश को सक्षम करने के लिए, जो आमतौर पर तुच्छ है, और फिर संस्थाओं के लिए इसे निष्क्रिय कर दें क्योंकि आपको विकास की आवश्यकता नहीं है क्योंकि विकास चालू है

क्या आप हमेशा हाइबरनेट में एक द्वितीय-स्तरीय कैश का उपयोग करते हैं या आप पहले इसे बिना प्रयास करते हैं और केवल इसका उपयोग करते हैं जब प्रदर्शन नीचे चला जाता है?


इसे पहले काम करें, फिर इसे तेजी से बनाएं यदि आपको कैशिंग की ज़रूरत नहीं है, तो इसे लागू नहीं करें।


प्रसिद्ध डोनाल्ड नीथ का हवाला देते हुए: "प्रोग्रामर्स अपने प्रोग्राम के गैर-संक्रमित भागों की गति के बारे में सोचते हैं, या चिंता करने में काफी समय बर्बाद कर रहे हैं, और डीबगिंग और रखरखाव पर विचार किए जाने पर दक्षता के इन प्रयासों में वास्तव में एक मजबूत नकारात्मक प्रभाव पड़ता है। छोटी क्षमता के बारे में भूलें, समय का लगभग 9 7% कहना: समय से पहले अनुकूलन सभी बुराइयों की जड़ है, फिर भी हमें इस महत्वपूर्ण 3% में अपने अवसरों को पार नहीं करना चाहिए। "

यदि आप प्रदर्शन संबंधी समस्याएं देख रहे हैं, तो तभी आप अनुकूलन करना शुरू कर सकते हैं। और आपको केवल सबसे बड़ी बाधा का अनुकूलन करना चाहिए और यदि आवश्यक हो तो नीचे अपना काम करना चाहिए।

हालांकि, NHibernate में इस अनुकूलन को कार्यान्वित करना अधिकांश स्थितियों में डिबगिंग और रखरखाव पर नगण्य प्रभाव पड़ता है, और इसे अक्सर कोड में बहुत कम जोड़ के साथ लागू किया जा सकता है।

यदि आप आलसी लोड करने पर बड़े पैमाने पर भरोसा करते हैं, तो केवल तालिकाएं पढ़ी हैं, नैनोबार्नेट का उपयोग नहीं करने वाले अनुप्रयोगों के साथ संगामिति के बारे में चिंता करने की ज़रूरत नहीं है, प्रदर्शन एक मुद्दा है, और आप इस बारे में जानकार हैं कि 2 स्तर के कैश का उपयोग कैसे करें (जिसका अर्थ है कि आप पहले से ही जवाब जानते हैं इस सवाल पर), तो आप एक दूसरे स्तर कैश का उपयोग करना चाहिए।


यदि आप सही काम करते हैं (चुनिंदा एन + 1, आदि के बारे में सावधान रहना) प्रदर्शन के मामलों के विशाल बहुमत के लिए द्वितीय-स्तरीय कैश के बिना स्वीकार्य होना चाहिए


हम पहले इसे बिना प्रयास करते हैं और केवल इसका उपयोग करते हैं जब प्रदर्शन नीचे जाता है





hibernate