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

๐Ÿ–ฅDEV29

ํŒ”๋กœ์ž‰/ํŒ”๋กœ์›Œ ๊ตฌํ˜„์—์„œ ๋งˆ์ฃผ์นœ ๋™์‹œ์„ฑ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ํŒ”๋กœ์›Œ ์ˆ˜๋ฅผ ์ฆ๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ค„์ผ๋•Œ ๋™์‹œ์„ฑ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ–ˆ๋˜ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ํ•™์Šต๊ณผ์ •์—์„œ ์ž‘์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž˜๋ชป๋œ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1. ๋™์‹œ์„ฑ ๋ฌธ์ œ ํ˜„์žฌ ํŒ”๋กœ์šฐ/์–ธํŒ”๋กœ์šฐ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋กœ์ง์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํŒ”๋กœ์ž‰/์–ธํŒ”๋กœ์šฐ์„ ํ•˜๊ฒŒ๋˜๋ฉด ํšŒ์› ํ…Œ์ด๋ธ”์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŒ”๋กœ์ž‰ ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด 1 ์ฆ๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ฐ์†Œํ•˜๋Š” ๋กœ์ง์ธ๋ฐ์š”, ์ด ๋ถ€๋ถ„์—์„œ ๋™์‹œ์„ฑ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์™œ ํšŒ์› ํ…Œ์ด๋ธ”์ด ํŒ”๋กœ์ž‰ ์นด์šดํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์˜๋ฌธ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์กฐํšŒ์˜ ํŽธ์˜์„ฑ์„ ์œ„ํ•ด ์ด๋ ‡๊ฒŒ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•œ ํšŒ์›์˜ ๋ช‡๋ช…์˜ ํŒ”๋กœ์ž‰/ํŒ”๋กœ์›Œ ์ˆ˜๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด ์„œ๋Š” ์กฐ์ธ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„์™€ ๊ฐฏ์ˆ˜๋ฅผ ์„ธ๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ง์ ‘ ์นด์šดํŠธ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ ค์•ผ ํ•˜๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๋งค๋ฒˆ ์กฐ์ธ/์นด์šดํŠธ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๋Š” ๊ฒƒ์€ .. 2022. 9. 19.
๋„๋ฉ”์ธ ๋กœ์ง์ด ํ•ญ์ƒ ์ข‹์„๊นŒ? ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ JPA๋ฅผ ํ™œ์šฉํ•œ ๋„๋ฉ”์ธ ๋กœ์ง์ด ํ•ญ์ƒ ์ข‹์„๊นŒ? ์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ–ˆ๋˜ ๋‚ด์šฉ์ธ๋ฐ์š” ๊ฐ„๋žตํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. **์ฝ”๋“œ์—๋Š” ์ •๋‹ต์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ด€์ ์ด๋ผ๊ณ  ๋ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. - ๋„๋ฉ”์ธ ๋กœ์ง(JPA) ์œผ๋กœ ์ข‹์•„์š”๋ฅผ ๊ตฌํ˜„ํ–ˆ์„ ๊ฒฝ์šฐ - ๊ฐœ์„  ๋ฐ ๋„๋ฉ”์ธ ๋กœ์ง์ด ์•ˆ์ข‹์„๋•Œ - Conclusion 1. ์ข‹์•„์š” ๋ˆŒ๋ €๋Š”์ง€๋ฅผ JPA์กฐ์ธ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ๊ฒฝ์šฐ ๋„๋ฉ”์ธ ๋กœ์ง์„ ํ™œ์šฉํ•ด (๊ฒŒ์‹œ๊ธ€์—) ์ข‹์•„์š”๋ฅผ ์ถ”๊ฐ€/์‚ญ์ œ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋กœ์ง์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ข‹์•„์š”๋ฅผ ํ•œ ๋ฒˆ๋„ ์•ˆ ๋ˆŒ๋ €๋‹ค๋ฉด ์ข‹์•„์š”๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , ์ด๋ฏธ ๋ˆŒ๋ €๋‹ค๋ฉด ๋ˆŒ๋ €๋˜ ์ข‹์•„์š”๊ฐ€ ์ทจ์†Œ๋˜๋Š” ๋กœ์ง์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. contains( ) ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‚ด๋ถ€์— ์–ด๋–ค ๊ฐ’์ด ์žˆ๋Š”์ง€ ์•Œ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— JPA.. 2022. 9. 19.
Auto-Increment์™€ UUID ์ข‹์•„์š”์™€ ์ด๋ชจํ‹ฐ์ฝ˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ PK์— ๋Œ€ํ•ด ๋“ค์—ˆ๋˜ ์˜๋ฌธ๊ณผ ํ•™์Šต/์ƒ๊ฐ์ •๋ฆฌ๋ฅผ ์œ„ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ๊ธ€์„ ๋‚จ๊ฒจ๋ด…๋‹ˆ๋‹ค. 1. Auto-Increment์™€ UUID. ๊ทธ ์˜๋ฏธ Auto-Increment์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋ ๋•Œ ์ž๋™์œผ๋กœ PK๊ฐ’์ด 1 ์ฆ๊ฐ€ํ•˜๋ฉฐ UUID์˜ ๊ฒฝ์šฐ VARCHAR ํ˜น์€ Binary ๊ฐ’์œผ๋กœ PK๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Auto-Increment ๊ฐ™์€ ๊ฒฝ์šฐ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ’์ด ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’์ด ์—ฐ์†์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ํ•œ ๋ˆˆ์— ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ๋Š” ๋ฐ˜๋ฉด ์ค‘๊ฐ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋˜๊ฑฐ๋‚˜ ํ•˜๋”๋ผ๋„ ๊ทธ ๊ฐ’์ด ์ฑ„์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด UUID์˜ ๊ฒฝ์šฐ ๋žœ๋คํ•œ ๊ฐ’์ด ์ƒ์„ฑ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋“ค์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ์†์ ์ธ ๊ฐ’๋“ค์„ ์•Œ ์ˆ˜ ๋Š” ์—†์ง€๋งŒ ์ค‘๊ฐ„์— ๊ณต๋ฐฑ์ด ์ƒ๊ธฐ๋”๋ผ๋„ PK์˜ ์—ฐ์†์„ฑ์„ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. .. 2022. 9. 13.
[Tip] ๋ฆฌ์•กํŠธ์— ํฐํŠธ ์ถ”๊ฐ€ ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  ํฐํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์ž์‹ ์ด ์‚ฌ์šฉํ•  ํฐํŠธ๋ฅผ ์„ ํƒ ํ›„ ์›ํ•˜๋Š” ์Šคํƒ€์ผ์„ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. ์ดํ›„ ์˜ค๋ฅธ์ชฝ์— link๋ฅผ ๋ณต์‚ฌํ•œ ํ›„ ๋ฆฌ์•กํŠธ public ํด๋”์˜ ํ—ค๋” ๋ถ€๋ถ„์— ๋„ฃ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. 2022. 9. 9.
์ •๊ทœํ™”๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ• ๊นŒ? ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ์ •๊ทœํ™”๋ฅผ ์‹œํ‚ค์ง€ ์•Š๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ํ…Œ์ด๋ธ”์„ ๊ตฌ์„ฑํ–ˆ๋Š”๋ฐ์š”, ์ด์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ–ˆ๋˜ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ๊ณต์œ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ** ๋ฌผ๋ก  ๋Œ€๋ถ€๋ถ„์˜ ์ƒํ™ฉ์—์„œ ์ •๊ทœํ™”๋Š” ์ค‘์š”ํ•˜๊ณ  ํ•„์š”ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ๊ตฌ๋‚˜ ํ•˜๋Š” ์ •๋„๋กœ ๊ฐ€๋ณ๊ฒŒ ์ฝ์–ด์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ํ˜„์žฌ ์ƒํ™ฉ ๋ฐ ๊ตฌํ˜„ ํ•˜๋ฃจ์— ์‹ค์ฒœํ•  ๊ณ„ํš์„ ์ตœ๋Œ€ 5๊ฐœ๊นŒ์ง€ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋„๋ก ์—”ํ‹ฐํ‹ฐ(ํ…Œ์ด๋ธ”)๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ ๊ฐ ์ปฌ๋Ÿผ๋“ค์„ ์ •๊ทœํ™” ์‹œํ‚ค์ง€ ์•Š๊ณ  First, Second, Third, Fourth, Fifth๋กœ ๋‘๊ณ  ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ •๊ทœํ™”๋ฅผ ํ•œ๋‹ค๋ฉด ๊ฐ ์ปฌ๋Ÿผ๋“ค์„ ๋ณ„๋„์˜ ์—”ํ‹ฐํ‹ฐ๋กœ ๋ถ„๋ฆฌํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ ์ •๊ทœํ™”๋ฅผ ๊ฑฐ์น˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ํ•˜๋‚˜์˜ ๊ณ„ํš์—๋Š” ๊ฐ๊ฐ์˜ ๋ชฉํ‘œ๋“ค์ด ์ผ๋Œ€๋‹ค๋กœ ๋Œ€์‘๋ผ์•ผ ํ•˜๋ฉฐ, ํ…Œ์ด๋ธ”์ด ๋‘ ๊ฐœ๋กœ ๋‚˜๋‰˜์–ด์ง€๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” .. 2022. 9. 7.
[Tip] MySQL ๋น„๋ฐ€๋ฒˆํ˜ธ ์ •์ฑ… ๋‚ฎ์ถ”๊ธฐ MySQL์—์„œ๋Š” ์ผ์ •์ˆ˜์ค€์ด์ƒ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์š”๊ตฌํ•˜๋Š”๋ฐ์š”, ์ด ์ •์ฑ…์„ ๋‚ฎ์ถ”๋Š” ๊ฐ„๋‹จํ•œ ๋ช…๋ น์–ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. # ๋น„๋ฐ€๋ฒˆํ˜ธ ์ˆ˜์ค€ LOW๋กœ ๋ณ€๊ฒฝ set global validate_password_policy=LOW; # ๋น„๋ฐ€๋ฒˆํ˜ธ ์ˆ˜์ค€ ๋ณด๊ธฐ show variables like 'validate_password%'; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password_check_user_name | OFF | | validate_password_dictionary_file | | | validate_pa.. 2022. 9. 2.
HTTPS ํ†ต์‹ ์ด ์ด๋ฃจ์–ด์ง€๋Š” ์›๋ฆฌ ํ”„๋กœ์ ํŠธ์—์„œ HTTPS๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ•™์Šตํ–ˆ๋˜ ๋‚ด์šฉ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ•™์Šต๊ณผ์ •์—์„œ ์ž‘์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž˜๋ชป๋œ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - HTTPS์™€ ๋ถ€๊ฐ€๊ฐœ๋… - ๋™์ž‘์›๋ฆฌ - ๊ฒฐ๋ก  / HTTPS๋ฅผ ์ ์šฉํ–ˆ๋˜ ์ด์œ  1. HTTPS HTTP๋Š” ์ •๋ณด๋ฅผ ํ…์ŠคํŠธ๋กœ ์ฃผ๊ณ  ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ์—์„œ ์ „์†ก ์‹ ํ˜ธ๋ฅผ ๊ฐ€๋กœ์ฑ„๋Š” ๊ฒฝ์šฐ ์›ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ ์œ ์ถœ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ํ”„๋กœํ† ์ฝœ์ด HTTPS ์ž…๋‹ˆ๋‹ค. **์™€์ด์–ด์ƒคํฌ๋ฅผ ํ†ตํ•ด ํŒจํ‚ท์„ ๋ณตํ˜ธํ™”์‹œํ‚ค๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด ํ•ด๋‹น ๋ธ”๋กœ๊ทธ์—์„œ ์ž˜ ์„ค๋ช…ํ•ด์ฃผ์…จ์Šต๋‹ˆ๋‹ค. HTTPS๋Š” HTTP์™€ ๊ฑฐ์˜ ๋™์ผํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ณผ์ •์— ๋ณด์•ˆ ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. HTTPS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์˜ ๋ชจ๋“  ํ†ต์‹  ๋‚ด์šฉ์ด ์•”ํ˜ธํ™”๋˜๋Š”๋ฐ, ์ฆ‰ ํŽ˜.. 2022. 8. 28.
[์ดํŽ™ํ‹ฐ๋ธŒ์ž๋ฐ”] 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.
[Tip] MySQL ํŒจ์Šค์›Œ๋“œ ์—†์ด ์„ค์น˜ํ•˜๊ธฐ ๋„์ปค๋ฅผ ํ†ตํ•ด mysql์„ ์„ค์น˜ํ•˜๋Š” ๊ณผ์ •์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด mysql์ด ์„ค์น˜๋˜๋Š”๋ฐ์š”, ๋ฌผ๋ก  ์ฒ˜์Œ mysql์„ ์„ค์น˜ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•ด๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋œน๋‹ˆ๋‹ค. ์ด๋Š” ๊ถŒํ•œ์„ ์ฃผ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. # ์„ค์น˜ $ docker container run -d --name {name} -e MYSQL_ALLOW_EMPTY_PASSWORD={password} mysql ์ด ๊ฒฝ์šฐ ํ˜„์žฌ ์‚ฌ์šฉ์ž๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž๋ฅผ ๋“ฑ๋ก, ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”, ์ด์— ๋Œ€ํ•œ ๋ช…๋ น์–ด๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์•„๋ž˜์™€ ๊ฐ™์ด use mysql์„ ํ†ตํ•ด ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ ํƒํ•˜๊ณ  ์‚ฌ์šฉ์ž๋ฅผ ์กฐํšŒํ•ด๋ด…๋‹ˆ๋‹ค. ์ด๋•Œ ๋ชฉ๋ก ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋‚ด๊ฐ€ ์ตœ์ดˆ์— ๋“ฑ๋กํ•œ ์•„์ด๋””์ž…๋‹ˆ๋‹ค. #.. 2022. 7. 26.
@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.
[Tip] MySQL ํ•œ๊ธ€ ์ •๋ณด ์ž…๋ ฅ MySQL 5.7 ๋ฒ„์ „์—์„œ INSERT๋กœ ํ…Œ์ด๋ธ”์— ํ•œ๊ธ€ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•  ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฌธ์ž์—ด ์ธ์ฝ”๋”ฉ ์„ค์ • ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜์ธ๋ฐ์š”, ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ERROR 1366 (HY000): Incorrect string value: '\xEC\x9D\xB4\xEB\xAF\xB8...' for column 'name' at row 1 ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”, mysql.cnf๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ „์ฒด์˜ ์„ค์ •์„ ๋ฐ”๊ฟ”์ฃผ๊ฑฐ๋‚˜ ํ•œ ํ…Œ์ด๋ธ”์˜ ์ธ์ฝ”๋”ฉ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•ด์ฃผ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. **๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ „์ฒด์˜ ์„ค์ •์„ ๋ฐ”๊พธ๊ฒŒ ๋˜๋ฉด ์žฌ์‹คํ–‰ ์‹œ์ผœ์ฃผ๊ฑฐ๋‚˜ flush๋กœ ์ฆ‰์‹œ ๋ฐ˜์˜์„ ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. # ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ „์ฒด ์ธ์ฝ”๋”ฉ ์„ค์ •์„ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ• $ sudo vi /u.. 2022. 7. 20.
@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.
[Tip] MySQL ํƒ€์ž„์กด ๋ณ€๊ฒฝ MySQL ์„œ๋ฒ„๋ฅผ ํ•œ๊ตญ ์‹œ๊ฐ„์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๋ช…๋ น์–ด ์ •๋ฆฌ # ์„œ๋ฒ„ ํ•œ๊ตญ์‹œ๊ฐ„์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ $ sudo rm /etc/localtime $ sudo ln -s /usr/share/zoneinfo/Asia/Seoul /etc/localtime # ์žฌ์‹œ์ž‘ $ sudo su $ service mysql restart 2022. 4. 14.
[Tip] Slack๊ณผ GitAction ์—ฐ๋™ ๋ฏผ์ œ์™€ ๋ฐฐํฌ๋ฅผ ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐฐ์šด Slack๊ณผ Git Action์„ ์—ฐ๋™ํ•˜๋Š” ๊ณผ์ •์„ ๊ธฐ๋กํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ดํ›„ ์Šฌ๋ž™ ๋ด‡์„ ๋ˆŒ๋Ÿฌ์„œ GitHub์˜ ๋“ค์–ด๊ฐ€ yml ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค. ์ดํ›„ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์˜ Setting ํƒญ์œผ๋กœ ๊ฐ€์„œ ํ•ด๋‹น URL์„ ๋“ฑ๋กํ•ด์ค€๋‹ค. 2022. 3. 27.
2. ๋‹จ์œ„ํ…Œ์ŠคํŠธ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ฝ๊ณ  ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ํ•™์Šต ๊ณผ์ •์—์„œ ์ž‘์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž˜๋ชป๋œ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋‹จ์ผ ๋™์ž‘ ๋‹จ์œ„๋ฅผ ๊ฒ€์ฆํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋˜๋ฉฐ, ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ์™€ ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ ํด๋ž˜์Šค ๋˜๋Š” ์—ฌ๋Ÿฌ ํด๋ž˜์Šค์— ์˜์กดํ•˜๋ฉด ์ด ๋ชจ๋“  ์˜์กด์„ฑ์„ ํ…Œ์ŠคํŠธ ๋Œ€์—ญ(test double)๋กœ ๋Œ€์ฒดํ•˜๋ฉฐ, ๋™์ž‘์„ ์™ธ๋ถ€ ์˜ํ–ฅ๊ณผ ๋ถ„๋ฆฌํ•ด์„œ ํ…Œ์ŠคํŠธ ๋Œ€์ƒ ํด๋ž˜์Šค์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ๋‹จ์œ„๊ฐ€ ๋ฐ˜๋“œ์‹œ ํด๋ž˜์Šค๋กœ ๊ตญํ•œ๋  ํ•„์š”๋Š” ์—†๋Š”๋ฐ, ๊ณต์œ  ์˜์กด์„ฑ์ด ์—†๋Š” ํ•œ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค๋ฅผ ๋ฌถ์–ด์„œ ๋‹จ์œ„ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. **์ž‘์€ ์ฝ”๋“œ ์กฐ๊ฐ์ด๋ž€ ํ•œ ํ–‰์œ„(๋ฉ”์„œ๋“œ)์— ๋Œ€ํ•œ ๊ฒ€์ฆ์ผ ์ˆ˜๋„ ์žˆ๊ณ , ํด๋ž˜์Šค์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. - ์ž‘์€ ์ฝ”๋“œ ์กฐ๊ฐ(๋‹จ์œ„) ๊ฒ€์ฆ - ๋น .. 2022. 3. 27.
[Tip] SSHํ‚ค๋ฅผ ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ฐฐํฌ ์—ฐ์Šต์„ ํ•˜๋˜ ์ค‘ pemํ‚ค๋ฅผ ์žŠ์–ด๋ฒ„๋ ค ์ด๋ฅผ ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋ฆฌ๋ˆ…์Šค์—์„œ ๋ฌผ๊ฒฐํ‘œ(~)๋Š” ๋กœ๊ทธ์ธ ํ•œ ์œ ์ €์˜ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ ์ž…๋‹ˆ๋‹ค. cd ~ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•ด์ค๋‹ˆ๋‹ค. vi ~/.ssh/config ์ดํ›„ cd .ssh๋กœ sshํด๋” ๋‚ด๋ถ€๋กœ ์ด๋™ํ•œ ํ›„ ์ด๊ณณ์—์„œ ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๋ฉด ํ•œ ๊ณณ์—์„œ ์ด๋ฅผ ๋ชจ๋‘ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 2022. 3. 22.
๊ณ„์ธตํ˜• ๋Œ“๊ธ€ https://www.youtube.com/watch?v=bhnDSyiPvaY ๊ณ„์ธตํ˜• ๋Œ“๊ธ€์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ๋ฐฐ์›Œ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๊ณ„์ธตํ˜• ๋Œ“๊ธ€๋กœ ๊ฐ ์ปค๋Ÿผ๋“ค์ด ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ๋“ค์„ ๋น„๊ตํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ์„  ref๋Š” ํ•œ ๊ทธ๋ฃน์˜ ID๊ฐ’์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๋Š” PK์™€๋Š” ์ƒ๊ด€ ์—†์ด ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ref_order๋Š” ๊ฐ™์€ ๊ทธ๋ฃน ๋‚ด์—์„œ ๊ฐ€์ง€๋Š” ์ˆœ์„œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. answer_number์€ ์ž์‹ ๊ธ€์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, parent_number๋Š” ๋ถ€๋ชจ์˜ PK๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•˜๋‚˜ ์ ์šฉ๋œ ๊ฒƒ์—. ๋ถ€๋ชจ๊ธ€์— ์ž์‹๊ธ€2๊ฐ€ ๋” ๋‹ฌ๋ ธ๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๋ชจ์˜ answer_number์€ 2๋กœ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์ž์‹๊ธ€2๋Š” ref_order์€ ๋‹ค์Œ ์ˆœ์„œ๋กœ ๋“ค์–ด์˜ค๊ฒŒ ๋˜๋ฉฐ, parent_number ์ฆ‰, ์ฐธ์กฐํ•˜๋Š” ๋ถ€๋ชจ ๊ฐ’์ด 2๊ฐ€ ๋˜.. 2022. 3. 21.
[Tip] MySQL Dump ๋‚ด PC์—์„œ MySQL ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋„์ปค์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๋Š” ๋ฒ•์„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ๋กœ์ปฌPC ํ•ด๋‹น sql ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ๋กœ๋กœ ์ด๋™ ํ›„ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. $ mysql -u root -p [database] < ๊ฒฝ๋กœ/ํŒŒ์ผ.sql; $ mysql -u root -p hanbit < data_setting.sql; // ์˜ˆ์‹œ. ํ•ด๋‹น ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ๋กœ๋กœ ์ด๋™ $ mysql -uroot -p < employees.sql 2. ๋„์ปค ์ด๋ฅผ ๋„์ปค์— ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์ด ์ด๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. $ docker cp /Users/jjw/Jun/Masters\ Course/Database/world-db/world.sql 3ec458da1254:/root 2022. 3. 21.
[Tip] cursor๊ธฐ๋ฐ˜ ํŽ˜์ด์ง• ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ ๋ฏธ์…˜์„ ํ•˜๋˜ ์ค‘ ๊ตฌ๊ธ€, ๋„ค์ด๋ฒ„, ์นด์นด์˜ค ๋“ฑ ํ˜„์žฌ ์„œ๋น„์Šค๋ฅผ ์ƒ์šฉ์ค‘์ธ IT ๋Œ€๊ธฐ์—…๋“ค์€ ์–ด๋–ป๊ฒŒ ํŽ˜์ด์ง•์„ ํ• ๊นŒ? ์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๋ฉฐ ๊ธ€์„ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธ€์€ ์ „๋ฐ˜์ ์œผ๋กœ ๊น€๋ฏผ์ƒ CTO๋‹˜์˜ ๊ธ€์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 1. offset๊ธฐ๋ฐ˜ ํŽ˜์ด์ง• offset ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•์€ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ช‡ ๋ฒˆ์งธ ์œ„์น˜์— ์กด์žฌํ•˜๋Š”์ง€์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์Šค์บ”ํ•ด์„œ ํ•ด๋‹น ํŽ˜์ด์ง€๊นŒ์ง€ ์ด๋™ ํ›„ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํŽธ์ ์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํŽ˜์ด์ง• ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. * Page Navigator๋ผ ๋ถˆ๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐ”(bar)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. offset๊ธฐ๋ฐ˜ ํŽ˜์ด์ง•์˜ ์ฟผ๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€๋ฐ์š”, OFFSET๊ณผ LIMIT, ์ •๋ ฌ ๊ธฐ์ค€์„ ์ฃผ๊ณ  ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ์ฐพ์•„์˜ต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๊ฐ€ ์ฐพ๋Š” ๋ฐ์ด.. 2022. 3. 19.
์ผ๊ธ‰ ์ปฌ๋ ‰์…˜๊ณผ ์ฃผ์˜์‚ฌํ•ญ 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.