fee-fi-fo-fum
article thumbnail
[Spring Security] ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์˜ ์ธ์ฆ/์ธ๊ฐ€ ์ฒ˜๋ฆฌ ํ๋ฆ„
BackEnd๐Ÿงต 2023. 11. 14. 21:11

๋“ค์–ด๊ฐ€๊ธฐ์ „์—. 2023.11.07 - [Spring๐Ÿ•ธ๏ธ] - [Spring Security] ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ๊ธฐ๋ณธ - 1 ์ด์ „์˜ Security ๊ธฐ๋ณธ์„ ํ†ตํ•ด์„œ ์–ด๋– ํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ณด์•ˆ์ž‘์—… ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์•˜๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด๋ถ€์—์„œ ์–ด๋–ค ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๋Š”์ง€๋Š” ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด์ง€ ๋ชปํ–ˆ๋‹ค. ๊ทธ๋Ÿผ ๋‚ด๋ถ€์˜ ํ๋ฆ„์„ ํ•œ๋ฒˆ ์•Œ์•„๋ณด์ž. ์ธ์ฆ vs ์ธ๊ฐ€ ์ธ์ฆ(Authentication) ์‚ฌ์ดํŠธ์— ์ ‘๊ทผํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋ˆ„๊ตฌ์ธ์ง€ ์‹œ์Šคํ…œ์ด ์•Œ์•„์•ผ ํ•œ๋‹ค. ์ต๋ช…์‚ฌ์šฉ์ž(anonymous user)๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์ง€๋งŒ, ํŠน์ • ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ๊ฐœ์ธํ™”๋œ ์‚ฌ์šฉ์„ฑ์„ ๋ณด์žฅ ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ ๋กœ๊ทธ์ธํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. ๋กœ๊ทธ์ธ์€ ๋ณดํ†ต username / password ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๋กœ๊ทธ์ธํ•˜๋Š” ๊ฒฝ์šฐ์™€ sns ์‚ฌ์ดํŠธ๋ฅผ ํ†ตํ•ด ์ธ์ฆ์„ ๋Œ€๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ..

article thumbnail
[RESTDocs] Spring RestDocs ์ ์šฉํ•˜๊ธฐ
BackEnd๐Ÿงต 2023. 11. 10. 22:17

๋“ค์–ด๊ฐ€๊ธฐ ์ „ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ API๋ฌธ์„œ๋ฅผ REST Docs๋ฅผ ์‚ฌ์šฉํ•ด ๋งŒ๋“ค๊ธฐ๋กœ ํ•˜์˜€๋‹ค. API ๋ช…์„ธ์„œ๋ฅผ REST Docs๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ž‘์„ฑํ•˜๋Š”๊ฑด ์ฒ˜์Œ์ด์—ฌ์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ์ „์— ์ด๋Ÿฐ์ €๋Ÿฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด ๋ณด์•˜๋‹ค. ๊ทธ๋Ÿผ ์ง€๊ธˆ๋ถ€ํ„ฐ ์•Œ์•„๋ณด์ž! REST Docs? Spring REST Docs๋Š” ์ •ํ™•ํ•˜๊ณ  ๊ฐ€๋…์„ฑ ์ข‹์€ REST ๋ฌธ์„œ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ์ ํŠธ์ด๋‹ค. Asciidoctor๋ฅผ ํ™œ์šฉํ•ด์„œ ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ adoc์œผ๋กœ ๋ณ€ํ™˜ํ›„ HTML๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ฃผ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋Œ€์•ˆ์œผ๋กœ Markdown์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. Adoc? adoc์€ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ฒฝ๋Ÿ‰ํ˜• ๋งˆํฌ์—… ์–ธ์–ด์ด๋‹ค. asciidoctor๋ฅผ ํ†ตํ•ด html์ด๋‚˜ pdf๋“ฑ์˜ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋จผ์ € Spring MVC์˜ test์—์„œ ์ œ๊ณต..

application.yml ์ž‘์—… ํ™˜๊ฒฝ ๋ถ„๋ฆฌ ๋ฐฉ๋ฒ•
BackEnd๐Ÿงต 2023. 11. 7. 19:11

