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.