Dirty Checking

์ •์˜

  • Entity ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ORM์—์„œ ๊ฐ์ฒด์˜ ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ

  • ์˜์†์„ฑ(Persistence) ์ปจํ…์ŠคํŠธ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” Entity์—๋งŒ ์ ์šฉ๋œ๋‹ค.

    • Entity์˜ ์˜์†์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

      • DB์— ๋ฐ˜์˜๋˜๊ธฐ ์ „ ์ฒ˜์Œ ์ƒ์„ฑ๋œ Entity (๋น„์˜์†)

      • detach๋œ Entity (์ค€์˜์†)

      • DB์— ๋ฐ˜์˜๋œ Entity (์˜์†)

Flow

  1. Entity ์กฐํšŒ ์‹œ ํ•ด๋‹น ์—”ํ‹ฐํ‹ฐ์˜ ์ƒํƒœ๋ฅผ ์Šค๋ƒ…์ƒท์œผ๋กœ ๋งŒ๋“ ๋‹ค.

  2. ์ด ์Šค๋ƒ…์ƒท์„ Transaction์ด ๋๋‚˜๋Š” ์‹œ์ ์— ํ•ด๋‹น Entity์˜ ์ƒํƒœ์™€ ๋น„๊ตํ•˜์—ฌ ๋ณ€ํ™”๊ฐ€ ์žˆ๋‹ค๋ฉด DB์— update query๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

Update Logic

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ํ•„๋“œ์˜ update๊ฐ€ ์ˆ˜ํ–‰๋œ๋‹ค.

    • ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ•ญ์ƒ ๋™์ผํ•œ query๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์–ด Boot ์‹คํ–‰ ์‹œ์ ์— ๋ฏธ๋ฆฌ query๋ฅผ ๋งŒ๋“ค์–ด ๋‘˜ ์ˆ˜ ์žˆ๊ณ , ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ

  • ๋งŒ์•ฝ ์ผ๋ถ€๋งŒ updateํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด @DynamicUpdate๋ฅผ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

Last updated