Configurar un driver

Los drivers son necesarios para enseñarle a JDBC cómo interactuar con una base de datos en concreto. De modo que si quieres programar aplicaciones Java que se conecten a base de datos con JDBC, vas a tener que instalar un driver para tu base de datos primero.

Para usar JDBC en Java tendrás que agregar un driver. El propósito de un driver es enseñarle a JDBC a utilizar una base de datos concreta. La idea es que JDBC es una API neutra y universal que sólo sabe de cosas estandar en SQL, como el concepto de query, de statement, de result set... Pero que requiere de un driver para hacer la traducción entre los comandos que le damos a JDBC y los que realmente se envían a la base de datos, adaptándolo al protocolo de comunicaciones de la misma.

Esquema con la relación entre drivers JDBC y JDBC

Sin embargo, en lo que te importa a ti, uno de los primeros pasos que tendrás que hacer cuando crees un proyecto que use JDBC, será averiguar qué tipo de base de datos es la que vas a utilizar en tu proyecto, y agregarle el driver que te haga falta para poder establecer la conexión. Puede que tu proyecto ya tenga una base de datos asignada, o puede que tengas que elegirla.

Algunos ejemplos:

¿Cómo agregar el driver?

Las instrucciones dependen bastante de la manera en la que estés configurando tu proyecto.

Si estás usando Maven, como te dije, lo que tienes que hacer es agregar las coordenadas de Maven a tu archivo pom.xml. Estas coordenadas son un bloque XML que tiene normalmente una forma como la siguiente:

<dependency>
  <groupId>com.mysql</groupId>
  <artifactId>mysql-connector-j</artifactId>
  <version>9.3.0</version>
</dependency>

En tu archivo pom.xml, localiza la etiqueta <dependencies> que cuelga directamente de <project>. (Ten en cuenta que puede haber otras secciones <dependencies> en los archivos pom.xml más complejos). Si no la encuentras, solo agrega esa etiqueta al final del pom.xml, antes del cierre de </project>, y entre medias mete tus coordenadas.

<project ...>
  ... <!-- Más configuración -->
  <dependencies>
    ... <!-- Otras dependencias -->
    <dependency>
      <groupId>com.mysql</groupId>
      <artifactId>mysql-connector-j</artifactId>
      <version>9.3.0</version>
    </dependency>
  </dependencies>
</project>

Si estás usando Gradle, deberás localizar las coordenadas Gradle. Típicamente tienen la siguiente forma:

implementation 'org.mariadb.jdbc:mariadb-java-client:3.5.3'

O bien, si estás usando Gradle con Kotlin,

implementation('org.mariadb.jdbc:mariadb-java-client:3.5.3')

Esa línea la tienes que agregar en tu build.gradle junto al resto de dependencias que tengas en tu proyecto.

Si estás usando otra tecnología como bld, o si lo estás haciendo a mano en tu IDE, siempre puedes consultar su manual de instrucciones para ver cómo agregar dependencias en tu caso.

¿Cómo verificar que el driver está ahí?

Por lo general, desde hace ya 20 años a estas alturas los drivers se configuran automáticamente siempre que ejecutes tu programa teniendo el driver en el classpath. En otras palabras, una vez que hayas agregado el driver a tu proyecto, sobre todo si estás usando Maven o Gradle, ya lo tendrás listo para utilizar. Sobre este tema abro debate en la siguiente lección.

De todos modos, como prueba, vamos a confirmar que el driver está ahí llamando a uno de los métodos de DriverManager, que es la clase que, como su propio nombre indica, se ocupa de administrar los distintos drivers identificados por el sistema. El método estático drivers() nos devuelve todos los drivers reconocidos como instancias de Driver, así que podemos iterar sobre ellos para sacar información:

// Como un stream.
DriverManager.drivers().forEach(driver -> System.out.println(driver.toString()));

var drivers = DriverManager.drivers().toList();
foreach (driver d : drivers) {
  System.out.println(d.toString());
}

Si al ejecutar este código en tu main, te encuentras una línea que menciona algo como org.postgresql.Driver, o en general, un nombre de clase correspondiente al driver que hayas instalado, será que el driver ha sido reconocido y está listo para ser usado y conectarse a la base de datos. Si no aparece, es posible que no esté bien agregado, o que tu driver no sea compatible con JDBC 4 y por lo tanto tengas que agregarlo a mano. Esto sería extremadamente raro a estas alturas, pero si estás usando un driver exótico de una base de datos desconocida y muy enterprise, tal vez debas consultar el manual de instrucciones para verificar esto, o bien examinar su manual, por si acaso.

Lista de reproducción
  1. 1
    ¿Qué es JDBC?
    5 minutos
  2. 2
    Configurar un driver
    7 minutos
  3. 3
    Deja de poner Class.forName
    8 minutos
  4. 4
    Conectarse en JDBC
    10 minutos
  5. 5
    Cómo ejecutar consultas
    10 minutos
  6. 6
    PreparedStatement, ¿por qué usarlo?
    11 minutos
  7. 7
    Cómo insertar, modificar y borrar datos
    10 minutos
  8. 8
    Transacciones
    12 minutos
  9. 9
    Cursores avanzados
    11 minutos
  10. 10
    ResultSets concurrentes
    10 minutos
  11. 11
    DataSource: así se usa JDBC en la vida real
    14 minutos
  12. 12
    ¿Se sigue usando JDBC?
    10 minutos