15 Développement d'application de base de données en Java

Slides:



Advertisements
Présentations similaires
Architectures Web - N-Tiers
Advertisements

Enterprise Java Beans 3.0 Cours INF Bases de Données Hiver 2005, groupe 10 Stefan MARTINESCU.
CHAftITREI ARCHITECTURE de BASE. Modèle de Von Neumann Langage d’assemblage1 John Von Neumann est à l'origine d'un modèle de machine universelle de traitement.
SRT 2 NTP. Nécessité ● Les ordinateurs utilisent des horloges à quartz – Peu de précision – Tendance à dériver – Parfois plusieurs secondes par jour.
22/09/2016 OSSGTP - Présentation Spring 1 Sommaire  Architectures en couches et conteneurs légers  Spring  Spring Core  Spring AOP  Accès aux données.
Les ORMs ● Faire coexister le monde relationnel et objet.
Reformulation  L’AFPA promoteur du projet souhaite mettre en place une application WEB afin de remplacer une solution en Java. Pour ce projet 4 mandataires.
Présentation de Scribe Votre nouvelle organisation du Réseau Informatique Pédagogique.
Présentation du projet JAVA Système de messagerie instantanée cryptée.
Présentation LabPlus v3. Solution novatrice en Technologies de l’information Solution novatrice en Technologies de l’information Application pour la Gestion.
Présentation Projet JEE Présentation des Frameworks Java Server Faces & Eclipse Link.
Object Relational Mapping Java Persistence API Alexandre COLLIGNON - Ingénieurs Janvier 2008.
Apache Tomcat Distributeur : Apache Software Foundation Projet : Jakarta Catégorie : Serveur d'applications Technologie : Java.
1 UML: applications, études de cas ● Processus (Extreme Programming, Unified Process) ● Architectures ● Expression du besoin technique Conception Préliminaire.
Développement d'applications Web avec le framework PHP Symfony 2 Mathieu Peltier (Mercator Océan - CNRS) (UMS 831, Observatoire Midi-Pyrénées)
Logiciel Assistant Gestion d’Événement Rémi Papillie (Chef d’équipe) Maxime Brodeur Xavier Pajani Gabriel Rolland David St-Jean.
Java – Réseau Eric Blaudez 06.
Plan Présentation de 2TUP 2TUP, un processus UP 2TUP et UML Les apports de 2TUP 2TUP en détail 2TUP dans la pratique.
DIAGRAMME DE DEPLOIEMENT Exposé de: MBALLA MEKONGO Michèle MBOUNA FEUZE William SIEYADJEU Alex Lionel CHOPGWE Leonard NDUMATE Landry TIDJON Lionel.
ARCHITECTURE MULTITENANT CONTAINER DATABASE ET PLUGGABLE DATABASES Pr. A. MESRAR
Procédures Framework LDAP
ARCHITECTURE RESEAUX.
Cross-Plateform Cours JavaScript
Découverte et mise en service Temps de séquence : 3 heures
PROJET JAVA Automatisation d’une rame de métro
Les Bases de données Définition Architecture d’un SGBD
NuFW, un parefeu authentifiant
MOT Éditeur de modèles de connaissances par objets typés
JAVA et POO : Notion d'héritage
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes
Virtualisation d’applications mobiles dans un réseau de Cloudlets
Présentation du projet FederID ■ ■ ■
Août 2009.
Présentation des EJB Enterprise Java Beans.
Notion De Gestion De Bases De Données
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Programmation Android Bases De Données, SQL-lite
9 Méthodes multidimentionnelles et représentation d'associations
Développement d’applications interactives
Proposition de réponses attendues
Diagrammes UML 420-KE2-LG.
Programmation Android Première application Android
5 Analyse avec Designer d'Oracle
Auditeur: Léonardo AMODIO Cours: NFE107
Assembleur, Compilateur et Éditeur de Liens
© Robert Godin. Tous droits réservés.
Programmation Android Composantes d’une application
4 Méthodes multidimentionnelles et représentation d'associations
Module 13 : Implémentation de la protection contre les sinistres
Architectures Logicielles Java GLG203 GLG204
Base de donnée de support
7 Contraintes d’intégrité en SQL
Zeendoc et les logiciels comptables
5 Interface entre SQL et un programme
© Robert Godin. Tous droits réservés.
Serveurs d’applications
Windows 7 NTFS.
20 Données semi-structurées et XML
EPITECH 2009 UML EPITECH 2009
Un Mécanisme d‘Adaptation Guidé par le Contexte en Utilisant une Représentation par Objets Manuele Kirsch Pinheiro Laboratoire LSR – IMAG, Équipe SIGMA.
Active Directory Services
9 Méthodes multidimentionnelles et représentation d'associations
© Robert Godin. Tous droits réservés.
Retour sur les interfaces
Service d ’Annuaire Netware pour Windows NT SABATIER Antoine IR5
© Robert Godin. Tous droits réservés.
© Robert Godin. Tous droits réservés.
MOT Éditeur de modèles de connaissances par objets typés
Architecture Logicielle « Entreprise Java Beans(EJB) »
Deux nouveaux programmes en « Techniques de l’informatique »
Transcription de la présentation:

