Spring Boot์ ์๋ ์ค์ ์ ์์กดํ์ง ์๊ณ , XML ๊ธฐ๋ฐ์ผ๋ก ์ง์ ์ค์ ํ๋ฉฐ Spring Framework์ ๋์ ์๋ฆฌ๋ฅผ ํ๊ตฌํ Legacy ๊ตฌ์กฐ์ ํ๋ก์ ํธ์ ๋๋ค.
- ํ๋ก์ ํธ๋ช : '๋ก์ค๋ฉ'
- ๊ฐ์: ์ฌ์ฑ ์๋ค ์ผํ๋ชฐ์ธ โ๋์ค๋ฉโ์ ๋ฒค์น๋งํนํ์ฌ ์ํ ํ์, ์ฅ๋ฐ๊ตฌ๋, ์ฃผ๋ฌธ, ํ์ ๊ด๋ฆฌ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์น ๊ธฐ๋ฐ ์ผํ๋ชฐ ์๋น์ค
- ํ๋ก์ ํธ ๊ธฐ๊ฐ: 25.06.09. ~
Spring Boot์ ์๋ ์ค์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์๊ณ , XML ๊ธฐ๋ฐ์ผ๋ก DispatcherServlet๊ณผ Bean ๋ฑ๋ก ๋ฑ์ ์ง์ ์ค์ ํ๋ฉฐ Spring๊ณผ Servlet, Tomcat ๋ฑ์ ์ฐ๊ฒฐ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง ์ดํดํด๋ณด๊ณ ์ ํ์ต๋๋ค.
JPA์ ๊ฐ์ด ์๋ํ๋ ORM ๋์ MyBatis๋ฅผ ์ฌ์ฉํด ๋ณต์กํ SQL ์ฟผ๋ฆฌ๋ฅผ ์ง์ ์์ฑํ๊ณ ์ต์ ํํด๋ณด๊ณ ์ ํ์ต๋๋ค. DAO์ ๋ํ ์ดํด๋๋ฅผ ๋์ด๊ณ ์ ํ์ต๋๋ค.
Docker๋ฅผ ํตํด DB ํ๊ฒฝ ๋ฑ ๊ฐ๋ฐ ํ๊ฒฝ์ ํต์ผ ์์ผ์ ์งํํ๊ณ ์ ํ์ต๋๋ค.
- ์ธ์ด
- Java (v17)
- ํ
ํ๋ฆฟ ์์ง
- Thymleaf
- ์น ์๋ฒ ํ๋ ์์ํฌ
- Spring Framework (v5.3.x)
- DB ์ฐ๋
- MyBatis
- ์ธ์ฆ/์ธ๊ฐ
- JWT (Json Web Token)
- DB
- MySQL 8.x
- DevOps
- Docker
- ๋ณด์
- Spring Security
- ETC
- Lombok, Validation, Junit ๋ฑ
web.xml: DispatcherServlet ๋ฑ๋ก, Context ์ค์ dispatcher-servlet.xml: Spring MVC Controller, View ์ค์ root-context.xml: ๊ณตํต ๋น ๋ฑ๋ก, DB ์ฐ๋ ๋ฑpom.xml: ์์กด์ฑ ๊ด๋ฆฌWEB-INF/views/: Thymleaf View ์ ์ฅ ์์น
.env ํ์ผ์ ์ฌ์ฉํด ํ๊ฒฝ๋ณ์๋ฅผ ํตํฉ์ผ๋ก ๊ด๋ฆฌํ ์์ ์
๋๋ค.
ํ์ฌ๋ .gitignore์ ๋ฑ๋กํ์ง ์์, ํ๊ฒฝ๋ณ์์ ๋ํ ์ ๋ณด๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์ถํ ๋ฆฌํฉํ ๋ง ์์ ์
๋๋ค. .env๋ก ํ๊ฒฝ๋ณ์๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค๋ฉด .env.dev, .env.prod ๋ฑ์ผ๋ก ๋๋์ด์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
SpringDotenv(ํ๊ฒฝ๋ณ์ ๊ด๋ฆฌ)๋ผ๋ ์์กด์ฑ์ Spring Framework์์ ์ฌ์ฉํ ์ ์๋์ง ํ์ธ์ด ํ์ํฉ๋๋ค.
- Spring Framework๋ Spring Boot์ ๋ฌ๋ฆฌ
.envํ์ผ์ด ์๋์ผ๋ก ๋ก๋ฉ ๋์ง ์์ - Spring Framework์์๋ ์ง์
.envํ์ผ์ ์ฝ๊ณEnvironment๋ Bean ์ฃผ์ ํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ โ Spring Framework์์๋.properties+@Value๋ฐฉ์์ด ๋ ์ถ์ฒ๋๋ค๊ณ ํฉ๋๋ค. ํ๊ฒฝ๋ณ์๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ ๋ํด์ ๋ค์ ์๊ฐํด๋ณด๊ณ ์ถํ ๋ฆฌํฉํ ๋ง ์งํ ์์ ์ ๋๋ค.
๋๋ฉ์ธํ ์ํคํ
์ฒ๋ฅผ ์ฑํํด ๊ตฌํ์ ์งํํ์ต๋๋ค.
๊ธฐ๋ฅ์ด๋ ๊ณ์ธต(Service, Controller ๋ฑ)์ ๊ธฐ์ค์ผ๋ก ๋๋๋ ์ ํต์ ์ธ ๋ฐฉ์(Layered Architecture)์ด ์๋, ์
๋ฌด ๋๋ฉ์ธ ์ค์ฌ์ผ๋ก ๋๋ ํ ๋ฆฌ์ ํด๋์ค๋ฅผ ๊ตฌ์ฑํจ์ผ๋ก์จ ๋ค์๊ณผ ๊ฐ์ ์ด์ ์ ์ป๊ณ ์ ํ์ต๋๋ค:
- ๋์ ์์ง๋: ๊ด๋ จ๋ ๋๋ฉ์ธ ํด๋์ค๋ค์ด ํ๋์ ๋๋ ํ ๋ฆฌ์ ๋ชจ์ฌ ์์ด ๋ณ๊ฒฝ์ด๋ ์ ์ง๋ณด์๊ฐ ์ฌ์
- ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ(Separation of Concern): ๊ฐ ๋๋ฉ์ธ์ ์ฑ ์์ด ๋ช ํํ๊ฒ ๋ถ๋ฆฌ๋จ
- ํ์ฅ ์ฉ์ด์ฑ: ๊ธฐ๋ฅ ์ถ๊ฐ ์ ํด๋น ๋๋ฉ์ธ ๋๋ ํ ๋ฆฌ ๋ด์์๋ง ์์ ๊ฐ๋ฅ
- ํ์ ํจ์จ ์ฆ๊ฐ: ์ญํ ๋ถ๋ด์ด ๋๋ฉ์ธ ๋จ์๋ก ๋๋๋ฏ๋ก ํ์์ด ๊ฐ ๋๋ฉ์ธ์ ์ง์คํ๊ธฐ ์ฌ์
๋๋ฉ์ธ๋ง๋ค ๊ณตํต์ผ๋ก ์ฌ์ฉํ๋ ๊ธฐ๋ฅ(ex: ์์ธ ์ฒ๋ฆฌ, ๋ณด์ ์ค์ , ๋ก๊น , ์ธํฐ์ ํฐ ๋ฑ)์ ๋ณ๋ ๊ณตํต ํจํค์ง ๋๋ ์ค์ ํจํค์ง(ex: config, common ํจํค์ง)์ ๋ถ๋ฆฌํด์ ๊ด๋ฆฌํ ์์ ์ ๋๋ค.
๐๏ธ shoppingmall/
โโโ .idea/ # IntelliJ ์ค์ ํด๋
โโโ db/ # DB ์ด๊ธฐํ SQL, ERD ๋ฑ
โโโ logs/ # ๋ก๊ทธ ํ์ผ ์ ์ฅ ์์น
โโโ src/
โ โโโ main/
โ โ โโโ java/com/example/shoppingmall/
โ โ โ
โ โ โโโ config/ # ์ ์ฒด ๊ณตํต ์ค์
โ โ โ โโโ WebMvcConfig.java
โ โ โ โโโ SecurityConfig.java
โ โ โ โโโ MyBatisConfig.java
โ โ โ โโโ JwtTokenProvider.java
โ โ โ
โ โ โโโ common/ # ๊ณตํต ๋ชจ๋ (์์ธ, ์๋ต ํฌ๋งท, ์ ํธ ๋ฑ)
โ โ โ โโโ exception/
โ โ โ โ โโโ GlobalExceptionHandler.java
โ โ โ โ โโโ CustomException.java
โ โ โ โ โโโ ErrorResponse.java
โ โ โ โโโ util/
โ โ โ โ โโโ JwtUtil.java
โ โ โ โโโ response/
โ โ โ โโโ ApiResponse.java
โ โ โ
โ โ โโโ user/ # ํ์ ๋๋ฉ์ธ
โ โ โ โโโ controller/
โ โ โ โโโ service/
โ โ โ โโโ repository/
โ โ โ โโโ dto/
โ โ โ โโโ domain/
โ โ โ
โ โ โโโ item/ # ์ํ ๋๋ฉ์ธ
โ โ โโโ cart/ # ์ฅ๋ฐ๊ตฌ๋ ๋๋ฉ์ธ
โ โ โโโ order/ # ์ฃผ๋ฌธ ๋๋ฉ์ธ
โ โ โโโ board/ # ๊ฒ์ํ/๋ฌธ์ ๋๋ฉ์ธ
โ โ โ โโโ ...
โ โ โ
โ โ โโโ resources/
โ โ โโโ dispatcher-servlet.xml # Spring MVC ์ค์
โ โ โโโ root-context.xml # ๊ณตํต ๋น ์ค์
โ โ โโโ mapper/ # MyBatis Mapper XML
โ โ โโโ static/, templates/ # ์ ์ ์์ ๋ฐ Thymeleaf ๋ทฐ
โ โ
โ โโโ test/ # ํ
์คํธ ์ฝ๋
โ โโโ java/com/example/shoppingmall/
โโโ target/ # Maven ๋น๋ ์์ํ
โโโ docker-compose.yml # ๊ฐ๋ฐํ๊ฒฝ ํตํฉ์ ์ํ Docker ์ค์
โโโ pom.xml # ํ๋ก์ ํธ ์์กด์ฑ ์ ์
โโโ .env # ํ๊ฒฝ ๋ณ์ ํ์ผ (.gitignore ๋์ ์์ )
โโโ .gitignore
โโโ README.md
[์ฌ์ฉ์]
โ
[Thymeleaf ๊ธฐ๋ฐ ์น ํ์ด์ง]
โ (ํผ ์ ์ก / ์์ฒญ)
[Spring + MyBatis ์๋ฒ]
โ (์ฟผ๋ฆฌ ์คํ)
[MySQL DB]
+ ์ธ์
๊ธฐ๋ฐ ๋ก๊ทธ์ธ/ํ์๊ด๋ฆฌ ์ฒ๋ฆฌ
+ Docker๋ก ์๋ฒ์ DB ํ๊ฒฝ ์ปจํ
์ด๋ ๊ตฌ์ฑ ๋ฐ ์คํ
| ๊ธฐ๋ฅ ์์ญ | ์ธ๋ถ ๊ธฐ๋ฅ | ์ค๋ช |
|---|---|---|
| ํ์ ๊ด๋ฆฌ | ํ์๊ฐ์ , ๋ก๊ทธ์ธ, ๋ก๊ทธ์์ | ์ธ์ ๊ธฐ๋ฐ ์ธ์ฆ ์์คํ (JWT ๋์ ์์ ) |
| ์ํ ํ์ | ์นดํ ๊ณ ๋ฆฌ๋ณ ์กฐํ, ๊ฒ์, ์ ๋ ฌ | Thymeleaf๋ฅผ ํตํ ๋์ ํ์ด์ง ๋ ๋๋ง |
| ์ํ ๋ฆฌ๋ทฐ | ๋ฆฌ๋ทฐ ์์ฑ ๋ฐ ์กฐํ | ๊ตฌ๋งค์๋ง ๋ฆฌ๋ทฐ ์์ฑ ๊ฐ๋ฅ |
| ์ฅ๋ฐ๊ตฌ๋ | ์ํ ๋ด๊ธฐ, ์๋ ๋ณ๊ฒฝ, ์ญ์ | ๋ก๊ทธ์ธ ์ฌ์ฉ์์ ์ฅ๋ฐ๊ตฌ๋ ์ธ์ ๊ธฐ๋ฐ ๊ด๋ฆฌ |
| ์ฃผ๋ฌธ ๊ธฐ๋ฅ | ์ฃผ๋ฌธ ์์ฑ ๋ฐ ์กฐํ | ๊ฒฐ์ ๊ธฐ๋ฅ์ ์ถํ ์ถ๊ฐ ์์ |
| ๊ฒ์ํ ๊ธฐ๋ฅ | ์ํ ๋ฌธ์/๋ต๋ณ, ๊ณต์ง์ฌํญ | ์ปค๋ฎค๋ํฐ/๊ณ ๊ฐ์ผํฐ ๊ธฐ๋ฅ ์ ๊ณต |
| ๊ด๋ฆฌ์ ๊ธฐ๋ฅ | ํ์/์ํ/๋งค์ถ ๊ด๋ฆฌ (์์ ) | ๊ด๋ฆฌ์ ์ ์ฉ Admin ํ์ด์ง ์์ |
- ๐ ์ด๊ธฐ ERD ์ค๊ณ
- ๐ ์ต์ข ์ฌ์ฉ ERD
main: ๋ฐฐํฌ(์ด์)์ฉ ๋ธ๋์น- ๊ธฐ๋ฅ(๋๋ฉ์ธ)๋ณ ๋ธ๋์น :
feature/user,feature/item,feature/order...
Issue ๊ธฐ๋ฐ ๊ฐ๋ฐ ํ๋ฆ
- ์ด ํ๋ก์ ํธ๋ ๋ชจ๋ ์์ ์ Issue ์ค์ฌ์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค.
- ๊ธฐ๋ฅ ๊ฐ๋ฐ, ๋ฒ๊ทธ ์์ , ๋ฆฌํฉํ ๋ง ๋ฑ ๋ชจ๋ ์์ ์ ๋จผ์ Issue๋ฅผ ๋ฑ๋กํ ํ,
- ํด๋น ์ด์ ๋ฒํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ธ๋์น๋ฅผ ์์ฑํ๊ณ , ์ปค๋ฐ ๋ฐ Pull Request(PR)์ ์์ฑํฉ๋๋ค.
์ด๋ฌํ ํ๋ฆ์ ํตํด ๋ค์๊ณผ ๊ฐ์ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค:
- ์์ ๋จ์๊ฐ ๋ช ํํ๊ฒ ์ถ์ ๋์ด ๊ธฐ๋ก ๋ฐ ๋ฆฌ๋ทฐ๊ฐ ์์ํจ
- PR๊ณผ ์ปค๋ฐ์ด ํน์ ์ด์์ ์ ํํ๊ฒ ์ฐ๊ฒฐ๋์ด ํ๋ฆ์ด ๋ช ํํด์ง
- GitHub Projects ๋ฐ Kanban ๋ณด๋์ ์์ฐ์ค๋ฝ๊ฒ ์ฐ๊ณ ๊ฐ๋ฅ
- ์๋ํ ๋๊ตฌ(๋ฆด๋ฆฌ์ฆ ๋ ธํธ, CI/CD ํธ๋ฆฌ๊ฑฐ ๋ฑ)์ ํตํฉ ์ฉ์ด
<type>: <subject>
- <body> (์ ํ)
Issue: #<issue number>
subject: ํ์ฌํ + ๋ช ๋ นํ, 50์ ์ด๋ดbody: ๋ณ๊ฒฝ ์ด์ , ์์ธ ์ค๋ช ๋ฑ (์ ํ ์ฌํญ)Issue: #๋ฒํธ๋ฅผ ํตํด ๊ด๋ จ ์ด์๋ฅผ ์ฐ๊ฒฐ๊ฒฐํฉ๋๋ค.
feat: ์ฌ์ฉ์ ํ์๊ฐ์
๊ธฐ๋ฅ ๊ตฌํ
- ์ ํจ์ฑ ๊ฒ์ฆ ๋ฐ ๋น๋ฐ๋ฒํธ ์ํธํ ์ถ๊ฐ
Issue: #12Conventional Commits ํ์ค์ ๋ฐ๋์ต๋๋ค. ์๋ ๋ฆด๋ฆฌ์ฆ, changelog ๋ฑ๊ณผ ํธํ์ด ๋๋๋ก (feat:, fix:, ...) ๋ฑ์ ํํ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
| ํ์ | ์ค๋ช |
|---|---|
feat |
์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ |
fix |
๋ฒ๊ทธ ์์ |
docs |
๋ฌธ์ ์์ (README, API ๋ฌธ์ ๋ฑ) |
style |
์ฝ๋ ์คํ์ผ ๋ณ๊ฒฝ (๊ณต๋ฐฑ, ์ธ๋ฏธ์ฝ๋ก ๋ฑ / ๊ธฐ๋ฅ ๋ณ๊ฒฝ ์์) |
refactor |
๋ฆฌํฉํ ๋ง (๊ธฐ๋ฅ ๋ณ๊ฒฝ ์์ด ๊ตฌ์กฐ ๊ฐ์ ) |
test |
ํ ์คํธ ์ฝ๋ ์ถ๊ฐ ๋๋ ์์ |
chore |
์ค์ ํ์ผ, ๋น๋ ์์ , ํจํค์ง ๊ด๋ฆฌ ๋ฑ ๊ธฐํ ์ก๋ฌด์ฑ ์์ |
perf |
์ฑ๋ฅ ๊ฐ์ |
ci |
CI ํ๊ฒฝ ๊ตฌ์ฑ ๋ฐ ์์ |
build |
๋น๋ ๋๊ตฌ ๋๋ ์์กด์ฑ ๊ด๋ จ ์์ |
revert |
์ด์ ์ปค๋ฐ ๋๋๋ฆฌ๊ธฐ |
[<์ ํ>] <์์
์์ฝ> #<์ด์๋ฒํธ>
[Feature] ์ฌ์ฉ์ ์ฃผ์ ๋ฑ๋ก ๊ธฐ๋ฅ ๊ตฌํ #32
[Bug] ๋ก๊ทธ์ธ ์คํจ ์ ์๋ชป๋ ์๋ฌ ๋ฉ์์ง ์ถ๋ ฅ #33
[Refactor] ์ฅ๋ฐ๊ตฌ๋ ์๋น์ค ๋ฆฌํฉํ ๋ง #34Commit, PR๊ณผ ํ๊ธฐ๋ฅผ ๋ฌ๋ฆฌํด ์ญํ ์ ํ์คํ๊ฒ ๊ตฌ๋ถ
| ํ์ | ์ค๋ช |
|---|---|
[Feature] |
๊ธฐ๋ฅ ์ถ๊ฐ ๋๋ ๊ฐ์ |
[Bug] |
์ค๋ฅ ์์ |
[Refactor] |
์ฝ๋ ๋ฆฌํฉํ ๋ง, ๊ตฌ์กฐ ๊ฐ์ |
[Docs] |
๋ฌธ์ ๊ด๋ จ ์์ |
[Test] |
ํ ์คํธ ๊ด๋ จ ์์ |
[Chore] |
์ค์ , ํจํค์ง, CI ๋ฑ ๊ธฐํ ์ก๋ฌด |
๐ ์ด์ ๋ณธ๋ฌธ์
.github/์ ํ ํ๋ฆฟ์ ์์ฑํด ๊ด๋ฆฌํฉ๋๋ค
## โจ ์ค๋ช
ํ์๊ฐ์
์ ์ฃผ์ ๋ฑ๋ก ๊ธฐ๋ฅ์ด ๋๋ฝ๋์ด ์์
## โ
์์
๋ด์ฉ
- ์ฃผ์ ๋ฑ๋ก form ์ถ๊ฐ
- UserController์ ์ฃผ์ ์ฒ๋ฆฌ API ๊ตฌํ
- MyBatis mapper ๋ฐ ํ
์คํธ ์ฝ๋ ์ถ๊ฐ
## ๐ ์ฐธ๊ณ ์๋ฃ
- [๋์์ธ ์์ - Figma ๋งํฌ]
- [API ๋ช
์ธ์ - Notion ๋ฌธ์]<type>: <์์ฝ ์ค๋ช
>
type์ ์ปค๋ฐ ๋ฉ์์ง์์ ์ฌ์ฉํ๋ ํ์ ๊ณผ ๋์ผ (feat,fix,refactor๋ฑ)์์ฝ ์ค๋ช์ ๊ฐ๊ฒฐํ๊ฒ ํด๋น ์์ ์ ๋ชฉ์ ์ด๋ ๊ฒฐ๊ณผ๋ฅผ ์์- ์ด์ ๋ฒํธ๋ PR ๋ณธ๋ฌธ์ Closes #๋ฒํธ๋ก ๋ช ์ (์ ๋ชฉ์๋ ํฌํจํ์ง ์์)
feat: ํ์๊ฐ์
๊ธฐ๋ฅ ๊ตฌํ
fix: ์ฅ๋ฐ๊ตฌ๋ ์๋ ์ค๋ฅ ์์
refactor: ํ์ ๋๋ฉ์ธ ์๋น์ค ์ฑ
์ ๋ถ๋ฆฌ
docs: README ๊ตฌ์กฐ๋ ์ถ๊ฐ๐ PR ๋ณธ๋ฌธ์
.github/์ ํ ํ๋ฆฟ์ ์์ฑํด ๊ด๋ฆฌํฉ๋๋ค
## ๐ ๊ด๋ จ ์ด์
Closes #32
## โจ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ
- ํ์๊ฐ์
๊ธฐ๋ฅ ๊ตฌํ: ์ ํจ์ฑ ๊ฒ์ฆ, ์ํธํ, ์ค๋ณต ์ฒดํฌ
- UserController, UserService ์์ฑ
- MyBatis ๋งคํ ํ์ผ ์ถ๊ฐ
## โ
ํ
์คํธ ๋ด์ญ
- ํ์๊ฐ์
์ฑ๊ณต/์คํจ ์ผ์ด์ค ํ
์คํธ ์๋ฃ
- ์ค๋ณต ์ด๋ฉ์ผ ๋ฑ๋ก ๋ฐฉ์ง ํ
์คํธ ํต๊ณผ
## ๐ TODO (ํ์ ์์
)
- ์ด๋ฉ์ผ ์ธ์ฆ ๊ธฐ๋ฅ ๋ถ๋ฆฌ ์์ -
์ด์ ์์ฑ
[Feature] ํ์๊ฐ์ ๊ธฐ๋ฅ ๊ตฌํ #32 -
๋ธ๋์น ์์ฑ
git checkout -b feature/signup
-
์ปค๋ฐ ์์ฑ
feat: ์ฌ์ฉ์ ํ์๊ฐ์ ๊ธฐ๋ฅ ๊ตฌํ - ์ ํจ์ฑ ๊ฒ์ฆ ๋ฐ ์ค๋ณต ์ฒดํฌ ์ถ๊ฐ Issue: #32 -
PR ์์ฑ
-
์ ๋ชฉ:
feat: ํ์๊ฐ์ ๊ธฐ๋ฅ ๊ตฌํ
-
๋ณธ๋ฌธ:
Closes #32 ...
-
| ์ด๋ฆ | ๋ด๋น ์์ญ | ์์ธ ์ค๋ช |
|---|---|---|
| ๊น์งํ | ์ํ(Item) ํํธ | item, item_image, category, item_option ๋ฑ |
| ๊ฐ๋ฏผ์ | ์ฃผ๋ฌธ(Order) ํํธ | order, order_item, payment, delivery |
| ๋์๋ฌธ | ๊ฒ์ํ(Board) ํํธ | item_question, question_answer, notice |
| ๋ํ์ง | ์ฅ๋ฐ๊ตฌ๋(Cart) ํํธ | cart |
| ์ํ๋น | ํ์(User) ํํธ | user, address, wishlist |