๋ชฉ๋ก๐Ÿƒ๐Ÿป‍โ™‚๏ธ ๊ธฐ๋ณธํ›ˆ๋ จ (32)

hades

[๋ชจ๋˜ ์ž๋ฐ” ์ธ ์•ก์…˜] ์ปฌ๋ ‰์…˜ API ๊ฐœ์„ 

์ปฌ๋ ‰์…˜ ํŒฉํ† ๋ฆฌ์ž๋ฐ”์—์„œ ์ ์€ ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค๊นŒ?List friends = new ArrayList();friends.add("์งฑ๊ตฌ");friends.add("๋งน๊ตฌ");friends.add("์ฒ ์ˆ˜");์„ธ ๋ฌธ์ž์—ด์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ๋„ ๊ท€์ฐฎ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.List friends = Arrays.asList("์งฑ๊ตฌ", "๋งน๊ตฌ", "์ฒ ์ˆ˜");friends.add("ํ›ˆ์ด"); // ์—๋Ÿฌ ๋ฐœ์ƒ๊ณ ์ • ํฌ๊ธฐ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ์œผ๋ฏ€๋กœ, ์š”์†Œ๋ฅผ ๊ฐฑ์‹ ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ์ƒˆ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜๋Š” ์—†๋‹ค.  UnsupportedOperationException ์˜ˆ์™ธ ๋ฐœ์ƒ๋‚ด๋ถ€์ ์œผ๋กœ ๊ณ ์ •๋œ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด๋กœ๋ถ€ํ„ฐ ๊ตฌํ˜„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์™€ ๊ฐ™์€ ์ผ์ด ์ผ์–ด๋‚œ๋‹ค. ์ง‘ํ•ฉ์˜ ๊ฒฝ์šฐ๋ฅผ ์•Œ์•„๋ณด์ž. ์ง‘ํ•ฉ์—์„œ๋Š” Arrays...

[๋ชจ๋˜ ์ž๋ฐ” ์ธ ์•ก์…˜] ์ŠคํŠธ๋ฆผ

ํ•„์š”์„ฑ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์นผ๋กœ๋ฆฌ๊ฐ€ 100๋ณด๋‹ค ๋‚ฎ์€ ์š”๋ฆฌ๋ช…์„ ์„ ํƒํ•˜๋ผ๋Š” SQL ์ฟผ๋ฆฌ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.SELECT name FROM dishes WHERE calorie SQL ์ฟผ๋ฆฌ๋ฌธ์—์„œ๋Š” ๋ฐ˜๋ณต์ž, ๋ˆ„์ ์ž ๊ฐ™์€ ๊ฒƒ์ด ํ•„์š” ์—†์ด ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์ง์ ‘ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์งˆ์˜๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผ ํ• ์ง€ ๋ช…์‹œํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ, ๊ตฌํ˜„์€ ์ž๋™์œผ๋กœ ์ œ๊ณต๋œ๋‹ค. ์ปฌ๋ ‰์…˜์—์„œ๋„ ์ด์™€ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค. ๋งŽ์€ ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ์ปฌ๋ ‰์…˜์˜ ์„ฑ๋Šฅ์„ ๋†’์ด๊ณ  ์‹ถ๋‹ค. ์„ฑ๋Šฅ์„ ๋†’์ด๋ ค๋ฉด, ๋ฉ€ํ‹ฐ์ฝ”์–ด ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ณ‘๋ ฌ๋กœ ์ปฌ๋ ‰์…˜ ์š”์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ, ํ†ตํ™”๋ณ„๋กœ ํŠธ๋žœ์žญ์…˜์„ ๊ทธ๋ฃนํ™”ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ์ฝ”๋“œ๊ฐ€ ์ƒ๋‹นํžˆ ๊ธธ๋‹ค.Map> transactionsByCurrencies = new HashMap();f..

[๋ชจ๋˜ ์ž๋ฐ” ์ธ ์•ก์…˜] ๋žŒ๋‹ค ํ‘œํ˜„์‹

