`
newslxw
  • 浏览: 214009 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

hibernate导出到数据量的方法

 
阅读更多

在需要将数据导出的地方,由于数据量大,将数据放到内存会导致内存爆掉,所以不能使用list直接导出。

 

方法1、分页方式,一页一页到查询,每次用完也个对象,记得session.evict(obj),避免持久对象堆积

方法2、使用iterator,会产生N+1查询问题

Query query = session.createQuery(sql);
Iterator iterator = query.iterate();
out = response.getWriter();
StringBuffer bf = new StringBuffer(1000);
while(iterator.hasNext())
			{
				row++;
				Vo obj = (Vo) iterator.next();
				temp = obj.getA()+","+ obj.getB();
				bf.append("\r\n" ).append(temp);
				if(row % 100 == 0)
				{
					temp = bf.toString();
					out.print(temp);
					out.flush();
					bf.delete(0, bf.length());
				}
				session.evict(obj);
			}

 方法3、使用ScrollableResults,这个有点类似于ResultSet,不过mysql驱动不支持,因为mysql的connect/j驱动还是会将所有数据一次性加载到内存中

public List<StockRequisition> getAllBillList(){
     Session session=HibernateSessionFactory.getSession();
     ScrollableResults srs=null;
     String hql="select distinct s.billNumber,s.billDate,s.billState,s.department from StockRequisition as s";
     List<StockRequisition> list=new ArrayList<StockRequisition>();
     try{
          Query q=session.createQuery(hql);
           srs=q.scroll();
             while(srs.next()){
               StockRequisition stock=new StockRequisition();
               stock.setBillNumber(srs.getString(0));
               stock.setBillDate(srs.getDate(1));
               stock.setBillState(srs.getString(2));
               stock.setDepartment((Department)srs.get(3));
               list.add(stock);
            }
     }catch(Exception e){
        e.printStackTrace();
     }finally{
        srs.close();
        session.close(); 
     }
       return list;
    }
 
分享到:
评论

相关推荐

    springmvc+hibernate+poi实现mysql数据库简单操作以及导出excel功能

    例如,以下是一个简化的代码片段,展示了如何使用POI导出数据: ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; public void exportToExcel(List&lt;DataModel&gt;...

    struts,hibernate,spring,jfreechart,导出excel,导出pdf 完美整合

    POI提供了API,可以创建工作簿、工作表,设置单元格的样式和公式,方便地导出数据到Excel格式,便于用户进行数据查看和分析。 6. PDF导出:Java中常用的PDF库有iText和Apache PDFBox。这些库提供了生成、编辑PDF...

    java excel大数据量导出demo,可支持模板导出

    这个Java demo提供了一种实用的方法来处理Excel大数据量导出的问题,它适用于那些需要高效、稳定地处理大量数据并生成Excel报告的业务场景。通过深入理解并实践这个示例,开发者可以更好地掌握Apache POI的流式API,...

    SpringMVC+Hibernate+POI导入导出excel

    例如,为了防止大量数据导入导致内存溢出,可以分批处理数据;在导出时,可以使用流式处理来减少内存消耗。此外,为了提高用户体验,还可以添加进度条显示导入导出的状态。 总之,SpringMVC、Hibernate和POI的结合...

    struts2+hibernate+spring+jfreechart+导出excel+导出pdf完美整合.zip

    这个压缩包文件“struts2+hibernate+spring+jfreechart+导出excel+导出pdf完美整合.zip”显然是一个整合了这些技术的示例项目,用于演示如何在实际开发中实现数据处理、视图展示以及文件导出功能。 首先,Struts2 ...

    Excel 导出 struts2 spring hibernate

    1. **性能优化**:大量数据导出可能导致内存溢出,因此可以使用流式处理或者分批导出来降低内存消耗。 2. **安全性**:防止恶意用户通过上传文件攻击系统,需要对上传文件进行安全检查和限制。 3. **异常处理**:...

    JAVA百万数据导出EXCEL源代码

    在Java开发中,导出大量数据到Excel是常见的需求,特别是在数据分析、报表生成等领域。本文将深入探讨如何使用Apache POI库实现JAVA百万数据高效地导出到Excel。Apache POI是一个开源项目,它提供了读写Microsoft ...

    java实现数据导出到Excel

    在SSH框架中,你可能会将上述逻辑封装到一个服务或工具类中,然后在控制器中调用该服务,根据用户请求导出数据。例如,你可以创建一个ExportService,接收查询参数,执行查询,然后使用上述代码将结果写入Excel。 ...

    struts、 hibernate、 spring、 jfreechart、 导出excel、 导出pdf 完美整合

    以上技术的整合可以创建一个完整的Java企业级应用,从用户界面到数据持久化,再到复杂的报表生成和输出,实现数据的展示和导出。这种整合方式在实际项目中非常常见,可以提高开发效率,降低维护成本。通过合理地使用...

    struts2+hibernate+spring+jfreechart+导出excel+导出pdf完美整合

    1. **数据交互**:通过Struts2接收用户请求,将请求转发给Spring管理的业务层,由Hibernate处理数据库操作,返回数据到Struts2,最后由Struts2渲染并展示给用户。 2. **数据可视化**:利用JFreeChart,开发者可能...

    Hibernate实践例子程序

    Hibernate 是一个开源的O/R mappimg的框架,基于JDBC提供了一种持久性数据管理的方案,相对于EntityBean来说是相当轻量级的。由于Hibernate是基于 JDBC的,所以它的数据库查寻的能力相对于CMP来说也是异常强大的,...

    easyexcel+validation excel导入导出下载

    它无需预先加载整个Excel文件到内存,而是采用流式读写,降低了对系统资源的占用,特别适合处理大数据量的Excel文件。使用EasyExcel进行Excel导入导出,主要涉及以下几个步骤: 1. **定义实体类**:首先,我们需要...

    使用java将数据库数据导出到excel文件

    此外,为了提高性能,可以考虑使用批处理或内存管理策略,避免一次性加载大量数据到内存。 通过这个过程,我们可以高效地将数据库中的数据导出到Excel文件,便于数据分析、报表生成或与其他系统交换数据。这种方法...

    JSF+Spring+Hibernate配置以及分页查询和Excel文件导出

    在处理大量数据时,分页查询是提高用户体验和系统性能的重要手段。在JSF中,可以通过实现一个分页组件或者利用JSF的UI组件库(如PrimeFaces或RichFaces)的分页功能。在后台,Spring和Hibernate可以配合使用...

    Hibernate_Tools_for_eclipse_HbmTool.rar

    完成后,你就可以在Hibernate Configuration视图窗口看到配置项,已经链接到数据,并把你数据库中的表列出来,如果在这一步你没有成功的话,请检查你是否以正确安装的Hibernate Tools和JBoos Tools这个很重要;...

    基于spring mvc+spring+hibernate+bootstrap+maen开发的企业级项目,直接导出即可运行

    这是一个使用Java技术栈构建的企业级项目,主要依赖于Spring MVC、Spring、Hibernate和Bootstrap框架,以及Maven作为项目管理工具。下面将详细解释这些技术及其在项目中的作用。 1. **Spring MVC**:Spring MVC是...

    spring mvc学习+数据分页+数据导入导出

    `@ModelAttribute` 注解用于将请求参数绑定到控制器方法的参数上,而`@Valid` 注解则用于在控制器方法调用前执行Bean Validation,确保输入数据的有效性。 视图解析是另一个关键概念,Spring MVC使用ViewResolver来...

    struts2+spring+hibernate+生成报表

    在报表生成时,我们通常需要从数据库中查询大量数据,Hibernate可以通过其强大的查询语言HQL或者Criteria API,高效地获取并处理数据。它可以减少直接编写SQL带来的复杂性和错误,提高代码的可读性和可维护性。 ...

    HibernateTools

    4. **数据库浏览器**:内置的数据库浏览器允许开发者直接在IDE中浏览和操作数据库,查看表结构、执行SQL语句、导入导出数据等。这为开发者提供了对数据库的直观视图,便于调试和数据管理。 5. **集成开发环境(IDE...

    ssh整合web导出excel案例

    这可能是因为对于简单数据导出需求,直接操作文件流的方式更为轻量级,减少了对额外库的依赖。 2. **功能概述**: - **主页展示**:列出所有地址信息,提供导出当前页和导出全部到Excel的选项。 - **详细信息展示...

Global site tag (gtag.js) - Google Analytics