Cours java et les bases de données, tutoriel accès aux bases de données en Java document PDF.
• 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
Résumé sur 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
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
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
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
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:cuibd.unige.ch:9876/mabd
– Propriétés de la Connection: username, password
– Crée les Statements(requêtes SQL)
– Gère les transactions (au sens de SQL)
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
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”
Exemple de SELECT
java.sql.Statement st = conn.createStatement();
ResultSet r=st.executeQuery(“SELECT nom, age FROM T1”);
while (r.next()) {
// imprime les éléments du tuple
String s = r.getString(“nom”);
int i = r.getInt (“age”); // ou bien r.getInt (2)
System.out.println (“nom: “ + s + “ age: ” + i);
}
Exemple de UPDATE
java.sql.PreparedStatement ps =
conn.createStatement(“UPDATE T1 SET cat=? WHERE age=?”);
ps.setString(1, “Ado”);
for (int i = 14; i < 19; i++) {
ps.setInt (2, i);
int nbTuples = ps.executeUpdate();
System.out.println (“age: “ + i + “ nb: ” + nbTuples);
}
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
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
………
Cours java et les bases de données (182 KO) (Cours PDF)