2016-05-12 18 views
0

私は大きなMySQLデータベーステーブル(100万レコード以上)を持っています。私はすべてのデータを読んで、Java言語を使っていくつかの処理を行う必要があります。Spring JDBCTemplate ResultSetExtractorとSpringバッチItemReaderの違い

私は、Javaプロセスがメモリ内の結果セット全体を取ることにより、より多くのメモリを消費しないようにしたいと考えています。

カーソルベースの実装を見ながら、私は春JDBCTemplateがResultSetExtractor又はRowCallbackHandlerと読み出し行を順次上書き使用し、

  1. をいくつかのオプションを発見しました。
  2. SpringBatchを使用するその他のオプションJDBCCursorItemReader/JDBCPagingItemReader。

この2つのオプションの違いは何ですか?

+1

タグバッチファイルはバッチプログラミング用です。これには、cmdコマンドを実行するバッチファイルの作成が含まれます。 Springバッチやバッチファイルの操作について質問するときは使用しないでください。詳細については、[this](http://stackoverflow.com/tags/batch-file/info)を参照してください。 –

+0

定期的または定期的に実行されるバッチ処理では、スプリングバッチが 'JDBCTempllate'接続を開いたり、ステートメントを作成したり、結果セットを読み込んだり、最後にチェックされた 'SQLException'を渡してすべてを閉じるといった、すべてのJDBC関連の複雑さを抽象化します。今はどうやってそれを使いたいのですか? – Braj

+0

@DennisvanGils、それを今修正しました。 – Prabu

答えて

0

オプション1は、バッチ処理が必要な場合、アプリケーション側で内部バッチ処理を行う方が優れているようです。

JdbcCursorItemReaderは新しい接続を開き、アプリケーショントランザクションに参加しません。 http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/item/database/AbstractCursorItemReader.htmlのAPIを参照してください。このAPIは春のバッチの一部です。バッチ処理アプリケーションを作成している場合は、それが適しています。スプリングバッチを参照

関連する問題