Skip to main content
@transactional ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๊ฐ์‹ธ์„œ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

์˜ต์…˜

isolation

ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ๊ฐ’: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋ณธ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€ (PostgreSQL: read committed)
read uncommitted (๊ฐ€์žฅ ๋‚ฎ์Œ)
  • ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋„ ์ฝ์„ ์ˆ˜ ์žˆ์Œ
  • Dirty Read ๋ฐœ์ƒ ๊ฐ€๋Šฅ
  • ๊ฐ€์žฅ ๋น ๋ฅด์ง€๋งŒ ์œ„ํ—˜ํ•จ
read committed (๊ธฐ๋ณธ๊ฐ’)
  • ์ปค๋ฐ‹๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ฝ์Œ
  • Dirty Read ๋ฐฉ์ง€
  • Non-repeatable Read ๋ฐœ์ƒ ๊ฐ€๋Šฅ
repeatable read
  • ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋Š” ํ•ญ์ƒ ๊ฐ™์€ ๊ฐ’
  • Non-repeatable Read ๋ฐฉ์ง€
  • Phantom Read ๋ฐœ์ƒ ๊ฐ€๋Šฅ
serializable (๊ฐ€์žฅ ๋†’์Œ)
  • ํŠธ๋žœ์žญ์…˜์ด ์ง๋ ฌ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘
  • ๋ชจ๋“  ์ด์ƒ ํ˜„์ƒ ๋ฐฉ์ง€
  • ๊ฐ€์žฅ ์•ˆ์ „ํ•˜์ง€๋งŒ ๋А๋ฆผ

readOnly

์ฝ๊ธฐ ์ „์šฉ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: false
readOnly: true๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

dbPreset

์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ”„๋ฆฌ์…‹์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: "w" (์“ฐ๊ธฐ์šฉ DB)

์ „์ฒด ์˜ต์…˜ ์˜ˆ์‹œ

ํŠธ๋žœ์žญ์…˜ ๋™์ž‘ ๋ฐฉ์‹

์ž๋™ ์ปค๋ฐ‹/๋กค๋ฐฑ

ํŠธ๋žœ์žญ์…˜ ์ค‘์ฒฉ

๊ฐ™์€ dbPreset์˜ ํŠธ๋žœ์žญ์…˜์€ ์žฌ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค:
๋กœ๊ทธ ์ถœ๋ ฅ:

๋‹ค๋ฅธ Preset์˜ ํŠธ๋žœ์žญ์…˜

๋‹ค๋ฅธ dbPreset์€ ๋ณ„๋„์˜ ํŠธ๋žœ์žญ์…˜์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค:

๋‹ค๋ฅธ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ

@api์™€ ํ•จ๊ป˜

์ˆœ์„œ ์ค‘์š”: @api๋ฅผ ๋จผ์ €, @transactional์„ ๋‚˜์ค‘์— ์ž‘์„ฑํ•˜์„ธ์š”.

@cache์™€ ํ•จ๊ป˜

@upload์™€ ํ•จ๊ป˜

AsyncLocalStorage

@transactional์€ Node.js์˜ AsyncLocalStorage๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋žœ์žญ์…˜ ์ปจํ…์ŠคํŠธ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ปจํ…์ŠคํŠธ ์ƒ์„ฑ

์ปจํ…์ŠคํŠธ ์žฌ์‚ฌ์šฉ

์—๋Ÿฌ ์ฒ˜๋ฆฌ

์ž๋™ ๋กค๋ฐฑ

์ˆ˜๋™ ๋กค๋ฐฑ

๋ช…์‹œ์ ์œผ๋กœ ๋กค๋ฐฑ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์—๋Ÿฌ๋ฅผ throwํ•˜์„ธ์š”:

์ฃผ์˜์‚ฌํ•ญ

1. BaseModelClass์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

2. ๊ธด ํŠธ๋žœ์žญ์…˜ ์ฃผ์˜

3. ์™ธ๋ถ€ API ํ˜ธ์ถœ ์ฃผ์˜

๋กœ๊น…

@transactional ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋Š” ์ž๋™์œผ๋กœ ๋กœ๊ทธ๋ฅผ ๋‚จ๊น๋‹ˆ๋‹ค:

์˜ˆ์‹œ ๋ชจ์Œ

๋‹ค์Œ ๋‹จ๊ณ„

@api

API ์—”๋“œํฌ์ธํŠธ ๋งŒ๋“ค๊ธฐ

@upload

ํŒŒ์ผ ์—…๋กœ๋“œ API ๋งŒ๋“ค๊ธฐ

Database ๊ฐ€์ด๋“œ

Puri ์ฟผ๋ฆฌ ๋นŒ๋” ์‚ฌ์šฉํ•˜๊ธฐ

์—๋Ÿฌ ์ฒ˜๋ฆฌ

์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• ๋ฐฐ์šฐ๊ธฐ