Vous êtes sur la page 1sur 35

-DYD HW OHV EDVHV GH GRQQpHV / $3, -'%&

Patrick Itey
INRIA - Sophia Antipolis Patrick.Itey@sophia.inria.fr http://www-sop.inria.fr/acacia/personnel/itey

/H SUREOqPH GH ODFFqV DX[ GRQQpHV VDQV -'%&

Java est un excellent candidat pour le dveloppement dapplications de bases de donnes : n robuste et scuris n facile comprendre n automatiquement tlchargeable par le rseau mais avant JDBC, il tait difficile daccder des bases de donnes SQL depuis Java : n oblig dutiliser des API natives comme ODBC
P. Itey - INRIA
Java et JDBC - page 2

08/01/2001

2EMHFWLIV GH -'%&

Permettre aux programmeurs Java dcrire un code indpendant de la base de donnes et du moyen de connectivit utilis Ralis par lAPI JDBC :
n n n n
une interface uniforme permettant un accs homogne aux SGBD simple mettre en uvre indpendant de la SGBD cible supportant les fonctionnalits de base du langage SQL
P. Itey - INRIA
Java et JDBC - page 3

08/01/2001

4XHVW FH TXH -'%& "


Java DataBase Connectivity (Core API 1.1) API Java adapte la connexion avec les bases de donnes relationnelles (SGBDR) Fournit un ensemble de classes et dinterfaces permettant lutilisation sur le rseau dun ou plusieurs SGBDR partir dun programme Java.

08/01/2001

P. Itey - INRIA

Java et JDBC - page 4

$YDQWDJHV

Lis a Java : n portabilit sur de nombreux O.S. et sur de nombreuses


SGBDR (Oracle, Informix, Sybase, ..)

n uniformit du langage de description des applications,


des applets et des accs aux bases de donnes

n libert totale vis a vis des constructeurs

08/01/2001

P. Itey - INRIA

Java et JDBC - page 5

/$3, -'%&

Est fournie par le package java.sql n permet de formuler et grer les requtes aux bases de
donnes relationnelles

n supporte le standard SQL-2 Entry Level

bientt le niveau suprieur : ANSI SQL-2

n 8 interfaces dfinissant les objets ncessaires :


la connexion une base loigne et la cration et excution de requtes SQL

08/01/2001

P. Itey - INRIA

Java et JDBC - page 6

MDYDVTO

8 interfaces :
n n n n n n
Statement CallableStatement, PreparedStatement DatabaseMetaData, ResultSetMetaData ResultSet, Connection Driver

08/01/2001

P. Itey - INRIA

Java et JDBC - page 7

3ULQFLSH GH IRQFWLRQQHPHQW

Chaque base de donnes utilise un pilote (driver) qui lui est propre et qui permet de convertir les requtes JDBC dans le langage natif du SGBDR. Ces drivers dits JDBC (un ensemble de classes et dinterfaces Java) existent pour tous les principaux constructeurs : n Oracle, Sybase, Informix, DB2, ...
P. Itey - INRIA

08/01/2001

Java et JDBC - page 8

$UFKLWHFWXUH -'%&
Ehh6yv6yr

JDBC API

E9789vrHhhtr

JDBC Driver API


E978P978 ivqtrqvr P978 qvr
Qvrhpy Qvrhpy E978py

E978 qvr s Phpyr

E978 qvr s Tihr

E978Ir qvr

Phpyr

Tihr

Phpyr

Tihr

08/01/2001

P. Itey - INRIA

Java et JDBC - page 9

8Q PRGqOH j  FRXFKHV

La couche externe : API JDBC n cest la couche visible et utile pour dvelopper des
applications Java accdant des SGBDR

reprsente par le package java.sql

Les couches infrieures : n destines faciliter limplmentation de drivers pour


des bases de donnes n reprsentent une interface entre les accs de bas niveau au moteur du SGBDR et la partie applicative

08/01/2001

P. Itey - INRIA

Java et JDBC - page 10

'ULYHUV -'%&

4 types de drivers (taxonomie de JavaSoft) : n Type I : JDBC-ODBC bridge driver n Type II : Native-API, partly-Java driver n Type III : Net-protocol, all-Java driver n Type IV : Native-protocol, all-Java driver Tous les drivers : n http://www.javasoft.com/products/jdbc/drivers.html
P. Itey - INRIA
Java et JDBC - page 11

08/01/2001

'ULYHU GH W\SH ,

Le driver accde un SGBDR en passant par les drivers ODBC (standard Microsoft) via un pont JDBC-ODBC : n les appels JDBC sont traduits en appels ODBC

presque tous les SGBDR sont accessibles (monde Windows)

n ncessite lemploi dune librairie native (code C)

ne peut tre utilis par des applets (scurit)

n est fourni par SUN avec le JDK

sun.jdbc.odbc.JdbcOdbcDriver
P. Itey - INRIA
Java et JDBC - page 12

08/01/2001

2'%& GH 0LFURVRIW

Open DataBase Connectivity n permet daccder la plupart des SGBD dans le


monde Windows

n dfinit un format de communication standard entre les


clients Windows et les serveurs de bases de donnes

n est devenu un standard de fait du monde Windows n tous les constructeurs de SGBD fournissent un driver
ODBC
08/01/2001

P. Itey - INRIA

Java et JDBC - page 13

$YDQWDJHV GH 2'%&

Avantages : n possibilit dcrire des applications accdant des


donnes rparties entre plusieurs sources htrognes

on dveloppe lapplication sans se soucier de la source de donnes la base de donnes utilise ct serveur peut tre interchange sans aucune modification du dveloppement fait dans la partie cliente

08/01/2001

P. Itey - INRIA

Java et JDBC - page 14

'ULYHU GH W\SH ,,

Driver dAPI natif : n fait appel des fonctions natives (non Java) de l API
du SGBDR

gre des appels C/C++ directement avec la base

n fourni par les diteurs de SGBD et gnralement


payant

n ne convient pas aux applets (scurit)

interdiction de charger du code natif dans la mmoire vive de la plateforme dexcution


P. Itey - INRIA
Java et JDBC - page 15

08/01/2001

'ULYHU GH W\SH ,,,

Pilote tout Java ou 100% Java n interagit avec une API rseau gnrique et
communique avec une application intermdiaire (middleware) sur le serveur

n le middleware accde par un moyen quelconque (par


exple JDBC si crit en Java) aux diffrents SGBDR

n portable car entirement crit en Java

pour applets et applications

08/01/2001

P. Itey - INRIA

Java et JDBC - page 16

'ULYHU GH W\SH ,9

Driver 100% Java mais utilisant le protocole rseau du SGBDR n interagit avec la base de donnes via des sockets
n gnralement fourni par lditeur n aucun problme dexcution pour une applet si le
SGBDR est install au mme endroit que le serveur Web

scurit pour lutilisation des sockets : une applet ne peut ouvrir une connexion que sur la machine o elle est hberge
P. Itey - INRIA
Java et JDBC - page 17

08/01/2001

7\SHV GH GULYHUV HW DSSOHWV


Une application Java peut travailler avec tous les types de drivers Pour une applet (untrusted) : n type I ou II : impossible

une applet ne peut pas charger distance du code natif (non Java) sur son poste dexcution si le serveur middleware se situe au mme endroit que le serveur Web (car communication par sockets avec lapplet) si le SGBDR install au mme endroit que le serveur Web
P. Itey - INRIA
Java et JDBC - page 18

n type III : possible

n type IV : possible

08/01/2001

8QH DOWHUQDWLYH  OHV VHUYOHWV

Constitue une autre solution pour accder une base de donnes travers le Web Les servlets sont le pendant des applets ct serveur : n programmes Java travaillant directement avec le
serveur Web n pas de contraintes de scurit comme les applets n peuvent gnrer des pages HTML contenant les donnes rcupres grce JDBC (par exple)

08/01/2001

P. Itey - INRIA

Java et JDBC - page 19

0RGqOHV GH FRQQH[LRQ HQ -DYD

Modle 2-tiers : 2 entits interviennent


1. une application Java ou une applet 2. le SGBDR

Modle 3-tiers : 3 entits interviennent


1. une application Java ou une applet 2. un serveur middleware install sur le rseau 3. le SGBDR

08/01/2001

P. Itey - INRIA

Java et JDBC - page 20

0RGqOH WLHUV
n Principe :

lapplication (ou lapplet) cliente utilise JDBC pour parler directement avec le SGBD qui gre la base de donnes simple mettre en uvre bon choix pour des applications clientes peu volues, livrer rapidement et nexigeant que peu de maintenance

n Avantages :

n Inconvnients :
dpendance forte entre le client et la structure du SGBDR g modification du client si lenvironnement serveur change tendance avoir des clients graisseux g tout le traitement est du ct client

08/01/2001

P. Itey - INRIA

Java et JDBC - page 21

$UFKLWHFWXUH WLHUV
Client
$SSOLFDWLRQ RX $SSOHW ' % &
TCP / Protocole propritaire

Serveur
6*%'

%'

08/01/2001

P. Itey - INRIA

Java et JDBC - page 22

0RGqOH WLHUV
n Principes :
le serveur middleware est linterlocuteur direct du code Java client; cest lui qui change des donnes avec le SGBDR pas forcemment crit en Java si cest le cas : utilise souvent JDBC pour accder au SGBDR

n Avantages:
le middleware peut ajouter un niveau de scurit plusieurs supports pour les changes avec le client : g sockets, RMI Java, CORBA, applets : le SGBDR peut se trouver sur une autre machine : g mais serveur Web et middleware au mme endroit facilite lutilisation de clients lgers

08/01/2001

P. Itey - INRIA

Java et JDBC - page 23

$UFKLWHFWXUH WLHUV
Client
$SSOLFDWLRQ RX $SSOHW -'%& 6*%'
TCP / RMI / CORBA

Serveur
0LGGOHZDUH

%'

08/01/2001

P. Itey - INRIA

Java et JDBC - page 24

6FpQDULRV GXWLOLVDWLRQ

Scnario 1 : n architecture 2-tiers avec une application Java Scnario 2 : n architecture 2-tiers avec une applet Java Scnario 3 : n architecture 3-tiers et applet/application Java
P. Itey - INRIA
Java et JDBC - page 25

08/01/2001

$UFKLWHFWXUH WLHUV HW DSSOLFDWLRQ

6FpQDULR 
Ehhhyv 8yvr E9789vrHhhtr 79 E9786yv9vrDDD

Dhr

Trr TB79S

79

08/01/2001

P. Itey - INRIA

Java et JDBC - page 26

$UFKLWHFWXUH WLHUV HW DSSOHW

6FpQDULR 
Ehhhyr 8yvr E9789vrHhhtr

E9786yr9vrDDDDW

Dhr Drr

TB79S

Xrirr

79 Trr

08/01/2001

P. Itey - INRIA

Java et JDBC - page 27

6FpQDULR 
$UFKLWHFWXUH WLHUV
8yvr Ehhhyr hyvphv

Dhr Drr

9hhihrTrr Hvqqyrhrrr Xrirr

E9789vrHhhtr

TB79S

E9786yv9vr

TB79S

79 6yvphvTrr

79

08/01/2001

Dhr

P. Itey - INRIA

Java et JDBC - page 28

0HWWUH HQ XYUH -'%&


0. Importer le package java.sql 1. Enregistrer le driver JDBC 2. Etablir la connexion la base de donnes 3. Crer une zone de description de requte 4. Excuter la requte 5. Traiter les donnes retournes 6. Fermer les diffrents espaces
P. Itey - INRIA
Java et JDBC - page 29

08/01/2001

(QUHJLVWUHU OH GULYHU -'%&

Mthode forName() de la classe Class :

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Class.forName("oracle.jdbc.driver.OracleDriver");

n quand une classe Driver est charge, elle doit crer une
instance delle mme et senregistrer auprs du DriverManager

n certains compilateurs refusent cette notation et demandent plutt :


Class.forName("driver_name").newInstance();

08/01/2001

P. Itey - INRIA

Java et JDBC - page 30

85/ GH FRQQH[LRQ

Accs la base via un URL de la forme :


jdbc:<sous-protocole>:<nom-BD>;param=valeur, ...

n qui spcifie :
1) lutilisation de JDBC 2) le driver ou le type de SGBDR 3) lidentification de la base locale ou distante g avec des paramtres de configuration ventuels nom utilisateur, mot de passe, ...

n Exemples :
String url = "jdbc:odbc:maBase" ; String url = "jdbc:msql://leo.inria.fr:1114:maBase";
08/01/2001

P. Itey - INRIA

Java et JDBC - page 31

&RQQH[LRQ j OD EDVH

Mthode getConnection() de DriverManager n 3 arguments :


lURL de la base de donnes le nom de l utilisateur de la base son mot de passe

Connection connexion = DriverManager.getConnection(url,user,password);

le DriverManager essaye tous les drivers qui se sont enregistrs (chargement en mmoire avec Class.forName()) jusqu ce quil trouve un driver qui peut se connecter la base
P. Itey - INRIA
Java et JDBC - page 32

08/01/2001

&UpDWLRQ GXQ Statement (1/2)

Lobjet Statement possde les mthodes ncessaires pour raliser les requtes sur la base associe la connexion dont il dpend 3 types de Statement : n Statement : requtes statiques simples n PreparedStatement : requtes dynamiques prcompiles (avec paramtres dentre/sortie) n CallableStatement : procdures stockes

08/01/2001

P. Itey - INRIA

Java et JDBC - page 33

&UpDWLRQ G XQ Statement (2/2)

A partir de linstance de lobjet Connection, on rcupre le Statement associ :

Statement req1 = connexion.createStatement(); PreparedStatement req2 = connexion.prepareStatement(str); CallableStatement req3 = connexion.prepareCall(str);

08/01/2001

P. Itey - INRIA

Java et JDBC - page 34

([pFXWLRQ GXQH UHTXrWH 

3 types dexcution : n executeQuery() : pour les requtes (SELECT) qui


retournent un ResultSet (tuples rsultants)

n executeUpdate() : pour les requtes (INSERT,


UPDATE, DELETE, CREATE TABLE, DROP TABLE) qui retournent un entier (nombre de tuples traits)

n execute() : procdures stockes (cas rares)


P. Itey - INRIA

08/01/2001

Java et JDBC - page 35

([pFXWLRQ GXQH UHTXrWH 

executeQuery() et executeUpdate() de la classe Statement prennent comme argument une chane (String) indiquant la requte SQL

excuter :
Statement st = connexion.createStatement(); ResultSet rs = st.executeQuery( "SELECT nom, prenom FROM clients " + "WHERE nom='itey ORDER BY prenom"); int nb = st.executeUpdate("INSERT INTO dept(DEPT) " + "VALUES(06)");
08/01/2001

P. Itey - INRIA

Java et JDBC - page 36

([pFXWLRQ G XQH UHTXrWH 

2 remarques : n le code SQL nest pas interprt par Java.


cest le pilote associ la connexion (et au final par le moteur de la base de donnes) qui interprte la requte SQL si une requte ne peut sexcuter ou quune erreur de syntaxe SQL a t dtecte, lexception SQLException est leve

n le driver JDBC effectue dabord un accs la base


pour dcouvrir les types des colonnes impliques dans la requte puis un 2me pour lexcuter..
08/01/2001

P. Itey - INRIA

Java et JDBC - page 37

7UDLWHU OHV GRQQpHV UHWRXUQpHV

L objet ResultSet (retourn par lexcution de executeQuery() ) permet daccder aux champs des tuples slectionns
n seules les donnes demandes sont transfres en
mmoire par le driver JDBC

il faut donc les lire "manuellement" et les stocker dans des variables pour un usage ultrieur

08/01/2001

P. Itey - INRIA

Java et JDBC - page 38

/H UpVXOWDW  ResultSet (1/4)

JDBC 1.x : Il se parcourt itrativement ligne par ligne n par la mthode next()

retourne false si dernier tuple lu, true sinon chaque appel fait avancer le curseur sur le tuple suivant initialement, le curseur est positionn avant le premier tuple g excuter next() au moins une fois pour avoir le premier

while(rs.next()) {// Traitement de chaque tuple}

n impossible de revenir au tuple prcdent ou de


parcourir lensemble dans un ordre alatoire
08/01/2001

P. Itey - INRIA

Java et JDBC - page 39

/H UpVXOWDW  ResultSet (2/4)

Avec le JDBC 2.0 : n on peut parcourir le ResultSet davant en arrire :

next() vs. previous() absolute(int row), first(), last(), ...

n en dplacement absolu : aller la n-ime ligne

n en dplacement relatif : aller la n-ime ligne partir


de la position courante du curseur, :

relative(int row), afterLast(), beforeFirst(), ...

08/01/2001

P. Itey - INRIA

Java et JDBC - page 40

/H UpVXOWDW  ResultSet (3/4)

Les colonnes sont rfrences par leur numro (commencent 1) ou par leur nom Laccs aux valeurs des colonnes se fait par les mthodes de la forme getXXX() n lecture du type de donnes XXX dans chaque colonne
du tuple courant

int val = rs.getInt(3) ; // accs la 3e colonne String prod = rs.getString("PRODUIT") ;

08/01/2001

P. Itey - INRIA

Java et JDBC - page 41

/H UpVXOWDW  ResultSet (4/4)


Statement st = connexion.createStatement(); ResultSet rs = st.executeQuery( "SELECT a, b, c, FROM Table1 " ); while(rs.next()) { int i = rs.getInt("a"); String s = rs.getString("b"); byte[] b = rs.getBytes("c"); }

08/01/2001

P. Itey - INRIA

Java et JDBC - page 42

7\SHV GH GRQQpHV -'%&

Le driver JDBC traduit le type JDBC retourn par le SGBD en un type Java correspondant n le XXX de getXXX() est le nom du type Java
correspondant au type JDBC attendu

n chaque driver a des correspondances entre les types


SQL du SGBD et les types JDBC

n le programmeur est responsable du choix de ces


mthodes

SQLException gnre si mauvais choix


P. Itey - INRIA
Java et JDBC - page 43

08/01/2001

&RUUHVSRQGDQFH GHV W\SHV


Type JDBC CHAR, VARCHAR , LONGVARCHAR NUMERIC, DECIMAL BINARY, VARBINARY, LONGVARBINARY BIT INTEGER BIGINT REAL DOUBLE, FLOAT DATE TIME .
08/01/2001

Type Java String java.math.BigDecimal byte[] boolean int long float double java.sql.Date java.sql.Time ..
Java et JDBC - page 44

P. Itey - INRIA

&DV GHV YDOHXUV QXOOHV

Pour reprer les valeurs NULL de la base : n utiliser la mthode wasNull() de ResultSet

renvoie true si lon vient de lire un NULL, false sinon

n les mthodes getXXX() de ResultSet convertissent une


valeur NULL SQL en une valeur acceptable par le type dobjet demand :
les mthodes retournant un objet (getString(), getDate(),... ) retournent un "null " Java les mthodes numriques (getByte() , getInt() , etc) retournent "0" getBoolean() retourne " false "

08/01/2001

P. Itey - INRIA

Java et JDBC - page 45

)HUPHU OHV GLIIpUHQWV HVSDFHV

Pour terminer proprement un traitement, il faut fermer les diffrents espaces ouverts n sinon le garbage collector sen occupera mais moins
efficace

Chaque objet possde une mthode close() :

resultset.close(); statement.close(); connection.close();


08/01/2001

P. Itey - INRIA

Java et JDBC - page 46

$FFqV DX[ PpWDGRQQpHV

La mthode getMetaData() permet dobtenir des informations sur les types de donnes du
ResultSet n elle renvoie des ResultSetMetaData n on peut connatre entre autres :
le nombre de colonne : getColumnCount() le nom dune colonne : getColumnName(int col) le nom de la table : getTableName(int col) si un NULL SQL peut tre stock dans une colonne : isNullable()

08/01/2001

P. Itey - INRIA

Java et JDBC - page 47

ResultSetMetaData
ResultSet rs = stmt.executeQuery("SELECT * FROM emp"); ResultSetMetaData rsmd = rs.getMetatData(); int nbColonnes = rsmd.getColumnCount(); for(int i = 1; i <= nbColonnes; i++) { // colonnes numerotes partir de 1 (et non 0) String nomCol = rsmd.getColumnName(i); }

08/01/2001

P. Itey - INRIA

Java et JDBC - page 48

DatabaseMetaData

Pour rcuprer des informations sur la base de donnes elle-mme, utiliser la mthode getMetaData() de l objet Connection n dpend du SGBD avec lequel on travaille
n elle renvoie des DatabaseMetaData n on peut connatre entre autres :

les tables de la base : getTables() le nom de l utilisateur : getUserName() ...


P. Itey - INRIA
Java et JDBC - page 49

08/01/2001

5HTXrWHV SUpFRPSLOpHV

Lobjet PreparedStatement envoie une requte sans paramtres la base de donnes pour prcompilation et spcifiera le moment voulu la valeur des paramtres n plus rapide quun Statement classique
le SGBD n analyse quune seule fois la requte (recherche dune stratgie dexcution adquate) pour de nombreuses excutions dune mme requte SQL avec des paramtres variables

n tous les SGBD nacceptent pas les requtes prcompiles


08/01/2001

P. Itey - INRIA

Java et JDBC - page 50

&UpDWLRQ G XQH UHTXrWH SUp FRPSLOpH

La mthode prepareStatement() de lobjet Connection cre un PreparedStatement :

PreparedStatement ps = c.prepareStatement("SELECT * FROM Clients " + "WHERE name = ? ");

n les arguments dynamiques sont spcifis par un "?" n ils sont ensuite positionns par les mthodes setInt() ,
setString() , setDate() , de PreparedStatement

n setNull() positionne le paramtre NULL (SQL)

n ces mthodes ncessitent 2 arguments :


le premier (int) indique le numro relatif de largument dans la requte le second indique la valeur positionner

08/01/2001

P. Itey - INRIA

Java et JDBC - page 51

([pFXWLRQ GXQH UHTXrWH SUp FRPSLOpH


PreparedStatement ps = c.prepareStatement( "UPDATE emp SET sal = ? WHERE name = ?"); int count; for(int i = 0; i < 10; i++) { ps.setFloat(1, salary[i]); ps.setString(2, name[i]); count = ps.executeUpdate(); }

08/01/2001

P. Itey - INRIA

Java et JDBC - page 52

9DOLGDWLRQ GH WUDQVDFWLRQ  &RPPLW


n Utiliser pour valider tout un groupe de transactions la
fois n Par dfaut : mode auto-commit

un "commit " est effectu automatiquement aprs chaque ordre SQL

n Pour repasser en mode manuel :


connexion.setAutoCommit(false);

n Lapplication doit alors envoyer la base un "commit"


pour rendre permanent tous les changements occasionns par la transaction :
connexion.commit();
08/01/2001

P. Itey - INRIA

Java et JDBC - page 53

$QQXODWLRQ GH WUDQVDFWLRQ  5ROOEDFN

De mme, pour annuler une transaction (ensemble de requtes SQL), lapplication peut envoyer la base un "rollback" par :
connexion.rollback();

n restauration de ltat de la base aprs le dernier


"commit"

08/01/2001

P. Itey - INRIA

Java et JDBC - page 54

([FHSWLRQV

SQLException est leve ds quune connexion ou un ordre SQL ne se passe pas correctement n la mthode getMessage() donne le message en clair
de lerreur

n renvoie aussi des informations spcifiques au


gestionnaire de la base comme :

SQLState code derreur fabricant

SQLWarning : avertissements SQL


P. Itey - INRIA
Java et JDBC - page 55

08/01/2001

-'%& HW 2UDFOH 
ORACLE_HOME = CLASSPATH=$CLASSPATH:$ORACLE_HOME/jdbc/lib/classes111.zip import java.sql.*; Class.forName("oracle.jdbc.driver.OracleDriver"); static final url = "jdbc:oracle:thin:@erato:1521:MINFO"; conn = DiverManager.getConnection(url, "itey", "mdpitey");

08/01/2001

P. Itey - INRIA

Java et JDBC - page 56

-'%& HW OHV PpFDQLVPHV GH VpFXULWp -DYD

Rappel : avec le JDK 1.0, une applet ne peut pas charger un driver natif (I ou II) pour accder une base de donnes distante n pour y remdier: drivers III ou IV et modle 3-tiers
n

Avec le JDK 1.1 : API de scurit n une applet peut, sous certaines conditions de
signature, accder un driver natif n et se connecter directement au serveur du SGBD

dans Netscape : capabilities classes


P. Itey - INRIA
Java et JDBC - page 57

08/01/2001

&RQFOXVLRQV 

Conclusions sur l API JDBC : n jeu unique dinterfaces pour un accs homogne

cache au maximum les diverses syntaxes SQL des SGBD

n API de bas niveau

ncessaire de connatre la syntaxe SQL

n le principe des drivers permet au dveloppeur dignorer


les dtails techniques lis aux diffrents moyens daccs aux BDs

une convention de nommage base sur les URL est utilise pour localiser le bon pilote et lui passer des informations
P. Itey - INRIA
Java et JDBC - page 58

08/01/2001

&RQFOXVLRQV 
n Tous les grands diteurs de bases de donnes et les
socits spcialises proposent un driver JDBC pour leurs produits

n Le succs de JDBC se voit par le nombre croissant


doutils de dveloppement graphiques permettant le dveloppement RAD dapplications client-serveur en Java

08/01/2001

P. Itey - INRIA

Java et JDBC - page 59

/HV GHUQLqUHV YHUVLRQV GH -'%&

Actuellement : n API JDBC 2.0 (inclus dans la version Java 2)


software : g http://java.sun.com/products/jdbc/jdbcse2.html documentation : g http://java.sun.com/products/jdbc/ sur les drivers JDBC : g http://java.sun.com/products/jdbc/jdbc.drivers.html

08/01/2001

P. Itey - INRIA

Java et JDBC - page 60

(YROXWLRQV SUpYXHV

3 volutions importantes prvues : n spcification de J/SQL par Oracle, Tandem, IBM et


JavaSoft destine :

faciliter laccs aux schmas des BDs, augmenter les performances et amliorer les dveloppements

n spcification de Java Binding ODMG (accs aux BDs


objets) par l OMG (Object Management Group) n JavaSoft prpare Jblend :

ensemble doutils pour effectuer un mapping bidirectionnel: entre objet et base relationnelle
P. Itey - INRIA

08/01/2001

Java et JDBC - page 61

:(% HW EDVHV GH GRQQpHV

Architecture ncessaire pour diffuser des informations sur le WEB : n ct client :

un simple navigateur WEB

n ct serveur :
un serveur WEB (http) g pour grer les connexions extrieures un serveur de bases de donnes (SGBD) g pour grer le systme dinformation et une API (CGI, scripting, Applets ou Servlets) g pour relier la base de donnes au WEB

08/01/2001

P. Itey - INRIA

Java et JDBC - page 62

&*,
n Principe :

un processus par requte est lanc sur le serveur renvoie du HTML gratuit peut tre crit dans nimporte quel langage

n Avantages :

n Inconvnients :
lent difficile dvelopper appels natifs des procdures du SGBD

08/01/2001

P. Itey - INRIA

Java et JDBC - page 63

6FULSWLQJ
n Principe :

script propre au constructeur intgr dans des pages HTML renvoie du HTML clair facile dvelopper

n Avantages :

n Inconvnients :
payant (cher) li un constructeur langage propre au SGBD et au serveur WEB

08/01/2001

P. Itey - INRIA

Java et JDBC - page 64

$SSOHWV
n Principe :

code Java excut sur le poste client entirement dvelopp en Java (AWT ou Swing)

n Avantages :
gratuit, pas de code HTML permet de grer des applications complexes portable (JDBC) indpendant des plate-formes matrielles et logicielles

n Inconvnients :

lent charger les serveurs WEB et SGBD doivent tre sur la mme machine
P. Itey - INRIA
Java et JDBC - page 65

08/01/2001

6HUYOHWV
n Principe :

code Java excut sur le serveur renvoie du HTML

n Avantages :
gratuit portable (JDBC) indpendant des plate-formes matrielles et logicielles rapide facile dvelopper

n Inconvnients :

limit HTML
P. Itey - INRIA
Java et JDBC - page 66

08/01/2001

/DYHQLU VXU OH :(%


n Les CGI sont dpasss

trop lents trop difficile de conserver les donnes d une requte l autre

n Le Scripting est entirement li un serveur WEB et


un SGBD

La solution Java est la solution davenir avec n les applets

pour les applications clientes gourmandes en temps de calcul pour la gnration dynamique de pages HTML
P. Itey - INRIA
Java et JDBC - page 67

n et les servlets

08/01/2001

/HV 7UDYDX[ GLULJpV

KWWSZZZLQULDIUDFDFLDSHUVRQQHOLWH\)UDQFDLV&RXUV7GV FRXUV  KWWSZZZLQULDIUDFDFLDSHUVRQQHOLWH\)UDQFDLV&RXUV

/HV 7'V

TD numro 0 : n une application Java autonome accdant une base


de donnes distante sur le rseau : architecture 2-tiers

08/01/2001

P. Itey - INRIA

Java et JDBC - page 69

7' 1XPpUR 
Client (PC/NT)
' % &

Serveur (Station/Unix)
6*%' 2UDFOH

$SSOLFDWLRQ -$9$

08/01/2001

P. Itey - INRIA

Java et JDBC - page 70

Vous aimerez peut-être aussi