ORM? ๋ ์ง์ ์งค๋
์ฒ์์๋ ํด๊ฒฐํ๊ณ ์ ํ๋ ๋ฒ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ORM์ด ํ์์๋ค๊ณ ์๊ฐํ๋ค.
์ฟผ๋ฆฌ๋ ์ง์ ์ง๋ฉด ๋๊ณ , ์คํ๋ ค ํ๊ฒฝ ๊ตฌ์ถ์ ๋ณต์ก์ฑ์ด ๋ ๋๋ค๊ณ ์๊ฐํ๋ค.
๊ทธ๋์ JdbcTemplate, SimpleJdbcInsert ํด๋์ค๋ฑ์ผ๋ก DAO๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ค.
์ฒ์์๋ ๋ถ๋ช ํฉ๋ฆฌ์ ์ด์๋ค.
์ง์ง? ํ์ดํ !! ใ .ใ
๋ฐ๋ณต๋๋ ์ฝ๋
JdbcTemplate์ ์ด์ฉํ๋ ์ฝ๋๋ ๊ฑฐ์ ๋น์ทํ๋ค. ์ฝ๊ธฐ, ์ฐ๊ธฐ, ๊ฐ๋ ์ข ๋ณต์กํ ์ฝ๊ธฐ ๋ฑโฆ
์ฃผ๋ก ๋ณํ๋ ๊ฒ์ ๋์์ด ๋๋ ๊ฐ์ฒด ๊ทธ๋ฆฌ๊ณ ํ ์ด๋ธ์ด๋ค.
ํ์ง๋ง ์๋ตํ ์ ์๋ ๋ฐ๋ณต ์์ ์ด ์กด์ฌํ๋ค.
์๋ตํ ์ ์๋ ํ ์คํธ ์ฝ๋
์ฟผ๋ฆฌ๋ฅผ ์ง์ ์ง๋ค๋ณด๋, ์ฌ๋ฌ ์ํฉ์์ ์ค์ ๋ก ๋์ํ๋์ง ๋ฏฟ๊ธฐ๊ฐ ์ด๋ ค์ ๋ค.
์ฟผ๋ฆฌ๋ ๋ฌธ์์ด๋ก ๊ด๋ฆฌ๋๋ฏ๋ก ํด๋จผ ์๋ฌ๊ฐ ๋ฐ์ํ๊ธฐ ์ญ์์ด์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ ์ฟผ๋ฆฌ ์์ฑ ํ์๋ ์ด ์ฟผ๋ฆฌ๊ฐ ์ดํ๋ฆฌ์ผ์ด์ ๊ณผ ์ ์ด์ฐ๋ฌ์ง๋์ง ํ์ธํ๊ธฐ ์ํด ๊ฐ์ข ํ ์คํธ๋ฅผ ์์ฑํ๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด ํ๋ก๋์ ํ๊ฒฝ์์ ์ฅ์ ๊ฐ ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. (์ค์ ๋ก ๊ทธ๋ฌ๋ ์ ๋ ์๋ค)
ํ ์คํธ์ ํ๋ก๋์ ๊ฐ๋ฐ์ ์ฃผ๊ฐ์ ๋
์ด๋ ๊ฒ ์ด์ฌํ ์์ฑํ DAO ํ ์คํธ ์ฝ๋๋ค์ ์๊ตฌ์ฌํญ์ด ๋ฐ๋๋ฉด ๊นจ์ง๊ธฐ ์ญ์์ด๋ค.
๋ ๋ค์ ์ค๋ฅ ์ํฉ๋ค์ ๊ณ ๋ คํ๊ณ , ์ฃ์ง ์ผ์ด์ค๋ฅผ ๊ณ ๋ คํด์ ํ ์คํธ๋ฅผ ์ง์ผ ํ๋ค.
๋ญ๊ฐ ๋ชจ์๋๋ ๋๋์ด ๋ค์๋ค.
์ค์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ ์๊ฐ๋ณด๋ค ์ฟผ๋ฆฌ ๋ฐ DAO ๊ฐ์ฒด ํ ์คํธ๋ฅผ ์์ฑํ๋ ์๊ฐ์ด ํจ์ฌ ๊ธธ์๋ค.
๊ฒ๋ค๊ฐ, ์๊ตฌ์ฌํญ ๋ฐ์์ ์ํด ์ฟผ๋ฆฌ๋ฅผ ์์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ถ๋ถ์ ๋น์ฆ๋์ค๊ฐ ์์ํ ๊ณ์ธต๊น์ง ๋ด๋ ค๊ฐ์๋ค๋ ๊ฒ์ ์์์ฑ ์ ์์๋ค.
๊ฐ์ฒด ๋น๊ต
์ค๋ต๊ฒ์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ Java๋ก ์์ฑํ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋จ์ด๋ค.
๋ฐ๋ผ์ ์์ํ์ ๋์์ ๊ฐ์ฒด์ด๋ฉฐ, RDB์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๊ณ ์๋ค.
HTTP ํ๋กํ ์ฝ์ ๋ฌด์ํ์ฑ๊ณผ ๋ฉ๋ชจ๋ฆฌ์ ํ๋ฐ์ฑ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฐ๋ฐ DB์ ๋ด๊ถ๋ค ๋บ ๊ฐ์ฒด๋ค์ ์ด๋ป๊ฒ ๋น๊ตํ ์ ์์๊น? ๋์ผ์ฑ์ ์ด๋ป๊ฒ ๋ณด์ฅํ ์ ์์๊น?
๋ฌผ๋ก Equals & HashCode๋ฅผ ์ฌ์ ์ํ๊ณ , Id ์์ฑ์ ๋น๊ตํ ์๋ ์๋ค.
ํ์ง๋ง ๋ชจ๋ ๊ฐ์ฒด๋ค์ Id ์์ฑ์ผ๋ก ๋น๊ตํ ์๋ ์๋ค.
Id ์์ฑ ์ ๋ฌด,
JPA๋ 1์ฐจ ์บ์๋ฅผ ๊ฐ์ง๋ค.
๋ณต์กํ ๊ฐ์ฒด์ ์์ํ
๋ณต์กํ ๊ฐ์ฒด๋ฅผ DB์์ ๋ฝ์ผ๋ ค๋ฉด ์ฌ๋ฌ DAO๋ฅผ ์กฐํฉํด์ผ ํ๋ค.
์ด๊ฑธ ์กฐํฉํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ๋ ๊ฒ๋ ๋ณดํต ์ผ์ด ์๋๋ค.
์ฌ๋ฌ DAO ๊ฐ์ฒด๋ฅผ ์กฐํฉํ๊ณ , ๊ฐ์ฒด๋ฅผ ๋งคํํ๋ ๋ฐฉ๋ฒ๋ ๋ณต์กํ๊ฒ ์ ์ํด์ผ ํ๋ค.
๋ฌผ๋ก ๊ฐ๋ฅํ์ง๋ง, ์ด๊ณณ์ ์๋ ์๊ฐ์ด ์๊น๋ค๊ณ ๋๊ผ๋ค.
์ด๋๋ก๋ ์๋๋ค
DAO ์์ฑ๊ณผ ํ ์คํธ๊ฐ ๋๋ฌด ๊ท์ฐฎ๊ณ ์ค๋๊ฑธ๋ฆฌ๊ณ ํ๋ค๋ค.
์ด๊ฑธ ์ฌ์ฉํ๋ ์๋น์ค ๊ณ์ธต์ ํ ์คํธ๋ ๋ง๋ง์ฐฎ๋ค.
์ด๋ฐ ์๋ชจ์ ์ธ ํ๊ฒฝ์ ํด๋จผ ์๋ฌ๋ค์ ์ผ๊ธฐํ ๊ฒ์ด๋ค.
โ์ ์ด๊ฑด ๋น์ฐํ ์ ๋๊ฒ ์งโฆโ
โํ ์คํธ ์์ฑ ๋๋ ๊ฒ ๊ฐ์๋ฐ ์ค์บ ์ฐ์ฐํ์ง?โ (โ ์ค์ ๋ก ํ ์คํธ ์ผ์ด์ค ๋น ๋จ๋ ธ์)
โ์ ์๊ตฌ์ฌํญ ๋ฐ๋์๋ค.. ์ด ๋ถ๋ถ ํ ์คํธ ๋ค์ ์ง์ผ๊ฒ ๋คโ
์ด๋ ๊ฒ ๋ฏธ์ฒ ํ ์คํธํ์ง ๋ชปํ ์ผ์ด์ค๊ฐ ํ๋์ฉ ์์ฌ ํฐ ๊ฒฐํจ์ด ์๊ธธ ์๋ ์๋ค.
๊ทธ๋์ ์ด๋ฐ ์ ์ํ์ ๋๊ณ ์ ORM์ ๋์ ํ๊ธฐ๋ก ํ๋ค.
๊ฒฐ๊ณผ
๊ธฐ์กด์ ์์ฑํ๋ ๋จ์ ์ ์ฅ/์กฐํ DAO๋ค๊ณผ ๊ทธ ํ ์คํธ๋ฅผ ์ ๊ฑฐํ๊ณ , ์ผ๋ถ๋ง ๋จ์๋ค.
์์ผ๋ก ์ดํ๋ฆฌ์ผ์ด์ ์ฝ๋ ์์ฑ๊ณผ ๊ทธ ํ ์คํธ์ ๋ ์ง์คํ ์ ์์๊ฑฐ๋ ํฌ๋ง์ด ์์๋ค.
๋์์, ๋๋ฉ์ธ ๊ฐ์ฒด๋ค์๋ ์ํฅ์ด ์์๋ค.
์ฌ์ค JPA ์ด๋ ธํ ์ด์ ์ด ๋ถ์ด ์์กด์ฑ์ด ์๊ธฐ๊ธด ํ์ง๋ง, ์ ์ฐ์ฑ์ด ํฌ์๋์ง๋ ์์๋ค๊ณ ์๊ฐํ๋ค.
JPA ์ปจํ ์คํธ ์์ด๋ ํด๋น ๊ฐ์ฒด๋ค์ ์ฌ์ฉํ๋ ๋ฐ ์๋ฌด ๋ฌธ์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ ๋์ ํ๋ค๋ ์๊ฐ์ด ๋ค์์ง๋ง, ์์ฌํ ์๋ ์๋ค.
JPA๋ฅผ ์์ฃผ ๋น ์ญํ๊ฒ ์์ง๋ ๋ชปํ๊ธฐ ๋๋ฌธ์ ํญ์ ๋ถ์์ฉ์ ๊ฒฝ๊ณํ๊ณ , ๊ธฐ๋ฅ๋ค์ ๋ณด์์ ์ผ๋ก ์ฌ์ฉํด์ผ ํ๊ฒ ๋ค.