Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Ejemplo 01: Persistencia de datos con Spring Data JPA

OBJETIVO

  • Hacer uso de las anotaciones básicas de JPA para indicar qué objeto debe ser tratado como una entidad de base de datos.
  • Aprender qué es un repositorio y los métodos por default que ofrece.

DESARROLLO

Antes de comenzar asegúrate de tener instado MySQL Community Edition y de crear una base de datos llamada bedu.

Crea un proyecto usando Spring Initializr desde el IDE IntelliJ con las siguientes opciones:

  • Gradle Proyect (no te preocupes, no es necesario que tengas Gradle instalado).
  • Lenguaje: Java.
  • Versión de Spring Boot, la versión estable más reciente
  • Grupo, artefacto y nombre del proyecto.
  • Forma de empaquetar la aplicación: jar.
  • Versión de Java: 11 o superior.

En la siguiente ventana elige Spring Web, MySQL Driver y Spring Data JPA como dependencias del proyecto:

imagen

Presiona el botón "Finish".

Dentro del nuevo proyecto crea los siguientes subpaquetes: controller, model y persistence.

Dentro del paquete model crea una clase llamada Cliente con los siguientes atributos, y agrega sus correspondientes métodos getter y setter:

public class Cliente {
    private Long id;
    private String nombre;
    private String correoContacto;
    private int numeroEmpleados;
    private String direccion;
}

Decora la clase con las anotaciones @Entity y @Table del paquete javax.persistence:

@Entity
@Table(name = "CLIENTE")
public class Cliente {

}

Decora los atributos id, correoContacto y numeroEmpleados con las siguientes anotaciones (nombre y direccion permanecen igual)

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String nombre;

    @Column(name = "correo_contacto", length = 30)
    private String correoContacto;

    @Column(name = "numero_empleados")
    private int numeroEmpleados;

    private String direccion;

En el paquete persistence crea una interface llamada ClienteRepository que extienda de JpaRepository. Esta interface permanecerá sin métodos:

public interface ClienteRepository  extends JpaRepository<Cliente, Long> {

}

En el paquete controller crea una nueva clase llamada ClienteController y decórala con las anotaciones de Spring MVC para indicar que esta clase es un controlador web.

@RestController
@RequestMapping("/cliente")
public class ClienteController {

}

Agrega un atributo final de tipo ClienteRepository:

  private final ClienteRepository clienteRepository;

Agrega un constructor a ClienteController e inyecta la la instancia de ClienteRepository usando la inyección de construcción:

    @Autowired
    public ClienteController(ClienteRepository clienteRepository) {
        this.clienteRepository = clienteRepository;
    }

Crea un método POST que reciba un objeto Cliente como parámetro y regrese un código de respuesta 201:

    @PostMapping
    public ResponseEntity<Void> creaCliente(@RequestBody Cliente cliente){
        return ResponseEntity.created(URI.create("")).build();
    }

Dentro del método creaCliente usa el objeto clienteRepository para guardar el objeto cliente en base de datos. Usa el id del objeto almacenado para regresarlo en la respuesta del método.

    @PostMapping
    public ResponseEntity<Void> creaCliente(@RequestBody Cliente cliente){

        Cliente clienteDB = clienteRepository.save(cliente);

        return ResponseEntity.created(URI.create(clienteDB.getId().toString())).build();
    }

En el directorio resources busca o crea el archivo application.properties.

Coloca el siguiente contenido en el archivo (personaliza el contenido en caso de ser necesario):

spring.jpa.hibernate.ddl-auto=update
spring.jpa.hibernate.generate_statistics=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/bedu?serverTimezone=UTC
spring.datasource.username=<usuario>
spring.datasource.password=<password>

Ejecuta la aplicación y envía la siguinte petición desde Postman:

{
    "nombre": "BeduORG",
    "correoContacto": "[email protected]",
    "numeroEmpleados": "20",
    "direccion": "direccion"
}

debes tener la siguiente respuesta en la consola de Postman:

Revisa la base de datos, la tabla CLIENTE debe haberse creado de forma automática y debe tener almacenado el registro con los datos enviados desde Postman: