1. 다대일(N:1) -> @ManyToOne

- 가장 많이 사용하는 연관관계
- 반대는 일대다
- 양방향으로 한다고 해서 테이블에 영향을 주지 않음
- Team에 List추가
@ManyToOne //한 팀에 여러개의 회원이 소속 멤버 입장이 many
@JoinColumn(name = "TEAM_ID")
private Team team;
-------------------------------
@OneToMany(mappedBy = "team")
private List<Member> member = new ArrayList();
2.일대다

- 1대다 주인을 두는 경우
- 권장하지 않는 모델
- update 쿼리가 추가로 나감
- 일대다로 양방향 매핑하려고 가기
@ManyToOne
@JoinColumn(name = "TEAM_ID",insertable = false, updatable = false)
private Team team;
>> 매핑은 하지만 수정, 삽입을 불가하게 읽기 전용으로 만든다
3.일대일

- 일대일이므로 어디든 외래키를 넣어도 상관이 없다.
- 반대편은 mappedBy 사용
- 주인은 Member지만 외래키를 Locker에서 관리하는 것은 불가능

- 주 테이블에 외래키(개발자랑 DBA랑 협의가 되야함)
- JPA 매핑 편리
- 장점: 주 테이블만 조회해도 대상 테이블에 데이터가 있는지 확인 가능
- 단점: 값이 없으면 외래키에 null 허용
- 대상 테이블에 외래키
- 장점: 주 테이블과 대상 테이블의 관계를 일대일에서 일대다로 변경할 때 대상 구조 유지
- 단점: 프록시 기능의 한계로 지연 로딩으로 설정해도 즉시 로딩됨
4. 다대다 @ManyToMany
- 관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없ㅇ므
- 연결 테이블을 추가해서 일대다, 다대일 관계로 풀어나가야한다.
- 객체는 컬렉션을 사용해서 2개로 다대다가 가능
- 편리해지보이지만 실무에서는 사용 x
- 연결테이블이 단순히 연결만 하고 끝나지 않음
- 주문시간, 수량 등 다양한 테이블이 더 들어올 수 있고 추가 정보 삽입이 불가능
- 쿼리가 이상하게 나갈 수 있음
=> ManyToMany → oneToMany & ManyToOne 으로 변경