๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป develop

[spring] ์Šคํ”„๋ง์œผ๋กœ ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ ๋งŒ๋“ค๊ธฐ(feat. ์Šคํ”„๋ง ๊ฐœ๋…)

jcowwk 2024. 4. 10. 22:03

์Šคํ”„๋ง์œผ๋กœ ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ ๋งŒ๋“ค๊ธฐ(feat. ์Šคํ”„๋ง ๊ฐœ๋…)


์Šคํ”„๋ง ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ •๋ฆฌํ•œ ๋‚ด์šฉ ์ž…๋‹ˆ๋‹ค !
์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์„ธ์š” :)

 

[๊ธฐ๋ณธ ๊ฐœ๋…]
1. MVC ํŒจํ„ด

2. DB ํ†ต์‹  API

3. ์„œ๋ฒ„ ํ…œํ”Œ๋ฆฟ ์—”์ง„

4. redirect, forward

5. ํ”„๋ ˆ์ž„์›Œํฌ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

 

[ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ]
6. ๋กœ์ปฌ์„œ๋ฒ„ ์—ฐ๊ฒฐ ๋ฐ ํŒŒ์ผ ๊ตฌ์„ฑ
7. Controller
8. DTO
9. Entity
10. Service
11. Repository
 
๋ณธ ํฌ์ŠคํŒ…์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ๊นŒ์ง€ ํ™˜๊ฒฝ ์„ค์ •์ด ๋˜์–ด์žˆ๋‹ค๋Š”๊ฐ€์ • ํ•˜์— ์ž‘์„ฑํ•˜์˜€๊ณ , 
UI๋ณด๋‹ค๋Š” ๊ธฐ๋Šฅ์ ์ธ ๋ถ€๋ถ„์— ์ง‘์ค‘ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.


1. MVC ํŒจํ„ด

Model (๋ฐ์ดํ„ฐ), View (ํ™”๋ฉด), Controller (์ฒ˜๋ฆฌ) ๋กœ ๊ตฌ์„ฑ๋œ ํŒจํ„ด ์ž…๋‹ˆ๋‹ค.

 

๋กœ๊ทธ์ธ ์‹œ "~๋‹˜ ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค!" ๋ผ๋Š” ๋ฌธ๊ตฌ๋Š” ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์–ด์ง„๊ฑธ๊นŒ์š”?

์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ •๋ณด๋ฅผ model์— ๋‹ด์•„์„œ view๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค˜์•ผ ํ•˜๋Š”๋ฐ,

์ด๋•Œ controller๊ฐ€ ๋‘˜ ์‚ฌ์ด์—์„œ ์ „๋‹ฌํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

 

2. DB ํ†ต์‹  API

๋งŒ์•ฝ ์šฐ๋ฆฌ๊ฐ€ ์ž…๋ ฅํ•œ ์ •๋ณด๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ• ๊นŒ์š”?

์ด๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ†ต์‹  API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ •๋ณด๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

- JDBC

์ง์ ‘ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํ†ต์‹ ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

 

- JPA

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ฐ์ฒด๋ฅผ ๋งคํ•‘ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

ORM์œผ๋กœ ์ง์ ‘ SQL ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ,

๊ฐ์ฒด์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์Šคํ‚ค๋งˆ๋ฅผ ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

Repository๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ JpaRepository์™€ CrudRepository๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ,

๊ฐ„๋‹จ CRUD ์ž‘์—… ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ JPA ๊ธฐ๋Šฅ ๋“ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด

JpaRepository๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

3. ์„œ๋ฒ„ ํ…œํ”Œ๋ฆฟ ์—”์ง„

์‚ฌ์šฉ์ž์˜ ํ™”๋ฉด์— ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ์–ป๊ณ  ์‹ถ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ• ๊นŒ์š”?

์ง€์ •๋œ ํ…œํ”Œ๋ฆฟ ์–‘์‹๊ณผ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•ฉ์ณ์ ธ์„œ html ๋ฌธ์„œ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ธ

์„œ๋ฒ„ ํ…œํ”Œ๋ฆฟ ์—”์ง„์„ ํ™œ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋Š”๋ฐ ๊ทธ ์ค‘์—์„œ ์ €๋Š” ์ฃผ๋กœ thymleaf๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

- JSP

- Thymleaf

- Mustache

 

4. redirect, forward

- redirect

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ณ€ํ™”๊ฐ€ ์ƒ๊ธฐ๋Š” ์ž‘์—…์„ ํ–ˆ์„ ๋•Œ, ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

- forward

์ผ๋ฐ˜์ ์œผ๋กœ ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•  ๋•Œ, ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

5. ํ”„๋ ˆ์ž„์›Œํฌ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

ํ”„๋กœ๊ทธ๋žจ์˜ ์ฃผ๋„์„ฑ์ด ๋ˆ„๊ตฌ์—๊ฒŒ ์žˆ๋Š”๊ฐ€์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

- ํ”„๋ ˆ์ž„์›Œํฌ

ํŠน์ • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ์™€ ํ๋ฆ„์„ ์ œ๊ณต

 

- ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๊ฐœ๋ฐœ์ž๊ฐ€ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋„๊ตฌ


6. ๋กœ์ปฌ ์„œ๋ฒ„ ์—ฐ๊ฒฐ ๋ฐ ํŒŒ์ผ ๊ตฌ์„ฑ

์ €๋Š” MVC ํŒจํ„ด์„ ํ™œ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด
controller, dto, entity, repository, service 5๊ฐœ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๋‚˜๋ˆด์Šต๋‹ˆ๋‹ค.
 
- controller
์‚ฌ์šฉ์ž์˜ HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
 
- dto
์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ •๋ณด์ด๋‹ค.
controller์™€ service ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.
 
- entity
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‹ค์ œ ์ €์žฅ๋˜๋Š” ๊ฐ์ฒด์ด๋‹ค.
 
- repository
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ด€๋ จ๋œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
์ €์žฅ, ์‚ญ์ œ, ๊ฐ€์ ธ์˜ค๊ธฐ ๋“ฑ๋“ฑ..
 
- service
controller์—์„œ ์š”์ฒญ์„ ๋ฐ›๊ณ , ๊ทธ ์š”์ฒญ์— ๋Œ€ํ•œ ์‹ค์ œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
 
์šฐ์„ , ๋กœ์ปฌ ์„œ๋ฒ„์— ์—ฐ๊ฒฐ์ด ์ž˜ ๋˜๋Š”์ง€๋ถ€ํ„ฐ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค.

 
@GetMapping("/") ์ฝ”๋“œ๋Š” HTTP GET ๋ฉ”์„œ๋“œ๋กœ ์ ‘๊ทผํ•˜๋Š” '/' ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ํ•ธ๋“ค๋Ÿฌ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
return "index"; ์ฝ”๋“œ๋Š” spring์ด "index"๋ผ๋Š” ์ด๋ฆ„์˜ view๋ฅผ ์ฐพ์•„์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์ผ๋ฐ˜์ ์œผ๋กœ ๋ทฐ๋Š” 'src/main/resources/templates' ํด๋” ์•„๋ž˜์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.
 

 
์ง€๊ธˆ๊นŒ์ง€์˜ ์ƒํ™ฉ๋งŒ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด localhost:8080์œผ๋กœ ์ ‘์†ํ–ˆ์„ ๋•Œ,
๋กœ์ปฌ ์„œ๋ฒ„์— ์—ฐ๊ฒฐ์ด ๋˜๊ณ  Hello Jcowwk's Board ! ๊ธ€์ž๊ฐ€ ๋ณด์—ฌ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์—ฌ๊ธฐ๊นŒ์ง€ ํ™•์ธํ–ˆ์œผ๋ฉด ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.
 

7. Controller

HomeController๋Š” ํ™ˆ ํŽ˜์ด์ง€์™€ ๊ด€๋ จ๋œ ์ฒ˜๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜์˜€๊ณ ,
ํšŒ์›๊ฐ€์ž…์„ ์œ„ํ•ด์„œ๋Š” MemberController๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ฉค๋ฒ„์™€ ๊ด€๋ จ๋œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค๋‹ˆ๋‹ค.
 
ํ™ˆ ํ™”๋ฉด์—์„œ ๋กœ๊ทธ์ธํ•˜๊ณ , ํšŒ์›๊ฐ€์ž…์„ ํด๋ฆญํ•˜๋ฉด ํšŒ์›๊ฐ€์ž… ์ฐฝ์œผ๋กœ ๋„˜์–ด๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ
ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
 
