인프런 커뮤니티 질문&답변

이한빈님의 프로필 이미지
이한빈

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

프록시를 이용한 연관관계 설정 시 잘못된 id값을 받았을 경우에 대해 질문드립니다!

해결된 질문

작성

·

174

0

단순히 연관관계 설정을 위해 엔티티를 사용하는 경우, 프록시로 조회(em.getReference || Data JPA의 경우 getById()) 형태로 조회한다고 알고 있습니다.

연관관계 설정을 위해 필요한 값은 id뿐인데, 굳이 엔티티의 다른 필드 정보까지 조회하기 위한 쿼리를 날리지 않는 편이 좋으니까요.

 

이 점과 관련해서 동료들과 이야기를 나누던 중 얘기가 나왔었는데,

- 위와 같은 방식으로 연관관계를 맺을 경우 id값이 잘못된 값일 때 문제가 발생한다.

는 이야기를 들었습니다.

 

제 생각에는 정확한 id값 전달의 경우 id값을 전송하는 쪽의 책임이고, 그런 일이 나올 경우에 대비하는 것에 비해 프록시를 이용해서 조회 쿼리를 한 번 절약하는 이득이 더 크다고 생각했습니다. 하지만 방어적 코드를 작성하는 편이 좋다라는 측면에서 동료들의 말에도 일리가 있어서 고민이 되었습니다.

현업에서도 프록시를 이용해 연관관계를 맺는 방식을 사용하실 것 같은데, 위 경우에 대해 어떤 방식으로 별도의 처리를 해주시는지, 이 문제에 대해 어떻게 생각하시는지 궁금합니다.

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 이한빈님

PK를 기준으로 엔티티 하나를 추가로 DB에서 조회한다고 해서 성능에 영향을 주는 부분은 아주 미미합니다.

따라서 이런 부분이 걱정이라면 프록시 대신에 실제 엔티티를 조회하는 것도 방법입니다.

참고로 권장하는 방법은 실제 엔티티를 조회하고, 이 부분이 성능 최적화가 너무 중요한 경우에 한정적으로 프록시로 조회하는 방법입니다.

감사합니다.

이한빈님의 프로필 이미지
이한빈
질문자

의문이 깔끔하게 해결되었습니다! 항상 감사합니다!

이한빈님의 프로필 이미지
이한빈

작성한 질문수

질문하기