ํ™˜๊ฒฝ๋ถ„๋ฆฌ์˜ ํ•„์š”์„ฑ ์‹ค์ œ ๋ฐฐํฌํ•  ์„œ๋น„์Šค๋ผ๋ฉด, ๊ฐœ๋ฐœ ์„œ๋ฒ„์™€ ์šด์˜ ์„œ๋ฒ„๋ฅผ ๋‚˜๋ˆ ์„œ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์ถ”๊ฐ€์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ๋„ ๋ถ„๋ฆฌํ•ด์ฃผ๋ฉด ์ข‹๊ณ , JPA๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ddl-auto: create ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ดˆ๊ธฐ ํ™˜๊ฒฝ์„ธํŒ…๋„ ๋ถ„๋ฆฌํ•ด๋‘๋ฉด ์šด์˜ ์„œ๋ฒ„์—์„œ create๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋Œ€์ฐธ์‚ฌ๋ฅผ ์˜ˆ๋ฐฉ๊ฐ€๋Šฅํ•˜๋‹ค. ํ™˜๊ฒฝ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• ํ™˜๊ฒฝ๋ถ„๋ฆฌ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๋‹ˆ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€์ด๋‹ค. 1. yml ํŒŒ์ผ ๋‚˜๋ˆ„๊ธฐ 2. ํ•˜๋‚˜์˜ yml ํŒŒ์ผ ์•ˆ์—์„œ ๋‚˜๋ˆ„๊ธฐ ๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ธํŒ… JPA์™€ ์Šคํ”„๋ง๋ถ€ํŠธ2.7.1๋กœ ๊ธฐ๋ณธ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑ Entity๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ User ๋ฅผ ๋งŒ๋“ค์–ด๋‘๊ณ , ์‹คํ–‰ํ•ด๋ณด๋‹ˆ ํฌํŠธ 8080์œผ๋กœ ์ž˜ ์‹คํ–‰๋˜๊ณ , ddl-auto: create ์„ค์ •์— ๋งž๊ฒŒ ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋œ๋‹ค. db์—๋„ ์ž˜ ์ƒ์„ฑ์ด ๋œ๋‹ค. ์ด์ œ ํ™˜๊ฒฝ์„ ๋ถ„๋ฆฌํ•ด๋ณด์ž. yml ํŒŒ์ผ ๋‚˜๋ˆ„๊ธฐ app..

article thumbnail
[Spring Security] ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ๊ธฐ๋ณธ - 1
BackEnd๐Ÿงต 2023. 11. 7. 18:34

๋“ค์–ด๊ฐ€๊ธฐ์ „์— ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฉค๋ฒ„ ๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ์ „์— ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์— ๋Œ€ํ•ด์„œ ์ž์„ธํ•˜๊ฒŒ ํ•™์Šตํ•˜๊ณ  ๊ฐ€๋ณด์ž! Spring Security๋ž€? ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์•˜์„์‹œ์— ๋ฌธ์ œ์ ์„ ๋จผ์ € ์•Œ์•„๋ณด์ž. 1. ๋กœ๊ทธ์ธ๊ธฐ๋Šฅ์— Authentication(์ธ์ฆ) ์ด ์—†์Œ. 2. API์— ๋Œ€ํ•œ ๊ถŒํ•œ ๋ถ€์—ฌ Authirization(์ธ๊ฐ€) ๊ธฐ๋Šฅ์ด ์—†์Œ. 3. ์›น ๋ณด์•ˆ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ๋Œ€๋น„(CSRF, ํด๋ฆญ์ œํ‚น ๋“ฑ)๊ฐ€ ์—†์Œ. ๊ทธ๋Ÿผ ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋ฅผ ์ ์šฉํ•˜๋ฉด ์–ด๋–ค์ ์ด ๋‹ฌ๋ผ์งˆ๊นŒ? ๋‹ค์–‘ํ•œ ์œ ํ˜•(ํผ ๋กœ๊ทธ์ธ ์ธ์ฆ, ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ, OAuth 2 ๊ธฐ๋ฐ˜ ์ธ์ฆ, LDAP ์ธ์ฆ)์˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ๊ธฐ๋Šฅ ์ ์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‚ฌ์šฉ์ž์˜ ์—ญํ• (Role)์— ๋”ฐ๋ฅธ ๊ถŒํ•œ ๋ ˆ๋ฒจ ์ ์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ ‘๊ทผ ์ œ์–ด ๋ฏผ๊ฐํ•œ ์ •๋ณด..

