Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

क्या मैं Java PooledConnections का सही उपयोग कर रहा हूँ?

यह सही तरीका नहीं है। डेटा स्रोत को उस किसी भी कंटेनर द्वारा प्रबंधित करने की आवश्यकता है जिसमें आप एप्लिकेशन चला रहे हैं। MysqlConnectionPoolDataSource है नहीं एक कनेक्शन पूल। यह javax.sql.DataSource इंटरफेस। आप इसे सामान्य रूप से जेएनडीआई संदर्भ में परिभाषित करते हैं और इसे वहां से प्राप्त करते हैं। साथ ही MySQL स्वयं यह सब स्पष्ट रूप से उनके दस्तावेज़ .

अब, इसका उपयोग कैसे करना है यह आवेदन के उद्देश्य पर निर्भर करता है। यदि यह एक वेब एप्लिकेशन है, तो आपको सर्वलेट कंटेनर/एपसर्वर के जेएनडीआई संसाधन दस्तावेज़ीकरण को संदर्भित करने की आवश्यकता है। यदि यह उदाहरण के लिए टॉमकैट है, तो आप इसे यहां पा सकते हैं। . यदि आप क्लाइंट एप्लिकेशन चला रहे हैं - जिसके लिए मैं कनेक्शन पूल के मूल्य पर अत्यधिक सवाल उठाऊंगा--, तो आपको एक कनेक्शन पूलिंग फ्रेमवर्क की तलाश करनी होगी जो MySQL द्वारा प्रदान किए गए कनेक्शन पूल किए गए डेटासोर्स का उपयोग कर सके, जैसे कि C3P0

आपके द्वारा पोस्ट किए गए कोड के साथ दूसरी समस्या यह है कि PooledConnection#getConnection() अंतर्निहित . लौटाएगा कनेक्शन जो इस प्रकार नहीं . है एक जमा कनेक्शन। इस पर कॉल करने से पूल से कनेक्शन वापस नहीं आएगा, लेकिन वास्तव में इसे बंद कर दें। पूल को हर बार एक नया कनेक्शन बनाना होता है।

फिर थ्रेडसेफ्टी स्टोरी, जो कि असली . पर निर्भर करती है प्रश्न में कनेक्शन पूलिंग ढांचा। C3P0 ने वर्षों में अपनी मजबूती साबित की है, आप इसके बारे में चिंता न करें जब तक आप मानक मुहावरे के अनुसार JDBC कोड लिखते हैं, यानी केवल का उपयोग करें JDBC इंटरफेस करता है और और . प्राप्त करता है सभी संसाधन बंद करें (Connection , Statement और ResultSet ) कम से कम संभव दायरे में।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. FIND_IN_SET एकाधिक मान के साथ

  2. MySQL संग्रहीत कार्यविधियाँ या php कोड?

  3. बाइंड एड्रेस और MySQL सर्वर

  4. ON DELETE CASCADE MySQL में काम नहीं कर रहा है

  5. साझा को अनन्य लॉक में अपग्रेड करते समय MySQL गतिरोध से बचना