- MemberController, index.html

 
index.html์— ์œ„์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด, ํ˜„์žฌ localhost์— ์ ‘์†ํ–ˆ์„ ๋•Œ ๋ณด์ด๋Š” ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
 
ํšŒ์›๊ฐ€์ž…์„ ๋ˆŒ๋ €์„ ๋•Œ๋Š” ํšŒ์›๊ฐ€์ž… ์ฐฝ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— GET ๋งคํ•‘์„ ํ•˜๊ณ ,
๋กœ๊ทธ์ธ์„ ๋ˆŒ๋ €์„ ๋•Œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ id, pw๊ฐ€ ์„œ๋ฒ„๋กœ ์ „๋‹ฌ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— POST ๋งคํ•‘์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
 
@GetMapping("member/joinForm")์™€ @GetMapping("/member/joinForm")๋Š” ๋™์ผํ•œ ๊ฒฝ๋กœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ฒซ ๋ฒˆ์งธ์˜ ๊ฒฝ์šฐ์—๋Š” ์ƒ๋Œ€ ๊ฒฝ๋กœ, ๋‘ ๋ฒˆ์งธ๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ ์•ˆ์ „์„ ์œ„ํ•ด์„œ๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
์œ„์˜ ์บก์ณ๋ณธ์—์„œ๋Š” ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋Š”๋ฐ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ๋ฐ”๊ฟ”์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ ,
@controller ์–ด๋…ธํ…Œ์ด์…˜์ด ๋น ์กŒ๋Š”๋ฐ ์ถ”๊ฐ€ํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด๋ด…์‹œ๋‹ค!
 
์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ๋งž๊ฒŒ controller์—์„œ ์‘๋‹ต์„ ํ•ด์ค„ ๋•Œ return ๊ฐ’์ด "member/joinForm"๊ณผ "member/home"์œผ๋กœ ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋Š” templates์˜ member ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์— ์กด์žฌํ•˜๋Š” joinForm.html, home.html์œผ๋กœ ์ด๋™ํ•˜๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
 
templates์•ˆ์— member ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ์•ˆ์— joinForm.html๊ณผ home.html์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์‹คํ–‰์„ ํ•˜๋ฉด ๋™์ž‘์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๋กœ๊ทธ์ธ๊ณผ ํšŒ์›๊ฐ€์ž…์„ ๋ˆŒ๋ €์„ ๋•Œ ์ฐฝ์ด ์ œ๋Œ€๋กœ ๋œฌ๋‹ค๋ฉด ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.
 
- MemberController, joinForm.html

 
joinForm.html๊ณผ MemberController์— ์œ„์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
 
ํšŒ์›๊ฐ€์ž…์ด ์™„๋ฃŒ๋˜๊ฑฐ๋‚˜ ์ทจ์†Œ๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ™ˆ ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ ๋‹จ๊ณ„๋ถ€ํ„ฐ๋Š” ํšŒ์›๊ฐ€์ž… ์ฐฝ์—์„œ ๊ฐ€์ž…์™„๋ฃŒ๋ฅผ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ํ™•์ธ์„ ๋ˆŒ๋ €์„ ๋•Œ ์‹คํ–‰๋˜๋Š” ์ž‘์—…์˜ ๋กœ์ง์„
๋งŒ๋“ค์–ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
 

8. DTO

ํšŒ์›๊ฐ€์ž… ์ฐฝ์—์„œ ํ™•์ธ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ id๊ฐ€ ์ค‘๋ณต๋œ id์ธ์ง€ ํ™•์ธ ํ•˜๋Š” ์ž‘์—…๊ณผ,
๊ฐ€์ž…์™„๋ฃŒ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํšŒ์› ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ์ž‘์—…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
 
์ด ์ž‘์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” DTO๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๋ฐ›์€ ํ›„,
Entity๋กœ ๋ฐ”๊พธ์–ด์ค€ ๋‹ค์Œ์— Repository๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํ†ต์‹ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ์ž‘์—…์„ ์‹ค์ œ๋กœ ํ•˜๋Š” ๊ฒƒ์ด Service์ž…๋‹ˆ๋‹ค.
 
