Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige.



Documents pareils
Java et les bases de données

Java DataBaseConnectivity

Introduction à JDBC. Accès aux bases de données en Java

Programmation d application Bases de données avec Java

Accès aux bases de données

JDBC le langage Java XVI-1 JMF

TP Programmation Java / JDBC / Oracle

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Module BD et sites WEB

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite

Panorama des Bases de Données

OpenPaaS Le réseau social d'entreprise

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Architectures web/bases de données

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

IFT3030 Base de données. Chapitre 2 Architecture d une base de données

FileMaker 10. Guide ODBC et JDBC

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Compte Rendu d intégration d application

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Bases de Données. Stella MARC-ZWECKER. Maître de conférences Dpt. Informatique - UdS

Dialogue avec la base de données

Notes de cours : bases de données distribuées et repliquées

Implémentation des SGBD

Logiciel de gestion de caisse et d ardoises

Bases de données cours 1

Gestion de stock pour un magasin

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

GPC Computer Science

Introduction aux Bases de Données Relationnelles Conclusion - 1

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

FileMaker 13. Guide ODBC et JDBC

La technologie Java Card TM

Présentation du PL/SQL

Panorama des Bases de Données

Bases de données avancées Introduction

Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Mise en œuvre des serveurs d application

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

III. Contexte. Objectifs. Philippe HOUE, Ecole des Mines de Nantes

Qui est Sybase ianywhere?

TP Contraintes - Triggers

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

2 Chapitre 1 Introduction

Intranet et les Bases de Données

Auto-évaluation Aperçu de l architecture Java EE

Programmer en JAVA. par Tama

Bases de données et sites WEB

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

IFT3030 Base de données. Chapitre 1 Introduction

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Java pour le Web. Cours Java - F. Michel

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

JDBC JDBC. Java DataBase Connectivity

LES SOLUTIONS DE CONNECTIVITÉ 4D

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données

Mysql. Les requêtes préparées Prepared statements

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Application web de gestion de comptes en banques

SQL Historique

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Initiation aux bases de données (SGBD) Walter RUDAMETKIN

PROCEDURE D'INSTALLATION OPENREPORTS

NatRcs Ce document présente la liste des nouvelles fonctionnalités de la 7.00, disponible à partir de Mars 2011.

Hébergement de sites Web

Programmation en Java IUT GEII (MC-II1) 1

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

NatStar V8.00. Ce document présente la liste des nouvelles fonctionnalités de la 8.00, disponible à partir de septembre 2013.

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

et Groupe Eyrolles, 2006, ISBN :

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

FileMaker 13. Guide de référence SQL

Le modèle client-serveur

BD réparties. Bases de Données Réparties. SGBD réparti. Paramètres à considérer

INTRODUCTION AUX BASES de DONNEES

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Web Tier : déploiement de servlets

Urbanisme du Système d Information et EAI

La base de données XML exist. A. Belaïd

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

RTDS G3. Emmanuel Gaudin

CORBA. (Common Request Broker Architecture)

Le langage SQL (première partie) c Olivier Caron

Java Licence Professionnelle CISII,

Bases de Données relationnelles et leurs systèmes de Gestion

Cours: Administration d'une Base de Données

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Recommandations techniques

Transcription:

: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour

Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL - Interfaces, exemples - Types de drivers JDBC, architectures SQLJ: code SQL embarqué dans Java - Introduction - Développement en SQLJ - Concepts, exemples - Traduction SQLJ - JDBC M. Bonjour, 1997 2

JDBC: Introduction Quoi? - API Java pour interagir avec des BD relationnelles * exécuter des requêtes SQL (statiques ou dynamiques) * 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, 1997 3

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, 1997 4

JDBC et SQL Support de SQL-2 Entry Level - SQL dynamique, principaux types SQL - Transactions, curseurs simples - Méta-données (accès au dictionnaire de la BD) 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, 1997 5

Architecture de JDBC Code Java JDBC API JDBC Manager JDBC Driver API Driver X Driver Y JDBC-ODBC Bridge Driver ODBC protocole X protocole Y protocole Z : core Java : JavaSoft (gratuit) : vendeur SGBD BD X BD Y BD Z JavaSoft Inc. M. Bonjour, 1997 6

Interfaces de JDBC (1) JavaSoft Inc. M. Bonjour, 1997 7

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) M. Bonjour, 1997 8

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, 1997 9

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, 1997 10

Exemple de SELECT Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@host:port:sid","user","passwd"); 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 lenom = r.getstring( nom ); int lage = r.getint ( age ); // ou bien r.getint (2) } System.out.println ( nom: + lenom + age: + lage); M. Bonjour, 1997 11

Exemple de UPDATE afficher le nb de personnes ayant 14,15..18 ans et modifier leur catégorie (Ado) 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); } M. Bonjour, 1997 12

Driver JDBC Type 1 Java binaire binaire JDBC-ODBC Bridge Driver ODBC BD X Code client BD X protocole BD X BD X JDBC-ODBC Bridge Client épais - ODBC + Driver ODBC du SGBD - Librairies client du SGBD Application Java, mais pas applet - Fichiers de config de ODBC - Binaire non portable Utilisation - Test, 1ère implantation de JDBC - Middle-tier (Accès à pls. BD) M. Bonjour, 1997 13

