๊ฐœ๋ฐœ ๊ณต๋ถ€ 145

[์›น๊ฐœ๋ฐœ์˜ ๋ด„, Spring] 4์ฃผ์ฐจ ๊ฐœ๋ฐœ์ผ์ง€(2) - <๋‚˜๋งŒ์˜ ์…€๋ ‰์ƒต> ์„œ๋ฒ„

[์›น๊ฐœ๋ฐœ์˜ ๋ด„, Spring] 4์ฃผ์ฐจ ๊ฐœ๋ฐœ์ผ์ง€(1) - ๋„ค์ด๋ฒ„ ์‡ผํ•‘ API ์ด์šฉํ•˜๊ธฐ ์ด์ „ ํฌ์ŠคํŒ…์—์„œ ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค๊ณ„ํ–ˆ๋‹ค. ๊ธฐ๋Šฅ Method URL return ํ‚ค์›Œ๋“œ๋กœ ์ƒํ’ˆ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ชฉ๋ก์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ GET /api/search?query=๊ฒ€์ƒ‰์–ด List ๊ด€์‹ฌ ์ƒํ’ˆ ๋“ฑ๋กํ•˜๊ธฐ POST /api/products Product ๊ด€์‹ฌ ์ƒํ’ˆ ์กฐํšŒํ•˜๊ธฐ GET /api/products List ๊ด€์‹ฌ ์ƒํ’ˆ์— ๊ด€์‹ฌ ๊ฐ€๊ฒฉ ๋“ฑ๋กํ•˜๊ณ , ์ƒํ’ˆ ๊ฐ€๊ฒฉ์ด ๋” ๋‚ฎ์€ ๊ฒฝ์šฐ ํ‘œ์‹œํ•˜๊ธฐ PUT /api/products/{id} id 1. Controller ProductRestController: ๊ด€์‹ฌ ์ƒํ’ˆ ๊ด€๋ จ ์ปจํŠธ๋กค๋Ÿฌ SearchRequestContorller: ๊ฒ€์ƒ‰ ๊ด€๋ จ ์ปจํŠธ๋กค๋Ÿฌ 2. Service ProductServ..

Server/SpringBoot 2021.07.16

[์›น๊ฐœ๋ฐœ์˜ ๋ด„, Spring] 4์ฃผ์ฐจ ๊ฐœ๋ฐœ์ผ์ง€(1) - ๋„ค์ด๋ฒ„ ์‡ผํ•‘ API ์ด์šฉํ•˜๊ธฐ

๊ฐœ๋ฐœ์˜ ํ•ต์‹ฌ ์ค‘ ํ•˜๋‚˜๋Š” ๋ถ„์—…๊ณผ ๋Š์Šจํ•œ ๊ฒฐํ•ฉ์ด๋‹ค. ๋ถ„์—…์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ์˜จ์ „ํžˆ ์ž‘๋™ํ•˜๊ฒŒ ํ•˜๊ณ , ๋Š์Šจํžˆ ๊ฒฐํ•ฉํ•จ์œผ๋กœ์จ ์œ ์—ฐ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ์Šคํ”„๋ง์˜ ์ฒ™์ถ”๋ผ ํ•  ์ˆ˜ ์žˆ๋Š” Controller, Service, Repository 3๊ณ„์ธต์€ ๋ถ„์—…๊ณผ ๋Š์Šจํ•œ ๊ฒฐํ•ฉ์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ์ด๋‹ค. ๋Š์Šจํ•œ ๊ฒฐํ•ฉ์˜ ๋˜ ๋‹ค๋ฅธ ์˜ˆ์‹œ๊ฐ€ ๋ฐ”๋กœ API์ด๋‹ค. ๋‚ด๊ฐ€ API์˜ ๋‚ด๋ถ€ ๋กœ์ง์ด ์–ด๋–ป๊ฒŒ ์งœ์—ฌ์กŒ๋Š”์ง€ ๋ชจ๋ฅด๋Š” ์ƒํ™ฉ์—์„œ๋„, ๊ณต์‹ ๋ฌธ์„œ์— ๋‚˜์˜จ ์ •ํ•ด์ง„ ์•ฝ์†๋Œ€๋กœ ์š”๊ตฌ๋ฅผ ํ•˜๋ฉด ์ •ํ•ด์ง„ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ API๋ฅผ "์‚ฌ์šฉ"ํ•  ์ค„ ์•„๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ์ด๋ฒˆ ์ฃผ์ฐจ ์ˆ˜์—… ๋‚ด์šฉ์€ ์Šคํ”„๋ง์˜ 3๊ณ„์ธต๊ณผ API handling ์—ฐ์Šต์— ์ค‘์ ์„ ๋’€๋‹ค. ์ด๋ฒˆ์— ๋งŒ๋“ค ๊ฒƒ์€ ์ด๋‹ค. ์š”๊ตฌ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ƒํ’ˆ๋ช…์— ๋”ฐ๋ฅธ ๊ฒ€์ƒ‰ ๊ด€์‹ฌ ์ƒํ’ˆ ๋“ฑ๋ก & ์กฐํšŒ ๊ด€์‹ฌ ์ƒ..

