[JPA] @mappedBy 연관관계 주인

yookyungmin·2023년 4월 27일
0

백엔드 api 개발 프로젝트를 진행하면서 jpa를 멘땅에 헤딩으로 공부를 하고 있다.

양방향 매핑 관계에선 @mappedBY가 필수적으로 필요하다

양방향 매핑이란?

  • 양방향 매핑이란 두 객체가 서로 참조해야 하는 상황에서 정의하는 연관관계 방식이다

mappedBy란

  • 객체의 양방향 연관관계를 맺을때 관계의 주인을 설정할떄 사용하게 된다.
  • 연관관계의 주인만이 데이터베이스 연관관계와 매핑되
    고 외래 키를 관리(등록, 수정. 삭제할 수 있다. 반면에 주인이 아닌 쪽은 읽기만 할 수 있다.
  • FK를 관리하게 되는 엔티티가 연관관계의 주인이 된다는 말이다.

StudyComment

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class StudyComment {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @ManyToOne
    private Study study;
    }

study class

@Entity
@Getter
@NoArgsConstructor(access = PROTECTED)
public class Study {
    @Id
    @GeneratedValue(strategy = IDENTITY)
    private Long id;
    private String name;
    @OneToMany(mappedBy = "study")
    private final List<StudyComment> comments = new ArrayList<>();
  }

위의 코드를 보면 StudyComment가 연관관계의 주인이 되는것이다

참고 // 데이터베이스 테이블의 다대일, 일대다 관계에서는 항상 다 쪽이 외래 키를 가진다. 다 쪽
인 @ManyToOne은 항상 연관관계의 주인이 되므로 mappedBy를 설정할 수 없다. 따라서
@ManyToOne에는 mappedBy 속성이 없다.

0개의 댓글