MyBatis
- ์ค์ ๋ก ๊ฐ๋ฐํ๋ ์๊ฐ ๋ณด๋ค SQL ์ ๋ค๋ฃจ๋ ์๊ฐ์ด ๋ ๋ง์์
- ๊ฐ์ฒด ๋ชจ๋ธ๋ง๋ณด๋ค๋ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์๋ง ์ง์คํ๊ณ , ๊ฐ์ฒด๋ฅผ ๋จ์ํ ํ ์ด๋ธ์ ๋ง์ถ์ด ๋ฐ์ดํฐ ์ ๋ฌ ์ญํ ๋ง ํ๋ ๊ฐ๋ฐ์ ํ๊ฒ ๋จ
MyBatis๋ ORM์ด ์๋. SQL Mapper์ด๋ค.
ORM์ ๊ฐ์ฒด๋ฅผ ๋งคํํ๋ ๊ฒ์ด๊ณ , SQL Mapper๋ ์ฟผ๋ฆฌ๋ฅผ ๋งคํ
JPA
ํ๋์ ์น ์ ํ๋ฆฌ์ผ์ด์
์์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDB, Relational Database)๋ ๋น ์ง ์ ์๋ ์์
๊ทธ๋ฌ๋ค ๋ณด๋ ๊ฐ์ฒด๋ฅผ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ๋ฌด์๋ณด๋ค ์ค์
ํ์
ํ๋ก์ ํธ ๋๋ถ๋ถ์ด ์ ํ๋ฆฌ์ผ์ด์
์ฝ๋๋ณด๋ค SQL๋ก ๊ฐ๋ํ๊ฒ ๋ ๊ฒ
์ด๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ SQL๋ง ์ธ์ํ ์ ์๊ธฐ ๋๋ฌธ์ธ๋ฐ, SQL๋ก๋ง ๊ฐ๋ฅํ๋ ๊ฐ ํ
์ด๋ธ๋ง๋ค ๊ธฐ๋ณธ์์ธ CRUD(Create, Read, Update, Delete) SQL์ ๋งค๋ฒ ์์ฑํด์ผ ํจ
์๋ฅผ ๋ค์ด User ๊ฐ์ฒด๋ฅผ ํ
์ด๋ธ๋ก ๊ด๋ฆฌํ๋ค๋ฉด ๋ค์์ ์ฝ๋๋ฅผ ํผํ ์ ์์
insert into user (id, name, ...) values (...);
select * from user where ...;
update user set ... where ...;
delete from user where ...;
๊ฐ๋ฐ์๊ฐ ์๋ฌด๋ฆฌ ์๋ฐ ํด๋์ค๋ฅผ ์๋ฆ๋ต๊ฒ ์ค๊ณํด๋, SQL์ ํตํด์ผ๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ณ ์กฐํํ ์ ์์
โ
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํด์ผ๋ง ํ๋ ์ํฉ์์ SQL์ ํผํ ์ ์์
๋ฌธ์ ์ ฌ
- ์์ญ, ์๋ฐฑ ๊ฐ์ ํ ์ด๋ธ ๋ง๋ค ๋ชจ๋ SQL์ ๋ง๋ค๊ณ ์ ์ง ๋ณด์ ํด์ผํจ โ ๋๋ฌด ๋ง์ ๋จ์ ๋ฐ๋ณต ์์
- ํจ๋ฌ๋ค์ ๋ถ์ผ์น ๋ฌธ์
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ด๋ป๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ง์ ์ด์ ์ด ๋ง์ถฐ์ง ๊ธฐ์
- ๋ฐ๋๋ก, ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๋ฉ์์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ๋ฅ๊ณผ ์์ฑ์ ํ ๊ณณ์์ ๊ด๋ฆฌํ๋ ๊ธฐ์
- ๋์ ์ธ์ด์ ํจ๋ฌ๋ค์์ด ๋ค๋ฅธ๋ฐ, ๊ฐ์ฒด๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ค๊ณ ํ๋ ์ฌ๋ฌ ๋ฌธ์ ๊ฐ ๋ฐ์
- ์ด๊ฒ์ ํจ๋ฌ๋ค์ ๋ถ์ผ์น๋ผ๊ณ ํจ
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ๋ถ๋ชจ๊ฐ ๋๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด ?
User user = findUser(); Group group = user.getGroup();
- ๋ช ํํ๊ฒ User์ Group์ ๋ถ๋ชจ-์์ ๊ด๊ณ์์ ์ ์ ์์
- ์ฌ๊ธฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ถ๊ฐ๋๋ฉด ?
User user = userDao.findUser(); Group group = groupDao.findGroup(user.getGroupId());
- User ๋ฐ๋ก, Group ๋ฐ๋ก ์กฐํ
- User์ Group์ด ์ด๋ค ๊ด๊ณ์ธ์ง ์ ์ ์๋? โ ์์, 1:N ๋ฑ ๋ค์ํ ๊ฐ์ฒด ๋ชจ๋ธ๋ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ ๊ตฌํํ ์ ์์
- ๊ทธ๋ฌ๋ค ๋ณด๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ๋ง์๋ง ์ง์คํ๊ฒ ๋จ
โ
์ด๋ฌํ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํด JPA๊ฐ ๋ฑ์ฅ
โ
์๋ก ์งํฅํ๋ ๋ฐ๊ฐ ๋ค๋ฅธ 2๊ฐ ์์ญ์ ์ค๊ฐ์์ ํจ๋ฌ๋ค์ ์ผ์น๋ฅผ ์์ผ์ฃผ๊ธฐ ์ํ ๊ธฐ์
์ฆ, ๊ฐ๋ฐ์๋ ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ํ๋ก๊ทธ๋๋ฐ์ ํ๊ณ , JPA๊ฐ ์ด๋ฅผ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ง๊ฒ SQL์ ๋์ ์์ฑํด์ ์คํ โ ๋์ด์, SQL์ ์ข
์์ ์ธ ๊ฐ๋ฐ์ ํ์ง ์์๋ ๋จ
Spring Data JPA
- JPA๋ ์ธํฐํ์ด์ค๋ก์ ์๋ฐ ํ์ค ๋ช ์ธ์
- ์ธํฐํ์ด์ค์ธ JPA๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๊ตฌํ์ฒด๊ฐ ํ์ํจ, ๋ํ์ ์ผ๋ก Hibernate, Eclipse Link๋ฑ์ด ์์
- ํ์ง๋ง Spring์์ JPA๋ฅผ ์ฌ์ฉํ ๋๋ ์ด ๊ตฌํ์ฒด๋ค์ ์ง์ ๋ค๋ฃจ์ง ์์
- ๊ตฌํ์ฒด๋ค์ ์ข ๋ ์ฝ๊ฒ ์ฌ์ฉํ๊ณ ์ ์ถ์ํ์ํจ Spring Data JPA๋ผ๋ ๋ชจ๋์ ์ด์ฉํ์ฌ JPA ๊ธฐ์ ์ ๋ค๋ฃธ
- ๊ด๊ณ
- JPA โ Hibernate โ Spring Data JPA
- ์ด๋ ๊ฒ ํ ๋จ๊ณ ๋ ๊ฐ์ธ๋์ Spring Data JPA ๊ฐ ๋ฑ์ฅํ ์ด์
- ๊ตฌํ์ฒด ๊ต์ฒด์ ์ฉ์ด์ฑ : Hibernate ์ธ์ ๋ค๋ฅธ ๊ตฌํ์ฒด๋ก ์ฝ๊ฒ ๊ต์ฒดํ๊ธฐ ์ํจ
- ์ ์ฅ์ ๊ต์ฒด์ ์ฉ์ด์ฑ : ๊ด๊ฒํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ์ ๋ค๋ฅธ ์ ์ฅ์๋ก ์ฝ๊ฒ ๊ต์ฒดํ๊ธฐ ์ํจ
'์คํ๋ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ๋ง์ด๋ ? (0) | 2022.08.31 |
---|---|
[ Spring Boot ] API (0) | 2022.08.30 |
[ Spring Boot ] ํ ์คํธ ์ฝ๋ (0) | 2022.08.30 |
Junit5 vs. Junit4 (0) | 2022.08.06 |
์คํ๋ง ์ ๋ฌธ (0) | 2022.01.04 |