Saltar al contenido

qué hace exactamente esto Class.forName (“com.mysql.jdbc.Driver”). newInstance ();

Solución:

los Class La clase se encuentra en el paquete java.lang, por lo que se distribuye con Java y se importa automáticamente en cada clase.

Que forName() el método hace, es solo devolver el Class objeto para el parámetro que fue cargado por el cargador de clases. los newInstance() luego devuelve una nueva instancia de la clase.

Entonces lo que pasa es que llamas
Class.forName(...)
devuelve com.mysql.jdbc.Driver.class. Entonces llamas newInstance() en esa clase que devuelve una instancia de la clase, sin parámetros, por lo que básicamente está llamando new com.mysql.jdbc.Driver();.

Inicializa la clase "com.mysql.jdbc.Driver" si se encuentra en la ruta de clase, esto implica que el controlador está registrado en el administrador de controladores JDBC ya que el proceso de registro está dentro del inicializador estático de la clase del controlador …

Hay otro enfoque que puede utilizar para registrar un controlador: es utilizar la estática DriverManager.registerDriver() método.

Citando de la Especificación JDBC, Capítulo 9, Sección 2:

Los controladores JDBC deben implementar la interfaz del controlador y la implementación debe contener un inicializador estático que se llamará cuando se cargue el controlador. Este inicializador registra una nueva instancia de sí mismo con DriverManager.

Y se proporciona un código de ejemplo para AcmeJdbcDriver como sigue:

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

Y cuando llama a Class.forName (String className), de acuerdo con la documentación de la API, sucede lo siguiente:

Una llamada a forName (“X”) hace que la clase llamada X se inicialice.

donde la inicialización involucra código en bloque estático para ser ejecutado.

Básicamente, inicializa la clase Driver y, a su vez, la clase se registra con el java.sql.DriverManager según la especificación JDBC.

Tenga en cuenta que esto ya no es necesario. Detalles pueden ser encontrados aqui.

Los métodos de DriverManager getConnection y getDrivers se han mejorado para admitir el mecanismo del proveedor de servicios de Java Standard Edition. Los controladores JDBC 4.0 deben incluir el archivo META-INF / services / java.sql.Driver. Este archivo contiene el nombre de la implementación de los controladores JDBC de java.sql.Driver. Por ejemplo, para cargar la clase my.sql.Driver, el archivo META-INF / services / java.sql.Driver contendría la entrada:

my.sql.Driver

Las aplicaciones ya no necesitan cargar explícitamente controladores JDBC usando Class.forName ().

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *