작성
·
471
·
수정됨
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 인턴이에요.
@JoinTable 애노테이션에는 joinColumns와 inverseJoinColumns 두 가지 옵션이 있습니다. 이 두 옵션은 외래키를 지정하는 방식에 차이가 있습니다. joinColumns는 현재 엔티티를 참조하는 외래키이고, inverseJoinColumns는 연결된 엔티티를 참조하는 외래키입니다.
따라서, 이 두 옵션을 서로 다르게 선언해도 문제 없이 사용할 수 있습니다. 그리고 순서를 달리해서 지정해도 두 컬럼의 순서는 인덱스에만 영향을 주며 데이터 조회 결과에는 영향을 미치지 않습니다.
선생님께서 선언하신 순서는 따로 기준이 있을 것으로 예상되지만, 이 부분은 강의나 문서 등에서 설명되어 있을 것입니다. 따라서, 관련 자료를 찾아보시는 것이 좋을 것 같습니다.
그리고 추가로, JOIN TABLE과 관련된 ORM 매핑에 대한 내용은 JPA 혹은 Hibernate와 같은 ORM 프레임워크에 대한 개념을 이해한 후에야 정확히 이해할 수 있기 때문에, 이 부분도 함께 공부하시면 좋을 것 같습니다.
해당 내용이 도움이 되었기를 바랍니다. 감사합니다.