โ ๋ฌธ์ ์ค๋ช
Spring์์ DB ์ฐ๋ ์, SQL์ ์ง์ ์ ์ดํ๊ณ ๋ณต์กํ ๋ก์ง์ ๊ตฌํํด์ผ ํ ๊ฒฝ์ฐ JPA๋ณด๋ค MyBatis๊ฐ ๋ ์ ํฉํ ์ํฉ์ด ๋ง์
MyBatis๋ ๊ฐ์ฒด ๋งคํ์ ์ง์ํ์ง๋ง, ORM์ด ์๋ SQL ๋งคํผ ํ๋ ์์ํฌ์
๐ ํต์ฌ ๊ฐ๋ ์ ๋ฆฌ
โ MyBatis๋?
· SQL์ ๋ช ํํ๊ฒ ์ง์ ์์ฑํ๊ณ , ๊ฒฐ๊ณผ๋ง ๊ฐ์ฒด๋ก ๋งคํํด์ฃผ๋ SQL ๋งคํผ ํ๋ ์์ํฌ
· ORM(Object-Relational Mapping)์ ์๋๋ฉฐ, SQL ์ค์ฌ์ ์ค๊ณ ๊ตฌ์กฐ
โ ์ฃผ์ ๊ตฌ์ฑ์์
์์ | ์ค๋ช |
Mapper Interface | ์๋ฐ์์ ํธ์ถํ ๋ฉ์๋ ์ ์ |
Mapper XML | ์ค์ SQL ์ ์. ์ฟผ๋ฆฌ ์์ฑ ์์น |
DTO/VO | SQL ๊ฒฐ๊ณผ๋ฅผ ๋งคํํ ์๋ฐ ๊ฐ์ฒด |
SqlSession | Mapper๋ฅผ ๊ฐ์ ธ์ SQL ์คํ |
โ ํน์ง
· SQL์ ๊ฐ๋ฐ์๊ฐ ์๋ฒฝํ๊ฒ ์ ์ด ๊ฐ๋ฅ
· ๋ณต์กํ ์ฟผ๋ฆฌ, ์กฐ๊ฑด ๋ถ๊ธฐ, ๋์ SQL ์์ฑ์ ๊ฐ๋ ฅ
· XML ๋๋ ์ด๋ ธํ ์ด์ ๊ธฐ๋ฐ ์ ํ ๊ฐ๋ฅ
· Entity ↔ DB ์ปฌ๋ผ ๊ฐ ์๋ ๋งคํ ์์ (์ง์ ์ง์ ํ์)
· Spring๊ณผ ํตํฉ ์ SqlSessionTemplate ๋๋ @MapperScan ์ฌ์ฉ
โ ์ฅ์
· ๋ณต์กํ JOIN, ์๋ธ์ฟผ๋ฆฌ, ๊ฒ์ ์กฐ๊ฑด ์ฒ๋ฆฌ์ ์ต์ ํ
· SQL ํ๋ ๋ฐ DB ๊ตฌ์กฐ ํ์ ์ด ํ์ํ ํ๋ก์ ํธ์ ์ ํฉ
· ์ฟผ๋ฆฌ ๋ช ํ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ ํ๋ณด
โ ๋จ์
· ๋ฐ๋ณต์ ์ธ ๋งคํ ์ฝ๋ ๋ฐ์ ๊ฐ๋ฅ
· XML ๊ด๋ฆฌ๊ฐ ๋ง์์ง๋ฉด ๋ถ๋ฆฌ ๊ตฌ์กฐ ๋ณต์กํด์ง
· JPA์ฒ๋ผ ์๋ํ๋ ์์์ฑ ๊ด๋ฆฌ, ๋ณ๊ฒฝ ๊ฐ์ง๋ ์์