๊ฐ๋
ORM์์ ์ฑ๋ฅ ์ด์๊ฐ ๋ฐ์ํ๋ฉด ๊ฐ์ฅ ํํ ์์ธ์ผ๋ก N+1 Problem์ด ์ธ๊ธ๋๋ค.
N+1 Problem์ ์ฟผ๋ฆฌ 1๋ฒ์ผ๋ก N๊ฑด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์๋๋ฐ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ป๊ธฐ ์ํด ์ด N๊ฑด์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ ์ ๋งํผ ๋ฐ๋ณตํด์ 2์ฐจ์ ์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์ํํ๋ ๋ฌธ์ ์ ๋๋ค.
- ORM : (Object Relational Mapping) ๊ฐ์ฒด-๊ด๊ณ ๋งคํ
- ๊ฐ์ฒด์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ๋งคํ(์ฐ๊ฒฐ)ํด์ฃผ๋ ๊ฒ์ ๋งํ๋ค.
- ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ณ , ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ ์ด๋ธ์ ์ฌ์ฉํ๋ค.
- ๊ฐ์ฒด ๋ชจ๋ธ๊ณผ ๊ด๊ณํ ๋ชจ๋ธ ๊ฐ์ ๋ถ์ผ์น๊ฐ ์กด์ฌํ๋ค.
- ORM์ ํตํด ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ฐํ์ผ๋ก SQL์ ์๋์ผ๋ก ์์ฑํ์ฌ ๋ถ์ผ์น๋ฅผ ํด๊ฒฐํ๋ค.
- Persistence API๋ผ๊ณ ๋ ํ ์ ์๋ค.
- JPA : (Java Persistence API)
- ์๋ฐ ์ง์์ ORM ๊ธฐ์ ํ์ค
- ์ธํฐํ์ด์ค์ ๋ชจ์
- JPA ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๋ํ์ ์ธ ์คํ์์ค๊ฐ Hibernate
- ์ฅ์
- ๊ฐ์ฒด ์ค์ฌ ๊ฐ๋ฐ
- ์์ฐ์ฑ(๊ฐ๋จํ CRUD)
- ์ ์ง๋ณด์
- object์ RDB๊ฐ ํจ๋ฌ๋ค์ ๋ถ์ผ์น ํด๊ฒฐ
ํด๊ฒฐ๋ฐฉ๋ฒ
- Join Fetch
- @EntityGraph
์์ ๋ ๋ฐฉ๋ฒ์ ๊ณตํต์ ์ผ๋ก ์นดํ์์ ๊ณฑ์ด ๋ฐ์ํ์ฌ ๊ฒฐ๊ณผ๊ฐ ์ค๋ณต ๋ฐ์ํ๊ฒ ๋๋ค.
- ์ด๋๋ ์ผ๋๋ค ํ๋์ ํ์ ์ Set์ผ๋ก ์ ์ธํ๋ค.
- List๊ฐ ๋ ์ ํฉํ๋ค๋ฉด, Query์ distinct๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ณต์ ์ ๊ฑฐํ๋ค.
์ฐธ๊ณ
- joosjuliet.github.io/n+1/
- jojoldu.tistory.com/165
- gmlwjd9405.github.io/2019/02/01/orm.html
- gmlwjd9405.github.io/2019/08/04/what-is-jpa.html
'๐CS > DB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DB] Connection Pool (0) | 2021.04.18 |
---|---|
[DB] ์ ๊ทํ (0) | 2021.04.11 |
[DB] Index (1) | 2021.04.04 |
[SQL] ๋ค์ค์ ๋ ฌ ORDER BY (1) | 2020.01.09 |
[MySQL] Resotre Workspace ์ค๋ฅ (0) | 2019.12.10 |
๋๊ธ