인프런 커뮤니티 질문&답변

dongju님의 프로필 이미지
dongju

작성한 질문수

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

양방향 연관관계와 연관관계의 주인 2 - 주의점, 정리

엔티티와 컬럼 생성 기준

작성

·

327

1

안녕하세요. 연관관계 주인이 아닌 List로 구현된 members에서 궁금한 점이 있습니다.

먼저 지금까지 이해한 바로는, @Entity 애노테이션과 ddl-auto 속성에 의해서 @Entity를 가진 클래스의 필드들이 해당 테이블의 attribute로 만들어지는 것으로 이해했습니다.

1. @Column이 DB 테이블의 실제 컬럼 이름과 매핑을 짓는 용도라고 이해했는데 @Column을 생략해도 DB상에 해당 컬럼이 생성된 것을 확인했습니다. 이 경우, 컬럼은 생성됐지만 매핑은 이루어지지 않은건가요?

2. Team 클래스의 members 어레이리스트는 Team 테이블의 attribute로 등록되지 않는 이유가 뭔가요? 물론, 데이터베이스 상에서 하나의 attribute에 하나의 값을 가져야 하는건 맞지만 이게 컬렉션으로 구현된 필드는 JPA에서 자동으로 attribute이 아니라고 인식하는 건가요?

답변 1

0

안녕하세요. dongju님, 공식 서포터즈 David입니다.
.

1. @Column을 명시하고 name 속성에 값을 주면 해당 값이 생성되는 칼럼명이 됩니다. 만약 자동으로 생성되는 칼럼명을 쓰고 싶다면 @Column을 생략하셔도 됩니다.

2. 해당 강의 초반부(4분 이전)를 참고하시면 설명하시는데, Team의 members는 연관관계의 주인이 아닌 엔티티에 읽기전용으로 사용되며 JPA는 members를 참고하여 칼럼을 생성하지 않습니다. Member의 Team을 보고 연관관계의 키가 되는 칼럼을 생성합니다.

.
감사합니다.

dongju님의 프로필 이미지
dongju
질문자

답변 감사합니다!

2번 질문에서 추가 질문해도 될까요??

JPA가 members를 참고하여 컬럼을 생성하지 않는다고 하셨는데 정확히 어떤 걸 참고하는 건가요? @xxxToMany에 의한건지, mappedBy에 의한건지 이해가 잘 안됩니다..

위에 설명드렸듯이

연관관계의 주인인 Member의 Team을 참고합니다

dongju님의 프로필 이미지
dongju

작성한 질문수

질문하기