Enjoy A New Student Discount All 55,000 Courses on sale for Only $12.99

Ends in 05h 23m 49s

Utilizando JPA Projection

Nos vamos a encontrar muchas veces, casos en donde el responder con un JSON conteniendo todos los campos de una tabla en todos sus registros, es inviable, o, por lo menos, muy caro en comunicaciones. Imaginaros un registro de Clientes, o de Productos que pese 2 Megas, y que os piden los Clientes, para hacer una lista de nombres…. bien, una de las soluciones, la que hoy vemos, es utilizar JPA Projection

La idea

Mas o menos, ya he presentado el problema, la idea es enviar la informacion necesaria, y no montañas de informacion que a veces, puede ser hasta delicada…

Nosotros vamos a realizar el ejercicio con un registro que no tiene ese problema, y es el registro de Cine. Pensad que en un caso real, puede que este fichero tuviera muchos mas campos, pero para ver como funciona, nos bastara. Este caso esta basado en el proyecto «Los Cines» descritos a partir de Visión de conjunto con Spring

Todo lo que haremos es trabajar con el JPA, pero por si acaso, os recuerdo que en el pom.xml deberá estar

El objeto DTO

Empezamos creando un objeto DTO con la informacion que queremos enviar; en este caso, se me ha ocurrido esta

Repositorio

Para conseguir la funcionalidad deseada, le tendremos que añadir al repositorio de Cine la query que vamos a utilizar, y el objeto a construir. No deberá quedar asi

Hemos utilizado @Query para definir el objeto a construir, y el metodo que utilizaremos, y que debe coincidir con «findAll» y el objeto creado

El servicio

En el servicio, deberemos añadir el método que tenemos que utilizar, explicando el que definimos en la interface, y que puede ser

Ahora, solo nos queda hacer que el controlador sepa llamarlo

El controlador

Necesitamos un comando mas, y hacer que el controlador sea sensible a la nueva orde. La orden que he creado, siguiendo la estructura habitual será

MétodoURLAcción
GET/api/cine/direccionDevuelve todos los cines, pero solo facilita id, nombre y barrio

y el método que tengo que añadir al controlar escrito aqui, será:

Como veis, solo tengo que invocar el servicio

Las pruebas

Podemos probar el nuevo comando

y vemos como en data, solo nos aparece la información prevista

Conclusión

Todo este desarrollo lo teneis explicado con mas detalle en youTube (a partir de 1/02/24) , y, aunque es conveniente que intentéis escribirlo TODO vosotros, si queréis renunciar a ello, lo teneis tambien en GitHub

Este desarrollo esta basado en un fuente creado para explicar distintos temas de SpringBoot, tal y como se indica en Visión de conjunto con Spring

Deja un comentario

/*Si te ha gustado el artículo
no dudes en compartirlo*/

Facebook
Twitter
LinkedIn

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies

Ver mi IP

Ver ip de mi máquina
tipo valor
Ip: 34.204.169.230
Proxy: 34.204.169.230
Remote host: ec2-34-204-169-230.compute-1.amazonaws.com
Remote port: 60484
** 34.204.169.230, 172.70.38.128