JPA(Java Persistence API)에서는 엔티티 간의 관계를 매핑하기 위해 다양한 어노테이션을 제공합니다. @OneToMany와 @ManyToOne 어노테이션의 차이에 대해 알아보겠습니다. 두 어노테이션은 엔티티 간의 다대일 관계를 매핑할 때 사용되며, 각각의 특징과 사용법을 알아보겠습니다.
@OneToMany 어노테이션
- 기능: @OneToMany 어노테이션은 한 엔티티가 다른 엔티티와 일대다 관계를 맺을 때 사용됩니다.
- 컬렉션 속성: @OneToMany 어노테이션을 사용하여 일대다 관계에서 많은 엔티티를 저장하는 컬렉션 속성을 설정할 수 있습니다.
- 예시: Author 엔티티가 여러 개의 Book 엔티티와 일대다 관계를 맺을 때 @OneToMany 어노테이션을 사용합니다.
@ManyToOne 어노테이션
- 기능: @ManyToOne 어노테이션은 다른 엔티티와의 다대일 관계를 매핑할 때 사용됩니다.
- 단일 필드 설정: @ManyToOne 어노테이션을 사용하여 다대일 관계에서 다른 엔티티를 단일 필드로 설정할 수 있습니다.
- 예시: Book 엔티티가 하나의 Author 엔티티와 다대일 관계를 맺을 때 @ManyToOne 어노테이션을 사용합니다.
예제
다음은 Author 엔티티와 Book 엔티티 사이의 관계를 보여주는 예제입니다.
@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 엔티티는 @OneToMany 어노테이션을 사용하여 여러 개의 Book 엔티티와 일대다 관계를 맺습니다. 반면 Book 엔티티는 @ManyToOne 어노테이션을 사용하여 하나의 Author 엔티티와 다대일 관계를 맺습니다.
결론
@OneToMany와 @ManyToOne 어노테이션은 JPA에서 엔티티 간의 다대일 관계를 매핑하는 데 사용됩니다. @OneToMany는 일대다 관계에서 많은 엔티티를 저장하는 컬렉션 속성을 설정하며, @ManyToOne은 다대일 관계에서 다른 엔티티를 단일 필드로 설정합니다. 이를 통해 데이터베이스의 관계를 정의하고, 엔티티 간의 관계를 유연하게 처리할 수 있습니다.
'IT > spring' 카테고리의 다른 글
@SpringBootTest 어노테이션: 스프링 부트 테스트 (0) | 2023.07.05 |
---|---|
@RunWith 어노테이션: JUnit 테스트 실행 방식 지정 (0) | 2023.07.05 |
JPA @OneToMany 어노테이션 (0) | 2023.07.05 |
스프링 @JoinColumn 어노테이션 (0) | 2023.07.04 |
스프링 @ManyToOne 어노테이션 (0) | 2023.07.04 |
댓글