Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Spring: jpa

Какими способами можно писать запросы в Spring Data JPA?

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

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

В Spring Data JPA запросы можно писать разными способами: через имена методов, с помощью JPQL, native SQL и Criteria API. Также используются Specification для динамических условий. Самый простой способ — генерация запросов по имени метода. Более сложные запросы обычно пишутся явно. Выбор подхода зависит от сложности логики и требований к гибкости.

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

Spring Data JPA предоставляет несколько уровней абстракции для работы с запросами — от максимально простых до полностью контролируемых.

Определение

Запрос в Spring Data JPA — это способ описать, какие данные и по каким условиям должны быть получены из базы данных через репозиторий.

Основные способы написания запросов

1) Генерация запросов по имени метода

Spring Data умеет анализировать имя метода и автоматически строить запрос.

  1. Пример идеи

List<User> findByStatusAndAgeGreaterThan(String status, int age);
  1. Плюсы

    • минимум кода

    • читаемо для простых условий

  2. Минусы

    • длинные имена методов

    • плохо подходит для сложной логики

2) JPQL-запросы (@Query)

JPQL — объектно-ориентированный язык запросов.

  1. Особенности

    • работает с сущностями, а не таблицами

    • не зависит от конкретной СУБД

  2. Пример идеи

@Query("select u from User u where u.status = :status")
List<User> findActiveUsers(String status);

3) Native SQL

Позволяет писать «чистый» SQL.

  1. Когда нужен

    • сложные JOIN

    • специфичные функции СУБД

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

  2. Пример идеи

@Query(value = "select * from users where status = ?", nativeQuery = true)
List<User> findByStatus(String status);

4) Criteria API

Используется для программной сборки запросов.

  1. Особенности

    • динамические условия

    • типобезопасность

  2. Часто применяется

    • через Specification

5) Specification (Spring Data)

Обёртка над Criteria API для композиции условий.

  1. Преимущество

    • переиспользуемые фильтры

    • чистая архитектура

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

Spring Data JPA позволяет выбирать способ написания запросов под конкретную задачу: от простых методов до сложных динамических запросов и native SQL.

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • Spring

    Spring

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

#jpa

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