C'est particulier, c'est typiquement quelque chose qui ne concerne que les drivers JDBC.
Class.forName() a aussi pour effet de charger la classe, si elle n'était pas déjà chargée.
(En fait c'est logique : une classe est chargée lors de sa première utilisation, et pas avant. Class.forName() demande l'utilisation de la classe, et donc, si elle n'était pas chargée, ça la charge.)
Pour se servir d'un driver JDBC, on ne sait pas trop ce qu'il faut instancier ou pas, n'est-ce pas ? On configure la connexion avec un URL de connexion. Genre
DriverManager.getConnection("jdbc:mysql://machine/base",login,password);
"jdbc:mysql://machine/base" est ce qu'on appelle l'URL JDBC. On voit qu'elle indique MySQL... Mais comment sait-elle ce que c'est que MySQL et où trouver son driver ?
Elle le sait parce que la classe du driver MySQL a été chargée avec Class.forName() et en a profité pour s'enregistrer dans le registre des drivers JDBC reconnus pas URL. Voilà.
Il n'était pas utile de créer une instance de quoi que ce soit, il fallait seulement charger une classe.
De nos jours, Java préfère utiliser des méthodes plus élégantes que celle-ci. Mais pour les drivers JDBC, on a toujours fait comme ça, et on continue.
Partager