Spring Data JPA
Репозитории поверх уже знакомой 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, не теряя понимания того, что происходит с сущностями и запросами под капотом.