hibernate大数据量查询问题

cs_kill_you 2008-12-08 10:29:03


大家好,我从银行里取数据,四万条就很慢了,几十万根本不行,抛出out of memory异常,我用hibernate来做分页,hibernate好像是一次性从数据库取出全部的数据,不是按每页的页数来取的。我的手提才1G内存,我的hibernate分页是这样子的。

public List findAll(Integer currentPage, Integer pageSize, String sql) {
final int startRow = (currentPage - 1) * pageSize;
final int pageSize1 = pageSize;
final String newsql = sql;

return this.getHibernateTemplate().executeFind(new HibernateCallback() {
public List doInHibernate(Session session)
throws HibernateException {
Query query = session.createQuery(newsql);
query.setFirstResult(startRow);
query.setMaxResults(pageSize1);
return query.list();
}
});

我用spring 来管理 hibernate,hibernate的属性设置是这样的

<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.DB2Dialect</prop>

<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.jdbc.batch_size">50</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</prop>
<prop key="hibernate.cache.use_second_level_cache">false</prop>
<prop key="hibernate.cache.use_query_cache">false</prop>
<prop key="hibernate.cache.use_minimal_puts">false</prop>
</props>
</property>
...全文
322 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
indenty 2008-12-12
  • 打赏
  • 举报
回复
check out this: http://www.hibernate.org/hib_docs/v3/reference/en-US/html/performance.html
indenty 2008-12-10
  • 打赏
  • 举报
回复
应该不可能一次全部取出吧?看一看输出的SQL就知道了!
lihan6415151528 2008-12-08
  • 打赏
  • 举报
回复
不好意思,没有做过性能优化这部分

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