인프런 커뮤니티 질문&답변
5:05 부분 질문 있습니다.
작성
·
208
0
OrderDto 클래스의 어노테이션을 @Data로 해주면 orderItems의 json 정보가 postman에서 보여지는데 정확히 어떤 이유로 이게 가능한건가요?
Getter로 다시 바꾸니 Null로 출력이 되는데 그 이유가 궁금합니다.
답변 1
0
아하, orderItems 부분이 null로 나온다고 질문하신 내용이군요.
해당 부분은 LazyLoading과 관련이 있습니다.
해당 강의 5:40초즈음 orderItems 를 순회하면서 getNames()를 호출 하는 부분이 나옵니다.
orderItems 는 엔티티 이고 사용하기 전에는 JPA에서 쿼리 최적화를 위해 즉시 로딩하지 않습니다.
그래서 강제로 엔티티를 로딩하도록 코드를 수정하는 부분을 확인하실 수 있습니다.
감사합니다.
@Data일때는 조회가 되는 것에 대한 답변을 안했네요.
@Data를 선언한 경우,
equals() 및 hashcode() toString() 등의 메서드를 오버라이딩 하게 되는데요.
이 메서드들은 필드 변수의 값을 이용해야 하는 메서드입니다.
이 메서드를 오버라이딩 하면서 orderItems의 엔티티 조회가 발생하는 것으로 판단합니다.






강의에서는 null로 나오는데요..? 어노테이션을 getter로 했을때는 postman에서 orderItems가 강의에서 처럼 null로 나오고 @Data로 했을때는 orderItems의 값이 조회됩니다.