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