JPA (2) :: 연관관계

ggyu_55·2023년 5월 8일
0

JPA 메모

목록 보기
2/3

객체를 테이블에 맞추어 데이터 중심으로 모델링하면 협력 관계를 만들 수 없다.
테이블은 외래 키로 조인을 사용해서 연관된 테이블을 찾지만, 객체는 참조를 통해 연관된 객체를 찾는다.

1. 단방향 연관관계


2. 양방향 연관관계


연관관계의 주인과 mappedBy

테이블은 관계가 2개가 아니라 하나다. ( 조인을 통해 한번의 연결만 하면 된다.)

그에 반해 객체는 서로를 보는 단방향 관계 2개를 통해 양방향 관계를 만든다.

1. 객체의 두 관계중 하나를 연관관계의 주인으로 지정한다.

2. 연관관계의 주인만이 외래 키를 관리할 수 있다.

3. 주인이 아닌쪽은 읽기만 가능하다.

4. mappedBy 속성을 노예에게 각인해서 사용한다.

  • mappedBy(name = "주인이 되는 테이블 명")

외래 키가 있는 곳을 기준으로 하여 주인으로 정해야 한다.


주의할 점

  • 단방향 매핑만으로도 이미 연관관계 매핑은 완료된다.
  • 양방향 매핑은 반대 방향으로 조회(객체 그래프 탐색)하는 기능이 추가된 것 뿐,
  • 단방향 매핑을 잘 하고 양방향은 필요할 때 추가해도 된다. (테이블에 영향을 주지 않음)
  • 양방향 매핑시 연관관계의 주인에 값을 입력해야 한다.
  • 그러나 순수 객체 상태를 고려해서 항상 양쪽에 값을 설정하는 것이 좋다.(양방향 매핑시에 무한 루프를 피하기 위함)

0개의 댓글