개발 기록

[JPA] LazyInitializationException: could not initialize proxy - no Session 본문

TIL

[JPA] LazyInitializationException: could not initialize proxy - no Session

수염차 2022. 1. 7. 00:24

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=kbh3983&logNo=221170953020 

 

[JPA] LazyInitializationException: could not initialize proxy - no Session

LazyInitializationException: could not initialize proxy - no Session 무슨 의미일까? 여기서 Sess...

blog.naver.com

https://github.com/HomoEfficio/dev-tips/blob/master/Spring%20Data%20JPA%20-%20LazyInitialization%20%EC%97%90%EB%9F%AC%20-%20getOne().md 

 

GitHub - HomoEfficio/dev-tips: 개발하다 마주쳤던 작은 문제들과 해결 방법 정리

개발하다 마주쳤던 작은 문제들과 해결 방법 정리. Contribute to HomoEfficio/dev-tips development by creating an account on GitHub.

github.com

전에 이게 떴을때는 왜떴는지도 모르고 그냥 트랜젝셔널 어노테이션 붙이고 끝났다.

 

말그대로 지연 로딩을 하려는데 이미 세션이 사라져서 지연 로딩을 못할 때 발생하는 에러다.

 

@Transactional
    public void send(Long feedId) {
        //해당 피드 작성자 id 찾기
        Feed feed = feedRepository.findById(feedId).orElseThrow(
                () -> new ApiRequestException("해당하는 피드가 없습니다.")
        );
        String userId = feed.getUser().getKakaoId();//여기서 해당 에러 발생

        if (sseEmitters.containsKey(userId)) {
            SseEmitter sseEmitter = sseEmitters.get(userId);
            try {
                //데이터 전송
                sseEmitter.send(SseEmitter.event().name("addComment").data("댓글이 달렸습니다!!!!!"));
            } catch (Exception e) {
                sseEmitters.remove(userId);
            }
        }
    }

같은 메소드인데 트랜젝션이 나눠져있나.. ? 피드 찾자마자 피드에 해당하는 유저 찾으려는데 왜 세션이 다른 건지 잘 모르겠다.

Comments