Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen CRUD-Operationen in Java | Section
Grundlegende Datenstrukturen in Java

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 (Erstellen), READ (Lesen), UPDATE (Aktualisieren) und DELETE (Löschen) 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 Bücherliste. Sie haben grundlegende Operationen für die Arbeit mit dieser Liste geschrieben und jede davon leicht angepasst. Sie haben spezifischere Methoden zum Abrufen eines Buches nach Autor oder Erhalten einer Liste von Büchern, die nach einem bestimmten Jahr veröffentlicht wurden, erstellt.

Ähnliche Operationen werden in großen Anwendungen verwendet, um mit Datenbanken zu interagieren. Am Ende sollte unsere Anwendung:

  1. Daten in der Datenbank erstellen können;
  2. Daten aus der Datenbank lesen können;
  3. Bestimmte Daten in der Datenbank aktualisieren können;
  4. Daten aus der Datenbank löschen können.

Sie haben vielleicht bemerkt, dass Sie in der vorherigen Aufgabe die Update-Methode nicht implementiert haben.

Das holen wir jetzt nach:

Um ein Element per ID zu aktualisieren, müssen Sie zuerst 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 einzubauen, da Sie diese Methode auch in anderen Funktionen wiederverwenden können, was sie vielseitiger macht.

Library.java

Library.java

123456789
public 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

Library.java

123456789101112
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; }

In dieser Lösung initialisieren wir die Variable result zunächst mit null. Nachdem die Buchsuche anhand der ID durchgeführt wurde, prüfen wir, ob unser Ergebnis weiterhin null ist. Falls dies true ist, erstellen wir ein neues undefiniertes Buch. Im Folgenden implementieren wir die update-Methode:

Library.java

Library.java

123456789101112
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 } } }

Wir haben das Buch aktualisiert, indem wir alle seine Parameter angepasst haben. Diese Vorgehensweise wird ausdrücklich empfohlen, da bei einer einfachen Neu-Zuweisung des Buches unerwartete Fehler auftreten können. Auf diese Weise aktualisieren wir das Buch anhand der ID und weisen ihm die Parameter des neuen Buches zu.

Nun verwenden wir die update-Methode und beobachten das Ergebnis:

Main.java

Main.java

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
package 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. Was bedeutet das Akronym CRUD?

2. Warum ist es notwendig, CRUD-Operationen im Code zu implementieren?

3. Können CRUD-Operationen mit Datenbanken verwendet werden?

question mark

Was bedeutet das Akronym CRUD?

Wählen Sie die richtige Antwort aus

question mark

Warum ist es notwendig, CRUD-Operationen im Code zu implementieren?

Wählen Sie die richtige Antwort aus

question mark

Können CRUD-Operationen mit Datenbanken verwendet werden?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 4

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 1. Kapitel 4
some-alt