hibernate 中 query.list()的优化

Posted 落叶归根

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate 中 query.list()的优化相关的知识,希望对你有一定的参考价值。

今天做项目遇到一个需求,问题是在调用query.list()的时候,因为数据也多大概700条左右,查询一次需要30s+,这简直是不能忍,于是开始考虑怎么优化。

1.因为是单表查询,不涉及表间的复杂关联,所以想到的是可能是没加索引吧,那我就加上索引,重新启动项目查询,没有改变。

2.有人说是session连接没有释放,也就是session.colse(),对我这不适用。也有人说这是数据库连接过多了吧,自己的连接池太小了,那我就从500变成5000,依旧没变化。

3.问题还没有解决,有人说query.list()转化成对应的对象的list的时候可能因为对象(model)的属性太多导致的,那好,我把所有的没用的属性都删掉,留下大概7-8个左右属性,继续执行,依然如故···

4. 有人又说了 ---对于大数据量,使用qry.scroll()可以得到较好的处理速度以及性能。而且直接对结果集向前向后滚动。-------我怎么觉得这样反而降低了效率。

5.数据分页,既然数据这么多那咱们分页查询吧,于是我每页50条,查出所有数据。性能有所提升大概20s+。

后来依然没有解决问题,心想算了吧,明天再解决,突然想着,这么多条数据为什么非要一次性都取到呢?需求不合理啊····所以分页应该是最好的解决办法,想要下次再取,而且一次取得那么多数据也不合理。

以上是关于hibernate 中 query.list()的优化的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate HQL - query.list() 返回对象数组的对象数组

Hibernate Query.list 返回实际的 Object 实例而不是预期的类型

Hibernate query.list() 方法返回空列表而不是空值

Hibernate query.list()查询结果为空

Hibernate查询多个数据

hibernate executeSQLQuery 查询多个表怎么返回值