Spring Boot – Operaciones CRUD – Part 1

CRUD significa Crear, Leer/Recuperar, Actualizar y Eliminar y estas son las cuatro operaciones básicas que realizamos en el almacenamiento persistente. CRUD está orientado a datos y al uso estandarizado de métodos HTTP. HTTP tiene algunos métodos que funcionan como operaciones CRUD y tenga en cuenta que son muy vitales desde una perspectiva de punto de desarrollo en la programación que también nos ayuda a relacionarnos mejor con el desarrollo web y también nos ayuda cuando tratamos con bases de datos. Entonces, las operaciones CRUD estándar son las siguientes:

  • POST : crea un nuevo recurso
  • GET : lee/recupera un recurso
  • PUT : Actualiza un recurso existente
  • DELETE : Elimina un recurso

Como el nombre sugiere 

  • Operación CREATE : Realiza la instrucción INSERT para crear un nuevo registro.
  • Operación READ : Lee los registros de la tabla en función del parámetro de entrada.
  • Operación UPDATE : Ejecuta una declaración de actualización en la tabla. Se basa en el parámetro de entrada.
  • Operación DELETE : Elimina una fila especificada en la tabla. También se basa en el parámetro de entrada.

Entonces, en este artículo, vamos a realizar algunas operaciones CRUD básicas mediante la creación de una aplicación Spring Boot y el uso de la base de datos H2. Así que aquí hay una breve explicación de What’s Spring Boot y What’s H2 Database. 

Bota de primavera

Spring Boot está construido en la parte superior del resorte y contiene todas las características del resorte. Y se está convirtiendo en el favorito de los desarrolladores en estos días porque es un entorno listo para la producción rápida que permite a los desarrolladores centrarse directamente en la lógica en lugar de luchar con la configuración y la configuración. Spring Boot es un marco basado en microservicios y crear una aplicación lista para producción lleva muy poco tiempo.

Base de datos H2

H2 es un sistema de gestión de bases de datos relacionales escrito en Java. Puede integrarse en aplicaciones Java o ejecutarse en modo cliente-servidor. Las principales características de H2 son:

  • API JDBC muy rápida y de código abierto
  • Modos integrado y de servidor; bases de datos en memoria
  • Aplicación de consola basada en navegador
  • Tamaño reducido: alrededor de 2,5 MB de tamaño de archivo jar

Repositorio Spring Boot Crud

Hay una interfaz disponible en Spring Boot llamada CrudRepository que contiene métodos para operaciones CRUD. Proporciona una operación Crud genérica en un repositorio. Se define en el paquete org.springframework.data.repository y amplía la interfaz Spring Data Repository . Si alguien quiere usar CrudRepository en la aplicación Spring Boot, debe crear una interfaz y ampliar la interfaz de CrudRepository. 

Ilustración:

public interface DepartmentRepository extends CrudRepository<Department, Long> { }

Dónde:

  • Departamento : tipo de dominio que administra el repositorio (generalmente el nombre de clase de la entidad/modelo)
  • Largo : tipo de identificación de la entidad que administra el repositorio (generalmente, la clase contenedora de su @Id que se crea dentro de la clase Entidad/Modelo)

Ejemplo:

Paso 1: Consulte este artículo Cómo crear un proyecto Spring Boot con IntelliJ IDEA y cree un proyecto Spring Boot. 

Paso 2: agregue la siguiente dependencia

  • Telaraña de primavera
  • Base de datos H2
  • Lombok
  • JPA de datos de primavera

A continuación se muestra el código completo para el archivo pom.xml . Por favor, compruebe si se ha perdido algo.

XML

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.amiya</groupId>
    <artifactId>Spring-Boot-Demo-Project</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <name>Spring-Boot-Demo-Project</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
 
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
 
    </dependencies>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
 
</project>

Paso 3 : Cree 4 paquetes y luego cree algunas clases e interfaces dentro de estos paquetes como se ve en la imagen a continuación:

  • entidad
  • repositorio
  • Servicio
  • controlador

Nota :

  • Icono verde redondeado ‘I’ Los botones son interfaz
  • Los botones ‘C’ de icono redondeado azul son clases

Paso 4: dentro del paquete de entidad

Cree una clase POJO simple dentro del archivo Department.java. 

Ejemplo

Java

// Java Program to Illustrate Department.java File
 
// Importing required package modules
package com.amiya.springbootdemoproject.entity;
 
// Importing required classes
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
 
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
 
// Class
public class Department {
 
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long departmentId;
    private String departmentName;
    private String departmentAddress;
    private String departmentCode;
}

Paso 5: dentro del paquete del repositorio

Cree una interfaz simple y nombre la interfaz como DepartmentRepository. Esta interfaz ampliará CrudRepository como hemos comentado anteriormente. A continuación se muestra el código para el archivo DepartmentRepository.java

Ejemplo

Java

package com.amiya.springbootdemoproject.repository;
 
import com.amiya.springbootdemoproject.entity.Department;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
 
