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

किसी वेब ऐप में JDBC के माध्यम से डेटाबेस से कनेक्ट करते समय Class.forName की आवश्यकता कब होती है?

JDBC4 ड्राइवरों में एक फ़ाइल शामिल होती है:

META-INF/services/java.sql.Driver

जार में जो JVM के साथ ड्राइवर कार्यान्वयन को पंजीकृत करने के लिए ServiceProvider तंत्र का उपयोग करता है (java.util.ServiceLoader ) इसीलिए Class.forName अब आवश्यक नहीं है।

मेरा अनुमान है कि यह एक क्लास लोडर मुद्दा है। ServiceLoader javadoc उल्लेख करता है कि:

मैं आपके ड्राइवर को tomcat\lib . में डालने का प्रयास करूंगा आपकी वेब ऐप निर्देशिका के बजाय निर्देशिका यह देखने के लिए कि क्या इससे कोई फर्क पड़ता है (अलग वर्ग लोडर?)।

यदि आप एक विचार के माध्यम से अपना वेब ऐप लॉन्च करते हैं और ब्रेकपॉइंट सेट करते हैं, तो ब्रेकपॉइंट पर पहुंचने के बाद, आप निष्पादित करने के लिए "मूल्यांकन अभिव्यक्ति" सुविधा का उपयोग कर सकते हैं:ServiceLoader.load(Driver.class) . यह आपको एक ServiceLoader देगा कक्षा जिसे आप देख सकते हैं कि कौन से ड्राइवर पंजीकृत हैं। आप जाँच सकते हैं कि क्या mysql ड्राइवर वहाँ है, सूची में कहाँ है, आदि, जो यहाँ के व्यवहार का पता लगाने में मदद कर सकता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQLi ने स्टेटमेंट एरर रिपोर्टिंग तैयार की

  2. MySQL स्तंभ प्रकार TIMESTAMP परोक्ष रूप से अद्यतन CURRENT_TIMESTAMP पर NOT NULL DEFAULT CURRENT_TIMESTAMP शामिल है

  3. मैसकल क्वेरी त्रुटि - ऑटो सिक्के जोड़ें

  4. डेटाबेस के भीतर स्ट्रिंग के सभी उदाहरणों को कैसे खोजें और बदलें?

  5. एक mysql कॉलम का 'उचित मामला' स्वरूपण कैसे करें?