कनेक्शन पूल का उपयोग करते समय, क्या अंत में कनेक्शन को बंद कर देना चाहिए? यदि हां, तो क्या पूलिंग का उद्देश्य खो नहीं गया है? और यदि नहीं, तो डेटा स्रोत को कैसे पता चलता है कि कनेक्शन का एक विशेष उदाहरण कब मुक्त हो गया है और इसका पुन:उपयोग किया जा सकता है? मैं इस पर थोड़ा भ्रमित हूं, किसी भी संकेत की सराहना की।
हां, निश्चित रूप से आपको पूल किए गए कनेक्शन को भी बंद करना होगा। यह वास्तव में वास्तविक कनेक्शन के चारों ओर एक आवरण है। यह कवर के तहत वास्तविक कनेक्शन को वापस पूल में छोड़ देगा। यह तय करना पूल पर निर्भर है कि वास्तविक कनेक्शन वास्तव में होगा या नहीं एक नए getConnection()
. के लिए बंद या पुन:उपयोग किया जा सकता है बुलाना। इसलिए, चाहे आप कनेक्शन पूल का उपयोग कर रहे हों या नहीं, आपको हमेशा . करना चाहिए सभी JDBC संसाधनों को उल्टे क्रम में बंद करें finally
try
. का ब्लॉक ब्लॉक करें जहां आपने उन्हें हासिल किया है। जावा 7 में इसे try-with-resources
बयान।
क्या निम्न विधि मानक के करीब है? ऐसा लगता है कि पूल से कनेक्शन प्राप्त करने का प्रयास किया गया है, और यदि डेटा स्रोत स्थापित नहीं किया जा सकता है, तो पुराने जमाने के DriverManager का उपयोग करें। हम यह भी सुनिश्चित नहीं हैं कि रनटाइम पर कौन सा भाग निष्पादित हो रहा है। ऊपर दिए गए प्रश्न को दोहराते हुए, क्या इस तरह के तरीके से आने वाले कनेक्शन को बंद कर देना चाहिए?
उदाहरण काफी डरावना है। आपको बस DataSource
. को देखने/आरंभ करने की जरूरत है एप्लिकेशन के स्टार्टअप के दौरान केवल एक बार कुछ कन्स्ट्रक्टर/एप्लिकेशनव्यापी डीबी कॉन्फ़िगरेशन क्लास के प्रारंभ में। इसके बाद बस getConnection()
पर कॉल करें एप्लिकेशन के शेष जीवनकाल में एक ही डेटा स्रोत पर। सिंक्रनाइज़ेशन और न ही नलचेक की कोई आवश्यकता नहीं है।
यह भी देखें:
- क्या मल्टीथ्रेडेड सिस्टम में स्थिर java.sql.Connection इंस्टेंस का उपयोग करना सुरक्षित है?
- क्या मैं JDBC कनेक्शन पूलिंग का उपयोग कर रहा हूँ?