inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

양방향 연관관계의 필요성

해결된 질문

1011

789456jang

작성한 질문수 12

2

안녕하세요. 공부를 하다가 궁금한 부분이 생겨 질문 남깁니다.

강의에서 최대한 모든 테이블을 단방향으로 설계하고 필요할 때만 양방향 연관관계를 맺어주면 된다고 하셨는데요. 양방향 연관관계가 어떤 상황에서 필요할까 고민하다가 제가 생각할 수 있는 모든 상황에서 어떻게든 단방향으로 처리할 수 있을 것 같다는 결론이 났습니다.

하지만 분명 양방향이 필요한 순간이 있을 것 같은데, 어떤 상황에서 양방향 연관관계가 사용될까요?

+ 좀 더 고민해보던 중에 예를들어 게시글과 댓글에 관계에서 게시글 내용조회와 함께 댓글 리스트가 필요할 때 단방향이라면 쿼리를 2번 날려야하는 반면 양방향으로 매핑이 되어있다면 페치조인등을 통해서 한번의 쿼리로 조회할 수 있다는 점이 필요성을 가지게 한다고 생각했는데 맞을까요?

java jpa

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요.

양방향 연관관계는 단방향으로는 처리하기 어려운 몇 가지 상황에서 유용하게 사용될 수 있어요.

첫 번째로, 양방향 연관관계는 연관된 두 객체를 효율적으로 탐색할 때 사용될 수 있어요. 예를 들어, 게시글과 댓글 간의 관계에서 게시글에서 댓글을 조회하고, 댓글에서도 게시글을 조회할 수 있도록 양방향 연관관계를 설정한다면 단방향으로 처리하더라도 게시글을 조회한 후에 댓글을 조회하기 위해 추가로 쿼리를 날리지 않아도 되어 효율적으로 데이터를 조회할 수 있어요.

두 번째로, 양방향 연관관계를 통해 양쪽 객체에 대한 일관성을 유지할 수 있어요. 예를 들어, 회원과 주문 간의 관계에서 회원의 주문 목록과 주문의 회원 정보 간의 연관관계를 양방향으로 설정하면 둘 중 어느 한 쪽의 정보가 바뀌더라도 자동으로 다른 쪽의 정보도 변경될 수 있어 일관성을 유지할 수 있어요.

세 번째로, 양방향 연관관계를 설정함으로써 객체 간의 다양한 작업을 수행할 수 있어요. 예를 들어, 양방향 연관관계를 통해 연관된 객체들 간의 상호작용이 가능해지고, 객체 간의 관계를 더욱 복잡하게 설정할 수 있어요.

이처럼 양방향 연관관계는 데이터 조회의 효율성, 일관성 유지, 객체 간의 다양한 상호작용 등 몇 가지 상황에서 유용하게 사용될 수 있어요. 그렇지만 양방향 연관관계도 필요한 상황에 맞게 적절히 사용하는 것이 중요해요. 상황에 따라 양방향 연관관계의 필요성을 고민하고, 단방향으로 처리 가능한 경우에는 단방향으로 처리하는 것이 더 좋을 수도 있어요.

추가로 제가 설명한 내용에 대한 자세한 공부를 원하신다면, 관련된 프로그래밍 교재나 강의를 참고해보시는 것을 추천드립니다. 공부하시는데 도움이 되었으면 좋겠습니다. 좋은 공부 되세요!

벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?

0

22

2

inheritance startegy 선택시 고려사항

0

22

1

Entity 동등성 비교

0

18

1

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

0

46

1

H2데이터베이스 파일 생성

0

56

2

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

0

52

2

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

0

51

1

JPQL 메소드와 락

0

55

1

Delivery @OneToOne

0

60

1

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

0

93

2

UnsupportedOperationException 발생

0

86

3

H2 Database 연결이 안됩니다.

0

92

2

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

0

85

2

h2데이터베이스 실행오류

0

107

2

persistence.xml

0

106

2

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

0

80

1

영속성 컨텍스트

0

65

1

JPA 프록시

0

94

1

Native Query와 MyBatis

0

68

1

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

0

85

1

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

0

114

3

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

0

94

3

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

0

108

2

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

0

143

1