2015-10-20 5 views
27

क्वेरी, मूल क्वेरी, नामांकित क्वेरी और टाइप की गई क्वेरी के बीच अंतर क्या हैं? क्या 'अकेले खड़े' प्रश्न भी मौजूद हैं, या यह सिर्फ संक्षेप है? मेरे दिमाग में, एक देशी क्वेरी सरल एसक्यूएल में लिखी गई एक क्वेरी है, जबकि एक नामित क्वेरी इकाइयों (हाइबरनेट-मैपिंग) से संबंधित है। क्या कोई इसे संक्षेप में समझा सकता है?क्वेरी, मूल क्वेरी, नामित क्वेरी और टाइप की गई क्वेरी के बीच अंतर

उत्तर

29

क्वेरी

क्वेरी आम तौर पर DML बयान (CRUD संचालन) निष्पादित करने के लिए इस्तेमाल किया एसक्यूएल के समान वाक्य रचना के साथ JPQL/HQL क्वेरी को दर्शाता है।

जेपीए में, आप entityManager.createQuery() का उपयोग कर एक प्रश्न बना सकते हैं। अधिक जानकारी के लिए आप API पर देख सकते हैं।

हाइबरनेट में, आप session.createQuery() "

NativeQuery

मूल निवासी क्वेरी वास्तविक एसक्यूएल प्रश्नों (वास्तविक डेटाबेस वस्तुओं की चर्चा करते हुए) को दर्शाता है। ये क्वेरी SQL कथन जो सीधे क्रियान्वित किया जा सकता का उपयोग करें डेटाबेस क्लाइंट का उपयोग कर डेटाबेस में

जेपीए: entityManager.createNativeQuery() हाइबरनेट (गैर-जेपीए कार्यान्वयन): session.createSQLQuery()

NamedQuery

कैसे निरंतर परिभाषित किया गया है करने के लिए इसी तरह की। NamedQuery वह तरीका है जिसे आप अपना नाम परिभाषित करके परिभाषित करते हैं। आप इसे हाइबरनेट में मैपिंग फ़ाइल में या इकाई स्तर पर एनोटेशन का उपयोग करके परिभाषित कर सकते हैं।

TypedQuery

TypedQuery आप जब आप कोई क्वेरी और इसलिए किसी भी आपरेशन उसके बाद इच्छित प्रकार का सुस्पष्ट कलाकारों की जरूरत नहीं है बनाने इकाई के प्रकार का उल्लेख करने के लिए एक विकल्प देता है। जबकि सामान्य Query एपीआई आपके द्वारा अपेक्षित ऑब्जेक्ट के सटीक प्रकार को वापस नहीं करता है और आपको कास्ट करने की आवश्यकता है।

+0

क्या कोई प्रदर्शन, थ्रूपुट, मेमोरी खपत, अलग-अलग प्रश्नों के बीच लोड ऐप सर्वर अंतर है? मुझे लगता है कि NamedQuery स्मृति खपत क्वेरी से अधिक है, लेकिन मैं नहीं कह सकता कि प्रश्नों की सीमा एक या दूसरे के पक्ष में चुनने के लिए कहां है। क्या आप समझाएँगे? अग्रिम में धन्यवाद – Joe

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