Introducción

1

Curso de Spring Data JPA con MySQL y RESTful API

2

Creación de Proyectos con Spring Initializer y Gradle

Primeros pasos

3

Conexión de Proyecto Java a Base de Datos MySQL en IntelliJ IDEA

4

Creación de Entidades con Hibernate en Java

5

Relaciones entre Entidades en JPA: OneToOne, ManyToOne, OneToMany

6

Consultas SQL con JDBC Template en Spring Boot

Spring Data Repositories

7

Uso de Spring Data Repositories para Gestión de Datos

8

Guardar y Actualizar Registros con Spring Data Repositories

9

Eliminar elementos con Spring Data JPA: método deleteById

10

Gestión de Relaciones en JPA: Lazy vs Eager Fetching

11

Query Methods en Spring para Consultas Personalizadas

12

Filtrado de Pizzas por Ingredientes usando Query Methods

13

Consultas Avanzadas con Query Methods en Java Spring

14

Uso de Query Methods para Filtrar y Ordenar Datos en Spring

15

Paginación y Ordenación con Spring Data Repositories

16

Ordenamiento Dinámico con Paging and Sorting Repository

Personalización de queries

17

Consultas de Base de Datos con JPQL en Spring Boot

18

Consultas SQL nativas y ordenación con Hibernate en Spring Data

19

Uso de Proyecciones en Queries Personalizados con Java y SQL

20

Actualización de Precios de Pizza con Spring Data JPA

21

Propiedades ACID y Spring Data: Uso de @Transactional

Características avanzadas

22

Auditoría de Entidades con Spring Data JPA

23

Auditoría de Entidades con Listeners Personalizados en Spring

24

Ejecución de Store Procedures en Spring Data

Próximos pasos

25

Fundamentos de Spring Data JPA: Conexión y Repositorios

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Paginación y Ordenación con Spring Data Repositories

15/25
Recursos

¿Qué es el Paging and Sorting Repository en Spring Data?

El Paging and Sorting Repository es una herramienta poderosa dentro de Spring Data que permite gestionar y estructurar grandes volúmenes de datos, haciendo posible paginar y organizar consultas de manera eficiente. Es especialmente útil cuando se trabaja con grandes cantidades de información o simplemente cuando se quiere presentar datos de forma más manejable y accesible.

¿Cómo crear un repositorio de Paging and Sorting?

Para crear un repositorio de Paging and Sorting en un proyecto de Spring, es necesario extender directamente de PagingAndSortingRepository. Aquí te muestro un ejemplo:

public interface PicsaPacksortRepository extends PagingAndSortingRepository<PicsaEntity, Integer> {
}
  • PicsaEntity es la clase que representa la entidad o modelo que estamos gestionando.
  • Integer es el tipo de dato para la clave primaria.

¿Cómo implementar el repositorio en un servicio?

El siguiente paso es inyectar este repositorio en el servicio para poder llevar a cabo las operaciones deseadas. A continuación te muestro cómo hacerlo:

  1. Inyecta el repositorio usando la anotación @Autowired.
@Autowired
private final PicsaPacksortRepository picsaPacksort;
  1. Modifica el método Get All para hacerlo paginado:
public Page<PicsaEntity> findAllPaged(int page, int elements) {
    Pageable pageable = PageRequest.of(page, elements);
    return picsaPacksort.findAll(pageable);
}
  • Aquí PageRequest.of(int page, int elements) crea un objeto Pageable que define el número de la página y el tamaño de la página, es decir, cuántos elementos tendrá cada una.

¿Cómo gestionar la paginación en el controlador?

Dentro del controlador, es fundamental recibir los parámetros que indican el número de página y el tamaño de los elementos por página. Estos se manejan como parámetros de petición:

@GetMapping("/pixas")
public Page<PicsaEntity> getAllPixas(@RequestParam(defaultValue = "0") int page,
                                   @RequestParam(defaultValue = "8") int elements) {
    return picsaService.findAllPaged(page, elements);
}
  • @RequestParam se utiliza para capturar los parámetros de la URL de manera sencilla. También se pueden definir valores por defecto, como 0 para page y 8 para elements.

¿Qué ventajas ofrece el Paging and Sorting Repository?

El uso del Paging and Sorting Repository trae consigo varias ventajas significativas:

  • Eficiencia: Permite manejar y consultar grandes cantidades de datos de manera efectiva, evitando sobrecargar el sistema.
  • Flexibilidad: Comodidad de configurar el tamaño de página y el número de página según las necesidades del usuario.
  • Simplicidad: Es fácil de implementar y no requiere código complejo, lo que facilita su integración en aplicaciones existentes.

La implementación de un Paging and Sorting Repository optimiza la forma en que presentamos y manejamos la información, garantizando que se pueda acceder a los datos de manera rápida y efectiva. ¡Sigue explorando sus capacidades y verás cómo facilita tu gestión de datos en aplicaciones Spring!

Aportes 8

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Oigan si al momento de crear el pageRequest, les sale un error de que tienen que castear el PageRequest a Pageable y este a Page, revisen los imports, muy probablemente tienen alguno como este:

Pero necesitan que todos sean de Spring, como este:

Es como el limit y offset pero mas mágico 😅 buenisimo!

En la consola arroja que se hace un select con limit y despues un count ```js Hibernate: select pe1_0.id_pizza,pe1_0.available,pe1_0.description,pe1_0.name,pe1_0.price,pe1_0.vegan,pe1_0.vegetarian from pizza pe1_0 limit ?,? Hibernate: select count(pe1_0.id_pizza) from pizza pe1_0 ```
Le tenía miedo a Java pero ahora me siento poderoso con esta clase, excelente curso!
Extender de `JpaRepository` es una buena práctica, ya que heredas métodos de `CrudRepository` y `PagingAndSortingRepository`, lo que te permite realizar operaciones CRUD y paginación sin implementar nada adicional. Usar `JpaRepository` también te ofrece características avanzadas como la gestión de transacciones y soporte para consultas JPQL y SQL nativas. Si tu proyecto requiere funcionalidad de paginación o consultas más complejas, `JpaRepository` es la mejor opción.
Si pudiera darle like a una clase sería a esta 😅 lástima que sea tan corta con un tema taaan interesante y tan extenso. Me gustaría un curso de temas así tan específicos como la paginación, que tan necesarios son en el entorno laboral.
Listo ✅