Files
btpxpress-backend/CHANGEMENTS_HIBERNATE.md

140 lines
3.9 KiB
Markdown

# ✅ 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` : `update``drop-and-create`
-`quarkus.hibernate-orm.log.sql` : `false``true` (pour voir les requêtes SQL)
-`quarkus.flyway.migrate-at-start` : `true``false` (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 :
```bash
./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 :
```bash
# 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` :**
```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` :**
```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 ! 🚀**