Design Pattern Data Access Object (DAO)
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
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 :
- Lire
- Ecrire
- Modifier
- 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
En version developer c’est parfait
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
- Création du projet Maven
- Dans le package « exercice1.integration.entities », créer ces deux classes Event.java et Adress.java
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
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
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
taper : log4j
<!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> |
Une question?