ORM์ด๋?
ORM(Object Relational Mapping)์ ๊ฐ์ฒด์ ๊ด๊ณ์์ ์ค์ ์ ์๋ฏธํ๋ค.
๋ ์์ธํ ๋งํ์๋ฉด, ๋งํ๋ ๊ฐ์ฒด(Object)๋ OOP (Object_Oriented Programming)์ ๊ฐ์ฒด๋ก ๊ตฌํ๋๋ ํด๋์ค์ RDB (Realational DataBase)์์ ์ฐ๋ ๋ฐ์ดํฐ์ธ ํ ์ด๋ธ์ ์๋์ ์ฐ๊ฒฐํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ํด๋์ค์ ํ ์ด๋ธ์ ์๋ก ํธํ๊ฐ๋ฅ์ฑ์ ๋๊ณ ๋ง๋ค์ด์ง ๊ฒ์ด ์๋๊ธฐ๋๋ฌธ์ ์ผ์นํ์ง ์๋๋ฐ, ์ด๋ฅผ ORM์ ํตํด ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ฐํ์ผ๋ก SQL๋ฌธ์ ์๋์ผ๋ก ์์ฑํ์ฌ ๋ถ์ผ์น๋ฅผ ํด๊ฒฐํ๋ค.
ORM์ ์ฅ์
1. ๊ฐ์ฒด ์ ํฅ์ ์ธ ์ฝ๋๋ก ์ธํด ๋ ์ง๊ด์ ์ด๊ณ ๋น์ฆ๋์ค ๋ก์ง์ ๋ ์ง์คํ ์ ์๊ฒ ๋์์ค๋ค.
- ORM์ ์ด์ฉํ๋ฉด SQL๋ฌธ์ด ์๋ ์ง๊ด์ ์ธ ์ฝ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ์ฌ, ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ง์คํ ์ ์๋ค.
- ์ ์ธ๋ฌธ, ํ ๋น, ์ข ๋ฃ ๊ฐ์ ๋ถ์์ ์ธ ์ฝ๋๋ฅผ ์ค์ผ ์ ์๋ค.
- ๊ฐ์ข ๊ฐ์ฒด์ ๋ํ ์ฝ๋๋ฅผ ๋ณ๋๋ก ์์ฑํ์ฌ ๊ฐ๋ ์ฑ์ ๋์ผ ์ ์๋ค.
- SQL์ ์ ์ฐจ์ ์ด๊ณ ์์ฐจ์ ์ธ ์ ๊ทผ์ผ๋ก ๊ฐ์ฒด์งํฅ์ ์ ๊ทผ๋ง ๊ณ ๋ ค๋์ด ์์ฐ์ฑ์ด ์ฆ๊ฐํ ์ ์๋ค.
2. ์ฌ์ฌ์ฉ, ์ ์ง๋ณด์, ๋ฆฌํฉํ ๋ง์ด ํธ๋ฆฌํ๋ค.
- ORM์ ๊ธฐ์กด ๊ฐ์ฒด์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑ๋์ด ์์ด, ํด๋น ๊ฐ์ฒด๋ค์ ์ฌํ์ฉ ํ ์ ์๋ค.
- ๋งคํ์ ๋ณด๊ฐ ๋ช ํํ์ฌ ERD๋ฅผ ๋ณด๋ ์์กด๋๋ฅผ ๋ฎ์ถ ์ ์๋ค.
3. DRMS (DataBase Management System)์ ๋ํ ์ข ์์ฑ์ด ์ค์ด๋ ๋ค.
- ๋๋ถ๋ถ ORM์๋ฃจ์ ์ DB์ ์ข ์์ ์ด์ง ์๋ค. (๊ตฌํ๋ฐฉ๋ฒ๊ณผ ๋ง์ ์๋ฃจ์ , ์๋ฃํ ํ์ ๊น์ง ์ข ์์ ์ด์ง ์๋ค.)
- ๊ฐ๋ฐ์๋ ๊ฐ์ฒด(Object)์ ์ง์คํจ์ผ๋ก์ ๊ทน๋จ์ ์ผ๋ก DBMS๋ฅผ ๊ต์ฒดํ๋ ํฐ ์์ ์๋ ๋ฆฌ์คํฌ๊ฐ ์ ๊ณ ์์์๊ฐ๋ ์ค์ด๋ ๋ค.
- ์๋ฐ์์ ๊ฐ๊ณตํ ๊ฒฝ์ฐ equals, hashCode์ ์ค๋ฒ๋ผ์ด๋ ๊ฐ์ ๊ธฐ๋ฅ์ ์ด์ฉํ ์ ์๊ณ ๋น ๋ฅด๊ฒ ๊ฐ๊ณตํ ์ ์๋ค.
ORM์ ๋จ์
1. ORM์ผ๋ก๋ง ์๋น์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ด๋ ต๋ค.
- ์ฌ์ฉํ๊ธฐ๋ ํธ๋ฆฌํ์ง๋ง, ์ค๊ณ๋ ๋งค์ฐ ์ ์คํ๊ฒ ํด์ผํ๋ค.
- ํ๋ก์ ํธ ๋ณต์ก์ฑ์ด ์ปค์ง ๊ฒฝ์ฐ ๋์ด๋ ๋ํ ์ฌ๋ผ๊ฐ๋ฉฐ, ๋ถ์กฑํ ์ค๊ณ๋ก ์๋ ์ ํ๋ ์ผ๊ด์ฑ์ ๋ฌด๋๋จ๋ฆฌ๋ ๋ฌธ์ ์ ์ด ์๊ธธ ์ ์๋ค.
2. ์ ์ฐจ๊ฐ ๋ง์ ์์คํ ์๋ ORM์ ๊ฐ์ฒด ์งํฅ์ ์ธ ์ฅ์ ์ ํ์ฉํ๊ธฐ ์ด๋ ต๋ค.
- ์ ์ฐจ๊ฐ ๋ง์ ์์คํ ์์๋ ๋ค์ ๊ฐ์ฒด๋ก ๋ฐ๊ฟ์ผํ๋ฉฐ, ๊ทธ ๊ณผ์ ์์ ์์ฐ์ฑ ์ ํ ๋๋ ๋ฆฌ์คํฌ๊ฐ ๋ง์ด ๋ฐ์ํ ์ ์๋ค.
ORM๊ณผ Node.js ํ๋ ์์ํฌ
ORM์ Node.js ์ถ์ํ๊ณ์ธต์ ๊ณ ๋ คํด์ผํ ๊ฐ์ฅ ๋์ ์์ค์ ์ถ์ํ์ด๋ค. ORM์ ์์ ์ฒ๋ผ ๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ฒด์ ๋งคํํ๋ ๊ฒ์ด๋ค. Node.js ORM, Sequelize๋ Postgres, MySQL, MariaDB, SQLite ๋ฑ์ ์ง์ํ๋ Promize์ ๊ธฐ๋ฐํ ๋น๋๊ธฐ๋ก ๋์ํ๋ค.
์๋์ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑ๋์์ต๋๋ค.
https://yceffort.kr/2021/07/dont-use-nodjs-orm
'๊ฐ๋ฐ ์ด์ผ๊ธฐ > ํญํด99' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํญํด99] 8์ฃผ์ฐจ(์ค์ 1์ฃผ์ฐจ) - HTTPS_crbug ์ด์ (0) | 2022.05.01 |
---|---|
[ํญํด99] 6์ฃผ์ฐจ - CORS ๋? (0) | 2022.04.10 |
[ํญํด99] 4์ฃผ์ฐจ - package.json์ด๋? (0) | 2022.03.27 |
[ํญํด99] 3์ฃผ์ฐจ - ์๋ฐ์คํฌ๋ฆฝํธ ES5์ ES6์ ๋ฌธ๋ฒ์ฐจ์ด (0) | 2022.03.20 |
[ํญํด99] 2์ฃผ์ฐจ - JWT(JSON Web Token)๋? (0) | 2022.03.13 |