ユーザーにレポートを表示する Spring/Hibernate を使用して Web アプリケーションを作成しています。ユーザーが結果を 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 に直接処理することをお勧めします。
FileWriter を使用して hql (struts2 で Hibernate を使用しています) の結果セットを csv にエクスポートしました。hql結果セットをList(MYPojoにキャスト)に保存し、forループを使用してデータをファイルに書き込み、csvとしてエクスポートしました。私のアプリでは問題なく動作します。http://www.mkyong.com/java/how-to-export-data-to-csv-file-java/にアクセスして ください。
ここでは Hibernate がより大きなアプリケーションの一部として使用されており、その一部が何かを CSV にエクスポートしていると思います。アプリケーション全体で Hibernate が使用されている場合、この 1 つの部分に JDBC を使用するのは適切ではない可能性があります。
私の仮定が正しくない場合は、JDBC が正しい選択です。それ以外の場合は、Hibernate のコレクションを繰り返し処理して CSV を構築することをお勧めします。
列の値に二重引用符が含まれているなど、CSV を作成する際にいくつかの刺激がある場合があります。ここにあなたを助けるかもしれない良いライブラリがあります: