2015-11-19 4 views
11

किसी को भी कृपया मुझे निम्नलिखित जेपीए के EntityManager के तरीकों के बीच मतभेद की व्याख्या कर सकते: createQuery(), createNamedQuery() और createNativeQuery() और यह भी मुझे जो मामलों पर समझाने क्या आपको किस विधि का उपयोग करना चाहिए?जेपीए के EntityManager createQuery() बनाम createNamedQuery() बनाम createNativeQuery()

उत्तर

10
  1. CreateQuery: एक JPQL
  2. createNamedQuery बनाने के लिए प्रयोग किया जाता है: मैपिंग फ़ाइल या एनोटेशन में नाम के साथ प्रश्नों को परिभाषित करने के लिए प्रयुक्त go to this
  3. createNativeQuery: देशी/शुद्ध एसक्यूएल निष्पादित करने के लिए प्रयोग किया जाता है प्रश्नों Example
+0

भयानक उत्तर अपडेट किया। धन्यवाद – Krish

+0

सिवाय इसके कि "एचक्यूएल" जेपीए के साथ कुछ लेना देना नहीं है। जेपीए जेपीक्यूएल का उपयोग करता है –

20
  • createQuery विधि गतिशील प्रश्नों, जो एक आवेदन पत्र के व्यापार तर्क के भीतर सीधे परिभाषित क्वेरी दी गई हैं बनाने के लिए प्रयोग किया जाता है। उदाहरण:

    public List findWithName(String name) { 
    return em.createQuery(
    "SELECT c FROM Customer c WHERE c.name LIKE :custName") 
    .setParameter("custName", name) 
    .setMaxResults(10) 
    .getResultList(); 
    } 
    
  • createNamedQuery विधि स्थिर प्रश्नों, या प्रश्न है कि मेटाडाटा में javax.persistence.NamedQuery एनोटेशन का उपयोग करके परिभाषित कर रहे हैं बनाने के लिए प्रयोग किया जाता है। @NamedQuery का नाम तत्व क्वेरी का नाम निर्दिष्ट करता है जिसका उपयोग createNamedQuery विधि के साथ किया जाएगा।

    @PersistenceContext 
        public EntityManager em; 
        ... 
        customers = em.createNamedQuery("findAllCustomersWithName") 
        .setParameter("custName", "Smith") 
        .getResultList(); 
    
    • createNativeQuery का एक उदाहरण बनाएँ:

      @NamedQuery(
      name="findAllCustomersWithName", 
      query="SELECT c FROM Customer c WHERE c.name LIKE :custName" 
      ) 
      

    यहाँ createNamedQuery, का एक उदाहरण है जो @NamedQuery का उपयोग करता है: @NamedQuery की क्वेरी तत्व क्वेरी है देशी SQL कथन निष्पादित करने के लिए क्वेरी।यहाँ विकल्प createNativeQuery करने के लिए कुछ कारण हैं:

    • कम स्तर का उपयोग, जिसका अर्थ है कि आप अनुकूलन और अपने आप से मानचित्रण संभाल कर सकते हैं; एसक्यूएल के साथ आप वास्तव में डेटाबेस तालिका तक पहुंचते हैं जबकि जेपीक्यूएल के साथ आप इकाई ऑब्जेक्ट्स तक पहुंचते हैं;
    • शायद तुम JPQL जानने के लिए अगर आप पहले से एसक्यूएल पता नहीं करना चाहती
    • आप पहले से ही प्रश्नों एसक्यूएल में लिखा है, और संसाधनों/समय बंदरगाह के लिए उन्हें

लिए JPQL की जरूरत नहीं है

Creating Queries Using the Java Persistence Query Language

JPA why use createNamedQuery

: अधिक जानकारी के उन लिंक्स पर जाएँ

Why do we need to create native query?

+0

मैं पहले से ही इन लिंक से गुजर चुका हूं लेकिन समझने में सक्षम नहीं हूं। तो इस सवाल को पोस्ट किया। – Krish

+0

जबकि ये लिंक सैद्धांतिक रूप से प्रश्न का उत्तर दे सकते हैं, [यह बेहतर होगा] (// meta.stackoverflow.com/q/8259) यहां उत्तर के आवश्यक हिस्सों को शामिल करने के लिए, और संदर्भ के लिए लिंक प्रदान करें। अन्यथा एक टिप्पणी पर्याप्त होगी। –

+0

@TobiasLiefke आपकी सलाह के लिए धन्यवाद, मैंने अपना उत्तर –

0

CreateQuery का उपयोग JPQLqueries

बनाने के लिए किया जाता है obj.createNamedQuery("entity.findbycode",Something.class)

createNativeQuery देशी/शुद्ध एसक्यूएल प्रश्नों पर अमल किया जाता है:

createNamedQuery, मैपिंग फ़ाइल या एनोटेशन में नाम के साथ प्रश्नों को परिभाषित करने के उदाहरण प्रयोग किया जाता है।

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