生成Jasper报告时提高性能

时间:2018-02-23 15:01:37

标签: java jasper-reports

正如标题所示,我在批量生成Jasper Reports时遇到了性能问题。单个客户的银行对帐单的报告需要2秒才能生成。为了生成50个客户,我必须生成每个客户,然后将它们全部合并到一个文件中,然后传递给servlet,这需要2 x 50秒(接近2分钟)。当然假设我的服务器或互联网上没有任何流量问题。有没有办法像我的情况那样提高批量报告的性能?我还没有探讨过Jasper报告的特殊功能吗?

我做了什么: 1.我已经能够保存对数据库的无意义调用以获取所需的记录,并将其缩小到只有一个调用。 (要在用户界面上显示此内容大约需要4秒钟才能显示整个数据。)

  1. 我使用List JasperPrint个对象找到了关于Jasper批量导出的简短文章。但这根本没有改善性能。我认为导出报告一次会有所帮助,而不是一次导出每个报告并随后合并PDF字节。但事实并非如此。

  2. 我已经探索了对JRXML文件进行分组,因此整个数据可以渲染一次,但这也失败了,因为我需要迭代细节带,不仅仅是为了客户,还为每个客户提供了# 39; s数据。

  3. 任何有助于提高Jasper Reports批量导出性能的帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

经过一些研究和大量测试,我发现Jasper并不是真正的问题。在实现报告分组(收集所有数据并一次从一个.jasper文件生成)之后,我发现它与生成单个报告并与PDFMerger库合并没有太大区别。与众不同的是代码优化。如果一个客户的报告在2秒内生成,我发现它可以做得更好。以下是我为实现这一目标而采取的以下步骤。

  1. 尽可能减少数据库调用(更好的JPA查询)
  2. 逻辑优化
  3. 仅这两个就有所不同。

相关问题