Aller au contenu principal

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.persistence et jakarta.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-auto en détail:
    • none: Aucune action
    • validate: Validation uniquement
    • update: Mise à jour incrémentale
    • create: Recréation à chaque démarrage
    • create-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​

  1. PostgreSQL 14+

  2. pgAdmin ou DBeaver

  3. 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​

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​

AspectH2 (Développement)PostgreSQL (Production)
TypeEn mémoire ou fichier localServeur dédié
PerformanceLimitéeHaute performance
Concurrent usersNon adaptéExcellent
OutilsConsole basiquepgAdmin, DBeaver
ScalabilitéFaibleExcellente
UtilisationDéveloppement/TestsProduction

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?

  1. Module 3 vous a appris l'architecture robuste (Service Layer, Validation, Gestion d'erreurs)
  2. Cette architecture fonctionne avec n'importe quelle base de données
  3. Maintenant que vous maîtrisez l'architecture, vous pouvez vous concentrer sur la base de données
  4. 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)

Chapitre 1 - PostgreSQL (théorie détaillée)