엔티티를 만들때 마다 너무 헷갈려서 한번 정리한다. 이건 왜이리 헷갈리는지...
테이블은 외래키 하나로 두테이블이 연관관계를 맺는다.
객체는 양방향 관계 참조가 2군데(사실 양방향이란거 없고 단방향 2개이다)
그러므로 객체에서는 누가 외래키를 관리할지 정해준다.(연관관계 주인)
주인의 반대편은 외래키에 영향을 주지않고 단수조회만 한다
반대쪽에서 추가한다하더라도 테이블에 전혀 영향을 주지 않는다 fk는(주인)이관리를 하므로...
반대쪽에는 mapped by 를 꼭 써줘야 한다**
일대다 에서는 일 이 연관관계 주인이다
테이블 일대다 관계는 항상 다 쪽에 fk가 있다.
객체와 테이블의 차이 떄문에 반대편 테이블의 외래 키를 관리하는 특이한 구조
일이 연관관계 주인이지만 테이블 일대다 관계는 항상 다쪽에 외래키가 있다== 기본적으로 엊갈리는 형태
일대다 단방향보다는 다대일 양방향을 권장
일대다 (단방향, 양방향) 은 복잡하기도 하고 문제도 많다. 일대다 양방향은 공식적으로 지원하지도 않는 기능이다. 그러므로 될수 있으면 다대일(단방향, 앙방향) 을 사용하자.
주 테이블이나 대상 테이블 중에 외래키 선택 가능 (외래키 양쪽어느쪽이든 가능) == FK가 유동적이다.
외래 키에 데이터베이스 유니크(UNI) 제약조건 추가
다대일 (단방향) 과 비슷함
다대일 양방향 매핑 처럼 외래 키가 있는 곳이 연관관계의 주인
다대일 단방향,양방향처럼 oneToOne 써주고 각각 Joincolumn/ mappedby
애노테이션밑에 JoinColumn / mapped by 잊지말자