Le pilote JDBC
Sommaire
- 1- Objectifs
- 2- Présentation
- 3- Le pont ODBC-JDBC bridges, ODBC (Open Data Base Connectivity)
- 3.1- Avantages:
- 3.2- Inconvénients:
- 4- Pilote natif(Native-API driver "partially java driver")
- 4.1- Avantages:
- 4.2- Inconvénients:
- 5- Le pilote de protocole réseau (Network Protocol driver "fully java driver")
- 5.1- Avantages:
- 5.2- Inconvénients:
- 6- Architecture JDBC
- 7- Pilote entièrement écrit en java(Thin driver)
- 7.1- Avantages:
- 7.2- Inconvénients:
- 8- Les Composants des API JDBC
- 8.1- Driver:
- 8.2- DriverManager:
- 8.3- Connection :
- 8.4- Statement :
- 8.5- ResultSet :
- 8.6- SQLException :
- 8.6.1- Sommaire du cours JSP
Le pilote JDBC
-
Objectifs
- Mettre en œuvre l’API JDBC java.sql
-
Présentation
- L’API JDBC (Java Database Connectivity) permet une connectivité standard et indépendante entre des applications java qui l’utilise et les serveurs de bases de données relationnelles.
- Java Database Connectivity ( JDBC) est un Java API standard utilisé pour interagir avec toutes les formes de bases données relationnelles. JDBC dispose d’un ensemble de classes et d’interfaces qui peuvent utiliser dans des applications Java pour communiquer avec la base des données.
- L’utilisation de cet API nous oblige à suivre un certain nombre d’étapes à savoir:
- Établir une connexion à la base de données ( MySQL ou ORACLE, …)
- Envoyer des requêtes SQL aux bases de données connectées pour qu’elles soient exécutées sur la BD concernée.
- Traiter les résultats retournés par les requêtes exécutées sur la BD.
- JDBC permet entre autre :
- L’établissement d’une connexion avec le SGBD.
- L’envoi de requêtes SQL au SGBD, à partir du programme java.
- Le traitement, au niveau du programme, des données retournées par le SGBD.
- Le traitement des erreurs retournées par le SGBD lors de l’exécution d’une instruction.
- Le driver JDBC est un composant logiciel qui permet a un programme java d’interagir avec une base de donnée, il y a 4 types de pilote JDBC (Java Data Base Conectivity) :
- Le pont JDBC-ODBC (JDBC-ODBC bridge driver)
- Pilote natif(Native-API driver "partially java driver")
- Le pilote de protocole réseau (Network Protocol driver “fully java driver”)
- Pilote entièrement écrit en java(Thin driver)
-
Le pont ODBC-JDBC bridges, ODBC (Open Data Base Connectivity)
- C’est une interface propre à Microsoft et qui permet l’accès à n’importe quelle base de données (Panneau de configuration /Outils d’administration/ Sources de données ODBC
- Ce pilote utilise le driver ODBC (standard Microsoft) pour se connecter aux serveurs de base de données.
-
Avantages:
- peut être facilement connecté à une base de données.
-
Inconvénients:
- Le pilote ODBC doit être installé sur l’ordinateur client
- Ne convient pas aux applets, car le pilote ODBC doit être installé sur le client.
- Rend l’application moins portable et dépendante d’une plate-forme
-
Pilote natif(Native-API driver "partially java driver")
- Ce type de driver traduit les appels de JDBC à un SGBD particulier, grâce à un mélange d’API java et d’API natives. (Propre au SGBD).
- Ce Driver est fourni par l’éditeur de SGBD
- Ce type de driver fait appel à des fonctions natives non Java (le plus souvent en langage C) de l’API du SGBD que l’on veut utiliser; on a à peu de chose prêt les mêmes problèmes que précédemment.
-
Avantages:
- performance améliorée par rapport au 1er type(pont JDBC-ODBC).
-
Inconvénients:
- Le pilote natif doit être installé sur chaque machine cliente.
- Ce pilote ne supporte pas les applets.
-
Le pilote de protocole réseau (Network Protocol driver "fully java driver")
- c’est ce type de Driver qu’on utilise de préférence car il convertit directement l’appel du JDBC au protocole réseau directement compréhensible par les serveur de base de données.
- Le pilote de protocole réseau utilise "middleware" (serveur d’application) qui convertit les appels JDBC directement ou indirectement dans le protocole de base de données spécifique au fournisseur. Il est entièrement écrit en Java.
-
Avantages:
- Aucune bibliothèque côté client est nécessaire.
- Le serveur d’application peut effectuer de nombreuses tâches comme la vérification, l’équilibrage de charge, etc…
- Un seul pilote peut gérer n’importe quelle base de données.
- Le client n’a pas besoin d’être modifié pour une nouvelle base de données.
-
Inconvénients:
- Le réseau de soutien est nécessaire au niveau de la machine du client.
. -
Architecture JDBC
- JDBC fonctionne selon les deux modèles suivants :
- Modèle à deux couches (two-tier)
- Dans le modèle two-tier, une application JAVA (ou une applet) dialogue avec le SGBD par l’intermédiaire du pilote JDBC. L’application JAVA et le pilote JDBC s’exécutent sur l’ordinateur client tandis que le SGBD est placé sur un serveur.
- C’est ce type d’architecture qui nous concerne actuellement dans notre cours.
- Modèles à trois couches (three-tier)
- Dans le modèle three-tier, l’applet (ou l’application JAVA) ne dialogue plus directement avec un SGBD : un middle-tier fait le lien entre ces deux composants
- Le SGBD exécute les requêtes SQL et envoie les résultats au middle tier. Ces résultats sont ensuite communiqués à l’applet sous forme d’appels http
-
Pilote entièrement écrit en java(Thin driver)
- Ces types de pilote écrits en Java s’adressent à un middleware (application intermédiaire) qui fait l’interface avec la Base de Données; ils permettent donc l’utilisation d’un serveur middleware et facilitent ainsi l’accès à plusieurs types de sources de données.
- Ce type de driver est connu sous le nom Direct Database Pure Java Driver), permet d’accéder directement à la base de données (sans ODBC ni Middleware). C’est le type le plus optimal.
-
Avantages:
- Complètement implémenté en Java pour réaliser l’indépendance de plateforme.
- Performant que les autres types de pilotes (driver).
-
Inconvénients:
- Pilotes dépend de la base de données.
. -
Les Composants des API JDBC
- Toutes les classes de JDBC sont dans le package java.sql. Il faut donc l’importer dans tous les programmes avant utiliser JDBC.
import java.sql.*;
- Chaque API JDBC doit disposer des classes et des interfaces suivantes:
- Driver: C’est une interface qui permet de communiquer avec la BD.
- DriverManager: La liste des pilotes de base de données est gérée par cette classe.
- Connection: C’est une interface qui définit toutes les méthodes pour contacter la BD
- Statement (PreparedStatement): cette classe contient la requête et la transmet à la base de données
- ResultSet:Les objets ResultSet contiennent les données extraites de la base de données après l’exécution de requêtes SQL.
- SQLException: C’est la classe qui lève toutes les exceptions résultant des applications java utilisant JDBC.
-
Driver:
- est une Interface,il est utilisé pour relier la base de données avec des liens. Une fois le driver est téléchargé, le programmeur ne doit pas appeler ouvertement.
- La méthode connect() de l’ interface Driver nécessite un URL pour accéder à la base de données; ensuite elle renvoie une instance de l’interface Connection (null si le driver ne convient pas). Cette instance de l’interface Connection obtenue permet de lancer des requêtes.
-
DriverManager:
- Est une classe, il est utilisé pour gérer la liste de Driver (database drivers).
Class.forName ("oracle.jdbc.driver.OracleDriver");
// pilote OracleClass.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
// pilote ODBCClass.forName ("com.mysql.jdbc.Driver");
// pilote MySQL-
Connection :
- Est une Interface avec toutes les méthodes de communication avec la base de données. L’objet de connexion représente le contexte de communication i.e.,. Toutes les communications avec la base donnée se fait par l’objet de Connexion uniquement.
Connection connexion = DriverManager.getConnection(url, user, password);
// pilote Oracle-
Statement :
- Incarne une déclaration SQL qui est envoyée à la base donnée pour analyser, compiler, planifier et mettre en oeuvre.
-
ResultSet :
- ResultSet représente l’ensemble des éléments récupérés par l’exécution de la requête.
-
SQLException :
- Cette classe gère toutes les erreurs qui se produisent dans une application de base de données.