JiwonDev

DB์™€ @Transactional์„ ์‚ฌ์šฉํ• ๋•Œ ์ž์ฃผ ๋‚˜์˜ค๋Š” ์‹ค์ˆ˜

by JiwonDev

DB๋ฅผ ์‚ฌ์šฉํ• ๋•Œ ํ”ํžˆํ•˜๋Š” ์ฝ”๋”ฉ์‹ค์ˆ˜, ์œ ํŠœ๋ธŒ ์„ค๋ช…์ด ๋‚˜์€ ๊ฒƒ ๊ฐ™์•„์„œ ๊ธ€์€ ๋Œ€์ถฉ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค :)
https://www.youtube.com/watch?v=n85UzIReFjY


1. Primary , Replica (Master-Slave ์šฉ์–ด๊ฐ€ ์˜๋ฏธ๋„ ์ด์ƒํ•˜๊ณ , ํ‘์ธ๋น„ํ•˜..๋ผ์„œ ๋ฐ”๊ฟˆ)

์›๋ž˜ ๋ณ€๊ฒฝ์€ Primary, ์ฝ๊ธฐ๋Š” Replica DAO๋ฅผ ์‚ฌ์šฉํ•ด๋ผ๊ณ  ๋ฐฐ์› ๋‹ค.
[๊ทธ๋Ÿฌ๋‚˜ ๋ณ€๊ฒฝ ํ›„์— ๋ฐ”๋กœ ์ฝ๋Š” ์ž‘์—…์€ Primary๋กœ ์ „๋ถ€ ์ฒ˜๋ฆฌํ•ด์•ผํ•œ๋‹ค.]
์™œ๋ƒํ•˜๋ฉด Primary-> Replica ๊ธฐ๋ก์ด ๋ฒˆ๊ฐœ์ฒ˜๋Ÿผ ๋น ๋ฅด๊ฒŒ ๋˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ์„œ, ํ•œ ๋ฉ”์†Œ๋“œ ์•ˆ์—์„œ PrimaryDAO๋กœ ๋ณ€๊ฒฝํ•˜์ž๋ง์ž. Replica DAO๋กœ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ์ฝ์œผ๋ฉด null์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ.

๋งž๋Š” ๋ง์ด์ง€๋งŒ, ๊ฐ™์€ ๋ฉ”์„œ๋“œ์•ˆ์—์„œ ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„ํ—์ ์œผ๋กœ null์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋น ๋ฅด๊ฒŒ ๋™๊ธฐํ™”๊ฐ€ ๋˜๋Š”๊ฑด ์•„๋‹ˆ๋ผ์„œ.

 


2. @Transactional ์˜ ๊ธฐ๋ณธ๊ฐ’ (Requried) ์‚ฌ์šฉ์‹œ ์ค‘์ฒฉ๋ฌธ์ œ + try catch ์กฐ์‹ฌ

๋‚ด๋ถ€์— @Transactional ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ๋กค๋ฐฑ์ด ํ„ฐ์กŒ์„ ๋–„, ๋ฐ– ๋ฉ”์„œ๋“œ๊นŒ์ง€ ๊ฐ™์ด ๋กค๋ฐฑ์ด ๋ ์ˆ˜์žˆ์Œ.
๊ทธ ์ด์œ ๋Š” ๋‚ด๋ถ€์—์„œ Rollback์ด ํ„ฐ์กŒ๋Š”๋ฐ, ๋ฐ–์—์„œ๋Š” Commit์„ ์‹œ๋„ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—.
๋งŒ์•ฝ ๋ฐ– ๋ฉ”์„œ๋“œ์— @Transactional์ด ์—†์—ˆ์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ, ์žˆ๋‹ค๋ฉด ์ „์ฒด๊ฐ€ ๋‹ค๊ฐ™์ด ๋กค๋ฐฑ๋จ.
๊ทธ๊ฑฐ๋ง๊ณ ๋„ try-catch ์‚ฌ์šฉ์‹œ throw๋ฅผ ๋จน์–ด๋ฒ„๋ ค rollback์ด ์•ˆ๋˜๋Š” ๋ฌธ์ œ๋„ ์žˆ์Œ

๋ฐ–์—์„œ๋Š” commit()์„ ํ•˜๋Š”๋ฐ, ์•ˆ์—์„œ rollback()์ด ํ„ฐ์กŒ์œผ๋ฉด ์ „์ฒด๊ฐ€ ๋กค๋ฐฑ๋ฉ๋‹ˆ๋‹ค. propagation ๊ธฐ๋ณธ๊ฐ’์€ required ๋‹ˆ๊นŒ..

 


3. ์Šคํ”„๋ง์—์„œ @Transactional ๋ฉ”์„œ๋“œ๋ฅผ this๋กœ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ

๋งค์šฐ ๋งค์šฐ ์œ„ํ—˜ํ•จ. this.method()๋Š” ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ๋ฐ›์ง€๋ชปํ•จ.
this๋Š” ๋‹จ์ˆœ ํŽธ์˜๊ธฐ๋Šฅ์ด ์•„๋‹ˆ๋ผ, ์‹ค์ œ ๊ฐ์ฒด์˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ.
๊ทธ๋ž˜์„œ ํ”„๋ก์‹œ์—์„œ this๋Š” ์‹ค์ œ ๊ฐ์ฒด์˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๊ฐ€์ง.
this.method() ํ•ด๋ฒ„๋ฆฌ๋ฉด ํŠธ๋žœ์žญ์…˜ ์ฝ”๋“œ๊ฐ€ ์‚ฝ์ž…๋œ ํ”„๋ก์‹œ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ, ๊ทธ๋ƒฅ ์‹ค์ œ๊ฐ์ฒด๊ฐ€ ํ˜ธ์ถœ๋จ
์ฆ‰ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ๋ฐ›์ง€๋ชปํ•จ.

this๋Š” ์‹ค์ œ ๊ฐ์ฒด์˜ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. this.method()๋Š” ํ”„๋ก์‹œ๋ฅผ ์•ˆ๊ฑฐ์น˜๊ณ  ๋™์ž‘ํ•ด์š”.

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