Desarrollado como parte del Challenge de gestión de libros, impuesto por Alura Latam en colaboración con Oracle en el programa ONE, como parte de la especialización Back-End.
Este proyecto es un Gestor de Libros desarrollado en Java que te permite buscar libros por título, autores por nombre, listar libros y autores registrados, y obtener estadísticas generales sobre la base de datos de libros. La aplicación interactúa con una API externa para obtener información y utiliza una base de datos local para almacenar y gestionar los datos de libros y autores.
- Lenguaje de Programación: Java
- API de Libros: Se utilizó una API externa (gutendex.com) para obtener información sobre libros y autores.
- Spring Framework: Para la gestión de la inyección de dependencias y acceso a la base de datos.
- Base de Datos: Utilización de una base de datos (posiblemente H2, MySQL, etc.) para el almacenamiento de datos.
- Control de Versiones: Git/GitHub se usaron para el control de versiones del proyecto y la colaboración en equipo.
- Entorno de Desarrollo Integrado (IDE): IntelliJ IDEA fue el entorno de desarrollo utilizado para escribir, depurar y ejecutar el código Java.
El punto de entrada principal del programa. Aquí se maneja la interacción con el usuario a través de la consola, mostrando un menú de opciones y gestionando las consultas sobre libros y autores.
- Buscar libro por título.
- Buscar autor por nombre.
- Listar libros registrados.
- Listar autores registrados.
- Listar autores vivos en un determinado año.
- Listar libros por idioma.
- Obtener estadísticas generales.
- Listar los 10 libros más descargados.
- Listar autores nacidos o fallecidos en algún año específico.
Clase responsable de realizar consultas a una API externa para obtener información sobre libros y autores.
Esta clase se encarga de convertir los datos obtenidos de la API para su uso en la aplicación.
Interfaz que maneja las operaciones de la base de datos relacionadas con los autores.
En este proyecto, utilizamos varias clases modelo para representar las entidades del dominio, como autores y libros. Estas clases están mapeadas a tablas de la base de datos utilizando JPA (Java Persistence API).
La clase Autor
representa la entidad "Autor" en la base de datos. Esta clase incluye atributos como el nombre del autor, su fecha de nacimiento y fallecimiento, así como una lista de libros asociados. La relación entre autores y libros se gestiona mediante una asociación de uno a muchos.
- id: Identificador único del autor.
- nombre: Nombre del autor.
- fechaDeNacimiento: Año de nacimiento del autor.
- fechaDeFallecimiento: Año de fallecimiento del autor (puede ser nulo si el autor está vivo).
- libros: Lista de libros escritos por el autor.
La clase Datos
se utiliza para mapear la estructura JSON de la respuesta de la API. Esta clase contiene el total de resultados y una lista de libros obtenidos de la API.
- total: Número total de resultados.
- libros: Lista de objetos
DatosLibro
que representan los libros obtenidos de la API.
La clase DatosLibro
representa la información de un libro obtenida de la API. Esta clase incluye atributos como el título del libro, una lista de autores, los idiomas en los que está disponible y el número de descargas.
- titulo: Título del libro.
- autores: Lista de objetos
DatosAutor
que representan los autores del libro. - idiomas: Lista de idiomas en los que está disponible el libro.
- numeroDeDescargas: Número de descargas del libro.
Utilizamos las siguientes anotaciones de JPA para mapear las clases modelo a tablas de la base de datos:
- @Entity: Marca una clase como una entidad JPA.
- @Table: Especifica la tabla de la base de datos con la que se va a mapear la entidad.
- @Id: Indica el campo que es la clave primaria.
- @GeneratedValue: Define la estrategia de generación de valores para la clave primaria.
- @Column: Especifica el mapeo de una columna en la tabla de base de datos.
- @OneToMany: Define una relación uno a muchos entre dos entidades.
Estas anotaciones permiten que las clases de modelo se conviertan en entidades persistentes en una base de datos relacional, facilitando la interacción con la base de datos a través de repositorios y servicios.
- David Velasco Fierros
- Clona este repositorio en tu máquina local.
- Abre el proyecto en IntelliJ IDEA u otro IDE de tu elección.
- Configura la conexión a la base de datos en el archivo de propiedades correspondiente.
- Ejecuta la clase
Principal.java
para iniciar el programa. - Sigue las instrucciones en pantalla para buscar libros, autores y obtener estadísticas.
¡Disfruta gestionando tu biblioteca de libros!
Aquí puedes ver una demostración visual de cómo funciona el proyecto: