Maison >base de données >tutoriel mysql >Class.forName() est-il nécessaire pour l'enregistrement du pilote JDBC dans Java 6 et versions ultérieures ?

Class.forName() est-il nécessaire pour l'enregistrement du pilote JDBC dans Java 6 et versions ultérieures ?

DDD
DDDoriginal
2025-01-04 12:56:40637parcourir

Is Class.forName() Necessary for JDBC Driver Registration in Java 6 and Later?

Enregistrement du pilote DriverManager : utilisation de Class.forName() dans Java 6 et au-delà

Question :

Depuis Java 6, Class.forName(JDBC_DRIVER) n'est-il plus requis pour l'enregistrement du pilote JDBC ? Bien que la documentation suggère que la propriété système jdbc.drivers doit fournir le chemin du pilote, l'impression de cette propriété renvoie null. Pourquoi l'application fonctionne-t-elle toujours correctement ?

Réponse :

L'élimination de Class.forName() dans Java 6 (et JDBC4) n'a aucun rapport avec les jdbc.drivers propriété. Java a introduit un concept de « fournisseur de services » selon lequel les pilotes conformes peuvent s'auto-enregistrer auprès de la JVM au démarrage.

Inscription du fournisseur de services :

Pilotes qui adhèrent à cet endroit standard un répertoire de services dans leur fichier JAR dans le répertoire META-INF. Ce répertoire contient un fichier texte nommé java.sql.Driver, qui spécifie la classe d'implémentation.

Détection des pilotes :

La JVM détecte et enregistre automatiquement les pilotes implémentant cette interface . Cela élimine le besoin d'enregistrement explicite à l'aide de Class.forName() pour les pilotes conformes.

Fonctionnalité de l'application :

Dans l'exemple fourni, l'application peut toujours fonctionner correctement malgré la valeur de retour nulle pour System.getProperty("jdbc.drivers") si :

  • Le pilote utilisé prend en charge le fournisseur de services inscription.
  • Le fichier JAR du conducteur comprend le répertoire des services requis.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Sous-requêtesArticle suivant:Sous-requêtes