EJERCICIO PAUTADO: API REST EN JAVA.
SPRING (+JPA, +HIBERNATE)
Requisitos técnicos:
- JDK (21/22) de Java.
- Apache Maven (últimas versiones)
- IDE (Eclipse o IntelliJ IDEA)
- Servidor de BBDD (MySQL Server o Oracle Database)
o No es necesario instalar en caso de utilizar H2 Database (recomendado)
- Plugin de SonarLint instalado en el IDE utilizado.
- Postman.
Requisitos de la aplicación:
- No debe tener errores de SonarLint (ni, obviamente, de compilación y/o ejecución)
- API REST en Spring.
- CRUD sencillo (consultar, eliminar, actualizar, añadir)
- Dos tablas:
o T_CUSTOMER en una relación 1:N con T_ACCOUNT.
o Una persona tiene varias cuentas, una cuenta solo pertenece a una persona.
o T_CUSTOMER (C_ID_CUSTOMER, C_NAME, C_ID_DOC_NUMBER, C_PHONE_NUMBER)
o T_ACCOUNT (C_ID_ACCOUNT, C_FK_ID_CUSTOMER, C_ID_NUMBER, C_BANK)
Nota: para el número de cuenta, de teléfono y DNI no son necesarias validaciones de formato.
Nota: el DNI y el número de cuenta serán campos únicos (unique = true)
- Desde Postman se podrá, mediante peticiones HTTP:
o Insertar cuentas.
o Insertar clientes.
o Consultar todos los clientes.
o Consultar todas las cuentas.
o Consultar clientes por DNI (ID_DOC_NUMBER)
o Consultar cuentas por número (C_ID_NUMBER)
o Consultar cuentas por DNI de cliente asociado.
o Eliminar un cliente por DNI.
o Eliminar una cuenta por número.
o Actualizar un dato del cliente, por DNI.
o Actualizar el banco de una cuenta, por número.
- OPCIONAL: Para un nivel más avanzado, implementar un modelo de roles donde un
usuario pueda consultar, pero solo un administrador pueda insertar, actualizar y eliminar.
Construcción de la aplicación:
1. Construir el proyecto con Initializer de Spring (https://start.spring.io/)
• Utilizar Apache Maven.
• Utilizar la versión de Java 21/22.
• Utilizar la versión de Spring 3.3.2.
• Info del proyecto:
• GroupID: com.bootcamp
• Artifact: project-bootcamp-bank-inicialesNombre
• Description: Proyecto Bootcamp Banca
• Package: com.bootcamp
• Packaging: jar
• Dependencias:
▪ Spring Boot DevTools
▪ Spring Web
▪ Spring Data JPA
▪ Driver de tu servidor BBDD (H2 Database, MySQL Driver, Oracle Driver...)
▪ Lombok ( opcional)
▪ Spring Security ( opcional)
2. Descargar el proyecto e importar al IDE (Eclipse o IntelliJ IDEA)
3. Actualizar/descargar dependencias de nuestro proyecto en el IDE.
• Eclipse: update maven (ALT + F5 sobre el proyecto)
• IntelliJ: maven refresh (CTRL + SHIFT + A sobre el pom.xml del proyecto + escribir
'reimport')
4. Empezar a desarrollar el código:
• Configuración de Spring (application.properties o application.yml):
▪ Conexión a BBDD (en caso de tener un servidor distinto a H2 Database)
▪ Configuración de seguridad ( opcional)
• Crear los distintos paquetes (representativos de cada capa)
▪ com.bootcamp.controllers
▪ com.bootcamp.services
▪ com.bootcamp.persistence
▪ com.bootcamp.persistence.models
▪ com.bootcamp.persistence.repositories
• Crear las clases necesarias en cada paquete:
▪ com.bootcamp.controllers
▪ CustomerRestController
▪ public Customer searchCustomerByIdDocNumber(Customer
customer){...}
▪ AccountBankController
▪ com.bootcamp.services
▪ CustomerManagementServiceI (interface)
▪ public Customer getCustomerByIdDocNumber(Customer customer)
▪ CustomerManagementServiceImpl implements
CustomerManagementServiceI
▪ public Customer getCustomerByIdDocNumber(Customer customer){...}
▪ AccountManagementServiceI (interface)
▪ AccountManagementServiceImpl implements
AccountManagementServiceI
▪ com.bootcamp.persistence
▪ com.bootcamp.persistence.repositories
▪ CustomerRepositoryI (interface)
▪ public Customer findCustomerByIdDocNumber(String
idDocNumber)
▪ AccountRepositoryI (interface)
▪ com.bootcamp.persistence.models
▪ Customer implements Serializable
▪ Account implements Serializable
Nota: en este esquema se ha añadido al menos un método de ejemplo para tomarlo de referencia.