Files
btpxpress-backend/CHANGEMENTS_HIBERNATE.md

3.9 KiB

Changements effectués : Migration vers Hibernate

📋 Résumé

Flyway a été désactivé et Hibernate gère maintenant automatiquement la création des tables et le chargement des données.


🔧 Fichiers modifiés

1. src/main/resources/application.properties

Changements :

  • quarkus.hibernate-orm.database.generation : updatedrop-and-create
  • quarkus.hibernate-orm.log.sql : falsetrue (pour voir les requêtes SQL)
  • quarkus.flyway.migrate-at-start : truefalse (Flyway désactivé)
  • Supprimé : quarkus.flyway.baseline-on-migrate, quarkus.flyway.baseline-version, quarkus.flyway.locations

2. src/main/resources/import.sql (nouveau fichier)

Contenu :

  • Données de test complètes pour le marché ivoirien
  • Types de chantier
  • Clients (entreprises et particuliers)
  • Employés et équipes
  • Matériel BTP
  • Chantiers avec phases
  • Devis et factures

Exécution :

  • Ce fichier est automatiquement exécuté par Hibernate après la création des tables

🚀 Comment démarrer l'application

Mode développement :

./mvnw quarkus:dev

Ce qui se passe au démarrage :

  1. Hibernate supprime toutes les tables existantes
  2. Hibernate crée toutes les tables à partir des entités JPA
  3. Hibernate exécute import.sql pour charger les données
  4. L'application démarre avec une base de données complète

📊 Vérifier les données

Console H2 (développement) :

http://localhost:8080/q/dev

API REST :

# Lister les clients
curl http://localhost:8080/api/clients

# Lister les chantiers
curl http://localhost:8080/api/chantiers

# Lister les devis
curl http://localhost:8080/api/devis

⚙️ Modes de génération disponibles

Pour changer le comportement, modifiez quarkus.hibernate-orm.database.generation :

Mode Comportement Utilisation
drop-and-create Supprime et recrée les tables à chaque démarrage Développement (actuel)
update Met à jour le schéma sans supprimer les données 🔄 Développement avec persistance
validate Valide le schéma sans modification 🏭 Production
none Aucune action 🚫 Gestion manuelle

🔄 Pour conserver les données entre les redémarrages

Si vous voulez que les données persistent entre les redémarrages :

Modifier application.properties :

quarkus.hibernate-orm.database.generation=update

⚠️ Attention : Avec update, le fichier import.sql sera exécuté à chaque démarrage, ce qui peut causer des erreurs de doublons. Pour éviter cela :

  • Commentez les lignes dans import.sql après le premier démarrage
  • Ou renommez le fichier : import.sql.bak

📁 Fichiers Flyway (conservés mais non utilisés)

Les fichiers de migration Flyway sont toujours présents dans src/main/resources/db/migration/ :

  • V1__Initial_schema.sql
  • V2__Sample_data.sql
  • V3__create_auth_tables.sql
  • V4__create_phase_templates_fixed.sql
  • V5__Ivorian_test_data.sql

Vous pouvez les supprimer si vous ne prévoyez pas de réactiver Flyway.


🏭 Configuration pour la production

Important : En production, utilisez validate pour éviter toute modification du schéma :

application.properties :

%prod.quarkus.hibernate-orm.database.generation=validate
%prod.quarkus.flyway.migrate-at-start=false

📚 Documentation complète

Pour plus de détails, consultez : MIGRATION_HIBERNATE.md


Résultat

Votre application démarre maintenant avec :

  • Tables créées automatiquement par Hibernate
  • Données de test chargées automatiquement
  • Pas de conflit avec Flyway
  • Base de données prête à l'emploi

Bon développement ! 🚀