๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ฌธ์ œ ์ƒํ™ฉ

๋น„๋™๊ธฐ ๊ณต๋ถ€๋ฅผ ์œ„ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ JPA๋ฅผ ์‚ฌ์šฉ๋ฉด์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ค ์งœ๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด๋ ค๋Š”๋ฐ ์œ„์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค.

 

TransactionRequiredException.. ํŠธ๋žœ์žญ์…˜์ด ํ•„์ˆ˜๋ผ๋Š” ๋‚ด์šฉ์˜ ์ต์…‰์…˜์ธ ๋“ฏ ํ•˜๋‹ค.

ํ˜„์žฌ ์“ฐ๋ ˆ๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜์ด ์žˆ๋Š” ์—”ํ‹ฐํ‹ฐ๋งค๋‹ˆ์ € ๊ฐ์ฒด๊ฐ€ ์—†๋‹ค - persist๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†๋‹ค

์ด๋Ÿฐ๋ง์ผ๊นŒ

 

์•Œ๊ณ ๋ณด๋‹ˆ ๋‚ด๊ฐ€ ํ•˜๋Š” ์ž‘์—…์— ํŠธ๋žœ์žญ์…˜ ์„ ์–ธ์„ ํ•ด์•ผ๋งŒ ํ–ˆ๋‹ค.

JPA๋Š” Transaction์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•˜๋„๋ก ๋˜์–ด์žˆ๋‹ค.

Transaction์˜ ๋‹จ์œ„์— ๋”ฐ๋ผ 1์ฐจ ์บ์‹œ์˜์—ญ์— ์žˆ๋Š” ๊ฐ์ฒด๋“ค์ด DB์— flush๋˜์–ด ์˜์†ํ™”๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ๋Ÿฌํ•œ ์˜์†์ž‘์—…์„ ํ•˜๋Š” persist() ๋ฉ”์†Œ๋“œ์— ๊ฐ์ฒด๊ฐ€ ๋“ค์–ด๊ฐ”์œผ๋‚˜, ๊ฐ€๋Šฅํ•œ Transaction์ด ์กด์žฌํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— 

์ด๋Ÿฌํ•œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค.

 

 

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

์„œ๋น„์Šค ํ˜น์€ ํด๋ž˜์Šค์— ๋ฏธ๋ฆฌ @Transactional์„ ์„ ์–ธํ•œ๋‹ค.

ํด๋ž˜์Šค์—๋Š” @Transactional(readOnly = true)

๋ฉ”์†Œ๋“œ์—๋Š” @Transactional

์„ ๋ถ™์—ฌ read ํŠธ๋žœ์žญ์…˜๊ณผ write ํŠธ๋žœ์žญ์…˜์„ ๊ตฌ๋ถ„ํ•˜์ž !!

 

ํ•ด๊ฒฐ