kyongseo / cycle

cycle: Springboot๋ฅผ ํ™œ์šฉํ•œ ์ค‘๊ณ ๊ฑฐ๋ž˜ ์‚ฌ์ดํŠธ
1 stars 0 forks source link

๐Ÿ“ข cycle: Springboot๋ฅผ ํ™œ์šฉํ•œ ์ค‘๊ณ ๊ฑฐ๋ž˜ ์‚ฌ์ดํŠธ

์ „๋ฐ˜์ ์ธ ์›น์˜ ๊ธฐ๋ณธ ์†Œ์–‘์ด ๋˜๋Š” ๊ฒŒ์‹œํŒ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

๋ชฉ์ฐจ



๋“ค์–ด๊ฐ€๋ฉฐ

1. ํ”„๋กœ์ ํŠธ ๊ธฐํš ๋ฐฐ๊ฒฝ

์ค‘๊ณ  ๊ฑฐ๋ž˜ ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•ด๋ด„์œผ๋กœ์จ ํŒ๋งค์ž์™€ ๊ตฌ๋งค์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ์œ ์ €์„œ๋น„์Šค๋ฅผ ์ตœ์ ํ™”ํ•˜๊ณ  ์ž๋ฐ” ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ ์—ญ๋Ÿ‰ ํ–ฅ์ƒ๊ณผ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ  ์Šคํƒ์„ ๊ฒฝํ—˜ํ•ด๋ณด๊ณ ์ž ๊ธฐํšํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฌด์กฐ๊ฑด์ ์œผ๋กœ ์ฑ…๊ณผ ๊ฐ•์˜๋ฅผ ๋”ฐ๋ผํ•˜์—ฌ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋‚ด๊ฐ€ ์ง์ ‘ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ตฌํ˜„๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•˜๊ณ , ์—ฌ๋Ÿฌ ์ž๋ฃŒ๋ฅผ ์ฐพ์•„๋ณด๋ฉฐ ์ ์šฉํ•˜๋Š” ํž˜์„ ํ‚ค์šฐ๊ธฐ ์œ„ํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

2. ํ”„๋กœ์ ํŠธ ์„ค๋ช…

3. ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„

2023.08. ~ 2023.09 (5์ฃผ)

๊ธฐ๊ฐ„ ์„ค๋ช…
08.14 ~ 08.16 ๊ธฐํš ๋ฐ Entity ์„ค๊ณ„
์ƒํ’ˆ ๊ธฐ๋Šฅ ๊ตฌํ˜„(CRUD)
์ƒํ’ˆ CRUD ๊ด€๋ จ html
08.17 ~ 08.20 ๋ฉ”์ธํ™”๋ฉด ํ”„๋ก ํŠธ ๊ตฌ์„ฑ
DB ์Šคํ‚ค๋งˆ ๊ตฌ์„ฑ
๋ฉ”์ธํ™”๋ฉด ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ
08.22 ~ 08.27 Spring security๋กœ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ๊ตฌํ˜„
API ์ŠคํŽ™ ๊ตฌ์„ฑํ•˜๊ธฐ
์ฃผ๋ฌธ ๊ด€๋ จ Entity ์ถ”๊ฐ€ ์„ค๊ณ„
ํŒ๋งค์ž/๊ตฌ๋งค์ž ํ”„๋กœํ•„ ํŽ˜์ด์ง€์™€ ์—ฐ๊ด€๋œ ํšŒ์›์ •๋ณด์ˆ˜์ • ๊ตฌํ˜„
08.29 ~ 09.02 Entity ํด๋ž˜์Šค ์„ค๊ณ„ ๋ฐ JPA๋กœ ์—ฐ๊ด€๊ด€๊ณ„ ์„ค์ •
์ƒํ’ˆ๊ด€๋ฆฌ ํŽ˜์ด์ง€, ํŒ๋งค๋‚ด์—ญ ํŽ˜์ด์ง€
์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ตฌ๋งค ๊ธฐ๋Šฅ ๊ตฌํ˜„
09.02 ~ 09.06 ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๊ตฌ๋งค ์˜ค๋ฅ˜ ํ•ด๊ฒฐ
๊ฐœ๋ณ„ ์ƒํ’ˆ ๊ตฌ๋งค ๊ธฐ๋Šฅ ์ถ”๊ฐ€
์ฃผ๋ฌธ ์ทจ์†Œ ๊ธฐ๋Šฅ ๊ตฌํ˜„
ํŒ๋งค ํ†ต๊ณ„ ๋ฐ ํŒ๋งค ์ˆœ์œ„ ๊ตฌํ˜„
09.08 ~ 09.12 ๊ธฐ๋Šฅ ๋ณ„ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
์ถฉ์ „ API ์ถ”๊ฐ€
09.13 ~ 09.20 ์™„์„ฑ ๋ฐ ๋ฆฌํŒฉํ† ๋ง ๋ฐ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ฐœ์„ 



๊ตฌ์กฐ ๋ฐ ์„ค๊ณ„

1. Tech Stack

  1. Java : 11 version
  2. Spring Boot : 2.7.2
  3. Build Tool : Gradle 7.2
  4. DB : MariaDB Driver, MySQL Workbench
  5. Etc : Thymeleaf, Spring Security, Spring Web, Spring Data JPA, Lombok, Oauth2-client, Html/Css, JavaScript, Bootstrap 4.3.1



2. ์•„ํ‚คํ…์ฒ˜



3. ERD

DB ์„ค๊ณ„


ํšŒ์›๊ณผ ์ƒํ’ˆ
- ์ƒํ’ˆ์€ 1๋ช…์˜ ํšŒ์›์ด ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๊ณ , ์ƒํ’ˆ์€ ์ž‘์„ฑ์ž(ํšŒ์›) ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
- ํ•œ ๋ช…์˜ ํšŒ์›์€ ์—ฌ๋Ÿฌ ์ƒํ’ˆ์„ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค.
**โ‡’ User(1) - Item(N)**
์ƒํ’ˆ๊ณผ ์ƒํ’ˆ์ด๋ฏธ์ง€
- ์ด๋ฏธ์ง€๋Š” ์ž์‹ ์ด ์–ด๋–ค ์ƒํ’ˆ์— ํ•ด๋‹น๋˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. - ํ•œ ๊ฐœ์˜ ์ƒํ’ˆ์€ ์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
**โ‡’ Item(1) - ItemPhoto(N)**
์žฅ๋ฐ”๊ตฌ๋‹ˆ
- ์–ด๋–ค ํšŒ์›์˜ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์ธ์ง€, ๋‹ด๊ธด ์ƒํ’ˆ๋“ค์€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. - ํ•œ ๋ช…์˜ ํšŒ์›์€ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ์—ฌ๋Ÿฌ ์ƒํ’ˆ์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค. = CartItem์— CartId๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด N๊ฐœ์˜ ์ •๋ณด๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
**โ‡’ User(1) - CartId(N)** - ํ•œ ๊ฐœ์˜ ์ƒํ’ˆ์€ ์—ฌ๋Ÿฌ ํšŒ์›์˜ ์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๊ธธ ์ˆ˜ ์žˆ๋‹ค. = CartItem์— itemId๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด N๊ฐœ์˜ ์ •๋ณด๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
**โ‡’ CartItem(N) - Item(1)**
์ฃผ๋ฌธ
- ์–ด๋–ค ํšŒ์›์˜ ์ฃผ๋ฌธ์ธ์ง€, ๋‹ด๊ธด ์ƒํ’ˆ๋“ค์€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. (์ฃผ๋ฌธ์ƒํ’ˆ์—์„œ ํ•ด๋‹น ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.) - ํ•œ ๋ช…์˜ ํšŒ์›์€ ์—ฌ๋Ÿฌ ์ฃผ๋ฌธ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค. = Cart_Item์— CartId๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด N๊ฐœ์˜ ์ •๋ณด๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
**โ‡’ User(1) - Cart(N)** - ํ•œ ๊ฐœ์˜ ์ฃผ๋ฌธ์€ ์—ฌ๋Ÿฌ ์ƒํ’ˆ๋“ค์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค. = Cart์— UserId๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์—ฌ๋Ÿฌ ์ฃผ๋ฌธ(N) * ์—ฌ๋Ÿฌ ์ƒํ’ˆ(M)๊ฐœ์˜ ์ •๋ณด๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
โ‡’ ๋‹ค๋Œ€๋‹ค ๋งคํ•‘์ด๋‹ˆ ์ฃผ๋ฌธ๊ณผ ์ƒํ’ˆ ์‚ฌ์ด์— **์ฃผ๋ฌธ์ƒํ’ˆ** ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ๋‹ค.
์ฃผ๋ฌธ์ƒํ’ˆ
- ์–ด๋–ค ์ฃผ๋ฌธ์— ์–ด๋–ค ์ƒํ’ˆ๋“ค์ด ๋‹ด๊ฒจ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. - ํ•œ ๊ฐœ์˜ ์ฃผ๋ฌธ์€ ์—ฌ๋Ÿฌ ์ƒํ’ˆ๋“ค์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋‹ค. = Cart_Item์— CartId๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด N๊ฐœ์˜ ์ •๋ณด๊ฐ€ ์ถœ๋ ฅ ๋œ๋‹ค.
**โ‡’ Cart_Item(1) - Cart_Id(N)** - ํ•œ ๊ฐœ์˜ ์ƒํ’ˆ์€ ์—ฌ๋Ÿฌ ์ฃผ๋ฌธ์— ๋‹ด๊ธธ ์ˆ˜ ์žˆ๋‹ค. = Cart_Item์— itemId๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ฉด N๊ฐœ์˜ ์ •๋ณด๊ฐ€ ์ถœ๋ ฅ ๋œ๋‹ค.
**โ‡’ ItemId(N) - Cart_Item(1)** - ์ƒํ’ˆ์€ 1๋ช…์˜ ํšŒ์›์ด ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๊ณ , ์ƒํ’ˆ์€ ์ž‘์„ฑ์ž(ํšŒ์›) ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
- ํ•œ ๋ช…์˜ ํšŒ์›์€ ์—ฌ๋Ÿฌ ์ƒํ’ˆ์„ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค.
**โ‡’ User(1) - Item(N)**



