0% ont trouvé ce document utile (0 vote)
276 vues25 pages

Java BD

Transféré par

Hicham Omar
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
276 vues25 pages

Java BD

Transféré par

Hicham Omar
Copyright
© Attribution Non-Commercial (BY-NC)
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Java et les bases de données

Michel Bonjour

[Link]

CENTRE UNIVERSITAIRE D’INFORMATIQUE


UNIVERSITE DE GENEVE
Java et les bases de données

Plan
• Introduction
• JDBC: API SQL pour Java
- JDBC, Java, ODBC, SQL
- Architecture, interfaces, exemples
• Java et le client-serveur
- Architecture “classique”
- Architecture revisitée: Java côté client, Java côté serveur
• Persistence d’objets Java
- Principes
- Exemple de produit: JRB

©M. Bonjour, CUI-Université de Genève 2


Java et les bases de données

Java et les BD: Quel intérêt ?


• Idem que pour les applications Internet (1)
- Portabilité, distribution, accès au réseau, GUI
• Evolution: statique/dynamique (2)
- Problèmes: transactions, pré-traitements, etc.
• Le client-serveur revisité (3)
- Client “fin”, code mobile
Bases de données

2 3

WWW Java
1 source: J. Guyot

©M. Bonjour, CUI-Université de Genève 3


Java et les bases de données

JDBC: Introduction
• Quoi ?
- API Java pour interagir avec des BD relationnelles
* exécuter des requêtes SQL
* récupèrer les résultats
- Tentative de standardiser l’accès aux BD (futur: ODMG)
- Spécification basée sur X/Open SQL CLI (comme ODBC)

• Pourquoi ?
- Réponse de SUN à la pression des développeurs
- Java est idéal pour les applications BD
- Alternative aux solutions propriétaires
©M. Bonjour, CUI-Université de Genève 4
Java et les bases de données

JDBC et ...
• Java: JDBC c’est du Java !
- Interfaces, classes, multi-threading
- Applets, applications, utilise le Security Manager
• ODBC: JDBC est “au-dessus” de ODBC
- Arguments pour ODBC:
* existe, implanté, fonctionne
* accepté, diffusé
- Arguments contre ODBC
* très lié au langage C (void *, pointeurs)
* compliqué, basé sur des paramètres locaux

©M. Bonjour, CUI-Université de Genève 5


Java et les bases de données

JDBC et SQL
• Support de SQL-2 Entry Level
- SQL dynamique, principaux types SQL
- Transactions, curseurs simples
- Méta-données
• Mécanismes d’extension
- Syntaxe inspirée d’ODBC: { mot-clé ... paramètres ... }
- Fonctions ODBC de conversion, mathématiques, etc.
• Long terme
- Support de SQL-2 complet

©M. Bonjour, CUI-Université de Genève 6


Java et les bases de données

Architecture de JDBC
Application Java
JDBC API

JDBC Manager

JDBC Driver API


JDBC-Net JDBC-ODBC
Driver X
Driver Bridge
Driver ODBC

protocole ouvert protocole X


protocole Y

©JavaSoft Inc.

©M. Bonjour, CUI-Université de Genève 7


Java et les bases de données

Interfaces de JDBC (1)

©JavaSoft Inc.

©M. Bonjour, CUI-Université de Genève 8


Java et les bases de données

Interfaces de JDBC (2)


• DriverManager
- Gère la liste des Drivers chargés
- Crée les connexions TCP (Connection)
- ‘Mappe’ des URLs vers des connexions
• Connection
- Canal de communication TCP vers une BD
- Format d’URL: jdbc:odbc:[Link]/mabd
- Propriétés de la Connection: username, password
- Crée les Statements (requêtes SQL)
- Gère les transactions (au sens de SQL)

©M. Bonjour, CUI-Université de Genève 9


Java et les bases de données

Interfaces de JDBC (3)


• Statement
- Gère les requêtes SQL simples
- Sous-types:
* PreparedStatement: requêtes paramètrées (IN)
* CallableStatement: procédures stockées (OUT)
- Passage de paramètres:
* méthodes set...
* accès par l’index
- Crée les ResultSet

©M. Bonjour, CUI-Université de Genève 10


Java et les bases de données

Interfaces de JDBC (4)


• ResultSet
- Gère l’accès aux tuples d’un résultat (SELECT)
- Accès aux colonnes: par nom, par index
- Conversions de types entre SQL et Java
- Possibilité d’utiliser un stream pour récupérer les
données “brutes” (bytes, ASCII, Unicode)
- Gère des curseurs “simples”

©M. Bonjour, CUI-Université de Genève 11


Java et les bases de données

Exemple de SELECT

[Link] st = [Link]();
ResultSet r=[Link](“SELECT nom, age FROM T1”);
while ([Link]()) {
// imprime les éléments du tuple
String s = [Link](“nom”);
int i = [Link] (“age”); // ou bien [Link] (2)

[Link] (“nom: “ + s + “ age: ” + i);


}

©M. Bonjour, CUI-Université de Genève 12


Java et les bases de données

Exemple de UPDATE

[Link] ps =
[Link](“UPDATE T1 SET cat=? WHERE age=?”);
[Link](1, “Ado”);
for (int i = 14; i < 19; i++) {
[Link] (2, i);
int nbTuples = [Link]();
[Link] (“age: “ + i + “ nb: ” + nbTuples);
}

©M. Bonjour, CUI-Université de Genève 13


Java et les bases de données

