inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 ORM 표준 JPA 프로그래밍 - 기본편

@JoinColumn 질문 :]

해결된 질문

410

relate16

작성한 질문수 29

0

아래처럼 연관관계 주인이 '다'(멤버 클래스)일 때를 보고

public class Member{

-생략-

@ManyToOne
@JoinColumn(name = "TEAM_ID")
private Team team;

-생략-

}

@JoinColumn이 처음엔 @JoinColumn이 적힌 곳의 클래스(테이블)의 Join할 컬럼을 지정하는구나 했는데,

연관관계 주인이 '일'(팀 클래스)일 때의 수업을 들으니까

public class Team {

@OneToMany
@JoinColumn(name = "TEAM_ID")
private List<Member> members = new ArrayList<>();

}

Team에서 JoinColumn을 했는데도

@JoinColumn이 적힌 곳의 클래스가 아닌,

MEMBER 테이블에서 TEAM_ID가 Join되는 걸 보니

그게 아닌 것 같더라구요. 

어떻게 받아들이면 좋을까요?

java JPA

답변 1

1

임세준

DB 테이블 기준으로 생각하시면 됩니다.
MEMBER 테이블의 외래키 TEAM_ID 컬럼을 선택하는거예요. 자바 클래스와는 무관합니다

0

김영한

세준님 감사합니다^^

0

relate16

앗 제가 질문을 좀 더 구체적으로 했어야 했는데,

@JoinColumn의 name속성에 대한 질문은 아니었고 

Team class{

-생략-

@OneToMany

@JoinColumn (name = "TEAM_ID") 

private List<Member> member= new ArrayList<>();

-생략-

}

에서@JoinColumn (name = "TEAM_ID")과

private List<Member> member= new ArrayList<>(); 와의 관계의 질문이었어요 ㅠㅠ

Member class{

-생략-

@ManyToOne
@JoinColumn(name = "TEAM_ID")
private Team team;

-생략-

}

이라면

답변주신 것처럼

"MEMBER 테이블의 외래키 TEAM_ID 컬럼을 선택하는거예요."

라고 이해할 때, 이땐 밑에 private Team team;이 있으니까

MEMBER테이블의 외래키로 조인하는 게 아닌,

TEAM 테이블의 외래키로 TEAM_ID컬럼을 조인해야 되는 거 아닌가 해서ㅠㅠ (물론 이것도 말이 안되네요 TEAM테이블에서 TEAM_ID는 PK이니까요 )

돌아와서 말하자면,

public class Team {

-생략-

@OneToMany
@JoinColumn(name = "TEAM_ID")
private List<Member> members = new ArrayList<>();

-생략-

}

과 같이 MEMBER에는 외래키를 지정해주지 않은 상태에서 팀클래스에서 JoinColumn을 했는데 

어떻게 DB의 MEMBER에 Team_ID가 join이 됐지 하는 생각이 들더라구요 . 

 

천천히 머리 굴려봤는데 

@OneToMany 때문에 가능한 것으로 이해했습니다. 

어차피 외래키는 DB상 Many쪽에 있으니까 

Many의 입장인 MEMBER가 외래키가 있는 걸로 인식해서 MEMBER에 Join을 해주는 설계가 있겠구나 하면서..  

맞게 이해한 거겠죠 ..? 답변감사합니다 ! 

0

김영한

네 맞습니다^^

0

relate16

감사합니다 ! :) 

벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?

0

28

2

inheritance startegy 선택시 고려사항

0

22

1

Entity 동등성 비교

0

21

1

실무 조언 관련 질문입니다.

0

47

1

H2데이터베이스 파일 생성

0

56

2

서브쿼리 강의에서 ALL 예시 관련 질문드립니다.

0

53

2

수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?

0

52

1

JPQL 메소드와 락

0

55

1

Delivery @OneToOne

0

60

1

17강 4~5분대 테이블 값 조회가 안됩니다.

0

94

2

UnsupportedOperationException 발생

0

86

3

H2 Database 연결이 안됩니다.

0

95

2

연관관계 매핑 질문드립니다.

0

85

2

h2데이터베이스 실행오류

0

108

2

persistence.xml

0

108

2

양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?

0

80

1

영속성 컨텍스트

0

66

1

JPA 프록시

0

96

1

Native Query와 MyBatis

0

70

1

영속성 컨텍스트는 어떤 메모리에 저장되는건가요?

0

87

1

임베디드 타입 예시 코드 관련 질문

0

115

3

명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요

0

95

3

인텔리제이 패키지 커서 단축키 질문

0

108

2

혹시 현재는 ID 데이터 타입이 String이면 안되나요?

0

145

1