Hibernate+Spring获取Mysql百万数据问题。
mysql数据库有100万左右的数据。现在要将数据全部取出。建立索引。
取数据的方式:for循环。每次获取500条数据。
不过会出现java.lang.OutOfMemoryError: Java heap space的异常
当eclipse内存大小设置为-Xms512m -Xmx1024m 没有问题。
如果数据又加大了,比如200万,300万,甚至是更大,这也不是解决的办法啊
各位兄弟姐妹,看看有没有其他的解决方案
分页函数:
public List<Product> batchSelectVideo(final String sql, final int firstRow,
final int pageSize) throws DAOException {
return this.getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session) throws SQLException,
HibernateException {
Query q = session.createQuery(sql);
q.setFirstResult(firstRow);
q.setMaxResults(pageSize);
return q.list();
}
});
}
获取总记录数:
@Override
public long countIndexTotalPage(String hql, int pageSize) throws DAOException {
Session session = super.getSession();
Long totalNum = (Long)session.createQuery(hql).uniqueResult();
totalNum = totalNum.longValue();
long totalPage = totalNum / pageSize;
if (totalNum % pageSize != 0 || totalPage == 0) {
totalPage++;
}
SessionFactoryUtils.releaseSession(session, getSessionFactory());
return totalPage;
}