Hibernate:生成报告(存储过程)

时间:2012-07-18 11:37:56

标签: java oracle hibernate jpa stored-procedures

我正在使用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。

存储过程是否可行?

谢谢!

2 个答案:

答案 0 :(得分:2)

您需要两种技术:

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

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

数据检索

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

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

如果不能解决问题,请回到原生JDBC。

我的博客中有关此主题的更多信息:JPA Query result as a POJO

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

<强>可视化

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

答案 1 :(得分:1)

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

问候。