https://github.com/GSM-Backend-Dev-Class/Sector-2-3
๐ก์์ฝ
- JPA N+1 ๋ฌธ์ ์ ๋ํ์ฌ ์์๋ด
๋๋ค
- 3๊ฐ์ง ํด๊ฒฐ๋ฐฉ๋ฒ์ ๋ํ์ฌ ์กฐ์ฌํฉ๋๋ค
- ํ์ด์ง๊ณผ ๊ด๋ จํ JPA์ ๋ฌธ์ ์ ๋ํ์ฌ ๊ณต๋ถํฉ๋๋ค
- QueryDSL์ ์์๋ด
๋๋ค
โ
์๊ตฌ์ฌํญ
- ๊ฐ์ธ ๋ ํฌ์งํฐ๋ฆฌ๊ฐ ์๋ ๋ฏธ๋ฆฌ ์์ฑ๋ ๋ ํฌ์งํฐ๋ฆฌ๋ฅผ ์ด์ฉํด์ฃผ์ธ์
- ๋ ํฌ์งํฐ๋ฆฌ์ ๋ฐ๋ก Commit ํ Push ํ๋๊ฒ ์๋๋ผ ์์ ์ ์ด๋ฆ์ผ๋ก ๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ํ๋ ์์ฑ ํ ๊ทธ ์์ ๊ณผ์ ๋ฒํธ(1-1,2-1,3-1โฆ)๋ฅผ ์ด๋ฆ์ผ๋ก ๊ฐ์ง๋ ๋๋ ํฐ๋ฆฌ ๋ค์ ์์ฑํ์ฌ ์ ๋ฆฌํ๋๋ก ํด์ฃผ์ธ์
- JPA N+1 ๋ฌธ์ ์ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ๋ค(Batch Size ์กฐ์ ,Entity Graph,JPQL Fetch Join)์ ์กฐ์ฌํ์ฌ์ฃผ์ธ์
- Fetch Join๊ณผ ํ์ด์ง ์ฒ๋ฆฌ๋ฅผ ๋์์ ์ฌ์ฉํ์์ ๋์ ๋ฌธ์ ๋ฅผ ์กฐ์ฌํ์ฌ์ฃผ์ธ์
- QueryDSL์ ๋ํ์ฌ ์กฐ์ฌํ๊ณ ๊ฐ๋จํ ์์ ์ฝ๋๋ฅผ ํฌํจํ์ฌ ์ ๋ฆฌํ์ฌ์ฃผ์ธ์