Introduction

1. Accéder aux bases de données

On considère aujourd’hui qu’environ 80% des produits logiciels développés ont besoin d’accéder à une base de données. Dès la conception du langage Java, l’accès aux bases de données a donc été une priorité des concepteurs. L’API JDBC (Java Database Connectivity) a été la première API développée après le JDK, et séparément de lui. Elle fut introduite dans l'API standard dès le JDK 1.1. L’idée originale était de donner la possibilité à un programme Java d’accéder à toute base de données ANSI SQL-2. Au début des années 90, Microsoft avait écrit ODBC (Object Database Connectivity). La puissance commerciale de cet éditeur avait imposé ce produit à toute l’industrie. ODBC est un jeu d’interfaces en C et C++ permettant d’interroger une base de données d’un programme C ou C++. Tous les fabricants de base de données ont donc développé des pilotes ODBC pour leur serveur. Le pilote étant le composant logiciel reconnu par un code ODBC, et capable de dialoguer avec une base de données spécifique. Les développeurs de Java ont donc eu la première idée de développer JDBC au-dessus d’ODBC. Les premières versions de JDBC s’adressaient donc à ODBC, ce qui a permis immédiatement à Java de pouvoir dialoguer avec à peu près tous les serveurs de bases de données existants. Même si les performances n’étaient pas bonnes, le pont JDBC-ODBC est un pilote qui s’adresse à un autre pilote, cette possibilité a certainement contribué au succès rapide de Java. Aujourd’hui l’API JDBC est mature, et la plupart des serveurs de bases de données ont leur pilote JDBC natif. On distingue plusieurs types de pilotes JDBC, même si cette distinction est de moins en moins d’actualité, tant Java est devenu incontournable pour les vendeurs de base de données.

Tableau 1. Types de pilotes JDBC

Type de pilote JDBC Description
1 Pont JDBC-ODBC. La solution la moins coûteuse. Requiert du code natif côté client. Solution peu performante.
2 API Java-native. La façon la plus simple pour le serveur de construire un JDBC. Requiert du code natif côté client.
3 Pilote réseau tout en Java. Le type le plus flexible puisqu’il permet de se connecter à une base de données en restant indépendant du middleware.
4 Pilote natif tout en Java. Le type le plus puissant. Nécessite de connaître le protocole d’accès propre à la base de données. C’est ce type de pilote que les vendeurs de base de données fournissent.

Voici la liste des différentes versions de JDBC, ainsi que le JDK correspondant.

Tableau 2. Versions successives de JDBC

Version de JDBC Version du JDK Packages
JDBC 1.0 (1998) JDK 1.1 java.sql
JDBC 2.0 (1999) JDK 1.2 java.sql
JDBC 2.0 options (1999) JDK 1.2 java.sql
JDBC 2.1 options (1999) JDK 1.2 java.sql
JDBC 3.0 API noyau (2001) JDK 1.4 java.sql, javax.sql
JDBC 4.0 (2006) JDK 6 java.sql, javax.sql
JDBC 4.1 (2011) JDK 7 langage, java.sql, javax.sql

Techniquement, JDBC est un ensemble d’interfaces qui définissent le schéma général de connexion et d’interrogation des bases de données. Le pilote d’une base de données fournit des classes qui implémentent ces interfaces. Il est donc propre à chaque base, mais on peut l’utiliser de façon transparente en ne considérant que les interfaces. C’est même de cette façon qu’il faut procéder.
Java Database Connectivity
Retour au blog Java le soir
Cours & Tutoriaux