@JoinColumn 질문 :]
아래처럼 연관관계 주인이 '다'(멤버 클래스)일 때를 보고
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되는 걸 보니
그게 아닌 것 같더라구요.
어떻게 받아들이면 좋을까요?
답변 1
1
DB 테이블 기준으로 생각하시면 됩니다.
MEMBER 테이블의 외래키 TEAM_ID 컬럼을 선택하는거예요. 자바 클래스와는 무관합니다
0
앗 제가 질문을 좀 더 구체적으로 했어야 했는데,
@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을 해주는 설계가 있겠구나 하면서..
맞게 이해한 거겠죠 ..? 답변감사합니다 !
벌크연산에서 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





