[Sping] JPA/ could not initialize proxy - no Session
왜 발생하는가?
- 영속성 컨텍스트의 생명주기와 프록시에 대한 이해 부족
- Lazy Loading으로 연관된 객체는 바로 초기화 되지 않고 필요할 때 정보가 채워지는 프록시 객체로 채워진다.
- 서비스단에서 트랜잭션이 일어나도록 설정이 되어있는데, JPA의 영속성 컨텍스트는 보통 트랜잭션과 생명주기를 같이한다. 컨트롤러 단으로 나오면서 영속성 상태가 끝나기 때문이다.
해결 방법
- DTO 변환을 컨트롤러 단에서 서비스 단으로 변경
- 지연로딩에서(LAZY)에서 즉시로딩(EAGER)로 변경한다. (비추천)