연관관계의 필요 이유
객체 지향 설계의 목표는 자율적인 객체들의 협력 공동체를 만드는 것
객체를 테이블에 맞추어 데이터 중심으로 모델링 시 협력관계를 만들 수 없다
![[Pasted image 20230927112414.png]]
참조로 연관관계 조회 - 객체 그래프 탐색
Member findMember = em.find(Member.class, member.getId());
Team findTeam = findMember.getTeam();
![[Pasted image 20230927120511.png]]
@Entity
public class Team{
@Id @GeneratedValue
private Long id;
@OneToMany(mappedBy = "team")
List<Member> members = new ArrayList<Member>();
}
객체 그래프 탐색
Team findTeam = em.find(Team.class, team.getId());
int memberSize = findTeam.getMembers().size();
양방향에서 객체와 테이블이 관계를 맺는 차이
객체 연관관계 : 2개
- 회원 -> 팀
- 팀 -> 회원
테이블 연관관계 : 1개
회원 <-> 팀
📍 객체의 양방향 관계
객체의 양방향 관계는 사실 양방향이 아니라 서로 다른 2개의 단방향 관계
테이블은 외래 키 하나로 두테이블의 연관관계를 관리함
양방향 매핑 규칙
누구를 주인으로?
🚨 외래 키가 있는 곳을 주인으로 정해라
![[Pasted image 20230927121525.png]]