Enregistrement des pilotes JDBC : dépréciation de Class.forName()
La question soulève des inquiétudes concernant l'exigence obsolète d'enregistrer les pilotes JDBC à l'aide de Class.forName (), comme suggéré dans une discussion précédente sur Stack Overflow. Il indique que depuis Java 6, DriverManager utilise la propriété système « jdbc.drivers » pour récupérer le pilote approprié, éliminant ainsi le besoin de cette étape. Cependant, l'affiche rencontre une valeur nulle lors de l'impression de la propriété.
Réponse :
Le problème ne vient pas de la propriété "jdbc.drivers" mais plutôt d'un concept introduit dans Java 6 et JDBC4 connu sous le nom de « fournisseur de services ». Ici, les implémentations d'interfaces connues sont automatiquement détectées par la JVM lors du démarrage. Les pilotes JDBC conformes exploitent ce mécanisme, permettant au DriverManager de les enregistrer sans effort. Par conséquent, Class.forName() devient redondant uniquement lorsque les pilotes prennent en charge cette fonctionnalité.
L'enregistrement du service est déclenché par la présence d'un répertoire "services" dans le répertoire META-INF du fichier JAR du pilote. Ce répertoire doit contenir un fichier texte portant le nom de l'interface implémentée (par exemple, "java.sql.Driver" pour les pilotes JDBC) et précisant la classe d'implémentation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!