Public cible
Débutants, étudiants et professionnels qui souhaitent acquérir une pratique structurée dans ce domaine.
Isoler la persistance, sécuriser les requêtes et rendre les transactions testables et indépendantes du moteur.
Débutants, étudiants et professionnels qui souhaitent acquérir une pratique structurée dans ce domaine.
Comprendre les notions essentielles et les appliquer dans un projet vérifiable.
Aucune connaissance préalable n’est strictement obligatoire ; les prérequis détaillés sont précisés dans les ateliers.
Bac+3
La validation repose sur les évaluations actives et les livrables pratiques du cours.
Un ordinateur, un navigateur et les outils indiqués dans le premier atelier sont suffisants pour commencer.
Livrer une couche de persistance documentée.
Livrables :
Isoler les requêtes, protéger les données et rendre la persistance remplaçable sans couples le domaine au moteur de base.
Le cours alterne conception de repository, requêtes, transactions et tests.
Prérequis : SQL basics et compréhension des transactions.
Le repository expose les besoins du domaine, pas les tables. Nommer les méthodes par intention métier permet de changer SQL ou ORM sans modifier les règles métier.
Sélectionner les colonnes nécessaires, filtrer avant le chargement et définir un ordre stable. Une requête doit être lisible, limitée et associée à un test de résultat.
findAvailableRooms(DateTime $from, DateTime $to): array
Utiliser les paramètres liés et une liste de valeurs contrôlée. Ne jamais concaténer une saisie utilisateur dans une chaîne SQL. Échapper les valeurs reste moins sûr que les paramètres natifs.
Pour les recherches, construire une requête avec pagination et tri explicite. Indexer les colonnes réellement filtrées et éviter les fonctions qui empêchent l’index d’être utilisé.
$qb->andWhere("c.slug = :slug")->setParameter("slug", $slug)
Une transaction doit protéger un ensemble d’écritures indivisible. Définir son point de début et de fin, puis tester le rollback après une erreur métier, une violation de contrainte ou une perte de connexion.
Ne pas placer une transaction longue autour d’un appel HTTP externe. Séparer les traitements et documenter le comportement attendu en cas de nouvelle tentative.
BEGIN → écrire la commande et ses lignes → COMMIT; sinon ROLLBACK
Tester les résultats, les contraintes, la pagination et le comportement en cas de données absentes. Les tests unitaires du repository peuvent être complétés par une base éphémère pour les requêtes complexes.
Mesurer la latence, le nombre de requêtes et les erreurs de connexion. Un repository lent ou silencieusement en échec est un problème d’observabilité avant d’être un problème de syntaxe.
Le livrable doit montrer une compréhension personnelle, des choix explicités et une vérification par un cas de test ou une procédure reproductible.
Publié le 29/11/2025