MODULE 3 - Architecture en Couches et CRUD Complet
Objectifs du Module
Ce module vous permettra de:
- Maîtriser l'architecture à 3 couches (Controller, Service, Repository)
- Comprendre le rôle et l'importance de la couche Service
- Implémenter la validation des données avec Bean Validation
- Gérer les erreurs HTTP professionnellement avec ResponseEntity
- Créer une API REST complète et robuste
Contenu du Module
Théorie
Chapitre 1: La Couche Service en Détail
- Rôle et responsabilités de la couche Service
- Séparation des préoccupations
- Logique métier vs accès aux données
- Injection de dépendances
- Architecture complète Controller → Service → Repository
Chapitre 2: Validation des Données
- Introduction à Bean Validation (JSR 380)
- Annotations de validation:
@NotNull,@NotEmpty,@NotBlank@Size,@Min,@Max@Email,@Pattern@Past,@Future
@Validdans les contrôleurs- Messages d'erreur personnalisés
- Groupes de validation
- Validation personnalisée
Chapitre 3: Gestion des Erreurs HTTP
- Comprendre ResponseEntity
- Codes de statut HTTP (200, 201, 204, 400, 404, 500)
- Gestion des exceptions
@ExceptionHandler@ControllerAdvicepour gestion globale- Création de réponses d'erreur personnalisées
- Meilleures pratiques
Chapitre 4: Architecture 3 Couches Professionnelle
- Vue d'ensemble de l'architecture
- Flux de données complet
- Conventions de nommage
- Organisation des packages
- DTOs vs Entités (introduction)
- Meilleures pratiques professionnelles
Travaux Pratiques
TP3.1: Architecture CRUD Complète
Objectif: Créer une API REST complète avec validation et gestion d'erreurs
Contenu:
- Architecture à 3 couches (Controller, Service, Repository)
- Entité Product avec validation
- Opérations CRUD complètes
- Validation des données d'entrée
- Gestion professionnelle des erreurs (404, 400, 500)
- ResponseEntity pour toutes les réponses
- Tests avec Postman
Durée estimée: 4-6 heures
Prérequis:
- Module 2 complété (TP2.1 et TP2.2)
- Tous les chapitres du Module 3 lus
Niveau: Intermédiaire
TP3.2: CRUD Autonome (Défi)
Objectif: Même énoncé que le TP3.1 mais sans aucun code fourni — à réaliser seul
Contenu:
- Même application de gestion des étudiants
- Consignes claires : quoi faire, quels endpoints, quels codes HTTP
- Aucun détail technique, aucun code fourni
- 5 exercices bonus (recherche, stats, pagination, erreurs, PostgreSQL)
- Questions de révision et critères d'évaluation
Durée estimée: 2-3 heures
Prérequis: Avoir compris les concepts du Module 3
Niveau: Intermédiaire-Avancé (autonomie requise)
Prérequis
Connaissances Requises
Avant de commencer ce module, vous devez maîtriser:
✅ Création de projets Spring Boot avec Spring Initializr
✅ Structure d'un projet Spring Boot
✅ Configuration (application.properties / application.yml)
✅ Annotations de base (@RestController, @Service, @Repository)
✅ Annotations de mapping HTTP (@GetMapping, @PostMapping, etc.)
✅ JPA et repositories (findById, findAll, save, deleteById)
✅ Méthodes dérivées simples (findBy, And, Or)
✅ H2 en mode mémoire et persistant
Si vous n'êtes pas à l'aise avec ces concepts, retournez au Module 2.
Durée Estimée
Théorie: 8-10 heures (4 chapitres)
Pratique: 4-6 heures (1 TP complet)
Total: 12-16 heures (2-3 séances de 4-6 heures)
Ressources Supplémentaires
Documentation Officielle
Tutoriels Recommandés
Critères de Réussite
À la fin de ce module, vous devriez être capable de:
- ✅ Créer une architecture à 3 couches professionnelle
- ✅ Implémenter la validation des données avec Bean Validation
- ✅ Gérer les erreurs HTTP avec ResponseEntity
- ✅ Utiliser les bons codes de statut HTTP
- ✅ Implémenter toutes les opérations CRUD
- ✅ Séparer correctement la logique métier de l'accès aux données
- ✅ Créer une API REST robuste et professionnelle
Prochaines Étapes
Une fois ce module complété, vous serez prêt pour:
- Module 4: Bases de Données en Production (PostgreSQL, Jakarta/Javax, Hibernate, Lombok)
- Module 5: Spring Core - IoC et DI avancé
- Module 6: Spring Data JPA Avancé (Jointures, JPQL, Optimisation)
Pourquoi Ce Module Est Important
Avant Module 3
❌ Code fragile (pas de validation)
❌ Gestion d'erreurs basique
❌ Logique métier dans le contrôleur
❌ Difficile à tester
❌ Non professionnel
Après Module 3
✅ Code robuste (validation complète)
✅ Gestion d'erreurs professionnelle
✅ Séparation claire des responsabilités
✅ Facilement testable
✅ Production-ready