2011-10-14 13 views
26

मैं हाइबरनेट का उपयोग कर रहा हूं और नामित प्रश्नों का उपयोग करना चाहता हूं। लेकिन मुझे नहीं पता कि यह अच्छा समाधान है या नहीं? कृपया मुझे नामित प्रश्नों के फायदे प्रदान करें।हाइबरनेट में नामांकित प्रश्नों के लाभ?

नामित प्रश्न संकलित किए गए हैं? क्या हम सीधे एचबीएम फ़ाइल में नामित क्वेरी बदल सकते हैं जो एप्लिकेशन सर्वर में तैनात है?

कृपया मेरी मदद करें।

धन्यवाद!

उत्तर

26

नामांकित प्रश्नों को संकलित किया जाता है जब सत्र कारखाना तत्काल होता है (इसलिए, अनिवार्य रूप से, जब आपका एप्लिकेशन शुरू होता है)।

स्पष्ट लाभ, इसलिए, कि अपने सभी नामित प्रश्नों उस समय मान्य किए जाते हैं बल्कि निष्पादन पर नाकाम रहने से है। दूसरा फायदा यह है कि वे (-ier) को बनाए रखने के लिए निश्चित रूप से जटिल प्रश्नों के लिए हैं।

नुकसान है कि नामित प्रश्नों क्रम पर अनुकूलन नहीं हैं - आप को परिभाषित कर सकते/आपूर्ति मानकों, ज़ाहिर है, लेकिन यह है कि परे क्या द्वारा निर्धारित किए गए हैं वही आप पाएँगे है; आप सॉर्टिंग भी बदल नहीं सकते हैं। एक और नुकसान यह है कि आप सत्र फ़ैक्टरी को पुनः लोड किए बिना चल रहे एप्लिकेशन सर्वर में नामित क्वेरी को बदलने में सक्षम नहीं होंगे।

16

लाभ

  • संकलित और एप्लिकेशन शुरू हुआ समय में मान्य
  • आसान अपने कोड
  • HQL और देशी एसक्यूएल प्रश्नों में एम्बेडेड स्ट्रिंग शाब्दिक से बनाए रखने के लिए इस्तेमाल किया जा सकता और कोड बिना बदला परिवर्तन (कोई ज़रूरत नहीं अपने कोड को फिर से संकलित करने के लिए)

नुकसान

  • स्थिर
  • देशी एसक्यूएल प्रश्नों कभी कभी बोझिल

तो साथ परिणाम निर्धारित मानचित्रण, मैं आप निश्चित रूप से अपने कोड में स्ट्रिंग शाब्दिक से अधिक नामित प्रश्नों को प्राथमिकता देनी चाहिए लगता है। जब आपको रनटाइम पर किसी प्रकार की गतिशील क्वेरी निर्माण की आवश्यकता होती है तो आपको Hibernate Criteria API पर एक नज़र डालना चाहिए। हाइबरनेट मानदंड हमेशा उपयोग करने में आसान और सहज नहीं होता है, लेकिन आपको निश्चित रूप से रनटाइम पर क्वेरी स्ट्रिंग उत्पन्न करने के बजाय इसका उपयोग करना चाहिए।

HTH

संबंधित मुद्दे