연관관계 매핑이란 객체 지향 프로그래밍에서 엔티티 객체 간의 관계를 관계형 데이터베이스의 외래 키 관계와 연결하는 과정을 말합니다. 

 

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

+ Recent posts