์ž๋ฐ” 4

equals() ์™€ hashCode() ๋™์ผ์„ฑ๊ณผ ๋™๋“ฑ์„ฑ, ์™„์ „๋ฒ”์ฃ„ํ•˜๊ธฐ

์ž๋ฐ”์˜ ๋ชจ๋“  ํด๋ž˜์Šค๋Š” Object ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Objectํด๋ž˜์Šค์—๋Š” equals() ์™€ hashCode() ๋ผ๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์„ ์–ธ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฉ”์†Œ๋“œ๋“ค์€ ๊ฐ๊ฐ ์–ด๋–ค ์—ญํ• ์ผ๊นŒ์š”? ์ด ๋‘˜์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ผ๊นŒ์š”? equals()์™€ hashCode() ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ค‘์š”ํ•œ ๋ฉ”์„œ๋“œ๋กœ, ๊ฐ์ฒด ๊ฐ„์˜ ๋™์ผ์„ฑ๊ณผ ๋™๋“ฑ์„ฑ์„ ๋‹ค๋ฃจ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ๋™์ผ์„ฑ์€ Identity = ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ์ฃผ์†Œ๊ฐ’์ด ๊ฐ™์€์ง€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ๋™๋“ฑ์„ฑ์€ Equality = ๋…ผ๋ฆฌ์  ์ง€์œ„๊ฐ€ ๋™๋“ฑํ•œ์ง€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด, ์• ํ”Œ ๏ฃฟ ์•„์ดํฐ์ด 2๋Œ€์žˆ๋‹ค. ๋‘ ํœด๋Œ€ํฐ์€ ๊ธฐ์ข…๋„ ๊ฐ™๊ณ  ๋™์ผํ•œ ์ƒ‰์ƒ ๋™์ผํ•œ ์ŠคํŽ™์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด ๋‘ ๊ฐœ์˜ ํœด๋Œ€ํฐ์€ ๋™์ผํ•œ๊ฐ€? ๋‹ต์€ ์•„๋‹ˆ๋‹ค. ํœด๋Œ€ํฐ์€ ๊ฐ ๊ธฐ๊ธฐ๋งˆ๋‹ค ๊ณ ์œ  ์ฃผ์†Œ๊ฐ€ ์žˆ๊ณ  ์•„์ดํฐ..

๊ฐ์ฒด์ง€ํ–ฅ์„ ์œ„ํ•œ ์ƒํ™œ์ฒด์กฐ, ํด๋ฆฐ์ฝ”๋“œ๋ฅผ ์ง€ํ–ฅํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด๋ฅผ ๊ฐ€์žฅ ๊ฐ์ฒด์ง€ํ–ฅ์Šค๋Ÿฝ๊ฒŒ ์“ฐ๊ธฐ์œ„ํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋…ธ๋ ฅ์ด ํ•„์š”ํ•˜๋‹ค. - ์ต์ˆ™ํ•˜์ง€ ์•Š๋”๋ผ๋„ ์˜์‹ํ•˜๋ฉฐ ์ ์šฉํ•ด๋ณด์ž ํ•œ ๋ฉ”์„œ๋“œ์— ์˜ค์ง ํ•œ ๋‹จ๊ณ„์˜ ๋“ค์—ฌ์“ฐ๊ธฐ(indent)๋งŒ ํ•œ๋‹ค. for ๋ฌธ ๋‚ด๋ถ€์—์„œ if ๋ฌธ์ด ํฌํ•จ๋˜๋Š” ์ˆœ๊ฐ„ 2 indent ๊ฐ€ ๋œ๋‹ค. else ์˜ˆ์•ฝ์–ด๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค. ๋ชจ๋“  ์›์‹œ ๊ฐ’๊ณผ ๋ฌธ์ž์—ด์„ ํฌ์žฅ(VO)ํ•œ๋‹ค. ํ•œ ์ค„์— ์ ์„ ํ•˜๋‚˜๋งŒ ์ฐ๋Š”๋‹ค. ์ค„์—ฌ ์“ฐ์ง€ ์•Š๋Š”๋‹ค(์ถ•์•ฝ ๊ธˆ์ง€). ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ž‘๊ฒŒ ์œ ์ง€ํ•œ๋‹ค. 3๊ฐœ ์ด์ƒ์˜ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง„ ํด๋ž˜์Šค๋ฅผ ์“ฐ์ง€ ์•Š ๋Š”๋‹ค. ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜์„ ์“ด๋‹ค. ๋ฌด์˜๋ฏธํ•œ getter/setter/ํ”„๋กœํผํ‹ฐ๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค. Getter ๋Œ€์‹  ๋ฉ”์‹œ์ง€์— ์ง์ ‘ ๋ณด๋‚ด๊ธฐ https://tecoble.techcourse.co.kr/post/2020-04-28-ask-instead-of-g..