15 Développement d'application de base de données en Java 18/09/2018 © Robert Godin. Tous droits réservés.

Patron d'architecture en couche (layer) Couche présentation Couche contrôle (coordonnateur d'application) Couche domaine d'application (ou métier) Couche de services. persistance transaction communication sécurité etc. 18/09/2018 © Robert Godin. Tous droits réservés.

15.1 Application Java/JDBC client-serveur 18/09/2018 © Robert Godin. Tous droits réservés.

Cas d ’utilisation EnregistrerPrêts 18/09/2018 © Robert Godin. Tous droits réservés.

Cas de test pour scénario normal 18/09/2018 © Robert Godin. Tous droits réservés.

Cas d ’exception : nombre maximal d'emprunts (ici 2) atteint 18/09/2018 © Robert Godin. Tous droits réservés.

Cas d ’exception : exemplaire non disponible 18/09/2018 © Robert Godin. Tous droits réservés.

Cas d'utilisation et classes métiers concernées 18/09/2018 © Robert Godin. Tous droits réservés.

Patron courtier BD : classes du programme Java et tables concernées ~ Data Access Object (DAO) + Domain Data Transfer Object 18/09/2018 © Robert Godin. Tous droits réservés.

Classe Java pour Personne Lecteurs/modifieurs pour attributs (peut en faire un Java Bean) 18/09/2018 © Robert Godin. Tous droits réservés.

Classe Java pour Utilisateur Lecteurs/modifieurs pour naviguer les associations Lecteur pour donnée dérivée 18/09/2018 © Robert Godin. Tous droits réservés.

Classe Java pour Membre Attributs et méthodes static pour attributs de classe (ou singleton) 18/09/2018 © Robert Godin. Tous droits réservés.

Classe Java pour Employé 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Classe Java pour Prêt 18/09/2018 © Robert Godin. Tous droits réservés.

Classe Java pour PrêtEnCours 18/09/2018 © Robert Godin. Tous droits réservés.

Classe Java pour Exemplaire 18/09/2018 © Robert Godin. Tous droits réservés.

CourtierBDUtilisateur 18/09/2018 © Robert Godin. Tous droits réservés.

Diagramme de séquence pour CourtierBDUtilisateur 18/09/2018 © Robert Godin. Tous droits réservés.

Classe UsineConnection 18/09/2018 © Robert Godin. Tous droits réservés.

Courtier CourtierBDPrêtEnCours : chercherLesPrêtsEnCours 18/09/2018 © Robert Godin. Tous droits réservés.

Matérialisation d ’un PrêtEnCours : insérerPrêtEnCours 18/09/2018 © Robert Godin. Tous droits réservés.

Enjeux de la conception des courtiers Granularité des courtiers Granularité de matérialisation/dématérialisation minimiser les appels au serveur de BD limiter le volume de données à transférer 18/09/2018 © Robert Godin. Tous droits réservés.

Classe de contrôle ControleEnregistrerPrets 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 18/09/2018 © Robert Godin. Tous droits réservés.

15.1.1 Enjeux de conception d'une application Java/JDBC Dépendance au temps de réflexion 18/09/2018 © Robert Godin. Tous droits réservés.

Limiter les verrouillages ? 18/09/2018 © Robert Godin. Tous droits réservés.

Limiter la durée des transactions Contraintes de sérialisabilité ? 18/09/2018 © Robert Godin. Tous droits réservés.

Vérification des contraintes par le serveur Non sérialisabilité perçue par T2 18/09/2018 © Robert Godin. Tous droits réservés.

Contrôle de concurrence optimiste par estampillage explicite Lecture en une première transaction Note l’estampille courante (ou numéro de version, …) Écriture en une deuxième transaction distincte Vérifie si l’état a changé depuis la lecture Si non, met à jour les données et l’estampille Si oui, annulation Ne bloque pas les objets lus 18/09/2018 © Robert Godin. Tous droits réservés.

