Dialogue avec la base de données
|
|
|
- Marie-Rose Faubert
- il y a 10 ans
- Total affichages :
Transcription
1 Dialogue avec la base de données 3. Manipulation des données avec un langage hôte 1
2 Références Filière Bachelor of Science en informatique de gestion Domaine Technologies informatiques Module 633 Architectures distribuées Unité d enseignement Applications réseaux et services applicatifs Dialogue avec la base de données 2
3 Objectifs Objectifs du module comprendre et mettre en œuvre les services applicatifs fondamentaux; développer, déployer et configurer des composants métiers sur un serveur d applications. Objectifs de l unité d enseignement «Dialogue avec la base de données» comprendre les différences entre l'architecture "serveur de fichiers" et "client/serveur"; maîtriser le principe du dialogue à sessions; comprendre la notion de concurrence; savoir manipuler des données à l'aide d'un langage hôte. 3
4 Découpage de l unité d enseignement 1. Architecture client/serveur 2. Transactions et verrous 3. Manipulation des données avec un langage hôte 4
5 Plan de la présentation SQL interactif<> SQL programmé Application Programming Interface pour bases de données Connexion aux bases de données avec un langage hôte Statements et curseurs Transactions et sessions Verrous Pools de connexions Améliorations et limites du JDBC 5
6 Quizz Quel est le lien «visible» entre l utilisateur et votre base de données? 6
7 Interface utilisateur Un utilisateur final n utilise pas SQL pour manipuler des données. L informaticien de gestion doit lui proposer une interface utilisateur adaptée à ses besoins. Pour se faire, il doit développer une interface utilisateur (IHM) à l aide d un langage de programmation. Java, C#, PHP, Oracle Apex 7
8 Exemple d interface utilisateur Proconcept ERP 8
9 Exemple d interface utilisateur Interface de FUTURA Université de Fribourg 9
10 Positionnement de l IHM dans une architecture logicielle IHM Utilisateur final Transactions Logique de présentation Logique applicative Logique métier Logique de persistance Services Programmes BD 10
11 Simplifions De quoi est constitué le code de l application?? Utilisateur final Code de l application BD 11
12 Qu allons-nous apprendre dans ce cours? Utilisateur final Code de l application Code de l application BD IHM Code métier Règles de navigation Accès à la base de données Requêtes SQL L accès à la BD et les requêtes SQL que vous développez sont du «SQL programmé». SQL programmé Permet le dialogue avec la base de données! 12
13 SQL programmé SQL programmé Intégrer le LMD dans un programme que vous développez. Mélange d instructions SQL, de boucles, de classes, etc Les requêtes doivent pouvoir gérer des variables. Le langage permettant d intégrer des instructions SQL se nomme «langage hôte» Utilisateur final Code de l application Langage hôte BD 13
14 SQL interactif SQL interactif Utiliser le SQL LMD sans l encapsuler dans un programme. Très intéressant pour les professionnels. Contrôle de la BD, interrogation du dico Utilisé depuis SQL*Plus (pour Oracle), SQLDeveloper, Toad SQL interactif BD Développeur 14
15 SQL programmé <> SQL interactif A vous de Avec spécifier paramètres les différences 5 minutes Peuvent puis restitution être construite en classe dynamiquement Ca se compile pas SQL Programmé Utilisé par les utilisateurs finaux Accès au curseur Prédéfinies et fixes (avec paramètre) Une méthode pour chaque requête SQL + langage hote CRUD SQL interactif Sans paramètre On voit les erreurs directement Utilisé par les développeurs Pas accès au curseur Liberté totale Requête résultat On ne peut connaitre «que» SQL LMD LDD LCD 15
16 Questions? 16
17 Plan de la présentation SQL interactif<> SQL programmé Application Programming Interface pour bases de données Connexion aux bases de données avec un langage hôte Statements et curseurs Transactions et sessions Verrous Pools de connexions Améliorations et limites du JDBC 17
18 Langage hôte et API Tous les langages «modernes» permettent d intégrer du SQL. Ils sont donc considérés comme langage hôte. Java, C#, PHP Les langages hôtes peuvent intégrer du SQL via différentes méthodes. L utilisation d API est l une des méthodes les plus utilisée. 18
19 Application Programming Interface Une API est un ensemble de classes et méthodes permettant de faire appel à des services de différents fournisseurs de façon unique. SAXAPI,DOM,JavaRMI,etc Il peut aussi s agir de méthodes publiées par un fournisseur pour interagir avec son système. Dans le cadre des BD, une API permet l utilisation de classes et méthodes pour simplifier et standardiser l appel à des sources de données. JDBC, ODBC, OLE DB 19
20 Application Programming Interface API JDBC, ODBC Source de données Client base de données SQLNet Protocol TCP 20
21 Des normes? Des accords? Le principe est toujours le même Un groupe d experts composés de fournisseurs et d indépendants se mettent d accord sur la signature des méthodes de leur API. Par exemple pour une API de BD: méthode connect() avec en paramètre le nom de la BD, méthode lanceselect() avec en paramètre le select Chaque fournisseur implémente ces méthodes (en respectant la signature) et fournit une implémentation de l API. Principe de l Interface en Java. 21
22 Quelques API pour accéder aux données ODBC Open Database Connectivity est une API permettant l accès et la manipulation de données d un très grand nombre de fournisseurs de bases de données. OLE DB OLE DB est une API permettant l accès à différentes sources de données. OLE DB n'est pas réservée aux sources de données relationnelles, mais est capable de traiter n'importe quel type de données indépendamment de leur format ou de leur méthode de stockage. OLEDBetODBCsonttrèsutilisésdanslemondeMicrosoftpouraccéderà des données (depuis VB, Excel ) JDBC API standard permettant l utilisation de bases de données depuis Java. 22
23 Avantages et inconvénients des APIs Niveau d abstraction Apporte une couche supplémentaire générique. Permet l accès à des services de différents fournisseurs de façon unique. Librairie supplémentaire à maîtriser pour le développeur. 23
24 Questions? 24
25 Eléments clés des étudiants 25
26 Travaux pratiques Série 3, exercices 1 et 2 26
27 Plan de la présentation SQL interactif<> SQL programmé Application Programming Interface pour bases de données JDBC Connexion aux bases de données avec un langage hôte Statements et curseurs Transactions et sessions Verrous Pools de connexions Améliorations et limites du JDBC 27
28 JCP et JSR Java Community Process (JCP)? The JCP is the mechanism for developing standard technical specifications for Java technology. Anyone can register for the site and participate in reviewing and providing feedback for the Java Specification Requests (JSRs), and anyone can sign up to become a JCP Member and then participate on the Expert Group of a JSR or even submit their own JSR Proposals Source: 28
29 JCP et JSR Java Specification Requests (JSR)? A JSR is a Java Specification Request. This is the document submitted to the PMO 1 by one or more members to propose the development of a new specification or significant revision to an existing specification. There are currently more than 90 Java technology specifications in development in the JCP program. Source: 1. The Program Management Office is the group within Sun designated to oversee the Java Community Process and manage the daily running of the program. 29
30 A quoi ça ressemble? JDBC évolue sur des JSR Et aussi à l aide du monde open source Voyons à quoi ça ressemble 30
31 JDBC introduction JDBC = Java DataBase Connectivity JDBC 1.0 (Java 1) JDBC 2.0 (J2SE 1.2) JDBC 3.0 (J2SE 1.4) JDBC 4.0 (Java SE 6) API standard permettant l utilisation de bases de données relationnelles depuis le monde Java. Il s agit d un ensemble de classes pouvant être utilisé depuis une application Java et permettant: la gestion de la connexion à la base de données; l utilisation de commandes SQL (DDL, DML, DCL); l exploitation des résultats de requêtes (données). 31
32 JDBC rend indépendant JDBC permet aux développeurs d utiliser des classes et méthodes indépendantes du SGBDR. JDBC utilise les drivers fournis par chaque constructeurs de bases de données. A vous, en tant que développeur, d utiliser les bons drivers et de les tester! Application java jdbc driver Oracle driver MySQL Oracle MySQL 32
33 Types de drivers Les drivers JDBC peuvent être de 4 types: pilotes de types 1; pilotes de types 2; pilotes de types 3; pilotes de types 4. 2 cas de figure : 33
34 Pilotes de type 1 Pilotes non autonomes Ils accèdent aux bases de données par une passerelle (via une autre technologie). «JDBC-ODBC» est le plus connu. Ce type de pilote convertit les ordres Java JDBC en ODBC valide. C est ODBC qui ensuite exécute les ordres. Ce pilote est livré en standard par Oracle (Sun) avec JDBC. Permet une connexion vers des bases de données ne disposant pas d un driver JDBC. Peu performant 34
35 Pilotes de type 2 Il s agit de pilotes natifs. Aussi nommé drivers «OCI» chez Oracle. classes12.jar (J2SE 1.2), ojdbc14.jar (J2SE 1.5, Java SE 5) et ojdbc6.jar (Java SE 6) contiennent tous un driver de type 2 pour se connecter à Oracle. Nécessite l installation du client Oracle sur la machine qui lance des commandes JDBC. Très bonnes performances Les commandes Java JDBC sont traduites en appels natifs vers le serveur de base de données. PDA-dernière mise à jour :
36 Pilotes de type 3 Il s agit de pilotes entièrement écrit en java convertissant les appels JDBC en un protocole indépendant du SGBD. Ce type de pilote fait appel à un serveur intermédiaire pour accéder le SGBD. A ce jour, je n en ai encore jamais rencontré. PDA-dernière mise à jour :
37 Pilotes de type 4 Pilotes écrits en java se connectant au SGBD. Aussi nommé drivers «thin» chez Oracle. classes12.jar (J2SE 1.2), ojdbc14.jar (J2SE 1.5, Java SE 5) et ojdbc6.jar (Java SE 6) contiennent tous un driver de type 4 pour se connecter à Oracle. Facile à installer. Indépendant à la plateforme. Performance identique aux drivers de type 2. Ne nécessite pas d installation d autres médiateurs. PDA-dernière mise à jour :
38 Jar et implémentation JDBC d Oracle Un JAR (Java ARchive) est un ensemble de classes, interfaces, fichiers Java compilés et compressés dans un fichier le.jar Chaque fournisseur de BD livre une librairie.jar contenant son implémentation JDBC pour sa base de données. Oracle fournit les jar classes12.jar, ojdbc14.jar, ojdbc6.jar PostgreSQL fournit les jar postgresql-9.0dev-800.jdbc4.jar IBM fournit db2jcc.jar pour DB2 Chaque fournisseur livre son implémentation de JDBC. 38
39 Compatibilité des drivers Oracle Version de Java Java 1.2 et 1.3 Java 1.4 Java 5 Java 6 Driver classes12.jar ojdbc14.jar ojdbc5.jar ojdbc6.jar 39
40 JDBC packages JDBC 4.0 est réparti dans 2 packages java.sql Package permettant l accès et la manipulation de données provenant d une base de données relationnelle via le langage hôte Java. javax.sql Package pour la partie serveur (utilisation de datasource d un serveur d applications par exemple). 40
41 java.sql java.sql contient des interfaces (au sens java). C est au fournisseur d implémenter ces interfaces. L implémentation doit être faite par les constructeurs de SGBDR. Certaines interfaces peuvent ne pas être implémentées mais seront disponibles tout de même En simplifiant, chez Oracle c est le jar ojdbc6.jar qui implémente les interfaces définies chez Sun. C est donc à Oracle de développer et livrer un driver JDBC. 41
42 Les interfaces et classes importantes de l API JDBC DriverManager Classe de base pour gérer les drivers JDBC et pour créer une connexion. Connection C est une session à la base de données. Cet objet (une fois instancié ) va permettre de gérer les transactions, de créer des «statements» 42
43 Les interfaces et classes importantes de l API JDBC Statement Interface à utiliser pour exécuter des instructions SQL statiques. Retourne le résultat produit dans un ResultSet. PreparedStatement Objet à utiliser pour exécuter des requêtes paramètrées. CallableStatement Objet à utiliser pour exéctuer des procédures stockées. 43
44 Les interfaces et classes importantes de l API JDBC ResultSet Un set de données resultant de la base de données. Notion de curseur (rappel PL/SQL ) ResultSetMetaData Cet classe peut être instanciée pour obtenir les métadonnées d un ResultSet. 44
45 Relation entre les interfaces JDBC DriverManager Connection Statement ResultSet 45
46 JDBC avantages Portabilité. Implémenté par tous les fournisseurs de BD. Relativement facile d utilisation. 46
47 JDBC désavantages 1/2 API de bas niveau. Pas de contrôle de SQL lors du développement. Erreur à l exécution Attention, certaines méthodes peuvent ne pas être implémentées par des fournisseurs 47
48 JDBC désavantages 2/2 Du code propriétaire à une base de données n est pas portable! «select connect by» sur Oracle «select * from employe, departement where employe.dep_id = departement.id» jointure non standard Problème paradigme Objet Relationnel. 48
49 Les bonnes façons de faire Il ne faut pas oublier les bonnes pratiques liées aux bases de données: gérer correctement les transactions ; ne pas oublier les verrous; 49
50 Questions? 50
51 Eléments clés des étudiants 51
52 Plan de la présentation SQL interactif<> SQL programmé Application Programming Interface pour bases de données JDBC Connexion aux bases de données avec un langage hôte Statements et curseurs Transactions et sessions Verrous Pools de connexions Améliorations et limites du JDBC 52
53 Schéma de principe de connexion Programme (langage hôte) Requêtes SQL Curseurs Connexion Base de données 53
54 Langage hôte utilisé dans ce cours Nous allons utiliser Java comme langage hôte pour illustrer les concepts de ce cours. JDBC sera l API à utiliser 54
55 Connexion à une base de données à l aide de JDBC DriverManager Classe de base pour gérer les drivers JDBC et pour créer une connexion. La méthode getconnection permet de retourner une instance de «Connection». Connection myconn = DriverManager.getConnection(url, user, password); Connection Connection est une interface Cet objet (une fois instancié ) va permettre de gérer les transactions, de créer des «statements» C est une session à la base de données. 55
56 Schéma de principe de connexion en Java Programme Java Requêtes SQL Curseurs Connection Base de données try{ Connection myconn = DriverManager.getConnection(url, user, password); catch(sqlexception sqle) { System.out.println("Erreur SQL:" + sqle); } 56
57 Utilisation du bloc try catch Veuillez pour l instant encapsuler vos instructions JDBC (connexion, appel de requêtes SQL, etc.) dans un bloc try catch. Nous traiterons plus en détail dans un prochain chapitre la gestion des exceptions en Java (lié aux BD) try{ Connection myconn = DriverManager.getConnection(url, user, password); catch(sqlexception sqle) { System.out.println("Erreur SQL:" + sqle); } 57
58 Quelques méthodes de l interface Connection createstatement Creates a Statement object for sending SQL statements to the database preparestatement(string) preparedstatement Creates a PreparedStatement object for sending parameterized SQL statements to the database 58
59 Quelques méthodes de l interface Connection getmetadata Retrieves a DatabaseMetaData object that contains metadata about the database to which this Connection object represents a connection close() Releases this Connection object's database and JDBC resources immediately instead of waiting for them to be automatically released 59
60 Quelques méthodes de l interface Connection setautocommit(boolean) Sets this connection's auto-commit mode to the given state commit() Makes all changes made since the previous commit/rollback permanent and releases any database locks currently held by this Connection object rollback() Undoes all changes made in the current transaction and releases any database locks currently held by this Connection object * Explications tirées de la document Java 60
61 Schéma de principe de connexion en Java Programme Java Statement PreparedSt atement Base de données Connection myconn.createstatement() myconn.preparedstatement() 61
62 Avant JDBC 4.0 JDBC 4.0 existe depuis Java SE 6.0. Avant cette version, il était nécessaire de charger le pilote JDBC avant d effectuer une connexion à la base de données. Class.forName() pour les pilotes de type 1. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); DriverManager.registerDriver() pour les pilotes de type 2, 3 et 4. DriverManager.registerDriver( new Oracle.jdbc.driver.OracleDriver()); 62
63 Fermeture des connexions JDBC Une connexion à la base de données via JDBC est fermée automatiquement via le garbage collector. Toutefois, afin de libérer les ressources dès que possible, il est nécessaire de fermer correctement les connexions. Connection myconn; myconn.close(); Afin de s assurer de la fermeture correcte des connexions, une bonne pratique consiste à fermer les connexions dans la partie finally des exceptions. 63
64 Utilisation de librairie Pour que votre programme Java puisse fonctionner, il est nécessaire qu il puisse référencer votre librairie JDBC. ojdbc6.jar par exemple avec Java SE 6. N oubliez donc pas de configurer votre EDI 64
65 Questions? 65
66 Eléments clés des étudiants 66
67 Travaux pratiques Série 3, exercice 3 67
68 Plan de la présentation SQL interactif<> SQL programmé Application Programming Interface pour bases de données Connexion aux bases de données avec un langage hôte Statements et curseurs Statements, PreparedStatement et CallableStatement Transactions et sessions Verrous Pools de connexions Améliorations et limites du JDBC 68
69 Schéma de principe de connexion en Java Rappel! Programme Java Statement PreparedSt atement Base de données Connection myconn.createstatement() myconn.preparedstatement() 69
70 Connexion et objets associés Lorsqu une connexion est établie entre votre programme Java et votre base de données, vous pouvez utiliser des objets permettant l exécution d instructions SQL: Statement PreparedStatement CallableStatement 70
71 Statement «The object used for executing a static SQL statement and returning the results it produces» L interface Statement fournit les méthodes nécessaires à la soumission d une instruction SQL statique. 71
72 Statement Création La création d un objet de type Statement s effectue à l aide de votre objet de type Connection par la méthode createstatement(). Connection myconn = DriverManager.getConnection(url, user, password); Statement stmt = myconn.createstatement(); 72
73 Statement Manipulation Une fois un objet de type Statement instancié, vous pouvez le manipuler. Voici les méthodes principales: Method summary ResultSet executequery(string sql) Executes the given SQL statement, which returns a single ResultSet object int void executeupdate(string sql) Executes the given SQL statement, which may be an INSERT, UPDATE, or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement close() Releases this Statement object's database and JDBC resources immediately instead of waiting for this to happen when it is automatically closed Source: 73
74 Statement Manipulation executeupdate ou executequery? Instruction SQL LDD SELECT LMD (autre que SELECT) LCD Méthode à utiliser executeupdate executequery executeupdate executeupdate 74
75 Statement Manipulation - exemple Statement stmt = myconn.createstatement(); ResultSet curseurjava = stmt.executequery("select id, nom, prenom FROM EMPLOYES "); 75
76 Statement Mais encore? En 2 fois! La soumission d une instruction SQL s effectue en 2 phases: Contrôle des tables et colonnes nécessaires (Metadata) Exécution de l instruction 76
77 PreparedStatement «An object that represents a precompiled SQL statement» L interface PreparedStatement hérite de Statement et la spécialise en fournissant les méthodes nécessaires à la soumission d une instruction SQL dynamique. Un PreparedStatement permet l exécution d une instruction SQL paramétrée. Permet de passer des paramètres liés à un ordre SQL (bind parameters). Les paramètres sont passés par position. 77
78 PreparedStatement Création La création d un objet de type PreparedStatement s effectue à l aide de votre objet de type Connection par la méthode preparestatement(string). Connection myconn = DriverManager.getConnection(url, user, password); PreparedStatement stmt = myconn.preparestatement("ordre SQL"); 78
79 PreparedStatement Manipulation Une fois un objet de type PreparedStatement instancié, vous pouvez le manipuler : Method summary ResultSet int void void executequery(string sql) Executes the given SQL statement, which returns a single ResultSet object executeupdate(string sql) Executes the given SQL statement, which may be an INSERT, UPDATE, or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement close() Releases this Statement object's database and JDBC resources immediately instead of waiting for this to happen when it is automatically closed setxxx(int,xxx) Sets the designated parameter to the given Java XXX type value setstring(int, String), setdate(int, Date), setdouble(int, double) Source: 79
80 PreparedStatement Manipulation - exemple PreparedStatement stmt = myconn.preparestatement("update employe set salaire =?"); stmt.setbigdecimal(1, new BigDecimal(5500)); stmt.executeupdate(); 80
81 PreparedStatement Vs Statement Il est possible de passer des paramètres à des simples Statement sans utiliser de PrepardStatement. En concaténant les paramètres aux ordres SQL dans des chaînes de caractères. stmt = MyConn.createStatement(); query = "UPDATE PROJ_TACHE_MAINTENANCE " + "set description = '" + parametre1 + "',proj_projet_id = " + parametre2 + ", proj_etat_id = " + parametre3 + " where id = " + parametre4; Cette façon de procéder est mauvaise! 81
82 Avantages des PreparedStatement par rapport aux Statement Performance Il n est compilé qu une seule fois même si les paramètres changent gain si la commande SQL est lancée n fois. Facilité d utilisation L utilisation de variables liées (ou paramètres liés) est plus adéquat. Portabilité Par exemple, les setdate() permettent de masquer les différents types de format de dates des BD. Sécurité Eviter l injection de code SQL. Gestion des caractères spéciaux dans les setstring() 82
83 CallableStatement «The interface used to execute SQL stored procedures» L interface CallableStatement hérite de PreparedStatement. Elle fournit les méthodes nécessaires à la soumission d un sous-programme (fonction, procédure stockée) de votrebasededonnées. 83
84 CallableStatement Création La création d un objet de type CallableStatement s effectue à l aide de votre objet de type Connection par la méthode preparecall(). Connection myconn = DriverManager.getConnection(url, user, password); CallableStatement proc = myconn.preparecall ("{call paiesalaire(?)}"); 84
85 CallableStatement Appels Fonction {?= call <procedure name>[(<arg1>,<arg2>,...)]} Procédure {call <procedure name>[(<arg1>,<arg2>,...)]} 85
86 CallableStatement Manipulation Une fois un objet de type CallableStatement instancié, vous pouvez le manipuler. Les méthodes importantes sont semblables aux méthodes de l interface PreparedStatement. CallableStatement proc = myconn.preparecall ("{call paiesalaire(?)}"); proc.setlong(1, ); proc.execute(); 86
87 Libération des objets Il est important de libérer les objets de type Statement, PreparedStatement et CallableStatement lorsque vous les avez utilisé. 87
88 Questions? 88
89 Eléments clés des étudiants 89
90 Travaux pratiques Série 3, exercice 4 90
91 Plan de la présentation SQL interactif<> SQL programmé Application Programming Interface pour bases de données Connexion aux bases de données avec un langage hôte Statements et curseurs Curseurs statiques Autres types de curseurs Transactions et sessions Verrous Pools de connexions Améliorations et limites du JDBC 91
92 Interfaçage relationnel / procédural Une requête sur une base de données retourne généralement plusieurs lignes. Le résultat d une requête depuis un langage procédural doit s effectuer dans une structure adaptée aux traitements de plusieurs lignes. notion de curseur 92
93 Notion de curseur «Un curseur est une structure pouvant stocker le résultat de requêtes et pouvant le manipuler ce résultat via un langage hôte.» Un curseur est comme un pointeur parcourant un tableau d'enregistrements, avec lequel on navigue via le langage hôte en extrayant les lignes une à une. C est une structure adaptée à la manipulation de données en mémoire provenant d une base de données. 93
94 Types de curseurs (ANSI) ANSI 1 spécifie 4 types de curseurs Curseurs statiques (lecture seule) Curseurs en avant seulement Curseurs dynamiques (lecture / écriture) Curseurs d ensemble de valeurs clés (pointeurs) 1. American National Standards Institute. 94
95 Les curseurs en Java Comme tous les langages hôtes, Java propose une structure adaptée aux traitements de plusieurs lignes. java.sql.resultset id nom prenom Pointeur 12 bbb ccc 4 asdf cccc 23 bbb adsf Instance de ResultSet Base de données 95
96 java.sql.resultset A table of data representing a database result set, which is usually generated by executing a statement that queries the database Source : Un ResultSet est une interface Java. Un objet de type ResultSet est instancié et alimenté par le résultat de l exécution d un Statement ou PreparedStatement. Statement stmt = myconn.createstatement(); ResultSet curseurjava = stmt.executequery("select id, nom, prenom FROM EMPLOYES "); 96
97 ResultSet statique en avant seulement Un objet de type ResultSet est par défaut non navigable et non modifiable. Il s agit donc d un curseur «statique en avant seulement». Ce type de curseur est bien adapté au parcours d un ensemble de lignes résultant d une requête SQL (SELECT) pour affichage. id nom prenom Sens de la lecture 12 bbb ccc 4 asdf cccc 23 bbb adsf 97
98 Parcours d un ResultSet statique en avant seulement Le parcours d un ResultSet «statique en avant seulement» s effectue à l aide d une boucle. La méthode next() charge le prochain enregistrement en retournant true tant qu il y a des éléments dans le curseur. while(curseurjava.next()) { } Après Avant 1(instanciation er 2 3 ème ème next() la boucle (plus next() d éléments) du curseur) id nom prenom 12 bbb ccc 4 asdf cccc 23 bbb adsf 98
99 Récupération de données Les méthodes getxxx(int) et getxxx(string), où Xxx est le type de la colonne, permettent de récupérer la valeur d une colonne de l enregistrement courant. getxxx(int) avec en paramètre le numéro de la colonne. getxxx(string) avec en paramètre le nom de la colonne. while(curseurjava.next()) { System.out.println(curseurJava.getString("nom") + " " + curseurjava.getstring("prenom")); } id nom prenom 12 bbb ccc 1 er tour de la boucle, getstring("nom"); 4 asdf cccc 23 bbb adsf 99
100 Fermeture d un ResultSet (curseur) Un curseur se ferme implicitement lorsque le Statement ou PreparedStatement est fermé. Attention, une bonne pratique consiste à fermer le curseur explicitement! curseurjava.close(); 100
101 Résumé des classes et interfaces de base JDBC REESE, George. Database Programming with JDBC and Java. USA: O'Reilly,
102 Questions? 102
103 Eléments clés des étudiants 103
104 Travaux pratiques Série 3, exercice 5 104
105 Plan de la présentation SQL interactif<> SQL programmé Application Programming Interface pour bases de données Connexion aux bases de données avec un langage hôte Statements et curseurs Curseurs statiques Autres types de curseurs, navigables et dynamiques Transactions et sessions Verrous Pools de connexions Améliorations et limites du JDBC 105
106 Autres types de curseurs en Java Les curseurs «statiques en avant seulement», ResultSet, sont disponibles depuis JDBC 1.0. Afin de suivre la norme SQL-02 (SQL92) qui propose des curseurs navigables, Java se dote d une nouvelle version de son API JDBC. JDBC 2.0 JDBC 2.0 propose aussi de rendre les curseurs modifiable (dynamiques). Lecture / écriture. 106
107 ResultSet navigable Un curseur «statique en avant seulement» peut être parcouru seulement du début jusqu à la fin. Un curseur navigable peut être parcouru dans tous les sens. id nom prenom 12 bbb ccc 4 asdf cccc 23 bbb adsf 107
108 ResultSet navigable UnobjetdetypeResultSetnavigableestinstanciéet alimenté par le résultat de l exécution d un Statement ou PreparedStatement. Une constante de navigation doit être spécifiée lors de la création du Statement ou PreparedStatement. 108
109 ResultSet navigable Il existe 3 constantes de navigation: ResultSet.TYPE_FORWARD_ONLY Curseur non navigable (par défaut) ResultSet.TYPE_SCROLL_INSENSITIVE Curseur navigable et non sensible aux modifications dans les autres transactions. ResultSet.TYPE_SCROLL_SENSITIVE Curseur navigable et sensible aux modifications des les autres transactions. 109
110 Sensibilité aux autres transactions Une curseur ResultSet.TYPE_SCROLL_INSENSITIVE n est pas mis à jour automatiquement lorsque les données sont modifiées par une autre transaction. Une curseur ResultSet.TYPE_SCROLL_SENSITIVE est mis à jour automatiquement lorsque les données sont modifiées et validées (commit) par une autre transaction. 110
111 Création d un curseur navigable La constante de navigation doit être spécifiée lors de la création du Statement ou PreparedStatement. Exemple: PreparedStatement stmt = myconn.preparestatement("select a, b, c" + "FROM d WHERE a =? " + "ORDER BY b, c, a", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 111
112 Parcours d un ResultSet navigable Le parcours d un ResultSet navigable peut s effectuer dans une boucle mais aussi à l aide de méthodes spécifiques dont: last() first() islast() absolute(int position) 112
113 ResultSet modifiable Un ResultSet modifiable permet de mettre à jour les données d un ResultSet (en mémoire) et de répliquer ces changements au niveau de la base de données. Il est donc possible d effecuter des insertions, des modifications et des suppressions de données. Afin de rendre un ResultSet modifiable, il est nécessaire de spécifier la constante de modification: ResultSet.CONCUR_UPDATABLE PreparedStatement stmt = myconn.preparestatement("select a, b, c" + "FROM d WHERE a =? " + "ORDER BY b, c, a", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); 113
114 Suppression La méthode deleterow() permet de supprimer la ligne courante d un curseur (pas dans la BD!). Le commit sur la connexion permettra de terminer la transaction et donc appliquer les changements aux niveaux de notre base de données. /* se positionner sur la 4 ème ligne qui est celle que l on désire supprimer */ curseurjava.absolute(4); curseurjava.deleterow(); myconn.commit(); Attention, il est toujours possible d exécuter une instruction DELETE à l aide de executeupdate(). Cette fonctionnalité deleterow() doit être utilisée à bon escient. 114
115 Modification Afin d effectuer des mises à jour dans un curseur modifiable, il est nécessaire de suivre quelques points: 1. se positionner sur la ligne à mettre à jour; 2. mise à jour des valeurs; 3. propagation dans la base de données; 4. validation ou annulation de la transaction. 115
116 Modification Exemple /* 1. se positionner sur la ligne que l on désire modifier */ curseurjava.absolute(4); /* 2. mise à jour des valeurs */ curseurjava.updatestring("a", "Toto"); /* 3. propagation dans la base de données */ curseurjava.updaterow(); /* 4. validation de la transaction */ myconn.commit(); 116
117 Insertion Afin d insérer des données dans un curseur modifiable, il est nécessaire de suivre quelques points: 1. se positionner afin de pouvoir insérer des données ; 2. mise à jour des valeurs ; 3. propagation dans la base de données ; 4. validation ou annulation de la transaction. 117
118 Insertion Exemple /* 1. se positionner afin de pouvoir insérer des données */ curseurjava.movetoinsertrow(); /* 2. mise à jour des valeurs */ curseurjava.updatestring("a", 546); curseurjava.updatestring("b", "Test"); curseurjava.updatestring("c", "Zoé"); /* 3. propagation dans la base de données */ curseurjava.insertrow(); /* 4. validation de la transaction */ myconn.commit(); 118
119 Verrous? Nous verrons la problématique «multiutilisateurs» dans un prochain chapitre. 119
120 Limitations Impossible de rendre un ResultSet updatable dans plusieurs cas: Jointures Requêtes de groupe Colonne mise à jour non présente dans la liste des colonnes (au niveau SELECT ) 120
121 Questions? 121
122 Eléments clés des étudiants 122
123 Travaux pratiques Série 3, exercices 6 et 7 123
124 Plan de la présentation SQL interactif<> SQL programmé Application Programming Interface pour bases de données Connexion aux bases de données avec un langage hôte Statements et curseurs Curseurs statiques Autres types de curseurs, RowSet Transactions et sessions Verrous Pools de connexions Améliorations et limites du JDBC 124
125 RowSet RowSet est une interface héritant de ResultSet. Cette structure est disponible dans le package javax.sql. Un RowSet permet de manipuler des données provenant d une base de données ou d une autre source de données tabulaire. 125
126 Avantage d un RowSet Il existe 2 avantages à l utilisation d un RowSet par rapport à un ResultSet : Un RowSet est un Javabean. Un RowSet permet de manipuler des données en mode «connecté» et en mode «déconnecté» 126
127 RowSet Un JavaBean? JavaBean? The JavaBeans architecture is based on a component model which enables developers to create software units called components. Components are self-contained, reusable software units that can be visually assembled into composite components, applets, applications, and servlets using visual application builder tools. JavaBean components are known as beans
128 JavaBean Un JavaBean est une classe Java qui doit : posséder un constructeur par défaut ; encapsuler l ensemble ses propriétés privées à l aide accesseurs respectant la convention get ou set suivi du nom de la propriété avec la première lettre en majuscule ; être Serializable ; peut contenir des listeners spécifiques. 128
129 Exemple de JavaBean Source : 129
130 RowSet connecté et déconnecté Différentes implémentations des RowSet sont disponibles pour répondre aux multiples besoins des applications de gestion : RowSet connectés ; RowSet déconnectés. 130
131 RowSet connecté et déconnecté Un RowSet connecté utilise une connexion JDBC tout au long de son cycle de vie Un JdbcRowSet est un RowSet connecté. C'est une enveloppe légère (wrapper) autour d'un ResultSet permettant d utiliser un RowSet comme un bean java. Un RowSet déconnecté?!? Pour quoi faire? 131
132 RowSet déconnecté Comment fonctionne généralement un RowSet déconnecté? 1. demande une connexion pour aller récupérer les données ; 2. se déconnecte (généralement); plus besoin de réseau, de driver JDBC 3. le client l utilise localement (suppression, mise à jour, insertion de données). Le RowSet maintient des méta données sur les données qu il contient et sur l état du RowSet. 4. le client se reconnecte et va mettre à jour les données de la base de données. en pensant aux conflits (vous n êtes pas seul sur votre BD!) 132
133 Les différents types de RowSet déconnectés RowSet est l interface mère. Un CachedRowSet est un RowSet déconnecté et stocke ses données en mémoire. adapté aux petites quantités de données ; adapté aux clients légers tels que les PDA. Un WebRowSet est un RowSet déconnecté. adapté aux applications web; adapté à la lecture de fichiers XML ou de flux de données. 133
134 Les différents types de RowSet déconnectés Un FilteredRowSet est un RowSet déconnecté. permet de filtrer les données présentées à l'utilisateur grâce à l interface Predicate. Un JoinRowSet est un RowSet déconnecté. permet d effectuer des jointures avec des objets implémentant Joinable. 134
135 Comparaison avec les ResultSet RowSet extends the ResultSet interface, so you can use the same as using the ResultSet RowSet. RowSet extends the ResultSet interface and functionality than the ResultSet so more richer. By default, all RowSet objects are scrollable and updatable. The ResultSet is rolling forward only and read-only. RowSet can be non-links, and ResultSet is connected. Therefore, interfaces can be offline use CacheRowSet data. Source : 135
136 Comparaison avec les ResultSet RowSet interfaces added to the JavaBeans component model of the JDBC API support. Rowset can be used as visual development environment for JavaBeans Bean components. CacheRowSet can be serialized. RowSet and ResultSet represents the data rows, attributes, and related methods of operation. He thinks, should tend to RowSet as something unrelated to the database, it is only a representative of rows of data objects, and ResultSet is a close link with the database stuff. Source : 136
137 Exemple d utilisation d un RowSet Un (une) volontaire pour commenter ce code... CachedRowSetImpl crs = new CachedRowSetImpl(); crs.seturl(url); crs.setusername(user); crs.setpassword(password); crs.settype(resultset.type_scroll_insensitive); crs.setconcurrency(resultset.concur_updatable); crs.setcommand("select * FROM AAAA"); crs.execute(); // Suite slide suivant 137
138 Exemple d utilisation d un RowSet Un (une) volontaire pour commenter ce code... // voir slide précédent while (crs.next()) { String name = crs.getstring(1); int id = crs.getint(2); Clob comment = crs.getclob(3); short dept = crs.getshort(4); System.out.println(name + " " + id + " " + comment + " " + dept); } crs.settablename("aaaa"); crs.updateshort(3, 58); crs.updateint(4, ); crs.updaterow(); crs.acceptchanges(); 138
139 Questions? 139
140 RowSet, gestion des conflits Que se passe t il lorsqu un autre utilisateur effectue des modifications sur les données que je traite dans mon RowSet déconnecté? 140
141 RowSet, gestion des conflits Le traitement des conflits varie d une implémentation à une autre du RowSet déconnecté. Généralement, le blocage optimiste est utilisé. En cas de conflit, acceptchanges() lève une exception javax.sql.rowset.spi.syncproviderexception. A vous de gérer les conflits selon vos cas (règles de gestion) L utilisation d un listener peut être intéressant pour «écouter» si des changements sont effectués dans votre RowSet. rowchanged() rowsetchanged() 141
142 RowSet, exemple de gestion des conflits crs.acceptchanges(); }catch(syncproviderexception spe) { SyncResolver resolver = spe.getsyncresolver(); int mystatus = resolver.getstatus(); } switch(mystatus){ case SyncResolver.INSERT_ROW_CONFLICT : System.out.println("Conflit à l insertion"); break; case SyncResolver.DELETE_ROW_CONFLICT : System.out.println("Conflit à la suppression"); break; case SyncResolver.UPDATE_ROW_CONFLICT : System.out.println("Conflit à la mise à jour"); break; 142
143 Questions? 143
144 Eléments clés des étudiants 144
145 Travaux pratiques Série 3, exercice 8 145
146 Plan de la présentation SQL interactif<> SQL programmé Application Programming Interface pour bases de données Connexion aux bases de données avec un langage hôte Statements et curseurs Transactions et sessions Verrous Pools de connexions Améliorations et limites du JDBC 146
147 Rappel: transaction = concept fondamental Toutes applications manipulant un grand ensemble de données, et exploitées dans un environnement multi-utilisateurs se doit d'être transactionnelle. Sans système transactionnel, la base de données risque d être incohérente Rappel des missions du SII!! 147
148 Rappel: définition d'une transaction Une transaction doit vérifier les propriétés (A) Atomicité (C) Consistance (I) Isolation (D) Durabilité Moyen mnémotechnique -> ACID 148
149 Rappel: ACID - Atomicité L'ensemble des opérations d'une transaction apparaît comme une seule opération atomique Soit toutes les opérations sont validées ou toutes annulées (tout ou rien) Cf exemple : débit/crédit 149
150 Rappel: ACID Consistance (cohérence) L'exécution de la transaction fait passer la base de données d'un état consistant à un autre état consistant (ceci en accord avec l ensemble de la base de données et de ses contraintes). Un état incohérent ne doit pas être possible! 150
151 Rappel: ACID Isolation Chaque transaction est indépendante des autres transactions concurrentes. Semblable à une exécution en série des transactions. On parle de «sérialisation» des transactions. Les concurrences sont parfaitement contrôlées 151
152 Rappel: ACID Durabilité C'est la persistance des mises à jour d'une transaction validée. Les effets d'une transaction validée sont durables et permanents, quelques soient les problèmes logiciels ou matériels, notamment après la fin de la transaction. 152
153 Rappel: principales utilisations des transactions Traitement des opérations sémantiquement liées Doit garantir le "tout ou rien" Exemple : débit crédit, Soit toutes les opérations sont validées soit annulées. Gestion des concurrences Acquisition de verrous sur les enregistrements traités, empêchant une utilisation malencontreuse des données Reprise sur pannes Utilisation du système transactionnel pour la reconstitution d'un état cohérent de la base au redémarrage d'un système après une panne, quel que soit le type de panne. 153
154 Rappel: commandes SQL COMMIT Validation de la transaction ROLLBACK Annulation de la transaction Etat cohérent de la base de données i COMMIT ; Etat cohérent de la base de données j ROLLBACK ; 154
155 JDBC et les transactions Les transactions sont contrôlées avec les méthodes commit() et rollback() de la classe Connection. Ne pas oublier de prendre en considération les propriétés ACID d une transaction! Connection myconn = DriverManager.getConnection( jdbc:oracle:thin:@na-po:1521:orcli1", "baudet", "*****"); myconn.setautocommit(false); myconn.commit(); 155
156 Support des transactions par JDBC Certains drivers ne supportent pas les transactions. Vous pouvez vérifier si votre driver supporte les transactions en utilisant la classe DatabaseMetaData. DatabaseMetaData dbmetadata = myconn.getmetadata(); boolean supportelestransactions; supportelestransactions = dbmetadata.supporttransactions(); 156
157 AutoCommit Lors de la création d une connexion, le mode autocommit est activé. Chaque instruction est donc considérée comme une transaction! Ce principe est totalement contraire à une bonne gestion des transactions! Une bonne pratique consiste à désactiver l autocommit. myconn.setautocommit(false); 157
158 Rappel: découpage de la transaction Oracle Découpage de la transaction en insérant des points de repère (savepoint). SAVEPOINT point ; Possibilité d'annulation un sous-ensemble d'opérations de la transaction. ROLLBACK [TO SAVEPOINT] point ; 158
159 Rappel: exemple instruction 1 ; SAVEPOINT toto ; instruction 2 ; instruction 3 IF test THEN ROLLBACK TO SAVEPOINT toto ; END IF ; instruction 4 ; instruction 5 ROLLBACK ; Annulation des instructions 2 et 3 Ne termine pas la transaction!!! Annule la totalité de la transaction et lâche les verrous! 159
160 JDBC et les Savepoint Comme pour SQL sans JDBC, il est possible d utiliser des Savepoints depuis JDBC 3.0. L interface Savepoint permet de découper les transactions. instruction 1; Savepoint sp1 = myconn.setsavepoint(toto); instruction 2; instruction 3; if (test) { myconn.rollback(sp1); } instruction 4; instruction 5; myconn.rollback(); 160
161 Java Transaction API (JTA) Si vous voulez aller plus loin JTA Ok, mais pas cette année On l utilisera avec un serveur d applications l année prochaine. Java Transaction API (JTA) specifies standard Java interfaces between a transaction manager and the parties involved in a distributed transaction system: the resource manager, the application server, and the transactional applications. Source : Oracle 161
162 Où finir la transaction??
163 Où finir la transaction? Pas après chaque commande SQL! Pour l instant dans votre main (java) de façon transactionnelle. L année prochaine dans une couche logicielle spécifique
164 Questions? 164
165 Plan de la présentation SQL interactif<> SQL programmé Application Programming Interface pour bases de données Connexion aux bases de données avec un langage hôte Statements et curseurs Transactions et sessions Verrous Pools de connexions Améliorations et limites du JDBC 165
166 JDBC et les verrous JDBC n est qu une API permettant d utiliser votre base de données. Vous pouvez (et devez!) donc utiliser les verrous de votre DB de façon standard. Exemple: Stmt = myconn.createstatement(); // Création de la requête query = "SELECT * FROM PROJ_PROJET FOR UPDATE"; //sauvegarder et relâcher le verrou myconn.commit(); 166
167 Rappel: niveaux d'isolation Le niveau d'isolation indique le comportement de la transaction par rapport aux autres transactions. Plus le niveau d'isolation est faible, plus les autres transactions peuvent agir sur les données concernées par la première. 167
168 Rappel: niveaux d'isolation READ UNCOMITED Les verrous ne sont pas maintenus entre les instructions Aucune isolation, toutes les erreurs possibles. READ COMMITED Verrou exclusif maintenus jusqu'à la fin de la transaction. Les verrous partagés ne sont pas maintenus. Prévient l'apparition de l'erreur de lecture inconsistante, autres erreurs possibles 168
169 Rappel: niveaux d'isolations REPETABLE READ Les verrous partagés sont maintenus. Les verrous exclusifs ne sont pas maintenus Erreur de lecture inconsistante et non répétitive impossible, erreur de lignes fantômes possibles. SERIALIZABLE Tous les verrous sont maintenus Pas de problème possible 169
170 JDBC et les niveaux d isolation JDBC prévois les mêmes niveaux d isolation! TRANSACTION_NONE TRANSACTION_READ_COMMITTED TRANSACTION_READ_UNCOMMITTED TRANSACTION_REPEATABLE_READ TRANSACTION_SERIALIZABLE Ces niveaux d isolations sont définis par des constantes sur la classe Connection. Connection myconn; myconn.settransactionisolation( Connection.TRANSACTION_SERIALIZABLE); 170
171 Fermeture des connexions JDBC Une connexion à la base de données via JDBC est fermée automatiquement via le garbage collector. Toutefois, afin de libérer les ressources dès que possible, il est nécessaire de fermer correctement les connexions. Connection myconn; myconn.close(); 171
172 Fermeture des connexions JDBC Afin de s assurer de la fermeture correcte des connexions, une bonne pratique consiste à fermer les connexions dans la partie finally des exceptions. Connection myconn; } finally { try { myconn.close(); } catch (SQLException sqlex) { System.out.println("Erreur SQL:" + sqlex); } } } 172
173 Questions? 173
174 Eléments clés des étudiants 174
175 Travaux pratiques Série 3, exercice 9 175
176 Plan de la présentation SQL interactif<> SQL programmé Application Programming Interface pour bases de données Connexion aux bases de données avec un langage hôte Statements et curseurs Transactions et sessions Verrous Pools de connexions Améliorations et limites du JDBC 176
177 Réutilisation des connexions Réutilisation Création d une classe de connexion. OracleConnection Quelles sont ses propriétés et ses méthodes? Avis des étudiants 177
178 Travaux pratiques Série 3, exercice minutes 178
179 Système de cache et de pool Un système de cache ou de pool permet d éviter de créer ou de supprimer des objets dans le but d améliorer les performances d un système. On utilise des systèmes de cache ou pool pour: réutiliser des connexions à des bases de données; réutiliser des objets en mémoire; objets métiers, servlets, etc réutiliser des threads; etc 179
180 Pool Vs Cache 1/2 On parle de pool pour une collection stateless d objets. Pool de connexions Pool de threads Pool de servlets On parle de cache pour une collection stateful d objets. Entity Bean Session Bean stateful 180
181 Pool Vs Cache 2/2 On utilise un pool lorsque l on veut utiliser un objet de ce pool quel que soit cet objet. (instance de classe!) Je désire obtenir une instance d une servlet. N importe laquelle. On utilise un cache lorsque l on veut utiliser un objet particulier. Le bean xyz que j ai dans mon cache. 181
182 Pool de connexions, contexte Une application de gestion effectue de nombreux appels à des sources de données. Il s agit généralement de bases de données relationnelles. De part l architecture client/serveur et le principe de dialogue à sessions, de nombreuses requêtes SQL transitent sur le réseau. Sur le web (entre autre) et dans le cas d utilisation de sessions courtes, de nombreuses connexions et déconnexions s effectuent dans les applications. 182
183 Pool de connexions Un pool de connexions: est utilisé pour éviter la création de nombreuses connexions à une source de données; permet d améliorer les performances du système. Le chargement des drivers JDBC est gourmand en ressources. Une application n utilisant pas de pool de connexions créée une connexion à la base de données à chaque demande de connexion. Une application utilisant un pool permet de réutiliser des connexions non utilisées. 183
184 Pool de connexions Schéma simplifié Instances d applications Système de pooling Source de données 184
185 Pool de connexion, utilisations Il y a plusieurs façons d utiliser des pools de connexions: implémentation manuelle ; utilisation du pool natif d un driver JDBC ; utilisation de librairies ; utilisation du pool d un serveur d applications. 185
186 Pool de connexion, implémentation manuelle Il s agit d implémenter un pool de connexions avec de simples classes Java. sans librairie, sans pool de serveur d applications. Avantages désavantages: vous réinventez la roue ; vous pouvez développer le comportement exact que vous attendez ; plus compliqué que d utiliser des pools déjà développés ; Ceci n est pas conseillé pour une application à mettre en production! 186
187 Pool de connexion, pool natif d un driver JDBC Il s agit d utiliser un pool de connexions «livré» par le driver JDBC de votre base de données. Avantages désavantages: Utilisation d un pool fiable ; Fort couplage avec la base de données. Ceci n est pas conseillé pour une application à mettre en production! 187
188 Pool de connexion, utilisation de librairies Il existe des frameworks ou des librairies permettant d utiliser des pools de connexions. Citons pour JDBC: Apache DBCP; SourceForge c3p0 GNU Library; SourceForge Proxool; etc Avantages désavantages: utilisation d une librairie éprouvée; facile d utilisation; vous êtes lié avec le fournisseur de la librairie. 188
189 Pool de connexion, utilisation du pool du serveur d applications Les serveurs d applications possèdent un pool de connexions. Il est possible d utiliser ce pool de connexions dans vos applications. Avantages désavantages: fonctionnement éprouvé; facile d utilisation; vous êtes lié avec le fournisseur; Quoique Vous utilisez JNDI donc vous pouvez changer en tout temps. ne peut être testé qu avec le serveur d applications. 189
190 Références Site de Sun dex.html JDCBook/conpool.html Site de Apache Site de c3p
191 Questions? 191
192 Eléments clés des étudiants 192
193 Travaux pratiques Série3,exercice11 A terminer pour le prochain cours Attention : Veuillez me faire parvenir votre diagramme de classe et / ou votre pseudo code (avec des explications si nécessaire) en format PDF avant le cours de la semaine prochaine via Cyberlearn. 193
194 Connexion à la base de données Il existe deux méthodes pour se connecter à une base de données : DriverManager DataSource (javax.sql) 194
195 Rappel : Connexion avec la méthode «DriverManager» DriverManager est utilisé depuis JDBC 1.0 et est largement répandu dans les entreprises. C est le mécanisme original permettant de se connecter à une base de données en Java. try{ Connection myconn = DriverManager.getConnection(url, user, password); catch(sqlexception sqle) { System.out.println("Erreur SQL:" + sqle); } 195
196 DataSource DataSource existe depuis JDBC 2.0 et doit être préféré à la méthode «DriverManager» car DataSource offre quelques avantages : chargement explicite de driver non nécessaire ; facilité de maintenance ; capacités étendues. 196
197 DataSource : chargement explicite de driver non nécessaire Pas besoin de charger explicitement le driver de base de données depuis JDBC 2.0. Pour rappel : les drivers doivent être chargés explicitement à l aide de DriverManager jusqu à JDBC 4.0 (Java SE 6). 197
198 DataSource : facilité de maintenance Vous pouvez configurer une DataSource sur un serveur d application et la référencer dans votre code source via JNDI. Ceci vous permettra d effectuer des changements de propriétés de votre DataSource sans changer votre code source. DataSource Application cliente Serveur d applications 198
199 DataSource : capacités étendues Les connexions obtenues via une DataSource vous permettent d utiliser : des pools de connexions ; des transactions distribuées. Instances d applications Système de pooling Source de données 199
200 Implémentation des DataSources Les fournisseurs de drivers de base de données proposent des DataSources. Exemples : OracleDataSource chez Oracle ; BasicDataSource chez Apace (DBCP) ; SimpleDataSource, PoolingDataSource chez PostgreSQL ; Lorsqu un objet de type DataSource est instancié, vous pouvez obtenir une connexion à une base de données. 200
201 DataSource : exemple try{ DataSource ds = new OracleDataSource(); /* Paramétrer la DataSource afin les infos de connexion à la BD */ ((OracleDataSource)ds).setDriverType("thin"); ((OracleDataSource)ds).setServerName("ne-ege-leto.ig.he-arc.ch"); ((OracleDataSource)ds).setDatabaseName("ens"); ((OracleDataSource)ds).setPortNumber(1521); ((OracleDataSource)ds).setUser("prof_baudet"); ((OracleDataSource)ds).setPassword("*****"); Connection myconn = ds.getconnection(); myconn.setautocommit(false); catch(sqlexception sqle) { System.out.println("Erreur SQL:" + sqle); } 201
202 DataSource et pool de connexion 1/2 Rappel : un pool de connexions: est utilisé pour éviter la création de nombreuses connexions à une source de données; permet d améliorer les performances du système. Le chargement des drivers JDBC est gourmand en ressources. 202
203 DataSource et pool de connexion 2/2 Les connexions effectuées via une DataSource peuvent générer un pool de connexion. De nombreuses librairies et serveur d applications livrent des pools de connexion. C est le cas par exemple de DBCP de Apache, d Oracle Marche à suivre : 1. création de la DataSource ; 2. création du pool de connexions ; 3. utilisation des connexions du pool. 203
204 Exemple de DataSource et de pooling de connexions Avec les libraires d Oracle DataSource datasource = null; Connection myconn = null; PooledConnection poolconn = null; try{ datasource = new OracleConnectionPoolDataSource (); /* Paramétrer la DataSource avec les infos de connexion à la BD */ // Création du pool de connexions poolconn = ((OracleConnectionPoolDataSource )datasource).getpooledconnection(); // Récupération d une connexion du pool myconn = poolconn.getconnection(); catch(sqlexception sqle) 204
205 Questions? 205
206 Eléments clés des étudiants Il y a 2 méthodes pour se connecter à une BD avec Java: DriverManager DataSource Avec DataSource, on a la possibilité d obtenir directement un pool de connexions. DataSource est un DriverManager plus évolué! Le DataSource peut ne pas être configuré directement dans le code de l application. En utilisant JNDI! 206
207 Travaux pratiques Série 3, exercice 12 (a, b et c) DataSource et pool de connexions 207
208 Plan de la présentation SQL interactif<> SQL programmé Application Programming Interface pour bases de données Connexion aux bases de données avec un langage hôte Statements et curseurs Transactions et sessions Verrous Pools de connexions Améliorations et limites du JDBC 208
209 Objectifs Objectifs du module comprendre et mettre en œuvre les services applicatifs fondamentaux; développer, déployer et configurer des composants métiers sur un serveur d applications. Objectifs de l unité d enseignement «Dialogue avec la base de données» comprendre les différences entre l'architecture "serveur de fichiers" et "client/serveur"; maîtriser le principe du dialogue à sessions; comprendre la notion de concurrence; savoir manipuler des données à l'aide d'un langage hôte. 209
210 Concaténation de chaînes de caractères Les compilateurs permettent l addition de «String» avec l opérateur +. Cet exemple est traduit par le compilateur en: String toto = new String("Au revoir"); String titi := toto + " Nicolas"; String titi = new StringBuilder("Au revoir").append(" Nicolas").toString(); 210
211 Problème potentiel Exemple de mauvaise utilisation : public String createstringfromarray(object[] array) { String _ret = new String(); for (int i = 0; i < array.length; i++) _ret += array[i]; return _ret; } Quel est le problème potentiel? Source : 211
212 Problème potentiel Le compilateur va traduire _ret +=array[i] par : _ret = _ret + array[i]. Puis le compilateur va traduire par: ret = new StringBuffer(_ret).append(array[i]).toString(); Cette ligne sera exécutée à chaque passage dans la boucle! Attention, l instanciation d objet est coûteuse. il faudra donc remplacer les opérateurs de concaténation de chaînes de caractères par un StringBuffer(). Source : 212
213 Solution Solution proposée : public String createstringfromarray(object[] array) { StringBuffer _buf = new StringBuffer(); for (int i = 0; i < array.length; i++) _buf.append(array[i]); return _buf.tostring(); } Source : 213
214 StringBuilder et création de query JDBC Afin d améliorer les temps de réponse pour la concaténation des «String», l utilisation de String.append() de StringBuilder peut être intéressante. Lors de la création de queries complexes, StringBuilder peut donc vous faire gagner du temps. La création dynamique de clause «where» dans une boucle peut se révéler coûteuse StringBuilder est une classe de la Java SE 5.0. StringBuffer peut aussi être utilisée. Cette classe, contrairement à StringBuilder, est synchronisée. 214
215 Les APIs de plus haut niveau 1/2 L utilisation de JDBC peut être critiquée. Des APIs de plus haut niveau permettent d accroître la productivité. Ces APIs encapsulent JDBC. 215
216 Les APIs de plus haut niveau 2/2 Ces APIs simplifient: le chargement des drivers JDBC; la création des connexions; le chargement et l exécution des requêtes; l exploitation des résultats (ResultSet) Citons: DbUtils, Apache Jakarta Commons 216
217 Pré-compilation? Le développeur ne peut détecter les erreurs dans les requêtes SQL qu à l exécution du programme C est souvent trop tard Deux solutions sont possibles pour améliorer cette situation : SQLJ Tests unitaires 217
218 SQLj L idée est d intégrer les clauses SQL directement dans Java préfixé par un code spécifique. L avantage réside dans l étape de pré-compilation qui permet au développeur de directement voir les problèmes de compilation de code SQL. Vérification de la syntaxe SQL Génération de classes Java (Connection, ResultSet ) SQLj est peu utilisé en entreprise Il s agit pourtant d un standard ISO. 218
219 SQLj Exemple : import java.sql.*; import sqlj.runtime.*; try { #sql (UPDATE personne SET salaire = salaire + 10); } catch (SQLException e){ } 219
220 SQLj comparaison de code JDBC - SQLj int n = 17999; String c = "chaine a"; #sql (INSERT into EMPLOYE (:n,:c)); SQLj int n = 17999; String c = "chaine a"; JDBC Statement stmt = conn.preparedstatement("insert into EMPLOYE values (?,? )"); stmt.setint(1,n); stmt.setstring(2,c); stmt.execute(); stmt.close(); 220
221 JDBC, SQLj, et l avenir? JDBC est considéré comme fastidieux. JDBC n est que la «prise» et devrait avoir une surcouche. Malheureusement SQLj n est que peu utilisé en entreprise D autres solutions sont actuellement préférées (qui ne pré-compilent pas ). Java Data Object Java Persistance API 221
222 Tests unitaires Dans un bon processus de développement, il faut prévoir d effectuer des tests unitaires. Ces tests permettent de «lever» les erreurs avant une mise en production d une application. Il faudra finir votre formation bachelor pour avoir plus d informations sur ce thème passionnant 222
223 N oubliez pas Utilisez le bon driver Fermez les connexions, les resultset, les Statements Optimisez à l aide de pools de connexions Gérez vos transactions (setautocommit(false)), les verrous Ecrivez des bonnes requêtes SQL! 223
224 Questions? 224
225 Eléments clés des étudiants 225
226 Travaux pratiques Série 3, exercice
Java DataBaseConnectivity
Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage
Introduction à JDBC. Accès aux bases de données en Java
Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique [email protected] 1 Introduction JDBC : Java Data Base Connectivity
Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :
ntroduction 1/28 2/28 Anne-Cécile Caron Licence MAGE - Bases de Données 2013-2014 Application base de données Pour le développeur : Quel est l environnement? type de client (mode client serveur, intranet,...)
Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige.
: 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
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)
Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07
Accès aux bases de données
13 Accès aux bases de données Les bases de données fournissent un mécanisme de stockage persistant pour les données d application et dans bien des cas, elles sont essentielles au fonctionnement des applications.
TP Programmation Java / JDBC / Oracle
TP Programmation Java / JDBC / Oracle 1. Connectivité avec une base de données Oracle au travers de l interface JDBC L interface de programmation (API) JDBC (Java DataBase Connectivity) est une librairie
OpenPaaS Le réseau social d'entreprise
OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3
Programmation d application Bases de données avec Java
Plan du document Programmation d application Bases de données avec Java INT Problématique slide 3 Correspondance diagramme de classe slide 4 UML vers schéma relationnel Programmation BD avec JDBC slide
Java et les bases de données
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
SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)
SGBDR Systèmes de Gestion de Bases de Données (Relationnelles) Plan Approches Les tâches du SGBD Les transactions Approche 1 Systèmes traditionnels basés sur des fichiers Application 1 Gestion clients
La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 [email protected] 1
La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 [email protected] 1 Plan 1. Généralités sur la persistance des données dans les applications 2. La connection
Compte Rendu d intégration d application
ISMA 3EME ANNEE Compte Rendu d intégration d application Compte Rendu Final Maxime ESCOURBIAC Jean-Christophe SEPTIER 19/12/2011 Table des matières Table des matières... 1 Introduction... 3 1. Le SGBD:...
Cours Bases de données 2ème année IUT
Cours Bases de données 2ème année IUT Cours 12 : Concurrence d accès Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Accès concurrents Définitions Verrous Collisions Niveaux de cohérence Blocage
Bases de données et sites WEB Licence d informatique LI345
Bases de données et sites WEB Licence d informatique LI345 Anne Doucet [email protected] http://www-bd.lip6.fr/ens/li345-2013/index.php/lescours 1 Contenu Transactions en pratique Modèle relationnel-objet
Notes de cours : bases de données distribuées et repliquées
Notes de cours : bases de données distribuées et repliquées Loïc Paulevé, Nassim Hadj-Rabia (2009), Pierre Levasseur (2008) Licence professionnelle SIL de Nantes, 2009, version 1 Ces notes ont été élaborées
JDBC le langage Java XVI-1 JMF
JDBC Java Database Connectivity XVI-1 JDBC JDBC est une API Java (ensemble de classes et d'interfaces défini par SUN et les acteurs du domaine des BD) permettant d'accéder aux bases de données à l'aide
Implémentation des SGBD
Implémentation des SGBD Structure générale des applications Application utilisateur accédant à des données d'une base Les programmes sous-jacents contiennent du code SQL Exécution : pendant l'exécution
Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC
Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC Sommaire 1. Objectifs et intérêts... 2 2. Intégrer le driver SQL Server dans SJSAS 9... 2 2.1. Télécharger
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)
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) Module 1 : Programmer une application informatique Durée
Application web de gestion de comptes en banques
Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion
4. Utilisation d un SGBD : le langage SQL. 5. Normalisation
Base de données S. Lèbre [email protected] Université de Strasbourg, département d informatique. Présentation du module Contenu général Notion de bases de données Fondements / Conception Utilisation :
Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki
Institut Supérieur de Gestion Cours pour 3 ème LFIG Java Enterprise Edition Introduction Bayoudhi Chaouki 1 Java EE - Objectifs Faciliter le développement de nouvelles applications à base de composants
Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL
Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions
Java pour le Web. Cours Java - F. Michel
Java pour le Web Cours Java - F. Michel Introduction à JEE 6 (ex J2EE) Historique Qu'est-ce que JEE JEE : Java Entreprise Edition (ex J2EE) 1. Une technologie outils liés au langage Java + des spécifications
Mysql. Les requêtes préparées Prepared statements
Mysql Les requêtes préparées Prepared statements Introduction Les prepared statements côté serveur sont une des nouvelles fonctionnalités les plus intéressantes de MySQL 4.1 (récemment sorti en production
BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais
BTS S.I.O. 2012-2013 PHP OBJET Module SLAM4 Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais Table des matières 1 But... 3 2 Les bases :... 3 3 Utilisation d'une classe : Instanciation...3
JDBC JDBC. Java DataBase Connectivity
Java DataBase Connectivity Philippe GENOUD UJF Février 2004 1 Introduction Offre une API unique d accès à toute BD conforme au standard SQL-92 Objectifs : Fournir un accès homogène aux SGBD une application
Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.
Les Triggers SQL Didier DONSEZ Université de Valenciennes Institut des Sciences et Techniques de Valenciennes [email protected] 1 Sommaire Motivations Trigger Ordre Trigger Ligne Condition Trigger
ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010
ORACLE 10G DISTRIBUTION ET REPLICATION Distribution de données avec Oracle G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 1 Plan 12. Distribution de données 12.1 Génération des architectures C/S et Oracle
CHAPITRE 1 ARCHITECTURE
07/04/2014 Université des sciences et de la Technologie Houari Boumediene USTHB Alger Département d Informatique ADMINISTRATION ET TUNING DE BASES DE DONNÉES CHAPITRE 1 ARCHITECTURE RESPONSABLE DR K. BOUKHALFA
//////////////////////////////////////////////////////////////////// Administration bases de données
////////////////////// Administration bases de données / INTRODUCTION Système d informations Un système d'information (SI) est un ensemble organisé de ressources (matériels, logiciels, personnel, données
Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles
Types d applications pour la persistance Université de Nice Sophia-Antipolis Version 0.9 28/8/07 Richard Grin Toutes les applications n ont pas une complexité qui nécessite une architecture n- tiers Ce
Information utiles. [email protected]. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/
Systèmes de gestion de bases de données Introduction Université d Evry Val d Essonne, IBISC utiles email : [email protected] webpage : http://www.ibisc.univ-evry.fr/ digiusto/ Google+ : https://plus.google.com/u/0/b/103572780965897723237/
Présentation du PL/SQL
I Présentation du PL/ Copyright Oracle Corporation, 1998. All rights reserved. Objectifs du Cours A la fin de ce chapitre, vous saurez : Décrire l intéret du PL/ Décrire l utilisation du PL/ pour le développeur
Module BD et sites WEB
Module BD et sites WEB Cours 8 Bases de données et Web Anne Doucet [email protected] 1 Le Web Architecture Architectures Web Client/serveur 3-tiers Serveurs d applications Web et BD Couplage HTML-BD
Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes
Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition
Cedric Dumoulin (C) The Java EE 7 Tutorial http://docs.oracle.com/javaee/7/tutorial/doc/
Cedric Dumoulin (C) The Java EE 7 Tutorial http://docs.oracle.com/javaee/7/tutorial/doc/ Webographie The Java EE 7 Tutorial http://docs.oracle.com/javaee/7/tutorial/doc/ Les slides de cette présentation
COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2
SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES
Cours Bases de données
Informations sur le cours Cours Bases de données 9 (10) séances de 3h Polycopié (Cours + TD/TP) 3 année (MISI) Antoine Cornuéjols www.lri.fr/~antoine [email protected] Transparents Disponibles
PDO : PHP Data Object 1/13
PDO : PHP Data Object 1/13 Tous ne sont que des extensions... Les fonstions mysql_* : API mysql Les fonctions mysqli_* aussi Il en est de même pour PDO PDO (avec le pilote PDO MySQL Driver et Extension
Plan. Department of Informatics
Plan 1. Application Servers 2. Servlets, JSP, JDBC 3. J2EE: Vue d ensemble 4. Distributed Programming 5. Enterprise JavaBeans 6. Enterprise JavaBeans: Special Topics 7. Prise de recul critique Enterprise
Présentation du module Base de données spatio-temporelles
Présentation du module Base de données spatio-temporelles S. Lèbre [email protected] Université de Strasbourg, département d informatique. Partie 1 : Notion de bases de données (12,5h ) Enjeux et principes
LES ACCES ODBC AVEC LE SYSTEME SAS
LES ACCES ODBC AVEC LE SYSTEME SAS I. Présentation II. SAS/ACCESS to ODBC III. Driver ODBC SAS IV. Driver ODBC SAS Universel V. Version 8 VI. Références I. Présentation Introduction ODBC, qui signifie
Réplication des données
Réplication des données Christelle Pierkot FMIN 306 : Gestion de données distribuées Année 2009-2010 Echange d information distribuée Grâce à un serveur central Une seule copie cohérente Accès à distance
Architecture Orientée Service, JSON et API REST
UPMC 3 février 2015 Précedemment, en LI328 Architecture générale du projet Programmation serveur Servlet/TOMCAT Aujourd hui Quelques mots sur les SOA API - REST Le format JSON API - REST et Servlet API
1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7
Sommaire 1-Introduction 2 1-1- BPM (Business Process Management)..2 1-2 J-Boss JBPM 2 2-Installation de JBPM 3 2-1 Architecture de JOBSS JBPM 3 2-2 Installation du moteur JBoss JBPM et le serveur d application
as Architecture des Systèmes d Information
Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes
Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction
PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés
Bases de données Page 1 de 11. Bases de données. Prof. : Dzenan Ridjanovic
Bases de données Page 1 de 11 1- Objectifs généraux Bases de données Prof. : Dzenan Ridjanovic acquérir les principes et concepts fondamentaux dans le domaine des bases de données; développer les connaissances
A QUOI SERVENT LES BASES DE DONNÉES?
BASE DE DONNÉES OBJET Virginie Sans [email protected] A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès
COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA
COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA DEFINITION D UNE BIBLIOTHEQUE D ACCES A UNE BASE DE DONNEES Cet article s adresse aux administrateurs SAS en charge de la mise à disposition des
Initiation à JAVA et à la programmation objet. [email protected]
Initiation à JAVA et à la programmation objet [email protected] O b j e c t i f s Découvrir un langage de programmation objet. Découvrir l'environnement java Découvrir les concepts de la programmation
Bases de données et sites WEB
Bases de données et sites WEB Cours2 : Sécurité et contrôles d accès Anne Doucet 1 Authentification Autorisation Privilèges Rôles Profils Limitations de ressources Plan Audit Contrôle d accès via les vues
Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008
Introduction Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa www.degenio.com Novembre 2008 Forms 10g permet l utilisation du JAVA côté client et côté application
Gestion de stock pour un magasin
Département d Informatique Université de Fribourg, Suisse http://diuf.unifr.ch Gestion de stock pour un magasin Stock online utilise ASP/MS-Access DO Thi Tra My No étudiant : 05-333-750 Travail de séminaire
Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués
Architecture JEE. Objectifs attendus Serveurs d applications JEE Systèmes distribués Architectures JEE Normes JEE couches logicielles, n-tiers framework JEE et design patterns 2007/02/28 Eric Hé[email protected]
1. Langage de programmation Java
1. Langage de programmation Java 1.1. Définitions Langage de 3e génération le plus utilisé actuellement Portabilité : exécutable sur tout types d'ordinateurs quel que soit le système d'exploitation (Windows,
Introduction aux SGBDR
1 Introduction aux SGBDR Pour optimiser une base Oracle, il est important d avoir une idée de la manière dont elle fonctionne. La connaissance des éléments sous-jacents à son fonctionnement permet de mieux
Bases de Données. Stella MARC-ZWECKER. [email protected]. Maître de conférences Dpt. Informatique - UdS
Bases de Données Stella MARC-ZWECKER Maître de conférences Dpt. Informatique - UdS [email protected] 1 Plan du cours 1. Introduction aux BD et aux SGBD Objectifs, fonctionnalités et évolutions
Création d une application JEE
Création d une application JEE Rédacteurs : Alexandre Baillif, Philippe Lacomme, Raksmey Phan et Michaël PLAN Date : juillet 2010 Mise à jour : Michaël PLAN Date : octobre 2014 Avertissement : - ce document
Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.
Note technique W4 Engine Extension SSO Java Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java. 1 Présentation 3 2 Custom SSO Java 4 3 Bilan 10 Sommaire Référence
Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS
Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS 1. Introduction Nous allons aborder la notion de surcouche procédurale au sein des SGBDS relationnels tels que Oracle (PLSQL)
TP Contraintes - Triggers
TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution
Auto-évaluation Aperçu de l architecture Java EE
Auto-évaluation Aperçu de l architecture Java EE Document: f1218test.fm 22/03/2012 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION APERÇU
Forthcoming Database
DISS.ETH NO. 15802 Forthcoming Database A Framework Approach for Data Visualization Applications A dissertation submitted to the SWISS FEDERAL INSTITUTE OF TECHNOLOGY ZURICH for the degree of Doctor of
La base de données XML exist. A. Belaïd
La base de données XML exist Introduction Qu est-ce-que exist? C est une base de donnée native, entièrement écrite en Java XML n est pas une base de données en soi Bien qu il possède quelques caractéristiques
APIs de table pour SQL Server
2013 D - Pratique APIs de table pour SQL Server Établissement: HEG Arc Haute école Arc Gestion Réalisé par: M. Informaticien de gestion 2009-2013 S adresse à: M.Fabrice Camus Date de début et de fin du
Architectures web/bases de données
Architectures web/bases de données I - Page web simple : HTML statique Le code HTML est le langage de base pour concevoir des pages destinées à être publiées sur le réseau Internet ou intranet. Ce n'est
PHP. Bertrand Estellon. 26 avril 2012. Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril 2012 1 / 214
PHP Bertrand Estellon Aix-Marseille Université 26 avril 2012 Bertrand Estellon (AMU) PHP 26 avril 2012 1 / 214 SQLite et PDO Base de données SQLite et PDO SQLite écrit les données relatives à la base dans
Optimisations des SGBDR. Étude de cas : MySQL
Optimisations des SGBDR Étude de cas : MySQL Introduction Pourquoi optimiser son application? Introduction Pourquoi optimiser son application? 1. Gestion de gros volumes de données 2. Application critique
Introduction aux bases de données
Introduction aux bases de données Références bibliographiques Jeff Ullman,Jennifer Widom, «A First Course in Database systems», Prentice-Hall, 3rd Edition, 2008 Hector Garcia-Molina, Jeff Ullman, Jennifer
COMPOSANTS DE L ARCHITECTURE D UN SGBD. Chapitre 1
1 COMPOSANTS DE L ARCHITECTURE D UN SGBD Chapitre 1 Généralité 2 Les composants principaux de l architecture d un SGBD Sont: Les processus Les structures mémoires Les fichiers P1 P2 Pn SGA Fichiers Oracle
24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.
Plan du cours 2 Introduction générale : fondamentaux : les fondamentaux Michel Buffa ([email protected]), UNSA 2002, modifié par Richard Grin (version 1.1, 21/11/11), avec emprunts aux supports de Maxime
Bases de données cours 1
Bases de données cours 1 Introduction Catalin Dima Objectifs du cours Modèle relationnel et logique des bases de données. Langage SQL. Conception de bases de données. SQL et PHP. Cours essentiel pour votre
Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications
Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications P.-A. Sunier, HEG-Arc Neuchâtel avec le concours de J. Greub [email protected] http://lgl.isnetne.ch/
PHP 4 PARTIE : BASE DE DONNEES
PHP 4 PARTIE : BASE DE DONNEES 1. Introduction 2. Présentation de MySQL 3. Principe 4. Connexion 5. Interrogation 6. Extraction des données 7. Fonctions de services 8. Traitement des erreurs 9. Travaux
Olivier Mondet http://unidentified-one.net
T-GSI Ch.4 Le Langage SQL LDD, LCD Cet exercice guidé reprend le plan suivis lors de l intervention de formation faite pour l académie de Versailles. L objectif principal visait en la présentation du langage
INTRODUCTION A JAVA. Fichier en langage machine Exécutable
INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du
Du 10 Fév. au 14 Mars 2014
Interconnexion des Sites - Design et Implémentation des Réseaux informatiques - Sécurité et Audit des systèmes - IT CATALOGUE DE FORMATION SIS 2014 1 FORMATION ORACLE 10G 11G 10 FEV 2014 DOUALA CAMEROUN
WEB page builder and server for SCADA applications usable from a WEB navigator
Générateur de pages WEB et serveur pour supervision accessible à partir d un navigateur WEB WEB page builder and server for SCADA applications usable from a WEB navigator opyright 2007 IRAI Manual Manuel
A QUOI SERVENT LES BASES DE DONNÉES?
BASE DE DONNÉES OBJET Virginie Sans [email protected] A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès
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)
PHP et mysql php_mysql PHP et mysql Code: php_mysql Originaux url: http://tecfa.unige.ch/guides/tie/html/php-mysql/php-mysql.html url: http://tecfa.unige.ch/guides/tie/pdf/files/php-mysql.pdf Auteurs et
Construire des plug-ins pour SAS Management Console SAS 9.1
Construire des plug-ins pour SAS Management Console SAS 9.1 Janvier 2005 Sommaire 1 INTRODUCTION... 3 1.1 OBJECTIFS... 3 1.2 PERIMETRE... 3 2 LES COMPOSANTS DE SAS MANAGEMENT CONSOLE... 4 3 LA CONSTRUCTION
Tutoriel d installation de Hibernate avec Eclipse
Tutoriel d installation de Hibernate avec Eclipse Table des matières 1. Création de la base de données... 4 2. Installation de Hibernate Synchronizer... 5 3. Utilisation de Hibernate... 6 3.1 Création
2 Chapitre 1 Introduction
1 Introduction Ce livre présente les Enterprise JavaBeans 2.0 et 1.1 qui constituent la troisième et la deuxième version de la spécification des Enterprise JavaBeans. Tout comme la plate-forme Java a révolutionné
Mise en œuvre des serveurs d application
Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés
Once the installation is complete, you can delete the temporary Zip files..
Sommaire Installation... 2 After the download... 2 From a CD... 2 Access codes... 2 DirectX Compatibility... 2 Using the program... 2 Structure... 4 Lier une structure à une autre... 4 Personnaliser une
Bases de données avancées Introduction
Bases de données avancées Introduction Dan VODISLAV Université de Cergy-Pontoise Master Informatique M1 Cours BDA Plan Objectifs et contenu du cours Rappels BD relationnelles Bibliographie Cours BDA (UCP/M1)
Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions
1/46 2/46 Pourquoi? Anne-Cécile Caron Master MAGE - SGBD 1er trimestre 2014-2015 Le concept de transaction va permettre de définir des processus garantissant que l état de la base est toujours cohérent
ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5
ADMINISTRATION DE ADOBE LIVECYCLE MOSAIC 9.5 Informations juridiques Copyright 2010 Adobe Systems Incorporated and its licensors. All rights reserved. Administration d Adobe LiveCycle Mosaic 9.5 13 octobre
Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f
PGDay Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f Réplication Réplications, disponibilités, durabilités Evolution dans la base de données : Postgres 8.2 : warm standby Postgres 9.0 : hot
Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application
Architecture Multi-Tier Traditionnellement une application informatique est un programme exécutable sur une machine qui représente la logique de traitement des données manipulées par l application. Ces
27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)
Propriétés du Document Source du Document SDK_accords.odt Titre du Document SDK Python et Java pour le développement de services ACCORD Module(s) PyaccordsSDK, JaccordsSDK Responsable Prologue Auteur(s)
Cours Base de données relationnelles. M. Boughanem, IUP STRI
Cours Base de données relationnelles 1 Plan 1. Notions de base 2. Modèle relationnel 3. SQL 2 Notions de base (1) Définition intuitive : une base de données est un ensemble d informations, (fichiers),
CREATION WEB DYNAMIQUE
CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de
