Top Banner
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
15

Connexion jdbc

Jul 21, 2015

Download

Education

Ines Ouaz
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Connexion jdbc

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

Page 2: Connexion jdbc

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 :

Page 3: Connexion jdbc

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 ().

Page 4: Connexion jdbc

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…

Page 5: Connexion jdbc

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

Page 6: Connexion jdbc

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.

Page 7: Connexion jdbc

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.

Page 8: Connexion jdbc

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.

Page 9: Connexion jdbc

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 :

Page 10: Connexion jdbc

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.

Page 11: Connexion jdbc

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.

Page 12: Connexion jdbc

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.

Page 13: Connexion jdbc

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.

Page 14: Connexion jdbc

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.

Page 15: Connexion jdbc

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 :