Mysql
 sql >> база данни >  >> RDS >> Mysql

Защо извикването на Class.forName(com.mysql.jdbc.Driver) регистрира MySQL за JDBC?

Той го регистрира, защото зарежда класа в паметта и изпълнява статичните инициализатори на класа. След това кодът на статичния инициализатор извиква JDBC рамката, за да каже „Здравей, аз съм JDBC драйвер“ (чрез извикване на DriverManager.registerDriver ).

Например, класът на драйвера ще изглежда неясно така:

package com.example.jdbc;

import java.sql.DriverManager;

public class Driver implements java.sql.Driver {
    static {
        DriverManager.registerDriver(new Driver());
    }

    // ...implementation...
}

След това, когато направите Class.forName("com.example.jdbc.Driver") , той зарежда класа и изпълнява статичния инициализатор, който създава екземпляр и го регистрира с DriverManager .

Трябва да отбележа, че както казва Андреас , съвременните JDBC драйвери не се нуждаят от вас, за да правите това.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какво се случи първо в mysql:присъединяване или къде

  2. Въпрос за най-добра практика за MySQL:подреждане по идентификатор или дата?

  3. Google Cloud SQL със SSL от Compute Engine и/или външна мрежа

  4. Неправилна стойност на DateTime '0000-00-00 00:00:00' - Date_Sub() в

  5. SQL ограничение SELECT, но не JOIN