Spring 숙련 2주차 (2)

신성훈·2024년 5월 28일

TIL

목록 보기
26/162
post-thumbnail

오늘의 학습 키워드

  • Entity 연관관계
  • 1 대 1 관계
  • N 대 1 관계

Entity 연관관계

  • 연관 관계를 매핑할 때, 생각해야 할 것은 크게 3가지가 있습니다.
    -방향 : 단방향, 양방향 (객체 참조)
    -연관 관계의 주인 : 양방향일 때, 연관 관계에서 관리 주체
    -다중성 : 일대일(1:1), 다대일(N:1), 일대다(1:N), , 다대다(N:M)

-데이터베이스 테이블은 외래 키 하나로 양 쪽 테이블 조인이 가능하다.
->객체는 참조용 필드가 있는 객체만 다른 객체를 참조하는 것이 가능하다.
->두 객체 사이에 하나의 객체만 참조용 필드를 갖고 참조하면 단방향 관계, 두 객체 모두가 각각 참조용 필드를 갖고 참조하면 양방향 관계라고 한다.

1 대 1 관계

  • @OneToOne
    -1 대 1 관계를 맺어주는 역할

  • 단방향 관계
    -외래키의 주인 설정

    • Entity에서 외래 키의 주인은 일반적으로 N(다)의 관계인 Entity 이지만 1 대 1 관계에서는 외래 키의 주인을 직접 지정해야한다.
      -> 외래 키 주인만이 외래 키 를 등록, 수정, 삭제할 수 있으며, 주인이 아닌 쪽은 오직 외래 키를 읽기만 가능
    • @JoinColumn()은 외래 키의 주인이 활용하는 애너테이션
      - 컬럼명, null 여부, unique 여부 등을 지정할 수 있다.
      @OneToOne
      @JoinColumn(name = "컬럼")
  • 양방향 관계
    -양방향 설정

    • 양방향 관계에서 외래 키의 주인을 지정해 줄 때 @mappedBy 옵션을 사용
      -> @mappedBy의 속성값은 외래 키의 주인인 상대 Entity의 필드명을 의미

N 대 1 관계

  • @ManyToOne
    -N 대 1 관계를 맺어주는 역할

  • 단방향 관계
    -외래키의 주인을 설정

    @ManyToOne
    @JoinColumn(name = "컬럼")
  • 양방향 관계
    -외래키의 주인을 설정

    @ManyToOne
    @JoinColumn(name = "컬럼")

    -다른 테이블의 @mappedBy 옵션을 사용

    @OneToMany(mappedBy = "상대 Entity의 필드명")
    private List<> List = new ArrayList<>();
profile
조급해하지 말고, 흐름을 만들고, 기록하면서 쌓아가자.

0개의 댓글