[Spring Framwork] LazyInitializationException / @EntityGraph
2021. 11. 16. 20:01ใ๊ฐ๋ ์ ๋ฆฌ ์์ ์ค/๋ฌธ์ ์ ๋ฆฌ
728x90
๋ฐ์ํ
๐ LazyInitializationException
โ ๋ฌธ์ ๋ฐ์!
๐ป Repository Code
๐ป Test Code
๋ฐ์ํ
โ ๋ฌธ์ ์ดํด
์ด๊ฒ์ Review Class์ Member์ ๋ํ Fetch ๋ฐฉ์์ด LAZY(์ง์ฐ ๋ก๋ฉ)์ด๊ธฐ ๋๋ฌธ์ ํ ๋ฒ์ Review ๊ฐ์ฒด์ Member ๊ฐ์ฒด๋ฅผ ์กฐํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ Exception์ธ ๊ฒ์ด์์.
@Transactional์ ์ ์ฉํ๋ค๊ณ ํด๋ ๊ฐ Review ๊ฐ์ฒด์ getMember().getEmail()์ ์ฒ๋ฆฌํ ๋๋ง๋ค Member ๊ฐ์ฒด๋ฅผ Lodingํด์ผ ํ๋ ๋ฌธ์ ๊ฐ ์๋ต๋๋ค!
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ์๋์ ๊ฐ์ด ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋ ์ ์๋ ๊ฒ์ด์์.
- @Query๋ฅผ ์ด์ฉํด์ Join์ฒ๋ฆฌ
- @EntityGraph๋ฅผ ์ด์ฉํด์ Review ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ฌ ๋, Member ๊ฐ์ฒด Loding
๐ก ์ฐธ๊ณ : @EntityGraph๋?
@EntityGraph๋ Entity์ ํน์ ํ ์์ฑ์ ๊ฐ์ด Lodingํ๋๋ก ํ์ํ๋ ์ด๋ ธํ ์ด์ .
๊ธฐ๋ณธ์ ์ผ๋ก JPA๋ฅผ ์ด์ฉํ๋ ๊ฒฝ์ฐ ์ฐ๊ด ๊ด๊ณ์ FATCH ์์ฑ๊ฐ์ LAZY๋ก ์ง์ ํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
@EntityGraph๋ ์ด๋ฌํ ์ํฉ์์ ํน์ ๊ธฐ๋ฅ์ ์ํํ ๋๋ง, EAGER Loding์ ์ง์ ํ ์ ์๋ค.
@EntityGraph๋ attibutePaths ์์ฑ๊ณผ type ์์ฑ์ ๊ฐ์ง๊ณ ์๋ค.
ใ attributePaths: Loding ์ค์ ์ ๋ณ๊ฒฝํ๊ณ ์ถ์ ์์ฑ์ ์ด๋ฆ์ ๋ฐฐ์ด๋ก ๋ช ์
ใ type : @EntityGraph๋ฅผ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ ์ฉํ ๊ฒ์ธ์ง ์ค์
ใ FATCH ์์ฑ๊ฐ์ attributePaths์ ๋ช ์ํ ์์ฑ์ EAGER๋ก ์ฒ๋ฆฌํ๊ณ , ๋๋จธ์ง๋ LAZY๋ก ์ฒ๋ฆฌ.
ใ LOAD ์์ฑ๊ฐ์ attributePaths์ ๋ช ์ํ ์์ฑ์ EAGER๋ก ์ฒ๋ฆฌํ๊ณ , ๋๋จธ์ง๋ Entity Class์ ๋ช ์ ๋๊ฑฐ๋,
๊ธฐ๋ณธ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ
โ ํด๊ฒฐ ๋ฐฉ์
โ ์ ์ ๊ธฐ๋
728x90
๋ฐ์ํ