我在寫一個使用Spring/Hibernate的Web應用程序,它向用戶顯示報告,我想允許用戶將結果導出到CSV文件。休眠/彈簧應用程序 - 導出爲CSV
任何人都可以提出一個有效的方法來輸出Hibernate查詢結果到CSV文件嗎?
謝謝!
我在寫一個使用Spring/Hibernate的Web應用程序,它向用戶顯示報告,我想允許用戶將結果導出到CSV文件。休眠/彈簧應用程序 - 導出爲CSV
任何人都可以提出一個有效的方法來輸出Hibernate查詢結果到CSV文件嗎?
謝謝!
Hibernate用於對象關係映射。如果你在另一端沒有物體,那有什麼意義?
Spring不禁止混合和匹配JDBC和Hibernate。針對手頭的問題採用最佳方法。直的JDBC在你的情況下聽起來最好。
另外,如果這是一個Web應用程序,請查看Spring的AbstractJExcelView。也許你可以編寫一個直接的DAO來獲取數據,將其發送回控制器,並讓它將JExcelView渲染回瀏覽器。用戶將在瀏覽器中將數據視爲Excel電子表格。他們可以選擇將其從瀏覽器保存爲.csv文件。很好,很乾淨。
如果您使用的是Hibernate,您的查詢結果將是一個對象列表,我將遍歷該列表並使用Utility類將這些對象作爲csv打印到StringBuffer。
讓Hibernate實例化一個(大?)對象列表及其依賴關係,只是在實例化之後將它們序列化爲字符串數據當然從時鐘週期和RAM的角度來看效率不高,但它可能是這樣的從開發人員時間的角度來看。如果你擔心你的處理器和RAM,我會建議運行一個普通的JDBC SQL查詢並直接處理到csv。
我想Hibernate在這裏被用作更大的應用程序的一部分,其中一部分是將某些內容導出到CSV。在整個應用程序中使用Hibernate的同時,對這一塊使用JDBC可能並不合適。
如果我的假設不正確,那麼JDBC是正確的選擇,否則您可能需要遍歷Hibernate的集合來構建您的CSV。
有時在構建CSV的時候會有一些刺激因素,例如列值中有雙引號,其他類似的東西。這裏是一個很好的庫,可以幫助你:
嘗試使用HibernateTools查詢出口商 http://docs.jboss.org/tools/4.1.0.Final/en/hibernatetools/html_single/#d0e5010
我出口我的HQL(我用用struts2的休眠),結果用的FileWriter設置爲CSV這也可能對你有所幫助。 我將hql結果集存儲到List(轉換爲MYPojo)並使用for循環將數據寫入文件並將其導出爲csv。 它適用於我的應用程序。 U可能訪問http://www.mkyong.com/java/how-to-export-data-to-csv-file-java/
我最終使用Spring的AbstractView和「opencsv」的CSV編寫器向用戶呈現csv文件。 – user57701 2009-01-26 20:04:34