Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Операції CRUD у Java | Основні Структури Даних у Java
Структури Даних Java

bookОперації CRUD у Java

Основні операції для бази даних

Ви виконали практичне завдання з керування бібліотекою, реалізувавши методи для додавання, отримання та видалення елементів зі списку.

Ці операції є базовими для майже кожного списку та застосунку — вони відомі як CRUD-операції!

CRUD розшифровується як CREATE (створення), READ (читання), UPDATE (оновлення) та DELETE (видалення) і позначає перелік операцій, які виконуються над базою даних.

У нашому випадку, у попередньому завданні, клас Library виконував роль бази даних, а саме списку книг. Ви написали базові операції для роботи з цим списком, трохи модифікувавши кожну з них. Ви створили більш спеціалізовані методи для отримання книги за автором або отримання списку книг, виданих після певного року.

Подібні операції використовуються у великих застосунках для взаємодії з базами даних. У підсумку, наш застосунок має:

  1. Мати можливість створювати дані у базі даних;
  2. Мати можливість читати дані з бази даних;
  3. Мати можливість оновлювати конкретні дані у базі даних;
  4. Мати можливість видаляти дані з бази даних.

Ви могли помітити, що не реалізували метод оновлення у попередньому завданні.

Зробімо це зараз:

Щоб оновити елемент за ID, спочатку потрібно отримати книгу за ID. Для цього ви реалізуєте метод, який отримує книгу за ID. Краще зробити саме так, ніж реалізовувати логіку отримання книги за її ID безпосередньо у методі оновлення книги, оскільки цей метод можна використовувати повторно в інших функціях, що робить його більш універсальним.

Library.java

Library.java

copy
123456789
public Book findBookById(int id) { Book result; for (Book book : books) { if (book.getId() == id){ result = book; } } return result; }

Наведене вище рішення є гарним варіантом, але існує невелика проблема. Ви отримаєте помилку, якщо такого ID не існує у нашому списку. Необхідно обробити цю помилку та вивести повідомлення на екран про те, що такої книги немає у списку (базі даних).

Library.java

Library.java

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

Спочатку у цьому рішенні ми ініціалізуємо змінну result як null. Після виконання пошуку книги за ID перевіряємо, чи залишився наш результат null. Якщо це true, створюємо нову невизначену книгу.

Переходимо до реалізації методу update:

Library.java

Library.java

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

Ми оновили книгу, змінивши всі її параметри. Наполегливо рекомендую робити саме так, оскільки при простому переназначенні книги можуть виникнути неочікувані помилки. Таким чином, ми оновлюємо книгу за ID, переназначаючи її параметри на параметри нової книги.

Тепер скористаємося методом update і подивимось, що відбудеться:

Main.java

Main.java

copy
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); } }

Тепер клас Library містить усі операції CRUD.

Рекомендується скопіювати методи, показані в цьому розділі, та додати їх до вашого коду з попереднього завдання, оскільки цей оновлений код стане у пригоді пізніше.

1. Що означає абревіатура CRUD?

2. Чому необхідно реалізовувати CRUD-операції у вашому коді?

3. Чи можна використовувати CRUD-операції з базами даних?

question mark

Що означає абревіатура CRUD?

Select the correct answer

question mark

Чому необхідно реалізовувати CRUD-операції у вашому коді?

Select the correct answer

question mark

Чи можна використовувати CRUD-операції з базами даних?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 4

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

bookОперації CRUD у Java

Свайпніть щоб показати меню

Основні операції для бази даних

Ви виконали практичне завдання з керування бібліотекою, реалізувавши методи для додавання, отримання та видалення елементів зі списку.

Ці операції є базовими для майже кожного списку та застосунку — вони відомі як CRUD-операції!

CRUD розшифровується як CREATE (створення), READ (читання), UPDATE (оновлення) та DELETE (видалення) і позначає перелік операцій, які виконуються над базою даних.

У нашому випадку, у попередньому завданні, клас Library виконував роль бази даних, а саме списку книг. Ви написали базові операції для роботи з цим списком, трохи модифікувавши кожну з них. Ви створили більш спеціалізовані методи для отримання книги за автором або отримання списку книг, виданих після певного року.

Подібні операції використовуються у великих застосунках для взаємодії з базами даних. У підсумку, наш застосунок має:

  1. Мати можливість створювати дані у базі даних;
  2. Мати можливість читати дані з бази даних;
  3. Мати можливість оновлювати конкретні дані у базі даних;
  4. Мати можливість видаляти дані з бази даних.

Ви могли помітити, що не реалізували метод оновлення у попередньому завданні.

Зробімо це зараз:

Щоб оновити елемент за ID, спочатку потрібно отримати книгу за ID. Для цього ви реалізуєте метод, який отримує книгу за ID. Краще зробити саме так, ніж реалізовувати логіку отримання книги за її ID безпосередньо у методі оновлення книги, оскільки цей метод можна використовувати повторно в інших функціях, що робить його більш універсальним.

Library.java

Library.java

copy
123456789
public Book findBookById(int id) { Book result; for (Book book : books) { if (book.getId() == id){ result = book; } } return result; }

Наведене вище рішення є гарним варіантом, але існує невелика проблема. Ви отримаєте помилку, якщо такого ID не існує у нашому списку. Необхідно обробити цю помилку та вивести повідомлення на екран про те, що такої книги немає у списку (базі даних).

Library.java

Library.java

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

Спочатку у цьому рішенні ми ініціалізуємо змінну result як null. Після виконання пошуку книги за ID перевіряємо, чи залишився наш результат null. Якщо це true, створюємо нову невизначену книгу.

Переходимо до реалізації методу update:

Library.java

Library.java

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

Ми оновили книгу, змінивши всі її параметри. Наполегливо рекомендую робити саме так, оскільки при простому переназначенні книги можуть виникнути неочікувані помилки. Таким чином, ми оновлюємо книгу за ID, переназначаючи її параметри на параметри нової книги.

Тепер скористаємося методом update і подивимось, що відбудеться:

Main.java

Main.java

copy
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); } }

Тепер клас Library містить усі операції CRUD.

Рекомендується скопіювати методи, показані в цьому розділі, та додати їх до вашого коду з попереднього завдання, оскільки цей оновлений код стане у пригоді пізніше.

1. Що означає абревіатура CRUD?

2. Чому необхідно реалізовувати CRUD-операції у вашому коді?

3. Чи можна використовувати CRUD-операції з базами даних?

question mark

Що означає абревіатура CRUD?

Select the correct answer

question mark

Чому необхідно реалізовувати CRUD-операції у вашому коді?

Select the correct answer

question mark

Чи можна використовувати CRUD-операції з базами даних?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 4
some-alt