【发布时间】:2013-07-30 10:03:44
【问题描述】:
我正在尝试提高 api 的性能。我需要知道标记的第二行是否也会命中数据库?因为我想尽量减少。
StringBuffer queryBuf = new StringBuffer("some query in SQL");
--------->StringBuffer queryBuf2 = new StringBuffer(" SELECT DISTINCT PP.ID FROM ( " + queryBuf + ") PP ");
Query query1 = getSession().createSQLQuery(queryBuf2.toString());
query1.setReadOnly(true);
ScrollableResults results = query1.scroll();
if (results.isLast() == false)
results.last();
int total = results.getRowNumber() + 1;
results.close();
logger.debug(">>>>>>TOTAL COUNT<<<<<< = {}", total);
【问题讨论】:
-
该行创建了一个字符串缓冲区,就像上面的两个一样。这些都没有“命中数据库”。
-
您的代码甚至无法编译。
-
可以使用 Integer count= ((Long)query1.uniqueResult()).intValue();得到计数。
标签: java sql hibernate jakarta-ee scrollableresults