[๋‚ด์ผ๋ฐฐ์›€์บ ํ”„Spring-40์ผ์ฐจ] ์˜ค๋ฒ„ํ—ค๋“œ๋ž€?
ยท
๋ฐฑ์—”๋“œ ๋ถ€ํŠธ์บ ํ”„/TIL
1. ์˜ค๋ฒ„ํ—ค๋“œ๋ž€ ?๊ณ„์†ํ•ด์„œ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ , ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋‚˜๊ฐ€๋Š” ๊ณผ์ •์—์„œ ์ž์ฃผ ๋“ค๋ฆฌ๋Š” ๋ง์ด ์žˆ๋‹ค.๋ฐ”๋กœ " ์˜ค๋ฒ„ํ—ค๋“œ Overhead " ์ด๋‹ค.๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด, ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ถ€๊ฐ€์ ์ธ ์ž์› ์†Œ๋ชจ๋ฅผ ๋œปํ•œ๋‹ค.์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘์ ์ธ ์ผํ•˜๋Š” ๊ฒƒ ์™ธ์— ์ถ”๊ฐ€๋กœ ๋“œ๋Š” ์‹œ๊ฐ„, ๋ฉ”๋ชจ๋ฆฌ, ๋„คํŠธ์›Œํฌ, ์—ฐ์ƒ ๋“ฑ์˜ ๋น„์šฉ์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.์˜ค๋ฒ„ํ—ค๋“œ๋Š” ์‹œ์Šคํ…œ ์„ฑ๋Šฅ, ํ™•์žฅ์„ฑ, ์‘๋‹ต ์†๋„ ๋“ฑ์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋งค์šฐ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ์˜ค๋ฒ„ํ—ค๋“œ ์ข…๋ฅ˜๋ฐฑ์—”๋“œ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์š” ์˜ค๋ฒ„ํ—ค๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.1. ๋„คํŠธ์›Œํฌ ์˜ค๋ฒ„ํ—ค๋“œAPI ์š”์ฒญ/์‘๋‹ต, REST ํ†ต์‹ 2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ค๋ฒ„ํ—ค๋“œ์ฟผ๋ฆฌ ๋น„ํšจ์œจ, ์ธ๋ฑ์Šค ๋ฏธ์‚ฌ์šฉ3. ์„œ๋ฒ„ ์ฒ˜๋ฆฌ ์˜ค๋ฒ„ํ—ค๋“œ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์‹คํŒจ, ๊ณผ๋„ํ•œ ๋กœ์ง4. ์Šค๋ ˆ๋“œ/๋™์‹œ์„ฑ ์˜ค๋ฒ„ํ—ค๋“œ..
[๋‚ด์ผ๋ฐฐ์›€์บ ํ”„Spring-39์ผ์ฐจ] ๊ฐ์ฒด์ง€ํ–ฅ
ยท
๋ฐฑ์—”๋“œ ๋ถ€ํŠธ์บ ํ”„/TIL
โœ… ์บก์Šํ™”์บก์Šํ™” " Client ๊ฐ์ฒด๊ฐ€ ๊ตฌ์ฒด์ ์ธ ๊ฒƒ์„ ์˜์กดํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ˆจ๊ธฐ๊ณ  ์ถ”์ƒ์ ์ธ ๊ฒƒ๋งŒ ์˜์กดํ•˜๋„๋ก ํ•˜๋Š” ๋ชจ๋“  ๊ณผ์ • "Client ๊ฐ์ฒด๋ž€? ํ˜‘๋ ฅ์—์„œ ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฐ์ฒด์ด๋‹ค.1 ) ๊ตฌ์ฒด์ ์ธ ๊ฒƒ : ๋ณ€๊ฒฝ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ๊ฒƒ | How ๊ฐ€ ๋Œ€ํ‘œ์ ์ธ ๊ตฌ์ฒด์ ์ธ ๊ฒƒ (์ธ์Šคํ„ด์Šค) > ๋‚ฎ์€ ๊ฒƒ-> ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๊ฒƒ์„ ๊ฒƒ์„ ์˜์กดํ–ˆ์„ ๋•Œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ > ๊ตฌ์ฒด์ ์ธ๊ฒƒ์— ์˜์กดํ•˜๋ฉด ํ•  ์ˆ˜๋ก ์šฐ๋ฆฌ๋Š” ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’๋‹ค๊ณ  ํ•จ. -> ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์€ ๊ฒƒ์€ ๋ณ€๊ฒฝ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค๋Š” ๊ฒƒ์ด๋ฉฐ ์˜์กด์„ฑ์ด ๋†’์•„์ง„๋‹ค๋Š” ๊ฒƒ. ๊ทธ๋ž˜์„œ ๋ณ€๊ฒฝ์˜ ์ „ํŒŒ๊ฐ€ ํด ๊ฒƒ์ž„.2) ์ถ”์ƒ์ ์ธ ๊ฒƒ : ๋ณ€๊ฒฝ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์€ ๊ฒƒ | ๋ฉ”์„œ๋“œ ์ด๋ฆ„, ํŒŒ๋ผ๋ฏธํ„ฐ, ๋ฐ˜ํ™˜๊ฐ’๋“ฑ What์— ๋Œ€ํ•œ ๊ฒƒ์ด ๋Œ€ํ‘œ์ ์ธ ์ถ”์ƒ์ ์ธ ๊ฒƒ > ๋†’์€ ๊ฒƒ โœ… ์บก์Šํ™” ํ•˜๋Š” ๋ฐฉ๋ฒ•1. ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ๊ณผ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒƒ์„ ..
[๋‚ด์ผ๋ฐฐ์›€์บ ํ”„Spring-7์ฃผ์ฐจ] KPT ํšŒ๊ณ 
ยท
๋ฐฑ์—”๋“œ ๋ถ€ํŠธ์บ ํ”„/๊ธฐํƒ€
โœ… Keep์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ์ง„ํ–‰ํ•œ ๊ณผ์ • ์ค‘ ๋‹ค์Œ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์œ ์ง€ํ–ˆ์œผ๋ฉด ํ•˜๋Š” ๋ถ€๋ถ„1. ์ผ๊ด€๋œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ2. Pull request ์š”์ฒญํ•  ๊ฒฝ์šฐ PULL ํ•œ ํ›„ PUSH3. ๋ฌธ์„œํ™” ์Šต๊ด€4. ํ•จ์ˆ˜ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜ ์ง€ํ‚ค๊ธฐ5. ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์ปจ๋ฒค์…˜ ์ง€ํ‚ค๊ธฐโœ… Problem1) ์ข‹์•„์š”์˜ ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ฌธ์ œ ์›์ธ๋™์‹œ์— ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ™์€ ๋Œ“๊ธ€์— ์ข‹์•„์š”๋ฅผ ๋ˆ„๋ฅด๊ฑฐ๋‚˜ ์ทจ์†Œํ•  ๊ฒฝ์šฐ,Race Condition(๋™์‹œ์„ฑ ๋ฌธ์ œ)๋กœ ์ธํ•ด DB์˜ likeCount ๊ฐ’์ด ์‹ค์ œ ์ข‹์•„์š” ์ˆ˜์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๊ฐ€๋Šฅ์„ฑ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.๋ฌธ์ œ ๋ถ„์„likeCount๋Š” ๋‹จ์ˆœ ์ˆซ์ž ํ•„๋“œ๋กœ, ๋™์‹œ ์š”์ฒญ ์‹œ DB์— ์ €์žฅ๋˜๋Š” ๊ฐ’์ด ์ถฉ๋Œ ์—†์ด ๋ฎ์–ด์“ฐ์—ฌ์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.ํŠธ๋žœ์žญ์…˜์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์กฐํšŒ → ์ฆ๊ฐ€ → ์ €์žฅ ์‚ฌ์ด์— ๋‹ค๋ฅธ ์š”์ฒญ์ด ๊ฐœ์ž…ํ•˜๋ฉด ๊ฐ’์ด ๊ผฌ์ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.๋ฌธ์ œ..
[๋‚ด์ผ๋ฐฐ์›€์บ ํ”„Spring-38์ผ์ฐจ] @Builder ์–ด๋…ธํ…Œ์ด์…˜
ยท
๋ฐฑ์—”๋“œ ๋ถ€ํŠธ์บ ํ”„/TIL
@Builder๋Š” Lombok์—์„œ ์ œ๊ณตํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ, ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ ์ƒ์„ฑ์ž ๋˜๋Š” ๋ฉ”์„œ๋“œ์— ์ง์ ‘ ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ๋„ฃ์ง€ ์•Š๊ณ , ๊ฐ€๋…์„ฑ ์ข‹๊ณ  ์œ ์—ฐํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ํŠนํžˆ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ๋งŽ์€ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค.โœ… ๊ธฐ๋ณธ ๊ฐœ๋…@Builderpublic class User { private String name; private int age; private String email;}์œ„์™€ ๊ฐ™์ด @Builder๋ฅผ ๋ถ™์ด๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹คUser user = User.builder() .name("AA") .age(27) .email("aa@example.co..
[๋‚ด์ผ๋ฐฐ์›€์บ ํ”„Spring-37์ผ์ฐจ] JWT
ยท
๋ฐฑ์—”๋“œ ๋ถ€ํŠธ์บ ํ”„/TIL
JWT (JSON Web Token)โœ… JWT๋ž€?JWT๋Š” ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํ† ํฐ ํ˜•ํƒœ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ธ์ฆ ์ˆ˜๋‹จJWT๋Š” ์„œ๋ฒ„๊ฐ€ ์„ธ์…˜ ์—†์ด๋„ ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค€๋‹ค. โœ… JWT ๊ตฌ์กฐJWT๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด 3๊ฐ€์ง€ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋‰œ๋‹ค.xxxxx.yyyyy.zzzzz๋ถ€๋ถ„์ด๋ฆ„์„ค๋ช…xxxxxHeader์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ ํƒ€์ž… ์ •๋ณด (ex. HS256, JWT)yyyyyPayload์‚ฌ์šฉ์ž ์ •๋ณด: userId, ์ด๋ฆ„, ๊ถŒํ•œ ๋“ฑzzzzzSignature์„œ๋ช…. ์œ„ ๋‚ด์šฉ์ด ๋ณ€์กฐ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ๊ฒ€์ฆ1. Header{ "alg": "HS256", "typ": "JWT"}- ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„œ๋ช…ํ–ˆ๋Š”์ง€- ํƒ€์ž…์Œ JWT ์„ ๋ช…์‹œ2. Payload{ "sub": "1234567890", "name..
[๋‚ด์ผ๋ฐฐ์›€์บ ํ”„Spring-37์ผ์ฐจ] ํด๋ฆฐ์•„ํ‚คํ…์ฒ˜
ยท
๋ฐฑ์—”๋“œ ๋ถ€ํŠธ์บ ํ”„/TIL
โœ… ๊นจ๋—ํ•œ ์ฝ”๋“œ1. ์žฌ ๋””์ž์ธ์˜ ๋ฌดํ•œ ๋ฃจํ”„๊ธฐ์กด ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ์ƒ์‚ฐ์„ฑ์ด ๋‚ฎ์•„์„œ → "์ด๊ฑด ์•ˆ ๋˜๊ฒ ๋‹ค, ์ƒˆ๋กœ ์งœ์ž!" ํ•ด์„œ ์ƒˆ๋กœ์šด ํŒ€(tiger team)์ด ์ƒ๊น€๊ทธ ํŒ€์ด ๊ธฐ์กด ๊ฑธ ๋”ฐ๋ผ๊ฐ€๋ฉด์„œ ์ƒˆ ๊ธฐ๋Šฅ๋„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฑธ ๋ชฉํ‘œ๋กœ ๊ฐœ๋ฐœํ•จ๊ทผ๋ฐ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ๊ทธ Tiger ํŒ€์˜ ์›๋ž˜ ๋ฉค๋ฒ„๋“ค์ด ๋น ์ง€๊ณ  ์ƒˆ ์‚ฌ๋žŒ๋“ค๋กœ ๋ฐ”๋€œ์ƒˆ ๋ฉค๋ฒ„๋“ค์ด ๊ธฐ์กด tiger team ์ฝ”๋“œ(์ด์ œ ์ƒˆ ์ฝ”๋“œ์ฃ )๋ฅผ ๋ณด๋ฉด์„œ → "์ด๊ฑฐ ๋ณ„๋กœ๋„ค… ๋‹ค์‹œ ๋งŒ๋“œ๋Š” ๊ฒŒ ๋‚ซ๊ฒ ๋Š”๋ฐ์š”?"์ด๊ฒŒ ๊ณ„์† ๋ฐ˜๋ณต๋˜๋Š” ๋ฌดํ•œ๋ฃจํ”„๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋œ๋‹ค. ์‹ค์ œ๋กœ ๋งŽ์€ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฐ˜๋ณต๋œ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฆฌํŒฉํ† ๋ง์ด๋‚˜ ์ ์ง„์ ์ธ ๊ฐœ์„ ์ด์˜คํžˆ๋ ค ํ˜„์‹ค์ ์ธ ์ ‘๊ทผ์ผ ๋•Œ๊ฐ€ ๋งŽ๋‹ค.2. ํƒœ๊ณ ์˜ ๋‚œ์ œ๋”๋Ÿฌ์šด ์ฝ”๋“œ๋Š” ์ƒ์‚ฐ์„ฑ์„ ์ €ํ•˜์‹œํ‚จ๋‹ค. ๊ทธ์™€ ๋™์‹œ์— ๊ฐœ๋ฐœ์ž๋“ค์€ ๊ธฐํ•œ์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ๋”๋Ÿฌ์šด ์ฝ”๋“œ๋ฅผ ์ง ๋‹ค. ํ•˜์ง€๋งŒ, ๋”๋Ÿฌ์šด ์ฝ”๋“œ..
[๋‚ด์ผ๋ฐฐ์›€์บ ํ”„Spring-36์ผ์ฐจ] Race Condition (๊ฒฝ์Ÿ ์กฐ๊ฑด) ์ •๋ฆฌ
ยท
๋ฐฑ์—”๋“œ ๋ถ€ํŠธ์บ ํ”„/TIL
โœ… Race Condition์ด๋ž€?์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋ ค ํ•  ๋•Œ,์ฒ˜๋ฆฌ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฎ์–ด์”Œ์›Œ์ ธ ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ์ƒ๊ธฐ๋Š” ํ˜„์ƒ.์˜ˆ์‹œ:ํ˜„์žฌ ์ข‹์•„์š” ์ˆ˜: 5์œ ์ € A์™€ B๊ฐ€ ๋™์‹œ์— ํด๋ฆญ → ๋‘˜ ๋‹ค 5 ์ฝ๊ณ  6 ์ €์žฅ๊ฒฐ๊ณผ: ์‹ค์ œ๋ก  2๋ฒˆ ๋ˆŒ๋ €์ง€๋งŒ +1๋งŒ ๋ฐ˜์˜๋จโœ… ์™œ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€?@Transactionalpublic void likePost(Long postId) { Post post = postRepository.findById(postId).orElseThrow(); post.setLikeCount(post.getLikeCount() + 1);}post.getLikeCount()๋กœ ์ฝ์€ ์‹œ์ ์ด ๊ฐ™์œผ๋ฉด,๋™์ผํ•œ ๊ฐ’์œผ๋กœ ๊ณ„์‚ฐ → ๋งˆ์ง€๋ง‰ ์ €์žฅ ๊ฐ’๋งŒ ๋ฐ˜์˜๋จโœ… ๋™์‹œ์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฌ..
[๋‚ด์ผ๋ฐฐ์›€์บ ํ”„Spring-35์ผ์ฐจ] JWT(JSON Web Token) ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฐฉ์‹ ์ •๋ฆฌ
ยท
๋ฐฑ์—”๋“œ ๋ถ€ํŠธ์บ ํ”„/TIL
โœ… JWT๋ž€?JWT (JSON Web Token)๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.๋กœ๊ทธ์ธ ์„ฑ๊ณต ์‹œ, ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์•”ํ˜ธํ™”๋œ ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” ์ดํ›„ ์š”์ฒญ๋งˆ๋‹ค ์ด ํ† ํฐ์„ ์ „์†กํ•˜์—ฌ ์ธ์ฆ์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.โœ… JWT ๊ตฌ์กฐJWT๋Š” ์ด 3๊ฐœ์˜ ํŒŒํŠธ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.xxxxx.yyyyy.zzzzzHeader.Payload.Signature1. Header{ "alg": "HS256", "typ": "JWT"}ํ† ํฐ์˜ ํƒ€์ž…๊ณผ ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •๋ณด2. Payload{ "sub": "userId", "name": "ใ…‡ใ…‡ใ…‡", "role": "USER", "exp": 1712345678}์‚ฌ์šฉ์ž ์ •๋ณด(Claims)๋ฅผ ๋‹ด๋Š” ๋ถ€๋ถ„exp: ํ† ํฐ ๋งŒ๋ฃŒ ์‹œ๊ฐ„ (Unix ..
[๋‚ด์ผ๋ฐฐ์›€์บ ํ”„Spring-34์ผ์ฐจ] JPA ์˜ Paging / Pageable / DTO ๋งคํ•‘ ํŽ˜์ด์ง•
ยท
๋ฐฑ์—”๋“œ ๋ถ€ํŠธ์บ ํ”„/TIL
JPA ์—์„œ์˜ Paging ์€ ๊ณต์‹์ฒ˜๋Ÿผ ์ƒ๊ฐํ•˜๋ฉด ํŽธํ•˜๋‹ค๊ณ  ํ–ˆ๋‹ค.์ด๋ ‡๊ฒŒ ๋”ฑ 3๊ฐ€์ง€๋งŒ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.1. ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ž‘ ํŽ˜์ด์ง€ ์‚ฌ์ด์ฆˆ๋ฅผ ์ž…๋ ฅ ๋ฐ›๊ณ 2. Service ์—์„œ Pageable ๊ฐ์ฒด์— ๋งŒ๋“ค๊ณ .3. Repository ์— Pageable ๊ฐœ๊ฒฃ๋ฅผ ๋„˜๊ฒจ์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด Paging ์€ ๋์ด๋‹ค !ํŽ˜์ด์ง• ์‹ค์Šต์„ ํ•ด๋ณด๋ฉด์„œ ๋” ์•Œ์•„๋ณด์ž.Entity ์™€ Repository ๋งŒ ๋ฏธ๋ฆฌ ์„ธํŒ…ํ•ด๋‘๋ฉด ๋  ๊ฑฐ ๊ฐ™๋‹ค.1. Repositorypublic interface BoardRepository extends JpaRepository {}2. Entity@Getter@Entity@Table(name = "board")@NoArgsConstructorpublic class Board extends BaseEntity ..
[Programmers] ์ตœ์†Œ์ง์‚ฌ๊ฐํ˜• - 86491
ยท
์ฝ”๋”ฉ ๊ณต๋ถ€/Programmers-Java
[level 1] ์ตœ์†Œ์ง์‚ฌ๊ฐํ˜• - 86491๋ฌธ์ œ ๋งํฌ์„ฑ๋Šฅ ์š”์•ฝ๋ฉ”๋ชจ๋ฆฌ: 97.9 MB, ์‹œ๊ฐ„: 2.21 ms๊ตฌ๋ถ„์ฝ”๋”ฉํ…Œ์ŠคํŠธโ€…์—ฐ์Šต > ์™„์ „ํƒ์ƒ‰์ฑ„์ ๊ฒฐ๊ณผ์ •ํ™•์„ฑ: 100.0ํ•ฉ๊ณ„: 100.0 / 100.0์ œ์ถœ ์ผ์ž2025๋…„ 04์›” 04์ผ 15:48:18๋ฌธ์ œ ์„ค๋ช…๋ช…ํ•จ ์ง€๊ฐ‘์„ ๋งŒ๋“œ๋Š” ํšŒ์‚ฌ์—์„œ ์ง€๊ฐ‘์˜ ํฌ๊ธฐ๋ฅผ ์ •ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋ชจ์–‘๊ณผ ํฌ๊ธฐ์˜ ๋ช…ํ•จ๋“ค์„ ๋ชจ๋‘ ์ˆ˜๋‚ฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉด์„œ, ์ž‘์•„์„œ ๋“ค๊ณ  ๋‹ค๋‹ˆ๊ธฐ ํŽธํ•œ ์ง€๊ฐ‘์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์š”๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ง€๊ฐ‘์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋””์ž์ธํŒ€์€ ๋ชจ๋“  ๋ช…ํ•จ์˜ ๊ฐ€๋กœ ๊ธธ์ด์™€ ์„ธ๋กœ ๊ธธ์ด๋ฅผ ์กฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.์•„๋ž˜ ํ‘œ๋Š” 4๊ฐ€์ง€ ๋ช…ํ•จ์˜ ๊ฐ€๋กœ ๊ธธ์ด์™€ ์„ธ๋กœ ๊ธธ์ด๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.๋ช…ํ•จ ๋ฒˆํ˜ธ๊ฐ€๋กœ ๊ธธ์ด์„ธ๋กœ ๊ธธ์ด16050230703603048040๊ฐ€์žฅ ๊ธด ๊ฐ€๋กœ ๊ธธ์ด์™€ ์„ธ๋กœ ๊ธธ์ด๊ฐ€ ๊ฐ๊ฐ 80, 70์ด๊ธฐ ๋•Œ๋ฌธ์— 80(..