article thumbnail
H2 Database + Spring JPA ์—ฐ๋™
BackEnd๐Ÿงต 2023. 11. 4. 16:09

H2 DB H2 DB๋Š” ์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ์†Œ์Šค ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋‹ค. ๋ณดํ†ต ํ…Œ์ŠคํŠธ ๋‹จ๊ณ„๋‚˜ ์ž‘์€ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ์ด ๋˜๋ฉฐ, Gradle์ด๋‚˜ Maven์— ์˜์กด์„ฑ๋งŒ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋น ๋ฅด๊ฒŒ ์ด์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด๋Ÿฌํ•œ H2 DB ๋Š” 3๊ฐ€์ง€ ๋ชจ๋“œ๋กœ ์ง€์›๋œ๋‹ค. In-memory Embedded Mode Server Mode Inmemory mode WAS ๊ตฌ๋™์‹œ์— H2 DB์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์„œ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. WAS๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด, ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€์žˆ๋˜ ๋ชจ๋“ ๋ฐ์ดํ„ฐ๊ฐ€ ํœ˜๋ฐœ์„ฑ์œผ๋กœ ์‚ฌ๋ผ์ง„๋‹ค. ์ฆ‰ ์ด๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ํœ˜๋ฐœ์„ฑ์œผ๋กœ ํ…Œ์ŠคํŠธ๋“ฑ์— ์‚ฌ์šฉํ•˜๊ธฐ ์ ํ•ฉํ•˜๋‹ค. Embedded Mode WAS ๊ตฌ๋™์‹œ์— H2 DB๋ฅผ PC์˜ ๋””์Šคํฌ์— ์ €์žฅํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. In-memory์™€ ๋‹ฌ๋ฆฌ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š” ๋น„ํœ˜๋ฐœ์„ฑ๋ชจ๋“œ์ด๊ธฐ ..

article thumbnail
์›น์†Œ์ผ“ ์ด๋ž€?
BackEnd๐Ÿงต 2023. 10. 28. 18:22

์ด๋ฒˆ์— ์ง„ํ–‰ํ•˜๋Š” 2๊ฐ€์ง€ ํ”„๋กœ์ ํŠธ์—์„œ ์›น์†Œ์ผ“์„ ์ด์šฉํ•ด์„œ ์ฑ„ํŒ…๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค. ๊ทธ์ „์— ์›น์†Œ์ผ“์ด ๋ญ”์ง€ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž! ์›น์†Œ์ผ“(Web Socket)? ์›น์†Œ์ผ“ ํ”„๋กœํ† ์ฝœ์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ , ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์ฃผ๋ชฉํ•ด์•ผํ• ์ ์€ ์‹ค์‹œ๊ฐ„์ด๋ผ๋Š” ์ ์ด๋‹ค. HTTP ํ†ต์‹ ์˜ ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ์—๋งŒ ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•˜๋Š” ๋‹จ๋ฐฉํ–ฅ ํ†ต์‹ ์ด์ง€๋งŒ, ์›น์†Œ์ผ“์€ ์–‘๋ฐฉํ–ฅ, ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์„ ํ•œ๋‹ค. ๋˜ํ•œ ์›น์†Œ์ผ“์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์—์„œ ๋™์ž‘ํ•˜๋ฉฐ HTTP์™€ ๋‹ค๋ฅด๊ฒŒ ์ƒํƒœ(Stateful) ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์—ฐ๊ฒฐ์„ ๋งบ๊ธฐ์œ„ํ•ด ํ•œ๋ฒˆ์˜ ํ•ธ๋“œ์…ฐ์ดํฌ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ณ , ์ดํ›„์— ์ง€์†์ ์œผ๋กœ ์—ฐ๊ฒฐ์„ ๋ณด์žฅํ•œ๋‹ค. ์ด๋Š” ๋งค๋ฒˆ ๋งค์„ธ์ง€ ์ „์†ก์— ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์„ ๋งบ์„ ํ•„์š”๊ฐ€ ์—†์–ด ํšจ์œจ์ ์ด๋‹ค. ์ฆ‰, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ํ•œ๋ฒˆ์— ์—ฐ๊ฒฐ์„ ..

postgreSQL + SpringBoot
BackEnd๐Ÿงต 2023. 10. 7. 22:18

JPA์™€ postgreSQL ์—ฐ๋™ ๋ฐฉ๋ฒ• ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ JPA์™€ postGreSQL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•œ๋‹ค. implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.postgresql:postgresql' application.yml ์„ค์ • spring: datasource: url: jdbc:postgresql://localhost:5432/ username: password: driver-class-name: org.postgresql.Driver jpa: show-sql: true database: postgresql hibernate: ddl-auto: update ์ด๋ ‡๊ฒŒ ์„ค์ •์„ ๋งˆ์น˜๋ฉด ์‚ฌ์šฉ์ด ..

๋นŒ๋” ํŒจํ„ด(builder pattern)
BackEnd๐Ÿงต 2023. 10. 6. 23:16

Builder Pattern ์ž๋ฐ”์—์„œ ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜์—ฌ ์ƒ์„ฑํ• ๋•Œ ๋ณดํ†ต ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ์ฃผ์ž…ํ•˜์—ฌ ์ƒ์„ฑํ•œ๋‹ค. Person hae = new Person("ํ•ด์˜", 27, "๊ฐœ๋ฐœ์ž"); ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹จ์ ์ด ์žˆ๋‹ค. 1. ๊ฐ’์˜ ์„ค์ • ์ˆœ์„œ๊ฐ€ ์—†๋‹ค. ์ƒ์„ฑ์ž์˜ ๊ฒฝ์šฐ์—๋Š” ์ •ํ•ด์ง„ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ’์„ ๋„ฃ์–ด์ค˜์•ผํ•œ๋‹ค. ์ˆœ์„œ๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ๋„ฃ๊ฒŒ๋˜๋ฉด ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ๋‹ค๋ฅธ ๊ฐ’์ด ํ• ๋‹น๋˜๋Š” ๋‚ญํŒจ๊ฐ€ ์ƒ๊ธด๋‹ค. ์ด์—๋ฐ˜ํ•ด ๋นŒ๋”ํŒจํ„ด์—์„œ๋Š” ํ•„๋“œ ์ด๋ฆ„์œผ๋กœ ๊ฐ’์„ ์„ค์ •ํ•˜์—ฌ, ์ˆœ์„œ์— ์ข…์†๋˜์ง€์•Š๋Š”๋‹ค. ์–ด๋–ค ํ•„๋“œ๋ฅผ ๋จผ์ € ์„ค์ •ํ•ด์•ผํ•˜๋Š”์ง€ ์ƒ๊ฐํ•  ํ•„์š”์—†์ด ํŽธํ•˜๊ฒŒ ๋‚˜์—ดํ•˜๋ฉด๋œ๋‹ค. 2. ์ƒ์„ฑ์ž์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋งŽ์œผ๋ฉด ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง„๋‹ค. ์˜ˆ์‹œ์—์„œ ์ฒ˜๋Ÿผ 3๊ฐ€์ง€์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋งŒ ๋ฐ›๋Š” ๊ฒฝ์šฐ์—๋Š” ํฌ๊ฒŒ ๊ฐ€๋…์„ฑ์— ๋ฌธ์ œ๊ฐ€ ์—†์„๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ 10๊ฐ€์ง€ ์ •๋ณด๋ฅผ..

article thumbnail
Spring ํŽ˜์ด์ง€๋„ค์ด์…˜ ์ฒ˜๋ฆฌ
BackEnd๐Ÿงต 2023. 9. 9. 20:38

