인프런 커뮤니티 질문&답변

slr과르님의 프로필 이미지
slr과르

작성한 질문수

스프링 데이터 JPA

JPA 프로그래밍 4. 관계 맵핑

단방향 관계와 양방향 관계 관련되어 문의 드립니다.

해결된 질문

작성

·

297

2

@ManyToOne 단방향으로 관계 설정하는 경우와

@ManyToOne+@OneToMany를 통해 양방향 관계로 설정하는 경우,

DB 상으로 생성된 컬럼이나 데이터가 동일한데 이 두가지에 대한 차이점은 무엇인가요?

DB 상에 데이터가 동일한데 굳이 양방향 관계를 사용하는 이유가 궁금합니다.

감사합니다

답변 1

6

백기선님의 프로필 이미지
백기선
지식공유자

DB 상으론 단방향이든 양방향이든 동일하지만, 객체 관점에서 보면 다릅니다.

JPA를 사용하는 이유 중 하나가 객체지향적으로 프로그래밍을 하기 위함인데, 객체 순회를 어떻게 하느냐에 따라 단방향으로 만들지, 양방향으로 만들지 정해집니다.

가령, Event와 Location이라는 엔티티가 있다고 가정해보죠. Event에서 Location은 당연히 참조해야 할테니 Event -> Location이라는 방향은 보통 레퍼런스로 정의하게 될 겁니다. 그런데 만들 다 보니 어떤 장소에서 열렸던 이벤트 목록도 자주 보여주게 된다면? 그럼 아에 둘의 관계를 양방향으로 만들고, Location을 읽어온 뒤에, Location에서 열렸던 List 목록을 객체로 순회하며 보여줄 수도 있겠죠.

물론, 그렇게 하지않고, 쿼리를 이용해서 조회해올 수도 있겠지만, 가능한한 객체 중심으로 생각하고 코딩하기 편하게 해주는게 JPA의 목적이니 저라면 양방향 관계를 사용해서 그런 문제를 필긴 할 겁니다.

즉, 애플리케이션의 요구 사항이나 기능에 따라 양방향, 단방향이 결정되는 것이지 항상 어느 한쪽이 더 좋다라고 이야기할 수는 없습니다.

좋은 질문 감사합니다.

slr과르님의 프로필 이미지
slr과르

작성한 질문수

질문하기