๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ–ฅDEV/Java || Spring15

ํŒ”๋กœ์ž‰/ํŒ”๋กœ์›Œ ๊ตฌํ˜„์—์„œ ๋งˆ์ฃผ์นœ ๋™์‹œ์„ฑ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ํŒ”๋กœ์›Œ ์ˆ˜๋ฅผ ์ฆ๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ค„์ผ๋•Œ ๋™์‹œ์„ฑ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ–ˆ๋˜ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ํ•™์Šต๊ณผ์ •์—์„œ ์ž‘์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž˜๋ชป๋œ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1. ๋™์‹œ์„ฑ ๋ฌธ์ œ ํ˜„์žฌ ํŒ”๋กœ์šฐ/์–ธํŒ”๋กœ์šฐ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋กœ์ง์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํŒ”๋กœ์ž‰/์–ธํŒ”๋กœ์šฐ์„ ํ•˜๊ฒŒ๋˜๋ฉด ํšŒ์› ํ…Œ์ด๋ธ”์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŒ”๋กœ์ž‰ ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด 1 ์ฆ๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ฐ์†Œํ•˜๋Š” ๋กœ์ง์ธ๋ฐ์š”, ์ด ๋ถ€๋ถ„์—์„œ ๋™์‹œ์„ฑ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์™œ ํšŒ์› ํ…Œ์ด๋ธ”์ด ํŒ”๋กœ์ž‰ ์นด์šดํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์˜๋ฌธ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์กฐํšŒ์˜ ํŽธ์˜์„ฑ์„ ์œ„ํ•ด ์ด๋ ‡๊ฒŒ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•œ ํšŒ์›์˜ ๋ช‡๋ช…์˜ ํŒ”๋กœ์ž‰/ํŒ”๋กœ์›Œ ์ˆ˜๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด ์„œ๋Š” ์กฐ์ธ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„์™€ ๊ฐฏ์ˆ˜๋ฅผ ์„ธ๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ง์ ‘ ์นด์šดํŠธ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ ค์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋งค๋ฒˆ ์กฐ์ธ/์นด์šดํŠธ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๋Š” ๊ฒƒ์€ .. 2022. 9. 19.
๋„๋ฉ”์ธ ๋กœ์ง์ด ํ•ญ์ƒ ์ข‹์„๊นŒ? ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ JPA๋ฅผ ํ™œ์šฉํ•œ ๋„๋ฉ”์ธ ๋กœ์ง์ด ํ•ญ์ƒ ์ข‹์„๊นŒ? ์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ–ˆ๋˜ ๋‚ด์šฉ์ธ๋ฐ์š” ๊ฐ„๋žตํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. **์ฝ”๋“œ์—๋Š” ์ •๋‹ต์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ด€์ ์ด๋ผ๊ณ  ๋ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. - ๋„๋ฉ”์ธ ๋กœ์ง(JPA) ์œผ๋กœ ์ข‹์•„์š”๋ฅผ ๊ตฌํ˜„ํ–ˆ์„ ๊ฒฝ์šฐ - ๊ฐœ์„  ๋ฐ ๋„๋ฉ”์ธ ๋กœ์ง์ด ์•ˆ์ข‹์„๋•Œ - Conclusion 1. ์ข‹์•„์š” ๋ˆŒ๋ €๋Š”์ง€๋ฅผ JPA์กฐ์ธ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ๊ฒฝ์šฐ ๋„๋ฉ”์ธ ๋กœ์ง์„ ํ™œ์šฉํ•ด (๊ฒŒ์‹œ๊ธ€์—) ์ข‹์•„์š”๋ฅผ ์ถ”๊ฐ€/์‚ญ์ œ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋กœ์ง์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ข‹์•„์š”๋ฅผ ํ•œ ๋ฒˆ๋„ ์•ˆ ๋ˆŒ๋ €๋‹ค๋ฉด ์ข‹์•„์š”๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ์ด๋ฏธ ๋ˆŒ๋ €๋‹ค๋ฉด ๋ˆŒ๋ €๋˜ ์ข‹์•„์š”๊ฐ€ ์ทจ์†Œ๋˜๋Š” ๋กœ์ง์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. contains( ) ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‚ด๋ถ€์— ์–ด๋–ค ๊ฐ’์ด ์žˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— JPA.. 2022. 9. 19.
[์ดํŽ™ํ‹ฐ๋ธŒ์ž๋ฐ”] Item 16. ์ด ๊ธ€์€ ์ธ์‚ฌ์ดํŠธ์˜ EffectiveJava 3rd Edition์„ ๊ณต๋ถ€ํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ฑ…์„ ๋ฐ”ํƒ•์œผ๋กœ ์ถ”๊ฐ€์ ์ธ ๋‚ด์šฉ์„ ๋ง๋ถ™์˜€์Šต๋‹ˆ๋‹ค. ์ •๋ฆฌ๋œ ๋‚ด์šฉ ์ด์™ธ์—๋„ ์ข‹์€ ๋‚ด์šฉ์ด ๋งŽ์ด ๋‹ด๊ฒจ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ผญ ์ฑ…์„ ๊ตฌ๋งคํ•ด์„œ ๊ณต๋ถ€ํ•ด ๋ณด์‹ค ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” Effective Java 3/E - YES24 ์ž๋ฐ” ํ”Œ๋žซํผ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ์™„๋ฒฝ ๊ฐ€์ด๋“œ - Java 7, 8, 9 ๋Œ€์‘์ž๋ฐ” 6 ์ถœ์‹œ ์งํ›„ ์ถœ๊ฐ„๋œ ใ€Ž์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” 2ํŒใ€ ์ดํ›„๋กœ ์ž๋ฐ”๋Š” ์ปค๋‹ค๋ž€ ๋ณ€ํ™”๋ฅผ ๊ฒช์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์กธํŠธ์ƒ์— ๋น›๋‚˜๋Š” ์ด ์ฑ…๋„ ์ž๋ฐ” ์–ธ์–ด์™€ ๋ผ์ด๋ธŒ www.yes24.com 1. package-private ์•„๋ž˜ ๊ทธ๋ฆผ์—์„œ ์™ผ์ชฝ๊ณผ ๊ฐ™์€ ํด๋ž˜์Šค๋Š” ๋ฐ์ดํ„ฐ ํ•„๋“œ์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์บก์Šํ™”์˜ ์ด์ ์„ ์ œ๊ณตํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. API๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ๋Š”.. 2022. 8. 21.
ํ•˜๋‚˜์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ํ•˜์œ„ ์—”ํ‹ฐํ‹ฐ ๊ด€๋ฆฌํ•˜๊ธฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ์• ๊ทธ๋ฆฌ๊ฒŒ์ž‡์— ๋Œ€ํ•ด ํ•™์Šตํ•˜๊ณ  ๊ณ ๋ฏผํ–ˆ๋˜ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. DDD์— ๊ด€๋ จ๋œ ๋‚ด์šฉ์ธ๋ฐ ์ด์— ๋Œ€ํ•ด ์ •ํ™•ํ•œ ๊ฐœ๋…์„ ํ•™์Šตํ•œ ์ฑ„ ์ž‘์„ฑํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž˜๋ชป๋œ ๋‚ด์šฉ์„ ์•Œ๋ ค์ฃผ์‹ ๋‹ค๋ฉด ๋ณด๋Š” ์ฆ‰์‹œ ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. **JPA๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธ€์„ ์ฝ๊ธฐ ์œ„ํ•ด์„œ๋Š” JPA์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. 2022. 10. ** ๋ณ„๋„์˜ API๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ํ•˜์œ„ ์—”ํ‹ฐํ‹ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ํž˜๋“ค๋‹ค๊ณ  ํŒ๋‹จํ•ด ์ด ํฌ์ŠคํŒ…์€ ๊ทธ ๋‹น์‹œ์˜ ์ƒ๊ฐ, ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ• ์ •๋„๋กœ ์ฝ์–ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ๋ณ„๋„์˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ํ•„์š”ํ• ๊นŒ? ๊ฒŒ์‹œํŒ์„ ๋งŒ๋“ค๋•Œ ๋Œ“๊ธ€์€ ๊ฒŒ์‹œ๊ธ€์˜ ํ•˜์œ„์— ์†ํ•ด์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ /api/posts/{postId}/comments/{commentId} ์™€ ๊ฐ™์ด API๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”, ๋ฌผ๋ก .. 2022. 7. 31.
๊ฐ’์„ ๊ฒ€์ฆํ•˜๋Š” ์œ„์น˜๋Š” ์–ด๋””๊ฐ€ ์ข‹์„๊นŒ? ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ฐ’ ๊ฒ€์ฆ ์œ„์น˜์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ–ˆ๋˜ ๋‚ด์šฉ์ธ๋ฐ์š”, DTO์—์„œ @Validation ์„ ์‚ฌ์šฉํ•ด ๊ฐ’์„ ๊ฒ€์ฆํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐ”๊พธ๊ณ ์ž ํ–ˆ๋˜ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์ •๋‹ต์€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ์˜๊ฒฌ์œผ๋กœ ์ฝ์–ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. JPA๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธ€์„ ์ฝ๊ธฐ ์œ„ํ•ด์„œ๋Š” JPA์— ๋Œ€ํ•œ ๊ธฐ๋ณธ์ ์ธ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. 1. DTO์—์„œ ๊ฐ’ ๊ฒ€์ฆ ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ’์„ DTO์—์„œ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์•„๋ž˜์™€ ๊ฐ™์€๋ฐ์š”, ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ๊ฐ’์„ ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ์—์„œ @Valid ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜์ง€๋งŒ ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด ๊ฐ’์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช‡๊ฐ€์ง€ ์˜๋ฌธ์ ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์˜€์Šต๋‹ˆ๋‹ค. ์š”๊ตฌ์‚ฌํ•ญ์ด ๋ฐ”๋€Œ๋ฉด DTO๋ฅผ ์žฌํ™œ์šฉํ•  ์ˆ˜๋„ ์—†์œผ๋ฉฐ ๋งค๋ฒˆ ์กฐ๊ฑด์„ ๋ณ€๊ฒฝํ•ด์ค˜.. 2022. 7. 30.
@Component์™€ @Configuration์˜ ์ฐจ์ด @Component์™€ @Comfiguration์˜ ์ฐจ์ด์— ๊ด€ํ•ด ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜๋ฉด @Component๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ํด๋ž˜์Šค๋ฅผ Bean์œผ๋กœ ๋“ฑ๋กํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ณ  @Configuration + @Bean์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ œ์–ดํ•˜๊ธฐ ํž˜๋“  ํด๋ž˜์Šค๋ฅผ ๋นˆ์œผ๋กœ ๋“ฑ๋กํ• ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. **์ฐธ์กฐ ์ข…๋ฅ˜ ์„ ์–ธ ์‚ฌ์šฉ ์šฉ๋„ @Component ํด๋ž˜์Šค ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ๋“  ํด๋ž˜์Šค @Bean ๋ฉ”์„œ๋“œ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 1. @Component / @Configuration @Component๊ฐ€ ๋‹ฌ๋ฆฐ ํด๋ž˜์Šค๋Š” ์ž๋™์œผ๋กœ ์Šคํ”„๋ง ์ปดํฌ๋„ŒํŠธ ์Šค์บ” ๋Œ€์ƒ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„๋กœ Bean์„ ๋“ฑ๋กํ•˜์ง€ ์•Š์•„๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์Šคํ…Œ๋ ˆ์˜ค ํƒ€์ž… ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค์— ๋‹ฌ๋ ค ์žˆ๋Š”๋ฐ์š”, ์Šคํ…Œ๋ ˆ์˜ค ํƒ€์ž…์ด๋ž€ ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” @Contro.. 2022. 7. 24.
FrontController ํŒจํ„ด ์›น ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ ํŒจํ„ด์— ๋Œ€ํ•ด ํ•™์Šตํ•˜๊ณ  ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ํ•™์Šต๊ณผ์ •์—์„œ ์ž‘์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž˜๋ชป๋œ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, 1. ์„œ๋ธ”๋ฆฟ๊ณผ jsp ์„œ๋ธ”๋ฆฟ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋™์ ์œผ๋กœ html์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”, ํ•˜์ง€๋งŒ ์ž๋ฐ”์ฝ”๋“œ๋กœ text/html์„ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์‹œ์ง€ body์— text/html๊ณผ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹(utf-8)๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ์ง์ ‘ ๋„ฃ์–ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” (์ž๋ฐ”๋กœ html์„ ๋‹ค๋ฃจ๊ธฐ ๋•Œ๋ฌธ์—) ๋ณต์žกํ•˜๊ณ  ๋น„ํšจ์œจ์ ์ธ ๋ฐฉ์‹์ด๋ฉฐ requestParam( ) ๋ฉ”์„œ๋“œ๋Š” ๋ฐ˜ํ™˜ ํƒ€์ž…์ด String์ด๊ธฐ ๋•Œ๋ฌธ์— ํ˜• ๋ณ€ํ™˜ ๋˜ํ•œ ๊ฐ•์ œ๋กœ ํ•ด์ค˜์•ผ ํ•˜๋Š” ๋ฌธ์ œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด jsp๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋๋Š”๋ฐ์š”, ๋ทฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ž‘์—…์„ jsp๊ฐ€ ๊ฐ€์ ธ๊ฐ€๊ณ  ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์—๋งŒ ์ž๋ฐ” ์ฝ”๋“œ๋ฅผ .. 2022. 7. 21.
@Embedded์™€ ๊ฐ’ ๊ฐ์ฒด @Embedded ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—”ํ‹ฐํ‹ฐ์˜ ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ protected ์ด์ƒ์˜ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด ์ค˜์•ผ ํ•˜๋Š”๋ฐ์š”, ์ด๋Š” JPA๊ฐ€ ๋ฆฌํ”Œ๋ ‰์…˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ’ ๊ฐ์ฒด์˜ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ์—†์–ด๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋™์ž‘ ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€/์ˆ˜์ •/์‚ญ์ œํ• ๋•Œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ๊ฒช์—ˆ๋˜ ๋‚ด์šฉ์„ ํ•œ ๋ฒˆ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. @Embedded์™€ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ๊ฐ’ ๊ฐ์ฒด ๋‚ด๋ถ€์— ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์œผ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค๋ผ๋Š” ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๋ ‡๊ฒŒ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ž˜ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ณผ์ •์—์„œ๋Š” ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ์š”, ์ด๋ฅผ ์‹คํ—˜ํ•˜๊ธฐ ์œ„ํ•œ ์„ค์ •์„ ๋จผ์ € ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ์™€ ์„œ๋น„์Šค, DTO๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ด.. 2022. 7. 17.
private ์ƒ์„ฑ์ž ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ private ์ƒ์„ฑ์ž๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” ์•„์ดํ…œ4๋ฅผ ์ฝ๊ณ  ์ถ”๊ฐ€์ ์ธ ๋‚ด์šฉ์„ ๋ณด๊ฐ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•™์Šต ๊ณผ์ •์—์„œ ์ž‘์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž˜๋ชป๋œ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - ์ธ์Šคํ„ด์Šคํ™” ๋ฐฉ์ง€(feat. ์˜ฌ๋ฐ”๋ฅธ private ์ƒ์„ฑ์ž ์‚ฌ์šฉ๋ฒ•) - ์œ ํ‹ธ ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์ง€ํ–ฅ - Conclusion 1. ์ธ์Šคํ„ด์Šคํ™” ๋ฐฉ์ง€ ๋ชจ๋“  ํด๋ž˜์Šค๋“ค์ด ์ธ์Šคํ„ด์Šคํ™”๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒํ™ฉ์— ๋”ฐ๋ผ private ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ์š”, ์ด๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. private ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋Š์ •๋„ ์ธ์Šคํ„ด์Šคํ™”๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋ฆฌํ”Œ๋ ‰์…˜์„ ํ†ตํ•ด ์ธ์Šคํ„ด์Šคํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์กฐ์‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์ถ”์ƒํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๊ณ  ์œ ํ‹ธ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค๋ฉด ์ธ์Šคํ„ด.. 2022. 7. 17.
@Embedded์™€ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ๊ฐ„๋‹จํ•˜์ง€๋งŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ณ ๋ฏผํ•˜๊ณ  ์‚ฝ์งˆ(?) ๋‚ด์šฉ์— ๋Œ€ํ•ด ๊ณต์œ ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. JPA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ’ ๊ฐ์ฒด ๋‚ด๋ถ€์— ๋ฐ˜๋“œ์‹œ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๊ฐ€ ํ•„์š”ํ•œ๋ฐ์š”, ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ํ˜ธ์ถœํ•˜์ง€ ๋ง๋ผ๊ณ  ์ž˜ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์„๊นŒ? ๋ฅผ ๊ณ ๋ฏผํ–ˆ๋˜ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. **๊ฒฐ๋ก ์€ ์ฃผ์„ ๋ง๊ณ ๋Š” ์—†๋‹ค ์˜€์Šต๋‹ˆ๋‹ค. 1. @Embedded ์™€ ๋‚ด๊ฐ€ ํ–ˆ๋˜ ์‹ค์ˆ˜ ์ œ๊ฐ€ ํ–ˆ๋˜ ๊ณ ๋ฏผ๊ณผ ์‹ค์ˆ˜์— ๋Œ€ํ•ด ๋‚ด์šฉ์ธ๋ฐ์š”, JPA์—์„œ @Embedded, @Embeddable์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด protected ์ด์ƒ์˜ ๋นˆ ์ƒ์„ฑ์ž๋ฅผ ๋ฐ˜๋“œ์‹œ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์—”ํ‹ฐํ‹ฐ์—์„œ ๋นˆ ์ƒ์„ฑ์ž๋ฅผ ๋ฐ˜๋“œ์‹œ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•œ๋ฐ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ๋Š” ์‚ฌ์šฉํ•˜์ง€๋„ ์•Š๋Š” ์ƒ์„ฑ์ž๋ฅผ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธธ ์›ํ•˜๋Š” ์ƒ์„ฑ์ž๋ฅผ ์ž˜๋ชป ํ˜ธ์ถœํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ.. 2022. 7. 14.
๋ธŒ๋ฆฟ์ง€ ํŒจํ„ด ์ถ”์ƒ์ ์ธ ๊ฒƒ๊ณผ ๊ตฌ์ฒด์ ์ธ ๊ฒƒ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์—ฐ๊ฒฐํ•˜๋Š” ํŒจํ„ด. ํ•˜๋‚˜์˜ ๊ณ„์ธต ๊ตฌ์กฐ์ผ ๋•Œ๋ณด๋‹ค ๊ฐ๊ธฐ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ ๋…๋ฆฝ์ ์ธ ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ๋ฐœ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ๋ธŒ๋ฆฟ์ง€ ํŒจํ„ด์˜ ์žฅ์  - ์ถ”์ƒ์ ์ธ ์ฝ”๋“œ๋ฅผ ๊ตฌ์ฒด์ ์ธ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด๋„ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. - ์ถ”์ƒ์ ์ธ ์ฝ”๋“œ์™€ ๊ตฌ์ฒด์ ์ธ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จ์  - ๊ณ„์ธต ๊ตฌ์กฐ๊ฐ€ ๋Š˜์–ด๋‚˜ ๋ณต์žก๋„๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. 2022. 7. 10.
์‹ฑ๊ธ€ํ†ค๊ณผ ๋ฌธ์ œ์  ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ์‹ฑ๊ธ€ํ†ค์„ ํ•™์Šตํ•˜๊ฒŒ ๋๊ณ , ๋ฐฑ๊ธฐ์„ ๋‹˜์˜ ๋””์ž์ธํŒจํ„ด ๊ฐ•์˜๋ฅผ ๋“ฃ์œผ๋ฉฐ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ํ•™์Šต ๊ณผ์ •์—์„œ ์ž‘์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž˜๋ชป๋œ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ์•Œ๋ ค์ฃผ์‹ ๋‹ค๋ฉด ์ฆ‰์‹œ ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ์‹ฑ๊ธ€ํ†ค์„ ์ง์ ‘ ๊ตฌํ˜„ํ–ˆ์„ ๋•Œ์˜ ๋ฌธ์ œ์  ์‹ฑ๊ธ€ํ†ค์„ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํŒจํ„ด์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ์ ์ด ์กด์žฌํ•˜๋Š”๋ฐ์š”, ์šฐ์„  ๋™๊ธฐํ™” ๋ฌธ์ œ์— ์•ˆ์ „ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ๊ณผ ์‹ฑ๊ธ€ํ†ค์ด ๊นจ์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์šฐ์„  ๋™๊ธฐํ™” ๋ฌธ์ œ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ์„๋•Œ ์‚ฌ์šฉ์žA์™€ B๊ฐ€ ๋™์‹œ์— ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋ฉด ๋ชจ๋‘ new Setting( )์„ ํ†ตํ•ด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋‹ค๋ฅธ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋Š”๋ฐ์š”, ๋”ฐ๋ผ์„œ ์ด๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜.. 2022. 7. 10.
์ผ๊ธ‰ ์ปฌ๋ ‰์…˜๊ณผ ์ฃผ์˜์‚ฌํ•ญ Collection์„ Wrapping ํ•˜๋ฉด์„œ ๊ทธ ์™ธ์˜ ๋‹ค๋ฅธ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ์ƒํƒœ. ๋งด๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ Collection์˜ ์ž์†/๊ตฌํ˜„์ฒด๋ผ๋ฉด ์–ด๋–ค ์ข…๋ฅ˜๋“  ์ƒ๊ด€์—†๋‹ค. 1. ์žฅ์  ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ถˆ๋ณ€๊ฐ์ฒด, ์‘์ง‘์„ฑ ์žˆ๋Š” ๊ฐ์ฒด์˜ ์žฅ์ ๋“ค์„ ๋ชจ๋‘ ์ทจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ์ž์‹ ๊ณผ ์—ฐ๊ด€๋œ ๋กœ์ง์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด์—๋Œ€ํ•ด ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. *๊ฐ€๋ณ€ ๊ฐ์ฒด์˜ ์œ„ํ—˜์„ฑ์— ๋Œ€ํ•ด์„œ๋Š” ์•„๋ž˜ ๊ธ€์„ ์ฐธ์กฐ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€๋ณ€ ๊ฐ์ฒด์˜ ์œ„ํ—˜์„ฑ ๊ฐ€๋ณ€ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์›๋ณธ์ด ์ˆ˜์ •๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋ฅผ ๋™์‹œ์— ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์„ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ด ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋Š” ๊ฐ€๋ณ€ ํด๋ž˜์Šค Numbers tmit10.tistory.com 1-1. ๋ถˆ๋ณ€(Immutabl.. 2022. 2. 22.
TreeSet 1. TreeSet ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ(Binary Search Tree) ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค. ์ •๋ ฌ, ๊ฒ€์ƒ‰/๋ฒ”์œ„๊ฒ€์ƒ‰์— ๋†’์€ ์„ฑ๋Šฅ์„ ๋ณด์ด๋ฉฐ ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚จ Red-Black tree ํ˜•ํƒœ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Set ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ •๋ ฌ๋œ ์œ„์น˜์— ์ €์žฅํ•˜๋ฏ€๋กœ ์ €์žฅ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋กœ ์ €์žฅ๋˜๋Š” ๊ฐ’์€ ๋ฃจํŠธ๊ฐ€ ๋˜๊ณ , ๋‘ ๋ฒˆ์งธ ๊ฐ’์€ ํŠธ๋ฆฌ์˜ ๋ฃจํŠธ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๊ฐ’์˜ ํฌ๊ธฐ๋ฅผ ๋น„๊ตํ•˜๋ฉด์„œ ํŠธ๋ฆฌ๋ฅผ ๋”ฐ๋ผ ๋‚ด๋ ค๊ฐ‘๋‹ˆ๋‹ค. ์ด๋•Œ ์ž‘์€ ๊ฐ’์€ ์™ผ์ชฝ์—, ํฐ ๊ฐ’์€ ์˜ค๋ฅธ์ชฝ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ๋Š” ๊ฐ’์„ ์Šค์Šค๋กœ ๋ชป ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์— Comparable ํ˜น์€ Comparator๋ฅผ ์ œ๊ณตํ•ด ๋‘ ๊ฐ์ฒด๋ฅผ ๋น„๊ตํ•  ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด TreeS.. 2022. 2. 22.
์ƒ์ˆ˜ํ’€๊ณผ String ์ƒ์ˆ˜ํ’€์€ ํž™ ์˜์—ญ ๋‚ด๋ถ€์— ๋ฌธ์ž์—ด ๊ฐ์ฒด๋ฅผ ์œ„ํ•ด ๋ณ„๋„๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ƒ์ˆ˜ํ’€์— ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„ String ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜๋ฉด ๊ทธ ๊ฐ์ฒด์˜ ์ฃผ์†Ÿ๊ฐ’์„ ์ฐธ์กฐํ•˜๋ฉฐ, ๊ฐ’์„ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด ์ƒ์ˆ˜ํ’€์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๊ฐ€์ง„ ๋ฌธ์ž์—ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ์ฃผ์†Ÿ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌํ„ฐ๋Ÿด๋กœ ์„ ์–ธํ•œ ๊ฒฝ์šฐ ๋‚ด๋ถ€์ ์œผ๋กœ String์˜ intern( ) ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌํ„ฐ๋Ÿด("")๋กœ String ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด JVM์€ ๋จผ์ € ์ƒ์ˆ˜ํ’€์„ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„ String ๊ฐ์ฒด๋ฅผ ์ฐพ์œผ๋ฉด ๊ทธ ๊ฐ์ฒด์˜ ์ฃผ์†Œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์„œ ์ฐธ์กฐํ•˜๋ฉฐ, ์ด๋ฅผ ์ฐพ์ง€ ๋ชปํ•  ๊ฒฝ์šฐ ์ƒ์ˆ˜ํ’€์— ํ•ด๋‹น ๊ฐ’์„ ๊ฐ€์ง„ String ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ์ฃผ์†Œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” intern( ) ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋“ฑ๋ก๋˜๋Š”๋ฐ์š”, String.equals( ) ๋ฐ˜ํ™˜๊ฐ’์ด tr.. 2022. 2. 20.