ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring boot - 연관 관계 매핑
    공부/Spring 2023. 12. 6. 14:17

    *연관 관계 매핑 종류

    - 일대일(1 : 1) @OneToOne

    - 일대다(1 : N) @OneToMany

    - 다대일(N : 1) @ManyToOne

    - 다대다(N : M) @ManytoMany

     

    *방향성 : 테이블 관계는 항상 양방향 이지만 객체세서는 단방향 양방향이 존재한다

    단방향 : 한쪽에만 관계를 맺어 관계를 맺은 테이블에 정보를 Join해서 가져올 수 있다

    양방향 : 양쪽에서 모두 관계를 만들어 어느쪽에서 조회를 해도 Join해서 정보를 가져온다

    - 일대일 단방향

    Cart -> Member

        - Cart에 Member의 OnoToOne 관계를 만든다

        - Member는 변화 없다

        - Cart조회시 해당 Member의 정보를 가져올 수 있다

        -FetchType.EAGER, 즉시로딩 : 데이터를 조회할 때 매핑된 entity도 한번에 조회가 된다

     

     

    - 다대일 단방향

    cart(1) :  (N) cart_item (1) : (1) item

        - cart_item에 cart_id 와 item_id를 ManyToOne 관계를 만든다

     

    - 다대일/일대다 양방향 : 단뱡향 매핑이 2개가 있다고 생각하면 된다 단, 주인 관계설정이 추가 된다

    orders - > order_item = 1 : N

        - orders는 order_item을 여러게 가지고 있는 관계이다

        - order_item은 orders를 ManyToOne 관계를 만든다

        - orders는 order_item을 여러게 가가지게 되니 OneToMany 관계를 만든다 여기서는 mappedBy를 사용한다

    *연관 관계 주인 설정

    - 테이블 에서는 order_id를 외래키로 조인을 하면 모든 정보를 불러와 지는 양방향 조회가 된다

    - 하지만 엔티티는 다르다

    - 엔티티에서는 양방향 연관 관계 설정시 한쪽에 외래키 주인 설정을 해야한다

        *설정조건

        - 연관 관계의 주인은 외래키가 있는 곳으로 설정

        - 연관 관계의 주인이 외래기를 관리(등록, 수정, 삭제)

        - 주인이 아닌 쪽은 연관 관계 매핑 시 mappedBy 속성의 값으로 연관 관계의 주인을 설정

        - 주인이 아닌 쪽은 읽기 만 가능

    *주의사항

    무조건 양방향 연관 관계를 매핑하면 해당 엔티티에 많은 연관 관계를 맺게되어 클래스가 복잡해진다

    단뱡향 연결 후 필요시 양방향 추가 권

     

    - 다대다는 일대다 다대일 관계로 풀어낸다

     

     

     

    '공부 > Spring' 카테고리의 다른 글

    Spring boot - 지연 로딩  (0) 2023.12.06
    Spring boot - 영속성 전이(cascade)  (0) 2023.12.06
    Spring boot - 권한  (0) 2023.12.05
    Spring boot - Querydsl  (0) 2023.11.27
    Spring boot - JPA - 쿼리 메소드, JPQL snippet  (0) 2023.11.11

    댓글

Designed by Tistory.