Server/SpringBoot 2021.07.16

[์ฑ… ๋ฆฌ๋ทฐ] ๊ฐœ๋ฐœ์ž์˜ ๊ธ€์“ฐ๊ธฐ - ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ๊ณ  ๊ธ€์“ฐ๊ธฐ๋„ ์ž˜ํ•˜๊ณ  ์‹ถ์–ด

velog ํƒ๋ฐฉ ์ค‘์— https://velog.io/@frozing/2021-๊ฐœ๋ฐœ์ž-ํ•„๋…์„œ-55๊ถŒ-2 ํฌ์ŠคํŒ…์„ ๋ณด๊ณ  ์ฝ๊ณ  ์‹ถ์€ ์ฑ…์„ ์•Œ๋ผ๋”˜์— ํ•œ ๋ฐ”๊ฐ€์ง€ ์ถ”๊ฐ€ํ•ด๋’€๋‹ค. ์ด ์ฑ…์€ ๊ทธ์ค‘์— ์œ ์ผํ•˜๊ฒŒ! ํ•™๊ต ์ „์ž๋„์„œ๊ด€์— ๋Œ€์ถœ ๊ฐ€๋Šฅํ•œ ์ฑ…์ด์—ˆ๋‹ค. ์‚ฌ์‹ค ์ด ์ฑ…์„ ์ฝ๊ณ  ์‹ถ์—ˆ๋˜ ์ด์œ  ์ค‘์— 8ํ• ์€ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ์ด๋‹ค. ๋ฌผ๋ก  ํ˜„์žฌ ๋‚ด ๋ธ”๋กœ๊ทธ๋Š” ์ง€์‹์„ ๊ณต์œ ํ•˜๋Š” ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ๋ผ๊ธฐ์—” ํ„ฑ์—†์ด ๋ถ€์กฑํ•˜๊ณ , ๋ฐฐ์šด ๊ฒƒ์„ ์ •๋ฆฌํ•˜๊ณ ์ž ํ•˜๋Š” ๋ชฉ์ ์ด ํฌ๋‹ค. ํ•˜์ง€๋งŒ ํ—ˆ์ ‘ํ•ด ๋ณด์ด๋Š” ์ง€๊ธˆ ๋‚ด ๊ธ€๋“ค๋„ ๋‚˜๋ฆ„์˜ ๊ณ ๋ฏผ์„ ํ•ด๊ฐ€๋ฉฐ ์ž‘์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ด ์ฑ…์„ ํ†ตํ•ด ๊ธ€ ์ž‘์„ฑ์— ๋„์›€์„ ๋ฐ›๊ณ  ์‹ถ์—ˆ๋‹ค. ๊ทธ๋Ÿผ ์•ž์œผ๋กœ์˜ ๊ณต๋ถ€์— ๋”๋”๋” ๋„์›€์ด ๋˜์ง€ ์•Š์„๊นŒ? ใ…Žใ…Ž ๊ฐœ๋ฐœ์ž๋Š” ๊ธ€์„ ๋ชป ์“ด๋‹ค? ์ž‘๋…„ ๊ธฐ์ดˆ DB ์ˆ˜์—… ๋•Œ ๊ต์ˆ˜๋‹˜์ด ํ•˜์…จ๋˜ ๋ง์”€์ด ์ƒ๊ฐ๋‚˜๋Š” ๊ตฌ์ ˆ์ด๋‹ค. ๊ทธ๋•Œ ๊ต์ˆ˜๋‹˜์ด DB ์„ค๊ณ„์— ์žˆ..

Review/Book 2021.07.15

[์›น๊ฐœ๋ฐœ์˜ ๋ด„, Spring] 3์ฃผ์ฐจ ๊ฐœ๋ฐœ์ผ์ง€(2) - Timeline Service ํด๋ผ์ด์–ธํŠธ

