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

์ผ๊ธ‰ ์ปฌ๋ ‰์…˜๊ณผ ์ฃผ์˜์‚ฌํ•ญ

by bdd 2022. 2. 22.

Collection์„ Wrapping ํ•˜๋ฉด์„œ ๊ทธ ์™ธ์˜ ๋‹ค๋ฅธ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ์ƒํƒœ. ๋งด๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ Collection์˜ ์ž์†/๊ตฌํ˜„์ฒด๋ผ๋ฉด ์–ด๋–ค ์ข…๋ฅ˜๋“  ์ƒ๊ด€์—†๋‹ค. 

 

 

 

 

 

 

 

1. ์žฅ์ 


์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ถˆ๋ณ€๊ฐ์ฒด, ์‘์ง‘์„ฑ ์žˆ๋Š” ๊ฐ์ฒด์˜ ์žฅ์ ๋“ค์„ ๋ชจ๋‘ ์ทจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ์ž์‹ ๊ณผ ์—ฐ๊ด€๋œ ๋กœ์ง์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด์—๋Œ€ํ•ด ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.  *๊ฐ€๋ณ€ ๊ฐ์ฒด์˜ ์œ„ํ—˜์„ฑ์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋ž˜ ๊ธ€์„ ์ฐธ์กฐ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

๊ฐ€๋ณ€ ๊ฐ์ฒด์˜ ์œ„ํ—˜์„ฑ

๊ฐ€๋ณ€ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์›๋ณธ์ด ์ˆ˜์ •๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋ฅผ ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์„ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ด ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋Š” ๊ฐ€๋ณ€ ํด๋ž˜์Šค Numbers

tmit10.tistory.com

 

 

 

 

 

1-1. ๋ถˆ๋ณ€(Immutable)

์ƒ์„ฑ์ž๋กœ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ์žฌํ• ๋‹น ๋˜๋Š” ์ˆ˜์ •ํ•  ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆ๋ณ€์„ฑ์ด ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ ๋ถˆํ•„์š”ํ•œ ๊ฒ€์ฆ ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ปฌ๋ ‰์…˜์„ ๋งˆ์Œ๊ป ๊ณต์œ ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 ์ˆ˜์ •์ž(setter)๊ฐ€ ์—†์œผ๋ฉฐ ์žฌํ• ๋‹น์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค.

 

 

 

 

 

 

 

๋ถˆ๋ณ€ํ•˜๋Š” ๊ฐ’์˜ ์žฅ์ 

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

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

 

 * ๋„๋ฉ”์ธ์ฃผ๋„์„ค๊ณ„ ์ฒ ์ €์ž…๋ฌธ.

 

 

 

 

 

1-2. ์‘์ง‘์„ฑ ์žˆ๋Š” ๊ฐ์ฒด

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

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญ


์ด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋””๋ฏธํ„ฐ์˜ ๋ฒ•์น™์„ ์กฐ์‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์„ ์กฐํšŒํ•˜๊ฒŒ ๋˜๋ฉด 

 

 

 

 

 

 

 

 

 

 

2. JPA์™€ ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜


 

 

 

 

์•ˆ๋…•ํ•˜์„ธ์š” ๊ด€๊ณ„๋ฅผ ๋งบ์„๋•Œ ๊ถ๊ธˆํ•œ ์ ์ž…๋‹ˆ๋‹ค. - ์ธํ”„๋Ÿฐ | ์งˆ๋ฌธ & ๋‹ต๋ณ€

๊ฐœ์ธ์ ์œผ๋กœ ๊ฐ์ฒด์ง€ํ–ฅ์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ฒจ์„œ ์งˆ๋ฌธ ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๋„๋ฉ”์ธ์„ ์„ค๊ณ„ํ•˜์‹ค๋•Œ ๋งŒ์•ฝ Member๋ผ๋Š” ๋„๋ฉ”์ธ์—์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ž๋™์ฐจ๋ฅผ ๊ฐ€์ง„๋‹ค๋Š” ๊ด€์ ์—์„œ @OneToMany(cascade = CascadeType.ALL) ๋ฅผ ์‚ฌ

www.inflearn.com

 

 

'๐Ÿ–ฅDEV > Java || Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

@Embedded์™€ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž  (0) 2022.07.14
๋ธŒ๋ฆฟ์ง€ ํŒจํ„ด  (0) 2022.07.10
์‹ฑ๊ธ€ํ†ค๊ณผ ๋ฌธ์ œ์   (0) 2022.07.10
TreeSet  (0) 2022.02.22
์ƒ์ˆ˜ํ’€๊ณผ String  (0) 2022.02.20

๋Œ“๊ธ€