Понимание родного запроса Spring JPA под капотом - PullRequest
1 голос
/ 10 ноября 2019

Я хочу больше узнать о Spring JPA и о том, что происходит под капотом, когда собственный JPA-запрос (с использованием PostgreSQL) определен и вызван в классе Repository. Я попытался выполнить поиск в Интернете, но все сообщения связаны с определением и использованием собственных запросов.

Мне больше интересно узнать, что происходит, когда мое приложение SpringBoot вызывает метод, аннотированный @Query. Я в основном изучаю это, чтобы попытаться понять производительность выполнения такого запроса в Java.

Может ли кто-нибудь указать мне на ресурс, который углубляется в то, что именно происходит под капотом при использовании Spring JPA?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2019

Может ли кто-нибудь указать мне на ресурс, в котором подробно рассказывается о том, что именно происходит под капотом при использовании Spring [DATA] JPA?

Официальным источником такой информации является источник . Позвольте мне указать на некоторые интересные места.

В основном происходит следующее:

  1. найти и извлечь запрос из аннотации .
  2. возможно создать запрос подсчета из этого .
  3. заменить выражение заклинания параметрами .
  4. добавить порядок, если применимо .
  5. подготовить запрос с помощью EntityManager.
  6. параметров регистра .
  7. добавить пределы нумерации страниц .
  8. выполнить запрос .
  9. преобразовать результат .
0 голосов
/ 10 ноября 2019
  1. Выходной журнал для просмотра того, что SQL-запрос действительно сгенерировал и выполнил

Например, в application.properties:

logging.level.org.springframework.data.jpa=debug
logging.level.org.hibernate=debug

Ссылка на журнал SpringBoot

Проверьте исходный код spring-data-jpa здесь:

https://github.com/spring-projects/spring-data-jpa/blob/master/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryExecution.java

...