๋ฐ์ํ
์ ๋ฒ ์๊ฐ์ Spring Data JPA ๋ฌด์์ธ๊ฐ์ ๊ฐ๋จํ ํต์ฌ์ ๋ต์ ๋ํด์ ์์๋ดค๋ค.
์ด์ด์ Spring Data JPA์ ์ธ์ ๊ด๋ฆฌ ์ ๋ต ์ค ํ๋์ธ OSIV ์ ๋ต์ ๋ํด์ ์์๋ณด๋ ค๊ณ ํ๋ค.
2024.01.22 - [๐ฟSpring/Spring JPA] - [Spring JPA] JPA๋?
OSIV (Open Session In View)
- ์คํ๋ง ํ๋ ์์ํฌ์์ ์ฌ์ฉํ๋ ์ธ์ ๊ด๋ฆฌ ์ ๋ต ์ค ํ๋
- ์คํ๋ง ๋ถํธ์์๋ ๊ธฐ๋ณธ ๊ฐ์ด True๋ก ์ค์
- application.yaml ํ์ผ์์ ์ค์
spring.jpa.open-in-view: true
- ์ ํ๋ฆฌ์ผ์ด์
์์ HTTP ์์ฒญ๋ง๋ค ์๋ก์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ด ์์ฑ, ์ด์ ๋ฐ๋ผ ๋ง์ ์์ DB์ปค๋ฅ์
์ด ๋ฐ์ํ์ฌ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ ํ ์ ์๋ค.
- ๋จ, OSIV ์ต์ ์ True๋ก ์ค์ ํ์ฌ ์ฌ์ฉ ํ ๊ฒฝ์ฐ, ํธ๋์ญ์ ์์์ฒ๋ผ ์ต์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ์์ ์์ ๋ถํฐ API ์๋ต์ด ๋๋ ๋ ๊น์ง ์์์ฑ ์ปจํ ์คํธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ์ ์ ์ง
์ฅ์
- ์ง์ฐ ๋ก๋ฉ์ ์์์ฑ ์ปจํ ์คํธ๊ฐ ์ด์์์ด์ผ ๊ฐ๋ฅ
- ์์์ฑ ์ปจํ ์คํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ์ ์ ์ง
- ์ง์ฐ ๋ก๋ฉ์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด ๊ฐ์ฅ ํฐ ์ฅ์
๋จ์
- ์ปจํธ๋กค๋ฌ์์ API๋ฅผ ํธ์ถ ํ ๋ 10์ด๊ฐ ๊ฑธ๋ฆฌ๋ฉด, 10์ด ๋์ ์ปค๋ฅ์ ์ ๋ฐํํ์ง ๋ชปํ๊ณ ์ ์ง
- ๋๋ฌด ์ค๋์๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ์ ์ฌ์ฉํ์ฌ, ์ค์๊ฐ ํธ๋ํฝ์ด ์ค์ํ ์๋น์ค์ผ ๊ฒฝ์ฐ ์ปค๋ฅ์ ์ด ๋ถ์กฑํด ์์คํ ์ฅ์ ๋ก ์ด์ด์ง๋ค.
spring.jpa.open-in-view: false
- OSIV๋ฅผ ๋๋ฉด ํธ๋์ญ์ ์ ์ข ๋ฃ ํ ๋ ์์์ฑ ์ปจํ ์คํธ๋ฅผ ๋ซ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ๋ ๋ฐํ
์ฅ์
- ์ปค๋ฅ์ ๋ฆฌ์์ค๋ฅผ ๋ญ๋นํ์ง ์๋๋ค.
๋จ์
- ์ง์ฐ๋ก๋ฉ์ ์์์ฑ ์ปจํ ์คํธ๊ฐ ์ด์ ์์ด์ผ ํ๋๋ฐ, ์์์ฑ ์ปจํ ์คํธ๊ฐ ๋ซํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ง์ฐ๋ก๋ฉ์ ํธ๋์ญ์ ์์์ ์ฒ๋ฆฌ
- ์ง์ฐ๋ก๋ฉ์ ์ฌ์ฉํ๋ ์ํ์์ OSIV๋ฅผ ๋๊ณ ์คํํ๋ฉด LazyInitializationException์ด ๋ฐ์
- ์ด๋ฌํ ๊ฒฝ์ฐ ์ง์ฐ๋ก๋ฉ์ฝ๋๋ฅผ ํธ๋์ญ์ ์์์ ์ฒ๋ฆฌํ๊ณ ๋ฐํ, fetch join์ ์ฌ์ฉํด ํด๊ฒฐ
์ธ์ ์ฌ์ฉํด์ผ ํ ๊น?
- ์์ฒญ์ด ๋ง์ง ์์ ๊ฐ๋จํ ์๋น์ค๋ ์ปค๋ฅ์
์ ๋ง์ด ์ฌ์ฉํ์ง ์๋ ๊ณณ์์๋ TRUE
- ์ง์ฐ๋ก๋ฉ์ ์ฌ์ฉํ๋๊ฒ ํธ๋ฆฌ
- ๊ณ ๊ฐ ์๋น์ค ์ค์๊ฐ API๋ FALSE
- ์ปค๋ฅ์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ ๋์ง๋ง ์ง์ฐ ๋ก๋ฉ์ ์ฌ์ฉํ๋๋ฐ ์ถ๊ฐ ์์ ์ด ํ์
๋ฐ์ํ
'๐ฟSpring > Spring Data JPA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring JPA] JPA๋? (0) | 2024.01.22 |
---|