연관관계가 필요한 이유
- 객체를 테이블에 맞추어 데이터 중심으로 모델링하면 협력 관계를 만들 수 없다.
- 테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾는다.
- 객체는 참조를 사용해서 연관된 객체를 찾는다.
단방향 연관관계
양뱡향 연관관계
- 1:N 관계일 때
1에 해당하는 엔티티에는 N에 해당하는 엔티티의 List를, N에 해당하는 엔티티에는 1에 해당하는 엔티티의 class를 명시한다. (★) - add할때 NullPointException이 발생하는 것을 막기 위해 List는 ArrayList로 미리 초기화해둔다.
- 순수 객체 상태를 고려해서 항상 양쪽에 값을 설정하자
- 연관관계 편의 메소드를 생성하자
객체와 테이블이 관계를 맺는 차이
- 객체 연관관계
- 종류
- 회원 -> 팀 연관관계 1개 (단방향)
- 팀 -> 회원 연관관계 1개 (단방향)
- 특징
- 객체의 양방향 관계는 사실 양방향 관계가 아니라 서로 다른 단뱡향 관계 2개다.
- 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어야 한다.
- 테이블 연관관계
- 종류
- 특징
- 테이블은 외래 키 하나로 두 테이블의 연관관계를 관리한다.
연관관계의 주인
관련 용어
- 방향(Direction)
- 다중성(Multiplicity)
- 다대일(N:1)
- 일대다(1:N)
- 일대일(1:1)
- 다대다(N:M)
- 연관관계의 주인(Owner)
- 객체 양방향 연관관계는 관리 주인이 필요
- C언어로 치면 포인터
출처