Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Operaciones CRUD en Java | Estructuras de Datos Fundamentales en Java
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Estructuras de Datos en Java

bookOperaciones CRUD en Java

Operaciones básicas para una base de datos

Se completó una tarea práctica sobre gestión de bibliotecas, implementando métodos para agregar, recuperar y eliminar elementos de una lista.

Estas operaciones son fundamentales para casi todas las listas y aplicaciones; se conocen como operaciones CRUD.

CRUD significa CREAR, LEER, ACTUALIZAR y ELIMINAR, representando una lista de operaciones que se realizan en una base de datos.

En este caso, en la tarea anterior, la clase Library funcionó como nuestra base de datos, específicamente la lista de libros. Se escribieron operaciones fundamentales para trabajar con esta lista, personalizando ligeramente cada una de ellas. Se crearon métodos más específicos para recuperar un libro por autor u obtener una lista de libros publicados después de un año específico.

Operaciones similares se emplean en aplicaciones grandes para interactuar con bases de datos. Al final, la aplicación debe:

  1. Poder crear datos en la base de datos;
  2. Poder leer datos de la base de datos;
  3. Poder actualizar datos específicos en la base de datos;
  4. Poder eliminar datos de la base de datos.

Es posible que haya notado que no se implementó el método actualizar en la tarea anterior.

Vamos a hacerlo ahora:

Primero, es necesario recuperar el libro por ID para actualizar un elemento por ID. Para esto, se implementará un método que obtenga el libro por ID. Es preferible hacerlo de esta manera en lugar de implementar la lógica de obtener un libro por su ID dentro del método de actualización, ya que se puede reutilizar este método en otras funciones, haciéndolo más 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; }

La solución anterior es una buena opción, pero existe un pequeño problema. Obtendrás un error si dicho ID no existe en nuestra lista. Es necesario manejar este error y mostrar un mensaje en pantalla indicando que no existe tal libro en la lista (base de datos).

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 la variable result como null en esta solución. Después de implementar la búsqueda de libros por ID, realizamos una comprobación para ver si nuestro resultado sigue siendo null. Si es true, creamos un nuevo libro indefinido. Pasemos a implementar el 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 } } }

Actualizamos el libro modificando todos sus parámetros. Se recomienda encarecidamente hacerlo de esta manera porque, si simplemente reasignamos el libro, pueden ocurrir errores inesperados. De este modo, actualizamos el libro por ID, reasignándolo a los parámetros del nuevo libro.

Ahora, utilicemos el método update y observemos qué sucede:

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

Ahora, la clase Library incluye todas las operaciones CRUD.

Se recomienda copiar los métodos presentados en este capítulo y agregarlos al código del ejercicio anterior, ya que este código actualizado será útil más adelante.

1. ¿Qué significa el acrónimo CRUD?

2. ¿Por qué es necesario implementar operaciones CRUD en su código?

3. ¿Se pueden utilizar operaciones CRUD con bases de datos?

question mark

¿Qué significa el acrónimo CRUD?

Select the correct answer

question mark

¿Por qué es necesario implementar operaciones CRUD en su código?

Select the correct answer

question mark

¿Se pueden utilizar operaciones CRUD con bases de datos?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 4

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

bookOperaciones CRUD en Java

Desliza para mostrar el menú

Operaciones básicas para una base de datos

Se completó una tarea práctica sobre gestión de bibliotecas, implementando métodos para agregar, recuperar y eliminar elementos de una lista.

Estas operaciones son fundamentales para casi todas las listas y aplicaciones; se conocen como operaciones CRUD.

CRUD significa CREAR, LEER, ACTUALIZAR y ELIMINAR, representando una lista de operaciones que se realizan en una base de datos.

En este caso, en la tarea anterior, la clase Library funcionó como nuestra base de datos, específicamente la lista de libros. Se escribieron operaciones fundamentales para trabajar con esta lista, personalizando ligeramente cada una de ellas. Se crearon métodos más específicos para recuperar un libro por autor u obtener una lista de libros publicados después de un año específico.

Operaciones similares se emplean en aplicaciones grandes para interactuar con bases de datos. Al final, la aplicación debe:

  1. Poder crear datos en la base de datos;
  2. Poder leer datos de la base de datos;
  3. Poder actualizar datos específicos en la base de datos;
  4. Poder eliminar datos de la base de datos.

Es posible que haya notado que no se implementó el método actualizar en la tarea anterior.

Vamos a hacerlo ahora:

Primero, es necesario recuperar el libro por ID para actualizar un elemento por ID. Para esto, se implementará un método que obtenga el libro por ID. Es preferible hacerlo de esta manera en lugar de implementar la lógica de obtener un libro por su ID dentro del método de actualización, ya que se puede reutilizar este método en otras funciones, haciéndolo más 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; }

La solución anterior es una buena opción, pero existe un pequeño problema. Obtendrás un error si dicho ID no existe en nuestra lista. Es necesario manejar este error y mostrar un mensaje en pantalla indicando que no existe tal libro en la lista (base de datos).

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 la variable result como null en esta solución. Después de implementar la búsqueda de libros por ID, realizamos una comprobación para ver si nuestro resultado sigue siendo null. Si es true, creamos un nuevo libro indefinido. Pasemos a implementar el 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 } } }

Actualizamos el libro modificando todos sus parámetros. Se recomienda encarecidamente hacerlo de esta manera porque, si simplemente reasignamos el libro, pueden ocurrir errores inesperados. De este modo, actualizamos el libro por ID, reasignándolo a los parámetros del nuevo libro.

Ahora, utilicemos el método update y observemos qué sucede:

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

Ahora, la clase Library incluye todas las operaciones CRUD.

Se recomienda copiar los métodos presentados en este capítulo y agregarlos al código del ejercicio anterior, ya que este código actualizado será útil más adelante.

1. ¿Qué significa el acrónimo CRUD?

2. ¿Por qué es necesario implementar operaciones CRUD en su código?

3. ¿Se pueden utilizar operaciones CRUD con bases de datos?

question mark

¿Qué significa el acrónimo CRUD?

Select the correct answer

question mark

¿Por qué es necesario implementar operaciones CRUD en su código?

Select the correct answer

question mark

¿Se pueden utilizar operaciones CRUD con bases de datos?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 4
some-alt