Design Pattern Data Access Object (DAO)

 

 

crud

 

Outils utilés :

Eclipse,

Mysql, au choix, wampserver3.0.6_x64_apache2.4.23_mysql5.7.14_php5.6.25-7.0.10.exe ou https://dev.mysql.com/downloads/file/?id=466291

Maven

Introduction

Le design pattern DAO

 

design patterns in java

 

 

Quand on veut persister un objet java, on utilise un DAO qui mappe un objet java vers le système où l’on veut faire de la persistance, que ce soit système de fichier ou bases de données.

Ca permet de changer de manière transparente le système de persistance utilisé.

On peut changer de base de données facilement sans modifier notre code Java.

On utilise le design pattern DAO Data Access Object lorsqu’on souhaite persister des objets (Java par exemple) dans un système permettant de stocker des données, une base de données par exemple. Le pattern DAO peut également être utilisé avec d’autres systèmes de stockage : fichier texte, xml…

 

Problématique :

 

Comment mapper les données dans un SGBDR avec des objets JAVA et faire du CRUD?

 

Faire des opérations CRUD, c'est-à-dire, créer, afficher, modifier, supprimer. De l’anglais Create, Read, Update, Delete.

 

Une question? Posez-la ici

 

Le mappage des données est le mécanisme visant à faire correspondre les attributs d’une table de système stockage (bdd) avec les attributs des objets Java.

Exemple : mappage d’une table CLIENT avec un objet client.

 

CLIENT
ID int
Nom char
Prenom char
Adresse varchar

 

 

public class Client {

             privatelongid ;

             private String nom ;

             private String prenom ;

             private String adresse ;

             //un setter…

             publicvoid setNom(String nom){

             this.nom=nom ;

             }

            

            

             // getter et setters:

             public String getNom() {

                    returnnom;

             }

             publicvoid setNom(longid) {

                    this.nom = nom;

             }

      

}

 

Une question? Posez-la ici

 

Pattern DAO

 

Le pattern DAO permet de faire le lien entre la couche métier et la coucher persistante, afin de centraliser les mécanismes de mapping entre notre système de stockage et nos objets JAVA.

Il permet également de prévenir un changement éventuel de système de stockage de données (de Mysql vers Oracle par exemple)

LA couche persistante correspond à notre système de stockage et la couche métier correspond à nos objets java dans notre BDD.

Le pattern DAO consiste à ajouter un ensemble d’objet dont le role sera d’aller :

 

  1. Lire
  2. Ecrire
  3. Modifier
  4. Supprimer

 

Des données dans notre système de stockage.

Cet ensemble d’objets s’appelle la couche DAO.

Ce sera donc par le biais de ces objets spécifiques que nous pourrons récupérer des instances de nos objets métiers correspondants à des entrées dans notre base de données.

Nous pouvons donc déterminer la façon dont nos objets vont travailler, parce que nous connaissons les actions que ces objets devront faire.

Généralement, nous avons 1 DAO par table/objet.

Installation de mysql community

 

mysql installer

 

En version developer c’est parfait

 

 

 

mysql installer installation upgrade following products

 

Extrait du log d’installation :

 

1: Action 10:26:51: INSTALL.

1: 1: MySQL Server 5.7 2: {12B28758-EA59-4EF9-A221-E7C71C63B91F}

1: Action 10:26:51: FindRelatedProducts. Searching for related applications

1: Action 10:26:51: AppSearch. Searching for installed applications

1: Action 10:26:51: LaunchConditions. Evaluating launch conditions

1: Action 10:26:51: ValidateProductID.

1: Action 10:26:51: CostInitialize. Computing space requirements

1: Action 10:26:51: FileCost. Computing space requirements

1: Action 10:26:51: CostFinalize. Computing space requirements

1: Action 10:26:51: MigrateFeatureStates. Migrating feature states from related applications

1: Action 10:26:51: InstallValidate. Validating install

1: Action 10:26:51: SaveTargetDir.

1: Action 10:26:51: InstallInitialize.

1: Action 10:26:51: RemoveExistingProducts. Removing applications

1: Action 10:26:51: ProcessComponents. Updating component registration

1: Action 10:26:51: GenerateScript. Generating script operations for action:

1: Updating component registration

1: Action 10:26:51: UnpublishFeatures. Unpublishing Product Features

1: Action 10:26:51: RemoveRegistryValues. Removing system registry values

1: Action 10:26:51: RemoveShortcuts. Removing shortcuts

1: Action 10:26:51: RemoveFiles. Removing files

1: Action 10:26:51: InstallFiles. Copying new files

1: File: Copying new files, Directory: , Size:

1: Action 10:26:52: RunPostInstallProperty.

 

 

Configurer l'accès root/password, comme d'habitude, si vous avez besoin d'aide:

 

Une question? Posez-la ici

 

 

  1. Création du projet Maven
  2. Dans le package « exercice1.integration.entities », créer ces deux classes Event.java et Adress.java

 

new maven project daoexemple

 

Une question? Posez-la ici

 

Soient les 2 tables ci-dessous :

 

Event
event_id int
event_table varchar
event_begin_date date
event_all_day bolean
adress_id int

 


1-->1

 

Adress
adress_id int
adress_name varchar
adress_street varchar
adress_comments varchar
adress_zip_code varchar
adress_city varchar

 

 

On rajoute les composant dans le pom.xml de maven

Aller dans le MVN repository , MAVEN telecharge les jars pour nous automatiquement

On va chercher hibernate et un connecteur SQL

 

Aller sur

http://mvnrepository.com/

taper : hibernate

puis

<!--   https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->

<dependency>

    <groupId>org.hibernate</groupId>

    <artifactId>hibernate-core</artifactId>

    <version>5.2.3.Final</version>

</dependency>

Aller sur

http://mvnrepository.com/

taper : mysql

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java   -->

<dependency>

    <groupId>mysql</groupId>

    <artifactId>mysql-connector-java</artifactId>

    <version>5.1.10</version>

</dependency>

Aller sur

http://mvnrepository.com/

taper : log4j

<!-- https://mvnrepository.com/artifact/log4j/log4j -->

<dependency>

    <groupId>log4j</groupId>

    <artifactId>log4j</artifactId>

    <version>1.2.17</version>

</dependency>

 

Une question?