ํ•„์š”์„ฑ์ต๋ช… ํด๋ž˜์Šค๋กœ ๋‹ค์–‘ํ•œ ๋™์ž‘์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋งŒ์กฑํ•  ๋งŒํผ ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•˜์ง€๋Š” ์•Š์•˜๋‹ค. ๋žŒ๋‹ค ํ‘œํ˜„์‹์€ ์ต๋ช… ํด๋ž˜์Šค์ฒ˜๋Ÿผ ์ด๋ฆ„์ด ์—†๋Š” ํ•จ์ˆ˜์ด๋ฉด์„œ ๋ฉ”์†Œ๋“œ๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋žŒ๋‹ค ํ‘œํ˜„์‹์ด ์ต๋ช… ํด๋ž˜์Šค๋ฅผ ๋Œ€์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋žŒ๋‹ค๋ž€ ๋ฌด์—‡์ธ๊ฐ€?๋žŒ๋‹ค ํ‘œํ˜„์‹์€ ๋ฉ”์†Œ๋“œ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ต๋ช… ํ•จ์ˆ˜๋ฅผ ๋‹จ์ˆœํ™”ํ•œ ๊ฒƒ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋žŒ๋‹ค ํ‘œํ˜„์‹์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์ด ์žˆ๋‹ค.์ต๋ช… : ๋ณดํ†ต์˜ ๋ฉ”์†Œ๋“œ์™€๋Š” ๋‹ฌ๋ฆฌ ์ด๋ฆ„์ด ์—†์œผ๋ฏ€๋กœ ์ต๋ช…์ด๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค.ํ•จ์ˆ˜ : ๋žŒ๋‹ค๋Š” ๋ฉ”์†Œ๋“œ์™€๋Š” ๋‹ฌ๋ฆฌ ํŠน์ • ํด๋ž˜์Šค์— ์ข…์†๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ•จ์ˆ˜๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํ•˜์ง€๋งŒ, ๋ฉ”์†Œ๋“œ์ฒ˜๋Ÿผ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฆฌ์ŠคํŠธ, ๋ฐ”๋””, ๋ฐ˜ํ™˜ ํ˜•์‹, ๊ฐ€๋Šฅํ•œ ์˜ˆ์™ธ ๋ฆฌ์ŠคํŠธ๋ฅผ ํฌํ•จํ•œ๋‹ค.์ „๋‹ฌ : ๋žŒ๋‹ค ํ‘œํ˜„์‹์„ ๋ฉ”์†Œ๋“œ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ๋ณ€์ˆ˜๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.๊ฐ„๊ฒฐ์„ฑ : ์ต๋ช… ํด๋ž˜์Šค์™€๋Š” ๋‹ฌ๋ฆฌ ..

[Java] ์ž๋ฐ” ๊ธฐ์ดˆ

๋ณธ ๊ธ€์€ ์ž๋ฐ”๋ฅผ ํ•™์Šตํ•˜๋ฉด์„œ, ํƒ€ ์–ธ์–ด์—์„œ ์•Œ๊ณ  ์žˆ๋˜ ๋‚ด์šฉ ์ด์™ธ์— ์ถ”๊ฐ€๋กœ ๊ธฐ์–ตํ•  ์‚ฌํ•ญ์„ ์ •๋ฆฌํ•˜์—ฌ ์ž‘์„ฑํ•œ ๊ธ€์ด๋‹ค. ์ฆ‰, ๋ชจ๋“  ๋‚ด์šฉ์„ ํฌํ•จํ•˜๊ณ  ์žˆ์ง€๋Š” ์•Š๋‹ค. ๋ณ€์ˆ˜์™€ ํƒ€์ž…๋ช…๋ช… ๊ด€๋ก€์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ, ์—ฌ๋Ÿฌ ๋‹จ์–ด๋ฅผ ํ˜ผํ•ฉํ•˜์—ฌ ๋ช…๋ช…ํ•˜๋Š” ๊ฒฝ์šฐ, camel case๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ๋ณธ์œผ๋กœ ๋‹ค์Œ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ถ”๊ฐ€ํ•œ๋‹ค.์ž๋ฐ” ์†Œ์Šค ํŒŒ์ผ๋ช…(ํด๋ž˜์Šค๋ช…)์€ ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๊ด€๋ก€์ด๋‹ค. ex) Member.java, Item.java๋ณ€์ˆ˜๋ช…์€ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๊ด€๋ก€์ด๋‹ค. ex) mathScore, uploadFile ๋ณ€์ˆ˜ ์„ ์–ธ๋ณ€์ˆ˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋ฒˆ์ง€์— ๋ถ™์—ฌ์ง„ ์ด๋ฆ„์ด๋‹ค. ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋Œ€์ž…ํ•ด์•ผ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ• ๋‹น๋œ๋‹ค. int x = 3;int y = 7;int temp = x;x = ..

