ํ๋ก์ ํธ๋ฅผ ํ๋ ์ค, ์ ๋๋ api์์ Transaction silently rolled back because it has been marked as rollback-only ๋ผ๋ ์๋ฌ๋ฅผ ๋ง์ฃผํ๊ณ ํด๊ฒฐํ๋ฉฐ ์๊ฒ๋ ๋ด์ฉ์ ๊ธฐ๋กํ์์ต๋๋ค.
1. ๋น์ฆ๋์ค ๋ก์ง์์ ๋ฌด์ฑ์ํ ์์ธ์ฒ๋ฆฌ๋ฅผ ํ์ง ๋ง์
1-1) ์์ธ ๋ธ๋ํ์ด ๋ฐ์ํ ์ ์๋ค.
์์ธ๊ฐ ๋ฐ์ํด๋ ์์ธ๋ฅผ ํก์ํด๋ฒ๋ฆฌ๊ณ ๋ค์ ๋ก์ง์ด ์ํ๋ ์ ์๋ค.
try{
}catch(IOException e){
// ์์ธ ๋ธ๋ํ
}
์ ์ฝ๋์์ IOException์ด ๋ฐ์ํ ๊ฒฝ์ฐ๋ฅผ try/catch๋ก ๊ฐ์ธ๋ฉด ๋ค์ ๋ก์ง์ด ์ ์ ์ํ๋๋ค.
๋น์ฆ๋์ค๋ก์ง์ด ์ ์ ์ํ๋์๋ค๊ณ ์ฐฉ๊ฐํ ์ ์๊ณ , ๋ฒ๊ทธ๋ฅผ ๋ฐ์์ํฌ ์ ์๋ค.
1-2) ๋ฌด์ฑ์ํ throws๋ฅผ ํ ์ ์๋ค.
ํ์ ๋ฉ์๋์์ throwsํ๊ณ ๊ทธ ์์์์ throws ๋ ๊ทธ ์์์์ throws...๋ฅผ ๋ฐ๋ณตํ๊ฒ ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ์ด๋ฌํ ์ํฉ์ ๋ฐ์ํ ์์ธ์ ๋ํ ์ ๋ณด๋ฅผ ์ฐพ๊ธฐ ์ด๋ ต๊ฒ ๋๋ค.
2. Transaction silently rolled back because it has been marked as rollback-only
A์๋น์ค ์์์ B์๋น์ค ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ,
B์๋น์ค์์ Unchecked Exception์ ๋์ง๊ฒ ๋๋ฉด ํด๋น ํธ๋์ญ์ ์ ์ ์ญ์ ์ผ๋ก rollback-only๋ก ๋งํน๋๋ค.
A์๋น์ค ๋ฉ์๋์์ try/catch๋ก ์ฒ๋ฆฌ๋ฅผ ํด์ค๋, ํธ๋์ญ์ ์ด rollback-only๋ก ๋งํน๋๊ธฐ ๋๋ฌธ์ ์ฌ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํ๊ฒ ๋๊ณ ์์๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
(ํธ๋์ญ์ ์ ์ฌ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํ๋ค) (์ถ์ฒ : https://techblog.woowahan.com/2606/)
3. ํด๊ฒฐ๋ฐฉ๋ฒ
3-1 ) Unchecked Exception์ด ์๋ Checked Exception์ ์์๋ฐ์ Custom Exception์ ๋ง๋ค๊ณ ์์ธ๊ฐ ๋ฐ์ํ ๋ ๋์ง๊ฒ ๋๋ฉด ํด๊ฒฐํ ์ ์๋ค.
3-2) @Transactional์ noRollbackFor ์์ฑ์ ์ฌ์ฉํ์ฌ ์์ธ๊ฐ ๋ฐ์ํด๋ RollBack๋์ง ์์ ํด๋์ค๋ฅผ ์ง์ ํ ์ ์๋ค.
3-3) ๋ด๋ถ ๋ฉ์๋์ @Transactional ์ ํ์ต์ ์ REQUIRES_NEW๋ก ์ง์ ํ์ฌ ๋ ๋ฆฝ์ ์ธ ํธ๋์ญ์ ์ ์์ฑํ๋ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ ์ ์๋ค.
@Transactional(propagation = Propagation.REQUIRES_NEW)
(์ฐธ๊ณ ์๋ฃ)
https://tlatmsrud.tistory.com/102
[ํ ๋น์ ์คํ๋ง ์คํฐ๋] 7์ฃผ์ฐจ / ์์ธ / ์์ธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ ๋ฐ ์ ๋ต
1. ๊ฐ์ ์ผ๋ฐ์ ์ผ๋ก ๋น์ง๋์ค ๋ก์ง ๊ฐ๋ฐ๋งํผ ์์ธ์ฒ๋ฆฌ์ ํฌ์ํ์ง ์๋๋ค. ๋ฌด์ฑ์ํ ์์ธ์ฒ๋ฆฌ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง์ ๋ฒ๊ทธ๋ฅผ ๋ณ์ ์ ์๋ค. ์ฌ๋ฐ๋ฅธ ์์ธ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์์๋ณด์. 2. ์ด๋๊ฐ ์์ธ์ฒ
tlatmsrud.tistory.com
https://ws-pace.tistory.com/m/138
Exception & Transaction rollback ์ ๋ฆฌ
Exception๊ณผ Error์ ๊ตฌ๋ถ ์์ธ์ ์๋ฌ์ ๋ํ ์ฐจ์ด๋ถํฐ ์์๋ณด์. ์์ธ(Exception)์ ์ฌ์ฉ์์ ์๋ชป๋ ๊ฐ์ด๋ ์ ๊ทผ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๊ฒ์ผ๋ก ์ ์์ ์ธ ์ฝ๋์ ํ๋ฆ์์ ๋ฒ์ด๋๋ ํ๋์ ํ์ ๋ ๋ฐ์
ws-pace.tistory.com
'๐๋ฐฑ์๋ : BackEnd' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JSP] (0) | 2023.12.28 |
---|---|
[Servlet] (0) | 2023.12.27 |
[SpringBoot] dto์ ์์น (0) | 2023.07.31 |
[SpringBoot] 2.7.13 ์์ swagger ์ค๋ฅ (0) | 2023.07.31 |
[SpringBoot] SpringBoot ์ ๋ฆฌ (0) | 2023.07.15 |