Spring Boot 4 Microservices & REST APIs · Leçon

Définir les entités et les référentiels

Créez des entités JPA à mapper vers des tables de base de données et définissez des interfaces de référentiel pour accéder aux données.

Leçon 4 sur 611 étapes

Définir les entités et les référentiels est une leçon Spring Boot 4 Microservices & REST APIs gratuite sur CoddyKit. Ceci est la leçon 4 sur 6. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Spring Boot 4 Microservices & REST APIs, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Spring Boot 4 Microservices & REST APIs comprend 6 leçons au total.

Bienvenue dans la persistance des données

Dans cette leçon, nous allons apprendre à connecter votre application Java à une base de données avec Spring Boot. C’est ce qu’on appelle la persistance des données : vos données continuent d’exister même après l’arrêt de votre application.

Nous nous concentrerons sur deux concepts essentiels :

  • Entités : vos objets Java qui correspondent aux tables de la base de données.
  • Référentiels : des interfaces qui fournissent des moyens simples d’interagir avec vos entités et la base de données.

Qu’est-ce qu’une entité JPA ?

Une entité JPA est une classe Java ordinaire qui représente une table de votre base de données relationnelle. Chaque instance de cette classe correspond à une ligne de cette table.

La Java Persistence API (JPA) est une norme de gestion des données relationnelles dans les applications Java. Spring Data JPA s’appuie dessus pour simplifier encore davantage les interactions avec les bases de données.

Définir votre première entité

Pour marquer une classe Java comme entité JPA, vous utilisez l’annotation @Entity. Vous devez également définir une clé primaire à l’aide de @Id.

Créons une entité Product simple :

import jakarta.persistence.Entity;
import jakarta.persistence.Id;

@Entity
public class Product {

    @Id
    private Long id;
    private String name;
    private double price;

    public Product() {}

    public Product(Long id, String name, double price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Product{id=" + id + ", name='" + name + "', price=" + price + "}";
    }

    public static void main(String[] args) {
        Product product = new Product(1L, "Laptop", 1200.00);
        System.out.println(product);
    }
}

Générer automatiquement les clés primaires

Attribuer manuellement les ID peut être fastidieux et source d’erreurs. Les bases de données peuvent générer automatiquement des ID uniques pour vous !

Utilisez l’annotation @GeneratedValue avec une strategy. GenerationType.IDENTITY est couramment utilisé avec les bases de données qui incrémentent automatiquement les valeurs, comme MySQL et H2.

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;

@Entity
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private double price;

    public Product() {}

    public Product(String name, double price) { // No ID in constructor
        this.name = name;
        this.price = price;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Product{id=" + id + ", name='" + name + "', price=" + price + "}";
    }

    public static void main(String[] args) {
        Product product = new Product("Keyboard", 75.00);
        // In a real app, ID would be generated by the DB when persisted
        System.out.println("Product created (ID will be generated by DB): " + product);
    }
}

Personnaliser les correspondances avec les colonnes

Par défaut, JPA associe les champs aux colonnes portant le même nom. Vous pouvez personnaliser cette association à l’aide de l’annotation @Column.

Elle vous permet de spécifier le nom de la colonne, si elle peut être nulle, sa longueur, et bien plus encore :

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;

@Entity
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "product_name", nullable = false, length = 100)
    private String name;

    @Column(nullable = false)
    private double price;

    public Product() {}

    public Product(String name, double price) {
        this.name = name;
        this.price = price;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Product{id=" + id + ", name='" + name + "', price=" + price + "}";
    }

    public static void main(String[] args) {
        Product product = new Product("Mouse", 25.50);
        System.out.println("Product with custom columns: " + product);
    }
}

Présentation des référentiels Spring Data

Maintenant que nous avons une entité, comment l'enregistrer dans la base de données ou la récupérer ? C'est là qu'interviennent les référentiels Spring Data !

Un référentiel est une interface qui fournit des méthodes puissantes et prédéfinies pour les opérations courantes sur une base de données (comme la création, la lecture, la mise à jour et la suppression — CRUD). Vous n'écrivez pas de SQL : Spring Data JPA le génère pour vous.

Définir une interface JpaRepository

Pour créer un référentiel pour votre entité, il vous suffit de définir une interface qui étend JpaRepository de Spring Data JPA.

JpaRepository accepte deux paramètres de type : le type de l'entité et le type de sa clé primaire.

