Nouveau : Datasets open source gratuits disponibles !Decouvrir →
Intermediaire 30 min Spring Boot

Spring Boot avec MySQL : guide pratique

Pourquoi Spring Boot avec MySQL : guide pratique ?

L'utilisation de Spring Boot avec une base de données MySQL est un choix populaire pour les développeurs Java car elle simplifie considérablement la création et la gestion des applications back-end. Spring Boot offre une configuration par défaut qui facilite la connexion à une base de données relationnelle comme MySQL, tout en proposant une multitude d'options pour personnaliser le comportement.

Un cas concret serait l'élaboration d'une application de gestion de tâches où les utilisateurs peuvent créer, mettre à jour et supprimer des tâches. Cette application nécessite une base de données pour stocker ces tâches, ce qui est parfaitement réalisé grâce à Spring Boot et MySQL.

Prerequis

  • Connaissance de base en Java
  • Familiarité avec le concept d'objets relationnels (CRUD)
  • Installation de JDK 11 ou supérieur
  • Installation de Maven ou Gradle pour la gestion des dépendances
  • Installation de MySQL Server
  • Installation de l'environnement de développement IDE comme IntelliJ IDEA, Eclipse, ou VSCode

Concepts fondamentaux

1. Spring Boot Starter Data JPA

Spring Boot Starter Data JPA est un module qui simplifie le processus de création d'applications utilisant des bases de données relationnelles avec Java Persistence API (JPA). Il inclut automatiquement les dépendances nécessaires pour une utilisation efficace de JPA.

Schema Mental : Schema Mental

// src/main/java/com/example/demo/repository/TodoRepository.java
package com.example.demo.repository;

import com.example.demo.model.Todo;
import org.springframework.data.jpa.repository.JpaRepository;

public interface TodoRepository extends JpaRepository<Todo, Long> {
}

2. Entité JPA

Une entité JPA est une classe Java qui correspond à une table dans la base de données.

Schema Mental : Schema Mental

// src/main/java/com/example/demo/model/Todo.java
package com.example.demo.model;

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

@Entity
public class Todo {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String title;
    private boolean completed;

    // Getters and Setters
}

3. Configuration de la base de données

La configuration de la base de données se fait dans le fichier application.properties ou application.yml.

Schema Mental : Schema Mental

## src/main/resources/application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/todo_app?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update

Mise en pratique : projet fil rouge

Nous allons créer un gestionnaire de tâches simple avec les fonctionnalités suivantes :

  • Créer une nouvelle tâche
  • Mettre à jour une tâche existante
  • Supprimer une tâche
  • Récupérer toutes les tâches

Étape 1 : Initialisation du projet

Créez un nouveau projet Spring Boot en utilisant Spring Initializr. Choisissez les options suivantes :

  • Project: Maven Project
  • Language: Java
  • Spring Boot: 2.7.4
  • Project Metadata:
    • Group: com.example
    • Artifact: demo
    • Name: demo
    • Description: Demo project for Spring Boot with MySQL
    • Package name: com.example.demo
  • Packaging: Jar
  • Java: 11 or later
  • Dependencies: Spring Web, Spring Data JPA, H2 Database

Cliquez sur "Generate" pour télécharger le projet et décompressez-le.

Étape 2 : Création de l'entité Todo

Créez un fichier Todo.java dans le package com.example.demo.model.

// src/main/java/com/example/demo/model/Todo.java
package com.example.demo.model;

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

@Entity
public class Todo {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String title;
    private boolean completed;

    // Getters and Setters
}

Étape 3 : Création du repository

Créez un fichier TodoRepository.java dans le package com.example.demo.repository.

// src/main/java/com/example/demo/repository/TodoRepository.java
package com.example.demo.repository;

import com.example.demo.model.Todo;
import org.springframework.data.jpa.repository.JpaRepository;

public interface TodoRepository extends JpaRepository<Todo, Long> {
}

Étape 4 : Création du service

Créez un fichier TodoService.java dans le package com.example.demo.service.

// src/main/java/com/example/demo/service/TodoService.java
package com.example.demo.service;

import com.example.demo.model.Todo;
import com.example.demo.repository.TodoRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class TodoService {

    @Autowired
    private TodoRepository todoRepository;

    public List<Todo> findAll() {
        return todoRepository.findAll();
    }

    public Todo save(Todo todo) {
        return todoRepository.save(todo);
    }

    public void deleteById(Long id) {
        todoRepository.deleteById(id);
    }
}

