Faculté des Sciences et Techniques de Tanger
Atelier 13 JEE (Couche DAO (Entities) avec Spring Boot)
Atelier N°13
Objectif de l’atelier : Nous désirons mettre en œuvre une gestion des
compte bancaires avec (Spring Boot)
I) Nous envisageons trois couches: couche d’accès aux données (Dao),
couche (Metier) et couche Présentation (Web) comme indique le
schéma suivant:
II) Transformez le diagramme de classes suivant en base de données:
Faculté des Sciences et Techniques de Tanger
Atelier 13 JEE (Couche DAO (Entities) avec Spring Boot)
Atelier N°13
II-1) New Spring Starter Project
II-2) New Spring Starter Project (Gestion de dépendances)
Faculté des Sciences et Techniques de Tanger
Atelier 13 JEE (Couche DAO (Entities) avec Spring Boot)
Atelier N°13
II-3) Création des entités
II-4) diagramme de classes des entités sous eclipse :
Faculté des Sciences et Techniques de Tanger
Atelier 13 JEE (Couche DAO (Entities) avec Spring Boot)
Atelier N°13
II-5) Création des entités (entities) :
[Link]
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Entity
public class Client implements Serializable {
@Id
@GeneratedValue(strategy=[Link])
private Long codeClient;
private String nomClient;
@OneToMany(mappedBy="client",fetch=[Link])
private Collection<Compte> comptes;
public Long getCodeClient() {
return codeClient;
}
public void setCodeClient(Long codeClient) {
[Link] = codeClient;
}
public String getNomClient() {
return nomClient;
}
public void setNomClient(String nomClient) {
[Link] = nomClient;
}
public Collection<Compte> getComptes() {
return comptes;
}
public void setComptes(Collection<Compte> comptes) {
[Link] = comptes;
}
public Client(String nomClient) {
super();
[Link] = nomClient;
}
public Client() {
super();
}
}
[Link]
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
Faculté des Sciences et Techniques de Tanger
Atelier 13 JEE (Couche DAO (Entities) avec Spring Boot)
Atelier N°13
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="TYPE_CPTE",discriminatorType=[Link],l
ength=2)
public abstract class Compte implements Serializable {
@Id
private String codeCompte;
private Date dateCreation;
private double solde;
@ManyToOne
@JoinColumn(name="CODE_CLI")
private Client client;
@ManyToOne
@JoinColumn(name="CODE_EMP")
private Employe employe;
@OneToMany(mappedBy="compte")
private Collection<Operation> operations;
public Compte(String codeCompte, Date dateCreation, double solde) {
super();
[Link] = codeCompte;
[Link] = dateCreation;
[Link] = solde;
}
public Compte() {
super();
// TODO Auto-generated constructor stub
}
public String getCodeCompte() {
return codeCompte;
}
public void setCodeCompte(String codeCompte) {
[Link] = codeCompte;
}
public Date getDateCreation() {
return dateCreation;
}
public void setDateCreation(Date dateCreation) {
[Link] = dateCreation;
}
public double getSolde() {
return solde;
}
public void setSolde(double solde) {
Faculté des Sciences et Techniques de Tanger
Atelier 13 JEE (Couche DAO (Entities) avec Spring Boot)
Atelier N°13
[Link] = solde;
}
public Client getClient() {
return client;
}
public void setClient(Client client) {
[Link] = client;
}
public Employe getEmploye() {
return employe;
}
public void setEmploye(Employe employe) {
[Link] = employe;
}
public Collection<Operation> getOperations() {
return operations;
}
public void setOperations(Collection<Operation> operations) {
[Link] = operations;
}
[Link]
package [Link];
import [Link];
import [Link];
import [Link];
@Entity
@DiscriminatorValue("CC")
public class CompteCourant extends Compte {
public double getDecouvert() {
return decouvert;
}
public void setDecouvert(double decouvert) {
[Link] = decouvert;
}
private double decouvert;
public CompteCourant(String codeCompte, Date dateCreation, double solde,
double decouvert) {
super(codeCompte, dateCreation, solde);
[Link] = decouvert;
}
public CompteCourant() {
super();
Faculté des Sciences et Techniques de Tanger
Atelier 13 JEE (Couche DAO (Entities) avec Spring Boot)
Atelier N°13
// TODO Auto-generated constructor stub
}
}
[Link]
package [Link];
import [Link];
import [Link];
import [Link];
@Entity
@DiscriminatorValue("CE")
public class CompteEpargne extends Compte {
private double taux;
public double getTaux() {
return taux;
}
public void setTaux(double taux) {
[Link] = taux;
}
public CompteEpargne(String codeCompte, Date dateCreation, double solde,
double taux) {
super(codeCompte, dateCreation, solde);
[Link] = taux;
}
public CompteEpargne() {
super();
// TODO Auto-generated constructor stub
}
}
[Link]
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
Faculté des Sciences et Techniques de Tanger
Atelier 13 JEE (Couche DAO (Entities) avec Spring Boot)
Atelier N°13
import [Link];
@Entity
public class Employe implements Serializable {
@Id
@GeneratedValue(strategy=[Link])
private Long codeEmploye;
private String nomEmploye;
@ManyToOne
@JoinColumn(name="code_emp_sup")
private Employe employeSup;
@ManyToMany
@JoinTable(name="EMP_GR")
private Collection<Groupe> groupes;
public Employe(String nomEmploye) {
super();
[Link] = nomEmploye;
}
public Employe() {
super();
// TODO Auto-generated constructor stub
}
public Long getCodeEmploye() {
return codeEmploye;
}
public void setCodeEmploye(Long codeEmploye) {
[Link] = codeEmploye;
}
public String getNomEmploye() {
return nomEmploye;
}
public void setNomEmploye(String nomEmploye) {
[Link] = nomEmploye;
}
@JsonIgnore
public Employe getEmployeSup() {
return employeSup;
}
@JsonSetter
public void setEmployeSup(Employe employeSup) {
[Link] = employeSup;
}
@JsonIgnore
public Collection<Groupe> getGroupes() {
return groupes;
}
public void setGroupes(Collection<Groupe> groupes) {
[Link] = groupes;
}
Faculté des Sciences et Techniques de Tanger
Atelier 13 JEE (Couche DAO (Entities) avec Spring Boot)
Atelier N°13
[Link]
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Entity
public class Groupe implements Serializable {
@Id
@GeneratedValue(strategy=[Link])
private Long codeGroupe;
private String nomGroupe;
@ManyToMany(mappedBy="groupes")
private Collection<Employe> employe;
public Groupe(String nomGroupe) {
super();
[Link] = nomGroupe;
}
public Groupe() {
super();
// TODO Auto-generated constructor stub
}
public Long getCodeGroupe() {
return codeGroupe;
}
public void setCodeGroupe(Long codeGroupe) {
[Link] = codeGroupe;
}
public String getNomGroupe() {
return nomGroupe;
}
public void setNomGroupe(String nomGroupe) {
[Link] = nomGroupe;
}
public Collection<Employe> getEmploye() {
return employe;
}
public void setEmploye(Collection<Employe> employe) {
[Link] = employe;
}
Faculté des Sciences et Techniques de Tanger
Atelier 13 JEE (Couche DAO (Entities) avec Spring Boot)
Atelier N°13
[Link]
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(length=1)
public class Operation implements Serializable {
@Id
@GeneratedValue(strategy=[Link])
private Long numeroOperation;
private Date dateOperation;
private double montant;
@ManyToOne
@JoinColumn(name="CODE_CPTE")
private Compte compte;
@ManyToOne
@JoinColumn(name="CODE_EMP")
private Employe employe;
public Operation(Date dateOperation, double montant) {
super();
[Link] = dateOperation;
[Link] = montant;
}
public Operation() {
super();
// TODO Auto-generated constructor stub
}
public Long getNumeroOperation() {
return numeroOperation;
}
Faculté des Sciences et Techniques de Tanger
Atelier 13 JEE (Couche DAO (Entities) avec Spring Boot)
Atelier N°13
public void setNumeroOperation(Long numeroOperation) {
[Link] = numeroOperation;
}
public Date getDateOperation() {
return dateOperation;
}
public void setDateOperation(Date dateOperation) {
[Link] = dateOperation;
}
public double getMontant() {
return montant;
}
public void setMontant(double montant) {
[Link] = montant;
}
public Compte getCompte() {
return compte;
}
public void setCompte(Compte compte) {
[Link] = compte;
}
public Employe getEmploye() {
return employe;
}
public void setEmploye(Employe employe) {
[Link] = employe;
}
}
[Link]
package [Link];
import [Link];
import [Link];
@Entity
@DiscriminatorValue("R")
public class Retrait extends Operation {
[Link]
package [Link];
import [Link];
import [Link];
@Entity
@DiscriminatorValue("V")
public class Versment extends Operation{
Faculté des Sciences et Techniques de Tanger
Atelier 13 JEE (Couche DAO (Entities) avec Spring Boot)
Atelier N°13
III) Editer le fichier de configuration [Link]:
# DataSourceSitting:
[Link] = jdbc:mysql://localhost:3306/db_banque_lsi
[Link] = root
[Link] =
[Link]-class-name=[Link]
# Sprcify the DBMS
[Link] = MYSQL
# Show or not log for each sql query
[Link]-sql= true
# Hibernate ddl auto (create, crete-drop, update)
[Link]-auto= update
# Naming Strategy
[Link]-strategy= [Link]
[Link] = [Link].MySQL5Dialect
[Link]-bean-definition-overriding=true
IV) Le fichier [Link]
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="[Link]
xmlns:xsi="[Link]
xsi:schemaLocation="[Link]
[Link]
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>[Link]</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>[Link]</groupId>
<artifactId>BanqueSI</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>BanqueSI</name>
Faculté des Sciences et Techniques de Tanger
Atelier 13 JEE (Couche DAO (Entities) avec Spring Boot)
Atelier N°13
<description>Demo project for Spring Boot</description>
<properties>
<[Link]>1.8</[Link]>
</properties>
<dependencies>
<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>[Link]</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>[Link]</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>[Link]</groupId>
<artifactId>hibernate-validator</artifactId>
<version>[Link]</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>[Link]</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
V) Le lancement de la classe [Link] va
Faculté des Sciences et Techniques de Tanger
Atelier 13 JEE (Couche DAO (Entities) avec Spring Boot)
Atelier N°13
générer le shéma de la base de données db_banque_lsi
Faculté des Sciences et Techniques de Tanger
Atelier 13 JEE (Couche DAO (Entities) avec Spring Boot)
Atelier N°13