Patrons de conceptions problème solution Design Patterns GoF



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

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

OpenPaaS Le réseau social d'entreprise

Application web de gestion de comptes en banques

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

TP Programmation Java / JDBC / Oracle

Java DataBaseConnectivity

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

Programmation d application Bases de données avec Java

Création d une application JEE

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

PHP 5. La base de données MySql. A. Belaïd 1

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

Accès aux bases de données

Cours: Administration d'une Base de Données

Création d un service web avec NetBeans 5.5 et SJAS 9

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

Plateforme PAYZEN. Définition de Web-services

Développement Web - Object Relational Mapping and Hibernate

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

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

1. Base de données SQLite

Définition des Webservices Ordre de paiement par . Version 1.0

I4 : Bases de Données

PHP 4 PARTIE : BASE DE DONNEES

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

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Tutoriel d installation de Hibernate avec Eclipse

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Bases de données relationnelles

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Projet de programmation (IK3) : TP n 1 Correction

CREATION WEB DYNAMIQUE

Serveur d'archivage 2007 Installation et utilisation de la BD exist

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

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

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

2 Chapitre 1 Introduction

Thierry Déléris. BMC Mainview Data Server Synthèse & Mise en œuvre

Java - MySQL. Code: java-mysql

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

JDBC le langage Java XVI-1 JMF

Les BASES de DONNEES dans WampServer

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

RMI le langage Java XII-1 JMF

Pratique et administration des systèmes

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Compte-rendu de projet de Système de gestion de base de données

Remote Method Invocation (RMI)

AGRÉGATION «ÉCONOMIE ET GESTION»

Les bases de données

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

SQL Historique

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

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

Programmer en JAVA. par Tama

LES ACCES ODBC AVEC LE SYSTEME SAS

RAPPORT DE STAGE GWT PRISE EN MAIN SERVLET - TEST DES DAO TELOSYS PLUGIN ECLIPSE WIZARD DATASET TELOSYS

Programmation Par Objets

1. Langage de programmation Java

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

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

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

BTS/CGO P10 SYSTEME INFORMATION Année

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Bases de données et sites WEB

PHP. PHP et bases de données

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Olivier Mondet

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin Talend

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

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

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Alfstore workflow framework Spécification technique

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

A QUOI SERVENT LES BASES DE DONNÉES?

Stockage de données sous Android

Bases de SQL. Hacks 1-6 CHAPITRE UN

APIs de table pour SQL Server

Gestion du cache dans les applications ASP.NET

Un ordonnanceur stupide

IFT3030 Base de données. Chapitre 1 Introduction

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Bases de données et fournisseurs de contenu

Une introduction à la technologie EJB (2/3)

Architecture Orientée Service, JSON et API REST

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Applet pour visualiser les variables «automate» notifiées

Cours Bases de données 2ème année IUT

[BASE DE DONNEES MULTIMEDIA]

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

BASE DE DONNÉES XML NATIVE

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

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)

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application

Transcription:

- Patrons de conceptions pour la programmation orientée objet - Chaque problème de programmation = déjà rencontré par d autres informaticiens - Une solution existe généralement parmi les Design Patterns décrits dans la «littérature» - Des lectures pour approfondir le sujet: «Design Patterns GoF»

Dans le cas de l accès aux données, des programmeurs ont montré que le code le plus pratique est : - Une couche métier: objets simples (POJO en Java) correspondant aux tables de la base de données, avec attributs et getters/setters - Une couche DAO (Data Access Objects): classes contenant le code pour la connexion à la base de données, les requêtes SQL, et qui se charge d intégrer le résultat de ces requêtes dans les objets métiers delete) - Les classes DAO = méthodes CRUD (create, retrieve, update,

Exemple de couche métier : User - id: int - age: int - firstname: String - name: String 1 * DomesticAnimal - id: int - name: String - age: int public class User { public class DomesticAnimal { private int id; private int age; private String firstname; private String name; public Collection<DomesticAnimal> domesticanimals; public User() { public int getage() { return age; public void setage(int age) { this.age = age; private int id; private int age; private String name; private User user; public int getage() { return age; public void setage(int age) { this.age = age;

Couche DAO correspondant: UserDAO + create(user) : User + retrieveall() : Collection<User> + save(user) : User + update(user) : User DomesticAnimalDAO + create(domesticanimal) : DomesticAnimal + retrieveall(collection<domesticanimal>) : DomesticAnimal + save(domesticanimal) : DomesticAnimal + update(domesticanimal) : DomesticAnimal MySQLUserDAOImpl - connecttodatabase() : void + create(user) : User + retrieveall() : Collection<User> + save(user) : User + update(user) : User OracleUserDAOImpl - connecttodatabase() : void + create(user) : User + retrieveall() : Collection<User> + save(user) : User + update(user) : User OracleDomesticAnimalDAOImpl - connecttodatabase() : void + create(domesticanimal) : DomesticAnimal + retrieveall(collection<domesticanimal>) : DomesticAnimal + save(domesticanimal) : DomesticAnimal + update(domesticanimal) : DomesticAnimal

public interface UserDAO { public void create(user user); public void delete(user user); public void update(user user); public Collection<User> retrieveall(); public class OracleUserDAOImpl implements UserDAO { private Connection connecttodatabase() { try { Class.forName("oracle.jdbc.driver.OracleDriver"); catch (ClassNotFoundException e) { System.err.println("Erreur de chargement du driver " + e); return null; try { String url = "jdbc:oracle:thin:@neptune.ens:1521:master"; Connection c = DriverManager.getConnection(url, "scott", "tiger"); return c; catch (Exception e) { System.err.println("Erreur de connection " + e); return null; public void create(user user) { Connection connection = connecttodatabase(); try { Statement stmt = connection.createstatement(); String sql = "Insert into User(name,firstName, age) values(" + user.getname() + "," + user.getfirstname() + "," + user.getage() + ");"; stmt.execute(sql); catch (SQLException e) { System.err.println("Erreur dans l'enregistrement de l'utilisateur");

Conclusion : On respecte le principe d indépendance des couches Tout le code SQL est centralisé (simplifie la maintenance) On pourra ensuite manipuler avec simplicité les objets métiers dans le code (pour du calcul, de la présentation ) Si on change de SGBD, une seule couche à faire évoluer, le reste est toujours valable On peut facilement faire évoluer la couche métier Mais attention: la couche métier est intimement liée au schéma de la base de données, ils doivent évoluer ensemble!