단방향 연관관계

Soo·2024년 6월 15일

Spring Data JPA

목록 보기
8/13
post-thumbnail

모든 코드는 Github에 올라와 있습니다.

단방향 연관관계

A엔티티가 B엔티티를 참조하지만 B엔티티는 A엔티티를 참조하지 않는 경우
엔티티의 참조가 한쪽 방향으로만 있는 경우

회원과 팀 예시로 알아보기

  • 회원과 팀이 있다.
  • 회원은 팀을 참조지만, 팀은 회원을 참조하지 않는다.
  • 회원과 팀은 다대일 관계다.

객체지향에서는 객체가 다른 객체의 참조를 가지고 있음으로 자유롭게 객체간 탐색을 할 수 있습니다.

Member
Member에서 Team의 id를 가지고 있는 것이 아니라 Team의 참조를 가지고 있습니다.

...
@Entity  
public class Member {  
  
@Id  
@GeneratedValue(strategy = GenerationType.AUTO)  
@Column(name = "MEMBER_ID")  
private Long id;  
  
@Column(name = "USERNAME")  
private String username;  
  
@ManyToOne  
@JoinColumn(name = "TEAM_ID")  
private Team team;  
  
...
}

JpaMaina

실행을 해보면

팀의 아이디도 정상적으로 가지고 오고 insert도 정상적으로 된 것을 확인할 수 있습니다.
find team_id가 먼저 출력이 되고 insert가 나중에 나가는 이유는 영속성 컨텍스트의 특징 을 보시면 자세히 알 수 있습니다.

장점과 단점

장점

  • 단방향 연관관계는 설계와 구현이 더 간단합니다.
  • 특정 엔티티에서만 다른 엔티티를 참조할 때 유용합니다.

단점

  • 양방향 연관관계가 필요할 때보다 유연성이 떨어집니다.
  • 역방향 참조가 필요한 경우 추가적인 조회가 필요합니다.

0개의 댓글