Spring Data JPA

Базовый Spring
≈ 2 мин чтения

Репозитории поверх уже знакомой JPA

В разделе про JPA мы уже разобрали сущности, persistence context, связи и JPQL. Spring Data JPA не заменяет эти механизмы, а строит над ними удобный слой доступа к данным: вместо повторяющегося кода с EntityManager приложение обычно работает через интерфейсы репозиториев.

Главная идея раздела — научиться описывать нужные операции декларативно. Простые действия можно получить из готового интерфейса, запросы — вывести из имени метода или задать явно, а для более гибких сценариев использовать пагинацию, спецификации и проекции.

Что будет внутри раздела

  • Repositories. Разберём роль репозитория и то, как Spring Data создаёт его реализацию поверх JPA.
  • JpaRepository. Познакомимся с готовым набором операций для сохранения, чтения и удаления сущностей.
  • Derived Queries. Научимся получать запросы из имён методов репозитория без ручного JPQL.
  • @Query. Перейдём к явным запросам там, где имени метода уже недостаточно.
  • Pagination и Sorting. Добавим постраничное чтение и сортировку больших наборов данных.
  • Specifications. Соберём динамические условия поиска из небольших переиспользуемых частей.
  • Projections. Научимся возвращать только ту форму данных, которая нужна конкретному сценарию.
  • Auditing. Автоматизируем заполнение технических полей создания и изменения сущностей.

Темы идут от самого обычного репозитория к более выразительным способам чтения данных. После раздела будет понятно, как использовать Spring Data JPA как удобный API поверх JPA, не теряя понимания того, что происходит с сущностями и запросами под капотом.