JDBC4 y Class.forName()

Solo una curiosidad con la que me he tropezado hace poco. Hay veces que las cosas se hacen inicialmente por necesidad, pero cuando la cosa deja de ser necesaria, se sigue haciendo por costumbre.

Tradicionalmente, cuando se quería establecer una conexión desde Java contra una base de datos, era necesario provocar que el driver de conexión a la base de datos se registrara de alguna forma en el sistema. Esto se hacía con una llamada a Class.forName()

Class.forName("com.mysql.jdbc.Driver");

y esto a día de hoy sigue viéndose en el código.

Pues bien, a partir de jdbc4 que está disponible ya desde java 6, hay un mecanismo alternativo, el de ServiceLoader. Con este mecanismo, un fichero dentro del jar con un nombre, ubicación y contenido concreto permite que al cargar el jar se registre el driver de base de datos (o cualquier otro servicio) de forma automática.

Pasando el tiempo, la mayoría de los jar con el driver de conexión con las bases de datos más conocidas ya implementan este mecanismo, por lo que en código no necesitamos hacer absolutamente nada para que el driver se registre. La llamada a Class.forName() ya es en la mayoría de los casos totalmente innecesaria.

Esta entrada fue publicada en java, MySQL. Guarda el enlace permanente.

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.