У меня сложный запрос SQL, который объединяет несколько таблиц и вызывает некоторую функцию для вычисления некоторых данных. Даже я превратил его в View , чтобы создать удобную реализацию JPA для получения данных. Базовый запрос SQL занимает 2 секунды, когда он выполняется в базе данных. Тем не менее, он тратит 80 секунд, когда выполняется из приложения Spring Boot.
Я провел тест несколькими способами и получил тот же результат:
- Путем создания собственного запроса объект из JPA entityManager
Query typedQuery = entityManager.createNativeQuery(sql, Result.class);
- Путем создания сопоставленного объекта в представлении и запроса с использованием CriteriaSpecification
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<ViewResult> query = builder.createQuery(ViewResult.class);
Root<ViewResult> r = query.from(ViewResult.class);
Predicate predicate = builder.conjunction();
...
query.where(predicate);
TypedQuery<ViewResult> typedQuery = entityManager.createQuery(query);
return typedQuery.getResultList();
- С помощью JDB C и реализация Resulset (повторение набора результатов для построения требуемого списка)
Существует ли метод для достижения результатов с временем, близким к тому, которое задерживается при работе в менеджере баз данных?