@Repository
public interface DepartmentRepository extends CrudRepository<Department, Long> {
     
}

Paso 6: Dentro del paquete de servicios

Dentro del paquete, cree una interfaz denominada DepartmentService y una clase denominada DepartmentServiceImpl .

Ejemplo 1

Java

// Java Program to Illustrate DepartmentService.java File
 
// Importing packages
package com.amiya.springbootdemoproject.service;
import com.amiya.springbootdemoproject.entity.Department;
// Importing required classes
import java.util.List;
 
// Class
public interface DepartmentService {
 
    // Save operation
    Department saveDepartment(Department department);
 
    // Read operation
    List<Department> fetchDepartmentList();
 
    // Update operation
    Department updateDepartment(Department department,
                                Long departmentId);
 
    // Delete operation
    void deleteDepartmentById(Long departmentId);
}

A continuación se muestra el código para el archivo DepartmentServiceImpl.java

Ejemplo 2

Java

// Java Program to Illustrate DepartmentServiceImpl.java
// File
 
// Importing required packages
package com.amiya.springbootdemoproject.service;
 
import com.amiya.springbootdemoproject.entity.Department;
import com.amiya.springbootdemoproject.repository.DepartmentRepository;
// Importing required classes
import java.util.List;
import java.util.Objects;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
// Annotation
@Service
// Class implementing DepartmentService class
public class DepartmentServiceImpl
    implements DepartmentService {
 
    @Autowired
    private DepartmentRepository departmentRepository;
 
    // Save operation
    @Override
    public Department saveDepartment(Department department)
    {
        return departmentRepository.save(department);
    }
 
    // Read operation
    @Override public List<Department> fetchDepartmentList()
    {
        return (List<Department>)
            departmentRepository.findAll();
    }
 
    // Update operation
    @Override
    public Department
    updateDepartment(Department department,
                     Long departmentId)
    {
 
        Department depDB
            = departmentRepository.findById(departmentId)
                  .get();
 
        if (Objects.nonNull(department.getDepartmentName())
            && !"".equalsIgnoreCase(
                department.getDepartmentName())) {
            depDB.setDepartmentName(
                department.getDepartmentName());
        }
 
        if (Objects.nonNull(
                department.getDepartmentAddress())
            && !"".equalsIgnoreCase(
                department.getDepartmentAddress())) {
            depDB.setDepartmentAddress(
                department.getDepartmentAddress());
        }
 
        if (Objects.nonNull(department.getDepartmentCode())
            && !"".equalsIgnoreCase(
                department.getDepartmentCode())) {
            depDB.setDepartmentCode(
                department.getDepartmentCode());
        }
 
        return departmentRepository.save(depDB);
    }
 
    // Delete operation
    @Override
    public void deleteDepartmentById(Long departmentId)
    {
        departmentRepository.deleteById(departmentId);
    }
}

Paso 7: Dentro del paquete del controlador

Dentro del paquete, cree una clase llamada DepartmentController

Java

// Java Program to Illustrate DepartmentController.java File
 
// Importing packages modules
package com.amiya.springbootdemoproject.controller;
 
import com.amiya.springbootdemoproject.entity.Department;
import com.amiya.springbootdemoproject.service.DepartmentService;
import java.util.List;
// Importing required classes
import javax.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
// Annotation
@RestController
// Class
public class DepartmentController {
 
    @Autowired private DepartmentService departmentService;
 
    // Save operation
    @PostMapping("/departments")
 
    public Department saveDepartment(
        @Valid @RequestBody Department department)
    {
        return departmentService.saveDepartment(department);
    }
 
    // Read operation
    @GetMapping("/departments")
 
    public List<Department> fetchDepartmentList()
    {
        return departmentService.fetchDepartmentList();
    }
 
    // Update operation
    @PutMapping("/departments/{id}")
 
    public Department
    updateDepartment(@RequestBody Department department,
                     @PathVariable("id") Long departmentId)
    {
        return departmentService.updateDepartment(
            department, departmentId);
    }
 
    // Delete operation
    @DeleteMapping("/departments/{id}")
 
    public String deleteDepartmentById(@PathVariable("id")
                                       Long departmentId)
    {
        departmentService.deleteDepartmentById(
            departmentId);
        return "Deleted Successfully";
    }
}

Paso 8: a continuación se muestra el código para el archivo application.properties

server.port = 8082

# H2 Database
spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:dcbapp
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

Ahora ejecute su aplicación y probemos los puntos finales en Postman y también consulte nuestra base de datos H2.

Probando el Endpoint en Postman

Extremo 1: POST – http://localhost:8082/departamentos/

Extremo 2: GET – http://localhost:8082/departamentos/

Extremo 3: PUT – http://localhost:8082/departamentos/1

Extremo 4: ELIMINAR – http://localhost:8082/departamentos/1

Por último, la base de datos H2 se muestra en los siguientes medios de la siguiente manera:

Publicación traducida automáticamente

Artículo escrito por AmiyaRanjanRout y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *