getResultList()性能缓慢

时间:2019-07-01 19:04:02

标签: hibernate jpa

我正在尝试从数据库中获取列表,但从数据库方面来看查询性能却很快(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 :(得分:0)

我想在我的播放列表类中急于加载大量关联是问题。

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;

这解决了问题。我可以看到结果加载速度比以前快得多。