[๐ Error] deleteAll()๊ณผ deleteAllInBatch()์ ์ฐจ์ด
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์ด๋ ์คํจํ ๊ฒฝ์ฐ ์ํฐํฐ๋ฅผ ๋ณต๊ตฌํ๊ธฐ ์ด๋ ค์ฐ๋ฏ๋ก ์ด ์ ์ ๊ณ ๋ คํด์ผ ํ๋ค.
๐ ์ผ๋ถ๋ฌ ์ค๋ฅ๋ฅผ ๋ฐ์์์ผ ์ด๋ป๊ฒ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ง ์๊ณ , ์ด๋ฌํ ์ํฉ์์๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผํ๋์ง ์ถํ์ ์์๋ณผ ์์ ์ด๋ค.