Производительность getResultList () низкая - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь получить список из моей базы данных, производительность запросов высока (0,04 сек) со стороны БД, но когда я пытаюсь использовать его в приложении, требуется время (8 сек) для загрузки списка .

Я уже пробовал CreateNativeQuery вместо createNamedQuery, но я не увидел никаких улучшений.

Query q = em.createNamedQuery("findMostUsedPlaylists");
q.setMaxResults(20);
@SuppressWarnings("unchecked")
final List<Playlist> results = (List<Playlist>) q.getResultList();


@NamedQuery( name = "findMostUsedPlaylists", query = "select p from Playlist p where p.sharing = 'PUBLIC' order by p.useCount desc")

1 Ответ

0 голосов
/ 08 июля 2019

Полагаю, проблема в том, чтобы загружать множество ассоциаций в моем классе Playlist.

List<Playlist> results = new ArrayList<>();

final List<Object> sqlOutput = em.createNativeQuery("select * from playlist p where 
p.sharing = 'PUBLIC' order by p.use_count desc").setMaxResults(20).getResultList();

// i'm just showing an example here.
for (Object o : sqlOutput) {
    Object[] row = (Object[])o;
    Playlist l = new Playlist();
    l.setPlaylistId( ((BigInteger) row[0]).longValue());
    l.setHidden((Boolean) row[1]);
    results.add(l);
}
return results;

Это решило проблему. Я вижу, что результаты загружаются намного быстрее, чем раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...