Performance Tuning¶
Optimisations pour la production.
N+1 Query Prevention¶
SpringFlow utilise automatiquement les fetch joins pour les relations @ManyToOne.
Pagination Optimisée¶
Les requêtes COUNT sont optimisées :
// Count query optimisé sans joins
SELECT COUNT(p.id) FROM Product p
// Data query avec joins
SELECT p FROM Product p
LEFT JOIN FETCH p.category
LIMIT 20
Cache des Métadonnées¶
Les métadonnées des entités sont cachées au démarrage :
Recommandations¶
1. Indexes Base de Données¶
@Entity
@Table(indexes = {
@Index(name = "idx_name", columnList = "name"),
@Index(name = "idx_category", columnList = "category_id")
})
public class Product { ... }
2. Fetch Strategy¶
3. Pagination Size¶
springflow:
pagination:
default-page-size: 20 # Raisonnable
max-page-size: 100 # Limiter les gros fetches
4. DTO Projection¶
Pour de gros volumes, utilisez des projections :
@Query("SELECT new ProductSummary(p.id, p.name) FROM Product p")
List<ProductSummary> findSummaries();
Monitoring¶
Activez les statistiques Hibernate :