@OneToMany 매핑, 즉 일대다 관계를 스프링 부트에서 어떤 식으로 적용시키면 좋을지에 대해 알아본다.
일대다 관계란, 한 쪽의 엔티티가 다른 쪽의 엔티티의 객체 여러개를 가질 수 있을 때를 의미하는 관계이다.
예를 들어, 하나의 팀은 여러명의 선수를 가질 수 있다. 이런 경우를 팀이 선수와 일대다 관계를 맺고 있다고 말할 수 있다. 이를 그림으로 나타내면 다음과 같은 모양일 것이다.
외래키는 member가 가지게 된다.
Spring에서 위의 관계는 team 테이블을 @OneToMany와 @JoinColumn()을 이용해 member와 매핑하는 방식으로 구현된다.
예시코드는 다음과 같다.
@Entity
public class team{
@OneToMany
@JoinColumn(name = "team_id")
private List<Member> members = new ArrayList<>();
}
Member 타입 리스트로 이루어진 members변수를 하나 선언하고, 이에 대해 어노테이션을 두 개 적용한다.
하나는 @OneToMany로 일대다 관계를 의미하는 어노테이션이고, 다른 하나는 @JoinColumn으로 외래키를 매핑할 때 사용됩니다. 여기서는 team_id가 외래키로 사용되었으므로, name="team_id"의 형식으로 인자로 들어가게 된다.