Client-serveur: Architecture “classique”


client “épais” serveur

GUI xy Serveur xy

Net xy Net xy
code xy

TCP/IP TCP/IP

xy: Oracle, Sybase, etc.

©M. Bonjour, CUI-Université de Genève 14


Java et les bases de données

Limites du client-serveur “classique”


• Côté client:
- GUI: “moche”, non-standard, runtime
- Net: protocole fermé, mais: sécurité, performances
- “Epaisseur”: installation, configuration “câblée”
- Développement: langage “client”, peu portable
• Côté serveur
- Net: protocole fermé, mais: répartition, homogénéité
- Développement: langage “serveur”, pas portable

©M. Bonjour, CUI-Université de Genève 15


Java et les bases de données

Client-serveur: Architecture “avec Java”


client “fin” serveur

Browser Serveur xy

Java VM Request Broker


code Java

TCP/IP TCP/IP

xy: Oracle, Sybase, etc.

©M. Bonjour, CUI-Université de Genève 16


Java et les bases de données

Avantages du client-serveur “avec Java”


• Côté client:
- Browser: interface uniforme, bookmarks, plug-ins
- Java VM: sécurité
- “Finesse”: TOUT se télécharge, pas de config locale
- Développement: Java, HTML (gare à JavaScript !)
• Côté serveur
- Request Broker: centralise les appels aux services
- Développement: Java
* local: code exécuté par le serveur
* mobile: code stocké dans la BD et envoyé au client

©M. Bonjour, CUI-Université de Genève 17


Java et les bases de données

Persistence d’objets Java: Principes


• Stocker des objets Java dans un SGBD
- Performance, sécurité, concurrence, etc.
• Développement
- Création des classes Java
- Génération +/- automatique:
* Java: méthodes (binding)
* SGBD: tables
• Différence de paradigme: OO vs Relationnel
- Java: classes, types simples1, références, arrays
- Relationnel: tables, types simples2, jointures

©M. Bonjour, CUI-Université de Genève 18


Java et les bases de données

JRB: Java Relational Binding


O2 Technology, Oct. 1996

Stockage d’objets Java dans un SGBD relationnel


• API + outils
• Code Java
- Voit un système persistant
- Fait appel à l’API JRB
• Runtime
- Gère un cache d’objets
• Communication avec le SGBD
- Interface compatible JDBC
©M. Bonjour, CUI-Université de Genève 19
Java et les bases de données

Etapes du développement
• Programmation + configuration
- Ecriture des classes Java, compilation
- Choix des classes/variables à stocker
• Importation des classes
- Génération de méthodes Java (access, update)
- Création de la BD (tables, clés, index)
• Mise à jour du code source
- Inclusion des méthodes générées
- Ecriture des méthodes d’accès ‘profond’
• Compilation, etc.

©M. Bonjour, CUI-Université de Genève 20


Java et les bases de données

Cycle de développement
© O2 Technology
[Link] config

jrb_import

ajouter
[Link] [Link]
write read

JRB runtime javac


cache

update access

Appl... Java [Link]

©M. Bonjour, CUI-Université de Genève 21


Java et les bases de données

Gestion des objets


• Création d’un objet
- Méthode new() habituelle
• Ecriture d’un objet
- Invocation de update() ou de VOTRE deepUdate()
• Lecture d’un objet
- Invocation de access() ou de VOTRE deepAccess()
- A partir de l’extension de la classe (~ curseur SQL)
- A l’aide d’un prédicat de recherche
- En suivant un lien depuis un autre objet stocké

©M. Bonjour, CUI-Université de Genève 22


Java et les bases de données

Exemple de création/écriture
Person john = new Person("John", 36);
Person mary = new Person("Mary", 32);
Person bob = new Person ("Bob", 6);

[Link] = mary; // references


[Link] = john;

[Link][0] = bob; // 1 child


[Link][0] = bob;

Database database = new Database([Link],"java_store", "mb","mb_password");

[Link](); // open a connection to the database server


[Link]("base1"); // open the database ìbase1î

Transaction transaction = new Transaction();


[Link]() ; // start a new transaction

[Link](); // indicates to the system that these objects must be written in


[Link](); // the database at commit time
[Link]();

[Link](); // commit the transaction


[Link](); // close the database
[Link]();

©M. Bonjour, CUI-Université de Genève 23


Java et les bases de données

Exemple d’accès
Database database = new Database([Link], "java_store", "mb", "mb_password");
[Link](); // open a connection to the database server

[Link]("base1");

// find John in the database

Person john = (Person) [Link]("Person").where("name = 'John'").element();

Person mary = (Person) [Link](); // load his spouse in memory

Transaction transaction = new Transaction();


[Link]() ; // start a new transaction

Person bob = (Person) [Link]([Link],0); // load the 1st child in memory

[Link] = 7; // change his age


[Link](); // mark it to be written to the database at commit time

[Link](); // commit the transaction

[Link](); // close the database


[Link]();

©M. Bonjour, CUI-Université de Genève 24


Java et les bases de données

Conclusion
• Avantages
- Optimisation: utilisation des possibilités du SGBD
- Transparence: choix des classes à stocker, appel à l’API
- Notion de transaction
• Inconvénients, limites
- Processus ‘batch’
- Ecriture des méthodes deep...()
- Support limité de l’évolution des classes (ajout variable)
• Avenir
- Stockage dans O2, support de l’évolution

©M. Bonjour, CUI-Université de Genève 25

Vous aimerez peut-être aussi