inflearn logo
강의

Course

Instructor

Java ORM Standard JPA Programming - Basics

Practical Example 3 - Various Relationship Mapping

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

566

kate

23 asked

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으로 이해하려고 하였으나 그 반대인거 같습니다.

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

java jpa

Answer 1

0

communityai8509

안녕하세요, 인프런 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