Spring Framework/๐Ÿ“› ์—๋Ÿฌ ๊ธฐ๋ก

[๐Ÿ“› Error] deleteAll()๊ณผ deleteAllInBatch()์˜ ์ฐจ์ด

soogoori 2024. 5. 1. 21:47

DB์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ๋ชจ์กฐ๋ฆฌ ์‚ญ์ œํ•˜๊ณ  ๋‹ค์‹œ save ํ•ด์•ผํ–ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” deleteAll()๋กœ ์‚ญ์ œํ•œ ํ›„ saveAll()ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์‹คํ–‰์‹œ์ผœ๋ณด๋‹ˆ ์œ„์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. 

delete๊ฐ€ ๋˜์ง€ ์•Š๊ณ  save๋ฅผ ํ•˜๋ ค๊ณ  ํ•˜๋‹ˆ ์ค‘๋ณต๋œ ํ‚ค๊ฐ€ ์žˆ๋‹ค๊ณ  ๋‚˜์˜ค๋Š” ๋“ฏํ•˜๋‹ค. 

 

 

 

deleteAll()

์ฃ„๋‹ค select๋งŒ ํ•˜๊ณ  delete๋Š” ํ•˜์ง€ ์•Š์•˜๋‹ค.

๊ฒฐ๊ตญ delete๋ฅผ ํ•˜์ง€ ์•Š๊ณ  saveAll()์„ ๋งŒ๋‚˜ insertํ•˜๋ ค๊ณ  ํ•œ๋‹ค. 

๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ์ค‘๋ณต๋œ ํ‚ค๊ฐ€ ์žˆ๋‹ค๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ด๋‹ค. 


๐Ÿ”น deleteAll() 

deleteAll() ๋ฉ”์„œ๋“œ๋ฅผ ๋“ค์–ด๊ฐ€์„œ ํ™•์ธํ•ด๋ณด๋‹ˆ findAll()๋กœ ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ฐพ๊ณ  ํ•˜๋‚˜์”ฉ ์‚ญ์ œํ•œ๋‹ค. 

๊ฐ ์—”ํ‹ฐํ‹ฐ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์‚ญ์ œํ•˜๊ณ , ํŠธ๋žœ์žญ์…˜์ด commit๋  ๋•Œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ฆ‰์‹œ ๋ฐ˜์˜๋˜๋Š” ๊ฒƒ์ธ๋ฐ @Transactional์ด ๋ถ™์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๊ธฐ๊นŒ์ง€๋Š” ์•„์ง ๋‹ค๋ฅธ ์ฝ”๋“œ๋“ค๋„ ๋‚จ์•„์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค. 

 

๐Ÿ“› N+1๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค. 

 

deleteAllInBatch()

๊น”๋”ํ•˜๊ฒŒ selectํ•˜์ง€ ์•Š๊ณ  delete๋งŒ ํ•œ๋‹ค.


๐Ÿ”น deleteAllInBatch() 

 

ํŒŒ๊ณ  ๋“ค์–ด๊ฐ€๋ณด๋ฉด deleteAll()๊ณผ ๋‹ค๋ฅด๊ฒŒ selectํ•˜์ง€ ์•Š๊ณ  ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ญ์ œํ•˜๋Š” "delete from %s x" ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ ค์ฃผ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋ฐฐ์น˜ ๋‹จ์œ„๋กœ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

ํŠธ๋žœ์žญ์…˜ ๋‹จ์œ„๋กœ ์ž‘๋™๋˜์ง€ ์•Š๊ณ  ํ˜ธ์ถœํ•˜๋Š” ์ฆ‰์ด ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ญ์ œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ ์ฐจ์ด์—์„œ ๊ฝค ์ฐจ์ด๊ฐ€ ๋‚œ๋‹ค. 

๋‹ค๋งŒ, rollback์ด๋‚˜ ์‹คํŒจํ•œ ๊ฒฝ์šฐ ์—”ํ‹ฐํ‹ฐ๋ฅผ ๋ณต๊ตฌํ•˜๊ธฐ ์–ด๋ ค์šฐ๋ฏ€๋กœ ์ด ์ ์€ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค. 

 

๐Ÿ‘‰ ์ผ๋ถ€๋Ÿฌ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š๊ณ , ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š”์ง€ ์ถ”ํ›„์— ์•Œ์•„๋ณผ ์˜ˆ์ •์ด๋‹ค.