[ETC] ORM
ORM(Object-Relational Mapping)
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์์ ๊ฐ์ฒด(Object)์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(Relational Database, RDB)์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ๋งคํํด์ฃผ๋ ๊ธฐ์ ์ด๋ค.
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ณ , ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ
์ด๋ธ์ ์ฌ์ฉํ๋ค.
๊ฐ์ฒด ๋ชจ๋ธ๊ณผ ๊ด๊ณํ ๋ชจ๋ธ ๊ฐ์ ๋ถ์ผ์น๊ฐ ์กด์ฌํ๋ค.
ORM์ ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ฐํ์ผ๋ก SQL์ ์๋์ผ๋ก ์์ฑํ์ฌ ๋ถ์ผ์น๋ฅผ ํด๊ฒฐํ๋ค.
ORM ์ฅ์
- ๊ฐ์ฒด ์งํฅ์ ์ธ ์ฝ๋๋ก ์ธํด ๋ ์ง๊ด์ ์ด๊ณ ๋น์ฆ๋์ค ๋ก์ง์ ๋ ์ง์คํ ์ ์๋ค.
- SQL์ ์ ์ฐจ์ /์์ฐจ์ ์ ๊ทผ์ด ์๋ ์ค์ง ๊ฐ์ฒด์งํฅ์ ์ ๊ทผ์ผ๋ก ์ธํด ์์ฐ์ฑ์ด ์ฆ๊ฐํ๋ค.
- ๊ฐ ๊ฐ์ฒด๋ณ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ฏ๋ก ๊ฐ๋ ์ฑ์ ์ฌ๋ ค์ค๋ค.
- ์ฌ์ฌ์ฉ ๋ฐ ์ ์ง๋ณด์์ ํธ๋ฆฌ์ฑ์ด ์ฆ๊ฐํ๋ค.
- ORM์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑ๋์ด์๊ณ ํด๋น ๊ฐ์ฒด๋ค์ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- DBMS์ ๋ํ ์ข
์์ฑ์ด ์ค์ด๋ ๋ค.
- ๋๋ถ๋ถ์ ORM์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋น์ข ์์ ์ด๋ค.
ORM ๋จ์
- ORM์ผ๋ก๋ง ์๋น์ค๋ฅผ ๊ตฌํํ๊ธฐ๊ฐ ์ด๋ ต๋ค.
- ๋ณต์ก์ฑ์ด ์ปค์ง์๋ก ๋์ด๋๊ฐ ์ฆ๊ฐํ๊ณ ๋ถ์กฑํ ์ค๊ณ๋ก ์๋ชป ๊ตฌํ๋ ๊ฒฝ์ฐ ์๋ ์ ํ ๋ฐ ์ผ๊ด์ฑ์ด ๋ฌด๋์ง๋ ๋ฌธ์ ์ ์ด ์๊ธธ ์ ์๋ค.
- ํ๋ก์์ ๊ฐ ๋ง์ ์์คํ
์์๋ ORM์ ๊ฐ์ฒด ์งํฅ์ ์ธ ์ฅ์ ์ ํ์ฉํ๊ธฐ๊ฐ ์ด๋ ต๋ค.
- ํ๋ก์์ ๋ฅผ ๋ค์ ๊ฐ์ฒด๋ก ๋ฐ๊ฟ์ผํ๋ฉฐ, ๊ทธ ๊ณผ์ ์์ ์์ฐ์ฑ ์ ํ๋ ๋ฆฌ์คํฌ๊ฐ ๋ง์ด ๋ฐ์ํ ์ ์๋ค.
ORM ์ข ๋ฅ
- JAVA: Hibernate, JPA
- Python(Django): ๋ด์ฅ ORM
- Node.js: Sequalize
- PHP(Laravel): Eloquent ORM
์ด ์ธ์๋ ๋ค์ํ ORM์ด ์กด์ฌํ๋ค.
Leave a comment