我正在使用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。
存储过程是否可行?
谢谢!
答案 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)
问候。