El componente Repository en Spring Boot

En este post vamos a entender que es un componente Repository y como se crea un CrudRepository en Spring Boot.

Que es un componente Repository

Un @Repository es un componente y a su vez un estereotipo de Spring que forma parte de la ‘capa de persistencia’.

La capa de persistencia es la forma que tiene nuestro micro-servicio para guardar y recuperar las entidades que necesita.

Persistence Layer

Una entidad es la clase de nuestra aplicación que representa un objeto de su negocio, por ejemplo un Usuario, Cliente, Producto, etc.
Si nuestra aplicación necesita de un User (usuario con su nombre, apellido, fecha de nacimiento) y requiere guardarlo, este User es una entidad de nuestro modelo del dominio y forma parte de la capa de persistencia.

Un micro-servicio lo dividimos en capas, siendo el repository la capa de persistencia que tiene acceso a los datos y que puede manipularlos.
Has una lectura de este otro artículo en donde hemos trabajado con los los Componentes y los Estereotipos en Spring Boot

Spring Boot Controller

¿Cómo creamos el componente Repository?

En Spring un ‘Repository’ es el componente encargado de resolver el acceso a los datos de nuestro micro-servicio. Si necesitamos guardar, modificar, eliminar registros de un ‘User’ del sistema; será entonces el componente UserRepository el encargado de realizar cambios directos sobre los registros de Usuario.

Spring nos provee las funcionalidades básicas para guardar, eliminar y buscar entidades. Para esto tenemos todas las interfaces que extienden de “org.springframework.data.repository.Repository” .

Spring Boot Repository Hierarchy

Para nuestra entidad User podemos pensar en las operaciones básicas para crear, modificar y buscar (CRUD).
CRUD es un acrónimo que refiere a las cuatro funciones mínimas sobre una entidad –> Create, Read, Update, Delete.

Nuestra entidad se ve así:

@Entity
public class User {

    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private String surname;
    private LocalDate birthDate;
    
    // sets, gets... 
    

Vamos a crear una interface UserRepository que extenderá de CrudRepository.
Anotamos la clase ‘UserRepository’ como un componente @Repository .

CrudRepository es una interfaz genérica que recibe dos tipos. El primero es la clase que esta interfaz manejará y el segundo es el tipo de dato del ID de la entidad.

Observa, que NO implementamos la interfaz. Creamos una nueva interfaz y extendemos de CrudReposity.
Será Spring el encargado de la implementación de la interfaz con la clase concreta.

Los métodos que nos provee CrudRepository son:

  • save: guarda una entidad
  • saveAll: guarda las entidades de una lista iterable
  • findById: busca por el identificador
  • existsById: verifica si existe un identificador
  • findAll: devuelve todos los elementos para la entidad
  • findAllById: busca todos los elementos que tengan el identificador
  • count: devuelve el total de registros de la entidad
  • deleteById: elimina un registro para el identificador
  • delete: elimina la entidad
  • deleteAllById: elimina todos los elementos que correspondan con el id
  • deleteAll(Iterable): elimina todos los elementos que se reciban en el parámetro
  • deleteAll(): elimina todos los elementos

Spring Boot Crud Repository

Nuestra interfaz UserRepository que extiende de CrudRepository.

import com.example.springbootcourse.model.User;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends CrudRepository<User, Long> {
}

Con esto ya tenemos creado nuestro repository con las operaciones CRUD para nuestra entidad.
Las podemos utilizar desde nuestro service

Conclusión

En este artículo aprendimos qué es y creamos un Repository en SpringBoot y definimos uno CRUD utilizando la interfaz CrudRepository.

If you wish to send me any corrections or suggestions, please contact me.
Thanks for your feedback :)

Ver también