[์›น๊ฐœ๋ฐœ์˜ ๋ด„, Spring] 3์ฃผ์ฐจ ๊ฐœ๋ฐœ์ผ์ง€(1) - Timeline Service ์„œ๋ฒ„ ํด๋ผ์ด์–ธํŠธ ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„ ๐Ÿ’ก ํด๋ผ์ด์–ธํŠธ ์„ค๊ณ„ Timeline Service์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋ฉ”๋ชจ ์กฐํšŒํ•˜๊ธฐ - ์ฒ˜์Œ ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ–ˆ์„ ๋•Œ, ์ƒˆ๋กœ๊ณ ์นจ์„ ํ–ˆ์„ ๋•Œ ์ž‘๋™ 1) GET API ์‚ฌ์šฉํ•ด์„œ ๋ฉ”๋ชจ ๋ชฉ๋ก ๋ถˆ๋Ÿฌ์˜ค๊ธฐ 2) ๋ฉ”๋ชจ๋งˆ๋‹ค HTML ๋งŒ๋“ค๊ณ  ๋ถ™์ด๊ธฐ ๋ฉ”๋ชจ ์ƒ์„ฑํ•˜๊ธฐ - ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉ”๋ชจ ์ž‘์„ฑ ๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ์ž‘๋™ 1) ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ฉ”๋ชจ ๋‚ด์šฉ ํ™•์ธํ•˜๊ธฐ 2) POST API ์‚ฌ์šฉํ•ด์„œ ๋ฉ”๋ชจ ์‹ ๊ทœ ์ƒ์„ฑํ•˜๊ธฐ 3) ํ™”๋ฉด ์ƒˆ๋กœ๊ณ ์นจํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๋œ ๋ฉ”๋ชจ ๋ชฉ๋ก ํ™•์ธํ•˜๊ธฐ ๋ฉ”๋ชจ ๋ณ€๊ฒฝํ•˜๊ธฐ - ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ๋ฉ”๋ชจ์˜ ์ˆ˜์ • ๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ์ž‘๋™ 1) ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญํ•œ ๋ฉ”๋ชจ๊ฐ€ ์–ด๋–ค ๊ฒƒ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ 2) ๋ณ€๊ฒฝํ•œ ๋ฉ”๋ชจ ๋‚ด์šฉ ํ™•์ธํ•˜..

Server/SpringBoot 2021.07.13

[์›น๊ฐœ๋ฐœ์˜ ๋ด„, Spring] 3์ฃผ์ฐจ ๊ฐœ๋ฐœ์ผ์ง€(1) - Timeline Service ์„œ๋ฒ„

3์ฃผ์ฐจ์—์„œ๋Š” ๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์™„์„ฑํ•ด๋ดค๋‹ค. ์™„์„ฑํ•œ ํ”„๋กœ์ ํŠธ๋Š” Timeline Service๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ„๋‹จํ•œ ๋ฉ”๋ชจ๋ฅผ ์ž‘์„ฑ, ์ˆ˜์ •, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค์ด๋‹ค. ํŠน์ดํ•œ ์ ์€, ์ž‘์„ฑํ•œ ์ง€ 24์‹œ๊ฐ„์ด ์ง€๋‚œ ๋ฉ”๋ชจ๋“ค์€ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋œ๋‹ค๋Š” ์ ์ด๋‹ค. ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ ˆ์ฐจ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. API ์„ค๊ณ„ํ•˜๊ธฐ Repository, Service, Controller ๋งŒ๋“ค๊ธฐ ํด๋ผ์ด์–ธํŠธ ์„ค๊ณ„ํ•˜๊ธฐ ํด๋ผ์ด์–ธํŠธ ์™„์„ฑํ•˜๊ธฐ ์ค‘๊ฐ„์— HTML, CSS, Javascript, jQuery์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ํ•™์Šตํ–ˆ์ง€๋งŒ, ์ด ๋ถ€๋ถ„์€ ์™•์ดˆ๋ณด ์‹œ์ž‘๋ฐ˜ ๊ฐ•์˜ ๋‚ด์šฉ๊ณผ ๊ฒน์น˜๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ๋กœ ์ •๋ฆฌํ•˜์ง„ ์•Š๊ฒ ๋‹ค. ์„œ๋ฒ„์™€ ๊ด€๋ จ๋œ 1, 2๋ฒˆ๊ณผ ํด๋ผ์ด์–ธํŠธ์™€ ๊ด€๋ จ๋œ 3, 4๋ฒˆ์„ ๋‚˜๋ˆ ์„œ ํฌ์ŠคํŒ…์„ ์ž‘์„ฑํ•˜๋ คํ•œ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์„œ๋ฒ„ ๊ด€๋ จ ๋‚ด์šฉ์„ ์ ์–ด๋ณด๊ฒ ๋‹ค๐Ÿ˜‰ ..

