inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

다대일 [N:1]

다대다 관계에 대해서 몇가지 질문드립니다.

235

shk

작성한 질문수 19

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]

비지니스 요구 사항에 맞게 엔티티를 설계할 때 비지니스가 복잡하고 현실과 맞게 설계하기 위해서 고민하다 보니 다대다 관계가 많아지는 것 같습니다

 

배운대로 OrderItem과 같이 모두 중간에 엔티티를 만들어 1대다로 바꾸었습니다만 몇가지 의문이 드는 부분이 있어서 질문드립니다.

 

  1. 다대다 관계를 위해 중간 엔티티와 테이블을 만들다 보니 의미없는 엔티티와 테이블이 많아지는 것 같습니다. 이런 경우 설계가 잘못되었다고 판단할 수 있나요

  2. OrderItem과 같은 중간 엔티티에 대한 리포지토리를 만들면 조회가 편해지고 조인 횟수를 줄일 수 있을 것 같습니다. 그런데 이런 것은 설계적으로 바람직하진 않은가요?

     

언제나 답변 감사합니다

java jpa

답변 1

0

y2gcoder

안녕하세요. 김세희님, 공식 서포터즈 y2gcoder입니다.

  1. 주로 다대일 관계와 다대다 관계 중 어느 것이 좋냐고 따질 때는 요구사항을 기준으로 생각해보시면 좋을 것 같습니다. 저희가 구현해야 하는 요구사항을 면밀히 분석했을 때, 보통 해당 단계에서는 다대다 관계가 필요치 않으면 다대일로 구현해놓는 것이 맞았던 것 같습니다. 경험상 의외로 다대일로 구현한 것을 다대다로 변경할 일이 많지 않았습니다! 물론 제가 경험이 많지 않아서 그럴 수도 있습니다

  2. 그렇게 하셔도 됩니다. 제가 개발하면서 제일 많이 듣는 말 중에 하나가 비용인 것 같습니다. A를 했을 때의 비용과 A를 하지 않았을 때의 비용, 리팩토링 비용, 기능 추가를 위한 비용 등 개발할 때는 참 비용이 중요한 문제라 생각합니다. 김세희님께서도 중간 엔티티에 대한 레포지토리를 생성하고 그것을 기준으로 코드를 짰을 때, 그렇지 않았을 때보다 총 비용이 줄어든다고 생각하시면 그렇게 하시면 됩니다. 물론 그 비용을 따지는 것은 쉽지 않은 문제라고 생각합니다. 그래도 개발하시면서 계속 비용에 대해 생각하시다 보면 점점 비용을 산정하는 자신만의 기준이 생기실 거라 생각합니다 :)

 

감사합니다.

1

shk

자세한 답변 너무 감사합니다.

inheritance startegy 선택시 고려사항

0

11

0

Entity 동등성 비교

0

14

1

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

0

41

1

H2데이터베이스 파일 생성

0

52

2

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

0

49

2

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

0

48

1

JPQL 메소드와 락

0

53

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

84

1

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

0

112

3

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

0

91

3

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

0

106

2

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

0

137

1

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

0

68

1