๊ด€๋ฆฌ ๋ฉ”๋‰ด

DOing

[WIL3] ํ˜‘์—… ํˆด ํ™œ์šฉํ•˜๊ธฐ์™€ Spring ์‹œ์ž‘ ๋ณธ๋ฌธ

ํ•ญํ•ด99

[WIL3] ํ˜‘์—… ํˆด ํ™œ์šฉํ•˜๊ธฐ์™€ Spring ์‹œ์ž‘

mangdo 2021. 6. 28. 09:35

๐ŸŒŠ WIL 3

2021.6.21 ~ 2021.6.27

 

โ›ต ํ˜‘์—… ํˆด ํ™œ์šฉํ•˜๊ธฐ : ๋…ธ์…˜

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

1. ์ง๊ด€์ ์ด๋‹ค๋ณด๋‹ˆ ๋…ธ์…˜์„ ์‚ฌ์šฉํ•ด๋ณธ ์ ์ด ์—†๋Š” ํŒ€์›๋“ค๋„ ๋น ๋ฅด๊ฒŒ ์ ์‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

2. ๊ณต์œ ํ•˜๊ธฐ์˜ ์˜ต์…˜์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. (ํŽธ์ง‘ ํ—ˆ์šฉ/๋ถˆ๊ฐ€)

3. ํŠน์ • ์‚ฌ๋žŒ๋“ค์„ ์ดˆ๋Œ€ํ•  ์ˆ˜ ์žˆ๊ณ  ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๊ณต๊ฐœํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””์˜ ๋…ธ์…˜ ํŽ˜์ด์ง€

 ๊พธ๋ฏธ๋Š” ๊ฒƒ๋„ ์‹œ๊ฐ„ ๋Œ€๋น„ ๋„ˆ๋ฌด ์ด์˜๊ฒŒ ๋‚˜์™€์„œ ์š”์ฆ˜ ์žฌ๋ฐŒ๊ฒŒ ๊พธ๋ฏธ๊ณ  ์žˆ๋‹ค. ๋…ธ์…˜์— ์ƒ๊ฐ๋ณด๋‹ค ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์ด ์žˆ์–ด์„œ ์š”์ฆ˜์—๋Š” ์ด๊ฒƒ์ €๊ฒƒ ์‹œ๋„ํ•ด๋ณด๊ณ  ์žˆ๋‹ค. ์•„ ์—ญ์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋นผ๊ณ  ๋‹ค ์žฌ๋ฏธ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

 ์œ„์˜ ์‚ฌ์ง„์€ ๋‚ด๊ฐ€ ์ง์ ‘ ๋งŒ๋“  ์ด๋ฒˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””์กฐ์˜ ๋…ธ์…˜ํŽ˜์ด์ง€๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์— ์ง€์นœ ์šฐ๋ฆฌ ํŒ€์›๋“ค์—๊ฒŒ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ํž˜์ด ๋  ์ˆ˜ ์žˆ๊ฒŒ? ๋งŒ๋“ค์–ด ์ฃผ๊ณ  ์‹ถ์—ˆ๋‹ค ๋…ธ์…˜ ํŽ˜์ด์ง€๋ฅผ ๋“ค์–ด์˜ฌ๋•Œ ํ•œ๋ฒˆ์”ฉ ํ”ผ์‹์ด๋ผ๋„ ํ•˜๊ฒŒ ํ•ด์ฃผ๊ณ  ์‹ถ์—ˆ๋‹ค.

 

 

โ›ต ํ˜‘์—… ํˆด ํ™œ์šฉํ•˜๊ธฐ : ์Šฌ๋ž™

