연관관계 매핑이란 객체 지향 프로그래밍에서 엔티티 객체 간의 관계를 관계형 데이터베이스의 외래 키 관계와 연결하는 과정을 말합니다.
1:N 연관
흔한 예로는 부서와 직원 간의 관계가 있습니다 . 각 부서에는 여러 직원 이 있지만, 각 직원은 하나의 부서에만 속합니다 .
@Entity
public class Department {
@Id
private Long id;
@OneToMany
@JoinColumn(name = "department_id")
private List<Employee> employees;
}
@Entity
public class Employee {
@Id
private Long id;
}
N:1 연관
다대일 관계에서는 엔터티의 여러 인스턴스가 다른 엔터티의 한 인스턴스와 연결됩니다 .
예를 들어 각 학생은 하나의 학교 에만 등록할 수 있지만 , 각 학교는 여러 학생 을 가질 수 있습니다 .
다대일 단방향 연관 예시
@ManyToOne 어노테이션을 사용한다.
@JoinColumn 어노테이션은 Student 엔터티 와 School 엔터티를 조인할 외래 키 열 이름을 지정합니다 .
@Entity
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToOne
@JoinColumn(name = "school_id")
private School school;
}
@Entity
public class School {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
다대다 관계
다대다 관계 에서는 한 엔터티의 여러 인스턴스가 다른 엔터티의 여러 인스턴스와 연결됩니다 .
예시) Book은 여러 Author 를 가질 수 있고 , 각 Author는 여러 Book 을 작성할 수 있습니다.
JPA에서 이 관계는 @ManyToMany 어노테이션을 사용하여 표현됩니다.
다대다 관계 예시
- @ManyToMany 어노테이션은 각 Book이 여러 Author 를 가질 수 있고 , 각 Author가 여러 Book 을 작성할 수 있음을 지정
- @JoinTable 어노테이션은 Book 과 Author 엔터티를 조인할 조인 테이블의 이름과 외래 키 열을 지정합니다.
@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
@ManyToMany
@JoinTable(name = "book_author",
joinColumns = @JoinColumn(name = "book_id"),
inverseJoinColumns = @JoinColumn(name = "author_id"))
private Set<Author> authors;
}
@Entity
public class Author {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}'TIL' 카테고리의 다른 글
| TIL/ 260112 (0) | 2026.01.13 |
|---|---|
| TIL/251222 (0) | 2025.12.22 |
| TIL/251219 (0) | 2025.12.19 |
| TIL / RESTful API (0) | 2025.10.17 |