본문 바로가기
IT/spring

JPA @OneToMany 어노테이션

by 뉴코딩맨 2023. 7. 5.
JPA(Java Persistence API)에서는 엔티티 간의 관계를 매핑하기 위해 다양한 어노테이션을 제공합니다. 그 중에서도 @OneToMany 어노테이션은 일대다 관계를 매핑할 때 사용됩니다. @OneToMany 어노테이션의 기능과 사용법에 대해 알아보겠습니다.
 
 

@OneToMany 어노테이션의 기능

@OneToMany 어노테이션은 다음과 같은 기능을 제공합니다.
 
일대다 관계 매핑: @OneToMany 어노테이션은 한 엔티티가 다른 엔티티와 일대다 관계를 맺을 때 사용됩니다. 예를 들어, 하나의 작성자가 여러 개의 게시물을 작성하는 경우에 사용할 수 있습니다.
컬렉션 속성 설정: @OneToMany 어노테이션을 사용하여 일대다 관계에서 많은 엔티티를 저장하는 컬렉션 속성을 설정할 수 있습니다. 예를 들어, List, Set 등의 자바 컬렉션을 사용하여 연관된 엔티티들을 관리할 수 있습니다.

 

@OneToMany 어노테이션 사용법

@OneToMany 어노테이션을 사용하기 위해 다음과 같은 단계를 따릅니다.
 
연관 엔티티 클래스 생성: 일대다 관계를 맺을 다른 엔티티 클래스를 생성합니다.
@OneToMany 어노테이션 적용: 일대다 관계를 맺을 필드에 @OneToMany 어노테이션을 적용합니다. 필요한 속성을 설정하여 일대다 관계의 매핑을 정의합니다.
컬렉션 속성 설정: 일대다 관계에서 많은 엔티티를 저장하는 컬렉션 속성을 설정합니다. List, Set 등의 자바 컬렉션을 사용하여 연관된 엔티티들을 관리할 수 있습니다.
 
 

예제

다음은 Author 엔티티와 Book 엔티티 사이의 일대다 관계에서 @OneToMany 어노테이션을 사용하여 매핑한 예제입니다.
 
@Entity
public class Author {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;

    @OneToMany(mappedBy = "author")
    private List<Book> books;

    // Getter와 Setter 메소드 생략
}

@Entity
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String title;

    @ManyToOne
    @JoinColumn(name = "author_id")
    private Author author;

    // Getter와 Setter 메소드 생략
}
 
위의 예제에서는 Author 엔티티의 books 필드에 @OneToMany 어노테이션을 적용하여 일대다 관계를 설정했습니다. mappedBy 속성을 사용하여 연관 엔티티인 Book 엔티티의 author 필드와 매핑되었음을 지정합니다.
 

결론

@OneToMany 어노테이션은 JPA에서 일대다 관계를 매핑하기 위해 사용됩니다. 이를 통해 엔티티 간의 관계를 정의하고, 컬렉션을 통해 많은 엔티티를 관리할 수 있습니다. 적절한 설정을 통해 데이터베이스와의 관계를 유연하게 구성할 수 있으며, 애플리케이션의 데이터 관리를 효율적으로 처리할 수 있습니다.
 

댓글