# Data Access Layer
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ์ฌ ๋ฐ์ดํฐ ์ ์ฅ, ์กฐํ ๋ฑ์ ์ญํ ์ ์ํํ๋ ๊ณ์ธต
- Spring์์๋ Mapper Notation์ด๋ Repository Annotation์ ์ฌ์ฉํ๋ค.
- Service ๊ณ์ธต๊ณผ Database ์ฌ์ด์ ์ถ์ํ ๋ ๊ณ์ธต์ด๋ค.
- Database ๊ธฐ์ ์ด ๋ณ๊ฒฝ ๋๋ฉด Data Access Layer์ ์ฝ๋๋ ๋ณ๊ฒฝ๋ ์ ์์ง๋ง, Service ๊ณ์ธต์ ์ฝ๋๋ ๋ณ๊ฒฝ๋์ง ์๋๋ค.
์คํ๋ง์์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๊ธฐ ์ํ ๊ธฐ์
- JDBC(Java Database Connectivity): Database์ ์ ๊ทผํ๊ธฐ ์ํ Java์ ํ์ค API
- JDBC Template: JDBC๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด Spring์์ ์ ๊ณตํ๋ API
(* JDBC์์ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ์ฝ๋๋ฅผ low ๋ ๋ฒจ์ ์ฝ๋๋ก ์์ฑํด์ผ ํ์ง๋ง, JDBC Template์ ํ์ฉํ๋ฉด ํจ์ฌ ์ ์๋์ ์ฝ๋๋ฅผ. ์ฌ์ฉํ์ฌ Database์ ์ ๊ทผํ ์ ์๋ค)
- SQL Mapper
: SQL์ input or output๊ณผ Java ๊ฐ์ฒด๋ฅผ ๋งคํํ๋ ๊ธฐ์
Java์์ SQL Mapper ์ ์ฉ์ ์ํด MyBatis๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
- ORM(Object Rellational Mapping)
: RDBMS์ ํ ์ด๋ธ๊ณผ Java ๊ฐ์ฒด๋ฅผ ๋งคํํ๋ ๊ธฐ์
ORM Framework๊ฐ ๊ฐ์ฒด์ ํ ์ด๋ธ์ ๋งคํํ๋ ์ญํ ์ ์ํํ๊ณ , SQL์ ์๋์ผ๋ก ์์ฑํด์ค๋ค.
Java, Spring์์ ORM ์ ์ฉ์ ์ํด Hibernate์ Spring Data JPA๊ฐ ์ฃผ๋ก ์ฌ์ฉ๋๋ค.
Spring Boot์์ MyBatis๋ฅผ ํ์ฉ(์ค์ ?)ํ๊ธฐ ์ํด์๋ ํฌ๊ฒ ๋๊ฐ์ง ์ฌ์ ์์ ์ด ํ์ํ๋ค.
1. *Maven ์์กด์ฑ ์ค์
: MyBatis ๋ฐ H2 Database์ ๋ํ ์์กด์ฑ
2. Spring ์ ํ๋ฆฌ์ผ์ด์ ์ค์
: appication.properties ์ค์
# Maven์ด๋?
: Java ํ๋ก์ ํธ์์ ์ฌ์ฉ๋๋ ๋น๋ ์๋ํ ๋๊ตฌ
(๋น๋: ์์ค์ฝ๋๋ฅผ ์คํ ๊ฐ๋ฅํ SW ์ฐ์ถ๋ฌผ๋ก ๋ง๋๋ ๊ณผ์ )
* Maven์ 2๊ฐ์ง ์ฃผ์ ๊ธฐ๋ฅ
1. ํ๋ก์ ํธ ๊ตฌ์ฑ ๋ฐ ๋น๋ ๊ด๋ฆฌ
2. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์กด์ฑ ๊ด๋ฆฌ
- ์ฌ์ฉํ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋ณด๋ฅผ ๋ช ์ํ๋ฉด ์๋ ๋ค์ด๋ก๋ ํ ์ฌ์ฉ
- ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ Maven Repository์ ๋ฑ๋ก ๋์ด ์์ด์ผ ํ๋ค.
* Maven pom.xml
: Maven์ด ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๊ธฐ ์ํด์ ํ์ํ ์ ๋ณด๋ฅผ ๊ธฐ์ ํ๋ XML ํ์ผ
- ํ๋ก์ ํธ์ ์ ๋ณด, ํ๋ก์ ํธ๊ฐ ํ์๋ก ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์กด์ฑ ์ ๋ณด, ๋น๋ ๋จ๊ณ์์ ์ฌ์ฉ ๋๋ ์ ๋ณด๊ฐ ๋ค์ด์๋ค.
# H2 Database
- ๊ฒฝ๋ RDBMS (๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ ์ ์ฅ์ด ๊ฐ๋ฅํ๋ค)
- ๋ณ๋์ ์ค์น ์์ด Maven ์์กด์ฑ๋ง์ผ๋ก Spring Boot์์ ํ์ฉ ๊ฐ๋ฅํ๋ค.
- ๊ฐ๋ฐ ๋จ๊ณ์์ ํ ์คํธ์ฉ์ผ๋ก ๊ฐ๋ณ๊ฒ ํ์ฉ ๊ฐ๋ฅํ๋ค.
# MyBatis Mapper์ ๋์
- Appication Layer์์๋ Mapper ์ธํฐํ์ด์ค๋ฅผ ํธ์ถํ๋ฉด, ํธ์ถ๋ Mapper ์ธํฐํ์ด์ค์ ๋ฉ์๋์ ํด๋นํ๋ ์ ์ ํ Mapper xml ์์ SQL๋ฌธ์ด ์คํ๋๋ค.
- Mapper ์ธํฐํ์ด์ค์ SQL ์ฌ์ด์์๋ DTO ๋๋ ๋จ์ผ Value๊ฐ ์๋ก ์ ์ก๋๋ค.
์ฝ๋ํ๋ ์ Java ์น ๊ฐ๋ฐ ์ฒดํ๋จ ํ๋ ์ค 'Spring Boot๋ฅผ ํ์ฉํ ์น ๊ฐ๋ฐ ์ด๊ธ' ์ด๋ฌ๋ ๊ฐ์๋ฅผ ๋ฃ๊ณ ์์ฑํ์์ต๋๋ค :)
์ฝ๋ํ๋ ์ URL: https://www.codepresso.kr/
'๐ ๊ธฐํ > ์ฝ๋ํ๋ ์ ์ฒดํ๋จ_BE' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQL] SQL ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ์ ์ง๊ณ (0) | 2022.03.19 |
---|---|
[SQL] ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ์ ์กฐํ Part2 (0) | 2022.03.19 |
AWS (Amazon Web Service) (0) | 2022.02.26 |
Cloud Computing (0) | 2022.02.25 |
[SQL] SQL ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ ํ์ฉ (0) | 2022.02.04 |