sql >> Base de Datos >  >> RDS >> Mysql

¿Por qué llamar a Class.forName(com.mysql.jdbc.Driver) registra MySQL para JDBC?

Lo registra porque carga la clase en la memoria y ejecuta los inicializadores estáticos de la clase. El código inicializador estático luego llama al marco JDBC para decir "Hola, soy un controlador JDBC" (llamando a DriverManager.registerDriver ).

Por ejemplo, la clase de controlador se verá vagamente así:

package com.example.jdbc;

import java.sql.DriverManager;

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

    // ...implementation...
}

Luego, cuando haces Class.forName("com.example.jdbc.Driver") , carga la clase y ejecuta el inicializador estático, que crea una instancia y la registra con el DriverManager .

Debo señalar que como dice Andreas , los controladores JDBC modernos no necesitan que hagas esto.