Ответ
Репозиторий — это слой абстракции над доступом к данным, который инкапсулирует логику работы с хранилищем.
Реализация с помощью Spring Data JPA:
-
Базовый интерфейс: Наследуйтесь от
JpaRepository<Entity, ID>илиCrudRepository<Entity, ID>.public interface UserRepository extends JpaRepository<User, Long> { }Это автоматически дает методы
save(),findById(),findAll(),deleteById(). -
Декларативные запросы: Spring Data может генерировать запросы из имени метода.
List<User> findByLastNameAndAgeGreaterThan(String lastName, int age); Optional<User> findByEmail(String email); -
Кастомные запросы с
@Query: Для сложной логики используйте JPQL или нативный SQL.@Query("SELECT u FROM User u WHERE u.active = true AND u.age >= :minAge") List<User> findActiveUsersOlderThan(@Param("minAge") int minAge);
Ключевые возможности:
- Пагинация и сортировка:
Page<User> findAll(Pageable pageable); - Проекции: Возврат части данных (DTO) для оптимизации.
- Спецификации (Specifications): Динамическое построение предикатов для сложных фильтров.
- Аудирование: Автоматическое заполнение полей
@CreatedDate,@LastModifiedBy.