์ •ํ™•ํžˆ ๋ชจ๋ฅด๊ณ  ์“ฐ๋ฉด ์‚ฌ์ˆ˜ํ•œํ…Œ ๋“ฑ์ง ์Šค๋งค์‹œ ๋งž๋Š” Thread, ๋‹น์‹ ๋„ ๋ชจ๋ฅด๋Š” ์‚ฌ์ด ์“ฐ๊ณ  ์žˆ์—ˆ๋‹ค?

์ž๋ฐ”๋ฅผ ์ฒ˜์Œ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜๋ฉด, ๋งˆ์ง€๋ง‰ ์ฆˆ์Œ์— ๋ฐฐ์šฐ๊ฒŒ ๋˜๋Š” Thread๋ผ๋Š” ๊ฐœ๋…์ด ์žˆ๋‹ค. ์ทจ์—…์„ ํ•˜๊ณ , ์‹ค๋ฌด์—์„œ spring, spring boot๋ฅผ ๋‹ค๋ฃจ๋ฉฐ ์ง์ ‘์ ์œผ๋กœ Thread๋ผ๋Š” ์ฝ”๋“œ ๋ณธ ๊ฒƒ์€ ์•ฝ,, 1-2๋ฒˆ? ์ด์—ˆ๋˜ ๊ฒƒ์ด์—ˆ๋‹ค. ๋ถ„๋ช… ์ž๋ฐ” ๋ฐฐ์šธ ๋•Œ ๋ฐฐ์› ๋˜ ๊ฐœ๋…์ธ๋ฐ ์‹ค๋ฌด์—์„œ๋Š” ๋ณ„๋กœ ์ค‘์š”ํ•˜์ง€ ์•Š์€๊ฒƒ์ธ๊ฐ€? ํ•˜๋Š” - ์ด์ƒํ•œ ํ˜ธ๊ธฐ์‹ฌ์ด ์ƒ๊ฒผ๋‹ค. Thread? ๊ทธ๊ฑฐ ์™œ ์”€? ์ž๋ฐ”์—์„œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ผ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ์ €๋Š” ๋ฉ€ํ‹ฐ๊ฐ€ ์•ˆ๋˜๋Š” ์‚ฌ๋žŒ์ด๋ผ... ํ•œ ๋ฒˆ์— ํ•œ๊ฐ€์ง€ ์ผ ๋ฐ–์— ๋ชปํ•˜์ง€๋งŒ,... ์ปดํ“จํ„ฐ๋Š” ๋˜‘๋˜‘ํ•˜๋‹ˆ๊นŒ ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ผ์„ ํ•˜๋ฉด ๋‹น์—ฐํžˆ ํšจ์œจ์ ์ด์ž–์•„์š”? โ— โ€ฟโ—  ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—... Thread๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์ „์— ๊ผญ ์•Œ์•„์•ผ ๋” ์ž˜ Thread๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” Process๋ฅผ ๋จผ์ € ์•Œ๊ณ  ๊ฐ‘์‹œ๋‹ค.แŸ.แŸ..

๋ฐฑ์—”๋“œ, ์•Œ์•„๋‘๋ฉด ์œ ์šฉํ•œ ํด๋ž˜์Šค ๋„ค์ด๋ฐ ๊ทœ์น™

Controller ํด๋ž˜์Šค ์ž‘์„ฑ ๊ทœ์น™ - [๋ฉ”์ธํ…Œ์ด๋ธ” ๋ช…]+Controller.java ๋กœ ์ž‘์„ฑํ•œ๋‹ค. - ์ปจํŠธ๋กค๋Ÿฌ ํด๋ž˜์Šค ์•ˆ์—์„œ ๋ฉ”์„œ๋“œ ๋ช…์„ ์ž‘์„ฑ ํ•  ๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ ‘๋ฏธ์‚ฌ๋ฅผ ๋ถ™์ธ๋‹ค. n productList() – ๋ชฉ๋ก ์กฐํšŒ ์œ ํ˜•์˜ ์„œ๋น„์Šค n productDetails() – ๋‹จ ๊ฑด ์ƒ์„ธ ์กฐํšŒ ์œ ํ˜•์˜ ์„œ๋น„์Šค n productSave() – ๋“ฑ๋ก/์ˆ˜์ •/์‚ญ์ œ ๊ฐ€ ๋™์‹œ์— ์ผ์–ด๋‚˜๋Š” ์œ ํ˜•์˜ ์„œ๋น„์Šค n productAdd() – ๋“ฑ๋ก๋งŒ ํ•˜๋Š” ์œ ํ˜•์˜ ์„œ๋น„์Šค n productModify() – ์ˆ˜์ •๋งŒ ํ•˜๋Š” ์œ ํ˜•์˜ ์„œ๋น„์Šค n productRemove() – ์‚ญ์ œ๋งŒ ํ•˜๋Š” ์œ ํ˜•์˜ ์„œ๋น„์Šค Service ํด๋ž˜์Šค ์ž‘์„ฑ ๊ทœ์น™ - [๋ฉ”์ธํ…Œ์ด๋ธ” ๋ช…]+Service.java๋กœ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. - [๋ฉ”์ธํ…Œ์ด๋ธ” ๋ช…]+Servic..