Voici comment définir un référentiel pour notre entité Product :

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

// Assuming 'Product' entity is defined in the same package or imported
@Repository
public interface ProductRepository extends JpaRepository<Product, Long> {
    // Spring Data JPA automatically provides CRUD methods here!
    // You can add custom query methods if needed, e.g.,
    // List<Product> findByName(String name);
}

Remarque : l'annotation @Repository est facultative, mais constitue une bonne pratique pour plus de clarté.

Méthodes intégrées des référentiels

En étendant JpaRepository, votre ProductRepository hérite automatiquement de nombreuses méthodes puissantes. En voici quelques-unes :

  • save(entity) : enregistre une entité donnée (l'insère si elle est nouvelle, la met à jour si elle existe déjà).
  • findById(id) : récupère une entité à partir de son ID et renvoie un Optional.
  • findAll() : renvoie toutes les instances du type d'entité.
  • delete(entity) ou deleteById(id) : supprime une entité.

Vous disposez ainsi de toutes les fonctionnalités CRUD sans écrire une seule ligne de code d'implémentation !

Utiliser les référentiels dans une application

Dans une véritable application Spring Boot, vous injecteriez votre référentiel dans un service ou un contrôleur à l'aide de @Autowired, puis vous appelleriez ses méthodes.

Nous ne pouvons pas exécuter ici une application Spring Boot complète avec une base de données, mais cet extrait montre l'utilisation conceptuelle au sein d'un composant Spring Boot type :

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

// Assuming Product and ProductRepository are defined

@Service
public class ProductService {

    private final ProductRepository productRepository;

    @Autowired
    public ProductService(ProductRepository productRepository) {
        this.productRepository = productRepository;
    }

    public Product createProduct(String name, double price) {
        Product newProduct = new Product(name, price);
        return productRepository.save(newProduct);
    }

    public List<Product> getAllProducts() {
        return productRepository.findAll();
    }

    public Product getProductById(Long id) {
        return productRepository.findById(id).orElse(null);
    }
}

Ce ProductService serait ensuite utilisé par d'autres parties de votre application.

Vérification rapide sur les entités

Parmi les annotations suivantes, lesquelles sont indispensables pour définir une entité JPA de base qui correspond à une table de base de données et possède une clé primaire générée automatiquement ?

Récapitulatif : entités et référentiels

Excellent travail ! Vous avez appris les bases de la persistance des données avec Spring Data JPA :

  • Les entités sont des classes Java annotées avec @Entity qui correspondent à des tables de base de données.
  • @Id désigne la clé primaire, et @GeneratedValue permet à la base de données de gérer la génération de l'ID.
  • @Column permet de personnaliser les correspondances entre les champs et les colonnes.
  • Les référentiels sont des interfaces qui étendent JpaRepository<Entity, ID> et fournissent de puissantes méthodes CRUD prêtes à l'emploi, sans écrire de SQL.

Ensuite, vous approfondirez l'exécution de diverses opérations CRUD !

Gratuit pour commencer

Apprends Java avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
24
Leçons
93

Questions Fréquemment Posées

La leçon « Définir les entités et les référentiels » est-elle gratuite ?

Oui — le texte complet de « Définir les entités et les référentiels » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Spring Boot 4 Microservices & REST APIs, passe à CoddyKit PRO. Le cours Spring Boot 4 Microservices & REST APIs comprend 6 leçons au total.

Qu'est-ce que j'apprendrai dans « Définir les entités et les référentiels » ?

Créez des entités JPA à mapper vers des tables de base de données et définissez des interfaces de référentiel pour accéder aux données. Tu pratiques Spring Boot 4 Microservices & REST APIs avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Spring Boot 4 Microservices & REST APIs ?

Aucune expérience préalable n'est requise. Spring Boot 4 Microservices & REST APIs sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 6.

Combien de temps prend la leçon « Définir les entités et les référentiels » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Spring Boot 4 Microservices & REST APIs ?

Oui. Chaque leçon Spring Boot 4 Microservices & REST APIs inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Intégrer une base de données H2 et JPA
  2. Introduction à Spring Data JPA
  3. Créer des entités et des référentiels
  4. Définir les entités et les référentiels
  5. Opérations CRUD avec REST
  6. Effectuer des opérations CRUD
← Retour à Spring Boot 4 Microservices & REST APIs