Как вы использовали SQL в последнем проекте на Spring?

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

Ответ

В проекте использовал SQL через Spring Data JPA и Hibernate. Применял несколько подходов:

  • JPQL (Java Persistence Query Language) для объектно-ориентированных запросов.
  • Нативные SQL-запросы для сложных операций или специфичного синтаксиса СУБД.
  • Criteria API для динамического построения запросов.

Примеры из репозитория:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    // JPQL-запрос
    @Query("SELECT u FROM User u WHERE u.active = true")
    List<User> findActiveUsers();

    // Нативный SQL-запрос
    @Query(value = "SELECT * FROM users WHERE registration_date > :date", nativeQuery = true)
    List<User> findUsersRegisteredAfter(@Param("date") LocalDate date);
}

Почему так? JPQL переносим между СУБД, а нативный SQL дает полный контроль. Для оптимизации использовал индексы и анализировал планы запросов через EXPLAIN.