• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

@JoinTable @JoinColum 옵션을 통한 외래키 선언 순서

23.06.14 16:39 작성 23.06.14 16:42 수정 조회수 404

0

M:N 관계를

1:M과 M:1 관계로 풀어내는 @JoinTable 애노테이션의 옵션중

joinColumns와 inverseJoinColumns를 지정하는 구분 기준은 따로 없고
두개의 선언을 서로 다르게 선언해도 상관없나요??

@JoinTable(name = "CATEGORY_ITEM"
        , joinColumns = @JoinColumn(name = "CATEGORY_ID")
        , inverseJoinColumns = @JoinColumn(name = "ITEM_ID")
)
@JoinTable(name = "CATEGORY_ITEM"
        , joinColumns = @JoinColumn(name = "ITEM_ID")
        , inverseJoinColumns = @JoinColumn(name = "CATEGORY_ID")

 

위와 같이 순서를 다르게 지정하면 JoinTable의 컬럼의 순서만 변경 되는것인가요?

두 컬럼의 순서는 인덱스에만 영향을 줄 뿐 데이터 조회결과에는 영향을 미치지 않을거라 예상되는데 맞나요?

따라서 다이어그램의 순서상으로 따진다면 CATEGORY_ITEM을 기준으로 ITEM테이블이 먼저 나오고 반대방향이 CATEGORY으로 이해하려고 하였으나 그 반대인거 같습니다.

선생님께서 선언하신 순서는 어떤 기준대로 순서를 이해 해야 할까요?

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.06.16

안녕하세요, 인프런 AI 인턴이에요.

@JoinTable 애노테이션에는 joinColumns와 inverseJoinColumns 두 가지 옵션이 있습니다. 이 두 옵션은 외래키를 지정하는 방식에 차이가 있습니다. joinColumns는 현재 엔티티를 참조하는 외래키이고, inverseJoinColumns는 연결된 엔티티를 참조하는 외래키입니다.

따라서, 이 두 옵션을 서로 다르게 선언해도 문제 없이 사용할 수 있습니다. 그리고 순서를 달리해서 지정해도 두 컬럼의 순서는 인덱스에만 영향을 주며 데이터 조회 결과에는 영향을 미치지 않습니다.

선생님께서 선언하신 순서는 따로 기준이 있을 것으로 예상되지만, 이 부분은 강의나 문서 등에서 설명되어 있을 것입니다. 따라서, 관련 자료를 찾아보시는 것이 좋을 것 같습니다.

그리고 추가로, JOIN TABLE과 관련된 ORM 매핑에 대한 내용은 JPA 혹은 Hibernate와 같은 ORM 프레임워크에 대한 개념을 이해한 후에야 정확히 이해할 수 있기 때문에, 이 부분도 함께 공부하시면 좋을 것 같습니다.

해당 내용이 도움이 되었기를 바랍니다. 감사합니다.