Étape 5 : Création du controller

Créez un fichier TodoController.java dans le package com.example.demo.controller.

// src/main/java/com/example/demo/controller/TodoController.java
package com.example.demo.controller;

import com.example.demo.model.Todo;
import com.example.demo.service.TodoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/todos")
public class TodoController {

    @Autowired
    private TodoService todoService;

    @GetMapping
    public List<Todo> findAll() {
        return todoService.findAll();
    }

    @PostMapping
    public Todo save(@RequestBody Todo todo) {
        return todoService.save(todo);
    }

    @DeleteMapping("/{id}")
    public void deleteById(@PathVariable Long id) {
        todoService.deleteById(id);
    }
}

Étape 6 : Configuration de la base de données

Ajoutez les configurations de base de données dans le fichier application.properties.

## src/main/resources/application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/todo_app?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update

Étape 7 : Création de la base de données

Créez une nouvelle base de données todo_app dans MySQL en utilisant le client MySQL ou un outil graphique comme phpMyAdmin.

CREATE DATABASE todo_app;

Erreurs frequentes et debugging

Erreur 1: No qualifying bean of type 'javax.sql.DataSource' available

Code incorrect :

// src/main/java/com/example/demo/repository/TodoRepository.java
package com.example.demo.repository;

import com.example.demo.model.Todo;
import org.springframework.data.jpa.repository.JpaRepository;

public interface TodoRepository extends JpaRepository<Todo, Long> {
}

Code correct :

Ajoutez la dépendance Spring Boot Starter Data JPA au fichier pom.xml.

<!-- src/main/resources/pom.xml -->
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!-- Autres dépendances -->
</dependencies>

Erreur 2: Could not create connection to database server. Verify the connection properties.

Code incorrect :

## src/main/resources/application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/todo_app?useSSL=false&serverTimezone=UTC
spring.datasource.username=root

Code correct :

Assurez-vous que le mot de passe est correct.

## src/main/resources/application.properties
spring.datasource.password=password

Erreur 3: Table 'todo_app.todo' doesn't exist

Code incorrect :

Le code semble correct, mais la table n'existe pas encore dans la base de données.

Correction :

Assurez-vous que la base de données est bien créée et que le nom de la table correspond à celui généré par Spring Boot.

CREATE TABLE todo (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    completed BOOLEAN DEFAULT FALSE
);

Pour aller plus loin

1. Sécurité avec Spring Security

Intégrez la sécurité à votre application pour protéger les points d'accès sensibles.

2. Utilisation de Docker

Créez un fichier Dockerfile et un docker-compose.yml pour déployer votre application en conteneur.

3. Optimisation des performances avec Spring Boot Actuator

Utilisez Spring Boot Actuator pour surveiller et optimiser les performances de votre application.

Défi pratique

Créez une API REST simple qui permet de gérer des utilisateurs. Les fonctionnalités incluent la création, la mise à jour, la suppression et la récupération d'utilisateurs. Utilisez MySQL comme base de données et Spring Boot Starter Data JPA pour accéder aux données.

Besoin d'aide sur Spring Boot ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Questions frequentes

Comment configurer MySQL avec Spring Boot ?
Pour configurer MySQL avec Spring Boot, vous devez ajouter les dépendances appropriées dans votre fichier pom.xml ou build.gradle. Ensuite, configurez la connexion en modifiant le fichier application.properties ou application.yml avec les informations de connexion à votre base de données MySQL.
Quels sont les avantages de l'utilisation de Spring Boot avec MySQL ?
Spring Boot facilite la création et la gestion des applications basées sur le modèle MVC. Il offre une configuration par défaut qui réduit le temps de développement. Avec MySQL, vous bénéficiez d'une puissante base de données relationnelle pour stocker et gérer les données de votre application.
Comment créer un repository personnalisé dans Spring Boot avec MySQL ?
Pour créer un repository personnalisé, vous devez créer une interface qui étend l'interface Repository ou JpaRepository. Ensuite, vous pouvez ajouter des méthodes de recherche spécifiques à votre interface pour personnaliser les requêtes SQL.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.