๐Ÿต java

1. JPA Java Persistence API์˜ ์•ฝ์ž๋กœ, ์ž๋ฐ” ์ง„์˜์—์„œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜ ๋ฐ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋งคํ•‘ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค Persistence -> ์˜๊ตฌ์ ์ธ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐœ๋…๊ณผ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๋งคํ•‘์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ORM(Object-Relational Mapping) ๊ธฐ์ˆ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค. * ORM : ๊ฐœ๋ฐœ์ž๊ฐ€ SQL ์ฟผ๋ฆฌ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๋Œ€์‹ ์— ๊ฐ์ฒด ์ง€ํ–ฅ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด, ํ•œ๊ตญ์ธ๊ณผ ํ”„๋ž‘์Šค์ธ, ์ผ๋ณธ์ธ ๋ฏธ๊ตญ์ธ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ ํ•œ๊ตญ์ธ์ด "์•ˆ๋…•"์ด๋ผ๋Š” ์ธ์‚ฌ๋ฅผ ๊ฑด๋„ค๋ฉด, JPA๋Š” ์ด "์•ˆ๋…•"์„ ๊ฐ ๋‚˜๋ผ์˜ ์–ธ์–ด์— ๋งž๊ฒŒ ๋ฐ”๊พธ์–ด ์ „๋‹ฌํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ..
DTO(Data Transfer Object) ๊ณ„์ธต ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด ๋กœ์ง์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ์ˆœ์ˆ˜ํ•œ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด(getter & setter ๋งŒ ๊ฐ€์ง„ ํด๋ž˜์Šค) ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์•„๋‹Œ ๋ฐ์ดํ„ฐ๋งŒ ์ €์žฅํ•ด์•ผ ํ•จ ์šฉ๋Ÿ‰์ด ์ž‘์€ ๋‹จ์ˆœํ•œ ํ™˜๊ฒฝ์œผ๋กœ, ํ•œ ๊ฐ€์ง€ ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ DB - Table - Model - DTO DTO๋ฅผ ๋งŒ๋“ค๋ฉด password๋ฅผ ๋…ธ์ถœ์‹œํ‚ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. Model๋ฅผ ๋…ธ์ถœ์‹œ์ผœ์„œ ๊ฐ’์„ ๋นผ๋ฉด ์•ˆ๋˜๋‚˜? - ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๊ฐ€ ๋…ธ์ถœ๋œ๋‹ค. DTO๋ฅผ ๊ณต์œ ํ•˜๋ฉด ์•ˆ๋˜๋‚˜? ๐Ÿ” ํšจ๊ณผ์ ์ธ DTO ์ƒ์šฉ๊ตฌ ์ฝ”๋“œ๋ฅผ ์ตœ์†Œํ™” โ‡’ ์ฝ”๋“œ๋ฅผ ์ผ์ผ์ด ์ƒˆ๋กœ ์ž‘์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ ์ž‘์„ฑ์ด ์šฉ์ดํ•ด์•ผ ํ•จ โ‡’ DTO๋Š” ์ž‘์„ฑ์ด ์–ด๋ ค์šธ ์ •๋„๋กœ ๋ณต์žกํ•ด์„œ๋Š” ์•ˆ๋จ ์ฝ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ โ‡’ ๋ˆ„๊ตฌ๋“ ์ง€ ์ฝ”๋“œ ๊ตฌ๋ฌธ์„ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋„๋ก DTO๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ..
๋ฆฌํ”Œ๋ ‰์…˜์ด๋ž€ ? 1. ๋ฆฌํ”Œ๋ ‰์…˜(Reflection) : ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์˜ ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ, ํ•„๋“œ ๋“ฑ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” API ํด๋ž˜์Šค์˜ ์ •๋ณด ๋ถ„์„, ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ, ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ, ํ•„๋“œ์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์„ค์ • ๋“ฑ์˜ ์ž‘์—… ์ˆ˜ํ–‰ 2. ๋ฆฌํ”Œ๋ ‰์…˜์ด ์ด์šฉ๋˜๋Š” ์ƒํ™ฉ 1. ๋Ÿฐํƒ€์ž„ ์‹œ์— ๋™์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ๋กœ๋“œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ 2. ํด๋ž˜์Šค์˜ ๊ตฌ์กฐ, ๋ฉ”์„œ๋“œ, ํ•„๋“œ ๋“ฑ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋ถ„์„ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ 3. ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ํ•„๋“œ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์œ„์˜ ์„ค๋ช…์œผ๋กœ๋Š” ์ดํ•ด๊ฐ€ ์–ด๋ ค์šฐ๋‹ˆ ์กฐ๊ธˆ ๋” ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž. # CASE 1 ์ฒซ๋ฒˆ์งธ ๊ฒฝ์šฐ์—์„œ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด 1์ฐจ ๊ฐœ๋ฐœ์ž๋Š” "/login"์„ ์ž…๋ ฅ ๋ฐ›์•˜์„ ๋•Œ uc.login() ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋„๋ก, "/jo..
enum์ด๋ž€ enumeration type์„ ์ค„์ธ ๊ฒƒ์œผ๋กœ, ์˜๋ฏธ์žˆ๋Š” ์ƒ์ˆ˜๋ฅผ ์—ด๊ฑฐํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค 1. ๐Ÿ”ฅ enum ์‚ฌ์šฉ์˜ ์žฅ์  ์—ด๊ฑฐ์ฒด๋ฅผ ๋น„๊ตํ•  ๋•Œ ์‹ค์ œ ๊ฐ’๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํƒ€์ž…๊นŒ์ง€ ์ฒดํฌ ์—ด๊ฑฐ์ฒด์˜ ์ƒ์ˆซ๊ฐ’์ด ์žฌ์ •์˜๋˜๋”๋ผ๋„ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•  ํ•„์š” x 2. ๐Ÿ–ฅ๏ธ ์‚ฌ์šฉ ์˜ˆ์‹œ (week) โ–ผ Week ์ •์˜ enum enum Week { MON, TUE, WED, THU, FRI, SAT, SUN } โ–ผ enum ์ƒ์ˆ˜๋ฅผ ์ „๋‹ฌ ๋ฐ›๋Š” today ๋ฉ”์†Œ๋“œ ์ •์˜ public static void today(Week week) { switch (week) { case MON: System.out.println("์˜ค๋Š˜์€ ์›”์š”์ผ์ž…๋‹ˆ๋‹ค."); break; case TUE: System.out.println("์˜ค๋Š˜์€ ํ™”์š”์ผ์ž…๋‹ˆ๋‹ค."); b..