Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Por que chamar Class.forName(com.mysql.jdbc.Driver) registra o MySQL para JDBC?


Ele a registra porque carrega a classe na memória e executa os inicializadores estáticos da classe. O código inicializador estático então chama a estrutura JDBC para dizer "Olá, sou um driver JDBC" (chamando DriverManager.registerDriver ).

Por exemplo, a classe do driver parecerá vagamente assim:
package com.example.jdbc;

import java.sql.DriverManager;

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

    // ...implementation...
}

Então, quando você faz Class.forName("com.example.jdbc.Driver") , ele carrega a classe e executa o inicializador estático, que cria uma instância e a registra com o DriverManager .

Devo observar que como Andreas diz , os drivers JDBC modernos não precisam que você faça isso.