
어노테이션을 사용하여 관계를 정확히 매핑해주고, 객체(Entity)를 단방향 또는 양방향으로 사용할지 충분히 고려한 후 양방향으로 설정 했다면 연관관계 주인을 설정함으로써 한쪽에서만 등록,수정이 일어날 수 있도록 한다.
가장 많이 사용되는 연관관계로 한쪽(Member)에서만 조회, 등록, 수정 하도록 매핑
양방향으로 설정하게 되면 Member와 Team객체에 서로 참조할 수 있는 필드를 생성하여 각각의 관계를 설정해준다.1인 쪽에서 외래키를 관리하겠다는 뜻이다 ( 이 모델은 추천하지 않는다고 한다 )

그렇다면 Team의 List members를 수정했을 때 다른 테이블인 MEMBER테이블의 TEAM_ID(FK)를 변경 해야한다.
지원되는 기능은 아니지만 양방향 처럼 사용하기위해 다(N) 쪽을 insert와 update 기능을 차단하고 읽기만 가능하도록 설정하면 등록과 수정을 일(1) 쪽에서만 가능하기 때문에 양방향 매핑과 똑같이 가능하다외래 키에 데이터베이스 유니크 제약조건이 있어야한다.
단방향 - 주 테이블에 외래 키
다대일 단방향 매핑과 유사하다.
양방향 - 주 테이블 외래 키

다대일 양방향 매핑 처럼 외래 키가 있는 곳이 연관관계의 주인으로 반대편은 mappedBy적용
단방향 - 대상 테이블에 외래 키
Member를 연관관계의 주인으로 하고싶은데 외래 키가 대상 테이블(LOCKER)에 있는 경우를 말하며 이전에 했던 일대다(OneToMany)단방향과 같은 경우이다.
이러한 경우는 JPA에서 지원하지 않는다.
양방향 - 대상테이블에 외래 키
일대일 주 테이블의 외래키 양방향과 매핑 방법은 같다.
관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없다, 연결 테이블을 추가해서 일대다, 다대일 관계로 풀어내야 한다.
하지만 객체는 컬렉션을 사용해서 객체 2개로 다대다 관계가 가능하다.
다대다 매핑의 한계
편리해 보이지만 실무에서 사용하면 안된다.
연결 테이블이 단순히 연결만 하고 끝나지 않고 주문시간, 수량 같은 데이터가 들어올 수 있다.
다대다 매핑의 한계 극복
연결 테이블용 엔티티 추가
위 코드처럼 연결 테이블용 엔티티를 만들어 양쪽 테이블과 연관관계 매핑을 ManyToMany에서 OneToMany, ManyToOne으로 각각 설정해준다.
📚 참고 및 자료 출처 : 자바 ORM 표준 JPA 프로그래밍 - 기본편 (김영한)