2012-12-19 20 views
21

पर @NamedQuery@NamedNativeQuery से अधिक हाइबरनेट या उपाध्यक्ष में उपयोग करने का कोई लाभ है। मैं नहीं कर सकते सटीक अंतर या जो संदर्भ में हम पहले से @NamedQuery@NamedNativeQuery@NamedQuery @NamedNativeQuery

से अधिक धन्यवाद का उपयोग करना चाहिए का पता लगाएं।

उत्तर

28

@NamedNativeQuery आपको एक नामित एसक्यूएल क्वेरी लिखने देता है, जबकि @NamedQuery आपको एक नामित एचक्यूएल क्वेरी (या जेपीक्यूएल) लिखने देता है।

सामान्य रूप से, आपको एचक्यूएल प्रश्नों को लिखना पसंद करना चाहिए क्योंकि तब आप HQLernate को विभिन्न SQL बोलियों में एचक्यूएल को परिवर्तित करने की जटिलताओं को संभालने दे सकते हैं। जब आप डीबीएमएस प्रदाताओं को स्विच करना चुनते हैं तो इससे आपकी नौकरी बहुत आसान हो जाएगी।

4

@NamedQuery क्वेरी भाषा (एचक्यूएल या दृढ़ता क्वेरी भाषा) के साथ बनाया जाना चाहिए। @NamedNativeQuery मूल एसक्यूएल के साथ बनाया जाना चाहिए।

7

प्रदर्शन के दौरान, आपको हुड के नीचे क्या चल रहा है इसके बारे में कुछ पता होना चाहिए।

आपने शायद सीधे जेडीबीसी का उपयोग करके कुछ प्रोग्राम किया है, इसलिए आप जानते हैं कि ड्राइवर से कैसे पास किया जाए और डेटाबेस को भेजें। एचक्यूएल या जेपीए-क्यूएल का उपयोग करते समय प्रश्नों में पहले को SQL भाषा में पार्स किया जा सकता है जिसे डेटाबेस समझ सकता है। इस मामले में, हमारे पास अतिरिक्त बीच में पार्सिंग चरण है। ध्यान दें कि संग्रहीत प्रक्रिया कॉल सहित देशी एसक्यूएल प्रश्न, दृढ़ता ढांचा अभी भी लगातार वस्तुओं के ग्राफ में जेडीबीसी परिणाम सेट मैपिंग का ख्याल रखता है।

यदि आप डेटाबेस प्रबंधन सिस्टम क्वेरी ऑप्टिमाइज़र, को निर्देश देने के लिए मूल SQL संकेत शामिल करना चाहते हैं, तो आपको स्वयं SQL को लिखना होगा। एचक्यूएल और जेपीए-क्यूएल के पास इसके लिए कीवर्ड नहीं हैं।

अपने मैपिंग मेटाडेटा में मूल एसक्यूएल डालने का नुकसान डेटाबेस पोर्टेबिलिटी खो गया है, क्योंकि आपके मैपिंग्स, और इसलिए आपका एप्लिकेशन केवल एक विशेष डेटाबेस के लिए काम करेगा। लेकिन आमतौर पर यह मामूली चिंता का विषय है क्योंकि आप शायद एक ढांचा नहीं बना रहे हैं जिसे प्रत्येक डेटाबेस पर काम करना है।

जब आप अपनी क्वेरी के प्रदर्शन के पीछे जाना चाहते हैं, तो आपको वास्तव में डेटाबेस से परामर्श करना होगा और निष्पादन योजना देखें - एक डीबीए आपको बता सकता है कि क्या अच्छा है और क्या अनुकूलित किया जा सकता है।