728x90
반응형
Service 레이어에서 Entity를 가져올 때 발생할 수 있다. Entity에 접근해서 JPA의 Fetch 설정이 LazyLoading(주로 1:N으로 연결된 필드) 설정인 경우 서비스 레이어 -> 컨트롤러 레이어에서 프록시 객체를 넘겨서 발생할 수 있다.
아래 참조 글에 따르면 이것은 프록시 객체를 가져오는 것도 트랜잭션 단위로 이루어지기 때문이다. 서비스 레이어에서는 StudentDto내에 School 엔티티를 프록시로 들고 있어도 되지만, 그대로 서비스 레이어를 끝내고 다른 레이어로 넘어가면 세션이 끝나버려서 프록시로 들고 있던 School 엔티티의 값을 참조하지 못하게 된다.
서비스 레이어에서 모든 프록시 객체들을 개별 DTO로 변환하는 것이 추천된다. Eager 로딩할 수도 있겠으나 N+1 문제가 발생할 수 있다.
참조 글
https://cantcoding.tistory.com/78
728x90
반응형
'Programming-[Backend] > JPA' 카테고리의 다른 글
[TIL] JPA @ManyToMany 적용, 테이블 이름과 컬럼, 저장 처리 방식 (0) | 2023.05.19 |
---|---|
[TIL] JPA Expressions Date 오늘 날짜 또는 상수 값 넣기 : dateTemplate, SQL function(내장함수) (0) | 2022.05.17 |
[링크] JPA Map 결과 리턴(결과 집합 그루핑) (0) | 2022.02.21 |
[TIL][에러] SQL-Server - hibernate; JPA 적용 Sort, Paging 시 데이터 누락, 중복 문제 (0) | 2021.12.18 |
[Querydsl][작성중] 6. 실무 활용 - 사용자 정의 Repository (0) | 2021.12.09 |