Driver JDBC Type 2 Java binaire Driver JDBC BD X Code client BD X protocole BD X BD X Native-API Partly-Java Driver Client épais - Driver traduit les appels JDBC en appels à l API du SGBD - Librairies client du SGBD Avantage - Protocole BD X optimisé Utilisation - Applications Java 2-tier - Middle-tier (Accès efficace) M. Bonjour, 1997 14

Java BD X Driver protocole M protocole M Serveur M API X API Y BD Y Driver JDBC Type 3 Net Protocol All-Java Driver Client fin - Driver traduit les appels JDBC en appels au middleware Applets ou applications Java - Driver chargé avec le code Java Utilisation - Nécessite un middle-tier (accès BD) - Solution tout Java pour architecture 3-tier M. Bonjour, 1997 15

Java Driver JDBC BD X sockets Java protocole BD X light BD X Driver JDBC Type 4 Native Protocol All-Java Driver Client fin - Driver traduit les appels JDBC en appels à l API du SGBD - Driver crée des sockets pour émuler le protocole BD X light Avantage / Désavantage - Tout Java = portable - Tout Java = charger Driver (~300K) Utilisation - Applets en architecture 2-tier M. Bonjour, 1997 16

Applet et Driver Type 4: exemple Client Browser Web HTTP Serveur Serveur Web Applet Java HTML Java Driver JDBC Thin Oracle TCP/IP, SQL*Net Oracle Source: M.P. Mesaros, Oracle M. Bonjour, 1997 17

JDBC: avantages - désavantages Avantages - Fait partie de core Java - API complet pour SQL dynamique - Nombreuses fonctions de conversions - Support des types BLOB : streams Java - Multiples drivers: configurations 2-tier, 3-tier, etc. Désavantages - Pas de vérification de type vis à vis de la BD - Ecriture fastidieuse, code peu lisible - Résultats ne sont pas des objets Java M. Bonjour, 1997 18

SQLJ: Introduction SQL embarqué dans Java (embedded SQL) Proposition de norme par IBM, Oracle, Sybase, Tandem Principe - Clauses #sql dans le code source Java - Etape de pré-compilation avec accès au schéma de la BD * vérification, optimisation du SQL * génération de classes Java (connexions, résultats) * génération du code JDBC détaillé Pré-processeur est écrit en Java Complémentaire à JDBC M. Bonjour, 1997 19

Développement en SQLJ Code source Java + SQLJ.sqlj Pré-compilateur SQLJ Code source Java + JDBC.java Compilateur Java BD Executable Java.class M. Bonjour, 1997 20

Buts de SQLJ Faciliter l accès aux BDs depuis Java - SQL statique (requêtes formées avant l exécution) - Code simplifié, plus concis Vérifier le code SQL avant l exécution - Syntaxe des ordres SQL - Compatibilité des types Java et SQL - Conformité avec le schéma de la BD (option) Créer du code mobile : exécution sur chaque tier Supporter la composition (résultats sont des objets) M. Bonjour, 1997 21

Principaux concepts de SQLJ Clauses SQLJ: expressions SQL #sql { UPDATE EMP SET SAL = 9999 WHERE DEPT = :d } ; Variables hôtes : variables Java utilisées dans des clauses String d = "ventes" ; Connection Context: paramètres de connexion à une BD (ex: utilisateur, session, transaction) int maxi; #sql context bdparis ; #sql [bdparis] (SELECT MAX(SAL) INTO :maxi FROM EMP); Itérateurs: encapsulation des résultats de requêtes M. Bonjour, 1997 22

Itérateurs en SQLJ transformer les résultats de requêtes en objets Java A chaque format de résultat on associe un itérateur #sql iterator NomSalaire (String nom, int salaire); A chaque requête on associe une instance d itérateur NomSalaire salventes; // salaires du dépt. ventes #sql salventes = { SELECT ENAME, SAL FROM EMP WHERE... }; Une fois la requête exécutée, on accède aux méthodes de cet objet itérateur while (salventes.next()) { System.out.println("Nom: " + salventes.nom() + "Salaire: " + salventes.salaire()); } M. Bonjour, 1997 23

Traduction SQLJ-JDBC Clauses SQLJ: traduites en JDBC - Accès aux variables hôtes - Conversion entre types SQL et Java Connection Context: traduites en Connections JDBC Itérateurs: traduits en classes Java - Génération des méthodes d accès aux colonnes - Génération de la méthode next() - Code Java d instanciation de l itérateur Vérifications de types M. Bonjour, 1997 24

Avantages de SQLJ Clauses de haut niveau, code lisible SQLJ c est du Java: portabilité, etc. Qualité du code: génération correcte, optimisation Vérifications avant l exécution (y compris avec la BD) Résultats (itérateurs) sont des objets, ils peuvent être échangés entre composants Java M. Bonjour, 1997 25

SQLJ: présent et futur Promoteurs leaders du marché Proposition de norme soumise à ANSI / ISO Implémentation de référence disponible (cf. Oracle) Langage d accès aux BD depuis chaque tier - Côté client: génération depuis IDE - Côté serveur: procédures stockées compilées pour la BD ex: futur langage natif d Oracle (comme PL/SQL) Versions visual de SQLJ dans les futurs IDE M. Bonjour, 1997 26