Super Kawaii Cute Cat Kaoani
본문 바로가기
⚙️ Back-end/Spring

[SpringBoot] 단방향, 양방향 연관관계 정리

by wonee1 2025. 5. 15.
728x90

 

 

 

Spring Boot JPA에선 양방향 관계와 단방향 관계가 있습니다. 이는 Entity 간의 참조 방향을 말합니다. 

 

 

💠연관 관계 주인 

💡 실제 데이터베이스에서 외래키를 가지는 엔티티 (테이블)을 말한다 

 

 

  • 양방향일 경우, mappedBy가 없는 쪽이 주인 (DB 조작 권한 가짐)
  • 반대쪽(mappedBy 사용)은 읽기 전용

 

 

 

💠단방향 관계란?

 

한쪽 Entity만 다른 Entity를 참조하는 관계. 즉 연관관계 주인에게 연관 관계를 주입한다 

 

 

Order → Member (주문이 회원을 참조, 반대는 없음)

@Entity
public class Order {
    @Id @GeneratedValue
    private Long id;

    @ManyToOne
    private Member member; // 단방향: Order만 Member를 참조
}

 

 

  • Order 테이블에 member_id 외래키 컬럼 생성된다 
  • Member는 Order를 전혀 모른다 

 

 

 

@ManyToOne

  • N:1 에서 N에 해당하는 엔티티가 1에 해당하는 엔티티와 연관관계 매핑 

@JoinColumn

실제 데이터베이스에서 외래키의 이름을 설정한ㄷ

 

 

 

 

💠양방향 관계 (Bidirectional)

 

양쪽 Entity가 서로를 참조하는 관계. 즉 연관관계 주인이 아닌 엔티티에게도 연관 관계를 주입한다 

 

Order ↔ Member (주문은 회원을 참조하고, 회원도 주문 목록을 가짐

@Entity
public class Order {
    @Id @GeneratedValue
    private Long id;

    @ManyToOne
    @JoinColumn(name = "member_id")
    private Member member;
    
    // getter, setter 생략
}

 

@Entity
public class Member {
    @Id @GeneratedValue
    private Long id;

    @OneToMany(mappedBy = "member") // Order 엔티티의 member 필드 기준
    private List<Order> orders = new ArrayList<>();
}

 

  • mappedBy = "member" ← 반대쪽(주인 아님)에서 사용하는 필드명
  • Order가 외래 키를 갖는 "연관관계의 주인"
  • Member는 단순히 참조만 하며 DB에 영향 없음

 

 

 

728x90