객체 연관관계 vs 테이블 연관관계
- 테이블 연관관계 : FK(외래키)로 관계 설정
- 객체 연관관계 : 상대방 객체를 참조(변수)로 설정

1:N or N:1 (일대다, 다대일) - 단방향
- Member : @ManyToOne + @JoinColumn을 설정하면 단방향
- Team 에도 mappedBy를 설정하면 양방향
- 일대다 단방향 연관관계는 반드시 @JoinColumn을 사용해야 한다.
- 사용하지 않으면 JoinTable 방식을 사용한다.
- Team_Member 라는 중간 테이블이 생성된다.
@Entity
public class Member {
@Id
@GeneratedValue
private Long id;
@Column(name = "USERNAME")
private String name;
private int age;
@ManyToOne
@JoinColumn(name = "TEAM_ID")
private Team team;
}

1:N or N:1 (일대다, 다대일) - 양방향
- Member : @ManyToOne + @JoinColumn 기술
- Team : @ManyToOne + mappedBy 기술
@Entity
public class Member {
@Id
@GeneratedValue
private Long id;
@Column(name = "USERNAME")
private String name;
private int age;
@ManyToOne
@JoinColumn(name = "TEAM_ID")
private Team team;
}
@Entity
public class Team {
@Id
@GeneratedValue
private Long id;
@Column(name = "TEAN_NAME")
private String teamName;
@OneToMany(mappedBy = "team")
private List<Member> members = new ArrayList<>();
}


참고자료