MODULE 4 - Bases de Données en Production
Objectifs du Module
Ce module vous permettra de:
- Installer et configurer PostgreSQL
- Comprendre la différence entre Jakarta et Javax Persistence
- Maîtriser Hibernate et les stratégies DDL
- Utiliser Lombok pour réduire le code boilerplate
- Migrer une application de H2 vers PostgreSQL
- Gérer plusieurs bases de données (MySQL, SQL Server, Oracle)
Contenu du Module
Théorie
Ce module est divisé en 4 chapitres théoriques que vous devez lire avant de passer au TP:
Chapitre 1: PostgreSQL - Installation et Configuration
- Qu'est-ce que PostgreSQL?
- Installation sur Windows/Mac/Linux
- Outils d'administration (pgAdmin, DBeaver)
- Création de bases de données et utilisateurs
- Configuration de Spring Boot pour PostgreSQL
- Connexion et test
- Sécurité et meilleures pratiques
Chapitre 2: Jakarta vs Javax Persistence
- Historique: Java EE → Jakarta EE
- Différences entre
javax.persistenceetjakarta.persistence - Migration: quand et comment?
- Compatibilité avec Spring Boot 2.x vs 3.x
- Résolution des problèmes courants
- Choix de la bonne version
Chapitre 3: Hibernate et Stratégies DDL
- Qu'est-ce qu'Hibernate?
- Rôle d'Hibernate dans Spring Boot
- Stratégies
ddl-autoen détail:none: Aucune actionvalidate: Validation uniquementupdate: Mise à jour incrémentalecreate: Recréation à chaque démarragecreate-drop: Création et suppression
- Quand utiliser chaque stratégie?
- Configuration du dialecte Hibernate
- Logs SQL et débogage
- Performance et optimisation
Chapitre 4: Lombok - Réduire le Code Boilerplate
- Qu'est-ce que Lombok?
- Installation et configuration
- Annotations principales:
@Data@Getter/@Setter@NoArgsConstructor/@AllArgsConstructor@RequiredArgsConstructor@Builder@ToString@EqualsAndHashCode
- Avantages et inconvénients
- Meilleures pratiques
- Compatibilité avec JPA
Travaux Pratiques
TP4.1: Migration PostgreSQL et Production
Objectif: Migrer une application H2 vers PostgreSQL avec Lombok
Contenu:
- Installation et configuration de PostgreSQL
- Migration de H2 vers PostgreSQL
- Utilisation de Jakarta Persistence
- Application de Lombok à toutes les entités
- Configuration des stratégies DDL
- Tests et validation
- Migration vers d'autres BDD (MySQL, SQL Server, Oracle)
Durée estimée: 4-6 heures
Prérequis:
- Module 2 complété (TP2.1 et TP2.2)
- Module 3 complété (TP3.1 - Architecture CRUD)
- Tous les chapitres du Module 4 lus
Niveau: Intermédiaire à Avancé
Prérequis
Connaissances Requises
Avant de commencer ce module, vous devez maîtriser:
✅ Module 2 (complet):
- Spring Initializr
- Structure de projet
- Configuration
- Annotations de base
- Repositories et JPA de base
- H2 en mémoire et persistant
✅ Module 3 (complet):
- Architecture à 3 couches
- Validation des données
- Gestion des erreurs HTTP
- CRUD complet
Si vous n'êtes pas à l'aise avec ces concepts, retournez aux modules précédents.
Logiciels Requis
-
PostgreSQL 14+
- À installer pendant le module
- Téléchargement: postgresql.org
-
pgAdmin ou DBeaver
- Outil d'administration de base de données
- Téléchargement: pgadmin.org ou dbeaver.io
-
JDK 17+, Maven 3.9+, VS Code
- Déjà installés depuis Module 2
Durée Estimée
Théorie: 8-10 heures (4 chapitres)
Pratique: 4-6 heures (1 TP complet avec migration)
Total: 12-16 heures (2-3 séances de 4-6 heures)
Ressources Supplémentaires
Documentation Officielle
- PostgreSQL Documentation
- Hibernate Documentation
- Lombok Documentation
- Jakarta Persistence Specification
Tutoriels Recommandés
Critères de Réussite
À la fin de ce module, vous devriez être capable de:
- ✅ Installer et configurer PostgreSQL
- ✅ Créer et gérer des bases de données PostgreSQL
- ✅ Comprendre les différences entre Jakarta et Javax Persistence
- ✅ Choisir et configurer la bonne stratégie DDL Hibernate
- ✅ Utiliser Lombok pour réduire le code boilerplate
- ✅ Migrer une application de H2 vers PostgreSQL
- ✅ Configurer une application pour plusieurs types de bases de données
- ✅ Déboguer les problèmes de connexion et de configuration
Prochaines Étapes
Une fois ce module complété, vous serez prêt pour:
- Module 5: Spring Core - IoC et DI avancé
- Module 6: Spring Data JPA Avancé (Jointures, JPQL, Optimisation)
- Module 7: Sécurité avec Spring Security
Pourquoi Ce Module Est Important
Développement vs Production
| Aspect | H2 (Développement) | PostgreSQL (Production) |
|---|---|---|
| Type | En mémoire ou fichier local | Serveur dédié |
| Performance | Limitée | Haute performance |
| Concurrent users | Non adapté | Excellent |
| Outils | Console basique | pgAdmin, DBeaver |
| Scalabilité | Faible | Excellente |
| Utilisation | Développement/Tests | Production |
Avant Module 4
❌ Développement uniquement (H2)
❌ Code verbeux (beaucoup de getters/setters)
❌ Configuration manuelle complexe
❌ Pas prêt pour la production
Après Module 4
✅ Production-ready (PostgreSQL)
✅ Code concis (Lombok)
✅ Configuration professionnelle
✅ Prêt pour le déploiement
✅ Compétences recherchées en entreprise
Note Pédagogique
Pourquoi ce module vient APRÈS Module 3?
- Module 3 vous a appris l'architecture robuste (Service Layer, Validation, Gestion d'erreurs)
- Cette architecture fonctionne avec n'importe quelle base de données
- Maintenant que vous maîtrisez l'architecture, vous pouvez vous concentrer sur la base de données
- PostgreSQL est plus exigeant que H2: il faut une bonne base avant de l'utiliser
Progression logique:
Module 2: Bases (H2 simple)
↓
Module 3: Architecture robuste (toujours H2)
↓
Module 4: Production (PostgreSQL) ← VOUS ÊTES ICI
↓
Module 6: Optimisation (Requêtes avancées)