Antes de empezar

1

Pasos para aprender Java Spring

2

Instalaci贸n de ambiente de desarrollo: Windows

3

驴Java sigue siendo gratuito?

4

Instalaci贸n de ambiente de desarrollo: Linux Ubuntu

5

Instalaci贸n de ambiente de desarrollo: macOS

Introducci贸n a Spring boot

6

驴Qu茅 es y qu茅 usaremos de Spring?

7

Conocer qu茅 es una aplicaci贸n autocontenida

8

Crear nuestra aplicaci贸n con Spring Initializr

9

Hola mundo con Spring Boot

10

Configurar Spring Boot

11

Crear la estructura del proyecto

Spring Data

12

驴Qu茅 es JPA?

13

Conocer qu茅 es Spring Data

14

Conectar la base de datos a nuestra aplicaci贸n

15

Mapear las tablas como clases

16

Crear Entity cuando su clave primaria es compuesta

17

Mapear relaciones entre clases

18

Usar la interface CrudRepository

19

Query Methods

Construyendo nuestra API

20

Implementar la anotaci贸n @Repository

21

驴Qu茅 es el patr贸n Data Mapper y qu茅 resuelve?

22

Orientar nuestra API al dominio con MapStruct

23

Orientar nuestro repositorio a t茅rminos del dominio

24

Inyecci贸n de dependencias

25

Implementar la anotaci贸n @Service

26

Implementar la anotaci贸n @RestController

27

Exponer nuestra API

Mejorando nuestra API

28

Controlar las respuestas HTTP

29

Crear el dominio de compras

30

Mapear el dominio de compras

31

Crear el repositorio de compras

32

Probando nuestros servicios de compras

33

Documentar nuestra API con Swagger

Spring Security

34

Configurar la seguridad de nuestra API con Spring Security

35

Generar un JWT

36

Autenticaci贸n con JWT

37

Autorizaci贸n con JWT

Despliegue de nuestra aplicaci贸n

38

Desplegar nuestra API desde la ventana de comandos

39

Desplegar nuestra base de datos con Heroku

40

Desplegar nuestra API con Heroku

41

Conclusiones y despedida del curso

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Aprende todo un fin de semana sin pagar una suscripci贸n 馃敟

Reg铆strate

Comienza en:

4D
5H
35M
48S
Curso de Java Spring

Curso de Java Spring

Alejandro Ram铆rez

Alejandro Ram铆rez

Implementar la anotaci贸n @Service

25/41
Recursos

Aportes 14

Preguntas 11

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Estaba un poco confundido con el concepto de Repositorio y Servicio. As铆 que me puse a indagar un poco y resulta que el repositorio es la capa simple de acceso o de comunicaci贸n con el sistema de almac茅n de datos (ojo, solo comunicaci贸n), mientras que el servicio es la l贸gica de acceso a estos datos desde la aplicaci贸n, as铆 pues un ejemplo ser铆a: Entras a un cajero autom谩tica y sacas dinero de tu cuenta, el banco es el repositorio, y el cajero es el servicio.

Las implementaciones del m茅todo delete son buenos ejemplos de los estilos declarativo e imperativo.
El primero define el qu茅 va a hacer el c贸digo mientras que el segundo define el c贸mo y por consiguiente se ven m谩s detalles. Cabe aclarar que el estilo declarativo no puede existir sin el estilo imperativo ya que el primero se apoya en el segundo para ocultar las estructuras de control (if, else, switch, etc).

驴Porqu茅 es necesario verificar que el producto exista en la base de datos antes de borrarlo? El Id normalmente se obtiene de procesos anteriores como de un listado, y si queremos saber si el borrado es exitoso se podr铆a obtener el n煤mero de fila(s) eliminada(s) 鈥 lo digo porque esto se ve muy bonito y mantenible, pero es costoso en m谩quina鈥 驴no?

Nuestros servicios son negociadores entre el repositorio y los controladores

@Service:

Intermediario entre el controlador de la API y el repositorio

Creo que todo tiene un porque, al principio lo ve铆a como algo repetitivo pero ahora tengo mas claro el porque se programa as铆.
Gracias profesor, excelente curso.

Creo que de esta forma es m谩s legible el m茅todo delete:

    public boolean delete(long id) {
        if (get(id).isEmpty()) {
            return false;
        }
        repository.delete(id);
        return true;
    }

Esta linea se puede leer de la siguiente forma?, no entend铆 muy bien la instrucci贸n
Si existia el producto y fue eliminado responde true de lo contrario response false
return getProduct(productId).map(Product ->{
productoRepository.delete(producttId);
return true;
}).orElse(false);

Para el que quiera entender de donde vienen estos objetos que nombra el profesor como el Optional o el m茅todo .map() 鈥 esto hace parte de lo que es Programaci贸n Funcional (Un paradigma de programaci贸n) de la cual Java a帽o tras a帽o ha tratado de adaptarse a este.
Actualmente se encuentra un curso de Java Funcional en platzi y es excelente.
https://platzi.com/cursos/java-funcional/

No hace falta usar el @Autowired en este caso porque Spring buscar谩 la instancia de ProductRepository en su contenedor y se dar谩 cuenta que existe creado previamente uno con el nombre productRepository, mismo nombre que el del atributo en ProductService. No obstante es buena pr谩ctica anotarlo con @Autowired

Otra opcion para el Delete, es con una lamda, queda mas prolijo me parece.

  public boolean delete(int productId){
        
        return getProduct(productId).map(product -> true).orElse(false);
    }```

Significado de @Service

Como usar el orElse del metodo map

Otra forma de hacerlo

	boolean isPresent = getProduct(productId).isPresent();

        if(isPresent) productRepositoryDomain.delete(productId);

        return isPresent;