2013-05-03 15 views
28

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

+3

आप जावाडोक क्यों नहीं पढ़ते? क्या आपको नहीं लगता कि यह समझा सकता है कि अंतर क्या है? जब प्रदर्शन की बात आती है, जिस तरह से क्वेरी बनाई जाती है और निष्पादित किया जाता है, इससे कोई फर्क नहीं पड़ता। सवाल खुद ही मायने रखता है। –

उत्तर

4

कोई मापनीय अंतर प्रदर्शन नहीं है। नामांकित पैरामीटर जेडीबीसी टेम्पलेट एक सुविधा है जो आपको नामित पैरामीटर का उपयोग करने की अनुमति देती है। यदि आप वास्तव में उत्सुक हैं तो स्रोत कोड पर नज़र डालें जो डाउनलोड के लिए आसानी से उपलब्ध है। मुझे लगता है कि स्रोत कोड पढ़ने से मुझे फ़ोरम पर मिलने वाले उत्तरों में अधिक विश्वास मिलता है।

53

जब आप जेडीबीसी टेम्पलेट का उपयोग करते हैं तो आप इसे एसक्यूएल देते हैं जिसमें प्रत्येक पैरामीटर के लिए ? प्लेसहोल्डर होता है जिसे आप SQL में प्रतिस्थापित करना चाहते हैं। जब आप कोड में पैरामीटर निर्दिष्ट करें आप एक सरणी में तर्क में पारित करने के लिए है और वे वे किस क्रम में सरणी में दिखाई देते हैं, इस तरह में आदत हो:

Object[] args = new Object[] {"x", "y"}; 
String sql = "select * from foo where a = ? and b = ?"; 
jdbcTemplate.query(sql, args, resultSetExtractor); 

तो एसक्यूएल कि चलाने हो जाता है select * from foo where a = 'x' and b = 'y' है।

नामांकित पैरामीटर जेडीबीसी टेम्पलेट आपको पैरामीटर प्लेसहोल्डर्स को नाम असाइन करने और मानचित्र में पास करने की अनुमति देता है ताकि टेम्पलेट प्लेसहोल्डर को मानचित्र नामों से मेल खा सके। तो अपने कोड लगेगा जैसे:

String sql = "select * from foo where a = :mya and b = :myb"; 
Map<String, Object> argMap = new HashMap<String, Object>(); 
argMap.put("mya", "x"); 
argMap.put("myb", "y"); 
namedParameterJdbcTemplate.query(sql, argMap, resultSetExtractor); 

पहला उदाहरण के रूप में ही एसक्यूएल पैदा करने (और क्वेरी चलाने समय गहन हिस्सा है, तर्क प्रविष्टि के प्रदर्शन के लिए एक गैर मुद्दा है।)।

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

+0

कोई अन्य अंतर ??? – Sarma

+3

@ शर्मा: यह एक बहुत ही विशिष्ट सवाल नहीं है। यदि आप अधिक जानकारी चाहते हैं तो आप स्रोत कोड देख सकते हैं। –

+0

क्या समान डेटा स्रोत के साथ नामांकित पैरामीटर जेडीबीसी टेम्पलेट और जेडीबीसी टेम्पलेट दोनों का उपयोग करना संभव है? क्या वे एक-दूसरे में हस्तक्षेप करेंगे? – MaxG

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