Что такое Spring Data и каковы его основные возможности?

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

Ответ

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-инъекций через параметризованные запросы).