Que signifie mysql-connector-java.jar ?
mysql-connector-java.jar est le pilote JDBC officiel de MySQL pour Java. C'est l'unique pont qui permet à une application Java d'établir une connexion vers un serveur MySQL et d'exécuter des requêtes SQL. Sans ce JAR, impossible de parler à MySQL depuis Java.
Qu'est-ce qu'un pilote JDBC ?
JDBC (Java Database Connectivity) est la spécification standard qui définit comment Java accède aux bases relationnelles. Chaque moteur (MySQL, PostgreSQL, Oracle, SQL Server) fournit sa propre implémentation, distribuée sous forme de fichier .jar :
- MySQL :
mysql-connector-java.jar(officiellement renommé Connector/J) - PostgreSQL :
postgresql.jar - Oracle :
ojdbc11.jar - SQL Server :
mssql-jdbc.jar
L'application utilise uniquement les interfaces java.sql.* standard ; le pilote fait le travail de traduction vers le protocole MySQL.
Le renommage : Connector/J
Depuis la version 8.0, Oracle a renommé le package Maven en mysql-connector-j (au lieu de mysql-connector-java). La classe du pilote est également passée de com.mysql.jdbc.Driver à com.mysql.cj.jdbc.Driver. Attention aux tutoriels obsolètes.
| Ancien nom | Nouveau nom (Connector/J) | |
|---|---|---|
| ArtifactId Maven | mysql-connector-java | mysql-connector-j |
| Classe du pilote | com.mysql.jdbc.Driver | com.mysql.cj.jdbc.Driver |
| GroupId | mysql | com.mysql |
Installation avec Maven
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>9.3.0</version>
</dependency>
Installation avec Gradle
dependencies {
implementation 'com.mysql:mysql-connector-j:9.3.0'
}
Téléchargement manuel
Le JAR peut être téléchargé directement depuis :
Placez-le :
- Dans un dossier
lib/passé en-cppour une application autonome. - Dans
$TOMCAT_HOME/lib/pour une application web Tomcat (meilleure pratique). - Dans
WEB-INF/lib/pour un packaging fat WAR, au détriment d'une légère duplication.
Exemple minimal de connexion
import java.sql.*;
public class MySqlDemo {
public static void main(String[] args) throws SQLException {
String url = "jdbc:mysql://localhost:3306/myapp?serverTimezone=UTC&useSSL=false";
String user = "appuser";
String pass = "s3cret";
try (Connection conn = DriverManager.getConnection(url, user, pass);
PreparedStatement ps = conn.prepareStatement("SELECT id, name FROM users");
ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
System.out.printf("%d %s%n", rs.getInt("id"), rs.getString("name"));
}
}
}
}
Depuis JDBC 4.0, il n'est plus nécessaire d'appeler Class.forName("com.mysql.cj.jdbc.Driver") — le pilote s'auto-enregistre via le mécanisme ServiceLoader dès qu'il est sur le classpath.
Les paramètres d'URL importants
| Paramètre | Utilité |
|---|---|
serverTimezone | Fuseau horaire côté serveur (ex. UTC) |
useSSL | Activer TLS (true recommandé en production) |
requireSSL | Refuser si le serveur n'accepte pas TLS |
allowPublicKeyRetrieval | Nécessaire pour certaines configurations d'auth MySQL 8 |
useUnicode=true&characterEncoding=UTF-8 | Encodage UTF-8 explicite |
rewriteBatchedStatements=true | Optimisation des insertions en batch |
connectTimeout / socketTimeout | Timeouts réseau en millisecondes |
Pool de connexions
Connector/J seul ne pool pas les connexions. Pour une application réelle, associez-le à :
- HikariCP — le pool le plus rapide et maintenu en 2026
- Apache DBCP2 — par défaut dans Tomcat
- C3P0 — historique, encore présent dans du legacy
Avec Spring Boot, HikariCP est inclus et configuré automatiquement.
Licence
Connector/J est distribué sous GPL v2 avec exception (clause FOSS) ou licence commerciale Oracle. Pour 99 % des usages, la GPL+FOSS est suffisante ; vérifiez avec votre juriste pour des applications fermées distribuées à des tiers.
Dépannage courant
No suitable driver found for jdbc:mysql://...: le JAR n'est pas sur le classpath ou la classe du pilote a changé entre les versions.Public Key Retrieval is not allowed: ajouter&allowPublicKeyRetrieval=trueà l'URL, ou utiliser un compte avec authentificationmysql_native_password.Communications link failure: vérifier que MySQL écoute sur le port indiqué (SHOW VARIABLES LIKE 'port') et que le firewall l'autorise.
En bref, mysql-connector-java.jar (désormais Connector/J) est la pièce obligatoire pour qu'une application Java parle à MySQL. Avec une version récente et un pool bien configuré, il gère connexions, sécurité TLS, préparation des requêtes et jeux de résultats avec performance.