๐ฅ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. ์ด์ 1 ๋ค์