Red de conocimiento informático - Aprendizaje de programación - ¿Por qué Java necesita utilizar el método Class.forName() al cargar un controlador de conexión de base de datos?

¿Por qué Java necesita utilizar el método Class.forName() al cargar un controlador de conexión de base de datos?

El propósito es crear instancias de objetos.

Class.forName("") devuelve la clase

Class.forName("").newInstance() devuelve el objeto

Como se mencionó anteriormente, Class La función de forName(""); es pedirle a la JVM que busque y cargue la clase especificada. Si hay un inicializador estático en la clase, la JVM ejecutará el segmento de código estático de la clase. La especificación JDBC requiere explícitamente que las clases de controlador se registren en DriverManager, lo que significa que el código para la clase de controlador de cualquier controlador JDBC debe ser similar al siguiente código:

public class MyJDBCDriver implements Driver {static {DriverManager.registerDriver (new MyJDBCDriver());}}} Dado que el registro se completó en el inicializador estático, cuando usamos JDBC solo necesitamos ejecutar Class.forName(XXX.XXX);.

Solo queremos cargar el controlador en la jvm sin usar una instancia del controlador, por lo que llamar a Class.forName(xxx.xx.xx) es suficiente si llamamos a Class.forName(xxx .xx). .xx).newInstance(), el resultado será el mismo que llamar a Class.forName(xxx.xx.xx) porque Class.forName(xxx.xx.xx).newInstance() cargará el controlador.

Resumen: El objetivo final del controlador de base de datos jdbc es permitir a los programadores obtener una conexión de base de datos y realizar operaciones de base de datos especificadas por jdbc. El proceso de obtención de una conexión no requiere que usted mismo cree una instancia del controlador, sino que se logra a través de DriverManger.getConnection(string str);. Entonces, en términos generales, como programador, usted no crea una instancia de un controlador de base de datos para usar los métodos que contiene, a menos que tenga una necesidad especial.