inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

연관관계 질문 드려요.

223

아리마

작성한 질문수 75

0

영한님 안녕하세요. 

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

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

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

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

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

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

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

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

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

JPA java

답변 1

0

김영한

안녕하세요 아리마님

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

Detail {

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

}

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

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

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

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

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

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

감사합니다.

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

inheritance startegy 선택시 고려사항

0

1

0

Entity 동등성 비교

0

10

1

실무 조언 관련 질문입니다.

0

41

1

H2데이터베이스 파일 생성

0

51

2

서브쿼리 강의에서 ALL 예시 관련 질문드립니다.

0

49

2

수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?

0

48

1

JPQL 메소드와 락

0

52

1

Delivery @OneToOne

0

57

1

17강 4~5분대 테이블 값 조회가 안됩니다.

0

89

2

UnsupportedOperationException 발생

0

82

3

H2 Database 연결이 안됩니다.

0

89

2

연관관계 매핑 질문드립니다.

0

82

2

h2데이터베이스 실행오류

0

105

2

persistence.xml

0

103

2

양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?

0

77

1

영속성 컨텍스트

0

62

1

JPA 프록시

0

90

1

Native Query와 MyBatis

0

63

1

영속성 컨텍스트는 어떤 메모리에 저장되는건가요?

0

83

1

임베디드 타입 예시 코드 관련 질문

0

112

3

명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요

0

90

3

인텔리제이 패키지 커서 단축키 질문

0

106

2

혹시 현재는 ID 데이터 타입이 String이면 안되나요?

0

136

1

양방향 연관관계 시 연관관계 주인을 설정하는 이유

0

68

1