CRUD-Operationen in Java
Grundlegende Operationen für eine Datenbank
Sie haben eine praktische Aufgabe zur Bibliotheksverwaltung abgeschlossen und Methoden zum Hinzufügen, Abrufen und Entfernen von Elementen aus einer Liste implementiert.
Diese Operationen sind grundlegend für nahezu jede Liste und Anwendung – sie werden als CRUD-Operationen bezeichnet!
CRUD steht für CREATE, READ, UPDATE und DELETE und bezeichnet eine Liste von Operationen, die auf einer Datenbank ausgeführt werden.
In unserem Fall diente in der vorherigen Aufgabe die Klasse Library als unsere Datenbank, genauer gesagt als Liste von Büchern. Sie haben grundlegende Operationen für die Arbeit mit dieser Liste geschrieben und jede davon leicht angepasst. Sie haben gezielte Methoden erstellt, um ein Buch nach Autor abzurufen oder eine Liste von Büchern zu erhalten, die nach einem bestimmten Jahr veröffentlicht wurden.
Ähnliche Operationen werden in großen Anwendungen verwendet, um mit Datenbanken zu interagieren. Am Ende sollte unsere Anwendung:
- Daten in der Datenbank erstellen können;
- Daten aus der Datenbank lesen können;
- Bestimmte Daten in der Datenbank aktualisieren können;
- Daten aus der Datenbank löschen können.
Vielleicht ist Ihnen aufgefallen, dass Sie in der vorherigen Aufgabe die Update-Methode nicht implementiert haben.
Lassen Sie uns das jetzt nachholen:
Um ein Element per ID zu aktualisieren, müssen Sie zunächst das Buch anhand der ID abrufen. Dafür implementieren Sie eine Methode, die das Buch anhand der ID abruft. Es ist besser, dies auf diese Weise zu tun, als die Logik zum Abrufen eines Buches anhand seiner ID direkt in die Aktualisierungsmethode zu integrieren, da Sie diese Methode auch in anderen Funktionen wiederverwenden können und sie dadurch vielseitiger wird.
Library.java
123456789public Book findBookById(int id) { Book result; for (Book book : books) { if (book.getId() == id){ result = book; } } return result; }
Die obige Lösung ist eine gute Option, jedoch gibt es ein kleines Problem. Es tritt ein Fehler auf, wenn eine solche ID nicht in unserer Liste vorhanden ist. Dieser Fehler muss behandelt werden, und es sollte eine Meldung auf dem Bildschirm angezeigt werden, die darauf hinweist, dass kein solches Buch in der Liste (Datenbank) existiert.
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; }
Wir initialisieren die Variable result in dieser Lösung zunächst mit null. Nachdem die Buchsuche anhand der ID durchgeführt wurde, prüfen wir, ob unser Ergebnis weiterhin null ist. Wenn es true ist, erstellen wir ein neues undefiniertes Buch.
Kommen wir nun zur Implementierung der update-Methode:
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 } } }
Wir haben das Buch aktualisiert, indem wir alle seine Parameter angepasst haben. Es wird dringend empfohlen, diese Vorgehensweise zu wählen, da bei einer einfachen Neu-Zuweisung des Buches unerwartete Fehler auftreten können. Auf diese Weise wird das Buch anhand der ID aktualisiert und mit den Parametern des neuen Buches überschrieben.
Nun verwenden wir die update-Methode und beobachten das Ergebnis:
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); } }
Nun verfügt die Klasse Library über alle CRUD-Operationen.
Es wird empfohlen, die in diesem Kapitel gezeigten Methoden zu kopieren und sie zu deinem Code aus der vorherigen Aufgabe hinzuzufügen, da dieser aktualisierte Code später nützlich sein wird.
1. Wofür steht das Akronym CRUD?
2. Warum ist es notwendig, CRUD-Operationen in Ihrem Code zu implementieren?
3. Können CRUD-Operationen mit Datenbanken verwendet werden?
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Can you explain how to implement the update method for the Library class?
What should the method for retrieving a book by ID look like?
How do I handle the error if a book with the given ID does not exist?
Großartig!
Completion Rate verbessert auf 4
CRUD-Operationen in Java
Swipe um das Menü anzuzeigen
Grundlegende Operationen für eine Datenbank
Sie haben eine praktische Aufgabe zur Bibliotheksverwaltung abgeschlossen und Methoden zum Hinzufügen, Abrufen und Entfernen von Elementen aus einer Liste implementiert.
Diese Operationen sind grundlegend für nahezu jede Liste und Anwendung – sie werden als CRUD-Operationen bezeichnet!
CRUD steht für CREATE, READ, UPDATE und DELETE und bezeichnet eine Liste von Operationen, die auf einer Datenbank ausgeführt werden.
In unserem Fall diente in der vorherigen Aufgabe die Klasse Library als unsere Datenbank, genauer gesagt als Liste von Büchern. Sie haben grundlegende Operationen für die Arbeit mit dieser Liste geschrieben und jede davon leicht angepasst. Sie haben gezielte Methoden erstellt, um ein Buch nach Autor abzurufen oder eine Liste von Büchern zu erhalten, die nach einem bestimmten Jahr veröffentlicht wurden.
Ähnliche Operationen werden in großen Anwendungen verwendet, um mit Datenbanken zu interagieren. Am Ende sollte unsere Anwendung:
- Daten in der Datenbank erstellen können;
- Daten aus der Datenbank lesen können;
- Bestimmte Daten in der Datenbank aktualisieren können;
- Daten aus der Datenbank löschen können.
Vielleicht ist Ihnen aufgefallen, dass Sie in der vorherigen Aufgabe die Update-Methode nicht implementiert haben.
Lassen Sie uns das jetzt nachholen:
Um ein Element per ID zu aktualisieren, müssen Sie zunächst das Buch anhand der ID abrufen. Dafür implementieren Sie eine Methode, die das Buch anhand der ID abruft. Es ist besser, dies auf diese Weise zu tun, als die Logik zum Abrufen eines Buches anhand seiner ID direkt in die Aktualisierungsmethode zu integrieren, da Sie diese Methode auch in anderen Funktionen wiederverwenden können und sie dadurch vielseitiger wird.
Library.java
123456789public Book findBookById(int id) { Book result; for (Book book : books) { if (book.getId() == id){ result = book; } } return result; }
Die obige Lösung ist eine gute Option, jedoch gibt es ein kleines Problem. Es tritt ein Fehler auf, wenn eine solche ID nicht in unserer Liste vorhanden ist. Dieser Fehler muss behandelt werden, und es sollte eine Meldung auf dem Bildschirm angezeigt werden, die darauf hinweist, dass kein solches Buch in der Liste (Datenbank) existiert.
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; }
Wir initialisieren die Variable result in dieser Lösung zunächst mit null. Nachdem die Buchsuche anhand der ID durchgeführt wurde, prüfen wir, ob unser Ergebnis weiterhin null ist. Wenn es true ist, erstellen wir ein neues undefiniertes Buch.
Kommen wir nun zur Implementierung der update-Methode:
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 } } }
Wir haben das Buch aktualisiert, indem wir alle seine Parameter angepasst haben. Es wird dringend empfohlen, diese Vorgehensweise zu wählen, da bei einer einfachen Neu-Zuweisung des Buches unerwartete Fehler auftreten können. Auf diese Weise wird das Buch anhand der ID aktualisiert und mit den Parametern des neuen Buches überschrieben.
Nun verwenden wir die update-Methode und beobachten das Ergebnis:
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); } }
Nun verfügt die Klasse Library über alle CRUD-Operationen.
Es wird empfohlen, die in diesem Kapitel gezeigten Methoden zu kopieren und sie zu deinem Code aus der vorherigen Aufgabe hinzuzufügen, da dieser aktualisierte Code später nützlich sein wird.
1. Wofür steht das Akronym CRUD?
2. Warum ist es notwendig, CRUD-Operationen in Ihrem Code zu implementieren?
3. Können CRUD-Operationen mit Datenbanken verwendet werden?
Danke für Ihr Feedback!