[JPA ํ™œ์šฉ 1] @Transactional(readOnly = true) ๐Ÿฆ„

ํ™์ •์™„ยท2022๋…„ 4์›” 18์ผ
0

JPA

๋ชฉ๋ก ๋ณด๊ธฐ
5/38
post-thumbnail
post-custom-banner

@Transactional : ํŠธ๋žœ์žญ์…˜, ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ


  • readOnly=true : ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์ด ์—†๋Š” ์ฝ๊ธฐ ์ „์šฉ ๋ฉ”์„œ๋“œ์— ์‚ฌ์šฉ, ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋ฅผ ํ”Œ๋Ÿฌ์‹œ ํ•˜์ง€ ์•Š
    ์œผ๋ฏ€๋กœ ์•ฝ๊ฐ„์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ(์ฝ๊ธฐ ์ „์šฉ์—๋Š” ๋‹ค ์ ์šฉ)

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ง€์›ํ•˜๋ฉด DB์—์„œ ์„ฑ๋Šฅ ํ–ฅ์ƒ




์œ„์˜ ์„ค๋ช…๋งŒ ๋ณด๋ฉด, ์™œ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜๋Š”์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ์ง€ ์•Š๋‹ค.

์ข€ ๋” ์•Œ์•„๋ณด์ž,



@Transactional์€ ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ๋ฉ”์†Œ๋“œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฉ”์„œ๋“œ์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์–ด๋…ธํ…Œ์ด์…˜์ด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„๋‹ค.


  • ๋ณดํ†ต ํด๋ž˜์Šค์— @Transactional(readOnly = true)๋ฅผ ์„ ์–ธํ•ด๋†“๊ณ , ์—”ํ‹ฐํ‹ฐ์˜ ๋“ฑ๋ก, ์ˆ˜์ •, ์‚ญ์ œ๊ฐ€ ๋™์ž‘๋˜๋Š” ๋ฉ”์„œ๋“œ์— @Transactional๋ฅผ ์„ ์–ธํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.



์ด ๋ฐฉ์‹์„ ์šฐ๋ฆฌ๋Š” ์„ ์–ธ์  ํŠธ๋žœ์žญ์…˜์ด๋ผ ๋ถ€๋ฅด๋ฉฐ, ์ ์šฉ๋œ ๋ฒ”์œ„์—์„œ๋Š” ํŠธ๋žœ์žญ์…˜ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋œ ํ”„๋ก์‹œ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์ž๋™์œผ๋กœ commit ํ˜น์€ rollback์„ ์ง„ํ–‰ํ•ด ์ค€๋‹ค.




๊ฒฐ๋ก ์ ์œผ๋กœ @Transactional(readOnly = true) ์„ ์–ธ์„ ํ†ตํ•ด ์ปค๋ฐ‹ ์‹œ flush๋ฅผ ํ•˜์ง€ ์•Š๋Š”๋‹ค.



  • Hibernate๋Š” Entity์— flush๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ฒŒ ๋˜๊ณ , ๋ณ€๊ฒฝ์€ ๋ฌด์‹œ๋œ๋‹ค.

  • ๋˜ํ•œ Entity์™€ Snapshot์„ ๋น„๊ตํ•˜๋Š” ๊ณผ์ •์„ ์ƒ๋žตํ•˜๊ฒŒ ๋˜๋ฉด์„œ ์„ฑ๋Šฅ ์ƒ์˜ ์ด์ ์„ ์–ป๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

profile
์Šต๊ด€์ด ์ „๋ถ€๋‹ค.
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€