2009-01-22 32 views
2

我在寫一個使用Spring/Hibernate的Web應用程序,它向用戶顯示報告,我想允許用戶將結果導出到CSV文件。休眠/彈簧應用程序 - 導出爲CSV

任何人都可以提出一個有效的方法來輸出Hibernate查詢結果到CSV文件嗎?

謝謝!

回答

2

Hibernate用於對象關係映射。如果你在另一端沒有物體,那有什麼意義?

Spring不禁止混合和匹配JDBC和Hibernate。針對手頭的問題採用最​​佳方法。直的JDBC在你的情況下聽起來最好。

另外,如果這是一個Web應用程序,請查看Spring的AbstractJExcelView。也許你可以編寫一個直接的DAO來獲取數據,將其發送回控制器,並讓它將JExcelView渲染回瀏覽器。用戶將在瀏覽器中將數據視爲Excel電子表格。他們可以選擇將其從瀏覽器保存爲.csv文件。很好,很乾淨。

+2

我最終使用Spring的AbstractView和「opencsv」的CSV編寫器向用戶呈現csv文件。 – user57701 2009-01-26 20:04:34

1

如果您使用的是Hibernate,您的查詢結果將是一個對象列表,我將遍歷該列表並使用Utility類將這些對象作爲csv打印到StringBuffer。

讓Hibernate實例化一個(大?)對象列表及其依賴關係,只是在實例化之後將它們序列化爲字符串數據當然從時鐘週期和RAM的角度來看效率不高,但它可能是這樣的從開發人員時間的角度來看。如果你擔心你的處理器和RAM,我會建議運行一個普通的JDBC SQL查詢並直接處理到csv。

0

我想Hibernate在這裏被用作更大的應用程序的一部分,其中一部分是將某些內容導出到CSV。在整個應用程序中使用Hibernate的同時,對這一塊使用JDBC可能並不合適。

如果我的假設不正確,那麼JDBC是正確的選擇,否則您可能需要遍歷Hibernate的集合來構建您的CSV。

有時在構建CSV的時候會有一些刺激因素,例如列值中有雙引號,其他類似的東西。這裏是一個很好的庫,可以幫助你:

http://ostermiller.org/utils/download.html