Opérations CRUD en Java
Opérations de base pour une base de données
Vous avez réalisé une tâche pratique sur la gestion de bibliothèque, en implémentant des méthodes pour ajouter, récupérer et supprimer des éléments d'une liste.
Ces opérations sont fondamentales pour presque toutes les listes et applications—elles sont connues sous le nom d'opérations CRUD !
CRUD signifie CREATE (Créer), READ (Lire), UPDATE (Mettre à jour) et DELETE (Supprimer), représentant une liste d'opérations à effectuer sur une base de données.
Dans notre cas, lors de la tâche précédente, la classe Library servait de base de données, plus précisément la liste de livres. Vous avez écrit des opérations fondamentales pour manipuler cette liste, en personnalisant légèrement chacune d'elles. Vous avez créé des méthodes plus ciblées pour récupérer un livre par auteur ou obtenir une liste de livres publiés après une année spécifique.
Des opérations similaires sont utilisées dans les grandes applications pour interagir avec les bases de données. Au final, notre application doit :
- Pouvoir créer des données dans la base de données ;
- Pouvoir lire des données depuis la base de données ;
- Pouvoir mettre à jour des données spécifiques dans la base de données ;
- Pouvoir supprimer des données de la base de données.
Vous avez peut-être remarqué que vous n'avez pas implémenté la méthode update lors de la tâche précédente.
Faisons-le maintenant :
Il est nécessaire de récupérer d'abord le livre par son ID pour mettre à jour un élément par ID. Pour cela, vous allez implémenter une méthode qui récupère le livre par son ID. Il est préférable de procéder ainsi plutôt que d'intégrer la logique de récupération d'un livre par son ID directement dans la méthode de mise à jour, car vous pouvez réutiliser cette méthode dans d'autres fonctions, la rendant ainsi plus polyvalente.
Library.java
123456789public Book findBookById(int id) { Book result; for (Book book : books) { if (book.getId() == id){ result = book; } } return result; }
La solution ci-dessus constitue une bonne option, mais il existe un petit problème. Une erreur se produira si un tel identifiant n'existe pas dans notre liste. Il est nécessaire de gérer cette erreur et d'afficher un message à l'écran indiquant qu'il n'existe aucun livre correspondant dans la liste (base de données).
Library.java
123456789101112public Book findBookById(int id) { Book result = null; for (Book book : books) { if (book.getId() == id){ result = book; } } if (result == null) { result = new Book("Unknown", "Unknown", 0); } return result; }
Nous initialisons d'abord la variable result à null dans cette solution. Après avoir effectué la recherche du livre par ID, nous vérifions si notre résultat est toujours null. Si c'est true, nous créons un nouveau livre non défini.
Passons maintenant à l'implémentation de la méthode update :
Library.java
123456789101112public void updateBookById(int id, Book newBook) { Book bookToBeUpdated = findBookById(id); for (Book book : books) { if (book.getId().equals(bookToBeUpdated.getId())) { book.setId(newBook.getId()); book.setAuthor(newBook.getAuthor()); book.setTitle(newBook.getTitle()); book.setYear(newBook.getYear()); return; // Ending loop execution, because update operation has executed successfully } } }
Nous avons mis à jour le livre en modifiant tous ses paramètres. Il est fortement recommandé de procéder ainsi, car si l'on se contente de réaffecter le livre, des erreurs inattendues peuvent survenir. De cette manière, nous mettons à jour le livre par ID, en le réaffectant aux paramètres du nouveau livre.
Utilisons maintenant la méthode update et observons le résultat :
Main.java
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148package com.example; import java.util.ArrayList; import java.util.List; class Main { public static void main(String[] args) { Library library = new Library(); library.addBook(new Book("Java: The Complete Reference", "Herbert Schildt", 2019)); library.addBook(new Book("Effective Java", "Joshua Bloch", 2020)); library.addBook(new Book("Clean Code", "Robert C. Martin", 2008)); System.out.println("All books in the library:"); library.displayAllBooks(); Book newBook = new Book("Head First Java", "Katy Siera", 2022); library.updateBookById(2, newBook); System.out.println("\nAll books after using update method"); library.displayAllBooks(); } } class Book { private static Long nextId = 1L; private String title; private String author; private int year; private Long id; public Book(String title, String author, int year) { this.title = title; this.author = author; this.year = year; this.id = nextId++; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Override public String toString() { return "Book{" + "title='" + title + '\'' + ", author='" + author + '\'' + ", year=" + year + ", id=" + id + '}'; } } class Library { public List<Book> books = new ArrayList<>(); public void addBook(Book book) { books.add(book); } public void removeBookById(int id) { List<Book> booksToRemove = new ArrayList<>(); for (Book book : books) { if (book.getId() == id) { booksToRemove.add(book); } } books.removeAll(booksToRemove); } public List<Book> findBooksByAuthor(String author) { List<Book> booksWithSpecifiedAuthor = new ArrayList<>(); for (Book book : books) { if (book.getAuthor().equals(author)) { booksWithSpecifiedAuthor.add(book); } } return booksWithSpecifiedAuthor; } public List<Book> findBooksPublishedAfterYear(int year) { List<Book> booksPublishedAfterYear = new ArrayList<>(); for (Book book : books) { if (book.getYear() > year){ booksPublishedAfterYear.add(book); } } return booksPublishedAfterYear; } public Book findBookById(int id) { Book result = null; for (Book book : books) { if (book.getId() == id){ result = book; } } if (result == null) { result = new Book("Unknown", "Unknown", 0); } return result; } public void updateBookById(int id, Book newBook) { Book bookToBeUpdated = findBookById(id); for (Book book : books) { if (book.getId().equals(bookToBeUpdated.getId())) { book.setId(newBook.getId()); book.setAuthor(newBook.getAuthor()); book.setTitle(newBook.getTitle()); book.setYear(newBook.getYear()); return; // Ending loop execution, because update operation has executed successfully } } } public void displayAllBooks() { System.out.println(books); } }
À présent, la classe Library possède toutes les opérations CRUD.
Il est recommandé de copier les méthodes présentées dans ce chapitre et de les ajouter à votre code issu de l'exercice précédent, car ce code mis à jour sera utile par la suite.
1. Que signifie l'acronyme CRUD ?
2. Pourquoi est-il nécessaire d’implémenter les opérations CRUD dans votre code ?
3. Les opérations CRUD peuvent-elles être utilisées avec des bases de données ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Génial!
Completion taux amélioré à 4
Opérations CRUD en Java
Glissez pour afficher le menu
Opérations de base pour une base de données
Vous avez réalisé une tâche pratique sur la gestion de bibliothèque, en implémentant des méthodes pour ajouter, récupérer et supprimer des éléments d'une liste.
Ces opérations sont fondamentales pour presque toutes les listes et applications—elles sont connues sous le nom d'opérations CRUD !
CRUD signifie CREATE (Créer), READ (Lire), UPDATE (Mettre à jour) et DELETE (Supprimer), représentant une liste d'opérations à effectuer sur une base de données.
Dans notre cas, lors de la tâche précédente, la classe Library servait de base de données, plus précisément la liste de livres. Vous avez écrit des opérations fondamentales pour manipuler cette liste, en personnalisant légèrement chacune d'elles. Vous avez créé des méthodes plus ciblées pour récupérer un livre par auteur ou obtenir une liste de livres publiés après une année spécifique.
Des opérations similaires sont utilisées dans les grandes applications pour interagir avec les bases de données. Au final, notre application doit :
- Pouvoir créer des données dans la base de données ;
- Pouvoir lire des données depuis la base de données ;
- Pouvoir mettre à jour des données spécifiques dans la base de données ;
- Pouvoir supprimer des données de la base de données.
Vous avez peut-être remarqué que vous n'avez pas implémenté la méthode update lors de la tâche précédente.
Faisons-le maintenant :
Il est nécessaire de récupérer d'abord le livre par son ID pour mettre à jour un élément par ID. Pour cela, vous allez implémenter une méthode qui récupère le livre par son ID. Il est préférable de procéder ainsi plutôt que d'intégrer la logique de récupération d'un livre par son ID directement dans la méthode de mise à jour, car vous pouvez réutiliser cette méthode dans d'autres fonctions, la rendant ainsi plus polyvalente.
Library.java
123456789public Book findBookById(int id) { Book result; for (Book book : books) { if (book.getId() == id){ result = book; } } return result; }
La solution ci-dessus constitue une bonne option, mais il existe un petit problème. Une erreur se produira si un tel identifiant n'existe pas dans notre liste. Il est nécessaire de gérer cette erreur et d'afficher un message à l'écran indiquant qu'il n'existe aucun livre correspondant dans la liste (base de données).
Library.java
123456789101112public Book findBookById(int id) { Book result = null; for (Book book : books) { if (book.getId() == id){ result = book; } } if (result == null) { result = new Book("Unknown", "Unknown", 0); } return result; }
Nous initialisons d'abord la variable result à null dans cette solution. Après avoir effectué la recherche du livre par ID, nous vérifions si notre résultat est toujours null. Si c'est true, nous créons un nouveau livre non défini.
Passons maintenant à l'implémentation de la méthode update :
Library.java
123456789101112public void updateBookById(int id, Book newBook) { Book bookToBeUpdated = findBookById(id); for (Book book : books) { if (book.getId().equals(bookToBeUpdated.getId())) { book.setId(newBook.getId()); book.setAuthor(newBook.getAuthor()); book.setTitle(newBook.getTitle()); book.setYear(newBook.getYear()); return; // Ending loop execution, because update operation has executed successfully } } }
Nous avons mis à jour le livre en modifiant tous ses paramètres. Il est fortement recommandé de procéder ainsi, car si l'on se contente de réaffecter le livre, des erreurs inattendues peuvent survenir. De cette manière, nous mettons à jour le livre par ID, en le réaffectant aux paramètres du nouveau livre.
Utilisons maintenant la méthode update et observons le résultat :
Main.java
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148package com.example; import java.util.ArrayList; import java.util.List; class Main { public static void main(String[] args) { Library library = new Library(); library.addBook(new Book("Java: The Complete Reference", "Herbert Schildt", 2019)); library.addBook(new Book("Effective Java", "Joshua Bloch", 2020)); library.addBook(new Book("Clean Code", "Robert C. Martin", 2008)); System.out.println("All books in the library:"); library.displayAllBooks(); Book newBook = new Book("Head First Java", "Katy Siera", 2022); library.updateBookById(2, newBook); System.out.println("\nAll books after using update method"); library.displayAllBooks(); } } class Book { private static Long nextId = 1L; private String title; private String author; private int year; private Long id; public Book(String title, String author, int year) { this.title = title; this.author = author; this.year = year; this.id = nextId++; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public int getYear() { return year; } public void setYear(int year) { this.year = year; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Override public String toString() { return "Book{" + "title='" + title + '\'' + ", author='" + author + '\'' + ", year=" + year + ", id=" + id + '}'; } } class Library { public List<Book> books = new ArrayList<>(); public void addBook(Book book) { books.add(book); } public void removeBookById(int id) { List<Book> booksToRemove = new ArrayList<>(); for (Book book : books) { if (book.getId() == id) { booksToRemove.add(book); } } books.removeAll(booksToRemove); } public List<Book> findBooksByAuthor(String author) { List<Book> booksWithSpecifiedAuthor = new ArrayList<>(); for (Book book : books) { if (book.getAuthor().equals(author)) { booksWithSpecifiedAuthor.add(book); } } return booksWithSpecifiedAuthor; } public List<Book> findBooksPublishedAfterYear(int year) { List<Book> booksPublishedAfterYear = new ArrayList<>(); for (Book book : books) { if (book.getYear() > year){ booksPublishedAfterYear.add(book); } } return booksPublishedAfterYear; } public Book findBookById(int id) { Book result = null; for (Book book : books) { if (book.getId() == id){ result = book; } } if (result == null) { result = new Book("Unknown", "Unknown", 0); } return result; } public void updateBookById(int id, Book newBook) { Book bookToBeUpdated = findBookById(id); for (Book book : books) { if (book.getId().equals(bookToBeUpdated.getId())) { book.setId(newBook.getId()); book.setAuthor(newBook.getAuthor()); book.setTitle(newBook.getTitle()); book.setYear(newBook.getYear()); return; // Ending loop execution, because update operation has executed successfully } } } public void displayAllBooks() { System.out.println(books); } }
À présent, la classe Library possède toutes les opérations CRUD.
Il est recommandé de copier les méthodes présentées dans ce chapitre et de les ajouter à votre code issu de l'exercice précédent, car ce code mis à jour sera utile par la suite.
1. Que signifie l'acronyme CRUD ?
2. Pourquoi est-il nécessaire d’implémenter les opérations CRUD dans votre code ?
3. Les opérations CRUD peuvent-elles être utilisées avec des bases de données ?
Merci pour vos commentaires !