Server/SpringBoot 2021.07.13

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ด์ง„ ํƒ์ƒ‰(Binary Search)

์ด์ง„ ํƒ์ƒ‰ ๐Ÿ’ก ์•„์ด๋””์–ด ๋ฐฐ์—ด์—์„œ ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ ˆ๋ฐ˜์”ฉ ์ขํ˜€๊ฐ€๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ํƒ์ƒ‰ํ•ด๋ณด์ž!! โญ๋‹จ, ๋ฐฐ์—ด ๋‚ด ๋ฐ์ดํ„ฐ๋Š” ์ด๋ฏธ ์ •๋ ฌ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.โญ ๐Ÿ’ก ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๋ช… ํƒ์ƒ‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฒ”์œ„(start, end)๋ฅผ ์ •ํ•œ๋‹ค. start์™€ end ์‚ฌ์ด mid๋ฅผ ์ •ํ•œ๋‹ค. mid์˜ ๋ฐ์ดํ„ฐ์™€ ์ฐพ์œผ๋ ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•œ๋‹ค. 1) ๊ฐ™์„ ๊ฒฝ์šฐ - ํƒ์ƒ‰์„ ์ข…๋ฃŒํ•œ๋‹ค. 2) ์ค‘๊ฐ„์ ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋” ํด ๊ฒฝ์šฐ - end๋ฅผ (mid - 1)๋กœ ์„ค์ •ํ•ด mid์˜ ์™ผ์ชฝ์„ ํƒ์ƒ‰ํ•œ๋‹ค. 3) ์ค‘๊ฐ„์ ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋” ์ž‘์„ ๊ฒฝ์šฐ - start๋ฅผ (mid + 1)๋กœ ์„ค์ •ํ•ด mid์˜ ์˜ค๋ฅธ์ชฝ์„ ํƒ์ƒ‰ํ•œ๋‹ค. start์™€ end ์‚ฌ์ด์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š” ๋™์•ˆ 2~3์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค. ๐Ÿ’ก ์†Œ์Šค ์ฝ”๋“œ ๋‹ค์Œ์€ array ๋‚ด์˜ target์˜ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค...

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ •๋ ฌ - ์„ ํƒ ์ •๋ ฌ, ์‚ฝ์ž… ์ •๋ ฌ, ํ€ต ์ •๋ ฌ, ๊ณ„์ˆ˜ ์ •๋ ฌ

์ •๋ ฌ(Sorting)์ด๋ž€ ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ •ํ•œ ๊ธฐ์ค€์— ๋”ฐ๋ผ์„œ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๋ฉด ์ด์ง„ ํƒ์ƒ‰(Binary Search)์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. ๋˜ํ•œ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•  ๋•Œ ์–ด๋–ค ์‹์œผ๋กœ๋“  ์ •๋ ฌํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ ์‹œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์„ ํƒ ์ •๋ ฌ(Selection Sort) ๐Ÿ’ก ์•„์ด๋””์–ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฌด์ž‘์œ„๋กœ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ๋•Œ, ๊ทธ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•ด ๋งจ ์•ž์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋ฐ”๊พธ๊ณ , ๊ทธ๋‹ค์Œ ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•ด ์•ž์—์„œ ๋‘ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ์™€ ๋ฐ”๊พธ๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด๋ณด์ž => ๋งค๋ฒˆ ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ ์„ ํƒํ•œ๋‹ค ๐Ÿ’ก ์†Œ์Šค์ฝ”๋“œ def sel_sort(array): for i in range(len(array)):..

[์›น๊ฐœ๋ฐœ์˜ ๋ด„, Spring] 2์ฃผ์ฐจ ๊ฐœ๋ฐœ์ผ์ง€(3) - Lombok, DTO, Controller

