Spring Data, le principe
Spring Data fournit le CRUD sans écrire d'implémentation : on déclare une interface, Spring génère le code à l'exécution. Le starter spring-boot-starter-data-mongodb ajoute le support Mongo.
L'entité @Document
Une classe annotée @Document correspond à une collection. Elle reflète le document modélisé au parcours 1.
@Document(collection = "campagnes") public class Campagne { @Id private String id; private String zone; private Statut statut; private Instant dateLimite; private String fournisseurId; private List<Commande> commandes = new ArrayList<>(); }
Le repository
Une interface qui étend MongoRepository hérite de findAll, findById, save, deleteById…
public interface CampagneRepository extends MongoRepository<Campagne, String> { }
Les méthodes dérivées
Spring déduit la requête du nom de la méthode.
List<Campagne> findByStatut(Statut statut); List<Campagne> findByZoneAndStatut(String zone, Statut statut);
Requêtes sur mesure — pour aller plus loin (agrégations, requêtes complexes), on utilise
@Query ou le MongoTemplate.🛢️ Sur le projet Fioul Groupé
Crée Campagne, Commande (embarquée), Fournisseur et leurs repositories. findByZoneAndStatut produit exactement la requête écrite à la main au parcours 1 (chapitre 4).
À retenir
- Spring Data génère le CRUD à partir d'une interface.
@Document/@Idmappent l'entité à la collection.- Méthodes dérivées : le nom = la requête ;
@Querypour le sur-mesure.