You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesi贸n a prueba de IA

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

0 D铆as
2 Hrs
32 Min
52 Seg
Curso de Java Spring

Curso de Java Spring

Alejandro Ram铆rez

Alejandro Ram铆rez

Implementar la anotaci贸n @Repository

18/35
Resources

How to interact with the database using Spring?

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.

What is a Spring repository?

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}

How to query a particular product?

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);}

How to save a product?

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);}

How to delete a 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);}

Importance of annotations in Spring.

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

Sort by:

Want to see more contributions, questions and answers from the community?

@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.

* **@Repository** Es un estereotipo de spring framework, con esta clase le indicamos a spring que la clase de la anotacion esta interactuando con la base de datos pporque es en NombreRepository (no NombreCrudRepository, esa es la interfaz) donde estamos haciendo las operaciones que queremos aplicar en las tablas * **@Component** tambi茅n se puede utilizar, es una generalizacion de este tipo de anotaciones. con @Repository indicamos que tipo de componente es.
La diferencia entre `@Repository` y `@Component` est谩 relacionada con su **sem谩ntica** y **uso espec铆fico** en el contexto de Spring Framework. Aqu铆 tienes una explicaci贸n detallada: 1. `@Component`: * `@Component` es una anotaci贸n gen茅rica que se utiliza para marcar una clase como un **componente administrado por Spring**. * Puede aplicarse a cualquier clase y se utiliza para **descubrir y registrar autom谩ticamente** los componentes en el contexto de la aplicaci贸n. * No proporciona ninguna funcionalidad espec铆fica m谩s all谩 de indicar que la clase es un componente de Spring. 2. `@Repository`: * `@Repository` es una especializaci贸n de `@Component`. * Se utiliza espec铆ficamente para **marcar las clases que acceden a la capa de persistencia de datos**, como las clases DAO (Data Access Object). * Proporciona algunas caracter铆sticas adicionales, como la **traducci贸n autom谩tica de excepciones de base de datos** a excepciones de Spring (por ejemplo, `DataAccessException`).

Excelente el profesor. Me quedan muy claros los conceptos.

y cual es la diferencia entre @Repository y @Service, he visto que la interface CrudRepository la usan en un package DAO, y en un package service, usan una interface para hacer el contrato de los m茅todos a usar y crean una clase de implementaci贸n donde usan esta interface y la capa DAO del CrudRepository y en esta implementaci贸n usan @Service y @Autowired para indicar que se va a usar una interface de CrudRepository

Muy bien explicado.