Quelle sera la commande
Class.forName("Oracle.jdbc.driver.OracleDriver")
faire exactement en se connectant à une base de données Oracle? Y a-t-il une autre façon de faire la même chose?
Il obtient une référence à l'objet de classe avec le FQCN (nom de classe qualifié complet) Oracle.jdbc.driver.OracleDriver
.
Il ne "fait" rien en termes de connexion à une base de données , à part de s'assurer que la classe spécifiée est chargée par le chargeur de classes actuel . Il n'y a pas de différence fondamentale entre l'écriture
Class<?> driverClass = Class.forName("Oracle.jdbc.driver.OracleDriver");
// and
Class<?> stringClass = Class.forName("Java.lang.String");
Class.forName("com.example.some.jdbc.driver")
appels apparaissent dans héritage du code qui utilise JDBC car c'est l'héritage moyen de charger un pilote JDBC .
De Le Java Tutorial :
Dans les versions précédentes de JDBC, pour obtenir une connexion, vous deviez d'abord initialiser votre pilote JDBC en appelant la méthode
Class.forName
. Cette méthode nécessitait un objet de typeJava.sql.Driver
. Chaque pilote JDBC contient une ou plusieurs classes qui implémentent l'interfaceJava.sql.Driver
.
...
Tous les pilotes JDBC 4.0 trouvés dans votre chemin de classe sont automatiquement chargés. (Cependant, vous devez charger manuellement tous les pilotes antérieurs à JDBC 4.0 avec la méthodeClass.forName
.)
Il enregistre le conducteur; quelque chose de la forme:
public class SomeDriver implements Driver {
static {
try {
DriverManager.registerDriver(new SomeDriver());
} catch (SQLException e) {
// TODO Auto-generated catch block
}
}
//etc: implemented methods
}
Depuis le tutoriel JDBC sur Java :
Dans les versions précédentes de JDBC, pour obtenir une connexion, vous deviez d'abord initialiser votre pilote JDBC en appelant la méthode
Class.forName
. Tous les pilotes JDBC 4.0 trouvés dans votre chemin de classe sont automatiquement chargés. (Cependant, vous devez charger manuellement tous les pilotes antérieurs à JDBC 4.0 avec la méthodeClass.forName
.)
Ainsi, si vous utilisez le pilote Oracle 11g (11.1) avec Java 1.6, vous n'avez pas besoin d'appeler Class.forName
. Sinon, vous devez l'appeler pour initialiser le pilote.
Une alternative consisterait à tilisez la propriété système jdbc.drivers pour spécifier vos pilotes requis sur la ligne de commande lorsque vous démarrez la machine virtuelle Java.
Cette commande charge la classe du pilote Oracle jdbc d'être disponible pour l'instance DriverManager. Une fois la classe chargée, le système peut se connecter à Oracle à l'aide de cette classe. Vous pouvez également utiliser la méthode registerDriver de DriverManager et la transmettre avec l’instance du pilote JDBC dont vous avez besoin.
Avant Java 6, la classe DriverManager
n'aurait pas su quel pilote JDBC vous vouliez utiliser. Class.forName("...")
était un moyen de précharger les classes de pilotes.
Si vous utilisez Java 6, vous n'avez plus besoin de le faire.