본문 바로가기
IT/spring

스프링 @JoinColumn 어노테이션

by 뉴코딩맨 2023. 7. 4.
스프링에서 엔티티 간의 관계를 매핑하기 위해 다양한 어노테이션을 제공합니다. 그 중에서도 @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

댓글