Ticker

6/recent/ticker-posts

API RESTful CRUD con Spring Boot 3, Spring Data JPA


En este tutorial práctico desarrollaremos una API RESTful CRUD con Spring Boot 3Spring Data JPA.  Spring Data JPA es uno de los frameworks que se encuentra dentro de la plataforma de Spring.


Requisitos:

  1. PostgreSQL 14.
  2. pgAmin
  3. Java 17.
  4. Dependencias Maven 3.8.6.
  5. Spring Initializr.
  6. Spring Boot 3.0.1.
  7. IntelliJ IDEA Ultimate y Postman.


Lo que veremos en este tutorial:

  1. Spring Data JPA.
  2. Crear el proyecto desde Spring Initializr.
  3. Crear los paquetes del proyecto.
  4. Crear la conexión a base de datos.
  5. Crear la clase e implementar el modelo (entidad).
  6. Crear la clase e implementar la interfaz repositorio.
  7. Crear la clase e implementar los métodos de la interfaz negocio.
  8. Crear la clase e implementar los metodos para la API RESTful.
  9. Ejecutar la API RESTful y testear desde Postman.
  10. Conclusiones y Referencias.


1. Spring Data JPA

Spring Data JPA, módulo que es parte de Spring Framework que se ha incluido en Spring boot, con la finalidad de acceder a la capa de persistencia con el mínimo esfuerzo y reducir una gran cantidad de código repetitivo usando JPA.


2. Crear el proyecto desde Spring Initializr.

El nombre del poryecto llevara el nombre de spring-data-jpa-api-restful-crud y se tiene que agregar las dependencias de Spring Web, Spring Boot DevTools, PostgreSQL Driver, MySQL Driver y Spring Data JPA. Puedes revisar el tutorial acerca de Creando proyectos con Spring Initializr.




3. Crear los paquetes del proyecto.

Después de haber descargado y descomprimido el proyecto que fue generado desde Spring Initializr, agregar los paquetes que serán parte del proyecto spring-data-jpa-api-restful-crud.

Crear nuestros paquetes con relación a la entidad (entity), repositorio (repository) y negocio (business). Los tres paquetes representas las capas de nuestra aplicación.



4. Crear la conexión a base de datos

Para este punto ya se tiene que tener creado la base de datos, sugiero revisar el siguiente tutorial acerca de Creando una base de datos con pgAdmin Management Tools for PostgreSQL, el nombre de la base de datos es db_demo.

Comencemos con los pasos necesarios para la conexión e inserción de datos en nuestra base de datos PostgreSQL:

4.1. Ubicar el archivo application.properties dentro del directorio sub directorio resources.

4.2. Seguidamente agregar los parámetros necesarios para lograr la conexión a la base de datos PostgreSQL:

spring.application.name=spring-data-jpa-api-restful-crud
spring.datasource.url=jdbc:postgresql://localhost:5432/db_demo
spring.datasource.username=postgres
spring.datasource.password=admin
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
server.error.include-stacktrace=never
server.port = 8280

5. Crear la clase e implementar el modelo (entidad JPA).

5.1. Crear e implementar nuestra entidad JPA (tabla) de nombre tbemployees.
4.2. Codigo a elaborar en nuestro controller Employees:

package com.hadsonpar.springdatajpaapirestfulcrud.entity;

import jakarta.persistence.*;

@Entity
@Table(name = "tbemployees")
public class Employees {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;

@Column(name = "first_name")
private String firstName;

@Column(name = "last_name")
private String lastName;

@Column(name = "email_id")
private String emailId;

public Employees()
{

}

public long getId() {
return id;
}


public Employees(String firstName, String lastName, String emailId) {
super();
this.firstName = firstName;
this.lastName = lastName;
this.emailId = emailId;
}

public void setId(long id) {
this.id = id;
}

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getLastName() {
return lastName;
}

public void setLastName(String lastName) {
this.lastName = lastName;
}

public String getEmailId() {
return emailId;
}

public void setEmailId(String emailId) {
this.emailId = emailId;
}
}

6. Crear la clase e implementar la interfaz repositorio.

6.1. Crear e implementar nuestra clase INTERFAZ REPOSITORIO de nombre EmployeesRepository.
6.2. Seguidamente implementar y extendender nuestra Interface EmployeesRepository a JpaRepository.:

package com.hadsonpar.springdatajpaapirestfulcrud.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.hadsonpar.springdatajpaapirestfulcrud.entity.Employees;

