@Repository: le indicamos a la clase que es la encarga de interactuar con la base de datos.
@Component: le indicamos que es un componente de spring.
El primero es mejor porque indicamos el tipo de componente que es.
Antes de empezar
驴Qu茅 es y qu茅 usaremos de Spring?
驴Java sigue siendo gratuito?
Instalaci贸n de ambiente de desarrollo: Windows
Instalaci贸n de ambiente de desarrollo: Linux Ubuntu
Instalaci贸n de ambiente de desarrollo: macOS
Introducci贸n a Spring boot
Creando aplicaciones autocontenidas con Spring Initializr
Hola mundo con Spring Boot
Configurar Spring Boot
Crear la estructura del proyecto
Spring Data
驴Qu茅 es JPA?
Conocer qu茅 es Spring Data
Conectar la base de datos a nuestra aplicaci贸n
Mapear las tablas como clases
Crear Entity cuando su clave primaria es compuesta
Mapear relaciones entre clases
Usar la interface CrudRepository
Query Methods
Construyendo nuestra API
Implementar la anotaci贸n @Repository
驴Qu茅 es el patr贸n Data Mapper y qu茅 resuelve?
Orientar nuestra API al dominio con MapStruct
Orientar nuestro repositorio a t茅rminos del dominio
Inyecci贸n de dependencias
Implementar la anotaci贸n @Service
Implementar la anotaci贸n @RestController
Exponer nuestra API
Mejorando nuestra API
Controlar las respuestas HTTP
Crear el dominio de compras
Mapear el dominio de compras
Crear el repositorio de compras
Probando nuestros servicios de compras
Documentar nuestra API con Swagger
Despliegue de nuestra aplicaci贸n
Desplegar nuestra API desde la ventana de comandos
Desplegar nuestra base de datos con Heroku
Desplegar nuestra API con Heroku
Conclusiones y despedida del curso
You don't have access to this class
Keep learning! Join and start boosting your career
To efficiently manage the interaction with your databases in Spring applications, it is essential to understand how to use repositories, CRUD methods and proper annotations. In this guide, we show you how to structure and work with a product repository, from querying to saving and deleting data, using the powerful tools provided by Spring.
A Spring repository is a class that is responsible for performing operations on the database. To achieve this, we use the @Repository
annotation, which tells Spring that the class interacts directly with the database. In addition, we can use @Component
, which is more generic, but @Repository
is more specific and suitable for our needs.
import org.springframework.stereotype.Repository;
@Repositorypublic class ProductRepository { // Methods for CRUD}
To query a specific product, you can use the findById
method of Spring Data's CrudRepository. This method searches for a specific record with a primary key, in this case an ID.
import java.util.Optional;
public Optional<Product> getProduct(int idProduct) { return productCrudRepository.findById(idProduct);}
Saving a product to the database is easy with the save
method, which receives the entity you want to store. Here's how to do it:
public Product saveProduct(Product product) { return productCrudRepository.save(product);}
Deleting a product can be done using its primary key. The deleteById
method is ideal for this, as it deletes the product given its ID:
public void deleteProduct(int idProduct) { productCrudRepository.deleteById(idProduct);}
The @Repository
annotation is a Spring stereotype, crucial for indicating that a class handles persistence operations. This facilitates code organization and maintenance, helping Spring handle exceptions automatically and providing an additional layer for data management.
Incorporating these best practices and understanding the difference between @Component
and @Repository
strengthens your code and ensures its clarity and efficiency. With this foundation, you are ready to move on to the other layers of your application in an organized and efficient manner.
Keep your motivation high and keep exploring, every new concept is another step towards Spring Framework mastery!
Contributions 16
Questions 11
@Repository: le indicamos a la clase que es la encarga de interactuar con la base de datos.
@Component: le indicamos que es un componente de spring.
El primero es mejor porque indicamos el tipo de componente que es.
Quede con una duda, si ProdcutCrudRepository se creo como una interfaz 驴Por que nunca se llego a implementar, sino que se trato como una clase?
Es posible dejar @Repository en la interfaz?
tengo una duda, por que no @Repository ir铆a en ProductoCrudRepository, y esta clase que es ProductoRepository en seria un @Service si tiene pr谩cticamente todo los par谩metros que se est谩n colocando en esta clase, sent铆a que estamos duplicando c贸digo
con la anotacion @Repository indicamos que la clase interactua con la base de datos
Me ha parecido genial el curso! tengo una duda
驴Me podr铆an ayudar a entender la diferencia entre Optional<Producto> y Producto? min 2:41
Una pregunta:
驴Es correcto poner la anotaci贸n @Autowired en:
private ProductoCrudRepository productoCrudRepository;?
Utilizando chatGPT consultando como aplicamos el patr贸n CQRS nos da la gu铆a siguiente:
Aplicar el patr贸n CQRS (Command Query Responsibility Segregation) en Spring Boot, puedes seguir los siguientes pasos:
Crea dos interfaces para tu repositorio, una para las operaciones de lectura (query) y otra para las operaciones de escritura (command). Por ejemplo, puedes llamarlas ReadRepository y WriteRepository, respectivamente.
En la interfaz ReadRepository, extiendes de CrudRepository o cualquier otra interfaz de lectura que desees utilizar. En ella, colocas solo los m茅todos de lectura necesarios para tu aplicaci贸n, como findAll(), findById(), etc.
En la interfaz WriteRepository, extiendes de JpaRepository o cualquier otra interfaz de escritura que desees utilizar. En ella, colocas solo los m茅todos de escritura necesarios para tu aplicaci贸n, como save(), delete(), etc.
Crea una clase de implementaci贸n para cada interfaz, por ejemplo, ReadRepositoryImpl y WriteRepositoryImpl. Estas clases deben implementar los m茅todos correspondientes de cada interfaz.
Utiliza estas interfaces y clases en tus servicios para dividir las responsabilidades de lectura y escritura en diferentes capas de tu aplicaci贸n.
Con estos pasos estaras implementando el patr贸n CQRS en tu aplicaci贸n con Spring Boot. Sin embargo, es importante mencionar que CQRS no solo se trata de separar las operaciones de lectura y escritura en diferentes capas, sino que tambi茅n implica una separaci贸n l贸gica en la estructura de la base de datos y en el dise帽o de las consultas.
Continuemos, todo va bien al parecer hasta este momento, excelente explicaci贸n del profesor.
@Repository es la clase que se encarga de interactuar con nuestra base de datos.
desde ProductoRepository hacemos las interacciones con la base de datos.
@Component es una anotacion que generalizacion de anotaciones.
Excelente el profesor. Me quedan muy claros los conceptos.
Muy bien explicado.
Want to see more contributions, questions and answers from the community?