인프런 커뮤니티 질문&답변
Httpsession 에서 getAttribute 를 이용해 가져올때 타입캐스팅 문제
작성
·
675
0
안녕하세요.
HttpSession 에서 세션값을 가져올때 프록시 문제가 발생하는 것 때문에 질문을 남깁니다.
현재 Member 라는 Entity에는 '값 타입 컬렉션'이 정의되어 있는 상태입니다.
문제는 이 값타입 컬렉션은 지연로딩이 디폴트값이라서 세션값을 가져올때 Object -> Member 객체로 타입캐스팅 할때 proxy 객체인 상태에서 시도하려고 하여 에러가 발생해버립니다.
이런 상황에서 eager로 설정해주는 방법이 있겠지만 별로 좋지 못한 해결방안이라고 생각되어 어떻게 하면 더 좋은 방법으로 해결할 수 있는지 궁금하여 질문을 드립니다.
감사합니다.
퀴즈
JPA에서 `em.getReference`를 사용했을 때 처음 반환되는 객체의 특징은 무엇일까요?
실제 엔티티 객체
데이터베이스에서 즉시 로드된 객체
실제 엔티티를 대신하는 프록시 객체
영속성 컨텍스트와 무관한 객체






아...
선생님이 말씀하신대로 해결하였습니다 ㅠㅠㅠ 감사합니다.
지금껏 문제가 영속성 컨텍스트에서 get으로 조회한 값을 그대로 HttpSession 에 넣었던 것이 문제였습니다....트랜잭션 범위를 벗어나서 영속성 컨텍스트도 제거되는 바람에
Unable to evaluate the expression Method threw 'org.hibernate.LazyInitializationException' exception. 이런 에러가 발생했던 것이였네요.
dto객체를 하나 선언해 준 후에 바로 get으로 조회한 값을 넣지 않고 값들을 받아와서 새롭게 생성한 dto 에 넣어주어서 해결할 수 있었습니다.
너무 감사합니다 ㅎㅎ 행복하네요