@transactional ๋ฐ์ฝ๋ ์ดํฐ๋ ๋ฉ์๋๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ๋์ญ์
์ผ๋ก ๊ฐ์ธ์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค.
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
์ต์
isolation
ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ ์ง์ ํฉ๋๋ค.read committed)
๊ฒฉ๋ฆฌ ์์ค ์ค๋ช
๊ฒฉ๋ฆฌ ์์ค ์ค๋ช
read uncommitted (๊ฐ์ฅ ๋ฎ์)
- ์ปค๋ฐ๋์ง ์์ ๋ฐ์ดํฐ๋ ์ฝ์ ์ ์์
- Dirty Read ๋ฐ์ ๊ฐ๋ฅ
- ๊ฐ์ฅ ๋น ๋ฅด์ง๋ง ์ํํจ
- ์ปค๋ฐ๋ ๋ฐ์ดํฐ๋ง ์ฝ์
- Dirty Read ๋ฐฉ์ง
- Non-repeatable Read ๋ฐ์ ๊ฐ๋ฅ
- ํธ๋์ญ์ ๋ด์์ ๊ฐ์ ๋ฐ์ดํฐ๋ ํญ์ ๊ฐ์ ๊ฐ
- Non-repeatable Read ๋ฐฉ์ง
- Phantom Read ๋ฐ์ ๊ฐ๋ฅ
- ํธ๋์ญ์ ์ด ์ง๋ ฌ๋ก ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋์
- ๋ชจ๋ ์ด์ ํ์ ๋ฐฉ์ง
- ๊ฐ์ฅ ์์ ํ์ง๋ง ๋๋ฆผ
readOnly
์ฝ๊ธฐ ์ ์ฉ ํธ๋์ญ์ ์ผ๋ก ์ค์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ:false
readOnly: true๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ต์ ํ๋ฅผ ์ํํ์ฌ ์ฑ๋ฅ์ด ํฅ์๋ ์ ์์ต๋๋ค.dbPreset
์ฌ์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ฆฌ์ ์ ์ง์ ํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ:"w" (์ฐ๊ธฐ์ฉ DB)
์ ์ฒด ์ต์ ์์
ํธ๋์ญ์ ๋์ ๋ฐฉ์
์๋ ์ปค๋ฐ/๋กค๋ฐฑ
ํธ๋์ญ์ ์ค์ฒฉ
๊ฐ์ dbPreset์ ํธ๋์ญ์ ์ ์ฌ์ฌ์ฉ๋ฉ๋๋ค:๋ค๋ฅธ Preset์ ํธ๋์ญ์
๋ค๋ฅธ dbPreset์ ๋ณ๋์ ํธ๋์ญ์ ์ ์์ฑํฉ๋๋ค:๋ค๋ฅธ ๋ฐ์ฝ๋ ์ดํฐ์ ํจ๊ป ์ฌ์ฉ
@api์ ํจ๊ป
@cache์ ํจ๊ป
@upload์ ํจ๊ป
AsyncLocalStorage
@transactional์ Node.js์ AsyncLocalStorage๋ฅผ ์ฌ์ฉํ์ฌ ํธ๋์ญ์
์ปจํ
์คํธ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
์ปจํ ์คํธ ์์ฑ
์ปจํ ์คํธ ์ฌ์ฌ์ฉ
์๋ฌ ์ฒ๋ฆฌ
์๋ ๋กค๋ฐฑ
์๋ ๋กค๋ฐฑ
๋ช ์์ ์ผ๋ก ๋กค๋ฐฑ์ด ํ์ํ ๊ฒฝ์ฐ ์๋ฌ๋ฅผ throwํ์ธ์:์ฃผ์์ฌํญ
1. BaseModelClass์์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
2. ๊ธด ํธ๋์ญ์ ์ฃผ์
3. ์ธ๋ถ API ํธ์ถ ์ฃผ์
๋ก๊น
@transactional ๋ฐ์ฝ๋ ์ดํฐ๋ ์๋์ผ๋ก ๋ก๊ทธ๋ฅผ ๋จ๊น๋๋ค:
์์ ๋ชจ์
- ๊ณ์ข ์ด์ฒด
- ์ฃผ๋ฌธ ์ฒ๋ฆฌ
- ๋ณต์กํ ๋ณด๊ณ ์
- ๋ฐฐ์น ์ฒ๋ฆฌ
๋ค์ ๋จ๊ณ
@api
API ์๋ํฌ์ธํธ ๋ง๋ค๊ธฐ
@upload
ํ์ผ ์
๋ก๋ API ๋ง๋ค๊ธฐ
Database ๊ฐ์ด๋
Puri ์ฟผ๋ฆฌ ๋น๋ ์ฌ์ฉํ๊ธฐ
์๋ฌ ์ฒ๋ฆฌ
์๋ฌ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ ๋ฐฐ์ฐ๊ธฐ