Spring ๊ธฐ์ดˆ์ฃผ์ฐจ ์Šคํ„ฐ๋””์˜ ์Šฌ๋ž™๋ฐฉ

  ๋ชฉ์š”์ผ๋ถ€ํ„ฐ๋Š” Spring ๊ธฐ์ดˆ์ฃผ์ฐจ ์Šคํ„ฐ๋””๋ฅผ ์‹œ์ž‘ํ•˜์˜€๋‹ค. ๋“ค์–ด๊ฐ€์ž๋งˆ์ž ์Šคํ„ฐ๋”” ํŒ€์žฅ๋‹˜์ด '์นดํ†ก๋ณด๋‹ค๋Š” ์Šฌ๋ž™์„ ์‚ฌ์šฉํ•ด๋ณด๋Š” ๊ฒŒ ์–ด๋–จ๊นŒ์š”?'๋ผ๊ณ  ์ œ์•ˆํ•˜์…จ๋‹ค. ์ด์ „ ์Šคํ„ฐ๋””์กฐ๋“ค์—์„œ๋Š” ์นดํ†ก๋ฐฉ์„ ํŒŒ์„œ ์†Œํ†ตํ–ˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฒˆ ํŒ€์žฅ๋‹˜์€ ์Šฌ๋ž™์ด ์š”์ฆ˜ ๊ธฐ์—…๋“ค์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๊ธฐ๋„ ํ•˜๊ณ  ์นดํ†ก ๋‹จํ†ก๋ฐฉ๋ณด๋‹ค ํ›จ์”ฌ ์ข‹๋‹ค๋ผ๊ณ  ์ถ”์ฒœํ•˜์…จ๋‹ค. 

  ์ „ํ˜€ ์ƒ๊ฐํ•ด๋ณด์ง€ ์•Š์€ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ์ด๋ฒˆ ๊ธฐํšŒ์— ์ƒˆ๋กœ์šด ํˆด์„ ๋ฐฐ์›Œ๋ณด๋Š” ๊ฒƒ๋„ ๋‚˜์˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์•„์„œ ์ข‹๋‹ค๊ณ  ๋™์˜ํ–ˆ๋‹ค. ์ง€๊ธˆ ๋ช‡์ผ์งธ ์‚ฌ์šฉํ•ด๋ณธ ๊ฒฐ๊ณผ ์นดํ†ก๋ณด๋‹ค ํ›จ์”ฌ ์ข‹๊ณ  ๋‹ค์Œ ํŒ€์—์„œ๋„ ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋‹ค. ์Šฌ๋ž™์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋Š” ํฌ์ŠคํŒ…์„ ๋”ฐ๋กœ ์ž‘์„ฑํ–ˆ์—ˆ์œผ๋‹ˆ ํ™•์ธํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

2021.06.30 - [๊ฐœ๋ฐœ TIP] - ๋– ์˜ค๋ฅด๋Š” ํ˜‘์—…์šฉ ๋ฉ”์‹œ์ €, ์Šฌ๋ž™ ์‚ฌ์šฉ๊ธฐ

 

 

โ›ต ํ˜‘์—… ํˆด ํ™œ์šฉํ•˜๊ธฐ : ํ”ผ๊ทธ๋งˆ

 

  ์ด๊ฑด ๋‚˜์˜ ๊ฐœ์ธ์ ์ธ ์ฑŒ๋ฆฐ์ง€์˜€๋‹ค. ํ”ผ๊ทธ๋งˆ๋Š” ์ตœ๊ทผ ๊ฐ€์žฅ ๋– ์˜ค๋ฅด๋Š” ์›น๊ธฐ๋ฐ˜์˜ UI/UX ๋””์ž์ธ ๋ฐ ํ”„๋กœํ† ํƒ€์ดํ•‘ ํˆด์ด๋‹ค. ๋ณธ๊ฒฉ์ ์ธ ํŒ€ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์•ฝ๊ฐ„์ด๋ผ๋„ ๋ฐฐ์›Œ๋‘”๋‹ค๋ฉด ๋‚˜์ค‘์— ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋‚˜ ๋””์ž์ด๋„ˆ๋“ค๊ณผ ์†Œํ†ตํ•˜๊ธฐ ์ข‹์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๋‚˜์˜ ๊ฒฝ์šฐ์—๋Š” ํฌํ† ์ƒต์„ ์–ด๋Š์ •๋„ ๋ฐฐ์›Œ๋‚ฌ๊ธฐ ๋•Œ๋ฌธ์— ๋ช‡๋ฒˆ ๋งŒ์ง€๋‹ค๋ณด๋‹ˆ ๋ฐ”๋กœ ๊ฐ์„ ์žก์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋‹ˆ ์•Œ๊ฒŒ๋œ ์ ์ธ๋ฐ ๊ตฌ๊ธ€ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ์‚ฌ๋žŒ์ด ํ•จ๊ป˜ ๊ณต๋™์œผ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋‚˜์ค‘์— ํŒ€ํ”„๋กœ์ ํŠธ์—์„œ ํ”„๋กœํ† ํƒ€์ดํ•‘ ํ˜‘์—…ํˆด๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค.

 

 


