inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

값 타입 컬렉션

2분24초

378

alrnr3521

작성한 질문수 107

1

FAVORITE_FOOD랑 ADDRESS에서
MEMBER_ID가 FK인건 알겠는데 어떻게 PK가 되는거죠?
@JoinColumn으로 외래키랑 매핑하는건 알겠는데
MEMBER_ID가 PK 되는 과정이 궁금합니다.

java JPA

답변 1

0

김영한

안녕하세요. alrnr3521님

데이터베이스 테이블에는 항상 PK가 필요합니다.

예를 들어서 FAVORITE_FOOD에서 MEMBER_ID를 PK로 잡지 않으면 FOOD_NAME만 PK로 잡게 되는데요. 이렇게 되면 다른 사용자는 같은 음식 이름을 가질 수 없겠지요?

혹시 관련 내용이 잘 이해가 되지 않으면 데이터베이스 기본에 대한 학습이 필요합니다.

도움이 되셨길 바래요^^

0

alrnr3521

근데 7분39초에 보면 Member테이블은 아래에 primary key (MEMBER_ID)로 PK가 생성됐는데 FAVORITE_FOOD는 PK를 언제잡는건가요?

0

언시박수박두레박이명박산다라박

안녕하세요~ 제 생각에 영한님 말씀을 정리하자면 일단 하나의 테이블은 하나의 pk만 들고 있을 수 있어요. 근데 하나의 칼럼이 하나의 pk가 되는 건 아니에요. 2개의 칼럼이 조합되어서 하나의 pk로 쓰일 수 있거든요

create table test(
id int auto_increment,
food varchar(255),
constraint test_PK primary key(id,food)
)

이렇게 말이죠

이렇게 되었을 땐 아이디 + 음식 = 하나의 pk로 잡혀서 여러 유저의 음식 이름이 중복 되어도 아이디 값이 다르니 값이 허용 되는거에요. 음식 이름으로만 pk를 잡으면(테이블은 하나의 pk를 무조건 들고 있어야 함 ) 서로 다른 유저가 같은 음식을 좋아할 수 없겠지요.

근데 jpa 로 쿼리를 날려보면 이렇게 pk를 설정하는 부분은 보이지 않아요 이건 따로 ddl에서 설정을 해야해요.

0

alrnr3521

아 그렇군요 저는 jpa에서 자동으로 해주는 건줄 알았습니다 ㅎㅎ 답변 감사합니다!

0

김영한

시언 박님 답변 감사합니다^^

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

0

58

2

inheritance startegy 선택시 고려사항

0

42

1

Entity 동등성 비교

0

47

1

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

0

68

1

H2데이터베이스 파일 생성

0

78

2

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

0

70

2

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

0

63

1

JPQL 메소드와 락

0

63

1

Delivery @OneToOne

0

71

1

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

0

104

2

UnsupportedOperationException 발생

0

97

3

H2 Database 연결이 안됩니다.

0

103

2

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

0

95

2

h2데이터베이스 실행오류

0

116

2

persistence.xml

0

121

2

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

0

90

1

영속성 컨텍스트

0

77

1

JPA 프록시

0

107

1

Native Query와 MyBatis

0

83

1

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

0

97

1

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

0

126

3

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

0

103

3

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

0

113

2

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

0

156

1