@Repository
public interface EmployeesRepository extends JpaRepository<Employees, Long> {

}

7. Crear la clase e implementar los métodos de la interfaz negocio.

7.1. Crear la clase INTERFAZ NEGOCIO de nombre IEmployeesBusiness.
7.2. Seguidamente implementar las interfaces de getAllEmployees()createEmployee(Employees employees)getIdEmployees(Long id)updateEmployee(Employees employees, Long id) y deleteEmployee(Long id) de nuestra capa Negocio:

package com.hadsonpar.springdatajpaapirestfulcrud.business;

import java.util.List;

import com.hadsonpar.springdatajpaapirestfulcrud.entity.Employees;

public interface IEmployeesBusiness {
public List<Employees> getAllEmployees();
public Employees createEmployee(Employees employees);
public Employees getIdEmployees(Long id) throws Exception;
public Employees updateEmployee(Employees employees, Long id) throws Exception;
public void deleteEmployee(Long id) throws Exception;
}

8. Crear la clase e implementar los metodos para la API RESTful.

8.1. Crear la clase NEGOCIO de nombre EmployeesBusiness e implementar la INTERFAZ IEmployeesBusiness.
7.2. Seguidamente implementar los  métodos de getAllEmployees()createEmployee(Employees employees)getIdEmployees(Long id)updateEmployee(Employees employeesLong id) y deleteEmployee(Long id) de nuestra capa Negocio:

package com.hadsonpar.springdatajpaapirestfulcrud.business;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;

import com.hadsonpar.springdatajpaapirestfulcrud.entity.Employees;
import com.hadsonpar.springdatajpaapirestfulcrud.repository.EmployeesRepository;
import org.springframework.web.server.ResponseStatusException;

@RestController
@RequestMapping("/api/v1/employees")
public class EmployeesBusiness implements IEmployeesBusiness{

@Autowired
private EmployeesRepository employeesRepository;

@GetMapping
public List<Employees> getAllEmployees(){
return employeesRepository.findAll();
}

@PostMapping
public Employees createEmployee(@RequestBody Employees employees){
return employeesRepository.save(employees);
}

@GetMapping("{id}")
public Employees getIdEmployees(@PathVariable("id") Long id) throws Exception {
return employeesRepository.findById(id).orElseThrow(
() -> new Exception("No se encontró el registro"));
}

@PutMapping("/{id}")
public Employees updateEmployee(@RequestBody Employees employees, @PathVariable("id") Long id) throws Exception {
try {
employees.setId(id);
return this.employeesRepository.save(employees);
} catch (Exception e) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "No se encontró el registro", e);
}
}

@DeleteMapping("/{id}")
public void deleteEmployee(@PathVariable("id") Long id) throws Exception {
try {
this.getIdEmployees(id);
employeesRepository.deleteById(id);
}catch (Exception e){
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "No se encontró el registro", e);
}
}
}

9. Ejecutar la API RESTful y testear desde Postman.

9.1. Ejecutar nuestra API RESTful.




9.2. Validar los verbos de HTTP desde Postman.

Ejecutar el método GET: http://localhost:8280/api/v1/employees clic en Send y retornar el resultado en formato JSON


GET (Listar todos los registros): http://localhost:8280/api/v1/employees
POST (Agregar uno registros): http://localhost:8280/api/v1/employees
GET (Busca por código): http://localhost:8280/api/v1/employees/1
PUT (Actualizar registro según el código): http://localhost:8280/api/v1/employees/1
DELETE (Eliminar registro según el código): http://localhost:8280/api/v1/employees/2


Recuerda que puedes ejecutar todos los verbos HTTP siguiendo los paso realizados en el punto Testear con Postman del tutorial ASP.NET Core - Crear Web API con C# y EF.

10. Conclusiones y Referencias.

Conclusiones:

  1. Creamos un proyecto desde Spring Initializr en base a la dependencia de Spring Reactive Web.
  2. Desarrollamos e implementamos nuestra API RESTful aplicando Spring Data JPA.
  3. Ejecutamos y validamos nuestra API RESTful haciend uso Postman.

Referencias:


Código disponible en GitHub
Directorio spring-data-jpa-api-restful-crud


Gracias nuevamente 😊 comentarios y apreciaciones son bienvenido, un fuerte abrazo para todos ✌...!!!

Publicar un comentario

0 Comentarios