โ›ต ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” Spring

 ํ•ญํ•ด์— ๋“ค์–ด์˜ค๊ธฐ ์ „๋ถ€ํ„ฐ Spring์„ ์ด๋ฏธ ์–ด๋Š์ •๋„ ๊ณต๋ถ€๋ฅผ ํ•ด์™”์—ˆ๋‹ค. ๋‹น์‹œ์— Spring์„ ๊ณต๋ถ€ํ•˜๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์•ผํ• ์ง€ ๋ชฐ๋ผ์„œ ์ผ๋‹จ ์Šคํ„ฐ๋””์— ๋“ค์–ด๊ฐ€๊ณ  ํ•จ๊ป˜ ์ฑ…์„ ํ†ตํ•ด ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ฑ…์„ ํ†ตํ•ด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ทธ๋Ÿด๋“ฏํ•œ ํŒ€ํ”„๋กœ์ ํŠธ(github ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ์ด๋™ | ํšŒ๊ณ  ํฌ์ŠคํŒ… ์ด๋™)๋ฅผ ๋งŒ๋“ค๊ธฐ๋„ ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งŒ๋“ค๊ณ  ๋‚˜์„œ ์˜๋ฌธ์ด ๋‚จ์•˜๋‹ค.

 

 ์ด๊ฒŒ ์ง€๊ธˆ ์ œ๋Œ€๋กœ ์„ค๊ณ„ํ•œ ๊ฒƒ์ด ๋งž๋‚˜?

 ์ด๊ฒŒ ๋ฌด์Šจ ์ฝ”๋“œ๋”๋ผ?

์˜๋ฌธ์„ ํ’ˆ๊ณ  Spring์„ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ž˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„์ง€๋ฅผ ๋‹ค์‹œ ๊ณต๋ถ€ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋˜ ์ค‘ ํ•ญํ•ด99 ๋ถ€ํŠธ์บ ํ”„๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋ฒˆ์ฃผ๋ถ€ํ„ฐ ๋“ฃ๊ฒŒ๋œ ํ•ญํ•ด99์˜ Spring ๊ฐ•์˜๋Š” ์†”์งํ•˜๊ฒŒ ๋งํ•˜๋ฉด ๊ธฐ๋Œ€ ์ดํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ ํ•จ๊ป˜ ์ข‹์€ ์„ค๊ณ„์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์€ ๊ฒƒ์ด ์ข‹์•˜๋‹ค. ๋ชจ๋ฅด๋Š”๊ฒŒ ์žˆ์œผ๋ฉด ์งˆ๋ฌธํ•  ํŠœํ„ฐ๋‹˜๋„ ๊ณ„์‹œ๊ณ  ํ•จ๊ป˜ ๊ณต๋ถ€ํ•˜๊ณ  ๊ณ ๋ฏผํ•˜๋Š” ํŒ€์›๋“ค์ด ์žˆ์–ด์ข‹์•˜๋‹ค.

JPA๊ด€๋ จ๋œ ์งˆ๋ฌธ

 ์œ„์˜ ์‚ฌ์ง„ ์† ์งˆ๋ฌธ ์™ธ์—๋„ ๊ทธ๋™์•ˆ ์ •๋ง ๊ถ๊ธˆํ•ด์™”๋˜ Service-ServiceImpl ๊ด€๋ จ๋œ ์งˆ๋ฌธ๊ณผ DTO ์‚ฌ์šฉ์— ๊ด€๋ จ๋œ ์งˆ๋ฌธ์„ ํŠœํ„ฐ๋‹˜์—๊ฒŒ ์—ฌ์ญค๋ณด์•˜์—ˆ๋‹ค.

 

Q1) ๋‹ค๋ฅธ ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋”๋ผ๋„ ๊ฐ™์€ ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” DTO๋“ค์— ๋Œ€ํ•˜์—ฌ ์žฌํ™œ์šฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•˜์—ฌ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  DTO๋ฅผ ์ƒˆ๋กœ ๋˜ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด DTO๊ฐ€ ์ •๋ง ๋งŽ์•„์งˆํ…๋ฐ ์ด ๋ฐฉ๋ฒ•์ด ๋งž๋Š” ๋ฐฉ๋ฒ•์ธ๊ฐ€์š”?

A1) ๋‹ค๋ฅธ ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด DTO๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ง„ํ–‰ํ•˜์‹œ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ DTO๊ฐ€ ๋งŽ์ด ๋‚˜์˜จ๋‹ค๋Š” ๊ฒƒ์€ ์ง€๊ทนํžˆ ์ •์ƒ์ž…๋‹ˆ๋‹ค. ์ดํ›„์— ๋น„์Šทํ•œ DTO๋“ค ๋ผ๋ฆฌ ์ƒ์†์„ ๋ฐ›์„ ์ˆ˜๋„ ์žˆ๊ณ  ๋ฆฌํŒฉํ† ๋ง ๊ณผ์ •์„ ๊ฑฐ์น  ์ˆ˜๋Š” ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์ง€๊ธˆ ๋‹จ๊ณ„์—์„œ๋Š” ๋‹ค๋ฅธ ๋ชฉ์ ์ด๋ผ๋ฉด DTO๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“œ์‹œ๋Š” ๋ฐฉ๋ฒ•์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

