Skip to content

Configuration

Pour utiliser une base de données avec un projet Spring Web, il faudra tout d'abord ajouter les éléments de configuration indiquant le type de base de données et la connexion à établir.

Dépendances Maven

Lors de la création d'un projet, on peut ajouter la dépendance pour Spring Data JPA dans la section SQL des dépendances de départ. Ceci ajoutera au fichier pom.xml la dépendance suivante:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

Spring Data JPA est un système d'abstraction qui permet d'interagir avec Hibernate, notre ORM, l'équivalent de Entity Framework (.NET) ou Eloquent (Laravel).

Il faut également ajouter le pilote pour la base de données utilisée. Dans ce cours, nous allons utiliser principalement MySQL. La dépendance de base à cocher lors de la création du projet est MySQL Driver de la section SQL. Ceci s'assure que notre projet sait comment "parler" à la base de données. Dans le fichier pom.xml ceci ajoute:

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>
</dependency>
Utiliser SQLite

Pour des utilisations plus simples ou pour tester rapidement, SQLite peut être une bonne option. Cependant, ce n'est pas une option de défaut via Spring Boot. Il vous faudra ajouter les dépendances suivantes:

  • Driver pour SQLite
    <dependency>
        <groupId>org.xerial</groupId>
        <artifactId>sqlite-jdbc</artifactId>
    </dependency>
    
  • Dialecte pour le connecteur
    <dependency>
        <groupId>org.hibernate.orm</groupId>
        <artifactId>hibernate-community-dialects</artifactId>
    </dependency>
    

Chaîne de connexion (application.properties)

Il faut créer la chaîne de connexion et donner les informations sur l'utilisateur de la base de données à notre application. Ceci se fera dans le fichier application.properties

Configuration application.properties

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://{url ou adresse IP de la BD}:{port}/{nom de la base de données}
spring.datasource.username={utilisateur de la base de données}
spring.datasource.password={mot de passe de l'utilisateur}
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true

Notez que pour MySQL, le port est normalement 3306.

spring.datasource.url=jdbc:sqlite:database.db
spring.datasource.driver-class-name=org.sqlite.JDBC
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
  • Notez l'absence de nom d'utilisateur ou mot de passe.
  • Notez également la configuration de l'url de la base de données. Dans cet exemple, on pointe vers un fichier datbase.db qui serait situé dans le dossier src.
  • Remarquez que dans les deux cas, j'ajoute les propriétés suivantes
    spring.jpa.show-sql=true
    spring.jpa.hibernate.ddl-auto=update
    spring.jpa.properties.hibernate.format_sql=true
    

Elles nous permettent dans l'ordre de: - Afficher les requêtes SQL dans la console (très pratique pour déboguer) - Mettre à jour le schéma de la base de données au lancement de l'application (génère les tables) - Afficher les requêtes SQL dans un format plus facilement lisible pour un humain.

Attention

Assurez-vous de ne jamais mettre le fichier application.properties avec les informations de connexion à la base de données dans votre dépôt Git. On ne veut vraiment pas exposer notre mot de passe de base de données.