본문 바로가기

Spring

Spring) 연관관계 매핑

 


연관관계 매핑

객체의 참조와 테이블의 외래 키를 매핑 하는 것

매핑 : key역할을 하는 데이터와 value 역할을 하는 데이터를 짝 지어 연결하는 데이터 구조


 

연관관계 매핑 시 고려사항

 

1. 방향

객체는 참조용 필드를 가지고 있는 객체만 연관된 객체를 조회 할 수 있기 때문에 방향이 존재한다

 

  • 단방향 : 한 객체에서 다른 한 객체만을 참조하는 관계를 단방향 관계
  • 양방향 : 두 객체가 서로 참조하는 관계를 양방향 관계

2. 다중성

연관 관계의 다중성

  • 일대다 : 1:N , OneToMany
  • 다대일 : N:1 , ManyToOne
  • 일대일 : 1:1 , OneToOne
  • 다대다 : N:N , ManyToMany

3. 연관 관계의 주인

 

연관 관계를 관리하는 포인트는 외래키로 양방향 관계를 맺으면 객체 서로가 외래 키를 가질 수 있게 된다

따라서 두 객체 중 하나가 외래키를 관리해야 한다.

이때 외래키를 관리하는 객체를 연관 관계의 주인이라고 한다.

주로 외래키를 가지는 엔티티를 연관 관계 주인으로 정하는데

이는 외래키를 가진 테이블과 매핑되는 엔티티가 외래 키를 가지는 것이 효울적이기 때문

 

양방향 연관 관계 시 주의점

순수 객체 상태를 고려해서 항상 양쪽에 값을 설정해야된다

연관 관계 편의 메서드를 생성하는 것이 좋다

무한 루프를 조심해야된다. (Controller에서 Entity를 반환하지 않고 DTO를 걸쳐서 반환)

 

 


예시) 

 

-Book 과 BookStore 다대일 양방향 매핑

 Book(다) :  BookStore(일)

-Member와 BookStore의 다대일 단방향 매핑

 Member(일) : BookStore(다)

-Purchase 와 Member의 일대일 양방향 매핑

 Purchase(일) : Member(일) 

 


참고 자료

https://velog.io/@conatuseus/%EC%97%B0%EA%B4%80%EA%B4%80%EA%B3%84-%EB%A7%A4%ED%95%91-%EA%B8%B0%EC%B4%88-1-i3k0xuve9i

 

https://seongho96.tistory.com/64

 



Calendar
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags
더보기
Archives
Visits
Today
Yesterday