• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

연관관계 질문 드려요.

19.11.01 16:42 작성 조회수 132

0

영한님 안녕하세요. 

실무에서 Master / Detail 의 일대다 관계 구조로 설계된 기능들이 꽤 있는데

화면에서 Master 를 먼저 등록 완료하고, 이후 등록된 Master 중 택일하여 Detail 을 등록하는 방식들입니다.

만약 이러한 구조에서 연관관계 맵핑을 하지 않고 Join 이 되는 외래키를

Detail 의 속성에 넣어 구현할 경우, 연관관계 맵핑 방식과 비교하여 단점이 클까요?

JPA 를 한번도 경험해보지 않은 팀원들이 개발을 해보려고 하니

연관관계 맵핑을 적용하는 것에 어려움이 있어 당장은 위 구조를 활용하려고 하네요.

저도 아직 영한님 강의만 듣고 있는 상태라 큰 도움이 못되고 있고요..

의견 좀 주시면 감사하겠습니다.

그리고 QueryDSL 내용이 강의에 전혀 포함되어 있지 않아 아쉬움이 크네요 ㅠ

답변 1

답변을 작성해보세요.

0

안녕하세요 아리마님

문의하신 외래키를 Detail의 속성에 넣어 구현할 경우를 다음과 같이 이해했습니다.

Detail {

    Long masterId; -> 객체 대신에 외래키 값을 넣어서 사용

}

Master, Detail을 일대다 관계로 가져가는 경우는 매우 흔한 경우이지요^^

JPA를 사용하는 이유가 객체를 객체답게 설계하는 것인데, id를 사용하고, 데이터베이스 테이블 구조에 엔티티를 맞추어서 설계하는 방식으로 가면 얻는 이득이 많이 떨어집니다.

JPA를 사용하려면 결국 JPQL까지 가야하는데, 연관관계가 없으면 JPQL에서 큰 이득을 얻을 수 없습니다.

그리고 연관관계 매핑을 해야! 향후 fetch join 등을 사용해서 매우 편하게 성능 최적화를 할 수 있습니다.

그리고 저는 가급적 연관관계를 사용하는 것을 권장합니다.

개인적으로 활용편1 강의를 한번 들어보시길 권장합니다. 실무에서 이런 부분을 어떻게 처리하는지, 코드로 설명하고 있으니, 이해하시고, 팀분들에게도 설명해주실 수 있을 거에요.

감사합니다.

P.s: QueryDSL은 조만간 준비하겠습니다 ㅎㅎ