DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 25 mars
2015
1
Accès à la base de données via JDBC
1. Connexion de la base de données
Création de la base de données E-COMMERCE :
Vous donnez un nom à votre base de données selon votre choix par exemple : e-commerce
On va créer deux tables dans la base : la table produit et la table categorie selon le
diagramme de classes produit suivant :
La structure de la table PRODUIT est la suivante :
Code SQL de la table PRODUIT
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 25 mars
2015
2
La structure de la table CATEGORIE
Code SQL de la table CATEGORIE
Insérer un enregistrement dans la table CATEGORIE et deux enregistrements dans la table
PRODUIT.
2. Création d’un projet JAVA APPLICATION_JDBC
Ajouter la librairie adéquate à la CLASSPATH du projet mysql-connector-java-version.jar
Etapes d’ajout de la lib :
1- Cliquez properties du projet
2- Cliquez sur Java Build Path
3- Selectionnez ADD Jars > choisir la librairie
adéquate> Finir par OK
4- La librairie sera ajoutée à la CLASSPATH du
projet et vous pouvez vérifier ça comme
suit :
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 25 mars
2015
3
Exemple 1 :
On va implémenter une classe de test pour vous montrer en premier lieu comment
se connecter à une base de données via JDBC (Java DataBase Connectivity). On doit
connaitre 4 informations nécessaires pour pouvoir accéder à la base : DRIVER, URL, LOGIN et
PASSWORD.
Un simple exemple de connexion à la base de données et d’exécution d’une requête de
recherche (SELECT). Vous pouvez juste tester l’exécution de ce petit code dans une
méthode
main ().
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 25 mars
2015
4
Résultat de l’exécution de notre classe de test. On va implémenter une deuxième
méthode pour un projet structuré sous forme de package tout en suivant l’architecture du
modèle en couche.
Exemple 2 : Mapping objet relationnel
Nous souhaitons créer une application java qui permet de :
Enregistrer une categorie
Enregistrer un produit
Saisir au clavier un mot clé et d’afficher tous les produits dont le nom contient ce mot
clé.
Dans cette application, nous devons séparer la couche métier de la couche présentation.
Création de l’entité Produit comme étant une classe Java Produit.java contenant les attributs
et les méthodes getters et setters ainsi que les constructeurs et la classe Categorie.java.
Architecture du projet et comme indiqué sur la
photo, il y aura 4 package à créer :
Package 1 : def.jdbc.dto c’est un
package contenant les entités relatifs à
tout projet
Package 2 : def.jdbc.dao c’est un
package contenant les classes
implémentant nos requêtes et tout accès à
la base de données
Package 3 : def.jdbc.metier c’est un
package contenant n’importe quel autre
traitement comme calcul, envoie de mail…
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 25 mars
2015
5
Package 3 : def.jdbc.presentation c’est un package contenant toutes les interfaces
graphique de notre application mais vu qu’on ne va pas faire cette partie maintenant,
on va juste la consacrer pour mettre notre classe de test main.
I. Préparation des entités DTO (Objet de transfert de données : entités)
On va commencer par créer nos classes Produit et Categorie dans le package dto :
1. CREATION DE L’ENTITE PRODUIT
On doit définir dans cette classe ce qui suit :
Les attributs qui doivent être privées.
Il y a une relation entre la table PRODUIT et la table CATEGORIE de la manière
suivante : un produit appartient à une catégorie et une catégorie contient une liste de
produit. On doit définir ça coté objet.
Il faut définir un objet catégorie de type Classe Categorie dans la classe Produit
Il faut définir une Liste d’objet de type Classe Produit dans la classe Categorie
Les constructeurs selon notre besoin
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 25 mars
2015
6
Les getters et setters de chaque attribut.
Il faut définir tout les getters et setter sans exception dans la classe Produit. Il faut faire de
même pour la classe Categorie.
2. CREATION DE L’ENTITE CATEGORIE
Définir les attributs de la classe Categorie, on doit définir une liste de produits de type
Produit. Faisant la même chose en définissant les constructeurs et les getters et les setters
de la classe.
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 25 mars
2015
7
II. Préparation des DAO (Objet d’Accès aux Données)
1. SINGLETON DE CONNEXION A UNE BASE DE DONNEES
Nous avons maintenant nos objets Java et notre base de données, avant de voir
comment fonctionne ce pattern de conception, il ne nous reste juste à voir comment nous
allons implémenter la connexion à la base de données.
Afin de pouvoir gagner en souplesse et en allocation mémoire, nous allons utiliser le
pattern singleton afin d'instancier et d'utiliser la connexion à la base de données utilisée. Il
va de soit que vous savez vous connecter à une base de données via JDBC (Java DataBase
Connectivity).
Il s'agit d'un objet dont le constructeur est déclaré static, ceci afin d'assurer que seule
une instance de l'objet en question puisse être créée. Voici le code source de mon singleton,
celui-ci sert à créer une connexion vers la base MySql, modifiez le code source selon vos
besoins.
Il y a 4 attributs qu’il faut instancier dès le début pour pouvoir se connecter à une base de
données : DRIVER, URL, LOGIN et PASSWORD.
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 25 mars
2015
8
Bon, nous avons maintenant tous les éléments nécessaires afin de travailler avec notre base
de données via le pattern DAO, mais il nous reste à savoir ce que fait exactement ce
pattern...
Le pattern DAO (Data Access Object) permet de faire le lien entre la couche métier et la
couche persistante, ceci afin de centraliser les mécanismes de MAPPING entre notre
système de stockage et nos objets Java. Il permet aussi de prévenir un changement éventuel
de système de stockage de données (de MySql vers Oracle par exemple).
La couche persistante correspond, en fait, à notre système de stockage et la couche métier
correspond à nos objets Java, mapper sur notre base. Le pattern DAO consiste à ajouter un
ensemble d'objets dont le rôle sera d'aller Lire, Ecrire, Modifier et Supprimer. Dans notre
système de stockage. Cet ensemble d'objet s'appelle la couche DAO.
2. CREATION DE L’INTERFACE IPRPDUITDAO
Une interface définit un comportement (d’une classe) qui doit être implémenté par une
classe, sans implémenter ce comportement. C’est un ensemble de méthodes abstraites, et
de constantes. Les différences entre les interfaces et les classes abstraites :
Une interface n’implémente aucune méthode.
Une classe, ou une classe abstraite peut implémenter plusieurs interfaces, mais n’a
qu’une super classe, alors qu’une interface peut dériver de plusieurs autres
interfaces.
Des classes non liées hiérarchiquement peuvent implémenter la même interface.
Création d’une classe de type interface qui va définir les méthodes que j’aime implémenter
dans mon application. Définir les opérations CRUD (INSERT, UPDATE, DELETE, Consultation).
On va définir 4 opérations :
Insertion d’un nouveau produit
Modification d’un produit existant
Suppression d’un produit
Chargement d’un produit à partir de son identifiant (clé primaire)
Recherche de la liste de tous les produits sans exception
Recherche des produits par un mot clé
Récupération de la liste des produits par catégorie.
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 25 mars
2015
9
3. IMPLEMENTATION DE PRODUITDAOIMPL
On va définir la classe ProduitDAOImpl qui implémente toutes les méthodes qui existent
dans IProduitDAO. Pour ce faire, il suffit juste d’écrire ce qui suit :
On obtiendra une classe contenant le squelette des méthodes qu’il faut implémenter par la
suite, il reste donc à implémenter chacune de ces méthodes à part :
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 25 mars
2015
10
Implémentez la méthode qui insère un nouveau produit en saisissant les données suivantes :
nom, description prix, quantité et id_categorie disponible.
Implémentez la méthode qui modifie les différentes données du produit en connaissant la
clé primaire.
Implémentez la méthode qui supprime un produit tout en connaissant son clé primaire.
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 25 mars
2015
11
Implémentez la méthode de recherche qui renvoie une liste de produits par mot clé.
Implémenter la méthode de récupération d’un produit à partir de son Identifiant.
Chargement d’un produit avec tous ces attributs même son attribut objet categeorie.
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 25 mars
2015
12
Implémenter la méthode de récupération de la liste des produits par catégorie.
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 25 mars
2015
13
A compléter à Implémenter les autres méthodes qui restent de la même manière des
méthodes précédentes.
III. Préparation des de la couche Métier
Elle correspond à la partie fonctionnelle de l'application, celle qui implémente la « logique »,
et qui décrit les opérations que l'application opère sur les données en fonction des requêtes
des utilisateurs, effectuées au travers de la couche présentation.
Les différentes règles de gestion et de contrôle du système sont mises en œuvre dans cette
couche. La couche métier offre des services applicatifs et métier à la couche présentation.
Pour fournir ces services, elle s'appuie, le cas échéant, sur les données du système,
accessibles au travers des services de la couche inférieure : couche d’accès aux données. En
retour, elle renvoie à la couche présentation les résultats qu'elle a calculés.
Création d’une interface métier IProduitMetier qui va définir les méthodes qu’on doit
implémenter appelant les méthodes qui existe déjà dans les classes DAO. La couche métier
joue le rôle intermédiaire entre la couche présentation et la couche métier.
On définit la classe ProduitMetierImpl qui implémente l’interface IProduitMetier.
La classe va définir les méthodes d’insertion, de mise à jour, de suppression et de recherche
définit déjà dans la couche d’accès aux données DAO. Cette couche va appeler les méthodes
implémentées dans cette dernière. On va définir l’objet produitDAO qui sera une instance de
la classe ProduitDAOImpl.
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 25 mars
2015
14
IV. Préparation du test
Dans cette partie, il faut implémenter l’interface de l’application. Elle peut être une interface
Swing ou bien une page web sous forme d’une page JSP. Dans cet exemple on va développer
juste une classe main de test et l’affichage sera sur la console d’Eclipse.
DEF (DEVELOPPEMENT/ ENCADREMENT/FORMATION) 25 mars
2015
15
Le résultat de l’exécution de la classe de test est présenté comme suit :
Top Related