Skip to content

LMAG16/LiterAlura

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 LiterAlura - Catálogo de Libros

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.


🚀 Funcionalidades

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

🧠 Tecnologías utilizadas

  • Java 17
  • Spring Boot
  • Spring Data JPA
  • PostgreSQL
  • Hibernate
  • Jackson (JSON mapping)
  • Maven
  • IntelliJ IDEA

🌐 API utilizada

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.


🏗️ Arquitectura del proyecto

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

🗄️ Base de datos

El sistema utiliza PostgreSQL.

Las entidades principales son:

Autor

  • nombre
  • año de nacimiento
  • año de fallecimiento

Libro

  • título
  • idioma
  • número de descargas
  • relación con autor

Relación:

Autor 1 ----- N Libro

▶️ Ejemplo de ejecución

***** 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

⚙️ Configuración del proyecto

  1. Instalar Java 17 o superior
  2. Instalar PostgreSQL
  3. Crear base de datos:
literalura
  1. 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

📌 Mejoras implementadas

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

👨‍💻 Autor

Proyecto desarrollado por Lindsay Alvarez Programa Oracle Next Education - Alura Latam

About

Challenge de literatura con AluraLatam.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages