Ответ
Spring Data — это проект экосистемы Spring, который упрощает доступ к хранилищам данных, предоставляя абстракцию над различными технологиями (реляционные и NoSQL БД).
Ключевые возможности:
- Репозитории: Создание DAO-слоя через интерфейсы, расширяющие
JpaRepository,MongoRepositoryи др. - Query Methods: Автоматическая генерация запросов из имён методов (например,
findByEmailAndActiveTrue(String email)). - Поддержка JPA: Аннотации
@Entity,@Id,@GeneratedValueдля ORM-маппинга. - Пагинация и сортировка: Встроенная поддержка через
PageableиSort. - Проекции: Возврат частичных данных (DTO) через интерфейсы или классы.
- @Query: Определение собственных JPQL или нативных SQL-запросов.
- Спецификации (Specification): Позволяют строить динамические запросы в стиле Criteria API.
Пример репозитория:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
// Сгенерированный запрос: SELECT * FROM users WHERE email = ?
List<User> findByEmail(String email);
@Query("SELECT u FROM User u WHERE u.active = true")
Page<User> findAllActive(Pageable pageable);
}
Почему это важно: Spring Data резко сокращает шаблонный код для CRUD-операций, обеспечивает единообразный стиль работы с разными СУБД и повышает безопасность (защита от SQL-инъекций через параметризованные запросы).