๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅDEV/Java || Spring

๊ฐ’์„ ๊ฒ€์ฆํ•˜๋Š” ์œ„์น˜๋Š” ์–ด๋””๊ฐ€ ์ข‹์„๊นŒ?

by bdd 2022. 7. 30.

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ฐ’ ๊ฒ€์ฆ ์œ„์น˜์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ–ˆ๋˜ ๋‚ด์šฉ์ธ๋ฐ์š”, DTO์—์„œ @Validation ์„ ์‚ฌ์šฉํ•ด ๊ฐ’์„ ๊ฒ€์ฆํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐ”๊พธ๊ณ ์ž ํ–ˆ๋˜ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์ •๋‹ต์€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ์˜๊ฒฌ์œผ๋กœ ์ฝ์–ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. JPA๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธ€์„ ์ฝ๊ธฐ ์œ„ํ•ด์„œ๋Š” JPA์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. 

 

 

 

 

 

 

1. DTO์—์„œ ๊ฐ’ ๊ฒ€์ฆ


์—”ํ‹ฐํ‹ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ’์„ DTO์—์„œ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์•„๋ž˜์™€ ๊ฐ™์€๋ฐ์š”, ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ๊ฐ’์„ ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ์—์„œ @Valid ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜์ง€๋งŒ ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด ๊ฐ’์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

 

 

 

 

 

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

 

    - ๋งŒ์•ฝ ํ•œ ํ™”๋ฉด์— ๋Œ€ํ•œ ๋ช…์„ธ๊ฐ€ ๋ฐ”๋€๋‹ค๋ฉด ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

    - ๊ฒ€์ฆ ์กฐ๊ฑด์ด ๊นŒ๋‹ค๋กญ๋‹ค๋ฉด ์–ด๋…ธํ…Œ์ด์…˜์ด ๋งŽ์ด ๋‹ฌ๋ฆฌ๊ฒŒ ๋ ํ…๋ฐ ์ด๊ฒƒ์„ ํ•œ ๋ˆˆ์— ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์„๊นŒ?

    - DTO๊ฐ€ ๊ฐ’์„ ๊ฒ€์ฆํ•˜๋Š”๊ฒŒ ๋งž๋Š” ๊ฒƒ์ผ๊นŒ? 

 

 

 

 

 

2. ๊ฐ’ ๊ฐ์ฒด๋ฅผ ํ†ตํ•œ ๊ฒ€์ฆ


๊ทธ๋ž˜์„œ ๊ฐ’ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ์ฒด ๋‚ด๋ถ€์—์„œ ๊ฐ’์„ ๊ฒ€์ฆํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ์š”, ์—”ํ‹ฐํ‹ฐ ๋‚ด๋ถ€์— @Embedded๋กœ ๊ฐ’ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด  ๋‚ด๋ถ€์— ๊ฒ€์ฆํ•  ์กฐ๊ฑด์„ ๋‘๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

 

 

 

 

 

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๊ฐ’ ๊ฐ์ฒด์—์„œ ๊ฐ’์„ ๊ฒ€์ฆํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์ด ํ•œ ๊ณณ๋งŒ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋˜๊ณ  ๊ฐ์ฒด๋ฅผ ์žฌํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ DTO๋„ ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ•ด์ง€๋Š”๋ฐ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฒ€์ฆ์„ ์œ„ํ•œ ์–ด๋…ธํ…Œ์ด์…˜์ด ์‚ฌ๋ผ์ง€๊ณ  ์˜จ์ „ํžˆ ๊ฐ’์„ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ๋งŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

 

 

 

 

๋ฌด์—‡๋ณด๋‹ค ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์‰ฌ์›Œ์ง€๋Š”๋ฐ ๊ฐ’ ๊ฐ์ฒด๋Š” ์žฌํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค. 

 

 

 

 

 

 

 

3. ๋‹จ์ 


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

 

 

 

 

 

 

๋˜ํ•œ JPA๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด protected ์ด์ƒ์˜ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ๋ฐ˜๋“œ์‹œ ๊ฐ€์ ธ๊ฐ€์•ผ ํ•œ๋‹ค๋Š” ์ ๊ณผ ๊ฐ’ ๋น„๊ต๋ฅผ ์œ„ํ•ด Equals & HashCode๋ฅผ ์žฌ์ •์˜ํ•ด์ค˜์•ผ ํ•˜๋Š” ๋ฌธ์ œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

 

 

 

 

๋ฌด์—‡๋ณด๋‹ค ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ณต์žกํ•ด์ง„๋‹ค๋Š” ์ ์ด ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ์ ์ธ๋ฐ์š”, ์ด๋Š” ํฌ๊ฒŒ Getter ์‚ฌ์šฉ, ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰์—์„œ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. Getter๋ฅผ ์‚ฌ์šฉํ• ๋•Œ ๋ž˜ํผ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’ ๊ฐ์ฒด ๋‚ด๋ถ€์™€ ์—”ํ‹ฐํ‹ฐ ๋ชจ๋‘ Getter ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

 

๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰์„ ํ• ๋•Œ๋„ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•œ ๋ฒˆ ๋” ๊ฐ์ฒด๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ์ด์ ์ด ์žˆ์ง€๋งŒ ์ด์ฒ˜๋Ÿผ Getter ์‚ฌ์šฉ, ํ”„๋กœ์ ํŠธ์˜ ๋ณต์žก๋„ ์ฆ๊ฐ€์™€ ๊ฐ™์€ ๋‹จ์ ๋„ ๋ถ„๋ช…ํžˆ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

์›๋ž˜๋Œ€๋กœ๋ผ๋ฉด study.comment๋งŒ ํ•˜๋ฉด ๋˜์ง€๋งŒ study.comments.comment์™€ ๊ฐ™์ด ํ•œ ๋ฒˆ๋” .์„ ์ฐ์–ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

4. Conclusion


๋ชจ๋“  ๊ฐ’๋“ค์„ ๋ž˜ํผ ํด๋ž˜์Šค๋กœ ํฌ์žฅํ•˜๊ณ , @Embedded ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋ ‡๊ฒŒ ์ผ๋ฐ˜์ ์ด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํŒ€์›๋“ค๊ณผ์˜ ํ˜‘์˜๊ฐ€ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„๋งŒ ํ˜‘์˜๊ฐ€ ๋œ๋‹ค๋ฉด ๋ณ€๊ฒฝ์ ์„ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ  ๊ฒ€์ฆ์„ ์œ„ํ•œ ๋งŽ์€ ์–ด๋…ธํ…Œ์ด์…˜์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฝค ๊ดœ์ฐฎ์€ ๋ฐฉ๋ฒ•์ด๋ผ ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค. **ํ•ญ์ƒ ์ƒ๊ฐํ•˜์ง€๋งŒ ์ฝ”๋“œ์— ์ •๋‹ต์€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹ ์˜ ์ƒํ™ฉ์— ๋งž๋Š” ๋ฐฉ๋ฒ•์„ ์ ์šฉํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

 

๋Œ“๊ธ€