Каково назначение JpaRepository в Spring Data JPA?

«Каково назначение JpaRepository в Spring Data JPA?» — вопрос из категории Spring, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

JpaRepository — это интерфейс Spring Data JPA, предоставляющий готовую реализацию для стандартных операций с сущностями (CRUD) и пагинации. Он расширяет PagingAndSortingRepository и CrudRepository.

Основные функции:

  • Стандартные CRUD-операции: save(), findById(), findAll(), deleteById() и т.д.
  • Пагинация и сортировка: findAll(Pageable), findAll(Sort).
  • Пакетные операции: saveAll(), deleteAllInBatch().
  • Методы на основе соглашений об именах: Например, findByLastName(String lastName) генерируется автоматически.
  • Аннотация @Repository: Добавляет семантику репозитория и преобразует исключения JPA в непроверяемые исключения Spring Data.

Пример объявления:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    // Автоматически сгенерированный запрос по соглашению об именах
    List<User> findByEmail(String email);
}

Почему это важно: JpaRepository устраняет необходимость в шаблонной реализации базовых операций, сокращая объем кода и уменьшая вероятность ошибок.