강의

멘토링

로드맵

Inflearn brand logo image

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

오리쉐리님의 프로필 이미지
오리쉐리

작성한 질문수

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

단방향 연관관계

@ManyToOne, @JoinColumn질문드립니다.

작성

·

118

1

@ManyToOne, @JoinColumn에 대해 학습하면서 이해가 잘 되지않아 구글링이나 chatGPT와 같은 AI를 통해 아래와 같이 정리했는데요. 이렇게 이해하면 될까요? 제가 올바르게 이해한것이 맞는지 궁금합니다..

 

  1. JoinColumn에는 매핑할 외래 키 컬럼 이름을 적는다. 테이블에서 외래키로 사용될 컬럼이름을 적는다. Member 엔티티의 team이랑 MEMBER 테이블의 외래키 컬럼(TEAM_ID)을 서로 매핑해줘야 MEMBER 테이블의 외래키(TEAM_ID)를 통해서 Team을 가지고 올 수 있다.

  2. @JoinColumn을 통해 MEMBER테이블의 외래키 컬럼 이름이 TEAM_ID임을 명시하고,@ManyToOne 을 통해 Team엔티티와의 관계를 정의한다.

    즉, @JoinColumn과 ManyToOne을 통해 Member엔티티와 Team엔티티의 관계를 정의한다.

    JPA는 Team엔티티에서 @Id로 설정된 필드를 확인하고, 해당 필드가 Team엔티티의 기본키임을 알게된다. 그리고 JPA는 Member테이블의 외래키와 Team테이블의 기본키를 매핑해서 외래키-기본키 관계를 설정한다.

  3. 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에 대한 개념을 잘 정리해주셨습니다. 주신 내용에 추가적으로 몇 가지 설명을 드리자면:

  1. @JoinColumn:

    • @JoinColumn은 관계를 정의할 때 사용되며, 이 외래 키(Foreign Key)가 MEMBER 테이블에서 TEAM_ID로 역할을 한다는 것을 명시합니다. 이 설정을 통해 JPA는 외래 키를 통해 관련된 엔티티(T_TEAM)를 조회할 수 있게 됩니다.
  2. @ManyToOne:

    • @ManyToOne은 MEMBER 엔티티에서 TEAM 엔티티와의 관계가 다대일(N:1)임을 명시합니다. 이는 데이터베이스 레벨에서의 관계뿐만 아니라, 객체지향적으로도 관계를 정의해줍니다.
  3. 영속성 및 데이터베이스 연산:

    • 설명해주신 것처럼, JPA는 객체를 데이터베이스에 저장할 때 객체의 외래 키 필드를 데이터베이스의 외래 키 컬럼(TEAM_ID)로 변환하여 저장합니다.
    • 또한, JPA는 MEMBER 테이블의 TEAM_ID 값을 이용해 TEAM 테이블에서 해당 엔티티를 조회합니다.

다음 유사 질문의 답변들이 도움이 될 것입니다:

  1. 엔티티 매핑 관련 질문

    • 일대다 매핑과 외래 키 생성에 관한 내용이 포함되어 있습니다.
  2. @JoinColumn 애노테이션 질문

    • 외래 키를 통한 엔티티 매핑의 개념을 이해하는 데 도움이 될 질문입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

오리쉐리님의 프로필 이미지
오리쉐리

작성한 질문수

질문하기