Maison >base de données >tutoriel mysql >`Class.forName(JDBC_DRIVER)` est-il obsolète dans Java moderne ?
Class.forName(JDBC_DRIVER) - Est-il obsolète ?
Malgré les affirmations selon lesquelles Java 6 déconseille l'utilisation de Class.forName(JDBC_DRIVER) , il a été observé que certaines applications fonctionnent toujours correctement sans enregistrer explicitement le pilote JDBC. Ce comportement a soulevé des questions sur la nécessité de cette méthode.
Plonger dans la controverse
Lorsque System.getProperty("jdbc.drivers") renvoie null, cela indique que la méthode des propriétés système ne joue aucun rôle dans l'enregistrement du pilote. Au lieu de cela, le casse-tête réside dans l'introduction du concept de « fournisseur de services » dans Java 6 et JDBC4.
Mécanisme de fournisseur de services
Dans ce mécanisme, les implémentations d'interfaces connues peut être détecté par la JVM lors du démarrage. Les pilotes conformes à ce concept sont automatiquement enregistrés par DriverManager, éliminant ainsi le besoin de Class.forName(). Cependant, cela ne s'applique qu'aux pilotes prenant en charge ce mécanisme.
Le rôle de l'annuaire des services
L'enregistrement du service est lancé lorsqu'un répertoire de services existe dans le fichier JAR du pilote. , dans le répertoire META-INF. Au sein de ce répertoire, un fichier texte doit être présent avec le nom de l'interface implémentée (java.sql.Driver pour les pilotes JDBC) et la classe d'implémentation.
Conclusion
La méthode Class.forName(JDBC_DRIVER) peut toujours être requise si le pilote JDBC ne prend pas en charge le mécanisme du fournisseur de services. Cependant, pour les conducteurs qui le font, l'enregistrement explicite n'est plus nécessaire, car DriverManager les détecte et les charge automatiquement.
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!