DB์ @Transactional์ ์ฌ์ฉํ ๋ ์์ฃผ ๋์ค๋ ์ค์
by JiwonDevDB๋ฅผ ์ฌ์ฉํ ๋ ํํํ๋ ์ฝ๋ฉ์ค์, ์ ํ๋ธ ์ค๋ช
์ด ๋์ ๊ฒ ๊ฐ์์ ๊ธ์ ๋์ถฉ์์ฑํฉ๋๋ค :)
https://www.youtube.com/watch?v=n85UzIReFjY
1. Primary , Replica (Master-Slave ์ฉ์ด๊ฐ ์๋ฏธ๋ ์ด์ํ๊ณ , ํ์ธ๋นํ..๋ผ์ ๋ฐ๊ฟ)
์๋ ๋ณ๊ฒฝ์ Primary, ์ฝ๊ธฐ๋ Replica DAO๋ฅผ ์ฌ์ฉํด๋ผ๊ณ ๋ฐฐ์ ๋ค.
[๊ทธ๋ฌ๋ ๋ณ๊ฒฝ ํ์ ๋ฐ๋ก ์ฝ๋ ์์
์ Primary๋ก ์ ๋ถ ์ฒ๋ฆฌํด์ผํ๋ค.]
์๋ํ๋ฉด Primary-> Replica ๊ธฐ๋ก์ด ๋ฒ๊ฐ์ฒ๋ผ ๋น ๋ฅด๊ฒ ๋๋๊ฒ ์๋๋ผ์, ํ ๋ฉ์๋ ์์์ PrimaryDAO๋ก ๋ณ๊ฒฝํ์๋ง์. Replica DAO๋ก ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฝ์ผ๋ฉด null์ด ๋ฐ์ํ ์ ์์.
2. @Transactional ์ ๊ธฐ๋ณธ๊ฐ (Requried) ์ฌ์ฉ์ ์ค์ฒฉ๋ฌธ์ + try catch ์กฐ์ฌ
๋ด๋ถ์ @Transactional ๋ฉ์๋๊ฐ ์์ผ๋ฉด ๋กค๋ฐฑ์ด ํฐ์ก์ ๋, ๋ฐ ๋ฉ์๋๊น์ง ๊ฐ์ด ๋กค๋ฐฑ์ด ๋ ์์์.
๊ทธ ์ด์ ๋ ๋ด๋ถ์์ Rollback์ด ํฐ์ก๋๋ฐ, ๋ฐ์์๋ Commit์ ์๋ํ๊ณ ์๊ธฐ ๋๋ฌธ์.
๋ง์ฝ ๋ฐ ๋ฉ์๋์ @Transactional์ด ์์์ผ๋ฉด ๋ฌธ์ ๊ฐ ์์ง๋ง, ์๋ค๋ฉด ์ ์ฒด๊ฐ ๋ค๊ฐ์ด ๋กค๋ฐฑ๋จ.
๊ทธ๊ฑฐ๋ง๊ณ ๋ try-catch ์ฌ์ฉ์ throw๋ฅผ ๋จน์ด๋ฒ๋ ค rollback์ด ์๋๋ ๋ฌธ์ ๋ ์์
3. ์คํ๋ง์์ @Transactional ๋ฉ์๋๋ฅผ this๋ก ํธ์ถํ๋ ๊ฒฝ์ฐ
๋งค์ฐ ๋งค์ฐ ์ํํจ. this.method()๋ ํธ๋์ญ์
์ฒ๋ฆฌ๋ฅผ ๋ฐ์ง๋ชปํจ.
this๋ ๋จ์ ํธ์๊ธฐ๋ฅ์ด ์๋๋ผ, ์ค์ ๊ฐ์ฒด์ ๋ ํผ๋ฐ์ค๋ฅผ ๊ฐ์ง๊ณ ์์.
๊ทธ๋์ ํ๋ก์์์ this๋ ์ค์ ๊ฐ์ฒด์ ๋ ํผ๋ฐ์ค๋ฅผ ๊ฐ์ง.
this.method() ํด๋ฒ๋ฆฌ๋ฉด ํธ๋์ญ์
์ฝ๋๊ฐ ์ฝ์
๋ ํ๋ก์๊ฐ์ฒด๊ฐ ์๋๋ผ, ๊ทธ๋ฅ ์ค์ ๊ฐ์ฒด๊ฐ ํธ์ถ๋จ
์ฆ ํธ๋์ญ์
์ฒ๋ฆฌ๋ฅผ ๋ฐ์ง๋ชปํจ.
'๐ฑ Spring Framework > Spring Core' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ AOP์ ๋ชจ๋ ๊ฒ(Spring AOP & AspectJ) (3) | 2022.03.09 |
---|---|
DB ํธ๋์ญ์ ๊ณผ ์ปค๋ฅ์ ์ดํดํ๊ธฐ (2) | 2021.08.25 |
@Transactional ์ ๋์์๋ฆฌ, ํธ๋์ญ์ ๋งค๋์ (5) | 2021.08.18 |
์ฝ๊ฒ ์ดํดํ๋ ์คํ๋ง AOP (~์์ฑ์ค~) (0) | 2021.08.18 |
ํ ๋น์์คํ๋ง#2 ์ฑ๊ธํค ๋ ์ง์คํธ๋ฆฌ์ ์ค๋ธ์ ํธ ์ค์ฝํ (0) | 2021.08.14 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
JiwonDev
JiwonDev