다대다 관계는 하나의 엔티티가 여러 다른 엔티티와 관계를 맺을 수 있고, 반대로 다른 엔티티도 여러 엔티티와 관계를 맺을 수 있는 상황을 말합니다. 이러한 관계를 데이터베이스에 저장하기 위해서는 별도의 연결 테이블이 필요
name : 연결 테이블의 이름joinColumns: 현재 엔티티와 연결 테이블 간의 외래 키를 정의하는 @JoinColumn 어노테이션 배열inverseJoinColumns: 반대 엔티티와 연결 테이블 간의 외래 키를 정의하는 @JoinColumn 어노테이션 배열
@Entity
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToMany
@JoinTable(
name = "student_course",
joinColumns = @JoinColumn(name = "student_id"),
inverseJoinColumns = @JoinColumn(name = "course_id")
)
private List<Course> courses = new ArrayList<>();
// Getters and Setters
}
@Entity
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToMany(mappedBy = "courses")
private List<Student> students = new ArrayList<>();
// Getters and Setters
}
