스프링에서 엔티티 간의 관계를 매핑하기 위해 다양한 어노테이션을 제공합니다. 그 중에서도 @JoinColumn 어노테이션은 외래 키(Foreign Key) 매핑을 세부적으로 설정할 때 사용됩니다. @JoinColumn 어노테이션의 기능과 사용법에 대해 알아보겠습니다.
@JoinColumn 어노테이션의 기능
@JoinColumn 어노테이션은 다음과 같은 기능을 제공합니다.
외래 키(Foreign Key) 매핑: @JoinColumn 어노테이션은 엔티티 간의 관계에서 외래 키(Foreign Key)를 매핑할 때 사용됩니다. 외래 키 컬럼과 참조하는 컬럼을 매핑하여 연관 엔티티 간의 관계를 구성합니다.
컬럼 속성 설정: @JoinColumn 어노테이션을 사용하여 외래 키의 컬럼 속성을 설정할 수 있습니다. 컬럼명, 길이, NULL 허용 여부 등을 세부적으로 정의할 수 있습니다.
@JoinColumn 어노테이션 사용법
@JoinColumn 어노테이션을 사용하기 위해 다음과 같은 단계를 따릅니다.
- 연관 엔티티 클래스 생성: 관계를 맺을 다른 엔티티 클래스를 생성합니다.
- @ManyToOne 어노테이션 적용: 다대일 관계를 맺을 필드에 @ManyToOne 어노테이션을 적용합니다.
- @JoinColumn 어노테이션 적용: @ManyToOne 어노테이션과 함께 @JoinColumn 어노테이션을 적용합니다. 필요한 속성을 설정하여 외래 키의 매핑을 정의합니다.
예제
다음은 Order 엔티티와 Customer 엔티티 사이의 다대일 관계에서 @JoinColumn 어노테이션을 사용하여 외래 키 매핑한 예제입니다.
@Entity
@Table(name = "orders")
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// 다대일 관계 매핑
@ManyToOne
@JoinColumn(name = "customer_id", referencedColumnName = "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 어노테이션을 적용하여 외래 키 매핑을 설정했습니다. name 속성을 사용하여 외래 키 컬럼명을 지정하였으며, referencedColumnName 속성을 사용하여 참조하는 컬럼을 지정하였습니다.
결론
@JoinColumn 어노테이션은 스프링에서 엔티티 간의 관계를 매핑할 때 사용되며, 외래 키의 매핑을 세부적으로 설정할 수 있습니다. 이를 통해 데이터베이스에서의 관계를 유연하게 구성할 수 있으며, 데이터베이스 연동 작업을 효율적으로 처리할 수 있습니다.
'IT > spring' 카테고리의 다른 글
@OneToMany vs @ManyToOne: JPA 관계 매핑의 차이 (0) | 2023.07.05 |
---|---|
JPA @OneToMany 어노테이션 (0) | 2023.07.05 |
스프링 @ManyToOne 어노테이션 (0) | 2023.07.04 |
스프링 QueryDSL (0) | 2023.07.04 |
스프링 @Query 어노테이션 (0) | 2023.07.04 |
댓글