Chunk ํ๋ก์ธ์ฑ
SpringBatch์ chunk ํ๋ก์ธ์ฑ

100๊ฐ์ row ๋ฐ์ดํฐ๋ ํ๋ฒ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์ถฉ๋ถํ ๊ฐ๋ฅํ์ง๋ง, 100๋ง๊ฐ์ row ๋ฐ์ดํฐ๋ ์กฐ๊ธ ์ด๋ ค์์ด ์์ ๊ฒ์ด๋ค.
๋ฉ๋ชจ๋ฆฌ์์ ์ฌ๋ ค์ผ ํ๋ ๋ฌธ์
100๋ง๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์คํํ๊ธฐ ์ํ connection ๋ฌธ์ ๋ฑ
ํฐ ๋ฐ์ดํฐ๋ฅผ Chunk ๋จ์๋ก ๋ถํ ์ฒ๋ฆฌํ๋ ๊ฒ์ด Chunk ํ๋ก์ธ์ฑ์ด๋ค.
Chunk ํ๋ก์ธ์ฑ ๋ฐฐ์น ํ๋ก์ฐ

Reader๋ก ์๋ต ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์์ read() ํจ์๋ฅผ ํตํด ํ row์ฉ ์๋ต.
์๋ต ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ Processor์์ ๊ฐ๊ณต ์ฒ๋ฆฌ ํ๋ค.
๊ฐ๊ณต๋ ๋ฐ์ดํฐ๋ฅผ ChunkSize๋งํผ ๋ชจ์, Writer์์ ์ ์ฅ์์ ์ ์ฅํ๋ค.
Chunk ํ๋ก์ธ์ฑ ์์ฌ ์ฝ๋
์ฒซ for๋ฌธ ์์์ Writer์์ ์ฒ๋ฆฌํ Item list๋ฅผ ์์ฑํ๋ค.
๋ ๋ฒ์งธ for๋ฌธ์์๋ chunkSize๋งํผ loop๋ฅผ ๋๋ฉด์, ItemReader์์ Item์ ๊ฐ์ ธ์จ๋ค.
Processor๊ฐ ์๋ค๋ฉด ๊ฐ๊ณต ์ฒ๋ฆฌ๋ฅผ ์งํํจ. (Processor๊ฐ ํ์ ์์๋ ์๋๋ค.)
๊ฐ๊ณต ์ฒ๋ฆฌ๊ฐ ๋๋๋ฉด ์์ดํ ์ ์ถ๊ฐํ๋ค.
ItemWriter์์ Item์ ์ ์ฅ ์ฒ๋ฆฌํ๋ค.
์ ๊ณผ์ ์ด ChunkSize์ ํ ์ฌ์ดํด์ด ์ํ๋๋ ๊ฒ์ด๋ค. ์ด ์์ ์ totalSize๋งํผ ์์ ํ๋ค.
์ฝ๊ฒ ์์ฝํ๋ฉด Reader์์ ๋ฐ์ดํฐ๋ฅผ ํ๋ ์ฝ๊ณ , ๊ทธ ๋ฐ์ดํฐ๋ฅผ Processor๋ฅผ ํตํด ์ฒ๋ฆฌํ๋ค.
์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ค์ด Chunk ๋จ์๋งํผ ์์ด๋ฉด Writer์์ ์ ์ฅ์์ write( )ํ๋ค.
Reader, Procssor์์๋ ํ๋์ฉ, Writer์์ Chunk ๋จ์ ์ฒ๋ฆฌ
์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ Chunk๋ผ๋ ๋จ์๋ก ํธ๋์ญ์
์ ์ํํ๋ค๋ ๊ฒ์ด๋ค.
Job์ ์ด๋ป๊ฒ ์คํ๋๋๊ฐ - ํธ๋์ญ์
๊ด๋ จ
https://devocean.sk.com/blog/techBoardDetail.do?ID=164085
Job์ ์คํํ ๋ JobLauncher๋ฅผ ํตํด ์คํํ๋๋ฐ, ๋ฉ์๋๋ฅผ ๋ฐ๋ผ ๋ค์ด๊ฐ๋ฉด TaskletStep ํด๋์ค์ doExecute()๊ฐ ์กด์ฌํ๋ค. ํด๋น ๋ฉ์๋๋ Job์์ Step์ด ์ ์๋์ด ์๋๋ฐ ๊ทธ Step์ด ํธ์ถํ ๋ ์คํ๋๋ค.
Step์ ChunckContext๋ฅผ Srping Trasaction์ TransactionTemplate ์์์ Callback ํํ๋ก ๋์ํ๋ค.
๊ฒฐ๊ตญ Step์ Chunk Tasklet์ transactionManager ์์์ ์คํ๋๊ณ ์๋ค.
Job์ด ์คํ๋๊ณ read ํ๊ธฐ ์ ๋ถํฐ transaction์ด ์์๋๊ณ , ์ข ๋ฃ ์ ๊น์ง ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ชจ๋ rollback ์์ผ๋ฒ๋ฆฐ๋ค.
Last updated