티스토리 뷰


연관관계 매핑시 고려사항 3가지

다중성

  • JPA 에서는 다중성을 위한 어노테이션을 제공한다.

  • 이 JPA 어노테이션들은 DB와 매핑하기 위해 존재 한다.

  • 그래서 데이터베이스 관점에서의 다중성을 기준으로 고민 하면 된다.

  • 다대일 - @ManyToOne

  • 일대다 - @OneToMany

  • 일대일 - @OneToOne

  • 다대다 - @ManyToMany

  • 다중성을 고민하다가 풀리지 않으면 대칭성을 고려하자. 다중성의 관계들은 대칭성을 다 가지고 있다. 예를 들면, 회원과 팀 - 팀과 회원 둘다를 고려하면 쉬워 진다.

단방향, 양방향

  • 이전 학습 내용 정리

  • 테이블은

    • 외래 키 하나로 양쪽을 조인할 수 있다.

    • 사실 방향이라는 개념이 없다.

  • 객체는

    • 참조용 필드가 있는 쪽으로만 참조할 수 있다.

    • 한쪽만 참조하면 단방향이고

    • 양쪽이 서로 참조하면 양방향이다.

      • 앞서 말했듯이 사실은 단방향이 두개가 마주보고 있는 것이다

연관관계의 주인

  • 위의 단방향, 양방향의 개념을 알아야. 연관관계의 주인을 이해할 수 있다.

  • 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺는데,

  • 객체의 양방향 관계는 A->B, B->A 처럼 참조가 2군데에서 일어난다.

  • 그렇기 때문에 객체에서 둘중 테이블의 외래키를 관리할 곳을 정해야 한다.

  • 연관관계의 주인은 외래 키를 관리하는 참조이다.

  • 주인의 반대편에서는 외래키에 영향을 주지 않고, 단순 읽기만 할 수 있다.

Reference





댓글