์ฐ๋ฆฌ๋ ๋ณดํต HTTP DELETE ๋ฉ์๋๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ API๋ฅผ ๊ตฌํํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ์ฝ๋๋ฅผ ์ค์ ๋ก ์ญ์ ํ๋ ๊ฒ์ โ Hard Delete ๋ค๋ฅธ ๋ง๋ก โ ๋ฌผ๋ฆฌ ์ญ์ ๋ผ๊ณ ํ๋ค.
ํ์ง๋ง ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ์ ์ผ๋ก ์ญ์ ํ์ง ์๋ ๋น์ฆ๋์ค ์๊ตฌ ์ฌํญ์ด ์์ ์ ์๋๋ฐ, ์๋ ์ํฉ์ด ๊ทธ ์์์ด๋ค.
1. ๊ธฐํ์๊ฐ ํํดํ ์ ์ ์ ๋ฐ์ดํฐ๋ ํ์๋ก ํ ๊ฒฝ์ฐ (๋ง์ผํ ๋ฐ ๊ธฐํ์ ์ฌ์ฉ)
2. ํํดํ ํ์์ด ์์ ์ ์ ๋ณด๋ฅผ ๋ณต๊ตฌํ๊ธฐ๋ฅผ ์ํ ๊ฒฝ์ฐ
๋ ผ๋ฆฌ ์ญ์ ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ค์๋ UPDATE ์ฟผ๋ฆฌ๊ฐ DELETE ์ฟผ๋ฆฌ๋ณด๋ค ๋ง์ดํฌ๋ก์ด ๋จ์๋ก ๋ดค์ ๋ ๋ ๋น ๋ฅด๋ค๋ ์ด์ ๋ ์๋ค.
SELECT * FROM user WHERE social_platform = "WITHDRAW"
ํด๋น ์ด๋ ธํ ์ด์ ์ DELETE ์ฟผ๋ฆฌ๊ฐ ๋ฐ์ํ ๋, ์ ์๋ ์ฟผ๋ฆฌ๋ก ๋ฐ๊ฟ์ ์คํํด์ฃผ๋ ์ญํ ์ ํ๋ค.
์ด ์ด๋ ธํ ์ด์ ์ ํ์ฉํ๋ฉด DELETE ์ฟผ๋ฆฌ๋ฅผ UPDATE ์ฟผ๋ฆฌ๋ก ๋ฐ๊ฟ์ค์ผ๋ก์จ, ์ญ์ ๋ ๋ฐ์ดํฐ์์ ์๋ณํ ์ ์๋ ํ๋๋ง ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
"์๋น ๋ ์ด๋ ธ๋ค" ์๋น์ค์ ์ด๋ฅผ ์ด๋ป๊ฒ ์ ์ฉํ์๋์ง ํ์ธํด๋ณด์
1๏ธโฃ ๋จผ์ , User ์ํฐํฐ deleted ๋ผ๋ ํ๋๋ฅผ ์ถ๊ฐํด์ฃผ์ด, ํํดํ ์ ์ ์์ ์๋ณํ ์ ์๊ฒ ํ๋ค.
2๏ธโฃ User ์ํฐํฐ์ ํด๋์ค level์ @SQLDelete ์ด๋ ธํ ์ด์ ์ ์ถ๊ฐํ ๋ค, deleted ํ๋๋ฅผ UPDATE ํ๋๋ก SQL๋ฌธ์ ์์ฑํ๋ค.
3๏ธโฃ ์ด๋ ๊ฒ ํ๋ฉด DELETE ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฌ๋ deleteById ๋ฉ์๋๋ฅผ ์คํํ์์๋ ๋ถ๊ตฌํ๊ณ , ์๋์ ๊ฐ์ด deleted ํ๋๋ง ๋ฐ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์์ ๊ฐ์ด deleted ํ๋๋ฅผ true๋ก ๋ฐ๊ฟจ๋๋ผ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์กฐํํ ๋ ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ์กฐํํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ด ์ ํ๋๋ ๊ฒ์ ํผํ ์ ์๋ค.
์ฑ๋ฅ ์ ํ๋ฅผ ๋ง๊ธฐ ์ํด์๋ deleted ํ๋๊ฐ false์ธ ๋ ์ฝ๋๋ค์ ๋ํด์๋ง SELECT ์ฟผ๋ฆฌ๋ฅผ ์คํํด์ผํ๋ค.
์ด๋ฅผ ์ํด์๋ SELECT ์ฟผ๋ฆฌ์ ๋งค๋ฒ WHERE ์ ์ ๋ถ์ฌ์ค์ผ ํ๋๋ฐ, ์ด๋ฅผ ๋์ ํด์ฃผ๋ ๊ฒ์ด ๋ฐ๋ก @Where ์ด๋ ธํ ์ด์ ์ด๋ค.
1๏ธโฃ User ์ํฐํฐ์ ํด๋์ค level์ @Where ์ด๋ ธํ ์ด์ ์ ์ถ๊ฐํด์ค ๋ค, ์๋์ ๊ฐ์ด ์กฐ๊ฑด์ ์ ์ด์ค๋ค.
2๏ธโฃ ๊ทธ๋ฌ๋ฉด User์ ๊ด๋ จ๋ SELECT ๋ฌธ์์ deleted ํ๋๊ฐ false์ธ ๋ ์ฝ๋์ ๋ํด์๋ง ์กฐํ๊ฐ ์ผ์ด๋๋๋ก ์๋์ผ๋ก WHERE ์ ์ด ์์ฑ๋๋ค.
@SQLDelete, @Where ๋ฑ์ ์ค๋ฌด์์ ์ฌ์ฉํ๊ธฐ ์ด๋ ต๋ค๊ณ ํ๋ค.
์๋ํ๋ฉด ์ค๋ฌด์์๋ ๊ฒฝ์ฐ์ ๋ฐ๋ผ์ ์ค์ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋์๋์ง ์ญ์ ๋ ๋ฐ์ดํฐ๋ ์กฐํํ ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ค๋ฌด๊ฐ ์๋๋๋ผ๋, ์ญ์ ๋ ๋ฐ์ดํฐ๋ค๊ณผ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ์ป๊ณ ์ถ์ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ ์ ์๋ค.
์ด๋ฐ ๊ฒฝ์ฐ Native Query๋ฅผ ์ฌ์ฉํ๋ฉด WHERE ์ ์ ๋ฌด์ํ๊ณ SELECT ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆด ์ ์๋๋ฐ, ์์ธํ ์ฌ์ฉ๋ฒ์ ์๋ ์ฌ์ง๊ณผ ๊ฐ๋ค.
์์ ๊ฐ์ด nativeQuery๋ฅผ true๋ก ์ง์ ํ๋ฉด, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํนํ๋ (JPQL๊ณผ ๋ฌด๊ดํ) ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฌ๊ฒ ๋๋ฏ๋ก deleted๊ฐ true์ธ ๋ ์ฝ๋๋ค๋ ์กฐํํ ์ ์๋ค.