Cristian Triviño Estévez
Me está pareciendo de los mejores cursos de código que he visto en Platzi, espero que siga así de claro y entretenido!
Rolando Mamani Salas
A mi tambien
Daniel Cutipa
opino lo mismo, esta genial este curso
¿Qué son los repositorios de Spring Data y cómo nos ayudan?
Spring Data nos ofrece herramientas poderosas y los repositorios son una de las más destacadas. Diseñados para simplificar el desarrollo de aplicaciones empresariales en Java, estos repositorios nos permiten realizar operaciones en bases de datos sin tener que escribir código complejo. A través de ellos, operaciones comunes como eliminar, encontrar registros o guardar información se ejecutan de manera automática. Los tipos de repositorios que Spring Data ofrece incluyen:
¿Cómo crear un repositorio usando Spring Data?
Para utilizar los repositorios de Spring Data, primero creamos una interfaz dentro de nuestro paquete CRUD. Sigue estos pasos:
ProductoCrudRepository.CrudRepository.Java class por interfaz en el editor. La interfaz es generada automáticamente.CrudRepository: el tipo de la tabla (e.g., Producto) y el tipo de la clave primaria (e.g., Integer).public interface ProductoCrudRepository extends CrudRepository<Producto, Integer> { }
Este simple código nos permite delegar las operaciones de base de datos a las capacidades de Spring Data, evitando la necesidad de un código más extenso y complejo.
¿Qué métodos proporciona un CrudRepository?
Los métodos que incluye CrudRepository son variados y útiles para gestionar datos:
Estos métodos simplifican enormemente el manejo de datos y son inmediatos de usar sin necesidad de implementación adicional.
¿Cómo implementar un repositorio personalizado?
Para implementar un repositorio personalizado que recupere todos los productos de una base de datos, sigue estos pasos:
ProductoRepositorio.ProductoCrudRepository.public class ProductoRepositorio { private ProductoCrudRepository productoCrudRepository; public List<Producto> getAll() { return (List<Producto>) productoCrudRepository.findAll(); } }
Este método utiliza el método findAll de ProductoCrudRepository para obtener y devolver la lista completa de productos desde la base de datos.
Ventajas de usar Spring Data
Explorar y entender los repositorios de Spring Data es esencial para mejorar tus habilidades en el desarrollo de aplicaciones Java eficientes y robustas. ¡Mantén la curiosidad y sigue aprendiendo!
Cristian Triviño Estévez
Me está pareciendo de los mejores cursos de código que he visto en Platzi, espero que siga así de claro y entretenido!
Rolando Mamani Salas
A mi tambien
Daniel Cutipa
opino lo mismo, esta genial este curso
Jose Maria Lopez Pacheco
De los pocos cursos de Platzi que verdaderamente son joyas
Cristian Felipe Patiño Cáceres
Excelente! hasta el momento, este curso me ha encantado esta muy bien estructurado
Rolando Mamani Salas
Muy buen curso la verdad
Sergio Ramirez
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
Edinson Padrón
Dos preguntas:
@Repository para la interfaz ProductoCrudRepository?ProductoRepository no debería ser llamada ProductoService, debido a que es la clase que expondrá la comunicación con la capa de persistencia?Alejandro Ramírez
ProfesorLa interfaz ProductoCrudRepository no recibe la anotación @Repository (De hecho por herencia recibe @NoRepositoryBean). Ya vas a ver que en un par de clases más adelante es la clase ProductoRepository la que recibe esta anotación. Como vimos cuando creamos la estructura del proyecto, el servicio (más adelante ProductService) está en la capa del dominio y llama al repositorio (que es una interfaz implementada luego por ProductoRepository). En algunas clases más adelante te encontrarás con esto.
Rolando Mamani Salas
Mucgas gracia
Juan José Rodríguez Duque
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.
Josue Tonatiuh Echeverria Vargas
Por si les interesa les comparto el link los metodos implementados para la interface CrudRepository<T, ID>
Gaiserick Jhonatan Ortiz Ramírez
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?
Alejandro Ramírez
ProfesorMás que no depender de la implementación de Spring, esto nos ayuda a no acoplar nuestra aplicación a una base de datos puntual. Más adelante vas a ver como creamos algunas otras interfaces y clases para que la desacoplemos directamente de las bases de datos relacionales.
Cristian Alexis Sánchez Montoya
Esto se hace para seguir los principos SOLID que nos ayuda a desarrollar código de calidad.
S.O.L.I.D. por sus siglas en inglés:
Single responsibility. Open/closed principle. Liskov substitution. Interface segregation principle. Dependency inversion principle (Esta especificamente es la respuesta a tu pregunta, nos dice que debemos depender de abstracciones, en este caso la interfaz).
En este artículo lo explican muy bien
Francisco R. Espinosa Gonzalez
De los mejores cursos de Platzi.. de verdad... porque no hay mas de este muchacho
William Alexander Hernandez Leiva
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.
Alejandro Ramírez
ProfesorUsar uno u otro es una cuestión de necesidades. En este caso no necesito todas las funcionalidades de JPARepository y con el CrudRepository me basta para lo que debo ocupar en el proyecto.
Emanuel Munera
Por si alguno tenía aún la duda del por qué usamos <u>Wrappers </u>u objetos como Integer en lugar de el primitivo int, aquí en esta clase hay una muy buena razón del por qué.
La interfaz CrudRepository<T, ID> usa generics. Los generics son los parámetros que van dentro del operador diamante y tienen una particularidad; ellos solo reciben Objetos, nada de primitivos. Es por esto que si tenemos nuestro id como tipo int, no podríamos pasarlo a esta interfaz pues ella solo recibe objetos como Integer.
Luis Brandon Flores González
¿En los videos anteriores también es considerado como Spring Data?, ya que observe que se importaban bibliotecas desde persistence en los videos anteriores y en este ya se importaba desde springframework.data
Alejandro Ramírez
Profesor¿Qué tal Luis? Que bueno verte tan activo en el curso. Toda esta sección se llama "Spring Data" porque incluye implicitamente JPA. Ves que se importan clases e interfaces de javax.persistence porque al incluir en nuestro proyecto la dependencia de Spring Data también estamos incluyendo todo lo referente a la especificación JPA. Es decir, dicha dependencia incluye internamente todo lo necesario para trabajar con JPA (Por eso se llama Spring Data JPA). Cabe mencionar también que Spring Data JPA usa Hibernate por defecto como implementación de JPA.
Luis Brandon Flores González
Gracias @soyalejoramirez :)
santiago Vasquez Zuluaga
Cuál sería el patrón de diseño de esta aplicación?
Angel Javier Sanchez Tenjo
La Arquitectura es por Capas orientado al Dominio.
Carlos Riojas De Los Santos
Dios mio que buen paso lleva, asi deberian de ser todas las clases.
Oscar Eduardo Delgado Ballesteros
Curso bueno y este ala.. excelente omeee.
Beni García
¿El CrudRepository es como el DAO?
Erika Yalitza Duran Trujillo
Si compañero lo puedes ver de esa manera, en el patrón de diseño DAO también creamos una interfaz DAO donde agregamos los métodos del CRUD para implementarlos en otras clases, la diferencia de esto es que con CrudRepository de SpringData simplemente tenemos que extender de CrudRepository y nos hace la magia en cambio en dao tenemos que hacer la implementación de todo el crud :S o de los métodos que agregaste en tu interfaz DAO . nota: Esto solo lo menciono por hacer una comparación con lo que tu ya conoces pero son patrones de diseño distintos. Dao es un patrón de diseño y spring ocupa n patrones de diseño.
Beni García
Excelente que buen comentario gracias por despejar esa duda @dutey
Beni García
jajajaja vengo de la seccion 23 y ya se me quitaron las ganas de seguir con el curso jajaja
Julian Henao Henao
¿Por qué?
Beni García
no, ya regresé al buen camino
ROMMEL DUAREZ SAENZ
Haciendo un Test al método getAll(), este no pasa el Test ya que el valor de productoCrudRepository es null. Esto es así porque falta incluir la anotación @Autowired para inyectar esa dependencia, tema q debió enseñarse primero para que pueda entenderse bien esta clase ya que tal como está el código no funciona
Milton Hernan Camacho Quitian
Es correcto compañero, o en su defecto anotar la clase ProductRepository con @Repository y definir el campo productCrudRepository como final e inyectar la dependencia por constructor.