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

์ „์ฒด ๊ธ€67

[JPA] ์˜คํ”„์…‹ ๊ธฐ๋ฐ˜ Pagenation ๊ตฌํ˜„ํ•˜๊ธฐ Spring Data JPA์—์„œ๋Š” Pagination์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก Pageable ๊ฐ์ฒด๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์˜คํ”„์…‹ ๊ธฐ๋ฐ˜ Pagenation DB์˜ offset์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ‘ํŽ˜์ด์ง€’ ๋‹จ์œ„๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์š”์ฒญ/์‘๋‹ต ํ•œ๋‹ค. controller /** * ๊ฒŒ์‹œ๋ฌผ page ์กฐํšŒ * * @param pageable * @return Page */ @GetMapping(produces = APPLICATION_JSON_VALUE) public ApiResponse getPosts(@PageableDefault(sort = "id", direction = Sort.Direction.DESC) Pageable pageable) { Page pages = postService.findAll(pageable); ret.. 2023. 3. 1.
[Spring] Spring MVC โ€ป Spring MVC ๋ฐœํ‘œ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค! Spring MVC ๋ž€? Spring ํ”„๋ ˆ์ž„์›Œํฌ ์ค‘์— ์›น ๊ณ„์ธต์„ ๋‹ด๋‹นํ•˜๋Š” ๋ชจ๋“ˆ ์ค‘ ํ•˜๋‚˜๋กœ ์ •์‹ ๋ช…์นญ์€ Spring Web MVC ์ž…๋‹ˆ๋‹ค. ๐Ÿ’ก Spring MVC๋Š” Servlet API์œ„์—์„œ ๋™์ž‘ํ•˜๋ฉฐ Model, View, Controller ์„ธ๊ฐ€์ง€ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•ด ํด๋ผ์ด์–ธํŠธ์˜ ๋‹ค์–‘ํ•œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋‹จ์ˆœ ํ…์ŠคํŠธ ํ˜•์‹๋ถ€ํ„ฐ REST ํ˜•์‹, View ํ˜•์‹์˜ ์‘๋‹ต์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ตฌ์„ฑ๋œ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. Spring MVC๊ฐ€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœ์ž๋ฅผ ํŽธํ•˜๊ฒŒ ํ•ด์คฌ๋Š”์ง€ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ๊ณผ ๋™์ž‘ ๋ฐฉ์‹์„ ์ค‘์‹ฌ์œผ๋กœ ๋ฐœํ‘œ๋ฅผ ์ง„ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ Spring MVC๊ฐ€ ์žˆ๊ธฐ ์ „์—๋Š” HTML ์ฝ”๋“œ์— JAVA ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด ๋™์  ์›น ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” JSP์™€ ์„œ.. 2023. 2. 18.
[๋””์ž์ธ ํŒจํ„ด] ํผ์‚ฌ๋“œ ํŒจํ„ด ํผ์‚ฌ๋“œ ํŒจํ„ด (Facade Pattern) ํผ์‚ฌ๋“œ ํŒจํ„ด์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ, ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ๋˜๋Š” ๋‹ค๋ฅธ ํด๋ž˜์Šค๋“ค์˜ ๋ณต์žกํ•œ ์ง‘ํ•ฉ์— ๋Œ€ํ•œ ๋‹จ์ˆœํ™”๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ตฌ์กฐ์  ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. Facade๋Š” "๊ฑด๋ฌผ์˜ ์ •๋ฉด"์„ ์˜๋ฏธํ•˜๋Š” ๋‹จ์–ด๋กœ ์–ด๋–ค ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋‹ค๋ฅธ ์ปค๋‹ค๋ž€ ์ฝ”๋“œ ๋ถ€๋ถ„์— ๋Œ€ํ•˜์—ฌ ๊ฐ„๋žตํ™”๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ๋””์ž์ธ ํŒจํ„ด์„ ํ•œ๋‹ค. ํผ์‚ฌ๋“œ ๊ฐ์ฒด๋Š” ๋ณต์žกํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๋ฐ”๊นฅ์ชฝ์˜ ์ฝ”๋“œ๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์•ˆ์ชฝ ์ฝ”๋“œ์— ์˜์กดํ•˜๋Š” ์ผ์„ ๊ฐ์†Œ์‹œ์ผœ ์ฃผ๊ณ , ๋ณต์žกํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ฐ„๋‹จํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•ด์ค€๋‹ค. ์žฅ์  : ๋ณต์žกํ•œ ํ•˜์œ„ ์‹œ์Šคํ…œ์—์„œ ์ฝ”๋“œ๋ฅผ ๋ณ„๋„๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ํŠน์ • ๊ธฐ๋Šฅ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค. : ํ•˜๋‚˜์˜ ํผ์‚ฌ๋“œ๋ฅผ ๊ด€๋ จ ์—†๋Š” ๊ธฐ๋Šฅ๋“ค๋กœ ์˜ค์—ผ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์–ด ํ•ด๋‹น ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์‘์ง‘๋„๊ฐ€ ๋†’๋‹ค.. 2023. 2. 18.
[Spring] Map Struct ์‚ฌ์šฉํ•˜๊ธฐ Map Struct https://mapstruct.org/ ๐Ÿ’ก MapStruct๋Š” ๊ตฌ์„ฑ ์ ‘๊ทผ๋ฒ•์— ๋Œ€ํ•œ ๊ทœ์•ฝ์— ๊ทผ๊ฑฐํ•˜์—ฌ Java Bean ์ข…๋ฅ˜ ๊ฐ„์˜ ๋งคํ•‘ ๊ตฌํ˜„์„ ํฌ๊ฒŒ ๋‹จ์ˆœํ™”ํ•œ code generator ์ด๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด Dto ์™€ Entity์˜ ๋ณ€ํ™˜์„ ์‰ฝ๊ฒŒ ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด Map Struct๋ฅผ ์™œ ์‚ฌ์šฉํ• ๊นŒ? ์žฅ์  ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ์‹œ ๋งคํ•‘์ฝ”๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๊ธฐ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผ ์˜ค๋ฅ˜ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. (์ปดํŒŒ์ผ ์‹œ์ ์— ๋งคํ•‘ ์ •๋ณด๊ฐ€ ํƒ€์ž… ์„ธ์ดํ”„ํ•œ ์ง€๋ฅผ ๊ฒ€์ฆ) ๋ฆฌํ”Œ๋ ‰์…˜์ด ์•„๋‹Œ ์ง์ ‘ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜์—ฌ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค. ๋””๋ฒ„๊น…์ด ์‰ฝ๋‹ค. ๊ตฌํ˜„์ฒด๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑ ๋˜๊ธฐ๋•Œ๋ฌธ์— ์ƒ์„ฑ๋œ ๋งคํ•‘ ์ฝ”๋“œ๋ฅผ ๋ˆˆ์œผ๋กœ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. → ์‹ค์ œ ๊ฑฐ๋Œ€ํ•œ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๋‹ค๋ณด๋ฉด, ๋‹ค์–‘ํ•œ ๋„๋ฉ”์ธ ์˜์—ญ๋“ค์ด ์žˆ.. 2023. 1. 21.
[JPA] Entity Custom ID Generator (@GenericGenerator) Entity์˜ ๊ธฐ๋ณธํ‚ค (primary key)๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณดํ†ต Auto Increment ๋ฐฉ์‹์ด๋‚˜ UUID ๋ฐฉ์‹์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. Auto Increment : ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜๊ณ  ์žฌ์ •๋ ฌ์ด ํ•„์š”์—†๋‹ค(์ˆœ์„œ๊ฐ€ ๋ณด์žฅ๋œ๋‹ค.) : ํ•œ๋Œ€์˜ DB์—์„œ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šค์ผ€์ผ์•„์›ƒ์„ ํ†ตํ•œ ํ™•์žฅ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. (์ฒ˜๋ฆฌ ์„ฑ๋Šฅ ํ™•์ •์ด ์–ด๋ ค์›€) : insert ํ›„์—์•ผ PK ๊ฐ’์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. : ๋ณดํ†ต bigint๋กœ ๊ตฌํ˜„. : ์™ธ๋ถ€์— ๋…ธ์ถœ๋  ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค. (๋‹ค๋ฅธ id๋ฅผ ์œ ์ถ” ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—) UUID : ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ๊ณ ์œ ์„ฑ์ด ๋ณด์žฅ๋˜๋Š” ID๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํ‘œ์ค€ ๊ทœ์•ฝ : 128 bit ๋ฐ์ดํ„ฐ๋กœ ํ‘œํ˜„ (16 Byte) : ๋ฉ€ํ‹ฐ ํ™˜๊ฒฝ์—์„œ๋„ ๋ณ‘๋ ฌ๋กœ ๋™์ž‘ํ•˜์—ฌ ์œ ์ผํ•œ ID๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. : 128bit๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—.. 2023. 1. 18.
[TIL] 221227 - ๋ฐฑ์—”๋“œ์˜ ํ”„๋กœ์ ํŠธ ์ค€๋น„์‚ฌํ•ญ ๋ฐฑ์—”๋“œ๊ฐ€ ์ด์ •๋„๋Š” ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ• ๋•Œ(์ง„ํ–‰ํ•˜๊ธฐ์ „) ์ฐธ๊ณ ํ• ๋งŒํ•œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค์–ด๋ดค๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ๋ธ”๋กœ๊ทธ ์ฐธ๊ณ ํ•˜๊ธฐ! ๋ฐฑ์—”๋“œ๊ฐ€ ์ด์ •๋„๋Š” ํ•ด์ค˜์•ผํ•จ - planB ์‹œ๋ฆฌ์ฆˆ | ๋ฐฑ์—”๋“œ๊ฐ€ ์ด์ •๋„๋Š” ํ•ด์ค˜์•ผ ํ•จ - city7310.log ์ด๋ฒˆ์—” ์˜์กด์„ฑ ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ๊ฒฐ์ •ํ•˜์ž. pip, npm, yarn, gem, maven, gradle ๋“ฑ๊ณผ ๊ฐ™์€ ์˜์กด์„ฑ ๊ด€๋ฆฌ/๋นŒ๋“œ ๋„๊ตฌ๋ฅผ ์จ๋ณธ ์  ์—†๋‹ค๋ฉด ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์˜์กด์„ฑ ๊ด€๋ฆฌ ๋„๊ตฌ(Dependency Manager)๋ผ๋Š” ๊ธ€์„ ์ฝ์–ด velog.io 1. ํ”„๋กœ์ ํŠธ ๊ธฐํš์„œ(์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„) ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๊ธฐ ํ”„๋กœ์ ํŠธ๋ฅผ 5๋ฌธ์žฅ/3๋ฌธ์žฅ/1๋ฌธ์žฅ์œผ๋กœ ์ •์˜ํ•˜๊ธฐ ๋น„์Šทํ•œ ์„œ๋น„์Šค๊ฐ€ ๋ฌด์—‡์ด ์žˆ๊ณ  ์–ด๋–ค ์ฐจ๋ณ„์ ์ด, ๋ฌด์—‡์„ ๋ฐฐ์šธ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฐ€.. 2023. 1. 6.