Réduire l'interactivité 18/09/2018 © Robert Godin. Tous droits réservés.

ControleEnregistrerPretsSimple 18/09/2018 © Robert Godin. Tous droits réservés.

Libérer la connexion entre les appels Transaction ne peut chevaucher les appels Ouverture/fermeture couteuse Solution : connection pooling (JDBC 2) 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 15.1.2 Gestion de la sécurité Qui gère l ’idUtilisateur et le mot de passe ? par les données : le SGBD par les traitements : le programme client 18/09/2018 © Robert Godin. Tous droits réservés.

ControleEnrPretsSecuriteParDonnees 18/09/2018 © Robert Godin. Tous droits réservés.

ControleEnrPretsSecuriteParTraitement 18/09/2018 © Robert Godin. Tous droits réservés.

15.1.3 Façade pour les services de la couche application 18/09/2018 © Robert Godin. Tous droits réservés.

Diagramme de séquence pour ControleEnregistrerPretAvecFacade Dépendance réduite par rapport à la couche persistence 18/09/2018 © Robert Godin. Tous droits réservés.

Patron d'objet de transfert de données (OTD) 18/09/2018 © Robert Godin. Tous droits réservés.

ControleEnregistrerPretsSimpleAvecFacade Connexion libérée entre les appels 18/09/2018 © Robert Godin. Tous droits réservés.

15.2 Développement d'applications Web par servlet Java 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 15.2.1 Principe de base du Web : le protocole HTTP et le langage de présentation HTML 18/09/2018 © Robert Godin. Tous droits réservés.

15.2.2 Développement de servlet Java 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Diagramme de séquence de l'invocation de la servlet ServletEnregistrerPretSimpleFacade Réutilisation des classes du client-serveur 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 18/09/2018 © Robert Godin. Tous droits réservés.

15.2.3 Cycle de vie d'une servlet Compilation et démarrage à la première invocation (par conteneur) init() appelé une fois permet d ’initialiser des ressources (e.g. connexion) nouveau fil à chaque invocation d ’une méthode de service (doGet, doPost,…) destroy() à la fin e.g. fermer connexion 18/09/2018 © Robert Godin. Tous droits réservés.

15.2.4 Gestion d'une session HTTP dans une servlet La FORM n ’envoie que le idUtilisateur 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. FormIdentificationUtilisateurFacade.html 18/09/2018 © Robert Godin. Tous droits réservés.

EnregistrerPrets en deux servlets 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 18/09/2018 © Robert Godin. Tous droits réservés.

15.2.5 DataSource, ConnectionPoolDataSource et PooledConnection Passage par serveur JNDI (Java Naming and Directory Interface) e.g. serveur LDAP repérage de ressources (e.g. serveur BD) accès sécurisé 18/09/2018 © Robert Godin. Tous droits réservés.

Ouverture d ’une Connection en passant par DataSource 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Enregistrement du DataSource par descripteur de déploiement XML pour serveur embarqué OC4J de Oracle9i JDevelopper (généré par JDevelopper) 18/09/2018 © Robert Godin. Tous droits réservés.

Partage d'un pool de connexions 18/09/2018 © Robert Godin. Tous droits réservés.

15.2.6 Mécanismes de sécurité pour l'accès à un servlet Sécurité programmatique Sécurité déclarative par le conteneur rôles/utilisateurs géré par conteneur 18/09/2018 © Robert Godin. Tous droits réservés.

15.3 Architecture pour la persistance transparente Persistance gérée par la classe métier Transparent au client Mécanisme paresseux de matérialisation/dématérialisation gestion de cache transactionnelle programmation complexe Norme Java Data Objects (JDO) http://access1.sun.com/jdo/ inspirée de ODMG outils : http://www.javaskyline.com/database.html 18/09/2018 © Robert Godin. Tous droits réservés.

