๐ spring-batch 6
โ๏ธ ItemWriter
- ์ด๋ฆ์ writer ์ด์ง๋ง ํญ์ ์ฐ๊ธฐ๋ง์ ๋ด๋นํ์ง๋ ์๋๋ค.
- ์ฒ๋ฆฌ ๋์ ๋ฐ์ดํฐ ์ญ์ ๋ฐ ๊ฐฑ์ , ์ด๋ฒคํธ ์ ์ก ...
โ๏ธ ๊ตฌํ์ฒด
- FlatFileItemWriter (ํ์ผ์ ์ฐ๊ธฐ)
- JpaItemWriter (Jpa๋ฅผ ์ด์ฉํด์ DB์ ์ฐ๊ธฐ)
- JdbcBatchItemWriter
โ๏ธ FlatFileItemWriter
BeanWrapperFieldExtractor<T>
- setNames(new String[] {"id", "name", "age", ...});
- ํ๋๋ช ์ง์
DelimitedLineAggregator<T>
- ํ ๋ผ์ธ์ ๋ํ ๊ตฌ๋ถ์ ์ค์
- setDelimiter(","); // csv์ ๊ฒฝ์ฐ ','๋ฅผ ๊ตฌ๋ถ์๋ก ํจ
- setFieldExtractor(fieldExtractor)
FlatFileItemWriterBuilder<T>()
.name("")
.encoding("UTF-8")
.resource(new FileSystemResource("path/file.csv"))
.lineAggregator(lineAggregator)
.build();
โ๏ธ ํค๋ํ๋ / ํธํฐํ๋ ์์ฑ
FlatFileWriter
.headerCallback(writer -> writer.write("id,์ด๋ฆ,๋์ด"))
.footerCallback(writer -> writer.write("==========\n"))
โ๏ธ ๊ธฐ์กด ํ์ผ์ ์ด์ด์ฐ๊ธฐ (ํ์ผ๋ช ์ด ๊ฐ์ ๊ฒฝ์ฐ)
FlatFileWriter
.append(true)
- ํธํฐ์ ๊ฐํ๋ฌธ์ ์ถ๊ฐ
โ๏ธ JdbcBatchItemWriter
- DB bulk ์ฐ์ฐ์ ๋ํ ์ฒ๋ฆฌ (์ฝ์ ,์ญ์ ,๊ฐฑ์ )
ex) bulk insert
insert into person (name, age) values("a",1),("b",2),("c",3);
- values ์ฌ๋ฌ ๊ฐ ๋์ด ํ ๋ฒ์ ์ฒ๋ฆฌ
- ๋จ๊ฑด ์ฒ๋ฆฌ๋ณด๋ค ๋น๊ต์ ๋์ ์ฑ๋ฅ์ ๊ฐ์ง๋ค.
JdbcBatchItemWriterBuilder
.dataSource(dataSource)
.itemSqlParameterSourceProvider(
new BeanPropertyItemSqlParameterSourceProvider<>()
)
.sql("insert into person(name,age) values(:name, :age)")
.build();
rewriteBatchedStatement=true
โ๏ธ JpaItemWriter
new JpaItemWriterBuild<T>()
.entityManagerFactory(emf)
.build();
โ๏ธ 10๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ์
์ 20๊ฐ์ ์ฟผ๋ฆฌ๊ฐ ๋๊ฐ๋ค.
1๊ฐ row ์ฝ์
์ ๋ํด select -> insert (2๋ฒ์ ์ฟผ๋ฆฌ)
โ๏ธ why?
- ๊ธฐ๋ณธ๊ฐ์ผ๋ก merge๊ฐ ๋์๋๋ค.
- ์ผ๋จ ํด๋น ์ํฐํฐ๊ฐ ์์ ๋์์ธ์ง select ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ ค๋ณธ ํ
update or insert ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฐ๋ค.
โ๏ธ merge -> persist
JpaItemWriterBuilder<T>()
.usePersist(true)
โ๏ธ ์๋ฌ๋ฐ์ (GenerationType.IDENTITY)
- ํ์ฌ๋ ์ํฐํฐ ๊ฐ์ฒด ์์ฑ์ ID(pk)๋ฅผ ์์ฑ์๋ฅผ ํตํด ์ง์ ๋ฃ์ด์ฃผ์์
- ๊ธฐ๋ณธ๊ฐ(merge)์ผ ๋๋ ์ง์ ๋ฃ์ด์ค id๊ฐ์ ์กฐํ ํ์ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋์ง ์์์
- persist์ ๊ฒฝ์ฐ IDENTITY๋ฅผ ๋ฐ๋ฅผ ์ ์๋๋ก ํด์ฃผ์ด์ผ ํ๋ค.
๊ฐ์ฒด ์์ฑ์ id๊ฐ์ ๋ฐ์ผ๋ฉด ์ ๋๋ค.
๐ ์๊ฐ์ธ์ฆ

ํจ์คํธ์บ ํผ์ค [์ง์ฅ์ธ ์ค๋ฌด๊ต์ก]
ํ๋ก๊ทธ๋๋ฐ, ์์ํธ์ง, UX/UI, ๋ง์ผํ , ๋ฐ์ดํฐ ๋ถ์, ์์ ๊ฐ์, The RED, ๊ตญ๋น์ง์, ๊ธฐ์ ๊ต์ก, ์๋น์ค ์ ๊ณต.
fastcampus.co.kr
๋ณธ ํฌ์คํ ์ ํจ์คํธ์บ ํผ์ค ํ๊ธ ์ฑ๋ฆฐ์ง ์ฐธ์ฌ๋ฅผ ์ํด ์์ฑ๋์์ต๋๋ค
'Spring Batch' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 26์ผ์ฐจ - Spring Batch 8 (0) | 2021.10.01 |
|---|---|
| ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 25์ผ์ฐจ - Spring Batch 7 (0) | 2021.09.30 |
| ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 23์ผ์ฐจ - Spring Batch 5 (0) | 2021.09.28 |
| ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 22์ผ์ฐจ - Spring Batch 4 (0) | 2021.09.27 |
| ํจ์คํธ์บ ํผ์ค ์ฑ๋ฆฐ์ง 21์ผ์ฐจ - Spring Batch 3 (0) | 2021.09.26 |