์šฐ์„  DTO๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
 
- MemberDTO, MemberController

 
ํšŒ์›๊ฐ€์ž… ์‹œ์— id, pw, name์„ ์ž…๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
joinForm.html์—์„œ <input ~ name = "">๋ผ๋Š” ๋ถ€๋ถ„์ด ์žˆ๋Š”๋ฐ name์— ์ž…๋ ฅ๋œ ๋ณ€์ˆ˜๋ช…์„
@ModelAttribute ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ๋‹ด์•„์„œ ๊ฐ™์€ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง„ DTO ๋ณ€์ˆ˜์™€ ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.
 
์˜ˆ๋ฅผ ๋“ค์–ด ํ˜„์žฌ๋Š” name์˜ ๊ฐ’์ด joinId๋กœ ๋˜์–ด์žˆ๋Š” ๊ฒƒ์„ memberEmail๋กœ ๋ฐ”๊พธ๋ฉด
์•„์ด๋””์— ์ž…๋ ฅํ•œ ๊ฐ’์„ memberEmail์— ์ž˜ ๋งคํ•‘์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์„ค๋ช…์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด html์˜ name๋ถ€๋ถ„์„ ๋ชจ๋‘ ๋‹ค๋ฅด๊ฒŒ ํ–ˆ๋Š”๋ฐ DTO ๋ณ€์ˆ˜ ์ด๋ฆ„๊ณผ ๊ฐ™๊ฒŒ ๋ฐ”๊ฟ”์ฃผ๋„๋ก ํ•ฉ์‹œ๋‹ค.
 
toMemberDTO ํ•จ์ˆ˜๋Š” MemberEntity๋ฅผ MemberDTO๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.
๋กœ๊ทธ์ธํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํ†ต์‹ ํ•˜์—ฌ ํšŒ์›๊ฐ€์ž…๋œ ์‚ฌ์šฉ์ž์ธ์ง€ ํ™•์ธํ•˜๋ฉด์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
 

9. Entity

- MemberEntity

 
DTO๋ฅผ ๋‹ค ๋งŒ๋“ค์—ˆ์œผ๋ฉด Entity๋„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.
์ด์ œ ํšŒ์›๊ฐ€์ž…์„ ์œ„ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
 

10. Service

- MemberController, MemberService

 
ํšŒ์›๊ฐ€์ž… ์ฐฝ์— ๋“ค์–ด๊ฐ€์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋‚ด์šฉ์ด @ModelAttribute ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด memberDTO์™€ ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.
memberDTO์— ๋‹ด๊ธด ๋‚ด์šฉ์„ memberService๋กœ ๋ณด๋‚ด์„œ ์ž‘์—…์„ ํ•ด์ฃผ๊ณ , controller๋Š” ํŽ˜์ด์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
 

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

11. Repository

- MemberRepository

 
JpaRepository๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ MemberEntity์— ๋งคํ•‘๋œ ์ •๋ณด์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”์˜ ํ†ต์‹ ์„ ํ•ด์ฃผ๋Š”
MemberRepository์˜ ์ฝ”๋“œ๋ฅผ ์œ„์™€ ๊ฐ™์ด ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
 
JpaRepository๋ฅผ extendsํ•˜์—ฌ save(), findById() ๋“ฑ ๊ธฐ๋ณธ์œผ๋กœ ๋‚ด์žฅ๋œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


 ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฐ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„
ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค !

https://jcowwk.tistory.com/m/125

 

[spring] ์Šคํ”„๋ง์œผ๋กœ ๋กœ๊ทธ์ธ ๋ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ธฐ๋Šฅ ๋งŒ๋“ค๊ธฐ

์Šคํ”„๋ง์œผ๋กœ ๋กœ๊ทธ์ธ ๋ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๊ธฐ๋Šฅ ๋งŒ๋“ค๊ธฐ ์Šคํ”„๋ง ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ •๋ฆฌํ•œ ๋‚ด์šฉ ์ž…๋‹ˆ๋‹ค ! ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์„ธ์š” :) 1. ๋“ค์–ด๊ฐ€๊ธฐ ์ „ 2. Controller 3. Service 4. joinForm.html https://jcowwk.tistory.co

jcowwk.tistory.com