Olivier Schaerer 2004-2005 / IGS3
L’API JDBC (Java Database Connectivity)
Class
+ forName ( [in] arg : String ) : void
DriverManager
+ getConnection ( [in] url : String , [in] name : String , [in] pwd : String ) : Connection
+ registerDriver ( [in] driver : Driver ) : void
Connection
+ createStatement ( ) : Statement
Statement
+ execute ( [in] sql : String ) : ResultSet
Instancie
IGSStatement
+ execute ( [in] sql : String ) : ResultSet
Instancie
ResultSet
IGSResultSet
Instancie
Driver
+ connect ( [in] url : String , [in] Properties : info ) : Connection
IGSDriver
+ connect ( [in] url : String , [in] Properties : info ) : Connection
IGSConnection
+ createStatement ( ) : Statement
Le DriverManager ne propose que des méthodes statiques.
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.
Object3 :
DriverManager
Object2 : IGSDriver
Client : Actor1 Classe IGSDriverObject1 : Class
1 : forName ( arg )
2 : \bloc static\
3 : \New\
4 : registerDriver ( driver )
5 : getConnection ( url , name , pwd )
6 : connect ( url , Properties )
Dynamic loading
-------------------->
une Connection
une Connection
C'est la classe IGSDriver qui
créee une instance d'elle même !
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
Object6 : IGSResultSe
t
Client : Actor1 Object4 : IGSConnection
Object5 : IGSStatemen
t
6 : createStatement ( )
7 : \new\
8 : execute ( sql ) 9 : \new\
un Statement
un ResultSet
Figure 3
Effectuer une requête sur la base de données et récupérer le résultat dans une ResultSet
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !