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