Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Spring: native, sql, spring data, jpa

В каких случаях используются native SQL-запросы в Spring Data JPA?

Вопрос проверяет понимание ограничений JPA и умение выбирать подходящий инструмент для работы с базой данных.

Короткий ответ

Native SQL-запросы используются, когда возможностей JPA или JPQL недостаточно. Они позволяют писать чистый SQL с учетом особенностей конкретной базы данных. Такой подход даёт больше контроля, но снижает переносимость кода. Используется осознанно и точечно.

Длинный ответ

Несмотря на удобство JPA, иногда требуется полный контроль над SQL-запросом.

Что такое native SQL

Определение:
Native SQL — это запрос, написанный на «чистом» SQL, который выполняется напрямую базой данных, минуя абстракции JPA.

Когда они необходимы

Native SQL используют, если:

  • требуется сложный JOIN или подзапрос

  • используется специфичный синтаксис БД

  • важна максимальная производительность

  • нужно работать с window-функциями или CTE

Пример использования

@Query(
  value = "SELECT * FROM users WHERE status = :status",
  nativeQuery = true
)
List<User> findByStatus(@Param("status") String status);

Минусы native SQL

Использование native SQL:

  • привязывает код к конкретной СУБД

  • усложняет тестирование

  • снижает читаемость по сравнению с JPA

Краткий вывод

Native SQL-запросы — это инструмент для сложных и нестандартных случаев. В обычных CRUD-сценариях предпочтительнее использовать JPA и derived query methods.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Spring

    Spring

Ключевые слова

#native

#sql

#spring data

#jpa

Подпишись на Java Developer в телеграм