๐ORM์ด๋?
๐กORM : Object-Relational Mapping(๊ฐ์ฒด-๊ด๊ณ ๋งคํ)
Object : "๊ฐ์ฒด"์งํฅ ์ธ์ด (์๋ฐ, ํ์ด์ฌ)
Relational : "๊ด๊ณํ" ๋ฐ์ดํฐ๋ฒ ์ด์ค (H2, MySQL)
๐ ๋ฐ๋ณต์ ์ด๊ณ ๋ฒ๊ฑฐ๋ก์ด ์ ํ๋ฆฌ์ผ์ด์
๋จ์์์ SQL ์์
์ ์ค์ฌ์ฃผ๊ธฐ ์ํด์ ORM(๊ฐ์ฒด ๊ด๊ณ ๋งคํ)๊ธฐ์ ๋ค์ด ๋ฑ์ฅ ํ๊ฒ ๋ฉ๋๋ค.
- ORM์ ์ด๋ฆ ๊ทธ๋๋ก ๊ฐ์ฒด์ DB์ ๊ด๊ณ๋ฅผ ๋งคํ ํด์ฃผ๋ ๋๊ตฌ์
๋๋ค.
- ๊ฐ์ฒด ์ฆ, ์๋ฐ์ ํด๋์ค์ DB์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋งคํ ํ๋ ค๋ฉด ๋งค์ฐ ๋ฒ๊ฑฐ๋กญ๊ณ ๋ง์ ์์
๋ค์ด ํ์ํ์ง๋ง ORM์ ์ฌ์ฉํ๋ฉด ์ด๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ค๋๋ค.
ORM์ ์ฅ๋จ์
์ฅ์
- ๊ฐ์ฒด ์งํฅ์ ์ธ ์ฝ๋๋ก ์ธํด ๋ ์ง๊ด์ ์ด๊ณ ๋น์ฆ๋์ค ๋ก์ง์ ๋ ์ง์คํ ์ ์๊ฒ ๋์์ค๋๋ค.
- ORM์ ์ด์ฉํ๋ฉด SQL Query๊ฐ ์๋ ์ง๊ด์ ์ธ ์ฝ๋(๋ฉ์๋)๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ ์ ์์ด ๊ฐ๋ฐ์๊ฐ ๊ฐ์ฒด ๋ชจ๋ธ๋ก ํ๋ก๊ทธ๋๋ฐํ๋ ๋ฐ ์ง์คํ ์ ์๋๋ก ๋์์ค๋๋ค.
- ์ ์ธ๋ฌธ, ํ ๋น, ์ข
๋ฃ ๊ฐ์ ๋ถ์์ ์ธ ์ฝ๋๊ฐ ์๊ฑฐ๋ ๊ธ๊ฒฉํ ์ค์ด๋ญ๋๋ค.
- ๊ฐ์ข
๊ฐ์ฒด์ ๋ํ ์ฝ๋๋ฅผ ๋ณ๋๋ก ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ๊ฐ๋
์ฑ์ ์ฌ๋ ค์ค๋ค.
- SQL์ ์ ์ฐจ์ ์ด๊ณ ์์ฐจ์ ์ธ ์ ๊ทผ์ด ์๋ ๊ฐ์ฒด ์งํฅ์ ์ธ ์ ๊ทผ์ผ๋ก ์ธํด ์์ฐ์ฑ์ด ์ฆ๊ฐํ๋ค.
- ์ฌ์ฌ์ฉ ๋ฐ ์ ์ง๋ณด์์ ํธ๋ฆฌ์ฑ์ด ์ฆ๊ฐํฉ๋๋ค.
- ORM์ ๋
๋ฆฝ์ ์ผ๋ก ์์ฑ๋์ด์๊ณ , ํด๋น ๊ฐ์ฒด๋ค์ ์ฌํ์ฉ ํ ์ ์๋ค.
- ๋๋ฌธ์ ๋ชจ๋ธ์์ ๊ฐ๊ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ปจํธ๋กค๋ฌ์ ์ํด ๋ทฐ์ ํฉ์ณ์ง๋ ํํ๋ก ๋์์ธ ํจํด์ ๊ฒฌ๊ณ ํ๊ฒ ๋ค์ง๋๋ฐ ์ ๋ฆฌํฉ๋๋ค.
- ๋งคํ์ ๋ณด๊ฐ ๋ช
ํํ์ฌ, ERD๋ฅผ ๋ณด๋ ๊ฒ์ ๋ํ ์์กด๋๋ฅผ ๋ฎ์ถ ์ ์์ต๋๋ค.
- DBMS์ ๋ํ ์ข
์์ฑ์ด ์ค์ด๋ญ๋๋ค.
- ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ฐํ์ผ๋ก SQL์ ์๋์ผ๋ก ์์ฑํ๊ธฐ ๋๋ฌธ์ RDBMS์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ Java์ ๊ฐ์ฒด์งํฅ ๋ชจ๋ธ ์ฌ์ด์ ๊ฐ๊ฒฉ์ ์ขํ ์ ์๋ค.
- ๋๋ถ๋ถ ORM ์๋ฃจ์
์ DB์ ์ข
์์ ์ด์ง ์์ต๋๋ค.
- ์ข
์์ ์ด์ง ์๋ค๋๊ฒ์ ๊ตฌํ ๋ฐฉ๋ฒ ๋ฟ๋ง์๋๋ผ ๋ง์ ์๋ฃจ์
์์ ์๋ฃํ ํ์
๊น์ง ์ ํจํฉ๋๋ค.
- ํ๋ก๊ทธ๋๋จธ๋ Object์ ์ง์คํจ์ผ๋ก ๊ทน๋จ์ ์ผ๋ก DBMS๋ฅผ ๊ต์ฒดํ๋ ๊ฑฐ๋ํ ์์
์๋ ๋น๊ต์ ์ ์ ๋ฆฌ์คํฌ์ ์๊ฐ์ด ์์๋ฉ๋๋ค.
- ๋ํ ์๋ฐ์์ ๊ฐ๊ณตํ ๊ฒฝ์ฐ equals, hashCode์ ์ค๋ฒ๋ผ์ด๋ ๊ฐ์ ์๋ฐ์ ๊ธฐ๋ฅ์ ์ด์ฉํ ์ ์๊ณ , ๊ฐ๊ฒฐํ๊ณ ๋น ๋ฅธ ๊ฐ๊ณต์ด ๊ฐ๋ฅํฉ๋๋ค.
๋จ์
- ์๋ฒฝํ ORM ์ผ๋ก๋ง ์๋น์ค๋ฅผ ๊ตฌํํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค.
- ์ฌ์ฉํ๊ธฐ๋ ํธํ์ง๋ง ์ค๊ณ๋ ๋งค์ฐ ์ ์คํ๊ฒ ํด์ผํฉ๋๋ค.
- ํ๋ก์ ํธ์ ๋ณต์ก์ฑ์ด ์ปค์ง๊ฒฝ์ฐ ๋์ด๋ ๋ํ ์ฌ๋ผ๊ฐ ์ ์์ต๋๋ค.
- ์๋ชป ๊ตฌํ๋ ๊ฒฝ์ฐ์ ์๋ ์ ํ ๋ฐ ์ฌ๊ฐํ ๊ฒฝ์ฐ ์ผ๊ด์ฑ์ด ๋ฌด๋์ง๋ ๋ฌธ์ ์ ์ด ์๊ธธ ์ ์์ต๋๋ค.
- ์ผ๋ถ ์์ฃผ ์ฌ์ฉ๋๋ ๋ํ ์ฟผ๋ฆฌ๋ ์๋๋ฅผ ์ํด SP๋ฅผ ์ฐ๋ ๋ฑ ๋ณ๋์ ํ๋์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
- DBMS์ ๊ณ ์ ๊ธฐ๋ฅ์ ์ด์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค. (ํ์ง๋ง ์ด๊ฑด ๋จ์ ์ผ๋ก๋ง ๋ณผ ์ ์๋ค : ํน์ DBMS์ ๊ณ ์ ๊ธฐ๋ฅ์ ์ด์ฉํ๋ฉด ์ด์์ฑ์ด ์ ํ๋๋ค.)
- ํ๋ก์์ ๊ฐ ๋ง์ ์์คํ
์์ ORM์ ๊ฐ์ฒด ์งํฅ์ ์ธ ์ฅ์ ์ ํ์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค.
- ์ด๋ฏธ ํ๋ก์์ ๊ฐ ๋ง์ ์์คํ
์์ ๋ค์ ๊ฐ์ฒด๋ก ๋ฐ๊ฟ์ผํ๋ฉฐ, ๊ทธ ๊ณผ์ ์์ ์์ฐ์ฑ ์ ํ๋ ๋ฆฌ์คํฌ๊ฐ ๋ง์ด ๋ฐ์ํ ์ ์์ต๋๋ค.