๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ์ด์ปค๋จธ์Šคํ”„๋กœ์ ํŠธ/โœ๏ธ TIL

[TIL] ๋‹ค์‹œ ์‹œ์ž‘ํ•ด๋ณด๋Š” ํ”„๋กœ์ ํŠธ TIL 13์ผ์ฐจ..

by carrot0911 2025. 5. 3.

๐ŸŒž ์˜ค๋Š˜์€ ์–ด๋–ค ํ•˜๋ฃจ์˜€์ง€..

๋“œ๋””์–ด ์„ ์ฐฉ์ˆœ ํ• ์ธ ์ฟ ํฐ์„ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•  ์‹œ๊ฐ„!!!

์šฐ์„  ์ฟ ํฐ ์ƒ์„ฑ๊ณผ ๋ฐœ๊ธ‰์„ ์œ„ํ•ด ์„ ์ฐฉ์ˆœ ํ• ์ธ ์ฟ ํฐ CRUD๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค.
์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๊ธˆ๋ฐฉ ๋งˆ๋ฌด๋ฆฌ๋์ง€๋งŒ ๋™์‹œ์„ฑ ์ œ์–ด๊ฐ€ ์ฒ˜์Œ์ด๋ผ ๊ทธ๋Ÿฐ์ง€ ์ฟ ํฐ ๋ฐœ๊ธ‰ ๋กœ์ง์ด ์ƒ๊ฐ๋ณด๋‹ค ์ •๋ฆฌ๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค.
๊ทธ๋ž˜์„œ ์ฐจ๋ถ„ํ•˜๊ฒŒ ๋กœ์ง์„ ๋„์‹ํ™”ํ–ˆ๊ณ , ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์™€ ํ•จ๊ป˜ ๋กœ์ง์„ ์ž˜ ๋งˆ๋ฌด๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋‹ค์Œ์€ ์ฟ ํฐ ๋ฐœ๊ธ‰ ๋ถ€๋ถ„์— ๋™์‹œ์„ฑ ์ œ์–ด๋ฅผ ํ•ด์•ผ ํ–ˆ๋‹ค!
์ตœ๋Œ€ ์ˆ˜๋Ÿ‰์— ๋งž๊ฒŒ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ œ๊ณตํ•ด์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ™•ํ•œ ์ˆ˜๋Ÿ‰์œผ๋กœ ๋ฐœ๊ธ‰์„ ํ•ด์ค˜์•ผ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ด€์  ๋ฝ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค.
์ฟ ํฐ์„ ์กฐํšŒํ•˜๋Š” ๊ณผ์ •์— ๋™์‹œ์„ฑ ์ œ์–ด๋ฅผ ์ ์šฉํ•˜์—ฌ ๋จผ์ € ์กฐํšŒํ•œ ์‚ฌ๋žŒ์ด ์ฟ ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›์„ ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ๋Œ€๊ธฐ๋ฅผ ํ•ด์•ผ ํ–ˆ๋‹ค.

์šฐ์„ ์€ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋Š” ๋ถ€๋ถ„์ด ์—†๋Š”์ง€๋งŒ ํ™•์ธํ•˜๊ณ  ํ•˜๋ฃจ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ–ˆ๋‹ค!

 

๐Ÿ’ก ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ๋‚ด์šฉ์€ ๋ญ๊ฐ€ ์žˆ๋”๋ผ..?!

๋น„๊ด€์  ๋ฝ ์ ์šฉ

@Lock(LockModeType.PESSIMISTIC_WRITE)
@Query("SELECT c FROM Coupon c WHERE c.id = :couponId")
Optional<Coupon> findByIdWithLock(Long couponId);

๋‹ค์Œ๊ณผ ๊ฐ™์ด @Lock(LockModeType.PESSIMISTIC_WRITE)๋ฅผ ์„ค์ •ํ•˜๋ฉด ๋๋‚œ๋‹ค.
์ƒ๊ฐ๋ณด๋‹ค ๋˜๊ฒŒ ๋‹จ์ˆœํ•˜๊ฒŒ ์ ์šฉ์ด ๋ผ์„œ ๋‹นํ™ฉํ–ˆ๋‹ค.. ใ…Žใ…Ž

 

๐Ÿ—“๏ธ ๋‚ด์ผ์€ ๋ญ ํ•˜์ง€?!

โœ”๏ธ  ํ”„๋กœ์ ํŠธ - ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋กœ ๋™์‹œ์„ฑ ์ œ์–ด ํ™•์ธ
โœ”๏ธ TIL ์ž‘์„ฑ