[Spring] ๊ณตํ†ต ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

๐Ÿšจ ์—๋ŸฌํšŒ์›๊ฐ€์ž…์„ ํ–ˆ์„ ๋•Œ, ๋‹น์—ฐํžˆ ํ•˜๋‚˜์˜ ๊ณ„์ •์ด ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ๊ธฐ๋Œ€ํ•œ๋‹ค. ํ•˜์ง€๋งŒ, ์šฐ์—ฐ์น˜ ์•Š๊ฒŒ ๋งˆ์šฐ์Šค ์˜ค๋™์ž‘์œผ๋กœ ์—ฐ์†ํ•ด์„œ ํด๋ฆญํ–ˆ๋Š”๋ฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— 2๊ฐœ ์ด์ƒ์˜ ๊ฐ™์€ ๊ณ„์ •์ด ์ €์žฅ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.  ๐Ÿ” ๋ถ„์„ ์œ„์™€ ๊ฐ™์ด ๋™์‹œ์— ์š”์ฒญ์ด ๋ณด๋‚ด์ง€๋Š” ๊ฒฝ์šฐ, ์ฆ‰, ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋™์‹œ์— ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค๋ฉด, ์ค‘๋ณตํ™•์ธ๊ณผ ๋ณ„๊ฐœ๋กœ ์ด์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ์„ ๊นจ๋‹ฌ์•˜๋‹ค.  ๐Ÿ‘Š ํ•ด๊ฒฐ ํšŒ์›๊ฐ€์ž…์—์„œ๋Š” ์ฃผ๋กœ ์‚ฌ์šฉ์ž ์ด๋ฆ„์œผ๋กœ ์ค‘๋ณต์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋ฏ€๋กœ, ์‚ฌ์šฉ์ž ์ด๋ฆ„์— unique ์ œ์•ฝ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ๊ทธ ํ›„, ์˜คํ† ๋งˆ์šฐ์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์งง์€ ์‹œ๊ฐ„์— ๊ฐ™์€ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ๊ฐœ ๋ณด๋‚ด์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•˜๋‹ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค.DataIntegrityViolationException์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , ์ด..

[Spring] ์ธ์ฝ”๋”ฉํ•œ ๊ฒฐ๊ณผ๋Š” ๋””์ฝ”๋”ฉ

๐Ÿšจ ์—๋Ÿฌํ˜„์žฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์œ„์™€ ๊ฐ™์ด ์ €์žฅ๋œ ์ƒํƒœ์ด๋‹ค. ๊ธ€ ์ž‘์„ฑ์„ ํ•˜๋ฉด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ FOOD ํ…Œ์ด๋ธ”์€ ๋ณ€ํ•จ์—†์ด POST ํ…Œ์ด๋ธ”์—๋งŒ ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์„ ๊ธฐ๋Œ€ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์˜ค๋Š˜์˜ ์š”๋ฆฌ ์ž๋ž‘์— ๊ฒŒ์‹œ๊ธ€์ด ์•„๋ฌด ๊ฒƒ๋„ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณด๋‹ˆ ์ดˆ์ฝœ๋ฆฟ+์ผ€์ดํฌ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. ๐Ÿ” ๋ถ„์„๋ฌธ์ œ๋Š” ๊ธ€์„ ์ž‘์„ฑํ•˜๊ณ , redirectํ•  ๋•Œ, UrlEncoder๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒฝ๋กœ๋ฅผ ์ƒ์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.return "redirect:/food/foodInfo/" + URLEncoder.encode(food.getName(), "UTF-8"); ๐Ÿ‘Š ํ•ด๊ฒฐ@GetMapping("/foodInfo/{foodName}")public String foodInfo(@PathVariable(name = "foodName") Strin..