Qu'est-ce que l'utilisation réelle de la Classe.forName(“oracle.jdbc.le pilote.OracleDriver”) lors de la connexion à une base de données?
Quelle sera la commande
Class.forName("oracle.jdbc.driver.OracleDriver")
exactement lors de la connexion à une base de données Oracle? Est-il une autre façon de faire la même chose?
- Connexes: stackoverflow.com/questions/5992126/loading-jdbc-driver Notez que vous avez besoin de l'appeler qu'une seule fois, lors de votre démarrage de l'application, vous n'avez pas besoin de l'appeler à chaque fois avant d'obtenir une connexion lors de l'application de la durée de vie.
- Supposons que j'ai ma connexion en détail dans une catégorie distincte
A
où j'appelleClass.forName("oracle.jdbc.driver.OracleDriver")
dans la classeA
constructeur, et j'ai créerA's
objet pour obtenir le champ de connexion pour chaque servlet où j'ai besoin de connexion puis java va sauterClass.forName("oracle.jdbc.driver.OracleDriver")
ou vous permettra de charger à nouveau?
Vous devez vous connecter pour publier un commentaire.
Il obtient une référence à l'objet de classe avec le FQCN (nom de classe entièrement qualifié)
oracle.jdbc.driver.OracleDriver
.Il ne veut pas "faire" quoi que ce soit en termes de connexion à une base de données, outre s'assurer que la classe spécifiée est chargé par le chargeur de classe actuel. Il n'y a pas de différence fondamentale entre l'écriture
Class.forName("com.example.some.jdbc.driver")
des appels à manifester dans héritage code qui utilise JDBC parce que c'est le héritage, le mode de chargement d'un pilote JDBC.De Le Tutoriel Java:
Lecture (lire: des questions c'est un dup) de
Class.forName()
sans la saisie de la référence à la driverClass retourné, de sorte qu'il semble à première vue comme un no-op opérationClass.forName("etc.driver")
?Class.forName(...)
.Class.forName
quand on peut tout simplement faireDriver.getInstance
ouDriver.setSettings
ouDriver.Anything
?Il enregistre le conducteur; quelque chose de la forme:
De la Java JDBC tutoriel:
Donc, si vous êtes à l'aide de l'Oracle 11g (11.1), avec un pilote de la version 1.6 de Java, vous n'avez pas besoin d'appeler
Class.forName
. Sinon, vous avez besoin de l'appeler, pour initialiser le pilote.Class.forName
appeler les forces de l'classloader pour charger la classe donnée. Ceci est le manuel de chargement de l'étape décrite dans le tutoriel.class.forName();
🙂Pré Java 6 la
DriverManager
classe n'aurait pas su qui pilote JDBC vous vouliez l'utiliser.Class.forName("...")
était une façon de pré-chargement du pilote classes.Si vous utilisez la version 6 de Java, vous n'avez plus besoin pour ce faire.
Une alternative à l'utilisation de jdbc.les pilotes de Système de la propriété de spécifier vos pilotes requis(s) sur la ligne de commande lorsque vous démarrez la machine virtuelle java.
Cette commande charge de la classe de Oracle jdbc driver disponible pour DriverManager instance. Après la classe est chargée système peut se connecter à Oracle de l'utiliser. Comme alternative, vous pouvez utiliser registerDriver méthode de DriverManager et de le transmettre avec instance de JDBC pilote dont vous avez besoin.
Utilisation d'oracle.jdbc.OracleDriver, pas oracle.jdbc.le pilote.OracleDriver. Vous n'avez pas besoin de vous inscrire si le fichier jar du pilote est dans le "WEB-INF\lib", si vous utilisez Tomcat. Enregistrer ce test.jsp et la mettre dans votre répertoire web, et de redéployer vos web app dossier dans Tomcat manager: