hanamon.kr์—์„œ ์ด๋ฏธ์ง€์ฐธ์กฐ

 

 

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

 

Home

yceffort

yceffort.kr

 

+ Recent posts