forName(String) de la classe 
              Class, puis par appel de la méthode
              newInstance(). Cette procédure est pratique, car il n’y a pas besoin de connaître le pilote au moment de l’écriture du code. Il est parfaitement possible de le passer en paramètre au moment du lancement de l’application.
              
            Ensuite, il faut déclarer le pilote au niveau du
              DriverManager, par appel à la méthode statique 
              registerDriver(Driver). Cet objet se chargera enfin de la contruction de l’objet connexion à la base de données. Cet objet peut connaître autant de pilotes qu’on peut lui en donner, et c’est lui qui, au vu de la chaîne de connexion qu’il reçoit, va choisir le bon pilote et créer l’objet de type
              Connection.
              
            Le pilote est une classe qui implémente l’interface
              Driver. Cette interface contient une méthode principale :
              connect(), à laquelle il faut passer comme paramètres l’URL de la base et les identifiants de connexion pour pouvoir établir une connexion à la base de données.
              
            Outre 
              registerDriver(Driver) et 
              deregisterDriver(Driver), la classe 
              DriverManager possède des méthodes qui permettent de configurer les pilotes qu'elle gère.
             
          forName(String) de la classe 
              Class nous renvoie une instance de 
              Class. On ne lui fournit qu’une chaîne de caractères qui représente le nom complet du pilote. Une fois cette instance créée, le
              DriverManager connaît automatiquement le pilote, et il est possible de demander une connexion sur la base.
              
            L’avantage de cette méthode est que l’on n’a pas besoin du pilote au moment de la compilation. Il suffit juste de connaître son nom complet. La machine Java n’aura besoin d’avoir ce pilote dans son espace de nom que lors de son chargement.  
            L’instanciation de ce pilote peut se faire par l’appel à la méthode statique 
              newInstance() de la classe 
              Class. Elle nous renvoie un objet de type 
              Driver, interface implémentée par tous les pilotes JDBC.
              
            Cette méthode était la méthode préconisée dans les anciennes version du JDK et de JDBC. De nouveaux mécanismes ont été apportés à Java 6, qui permettent de procéder de façon plus simple et purement déclarative. Notamment, il n'est plus nécessaire de charger explicitement la classe du pilote, ni même de l'instancier. 
          registerDriver(Driver) de la classe 
              DriverManager. On passe en paramètre l’instance du pilote que l’on vient de construire.
             
          jdbc.drivers :
            
$ java –Djdbc.drivers=com.mysql.jdbc.Driver TestDBLa seconde consiste a utiliser une fonctionnalité de Java 6. Lors du chargement d'un JAR, Java 6 examine le contenu du répertoire
META-INF de ce JAR. S'il y trouve un fichier 
              services/java.sql.Driver, alors il l'ouvre, charge les classes définies dans ce fichier, et les enregistre en tant que pilotes JDBC. On pourra se reporter à la documentation de la classe
              java.util.ServiceLoader pour plus d'informations sur cette fonctionnalité.
              
            
                Exemple 2. Contenu du fichier
                  META-INF/services/java.sql.Driver
                
                
              
oracle.jdbc.OracleDriver com.mysql.jdbc.Driver
DataSource. Ces objets sont passés au code appelant, soit par requête JNDI, soit par injection directe. Un objet de type
              DataSource possède une méthode
              getConnection() qui nous retourne notre objet 
              Connection classique.
              
            Il n'est pas besoin de disposer d'un serveur JEE pour utiliser des sources de données. On peut utiliser la bibliothèque Apache DBCP (
              http://commons.apache.org/dbcp) pour ce faire, dont le fonctionnement de base est très simple. Notons que DBCP est elle-même utilisée dans de nombreux serveurs JEE open-source.
              
            DBCP fournit plusieurs implémentations de l'interface
              DataSource, dont la plus simple est 
              BasicDataSource. Voyons un exemple simple d'utilisation.
              
            Exemple 3. Création d'une source de données DBCP
BasicDataSource ds = new BasicDataSource() ; ds.setDriverClassName("com.mysql.jdbc.Driver") ; ds.setUsername("scott") ; ds.setPassword("tiger") ; ds.setUrl("jdbc:mysql::3306/db_test") ; Connection conn = ds.getConnection() ;
Tableau 3. Principaux pilotes JDBC
| Base de données | Classe du pilote | Référence | 
|---|---|---|
| MySQL | com.mysql.jdbc.Driver | http://www.mysql.com/ | 
| Apache Derby | org.apache.derby.jdbc.EmbeddedDriver | http://db.apache.org/derby/ | 
| PostgreSQL | org.postgresql.Driver | http://www.postgresql.org/ | 
| SQLite | org.sqlite.JDBC | http://www.sqlite.org/ | 
| HSQLDB | org.hsqldb.jdbcDriver | http://hsqldb.org/ | 
| Oracle | oracle. jdbc.driver.OracleDriver | http://www.oracle.com/ | 
| SQLServer | com.microsoft.jdbc.sqlserver.SQLServerDriveretnet.sourceforge.jtds.jdbc.Driver | http://www.microsoft.com/sqlserver/ethttp://jtds.sourceforge.net/ |