在使用Hibernate进行分页的过程中,如果你收到如下警告,那么这里就是一个潜在的性能问题点:
WARNING: firstResult/maxResults specified with collection fetch; applying in memory!
出现这个警告的直接后果是:无论你想要看第几页的数据,从Hibernate打印出的SQL来看它总是查询了所有满足条件的结果。这是为什么呢?来看看这句警告所在的代码,它位于org.hibernate.hql.ast.QueryTranslatorImpl中,部分摘录如下:
view plaincopy to clipboardprint?
QueryNode query = ( QueryNode ) sqlAst;
boolean hasLimit = queryParameters.getRowSelection() != null && queryParameters.getRowSelection().definesLimits();
boolean needsDistincting = ( query.getSelectClause().isDistinct() || hasLimit ) && containsCollectionFetches();
QueryParameters queryParametersToUse;
if ( hasLimit && containsCollectionFetches() ) {
log.warn( "firstResult/maxResults specified with collection fetch; applying in memory!" );
RowSelection selection = new RowSelection();
selection.setFetchSize( queryParameters.getRowSelection().getFetchSize() );
selection.setTimeout( queryParameters.getRowSelection().getTimeout() );
queryParametersToUse = queryParameters.createCopyUsing( selection );
}
else {
queryParametersToUse = queryParameters;
}
相关专题
- Hibernate原理与配置 (392篇文章)
- Hibernate相关文章 (392篇文章)
- (279次浏览)Java远程通讯的6种可选技术及原理
- (217次浏览)struts2 + spring + hibernate 实现CRUD
- (168次浏览)初学者对Hibernate的学习方法
- (92次浏览)多动鼠标少动脑,Java报表工具的简约之美
- (90次浏览)多种计时器的比较与分析
- (83次浏览)Java深度历险小记
- (67次浏览)项目中成功的运用proxool连接池
- (64次浏览)Struts+Spring+Hibernate整合例子
- (63次浏览)Java日期转换SimpleDateFormat格式大全
- (59次浏览)手机开发平台指南、教程和资料介绍