๊ตฌํ˜„ ๊ฒฐ๊ณผ

1) ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ

2) ํŒ๋งค์ž ๋ฉ”์ธ ํŽ˜์ด์ง€(ํ™ˆ)

3) ํŒ๋งค์ž ๋งˆ์ด ํŽ˜์ด์ง€

4) ๊ตฌ๋งค์ž ๋ฉ”์ธ ํŽ˜์ด์ง€(ํ™ˆ)

5) ๊ตฌ๋งค์ž ๋งˆ์ด ํŽ˜์ด์ง€

์ค‘๊ณ ๊ฑฐ๋ž˜ ํ”„๋กœ์ ํŠธ ์„ค๊ณ„ ๋ฐ ์ผ์ • ๊ด€๋ฆฌ

Notion link


๋…ธํ•˜์šฐ ๊ณต์œ 

[Spring] DAO์™€ DTO

[Spring] Spring Data JPA ์ •๋ฆฌ

[Spring] Spring Security

[Spring] Springboot build and deploy tools

[Spring] Thymeleaf์ •๋ฆฌ

[Spring] ๋„๋ฉ”์ธ ํด๋ž˜์Šค ๊ด€๋ จ ์ฐธ๊ณ ์‚ฌํ•ญ(1)

[Spring] ๋„๋ฉ”์ธ ํด๋ž˜์Šค ๊ด€๋ จ ์ฐธ๊ณ ์‚ฌํ•ญ(2)

[Spring] ์„œ๋ฒ„ ์žฌ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ  view ๋ณ€๊ฒฝ ํ™•์ธํ•˜๊ธฐ



๋งˆ์น˜๋ฉฐ

1. ์•Œ๊ฒŒ๋œ ์ 