Java et les bases de données



Documents pareils
Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Java DataBaseConnectivity

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

Module BD et sites WEB

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

Accès aux bases de données

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

Programmation d application Bases de données avec Java

Bases de données cours 1

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)

JDBC le langage Java XVI-1 JMF

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

Architectures web/bases de données

OpenPaaS Le réseau social d'entreprise

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

TP Programmation Java / JDBC / Oracle

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

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

Présentation du module Base de données spatio-temporelles

Mise en œuvre des serveurs d application

Architectures d'intégration de données

Optimisations des SGBDR. Étude de cas : MySQL

FileMaker 10. Guide ODBC et JDBC

GPC Computer Science

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

Compte Rendu d intégration d application

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

C-JDBC. Emmanuel Cecchet INRIA, Projet Sardes.

Bases de données avancées Introduction

Implémentation des SGBD

FileMaker 13. Guide ODBC et JDBC

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Les bases de données

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

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

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Introduction aux Bases de Données Relationnelles Conclusion - 1

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

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

Module BDR Master d Informatique (SAR)

Cours Bases de données

Systèmes répartis. Fabrice Rossi Université Paris-IX Dauphine. Systèmes répartis p.1/49

Vulgarisation Java EE Java EE, c est quoi?

Bases de Données Avancées

Le modèle client-serveur

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

Systèmes d informations nouvelles générations. Répartition, Parallèlisation, hétérogénéité dans les SGBD. Exemple d application d un futur proche

La technologie Java Card TM

Application Web et J2EE

INTRODUCTION AUX SGBD/R LUW

SQL Historique

JES Report Broker. Campus Technologies. SAE de CHALEMBERT 1 Rue Blaise PASCAL JAUNAY-CLAN info@campustec.

Les bases de l optimisation SQL avec DB2 for i

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

LES ACCES ODBC AVEC LE SYSTEME SAS

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

2 Serveurs OLAP et introduction au Data Mining

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

TP Bases de données réparties

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

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

Développement des Systèmes d Information

Session S12 Les bases de l optimisation SQL avec DB2 for i

Nouvelles Plateformes Technologiques

Chapitre Introduction : Notion de Bases de données. 2. Définition : BD Répartie. 3. Architecture des SGBD. 4. Conception des bases réparties

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

CHAPITRE 1 ARCHITECTURE

Plan du cours. Historique du langage Nouveautés de Java 7

Open Source Job Scheduler. Installation(s)

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

FileMaker Server 14. Guide de démarrage

Bases de données Cours 1 : Généralités sur les bases de données

Plan. Accès aux données dans le framework.net. ADO.NET Entity Framework LINQ ADO.NET ADO.NET. 1. ADO.NET Mode connecté Mode non connecté

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

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Introduction aux bases de données

10. Base de données et Web. OlivierCuré

Gestion de stock pour un magasin

Java pour le Web. Cours Java - F. Michel

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

LES SOLUTIONS DE CONNECTIVITÉ 4D

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

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

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

Configurer la supervision pour une base MS SQL Server Viadéis Services

Intranet et les Bases de Données

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

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

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

Programmation en Java IUT GEII (MC-II1) 1

IFT3030 Base de données. Chapitre 1 Introduction

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

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

Chapitre I Notions de base et outils de travail

«Clustering» et «Load balancing» avec Zope et ZEO

CORBA. (Common Request Broker Architecture)

Introduction à ORACLE WAREHOUSE BUILDER Cédric du Mouza

Transcription:

Michel Bonjour http://cuiwww.unige.ch/~bonjour CENTRE UNIVERSITAIRE D INFORMATIQUE UNIVERSITE DE GENEVE

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 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 1 Java source: J. Guyot M. Bonjour, CUI-Université de Genève 3

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

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

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

Architecture de JDBC Application Java JDBC API JDBC Manager JDBC Driver API JDBC-Net Driver Driver X JDBC-ODBC Bridge Driver ODBC protocole ouvert protocole X protocole Y JavaSoft Inc. M. Bonjour, CUI-Université de Genève 7

Interfaces de JDBC (1) JavaSoft Inc. M. Bonjour, CUI-Université de Genève 8

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, CUI-Université de Genève 9

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

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

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); M. Bonjour, CUI-Université de Genève 12

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); M. Bonjour, CUI-Université de Genève 13

Client-serveur: Architecture classique client épais serveur GUI xy Serveur xy Net xy TCP/IP Net xy TCP/IP code xy xy: Oracle, Sybase, etc. M. Bonjour, CUI-Université de Genève 14

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

Client-serveur: Architecture avec Java client fin serveur Browser Serveur xy Java VM TCP/IP Request Broker TCP/IP code Java xy: Oracle, Sybase, etc. M. Bonjour, CUI-Université de Genève 16

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

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

JRB: Java Relational Binding O 2 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

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

Cycle de développement Car.class config O 2 Technology jrb_import write read Car.import ajouter Car.java JRB runtime cache javac update access Appl... Java Car.class M. Bonjour, CUI-Université de Genève 21

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

Exemple de création/écriture Person john = new Person("John", 36); Person mary = new Person("Mary", 32); Person bob = new Person ("Bob", 6); john.spouse = mary; // references mary.spouse = john; john.children[0] = bob; // 1 child mary.children[0] = bob; Database database = new Database(Database.SYBASE,"java_store", "mb","mb_password"); database.connect(); // open a connection to the database server database.open("base1"); // open the database ìbase1î Transaction transaction = new Transaction(); transaction.begin() ; // start a new transaction john.update(); // indicates to the system that these objects must be written in mary.update(); // the database at commit time bob.update(); transaction.commit(); // commit the transaction database.close(); // close the database database.disconnect(); M. Bonjour, CUI-Université de Genève 23

Exemple d accès Database database = new Database(Databse.SYBASE, "java_store", "mb", "mb_password"); database.connect(); // open a connection to the database server database.open("base1"); // find John in the database Person john = (Person) Extent.all("Person").where("name = 'John'").element(); Person mary = (Person) john.spouse.access(); // load his spouse in memory Transaction transaction = new Transaction(); transaction.begin() ; // start a new transaction Person bob = (Person) Database.access(john.children,0); // load the 1st child in memory bob.age = 7; // change his age bob.update(); // mark it to be written to the database at commit time transaction.commit(); // commit the transaction database.close(); // close the database database.disconnect(); M. Bonjour, CUI-Université de Genève 24

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 O 2, support de l évolution M. Bonjour, CUI-Université de Genève 25