Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Operações CRUD em Java | Estruturas de Dados Fundamentais em Java
Estruturas de Dados em Java

bookOperações CRUD em Java

Operações Básicas para um Banco de Dados

Você concluiu uma tarefa prática sobre gerenciamento de biblioteca, implementando métodos para adicionar, recuperar e remover elementos de uma lista.

Essas operações são fundamentais para quase toda lista e aplicação — elas são conhecidas como operações CRUD!

CRUD significa CREATE, READ, UPDATE e DELETE, representando uma lista de operações a serem realizadas em um banco de dados.

No nosso caso, na tarefa anterior, a classe Library serviu como nosso banco de dados, especificamente a lista de livros. Você escreveu operações fundamentais para trabalhar com essa lista, personalizando cada uma delas. Foram criados métodos mais específicos para recuperar um livro pelo autor ou obter uma lista de livros publicados após um determinado ano.

Operações semelhantes são empregadas em grandes aplicações para interagir com bancos de dados. Ao final, nossa aplicação deve:

  1. Ser capaz de criar dados no banco de dados;
  2. Ser capaz de ler dados do banco de dados;
  3. Ser capaz de atualizar dados específicos no banco de dados;
  4. Ser capaz de deletar dados do banco de dados.

Você pode ter notado que não implementou o método de atualização na tarefa anterior.

Vamos fazer isso agora:

Primeiro, é necessário recuperar o livro pelo ID para atualizar um elemento pelo ID. Para isso, você irá implementar um método que busca o livro pelo ID. É melhor fazer dessa forma do que implementar a lógica de obter um livro pelo seu ID diretamente no método de atualização, pois assim é possível reutilizar esse método em outras funções, tornando-o mais versátil.

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

A solução acima é uma boa opção, mas existe um pequeno problema. Você receberá um erro se tal ID não existir em nossa lista. É necessário tratar esse erro e exibir uma mensagem na tela indicando que não existe tal livro na lista (banco de dados).

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

Inicialmente, inicializamos a variável result como null nesta solução. Após implementar a busca do livro pelo ID, realizamos uma verificação para ver se nosso resultado ainda é null. Se for true, criamos um novo livro indefinido. Vamos prosseguir para a implementação do método 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 } } }

Atualizamos o livro modificando todos os seus parâmetros. Recomendo fortemente fazer dessa forma, pois se simplesmente reatribuirmos o livro, erros inesperados podem ocorrer. Dessa maneira, atualizamos o livro pelo ID, reatribuindo-o aos parâmetros do novo livro.

Agora, vamos utilizar o método update e observar o que acontece:

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

Agora, a classe Library possui todas as operações CRUD.

Recomendo copiar os métodos apresentados neste capítulo e adicioná-los ao seu código do exercício anterior, pois este código atualizado será útil posteriormente.

1. O que significa o acrônimo CRUD?

2. Por que é necessário implementar operações CRUD em seu código?

3. As operações CRUD podem ser usadas com bancos de dados?

question mark

O que significa o acrônimo CRUD?

Select the correct answer

question mark

Por que é necessário implementar operações CRUD em seu código?

Select the correct answer

question mark

As operações CRUD podem ser usadas com bancos de dados?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 4

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

bookOperações CRUD em Java

Deslize para mostrar o menu

Operações Básicas para um Banco de Dados

Você concluiu uma tarefa prática sobre gerenciamento de biblioteca, implementando métodos para adicionar, recuperar e remover elementos de uma lista.

Essas operações são fundamentais para quase toda lista e aplicação — elas são conhecidas como operações CRUD!

CRUD significa CREATE, READ, UPDATE e DELETE, representando uma lista de operações a serem realizadas em um banco de dados.

No nosso caso, na tarefa anterior, a classe Library serviu como nosso banco de dados, especificamente a lista de livros. Você escreveu operações fundamentais para trabalhar com essa lista, personalizando cada uma delas. Foram criados métodos mais específicos para recuperar um livro pelo autor ou obter uma lista de livros publicados após um determinado ano.

Operações semelhantes são empregadas em grandes aplicações para interagir com bancos de dados. Ao final, nossa aplicação deve:

  1. Ser capaz de criar dados no banco de dados;
  2. Ser capaz de ler dados do banco de dados;
  3. Ser capaz de atualizar dados específicos no banco de dados;
  4. Ser capaz de deletar dados do banco de dados.

Você pode ter notado que não implementou o método de atualização na tarefa anterior.

Vamos fazer isso agora:

Primeiro, é necessário recuperar o livro pelo ID para atualizar um elemento pelo ID. Para isso, você irá implementar um método que busca o livro pelo ID. É melhor fazer dessa forma do que implementar a lógica de obter um livro pelo seu ID diretamente no método de atualização, pois assim é possível reutilizar esse método em outras funções, tornando-o mais versátil.

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

A solução acima é uma boa opção, mas existe um pequeno problema. Você receberá um erro se tal ID não existir em nossa lista. É necessário tratar esse erro e exibir uma mensagem na tela indicando que não existe tal livro na lista (banco de dados).

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

Inicialmente, inicializamos a variável result como null nesta solução. Após implementar a busca do livro pelo ID, realizamos uma verificação para ver se nosso resultado ainda é null. Se for true, criamos um novo livro indefinido. Vamos prosseguir para a implementação do método 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 } } }

Atualizamos o livro modificando todos os seus parâmetros. Recomendo fortemente fazer dessa forma, pois se simplesmente reatribuirmos o livro, erros inesperados podem ocorrer. Dessa maneira, atualizamos o livro pelo ID, reatribuindo-o aos parâmetros do novo livro.

Agora, vamos utilizar o método update e observar o que acontece:

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

Agora, a classe Library possui todas as operações CRUD.

Recomendo copiar os métodos apresentados neste capítulo e adicioná-los ao seu código do exercício anterior, pois este código atualizado será útil posteriormente.

1. O que significa o acrônimo CRUD?

2. Por que é necessário implementar operações CRUD em seu código?

3. As operações CRUD podem ser usadas com bancos de dados?

question mark

O que significa o acrônimo CRUD?

Select the correct answer

question mark

Por que é necessário implementar operações CRUD em seu código?

Select the correct answer

question mark

As operações CRUD podem ser usadas com bancos de dados?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 4
some-alt