Proyecto desarrollado en Java con Spring Boot que permite consultar libros desde la API de Gutendex, almacenarlos en una base de datos PostgreSQL y realizar consultas a través de un menú interactivo en consola.
Este proyecto forma parte del desafío LiterAlura del programa Oracle Next Education - Alura Latam.
El sistema permite al usuario:
1️⃣ Buscar libros por título desde la API Gutendex 2️⃣ Guardar libros y autores en la base de datos 3️⃣ Listar libros registrados 4️⃣ Listar autores registrados 5️⃣ Listar autores vivos en un año determinado 6️⃣ Listar libros por idioma
Además, el sistema incluye:
- Evitar guardar autores duplicados
- Evitar guardar libros duplicados
- Manejo de datos desde JSON hacia objetos Java
- Persistencia usando Spring Data JPA
- Java 17
- Spring Boot
- Spring Data JPA
- PostgreSQL
- Hibernate
- Jackson (JSON mapping)
- Maven
- IntelliJ IDEA
Este proyecto consume datos desde la API pública:
Gutendex API
Ejemplo de consulta:
https://gutendex.com/books/?search=harry
Esta API proporciona información de más de 70,000 libros del Project Gutenberg.
El proyecto sigue una estructura basada en capas:
literalura
│
├── model
│ ├── Autor
│ └── Libro
│
├── dto
│ ├── DatosAutor
│ ├── DatosLibro
│ └── DatosRespuesta
│
├── repository
│ ├── AutorRepository
│ └── LibroRepository
│
├── service
│ ├── ConsumoAPI
│ └── ConvierteDatos
│
└── LiteraluraApplication
Cada capa tiene una responsabilidad específica:
- model → entidades de base de datos
- dto → representación de datos recibidos desde la API
- repository → acceso a la base de datos
- service → consumo de API y conversión de datos
El sistema utiliza PostgreSQL.
Las entidades principales son:
- nombre
- año de nacimiento
- año de fallecimiento
- título
- idioma
- número de descargas
- relación con autor
Relación:
Autor 1 ----- N Libro
***** LITERALURA *****
1 - Buscar libro por título
2 - Listar libros registrados
3 - Listar autores registrados
4 - Listar autores vivos en un determinado año
5 - Listar libros por idioma
6 - Salir
Ejemplo de búsqueda:
Escribe el nombre del libro que deseas buscar:
harry
Resultado:
----- LIBRO -----
Título: The Misplaced Battleship
Autor: Harrison, Harry
Idioma: en
Descargas: 4086.0
- Instalar Java 17 o superior
- Instalar PostgreSQL
- Crear base de datos:
literalura
- Configurar
application.properties:
spring.datasource.url=jdbc:postgresql://localhost:5432/literalura
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.format-sql=true
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
Además de los requisitos del desafío, se añadieron mejoras como:
- Control de duplicados en autores
- Control de duplicados en libros
- Manejo de Optional en consultas JPA
- Validación cuando no hay resultados
- Arquitectura modular del proyecto
Proyecto desarrollado por Lindsay Alvarez Programa Oracle Next Education - Alura Latam