Creación de Repositorio con Spring: @Repository

Vamos a ver un ejemplo de cómo debería ser la creación de un objeto @Repository en el framework de Spring. Los repositorios son los objetos que implementan la integración de nuestro proyecto con la Base de Datos (BBDD) correspondiente. Con ellos, podremos acceder a cualquier tabla de la BBDD e ir cargando cada uno de sus registros en objetos de la Entidad que hayamos establecido. Estos accesos se podrán realizar mediante los métodos estándar proporcionados por Spring o mediante métodos específicos creados por nosotros mismos.


 

En nuestro ejemplo, vamos a imaginar que tenemos una tabla de BBDD denominada USER, que contiene la lista de usuarios que pueden acceder a nuestro sistema. Adicionalmente, tendremos definida una Entidad JPA denominada User.java en la que se almacenarán todos los campos de cada uno de dichos usuarios (cada atributo de la Entidad se corresponderá con uno de los campos de la tabla). Con este escenario, nuestro objeto Repositorio deberá ser capaz de acceder a la tabla USER, recuperar un registro y cargar sus campos en los atributos de la Entidad asociada User.java.


Creación de Repositorio con Spring: @Repository


Dicho lo anterior, vamos al detalle y veamos cuál podría ser la construcción de nuestra clase UserRepository.java


// **************************************************

package com.universo.manager.repository;

 

import java.util.List;

 

import org.springframework.data.jpa.repository.JpaRepository;

import org.springframework.stereotype.Repository;

 

import com.universo.manager.model.User;

 

@Repository

public interface UserRepository extends JpaRepository<User, Long> {

 

      // Metodos estandar JpaRepository: findAll, findAllById, saveAll, etc

      

      @Query( "Select user " +

            "from User user " +

            "where user.type in ('admin') ")

      List<User> obtenerUsuariosAdministrativos();

     

}

// ************************************************** 


En el repositorio anterior se pueden identificar accesos a BBDD de dos tipos. 


1º) Accesos codificados por el desarrollador: son los métodos elaborados por el programador y que realizan una lógica concreta requerida por el proyecto. En este tipo de métodos tendremos que especificar la query empleada para recuperar la información. Por ejemplo, el método:

obtenerUsuariosAdministrativos()


2º) Accesos estándar del framework Spring: en este caso, dispondremos de todos los métodos que se hereden de la clase JpaRepository. La clase padre JpaRepository contiene una serie de métodos estándar que podremos utilizar con nuestra Entidad sin necesidad de codificarlos de nuevo. Por ejemplo, los métodos:

  • findAll()
  • findAllById()
  • saveAll()
  • saveAndFlush()
  • deleteInBatch()


Existen alternativas adicionales para la construcción de una clase Repository, pero esta es una de las más sencillas y directas que tenemos. Otra forma alternativa consiste en definir las queries dentro de la clase @Entity y referenciarlas desde los métodos de nuestra clase @Repository, pero ya veremos un ejemplo de ese tipo en otro post. Por ahora quedaros con la idea de que una construcción tan simple como la mencionada hoy nos puede valer para poner en marcha nuestro proyecto.


Pues nada, eso es todo por ahora. Si tenéis alguna duda con respecto a la construcción de la clase Repository, podéis dejármela aquí abajo.


Saludos.


Comentarios

Entradas populares de este blog

Componentes y Ventanas de Java Swing

Creación de Webservice SOAP básico

Fichero standalone del Servidor JBoss EAP