작성
·
118
1
@ManyToOne, @JoinColumn에 대해 학습하면서 이해가 잘 되지않아 구글링이나 chatGPT와 같은 AI를 통해 아래와 같이 정리했는데요. 이렇게 이해하면 될까요? 제가 올바르게 이해한것이 맞는지 궁금합니다..
JoinColumn에는 매핑할 외래 키 컬럼 이름을 적는다. 테이블에서 외래키로 사용될 컬럼이름을 적는다. Member 엔티티의 team이랑 MEMBER 테이블의 외래키 컬럼(TEAM_ID)을 서로 매핑해줘야 MEMBER 테이블의 외래키(TEAM_ID)를 통해서 Team을 가지고 올 수 있다.
@JoinColumn을 통해 MEMBER테이블의 외래키 컬럼 이름이 TEAM_ID임을 명시하고,@ManyToOne 을 통해 Team엔티티와의 관계를 정의한다.
즉, @JoinColumn과 ManyToOne을 통해 Member엔티티와 Team엔티티의 관계를 정의한다.
JPA는 Team엔티티에서 @Id로 설정된 필드를 확인하고, 해당 필드가 Team엔티티의 기본키임을 알게된다. 그리고 JPA는 Member테이블의 외래키와 Team테이블의 기본키를 매핑해서 외래키-기본키 관계를 설정한다.
Member엔티티의 필드에는 Team team이 있지만 db에는 객체를 저장할 수 없으므로
Member엔티티를 em.persist()로 저장할떈, db에 team 객체가 아니라 @JoinColumn으로 명시했던 외래키가 저장된다. 이때 Team엔티티에서 @Id로 설정된 필드의 값이 저장된다.
member.getTeam()을 할때도 MEMBER 테이블의 TEAM_ID를 사용해 Team엔티티 데이터를 가져올수있다. @JoinColumn으로 명시했던 외래키 값으로 TEAM테이블을 조회해서 TEAM객체를 생성해서 리턴한다.
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 오리쉐리님.
JPA에서 @ManyToOne과 @JoinColumn에 대한 개념을 잘 정리해주셨습니다. 주신 내용에 추가적으로 몇 가지 설명을 드리자면:
@JoinColumn:
@ManyToOne:
영속성 및 데이터베이스 연산:
다음 유사 질문의 답변들이 도움이 될 것입니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.