Posts
Q&A
@JsonIgnore ์ดํ Internal Server Error๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
์ ๋ ๊ฐ์ ๋ฐ๋ผ๊ฐ๋ค๊ฐ ์ด ๋ถ๋ถ์์ ์ ์ ๋ฉ์ถ๊ณ ์์๋ดค๋๋ฐ์.์ ๋น์ ์คํ๋ง ์ค์ ์ด ์ด๋ ๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ง๊ธ ์คํ๋ง JPA์์ OSIV(Open Session In View) ๊ธฐ๋ฅ์ด ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ผ์ ธ์์ต๋๋ค.OSIV ๊ธฐ๋ฅ์ด ์ผ์ ธ์์ผ๋ฉด ํธ๋์ญ์ ์ด ์ข ๋ฃ๋ ๋ EntityManager๊ฐ ์ข ๋ฃ๋์ง ์๊ณ ์์ฒญ์ ๋ทฐ๋ก ๋ฐํํ ๋๊น์ง ์ด์์๋๋ฐ์. ์ด๊ฒ ํต์ฌ์ธ ๊ฒ ๊ฐ์ต๋๋ค. OSIV ๊ธฐ๋ฅ์ ๋๋ฉด ๊ฐ์์์์ฒ๋ผ LazyInitializationException ๊ฐ ํฐ์ง๋๋ค.Order์ Member ๋ ๊ฐ๋ง ์๊ฐํ๊ณ ์๋ฅผ ๋ค๋ฉด orderRepository.findAll(); ์ ํ๋ฉด Order์ ์๋ member๋ fetch ์ ๋ต์ด LAZY๋๊น Order ์กฐํํ ๋ ๋ฉ๋ชจ๋ฆฌ์๋ id๋ member(์ ๋์ ํ๋ก์ ๊ฐ์ฒด์) ๊ฐ ๋ค์ด์๋ ์ํ๊ฐ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ปจํธ๋กค๋ฌ์์ List ๋ฅผ ๋ฐํ -> Jackson์ด Order ๋ฆฌ์คํธ๋ฅผ JSON์ผ๋ก ๋ณํ ์๋-> JSON ๋ณํ ์ค ๋ฉค๋ฒ์ ์ด๋ฆ ๋ฑ ๋ฐ์ดํฐ๊ฐ ํ์ํ๋๊น order.getMember() ์ ๊ทผ-> LAZY ํ๋ก์ ์ด๊ธฐํ ์๋ ์ฌ๊ธฐ์๋ถํฐ OSIV ์ค์ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ ธ์.1) OSIV ๊ฐ ์ผ์ ธ์์ ๋ (2026๋ ๊ธฐ์ค ๊ธฐ๋ณธ๊ฐ)OSIV๊ฐ ์ผ์ ธ์์ผ๋ฉด EntityManager๋ ์๋น์ค๋ ๋ฆฌํ์งํ ๋ฆฌ์์ ํธ๋์ญ์ ์ด ์ข ๋ฃ๋์๋ค๊ณ ํด์ ๊ณง๋ฐ๋ก ์ข ๋ฃ๋์ง ์์ต๋๋ค.EntityManager๊ฐ ์์ง๊น์ง ์ด์ ์๋๋ฐ์. EntityManager๊ฐ ์์ผ๋ฉด ํ๋ก์ ์ด๊ธฐํ๋ฅผ ์๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด DB๋ก ์ถ๊ฐ SELECT๋ฌธ์ด ์คํ๋๊ณ ์ ์์ ์ผ๋ก JSON ์๋ต์ด ์๋ฃ๋ฉ๋๋ค. ๊ทธ๋ฌ๊ณ ๋์์ผ EntityManager๊ฐ ์ข ๋ฃ๋ฉ๋๋ค.๊ทธ๋ฌ๋๊น OSIV๊ฐ ์ผ์ ธ์์ผ๋ฉด ์ปจํธ๋กค๋ฌ๊ฐ ์ด๋ฏธ ๋ฐํ์ ํ๋๋ฐ๋ JSON ๋ณํ ๊ณผ์ ์์ ํ์ํ ๋๋ง๋ค DB ์กฐํ๊ฐ ๊ฐ๋ฅํ๊ฒ๋๋ค.์ข์ ๊ฑฐ ๊ฐ์๋ฐ... ์ด ๊ฒฝ์ฐ ์ฟผ๋ฆฌ ์์ธก์ด ์ด๋ ค์์ง๋ ์ ์ง๋ณด์๊ฐ ์ด๋ ต๊ฒ ์ฃ ... ์ํ๋์ด ํญ์ ๋ง์ํ์๋ฏ์ด ์ฟผ๋ฆฌ ์์ธก์ด ์ด๋ ค์ด ์ฝ๋๋ ์ ์ข์ ์ฝ๋์ด๊ธฐ๋ ํ๊ตฌ์.๊ทธ๋ฆฌ๊ณ ์ถ๊ฐ ์ฟผ๋ฆฌ๊ฐ ๋๊ฐ๋ N+1 ๋ฌธ์ ๋ ๋ง๋ ๊ฐ๋ฅ์ฑ๋ ์๊ตฌ์. 2) OSIV ๊ฐ ๊บผ์ ธ์์ ๋(๊ฐ์ ์ฐ๋ ์์ ๊ธฐ๋ณธ๊ฐ์ธ ๊ฒ ๊ฐ์ต๋๋ค.)OSIV ๊ฐ ๊บผ์ ธ์์ผ๋ฉด EntityManager๋ ๋ฆฌํ์งํ ๋ฆฌ๋ ์๋น์ค์์ ํธ๋์ญ์ ์ด ์ข ๋ฃ๋๋๋๋ก EntityManager๋ ์ข ๋ฃ๋ฉ๋๋ค.๊ทธ๋ฌ๊ณ ๋์ ์ปจํธ๋กค๋ฌ์์ List ๋ฅผ ๋ฐํ--> Jackson ์ด JSON ๋ณํ ์๋--> Lazy ํ๋ก์ ์ด๊ธฐํ ์๋์ด ๋ EntityManager๊ฐ ์์ผ๋ Jackson์ด JSON์ผ๋ก ๋ณํํ๋ ๊ณผ์ ์์ member์ ํ๋ก์ ์ด๊ธฐํ๊ฐ ๋ถ๊ฐ๋ฅํด์ ธ LazyInitializationException์ด ํฐ์ง๋๋ค. ๊ทธ๋๊น OSIV๊ฐ ์ผ์ ธ์๋ , ๊บผ์ ธ์๋ ๊ฒฐ๋ก ์์๋ต์ ์ํฐํฐ๋ฅผ ์ง์ ์ฌ์ฉํ๋ฉด Jackson์ด Order ์ํฐํฐ ์ ์ฒด๋ฅผ JSON ์ผ๋ก ๋ฐ๊พธ๋ ค๊ณ ์๋ํ๋๋ฐ ์ด๋ฌ๋ฉด Order ๋ด๋ถ์ ์๋ Lazy ์ฐ๊ด๊ด๊ณ๊น์ง ๋ชจ๋ ๊ฑด๋๋ ค๋ฒ๋ฆฌ๊ณ (์ถ๊ฐ Select ์ฟผ๋ฆฌ ๋ฐ์ ์ฆ๊ฐ) + API ์ ์ง๋ณด์ ์ด๋ ค์์ด ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ผ๋ ๊ฒ ๊ฐ์ ํต์ฌ ๋ด์ฉ์ธ ๊ฒ ๊ฐ์ต๋๋ค!
- Likes
- 0
- Comments
- 3
- Viewcount
- 110
Q&A
PostMan์์ POST์์ฒญ ์ค๋ฅ
/api/members/{id}๋ก GET์์ฒญ ํ ๋ ErrorPageController๋ก ๊ฐ๊ธฐ ์ (์์ธ ๋ฐ์ ์ ) ApiExceptionController์์ @GetMapping์ผ๋ก ๋ฐ์์ ์ฒ๋ฆฌํ ์ ์๋๋ฐํ์ฌ ApiExceptionController์์ @PostMapping์ผ๋ก ๋ง๋ค์ด ๋์ ๊ฒ ์์ด์ "Method Not Allowed"๋ก ๋์จ ๊ฒ์ผ๋ก ๋ณด์ฌ์.ApiExceptionController์์ @PostMapping("/api/members/{id}") ๋ก ๋๊ฐ์ด ๋ง๋ค์ด์ ํฌ์คํธ๋งจ์์ POST ์์ฒญํด๋ณด์๋ฉด ์ ์ ์๋๋ ๊ฒ๋๋ค.
- Likes
- 0
- Comments
- 3
- Viewcount
- 265
Q&A
[ํ๋ก์ ํธ ์คํํ๋ ๋ฒ] for ์คํ๋ง ๋ถํธ 3.2 ์ด์ ์๋ฐ ๋ฒ์ 17 ์ด์
์ต๊ณ
- Likes
- 15
- Comments
- 5
- Viewcount
- 2.5K
Q&A
์ ํธ ํด๋์ค์ ๋ํด..
์ ๋ ์ด ๋ถ๋ถ ์ด์ง ์ ๋งค๋ฅด์กํ๋๋ฐ ์ข์ ์ง๋ฌธ๊ณผ ๋ต๋ณ ๊ฐ์ฌํฉ๋๋น.
- Likes
- 1
- Comments
- 2
- Viewcount
- 551




