Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Ajouter la Base de Données à Notre Application | Travailler avec des Bases de Données
Backend Spring Boot
course content

Contenu du cours

Backend Spring Boot

Backend Spring Boot

1. Notions de Base du Développement Backend
2. Notions de Base de Spring Boot
3. API RESTful
4. Travailler avec des Bases de Données
5. Tester les Applications Backend

book
Ajouter la Base de Données à Notre Application

Dans le chapitre précédent, nous avons couvert ce que sont JPA et Hibernate. Dans ce chapitre, nous allons intégrer une base de données dans notre application et essayer d'effectuer des opérations CRUD (Créer, Lire, Mettre à jour, Supprimer).

Exemple de travail avec une base de données :

Personnalisation du Modèle

La première chose que nous devons faire est d'annoter le modèle afin que Hibernate puisse travailler avec et comprendre à quelle table il appartient.

java

Book

copy
12345678910
@Getter @Setter @Entity(name = "book") @Table(name = "book") public class Book { private String id; private String name; private String author; private String price; }

Dans l'annotation @Entity(name = "books"), le paramètre name vous permet de spécifier le nom de l'entité, qui par défaut est le nom de la classe.

L'annotation @Table est utilisée pour spécifier des paramètres spécifiques pour la table associée à l'entité.

Dans notre cas, cette table est créée via des migrations, donc nous n'avons pas besoin de la créer manuellement.

Nous avons également besoin que notre entité génère automatiquement un ID pour lui attribuer une valeur unique dans la base de données. Pour y parvenir, nous pouvons utiliser l'annotation @Id sur le champ qui représente notre ID, ainsi que l'annotation @GeneratedValue.

Les annotations @Id et @GeneratedValue(strategy = GenerationType.UUID) spécifient que le champ id est une clé primaire qui est générée automatiquement au format UUID.

Cela garantit des identifiants de chaîne uniques pour chaque enregistrement dans la table, ce qui est bénéfique pour les systèmes distribués et garantit l'unicité globale des identifiants. Les UUID sont stockés sous forme de chaînes.

Ajout du Référentiel

Actuellement, notre référentiel simule une base de données en stockant toutes les entités dans une List. Mais que diriez-vous si je vous disais qu'utiliser une vraie base de données est en fait beaucoup plus facile !

Pour interagir avec une vraie base de données, nous pouvons utiliser l'interface JpaRepository, qui fournit une large gamme de méthodes intégrées pour travailler avec les données.

java

BookRepository

copy
1234
@Repository public interface BookRepository extends JpaRepository<Book, String> { // JpaRepository already provides methods for CRUD operations }

Dans JpaRepository<Book, String>, nous passons deux paramètres : Book, qui représente le type d'entité avec lequel le référentiel va travailler, et String, qui est le type de données de la clé primaire (ID) pour l'entité Book.

Et c'est tout ce dont nous avons besoin ! Maintenant, nous avons un référentiel entièrement fonctionnel !

Principales Méthodes de JpaRepository

Création de requêtes SQL personnalisées

Spring Data JPA peut générer automatiquement des requêtes si la méthode est nommée selon un schéma qui s'aligne avec la structure de données. Cela se fait en utilisant des mots-clés spécifiques qui indiquent comment la requête doit être construite.

Résumé court de la vidéo

Cette méthode génère automatiquement une requête SQL qui recherche tous les livres de author spécifié. La requête générée ressemblera à ceci :

Comment ça fonctionne

Le nom de la méthode findBookByAuthor(String author) est construit comme suit : il commence par le préfixe findBook, indiquant que la méthode effectue une recherche. Ensuite vient ByAuthor, qui représente le champ dans l'entité Book qui sera utilisé pour la recherche.

Lorsque cette méthode est appelée, Spring Data JPA génère automatiquement une requête qui recherche les enregistrements où le champ author correspond au paramètre fourni.

Génération de requêtes SQL avec l'annotation @Query

L'annotation @Query dans Spring Data JPA vous permet d'utiliser à la fois JPQL et SQL natif, offrant une flexibilité dans le choix de l'approche appropriée.

JPQL

JPQL (Java Persistence Query Language) fonctionne avec des objets et leurs propriétés.

Cette requête recherche tous les objets Book où le champ author correspond à la valeur fournie. JPQL est plus abstrait et reflète la structure du modèle de données.

SQL Natif

SQL Natif interagit directement avec les tables de la base de données.

Dans ce cas, la requête opère sur la table book, permettant l'utilisation de fonctions SQL spécifiques et des optimisations.

Choisir une Approche

Si vous avez besoin d'une requête simple qui s'aligne avec le modèle de données, utilisez JPQL. Si une requête complexe ou des fonctions spécifiques à la base de données sont nécessaires, choisissez le SQL natif.

Ainsi, @Query offre la flexibilité de passer facilement entre les deux approches selon vos besoins.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 5
We're sorry to hear that something went wrong. What happened?
some-alt