Q2) Service - ServiceImpl๊ตฌ์กฐ์— ๋Œ€ํ•œ ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค!

 ์ œ๊ฐ€ ์ด์ „์— Spring์„ ๋ฐฐ์šธ ๋•Œ์—๋Š” Service-ServiceImpl๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ž์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹œ ์ €๋Š” ๊ณ„์ธต ์‚ฌ์ด์˜ ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„๋ฅผ ์œ„ํ•ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ๊ณ„์ธต ์‚ฌ์ด ํ˜ธ์ถœ์ด ์ด๋ค„์ ธ์•ผํ•œ๋‹ค๊ณ  ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.

 ํ•˜์ง€๋งŒ ํŠœํ„ฐ๋‹˜์˜ Spring ๊ธฐ์ดˆ ๊ฐ•์˜-2์ฃผ์ฐจ๋ฅผ ๋ณด๋ฉด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฑฐ์น˜์ง€์•Š๊ณ  Service๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋”๋ผ๊ตฌ์š”. ์ด์— ์˜๋ฌธ์„ ๊ฐ€์ง€๊ณ  ๊ด€๋ จํ•˜์—ฌ ์ฐพ์•„๋ณด๋‹ˆ ์‹ค์ œ ์š”์ฆ˜ ํ˜„์—…์—์„œ๋Š” Service-ServiceImpl ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ํฌ์ŠคํŒ…์„ ์ฝ๊ธฐ๋„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.  Service - ServiceImpl๊ตฌ์กฐ์— ๋Œ€ํ•œ ํŠœํ„ฐ๋‹˜์˜ ์ƒ๊ฐ๊ณผ ์‹ค์ œ ํ˜„์—…์—์„œ๋Š” ์–ด๋–ค ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์—ฌ์ญค๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

A2) ์•Œ์•„๋ณด์‹  ๋‚ด์šฉ์ด ๋Œ€๋ถ€๋ถ„ ๋งž์Šต๋‹ˆ๋‹ค. Service-ServiceImpl๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ ์ด์œ ๋Š” ๋‚ฎ์€ ๊ฒฐํ•ฉ๋„ ๋•Œ๋ฌธ์ด์ง€๋งŒ ๋Œ€๋ถ€๋ถ„ 1:1๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๋“ค์ด ์ด์— ํ•„์š”์„ฑ์— ๋Œ€ํ•ด ๊ณต๊ฐํ•˜์ง€ ๋ชปํ–ˆ๊ณ  ์š”์ฆ˜์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ถ”์„ธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ถ„๋ช…ํžˆ Service-ServiceImpl ๊ตฌ์กฐ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋„ ์žˆ๊ธฐ๋•Œ๋ฌธ์— ํ•„์š”์‹œ์—๋Š” Service-ServiceImpl๋กœ ์ˆ˜์ •ํ•˜์–ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

Q3) DB ์˜ ๋ณตํ•ฉํ‚ค์— ๋Œ€ํ•ด JPA ์—์„œ ID ์„ค์ •์„ ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?

