[Sequelize] ํธ๋์ญ์
์ผ๋ จ์ DB ์์ ์์ ๋ค์ ํํ๋ค๋ณด๋ฉด, ๊ทธ๊ฑธ ํ๋์ ์์ ํ ์์ ๋จ์๋ก์ ๋ฌถ์ด์ผ ํ ๊ฒฝ์ฐ๊ฐ ๋น๋ฒํ๋ค.
๊ฐ๋ น, ์ด๋ค ๋ก์ง์์ ์์ ์์
A์ B๋ฅผ ์ํํ๋ค๊ณ ์น์. ์ฌ๊ธฐ์ A์ B๋ ๋ฐ๋์ ๋ ๋ค ์ํ๋๊ฑฐ๋ ์๋๋ฉด ๋ ๋ค ์ํ๋์ง ์์์ผ ํ๋ค.
๊ทธ๋ฐ๋ฐ ๊ฐ์๊ธฐ A์์ ์์ฌ๋ฆฌ๊ฐ ๋์ B๊ฐ ์คํ๋์ง ๋ชปํ๋ค๋ฉด? A๋ฅผ ์ด์คํ๊ฒ ์์ ํ ๊ฒฐ๊ณผ๊ฐ ๋จ์ ์ํ์์ B๋ง ์ํ๋์ง ์์ ์ํ๊ฐ ๋๋ค.
์ด๊ฒ ๋ญ๋ ๋ง์ธ๊ฐ?
์ด๋ฐ ์ฌํ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ๋ฌ ์ฟผ๋ฆฌ ์์
๋ค์ ํ๋์ ๋จ์๋ก ๋ฌถ๊ณ , ๊ทธ ์์ฒด๋ก ์์์ฑ์ ๊ฐ์ง๋๋ก ํ๋ ๊ฒ์ด ๋ฐ๋ก ํธ๋์ญ์
์ด๋ค. ํธ๋์ญ์
์ผ๋ก ์ ๋ฌถ์ธ ์์
๋ค์ ๋ฐ๋ก DB์ ๋ฐ์์ด ๋์ง ์๋๋ค.
์ ๋ถ ์ฑ๊ณตํ์ ๊ฒฝ์ฐ์๋ง commit์ผ๋ก ์์ ํ ๋ฐ์ํ๊ณ , ๋ฌธ์ ๊ฐ ํ๋๋ผ๋ ๋ฐ์ํด์ ๋๊ฒผ์ ๊ฒฝ์ฐ์ rollback์ผ๋ก ์ ๋ถ ๋ ๋ ค๋ฒ๋ฆฐ๋ค.
์ํ๋ผ์ด์ฆ์์๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ฐ๊ธฐ ์ฝ๊ฒ ์ ๊ณตํ๋ค.
์จ๋ณด์.
์ฐ์ ์ฐ๊ฒฐ๋ถํฐ ๋ง๋ ๋ค.
๊น๋นกํ๊ณ host๋ฅผ ์๋ฃ์๋๋ฐ ์ ๋ฃ๊ธธ ๋ฐ๋๋ค.

ํธ๋์ญ์ ์ ํฌํจํ ์ฟผ๋ฆฌ๋ฅผ ์ํํ๊ธฐ ์ ์, ํธ๋์ญ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.

๊ทธ๋ฆฌ๊ณ ํธ๋์ญ์
์ ํฌํจ์ํฌ ์ฟผ๋ฆฌ ๋ฉ์๋๋ง๋ค, ๋ง์ง๋ง object ์ธ์๋ก ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
ํค๊ฐ์ transaction์ด๋ค.
๋ raw ์ฟผ๋ฆฌ๋ฌธ์ ์ผ์ง๋ง, ORM ์ฒ๋ฆฌ ๋ฉ์๋๋ค์๋ ๊ณตํต์ ์ผ๋ก ์ ์ฉํ ์ ์๋ค.
์ด๋ ๊ฒ ๋ง์ด๋ค.
๊ณต์ ๋งค๋ด์ผ์ ์๋ ์์ ๋ค.
๊ทธ๋์ ๋๋ต, ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ๋๋ค.
์ฟผ๋ฆฌ ์ํ๋ฌธ๋ค์ ์ ๋ถ ์์ธ์ฒ๋ฆฌ๊ตฌ๋ฌธ์ผ๋ก ๋ฌถ์ด๋๊ณ , catch๋ก ์ด๋ํ์ง ์์ผ๋ฉด ์ ์ํ๋ ๊ฒ์ด๋, commit์ผ๋ก ์์ ์ ์ฉ.
์์ธ ๋ฐ์์์ ๋ญ๊ฐ ํํฌ๊ฐ ๋ ๊ฒ์ด๋ rollback์ผ๋ก ์ ๋ถ ์์๋ณต๊ตฌํ๋ค.
์ ์ฝ๋๋ฅผ ๋๋ฆฌ๋ฉด
์ด๋ฏธ id๋ ๊ธฐ๋ณธํค๊ฐ์ผ๋ก ์ ์ผํ๊ธฐ ๋๋ฌธ์, ์ฒซ๋ฒ์งธ ์ฟผ๋ฆฌ๋ ์ฝ์ ์ ์คํจํ๋ค.

์ด๋ ๊ฒ ๋ง์ด๋ค.
๊ทธ๋ฆฌ๊ณ ํ
์ด๋ธ์ ์ฝ์ด๋ณด๋ฉด ์๋ฌด๊ฒ๋ ๋ฌ๋ผ์ง ๊ฒ์ด ์๋ค.
ํ์ง๋ง ๋ฌธ์ ์์ด ๋์๊ฐ๋๋ก ํ๋ค๋ฉด

์ปค๋ฐ๋๊ณ ,
์ค์ ๋ก๋ ๋ฐ์์ด ์ ๋ ๊ฒ์ด๋ค.
๊ด๋ฆฌ๋๋ ํธ๋์ญ์
์์์๋ ํธ๋์ญ์
๊ฐ์ฒด๋ฅผ ์ป์ด์ ์์ผ๋ก ํ๋ํ๋ commit๊ณผ rollback์ ์ํํ์๋ค.
ํ์ง๋ง ์ํ๋ผ์ด์ฆ์์๋ ๋ณด๋ค ์๋ํ๋ ๊ฐํธํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
transaction ๋ฉ์๋์ ๋ค๋ฅธ ์ค๋ฒ๋ก๋ ๋ฒ์ ์ ์ฌ์ฉํ๋ฉด, ์ด๊ฑด ์ฟผ๋ฆฌ๋ฌธ๋ค์ ์คํํ๋ ์ฝ๋ฐฑํจ์๋ฅผ ๋ฐ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํด๋น ์ฝ๋ฐฑํจ์์์ ๋ญ๋ผ๋ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด rollback์ ์ํํ๊ณ ,
๋ฌธ์ ์์ด ์ข
๋ฃ๋๋ฉด commit์ ์ํํ๋ ํํ๋ค.
๊ทธ๋์ ์๋์ผ๋ก ๋ฐ์ํ๋ ์์ธ ์ด์ธ์, ์์๋ก rollback์ ์ํค๋ ค๋ฉด ์ง์ ์์ธ๋ฅผ ๋์ ธ์ผ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ ํจ์ ๋ด์์๋ commit๊ณผ rollback์ ์ง์ ์ฌ์ฉํ๋ฉด ์ ๋๋ค!
์ค์ง ์์ธ๋ฅผ ํตํด์๋ง ๊ฐ์ ์ ์ผ๋ก ๋ฐ์์์ผ์ผ ํ๋ค.
์ฌํผ ๊ทธ๋๋ก ์คํ์ํค๋ฉด, ์ ๊ธฐ์๋ id 1๊ฐ์ด ์ด์ ๊ณผ ๋์ผํ๊ฒ ๊ณ ์ ํค์ ์ถฉ๋ํ๋ฏ๋ก, ๋กค๋ฐฑ์ด ๋ฐ์ํ๋ค.

๊ทธ๋ ๋ค.
์ฐธ์กฐ
https://sequelize.org/master/manual/transactions.html