2

我正在使用 Hibernate (JPA 2.0)、Spring 3.0.5 和 Oracle 11g 开发一个应用程序。

我需要根据数据库中的许多表生成一些报告(CSV);

示例报告 CSV 如下所示:

From_Date    TO_Date     Group   Metric     Mon     Tue      Wed     Thu    Fri

10/01/2012   10/02/2012   HP     Average    29       74       400     99     14 
10/02/2012   10/03/2012   HP     Average    81       19       22      108    07
10/03/2012   10/04/2012   HP     Average    11       62       09      16     01

10/01/2012   10/02/2012   HP     Total      924      452      915     100    940 
10/02/2012   10/03/2012   HP     Total      185      925      266     108    857
10/03/2012   10/04/2012   HP     Total      173      201      907     675    169

我的问题是,由于这份报告将取决于许多表格和不同的指标(平均值、总数和百分比),因此使用给定技术堆栈的最佳方式是什么?

我目前没有使用任何报告 api。

存储过程是要走的路吗???

谢谢 !!

4

2 回答 2

2

您需要两项技术:

  • 检索和计算数据的东西
  • 创建可视化的东西

(+可选的一些调度机制,用于每隔一段时间自动生成报告)

数据检索

我强烈反对使用 JPA 和 Java 代码来组装您的数据,因为这通常会很慢,除非只有少量数据。

如果您在应用程序中使用 JPA,我会首先尝试使用 JPA 视图对象 + JPA 调整(通过配置文件/注释)。

如果这不起作用,请回退到本机 JDBC。

我的博客中有关此主题的更多信息:作为 POJO 的 JPA 查询结果

如果甚至 JDBC 太慢,我只会考虑存储过程(更难编写、版本、与您的应用程序保持同步等)

可视化

  • 您可以在 Java 中轻松创建 CSV 文件
  • 有关适当的报告库/工具包,请参阅Pentaho 报告Jasperreports
  • 对于临时报告(没有预定义模式的报告,也就是数据分析),我建议使用Pentaho 业务分析

如果您可以利用提供的整个工具链(加载数据的 ETL、报表设计器工具、数据分析器、报表调度器等),Pentaho BI 服务器(或类似产品)将使您受益匪浅。如果您只有一些报告并且这些报告不会很快改变,那么我会坚持使用 Java 解决方案。

于 2012-07-18T13:22:28.030 回答
1

对于报告,您可以使用JasperReports (PDF) 或Apache POI(MS 文档,例如 MS Excel)

问候。

于 2012-07-18T12:25:23.153 回答