@JoinTable @JoinColum 옵션을 통한 외래키 선언 순서
566
23 asked
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으로 이해하려고 하였으나 그 반대인거 같습니다.
선생님께서 선언하신 순서는 어떤 기준대로 순서를 이해 해야 할까요?
Answer 1
0
안녕하세요, 인프런 AI 인턴이에요.
@JoinTable 애노테이션에는 joinColumns와 inverseJoinColumns 두 가지 옵션이 있습니다. 이 두 옵션은 외래키를 지정하는 방식에 차이가 있습니다. joinColumns는 현재 엔티티를 참조하는 외래키이고, inverseJoinColumns는 연결된 엔티티를 참조하는 외래키입니다.
따라서, 이 두 옵션을 서로 다르게 선언해도 문제 없이 사용할 수 있습니다. 그리고 순서를 달리해서 지정해도 두 컬럼의 순서는 인덱스에만 영향을 주며 데이터 조회 결과에는 영향을 미치지 않습니다.
선생님께서 선언하신 순서는 따로 기준이 있을 것으로 예상되지만, 이 부분은 강의나 문서 등에서 설명되어 있을 것입니다. 따라서, 관련 자료를 찾아보시는 것이 좋을 것 같습니다.
그리고 추가로, JOIN TABLE과 관련된 ORM 매핑에 대한 내용은 JPA 혹은 Hibernate와 같은 ORM 프레임워크에 대한 개념을 이해한 후에야 정확히 이해할 수 있기 때문에, 이 부분도 함께 공부하시면 좋을 것 같습니다.
해당 내용이 도움이 되었기를 바랍니다. 감사합니다.
실무 조언 관련 질문입니다.
0
41
1
H2데이터베이스 파일 생성
0
51
2
서브쿼리 강의에서 ALL 예시 관련 질문드립니다.
0
49
2
수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?
0
48
1
JPQL 메소드와 락
0
52
1
Delivery @OneToOne
0
57
1
17강 4~5분대 테이블 값 조회가 안됩니다.
0
89
2
UnsupportedOperationException 발생
0
82
3
H2 Database 연결이 안됩니다.
0
88
2
연관관계 매핑 질문드립니다.
0
82
2
h2데이터베이스 실행오류
0
105
2
persistence.xml
0
103
2
양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?
0
77
1
영속성 컨텍스트
0
62
1
JPA 프록시
0
89
1
Native Query와 MyBatis
0
63
1
영속성 컨텍스트는 어떤 메모리에 저장되는건가요?
0
82
1
임베디드 타입 예시 코드 관련 질문
0
112
3
명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요
0
90
3
인텔리제이 패키지 커서 단축키 질문
0
106
2
혹시 현재는 ID 데이터 타입이 String이면 안되나요?
0
136
1
양방향 연관관계 시 연관관계 주인을 설정하는 이유
0
68
1
임베디드 타입과 MappedSuperClass의 차이점이 궁금합니다.
0
95
1
데이터베이스가 초기화되는 것 같아요
1
177
2

