해결된 질문
작성
·
174
0
단순히 연관관계 설정을 위해 엔티티를 사용하는 경우, 프록시로 조회(em.getReference || Data JPA의 경우 getById()) 형태로 조회한다고 알고 있습니다.
연관관계 설정을 위해 필요한 값은 id뿐인데, 굳이 엔티티의 다른 필드 정보까지 조회하기 위한 쿼리를 날리지 않는 편이 좋으니까요.
이 점과 관련해서 동료들과 이야기를 나누던 중 얘기가 나왔었는데,
- 위와 같은 방식으로 연관관계를 맺을 경우 id값이 잘못된 값일 때 문제가 발생한다.
는 이야기를 들었습니다.
제 생각에는 정확한 id값 전달의 경우 id값을 전송하는 쪽의 책임이고, 그런 일이 나올 경우에 대비하는 것에 비해 프록시를 이용해서 조회 쿼리를 한 번 절약하는 이득이 더 크다고 생각했습니다. 하지만 방어적 코드를 작성하는 편이 좋다라는 측면에서 동료들의 말에도 일리가 있어서 고민이 되었습니다.
현업에서도 프록시를 이용해 연관관계를 맺는 방식을 사용하실 것 같은데, 위 경우에 대해 어떤 방식으로 별도의 처리를 해주시는지, 이 문제에 대해 어떻게 생각하시는지 궁금합니다.
답변 1
1
안녕하세요. 이한빈님
PK를 기준으로 엔티티 하나를 추가로 DB에서 조회한다고 해서 성능에 영향을 주는 부분은 아주 미미합니다.
따라서 이런 부분이 걱정이라면 프록시 대신에 실제 엔티티를 조회하는 것도 방법입니다.
참고로 권장하는 방법은 실제 엔티티를 조회하고, 이 부분이 성능 최적화가 너무 중요한 경우에 한정적으로 프록시로 조회하는 방법입니다.
감사합니다.
의문이 깔끔하게 해결되었습니다! 항상 감사합니다!