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

๐ŸŒพBackEnd17

N+1 ๋ฌธ์ œ ๋‹ค์–‘ํ•œ ํ•ด๊ฒฐ๋ฒ• ์„œ๋ก  JPA๋ฅผ ํ•™์Šตํ•˜๋ฉด ๋ฌด์กฐ๊ฑด ๋“ฃ๋Š” ํ‚ค์›Œ๋“œ๋Š” N+1 ์ด๋‹ค. ๋ณดํ†ต ๋ธ”๋กœ๊ทธ์—์„œ ์†Œ๊ฐœํ•˜๋Š” ๋ฐฉ์‹์€ fetch join์„ ํ†ตํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค๊ณ  ์ด์•ผ๊ธฐํ•œ๋‹ค. ๋ฌผ๋ก  ํ‹€๋ฆฐ ๋ฐฉ์‹์€ ์•„๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๋ฉด์„œ N+1 ๋ฌธ์ œ๋ฅผ ๋งŽ์ด ๋งŒ๋‚˜๋ณด๋ฉด์„œ N+1์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ์ƒํ™ฉ์— ๋”ฐ๋ผ์„œ N+1 ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ์ ์ ˆํ•˜๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š”๊ฒŒ ์„ฑ๋Šฅ ์ €ํ•˜์˜ ๋ฌธ์ œ์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๊ธ€์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ด์ „์— ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋ฉด 1:1 ์—ฐ๊ด€๊ด€๊ณ„ : Fetch join Collection ์—ฐ๊ด€๊ด€๊ณ„ : default_batch_fetch_size N๊ฐœ์˜ ์ปฌ๋ ‰์…˜์„ fetch join์„ ํ•˜๋ฉด MultipleBagFetchException์ด ๋ฐœ์ƒํ•œ๋‹ค. ํŠน์ • ์ปฌ๋Ÿผ์„ ์กฐํšŒํ•  ๊ฒฝ์šฐ์— join์„ ํ•˜๊ณ  Projectio.. 2023. 12. 15.
[ Swagger ] Swagger UI๋ฅผ ํ†ตํ•ด API ๋ช…์„ธ์„œ Postman ๊ณต์œ  1. ๊ธ€์„ ์ž‘์„ฑํ•œ ์ด์œ  ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ API ์ŠคํŽ™์„ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต API ๋ฌธ์„œํ™”๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Rest DOCS์™€ Swagger๋ฅผ ํ†ตํ•ด์„œ API๋ฅผ ๋ฌธ์„œํ™”๋ฅผ ํ–ˆ๋‹ค. ์ €ํฌ๋Š” Swagger๋ฅผ ์„ ํƒ์„ ํ•˜์˜€๊ณ  ๋ฌธ์„œํ™”๋ฅผ ํ•˜์˜€์œผ๋‚˜ ๋ฌธ์„œํ™”๋ฅผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐฉ๋ฒ•์„ ์ฐพ๋˜ ๋„์ค‘์— ๋ฐฐํฌ๋ฅผ ํ•˜์ง€ ์•Š๊ณ  Postman์œผ๋กœ ๋ฌธ์„œ ๊ณต์œ ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜์—ฌ ๊ธ€์„ ์ž‘์„ฑ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. 2. Swagger UI ์ ์šฉํ•˜๊ธฐ ์ฒ˜์Œ์— Gradle์— ์˜์กด์„ฑ์„ ์ถ”๊ฐ€๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. implementation 'org.springdoc:springdoc-openapi-ui:1.6.9' ์ดํ›„ Config์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค. @Configuration public class OpenApiConfig { @Bean publi.. 2023. 4. 21.
Mockito๋Š” ์•Œ๊ณ  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑํ•˜์ž Mockito - mockito-core 5.2.0 javadoc Latest version of org.mockito:mockito-core https://javadoc.io/doc/org.mockito/mockito-core Current version 5.2.0 https://javadoc.io/doc/org.mockito/mockito-core/5.2.0 package-list path (used for javadoc generation -link option) https://javadoc.io/doc/org.m javadoc.io Mockito๋ž€? Mock์„ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ณ  mock์˜ ํ–‰๋™์„ ์ •ํ•˜๋Š” stubbing ๋กœ์ง์ด ์‹คํ–‰์ด ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ verify()๋ฅผ ์ด์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ํ”„๋ ˆ์ž„.. 2023. 3. 24.
์•”ํ˜ธํ™” Bcrypt์— ๋Œ€ํ•œ ์‹ฌ์ธต ๋ถ„์„ ๊ธ€์„ ์ž‘์„ฑํ•˜๋Š” ์ด์œ  ์•”ํ˜ธํ™”๋Š ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•„์ˆ˜๋กœ ๋“ค์–ด๊ฐ€๋Š” ๋ถ€๋ถ„์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํšŒ์›๊ฐ€์ž…์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•”ํ˜ธํ™”๋ฅผ ํ•„์ˆ˜๋กœ ์ง„ํ–‰์„ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋•Œ Bcrypt๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋‹ค. ๋ง‰์ƒ ์ด ๋ถ€๋ถ„์„ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ์„ค๋ช…์„ ํ•  ์ˆ˜ ์—†์–ด ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ๋‹ค. ์•”ํ˜ธํ™” & ๋ณตํ˜ธํ™” ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…์„ ํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ณ  ์˜ˆ๋ฅผ ๋“ค์–ด ์ดํ•ด๋ฅผ ํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์•”ํ˜ธํ™”๋ž‘ ๋ณตํ˜ธํ™”์— ๋Œ€ํ•ด ์งง๊ฒŒ ์„ค๋ช…์„ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ผ๋‹จ ์•”ํ˜ธํ™”๋ž€ ํ‰๋ฌธ์„ ์•”ํ˜ธ๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ์‹์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ 123์„ ์ž…๋ ฅํ•˜๋ฉด ์•”ํ˜ธํ™” ๊ณผ์ •์„ ๊ฑฐ์ฒ˜ ํ‰๋ฌธ์„ ์•”ํ˜ธ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๊ธฐ์กด์˜ ์ˆซ์ž์— 3์„ ๋”ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์•”ํ˜ธํ™”๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด 456์œผ๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์„ค์ •์ด ๋ฉ.. 2023. 3. 24.