15.4 Norme EJB de J2EE (http://java.sun.com/products/ejb/) Transparence « extrême » persistance répartition services Spécification déclarative de services comportement transactionnel sécurité partage de ressources (CPU, mémoire, serveurs, ...) partage transparent d’un bassin d’objets EJB (pooling) entre clients Prise en charge des services par le conteneur à EJB 18/09/2018 © Robert Godin. Tous droits réservés.

Séparation propre des responsabilités (rôles) Fournisseur de EJB (EnterpriseBean Provider) développe les composantes EJB Assembleur d'application (Application Assembler) . assemble EJB + servlet, JSP, HTML, etc. Déployeur (Deployer) déploie les EJB dans leur environnement d'exécution Fournisseur de serveur EJB (EJB Server Provider). serveur EJB : services de bas niveau pour le conteneur EJB Fournisseur de conteneur EJB (EJB Container Provider) conteneur EJB : environnement de déploiement et d'exécution des EJB Administrateur de Système (System Administrator) administre serveur et le conteneur EJB 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Catégories de EJB EJB session (Session Bean) service d ’objet distant un seul client à la fois par objet partage d’un bassin d’objets entre clients état au besoin entre les appels stateful/stateless session EJB non persistent (perdu suite à une panne) EJB entité (Entity Bean) services d'objet distant persistent objet ~ proxy pour une ligne d'une table un objet EJB entité peut être partagé par plusieurs clients EJB message (Message Bean) service de message 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Codage d ’un EJB Interface home usine à objet EJB Interface à distance (remote) accès aux méthodes d'un objet EJB Classe bean (bean class) implémente les méthodes de l'objet EJB 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 15.4.1 Développement d'un EJB session sans état : FacadeEnrPretSimpleSessionEJB Interface home (usine à EJB) Interface remote (interface à l’objet EJB) 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 18/09/2018 © Robert Godin. Tous droits réservés.

Descripteur de déploiement XML 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Client du EJB : façade locale qui délègue à la façade EJB distante (patron Business Delegate) 18/09/2018 © Robert Godin. Tous droits réservés.

JDevelopper 10g (déploiement de défaut différent) 18/09/2018 © Robert Godin. Tous droits réservés.

Interposition transparente d ’objets Conteneur de bean 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Dans ServletEnregistrerPretsSimpleFacade remplacer FacadeEnregistrerPretsSimple par une FacadeEJBEnregitrerPretSimple 18/09/2018 © Robert Godin. Tous droits réservés.

15.4.2 Développement d'un EJB session avec état 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Classe bean État maintenu entre les appels Méthode du cycle de vie appelée à la création de l’objet avant ejbCreate() NB setSessionContext() permet d’initialiser la connexion au DataSource (interdit dans ejbCreate()…) 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Classe Bean (suite) : méthode métier identique à FacadeEnregistrerPrets 18/09/2018 © Robert Godin. Tous droits réservés.

Processus de création d ’un EJB avec état 18/09/2018 © Robert Godin. Tous droits réservés.

Client du EJB : façade locale qui délègue à la façade EJB distante 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Dans ServletIdentificationUtilisateurFacade et ServletTerminerPretFacade remplacer FacadeEnregistrerPrets par une FacadeEJBEnregistrerPrets 18/09/2018 © Robert Godin. Tous droits réservés.

15.4.3 Support de transactions distribuées Plusieurs ressources indépendantes serveur BD, serveur JMS, ... Protocole transparent de transaction répartie Démarcation programmatique ou déclarative 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 15.4.4 Démarcation programmatique de transaction distribuée (bean managed transaction demarcation) Deux connexions indépendantes ! 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Classe bean Deux connexions 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Classe bean 18/09/2018 © Robert Godin. Tous droits réservés.

Descripteur de déploiement XML 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 15.4.5 Démarcation déclarative de transaction (container managed transaction demarcation) 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Classe bean 18/09/2018 © Robert Godin. Tous droits réservés.

balise <trans-attribut> NotSupported Required Supports RequiresNew Mandatory Never 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. 15.4.6 EJB entité Bean Managed Persistence - BMP codage du SQL/JDBC Container Managed Persistence - CMP SQL généré par conteneur associations depuis EJB 2 héritage pas encore supporté clé primaire obligatoire ... 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Classe de clé primaire 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Interface remote 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Interface home 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Classe bean 18/09/2018 © Robert Godin. Tous droits réservés.

Descripteur de déploiement XML 18/09/2018 © Robert Godin. Tous droits réservés.

Descripteur spécifique au conteneur Orion 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Client du EJB 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Client du EJB (suite) 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. Client du EJB (suite) 18/09/2018 © Robert Godin. Tous droits réservés.

Façade EJB session accède au EJB entité 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. EJB 2 Interfaces locales pour accès léger EJBLocalHome, EJBLocalObject Gestion des associations par le conteneur EJBQL pour la spécification des findXXX() 18/09/2018 © Robert Godin. Tous droits réservés.

© Robert Godin. Tous droits réservés. EJB 3 Simplification du développement d’un EJB Annotation par métadonnées dans le code remplace descripteur de déploiement EJB codé comme une classe ordinaire (POJO) 18/09/2018 © Robert Godin. Tous droits réservés.