728x90
모든 코드는 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;
...
}
JpaMain

실행을 해보면
팀의 아이디도 정상적으로 가지고 오고 insert도 정상적으로 된 것을 확인할 수 있습니다.find team_id
가 먼저 출력이 되고 insert
가 나중에 나가는 이유는 영속성 컨텍스트의 특징 을 보시면 자세히 알 수 있습니다.
장점과 단점
장점
- 단방향 연관관계는 설계와 구현이 더 간단합니다.
- 특정 엔티티에서만 다른 엔티티를 참조할 때 유용합니다.
단점
- 양방향 연관관계가 필요할 때보다 유연성이 떨어집니다.
- 역방향 참조가 필요한 경우 추가적인 조회가 필요합니다.
728x90