연관관계

Shaun·2021년 8월 29일
1

JPA

목록 보기
6/31

엔티티를 만들때 마다 너무 헷갈려서 한번 정리한다. 이건 왜이리 헷갈리는지...

연관관계 주인

  • 테이블은 외래키 하나로 두테이블이 연관관계를 맺는다.

  • 객체는 양방향 관계 참조가 2군데(사실 양방향이란거 없고 단방향 2개이다)

  • 그러므로 객체에서는 누가 외래키를 관리할지 정해준다.(연관관계 주인)

  • 주인의 반대편은 외래키에 영향을 주지않고 단수조회만 한다

1.다대일(단방향)

  • 다대일 을 할떄 '다' 쪽에 외래키가 가야한다

1-1 다대일(양방향)

  • 반대쪽에서 추가한다하더라도 테이블에 전혀 영향을 주지 않는다 fk는(주인)이관리를 하므로...

  • 반대쪽에는 mapped by 를 꼭 써줘야 한다**


2.일대다(단방향)

  • 일대다 에서는 일 이 연관관계 주인이다

  • 테이블 일대다 관계는 항상 다 쪽에 fk가 있다.

  • 객체와 테이블의 차이 떄문에 반대편 테이블의 외래 키를 관리하는 특이한 구조

  • 일이 연관관계 주인이지만 테이블 일대다 관계는 항상 다쪽에 외래키가 있다== 기본적으로 엊갈리는 형태

  • 일대다 단방향보다는 다대일 양방향을 권장

일대다 (단방향, 양방향) 은 복잡하기도 하고 문제도 많다. 일대다 양방향은 공식적으로 지원하지도 않는 기능이다. 그러므로 될수 있으면 다대일(단방향, 앙방향) 을 사용하자.

3.일대일(단방향)

  • 주 테이블이나 대상 테이블 중에 외래키 선택 가능 (외래키 양쪽어느쪽이든 가능) == FK가 유동적이다.

  • 외래 키에 데이터베이스 유니크(UNI) 제약조건 추가

  • 다대일 (단방향) 과 비슷함

  • 다대일 양방향 매핑 처럼 외래 키가 있는 곳이 연관관계의 주인

  • 다대일 단방향,양방향처럼 oneToOne 써주고 각각 Joincolumn/ mappedby

3-1 일대일 (양방향)

  • 반대편은 mappedBy 적용 (읽기전용 이된다)

애노테이션밑에 JoinColumn / mapped by 잊지말자

profile
호주쉐프에서 개발자까지..

0개의 댓글