상세 컨텐츠

본문 제목

💓연관관계 매핑(2) - 단방향 연관관계

SPRING/자바 ORM 표준 JPA 프로그래밍

by 개발하는 정복자 2022. 5. 17. 15:17

본문

- 도입 🧑🏾

 

🦾 연관관계 매핑(1) - 방향, 다중성, 연관관계의 주인  보고 오면 이해 잘 됨🫶🏾

 

저자 김영한의 자바 ORM 표준 JPA 프로그래밍 📚을 참고했다.

- 본론 👕

 

👉🏾 객체 연관관계 

  • 회원객체는 member.team으로 팀객체와 연관관계를 맺는다.
  • 두 객체는 단방향 관계다.
  • member->team은  member.getTeam으로 접근이 가능하다.
  • team->member는 접근할 필드가 없다.

👉🏾 테이블 연관관계

  • 회원 테이블은 TEAM_ID 외래키로 팀 테이블과 연관관계를 맺는다.
  • 두 테이블은 양방향 관계이다.
  • 테이블간 서로. TEAM_ID 외래키로 조인을 사용할 수 있다.
  • 회원과 팀 조인
SELECT *
FROM MEMBER M
JOIN TEAM T ON M.TEAM_ID = T.TEAM_ID
  • 팀과 회원 조인D
SELECT *
FROM TEAM T
JOIN MEMBER M ON T.TEAM_ID = M.TEAM_ID

 

👉🏾 객체와 테이블 연관관계의 가장 큰 차이

  • 참조를 통한 연관관계는 항상 단방향이다.
  • 양방향을 만들고 싶으면 두 객체가 서로를 참조하면 된다.
  • 그렇기 때문에 양방향 관계가 아니라 서로 다른 단방향 관계 2개다.

 

단방향

class A {
    B b;
}

class B {}

 

양방향 

// 단방향 하나
class A {
    B b;
}

// 단방향 둘
class B {
    A a;
}

// 서로 다른 단방향 * 2 = 양방향

 

👉🏾  객체는 참조(주소)로 

  • 데이터 조회 시 객체 참조(a.getB(), b.getA()) 사용

👉🏾 테이블은 외래키로

  • 데이터 조회 시 JOIN 사용

👉🏾 객체 양방향 참조시 단방향 2개 만들어야 한다.

  • A->B
  • B->A

관련글 더보기

댓글 영역