今回は、chunkステップを試してみます。chunkステップは、ItemReaderでデータベースやファイルなどから読んだデータをItemProcessorで変換(ビジネスロジックで色々導出したりしてItemWriterで出力するオブジェクトを生成する感じかな)し、ItemWriterでデータベースやファイルに出力します。writerに渡されるデータは、ジョブXMLのchunkステップで設定した件数分纏めて渡されてきます。item-countに1000を指定した場合、readerとprocessorが1000回繰り返し実行されたあとに、1000件のデータがwriterに渡されます。*1ジョブの構成ItemReaderでは1から10までの連番をリードします。ItemProcessorでは、ItemReaderでリードしたデータ(連番)からUserEntityを生成して返します。ItemWriterでは、JPAを使用してUserEntityの情報をデータベースに保存しています。ジョブXMLは以下の内容になっています。処理する件数が少ないのでChunkサイズ(item-count)も小さめに設定しています。</step></job>ItemReaderの実装ItemReaderは、AbstractItemReaderを継承して作成します。ItemReaderインタフェースを実装してもいいだけど、AbstractItemReaderは必須じゃないメソッドは空実装持っててくれるので不要なメソッドは実装しないで良い感じです。ItemReaderの実装では、readItemメソッドで外部リソースから読み込んだ情報を返します。今回は単純にインクリメントした値を返しているだけです。これ以上読み取るデータがない場合には、nullを返却します。nullを返却するとこれ以上扱うレコードがないと判断され、最後の纏まりがItemWriterで処理されたあとにChunkステップが終了します。今回の例では、外部リソースを必要としないので、リソースを開いたり閉じたりなどの処理は実装していません。}}ItemProcessorの実装ItemProcessorはItemProcessorインタフェースをimplementsして作成します。メソッドは1つだけなので、ItemReaderやWriterのように空実装をもった抽象クラスは提供されていません。今回の例では、ItemReaderでリードした連番を、出力ようにEntityに変換しています。}}ItemWriterの実装ItemWriterはItemReaderと同じ理由でAbstractItemWriterを継承して作成します。今回は、ItemProcessorで変換した値をJPAを使ってデータベースに保存しています。}}実行ログhibernateのログです。インサートできてますね。同じようにArquillianを使ってテストしてみたのでテストコードを。Boot&JPAでコネクション不足になってハマったお話C3.jsのドーナツチャートの中に表示されるテキストの見た目を変更するjest-whenを試してみたよ月別アーカイブgithubhttps://github.com/siosioはてなブログをはじめよう!sioiriさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。