[์›น๊ฐœ๋ฐœ์˜ ๋ด„, Spring] 2์ฃผ์ฐจ ๊ฐœ๋ฐœ์ผ์ง€(1) - RDBMS, H2, SQL [์›น๊ฐœ๋ฐœ์˜ ๋ด„, Spring] 2์ฃผ์ฐจ ๊ฐœ๋ฐœ์ผ์ง€(2) - JPA์˜ CRUD์™€ Repository ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์ •๋ฆฌํ•  ๋ถ€๋ถ„์€ Lombok, DTO, Controller์— ๊ด€ํ•œ ๋‚ด์šฉ์ด๋‹ค. Lombok ๐Ÿ’ก Lombok์ด๋ž€? Lombok(๋กฌ๋ณต)์€ ์ž๋ฐ” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ๊ฑฐ์˜ ํ•„์ˆ˜์ ์œผ๋กœ ํ•„์š”ํ•œ ๋ฉ”์†Œ๋“œ/์ƒ์„ฑ์ž ๋“ฑ์„ ์ž๋™ ์ƒ์„ฑํ•ด์คŒ์œผ๋กœ์จ ์ฝ”๋“œ๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. plugins์—์„œ lombok์„ ๊ฒ€์ƒ‰ํ•ด์„œ ์„ค์น˜ํ•œ ํ›„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Getter, NoArgsConstructor, RequiredArgsConstructor ๋“ฑ์„ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด๋ดค๋‹ค. DTO ๐Ÿ’ก DTO์˜ ํ•„์š”์„ฑ read, update๋ฅผ ํ•  ๋•Œ ..

Server/SpringBoot 2021.07.06

[์›น๊ฐœ๋ฐœ์˜ ๋ด„, Spring] 2์ฃผ์ฐจ ๊ฐœ๋ฐœ์ผ์ง€(2) - JPA์˜ CRUD์™€ Repository

[์›น๊ฐœ๋ฐœ์˜ ๋ด„, Spring] 2์ฃผ์ฐจ ๊ฐœ๋ฐœ์ผ์ง€(1) - RDBMS, H2, SQL ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์ •๋ฆฌํ•  ๋ถ€๋ถ„์€ JPA์™€ Repository์— ๊ด€ํ•œ ๋‚ด์šฉ์ด๋‹ค. JPA ๐Ÿ’ก JPA๋ž€? JPA๋Š” SQL์„ ์“ฐ์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๋ฒˆ์—ญ๊ธฐ์ด๋‹ค. JPA๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋ฐ”๋กœ ์ฝ”๋“œ ์ž‘์„ฑ์„ ํ•˜๋‹ค๊ฐ€ ๊ฐ‘์ž๊ธฐ SQL์„ ์งœ๊ณ , ๋˜ ๊ทธ๊ฑธ ์ž˜ ๋งž์ถ”์–ด ๋„ฃ์–ด์•ผ ํ•˜๋Š” ๋ณต์žกํ•œ ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. ๋ฐ˜๋ฉด์— JPA๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•œ ์„ค์ •๊ณผ ํ•จ๊ป˜ ๋ช…๋ น๋„ ์ž๋ฐ”๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ตฟ๊ตฟ~ ๐Ÿ’ก JPA ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ Dependencies์— JPA๋ฅผ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฏ€๋กœ ๋”ฐ๋กœ ์„ค์ •์—†์ด ๋ฐ”๋กœ JPA๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. DB์—์„œ์˜ "ํ…Œ์ด๋ธ”"์€ ์ž๋ฐ”์—์„œ Domain, "SQL"์€ Repository๋ผ๊ณ  ..

Server/SpringBoot 2021.07.06

[์›น๊ฐœ๋ฐœ์˜ ๋ด„, Spring] 2์ฃผ์ฐจ ๊ฐœ๋ฐœ์ผ์ง€(1) - RDBMS, H2, SQL

2์ฃผ์ฐจ์—์„œ๋Š” ๊ธฐ์ดˆ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ํ•™์Šตํ–ˆ๋‹ค. RDBMS, H2, SQL JPA, Repository API, Lombok, DTO ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์ •๋ฆฌํ•  ๋ถ€๋ถ„์€ DB์™€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ถ€๋ถ„์ธ RDBMS, H2, SQL์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด๋‹ค. RDBMS ๐Ÿ’ก RDBMS๋ž€? RDBMS(Relational DataBase Management System)์€ ์ปดํ“จํ„ฐ์— ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์ข…๋ฅ˜๋กœ๋Š” MySQL, PostgreSQL, Oracle Database ๋“ฑ์ด ์žˆ๋‹ค. ๊ฐ•์˜์˜ 4์ฃผ์ฐจ๊นŒ์ง€๋Š” H2๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. H2๋Š” In-memory DB๋กœ, ์„œ๋ฒ„๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋™์•ˆ์—๋งŒ ๋‚ด์šฉ์„ ์ €์žฅํ•˜๊ณ  ์„œ๋ฒ„๊ฐ€ ์ž‘๋™์„ ๋ฉˆ์ถ”๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์‚ญ์ œ๋œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ ๋ฆฌ๊ณ  ์‹ถ์œผ๋ฉด ์„œ๋ฒ„๋ฅผ..

Server/SpringBoot 2021.07.06