有这么个情况,我需要从数据库读比较多的数据(比如5W条)发送到客户端,数据库用的postgresSQL,web容器用的tomcat,现在的处理办法是一次全读处理放到内存中,然后根据客户端的网络判断分批发送的量进行分批发送,这种处理方法在用户不多的情况不会出问题,但如果比较多的用户同时都需要传输5W条数据,(这5W条记录不一定相同,所以不能公用数据),就会出现tomcat内存溢出,现在想考虑用Hibernate的那个分页读取,采用滚动的结果集,但这种滚动结果集是不是也是把所有数据都先读内存中呢?
希望能详解下
希望能详解下
public List<Object> query(PageCommon pageComon)
List<Object> resultList = null;
Session hibernateSession = getSession();
try {
String queryString = "from Table T where ...";
Query query = hibernateSession.createQuery(queryString);
query.setFirstResult(pageCommon.getFirstNum()).setMaxResults(pageCommon.getPAGENUM());
resultList = query.list();
}catch(Exception ex) {
ex.printStackTrace();
}finally {
hibernateSession.close();
}
}PageCommon是我们的一个分页类,你可以改为自己的分页类