스프링에서 엔티티 간의 관계를 매핑하기 위해 다양한 어노테이션을 제공합니다. 그 중에서도 @ManyToOne 어노테이션은 다대일(N:1) 관계를 매핑할 때 사용됩니다. @ManyToOne 어노테이션의 기능과 사용법에 대해 알아보겠습니다.
@ManyToOne 어노테이션의 기능
@ManyToOne 어노테이션은 다음과 같은 기능을 제공합니다.
다대일(N:1) 관계 매핑: @ManyToOne 어노테이션은 엔티티 간의 다대일 관계를 매핑할 때 사용됩니다. 즉, 한 쪽 엔티티가 다른 쪽 엔티티를 참조하는 관계를 표현할 수 있습니다.
외래 키(Foreign Key) 매핑: @ManyToOne 어노테이션은 외래 키(Foreign Key) 매핑을 자동으로 처리합니다. 연관된 엔티티의 기본 키(primary key)를 참조하여 외래 키를 생성하고 관리합니다.
지연 로딩(Proxy) 지원: @ManyToOne 어노테이션은 기본적으로 지연 로딩(Lazy Loading)을 지원합니다. 연관된 엔티티를 필요로 할 때까지 데이터베이스에서 로딩하지 않으며, 프록시(Proxy) 객체를 사용하여 필요한 시점에 로딩됩니다.
@ManyToOne 어노테이션 사용법
@ManyToOne 어노테이션을 사용하기 위해 다음과 같은 단계를 따릅니다.
연관 엔티티 클래스 생성: 관계를 맺을 다른 엔티티 클래스를 생성합니다.
@ManyToOne 어노테이션 적용: 다대일 관계를 맺을 필드에 @ManyToOne 어노테이션을 적용합니다. 필요한 속성을 설정하여 연관 엔티티와의 매핑을 정의합니다.
외래 키(Foreign Key) 설정: @JoinColumn 어노테이션을 사용하여 외래 키의 속성을 지정합니다. name 속성을 통해 외래 키의 컬럼명을 설정할 수 있습니다.
예제
다음은 Order 엔티티와 Customer 엔티티 사이의 다대일 관계를 @ManyToOne 어노테이션을 사용하여 매핑한 예제입니다.
@Entity
@Table(name = "orders")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// 다대일 관계 매핑
@ManyToOne
@JoinColumn(name = "customer_id")
private Customer customer;
// Getter와 Setter 메소드 생략
}
@Entity
@Table(name = "customers")
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// Getter와 Setter 메소드 생략
}
위의 예제에서는 Order 엔티티의 customer 필드에 @ManyToOne 어노테이션을 적용하여 다대일 관계를 매핑했습니다. @JoinColumn 어노테이션을 사용하여 customer_id 컬럼을 외래 키로 설정하였습니다.
결론
@ManyToOne 어노테이션은 스프링에서 다대일 관계를 매핑할 때 사용되며, 외래 키 매핑과 지연 로딩을 자동으로 처리해줍니다. 이를 통해 엔티티 간의 관계를 효과적으로 구성할 수 있고, 데이터베이스 연동을 용이하게 할 수 있습니다. 앞서 소개한 예제를 참고하여 다대일 관계를 적절히 활용해보세요.
'IT > spring' 카테고리의 다른 글
JPA @OneToMany 어노테이션 (0) | 2023.07.05 |
---|---|
스프링 @JoinColumn 어노테이션 (0) | 2023.07.04 |
스프링 QueryDSL (0) | 2023.07.04 |
스프링 @Query 어노테이션 (0) | 2023.07.04 |
스프링 데이터 JPA (0) | 2023.07.04 |
댓글