Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kapan Class.forName diperlukan saat menghubungkan ke database melalui JDBC di aplikasi web?

Driver JDBC4 menyertakan file:

META-INF/services/java.sql.Driver

dalam toples yang menggunakan mekanisme ServiceProvider untuk mendaftarkan implementasi Driver dengan JVM (lihat javadocs untuk java.util.ServiceLoader ). Itu sebabnya Class.forName tidak lagi diperlukan.

Dugaan saya adalah ini adalah masalah pemuat kelas. ServiceLoader javadoc menyebutkan bahwa:

Saya akan mencoba meletakkan driver Anda di tomcat\lib direktori daripada direktori aplikasi web Anda untuk melihat apakah itu membuat perbedaan (pemuat kelas yang berbeda?).

Jika Anda meluncurkan aplikasi web melalui sebuah ide dan menyetel breakpoint, setelah Anda mencapai breakpoint, Anda dapat menggunakan fitur "evaluate expression" untuk mengeksekusi:ServiceLoader.load(Driver.class) . Ini akan memberi Anda ServiceLoader kelas yang dapat Anda intip untuk melihat Driver mana yang terdaftar. Anda dapat memeriksa apakah driver mysql ada di sana, di mana dalam daftar itu, dll, yang mungkin membantu dalam mencari tahu perilaku di sini.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menampilkan Proses MySQL

  2. Bagaimana menghubungkan ke database menggunakan klien MySQL Workbench

  3. mendapatkan hitungan dari kolom yang sama di tabel mysql?

  4. Hubungkan Metabase dengan MySQL untuk Eksplorasi Data

  5. Menekan Peringatan PDO