我正在使用Spring / Hibernate编写一个向用户显示报告的Web应用程序,我希望允许用户将结果导出到CSV文件。
有人能建议将Hibernate查询结果输出到CSV文件的有效方法吗?
谢谢!
答案 0 :(得分:2)
Hibernate用于对象关系映射。如果你的另一端没有物体,重点是什么?
Spring不禁止混合和匹配JDBC和Hibernate。针对手头的问题使用最佳方法。在您的情况下,直接的JDBC听起来最好。
另外,如果这是一个Web应用程序,请查看Spring的AbstractJExcelView。也许你可以编写一个直接的DAO来获取数据,将其发送回控制器,并让它将JExcelView渲染回浏览器。用户将在浏览器中将数据视为Excel电子表格。他们可以选择将其保存为浏览器中的.csv文件。很干净。
答案 1 :(得分:1)
如果您正在使用Hibernate,查询结果将是一个对象列表,我将遍历列表并使用Utility类将这些对象作为csv打印到StringBuffer。
让Hibernate实例化一个(大?)对象列表及其依赖关系只是为了在实例化之后将它们串行化为字符串数据当然从时钟周期和RAM的角度来看效率不高,但它可能是这样的开发者时间观点。如果您担心处理器和RAM,我建议运行一个简单的JDBC SQL查询并直接处理到csv。
答案 2 :(得分:0)
我认为Hibernate在这里被用作更大的应用程序的一部分,其中一部分是将某些东西导出为CSV。在整个应用程序中使用Hibernate时,可能不适合使用JDBC。
如果我的假设不正确,那么JDBC是正确的选择,否则你可能想要迭代Hibernate的集合来构建你的CSV。
有时在构建CSV时会有一些刺激因素,例如在列值中使用双引号,其他类似的东西。这是一个可以帮助您的好图书馆:
答案 3 :(得分:0)
尝试使用HibernateTools Query Exporter http://docs.jboss.org/tools/4.1.0.Final/en/hibernatetools/html_single/#d0e5010
答案 4 :(得分:0)
我通过使用FileWriter将我的hql(我使用带有struts2的Hibernate)结果集导出到csv,这对你也有帮助。 我将hql结果集存储到List(转换为MYPojo)并使用for循环我将数据写入文件并将其导出为csv。 它适用于我的应用程序。 你可以访问http://www.mkyong.com/java/how-to-export-data-to-csv-file-java/