ํŽ˜์ด์ง€๋„ค์ด์…˜? ํŽ˜์ด์ง•์€ ๊ฒŒ์‹œ๊ธ€, ๋Œ“๊ธ€ ๋“ฑ์„ ํ‘œ์ถœํ•  ์–‘์ด ๋งŽ์•„์งˆ๋•Œ, ์•„์ฃผ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค. ํŽ˜์ด์ง•์„ ํ†ตํ•ด์„œ ๋งŽ์€ ์ •๋ณด ์ฆ‰, ์ˆ˜๋ฐฑ ์ˆ˜์ฒœ๊ฐœ์˜ ๊ฒŒ์‹œ๊ธ€๋“ฑ์˜ ์ •๋ณด๋ฅผ ํŽ˜์ด์ง€๋กœ ๋‚˜๋ˆ ์„œ ํšจ๊ณผ์ ์œผ๋กœ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ฒŒ ํ•œ๋‹ค. ์ด๋Ÿฐ ํŽ˜์ด์ง•์„ ์œ„ํ•ด์„œ๋Š” page๊ด€๋ จ ์ฟผ๋ฆฌ๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ, Spring Data JPA์—์„œ ํšจ๊ณผ์ ์ธ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค. JpaRepository ์˜ ๋ถ€๋ชจ์ธํ„ฐํŽ˜์ด์Šค์ธ PagingAndSortingRepository์—์„œ ํŽ˜์ด์ง•๊ณผ Sorting ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. findAll() ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜ ํƒ€์ž…์„ ์‚ดํŽด๋ณด๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. Pageable : ํŽ˜์ด์ง•์„ ์ œ๊ณตํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค Page : ํŽ˜์ด์ง•์˜ findAll()์˜ ๊ธฐ๋ณธ์ ์ธ ๋ฐ˜ํ™˜ ๋ฉ”์„œ๋“œ๋กœ ์—ฌ๋Ÿฌ ๋ฐ˜ํ™˜ํƒ€์ž…์ค‘..

article thumbnail
TIL - MVC ํŒจํ„ด
BackEnd๐Ÿงต 2023. 7. 21. 17:39

MVC ํŒจํ„ด MVC ํŒจํ„ด์˜ ๋“ฑ์žฅ ์ด์œ  ํ•˜๋‚˜์˜ ์„œ๋ธ”๋ฆฟ or JSP๋งŒ ์‚ฌ์šฉํ•ด์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ๋ทฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋„ˆ๋ฌด ๋งŽ์€ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๊ฒŒ ๋˜์–ด ์œ ์ง€๋ณด์ˆ˜์‹œ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. UI์˜ ์ˆ˜์ •๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง์„ ์ˆ˜์ •ํ•˜๋Š” ์ผ์€ ์„œ๋กœ์—๊ฒŒ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์•„์•ผํ•˜๋Š”๋ฐ ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋กœ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์–ด๋ ค์›€์ด ์žˆ๋‹ค. MVC ํŒจํ„ด์ด๋ž€? MVCํŒจํ„ด์€ Model, View, Controller ๋ผ๋Š” ์˜์—ญ์œผ๋กœ ์„œ๋กœ์˜ ์—ญํ• ์„ ๋‚˜๋ˆˆ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์›น์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ด๋Ÿฌํ•œ ํŒจํ„ด์ด ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ์œ„์˜ ๊ทธ๋ฆผ์ƒ์œผ๋กœ ์ปจํŠธ๋กค๋Ÿฌ์— ๋น„์ฆˆ๋‹ˆ์Šค์˜ ๋กœ์ง์„ ๋‹ด๋Š”๊ฒƒ์œผ๋กœ ํ‘œํ˜„๋˜์–ด ์žˆ์ง€๋งŒ, ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง์€ Service ๊ณ„์ธต์„ ๋งŒ๋“ค์–ด ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. Controller : HTTP ์š”์ฒญ์„ ๋ฐ›์•„ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฒ€..

profile on loading

Loading...