Antes de empezar

1

Pasos para aprender Java Spring

2

¿Java sigue siendo gratuito?

3

Instalación de ambiente de desarrollo: Linux Ubuntu

4

Instalación de ambiente de desarrollo: macOS

5

Instalación de ambiente de desarrollo: Windows

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

Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Curso de Java Spring

Curso de Java Spring

Alejandro Ramírez

Alejandro Ramírez

Usar la interface CrudRepository

18/41
Recursos

Aportes 25

Preguntas 8

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Me está pareciendo de los mejores cursos de código que he visto en Platzi, espero que siga así de claro y entretenido!

Para poder ver como spring transforma los métodos a consultas podemos agregar en nuestro application.properties
spring.jpa.show-sql=true
y en la consola veremos como realiza la consulta
les dejo más información aquí

Tres tipos de repositorios:

  • CrudRepository: realizar el crue
  • PagingAndSortingRepository: incluye lo de Crud repository ademas de paginación y ordenamiento.
  • JPARepository: Ademas de tener CrudRepository y PagingAndSortingRepository nos permite tareas específicas como Flush.

Hasta el momento, me parece unos de los mejores cursos estructurados y explicados de toda la plataforma, excelente

Como un dato extra, los

<>

No se les llaman “Operadores Diamante”, su nombre Oficial es Genéricos, y es todo un tema aprenderlos.

PD: Les paso el dato por si se encuentran a un purista de Java (como yo) no les diga nada. 😛

De los pocos cursos de Platzi que verdaderamente son joyas

Excelente! hasta el momento, este curso me ha encantado esta muy bien estructurado

Hello guys, I couldn’t resist to apply a Unit Test to try our ProductCrudRepository. Have a look the code below :

@Slf4j
@ExtendWith(SpringExtension.class)
@SpringBootTest
class ProductCrudRepositoryTest {

    @Autowired
    ProductCrudRepository productCrudRepository;

    @Test
    void shoud_return_a_product_list_from_repository(){
        List<Product> products = (List<Product>) productCrudRepository.findAll();
        int productsNum = products.size();
        log.info("Actually we own " + productsNum + " products.");
        assertTrue(productsNum > 0);
    }


}

Also I’m gonna share my repository Spring project until now or a little bit more advanced.
https://github.com/borisbikes/platzi/tree/main/Spring/platzi-market/src/test/java/com/platzi/market
Cheers!

Por si les interesa les comparto el link los metodos implementados para la interface CrudRepository<T, ID>

https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/CrudRepository.html

Dos preguntas:

  1. ¿Qué hay de la anotación @Repository para la interfaz ProductoCrudRepository?
  2. ¿ProductoRepository no debería ser llamada ProductoService, debido a que es la clase que expondrá la comunicación con la capa de persistencia?

¿El CrudRepository es como el DAO?

Curso bueno y este ala… excelente omeee.

jajajaja vengo de la seccion 23 y ya se me quitaron las ganas de seguir con el curso jajaja

De los mejores cursos de Platzi… de verdad… porque no hay mas de este muchacho

Que buen curso, buen profesor, estuve haciendo el otro de spring boot y me decepcione, este curso si esta bien hecho, bien explicado, ejemplos reales y se llega a cierta profundidad de spring

Simplemente, increíble.

A mi solo me quedo duda de por que no utilizo la interfaz JPARepository si esta implementa a las otras dos, así aprovechariamos todas sus funcionalidades. O si es más bien decisión de uno cual utilizar.

El cast del min : no me sale, me salen solo las dos opciones de abajo, los dos Make.Tendra algun problema si uitlizo ese Make: lo que hace es que del tipo que estoy devolviendo lo cambia por Iterable.

Tengo una duda,¿por qué tenemos que crear una clase ProductRepository si podemos usar directamente la interfaz CrudRepository?

¿es para no depender de la implementación de spring?

Repositorios de Spring Data
CrudRepository: Permite hacer las operaciones de CRUD.
PagingAndSortingRepository: Nos permite hacer todo lo que hace el CrudRepository pero adicionalmente nos permite hacer tareas de ordenación y paginamiento de nuestro repositorio.
JPARepository: Nos permite hacer lo mismo que los dos anteriores, pero además nos permite hacer tareas de JPA específicas como Flush que combina o guarda todo en memoria sin que otras entidades o entornos vean esos cambios en la base de datos.

Cuál sería el patrón de diseño de esta aplicación?

Dios mio que buen paso lleva, asi deberian de ser todas las clases.

muy buen contenido 😄

Quedo un poco perdido con la interface ProductoCrudRepository, pero creo que sin esa interface pasaría que en la clase ProductoRepository sería imposible traer los datos de la BD verdad?

Cre que hay la llevamos, esperemos que en la siguiente vea la funcionalidad de lo creado 😃