A3) @Id ๋Œ€์‹  @EmbededId ํ˜น์€ @IdClass ์‚ฌ์šฉ (https://techblog.woowahan.com/2595/)

 

Q3-2) ์ด์™€ ๊ด€๋ จ๋œ ์งˆ๋ฌธ์„ ํ•˜๋‚˜ ๋” ์žˆ์Šต๋‹ˆ๋‹ค!!
ํ˜น์‹œ JPA์—์„œ๋Š” PK(๊ธฐ๋ณธํ‚ค)๋ฅผ auto increment๋˜๋Š” ์ปฌ๋Ÿผ์œผ๋กœ๋งŒ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋‚˜์š”?
  ์ œ๊ฐ€ ์˜ˆ์ „์—๋Š” Spring-MyBatis๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— DB ํ…Œ์ด๋ธ”์„ ์ง์ ‘ ์ž‘์„ฑํ•˜์˜€์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ํ•„์š”ํ•˜๋‹ค ์ƒ๊ฐํ•˜๋ฉด ๋ณตํ•ฉํ‚ค๋ฅผ ๋งŒ๋“ค๊ธฐ๋„ ํ–ˆ์—ˆ๊ตฌ์š”. ๋˜ ๊ทธ๋•Œ ์ €๋Š” User๋ผ๋Š” ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๋•Œ ์•„์ด๋””(username)๋Š” Userํ…Œ์ด๋ธ”์—์„œ ์œ ์ผํ•œ ๊ฐ’์ด๋‹ˆ, ์ด ๊ฐ’์„ PK๋กœ ์ง€์ •ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŠœํ„ฐ๋‹˜ 2์ฃผ์ฐจ ๊ฐ•์˜์—๋ณด๋‹ˆ ๋”ฐ๋กœ auto increment๋˜๋Š” ์ปฌ๋Ÿผ(id)๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด ์ฃผ์…จ๋”๋ผ๊ตฌ์š”.
  ์‚ฌ์‹ค ์ œ๊ฐ€ DB๋ฅผ ๋ฐฐ์šธ๋•Œ๋Š” ์ด๋Ÿฐ ์ธ์กฐ์‹๋ณ„์ž๋Š” ๋  ์ˆ˜ ์žˆ์œผ๋ฉด ๋งŒ๋“ค์ง€ ๋ง๋ผ๊ณ  ๋ฐฐ์šฐ๊ธฐ๋„ ํ–ˆ๊ณ  ์ € ์—ญ์‹œ๋„ ๋ณ„๋กœ ํ•„์š”์—†๋Š” ์ปฌ๋Ÿผ์„ ๊ตณ์ด ๋งŒ๋“ค์–ด์•ผํ•˜๋‚˜?๋ผ๋Š” ์ƒ๊ฐ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
ํ˜น์‹œ ์ œ๊ฐ€ ๋†“์น˜๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„์ด ์žˆ์„๊นŒ์š”? ์•„๋‹ˆ๋ฉด JPA์˜ ํŠน์ง•์ƒ..?๊ทธ๋Ÿฐ๊ฑด๊ฐ€์š”?  

 

A3-2) id ๋ฅผ ๊ธฐ๋ณธํ‚ค๋กœ ํ–ˆ์„ ๋•Œ์˜ ์žฅ์ ์ด ์žˆ๋Š”๋ฐ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์žฅ์ ์ด ๋˜๋Š” ๊ฑด ์•„๋‹Œ ๊ฑฐ ๊ฐ™์ง€๋งŒ, ์ œ๊ฐ€ ์•„๋Š” ๋ฒ”์œ„ ๋‚ด์—์„œ ๋ง์”€ ๋“œ๋ฆด๊ป˜์š”.
    1. id ๋ฅผ PK ๋กœ ํ•˜๋ฉด PK ์— ๋Œ€ํ•œ ํ†ต์ผ์„ฑ์ด ์ƒ๊ธด๋‹ค. ์ฆ‰, ์–ด๋–ค ํ…Œ์ด๋ธ”์—์„œ๋“  PK ๋Š” ์ฆ๊ฐ€ํ•˜๋Š” ๋ฒ”์œ„๋ผ๊ณ  ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
   2. id ์ˆœ์œผ๋กœ ์ •๋ ฌํ•  ๋•Œ ์„ฑ๋Šฅ์ƒ ๋„์›€์ด ๋œ๋‹ค. id ์ •๋ ฌ ์ˆœ์ด ๊ฒฐ๊ตญ data ์˜ ์ƒ์„ฑ ์ˆœ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
        a.๊ฒŒ์‹œํŒ ๊ธ€๋กœ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด๋ฉด.. ๊ฒŒ์‹œํŒ ๊ธ€์ด ์ƒ์„ฑ๋˜๋Š” ์ˆœ์„œ๋กœ id ๊ฐ€ ๋งŒ๋“ค์–ด์งˆํ…๋ฐ์š”. DB ๋ฐ์ดํ„ฐ๋„ ๊ฒฐ๊ตญ HDD (ํ•˜๋“œ ๋””์Šคํฌ) ์— ์ €์žฅ๋˜๋Š”๋ฐ, id ์ˆœ์œผ๋กœ ์ €์žฅ๋œ๋‹ค๋ฉด ๋‚˜์ค‘์— ๊ฒŒ์‹œํŒ์—์„œ ์ตœ์‹  ์ˆœ์œผ๋กœ ๊ธ€์„ ์ฝ์–ด์˜ฌ ๋•Œ ์„ฑ๋Šฅ ์ƒ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์™œ๋ƒ๋ฉด HDD ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ฌ ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ทผ์ฒ˜์— ์žˆ๋Š”๊ฒŒ ์œ ๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ์š”. ์ž์„ธํ•œ ๋ถ€๋ถ„์€ ๋ชจ๋ฅด์…”๋„ ๋ ๊บผ ๊ฐ™๊ณ , ์•”ํŠผ ์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ์ œ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค.