L`API JDBC (Java Database Connectivity)

publicité
L’API JDBC (Java Database Connectivity)
Driver
Class
+ connect ( [in] url : String , [in] Properties : info ) : Connection
+ forName ( [in] arg : String ) : void
DriverManager
Le DriverManager ne propose que des méthodes statiques.
+ getConnection ( [in] url : String , [in] name : String , [in] pwd : String ) : Connection
+ registerDriver ( [in] driver : Driver ) : void
Connection
IGSDriver
+ createStatement ( ) : Statement
+ connect ( [in] url : String , [in] Properties : info ) : Connection
Instancie
IGSConnection
+ createStatement ( ) : Statement
Statement
+ execute ( [in] sql : String ) : ResultSet
ResultSet
Instancie
Instancie
IGSStatement
+ execute ( [in] sql : String ) : ResultSet
IGSResultSet
Figure 1
Les classes DriverManager, Driver, Connection, Satatement et ResultSet font partie
du package java.sql de la bibliothèque java et la classe Class
du package java.lang de la bibliothèque java.
Situation
Un client demande une instance de type Connection au DriverManager qui encapsule une
instance de type IGSDriver (voir méthode registerDriver). Il va alors lui déléguer, via la
méthode connect, la création d'une instance d'une classe réalisant l'interface Connection (ici
IGSConnection). C'est effectivement le driver concret qui sait préparer un objet de type
Connection capable d'interagir avec la base de données. Concrètement ici, un objet de type
IGSDriver est capable de créer un objet de type IGSConnection.
Déroulement
1. Chargement dans le heap (dynamic loading) de la classe IGSDriver via la méthode
forName de la classe Class.
2. Tout de suite après son chargement en mémoire, le driver IGSDriver, via un bloc static,
inscrit une instance de lui-même auprès du DriverManager. Ce dernier propose une méthode
statique registerDriver afin de permettre l’enregsitrement d’objets réalisant l’interface Driver
Olivier Schaerer
2004-2005 / IGS3
L'interface Driver définit donc des objets pouvant s'inscrire ou être inscrits auprès de
DriverManager via la méthode statique registerDriver.
3. L’objet de type IGSDriver enregistré auprès du DriverManager est capable de créer des
objets de type Connection (par exemple, dans notre cas, de type IGSConnection). Ainsi,
lorsque le client demande une Connection au DriverManager, ce dernier en délègue la
création à l’objet IGSDriver qu’il encapsule.
Une Connection fournit des outils de manipulation des informations de la base de données.
Parmi ces objets, on trouve des Statement, plus précisemment, des instances de classes
implémentant l'interface Statement (voir IGSStatement).
4. Le client peut invoquer la méthode createStatement afiin d’obtenir un Statement. Ce
dernier permettra entre autre d’exécuter des requêtes sur la source de données (BDD). C'est
donc l'objet IGSConnection qui crée des instances de type Statement, particulièrement,
dans notre cas, de type IGSStatement.
5. Finalement, une fois le résultat de la requête obtenu, l'instance de type IGSStatement crée
un objet de la classe IGSResultSet. Cette dernière implémente l'interface ResultSet et
permet de parcourir entre autre le résultat d'un SELECT.
Diagrammes de séquences
Le diagramme ci-dessous présente les enchaînements nécessaires à la création d’un objet de
type Connection.
Client : Actor1
Object1 : Class
Object3 :
DriverManager
Classe IGSDriver
C'est la classe IGSDriver qui
créee une instance d'elle même !
1 : forName ( arg )
Dynamic loading
-------------------->
2 : \bloc static\
3 : \New\
Object2 : IGSDriver
4 : registerDriver ( driver )
5 : getConnection ( url , name , pwd )
6 : connect ( url , Properties )
une Connection
une Connection
Figure 2
Chargement du driver et création d’un objet Connection
Le diagramme suivant présente les étapes pour effectuer une requête (SELECT) sur la
base de données et récupérer les données dans un ResultSet.
Olivier Schaerer
2004-2005 / IGS3
Client : Actor1
Object4 : IGSConnection
6 : createStatement ( )
7 : \new\
Object5 : IGSStatement
un Statement
8 : execute ( sql )
un ResultSet
9 : \new\
Object6 : IGSResultSet
Figure 3
Effectuer une requête sur la base de données et récupérer le résultat dans une ResultSet
Olivier Schaerer
2004-2005 / IGS3
Téléchargement