-- 예시: 회원(Member)이 팀(Team)에 소속된다
CREATE TABLE team (
id BIGINT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE member (
id BIGINT PRIMARY KEY,
username VARCHAR(50),
team_id BIGINT,
FOREIGN KEY (team_id) REFERENCES team(id)
);
@Entity
public class Member {
@Id
private Long id;
private String username;
@ManyToOne
@JoinColumn(name = "team_id") // DB 외래키와 연결
private Team team;
}
@Entity
public class Team {
@Id
private Long id;
private String name;
}
🔑 핵심: @JoinColumn(name = "team_id")를 통해 자바의 team 필드와 DB의 외래 키 team_id를 매핑
즉, 객체 간 참조(객체 그래프) 와 DB의 외래 키를 연결 → 연관관계 매핑
@Entity
public class Member {
@ManyToOne
@JoinColumn(name = "team_id") // 이 필드가 외래 키! (연관관계의 주인)
private Team team;
}
@Entity
public class Team {
@OneToMany(mappedBy = "team") // 주인이 아님 (읽기 전용)
private List<Member> members = new ArrayList<>();
}
📝 mappedBy = "team" → Member 클래스의 team 필드에 의해 연관관계가 관리된다는 의미